From win-pv-devel-bounces@lists.xenproject.org Wed Jun 08 13:02:20 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Jun 2016 13:02:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bAd7j-0000Oc-OY; Wed, 08 Jun 2016 13:02:19 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <lars.kurth.xen@gmail.com>)
 id 1bAd7i-0000O1-2Z; Wed, 08 Jun 2016 13:02:18 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 8E/71-25713-85718575; Wed, 08 Jun 2016 13:02:16 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGIsWRWlGSWpSXmKPExsXiVRvkpBshHhF
 ucLeT1WJlz0Vmiz+LEy1mb2xjtviyvIHR4vuWyUwOrB6HP1xhCWCMYs3MS8qvSGDNuL5xBnvB
 K76K+zeOMDcwPubpYuTkEBIolpi4eQdjFyMXB4tAM6vE/DPPWEAcCYH5rBJbpu1kA6mSEIiR+
 H5wA5DNAWSXS2z7FQjRrC5xb9Ftdgh7MpPEvi3JIDabgLbEphsPmEFsZqCaP/MuQdnaEssWvm
 YGGSMsYCnxb1EBSJhFQEVid99isE28AjYS885OYwI5gVngIaPE7ONzwRIiAiYSp++dZYQo0pN
 4desyK8RpshK7fz9imsAoOAvJullI1s1C0rKAkXkVo3pxalFZapGuoV5SUWZ6RkluYmaOrqGB
 mV5uanFxYnpqTmJSsV5yfu4mRmBoMwDBDsadz50OMUpyMCmJ8iq6h4cL8SXlp1RmJBZnxBeV5
 qQWH2KU4eBQkuCdKBYRLiRYlJqeWpGWmQOMMpi0BAePkggvI0iat7ggMbc4Mx0idYrRmGPJ9G
 trmTi2TL23lkmIJS8/L1VKnDcCpFQApDSjNA9uECz6LzHKSgnzMgKdJsRTkFqUm1mCKv+KUZy
 DUUmYNxhkCk9mXgncvldApzABnbL8SDjIKSWJCCmpBkZuFRXny1JHecz5l4c8u+HDnPhqy4z1
 nQrXuNav26M92+do/dnLhSyb/bxfS58Vfb4pTow3oXP3zhIZ6+XrHFznKi7L5brUslfnyO2jo
 RuD2VdPWmXeWf2z17Ny3lUOZb2EBpcAq4R9j08GM39evPDWmkWXL95ZOn/t8h7GruDdYueOBG
 UtmVeqxFKckWioxVxUnAgAQCmCAPkCAAA=
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1465390935!17861184!1
X-Originating-IP: [74.125.82.66]
X-SpamReason: No, hits=1.8 required=7.0 tests=SUSPICIOUS_RECIPS
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 43840 invoked from network); 8 Jun 2016 13:02:16 -0000
Received: from mail-wm0-f66.google.com (HELO mail-wm0-f66.google.com)
 (74.125.82.66)
 by server-10.tower-21.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP;
 8 Jun 2016 13:02:16 -0000
Received: by mail-wm0-f66.google.com with SMTP id k184so2820780wme.2;
 Wed, 08 Jun 2016 06:02:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=from:content-transfer-encoding:subject:date:message-id:cc:to
 :mime-version; bh=KMwbjVRwR3Sp1i6M2XPGdihUc6iO8heoM35VjKUGoLk=;
 b=lkAssy4JZlI2q+zKsdwQ/tmnhqpUWS9GZCCsBUIqjsxsD1CLh26bRm1xeR9ZPrgc8/
 GuEr2Ou31iLaEI8pTP/UUBsEhuSpeqLUc+P+AdnTGAMabvSbg54i0QMj1lVZ3CTDx+jx
 sIN8HwDKUf5C59pX2A15Ti90STioYJPS+Y+CAGCE3nfH+OJAxSMXb/udercqGQS1H0I4
 55SNTaQbKsMEavViaXaEYhiOfY5XZH4EydtXvtjzP52OWhif5veRPVoCO2qw6qnxEhZx
 lNO24nbOplBUSPAUbQMEQ6d8e3LBhW0CwQDHDQR5uM4CP2D/fNj2yY3aTgEyYfhmm0tb
 LyVg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:from:content-transfer-encoding:subject:date
 :message-id:cc:to:mime-version;
 bh=KMwbjVRwR3Sp1i6M2XPGdihUc6iO8heoM35VjKUGoLk=;
 b=koZ8NjHJmXnFIA+m/2VnJ4GzQeK5ul6iTpdZfCqxXJXdK290CWImM9Mr8RwFrgrTef
 RhFRYVgZFmk6oXoihKNEjZPGoIPqwi09x/jf1xWPBqr5vl2B73Rr6nvP1JXzeu/JcQsD
 1mkS6UI13i2idg7UBjONRHI99W21EQshTnCmwS1+ygecvV530sMQuXULtrIkCaA6jPdS
 QhZ4DScsNow4KjTtLftI69yin/ioVnvf/NvJaDJhEyJ0Dg0Pe3KIQVu3vTp5Zcjivr+3
 1WHhnuPfDpxT6XWE3VDm+mOhNkKlQUDGEdOsV4xDYS9qIOdlqOKyeTzTfcUQo9cqTrx9
 +amw==
X-Gm-Message-State: ALyK8tIKzpqgLhimcBpPdTTLz4+ZksoDz2ktlLmTH4M8T/A5h35VkeoH+UVPdRsdBo7E4Q==
X-Received: by 10.28.125.86 with SMTP id y83mr7626089wmc.8.1465390932545;
 Wed, 08 Jun 2016 06:02:12 -0700 (PDT)
Received: from ?IPv6:2a02:c7f:ac10:6300:98bf:5fb7:7894:4d65?
 ([2a02:c7f:ac10:6300:98bf:5fb7:7894:4d65])
 by smtp.gmail.com with ESMTPSA id e133sm21591008wma.6.2016.06.08.06.02.10
 (version=TLSv1/SSLv3 cipher=OTHER);
 Wed, 08 Jun 2016 06:02:11 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Date: Wed, 8 Jun 2016 14:02:09 +0100
Message-Id: <6E39C764-7DA4-4336-B366-8CAEB127066D@gmail.com>
To: xen-announce <xen-announce@lists.xenproject.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\))
X-Mailer: Apple Mail (2.2104)
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 embedded-pv-devel <embedded-pv-devel@lists.xenproject.org>,
 xen-api <xen-api@lists.xenproject.org>,
 win-pv-devel <Win-pv-devel@lists.xenproject.org>, xen-users@lists.xen.org
Subject: [win-pv-devel] Xen Project Developer Summit : program Published
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

V2UgcmVjZW50bHkgYW5ub3VuY2VkIHRoZSBwcm9ncmFtIGFuZCBzcGVha2VycyBbMV0gZm9yIG91
ciBYZW4gUHJvamVjdCBEZXZlbG9wZXIgU3VtbWl0IFsyXSBoYXBwZW5pbmcgaW4gVG9yb250bywg
Q2FuYWRhIGZyb20gQXVndXN0IDI1LTI2LCAyMDE2LiBUaGUgZXZlbnQgd2lsbCBiZSBjby1sb2Nh
dGVkIHdpdGggTGludXhDb24gTm9ydGggQW1lcmljYSBbM10uCgpUaGUgWGVuIFByb2plY3QgaHlw
ZXJ2aXNvciBwb3dlcnMgdGhlIG5ldyBuZWVkcyBvZiBjb21wdXRpbmcgYW5kIHZpcnR1YWxpemF0
aW9uIHRocm91Z2ggYSByaWNoIGVjb3N5c3RlbSBvZiBjb21tdW5pdHkgbWVtYmVycyB0aGF0IGZv
Y3VzIG9uIGV2ZXJ5dGhpbmcgZnJvbSBzZWN1cml0eSwgZW1iZWRkZWQsIGFuZCB3ZWItc2NhbGUg
ZW52aXJvbm1lbnRzLiBUaGUgU3VtbWl0IGlzIGFuIG9wcG9ydHVuaXR5IGZvciBkZXZlbG9wZXJz
IGFuZCBzb2Z0d2FyZSBlbmdpbmVlcnMgdG8gY29sbGFib3JhdGUgYW5kIGRpc2N1c3MgdGhlIGxh
dGVzdCBhZHZhbmNlbWVudHMgb2YgWGVuIFByb2plY3Qgc29mdHdhcmUsIGFuZCBiZXR0ZXIgdW5k
ZXJzdGFuZCB3aGF04oCZcyBuZXh0IGZvciBYZW4gUHJvamVjdCB0ZWNobm9sb2d5LCB2aXJ0dWFs
aXphdGlvbiBhbmQgY2xvdWQgY29tcHV0aW5nLgoKSW4gYWRkaXRpb24gdG8gcHJlc2VudGF0aW9u
cywgd2Ugd2lsbCBiZSBydW5uaW5nIGEgaGFsZi1kYXkgaGFja2F0aG9uIGFsb25nc2lkZSB0aGUg
U3VtbWl0IG9uIHRoZSBsYXN0IGRheS4gWGVuIFByb2plY3QgaGFja2F0aG9ucyBoYXZlIGV2b2x2
ZWQgaW4gZm9ybWF0IGludG8gYSBzZXJpZXMgb2Ygc3RydWN0dXJlZCBwcm9ibGVtLXNvbHZpbmcg
c2Vzc2lvbnMgdGhhdCBzY2FsZSB1cCB0byA1MCBwZW9wbGUuIAoKVGhpcyBmbGFnc2hpcCBldmVu
dCBmZWF0dXJlcyBwcmVzZW50YXRpb25zIG9uIHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnRzLCBiZXN0
IHByYWN0aWNlcywgY29sbGFib3JhdGlvbiwgcHJvZHVjdCByb2FkbWFwIHVwZGF0ZXMgYW5kIGZ1
dHVyZSBwbGFubmluZyBmcm9tIGRldmVsb3BlcnMgYW5kIHVzZXJzIHdobyBhcmUgbGVhZGluZyB0
aGUgd2F5IGluIHNlcnZlciBkZW5zaXR5LCBoYXJkd2FyZSwgYXV0b21vdGl2ZSwgY2xvdWQgYW5k
IGVudGVycHJpc2Ugc2VjdXJpdHkuIFRvIHZpZXcgdGhlIGZ1bGwgc2NoZWR1bGUgYW5kIHJlZ2lz
dGVyLCBwbGVhc2UgaGVhZCBoZXJlOiBodHRwOi8vZXZlbnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcv
ZXZlbnRzL3hlbi1wcm9qZWN0LWRldmVsb3Blci1zdW1taXQvcHJvZ3JhbS9zY2hlZHVsZQoKVGhp
cyBldmVudCBpcyBiZWluZyBzcG9uc29yZWQgYnkgQ2l0cml4IChEaWFtb25kIHNwb25zb3IpLCBI
dWF3ZWkgKFBsYXRpbnVtIHNwb25zb3IpIGFuZCBJbnRlbCAoUGxhdGludW0gc3BvbnNvcikuIFBs
ZWFzZSBiZSBzdXJlIHRvIGZvbGxvdyB1cGRhdGVzIG9uIHRoZSBldmVudCB2aWEgWGVuIFByb2pl
Y3TigJlzIFR3aXR0ZXIsIEdvb2dsZSsgb3IgRmFjZWJvb2sgcGFnZS4gSGFzaHRhZyBmb3IgdGhl
IGV2ZW50IGlzICN4ZW5kZXZzdW1taXQuCgpXZSBsb29rIGZvcndhcmQgdG8gc2VlaW5nIHlvdSB0
aGVyZSEKCgpbMV0gaHR0cDovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2V2ZW50cy94ZW4t
cHJvamVjdC1kZXZlbG9wZXItc3VtbWl0L3Byb2dyYW0vc2NoZWR1bGUKWzJdIGh0dHA6Ly9ldmVu
dHMubGludXhmb3VuZGF0aW9uLm9yZy9ldmVudHMveGVuLXByb2plY3QtZGV2ZWxvcGVyLXN1bW1p
dApbM10gaHR0cDovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2V2ZW50cy9saW51eGNvbi1u
b3J0aC1hbWVyaWNhCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 08 13:02:20 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Jun 2016 13:02:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bAd7j-0000Oc-OY; Wed, 08 Jun 2016 13:02:19 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <lars.kurth.xen@gmail.com>)
 id 1bAd7i-0000O1-2Z; Wed, 08 Jun 2016 13:02:18 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 8E/71-25713-85718575; Wed, 08 Jun 2016 13:02:16 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGIsWRWlGSWpSXmKPExsXiVRvkpBshHhF
 ucLeT1WJlz0Vmiz+LEy1mb2xjtviyvIHR4vuWyUwOrB6HP1xhCWCMYs3MS8qvSGDNuL5xBnvB
 K76K+zeOMDcwPubpYuTkEBIolpi4eQdjFyMXB4tAM6vE/DPPWEAcCYH5rBJbpu1kA6mSEIiR+
 H5wA5DNAWSXS2z7FQjRrC5xb9Ftdgh7MpPEvi3JIDabgLbEphsPmEFsZqCaP/MuQdnaEssWvm
 YGGSMsYCnxb1EBSJhFQEVid99isE28AjYS885OYwI5gVngIaPE7ONzwRIiAiYSp++dZYQo0pN
 4desyK8RpshK7fz9imsAoOAvJullI1s1C0rKAkXkVo3pxalFZapGuoV5SUWZ6RkluYmaOrqGB
 mV5uanFxYnpqTmJSsV5yfu4mRmBoMwDBDsadz50OMUpyMCmJ8iq6h4cL8SXlp1RmJBZnxBeV5
 qQWH2KU4eBQkuCdKBYRLiRYlJqeWpGWmQOMMpi0BAePkggvI0iat7ggMbc4Mx0idYrRmGPJ9G
 trmTi2TL23lkmIJS8/L1VKnDcCpFQApDSjNA9uECz6LzHKSgnzMgKdJsRTkFqUm1mCKv+KUZy
 DUUmYNxhkCk9mXgncvldApzABnbL8SDjIKSWJCCmpBkZuFRXny1JHecz5l4c8u+HDnPhqy4z1
 nQrXuNav26M92+do/dnLhSyb/bxfS58Vfb4pTow3oXP3zhIZ6+XrHFznKi7L5brUslfnyO2jo
 RuD2VdPWmXeWf2z17Ny3lUOZb2EBpcAq4R9j08GM39evPDWmkWXL95ZOn/t8h7GruDdYueOBG
 UtmVeqxFKckWioxVxUnAgAQCmCAPkCAAA=
X-Env-Sender: lars.kurth.xen@gmail.com
X-Msg-Ref: server-10.tower-21.messagelabs.com!1465390935!17861184!1
X-Originating-IP: [74.125.82.66]
X-SpamReason: No, hits=1.8 required=7.0 tests=SUSPICIOUS_RECIPS
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 43840 invoked from network); 8 Jun 2016 13:02:16 -0000
Received: from mail-wm0-f66.google.com (HELO mail-wm0-f66.google.com)
 (74.125.82.66)
 by server-10.tower-21.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP;
 8 Jun 2016 13:02:16 -0000
Received: by mail-wm0-f66.google.com with SMTP id k184so2820780wme.2;
 Wed, 08 Jun 2016 06:02:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=from:content-transfer-encoding:subject:date:message-id:cc:to
 :mime-version; bh=KMwbjVRwR3Sp1i6M2XPGdihUc6iO8heoM35VjKUGoLk=;
 b=lkAssy4JZlI2q+zKsdwQ/tmnhqpUWS9GZCCsBUIqjsxsD1CLh26bRm1xeR9ZPrgc8/
 GuEr2Ou31iLaEI8pTP/UUBsEhuSpeqLUc+P+AdnTGAMabvSbg54i0QMj1lVZ3CTDx+jx
 sIN8HwDKUf5C59pX2A15Ti90STioYJPS+Y+CAGCE3nfH+OJAxSMXb/udercqGQS1H0I4
 55SNTaQbKsMEavViaXaEYhiOfY5XZH4EydtXvtjzP52OWhif5veRPVoCO2qw6qnxEhZx
 lNO24nbOplBUSPAUbQMEQ6d8e3LBhW0CwQDHDQR5uM4CP2D/fNj2yY3aTgEyYfhmm0tb
 LyVg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:from:content-transfer-encoding:subject:date
 :message-id:cc:to:mime-version;
 bh=KMwbjVRwR3Sp1i6M2XPGdihUc6iO8heoM35VjKUGoLk=;
 b=koZ8NjHJmXnFIA+m/2VnJ4GzQeK5ul6iTpdZfCqxXJXdK290CWImM9Mr8RwFrgrTef
 RhFRYVgZFmk6oXoihKNEjZPGoIPqwi09x/jf1xWPBqr5vl2B73Rr6nvP1JXzeu/JcQsD
 1mkS6UI13i2idg7UBjONRHI99W21EQshTnCmwS1+ygecvV530sMQuXULtrIkCaA6jPdS
 QhZ4DScsNow4KjTtLftI69yin/ioVnvf/NvJaDJhEyJ0Dg0Pe3KIQVu3vTp5Zcjivr+3
 1WHhnuPfDpxT6XWE3VDm+mOhNkKlQUDGEdOsV4xDYS9qIOdlqOKyeTzTfcUQo9cqTrx9
 +amw==
X-Gm-Message-State: ALyK8tIKzpqgLhimcBpPdTTLz4+ZksoDz2ktlLmTH4M8T/A5h35VkeoH+UVPdRsdBo7E4Q==
X-Received: by 10.28.125.86 with SMTP id y83mr7626089wmc.8.1465390932545;
 Wed, 08 Jun 2016 06:02:12 -0700 (PDT)
Received: from ?IPv6:2a02:c7f:ac10:6300:98bf:5fb7:7894:4d65?
 ([2a02:c7f:ac10:6300:98bf:5fb7:7894:4d65])
 by smtp.gmail.com with ESMTPSA id e133sm21591008wma.6.2016.06.08.06.02.10
 (version=TLSv1/SSLv3 cipher=OTHER);
 Wed, 08 Jun 2016 06:02:11 -0700 (PDT)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Date: Wed, 8 Jun 2016 14:02:09 +0100
Message-Id: <6E39C764-7DA4-4336-B366-8CAEB127066D@gmail.com>
To: xen-announce <xen-announce@lists.xenproject.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\))
X-Mailer: Apple Mail (2.2104)
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 embedded-pv-devel <embedded-pv-devel@lists.xenproject.org>,
 xen-api <xen-api@lists.xenproject.org>,
 win-pv-devel <Win-pv-devel@lists.xenproject.org>, xen-users@lists.xen.org
Subject: [win-pv-devel] Xen Project Developer Summit : program Published
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

V2UgcmVjZW50bHkgYW5ub3VuY2VkIHRoZSBwcm9ncmFtIGFuZCBzcGVha2VycyBbMV0gZm9yIG91
ciBYZW4gUHJvamVjdCBEZXZlbG9wZXIgU3VtbWl0IFsyXSBoYXBwZW5pbmcgaW4gVG9yb250bywg
Q2FuYWRhIGZyb20gQXVndXN0IDI1LTI2LCAyMDE2LiBUaGUgZXZlbnQgd2lsbCBiZSBjby1sb2Nh
dGVkIHdpdGggTGludXhDb24gTm9ydGggQW1lcmljYSBbM10uCgpUaGUgWGVuIFByb2plY3QgaHlw
ZXJ2aXNvciBwb3dlcnMgdGhlIG5ldyBuZWVkcyBvZiBjb21wdXRpbmcgYW5kIHZpcnR1YWxpemF0
aW9uIHRocm91Z2ggYSByaWNoIGVjb3N5c3RlbSBvZiBjb21tdW5pdHkgbWVtYmVycyB0aGF0IGZv
Y3VzIG9uIGV2ZXJ5dGhpbmcgZnJvbSBzZWN1cml0eSwgZW1iZWRkZWQsIGFuZCB3ZWItc2NhbGUg
ZW52aXJvbm1lbnRzLiBUaGUgU3VtbWl0IGlzIGFuIG9wcG9ydHVuaXR5IGZvciBkZXZlbG9wZXJz
IGFuZCBzb2Z0d2FyZSBlbmdpbmVlcnMgdG8gY29sbGFib3JhdGUgYW5kIGRpc2N1c3MgdGhlIGxh
dGVzdCBhZHZhbmNlbWVudHMgb2YgWGVuIFByb2plY3Qgc29mdHdhcmUsIGFuZCBiZXR0ZXIgdW5k
ZXJzdGFuZCB3aGF04oCZcyBuZXh0IGZvciBYZW4gUHJvamVjdCB0ZWNobm9sb2d5LCB2aXJ0dWFs
aXphdGlvbiBhbmQgY2xvdWQgY29tcHV0aW5nLgoKSW4gYWRkaXRpb24gdG8gcHJlc2VudGF0aW9u
cywgd2Ugd2lsbCBiZSBydW5uaW5nIGEgaGFsZi1kYXkgaGFja2F0aG9uIGFsb25nc2lkZSB0aGUg
U3VtbWl0IG9uIHRoZSBsYXN0IGRheS4gWGVuIFByb2plY3QgaGFja2F0aG9ucyBoYXZlIGV2b2x2
ZWQgaW4gZm9ybWF0IGludG8gYSBzZXJpZXMgb2Ygc3RydWN0dXJlZCBwcm9ibGVtLXNvbHZpbmcg
c2Vzc2lvbnMgdGhhdCBzY2FsZSB1cCB0byA1MCBwZW9wbGUuIAoKVGhpcyBmbGFnc2hpcCBldmVu
dCBmZWF0dXJlcyBwcmVzZW50YXRpb25zIG9uIHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnRzLCBiZXN0
IHByYWN0aWNlcywgY29sbGFib3JhdGlvbiwgcHJvZHVjdCByb2FkbWFwIHVwZGF0ZXMgYW5kIGZ1
dHVyZSBwbGFubmluZyBmcm9tIGRldmVsb3BlcnMgYW5kIHVzZXJzIHdobyBhcmUgbGVhZGluZyB0
aGUgd2F5IGluIHNlcnZlciBkZW5zaXR5LCBoYXJkd2FyZSwgYXV0b21vdGl2ZSwgY2xvdWQgYW5k
IGVudGVycHJpc2Ugc2VjdXJpdHkuIFRvIHZpZXcgdGhlIGZ1bGwgc2NoZWR1bGUgYW5kIHJlZ2lz
dGVyLCBwbGVhc2UgaGVhZCBoZXJlOiBodHRwOi8vZXZlbnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcv
ZXZlbnRzL3hlbi1wcm9qZWN0LWRldmVsb3Blci1zdW1taXQvcHJvZ3JhbS9zY2hlZHVsZQoKVGhp
cyBldmVudCBpcyBiZWluZyBzcG9uc29yZWQgYnkgQ2l0cml4IChEaWFtb25kIHNwb25zb3IpLCBI
dWF3ZWkgKFBsYXRpbnVtIHNwb25zb3IpIGFuZCBJbnRlbCAoUGxhdGludW0gc3BvbnNvcikuIFBs
ZWFzZSBiZSBzdXJlIHRvIGZvbGxvdyB1cGRhdGVzIG9uIHRoZSBldmVudCB2aWEgWGVuIFByb2pl
Y3TigJlzIFR3aXR0ZXIsIEdvb2dsZSsgb3IgRmFjZWJvb2sgcGFnZS4gSGFzaHRhZyBmb3IgdGhl
IGV2ZW50IGlzICN4ZW5kZXZzdW1taXQuCgpXZSBsb29rIGZvcndhcmQgdG8gc2VlaW5nIHlvdSB0
aGVyZSEKCgpbMV0gaHR0cDovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2V2ZW50cy94ZW4t
cHJvamVjdC1kZXZlbG9wZXItc3VtbWl0L3Byb2dyYW0vc2NoZWR1bGUKWzJdIGh0dHA6Ly9ldmVu
dHMubGludXhmb3VuZGF0aW9uLm9yZy9ldmVudHMveGVuLXByb2plY3QtZGV2ZWxvcGVyLXN1bW1p
dApbM10gaHR0cDovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2V2ZW50cy9saW51eGNvbi1u
b3J0aC1hbWVyaWNhCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 08 15:55:50 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Jun 2016 15:55:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bAfpd-0001kW-D5; Wed, 08 Jun 2016 15:55:49 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <mengxu@cis.upenn.edu>)
 id 1bAfdO-0000UU-HM; Wed, 08 Jun 2016 15:43:10 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
 DB/11-15969-D0D38575; Wed, 08 Jun 2016 15:43:09 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNIsWRWlGSWpSXmKPExsUyr8m9WJfHNiL
 c4P5sPYuVPReZLf4sTrSYvbGN2eLL8gZGi+9bJjM5sHoc/nCFJYAxijUzLym/IoE149PyNsaC
 hVwVl583MTUwnuHoYuTkEBKYxCSx/4InhF0ssXPZbHYQW0IgR+LC5bVMEHahxJ2uiawgNq+Ao
 MTJmU9YIOq9JBa27wazOQVsJfofHwfq5QCK20jc7lQBCbMJqEgc3/AIrJUFyF50ogmsREIgUe
 LE0hCIiQES09s2MoLYwgKBEg++fQGbKCKgKTHx2n6gVi4OZoHDTBL7voE4HECOusT6eUIgNcw
 C2hLLFr5mhrgyVOLFm+UsIPUSAh8ZJY7snMwygVF4FpKrZyG0z0LSvoCReRWjenFqUVlqka6J
 XlJRZnpGSW5iZo6uoYGxXm5qcXFiempOYlKxXnJ+7iZGYBQwAMEOxsYvTocYJTmYlER5Fd3Dw
 4X4kvJTKjMSizPii0pzUosPMcpwcChJ8EZZR4QLCRalpqdWpGXmAOMRJi3BwaMkwrsaJM1bXJ
 CYW5yZDpE6xWjMseX3tbVMHNum3lvLJMSSl5+XKiXOWwRSKgBSmlGaBzcIliYuMcpKCfMyAp0
 mxFOQWpSbWYIq/4pRnINRSZi3GWQKT2ZeCdy+V0CnMAGdsvxIOMgpJYkIKakGxna/rTYVBmna
 Kzm/s5mWZr2rEexR+z1Tfe3uAJ72i3b6KX/+erz4G+azQj8qWdk4q8x4yhaJ28uqy6LlPrut7
 xA/PvP6040fT2TdzD1tskNRZZc306xb9/UtGAw3Hngg+Lqmc1m5zXO/YzvZ7+96fCvNlO1HaE
 XOR7F1LRlOe2XDlHT1m80ClFiKMxINtZiLihMBJ1B8zw4DAAA=
X-Env-Sender: mengxu@cis.upenn.edu
X-Msg-Ref: server-7.tower-31.messagelabs.com!1465400588!36871364!1
X-Originating-IP: [158.130.71.115]
X-SpamReason: No, hits=0.3 required=7.0 tests=RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 64758 invoked from network); 8 Jun 2016 15:43:08 -0000
Received: from renard.seas.upenn.edu (HELO fox.seas.upenn.edu) (158.130.71.115)
 by server-7.tower-31.messagelabs.com with SMTP; 8 Jun 2016 15:43:08 -0000
Received: from mail-vk0-f50.google.com (mail-vk0-f50.google.com
 [209.85.213.50]) (authenticated bits=0)
 by fox.seas.upenn.edu (8.14.9/8.14.5) with ESMTP id u58Fh7Pu029203
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);
 Wed, 8 Jun 2016 11:43:07 -0400
Received: by mail-vk0-f50.google.com with SMTP id d64so16818488vkb.0;
 Wed, 08 Jun 2016 08:43:07 -0700 (PDT)
X-Gm-Message-State: ALyK8tKzZ7M4BPV5MDvZKooGgdjWULUYTiEULs/vYuRA+kNdyvandIe3tlusmWJpio+WVPNX3mW3zqDWQYg5xA==
X-Received: by 10.159.33.168 with SMTP id 37mr2088001uac.99.1465400581984;
 Wed, 08 Jun 2016 08:43:01 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.159.32.230 with HTTP; Wed, 8 Jun 2016 08:43:01 -0700 (PDT)
In-Reply-To: <6E39C764-7DA4-4336-B366-8CAEB127066D@gmail.com>
References: <6E39C764-7DA4-4336-B366-8CAEB127066D@gmail.com>
From: Meng Xu <mengxu@cis.upenn.edu>
Date: Wed, 8 Jun 2016 11:43:01 -0400
X-Gmail-Original-Message-ID: <CAENZ-+kd3LS5NhEqL6NDX3K0+0FKNK_PF3fXyo9+Ug3A2a2s1w@mail.gmail.com>
Message-ID: <CAENZ-+kd3LS5NhEqL6NDX3K0+0FKNK_PF3fXyo9+Ug3A2a2s1w@mail.gmail.com>
To: Lars Kurth <lars.kurth.xen@gmail.com>
X-Proofpoint-Virus-Version: vendor=nai engine=5400 definitions=5800
 signatures=585085
X-PP-Spam-Details: rule=add_spam_details policy=default score=0 spamscore=0
 ipscore=0
 suspectscore=2 phishscore=0 bulkscore=0 adultscore=0 classifier=spam
 adjust=0 reason=mlx scancount=1 engine=7.0.1-1111160001
 definitions=main-1603080224
X-Mailman-Approved-At: Wed, 08 Jun 2016 15:55:48 +0000
Cc: xen-api <xen-api@lists.xenproject.org>,
 embedded-pv-devel <embedded-pv-devel@lists.xenproject.org>,
 xen-announce <xen-announce@lists.xenproject.org>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 xen-users <xen-users@lists.xen.org>,
 win-pv-devel <Win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] [Embedded-pv-devel] Xen Project Developer Summit
	: program Published
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

SGkgTGFycywKCk9uIFdlZCwgSnVuIDgsIDIwMTYgYXQgOTowMiBBTSwgTGFycyBLdXJ0aCA8bGFy
cy5rdXJ0aC54ZW5AZ21haWwuY29tPiB3cm90ZToKPiBXZSByZWNlbnRseSBhbm5vdW5jZWQgdGhl
IHByb2dyYW0gYW5kIHNwZWFrZXJzIFsxXSBmb3Igb3VyIFhlbiBQcm9qZWN0IERldmVsb3BlciBT
dW1taXQgWzJdIGhhcHBlbmluZyBpbiBUb3JvbnRvLCBDYW5hZGEgZnJvbSBBdWd1c3QgMjUtMjYs
IDIwMTYuIFRoZSBldmVudCB3aWxsIGJlIGNvLWxvY2F0ZWQgd2l0aCBMaW51eENvbiBOb3J0aCBB
bWVyaWNhIFszXS4KPgo+IFRoZSBYZW4gUHJvamVjdCBoeXBlcnZpc29yIHBvd2VycyB0aGUgbmV3
IG5lZWRzIG9mIGNvbXB1dGluZyBhbmQgdmlydHVhbGl6YXRpb24gdGhyb3VnaCBhIHJpY2ggZWNv
c3lzdGVtIG9mIGNvbW11bml0eSBtZW1iZXJzIHRoYXQgZm9jdXMgb24gZXZlcnl0aGluZyBmcm9t
IHNlY3VyaXR5LCBlbWJlZGRlZCwgYW5kIHdlYi1zY2FsZSBlbnZpcm9ubWVudHMuIFRoZSBTdW1t
aXQgaXMgYW4gb3Bwb3J0dW5pdHkgZm9yIGRldmVsb3BlcnMgYW5kIHNvZnR3YXJlIGVuZ2luZWVy
cyB0byBjb2xsYWJvcmF0ZSBhbmQgZGlzY3VzcyB0aGUgbGF0ZXN0IGFkdmFuY2VtZW50cyBvZiBY
ZW4gUHJvamVjdCBzb2Z0d2FyZSwgYW5kIGJldHRlciB1bmRlcnN0YW5kIHdoYXTigJlzIG5leHQg
Zm9yIFhlbiBQcm9qZWN0IHRlY2hub2xvZ3ksIHZpcnR1YWxpemF0aW9uIGFuZCBjbG91ZCBjb21w
dXRpbmcuCj4KPiBJbiBhZGRpdGlvbiB0byBwcmVzZW50YXRpb25zLCB3ZSB3aWxsIGJlIHJ1bm5p
bmcgYSBoYWxmLWRheSBoYWNrYXRob24gYWxvbmdzaWRlIHRoZSBTdW1taXQgb24gdGhlIGxhc3Qg
ZGF5LiBYZW4gUHJvamVjdCBoYWNrYXRob25zIGhhdmUgZXZvbHZlZCBpbiBmb3JtYXQgaW50byBh
IHNlcmllcyBvZiBzdHJ1Y3R1cmVkIHByb2JsZW0tc29sdmluZyBzZXNzaW9ucyB0aGF0IHNjYWxl
IHVwIHRvIDUwIHBlb3BsZS4KCkknbSB3b25kZXJpbmcgaWYgaXQncyBwb3NzaWJsZSB0byByZWNv
cmQgdGhlIGhhY2thdGhvbiBpbnRvIGEgdmlkZW8gb3IKYXVkaW8sIHdoaWNoIHdpbGwgYmUgcmVh
bGx5IGhlbHBmdWwgZm9yIHBlb3BsZSB3aG8gY2Fubm90IG1ha2UgdGhlCnN1bW1pdC4gOi0pCgpU
aGFua3MsCgpNZW5nCgotLS0tLS0tLS0tLQpNZW5nIFh1ClBoRCBTdHVkZW50IGluIENvbXB1dGVy
IGFuZCBJbmZvcm1hdGlvbiBTY2llbmNlClVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhCmh0dHA6
Ly93d3cuY2lzLnVwZW5uLmVkdS9+bWVuZ3h1LwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1i
aW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 08 15:55:50 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Jun 2016 15:55:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bAfpd-0001kW-D5; Wed, 08 Jun 2016 15:55:49 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <mengxu@cis.upenn.edu>)
 id 1bAfdO-0000UU-HM; Wed, 08 Jun 2016 15:43:10 +0000
Received: from [85.158.137.68] by server-6.bemta-3.messagelabs.com id
 DB/11-15969-D0D38575; Wed, 08 Jun 2016 15:43:09 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNIsWRWlGSWpSXmKPExsUyr8m9WJfHNiL
 c4P5sPYuVPReZLf4sTrSYvbGN2eLL8gZGi+9bJjM5sHoc/nCFJYAxijUzLym/IoE149PyNsaC
 hVwVl583MTUwnuHoYuTkEBKYxCSx/4InhF0ssXPZbHYQW0IgR+LC5bVMEHahxJ2uiawgNq+Ao
 MTJmU9YIOq9JBa27wazOQVsJfofHwfq5QCK20jc7lQBCbMJqEgc3/AIrJUFyF50ogmsREIgUe
 LE0hCIiQES09s2MoLYwgKBEg++fQGbKCKgKTHx2n6gVi4OZoHDTBL7voE4HECOusT6eUIgNcw
 C2hLLFr5mhrgyVOLFm+UsIPUSAh8ZJY7snMwygVF4FpKrZyG0z0LSvoCReRWjenFqUVlqka6J
 XlJRZnpGSW5iZo6uoYGxXm5qcXFiempOYlKxXnJ+7iZGYBQwAMEOxsYvTocYJTmYlER5Fd3Dw
 4X4kvJTKjMSizPii0pzUosPMcpwcChJ8EZZR4QLCRalpqdWpGXmAOMRJi3BwaMkwrsaJM1bXJ
 CYW5yZDpE6xWjMseX3tbVMHNum3lvLJMSSl5+XKiXOWwRSKgBSmlGaBzcIliYuMcpKCfMyAp0
 mxFOQWpSbWYIq/4pRnINRSZi3GWQKT2ZeCdy+V0CnMAGdsvxIOMgpJYkIKakGxna/rTYVBmna
 Kzm/s5mWZr2rEexR+z1Tfe3uAJ72i3b6KX/+erz4G+azQj8qWdk4q8x4yhaJ28uqy6LlPrut7
 xA/PvP6040fT2TdzD1tskNRZZc306xb9/UtGAw3Hngg+Lqmc1m5zXO/YzvZ7+96fCvNlO1HaE
 XOR7F1LRlOe2XDlHT1m80ClFiKMxINtZiLihMBJ1B8zw4DAAA=
X-Env-Sender: mengxu@cis.upenn.edu
X-Msg-Ref: server-7.tower-31.messagelabs.com!1465400588!36871364!1
X-Originating-IP: [158.130.71.115]
X-SpamReason: No, hits=0.3 required=7.0 tests=RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 64758 invoked from network); 8 Jun 2016 15:43:08 -0000
Received: from renard.seas.upenn.edu (HELO fox.seas.upenn.edu) (158.130.71.115)
 by server-7.tower-31.messagelabs.com with SMTP; 8 Jun 2016 15:43:08 -0000
Received: from mail-vk0-f50.google.com (mail-vk0-f50.google.com
 [209.85.213.50]) (authenticated bits=0)
 by fox.seas.upenn.edu (8.14.9/8.14.5) with ESMTP id u58Fh7Pu029203
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);
 Wed, 8 Jun 2016 11:43:07 -0400
Received: by mail-vk0-f50.google.com with SMTP id d64so16818488vkb.0;
 Wed, 08 Jun 2016 08:43:07 -0700 (PDT)
X-Gm-Message-State: ALyK8tKzZ7M4BPV5MDvZKooGgdjWULUYTiEULs/vYuRA+kNdyvandIe3tlusmWJpio+WVPNX3mW3zqDWQYg5xA==
X-Received: by 10.159.33.168 with SMTP id 37mr2088001uac.99.1465400581984;
 Wed, 08 Jun 2016 08:43:01 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.159.32.230 with HTTP; Wed, 8 Jun 2016 08:43:01 -0700 (PDT)
In-Reply-To: <6E39C764-7DA4-4336-B366-8CAEB127066D@gmail.com>
References: <6E39C764-7DA4-4336-B366-8CAEB127066D@gmail.com>
From: Meng Xu <mengxu@cis.upenn.edu>
Date: Wed, 8 Jun 2016 11:43:01 -0400
X-Gmail-Original-Message-ID: <CAENZ-+kd3LS5NhEqL6NDX3K0+0FKNK_PF3fXyo9+Ug3A2a2s1w@mail.gmail.com>
Message-ID: <CAENZ-+kd3LS5NhEqL6NDX3K0+0FKNK_PF3fXyo9+Ug3A2a2s1w@mail.gmail.com>
To: Lars Kurth <lars.kurth.xen@gmail.com>
X-Proofpoint-Virus-Version: vendor=nai engine=5400 definitions=5800
 signatures=585085
X-PP-Spam-Details: rule=add_spam_details policy=default score=0 spamscore=0
 ipscore=0
 suspectscore=2 phishscore=0 bulkscore=0 adultscore=0 classifier=spam
 adjust=0 reason=mlx scancount=1 engine=7.0.1-1111160001
 definitions=main-1603080224
X-Mailman-Approved-At: Wed, 08 Jun 2016 15:55:48 +0000
Cc: xen-api <xen-api@lists.xenproject.org>,
 embedded-pv-devel <embedded-pv-devel@lists.xenproject.org>,
 xen-announce <xen-announce@lists.xenproject.org>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 xen-users <xen-users@lists.xen.org>,
 win-pv-devel <Win-pv-devel@lists.xenproject.org>
Subject: Re: [win-pv-devel] [Embedded-pv-devel] Xen Project Developer Summit
	: program Published
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

SGkgTGFycywKCk9uIFdlZCwgSnVuIDgsIDIwMTYgYXQgOTowMiBBTSwgTGFycyBLdXJ0aCA8bGFy
cy5rdXJ0aC54ZW5AZ21haWwuY29tPiB3cm90ZToKPiBXZSByZWNlbnRseSBhbm5vdW5jZWQgdGhl
IHByb2dyYW0gYW5kIHNwZWFrZXJzIFsxXSBmb3Igb3VyIFhlbiBQcm9qZWN0IERldmVsb3BlciBT
dW1taXQgWzJdIGhhcHBlbmluZyBpbiBUb3JvbnRvLCBDYW5hZGEgZnJvbSBBdWd1c3QgMjUtMjYs
IDIwMTYuIFRoZSBldmVudCB3aWxsIGJlIGNvLWxvY2F0ZWQgd2l0aCBMaW51eENvbiBOb3J0aCBB
bWVyaWNhIFszXS4KPgo+IFRoZSBYZW4gUHJvamVjdCBoeXBlcnZpc29yIHBvd2VycyB0aGUgbmV3
IG5lZWRzIG9mIGNvbXB1dGluZyBhbmQgdmlydHVhbGl6YXRpb24gdGhyb3VnaCBhIHJpY2ggZWNv
c3lzdGVtIG9mIGNvbW11bml0eSBtZW1iZXJzIHRoYXQgZm9jdXMgb24gZXZlcnl0aGluZyBmcm9t
IHNlY3VyaXR5LCBlbWJlZGRlZCwgYW5kIHdlYi1zY2FsZSBlbnZpcm9ubWVudHMuIFRoZSBTdW1t
aXQgaXMgYW4gb3Bwb3J0dW5pdHkgZm9yIGRldmVsb3BlcnMgYW5kIHNvZnR3YXJlIGVuZ2luZWVy
cyB0byBjb2xsYWJvcmF0ZSBhbmQgZGlzY3VzcyB0aGUgbGF0ZXN0IGFkdmFuY2VtZW50cyBvZiBY
ZW4gUHJvamVjdCBzb2Z0d2FyZSwgYW5kIGJldHRlciB1bmRlcnN0YW5kIHdoYXTigJlzIG5leHQg
Zm9yIFhlbiBQcm9qZWN0IHRlY2hub2xvZ3ksIHZpcnR1YWxpemF0aW9uIGFuZCBjbG91ZCBjb21w
dXRpbmcuCj4KPiBJbiBhZGRpdGlvbiB0byBwcmVzZW50YXRpb25zLCB3ZSB3aWxsIGJlIHJ1bm5p
bmcgYSBoYWxmLWRheSBoYWNrYXRob24gYWxvbmdzaWRlIHRoZSBTdW1taXQgb24gdGhlIGxhc3Qg
ZGF5LiBYZW4gUHJvamVjdCBoYWNrYXRob25zIGhhdmUgZXZvbHZlZCBpbiBmb3JtYXQgaW50byBh
IHNlcmllcyBvZiBzdHJ1Y3R1cmVkIHByb2JsZW0tc29sdmluZyBzZXNzaW9ucyB0aGF0IHNjYWxl
IHVwIHRvIDUwIHBlb3BsZS4KCkknbSB3b25kZXJpbmcgaWYgaXQncyBwb3NzaWJsZSB0byByZWNv
cmQgdGhlIGhhY2thdGhvbiBpbnRvIGEgdmlkZW8gb3IKYXVkaW8sIHdoaWNoIHdpbGwgYmUgcmVh
bGx5IGhlbHBmdWwgZm9yIHBlb3BsZSB3aG8gY2Fubm90IG1ha2UgdGhlCnN1bW1pdC4gOi0pCgpU
aGFua3MsCgpNZW5nCgotLS0tLS0tLS0tLQpNZW5nIFh1ClBoRCBTdHVkZW50IGluIENvbXB1dGVy
IGFuZCBJbmZvcm1hdGlvbiBTY2llbmNlClVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhCmh0dHA6
Ly93d3cuY2lzLnVwZW5uLmVkdS9+bWVuZ3h1LwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1i
aW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 11:49:38 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 11:49:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgf3-0000h2-Pe; Wed, 22 Jun 2016 11:49:37 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgf2-0000gS-NF
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 11:49:36 +0000
Received: from [85.158.139.211] by server-17.bemta-5.messagelabs.com id
 50/A8-09129-05B7A675; Wed, 22 Jun 2016 11:49:36 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDIsWRWlGSWpSXmKPExsWyU9JRQte/Oiv
 c4FWjlMWfxYkOjB6HP1xhCWCMYs3MS8qvSGDN6Pp5g73g+n7Giq1LprE3MM7Yy9jFyMkhIeAn
 cfTOdFYQm01AR2Lp0flMILaIQIHE9/fzmEFsZgE1iev7u8BqhAXcJJYvXckCUeMu0XHxE5DNA
 WQbSSy6LA8SZhFQlbi/+R1YOS9Qyd2Pu9i7GLk4hAQaGCXOzP0OtpcTaE7TxfdsIDajgKzEl8
 bVULvEJW49gbhBQkBAYsme88wQtqjEy8f/WCFsA4mtS/eB7WUW0JRYv0sfolVRYkr3Q3aIvYI
 SJ2c+ATtTSEBFYsvjA1BjuCVWfv7DMoFRdBaSbbMQJs1CMmkWkkkLGFlWMWoUpxaVpRbpGpnr
 JRVlpmeU5CZm5ugaGpjq5aYWFyemp+YkJhXrJefnbmIExko9AwPjDsarW/wOMUpyMCmJ8sorZ
 4UL8SXlp1RmJBZnxBeV5qQWH2KU4eBQkuB9WAGUEyxKTU+tSMvMAUYtTFqCg0dJhPdFOVCat7
 ggMbc4Mx0idYpRUUqcl7kSKCEAksgozYNrgyWKS4yyUsK8jAwMDEI8BalFuZklqPKvGMU5GJW
 Eed+CbOfJzCuBm/4KaDET0OJl/ekgi0sSEVJSDYwevs5b7O1ORc6/bM/WftJgU9ED28R/bn9E
 7KY3zYxoONBxfWHwrve8Mz/Wd8frT9U0mv+Je/bvz9mNS/vi5x5rNRRN5D/VF1DW01F54MZVW
 bOnla9f3FitvXBmZUeYsuxKhVvsEQo9jzdtim3lzfqnqCfmebq8htVe9FAY/xeHz5P/FX/616
 rEUpyRaKjFXFScCAC+duZHDwMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1466596175!33949707!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 47774 invoked from network); 22 Jun 2016 11:49:35 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 11:49:35 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24782996"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 01/20] Add SUSPEND interface IOCTLs
Thread-Index: AQHRtce3Hs2kIEd8vkqHGUVAVzms0Z/1i8ww
Date: Wed, 22 Jun 2016 11:49:34 +0000
Message-ID: <238c374582e14225b70113e51208b3c4@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-2-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-2-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 01/20] Add SUSPEND interface IOCTLs
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDEvMjBdIEFkZCBTVVNQRU5EIGludGVyZmFjZSBJT0NUTHMN
Cj4gDQo+ICogR2V0Q291bnQgOiByZXR1cm5zIGN1cnJlbnQgc3VzcGVuZCBjb3VudCwgY2hhbmdl
cyBvdmVyIHN1c3BlbmRzDQo+ICogUmVnaXN0ZXIgOiByZWdpc3RlciBhbiBldmVudCB0aGF0IGlz
IHNldCBvbiByZXN1bWUgZnJvbSBzdXNwZW5kDQo+ICogRGVyZWdpc3RlcjogZGVyZWdpc3RlciB0
aGUgcmVzdW1lLWZyb20tc3VzcGVuZCBldmVudA0KPiANCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBT
bWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KPiAtLS0NCj4gIGluY2x1ZGUveGVuaWZhY2Vf
aW9jdGxzLmggICAgICAgIHwgIDM3ICsrKysrKysNCj4gIHNyYy94ZW5pZmFjZS9mZG8uYyAgICAg
ICAgICAgICAgIHwgIDEyICsrKw0KPiAgc3JjL3hlbmlmYWNlL2Zkby5oICAgICAgICAgICAgICAg
fCAgIDMgKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYyAgICAgfCAyMjMNCj4gKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBzcmMveGVuaWZhY2UvaW9j
dGxzLmMgICAgICAgICAgICB8ICAzNCArKysrKy0NCj4gIHNyYy94ZW5pZmFjZS9pb2N0bHMuaCAg
ICAgICAgICAgIHwgIDQ2ICsrKysrKysrDQo+ICB2czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4
cHJvaiB8ICAgMSArDQo+ICB2czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvaiB8ICAgMSAr
DQo+ICA4IGZpbGVzIGNoYW5nZWQsIDM1NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0K
PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5pZmFjZS9pb2N0bF9zdXNwZW5kLmMNCj4gDQo+
IGRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIGIvaW5jbHVkZS94ZW5pZmFj
ZV9pb2N0bHMuaA0KPiBpbmRleCAxN2JlYWExLi5kYzUzZTZiIDEwMDY0NA0KPiAtLS0gYS9pbmNs
dWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+ICsrKyBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgN
Cj4gQEAgLTMyMyw0ICszMjMsNDEgQEAgdHlwZWRlZiBzdHJ1Y3QNCj4gX1hFTklGQUNFX0dOVFRB
Ql9VTk1BUF9GT1JFSUdOX1BBR0VTX0lOIHsNCj4gICAgICBVTE9ORyBSZXF1ZXN0SWQ7IC8qISBS
ZXF1ZXN0IElEIHVzZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcNCj4gSU9DVExfWEVOSUZBQ0VfR05U
VEFCX01BUF9GT1JFSUdOX1BBR0VTIGNhbGwgKi8NCj4gIH0gWEVOSUZBQ0VfR05UVEFCX1VOTUFQ
X0ZPUkVJR05fUEFHRVNfSU4sDQo+ICpQWEVOSUZBQ0VfR05UVEFCX1VOTUFQX0ZPUkVJR05fUEFH
RVNfSU47DQo+IA0KPiArLyohIFxicmllZiBHZXRzIHRoZSBjdXJyZW50IHN1c3BlbmQgY291bnQu
DQo+ICsNCj4gKyAgICBJbnB1dDogTm9uZQ0KPiArDQo+ICsgICAgT3V0cHV0OiBVTE9ORw0KPiAr
Ki8NCj4gKyNkZWZpbmUgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9HRVRfQ09VTlQgXA0KPiArICAg
IENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODMwLCBNRVRIT0RfQlVGRkVSRUQsDQo+
IEZJTEVfQU5ZX0FDQ0VTUykNCj4gKw0KPiArLyohIFxicmllZiBSZWdpc3RlcnMgYW4gZXZlbnQg
d2hpY2ggaXMgc2lnbmFsbGVkIG9uIHJlc3VtZS1mcm9tLXN1c3BlbmQNCj4gKw0KPiArICAgIElu
cHV0OiBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lODQo+ICsNCj4gKyAgICBPdXRwdXQ6IFhF
TklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUDQo+ICsqLw0KPiArI2RlZmluZSBJT0NUTF9YRU5J
RkFDRV9TVVNQRU5EX1JFR0lTVEVSIFwNCj4gKyAgICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktO
T1dOLCAweDgzMSwgTUVUSE9EX0JVRkZFUkVELA0KPiBGSUxFX0FOWV9BQ0NFU1MpDQo+ICsNCj4g
Ky8qISBcYnJpZWYgSW5wdXQgZm9yIElPQ1RMX1hFTklGQUNFX0dOVFRBQl9VTk1BUF9GT1JFSUdO
X1BBR0VTDQoNClRoaXMgY29tbWVudCBuZWVkcyBmaXhpbmcuDQoNCj4gKi8NCj4gK3R5cGVkZWYg
c3RydWN0IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOIHsNCj4gKyAgICBIQU5ETEUgRXZl
bnQ7IC8qITwgSGFuZGxlIHRvIGFuIGV2ZW50IG9iamVjdCB0aGF0IHdpbGwgcmVjZWl2ZSBzdXNw
ZW5kDQo+IG5vdGlmaWNhdGlvbnMgKi8NCj4gK30gWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9J
TiwNCj4gKlBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOOw0KPiArDQo+ICsvKiEgXGJyaWVm
IElucHV0IGZvciBJT0NUTF9YRU5JRkFDRV9HTlRUQUJfVU5NQVBfRk9SRUlHTl9QQUdFUw0KPiAq
Lw0KDQpTbywgZG9lcyB0aGlzLg0KDQo+ICt0eXBlZGVmIHN0cnVjdCBfWEVOSUZBQ0VfU1VTUEVO
RF9SRUdJU1RFUl9PVVQgew0KPiArICAgIFBWT0lEIENvbnRleHQ7IC8qITwgSGFuZGxlIHRvIHRo
ZSBzdXNwZW5kIGV2ZW50ICovDQo+ICt9IFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VULA0K
PiAqUFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUOw0KPiArDQo+ICsvKiEgXGJyaWVmIERl
cmVnaXN0ZXJzIGFuIGV2ZW50IHdoaWNoIGlzIHNpZ25hbGxlZCBvbiByZXN1bWUtZnJvbS1zdXNw
ZW5kDQo+ICsNCj4gKyAgICBJbnB1dDogWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQNCj4g
Kw0KPiArICAgIE91dHB1dDogTm9uZQ0KPiArKi8NCj4gKyNkZWZpbmUgSU9DVExfWEVOSUZBQ0Vf
U1VTUEVORF9ERVJFR0lTVEVSIFwNCj4gKyAgICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktOT1dO
LCAweDgzMiwgTUVUSE9EX0JVRkZFUkVELA0KPiBGSUxFX0FOWV9BQ0NFU1MpDQo+ICsNCj4gICNl
bmRpZiAvLyBfWEVOSUZBQ0VfSU9DVExTX0hfDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2Uv
ZmRvLmMgYi9zcmMveGVuaWZhY2UvZmRvLmMNCj4gaW5kZXggZmExNGI1Yi4uNmQxNzE4OSAxMDA2
NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2Zkby5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9mZG8u
Yw0KPiBAQCAtOTA4LDYgKzkwOCw3IEBAIEZkb1N1c3BlbmRDYWxsYmFja0xhdGUoDQo+ICAgICAg
QVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+IA0KPiAgICAgIFdtaUZpcmVTdXNwZW5kRXZl
bnQoRmRvKTsNCj4gKyAgICBTdXNwZW5kRXZlbnRGaXJlKEZkbyk7DQo+ICB9DQo+IA0KPiAgc3Rh
dGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+IEBAIC0yNTcwLDYgKzI1NzEsOSBAQCBG
ZG9DcmVhdGUoDQo+ICAgICAgS2VJbml0aWFsaXplU3BpbkxvY2soJkZkby0+RXZ0Y2huTG9jayk7
DQo+ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPkV2dGNobkxpc3QpOw0KPiANCj4gKyAg
ICBLZUluaXRpYWxpemVTcGluTG9jaygmRmRvLT5TdXNwZW5kTG9jayk7DQo+ICsgICAgSW5pdGlh
bGl6ZUxpc3RIZWFkKCZGZG8tPlN1c3BlbmRMaXN0KTsNCj4gKw0KPiAgICAgIEtlSW5pdGlhbGl6
ZVNwaW5Mb2NrKCZGZG8tPklycFF1ZXVlTG9jayk7DQo+ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFk
KCZGZG8tPklycExpc3QpOw0KPiANCj4gQEAgLTI2MDIsNiArMjYwNiwxMCBAQCBmYWlsMTU6DQo+
ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5JcnBMaXN0LCBzaXplb2YgKExJU1RfRU5UUlkpKTsN
Cj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVlTG9jaywgc2l6ZW9mIChLU1BJTl9M
T0NLKSk7DQo+IA0KPiArICAgIEFTU0VSVChJc0xpc3RFbXB0eSgmRmRvLT5TdXNwZW5kTGlzdCkp
Ow0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+U3VzcGVuZExpc3QsIHNpemVvZiAoTElTVF9F
TlRSWSkpOw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+U3VzcGVuZExvY2ssIHNpemVvZiAo
S1NQSU5fTE9DSykpOw0KPiArDQo+ICAgICAgQVNTRVJUKElzTGlzdEVtcHR5KCZGZG8tPkV2dGNo
bkxpc3QpKTsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkV2dGNobkxpc3QsIHNpemVvZiAo
TElTVF9FTlRSWSkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+RXZ0Y2huTG9jaywgc2l6
ZW9mIChLU1BJTl9MT0NLKSk7DQo+IEBAIC0yNzI0LDYgKzI3MzIsMTAgQEAgRmRvRGVzdHJveSgN
Cj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVlTG9jaywgc2l6ZW9mIChLU1BJTl9M
T0NLKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5JcnBRdWV1ZSwgc2l6ZW9mIChJT19D
U1EpKTsNCj4gDQo+ICsgICAgQVNTRVJUKElzTGlzdEVtcHR5KCZGZG8tPlN1c3BlbmRMaXN0KSk7
DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5TdXNwZW5kTGlzdCwgc2l6ZW9mIChMSVNUX0VO
VFJZKSk7DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5TdXNwZW5kTG9jaywgc2l6ZW9mIChL
U1BJTl9MT0NLKSk7DQo+ICsNCj4gICAgICBBU1NFUlQoSXNMaXN0RW1wdHkoJkZkby0+RXZ0Y2hu
TGlzdCkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+RXZ0Y2huTGlzdCwgc2l6ZW9mIChM
SVNUX0VOVFJZKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5FdnRjaG5Mb2NrLCBzaXpl
b2YgKEtTUElOX0xPQ0spKTsNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9mZG8uaCBiL3Ny
Yy94ZW5pZmFjZS9mZG8uaA0KPiBpbmRleCA2Y2Q2MjhjLi5jODJkMmJmIDEwMDY0NA0KPiAtLS0g
YS9zcmMveGVuaWZhY2UvZmRvLmgNCj4gKysrIGIvc3JjL3hlbmlmYWNlL2Zkby5oDQo+IEBAIC05
Miw2ICs5Miw5IEBAIHR5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9GRE8gew0KPiANCj4gICAgICBL
U1BJTl9MT0NLICAgICAgICAgICAgICAgICAgICAgIEdudHRhYkNhY2hlTG9jazsNCj4gDQo+ICsg
ICAgS1NQSU5fTE9DSyAgICAgICAgICAgICAgICAgICAgICBTdXNwZW5kTG9jazsNCj4gKyAgICBM
SVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgIFN1c3BlbmRMaXN0Ow0KPiArDQo+ICAgICAg
SU9fQ1NRICAgICAgICAgICAgICAgICAgICAgICAgICBJcnBRdWV1ZTsNCj4gICAgICBLU1BJTl9M
T0NLICAgICAgICAgICAgICAgICAgICAgIElycFF1ZXVlTG9jazsNCj4gICAgICBMSVNUX0VOVFJZ
ICAgICAgICAgICAgICAgICAgICAgIElycExpc3Q7DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZh
Y2UvaW9jdGxfc3VzcGVuZC5jIGIvc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYw0KPiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5iYjZhMWFkDQo+IC0tLSAvZGV2L251
bGwNCj4gKysrIGIvc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYw0KPiBAQCAtMCwwICsxLDIy
MyBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsgKiBDb3B5
cmlnaHQgKGMpIFJhZmFsIFdvamR5bGEgPG9tZWdAaW52aXNpYmxldGhpbmdzbGFiLmNvbT4NCg0K
RGVsZXRlIHRoaXMgY29weXJpZ2h0Lg0KDQogIFBhdWwNCg0KPiArICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4N
Cj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+
ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
Ug0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLA0KPiArICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0K
PiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImRyaXZl
ci5oIg0KPiArI2luY2x1ZGUgImlvY3Rscy5oIg0KPiArI2luY2x1ZGUgInhlbmlmYWNlX2lvY3Rs
cy5oIg0KPiArI2luY2x1ZGUgImxvZy5oIg0KPiArDQo+ICtERUNMU1BFQ19OT0lOTElORQ0KPiAr
TlRTVEFUVVMNCj4gK0lvY3RsU3VzcGVuZEdldENvdW50KA0KPiArICAgIF9faW4gIFBYRU5JRkFD
RV9GRE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZmZXIsDQo+
ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcg
ICAgICAgICAgICAgT3V0TGVuLA0KPiArICAgIF9fb3V0IFBVTE9OR19QVFIgICAgICAgIEluZm8N
Cj4gKyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFUVVMgICAgc3RhdHVzOw0KPiArICAgIFBVTE9O
RyAgICAgIFZhbHVlOw0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVGRkVS
X1NJWkU7DQo+ICsgICAgaWYgKEluTGVuICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+
ICsNCj4gKyAgICBpZiAoT3V0TGVuICE9IHNpemVvZihVTE9ORykpDQo+ICsgICAgICAgIGdvdG8g
ZmFpbDI7DQo+ICsNCj4gKyAgICBWYWx1ZSA9IChQVUxPTkcpQnVmZmVyOw0KPiArICAgICpWYWx1
ZSA9IFhFTkJVU19TVVNQRU5EKEdldENvdW50LCAmRmRvLT5TdXNwZW5kSW50ZXJmYWNlKTsNCj4g
KyAgICAqSW5mbyA9IChVTE9OR19QVFIpc2l6ZW9mKFVMT05HKTsNCj4gKyAgICBzdGF0dXMgPSBT
VEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICsNCj4gK2ZhaWwy
Og0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gK2ZhaWwx
Og0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwgc3Rh
dHVzKTsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtERUNMU1BFQ19OT0lO
TElORQ0KPiArTlRTVEFUVVMNCj4gK0lvY3RsU3VzcGVuZFJlZ2lzdGVyKA0KPiArICAgIF9faW4g
IFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBC
dWZmZXIsDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19p
biAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLA0KPiArICAgIF9faW4gIFBGSUxFX09CSkVDVCAg
ICAgIEZpbGVPYmplY3QsDQo+ICsgICAgX19vdXQgUFVMT05HX1BUUiAgICAgICAgSW5mbw0KPiAr
ICAgICkNCj4gK3sNCj4gKyAgICBOVFNUQVRVUyBzdGF0dXM7DQo+ICsgICAgUFhFTklGQUNFX1NV
U1BFTkRfUkVHSVNURVJfSU4gSW4gPSBCdWZmZXI7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRf
UkVHSVNURVJfT1VUIE91dCA9IEJ1ZmZlcjsNCj4gKyAgICBQWEVOSUZBQ0VfU1VTUEVORF9DT05U
RVhUIENvbnRleHQ7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJf
U0laRTsNCj4gKyAgICBpZiAoSW5MZW4gIT0gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVHSVNU
RVJfSU4pIHx8DQo+ICsgICAgICAgIE91dExlbiAhPSBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9PVVQpKSB7DQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsgICAgfQ0KPiArDQo+
ICsgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsNCj4gKyAgICBDb250ZXh0ID0gRXhBbGxv
Y2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwNCj4gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRf
Q09OVEVYVCksIFhFTklGQUNFX1BPT0xfVEFHKTsNCj4gKyAgICBpZiAoQ29udGV4dCA9PSBOVUxM
KQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAgUnRsWmVyb01lbW9yeShDb250
ZXh0LCBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUKSk7DQo+ICsNCj4gKyAgICBDb250
ZXh0LT5GaWxlT2JqZWN0ID0gRmlsZU9iamVjdDsNCj4gKw0KPiArICAgIHN0YXR1cyA9IE9iUmVm
ZXJlbmNlT2JqZWN0QnlIYW5kbGUoSW4tPkV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRVZFTlRfTU9ESUZZX1NUQVRFLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKkV4RXZlbnRPYmplY3RUeXBlLA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlck1vZGUsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29udGV4dC0+RXZlbnQsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NF
U1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsMzsNCj4gKw0KPiArICAgIFhlbklmYWNl
RGVidWdQcmludChUUkFDRSwgIj4gU3VzcGVuZCBFdmVudCAlcCwgRk8gJXBcbiIsIEluLT5FdmVu
dCwNCj4gRmlsZU9iamVjdCk7DQo+ICsgICAgRXhJbnRlcmxvY2tlZEluc2VydFRhaWxMaXN0KCZG
ZG8tPlN1c3BlbmRMaXN0LCAmQ29udGV4dC0+RW50cnksICZGZG8tDQo+ID5TdXNwZW5kTG9jayk7
DQo+ICsNCj4gKyAgICBPdXQtPkNvbnRleHQgPSBDb250ZXh0Ow0KPiArICAgICpJbmZvID0gc2l6
ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUKTsNCj4gKw0KPiArICAgIHJldHVybiBz
dGF0dXM7DQo+ICsNCj4gK2ZhaWwzOg0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwg
IkZhaWwzXG4iKTsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KENvbnRleHQsIHNpemVvZihYRU5JRkFD
RV9TVVNQRU5EX0NPTlRFWFQpKTsNCj4gKyAgICBFeEZyZWVQb29sV2l0aFRhZyhDb250ZXh0LCBY
RU5JRkFDRV9QT09MX1RBRyk7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIFhlbklmYWNlRGVidWdQ
cmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAgWGVuSWZhY2VE
ZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArICAgIHJldHVy
biBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK19JUlFMX3JlcXVpcmVzX21heF8oRElTUEFUQ0hfTEVW
RUwpDQo+ICtWT0lEDQo+ICtTdXNwZW5kRnJlZUV2ZW50KA0KPiArICAgIF9faW4gICAgIFBYRU5J
RkFDRV9GRE8gRmRvLA0KPiArICAgIF9faW5vdXQgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQg
Q29udGV4dA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0Us
ICJDb250ZXh0ICVwLCBGTyAlcFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4
dCwgQ29udGV4dC0+RmlsZU9iamVjdCk7DQo+ICsNCj4gKyAgICBPYkRlcmVmZXJlbmNlT2JqZWN0
KENvbnRleHQtPkV2ZW50KTsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KENvbnRleHQsIHNpemVvZihY
RU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQpKTsNCj4gKyAgICBFeEZyZWVQb29sV2l0aFRhZyhDb250
ZXh0LCBYRU5JRkFDRV9QT09MX1RBRyk7DQo+ICt9DQo+ICsNCj4gK0RFQ0xTUEVDX05PSU5MSU5F
DQo+ICtOVFNUQVRVUw0KPiArSW9jdGxTdXNwZW5kRGVyZWdpc3RlcigNCj4gKyAgICBfX2luICBQ
WEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVm
ZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4g
IFVMT05HICAgICAgICAgICAgIE91dExlbiwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAg
ICBGaWxlT2JqZWN0DQo+ICsgICAgKQ0KPiArew0KPiArICAgIE5UU1RBVFVTIHN0YXR1czsNCj4g
KyAgICBQWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQgSW4gPSBCdWZmZXI7DQo+ICsgICAg
UFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCBDb250ZXh0ID0gTlVMTDsNCj4gKyAgICBLSVJRTCBJ
cnFsOw0KPiArICAgIFBMSVNUX0VOVFJZIE5vZGU7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFU
VVNfSU5WQUxJRF9CVUZGRVJfU0laRTsNCj4gKyAgICBpZiAoSW5MZW4gIT0gc2l6ZW9mKFhFTklG
QUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUKSB8fA0KPiArICAgICAgICBPdXRMZW4gIT0gMCkgew0K
PiArICAgICAgICBnb3RvIGZhaWwxOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFhlbklmYWNlRGVi
dWdQcmludChUUkFDRSwgIj4gQ29udGV4dCAlcCwgRk8gJXBcbiIsIEluLT5Db250ZXh0LA0KPiBG
aWxlT2JqZWN0KTsNCj4gKw0KPiArICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPlN1c3BlbmRM
b2NrLCAmSXJxbCk7DQo+ICsgICAgTm9kZSA9IEZkby0+U3VzcGVuZExpc3QuRmxpbms7DQo+ICsg
ICAgd2hpbGUgKE5vZGUtPkZsaW5rICE9IEZkby0+U3VzcGVuZExpc3QuRmxpbmspIHsNCj4gKyAg
ICAgICAgQ29udGV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKE5vZGUsDQo+IFhFTklGQUNFX1NVU1BF
TkRfQ09OVEVYVCwgRW50cnkpOw0KPiArDQo+ICsgICAgICAgIE5vZGUgPSBOb2RlLT5GbGluazsN
Cj4gKyAgICAgICAgaWYgKENvbnRleHQgIT0gSW4tPkNvbnRleHQgfHwNCj4gKyAgICAgICAgICAg
IENvbnRleHQtPkZpbGVPYmplY3QgIT0gRmlsZU9iamVjdCkgew0KPiArICAgICAgICAgICAgY29u
dGludWU7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICBSZW1vdmVFbnRyeUxpc3QoJkNv
bnRleHQtPkVudHJ5KTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAgIEtlUmVs
ZWFzZVNwaW5Mb2NrKCZGZG8tPlN1c3BlbmRMb2NrLCBJcnFsKTsNCj4gKw0KPiArICAgIHN0YXR1
cyA9IFNUQVRVU19OT1RfRk9VTkQ7DQo+ICsgICAgaWYgKENvbnRleHQgPT0gTlVMTCB8fCBDb250
ZXh0ICE9IEluLT5Db250ZXh0KQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAg
U3VzcGVuZEZyZWVFdmVudChGZG8sIENvbnRleHQpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRV
U19TVUNDRVNTOw0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJS
T1IsICJGYWlsMlxuIik7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIFhlbklmYWNlRGVidWdQcmlu
dChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKyAgICByZXR1cm4gc3RhdHVz
Ow0KPiArfQ0KPiArDQo+ICtWT0lEDQo+ICtTdXNwZW5kRXZlbnRGaXJlKA0KPiArICAgIF9faW4g
ICAgUFhFTklGQUNFX0ZETyAgIEZkbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBLSVJRTCAgICAg
ICBJcnFsOw0KPiArICAgIFBMSVNUX0VOVFJZIE5vZGU7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BF
TkRfQ09OVEVYVCBDb250ZXh0Ow0KPiArDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+
U3VzcGVuZExvY2ssICZJcnFsKTsNCj4gKyAgICBOb2RlID0gRmRvLT5TdXNwZW5kTGlzdC5GbGlu
azsNCj4gKyAgICB3aGlsZSAoTm9kZS0+RmxpbmsgIT0gRmRvLT5TdXNwZW5kTGlzdC5GbGluaykg
ew0KPiArICAgICAgICBDb250ZXh0ID0gQ09OVEFJTklOR19SRUNPUkQoTm9kZSwNCj4gWEVOSUZB
Q0VfU1VTUEVORF9DT05URVhULCBFbnRyeSk7DQo+ICsNCj4gKyAgICAgICAgS2VTZXRFdmVudChD
b250ZXh0LT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7DQo+ICsNCj4gKyAgICAgICAg
Tm9kZSA9IE5vZGUtPkZsaW5rOw0KPiArICAgIH0NCj4gKyAgICBLZVJlbGVhc2VTcGluTG9jaygm
RmRvLT5TdXNwZW5kTG9jaywgSXJxbCk7DQo+ICt9DQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jIGIvc3JjL3hlbmlmYWNl
L2lvY3Rscy5jDQo+IGluZGV4IGE4YTU1MzguLmM2ZDQ3MWQgMTAwNjQ0DQo+IC0tLSBhL3NyYy94
ZW5pZmFjZS9pb2N0bHMuYw0KPiArKysgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMNCj4gQEAgLTk0
LDExICs5NCwyOCBAQCBYZW5JZmFjZUNsZWFudXAoDQo+ICAgICAgKQ0KPiAgew0KPiAgICAgIFBM
SVNUX0VOVFJZIE5vZGU7DQo+IC0gICAgUFhFTklGQUNFX1NUT1JFX0NPTlRFWFQgU3RvcmVDb250
ZXh0Ow0KPiAtICAgIFBYRU5JRkFDRV9FVlRDSE5fQ09OVEVYVCBFdnRjaG5Db250ZXh0Ow0KPiAr
ICAgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQgU3VzcGVuZENvbnRleHQ7DQo+ICsgICAgUFhF
TklGQUNFX1NUT1JFX0NPTlRFWFQgICBTdG9yZUNvbnRleHQ7DQo+ICsgICAgUFhFTklGQUNFX0VW
VENITl9DT05URVhUICBFdnRjaG5Db250ZXh0Ow0KPiAgICAgIEtJUlFMIElycWw7DQo+ICAgICAg
TElTVF9FTlRSWSBUb0ZyZWU7DQo+IA0KPiArICAgIC8vIHN1c3BlbmQgZXZlbnRzDQo+ICsgICAg
S2VBY3F1aXJlU3BpbkxvY2soJkZkby0+U3VzcGVuZExvY2ssICZJcnFsKTsNCj4gKyAgICBOb2Rl
ID0gRmRvLT5TdXNwZW5kTGlzdC5GbGluazsNCj4gKyAgICB3aGlsZSAoTm9kZS0+RmxpbmsgIT0g
RmRvLT5TdXNwZW5kTGlzdC5GbGluaykgew0KPiArICAgICAgICBTdXNwZW5kQ29udGV4dCA9IENP
TlRBSU5JTkdfUkVDT1JEKE5vZGUsDQo+IFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCwgRW50cnkp
Ow0KPiArDQo+ICsgICAgICAgIE5vZGUgPSBOb2RlLT5GbGluazsNCj4gKyAgICAgICAgaWYgKFN1
c3BlbmRDb250ZXh0LT5GaWxlT2JqZWN0ICE9IEZpbGVPYmplY3QpDQo+ICsgICAgICAgICAgICBj
b250aW51ZTsNCj4gKw0KPiArICAgICAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0UsICJTdXNw
ZW5kIGNvbnRleHQgJXBcbiIsDQo+IFN1c3BlbmRDb250ZXh0KTsNCj4gKyAgICAgICAgUmVtb3Zl
RW50cnlMaXN0KCZTdXNwZW5kQ29udGV4dC0+RW50cnkpOw0KPiArICAgICAgICBTdXNwZW5kRnJl
ZUV2ZW50KEZkbywgU3VzcGVuZENvbnRleHQpOw0KPiArICAgIH0NCj4gKyAgICBLZVJlbGVhc2VT
cGluTG9jaygmRmRvLT5TdXNwZW5kTG9jaywgSXJxbCk7DQo+ICsNCj4gICAgICAvLyBzdG9yZSB3
YXRjaGVzDQo+ICAgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+U3RvcmVXYXRjaExvY2ssICZJ
cnFsKTsNCj4gICAgICBOb2RlID0gRmRvLT5TdG9yZVdhdGNoTGlzdC5GbGluazsNCj4gQEAgLTIy
Nyw2ICsyNDQsMTkgQEAgWGVuSWZhY2VJb2N0bCgNCj4gICAgICAgICAgc3RhdHVzID0gSW9jdGxH
bnR0YWJVbm1hcEZvcmVpZ25QYWdlcyhGZG8sIEJ1ZmZlciwgSW5MZW4sIE91dExlbik7DQo+ICAg
ICAgICAgIGJyZWFrOw0KPiANCj4gKyAgICAgICAgLy8gc3VzcGVuZA0KPiArICAgIGNhc2UgSU9D
VExfWEVOSUZBQ0VfU1VTUEVORF9HRVRfQ09VTlQ6DQo+ICsgICAgICAgIHN0YXR1cyA9IElvY3Rs
U3VzcGVuZEdldENvdW50KEZkbywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuLCAmSXJwLQ0KPiA+SW9T
dGF0dXMuSW5mb3JtYXRpb24pOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2Ug
SU9DVExfWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUjoNCj4gKyAgICAgICAgc3RhdHVzID0gSW9j
dGxTdXNwZW5kUmVnaXN0ZXIoRmRvLCBCdWZmZXIsIEluTGVuLCBPdXRMZW4sIFN0YWNrLQ0KPiA+
RmlsZU9iamVjdCwgJklycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24pOw0KPiArICAgICAgICBicmVh
azsNCj4gKw0KPiArICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9ERVJFR0lTVEVSOg0K
PiArICAgICAgICBzdGF0dXMgPSBJb2N0bFN1c3BlbmREZXJlZ2lzdGVyKEZkbywgQnVmZmVyLCBJ
bkxlbiwgT3V0TGVuLCBTdGFjay0NCj4gPkZpbGVPYmplY3QpOw0KPiArICAgICAgICBicmVhazsN
Cj4gKw0KPiAgICAgIGRlZmF1bHQ6DQo+ICAgICAgICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElE
X0RFVklDRV9SRVFVRVNUOw0KPiAgICAgICAgICBicmVhazsNCj4gZGlmZiAtLWdpdCBhL3NyYy94
ZW5pZmFjZS9pb2N0bHMuaCBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiBpbmRleCBkYTI3M2Nl
Li4wMDVhZWE1IDEwMDY0NA0KPiAtLS0gYS9zcmMveGVuaWZhY2UvaW9jdGxzLmgNCj4gKysrIGIv
c3JjL3hlbmlmYWNlL2lvY3Rscy5oDQo+IEBAIC05MSw2ICs5MSwxMiBAQCB0eXBlZGVmIHN0cnVj
dCBfWEVOSUZBQ0VfTUFQX0NPTlRFWFQgew0KPiAgICAgIFBNREwgICAgICAgICAgICAgICAgICAg
ICAgIE1kbDsNCj4gIH0gWEVOSUZBQ0VfTUFQX0NPTlRFWFQsICpQWEVOSUZBQ0VfTUFQX0NPTlRF
WFQ7DQo+IA0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCB7DQo+
ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgRW50cnk7DQo+ICsgICAgUEtFVkVOVCAgICAg
ICAgICAgICAgICAgRXZlbnQ7DQo+ICsgICAgUFZPSUQgICAgICAgICAgICAgICAgICAgRmlsZU9i
amVjdDsNCj4gK30gWEVOSUZBQ0VfU1VTUEVORF9DT05URVhULCAqUFhFTklGQUNFX1NVU1BFTkRf
Q09OVEVYVDsNCj4gKw0KPiAgTlRTVEFUVVMNCj4gIF9fQ2FwdHVyZVVzZXJCdWZmZXIoDQo+ICAg
ICAgX19pbiAgUFZPSUQgQnVmZmVyLA0KPiBAQCAtMzYzLDUgKzM2OSw0NSBAQCBHbnR0YWJGcmVl
TWFwKA0KPiAgICAgIF9faW5vdXQgIFBYRU5JRkFDRV9NQVBfQ09OVEVYVCBDb250ZXh0DQo+ICAg
ICAgKTsNCj4gDQo+ICtOVFNUQVRVUw0KPiArSW9jdGxTdXNwZW5kR2V0Q291bnQoDQo+ICsgICAg
X19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLA0KPiArICAgIF9faW4gIFBDSEFSICAgICAgICAg
ICAgIEJ1ZmZlciwNCj4gKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwNCj4gKyAg
ICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sDQo+ICsgICAgX19vdXQgUFVMT05HX1BU
UiAgICAgICAgSW5mbw0KPiArICAgICk7DQo+ICsNCj4gK05UU1RBVFVTDQo+ICtJb2N0bFN1c3Bl
bmRSZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAg
X19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAg
ICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExlbiwNCj4g
KyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0LA0KPiArICAgIF9fb3V0IFBV
TE9OR19QVFIgICAgICAgIEluZm8NCj4gKyAgICApOw0KPiArDQo+ICtOVFNUQVRVUw0KPiArSW9j
dGxTdXNwZW5kRGVyZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8s
DQo+ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVM
T05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91
dExlbiwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0DQo+ICsgICAg
KTsNCj4gKw0KPiArVk9JRA0KPiArU3VzcGVuZEV2ZW50RmlyZSgNCj4gKyAgICBfX2luICAgIFBY
RU5JRkFDRV9GRE8gICBGZG8NCj4gKyAgICApOw0KPiArDQo+ICtfSVJRTF9yZXF1aXJlc19tYXhf
KERJU1BBVENIX0xFVkVMKQ0KPiArVk9JRA0KPiArU3VzcGVuZEZyZWVFdmVudCgNCj4gKyAgICBf
X2luICAgICBQWEVOSUZBQ0VfRkRPIEZkbywNCj4gKyAgICBfX2lub3V0ICBQWEVOSUZBQ0VfU1VT
UEVORF9DT05URVhUIENvbnRleHQNCj4gKyAgICApOw0KPiArDQo+ICAjZW5kaWYgLy8gX0lPQ1RM
U19IXw0KPiANCj4gZGlmZiAtLWdpdCBhL3ZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9q
DQo+IGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gaW5kZXggYzU3ZTJhMi4u
YWVjMzUzMyAxMDA2NDQNCj4gLS0tIGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oN
Cj4gKysrIGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTgyLDYgKzgy
LDcgQEANCj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxf
ZXZ0Y2huLmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XGlvY3RsX2dudHRhYi5jIiAvPg0KPiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4
ZW5pZmFjZVxpb2N0bF9zdG9yZS5jIiAvPg0KPiArCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XHNyY1x4ZW5pZmFjZVxpb2N0bF9zdXNwZW5kLmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlycF9xdWV1ZS5jIiAvPg0KPiAgCTwvSXRlbUdyb3VwPg0K
PiAgICAgICAgICA8SXRlbUdyb3VwPg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDEzL3hlbmlmYWNlL3hl
bmlmYWNlLnZjeHByb2oNCj4gYi92czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiBp
bmRleCAwOGFjM2ExLi5iMzI0ZDljIDEwMDY0NA0KPiAtLS0gYS92czIwMTMveGVuaWZhY2UveGVu
aWZhY2UudmN4cHJvag0KPiArKysgYi92czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0K
PiBAQCAtMTM0LDYgKzEzNCw3IEBADQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxz
cmNceGVuaWZhY2VcaW9jdGxfZXZ0Y2huLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfZ250dGFiLmMiIC8+DQo+ICAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3RvcmUuYyIgLz4NCj4gKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9zdXNwZW5kLmMiIC8+
DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaXJwX3F1ZXVl
LmMiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAtLQ0KPiAxLjku
NC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4t
cHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 11:49:38 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 11:49:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgf3-0000h2-Pe; Wed, 22 Jun 2016 11:49:37 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgf2-0000gS-NF
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 11:49:36 +0000
Received: from [85.158.139.211] by server-17.bemta-5.messagelabs.com id
 50/A8-09129-05B7A675; Wed, 22 Jun 2016 11:49:36 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDIsWRWlGSWpSXmKPExsWyU9JRQte/Oiv
 c4FWjlMWfxYkOjB6HP1xhCWCMYs3MS8qvSGDN6Pp5g73g+n7Giq1LprE3MM7Yy9jFyMkhIeAn
 cfTOdFYQm01AR2Lp0flMILaIQIHE9/fzmEFsZgE1iev7u8BqhAXcJJYvXckCUeMu0XHxE5DNA
 WQbSSy6LA8SZhFQlbi/+R1YOS9Qyd2Pu9i7GLk4hAQaGCXOzP0OtpcTaE7TxfdsIDajgKzEl8
 bVULvEJW49gbhBQkBAYsme88wQtqjEy8f/WCFsA4mtS/eB7WUW0JRYv0sfolVRYkr3Q3aIvYI
 SJ2c+ATtTSEBFYsvjA1BjuCVWfv7DMoFRdBaSbbMQJs1CMmkWkkkLGFlWMWoUpxaVpRbpGpnr
 JRVlpmeU5CZm5ugaGpjq5aYWFyemp+YkJhXrJefnbmIExko9AwPjDsarW/wOMUpyMCmJ8sorZ
 4UL8SXlp1RmJBZnxBeV5qQWH2KU4eBQkuB9WAGUEyxKTU+tSMvMAUYtTFqCg0dJhPdFOVCat7
 ggMbc4Mx0idYpRUUqcl7kSKCEAksgozYNrgyWKS4yyUsK8jAwMDEI8BalFuZklqPKvGMU5GJW
 Eed+CbOfJzCuBm/4KaDET0OJl/ekgi0sSEVJSDYwevs5b7O1ORc6/bM/WftJgU9ED28R/bn9E
 7KY3zYxoONBxfWHwrve8Mz/Wd8frT9U0mv+Je/bvz9mNS/vi5x5rNRRN5D/VF1DW01F54MZVW
 bOnla9f3FitvXBmZUeYsuxKhVvsEQo9jzdtim3lzfqnqCfmebq8htVe9FAY/xeHz5P/FX/616
 rEUpyRaKjFXFScCAC+duZHDwMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1466596175!33949707!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 47774 invoked from network); 22 Jun 2016 11:49:35 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 11:49:35 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24782996"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 01/20] Add SUSPEND interface IOCTLs
Thread-Index: AQHRtce3Hs2kIEd8vkqHGUVAVzms0Z/1i8ww
Date: Wed, 22 Jun 2016 11:49:34 +0000
Message-ID: <238c374582e14225b70113e51208b3c4@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-2-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-2-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 01/20] Add SUSPEND interface IOCTLs
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDEvMjBdIEFkZCBTVVNQRU5EIGludGVyZmFjZSBJT0NUTHMN
Cj4gDQo+ICogR2V0Q291bnQgOiByZXR1cm5zIGN1cnJlbnQgc3VzcGVuZCBjb3VudCwgY2hhbmdl
cyBvdmVyIHN1c3BlbmRzDQo+ICogUmVnaXN0ZXIgOiByZWdpc3RlciBhbiBldmVudCB0aGF0IGlz
IHNldCBvbiByZXN1bWUgZnJvbSBzdXNwZW5kDQo+ICogRGVyZWdpc3RlcjogZGVyZWdpc3RlciB0
aGUgcmVzdW1lLWZyb20tc3VzcGVuZCBldmVudA0KPiANCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBT
bWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KPiAtLS0NCj4gIGluY2x1ZGUveGVuaWZhY2Vf
aW9jdGxzLmggICAgICAgIHwgIDM3ICsrKysrKysNCj4gIHNyYy94ZW5pZmFjZS9mZG8uYyAgICAg
ICAgICAgICAgIHwgIDEyICsrKw0KPiAgc3JjL3hlbmlmYWNlL2Zkby5oICAgICAgICAgICAgICAg
fCAgIDMgKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYyAgICAgfCAyMjMNCj4gKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBzcmMveGVuaWZhY2UvaW9j
dGxzLmMgICAgICAgICAgICB8ICAzNCArKysrKy0NCj4gIHNyYy94ZW5pZmFjZS9pb2N0bHMuaCAg
ICAgICAgICAgIHwgIDQ2ICsrKysrKysrDQo+ICB2czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4
cHJvaiB8ICAgMSArDQo+ICB2czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvaiB8ICAgMSAr
DQo+ICA4IGZpbGVzIGNoYW5nZWQsIDM1NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0K
PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5pZmFjZS9pb2N0bF9zdXNwZW5kLmMNCj4gDQo+
IGRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIGIvaW5jbHVkZS94ZW5pZmFj
ZV9pb2N0bHMuaA0KPiBpbmRleCAxN2JlYWExLi5kYzUzZTZiIDEwMDY0NA0KPiAtLS0gYS9pbmNs
dWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+ICsrKyBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgN
Cj4gQEAgLTMyMyw0ICszMjMsNDEgQEAgdHlwZWRlZiBzdHJ1Y3QNCj4gX1hFTklGQUNFX0dOVFRB
Ql9VTk1BUF9GT1JFSUdOX1BBR0VTX0lOIHsNCj4gICAgICBVTE9ORyBSZXF1ZXN0SWQ7IC8qISBS
ZXF1ZXN0IElEIHVzZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcNCj4gSU9DVExfWEVOSUZBQ0VfR05U
VEFCX01BUF9GT1JFSUdOX1BBR0VTIGNhbGwgKi8NCj4gIH0gWEVOSUZBQ0VfR05UVEFCX1VOTUFQ
X0ZPUkVJR05fUEFHRVNfSU4sDQo+ICpQWEVOSUZBQ0VfR05UVEFCX1VOTUFQX0ZPUkVJR05fUEFH
RVNfSU47DQo+IA0KPiArLyohIFxicmllZiBHZXRzIHRoZSBjdXJyZW50IHN1c3BlbmQgY291bnQu
DQo+ICsNCj4gKyAgICBJbnB1dDogTm9uZQ0KPiArDQo+ICsgICAgT3V0cHV0OiBVTE9ORw0KPiAr
Ki8NCj4gKyNkZWZpbmUgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9HRVRfQ09VTlQgXA0KPiArICAg
IENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODMwLCBNRVRIT0RfQlVGRkVSRUQsDQo+
IEZJTEVfQU5ZX0FDQ0VTUykNCj4gKw0KPiArLyohIFxicmllZiBSZWdpc3RlcnMgYW4gZXZlbnQg
d2hpY2ggaXMgc2lnbmFsbGVkIG9uIHJlc3VtZS1mcm9tLXN1c3BlbmQNCj4gKw0KPiArICAgIElu
cHV0OiBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lODQo+ICsNCj4gKyAgICBPdXRwdXQ6IFhF
TklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUDQo+ICsqLw0KPiArI2RlZmluZSBJT0NUTF9YRU5J
RkFDRV9TVVNQRU5EX1JFR0lTVEVSIFwNCj4gKyAgICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktO
T1dOLCAweDgzMSwgTUVUSE9EX0JVRkZFUkVELA0KPiBGSUxFX0FOWV9BQ0NFU1MpDQo+ICsNCj4g
Ky8qISBcYnJpZWYgSW5wdXQgZm9yIElPQ1RMX1hFTklGQUNFX0dOVFRBQl9VTk1BUF9GT1JFSUdO
X1BBR0VTDQoNClRoaXMgY29tbWVudCBuZWVkcyBmaXhpbmcuDQoNCj4gKi8NCj4gK3R5cGVkZWYg
c3RydWN0IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOIHsNCj4gKyAgICBIQU5ETEUgRXZl
bnQ7IC8qITwgSGFuZGxlIHRvIGFuIGV2ZW50IG9iamVjdCB0aGF0IHdpbGwgcmVjZWl2ZSBzdXNw
ZW5kDQo+IG5vdGlmaWNhdGlvbnMgKi8NCj4gK30gWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9J
TiwNCj4gKlBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOOw0KPiArDQo+ICsvKiEgXGJyaWVm
IElucHV0IGZvciBJT0NUTF9YRU5JRkFDRV9HTlRUQUJfVU5NQVBfRk9SRUlHTl9QQUdFUw0KPiAq
Lw0KDQpTbywgZG9lcyB0aGlzLg0KDQo+ICt0eXBlZGVmIHN0cnVjdCBfWEVOSUZBQ0VfU1VTUEVO
RF9SRUdJU1RFUl9PVVQgew0KPiArICAgIFBWT0lEIENvbnRleHQ7IC8qITwgSGFuZGxlIHRvIHRo
ZSBzdXNwZW5kIGV2ZW50ICovDQo+ICt9IFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VULA0K
PiAqUFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUOw0KPiArDQo+ICsvKiEgXGJyaWVmIERl
cmVnaXN0ZXJzIGFuIGV2ZW50IHdoaWNoIGlzIHNpZ25hbGxlZCBvbiByZXN1bWUtZnJvbS1zdXNw
ZW5kDQo+ICsNCj4gKyAgICBJbnB1dDogWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQNCj4g
Kw0KPiArICAgIE91dHB1dDogTm9uZQ0KPiArKi8NCj4gKyNkZWZpbmUgSU9DVExfWEVOSUZBQ0Vf
U1VTUEVORF9ERVJFR0lTVEVSIFwNCj4gKyAgICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktOT1dO
LCAweDgzMiwgTUVUSE9EX0JVRkZFUkVELA0KPiBGSUxFX0FOWV9BQ0NFU1MpDQo+ICsNCj4gICNl
bmRpZiAvLyBfWEVOSUZBQ0VfSU9DVExTX0hfDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2Uv
ZmRvLmMgYi9zcmMveGVuaWZhY2UvZmRvLmMNCj4gaW5kZXggZmExNGI1Yi4uNmQxNzE4OSAxMDA2
NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2Zkby5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9mZG8u
Yw0KPiBAQCAtOTA4LDYgKzkwOCw3IEBAIEZkb1N1c3BlbmRDYWxsYmFja0xhdGUoDQo+ICAgICAg
QVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+IA0KPiAgICAgIFdtaUZpcmVTdXNwZW5kRXZl
bnQoRmRvKTsNCj4gKyAgICBTdXNwZW5kRXZlbnRGaXJlKEZkbyk7DQo+ICB9DQo+IA0KPiAgc3Rh
dGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+IEBAIC0yNTcwLDYgKzI1NzEsOSBAQCBG
ZG9DcmVhdGUoDQo+ICAgICAgS2VJbml0aWFsaXplU3BpbkxvY2soJkZkby0+RXZ0Y2huTG9jayk7
DQo+ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPkV2dGNobkxpc3QpOw0KPiANCj4gKyAg
ICBLZUluaXRpYWxpemVTcGluTG9jaygmRmRvLT5TdXNwZW5kTG9jayk7DQo+ICsgICAgSW5pdGlh
bGl6ZUxpc3RIZWFkKCZGZG8tPlN1c3BlbmRMaXN0KTsNCj4gKw0KPiAgICAgIEtlSW5pdGlhbGl6
ZVNwaW5Mb2NrKCZGZG8tPklycFF1ZXVlTG9jayk7DQo+ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFk
KCZGZG8tPklycExpc3QpOw0KPiANCj4gQEAgLTI2MDIsNiArMjYwNiwxMCBAQCBmYWlsMTU6DQo+
ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5JcnBMaXN0LCBzaXplb2YgKExJU1RfRU5UUlkpKTsN
Cj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVlTG9jaywgc2l6ZW9mIChLU1BJTl9M
T0NLKSk7DQo+IA0KPiArICAgIEFTU0VSVChJc0xpc3RFbXB0eSgmRmRvLT5TdXNwZW5kTGlzdCkp
Ow0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+U3VzcGVuZExpc3QsIHNpemVvZiAoTElTVF9F
TlRSWSkpOw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+U3VzcGVuZExvY2ssIHNpemVvZiAo
S1NQSU5fTE9DSykpOw0KPiArDQo+ICAgICAgQVNTRVJUKElzTGlzdEVtcHR5KCZGZG8tPkV2dGNo
bkxpc3QpKTsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkV2dGNobkxpc3QsIHNpemVvZiAo
TElTVF9FTlRSWSkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+RXZ0Y2huTG9jaywgc2l6
ZW9mIChLU1BJTl9MT0NLKSk7DQo+IEBAIC0yNzI0LDYgKzI3MzIsMTAgQEAgRmRvRGVzdHJveSgN
Cj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVlTG9jaywgc2l6ZW9mIChLU1BJTl9M
T0NLKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5JcnBRdWV1ZSwgc2l6ZW9mIChJT19D
U1EpKTsNCj4gDQo+ICsgICAgQVNTRVJUKElzTGlzdEVtcHR5KCZGZG8tPlN1c3BlbmRMaXN0KSk7
DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5TdXNwZW5kTGlzdCwgc2l6ZW9mIChMSVNUX0VO
VFJZKSk7DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5TdXNwZW5kTG9jaywgc2l6ZW9mIChL
U1BJTl9MT0NLKSk7DQo+ICsNCj4gICAgICBBU1NFUlQoSXNMaXN0RW1wdHkoJkZkby0+RXZ0Y2hu
TGlzdCkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+RXZ0Y2huTGlzdCwgc2l6ZW9mIChM
SVNUX0VOVFJZKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5FdnRjaG5Mb2NrLCBzaXpl
b2YgKEtTUElOX0xPQ0spKTsNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9mZG8uaCBiL3Ny
Yy94ZW5pZmFjZS9mZG8uaA0KPiBpbmRleCA2Y2Q2MjhjLi5jODJkMmJmIDEwMDY0NA0KPiAtLS0g
YS9zcmMveGVuaWZhY2UvZmRvLmgNCj4gKysrIGIvc3JjL3hlbmlmYWNlL2Zkby5oDQo+IEBAIC05
Miw2ICs5Miw5IEBAIHR5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9GRE8gew0KPiANCj4gICAgICBL
U1BJTl9MT0NLICAgICAgICAgICAgICAgICAgICAgIEdudHRhYkNhY2hlTG9jazsNCj4gDQo+ICsg
ICAgS1NQSU5fTE9DSyAgICAgICAgICAgICAgICAgICAgICBTdXNwZW5kTG9jazsNCj4gKyAgICBM
SVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgIFN1c3BlbmRMaXN0Ow0KPiArDQo+ICAgICAg
SU9fQ1NRICAgICAgICAgICAgICAgICAgICAgICAgICBJcnBRdWV1ZTsNCj4gICAgICBLU1BJTl9M
T0NLICAgICAgICAgICAgICAgICAgICAgIElycFF1ZXVlTG9jazsNCj4gICAgICBMSVNUX0VOVFJZ
ICAgICAgICAgICAgICAgICAgICAgIElycExpc3Q7DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZh
Y2UvaW9jdGxfc3VzcGVuZC5jIGIvc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYw0KPiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5iYjZhMWFkDQo+IC0tLSAvZGV2L251
bGwNCj4gKysrIGIvc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYw0KPiBAQCAtMCwwICsxLDIy
MyBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsgKiBDb3B5
cmlnaHQgKGMpIFJhZmFsIFdvamR5bGEgPG9tZWdAaW52aXNpYmxldGhpbmdzbGFiLmNvbT4NCg0K
RGVsZXRlIHRoaXMgY29weXJpZ2h0Lg0KDQogIFBhdWwNCg0KPiArICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4N
Cj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+
ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
Ug0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLA0KPiArICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0K
PiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImRyaXZl
ci5oIg0KPiArI2luY2x1ZGUgImlvY3Rscy5oIg0KPiArI2luY2x1ZGUgInhlbmlmYWNlX2lvY3Rs
cy5oIg0KPiArI2luY2x1ZGUgImxvZy5oIg0KPiArDQo+ICtERUNMU1BFQ19OT0lOTElORQ0KPiAr
TlRTVEFUVVMNCj4gK0lvY3RsU3VzcGVuZEdldENvdW50KA0KPiArICAgIF9faW4gIFBYRU5JRkFD
RV9GRE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZmZXIsDQo+
ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcg
ICAgICAgICAgICAgT3V0TGVuLA0KPiArICAgIF9fb3V0IFBVTE9OR19QVFIgICAgICAgIEluZm8N
Cj4gKyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFUVVMgICAgc3RhdHVzOw0KPiArICAgIFBVTE9O
RyAgICAgIFZhbHVlOw0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVGRkVS
X1NJWkU7DQo+ICsgICAgaWYgKEluTGVuICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+
ICsNCj4gKyAgICBpZiAoT3V0TGVuICE9IHNpemVvZihVTE9ORykpDQo+ICsgICAgICAgIGdvdG8g
ZmFpbDI7DQo+ICsNCj4gKyAgICBWYWx1ZSA9IChQVUxPTkcpQnVmZmVyOw0KPiArICAgICpWYWx1
ZSA9IFhFTkJVU19TVVNQRU5EKEdldENvdW50LCAmRmRvLT5TdXNwZW5kSW50ZXJmYWNlKTsNCj4g
KyAgICAqSW5mbyA9IChVTE9OR19QVFIpc2l6ZW9mKFVMT05HKTsNCj4gKyAgICBzdGF0dXMgPSBT
VEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICsNCj4gK2ZhaWwy
Og0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gK2ZhaWwx
Og0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwgc3Rh
dHVzKTsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtERUNMU1BFQ19OT0lO
TElORQ0KPiArTlRTVEFUVVMNCj4gK0lvY3RsU3VzcGVuZFJlZ2lzdGVyKA0KPiArICAgIF9faW4g
IFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBC
dWZmZXIsDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19p
biAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLA0KPiArICAgIF9faW4gIFBGSUxFX09CSkVDVCAg
ICAgIEZpbGVPYmplY3QsDQo+ICsgICAgX19vdXQgUFVMT05HX1BUUiAgICAgICAgSW5mbw0KPiAr
ICAgICkNCj4gK3sNCj4gKyAgICBOVFNUQVRVUyBzdGF0dXM7DQo+ICsgICAgUFhFTklGQUNFX1NV
U1BFTkRfUkVHSVNURVJfSU4gSW4gPSBCdWZmZXI7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRf
UkVHSVNURVJfT1VUIE91dCA9IEJ1ZmZlcjsNCj4gKyAgICBQWEVOSUZBQ0VfU1VTUEVORF9DT05U
RVhUIENvbnRleHQ7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJf
U0laRTsNCj4gKyAgICBpZiAoSW5MZW4gIT0gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVHSVNU
RVJfSU4pIHx8DQo+ICsgICAgICAgIE91dExlbiAhPSBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9PVVQpKSB7DQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsgICAgfQ0KPiArDQo+
ICsgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsNCj4gKyAgICBDb250ZXh0ID0gRXhBbGxv
Y2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwNCj4gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRf
Q09OVEVYVCksIFhFTklGQUNFX1BPT0xfVEFHKTsNCj4gKyAgICBpZiAoQ29udGV4dCA9PSBOVUxM
KQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAgUnRsWmVyb01lbW9yeShDb250
ZXh0LCBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUKSk7DQo+ICsNCj4gKyAgICBDb250
ZXh0LT5GaWxlT2JqZWN0ID0gRmlsZU9iamVjdDsNCj4gKw0KPiArICAgIHN0YXR1cyA9IE9iUmVm
ZXJlbmNlT2JqZWN0QnlIYW5kbGUoSW4tPkV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRVZFTlRfTU9ESUZZX1NUQVRFLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKkV4RXZlbnRPYmplY3RUeXBlLA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlck1vZGUsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29udGV4dC0+RXZlbnQsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NF
U1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsMzsNCj4gKw0KPiArICAgIFhlbklmYWNl
RGVidWdQcmludChUUkFDRSwgIj4gU3VzcGVuZCBFdmVudCAlcCwgRk8gJXBcbiIsIEluLT5FdmVu
dCwNCj4gRmlsZU9iamVjdCk7DQo+ICsgICAgRXhJbnRlcmxvY2tlZEluc2VydFRhaWxMaXN0KCZG
ZG8tPlN1c3BlbmRMaXN0LCAmQ29udGV4dC0+RW50cnksICZGZG8tDQo+ID5TdXNwZW5kTG9jayk7
DQo+ICsNCj4gKyAgICBPdXQtPkNvbnRleHQgPSBDb250ZXh0Ow0KPiArICAgICpJbmZvID0gc2l6
ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUKTsNCj4gKw0KPiArICAgIHJldHVybiBz
dGF0dXM7DQo+ICsNCj4gK2ZhaWwzOg0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwg
IkZhaWwzXG4iKTsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KENvbnRleHQsIHNpemVvZihYRU5JRkFD
RV9TVVNQRU5EX0NPTlRFWFQpKTsNCj4gKyAgICBFeEZyZWVQb29sV2l0aFRhZyhDb250ZXh0LCBY
RU5JRkFDRV9QT09MX1RBRyk7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIFhlbklmYWNlRGVidWdQ
cmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAgWGVuSWZhY2VE
ZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArICAgIHJldHVy
biBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK19JUlFMX3JlcXVpcmVzX21heF8oRElTUEFUQ0hfTEVW
RUwpDQo+ICtWT0lEDQo+ICtTdXNwZW5kRnJlZUV2ZW50KA0KPiArICAgIF9faW4gICAgIFBYRU5J
RkFDRV9GRE8gRmRvLA0KPiArICAgIF9faW5vdXQgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQg
Q29udGV4dA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0Us
ICJDb250ZXh0ICVwLCBGTyAlcFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4
dCwgQ29udGV4dC0+RmlsZU9iamVjdCk7DQo+ICsNCj4gKyAgICBPYkRlcmVmZXJlbmNlT2JqZWN0
KENvbnRleHQtPkV2ZW50KTsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KENvbnRleHQsIHNpemVvZihY
RU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQpKTsNCj4gKyAgICBFeEZyZWVQb29sV2l0aFRhZyhDb250
ZXh0LCBYRU5JRkFDRV9QT09MX1RBRyk7DQo+ICt9DQo+ICsNCj4gK0RFQ0xTUEVDX05PSU5MSU5F
DQo+ICtOVFNUQVRVUw0KPiArSW9jdGxTdXNwZW5kRGVyZWdpc3RlcigNCj4gKyAgICBfX2luICBQ
WEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVm
ZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4g
IFVMT05HICAgICAgICAgICAgIE91dExlbiwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAg
ICBGaWxlT2JqZWN0DQo+ICsgICAgKQ0KPiArew0KPiArICAgIE5UU1RBVFVTIHN0YXR1czsNCj4g
KyAgICBQWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQgSW4gPSBCdWZmZXI7DQo+ICsgICAg
UFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCBDb250ZXh0ID0gTlVMTDsNCj4gKyAgICBLSVJRTCBJ
cnFsOw0KPiArICAgIFBMSVNUX0VOVFJZIE5vZGU7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFU
VVNfSU5WQUxJRF9CVUZGRVJfU0laRTsNCj4gKyAgICBpZiAoSW5MZW4gIT0gc2l6ZW9mKFhFTklG
QUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUKSB8fA0KPiArICAgICAgICBPdXRMZW4gIT0gMCkgew0K
PiArICAgICAgICBnb3RvIGZhaWwxOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFhlbklmYWNlRGVi
dWdQcmludChUUkFDRSwgIj4gQ29udGV4dCAlcCwgRk8gJXBcbiIsIEluLT5Db250ZXh0LA0KPiBG
aWxlT2JqZWN0KTsNCj4gKw0KPiArICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPlN1c3BlbmRM
b2NrLCAmSXJxbCk7DQo+ICsgICAgTm9kZSA9IEZkby0+U3VzcGVuZExpc3QuRmxpbms7DQo+ICsg
ICAgd2hpbGUgKE5vZGUtPkZsaW5rICE9IEZkby0+U3VzcGVuZExpc3QuRmxpbmspIHsNCj4gKyAg
ICAgICAgQ29udGV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKE5vZGUsDQo+IFhFTklGQUNFX1NVU1BF
TkRfQ09OVEVYVCwgRW50cnkpOw0KPiArDQo+ICsgICAgICAgIE5vZGUgPSBOb2RlLT5GbGluazsN
Cj4gKyAgICAgICAgaWYgKENvbnRleHQgIT0gSW4tPkNvbnRleHQgfHwNCj4gKyAgICAgICAgICAg
IENvbnRleHQtPkZpbGVPYmplY3QgIT0gRmlsZU9iamVjdCkgew0KPiArICAgICAgICAgICAgY29u
dGludWU7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICBSZW1vdmVFbnRyeUxpc3QoJkNv
bnRleHQtPkVudHJ5KTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAgIEtlUmVs
ZWFzZVNwaW5Mb2NrKCZGZG8tPlN1c3BlbmRMb2NrLCBJcnFsKTsNCj4gKw0KPiArICAgIHN0YXR1
cyA9IFNUQVRVU19OT1RfRk9VTkQ7DQo+ICsgICAgaWYgKENvbnRleHQgPT0gTlVMTCB8fCBDb250
ZXh0ICE9IEluLT5Db250ZXh0KQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAg
U3VzcGVuZEZyZWVFdmVudChGZG8sIENvbnRleHQpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRV
U19TVUNDRVNTOw0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJS
T1IsICJGYWlsMlxuIik7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIFhlbklmYWNlRGVidWdQcmlu
dChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKyAgICByZXR1cm4gc3RhdHVz
Ow0KPiArfQ0KPiArDQo+ICtWT0lEDQo+ICtTdXNwZW5kRXZlbnRGaXJlKA0KPiArICAgIF9faW4g
ICAgUFhFTklGQUNFX0ZETyAgIEZkbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBLSVJRTCAgICAg
ICBJcnFsOw0KPiArICAgIFBMSVNUX0VOVFJZIE5vZGU7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BF
TkRfQ09OVEVYVCBDb250ZXh0Ow0KPiArDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+
U3VzcGVuZExvY2ssICZJcnFsKTsNCj4gKyAgICBOb2RlID0gRmRvLT5TdXNwZW5kTGlzdC5GbGlu
azsNCj4gKyAgICB3aGlsZSAoTm9kZS0+RmxpbmsgIT0gRmRvLT5TdXNwZW5kTGlzdC5GbGluaykg
ew0KPiArICAgICAgICBDb250ZXh0ID0gQ09OVEFJTklOR19SRUNPUkQoTm9kZSwNCj4gWEVOSUZB
Q0VfU1VTUEVORF9DT05URVhULCBFbnRyeSk7DQo+ICsNCj4gKyAgICAgICAgS2VTZXRFdmVudChD
b250ZXh0LT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7DQo+ICsNCj4gKyAgICAgICAg
Tm9kZSA9IE5vZGUtPkZsaW5rOw0KPiArICAgIH0NCj4gKyAgICBLZVJlbGVhc2VTcGluTG9jaygm
RmRvLT5TdXNwZW5kTG9jaywgSXJxbCk7DQo+ICt9DQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jIGIvc3JjL3hlbmlmYWNl
L2lvY3Rscy5jDQo+IGluZGV4IGE4YTU1MzguLmM2ZDQ3MWQgMTAwNjQ0DQo+IC0tLSBhL3NyYy94
ZW5pZmFjZS9pb2N0bHMuYw0KPiArKysgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMNCj4gQEAgLTk0
LDExICs5NCwyOCBAQCBYZW5JZmFjZUNsZWFudXAoDQo+ICAgICAgKQ0KPiAgew0KPiAgICAgIFBM
SVNUX0VOVFJZIE5vZGU7DQo+IC0gICAgUFhFTklGQUNFX1NUT1JFX0NPTlRFWFQgU3RvcmVDb250
ZXh0Ow0KPiAtICAgIFBYRU5JRkFDRV9FVlRDSE5fQ09OVEVYVCBFdnRjaG5Db250ZXh0Ow0KPiAr
ICAgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQgU3VzcGVuZENvbnRleHQ7DQo+ICsgICAgUFhF
TklGQUNFX1NUT1JFX0NPTlRFWFQgICBTdG9yZUNvbnRleHQ7DQo+ICsgICAgUFhFTklGQUNFX0VW
VENITl9DT05URVhUICBFdnRjaG5Db250ZXh0Ow0KPiAgICAgIEtJUlFMIElycWw7DQo+ICAgICAg
TElTVF9FTlRSWSBUb0ZyZWU7DQo+IA0KPiArICAgIC8vIHN1c3BlbmQgZXZlbnRzDQo+ICsgICAg
S2VBY3F1aXJlU3BpbkxvY2soJkZkby0+U3VzcGVuZExvY2ssICZJcnFsKTsNCj4gKyAgICBOb2Rl
ID0gRmRvLT5TdXNwZW5kTGlzdC5GbGluazsNCj4gKyAgICB3aGlsZSAoTm9kZS0+RmxpbmsgIT0g
RmRvLT5TdXNwZW5kTGlzdC5GbGluaykgew0KPiArICAgICAgICBTdXNwZW5kQ29udGV4dCA9IENP
TlRBSU5JTkdfUkVDT1JEKE5vZGUsDQo+IFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCwgRW50cnkp
Ow0KPiArDQo+ICsgICAgICAgIE5vZGUgPSBOb2RlLT5GbGluazsNCj4gKyAgICAgICAgaWYgKFN1
c3BlbmRDb250ZXh0LT5GaWxlT2JqZWN0ICE9IEZpbGVPYmplY3QpDQo+ICsgICAgICAgICAgICBj
b250aW51ZTsNCj4gKw0KPiArICAgICAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0UsICJTdXNw
ZW5kIGNvbnRleHQgJXBcbiIsDQo+IFN1c3BlbmRDb250ZXh0KTsNCj4gKyAgICAgICAgUmVtb3Zl
RW50cnlMaXN0KCZTdXNwZW5kQ29udGV4dC0+RW50cnkpOw0KPiArICAgICAgICBTdXNwZW5kRnJl
ZUV2ZW50KEZkbywgU3VzcGVuZENvbnRleHQpOw0KPiArICAgIH0NCj4gKyAgICBLZVJlbGVhc2VT
cGluTG9jaygmRmRvLT5TdXNwZW5kTG9jaywgSXJxbCk7DQo+ICsNCj4gICAgICAvLyBzdG9yZSB3
YXRjaGVzDQo+ICAgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+U3RvcmVXYXRjaExvY2ssICZJ
cnFsKTsNCj4gICAgICBOb2RlID0gRmRvLT5TdG9yZVdhdGNoTGlzdC5GbGluazsNCj4gQEAgLTIy
Nyw2ICsyNDQsMTkgQEAgWGVuSWZhY2VJb2N0bCgNCj4gICAgICAgICAgc3RhdHVzID0gSW9jdGxH
bnR0YWJVbm1hcEZvcmVpZ25QYWdlcyhGZG8sIEJ1ZmZlciwgSW5MZW4sIE91dExlbik7DQo+ICAg
ICAgICAgIGJyZWFrOw0KPiANCj4gKyAgICAgICAgLy8gc3VzcGVuZA0KPiArICAgIGNhc2UgSU9D
VExfWEVOSUZBQ0VfU1VTUEVORF9HRVRfQ09VTlQ6DQo+ICsgICAgICAgIHN0YXR1cyA9IElvY3Rs
U3VzcGVuZEdldENvdW50KEZkbywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuLCAmSXJwLQ0KPiA+SW9T
dGF0dXMuSW5mb3JtYXRpb24pOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2Ug
SU9DVExfWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUjoNCj4gKyAgICAgICAgc3RhdHVzID0gSW9j
dGxTdXNwZW5kUmVnaXN0ZXIoRmRvLCBCdWZmZXIsIEluTGVuLCBPdXRMZW4sIFN0YWNrLQ0KPiA+
RmlsZU9iamVjdCwgJklycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24pOw0KPiArICAgICAgICBicmVh
azsNCj4gKw0KPiArICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9ERVJFR0lTVEVSOg0K
PiArICAgICAgICBzdGF0dXMgPSBJb2N0bFN1c3BlbmREZXJlZ2lzdGVyKEZkbywgQnVmZmVyLCBJ
bkxlbiwgT3V0TGVuLCBTdGFjay0NCj4gPkZpbGVPYmplY3QpOw0KPiArICAgICAgICBicmVhazsN
Cj4gKw0KPiAgICAgIGRlZmF1bHQ6DQo+ICAgICAgICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElE
X0RFVklDRV9SRVFVRVNUOw0KPiAgICAgICAgICBicmVhazsNCj4gZGlmZiAtLWdpdCBhL3NyYy94
ZW5pZmFjZS9pb2N0bHMuaCBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiBpbmRleCBkYTI3M2Nl
Li4wMDVhZWE1IDEwMDY0NA0KPiAtLS0gYS9zcmMveGVuaWZhY2UvaW9jdGxzLmgNCj4gKysrIGIv
c3JjL3hlbmlmYWNlL2lvY3Rscy5oDQo+IEBAIC05MSw2ICs5MSwxMiBAQCB0eXBlZGVmIHN0cnVj
dCBfWEVOSUZBQ0VfTUFQX0NPTlRFWFQgew0KPiAgICAgIFBNREwgICAgICAgICAgICAgICAgICAg
ICAgIE1kbDsNCj4gIH0gWEVOSUZBQ0VfTUFQX0NPTlRFWFQsICpQWEVOSUZBQ0VfTUFQX0NPTlRF
WFQ7DQo+IA0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCB7DQo+
ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgRW50cnk7DQo+ICsgICAgUEtFVkVOVCAgICAg
ICAgICAgICAgICAgRXZlbnQ7DQo+ICsgICAgUFZPSUQgICAgICAgICAgICAgICAgICAgRmlsZU9i
amVjdDsNCj4gK30gWEVOSUZBQ0VfU1VTUEVORF9DT05URVhULCAqUFhFTklGQUNFX1NVU1BFTkRf
Q09OVEVYVDsNCj4gKw0KPiAgTlRTVEFUVVMNCj4gIF9fQ2FwdHVyZVVzZXJCdWZmZXIoDQo+ICAg
ICAgX19pbiAgUFZPSUQgQnVmZmVyLA0KPiBAQCAtMzYzLDUgKzM2OSw0NSBAQCBHbnR0YWJGcmVl
TWFwKA0KPiAgICAgIF9faW5vdXQgIFBYRU5JRkFDRV9NQVBfQ09OVEVYVCBDb250ZXh0DQo+ICAg
ICAgKTsNCj4gDQo+ICtOVFNUQVRVUw0KPiArSW9jdGxTdXNwZW5kR2V0Q291bnQoDQo+ICsgICAg
X19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLA0KPiArICAgIF9faW4gIFBDSEFSICAgICAgICAg
ICAgIEJ1ZmZlciwNCj4gKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwNCj4gKyAg
ICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sDQo+ICsgICAgX19vdXQgUFVMT05HX1BU
UiAgICAgICAgSW5mbw0KPiArICAgICk7DQo+ICsNCj4gK05UU1RBVFVTDQo+ICtJb2N0bFN1c3Bl
bmRSZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAg
X19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAg
ICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExlbiwNCj4g
KyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0LA0KPiArICAgIF9fb3V0IFBV
TE9OR19QVFIgICAgICAgIEluZm8NCj4gKyAgICApOw0KPiArDQo+ICtOVFNUQVRVUw0KPiArSW9j
dGxTdXNwZW5kRGVyZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8s
DQo+ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVM
T05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91
dExlbiwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0DQo+ICsgICAg
KTsNCj4gKw0KPiArVk9JRA0KPiArU3VzcGVuZEV2ZW50RmlyZSgNCj4gKyAgICBfX2luICAgIFBY
RU5JRkFDRV9GRE8gICBGZG8NCj4gKyAgICApOw0KPiArDQo+ICtfSVJRTF9yZXF1aXJlc19tYXhf
KERJU1BBVENIX0xFVkVMKQ0KPiArVk9JRA0KPiArU3VzcGVuZEZyZWVFdmVudCgNCj4gKyAgICBf
X2luICAgICBQWEVOSUZBQ0VfRkRPIEZkbywNCj4gKyAgICBfX2lub3V0ICBQWEVOSUZBQ0VfU1VT
UEVORF9DT05URVhUIENvbnRleHQNCj4gKyAgICApOw0KPiArDQo+ICAjZW5kaWYgLy8gX0lPQ1RM
U19IXw0KPiANCj4gZGlmZiAtLWdpdCBhL3ZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9q
DQo+IGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gaW5kZXggYzU3ZTJhMi4u
YWVjMzUzMyAxMDA2NDQNCj4gLS0tIGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oN
Cj4gKysrIGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTgyLDYgKzgy
LDcgQEANCj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxf
ZXZ0Y2huLmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XGlvY3RsX2dudHRhYi5jIiAvPg0KPiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4
ZW5pZmFjZVxpb2N0bF9zdG9yZS5jIiAvPg0KPiArCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XHNyY1x4ZW5pZmFjZVxpb2N0bF9zdXNwZW5kLmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlycF9xdWV1ZS5jIiAvPg0KPiAgCTwvSXRlbUdyb3VwPg0K
PiAgICAgICAgICA8SXRlbUdyb3VwPg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDEzL3hlbmlmYWNlL3hl
bmlmYWNlLnZjeHByb2oNCj4gYi92czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiBp
bmRleCAwOGFjM2ExLi5iMzI0ZDljIDEwMDY0NA0KPiAtLS0gYS92czIwMTMveGVuaWZhY2UveGVu
aWZhY2UudmN4cHJvag0KPiArKysgYi92czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0K
PiBAQCAtMTM0LDYgKzEzNCw3IEBADQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxz
cmNceGVuaWZhY2VcaW9jdGxfZXZ0Y2huLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfZ250dGFiLmMiIC8+DQo+ICAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3RvcmUuYyIgLz4NCj4gKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9zdXNwZW5kLmMiIC8+
DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaXJwX3F1ZXVl
LmMiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAtLQ0KPiAxLjku
NC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4t
cHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 11:51:29 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 11:51:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFggr-0001ey-D0; Wed, 22 Jun 2016 11:51:29 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFggp-0001eU-PQ
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 11:51:27 +0000
Received: from [85.158.137.68] by server-12.bemta-3.messagelabs.com id
 24/DB-32245-FBB7A675; Wed, 22 Jun 2016 11:51:27 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQndfdVa
 4wYy9ShZ/Fic6MHoc/nCFJYAxijUzLym/IoE1o+fQO/aCox4VR7s72RoYz7h3MXJySAj4SfRd
 es0MYrMJ6EgsPTqfCcQWESiQ+P5+HlicWUBN4vr+LtYuRg4OYQEPiZ7VuhAlnhJn925lg7CNJ
 P4c7mECKWERUJVoOKUOEuYVcJeYdvoGUJiLQ0iggVHixLKZLCA1nAJuEpd2qIHUMArISnxpXA
 21SVzi1hOICyQEBCSW7DnPDGGLSrx8/I8VwjaQ2Lp0H9gYZgFNifW79CFaFSWmdD9kh1grKHF
 y5hMWEFtIQEViy+MDUGO4JVZ+/sMygVF0FpJtsxAmzUIyaRaSSQsYWVYxahSnFpWlFukamuol
 FWWmZ5TkJmbm6BoaGOvlphYXJ6an5iQmFesl5+duYgTGCAMQ7GBcs93zEKMkB5OSKK+8cla4E
 F9SfkplRmJxRnxRaU5q8SFGGQ4OJQneXVVAOcGi1PTUirTMHGC0wqQlOHiURHirQdK8xQWJuc
 WZ6RCpU4yKUuK8p0ASAiCJjNI8uDZYgrjEKCslzMsIdIgQT0FqUW5mCar8K0ZxDkYlYd5zIFN
 4MvNK4Ka/AlrMBLR4WX86yOKSRISUVAOjT/y25lfl+Z1V6nLnQvdPrqr7Vdeb+e8PH0uE/sP5
 dwU3mys47nvoe19VTemP0ZNZqy4xss87eTqDLYZZprhB4U6vUrrorIyg7PwA/Vs2knsedBdeZ
 7kQlH9TXfLIwRlynVPOL/1uEvzWs/jyp20KC/o81qzQtmxTmsG37oj+3zcGx3fM8WpSYinOSD
 TUYi4qTgQAnzfW9QsDAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-8.tower-31.messagelabs.com!1466596286!46709078!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 47230 invoked from network); 22 Jun 2016 11:51:26 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-8.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 11:51:26 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24783080"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 02/20] Add SHAREDINFO interface IOCTL
Thread-Index: AQHRtce6qAkNqjSDKE6IWRYkLTVxlZ/1jQXg
Date: Wed, 22 Jun 2016 11:51:25 +0000
Message-ID: <c82420dc8ed848fdb001265ee4f5f14a@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-3-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-3-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 02/20] Add SHAREDINFO interface IOCTL
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDIvMjBdIEFkZCBTSEFSRURJTkZPIGludGVyZmFjZSBJT0NU
TA0KPiANCj4gKiBHZXRUaW1lIDogcmV0dXJucyB0aGUgWGVuIHdhbGxjbG9jayB0aW1lDQo+IA0K
PiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IC0t
LQ0KPiAgaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaCAgICAgICAgfCAgOSArKysrKysNCj4gIHNy
Yy94ZW5pZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMgIHwgNzANCj4gKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5jICAgICAgICAg
ICAgfCAgNSArKysNCj4gIHNyYy94ZW5pZmFjZS9pb2N0bHMuaCAgICAgICAgICAgIHwgIDkgKysr
KysrDQo+ICB2czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvaiB8ICAxICsNCj4gIHZzMjAx
My94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qIHwgIDEgKw0KPiAgNiBmaWxlcyBjaGFuZ2VkLCA5
NSBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hlbmlmYWNlL2lvY3Rs
X3NoYXJlZGluZm8uYw0KPiANCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxz
LmggYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+IGluZGV4IGRjNTNlNmIuLmIyNjMxZjYg
MTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgNCj4gKysrIGIvaW5jbHVk
ZS94ZW5pZmFjZV9pb2N0bHMuaA0KPiBAQCAtMzYwLDQgKzM2MCwxMyBAQCB0eXBlZGVmIHN0cnVj
dA0KPiBfWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQgew0KPiAgI2RlZmluZSBJT0NUTF9Y
RU5JRkFDRV9TVVNQRU5EX0RFUkVHSVNURVIgXA0KPiAgICAgIENUTF9DT0RFKEZJTEVfREVWSUNF
X1VOS05PV04sIDB4ODMyLCBNRVRIT0RfQlVGRkVSRUQsDQo+IEZJTEVfQU5ZX0FDQ0VTUykNCj4g
DQo+ICsvKiEgXGJyaWVmIEdldHMgdGhlIGN1cnJlbnQgdGltZS4NCj4gKw0KPiArICAgIElucHV0
OiBOb25lDQo+ICsNCj4gKyAgICBPdXRwdXQ6IExBUkdFX0lOVEVHRVINCj4gKyovDQo+ICsjZGVm
aW5lIElPQ1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUUgXA0KPiArICAgIENUTF9DT0RF
KEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODQwLCBNRVRIT0RfQlVGRkVSRUQsDQo+IEZJTEVfQU5Z
X0FDQ0VTUykNCj4gKw0KPiAgI2VuZGlmIC8vIF9YRU5JRkFDRV9JT0NUTFNfSF8NCj4gZGlmZiAt
LWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMgYi9zcmMveGVuaWZhY2UvaW9j
dGxfc2hhcmVkaW5mby5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAu
LjEyNDUyYjINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9zcmMveGVuaWZhY2UvaW9jdGxfc2hh
cmVkaW5mby5jDQo+IEBAIC0wLDAgKzEsNzAgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4
IFN5c3RlbXMgSW5jLg0KPiArICogQ29weXJpZ2h0IChjKSBSYWZhbCBXb2pkeWxhIDxvbWVnQGlu
dmlzaWJsZXRoaW5nc2xhYi5jb20+DQoNCkRlbGV0ZSB0aGlzIGNvcHlyaWdodC4NCg0KICBQYXVs
DQoNCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKg0KPiArICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gKyAqIHdpdGggb3Igd2l0
aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQNCj4gKyAqIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+ICsgKg0KPiArICogKiAgIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCj4gKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAg
ICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXINCj4gKyAqICAg
ICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPiArICoNCj4gKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0K
PiArICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywNCj4gKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GDQo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiArICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KPiArICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywNCj4gKyAqIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KPiArICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPiAr
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksDQo+ICsgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcNCj4gKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gKyAqIFNVQ0ggREFNQUdFLg0KPiArICov
DQo+ICsNCj4gKyNpbmNsdWRlICJkcml2ZXIuaCINCj4gKyNpbmNsdWRlICJpb2N0bHMuaCINCj4g
KyNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCINCj4gKyNpbmNsdWRlICJsb2cuaCINCj4gKw0K
PiArREVDTFNQRUNfTk9JTkxJTkUNCj4gK05UU1RBVFVTDQo+ICtJb2N0bFNoYXJlZEluZm9HZXRU
aW1lKA0KPiArICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQ
Q0hBUiAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAg
SW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLA0KPiArICAgIF9f
b3V0IFBVTE9OR19QVFIgICAgICAgIEluZm8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFU
VVMgICAgICAgIHN0YXR1czsNCj4gKyAgICBQTEFSR0VfSU5URUdFUiAgVmFsdWU7DQo+ICsNCj4g
KyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJfU0laRTsNCj4gKyAgICBpZiAoSW5M
ZW4gIT0gMCkNCj4gKyAgICAgICAgZ290byBmYWlsMTsNCj4gKw0KPiArICAgIGlmIChPdXRMZW4g
IT0gc2l6ZW9mKExBUkdFX0lOVEVHRVIpKQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+
ICsgICAgVmFsdWUgPSAoUExBUkdFX0lOVEVHRVIpQnVmZmVyOw0KPiArICAgICpWYWx1ZSA9IFhF
TkJVU19TSEFSRURfSU5GTyhHZXRUaW1lLCAmRmRvLT5TaGFyZWRJbmZvSW50ZXJmYWNlKTsNCj4g
KyAgICAqSW5mbyA9IChVTE9OR19QVFIpc2l6ZW9mKExBUkdFX0lOVEVHRVIpOw0KPiArICAgIHN0
YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICsgICAgcmV0dXJuIHN0YXR1czsNCj4gKw0K
PiArZmFpbDI6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJcbiIpOw0K
PiArZmFpbDE6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgp
XG4iLCBzdGF0dXMpOw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+IGRpZmYgLS1naXQg
YS9zcmMveGVuaWZhY2UvaW9jdGxzLmMgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMNCj4gaW5kZXgg
YzZkNDcxZC4uOTI4YzJiZSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jDQo+
ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiBAQCAtMjU3LDYgKzI1NywxMSBAQCBYZW5J
ZmFjZUlvY3RsKA0KPiAgICAgICAgICBzdGF0dXMgPSBJb2N0bFN1c3BlbmREZXJlZ2lzdGVyKEZk
bywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuLCBTdGFjay0NCj4gPkZpbGVPYmplY3QpOw0KPiAgICAg
ICAgICBicmVhazsNCj4gDQo+ICsgICAgICAgIC8vIHNoYXJlZGluZm8NCj4gKyAgICBjYXNlIElP
Q1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUU6DQo+ICsgICAgICAgIHN0YXR1cyA9IElv
Y3RsU2hhcmVkSW5mb0dldFRpbWUoRmRvLCBCdWZmZXIsIEluTGVuLCBPdXRMZW4sICZJcnAtDQo+
ID5Jb1N0YXR1cy5JbmZvcm1hdGlvbik7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICAgICAg
ZGVmYXVsdDoNCj4gICAgICAgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfREVWSUNFX1JFUVVF
U1Q7DQo+ICAgICAgICAgIGJyZWFrOw0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3Rs
cy5oIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5oDQo+IGluZGV4IDAwNWFlYTUuLmMxZDdjMGYgMTAw
NjQ0DQo+IC0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiArKysgYi9zcmMveGVuaWZhY2Uv
aW9jdGxzLmgNCj4gQEAgLTQwOSw1ICs0MDksMTQgQEAgU3VzcGVuZEZyZWVFdmVudCgNCj4gICAg
ICBfX2lub3V0ICBQWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUIENvbnRleHQNCj4gICAgICApOw0K
PiANCj4gK05UU1RBVFVTDQo+ICtJb2N0bFNoYXJlZEluZm9HZXRUaW1lKA0KPiArICAgIF9faW4g
IFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBC
dWZmZXIsDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19p
biAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLA0KPiArICAgIF9fb3V0IFBVTE9OR19QVFIgICAg
ICAgIEluZm8NCj4gKyAgICApOw0KPiArDQo+ICAjZW5kaWYgLy8gX0lPQ1RMU19IXw0KPiANCj4g
ZGlmZiAtLWdpdCBhL3ZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qDQo+IGIvdnMyMDEy
L3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gaW5kZXggYWVjMzUzMy4uNDAxMGQ4MiAxMDA2
NDQNCj4gLS0tIGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gKysrIGIvdnMy
MDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTgzLDYgKzgzLDcgQEANCj4gIAkJ
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfZ250dGFiLmMiIC8+
DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3N0b3Jl
LmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3Rs
X3N1c3BlbmQuYyIgLz4NCj4gKwkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZh
Y2VcaW9jdGxfc2hhcmVkaW5mby5jIiAvPg0KPiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XHNyY1x4ZW5pZmFjZVxpcnBfcXVldWUuYyIgLz4NCj4gIAk8L0l0ZW1Hcm91cD4NCj4gICAgICAg
ICAgPEl0ZW1Hcm91cD4NCj4gZGlmZiAtLWdpdCBhL3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52
Y3hwcm9qDQo+IGIvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gaW5kZXggYjMy
NGQ5Yy4uOTczMWEzYiAxMDA2NDQNCj4gLS0tIGEvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZj
eHByb2oNCj4gKysrIGIvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTEz
NSw2ICsxMzUsNyBAQA0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlm
YWNlXGlvY3RsX2dudHRhYi5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5c
c3JjXHhlbmlmYWNlXGlvY3RsX3N0b3JlLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3VzcGVuZC5jIiAvPg0KPiArICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJlZGluZm8uYyIgLz4NCj4g
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpcnBfcXVldWUuYyIg
Lz4NCj4gICAgPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0tDQo+IDEuOS40Lm1z
eXNnaXQuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmlu
L21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 11:51:29 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 11:51:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFggr-0001ey-D0; Wed, 22 Jun 2016 11:51:29 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFggp-0001eU-PQ
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 11:51:27 +0000
Received: from [85.158.137.68] by server-12.bemta-3.messagelabs.com id
 24/DB-32245-FBB7A675; Wed, 22 Jun 2016 11:51:27 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQndfdVa
 4wYy9ShZ/Fic6MHoc/nCFJYAxijUzLym/IoE1o+fQO/aCox4VR7s72RoYz7h3MXJySAj4SfRd
 es0MYrMJ6EgsPTqfCcQWESiQ+P5+HlicWUBN4vr+LtYuRg4OYQEPiZ7VuhAlnhJn925lg7CNJ
 P4c7mECKWERUJVoOKUOEuYVcJeYdvoGUJiLQ0iggVHixLKZLCA1nAJuEpd2qIHUMArISnxpXA
 21SVzi1hOICyQEBCSW7DnPDGGLSrx8/I8VwjaQ2Lp0H9gYZgFNifW79CFaFSWmdD9kh1grKHF
 y5hMWEFtIQEViy+MDUGO4JVZ+/sMygVF0FpJtsxAmzUIyaRaSSQsYWVYxahSnFpWlFukamuol
 FWWmZ5TkJmbm6BoaGOvlphYXJ6an5iQmFesl5+duYgTGCAMQ7GBcs93zEKMkB5OSKK+8cla4E
 F9SfkplRmJxRnxRaU5q8SFGGQ4OJQneXVVAOcGi1PTUirTMHGC0wqQlOHiURHirQdK8xQWJuc
 WZ6RCpU4yKUuK8p0ASAiCJjNI8uDZYgrjEKCslzMsIdIgQT0FqUW5mCar8K0ZxDkYlYd5zIFN
 4MvNK4Ka/AlrMBLR4WX86yOKSRISUVAOjT/y25lfl+Z1V6nLnQvdPrqr7Vdeb+e8PH0uE/sP5
 dwU3mys47nvoe19VTemP0ZNZqy4xss87eTqDLYZZprhB4U6vUrrorIyg7PwA/Vs2knsedBdeZ
 7kQlH9TXfLIwRlynVPOL/1uEvzWs/jyp20KC/o81qzQtmxTmsG37oj+3zcGx3fM8WpSYinOSD
 TUYi4qTgQAnzfW9QsDAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-8.tower-31.messagelabs.com!1466596286!46709078!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 47230 invoked from network); 22 Jun 2016 11:51:26 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-8.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 11:51:26 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24783080"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 02/20] Add SHAREDINFO interface IOCTL
Thread-Index: AQHRtce6qAkNqjSDKE6IWRYkLTVxlZ/1jQXg
Date: Wed, 22 Jun 2016 11:51:25 +0000
Message-ID: <c82420dc8ed848fdb001265ee4f5f14a@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-3-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-3-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 02/20] Add SHAREDINFO interface IOCTL
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDIvMjBdIEFkZCBTSEFSRURJTkZPIGludGVyZmFjZSBJT0NU
TA0KPiANCj4gKiBHZXRUaW1lIDogcmV0dXJucyB0aGUgWGVuIHdhbGxjbG9jayB0aW1lDQo+IA0K
PiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IC0t
LQ0KPiAgaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaCAgICAgICAgfCAgOSArKysrKysNCj4gIHNy
Yy94ZW5pZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMgIHwgNzANCj4gKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5jICAgICAgICAg
ICAgfCAgNSArKysNCj4gIHNyYy94ZW5pZmFjZS9pb2N0bHMuaCAgICAgICAgICAgIHwgIDkgKysr
KysrDQo+ICB2czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvaiB8ICAxICsNCj4gIHZzMjAx
My94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qIHwgIDEgKw0KPiAgNiBmaWxlcyBjaGFuZ2VkLCA5
NSBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hlbmlmYWNlL2lvY3Rs
X3NoYXJlZGluZm8uYw0KPiANCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxz
LmggYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+IGluZGV4IGRjNTNlNmIuLmIyNjMxZjYg
MTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgNCj4gKysrIGIvaW5jbHVk
ZS94ZW5pZmFjZV9pb2N0bHMuaA0KPiBAQCAtMzYwLDQgKzM2MCwxMyBAQCB0eXBlZGVmIHN0cnVj
dA0KPiBfWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQgew0KPiAgI2RlZmluZSBJT0NUTF9Y
RU5JRkFDRV9TVVNQRU5EX0RFUkVHSVNURVIgXA0KPiAgICAgIENUTF9DT0RFKEZJTEVfREVWSUNF
X1VOS05PV04sIDB4ODMyLCBNRVRIT0RfQlVGRkVSRUQsDQo+IEZJTEVfQU5ZX0FDQ0VTUykNCj4g
DQo+ICsvKiEgXGJyaWVmIEdldHMgdGhlIGN1cnJlbnQgdGltZS4NCj4gKw0KPiArICAgIElucHV0
OiBOb25lDQo+ICsNCj4gKyAgICBPdXRwdXQ6IExBUkdFX0lOVEVHRVINCj4gKyovDQo+ICsjZGVm
aW5lIElPQ1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUUgXA0KPiArICAgIENUTF9DT0RF
KEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODQwLCBNRVRIT0RfQlVGRkVSRUQsDQo+IEZJTEVfQU5Z
X0FDQ0VTUykNCj4gKw0KPiAgI2VuZGlmIC8vIF9YRU5JRkFDRV9JT0NUTFNfSF8NCj4gZGlmZiAt
LWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMgYi9zcmMveGVuaWZhY2UvaW9j
dGxfc2hhcmVkaW5mby5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAu
LjEyNDUyYjINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9zcmMveGVuaWZhY2UvaW9jdGxfc2hh
cmVkaW5mby5jDQo+IEBAIC0wLDAgKzEsNzAgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4
IFN5c3RlbXMgSW5jLg0KPiArICogQ29weXJpZ2h0IChjKSBSYWZhbCBXb2pkeWxhIDxvbWVnQGlu
dmlzaWJsZXRoaW5nc2xhYi5jb20+DQoNCkRlbGV0ZSB0aGlzIGNvcHlyaWdodC4NCg0KICBQYXVs
DQoNCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKg0KPiArICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gKyAqIHdpdGggb3Igd2l0
aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQNCj4gKyAqIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+ICsgKg0KPiArICogKiAgIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCj4gKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAg
ICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXINCj4gKyAqICAg
ICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPiArICoNCj4gKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0K
PiArICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywNCj4gKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GDQo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiArICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KPiArICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywNCj4gKyAqIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KPiArICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPiAr
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksDQo+ICsgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcNCj4gKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gKyAqIFNVQ0ggREFNQUdFLg0KPiArICov
DQo+ICsNCj4gKyNpbmNsdWRlICJkcml2ZXIuaCINCj4gKyNpbmNsdWRlICJpb2N0bHMuaCINCj4g
KyNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCINCj4gKyNpbmNsdWRlICJsb2cuaCINCj4gKw0K
PiArREVDTFNQRUNfTk9JTkxJTkUNCj4gK05UU1RBVFVTDQo+ICtJb2N0bFNoYXJlZEluZm9HZXRU
aW1lKA0KPiArICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQ
Q0hBUiAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAg
SW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLA0KPiArICAgIF9f
b3V0IFBVTE9OR19QVFIgICAgICAgIEluZm8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFU
VVMgICAgICAgIHN0YXR1czsNCj4gKyAgICBQTEFSR0VfSU5URUdFUiAgVmFsdWU7DQo+ICsNCj4g
KyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJfU0laRTsNCj4gKyAgICBpZiAoSW5M
ZW4gIT0gMCkNCj4gKyAgICAgICAgZ290byBmYWlsMTsNCj4gKw0KPiArICAgIGlmIChPdXRMZW4g
IT0gc2l6ZW9mKExBUkdFX0lOVEVHRVIpKQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+
ICsgICAgVmFsdWUgPSAoUExBUkdFX0lOVEVHRVIpQnVmZmVyOw0KPiArICAgICpWYWx1ZSA9IFhF
TkJVU19TSEFSRURfSU5GTyhHZXRUaW1lLCAmRmRvLT5TaGFyZWRJbmZvSW50ZXJmYWNlKTsNCj4g
KyAgICAqSW5mbyA9IChVTE9OR19QVFIpc2l6ZW9mKExBUkdFX0lOVEVHRVIpOw0KPiArICAgIHN0
YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICsgICAgcmV0dXJuIHN0YXR1czsNCj4gKw0K
PiArZmFpbDI6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJcbiIpOw0K
PiArZmFpbDE6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgp
XG4iLCBzdGF0dXMpOw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+IGRpZmYgLS1naXQg
YS9zcmMveGVuaWZhY2UvaW9jdGxzLmMgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMNCj4gaW5kZXgg
YzZkNDcxZC4uOTI4YzJiZSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jDQo+
ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiBAQCAtMjU3LDYgKzI1NywxMSBAQCBYZW5J
ZmFjZUlvY3RsKA0KPiAgICAgICAgICBzdGF0dXMgPSBJb2N0bFN1c3BlbmREZXJlZ2lzdGVyKEZk
bywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuLCBTdGFjay0NCj4gPkZpbGVPYmplY3QpOw0KPiAgICAg
ICAgICBicmVhazsNCj4gDQo+ICsgICAgICAgIC8vIHNoYXJlZGluZm8NCj4gKyAgICBjYXNlIElP
Q1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUU6DQo+ICsgICAgICAgIHN0YXR1cyA9IElv
Y3RsU2hhcmVkSW5mb0dldFRpbWUoRmRvLCBCdWZmZXIsIEluTGVuLCBPdXRMZW4sICZJcnAtDQo+
ID5Jb1N0YXR1cy5JbmZvcm1hdGlvbik7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICAgICAg
ZGVmYXVsdDoNCj4gICAgICAgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfREVWSUNFX1JFUVVF
U1Q7DQo+ICAgICAgICAgIGJyZWFrOw0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3Rs
cy5oIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5oDQo+IGluZGV4IDAwNWFlYTUuLmMxZDdjMGYgMTAw
NjQ0DQo+IC0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiArKysgYi9zcmMveGVuaWZhY2Uv
aW9jdGxzLmgNCj4gQEAgLTQwOSw1ICs0MDksMTQgQEAgU3VzcGVuZEZyZWVFdmVudCgNCj4gICAg
ICBfX2lub3V0ICBQWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUIENvbnRleHQNCj4gICAgICApOw0K
PiANCj4gK05UU1RBVFVTDQo+ICtJb2N0bFNoYXJlZEluZm9HZXRUaW1lKA0KPiArICAgIF9faW4g
IFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBC
dWZmZXIsDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19p
biAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLA0KPiArICAgIF9fb3V0IFBVTE9OR19QVFIgICAg
ICAgIEluZm8NCj4gKyAgICApOw0KPiArDQo+ICAjZW5kaWYgLy8gX0lPQ1RMU19IXw0KPiANCj4g
ZGlmZiAtLWdpdCBhL3ZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qDQo+IGIvdnMyMDEy
L3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gaW5kZXggYWVjMzUzMy4uNDAxMGQ4MiAxMDA2
NDQNCj4gLS0tIGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gKysrIGIvdnMy
MDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTgzLDYgKzgzLDcgQEANCj4gIAkJ
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfZ250dGFiLmMiIC8+
DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3N0b3Jl
LmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3Rs
X3N1c3BlbmQuYyIgLz4NCj4gKwkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZh
Y2VcaW9jdGxfc2hhcmVkaW5mby5jIiAvPg0KPiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XHNyY1x4ZW5pZmFjZVxpcnBfcXVldWUuYyIgLz4NCj4gIAk8L0l0ZW1Hcm91cD4NCj4gICAgICAg
ICAgPEl0ZW1Hcm91cD4NCj4gZGlmZiAtLWdpdCBhL3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52
Y3hwcm9qDQo+IGIvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gaW5kZXggYjMy
NGQ5Yy4uOTczMWEzYiAxMDA2NDQNCj4gLS0tIGEvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZj
eHByb2oNCj4gKysrIGIvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTEz
NSw2ICsxMzUsNyBAQA0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlm
YWNlXGlvY3RsX2dudHRhYi5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5c
c3JjXHhlbmlmYWNlXGlvY3RsX3N0b3JlLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3VzcGVuZC5jIiAvPg0KPiArICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJlZGluZm8uYyIgLz4NCj4g
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpcnBfcXVldWUuYyIg
Lz4NCj4gICAgPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0tDQo+IDEuOS40Lm1z
eXNnaXQuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmlu
L21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 11:53:04 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 11:53:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgiN-0001xq-Tj; Wed, 22 Jun 2016 11:53:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgiM-0001xd-NR
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 11:53:02 +0000
Received: from [85.158.139.211] by server-16.bemta-5.messagelabs.com id
 45/62-22255-D1C7A675; Wed, 22 Jun 2016 11:53:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleJIrShJLcpLzFFi42LZKekooStbkxV
 usGOTiMWfxYkOjB6HP1xhCWCMYs3MS8qvSGDNuL/2JFtBu2jFn8Yz7A2MT0S6GDk5JAT8JN78
 eMAEYrMJ6EgsPTofzBYRKJD4/n4eM4jNLKAmcX1/FyuILSyQIHFv3WxmiJpEia8vGtkhbCOJB
 /OOgNWwCKhKnFl1HczmFXCXuHZwBVi9kEADo8TLTxldjBwcnAJuEvNOMIKEGQVkJb40roZaJS
 5x6wnECRICAhJL9pxnhrBFJV4+/scKYRtIbF26jwVkDLOApsT6XfoQrYoSU7ofskNsFZQ4OfM
 JC8RWFYktjw9AjeGWWPn5D8sERtFZSLbNQpg0C8mkWUgmLWBkWcWoUZxaVJZapGtkoZdUlJme
 UZKbmJmja2hgqpebWlycmJ6ak5hUrJecn7uJERgl9QwMjDsY+1b5HWKU5GBSEuWVV84KF+JLy
 k+pzEgszogvKs1JLT7EKMPBoSTB61AFlBMsSk1PrUjLzAHGK0xagoNHSYTXHiTNW1yQmFucmQ
 6ROsWoyzFr+Z21TEIsefl5qVLivKEgRQIgRRmleXAjYKnjEqOslDAvIwMDgxBPQWpRbmYJqvw
 rRnEORiVh3miQKTyZeSVwm14BHcEEdMSy/nSQI0oSEVJSDYyCFQJ39G7MDvH6VOEQt/a3mNGD
 s9PlF0breOxe4LpvXbz1+QcX/W7WBx+yTD9leqVv8bYtu8wWu2t8UfG1zj/KsZGPwaInY0JRc
 u4CU4eJVsflmuV7FznsNU+0TNwmO/XXv2yt6NebPVwDty8udE7oP7UllsUsT7FPZqbw58IXar
 e+Floyz1diKc5INNRiLipOBADdPo7SGAMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-14.tower-206.messagelabs.com!1466596381!9747407!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 38133 invoked from network); 22 Jun 2016 11:53:01 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-14.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 11:53:01 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24783213"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 03/20] Add IRP_MJ_CLEANUP handler that
 calls	XenIfaceCleanup
Thread-Index: AQHRtcfoigrKDOwZzk+G1NJUNwxp5Z/1jZjg
Date: Wed, 22 Jun 2016 11:53:00 +0000
Message-ID: <c9e1c22c3613489580514c8c6ba14ea4@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-4-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-4-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 03/20] Add IRP_MJ_CLEANUP handler that
 calls	XenIfaceCleanup
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

SSB0aGluayB3ZSBuZWVkIGEgbGl0dGxlIG1vcmUgY29tbWVudCBoZXJlLiBIb3cgd2FzIFhlbklm
YWNlQ2xlYW51cCBjYWxsZWQgYmVmb3JlPyBXYXMgaXQgZXZlbiBjYWxsZWQ/DQoNCiAgUGF1bA0K
DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IHdpbi1wdi1kZXZlbCBbbWFp
bHRvOndpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnXSBPbg0KPiBCZWhh
bGYgT2YgT3dlbiBTbWl0aA0KPiBTZW50OiAyNCBNYXkgMjAxNiAxNToyMQ0KPiBUbzogd2luLXB2
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNtaXRoDQo+IFN1YmplY3Q6
IFt3aW4tcHYtZGV2ZWxdIFtQQVRDSCAwMy8yMF0gQWRkIElSUF9NSl9DTEVBTlVQIGhhbmRsZXIg
dGhhdA0KPiBjYWxscyBYZW5JZmFjZUNsZWFudXANCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4g
U21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBzcmMveGVuaWZhY2UvZmRv
LmMgfCAyMyArKysrKysrKysrKysrKysrKysrKysrKw0KPiAgMSBmaWxlIGNoYW5nZWQsIDIzIGlu
c2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvZmRvLmMgYi9zcmMv
eGVuaWZhY2UvZmRvLmMNCj4gaW5kZXggNmQxNzE4OS4uMTllNTBmZSAxMDA2NDQNCj4gLS0tIGEv
c3JjL3hlbmlmYWNlL2Zkby5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9mZG8uYw0KPiBAQCAtMjMw
MSw2ICsyMzAxLDI1IEBAIEZkb0Rpc3BhdGNoU3lzdGVtQ29udHJvbCgNCj4gICAgICByZXR1cm4g
c3RhdHVzOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0K
PiArRmRvRGlzcGF0Y2hDbGVhbnVwKA0KPiArICAgIElOICBQWEVOSUZBQ0VfRkRPICAgRmRvLA0K
PiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJ
T19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsNCj4gKyAgICBQRklMRV9PQkpFQ1QgICAg
ICAgIEZpbGVPYmplY3Q7DQo+ICsNCj4gKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50
SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArICAgIEZpbGVPYmplY3QgPSBTdGFja0xvY2F0aW9u
LT5GaWxlT2JqZWN0Ow0KPiArDQo+ICsgICAgLy8gWGVuSWZhY2VDbGVhbnVwIHJlcXVpcmVzIFBB
U1NJVkVfTEVWRUwgYXMgaXQgY2FuIGNhbGwNCj4gS2VGbHVzaFF1ZXVlZERwY3MNCj4gKyAgICBB
U1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09LCBQQVNTSVZFX0xFVkVMKTsNCj4gKyAgICBY
ZW5JZmFjZUNsZWFudXAoRmRvLCBGaWxlT2JqZWN0KTsNCj4gKw0KPiArICAgIHJldHVybiBGZG9E
aXNwYXRjaENvbXBsZXRlKEZkbywgSXJwKTsNCj4gK30NCj4gKw0KPiAgTlRTVEFUVVMNCj4gIEZk
b0Rpc3BhdGNoKA0KPiAgICAgIElOICBQWEVOSUZBQ0VfRkRPICAgRmRvLA0KPiBAQCAtMjMyOSw2
ICsyMzQ4LDEwIEBAIEZkb0Rpc3BhdGNoKA0KPiAgICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRj
aFN5c3RlbUNvbnRyb2woRmRvLCBJcnApOw0KPiAgICAgICAgICBicmVhazsNCj4gDQo+ICsgICAg
Y2FzZSBJUlBfTUpfQ0xFQU5VUDoNCj4gKyAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hDbGVh
bnVwKEZkbywgSXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gICAgICBjYXNlIElSUF9N
Sl9DUkVBVEU6DQo+ICAgICAgY2FzZSBJUlBfTUpfQ0xPU0U6DQo+ICAgICAgY2FzZSBJUlBfTUpf
UkVBRDoNCj4gLS0NCj4gMS45LjQubXN5c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcg
bGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZl
bCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 11:53:04 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 11:53:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgiN-0001xq-Tj; Wed, 22 Jun 2016 11:53:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgiM-0001xd-NR
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 11:53:02 +0000
Received: from [85.158.139.211] by server-16.bemta-5.messagelabs.com id
 45/62-22255-D1C7A675; Wed, 22 Jun 2016 11:53:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleJIrShJLcpLzFFi42LZKekooStbkxV
 usGOTiMWfxYkOjB6HP1xhCWCMYs3MS8qvSGDNuL/2JFtBu2jFn8Yz7A2MT0S6GDk5JAT8JN78
 eMAEYrMJ6EgsPTofzBYRKJD4/n4eM4jNLKAmcX1/FyuILSyQIHFv3WxmiJpEia8vGtkhbCOJB
 /OOgNWwCKhKnFl1HczmFXCXuHZwBVi9kEADo8TLTxldjBwcnAJuEvNOMIKEGQVkJb40roZaJS
 5x6wnECRICAhJL9pxnhrBFJV4+/scKYRtIbF26jwVkDLOApsT6XfoQrYoSU7ofskNsFZQ4OfM
 JC8RWFYktjw9AjeGWWPn5D8sERtFZSLbNQpg0C8mkWUgmLWBkWcWoUZxaVJZapGtkoZdUlJme
 UZKbmJmja2hgqpebWlycmJ6ak5hUrJecn7uJERgl9QwMjDsY+1b5HWKU5GBSEuWVV84KF+JLy
 k+pzEgszogvKs1JLT7EKMPBoSTB61AFlBMsSk1PrUjLzAHGK0xagoNHSYTXHiTNW1yQmFucmQ
 6ROsWoyzFr+Z21TEIsefl5qVLivKEgRQIgRRmleXAjYKnjEqOslDAvIwMDgxBPQWpRbmYJqvw
 rRnEORiVh3miQKTyZeSVwm14BHcEEdMSy/nSQI0oSEVJSDYyCFQJ39G7MDvH6VOEQt/a3mNGD
 s9PlF0breOxe4LpvXbz1+QcX/W7WBx+yTD9leqVv8bYtu8wWu2t8UfG1zj/KsZGPwaInY0JRc
 u4CU4eJVsflmuV7FznsNU+0TNwmO/XXv2yt6NebPVwDty8udE7oP7UllsUsT7FPZqbw58IXar
 e+Floyz1diKc5INNRiLipOBADdPo7SGAMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-14.tower-206.messagelabs.com!1466596381!9747407!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 38133 invoked from network); 22 Jun 2016 11:53:01 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-14.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 11:53:01 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24783213"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 03/20] Add IRP_MJ_CLEANUP handler that
 calls	XenIfaceCleanup
Thread-Index: AQHRtcfoigrKDOwZzk+G1NJUNwxp5Z/1jZjg
Date: Wed, 22 Jun 2016 11:53:00 +0000
Message-ID: <c9e1c22c3613489580514c8c6ba14ea4@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-4-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-4-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 03/20] Add IRP_MJ_CLEANUP handler that
 calls	XenIfaceCleanup
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

SSB0aGluayB3ZSBuZWVkIGEgbGl0dGxlIG1vcmUgY29tbWVudCBoZXJlLiBIb3cgd2FzIFhlbklm
YWNlQ2xlYW51cCBjYWxsZWQgYmVmb3JlPyBXYXMgaXQgZXZlbiBjYWxsZWQ/DQoNCiAgUGF1bA0K
DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IHdpbi1wdi1kZXZlbCBbbWFp
bHRvOndpbi1wdi1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnXSBPbg0KPiBCZWhh
bGYgT2YgT3dlbiBTbWl0aA0KPiBTZW50OiAyNCBNYXkgMjAxNiAxNToyMQ0KPiBUbzogd2luLXB2
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBPd2VuIFNtaXRoDQo+IFN1YmplY3Q6
IFt3aW4tcHYtZGV2ZWxdIFtQQVRDSCAwMy8yMF0gQWRkIElSUF9NSl9DTEVBTlVQIGhhbmRsZXIg
dGhhdA0KPiBjYWxscyBYZW5JZmFjZUNsZWFudXANCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4g
U21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBzcmMveGVuaWZhY2UvZmRv
LmMgfCAyMyArKysrKysrKysrKysrKysrKysrKysrKw0KPiAgMSBmaWxlIGNoYW5nZWQsIDIzIGlu
c2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvZmRvLmMgYi9zcmMv
eGVuaWZhY2UvZmRvLmMNCj4gaW5kZXggNmQxNzE4OS4uMTllNTBmZSAxMDA2NDQNCj4gLS0tIGEv
c3JjL3hlbmlmYWNlL2Zkby5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9mZG8uYw0KPiBAQCAtMjMw
MSw2ICsyMzAxLDI1IEBAIEZkb0Rpc3BhdGNoU3lzdGVtQ29udHJvbCgNCj4gICAgICByZXR1cm4g
c3RhdHVzOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0K
PiArRmRvRGlzcGF0Y2hDbGVhbnVwKA0KPiArICAgIElOICBQWEVOSUZBQ0VfRkRPICAgRmRvLA0K
PiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJ
T19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsNCj4gKyAgICBQRklMRV9PQkpFQ1QgICAg
ICAgIEZpbGVPYmplY3Q7DQo+ICsNCj4gKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50
SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArICAgIEZpbGVPYmplY3QgPSBTdGFja0xvY2F0aW9u
LT5GaWxlT2JqZWN0Ow0KPiArDQo+ICsgICAgLy8gWGVuSWZhY2VDbGVhbnVwIHJlcXVpcmVzIFBB
U1NJVkVfTEVWRUwgYXMgaXQgY2FuIGNhbGwNCj4gS2VGbHVzaFF1ZXVlZERwY3MNCj4gKyAgICBB
U1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09LCBQQVNTSVZFX0xFVkVMKTsNCj4gKyAgICBY
ZW5JZmFjZUNsZWFudXAoRmRvLCBGaWxlT2JqZWN0KTsNCj4gKw0KPiArICAgIHJldHVybiBGZG9E
aXNwYXRjaENvbXBsZXRlKEZkbywgSXJwKTsNCj4gK30NCj4gKw0KPiAgTlRTVEFUVVMNCj4gIEZk
b0Rpc3BhdGNoKA0KPiAgICAgIElOICBQWEVOSUZBQ0VfRkRPICAgRmRvLA0KPiBAQCAtMjMyOSw2
ICsyMzQ4LDEwIEBAIEZkb0Rpc3BhdGNoKA0KPiAgICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRj
aFN5c3RlbUNvbnRyb2woRmRvLCBJcnApOw0KPiAgICAgICAgICBicmVhazsNCj4gDQo+ICsgICAg
Y2FzZSBJUlBfTUpfQ0xFQU5VUDoNCj4gKyAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hDbGVh
bnVwKEZkbywgSXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gICAgICBjYXNlIElSUF9N
Sl9DUkVBVEU6DQo+ICAgICAgY2FzZSBJUlBfTUpfQ0xPU0U6DQo+ICAgICAgY2FzZSBJUlBfTUpf
UkVBRDoNCj4gLS0NCj4gMS45LjQubXN5c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcg
bGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZl
bCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 11:57:02 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 11:57:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgmE-0002Bg-Az; Wed, 22 Jun 2016 11:57:02 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgmC-0002BY-A5
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 11:57:00 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 A0/D8-22092-B0D7A675; Wed, 22 Jun 2016 11:56:59 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprAKsWRWlGSWpSXmKPExsWyU9JRQpezNiv
 c4OZZJos/ixMdGD0Of7jCEsAYxZqZl5RfkcCa0TzBsmDhaa6KpgWb2RoYr+zk6mLk5JAQ8JPo
 udXHCmKzCehILD06nwnEFhEokPj+fh4ziM0soCZxfX8XUA0Hh7CAvcT559UQJQ4St5ZfYoSwj
 SSe7p3OBmKzCKhKXDp8CqyVV8BdYterW2AjhQQaGCWmfUgCGcMp4CbxoS0MJMwoICvxpXE11C
 ZxiVtPIC6QEBCQWLLnPDOELSrx8vE/VgjbQGLr0n0sIGOYBTQl1u/Sh2hVlJjS/ZAdYqugxMm
 ZT1ggtqpIbHl8AGoMt8TKz39YJjCKzkKybRbCpFlIJs1CMmkBI8sqRvXi1KKy1CJdI72kosz0
 jJLcxMwcXUMDM73c1OLixPTUnMSkYr3k/NxNjMAYYQCCHYzL/jodYpTkYFIS5ZVXzgoX4kvKT
 6nMSCzOiC8qzUktPsQow8GhJMEbVgOUEyxKTU+tSMvMAUYrTFqCg0dJhDcZJM1bXJCYW5yZDp
 E6xWjJsWXBjbVMHDP67gPJeZN2HWMSYsnLz0uVEuc1AWkQAGnIKM2DGwdLKJcYZaWEeRmBDhT
 iKUgtys0sQZV/xSjOwagkzPu3GmgKT2ZeCdzWV0AHMQEdtKw/HeSgkkSElFQDY7jyPs3ts/Xs
 eGplezRv5nP9XaOsU9Y8m3XDWfH6/iOll6b8Wuelep9X98FHlX8fDlzWuxlRtK/5vtMbkaL/Z
 06uslhkdubZ04Ua5xITPgjbSixdV5sin8XS/uWoHrdyn595rYh4wrS2h7+LNNuWx0vKVhVUv1
 z46a2c5JoAqdOb2Gbpy7MbKLEUZyQaajEXFScCACbJAZojAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-15.tower-21.messagelabs.com!1466596616!20187821!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BODY_RANDOM_LONG,
 OBSCURED_EMAIL,UPPERCASE_25_50,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14618 invoked from network); 22 Jun 2016 11:56:56 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-15.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 11:56:56 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24783437"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 04/20] Remove win32stubagent
Thread-Index: AQHRtcevcuouEQ9dLUieSZiCh+A/k5/1jgMA
Date: Wed, 22 Jun 2016 11:56:55 +0000
Message-ID: <a9b629cb07ff4af3ab03ef084e198ecd@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-5-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-5-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 04/20] Remove win32stubagent
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDQvMjBdIFJlbW92ZSB3aW4zMnN0dWJhZ2VudA0KPiANCj4g
VGhpcyBpcyAxIGxhcmdlIGNvZGUgZGVsZXRpb24gcGF0Y2gsIHRoZSBsaXRlYWdlbnQgd2lsbCBi
ZSByZWltcGxlbWVudGVkDQo+IG92ZXIgdGhlIG5leHQgc2V0IG9mIHBhdGNoZXMNCj4NCj4gU2ln
bmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpEbyB0aGlu
Z3Mgc3RpbGwgYnVpbGQgYWZ0ZXIgdGhpcyBwYXRjaCBpcyBhcHBsaWVkIChzaW5jZSB0aGUgbGl0
ZSBhZ2VudCB2Y3hwcm9qIG5vIGxvbmdlciBoYXMgY29udGVudCk/DQoNCiAgUGF1bA0KDQo+IC0t
LQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L1dtaUFjY2Vzc29yLmNwcCB8IDEzMzEgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvV21pQWNj
ZXNzb3IuaCAgIHwgICA4OCAtLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmNw
cCAgfCAgMjMwIC0tLS0tLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmggICAg
fCAgMTI2IC0tLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9YU2VydmljZS5jcHAgICAgfCAxMDQ0
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9YU2Vy
dmljZS5oICAgICAgfCAgIDU0IC0tDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvZXJyb3JzLmNwcCAg
ICAgIHwgIDEwMiAtLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9tZXNzYWdlcy5tYyAgICAgfCAg
IDY2IC0tDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvc3RkYWZ4LmNwcCAgICAgIHwgICAzOSAtLQ0K
PiAgc3JjL3dpbjMyc3R1YmFnZW50L3N0ZGFmeC5oICAgICAgICB8ICAgNDMgLS0NCj4gIHNyYy93
aW4zMnN0dWJhZ2VudC93MzJ4YWdlbnQucmMgICAgfCAgIDYwIC0tDQo+ICBzcmMvd2luMzJzdHVi
YWdlbnQveGVuLmljbyAgICAgICAgIHwgIEJpbiAyNTIxNCAtPiAwIGJ5dGVzDQo+ICB2czIwMTIv
bGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgICAzNCArLQ0KPiAgdnMyMDEzL2xpdGVhZ2Vu
dC9MaXRlQWdlbnQudmN4cHJvaiB8ICAgMzEgLQ0KPiAgMTQgZmlsZXMgY2hhbmdlZCwgMiBpbnNl
cnRpb25zKCspLCAzMjQ2IGRlbGV0aW9ucygtKQ0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93
aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5jcHANCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv
d2luMzJzdHViYWdlbnQvV21pQWNjZXNzb3IuaA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93
aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmNwcA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93
aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvd2lu
MzJzdHViYWdlbnQvWFNlcnZpY2UuY3BwDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMy
c3R1YmFnZW50L1hTZXJ2aWNlLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvd2luMzJzdHVi
YWdlbnQvZXJyb3JzLmNwcA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2Vu
dC9tZXNzYWdlcy5tYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2VudC9z
dGRhZnguY3BwDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMyc3R1YmFnZW50L3N0ZGFm
eC5oDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMyc3R1YmFnZW50L3czMnhhZ2VudC5y
Yw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2VudC94ZW4uaWNvDQo+IA0K
PiBkaWZmIC0tZ2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L1dtaUFjY2Vzc29yLmNwcA0KPiBiL3Ny
Yy93aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5jcHANCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0DQo+IGluZGV4IGI4NWZmOGUuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1YmFnZW50
L1dtaUFjY2Vzc29yLmNwcA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDEzMzEgKzAsMCBAQA0K
PiAtLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+IC0gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsDQo+IC0gKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+IC0gKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNjbGFp
bWVyLg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+IC0gKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gLSAqDQo+IC0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gLSAqIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+IC0gKiBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KPiAt
ICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUNCj4gLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SDQo+IC0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwNCj4gLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+IC0gKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiAtICogV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+IC0g
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFDQo+IC0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GDQo+IC0gKiBTVUNIIERBTUFHRS4NCj4gLSAqLw0KPiAtDQo+IC0jaW5jbHVkZSAi
c3RkYWZ4LmgiDQo+IC0jZGVmaW5lIF9XSU4zMl9EQ09NDQo+IC0jaW5jbHVkZSA8d2luZG93cy5o
Pg0KPiAtI2luY2x1ZGUgPGlvc3RyZWFtPg0KPiAtI2luY2x1ZGUgPGFsZ29yaXRobT4NCj4gLSNp
bmNsdWRlIDxoYXNoX21hcD4NCj4gLSNpbmNsdWRlIDxzdGRpby5oPg0KPiAtI2luY2x1ZGUgIndp
bmVycm9yLmgiDQo+IC0jaW5jbHVkZSAiV01JQWNjZXNzb3IuaCINCj4gLSNpbmNsdWRlICJYU2Vy
dmljZS5oIg0KPiAtI2luY2x1ZGUgImNvbXV0aWwuaCINCj4gLQ0KPiAtLy8jaW5jbHVkZSAieHNf
cHJpdmF0ZS5oIg0KPiAtI2luY2x1ZGUgPHdiZW1pZGwuaD4NCj4gLQ0KPiAtI2luY2x1ZGUgPHZl
cnNpb24uaD4NCj4gLQ0KPiAtI2RlZmluZSBXSURFTjIoeCkgTCAjIyB4DQo+IC0jZGVmaW5lIFdJ
REVOKHgpIFdJREVOMih4KQ0KPiAtDQo+IC0jZGVmaW5lIE9CSkVDVF9OQU1FX0EoX05hbWUpIE9C
SkVDVF9QUkVGSVhfU1RSICJYZW5TdG9yZSINCj4gI19OYW1lDQo+IC0jZGVmaW5lIE9CSkVDVF9O
QU1FX1coX05hbWUpIFdJREVOKE9CSkVDVF9QUkVGSVhfU1RSKQ0KPiBMIlhlblN0b3JlIiBXSURF
TigjX05hbWUpDQo+IC0NCj4gLSNwcmFnbWEgY29tbWVudChsaWIsICJ3YmVtdXVpZC5saWIiKQ0K
PiAtI3ByYWdtYSBjb21tZW50KGxpYiwgInV1aWQubGliIikNCj4gLSNwcmFnbWEgY29tbWVudChs
aWIsICJjb21zdXBwdy5saWIiKQ0KPiAtDQo+IC1CU1RSIG1rQnN0cihjb25zdCBjaGFyICpzdHJp
bmcsIHNpemVfdCBsZW4pIHsNCj4gLSAgICBCU1RSIHJlcyA9IE5VTEw7DQo+IC0gICAgc2l6ZV90
IHJldHVybmVkOw0KPiAtICAgIHdjaGFyX3QqIHdzdHJpbmcgPSBuZXcgd2NoYXJfdFtsZW4rMV07
DQo+IC0gICAgaWYgKHdzdHJpbmcgPT0gTlVMTCkgew0KPiAtICAgICAgICBnb3RvIG1hbGxvY193
c3RyaW5nOw0KPiAtICAgIH0NCj4gLSAgICBtYnN0b3djc19zKCZyZXR1cm5lZCwgd3N0cmluZywg
bGVuKzEsIHN0cmluZywgbGVuKTsNCj4gLSAgICByZXMgPSBTeXNBbGxvY1N0cmluZyh3c3RyaW5n
KTsNCj4gLSAgICBkZWxldGUgd3N0cmluZzsNCj4gLW1hbGxvY193c3RyaW5nOg0KPiAtICAgIHJl
dHVybiByZXM7DQo+IC19DQo+IC0NCj4gLWNoYXIgKiBmb3JtYXRDaGFyU3RySW50KGNvbnN0IGNo
YXIgKmZtdCwgdmFfbGlzdCBsKSB7DQo+IC0gICAgY2hhciAqYnVmID0gTlVMTDsNCj4gLSAgICBp
bnQgY250ID0gX3ZzY3ByaW50ZihmbXQsIGwpOw0KPiAtICAgIGJ1ZiA9IChjaGFyICopWHNBbGxv
YyhjbnQrMSk7DQo+IC0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7DQo+IC0gICAgICAgIGdvdG8gbWFs
bG9jX2J1ZjsNCj4gLSAgICB9DQo+IC0gICAgX3ZzbnByaW50ZihidWYsIGNudCsxLCBmbXQsIGwp
Ow0KPiAtbWFsbG9jX2J1ZjoNCj4gLSAgICByZXR1cm4gYnVmOw0KPiAtfQ0KPiAtDQo+IC1jaGFy
ICogZm9ybWF0Q2hhclN0cihjb25zdCBjaGFyICpmbXQsIC4uLiApIHsNCj4gLSAgICBjaGFyICpi
dWYgPU5VTEw7DQo+IC0gICAgdmFfbGlzdCBsOw0KPiAtICAgIHZhX3N0YXJ0KGwsIGZtdCk7DQo+
IC0gICAgYnVmID0gZm9ybWF0Q2hhclN0ckludChmbXQsIGwpOw0KPiAtICAgIHZhX2VuZChsKTsN
Cj4gLSAgICByZXR1cm4gYnVmOw0KPiAtfQ0KPiAtDQo+IC1CU1RSIGZvcm1hdEJzdHIoY29uc3Qg
Y2hhciAqZm10LCAuLi4pDQo+IC17DQo+IC0gICAgY2hhciAqYnVmOw0KPiAtICAgIHZhX2xpc3Qg
bDsNCj4gLSAgICBCU1RSIHJlcyA9IE5VTEw7DQo+IC0gICAgdmFfc3RhcnQobCwgZm10KTsNCj4g
LSAgICBidWYgPSBmb3JtYXRDaGFyU3RySW50KGZtdCwgbCk7DQo+IC0gICAgdmFfZW5kKGwpOw0K
PiAtICAgIHJlcyA9IG1rQnN0cihidWYsIHN0cmxlbihidWYpKTsNCj4gLSAgICBYc0ZyZWUoYnVm
KTsNCj4gLSAgICByZXR1cm4gcmVzOw0KPiAtfQ0KPiAtDQo+IC1pbnQgc2V0VmFyaWFudFN0cmlu
ZyhWQVJJQU5UKiB2YXIsIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pIHsNCj4gLSAgICBp
bnQgZXJyPS0xOw0KPiAtICAgIFZhcmlhbnRJbml0KHZhcik7DQo+IC0gICAgdmFyLT52dD1WVF9C
U1RSOw0KPiAtICAgIHZhci0+YnN0clZhbCA9IG1rQnN0cihkYXRhLCBsZW4pOw0KPiAtICAgIGlm
ICh2YXItPmJzdHJWYWwgPT0gTlVMTCkgew0KPiAtICAgICAgICBnb3RvIHN5c2FsbG9jOw0KPiAt
ICAgIH0NCj4gLSAgICBlcnI9MDsNCj4gLXN5c2FsbG9jOg0KPiAtICAgIHJldHVybiBlcnI7DQo+
IC19DQo+IC0NCj4gLQ0KPiAtaW50IHNldFZhcmlhbnRTdHJpbmcoVkFSSUFOVCogdmFyLCBjb25z
dCBjaGFyICpzdHJpbmcpIHsNCj4gLSAgICByZXR1cm4gc2V0VmFyaWFudFN0cmluZyh2YXIsIHN0
cmluZywgc3RybGVuKHN0cmluZykpOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLWNsYXNzIFdhdGNoU2lu
ayA6IHB1YmxpYyBJV2JlbU9iamVjdFNpbmsNCj4gLXsNCj4gLSAgICBMT05HIG1fbFJlZjsNCj4g
LSAgICBib29sIGJEb25lOw0KPiAtICAgIEhBTkRMRSB0cmlnZ2VyZXZlbnQ7DQo+IC0gICAgSEFO
RExFIHRyaWdnZXJlcnJvcjsNCj4gLXB1YmxpYzoNCj4gLSAgICBjaGFyICpwYXRoOw0KPiAtICAg
IFdhdGNoU2luayhIQU5ETEUgZXZlbnQsIEhBTkRMRSBlcnJvcmV2ZW50LCBjb25zdCBjaGFyICpw
YXRoKSB7DQo+IC0gICAgICAgIG1fbFJlZiA9IDE7DQo+IC0gICAgICAgIHRyaWdnZXJldmVudCA9
IGV2ZW50Ow0KPiAtICAgICAgICB0cmlnZ2VyZXJyb3IgPSBlcnJvcmV2ZW50Ow0KPiAtICAgICAg
ICB0aGlzLT5wYXRoID0gTlVMTDsNCj4gLSAgICAgICAgaWYgKHBhdGgpIHsNCj4gLSAgICAgICAg
ICAgIHRoaXMtPnBhdGg9KGNoYXIgKilYc0FsbG9jKHN0cmxlbihwYXRoKSsxKTsNCj4gLSAgICAg
ICAgICAgIHN0cmNweSh0aGlzLT5wYXRoLCBwYXRoKTsNCj4gLSAgICAgICAgfQ0KPiAtICAgIH0N
Cj4gLSAgIH5XYXRjaFNpbmsoKSB7IGJEb25lID0gVFJVRTsgfQ0KPiAtDQo+IC0gICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsNCj4gLSAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsNCj4gLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUNCj4gLSAgICAgICAgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZv
aWQqKiBwcHYpOw0KPiAtDQo+IC0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IEluZGljYXRlKA0KPiAtICAgICAgICAgICAgLyogW2luXSAqLw0KPiAtICAgICAgICAgICAgTE9O
RyBsT2JqZWN0Q291bnQsDQo+IC0gICAgICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovDQo+IC0g
ICAgICAgICAgICBJV2JlbUNsYXNzT2JqZWN0IF9fUlBDX0ZBUiAqX19SUENfRkFSICphcE9iakFy
cmF5DQo+IC0gICAgICAgICAgICApOw0KPiAtDQo+IC0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFNldFN0YXR1cygNCj4gLSAgICAgICAgICAgIC8qIFtpbl0gKi8gTE9ORyBs
RmxhZ3MsDQo+IC0gICAgICAgICAgICAvKiBbaW5dICovIEhSRVNVTFQgaFJlc3VsdCwNCj4gLSAg
ICAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzdHJQYXJhbSwNCj4gLSAgICAgICAgICAgIC8qIFtp
bl0gKi8gSVdiZW1DbGFzc09iamVjdCBfX1JQQ19GQVIgKnBPYmpQYXJhbQ0KPiAtICAgICAgICAg
ICAgKTsNCj4gLX07DQo+IC0NCj4gLQ0KPiAtVUxPTkcgV2F0Y2hTaW5rOjpBZGRSZWYoKQ0KPiAt
ew0KPiAtICAgIHJldHVybiBJbnRlcmxvY2tlZEluY3JlbWVudCgmbV9sUmVmKTsNCj4gLX0NCj4g
LQ0KPiAtVUxPTkcgV2F0Y2hTaW5rOjpSZWxlYXNlKCkNCj4gLXsNCj4gLSAgICBMT05HIGxSZWYg
PSBJbnRlcmxvY2tlZERlY3JlbWVudCgmbV9sUmVmKTsNCj4gLSAgICBpZihsUmVmID09IDApDQo+
IC0gICAgICAgIGRlbGV0ZSB0aGlzOw0KPiAtICAgIHJldHVybiBsUmVmOw0KPiAtfQ0KPiAtDQo+
IC1IUkVTVUxUIFdhdGNoU2luazo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBw
cHYpDQo+IC17DQo+IC0gICAgaWYgKHJpaWQgPT0gSUlEX0lVbmtub3duIHx8IHJpaWQgPT0gSUlE
X0lXYmVtT2JqZWN0U2luaykNCj4gLSAgICB7DQo+IC0gICAgICAgICpwcHYgPSAoSVdiZW1PYmpl
Y3RTaW5rICopIHRoaXM7DQo+IC0gICAgICAgIEFkZFJlZigpOw0KPiAtICAgICAgICByZXR1cm4g
V0JFTV9TX05PX0VSUk9SOw0KPiAtICAgIH0NCj4gLSAgICBlbHNlIHJldHVybiBFX05PSU5URVJG
QUNFOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLUhSRVNVTFQgV2F0Y2hTaW5rOjpJbmRpY2F0ZShsb25n
IGxPYmpDb3VudCwgSVdiZW1DbGFzc09iamVjdCAqKnBBcnJheSkNCj4gLXsNCj4gLSAgICBmb3Ig
KGxvbmcgaSA9IDA7IGkgPCBsT2JqQ291bnQ7IGkrKykNCj4gLSAgICB7DQo+IC0gICAgICAgIElX
YmVtQ2xhc3NPYmplY3QgKnBPYmogPSBwQXJyYXlbaV07DQo+IC0gICAgICAgIFNldEV2ZW50KHRo
aXMtPnRyaWdnZXJldmVudCk7DQo+IC0gICAgICAgIC8vIC4uLiB1c2UgdGhlIG9iamVjdC4NCj4g
LQ0KPiAtICAgICAgICAvLyBBZGRSZWYoKSBpcyBvbmx5IHJlcXVpcmVkIGlmIHRoZSBvYmplY3Qg
d2lsbCBiZSBoZWxkIGFmdGVyDQo+IC0gICAgICAgIC8vIHRoZSByZXR1cm4gdG8gdGhlIGNhbGxl
ci4NCj4gLSAgICB9DQo+IC0NCj4gLSAgICByZXR1cm4gV0JFTV9TX05PX0VSUk9SOw0KPiAtfQ0K
PiAtDQo+IC1IUkVTVUxUIFdhdGNoU2luazo6U2V0U3RhdHVzKA0KPiAtICAgICAgICAgICAgLyog
W2luXSAqLyBMT05HIGxGbGFncywNCj4gLSAgICAgICAgICAgIC8qIFtpbl0gKi8gSFJFU1VMVCBo
UmVzdWx0LA0KPiAtICAgICAgICAgICAgLyogW2luXSAqLyBCU1RSIHN0clBhcmFtLA0KPiAtICAg
ICAgICAgICAgLyogW2luXSAqLyBJV2JlbUNsYXNzT2JqZWN0IF9fUlBDX0ZBUiAqcE9ialBhcmFt
DQo+IC0gICAgICAgICkNCj4gLXsNCj4gLSAgICBpZiAoRkFJTEVEKGhSZXN1bHQpKSB7DQo+IC0g
ICAgICAgIFhzTG9nKCJXTUkgQXN5YyB3YXRjaCBmYWlsZWQgJXBcbiIsIHRoaXMpOw0KPiAtICAg
ICAgICBTZXRFdmVudCh0aGlzLT50cmlnZ2VyZXJyb3IpOw0KPiAtICAgIH0NCj4gLSAgICByZXR1
cm4gV0JFTV9TX05PX0VSUk9SOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLQ0KPiAtc3RydWN0IFdNSUFj
Y2Vzc29yDQo+IC17DQo+IC0gICAgSVdiZW1TZXJ2aWNlcyAqbXBTdmM7DQo+IC0gICAgSVdiZW1T
ZXJ2aWNlcyAqbXBYU1N2YzsNCj4gLQ0KPiAtICAgIEhBTkRMRSBvd25pbmdfdGhyZWFkOw0KPiAt
fTsNCj4gLQ0KPiAtc3RydWN0IFdNSUFjY2Vzc29yICp3bWkgPSBOVUxMOw0KPiAtDQo+IC1zdGF0
aWMgc3RyaW5nIHdzdHJpbmcyc3RyaW5nKGNvbnN0IHdzdHJpbmcmIHdzdHIpDQo+IC17DQo+IC0g
ICAgaW50IGxlbjsNCj4gLQ0KPiAtICAgIGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRG
OCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsDQo+IC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3c3RyLmNfc3RyKCksDQo+IC0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtMSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0K
PiAtDQo+IC0gICAgc3RyaW5nIHN0cihsZW4sIDApOw0KPiAtDQo+IC0gICAgbGVuID0gV2lkZUNo
YXJUb011bHRpQnl0ZShDUF9VVEY4LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdzdHIuY19zdHIoKSwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLA0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnN0clswXSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQp
c3RyLmxlbmd0aCgpLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4g
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAtDQo+IC0gICAgcmV0dXJu
IHN0cjsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHN0cmluZyBic3RyMnN0cmluZyhjb25zdCBCU1RS
JiBic3RyKQ0KPiAtew0KPiAtICAgIHdzdHJpbmcgd3N0cihic3RyKTsNCj4gLQ0KPiAtICAgIHJl
dHVybiB3c3RyaW5nMnN0cmluZyh3c3RyKTsNCj4gLX0NCj4gLQ0KPiAtSVdiZW1DbGFzc09iamVj
dCAqZ2V0Q2xhc3MoV01JQWNjZXNzb3IgKip3bWksIEJTVFIgcGF0aCkgew0KPiAtICAgIGlmICgq
d21pID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybiBOVUxMOw0KPiAtDQo+IC0gICAgaWYgKCgq
d21pKS0+bXBYU1N2YyA9PSBOVUxMKQ0KPiAtICAgICAgICByZXR1cm4gTlVMTDsNCj4gLQ0KPiAt
ICAgIElXYmVtQ2xhc3NPYmplY3QgKnJldHVybmVkT2JqZWN0Ow0KPiAtICAgIEhSRVNVTFQgaHJl
cyA9ICgqd21pKS0+bXBYU1N2Yy0NCj4gPkdldE9iamVjdChwYXRoLFdCRU1fRkxBR19SRVRVUk5f
V0JFTV9DT01QTEVURSwNCj4gLSAgICAgICAgICAgIE5VTEwsICZyZXR1cm5lZE9iamVjdCwgTlVM
TCk7DQo+IC0gICAgaWYgKEZBSUxFRChocmVzKSkgew0KPiAtICAgICAgICByZXR1cm5lZE9iamVj
dCA9TlVMTDsNCj4gLSAgICB9DQo+IC0gICAgcmV0dXJuIHJldHVybmVkT2JqZWN0Ow0KPiAtfQ0K
PiAtDQo+IC1JV2JlbUNsYXNzT2JqZWN0ICpnZXRPYmplY3QoV01JQWNjZXNzb3IgKip3bWksIEJT
VFIgcGF0aCkgew0KPiAtICAgIElFbnVtV2JlbUNsYXNzT2JqZWN0ICpyZXR1cm5lZEVudW07DQo+
IC0gICAgSVdiZW1DbGFzc09iamVjdCAqcmV0dXJuZWRPYmplY3Q7DQo+IC0gICAgaWYgKCp3bWkg
PT0gTlVMTCkNCj4gLSAgICAgICAgcmV0dXJuIE5VTEw7DQo+IC0gICAgQVNTRVJUKCgqd21pKS0+
bXBYU1N2YyAhPSBOVUxMKTsNCj4gLSAgICBIUkVTVUxUIGhyZXMgPSAgKCp3bWkpLT5tcFhTU3Zj
LT5DcmVhdGVJbnN0YW5jZUVudW0ocGF0aCwNCj4gV0JFTV9GTEFHX0ZPUldBUkRfT05MWSwNCj4g
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJldHVybmVkRW51bSk7
DQo+IC0gICAgaWYgKEZBSUxFRChocmVzKSkgew0KPiAtICAgICAgICBPdXRwdXREZWJ1Z1N0cmlu
ZygiR2V0RW51bSBmYWlsZWRcbiIpOw0KPiAtICAgICAgICByZXR1cm5lZE9iamVjdCA9TlVMTDsN
Cj4gLSAgICAgICAgcmV0dXJuIHJldHVybmVkT2JqZWN0Ow0KPiAtICAgIH0NCj4gLSAgICBVTE9O
RyBvYmplY3RzOw0KPiAtDQo+IC0gICAgaHJlcyA9IHJldHVybmVkRW51bS0+TmV4dChXQkVNX0lO
RklOSVRFLCAxLCAmcmV0dXJuZWRPYmplY3QsDQo+ICZvYmplY3RzKTsNCj4gLQ0KPiAtDQo+IC0g
ICAgaWYgKEZBSUxFRChocmVzKSB8fCBvYmplY3RzIDwgMSkgew0KPiAtICAgICAgICBPdXRwdXRE
ZWJ1Z1N0cmluZygiR2V0RnJvbUVudW0gZmFpbGVkXG4iKTsNCj4gLSAgICAgICAgcmV0dXJuZWRP
YmplY3QgPU5VTEw7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgcmV0dXJuIHJldHVybmVkT2JqZWN0
Ow0KPiAtfQ0KPiAtDQo+IC1IUkVTVUxUIG1ldGhvZEV4ZWMoV01JQWNjZXNzb3IqKiB3bWksICBJ
V2JlbUNsYXNzT2JqZWN0KiBpbnN0YW5jZSwNCj4gY29uc3Qgd2NoYXJfdCAqbWV0aG9kbmFtZSwg
SVdiZW1DbGFzc09iamVjdCAqaW5NZXRob2RJbnN0LA0KPiBJV2JlbUNsYXNzT2JqZWN0ICoqb3V0
TWV0aG9kSW5zdCkNCj4gLXsNCj4gLSAgICBIUkVTVUxUIGhyZXM9RV9GQUlMIDsNCj4gLQ0KPiAt
ICAgIElXYmVtQ2xhc3NPYmplY3QgKm91dHN0b3JlPU5VTEw7DQo+IC0gICAgQlNUUiBicGF0aG5h
bWUgPSBTeXNBbGxvY1N0cmluZyhMIl9fUEFUSCIpOw0KPiAtICAgIGlmIChicGF0aG5hbWUgPT0g
TlVMTCl7DQo+IC0gICAgICAgIGdvdG8gYWxsb2NwYXRobmFtZTsNCj4gLSAgICB9DQo+IC0NCj4g
LQ0KPiAtICAgIFZBUklBTlQgaW5zdGFuY2VwYXRoOw0KPiAtICAgIFZhcmlhbnRJbml0KCZpbnN0
YW5jZXBhdGgpOw0KPiAtICAgIGhyZXMgPSBpbnN0YW5jZS0+R2V0KGJwYXRobmFtZSwgMCwgJmlu
c3RhbmNlcGF0aCwgTlVMTCwgTlVMTCk7DQo+IC0gICAgaWYgKEZBSUxFRChocmVzKSkgew0KPiAt
ICAgICAgICBnb3RvIGdldGNsYXNzbmFtZTsNCj4gLSAgICB9DQo+IC0NCj4gLQ0KPiAtICAgIEJT
VFIgYm1ldGhvZG5hbWUgPSBTeXNBbGxvY1N0cmluZyhtZXRob2RuYW1lKTsNCj4gLSAgICBpZiAo
Ym1ldGhvZG5hbWUgPT0gTlVMTCl7DQo+IC0gICAgICAgIGdvdG8gYWxsb2NtZXRob2RuYW1lOw0K
PiAtICAgIH0NCj4gLQ0KPiAtICAgIGhyZXMgPSAoKndtaSktPm1wWFNTdmMtPkV4ZWNNZXRob2Qo
aW5zdGFuY2VwYXRoLmJzdHJWYWwsDQo+IGJtZXRob2RuYW1lLCAwLCBOVUxMLGluTWV0aG9kSW5z
dCwgJm91dHN0b3JlLCBOVUxMKTsNCj4gLSAgICBpZiAob3V0TWV0aG9kSW5zdCAhPSBOVUxMKSB7
DQo+IC0gICAgICAgICpvdXRNZXRob2RJbnN0ID0gTlVMTDsNCj4gLSAgICAgICAgaWYgKCFGQUlM
RUQoaHJlcykpew0KPiAtICAgICAgICAgICAgKm91dE1ldGhvZEluc3QgPSBvdXRzdG9yZTsNCj4g
LSAgICAgICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIFN5c0ZyZWVTdHJpbmcoYm1ldGhvZG5h
bWUpOw0KPiAtYWxsb2NtZXRob2RuYW1lOg0KPiAtDQo+IC1nZXRjbGFzc25hbWU6DQo+IC0gICAg
VmFyaWFudENsZWFyKCZpbnN0YW5jZXBhdGgpOw0KPiAtICAgIFN5c0ZyZWVTdHJpbmcoYnBhdGhu
YW1lKTsNCj4gLWFsbG9jcGF0aG5hbWU6DQo+IC0gICAgcmV0dXJuIGhyZXM7DQo+IC19DQo+IC1z
dGF0aWMgSUVudW1XYmVtQ2xhc3NPYmplY3QqIHJ1blhTUXVlcnkoV01JQWNjZXNzb3IgKip3bWks
IEJTVFINCj4gcXVlcnkpDQo+IC17DQo+IC0gICAgaWYgKHdtaSA9PSBOVUxMKQ0KPiAtICAgICAg
ICByZXR1cm4gTlVMTDsNCj4gLQ0KPiAtICAgIEFTU0VSVCgoKndtaSktPm1wWFNTdmMgIT0gTlVM
TCk7DQo+IC0NCj4gLSAgICAvLyBVc2UgdGhlIElXYmVtU2VydmljZXMgcG9pbnRlciB0byBtYWtl
IHJlcXVlc3RzIG9mIFdNSS4NCj4gLSAgICAvLyBNYWtlIHJlcXVlc3RzIGhlcmU6DQo+IC0gICAg
SUVudW1XYmVtQ2xhc3NPYmplY3QqIHBFbnVtZXJhdG9yID0gTlVMTDsNCj4gLSAgICBIUkVTVUxU
IGhyZXMgPSAoKndtaSktPm1wWFNTdmMtPkV4ZWNRdWVyeShMIldRTCIsDQo+IC0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LA0KPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXQkVNX0ZMQUdfRk9SV0FSRF9PTkxZIHwNCj4gV0JF
TV9GTEFHX1JFVFVSTl9JTU1FRElBVEVMWSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnBFbnVtZXJhdG9yKTsNCj4gLSAgICBpZiAoRkFJTEVEKGhyZXMpKQ0KPiAtICAg
IHsNCj4gLSAgICAgICAgREJHUFJJTlQoKCJFeGVjUXVlcnkgZmFpbGVkXG4iKSk7DQo+IC0gICAg
ICAgIHBFbnVtZXJhdG9yID0gTlVMTDsNCj4gLSAgICB9DQo+IC0gICAgcmV0dXJuIHBFbnVtZXJh
dG9yOw0KPiAtfQ0KPiAtc3RhdGljIElFbnVtV2JlbUNsYXNzT2JqZWN0KiBydW5RdWVyeShXTUlB
Y2Nlc3NvciAqd21pLCBCU1RSIHF1ZXJ5KQ0KPiAtew0KPiAtICAgIGlmICh3bWkgPT0gTlVMTCkN
Cj4gLSAgICAgICAgcmV0dXJuIE5VTEw7DQo+IC0NCj4gLSAgICBBU1NFUlQod21pLT5tcFN2YyAh
PSBOVUxMKTsNCj4gLQ0KPiAtICAgIC8vIFVzZSB0aGUgSVdiZW1TZXJ2aWNlcyBwb2ludGVyIHRv
IG1ha2UgcmVxdWVzdHMgb2YgV01JLg0KPiAtICAgIC8vIE1ha2UgcmVxdWVzdHMgaGVyZToNCj4g
LSAgICBJRW51bVdiZW1DbGFzc09iamVjdCogcEVudW1lcmF0b3IgPSBOVUxMOw0KPiAtICAgIEhS
RVNVTFQgaHJlcyA9IHdtaS0+bXBTdmMtPkV4ZWNRdWVyeShMIldRTCIsDQo+IC0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LA0KPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXQkVNX0ZMQUdfRk9SV0FSRF9PTkxZIHwNCj4gV0JF
TV9GTEFHX1JFVFVSTl9JTU1FRElBVEVMWSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnBFbnVtZXJhdG9yKTsNCj4gLSAgICBpZiAoRkFJTEVEKGhyZXMpKQ0KPiAtICAg
IHsNCj4gLSAgICAgICAgREJHUFJJTlQoKCJFeGVjUXVlcnkgZmFpbGVkXG4iKSk7DQo+IC0gICAg
ICAgIHBFbnVtZXJhdG9yID0gTlVMTDsNCj4gLSAgICB9DQo+IC0gICAgcmV0dXJuIHBFbnVtZXJh
dG9yOw0KPiAtfQ0KPiAtDQo+IC1MT05HIHdtaWNvdW50ID0gMDsNCj4gLXN0YXRpYyBCT09MRUFO
IGNvbV9pbml0aWFsaXplZCA9IGZhbHNlOw0KPiAtc3RhdGljIElXYmVtTG9jYXRvciAqbG9jYXRv
ciA9IDA7DQo+IC1CT09MIEluaXRDb20odm9pZCkgew0KPiAtICAgIEhSRVNVTFQgaHJlczsNCj4g
LSAgICBYc0xvZygiSW5pdCBDT00iKTsNCj4gLSAgICBocmVzID0gQ29Jbml0aWFsaXplRXgoMCwg
Q09JTklUX01VTFRJVEhSRUFERUQpOw0KPiAtICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAg
ICAgICAgZ290byBlcnJfb3V0Ow0KPiAtICAgIH0NCj4gLSAgICBjb21faW5pdGlhbGl6ZWQgPSBU
UlVFOw0KPiAtICAgIC8vd21pLT5vd25pbmdfdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOw0K
PiAtICAgIC8vWHNMb2coIldtaSBjb25uZWN0IHRocmVhZCAlcCIsIEdldEN1cnJlbnRUaHJlYWQo
KSk7DQo+IC0gICAgLy8gSW5pdGlhbGl6ZSBDT00gc2VjdXJpdHkuICBNb3N0IG9mIHRoaXMgaXMg
aXJyZWxldmFudCB0byB1cy4NCj4gLSAgICBYc0xvZygiSW5pdCBzZWN1cml0eSIpOw0KPiAtICAg
IGhyZXMgPSBDb0luaXRpYWxpemVTZWN1cml0eSgNCj4gLSAgICAgICAgTlVMTCwgICAgIC8qIFNl
Y3VyaXR5IGRlc2NyaXB0b3IuIE9ubHkgcmVsZXZhbnQgdG8gc2VydmVycyAqLw0KPiAtICAgICAg
ICAtMSwgICAgICAgLyogTnIuIG9mIGF1dGggc2VydmljZXMuIE9ubHkgcmVsZXZhbnQgdG8gc2Vy
dmVycyAqLw0KPiAtICAgICAgICBOVUxMLCAgICAgLyogTGlzdCBvZiBhdXRoIHNlcnZpY2VzLiBP
bmx5IHJlbGV2YW50IHRvIHNlcnZlcnMgKi8NCj4gLSAgICAgICAgTlVMTCwgICAgIC8qIFJlc2Vy
dmVkICovDQo+IC0gICAgICAgIFJQQ19DX0FVVEhOX0xFVkVMX0RFRkFVTFQsIC8qIERlZmF1bHQg
YXV0aGVudGljYXRpb24uICBUaGUNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXRhaWxzIGRvbid0IHJlYWxseSBtYXR0ZXIgd2hlbg0KPiAtICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSdyZSBsb2NhbGhvc3QuICovDQo+IC0gICAg
ICAgIFJQQ19DX0lNUF9MRVZFTF9JTVBFUlNPTkFURSwgLyogV01JIG5lZWRzIHRvIGJlIGFibGUg
dG8NCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBlcnNvbmF0
ZSB1cy4gKi8NCj4gLSAgICAgICAgTlVMTCwgICAgICAgICAgICAgLyogQXV0aGVudGljYXRpb24g
aW5mbyAqLw0KPiAtICAgICAgICBFT0FDX05PTkUsICAgICAgICAvKiBBZGRpdGlvbmFsIGNhcGFi
aWxpdGllcyAqLw0KPiAtICAgICAgICBOVUxMICAgICAgICAgICAgICAvKiBSZXNlcnZlZCAqLw0K
PiAtICAgICAgICApOw0KPiAtICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAgICAgICAgZ290
byBlcnJfb3V0Ow0KPiAtICAgIH0NCj4gLSAgICAgICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJD
cmVhdGVJbnN0YW5jZVxuIik7DQo+IC0gICAgICAgIGhyZXMgPSBDb0NyZWF0ZUluc3RhbmNlKA0K
PiAtICAgICAgICAgICAgQ0xTSURfV2JlbUxvY2F0b3IsDQo+IC0gICAgICAgICAgICAwLA0KPiAt
ICAgICAgICAgICAgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIsDQo+IC0gICAgICAgICAgICBJSURfSVdi
ZW1Mb2NhdG9yLA0KPiAtICAgICAgICAgICAgKExQVk9JRCAqKSAmbG9jYXRvcik7DQo+IC0gICAg
ICAgIE91dHB1dERlYnVnU3RyaW5nKCJDaGVjayBocmVzXG4iKTsNCj4gLSAgICAgICAgaWYgKEZB
SUxFRChocmVzKSkgew0KPiAtICAgICAgICAgICAgZ290byBlcnJfb3V0Ow0KPiAtICAgICAgICB9
DQo+IC0gICAgICAgIGlmIChsb2NhdG9yID09IE5VTEwpIHsNCj4gLSAgICAgICAgICAgIE91dHB1
dERlYnVnU3RyaW5nKCJOdWxsIGxvY2F0b3IiKTsNCj4gLSAgICAgICAgICAgIGdvdG8gZXJyX291
dDsNCj4gLSAgICAgICAgfQ0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAtZXJyX291dDoNCj4gLSAg
ICByZXR1cm4gZmFsc2U7DQo+IC19DQo+IC0NCj4gLUJPT0wgQ29ubmVjdFRvV01JKHZvaWQpDQo+
IC17DQo+IC0gICAgICAgIEluaXRDb20oKTsNCj4gLSAgICAgICAgSFJFU1VMVCBocmVzOw0KPiAt
ICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiQ29ubmVjdCB0byBXTUkiKTsNCj4gLSAgICAgICAg
d21pY291bnQrKzsNCj4gLQ0KPiAtICAgICAgICB3bWkgPSAoc3RydWN0IFdNSUFjY2Vzc29yICop
WHNBbGxvYyhzaXplb2YoKndtaSkpOw0KPiAtICAgICAgICBpZiAod21pID09IE5VTEwpIHsNCj4g
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBtZW1z
ZXQod21pLCAwLCBzaXplb2YoKndtaSkpOw0KPiAtDQo+IC0NCj4gLSAgICAgICAgT3V0cHV0RGVi
dWdTdHJpbmcoIkNvbm5lY3QgU2VydmVyXG4iKTsNCj4gLSAgICAgICAgdHJ5IHsNCj4gLSAgICAg
ICAgICAgIGhyZXMgPSBsb2NhdG9yLT5Db25uZWN0U2VydmVyKA0KPiAtICAgICAgICAgICAgICAg
IEwicm9vdFxcQ0lNVjIiLCAgICAgICAgICAvLyBXTUkgbmFtZXNwYWNlDQo+IC0gICAgICAgICAg
ICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgIC8vIFVzZXIgbmFtZQ0KPiAtICAgICAgICAg
ICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAvLyBVc2VyIHBhc3N3b3JkDQo+IC0gICAg
ICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgIC8vIExvY2FsZQ0KPiAtICAgICAg
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWN1cml0eSBmbGFncw0KPiAt
ICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAvLyBBdXRob3JpdHkNCj4g
LSAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgLy8gQ29udGV4dCBvYmpl
Y3QNCj4gLSAgICAgICAgICAgICAgICAmKHdtaS0+bXBTdmMpICAgICAgICAgICAgICAvLyBJV2Jl
bVNlcnZpY2VzIHByb3h5DQo+IC0gICAgICAgICAgICAgICAgKTsNCj4gLSAgICAgICAgfQ0KPiAt
ICAgICAgICBjYXRjaCguLi4pIHsNCj4gLSAgICAgICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJF
eGNlcHRpb24gY29ubmVjdGluZyB0byBzZXJ2ZXJcbiIpOw0KPiAtICAgICAgICAgICAgZ290byBl
cnJfb3V0Ow0KPiAtICAgICAgICB9DQo+IC0NCj4gLSAgICAgICAgT3V0cHV0RGVidWdTdHJpbmco
IkNoZWNrIHJlc3VsdFxuIik7DQo+IC0gICAgICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAg
ICAgICAgICAgIGdvdG8gZXJyX291dDsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICAvKiBXTUkg
bmVlZHMgdG8gaW1wZXJzb25hdGUgdXMsIGJlY2F1c2UgaXQgbm9ybWFsbHkgcnVucyBhcyBhbg0K
PiAtICAgICAgICAgICB1bnByaXZpbGVnZWQgdXNlciBhbmQgbmVlZHMgb3VyIGF1dGhvcml0eSBp
biBvcmRlciB0byBhY2Nlc3MNCj4gLSAgICAgICAgICAgZGV2aWNlIGZpbGVzIGFuZCBzbyBmb3J0
aC4gIFR1cm4gaW1wZXJzb25hdGlvbiBvbi4gKi8NCj4gLSAgICAgICAgT3V0cHV0RGVidWdTdHJp
bmcoIlByb3h5IGJsYW5rZXRcbiIpOw0KPiAtICAgICAgICBocmVzID0gQ29TZXRQcm94eUJsYW5r
ZXQoDQo+IC0gICAgICAgICAgICB3bWktPm1wU3ZjLCAgICAgICAgICAgICAgICAgIC8vIHRoZSBw
cm94eSB0byBzZXQNCj4gLSAgICAgICAgICAgIFJQQ19DX0FVVEhOX1dJTk5ULCAgICAgICAgICAg
LyogTEFOIG1hbmFnZXIgYXV0aGVudGljYXRpb24sDQo+IC0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsdGhvdWdoIGl0IGRvZXNuJ3QgcmVhbGx5DQo+IC0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHRlciBvbiBsb2NhbGhv
c3QuICovDQo+IC0gICAgICAgICAgICBSUENfQ19BVVRIWl9OT05FLCAgICAgICAgICAgIC8vIExB
Tk1BTiBjYW4ndCBkbyBtdWNoIGF1dGhvcml6YXRpb24uDQo+IC0gICAgICAgICAgICBOVUxMLCAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFNlcnZlciBwcmluY2lwYWwgbmFtZQ0KPiAtICAgICAg
ICAgICAgUlBDX0NfQVVUSE5fTEVWRUxfQ0FMTCwgICAgICAvLyBEbyBhdXRoZW50aWNhdGlvbiBv
biBldmVyeSBjYWxsDQo+IC0gICAgICAgICAgICBSUENfQ19JTVBfTEVWRUxfSU1QRVJTT05BVEUs
IC8vIEFsbG93IGZ1bGwgaW1wZXJzb25hdGlvbi4NCj4gLSAgICAgICAgICAgIE5VTEwsICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVXNlIGN1cnJlbnQgY2xpZW50IGlkZW50aXR5DQo+IC0gICAg
ICAgICAgICBFT0FDX05PTkUgICAgICAgICAgICAgICAgICAgIC8vIE5vIGV4dGVuZGVkIHByb3h5
IGNhcGFiaWxpdGllcw0KPiAtICAgICAgICApOw0KPiAtICAgICAgICBpZiAoRkFJTEVEKGhyZXMp
KSB7DQo+IC0gICAgICAgICAgICBnb3RvIGVycl9vdXQ7DQo+IC0gICAgICAgIH0NCj4gLSAgICAg
ICAgT3V0cHV0RGVidWdTdHJpbmcoIldNSSBTZXJ2ZXJcbiIpOw0KPiAtICAgICAgICBocmVzID0g
bG9jYXRvci0+Q29ubmVjdFNlcnZlcigNCj4gLSAgICAgICAgICAgIEwicm9vdFxcV01JIiwgICAg
ICAgICAgLy8gV01JIG5hbWVzcGFjZQ0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgIC8vIFVzZXIgbmFtZQ0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAg
ICAgIC8vIFVzZXIgcGFzc3dvcmQNCj4gLSAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAvLyBMb2NhbGUNCj4gLSAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAv
LyBTZWN1cml0eSBmbGFncw0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAg
IC8vIEF1dGhvcml0eQ0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgIC8v
IENvbnRleHQgb2JqZWN0DQo+IC0gICAgICAgICAgICAmd21pLT5tcFhTU3ZjICAgICAgICAgICAg
ICAvLyBJV2JlbVNlcnZpY2VzIHByb3h5DQo+IC0gICAgICAgICAgICApOw0KPiAtDQo+IC0gICAg
ICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAgICAgICAgICAgIGdvdG8gZXJyX291dDsNCj4g
LSAgICAgICAgfQ0KPiAtICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiSW1wZXJzb25hdGlvblxu
Iik7DQo+IC0gICAgICAgIC8qIFdNSSBuZWVkcyB0byBpbXBlcnNvbmF0ZSB1cywgYmVjYXVzZSBp
dCBub3JtYWxseSBydW5zIGFzIGFuDQo+IC0gICAgICAgICAgIHVucHJpdmlsZWdlZCB1c2VyIGFu
ZCBuZWVkcyBvdXIgYXV0aG9yaXR5IGluIG9yZGVyIHRvIGFjY2Vzcw0KPiAtICAgICAgICAgICBk
ZXZpY2UgZmlsZXMgYW5kIHNvIGZvcnRoLiAgVHVybiBpbXBlcnNvbmF0aW9uIG9uLiAqLw0KPiAt
ICAgICAgICBocmVzID0gQ29TZXRQcm94eUJsYW5rZXQoDQo+IC0gICAgICAgICAgICB3bWktPm1w
WFNTdmMsICAgICAgICAgICAgICAgICAgLy8gdGhlIHByb3h5IHRvIHNldA0KPiAtICAgICAgICAg
ICAgUlBDX0NfQVVUSE5fV0lOTlQsICAgICAgICAgICAvKiBMQU4gbWFuYWdlciBhdXRoZW50aWNh
dGlvbiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0
aG91Z2ggaXQgZG9lc24ndCByZWFsbHkNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0dGVyIG9uIGxvY2FsaG9zdC4gKi8NCj4gLSAgICAgICAgICAgIFJQ
Q19DX0FVVEhaX05PTkUsICAgICAgICAgICAgLy8gTEFOTUFOIGNhbid0IGRvIG11Y2ggYXV0aG9y
aXphdGlvbi4NCj4gLSAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U2VydmVyIHByaW5jaXBhbCBuYW1lDQo+IC0gICAgICAgICAgICBSUENfQ19BVVRITl9MRVZFTF9D
QUxMLCAgICAgIC8vIERvIGF1dGhlbnRpY2F0aW9uIG9uIGV2ZXJ5IGNhbGwNCj4gLSAgICAgICAg
ICAgIFJQQ19DX0lNUF9MRVZFTF9JTVBFUlNPTkFURSwgLy8gQWxsb3cgZnVsbCBpbXBlcnNvbmF0
aW9uLg0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2Ug
Y3VycmVudCBjbGllbnQgaWRlbnRpdHkNCj4gLSAgICAgICAgICAgIEVPQUNfTk9ORSAgICAgICAg
ICAgICAgICAgICAgLy8gTm8gZXh0ZW5kZWQgcHJveHkgY2FwYWJpbGl0aWVzDQo+IC0gICAgICAg
ICk7DQo+IC0gICAgICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAgICAgICAgICAgIGdvdG8g
ZXJyX291dDsNCj4gLSAgICAgICAgfQ0KPiAtDQo+IC0NCj4gLSAgICBPdXRwdXREZWJ1Z1N0cmlu
ZygiV21pIGNvbm5lY3RlZFxuIik7DQo+IC0gICAgLyogQWxsIGRvbmUuICovDQo+IC0gICAgcmV0
dXJuIHRydWU7DQo+IC0NCj4gLWVycl9vdXQ6DQo+IC0gICAgT3V0cHV0RGVidWdTdHJpbmcoIldN
SSBjb25uZWN0aW9uIGZhaWxlZFxuIik7DQo+IC0gICAgUmVsZWFzZVdNSUFjY2Vzc29yKCZ3bWkp
Ow0KPiAtICAgIHJldHVybiBmYWxzZTsNCj4gLX0NCj4gLQ0KPiAtDQo+IC12b2lkIFJlbGVhc2VD
b20odm9pZCkgew0KPiAtDQo+IC0gICAgaWYgKGNvbV9pbml0aWFsaXplZCkgew0KPiAtICAgICAg
ICBPdXRwdXREZWJ1Z1N0cmluZygiUmVsZWFzZSBsb2NhdG9yXG4iKTsNCj4gLSAgICAgICAgbG9j
YXRvci0+UmVsZWFzZSgpOw0KPiAtICAgICAgICAvL1hzTG9nKCJXbWkgZGlzY29ubmVjdCB0aHJl
YWQgJXAiLCBHZXRDdXJyZW50VGhyZWFkKCkpOw0KPiAtICAgICAgICAvL0FTU0VSVCgoKndtaSkt
Pm93bmluZ190aHJlYWQgPT0gR2V0Q3VycmVudFRocmVhZCgpKTsNCj4gLSAgICAgICAgY29tX2lu
aXRpYWxpemVkID0gMDsNCj4gLSAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIlVuaW5pdGlhbGl6
ZSBjb21cbiIpOw0KPiAtICAgICAgICBDb1VuaW5pdGlhbGl6ZSgpOw0KPiAtDQo+IC0gICAgfQ0K
PiAtfQ0KPiAtDQo+IC0vKiBDYXJlZnVsOiBXTUkgYWNjZXNzb3JzIG11c3QgYmUgcmVsZWFzZWQg
b24gdGhlIHNhbWUgdGhyZWFkIHRoYXQNCj4gLSAgIGFsbG9jYXRlZCB0aGVtLiAqLw0KPiAtdm9p
ZCBSZWxlYXNlV01JQWNjZXNzb3Ioc3RydWN0IFdNSUFjY2Vzc29yICoqd21pKQ0KPiAtew0KPiAt
ICAgIE91dHB1dERlYnVnU3RyaW5nKCJTaG91bGQgSSByZWxlYXNlIHdtaT9cbiIpOw0KPiAtICAg
IGlmICgqd21pID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybjsNCj4gLSAgICBPdXRwdXREZWJ1
Z1N0cmluZygiR2V0IHJpZCBvZiBXTUkgc2VydmVyc1xuIik7DQo+IC0gICAgaWYgKCgqd21pKS0+
bXBYU1N2YyAhPSBOVUxMKQ0KPiAtICAgICAgICAoKndtaSktPm1wWFNTdmMtPlJlbGVhc2UoKTsN
Cj4gLSAgICBpZiAoKCp3bWkpLT5tcFN2YyAhPSBOVUxMKQ0KPiAtICAgICAgICAoKndtaSktPm1w
U3ZjLT5SZWxlYXNlKCk7DQo+IC0gICAgT3V0cHV0RGVidWdTdHJpbmcoIkNsZWFyIFdtSVxuIik7
DQo+IC0gICAgLyogUG9pc29uIHdtaSB0byBtYWtlIHVzZS1hZnRlci1mcmVlKClzIGEgYml0IG1v
cmUgb2J2aW91cy4gKi8NCj4gLSAgICBtZW1zZXQoKCp3bWkpLCAweGFiLCBzaXplb2YoKip3bWkp
KTsNCj4gLSAgICBYc0ZyZWUoKndtaSk7DQo+IC0gICAgKndtaSA9IE5VTEw7DQo+IC0gICAgUmVs
ZWFzZUNvbSgpOw0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKCJSZWxlYXNlZCBXTUlcbiIpOw0K
PiAtfQ0KPiAtDQo+IC0vKiBUaGUgZmFjdCB0aGF0IHNvbWV0aGluZyBpcyBkb2N1bWVudGVkIGFz
IGJlaW5nIGEgdWludDY0X3QgZmllbGQNCj4gLSAgIGRvZXNuJ3QgaW1wbHkgdGhhdCBpdCB3aWxs
IGJlIHJldHVybmVkIGFzIGEgVlRfVUk4IGZpZWxkIGluIGENCj4gLSAgIHZhcmlhbnQgc3RydWN0
dXJlLiAgV29yayBhcm91bmQgdGhpcyB3aXRoIGEgaGFuZHkgY29udmVyc2lvbg0KPiAtICAgZnVu
Y3Rpb24uICovDQo+IC1zdGF0aWMgdWludDY0X3QNCj4gLUdldFZhcmlhbnRVaW50NjQoVkFSSUFO
VCAqdnREYXRhKQ0KPiAtew0KPiAtICAgIHN3aXRjaCAodnREYXRhLT52dCkgew0KPiAtICAgIGNh
c2UgVlRfSTI6DQo+IC0gICAgICAgIHJldHVybiB2dERhdGEtPmlWYWw7DQo+IC0gICAgY2FzZSBW
VF9JNDoNCj4gLSAgICAgICAgcmV0dXJuIHZ0RGF0YS0+bFZhbDsNCj4gLSAgICBjYXNlIFZUX0k4
Og0KPiAtICAgICAgICByZXR1cm4gdnREYXRhLT5sbFZhbDsNCj4gLSAgICBjYXNlIFZUX1VJMjoN
Cj4gLSAgICAgICAgcmV0dXJuIHZ0RGF0YS0+dWlWYWw7DQo+IC0gICAgY2FzZSBWVF9VSTQ6DQo+
IC0gICAgICAgIHJldHVybiB2dERhdGEtPnVsVmFsOw0KPiAtICAgIGNhc2UgVlRfVUk4Og0KPiAt
ICAgICAgICByZXR1cm4gdnREYXRhLT51bGxWYWw7DQo+IC0gICAgY2FzZSBWVF9CU1RSOg0KPiAt
ICAgICAgICAvKiBZZXMsIEkgcmVhbGx5IGRvIG1lYW4gQlNUUjogWFAgcmV0dXJucyA2NCBiaXQg
dmFsdWVzIGFzDQo+IC0gICAgICAgICAgIHN0cmluZ3MsIGFuZCB3ZSB0aGVuIGhhdmUgdG8gZG8g
YXRvaWxsIG9uIGl0LiAqLw0KPiAtICAgICAgICByZXR1cm4gX3d0b2k2NCh2dERhdGEtPmJzdHJW
YWwpOw0KPiAtICAgIGRlZmF1bHQ6DQo+IC0gICAgICAgIERCR1BSSU5UKCgiQmFkIHVpbnQ2NF90
IHZhcmlhbnQgJWQuXG4iLHZ0RGF0YS0+dnQpKTsNCj4gLSAgICAgICAgcmV0dXJuIC0xOw0KPiAt
ICAgIH0NCj4gLX0NCj4gLQ0KPiAtc3RhdGljIEhSRVNVTFQNCj4gLVF1ZXJ5VmFyaWFudChXTUlB
Y2Nlc3NvciAqd21pLCBQV0NIQVIgZmllbGQsIFBXQ0hBUiB0YWJsZSwgVkFSSUFOVA0KPiAqdnQp
DQo+IC17DQo+IC0gICAgSUVudW1XYmVtQ2xhc3NPYmplY3QgKnBFbnVtOw0KPiAtICAgIEJTVFIg
cXVlcnk7DQo+IC0gICAgc2l6ZV90IHF1ZXJ5X2xlbjsNCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0
ICpwY2xzT2JqOw0KPiAtICAgIEhSRVNVTFQgaHI7DQo+IC0gICAgVUxPTkcgdVJldHVybjsNCj4g
LQ0KPiAtICAgIHF1ZXJ5X2xlbiA9IHN0cmxlbigiU0VMRUNUICBGUk9NICIpICsgd2NzbGVuKGZp
ZWxkKSArIHdjc2xlbih0YWJsZSkgKyAxOw0KPiAtICAgIHF1ZXJ5ID0gU3lzQWxsb2NTdHJpbmdM
ZW4oTlVMTCwgKFVJTlQpcXVlcnlfbGVuKTsNCj4gLSAgICBpZiAocXVlcnkgPT0gTlVMTCkgew0K
PiAtICAgICAgICBociA9IEVfT1VUT0ZNRU1PUlk7DQo+IC0gICAgICAgIGdvdG8gZXJyOw0KPiAt
ICAgIH0NCj4gLSAgICBzd3ByaW50Zl9zKHF1ZXJ5LCBxdWVyeV9sZW4sIEwiU0VMRUNUICVzIEZS
T00gJXMiLCBmaWVsZCwgdGFibGUpOw0KPiAtICAgIHBFbnVtID0gcnVuUXVlcnkod21pLCBxdWVy
eSk7DQo+IC0gICAgU3lzRnJlZVN0cmluZyhxdWVyeSk7DQo+IC0NCj4gLSAgICBpZiAocEVudW0g
PT0gTlVMTCkgew0KPiAtICAgICAgICBociA9IEVfT1VUT0ZNRU1PUlk7DQo+IC0gICAgICAgIGdv
dG8gZXJyOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIGhyID0gcEVudW0tPk5leHQoV0JFTV9JTkZJ
TklURSwgMSwgJnBjbHNPYmosICZ1UmV0dXJuKTsNCj4gLSAgICBwRW51bS0+UmVsZWFzZSgpOw0K
PiAtICAgIGlmIChGQUlMRUQoaHIpKQ0KPiAtICAgICAgICBnb3RvIGVycjsNCj4gLSAgICBpZiAo
dVJldHVybiA9PSAwKSB7DQo+IC0gICAgICAgIGhyID0gRV9GQUlMOw0KPiAtICAgICAgICBnb3Rv
IGVycjsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBociA9IHBjbHNPYmotPkdldChmaWVsZCwgMCwg
dnQsIE5VTEwsIE5VTEwpOw0KPiAtICAgIHBjbHNPYmotPlJlbGVhc2UoKTsNCj4gLQ0KPiAtICAg
IHJldHVybiBocjsNCj4gLQ0KPiAtZXJyOg0KPiAtICAgIHJldHVybiBocjsNCj4gLX0NCj4gLQ0K
PiAtc3RhdGljIHVpbnQ2NF90DQo+IC1RdWVyeVVpbnQ2NChXTUlBY2Nlc3NvciAqd21pLCBQV0NI
QVIgZmllbGQsIFBXQ0hBUiB0YWJsZSkNCj4gLXsNCj4gLSAgICBIUkVTVUxUIGhyOw0KPiAtICAg
IHVpbnQ2NF90IHJlczsNCj4gLSAgICBWQVJJQU5UIHZ0Ow0KPiAtDQo+IC0gICAgbWVtc2V0KCZ2
dCwgMCwgc2l6ZW9mKHZ0KSk7DQo+IC0NCj4gLSAgICBociA9IFF1ZXJ5VmFyaWFudCh3bWksIGZp
ZWxkLCB0YWJsZSwgJnZ0KTsNCj4gLSAgICBpZiAoRkFJTEVEKGhyKSkNCj4gLSAgICAgICAgcmV0
dXJuIDA7DQo+IC0NCj4gLSAgICByZXMgPSBHZXRWYXJpYW50VWludDY0KCZ2dCk7DQo+IC0gICAg
VmFyaWFudENsZWFyKCZ2dCk7DQo+IC0gICAgcmV0dXJuIHJlczsNCj4gLX0NCj4gLQ0KPiAtc3Rh
dGljIEJTVFINCj4gLVF1ZXJ5QnN0cihXTUlBY2Nlc3NvciAqd21pLCBQV0NIQVIgZmllbGQsIFBX
Q0hBUiB0YWJsZSkNCj4gLXsNCj4gLSAgICBIUkVTVUxUIGhyOw0KPiAtICAgIFZBUklBTlQgdnQ7
DQo+IC0NCj4gLSAgICBtZW1zZXQoJnZ0LCAwLCBzaXplb2YodnQpKTsNCj4gLQ0KPiAtICAgIGhy
ID0gUXVlcnlWYXJpYW50KHdtaSwgZmllbGQsIHRhYmxlLCAmdnQpOw0KPiAtICAgIGlmIChGQUlM
RUQoaHIpKQ0KPiAtICAgICAgICByZXR1cm4gTlVMTDsNCj4gLSAgICBpZiAodnQudnQgIT0gVlRf
QlNUUikgew0KPiAtICAgICAgICBWYXJpYW50Q2xlYXIoJnZ0KTsNCj4gLSAgICAgICAgcmV0dXJu
IE5VTEw7DQo+IC0gICAgfQ0KPiAtICAgIHJldHVybiB2dC5ic3RyVmFsOw0KPiAtfQ0KPiAtDQo+
IC0NCj4gLQ0KPiAtLyogaGFzaCBjb21wYXJhdG9yIGZvciBzdHJpbmdzIHdoaWNoIHN0cmlwcyBv
ZmYgdHJhaWxpbmcgLmV4ZQ0KPiAtICogc3VmZml4ICovDQo+IC1jbGFzcyBzdHJpbmdfZXFfZXhl
IHsNCj4gLXByaXZhdGU6DQo+IC0gICAgc3RhdGljIHNpemVfdCBsZW5fd2l0aG91dF9zdWZmaXgo
Y29uc3QgY2hhciAqeCkNCj4gLSAgICB7DQo+IC0gICAgICAgIHNpemVfdCBsOw0KPiAtICAgICAg
ICBsID0gc3RybGVuKHgpOw0KPiAtICAgICAgICBpZiAobCA+IDQgJiYgIXN0cmNtcCh4ICsgbCAt
IDQsICIuZXhlIikpDQo+IC0gICAgICAgICAgICBsIC09IDQ7DQo+IC0gICAgICAgIHJldHVybiBs
Ow0KPiAtICAgIH0NCj4gLQ0KPiAtcHVibGljOg0KPiAtICAgIGVudW0ge2J1Y2tldF9zaXplID0g
NCwgbWluX2J1Y2tldHMgPSA4fTsNCj4gLSAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qgc3RyaW5n
ICZhLCBjb25zdCBzdHJpbmcgJmIpIGNvbnN0DQo+IC0gICAgew0KPiAtICAgICAgICBjb25zdCBj
aGFyICphX2MsICpiX2M7DQo+IC0gICAgICAgIHNpemVfdCBhX2wsIGJfbDsNCj4gLSAgICAgICAg
YV9jID0gYS5jX3N0cigpOw0KPiAtICAgICAgICBiX2MgPSBiLmNfc3RyKCk7DQo+IC0gICAgICAg
IGFfbCA9IGxlbl93aXRob3V0X3N1ZmZpeChhX2MpOw0KPiAtICAgICAgICBiX2wgPSBsZW5fd2l0
aG91dF9zdWZmaXgoYl9jKTsNCj4gLQ0KPiAtICAgICAgICBpZiAoYV9sICE9IGJfbCkNCj4gLSAg
ICAgICAgICAgIHJldHVybiAxOw0KPiAtICAgICAgICBpZiAobWVtY21wKGFfYywgYl9jLCBhX2wp
KQ0KPiAtICAgICAgICAgICAgcmV0dXJuIDE7DQo+IC0gICAgICAgIGVsc2UNCj4gLSAgICAgICAg
ICAgIHJldHVybiAwOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIHNpemVfdCBvcGVyYXRvcigpKGNv
bnN0IHN0cmluZyAmYSkgY29uc3QNCj4gLSAgICB7DQo+IC0gICAgICAgIHNpemVfdCBhY2MgPSAw
Ow0KPiAtICAgICAgICBjb25zdCBjaGFyICpjX3N0ciA9IGEuY19zdHIoKTsNCj4gLSAgICAgICAg
c2l6ZV90IGxlbiA9IGxlbl93aXRob3V0X3N1ZmZpeChjX3N0cik7DQo+IC0gICAgICAgIHVuc2ln
bmVkIHg7DQo+IC0gICAgICAgIGZvciAoeCA9IDA7IHggPCBsZW47IHgrKykNCj4gLSAgICAgICAg
ICAgIGFjYyA9IChhY2MgKiAxNyArIGNfc3RyW3hdKSAlIDI1NzsNCj4gLSAgICAgICAgcmV0dXJu
IGFjYzsNCj4gLSAgICB9DQo+IC19Ow0KPiAtDQo+IC0NCj4gLUlXYmVtQ2xhc3NPYmplY3QgKmdl
dEJhc2UoV01JQWNjZXNzb3IqKiB3bWkpDQo+IC17DQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCog
YmFzZSA9IGdldE9iamVjdCh3bWksIE9CSkVDVF9OQU1FX1coQmFzZSkpOw0KPiAtICAgIGlmIChi
YXNlID09IE5VTEwpIHsNCj4gLSAgICAgICAgKndtaSA9IE5VTEw7DQo+IC0gICAgICAgIHJldHVy
biBOVUxMOw0KPiAtICAgIH0NCj4gLSAgICByZXR1cm4gYmFzZTsNCj4gLX0NCj4gLQ0KPiAtSVdi
ZW1DbGFzc09iamVjdCAqZ2V0QmFzZUNsYXNzKFdNSUFjY2Vzc29yKiogd21pKQ0KPiAtew0KPiAt
ICAgIElXYmVtQ2xhc3NPYmplY3QqIGJhc2VjbGFzcyA9IGdldENsYXNzKHdtaSwgT0JKRUNUX05B
TUVfVyhCYXNlKSk7DQo+IC0gICAgaWYgKGJhc2VjbGFzcyA9PSBOVUxMKSB7DQo+IC0gICAgICAg
ICp3bWkgPSBOVUxMOw0KPiAtICAgICAgICByZXR1cm4gTlVMTDsNCj4gLSAgICB9DQo+IC0gICAg
cmV0dXJuIGJhc2VjbGFzczsNCj4gLX0NCj4gLQ0KPiAtVUxPTkdMT05HIGdldDY0Qml0VW5zaWdu
ZWQoVkFSSUFOVCAqdmFyKSB7DQo+IC0gICAgVUxPTkdMT05HIHJlcyA9IDA7DQo+IC0gICAgc3dp
dGNoICh2YXItPnZ0KSB7DQo+IC0gICAgICAgIGNhc2UgVlRfQlNUUjogew0KPiAtICAgICAgICAg
ICAgICAgIFZBUklBTlQgb3V0dmFyOw0KPiAtICAgICAgICAgICAgICAgIFZhcmlhbnRJbml0KCZv
dXR2YXIpOw0KPiAtICAgICAgICAgICAgICAgIFZhcmlhbnRDaGFuZ2VUeXBlKCZvdXR2YXIsIHZh
ciwgMCwgVlRfVUk4KTsNCj4gLSAgICAgICAgICAgICAgICByZXMgPSBvdXR2YXIudWxsVmFsOw0K
PiAtICAgICAgICAgICAgICAgIFZhcmlhbnRDbGVhcigmb3V0dmFyKTsNCj4gLSAgICAgICAgICAg
IH0NCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiAtICAgICAgICBjYXNlIFZUX1VJODogew0KPiAt
ICAgICAgICAgICAgICAgIHJlcyA9IHZhci0+dWxsVmFsOw0KPiAtICAgICAgICAgICAgfQ0KPiAt
ICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgfQ0KPiAtICAgIHJldHVybiByZXM7DQo+IC19DQo+
IC0NCj4gLUZJTEVUSU1FIFdtaUdldFhlblRpbWUoV01JQWNjZXNzb3IgKip3bWkpIHsNCj4gLSAg
ICAgRklMRVRJTUUgb3V0Ow0KPiAtDQo+IC0gICAgIElXYmVtQ2xhc3NPYmplY3QgKmJhc2UgPSBn
ZXRCYXNlKHdtaSk7DQo+IC0gICAgIGlmIChiYXNlID09IE5VTEwpIHsNCj4gLSAgICAgICAgIERC
R1BSSU5UKCgiVW5hYmxlIHRvIGZpbmQgYmFzZSBXTUkgc2Vzc2lvblxuIikpOw0KPiAtICAgICAg
ICAgZ290byBnZXRiYXNlZmFpbGVkOw0KPiAtICAgICB9DQo+IC0NCj4gLSAgICAgVkFSSUFOVCB0
aW1ldmFyOw0KPiAtICAgICBCU1RSIHRpbWVuYW1lID0gbWtCc3RyKCJYZW5UaW1lIiwgNyk7DQo+
IC0gICAgIGlmICh0aW1lbmFtZSA9PSBOVUxMKQ0KPiAtICAgICAgICAgZ290byBidWlsZHRpbWVu
YW1lZmFpbGVkOw0KPiAtDQo+IC0NCj4gLQ0KPiAtICAgICBpZiAoRkFJTEVEKGJhc2UtPkdldCh0
aW1lbmFtZSwgMCwgJnRpbWV2YXIsIE5VTEwsIE5VTEwpKSkNCj4gLSAgICAgICAgIGdvdG8gZ2V0
dGltZWZhaWxlZDsNCj4gLQ0KPiAtICAgICBVTE9OR0xPTkcgdGltZSA9Z2V0NjRCaXRVbnNpZ25l
ZCgmdGltZXZhcik7Ow0KPiAtDQo+IC0gICAgIG91dC5kd0xvd0RhdGVUaW1lID0gKERXT1JEKXRp
bWU7DQo+IC0gICAgIG91dC5kd0hpZ2hEYXRlVGltZSA9IChEV09SRCkodGltZT4+MzIpOw0KPiAt
ICAgICByZXR1cm4gb3V0Ow0KPiAtDQo+IC1nZXR0aW1lZmFpbGVkOg0KPiAtYnVpbGR0aW1lbmFt
ZWZhaWxlZDoNCj4gLWdldGJhc2VmYWlsZWQ6DQo+IC0gICAgIG91dC5kd0xvd0RhdGVUaW1lID0g
MDsNCj4gLSAgICAgb3V0LmR3SGlnaERhdGVUaW1lID0gMDsNCj4gLSAgICAgcmV0dXJuIG91dCA7
DQo+IC19DQo+IC0NCj4gLUlXYmVtQ2xhc3NPYmplY3QgKm9wZW5TZXNzaW9uKFdNSUFjY2Vzc29y
Kiogd21pLCBjb25zdCBjaGFyDQo+ICpzZXNzaW9ubmFtZSkNCj4gLXsNCj4gLSAgICBIUkVTVUxU
IGhyZXM7DQo+IC0NCj4gLSAgICBCU1RSIHF1ZXJ5ID0gZm9ybWF0QnN0cigiU0VMRUNUICogRlJP
TSAiIE9CSkVDVF9OQU1FX0EoU2Vzc2lvbikgIg0KPiBXSEVSRSBJZD1cIiIgT0JKRUNUX1BSRUZJ
WF9TVFIgIiBYZW4gV2luMzIgU2VydmljZSA6ICVzXCIiLA0KPiBzZXNzaW9ubmFtZSk7DQo+IC0g
ICAgaWYgKHF1ZXJ5ID09IE5VTEwpDQo+IC0gICAgICAgIGdvdG8gZm9ybWF0c2Vzc2lvbmJzdHJm
YWlsZWQ7DQo+IC0NCj4gLSAgICBJRW51bVdiZW1DbGFzc09iamVjdCAqIHNlc3Npb25zID0gcnVu
WFNRdWVyeSh3bWksIHF1ZXJ5KTsNCj4gLSAgICBTeXNGcmVlU3RyaW5nKHF1ZXJ5KTsNCj4gLQ0K
PiAtICAgIGlmIChzZXNzaW9ucykgew0KPiAtICAgICAgICBJV2JlbUNsYXNzT2JqZWN0ICpyZXR1
cm5lZE9iamVjdDsNCj4gLSAgICAgICAgVUxPTkcgY291bnQ7DQo+IC0gICAgICAgIGhyZXMgPSBz
ZXNzaW9ucy0+TmV4dChXQkVNX0lORklOSVRFLCAxLCAmcmV0dXJuZWRPYmplY3QsICZjb3VudCk7
DQo+IC0gICAgICAgIHNlc3Npb25zLT5SZWxlYXNlKCk7DQo+IC0NCj4gLSAgICAgICAgaWYgKGNv
dW50PjApIHsNCj4gLSAgICAgICAgICAgIGlmIChzZXNzaW9ubmFtZSAhPU5VTEwgKSB7DQo+IC0g
ICAgICAgICAgICAgICAgaWYgKCFXbWlTZXNzaW9uRW5kKHdtaSwgcmV0dXJuZWRPYmplY3QpKSB7
DQo+IC0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiAtICAgICAgICAgICAgICAg
IH0NCj4gLSAgICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgIGVsc2Ugew0KPiAtICAgICAgICAg
ICAgICAgIHJldHVybiByZXR1cm5lZE9iamVjdDsNCj4gLSAgICAgICAgICAgIH0NCj4gLSAgICAg
ICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKmJhc2UgPSBnZXRC
YXNlKHdtaSk7DQo+IC0gICAgaWYgKGJhc2U9PU5VTEwpIHsNCj4gLSAgICAgICAgREJHUFJJTlQo
KCJVbmFibGUgdG8gZmluZCBiYXNlIFdNSSBzZXNzaW9uXG4iKSk7DQo+IC0gICAgICAgIGdvdG8g
Z2V0YmFzZWZhaWxlZDsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICpi
YXNlY2xhc3MgPSBnZXRCYXNlQ2xhc3Mod21pKTsNCj4gLQ0KPiAtICAgIGlmIChiYXNlY2xhc3Mg
PT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBnZXRiYXNlY2xhc3NmYWlsZWQ7DQo+IC0NCj4gLSAg
ICBJV2JlbUNsYXNzT2JqZWN0ICppbk1ldGhvZDsNCj4gLQ0KPiAtICAgIElXYmVtQ2xhc3NPYmpl
Y3QgKmluTWV0aG9kSW5zdDsNCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICpvdXRNZXRob2RJbnN0
Ow0KPiAtICAgIGlmIChGQUlMRUQoYmFzZWNsYXNzLT5HZXRNZXRob2QoTCJBZGRTZXNzaW9uIiww
LCZpbk1ldGhvZCwgTlVMTCkpKQ0KPiAtICAgICAgICBnb3RvIGdldG1ldGhvZGFkZHNlc3Npb25m
YWlsZWQ7DQo+IC0NCj4gLSAgICBpZiAoRkFJTEVEKGluTWV0aG9kLT5TcGF3bkluc3RhbmNlKDAs
ICZpbk1ldGhvZEluc3QpKSkNCj4gLSAgICAgICAgZ290byBpbm1ldGhvZHNwYXduZmFpbGVkOw0K
PiAtDQo+IC0gICAgVkFSSUFOVCB2YXI7DQo+IC0gICAgdmFyLnZ0ID0gVlRfQlNUUjsNCj4gLSAg
ICB2YXIuYnN0clZhbD1mb3JtYXRCc3RyKFZFTkRPUl9OQU1FX1NUUiAiICIgUFJPRFVDVF9OQU1F
X1NUUiAiDQo+IFdpbjMyIFNlcnZpY2UgOiAlcyIsIHNlc3Npb25uYW1lKTsNCj4gLQ0KPiAtICAg
IGlmICh2YXIuYnN0clZhbCA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIGZvcm1hdG5hbWVic3Ry
ZmFpbGVkOw0KPiAtDQo+IC0gICAgaWYgKEZBSUxFRChpbk1ldGhvZEluc3QtPlB1dChMIklkIiwg
MCwgJnZhciwgMCkpKQ0KPiAtICAgICAgICBnb3RvIG1ldGhvZHB1dGZhaWxlZDsNCj4gLQ0KPiAt
ICAgIGlmIChGQUlMRUQobWV0aG9kRXhlYyh3bWksIGJhc2UsIEwiQWRkU2Vzc2lvbiIsIGluTWV0
aG9kSW5zdCwNCj4gJm91dE1ldGhvZEluc3QpKSkNCj4gLSAgICAgICAgZ290byBtZXRob2RleGVj
YWRkc2Vzc2lvbmZhaWxlZDsNCj4gLQ0KPiAtICAgIGlmIChGQUlMRUQob3V0TWV0aG9kSW5zdC0+
R2V0KEwiU2Vzc2lvbklkIiwgMCwgJnZhciwgTlVMTCwgTlVMTCkpKQ0KPiAtICAgICAgICBnb3Rv
IG91dG1ldGhvZGdldGZhaWxlZDsNCj4gLQ0KPiAtICAgIHNpemVfdCBxdWVyeV9sZW47DQo+IC0g
ICAgcXVlcnlfbGVuID0gc3RybGVuKCJTRUxFQ1QgKiBGUk9NICIgT0JKRUNUX05BTUVfQShTZXNz
aW9uKSAiIFdIRVJFDQo+IFNlc3Npb25JZD0iKSsxMDsNCj4gLSAgICBxdWVyeSA9IFN5c0FsbG9j
U3RyaW5nTGVuKE5VTEwsIChVSU5UKXF1ZXJ5X2xlbik7DQo+IC0NCj4gLSAgICBpZiAocXVlcnkg
PT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBhbGxvY3F1ZXJ5ZmFpbGVkOw0KPiAtDQo+IC0gICAg
c3dwcmludGZfcyhxdWVyeSxxdWVyeV9sZW4sIEwiU0VMRUNUICogRlJPTSAiDQo+IE9CSkVDVF9O
QU1FX1coU2Vzc2lvbikgTCIgV0hFUkUgU2Vzc2lvbklkPSVkIiwgdmFyLnVpbnRWYWwpOw0KPiAt
DQo+IC0gICAgc2Vzc2lvbnMgPSBydW5YU1F1ZXJ5KHdtaSwgcXVlcnkgKTsNCj4gLSAgICBTeXNG
cmVlU3RyaW5nKHF1ZXJ5KTsNCj4gLQ0KPiAtICAgIGlmIChzZXNzaW9ucykgew0KPiAtICAgICAg
ICBJV2JlbUNsYXNzT2JqZWN0ICpyZXR1cm5lZE9iamVjdDsNCj4gLSAgICAgICAgVUxPTkcgY291
bnQ7DQo+IC0gICAgICAgIGhyZXMgPSBzZXNzaW9ucy0+TmV4dChXQkVNX0lORklOSVRFLCAxLCAm
cmV0dXJuZWRPYmplY3QsICZjb3VudCk7DQo+IC0gICAgICAgIHNlc3Npb25zLT5SZWxlYXNlKCk7
DQo+IC0gICAgICAgIGlmIChjb3VudD4wKSB7DQo+IC0gICAgICAgICAgICByZXR1cm4gcmV0dXJu
ZWRPYmplY3Q7DQo+IC0gICAgICAgIH0NCj4gLQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIG91dE1l
dGhvZEluc3QtPlJlbGVhc2UoKTsNCj4gLSAgICBWYXJpYW50Q2xlYXIoJnZhcik7DQo+IC0gICAg
aW5NZXRob2RJbnN0LT5SZWxlYXNlKCk7DQo+IC0gICAgaW5NZXRob2QtPlJlbGVhc2UoKTsNCj4g
LSAgICBiYXNlLT5SZWxlYXNlKCk7DQo+IC0gICAgYmFzZWNsYXNzLT5SZWxlYXNlKCk7DQo+IC0g
ICAgcmV0dXJuIE5VTEw7DQo+IC0NCj4gLWFsbG9jcXVlcnlmYWlsZWQ6DQo+IC1vdXRtZXRob2Rn
ZXRmYWlsZWQ6DQo+IC0gICAgb3V0TWV0aG9kSW5zdC0+UmVsZWFzZSgpOw0KPiAtDQo+IC1tZXRo
b2RleGVjYWRkc2Vzc2lvbmZhaWxlZDoNCj4gLW1ldGhvZHB1dGZhaWxlZDoNCj4gLSAgICBWYXJp
YW50Q2xlYXIoJnZhcik7DQo+IC0NCj4gLWZvcm1hdG5hbWVic3RyZmFpbGVkOg0KPiAtICAgIGlu
TWV0aG9kSW5zdC0+UmVsZWFzZSgpOw0KPiAtaW5tZXRob2RzcGF3bmZhaWxlZDoNCj4gLSAgICBp
bk1ldGhvZC0+UmVsZWFzZSgpOw0KPiAtDQo+IC0NCj4gLWdldG1ldGhvZGFkZHNlc3Npb25mYWls
ZWQ6DQo+IC0gICAgYmFzZWNsYXNzLT5SZWxlYXNlKCk7DQo+IC0NCj4gLWdldGJhc2VjbGFzc2Zh
aWxlZDoNCj4gLSAgICBiYXNlLT5SZWxlYXNlKCk7DQo+IC0NCj4gLWdldGJhc2VmYWlsZWQ6DQo+
IC0NCj4gLQ0KPiAtZm9ybWF0c2Vzc2lvbmJzdHJmYWlsZWQ6DQo+IC0gICAgcmV0dXJuIE5VTEw7
DQo+IC19DQo+IC0NCj4gLUlXYmVtQ2xhc3NPYmplY3QqIHNlc3Npb25NZXRob2RTdGFydChXTUlB
Y2Nlc3Nvcioqd21pLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHdjaGFyX3QgKm1ldGhvZG5hbWUpDQo+IC17DQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCAq
aW5NZXRob2Q7DQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCAqaW5NZXRob2RJbnN0ID0gTlVMTDsN
Cj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICpzZXNzaW9uQ2xhc3M7DQo+IC0gICAgSFJFU1VMVCBo
cjsNCj4gLQ0KPiAtICAgIEFTU0VSVCh3bWkgIT0gTlVMTCk7DQo+IC0NCj4gLSAgICBzZXNzaW9u
Q2xhc3MgPSBnZXRDbGFzcyh3bWksIE9CSkVDVF9OQU1FX1coU2Vzc2lvbikpOw0KPiAtICAgIGlm
IChzZXNzaW9uQ2xhc3MgPT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBnZXRjbGFzc2ZhaWxlZDsN
Cj4gLQ0KPiAtICAgIGhyID0gc2Vzc2lvbkNsYXNzLT5HZXRNZXRob2QobWV0aG9kbmFtZSwwLCZp
bk1ldGhvZCwgTlVMTCk7DQo+IC0gICAgaWYgKEZBSUxFRChocikpDQo+IC0gICAgICAgIGdvdG8g
Z2V0bWV0aG9kZmFpbGVkOw0KPiAtDQo+IC0gICAgaHIgPSBpbk1ldGhvZC0+U3Bhd25JbnN0YW5j
ZSgwLCAmaW5NZXRob2RJbnN0KTsNCj4gLSAgICBpZiAoRkFJTEVEKGhyKSkNCj4gLSAgICAgICAg
Z290byBzcGF3bmluc3RhbmNlZmFpbGVkOw0KPiAtDQo+IC0gICAgaW5NZXRob2QtPlJlbGVhc2Uo
KTsNCj4gLQ0KPiAtICAgIHNlc3Npb25DbGFzcy0+UmVsZWFzZSgpOw0KPiAtICAgIHJldHVybiBp
bk1ldGhvZEluc3Q7DQo+IC0NCj4gLQ0KPiAtc3Bhd25pbnN0YW5jZWZhaWxlZDoNCj4gLSAgICBp
bk1ldGhvZC0+UmVsZWFzZSgpOw0KPiAtDQo+IC1nZXRtZXRob2RmYWlsZWQ6DQo+IC0gICAgc2Vz
c2lvbkNsYXNzLT5SZWxlYXNlKCk7DQo+IC0NCj4gLWdldGNsYXNzZmFpbGVkOg0KPiAtICAgIHJl
dHVybiBOVUxMOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLWNoYXIgKiBic3RyVG9DaGFyKEJTVFIgYnN0
LCBzaXplX3QgKmxlbikgew0KPiAtICAgICpsZW4gPSB3Y3NsZW4oYnN0KTsNCj4gLSAgICBjaGFy
ICpzcGFjZSA9IChjaGFyICopWHNBbGxvYygqbGVuKzEpOw0KPiAtICAgIGlmIChzcGFjZSkNCj4g
LSAgICAgICAgd2NzdG9tYnNfcyhsZW4sIHNwYWNlLCAqbGVuKzEsIGJzdCwgIF9UUlVOQ0FURSk7
DQo+IC0gICAgcmV0dXJuIHNwYWNlOw0KPiAtfQ0KPiAtDQo+IC12b2lkIFdtaVNlc3Npb25Mb2co
V01JQWNjZXNzb3IqKiB3bWksICB2b2lkICoqc2Vzc2lvbmhhbmRsZSxjb25zdA0KPiBjaGFyICpm
bXQsIHZhX2xpc3QgYXJncykgew0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKipzZXNzaW9uID0g
KElXYmVtQ2xhc3NPYmplY3QgKiopc2Vzc2lvbmhhbmRsZTsNCj4gLQ0KPiAtICAgIGNoYXIqIG1l
c3NhZ2UgPSBmb3JtYXRDaGFyU3RySW50KGZtdCxhcmdzKTsNCj4gLQ0KPiAtICAgIE91dHB1dERl
YnVnU3RyaW5nKG1lc3NhZ2UpOw0KPiAtICAgIGlmICgoKCp3bWkpPT1OVUxMKSB8fCAoKCpzZXNz
aW9uaGFuZGxlKT09TlVMTCkgKSB7DQo+IC0gICAgICAgIGdvdG8gbm93bWk7DQo+IC0gICAgfQ0K
PiAtICAgIFZBUklBTlQgdm1lc3NhZ2U7DQo+IC0gICAgaWYgKHNldFZhcmlhbnRTdHJpbmcoJnZt
ZXNzYWdlLCBtZXNzYWdlKSkNCj4gLSAgICAgICAgZ290byBzZXR2bWVzc2FnZTsNCj4gLQ0KPiAt
ICAgIElXYmVtQ2xhc3NPYmplY3QgKmluTWV0aG9kSW5zdCA9IHNlc3Npb25NZXRob2RTdGFydCgg
d21pLCBMIkxvZyIpOw0KPiAtICAgIGlmICghaW5NZXRob2RJbnN0KQ0KPiAtICAgICAgICBnb3Rv
IHNlc3Npb25zdGFydDsNCj4gLQ0KPiAtICAgICBpZiAoRkFJTEVEKGluTWV0aG9kSW5zdC0+UHV0
KEwiTWVzc2FnZSIsMCwmdm1lc3NhZ2UsMCkpKQ0KPiAtICAgICAgICAgZ290byBtZXRob2RwdXRm
YWlsZWQ7DQo+IC0NCj4gLSAgICAgaWYgKEZBSUxFRChtZXRob2RFeGVjKHdtaSwqc2Vzc2lvbiwg
TCJMb2ciLCBpbk1ldGhvZEluc3QsIE5VTEwpKSkNCj4gLSAgICAgICAgIGdvdG8gbWV0aG9kZXhl
Y2ZhaWxlZDsNCj4gLQ0KPiAtbWV0aG9kZXhlY2ZhaWxlZDoNCj4gLW1ldGhvZHB1dGZhaWxlZDoN
Cj4gLSAgICAgaW5NZXRob2RJbnN0LT5SZWxlYXNlKCk7DQo+IC0NCj4gLXNlc3Npb25zdGFydDoN
Cj4gLSAgICBWYXJpYW50Q2xlYXIoJnZtZXNzYWdlKTsNCj4gLQ0KPiAtc2V0dm1lc3NhZ2U6DQo+
IC1ub3dtaToNCj4gLSAgICByZXR1cm47DQo+IC19DQo+IC0NCj4gLWNoYXIqIFdtaVNlc3Npb25H
ZXRFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwgdm9pZCAqKnNlc3Npb25oYW5kbGUsDQo+IC0gICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKiBwYXRoLCBzaXplX3QqIGxlbikNCj4gLXsNCj4gLSAgICAq
bGVuID0gMDsNCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICoqc2Vzc2lvbiA9IChJV2JlbUNsYXNz
T2JqZWN0ICoqKXNlc3Npb25oYW5kbGU7DQo+IC0NCj4gLSAgICBWQVJJQU5UIHZwYXRoOw0KPiAt
ICAgIGlmIChzZXRWYXJpYW50U3RyaW5nKCZ2cGF0aCwgcGF0aCkpDQo+IC0gICAgICAgIGdvdG8g
c2V0dnBhdGg7DQo+IC0NCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICpvdXRNZXRob2RJbnN0ID0g
TlVMTDsNCj4gLQ0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKmluTWV0aG9kSW5zdCA9IHNlc3Np
b25NZXRob2RTdGFydCggd21pLA0KPiBMIkdldFZhbHVlIik7DQo+IC0gICAgaWYgKGluTWV0aG9k
SW5zdCA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIHNlc3Npb25tZXRob2RzdGFydGZhaWxlZDsN
Cj4gLQ0KPiAtICAgIGlmIChGQUlMRUQoaW5NZXRob2RJbnN0LT5QdXQoTCJQYXRoTmFtZSIsMCwm
dnBhdGgsMCkpKQ0KPiAtICAgICAgICBnb3RvIG1ldGhvZGV4ZWNmYWlsZWQ7DQo+IC0NCj4gLSAg
ICBtZXRob2RFeGVjKHdtaSwqc2Vzc2lvbiwgTCJHZXRWYWx1ZSIsIGluTWV0aG9kSW5zdCwNCj4g
Jm91dE1ldGhvZEluc3QpOw0KPiAtICAgIGlmIChvdXRNZXRob2RJbnN0PT1OVUxMKQ0KPiAtICAg
ICAgICBnb3RvIHNlc3Npb25FeGVjOw0KPiAtDQo+IC0gICAgVkFSSUFOVCBvdXR2YWw7DQo+IC0g
ICAgVmFyaWFudEluaXQoJm91dHZhbCk7DQo+IC0NCj4gLSAgICBpZiAoRkFJTEVEKG91dE1ldGhv
ZEluc3QtPkdldChMInZhbHVlIiwgMCwgJm91dHZhbCwgTlVMTCwgTlVMTCkpKQ0KPiAtICAgICAg
ICBnb3RvIG1ldGhvZGdldGZhaWxlZDsNCj4gLQ0KPiAtICAgIGNoYXIgKnNwYWNlID0gTlVMTDsN
Cj4gLQ0KPiAtICAgIGlmIChWX1ZUKCZvdXR2YWwpID09IFZUX0JTVFIpDQo+IC0gICAgew0KPiAt
ICAgICAgICBzcGFjZSA9IGJzdHJUb0NoYXIob3V0dmFsLmJzdHJWYWwsIGxlbik7DQo+IC0gICAg
fQ0KPiAtDQo+IC0gICAgb3V0TWV0aG9kSW5zdC0+UmVsZWFzZSgpOw0KPiAtICAgIGluTWV0aG9k
SW5zdC0+UmVsZWFzZSgpOw0KPiAtICAgIFZhcmlhbnRDbGVhcigmdnBhdGgpOw0KPiAtICAgIFZh
cmlhbnRDbGVhcigmb3V0dmFsKTsNCj4gLSAgICByZXR1cm4gc3BhY2U7DQo+IC0NCj4gLW1ldGhv
ZGdldGZhaWxlZDoNCj4gLSAgICBvdXRNZXRob2RJbnN0LT5SZWxlYXNlKCk7DQo+IC0NCj4gLW1l
dGhvZGV4ZWNmYWlsZWQ6DQo+IC1zZXNzaW9uRXhlYzoNCj4gLSAgICBpbk1ldGhvZEluc3QtPlJl
bGVhc2UoKTsNCj4gLQ0KPiAtc2Vzc2lvbm1ldGhvZHN0YXJ0ZmFpbGVkOg0KPiAtICAgIFZhcmlh
bnRDbGVhcigmdnBhdGgpOw0KPiAtDQo+IC1zZXR2cGF0aDoNCj4gLSAgICByZXR1cm4gTlVMTDsN
Cj4gLX0NCj4gLQ0KPiAtaW50IFdtaVNlc3Npb25TZXRFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwg
IHZvaWQgKipzZXNzaW9uaGFuZGxlLA0KPiAtICAgICAgICAgICAgICBjb25zdCBjaGFyKnBhdGgs
IGNvbnN0IGNoYXIgKiB2YWx1ZSwgc2l6ZV90IGxlbikNCj4gLXsNCj4gLSAgICBpbnQgZXJyID0g
LTE7DQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCAqKnNlc3Npb24gPSAoSVdiZW1DbGFzc09iamVj
dCAqKilzZXNzaW9uaGFuZGxlOw0KPiAtDQo+IC0gICAgVkFSSUFOVCB2cGF0aDsNCj4gLSAgICBp
ZiAoc2V0VmFyaWFudFN0cmluZygmdnBhdGgsIHBhdGgpKQ0KPiAtICAgICAgICBnb3RvIHNldHZw
YXRoOw0KPiAtDQo+IC0gICAgVkFSSUFOVCB2dmFsdWU7DQo+IC0gICAgaWYgKHNldFZhcmlhbnRT
dHJpbmcoJnZ2YWx1ZSwgdmFsdWUpKQ0KPiAtICAgICAgICBnb3RvIHNldHZ2YWx1ZTsNCj4gLQ0K
PiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKm91dE1ldGhvZEluc3Q7DQo+IC0NCj4gLSAgICBJV2Jl
bUNsYXNzT2JqZWN0ICppbk1ldGhvZEluc3QgPSBzZXNzaW9uTWV0aG9kU3RhcnQoIHdtaSwNCj4g
TCJTZXRWYWx1ZSIpOw0KPiAtICAgIGlmICghaW5NZXRob2RJbnN0KQ0KPiAtICAgICAgICBnb3Rv
IHNlc3Npb25zdGFydDsNCj4gLQ0KPiAtICAgIGluTWV0aG9kSW5zdC0+UHV0KEwiUGF0aE5hbWUi
LDAsJnZwYXRoLDApOw0KPiAtICAgIGluTWV0aG9kSW5zdC0+UHV0KEwidmFsdWUiLDAsJnZ2YWx1
ZSwwKTsNCj4gLQ0KPiAtICAgIGlmIChGQUlMRUQobWV0aG9kRXhlYyh3bWksKnNlc3Npb24sIEwi
U2V0VmFsdWUiLCBpbk1ldGhvZEluc3QsDQo+ICZvdXRNZXRob2RJbnN0KSkpDQo+IC0gICAgICAg
IGdvdG8gbWV0aG9kZXhlY2ZhaWxlZDsNCj4gLQ0KPiAtICAgIGlmIChvdXRNZXRob2RJbnN0IT1O
VUxMKQ0KPiAtICAgICAgICBvdXRNZXRob2RJbnN0LT5SZWxlYXNlKCk7DQo+IC0NCj4gLSAgICBp
bk1ldGhvZEluc3QtPlJlbGVhc2UoKTsNCj4gLSAgICBTeXNGcmVlU3RyaW5nKHZ2YWx1ZS5ic3Ry
VmFsKTsNCj4gLSAgICBTeXNGcmVlU3RyaW5nKHZwYXRoLmJzdHJWYWwpOw0KPiAtDQo+IC0gICAg
cmV0dXJuIDA7DQo+IC0NCj4gLW1ldGhvZGV4ZWNmYWlsZWQ6DQo+IC0gICAgWHNMb2coIldtaVNl
c3Npb25TZXRFbnRyeTpNZXRob2RFeGVjIEZhaWxlZCIpOw0KPiAtICAgIGluTWV0aG9kSW5zdC0+
UmVsZWFzZSgpOw0KPiAtDQo+IC1zZXNzaW9uc3RhcnQ6DQo+IC0gICAgWHNMb2coIldtaVNlc3Np
b25TZXRFbnRyeTpTZXNzaW9uU3RhcnQgRmFpbGVkIik7DQo+IC0gICAgU3lzRnJlZVN0cmluZyh2
dmFsdWUuYnN0clZhbCk7DQo+IC0NCj4gLXNldHZ2YWx1ZToNCj4gLSAgICBYc0xvZygiV21pU2Vz
c2lvblNldEVudHJ5OlNldFZWYWx1ZSBGYWlsZWQiKTsNCj4gLSAgICBTeXNGcmVlU3RyaW5nKHZw
YXRoLmJzdHJWYWwpOw0KPiAtDQo+IC1zZXR2cGF0aDoNCj4gLSAgICBYc0xvZygiV21pU2Vzc2lv
blNldEVudHJ5OlNldFZQYXRoIEZhaWxlZCAiKTsNCj4gLSAgICByZXR1cm4gZXJyOw0KPiAtfQ0K
PiAtDQo+IC1pbnQgV21pU2Vzc2lvblNldEVudHJ5KFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZCAq
KnNlc3Npb25oYW5kbGUsDQo+IC0gICAgICAgICAgICAgIGNvbnN0IGNoYXIqcGF0aCwgY29uc3Qg
Y2hhciAqIHZhbHVlKSB7DQo+IC0gICAgcmV0dXJuIFdtaVNlc3Npb25TZXRFbnRyeSh3bWksIHNl
c3Npb25oYW5kbGUsIHBhdGgsIHZhbHVlLA0KPiBzdHJsZW4odmFsdWUpKTsNCj4gLX0NCj4gLQ0K
PiAtaW50IFdtaVNlc3Npb25SZW1vdmVFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipz
ZXNzaW9uaGFuZGxlLA0KPiAtICAgICAgICAgICAgICBjb25zdCBjaGFyKnBhdGgpew0KPiAtDQo+
IC0gICAgaW50IGVyciA9IC0xOw0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKipzZXNzaW9uID0g
KElXYmVtQ2xhc3NPYmplY3QgKiopc2Vzc2lvbmhhbmRsZTsNCj4gLQ0KPiAtICAgIFZBUklBTlQg
dnBhdGg7DQo+IC0gICAgaWYgKHNldFZhcmlhbnRTdHJpbmcoJnZwYXRoLCBwYXRoKSkNCj4gLSAg
ICAgICAgZ290byBzZXR2cGF0aDsNCj4gLQ0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKmluTWV0
aG9kSW5zdCA9IHNlc3Npb25NZXRob2RTdGFydCggd21pLA0KPiBMIlJlbW92ZVZhbHVlIik7DQo+
IC0gICAgaWYgKCFpbk1ldGhvZEluc3QpDQo+IC0gICAgICAgIGdvdG8gc2Vzc2lvbnN0YXJ0Ow0K
PiAtDQo+IC0gICAgaWYgKEZBSUxFRChpbk1ldGhvZEluc3QtPlB1dChMIlBhdGhOYW1lIiwwLCZ2
cGF0aCwwKSkpDQo+IC0gICAgICAgIGdvdG8gbWV0aG9kcHV0ZmFpbGVkOw0KPiAtDQo+IC0gICAg
SVdiZW1DbGFzc09iamVjdCogb3V0TWV0aG9kSW5zdDsNCj4gLQ0KPiAtICAgIGlmIChGQUlMRUQo
bWV0aG9kRXhlYyh3bWksKnNlc3Npb24sIEwiUmVtb3ZlVmFsdWUiLCBpbk1ldGhvZEluc3QsDQo+
ICZvdXRNZXRob2RJbnN0KSkpDQo+IC0gICAgICAgIGdvdG8gbWV0aG9kZXhlY2ZhaWxlZDsNCj4g
LQ0KPiAtICAgIGlmIChvdXRNZXRob2RJbnN0ICE9IE5VTEwpDQo+IC0gICAgICAgIG91dE1ldGhv
ZEluc3QtPlJlbGVhc2UoKTsNCj4gLQ0KPiAtICAgIGVycj0wOw0KPiAtICAgIGluTWV0aG9kSW5z
dC0+UmVsZWFzZSgpOw0KPiAtICAgIFZhcmlhbnRDbGVhcigmdnBhdGgpOw0KPiAtICAgIHJldHVy
biBlcnI7DQo+IC1tZXRob2RleGVjZmFpbGVkOg0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9f
RlVOQ1RJT05fXyAiIE1ldGhvZEV4ZWNGYWlsZWQiKTsNCj4gLW1ldGhvZHB1dGZhaWxlZDoNCj4g
LSAgICBPdXRwdXREZWJ1Z1N0cmluZyhfX0ZVTkNUSU9OX18gIiBNZXRob2RQdXRGYWlsZWQiKTsN
Cj4gLSAgICBpbk1ldGhvZEluc3QtPlJlbGVhc2UoKTsNCj4gLQ0KPiAtc2Vzc2lvbnN0YXJ0Og0K
PiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9fRlVOQ1RJT05fXyAiIFNlc3Npb25TdGFydEZhaWxl
ZCIpOw0KPiAtICAgIFZhcmlhbnRDbGVhcigmdnBhdGgpOw0KPiAtDQo+IC0gICAgT3V0cHV0RGVi
dWdTdHJpbmcoX19GVU5DVElPTl9fICIgU2Vzc2lvbkV4ZWNGYWlsZWQiKTsNCj4gLXNldHZwYXRo
Og0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9fRlVOQ1RJT05fXyAiIFNldFZwYXRoRmFpbGVk
Iik7DQo+IC0gICAgcmV0dXJuIGVycjsNCj4gLX0NCj4gLQ0KPiAtDQo+IC1CT09MIFdtaVNlc3Np
b25VbndhdGNoKFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZCAqKnNlc3Npb25oYW5kbGUsDQo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqd2F0Y2hoYW5kbGUpIHsNCj4gLSAgICBJV2Jl
bUNsYXNzT2JqZWN0ICoqc2Vzc2lvbiA9IChJV2JlbUNsYXNzT2JqZWN0ICoqKXNlc3Npb25oYW5k
bGU7DQo+IC0gICAgWHNMb2coIlVud2F0Y2ggJXAiLHdhdGNoaGFuZGxlKTsNCj4gLSAgICBXYXRj
aFNpbmsgKiBzaW5rID0gKFdhdGNoU2luayAqKXdhdGNoaGFuZGxlOw0KPiAtDQo+IC0gICAgVkFS
SUFOVCB2cGF0aDsNCj4gLSAgICBpZiAoc2V0VmFyaWFudFN0cmluZygmdnBhdGgsIHNpbmstPnBh
dGgpKQ0KPiAtICAgICAgICBnb3RvIHNldHZwYXRoOw0KPiAtDQo+IC0gICAgSVdiZW1DbGFzc09i
amVjdCAqb3V0TWV0aG9kSW5zdDsNCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICppbk1ldGhvZElu
c3QgPSBzZXNzaW9uTWV0aG9kU3RhcnQoIHdtaSwNCj4gTCJSZW1vdmVXYXRjaCIpOw0KPiAtICAg
IGlmICghaW5NZXRob2RJbnN0KQ0KPiAtICAgICAgICBnb3RvIHNlc3Npb25zdGFydDsNCj4gLQ0K
PiAtICAgIGluTWV0aG9kSW5zdC0+UHV0KEwiUGF0aE5hbWUiLDAsJnZwYXRoLDApOw0KPiAtICAg
IGlmIEZBSUxFRChtZXRob2RFeGVjKHdtaSwqc2Vzc2lvbiwgTCJSZW1vdmVXYXRjaCIsIGluTWV0
aG9kSW5zdCwNCj4gJm91dE1ldGhvZEluc3QpKQ0KPiAtICAgICAgICBnb3RvIG1ldGhvZGV4ZWNm
YWlsZWQ7DQo+IC0gICAgaWYgKG91dE1ldGhvZEluc3Q9PU5VTEwpDQo+IC0gICAgICAgIGdvdG8g
c2Vzc2lvbmV4ZWNmYWlsZWQ7DQo+IC0NCj4gLSAgICBvdXRNZXRob2RJbnN0LT5SZWxlYXNlKCk7
DQo+IC0NCj4gLW1ldGhvZGV4ZWNmYWlsZWQ6DQo+IC1zZXNzaW9uZXhlY2ZhaWxlZDoNCj4gLSAg
ICBpbk1ldGhvZEluc3QtPlJlbGVhc2UoKTsNCj4gLQ0KPiAtc2Vzc2lvbnN0YXJ0Og0KPiAtc2V0
dnBhdGg6DQo+IC0gICAgc2luay0+UmVsZWFzZSgpOw0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAt
fQ0KPiAtDQo+IC1CT09MIFdtaVNlc3Npb25TdGFydChXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQg
KipzZXNzaW9uaGFuZGxlLCBjb25zdA0KPiBjaGFyKiBzZXNzaW9ubmFtZSkNCj4gLXsNCj4gLSAg
ICBJV2JlbUNsYXNzT2JqZWN0ICoqc2Vzc2lvbiA9IChJV2JlbUNsYXNzT2JqZWN0ICoqKXNlc3Np
b25oYW5kbGU7DQo+IC0gICAgaWYgKCgqc2Vzc2lvbiA9IG9wZW5TZXNzaW9uKHdtaSwgc2Vzc2lv
bm5hbWUpKSA9PSBOVUxMKSB7DQo+IC0gICAgICAgIHJldHVybiBmYWxzZTsNCj4gLSAgICB9DQo+
IC0gICAgcmV0dXJuIHRydWU7DQo+IC19DQo+IC0NCj4gLQ0KPiAtQk9PTCBXbWlTZXNzaW9uRW5k
KFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZCAqc2Vzc2lvbmhhbmRsZSkNCj4gLXsNCj4gLSAgICBI
UkVTVUxUIGhyOw0KPiAtICAgIEFTU0VSVCgqd21pICE9IE5VTEwpOw0KPiAtDQo+IC0gICAgSVdi
ZW1DbGFzc09iamVjdCAqc2Vzc2lvbiA9IChJV2JlbUNsYXNzT2JqZWN0ICopc2Vzc2lvbmhhbmRs
ZTsNCj4gLSAgICBpZiAoc2Vzc2lvbj09TlVMTCkgew0KPiAtICAgICAgICByZXR1cm4gZmFsc2U7
DQo+IC0gICAgfQ0KPiAtICAgIGhyID0gbWV0aG9kRXhlYyh3bWksIHNlc3Npb24sIEwiRW5kU2Vz
c2lvbiIsIE5VTEwsTlVMTCk7DQo+IC0gICAgaWYgRkFJTEVEKGhyKQ0KPiAtICAgICAgICBnb3Rv
IGV4ZWNtZXRob2RmYWlsZWQ7DQo+IC0gICAgc2Vzc2lvbi0+UmVsZWFzZSgpOw0KPiAtICAgIHJl
dHVybiB0cnVlOw0KPiAtDQo+IC1leGVjbWV0aG9kZmFpbGVkOg0KPiAtICAgIHJldHVybiBmYWxz
ZTsNCj4gLQ0KPiAtfQ0KPiAtDQo+IC12b2lkICpXbWlTZXNzaW9uV2F0Y2goV01JQWNjZXNzb3Iq
KiB3bWksICB2b2lkICoqc2Vzc2lvbmhhbmRsZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpwYXRoLCBIQU5ETEUgZXZlbnQsIEhBTkRMRSBlcnJvcmV2ZW50KSB7DQo+IC0N
Cj4gLSAgICBIUkVTVUxUIGhyOw0KPiAtDQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCAqKnNlc3Np
b24gPSAoSVdiZW1DbGFzc09iamVjdCAqKilzZXNzaW9uaGFuZGxlOw0KPiAtDQo+IC0gICAgQVNT
RVJUKCgqd21pKSAhPSBOVUxMKTsNCj4gLSAgICBBU1NFUlQoKCpzZXNzaW9uaGFuZGxlKSAhPSBO
VUxMKTsNCj4gLQ0KPiAtICAgIFdhdGNoU2luayAqIHNpbmsgPSBuZXcgV2F0Y2hTaW5rKGV2ZW50
LCBlcnJvcmV2ZW50LCBwYXRoKTsNCj4gLSAgICBCU1RSIHF1ZXJ5PWZvcm1hdEJzdHIoIlNFTEVD
VCAqIGZyb20gIiBPQkpFQ1RfTkFNRV9BKFdhdGNoRXZlbnQpDQo+ICIgV0hFUkUgRXZlbnRJZD1c
IiVzXCIiLCBwYXRoKTsNCj4gLSAgICBpZiAocXVlcnkgPT0gTlVMTCkgew0KPiAtICAgICAgICBn
b3RvIGZvcm1hdHN0cmluZ2ZhaWxlZDsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBociA9ICgqd21p
KS0+bXBYU1N2Yy0+RXhlY05vdGlmaWNhdGlvblF1ZXJ5QXN5bmMoTCJXUUwiLA0KPiBxdWVyeSww
LE5VTEwsIHNpbmspOw0KPiAtICAgIGlmIChGQUlMRUQoaHIpKXsNCj4gLSAgICAgICAgKndtaSA9
IE5VTEw7DQo+IC0gICAgICAgIGdvdG8gd21pZmFpbGVkOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAg
IFZBUklBTlQgdnBhdGg7DQo+IC0gICAgaWYgKHNldFZhcmlhbnRTdHJpbmcoJnZwYXRoLCBwYXRo
KSl7DQo+IC0gICAgICAgIGdvdG8gc2V0dnBhdGg7DQo+IC0gICAgfQ0KPiAtDQo+IC0NCj4gLSAg
ICBJV2JlbUNsYXNzT2JqZWN0ICppbk1ldGhvZEluc3QgPSBzZXNzaW9uTWV0aG9kU3RhcnQoIHdt
aSwNCj4gTCJTZXRXYXRjaCIpOw0KPiAtICAgIGlmICghaW5NZXRob2RJbnN0KQ0KPiAtICAgICAg
ICBnb3RvIHNlc3Npb25zdGFydDsNCj4gLQ0KPiAtICAgIGhyID0gaW5NZXRob2RJbnN0LT5QdXQo
TCJQYXRoTmFtZSIsMCwmdnBhdGgsMCk7DQo+IC0gICAgaWYgKEZBSUxFRChocikpDQo+IC0gICAg
ICAgIGdvdG8gbWV0aG9kcHV0ZmFpbGVkOw0KPiAtDQo+IC0gICAgaHIgPSBtZXRob2RFeGVjKHdt
aSwqc2Vzc2lvbiwgTCJTZXRXYXRjaCIsIGluTWV0aG9kSW5zdCwgTlVMTCk7DQo+IC0gICAgaWYg
KEZBSUxFRChocikpDQo+IC0gICAgICAgIGdvdG8gbWV0aG9kZXhlY2ZhaWxlZDsNCj4gLQ0KPiAt
ICAgIFZhcmlhbnRDbGVhcigmdnBhdGgpOw0KPiAtDQo+IC0gICAgU3lzRnJlZVN0cmluZyhxdWVy
eSk7DQo+IC0NCj4gLSAgICByZXR1cm4gc2luazsNCj4gLQ0KPiAtDQo+IC1tZXRob2RleGVjZmFp
bGVkOg0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9fRlVOQ1RJT05fXyAiIDogbWV0aG9kZXhl
Y2ZhaWxlZFxuIik7DQo+IC1tZXRob2RwdXRmYWlsZWQ6DQo+IC0gICAgT3V0cHV0RGVidWdTdHJp
bmcoX19GVU5DVElPTl9fICIgOiBtZXRob2RwdXRmYWlsZWRcbiIpOw0KPiAtICAgIGluTWV0aG9k
SW5zdC0+UmVsZWFzZSgpOw0KPiAtc2Vzc2lvbnN0YXJ0Og0KPiAtICAgIE91dHB1dERlYnVnU3Ry
aW5nKF9fRlVOQ1RJT05fXyAiIDogc2Vzc2lvbnN0YXJ0XG4iKTsNCj4gLSAgICBWYXJpYW50Q2xl
YXIoJnZwYXRoKTsNCj4gLXNldHZwYXRoOg0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9fRlVO
Q1RJT05fXyAiIDogc2V0dnBhdGhcbiIpOw0KPiAtd21pZmFpbGVkOg0KPiAtICAgIFN5c0ZyZWVT
dHJpbmcocXVlcnkpOw0KPiAtZm9ybWF0c3RyaW5nZmFpbGVkOg0KPiAtICAgIE91dHB1dERlYnVn
U3RyaW5nKF9fRlVOQ1RJT05fXyAiIDogZm9ybWF0c3RyaW5nZmFpbGVkXG4iKTsNCj4gLSAgICBk
ZWxldGUgc2luazsNCj4gLSAgICByZXR1cm4gTlVMTDsNCj4gLX0NCj4gLQ0KPiAtdm9pZCAqV21p
VW5zdXNwZW5kZWRFdmVudFdhdGNoKFdNSUFjY2Vzc29yICoqd21pLCBIQU5ETEUgZXZlbnQsDQo+
IEhBTkRMRSBlcnJvcmV2ZW50KQ0KPiAtew0KPiAtICAgIEhSRVNVTFQgaHI7DQo+IC0NCj4gLSAg
ICBBU1NFUlQoKndtaSAhPSBOVUxMKTsNCj4gLQ0KPiAtICAgIFdhdGNoU2luayAqIHNpbmsgPSBu
ZXcgV2F0Y2hTaW5rKGV2ZW50LCBlcnJvcmV2ZW50LCBOVUxMKTsNCj4gLSAgICBCU1RSIHF1ZXJ5
PWZvcm1hdEJzdHIoIlNFTEVDVCAqIGZyb20gIg0KPiBPQkpFQ1RfTkFNRV9BKFVuc3VzcGVuZGVk
RXZlbnQpKTsNCj4gLSAgICBpZiAocXVlcnk9PU5VTEwpIHsNCj4gLSAgICAgICAgZ290byBmb3Jt
YXRzdHJpbmdmYWlsZWQ7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgaHIgPSAoKndtaSktPm1wWFNT
dmMtPkV4ZWNOb3RpZmljYXRpb25RdWVyeUFzeW5jKEwiV1FMIiwNCj4gcXVlcnksMCxOVUxMLCBz
aW5rKTsNCj4gLSAgICBpZiBGQUlMRUQoaHIpDQo+IC0gICAgICAgIGdvdG8gYXN5bmNxdWVyeWZh
aWxlZDsNCj4gLQ0KPiAtICAgIFN5c0ZyZWVTdHJpbmcocXVlcnkpOw0KPiAtICAgIHJldHVybiBz
aW5rOw0KPiAtDQo+IC1hc3luY3F1ZXJ5ZmFpbGVkOg0KPiAtICAgIFN5c0ZyZWVTdHJpbmcocXVl
cnkpOw0KPiAtZm9ybWF0c3RyaW5nZmFpbGVkOg0KPiAtICAgIGRlbGV0ZSBzaW5rOw0KPiAtICAg
IHJldHVybiBOVUxMOw0KPiAtfQ0KPiAtDQo+IGRpZmYgLS1naXQgYS9zcmMvd2luMzJzdHViYWdl
bnQvV21pQWNjZXNzb3IuaA0KPiBiL3NyYy93aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5oDQo+
IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCBlMzdlZjcxLi4wMDAwMDAwDQo+IC0t
LSBhL3NyYy93aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5oDQo+ICsrKyAvZGV2L251bGwNCj4g
QEAgLTEsODggKzAsMCBAQA0KPiAtLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMu
DQo+IC0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+IC0gKiB3aXRoIG9yIHdpdGhv
dXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+IC0gKiB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICogICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+IC0gKiAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+IC0gKiAgICAg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gLSAqDQo+IC0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4g
LSAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsDQo+IC0gKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRg0KPiAtICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+IC0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+IC0gKiBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gLSAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLA0KPiAtICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HDQo+IC0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+IC0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+IC0gKiBTVUNIIERBTUFHRS4NCj4gLSAqLw0K
PiAtDQo+IC0jaWZuZGVmIF9XTUlBQ0NFU1NPUl9IDQo+IC0jZGVmaW5lIF9XTUlBQ0NFU1NPUl9I
DQo+IC0NCj4gLSNpbmNsdWRlIDxXYmVtaWRsLmg+DQo+IC0jaW5jbHVkZSA8bGlzdD4NCj4gLSNp
bmNsdWRlIDx2ZWN0b3I+DQo+IC0jaW5jbHVkZSA8bWFwPg0KPiAtI2luY2x1ZGUgPHN0cmluZz4N
Cj4gLQ0KPiAtI2luY2x1ZGUgIlhTQWNjZXNzb3IuaCINCj4gLQ0KPiAtdXNpbmcgbmFtZXNwYWNl
IHN0ZDsNCj4gLQ0KPiAtdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90Ow0KPiAtDQo+
IC1zdHJ1Y3QgV01JQWNjZXNzb3I7DQo+IC0NCj4gLWV4dGVybiBzdHJ1Y3QgV01JQWNjZXNzb3Ig
KndtaTsNCj4gLQ0KPiAtZXh0ZXJuIExPTkcgd21pY291bnQ7DQo+IC1CT09MIEluaXRDb20odm9p
ZCk7DQo+IC12b2lkIFJlbGVhc2VDb20odm9pZCk7DQo+IC1CT09MIENvbm5lY3RUb1dNSSh2b2lk
KTsNCj4gLXZvaWQgUmVsZWFzZVdNSUFjY2Vzc29yKHN0cnVjdCBXTUlBY2Nlc3NvciAqKik7DQo+
IC0NCj4gLXZvaWQgVXBkYXRlUHJvY2Vzc0xpc3RJblN0b3JlKFdNSUFjY2Vzc29yICoqd21pKTsN
Cj4gLQ0KPiAtaW50IFdtaVNlc3Npb25TZXRFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQg
KipzZXNzaW9uaGFuZGxlLA0KPiAtICAgICAgICAgICAgICBjb25zdCBjaGFyKnBhdGgsIGNvbnN0
IGNoYXIgKiB2YWx1ZSk7DQo+IC0NCj4gLWludCBXbWlTZXNzaW9uU2V0RW50cnkoV01JQWNjZXNz
b3IqKiB3bWksICB2b2lkICoqc2Vzc2lvbmhhbmRsZSwNCj4gLSAgICAgICAgICAgICAgY29uc3Qg
Y2hhcipwYXRoLCBjb25zdCBjaGFyICogdmFsdWUsIHNpemVfdCBsZW4pOw0KPiAtY2hhciogV21p
U2Vzc2lvbkdldEVudHJ5KFdNSUFjY2Vzc29yKiogd21pLCB2b2lkICoqc2Vzc2lvbmhhbmRsZSwN
Cj4gLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBhdGgsIHNpemVfdCogbGVuKSA7DQo+IC0N
Cj4gLXZvaWQgKldtaVNlc3Npb25XYXRjaChXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipzZXNz
aW9uaGFuZGxlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGgsIEhB
TkRMRSBldmVudCwgSEFORExFIGVycm9yZXZlbnQpOw0KPiAtQk9PTCBXbWlTZXNzaW9uVW53YXRj
aChXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipzZXNzaW9uaGFuZGxlLA0KPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKndhdGNoaGFuZGxlKTsNCj4gLQ0KPiAtaW50IFdtaVNlc3Np
b25SZW1vdmVFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipzZXNzaW9uaGFuZGxlLA0K
PiAtICAgICAgICAgICAgICBjb25zdCBjaGFyKnBhdGgpOw0KPiAtDQo+IC1jaGFyICoqV21pU2Vz
c2lvbkdldENoaWxkcmVuKFdNSUFjY2Vzc29yKiogd21pLCB2b2lkDQo+ICoqc2Vzc2lvbmhhbmRs
ZSwNCj4gLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBhdGgsIHVuc2lnbmVkICpudW1lbnRy
aWVzKTsNCj4gLQ0KPiAtDQo+IC12b2lkICpXbWlVbnN1c3BlbmRlZEV2ZW50V2F0Y2goV01JQWNj
ZXNzb3IgKip3bWksIEhBTkRMRSBldmVudCwNCj4gSEFORExFIGVycm9yZXZlbnQpOw0KPiAtDQo+
IC1pbnQgV21pU2Vzc2lvblRyYW5zYWN0aW9uQWJvcnQoV01JQWNjZXNzb3IqKiB3bWksICB2b2lk
DQo+ICoqc2Vzc2lvbmhhbmRsZSk7DQo+IC1pbnQgV21pU2Vzc2lvblRyYW5zYWN0aW9uQ29tbWl0
KFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZA0KPiAqKnNlc3Npb25oYW5kbGUpOw0KPiAtaW50IFdt
aVNlc3Npb25UcmFuc2FjdGlvblN0YXJ0KFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZA0KPiAqKnNl
c3Npb25oYW5kbGUpOw0KPiAtQk9PTCBXbWlTZXNzaW9uU3RhcnQoV01JQWNjZXNzb3IqKiB3bWks
ICB2b2lkICoqc2Vzc2lvbmhhbmRsZSwgY29uc3QNCj4gY2hhciAqc2Vzc2lvbm5hbWUpOw0KPiAt
Qk9PTCBXbWlTZXNzaW9uRW5kKFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZCAqc2Vzc2lvbmhhbmRs
ZSk7DQo+IC1GSUxFVElNRSBXbWlHZXRYZW5UaW1lKFdNSUFjY2Vzc29yICoqd21pKTsNCj4gLXZv
aWQgV21pU2Vzc2lvbkxvZyhXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipzZXNzaW9uaGFuZGxl
LGNvbnN0DQo+IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsNCj4gLSNlbmRpZg0KPiBkaWZmIC0t
Z2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTQWNjZXNzb3IuY3BwDQo+IGIvc3JjL3dpbjMyc3R1
YmFnZW50L1hTQWNjZXNzb3IuY3BwDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl
eCBjNjBmYjhiLi4wMDAwMDAwDQo+IC0tLSBhL3NyYy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29y
LmNwcA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDIzMCArMCwwIEBADQo+IC0vKiBDb3B5cmln
aHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+
IC0gKg0KPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3JtcywNCj4gLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQNCj4gLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+
IC0gKg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAq
ICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQ0KPiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXINCj4gLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLg0KPiAtICoNCj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLA0KPiAtICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywNCj4gLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUg0KPiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4g
LSAqIFNVQ0ggREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLSNpbmNsdWRlIDx3aW5kb3dzLmg+DQo+
IC0jaW5jbHVkZSAic3RkYWZ4LmgiDQo+IC0jaW5jbHVkZSAiWFNBY2Nlc3Nvci5oIg0KPiAtI2lu
Y2x1ZGUgIldNSUFjY2Vzc29yLmgiDQo+IC0NCj4gLXN0YXRpYyBfX2RlY2xzcGVjKHRocmVhZCkg
dm9pZCAqV21pU2Vzc2lvbkhhbmRsZSA9IE5VTEw7DQo+IC0NCj4gLXN0YXRpYyBMT05HIHZvbGF0
aWxlIHRocmVhZGNvdW50ID0gMDsNCj4gLXN0YXRpYyBfX2RlY2xzcGVjKHRocmVhZCkgTE9ORyBs
b2NhbHRocmVhZGNvdW50ID0gMDsNCj4gLXN0YXRpYyBfX2RlY2xzcGVjKHRocmVhZCkgTE9ORyBs
b2NhbHdtaWNvdW50ID0gMDsNCj4gLQ0KPiAtc3RhdGljIGxvbmcgdXBkYXRlX2NudD0weEYwMDAw
MDAwOw0KPiAtI2RlZmluZSBYRU5TVE9SRV9NQUdJQyAweDdlNmVjMTIzDQo+IC0NCj4gLXZvaWQg
KlhzQWxsb2Moc2l6ZV90IHNpemUpIHsNCj4gLSAgICB2b2lkICpidWY7DQo+IC0NCj4gLSAgICBi
dWYgPSBtYWxsb2Moc2l6ZSArIDgpOw0KPiAtICAgIGlmICghYnVmKSB7DQo+IC0gICAgICAgIFNl
dExhc3RFcnJvcihFUlJPUl9OT1RfRU5PVUdIX01FTU9SWSk7DQo+IC0gICAgICAgIHJldHVybiBO
VUxMOw0KPiAtICAgIH0NCj4gLSAgICBtZW1zZXQoYnVmLCAwLCBzaXplICsgOCk7DQo+IC0gICAg
Kih1bnNpZ25lZCAqKWJ1ZiA9IFhFTlNUT1JFX01BR0lDOw0KPiAtICAgIHJldHVybiAodm9pZCAq
KSgoVUxPTkdfUFRSKWJ1ZiArIDgpOw0KPiAtfQ0KPiAtDQo+IC12b2lkIFhzRnJlZShjb25zdCB2
b2lkICpidWYpIHsNCj4gLSAgICB2b2lkICpvcmlnX2J1ZjsNCj4gLQ0KPiAtICAgIGlmICghYnVm
KQ0KPiAtICAgICAgICByZXR1cm47DQo+IC0gICAgb3JpZ19idWYgPSAodm9pZCAqKSgoVUxPTkdf
UFRSKWJ1ZiAtIDgpOw0KPiAtICAgIGlmICgqKHVuc2lnbmVkICopb3JpZ19idWYgIT0gWEVOU1RP
UkVfTUFHSUMpIHsNCj4gLSAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIlhzRnJlZSgpIGludm9r
ZWQgb24gYmFkIHBvaW50ZXJcbiIpOw0KPiAtICAgICAgICBEZWJ1Z0JyZWFrKCk7DQo+IC0gICAg
fQ0KPiAtICAgIGZyZWUob3JpZ19idWYpOw0KPiAtfQ0KPiAtDQo+IC12b2lkIEdldFhlblRpbWUo
RklMRVRJTUUgKm5vdykNCj4gLXsNCj4gLSAgICAqbm93ID0gV21pR2V0WGVuVGltZSgmd21pKTsN
Cj4gLX0NCj4gLQ0KPiAtDQo+IC1pbnQgTGlzdGVuU3VzcGVuZChIQU5ETEUgZXZlbnQsIEhBTkRM
RSBlcnJvcmV2ZW50KQ0KPiAtew0KPiAtICAgIGlmICghV21pVW5zdXNwZW5kZWRFdmVudFdhdGNo
KCZ3bWksIGV2ZW50LCBlcnJvcmV2ZW50KSkNCj4gLSAgICAgICAgcmV0dXJuIC0xOw0KPiAtICAg
IGVsc2UNCj4gLSAgICAgICAgcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gLUJPT0wgSW5pdFhTQWNj
ZXNzb3IoKQ0KPiAtew0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKCJYU0FjY2Vzc29yXG4iKTsN
Cj4gLSAgICBpZiAod21pY291bnQgIT0gbG9jYWx3bWljb3VudCkgew0KPiAtDQo+IC0gICAgICAg
IGlmIChsb2NhbHRocmVhZGNvdW50ID09IDApIHsNCj4gLSAgICAgICAgICAgIGxvY2FsdGhyZWFk
Y291bnQgPSBJbnRlcmxvY2tlZEluY3JlbWVudCgmdGhyZWFkY291bnQpOw0KPiAtICAgICAgICB9
DQo+IC0gICAgICAgIGNoYXIgd21pbmFtZVsxMl07DQo+IC0gICAgICAgIF9zbnByaW50Zih3bWlu
YW1lLCAxMiwgIlhTJXgiLCBsb2NhbHRocmVhZGNvdW50KTsNCj4gLSAgICAgICAgaWYgKFdtaVNl
c3Npb25TdGFydCgmd21pLCAmV21pU2Vzc2lvbkhhbmRsZSwgd21pbmFtZSkpIHsNCj4gLSAgICAg
ICAgICAgIGxvY2Fsd21pY291bnQgPSB3bWljb3VudDsNCj4gLSAgICAgICAgICAgIHJldHVybiB0
cnVlOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJYU0FjY2Vz
c29yIEZhaWxlZFxuIik7DQo+IC0gICAgICAgIHJldHVybiBmYWxzZTsNCj4gLSAgICB9DQo+IC0g
ICAgcmV0dXJuIHRydWU7DQo+IC19DQo+IC0NCj4gLXZvaWQgWHNMb2coY29uc3QgY2hhciAqZm10
LCAuLi4pDQo+IC17DQo+IC0gICAgdmFfbGlzdCBhcmdzOw0KPiAtDQo+IC0gICAgdmFfc3RhcnQo
YXJncywgZm10KTsNCj4gLSAgICBXbWlTZXNzaW9uTG9nKCZ3bWksICZXbWlTZXNzaW9uSGFuZGxl
LCBmbXQsIGFyZ3MpOw0KPiAtICAgIHZhX2VuZChhcmdzKTsNCj4gLX0NCj4gLQ0KPiAtDQo+IC1C
T09MIFNodXRkb3duWFNBY2Nlc3Nvcih2b2lkKQ0KPiAtew0KPiAtICAgIGlmICh3bWkgPT0gTlVM
TCkgew0KPiAtICAgICAgICByZXR1cm4gZmFsc2U7DQo+IC0gICAgfQ0KPiAtICAgIGlmIChXbWlT
ZXNzaW9uSGFuZGxlID09IE5VTEwpIHsNCj4gLSAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAtICAg
IH0NCj4gLSAgICByZXR1cm4gV21pU2Vzc2lvbkVuZCgmd21pLCBXbWlTZXNzaW9uSGFuZGxlKTsN
Cj4gLQ0KPiAtfQ0KPiAtDQo+IC1pbnQgWGVuc3RvcmVQcmludGYoY29uc3QgY2hhciAqcGF0aCwg
Y29uc3QgY2hhciAqZm10LCAuLi4pDQo+IC17DQo+IC0gICAgdmFfbGlzdCBsOw0KPiAtICAgIGNo
YXIgYnVmWzQwOTZdOw0KPiAtICAgIGludCBjbnQ7DQo+IC0NCj4gLSAgICB2YV9zdGFydChsLCBm
bXQpOw0KPiAtICAgIGNudCA9IF92c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgZm10LCBsKTsN
Cj4gLSAgICB2YV9lbmQobCk7DQo+IC0gICAgaWYgKGNudCA8IDApIHsNCj4gLSAgICAgICAgREJH
UFJJTlQgKCgiQ2Fubm90IGZvcm1hdCBkYXRhIGZvciBYZW5zdG9yZVByaW50ZiEiKSk7DQo+IC0g
ICAgICAgIHJldHVybiAtMTsNCj4gLSAgICB9DQo+IC0gICAgT3V0cHV0RGVidWdTdHJpbmcoYnVm
KTsNCj4gLSAgICAvKiBOb3cgaGF2ZSB0aGUgdGhpbmcgd2UncmUgdHJ5aW5nIHRvIHdyaXRlLiAq
Lw0KPiAtICAgIHJldHVybiBXbWlTZXNzaW9uU2V0RW50cnkoJndtaSwgJldtaVNlc3Npb25IYW5k
bGUsIHBhdGgsIGJ1Zik7DQo+IC19DQo+IC0NCj4gLUJPT0wgWGVuc3RvcmVLaWNrWGFwaSgpDQo+
IC17DQo+IC0gICAgLyogTmV3IHByb3RvY29sICovDQo+IC0gICAgaWYgKFhlbnN0b3JlUHJpbnRm
KCJkYXRhL3VwZGF0ZV9jbnQiLCAiJUk2NGQiLCB1cGRhdGVfY250KSl7DQo+IC0gICAgICAgIFhz
TG9nKCJOZXcga2ljayBmYWlsZWQgIik7DQo+IC0gICAgICAgIHJldHVybiBmYWxzZTsNCj4gLSAg
ICB9DQo+IC0gICAgLyogT2xkIHByb3RvY29sICovDQo+IC0gICAgaWYgKFdtaVNlc3Npb25TZXRF
bnRyeSgmd21pLCAmV21pU2Vzc2lvbkhhbmRsZSwgImRhdGEvdXBkYXRlZCIsDQo+ICIxIikpew0K
PiAtICAgICAgICBYc0xvZygiT2xkIGtpY2sgZmFpbGVkIik7DQo+IC0gICAgICAgIHJldHVybiBm
YWxzZTsNCj4gLSAgICB9DQo+IC0gICAgdXBkYXRlX2NudCsrOw0KPiAtICAgIHJldHVybiB0cnVl
Ow0KPiAtfQ0KPiAtDQo+IC0NCj4gLWludA0KPiAtWGVuc3RvcmVSZW1vdmUoY29uc3QgY2hhciAq
cGF0aCkNCj4gLXsNCj4gLSAgICBpZiAod21pID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybiAt
MTsNCj4gLQ0KPiAtICAgIGlmIChXbWlTZXNzaW9uSGFuZGxlID09IE5VTEwpDQo+IC0gICAgICAg
IHJldHVybiAtMTsNCj4gLQ0KPiAtICAgIGlmIChXbWlTZXNzaW9uUmVtb3ZlRW50cnkoJndtaSwg
JldtaVNlc3Npb25IYW5kbGUsIHBhdGgpKQ0KPiAtICAgICAgICByZXR1cm4gLTE7DQo+IC0gICAg
ZWxzZQ0KPiAtICAgICAgICByZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3NpemVfdA0KPiAtWGVu
c3RvcmVSZWFkKGNvbnN0IGNoYXIqIHBhdGgsIGNoYXIqKiB2YWx1ZSkNCj4gLXsNCj4gLSAgICBz
aXplX3QgbGVuOw0KPiAtICAgICp2YWx1ZSA9V21pU2Vzc2lvbkdldEVudHJ5KCZ3bWksICZXbWlT
ZXNzaW9uSGFuZGxlLCBwYXRoLCAmbGVuKTsNCj4gLSAgICBpZiAoKnZhbHVlKQ0KPiAtICAgICAg
ICByZXR1cm4gKHNzaXplX3QpbGVuOw0KPiAtICAgIGVsc2UNCj4gLSAgICAgICAgcmV0dXJuIC0x
Ow0KPiAtfQ0KPiAtDQo+IC0NCj4gLWJvb2wgWGVuc3RvcmVSZWFkRHdvcmQoY29uc3QgY2hhciAq
cGF0aCwgRFdPUkQgKnZhbHVlKSB7DQo+IC0gICAgY2hhciogYnVmZmVyOw0KPiAtICAgIHNzaXpl
X3QgbGVuOw0KPiAtICAgIGxlbiA9IFhlbnN0b3JlUmVhZChwYXRoLCAmYnVmZmVyKTsNCj4gLSAg
ICBpZiAobGVuIDw9IDApIHsNCj4gLSAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgIH0NCj4g
LSAgICAqdmFsdWUgPSBhdG9pKGJ1ZmZlcik7DQo+IC0NCj4gLSAgICBYc0ZyZWUoYnVmZmVyKTsN
Cj4gLQ0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAtfQ0KPiAtDQo+IC12b2lkICoNCj4gLVhlbnN0
b3JlV2F0Y2goY29uc3QgY2hhciAqcGF0aCwgSEFORExFIGV2ZW50LCBIQU5ETEUgZXJyb3JldmVu
dCkNCj4gLXsNCj4gLQ0KPiAtICAgIGlmICh3bWkgPT0gTlVMTCkgew0KPiAtICAgICAgICBPdXRw
dXREZWJ1Z1N0cmluZygiV01JIGlzIG51bGxcbiIpOw0KPiAtICAgICAgICByZXR1cm4gTlVMTDsN
Cj4gLSAgICB9DQo+IC0gICAgaWYgKFdtaVNlc3Npb25IYW5kbGUgPT0gTlVMTCkgew0KPiAtICAg
ICAgICBPdXRwdXREZWJ1Z1N0cmluZygiU2Vzc2lvbiBpcyBudWxsXG4iKTsNCj4gLSAgICAgICAg
cmV0dXJuIE5VTEw7DQo+IC0gICAgfQ0KPiAtICAgIHJldHVybiBXbWlTZXNzaW9uV2F0Y2goJndt
aSwgJldtaVNlc3Npb25IYW5kbGUsIHBhdGgsIGV2ZW50LA0KPiBlcnJvcmV2ZW50KTsNCj4gLX0N
Cj4gLQ0KPiAtQk9PTA0KPiAtWGVuc3RvcmVVbndhdGNoKHZvaWQgKndhdGNoKQ0KPiAtew0KPiAt
ICAgIHJldHVybiBXbWlTZXNzaW9uVW53YXRjaCgmd21pLCAmV21pU2Vzc2lvbkhhbmRsZSwgd2F0
Y2gpOw0KPiAtfQ0KPiAtDQo+IC12b2lkDQo+IC1YZW5zdG9yZUZyZWUodm9pZCAqdG9mcmVlKQ0K
PiAtew0KPiAtICAgIHJldHVybiBYc0ZyZWUodG9mcmVlKTsNCj4gLX0NCj4gLQ0KPiBkaWZmIC0t
Z2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTQWNjZXNzb3IuaA0KPiBiL3NyYy93aW4zMnN0dWJh
Z2VudC9YU0FjY2Vzc29yLmgNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDJl
ZDQxYjAuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTQWNjZXNzb3IuaA0K
PiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDEyNiArMCwwIEBADQo+IC0vKiBDb3B5cmlnaHQgKGMp
IENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0K
PiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywN
Cj4gLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQNCj4gLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+IC0gKg0K
PiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAqICAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiAt
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXINCj4gLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLg0KPiAtICoNCj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0K
PiAtICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywNCj4gLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUg0KPiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNV
Q0ggREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLQ0KPiAtI2lmbmRlZiBfWFNBQ0NFU1NPUl9IDQo+
IC0jZGVmaW5lIF9YU0FDQ0VTU09SX0gNCj4gLQ0KPiAtI2luY2x1ZGUgPHN0cmluZz4NCj4gLSNp
bmNsdWRlICJ3aW5kb3dzLmgiDQo+IC0NCj4gLQ0KPiAtdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCj4g
LQ0KPiAtI2RlZmluZSBNQVhfWEVOQlVTX1BBVEggMjU2DQo+IC0NCj4gLSNpZmRlZiBBTUQ2NA0K
PiAtdHlwZWRlZiBsb25nIGxvbmcgc3NpemVfdDsNCj4gLSNlbHNlDQo+IC10eXBlZGVmIGxvbmcg
c3NpemVfdDsNCj4gLSNlbmRpZg0KPiAtDQo+IC1CT09MIEluaXRYU0FjY2Vzc29yKCk7DQo+IC1C
T09MIFNodXRkb3duWFNBY2Nlc3NvcigpOw0KPiAtc3NpemVfdCBYZW5zdG9yZVJlYWQoY29uc3Qg
Y2hhciAqcGF0aCwgY2hhciAqKnZhbHVlKTsNCj4gLWludCBYZW5zdG9yZVJlbW92ZShjb25zdCBj
aGFyICpwYXRoKTsNCj4gLWludCBYZW5zdG9yZVByaW50Zihjb25zdCBjaGFyICpwYXRoLCBjb25z
dCBjaGFyICpmbXQsIC4uLik7DQo+IC1pbnQgWGVuc3RvcmVXcml0ZShjb25zdCBjaGFyICpwYXRo
LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsNCj4gLUJPT0wgWGVuc3RvcmVLaWNrWGFw
aSh2b2lkKTsNCj4gLXZvaWQgKlhlbnN0b3JlV2F0Y2goY29uc3QgY2hhciAqcGF0aCwgSEFORExF
IGV2ZW50LCBIQU5ETEUNCj4gZXJyb3JldmVudCk7DQo+IC1CT09MIFhlbnN0b3JlVW53YXRjaCh2
b2lkICp3YXRjaCk7DQo+IC1pbnQgTGlzdGVuU3VzcGVuZChIQU5ETEUgZXZ0LCBIQU5ETEUgZXJy
b3JldmVudCk7DQo+IC12b2lkIEdldFhlblRpbWUoRklMRVRJTUUgKnJlcyk7DQo+IC12b2lkIFhz
TG9nKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsNCj4gLXZvaWQgWGVuc3RvcmVGcmVlKHZvaWQgKnRv
ZnJlZSk7DQo+IC12b2lkICpYc0FsbG9jKHNpemVfdCBzaXplKTsNCj4gLXZvaWQgWHNGcmVlKGNv
bnN0IHZvaWQgKmJ1Zik7DQo+IC1ib29sIFhlbnN0b3JlUmVhZER3b3JkKGNvbnN0IGNoYXIgKiBw
YXRoLCBEV09SRCAqdmFsdWUpOw0KPiAtDQo+IC0jaWYgREJHDQo+IC0NCj4gLSNpbmNsdWRlIDxz
dGRhcmcuaD4gICAgICAgICAvLyB2YV9saXN0DQo+IC0jaW5jbHVkZSA8c3RkaW8uaD4gICAgICAg
ICAgLy8gdnNwcmludGYNCj4gLSNpbmNsdWRlIDxtYWxsb2MuaD4NCj4gLQ0KPiAtI2luY2x1ZGUg
PGFzc2VydC5oPg0KPiAtI2luY2x1ZGUgPHRjaGFyLmg+DQo+IC0NCj4gLV9faW5saW5lIHZvaWQg
RGVidWdQcmludCggSU4gTFBDVFNUUiBtc2csIElOIC4uLiApDQo+IC17DQo+IC0gICAgVENIQVIg
ICBidWZmZXJbMjU2XTsNCj4gLSAgICBpbnQgICAgIHJlczsNCj4gLSAgICB2YV9saXN0IGFyZ3M7
DQo+IC0NCj4gLSAgICB2YV9zdGFydCggYXJncywgbXNnICk7DQo+IC0jcHJhZ21hIHByZWZhc3Qo
c3VwcHJlc3M6IDI4NzE5LCAiWWVzLCB3ZSBhbGwga25vdyBfdnNucHJpbnRmIGlzIGJhbm5lZCBp
bg0KPiBkcml2ZXJzLCB0aGlzIGlzIHVzZXIgbGV2ZWwiKTsNCj4gLSAgICByZXMgPSBfdnNudHBy
aW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpIC8gc2l6ZW9mKGJ1ZmZlclswXSksIG1zZywgYXJn
cyk7DQo+IC0gICAgaWYgKHJlcyA+PSAwKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgT3V0cHV0RGVi
dWdTdHJpbmcoIGJ1ZmZlciApOw0KPiAtICAgIH0NCj4gLSAgICBlbHNlDQo+IC0gICAgew0KPiAt
ICAgICAgICBUQ0hBUiAqcDsNCj4gLSAgICAgICAgaW50IGNvdW50Ow0KPiAtDQo+IC0gICAgICAg
IGNvdW50ID0gNTEyOw0KPiAtICAgICAgICBmb3IgKDs7KSB7DQo+IC0gICAgICAgICAgICBwID0g
KFRDSEFSICopbWFsbG9jKGNvdW50ICogc2l6ZW9mIChUQ0hBUikpOw0KPiAtICAgICAgICAgICAg
aWYgKCFwKSB7DQo+IC0gICAgICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoX1QoIk91dCBv
ZiBtZW1vcnkgZm9yIGRlYnVnIG1lc3NhZ2UhXG4iKSk7DQo+IC0gICAgICAgICAgICAgICAgYnJl
YWs7DQo+IC0gICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICByZXMgPSBfdnNudHByaW50Zihw
LCBjb3VudCwgbXNnLCBhcmdzKTsNCj4gLSAgICAgICAgICAgIGlmIChyZXMgPj0gMCkNCj4gLSAg
ICAgICAgICAgICAgICBicmVhazsNCj4gLQ0KPiAtICAgICAgICAgICAgZnJlZShwKTsNCj4gLSAg
ICAgICAgICAgIGNvdW50ICs9IDI1NjsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBpZiAocCkg
ew0KPiAtICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIHAgKTsNCj4gLSAgICAgICAgICAg
IGZyZWUocCk7DQo+IC0gICAgICAgIH0NCj4gLSAgICB9DQo+IC0gICAgdmFfZW5kKGFyZ3MpOw0K
PiAtfQ0KPiAtDQo+IC0jZGVmaW5lIERCR1BSSU5UKF94XykgRGVidWdQcmludCBfeF8NCj4gLSNk
ZWZpbmUgQVNTRVJUICBhc3NlcnQNCj4gLQ0KPiAtI2Vsc2UNCj4gLQ0KPiAtI2RlZmluZSBEQkdQ
UklOVChfeF8pDQo+IC0jZGVmaW5lIEFTU0VSVA0KPiAtDQo+IC0jZW5kaWYgLy8gREJHDQo+IC0N
Cj4gLSNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTZXJ2aWNlLmNw
cA0KPiBiL3NyYy93aW4zMnN0dWJhZ2VudC9YU2VydmljZS5jcHANCj4gZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0DQo+IGluZGV4IDFmYmIxMzguLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1
YmFnZW50L1hTZXJ2aWNlLmNwcA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDEwNDQgKzAsMCBA
QA0KPiAtLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+IC0gKiBBbGwgcmln
aHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+IC0gKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+IC0gKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyLg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+IC0gKiAgICAgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gLSAqDQo+IC0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gLSAqIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+IC0gKiBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0K
PiAtICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUNCj4gLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SDQo+IC0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+IC0gKiBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gLSAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiAtICogV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+
IC0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFDQo+IC0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GDQo+IC0gKiBTVUNIIERBTUFHRS4NCj4gLSAqLw0KPiAtDQo+IC0jaW5jbHVk
ZSA8d2luZG93cy5oPg0KPiAtI2luY2x1ZGUgPHNobG9iai5oPg0KPiAtI2luY2x1ZGUgPHByb2Nl
c3MuaD4NCj4gLSNpbmNsdWRlICJwb3dycHJvZi5oIg0KPiAtI2luY2x1ZGUgPHdpbnVzZXIuaD4N
Cj4gLSNpbmNsdWRlICJzdGRhZnguaCINCj4gLSNpbmNsdWRlICJYU0FjY2Vzc29yLmgiDQo+IC0j
aW5jbHVkZSAiV01JQWNjZXNzb3IuaCINCj4gLSNpbmNsdWRlICJYU2VydmljZS5oIg0KPiAtDQo+
IC0jaW5jbHVkZSAibWVzc2FnZXMuaCINCj4gLQ0KPiAtI2luY2x1ZGUgPHNldHVwYXBpLmg+DQo+
IC0jaW5jbHVkZSA8Y2ZnbWdyMzIuaD4NCj4gLSNpbmNsdWRlIDxpbml0Z3VpZC5oPg0KPiAtI2lu
Y2x1ZGUgPGRldmd1aWQuaD4NCj4gLSNpbmNsdWRlIDx3aW50cnVzdC5oPg0KPiAtI2luY2x1ZGUg
PHNoZWxsYXBpLmg+DQo+IC0NCj4gLSNpZmRlZiBfV0lONjQNCj4gLSNkZWZpbmUgWEVOVE9PTFNf
SU5TVEFMTF9SRUdfS0VZDQo+ICJTT0ZUV0FSRVxcV293NjQzMk5vZGVcXENpdHJpeFxcWGVuVG9v
bHMiDQo+IC0jZGVmaW5lIFhFTlRPT0xTX0lOU1RBTExfUkVHX0tFWTY0ICJTT0ZUV0FSRVxcQ2l0
cml4XFxYZW5Ub29scyINCj4gLSNlbHNlDQo+IC0jZGVmaW5lIFhFTlRPT0xTX0lOU1RBTExfUkVH
X0tFWSAgICJTT0ZUV0FSRVxcQ2l0cml4XFxYZW5Ub29scyINCj4gLSNlbmRpZg0KPiAtDQo+IC1T
RVJWSUNFX1NUQVRVUyBTZXJ2aWNlU3RhdHVzOw0KPiAtU0VSVklDRV9TVEFUVVNfSEFORExFIGhT
dGF0dXM7DQo+IC0NCj4gLXN0YXRpYyBIQU5ETEUgaFNlcnZpY2VFeGl0RXZlbnQ7DQo+IC1zdGF0
aWMgVUxPTkcgV2luZG93c1ZlcnNpb247DQo+IC1zdGF0aWMgQk9PTCBMZWdhY3lIYWwgPSBGQUxT
RTsNCj4gLXN0YXRpYyBISU5TVEFOQ0UgbG9jYWxfaGluc3RhbmNlOw0KPiAtDQo+IC1IQU5ETEUg
ZXZlbnRMb2c7DQo+IC0jZGVmaW5lIFNJWkVDSEFSUyh4KSAoc2l6ZW9mKCh4KSkvc2l6ZW9mKFRD
SEFSKSkNCj4gLQ0KPiAtLy8gSW50ZXJuYWwgcm91dGluZXMNCj4gLXN0YXRpYyBEV09SRCBXSU5B
UEkgU2VydmljZUNvbnRyb2xIYW5kbGVyKERXT1JEIHJlcXVlc3QsIERXT1JEDQo+IGV2dFR5cGUs
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFZPSUQsIExQ
Vk9JRCk7DQo+IC1zdGF0aWMgdm9pZCBTZXJ2aWNlQ29udHJvbE1hbmFnZXJVcGRhdGUoRFdPUkQg
ZHdFeGl0Q29kZSwgRFdPUkQNCj4gZHdTdGF0ZSk7DQo+IC1zdGF0aWMgdm9pZCBXSU5BUEkgU2Vy
dmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsNCj4gLXN0YXRpYyB2b2lkIEdldFdpbmRv
d3NWZXJzaW9uKCk7DQo+IC0NCj4gLXZvaWQgUHJpbnRFcnJvcihjb25zdCBjaGFyICpmdW5jLCBE
V09SRCBlcnIpDQo+IC17DQo+IC0gICAgTFBWT0lEIGxwTXNnQnVmOw0KPiAtICAgIEZvcm1hdE1l
c3NhZ2UoDQo+IC0gICAgICAgIEZPUk1BVF9NRVNTQUdFX0FMTE9DQVRFX0JVRkZFUiB8DQo+IC0g
ICAgICAgIEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNLA0KPiAtICAgICAgICBOVUxMLA0KPiAt
ICAgICAgICBlcnIsDQo+IC0gICAgICAgIE1BS0VMQU5HSUQoTEFOR19ORVVUUkFMLCBTVUJMQU5H
X0RFRkFVTFQpLA0KPiAtICAgICAgICAoTFBUU1RSKSAmbHBNc2dCdWYsDQo+IC0gICAgICAgIDAs
DQo+IC0gICAgICAgIE5VTEwpOw0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKChMUFRTVFIpbHBN
c2dCdWYpOw0KPiAtICAgIFhzTG9nKCIlcyBmYWlsZWQ6ICVzICgleCkiLCBmdW5jLCBscE1zZ0J1
ZiwgZXJyKTsNCj4gLSAgICBYZW5zdG9yZVByaW50ZigiY29udHJvbC9lcnJvciIsICIlcyBmYWls
ZWQ6ICVzICgleCkiLCBmdW5jLCBscE1zZ0J1ZiwgZXJyKTsNCj4gLSAgICBMb2NhbEZyZWUobHBN
c2dCdWYpOw0KPiAtfQ0KPiAtDQo+IC12b2lkIFByaW50RXJyb3IoY29uc3QgY2hhciAqZnVuYykN
Cj4gLXsNCj4gLSAgICBQcmludEVycm9yKGZ1bmMsIEdldExhc3RFcnJvcigpKTsNCj4gLX0NCj4g
LQ0KPiAtdm9pZCBQcmludFVzYWdlKCkNCj4gLXsNCj4gLSAgICBwcmludGYoIlVzYWdlOiB4ZW5z
ZXJ2aWNlIFstdV1cbiIpOw0KPiAtDQo+IC0gICAgcHJpbnRmKCJcdCAtdTogdW5pbnN0YWxsIHNl
cnZpY2VcbiIpOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLQ0KPiAtc3RydWN0IHdhdGNoX2V2ZW50IHsN
Cj4gLSAgICBIQU5ETEUgZXZlbnQ7DQo+IC0gICAgdm9pZCAqd2F0Y2g7DQo+IC19Ow0KPiAtDQo+
IC1zdGF0aWMgdm9pZA0KPiAtUmVsZWFzZVdhdGNoKHN0cnVjdCB3YXRjaF9ldmVudCAqd2UpDQo+
IC17DQo+IC0gICAgaWYgKHdlID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybjsNCj4gLSAgICBp
ZiAod2UtPmV2ZW50ICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQ0KPiAtICAgICAgICBDbG9zZUhh
bmRsZSh3ZS0+ZXZlbnQpOw0KPiAtICAgIGlmICh3ZS0+d2F0Y2gpDQo+IC0gICAgICAgIFhlbnN0
b3JlVW53YXRjaCh3ZS0+d2F0Y2gpOw0KPiAtICAgIGZyZWUod2UpOw0KPiAtfQ0KPiAtDQo+IC1z
dGF0aWMgY2hhciAqIEluaXRTdHJpbmcoY29uc3QgY2hhciAqIGlucHV0c3RyaW5nKQ0KPiAtew0K
PiAtICAgIGNoYXIgKm91dHB1dHN0cmluZyA9IChjaGFyICopY2FsbG9jKChzdHJsZW4oaW5wdXRz
dHJpbmcpKzEpLHNpemVvZihjaGFyKSk7DQo+IC0gICAgaWYgKG91dHB1dHN0cmluZyA9PSBOVUxM
KQ0KPiAtICAgICAgICBnb3RvIGZhaWxhbGxvYzsNCj4gLSAgICBzdHJjcHkob3V0cHV0c3RyaW5n
LCBpbnB1dHN0cmluZyk7DQo+IC0gICAgcmV0dXJuIG91dHB1dHN0cmluZzsNCj4gLQ0KPiAtZmFp
bGFsbG9jOg0KPiAtICAgIFhzTG9nKF9fRlVOQ1RJT05fXyAiIDogRmFpbCBtYWxsb2MiKTsNCj4g
LSAgICByZXR1cm4gTlVMTDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgRnJlZVN0cmluZyhj
b25zdCBjaGFyICpzdHJpbmcpDQo+IC17DQo+IC0gICAgZnJlZSgodm9pZCAqKXN0cmluZyk7DQo+
IC19DQo+IC0NCj4gLXN0YXRpYyBjaGFyKiBQcmludGZTdHJpbmcoY29uc3QgY2hhciAqZm10LCAu
Li4pew0KPiAtICAgIHZhX2xpc3QgbDsNCj4gLSAgICB2YV9zdGFydChsLCBmbXQpOw0KPiAtICAg
IGludCBudW1jaGFycyA9IF92c2NwcmludGYoZm10LCBsKTsNCj4gLSAgICBjaGFyICpvdXRwdXRz
dHJpbmcgPSAoY2hhciAqKWNhbGxvYyhudW1jaGFycyArIDEsIHNpemVvZihjaGFyKSk7DQo+IC0N
Cj4gLSAgICBpZiAob3V0cHV0c3RyaW5nID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybiBOVUxM
Ow0KPiAtDQo+IC0gICAgX3ZzbnByaW50ZihvdXRwdXRzdHJpbmcsIG51bWNoYXJzLCBmbXQsIGwp
Ow0KPiAtICAgIHJldHVybiBvdXRwdXRzdHJpbmc7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBzdHJ1
Y3Qgd2F0Y2hfZXZlbnQgKg0KPiAtRXN0YWJsaXNoV2F0Y2goY29uc3QgY2hhciAqcGF0aCwgSEFO
RExFIGVycm9yZXZlbnQpDQo+IC17DQo+IC0gICAgc3RydWN0IHdhdGNoX2V2ZW50ICp3ZTsNCj4g
LSAgICBEV09SRCBlcnI7DQo+IC0gICAgWHNMb2coIkVzdGFibGlzaCB3YXRjaCAlcyIscGF0aCk7
DQo+IC0gICAgd2UgPSAoc3RydWN0IHdhdGNoX2V2ZW50ICopbWFsbG9jKHNpemVvZigqd2UpKTsN
Cj4gLSAgICBpZiAoIXdlKSB7DQo+IC0gICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9OT1RfRU5P
VUdIX01FTU9SWSk7DQo+IC0gICAgICAgIHJldHVybiBOVUxMOw0KPiAtICAgIH0NCj4gLSAgICBt
ZW1zZXQod2UsIDAsIHNpemVvZigqd2UpKTsNCj4gLSAgICB3ZS0+d2F0Y2ggPSBOVUxMOw0KPiAt
ICAgIHdlLT5ldmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7DQo+
IC0gICAgaWYgKHdlLT5ldmVudCAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gLSAgICAgICAg
d2UtPndhdGNoID0gWGVuc3RvcmVXYXRjaChwYXRoLCB3ZS0+ZXZlbnQsIGVycm9yZXZlbnQpOw0K
PiAtICAgIGlmICh3ZS0+d2F0Y2ggPT0gTlVMTCkgew0KPiAtICAgICAgICBPdXRwdXREZWJ1Z1N0
cmluZygiV2F0Y2ggaXMgbnVsbFxuIik7DQo+IC0gICAgICAgIGVyciA9IEdldExhc3RFcnJvcigp
Ow0KPiAtICAgICAgICBSZWxlYXNlV2F0Y2god2UpOw0KPiAtICAgICAgICBTZXRMYXN0RXJyb3Io
ZXJyKTsNCj4gLSAgICAgICAgcmV0dXJuIE5VTEw7DQo+IC0gICAgfQ0KPiAtICAgIHJldHVybiB3
ZTsNCj4gLX0NCj4gLQ0KPiAtc3RydWN0IHdhdGNoX2ZlYXR1cmUgew0KPiAtICAgIHN0cnVjdCB3
YXRjaF9ldmVudCAqd2F0Y2g7DQo+IC0gICAgY29uc3QgY2hhciAqZmVhdHVyZV9mbGFnOw0KPiAt
ICAgIGNvbnN0IGNoYXIgKm5hbWU7DQo+IC0gICAgQk9PTCAoKmhhbmRsZXIpKHZvaWQgKik7DQo+
IC0gICAgdm9pZCAqY3R4Ow0KPiAtfTsNCj4gLQ0KPiAtI2RlZmluZSBNQVhfRkVBVFVSRVMgMTAN
Cj4gLXN0cnVjdCB3YXRjaF9mZWF0dXJlX3NldCB7DQo+IC0gICAgc3RydWN0IHdhdGNoX2ZlYXR1
cmUgZmVhdHVyZXNbTUFYX0ZFQVRVUkVTXTsNCj4gLSAgICB1bnNpZ25lZCBucl9mZWF0dXJlczsN
Cj4gLX07DQo+IC0NCj4gLXN0YXRpYyBCT09MDQo+IC1BZGRGZWF0dXJlKHN0cnVjdCB3YXRjaF9m
ZWF0dXJlX3NldCAqd2ZzLCBjb25zdCBjaGFyICpwYXRoLA0KPiAtICAgICAgICAgICBjb25zdCBj
aGFyICpmbGFnLCBjb25zdCBjaGFyICpuYW1lLA0KPiAtICAgICAgICAgICBCT09MICgqaGFuZGxl
cikodm9pZCAqKSwgdm9pZCAqY3R4LCBIQU5ETEUgZXJyb3JldmVudCkNCj4gLXsNCj4gLSAgICB1
bnNpZ25lZCBuOw0KPiAtICAgIGlmICh3ZnMtPm5yX2ZlYXR1cmVzID09IE1BWF9GRUFUVVJFUykN
Cj4gLSAgICAgICAgZ290byBmYWlsZmVhdHVyZXM7DQo+IC0NCj4gLSAgICBuID0gd2ZzLT5ucl9m
ZWF0dXJlczsNCj4gLQ0KPiAtICAgIHdmcy0+ZmVhdHVyZXNbbl0ud2F0Y2ggPSBFc3RhYmxpc2hX
YXRjaChwYXRoLCBlcnJvcmV2ZW50KTsNCj4gLSAgICBpZiAod2ZzLT5mZWF0dXJlc1tuXS53YXRj
aCA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIGZhaWx3YXRjaDsNCj4gLQ0KPiAtICAgIHdmcy0+
ZmVhdHVyZXNbbl0uZmVhdHVyZV9mbGFnID0gZmxhZzsNCj4gLSAgICB3ZnMtPmZlYXR1cmVzW25d
LmhhbmRsZXIgPSBoYW5kbGVyOw0KPiAtICAgIHdmcy0+ZmVhdHVyZXNbbl0uY3R4ID0gY3R4Ow0K
PiAtICAgIHdmcy0+ZmVhdHVyZXNbbl0ubmFtZSA9IEluaXRTdHJpbmcobmFtZSk7DQo+IC0gICAg
aWYgKHdmcy0+ZmVhdHVyZXNbbl0ubmFtZSA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIGZhaWxu
YW1lOw0KPiAtICAgIHdmcy0+bnJfZmVhdHVyZXMrKzsNCj4gLSAgICByZXR1cm4gdHJ1ZTsNCj4g
LQ0KPiAtZmFpbG5hbWU6DQo+IC0gICAgUHJpbnRFcnJvcigiRmFpbGVkIHRvIGFsbG9jYXRlIHN0
cmluZyIpOw0KPiAtZmFpbHdhdGNoOg0KPiAtICAgIFByaW50RXJyb3IoIkVzdGFibGlzaFdhdGNo
KCkgZm9yIEFkZEZlYXR1cmUoKSIpOw0KPiAtZmFpbGZlYXR1cmVzOg0KPiAtICAgIFhzTG9nKCJU
b28gbWFueSBmZWF0dXJlcyIpOw0KPiAtICAgIFByaW50RXJyb3IoIlRvbyBtYW55IGZlYXR1cmVz
ISIsIEVSUk9SX0lOVkFMSURfRlVOQ1RJT04pOw0KPiAtICAgIHJldHVybiBmYWxzZTsNCj4gLX0N
Cj4gLQ0KPiAtc3RhdGljIHZvaWQgUmVtb3ZlRmVhdHVyZXMoc3RydWN0IHdhdGNoX2ZlYXR1cmVf
c2V0ICp3ZnMpIHsNCj4gLSAgICB1bnNpZ25lZCB4Ow0KPiAtICAgIGZvciAoeCA9IDA7IHggPCB3
ZnMtPm5yX2ZlYXR1cmVzOyB4KyspIHsNCj4gLSAgICAgICAgUmVsZWFzZVdhdGNoKHdmcy0+ZmVh
dHVyZXNbeF0ud2F0Y2gpOw0KPiAtICAgICAgICB3ZnMtPmZlYXR1cmVzW3hdLndhdGNoID0gTlVM
TDsNCj4gLSAgICAgICAgRnJlZVN0cmluZyh3ZnMtPmZlYXR1cmVzW3hdLm5hbWUpOw0KPiAtICAg
ICAgICBYZW5zdG9yZVJlbW92ZSh3ZnMtPmZlYXR1cmVzW3hdLmZlYXR1cmVfZmxhZyk7DQo+IC0g
ICAgfQ0KPiAtICAgIHdmcy0+bnJfZmVhdHVyZXMgPSAwOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMg
Qk9PTA0KPiAtQWR2ZXJ0aXNlRmVhdHVyZXMoc3RydWN0IHdhdGNoX2ZlYXR1cmVfc2V0ICp3ZnMp
DQo+IC17DQo+IC0gICAgdW5zaWduZWQgeDsNCj4gLSAgICBmb3IgKHggPSAwOyB4IDwgd2ZzLT5u
cl9mZWF0dXJlczsgeCsrKSB7DQo+IC0gICAgICAgIGlmICh3ZnMtPmZlYXR1cmVzW3hdLmZlYXR1
cmVfZmxhZyAhPSBOVUxMKQ0KPiAtICAgICAgICAgICAgaWYgKFhlbnN0b3JlUHJpbnRmKHdmcy0+
ZmVhdHVyZXNbeF0uZmVhdHVyZV9mbGFnLCAiMSIpKXsNCj4gLSAgICAgICAgICAgICAgICBYc0xv
ZygiRmFpbGVkIHRvIGFkdmVydGlzZSAlcyIsd2ZzLT5mZWF0dXJlc1t4XS5uYW1lKTsNCj4gLSAg
ICAgICAgICAgIH0NCj4gLSAgICB9DQo+IC0gICAgcmV0dXJuIHRydWU7DQo+IC19DQo+IC0NCj4g
LQ0KPiAtdm9pZCBTZXJ2aWNlVW5pbnN0YWxsKCkNCj4gLXsNCj4gLSAgICBTQ19IQU5ETEUgICBo
U3ZjOw0KPiAtICAgIFNDX0hBTkRMRSAgIGhNZ3I7DQo+IC0NCj4gLSAgICBoTWdyID0gT3BlblND
TWFuYWdlcihOVUxMLCBOVUxMLCBTQ19NQU5BR0VSX0FMTF9BQ0NFU1MpOw0KPiAtDQo+IC0gICAg
aWYgKCBoTWdyICkNCj4gLSAgICB7DQo+IC0gICAgICAgIGhTdmMgPSBPcGVuU2VydmljZShoTWdy
LCBTVkNfTkFNRSwgU0VSVklDRV9BTExfQUNDRVNTKTsNCj4gLQ0KPiAtICAgICAgICBpZiAoaFN2
YykNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgIC8vIHRyeSB0byBzdG9wIHRoZSBzZXJ2
aWNlDQo+IC0gICAgICAgICAgICAgaWYgKCBDb250cm9sU2VydmljZSggaFN2YywgU0VSVklDRV9D
T05UUk9MX1NUT1AsICZTZXJ2aWNlU3RhdHVzICkgKQ0KPiAtICAgICAgICAgICAgIHsNCj4gLSAg
ICAgICAgICAgICAgICBwcmludGYoIlN0b3BwaW5nICVzLiIsIFNWQ19ESVNQTEFZTkFNRSk7DQo+
IC0gICAgICAgICAgICAgICAgU2xlZXAoIDEwMDAgKTsNCj4gLQ0KPiAtICAgICAgICAgICAgICAg
IHdoaWxlICggUXVlcnlTZXJ2aWNlU3RhdHVzKCBoU3ZjLCAmU2VydmljZVN0YXR1cyApICkNCj4g
LSAgICAgICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgICAgIGlmICggU2VydmljZVN0
YXR1cy5kd0N1cnJlbnRTdGF0ZSA9PSBTRVJWSUNFX1NUT1BfUEVORElORyApDQo+IC0gICAgICAg
ICAgICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiLiIpOw0K
PiAtICAgICAgICAgICAgICAgICAgICAgICAgU2xlZXAoIDEwMDAgKTsNCj4gLSAgICAgICAgICAg
ICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgICAgICAgICBlbHNlDQo+IC0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgICAgICAgICB9DQo+IC0NCj4gLSAgICAgICAg
ICAgICAgICBpZiAoIFNlcnZpY2VTdGF0dXMuZHdDdXJyZW50U3RhdGUgPT0gU0VSVklDRV9TVE9Q
UEVEICkNCj4gLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiVzIHN0b3BwZWQuXG4iLCBT
VkNfRElTUExBWU5BTUUgKTsNCj4gLSAgICAgICAgICAgICAgICBlbHNlDQo+IC0gICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiXG4lcyBmYWlsZWQgdG8gc3RvcC5cbiIsIFNWQ19ESVNQTEFZTkFN
RSApOw0KPiAtICAgICAgICAgfQ0KPiAtDQo+IC0gICAgICAgICAvLyBub3cgcmVtb3ZlIHRoZSBz
ZXJ2aWNlDQo+IC0gICAgICAgICBpZiAoIERlbGV0ZVNlcnZpY2UoaFN2YykgKQ0KPiAtICAgICAg
ICAgICAgcHJpbnRmKCIlcyB1bmluc3RhbGxlZC5cbiIsIFNWQ19ESVNQTEFZTkFNRSApOw0KPiAt
ICAgICAgICAgZWxzZQ0KPiAtICAgICAgICAgICAgcHJpbnRmKCJVbmFibGUgdG8gdW5pbnN0YWxs
IC0gJWRcbiIsIEdldExhc3RFcnJvcigpKTsNCj4gLQ0KPiAtICAgICAgICAgQ2xvc2VTZXJ2aWNl
SGFuZGxlKGhTdmMpOw0KPiAtDQo+IC0gICAgICB9DQo+IC0gICAgICBlbHNlDQo+IC0gICAgICAg
ICBwcmludGYoIlVuYWJsZSB0byBvcGVuIHNlcnZpY2UgLSAlZFxuIiwgR2V0TGFzdEVycm9yKCkp
Ow0KPiAtDQo+IC0gICAgICBDbG9zZVNlcnZpY2VIYW5kbGUoaE1ncik7DQo+IC0gICB9DQo+IC0g
ICBlbHNlDQo+IC0gICAgICBwcmludGYoIlVuYWJsZSB0byBvcGVuIHNjbSAtICVkXG4iLCBHZXRM
YXN0RXJyb3IoKSk7DQo+IC0NCj4gLX0NCj4gLQ0KPiAtDQo+IC1pbnQgX19zdGRjYWxsDQo+IC1X
aW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuY2UsIEhJTlNUQU5DRSBpZ25vcmUsDQo+IC0gICAgICAg
IExQU1RSIGxwQ21kTGluZSwgaW50IG5DbWRTaG93KQ0KPiAtew0KPiAtICAgIGxvY2FsX2hpbnN0
YW5jZSA9IGhJbnN0YW5jZTsNCj4gLQ0KPiAtICAgIGlmIChzdHJsZW4obHBDbWRMaW5lKSA9PSAw
KSB7DQo+IC0gICAgICAgIFNFUlZJQ0VfVEFCTEVfRU5UUlkgU2VydmljZVRhYmxlWzJdOw0KPiAt
ICAgICAgICBTZXJ2aWNlVGFibGVbMF0ubHBTZXJ2aWNlTmFtZSA9IFNWQ19OQU1FOw0KPiAtICAg
ICAgICBTZXJ2aWNlVGFibGVbMF0ubHBTZXJ2aWNlUHJvYyA9DQo+IChMUFNFUlZJQ0VfTUFJTl9G
VU5DVElPTilTZXJ2aWNlTWFpbjsNCj4gLQ0KPiAtICAgICAgICBTZXJ2aWNlVGFibGVbMV0ubHBT
ZXJ2aWNlTmFtZSA9IE5VTEw7DQo+IC0gICAgICAgIFNlcnZpY2VUYWJsZVsxXS5scFNlcnZpY2VQ
cm9jID0gTlVMTDsNCj4gLQ0KPiAtICAgICAgICBEQkdQUklOVCgoIlhlblN2Yzogc3RhcnRpbmcg
Y3RybCBkaXNwYXRjaGVyICIpKTsNCj4gLQ0KPiAtICAgICAgICAvLyBTdGFydCB0aGUgY29udHJv
bCBkaXNwYXRjaGVyIHRocmVhZCBmb3Igb3VyIHNlcnZpY2UNCj4gLSAgICAgICAgaWYgKCFTdGFy
dFNlcnZpY2VDdHJsRGlzcGF0Y2hlcihTZXJ2aWNlVGFibGUpKQ0KPiAtICAgICAgICB7DQo+IC0g
ICAgICAgICAgICBpbnQgZXJyID0gR2V0TGFzdEVycm9yKCk7DQo+IC0gICAgICAgICAgICBpZiAo
R2V0TGFzdEVycm9yKCkgPT0NCj4gRVJST1JfRkFJTEVEX1NFUlZJQ0VfQ09OVFJPTExFUl9DT05O
RUNUKQ0KPiAtICAgICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgIERCR1BSSU5UKCgiWGVu
U3ZjOiB1bmFibGUgdG8gc3RhcnQgY3RybCBkaXNwYXRjaGVyIC0gJWQiLA0KPiBHZXRMYXN0RXJy
b3IoKSkpOw0KPiAtICAgICAgICAgICAgfQ0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGVsc2UN
Cj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgd2hlbiB0aGUgc2Vy
dmljZSBpcyBzaHV0IGRvd24uDQo+IC0gICAgICAgIH0NCj4gLSAgICB9IGVsc2UgaWYgKCFzdHJj
bXAobHBDbWRMaW5lLCAiLXUiKSB8fCAhc3RyY21wKGxwQ21kTGluZSwgIlwiLXVcIiIpKSB7DQo+
IC0gICAgICAgIFNlcnZpY2VVbmluc3RhbGwoKTsNCj4gLSAgICB9IGVsc2Ugew0KPiAtICAgICAg
ICBQcmludFVzYWdlKCk7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgcmV0dXJuIDA7DQo+IC19DQo+
IC0NCj4gLXZvaWQgQWNxdWlyZVN5c3RlbVByaXZpbGVnZShMUENUU1RSIG5hbWUpDQo+IC17DQo+
IC0gICAgSEFORExFIHRva2VuOw0KPiAtICAgIFRPS0VOX1BSSVZJTEVHRVMgdGtwOw0KPiAtICAg
IERXT1JEIGVycjsNCj4gLQ0KPiAtICAgIExvb2t1cFByaXZpbGVnZVZhbHVlKE5VTEwsIG5hbWUs
ICZ0a3AuUHJpdmlsZWdlc1swXS5MdWlkKTsNCj4gLSAgICB0a3AuUHJpdmlsZWdlQ291bnQgPSAx
Ow0KPiAtICAgIHRrcC5Qcml2aWxlZ2VzWzBdLkF0dHJpYnV0ZXMgPSBTRV9QUklWSUxFR0VfRU5B
QkxFRDsNCj4gLSAgICBpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nlc3MoKSwN
Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgVE9LRU5fQURKVVNUX1BSSVZJTEVHRVN8VE9L
RU5fUVVFUlksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0b2tlbikpIHsNCj4gLSAg
ICAgICAgREJHUFJJTlQoKCJGYWlsZWQgdG8gb3BlbiBsb2NhbCB0b2tlbi5cbiIpKTsNCj4gLSAg
ICB9IGVsc2Ugew0KPiAtICAgICAgICBBZGp1c3RUb2tlblByaXZpbGVnZXModG9rZW4sIEZBTFNF
LCAmdGtwLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCk7
DQo+IC0gICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOw0KPiAtICAgICAgICBpZiAoZXJyICE9
IEVSUk9SX1NVQ0NFU1MpIHsNCj4gLSAgICAgICAgICAgIFByaW50RXJyb3IoIkFkanVzdFRva2Vu
UHJpdmlsZWdlcyIsIGVycik7DQo+IC0gICAgICAgIH0NCj4gLSAgICB9DQo+IC19DQo+IC0NCj4g
LXN0YXRpYyB2b2lkIEFjcXVpcmVTeXN0ZW1TaHV0ZG93blByaXZpbGVnZSh2b2lkKQ0KPiAtew0K
PiAtICAgIEFjcXVpcmVTeXN0ZW1Qcml2aWxlZ2UoU0VfU0hVVERPV05fTkFNRSk7DQo+IC19DQo+
IC0NCj4gLWVudW0gWFNodXRkb3duVHlwZSB7DQo+IC0gICAgWFNodXRkb3duUG93ZXJvZmYsDQo+
IC0gICAgWFNodXRkb3duUmVib290LA0KPiAtICAgIFhTaHV0ZG93blN1c3BlbmQsDQo+IC0gICAg
WFNodXRkb3duUzMNCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBCT09MIG1heWJlUmVib290KHZvaWQg
KmN0eCkNCj4gLXsNCj4gLSAgICBjaGFyICpzaHV0ZG93bl90eXBlOw0KPiAtICAgIEJPT0wgcmVz
Ow0KPiAtICAgIGVudW0gWFNodXRkb3duVHlwZSB0eXBlOw0KPiAtICAgIGludCBjbnRyID0gMDsN
Cj4gLQ0KPiAtICAgIFhzTG9nKCJDaGVjayBpZiB3ZSBuZWVkIHRvIHNodXRkb3duIik7DQo+IC0N
Cj4gLSAgICBpZiAoWGVuc3RvcmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgJnNodXRkb3duX3R5
cGUpIDwgMCkgew0KPiAtICAgICAgICBYc0xvZygiTm8gbmVlZCB0byBzaHV0ZG93biIpOw0KPiAt
ICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gLSAgICB9DQo+IC0gICAgWHNMb2coIlNodXRkb3duIHR5
cGUgJXNcbiIsIHNodXRkb3duX3R5cGUpOw0KPiAtICAgIGlmIChzdHJjbXAoc2h1dGRvd25fdHlw
ZSwgInBvd2Vyb2ZmIikgPT0gMCB8fA0KPiAtICAgICAgICBzdHJjbXAoc2h1dGRvd25fdHlwZSwg
ImhhbHQiKSA9PSAwKSB7DQo+IC0gICAgICAgIHR5cGUgPSBYU2h1dGRvd25Qb3dlcm9mZjsNCj4g
LSAgICB9IGVsc2UgaWYgKHN0cmNtcChzaHV0ZG93bl90eXBlLCAicmVib290IikgPT0gMCkgew0K
PiAtICAgICAgICB0eXBlID0gWFNodXRkb3duUmVib290Ow0KPiAtICAgIH0gZWxzZSBpZiAoc3Ry
Y21wKHNodXRkb3duX3R5cGUsICJoaWJlcm5hdGUiKSA9PSAwKSB7DQo+IC0gICAgICAgIHR5cGUg
PSBYU2h1dGRvd25TdXNwZW5kOw0KPiAtICAgIH0gZWxzZSBpZiAoc3RyY21wKHNodXRkb3duX3R5
cGUsICJzMyIpID09IDApIHsNCj4gLSAgICAgICAgdHlwZSA9IFhTaHV0ZG93blMzOw0KPiAtICAg
IH0gZWxzZSB7DQo+IC0gICAgICAgIERCR1BSSU5UKCgiQmFkIHNodXRkb3duIHR5cGUgJXNcbiIs
IHNodXRkb3duX3R5cGUpKTsNCj4gLSAgICAgICAgZ290byBvdXQ7DQo+IC0gICAgfQ0KPiAtDQo+
IC0gICAgWHNMb2coIlJlcG9ydCBTaHV0ZG93biBFdmVudCIpOw0KPiAtICAgIC8qIFdlIHRyeSB0
byBzaHV0ZG93biBldmVuIGlmIHRoaXMgZmFpbHMsIHNpbmNlIGl0IG1pZ2h0IHdvcmsNCj4gLSAg
ICAgICBhbmQgaXQgY2FuJ3QgZG8gYW55IGhhcm0uICovDQo+IC0gICAgQWNxdWlyZVN5c3RlbVNo
dXRkb3duUHJpdmlsZWdlKCk7DQo+IC0NCj4gLSAgICBpZiAoZXZlbnRMb2cpIHsNCj4gLSAgICAg
ICAgRFdPUkQgZXZlbnRJZDsNCj4gLQ0KPiAtICAgICAgICBzd2l0Y2ggKHR5cGUpIHsNCj4gLSAg
ICAgICAgY2FzZSBYU2h1dGRvd25Qb3dlcm9mZjoNCj4gLSAgICAgICAgICAgIGV2ZW50SWQgPSBF
VkVOVF9YRU5VU0VSX1BPV0VST0ZGOw0KPiAtICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgICAg
IGNhc2UgWFNodXRkb3duUmVib290Og0KPiAtICAgICAgICAgICAgZXZlbnRJZCA9IEVWRU5UX1hF
TlVTRVJfUkVCT09UOw0KPiAtICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgICAgIGNhc2UgWFNo
dXRkb3duU3VzcGVuZDoNCj4gLSAgICAgICAgICAgIGV2ZW50SWQgPSBFVkVOVF9YRU5VU0VSX0hJ
QkVSTkFURTsNCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiAtICAgICAgICBjYXNlIFhTaHV0ZG93
blMzOg0KPiAtICAgICAgICAgICAgZXZlbnRJZCA9IEVWRU5UX1hFTlVTRVJfUzM7DQo+IC0gICAg
ICAgICAgICBicmVhazsNCj4gLSAgICAgICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIFhzTG9n
KCJEbyB0aGUgc2h1dGRvd24iKTsNCj4gLQ0KPiAtICAgIC8qIGRvIHRoZSBzaHV0ZG93biAqLw0K
PiAtICAgIHN3aXRjaCAodHlwZSkgew0KPiAtICAgIGNhc2UgWFNodXRkb3duUG93ZXJvZmY6DQo+
IC0gICAgY2FzZSBYU2h1dGRvd25SZWJvb3Q6DQo+IC0gICAgICAgIGlmIChXaW5kb3dzVmVyc2lv
biA+PSAweDUwMCAmJiBXaW5kb3dzVmVyc2lvbiA8IDB4NjAwKQ0KPiAtICAgICAgICB7DQo+IC0g
ICAgICAgICAgICAvKiBXaW5kb3dzIDIwMDAgSW5pdGlhdGVTeXN0ZW1TaHV0ZG93bkV4IGlzIGZ1
bm55IGluDQo+IC0gICAgICAgICAgICAgICB2YXJpb3VzIHdheXMgKGUuZy4gc29tZXRpbWVzIGZh
aWxzIHRvIHBvd2VyIG9mZiBhZnRlcg0KPiAtICAgICAgICAgICAgICAgc2h1dGRvd24sIGVzcGVj
aWFsbHkgaWYgdGhlIGxvY2FsIHRlcm1pbmFsIGlzIGxvY2tlZCwNCj4gLSAgICAgICAgICAgICAg
IG5vdCBkb2luZyBhbnl0aGluZyBpZiB0aGVyZSdzIG5vYm9keSBsb2dnZWQgb24sIGV0Yy4pLg0K
PiAtICAgICAgICAgICAgICAgRXhpdFdpbmRvd3NFeCBzZWVtcyB0byBiZSBtb3JlIHJlbGlhYmxl
LCBzbyB1c2UgaXQNCj4gLSAgICAgICAgICAgICAgIGluc3RlYWQuICovDQo+IC0gICAgICAgICAg
ICAvKiBYWFggSSBkb24ndCByZWFsbHkgdW5kZXJzdGFuZCB3aHkNCj4gLSAgICAgICAgICAgICAg
IEluaXRpYXRlU3lzdGVtU2h1dGRvd25FeCBiZWhhdmVzIHNvIGJhZGx5LiAqLw0KPiAtICAgICAg
ICAgICAgLyogSWYgdGhpcyBpcyBhIGxlZ2FjeSBoYWwgdGhlbiB1c2UgRVdYX1NIVVRET1dOIHdo
ZW4gc2h1dHRpbmcNCj4gLSAgICAgICAgICAgICAgIGRvd24gaW5zdGVhZCBvZiBFV1hfUE9XRVJP
RkYuICovDQo+IC0gICAgICAgIC8qIFNpbWlsYXIgcHJvYmxlbSBvbiBYUC4gU2h1dGRvd24vUmVi
b290IHdpbGwgaGFuZyB1bnRpbCB0aGUNCj4gV2VsY29tZQ0KPiAtICAgICAgICBzY3JlZW4gc2Ny
ZWVuc2F2ZXIgaXMgZGlzbWlzc2VkIGJ5IHRoZSBndWVzdCAqLw0KPiAtI3ByYWdtYSB3YXJuaW5n
IChkaXNhYmxlIDogMjgxNTkpDQo+IC0gICAgICAgICAgICByZXMgPSBFeGl0V2luZG93c0V4KCh0
eXBlID09IFhTaHV0ZG93blJlYm9vdCA/DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFV1hfUkVCT09UIDoNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChMZWdhY3lIYWwgPw0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVXWF9TSFVURE9XTiA6DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRVdYX1BPV0VST0ZGKSl8DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVXWF9GT1JDRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hURE5fUkVB
U09OX01BSk9SX09USEVSfA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSFRE
Tl9SRUFTT05fTUlOT1JfRU5WSVJPTk1FTlQgfA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSFRETl9SRUFTT05fRkxBR19QTEFOTkVEKTsNCj4gLSNwcmFnbWEgd2FybmluZyAo
ZGVmYXVsdDogMjgxNTkpDQo+IC0gICAgICAgICAgICBpZiAoIXJlcykgew0KPiAtICAgICAgICAg
ICAgICAgIFByaW50RXJyb3IoIkV4aXRXaW5kb3dzRXgiKTsNCj4gLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7DQo+IC0gICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICBlbHNlDQo+IC0g
ICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgaWYgKFhlbnN0b3JlUmVtb3ZlKCJjb250
cm9sL3NodXRkb3duIikpDQo+IC0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4g
LSAgICAgICAgICAgIH0NCj4gLSAgICAgICAgfSBlbHNlIHsNCj4gLSNwcmFnbWEgd2FybmluZyAo
ZGlzYWJsZSA6IDI4MTU5KQ0KPiAtICAgICAgICAgICAgcmVzID0gSW5pdGlhdGVTeXN0ZW1TaHV0
ZG93bkV4KA0KPiAtICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgTlVM
TCwNCj4gLSAgICAgICAgICAgICAgICAwLA0KPiAtICAgICAgICAgICAgICAgIFRSVUUsDQo+IC0g
ICAgICAgICAgICAgICAgdHlwZSA9PSBYU2h1dGRvd25SZWJvb3QsDQo+IC0gICAgICAgICAgICAg
ICAgU0hURE5fUkVBU09OX01BSk9SX09USEVSIHwNCj4gLSAgICAgICAgICAgICAgICBTSFRETl9S
RUFTT05fTUlOT1JfRU5WSVJPTk1FTlQgfA0KPiAtICAgICAgICAgICAgICAgIFNIVEROX1JFQVNP
Tl9GTEFHX1BMQU5ORUQpOw0KPiAtI3ByYWdtYSB3YXJuaW5nIChkZWZhdWx0OiAyODE1OSkNCj4g
LSAgICAgICAgICAgIGlmICghcmVzKSB7DQo+IC0gICAgICAgICAgICAgICAgUHJpbnRFcnJvcigi
SW5pdGlhdGVTeXN0ZW1TaHV0ZG93bkV4Iik7DQo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOw0KPiAtICAgICAgICAgICAgfSBlbHNlIHsNCj4gLSAgICAgICAgICAgICAgICBpZiAoWGVu
c3RvcmVSZW1vdmUoImNvbnRyb2wvc2h1dGRvd24iKSkNCj4gLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICAgICAgfQ0KPiAtICAgICAgICB9DQo+IC0gICAgICAg
IGJyZWFrOw0KPiAtICAgIGNhc2UgWFNodXRkb3duU3VzcGVuZDoNCj4gLSAgICAgICAgaWYgKFhl
bnN0b3JlUHJpbnRmICgiY29udHJvbC9oaWJlcm5hdGlvbi1zdGF0ZSIsICJzdGFydGVkIikpDQo+
IC0gICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+IC0gICAgICAgIC8qIEV2ZW4gaWYgd2UgdGhp
bmsgaGliZXJuYXRpb24gaXMgZGlzYWJsZWQsIHRyeSBpdCBhbnl3YXkuDQo+IC0gICAgICAgICAg
IEl0J3Mgbm90IGxpa2UgaXQgY2FuIGRvIGFueSBoYXJtLiAqLw0KPiAtICAgICAgICByZXMgPSBT
ZXRTeXN0ZW1Qb3dlclN0YXRlKEZBTFNFLCBGQUxTRSk7DQo+IC0gICAgICAgIGlmIChYZW5zdG9y
ZVJlbW92ZSAoImNvbnRyb2wvc2h1dGRvd24iKSkNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGlmICghcmVzKSB7DQo+
IC0gICAgICAgICAgICAvKiBUZWxsIHRoZSB0b29scyB0aGF0IHdlJ3ZlIGZhaWxlZC4gKi8NCj4g
LSAgICAgICAgICAgIFByaW50RXJyb3IoIlNldFN5c3RlbVBvd2VyU3RhdGUiKTsNCj4gLSAgICAg
ICAgICAgIGlmIChYZW5zdG9yZVByaW50ZiAoImNvbnRyb2wvaGliZXJuYXRpb24tc3RhdGUiLCAi
ZmFpbGVkIikpDQo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICB9
DQo+IC0gICAgICAgIGJyZWFrOw0KPiAtICAgIGNhc2UgWFNodXRkb3duUzM6DQo+IC0gICAgICAg
IGlmIChYZW5zdG9yZVByaW50ZiAoImNvbnRyb2wvczMtc3RhdGUiLCAic3RhcnRlZCIpKQ0KPiAt
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICByZXMgPSBTZXRTdXNwZW5kU3Rh
dGUoRkFMU0UsIFRSVUUsIEZBTFNFKTsNCj4gLSAgICAgICAgWGVuc3RvcmVSZW1vdmUgKCJjb250
cm9sL3NodXRkb3duIik7DQo+IC0gICAgICAgIGlmICghcmVzKSB7DQo+IC0gICAgICAgICAgICBQ
cmludEVycm9yKCJTZXRTdXNwZW5kU3RhdGUiKTsNCj4gLSAgICAgICAgICAgIGlmIChYZW5zdG9y
ZVByaW50ZiAoImNvbnRyb2wvczMtc3RhdGUiLCAiZmFpbGVkIikpDQo+IC0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGJyZWFrOw0KPiAtICAg
IH0NCj4gLQ0KPiAtb3V0Og0KPiAtICAgIFhlbnN0b3JlRnJlZShzaHV0ZG93bl90eXBlKTsNCj4g
LSAgICByZXR1cm4gdHJ1ZTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGJvb2wgcmVnaXN0cnlNYXRj
aFN0cmluZyhIS0VZICAgIGhLZXksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExQQ1RTVFIgbHBWYWx1ZU5hbWUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExQQ1RTVFIgY29tcGFyZXN0cmluZywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCAgICBtYXRjaGNhc2UpDQo+IC17DQo+IC0gICAgYm9vbCAgICByZXN1bHQgPSBmYWxz
ZTsNCj4gLSAgICBMT05HICAgIGJ1ZmZlcnNpemUgPSBzaXplb2YoVENIQVIpKjI1NjsNCj4gLSAg
ICBUQ0hBUiAgICpvdXRzdHJpbmcgPSBOVUxMOw0KPiAtICAgIERXT1JEICBvdXRzdHJpbmdzaXpl
Ow0KPiAtICAgIExPTkcgICAgc3RhdHVzOw0KPiAtICAgIGRvIHsNCj4gLSAgICAgICAgb3V0c3Ry
aW5nc2l6ZSA9IGJ1ZmZlcnNpemU7DQo+IC0gICAgICAgIG91dHN0cmluZyA9IChUQ0hBUiAqKXJl
YWxsb2Mob3V0c3RyaW5nLCBvdXRzdHJpbmdzaXplKTsNCj4gLQ0KPiAtICAgICAgICBzdGF0dXMg
PSBSZWdRdWVyeVZhbHVlRXgoaEtleSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxwVmFsdWVOYW1lLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoTFBCWVRFKSBvdXRzdHJpbmcsDQo+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0c3RyaW5nc2l6ZSk7DQo+IC0gICAgICAgIGJ1
ZmZlcnNpemUgKj0gMjsNCj4gLSAgICB9IHdoaWxlIChzdGF0dXMgPT0gRVJST1JfTU9SRV9EQVRB
KTsNCj4gLQ0KPiAtICAgIGlmIChzdGF0dXMgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpDQo+IC0g
ICAgICAgIGdvdG8gZG9uZTsNCj4gLQ0KPiAtICAgIGlmIChtYXRjaGNhc2UpIHsNCj4gLSAgICAg
ICAgaWYgKF90Y3NuY21wKGNvbXBhcmVzdHJpbmcsIG91dHN0cmluZywgb3V0c3RyaW5nc2l6ZSkp
DQo+IC0gICAgICAgICAgICBnb3RvIGRvbmU7DQo+IC0gICAgfQ0KPiAtICAgIGVsc2Ugew0KPiAt
ICAgICAgICBpZiAoX3Rjc25pY29sbChjb21wYXJlc3RyaW5nLCBvdXRzdHJpbmcsIG91dHN0cmlu
Z3NpemUpKQ0KPiAtICAgICAgICAgICAgZ290byBkb25lOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAg
IHJlc3VsdCA9IHRydWU7DQo+IC0NCj4gLWRvbmU6DQo+IC0gICAgZnJlZShvdXRzdHJpbmcpOw0K
PiAtDQo+IC0gICAgcmV0dXJuIHJlc3VsdDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGJvb2wNCj4g
LWFkanVzdFhlblRpbWVUb1VUQyhGSUxFVElNRSAqbm93KQ0KPiAtew0KPiAtICAgIERXT1JEICAg
ICAgICAgICBkd3RpbWVvZmZzZXQ7DQo+IC0gICAgbG9uZyAgICAgICAgICAgIHRpbWVvZmZzZXQ7
DQo+IC0gICAgY2hhciAgICAgICAgICAgICp2bTsNCj4gLSAgICBjaGFyICAgICAgICAgICAgKnJ0
Y2tleTsNCj4gLSAgICBMQVJHRV9JTlRFR0VSICAgbG9uZ29mZnNldDsNCj4gLSAgICBVTEFSR0Vf
SU5URUdFUiAgbG9uZ25vdzsNCj4gLSAgICBzaXplX3QgICAgICAgICAgdm1sZW47DQo+IC0NCj4g
LSAgICAvLyBYZW5UaW1lIGlzIGFzc3VtZWQgdG8gYmUgaW4gVVRDLCBzbyB3ZSBuZWVkIHRvIHJl
bW92ZSBhbnkNCj4gLSAgICAvLyBvZmZzZXRzIHRoYXQgYXJlIGFwcGxpZWQgdG8gaXQNCj4gLQ0K
PiAtICAgIF9fdHJ5IHsNCj4gLSAgICAgICAgdm1sZW4gPSBYZW5zdG9yZVJlYWQoInZtIiwgJnZt
KTsNCj4gLSAgICAgICAgaWYgKHZtbGVuIDw9IDApDQo+IC0gICAgICAgICAgICBnb3RvIGZhaWxf
cmVhZHZtOw0KPiAtICAgIH0NCj4gLSAgICBfX2V4Y2VwdChFWENFUFRJT05fRVhFQ1VURV9IQU5E
TEVSKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgZ290byBmYWlsX3JlYWR2bTsNCj4gLSAgICB9DQo+
IC0NCj4gLSAgICBydGNrZXkgPSBQcmludGZTdHJpbmcoIiVzL3J0Yy90aW1lb2Zmc2V0Iiwgdm0p
Ow0KPiAtICAgIGlmIChydGNrZXkgPT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBmYWlsX3J0Y2tl
eTsNCj4gLQ0KPiAtICAgIF90cnkgew0KPiAtICAgICAgICBCT09MIHJ0Y3JlYWR3b3JrZWQ7DQo+
IC0gICAgICAgIF9fdHJ5IHsNCj4gLSAgICAgICAgICAgIHJ0Y3JlYWR3b3JrZWQgPSBYZW5zdG9y
ZVJlYWREd29yZChydGNrZXksICZkd3RpbWVvZmZzZXQpOw0KPiAtICAgICAgICB9DQo+IC0gICAg
ICAgIF9fZXhjZXB0KEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIpIHsNCj4gLSAgICAgICAgICAg
IHJ0Y3JlYWR3b3JrZWQgPSBmYWxzZTsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBpZiAoIXJ0
Y3JlYWR3b3JrZWQpIHsNCj4gLSAgICAgICAgICAgIGlmICghWGVuc3RvcmVSZWFkRHdvcmQoInBs
YXRmb3JtL3RpbWVvZmZzZXQiLCAmZHd0aW1lb2Zmc2V0KSkNCj4gLSAgICAgICAgICAgICAgICBn
b3RvIGZhaWxfcGxhdGZvcm10aW1lb2Zmc2V0Ow0KPiAtICAgICAgICB9DQo+IC0gICAgfQ0KPiAt
ICAgIF9fZXhjZXB0KEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIpDQo+IC0gICAgew0KPiAtICAg
ICAgICBnb3RvIGZhaWxfcGxhdGZvcm10aW1lb2Zmc2V0Ow0KPiAtICAgIH0NCj4gLSAgICB0aW1l
b2Zmc2V0ID0gKGxvbmcpZHd0aW1lb2Zmc2V0Ow0KPiAtDQo+IC0gICAgLy9Db252ZXJ0IG9mZnNl
dCBmcm9tIHNlY29uZHMgdG8gbmFub3NlY29uZHMNCj4gLSAgICBsb25nb2Zmc2V0LlF1YWRQYXJ0
ID0gIChMT05HTE9ORyl0aW1lb2Zmc2V0Ow0KPiAtICAgIGxvbmdvZmZzZXQuUXVhZFBhcnQgPSBs
b25nb2Zmc2V0LlF1YWRQYXJ0ICogMTAwMDAwMDA7DQo+IC0NCj4gLSAgICAvLyBTdWJ0cmFjdCBu
YW5vc2Vjb25kIHRpbWVvZmZzZXQgZnJvbSBub3cNCj4gLSAgICBsb25nbm93Lkxvd1BhcnQgPSBu
b3ctPmR3TG93RGF0ZVRpbWU7DQo+IC0gICAgbG9uZ25vdy5IaWdoUGFydCA9IG5vdy0+ZHdIaWdo
RGF0ZVRpbWU7DQo+IC0gICAgbG9uZ25vdy5RdWFkUGFydCAtPSBsb25nb2Zmc2V0LlF1YWRQYXJ0
Ow0KPiAtICAgIG5vdy0+ZHdMb3dEYXRlVGltZSA9IGxvbmdub3cuTG93UGFydDsNCj4gLSAgICBu
b3ctPmR3SGlnaERhdGVUaW1lID0gbG9uZ25vdy5IaWdoUGFydDsNCj4gLQ0KPiAtICAgIEZyZWVT
dHJpbmcocnRja2V5KTsNCj4gLSAgICBYc0ZyZWUodm0pOw0KPiAtICAgIHJldHVybiB0cnVlOw0K
PiAtDQo+IC1mYWlsX3BsYXRmb3JtdGltZW9mZnNldDoNCj4gLSAgICBYc0xvZygiJXM6IFJlYWQg
cGxhdGZvcm0gdGltZSBvZmZzZXQiLCBfX0ZVTkNUSU9OX18pOw0KPiAtICAgIEZyZWVTdHJpbmco
cnRja2V5KTsNCj4gLQ0KPiAtZmFpbF9ydGNrZXk6DQo+IC0gICAgWHNMb2coIiVzOiBSZWFkIFJU
QyBLZXkiLCBfX0ZVTkNUSU9OX18pOw0KPiAtICAgIFhzRnJlZSh2bSk7DQo+IC0NCj4gLWZhaWxf
cmVhZHZtOg0KPiAtICAgIFhzTG9nKCIlczogUmVhZCBWTSBLZXkiLCBfX0ZVTkNUSU9OX18pOw0K
PiAtICAgIHJldHVybiBmYWxzZTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGJvb2wgaG9zdHRpbWVJ
c1VUQygpDQo+IC17DQo+IC0gICAgSEtFWSAgICAgICAgSW5zdGFsbFJlZ0tleTsNCj4gLSAgICBi
b29sICAgICAgICB1dGMgPSBmYWxzZTsNCj4gLSAgICBpZiAoUmVnT3BlbktleUV4KEhLRVlfTE9D
QUxfTUFDSElORSwNCj4gLSAgICAgICAgICAgICAgICAgICAgIFhFTlRPT0xTX0lOU1RBTExfUkVH
X0tFWSwNCj4gLSAgICAgICAgICAgICAgICAgICAgIDAsDQo+IC0gICAgICAgICAgICAgICAgICAg
ICBLRVlfQUxMX0FDQ0VTUywNCj4gLSAgICAgICAgICAgICAgICAgICAgICZJbnN0YWxsUmVnS2V5
KSAhPSBFUlJPUl9TVUNDRVNTKQ0KPiAtICAgICAgICBnb3RvIGZhaWxfcmVnaXN0cnlrZXk7DQo+
IC0NCj4gLSNpZmRlZiBfV0lONjQNCj4gLQ0KPiAtICAgIGlmIChyZWdpc3RyeU1hdGNoU3RyaW5n
KEluc3RhbGxSZWdLZXksICJIb3N0VGltZSIsICJVVEMiLCBmYWxzZSkpDQo+IC0gICAgew0KPiAt
ICAgICAgICAgdXRjID0gdHJ1ZTsNCj4gLSAgICAgICAgIGdvdG8gZG9uZTsNCj4gLSAgICB9DQo+
IC0NCj4gLSAgICBSZWdDbG9zZUtleShJbnN0YWxsUmVnS2V5KTsNCj4gLSAgICBpZiAoUmVnT3Bl
bktleUV4KEhLRVlfTE9DQUxfTUFDSElORSwNCj4gLSAgICAgICAgICAgICAgICAgICAgIFhFTlRP
T0xTX0lOU1RBTExfUkVHX0tFWTY0LA0KPiAtICAgICAgICAgICAgICAgICAgICAgMCwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgIEtFWV9BTExfQUNDRVNTLA0KPiAtICAgICAgICAgICAgICAgICAg
ICAgJkluc3RhbGxSZWdLZXkpICE9IEVSUk9SX1NVQ0NFU1MpDQo+IC0gICAgICAgIGdvdG8gZmFp
bF9yZWdpc3RyeWtleTsNCj4gLQ0KPiAtI2VuZGlmDQo+IC0NCj4gLSAgICBpZiAocmVnaXN0cnlN
YXRjaFN0cmluZyhJbnN0YWxsUmVnS2V5LCAiSG9zdFRpbWUiLCAiVVRDIiwgZmFsc2UpKQ0KPiAt
ICAgIHsNCj4gLSAgICAgICAgdXRjPXRydWU7DQo+IC0gICAgfQ0KPiAtDQo+IC0jaWZkZWYgX1dJ
TjY0DQo+IC1kb25lOg0KPiAtI2VuZGlmDQo+IC0gICAgUmVnQ2xvc2VLZXkoSW5zdGFsbFJlZ0tl
eSk7DQo+IC0gICAgcmV0dXJuIHV0YzsNCj4gLQ0KPiAtZmFpbF9yZWdpc3RyeWtleToNCj4gLSAg
ICBYc0xvZygiJXM6IE9wZW4gUmVnaXN0cnkgS2V5IiwgX19GVU5DVElPTl9fKTsNCj4gLQ0KPiAt
ICAgIHJldHVybiBmYWxzZTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQNCj4gLXNldFRpbWVU
b1hlblRpbWUodm9pZCkNCj4gLXsNCj4gLSAgICBGSUxFVElNRSAgICBub3cgPSB7MH07DQo+IC0g
ICAgU1lTVEVNVElNRSAgc3lzX3RpbWU7DQo+IC0gICAgU1lTVEVNVElNRSAgY3VycmVudF90aW1l
Ow0KPiAtICAgIGJvb2wgICAgICAgIHV0Yz1mYWxzZTsNCj4gLSAgICBYc0xvZygiU2V0IHRpbWUg
dG8gWGVuVGltZSIpOw0KPiAtDQo+IC0gICAgR2V0WGVuVGltZSgmbm93KTsNCj4gLSAgICBpZiAo
KG5vdy5kd0xvd0RhdGVUaW1lID09IDApICYmIChub3cuZHdIaWdoRGF0ZVRpbWUgPT0gMCkpIHsN
Cj4gLSAgICAgICAgWHNMb2coIkNhbm5vdCBzZXQgc3lzdGVtIHRpbWUgdG8geGVudGltZSwgdW5h
YmxlIHRvIGNvbnRhY3QgV01JIik7DQo+IC0gICAgICAgIGdvdG8gZmFpbF9yZWFkdGltZTsNCj4g
LSAgICB9DQo+IC0NCj4gLSAgICB1dGMgPSBob3N0dGltZUlzVVRDKCk7DQo+IC0NCj4gLSAgICBp
ZiAodXRjKSB7DQo+IC0gICAgICAgIFhzTG9nKCJUcnkgVVRDIik7DQo+IC0gICAgICAgIGlmICgh
YWRqdXN0WGVuVGltZVRvVVRDKCZub3cpKQ0KPiAtICAgICAgICAgICAgZ290byBmYWlsX2FkanVz
dHRpbWU7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgaWYgKCFGaWxlVGltZVRvU3lzdGVtVGltZSgm
bm93LCAmc3lzX3RpbWUpKSB7DQo+IC0gICAgICAgIFhzTG9nKCJHb3VsZCBub3QgY29udmVydCBm
aWxlIHRpbWUgdG8gc3lzdGVtIHRpbWUiKTsNCj4gLSAgICAgICAgUHJpbnRFcnJvcigiRmlsZVRp
bWVUb1N5c3RlbVRpbWUoKSIpOw0KPiAtICAgICAgICBEQkdQUklOVCgoIkZpbGVUaW1lVG9TeXN0
ZW1UaW1lKCV4LiV4KVxuIiwNCj4gLSAgICAgICAgICAgICAgICAgIG5vdy5kd0xvd0RhdGVUaW1l
LCBub3cuZHdIaWdoRGF0ZVRpbWUpKTsNCj4gLSAgICB9IGVsc2Ugew0KPiAtICAgICAgICBHZXRM
b2NhbFRpbWUoJmN1cnJlbnRfdGltZSk7DQo+IC0gICAgICAgIFhzTG9nKCJUaW1lIGlzIG5vdyAg
JWQuJWQuJWQgJWQ6JWQ6JWQuJWQiLA0KPiAtICAgICAgICAgICAgICBjdXJyZW50X3RpbWUud1ll
YXIsIGN1cnJlbnRfdGltZS53TW9udGgsIGN1cnJlbnRfdGltZS53RGF5LA0KPiAtICAgICAgICAg
ICAgICBjdXJyZW50X3RpbWUud0hvdXIsIGN1cnJlbnRfdGltZS53TWludXRlLA0KPiBjdXJyZW50
X3RpbWUud1NlY29uZCwNCj4gLSAgICAgICAgICAgICAgY3VycmVudF90aW1lLndNaWxsaXNlY29u
ZHMpOw0KPiAtICAgICAgICBYc0xvZygiU2V0IHRpbWUgdG8gJWQuJWQuJWQgJWQ6JWQ6JWQuJWQi
LA0KPiAtICAgICAgICAgICAgICBzeXNfdGltZS53WWVhciwgc3lzX3RpbWUud01vbnRoLCBzeXNf
dGltZS53RGF5LA0KPiAtICAgICAgICAgICAgICBzeXNfdGltZS53SG91ciwgc3lzX3RpbWUud01p
bnV0ZSwgc3lzX3RpbWUud1NlY29uZCwNCj4gLSAgICAgICAgICAgICAgc3lzX3RpbWUud01pbGxp
c2Vjb25kcyk7DQo+IC0gICAgICAgIGlmICh1dGMpIHsNCj4gLSAgICAgICAgICAgIGlmICghU2V0
U3lzdGVtVGltZSgmc3lzX3RpbWUpKQ0KPiAtICAgICAgICAgICAgICAgIFByaW50RXJyb3IoIlNl
dFN5c3RlbVRpbWUoKSIpOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGVsc2Ugew0KPiAtICAg
ICAgICAgICAgaWYgKCFTZXRMb2NhbFRpbWUoJnN5c190aW1lKSkNCj4gLSAgICAgICAgICAgICAg
ICBQcmludEVycm9yKCJTZXRMb2NhbFRpbWUoKSIpOw0KPiAtICAgICAgICB9DQo+IC0gICAgfQ0K
PiAtDQo+IC0gICAgcmV0dXJuOw0KPiAtDQo+IC1mYWlsX2FkanVzdHRpbWU6DQo+IC0gICAgWHNM
b2coIiVzOiBBZGp1c3QgdGltZSIsIF9fRlVOQ1RJT05fXyk7DQo+IC0NCj4gLWZhaWxfcmVhZHRp
bWU6DQo+IC0gICAgWHNMb2coIiVzOiBSZWFkVGltZSIsIF9fRlVOQ1RJT05fXyk7DQo+IC19DQo+
IC0NCj4gLS8qIFdlIG5lZWQgdG8gcmVzeW5jIHRoZSBjbG9jayB3aGVuIHdlIHJlY292ZXIgZnJv
bSBzdXNwZW5kL3Jlc3VtZS4gKi8NCj4gLXN0YXRpYyB2b2lkDQo+IC1maW5pc2hTdXNwZW5kKHZv
aWQpDQo+IC17DQo+IC0gICAgREJHUFJJTlQoKCJDb21pbmcgYmFjayBmcm9tIHN1c3BlbmQuXG4i
KSk7DQo+IC0gICAgc2V0VGltZVRvWGVuVGltZSgpOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLQ0KPiAt
Ly8NCj4gLS8vIE1haW4gbG9vcA0KPiAtLy8NCj4gLUJPT0wgUnVuKCkNCj4gLXsNCj4gLSAgICBi
b29sIGV4aXQ9ZmFsc2U7DQo+IC0gICAgUENIQVIgcFBWQWRkb25zSW5zdGFsbGVkID0gTlVMTDsN
Cj4gLQ0KPiAtICAgIEhBTkRMRSBzdXNwZW5kRXZlbnQ7DQo+IC0NCj4gLSAgICBpbnQgY250ciA9
IDA7DQo+IC0gICAgc3RydWN0IHdhdGNoX2ZlYXR1cmVfc2V0IGZlYXR1cmVzOw0KPiAtICAgIEJP
T0wgc25hcCA9IEZBTFNFOw0KPiAtDQo+IC0gICAgT3V0cHV0RGVidWdTdHJpbmcoIlRyeWluZyB0
byBjb25uZWN0IHRvIFdNSVxuIik7DQo+IC0gICAgd2hpbGUgKCFDb25uZWN0VG9XTUkoKSkgew0K
PiAtICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiVW5hYmxlIHRvIGNvbm5lY3QgdG8gV01JLCBz
bGVlcGluZ1xuIik7DQo+IC0gICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KGhTZXJ2aWNl
RXhpdEV2ZW50LCAxMDAwKjEwKSA9PQ0KPiBXQUlUX09CSkVDVF8wKSB7DQo+IC0gICAgICAgICAg
ICBleGl0ID0gdHJ1ZTsNCj4gLSAgICAgICAgICAgIHJldHVybiBleGl0Ow0KPiAtICAgICAgICB9
DQo+IC0gICAgfQ0KPiAtICAgIHdoaWxlIChJbml0WFNBY2Nlc3NvcigpPT1mYWxzZSkgew0KPiAt
ICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiVW5hYmxlIHRvIGluaXRpYWxpc2UgV01JIHNlc3Np
b24sIHNsZWVwaW5nXG4iKTsNCj4gLSAgICAgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3QoaFNl
cnZpY2VFeGl0RXZlbnQsIDEwMDAqMTApID09DQo+IFdBSVRfT0JKRUNUXzApIHsNCj4gLSAgICAg
ICAgICAgIGV4aXQgPSB0cnVlOw0KPiAtICAgICAgICAgICAgcmV0dXJuIGV4aXQ7DQo+IC0gICAg
ICAgIH0NCj4gLSAgICB9DQo+IC0gICAgWHNMb2coIkd1ZXN0IGFnZW50IGxpdGUgbWFpbiBsb29w
IHN0YXJ0aW5nIik7DQo+IC0NCj4gLSAgICBpZiAoZXZlbnRMb2cgPT0gTlVMTCkNCj4gLSAgICAg
ICAgWHNMb2coIkV2ZW50IGxvZyB3YXMgbm90IGluaXRpYWxpc2VkIik7DQo+IC0NCj4gLSAgICBz
ZXRUaW1lVG9YZW5UaW1lKCk7DQo+IC0NCj4gLSAgICBtZW1zZXQoJmZlYXR1cmVzLCAwLCBzaXpl
b2YoZmVhdHVyZXMpKTsNCj4gLQ0KPiAtICAgIEhBTkRMRSB3bWllcnJvckV2ZW50ID0gQ3JlYXRl
RXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsNCj4gLSAgICBpZiAoIXdtaWVycm9yRXZl
bnQpIHsNCj4gLSAgICAgICAgUHJpbnRFcnJvcigiQ3JlYXRlRXZlbnQoKSB3bWllcnJvckV2ZW50
Iik7DQo+IC0gICAgICAgIHJldHVybiBleGl0Ow0KPiAtICAgIH0NCj4gLQ0KPiAtDQo+IC0gICAg
WHNMb2coIkFib3V0IHRvIGFkZCBmZWF0dXJlIHNodXRkb3duIik7DQo+IC0gICAgaWYgKCFBZGRG
ZWF0dXJlKCZmZWF0dXJlcywgImNvbnRyb2wvc2h1dGRvd24iLCAiY29udHJvbC9mZWF0dXJlLQ0K
PiBzaHV0ZG93biIsDQo+IC0gICAgICAgICAgICAgICAgICAgICJzaHV0ZG93biIsIG1heWJlUmVi
b290LCBOVUxMLCB3bWllcnJvckV2ZW50KSkgew0KPiAtICAgICAgICByZXR1cm4gZXhpdDsNCj4g
LSAgICB9DQo+IC0NCj4gLSAgICBzdXNwZW5kRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBGQUxT
RSwgRkFMU0UsIE5VTEwpOw0KPiAtICAgIGlmICghc3VzcGVuZEV2ZW50KSB7DQo+IC0gICAgICAg
IFByaW50RXJyb3IoIkNyZWF0ZUV2ZW50KCkgc3VzcGVuZEV2ZW50Iik7DQo+IC0gICAgICAgIHJl
dHVybiBleGl0Ow0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIGlmIChMaXN0ZW5TdXNwZW5kKHN1c3Bl
bmRFdmVudCwgd21pZXJyb3JFdmVudCkgPCAwKSB7DQo+IC0gICAgICAgIFByaW50RXJyb3IoIkxp
c3RlblN1c3BlbmQoKSIpOw0KPiAtICAgICAgICBDbG9zZUhhbmRsZShzdXNwZW5kRXZlbnQpOw0K
PiAtICAgICAgICBzdXNwZW5kRXZlbnQgPSBOVUxMOw0KPiAtICAgICAgICByZXR1cm4gZXhpdDsN
Cj4gLSAgICB9DQo+IC0NCj4gLQ0KPiAtICAgIFhzTG9nKCJBYm91dCB0byBhZHZlcnRpc2UgZmVh
dHVyZXMiKTsNCj4gLSAgICBBZHZlcnRpc2VGZWF0dXJlcygmZmVhdHVyZXMpOw0KPiAtDQo+IC0g
ICAgWHNMb2coIkFib3V0IHRvIGtpY2sgeGFwaSAiKTsNCj4gLSAgICBYZW5zdG9yZUtpY2tYYXBp
KCk7DQo+IC0NCj4gLSAgICB3aGlsZSAoMSkNCj4gLSAgICB7DQo+IC0gICAgICAgIERXT1JEIHN0
YXR1czsNCj4gLSAgICAgICAgaW50IG5yX2hhbmRsZXMgPSAxOw0KPiAtICAgICAgICBIQU5ETEUg
aGFuZGxlc1szICsgTUFYX0ZFQVRVUkVTXTsNCj4gLSAgICAgICAgdW5zaWduZWQgeDsNCj4gLQ0K
PiAtICAgICAgICBoYW5kbGVzWzBdID0gaFNlcnZpY2VFeGl0RXZlbnQ7DQo+IC0gICAgICAgIGlm
ICh3bWllcnJvckV2ZW50KQ0KPiAtICAgICAgICAgICAgaGFuZGxlc1tucl9oYW5kbGVzKytdID0g
d21pZXJyb3JFdmVudDsNCj4gLSAgICAgICAgaWYgKHN1c3BlbmRFdmVudCkNCj4gLSAgICAgICAg
ICAgIGhhbmRsZXNbbnJfaGFuZGxlcysrXSA9IHN1c3BlbmRFdmVudDsNCj4gLSAgICAgICAgZm9y
ICh4ID0gMDsgeCA8IGZlYXR1cmVzLm5yX2ZlYXR1cmVzOyB4KyspDQo+IC0gICAgICAgICAgICBo
YW5kbGVzW25yX2hhbmRsZXMrK10gPSBmZWF0dXJlcy5mZWF0dXJlc1t4XS53YXRjaC0+ZXZlbnQ7
DQo+IC0NCj4gLSAgICAgICAgWHNMb2coIndpbiBhZ2VudCBnb2luZyB0byBzbGVlcCIpOw0KPiAt
ICAgICAgICBzdGF0dXMgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKG5yX2hhbmRsZXMsIGhhbmRs
ZXMsIEZBTFNFLCBJTkZJTklURSk7DQo+IC0gICAgICAgIFhzTG9nKCJ3aW4gYWdlbnQgd29rZSB1
cCBmb3IgJWQiLCBzdGF0dXMpOw0KPiAtDQo+IC0gICAgICAgIC8qIFdBSVRfT0JKRUNUXzAgaGFw
cGVucyB0byBiZSAwLCBzbyB0aGUgY29tcGlsZXIgZ2V0cyBzaGlydHkNCj4gLSAgICAgICAgICAg
YWJvdXQgc3RhdHVzID49IFdBSVRfT0JKRUNUXzAgKHNpbmNlIHN0YXR1cyBpcyB1bnNpZ25lZCku
DQo+IC0gICAgICAgICAgIFRoaXMgaXMgbW9yZSBvYnZpb3VzbHkgY29ycmVjdCB0aGFuIHRoZSBj
b21waWxlci1mcmllbmRseQ0KPiAtICAgICAgICAgICB2ZXJzaW9uLCB0aG91Z2gsIHNvIGp1c3Qg
ZGlzYWJsZSB0aGUgd2FybmluZy4gKi8NCj4gLQ0KPiAtI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxl
OiA0Mjk2KQ0KPiAtICAgICAgICBpZiAoc3RhdHVzID49IFdBSVRfT0JKRUNUXzAgJiYNCj4gLSAg
ICAgICAgICAgIHN0YXR1cyA8IFdBSVRfT0JKRUNUXzAgKyBucl9oYW5kbGVzKQ0KPiAtI3ByYWdt
YSB3YXJuaW5nIChkZWZhdWx0OiA0Mjk2KQ0KPiAtICAgICAgICB7DQo+IC0gICAgICAgICAgICBI
QU5ETEUgZXZlbnQgPSBoYW5kbGVzW3N0YXR1cyAtIFdBSVRfT0JKRUNUXzBdOw0KPiAtICAgICAg
ICAgICAgaWYgKGV2ZW50ID09IGhTZXJ2aWNlRXhpdEV2ZW50KQ0KPiAtICAgICAgICAgICAgew0K
PiAtICAgICAgICAgICAgICAgIFhzTG9nKCJzZXJ2aWNlIGV4aXQgZXZlbnQiKTsNCj4gLSAgICAg
ICAgICAgICAgICBleGl0ID0gdHJ1ZTsNCj4gLSAgICAgICAgICAgICAgICBicmVhazsNCj4gLSAg
ICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09IHN1c3BlbmRFdmVu
dCkNCj4gLSAgICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgICAgICBpZiAoIVJlcG9ydEV2ZW50
KGV2ZW50TG9nLCBFVkVOVExPR19TVUNDRVNTLCAwLA0KPiBFVkVOVF9YRU5VU0VSX1VOU1VTUEVO
REVELCBOVUxMLCAwLCAwLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5V
TEwpKSB7DQo+IC0gICAgICAgICAgICAgICAgICAgIFhzTG9nKCJDYW5ub3Qgc2VuZCB0byBldmVu
dCBsb2cgJXgiLEdldExhc3RFcnJvcigpKTsNCj4gLSAgICAgICAgICAgICAgICB9DQo+IC0gICAg
ICAgICAgICAgICAgWHNMb2coIlN1c3BlbmQgZXZlbnQiKTsNCj4gLSAgICAgICAgICAgICAgICBm
aW5pc2hTdXNwZW5kKCk7DQo+IC0gICAgICAgICAgICAgICAgQWR2ZXJ0aXNlRmVhdHVyZXMoJmZl
YXR1cmVzKTsNCj4gLSAgICAgICAgICAgICAgICBYZW5zdG9yZUtpY2tYYXBpKCk7DQo+IC0gICAg
ICAgICAgICAgICAgWHNMb2coIkhhbmRsZWQgc3VzcGVuZCBldmVudCIpOw0KPiAtICAgICAgICAg
ICAgfQ0KPiAtICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT0gd21pZXJyb3JFdmVudCkNCj4g
LSAgICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgICAgICBSZXBvcnRFdmVudChldmVudExvZywg
RVZFTlRMT0dfU1VDQ0VTUywgMCwNCj4gRVZFTlRfWEVOVVNFUl9XTUksIE5VTEwsIDAsIDAsDQo+
IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7DQo+IC0gICAgICAgICAg
ICAgICAgYnJlYWs7DQo+IC0gICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICBlbHNlDQo+IC0g
ICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgQk9PTCBmYWlsID0gZmFsc2U7DQo+IC0g
ICAgICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IGZlYXR1cmVzLm5yX2ZlYXR1cmVzOyB4Kysp
IHsNCj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmVzLmZlYXR1cmVzW3hdLndhdGNo
LT5ldmVudCA9PSBldmVudCkgew0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgWHNMb2coIkZp
cmUgJXAiLGZlYXR1cmVzLmZlYXR1cmVzW3hdLm5hbWUpOw0KPiAtICAgICAgICAgICAgICAgICAg
ICAgICAgWHNMb2coImZpcmUgZmVhdHVyZSAlcyIsIGZlYXR1cmVzLmZlYXR1cmVzW3hdLm5hbWUp
Ow0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIkV2ZW50IHRy
aWdnZXJlZFxuIik7DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmZWF0dXJlcy5m
ZWF0dXJlc1t4XS5oYW5kbGVyKGZlYXR1cmVzLmZlYXR1cmVzW3hdLmN0eCkpKQ0KPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhzTG9n
KCJGaXJpbmcgZmVhdHVyZSBmYWlsZWQiKTsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcmludEVycm9yKCJGZWF0dXJlIGZhaWxlZCIpOw0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWwgPSB0cnVlOw0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAtICAg
ICAgICAgICAgICAgICAgICAgICAgWHNMb2coImZpcmVkIGZlYXR1cmUgJXMiLA0KPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcy5mZWF0dXJlc1t4XS5uYW1lKTsNCj4g
LSAgICAgICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgICAgIH0NCj4gLSAgICAgICAg
ICAgICAgICBpZiAoZmFpbCkgew0KPiAtICAgICAgICAgICAgICAgICAgICBYc0xvZygiUmVzZXR0
aW5nIik7DQo+IC0gICAgICAgICAgICAgICAgICAgIFJlcG9ydEV2ZW50KGV2ZW50TG9nLCBFVkVO
VExPR19TVUNDRVNTLCAwLA0KPiBFVkVOVF9YRU5VU0VSX1VORVhQRUNURUQsIE5VTEwsIDAsIDAs
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOw0KPiAtICAg
ICAgICAgICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgICAgICAgICB9DQo+IC0gICAgICAg
ICAgICB9DQo+IC0gICAgICAgIH0NCj4gLSAgICAgICAgZWxzZQ0KPiAtICAgICAgICB7DQo+IC0g
ICAgICAgICAgICBQcmludEVycm9yKCJXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKCkiKTsNCj4gLSAg
ICAgICAgICAgIGJyZWFrOw0KPiAtICAgICAgICB9DQo+IC0gICAgfQ0KPiAtICAgIE91dHB1dERl
YnVnU3RyaW5nKCJXTUkgV2F0Y2ggbG9vcCB0ZXJtaW5hdGVkXG4iKTsNCj4gLSAgICBSZW1vdmVG
ZWF0dXJlcygmZmVhdHVyZXMpOw0KPiAtICAgIFhlbnN0b3JlS2lja1hhcGkoKTsNCj4gLQ0KPiAt
ICAgIFhzTG9nKCJHdWVzdCBhZ2VudCBsaXRlIGxvb3AgZmluaXNoaW5nIik7DQo+IC0gICAgUmVs
ZWFzZVdNSUFjY2Vzc29yKCZ3bWkpOw0KPiAtDQo+IC0NCj4gLQ0KPiAtDQo+IC0gICAgWHNMb2co
Ikd1ZXN0IGFnZW50IGxpdGUgbG9vcCBmaW5pc2hlZCAlZCIsIGV4aXQpOw0KPiAtICAgIHJldHVy
biBleGl0Ow0KPiAtfQ0KPiAtDQo+IC0NCj4gLS8vIFNlcnZpY2UgaW5pdGlhbGl6YXRpb24NCj4g
LWJvb2wgU2VydmljZUluaXQoKQ0KPiAtew0KPiAtICAgIFNlcnZpY2VTdGF0dXMuZHdTZXJ2aWNl
VHlwZSAgICAgICAgPSBTRVJWSUNFX1dJTjMyOw0KPiAtICAgIFNlcnZpY2VTdGF0dXMuZHdDdXJy
ZW50U3RhdGUgICAgICAgPSBTRVJWSUNFX1NUQVJUX1BFTkRJTkc7DQo+IC0gICAgU2VydmljZVN0
YXR1cy5kd0NvbnRyb2xzQWNjZXB0ZWQgICA9DQo+IC0gICAgICAgIFNFUlZJQ0VfQUNDRVBUX1NU
T1AgfCBTRVJWSUNFX0FDQ0VQVF9TSFVURE9XTiB8DQo+IC0gICAgICAgIFNFUlZJQ0VfQUNDRVBU
X1NFU1NJT05DSEFOR0U7DQo+IC0gICAgU2VydmljZVN0YXR1cy5kd1dpbjMyRXhpdENvZGUgICAg
ICA9IDA7DQo+IC0gICAgU2VydmljZVN0YXR1cy5kd1NlcnZpY2VTcGVjaWZpY0V4aXRDb2RlID0g
MDsNCj4gLSAgICBTZXJ2aWNlU3RhdHVzLmR3Q2hlY2tQb2ludCAgICAgICAgID0gMDsNCj4gLSAg
ICBTZXJ2aWNlU3RhdHVzLmR3V2FpdEhpbnQgICAgICAgICAgID0gMDsNCj4gLQ0KPiAtICAgIGhT
dGF0dXMgPSBSZWdpc3RlclNlcnZpY2VDdHJsSGFuZGxlckV4KA0KPiAtICAgICAgICAiWGVuU2Vy
dmljZSIsDQo+IC0gICAgICAgIFNlcnZpY2VDb250cm9sSGFuZGxlciwNCj4gLSAgICAgICAgTlVM
TCk7DQo+IC0gICAgaWYgKGhTdGF0dXMgPT0gKFNFUlZJQ0VfU1RBVFVTX0hBTkRMRSkwKQ0KPiAt
ICAgIHsNCj4gLSAgICAgICAgLy8gUmVnaXN0ZXJpbmcgQ29udHJvbCBIYW5kbGVyIGZhaWxlZA0K
PiAtICAgICAgICBEQkdQUklOVCgoIlhlblN2YzogUmVnaXN0ZXJpbmcgc2VydmljZSBjb250cm9s
IGhhbmRsZXIgZmFpbGVkIC0gJWRcbiIsDQo+IEdldExhc3RFcnJvcigpKSk7DQo+IC0gICAgICAg
IHJldHVybiBmYWxzZTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBTZXJ2aWNlU3RhdHVzLmR3Q3Vy
cmVudFN0YXRlID0gU0VSVklDRV9SVU5OSU5HOw0KPiAtICAgIFNldFNlcnZpY2VTdGF0dXMgKGhT
dGF0dXMsICZTZXJ2aWNlU3RhdHVzKTsNCj4gLQ0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAtfQ0K
PiAtDQo+IC12b2lkIFdJTkFQSSBTZXJ2aWNlTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpDQo+
IC17DQo+IC0gICAgLy8gUGVyZm9ybSBjb21tb24gaW5pdGlhbGl6YXRpb24NCj4gLSAgICBldmVu
dExvZyA9IFJlZ2lzdGVyRXZlbnRTb3VyY2UoTlVMTCwgInhlbnN2YyIpOw0KPiAtICAgIGhTZXJ2
aWNlRXhpdEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgZmFsc2UsIGZhbHNlLCBOVUxMKTsNCj4g
LSAgICBpZiAoaFNlcnZpY2VFeGl0RXZlbnQgPT0gTlVMTCkNCj4gLSAgICB7DQo+IC0gICAgICAg
IERCR1BSSU5UKCgiWGVuU3ZjOiBVbmFibGUgdG8gY3JlYXRlIHRoZSBldmVudCBvYmogLSAlZFxu
IiwNCj4gR2V0TGFzdEVycm9yKCkpKTsNCj4gLSAgICAgICAgcmV0dXJuOw0KPiAtICAgIH0NCj4g
LQ0KPiAtICAgIGlmICghU2VydmljZUluaXQoKSkNCj4gLSAgICB7DQo+IC0gICAgICAgIERCR1BS
SU5UKCgiWGVuU3ZjOiBVbmFibGUgdG8gaW5pdCB4ZW5zZXJ2aWNlXG4iKSk7DQo+IC0gICAgICAg
IHJldHVybjsNCj4gLSAgICB9DQo+IC0gICAgQk9PTCBzdG9wcGluZzsNCj4gLQ0KPiAtICAgIGRv
IHsNCj4gLQ0KPiAtICAgICAgICBfX3RyeQ0KPiAtICAgICAgICB7DQo+IC0gICAgICAgICAgICBz
dG9wcGluZyA9IFJ1bigpOw0KPiAtDQo+IC0gICAgICAgIH0NCj4gLSAgICAgICAgX19leGNlcHQo
RVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUikNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAg
X190cnkgew0KPiAtICAgICAgICAgICAgICAgIFhzTG9nKCJFeGNlcHRpb24gaGl0ICV4IiwgR2V0
RXhjZXB0aW9uQ29kZSgpKTsNCj4gLSAgICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgIF9fZXhj
ZXB0KEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIpDQo+IC0gICAgICAgICAgICB7DQo+IC0gICAg
ICAgICAgICB9DQo+IC0gICAgICAgICAgICBzdG9wcGluZyA9IGZhbHNlOw0KPiAtICAgICAgICB9
DQo+IC0gICAgfSB3aGlsZSAoIXN0b3BwaW5nKTsNCj4gLQ0KPiAtICAgIFhzTG9nKCJHdWVzdCBh
Z2VudCBzZXJ2aWNlIHN0b3BwZWQiKTsNCj4gLSAgICBTaHV0ZG93blhTQWNjZXNzb3IoKTsNCj4g
LSAgICBEZXJlZ2lzdGVyRXZlbnRTb3VyY2UoZXZlbnRMb2cpOw0KPiAtICAgIFNlcnZpY2VDb250
cm9sTWFuYWdlclVwZGF0ZSgwLCBTRVJWSUNFX1NUT1BQRUQpOw0KPiAtICAgIHJldHVybjsNCj4g
LX0NCj4gLQ0KPiAtdm9pZCBTZXJ2aWNlQ29udHJvbE1hbmFnZXJVcGRhdGUoRFdPUkQgZHdFeGl0
Q29kZSwgRFdPUkQgZHdTdGF0ZSkNCj4gLXsNCj4gLSAgICBTZXJ2aWNlU3RhdHVzLmR3V2luMzJF
eGl0Q29kZSA9IGR3RXhpdENvZGU7DQo+IC0gICAgU2VydmljZVN0YXR1cy5kd0N1cnJlbnRTdGF0
ZSAgPSBkd1N0YXRlOw0KPiAtICAgIFNldFNlcnZpY2VTdGF0dXMgKGhTdGF0dXMsICZTZXJ2aWNl
U3RhdHVzKTsNCj4gLX0NCj4gLQ0KPiAtLy8gU2VydmljZSBjb250cm9sIGhhbmRsZXIgZnVuY3Rp
b24NCj4gLXN0YXRpYyBEV09SRCBXSU5BUEkgU2VydmljZUNvbnRyb2xIYW5kbGVyKERXT1JEIHJl
cXVlc3QsIERXT1JEDQo+IGV2dFR5cGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMUFZPSUQgZXZlbnREYXRhLCBMUFZPSUQgY3R4dCkNCj4gLXsNCj4gLSAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKGN0eHQpOw0KPiAtICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoZXZlbnREYXRhKTsNCj4gLQ0KPiAtICAgIHN3aXRjaChyZXF1ZXN0KQ0KPiAtICAgIHsN
Cj4gLSAgICAgICAgY2FzZSBTRVJWSUNFX0NPTlRST0xfU1RPUDoNCj4gLSAgICAgICAgICAgIERC
R1BSSU5UKCgiWGVuU3ZjOiB4ZW5zZXJ2aWNlIHN0b3BwZWQuXG4iKSk7DQo+IC0gICAgICAgICAg
ICBTZXJ2aWNlQ29udHJvbE1hbmFnZXJVcGRhdGUoMCwgU0VSVklDRV9TVE9QX1BFTkRJTkcpOw0K
PiAtICAgICAgICAgICAgU2V0RXZlbnQoaFNlcnZpY2VFeGl0RXZlbnQpOw0KPiAtICAgICAgICAg
ICAgcmV0dXJuIE5PX0VSUk9SOw0KPiAtDQo+IC0gICAgICAgIGNhc2UgU0VSVklDRV9DT05UUk9M
X1NIVVRET1dOOg0KPiAtICAgICAgICAgICAgREJHUFJJTlQoKCJYZW5TdmM6IHhlbnNlcnZpY2Ug
c2h1dGRvd24uXG4iKSk7DQo+IC0gICAgICAgICAgICBTZXJ2aWNlQ29udHJvbE1hbmFnZXJVcGRh
dGUoMCwgU0VSVklDRV9TVE9QX1BFTkRJTkcpOw0KPiAtICAgICAgICAgICAgU2V0RXZlbnQoaFNl
cnZpY2VFeGl0RXZlbnQpOw0KPiAtICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOw0KPiAtDQo+
IC0gICAgICAgIGRlZmF1bHQ6DQo+IC0gICAgICAgIERCR1BSSU5UKCgiWGVuU3ZjOiB1bmtub3du
IHJlcXVlc3QuIikpOw0KPiAtICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgfQ0KPiAtDQo+IC0g
ICAgU2VydmljZUNvbnRyb2xNYW5hZ2VyVXBkYXRlKDAsIFNFUlZJQ0VfUlVOTklORyk7DQo+IC0g
ICAgcmV0dXJuIEVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVEOw0KPiAtfQ0KPiBkaWZmIC0tZ2l0
IGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTZXJ2aWNlLmggYi9zcmMvd2luMzJzdHViYWdlbnQvWFNl
cnZpY2UuaA0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMzJlZTE2My4uMDAw
MDAwMA0KPiAtLS0gYS9zcmMvd2luMzJzdHViYWdlbnQvWFNlcnZpY2UuaA0KPiArKysgL2Rldi9u
dWxsDQo+IEBAIC0xLDU0ICswLDAgQEANCj4gLS8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3Rl
bXMgSW5jLg0KPiAtICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiAtICogd2l0aCBv
ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiAtICogdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gLSAqDQo+IC0gKiAqICAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAtICog
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4g
LSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+IC0gKiAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAgIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiAt
ICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+IC0gKg0K
PiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EDQo+IC0gKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLA0KPiAtICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gLSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+IC0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiAtICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+IC0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAtICog
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+
IC0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
DQo+IC0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwNCj4gLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORw0KPiAtICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiAtICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiAtICogU1VDSCBEQU1BR0UuDQo+
IC0gKi8NCj4gLQ0KPiAtI2lmbmRlZiBfWFNFUlZJQ0VfSA0KPiAtI2RlZmluZSBfWFNFUlZJQ0Vf
SA0KPiAtDQo+IC0jaW5jbHVkZSA8dmVyc2lvbi5oPg0KPiAtDQo+IC0jZGVmaW5lIFNWQ19OQU1F
ICJ4ZW5zdmMiDQo+IC0jZGVmaW5lIFNWQ19ESVNQTEFZTkFNRSBQUk9EVUNUX05BTUVfU1RSICMj
ICJJbnRlcmZhY2UgU2VydmljZSINCj4gLSNkZWZpbmUgU1ZDX0RFU0MgIk1vbml0b3JzIGFuZCBw
cm92aWRlcyB2YXJpb3VzIG1ldHJpY3MgdG8gWGVuU3RvcmUiDQo+IC0NCj4gLXZvaWQgUHJpbnRF
cnJvcihjb25zdCBjaGFyICpmdW5jKTsNCj4gLXZvaWQgUHJpbnRFcnJvcihjb25zdCBjaGFyICpm
dW5jLCBEV09SRCBlcnIpOw0KPiAtdm9pZCBTdGFydENsaXBib2FyZFN5bmModm9pZCk7DQo+IC12
b2lkIEZpbmlzaENsaXBib2FyZFN5bmModm9pZCk7DQo+IC12b2lkIENsaXBib2FyZENvbnNvbGVD
aGFuZ2VkKHZvaWQpOw0KPiAtDQo+IC12b2lkIFhzRHVtcExvZ1RoaXNUaHJlYWQodm9pZCk7DQo+
IC12b2lkIFhzSW5pdFBlclRocmVhZExvZ2dpbmcodm9pZCk7DQo+IC12b2lkIFhzTG9nTXNnKGNv
bnN0IGNoYXIgKmZtdCwgLi4uKTsNCj4gLXZvaWQgRG9Wb2x1bWVEdW1wKHZvaWQpOw0KPiAtDQo+
IC12b2lkIEFjcXVpcmVTeXN0ZW1Qcml2aWxlZ2UoTFBDVFNUUiBuYW1lKTsNCj4gLQ0KPiAtI2Vu
ZGlmDQo+IGRpZmYgLS1naXQgYS9zcmMvd2luMzJzdHViYWdlbnQvZXJyb3JzLmNwcCBiL3NyYy93
aW4zMnN0dWJhZ2VudC9lcnJvcnMuY3BwDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBp
bmRleCBjYWY0N2NjLi4wMDAwMDAwDQo+IC0tLSBhL3NyYy93aW4zMnN0dWJhZ2VudC9lcnJvcnMu
Y3BwDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsMTAyICswLDAgQEANCj4gLS8qIENvcHlyaWdo
dCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiAtICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g
LSAqDQo+IC0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLA0KPiAtICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZA0KPiAtICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4g
LSAqDQo+IC0gKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQ0KPiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICog
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
DQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlcg0KPiAtICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IC0gKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiAtICogSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gLSAqIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+IC0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiAtICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsDQo+IC0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLA0KPiAtICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SDQo+IC0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTDQo+IC0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiAtICogTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiAtICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiAt
ICogU1VDSCBEQU1BR0UuDQo+IC0gKi8NCj4gLQ0KPiAtLyogQmxhY2stYm94IGRhdGEgcmVjb3Jk
ZXIuICBUaGlzIHJlY29yZHMgc3R1ZmYgd2hpY2ggaXMgaGFwcGVuaW5nDQo+IC0gICB3aGlsZSB0
aGUgYWdlbnQgcnVucywgYW5kIHRyaWVzIHRvIHB1c2ggaXQgb3V0IHRvIGRvbTAgc3lzbG9nIGlm
IHdlDQo+IC0gICBjcmFzaC4gKi8NCj4gLSNpbmNsdWRlICJzdGRhZnguaCINCj4gLSNpbmNsdWRl
IDx3aW5kb3dzLmg+DQo+IC0jaW5jbHVkZSA8c3RkYXJnLmg+DQo+IC0jaW5jbHVkZSA8c3RkaW8u
aD4NCj4gLSNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gLSNpbmNsdWRlICJYU2VydmljZS5oIg0KPiAt
I2luY2x1ZGUgIlhTQWNjZXNzb3IuaCINCj4gLQ0KPiAtDQo+IC0jZGVmaW5lIFJJTkdfU0laRSA4
MTkyDQo+IC0NCj4gLXN0cnVjdCBtZXNzYWdlX3Jpbmcgew0KPiAtICAgIEhBTkRMRSBoYW5kbGU7
DQo+IC0gICAgdW5zaWduZWQgcHJvZF9pZHg7DQo+IC0gICAgdW5zaWduZWQgY29uc19pZHg7DQo+
IC0gICAgdW5zaWduZWQgY2hhciBwYXlsb2FkW1JJTkdfU0laRV07DQo+IC19Ow0KPiAtDQo+IC1z
dGF0aWMgX19kZWNsc3BlYyh0aHJlYWQpIHN0cnVjdCBtZXNzYWdlX3JpbmcgbWVzc2FnZV9yaW5n
Ow0KPiAtDQo+IC1zdGF0aWMgY2hhciAqDQo+IC1Yc3Zhc3ByaW50Zihjb25zdCBjaGFyICpmbXQs
IHZhX2xpc3QgYXJncykNCj4gLXsNCj4gLSAgICBjaGFyICp3b3JrOw0KPiAtICAgIGludCB3b3Jr
X3NpemU7DQo+IC0gICAgaW50IHI7DQo+IC0NCj4gLSAgICB3b3JrX3NpemUgPSAzMjsNCj4gLSAg
ICB3aGlsZSAoMSkgew0KPiAtICAgICAgICB3b3JrID0gKGNoYXIgKiltYWxsb2Mod29ya19zaXpl
KTsNCj4gLSAgICAgICAgaWYgKCF3b3JrKQ0KPiAtICAgICAgICAgICAgcmV0dXJuIHdvcms7DQo+
IC0gICAgICAgIHIgPSBfdnNucHJpbnRmKHdvcmssIHdvcmtfc2l6ZSwgZm10LCBhcmdzKTsNCj4g
LSAgICAgICAgaWYgKHIgPT0gMCkgew0KPiAtICAgICAgICAgICAgZnJlZSh3b3JrKTsNCj4gLSAg
ICAgICAgICAgIHJldHVybiBOVUxMOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGlmIChyICE9
IC0xICYmIHIgPCB3b3JrX3NpemUpIHsNCj4gLSAgICAgICAgICAgIHJldHVybiB3b3JrOw0KPiAt
ICAgICAgICB9DQo+IC0gICAgICAgIGZyZWUod29yayk7DQo+IC0gICAgICAgIHdvcmtfc2l6ZSAq
PSAyOw0KPiAtICAgIH0NCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGNoYXIgKg0KPiAtWHNhc3ByaW50
Zihjb25zdCBjaGFyICpmbXQsIC4uLikNCj4gLXsNCj4gLSAgICB2YV9saXN0IGFyZ3M7DQo+IC0g
ICAgY2hhciAqcmVzOw0KPiAtDQo+IC0gICAgdmFfc3RhcnQoYXJncywgZm10KTsNCj4gLSAgICBy
ZXMgPSBYc3Zhc3ByaW50ZihmbXQsIGFyZ3MpOw0KPiAtICAgIHZhX2VuZChhcmdzKTsNCj4gLSAg
ICByZXR1cm4gcmVzOw0KPiAtfQ0KPiAtDQo+IC12b2lkDQo+IC1Yc0xvZ01zZyhjb25zdCBjaGFy
ICpmbXQsIC4uLikNCj4gLXsNCj4gLSAgICB2YV9saXN0IGFyZ3M7DQo+IC0NCj4gLSAgICB2YV9z
dGFydChhcmdzLCBmbXQpOw0KPiAtICAgIFhzTG9nKGZtdCwgYXJncyk7DQo+IC0gICAgdmFfZW5k
KGFyZ3MpOw0KPiAtfQ0KPiAtDQo+IC0NCj4gZGlmZiAtLWdpdCBhL3NyYy93aW4zMnN0dWJhZ2Vu
dC9tZXNzYWdlcy5tYw0KPiBiL3NyYy93aW4zMnN0dWJhZ2VudC9tZXNzYWdlcy5tYw0KPiBkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDI4OWM0NC4uMDAwMDAwMA0KPiAtLS0gYS9z
cmMvd2luMzJzdHViYWdlbnQvbWVzc2FnZXMubWMNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSw2
NiArMCwwIEBADQo+IC1TZXZlcml0eU5hbWVzPShJbmZvcm1hdGlvbmFsPTB4MSkNCj4gLUZhY2ls
aXR5TmFtZXM9KFhlblVzZXI9MHhkNjApDQo+IC0NCj4gLU1lc3NhZ2VJZD0weDAwMDENCj4gLUZh
Y2lsaXR5PVhlblVzZXINCj4gLVNldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4gLVN5bWJvbGljTmFt
ZT1FVkVOVF9YRU5VU0VSX1BPV0VST0ZGDQo+IC1MYW5ndWFnZT1FbmdsaXNoDQo+IC1UaGUgdG9v
bHMgcmVxdWVzdGVkIHRoYXQgdGhlIGxvY2FsIFZNIHNodXQgaXRzZWxmIGRvd24uDQo+IC0uDQo+
IC0NCj4gLU1lc3NhZ2VJZD0weDAwMDINCj4gLUZhY2lsaXR5PVhlblVzZXINCj4gLVNldmVyaXR5
PUluZm9ybWF0aW9uYWwNCj4gLVN5bWJvbGljTmFtZT1FVkVOVF9YRU5VU0VSX1JFQk9PVA0KPiAt
TGFuZ3VhZ2U9RW5nbGlzaA0KPiAtVGhlIHRvb2xzIHJlcXVlc3RlZCB0aGF0IHRoZSBsb2NhbCBW
TSByZWJvb3QuDQo+IC0uDQo+IC0NCj4gLU1lc3NhZ2VJZD0weDAwMDMNCj4gLUZhY2lsaXR5PVhl
blVzZXINCj4gLVNldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4gLVN5bWJvbGljTmFtZT1FVkVOVF9Y
RU5VU0VSX0hJQkVSTkFURQ0KPiAtTGFuZ3VhZ2U9RW5nbGlzaA0KPiAtVGhlIHRvb2xzIHJlcXVl
c3RlZCB0aGF0IHRoZSBsb2NhbCBWTSBoaWJlcm5hdGUgaXRzZWxmLg0KPiAtLg0KPiAtDQo+IC1N
ZXNzYWdlSWQ9MHgwMDA0DQo+IC1GYWNpbGl0eT1YZW5Vc2VyDQo+IC1TZXZlcml0eT1JbmZvcm1h
dGlvbmFsDQo+IC1TeW1ib2xpY05hbWU9RVZFTlRfWEVOVVNFUl9TMw0KPiAtTGFuZ3VhZ2U9RW5n
bGlzaA0KPiAtVGhlIHRvb2xzIHJlcXVlc3RlZCB0aGF0IHRoZSBsb2NhbCBWTSBlbnRlciBwb3dl
ciBzdGF0ZSBTMy4NCj4gLS4NCj4gLQ0KPiAtTWVzc2FnZUlkPTB4MDAwNQ0KPiAtRmFjaWxpdHk9
WGVuVXNlcg0KPiAtU2V2ZXJpdHk9SW5mb3JtYXRpb25hbA0KPiAtU3ltYm9saWNOYW1lPUVWRU5U
X1hFTlVTRVJfV01JDQo+IC1MYW5ndWFnZT1FbmdsaXNoDQo+IC1UaGUgdG9vbHMgbm90aWNlZCB0
aGF0IFdNSSBiZWNhbWUgbm9uLWZ1bmN0aW9uYWwuDQo+IC0uDQo+IC0NCj4gLU1lc3NhZ2VJZD0w
eDAwMDYNCj4gLUZhY2lsaXR5PVhlblVzZXINCj4gLVNldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4g
LVN5bWJvbGljTmFtZT1FVkVOVF9YRU5VU0VSX1NUQVJURUQNCj4gLUxhbmd1YWdlPUVuZ2xpc2gN
Cj4gLVRoZSB0b29scyBpbml0aWF0ZWQuDQo+IC0uDQo+IC0NCj4gLU1lc3NhZ2VJZD0weDAwMDcN
Cj4gLUZhY2lsaXR5PVhlblVzZXINCj4gLVNldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4gLVN5bWJv
bGljTmFtZT1FVkVOVF9YRU5VU0VSX1VOU1VTUEVOREVEDQo+IC1MYW5ndWFnZT1FbmdsaXNoDQo+
IC1UaGUgdG9vbHMgcmV0dXJuZWQgZnJvbSBzdXNwZW5kLg0KPiAtLg0KPiAtDQo+IC1NZXNzYWdl
SWQ9MHgwMDA4DQo+IC1GYWNpbGl0eT1YZW5Vc2VyDQo+IC1TZXZlcml0eT1JbmZvcm1hdGlvbmFs
DQo+IC1TeW1ib2xpY05hbWU9RVZFTlRfWEVOVVNFUl9VTkVYUEVDVEVEDQo+IC1MYW5ndWFnZT1F
bmdsaXNoDQo+IC1UaGUgdG9vbHMgZXhwZXJpZW5jZWQgYW4gdW5leHBlY3RlZCBlcnJvci4NCj4g
LS4NCj4gZGlmZiAtLWdpdCBhL3NyYy93aW4zMnN0dWJhZ2VudC9zdGRhZnguY3BwIGIvc3JjL3dp
bjMyc3R1YmFnZW50L3N0ZGFmeC5jcHANCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu
ZGV4IDcyY2VkNzkuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1YmFnZW50L3N0ZGFmeC5j
cHANCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSwzOSArMCwwIEBADQo+IC0vKiBDb3B5cmlnaHQg
KGMpIENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0g
Kg0KPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywNCj4gLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQNCj4gLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+IC0g
Kg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAqICAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0K
PiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXINCj4gLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLg0KPiAtICoNCj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LA0KPiAtICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywNCj4gLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUg0KPiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gLSAq
IFNVQ0ggREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLS8vIHN0ZGFmeC5jcHAgOiBzb3VyY2UgZmls
ZSB0aGF0IGluY2x1ZGVzIGp1c3QgdGhlIHN0YW5kYXJkIGluY2x1ZGVzDQo+IC0vLyBYZW5TZXJ2
aWNlLnBjaCB3aWxsIGJlIHRoZSBwcmUtY29tcGlsZWQgaGVhZGVyDQo+IC0vLyBzdGRhZngub2Jq
IHdpbGwgY29udGFpbiB0aGUgcHJlLWNvbXBpbGVkIHR5cGUgaW5mb3JtYXRpb24NCj4gLQ0KPiAt
I2luY2x1ZGUgInN0ZGFmeC5oIg0KPiAtDQo+IC0vLyBUT0RPOiByZWZlcmVuY2UgYW55IGFkZGl0
aW9uYWwgaGVhZGVycyB5b3UgbmVlZCBpbiBTVERBRlguSA0KPiAtLy8gYW5kIG5vdCBpbiB0aGlz
IGZpbGUNCj4gZGlmZiAtLWdpdCBhL3NyYy93aW4zMnN0dWJhZ2VudC9zdGRhZnguaCBiL3NyYy93
aW4zMnN0dWJhZ2VudC9zdGRhZnguaA0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k
ZXggMzkxYTg0OC4uMDAwMDAwMA0KPiAtLS0gYS9zcmMvd2luMzJzdHViYWdlbnQvc3RkYWZ4LmgN
Cj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSw0MyArMCwwIEBADQo+IC0vKiBDb3B5cmlnaHQgKGMp
IENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0K
PiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywN
Cj4gLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQNCj4gLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+IC0gKg0K
PiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAqICAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiAt
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXINCj4gLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLg0KPiAtICoNCj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0K
PiAtICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywNCj4gLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUg0KPiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNV
Q0ggREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLS8vIHN0ZGFmeC5oIDogaW5jbHVkZSBmaWxlIGZv
ciBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBmaWxlcywNCj4gLS8vIG9yIHByb2plY3Qgc3BlY2lm
aWMgaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSB1c2VkIGZyZXF1ZW50bHksIGJ1dA0KPiAtLy8gYXJl
IGNoYW5nZWQgaW5mcmVxdWVudGx5DQo+IC0vLw0KPiAtDQo+IC0jcHJhZ21hIG9uY2UNCj4gLQ0K
PiAtDQo+IC0jaW5jbHVkZSA8aW9zdHJlYW0+DQo+IC0jaW5jbHVkZSA8dGNoYXIuaD4NCj4gLQ0K
PiAtLy8gVE9ETzogcmVmZXJlbmNlIGFkZGl0aW9uYWwgaGVhZGVycyB5b3VyIHByb2dyYW0gcmVx
dWlyZXMgaGVyZQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L3czMnhhZ2VudC5y
Yw0KPiBiL3NyYy93aW4zMnN0dWJhZ2VudC93MzJ4YWdlbnQucmMNCj4gZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0DQo+IGluZGV4IDc4ZTVjYzcuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1
YmFnZW50L3czMnhhZ2VudC5yYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDYwICswLDAgQEAN
Cj4gLS8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiAtICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiAtICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiAtICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoNCj4gLSAqDQo+IC0gKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xh
aW1lci4NCj4gLSAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlDQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiAtICogICAgIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IC0gKiBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiAtICogSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4g
LSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFDQo+IC0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUg0KPiAtICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsDQo+IC0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAtICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+IC0gKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+IC0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gLSAqIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiAt
ICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQ0KPiAtICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRg0KPiAtICogU1VDSCBEQU1BR0UuDQo+IC0gKi8NCj4gLQ0KPiAtDQo+IC0jaW5j
bHVkZSA8d2luZG93cy5oPg0KPiAtI2luY2x1ZGUgPG50dmVycC5oPg0KPiAtDQo+IC0jdW5kZWYg
VkVSX0NPTVBBTllOQU1FX1NUUg0KPiAtI3VuZGVmIFZFUl9QUk9EVUNUTkFNRV9TVFINCj4gLSN1
bmRlZiBWRVJfUFJPRFVDVFZFUlNJT04NCj4gLSN1bmRlZiBWRVJfUFJPRFVDVFZFUlNJT05fU1RS
DQo+IC0NCj4gLSNpbmNsdWRlIDx2ZXJzaW9uLmg+DQo+IC0NCj4gLSNkZWZpbmUgVkVSX0NPTVBB
TllOQU1FX1NUUiAgICAgICAgIFZFTkRPUl9OQU1FX1NUUg0KPiAtI2RlZmluZSBWRVJfTEVHQUxD
T1BZUklHSFRfU1RSICAgICAgIkNvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLiINCj4g
LQ0KPiAtI2RlZmluZSBWRVJfUFJPRFVDVE5BTUVfU1RSICAgICAgICAgIlhFTklGQUNFIg0KPiAt
I2RlZmluZSBWRVJfUFJPRFVDVFZFUlNJT04NCj4gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9O
LE1JQ1JPX1ZFUlNJT04sQlVJTERfTlVNQkVSDQo+IC0jZGVmaW5lIFZFUl9QUk9EVUNUVkVSU0lP
Tl9TVFIgICAgICBNQUpPUl9WRVJTSU9OX1NUUiAiLiINCj4gTUlOT1JfVkVSU0lPTl9TVFIgIi4i
IE1JQ1JPX1ZFUlNJT05fU1RSICIuIiBCVUlMRF9OVU1CRVJfU1RSDQo+IC0NCj4gLSNkZWZpbmUg
VkVSX0lOVEVSTkFMTkFNRV9TVFIgCSAgICAidzMyeGFnZW50LmV4ZSINCj4gLSNkZWZpbmUgVkVS
X0ZJTEVWRVJTSU9OX1NUUiAJICAgICIxLjAiDQo+IC0jZGVmaW5lIFZFUl9GSUxFREVTQ1JJUFRJ
T05fU1RSICAgICAidzMyYWdlbnQiDQo+IC0jZGVmaW5lIFZFUl9PUklHSU5BTEZJTEVOQU1FX1NU
UiAgICAidzMyeGFnZW50LmV4ZSINCj4gLSNkZWZpbmUgVkVSX0ZJTEVUWVBFIFZGVF9BUFANCj4g
LSNkZWZpbmUgVkVSX0ZJTEVTVUJUWVBFIDANCj4gLQ0KPiAteGVuX2ljb24gSUNPTiAieGVuLmlj
byINCj4gLQ0KPiAtI2luY2x1ZGUgImNvbW1vbi52ZXIiDQo+IC0jaW5jbHVkZSAibWVzc2FnZXMu
cmMiDQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL3dp
bjMyc3R1YmFnZW50L3hlbi5pY28gYi9zcmMvd2luMzJzdHViYWdlbnQveGVuLmljbw0KPiBkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gODQ0Yzk5M2JhMjkwZTUwNTVhODkwMGNh
ODc4NmVhMGUwMzExMzhhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA0KPiAwMDAwMDAwMDAw
MDAwMDANCj4gR0lUIGJpbmFyeSBwYXRjaA0KPiBsaXRlcmFsIDANCj4gSGNtVj9kMDAwMDENCj4g
DQo+IGxpdGVyYWwgMjUyMTQNCj4gemNtZUh2MzB6Z2hgfWVSZkR5eGJwJUxQUDBQKkQmO0t1fCEq
QzcwQ1AlNiZLWWwqKkZLNT4zU28xPkU7Rl9YDQo+IFQkfQ0KPiB6dl8jeXUobyNmb3gyJTRabUhO
RVRjZ3tKTmRvTih4cntEWCZ8SWZlQ0AwcG9yb145NE1YVUAzQFZKN1QNCj4gRVhzOHAlDQo+IHpt
U1RYbDVPYWtQSS1RY2dWPWx4cXJhM3QmYDlMIXZacktVdTd0QylmKTtJe15QITlaUi1kMmQ2PyUt
R1ExRlZGMg0KPiB6KF51b3lpOGNPMDkxWU87SW5SN1VUV1Mwe0Z+Q3hZJTVNcjAkVWQrTShTcmZN
NUtAJiRyajBNRFQqI0V2DQo+IFIzK2pvDQo+IHpDbUU/Q0gjZTZITmQ2WkBOSE8+eU5WeG9FdW8q
a0g2clFuVFFffEFManZhMVhXSFVBYFpETHwjVEcNCj4gfUxJblV1N3wNCj4geiNGaG1HaUhYVCto
N3ZYdDZBUDQobXBHfGRsVENfN0UtDQo+IDEpTEY0bU1YayMlU3hQcGA/d2tqekZqTyRKJlpsJFdm
Uw0KPiB6SGV1SGIqaTYoXnQ4dCM5RDVhJGR5K0E0fHArOzN5TEplRG5xTGh9V3hWPnBBbCU9WilD
fVE9WEtWfnUqNQ0KPiBXQGh9DQo+IHpYYWFnVkUwWEZ9MFlwPjV1aEZIWnNlMU5leCtKQSo/OFM1
YHBqUUxCVDNaTmtrbHNqI3Z7cTBHcSpXdWp0ZHJ0DQo+IFINCj4gekRmRShoNm47JTBkQVFiV1Uj
ZjxzMSUxN2dDZXdSVk9xY0FeQ2tQYk5RUChGKiEqWVFzVD8oKklPamp4XykNCj4gdnk5cA0KPiB6
bGlEd2UpaEEzPnk5amo2UUJjKFlIQjRgKjwrVjZiNGpgQE5HXipAZ0ROc3oyRFhGRnVNVCMyc3cw
S3M0VQ0KPiBtTVMrDQo+IHptTmotM0ZtJFBTektGOHM3aS0NCj4gYz83fGxvNFJRbWlDV3pCYVhO
PyN1XiRCb3ckck1zfmZKJnNlPkJ3OzR3JDNuem0NCj4gempkfj02SHt3RGU5MSo3cVZTJCk2bmVw
V3IkSCtXRUpZRVBFVzVNRT4jYVYkNmdAXyVDPDZQdXpndw0KPiBXenQ8U2xzMw0KPiB6e0VIYUh5
ZFcjI0lkTGpEVU8tPGlfemU2Z01CY3pwJjQxSCtZNHozVyZyS2xQTCpHOEVOVmI+T2VwLQ0KPiA4
eStQLVJnDQo+IHo8MzZLZiM1MSh9ak5wNC09Xjw1VkFpbDN+aW95UnQ7PitLPSZscnlkOHw5d0Ru
dzV+RSspSVk1Knw4SDdUakN4dg0KPiB6Tmc+I3phU2tDX1BQNXxhcC0NCj4gYz5lZDcxfFgpNGJ1
ZGw8T19le2l5ezd5Yj9AUio5I3QrUT9Wanc+angodlY8Rko7DQo+IHpOVCozNUhYems4MG1ZYyVH
TFBqJVVDPFNDPV9UYFcyfl8jekc2VnMySiFFIVBxNEAqZjxlRH4+P1Ymbg0KPiBjXzVfIzUNCj4g
ellNJDl5bVRnWXQzWSpsZ01FeTxNIT9nV2BZNU5NM19RJEZxQEFYPiRAWFZIYjA9MnNrNzU2ViVN
DQo+IGg+fUQzIWRJKQ0KPiB6I04mNTdoOXJoKEFyRG1gbWp6T0opKSshNHZrZnklNTVzYiNiNkt1
WClkNzliMztsQWEheVlkITgwU3Q1OVlZKUUNCj4genNobG83cSspUG1VQEgre0lyKU8pb2E+QWh1
XkZBMSpvK2dTVGs/Mm1DVHV3MyNCZVBoZWQ9KlJgamRpWXENCj4gWUxPVQ0KPiB6X2FldktrcCtt
RUFZPDl2cGclYzlRPTRnV1RDQ35TK2QqNWl4eU0tDQo+IFJZPE9NNitRVGdkbG9obWNASW5UJSNg
e2lODQo+IHpNVT9sdWBrP2chNlokZFVzXlRMMGdAdVdKe3JaWFY8SHc2Qjl6dngxU2MhQ2hkb2pu
KU93MTF1Vm5NTEEkDQo+IGYjTEMNCj4gek9iPkR2dnVqcnApOVpTUGBFXn1IV2B2aG1SWkVEcWIl
ZllaU0JOZClMZ1lsNWlIejhxVnBDJlJrPS0NCj4gbXA5Nz9iaA0KPiB6YFIoalFROUJ7ZF9JNDNo
IyNSK3l5Y0k0Y3d7OXd5YngwNjchPHZiOHtrdz1QdyFpJkAoYyhzVzRSTD42bjN5DQo+ID53DQo+
IHpPPU0rZGlLUj1JaWRDeXRpTTRDamlqNW1MaXJ1PytpdnRHXmh5cElWa2g0UnNUU3QhYDZ+flNw
NkRMbGI1VHtSew0KPiB6N1UkMk83aGl3PHdZWWxxczw/NkVoUFpYPm1iaVFPdTZYZF5mJXgmcUFI
XkBmezMzcTt7ZGUpfm5PdUdLDQo+IFA0alEhDQo+IHoteG0xYSY7cT1ZfDM5ZHZsfEg8SGFwbnlT
Mz1IREg1b2V3JiFzVjdoez1WTWNvKm97YS1ybTBjTDYqLQ0KPiBHdjliJmENCj4gel4hNChwNXVr
PHxVWUA+ekEobXk+VkJPNUVYSTVsdGM9LQ0KPiBtaGpaKFp+UGZCbkBoOSVnbTUoMkU7K2VFa09S
ZStaXw0KPiB6bj1sYnpjSWlydTVgaXQkQEg3PSpjMjVJTkZCdUY3Q0lWcGhMYjFZVmUzZikjMGpu
VHlqbU9nQFhtc3pPO3dvNA0KPiBMDQo+IHpgZyReNTtqQ3M5NmREU0IxMnFCbXJrYlNkSWpoUWAm
bmt1Ykk8eHZ9bygmdHUkYlN1azY9dUhIaSV+KXAxVTsraQ0KPiB6NE9qKE1Xa1MzYj5aaygyOGlE
aFdzSCE/LQ0KPiBXJDd6OTs8V09wJH0rXkxjfiFoPlJuPnIxUCElUklpKFZpbW1+LUpPDQo+IHpk
ej5ROEVMRF55dmhyNmJlQU8oKGhnODxRUVEwTW5LVSZEaih5eCp9PW1pPlIjYEh5O0BJd3UoMCh9
Zjw4DQo+IGs7NikNCj4gelAqa2Fza0lHLXNGbGR9SWp4I0smc1BHMz5hV3g3QzAjUVo8dUNsXmJL
YHRnaVlzbVFjNVIoISNQKVl1ZlZoZVNRDQo+IHoxciZaS2QqZXs3S1ImKkpWVWQmTTR8S1A7bXVs
M2EyRjI8KjYlITBIJUkpcGxtRyl1JmF2VzZsSSE1ZkEyDQo+IHw8QUANCj4gelNOV15rKipTNkUm
V2BESmBoSzwzY1NYM3BvdC1TTkU9UWJJQW9EdnBtQTY5KCowXystDQo+IEVYNCVkbTNNTm92eTwl
SA0KPiB6S25gfSEmTWVALQ0KPiBkYkdOTnk7dllGbT0pU05zTiplQVhZSzZmP0NqditQKERnazhF
MGM+WFVvdG0jTWc2bnckPl43DQo+IHpjPzROSXlTcWM4cDJsdSVYSmNiK1ZgRjJoeGZkVmhZXn0w
MHpzfHdPJEs2ZlpzOEZHVG92cDIxMXNqSH5FJDE4DQo+IEANCj4gem9Tb2c9KzxodSY+VWwmNVRE
JHdINXs/Y0klJWxZZTJTPGg1JEs2XiMtDQo+IChrU2Ymcmd3WGI5T1dndGVTUUVgMXZ7Tg0KPiB6
KW5tPkN4JXYzfUwmVGpjVmktNk5aaHY8LQ0KPiByRSEjSG1weVh5XlhDOH5ra0pDP24zP0kwI29q
PUsxPkYyWEFwdDg4DQo+IHpsN1cqNyZDUXJ5NjleNGVXRihWJVZWWWtGYn02OXE8MSNKeVlZQXI4
blFCKkQzZXZneipHMTU/QklFQy0NCj4gRUE0KjcNCj4gejdXbEBpTnFgWHspWmJsKStweTlzcmRP
XnRfa154YFhsVUt+XzFRe3cmSUZkYGl6Yk1oZHIrWHghb3U5bCUtcTY0DQo+IHokQz5CZHVWcG59
VzxRfFZWVT1wbz4+OUBNZDZ1XzkjY3s0OXduZyt6SnpzZ0dvP2pLSj1VMXV4TlFpUA0KPiApZzdZ
Z3ANCj4geklwRitDcDV0KUwmI2R6TmlwQXZsbEA9RXdAMiNGd0B3cmVnQCY8NyNeOEQ7KDhpUzFV
Q21IXk1JMkRSDQo+IFl2NkJuQg0KPiB6Zmo/VGw1T25yaXRBYGVBXzA7T0V3RjVWU2E7fSVFd297
P25aWSZ0Ymg1QnxTckplRGRzJDt9NkBFJTQ2T0NeJA0KPiA1DQo+IHpnWGgjYW98WW1iJFZGdUVe
WEI0NlBxOG9ETzYrVjxMRnxzTzZUNn11I2t6KS0NCj4gI2hNMEgjRXhpSkZ9K2JPYVZYTUsNCj4g
ejlFLTZPMmIjRXdVNVZhZVMkdVZ8YHFlc09YUzM9ZXImV205QD4rPTQpR2tgPWN8QSY7WS0NCj4g
fWFZSG5TMERsV29QdA0KPiB6SHVtRCVIamQmLVM0V1pHKyhxUUlfWXhPNnhRY0p2SXgpPmpvYktR
JDk8KCRRZz40PGg/WEttLS0NCj4gN2ZheERuSFd9DQo+IHo0cztkdzJEeWx2VzIlVno/Xlk0ey1H
anh4SHshK0t4NE1keyF9XktDIShKRGtrTTF0PSNgWTM8PytwLWxRYSF9Jg0KPiB6azk2WUJDcHoo
OU1zQExFZXozPy0NCj4gZU1AfXQ7YyMoYys2UTlCajJVQTZgdEBTZHJjR2s9PUZNV34mWWtqXl9z
cEQkDQo+IHo7JXckKmFlbVBaYWRHSiFAenUmS2BUVSFnbW5ZN2hKRXdve3twT28qI1AjZGYjZHFJ
KkMhYyUyfE5pQGINCj4gcEwtMzQNCj4geioxeVVCODc9VG5LY35qWlApNk5qVj8lNUNTRmk0MEQ+
T0U/QnVpfGxQZTlGKDI5YzJzTFRVemhncW17MWBxZ0w8DQo+IHpyNEoxUHtFUWk1ZUlnPWRoKkZ9
K2BhWHNYdkh0WlZqNiNFbWBYMHAkdkFXPD1mPSorSV4kejQ0c0MtDQo+IG4kTUZ1N1cNCj4gemRh
RGVmOS1lSXhUS25SRyQrdk1rNHNBSyo1aHwtMD4lfFdfP1BYfCQ9Tip8c3FNRGFmNWJLVTc4LQ0K
PiAqZGNZU3E/QQ0KPiB6d1VhYj1Tc3EkTjI4RSRqdk1nM2VSYlV7dDVecGVOUCZqYmFEM3dAMkVi
c0t4cGZQQjkyUz0xVVNYb3QyDQo+IHxGQERIDQo+IHo/WDt8dzFJbWt3dCg1Wmk/SGckdkNALQ0K
PiBnTzAmSnxMWiZGM0ZxfWh+MXhlTT1LV29SVWVZfjsxSXFffVhvMihgN2cNCj4gekVAeHdILUI9
Yl9UVSpQeFRfYUEoMjhgdUJKMz4zcSthVjx4K0JZci0NCj4gXj10c1VjcWdhVXZSbyNlNm93WGR2
UnM2Xg0KPiB6OGErK3ZHcDxWaWgqKVIwK05BX0hYR05TWElBZjF5OHVaMCpwPFk5aTVONUFRT0NL
JWtCXlpUcE9UJUsNCj4gO1ZCeT5fDQo+IHpDTHlWNXYhK2QoQ2ROY05UTm9FSkwjVmxQPHZQKFpH
MH1BQEpEWm83QTgzY3ooREs7dGxgbk9FITMkPFZrVipZDQo+IFQNCj4geipgTStDUTU7ZEtqb2Ux
Py0NCj4gaCs0X0dYND43RWVkJj9rKm1DV2E3XldgaFgkZVNwMElOPWY+dz89U0N1UGQ5bmJ9eA0K
PiB6JkBIIXNZenNFQVBqTz1DODJXdCpfOWp7fCpyJnt7PV9wcGx4ezc1ezklNXE/Wj9VYkpuPmYo
TUwrdE5kUDMmDQo+IHBtDQo+IHpFNEg/LQ0KPiBDJSl7YzZEUFgqaXV+NkRNU2lDYDs9fih+OyhV
Sn1hZWt6KXhIN158VHB3M005UFhKWVA3WCpHWFpraH4NCj4gej1TSUZKP3RMMDBfVXpkczRqdyF4
QEFIPX5VNlN8cGhZdWYkcE1VO1l7UUIjIXxEST1Te3FiLQ0KPiA3Wnd2ZmlaVU95MQ0KPiB6I1lf
Z3h4fHh9Y2xiZjU5amhWN3NuMz1tTU0tDQo+IERGTGE/TE89S0N9WUNqRV58OTtBa2V5dFFAXyl0
MiNRbWR3Y1cyDQo+IHpoTHhGX3dQUUoqJmVQcG49VXZYUm9WQSU1JlgjbD55bThDMVNNdWROYi1I
UzUtbk0tDQo+IENeNnBecDxiPHU2bkkje2wNCj4gej15WlYyeUBEa2g7M0Y2PFJEZ1lwO3pLfFM+
N1llTDx3VVpnJXJifFdvb25VRnU2QVo5bUJGQ0NjPXcyDQo+IFJrYSFvRg0KPiB6JF96a1JLYFJG
QFdGVSltN0J7PmUzXlNxUUU5Png9KExad0dCUCgtDQo+IDtDQnVlTW8+N1Y2JD8jKFlGbVJ4VlY+
fCQ5DQo+IHomYDxeKkBJblQlJns1X1c3WE9IfDIxO095VmEwJWJIJTRfdlR9QUBxYncpMm5LZ0xN
TEoxVVJ7NFExDQo+IGN+Rkp2R0sNCj4gejluYn14fEZ3RVJIdj9AMlRrZWJ5TWx6JDx0Rk9LfnVT
PUlNVSVjX2c4PCFaRGQtDQo+IHZ9Qlc4YzFncDglWnhzYXY7aA0KPiB6LQ0KPiAhbEQ1PWd5cl53
cmJVQ0hPcVgkY28odF49enVRaGd6a1U1S1VrKikxSU01Xml3fE5uPVJNbkVfVVF0QTk1DQo+IEdf
Vg0KPiB6KCtMd01KZXhkdXZjI01AYjB8QUlUTE5pfjRqJUJiJXV9d0BSbztaPnUmemxBXmlPakpi
aSlSMFNyfk50LQ0KPiAlN0YkDQo+IHpHWH5uamZ1VW8+dil9VyVPQEdqUWhKV2oocXxseXNKNXY2
akZwMH11VCFgUCNPQ1lWJCEyQDIlWG0jbjt0Sg0KPiBsdzUNCj4gemtHLXNWR0dqMW9hTF9TZTZT
a2ktXlVKT2wlVkU0PU9nYnxIKnY1TjNkLWcxWi18Nlk7Jno4LQ0KPiBhT3R+WUg9KnBtfg0KPiB6
YlpkTXl4O3JuQj95c3MjND53MjlfZEJCS2A8IVRyaG4jLQ0KPiA2RFQzfj00NWhtbjBkKHZBcyZy
KzV5T2Ywdj16YEFmDQo+IHotDQo+IE1pbXkqfE96RXdsI3IpSWZENVArYj15WVNPJmdoWk5OR2Eh
aE9BS0BaaUJ1RmI8Wm8lfG0wNz10aGJnLQ0KPiBOXzgxDQo+IHoyT0h8cyF8bSlOezZ4R0JoJXx2
KDF8QllkdXMpcGJXQ1QqdD10Xnx4P0llT3U9dz0mRmQ1KVpDbl5QSG0NCj4gVjRERlMNCj4gejtM
OGltWlJXJDZMN2dFTiNfZShmP1NucXdLUmsmRk1ePldTYkEjd1VgfHlDPF59JEJRWFo3aG16OyhJ
NQ0KPiBBellUQg0KPiB6VG8yR3QjeXNHYUdVJGBGVlJVOz0wOV9tRURze3NLWTtrKkNXODFTQkJq
NXVBelFDdXk5ODFpREczVlQtDQo+IE9gOWU+DQo+IHomTDR+JkpORF8pblVnOTE/ZlBgJVY7JFhI
OSFtR3Rnd2VmS14lITtPP2d9MGtPdU1fUjQmN1peaHdkej8NCj4gTz9NV1gNCj4gemZOM2FgSm02
aFhTSVhYNyV7b3tZV1Fzb1lxR099IzZLdWdJPF4/fC0NCj4gRW4jMCEybE5CUmxIck1GaU5WazFT
WjZTQQ0KPiB6MHtabW5iTU84NC0NCj4gKyNKPF48NWFeTmpFPEFxdVVFPk4jNzlQbyp6UUR2ViFU
PnlxZmVLX3M0ZzAwX25UaWZwbHxMDQo+IHowTnRFdjA7WnUlQC0NCj4gWGtNJSRqczdKNlAoXz5z
JH4qTVUjQiMhWE9XViYyaSgjSndxTVg3eFYraDY2T1BaRHxLQ0INCj4gekk+dFFLRW5TWnVKQFV7
NyZ+dDlFQ3RYa1RySkVUKzU7dFpBKHYyQWJSNWFiNmlheERRKkMrYz87VXBnX3tGcEkNCj4gTw0K
PiB6TjdwOEopM3B4KUZCUDAtDQo+IDhwXjxQb3FkRTFXVDZBUFpsZDFNS1BPMT9vRUBPbDBZMGM+
M0cpR1NURX5Fb0NGVE90DQo+IHpGbTVYSWN3ZGIlMjtXY2p0dyFJYmRRc3QmPkklM1gqQ3pWVlJy
Y0BPND9POWNfZE11STNhPSspLQ0KPiAwQVlARHMqe04NCj4gejc1YUxGOCt8PnpheHE0NW5yU0Vs
NHx1UDxRO29oRT1mT0k+cV5AaElKTH1mJGVFWXM5byRPc3pfNSp4VD1reF5qDQo+IHo0Kn5aRnFq
QUp9dzAtJGJvalNkYWJxNGImY1deajsjV3VlZz8/dkNSb2gkNj88KmAtDQo+IGk+KFREPzc1ajUo
WGwxJU0NCj4genhGVEhgOzdhSEZ4elBETyZVQ0p+NlBAZW5OYXVQTzBDfEFSenluXiRUcFYwVT5W
UGlqeXFyPV4rSkcoSygNCj4gcmBEKg0KPiB6OVRZQ182PEMrbHdINWI9QW92UU93RiRzISV4IW1g
dVY9QjJaNkJPT1hMPnIocklHSDhEcyp2fTg9WXIrPQ0KPiBMU0B5DQo+IHp2d2RDWU9mTSVvLQ0K
PiBRQUgrYipuKDl4fEZBcm95eVY0al4qZT8yWVdqNG5xQkdPR1ZwKkdHTFZJaXYlUT85JmhyRGcN
Cj4gekVyd0sqd3FXPC1oJF54aXpROEJrQUsxc3E0QlYlJipPMEhqSUZAYkM8ODFpSWt0M2Zoby0N
Cj4gdnY3K0xvdFA5VipsRQ0KPiB6X0xYVF8rZSk7d3dKUi0NCj4gYz18VzRJSkphSDFDdEIzaGty
cEw3KEJneSZiZztQe2VjOTVRekhHczBaYmVfYlFXOGcqDQo+IHp3bSFqKnZnNjd0WGszQV44I35a
XiowQ1ZUa3JwOyV5e3RSOE9HUEA+Z1dJTUx3XjlGIWJmJks+PCtyZ1YNCj4gXz1JdCENCj4gei0N
Cj4gbHd0R3o8TVA2Zk1iayVIKHFhVTthPDNQUCFiKk1QPU9BbV5gYVl2KlhaYGAraHlZQiY2X2xE
WShMciVYRw0KPiBAMEANCj4gekVhPndsPUF+a0R5ZTtrQnhRNihmeUUxWDw9empYVkxxJDZGU348
JF5TZX1rfGFpRF4oaiYhVmpJZjc1e088aipCDQo+IHp2QUB7IVZjIWJoWkZuQ3gyeU1USj52XzFU
NiYtDQo+IEM/aipobkZ7KGRLIXsmVipSQHBwYW4/Q0RjXmJjOSN+MnY3ZH0NCj4gemxlVnV8Sz1Z
IT8pNG9STGJnKz9gNSV4QitwamlYak9Gci0NCj4gJCU0I30pYHtAVkQ+bTVwbW5fMUU0JjIxPkpy
N2F6Sw0KPiB6KXNGcUptd3BeZHZMeUpYXzV0Pk15JV5RdUpFSl87WXYpSEZlZWByZy0NCj4gejNV
eVlFNmUmJER3MiFuTGc2bGs4WWpGDQo+IHpFel5JXnBLflhVKTEqZTh2QF9iQV9DXmFtcnBII0ho
WSMrVGtreygrbC0NCj4gcntxd0h4aF5HcDdUTUUkQmNLT0ZFY24NCj4genJURD08ej9Yd2JSc2BS
JD1pX21IbTNfd0V5RG9mWlJOYCslfEc9OEZ2bmspbDZSYzwtDQo+IChBYmpwIyN6dUZab2hwXg0K
PiB6P0NIfFZZNUYjVj9iNT03YH1iKjVydiV5JVZMPl5PZj51VVlRe0xfIXJManNIYHR7PDw4TU0y
aDhTUmMldXENCj4gVmJgDQo+IHorSnRUUkFibndmYn5kZGoqQ09uXyo9SWFJQio2RXNVQXctRHY5
bn1pM2hqKENyeVRZLQ0KPiBDJnEkeWFYYXA2WHdFYjwNCj4geis4TjI8dml4eWY9JEEoaU9OOz8r
OTNYIUQraSRlcyE/JFR9czE/bF4oMjNCI1N8N25fRWUrcVY5QCRIfjs+eXZFDQo+IHoyMH12R2sr
I2dGWlRKOVJhJCtye2VmV3FtcSZAQFRlJikkekNrdGF8PHkjJFRUWjk+SFlvRyNZI0A3MHgNCj4g
N356OFUNCj4gemNka1BadWJlTSlKaXRIcmRfMzxFSl5KQiRySmRDfTgyYk9pdHM5aW5OPUk4K3J5
ZDVqcSVTN156KDxUQkpqYiFgDQo+IHptOy0qaT01TkZMeH40LQ0KPiBJWjROVnwmRWJxTkw3Tk93
a01qb0Q3VXg3KWNDMz1+U35+Y1dtcH1qYm8lWilqRnckd0wNCj4gei1fU09FUUc3QlpfeX1MfEVY
dXkpY3srZ28tDQo+IHZRZEhfRj1AfEppam5MMyR2aShRJUJTOXp5MTIkekEkV2FFJmNpQQ0KPiB6
a3VQaz0mP29vXlV3SUNIJWY4RnwwTUNhYXAxYVJoTjRwU3p4QmIlQypFZk00LW5nYjtWPTthLQ0K
PiBLVFhwWl5MWjtXDQo+IHpYPkMycm0kbjFuOzNMKTxadTZobWYxR1g5O2tEOz9KWnRsSj1ZSmRQ
OztZZDR5PDdmckppLTUyIX40KkBUR29IdA0KPiB6N0pTOC1mdk53P2c5UkJPI0VnfiRydTAocyVS
PGNRIXshbGtlS2w9ISk0dXJnazNWUmB7MHkyeykxSDxGfEFxY2kNCj4gej4+SyM2amkyaW5LWl8l
SGUtazdtbUlqLSVaVXN3Zm52b3VBeHlGWmhGPUpldk5fNGE2eF8pZ21eJS0NCj4gP0N0PUgtTg0K
PiB6RkRXSjVsTkpQLQ0KPiA+K01SdDJLTH5DdzV7NU9rTHZqT2s9dExKemdzWFQ3UEpiWmcja2lo
YVpPN0M3UyooJU1YVm9LDQo+IHo3LQ0KPiAmYHVsQEkoTTE9e21rZDAzQTVtJVpTQV9kKXhuRyVM
V09TVTIwelkpYnA9Z1hSfX1STSglJj83dig7ZEUNCj4gZDRQDQo+IHp2fWBXUnR8MjVBKjBRQ0FB
dlZPbik4T3s4cjE/UD5HKFhUPkIwSXAwRyklMypgXnhOJDVeWmJQe3RzP0d6aA0KPiBDJXcNCj4g
ejZFeSRoX2h+ezZUZ25icD9YVyVBbUc7Pk8lYGY8PGBoU1cybS0NCj4gakU4JWQ+SSslSWVwVj0y
YUlHM3F5SGRUZjAyWA0KPiB6NTgqdjtPJmlKenc0JHM0T1VtU1MlQioyN0cwV2VBclZaPSYrJWJS
byROXmR5P24odWA8fik3IU0wU3QNCj4gcVNPTzdjDQo+IHpoajtJIShJSiYrWlVFYjJkJDBAcF5K
fHNVYHZvNnl8SDRAJWAhRHdvZD9wcG9gLQ0KPiBlWlhRdSRvV1M0Yj9aVXp6NkQNCj4gemIqQWp2
NHdNeUFvLSU5TihZIXojbiM9N3kqV1okNil2JTxMU0VBYFItDQo+IFliKzllIU8+dzdSVVFaZUht
UVd5e1NYIw0KPiB6UGoyaDcwQGtMUkg7VS0oIzBaKkV2eilZPlVCXi1TcTRAPEx2NDZtTUVCbWtR
LQ0KPiApeWprVmgrISQ/THNxa2YpKykyDQo+IHooISQ3VWx3R2U5VyE3PH5jXzl1b212dj9ZK1I8
JDg9VFR1a2JvYjZ9PjU2SDRCOUFAdyMoXkRhcmpNQnMNCj4gSHVoPm8NCj4gektSPnU8R35TQFpQ
eyk2TXsrWHRZOTg5MG9zel9PRUtSY3xsXmE7TFU/eTc2MjtyYGlAPWZHemVMJGY8MShSNDQNCj4g
Sw0KPiB6IV9odnBxO1ZpRWkxTWJhYUNlJGxtLQ0KPiBgaitINjE3PXhINnFUYitXOHhsPXB4bTN1
alRmdU8rNFhTZF9xJFdfKDY7DQo+IHpgUW1mJDY7RjZQWkN8XkotDQo+IFZPSnFkRXImMVB3KSs2
MldRNklfSis/ZDx+Iz93VTxfcVdvbEt2NDIrQ15VTUpybEgNCj4geigyfUl1dj4/YEI9STRkNm8t
aHh9Uyt8T1F7clJWMntQWkxKWUpqVzl6bzN+bG9vSmZRJF9VZWF0VnpPYCQwNihiDQo+IHo+Y0Iy
SnAwRjF4M3p5RUhxandWYFhve3k5IThlUUBvT2BxWGBzWVZIISprdz5ge2YjKihQcCR5cU0wR0N3
NQ0KPiBDJWMNCj4genQkWnp4bWJRcVgxJnhDI0U0bigoanE7KCltPlFKSD4zTERVRyZmUjV7MCQj
diljMnF7VmJ5NE1KJER8diZODQo+IFF2TQ0KPiB6eX5JPk1KQUdReHtMOWh3OHMjWkgoMUIrMV8/
WFhuN2JlIWA9anBvcVkjbU9eVDFDP0dIcW9AUWVMU3R7DQo+ICh1fiU7DQo+IHooU2x9MmBWZjRB
WmB7czV1JitrWEAyZFlzZWVraDYtDQo+IF5XQDsoZlNeKFg/MiVtVEpjJnVFcWJMc0tYWnJCeXl6
Tn4NCj4gejUkUXtGPlUtDQo+IDB5eTQ3ZSNvaG1lPVIlSj5MdTFNMl5UcUxGaWF2Y0o9ND5XTElE
KzM/K0FxUlFyZnhnVWAwSTdkTA0KPiB6UWU5ZnNJKSt3dFlEJFplIXdKM153RWNZY3pyXns4U19l
eitnQ2tnOXI/cEY+Uz5aYWBHXmlfVzlNR0I4X2tODQo+IDk1DQo+IHpjV1gmWStzNHlePE9zQFlR
aXRYPjNaeyZQMFdgYVRBSSstDQo+IG9Mb0A0bihUdXZEbHBiMSooKDY9fW18b2ptcDlVU30NCj4g
ei0NCj4gfiZKOEFQK3N6SEB8NShFcSpuSVIoNUo4P1FRN09MR3I+RV89S34yXzhwPGJgSVhpT3s0
Q1JHJGREbTttVkINCj4gMWgNCj4geklFKXMoK0s2XyheQT5GIylzSHB9PX16bldiKXdhOHd4TU8q
cDlAPlk1ZFdUI0c4NXwyK18+NzU1Z1M1dA0KPiBxSndDNQ0KPiB6ISQ2dUg2K3A4aFl2X1NJPXFM
dnRfI3BAUjE8ZjFNbEQzVSRXdFNHVHUxYG00MmxmYFdoJGlAZUgzdyZFYw0KPiA+bG5ADQo+IHo+
bGsobntuLV9LKjg8Wm1jcjhsRFQlUHlvV0o7XitPS2JiUVBKMklvazgoYTNQMXtyNnFBZXIpKTVm
PVkoej9FIw0KPiB6WCtfc3BYLVM3Pnc0aFpTJjJKR3lTOzxrOSp8WSY9Q1BtUF4jUUooNTQ/ND1o
Mm1aekY1QH5zLQ0KPiA3UFB1JmQtYGx9DQo+IHpjY35acFZQe3FNYn5HdX1odXtPfEVic1NzdjJW
e2t6Y3JgPiM/a3RlbCQxWmB2aSNLTytPJTw0VXBtQytxNQ0KPiBHI3kNCj4genBna1h0cW55O1N3
RWYpP3dCX3g9dn10JWhUMGZ7ZXQ/dTI0Uj1uQWNtVVpEZXoyMVRyd0A7PTt1UWlrTDt0c0YNCj4g
Uw0KPiB6KG9RWERkQUJ5U3N6KFB9K3JKeGE5TklfOUxsNSpwRlo2RjEodnprKHRWT1ZtXklOPXNW
QmZMY3tOPyNNPmNEKg0KPiBSDQo+IHp7UlAkfEswa2l+SilnI2UocXwrMykwZDAwPXQlWiNJLURf
YDR5TEVrS0dmJXY0PTg4Q3lSPjhjN31gRT02bTVOSA0KPiB6SUJpV0NNcTk9WHI3ZEgpemNAeDdi
ZC0NCj4gWSt7RSZrQF5ndGk8WnMwbWlpTE43ayRKc3J2SHhKbUttd0pEcCoxPz9YDQo+IHo/U25k
S3tWPSZqVl9NT3hHa3Ypdm4rbnp9cn5LdU1XY3RYMHglN0dGRUlLcjJJXzF1cU4oYSY+R3R5fVBe
DQo+IGh2YVQNCj4geis5eHRiOSgwdDA1QiFqV0Y2Y3BlU0Aoe1YqMVdPNC1GWTB9ISNmb0F8RTFt
XjhIXil5bWJKb0khaEZELXstDQo+IF8xNw0KPiB6IXxAR2grWHBGaEEhaj9DK3AmZXRaMjYyJVpD
cG51KlJTUyF0KVN6cG1RbnRTQl8ja2wlRTFTSSRlcjgxblkNCj4gTzw3DQo+IHpIY2dMPEFuMytp
I2R5ZDIyZXlzemp4cURuQDl6eGlBbTUqMlBHZW9kSStpaElHQ3lsXkpyWk1SKD50VC0NCj4gI1FI
VUsNCj4gejwhfi0NCj4gdEs2SFRac2U5P3R6VEZaUl92VmxXamZRZ1k3NFk2KlFfM2h4UGwlU2Zw
Y0FeVyZUemw0V31rSG95bGNWdg0KPiB6PTNsPF4oKT13ZVcqcnQtDQo+IFRlJlplcGY3TVFndzY0
PEIrPENxeWpDXyhxJjMzXihjYmg9PXtXbSNZNSFpaiM/TXkoDQo+IHooKW52diglJEopQm9CQlkx
Nms7UkY0bD9uXms/ekBmbz1VYEAyP0goIStKNUVFVXtPQHlnKXMkPWZrKjRlPmE2DQo+IGINCj4g
ej5mRGkxQkV1eTNIfCo1a01vMXY3KFpLXj1qMSRQaFp8PlYkSUo7LQ0KPiB2fEYhUTJOfndueD5j
T0BAIWBAcX4zJnNGfA0KPiB6SXZJUkZwI1FFd15CTCFASTVXbiVIfmEwenomWSZTOV9OUHN5PWE+
NCReUEtqMkcybFRwVj9mV08mbzkNCj4gR3s8KTVODQo+IHowaH0mays3OEF4b0tAbnltMVZHfHot
Sm88IygxZ3MoLS1qdGV8U1J2b2BnVHhseiQmM1NMbEN0cVdebWA8Skk1Zw0KPiB6I0hxaV87cVF4
PlVIO0JSaXdsdipfZXpOUTRXfH5UQkZ7NVdpOz9+UklpJGlsMUFsWG9IPmdoYEA/MX0/LQ0KPiBk
WmV3DQo+IHokSFZPK2Y1KmVeQj54aF5jPmVlYG1ETGYpeG9XJHpmTlc+QS0NCj4gSG1eQHFoc2FW
UiElYmRfd3FNZFZCKkF5ayZKMUsNCj4gemImTWhnc1ghVnVsdHVteCl6MX1Tb2cpfVVeSGNpTSkq
O08pemVmbGF3c1dLaHQ7ezVsMjVzeCRSfHFgZGgwSnI2DQo+IHp6Q2E9Qz1tMV5XV0JiIyQ/VlJY
dFM5YGlRKm9FJUQ9VDcoMmVDV1lVZX5KNShlZCskVnMmc0ZOMypDTA0KPiBncDF5N0MNCj4gek5S
VXplPTxvdWpPMGRCSF5iZnwrPjVnNz55SVZRQiYpKlo9cFUyPGlAVjV7VG1lZ1U/UiR+NzRMI0Z3
DQo+ID0zelVIZQ0KPiB6eXBWeHhgdWxJZ2tDJG8tDQo+ID0za2ROYl52fGQoVXRDZ3FAI1FNNFp9
VkQ3VW9fP2tQYEZ2OVFPZF5ISmFxJUAwXmdJDQo+IHp0Pz1JWSZ7T0p3RjZiOyMkeDthTEhGSGRW
eTU4UUZadTlwNmNSdWw8Sk4jWFJqRkMxNCVKfTtQSilQNkhgOHg8TA0KPiB6ZX5aNmBmRys2I3Q5
SWI+NCU0fktGTDFxWV43alpnYENBQm0lLT5TVEc9QyM7NkJyQUMjeGNxP1huQi0NCj4gcmR8VT5k
DQo+IHomPHpgPFI5bGpgdG10cUQ5bHRCREw8aXJmdFZpeWZOTFFreC03Q15uez1WVmJLdnlhcFI4
aXVaJT03IzdLOXkqSA0KPiB6eDVfMU9xUEg3Szl7eDdyTkMkNyZGRGxKRyg/YHI1R2tgOTQ8bkk9
eV5yUSMoPyRRckd7OXVGfGc7IX0mSH53fmANCj4gejMlfSMpPUJVU3x1RmtaMV9Ke1E3KElYPz17
alB7azUzYTU3QCUhQDJ1VTg9MGZHdHhXOzglVk43ck1tbg0KPiAkMWdJeg0KPiB6TmxCbno/aTdf
YzMmV1oycUVUSGJ6cUpFaDxvRD57VURCbUs7YXRsdztMUCNjc1hiLQ0KPiA2KVhCVnZWWipjeUkz
R0ZaDQo+IHo/RSFSXy16bEdjI2E1M0NVQSpieGkzMjZoKTFaNlRrX182QjxVfjd+SUA2Ny0NCj4g
Un00KXt7X0NJM0RXT201Vyple3QNCj4gem5fMyVpZGZKOUpWKDRUT0Q+fDhBWkc9LQ0KPiB6P2Rr
ZjtEZik5c0xxbkhOOWpFPGs3OCNPY2BwJF8lYmgyM21NUERnOA0KPiB6VkdBfTU/NjJGfXo3YCM4
V0ombzkjSyZVUVNqfUh9dz4+QG5RRi0NCj4gVEQha19gKyQyJkt2OzVGWjNKKnZFM0ZYdiY0DQo+
IHo/ZCNWQVA4U19hYUhTKkJtSWA3SlRje3tiQU1hZH45KTVNSU0xTkBKcFlxeDY7b2RPQHZZSE4j
XipaPw0KPiAqMD01TzQNCj4gejJLQUBJa3JzM34lMko3dUUoM0A3SkN+eT92b3c9TkB1UD9MWTBm
SmxiVElPLQ0KPiBee3s+M3hoTWhZZ0FyQ1FndGR7NQ0KPiB6Yk9DPnp0JkgmYUBuZjFodW9HPk11
cXs8elpVYnZjSD9kIXxFN3Ewdk1jQn4zYHFzMnhqZ2RDUXdnYExMDQo+IHdLVGhnDQo+IHpXeX1Z
fGZjJWFublkxanpOaVEjVExONWNoT3hsMGxuJTFHVHItN1hjZHhKRCtZP3Jacz1aJmVZTjQmLQ0K
PiB5cEQ+WEENCj4gemAxTD1BRjM5eFBYSFVfTE1uMDVkcThHTjx6VHg8cnd4bll0JTR6Nkd5UF9Q
NTVtfHdERj9LU2heTGc9DQo+IH5KaVpKQQ0KPiB6LQ0KPiBYJEMhKmgyQ2c/JXMlZ3lqZl5pRVlt
OyNeYjx8Kis+RXdGc2smSmdZX1dhQWA0PjV6Jnd6SHV4Tl9UNkd5LQ0KPiBUZA0KPiB6Nk4yYnhL
MVZrVVhvb1l8bFo8JXh3K1cjO3I7ZTZyQllaUWw+ZUM2ZEJCbHl8Z1R3YkJ3I0R9Sz5rbWREYA0K
PiBlU3t4DQo+IHo4fDVWRlhqYzxZQn5KOUZaQjZ+P2ktanwmPSloTEdkMnBNPWpSVnswQGBnb30p
NmBlO2Y/dmIjPG16O0pUe2hpMA0KPiB6bWFGMCojfFA9dzd5RF8/JSEjeGoqMkFkcCloUGhgQmM9
YFNQckZ7SkxBemZLcTF+LQ0KPiAoKFZvX3xXZzc5ekxYJFU/DQo+IHorbS0NCj4gQjN1bU18fFVC
ZWh7dSlNSzk/ZHtaJUAxdD5hO0xYUFJfKDFuMl5tMGckQD4waGVAd0IlaXBafkxOKg0KPiBmNndk
DQo+IHpuQzd3JFk0NDdxKSU8U2xeV21ON0BMTF98KDIofFljeGNDJCNeKW5DT0JwU09QVXdhV0x6
fHspRSp+KnYNCj4gU2J0Z0ANCj4gej19dmlYX25gYTwheFZmdGw9NUUhJDB2QEV7Nnx1SE9JXj9q
LQ0KPiBLTz9SJVFONClETVMweWt8OzBBT1gqOHo9Nj4/Pg0KPiB6bUB8PSVqMmtGKktvQGtEV34o
ZTNlNFhecDdARklfbzdPYnFJV1M9YW90UXFKJlNwKWFeTlZObEgpRQ0KPiBPZil2OWNYDQo+IHpP
UktXejs8NX1gMXxJT1BYfmdmOFNRYXs3d0JEd151JCtBVU5NcnghKV53cDJ7RWxqS2AkbntIU1Uz
NyY7JQ0KPiBHWWwNCj4gej5IR1loJklrMHhOMjYlcCZ+Q0sod0hXNW4oY0VBY2YoKjshSXExM2xa
RUNaJEpwNn5RdzZfTSgpUSZBRW8NCj4gIT9RKw0KPiB6NHN4WG9GR35yZUt8PmpNUkokK0sqUU1E
amleaDhZRTY8PCRidXx9JVI+Y0N4SHFaVWRGOGp4KTdKclJZS0Z0DQo+IDdmDQo+IHolbFBkc1l+
ZkZnODJAZnBDbEhMa3FMIW8qbXBRP1g5Kmh4O2ImTWh2TlEzNTRMY29CYV4zWmBVOSZ+PGBBDQo+
IEtqWjsNCj4gelF2end3eEV2Xzg1MUdEaGIkbXMtDQo+IEtBeFpScm0kUW9LcEErelloWUdEPVBK
SSg2fWB7aip9bms1dE5GcFAkODdkMQ0KPiB6dWVUNVg/dVlsN2owP20zPSpyMEk1fEBUb3IoKitz
Qn5BPWg9O3hWLQ0KPiA8cDl9TSttcmJfYDBTRE5wUHdHZFp5WmhADQo+IHorKHxoLQ0KPiAwe0ZY
ZVU7NkJXOStITXtBSXtDfUN1eUtWaFVLUiopKldvP052Q2BJKHokVWg+RFBOVjxqfWR0ZHlvfCkN
Cj4gemN6XnVzRkVVQFdZcThgMzl7P0gxR0sjKUAtDQo+IEdAJGVeT0dwKDZINTBfOXlHZE5lfFAh
XzllPVppbyhIXjtWT2dOKQ0KPiB6TlFkZl8tDQo+IF5wSyhCYzF2ODcya1pOQUh0Xig9SX1hRFEo
cTJWJGYpd2BfT3xybnZMSzBMOURueDc3JUJWYjxLTzZxDQo+IHp0Q3dXQHs7aXZ8dFpPNFpBN29m
d2o7bD14ST9DQEhEelV0T0pMeDwyQXtWbmhxR05BMXBnVWpla3U+YSRSDQo+ID0rY2wNCj4gekA/
Tmgpa1lSYldBTnFqNDxtYXtIWiR7RGEpYyRtTyhvaX16YVdJfFdKVyVqdkxwdF5HNUlYYmVDXnxE
YA0KPiA2eiVXTA0KPiB6P0ByWUkhI0x2Zmh+KjdFPW5RYCZgNjIpPldLNzIzeTUtU2NiYUxQO2Ja
JTY4eytfO1YzN2B4LQ0KPiBFTmU3PUg5Z1NEDQo+IHpwbHhsIT08e0FsYm04cXo1PWV1RkdWb35w
ck52elNRdUZyX3xMdm5mZ1dzKXxycWhzPyU0ZTspeWkhMzF2aX1Faw0KPiBDdUNYb3YNCj4gDQo+
IGRpZmYgLS1naXQgYS92czIwMTIvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGIvdnMy
MDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0KPiBpbmRleCBlNjc5MThhLi5iMTMzNTc2
IDEwMDY0NA0KPiAtLS0gYS92czIwMTIvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+ICsr
KyBiL3ZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gQEAgLTEzNyw3ICsxMzcs
NyBAQA0KPiAgICA8SXRlbURlZmluaXRpb25Hcm91cA0KPiBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCj4gICAgICA8Q2xDb21waWxl
Pg0KPiAgICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCj4gLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj5DcmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPg0KPiArICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCj4gICAgICAg
IDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCj4gICAgICAgIDxGdW5jdGlv
bkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCj4gICAgICAgIDxJbnRy
aW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KPiBAQCAtMTY2LDcgKzE2
Niw3IEBADQo+ICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCj4gICAgICA8Q2xDb21waWxl
Pg0KPiAgICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCj4gLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj5DcmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPg0KPiArICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCj4gICAgICAg
IDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCj4gICAgICAgIDxGdW5jdGlv
bkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCj4gICAgICAgIDxJbnRy
aW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KPiBAQCAtMTkzLDM4ICsx
OTMsOCBAQA0KPiAgICAgIDwvQ3VzdG9tQnVpbGRTdGVwPg0KPiAgICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNcd2luMzJzdHViYWdlbnRcZXJyb3JzLmNwcCI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByDQo+IGVjb21waWxlZEhlYWRlcj4NCj4gLSAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWMNCj4gb21waWxlZEhlYWRlcj4NCj4g
LSAgICA8L0NsQ29tcGlsZT4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x3
aW4zMnN0dWJhZ2VudFxzdGRhZnguY3BwIj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcg0K
PiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj5Ob3RVc2luZzwvUHINCj4gZWNvbXBpbGVkSGVhZGVyPg0KPiAtICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlYw0KPiBvbXBpbGVkSGVhZGVyPg0KPiAtICAgIDwv
Q2xDb21waWxlPg0KPiAtICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdpbjMyc3R1
YmFnZW50XFdtaUFjY2Vzc29yLmNwcCI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRIZWFkZXINCj4g
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PkNyZWF0ZTwvUHJlY28NCj4gbXBpbGVkSGVhZGVyPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+Q3JlYXRlPC9QcmVjb21wDQo+IGlsZWRIZWFkZXI+DQo+IC0gICAgICA8UHJlY29tcGls
ZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByDQo+IGVjb21waWxlZEhlYWRlcj4NCj4gLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWMNCj4gb21waWxlZEhlYWRlcj4N
Cj4gLSAgICA8L0NsQ29tcGlsZT4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1x3aW4zMnN0dWJhZ2VudFxYU0FjY2Vzc29yLmNwcCI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPkNyZWF0ZTwvUHJlY28NCj4gbXBpbGVkSGVhZGVyPg0KPiAtICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+Q3JlYXRlPC9QcmVjb21wDQo+IGlsZWRIZWFkZXI+DQo+IC0gICAgICA8
UHJlY29tcGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByDQo+IGVjb21waWxlZEhlYWRlcj4N
Cj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWMNCj4gb21waWxl
ZEhlYWRlcj4NCj4gLSAgICA8L0NsQ29tcGlsZT4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXC4uXHNyY1x3aW4zMnN0dWJhZ2VudFxYU2VydmljZS5jcHAiPg0KPiAtICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj5DcmVhdGU8L1ByZWNvDQo+IG1waWxlZEhlYWRlcj4NCj4gLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPkNyZWF0ZTwvUHJlY29tcA0KPiBpbGVkSGVhZGVyPg0KPiAt
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPk5vdFVzaW5nPC9Qcg0KPiBlY29tcGlsZWRI
ZWFkZXI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjDQo+
IG9tcGlsZWRIZWFkZXI+DQo+IC0gICAgPC9DbENvbXBpbGU+DQo+ICAgIDwvSXRlbUdyb3VwPg0K
PiAgICA8SXRlbUdyb3VwPg0KPiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdp
bjMyc3R1YmFnZW50XHN0ZGFmeC5oIiAvPg0KPiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Li5cc3JjXHdpbjMyc3R1YmFnZW50XFdtaUFjY2Vzc29yLmgiIC8+DQo+IC0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcWFNBY2Nlc3Nvci5oIiAvPg0KPiAt
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdpbjMyc3R1YmFnZW50XFhTZXJ2aWNl
LmgiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAgICAgIDxDdXN0
b21CdWlsZCBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcbWVzc2FnZXMubWMiPg0K
PiBkaWZmIC0tZ2l0IGEvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0KPiBiL3Zz
MjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gaW5kZXggNTBkYmU0My4uYThmNTlh
MyAxMDA2NDQNCj4gLS0tIGEvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0KPiAr
KysgYi92czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IEBAIC0xOTcsMzkgKzE5
Nyw4IEBADQo+ICAgICAgPC9DdXN0b21CdWlsZFN0ZXA+DQo+ICAgIDwvSXRlbURlZmluaXRpb25H
cm91cD4NCj4gICAgPEl0ZW1Hcm91cD4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XHNyY1x3aW4zMnN0dWJhZ2VudFxlcnJvcnMuY3BwIj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj5Ob3RVc2luZzwvUHINCj4gZWNvbXBpbGVkSGVhZGVyPg0KPiAtICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlYw0KPiBvbXBpbGVkSGVhZGVyPg0KPiAt
ICAgIDwvQ2xDb21waWxlPg0KPiAtICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdp
bjMyc3R1YmFnZW50XHN0ZGFmeC5jcHAiPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVyDQo+
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPk5vdFVzaW5nPC9Qcg0KPiBlY29tcGlsZWRIZWFkZXI+DQo+IC0gICAgICA8UHJlY29tcGls
ZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjDQo+IG9tcGlsZWRIZWFkZXI+DQo+IC0gICAgPC9D
bENvbXBpbGU+DQo+IC0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHVi
YWdlbnRcV21pQWNjZXNzb3IuY3BwIj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcg0KPiBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
Q3JlYXRlPC9QcmVjbw0KPiBtcGlsZWRIZWFkZXI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRIZWFk
ZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj5DcmVhdGU8L1ByZWNvbXANCj4gaWxlZEhlYWRlcj4NCj4gLSAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj5Ob3RVc2luZzwvUHINCj4gZWNvbXBpbGVkSGVhZGVyPg0KPiAtICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlYw0KPiBvbXBpbGVkSGVhZGVyPg0K
PiAtICAgIDwvQ2xDb21waWxlPg0KPiAtICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHdpbjMyc3R1YmFnZW50XFhTQWNjZXNzb3IuY3BwIj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+Q3JlYXRlPC9QcmVjbw0KPiBtcGlsZWRIZWFkZXI+DQo+IC0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj5DcmVhdGU8L1ByZWNvbXANCj4gaWxlZEhlYWRlcj4NCj4gLSAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj5Ob3RVc2luZzwvUHINCj4gZWNvbXBpbGVkSGVhZGVyPg0K
PiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlYw0KPiBvbXBpbGVk
SGVhZGVyPg0KPiAtICAgIDwvQ2xDb21waWxlPg0KPiAtICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cLi5cc3JjXHdpbjMyc3R1YmFnZW50XFhTZXJ2aWNlLmNwcCI+DQo+IC0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPkNyZWF0ZTwvUHJlY28NCj4gbXBpbGVkSGVhZGVyPg0KPiAtICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+Q3JlYXRlPC9QcmVjb21wDQo+IGlsZWRIZWFkZXI+DQo+IC0g
ICAgICA8UHJlY29tcGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByDQo+IGVjb21waWxlZEhl
YWRlcj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWMNCj4g
b21waWxlZEhlYWRlcj4NCj4gLSAgICAgIDxQcmVwcm9jZXNzVG9GaWxlDQo+IENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5mYWxzZTwvUHJl
cHJvYw0KPiBlc3NUb0ZpbGU+DQo+IC0gICAgPC9DbENvbXBpbGU+DQo+ICAgIDwvSXRlbUdyb3Vw
Pg0KPiAgICA8SXRlbUdyb3VwPg0KPiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHdpbjMyc3R1YmFnZW50XHN0ZGFmeC5oIiAvPg0KPiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cLi5cc3JjXHdpbjMyc3R1YmFnZW50XFdtaUFjY2Vzc29yLmgiIC8+DQo+IC0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcWFNBY2Nlc3Nvci5oIiAvPg0K
PiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdpbjMyc3R1YmFnZW50XFhTZXJ2
aWNlLmgiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAgICAgIDxD
dXN0b21CdWlsZCBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcbWVzc2FnZXMubWMi
Pg0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0
DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1h
aWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 11:57:02 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 11:57:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgmE-0002Bg-Az; Wed, 22 Jun 2016 11:57:02 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgmC-0002BY-A5
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 11:57:00 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 A0/D8-22092-B0D7A675; Wed, 22 Jun 2016 11:56:59 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprAKsWRWlGSWpSXmKPExsWyU9JRQpezNiv
 c4OZZJos/ixMdGD0Of7jCEsAYxZqZl5RfkcCa0TzBsmDhaa6KpgWb2RoYr+zk6mLk5JAQ8JPo
 udXHCmKzCehILD06nwnEFhEokPj+fh4ziM0soCZxfX8XUA0Hh7CAvcT559UQJQ4St5ZfYoSwj
 SSe7p3OBmKzCKhKXDp8CqyVV8BdYterW2AjhQQaGCWmfUgCGcMp4CbxoS0MJMwoICvxpXE11C
 ZxiVtPIC6QEBCQWLLnPDOELSrx8vE/VgjbQGLr0n0sIGOYBTQl1u/Sh2hVlJjS/ZAdYqugxMm
 ZT1ggtqpIbHl8AGoMt8TKz39YJjCKzkKybRbCpFlIJs1CMmkBI8sqRvXi1KKy1CJdI72kosz0
 jJLcxMwcXUMDM73c1OLixPTUnMSkYr3k/NxNjMAYYQCCHYzL/jodYpTkYFIS5ZVXzgoX4kvKT
 6nMSCzOiC8qzUktPsQow8GhJMEbVgOUEyxKTU+tSMvMAUYrTFqCg0dJhDcZJM1bXJCYW5yZDp
 E6xWjJsWXBjbVMHDP67gPJeZN2HWMSYsnLz0uVEuc1AWkQAGnIKM2DGwdLKJcYZaWEeRmBDhT
 iKUgtys0sQZV/xSjOwagkzPu3GmgKT2ZeCdzWV0AHMQEdtKw/HeSgkkSElFQDY7jyPs3ts/Xs
 eGplezRv5nP9XaOsU9Y8m3XDWfH6/iOll6b8Wuelep9X98FHlX8fDlzWuxlRtK/5vtMbkaL/Z
 06uslhkdubZ04Ua5xITPgjbSixdV5sin8XS/uWoHrdyn595rYh4wrS2h7+LNNuWx0vKVhVUv1
 z46a2c5JoAqdOb2Gbpy7MbKLEUZyQaajEXFScCACbJAZojAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-15.tower-21.messagelabs.com!1466596616!20187821!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=2.2 required=7.0 tests=BODY_RANDOM_LONG,
 OBSCURED_EMAIL,UPPERCASE_25_50,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 14618 invoked from network); 22 Jun 2016 11:56:56 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-15.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 11:56:56 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24783437"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 04/20] Remove win32stubagent
Thread-Index: AQHRtcevcuouEQ9dLUieSZiCh+A/k5/1jgMA
Date: Wed, 22 Jun 2016 11:56:55 +0000
Message-ID: <a9b629cb07ff4af3ab03ef084e198ecd@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-5-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-5-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 04/20] Remove win32stubagent
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDQvMjBdIFJlbW92ZSB3aW4zMnN0dWJhZ2VudA0KPiANCj4g
VGhpcyBpcyAxIGxhcmdlIGNvZGUgZGVsZXRpb24gcGF0Y2gsIHRoZSBsaXRlYWdlbnQgd2lsbCBi
ZSByZWltcGxlbWVudGVkDQo+IG92ZXIgdGhlIG5leHQgc2V0IG9mIHBhdGNoZXMNCj4NCj4gU2ln
bmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpEbyB0aGlu
Z3Mgc3RpbGwgYnVpbGQgYWZ0ZXIgdGhpcyBwYXRjaCBpcyBhcHBsaWVkIChzaW5jZSB0aGUgbGl0
ZSBhZ2VudCB2Y3hwcm9qIG5vIGxvbmdlciBoYXMgY29udGVudCk/DQoNCiAgUGF1bA0KDQo+IC0t
LQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L1dtaUFjY2Vzc29yLmNwcCB8IDEzMzEgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvV21pQWNj
ZXNzb3IuaCAgIHwgICA4OCAtLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmNw
cCAgfCAgMjMwIC0tLS0tLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmggICAg
fCAgMTI2IC0tLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9YU2VydmljZS5jcHAgICAgfCAxMDQ0
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9YU2Vy
dmljZS5oICAgICAgfCAgIDU0IC0tDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvZXJyb3JzLmNwcCAg
ICAgIHwgIDEwMiAtLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9tZXNzYWdlcy5tYyAgICAgfCAg
IDY2IC0tDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvc3RkYWZ4LmNwcCAgICAgIHwgICAzOSAtLQ0K
PiAgc3JjL3dpbjMyc3R1YmFnZW50L3N0ZGFmeC5oICAgICAgICB8ICAgNDMgLS0NCj4gIHNyYy93
aW4zMnN0dWJhZ2VudC93MzJ4YWdlbnQucmMgICAgfCAgIDYwIC0tDQo+ICBzcmMvd2luMzJzdHVi
YWdlbnQveGVuLmljbyAgICAgICAgIHwgIEJpbiAyNTIxNCAtPiAwIGJ5dGVzDQo+ICB2czIwMTIv
bGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgICAzNCArLQ0KPiAgdnMyMDEzL2xpdGVhZ2Vu
dC9MaXRlQWdlbnQudmN4cHJvaiB8ICAgMzEgLQ0KPiAgMTQgZmlsZXMgY2hhbmdlZCwgMiBpbnNl
cnRpb25zKCspLCAzMjQ2IGRlbGV0aW9ucygtKQ0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93
aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5jcHANCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv
d2luMzJzdHViYWdlbnQvV21pQWNjZXNzb3IuaA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93
aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmNwcA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93
aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvd2lu
MzJzdHViYWdlbnQvWFNlcnZpY2UuY3BwDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMy
c3R1YmFnZW50L1hTZXJ2aWNlLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvd2luMzJzdHVi
YWdlbnQvZXJyb3JzLmNwcA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2Vu
dC9tZXNzYWdlcy5tYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2VudC9z
dGRhZnguY3BwDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMyc3R1YmFnZW50L3N0ZGFm
eC5oDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMyc3R1YmFnZW50L3czMnhhZ2VudC5y
Yw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2VudC94ZW4uaWNvDQo+IA0K
PiBkaWZmIC0tZ2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L1dtaUFjY2Vzc29yLmNwcA0KPiBiL3Ny
Yy93aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5jcHANCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0DQo+IGluZGV4IGI4NWZmOGUuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1YmFnZW50
L1dtaUFjY2Vzc29yLmNwcA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDEzMzEgKzAsMCBAQA0K
PiAtLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+IC0gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsDQo+IC0gKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+IC0gKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNjbGFp
bWVyLg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+IC0gKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gLSAqDQo+IC0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gLSAqIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+IC0gKiBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KPiAt
ICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUNCj4gLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SDQo+IC0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwNCj4gLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+IC0gKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiAtICogV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+IC0g
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFDQo+IC0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GDQo+IC0gKiBTVUNIIERBTUFHRS4NCj4gLSAqLw0KPiAtDQo+IC0jaW5jbHVkZSAi
c3RkYWZ4LmgiDQo+IC0jZGVmaW5lIF9XSU4zMl9EQ09NDQo+IC0jaW5jbHVkZSA8d2luZG93cy5o
Pg0KPiAtI2luY2x1ZGUgPGlvc3RyZWFtPg0KPiAtI2luY2x1ZGUgPGFsZ29yaXRobT4NCj4gLSNp
bmNsdWRlIDxoYXNoX21hcD4NCj4gLSNpbmNsdWRlIDxzdGRpby5oPg0KPiAtI2luY2x1ZGUgIndp
bmVycm9yLmgiDQo+IC0jaW5jbHVkZSAiV01JQWNjZXNzb3IuaCINCj4gLSNpbmNsdWRlICJYU2Vy
dmljZS5oIg0KPiAtI2luY2x1ZGUgImNvbXV0aWwuaCINCj4gLQ0KPiAtLy8jaW5jbHVkZSAieHNf
cHJpdmF0ZS5oIg0KPiAtI2luY2x1ZGUgPHdiZW1pZGwuaD4NCj4gLQ0KPiAtI2luY2x1ZGUgPHZl
cnNpb24uaD4NCj4gLQ0KPiAtI2RlZmluZSBXSURFTjIoeCkgTCAjIyB4DQo+IC0jZGVmaW5lIFdJ
REVOKHgpIFdJREVOMih4KQ0KPiAtDQo+IC0jZGVmaW5lIE9CSkVDVF9OQU1FX0EoX05hbWUpIE9C
SkVDVF9QUkVGSVhfU1RSICJYZW5TdG9yZSINCj4gI19OYW1lDQo+IC0jZGVmaW5lIE9CSkVDVF9O
QU1FX1coX05hbWUpIFdJREVOKE9CSkVDVF9QUkVGSVhfU1RSKQ0KPiBMIlhlblN0b3JlIiBXSURF
TigjX05hbWUpDQo+IC0NCj4gLSNwcmFnbWEgY29tbWVudChsaWIsICJ3YmVtdXVpZC5saWIiKQ0K
PiAtI3ByYWdtYSBjb21tZW50KGxpYiwgInV1aWQubGliIikNCj4gLSNwcmFnbWEgY29tbWVudChs
aWIsICJjb21zdXBwdy5saWIiKQ0KPiAtDQo+IC1CU1RSIG1rQnN0cihjb25zdCBjaGFyICpzdHJp
bmcsIHNpemVfdCBsZW4pIHsNCj4gLSAgICBCU1RSIHJlcyA9IE5VTEw7DQo+IC0gICAgc2l6ZV90
IHJldHVybmVkOw0KPiAtICAgIHdjaGFyX3QqIHdzdHJpbmcgPSBuZXcgd2NoYXJfdFtsZW4rMV07
DQo+IC0gICAgaWYgKHdzdHJpbmcgPT0gTlVMTCkgew0KPiAtICAgICAgICBnb3RvIG1hbGxvY193
c3RyaW5nOw0KPiAtICAgIH0NCj4gLSAgICBtYnN0b3djc19zKCZyZXR1cm5lZCwgd3N0cmluZywg
bGVuKzEsIHN0cmluZywgbGVuKTsNCj4gLSAgICByZXMgPSBTeXNBbGxvY1N0cmluZyh3c3RyaW5n
KTsNCj4gLSAgICBkZWxldGUgd3N0cmluZzsNCj4gLW1hbGxvY193c3RyaW5nOg0KPiAtICAgIHJl
dHVybiByZXM7DQo+IC19DQo+IC0NCj4gLWNoYXIgKiBmb3JtYXRDaGFyU3RySW50KGNvbnN0IGNo
YXIgKmZtdCwgdmFfbGlzdCBsKSB7DQo+IC0gICAgY2hhciAqYnVmID0gTlVMTDsNCj4gLSAgICBp
bnQgY250ID0gX3ZzY3ByaW50ZihmbXQsIGwpOw0KPiAtICAgIGJ1ZiA9IChjaGFyICopWHNBbGxv
YyhjbnQrMSk7DQo+IC0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7DQo+IC0gICAgICAgIGdvdG8gbWFs
bG9jX2J1ZjsNCj4gLSAgICB9DQo+IC0gICAgX3ZzbnByaW50ZihidWYsIGNudCsxLCBmbXQsIGwp
Ow0KPiAtbWFsbG9jX2J1ZjoNCj4gLSAgICByZXR1cm4gYnVmOw0KPiAtfQ0KPiAtDQo+IC1jaGFy
ICogZm9ybWF0Q2hhclN0cihjb25zdCBjaGFyICpmbXQsIC4uLiApIHsNCj4gLSAgICBjaGFyICpi
dWYgPU5VTEw7DQo+IC0gICAgdmFfbGlzdCBsOw0KPiAtICAgIHZhX3N0YXJ0KGwsIGZtdCk7DQo+
IC0gICAgYnVmID0gZm9ybWF0Q2hhclN0ckludChmbXQsIGwpOw0KPiAtICAgIHZhX2VuZChsKTsN
Cj4gLSAgICByZXR1cm4gYnVmOw0KPiAtfQ0KPiAtDQo+IC1CU1RSIGZvcm1hdEJzdHIoY29uc3Qg
Y2hhciAqZm10LCAuLi4pDQo+IC17DQo+IC0gICAgY2hhciAqYnVmOw0KPiAtICAgIHZhX2xpc3Qg
bDsNCj4gLSAgICBCU1RSIHJlcyA9IE5VTEw7DQo+IC0gICAgdmFfc3RhcnQobCwgZm10KTsNCj4g
LSAgICBidWYgPSBmb3JtYXRDaGFyU3RySW50KGZtdCwgbCk7DQo+IC0gICAgdmFfZW5kKGwpOw0K
PiAtICAgIHJlcyA9IG1rQnN0cihidWYsIHN0cmxlbihidWYpKTsNCj4gLSAgICBYc0ZyZWUoYnVm
KTsNCj4gLSAgICByZXR1cm4gcmVzOw0KPiAtfQ0KPiAtDQo+IC1pbnQgc2V0VmFyaWFudFN0cmlu
ZyhWQVJJQU5UKiB2YXIsIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pIHsNCj4gLSAgICBp
bnQgZXJyPS0xOw0KPiAtICAgIFZhcmlhbnRJbml0KHZhcik7DQo+IC0gICAgdmFyLT52dD1WVF9C
U1RSOw0KPiAtICAgIHZhci0+YnN0clZhbCA9IG1rQnN0cihkYXRhLCBsZW4pOw0KPiAtICAgIGlm
ICh2YXItPmJzdHJWYWwgPT0gTlVMTCkgew0KPiAtICAgICAgICBnb3RvIHN5c2FsbG9jOw0KPiAt
ICAgIH0NCj4gLSAgICBlcnI9MDsNCj4gLXN5c2FsbG9jOg0KPiAtICAgIHJldHVybiBlcnI7DQo+
IC19DQo+IC0NCj4gLQ0KPiAtaW50IHNldFZhcmlhbnRTdHJpbmcoVkFSSUFOVCogdmFyLCBjb25z
dCBjaGFyICpzdHJpbmcpIHsNCj4gLSAgICByZXR1cm4gc2V0VmFyaWFudFN0cmluZyh2YXIsIHN0
cmluZywgc3RybGVuKHN0cmluZykpOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLWNsYXNzIFdhdGNoU2lu
ayA6IHB1YmxpYyBJV2JlbU9iamVjdFNpbmsNCj4gLXsNCj4gLSAgICBMT05HIG1fbFJlZjsNCj4g
LSAgICBib29sIGJEb25lOw0KPiAtICAgIEhBTkRMRSB0cmlnZ2VyZXZlbnQ7DQo+IC0gICAgSEFO
RExFIHRyaWdnZXJlcnJvcjsNCj4gLXB1YmxpYzoNCj4gLSAgICBjaGFyICpwYXRoOw0KPiAtICAg
IFdhdGNoU2luayhIQU5ETEUgZXZlbnQsIEhBTkRMRSBlcnJvcmV2ZW50LCBjb25zdCBjaGFyICpw
YXRoKSB7DQo+IC0gICAgICAgIG1fbFJlZiA9IDE7DQo+IC0gICAgICAgIHRyaWdnZXJldmVudCA9
IGV2ZW50Ow0KPiAtICAgICAgICB0cmlnZ2VyZXJyb3IgPSBlcnJvcmV2ZW50Ow0KPiAtICAgICAg
ICB0aGlzLT5wYXRoID0gTlVMTDsNCj4gLSAgICAgICAgaWYgKHBhdGgpIHsNCj4gLSAgICAgICAg
ICAgIHRoaXMtPnBhdGg9KGNoYXIgKilYc0FsbG9jKHN0cmxlbihwYXRoKSsxKTsNCj4gLSAgICAg
ICAgICAgIHN0cmNweSh0aGlzLT5wYXRoLCBwYXRoKTsNCj4gLSAgICAgICAgfQ0KPiAtICAgIH0N
Cj4gLSAgIH5XYXRjaFNpbmsoKSB7IGJEb25lID0gVFJVRTsgfQ0KPiAtDQo+IC0gICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsNCj4gLSAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsNCj4gLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUNCj4gLSAgICAgICAgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZv
aWQqKiBwcHYpOw0KPiAtDQo+IC0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IEluZGljYXRlKA0KPiAtICAgICAgICAgICAgLyogW2luXSAqLw0KPiAtICAgICAgICAgICAgTE9O
RyBsT2JqZWN0Q291bnQsDQo+IC0gICAgICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovDQo+IC0g
ICAgICAgICAgICBJV2JlbUNsYXNzT2JqZWN0IF9fUlBDX0ZBUiAqX19SUENfRkFSICphcE9iakFy
cmF5DQo+IC0gICAgICAgICAgICApOw0KPiAtDQo+IC0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFNldFN0YXR1cygNCj4gLSAgICAgICAgICAgIC8qIFtpbl0gKi8gTE9ORyBs
RmxhZ3MsDQo+IC0gICAgICAgICAgICAvKiBbaW5dICovIEhSRVNVTFQgaFJlc3VsdCwNCj4gLSAg
ICAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzdHJQYXJhbSwNCj4gLSAgICAgICAgICAgIC8qIFtp
bl0gKi8gSVdiZW1DbGFzc09iamVjdCBfX1JQQ19GQVIgKnBPYmpQYXJhbQ0KPiAtICAgICAgICAg
ICAgKTsNCj4gLX07DQo+IC0NCj4gLQ0KPiAtVUxPTkcgV2F0Y2hTaW5rOjpBZGRSZWYoKQ0KPiAt
ew0KPiAtICAgIHJldHVybiBJbnRlcmxvY2tlZEluY3JlbWVudCgmbV9sUmVmKTsNCj4gLX0NCj4g
LQ0KPiAtVUxPTkcgV2F0Y2hTaW5rOjpSZWxlYXNlKCkNCj4gLXsNCj4gLSAgICBMT05HIGxSZWYg
PSBJbnRlcmxvY2tlZERlY3JlbWVudCgmbV9sUmVmKTsNCj4gLSAgICBpZihsUmVmID09IDApDQo+
IC0gICAgICAgIGRlbGV0ZSB0aGlzOw0KPiAtICAgIHJldHVybiBsUmVmOw0KPiAtfQ0KPiAtDQo+
IC1IUkVTVUxUIFdhdGNoU2luazo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBw
cHYpDQo+IC17DQo+IC0gICAgaWYgKHJpaWQgPT0gSUlEX0lVbmtub3duIHx8IHJpaWQgPT0gSUlE
X0lXYmVtT2JqZWN0U2luaykNCj4gLSAgICB7DQo+IC0gICAgICAgICpwcHYgPSAoSVdiZW1PYmpl
Y3RTaW5rICopIHRoaXM7DQo+IC0gICAgICAgIEFkZFJlZigpOw0KPiAtICAgICAgICByZXR1cm4g
V0JFTV9TX05PX0VSUk9SOw0KPiAtICAgIH0NCj4gLSAgICBlbHNlIHJldHVybiBFX05PSU5URVJG
QUNFOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLUhSRVNVTFQgV2F0Y2hTaW5rOjpJbmRpY2F0ZShsb25n
IGxPYmpDb3VudCwgSVdiZW1DbGFzc09iamVjdCAqKnBBcnJheSkNCj4gLXsNCj4gLSAgICBmb3Ig
KGxvbmcgaSA9IDA7IGkgPCBsT2JqQ291bnQ7IGkrKykNCj4gLSAgICB7DQo+IC0gICAgICAgIElX
YmVtQ2xhc3NPYmplY3QgKnBPYmogPSBwQXJyYXlbaV07DQo+IC0gICAgICAgIFNldEV2ZW50KHRo
aXMtPnRyaWdnZXJldmVudCk7DQo+IC0gICAgICAgIC8vIC4uLiB1c2UgdGhlIG9iamVjdC4NCj4g
LQ0KPiAtICAgICAgICAvLyBBZGRSZWYoKSBpcyBvbmx5IHJlcXVpcmVkIGlmIHRoZSBvYmplY3Qg
d2lsbCBiZSBoZWxkIGFmdGVyDQo+IC0gICAgICAgIC8vIHRoZSByZXR1cm4gdG8gdGhlIGNhbGxl
ci4NCj4gLSAgICB9DQo+IC0NCj4gLSAgICByZXR1cm4gV0JFTV9TX05PX0VSUk9SOw0KPiAtfQ0K
PiAtDQo+IC1IUkVTVUxUIFdhdGNoU2luazo6U2V0U3RhdHVzKA0KPiAtICAgICAgICAgICAgLyog
W2luXSAqLyBMT05HIGxGbGFncywNCj4gLSAgICAgICAgICAgIC8qIFtpbl0gKi8gSFJFU1VMVCBo
UmVzdWx0LA0KPiAtICAgICAgICAgICAgLyogW2luXSAqLyBCU1RSIHN0clBhcmFtLA0KPiAtICAg
ICAgICAgICAgLyogW2luXSAqLyBJV2JlbUNsYXNzT2JqZWN0IF9fUlBDX0ZBUiAqcE9ialBhcmFt
DQo+IC0gICAgICAgICkNCj4gLXsNCj4gLSAgICBpZiAoRkFJTEVEKGhSZXN1bHQpKSB7DQo+IC0g
ICAgICAgIFhzTG9nKCJXTUkgQXN5YyB3YXRjaCBmYWlsZWQgJXBcbiIsIHRoaXMpOw0KPiAtICAg
ICAgICBTZXRFdmVudCh0aGlzLT50cmlnZ2VyZXJyb3IpOw0KPiAtICAgIH0NCj4gLSAgICByZXR1
cm4gV0JFTV9TX05PX0VSUk9SOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLQ0KPiAtc3RydWN0IFdNSUFj
Y2Vzc29yDQo+IC17DQo+IC0gICAgSVdiZW1TZXJ2aWNlcyAqbXBTdmM7DQo+IC0gICAgSVdiZW1T
ZXJ2aWNlcyAqbXBYU1N2YzsNCj4gLQ0KPiAtICAgIEhBTkRMRSBvd25pbmdfdGhyZWFkOw0KPiAt
fTsNCj4gLQ0KPiAtc3RydWN0IFdNSUFjY2Vzc29yICp3bWkgPSBOVUxMOw0KPiAtDQo+IC1zdGF0
aWMgc3RyaW5nIHdzdHJpbmcyc3RyaW5nKGNvbnN0IHdzdHJpbmcmIHdzdHIpDQo+IC17DQo+IC0g
ICAgaW50IGxlbjsNCj4gLQ0KPiAtICAgIGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRG
OCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsDQo+IC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3c3RyLmNfc3RyKCksDQo+IC0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtMSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0K
PiAtDQo+IC0gICAgc3RyaW5nIHN0cihsZW4sIDApOw0KPiAtDQo+IC0gICAgbGVuID0gV2lkZUNo
YXJUb011bHRpQnl0ZShDUF9VVEY4LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdzdHIuY19zdHIoKSwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLA0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnN0clswXSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQp
c3RyLmxlbmd0aCgpLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4g
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAtDQo+IC0gICAgcmV0dXJu
IHN0cjsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHN0cmluZyBic3RyMnN0cmluZyhjb25zdCBCU1RS
JiBic3RyKQ0KPiAtew0KPiAtICAgIHdzdHJpbmcgd3N0cihic3RyKTsNCj4gLQ0KPiAtICAgIHJl
dHVybiB3c3RyaW5nMnN0cmluZyh3c3RyKTsNCj4gLX0NCj4gLQ0KPiAtSVdiZW1DbGFzc09iamVj
dCAqZ2V0Q2xhc3MoV01JQWNjZXNzb3IgKip3bWksIEJTVFIgcGF0aCkgew0KPiAtICAgIGlmICgq
d21pID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybiBOVUxMOw0KPiAtDQo+IC0gICAgaWYgKCgq
d21pKS0+bXBYU1N2YyA9PSBOVUxMKQ0KPiAtICAgICAgICByZXR1cm4gTlVMTDsNCj4gLQ0KPiAt
ICAgIElXYmVtQ2xhc3NPYmplY3QgKnJldHVybmVkT2JqZWN0Ow0KPiAtICAgIEhSRVNVTFQgaHJl
cyA9ICgqd21pKS0+bXBYU1N2Yy0NCj4gPkdldE9iamVjdChwYXRoLFdCRU1fRkxBR19SRVRVUk5f
V0JFTV9DT01QTEVURSwNCj4gLSAgICAgICAgICAgIE5VTEwsICZyZXR1cm5lZE9iamVjdCwgTlVM
TCk7DQo+IC0gICAgaWYgKEZBSUxFRChocmVzKSkgew0KPiAtICAgICAgICByZXR1cm5lZE9iamVj
dCA9TlVMTDsNCj4gLSAgICB9DQo+IC0gICAgcmV0dXJuIHJldHVybmVkT2JqZWN0Ow0KPiAtfQ0K
PiAtDQo+IC1JV2JlbUNsYXNzT2JqZWN0ICpnZXRPYmplY3QoV01JQWNjZXNzb3IgKip3bWksIEJT
VFIgcGF0aCkgew0KPiAtICAgIElFbnVtV2JlbUNsYXNzT2JqZWN0ICpyZXR1cm5lZEVudW07DQo+
IC0gICAgSVdiZW1DbGFzc09iamVjdCAqcmV0dXJuZWRPYmplY3Q7DQo+IC0gICAgaWYgKCp3bWkg
PT0gTlVMTCkNCj4gLSAgICAgICAgcmV0dXJuIE5VTEw7DQo+IC0gICAgQVNTRVJUKCgqd21pKS0+
bXBYU1N2YyAhPSBOVUxMKTsNCj4gLSAgICBIUkVTVUxUIGhyZXMgPSAgKCp3bWkpLT5tcFhTU3Zj
LT5DcmVhdGVJbnN0YW5jZUVudW0ocGF0aCwNCj4gV0JFTV9GTEFHX0ZPUldBUkRfT05MWSwNCj4g
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJldHVybmVkRW51bSk7
DQo+IC0gICAgaWYgKEZBSUxFRChocmVzKSkgew0KPiAtICAgICAgICBPdXRwdXREZWJ1Z1N0cmlu
ZygiR2V0RW51bSBmYWlsZWRcbiIpOw0KPiAtICAgICAgICByZXR1cm5lZE9iamVjdCA9TlVMTDsN
Cj4gLSAgICAgICAgcmV0dXJuIHJldHVybmVkT2JqZWN0Ow0KPiAtICAgIH0NCj4gLSAgICBVTE9O
RyBvYmplY3RzOw0KPiAtDQo+IC0gICAgaHJlcyA9IHJldHVybmVkRW51bS0+TmV4dChXQkVNX0lO
RklOSVRFLCAxLCAmcmV0dXJuZWRPYmplY3QsDQo+ICZvYmplY3RzKTsNCj4gLQ0KPiAtDQo+IC0g
ICAgaWYgKEZBSUxFRChocmVzKSB8fCBvYmplY3RzIDwgMSkgew0KPiAtICAgICAgICBPdXRwdXRE
ZWJ1Z1N0cmluZygiR2V0RnJvbUVudW0gZmFpbGVkXG4iKTsNCj4gLSAgICAgICAgcmV0dXJuZWRP
YmplY3QgPU5VTEw7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgcmV0dXJuIHJldHVybmVkT2JqZWN0
Ow0KPiAtfQ0KPiAtDQo+IC1IUkVTVUxUIG1ldGhvZEV4ZWMoV01JQWNjZXNzb3IqKiB3bWksICBJ
V2JlbUNsYXNzT2JqZWN0KiBpbnN0YW5jZSwNCj4gY29uc3Qgd2NoYXJfdCAqbWV0aG9kbmFtZSwg
SVdiZW1DbGFzc09iamVjdCAqaW5NZXRob2RJbnN0LA0KPiBJV2JlbUNsYXNzT2JqZWN0ICoqb3V0
TWV0aG9kSW5zdCkNCj4gLXsNCj4gLSAgICBIUkVTVUxUIGhyZXM9RV9GQUlMIDsNCj4gLQ0KPiAt
ICAgIElXYmVtQ2xhc3NPYmplY3QgKm91dHN0b3JlPU5VTEw7DQo+IC0gICAgQlNUUiBicGF0aG5h
bWUgPSBTeXNBbGxvY1N0cmluZyhMIl9fUEFUSCIpOw0KPiAtICAgIGlmIChicGF0aG5hbWUgPT0g
TlVMTCl7DQo+IC0gICAgICAgIGdvdG8gYWxsb2NwYXRobmFtZTsNCj4gLSAgICB9DQo+IC0NCj4g
LQ0KPiAtICAgIFZBUklBTlQgaW5zdGFuY2VwYXRoOw0KPiAtICAgIFZhcmlhbnRJbml0KCZpbnN0
YW5jZXBhdGgpOw0KPiAtICAgIGhyZXMgPSBpbnN0YW5jZS0+R2V0KGJwYXRobmFtZSwgMCwgJmlu
c3RhbmNlcGF0aCwgTlVMTCwgTlVMTCk7DQo+IC0gICAgaWYgKEZBSUxFRChocmVzKSkgew0KPiAt
ICAgICAgICBnb3RvIGdldGNsYXNzbmFtZTsNCj4gLSAgICB9DQo+IC0NCj4gLQ0KPiAtICAgIEJT
VFIgYm1ldGhvZG5hbWUgPSBTeXNBbGxvY1N0cmluZyhtZXRob2RuYW1lKTsNCj4gLSAgICBpZiAo
Ym1ldGhvZG5hbWUgPT0gTlVMTCl7DQo+IC0gICAgICAgIGdvdG8gYWxsb2NtZXRob2RuYW1lOw0K
PiAtICAgIH0NCj4gLQ0KPiAtICAgIGhyZXMgPSAoKndtaSktPm1wWFNTdmMtPkV4ZWNNZXRob2Qo
aW5zdGFuY2VwYXRoLmJzdHJWYWwsDQo+IGJtZXRob2RuYW1lLCAwLCBOVUxMLGluTWV0aG9kSW5z
dCwgJm91dHN0b3JlLCBOVUxMKTsNCj4gLSAgICBpZiAob3V0TWV0aG9kSW5zdCAhPSBOVUxMKSB7
DQo+IC0gICAgICAgICpvdXRNZXRob2RJbnN0ID0gTlVMTDsNCj4gLSAgICAgICAgaWYgKCFGQUlM
RUQoaHJlcykpew0KPiAtICAgICAgICAgICAgKm91dE1ldGhvZEluc3QgPSBvdXRzdG9yZTsNCj4g
LSAgICAgICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIFN5c0ZyZWVTdHJpbmcoYm1ldGhvZG5h
bWUpOw0KPiAtYWxsb2NtZXRob2RuYW1lOg0KPiAtDQo+IC1nZXRjbGFzc25hbWU6DQo+IC0gICAg
VmFyaWFudENsZWFyKCZpbnN0YW5jZXBhdGgpOw0KPiAtICAgIFN5c0ZyZWVTdHJpbmcoYnBhdGhu
YW1lKTsNCj4gLWFsbG9jcGF0aG5hbWU6DQo+IC0gICAgcmV0dXJuIGhyZXM7DQo+IC19DQo+IC1z
dGF0aWMgSUVudW1XYmVtQ2xhc3NPYmplY3QqIHJ1blhTUXVlcnkoV01JQWNjZXNzb3IgKip3bWks
IEJTVFINCj4gcXVlcnkpDQo+IC17DQo+IC0gICAgaWYgKHdtaSA9PSBOVUxMKQ0KPiAtICAgICAg
ICByZXR1cm4gTlVMTDsNCj4gLQ0KPiAtICAgIEFTU0VSVCgoKndtaSktPm1wWFNTdmMgIT0gTlVM
TCk7DQo+IC0NCj4gLSAgICAvLyBVc2UgdGhlIElXYmVtU2VydmljZXMgcG9pbnRlciB0byBtYWtl
IHJlcXVlc3RzIG9mIFdNSS4NCj4gLSAgICAvLyBNYWtlIHJlcXVlc3RzIGhlcmU6DQo+IC0gICAg
SUVudW1XYmVtQ2xhc3NPYmplY3QqIHBFbnVtZXJhdG9yID0gTlVMTDsNCj4gLSAgICBIUkVTVUxU
IGhyZXMgPSAoKndtaSktPm1wWFNTdmMtPkV4ZWNRdWVyeShMIldRTCIsDQo+IC0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LA0KPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXQkVNX0ZMQUdfRk9SV0FSRF9PTkxZIHwNCj4gV0JF
TV9GTEFHX1JFVFVSTl9JTU1FRElBVEVMWSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnBFbnVtZXJhdG9yKTsNCj4gLSAgICBpZiAoRkFJTEVEKGhyZXMpKQ0KPiAtICAg
IHsNCj4gLSAgICAgICAgREJHUFJJTlQoKCJFeGVjUXVlcnkgZmFpbGVkXG4iKSk7DQo+IC0gICAg
ICAgIHBFbnVtZXJhdG9yID0gTlVMTDsNCj4gLSAgICB9DQo+IC0gICAgcmV0dXJuIHBFbnVtZXJh
dG9yOw0KPiAtfQ0KPiAtc3RhdGljIElFbnVtV2JlbUNsYXNzT2JqZWN0KiBydW5RdWVyeShXTUlB
Y2Nlc3NvciAqd21pLCBCU1RSIHF1ZXJ5KQ0KPiAtew0KPiAtICAgIGlmICh3bWkgPT0gTlVMTCkN
Cj4gLSAgICAgICAgcmV0dXJuIE5VTEw7DQo+IC0NCj4gLSAgICBBU1NFUlQod21pLT5tcFN2YyAh
PSBOVUxMKTsNCj4gLQ0KPiAtICAgIC8vIFVzZSB0aGUgSVdiZW1TZXJ2aWNlcyBwb2ludGVyIHRv
IG1ha2UgcmVxdWVzdHMgb2YgV01JLg0KPiAtICAgIC8vIE1ha2UgcmVxdWVzdHMgaGVyZToNCj4g
LSAgICBJRW51bVdiZW1DbGFzc09iamVjdCogcEVudW1lcmF0b3IgPSBOVUxMOw0KPiAtICAgIEhS
RVNVTFQgaHJlcyA9IHdtaS0+bXBTdmMtPkV4ZWNRdWVyeShMIldRTCIsDQo+IC0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LA0KPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXQkVNX0ZMQUdfRk9SV0FSRF9PTkxZIHwNCj4gV0JF
TV9GTEFHX1JFVFVSTl9JTU1FRElBVEVMWSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnBFbnVtZXJhdG9yKTsNCj4gLSAgICBpZiAoRkFJTEVEKGhyZXMpKQ0KPiAtICAg
IHsNCj4gLSAgICAgICAgREJHUFJJTlQoKCJFeGVjUXVlcnkgZmFpbGVkXG4iKSk7DQo+IC0gICAg
ICAgIHBFbnVtZXJhdG9yID0gTlVMTDsNCj4gLSAgICB9DQo+IC0gICAgcmV0dXJuIHBFbnVtZXJh
dG9yOw0KPiAtfQ0KPiAtDQo+IC1MT05HIHdtaWNvdW50ID0gMDsNCj4gLXN0YXRpYyBCT09MRUFO
IGNvbV9pbml0aWFsaXplZCA9IGZhbHNlOw0KPiAtc3RhdGljIElXYmVtTG9jYXRvciAqbG9jYXRv
ciA9IDA7DQo+IC1CT09MIEluaXRDb20odm9pZCkgew0KPiAtICAgIEhSRVNVTFQgaHJlczsNCj4g
LSAgICBYc0xvZygiSW5pdCBDT00iKTsNCj4gLSAgICBocmVzID0gQ29Jbml0aWFsaXplRXgoMCwg
Q09JTklUX01VTFRJVEhSRUFERUQpOw0KPiAtICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAg
ICAgICAgZ290byBlcnJfb3V0Ow0KPiAtICAgIH0NCj4gLSAgICBjb21faW5pdGlhbGl6ZWQgPSBU
UlVFOw0KPiAtICAgIC8vd21pLT5vd25pbmdfdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOw0K
PiAtICAgIC8vWHNMb2coIldtaSBjb25uZWN0IHRocmVhZCAlcCIsIEdldEN1cnJlbnRUaHJlYWQo
KSk7DQo+IC0gICAgLy8gSW5pdGlhbGl6ZSBDT00gc2VjdXJpdHkuICBNb3N0IG9mIHRoaXMgaXMg
aXJyZWxldmFudCB0byB1cy4NCj4gLSAgICBYc0xvZygiSW5pdCBzZWN1cml0eSIpOw0KPiAtICAg
IGhyZXMgPSBDb0luaXRpYWxpemVTZWN1cml0eSgNCj4gLSAgICAgICAgTlVMTCwgICAgIC8qIFNl
Y3VyaXR5IGRlc2NyaXB0b3IuIE9ubHkgcmVsZXZhbnQgdG8gc2VydmVycyAqLw0KPiAtICAgICAg
ICAtMSwgICAgICAgLyogTnIuIG9mIGF1dGggc2VydmljZXMuIE9ubHkgcmVsZXZhbnQgdG8gc2Vy
dmVycyAqLw0KPiAtICAgICAgICBOVUxMLCAgICAgLyogTGlzdCBvZiBhdXRoIHNlcnZpY2VzLiBP
bmx5IHJlbGV2YW50IHRvIHNlcnZlcnMgKi8NCj4gLSAgICAgICAgTlVMTCwgICAgIC8qIFJlc2Vy
dmVkICovDQo+IC0gICAgICAgIFJQQ19DX0FVVEhOX0xFVkVMX0RFRkFVTFQsIC8qIERlZmF1bHQg
YXV0aGVudGljYXRpb24uICBUaGUNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXRhaWxzIGRvbid0IHJlYWxseSBtYXR0ZXIgd2hlbg0KPiAtICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSdyZSBsb2NhbGhvc3QuICovDQo+IC0gICAg
ICAgIFJQQ19DX0lNUF9MRVZFTF9JTVBFUlNPTkFURSwgLyogV01JIG5lZWRzIHRvIGJlIGFibGUg
dG8NCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBlcnNvbmF0
ZSB1cy4gKi8NCj4gLSAgICAgICAgTlVMTCwgICAgICAgICAgICAgLyogQXV0aGVudGljYXRpb24g
aW5mbyAqLw0KPiAtICAgICAgICBFT0FDX05PTkUsICAgICAgICAvKiBBZGRpdGlvbmFsIGNhcGFi
aWxpdGllcyAqLw0KPiAtICAgICAgICBOVUxMICAgICAgICAgICAgICAvKiBSZXNlcnZlZCAqLw0K
PiAtICAgICAgICApOw0KPiAtICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAgICAgICAgZ290
byBlcnJfb3V0Ow0KPiAtICAgIH0NCj4gLSAgICAgICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJD
cmVhdGVJbnN0YW5jZVxuIik7DQo+IC0gICAgICAgIGhyZXMgPSBDb0NyZWF0ZUluc3RhbmNlKA0K
PiAtICAgICAgICAgICAgQ0xTSURfV2JlbUxvY2F0b3IsDQo+IC0gICAgICAgICAgICAwLA0KPiAt
ICAgICAgICAgICAgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIsDQo+IC0gICAgICAgICAgICBJSURfSVdi
ZW1Mb2NhdG9yLA0KPiAtICAgICAgICAgICAgKExQVk9JRCAqKSAmbG9jYXRvcik7DQo+IC0gICAg
ICAgIE91dHB1dERlYnVnU3RyaW5nKCJDaGVjayBocmVzXG4iKTsNCj4gLSAgICAgICAgaWYgKEZB
SUxFRChocmVzKSkgew0KPiAtICAgICAgICAgICAgZ290byBlcnJfb3V0Ow0KPiAtICAgICAgICB9
DQo+IC0gICAgICAgIGlmIChsb2NhdG9yID09IE5VTEwpIHsNCj4gLSAgICAgICAgICAgIE91dHB1
dERlYnVnU3RyaW5nKCJOdWxsIGxvY2F0b3IiKTsNCj4gLSAgICAgICAgICAgIGdvdG8gZXJyX291
dDsNCj4gLSAgICAgICAgfQ0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAtZXJyX291dDoNCj4gLSAg
ICByZXR1cm4gZmFsc2U7DQo+IC19DQo+IC0NCj4gLUJPT0wgQ29ubmVjdFRvV01JKHZvaWQpDQo+
IC17DQo+IC0gICAgICAgIEluaXRDb20oKTsNCj4gLSAgICAgICAgSFJFU1VMVCBocmVzOw0KPiAt
ICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiQ29ubmVjdCB0byBXTUkiKTsNCj4gLSAgICAgICAg
d21pY291bnQrKzsNCj4gLQ0KPiAtICAgICAgICB3bWkgPSAoc3RydWN0IFdNSUFjY2Vzc29yICop
WHNBbGxvYyhzaXplb2YoKndtaSkpOw0KPiAtICAgICAgICBpZiAod21pID09IE5VTEwpIHsNCj4g
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBtZW1z
ZXQod21pLCAwLCBzaXplb2YoKndtaSkpOw0KPiAtDQo+IC0NCj4gLSAgICAgICAgT3V0cHV0RGVi
dWdTdHJpbmcoIkNvbm5lY3QgU2VydmVyXG4iKTsNCj4gLSAgICAgICAgdHJ5IHsNCj4gLSAgICAg
ICAgICAgIGhyZXMgPSBsb2NhdG9yLT5Db25uZWN0U2VydmVyKA0KPiAtICAgICAgICAgICAgICAg
IEwicm9vdFxcQ0lNVjIiLCAgICAgICAgICAvLyBXTUkgbmFtZXNwYWNlDQo+IC0gICAgICAgICAg
ICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgIC8vIFVzZXIgbmFtZQ0KPiAtICAgICAgICAg
ICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAvLyBVc2VyIHBhc3N3b3JkDQo+IC0gICAg
ICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgIC8vIExvY2FsZQ0KPiAtICAgICAg
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWN1cml0eSBmbGFncw0KPiAt
ICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAvLyBBdXRob3JpdHkNCj4g
LSAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgLy8gQ29udGV4dCBvYmpl
Y3QNCj4gLSAgICAgICAgICAgICAgICAmKHdtaS0+bXBTdmMpICAgICAgICAgICAgICAvLyBJV2Jl
bVNlcnZpY2VzIHByb3h5DQo+IC0gICAgICAgICAgICAgICAgKTsNCj4gLSAgICAgICAgfQ0KPiAt
ICAgICAgICBjYXRjaCguLi4pIHsNCj4gLSAgICAgICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJF
eGNlcHRpb24gY29ubmVjdGluZyB0byBzZXJ2ZXJcbiIpOw0KPiAtICAgICAgICAgICAgZ290byBl
cnJfb3V0Ow0KPiAtICAgICAgICB9DQo+IC0NCj4gLSAgICAgICAgT3V0cHV0RGVidWdTdHJpbmco
IkNoZWNrIHJlc3VsdFxuIik7DQo+IC0gICAgICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAg
ICAgICAgICAgIGdvdG8gZXJyX291dDsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICAvKiBXTUkg
bmVlZHMgdG8gaW1wZXJzb25hdGUgdXMsIGJlY2F1c2UgaXQgbm9ybWFsbHkgcnVucyBhcyBhbg0K
PiAtICAgICAgICAgICB1bnByaXZpbGVnZWQgdXNlciBhbmQgbmVlZHMgb3VyIGF1dGhvcml0eSBp
biBvcmRlciB0byBhY2Nlc3MNCj4gLSAgICAgICAgICAgZGV2aWNlIGZpbGVzIGFuZCBzbyBmb3J0
aC4gIFR1cm4gaW1wZXJzb25hdGlvbiBvbi4gKi8NCj4gLSAgICAgICAgT3V0cHV0RGVidWdTdHJp
bmcoIlByb3h5IGJsYW5rZXRcbiIpOw0KPiAtICAgICAgICBocmVzID0gQ29TZXRQcm94eUJsYW5r
ZXQoDQo+IC0gICAgICAgICAgICB3bWktPm1wU3ZjLCAgICAgICAgICAgICAgICAgIC8vIHRoZSBw
cm94eSB0byBzZXQNCj4gLSAgICAgICAgICAgIFJQQ19DX0FVVEhOX1dJTk5ULCAgICAgICAgICAg
LyogTEFOIG1hbmFnZXIgYXV0aGVudGljYXRpb24sDQo+IC0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsdGhvdWdoIGl0IGRvZXNuJ3QgcmVhbGx5DQo+IC0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHRlciBvbiBsb2NhbGhv
c3QuICovDQo+IC0gICAgICAgICAgICBSUENfQ19BVVRIWl9OT05FLCAgICAgICAgICAgIC8vIExB
Tk1BTiBjYW4ndCBkbyBtdWNoIGF1dGhvcml6YXRpb24uDQo+IC0gICAgICAgICAgICBOVUxMLCAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFNlcnZlciBwcmluY2lwYWwgbmFtZQ0KPiAtICAgICAg
ICAgICAgUlBDX0NfQVVUSE5fTEVWRUxfQ0FMTCwgICAgICAvLyBEbyBhdXRoZW50aWNhdGlvbiBv
biBldmVyeSBjYWxsDQo+IC0gICAgICAgICAgICBSUENfQ19JTVBfTEVWRUxfSU1QRVJTT05BVEUs
IC8vIEFsbG93IGZ1bGwgaW1wZXJzb25hdGlvbi4NCj4gLSAgICAgICAgICAgIE5VTEwsICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVXNlIGN1cnJlbnQgY2xpZW50IGlkZW50aXR5DQo+IC0gICAg
ICAgICAgICBFT0FDX05PTkUgICAgICAgICAgICAgICAgICAgIC8vIE5vIGV4dGVuZGVkIHByb3h5
IGNhcGFiaWxpdGllcw0KPiAtICAgICAgICApOw0KPiAtICAgICAgICBpZiAoRkFJTEVEKGhyZXMp
KSB7DQo+IC0gICAgICAgICAgICBnb3RvIGVycl9vdXQ7DQo+IC0gICAgICAgIH0NCj4gLSAgICAg
ICAgT3V0cHV0RGVidWdTdHJpbmcoIldNSSBTZXJ2ZXJcbiIpOw0KPiAtICAgICAgICBocmVzID0g
bG9jYXRvci0+Q29ubmVjdFNlcnZlcigNCj4gLSAgICAgICAgICAgIEwicm9vdFxcV01JIiwgICAg
ICAgICAgLy8gV01JIG5hbWVzcGFjZQ0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgIC8vIFVzZXIgbmFtZQ0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAg
ICAgIC8vIFVzZXIgcGFzc3dvcmQNCj4gLSAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAvLyBMb2NhbGUNCj4gLSAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAv
LyBTZWN1cml0eSBmbGFncw0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAg
IC8vIEF1dGhvcml0eQ0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgIC8v
IENvbnRleHQgb2JqZWN0DQo+IC0gICAgICAgICAgICAmd21pLT5tcFhTU3ZjICAgICAgICAgICAg
ICAvLyBJV2JlbVNlcnZpY2VzIHByb3h5DQo+IC0gICAgICAgICAgICApOw0KPiAtDQo+IC0gICAg
ICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAgICAgICAgICAgIGdvdG8gZXJyX291dDsNCj4g
LSAgICAgICAgfQ0KPiAtICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiSW1wZXJzb25hdGlvblxu
Iik7DQo+IC0gICAgICAgIC8qIFdNSSBuZWVkcyB0byBpbXBlcnNvbmF0ZSB1cywgYmVjYXVzZSBp
dCBub3JtYWxseSBydW5zIGFzIGFuDQo+IC0gICAgICAgICAgIHVucHJpdmlsZWdlZCB1c2VyIGFu
ZCBuZWVkcyBvdXIgYXV0aG9yaXR5IGluIG9yZGVyIHRvIGFjY2Vzcw0KPiAtICAgICAgICAgICBk
ZXZpY2UgZmlsZXMgYW5kIHNvIGZvcnRoLiAgVHVybiBpbXBlcnNvbmF0aW9uIG9uLiAqLw0KPiAt
ICAgICAgICBocmVzID0gQ29TZXRQcm94eUJsYW5rZXQoDQo+IC0gICAgICAgICAgICB3bWktPm1w
WFNTdmMsICAgICAgICAgICAgICAgICAgLy8gdGhlIHByb3h5IHRvIHNldA0KPiAtICAgICAgICAg
ICAgUlBDX0NfQVVUSE5fV0lOTlQsICAgICAgICAgICAvKiBMQU4gbWFuYWdlciBhdXRoZW50aWNh
dGlvbiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0
aG91Z2ggaXQgZG9lc24ndCByZWFsbHkNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0dGVyIG9uIGxvY2FsaG9zdC4gKi8NCj4gLSAgICAgICAgICAgIFJQ
Q19DX0FVVEhaX05PTkUsICAgICAgICAgICAgLy8gTEFOTUFOIGNhbid0IGRvIG11Y2ggYXV0aG9y
aXphdGlvbi4NCj4gLSAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U2VydmVyIHByaW5jaXBhbCBuYW1lDQo+IC0gICAgICAgICAgICBSUENfQ19BVVRITl9MRVZFTF9D
QUxMLCAgICAgIC8vIERvIGF1dGhlbnRpY2F0aW9uIG9uIGV2ZXJ5IGNhbGwNCj4gLSAgICAgICAg
ICAgIFJQQ19DX0lNUF9MRVZFTF9JTVBFUlNPTkFURSwgLy8gQWxsb3cgZnVsbCBpbXBlcnNvbmF0
aW9uLg0KPiAtICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2Ug
Y3VycmVudCBjbGllbnQgaWRlbnRpdHkNCj4gLSAgICAgICAgICAgIEVPQUNfTk9ORSAgICAgICAg
ICAgICAgICAgICAgLy8gTm8gZXh0ZW5kZWQgcHJveHkgY2FwYWJpbGl0aWVzDQo+IC0gICAgICAg
ICk7DQo+IC0gICAgICAgIGlmIChGQUlMRUQoaHJlcykpIHsNCj4gLSAgICAgICAgICAgIGdvdG8g
ZXJyX291dDsNCj4gLSAgICAgICAgfQ0KPiAtDQo+IC0NCj4gLSAgICBPdXRwdXREZWJ1Z1N0cmlu
ZygiV21pIGNvbm5lY3RlZFxuIik7DQo+IC0gICAgLyogQWxsIGRvbmUuICovDQo+IC0gICAgcmV0
dXJuIHRydWU7DQo+IC0NCj4gLWVycl9vdXQ6DQo+IC0gICAgT3V0cHV0RGVidWdTdHJpbmcoIldN
SSBjb25uZWN0aW9uIGZhaWxlZFxuIik7DQo+IC0gICAgUmVsZWFzZVdNSUFjY2Vzc29yKCZ3bWkp
Ow0KPiAtICAgIHJldHVybiBmYWxzZTsNCj4gLX0NCj4gLQ0KPiAtDQo+IC12b2lkIFJlbGVhc2VD
b20odm9pZCkgew0KPiAtDQo+IC0gICAgaWYgKGNvbV9pbml0aWFsaXplZCkgew0KPiAtICAgICAg
ICBPdXRwdXREZWJ1Z1N0cmluZygiUmVsZWFzZSBsb2NhdG9yXG4iKTsNCj4gLSAgICAgICAgbG9j
YXRvci0+UmVsZWFzZSgpOw0KPiAtICAgICAgICAvL1hzTG9nKCJXbWkgZGlzY29ubmVjdCB0aHJl
YWQgJXAiLCBHZXRDdXJyZW50VGhyZWFkKCkpOw0KPiAtICAgICAgICAvL0FTU0VSVCgoKndtaSkt
Pm93bmluZ190aHJlYWQgPT0gR2V0Q3VycmVudFRocmVhZCgpKTsNCj4gLSAgICAgICAgY29tX2lu
aXRpYWxpemVkID0gMDsNCj4gLSAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIlVuaW5pdGlhbGl6
ZSBjb21cbiIpOw0KPiAtICAgICAgICBDb1VuaW5pdGlhbGl6ZSgpOw0KPiAtDQo+IC0gICAgfQ0K
PiAtfQ0KPiAtDQo+IC0vKiBDYXJlZnVsOiBXTUkgYWNjZXNzb3JzIG11c3QgYmUgcmVsZWFzZWQg
b24gdGhlIHNhbWUgdGhyZWFkIHRoYXQNCj4gLSAgIGFsbG9jYXRlZCB0aGVtLiAqLw0KPiAtdm9p
ZCBSZWxlYXNlV01JQWNjZXNzb3Ioc3RydWN0IFdNSUFjY2Vzc29yICoqd21pKQ0KPiAtew0KPiAt
ICAgIE91dHB1dERlYnVnU3RyaW5nKCJTaG91bGQgSSByZWxlYXNlIHdtaT9cbiIpOw0KPiAtICAg
IGlmICgqd21pID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybjsNCj4gLSAgICBPdXRwdXREZWJ1
Z1N0cmluZygiR2V0IHJpZCBvZiBXTUkgc2VydmVyc1xuIik7DQo+IC0gICAgaWYgKCgqd21pKS0+
bXBYU1N2YyAhPSBOVUxMKQ0KPiAtICAgICAgICAoKndtaSktPm1wWFNTdmMtPlJlbGVhc2UoKTsN
Cj4gLSAgICBpZiAoKCp3bWkpLT5tcFN2YyAhPSBOVUxMKQ0KPiAtICAgICAgICAoKndtaSktPm1w
U3ZjLT5SZWxlYXNlKCk7DQo+IC0gICAgT3V0cHV0RGVidWdTdHJpbmcoIkNsZWFyIFdtSVxuIik7
DQo+IC0gICAgLyogUG9pc29uIHdtaSB0byBtYWtlIHVzZS1hZnRlci1mcmVlKClzIGEgYml0IG1v
cmUgb2J2aW91cy4gKi8NCj4gLSAgICBtZW1zZXQoKCp3bWkpLCAweGFiLCBzaXplb2YoKip3bWkp
KTsNCj4gLSAgICBYc0ZyZWUoKndtaSk7DQo+IC0gICAgKndtaSA9IE5VTEw7DQo+IC0gICAgUmVs
ZWFzZUNvbSgpOw0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKCJSZWxlYXNlZCBXTUlcbiIpOw0K
PiAtfQ0KPiAtDQo+IC0vKiBUaGUgZmFjdCB0aGF0IHNvbWV0aGluZyBpcyBkb2N1bWVudGVkIGFz
IGJlaW5nIGEgdWludDY0X3QgZmllbGQNCj4gLSAgIGRvZXNuJ3QgaW1wbHkgdGhhdCBpdCB3aWxs
IGJlIHJldHVybmVkIGFzIGEgVlRfVUk4IGZpZWxkIGluIGENCj4gLSAgIHZhcmlhbnQgc3RydWN0
dXJlLiAgV29yayBhcm91bmQgdGhpcyB3aXRoIGEgaGFuZHkgY29udmVyc2lvbg0KPiAtICAgZnVu
Y3Rpb24uICovDQo+IC1zdGF0aWMgdWludDY0X3QNCj4gLUdldFZhcmlhbnRVaW50NjQoVkFSSUFO
VCAqdnREYXRhKQ0KPiAtew0KPiAtICAgIHN3aXRjaCAodnREYXRhLT52dCkgew0KPiAtICAgIGNh
c2UgVlRfSTI6DQo+IC0gICAgICAgIHJldHVybiB2dERhdGEtPmlWYWw7DQo+IC0gICAgY2FzZSBW
VF9JNDoNCj4gLSAgICAgICAgcmV0dXJuIHZ0RGF0YS0+bFZhbDsNCj4gLSAgICBjYXNlIFZUX0k4
Og0KPiAtICAgICAgICByZXR1cm4gdnREYXRhLT5sbFZhbDsNCj4gLSAgICBjYXNlIFZUX1VJMjoN
Cj4gLSAgICAgICAgcmV0dXJuIHZ0RGF0YS0+dWlWYWw7DQo+IC0gICAgY2FzZSBWVF9VSTQ6DQo+
IC0gICAgICAgIHJldHVybiB2dERhdGEtPnVsVmFsOw0KPiAtICAgIGNhc2UgVlRfVUk4Og0KPiAt
ICAgICAgICByZXR1cm4gdnREYXRhLT51bGxWYWw7DQo+IC0gICAgY2FzZSBWVF9CU1RSOg0KPiAt
ICAgICAgICAvKiBZZXMsIEkgcmVhbGx5IGRvIG1lYW4gQlNUUjogWFAgcmV0dXJucyA2NCBiaXQg
dmFsdWVzIGFzDQo+IC0gICAgICAgICAgIHN0cmluZ3MsIGFuZCB3ZSB0aGVuIGhhdmUgdG8gZG8g
YXRvaWxsIG9uIGl0LiAqLw0KPiAtICAgICAgICByZXR1cm4gX3d0b2k2NCh2dERhdGEtPmJzdHJW
YWwpOw0KPiAtICAgIGRlZmF1bHQ6DQo+IC0gICAgICAgIERCR1BSSU5UKCgiQmFkIHVpbnQ2NF90
IHZhcmlhbnQgJWQuXG4iLHZ0RGF0YS0+dnQpKTsNCj4gLSAgICAgICAgcmV0dXJuIC0xOw0KPiAt
ICAgIH0NCj4gLX0NCj4gLQ0KPiAtc3RhdGljIEhSRVNVTFQNCj4gLVF1ZXJ5VmFyaWFudChXTUlB
Y2Nlc3NvciAqd21pLCBQV0NIQVIgZmllbGQsIFBXQ0hBUiB0YWJsZSwgVkFSSUFOVA0KPiAqdnQp
DQo+IC17DQo+IC0gICAgSUVudW1XYmVtQ2xhc3NPYmplY3QgKnBFbnVtOw0KPiAtICAgIEJTVFIg
cXVlcnk7DQo+IC0gICAgc2l6ZV90IHF1ZXJ5X2xlbjsNCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0
ICpwY2xzT2JqOw0KPiAtICAgIEhSRVNVTFQgaHI7DQo+IC0gICAgVUxPTkcgdVJldHVybjsNCj4g
LQ0KPiAtICAgIHF1ZXJ5X2xlbiA9IHN0cmxlbigiU0VMRUNUICBGUk9NICIpICsgd2NzbGVuKGZp
ZWxkKSArIHdjc2xlbih0YWJsZSkgKyAxOw0KPiAtICAgIHF1ZXJ5ID0gU3lzQWxsb2NTdHJpbmdM
ZW4oTlVMTCwgKFVJTlQpcXVlcnlfbGVuKTsNCj4gLSAgICBpZiAocXVlcnkgPT0gTlVMTCkgew0K
PiAtICAgICAgICBociA9IEVfT1VUT0ZNRU1PUlk7DQo+IC0gICAgICAgIGdvdG8gZXJyOw0KPiAt
ICAgIH0NCj4gLSAgICBzd3ByaW50Zl9zKHF1ZXJ5LCBxdWVyeV9sZW4sIEwiU0VMRUNUICVzIEZS
T00gJXMiLCBmaWVsZCwgdGFibGUpOw0KPiAtICAgIHBFbnVtID0gcnVuUXVlcnkod21pLCBxdWVy
eSk7DQo+IC0gICAgU3lzRnJlZVN0cmluZyhxdWVyeSk7DQo+IC0NCj4gLSAgICBpZiAocEVudW0g
PT0gTlVMTCkgew0KPiAtICAgICAgICBociA9IEVfT1VUT0ZNRU1PUlk7DQo+IC0gICAgICAgIGdv
dG8gZXJyOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIGhyID0gcEVudW0tPk5leHQoV0JFTV9JTkZJ
TklURSwgMSwgJnBjbHNPYmosICZ1UmV0dXJuKTsNCj4gLSAgICBwRW51bS0+UmVsZWFzZSgpOw0K
PiAtICAgIGlmIChGQUlMRUQoaHIpKQ0KPiAtICAgICAgICBnb3RvIGVycjsNCj4gLSAgICBpZiAo
dVJldHVybiA9PSAwKSB7DQo+IC0gICAgICAgIGhyID0gRV9GQUlMOw0KPiAtICAgICAgICBnb3Rv
IGVycjsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBociA9IHBjbHNPYmotPkdldChmaWVsZCwgMCwg
dnQsIE5VTEwsIE5VTEwpOw0KPiAtICAgIHBjbHNPYmotPlJlbGVhc2UoKTsNCj4gLQ0KPiAtICAg
IHJldHVybiBocjsNCj4gLQ0KPiAtZXJyOg0KPiAtICAgIHJldHVybiBocjsNCj4gLX0NCj4gLQ0K
PiAtc3RhdGljIHVpbnQ2NF90DQo+IC1RdWVyeVVpbnQ2NChXTUlBY2Nlc3NvciAqd21pLCBQV0NI
QVIgZmllbGQsIFBXQ0hBUiB0YWJsZSkNCj4gLXsNCj4gLSAgICBIUkVTVUxUIGhyOw0KPiAtICAg
IHVpbnQ2NF90IHJlczsNCj4gLSAgICBWQVJJQU5UIHZ0Ow0KPiAtDQo+IC0gICAgbWVtc2V0KCZ2
dCwgMCwgc2l6ZW9mKHZ0KSk7DQo+IC0NCj4gLSAgICBociA9IFF1ZXJ5VmFyaWFudCh3bWksIGZp
ZWxkLCB0YWJsZSwgJnZ0KTsNCj4gLSAgICBpZiAoRkFJTEVEKGhyKSkNCj4gLSAgICAgICAgcmV0
dXJuIDA7DQo+IC0NCj4gLSAgICByZXMgPSBHZXRWYXJpYW50VWludDY0KCZ2dCk7DQo+IC0gICAg
VmFyaWFudENsZWFyKCZ2dCk7DQo+IC0gICAgcmV0dXJuIHJlczsNCj4gLX0NCj4gLQ0KPiAtc3Rh
dGljIEJTVFINCj4gLVF1ZXJ5QnN0cihXTUlBY2Nlc3NvciAqd21pLCBQV0NIQVIgZmllbGQsIFBX
Q0hBUiB0YWJsZSkNCj4gLXsNCj4gLSAgICBIUkVTVUxUIGhyOw0KPiAtICAgIFZBUklBTlQgdnQ7
DQo+IC0NCj4gLSAgICBtZW1zZXQoJnZ0LCAwLCBzaXplb2YodnQpKTsNCj4gLQ0KPiAtICAgIGhy
ID0gUXVlcnlWYXJpYW50KHdtaSwgZmllbGQsIHRhYmxlLCAmdnQpOw0KPiAtICAgIGlmIChGQUlM
RUQoaHIpKQ0KPiAtICAgICAgICByZXR1cm4gTlVMTDsNCj4gLSAgICBpZiAodnQudnQgIT0gVlRf
QlNUUikgew0KPiAtICAgICAgICBWYXJpYW50Q2xlYXIoJnZ0KTsNCj4gLSAgICAgICAgcmV0dXJu
IE5VTEw7DQo+IC0gICAgfQ0KPiAtICAgIHJldHVybiB2dC5ic3RyVmFsOw0KPiAtfQ0KPiAtDQo+
IC0NCj4gLQ0KPiAtLyogaGFzaCBjb21wYXJhdG9yIGZvciBzdHJpbmdzIHdoaWNoIHN0cmlwcyBv
ZmYgdHJhaWxpbmcgLmV4ZQ0KPiAtICogc3VmZml4ICovDQo+IC1jbGFzcyBzdHJpbmdfZXFfZXhl
IHsNCj4gLXByaXZhdGU6DQo+IC0gICAgc3RhdGljIHNpemVfdCBsZW5fd2l0aG91dF9zdWZmaXgo
Y29uc3QgY2hhciAqeCkNCj4gLSAgICB7DQo+IC0gICAgICAgIHNpemVfdCBsOw0KPiAtICAgICAg
ICBsID0gc3RybGVuKHgpOw0KPiAtICAgICAgICBpZiAobCA+IDQgJiYgIXN0cmNtcCh4ICsgbCAt
IDQsICIuZXhlIikpDQo+IC0gICAgICAgICAgICBsIC09IDQ7DQo+IC0gICAgICAgIHJldHVybiBs
Ow0KPiAtICAgIH0NCj4gLQ0KPiAtcHVibGljOg0KPiAtICAgIGVudW0ge2J1Y2tldF9zaXplID0g
NCwgbWluX2J1Y2tldHMgPSA4fTsNCj4gLSAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qgc3RyaW5n
ICZhLCBjb25zdCBzdHJpbmcgJmIpIGNvbnN0DQo+IC0gICAgew0KPiAtICAgICAgICBjb25zdCBj
aGFyICphX2MsICpiX2M7DQo+IC0gICAgICAgIHNpemVfdCBhX2wsIGJfbDsNCj4gLSAgICAgICAg
YV9jID0gYS5jX3N0cigpOw0KPiAtICAgICAgICBiX2MgPSBiLmNfc3RyKCk7DQo+IC0gICAgICAg
IGFfbCA9IGxlbl93aXRob3V0X3N1ZmZpeChhX2MpOw0KPiAtICAgICAgICBiX2wgPSBsZW5fd2l0
aG91dF9zdWZmaXgoYl9jKTsNCj4gLQ0KPiAtICAgICAgICBpZiAoYV9sICE9IGJfbCkNCj4gLSAg
ICAgICAgICAgIHJldHVybiAxOw0KPiAtICAgICAgICBpZiAobWVtY21wKGFfYywgYl9jLCBhX2wp
KQ0KPiAtICAgICAgICAgICAgcmV0dXJuIDE7DQo+IC0gICAgICAgIGVsc2UNCj4gLSAgICAgICAg
ICAgIHJldHVybiAwOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIHNpemVfdCBvcGVyYXRvcigpKGNv
bnN0IHN0cmluZyAmYSkgY29uc3QNCj4gLSAgICB7DQo+IC0gICAgICAgIHNpemVfdCBhY2MgPSAw
Ow0KPiAtICAgICAgICBjb25zdCBjaGFyICpjX3N0ciA9IGEuY19zdHIoKTsNCj4gLSAgICAgICAg
c2l6ZV90IGxlbiA9IGxlbl93aXRob3V0X3N1ZmZpeChjX3N0cik7DQo+IC0gICAgICAgIHVuc2ln
bmVkIHg7DQo+IC0gICAgICAgIGZvciAoeCA9IDA7IHggPCBsZW47IHgrKykNCj4gLSAgICAgICAg
ICAgIGFjYyA9IChhY2MgKiAxNyArIGNfc3RyW3hdKSAlIDI1NzsNCj4gLSAgICAgICAgcmV0dXJu
IGFjYzsNCj4gLSAgICB9DQo+IC19Ow0KPiAtDQo+IC0NCj4gLUlXYmVtQ2xhc3NPYmplY3QgKmdl
dEJhc2UoV01JQWNjZXNzb3IqKiB3bWkpDQo+IC17DQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCog
YmFzZSA9IGdldE9iamVjdCh3bWksIE9CSkVDVF9OQU1FX1coQmFzZSkpOw0KPiAtICAgIGlmIChi
YXNlID09IE5VTEwpIHsNCj4gLSAgICAgICAgKndtaSA9IE5VTEw7DQo+IC0gICAgICAgIHJldHVy
biBOVUxMOw0KPiAtICAgIH0NCj4gLSAgICByZXR1cm4gYmFzZTsNCj4gLX0NCj4gLQ0KPiAtSVdi
ZW1DbGFzc09iamVjdCAqZ2V0QmFzZUNsYXNzKFdNSUFjY2Vzc29yKiogd21pKQ0KPiAtew0KPiAt
ICAgIElXYmVtQ2xhc3NPYmplY3QqIGJhc2VjbGFzcyA9IGdldENsYXNzKHdtaSwgT0JKRUNUX05B
TUVfVyhCYXNlKSk7DQo+IC0gICAgaWYgKGJhc2VjbGFzcyA9PSBOVUxMKSB7DQo+IC0gICAgICAg
ICp3bWkgPSBOVUxMOw0KPiAtICAgICAgICByZXR1cm4gTlVMTDsNCj4gLSAgICB9DQo+IC0gICAg
cmV0dXJuIGJhc2VjbGFzczsNCj4gLX0NCj4gLQ0KPiAtVUxPTkdMT05HIGdldDY0Qml0VW5zaWdu
ZWQoVkFSSUFOVCAqdmFyKSB7DQo+IC0gICAgVUxPTkdMT05HIHJlcyA9IDA7DQo+IC0gICAgc3dp
dGNoICh2YXItPnZ0KSB7DQo+IC0gICAgICAgIGNhc2UgVlRfQlNUUjogew0KPiAtICAgICAgICAg
ICAgICAgIFZBUklBTlQgb3V0dmFyOw0KPiAtICAgICAgICAgICAgICAgIFZhcmlhbnRJbml0KCZv
dXR2YXIpOw0KPiAtICAgICAgICAgICAgICAgIFZhcmlhbnRDaGFuZ2VUeXBlKCZvdXR2YXIsIHZh
ciwgMCwgVlRfVUk4KTsNCj4gLSAgICAgICAgICAgICAgICByZXMgPSBvdXR2YXIudWxsVmFsOw0K
PiAtICAgICAgICAgICAgICAgIFZhcmlhbnRDbGVhcigmb3V0dmFyKTsNCj4gLSAgICAgICAgICAg
IH0NCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiAtICAgICAgICBjYXNlIFZUX1VJODogew0KPiAt
ICAgICAgICAgICAgICAgIHJlcyA9IHZhci0+dWxsVmFsOw0KPiAtICAgICAgICAgICAgfQ0KPiAt
ICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgfQ0KPiAtICAgIHJldHVybiByZXM7DQo+IC19DQo+
IC0NCj4gLUZJTEVUSU1FIFdtaUdldFhlblRpbWUoV01JQWNjZXNzb3IgKip3bWkpIHsNCj4gLSAg
ICAgRklMRVRJTUUgb3V0Ow0KPiAtDQo+IC0gICAgIElXYmVtQ2xhc3NPYmplY3QgKmJhc2UgPSBn
ZXRCYXNlKHdtaSk7DQo+IC0gICAgIGlmIChiYXNlID09IE5VTEwpIHsNCj4gLSAgICAgICAgIERC
R1BSSU5UKCgiVW5hYmxlIHRvIGZpbmQgYmFzZSBXTUkgc2Vzc2lvblxuIikpOw0KPiAtICAgICAg
ICAgZ290byBnZXRiYXNlZmFpbGVkOw0KPiAtICAgICB9DQo+IC0NCj4gLSAgICAgVkFSSUFOVCB0
aW1ldmFyOw0KPiAtICAgICBCU1RSIHRpbWVuYW1lID0gbWtCc3RyKCJYZW5UaW1lIiwgNyk7DQo+
IC0gICAgIGlmICh0aW1lbmFtZSA9PSBOVUxMKQ0KPiAtICAgICAgICAgZ290byBidWlsZHRpbWVu
YW1lZmFpbGVkOw0KPiAtDQo+IC0NCj4gLQ0KPiAtICAgICBpZiAoRkFJTEVEKGJhc2UtPkdldCh0
aW1lbmFtZSwgMCwgJnRpbWV2YXIsIE5VTEwsIE5VTEwpKSkNCj4gLSAgICAgICAgIGdvdG8gZ2V0
dGltZWZhaWxlZDsNCj4gLQ0KPiAtICAgICBVTE9OR0xPTkcgdGltZSA9Z2V0NjRCaXRVbnNpZ25l
ZCgmdGltZXZhcik7Ow0KPiAtDQo+IC0gICAgIG91dC5kd0xvd0RhdGVUaW1lID0gKERXT1JEKXRp
bWU7DQo+IC0gICAgIG91dC5kd0hpZ2hEYXRlVGltZSA9IChEV09SRCkodGltZT4+MzIpOw0KPiAt
ICAgICByZXR1cm4gb3V0Ow0KPiAtDQo+IC1nZXR0aW1lZmFpbGVkOg0KPiAtYnVpbGR0aW1lbmFt
ZWZhaWxlZDoNCj4gLWdldGJhc2VmYWlsZWQ6DQo+IC0gICAgIG91dC5kd0xvd0RhdGVUaW1lID0g
MDsNCj4gLSAgICAgb3V0LmR3SGlnaERhdGVUaW1lID0gMDsNCj4gLSAgICAgcmV0dXJuIG91dCA7
DQo+IC19DQo+IC0NCj4gLUlXYmVtQ2xhc3NPYmplY3QgKm9wZW5TZXNzaW9uKFdNSUFjY2Vzc29y
Kiogd21pLCBjb25zdCBjaGFyDQo+ICpzZXNzaW9ubmFtZSkNCj4gLXsNCj4gLSAgICBIUkVTVUxU
IGhyZXM7DQo+IC0NCj4gLSAgICBCU1RSIHF1ZXJ5ID0gZm9ybWF0QnN0cigiU0VMRUNUICogRlJP
TSAiIE9CSkVDVF9OQU1FX0EoU2Vzc2lvbikgIg0KPiBXSEVSRSBJZD1cIiIgT0JKRUNUX1BSRUZJ
WF9TVFIgIiBYZW4gV2luMzIgU2VydmljZSA6ICVzXCIiLA0KPiBzZXNzaW9ubmFtZSk7DQo+IC0g
ICAgaWYgKHF1ZXJ5ID09IE5VTEwpDQo+IC0gICAgICAgIGdvdG8gZm9ybWF0c2Vzc2lvbmJzdHJm
YWlsZWQ7DQo+IC0NCj4gLSAgICBJRW51bVdiZW1DbGFzc09iamVjdCAqIHNlc3Npb25zID0gcnVu
WFNRdWVyeSh3bWksIHF1ZXJ5KTsNCj4gLSAgICBTeXNGcmVlU3RyaW5nKHF1ZXJ5KTsNCj4gLQ0K
PiAtICAgIGlmIChzZXNzaW9ucykgew0KPiAtICAgICAgICBJV2JlbUNsYXNzT2JqZWN0ICpyZXR1
cm5lZE9iamVjdDsNCj4gLSAgICAgICAgVUxPTkcgY291bnQ7DQo+IC0gICAgICAgIGhyZXMgPSBz
ZXNzaW9ucy0+TmV4dChXQkVNX0lORklOSVRFLCAxLCAmcmV0dXJuZWRPYmplY3QsICZjb3VudCk7
DQo+IC0gICAgICAgIHNlc3Npb25zLT5SZWxlYXNlKCk7DQo+IC0NCj4gLSAgICAgICAgaWYgKGNv
dW50PjApIHsNCj4gLSAgICAgICAgICAgIGlmIChzZXNzaW9ubmFtZSAhPU5VTEwgKSB7DQo+IC0g
ICAgICAgICAgICAgICAgaWYgKCFXbWlTZXNzaW9uRW5kKHdtaSwgcmV0dXJuZWRPYmplY3QpKSB7
DQo+IC0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiAtICAgICAgICAgICAgICAg
IH0NCj4gLSAgICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgIGVsc2Ugew0KPiAtICAgICAgICAg
ICAgICAgIHJldHVybiByZXR1cm5lZE9iamVjdDsNCj4gLSAgICAgICAgICAgIH0NCj4gLSAgICAg
ICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKmJhc2UgPSBnZXRC
YXNlKHdtaSk7DQo+IC0gICAgaWYgKGJhc2U9PU5VTEwpIHsNCj4gLSAgICAgICAgREJHUFJJTlQo
KCJVbmFibGUgdG8gZmluZCBiYXNlIFdNSSBzZXNzaW9uXG4iKSk7DQo+IC0gICAgICAgIGdvdG8g
Z2V0YmFzZWZhaWxlZDsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICpi
YXNlY2xhc3MgPSBnZXRCYXNlQ2xhc3Mod21pKTsNCj4gLQ0KPiAtICAgIGlmIChiYXNlY2xhc3Mg
PT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBnZXRiYXNlY2xhc3NmYWlsZWQ7DQo+IC0NCj4gLSAg
ICBJV2JlbUNsYXNzT2JqZWN0ICppbk1ldGhvZDsNCj4gLQ0KPiAtICAgIElXYmVtQ2xhc3NPYmpl
Y3QgKmluTWV0aG9kSW5zdDsNCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICpvdXRNZXRob2RJbnN0
Ow0KPiAtICAgIGlmIChGQUlMRUQoYmFzZWNsYXNzLT5HZXRNZXRob2QoTCJBZGRTZXNzaW9uIiww
LCZpbk1ldGhvZCwgTlVMTCkpKQ0KPiAtICAgICAgICBnb3RvIGdldG1ldGhvZGFkZHNlc3Npb25m
YWlsZWQ7DQo+IC0NCj4gLSAgICBpZiAoRkFJTEVEKGluTWV0aG9kLT5TcGF3bkluc3RhbmNlKDAs
ICZpbk1ldGhvZEluc3QpKSkNCj4gLSAgICAgICAgZ290byBpbm1ldGhvZHNwYXduZmFpbGVkOw0K
PiAtDQo+IC0gICAgVkFSSUFOVCB2YXI7DQo+IC0gICAgdmFyLnZ0ID0gVlRfQlNUUjsNCj4gLSAg
ICB2YXIuYnN0clZhbD1mb3JtYXRCc3RyKFZFTkRPUl9OQU1FX1NUUiAiICIgUFJPRFVDVF9OQU1F
X1NUUiAiDQo+IFdpbjMyIFNlcnZpY2UgOiAlcyIsIHNlc3Npb25uYW1lKTsNCj4gLQ0KPiAtICAg
IGlmICh2YXIuYnN0clZhbCA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIGZvcm1hdG5hbWVic3Ry
ZmFpbGVkOw0KPiAtDQo+IC0gICAgaWYgKEZBSUxFRChpbk1ldGhvZEluc3QtPlB1dChMIklkIiwg
MCwgJnZhciwgMCkpKQ0KPiAtICAgICAgICBnb3RvIG1ldGhvZHB1dGZhaWxlZDsNCj4gLQ0KPiAt
ICAgIGlmIChGQUlMRUQobWV0aG9kRXhlYyh3bWksIGJhc2UsIEwiQWRkU2Vzc2lvbiIsIGluTWV0
aG9kSW5zdCwNCj4gJm91dE1ldGhvZEluc3QpKSkNCj4gLSAgICAgICAgZ290byBtZXRob2RleGVj
YWRkc2Vzc2lvbmZhaWxlZDsNCj4gLQ0KPiAtICAgIGlmIChGQUlMRUQob3V0TWV0aG9kSW5zdC0+
R2V0KEwiU2Vzc2lvbklkIiwgMCwgJnZhciwgTlVMTCwgTlVMTCkpKQ0KPiAtICAgICAgICBnb3Rv
IG91dG1ldGhvZGdldGZhaWxlZDsNCj4gLQ0KPiAtICAgIHNpemVfdCBxdWVyeV9sZW47DQo+IC0g
ICAgcXVlcnlfbGVuID0gc3RybGVuKCJTRUxFQ1QgKiBGUk9NICIgT0JKRUNUX05BTUVfQShTZXNz
aW9uKSAiIFdIRVJFDQo+IFNlc3Npb25JZD0iKSsxMDsNCj4gLSAgICBxdWVyeSA9IFN5c0FsbG9j
U3RyaW5nTGVuKE5VTEwsIChVSU5UKXF1ZXJ5X2xlbik7DQo+IC0NCj4gLSAgICBpZiAocXVlcnkg
PT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBhbGxvY3F1ZXJ5ZmFpbGVkOw0KPiAtDQo+IC0gICAg
c3dwcmludGZfcyhxdWVyeSxxdWVyeV9sZW4sIEwiU0VMRUNUICogRlJPTSAiDQo+IE9CSkVDVF9O
QU1FX1coU2Vzc2lvbikgTCIgV0hFUkUgU2Vzc2lvbklkPSVkIiwgdmFyLnVpbnRWYWwpOw0KPiAt
DQo+IC0gICAgc2Vzc2lvbnMgPSBydW5YU1F1ZXJ5KHdtaSwgcXVlcnkgKTsNCj4gLSAgICBTeXNG
cmVlU3RyaW5nKHF1ZXJ5KTsNCj4gLQ0KPiAtICAgIGlmIChzZXNzaW9ucykgew0KPiAtICAgICAg
ICBJV2JlbUNsYXNzT2JqZWN0ICpyZXR1cm5lZE9iamVjdDsNCj4gLSAgICAgICAgVUxPTkcgY291
bnQ7DQo+IC0gICAgICAgIGhyZXMgPSBzZXNzaW9ucy0+TmV4dChXQkVNX0lORklOSVRFLCAxLCAm
cmV0dXJuZWRPYmplY3QsICZjb3VudCk7DQo+IC0gICAgICAgIHNlc3Npb25zLT5SZWxlYXNlKCk7
DQo+IC0gICAgICAgIGlmIChjb3VudD4wKSB7DQo+IC0gICAgICAgICAgICByZXR1cm4gcmV0dXJu
ZWRPYmplY3Q7DQo+IC0gICAgICAgIH0NCj4gLQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIG91dE1l
dGhvZEluc3QtPlJlbGVhc2UoKTsNCj4gLSAgICBWYXJpYW50Q2xlYXIoJnZhcik7DQo+IC0gICAg
aW5NZXRob2RJbnN0LT5SZWxlYXNlKCk7DQo+IC0gICAgaW5NZXRob2QtPlJlbGVhc2UoKTsNCj4g
LSAgICBiYXNlLT5SZWxlYXNlKCk7DQo+IC0gICAgYmFzZWNsYXNzLT5SZWxlYXNlKCk7DQo+IC0g
ICAgcmV0dXJuIE5VTEw7DQo+IC0NCj4gLWFsbG9jcXVlcnlmYWlsZWQ6DQo+IC1vdXRtZXRob2Rn
ZXRmYWlsZWQ6DQo+IC0gICAgb3V0TWV0aG9kSW5zdC0+UmVsZWFzZSgpOw0KPiAtDQo+IC1tZXRo
b2RleGVjYWRkc2Vzc2lvbmZhaWxlZDoNCj4gLW1ldGhvZHB1dGZhaWxlZDoNCj4gLSAgICBWYXJp
YW50Q2xlYXIoJnZhcik7DQo+IC0NCj4gLWZvcm1hdG5hbWVic3RyZmFpbGVkOg0KPiAtICAgIGlu
TWV0aG9kSW5zdC0+UmVsZWFzZSgpOw0KPiAtaW5tZXRob2RzcGF3bmZhaWxlZDoNCj4gLSAgICBp
bk1ldGhvZC0+UmVsZWFzZSgpOw0KPiAtDQo+IC0NCj4gLWdldG1ldGhvZGFkZHNlc3Npb25mYWls
ZWQ6DQo+IC0gICAgYmFzZWNsYXNzLT5SZWxlYXNlKCk7DQo+IC0NCj4gLWdldGJhc2VjbGFzc2Zh
aWxlZDoNCj4gLSAgICBiYXNlLT5SZWxlYXNlKCk7DQo+IC0NCj4gLWdldGJhc2VmYWlsZWQ6DQo+
IC0NCj4gLQ0KPiAtZm9ybWF0c2Vzc2lvbmJzdHJmYWlsZWQ6DQo+IC0gICAgcmV0dXJuIE5VTEw7
DQo+IC19DQo+IC0NCj4gLUlXYmVtQ2xhc3NPYmplY3QqIHNlc3Npb25NZXRob2RTdGFydChXTUlB
Y2Nlc3Nvcioqd21pLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHdjaGFyX3QgKm1ldGhvZG5hbWUpDQo+IC17DQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCAq
aW5NZXRob2Q7DQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCAqaW5NZXRob2RJbnN0ID0gTlVMTDsN
Cj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICpzZXNzaW9uQ2xhc3M7DQo+IC0gICAgSFJFU1VMVCBo
cjsNCj4gLQ0KPiAtICAgIEFTU0VSVCh3bWkgIT0gTlVMTCk7DQo+IC0NCj4gLSAgICBzZXNzaW9u
Q2xhc3MgPSBnZXRDbGFzcyh3bWksIE9CSkVDVF9OQU1FX1coU2Vzc2lvbikpOw0KPiAtICAgIGlm
IChzZXNzaW9uQ2xhc3MgPT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBnZXRjbGFzc2ZhaWxlZDsN
Cj4gLQ0KPiAtICAgIGhyID0gc2Vzc2lvbkNsYXNzLT5HZXRNZXRob2QobWV0aG9kbmFtZSwwLCZp
bk1ldGhvZCwgTlVMTCk7DQo+IC0gICAgaWYgKEZBSUxFRChocikpDQo+IC0gICAgICAgIGdvdG8g
Z2V0bWV0aG9kZmFpbGVkOw0KPiAtDQo+IC0gICAgaHIgPSBpbk1ldGhvZC0+U3Bhd25JbnN0YW5j
ZSgwLCAmaW5NZXRob2RJbnN0KTsNCj4gLSAgICBpZiAoRkFJTEVEKGhyKSkNCj4gLSAgICAgICAg
Z290byBzcGF3bmluc3RhbmNlZmFpbGVkOw0KPiAtDQo+IC0gICAgaW5NZXRob2QtPlJlbGVhc2Uo
KTsNCj4gLQ0KPiAtICAgIHNlc3Npb25DbGFzcy0+UmVsZWFzZSgpOw0KPiAtICAgIHJldHVybiBp
bk1ldGhvZEluc3Q7DQo+IC0NCj4gLQ0KPiAtc3Bhd25pbnN0YW5jZWZhaWxlZDoNCj4gLSAgICBp
bk1ldGhvZC0+UmVsZWFzZSgpOw0KPiAtDQo+IC1nZXRtZXRob2RmYWlsZWQ6DQo+IC0gICAgc2Vz
c2lvbkNsYXNzLT5SZWxlYXNlKCk7DQo+IC0NCj4gLWdldGNsYXNzZmFpbGVkOg0KPiAtICAgIHJl
dHVybiBOVUxMOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLWNoYXIgKiBic3RyVG9DaGFyKEJTVFIgYnN0
LCBzaXplX3QgKmxlbikgew0KPiAtICAgICpsZW4gPSB3Y3NsZW4oYnN0KTsNCj4gLSAgICBjaGFy
ICpzcGFjZSA9IChjaGFyICopWHNBbGxvYygqbGVuKzEpOw0KPiAtICAgIGlmIChzcGFjZSkNCj4g
LSAgICAgICAgd2NzdG9tYnNfcyhsZW4sIHNwYWNlLCAqbGVuKzEsIGJzdCwgIF9UUlVOQ0FURSk7
DQo+IC0gICAgcmV0dXJuIHNwYWNlOw0KPiAtfQ0KPiAtDQo+IC12b2lkIFdtaVNlc3Npb25Mb2co
V01JQWNjZXNzb3IqKiB3bWksICB2b2lkICoqc2Vzc2lvbmhhbmRsZSxjb25zdA0KPiBjaGFyICpm
bXQsIHZhX2xpc3QgYXJncykgew0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKipzZXNzaW9uID0g
KElXYmVtQ2xhc3NPYmplY3QgKiopc2Vzc2lvbmhhbmRsZTsNCj4gLQ0KPiAtICAgIGNoYXIqIG1l
c3NhZ2UgPSBmb3JtYXRDaGFyU3RySW50KGZtdCxhcmdzKTsNCj4gLQ0KPiAtICAgIE91dHB1dERl
YnVnU3RyaW5nKG1lc3NhZ2UpOw0KPiAtICAgIGlmICgoKCp3bWkpPT1OVUxMKSB8fCAoKCpzZXNz
aW9uaGFuZGxlKT09TlVMTCkgKSB7DQo+IC0gICAgICAgIGdvdG8gbm93bWk7DQo+IC0gICAgfQ0K
PiAtICAgIFZBUklBTlQgdm1lc3NhZ2U7DQo+IC0gICAgaWYgKHNldFZhcmlhbnRTdHJpbmcoJnZt
ZXNzYWdlLCBtZXNzYWdlKSkNCj4gLSAgICAgICAgZ290byBzZXR2bWVzc2FnZTsNCj4gLQ0KPiAt
ICAgIElXYmVtQ2xhc3NPYmplY3QgKmluTWV0aG9kSW5zdCA9IHNlc3Npb25NZXRob2RTdGFydCgg
d21pLCBMIkxvZyIpOw0KPiAtICAgIGlmICghaW5NZXRob2RJbnN0KQ0KPiAtICAgICAgICBnb3Rv
IHNlc3Npb25zdGFydDsNCj4gLQ0KPiAtICAgICBpZiAoRkFJTEVEKGluTWV0aG9kSW5zdC0+UHV0
KEwiTWVzc2FnZSIsMCwmdm1lc3NhZ2UsMCkpKQ0KPiAtICAgICAgICAgZ290byBtZXRob2RwdXRm
YWlsZWQ7DQo+IC0NCj4gLSAgICAgaWYgKEZBSUxFRChtZXRob2RFeGVjKHdtaSwqc2Vzc2lvbiwg
TCJMb2ciLCBpbk1ldGhvZEluc3QsIE5VTEwpKSkNCj4gLSAgICAgICAgIGdvdG8gbWV0aG9kZXhl
Y2ZhaWxlZDsNCj4gLQ0KPiAtbWV0aG9kZXhlY2ZhaWxlZDoNCj4gLW1ldGhvZHB1dGZhaWxlZDoN
Cj4gLSAgICAgaW5NZXRob2RJbnN0LT5SZWxlYXNlKCk7DQo+IC0NCj4gLXNlc3Npb25zdGFydDoN
Cj4gLSAgICBWYXJpYW50Q2xlYXIoJnZtZXNzYWdlKTsNCj4gLQ0KPiAtc2V0dm1lc3NhZ2U6DQo+
IC1ub3dtaToNCj4gLSAgICByZXR1cm47DQo+IC19DQo+IC0NCj4gLWNoYXIqIFdtaVNlc3Npb25H
ZXRFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwgdm9pZCAqKnNlc3Npb25oYW5kbGUsDQo+IC0gICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKiBwYXRoLCBzaXplX3QqIGxlbikNCj4gLXsNCj4gLSAgICAq
bGVuID0gMDsNCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICoqc2Vzc2lvbiA9IChJV2JlbUNsYXNz
T2JqZWN0ICoqKXNlc3Npb25oYW5kbGU7DQo+IC0NCj4gLSAgICBWQVJJQU5UIHZwYXRoOw0KPiAt
ICAgIGlmIChzZXRWYXJpYW50U3RyaW5nKCZ2cGF0aCwgcGF0aCkpDQo+IC0gICAgICAgIGdvdG8g
c2V0dnBhdGg7DQo+IC0NCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICpvdXRNZXRob2RJbnN0ID0g
TlVMTDsNCj4gLQ0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKmluTWV0aG9kSW5zdCA9IHNlc3Np
b25NZXRob2RTdGFydCggd21pLA0KPiBMIkdldFZhbHVlIik7DQo+IC0gICAgaWYgKGluTWV0aG9k
SW5zdCA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIHNlc3Npb25tZXRob2RzdGFydGZhaWxlZDsN
Cj4gLQ0KPiAtICAgIGlmIChGQUlMRUQoaW5NZXRob2RJbnN0LT5QdXQoTCJQYXRoTmFtZSIsMCwm
dnBhdGgsMCkpKQ0KPiAtICAgICAgICBnb3RvIG1ldGhvZGV4ZWNmYWlsZWQ7DQo+IC0NCj4gLSAg
ICBtZXRob2RFeGVjKHdtaSwqc2Vzc2lvbiwgTCJHZXRWYWx1ZSIsIGluTWV0aG9kSW5zdCwNCj4g
Jm91dE1ldGhvZEluc3QpOw0KPiAtICAgIGlmIChvdXRNZXRob2RJbnN0PT1OVUxMKQ0KPiAtICAg
ICAgICBnb3RvIHNlc3Npb25FeGVjOw0KPiAtDQo+IC0gICAgVkFSSUFOVCBvdXR2YWw7DQo+IC0g
ICAgVmFyaWFudEluaXQoJm91dHZhbCk7DQo+IC0NCj4gLSAgICBpZiAoRkFJTEVEKG91dE1ldGhv
ZEluc3QtPkdldChMInZhbHVlIiwgMCwgJm91dHZhbCwgTlVMTCwgTlVMTCkpKQ0KPiAtICAgICAg
ICBnb3RvIG1ldGhvZGdldGZhaWxlZDsNCj4gLQ0KPiAtICAgIGNoYXIgKnNwYWNlID0gTlVMTDsN
Cj4gLQ0KPiAtICAgIGlmIChWX1ZUKCZvdXR2YWwpID09IFZUX0JTVFIpDQo+IC0gICAgew0KPiAt
ICAgICAgICBzcGFjZSA9IGJzdHJUb0NoYXIob3V0dmFsLmJzdHJWYWwsIGxlbik7DQo+IC0gICAg
fQ0KPiAtDQo+IC0gICAgb3V0TWV0aG9kSW5zdC0+UmVsZWFzZSgpOw0KPiAtICAgIGluTWV0aG9k
SW5zdC0+UmVsZWFzZSgpOw0KPiAtICAgIFZhcmlhbnRDbGVhcigmdnBhdGgpOw0KPiAtICAgIFZh
cmlhbnRDbGVhcigmb3V0dmFsKTsNCj4gLSAgICByZXR1cm4gc3BhY2U7DQo+IC0NCj4gLW1ldGhv
ZGdldGZhaWxlZDoNCj4gLSAgICBvdXRNZXRob2RJbnN0LT5SZWxlYXNlKCk7DQo+IC0NCj4gLW1l
dGhvZGV4ZWNmYWlsZWQ6DQo+IC1zZXNzaW9uRXhlYzoNCj4gLSAgICBpbk1ldGhvZEluc3QtPlJl
bGVhc2UoKTsNCj4gLQ0KPiAtc2Vzc2lvbm1ldGhvZHN0YXJ0ZmFpbGVkOg0KPiAtICAgIFZhcmlh
bnRDbGVhcigmdnBhdGgpOw0KPiAtDQo+IC1zZXR2cGF0aDoNCj4gLSAgICByZXR1cm4gTlVMTDsN
Cj4gLX0NCj4gLQ0KPiAtaW50IFdtaVNlc3Npb25TZXRFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwg
IHZvaWQgKipzZXNzaW9uaGFuZGxlLA0KPiAtICAgICAgICAgICAgICBjb25zdCBjaGFyKnBhdGgs
IGNvbnN0IGNoYXIgKiB2YWx1ZSwgc2l6ZV90IGxlbikNCj4gLXsNCj4gLSAgICBpbnQgZXJyID0g
LTE7DQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCAqKnNlc3Npb24gPSAoSVdiZW1DbGFzc09iamVj
dCAqKilzZXNzaW9uaGFuZGxlOw0KPiAtDQo+IC0gICAgVkFSSUFOVCB2cGF0aDsNCj4gLSAgICBp
ZiAoc2V0VmFyaWFudFN0cmluZygmdnBhdGgsIHBhdGgpKQ0KPiAtICAgICAgICBnb3RvIHNldHZw
YXRoOw0KPiAtDQo+IC0gICAgVkFSSUFOVCB2dmFsdWU7DQo+IC0gICAgaWYgKHNldFZhcmlhbnRT
dHJpbmcoJnZ2YWx1ZSwgdmFsdWUpKQ0KPiAtICAgICAgICBnb3RvIHNldHZ2YWx1ZTsNCj4gLQ0K
PiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKm91dE1ldGhvZEluc3Q7DQo+IC0NCj4gLSAgICBJV2Jl
bUNsYXNzT2JqZWN0ICppbk1ldGhvZEluc3QgPSBzZXNzaW9uTWV0aG9kU3RhcnQoIHdtaSwNCj4g
TCJTZXRWYWx1ZSIpOw0KPiAtICAgIGlmICghaW5NZXRob2RJbnN0KQ0KPiAtICAgICAgICBnb3Rv
IHNlc3Npb25zdGFydDsNCj4gLQ0KPiAtICAgIGluTWV0aG9kSW5zdC0+UHV0KEwiUGF0aE5hbWUi
LDAsJnZwYXRoLDApOw0KPiAtICAgIGluTWV0aG9kSW5zdC0+UHV0KEwidmFsdWUiLDAsJnZ2YWx1
ZSwwKTsNCj4gLQ0KPiAtICAgIGlmIChGQUlMRUQobWV0aG9kRXhlYyh3bWksKnNlc3Npb24sIEwi
U2V0VmFsdWUiLCBpbk1ldGhvZEluc3QsDQo+ICZvdXRNZXRob2RJbnN0KSkpDQo+IC0gICAgICAg
IGdvdG8gbWV0aG9kZXhlY2ZhaWxlZDsNCj4gLQ0KPiAtICAgIGlmIChvdXRNZXRob2RJbnN0IT1O
VUxMKQ0KPiAtICAgICAgICBvdXRNZXRob2RJbnN0LT5SZWxlYXNlKCk7DQo+IC0NCj4gLSAgICBp
bk1ldGhvZEluc3QtPlJlbGVhc2UoKTsNCj4gLSAgICBTeXNGcmVlU3RyaW5nKHZ2YWx1ZS5ic3Ry
VmFsKTsNCj4gLSAgICBTeXNGcmVlU3RyaW5nKHZwYXRoLmJzdHJWYWwpOw0KPiAtDQo+IC0gICAg
cmV0dXJuIDA7DQo+IC0NCj4gLW1ldGhvZGV4ZWNmYWlsZWQ6DQo+IC0gICAgWHNMb2coIldtaVNl
c3Npb25TZXRFbnRyeTpNZXRob2RFeGVjIEZhaWxlZCIpOw0KPiAtICAgIGluTWV0aG9kSW5zdC0+
UmVsZWFzZSgpOw0KPiAtDQo+IC1zZXNzaW9uc3RhcnQ6DQo+IC0gICAgWHNMb2coIldtaVNlc3Np
b25TZXRFbnRyeTpTZXNzaW9uU3RhcnQgRmFpbGVkIik7DQo+IC0gICAgU3lzRnJlZVN0cmluZyh2
dmFsdWUuYnN0clZhbCk7DQo+IC0NCj4gLXNldHZ2YWx1ZToNCj4gLSAgICBYc0xvZygiV21pU2Vz
c2lvblNldEVudHJ5OlNldFZWYWx1ZSBGYWlsZWQiKTsNCj4gLSAgICBTeXNGcmVlU3RyaW5nKHZw
YXRoLmJzdHJWYWwpOw0KPiAtDQo+IC1zZXR2cGF0aDoNCj4gLSAgICBYc0xvZygiV21pU2Vzc2lv
blNldEVudHJ5OlNldFZQYXRoIEZhaWxlZCAiKTsNCj4gLSAgICByZXR1cm4gZXJyOw0KPiAtfQ0K
PiAtDQo+IC1pbnQgV21pU2Vzc2lvblNldEVudHJ5KFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZCAq
KnNlc3Npb25oYW5kbGUsDQo+IC0gICAgICAgICAgICAgIGNvbnN0IGNoYXIqcGF0aCwgY29uc3Qg
Y2hhciAqIHZhbHVlKSB7DQo+IC0gICAgcmV0dXJuIFdtaVNlc3Npb25TZXRFbnRyeSh3bWksIHNl
c3Npb25oYW5kbGUsIHBhdGgsIHZhbHVlLA0KPiBzdHJsZW4odmFsdWUpKTsNCj4gLX0NCj4gLQ0K
PiAtaW50IFdtaVNlc3Npb25SZW1vdmVFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipz
ZXNzaW9uaGFuZGxlLA0KPiAtICAgICAgICAgICAgICBjb25zdCBjaGFyKnBhdGgpew0KPiAtDQo+
IC0gICAgaW50IGVyciA9IC0xOw0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKipzZXNzaW9uID0g
KElXYmVtQ2xhc3NPYmplY3QgKiopc2Vzc2lvbmhhbmRsZTsNCj4gLQ0KPiAtICAgIFZBUklBTlQg
dnBhdGg7DQo+IC0gICAgaWYgKHNldFZhcmlhbnRTdHJpbmcoJnZwYXRoLCBwYXRoKSkNCj4gLSAg
ICAgICAgZ290byBzZXR2cGF0aDsNCj4gLQ0KPiAtICAgIElXYmVtQ2xhc3NPYmplY3QgKmluTWV0
aG9kSW5zdCA9IHNlc3Npb25NZXRob2RTdGFydCggd21pLA0KPiBMIlJlbW92ZVZhbHVlIik7DQo+
IC0gICAgaWYgKCFpbk1ldGhvZEluc3QpDQo+IC0gICAgICAgIGdvdG8gc2Vzc2lvbnN0YXJ0Ow0K
PiAtDQo+IC0gICAgaWYgKEZBSUxFRChpbk1ldGhvZEluc3QtPlB1dChMIlBhdGhOYW1lIiwwLCZ2
cGF0aCwwKSkpDQo+IC0gICAgICAgIGdvdG8gbWV0aG9kcHV0ZmFpbGVkOw0KPiAtDQo+IC0gICAg
SVdiZW1DbGFzc09iamVjdCogb3V0TWV0aG9kSW5zdDsNCj4gLQ0KPiAtICAgIGlmIChGQUlMRUQo
bWV0aG9kRXhlYyh3bWksKnNlc3Npb24sIEwiUmVtb3ZlVmFsdWUiLCBpbk1ldGhvZEluc3QsDQo+
ICZvdXRNZXRob2RJbnN0KSkpDQo+IC0gICAgICAgIGdvdG8gbWV0aG9kZXhlY2ZhaWxlZDsNCj4g
LQ0KPiAtICAgIGlmIChvdXRNZXRob2RJbnN0ICE9IE5VTEwpDQo+IC0gICAgICAgIG91dE1ldGhv
ZEluc3QtPlJlbGVhc2UoKTsNCj4gLQ0KPiAtICAgIGVycj0wOw0KPiAtICAgIGluTWV0aG9kSW5z
dC0+UmVsZWFzZSgpOw0KPiAtICAgIFZhcmlhbnRDbGVhcigmdnBhdGgpOw0KPiAtICAgIHJldHVy
biBlcnI7DQo+IC1tZXRob2RleGVjZmFpbGVkOg0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9f
RlVOQ1RJT05fXyAiIE1ldGhvZEV4ZWNGYWlsZWQiKTsNCj4gLW1ldGhvZHB1dGZhaWxlZDoNCj4g
LSAgICBPdXRwdXREZWJ1Z1N0cmluZyhfX0ZVTkNUSU9OX18gIiBNZXRob2RQdXRGYWlsZWQiKTsN
Cj4gLSAgICBpbk1ldGhvZEluc3QtPlJlbGVhc2UoKTsNCj4gLQ0KPiAtc2Vzc2lvbnN0YXJ0Og0K
PiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9fRlVOQ1RJT05fXyAiIFNlc3Npb25TdGFydEZhaWxl
ZCIpOw0KPiAtICAgIFZhcmlhbnRDbGVhcigmdnBhdGgpOw0KPiAtDQo+IC0gICAgT3V0cHV0RGVi
dWdTdHJpbmcoX19GVU5DVElPTl9fICIgU2Vzc2lvbkV4ZWNGYWlsZWQiKTsNCj4gLXNldHZwYXRo
Og0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9fRlVOQ1RJT05fXyAiIFNldFZwYXRoRmFpbGVk
Iik7DQo+IC0gICAgcmV0dXJuIGVycjsNCj4gLX0NCj4gLQ0KPiAtDQo+IC1CT09MIFdtaVNlc3Np
b25VbndhdGNoKFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZCAqKnNlc3Npb25oYW5kbGUsDQo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqd2F0Y2hoYW5kbGUpIHsNCj4gLSAgICBJV2Jl
bUNsYXNzT2JqZWN0ICoqc2Vzc2lvbiA9IChJV2JlbUNsYXNzT2JqZWN0ICoqKXNlc3Npb25oYW5k
bGU7DQo+IC0gICAgWHNMb2coIlVud2F0Y2ggJXAiLHdhdGNoaGFuZGxlKTsNCj4gLSAgICBXYXRj
aFNpbmsgKiBzaW5rID0gKFdhdGNoU2luayAqKXdhdGNoaGFuZGxlOw0KPiAtDQo+IC0gICAgVkFS
SUFOVCB2cGF0aDsNCj4gLSAgICBpZiAoc2V0VmFyaWFudFN0cmluZygmdnBhdGgsIHNpbmstPnBh
dGgpKQ0KPiAtICAgICAgICBnb3RvIHNldHZwYXRoOw0KPiAtDQo+IC0gICAgSVdiZW1DbGFzc09i
amVjdCAqb3V0TWV0aG9kSW5zdDsNCj4gLSAgICBJV2JlbUNsYXNzT2JqZWN0ICppbk1ldGhvZElu
c3QgPSBzZXNzaW9uTWV0aG9kU3RhcnQoIHdtaSwNCj4gTCJSZW1vdmVXYXRjaCIpOw0KPiAtICAg
IGlmICghaW5NZXRob2RJbnN0KQ0KPiAtICAgICAgICBnb3RvIHNlc3Npb25zdGFydDsNCj4gLQ0K
PiAtICAgIGluTWV0aG9kSW5zdC0+UHV0KEwiUGF0aE5hbWUiLDAsJnZwYXRoLDApOw0KPiAtICAg
IGlmIEZBSUxFRChtZXRob2RFeGVjKHdtaSwqc2Vzc2lvbiwgTCJSZW1vdmVXYXRjaCIsIGluTWV0
aG9kSW5zdCwNCj4gJm91dE1ldGhvZEluc3QpKQ0KPiAtICAgICAgICBnb3RvIG1ldGhvZGV4ZWNm
YWlsZWQ7DQo+IC0gICAgaWYgKG91dE1ldGhvZEluc3Q9PU5VTEwpDQo+IC0gICAgICAgIGdvdG8g
c2Vzc2lvbmV4ZWNmYWlsZWQ7DQo+IC0NCj4gLSAgICBvdXRNZXRob2RJbnN0LT5SZWxlYXNlKCk7
DQo+IC0NCj4gLW1ldGhvZGV4ZWNmYWlsZWQ6DQo+IC1zZXNzaW9uZXhlY2ZhaWxlZDoNCj4gLSAg
ICBpbk1ldGhvZEluc3QtPlJlbGVhc2UoKTsNCj4gLQ0KPiAtc2Vzc2lvbnN0YXJ0Og0KPiAtc2V0
dnBhdGg6DQo+IC0gICAgc2luay0+UmVsZWFzZSgpOw0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAt
fQ0KPiAtDQo+IC1CT09MIFdtaVNlc3Npb25TdGFydChXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQg
KipzZXNzaW9uaGFuZGxlLCBjb25zdA0KPiBjaGFyKiBzZXNzaW9ubmFtZSkNCj4gLXsNCj4gLSAg
ICBJV2JlbUNsYXNzT2JqZWN0ICoqc2Vzc2lvbiA9IChJV2JlbUNsYXNzT2JqZWN0ICoqKXNlc3Np
b25oYW5kbGU7DQo+IC0gICAgaWYgKCgqc2Vzc2lvbiA9IG9wZW5TZXNzaW9uKHdtaSwgc2Vzc2lv
bm5hbWUpKSA9PSBOVUxMKSB7DQo+IC0gICAgICAgIHJldHVybiBmYWxzZTsNCj4gLSAgICB9DQo+
IC0gICAgcmV0dXJuIHRydWU7DQo+IC19DQo+IC0NCj4gLQ0KPiAtQk9PTCBXbWlTZXNzaW9uRW5k
KFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZCAqc2Vzc2lvbmhhbmRsZSkNCj4gLXsNCj4gLSAgICBI
UkVTVUxUIGhyOw0KPiAtICAgIEFTU0VSVCgqd21pICE9IE5VTEwpOw0KPiAtDQo+IC0gICAgSVdi
ZW1DbGFzc09iamVjdCAqc2Vzc2lvbiA9IChJV2JlbUNsYXNzT2JqZWN0ICopc2Vzc2lvbmhhbmRs
ZTsNCj4gLSAgICBpZiAoc2Vzc2lvbj09TlVMTCkgew0KPiAtICAgICAgICByZXR1cm4gZmFsc2U7
DQo+IC0gICAgfQ0KPiAtICAgIGhyID0gbWV0aG9kRXhlYyh3bWksIHNlc3Npb24sIEwiRW5kU2Vz
c2lvbiIsIE5VTEwsTlVMTCk7DQo+IC0gICAgaWYgRkFJTEVEKGhyKQ0KPiAtICAgICAgICBnb3Rv
IGV4ZWNtZXRob2RmYWlsZWQ7DQo+IC0gICAgc2Vzc2lvbi0+UmVsZWFzZSgpOw0KPiAtICAgIHJl
dHVybiB0cnVlOw0KPiAtDQo+IC1leGVjbWV0aG9kZmFpbGVkOg0KPiAtICAgIHJldHVybiBmYWxz
ZTsNCj4gLQ0KPiAtfQ0KPiAtDQo+IC12b2lkICpXbWlTZXNzaW9uV2F0Y2goV01JQWNjZXNzb3Iq
KiB3bWksICB2b2lkICoqc2Vzc2lvbmhhbmRsZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpwYXRoLCBIQU5ETEUgZXZlbnQsIEhBTkRMRSBlcnJvcmV2ZW50KSB7DQo+IC0N
Cj4gLSAgICBIUkVTVUxUIGhyOw0KPiAtDQo+IC0gICAgSVdiZW1DbGFzc09iamVjdCAqKnNlc3Np
b24gPSAoSVdiZW1DbGFzc09iamVjdCAqKilzZXNzaW9uaGFuZGxlOw0KPiAtDQo+IC0gICAgQVNT
RVJUKCgqd21pKSAhPSBOVUxMKTsNCj4gLSAgICBBU1NFUlQoKCpzZXNzaW9uaGFuZGxlKSAhPSBO
VUxMKTsNCj4gLQ0KPiAtICAgIFdhdGNoU2luayAqIHNpbmsgPSBuZXcgV2F0Y2hTaW5rKGV2ZW50
LCBlcnJvcmV2ZW50LCBwYXRoKTsNCj4gLSAgICBCU1RSIHF1ZXJ5PWZvcm1hdEJzdHIoIlNFTEVD
VCAqIGZyb20gIiBPQkpFQ1RfTkFNRV9BKFdhdGNoRXZlbnQpDQo+ICIgV0hFUkUgRXZlbnRJZD1c
IiVzXCIiLCBwYXRoKTsNCj4gLSAgICBpZiAocXVlcnkgPT0gTlVMTCkgew0KPiAtICAgICAgICBn
b3RvIGZvcm1hdHN0cmluZ2ZhaWxlZDsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBociA9ICgqd21p
KS0+bXBYU1N2Yy0+RXhlY05vdGlmaWNhdGlvblF1ZXJ5QXN5bmMoTCJXUUwiLA0KPiBxdWVyeSww
LE5VTEwsIHNpbmspOw0KPiAtICAgIGlmIChGQUlMRUQoaHIpKXsNCj4gLSAgICAgICAgKndtaSA9
IE5VTEw7DQo+IC0gICAgICAgIGdvdG8gd21pZmFpbGVkOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAg
IFZBUklBTlQgdnBhdGg7DQo+IC0gICAgaWYgKHNldFZhcmlhbnRTdHJpbmcoJnZwYXRoLCBwYXRo
KSl7DQo+IC0gICAgICAgIGdvdG8gc2V0dnBhdGg7DQo+IC0gICAgfQ0KPiAtDQo+IC0NCj4gLSAg
ICBJV2JlbUNsYXNzT2JqZWN0ICppbk1ldGhvZEluc3QgPSBzZXNzaW9uTWV0aG9kU3RhcnQoIHdt
aSwNCj4gTCJTZXRXYXRjaCIpOw0KPiAtICAgIGlmICghaW5NZXRob2RJbnN0KQ0KPiAtICAgICAg
ICBnb3RvIHNlc3Npb25zdGFydDsNCj4gLQ0KPiAtICAgIGhyID0gaW5NZXRob2RJbnN0LT5QdXQo
TCJQYXRoTmFtZSIsMCwmdnBhdGgsMCk7DQo+IC0gICAgaWYgKEZBSUxFRChocikpDQo+IC0gICAg
ICAgIGdvdG8gbWV0aG9kcHV0ZmFpbGVkOw0KPiAtDQo+IC0gICAgaHIgPSBtZXRob2RFeGVjKHdt
aSwqc2Vzc2lvbiwgTCJTZXRXYXRjaCIsIGluTWV0aG9kSW5zdCwgTlVMTCk7DQo+IC0gICAgaWYg
KEZBSUxFRChocikpDQo+IC0gICAgICAgIGdvdG8gbWV0aG9kZXhlY2ZhaWxlZDsNCj4gLQ0KPiAt
ICAgIFZhcmlhbnRDbGVhcigmdnBhdGgpOw0KPiAtDQo+IC0gICAgU3lzRnJlZVN0cmluZyhxdWVy
eSk7DQo+IC0NCj4gLSAgICByZXR1cm4gc2luazsNCj4gLQ0KPiAtDQo+IC1tZXRob2RleGVjZmFp
bGVkOg0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9fRlVOQ1RJT05fXyAiIDogbWV0aG9kZXhl
Y2ZhaWxlZFxuIik7DQo+IC1tZXRob2RwdXRmYWlsZWQ6DQo+IC0gICAgT3V0cHV0RGVidWdTdHJp
bmcoX19GVU5DVElPTl9fICIgOiBtZXRob2RwdXRmYWlsZWRcbiIpOw0KPiAtICAgIGluTWV0aG9k
SW5zdC0+UmVsZWFzZSgpOw0KPiAtc2Vzc2lvbnN0YXJ0Og0KPiAtICAgIE91dHB1dERlYnVnU3Ry
aW5nKF9fRlVOQ1RJT05fXyAiIDogc2Vzc2lvbnN0YXJ0XG4iKTsNCj4gLSAgICBWYXJpYW50Q2xl
YXIoJnZwYXRoKTsNCj4gLXNldHZwYXRoOg0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKF9fRlVO
Q1RJT05fXyAiIDogc2V0dnBhdGhcbiIpOw0KPiAtd21pZmFpbGVkOg0KPiAtICAgIFN5c0ZyZWVT
dHJpbmcocXVlcnkpOw0KPiAtZm9ybWF0c3RyaW5nZmFpbGVkOg0KPiAtICAgIE91dHB1dERlYnVn
U3RyaW5nKF9fRlVOQ1RJT05fXyAiIDogZm9ybWF0c3RyaW5nZmFpbGVkXG4iKTsNCj4gLSAgICBk
ZWxldGUgc2luazsNCj4gLSAgICByZXR1cm4gTlVMTDsNCj4gLX0NCj4gLQ0KPiAtdm9pZCAqV21p
VW5zdXNwZW5kZWRFdmVudFdhdGNoKFdNSUFjY2Vzc29yICoqd21pLCBIQU5ETEUgZXZlbnQsDQo+
IEhBTkRMRSBlcnJvcmV2ZW50KQ0KPiAtew0KPiAtICAgIEhSRVNVTFQgaHI7DQo+IC0NCj4gLSAg
ICBBU1NFUlQoKndtaSAhPSBOVUxMKTsNCj4gLQ0KPiAtICAgIFdhdGNoU2luayAqIHNpbmsgPSBu
ZXcgV2F0Y2hTaW5rKGV2ZW50LCBlcnJvcmV2ZW50LCBOVUxMKTsNCj4gLSAgICBCU1RSIHF1ZXJ5
PWZvcm1hdEJzdHIoIlNFTEVDVCAqIGZyb20gIg0KPiBPQkpFQ1RfTkFNRV9BKFVuc3VzcGVuZGVk
RXZlbnQpKTsNCj4gLSAgICBpZiAocXVlcnk9PU5VTEwpIHsNCj4gLSAgICAgICAgZ290byBmb3Jt
YXRzdHJpbmdmYWlsZWQ7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgaHIgPSAoKndtaSktPm1wWFNT
dmMtPkV4ZWNOb3RpZmljYXRpb25RdWVyeUFzeW5jKEwiV1FMIiwNCj4gcXVlcnksMCxOVUxMLCBz
aW5rKTsNCj4gLSAgICBpZiBGQUlMRUQoaHIpDQo+IC0gICAgICAgIGdvdG8gYXN5bmNxdWVyeWZh
aWxlZDsNCj4gLQ0KPiAtICAgIFN5c0ZyZWVTdHJpbmcocXVlcnkpOw0KPiAtICAgIHJldHVybiBz
aW5rOw0KPiAtDQo+IC1hc3luY3F1ZXJ5ZmFpbGVkOg0KPiAtICAgIFN5c0ZyZWVTdHJpbmcocXVl
cnkpOw0KPiAtZm9ybWF0c3RyaW5nZmFpbGVkOg0KPiAtICAgIGRlbGV0ZSBzaW5rOw0KPiAtICAg
IHJldHVybiBOVUxMOw0KPiAtfQ0KPiAtDQo+IGRpZmYgLS1naXQgYS9zcmMvd2luMzJzdHViYWdl
bnQvV21pQWNjZXNzb3IuaA0KPiBiL3NyYy93aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5oDQo+
IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCBlMzdlZjcxLi4wMDAwMDAwDQo+IC0t
LSBhL3NyYy93aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5oDQo+ICsrKyAvZGV2L251bGwNCj4g
QEAgLTEsODggKzAsMCBAQA0KPiAtLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMu
DQo+IC0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+IC0gKiB3aXRoIG9yIHdpdGhv
dXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+IC0gKiB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICogICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+IC0gKiAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+IC0gKiAgICAg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gLSAqDQo+IC0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4g
LSAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsDQo+IC0gKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRg0KPiAtICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+IC0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+IC0gKiBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gLSAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLA0KPiAtICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HDQo+IC0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+IC0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+IC0gKiBTVUNIIERBTUFHRS4NCj4gLSAqLw0K
PiAtDQo+IC0jaWZuZGVmIF9XTUlBQ0NFU1NPUl9IDQo+IC0jZGVmaW5lIF9XTUlBQ0NFU1NPUl9I
DQo+IC0NCj4gLSNpbmNsdWRlIDxXYmVtaWRsLmg+DQo+IC0jaW5jbHVkZSA8bGlzdD4NCj4gLSNp
bmNsdWRlIDx2ZWN0b3I+DQo+IC0jaW5jbHVkZSA8bWFwPg0KPiAtI2luY2x1ZGUgPHN0cmluZz4N
Cj4gLQ0KPiAtI2luY2x1ZGUgIlhTQWNjZXNzb3IuaCINCj4gLQ0KPiAtdXNpbmcgbmFtZXNwYWNl
IHN0ZDsNCj4gLQ0KPiAtdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90Ow0KPiAtDQo+
IC1zdHJ1Y3QgV01JQWNjZXNzb3I7DQo+IC0NCj4gLWV4dGVybiBzdHJ1Y3QgV01JQWNjZXNzb3Ig
KndtaTsNCj4gLQ0KPiAtZXh0ZXJuIExPTkcgd21pY291bnQ7DQo+IC1CT09MIEluaXRDb20odm9p
ZCk7DQo+IC12b2lkIFJlbGVhc2VDb20odm9pZCk7DQo+IC1CT09MIENvbm5lY3RUb1dNSSh2b2lk
KTsNCj4gLXZvaWQgUmVsZWFzZVdNSUFjY2Vzc29yKHN0cnVjdCBXTUlBY2Nlc3NvciAqKik7DQo+
IC0NCj4gLXZvaWQgVXBkYXRlUHJvY2Vzc0xpc3RJblN0b3JlKFdNSUFjY2Vzc29yICoqd21pKTsN
Cj4gLQ0KPiAtaW50IFdtaVNlc3Npb25TZXRFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQg
KipzZXNzaW9uaGFuZGxlLA0KPiAtICAgICAgICAgICAgICBjb25zdCBjaGFyKnBhdGgsIGNvbnN0
IGNoYXIgKiB2YWx1ZSk7DQo+IC0NCj4gLWludCBXbWlTZXNzaW9uU2V0RW50cnkoV01JQWNjZXNz
b3IqKiB3bWksICB2b2lkICoqc2Vzc2lvbmhhbmRsZSwNCj4gLSAgICAgICAgICAgICAgY29uc3Qg
Y2hhcipwYXRoLCBjb25zdCBjaGFyICogdmFsdWUsIHNpemVfdCBsZW4pOw0KPiAtY2hhciogV21p
U2Vzc2lvbkdldEVudHJ5KFdNSUFjY2Vzc29yKiogd21pLCB2b2lkICoqc2Vzc2lvbmhhbmRsZSwN
Cj4gLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBhdGgsIHNpemVfdCogbGVuKSA7DQo+IC0N
Cj4gLXZvaWQgKldtaVNlc3Npb25XYXRjaChXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipzZXNz
aW9uaGFuZGxlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGgsIEhB
TkRMRSBldmVudCwgSEFORExFIGVycm9yZXZlbnQpOw0KPiAtQk9PTCBXbWlTZXNzaW9uVW53YXRj
aChXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipzZXNzaW9uaGFuZGxlLA0KPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKndhdGNoaGFuZGxlKTsNCj4gLQ0KPiAtaW50IFdtaVNlc3Np
b25SZW1vdmVFbnRyeShXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipzZXNzaW9uaGFuZGxlLA0K
PiAtICAgICAgICAgICAgICBjb25zdCBjaGFyKnBhdGgpOw0KPiAtDQo+IC1jaGFyICoqV21pU2Vz
c2lvbkdldENoaWxkcmVuKFdNSUFjY2Vzc29yKiogd21pLCB2b2lkDQo+ICoqc2Vzc2lvbmhhbmRs
ZSwNCj4gLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBhdGgsIHVuc2lnbmVkICpudW1lbnRy
aWVzKTsNCj4gLQ0KPiAtDQo+IC12b2lkICpXbWlVbnN1c3BlbmRlZEV2ZW50V2F0Y2goV01JQWNj
ZXNzb3IgKip3bWksIEhBTkRMRSBldmVudCwNCj4gSEFORExFIGVycm9yZXZlbnQpOw0KPiAtDQo+
IC1pbnQgV21pU2Vzc2lvblRyYW5zYWN0aW9uQWJvcnQoV01JQWNjZXNzb3IqKiB3bWksICB2b2lk
DQo+ICoqc2Vzc2lvbmhhbmRsZSk7DQo+IC1pbnQgV21pU2Vzc2lvblRyYW5zYWN0aW9uQ29tbWl0
KFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZA0KPiAqKnNlc3Npb25oYW5kbGUpOw0KPiAtaW50IFdt
aVNlc3Npb25UcmFuc2FjdGlvblN0YXJ0KFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZA0KPiAqKnNl
c3Npb25oYW5kbGUpOw0KPiAtQk9PTCBXbWlTZXNzaW9uU3RhcnQoV01JQWNjZXNzb3IqKiB3bWks
ICB2b2lkICoqc2Vzc2lvbmhhbmRsZSwgY29uc3QNCj4gY2hhciAqc2Vzc2lvbm5hbWUpOw0KPiAt
Qk9PTCBXbWlTZXNzaW9uRW5kKFdNSUFjY2Vzc29yKiogd21pLCAgdm9pZCAqc2Vzc2lvbmhhbmRs
ZSk7DQo+IC1GSUxFVElNRSBXbWlHZXRYZW5UaW1lKFdNSUFjY2Vzc29yICoqd21pKTsNCj4gLXZv
aWQgV21pU2Vzc2lvbkxvZyhXTUlBY2Nlc3NvcioqIHdtaSwgIHZvaWQgKipzZXNzaW9uaGFuZGxl
LGNvbnN0DQo+IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsNCj4gLSNlbmRpZg0KPiBkaWZmIC0t
Z2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTQWNjZXNzb3IuY3BwDQo+IGIvc3JjL3dpbjMyc3R1
YmFnZW50L1hTQWNjZXNzb3IuY3BwDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl
eCBjNjBmYjhiLi4wMDAwMDAwDQo+IC0tLSBhL3NyYy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29y
LmNwcA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDIzMCArMCwwIEBADQo+IC0vKiBDb3B5cmln
aHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+
IC0gKg0KPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3JtcywNCj4gLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQNCj4gLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+
IC0gKg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAq
ICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQ0KPiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXINCj4gLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLg0KPiAtICoNCj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLA0KPiAtICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywNCj4gLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUg0KPiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4g
LSAqIFNVQ0ggREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLSNpbmNsdWRlIDx3aW5kb3dzLmg+DQo+
IC0jaW5jbHVkZSAic3RkYWZ4LmgiDQo+IC0jaW5jbHVkZSAiWFNBY2Nlc3Nvci5oIg0KPiAtI2lu
Y2x1ZGUgIldNSUFjY2Vzc29yLmgiDQo+IC0NCj4gLXN0YXRpYyBfX2RlY2xzcGVjKHRocmVhZCkg
dm9pZCAqV21pU2Vzc2lvbkhhbmRsZSA9IE5VTEw7DQo+IC0NCj4gLXN0YXRpYyBMT05HIHZvbGF0
aWxlIHRocmVhZGNvdW50ID0gMDsNCj4gLXN0YXRpYyBfX2RlY2xzcGVjKHRocmVhZCkgTE9ORyBs
b2NhbHRocmVhZGNvdW50ID0gMDsNCj4gLXN0YXRpYyBfX2RlY2xzcGVjKHRocmVhZCkgTE9ORyBs
b2NhbHdtaWNvdW50ID0gMDsNCj4gLQ0KPiAtc3RhdGljIGxvbmcgdXBkYXRlX2NudD0weEYwMDAw
MDAwOw0KPiAtI2RlZmluZSBYRU5TVE9SRV9NQUdJQyAweDdlNmVjMTIzDQo+IC0NCj4gLXZvaWQg
KlhzQWxsb2Moc2l6ZV90IHNpemUpIHsNCj4gLSAgICB2b2lkICpidWY7DQo+IC0NCj4gLSAgICBi
dWYgPSBtYWxsb2Moc2l6ZSArIDgpOw0KPiAtICAgIGlmICghYnVmKSB7DQo+IC0gICAgICAgIFNl
dExhc3RFcnJvcihFUlJPUl9OT1RfRU5PVUdIX01FTU9SWSk7DQo+IC0gICAgICAgIHJldHVybiBO
VUxMOw0KPiAtICAgIH0NCj4gLSAgICBtZW1zZXQoYnVmLCAwLCBzaXplICsgOCk7DQo+IC0gICAg
Kih1bnNpZ25lZCAqKWJ1ZiA9IFhFTlNUT1JFX01BR0lDOw0KPiAtICAgIHJldHVybiAodm9pZCAq
KSgoVUxPTkdfUFRSKWJ1ZiArIDgpOw0KPiAtfQ0KPiAtDQo+IC12b2lkIFhzRnJlZShjb25zdCB2
b2lkICpidWYpIHsNCj4gLSAgICB2b2lkICpvcmlnX2J1ZjsNCj4gLQ0KPiAtICAgIGlmICghYnVm
KQ0KPiAtICAgICAgICByZXR1cm47DQo+IC0gICAgb3JpZ19idWYgPSAodm9pZCAqKSgoVUxPTkdf
UFRSKWJ1ZiAtIDgpOw0KPiAtICAgIGlmICgqKHVuc2lnbmVkICopb3JpZ19idWYgIT0gWEVOU1RP
UkVfTUFHSUMpIHsNCj4gLSAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIlhzRnJlZSgpIGludm9r
ZWQgb24gYmFkIHBvaW50ZXJcbiIpOw0KPiAtICAgICAgICBEZWJ1Z0JyZWFrKCk7DQo+IC0gICAg
fQ0KPiAtICAgIGZyZWUob3JpZ19idWYpOw0KPiAtfQ0KPiAtDQo+IC12b2lkIEdldFhlblRpbWUo
RklMRVRJTUUgKm5vdykNCj4gLXsNCj4gLSAgICAqbm93ID0gV21pR2V0WGVuVGltZSgmd21pKTsN
Cj4gLX0NCj4gLQ0KPiAtDQo+IC1pbnQgTGlzdGVuU3VzcGVuZChIQU5ETEUgZXZlbnQsIEhBTkRM
RSBlcnJvcmV2ZW50KQ0KPiAtew0KPiAtICAgIGlmICghV21pVW5zdXNwZW5kZWRFdmVudFdhdGNo
KCZ3bWksIGV2ZW50LCBlcnJvcmV2ZW50KSkNCj4gLSAgICAgICAgcmV0dXJuIC0xOw0KPiAtICAg
IGVsc2UNCj4gLSAgICAgICAgcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gLUJPT0wgSW5pdFhTQWNj
ZXNzb3IoKQ0KPiAtew0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKCJYU0FjY2Vzc29yXG4iKTsN
Cj4gLSAgICBpZiAod21pY291bnQgIT0gbG9jYWx3bWljb3VudCkgew0KPiAtDQo+IC0gICAgICAg
IGlmIChsb2NhbHRocmVhZGNvdW50ID09IDApIHsNCj4gLSAgICAgICAgICAgIGxvY2FsdGhyZWFk
Y291bnQgPSBJbnRlcmxvY2tlZEluY3JlbWVudCgmdGhyZWFkY291bnQpOw0KPiAtICAgICAgICB9
DQo+IC0gICAgICAgIGNoYXIgd21pbmFtZVsxMl07DQo+IC0gICAgICAgIF9zbnByaW50Zih3bWlu
YW1lLCAxMiwgIlhTJXgiLCBsb2NhbHRocmVhZGNvdW50KTsNCj4gLSAgICAgICAgaWYgKFdtaVNl
c3Npb25TdGFydCgmd21pLCAmV21pU2Vzc2lvbkhhbmRsZSwgd21pbmFtZSkpIHsNCj4gLSAgICAg
ICAgICAgIGxvY2Fsd21pY291bnQgPSB3bWljb3VudDsNCj4gLSAgICAgICAgICAgIHJldHVybiB0
cnVlOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJYU0FjY2Vz
c29yIEZhaWxlZFxuIik7DQo+IC0gICAgICAgIHJldHVybiBmYWxzZTsNCj4gLSAgICB9DQo+IC0g
ICAgcmV0dXJuIHRydWU7DQo+IC19DQo+IC0NCj4gLXZvaWQgWHNMb2coY29uc3QgY2hhciAqZm10
LCAuLi4pDQo+IC17DQo+IC0gICAgdmFfbGlzdCBhcmdzOw0KPiAtDQo+IC0gICAgdmFfc3RhcnQo
YXJncywgZm10KTsNCj4gLSAgICBXbWlTZXNzaW9uTG9nKCZ3bWksICZXbWlTZXNzaW9uSGFuZGxl
LCBmbXQsIGFyZ3MpOw0KPiAtICAgIHZhX2VuZChhcmdzKTsNCj4gLX0NCj4gLQ0KPiAtDQo+IC1C
T09MIFNodXRkb3duWFNBY2Nlc3Nvcih2b2lkKQ0KPiAtew0KPiAtICAgIGlmICh3bWkgPT0gTlVM
TCkgew0KPiAtICAgICAgICByZXR1cm4gZmFsc2U7DQo+IC0gICAgfQ0KPiAtICAgIGlmIChXbWlT
ZXNzaW9uSGFuZGxlID09IE5VTEwpIHsNCj4gLSAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAtICAg
IH0NCj4gLSAgICByZXR1cm4gV21pU2Vzc2lvbkVuZCgmd21pLCBXbWlTZXNzaW9uSGFuZGxlKTsN
Cj4gLQ0KPiAtfQ0KPiAtDQo+IC1pbnQgWGVuc3RvcmVQcmludGYoY29uc3QgY2hhciAqcGF0aCwg
Y29uc3QgY2hhciAqZm10LCAuLi4pDQo+IC17DQo+IC0gICAgdmFfbGlzdCBsOw0KPiAtICAgIGNo
YXIgYnVmWzQwOTZdOw0KPiAtICAgIGludCBjbnQ7DQo+IC0NCj4gLSAgICB2YV9zdGFydChsLCBm
bXQpOw0KPiAtICAgIGNudCA9IF92c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgZm10LCBsKTsN
Cj4gLSAgICB2YV9lbmQobCk7DQo+IC0gICAgaWYgKGNudCA8IDApIHsNCj4gLSAgICAgICAgREJH
UFJJTlQgKCgiQ2Fubm90IGZvcm1hdCBkYXRhIGZvciBYZW5zdG9yZVByaW50ZiEiKSk7DQo+IC0g
ICAgICAgIHJldHVybiAtMTsNCj4gLSAgICB9DQo+IC0gICAgT3V0cHV0RGVidWdTdHJpbmcoYnVm
KTsNCj4gLSAgICAvKiBOb3cgaGF2ZSB0aGUgdGhpbmcgd2UncmUgdHJ5aW5nIHRvIHdyaXRlLiAq
Lw0KPiAtICAgIHJldHVybiBXbWlTZXNzaW9uU2V0RW50cnkoJndtaSwgJldtaVNlc3Npb25IYW5k
bGUsIHBhdGgsIGJ1Zik7DQo+IC19DQo+IC0NCj4gLUJPT0wgWGVuc3RvcmVLaWNrWGFwaSgpDQo+
IC17DQo+IC0gICAgLyogTmV3IHByb3RvY29sICovDQo+IC0gICAgaWYgKFhlbnN0b3JlUHJpbnRm
KCJkYXRhL3VwZGF0ZV9jbnQiLCAiJUk2NGQiLCB1cGRhdGVfY250KSl7DQo+IC0gICAgICAgIFhz
TG9nKCJOZXcga2ljayBmYWlsZWQgIik7DQo+IC0gICAgICAgIHJldHVybiBmYWxzZTsNCj4gLSAg
ICB9DQo+IC0gICAgLyogT2xkIHByb3RvY29sICovDQo+IC0gICAgaWYgKFdtaVNlc3Npb25TZXRF
bnRyeSgmd21pLCAmV21pU2Vzc2lvbkhhbmRsZSwgImRhdGEvdXBkYXRlZCIsDQo+ICIxIikpew0K
PiAtICAgICAgICBYc0xvZygiT2xkIGtpY2sgZmFpbGVkIik7DQo+IC0gICAgICAgIHJldHVybiBm
YWxzZTsNCj4gLSAgICB9DQo+IC0gICAgdXBkYXRlX2NudCsrOw0KPiAtICAgIHJldHVybiB0cnVl
Ow0KPiAtfQ0KPiAtDQo+IC0NCj4gLWludA0KPiAtWGVuc3RvcmVSZW1vdmUoY29uc3QgY2hhciAq
cGF0aCkNCj4gLXsNCj4gLSAgICBpZiAod21pID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybiAt
MTsNCj4gLQ0KPiAtICAgIGlmIChXbWlTZXNzaW9uSGFuZGxlID09IE5VTEwpDQo+IC0gICAgICAg
IHJldHVybiAtMTsNCj4gLQ0KPiAtICAgIGlmIChXbWlTZXNzaW9uUmVtb3ZlRW50cnkoJndtaSwg
JldtaVNlc3Npb25IYW5kbGUsIHBhdGgpKQ0KPiAtICAgICAgICByZXR1cm4gLTE7DQo+IC0gICAg
ZWxzZQ0KPiAtICAgICAgICByZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3NpemVfdA0KPiAtWGVu
c3RvcmVSZWFkKGNvbnN0IGNoYXIqIHBhdGgsIGNoYXIqKiB2YWx1ZSkNCj4gLXsNCj4gLSAgICBz
aXplX3QgbGVuOw0KPiAtICAgICp2YWx1ZSA9V21pU2Vzc2lvbkdldEVudHJ5KCZ3bWksICZXbWlT
ZXNzaW9uSGFuZGxlLCBwYXRoLCAmbGVuKTsNCj4gLSAgICBpZiAoKnZhbHVlKQ0KPiAtICAgICAg
ICByZXR1cm4gKHNzaXplX3QpbGVuOw0KPiAtICAgIGVsc2UNCj4gLSAgICAgICAgcmV0dXJuIC0x
Ow0KPiAtfQ0KPiAtDQo+IC0NCj4gLWJvb2wgWGVuc3RvcmVSZWFkRHdvcmQoY29uc3QgY2hhciAq
cGF0aCwgRFdPUkQgKnZhbHVlKSB7DQo+IC0gICAgY2hhciogYnVmZmVyOw0KPiAtICAgIHNzaXpl
X3QgbGVuOw0KPiAtICAgIGxlbiA9IFhlbnN0b3JlUmVhZChwYXRoLCAmYnVmZmVyKTsNCj4gLSAg
ICBpZiAobGVuIDw9IDApIHsNCj4gLSAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgIH0NCj4g
LSAgICAqdmFsdWUgPSBhdG9pKGJ1ZmZlcik7DQo+IC0NCj4gLSAgICBYc0ZyZWUoYnVmZmVyKTsN
Cj4gLQ0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAtfQ0KPiAtDQo+IC12b2lkICoNCj4gLVhlbnN0
b3JlV2F0Y2goY29uc3QgY2hhciAqcGF0aCwgSEFORExFIGV2ZW50LCBIQU5ETEUgZXJyb3JldmVu
dCkNCj4gLXsNCj4gLQ0KPiAtICAgIGlmICh3bWkgPT0gTlVMTCkgew0KPiAtICAgICAgICBPdXRw
dXREZWJ1Z1N0cmluZygiV01JIGlzIG51bGxcbiIpOw0KPiAtICAgICAgICByZXR1cm4gTlVMTDsN
Cj4gLSAgICB9DQo+IC0gICAgaWYgKFdtaVNlc3Npb25IYW5kbGUgPT0gTlVMTCkgew0KPiAtICAg
ICAgICBPdXRwdXREZWJ1Z1N0cmluZygiU2Vzc2lvbiBpcyBudWxsXG4iKTsNCj4gLSAgICAgICAg
cmV0dXJuIE5VTEw7DQo+IC0gICAgfQ0KPiAtICAgIHJldHVybiBXbWlTZXNzaW9uV2F0Y2goJndt
aSwgJldtaVNlc3Npb25IYW5kbGUsIHBhdGgsIGV2ZW50LA0KPiBlcnJvcmV2ZW50KTsNCj4gLX0N
Cj4gLQ0KPiAtQk9PTA0KPiAtWGVuc3RvcmVVbndhdGNoKHZvaWQgKndhdGNoKQ0KPiAtew0KPiAt
ICAgIHJldHVybiBXbWlTZXNzaW9uVW53YXRjaCgmd21pLCAmV21pU2Vzc2lvbkhhbmRsZSwgd2F0
Y2gpOw0KPiAtfQ0KPiAtDQo+IC12b2lkDQo+IC1YZW5zdG9yZUZyZWUodm9pZCAqdG9mcmVlKQ0K
PiAtew0KPiAtICAgIHJldHVybiBYc0ZyZWUodG9mcmVlKTsNCj4gLX0NCj4gLQ0KPiBkaWZmIC0t
Z2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTQWNjZXNzb3IuaA0KPiBiL3NyYy93aW4zMnN0dWJh
Z2VudC9YU0FjY2Vzc29yLmgNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDJl
ZDQxYjAuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTQWNjZXNzb3IuaA0K
PiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDEyNiArMCwwIEBADQo+IC0vKiBDb3B5cmlnaHQgKGMp
IENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0K
PiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywN
Cj4gLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQNCj4gLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+IC0gKg0K
PiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAqICAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiAt
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXINCj4gLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLg0KPiAtICoNCj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0K
PiAtICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywNCj4gLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUg0KPiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNV
Q0ggREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLQ0KPiAtI2lmbmRlZiBfWFNBQ0NFU1NPUl9IDQo+
IC0jZGVmaW5lIF9YU0FDQ0VTU09SX0gNCj4gLQ0KPiAtI2luY2x1ZGUgPHN0cmluZz4NCj4gLSNp
bmNsdWRlICJ3aW5kb3dzLmgiDQo+IC0NCj4gLQ0KPiAtdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCj4g
LQ0KPiAtI2RlZmluZSBNQVhfWEVOQlVTX1BBVEggMjU2DQo+IC0NCj4gLSNpZmRlZiBBTUQ2NA0K
PiAtdHlwZWRlZiBsb25nIGxvbmcgc3NpemVfdDsNCj4gLSNlbHNlDQo+IC10eXBlZGVmIGxvbmcg
c3NpemVfdDsNCj4gLSNlbmRpZg0KPiAtDQo+IC1CT09MIEluaXRYU0FjY2Vzc29yKCk7DQo+IC1C
T09MIFNodXRkb3duWFNBY2Nlc3NvcigpOw0KPiAtc3NpemVfdCBYZW5zdG9yZVJlYWQoY29uc3Qg
Y2hhciAqcGF0aCwgY2hhciAqKnZhbHVlKTsNCj4gLWludCBYZW5zdG9yZVJlbW92ZShjb25zdCBj
aGFyICpwYXRoKTsNCj4gLWludCBYZW5zdG9yZVByaW50Zihjb25zdCBjaGFyICpwYXRoLCBjb25z
dCBjaGFyICpmbXQsIC4uLik7DQo+IC1pbnQgWGVuc3RvcmVXcml0ZShjb25zdCBjaGFyICpwYXRo
LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsNCj4gLUJPT0wgWGVuc3RvcmVLaWNrWGFw
aSh2b2lkKTsNCj4gLXZvaWQgKlhlbnN0b3JlV2F0Y2goY29uc3QgY2hhciAqcGF0aCwgSEFORExF
IGV2ZW50LCBIQU5ETEUNCj4gZXJyb3JldmVudCk7DQo+IC1CT09MIFhlbnN0b3JlVW53YXRjaCh2
b2lkICp3YXRjaCk7DQo+IC1pbnQgTGlzdGVuU3VzcGVuZChIQU5ETEUgZXZ0LCBIQU5ETEUgZXJy
b3JldmVudCk7DQo+IC12b2lkIEdldFhlblRpbWUoRklMRVRJTUUgKnJlcyk7DQo+IC12b2lkIFhz
TG9nKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsNCj4gLXZvaWQgWGVuc3RvcmVGcmVlKHZvaWQgKnRv
ZnJlZSk7DQo+IC12b2lkICpYc0FsbG9jKHNpemVfdCBzaXplKTsNCj4gLXZvaWQgWHNGcmVlKGNv
bnN0IHZvaWQgKmJ1Zik7DQo+IC1ib29sIFhlbnN0b3JlUmVhZER3b3JkKGNvbnN0IGNoYXIgKiBw
YXRoLCBEV09SRCAqdmFsdWUpOw0KPiAtDQo+IC0jaWYgREJHDQo+IC0NCj4gLSNpbmNsdWRlIDxz
dGRhcmcuaD4gICAgICAgICAvLyB2YV9saXN0DQo+IC0jaW5jbHVkZSA8c3RkaW8uaD4gICAgICAg
ICAgLy8gdnNwcmludGYNCj4gLSNpbmNsdWRlIDxtYWxsb2MuaD4NCj4gLQ0KPiAtI2luY2x1ZGUg
PGFzc2VydC5oPg0KPiAtI2luY2x1ZGUgPHRjaGFyLmg+DQo+IC0NCj4gLV9faW5saW5lIHZvaWQg
RGVidWdQcmludCggSU4gTFBDVFNUUiBtc2csIElOIC4uLiApDQo+IC17DQo+IC0gICAgVENIQVIg
ICBidWZmZXJbMjU2XTsNCj4gLSAgICBpbnQgICAgIHJlczsNCj4gLSAgICB2YV9saXN0IGFyZ3M7
DQo+IC0NCj4gLSAgICB2YV9zdGFydCggYXJncywgbXNnICk7DQo+IC0jcHJhZ21hIHByZWZhc3Qo
c3VwcHJlc3M6IDI4NzE5LCAiWWVzLCB3ZSBhbGwga25vdyBfdnNucHJpbnRmIGlzIGJhbm5lZCBp
bg0KPiBkcml2ZXJzLCB0aGlzIGlzIHVzZXIgbGV2ZWwiKTsNCj4gLSAgICByZXMgPSBfdnNudHBy
aW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpIC8gc2l6ZW9mKGJ1ZmZlclswXSksIG1zZywgYXJn
cyk7DQo+IC0gICAgaWYgKHJlcyA+PSAwKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgT3V0cHV0RGVi
dWdTdHJpbmcoIGJ1ZmZlciApOw0KPiAtICAgIH0NCj4gLSAgICBlbHNlDQo+IC0gICAgew0KPiAt
ICAgICAgICBUQ0hBUiAqcDsNCj4gLSAgICAgICAgaW50IGNvdW50Ow0KPiAtDQo+IC0gICAgICAg
IGNvdW50ID0gNTEyOw0KPiAtICAgICAgICBmb3IgKDs7KSB7DQo+IC0gICAgICAgICAgICBwID0g
KFRDSEFSICopbWFsbG9jKGNvdW50ICogc2l6ZW9mIChUQ0hBUikpOw0KPiAtICAgICAgICAgICAg
aWYgKCFwKSB7DQo+IC0gICAgICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoX1QoIk91dCBv
ZiBtZW1vcnkgZm9yIGRlYnVnIG1lc3NhZ2UhXG4iKSk7DQo+IC0gICAgICAgICAgICAgICAgYnJl
YWs7DQo+IC0gICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICByZXMgPSBfdnNudHByaW50Zihw
LCBjb3VudCwgbXNnLCBhcmdzKTsNCj4gLSAgICAgICAgICAgIGlmIChyZXMgPj0gMCkNCj4gLSAg
ICAgICAgICAgICAgICBicmVhazsNCj4gLQ0KPiAtICAgICAgICAgICAgZnJlZShwKTsNCj4gLSAg
ICAgICAgICAgIGNvdW50ICs9IDI1NjsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBpZiAocCkg
ew0KPiAtICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIHAgKTsNCj4gLSAgICAgICAgICAg
IGZyZWUocCk7DQo+IC0gICAgICAgIH0NCj4gLSAgICB9DQo+IC0gICAgdmFfZW5kKGFyZ3MpOw0K
PiAtfQ0KPiAtDQo+IC0jZGVmaW5lIERCR1BSSU5UKF94XykgRGVidWdQcmludCBfeF8NCj4gLSNk
ZWZpbmUgQVNTRVJUICBhc3NlcnQNCj4gLQ0KPiAtI2Vsc2UNCj4gLQ0KPiAtI2RlZmluZSBEQkdQ
UklOVChfeF8pDQo+IC0jZGVmaW5lIEFTU0VSVA0KPiAtDQo+IC0jZW5kaWYgLy8gREJHDQo+IC0N
Cj4gLSNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTZXJ2aWNlLmNw
cA0KPiBiL3NyYy93aW4zMnN0dWJhZ2VudC9YU2VydmljZS5jcHANCj4gZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0DQo+IGluZGV4IDFmYmIxMzguLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1
YmFnZW50L1hTZXJ2aWNlLmNwcA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDEwNDQgKzAsMCBA
QA0KPiAtLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+IC0gKiBBbGwgcmln
aHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+IC0gKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+IC0gKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyLg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+IC0gKiAgICAgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gLSAqDQo+IC0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gLSAqIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+IC0gKiBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0K
PiAtICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUNCj4gLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SDQo+IC0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+IC0gKiBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gLSAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiAtICogV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+
IC0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFDQo+IC0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GDQo+IC0gKiBTVUNIIERBTUFHRS4NCj4gLSAqLw0KPiAtDQo+IC0jaW5jbHVk
ZSA8d2luZG93cy5oPg0KPiAtI2luY2x1ZGUgPHNobG9iai5oPg0KPiAtI2luY2x1ZGUgPHByb2Nl
c3MuaD4NCj4gLSNpbmNsdWRlICJwb3dycHJvZi5oIg0KPiAtI2luY2x1ZGUgPHdpbnVzZXIuaD4N
Cj4gLSNpbmNsdWRlICJzdGRhZnguaCINCj4gLSNpbmNsdWRlICJYU0FjY2Vzc29yLmgiDQo+IC0j
aW5jbHVkZSAiV01JQWNjZXNzb3IuaCINCj4gLSNpbmNsdWRlICJYU2VydmljZS5oIg0KPiAtDQo+
IC0jaW5jbHVkZSAibWVzc2FnZXMuaCINCj4gLQ0KPiAtI2luY2x1ZGUgPHNldHVwYXBpLmg+DQo+
IC0jaW5jbHVkZSA8Y2ZnbWdyMzIuaD4NCj4gLSNpbmNsdWRlIDxpbml0Z3VpZC5oPg0KPiAtI2lu
Y2x1ZGUgPGRldmd1aWQuaD4NCj4gLSNpbmNsdWRlIDx3aW50cnVzdC5oPg0KPiAtI2luY2x1ZGUg
PHNoZWxsYXBpLmg+DQo+IC0NCj4gLSNpZmRlZiBfV0lONjQNCj4gLSNkZWZpbmUgWEVOVE9PTFNf
SU5TVEFMTF9SRUdfS0VZDQo+ICJTT0ZUV0FSRVxcV293NjQzMk5vZGVcXENpdHJpeFxcWGVuVG9v
bHMiDQo+IC0jZGVmaW5lIFhFTlRPT0xTX0lOU1RBTExfUkVHX0tFWTY0ICJTT0ZUV0FSRVxcQ2l0
cml4XFxYZW5Ub29scyINCj4gLSNlbHNlDQo+IC0jZGVmaW5lIFhFTlRPT0xTX0lOU1RBTExfUkVH
X0tFWSAgICJTT0ZUV0FSRVxcQ2l0cml4XFxYZW5Ub29scyINCj4gLSNlbmRpZg0KPiAtDQo+IC1T
RVJWSUNFX1NUQVRVUyBTZXJ2aWNlU3RhdHVzOw0KPiAtU0VSVklDRV9TVEFUVVNfSEFORExFIGhT
dGF0dXM7DQo+IC0NCj4gLXN0YXRpYyBIQU5ETEUgaFNlcnZpY2VFeGl0RXZlbnQ7DQo+IC1zdGF0
aWMgVUxPTkcgV2luZG93c1ZlcnNpb247DQo+IC1zdGF0aWMgQk9PTCBMZWdhY3lIYWwgPSBGQUxT
RTsNCj4gLXN0YXRpYyBISU5TVEFOQ0UgbG9jYWxfaGluc3RhbmNlOw0KPiAtDQo+IC1IQU5ETEUg
ZXZlbnRMb2c7DQo+IC0jZGVmaW5lIFNJWkVDSEFSUyh4KSAoc2l6ZW9mKCh4KSkvc2l6ZW9mKFRD
SEFSKSkNCj4gLQ0KPiAtLy8gSW50ZXJuYWwgcm91dGluZXMNCj4gLXN0YXRpYyBEV09SRCBXSU5B
UEkgU2VydmljZUNvbnRyb2xIYW5kbGVyKERXT1JEIHJlcXVlc3QsIERXT1JEDQo+IGV2dFR5cGUs
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFZPSUQsIExQ
Vk9JRCk7DQo+IC1zdGF0aWMgdm9pZCBTZXJ2aWNlQ29udHJvbE1hbmFnZXJVcGRhdGUoRFdPUkQg
ZHdFeGl0Q29kZSwgRFdPUkQNCj4gZHdTdGF0ZSk7DQo+IC1zdGF0aWMgdm9pZCBXSU5BUEkgU2Vy
dmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsNCj4gLXN0YXRpYyB2b2lkIEdldFdpbmRv
d3NWZXJzaW9uKCk7DQo+IC0NCj4gLXZvaWQgUHJpbnRFcnJvcihjb25zdCBjaGFyICpmdW5jLCBE
V09SRCBlcnIpDQo+IC17DQo+IC0gICAgTFBWT0lEIGxwTXNnQnVmOw0KPiAtICAgIEZvcm1hdE1l
c3NhZ2UoDQo+IC0gICAgICAgIEZPUk1BVF9NRVNTQUdFX0FMTE9DQVRFX0JVRkZFUiB8DQo+IC0g
ICAgICAgIEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNLA0KPiAtICAgICAgICBOVUxMLA0KPiAt
ICAgICAgICBlcnIsDQo+IC0gICAgICAgIE1BS0VMQU5HSUQoTEFOR19ORVVUUkFMLCBTVUJMQU5H
X0RFRkFVTFQpLA0KPiAtICAgICAgICAoTFBUU1RSKSAmbHBNc2dCdWYsDQo+IC0gICAgICAgIDAs
DQo+IC0gICAgICAgIE5VTEwpOw0KPiAtICAgIE91dHB1dERlYnVnU3RyaW5nKChMUFRTVFIpbHBN
c2dCdWYpOw0KPiAtICAgIFhzTG9nKCIlcyBmYWlsZWQ6ICVzICgleCkiLCBmdW5jLCBscE1zZ0J1
ZiwgZXJyKTsNCj4gLSAgICBYZW5zdG9yZVByaW50ZigiY29udHJvbC9lcnJvciIsICIlcyBmYWls
ZWQ6ICVzICgleCkiLCBmdW5jLCBscE1zZ0J1ZiwgZXJyKTsNCj4gLSAgICBMb2NhbEZyZWUobHBN
c2dCdWYpOw0KPiAtfQ0KPiAtDQo+IC12b2lkIFByaW50RXJyb3IoY29uc3QgY2hhciAqZnVuYykN
Cj4gLXsNCj4gLSAgICBQcmludEVycm9yKGZ1bmMsIEdldExhc3RFcnJvcigpKTsNCj4gLX0NCj4g
LQ0KPiAtdm9pZCBQcmludFVzYWdlKCkNCj4gLXsNCj4gLSAgICBwcmludGYoIlVzYWdlOiB4ZW5z
ZXJ2aWNlIFstdV1cbiIpOw0KPiAtDQo+IC0gICAgcHJpbnRmKCJcdCAtdTogdW5pbnN0YWxsIHNl
cnZpY2VcbiIpOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLQ0KPiAtc3RydWN0IHdhdGNoX2V2ZW50IHsN
Cj4gLSAgICBIQU5ETEUgZXZlbnQ7DQo+IC0gICAgdm9pZCAqd2F0Y2g7DQo+IC19Ow0KPiAtDQo+
IC1zdGF0aWMgdm9pZA0KPiAtUmVsZWFzZVdhdGNoKHN0cnVjdCB3YXRjaF9ldmVudCAqd2UpDQo+
IC17DQo+IC0gICAgaWYgKHdlID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybjsNCj4gLSAgICBp
ZiAod2UtPmV2ZW50ICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQ0KPiAtICAgICAgICBDbG9zZUhh
bmRsZSh3ZS0+ZXZlbnQpOw0KPiAtICAgIGlmICh3ZS0+d2F0Y2gpDQo+IC0gICAgICAgIFhlbnN0
b3JlVW53YXRjaCh3ZS0+d2F0Y2gpOw0KPiAtICAgIGZyZWUod2UpOw0KPiAtfQ0KPiAtDQo+IC1z
dGF0aWMgY2hhciAqIEluaXRTdHJpbmcoY29uc3QgY2hhciAqIGlucHV0c3RyaW5nKQ0KPiAtew0K
PiAtICAgIGNoYXIgKm91dHB1dHN0cmluZyA9IChjaGFyICopY2FsbG9jKChzdHJsZW4oaW5wdXRz
dHJpbmcpKzEpLHNpemVvZihjaGFyKSk7DQo+IC0gICAgaWYgKG91dHB1dHN0cmluZyA9PSBOVUxM
KQ0KPiAtICAgICAgICBnb3RvIGZhaWxhbGxvYzsNCj4gLSAgICBzdHJjcHkob3V0cHV0c3RyaW5n
LCBpbnB1dHN0cmluZyk7DQo+IC0gICAgcmV0dXJuIG91dHB1dHN0cmluZzsNCj4gLQ0KPiAtZmFp
bGFsbG9jOg0KPiAtICAgIFhzTG9nKF9fRlVOQ1RJT05fXyAiIDogRmFpbCBtYWxsb2MiKTsNCj4g
LSAgICByZXR1cm4gTlVMTDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgRnJlZVN0cmluZyhj
b25zdCBjaGFyICpzdHJpbmcpDQo+IC17DQo+IC0gICAgZnJlZSgodm9pZCAqKXN0cmluZyk7DQo+
IC19DQo+IC0NCj4gLXN0YXRpYyBjaGFyKiBQcmludGZTdHJpbmcoY29uc3QgY2hhciAqZm10LCAu
Li4pew0KPiAtICAgIHZhX2xpc3QgbDsNCj4gLSAgICB2YV9zdGFydChsLCBmbXQpOw0KPiAtICAg
IGludCBudW1jaGFycyA9IF92c2NwcmludGYoZm10LCBsKTsNCj4gLSAgICBjaGFyICpvdXRwdXRz
dHJpbmcgPSAoY2hhciAqKWNhbGxvYyhudW1jaGFycyArIDEsIHNpemVvZihjaGFyKSk7DQo+IC0N
Cj4gLSAgICBpZiAob3V0cHV0c3RyaW5nID09IE5VTEwpDQo+IC0gICAgICAgIHJldHVybiBOVUxM
Ow0KPiAtDQo+IC0gICAgX3ZzbnByaW50ZihvdXRwdXRzdHJpbmcsIG51bWNoYXJzLCBmbXQsIGwp
Ow0KPiAtICAgIHJldHVybiBvdXRwdXRzdHJpbmc7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBzdHJ1
Y3Qgd2F0Y2hfZXZlbnQgKg0KPiAtRXN0YWJsaXNoV2F0Y2goY29uc3QgY2hhciAqcGF0aCwgSEFO
RExFIGVycm9yZXZlbnQpDQo+IC17DQo+IC0gICAgc3RydWN0IHdhdGNoX2V2ZW50ICp3ZTsNCj4g
LSAgICBEV09SRCBlcnI7DQo+IC0gICAgWHNMb2coIkVzdGFibGlzaCB3YXRjaCAlcyIscGF0aCk7
DQo+IC0gICAgd2UgPSAoc3RydWN0IHdhdGNoX2V2ZW50ICopbWFsbG9jKHNpemVvZigqd2UpKTsN
Cj4gLSAgICBpZiAoIXdlKSB7DQo+IC0gICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9OT1RfRU5P
VUdIX01FTU9SWSk7DQo+IC0gICAgICAgIHJldHVybiBOVUxMOw0KPiAtICAgIH0NCj4gLSAgICBt
ZW1zZXQod2UsIDAsIHNpemVvZigqd2UpKTsNCj4gLSAgICB3ZS0+d2F0Y2ggPSBOVUxMOw0KPiAt
ICAgIHdlLT5ldmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7DQo+
IC0gICAgaWYgKHdlLT5ldmVudCAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gLSAgICAgICAg
d2UtPndhdGNoID0gWGVuc3RvcmVXYXRjaChwYXRoLCB3ZS0+ZXZlbnQsIGVycm9yZXZlbnQpOw0K
PiAtICAgIGlmICh3ZS0+d2F0Y2ggPT0gTlVMTCkgew0KPiAtICAgICAgICBPdXRwdXREZWJ1Z1N0
cmluZygiV2F0Y2ggaXMgbnVsbFxuIik7DQo+IC0gICAgICAgIGVyciA9IEdldExhc3RFcnJvcigp
Ow0KPiAtICAgICAgICBSZWxlYXNlV2F0Y2god2UpOw0KPiAtICAgICAgICBTZXRMYXN0RXJyb3Io
ZXJyKTsNCj4gLSAgICAgICAgcmV0dXJuIE5VTEw7DQo+IC0gICAgfQ0KPiAtICAgIHJldHVybiB3
ZTsNCj4gLX0NCj4gLQ0KPiAtc3RydWN0IHdhdGNoX2ZlYXR1cmUgew0KPiAtICAgIHN0cnVjdCB3
YXRjaF9ldmVudCAqd2F0Y2g7DQo+IC0gICAgY29uc3QgY2hhciAqZmVhdHVyZV9mbGFnOw0KPiAt
ICAgIGNvbnN0IGNoYXIgKm5hbWU7DQo+IC0gICAgQk9PTCAoKmhhbmRsZXIpKHZvaWQgKik7DQo+
IC0gICAgdm9pZCAqY3R4Ow0KPiAtfTsNCj4gLQ0KPiAtI2RlZmluZSBNQVhfRkVBVFVSRVMgMTAN
Cj4gLXN0cnVjdCB3YXRjaF9mZWF0dXJlX3NldCB7DQo+IC0gICAgc3RydWN0IHdhdGNoX2ZlYXR1
cmUgZmVhdHVyZXNbTUFYX0ZFQVRVUkVTXTsNCj4gLSAgICB1bnNpZ25lZCBucl9mZWF0dXJlczsN
Cj4gLX07DQo+IC0NCj4gLXN0YXRpYyBCT09MDQo+IC1BZGRGZWF0dXJlKHN0cnVjdCB3YXRjaF9m
ZWF0dXJlX3NldCAqd2ZzLCBjb25zdCBjaGFyICpwYXRoLA0KPiAtICAgICAgICAgICBjb25zdCBj
aGFyICpmbGFnLCBjb25zdCBjaGFyICpuYW1lLA0KPiAtICAgICAgICAgICBCT09MICgqaGFuZGxl
cikodm9pZCAqKSwgdm9pZCAqY3R4LCBIQU5ETEUgZXJyb3JldmVudCkNCj4gLXsNCj4gLSAgICB1
bnNpZ25lZCBuOw0KPiAtICAgIGlmICh3ZnMtPm5yX2ZlYXR1cmVzID09IE1BWF9GRUFUVVJFUykN
Cj4gLSAgICAgICAgZ290byBmYWlsZmVhdHVyZXM7DQo+IC0NCj4gLSAgICBuID0gd2ZzLT5ucl9m
ZWF0dXJlczsNCj4gLQ0KPiAtICAgIHdmcy0+ZmVhdHVyZXNbbl0ud2F0Y2ggPSBFc3RhYmxpc2hX
YXRjaChwYXRoLCBlcnJvcmV2ZW50KTsNCj4gLSAgICBpZiAod2ZzLT5mZWF0dXJlc1tuXS53YXRj
aCA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIGZhaWx3YXRjaDsNCj4gLQ0KPiAtICAgIHdmcy0+
ZmVhdHVyZXNbbl0uZmVhdHVyZV9mbGFnID0gZmxhZzsNCj4gLSAgICB3ZnMtPmZlYXR1cmVzW25d
LmhhbmRsZXIgPSBoYW5kbGVyOw0KPiAtICAgIHdmcy0+ZmVhdHVyZXNbbl0uY3R4ID0gY3R4Ow0K
PiAtICAgIHdmcy0+ZmVhdHVyZXNbbl0ubmFtZSA9IEluaXRTdHJpbmcobmFtZSk7DQo+IC0gICAg
aWYgKHdmcy0+ZmVhdHVyZXNbbl0ubmFtZSA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIGZhaWxu
YW1lOw0KPiAtICAgIHdmcy0+bnJfZmVhdHVyZXMrKzsNCj4gLSAgICByZXR1cm4gdHJ1ZTsNCj4g
LQ0KPiAtZmFpbG5hbWU6DQo+IC0gICAgUHJpbnRFcnJvcigiRmFpbGVkIHRvIGFsbG9jYXRlIHN0
cmluZyIpOw0KPiAtZmFpbHdhdGNoOg0KPiAtICAgIFByaW50RXJyb3IoIkVzdGFibGlzaFdhdGNo
KCkgZm9yIEFkZEZlYXR1cmUoKSIpOw0KPiAtZmFpbGZlYXR1cmVzOg0KPiAtICAgIFhzTG9nKCJU
b28gbWFueSBmZWF0dXJlcyIpOw0KPiAtICAgIFByaW50RXJyb3IoIlRvbyBtYW55IGZlYXR1cmVz
ISIsIEVSUk9SX0lOVkFMSURfRlVOQ1RJT04pOw0KPiAtICAgIHJldHVybiBmYWxzZTsNCj4gLX0N
Cj4gLQ0KPiAtc3RhdGljIHZvaWQgUmVtb3ZlRmVhdHVyZXMoc3RydWN0IHdhdGNoX2ZlYXR1cmVf
c2V0ICp3ZnMpIHsNCj4gLSAgICB1bnNpZ25lZCB4Ow0KPiAtICAgIGZvciAoeCA9IDA7IHggPCB3
ZnMtPm5yX2ZlYXR1cmVzOyB4KyspIHsNCj4gLSAgICAgICAgUmVsZWFzZVdhdGNoKHdmcy0+ZmVh
dHVyZXNbeF0ud2F0Y2gpOw0KPiAtICAgICAgICB3ZnMtPmZlYXR1cmVzW3hdLndhdGNoID0gTlVM
TDsNCj4gLSAgICAgICAgRnJlZVN0cmluZyh3ZnMtPmZlYXR1cmVzW3hdLm5hbWUpOw0KPiAtICAg
ICAgICBYZW5zdG9yZVJlbW92ZSh3ZnMtPmZlYXR1cmVzW3hdLmZlYXR1cmVfZmxhZyk7DQo+IC0g
ICAgfQ0KPiAtICAgIHdmcy0+bnJfZmVhdHVyZXMgPSAwOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMg
Qk9PTA0KPiAtQWR2ZXJ0aXNlRmVhdHVyZXMoc3RydWN0IHdhdGNoX2ZlYXR1cmVfc2V0ICp3ZnMp
DQo+IC17DQo+IC0gICAgdW5zaWduZWQgeDsNCj4gLSAgICBmb3IgKHggPSAwOyB4IDwgd2ZzLT5u
cl9mZWF0dXJlczsgeCsrKSB7DQo+IC0gICAgICAgIGlmICh3ZnMtPmZlYXR1cmVzW3hdLmZlYXR1
cmVfZmxhZyAhPSBOVUxMKQ0KPiAtICAgICAgICAgICAgaWYgKFhlbnN0b3JlUHJpbnRmKHdmcy0+
ZmVhdHVyZXNbeF0uZmVhdHVyZV9mbGFnLCAiMSIpKXsNCj4gLSAgICAgICAgICAgICAgICBYc0xv
ZygiRmFpbGVkIHRvIGFkdmVydGlzZSAlcyIsd2ZzLT5mZWF0dXJlc1t4XS5uYW1lKTsNCj4gLSAg
ICAgICAgICAgIH0NCj4gLSAgICB9DQo+IC0gICAgcmV0dXJuIHRydWU7DQo+IC19DQo+IC0NCj4g
LQ0KPiAtdm9pZCBTZXJ2aWNlVW5pbnN0YWxsKCkNCj4gLXsNCj4gLSAgICBTQ19IQU5ETEUgICBo
U3ZjOw0KPiAtICAgIFNDX0hBTkRMRSAgIGhNZ3I7DQo+IC0NCj4gLSAgICBoTWdyID0gT3BlblND
TWFuYWdlcihOVUxMLCBOVUxMLCBTQ19NQU5BR0VSX0FMTF9BQ0NFU1MpOw0KPiAtDQo+IC0gICAg
aWYgKCBoTWdyICkNCj4gLSAgICB7DQo+IC0gICAgICAgIGhTdmMgPSBPcGVuU2VydmljZShoTWdy
LCBTVkNfTkFNRSwgU0VSVklDRV9BTExfQUNDRVNTKTsNCj4gLQ0KPiAtICAgICAgICBpZiAoaFN2
YykNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgIC8vIHRyeSB0byBzdG9wIHRoZSBzZXJ2
aWNlDQo+IC0gICAgICAgICAgICAgaWYgKCBDb250cm9sU2VydmljZSggaFN2YywgU0VSVklDRV9D
T05UUk9MX1NUT1AsICZTZXJ2aWNlU3RhdHVzICkgKQ0KPiAtICAgICAgICAgICAgIHsNCj4gLSAg
ICAgICAgICAgICAgICBwcmludGYoIlN0b3BwaW5nICVzLiIsIFNWQ19ESVNQTEFZTkFNRSk7DQo+
IC0gICAgICAgICAgICAgICAgU2xlZXAoIDEwMDAgKTsNCj4gLQ0KPiAtICAgICAgICAgICAgICAg
IHdoaWxlICggUXVlcnlTZXJ2aWNlU3RhdHVzKCBoU3ZjLCAmU2VydmljZVN0YXR1cyApICkNCj4g
LSAgICAgICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgICAgIGlmICggU2VydmljZVN0
YXR1cy5kd0N1cnJlbnRTdGF0ZSA9PSBTRVJWSUNFX1NUT1BfUEVORElORyApDQo+IC0gICAgICAg
ICAgICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiLiIpOw0K
PiAtICAgICAgICAgICAgICAgICAgICAgICAgU2xlZXAoIDEwMDAgKTsNCj4gLSAgICAgICAgICAg
ICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgICAgICAgICBlbHNlDQo+IC0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgICAgICAgICB9DQo+IC0NCj4gLSAgICAgICAg
ICAgICAgICBpZiAoIFNlcnZpY2VTdGF0dXMuZHdDdXJyZW50U3RhdGUgPT0gU0VSVklDRV9TVE9Q
UEVEICkNCj4gLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiVzIHN0b3BwZWQuXG4iLCBT
VkNfRElTUExBWU5BTUUgKTsNCj4gLSAgICAgICAgICAgICAgICBlbHNlDQo+IC0gICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiXG4lcyBmYWlsZWQgdG8gc3RvcC5cbiIsIFNWQ19ESVNQTEFZTkFN
RSApOw0KPiAtICAgICAgICAgfQ0KPiAtDQo+IC0gICAgICAgICAvLyBub3cgcmVtb3ZlIHRoZSBz
ZXJ2aWNlDQo+IC0gICAgICAgICBpZiAoIERlbGV0ZVNlcnZpY2UoaFN2YykgKQ0KPiAtICAgICAg
ICAgICAgcHJpbnRmKCIlcyB1bmluc3RhbGxlZC5cbiIsIFNWQ19ESVNQTEFZTkFNRSApOw0KPiAt
ICAgICAgICAgZWxzZQ0KPiAtICAgICAgICAgICAgcHJpbnRmKCJVbmFibGUgdG8gdW5pbnN0YWxs
IC0gJWRcbiIsIEdldExhc3RFcnJvcigpKTsNCj4gLQ0KPiAtICAgICAgICAgQ2xvc2VTZXJ2aWNl
SGFuZGxlKGhTdmMpOw0KPiAtDQo+IC0gICAgICB9DQo+IC0gICAgICBlbHNlDQo+IC0gICAgICAg
ICBwcmludGYoIlVuYWJsZSB0byBvcGVuIHNlcnZpY2UgLSAlZFxuIiwgR2V0TGFzdEVycm9yKCkp
Ow0KPiAtDQo+IC0gICAgICBDbG9zZVNlcnZpY2VIYW5kbGUoaE1ncik7DQo+IC0gICB9DQo+IC0g
ICBlbHNlDQo+IC0gICAgICBwcmludGYoIlVuYWJsZSB0byBvcGVuIHNjbSAtICVkXG4iLCBHZXRM
YXN0RXJyb3IoKSk7DQo+IC0NCj4gLX0NCj4gLQ0KPiAtDQo+IC1pbnQgX19zdGRjYWxsDQo+IC1X
aW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuY2UsIEhJTlNUQU5DRSBpZ25vcmUsDQo+IC0gICAgICAg
IExQU1RSIGxwQ21kTGluZSwgaW50IG5DbWRTaG93KQ0KPiAtew0KPiAtICAgIGxvY2FsX2hpbnN0
YW5jZSA9IGhJbnN0YW5jZTsNCj4gLQ0KPiAtICAgIGlmIChzdHJsZW4obHBDbWRMaW5lKSA9PSAw
KSB7DQo+IC0gICAgICAgIFNFUlZJQ0VfVEFCTEVfRU5UUlkgU2VydmljZVRhYmxlWzJdOw0KPiAt
ICAgICAgICBTZXJ2aWNlVGFibGVbMF0ubHBTZXJ2aWNlTmFtZSA9IFNWQ19OQU1FOw0KPiAtICAg
ICAgICBTZXJ2aWNlVGFibGVbMF0ubHBTZXJ2aWNlUHJvYyA9DQo+IChMUFNFUlZJQ0VfTUFJTl9G
VU5DVElPTilTZXJ2aWNlTWFpbjsNCj4gLQ0KPiAtICAgICAgICBTZXJ2aWNlVGFibGVbMV0ubHBT
ZXJ2aWNlTmFtZSA9IE5VTEw7DQo+IC0gICAgICAgIFNlcnZpY2VUYWJsZVsxXS5scFNlcnZpY2VQ
cm9jID0gTlVMTDsNCj4gLQ0KPiAtICAgICAgICBEQkdQUklOVCgoIlhlblN2Yzogc3RhcnRpbmcg
Y3RybCBkaXNwYXRjaGVyICIpKTsNCj4gLQ0KPiAtICAgICAgICAvLyBTdGFydCB0aGUgY29udHJv
bCBkaXNwYXRjaGVyIHRocmVhZCBmb3Igb3VyIHNlcnZpY2UNCj4gLSAgICAgICAgaWYgKCFTdGFy
dFNlcnZpY2VDdHJsRGlzcGF0Y2hlcihTZXJ2aWNlVGFibGUpKQ0KPiAtICAgICAgICB7DQo+IC0g
ICAgICAgICAgICBpbnQgZXJyID0gR2V0TGFzdEVycm9yKCk7DQo+IC0gICAgICAgICAgICBpZiAo
R2V0TGFzdEVycm9yKCkgPT0NCj4gRVJST1JfRkFJTEVEX1NFUlZJQ0VfQ09OVFJPTExFUl9DT05O
RUNUKQ0KPiAtICAgICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgIERCR1BSSU5UKCgiWGVu
U3ZjOiB1bmFibGUgdG8gc3RhcnQgY3RybCBkaXNwYXRjaGVyIC0gJWQiLA0KPiBHZXRMYXN0RXJy
b3IoKSkpOw0KPiAtICAgICAgICAgICAgfQ0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGVsc2UN
Cj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgd2hlbiB0aGUgc2Vy
dmljZSBpcyBzaHV0IGRvd24uDQo+IC0gICAgICAgIH0NCj4gLSAgICB9IGVsc2UgaWYgKCFzdHJj
bXAobHBDbWRMaW5lLCAiLXUiKSB8fCAhc3RyY21wKGxwQ21kTGluZSwgIlwiLXVcIiIpKSB7DQo+
IC0gICAgICAgIFNlcnZpY2VVbmluc3RhbGwoKTsNCj4gLSAgICB9IGVsc2Ugew0KPiAtICAgICAg
ICBQcmludFVzYWdlKCk7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgcmV0dXJuIDA7DQo+IC19DQo+
IC0NCj4gLXZvaWQgQWNxdWlyZVN5c3RlbVByaXZpbGVnZShMUENUU1RSIG5hbWUpDQo+IC17DQo+
IC0gICAgSEFORExFIHRva2VuOw0KPiAtICAgIFRPS0VOX1BSSVZJTEVHRVMgdGtwOw0KPiAtICAg
IERXT1JEIGVycjsNCj4gLQ0KPiAtICAgIExvb2t1cFByaXZpbGVnZVZhbHVlKE5VTEwsIG5hbWUs
ICZ0a3AuUHJpdmlsZWdlc1swXS5MdWlkKTsNCj4gLSAgICB0a3AuUHJpdmlsZWdlQ291bnQgPSAx
Ow0KPiAtICAgIHRrcC5Qcml2aWxlZ2VzWzBdLkF0dHJpYnV0ZXMgPSBTRV9QUklWSUxFR0VfRU5B
QkxFRDsNCj4gLSAgICBpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nlc3MoKSwN
Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgVE9LRU5fQURKVVNUX1BSSVZJTEVHRVN8VE9L
RU5fUVVFUlksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0b2tlbikpIHsNCj4gLSAg
ICAgICAgREJHUFJJTlQoKCJGYWlsZWQgdG8gb3BlbiBsb2NhbCB0b2tlbi5cbiIpKTsNCj4gLSAg
ICB9IGVsc2Ugew0KPiAtICAgICAgICBBZGp1c3RUb2tlblByaXZpbGVnZXModG9rZW4sIEZBTFNF
LCAmdGtwLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCk7
DQo+IC0gICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOw0KPiAtICAgICAgICBpZiAoZXJyICE9
IEVSUk9SX1NVQ0NFU1MpIHsNCj4gLSAgICAgICAgICAgIFByaW50RXJyb3IoIkFkanVzdFRva2Vu
UHJpdmlsZWdlcyIsIGVycik7DQo+IC0gICAgICAgIH0NCj4gLSAgICB9DQo+IC19DQo+IC0NCj4g
LXN0YXRpYyB2b2lkIEFjcXVpcmVTeXN0ZW1TaHV0ZG93blByaXZpbGVnZSh2b2lkKQ0KPiAtew0K
PiAtICAgIEFjcXVpcmVTeXN0ZW1Qcml2aWxlZ2UoU0VfU0hVVERPV05fTkFNRSk7DQo+IC19DQo+
IC0NCj4gLWVudW0gWFNodXRkb3duVHlwZSB7DQo+IC0gICAgWFNodXRkb3duUG93ZXJvZmYsDQo+
IC0gICAgWFNodXRkb3duUmVib290LA0KPiAtICAgIFhTaHV0ZG93blN1c3BlbmQsDQo+IC0gICAg
WFNodXRkb3duUzMNCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBCT09MIG1heWJlUmVib290KHZvaWQg
KmN0eCkNCj4gLXsNCj4gLSAgICBjaGFyICpzaHV0ZG93bl90eXBlOw0KPiAtICAgIEJPT0wgcmVz
Ow0KPiAtICAgIGVudW0gWFNodXRkb3duVHlwZSB0eXBlOw0KPiAtICAgIGludCBjbnRyID0gMDsN
Cj4gLQ0KPiAtICAgIFhzTG9nKCJDaGVjayBpZiB3ZSBuZWVkIHRvIHNodXRkb3duIik7DQo+IC0N
Cj4gLSAgICBpZiAoWGVuc3RvcmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgJnNodXRkb3duX3R5
cGUpIDwgMCkgew0KPiAtICAgICAgICBYc0xvZygiTm8gbmVlZCB0byBzaHV0ZG93biIpOw0KPiAt
ICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gLSAgICB9DQo+IC0gICAgWHNMb2coIlNodXRkb3duIHR5
cGUgJXNcbiIsIHNodXRkb3duX3R5cGUpOw0KPiAtICAgIGlmIChzdHJjbXAoc2h1dGRvd25fdHlw
ZSwgInBvd2Vyb2ZmIikgPT0gMCB8fA0KPiAtICAgICAgICBzdHJjbXAoc2h1dGRvd25fdHlwZSwg
ImhhbHQiKSA9PSAwKSB7DQo+IC0gICAgICAgIHR5cGUgPSBYU2h1dGRvd25Qb3dlcm9mZjsNCj4g
LSAgICB9IGVsc2UgaWYgKHN0cmNtcChzaHV0ZG93bl90eXBlLCAicmVib290IikgPT0gMCkgew0K
PiAtICAgICAgICB0eXBlID0gWFNodXRkb3duUmVib290Ow0KPiAtICAgIH0gZWxzZSBpZiAoc3Ry
Y21wKHNodXRkb3duX3R5cGUsICJoaWJlcm5hdGUiKSA9PSAwKSB7DQo+IC0gICAgICAgIHR5cGUg
PSBYU2h1dGRvd25TdXNwZW5kOw0KPiAtICAgIH0gZWxzZSBpZiAoc3RyY21wKHNodXRkb3duX3R5
cGUsICJzMyIpID09IDApIHsNCj4gLSAgICAgICAgdHlwZSA9IFhTaHV0ZG93blMzOw0KPiAtICAg
IH0gZWxzZSB7DQo+IC0gICAgICAgIERCR1BSSU5UKCgiQmFkIHNodXRkb3duIHR5cGUgJXNcbiIs
IHNodXRkb3duX3R5cGUpKTsNCj4gLSAgICAgICAgZ290byBvdXQ7DQo+IC0gICAgfQ0KPiAtDQo+
IC0gICAgWHNMb2coIlJlcG9ydCBTaHV0ZG93biBFdmVudCIpOw0KPiAtICAgIC8qIFdlIHRyeSB0
byBzaHV0ZG93biBldmVuIGlmIHRoaXMgZmFpbHMsIHNpbmNlIGl0IG1pZ2h0IHdvcmsNCj4gLSAg
ICAgICBhbmQgaXQgY2FuJ3QgZG8gYW55IGhhcm0uICovDQo+IC0gICAgQWNxdWlyZVN5c3RlbVNo
dXRkb3duUHJpdmlsZWdlKCk7DQo+IC0NCj4gLSAgICBpZiAoZXZlbnRMb2cpIHsNCj4gLSAgICAg
ICAgRFdPUkQgZXZlbnRJZDsNCj4gLQ0KPiAtICAgICAgICBzd2l0Y2ggKHR5cGUpIHsNCj4gLSAg
ICAgICAgY2FzZSBYU2h1dGRvd25Qb3dlcm9mZjoNCj4gLSAgICAgICAgICAgIGV2ZW50SWQgPSBF
VkVOVF9YRU5VU0VSX1BPV0VST0ZGOw0KPiAtICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgICAg
IGNhc2UgWFNodXRkb3duUmVib290Og0KPiAtICAgICAgICAgICAgZXZlbnRJZCA9IEVWRU5UX1hF
TlVTRVJfUkVCT09UOw0KPiAtICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgICAgIGNhc2UgWFNo
dXRkb3duU3VzcGVuZDoNCj4gLSAgICAgICAgICAgIGV2ZW50SWQgPSBFVkVOVF9YRU5VU0VSX0hJ
QkVSTkFURTsNCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiAtICAgICAgICBjYXNlIFhTaHV0ZG93
blMzOg0KPiAtICAgICAgICAgICAgZXZlbnRJZCA9IEVWRU5UX1hFTlVTRVJfUzM7DQo+IC0gICAg
ICAgICAgICBicmVhazsNCj4gLSAgICAgICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIFhzTG9n
KCJEbyB0aGUgc2h1dGRvd24iKTsNCj4gLQ0KPiAtICAgIC8qIGRvIHRoZSBzaHV0ZG93biAqLw0K
PiAtICAgIHN3aXRjaCAodHlwZSkgew0KPiAtICAgIGNhc2UgWFNodXRkb3duUG93ZXJvZmY6DQo+
IC0gICAgY2FzZSBYU2h1dGRvd25SZWJvb3Q6DQo+IC0gICAgICAgIGlmIChXaW5kb3dzVmVyc2lv
biA+PSAweDUwMCAmJiBXaW5kb3dzVmVyc2lvbiA8IDB4NjAwKQ0KPiAtICAgICAgICB7DQo+IC0g
ICAgICAgICAgICAvKiBXaW5kb3dzIDIwMDAgSW5pdGlhdGVTeXN0ZW1TaHV0ZG93bkV4IGlzIGZ1
bm55IGluDQo+IC0gICAgICAgICAgICAgICB2YXJpb3VzIHdheXMgKGUuZy4gc29tZXRpbWVzIGZh
aWxzIHRvIHBvd2VyIG9mZiBhZnRlcg0KPiAtICAgICAgICAgICAgICAgc2h1dGRvd24sIGVzcGVj
aWFsbHkgaWYgdGhlIGxvY2FsIHRlcm1pbmFsIGlzIGxvY2tlZCwNCj4gLSAgICAgICAgICAgICAg
IG5vdCBkb2luZyBhbnl0aGluZyBpZiB0aGVyZSdzIG5vYm9keSBsb2dnZWQgb24sIGV0Yy4pLg0K
PiAtICAgICAgICAgICAgICAgRXhpdFdpbmRvd3NFeCBzZWVtcyB0byBiZSBtb3JlIHJlbGlhYmxl
LCBzbyB1c2UgaXQNCj4gLSAgICAgICAgICAgICAgIGluc3RlYWQuICovDQo+IC0gICAgICAgICAg
ICAvKiBYWFggSSBkb24ndCByZWFsbHkgdW5kZXJzdGFuZCB3aHkNCj4gLSAgICAgICAgICAgICAg
IEluaXRpYXRlU3lzdGVtU2h1dGRvd25FeCBiZWhhdmVzIHNvIGJhZGx5LiAqLw0KPiAtICAgICAg
ICAgICAgLyogSWYgdGhpcyBpcyBhIGxlZ2FjeSBoYWwgdGhlbiB1c2UgRVdYX1NIVVRET1dOIHdo
ZW4gc2h1dHRpbmcNCj4gLSAgICAgICAgICAgICAgIGRvd24gaW5zdGVhZCBvZiBFV1hfUE9XRVJP
RkYuICovDQo+IC0gICAgICAgIC8qIFNpbWlsYXIgcHJvYmxlbSBvbiBYUC4gU2h1dGRvd24vUmVi
b290IHdpbGwgaGFuZyB1bnRpbCB0aGUNCj4gV2VsY29tZQ0KPiAtICAgICAgICBzY3JlZW4gc2Ny
ZWVuc2F2ZXIgaXMgZGlzbWlzc2VkIGJ5IHRoZSBndWVzdCAqLw0KPiAtI3ByYWdtYSB3YXJuaW5n
IChkaXNhYmxlIDogMjgxNTkpDQo+IC0gICAgICAgICAgICByZXMgPSBFeGl0V2luZG93c0V4KCh0
eXBlID09IFhTaHV0ZG93blJlYm9vdCA/DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFV1hfUkVCT09UIDoNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChMZWdhY3lIYWwgPw0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVXWF9TSFVURE9XTiA6DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRVdYX1BPV0VST0ZGKSl8DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVXWF9GT1JDRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hURE5fUkVB
U09OX01BSk9SX09USEVSfA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSFRE
Tl9SRUFTT05fTUlOT1JfRU5WSVJPTk1FTlQgfA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSFRETl9SRUFTT05fRkxBR19QTEFOTkVEKTsNCj4gLSNwcmFnbWEgd2FybmluZyAo
ZGVmYXVsdDogMjgxNTkpDQo+IC0gICAgICAgICAgICBpZiAoIXJlcykgew0KPiAtICAgICAgICAg
ICAgICAgIFByaW50RXJyb3IoIkV4aXRXaW5kb3dzRXgiKTsNCj4gLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7DQo+IC0gICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICBlbHNlDQo+IC0g
ICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgaWYgKFhlbnN0b3JlUmVtb3ZlKCJjb250
cm9sL3NodXRkb3duIikpDQo+IC0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4g
LSAgICAgICAgICAgIH0NCj4gLSAgICAgICAgfSBlbHNlIHsNCj4gLSNwcmFnbWEgd2FybmluZyAo
ZGlzYWJsZSA6IDI4MTU5KQ0KPiAtICAgICAgICAgICAgcmVzID0gSW5pdGlhdGVTeXN0ZW1TaHV0
ZG93bkV4KA0KPiAtICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgTlVM
TCwNCj4gLSAgICAgICAgICAgICAgICAwLA0KPiAtICAgICAgICAgICAgICAgIFRSVUUsDQo+IC0g
ICAgICAgICAgICAgICAgdHlwZSA9PSBYU2h1dGRvd25SZWJvb3QsDQo+IC0gICAgICAgICAgICAg
ICAgU0hURE5fUkVBU09OX01BSk9SX09USEVSIHwNCj4gLSAgICAgICAgICAgICAgICBTSFRETl9S
RUFTT05fTUlOT1JfRU5WSVJPTk1FTlQgfA0KPiAtICAgICAgICAgICAgICAgIFNIVEROX1JFQVNP
Tl9GTEFHX1BMQU5ORUQpOw0KPiAtI3ByYWdtYSB3YXJuaW5nIChkZWZhdWx0OiAyODE1OSkNCj4g
LSAgICAgICAgICAgIGlmICghcmVzKSB7DQo+IC0gICAgICAgICAgICAgICAgUHJpbnRFcnJvcigi
SW5pdGlhdGVTeXN0ZW1TaHV0ZG93bkV4Iik7DQo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOw0KPiAtICAgICAgICAgICAgfSBlbHNlIHsNCj4gLSAgICAgICAgICAgICAgICBpZiAoWGVu
c3RvcmVSZW1vdmUoImNvbnRyb2wvc2h1dGRvd24iKSkNCj4gLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICAgICAgfQ0KPiAtICAgICAgICB9DQo+IC0gICAgICAg
IGJyZWFrOw0KPiAtICAgIGNhc2UgWFNodXRkb3duU3VzcGVuZDoNCj4gLSAgICAgICAgaWYgKFhl
bnN0b3JlUHJpbnRmICgiY29udHJvbC9oaWJlcm5hdGlvbi1zdGF0ZSIsICJzdGFydGVkIikpDQo+
IC0gICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+IC0gICAgICAgIC8qIEV2ZW4gaWYgd2UgdGhp
bmsgaGliZXJuYXRpb24gaXMgZGlzYWJsZWQsIHRyeSBpdCBhbnl3YXkuDQo+IC0gICAgICAgICAg
IEl0J3Mgbm90IGxpa2UgaXQgY2FuIGRvIGFueSBoYXJtLiAqLw0KPiAtICAgICAgICByZXMgPSBT
ZXRTeXN0ZW1Qb3dlclN0YXRlKEZBTFNFLCBGQUxTRSk7DQo+IC0gICAgICAgIGlmIChYZW5zdG9y
ZVJlbW92ZSAoImNvbnRyb2wvc2h1dGRvd24iKSkNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGlmICghcmVzKSB7DQo+
IC0gICAgICAgICAgICAvKiBUZWxsIHRoZSB0b29scyB0aGF0IHdlJ3ZlIGZhaWxlZC4gKi8NCj4g
LSAgICAgICAgICAgIFByaW50RXJyb3IoIlNldFN5c3RlbVBvd2VyU3RhdGUiKTsNCj4gLSAgICAg
ICAgICAgIGlmIChYZW5zdG9yZVByaW50ZiAoImNvbnRyb2wvaGliZXJuYXRpb24tc3RhdGUiLCAi
ZmFpbGVkIikpDQo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICB9
DQo+IC0gICAgICAgIGJyZWFrOw0KPiAtICAgIGNhc2UgWFNodXRkb3duUzM6DQo+IC0gICAgICAg
IGlmIChYZW5zdG9yZVByaW50ZiAoImNvbnRyb2wvczMtc3RhdGUiLCAic3RhcnRlZCIpKQ0KPiAt
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICByZXMgPSBTZXRTdXNwZW5kU3Rh
dGUoRkFMU0UsIFRSVUUsIEZBTFNFKTsNCj4gLSAgICAgICAgWGVuc3RvcmVSZW1vdmUgKCJjb250
cm9sL3NodXRkb3duIik7DQo+IC0gICAgICAgIGlmICghcmVzKSB7DQo+IC0gICAgICAgICAgICBQ
cmludEVycm9yKCJTZXRTdXNwZW5kU3RhdGUiKTsNCj4gLSAgICAgICAgICAgIGlmIChYZW5zdG9y
ZVByaW50ZiAoImNvbnRyb2wvczMtc3RhdGUiLCAiZmFpbGVkIikpDQo+IC0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGJyZWFrOw0KPiAtICAg
IH0NCj4gLQ0KPiAtb3V0Og0KPiAtICAgIFhlbnN0b3JlRnJlZShzaHV0ZG93bl90eXBlKTsNCj4g
LSAgICByZXR1cm4gdHJ1ZTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGJvb2wgcmVnaXN0cnlNYXRj
aFN0cmluZyhIS0VZICAgIGhLZXksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExQQ1RTVFIgbHBWYWx1ZU5hbWUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExQQ1RTVFIgY29tcGFyZXN0cmluZywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCAgICBtYXRjaGNhc2UpDQo+IC17DQo+IC0gICAgYm9vbCAgICByZXN1bHQgPSBmYWxz
ZTsNCj4gLSAgICBMT05HICAgIGJ1ZmZlcnNpemUgPSBzaXplb2YoVENIQVIpKjI1NjsNCj4gLSAg
ICBUQ0hBUiAgICpvdXRzdHJpbmcgPSBOVUxMOw0KPiAtICAgIERXT1JEICBvdXRzdHJpbmdzaXpl
Ow0KPiAtICAgIExPTkcgICAgc3RhdHVzOw0KPiAtICAgIGRvIHsNCj4gLSAgICAgICAgb3V0c3Ry
aW5nc2l6ZSA9IGJ1ZmZlcnNpemU7DQo+IC0gICAgICAgIG91dHN0cmluZyA9IChUQ0hBUiAqKXJl
YWxsb2Mob3V0c3RyaW5nLCBvdXRzdHJpbmdzaXplKTsNCj4gLQ0KPiAtICAgICAgICBzdGF0dXMg
PSBSZWdRdWVyeVZhbHVlRXgoaEtleSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxwVmFsdWVOYW1lLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoTFBCWVRFKSBvdXRzdHJpbmcsDQo+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0c3RyaW5nc2l6ZSk7DQo+IC0gICAgICAgIGJ1
ZmZlcnNpemUgKj0gMjsNCj4gLSAgICB9IHdoaWxlIChzdGF0dXMgPT0gRVJST1JfTU9SRV9EQVRB
KTsNCj4gLQ0KPiAtICAgIGlmIChzdGF0dXMgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpDQo+IC0g
ICAgICAgIGdvdG8gZG9uZTsNCj4gLQ0KPiAtICAgIGlmIChtYXRjaGNhc2UpIHsNCj4gLSAgICAg
ICAgaWYgKF90Y3NuY21wKGNvbXBhcmVzdHJpbmcsIG91dHN0cmluZywgb3V0c3RyaW5nc2l6ZSkp
DQo+IC0gICAgICAgICAgICBnb3RvIGRvbmU7DQo+IC0gICAgfQ0KPiAtICAgIGVsc2Ugew0KPiAt
ICAgICAgICBpZiAoX3Rjc25pY29sbChjb21wYXJlc3RyaW5nLCBvdXRzdHJpbmcsIG91dHN0cmlu
Z3NpemUpKQ0KPiAtICAgICAgICAgICAgZ290byBkb25lOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAg
IHJlc3VsdCA9IHRydWU7DQo+IC0NCj4gLWRvbmU6DQo+IC0gICAgZnJlZShvdXRzdHJpbmcpOw0K
PiAtDQo+IC0gICAgcmV0dXJuIHJlc3VsdDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGJvb2wNCj4g
LWFkanVzdFhlblRpbWVUb1VUQyhGSUxFVElNRSAqbm93KQ0KPiAtew0KPiAtICAgIERXT1JEICAg
ICAgICAgICBkd3RpbWVvZmZzZXQ7DQo+IC0gICAgbG9uZyAgICAgICAgICAgIHRpbWVvZmZzZXQ7
DQo+IC0gICAgY2hhciAgICAgICAgICAgICp2bTsNCj4gLSAgICBjaGFyICAgICAgICAgICAgKnJ0
Y2tleTsNCj4gLSAgICBMQVJHRV9JTlRFR0VSICAgbG9uZ29mZnNldDsNCj4gLSAgICBVTEFSR0Vf
SU5URUdFUiAgbG9uZ25vdzsNCj4gLSAgICBzaXplX3QgICAgICAgICAgdm1sZW47DQo+IC0NCj4g
LSAgICAvLyBYZW5UaW1lIGlzIGFzc3VtZWQgdG8gYmUgaW4gVVRDLCBzbyB3ZSBuZWVkIHRvIHJl
bW92ZSBhbnkNCj4gLSAgICAvLyBvZmZzZXRzIHRoYXQgYXJlIGFwcGxpZWQgdG8gaXQNCj4gLQ0K
PiAtICAgIF9fdHJ5IHsNCj4gLSAgICAgICAgdm1sZW4gPSBYZW5zdG9yZVJlYWQoInZtIiwgJnZt
KTsNCj4gLSAgICAgICAgaWYgKHZtbGVuIDw9IDApDQo+IC0gICAgICAgICAgICBnb3RvIGZhaWxf
cmVhZHZtOw0KPiAtICAgIH0NCj4gLSAgICBfX2V4Y2VwdChFWENFUFRJT05fRVhFQ1VURV9IQU5E
TEVSKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgZ290byBmYWlsX3JlYWR2bTsNCj4gLSAgICB9DQo+
IC0NCj4gLSAgICBydGNrZXkgPSBQcmludGZTdHJpbmcoIiVzL3J0Yy90aW1lb2Zmc2V0Iiwgdm0p
Ow0KPiAtICAgIGlmIChydGNrZXkgPT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBmYWlsX3J0Y2tl
eTsNCj4gLQ0KPiAtICAgIF90cnkgew0KPiAtICAgICAgICBCT09MIHJ0Y3JlYWR3b3JrZWQ7DQo+
IC0gICAgICAgIF9fdHJ5IHsNCj4gLSAgICAgICAgICAgIHJ0Y3JlYWR3b3JrZWQgPSBYZW5zdG9y
ZVJlYWREd29yZChydGNrZXksICZkd3RpbWVvZmZzZXQpOw0KPiAtICAgICAgICB9DQo+IC0gICAg
ICAgIF9fZXhjZXB0KEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIpIHsNCj4gLSAgICAgICAgICAg
IHJ0Y3JlYWR3b3JrZWQgPSBmYWxzZTsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBpZiAoIXJ0
Y3JlYWR3b3JrZWQpIHsNCj4gLSAgICAgICAgICAgIGlmICghWGVuc3RvcmVSZWFkRHdvcmQoInBs
YXRmb3JtL3RpbWVvZmZzZXQiLCAmZHd0aW1lb2Zmc2V0KSkNCj4gLSAgICAgICAgICAgICAgICBn
b3RvIGZhaWxfcGxhdGZvcm10aW1lb2Zmc2V0Ow0KPiAtICAgICAgICB9DQo+IC0gICAgfQ0KPiAt
ICAgIF9fZXhjZXB0KEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIpDQo+IC0gICAgew0KPiAtICAg
ICAgICBnb3RvIGZhaWxfcGxhdGZvcm10aW1lb2Zmc2V0Ow0KPiAtICAgIH0NCj4gLSAgICB0aW1l
b2Zmc2V0ID0gKGxvbmcpZHd0aW1lb2Zmc2V0Ow0KPiAtDQo+IC0gICAgLy9Db252ZXJ0IG9mZnNl
dCBmcm9tIHNlY29uZHMgdG8gbmFub3NlY29uZHMNCj4gLSAgICBsb25nb2Zmc2V0LlF1YWRQYXJ0
ID0gIChMT05HTE9ORyl0aW1lb2Zmc2V0Ow0KPiAtICAgIGxvbmdvZmZzZXQuUXVhZFBhcnQgPSBs
b25nb2Zmc2V0LlF1YWRQYXJ0ICogMTAwMDAwMDA7DQo+IC0NCj4gLSAgICAvLyBTdWJ0cmFjdCBu
YW5vc2Vjb25kIHRpbWVvZmZzZXQgZnJvbSBub3cNCj4gLSAgICBsb25nbm93Lkxvd1BhcnQgPSBu
b3ctPmR3TG93RGF0ZVRpbWU7DQo+IC0gICAgbG9uZ25vdy5IaWdoUGFydCA9IG5vdy0+ZHdIaWdo
RGF0ZVRpbWU7DQo+IC0gICAgbG9uZ25vdy5RdWFkUGFydCAtPSBsb25nb2Zmc2V0LlF1YWRQYXJ0
Ow0KPiAtICAgIG5vdy0+ZHdMb3dEYXRlVGltZSA9IGxvbmdub3cuTG93UGFydDsNCj4gLSAgICBu
b3ctPmR3SGlnaERhdGVUaW1lID0gbG9uZ25vdy5IaWdoUGFydDsNCj4gLQ0KPiAtICAgIEZyZWVT
dHJpbmcocnRja2V5KTsNCj4gLSAgICBYc0ZyZWUodm0pOw0KPiAtICAgIHJldHVybiB0cnVlOw0K
PiAtDQo+IC1mYWlsX3BsYXRmb3JtdGltZW9mZnNldDoNCj4gLSAgICBYc0xvZygiJXM6IFJlYWQg
cGxhdGZvcm0gdGltZSBvZmZzZXQiLCBfX0ZVTkNUSU9OX18pOw0KPiAtICAgIEZyZWVTdHJpbmco
cnRja2V5KTsNCj4gLQ0KPiAtZmFpbF9ydGNrZXk6DQo+IC0gICAgWHNMb2coIiVzOiBSZWFkIFJU
QyBLZXkiLCBfX0ZVTkNUSU9OX18pOw0KPiAtICAgIFhzRnJlZSh2bSk7DQo+IC0NCj4gLWZhaWxf
cmVhZHZtOg0KPiAtICAgIFhzTG9nKCIlczogUmVhZCBWTSBLZXkiLCBfX0ZVTkNUSU9OX18pOw0K
PiAtICAgIHJldHVybiBmYWxzZTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGJvb2wgaG9zdHRpbWVJ
c1VUQygpDQo+IC17DQo+IC0gICAgSEtFWSAgICAgICAgSW5zdGFsbFJlZ0tleTsNCj4gLSAgICBi
b29sICAgICAgICB1dGMgPSBmYWxzZTsNCj4gLSAgICBpZiAoUmVnT3BlbktleUV4KEhLRVlfTE9D
QUxfTUFDSElORSwNCj4gLSAgICAgICAgICAgICAgICAgICAgIFhFTlRPT0xTX0lOU1RBTExfUkVH
X0tFWSwNCj4gLSAgICAgICAgICAgICAgICAgICAgIDAsDQo+IC0gICAgICAgICAgICAgICAgICAg
ICBLRVlfQUxMX0FDQ0VTUywNCj4gLSAgICAgICAgICAgICAgICAgICAgICZJbnN0YWxsUmVnS2V5
KSAhPSBFUlJPUl9TVUNDRVNTKQ0KPiAtICAgICAgICBnb3RvIGZhaWxfcmVnaXN0cnlrZXk7DQo+
IC0NCj4gLSNpZmRlZiBfV0lONjQNCj4gLQ0KPiAtICAgIGlmIChyZWdpc3RyeU1hdGNoU3RyaW5n
KEluc3RhbGxSZWdLZXksICJIb3N0VGltZSIsICJVVEMiLCBmYWxzZSkpDQo+IC0gICAgew0KPiAt
ICAgICAgICAgdXRjID0gdHJ1ZTsNCj4gLSAgICAgICAgIGdvdG8gZG9uZTsNCj4gLSAgICB9DQo+
IC0NCj4gLSAgICBSZWdDbG9zZUtleShJbnN0YWxsUmVnS2V5KTsNCj4gLSAgICBpZiAoUmVnT3Bl
bktleUV4KEhLRVlfTE9DQUxfTUFDSElORSwNCj4gLSAgICAgICAgICAgICAgICAgICAgIFhFTlRP
T0xTX0lOU1RBTExfUkVHX0tFWTY0LA0KPiAtICAgICAgICAgICAgICAgICAgICAgMCwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgIEtFWV9BTExfQUNDRVNTLA0KPiAtICAgICAgICAgICAgICAgICAg
ICAgJkluc3RhbGxSZWdLZXkpICE9IEVSUk9SX1NVQ0NFU1MpDQo+IC0gICAgICAgIGdvdG8gZmFp
bF9yZWdpc3RyeWtleTsNCj4gLQ0KPiAtI2VuZGlmDQo+IC0NCj4gLSAgICBpZiAocmVnaXN0cnlN
YXRjaFN0cmluZyhJbnN0YWxsUmVnS2V5LCAiSG9zdFRpbWUiLCAiVVRDIiwgZmFsc2UpKQ0KPiAt
ICAgIHsNCj4gLSAgICAgICAgdXRjPXRydWU7DQo+IC0gICAgfQ0KPiAtDQo+IC0jaWZkZWYgX1dJ
TjY0DQo+IC1kb25lOg0KPiAtI2VuZGlmDQo+IC0gICAgUmVnQ2xvc2VLZXkoSW5zdGFsbFJlZ0tl
eSk7DQo+IC0gICAgcmV0dXJuIHV0YzsNCj4gLQ0KPiAtZmFpbF9yZWdpc3RyeWtleToNCj4gLSAg
ICBYc0xvZygiJXM6IE9wZW4gUmVnaXN0cnkgS2V5IiwgX19GVU5DVElPTl9fKTsNCj4gLQ0KPiAt
ICAgIHJldHVybiBmYWxzZTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQNCj4gLXNldFRpbWVU
b1hlblRpbWUodm9pZCkNCj4gLXsNCj4gLSAgICBGSUxFVElNRSAgICBub3cgPSB7MH07DQo+IC0g
ICAgU1lTVEVNVElNRSAgc3lzX3RpbWU7DQo+IC0gICAgU1lTVEVNVElNRSAgY3VycmVudF90aW1l
Ow0KPiAtICAgIGJvb2wgICAgICAgIHV0Yz1mYWxzZTsNCj4gLSAgICBYc0xvZygiU2V0IHRpbWUg
dG8gWGVuVGltZSIpOw0KPiAtDQo+IC0gICAgR2V0WGVuVGltZSgmbm93KTsNCj4gLSAgICBpZiAo
KG5vdy5kd0xvd0RhdGVUaW1lID09IDApICYmIChub3cuZHdIaWdoRGF0ZVRpbWUgPT0gMCkpIHsN
Cj4gLSAgICAgICAgWHNMb2coIkNhbm5vdCBzZXQgc3lzdGVtIHRpbWUgdG8geGVudGltZSwgdW5h
YmxlIHRvIGNvbnRhY3QgV01JIik7DQo+IC0gICAgICAgIGdvdG8gZmFpbF9yZWFkdGltZTsNCj4g
LSAgICB9DQo+IC0NCj4gLSAgICB1dGMgPSBob3N0dGltZUlzVVRDKCk7DQo+IC0NCj4gLSAgICBp
ZiAodXRjKSB7DQo+IC0gICAgICAgIFhzTG9nKCJUcnkgVVRDIik7DQo+IC0gICAgICAgIGlmICgh
YWRqdXN0WGVuVGltZVRvVVRDKCZub3cpKQ0KPiAtICAgICAgICAgICAgZ290byBmYWlsX2FkanVz
dHRpbWU7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgaWYgKCFGaWxlVGltZVRvU3lzdGVtVGltZSgm
bm93LCAmc3lzX3RpbWUpKSB7DQo+IC0gICAgICAgIFhzTG9nKCJHb3VsZCBub3QgY29udmVydCBm
aWxlIHRpbWUgdG8gc3lzdGVtIHRpbWUiKTsNCj4gLSAgICAgICAgUHJpbnRFcnJvcigiRmlsZVRp
bWVUb1N5c3RlbVRpbWUoKSIpOw0KPiAtICAgICAgICBEQkdQUklOVCgoIkZpbGVUaW1lVG9TeXN0
ZW1UaW1lKCV4LiV4KVxuIiwNCj4gLSAgICAgICAgICAgICAgICAgIG5vdy5kd0xvd0RhdGVUaW1l
LCBub3cuZHdIaWdoRGF0ZVRpbWUpKTsNCj4gLSAgICB9IGVsc2Ugew0KPiAtICAgICAgICBHZXRM
b2NhbFRpbWUoJmN1cnJlbnRfdGltZSk7DQo+IC0gICAgICAgIFhzTG9nKCJUaW1lIGlzIG5vdyAg
JWQuJWQuJWQgJWQ6JWQ6JWQuJWQiLA0KPiAtICAgICAgICAgICAgICBjdXJyZW50X3RpbWUud1ll
YXIsIGN1cnJlbnRfdGltZS53TW9udGgsIGN1cnJlbnRfdGltZS53RGF5LA0KPiAtICAgICAgICAg
ICAgICBjdXJyZW50X3RpbWUud0hvdXIsIGN1cnJlbnRfdGltZS53TWludXRlLA0KPiBjdXJyZW50
X3RpbWUud1NlY29uZCwNCj4gLSAgICAgICAgICAgICAgY3VycmVudF90aW1lLndNaWxsaXNlY29u
ZHMpOw0KPiAtICAgICAgICBYc0xvZygiU2V0IHRpbWUgdG8gJWQuJWQuJWQgJWQ6JWQ6JWQuJWQi
LA0KPiAtICAgICAgICAgICAgICBzeXNfdGltZS53WWVhciwgc3lzX3RpbWUud01vbnRoLCBzeXNf
dGltZS53RGF5LA0KPiAtICAgICAgICAgICAgICBzeXNfdGltZS53SG91ciwgc3lzX3RpbWUud01p
bnV0ZSwgc3lzX3RpbWUud1NlY29uZCwNCj4gLSAgICAgICAgICAgICAgc3lzX3RpbWUud01pbGxp
c2Vjb25kcyk7DQo+IC0gICAgICAgIGlmICh1dGMpIHsNCj4gLSAgICAgICAgICAgIGlmICghU2V0
U3lzdGVtVGltZSgmc3lzX3RpbWUpKQ0KPiAtICAgICAgICAgICAgICAgIFByaW50RXJyb3IoIlNl
dFN5c3RlbVRpbWUoKSIpOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGVsc2Ugew0KPiAtICAg
ICAgICAgICAgaWYgKCFTZXRMb2NhbFRpbWUoJnN5c190aW1lKSkNCj4gLSAgICAgICAgICAgICAg
ICBQcmludEVycm9yKCJTZXRMb2NhbFRpbWUoKSIpOw0KPiAtICAgICAgICB9DQo+IC0gICAgfQ0K
PiAtDQo+IC0gICAgcmV0dXJuOw0KPiAtDQo+IC1mYWlsX2FkanVzdHRpbWU6DQo+IC0gICAgWHNM
b2coIiVzOiBBZGp1c3QgdGltZSIsIF9fRlVOQ1RJT05fXyk7DQo+IC0NCj4gLWZhaWxfcmVhZHRp
bWU6DQo+IC0gICAgWHNMb2coIiVzOiBSZWFkVGltZSIsIF9fRlVOQ1RJT05fXyk7DQo+IC19DQo+
IC0NCj4gLS8qIFdlIG5lZWQgdG8gcmVzeW5jIHRoZSBjbG9jayB3aGVuIHdlIHJlY292ZXIgZnJv
bSBzdXNwZW5kL3Jlc3VtZS4gKi8NCj4gLXN0YXRpYyB2b2lkDQo+IC1maW5pc2hTdXNwZW5kKHZv
aWQpDQo+IC17DQo+IC0gICAgREJHUFJJTlQoKCJDb21pbmcgYmFjayBmcm9tIHN1c3BlbmQuXG4i
KSk7DQo+IC0gICAgc2V0VGltZVRvWGVuVGltZSgpOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLQ0KPiAt
Ly8NCj4gLS8vIE1haW4gbG9vcA0KPiAtLy8NCj4gLUJPT0wgUnVuKCkNCj4gLXsNCj4gLSAgICBi
b29sIGV4aXQ9ZmFsc2U7DQo+IC0gICAgUENIQVIgcFBWQWRkb25zSW5zdGFsbGVkID0gTlVMTDsN
Cj4gLQ0KPiAtICAgIEhBTkRMRSBzdXNwZW5kRXZlbnQ7DQo+IC0NCj4gLSAgICBpbnQgY250ciA9
IDA7DQo+IC0gICAgc3RydWN0IHdhdGNoX2ZlYXR1cmVfc2V0IGZlYXR1cmVzOw0KPiAtICAgIEJP
T0wgc25hcCA9IEZBTFNFOw0KPiAtDQo+IC0gICAgT3V0cHV0RGVidWdTdHJpbmcoIlRyeWluZyB0
byBjb25uZWN0IHRvIFdNSVxuIik7DQo+IC0gICAgd2hpbGUgKCFDb25uZWN0VG9XTUkoKSkgew0K
PiAtICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiVW5hYmxlIHRvIGNvbm5lY3QgdG8gV01JLCBz
bGVlcGluZ1xuIik7DQo+IC0gICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KGhTZXJ2aWNl
RXhpdEV2ZW50LCAxMDAwKjEwKSA9PQ0KPiBXQUlUX09CSkVDVF8wKSB7DQo+IC0gICAgICAgICAg
ICBleGl0ID0gdHJ1ZTsNCj4gLSAgICAgICAgICAgIHJldHVybiBleGl0Ow0KPiAtICAgICAgICB9
DQo+IC0gICAgfQ0KPiAtICAgIHdoaWxlIChJbml0WFNBY2Nlc3NvcigpPT1mYWxzZSkgew0KPiAt
ICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiVW5hYmxlIHRvIGluaXRpYWxpc2UgV01JIHNlc3Np
b24sIHNsZWVwaW5nXG4iKTsNCj4gLSAgICAgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3QoaFNl
cnZpY2VFeGl0RXZlbnQsIDEwMDAqMTApID09DQo+IFdBSVRfT0JKRUNUXzApIHsNCj4gLSAgICAg
ICAgICAgIGV4aXQgPSB0cnVlOw0KPiAtICAgICAgICAgICAgcmV0dXJuIGV4aXQ7DQo+IC0gICAg
ICAgIH0NCj4gLSAgICB9DQo+IC0gICAgWHNMb2coIkd1ZXN0IGFnZW50IGxpdGUgbWFpbiBsb29w
IHN0YXJ0aW5nIik7DQo+IC0NCj4gLSAgICBpZiAoZXZlbnRMb2cgPT0gTlVMTCkNCj4gLSAgICAg
ICAgWHNMb2coIkV2ZW50IGxvZyB3YXMgbm90IGluaXRpYWxpc2VkIik7DQo+IC0NCj4gLSAgICBz
ZXRUaW1lVG9YZW5UaW1lKCk7DQo+IC0NCj4gLSAgICBtZW1zZXQoJmZlYXR1cmVzLCAwLCBzaXpl
b2YoZmVhdHVyZXMpKTsNCj4gLQ0KPiAtICAgIEhBTkRMRSB3bWllcnJvckV2ZW50ID0gQ3JlYXRl
RXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsNCj4gLSAgICBpZiAoIXdtaWVycm9yRXZl
bnQpIHsNCj4gLSAgICAgICAgUHJpbnRFcnJvcigiQ3JlYXRlRXZlbnQoKSB3bWllcnJvckV2ZW50
Iik7DQo+IC0gICAgICAgIHJldHVybiBleGl0Ow0KPiAtICAgIH0NCj4gLQ0KPiAtDQo+IC0gICAg
WHNMb2coIkFib3V0IHRvIGFkZCBmZWF0dXJlIHNodXRkb3duIik7DQo+IC0gICAgaWYgKCFBZGRG
ZWF0dXJlKCZmZWF0dXJlcywgImNvbnRyb2wvc2h1dGRvd24iLCAiY29udHJvbC9mZWF0dXJlLQ0K
PiBzaHV0ZG93biIsDQo+IC0gICAgICAgICAgICAgICAgICAgICJzaHV0ZG93biIsIG1heWJlUmVi
b290LCBOVUxMLCB3bWllcnJvckV2ZW50KSkgew0KPiAtICAgICAgICByZXR1cm4gZXhpdDsNCj4g
LSAgICB9DQo+IC0NCj4gLSAgICBzdXNwZW5kRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBGQUxT
RSwgRkFMU0UsIE5VTEwpOw0KPiAtICAgIGlmICghc3VzcGVuZEV2ZW50KSB7DQo+IC0gICAgICAg
IFByaW50RXJyb3IoIkNyZWF0ZUV2ZW50KCkgc3VzcGVuZEV2ZW50Iik7DQo+IC0gICAgICAgIHJl
dHVybiBleGl0Ow0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIGlmIChMaXN0ZW5TdXNwZW5kKHN1c3Bl
bmRFdmVudCwgd21pZXJyb3JFdmVudCkgPCAwKSB7DQo+IC0gICAgICAgIFByaW50RXJyb3IoIkxp
c3RlblN1c3BlbmQoKSIpOw0KPiAtICAgICAgICBDbG9zZUhhbmRsZShzdXNwZW5kRXZlbnQpOw0K
PiAtICAgICAgICBzdXNwZW5kRXZlbnQgPSBOVUxMOw0KPiAtICAgICAgICByZXR1cm4gZXhpdDsN
Cj4gLSAgICB9DQo+IC0NCj4gLQ0KPiAtICAgIFhzTG9nKCJBYm91dCB0byBhZHZlcnRpc2UgZmVh
dHVyZXMiKTsNCj4gLSAgICBBZHZlcnRpc2VGZWF0dXJlcygmZmVhdHVyZXMpOw0KPiAtDQo+IC0g
ICAgWHNMb2coIkFib3V0IHRvIGtpY2sgeGFwaSAiKTsNCj4gLSAgICBYZW5zdG9yZUtpY2tYYXBp
KCk7DQo+IC0NCj4gLSAgICB3aGlsZSAoMSkNCj4gLSAgICB7DQo+IC0gICAgICAgIERXT1JEIHN0
YXR1czsNCj4gLSAgICAgICAgaW50IG5yX2hhbmRsZXMgPSAxOw0KPiAtICAgICAgICBIQU5ETEUg
aGFuZGxlc1szICsgTUFYX0ZFQVRVUkVTXTsNCj4gLSAgICAgICAgdW5zaWduZWQgeDsNCj4gLQ0K
PiAtICAgICAgICBoYW5kbGVzWzBdID0gaFNlcnZpY2VFeGl0RXZlbnQ7DQo+IC0gICAgICAgIGlm
ICh3bWllcnJvckV2ZW50KQ0KPiAtICAgICAgICAgICAgaGFuZGxlc1tucl9oYW5kbGVzKytdID0g
d21pZXJyb3JFdmVudDsNCj4gLSAgICAgICAgaWYgKHN1c3BlbmRFdmVudCkNCj4gLSAgICAgICAg
ICAgIGhhbmRsZXNbbnJfaGFuZGxlcysrXSA9IHN1c3BlbmRFdmVudDsNCj4gLSAgICAgICAgZm9y
ICh4ID0gMDsgeCA8IGZlYXR1cmVzLm5yX2ZlYXR1cmVzOyB4KyspDQo+IC0gICAgICAgICAgICBo
YW5kbGVzW25yX2hhbmRsZXMrK10gPSBmZWF0dXJlcy5mZWF0dXJlc1t4XS53YXRjaC0+ZXZlbnQ7
DQo+IC0NCj4gLSAgICAgICAgWHNMb2coIndpbiBhZ2VudCBnb2luZyB0byBzbGVlcCIpOw0KPiAt
ICAgICAgICBzdGF0dXMgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKG5yX2hhbmRsZXMsIGhhbmRs
ZXMsIEZBTFNFLCBJTkZJTklURSk7DQo+IC0gICAgICAgIFhzTG9nKCJ3aW4gYWdlbnQgd29rZSB1
cCBmb3IgJWQiLCBzdGF0dXMpOw0KPiAtDQo+IC0gICAgICAgIC8qIFdBSVRfT0JKRUNUXzAgaGFw
cGVucyB0byBiZSAwLCBzbyB0aGUgY29tcGlsZXIgZ2V0cyBzaGlydHkNCj4gLSAgICAgICAgICAg
YWJvdXQgc3RhdHVzID49IFdBSVRfT0JKRUNUXzAgKHNpbmNlIHN0YXR1cyBpcyB1bnNpZ25lZCku
DQo+IC0gICAgICAgICAgIFRoaXMgaXMgbW9yZSBvYnZpb3VzbHkgY29ycmVjdCB0aGFuIHRoZSBj
b21waWxlci1mcmllbmRseQ0KPiAtICAgICAgICAgICB2ZXJzaW9uLCB0aG91Z2gsIHNvIGp1c3Qg
ZGlzYWJsZSB0aGUgd2FybmluZy4gKi8NCj4gLQ0KPiAtI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxl
OiA0Mjk2KQ0KPiAtICAgICAgICBpZiAoc3RhdHVzID49IFdBSVRfT0JKRUNUXzAgJiYNCj4gLSAg
ICAgICAgICAgIHN0YXR1cyA8IFdBSVRfT0JKRUNUXzAgKyBucl9oYW5kbGVzKQ0KPiAtI3ByYWdt
YSB3YXJuaW5nIChkZWZhdWx0OiA0Mjk2KQ0KPiAtICAgICAgICB7DQo+IC0gICAgICAgICAgICBI
QU5ETEUgZXZlbnQgPSBoYW5kbGVzW3N0YXR1cyAtIFdBSVRfT0JKRUNUXzBdOw0KPiAtICAgICAg
ICAgICAgaWYgKGV2ZW50ID09IGhTZXJ2aWNlRXhpdEV2ZW50KQ0KPiAtICAgICAgICAgICAgew0K
PiAtICAgICAgICAgICAgICAgIFhzTG9nKCJzZXJ2aWNlIGV4aXQgZXZlbnQiKTsNCj4gLSAgICAg
ICAgICAgICAgICBleGl0ID0gdHJ1ZTsNCj4gLSAgICAgICAgICAgICAgICBicmVhazsNCj4gLSAg
ICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09IHN1c3BlbmRFdmVu
dCkNCj4gLSAgICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgICAgICBpZiAoIVJlcG9ydEV2ZW50
KGV2ZW50TG9nLCBFVkVOVExPR19TVUNDRVNTLCAwLA0KPiBFVkVOVF9YRU5VU0VSX1VOU1VTUEVO
REVELCBOVUxMLCAwLCAwLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5V
TEwpKSB7DQo+IC0gICAgICAgICAgICAgICAgICAgIFhzTG9nKCJDYW5ub3Qgc2VuZCB0byBldmVu
dCBsb2cgJXgiLEdldExhc3RFcnJvcigpKTsNCj4gLSAgICAgICAgICAgICAgICB9DQo+IC0gICAg
ICAgICAgICAgICAgWHNMb2coIlN1c3BlbmQgZXZlbnQiKTsNCj4gLSAgICAgICAgICAgICAgICBm
aW5pc2hTdXNwZW5kKCk7DQo+IC0gICAgICAgICAgICAgICAgQWR2ZXJ0aXNlRmVhdHVyZXMoJmZl
YXR1cmVzKTsNCj4gLSAgICAgICAgICAgICAgICBYZW5zdG9yZUtpY2tYYXBpKCk7DQo+IC0gICAg
ICAgICAgICAgICAgWHNMb2coIkhhbmRsZWQgc3VzcGVuZCBldmVudCIpOw0KPiAtICAgICAgICAg
ICAgfQ0KPiAtICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT0gd21pZXJyb3JFdmVudCkNCj4g
LSAgICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgICAgICBSZXBvcnRFdmVudChldmVudExvZywg
RVZFTlRMT0dfU1VDQ0VTUywgMCwNCj4gRVZFTlRfWEVOVVNFUl9XTUksIE5VTEwsIDAsIDAsDQo+
IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7DQo+IC0gICAgICAgICAg
ICAgICAgYnJlYWs7DQo+IC0gICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICBlbHNlDQo+IC0g
ICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgQk9PTCBmYWlsID0gZmFsc2U7DQo+IC0g
ICAgICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IGZlYXR1cmVzLm5yX2ZlYXR1cmVzOyB4Kysp
IHsNCj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmVzLmZlYXR1cmVzW3hdLndhdGNo
LT5ldmVudCA9PSBldmVudCkgew0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgWHNMb2coIkZp
cmUgJXAiLGZlYXR1cmVzLmZlYXR1cmVzW3hdLm5hbWUpOw0KPiAtICAgICAgICAgICAgICAgICAg
ICAgICAgWHNMb2coImZpcmUgZmVhdHVyZSAlcyIsIGZlYXR1cmVzLmZlYXR1cmVzW3hdLm5hbWUp
Ow0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIkV2ZW50IHRy
aWdnZXJlZFxuIik7DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmZWF0dXJlcy5m
ZWF0dXJlc1t4XS5oYW5kbGVyKGZlYXR1cmVzLmZlYXR1cmVzW3hdLmN0eCkpKQ0KPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgew0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhzTG9n
KCJGaXJpbmcgZmVhdHVyZSBmYWlsZWQiKTsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcmludEVycm9yKCJGZWF0dXJlIGZhaWxlZCIpOw0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWwgPSB0cnVlOw0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAtICAg
ICAgICAgICAgICAgICAgICAgICAgWHNMb2coImZpcmVkIGZlYXR1cmUgJXMiLA0KPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcy5mZWF0dXJlc1t4XS5uYW1lKTsNCj4g
LSAgICAgICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgICAgIH0NCj4gLSAgICAgICAg
ICAgICAgICBpZiAoZmFpbCkgew0KPiAtICAgICAgICAgICAgICAgICAgICBYc0xvZygiUmVzZXR0
aW5nIik7DQo+IC0gICAgICAgICAgICAgICAgICAgIFJlcG9ydEV2ZW50KGV2ZW50TG9nLCBFVkVO
VExPR19TVUNDRVNTLCAwLA0KPiBFVkVOVF9YRU5VU0VSX1VORVhQRUNURUQsIE5VTEwsIDAsIDAs
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOw0KPiAtICAg
ICAgICAgICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgICAgICAgICB9DQo+IC0gICAgICAg
ICAgICB9DQo+IC0gICAgICAgIH0NCj4gLSAgICAgICAgZWxzZQ0KPiAtICAgICAgICB7DQo+IC0g
ICAgICAgICAgICBQcmludEVycm9yKCJXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKCkiKTsNCj4gLSAg
ICAgICAgICAgIGJyZWFrOw0KPiAtICAgICAgICB9DQo+IC0gICAgfQ0KPiAtICAgIE91dHB1dERl
YnVnU3RyaW5nKCJXTUkgV2F0Y2ggbG9vcCB0ZXJtaW5hdGVkXG4iKTsNCj4gLSAgICBSZW1vdmVG
ZWF0dXJlcygmZmVhdHVyZXMpOw0KPiAtICAgIFhlbnN0b3JlS2lja1hhcGkoKTsNCj4gLQ0KPiAt
ICAgIFhzTG9nKCJHdWVzdCBhZ2VudCBsaXRlIGxvb3AgZmluaXNoaW5nIik7DQo+IC0gICAgUmVs
ZWFzZVdNSUFjY2Vzc29yKCZ3bWkpOw0KPiAtDQo+IC0NCj4gLQ0KPiAtDQo+IC0gICAgWHNMb2co
Ikd1ZXN0IGFnZW50IGxpdGUgbG9vcCBmaW5pc2hlZCAlZCIsIGV4aXQpOw0KPiAtICAgIHJldHVy
biBleGl0Ow0KPiAtfQ0KPiAtDQo+IC0NCj4gLS8vIFNlcnZpY2UgaW5pdGlhbGl6YXRpb24NCj4g
LWJvb2wgU2VydmljZUluaXQoKQ0KPiAtew0KPiAtICAgIFNlcnZpY2VTdGF0dXMuZHdTZXJ2aWNl
VHlwZSAgICAgICAgPSBTRVJWSUNFX1dJTjMyOw0KPiAtICAgIFNlcnZpY2VTdGF0dXMuZHdDdXJy
ZW50U3RhdGUgICAgICAgPSBTRVJWSUNFX1NUQVJUX1BFTkRJTkc7DQo+IC0gICAgU2VydmljZVN0
YXR1cy5kd0NvbnRyb2xzQWNjZXB0ZWQgICA9DQo+IC0gICAgICAgIFNFUlZJQ0VfQUNDRVBUX1NU
T1AgfCBTRVJWSUNFX0FDQ0VQVF9TSFVURE9XTiB8DQo+IC0gICAgICAgIFNFUlZJQ0VfQUNDRVBU
X1NFU1NJT05DSEFOR0U7DQo+IC0gICAgU2VydmljZVN0YXR1cy5kd1dpbjMyRXhpdENvZGUgICAg
ICA9IDA7DQo+IC0gICAgU2VydmljZVN0YXR1cy5kd1NlcnZpY2VTcGVjaWZpY0V4aXRDb2RlID0g
MDsNCj4gLSAgICBTZXJ2aWNlU3RhdHVzLmR3Q2hlY2tQb2ludCAgICAgICAgID0gMDsNCj4gLSAg
ICBTZXJ2aWNlU3RhdHVzLmR3V2FpdEhpbnQgICAgICAgICAgID0gMDsNCj4gLQ0KPiAtICAgIGhT
dGF0dXMgPSBSZWdpc3RlclNlcnZpY2VDdHJsSGFuZGxlckV4KA0KPiAtICAgICAgICAiWGVuU2Vy
dmljZSIsDQo+IC0gICAgICAgIFNlcnZpY2VDb250cm9sSGFuZGxlciwNCj4gLSAgICAgICAgTlVM
TCk7DQo+IC0gICAgaWYgKGhTdGF0dXMgPT0gKFNFUlZJQ0VfU1RBVFVTX0hBTkRMRSkwKQ0KPiAt
ICAgIHsNCj4gLSAgICAgICAgLy8gUmVnaXN0ZXJpbmcgQ29udHJvbCBIYW5kbGVyIGZhaWxlZA0K
PiAtICAgICAgICBEQkdQUklOVCgoIlhlblN2YzogUmVnaXN0ZXJpbmcgc2VydmljZSBjb250cm9s
IGhhbmRsZXIgZmFpbGVkIC0gJWRcbiIsDQo+IEdldExhc3RFcnJvcigpKSk7DQo+IC0gICAgICAg
IHJldHVybiBmYWxzZTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBTZXJ2aWNlU3RhdHVzLmR3Q3Vy
cmVudFN0YXRlID0gU0VSVklDRV9SVU5OSU5HOw0KPiAtICAgIFNldFNlcnZpY2VTdGF0dXMgKGhT
dGF0dXMsICZTZXJ2aWNlU3RhdHVzKTsNCj4gLQ0KPiAtICAgIHJldHVybiB0cnVlOw0KPiAtfQ0K
PiAtDQo+IC12b2lkIFdJTkFQSSBTZXJ2aWNlTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpDQo+
IC17DQo+IC0gICAgLy8gUGVyZm9ybSBjb21tb24gaW5pdGlhbGl6YXRpb24NCj4gLSAgICBldmVu
dExvZyA9IFJlZ2lzdGVyRXZlbnRTb3VyY2UoTlVMTCwgInhlbnN2YyIpOw0KPiAtICAgIGhTZXJ2
aWNlRXhpdEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgZmFsc2UsIGZhbHNlLCBOVUxMKTsNCj4g
LSAgICBpZiAoaFNlcnZpY2VFeGl0RXZlbnQgPT0gTlVMTCkNCj4gLSAgICB7DQo+IC0gICAgICAg
IERCR1BSSU5UKCgiWGVuU3ZjOiBVbmFibGUgdG8gY3JlYXRlIHRoZSBldmVudCBvYmogLSAlZFxu
IiwNCj4gR2V0TGFzdEVycm9yKCkpKTsNCj4gLSAgICAgICAgcmV0dXJuOw0KPiAtICAgIH0NCj4g
LQ0KPiAtICAgIGlmICghU2VydmljZUluaXQoKSkNCj4gLSAgICB7DQo+IC0gICAgICAgIERCR1BS
SU5UKCgiWGVuU3ZjOiBVbmFibGUgdG8gaW5pdCB4ZW5zZXJ2aWNlXG4iKSk7DQo+IC0gICAgICAg
IHJldHVybjsNCj4gLSAgICB9DQo+IC0gICAgQk9PTCBzdG9wcGluZzsNCj4gLQ0KPiAtICAgIGRv
IHsNCj4gLQ0KPiAtICAgICAgICBfX3RyeQ0KPiAtICAgICAgICB7DQo+IC0gICAgICAgICAgICBz
dG9wcGluZyA9IFJ1bigpOw0KPiAtDQo+IC0gICAgICAgIH0NCj4gLSAgICAgICAgX19leGNlcHQo
RVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUikNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAg
X190cnkgew0KPiAtICAgICAgICAgICAgICAgIFhzTG9nKCJFeGNlcHRpb24gaGl0ICV4IiwgR2V0
RXhjZXB0aW9uQ29kZSgpKTsNCj4gLSAgICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgIF9fZXhj
ZXB0KEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIpDQo+IC0gICAgICAgICAgICB7DQo+IC0gICAg
ICAgICAgICB9DQo+IC0gICAgICAgICAgICBzdG9wcGluZyA9IGZhbHNlOw0KPiAtICAgICAgICB9
DQo+IC0gICAgfSB3aGlsZSAoIXN0b3BwaW5nKTsNCj4gLQ0KPiAtICAgIFhzTG9nKCJHdWVzdCBh
Z2VudCBzZXJ2aWNlIHN0b3BwZWQiKTsNCj4gLSAgICBTaHV0ZG93blhTQWNjZXNzb3IoKTsNCj4g
LSAgICBEZXJlZ2lzdGVyRXZlbnRTb3VyY2UoZXZlbnRMb2cpOw0KPiAtICAgIFNlcnZpY2VDb250
cm9sTWFuYWdlclVwZGF0ZSgwLCBTRVJWSUNFX1NUT1BQRUQpOw0KPiAtICAgIHJldHVybjsNCj4g
LX0NCj4gLQ0KPiAtdm9pZCBTZXJ2aWNlQ29udHJvbE1hbmFnZXJVcGRhdGUoRFdPUkQgZHdFeGl0
Q29kZSwgRFdPUkQgZHdTdGF0ZSkNCj4gLXsNCj4gLSAgICBTZXJ2aWNlU3RhdHVzLmR3V2luMzJF
eGl0Q29kZSA9IGR3RXhpdENvZGU7DQo+IC0gICAgU2VydmljZVN0YXR1cy5kd0N1cnJlbnRTdGF0
ZSAgPSBkd1N0YXRlOw0KPiAtICAgIFNldFNlcnZpY2VTdGF0dXMgKGhTdGF0dXMsICZTZXJ2aWNl
U3RhdHVzKTsNCj4gLX0NCj4gLQ0KPiAtLy8gU2VydmljZSBjb250cm9sIGhhbmRsZXIgZnVuY3Rp
b24NCj4gLXN0YXRpYyBEV09SRCBXSU5BUEkgU2VydmljZUNvbnRyb2xIYW5kbGVyKERXT1JEIHJl
cXVlc3QsIERXT1JEDQo+IGV2dFR5cGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMUFZPSUQgZXZlbnREYXRhLCBMUFZPSUQgY3R4dCkNCj4gLXsNCj4gLSAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKGN0eHQpOw0KPiAtICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoZXZlbnREYXRhKTsNCj4gLQ0KPiAtICAgIHN3aXRjaChyZXF1ZXN0KQ0KPiAtICAgIHsN
Cj4gLSAgICAgICAgY2FzZSBTRVJWSUNFX0NPTlRST0xfU1RPUDoNCj4gLSAgICAgICAgICAgIERC
R1BSSU5UKCgiWGVuU3ZjOiB4ZW5zZXJ2aWNlIHN0b3BwZWQuXG4iKSk7DQo+IC0gICAgICAgICAg
ICBTZXJ2aWNlQ29udHJvbE1hbmFnZXJVcGRhdGUoMCwgU0VSVklDRV9TVE9QX1BFTkRJTkcpOw0K
PiAtICAgICAgICAgICAgU2V0RXZlbnQoaFNlcnZpY2VFeGl0RXZlbnQpOw0KPiAtICAgICAgICAg
ICAgcmV0dXJuIE5PX0VSUk9SOw0KPiAtDQo+IC0gICAgICAgIGNhc2UgU0VSVklDRV9DT05UUk9M
X1NIVVRET1dOOg0KPiAtICAgICAgICAgICAgREJHUFJJTlQoKCJYZW5TdmM6IHhlbnNlcnZpY2Ug
c2h1dGRvd24uXG4iKSk7DQo+IC0gICAgICAgICAgICBTZXJ2aWNlQ29udHJvbE1hbmFnZXJVcGRh
dGUoMCwgU0VSVklDRV9TVE9QX1BFTkRJTkcpOw0KPiAtICAgICAgICAgICAgU2V0RXZlbnQoaFNl
cnZpY2VFeGl0RXZlbnQpOw0KPiAtICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOw0KPiAtDQo+
IC0gICAgICAgIGRlZmF1bHQ6DQo+IC0gICAgICAgIERCR1BSSU5UKCgiWGVuU3ZjOiB1bmtub3du
IHJlcXVlc3QuIikpOw0KPiAtICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgfQ0KPiAtDQo+IC0g
ICAgU2VydmljZUNvbnRyb2xNYW5hZ2VyVXBkYXRlKDAsIFNFUlZJQ0VfUlVOTklORyk7DQo+IC0g
ICAgcmV0dXJuIEVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVEOw0KPiAtfQ0KPiBkaWZmIC0tZ2l0
IGEvc3JjL3dpbjMyc3R1YmFnZW50L1hTZXJ2aWNlLmggYi9zcmMvd2luMzJzdHViYWdlbnQvWFNl
cnZpY2UuaA0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMzJlZTE2My4uMDAw
MDAwMA0KPiAtLS0gYS9zcmMvd2luMzJzdHViYWdlbnQvWFNlcnZpY2UuaA0KPiArKysgL2Rldi9u
dWxsDQo+IEBAIC0xLDU0ICswLDAgQEANCj4gLS8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3Rl
bXMgSW5jLg0KPiAtICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiAtICogd2l0aCBv
ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiAtICogdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gLSAqDQo+IC0gKiAqICAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAtICog
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4g
LSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+IC0gKiAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAgIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiAt
ICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+IC0gKg0K
PiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EDQo+IC0gKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLA0KPiAtICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gLSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+IC0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiAtICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+IC0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAtICog
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+
IC0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
DQo+IC0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwNCj4gLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORw0KPiAtICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiAtICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiAtICogU1VDSCBEQU1BR0UuDQo+
IC0gKi8NCj4gLQ0KPiAtI2lmbmRlZiBfWFNFUlZJQ0VfSA0KPiAtI2RlZmluZSBfWFNFUlZJQ0Vf
SA0KPiAtDQo+IC0jaW5jbHVkZSA8dmVyc2lvbi5oPg0KPiAtDQo+IC0jZGVmaW5lIFNWQ19OQU1F
ICJ4ZW5zdmMiDQo+IC0jZGVmaW5lIFNWQ19ESVNQTEFZTkFNRSBQUk9EVUNUX05BTUVfU1RSICMj
ICJJbnRlcmZhY2UgU2VydmljZSINCj4gLSNkZWZpbmUgU1ZDX0RFU0MgIk1vbml0b3JzIGFuZCBw
cm92aWRlcyB2YXJpb3VzIG1ldHJpY3MgdG8gWGVuU3RvcmUiDQo+IC0NCj4gLXZvaWQgUHJpbnRF
cnJvcihjb25zdCBjaGFyICpmdW5jKTsNCj4gLXZvaWQgUHJpbnRFcnJvcihjb25zdCBjaGFyICpm
dW5jLCBEV09SRCBlcnIpOw0KPiAtdm9pZCBTdGFydENsaXBib2FyZFN5bmModm9pZCk7DQo+IC12
b2lkIEZpbmlzaENsaXBib2FyZFN5bmModm9pZCk7DQo+IC12b2lkIENsaXBib2FyZENvbnNvbGVD
aGFuZ2VkKHZvaWQpOw0KPiAtDQo+IC12b2lkIFhzRHVtcExvZ1RoaXNUaHJlYWQodm9pZCk7DQo+
IC12b2lkIFhzSW5pdFBlclRocmVhZExvZ2dpbmcodm9pZCk7DQo+IC12b2lkIFhzTG9nTXNnKGNv
bnN0IGNoYXIgKmZtdCwgLi4uKTsNCj4gLXZvaWQgRG9Wb2x1bWVEdW1wKHZvaWQpOw0KPiAtDQo+
IC12b2lkIEFjcXVpcmVTeXN0ZW1Qcml2aWxlZ2UoTFBDVFNUUiBuYW1lKTsNCj4gLQ0KPiAtI2Vu
ZGlmDQo+IGRpZmYgLS1naXQgYS9zcmMvd2luMzJzdHViYWdlbnQvZXJyb3JzLmNwcCBiL3NyYy93
aW4zMnN0dWJhZ2VudC9lcnJvcnMuY3BwDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBp
bmRleCBjYWY0N2NjLi4wMDAwMDAwDQo+IC0tLSBhL3NyYy93aW4zMnN0dWJhZ2VudC9lcnJvcnMu
Y3BwDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsMTAyICswLDAgQEANCj4gLS8qIENvcHlyaWdo
dCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiAtICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g
LSAqDQo+IC0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLA0KPiAtICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZA0KPiAtICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4g
LSAqDQo+IC0gKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQ0KPiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICog
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
DQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlcg0KPiAtICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IC0gKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiAtICogSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gLSAqIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+IC0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiAtICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsDQo+IC0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLA0KPiAtICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SDQo+IC0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTDQo+IC0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gLSAqIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiAtICogTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiAtICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiAt
ICogU1VDSCBEQU1BR0UuDQo+IC0gKi8NCj4gLQ0KPiAtLyogQmxhY2stYm94IGRhdGEgcmVjb3Jk
ZXIuICBUaGlzIHJlY29yZHMgc3R1ZmYgd2hpY2ggaXMgaGFwcGVuaW5nDQo+IC0gICB3aGlsZSB0
aGUgYWdlbnQgcnVucywgYW5kIHRyaWVzIHRvIHB1c2ggaXQgb3V0IHRvIGRvbTAgc3lzbG9nIGlm
IHdlDQo+IC0gICBjcmFzaC4gKi8NCj4gLSNpbmNsdWRlICJzdGRhZnguaCINCj4gLSNpbmNsdWRl
IDx3aW5kb3dzLmg+DQo+IC0jaW5jbHVkZSA8c3RkYXJnLmg+DQo+IC0jaW5jbHVkZSA8c3RkaW8u
aD4NCj4gLSNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gLSNpbmNsdWRlICJYU2VydmljZS5oIg0KPiAt
I2luY2x1ZGUgIlhTQWNjZXNzb3IuaCINCj4gLQ0KPiAtDQo+IC0jZGVmaW5lIFJJTkdfU0laRSA4
MTkyDQo+IC0NCj4gLXN0cnVjdCBtZXNzYWdlX3Jpbmcgew0KPiAtICAgIEhBTkRMRSBoYW5kbGU7
DQo+IC0gICAgdW5zaWduZWQgcHJvZF9pZHg7DQo+IC0gICAgdW5zaWduZWQgY29uc19pZHg7DQo+
IC0gICAgdW5zaWduZWQgY2hhciBwYXlsb2FkW1JJTkdfU0laRV07DQo+IC19Ow0KPiAtDQo+IC1z
dGF0aWMgX19kZWNsc3BlYyh0aHJlYWQpIHN0cnVjdCBtZXNzYWdlX3JpbmcgbWVzc2FnZV9yaW5n
Ow0KPiAtDQo+IC1zdGF0aWMgY2hhciAqDQo+IC1Yc3Zhc3ByaW50Zihjb25zdCBjaGFyICpmbXQs
IHZhX2xpc3QgYXJncykNCj4gLXsNCj4gLSAgICBjaGFyICp3b3JrOw0KPiAtICAgIGludCB3b3Jr
X3NpemU7DQo+IC0gICAgaW50IHI7DQo+IC0NCj4gLSAgICB3b3JrX3NpemUgPSAzMjsNCj4gLSAg
ICB3aGlsZSAoMSkgew0KPiAtICAgICAgICB3b3JrID0gKGNoYXIgKiltYWxsb2Mod29ya19zaXpl
KTsNCj4gLSAgICAgICAgaWYgKCF3b3JrKQ0KPiAtICAgICAgICAgICAgcmV0dXJuIHdvcms7DQo+
IC0gICAgICAgIHIgPSBfdnNucHJpbnRmKHdvcmssIHdvcmtfc2l6ZSwgZm10LCBhcmdzKTsNCj4g
LSAgICAgICAgaWYgKHIgPT0gMCkgew0KPiAtICAgICAgICAgICAgZnJlZSh3b3JrKTsNCj4gLSAg
ICAgICAgICAgIHJldHVybiBOVUxMOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIGlmIChyICE9
IC0xICYmIHIgPCB3b3JrX3NpemUpIHsNCj4gLSAgICAgICAgICAgIHJldHVybiB3b3JrOw0KPiAt
ICAgICAgICB9DQo+IC0gICAgICAgIGZyZWUod29yayk7DQo+IC0gICAgICAgIHdvcmtfc2l6ZSAq
PSAyOw0KPiAtICAgIH0NCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGNoYXIgKg0KPiAtWHNhc3ByaW50
Zihjb25zdCBjaGFyICpmbXQsIC4uLikNCj4gLXsNCj4gLSAgICB2YV9saXN0IGFyZ3M7DQo+IC0g
ICAgY2hhciAqcmVzOw0KPiAtDQo+IC0gICAgdmFfc3RhcnQoYXJncywgZm10KTsNCj4gLSAgICBy
ZXMgPSBYc3Zhc3ByaW50ZihmbXQsIGFyZ3MpOw0KPiAtICAgIHZhX2VuZChhcmdzKTsNCj4gLSAg
ICByZXR1cm4gcmVzOw0KPiAtfQ0KPiAtDQo+IC12b2lkDQo+IC1Yc0xvZ01zZyhjb25zdCBjaGFy
ICpmbXQsIC4uLikNCj4gLXsNCj4gLSAgICB2YV9saXN0IGFyZ3M7DQo+IC0NCj4gLSAgICB2YV9z
dGFydChhcmdzLCBmbXQpOw0KPiAtICAgIFhzTG9nKGZtdCwgYXJncyk7DQo+IC0gICAgdmFfZW5k
KGFyZ3MpOw0KPiAtfQ0KPiAtDQo+IC0NCj4gZGlmZiAtLWdpdCBhL3NyYy93aW4zMnN0dWJhZ2Vu
dC9tZXNzYWdlcy5tYw0KPiBiL3NyYy93aW4zMnN0dWJhZ2VudC9tZXNzYWdlcy5tYw0KPiBkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDI4OWM0NC4uMDAwMDAwMA0KPiAtLS0gYS9z
cmMvd2luMzJzdHViYWdlbnQvbWVzc2FnZXMubWMNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSw2
NiArMCwwIEBADQo+IC1TZXZlcml0eU5hbWVzPShJbmZvcm1hdGlvbmFsPTB4MSkNCj4gLUZhY2ls
aXR5TmFtZXM9KFhlblVzZXI9MHhkNjApDQo+IC0NCj4gLU1lc3NhZ2VJZD0weDAwMDENCj4gLUZh
Y2lsaXR5PVhlblVzZXINCj4gLVNldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4gLVN5bWJvbGljTmFt
ZT1FVkVOVF9YRU5VU0VSX1BPV0VST0ZGDQo+IC1MYW5ndWFnZT1FbmdsaXNoDQo+IC1UaGUgdG9v
bHMgcmVxdWVzdGVkIHRoYXQgdGhlIGxvY2FsIFZNIHNodXQgaXRzZWxmIGRvd24uDQo+IC0uDQo+
IC0NCj4gLU1lc3NhZ2VJZD0weDAwMDINCj4gLUZhY2lsaXR5PVhlblVzZXINCj4gLVNldmVyaXR5
PUluZm9ybWF0aW9uYWwNCj4gLVN5bWJvbGljTmFtZT1FVkVOVF9YRU5VU0VSX1JFQk9PVA0KPiAt
TGFuZ3VhZ2U9RW5nbGlzaA0KPiAtVGhlIHRvb2xzIHJlcXVlc3RlZCB0aGF0IHRoZSBsb2NhbCBW
TSByZWJvb3QuDQo+IC0uDQo+IC0NCj4gLU1lc3NhZ2VJZD0weDAwMDMNCj4gLUZhY2lsaXR5PVhl
blVzZXINCj4gLVNldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4gLVN5bWJvbGljTmFtZT1FVkVOVF9Y
RU5VU0VSX0hJQkVSTkFURQ0KPiAtTGFuZ3VhZ2U9RW5nbGlzaA0KPiAtVGhlIHRvb2xzIHJlcXVl
c3RlZCB0aGF0IHRoZSBsb2NhbCBWTSBoaWJlcm5hdGUgaXRzZWxmLg0KPiAtLg0KPiAtDQo+IC1N
ZXNzYWdlSWQ9MHgwMDA0DQo+IC1GYWNpbGl0eT1YZW5Vc2VyDQo+IC1TZXZlcml0eT1JbmZvcm1h
dGlvbmFsDQo+IC1TeW1ib2xpY05hbWU9RVZFTlRfWEVOVVNFUl9TMw0KPiAtTGFuZ3VhZ2U9RW5n
bGlzaA0KPiAtVGhlIHRvb2xzIHJlcXVlc3RlZCB0aGF0IHRoZSBsb2NhbCBWTSBlbnRlciBwb3dl
ciBzdGF0ZSBTMy4NCj4gLS4NCj4gLQ0KPiAtTWVzc2FnZUlkPTB4MDAwNQ0KPiAtRmFjaWxpdHk9
WGVuVXNlcg0KPiAtU2V2ZXJpdHk9SW5mb3JtYXRpb25hbA0KPiAtU3ltYm9saWNOYW1lPUVWRU5U
X1hFTlVTRVJfV01JDQo+IC1MYW5ndWFnZT1FbmdsaXNoDQo+IC1UaGUgdG9vbHMgbm90aWNlZCB0
aGF0IFdNSSBiZWNhbWUgbm9uLWZ1bmN0aW9uYWwuDQo+IC0uDQo+IC0NCj4gLU1lc3NhZ2VJZD0w
eDAwMDYNCj4gLUZhY2lsaXR5PVhlblVzZXINCj4gLVNldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4g
LVN5bWJvbGljTmFtZT1FVkVOVF9YRU5VU0VSX1NUQVJURUQNCj4gLUxhbmd1YWdlPUVuZ2xpc2gN
Cj4gLVRoZSB0b29scyBpbml0aWF0ZWQuDQo+IC0uDQo+IC0NCj4gLU1lc3NhZ2VJZD0weDAwMDcN
Cj4gLUZhY2lsaXR5PVhlblVzZXINCj4gLVNldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4gLVN5bWJv
bGljTmFtZT1FVkVOVF9YRU5VU0VSX1VOU1VTUEVOREVEDQo+IC1MYW5ndWFnZT1FbmdsaXNoDQo+
IC1UaGUgdG9vbHMgcmV0dXJuZWQgZnJvbSBzdXNwZW5kLg0KPiAtLg0KPiAtDQo+IC1NZXNzYWdl
SWQ9MHgwMDA4DQo+IC1GYWNpbGl0eT1YZW5Vc2VyDQo+IC1TZXZlcml0eT1JbmZvcm1hdGlvbmFs
DQo+IC1TeW1ib2xpY05hbWU9RVZFTlRfWEVOVVNFUl9VTkVYUEVDVEVEDQo+IC1MYW5ndWFnZT1F
bmdsaXNoDQo+IC1UaGUgdG9vbHMgZXhwZXJpZW5jZWQgYW4gdW5leHBlY3RlZCBlcnJvci4NCj4g
LS4NCj4gZGlmZiAtLWdpdCBhL3NyYy93aW4zMnN0dWJhZ2VudC9zdGRhZnguY3BwIGIvc3JjL3dp
bjMyc3R1YmFnZW50L3N0ZGFmeC5jcHANCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu
ZGV4IDcyY2VkNzkuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1YmFnZW50L3N0ZGFmeC5j
cHANCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSwzOSArMCwwIEBADQo+IC0vKiBDb3B5cmlnaHQg
KGMpIENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0g
Kg0KPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywNCj4gLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQNCj4gLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+IC0g
Kg0KPiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAqICAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0K
PiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXINCj4gLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLg0KPiAtICoNCj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LA0KPiAtICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywNCj4gLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUg0KPiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gLSAq
IFNVQ0ggREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLS8vIHN0ZGFmeC5jcHAgOiBzb3VyY2UgZmls
ZSB0aGF0IGluY2x1ZGVzIGp1c3QgdGhlIHN0YW5kYXJkIGluY2x1ZGVzDQo+IC0vLyBYZW5TZXJ2
aWNlLnBjaCB3aWxsIGJlIHRoZSBwcmUtY29tcGlsZWQgaGVhZGVyDQo+IC0vLyBzdGRhZngub2Jq
IHdpbGwgY29udGFpbiB0aGUgcHJlLWNvbXBpbGVkIHR5cGUgaW5mb3JtYXRpb24NCj4gLQ0KPiAt
I2luY2x1ZGUgInN0ZGFmeC5oIg0KPiAtDQo+IC0vLyBUT0RPOiByZWZlcmVuY2UgYW55IGFkZGl0
aW9uYWwgaGVhZGVycyB5b3UgbmVlZCBpbiBTVERBRlguSA0KPiAtLy8gYW5kIG5vdCBpbiB0aGlz
IGZpbGUNCj4gZGlmZiAtLWdpdCBhL3NyYy93aW4zMnN0dWJhZ2VudC9zdGRhZnguaCBiL3NyYy93
aW4zMnN0dWJhZ2VudC9zdGRhZnguaA0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k
ZXggMzkxYTg0OC4uMDAwMDAwMA0KPiAtLS0gYS9zcmMvd2luMzJzdHViYWdlbnQvc3RkYWZ4LmgN
Cj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSw0MyArMCwwIEBADQo+IC0vKiBDb3B5cmlnaHQgKGMp
IENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0K
PiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywN
Cj4gLSAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQNCj4gLSAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+IC0gKg0K
PiAtICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUNCj4gLSAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlDQo+IC0gKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAqICAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiAt
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXINCj4gLSAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLg0KPiAtICoNCj4gLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORA0KPiAtICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gLSAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+IC0gKiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAtICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0K
PiAtICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywNCj4gLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUg0KPiAtICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IC0gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gLSAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNV
Q0ggREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLS8vIHN0ZGFmeC5oIDogaW5jbHVkZSBmaWxlIGZv
ciBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBmaWxlcywNCj4gLS8vIG9yIHByb2plY3Qgc3BlY2lm
aWMgaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSB1c2VkIGZyZXF1ZW50bHksIGJ1dA0KPiAtLy8gYXJl
IGNoYW5nZWQgaW5mcmVxdWVudGx5DQo+IC0vLw0KPiAtDQo+IC0jcHJhZ21hIG9uY2UNCj4gLQ0K
PiAtDQo+IC0jaW5jbHVkZSA8aW9zdHJlYW0+DQo+IC0jaW5jbHVkZSA8dGNoYXIuaD4NCj4gLQ0K
PiAtLy8gVE9ETzogcmVmZXJlbmNlIGFkZGl0aW9uYWwgaGVhZGVycyB5b3VyIHByb2dyYW0gcmVx
dWlyZXMgaGVyZQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL3dpbjMyc3R1YmFnZW50L3czMnhhZ2VudC5y
Yw0KPiBiL3NyYy93aW4zMnN0dWJhZ2VudC93MzJ4YWdlbnQucmMNCj4gZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0DQo+IGluZGV4IDc4ZTVjYzcuLjAwMDAwMDANCj4gLS0tIGEvc3JjL3dpbjMyc3R1
YmFnZW50L3czMnhhZ2VudC5yYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDYwICswLDAgQEAN
Cj4gLS8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiAtICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiAtICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiAtICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoNCj4gLSAqDQo+IC0gKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAtICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gLSAqICAgICBmb2xsb3dpbmcgZGlzY2xh
aW1lci4NCj4gLSAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlDQo+IC0gKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiAtICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiAtICogICAgIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IC0gKiBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiAtICogSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4g
LSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFDQo+IC0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUg0KPiAtICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsDQo+IC0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAtICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+IC0gKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+IC0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gLSAqIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiAt
ICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQ0KPiAtICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRg0KPiAtICogU1VDSCBEQU1BR0UuDQo+IC0gKi8NCj4gLQ0KPiAtDQo+IC0jaW5j
bHVkZSA8d2luZG93cy5oPg0KPiAtI2luY2x1ZGUgPG50dmVycC5oPg0KPiAtDQo+IC0jdW5kZWYg
VkVSX0NPTVBBTllOQU1FX1NUUg0KPiAtI3VuZGVmIFZFUl9QUk9EVUNUTkFNRV9TVFINCj4gLSN1
bmRlZiBWRVJfUFJPRFVDVFZFUlNJT04NCj4gLSN1bmRlZiBWRVJfUFJPRFVDVFZFUlNJT05fU1RS
DQo+IC0NCj4gLSNpbmNsdWRlIDx2ZXJzaW9uLmg+DQo+IC0NCj4gLSNkZWZpbmUgVkVSX0NPTVBB
TllOQU1FX1NUUiAgICAgICAgIFZFTkRPUl9OQU1FX1NUUg0KPiAtI2RlZmluZSBWRVJfTEVHQUxD
T1BZUklHSFRfU1RSICAgICAgIkNvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLiINCj4g
LQ0KPiAtI2RlZmluZSBWRVJfUFJPRFVDVE5BTUVfU1RSICAgICAgICAgIlhFTklGQUNFIg0KPiAt
I2RlZmluZSBWRVJfUFJPRFVDVFZFUlNJT04NCj4gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9O
LE1JQ1JPX1ZFUlNJT04sQlVJTERfTlVNQkVSDQo+IC0jZGVmaW5lIFZFUl9QUk9EVUNUVkVSU0lP
Tl9TVFIgICAgICBNQUpPUl9WRVJTSU9OX1NUUiAiLiINCj4gTUlOT1JfVkVSU0lPTl9TVFIgIi4i
IE1JQ1JPX1ZFUlNJT05fU1RSICIuIiBCVUlMRF9OVU1CRVJfU1RSDQo+IC0NCj4gLSNkZWZpbmUg
VkVSX0lOVEVSTkFMTkFNRV9TVFIgCSAgICAidzMyeGFnZW50LmV4ZSINCj4gLSNkZWZpbmUgVkVS
X0ZJTEVWRVJTSU9OX1NUUiAJICAgICIxLjAiDQo+IC0jZGVmaW5lIFZFUl9GSUxFREVTQ1JJUFRJ
T05fU1RSICAgICAidzMyYWdlbnQiDQo+IC0jZGVmaW5lIFZFUl9PUklHSU5BTEZJTEVOQU1FX1NU
UiAgICAidzMyeGFnZW50LmV4ZSINCj4gLSNkZWZpbmUgVkVSX0ZJTEVUWVBFIFZGVF9BUFANCj4g
LSNkZWZpbmUgVkVSX0ZJTEVTVUJUWVBFIDANCj4gLQ0KPiAteGVuX2ljb24gSUNPTiAieGVuLmlj
byINCj4gLQ0KPiAtI2luY2x1ZGUgImNvbW1vbi52ZXIiDQo+IC0jaW5jbHVkZSAibWVzc2FnZXMu
cmMiDQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL3dp
bjMyc3R1YmFnZW50L3hlbi5pY28gYi9zcmMvd2luMzJzdHViYWdlbnQveGVuLmljbw0KPiBkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gODQ0Yzk5M2JhMjkwZTUwNTVhODkwMGNh
ODc4NmVhMGUwMzExMzhhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA0KPiAwMDAwMDAwMDAw
MDAwMDANCj4gR0lUIGJpbmFyeSBwYXRjaA0KPiBsaXRlcmFsIDANCj4gSGNtVj9kMDAwMDENCj4g
DQo+IGxpdGVyYWwgMjUyMTQNCj4gemNtZUh2MzB6Z2hgfWVSZkR5eGJwJUxQUDBQKkQmO0t1fCEq
QzcwQ1AlNiZLWWwqKkZLNT4zU28xPkU7Rl9YDQo+IFQkfQ0KPiB6dl8jeXUobyNmb3gyJTRabUhO
RVRjZ3tKTmRvTih4cntEWCZ8SWZlQ0AwcG9yb145NE1YVUAzQFZKN1QNCj4gRVhzOHAlDQo+IHpt
U1RYbDVPYWtQSS1RY2dWPWx4cXJhM3QmYDlMIXZacktVdTd0QylmKTtJe15QITlaUi1kMmQ2PyUt
R1ExRlZGMg0KPiB6KF51b3lpOGNPMDkxWU87SW5SN1VUV1Mwe0Z+Q3hZJTVNcjAkVWQrTShTcmZN
NUtAJiRyajBNRFQqI0V2DQo+IFIzK2pvDQo+IHpDbUU/Q0gjZTZITmQ2WkBOSE8+eU5WeG9FdW8q
a0g2clFuVFFffEFManZhMVhXSFVBYFpETHwjVEcNCj4gfUxJblV1N3wNCj4geiNGaG1HaUhYVCto
N3ZYdDZBUDQobXBHfGRsVENfN0UtDQo+IDEpTEY0bU1YayMlU3hQcGA/d2tqekZqTyRKJlpsJFdm
Uw0KPiB6SGV1SGIqaTYoXnQ4dCM5RDVhJGR5K0E0fHArOzN5TEplRG5xTGh9V3hWPnBBbCU9WilD
fVE9WEtWfnUqNQ0KPiBXQGh9DQo+IHpYYWFnVkUwWEZ9MFlwPjV1aEZIWnNlMU5leCtKQSo/OFM1
YHBqUUxCVDNaTmtrbHNqI3Z7cTBHcSpXdWp0ZHJ0DQo+IFINCj4gekRmRShoNm47JTBkQVFiV1Uj
ZjxzMSUxN2dDZXdSVk9xY0FeQ2tQYk5RUChGKiEqWVFzVD8oKklPamp4XykNCj4gdnk5cA0KPiB6
bGlEd2UpaEEzPnk5amo2UUJjKFlIQjRgKjwrVjZiNGpgQE5HXipAZ0ROc3oyRFhGRnVNVCMyc3cw
S3M0VQ0KPiBtTVMrDQo+IHptTmotM0ZtJFBTektGOHM3aS0NCj4gYz83fGxvNFJRbWlDV3pCYVhO
PyN1XiRCb3ckck1zfmZKJnNlPkJ3OzR3JDNuem0NCj4gempkfj02SHt3RGU5MSo3cVZTJCk2bmVw
V3IkSCtXRUpZRVBFVzVNRT4jYVYkNmdAXyVDPDZQdXpndw0KPiBXenQ8U2xzMw0KPiB6e0VIYUh5
ZFcjI0lkTGpEVU8tPGlfemU2Z01CY3pwJjQxSCtZNHozVyZyS2xQTCpHOEVOVmI+T2VwLQ0KPiA4
eStQLVJnDQo+IHo8MzZLZiM1MSh9ak5wNC09Xjw1VkFpbDN+aW95UnQ7PitLPSZscnlkOHw5d0Ru
dzV+RSspSVk1Knw4SDdUakN4dg0KPiB6Tmc+I3phU2tDX1BQNXxhcC0NCj4gYz5lZDcxfFgpNGJ1
ZGw8T19le2l5ezd5Yj9AUio5I3QrUT9Wanc+angodlY8Rko7DQo+IHpOVCozNUhYems4MG1ZYyVH
TFBqJVVDPFNDPV9UYFcyfl8jekc2VnMySiFFIVBxNEAqZjxlRH4+P1Ymbg0KPiBjXzVfIzUNCj4g
ellNJDl5bVRnWXQzWSpsZ01FeTxNIT9nV2BZNU5NM19RJEZxQEFYPiRAWFZIYjA9MnNrNzU2ViVN
DQo+IGg+fUQzIWRJKQ0KPiB6I04mNTdoOXJoKEFyRG1gbWp6T0opKSshNHZrZnklNTVzYiNiNkt1
WClkNzliMztsQWEheVlkITgwU3Q1OVlZKUUNCj4genNobG83cSspUG1VQEgre0lyKU8pb2E+QWh1
XkZBMSpvK2dTVGs/Mm1DVHV3MyNCZVBoZWQ9KlJgamRpWXENCj4gWUxPVQ0KPiB6X2FldktrcCtt
RUFZPDl2cGclYzlRPTRnV1RDQ35TK2QqNWl4eU0tDQo+IFJZPE9NNitRVGdkbG9obWNASW5UJSNg
e2lODQo+IHpNVT9sdWBrP2chNlokZFVzXlRMMGdAdVdKe3JaWFY8SHc2Qjl6dngxU2MhQ2hkb2pu
KU93MTF1Vm5NTEEkDQo+IGYjTEMNCj4gek9iPkR2dnVqcnApOVpTUGBFXn1IV2B2aG1SWkVEcWIl
ZllaU0JOZClMZ1lsNWlIejhxVnBDJlJrPS0NCj4gbXA5Nz9iaA0KPiB6YFIoalFROUJ7ZF9JNDNo
IyNSK3l5Y0k0Y3d7OXd5YngwNjchPHZiOHtrdz1QdyFpJkAoYyhzVzRSTD42bjN5DQo+ID53DQo+
IHpPPU0rZGlLUj1JaWRDeXRpTTRDamlqNW1MaXJ1PytpdnRHXmh5cElWa2g0UnNUU3QhYDZ+flNw
NkRMbGI1VHtSew0KPiB6N1UkMk83aGl3PHdZWWxxczw/NkVoUFpYPm1iaVFPdTZYZF5mJXgmcUFI
XkBmezMzcTt7ZGUpfm5PdUdLDQo+IFA0alEhDQo+IHoteG0xYSY7cT1ZfDM5ZHZsfEg8SGFwbnlT
Mz1IREg1b2V3JiFzVjdoez1WTWNvKm97YS1ybTBjTDYqLQ0KPiBHdjliJmENCj4gel4hNChwNXVr
PHxVWUA+ekEobXk+VkJPNUVYSTVsdGM9LQ0KPiBtaGpaKFp+UGZCbkBoOSVnbTUoMkU7K2VFa09S
ZStaXw0KPiB6bj1sYnpjSWlydTVgaXQkQEg3PSpjMjVJTkZCdUY3Q0lWcGhMYjFZVmUzZikjMGpu
VHlqbU9nQFhtc3pPO3dvNA0KPiBMDQo+IHpgZyReNTtqQ3M5NmREU0IxMnFCbXJrYlNkSWpoUWAm
bmt1Ykk8eHZ9bygmdHUkYlN1azY9dUhIaSV+KXAxVTsraQ0KPiB6NE9qKE1Xa1MzYj5aaygyOGlE
aFdzSCE/LQ0KPiBXJDd6OTs8V09wJH0rXkxjfiFoPlJuPnIxUCElUklpKFZpbW1+LUpPDQo+IHpk
ej5ROEVMRF55dmhyNmJlQU8oKGhnODxRUVEwTW5LVSZEaih5eCp9PW1pPlIjYEh5O0BJd3UoMCh9
Zjw4DQo+IGs7NikNCj4gelAqa2Fza0lHLXNGbGR9SWp4I0smc1BHMz5hV3g3QzAjUVo8dUNsXmJL
YHRnaVlzbVFjNVIoISNQKVl1ZlZoZVNRDQo+IHoxciZaS2QqZXs3S1ImKkpWVWQmTTR8S1A7bXVs
M2EyRjI8KjYlITBIJUkpcGxtRyl1JmF2VzZsSSE1ZkEyDQo+IHw8QUANCj4gelNOV15rKipTNkUm
V2BESmBoSzwzY1NYM3BvdC1TTkU9UWJJQW9EdnBtQTY5KCowXystDQo+IEVYNCVkbTNNTm92eTwl
SA0KPiB6S25gfSEmTWVALQ0KPiBkYkdOTnk7dllGbT0pU05zTiplQVhZSzZmP0NqditQKERnazhF
MGM+WFVvdG0jTWc2bnckPl43DQo+IHpjPzROSXlTcWM4cDJsdSVYSmNiK1ZgRjJoeGZkVmhZXn0w
MHpzfHdPJEs2ZlpzOEZHVG92cDIxMXNqSH5FJDE4DQo+IEANCj4gem9Tb2c9KzxodSY+VWwmNVRE
JHdINXs/Y0klJWxZZTJTPGg1JEs2XiMtDQo+IChrU2Ymcmd3WGI5T1dndGVTUUVgMXZ7Tg0KPiB6
KW5tPkN4JXYzfUwmVGpjVmktNk5aaHY8LQ0KPiByRSEjSG1weVh5XlhDOH5ra0pDP24zP0kwI29q
PUsxPkYyWEFwdDg4DQo+IHpsN1cqNyZDUXJ5NjleNGVXRihWJVZWWWtGYn02OXE8MSNKeVlZQXI4
blFCKkQzZXZneipHMTU/QklFQy0NCj4gRUE0KjcNCj4gejdXbEBpTnFgWHspWmJsKStweTlzcmRP
XnRfa154YFhsVUt+XzFRe3cmSUZkYGl6Yk1oZHIrWHghb3U5bCUtcTY0DQo+IHokQz5CZHVWcG59
VzxRfFZWVT1wbz4+OUBNZDZ1XzkjY3s0OXduZyt6SnpzZ0dvP2pLSj1VMXV4TlFpUA0KPiApZzdZ
Z3ANCj4geklwRitDcDV0KUwmI2R6TmlwQXZsbEA9RXdAMiNGd0B3cmVnQCY8NyNeOEQ7KDhpUzFV
Q21IXk1JMkRSDQo+IFl2NkJuQg0KPiB6Zmo/VGw1T25yaXRBYGVBXzA7T0V3RjVWU2E7fSVFd297
P25aWSZ0Ymg1QnxTckplRGRzJDt9NkBFJTQ2T0NeJA0KPiA1DQo+IHpnWGgjYW98WW1iJFZGdUVe
WEI0NlBxOG9ETzYrVjxMRnxzTzZUNn11I2t6KS0NCj4gI2hNMEgjRXhpSkZ9K2JPYVZYTUsNCj4g
ejlFLTZPMmIjRXdVNVZhZVMkdVZ8YHFlc09YUzM9ZXImV205QD4rPTQpR2tgPWN8QSY7WS0NCj4g
fWFZSG5TMERsV29QdA0KPiB6SHVtRCVIamQmLVM0V1pHKyhxUUlfWXhPNnhRY0p2SXgpPmpvYktR
JDk8KCRRZz40PGg/WEttLS0NCj4gN2ZheERuSFd9DQo+IHo0cztkdzJEeWx2VzIlVno/Xlk0ey1H
anh4SHshK0t4NE1keyF9XktDIShKRGtrTTF0PSNgWTM8PytwLWxRYSF9Jg0KPiB6azk2WUJDcHoo
OU1zQExFZXozPy0NCj4gZU1AfXQ7YyMoYys2UTlCajJVQTZgdEBTZHJjR2s9PUZNV34mWWtqXl9z
cEQkDQo+IHo7JXckKmFlbVBaYWRHSiFAenUmS2BUVSFnbW5ZN2hKRXdve3twT28qI1AjZGYjZHFJ
KkMhYyUyfE5pQGINCj4gcEwtMzQNCj4geioxeVVCODc9VG5LY35qWlApNk5qVj8lNUNTRmk0MEQ+
T0U/QnVpfGxQZTlGKDI5YzJzTFRVemhncW17MWBxZ0w8DQo+IHpyNEoxUHtFUWk1ZUlnPWRoKkZ9
K2BhWHNYdkh0WlZqNiNFbWBYMHAkdkFXPD1mPSorSV4kejQ0c0MtDQo+IG4kTUZ1N1cNCj4gemRh
RGVmOS1lSXhUS25SRyQrdk1rNHNBSyo1aHwtMD4lfFdfP1BYfCQ9Tip8c3FNRGFmNWJLVTc4LQ0K
PiAqZGNZU3E/QQ0KPiB6d1VhYj1Tc3EkTjI4RSRqdk1nM2VSYlV7dDVecGVOUCZqYmFEM3dAMkVi
c0t4cGZQQjkyUz0xVVNYb3QyDQo+IHxGQERIDQo+IHo/WDt8dzFJbWt3dCg1Wmk/SGckdkNALQ0K
PiBnTzAmSnxMWiZGM0ZxfWh+MXhlTT1LV29SVWVZfjsxSXFffVhvMihgN2cNCj4gekVAeHdILUI9
Yl9UVSpQeFRfYUEoMjhgdUJKMz4zcSthVjx4K0JZci0NCj4gXj10c1VjcWdhVXZSbyNlNm93WGR2
UnM2Xg0KPiB6OGErK3ZHcDxWaWgqKVIwK05BX0hYR05TWElBZjF5OHVaMCpwPFk5aTVONUFRT0NL
JWtCXlpUcE9UJUsNCj4gO1ZCeT5fDQo+IHpDTHlWNXYhK2QoQ2ROY05UTm9FSkwjVmxQPHZQKFpH
MH1BQEpEWm83QTgzY3ooREs7dGxgbk9FITMkPFZrVipZDQo+IFQNCj4geipgTStDUTU7ZEtqb2Ux
Py0NCj4gaCs0X0dYND43RWVkJj9rKm1DV2E3XldgaFgkZVNwMElOPWY+dz89U0N1UGQ5bmJ9eA0K
PiB6JkBIIXNZenNFQVBqTz1DODJXdCpfOWp7fCpyJnt7PV9wcGx4ezc1ezklNXE/Wj9VYkpuPmYo
TUwrdE5kUDMmDQo+IHBtDQo+IHpFNEg/LQ0KPiBDJSl7YzZEUFgqaXV+NkRNU2lDYDs9fih+OyhV
Sn1hZWt6KXhIN158VHB3M005UFhKWVA3WCpHWFpraH4NCj4gej1TSUZKP3RMMDBfVXpkczRqdyF4
QEFIPX5VNlN8cGhZdWYkcE1VO1l7UUIjIXxEST1Te3FiLQ0KPiA3Wnd2ZmlaVU95MQ0KPiB6I1lf
Z3h4fHh9Y2xiZjU5amhWN3NuMz1tTU0tDQo+IERGTGE/TE89S0N9WUNqRV58OTtBa2V5dFFAXyl0
MiNRbWR3Y1cyDQo+IHpoTHhGX3dQUUoqJmVQcG49VXZYUm9WQSU1JlgjbD55bThDMVNNdWROYi1I
UzUtbk0tDQo+IENeNnBecDxiPHU2bkkje2wNCj4gej15WlYyeUBEa2g7M0Y2PFJEZ1lwO3pLfFM+
N1llTDx3VVpnJXJifFdvb25VRnU2QVo5bUJGQ0NjPXcyDQo+IFJrYSFvRg0KPiB6JF96a1JLYFJG
QFdGVSltN0J7PmUzXlNxUUU5Png9KExad0dCUCgtDQo+IDtDQnVlTW8+N1Y2JD8jKFlGbVJ4VlY+
fCQ5DQo+IHomYDxeKkBJblQlJns1X1c3WE9IfDIxO095VmEwJWJIJTRfdlR9QUBxYncpMm5LZ0xN
TEoxVVJ7NFExDQo+IGN+Rkp2R0sNCj4gejluYn14fEZ3RVJIdj9AMlRrZWJ5TWx6JDx0Rk9LfnVT
PUlNVSVjX2c4PCFaRGQtDQo+IHZ9Qlc4YzFncDglWnhzYXY7aA0KPiB6LQ0KPiAhbEQ1PWd5cl53
cmJVQ0hPcVgkY28odF49enVRaGd6a1U1S1VrKikxSU01Xml3fE5uPVJNbkVfVVF0QTk1DQo+IEdf
Vg0KPiB6KCtMd01KZXhkdXZjI01AYjB8QUlUTE5pfjRqJUJiJXV9d0BSbztaPnUmemxBXmlPakpi
aSlSMFNyfk50LQ0KPiAlN0YkDQo+IHpHWH5uamZ1VW8+dil9VyVPQEdqUWhKV2oocXxseXNKNXY2
akZwMH11VCFgUCNPQ1lWJCEyQDIlWG0jbjt0Sg0KPiBsdzUNCj4gemtHLXNWR0dqMW9hTF9TZTZT
a2ktXlVKT2wlVkU0PU9nYnxIKnY1TjNkLWcxWi18Nlk7Jno4LQ0KPiBhT3R+WUg9KnBtfg0KPiB6
YlpkTXl4O3JuQj95c3MjND53MjlfZEJCS2A8IVRyaG4jLQ0KPiA2RFQzfj00NWhtbjBkKHZBcyZy
KzV5T2Ywdj16YEFmDQo+IHotDQo+IE1pbXkqfE96RXdsI3IpSWZENVArYj15WVNPJmdoWk5OR2Eh
aE9BS0BaaUJ1RmI8Wm8lfG0wNz10aGJnLQ0KPiBOXzgxDQo+IHoyT0h8cyF8bSlOezZ4R0JoJXx2
KDF8QllkdXMpcGJXQ1QqdD10Xnx4P0llT3U9dz0mRmQ1KVpDbl5QSG0NCj4gVjRERlMNCj4gejtM
OGltWlJXJDZMN2dFTiNfZShmP1NucXdLUmsmRk1ePldTYkEjd1VgfHlDPF59JEJRWFo3aG16OyhJ
NQ0KPiBBellUQg0KPiB6VG8yR3QjeXNHYUdVJGBGVlJVOz0wOV9tRURze3NLWTtrKkNXODFTQkJq
NXVBelFDdXk5ODFpREczVlQtDQo+IE9gOWU+DQo+IHomTDR+JkpORF8pblVnOTE/ZlBgJVY7JFhI
OSFtR3Rnd2VmS14lITtPP2d9MGtPdU1fUjQmN1peaHdkej8NCj4gTz9NV1gNCj4gemZOM2FgSm02
aFhTSVhYNyV7b3tZV1Fzb1lxR099IzZLdWdJPF4/fC0NCj4gRW4jMCEybE5CUmxIck1GaU5WazFT
WjZTQQ0KPiB6MHtabW5iTU84NC0NCj4gKyNKPF48NWFeTmpFPEFxdVVFPk4jNzlQbyp6UUR2ViFU
PnlxZmVLX3M0ZzAwX25UaWZwbHxMDQo+IHowTnRFdjA7WnUlQC0NCj4gWGtNJSRqczdKNlAoXz5z
JH4qTVUjQiMhWE9XViYyaSgjSndxTVg3eFYraDY2T1BaRHxLQ0INCj4gekk+dFFLRW5TWnVKQFV7
NyZ+dDlFQ3RYa1RySkVUKzU7dFpBKHYyQWJSNWFiNmlheERRKkMrYz87VXBnX3tGcEkNCj4gTw0K
PiB6TjdwOEopM3B4KUZCUDAtDQo+IDhwXjxQb3FkRTFXVDZBUFpsZDFNS1BPMT9vRUBPbDBZMGM+
M0cpR1NURX5Fb0NGVE90DQo+IHpGbTVYSWN3ZGIlMjtXY2p0dyFJYmRRc3QmPkklM1gqQ3pWVlJy
Y0BPND9POWNfZE11STNhPSspLQ0KPiAwQVlARHMqe04NCj4gejc1YUxGOCt8PnpheHE0NW5yU0Vs
NHx1UDxRO29oRT1mT0k+cV5AaElKTH1mJGVFWXM5byRPc3pfNSp4VD1reF5qDQo+IHo0Kn5aRnFq
QUp9dzAtJGJvalNkYWJxNGImY1deajsjV3VlZz8/dkNSb2gkNj88KmAtDQo+IGk+KFREPzc1ajUo
WGwxJU0NCj4genhGVEhgOzdhSEZ4elBETyZVQ0p+NlBAZW5OYXVQTzBDfEFSenluXiRUcFYwVT5W
UGlqeXFyPV4rSkcoSygNCj4gcmBEKg0KPiB6OVRZQ182PEMrbHdINWI9QW92UU93RiRzISV4IW1g
dVY9QjJaNkJPT1hMPnIocklHSDhEcyp2fTg9WXIrPQ0KPiBMU0B5DQo+IHp2d2RDWU9mTSVvLQ0K
PiBRQUgrYipuKDl4fEZBcm95eVY0al4qZT8yWVdqNG5xQkdPR1ZwKkdHTFZJaXYlUT85JmhyRGcN
Cj4gekVyd0sqd3FXPC1oJF54aXpROEJrQUsxc3E0QlYlJipPMEhqSUZAYkM8ODFpSWt0M2Zoby0N
Cj4gdnY3K0xvdFA5VipsRQ0KPiB6X0xYVF8rZSk7d3dKUi0NCj4gYz18VzRJSkphSDFDdEIzaGty
cEw3KEJneSZiZztQe2VjOTVRekhHczBaYmVfYlFXOGcqDQo+IHp3bSFqKnZnNjd0WGszQV44I35a
XiowQ1ZUa3JwOyV5e3RSOE9HUEA+Z1dJTUx3XjlGIWJmJks+PCtyZ1YNCj4gXz1JdCENCj4gei0N
Cj4gbHd0R3o8TVA2Zk1iayVIKHFhVTthPDNQUCFiKk1QPU9BbV5gYVl2KlhaYGAraHlZQiY2X2xE
WShMciVYRw0KPiBAMEANCj4gekVhPndsPUF+a0R5ZTtrQnhRNihmeUUxWDw9empYVkxxJDZGU348
JF5TZX1rfGFpRF4oaiYhVmpJZjc1e088aipCDQo+IHp2QUB7IVZjIWJoWkZuQ3gyeU1USj52XzFU
NiYtDQo+IEM/aipobkZ7KGRLIXsmVipSQHBwYW4/Q0RjXmJjOSN+MnY3ZH0NCj4gemxlVnV8Sz1Z
IT8pNG9STGJnKz9gNSV4QitwamlYak9Gci0NCj4gJCU0I30pYHtAVkQ+bTVwbW5fMUU0JjIxPkpy
N2F6Sw0KPiB6KXNGcUptd3BeZHZMeUpYXzV0Pk15JV5RdUpFSl87WXYpSEZlZWByZy0NCj4gejNV
eVlFNmUmJER3MiFuTGc2bGs4WWpGDQo+IHpFel5JXnBLflhVKTEqZTh2QF9iQV9DXmFtcnBII0ho
WSMrVGtreygrbC0NCj4gcntxd0h4aF5HcDdUTUUkQmNLT0ZFY24NCj4genJURD08ej9Yd2JSc2BS
JD1pX21IbTNfd0V5RG9mWlJOYCslfEc9OEZ2bmspbDZSYzwtDQo+IChBYmpwIyN6dUZab2hwXg0K
PiB6P0NIfFZZNUYjVj9iNT03YH1iKjVydiV5JVZMPl5PZj51VVlRe0xfIXJManNIYHR7PDw4TU0y
aDhTUmMldXENCj4gVmJgDQo+IHorSnRUUkFibndmYn5kZGoqQ09uXyo9SWFJQio2RXNVQXctRHY5
bn1pM2hqKENyeVRZLQ0KPiBDJnEkeWFYYXA2WHdFYjwNCj4geis4TjI8dml4eWY9JEEoaU9OOz8r
OTNYIUQraSRlcyE/JFR9czE/bF4oMjNCI1N8N25fRWUrcVY5QCRIfjs+eXZFDQo+IHoyMH12R2sr
I2dGWlRKOVJhJCtye2VmV3FtcSZAQFRlJikkekNrdGF8PHkjJFRUWjk+SFlvRyNZI0A3MHgNCj4g
N356OFUNCj4gemNka1BadWJlTSlKaXRIcmRfMzxFSl5KQiRySmRDfTgyYk9pdHM5aW5OPUk4K3J5
ZDVqcSVTN156KDxUQkpqYiFgDQo+IHptOy0qaT01TkZMeH40LQ0KPiBJWjROVnwmRWJxTkw3Tk93
a01qb0Q3VXg3KWNDMz1+U35+Y1dtcH1qYm8lWilqRnckd0wNCj4gei1fU09FUUc3QlpfeX1MfEVY
dXkpY3srZ28tDQo+IHZRZEhfRj1AfEppam5MMyR2aShRJUJTOXp5MTIkekEkV2FFJmNpQQ0KPiB6
a3VQaz0mP29vXlV3SUNIJWY4RnwwTUNhYXAxYVJoTjRwU3p4QmIlQypFZk00LW5nYjtWPTthLQ0K
PiBLVFhwWl5MWjtXDQo+IHpYPkMycm0kbjFuOzNMKTxadTZobWYxR1g5O2tEOz9KWnRsSj1ZSmRQ
OztZZDR5PDdmckppLTUyIX40KkBUR29IdA0KPiB6N0pTOC1mdk53P2c5UkJPI0VnfiRydTAocyVS
PGNRIXshbGtlS2w9ISk0dXJnazNWUmB7MHkyeykxSDxGfEFxY2kNCj4gej4+SyM2amkyaW5LWl8l
SGUtazdtbUlqLSVaVXN3Zm52b3VBeHlGWmhGPUpldk5fNGE2eF8pZ21eJS0NCj4gP0N0PUgtTg0K
PiB6RkRXSjVsTkpQLQ0KPiA+K01SdDJLTH5DdzV7NU9rTHZqT2s9dExKemdzWFQ3UEpiWmcja2lo
YVpPN0M3UyooJU1YVm9LDQo+IHo3LQ0KPiAmYHVsQEkoTTE9e21rZDAzQTVtJVpTQV9kKXhuRyVM
V09TVTIwelkpYnA9Z1hSfX1STSglJj83dig7ZEUNCj4gZDRQDQo+IHp2fWBXUnR8MjVBKjBRQ0FB
dlZPbik4T3s4cjE/UD5HKFhUPkIwSXAwRyklMypgXnhOJDVeWmJQe3RzP0d6aA0KPiBDJXcNCj4g
ejZFeSRoX2h+ezZUZ25icD9YVyVBbUc7Pk8lYGY8PGBoU1cybS0NCj4gakU4JWQ+SSslSWVwVj0y
YUlHM3F5SGRUZjAyWA0KPiB6NTgqdjtPJmlKenc0JHM0T1VtU1MlQioyN0cwV2VBclZaPSYrJWJS
byROXmR5P24odWA8fik3IU0wU3QNCj4gcVNPTzdjDQo+IHpoajtJIShJSiYrWlVFYjJkJDBAcF5K
fHNVYHZvNnl8SDRAJWAhRHdvZD9wcG9gLQ0KPiBlWlhRdSRvV1M0Yj9aVXp6NkQNCj4gemIqQWp2
NHdNeUFvLSU5TihZIXojbiM9N3kqV1okNil2JTxMU0VBYFItDQo+IFliKzllIU8+dzdSVVFaZUht
UVd5e1NYIw0KPiB6UGoyaDcwQGtMUkg7VS0oIzBaKkV2eilZPlVCXi1TcTRAPEx2NDZtTUVCbWtR
LQ0KPiApeWprVmgrISQ/THNxa2YpKykyDQo+IHooISQ3VWx3R2U5VyE3PH5jXzl1b212dj9ZK1I8
JDg9VFR1a2JvYjZ9PjU2SDRCOUFAdyMoXkRhcmpNQnMNCj4gSHVoPm8NCj4gektSPnU8R35TQFpQ
eyk2TXsrWHRZOTg5MG9zel9PRUtSY3xsXmE7TFU/eTc2MjtyYGlAPWZHemVMJGY8MShSNDQNCj4g
Sw0KPiB6IV9odnBxO1ZpRWkxTWJhYUNlJGxtLQ0KPiBgaitINjE3PXhINnFUYitXOHhsPXB4bTN1
alRmdU8rNFhTZF9xJFdfKDY7DQo+IHpgUW1mJDY7RjZQWkN8XkotDQo+IFZPSnFkRXImMVB3KSs2
MldRNklfSis/ZDx+Iz93VTxfcVdvbEt2NDIrQ15VTUpybEgNCj4geigyfUl1dj4/YEI9STRkNm8t
aHh9Uyt8T1F7clJWMntQWkxKWUpqVzl6bzN+bG9vSmZRJF9VZWF0VnpPYCQwNihiDQo+IHo+Y0Iy
SnAwRjF4M3p5RUhxandWYFhve3k5IThlUUBvT2BxWGBzWVZIISprdz5ge2YjKihQcCR5cU0wR0N3
NQ0KPiBDJWMNCj4genQkWnp4bWJRcVgxJnhDI0U0bigoanE7KCltPlFKSD4zTERVRyZmUjV7MCQj
diljMnF7VmJ5NE1KJER8diZODQo+IFF2TQ0KPiB6eX5JPk1KQUdReHtMOWh3OHMjWkgoMUIrMV8/
WFhuN2JlIWA9anBvcVkjbU9eVDFDP0dIcW9AUWVMU3R7DQo+ICh1fiU7DQo+IHooU2x9MmBWZjRB
WmB7czV1JitrWEAyZFlzZWVraDYtDQo+IF5XQDsoZlNeKFg/MiVtVEpjJnVFcWJMc0tYWnJCeXl6
Tn4NCj4gejUkUXtGPlUtDQo+IDB5eTQ3ZSNvaG1lPVIlSj5MdTFNMl5UcUxGaWF2Y0o9ND5XTElE
KzM/K0FxUlFyZnhnVWAwSTdkTA0KPiB6UWU5ZnNJKSt3dFlEJFplIXdKM153RWNZY3pyXns4U19l
eitnQ2tnOXI/cEY+Uz5aYWBHXmlfVzlNR0I4X2tODQo+IDk1DQo+IHpjV1gmWStzNHlePE9zQFlR
aXRYPjNaeyZQMFdgYVRBSSstDQo+IG9Mb0A0bihUdXZEbHBiMSooKDY9fW18b2ptcDlVU30NCj4g
ei0NCj4gfiZKOEFQK3N6SEB8NShFcSpuSVIoNUo4P1FRN09MR3I+RV89S34yXzhwPGJgSVhpT3s0
Q1JHJGREbTttVkINCj4gMWgNCj4geklFKXMoK0s2XyheQT5GIylzSHB9PX16bldiKXdhOHd4TU8q
cDlAPlk1ZFdUI0c4NXwyK18+NzU1Z1M1dA0KPiBxSndDNQ0KPiB6ISQ2dUg2K3A4aFl2X1NJPXFM
dnRfI3BAUjE8ZjFNbEQzVSRXdFNHVHUxYG00MmxmYFdoJGlAZUgzdyZFYw0KPiA+bG5ADQo+IHo+
bGsobntuLV9LKjg8Wm1jcjhsRFQlUHlvV0o7XitPS2JiUVBKMklvazgoYTNQMXtyNnFBZXIpKTVm
PVkoej9FIw0KPiB6WCtfc3BYLVM3Pnc0aFpTJjJKR3lTOzxrOSp8WSY9Q1BtUF4jUUooNTQ/ND1o
Mm1aekY1QH5zLQ0KPiA3UFB1JmQtYGx9DQo+IHpjY35acFZQe3FNYn5HdX1odXtPfEVic1NzdjJW
e2t6Y3JgPiM/a3RlbCQxWmB2aSNLTytPJTw0VXBtQytxNQ0KPiBHI3kNCj4genBna1h0cW55O1N3
RWYpP3dCX3g9dn10JWhUMGZ7ZXQ/dTI0Uj1uQWNtVVpEZXoyMVRyd0A7PTt1UWlrTDt0c0YNCj4g
Uw0KPiB6KG9RWERkQUJ5U3N6KFB9K3JKeGE5TklfOUxsNSpwRlo2RjEodnprKHRWT1ZtXklOPXNW
QmZMY3tOPyNNPmNEKg0KPiBSDQo+IHp7UlAkfEswa2l+SilnI2UocXwrMykwZDAwPXQlWiNJLURf
YDR5TEVrS0dmJXY0PTg4Q3lSPjhjN31gRT02bTVOSA0KPiB6SUJpV0NNcTk9WHI3ZEgpemNAeDdi
ZC0NCj4gWSt7RSZrQF5ndGk8WnMwbWlpTE43ayRKc3J2SHhKbUttd0pEcCoxPz9YDQo+IHo/U25k
S3tWPSZqVl9NT3hHa3Ypdm4rbnp9cn5LdU1XY3RYMHglN0dGRUlLcjJJXzF1cU4oYSY+R3R5fVBe
DQo+IGh2YVQNCj4geis5eHRiOSgwdDA1QiFqV0Y2Y3BlU0Aoe1YqMVdPNC1GWTB9ISNmb0F8RTFt
XjhIXil5bWJKb0khaEZELXstDQo+IF8xNw0KPiB6IXxAR2grWHBGaEEhaj9DK3AmZXRaMjYyJVpD
cG51KlJTUyF0KVN6cG1RbnRTQl8ja2wlRTFTSSRlcjgxblkNCj4gTzw3DQo+IHpIY2dMPEFuMytp
I2R5ZDIyZXlzemp4cURuQDl6eGlBbTUqMlBHZW9kSStpaElHQ3lsXkpyWk1SKD50VC0NCj4gI1FI
VUsNCj4gejwhfi0NCj4gdEs2SFRac2U5P3R6VEZaUl92VmxXamZRZ1k3NFk2KlFfM2h4UGwlU2Zw
Y0FeVyZUemw0V31rSG95bGNWdg0KPiB6PTNsPF4oKT13ZVcqcnQtDQo+IFRlJlplcGY3TVFndzY0
PEIrPENxeWpDXyhxJjMzXihjYmg9PXtXbSNZNSFpaiM/TXkoDQo+IHooKW52diglJEopQm9CQlkx
Nms7UkY0bD9uXms/ekBmbz1VYEAyP0goIStKNUVFVXtPQHlnKXMkPWZrKjRlPmE2DQo+IGINCj4g
ej5mRGkxQkV1eTNIfCo1a01vMXY3KFpLXj1qMSRQaFp8PlYkSUo7LQ0KPiB2fEYhUTJOfndueD5j
T0BAIWBAcX4zJnNGfA0KPiB6SXZJUkZwI1FFd15CTCFASTVXbiVIfmEwenomWSZTOV9OUHN5PWE+
NCReUEtqMkcybFRwVj9mV08mbzkNCj4gR3s8KTVODQo+IHowaH0mays3OEF4b0tAbnltMVZHfHot
Sm88IygxZ3MoLS1qdGV8U1J2b2BnVHhseiQmM1NMbEN0cVdebWA8Skk1Zw0KPiB6I0hxaV87cVF4
PlVIO0JSaXdsdipfZXpOUTRXfH5UQkZ7NVdpOz9+UklpJGlsMUFsWG9IPmdoYEA/MX0/LQ0KPiBk
WmV3DQo+IHokSFZPK2Y1KmVeQj54aF5jPmVlYG1ETGYpeG9XJHpmTlc+QS0NCj4gSG1eQHFoc2FW
UiElYmRfd3FNZFZCKkF5ayZKMUsNCj4gemImTWhnc1ghVnVsdHVteCl6MX1Tb2cpfVVeSGNpTSkq
O08pemVmbGF3c1dLaHQ7ezVsMjVzeCRSfHFgZGgwSnI2DQo+IHp6Q2E9Qz1tMV5XV0JiIyQ/VlJY
dFM5YGlRKm9FJUQ9VDcoMmVDV1lVZX5KNShlZCskVnMmc0ZOMypDTA0KPiBncDF5N0MNCj4gek5S
VXplPTxvdWpPMGRCSF5iZnwrPjVnNz55SVZRQiYpKlo9cFUyPGlAVjV7VG1lZ1U/UiR+NzRMI0Z3
DQo+ID0zelVIZQ0KPiB6eXBWeHhgdWxJZ2tDJG8tDQo+ID0za2ROYl52fGQoVXRDZ3FAI1FNNFp9
VkQ3VW9fP2tQYEZ2OVFPZF5ISmFxJUAwXmdJDQo+IHp0Pz1JWSZ7T0p3RjZiOyMkeDthTEhGSGRW
eTU4UUZadTlwNmNSdWw8Sk4jWFJqRkMxNCVKfTtQSilQNkhgOHg8TA0KPiB6ZX5aNmBmRys2I3Q5
SWI+NCU0fktGTDFxWV43alpnYENBQm0lLT5TVEc9QyM7NkJyQUMjeGNxP1huQi0NCj4gcmR8VT5k
DQo+IHomPHpgPFI5bGpgdG10cUQ5bHRCREw8aXJmdFZpeWZOTFFreC03Q15uez1WVmJLdnlhcFI4
aXVaJT03IzdLOXkqSA0KPiB6eDVfMU9xUEg3Szl7eDdyTkMkNyZGRGxKRyg/YHI1R2tgOTQ8bkk9
eV5yUSMoPyRRckd7OXVGfGc7IX0mSH53fmANCj4gejMlfSMpPUJVU3x1RmtaMV9Ke1E3KElYPz17
alB7azUzYTU3QCUhQDJ1VTg9MGZHdHhXOzglVk43ck1tbg0KPiAkMWdJeg0KPiB6TmxCbno/aTdf
YzMmV1oycUVUSGJ6cUpFaDxvRD57VURCbUs7YXRsdztMUCNjc1hiLQ0KPiA2KVhCVnZWWipjeUkz
R0ZaDQo+IHo/RSFSXy16bEdjI2E1M0NVQSpieGkzMjZoKTFaNlRrX182QjxVfjd+SUA2Ny0NCj4g
Un00KXt7X0NJM0RXT201Vyple3QNCj4gem5fMyVpZGZKOUpWKDRUT0Q+fDhBWkc9LQ0KPiB6P2Rr
ZjtEZik5c0xxbkhOOWpFPGs3OCNPY2BwJF8lYmgyM21NUERnOA0KPiB6VkdBfTU/NjJGfXo3YCM4
V0ombzkjSyZVUVNqfUh9dz4+QG5RRi0NCj4gVEQha19gKyQyJkt2OzVGWjNKKnZFM0ZYdiY0DQo+
IHo/ZCNWQVA4U19hYUhTKkJtSWA3SlRje3tiQU1hZH45KTVNSU0xTkBKcFlxeDY7b2RPQHZZSE4j
XipaPw0KPiAqMD01TzQNCj4gejJLQUBJa3JzM34lMko3dUUoM0A3SkN+eT92b3c9TkB1UD9MWTBm
SmxiVElPLQ0KPiBee3s+M3hoTWhZZ0FyQ1FndGR7NQ0KPiB6Yk9DPnp0JkgmYUBuZjFodW9HPk11
cXs8elpVYnZjSD9kIXxFN3Ewdk1jQn4zYHFzMnhqZ2RDUXdnYExMDQo+IHdLVGhnDQo+IHpXeX1Z
fGZjJWFublkxanpOaVEjVExONWNoT3hsMGxuJTFHVHItN1hjZHhKRCtZP3Jacz1aJmVZTjQmLQ0K
PiB5cEQ+WEENCj4gemAxTD1BRjM5eFBYSFVfTE1uMDVkcThHTjx6VHg8cnd4bll0JTR6Nkd5UF9Q
NTVtfHdERj9LU2heTGc9DQo+IH5KaVpKQQ0KPiB6LQ0KPiBYJEMhKmgyQ2c/JXMlZ3lqZl5pRVlt
OyNeYjx8Kis+RXdGc2smSmdZX1dhQWA0PjV6Jnd6SHV4Tl9UNkd5LQ0KPiBUZA0KPiB6Nk4yYnhL
MVZrVVhvb1l8bFo8JXh3K1cjO3I7ZTZyQllaUWw+ZUM2ZEJCbHl8Z1R3YkJ3I0R9Sz5rbWREYA0K
PiBlU3t4DQo+IHo4fDVWRlhqYzxZQn5KOUZaQjZ+P2ktanwmPSloTEdkMnBNPWpSVnswQGBnb30p
NmBlO2Y/dmIjPG16O0pUe2hpMA0KPiB6bWFGMCojfFA9dzd5RF8/JSEjeGoqMkFkcCloUGhgQmM9
YFNQckZ7SkxBemZLcTF+LQ0KPiAoKFZvX3xXZzc5ekxYJFU/DQo+IHorbS0NCj4gQjN1bU18fFVC
ZWh7dSlNSzk/ZHtaJUAxdD5hO0xYUFJfKDFuMl5tMGckQD4waGVAd0IlaXBafkxOKg0KPiBmNndk
DQo+IHpuQzd3JFk0NDdxKSU8U2xeV21ON0BMTF98KDIofFljeGNDJCNeKW5DT0JwU09QVXdhV0x6
fHspRSp+KnYNCj4gU2J0Z0ANCj4gej19dmlYX25gYTwheFZmdGw9NUUhJDB2QEV7Nnx1SE9JXj9q
LQ0KPiBLTz9SJVFONClETVMweWt8OzBBT1gqOHo9Nj4/Pg0KPiB6bUB8PSVqMmtGKktvQGtEV34o
ZTNlNFhecDdARklfbzdPYnFJV1M9YW90UXFKJlNwKWFeTlZObEgpRQ0KPiBPZil2OWNYDQo+IHpP
UktXejs8NX1gMXxJT1BYfmdmOFNRYXs3d0JEd151JCtBVU5NcnghKV53cDJ7RWxqS2AkbntIU1Uz
NyY7JQ0KPiBHWWwNCj4gej5IR1loJklrMHhOMjYlcCZ+Q0sod0hXNW4oY0VBY2YoKjshSXExM2xa
RUNaJEpwNn5RdzZfTSgpUSZBRW8NCj4gIT9RKw0KPiB6NHN4WG9GR35yZUt8PmpNUkokK0sqUU1E
amleaDhZRTY8PCRidXx9JVI+Y0N4SHFaVWRGOGp4KTdKclJZS0Z0DQo+IDdmDQo+IHolbFBkc1l+
ZkZnODJAZnBDbEhMa3FMIW8qbXBRP1g5Kmh4O2ImTWh2TlEzNTRMY29CYV4zWmBVOSZ+PGBBDQo+
IEtqWjsNCj4gelF2end3eEV2Xzg1MUdEaGIkbXMtDQo+IEtBeFpScm0kUW9LcEErelloWUdEPVBK
SSg2fWB7aip9bms1dE5GcFAkODdkMQ0KPiB6dWVUNVg/dVlsN2owP20zPSpyMEk1fEBUb3IoKitz
Qn5BPWg9O3hWLQ0KPiA8cDl9TSttcmJfYDBTRE5wUHdHZFp5WmhADQo+IHorKHxoLQ0KPiAwe0ZY
ZVU7NkJXOStITXtBSXtDfUN1eUtWaFVLUiopKldvP052Q2BJKHokVWg+RFBOVjxqfWR0ZHlvfCkN
Cj4gemN6XnVzRkVVQFdZcThgMzl7P0gxR0sjKUAtDQo+IEdAJGVeT0dwKDZINTBfOXlHZE5lfFAh
XzllPVppbyhIXjtWT2dOKQ0KPiB6TlFkZl8tDQo+IF5wSyhCYzF2ODcya1pOQUh0Xig9SX1hRFEo
cTJWJGYpd2BfT3xybnZMSzBMOURueDc3JUJWYjxLTzZxDQo+IHp0Q3dXQHs7aXZ8dFpPNFpBN29m
d2o7bD14ST9DQEhEelV0T0pMeDwyQXtWbmhxR05BMXBnVWpla3U+YSRSDQo+ID0rY2wNCj4gekA/
Tmgpa1lSYldBTnFqNDxtYXtIWiR7RGEpYyRtTyhvaX16YVdJfFdKVyVqdkxwdF5HNUlYYmVDXnxE
YA0KPiA2eiVXTA0KPiB6P0ByWUkhI0x2Zmh+KjdFPW5RYCZgNjIpPldLNzIzeTUtU2NiYUxQO2Ja
JTY4eytfO1YzN2B4LQ0KPiBFTmU3PUg5Z1NEDQo+IHpwbHhsIT08e0FsYm04cXo1PWV1RkdWb35w
ck52elNRdUZyX3xMdm5mZ1dzKXxycWhzPyU0ZTspeWkhMzF2aX1Faw0KPiBDdUNYb3YNCj4gDQo+
IGRpZmYgLS1naXQgYS92czIwMTIvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGIvdnMy
MDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0KPiBpbmRleCBlNjc5MThhLi5iMTMzNTc2
IDEwMDY0NA0KPiAtLS0gYS92czIwMTIvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+ICsr
KyBiL3ZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gQEAgLTEzNyw3ICsxMzcs
NyBAQA0KPiAgICA8SXRlbURlZmluaXRpb25Hcm91cA0KPiBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCj4gICAgICA8Q2xDb21waWxl
Pg0KPiAgICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCj4gLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj5DcmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPg0KPiArICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCj4gICAgICAg
IDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCj4gICAgICAgIDxGdW5jdGlv
bkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCj4gICAgICAgIDxJbnRy
aW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KPiBAQCAtMTY2LDcgKzE2
Niw3IEBADQo+ICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCj4gICAgICA8Q2xDb21waWxl
Pg0KPiAgICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCj4gLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj5DcmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPg0KPiArICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCj4gICAgICAg
IDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCj4gICAgICAgIDxGdW5jdGlv
bkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCj4gICAgICAgIDxJbnRy
aW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KPiBAQCAtMTkzLDM4ICsx
OTMsOCBAQA0KPiAgICAgIDwvQ3VzdG9tQnVpbGRTdGVwPg0KPiAgICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNcd2luMzJzdHViYWdlbnRcZXJyb3JzLmNwcCI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByDQo+IGVjb21waWxlZEhlYWRlcj4NCj4gLSAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWMNCj4gb21waWxlZEhlYWRlcj4NCj4g
LSAgICA8L0NsQ29tcGlsZT4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x3
aW4zMnN0dWJhZ2VudFxzdGRhZnguY3BwIj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcg0K
PiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj5Ob3RVc2luZzwvUHINCj4gZWNvbXBpbGVkSGVhZGVyPg0KPiAtICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlYw0KPiBvbXBpbGVkSGVhZGVyPg0KPiAtICAgIDwv
Q2xDb21waWxlPg0KPiAtICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdpbjMyc3R1
YmFnZW50XFdtaUFjY2Vzc29yLmNwcCI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRIZWFkZXINCj4g
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PkNyZWF0ZTwvUHJlY28NCj4gbXBpbGVkSGVhZGVyPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+Q3JlYXRlPC9QcmVjb21wDQo+IGlsZWRIZWFkZXI+DQo+IC0gICAgICA8UHJlY29tcGls
ZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByDQo+IGVjb21waWxlZEhlYWRlcj4NCj4gLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWMNCj4gb21waWxlZEhlYWRlcj4N
Cj4gLSAgICA8L0NsQ29tcGlsZT4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1x3aW4zMnN0dWJhZ2VudFxYU0FjY2Vzc29yLmNwcCI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPkNyZWF0ZTwvUHJlY28NCj4gbXBpbGVkSGVhZGVyPg0KPiAtICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+Q3JlYXRlPC9QcmVjb21wDQo+IGlsZWRIZWFkZXI+DQo+IC0gICAgICA8
UHJlY29tcGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByDQo+IGVjb21waWxlZEhlYWRlcj4N
Cj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWMNCj4gb21waWxl
ZEhlYWRlcj4NCj4gLSAgICA8L0NsQ29tcGlsZT4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXC4uXHNyY1x3aW4zMnN0dWJhZ2VudFxYU2VydmljZS5jcHAiPg0KPiAtICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj5DcmVhdGU8L1ByZWNvDQo+IG1waWxlZEhlYWRlcj4NCj4gLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPkNyZWF0ZTwvUHJlY29tcA0KPiBpbGVkSGVhZGVyPg0KPiAt
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPk5vdFVzaW5nPC9Qcg0KPiBlY29tcGlsZWRI
ZWFkZXI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjDQo+
IG9tcGlsZWRIZWFkZXI+DQo+IC0gICAgPC9DbENvbXBpbGU+DQo+ICAgIDwvSXRlbUdyb3VwPg0K
PiAgICA8SXRlbUdyb3VwPg0KPiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdp
bjMyc3R1YmFnZW50XHN0ZGFmeC5oIiAvPg0KPiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Li5cc3JjXHdpbjMyc3R1YmFnZW50XFdtaUFjY2Vzc29yLmgiIC8+DQo+IC0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcWFNBY2Nlc3Nvci5oIiAvPg0KPiAt
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdpbjMyc3R1YmFnZW50XFhTZXJ2aWNl
LmgiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAgICAgIDxDdXN0
b21CdWlsZCBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcbWVzc2FnZXMubWMiPg0K
PiBkaWZmIC0tZ2l0IGEvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0KPiBiL3Zz
MjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gaW5kZXggNTBkYmU0My4uYThmNTlh
MyAxMDA2NDQNCj4gLS0tIGEvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0KPiAr
KysgYi92czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IEBAIC0xOTcsMzkgKzE5
Nyw4IEBADQo+ICAgICAgPC9DdXN0b21CdWlsZFN0ZXA+DQo+ICAgIDwvSXRlbURlZmluaXRpb25H
cm91cD4NCj4gICAgPEl0ZW1Hcm91cD4NCj4gLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XHNyY1x3aW4zMnN0dWJhZ2VudFxlcnJvcnMuY3BwIj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj5Ob3RVc2luZzwvUHINCj4gZWNvbXBpbGVkSGVhZGVyPg0KPiAtICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlYw0KPiBvbXBpbGVkSGVhZGVyPg0KPiAt
ICAgIDwvQ2xDb21waWxlPg0KPiAtICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdp
bjMyc3R1YmFnZW50XHN0ZGFmeC5jcHAiPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVyDQo+
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPk5vdFVzaW5nPC9Qcg0KPiBlY29tcGlsZWRIZWFkZXI+DQo+IC0gICAgICA8UHJlY29tcGls
ZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjDQo+IG9tcGlsZWRIZWFkZXI+DQo+IC0gICAgPC9D
bENvbXBpbGU+DQo+IC0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHVi
YWdlbnRcV21pQWNjZXNzb3IuY3BwIj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcg0KPiBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
Q3JlYXRlPC9QcmVjbw0KPiBtcGlsZWRIZWFkZXI+DQo+IC0gICAgICA8UHJlY29tcGlsZWRIZWFk
ZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj5DcmVhdGU8L1ByZWNvbXANCj4gaWxlZEhlYWRlcj4NCj4gLSAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj5Ob3RVc2luZzwvUHINCj4gZWNvbXBpbGVkSGVhZGVyPg0KPiAtICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlYw0KPiBvbXBpbGVkSGVhZGVyPg0K
PiAtICAgIDwvQ2xDb21waWxlPg0KPiAtICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHdpbjMyc3R1YmFnZW50XFhTQWNjZXNzb3IuY3BwIj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+Q3JlYXRlPC9QcmVjbw0KPiBtcGlsZWRIZWFkZXI+DQo+IC0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj5DcmVhdGU8L1ByZWNvbXANCj4gaWxlZEhlYWRlcj4NCj4gLSAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj5Ob3RVc2luZzwvUHINCj4gZWNvbXBpbGVkSGVhZGVyPg0K
PiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlYw0KPiBvbXBpbGVk
SGVhZGVyPg0KPiAtICAgIDwvQ2xDb21waWxlPg0KPiAtICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cLi5cc3JjXHdpbjMyc3R1YmFnZW50XFhTZXJ2aWNlLmNwcCI+DQo+IC0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPkNyZWF0ZTwvUHJlY28NCj4gbXBpbGVkSGVhZGVyPg0KPiAtICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+Q3JlYXRlPC9QcmVjb21wDQo+IGlsZWRIZWFkZXI+DQo+IC0g
ICAgICA8UHJlY29tcGlsZWRIZWFkZXINCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByDQo+IGVjb21waWxlZEhl
YWRlcj4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcg0KPiBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWMNCj4g
b21waWxlZEhlYWRlcj4NCj4gLSAgICAgIDxQcmVwcm9jZXNzVG9GaWxlDQo+IENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5mYWxzZTwvUHJl
cHJvYw0KPiBlc3NUb0ZpbGU+DQo+IC0gICAgPC9DbENvbXBpbGU+DQo+ICAgIDwvSXRlbUdyb3Vw
Pg0KPiAgICA8SXRlbUdyb3VwPg0KPiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHdpbjMyc3R1YmFnZW50XHN0ZGFmeC5oIiAvPg0KPiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cLi5cc3JjXHdpbjMyc3R1YmFnZW50XFdtaUFjY2Vzc29yLmgiIC8+DQo+IC0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcWFNBY2Nlc3Nvci5oIiAvPg0K
PiAtICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXHdpbjMyc3R1YmFnZW50XFhTZXJ2
aWNlLmgiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAgICAgIDxD
dXN0b21CdWlsZCBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcbWVzc2FnZXMubWMi
Pg0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0
DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1h
aWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:06:20 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:06:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgvD-0002sS-Aj; Wed, 22 Jun 2016 12:06:19 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgvC-0002sM-Pf
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:06:19 +0000
Received: from [85.158.139.211] by server-1.bemta-5.messagelabs.com id
 A4/70-26908-A3F7A675; Wed, 22 Jun 2016 12:06:18 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpnleJIrShJLcpLzFFi42LZKekooWtZnxV
 u8KWb0+LP4kQHRo/DH66wBDBGsWbmJeVXJLBmvFm6n73g5n2mis0LD7I0ME64zdTFyMEhIeAn
 8fqEeRcjJwebgI7E0qPzmUBsEYECie/v5zGD2MwCahLX93exgtjCAq4S59Y0sEHUuEmsWrALy
 jaSWLtlB1gNi4CqxOlZ+1hAbF4Bd4mTW/cB1XBxCAk0MEr8mbaSESTBCdT8+UMzWAOjgKzEl8
 bVUMvEJW49gThCQkBAYsme88wQtqjEy8f/WCFsA4mtS0EWcADVa0qs36UP0aooMaX7ITvEXkG
 JkzOfgN0gJKAiseXxAagx3BIrP/9hmcAoOgvJtlkIk2YhmTQLyaQFjCyrGNWLU4vKUot0zfWS
 ijLTM0pyEzNzdA0NTPVyU4uLE9NTcxKTivWS83M3MQIjhQEIdjAem+x8iFGSg0lJlFdeOStci
 C8pP6UyI7E4I76oNCe1+BCjDAeHkgSvUx1QTrAoNT21Ii0zBxizMGkJDh4lEd56kDRvcUFibn
 FmOkTqFKMux7xJu44xCbHk5eelSonzyoMUCYAUZZTmwY2ApY9LjLJSwryMQEcJ8RSkFuVmlqD
 Kv2IU52BUEuYNA5nCk5lXArfpFdARTEBHLOtPBzmiJBEhJdXAaPHyTMrqzwdemESe8cz0f3fl
 YuWEF3nsEv6zn25klmWbEnLoWFLBxael3PFdz/bvuySrq2Pop6Nx7f6bjS4ta6795DsmwBx+4
 qRXsanWbhEFvb0Xb1tEvmtrTTv31MFh8trXizjXbOPYv7dWbLLPTl+2K7vbN249dKyx1H/N2X
 dM+YtPWWfpeSmxFGckGmoxFxUnAgAySJw+GgMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-206.messagelabs.com!1466597176!9776894!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=OBSCURED_EMAIL,
 UPPERCASE_25_50,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 64150 invoked from network); 22 Jun 2016 12:06:17 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-12.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:06:17 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24784314"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 05/20] Add base do-nothing service
Thread-Index: AQHRtceeS0gl1a6Fu0KqKdaLRr45GJ/1j3RQ
Date: Wed, 22 Jun 2016 12:04:34 +0000
Message-ID: <20c10f77f2974ef286e98c02344c032c@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-6-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-6-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 05/20] Add base do-nothing service
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDUvMjBdIEFkZCBiYXNlIGRvLW5vdGhpbmcgc2VydmljZQ0K
PiANCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0K
PiAtLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcCAgICAgICAgfCAyMDkNCj4gKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL2xpdGVhZ2VudC9MaXRl
QWdlbnQuaCAgICAgICAgICB8ICA3MyArKysrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L2xp
dGVhZ2VudC5yYyAgICAgICAgIHwgIDYwICsrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L21l
c3NhZ2VzLm1jICAgICAgICAgIHwgIDY2ICsrKysrKysrKysrKw0KPiAgc3JjL2xpdGVhZ2VudC94
ZW4uaWNvICAgICAgICAgICAgICB8IEJpbiAwIC0+IDI1MjE0IGJ5dGVzDQo+ICB2czIwMTIvbGl0
ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgIDEyICsrLQ0KPiAgdnMyMDEzL2xpdGVhZ2VudC9M
aXRlQWdlbnQudmN4cHJvaiB8ICAgOCArLQ0KPiAgNyBmaWxlcyBjaGFuZ2VkLCA0MjAgaW5zZXJ0
aW9ucygrKSwgOCBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC5jcHANCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGl0ZWFnZW50L0xp
dGVBZ2VudC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpdGVhZ2VudC9saXRlYWdlbnQu
cmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGl0ZWFnZW50L21lc3NhZ2VzLm1jDQo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpdGVhZ2VudC94ZW4uaWNvDQoNCkkgZG8gd29uZGVyIHdo
ZXRoZXIgd2Ugc2hvdWxkIGNvbnRpbnVlIHRvIGNhbGwgdGhpcyB0aGUgbGl0ZSBhZ2VudC4gQWZ0
ZXIgYWxsLCBpdCdzIG5vdCBvYnZpb3VzIHdoeSBpdCdzICdsaXRlJyAoYW5kIHRoYXQncyBhIGhv
cnJpYmxlIEFtZXJpY2FuaXNtIGFueXdheSkuDQoNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uNzkyMGU5Yg0KPiAtLS0gL2Rldi9u
dWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAtMCwwICsxLDIw
OSBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+ICsgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+ICsgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgbWV0Og0KPiArICoNCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBk
aXNjbGFpbWVyLg0KPiArICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+ICsgKiAgICAgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gKyAqDQo+ICsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gKyAqIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsg
KiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
Rg0KPiArICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUNCj4gKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SDQo+ICsgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+ICsgKiBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiArICog
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
DQo+ICsgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFDQo+ICsgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GDQo+ICsgKiBTVUNIIERBTUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjZGVm
aW5lIElOSVRHVUlEDQo+ICsjaW5jbHVkZSA8d2luZG93cy5oPg0KPiArDQo+ICsjaW5jbHVkZSAi
TGl0ZUFnZW50LmgiDQo+ICsNCj4gK2ludCBfX3N0ZGNhbGwgV2luTWFpbihISU5TVEFOQ0UgaElu
c3RhbmNlLCBISU5TVEFOQ0UgaWdub3JlLCBMUFNUUg0KPiBscENtZExpbmUsIGludCBuQ21kU2hv
dykNCj4gK3sNCj4gKyAgICBpZiAoc3RybGVuKGxwQ21kTGluZSkgIT0gMCkgew0KPiArICAgICAg
ICBpZiAoIXN0cmNtcChscENtZExpbmUsICItaSIpIHx8ICFzdHJjbXAobHBDbWRMaW5lLCAiXCIt
aVwiIikpDQo+ICsgICAgICAgICAgICByZXR1cm4gQ0xpdGVBZ2VudDo6U2VydmljZUluc3RhbGwo
KTsNCj4gKyAgICAgICAgaWYgKCFzdHJjbXAobHBDbWRMaW5lLCAiLXUiKSB8fCAhc3RyY21wKGxw
Q21kTGluZSwgIlwiLXVcIiIpKQ0KPiArICAgICAgICAgICAgcmV0dXJuIENMaXRlQWdlbnQ6OlNl
cnZpY2VVbmluc3RhbGwoKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIENMaXRlQWdlbnQ6OlNl
cnZpY2VFbnRyeSgpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgQ0xpdGVBZ2VudCBzX3NlcnZpY2U7
DQo+ICsNCj4gKy8qc3RhdGljKi8gdm9pZCBDTGl0ZUFnZW50OjpMb2coY29uc3QgY2hhciogZm10
LCAuLi4pDQo+ICt7DQo+ICt9DQo+ICsNCj4gKy8qc3RhdGljKi8gaW50IENMaXRlQWdlbnQ6OlNl
cnZpY2VJbnN0YWxsKCkNCj4gK3sNCj4gKyAgICByZXR1cm4gLTE7DQo+ICt9DQo+ICsNCj4gKy8q
c3RhdGljKi8gaW50IENMaXRlQWdlbnQ6OlNlcnZpY2VVbmluc3RhbGwoKQ0KPiArew0KPiArICAg
IFNDX0hBTkRMRSAgIHN2YywgbWdyOw0KPiArDQo+ICsgICAgbWdyID0gT3BlblNDTWFuYWdlcihO
VUxMLCBOVUxMLCBTQ19NQU5BR0VSX0FMTF9BQ0NFU1MpOw0KPiArICAgIGlmIChtZ3IgPT0gTlVM
TCkNCj4gKyAgICAgICAgcmV0dXJuIC0xOw0KPiArDQo+ICsgICAgc3ZjID0gT3BlblNlcnZpY2Uo
bWdyLCBTVkNfTkFNRSwgU0VSVklDRV9BTExfQUNDRVNTKTsNCj4gKyAgICBpZiAoc3ZjID09IE5V
TEwpIHsNCj4gKyAgICAgICAgQ2xvc2VTZXJ2aWNlSGFuZGxlKG1ncik7DQo+ICsgICAgICAgIHJl
dHVybiAtMjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLyB0cnkgdG8gc3RvcCB0aGUgc2Vydmlj
ZQ0KPiArICAgIGlmIChDb250cm9sU2VydmljZShzdmMsIFNFUlZJQ0VfQ09OVFJPTF9TVE9QLCAm
c19zZXJ2aWNlLm1fc3RhdHVzKSkNCj4gKyAgICB7DQo+ICsgICAgICAgIFNsZWVwKCAxMDAwICk7
DQo+ICsNCj4gKyAgICAgICAgd2hpbGUgKFF1ZXJ5U2VydmljZVN0YXR1cyhzdmMsICZzX3NlcnZp
Y2UubV9zdGF0dXMpKQ0KPiArICAgICAgICB7DQo+ICsgICAgICAgICAgICBpZiAoc19zZXJ2aWNl
Lm1fc3RhdHVzLmR3Q3VycmVudFN0YXRlICE9IFNFUlZJQ0VfU1RPUF9QRU5ESU5HKQ0KPiArICAg
ICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgU2xlZXAoMTAwMCk7DQo+ICsgICAg
ICAgIH0NCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLyBub3cgcmVtb3ZlIHRoZSBzZXJ2aWNlDQo+
ICsgICAgRGVsZXRlU2VydmljZShzdmMpOw0KPiArICAgIENsb3NlU2VydmljZUhhbmRsZShzdmMp
Ow0KPiArICAgIENsb3NlU2VydmljZUhhbmRsZShtZ3IpOw0KPiArfQ0KPiArDQo+ICsvKnN0YXRp
YyovIGludCBDTGl0ZUFnZW50OjpTZXJ2aWNlRW50cnkoKQ0KPiArew0KPiArICAgIFNFUlZJQ0Vf
VEFCTEVfRU5UUlkgU2VydmljZVRhYmxlWzJdID0NCj4gKyAgICB7DQo+ICsgICAgICAgIHsgU1ZD
X05BTUUsIChMUFNFUlZJQ0VfTUFJTl9GVU5DVElPTilTZXJ2aWNlTWFpbiB9LA0KPiArICAgICAg
ICB7IE5VTEwsIE5VTEwgfQ0KPiArICAgIH07DQo+ICsNCj4gKyAgICBpZiAoIVN0YXJ0U2Vydmlj
ZUN0cmxEaXNwYXRjaGVyKFNlcnZpY2VUYWJsZSkpIHsNCj4gKyAgICAgICAgQ0xpdGVBZ2VudDo6
TG9nKCJGYWlsZWQgdG8gc3RhcnQgZGlzcGF0Y2hlclxuIik7DQo+ICsgICAgICAgIHJldHVybiBH
ZXRMYXN0RXJyb3IoKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g
Ky8qc3RhdGljKi8gdm9pZCBXSU5BUEkgQ0xpdGVBZ2VudDo6U2VydmljZU1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQ0KPiArew0KPiArICAgIHNfc2VydmljZS5fX1NlcnZpY2VNYWluKGFyZ2Ms
IGFyZ3YpOw0KPiArfQ0KPiArDQo+ICsvKnN0YXRpYyovIERXT1JEIFdJTkFQSSBDTGl0ZUFnZW50
OjpTZXJ2aWNlQ29udHJvbEhhbmRsZXJFeChEV09SRA0KPiByZXEsIERXT1JEIGV2dCwgTFBWT0lE
IGRhdGEsIExQVk9JRCBjdHh0KQ0KPiArew0KPiArICAgIHJldHVybiBzX3NlcnZpY2UuX19TZXJ2
aWNlQ29udHJvbEhhbmRsZXJFeChyZXEsIGV2dCwgZGF0YSwgY3R4dCk7DQo+ICt9DQo+ICsNCj4g
K0NMaXRlQWdlbnQ6OkNMaXRlQWdlbnQoKSA6IG1faGFuZGxlKE5VTEwpDQo+ICt7DQo+ICsgICAg
bV9zdGF0dXMuZHdTZXJ2aWNlVHlwZSAgICAgICAgPSBTRVJWSUNFX1dJTjMyOw0KPiArICAgIG1f
c3RhdHVzLmR3Q3VycmVudFN0YXRlICAgICAgID0gU0VSVklDRV9TVEFSVF9QRU5ESU5HOw0KPiAr
ICAgIG1fc3RhdHVzLmR3Q29udHJvbHNBY2NlcHRlZCAgID0gU0VSVklDRV9BQ0NFUFRfU1RPUCB8
DQo+IFNFUlZJQ0VfQUNDRVBUX1NIVVRET1dOOw0KPiArICAgIG1fc3RhdHVzLmR3V2luMzJFeGl0
Q29kZSAgICAgID0gMDsNCj4gKyAgICBtX3N0YXR1cy5kd1NlcnZpY2VTcGVjaWZpY0V4aXRDb2Rl
ID0gMDsNCj4gKyAgICBtX3N0YXR1cy5kd0NoZWNrUG9pbnQgICAgICAgICA9IDA7DQo+ICsgICAg
bV9zdGF0dXMuZHdXYWl0SGludCAgICAgICAgICAgPSAwOw0KPiArDQo+ICsgICAgbV9zdmNfc3Rv
cCA9IENyZWF0ZUV2ZW50KEZBTFNFLCBOVUxMLCBOVUxMLCBGQUxTRSk7DQo+ICt9DQo+ICsNCj4g
K0NMaXRlQWdlbnQ6On5DTGl0ZUFnZW50KCkNCj4gK3sNCj4gKyAgICBDbG9zZUhhbmRsZShtX3N2
Y19zdG9wKTsNCj4gK30NCj4gKw0KPiArdm9pZCBDTGl0ZUFnZW50OjpPblNlcnZpY2VTdGFydCgp
DQo+ICt7DQo+ICsgICAgQ0xpdGVBZ2VudDo6TG9nKCJPblNlcnZpY2VTdGFydCgpXG4iKTsNCj4g
K30NCj4gKw0KPiArdm9pZCBDTGl0ZUFnZW50OjpPblNlcnZpY2VTdG9wKCkNCj4gK3sNCj4gKyAg
ICBDTGl0ZUFnZW50OjpMb2coIk9uU2VydmljZVN0b3AoKVxuIik7DQo+ICt9DQo+ICsNCj4gK3Zv
aWQgQ0xpdGVBZ2VudDo6T25EZXZpY2VFdmVudChEV09SRCBldnQsIExQVk9JRCBkYXRhKQ0KPiAr
ew0KPiArICAgIENMaXRlQWdlbnQ6OkxvZygiT25EZXZpY2VFdmVudCgpXG4iKTsNCj4gK30NCj4g
Kw0KPiArYm9vbCBDTGl0ZUFnZW50OjpTZXJ2aWNlTWFpbkxvb3AoKQ0KPiArew0KPiArICAgIFdh
aXRGb3JTaW5nbGVPYmplY3QobV9zdmNfc3RvcCwgSU5GSU5JVEUpOw0KPiArICAgIHJldHVybiBm
YWxzZTsNCj4gK30NCj4gKw0KPiArdm9pZCBDTGl0ZUFnZW50OjpTZXRTZXJ2aWNlU3RhdHVzKERX
T1JEIHN0YXRlLCBEV09SRCBleGl0IC8qPSAwKi8sDQo+IERXT1JEIGhpbnQgLyo9IDAqLykNCj4g
K3sNCj4gKyAgICBtX3N0YXR1cy5kd0N1cnJlbnRTdGF0ZSA9IHN0YXRlOw0KPiArICAgIG1fc3Rh
dHVzLmR3V2luMzJFeGl0Q29kZSA9IGV4aXQ7DQo+ICsgICAgbV9zdGF0dXMuZHdXYWl0SGludCA9
IGhpbnQ7DQo+ICsgICAgOjpTZXRTZXJ2aWNlU3RhdHVzKG1faGFuZGxlLCAmbV9zdGF0dXMpOw0K
PiArfQ0KPiArDQo+ICt2b2lkIFdJTkFQSSBDTGl0ZUFnZW50OjpfX1NlcnZpY2VNYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikNCj4gK3sNCj4gKyAgICBtX2hhbmRsZSA9IFJlZ2lzdGVyU2Vydmlj
ZUN0cmxIYW5kbGVyRXgoU1ZDX05BTUUsDQo+IFNlcnZpY2VDb250cm9sSGFuZGxlckV4LCBOVUxM
KTsNCj4gKyAgICBpZiAobV9oYW5kbGUgPT0gTlVMTCkNCj4gKyAgICAgICAgcmV0dXJuOw0KPiAr
DQo+ICsgICAgU2V0U2VydmljZVN0YXR1cyhTRVJWSUNFX1JVTk5JTkcpOw0KPiArICAgIE9uU2Vy
dmljZVN0YXJ0KCk7DQo+ICsgICAgd2hpbGUgKFNlcnZpY2VNYWluTG9vcCgpKSA7DQo+ICsgICAg
T25TZXJ2aWNlU3RvcCgpOw0KPiArICAgIFNldFNlcnZpY2VTdGF0dXMoU0VSVklDRV9TVE9QUEVE
KTsNCj4gK30NCj4gKw0KPiArRFdPUkQgV0lOQVBJIENMaXRlQWdlbnQ6Ol9fU2VydmljZUNvbnRy
b2xIYW5kbGVyRXgoRFdPUkQgcmVxLA0KPiBEV09SRCBldnQsIExQVk9JRCBkYXRhLCBMUFZPSUQg
Y3R4dCkNCj4gK3sNCj4gKyAgICBzd2l0Y2ggKHJlcSkNCj4gKyAgICB7DQo+ICsgICAgY2FzZSBT
RVJWSUNFX0NPTlRST0xfU1RPUDoNCj4gKyAgICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJTRVJWSUNF
X0NPTlRST0xfU1RPUFxuIik7DQo+ICsgICAgICAgIFNldFNlcnZpY2VTdGF0dXMoU0VSVklDRV9T
VE9QX1BFTkRJTkcpOw0KPiArICAgICAgICBTZXRFdmVudChtX3N2Y19zdG9wKTsNCj4gKyAgICAg
ICAgcmV0dXJuIE5PX0VSUk9SOw0KPiArDQo+ICsgICAgY2FzZSBTRVJWSUNFX0NPTlRST0xfU0hV
VERPV046DQo+ICsgICAgICAgIENMaXRlQWdlbnQ6OkxvZygiU0VSVklDRV9DT05UUk9MX1NIVVRE
T1dOXG4iKTsNCj4gKyAgICAgICAgU2V0U2VydmljZVN0YXR1cyhTRVJWSUNFX1NUT1BfUEVORElO
Ryk7DQo+ICsgICAgICAgIFNldEV2ZW50KG1fc3ZjX3N0b3ApOw0KPiArICAgICAgICByZXR1cm4g
Tk9fRVJST1I7DQo+ICsNCj4gKyAgICBjYXNlIFNFUlZJQ0VfQ09OVFJPTF9ERVZJQ0VFVkVOVDoN
Cj4gKyAgICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJTRVJWSUNFX0NPTlRST0xfREVWSUNFRVZFTlRc
biIpOw0KPiArICAgICAgICBTZXRTZXJ2aWNlU3RhdHVzKFNFUlZJQ0VfUlVOTklORyk7DQo+ICsg
ICAgICAgIE9uRGV2aWNlRXZlbnQoZXZ0LCBkYXRhKTsNCj4gKyAgICAgICAgcmV0dXJuIE5PX0VS
Uk9SOw0KPiArDQo+ICsgICAgY2FzZSBTRVJWSUNFX0NPTlRST0xfSU5URVJST0dBVEU6DQo+ICsg
ICAgICAgIFNldFNlcnZpY2VTdGF0dXMoU0VSVklDRV9SVU5OSU5HKTsNCj4gKyAgICAgICAgcmV0
dXJuIE5PX0VSUk9SOw0KPiArDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgYnJlYWs7DQo+
ICsgICAgfQ0KPiArDQo+ICsgICAgU2V0U2VydmljZVN0YXR1cyhTRVJWSUNFX1JVTk5JTkcpOw0K
PiArICAgIHJldHVybiBFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRDsNCj4gK30NCj4gZGlmZiAt
LWdpdCBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmggYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2Vu
dC5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmFiMTkyZWYNCj4g
LS0tIC9kZXYvbnVsbA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IEBAIC0w
LDAgKzEsNzMgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiAr
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBvciB3aXRob3V0IG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xs
b3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiArICogICAgIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0KPiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+ICsgKiBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiArICogQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+ICsgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwN
Cj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+ICsgKi8NCj4gKw0K
PiArI2lmbmRlZiBfTElURUFHRU5UX0hfDQo+ICsjZGVmaW5lIF9MSVRFQUdFTlRfSF8NCj4gKw0K
PiArI2luY2x1ZGUgPHZlcnNpb24uaD4NCj4gKw0KPiArI2RlZmluZSBTVkNfTkFNRSAieGVuc3Zj
Ig0KPiArI2RlZmluZSBTVkNfRElTUExBWU5BTUUgUFJPRFVDVF9OQU1FX1NUUiAjIyAiSW50ZXJm
YWNlIFNlcnZpY2UiDQo+ICsjZGVmaW5lIFNWQ19ERVNDICJNb25pdG9ycyBhbmQgcHJvdmlkZXMg
dmFyaW91cyBtZXRyaWNzIHRvIFhlblN0b3JlIg0KPiArDQoNClRoZXNlIHNob3VsZCBwcm9iYWJs
eSBiZSBjaGFuZ2VkLiAnSW50ZXJmYWNlIFNlcnZpY2UnIGlzIHNvbWV3aGF0IHZhZ3VlIGFuZCBJ
IGRvbid0IHRoaW5rIGF0IGFjdHVhbGx5IGRvZXMgcHJvdmlkZSBtZXRyaWNzIHRvIFhlblN0b3Jl
Lg0KDQo+ICtjbGFzcyBDTGl0ZUFnZW50DQo+ICt7DQo+ICtwdWJsaWM6IC8vIHN0YXRpY3MNCj4g
KyAgICBzdGF0aWMgdm9pZCBMb2coY29uc3QgY2hhciogZm10LCAuLi4pOw0KPiArDQo+ICsgICAg
c3RhdGljIGludCBTZXJ2aWNlSW5zdGFsbCgpOw0KPiArICAgIHN0YXRpYyBpbnQgU2VydmljZVVu
aW5zdGFsbCgpOw0KPiArICAgIHN0YXRpYyBpbnQgU2VydmljZUVudHJ5KCk7DQo+ICsNCj4gKyAg
ICBzdGF0aWMgdm9pZCBXSU5BUEkgU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsN
Cj4gKyAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIFNlcnZpY2VDb250cm9sSGFuZGxlckV4KERXT1JE
LCBEV09SRCwNCj4gTFBWT0lELCBMUFZPSUQpOw0KPiArDQo+ICtwdWJsaWM6IC8vIGN0b3IvZHRv
cg0KPiArICAgIENMaXRlQWdlbnQoKTsNCj4gKyAgICB+Q0xpdGVBZ2VudCgpOw0KPiArDQo+ICtw
cml2YXRlOiAvLyBzZXJ2aWNlIGV2ZW50cw0KPiArICAgIHZvaWQgT25TZXJ2aWNlU3RhcnQoKTsN
Cj4gKyAgICB2b2lkIE9uU2VydmljZVN0b3AoKTsNCj4gKyAgICB2b2lkIE9uRGV2aWNlRXZlbnQo
RFdPUkQsIExQVk9JRCk7DQo+ICsgICAgYm9vbCBTZXJ2aWNlTWFpbkxvb3AoKTsNCj4gKw0KPiAr
cHJpdmF0ZTogLy8gc2VydmljZSBzdXBwb3J0DQo+ICsgICAgdm9pZCBTZXRTZXJ2aWNlU3RhdHVz
KERXT1JEIHN0YXRlLCBEV09SRCBleGl0ID0gMCwgRFdPUkQgaGludCA9IDApOw0KPiArICAgIHZv
aWQgV0lOQVBJIF9fU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsNCj4gKyAgICBE
V09SRCBXSU5BUEkgX19TZXJ2aWNlQ29udHJvbEhhbmRsZXJFeChEV09SRCwgRFdPUkQsIExQVk9J
RCwNCj4gTFBWT0lEKTsNCj4gKw0KPiArICAgIFNFUlZJQ0VfU1RBVFVTICAgICAgICAgIG1fc3Rh
dHVzOw0KPiArICAgIFNFUlZJQ0VfU1RBVFVTX0hBTkRMRSAgIG1faGFuZGxlOw0KPiArICAgIEhB
TkRMRSAgICAgICAgICAgICAgICAgIG1fc3ZjX3N0b3A7DQo+ICt9Ow0KPiArDQo+ICsjZW5kaWYN
Cj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdlbnQvbGl0ZWFnZW50LnJjIGIvc3JjL2xpdGVhZ2Vu
dC9saXRlYWdlbnQucmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4u
NzhlNWNjNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvbGl0ZWFnZW50
LnJjDQo+IEBAIC0wLDAgKzEsNjAgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3Rl
bXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBv
ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICog
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4g
KyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiAr
ICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0K
PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiArICog
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+
ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
DQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+
ICsgKi8NCj4gKw0KPiArDQo+ICsjaW5jbHVkZSA8d2luZG93cy5oPg0KPiArI2luY2x1ZGUgPG50
dmVycC5oPg0KPiArDQo+ICsjdW5kZWYgVkVSX0NPTVBBTllOQU1FX1NUUg0KPiArI3VuZGVmIFZF
Ul9QUk9EVUNUTkFNRV9TVFINCj4gKyN1bmRlZiBWRVJfUFJPRFVDVFZFUlNJT04NCj4gKyN1bmRl
ZiBWRVJfUFJPRFVDVFZFUlNJT05fU1RSDQo+ICsNCj4gKyNpbmNsdWRlIDx2ZXJzaW9uLmg+DQo+
ICsNCj4gKyNkZWZpbmUgVkVSX0NPTVBBTllOQU1FX1NUUiAgICAgICAgIFZFTkRPUl9OQU1FX1NU
Ug0KPiArI2RlZmluZSBWRVJfTEVHQUxDT1BZUklHSFRfU1RSICAgICAgIkNvcHlyaWdodCAoYykg
Q2l0cml4IFN5c3RlbXMgSW5jLiINCj4gKw0KPiArI2RlZmluZSBWRVJfUFJPRFVDVE5BTUVfU1RS
ICAgICAgICAgIlhFTklGQUNFIg0KPiArI2RlZmluZSBWRVJfUFJPRFVDVFZFUlNJT04NCj4gTUFK
T1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLE1JQ1JPX1ZFUlNJT04sQlVJTERfTlVNQkVSDQo+ICsj
ZGVmaW5lIFZFUl9QUk9EVUNUVkVSU0lPTl9TVFIgICAgICBNQUpPUl9WRVJTSU9OX1NUUiAiLiIN
Cj4gTUlOT1JfVkVSU0lPTl9TVFIgIi4iIE1JQ1JPX1ZFUlNJT05fU1RSICIuIiBCVUlMRF9OVU1C
RVJfU1RSDQo+ICsNCj4gKyNkZWZpbmUgVkVSX0lOVEVSTkFMTkFNRV9TVFIgCSAgICAidzMyeGFn
ZW50LmV4ZSINCj4gKyNkZWZpbmUgVkVSX0ZJTEVWRVJTSU9OX1NUUiAJICAgICIxLjAiDQo+ICsj
ZGVmaW5lIFZFUl9GSUxFREVTQ1JJUFRJT05fU1RSICAgICAidzMyYWdlbnQiDQo+ICsjZGVmaW5l
IFZFUl9PUklHSU5BTEZJTEVOQU1FX1NUUiAgICAidzMyeGFnZW50LmV4ZSINCj4gKyNkZWZpbmUg
VkVSX0ZJTEVUWVBFIFZGVF9BUFANCj4gKyNkZWZpbmUgVkVSX0ZJTEVTVUJUWVBFIDANCj4gKw0K
DQpBcmUgdGhlc2UgZmllbGRzIGNvcnJlY3Q/IFdoeSBhcmUgd2UgYmFraW5nIHZlcnNpb24gMS4w
IGluIGhlcmU/IFdoeSAndzMyeCcgYW5kIHdoeSBkb2VzIHRoZSBkZXNjcmlwdGlvbiBub3QgaW5j
bHVkZSB0aGUgJ3gnPw0KDQo+ICt4ZW5faWNvbiBJQ09OICJ4ZW4uaWNvIg0KPiArDQo+ICsjaW5j
bHVkZSAiY29tbW9uLnZlciINCj4gKyNpbmNsdWRlICJtZXNzYWdlcy5yYyINCj4gXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L21lc3NhZ2Vz
Lm1jIGIvc3JjL2xpdGVhZ2VudC9tZXNzYWdlcy5tYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
PiBpbmRleCAwMDAwMDAwLi4wMjg5YzQ0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc3JjL2xp
dGVhZ2VudC9tZXNzYWdlcy5tYw0KPiBAQCAtMCwwICsxLDY2IEBADQo+ICtTZXZlcml0eU5hbWVz
PShJbmZvcm1hdGlvbmFsPTB4MSkNCj4gK0ZhY2lsaXR5TmFtZXM9KFhlblVzZXI9MHhkNjApDQo+
ICsNCj4gK01lc3NhZ2VJZD0weDAwMDENCj4gK0ZhY2lsaXR5PVhlblVzZXINCj4gK1NldmVyaXR5
PUluZm9ybWF0aW9uYWwNCj4gK1N5bWJvbGljTmFtZT1FVkVOVF9YRU5VU0VSX1BPV0VST0ZGDQo+
ICtMYW5ndWFnZT1FbmdsaXNoDQo+ICtUaGUgdG9vbHMgcmVxdWVzdGVkIHRoYXQgdGhlIGxvY2Fs
IFZNIHNodXQgaXRzZWxmIGRvd24uDQo+ICsuDQo+ICsNCj4gK01lc3NhZ2VJZD0weDAwMDINCj4g
K0ZhY2lsaXR5PVhlblVzZXINCj4gK1NldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4gK1N5bWJvbGlj
TmFtZT1FVkVOVF9YRU5VU0VSX1JFQk9PVA0KPiArTGFuZ3VhZ2U9RW5nbGlzaA0KPiArVGhlIHRv
b2xzIHJlcXVlc3RlZCB0aGF0IHRoZSBsb2NhbCBWTSByZWJvb3QuDQo+ICsuDQo+ICsNCj4gK01l
c3NhZ2VJZD0weDAwMDMNCj4gK0ZhY2lsaXR5PVhlblVzZXINCj4gK1NldmVyaXR5PUluZm9ybWF0
aW9uYWwNCj4gK1N5bWJvbGljTmFtZT1FVkVOVF9YRU5VU0VSX0hJQkVSTkFURQ0KPiArTGFuZ3Vh
Z2U9RW5nbGlzaA0KPiArVGhlIHRvb2xzIHJlcXVlc3RlZCB0aGF0IHRoZSBsb2NhbCBWTSBoaWJl
cm5hdGUgaXRzZWxmLg0KPiArLg0KPiArDQo+ICtNZXNzYWdlSWQ9MHgwMDA0DQo+ICtGYWNpbGl0
eT1YZW5Vc2VyDQo+ICtTZXZlcml0eT1JbmZvcm1hdGlvbmFsDQo+ICtTeW1ib2xpY05hbWU9RVZF
TlRfWEVOVVNFUl9TMw0KPiArTGFuZ3VhZ2U9RW5nbGlzaA0KPiArVGhlIHRvb2xzIHJlcXVlc3Rl
ZCB0aGF0IHRoZSBsb2NhbCBWTSBlbnRlciBwb3dlciBzdGF0ZSBTMy4NCj4gKy4NCj4gKw0KPiAr
TWVzc2FnZUlkPTB4MDAwNQ0KPiArRmFjaWxpdHk9WGVuVXNlcg0KPiArU2V2ZXJpdHk9SW5mb3Jt
YXRpb25hbA0KPiArU3ltYm9saWNOYW1lPUVWRU5UX1hFTlVTRVJfV01JDQo+ICtMYW5ndWFnZT1F
bmdsaXNoDQo+ICtUaGUgdG9vbHMgbm90aWNlZCB0aGF0IFdNSSBiZWNhbWUgbm9uLWZ1bmN0aW9u
YWwuDQo+ICsuDQoNCkRvZXMgdGhpcyBhZ2VudCB1c2UgV01JPw0KDQogIFBhdWwNCg0KPiArDQo+
ICtNZXNzYWdlSWQ9MHgwMDA2DQo+ICtGYWNpbGl0eT1YZW5Vc2VyDQo+ICtTZXZlcml0eT1JbmZv
cm1hdGlvbmFsDQo+ICtTeW1ib2xpY05hbWU9RVZFTlRfWEVOVVNFUl9TVEFSVEVEDQo+ICtMYW5n
dWFnZT1FbmdsaXNoDQo+ICtUaGUgdG9vbHMgaW5pdGlhdGVkLg0KPiArLg0KPiArDQo+ICtNZXNz
YWdlSWQ9MHgwMDA3DQo+ICtGYWNpbGl0eT1YZW5Vc2VyDQo+ICtTZXZlcml0eT1JbmZvcm1hdGlv
bmFsDQo+ICtTeW1ib2xpY05hbWU9RVZFTlRfWEVOVVNFUl9VTlNVU1BFTkRFRA0KPiArTGFuZ3Vh
Z2U9RW5nbGlzaA0KPiArVGhlIHRvb2xzIHJldHVybmVkIGZyb20gc3VzcGVuZC4NCj4gKy4NCj4g
Kw0KPiArTWVzc2FnZUlkPTB4MDAwOA0KPiArRmFjaWxpdHk9WGVuVXNlcg0KPiArU2V2ZXJpdHk9
SW5mb3JtYXRpb25hbA0KPiArU3ltYm9saWNOYW1lPUVWRU5UX1hFTlVTRVJfVU5FWFBFQ1RFRA0K
PiArTGFuZ3VhZ2U9RW5nbGlzaA0KPiArVGhlIHRvb2xzIGV4cGVyaWVuY2VkIGFuIHVuZXhwZWN0
ZWQgZXJyb3IuDQo+ICsuDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L3hlbi5pY28gYi9z
cmMvbGl0ZWFnZW50L3hlbi5pY28NCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4g
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ0Yzk5M2JhMjkwZTUw
NTVhODkwMGNhODcNCj4gODZlYTBlMDMxMTM4YTYNCj4gR0lUIGJpbmFyeSBwYXRjaA0KPiBsaXRl
cmFsIDI1MjE0DQo+IHpjbWVIdjMwemdoYH1lUmZEeXhicCVMUFAwUCpEJjtLdXwhKkM3MENQJTYm
S1lsKipGSzU+M1NvMT5FO0ZfWA0KPiBUJH0NCj4genZfI3l1KG8jZm94MiU0Wm1ITkVUY2d7Sk5k
b04oeHJ7RFgmfElmZUNAMHBvcm9eOTRNWFVAM0BWSjdUDQo+IEVYczhwJQ0KPiB6bVNUWGw1T2Fr
UEktUWNnVj1seHFyYTN0JmA5TCF2WnJLVXU3dEMpZik7SXteUCE5WlItZDJkNj8lLUdRMUZWRjIN
Cj4geihedW95aThjTzA5MVlPO0luUjdVVFdTMHtGfkN4WSU1TXIwJFVkK00oU3JmTTVLQCYkcmow
TURUKiNFdg0KPiBSMytqbw0KPiB6Q21FP0NII2U2SE5kNlpATkhPPnlOVnhvRXVvKmtINnJRblRR
X3xBTGp2YTFYV0hVQWBaREx8I1RHDQo+IH1MSW5VdTd8DQo+IHojRmhtR2lIWFQraDd2WHQ2QVA0
KG1wR3xkbFRDXzdFLQ0KPiAxKUxGNG1NWGsjJVN4UHBgP3dranpGak8kSiZabCRXZlMNCj4gekhl
dUhiKmk2KF50OHQjOUQ1YSRkeStBNHxwKzszeUxKZURucUxofVd4Vj5wQWwlPVopQ31RPVhLVn51
KjUNCj4gV0BofQ0KPiB6WGFhZ1ZFMFhGfTBZcD41dWhGSFpzZTFOZXgrSkEqPzhTNWBwalFMQlQz
Wk5ra2xzaiN2e3EwR3EqV3VqdGRydA0KPiBSDQo+IHpEZkUoaDZuOyUwZEFRYldVI2Y8czElMTdn
Q2V3UlZPcWNBXkNrUGJOUVAoRiohKllRc1Q/KCpJT2pqeF8pDQo+IHZ5OXANCj4gemxpRHdlKWhB
Mz55OWpqNlFCYyhZSEI0YCo8K1Y2YjRqYEBOR14qQGdETnN6MkRYRkZ1TVQjMnN3MEtzNFUNCj4g
bU1TKw0KPiB6bU5qLTNGbSRQU3pLRjhzN2ktDQo+IGM/N3xsbzRSUW1pQ1d6QmFYTj8jdV4kQm93
JHJNc35mSiZzZT5Cdzs0dyQzbnptDQo+IHpqZH49Nkh7d0RlOTEqN3FWUyQpNm5lcFdyJEgrV0VK
WUVQRVc1TUU+I2FWJDZnQF8lQzw2UHV6Z3cNCj4gV3p0PFNsczMNCj4gentFSGFIeWRXIyNJZExq
RFVPLTxpX3plNmdNQmN6cCY0MUgrWTR6M1cmcktsUEwqRzhFTlZiPk9lcC0NCj4gOHkrUC1SZw0K
PiB6PDM2S2YjNTEofWpOcDQtPV48NVZBaWwzfmlveVJ0Oz4rSz0mbHJ5ZDh8OXdEbnc1fkUrKUlZ
NSp8OEg3VGpDeHYNCj4gek5nPiN6YVNrQ19QUDV8YXAtDQo+IGM+ZWQ3MXxYKTRidWRsPE9fZXtp
eXs3eWI/QFIqOSN0K1E/Vmp3Pmp4KHZWPEZKOw0KPiB6TlQqMzVIWHprODBtWWMlR0xQaiVVQzxT
Qz1fVGBXMn5fI3pHNlZzMkohRSFQcTRAKmY8ZUR+Pj9WJm4NCj4gY181XyM1DQo+IHpZTSQ5eW1U
Z1l0M1kqbGdNRXk8TSE/Z1dgWTVOTTNfUSRGcUBBWD4kQFhWSGIwPTJzazc1NlYlTQ0KPiBoPn1E
MyFkSSkNCj4geiNOJjU3aDlyaChBckRtYG1qek9KKSkrITR2a2Z5JTU1c2IjYjZLdVgpZDc5YjM7
bEFhIXlZZCE4MFN0NTlZWSlFDQo+IHpzaGxvN3ErKVBtVUBIK3tJcilPKW9hPkFodV5GQTEqbytn
U1RrPzJtQ1R1dzMjQmVQaGVkPSpSYGpkaVlxDQo+IFlMT1UNCj4gel9hZXZLa3ArbUVBWTw5dnBn
JWM5UT00Z1dUQ0N+UytkKjVpeHlNLQ0KPiBSWTxPTTYrUVRnZGxvaG1jQEluVCUjYHtpTg0KPiB6
TVU/bHVgaz9nITZaJGRVc15UTDBnQHVXSntyWlhWPEh3NkI5enZ4MVNjIUNoZG9qbilPdzExdVZu
TUxBJA0KPiBmI0xDDQo+IHpPYj5EdnZ1anJwKTlaU1BgRV59SFdgdmhtUlpFRHFiJWZZWlNCTmQp
TGdZbDVpSHo4cVZwQyZSaz0tDQo+IG1wOTc/YmgNCj4gemBSKGpRUTlCe2RfSTQzaCMjUit5eWNJ
NGN3ezl3eWJ4MDY3ITx2Yjh7a3c9UHchaSZAKGMoc1c0Ukw+Nm4zeQ0KPiA+dw0KPiB6Tz1NK2Rp
S1I9SWlkQ3l0aU00Q2ppajVtTGlydT8raXZ0R15oeXBJVmtoNFJzVFN0IWA2fn5TcDZETGxiNVR7
UnsNCj4gejdVJDJPN2hpdzx3WVlscXM8PzZFaFBaWD5tYmlRT3U2WGReZiV4JnFBSF5AZnszM3E7
e2RlKX5uT3VHSw0KPiBQNGpRIQ0KPiB6LXhtMWEmO3E9WXwzOWR2bHxIPEhhcG55UzM9SERINW9l
dyYhc1Y3aHs9Vk1jbypve2Etcm0wY0w2Ki0NCj4gR3Y5YiZhDQo+IHpeITQocDV1azx8VVlAPnpB
KG15PlZCTzVFWEk1bHRjPS0NCj4gbWhqWihaflBmQm5AaDklZ201KDJFOytlRWtPUmUrWl8NCj4g
em49bGJ6Y0lpcnU1YGl0JEBINz0qYzI1SU5GQnVGN0NJVnBoTGIxWVZlM2YpIzBqblR5am1PZ0BY
bXN6Tzt3bzQNCj4gTA0KPiB6YGckXjU7akNzOTZkRFNCMTJxQm1ya2JTZElqaFFgJm5rdWJJPHh2
fW8oJnR1JGJTdWs2PXVISGklfilwMVU7K2kNCj4gejRPaihNV2tTM2I+WmsoMjhpRGhXc0ghPy0N
Cj4gVyQ3ejk7PFdPcCR9K15MY34haD5Sbj5yMVAhJVJJaShWaW1tfi1KTw0KPiB6ZHo+UThFTERe
eXZocjZiZUFPKChoZzg8UVFRME1uS1UmRGooeXgqfT1taT5SI2BIeTtASXd1KDAofWY8OA0KPiBr
OzYpDQo+IHpQKmthc2tJRy1zRmxkfUlqeCNLJnNQRzM+YVd4N0MwI1FaPHVDbF5iS2B0Z2lZc21R
YzVSKCEjUClZdWZWaGVTUQ0KPiB6MXImWktkKmV7N0tSJipKVlVkJk00fEtQO211bDNhMkYyPCo2
JSEwSCVJKXBsbUcpdSZhdlc2bEkhNWZBMg0KPiB8PEFADQo+IHpTTldeayoqUzZFJldgREpgaEs8
M2NTWDNwb3QtU05FPVFiSUFvRHZwbUE2OSgqMF8rLQ0KPiBFWDQlZG0zTU5vdnk8JUgNCj4gektu
YH0hJk1lQC0NCj4gZGJHTk55O3ZZRm09KVNOc04qZUFYWUs2Zj9DanYrUChEZ2s4RTBjPlhVb3Rt
I01nNm53JD5eNw0KPiB6Yz80Tkl5U3FjOHAybHUlWEpjYitWYEYyaHhmZFZoWV59MDB6c3x3TyRL
NmZaczhGR1RvdnAyMTFzakh+RSQxOA0KPiBADQo+IHpvU29nPSs8aHUmPlVsJjVURCR3SDV7P2NJ
JSVsWWUyUzxoNSRLNl4jLQ0KPiAoa1NmJnJnd1hiOU9XZ3RlU1FFYDF2e04NCj4geilubT5DeCV2
M31MJlRqY1ZpLTZOWmh2PC0NCj4gckUhI0htcHlYeV5YQzh+a2tKQz9uMz9JMCNvaj1LMT5GMlhB
cHQ4OA0KPiB6bDdXKjcmQ1FyeTY5XjRlV0YoViVWVllrRmJ9NjlxPDEjSnlZWUFyOG5RQipEM2V2
Z3oqRzE1P0JJRUMtDQo+IEVBNCo3DQo+IHo3V2xAaU5xYFh7KVpibCkrcHk5c3JkT150X2teeGBY
bFVLfl8xUXt3JklGZGBpemJNaGRyK1h4IW91OWwlLXE2NA0KPiB6JEM+QmR1VnBufVc8UXxWVlU9
cG8+PjlATWQ2dV85I2N7NDl3bmcrekp6c2dHbz9qS0o9VTF1eE5RaVANCj4gKWc3WWdwDQo+IHpJ
cEYrQ3A1dClMJiNkek5pcEF2bGxAPUV3QDIjRndAd3JlZ0AmPDcjXjhEOyg4aVMxVUNtSF5NSTJE
Ug0KPiBZdjZCbkINCj4gemZqP1RsNU9ucml0QWBlQV8wO09Fd0Y1VlNhO30lRXdvez9uWlkmdGJo
NUJ8U3JKZURkcyQ7fTZARSU0Nk9DXiQNCj4gNQ0KPiB6Z1hoI2FvfFltYiRWRnVFXlhCNDZQcThv
RE82K1Y8TEZ8c082VDZ9dSNreiktDQo+ICNoTTBII0V4aUpGfStiT2FWWE1LDQo+IHo5RS02TzJi
I0V3VTVWYWVTJHVWfGBxZXNPWFMzPWVyJldtOUA+Kz00KUdrYD1jfEEmO1ktDQo+IH1hWUhuUzBE
bFdvUHQNCj4gekh1bUQlSGpkJi1TNFdaRysocVFJX1l4TzZ4UWNKdkl4KT5qb2JLUSQ5PCgkUWc+
NDxoP1hLbS0tDQo+IDdmYXhEbkhXfQ0KPiB6NHM7ZHcyRHlsdlcyJVZ6P15ZNHstR2p4eEh7IStL
eDRNZHshfV5LQyEoSkRra00xdD0jYFkzPD8rcC1sUWEhfSYNCj4gems5NllCQ3B6KDlNc0BMRWV6
Mz8tDQo+IGVNQH10O2MjKGMrNlE5QmoyVUE2YHRAU2RyY0drPT1GTVd+Jllral5fc3BEJA0KPiB6
OyV3JCphZW1QWmFkR0ohQHp1JktgVFUhZ21uWTdoSkV3b3t7cE9vKiNQI2RmI2RxSSpDIWMlMnxO
aUBiDQo+IHBMLTM0DQo+IHoqMXlVQjg3PVRuS2N+alpQKTZOalY/JTVDU0ZpNDBEPk9FP0J1aXxs
UGU5RigyOWMyc0xUVXpoZ3FtezFgcWdMPA0KPiB6cjRKMVB7RVFpNWVJZz1kaCpGfStgYVhzWHZI
dFpWajYjRW1gWDBwJHZBVzw9Zj0qK0leJHo0NHNDLQ0KPiBuJE1GdTdXDQo+IHpkYURlZjktZUl4
VEtuUkckK3ZNazRzQUsqNWh8LTA+JXxXXz9QWHwkPU4qfHNxTURhZjViS1U3OC0NCj4gKmRjWVNx
P0ENCj4gendVYWI9U3NxJE4yOEUkanZNZzNlUmJVe3Q1XnBlTlAmamJhRDN3QDJFYnNLeHBmUEI5
MlM9MVVTWG90Mg0KPiB8RkBESA0KPiB6P1g7fHcxSW1rd3QoNVppP0hnJHZDQC0NCj4gZ08wJkp8
TFomRjNGcX1ofjF4ZU09S1dvUlVlWX47MUlxX31YbzIoYDdnDQo+IHpFQHh3SC1CPWJfVFUqUHhU
X2FBKDI4YHVCSjM+M3ErYVY8eCtCWXItDQo+IF49dHNVY3FnYVV2Um8jZTZvd1hkdlJzNl4NCj4g
ejhhKyt2R3A8VmloKilSMCtOQV9IWEdOU1hJQWYxeTh1WjAqcDxZOWk1TjVBUU9DSyVrQl5aVHBP
VCVLDQo+IDtWQnk+Xw0KPiB6Q0x5VjV2IStkKENkTmNOVE5vRUpMI1ZsUDx2UChaRzB9QUBKRFpv
N0E4M2N6KERLO3RsYG5PRSEzJDxWa1YqWQ0KPiBUDQo+IHoqYE0rQ1E1O2RLam9lMT8tDQo+IGgr
NF9HWDQ+N0VlZCY/ayptQ1dhN15XYGhYJGVTcDBJTj1mPnc/PVNDdVBkOW5ifXgNCj4geiZASCFz
WXpzRUFQak89QzgyV3QqXzlqe3wqciZ7ez1fcHBseHs3NXs5JTVxP1o/VWJKbj5mKE1MK3ROZFAz
Jg0KPiBwbQ0KPiB6RTRIPy0NCj4gQyUpe2M2RFBYKml1fjZETVNpQ2A7PX4ofjsoVUp9YWVreil4
SDdefFRwdzNNOVBYSllQN1gqR1haa2h+DQo+IHo9U0lGSj90TDAwX1V6ZHM0ancheEBBSD1+VTZT
fHBoWXVmJHBNVTtZe1FCIyF8REk9U3txYi0NCj4gN1p3dmZpWlVPeTENCj4geiNZX2d4eHx4fWNs
YmY1OWpoVjdzbjM9bU1NLQ0KPiBERkxhP0xPPUtDfVlDakVefDk7QWtleXRRQF8pdDIjUW1kd2NX
Mg0KPiB6aEx4Rl93UFFKKiZlUHBuPVV2WFJvVkElNSZYI2w+eW04QzFTTXVkTmItSFM1LW5NLQ0K
PiBDXjZwXnA8Yjx1Nm5JI3tsDQo+IHo9eVpWMnlARGtoOzNGNjxSRGdZcDt6S3xTPjdZZUw8d1Va
ZyVyYnxXb29uVUZ1NkFaOW1CRkNDYz13Mg0KPiBSa2Ehb0YNCj4geiRfemtSS2BSRkBXRlUpbTdC
ez5lM15TcVFFOT54PShMWndHQlAoLQ0KPiA7Q0J1ZU1vPjdWNiQ/IyhZRm1SeFZWPnwkOQ0KPiB6
JmA8XipASW5UJSZ7NV9XN1hPSHwyMTtPeVZhMCViSCU0X3ZUfUFAcWJ3KTJuS2dMTUxKMVVSezRR
MQ0KPiBjfkZKdkdLDQo+IHo5bmJ9eHxGd0VSSHY/QDJUa2VieU1seiQ8dEZPS351Uz1JTVUlY19n
ODwhWkRkLQ0KPiB2fUJXOGMxZ3A4JVp4c2F2O2gNCj4gei0NCj4gIWxENT1neXJed3JiVUNIT3FY
JGNvKHRePXp1UWhnemtVNUtVayopMUlNNV5pd3xObj1STW5FX1VRdEE5NQ0KPiBHX1YNCj4geigr
THdNSmV4ZHV2YyNNQGIwfEFJVExOaX40aiVCYiV1fXdAUm87Wj51JnpsQV5pT2pKYmkpUjBTcn5O
dC0NCj4gJTdGJA0KPiB6R1h+bmpmdVVvPnYpfVclT0BHalFoSldqKHF8bHlzSjV2NmpGcDB9dVQh
YFAjT0NZViQhMkAyJVhtI247dEoNCj4gbHc1DQo+IHprRy1zVkdHajFvYUxfU2U2U2tpLV5VSk9s
JVZFND1PZ2J8SCp2NU4zZC1nMVotfDZZOyZ6OC0NCj4gYU90fllIPSpwbX4NCj4gemJaZE15eDty
bkI/eXNzIzQ+dzI5X2RCQktgPCFUcmhuIy0NCj4gNkRUM349NDVobW4wZCh2QXMmcis1eU9mMHY9
emBBZg0KPiB6LQ0KPiBNaW15KnxPekV3bCNyKUlmRDVQK2I9eVlTTyZnaFpOTkdhIWhPQUtAWmlC
dUZiPFpvJXxtMDc9dGhiZy0NCj4gTl84MQ0KPiB6Mk9IfHMhfG0pTns2eEdCaCV8digxfEJZZHVz
KXBiV0NUKnQ9dF58eD9JZU91PXc9JkZkNSlaQ25eUEhtDQo+IFY0REZTDQo+IHo7TDhpbVpSVyQ2
TDdnRU4jX2UoZj9TbnF3S1JrJkZNXj5XU2JBI3dVYHx5QzxefSRCUVhaN2htejsoSTUNCj4gQXpZ
VEINCj4gelRvMkd0I3lzR2FHVSRgRlZSVTs9MDlfbUVEc3tzS1k7aypDVzgxU0JCajV1QXpRQ3V5
OTgxaURHM1ZULQ0KPiBPYDllPg0KPiB6Jkw0fiZKTkRfKW5VZzkxP2ZQYCVWOyRYSDkhbUd0Z3dl
ZkteJSE7Tz9nfTBrT3VNX1I0JjdaXmh3ZHo/DQo+IE8/TVdYDQo+IHpmTjNhYEptNmhYU0lYWDcl
e297WVdRc29ZcUdPfSM2S3VnSTxeP3wtDQo+IEVuIzAhMmxOQlJsSHJNRmlOVmsxU1o2U0ENCj4g
ejB7Wm1uYk1PODQtDQo+ICsjSjxePDVhXk5qRTxBcXVVRT5OIzc5UG8qelFEdlYhVD55cWZlS19z
NGcwMF9uVGlmcGx8TA0KPiB6ME50RXYwO1p1JUAtDQo+IFhrTSUkanM3SjZQKF8+cyR+Kk1VI0Ij
IVhPV1YmMmkoI0p3cU1YN3hWK2g2Nk9QWkR8S0NCDQo+IHpJPnRRS0VuU1p1SkBVezcmfnQ5RUN0
WGtUckpFVCs1O3RaQSh2MkFiUjVhYjZpYXhEUSpDK2M/O1VwZ197RnBJDQo+IE8NCj4gek43cDhK
KTNweClGQlAwLQ0KPiA4cF48UG9xZEUxV1Q2QVBabGQxTUtQTzE/b0VAT2wwWTBjPjNHKUdTVEV+
RW9DRlRPdA0KPiB6Rm01WEljd2RiJTI7V2NqdHchSWJkUXN0Jj5JJTNYKkN6VlZScmNATzQ/Tzlj
X2RNdUkzYT0rKS0NCj4gMEFZQERzKntODQo+IHo3NWFMRjgrfD56YXhxNDVuclNFbDR8dVA8UTtv
aEU9Zk9JPnFeQGhJSkx9ZiRlRVlzOW8kT3N6XzUqeFQ9a3heag0KPiB6NCp+WkZxakFKfXcwLSRi
b2pTZGFicTRiJmNXXmo7I1d1ZWc/P3ZDUm9oJDY/PCpgLQ0KPiBpPihURD83NWo1KFhsMSVNDQo+
IHp4RlRIYDs3YUhGeHpQRE8mVUNKfjZQQGVuTmF1UE8wQ3xBUnp5bl4kVHBWMFU+VlBpanlxcj1e
K0pHKEsoDQo+IHJgRCoNCj4gejlUWUNfNjxDK2x3SDViPUFvdlFPd0YkcyEleCFtYHVWPUIyWjZC
T09YTD5yKHJJR0g4RHMqdn04PVlyKz0NCj4gTFNAeQ0KPiB6dndkQ1lPZk0lby0NCj4gUUFIK2Iq
big5eHxGQXJveXlWNGpeKmU/MllXajRucUJHT0dWcCpHR0xWSWl2JVE/OSZockRnDQo+IHpFcndL
KndxVzwtaCReeGl6UThCa0FLMXNxNEJWJSYqTzBIaklGQGJDPDgxaUlrdDNmaG8tDQo+IHZ2NytM
b3RQOVYqbEUNCj4gel9MWFRfK2UpO3d3SlItDQo+IGM9fFc0SUpKYUgxQ3RCM2hrcnBMNyhCZ3km
Ymc7UHtlYzk1UXpIR3MwWmJlX2JRVzhnKg0KPiB6d20haip2ZzY3dFhrM0FeOCN+Wl4qMENWVGty
cDsleXt0UjhPR1BAPmdXSU1Md145RiFiZiZLPjwrcmdWDQo+IF89SXQhDQo+IHotDQo+IGx3dEd6
PE1QNmZNYmslSChxYVU7YTwzUFAhYipNUD1PQW1eYGFZdipYWmBgK2h5WUImNl9sRFkoTHIlWEcN
Cj4gQDBADQo+IHpFYT53bD1BfmtEeWU7a0J4UTYoZnlFMVg8PXpqWFZMcSQ2RlN+PCReU2V9a3xh
aUReKGomIVZqSWY3NXtPPGoqQg0KPiB6dkFAeyFWYyFiaFpGbkN4MnlNVEo+dl8xVDYmLQ0KPiBD
P2oqaG5GeyhkSyF7JlYqUkBwcGFuP0NEY15iYzkjfjJ2N2R9DQo+IHpsZVZ1fEs9WSE/KTRvUkxi
Zys/YDUleEIrcGppWGpPRnItDQo+ICQlNCN9KWB7QFZEPm01cG1uXzFFNCYyMT5KcjdheksNCj4g
eilzRnFKbXdwXmR2THlKWF81dD5NeSVeUXVKRUpfO1l2KUhGZWVgcmctDQo+IHozVXlZRTZlJiRE
dzIhbkxnNmxrOFlqRg0KPiB6RXpeSV5wS35YVSkxKmU4dkBfYkFfQ15hbXJwSCNIaFkjK1Rra3so
K2wtDQo+IHJ7cXdIeGheR3A3VE1FJEJjS09GRWNuDQo+IHpyVEQ9PHo/WHdiUnNgUiQ9aV9tSG0z
X3dFeURvZlpSTmArJXxHPThGdm5rKWw2UmM8LQ0KPiAoQWJqcCMjenVGWm9ocF4NCj4gej9DSHxW
WTVGI1Y/YjU9N2B9Yio1cnYleSVWTD5eT2Y+dVVZUXtMXyFyTGpzSGB0ezw8OE1NMmg4U1JjJXVx
DQo+IFZiYA0KPiB6K0p0VFJBYm53ZmJ+ZGRqKkNPbl8qPUlhSUIqNkVzVUF3LUR2OW59aTNoaihD
cnlUWS0NCj4gQyZxJHlhWGFwNlh3RWI8DQo+IHorOE4yPHZpeHlmPSRBKGlPTjs/KzkzWCFEK2kk
ZXMhPyRUfXMxP2xeKDIzQiNTfDduX0VlK3FWOUAkSH47Pnl2RQ0KPiB6MjB9dkdrKyNnRlpUSjlS
YSQrcntlZldxbXEmQEBUZSYpJHpDa3RhfDx5IyRUVFo5PkhZb0cjWSNANzB4DQo+IDd+ejhVDQo+
IHpjZGtQWnViZU0pSml0SHJkXzM8RUpeSkIkckpkQ304MmJPaXRzOWluTj1JOCtyeWQ1anElUzde
eig8VEJKamIhYA0KPiB6bTstKmk9NU5GTHh+NC0NCj4gSVo0TlZ8JkVicU5MN05Pd2tNam9EN1V4
NyljQzM9flN+fmNXbXB9amJvJVopakZ3JHdMDQo+IHotX1NPRVFHN0JaX3l9THxFWHV5KWN7K2dv
LQ0KPiB2UWRIX0Y9QHxKaWpuTDMkdmkoUSVCUzl6eTEyJHpBJFdhRSZjaUENCj4gemt1UGs9Jj9v
b15Vd0lDSCVmOEZ8ME1DYWFwMWFSaE40cFN6eEJiJUMqRWZNNC1uZ2I7Vj07YS0NCj4gS1RYcFpe
TFo7Vw0KPiB6WD5DMnJtJG4xbjszTCk8WnU2aG1mMUdYOTtrRDs/Slp0bEo9WUpkUDs7WWQ0eTw3
ZnJKaS01MiF+NCpAVEdvSHQNCj4gejdKUzgtZnZOdz9nOVJCTyNFZ34kcnUwKHMlUjxjUSF7IWxr
ZUtsPSEpNHVyZ2szVlJgezB5MnspMUg8RnxBcWNpDQo+IHo+PksjNmppMmluS1pfJUhlLWs3bW1J
ai0lWlVzd2Zudm91QXh5RlpoRj1KZXZOXzRhNnhfKWdtXiUtDQo+ID9DdD1ILU4NCj4gekZEV0o1
bE5KUC0NCj4gPitNUnQyS0x+Q3c1ezVPa0x2ak9rPXRMSnpnc1hUN1BKYlpnI2tpaGFaTzdDN1Mq
KCVNWFZvSw0KPiB6Ny0NCj4gJmB1bEBJKE0xPXtta2QwM0E1bSVaU0FfZCl4bkclTFdPU1UyMHpZ
KWJwPWdYUn19Uk0oJSY/N3YoO2RFDQo+IGQ0UA0KPiB6dn1gV1J0fDI1QSowUUNBQXZWT24pOE97
OHIxP1A+RyhYVD5CMElwMEcpJTMqYF54TiQ1XlpiUHt0cz9HemgNCj4gQyV3DQo+IHo2RXkkaF9o
fns2VGduYnA/WFclQW1HOz5PJWBmPDxgaFNXMm0tDQo+IGpFOCVkPkkrJUllcFY9MmFJRzNxeUhk
VGYwMlgNCj4gejU4KnY7TyZpSnp3NCRzNE9VbVNTJUIqMjdHMFdlQXJWWj0mKyViUm8kTl5keT9u
KHVgPH4pNyFNMFN0DQo+IHFTT083Yw0KPiB6aGo7SSEoSUomK1pVRWIyZCQwQHBeSnxzVWB2bzZ5
fEg0QCVgIUR3b2Q/cHBvYC0NCj4gZVpYUXUkb1dTNGI/WlV6ejZEDQo+IHpiKkFqdjR3TXlBby0l
OU4oWSF6I24jPTd5KldaJDYpdiU8TFNFQWBSLQ0KPiBZYis5ZSFPPnc3UlVRWmVIbVFXeXtTWCMN
Cj4gelBqMmg3MEBrTFJIO1UtKCMwWipFdnopWT5VQl4tU3E0QDxMdjQ2bU1FQm1rUS0NCj4gKXlq
a1ZoKyEkP0xzcWtmKSspMg0KPiB6KCEkN1Vsd0dlOVchNzx+Y185dW9tdnY/WStSPCQ4PVRUdWti
b2I2fT41Nkg0QjlBQHcjKF5EYXJqTUJzDQo+IEh1aD5vDQo+IHpLUj51PEd+U0BaUHspNk17K1h0
WTk4OTBvc3pfT0VLUmN8bF5hO0xVP3k3NjI7cmBpQD1mR3plTCRmPDEoUjQ0DQo+IEsNCj4geiFf
aHZwcTtWaUVpMU1iYWFDZSRsbS0NCj4gYGorSDYxNz14SDZxVGIrVzh4bD1weG0zdWpUZnVPKzRY
U2RfcSRXXyg2Ow0KPiB6YFFtZiQ2O0Y2UFpDfF5KLQ0KPiBWT0pxZEVyJjFQdykrNjJXUTZJX0or
P2Q8fiM/d1U8X3FXb2xLdjQyK0NeVU1KcmxIDQo+IHooMn1JdXY+P2BCPUk0ZDZvLWh4fVMrfE9R
e3JSVjJ7UFpMSllKalc5em8zfmxvb0pmUSRfVWVhdFZ6T2AkMDYoYg0KPiB6PmNCMkpwMEYxeDN6
eUVIcWp3VmBYb3t5OSE4ZVFAb09gcVhgc1lWSCEqa3c+YHtmIyooUHAkeXFNMEdDdzUNCj4gQyVj
DQo+IHp0JFp6eG1iUXFYMSZ4QyNFNG4oKGpxOygpbT5RSkg+M0xEVUcmZlI1ezAkI3YpYzJxe1Zi
eTRNSiREfHYmTg0KPiBRdk0NCj4genl+ST5NSkFHUXh7TDlodzhzI1pIKDFCKzFfP1hYbjdiZSFg
PWpwb3FZI21PXlQxQz9HSHFvQFFlTFN0ew0KPiAodX4lOw0KPiB6KFNsfTJgVmY0QVpge3M1dSYr
a1hAMmRZc2Vla2g2LQ0KPiBeV0A7KGZTXihYPzIlbVRKYyZ1RXFiTHNLWFpyQnl5ek5+DQo+IHo1
JFF7Rj5VLQ0KPiAweXk0N2Ujb2htZT1SJUo+THUxTTJeVHFMRmlhdmNKPTQ+V0xJRCszPytBcVJR
cmZ4Z1VgMEk3ZEwNCj4gelFlOWZzSSkrd3RZRCRaZSF3SjNed0VjWWN6cl57OFNfZXorZ0NrZzly
P3BGPlM+WmFgR15pX1c5TUdCOF9rTg0KPiA5NQ0KPiB6Y1dYJlkrczR5XjxPc0BZUWl0WD4zWnsm
UDBXYGFUQUkrLQ0KPiBvTG9ANG4oVHV2RGxwYjEqKCg2PX1tfG9qbXA5VVN9DQo+IHotDQo+IH4m
SjhBUCtzekhAfDUoRXEqbklSKDVKOD9RUTdPTEdyPkVfPUt+Ml84cDxiYElYaU97NENSRyRkRG07
bVZCDQo+IDFoDQo+IHpJRSlzKCtLNl8oXkE+RiMpc0hwfT19em5XYil3YTh3eE1PKnA5QD5ZNWRX
VCNHODV8MitfPjc1NWdTNXQNCj4gcUp3QzUNCj4geiEkNnVINitwOGhZdl9TST1xTHZ0XyNwQFIx
PGYxTWxEM1UkV3RTR1R1MWBtNDJsZmBXaCRpQGVIM3cmRWMNCj4gPmxuQA0KPiB6PmxrKG57bi1f
Syo4PFptY3I4bERUJVB5b1dKO14rT0tiYlFQSjJJb2s4KGEzUDF7cjZxQWVyKSk1Zj1ZKHo/RSMN
Cj4gelgrX3NwWC1TNz53NGhaUyYySkd5Uzs8azkqfFkmPUNQbVBeI1FKKDU0PzQ9aDJtWnpGNUB+
cy0NCj4gN1BQdSZkLWBsfQ0KPiB6Y2N+WnBWUHtxTWJ+R3V9aHV7T3xFYnNTc3YyVntremNyYD4j
P2t0ZWwkMVpgdmkjS08rTyU8NFVwbUMrcTUNCj4gRyN5DQo+IHpwZ2tYdHFueTtTd0VmKT93Ql94
PXZ9dCVoVDBme2V0P3UyNFI9bkFjbVVaRGV6MjFUcndAOz07dVFpa0w7dHNGDQo+IFMNCj4geihv
UVhEZEFCeVNzeihQfStySnhhOU5JXzlMbDUqcEZaNkYxKHZ6ayh0Vk9WbV5JTj1zVkJmTGN7Tj8j
TT5jRCoNCj4gUg0KPiB6e1JQJHxLMGtpfkopZyNlKHF8KzMpMGQwMD10JVojSS1EX2A0eUxFa0tH
ZiV2ND04OEN5Uj44Yzd9YEU9Nm01TkgNCj4geklCaVdDTXE5PVhyN2RIKXpjQHg3YmQtDQo+IFkr
e0Uma0BeZ3RpPFpzMG1paUxON2skSnNydkh4Sm1LbXdKRHAqMT8/WA0KPiB6P1NuZEt7Vj0malZf
TU94R2t2KXZuK256fXJ+S3VNV2N0WDB4JTdHRkVJS3IySV8xdXFOKGEmPkd0eX1QXg0KPiBodmFU
DQo+IHorOXh0YjkoMHQwNUIhaldGNmNwZVNAKHtWKjFXTzQtRlkwfSEjZm9BfEUxbV44SF4peW1i
Sm9JIWhGRC17LQ0KPiBfMTcNCj4geiF8QEdoK1hwRmhBIWo/QytwJmV0WjI2MiVaQ3BudSpSU1Mh
dClTenBtUW50U0JfI2tsJUUxU0kkZXI4MW5ZDQo+IE88Nw0KPiB6SGNnTDxBbjMraSNkeWQyMmV5
c3pqeHFEbkA5enhpQW01KjJQR2VvZEkraWhJR0N5bF5KclpNUig+dFQtDQo+ICNRSFVLDQo+IHo8
IX4tDQo+IHRLNkhUWnNlOT90elRGWlJfdlZsV2pmUWdZNzRZNipRXzNoeFBsJVNmcGNBXlcmVHps
NFd9a0hveWxjVnYNCj4gej0zbDxeKCk9d2VXKnJ0LQ0KPiBUZSZaZXBmN01RZ3c2NDxCKzxDcXlq
Q18ocSYzM14oY2JoPT17V20jWTUhaWojP015KA0KPiB6KCludnYoJSRKKUJvQkJZMTZrO1JGNGw/
bl5rP3pAZm89VWBAMj9IKCErSjVFRVV7T0B5ZylzJD1mayo0ZT5hNg0KPiBiDQo+IHo+ZkRpMUJF
dXkzSHwqNWtNbzF2NyhaS149ajEkUGhafD5WJElKOy0NCj4gdnxGIVEyTn53bng+Y09AQCFgQHF+
MyZzRnwNCj4gekl2SVJGcCNRRXdeQkwhQEk1V24lSH5hMHp6JlkmUzlfTlBzeT1hPjQkXlBLajJH
MmxUcFY/ZldPJm85DQo+IEd7PCk1Tg0KPiB6MGh9JmsrNzhBeG9LQG55bTFWR3x6LUpvPCMoMWdz
KC0tanRlfFNSdm9gZ1R4bHokJjNTTGxDdHFXXm1gPEpJNWcNCj4geiNIcWlfO3FReD5VSDtCUml3
bHYqX2V6TlE0V3x+VEJGezVXaTs/flJJaSRpbDFBbFhvSD5naGBAPzF9Py0NCj4gZFpldw0KPiB6
JEhWTytmNSplXkI+eGheYz5lZWBtRExmKXhvVyR6Zk5XPkEtDQo+IEhtXkBxaHNhVlIhJWJkX3dx
TWRWQipBeWsmSjFLDQo+IHpiJk1oZ3NYIVZ1bHR1bXgpejF9U29nKX1VXkhjaU0pKjtPKXplZmxh
d3NXS2h0O3s1bDI1c3gkUnxxYGRoMEpyNg0KPiB6ekNhPUM9bTFeV1dCYiMkP1ZSWHRTOWBpUSpv
RSVEPVQ3KDJlQ1dZVWV+SjUoZWQrJFZzJnNGTjMqQ0wNCj4gZ3AxeTdDDQo+IHpOUlV6ZT08b3Vq
TzBkQkheYmZ8Kz41Zzc+eUlWUUImKSpaPXBVMjxpQFY1e1RtZWdVP1Ikfjc0TCNGdw0KPiA9M3pV
SGUNCj4genlwVnh4YHVsSWdrQyRvLQ0KPiA9M2tkTmJednxkKFV0Q2dxQCNRTTRafVZEN1VvXz9r
UGBGdjlRT2ReSEphcSVAMF5nSQ0KPiB6dD89SVkme09Kd0Y2YjsjJHg7YUxIRkhkVnk1OFFGWnU5
cDZjUnVsPEpOI1hSakZDMTQlSn07UEopUDZIYDh4PEwNCj4gemV+WjZgZkcrNiN0OUliPjQlNH5L
RkwxcVleN2paZ2BDQUJtJS0+U1RHPUMjOzZCckFDI3hjcT9YbkItDQo+IHJkfFU+ZA0KPiB6Jjx6
YDxSOWxqYHRtdHFEOWx0QkRMPGlyZnRWaXlmTkxRa3gtN0Nebns9VlZiS3Z5YXBSOGl1WiU9NyM3
Szl5KkgNCj4geng1XzFPcVBIN0s5e3g3ck5DJDcmRkRsSkcoP2ByNUdrYDk0PG5JPXleclEjKD8k
UXJHezl1RnxnOyF9Jkh+d35gDQo+IHozJX0jKT1CVVN8dUZrWjFfSntRNyhJWD89e2pQe2s1M2E1
N0AlIUAydVU4PTBmR3R4Vzs4JVZON3JNbW4NCj4gJDFnSXoNCj4gek5sQm56P2k3X2MzJldaMnFF
VEhienFKRWg8b0Q+e1VEQm1LO2F0bHc7TFAjY3NYYi0NCj4gNilYQlZ2VloqY3lJM0dGWg0KPiB6
P0UhUl8temxHYyNhNTNDVUEqYnhpMzI2aCkxWjZUa19fNkI8VX43fklANjctDQo+IFJ9NCl7e19D
STNEV09tNVcqZXt0DQo+IHpuXzMlaWRmSjlKVig0VE9EPnw4QVpHPS0NCj4gej9ka2Y7RGYpOXNM
cW5ITjlqRTxrNzgjT2NgcCRfJWJoMjNtTVBEZzgNCj4gelZHQX01PzYyRn16N2AjOFdKJm85I0sm
VVFTan1IfXc+PkBuUUYtDQo+IFREIWtfYCskMiZLdjs1RlozSip2RTNGWHYmNA0KPiB6P2QjVkFQ
OFNfYWFIUypCbUlgN0pUY3t7YkFNYWR+OSk1TUlNMU5ASnBZcXg2O29kT0B2WUhOI14qWj8NCj4g
KjA9NU80DQo+IHoyS0FASWtyczN+JTJKN3VFKDNAN0pDfnk/dm93PU5AdVA/TFkwZkpsYlRJTy0N
Cj4gXnt7PjN4aE1oWWdBckNRZ3RkezUNCj4gemJPQz56dCZIJmFAbmYxaHVvRz5NdXF7PHpaVWJ2
Y0g/ZCF8RTdxMHZNY0J+M2BxczJ4amdkQ1F3Z2BMTA0KPiB3S1RoZw0KPiB6V3l9WXxmYyVhbm5Z
MWp6TmlRI1RMTjVjaE94bDBsbiUxR1RyLTdYY2R4SkQrWT9yWnM9WiZlWU40Ji0NCj4geXBEPlhB
DQo+IHpgMUw9QUYzOXhQWEhVX0xNbjA1ZHE4R048elR4PHJ3eG5ZdCU0ejZHeVBfUDU1bXx3REY/
S1NoXkxnPQ0KPiB+SmlaSkENCj4gei0NCj4gWCRDISpoMkNnPyVzJWd5amZeaUVZbTsjXmI8fCor
PkV3RnNrJkpnWV9XYUFgND41eiZ3ekh1eE5fVDZHeS0NCj4gVGQNCj4gejZOMmJ4SzFWa1VYb29Z
fGxaPCV4dytXIztyO2U2ckJZWlFsPmVDNmRCQmx5fGdUd2JCdyNEfUs+a21kRGANCj4gZVN7eA0K
PiB6OHw1VkZYamM8WUJ+SjlGWkI2fj9pLWp8Jj0paExHZDJwTT1qUlZ7MEBgZ299KTZgZTtmP3Zi
IzxtejtKVHtoaTANCj4gem1hRjAqI3xQPXc3eURfPyUhI3hqKjJBZHApaFBoYEJjPWBTUHJGe0pM
QXpmS3Exfi0NCj4gKChWb198V2c3OXpMWCRVPw0KPiB6K20tDQo+IEIzdW1NfHxVQmVoe3UpTUs5
P2R7WiVAMXQ+YTtMWFBSXygxbjJebTBnJEA+MGhlQHdCJWlwWn5MTioNCj4gZjZ3ZA0KPiB6bkM3
dyRZNDQ3cSklPFNsXldtTjdATExffCgyKHxZY3hjQyQjXiluQ09CcFNPUFV3YVdMenx7KUUqfip2
DQo+IFNidGdADQo+IHo9fXZpWF9uYGE8IXhWZnRsPTVFISQwdkBFezZ8dUhPSV4/ai0NCj4gS08/
UiVRTjQpRE1TMHlrfDswQU9YKjh6PTY+Pz4NCj4gem1AfD0lajJrRipLb0BrRFd+KGUzZTRYXnA3
QEZJX283T2JxSVdTPWFvdFFxSiZTcClhXk5WTmxIKUUNCj4gT2YpdjljWA0KPiB6T1JLV3o7PDV9
YDF8SU9QWH5nZjhTUWF7N3dCRHdedSQrQVVOTXJ4ISled3Aye0VsaktgJG57SFNVMzcmOyUNCj4g
R1lsDQo+IHo+SEdZaCZJazB4TjI2JXAmfkNLKHdIVzVuKGNFQWNmKCo7IUlxMTNsWkVDWiRKcDZ+
UXc2X00oKVEmQUVvDQo+ICE/USsNCj4gejRzeFhvRkd+cmVLfD5qTVJKJCtLKlFNRGppXmg4WUU2
PDwkYnV8fSVSPmNDeEhxWlVkRjhqeCk3SnJSWUtGdA0KPiA3Zg0KPiB6JWxQZHNZfmZGZzgyQGZw
Q2xITGtxTCFvKm1wUT9YOSpoeDtiJk1odk5RMzU0TGNvQmFeM1pgVTkmfjxgQQ0KPiBLalo7DQo+
IHpRdnp3d3hFdl84NTFHRGhiJG1zLQ0KPiBLQXhaUnJtJFFvS3BBK3pZaFlHRD1QSkkoNn1ge2oq
fW5rNXRORnBQJDg3ZDENCj4genVlVDVYP3VZbDdqMD9tMz0qcjBJNXxAVG9yKCorc0J+QT1oPTt4
Vi0NCj4gPHA5fU0rbXJiX2AwU0ROcFB3R2RaeVpoQA0KPiB6Kyh8aC0NCj4gMHtGWGVVOzZCVzkr
SE17QUl7Q31DdXlLVmhVS1IqKSpXbz9OdkNgSSh6JFVoPkRQTlY8an1kdGR5b3wpDQo+IHpjel51
c0ZFVUBXWXE4YDM5ez9IMUdLIylALQ0KPiBHQCRlXk9HcCg2SDUwXzl5R2ROZXxQIV85ZT1aaW8o
SF47Vk9nTikNCj4gek5RZGZfLQ0KPiBecEsoQmMxdjg3MmtaTkFIdF4oPUl9YURRKHEyViRmKXdg
X098cm52TEswTDlEbng3NyVCVmI8S082cQ0KPiB6dEN3V0B7O2l2fHRaTzRaQTdvZndqO2w9eEk/
Q0BIRHpVdE9KTHg8MkF7Vm5ocUdOQTFwZ1VqZWt1PmEkUg0KPiA9K2NsDQo+IHpAP05oKWtZUmJX
QU5xajQ8bWF7SFoke0RhKWMkbU8ob2l9emFXSXxXSlclanZMcHReRzVJWGJlQ158RGANCj4gNnol
V0wNCj4gej9AcllJISNMdmZofio3RT1uUWAmYDYyKT5XSzcyM3k1LVNjYmFMUDtiWiU2OHsrXztW
MzdgeC0NCj4gRU5lNz1IOWdTRA0KPiB6cGx4bCE9PHtBbGJtOHF6NT1ldUZHVm9+cHJOdnpTUXVG
cl98THZuZmdXcyl8cnFocz8lNGU7KXlpITMxdml9RWsNCj4gQ3VDWG92DQo+IA0KPiBsaXRlcmFs
IDANCj4gSGNtVj9kMDAwMDENCj4gDQo+IGRpZmYgLS1naXQgYS92czIwMTIvbGl0ZWFnZW50L0xp
dGVBZ2VudC52Y3hwcm9qDQo+IGIvdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0K
PiBpbmRleCBiMTMzNTc2Li45NjdhM2ExIDEwMDY0NA0KPiAtLS0gYS92czIwMTIvbGl0ZWFnZW50
L0xpdGVBZ2VudC52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZj
eHByb2oNCj4gQEAgLTE5MywxMSArMTkzLDEzIEBADQo+ICAgICAgPC9DdXN0b21CdWlsZFN0ZXA+
DQo+ICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCj4gICAgPEl0ZW1Hcm91cD4NCj4gLSAgPC9J
dGVtR3JvdXA+DQo+ICsgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50
XExpdGVBZ2VudC5jcHAiIC8+DQo+ICsJPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+
IC0gIDwvSXRlbUdyb3VwPg0KPiArICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxp
dGVhZ2VudFxMaXRlQWdlbnQuaCIgLz4NCj4gKwk8L0l0ZW1Hcm91cD4NCj4gICAgPEl0ZW1Hcm91
cD4NCj4gLSAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3JjXHdpbjMyc3R1YmFnZW50
XG1lc3NhZ2VzLm1jIj4NCj4gKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3JjXGxp
dGVhZ2VudFxtZXNzYWdlcy5tYyI+DQo+ICAgICAgICA8RmlsZVR5cGU+RG9jdW1lbnQ8L0ZpbGVU
eXBlPg0KPiAgICAgICAgPENvbW1hbmQNCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPm1jDQo+ICUoRnVsbFBhdGgpPC9Db21tYW5kPg0K
PiAgICAgICAgPENvbW1hbmQNCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj5tYw0KPiAlKEZ1bGxQYXRoKTwvQ29tbWFuZD4NCj4gQEAgLTIx
MCwxMCArMjEyLDEwIEBADQo+ICAgICAgPC9DdXN0b21CdWlsZD4NCj4gICAgPC9JdGVtR3JvdXA+
DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0gICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNcd2luMzJzdHViYWdlbnRcdzMyeGFnZW50LnJjIiAvPg0KPiArICAgIDxSZXNvdXJjZUNv
bXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFxsaXRlYWdlbnQucmMiIC8+DQo+ICAg
IDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAtICAgIDxJbWFnZSBJbmNsdWRlPSIu
LlwuLlxzcmNcd2luMzJzdHViYWdlbnRceGVuLmljbyIgLz4NCj4gKyAgICA8SW1hZ2UgSW5jbHVk
ZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFx4ZW4uaWNvIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0
cyIgLz4NCj4gICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCj4gZGlm
ZiAtLWdpdCBhL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gYi92czIwMTMv
bGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGluZGV4IGE4ZjU5YTMuLmMxYjVjNWQgMTAw
NjQ0DQo+IC0tLSBhL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gKysrIGIv
dnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0KPiBAQCAtMTk3LDExICsxOTcsMTMg
QEANCj4gICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4NCj4gICAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
Pg0KPiAgICA8SXRlbUdyb3VwPg0KPiArICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XGxpdGVhZ2VudFxMaXRlQWdlbnQuY3BwIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAgPEl0
ZW1Hcm91cD4NCj4gKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRc
TGl0ZUFnZW50LmgiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAt
ICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcbWVzc2Fn
ZXMubWMiPg0KPiArICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50
XG1lc3NhZ2VzLm1jIj4NCj4gICAgICAgIDxGaWxlVHlwZT5Eb2N1bWVudDwvRmlsZVR5cGU+DQo+
ICAgICAgICA8Q29tbWFuZA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+bWMNCj4gJShGdWxsUGF0aCk8L0NvbW1hbmQ+DQo+ICAgICAg
ICA8Q29tbWFuZA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPm1jDQo+ICUoRnVsbFBhdGgpPC9Db21tYW5kPg0KPiBAQCAtMjE0LDEwICsy
MTYsMTAgQEANCj4gICAgICA8L0N1c3RvbUJ1aWxkPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAg
PEl0ZW1Hcm91cD4NCj4gLSAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x3
aW4zMnN0dWJhZ2VudFx3MzJ4YWdlbnQucmMiIC8+DQo+ICsgICAgPFJlc291cmNlQ29tcGlsZSBJ
bmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50XGxpdGVhZ2VudC5yYyIgLz4NCj4gICAgPC9JdGVt
R3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0gICAgPEltYWdlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1x3aW4zMnN0dWJhZ2VudFx4ZW4uaWNvIiAvPg0KPiArICAgIDxJbWFnZSBJbmNsdWRlPSIuLlwu
LlxzcmNcbGl0ZWFnZW50XHhlbi5pY28iIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0K
PiAgICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KPiAtLQ0KPiAxLjku
NC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4t
cHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:06:20 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:06:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgvD-0002sS-Aj; Wed, 22 Jun 2016 12:06:19 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgvC-0002sM-Pf
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:06:19 +0000
Received: from [85.158.139.211] by server-1.bemta-5.messagelabs.com id
 A4/70-26908-A3F7A675; Wed, 22 Jun 2016 12:06:18 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpnleJIrShJLcpLzFFi42LZKekooWtZnxV
 u8KWb0+LP4kQHRo/DH66wBDBGsWbmJeVXJLBmvFm6n73g5n2mis0LD7I0ME64zdTFyMEhIeAn
 8fqEeRcjJwebgI7E0qPzmUBsEYECie/v5zGD2MwCahLX93exgtjCAq4S59Y0sEHUuEmsWrALy
 jaSWLtlB1gNi4CqxOlZ+1hAbF4Bd4mTW/cB1XBxCAk0MEr8mbaSESTBCdT8+UMzWAOjgKzEl8
 bVUMvEJW49gThCQkBAYsme88wQtqjEy8f/WCFsA4mtS0EWcADVa0qs36UP0aooMaX7ITvEXkG
 JkzOfgN0gJKAiseXxAagx3BIrP/9hmcAoOgvJtlkIk2YhmTQLyaQFjCyrGNWLU4vKUot0zfWS
 ijLTM0pyEzNzdA0NTPVyU4uLE9NTcxKTivWS83M3MQIjhQEIdjAem+x8iFGSg0lJlFdeOStci
 C8pP6UyI7E4I76oNCe1+BCjDAeHkgSvUx1QTrAoNT21Ii0zBxizMGkJDh4lEd56kDRvcUFibn
 FmOkTqFKMux7xJu44xCbHk5eelSonzyoMUCYAUZZTmwY2ApY9LjLJSwryMQEcJ8RSkFuVmlqD
 Kv2IU52BUEuYNA5nCk5lXArfpFdARTEBHLOtPBzmiJBEhJdXAaPHyTMrqzwdemESe8cz0f3fl
 YuWEF3nsEv6zn25klmWbEnLoWFLBxael3PFdz/bvuySrq2Pop6Nx7f6bjS4ta6795DsmwBx+4
 qRXsanWbhEFvb0Xb1tEvmtrTTv31MFh8trXizjXbOPYv7dWbLLPTl+2K7vbN249dKyx1H/N2X
 dM+YtPWWfpeSmxFGckGmoxFxUnAgAySJw+GgMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-206.messagelabs.com!1466597176!9776894!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=1.7 required=7.0 tests=OBSCURED_EMAIL,
 UPPERCASE_25_50,received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 64150 invoked from network); 22 Jun 2016 12:06:17 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-12.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:06:17 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24784314"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 05/20] Add base do-nothing service
Thread-Index: AQHRtceeS0gl1a6Fu0KqKdaLRr45GJ/1j3RQ
Date: Wed, 22 Jun 2016 12:04:34 +0000
Message-ID: <20c10f77f2974ef286e98c02344c032c@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-6-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-6-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 05/20] Add base do-nothing service
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDUvMjBdIEFkZCBiYXNlIGRvLW5vdGhpbmcgc2VydmljZQ0K
PiANCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0K
PiAtLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcCAgICAgICAgfCAyMDkNCj4gKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL2xpdGVhZ2VudC9MaXRl
QWdlbnQuaCAgICAgICAgICB8ICA3MyArKysrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L2xp
dGVhZ2VudC5yYyAgICAgICAgIHwgIDYwICsrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L21l
c3NhZ2VzLm1jICAgICAgICAgIHwgIDY2ICsrKysrKysrKysrKw0KPiAgc3JjL2xpdGVhZ2VudC94
ZW4uaWNvICAgICAgICAgICAgICB8IEJpbiAwIC0+IDI1MjE0IGJ5dGVzDQo+ICB2czIwMTIvbGl0
ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgIDEyICsrLQ0KPiAgdnMyMDEzL2xpdGVhZ2VudC9M
aXRlQWdlbnQudmN4cHJvaiB8ICAgOCArLQ0KPiAgNyBmaWxlcyBjaGFuZ2VkLCA0MjAgaW5zZXJ0
aW9ucygrKSwgOCBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC5jcHANCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGl0ZWFnZW50L0xp
dGVBZ2VudC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpdGVhZ2VudC9saXRlYWdlbnQu
cmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGl0ZWFnZW50L21lc3NhZ2VzLm1jDQo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpdGVhZ2VudC94ZW4uaWNvDQoNCkkgZG8gd29uZGVyIHdo
ZXRoZXIgd2Ugc2hvdWxkIGNvbnRpbnVlIHRvIGNhbGwgdGhpcyB0aGUgbGl0ZSBhZ2VudC4gQWZ0
ZXIgYWxsLCBpdCdzIG5vdCBvYnZpb3VzIHdoeSBpdCdzICdsaXRlJyAoYW5kIHRoYXQncyBhIGhv
cnJpYmxlIEFtZXJpY2FuaXNtIGFueXdheSkuDQoNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uNzkyMGU5Yg0KPiAtLS0gL2Rldi9u
dWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAtMCwwICsxLDIw
OSBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+ICsgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+ICsgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgbWV0Og0KPiArICoNCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBk
aXNjbGFpbWVyLg0KPiArICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+ICsgKiAgICAgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gKyAqDQo+ICsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gKyAqIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsg
KiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
Rg0KPiArICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUNCj4gKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SDQo+ICsgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+ICsgKiBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiArICog
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
DQo+ICsgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFDQo+ICsgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GDQo+ICsgKiBTVUNIIERBTUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjZGVm
aW5lIElOSVRHVUlEDQo+ICsjaW5jbHVkZSA8d2luZG93cy5oPg0KPiArDQo+ICsjaW5jbHVkZSAi
TGl0ZUFnZW50LmgiDQo+ICsNCj4gK2ludCBfX3N0ZGNhbGwgV2luTWFpbihISU5TVEFOQ0UgaElu
c3RhbmNlLCBISU5TVEFOQ0UgaWdub3JlLCBMUFNUUg0KPiBscENtZExpbmUsIGludCBuQ21kU2hv
dykNCj4gK3sNCj4gKyAgICBpZiAoc3RybGVuKGxwQ21kTGluZSkgIT0gMCkgew0KPiArICAgICAg
ICBpZiAoIXN0cmNtcChscENtZExpbmUsICItaSIpIHx8ICFzdHJjbXAobHBDbWRMaW5lLCAiXCIt
aVwiIikpDQo+ICsgICAgICAgICAgICByZXR1cm4gQ0xpdGVBZ2VudDo6U2VydmljZUluc3RhbGwo
KTsNCj4gKyAgICAgICAgaWYgKCFzdHJjbXAobHBDbWRMaW5lLCAiLXUiKSB8fCAhc3RyY21wKGxw
Q21kTGluZSwgIlwiLXVcIiIpKQ0KPiArICAgICAgICAgICAgcmV0dXJuIENMaXRlQWdlbnQ6OlNl
cnZpY2VVbmluc3RhbGwoKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIENMaXRlQWdlbnQ6OlNl
cnZpY2VFbnRyeSgpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgQ0xpdGVBZ2VudCBzX3NlcnZpY2U7
DQo+ICsNCj4gKy8qc3RhdGljKi8gdm9pZCBDTGl0ZUFnZW50OjpMb2coY29uc3QgY2hhciogZm10
LCAuLi4pDQo+ICt7DQo+ICt9DQo+ICsNCj4gKy8qc3RhdGljKi8gaW50IENMaXRlQWdlbnQ6OlNl
cnZpY2VJbnN0YWxsKCkNCj4gK3sNCj4gKyAgICByZXR1cm4gLTE7DQo+ICt9DQo+ICsNCj4gKy8q
c3RhdGljKi8gaW50IENMaXRlQWdlbnQ6OlNlcnZpY2VVbmluc3RhbGwoKQ0KPiArew0KPiArICAg
IFNDX0hBTkRMRSAgIHN2YywgbWdyOw0KPiArDQo+ICsgICAgbWdyID0gT3BlblNDTWFuYWdlcihO
VUxMLCBOVUxMLCBTQ19NQU5BR0VSX0FMTF9BQ0NFU1MpOw0KPiArICAgIGlmIChtZ3IgPT0gTlVM
TCkNCj4gKyAgICAgICAgcmV0dXJuIC0xOw0KPiArDQo+ICsgICAgc3ZjID0gT3BlblNlcnZpY2Uo
bWdyLCBTVkNfTkFNRSwgU0VSVklDRV9BTExfQUNDRVNTKTsNCj4gKyAgICBpZiAoc3ZjID09IE5V
TEwpIHsNCj4gKyAgICAgICAgQ2xvc2VTZXJ2aWNlSGFuZGxlKG1ncik7DQo+ICsgICAgICAgIHJl
dHVybiAtMjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLyB0cnkgdG8gc3RvcCB0aGUgc2Vydmlj
ZQ0KPiArICAgIGlmIChDb250cm9sU2VydmljZShzdmMsIFNFUlZJQ0VfQ09OVFJPTF9TVE9QLCAm
c19zZXJ2aWNlLm1fc3RhdHVzKSkNCj4gKyAgICB7DQo+ICsgICAgICAgIFNsZWVwKCAxMDAwICk7
DQo+ICsNCj4gKyAgICAgICAgd2hpbGUgKFF1ZXJ5U2VydmljZVN0YXR1cyhzdmMsICZzX3NlcnZp
Y2UubV9zdGF0dXMpKQ0KPiArICAgICAgICB7DQo+ICsgICAgICAgICAgICBpZiAoc19zZXJ2aWNl
Lm1fc3RhdHVzLmR3Q3VycmVudFN0YXRlICE9IFNFUlZJQ0VfU1RPUF9QRU5ESU5HKQ0KPiArICAg
ICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgU2xlZXAoMTAwMCk7DQo+ICsgICAg
ICAgIH0NCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLyBub3cgcmVtb3ZlIHRoZSBzZXJ2aWNlDQo+
ICsgICAgRGVsZXRlU2VydmljZShzdmMpOw0KPiArICAgIENsb3NlU2VydmljZUhhbmRsZShzdmMp
Ow0KPiArICAgIENsb3NlU2VydmljZUhhbmRsZShtZ3IpOw0KPiArfQ0KPiArDQo+ICsvKnN0YXRp
YyovIGludCBDTGl0ZUFnZW50OjpTZXJ2aWNlRW50cnkoKQ0KPiArew0KPiArICAgIFNFUlZJQ0Vf
VEFCTEVfRU5UUlkgU2VydmljZVRhYmxlWzJdID0NCj4gKyAgICB7DQo+ICsgICAgICAgIHsgU1ZD
X05BTUUsIChMUFNFUlZJQ0VfTUFJTl9GVU5DVElPTilTZXJ2aWNlTWFpbiB9LA0KPiArICAgICAg
ICB7IE5VTEwsIE5VTEwgfQ0KPiArICAgIH07DQo+ICsNCj4gKyAgICBpZiAoIVN0YXJ0U2Vydmlj
ZUN0cmxEaXNwYXRjaGVyKFNlcnZpY2VUYWJsZSkpIHsNCj4gKyAgICAgICAgQ0xpdGVBZ2VudDo6
TG9nKCJGYWlsZWQgdG8gc3RhcnQgZGlzcGF0Y2hlclxuIik7DQo+ICsgICAgICAgIHJldHVybiBH
ZXRMYXN0RXJyb3IoKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g
Ky8qc3RhdGljKi8gdm9pZCBXSU5BUEkgQ0xpdGVBZ2VudDo6U2VydmljZU1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQ0KPiArew0KPiArICAgIHNfc2VydmljZS5fX1NlcnZpY2VNYWluKGFyZ2Ms
IGFyZ3YpOw0KPiArfQ0KPiArDQo+ICsvKnN0YXRpYyovIERXT1JEIFdJTkFQSSBDTGl0ZUFnZW50
OjpTZXJ2aWNlQ29udHJvbEhhbmRsZXJFeChEV09SRA0KPiByZXEsIERXT1JEIGV2dCwgTFBWT0lE
IGRhdGEsIExQVk9JRCBjdHh0KQ0KPiArew0KPiArICAgIHJldHVybiBzX3NlcnZpY2UuX19TZXJ2
aWNlQ29udHJvbEhhbmRsZXJFeChyZXEsIGV2dCwgZGF0YSwgY3R4dCk7DQo+ICt9DQo+ICsNCj4g
K0NMaXRlQWdlbnQ6OkNMaXRlQWdlbnQoKSA6IG1faGFuZGxlKE5VTEwpDQo+ICt7DQo+ICsgICAg
bV9zdGF0dXMuZHdTZXJ2aWNlVHlwZSAgICAgICAgPSBTRVJWSUNFX1dJTjMyOw0KPiArICAgIG1f
c3RhdHVzLmR3Q3VycmVudFN0YXRlICAgICAgID0gU0VSVklDRV9TVEFSVF9QRU5ESU5HOw0KPiAr
ICAgIG1fc3RhdHVzLmR3Q29udHJvbHNBY2NlcHRlZCAgID0gU0VSVklDRV9BQ0NFUFRfU1RPUCB8
DQo+IFNFUlZJQ0VfQUNDRVBUX1NIVVRET1dOOw0KPiArICAgIG1fc3RhdHVzLmR3V2luMzJFeGl0
Q29kZSAgICAgID0gMDsNCj4gKyAgICBtX3N0YXR1cy5kd1NlcnZpY2VTcGVjaWZpY0V4aXRDb2Rl
ID0gMDsNCj4gKyAgICBtX3N0YXR1cy5kd0NoZWNrUG9pbnQgICAgICAgICA9IDA7DQo+ICsgICAg
bV9zdGF0dXMuZHdXYWl0SGludCAgICAgICAgICAgPSAwOw0KPiArDQo+ICsgICAgbV9zdmNfc3Rv
cCA9IENyZWF0ZUV2ZW50KEZBTFNFLCBOVUxMLCBOVUxMLCBGQUxTRSk7DQo+ICt9DQo+ICsNCj4g
K0NMaXRlQWdlbnQ6On5DTGl0ZUFnZW50KCkNCj4gK3sNCj4gKyAgICBDbG9zZUhhbmRsZShtX3N2
Y19zdG9wKTsNCj4gK30NCj4gKw0KPiArdm9pZCBDTGl0ZUFnZW50OjpPblNlcnZpY2VTdGFydCgp
DQo+ICt7DQo+ICsgICAgQ0xpdGVBZ2VudDo6TG9nKCJPblNlcnZpY2VTdGFydCgpXG4iKTsNCj4g
K30NCj4gKw0KPiArdm9pZCBDTGl0ZUFnZW50OjpPblNlcnZpY2VTdG9wKCkNCj4gK3sNCj4gKyAg
ICBDTGl0ZUFnZW50OjpMb2coIk9uU2VydmljZVN0b3AoKVxuIik7DQo+ICt9DQo+ICsNCj4gK3Zv
aWQgQ0xpdGVBZ2VudDo6T25EZXZpY2VFdmVudChEV09SRCBldnQsIExQVk9JRCBkYXRhKQ0KPiAr
ew0KPiArICAgIENMaXRlQWdlbnQ6OkxvZygiT25EZXZpY2VFdmVudCgpXG4iKTsNCj4gK30NCj4g
Kw0KPiArYm9vbCBDTGl0ZUFnZW50OjpTZXJ2aWNlTWFpbkxvb3AoKQ0KPiArew0KPiArICAgIFdh
aXRGb3JTaW5nbGVPYmplY3QobV9zdmNfc3RvcCwgSU5GSU5JVEUpOw0KPiArICAgIHJldHVybiBm
YWxzZTsNCj4gK30NCj4gKw0KPiArdm9pZCBDTGl0ZUFnZW50OjpTZXRTZXJ2aWNlU3RhdHVzKERX
T1JEIHN0YXRlLCBEV09SRCBleGl0IC8qPSAwKi8sDQo+IERXT1JEIGhpbnQgLyo9IDAqLykNCj4g
K3sNCj4gKyAgICBtX3N0YXR1cy5kd0N1cnJlbnRTdGF0ZSA9IHN0YXRlOw0KPiArICAgIG1fc3Rh
dHVzLmR3V2luMzJFeGl0Q29kZSA9IGV4aXQ7DQo+ICsgICAgbV9zdGF0dXMuZHdXYWl0SGludCA9
IGhpbnQ7DQo+ICsgICAgOjpTZXRTZXJ2aWNlU3RhdHVzKG1faGFuZGxlLCAmbV9zdGF0dXMpOw0K
PiArfQ0KPiArDQo+ICt2b2lkIFdJTkFQSSBDTGl0ZUFnZW50OjpfX1NlcnZpY2VNYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikNCj4gK3sNCj4gKyAgICBtX2hhbmRsZSA9IFJlZ2lzdGVyU2Vydmlj
ZUN0cmxIYW5kbGVyRXgoU1ZDX05BTUUsDQo+IFNlcnZpY2VDb250cm9sSGFuZGxlckV4LCBOVUxM
KTsNCj4gKyAgICBpZiAobV9oYW5kbGUgPT0gTlVMTCkNCj4gKyAgICAgICAgcmV0dXJuOw0KPiAr
DQo+ICsgICAgU2V0U2VydmljZVN0YXR1cyhTRVJWSUNFX1JVTk5JTkcpOw0KPiArICAgIE9uU2Vy
dmljZVN0YXJ0KCk7DQo+ICsgICAgd2hpbGUgKFNlcnZpY2VNYWluTG9vcCgpKSA7DQo+ICsgICAg
T25TZXJ2aWNlU3RvcCgpOw0KPiArICAgIFNldFNlcnZpY2VTdGF0dXMoU0VSVklDRV9TVE9QUEVE
KTsNCj4gK30NCj4gKw0KPiArRFdPUkQgV0lOQVBJIENMaXRlQWdlbnQ6Ol9fU2VydmljZUNvbnRy
b2xIYW5kbGVyRXgoRFdPUkQgcmVxLA0KPiBEV09SRCBldnQsIExQVk9JRCBkYXRhLCBMUFZPSUQg
Y3R4dCkNCj4gK3sNCj4gKyAgICBzd2l0Y2ggKHJlcSkNCj4gKyAgICB7DQo+ICsgICAgY2FzZSBT
RVJWSUNFX0NPTlRST0xfU1RPUDoNCj4gKyAgICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJTRVJWSUNF
X0NPTlRST0xfU1RPUFxuIik7DQo+ICsgICAgICAgIFNldFNlcnZpY2VTdGF0dXMoU0VSVklDRV9T
VE9QX1BFTkRJTkcpOw0KPiArICAgICAgICBTZXRFdmVudChtX3N2Y19zdG9wKTsNCj4gKyAgICAg
ICAgcmV0dXJuIE5PX0VSUk9SOw0KPiArDQo+ICsgICAgY2FzZSBTRVJWSUNFX0NPTlRST0xfU0hV
VERPV046DQo+ICsgICAgICAgIENMaXRlQWdlbnQ6OkxvZygiU0VSVklDRV9DT05UUk9MX1NIVVRE
T1dOXG4iKTsNCj4gKyAgICAgICAgU2V0U2VydmljZVN0YXR1cyhTRVJWSUNFX1NUT1BfUEVORElO
Ryk7DQo+ICsgICAgICAgIFNldEV2ZW50KG1fc3ZjX3N0b3ApOw0KPiArICAgICAgICByZXR1cm4g
Tk9fRVJST1I7DQo+ICsNCj4gKyAgICBjYXNlIFNFUlZJQ0VfQ09OVFJPTF9ERVZJQ0VFVkVOVDoN
Cj4gKyAgICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJTRVJWSUNFX0NPTlRST0xfREVWSUNFRVZFTlRc
biIpOw0KPiArICAgICAgICBTZXRTZXJ2aWNlU3RhdHVzKFNFUlZJQ0VfUlVOTklORyk7DQo+ICsg
ICAgICAgIE9uRGV2aWNlRXZlbnQoZXZ0LCBkYXRhKTsNCj4gKyAgICAgICAgcmV0dXJuIE5PX0VS
Uk9SOw0KPiArDQo+ICsgICAgY2FzZSBTRVJWSUNFX0NPTlRST0xfSU5URVJST0dBVEU6DQo+ICsg
ICAgICAgIFNldFNlcnZpY2VTdGF0dXMoU0VSVklDRV9SVU5OSU5HKTsNCj4gKyAgICAgICAgcmV0
dXJuIE5PX0VSUk9SOw0KPiArDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgYnJlYWs7DQo+
ICsgICAgfQ0KPiArDQo+ICsgICAgU2V0U2VydmljZVN0YXR1cyhTRVJWSUNFX1JVTk5JTkcpOw0K
PiArICAgIHJldHVybiBFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRDsNCj4gK30NCj4gZGlmZiAt
LWdpdCBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmggYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2Vu
dC5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmFiMTkyZWYNCj4g
LS0tIC9kZXYvbnVsbA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IEBAIC0w
LDAgKzEsNzMgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiAr
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBvciB3aXRob3V0IG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xs
b3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiArICogICAgIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0KPiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+ICsgKiBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiArICogQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+ICsgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwN
Cj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+ICsgKi8NCj4gKw0K
PiArI2lmbmRlZiBfTElURUFHRU5UX0hfDQo+ICsjZGVmaW5lIF9MSVRFQUdFTlRfSF8NCj4gKw0K
PiArI2luY2x1ZGUgPHZlcnNpb24uaD4NCj4gKw0KPiArI2RlZmluZSBTVkNfTkFNRSAieGVuc3Zj
Ig0KPiArI2RlZmluZSBTVkNfRElTUExBWU5BTUUgUFJPRFVDVF9OQU1FX1NUUiAjIyAiSW50ZXJm
YWNlIFNlcnZpY2UiDQo+ICsjZGVmaW5lIFNWQ19ERVNDICJNb25pdG9ycyBhbmQgcHJvdmlkZXMg
dmFyaW91cyBtZXRyaWNzIHRvIFhlblN0b3JlIg0KPiArDQoNClRoZXNlIHNob3VsZCBwcm9iYWJs
eSBiZSBjaGFuZ2VkLiAnSW50ZXJmYWNlIFNlcnZpY2UnIGlzIHNvbWV3aGF0IHZhZ3VlIGFuZCBJ
IGRvbid0IHRoaW5rIGF0IGFjdHVhbGx5IGRvZXMgcHJvdmlkZSBtZXRyaWNzIHRvIFhlblN0b3Jl
Lg0KDQo+ICtjbGFzcyBDTGl0ZUFnZW50DQo+ICt7DQo+ICtwdWJsaWM6IC8vIHN0YXRpY3MNCj4g
KyAgICBzdGF0aWMgdm9pZCBMb2coY29uc3QgY2hhciogZm10LCAuLi4pOw0KPiArDQo+ICsgICAg
c3RhdGljIGludCBTZXJ2aWNlSW5zdGFsbCgpOw0KPiArICAgIHN0YXRpYyBpbnQgU2VydmljZVVu
aW5zdGFsbCgpOw0KPiArICAgIHN0YXRpYyBpbnQgU2VydmljZUVudHJ5KCk7DQo+ICsNCj4gKyAg
ICBzdGF0aWMgdm9pZCBXSU5BUEkgU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsN
Cj4gKyAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIFNlcnZpY2VDb250cm9sSGFuZGxlckV4KERXT1JE
LCBEV09SRCwNCj4gTFBWT0lELCBMUFZPSUQpOw0KPiArDQo+ICtwdWJsaWM6IC8vIGN0b3IvZHRv
cg0KPiArICAgIENMaXRlQWdlbnQoKTsNCj4gKyAgICB+Q0xpdGVBZ2VudCgpOw0KPiArDQo+ICtw
cml2YXRlOiAvLyBzZXJ2aWNlIGV2ZW50cw0KPiArICAgIHZvaWQgT25TZXJ2aWNlU3RhcnQoKTsN
Cj4gKyAgICB2b2lkIE9uU2VydmljZVN0b3AoKTsNCj4gKyAgICB2b2lkIE9uRGV2aWNlRXZlbnQo
RFdPUkQsIExQVk9JRCk7DQo+ICsgICAgYm9vbCBTZXJ2aWNlTWFpbkxvb3AoKTsNCj4gKw0KPiAr
cHJpdmF0ZTogLy8gc2VydmljZSBzdXBwb3J0DQo+ICsgICAgdm9pZCBTZXRTZXJ2aWNlU3RhdHVz
KERXT1JEIHN0YXRlLCBEV09SRCBleGl0ID0gMCwgRFdPUkQgaGludCA9IDApOw0KPiArICAgIHZv
aWQgV0lOQVBJIF9fU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsNCj4gKyAgICBE
V09SRCBXSU5BUEkgX19TZXJ2aWNlQ29udHJvbEhhbmRsZXJFeChEV09SRCwgRFdPUkQsIExQVk9J
RCwNCj4gTFBWT0lEKTsNCj4gKw0KPiArICAgIFNFUlZJQ0VfU1RBVFVTICAgICAgICAgIG1fc3Rh
dHVzOw0KPiArICAgIFNFUlZJQ0VfU1RBVFVTX0hBTkRMRSAgIG1faGFuZGxlOw0KPiArICAgIEhB
TkRMRSAgICAgICAgICAgICAgICAgIG1fc3ZjX3N0b3A7DQo+ICt9Ow0KPiArDQo+ICsjZW5kaWYN
Cj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdlbnQvbGl0ZWFnZW50LnJjIGIvc3JjL2xpdGVhZ2Vu
dC9saXRlYWdlbnQucmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4u
NzhlNWNjNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvbGl0ZWFnZW50
LnJjDQo+IEBAIC0wLDAgKzEsNjAgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3Rl
bXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBv
ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICog
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4g
KyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiAr
ICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0K
PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiArICog
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+
ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
DQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+
ICsgKi8NCj4gKw0KPiArDQo+ICsjaW5jbHVkZSA8d2luZG93cy5oPg0KPiArI2luY2x1ZGUgPG50
dmVycC5oPg0KPiArDQo+ICsjdW5kZWYgVkVSX0NPTVBBTllOQU1FX1NUUg0KPiArI3VuZGVmIFZF
Ul9QUk9EVUNUTkFNRV9TVFINCj4gKyN1bmRlZiBWRVJfUFJPRFVDVFZFUlNJT04NCj4gKyN1bmRl
ZiBWRVJfUFJPRFVDVFZFUlNJT05fU1RSDQo+ICsNCj4gKyNpbmNsdWRlIDx2ZXJzaW9uLmg+DQo+
ICsNCj4gKyNkZWZpbmUgVkVSX0NPTVBBTllOQU1FX1NUUiAgICAgICAgIFZFTkRPUl9OQU1FX1NU
Ug0KPiArI2RlZmluZSBWRVJfTEVHQUxDT1BZUklHSFRfU1RSICAgICAgIkNvcHlyaWdodCAoYykg
Q2l0cml4IFN5c3RlbXMgSW5jLiINCj4gKw0KPiArI2RlZmluZSBWRVJfUFJPRFVDVE5BTUVfU1RS
ICAgICAgICAgIlhFTklGQUNFIg0KPiArI2RlZmluZSBWRVJfUFJPRFVDVFZFUlNJT04NCj4gTUFK
T1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLE1JQ1JPX1ZFUlNJT04sQlVJTERfTlVNQkVSDQo+ICsj
ZGVmaW5lIFZFUl9QUk9EVUNUVkVSU0lPTl9TVFIgICAgICBNQUpPUl9WRVJTSU9OX1NUUiAiLiIN
Cj4gTUlOT1JfVkVSU0lPTl9TVFIgIi4iIE1JQ1JPX1ZFUlNJT05fU1RSICIuIiBCVUlMRF9OVU1C
RVJfU1RSDQo+ICsNCj4gKyNkZWZpbmUgVkVSX0lOVEVSTkFMTkFNRV9TVFIgCSAgICAidzMyeGFn
ZW50LmV4ZSINCj4gKyNkZWZpbmUgVkVSX0ZJTEVWRVJTSU9OX1NUUiAJICAgICIxLjAiDQo+ICsj
ZGVmaW5lIFZFUl9GSUxFREVTQ1JJUFRJT05fU1RSICAgICAidzMyYWdlbnQiDQo+ICsjZGVmaW5l
IFZFUl9PUklHSU5BTEZJTEVOQU1FX1NUUiAgICAidzMyeGFnZW50LmV4ZSINCj4gKyNkZWZpbmUg
VkVSX0ZJTEVUWVBFIFZGVF9BUFANCj4gKyNkZWZpbmUgVkVSX0ZJTEVTVUJUWVBFIDANCj4gKw0K
DQpBcmUgdGhlc2UgZmllbGRzIGNvcnJlY3Q/IFdoeSBhcmUgd2UgYmFraW5nIHZlcnNpb24gMS4w
IGluIGhlcmU/IFdoeSAndzMyeCcgYW5kIHdoeSBkb2VzIHRoZSBkZXNjcmlwdGlvbiBub3QgaW5j
bHVkZSB0aGUgJ3gnPw0KDQo+ICt4ZW5faWNvbiBJQ09OICJ4ZW4uaWNvIg0KPiArDQo+ICsjaW5j
bHVkZSAiY29tbW9uLnZlciINCj4gKyNpbmNsdWRlICJtZXNzYWdlcy5yYyINCj4gXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L21lc3NhZ2Vz
Lm1jIGIvc3JjL2xpdGVhZ2VudC9tZXNzYWdlcy5tYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
PiBpbmRleCAwMDAwMDAwLi4wMjg5YzQ0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc3JjL2xp
dGVhZ2VudC9tZXNzYWdlcy5tYw0KPiBAQCAtMCwwICsxLDY2IEBADQo+ICtTZXZlcml0eU5hbWVz
PShJbmZvcm1hdGlvbmFsPTB4MSkNCj4gK0ZhY2lsaXR5TmFtZXM9KFhlblVzZXI9MHhkNjApDQo+
ICsNCj4gK01lc3NhZ2VJZD0weDAwMDENCj4gK0ZhY2lsaXR5PVhlblVzZXINCj4gK1NldmVyaXR5
PUluZm9ybWF0aW9uYWwNCj4gK1N5bWJvbGljTmFtZT1FVkVOVF9YRU5VU0VSX1BPV0VST0ZGDQo+
ICtMYW5ndWFnZT1FbmdsaXNoDQo+ICtUaGUgdG9vbHMgcmVxdWVzdGVkIHRoYXQgdGhlIGxvY2Fs
IFZNIHNodXQgaXRzZWxmIGRvd24uDQo+ICsuDQo+ICsNCj4gK01lc3NhZ2VJZD0weDAwMDINCj4g
K0ZhY2lsaXR5PVhlblVzZXINCj4gK1NldmVyaXR5PUluZm9ybWF0aW9uYWwNCj4gK1N5bWJvbGlj
TmFtZT1FVkVOVF9YRU5VU0VSX1JFQk9PVA0KPiArTGFuZ3VhZ2U9RW5nbGlzaA0KPiArVGhlIHRv
b2xzIHJlcXVlc3RlZCB0aGF0IHRoZSBsb2NhbCBWTSByZWJvb3QuDQo+ICsuDQo+ICsNCj4gK01l
c3NhZ2VJZD0weDAwMDMNCj4gK0ZhY2lsaXR5PVhlblVzZXINCj4gK1NldmVyaXR5PUluZm9ybWF0
aW9uYWwNCj4gK1N5bWJvbGljTmFtZT1FVkVOVF9YRU5VU0VSX0hJQkVSTkFURQ0KPiArTGFuZ3Vh
Z2U9RW5nbGlzaA0KPiArVGhlIHRvb2xzIHJlcXVlc3RlZCB0aGF0IHRoZSBsb2NhbCBWTSBoaWJl
cm5hdGUgaXRzZWxmLg0KPiArLg0KPiArDQo+ICtNZXNzYWdlSWQ9MHgwMDA0DQo+ICtGYWNpbGl0
eT1YZW5Vc2VyDQo+ICtTZXZlcml0eT1JbmZvcm1hdGlvbmFsDQo+ICtTeW1ib2xpY05hbWU9RVZF
TlRfWEVOVVNFUl9TMw0KPiArTGFuZ3VhZ2U9RW5nbGlzaA0KPiArVGhlIHRvb2xzIHJlcXVlc3Rl
ZCB0aGF0IHRoZSBsb2NhbCBWTSBlbnRlciBwb3dlciBzdGF0ZSBTMy4NCj4gKy4NCj4gKw0KPiAr
TWVzc2FnZUlkPTB4MDAwNQ0KPiArRmFjaWxpdHk9WGVuVXNlcg0KPiArU2V2ZXJpdHk9SW5mb3Jt
YXRpb25hbA0KPiArU3ltYm9saWNOYW1lPUVWRU5UX1hFTlVTRVJfV01JDQo+ICtMYW5ndWFnZT1F
bmdsaXNoDQo+ICtUaGUgdG9vbHMgbm90aWNlZCB0aGF0IFdNSSBiZWNhbWUgbm9uLWZ1bmN0aW9u
YWwuDQo+ICsuDQoNCkRvZXMgdGhpcyBhZ2VudCB1c2UgV01JPw0KDQogIFBhdWwNCg0KPiArDQo+
ICtNZXNzYWdlSWQ9MHgwMDA2DQo+ICtGYWNpbGl0eT1YZW5Vc2VyDQo+ICtTZXZlcml0eT1JbmZv
cm1hdGlvbmFsDQo+ICtTeW1ib2xpY05hbWU9RVZFTlRfWEVOVVNFUl9TVEFSVEVEDQo+ICtMYW5n
dWFnZT1FbmdsaXNoDQo+ICtUaGUgdG9vbHMgaW5pdGlhdGVkLg0KPiArLg0KPiArDQo+ICtNZXNz
YWdlSWQ9MHgwMDA3DQo+ICtGYWNpbGl0eT1YZW5Vc2VyDQo+ICtTZXZlcml0eT1JbmZvcm1hdGlv
bmFsDQo+ICtTeW1ib2xpY05hbWU9RVZFTlRfWEVOVVNFUl9VTlNVU1BFTkRFRA0KPiArTGFuZ3Vh
Z2U9RW5nbGlzaA0KPiArVGhlIHRvb2xzIHJldHVybmVkIGZyb20gc3VzcGVuZC4NCj4gKy4NCj4g
Kw0KPiArTWVzc2FnZUlkPTB4MDAwOA0KPiArRmFjaWxpdHk9WGVuVXNlcg0KPiArU2V2ZXJpdHk9
SW5mb3JtYXRpb25hbA0KPiArU3ltYm9saWNOYW1lPUVWRU5UX1hFTlVTRVJfVU5FWFBFQ1RFRA0K
PiArTGFuZ3VhZ2U9RW5nbGlzaA0KPiArVGhlIHRvb2xzIGV4cGVyaWVuY2VkIGFuIHVuZXhwZWN0
ZWQgZXJyb3IuDQo+ICsuDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L3hlbi5pY28gYi9z
cmMvbGl0ZWFnZW50L3hlbi5pY28NCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4g
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ0Yzk5M2JhMjkwZTUw
NTVhODkwMGNhODcNCj4gODZlYTBlMDMxMTM4YTYNCj4gR0lUIGJpbmFyeSBwYXRjaA0KPiBsaXRl
cmFsIDI1MjE0DQo+IHpjbWVIdjMwemdoYH1lUmZEeXhicCVMUFAwUCpEJjtLdXwhKkM3MENQJTYm
S1lsKipGSzU+M1NvMT5FO0ZfWA0KPiBUJH0NCj4genZfI3l1KG8jZm94MiU0Wm1ITkVUY2d7Sk5k
b04oeHJ7RFgmfElmZUNAMHBvcm9eOTRNWFVAM0BWSjdUDQo+IEVYczhwJQ0KPiB6bVNUWGw1T2Fr
UEktUWNnVj1seHFyYTN0JmA5TCF2WnJLVXU3dEMpZik7SXteUCE5WlItZDJkNj8lLUdRMUZWRjIN
Cj4geihedW95aThjTzA5MVlPO0luUjdVVFdTMHtGfkN4WSU1TXIwJFVkK00oU3JmTTVLQCYkcmow
TURUKiNFdg0KPiBSMytqbw0KPiB6Q21FP0NII2U2SE5kNlpATkhPPnlOVnhvRXVvKmtINnJRblRR
X3xBTGp2YTFYV0hVQWBaREx8I1RHDQo+IH1MSW5VdTd8DQo+IHojRmhtR2lIWFQraDd2WHQ2QVA0
KG1wR3xkbFRDXzdFLQ0KPiAxKUxGNG1NWGsjJVN4UHBgP3dranpGak8kSiZabCRXZlMNCj4gekhl
dUhiKmk2KF50OHQjOUQ1YSRkeStBNHxwKzszeUxKZURucUxofVd4Vj5wQWwlPVopQ31RPVhLVn51
KjUNCj4gV0BofQ0KPiB6WGFhZ1ZFMFhGfTBZcD41dWhGSFpzZTFOZXgrSkEqPzhTNWBwalFMQlQz
Wk5ra2xzaiN2e3EwR3EqV3VqdGRydA0KPiBSDQo+IHpEZkUoaDZuOyUwZEFRYldVI2Y8czElMTdn
Q2V3UlZPcWNBXkNrUGJOUVAoRiohKllRc1Q/KCpJT2pqeF8pDQo+IHZ5OXANCj4gemxpRHdlKWhB
Mz55OWpqNlFCYyhZSEI0YCo8K1Y2YjRqYEBOR14qQGdETnN6MkRYRkZ1TVQjMnN3MEtzNFUNCj4g
bU1TKw0KPiB6bU5qLTNGbSRQU3pLRjhzN2ktDQo+IGM/N3xsbzRSUW1pQ1d6QmFYTj8jdV4kQm93
JHJNc35mSiZzZT5Cdzs0dyQzbnptDQo+IHpqZH49Nkh7d0RlOTEqN3FWUyQpNm5lcFdyJEgrV0VK
WUVQRVc1TUU+I2FWJDZnQF8lQzw2UHV6Z3cNCj4gV3p0PFNsczMNCj4gentFSGFIeWRXIyNJZExq
RFVPLTxpX3plNmdNQmN6cCY0MUgrWTR6M1cmcktsUEwqRzhFTlZiPk9lcC0NCj4gOHkrUC1SZw0K
PiB6PDM2S2YjNTEofWpOcDQtPV48NVZBaWwzfmlveVJ0Oz4rSz0mbHJ5ZDh8OXdEbnc1fkUrKUlZ
NSp8OEg3VGpDeHYNCj4gek5nPiN6YVNrQ19QUDV8YXAtDQo+IGM+ZWQ3MXxYKTRidWRsPE9fZXtp
eXs3eWI/QFIqOSN0K1E/Vmp3Pmp4KHZWPEZKOw0KPiB6TlQqMzVIWHprODBtWWMlR0xQaiVVQzxT
Qz1fVGBXMn5fI3pHNlZzMkohRSFQcTRAKmY8ZUR+Pj9WJm4NCj4gY181XyM1DQo+IHpZTSQ5eW1U
Z1l0M1kqbGdNRXk8TSE/Z1dgWTVOTTNfUSRGcUBBWD4kQFhWSGIwPTJzazc1NlYlTQ0KPiBoPn1E
MyFkSSkNCj4geiNOJjU3aDlyaChBckRtYG1qek9KKSkrITR2a2Z5JTU1c2IjYjZLdVgpZDc5YjM7
bEFhIXlZZCE4MFN0NTlZWSlFDQo+IHpzaGxvN3ErKVBtVUBIK3tJcilPKW9hPkFodV5GQTEqbytn
U1RrPzJtQ1R1dzMjQmVQaGVkPSpSYGpkaVlxDQo+IFlMT1UNCj4gel9hZXZLa3ArbUVBWTw5dnBn
JWM5UT00Z1dUQ0N+UytkKjVpeHlNLQ0KPiBSWTxPTTYrUVRnZGxvaG1jQEluVCUjYHtpTg0KPiB6
TVU/bHVgaz9nITZaJGRVc15UTDBnQHVXSntyWlhWPEh3NkI5enZ4MVNjIUNoZG9qbilPdzExdVZu
TUxBJA0KPiBmI0xDDQo+IHpPYj5EdnZ1anJwKTlaU1BgRV59SFdgdmhtUlpFRHFiJWZZWlNCTmQp
TGdZbDVpSHo4cVZwQyZSaz0tDQo+IG1wOTc/YmgNCj4gemBSKGpRUTlCe2RfSTQzaCMjUit5eWNJ
NGN3ezl3eWJ4MDY3ITx2Yjh7a3c9UHchaSZAKGMoc1c0Ukw+Nm4zeQ0KPiA+dw0KPiB6Tz1NK2Rp
S1I9SWlkQ3l0aU00Q2ppajVtTGlydT8raXZ0R15oeXBJVmtoNFJzVFN0IWA2fn5TcDZETGxiNVR7
UnsNCj4gejdVJDJPN2hpdzx3WVlscXM8PzZFaFBaWD5tYmlRT3U2WGReZiV4JnFBSF5AZnszM3E7
e2RlKX5uT3VHSw0KPiBQNGpRIQ0KPiB6LXhtMWEmO3E9WXwzOWR2bHxIPEhhcG55UzM9SERINW9l
dyYhc1Y3aHs9Vk1jbypve2Etcm0wY0w2Ki0NCj4gR3Y5YiZhDQo+IHpeITQocDV1azx8VVlAPnpB
KG15PlZCTzVFWEk1bHRjPS0NCj4gbWhqWihaflBmQm5AaDklZ201KDJFOytlRWtPUmUrWl8NCj4g
em49bGJ6Y0lpcnU1YGl0JEBINz0qYzI1SU5GQnVGN0NJVnBoTGIxWVZlM2YpIzBqblR5am1PZ0BY
bXN6Tzt3bzQNCj4gTA0KPiB6YGckXjU7akNzOTZkRFNCMTJxQm1ya2JTZElqaFFgJm5rdWJJPHh2
fW8oJnR1JGJTdWs2PXVISGklfilwMVU7K2kNCj4gejRPaihNV2tTM2I+WmsoMjhpRGhXc0ghPy0N
Cj4gVyQ3ejk7PFdPcCR9K15MY34haD5Sbj5yMVAhJVJJaShWaW1tfi1KTw0KPiB6ZHo+UThFTERe
eXZocjZiZUFPKChoZzg8UVFRME1uS1UmRGooeXgqfT1taT5SI2BIeTtASXd1KDAofWY8OA0KPiBr
OzYpDQo+IHpQKmthc2tJRy1zRmxkfUlqeCNLJnNQRzM+YVd4N0MwI1FaPHVDbF5iS2B0Z2lZc21R
YzVSKCEjUClZdWZWaGVTUQ0KPiB6MXImWktkKmV7N0tSJipKVlVkJk00fEtQO211bDNhMkYyPCo2
JSEwSCVJKXBsbUcpdSZhdlc2bEkhNWZBMg0KPiB8PEFADQo+IHpTTldeayoqUzZFJldgREpgaEs8
M2NTWDNwb3QtU05FPVFiSUFvRHZwbUE2OSgqMF8rLQ0KPiBFWDQlZG0zTU5vdnk8JUgNCj4gektu
YH0hJk1lQC0NCj4gZGJHTk55O3ZZRm09KVNOc04qZUFYWUs2Zj9DanYrUChEZ2s4RTBjPlhVb3Rt
I01nNm53JD5eNw0KPiB6Yz80Tkl5U3FjOHAybHUlWEpjYitWYEYyaHhmZFZoWV59MDB6c3x3TyRL
NmZaczhGR1RvdnAyMTFzakh+RSQxOA0KPiBADQo+IHpvU29nPSs8aHUmPlVsJjVURCR3SDV7P2NJ
JSVsWWUyUzxoNSRLNl4jLQ0KPiAoa1NmJnJnd1hiOU9XZ3RlU1FFYDF2e04NCj4geilubT5DeCV2
M31MJlRqY1ZpLTZOWmh2PC0NCj4gckUhI0htcHlYeV5YQzh+a2tKQz9uMz9JMCNvaj1LMT5GMlhB
cHQ4OA0KPiB6bDdXKjcmQ1FyeTY5XjRlV0YoViVWVllrRmJ9NjlxPDEjSnlZWUFyOG5RQipEM2V2
Z3oqRzE1P0JJRUMtDQo+IEVBNCo3DQo+IHo3V2xAaU5xYFh7KVpibCkrcHk5c3JkT150X2teeGBY
bFVLfl8xUXt3JklGZGBpemJNaGRyK1h4IW91OWwlLXE2NA0KPiB6JEM+QmR1VnBufVc8UXxWVlU9
cG8+PjlATWQ2dV85I2N7NDl3bmcrekp6c2dHbz9qS0o9VTF1eE5RaVANCj4gKWc3WWdwDQo+IHpJ
cEYrQ3A1dClMJiNkek5pcEF2bGxAPUV3QDIjRndAd3JlZ0AmPDcjXjhEOyg4aVMxVUNtSF5NSTJE
Ug0KPiBZdjZCbkINCj4gemZqP1RsNU9ucml0QWBlQV8wO09Fd0Y1VlNhO30lRXdvez9uWlkmdGJo
NUJ8U3JKZURkcyQ7fTZARSU0Nk9DXiQNCj4gNQ0KPiB6Z1hoI2FvfFltYiRWRnVFXlhCNDZQcThv
RE82K1Y8TEZ8c082VDZ9dSNreiktDQo+ICNoTTBII0V4aUpGfStiT2FWWE1LDQo+IHo5RS02TzJi
I0V3VTVWYWVTJHVWfGBxZXNPWFMzPWVyJldtOUA+Kz00KUdrYD1jfEEmO1ktDQo+IH1hWUhuUzBE
bFdvUHQNCj4gekh1bUQlSGpkJi1TNFdaRysocVFJX1l4TzZ4UWNKdkl4KT5qb2JLUSQ5PCgkUWc+
NDxoP1hLbS0tDQo+IDdmYXhEbkhXfQ0KPiB6NHM7ZHcyRHlsdlcyJVZ6P15ZNHstR2p4eEh7IStL
eDRNZHshfV5LQyEoSkRra00xdD0jYFkzPD8rcC1sUWEhfSYNCj4gems5NllCQ3B6KDlNc0BMRWV6
Mz8tDQo+IGVNQH10O2MjKGMrNlE5QmoyVUE2YHRAU2RyY0drPT1GTVd+Jllral5fc3BEJA0KPiB6
OyV3JCphZW1QWmFkR0ohQHp1JktgVFUhZ21uWTdoSkV3b3t7cE9vKiNQI2RmI2RxSSpDIWMlMnxO
aUBiDQo+IHBMLTM0DQo+IHoqMXlVQjg3PVRuS2N+alpQKTZOalY/JTVDU0ZpNDBEPk9FP0J1aXxs
UGU5RigyOWMyc0xUVXpoZ3FtezFgcWdMPA0KPiB6cjRKMVB7RVFpNWVJZz1kaCpGfStgYVhzWHZI
dFpWajYjRW1gWDBwJHZBVzw9Zj0qK0leJHo0NHNDLQ0KPiBuJE1GdTdXDQo+IHpkYURlZjktZUl4
VEtuUkckK3ZNazRzQUsqNWh8LTA+JXxXXz9QWHwkPU4qfHNxTURhZjViS1U3OC0NCj4gKmRjWVNx
P0ENCj4gendVYWI9U3NxJE4yOEUkanZNZzNlUmJVe3Q1XnBlTlAmamJhRDN3QDJFYnNLeHBmUEI5
MlM9MVVTWG90Mg0KPiB8RkBESA0KPiB6P1g7fHcxSW1rd3QoNVppP0hnJHZDQC0NCj4gZ08wJkp8
TFomRjNGcX1ofjF4ZU09S1dvUlVlWX47MUlxX31YbzIoYDdnDQo+IHpFQHh3SC1CPWJfVFUqUHhU
X2FBKDI4YHVCSjM+M3ErYVY8eCtCWXItDQo+IF49dHNVY3FnYVV2Um8jZTZvd1hkdlJzNl4NCj4g
ejhhKyt2R3A8VmloKilSMCtOQV9IWEdOU1hJQWYxeTh1WjAqcDxZOWk1TjVBUU9DSyVrQl5aVHBP
VCVLDQo+IDtWQnk+Xw0KPiB6Q0x5VjV2IStkKENkTmNOVE5vRUpMI1ZsUDx2UChaRzB9QUBKRFpv
N0E4M2N6KERLO3RsYG5PRSEzJDxWa1YqWQ0KPiBUDQo+IHoqYE0rQ1E1O2RLam9lMT8tDQo+IGgr
NF9HWDQ+N0VlZCY/ayptQ1dhN15XYGhYJGVTcDBJTj1mPnc/PVNDdVBkOW5ifXgNCj4geiZASCFz
WXpzRUFQak89QzgyV3QqXzlqe3wqciZ7ez1fcHBseHs3NXs5JTVxP1o/VWJKbj5mKE1MK3ROZFAz
Jg0KPiBwbQ0KPiB6RTRIPy0NCj4gQyUpe2M2RFBYKml1fjZETVNpQ2A7PX4ofjsoVUp9YWVreil4
SDdefFRwdzNNOVBYSllQN1gqR1haa2h+DQo+IHo9U0lGSj90TDAwX1V6ZHM0ancheEBBSD1+VTZT
fHBoWXVmJHBNVTtZe1FCIyF8REk9U3txYi0NCj4gN1p3dmZpWlVPeTENCj4geiNZX2d4eHx4fWNs
YmY1OWpoVjdzbjM9bU1NLQ0KPiBERkxhP0xPPUtDfVlDakVefDk7QWtleXRRQF8pdDIjUW1kd2NX
Mg0KPiB6aEx4Rl93UFFKKiZlUHBuPVV2WFJvVkElNSZYI2w+eW04QzFTTXVkTmItSFM1LW5NLQ0K
PiBDXjZwXnA8Yjx1Nm5JI3tsDQo+IHo9eVpWMnlARGtoOzNGNjxSRGdZcDt6S3xTPjdZZUw8d1Va
ZyVyYnxXb29uVUZ1NkFaOW1CRkNDYz13Mg0KPiBSa2Ehb0YNCj4geiRfemtSS2BSRkBXRlUpbTdC
ez5lM15TcVFFOT54PShMWndHQlAoLQ0KPiA7Q0J1ZU1vPjdWNiQ/IyhZRm1SeFZWPnwkOQ0KPiB6
JmA8XipASW5UJSZ7NV9XN1hPSHwyMTtPeVZhMCViSCU0X3ZUfUFAcWJ3KTJuS2dMTUxKMVVSezRR
MQ0KPiBjfkZKdkdLDQo+IHo5bmJ9eHxGd0VSSHY/QDJUa2VieU1seiQ8dEZPS351Uz1JTVUlY19n
ODwhWkRkLQ0KPiB2fUJXOGMxZ3A4JVp4c2F2O2gNCj4gei0NCj4gIWxENT1neXJed3JiVUNIT3FY
JGNvKHRePXp1UWhnemtVNUtVayopMUlNNV5pd3xObj1STW5FX1VRdEE5NQ0KPiBHX1YNCj4geigr
THdNSmV4ZHV2YyNNQGIwfEFJVExOaX40aiVCYiV1fXdAUm87Wj51JnpsQV5pT2pKYmkpUjBTcn5O
dC0NCj4gJTdGJA0KPiB6R1h+bmpmdVVvPnYpfVclT0BHalFoSldqKHF8bHlzSjV2NmpGcDB9dVQh
YFAjT0NZViQhMkAyJVhtI247dEoNCj4gbHc1DQo+IHprRy1zVkdHajFvYUxfU2U2U2tpLV5VSk9s
JVZFND1PZ2J8SCp2NU4zZC1nMVotfDZZOyZ6OC0NCj4gYU90fllIPSpwbX4NCj4gemJaZE15eDty
bkI/eXNzIzQ+dzI5X2RCQktgPCFUcmhuIy0NCj4gNkRUM349NDVobW4wZCh2QXMmcis1eU9mMHY9
emBBZg0KPiB6LQ0KPiBNaW15KnxPekV3bCNyKUlmRDVQK2I9eVlTTyZnaFpOTkdhIWhPQUtAWmlC
dUZiPFpvJXxtMDc9dGhiZy0NCj4gTl84MQ0KPiB6Mk9IfHMhfG0pTns2eEdCaCV8digxfEJZZHVz
KXBiV0NUKnQ9dF58eD9JZU91PXc9JkZkNSlaQ25eUEhtDQo+IFY0REZTDQo+IHo7TDhpbVpSVyQ2
TDdnRU4jX2UoZj9TbnF3S1JrJkZNXj5XU2JBI3dVYHx5QzxefSRCUVhaN2htejsoSTUNCj4gQXpZ
VEINCj4gelRvMkd0I3lzR2FHVSRgRlZSVTs9MDlfbUVEc3tzS1k7aypDVzgxU0JCajV1QXpRQ3V5
OTgxaURHM1ZULQ0KPiBPYDllPg0KPiB6Jkw0fiZKTkRfKW5VZzkxP2ZQYCVWOyRYSDkhbUd0Z3dl
ZkteJSE7Tz9nfTBrT3VNX1I0JjdaXmh3ZHo/DQo+IE8/TVdYDQo+IHpmTjNhYEptNmhYU0lYWDcl
e297WVdRc29ZcUdPfSM2S3VnSTxeP3wtDQo+IEVuIzAhMmxOQlJsSHJNRmlOVmsxU1o2U0ENCj4g
ejB7Wm1uYk1PODQtDQo+ICsjSjxePDVhXk5qRTxBcXVVRT5OIzc5UG8qelFEdlYhVD55cWZlS19z
NGcwMF9uVGlmcGx8TA0KPiB6ME50RXYwO1p1JUAtDQo+IFhrTSUkanM3SjZQKF8+cyR+Kk1VI0Ij
IVhPV1YmMmkoI0p3cU1YN3hWK2g2Nk9QWkR8S0NCDQo+IHpJPnRRS0VuU1p1SkBVezcmfnQ5RUN0
WGtUckpFVCs1O3RaQSh2MkFiUjVhYjZpYXhEUSpDK2M/O1VwZ197RnBJDQo+IE8NCj4gek43cDhK
KTNweClGQlAwLQ0KPiA4cF48UG9xZEUxV1Q2QVBabGQxTUtQTzE/b0VAT2wwWTBjPjNHKUdTVEV+
RW9DRlRPdA0KPiB6Rm01WEljd2RiJTI7V2NqdHchSWJkUXN0Jj5JJTNYKkN6VlZScmNATzQ/Tzlj
X2RNdUkzYT0rKS0NCj4gMEFZQERzKntODQo+IHo3NWFMRjgrfD56YXhxNDVuclNFbDR8dVA8UTtv
aEU9Zk9JPnFeQGhJSkx9ZiRlRVlzOW8kT3N6XzUqeFQ9a3heag0KPiB6NCp+WkZxakFKfXcwLSRi
b2pTZGFicTRiJmNXXmo7I1d1ZWc/P3ZDUm9oJDY/PCpgLQ0KPiBpPihURD83NWo1KFhsMSVNDQo+
IHp4RlRIYDs3YUhGeHpQRE8mVUNKfjZQQGVuTmF1UE8wQ3xBUnp5bl4kVHBWMFU+VlBpanlxcj1e
K0pHKEsoDQo+IHJgRCoNCj4gejlUWUNfNjxDK2x3SDViPUFvdlFPd0YkcyEleCFtYHVWPUIyWjZC
T09YTD5yKHJJR0g4RHMqdn04PVlyKz0NCj4gTFNAeQ0KPiB6dndkQ1lPZk0lby0NCj4gUUFIK2Iq
big5eHxGQXJveXlWNGpeKmU/MllXajRucUJHT0dWcCpHR0xWSWl2JVE/OSZockRnDQo+IHpFcndL
KndxVzwtaCReeGl6UThCa0FLMXNxNEJWJSYqTzBIaklGQGJDPDgxaUlrdDNmaG8tDQo+IHZ2NytM
b3RQOVYqbEUNCj4gel9MWFRfK2UpO3d3SlItDQo+IGM9fFc0SUpKYUgxQ3RCM2hrcnBMNyhCZ3km
Ymc7UHtlYzk1UXpIR3MwWmJlX2JRVzhnKg0KPiB6d20haip2ZzY3dFhrM0FeOCN+Wl4qMENWVGty
cDsleXt0UjhPR1BAPmdXSU1Md145RiFiZiZLPjwrcmdWDQo+IF89SXQhDQo+IHotDQo+IGx3dEd6
PE1QNmZNYmslSChxYVU7YTwzUFAhYipNUD1PQW1eYGFZdipYWmBgK2h5WUImNl9sRFkoTHIlWEcN
Cj4gQDBADQo+IHpFYT53bD1BfmtEeWU7a0J4UTYoZnlFMVg8PXpqWFZMcSQ2RlN+PCReU2V9a3xh
aUReKGomIVZqSWY3NXtPPGoqQg0KPiB6dkFAeyFWYyFiaFpGbkN4MnlNVEo+dl8xVDYmLQ0KPiBD
P2oqaG5GeyhkSyF7JlYqUkBwcGFuP0NEY15iYzkjfjJ2N2R9DQo+IHpsZVZ1fEs9WSE/KTRvUkxi
Zys/YDUleEIrcGppWGpPRnItDQo+ICQlNCN9KWB7QFZEPm01cG1uXzFFNCYyMT5KcjdheksNCj4g
eilzRnFKbXdwXmR2THlKWF81dD5NeSVeUXVKRUpfO1l2KUhGZWVgcmctDQo+IHozVXlZRTZlJiRE
dzIhbkxnNmxrOFlqRg0KPiB6RXpeSV5wS35YVSkxKmU4dkBfYkFfQ15hbXJwSCNIaFkjK1Rra3so
K2wtDQo+IHJ7cXdIeGheR3A3VE1FJEJjS09GRWNuDQo+IHpyVEQ9PHo/WHdiUnNgUiQ9aV9tSG0z
X3dFeURvZlpSTmArJXxHPThGdm5rKWw2UmM8LQ0KPiAoQWJqcCMjenVGWm9ocF4NCj4gej9DSHxW
WTVGI1Y/YjU9N2B9Yio1cnYleSVWTD5eT2Y+dVVZUXtMXyFyTGpzSGB0ezw8OE1NMmg4U1JjJXVx
DQo+IFZiYA0KPiB6K0p0VFJBYm53ZmJ+ZGRqKkNPbl8qPUlhSUIqNkVzVUF3LUR2OW59aTNoaihD
cnlUWS0NCj4gQyZxJHlhWGFwNlh3RWI8DQo+IHorOE4yPHZpeHlmPSRBKGlPTjs/KzkzWCFEK2kk
ZXMhPyRUfXMxP2xeKDIzQiNTfDduX0VlK3FWOUAkSH47Pnl2RQ0KPiB6MjB9dkdrKyNnRlpUSjlS
YSQrcntlZldxbXEmQEBUZSYpJHpDa3RhfDx5IyRUVFo5PkhZb0cjWSNANzB4DQo+IDd+ejhVDQo+
IHpjZGtQWnViZU0pSml0SHJkXzM8RUpeSkIkckpkQ304MmJPaXRzOWluTj1JOCtyeWQ1anElUzde
eig8VEJKamIhYA0KPiB6bTstKmk9NU5GTHh+NC0NCj4gSVo0TlZ8JkVicU5MN05Pd2tNam9EN1V4
NyljQzM9flN+fmNXbXB9amJvJVopakZ3JHdMDQo+IHotX1NPRVFHN0JaX3l9THxFWHV5KWN7K2dv
LQ0KPiB2UWRIX0Y9QHxKaWpuTDMkdmkoUSVCUzl6eTEyJHpBJFdhRSZjaUENCj4gemt1UGs9Jj9v
b15Vd0lDSCVmOEZ8ME1DYWFwMWFSaE40cFN6eEJiJUMqRWZNNC1uZ2I7Vj07YS0NCj4gS1RYcFpe
TFo7Vw0KPiB6WD5DMnJtJG4xbjszTCk8WnU2aG1mMUdYOTtrRDs/Slp0bEo9WUpkUDs7WWQ0eTw3
ZnJKaS01MiF+NCpAVEdvSHQNCj4gejdKUzgtZnZOdz9nOVJCTyNFZ34kcnUwKHMlUjxjUSF7IWxr
ZUtsPSEpNHVyZ2szVlJgezB5MnspMUg8RnxBcWNpDQo+IHo+PksjNmppMmluS1pfJUhlLWs3bW1J
ai0lWlVzd2Zudm91QXh5RlpoRj1KZXZOXzRhNnhfKWdtXiUtDQo+ID9DdD1ILU4NCj4gekZEV0o1
bE5KUC0NCj4gPitNUnQyS0x+Q3c1ezVPa0x2ak9rPXRMSnpnc1hUN1BKYlpnI2tpaGFaTzdDN1Mq
KCVNWFZvSw0KPiB6Ny0NCj4gJmB1bEBJKE0xPXtta2QwM0E1bSVaU0FfZCl4bkclTFdPU1UyMHpZ
KWJwPWdYUn19Uk0oJSY/N3YoO2RFDQo+IGQ0UA0KPiB6dn1gV1J0fDI1QSowUUNBQXZWT24pOE97
OHIxP1A+RyhYVD5CMElwMEcpJTMqYF54TiQ1XlpiUHt0cz9HemgNCj4gQyV3DQo+IHo2RXkkaF9o
fns2VGduYnA/WFclQW1HOz5PJWBmPDxgaFNXMm0tDQo+IGpFOCVkPkkrJUllcFY9MmFJRzNxeUhk
VGYwMlgNCj4gejU4KnY7TyZpSnp3NCRzNE9VbVNTJUIqMjdHMFdlQXJWWj0mKyViUm8kTl5keT9u
KHVgPH4pNyFNMFN0DQo+IHFTT083Yw0KPiB6aGo7SSEoSUomK1pVRWIyZCQwQHBeSnxzVWB2bzZ5
fEg0QCVgIUR3b2Q/cHBvYC0NCj4gZVpYUXUkb1dTNGI/WlV6ejZEDQo+IHpiKkFqdjR3TXlBby0l
OU4oWSF6I24jPTd5KldaJDYpdiU8TFNFQWBSLQ0KPiBZYis5ZSFPPnc3UlVRWmVIbVFXeXtTWCMN
Cj4gelBqMmg3MEBrTFJIO1UtKCMwWipFdnopWT5VQl4tU3E0QDxMdjQ2bU1FQm1rUS0NCj4gKXlq
a1ZoKyEkP0xzcWtmKSspMg0KPiB6KCEkN1Vsd0dlOVchNzx+Y185dW9tdnY/WStSPCQ4PVRUdWti
b2I2fT41Nkg0QjlBQHcjKF5EYXJqTUJzDQo+IEh1aD5vDQo+IHpLUj51PEd+U0BaUHspNk17K1h0
WTk4OTBvc3pfT0VLUmN8bF5hO0xVP3k3NjI7cmBpQD1mR3plTCRmPDEoUjQ0DQo+IEsNCj4geiFf
aHZwcTtWaUVpMU1iYWFDZSRsbS0NCj4gYGorSDYxNz14SDZxVGIrVzh4bD1weG0zdWpUZnVPKzRY
U2RfcSRXXyg2Ow0KPiB6YFFtZiQ2O0Y2UFpDfF5KLQ0KPiBWT0pxZEVyJjFQdykrNjJXUTZJX0or
P2Q8fiM/d1U8X3FXb2xLdjQyK0NeVU1KcmxIDQo+IHooMn1JdXY+P2BCPUk0ZDZvLWh4fVMrfE9R
e3JSVjJ7UFpMSllKalc5em8zfmxvb0pmUSRfVWVhdFZ6T2AkMDYoYg0KPiB6PmNCMkpwMEYxeDN6
eUVIcWp3VmBYb3t5OSE4ZVFAb09gcVhgc1lWSCEqa3c+YHtmIyooUHAkeXFNMEdDdzUNCj4gQyVj
DQo+IHp0JFp6eG1iUXFYMSZ4QyNFNG4oKGpxOygpbT5RSkg+M0xEVUcmZlI1ezAkI3YpYzJxe1Zi
eTRNSiREfHYmTg0KPiBRdk0NCj4genl+ST5NSkFHUXh7TDlodzhzI1pIKDFCKzFfP1hYbjdiZSFg
PWpwb3FZI21PXlQxQz9HSHFvQFFlTFN0ew0KPiAodX4lOw0KPiB6KFNsfTJgVmY0QVpge3M1dSYr
a1hAMmRZc2Vla2g2LQ0KPiBeV0A7KGZTXihYPzIlbVRKYyZ1RXFiTHNLWFpyQnl5ek5+DQo+IHo1
JFF7Rj5VLQ0KPiAweXk0N2Ujb2htZT1SJUo+THUxTTJeVHFMRmlhdmNKPTQ+V0xJRCszPytBcVJR
cmZ4Z1VgMEk3ZEwNCj4gelFlOWZzSSkrd3RZRCRaZSF3SjNed0VjWWN6cl57OFNfZXorZ0NrZzly
P3BGPlM+WmFgR15pX1c5TUdCOF9rTg0KPiA5NQ0KPiB6Y1dYJlkrczR5XjxPc0BZUWl0WD4zWnsm
UDBXYGFUQUkrLQ0KPiBvTG9ANG4oVHV2RGxwYjEqKCg2PX1tfG9qbXA5VVN9DQo+IHotDQo+IH4m
SjhBUCtzekhAfDUoRXEqbklSKDVKOD9RUTdPTEdyPkVfPUt+Ml84cDxiYElYaU97NENSRyRkRG07
bVZCDQo+IDFoDQo+IHpJRSlzKCtLNl8oXkE+RiMpc0hwfT19em5XYil3YTh3eE1PKnA5QD5ZNWRX
VCNHODV8MitfPjc1NWdTNXQNCj4gcUp3QzUNCj4geiEkNnVINitwOGhZdl9TST1xTHZ0XyNwQFIx
PGYxTWxEM1UkV3RTR1R1MWBtNDJsZmBXaCRpQGVIM3cmRWMNCj4gPmxuQA0KPiB6PmxrKG57bi1f
Syo4PFptY3I4bERUJVB5b1dKO14rT0tiYlFQSjJJb2s4KGEzUDF7cjZxQWVyKSk1Zj1ZKHo/RSMN
Cj4gelgrX3NwWC1TNz53NGhaUyYySkd5Uzs8azkqfFkmPUNQbVBeI1FKKDU0PzQ9aDJtWnpGNUB+
cy0NCj4gN1BQdSZkLWBsfQ0KPiB6Y2N+WnBWUHtxTWJ+R3V9aHV7T3xFYnNTc3YyVntremNyYD4j
P2t0ZWwkMVpgdmkjS08rTyU8NFVwbUMrcTUNCj4gRyN5DQo+IHpwZ2tYdHFueTtTd0VmKT93Ql94
PXZ9dCVoVDBme2V0P3UyNFI9bkFjbVVaRGV6MjFUcndAOz07dVFpa0w7dHNGDQo+IFMNCj4geihv
UVhEZEFCeVNzeihQfStySnhhOU5JXzlMbDUqcEZaNkYxKHZ6ayh0Vk9WbV5JTj1zVkJmTGN7Tj8j
TT5jRCoNCj4gUg0KPiB6e1JQJHxLMGtpfkopZyNlKHF8KzMpMGQwMD10JVojSS1EX2A0eUxFa0tH
ZiV2ND04OEN5Uj44Yzd9YEU9Nm01TkgNCj4geklCaVdDTXE5PVhyN2RIKXpjQHg3YmQtDQo+IFkr
e0Uma0BeZ3RpPFpzMG1paUxON2skSnNydkh4Sm1LbXdKRHAqMT8/WA0KPiB6P1NuZEt7Vj0malZf
TU94R2t2KXZuK256fXJ+S3VNV2N0WDB4JTdHRkVJS3IySV8xdXFOKGEmPkd0eX1QXg0KPiBodmFU
DQo+IHorOXh0YjkoMHQwNUIhaldGNmNwZVNAKHtWKjFXTzQtRlkwfSEjZm9BfEUxbV44SF4peW1i
Sm9JIWhGRC17LQ0KPiBfMTcNCj4geiF8QEdoK1hwRmhBIWo/QytwJmV0WjI2MiVaQ3BudSpSU1Mh
dClTenBtUW50U0JfI2tsJUUxU0kkZXI4MW5ZDQo+IE88Nw0KPiB6SGNnTDxBbjMraSNkeWQyMmV5
c3pqeHFEbkA5enhpQW01KjJQR2VvZEkraWhJR0N5bF5KclpNUig+dFQtDQo+ICNRSFVLDQo+IHo8
IX4tDQo+IHRLNkhUWnNlOT90elRGWlJfdlZsV2pmUWdZNzRZNipRXzNoeFBsJVNmcGNBXlcmVHps
NFd9a0hveWxjVnYNCj4gej0zbDxeKCk9d2VXKnJ0LQ0KPiBUZSZaZXBmN01RZ3c2NDxCKzxDcXlq
Q18ocSYzM14oY2JoPT17V20jWTUhaWojP015KA0KPiB6KCludnYoJSRKKUJvQkJZMTZrO1JGNGw/
bl5rP3pAZm89VWBAMj9IKCErSjVFRVV7T0B5ZylzJD1mayo0ZT5hNg0KPiBiDQo+IHo+ZkRpMUJF
dXkzSHwqNWtNbzF2NyhaS149ajEkUGhafD5WJElKOy0NCj4gdnxGIVEyTn53bng+Y09AQCFgQHF+
MyZzRnwNCj4gekl2SVJGcCNRRXdeQkwhQEk1V24lSH5hMHp6JlkmUzlfTlBzeT1hPjQkXlBLajJH
MmxUcFY/ZldPJm85DQo+IEd7PCk1Tg0KPiB6MGh9JmsrNzhBeG9LQG55bTFWR3x6LUpvPCMoMWdz
KC0tanRlfFNSdm9gZ1R4bHokJjNTTGxDdHFXXm1gPEpJNWcNCj4geiNIcWlfO3FReD5VSDtCUml3
bHYqX2V6TlE0V3x+VEJGezVXaTs/flJJaSRpbDFBbFhvSD5naGBAPzF9Py0NCj4gZFpldw0KPiB6
JEhWTytmNSplXkI+eGheYz5lZWBtRExmKXhvVyR6Zk5XPkEtDQo+IEhtXkBxaHNhVlIhJWJkX3dx
TWRWQipBeWsmSjFLDQo+IHpiJk1oZ3NYIVZ1bHR1bXgpejF9U29nKX1VXkhjaU0pKjtPKXplZmxh
d3NXS2h0O3s1bDI1c3gkUnxxYGRoMEpyNg0KPiB6ekNhPUM9bTFeV1dCYiMkP1ZSWHRTOWBpUSpv
RSVEPVQ3KDJlQ1dZVWV+SjUoZWQrJFZzJnNGTjMqQ0wNCj4gZ3AxeTdDDQo+IHpOUlV6ZT08b3Vq
TzBkQkheYmZ8Kz41Zzc+eUlWUUImKSpaPXBVMjxpQFY1e1RtZWdVP1Ikfjc0TCNGdw0KPiA9M3pV
SGUNCj4genlwVnh4YHVsSWdrQyRvLQ0KPiA9M2tkTmJednxkKFV0Q2dxQCNRTTRafVZEN1VvXz9r
UGBGdjlRT2ReSEphcSVAMF5nSQ0KPiB6dD89SVkme09Kd0Y2YjsjJHg7YUxIRkhkVnk1OFFGWnU5
cDZjUnVsPEpOI1hSakZDMTQlSn07UEopUDZIYDh4PEwNCj4gemV+WjZgZkcrNiN0OUliPjQlNH5L
RkwxcVleN2paZ2BDQUJtJS0+U1RHPUMjOzZCckFDI3hjcT9YbkItDQo+IHJkfFU+ZA0KPiB6Jjx6
YDxSOWxqYHRtdHFEOWx0QkRMPGlyZnRWaXlmTkxRa3gtN0Nebns9VlZiS3Z5YXBSOGl1WiU9NyM3
Szl5KkgNCj4geng1XzFPcVBIN0s5e3g3ck5DJDcmRkRsSkcoP2ByNUdrYDk0PG5JPXleclEjKD8k
UXJHezl1RnxnOyF9Jkh+d35gDQo+IHozJX0jKT1CVVN8dUZrWjFfSntRNyhJWD89e2pQe2s1M2E1
N0AlIUAydVU4PTBmR3R4Vzs4JVZON3JNbW4NCj4gJDFnSXoNCj4gek5sQm56P2k3X2MzJldaMnFF
VEhienFKRWg8b0Q+e1VEQm1LO2F0bHc7TFAjY3NYYi0NCj4gNilYQlZ2VloqY3lJM0dGWg0KPiB6
P0UhUl8temxHYyNhNTNDVUEqYnhpMzI2aCkxWjZUa19fNkI8VX43fklANjctDQo+IFJ9NCl7e19D
STNEV09tNVcqZXt0DQo+IHpuXzMlaWRmSjlKVig0VE9EPnw4QVpHPS0NCj4gej9ka2Y7RGYpOXNM
cW5ITjlqRTxrNzgjT2NgcCRfJWJoMjNtTVBEZzgNCj4gelZHQX01PzYyRn16N2AjOFdKJm85I0sm
VVFTan1IfXc+PkBuUUYtDQo+IFREIWtfYCskMiZLdjs1RlozSip2RTNGWHYmNA0KPiB6P2QjVkFQ
OFNfYWFIUypCbUlgN0pUY3t7YkFNYWR+OSk1TUlNMU5ASnBZcXg2O29kT0B2WUhOI14qWj8NCj4g
KjA9NU80DQo+IHoyS0FASWtyczN+JTJKN3VFKDNAN0pDfnk/dm93PU5AdVA/TFkwZkpsYlRJTy0N
Cj4gXnt7PjN4aE1oWWdBckNRZ3RkezUNCj4gemJPQz56dCZIJmFAbmYxaHVvRz5NdXF7PHpaVWJ2
Y0g/ZCF8RTdxMHZNY0J+M2BxczJ4amdkQ1F3Z2BMTA0KPiB3S1RoZw0KPiB6V3l9WXxmYyVhbm5Z
MWp6TmlRI1RMTjVjaE94bDBsbiUxR1RyLTdYY2R4SkQrWT9yWnM9WiZlWU40Ji0NCj4geXBEPlhB
DQo+IHpgMUw9QUYzOXhQWEhVX0xNbjA1ZHE4R048elR4PHJ3eG5ZdCU0ejZHeVBfUDU1bXx3REY/
S1NoXkxnPQ0KPiB+SmlaSkENCj4gei0NCj4gWCRDISpoMkNnPyVzJWd5amZeaUVZbTsjXmI8fCor
PkV3RnNrJkpnWV9XYUFgND41eiZ3ekh1eE5fVDZHeS0NCj4gVGQNCj4gejZOMmJ4SzFWa1VYb29Z
fGxaPCV4dytXIztyO2U2ckJZWlFsPmVDNmRCQmx5fGdUd2JCdyNEfUs+a21kRGANCj4gZVN7eA0K
PiB6OHw1VkZYamM8WUJ+SjlGWkI2fj9pLWp8Jj0paExHZDJwTT1qUlZ7MEBgZ299KTZgZTtmP3Zi
IzxtejtKVHtoaTANCj4gem1hRjAqI3xQPXc3eURfPyUhI3hqKjJBZHApaFBoYEJjPWBTUHJGe0pM
QXpmS3Exfi0NCj4gKChWb198V2c3OXpMWCRVPw0KPiB6K20tDQo+IEIzdW1NfHxVQmVoe3UpTUs5
P2R7WiVAMXQ+YTtMWFBSXygxbjJebTBnJEA+MGhlQHdCJWlwWn5MTioNCj4gZjZ3ZA0KPiB6bkM3
dyRZNDQ3cSklPFNsXldtTjdATExffCgyKHxZY3hjQyQjXiluQ09CcFNPUFV3YVdMenx7KUUqfip2
DQo+IFNidGdADQo+IHo9fXZpWF9uYGE8IXhWZnRsPTVFISQwdkBFezZ8dUhPSV4/ai0NCj4gS08/
UiVRTjQpRE1TMHlrfDswQU9YKjh6PTY+Pz4NCj4gem1AfD0lajJrRipLb0BrRFd+KGUzZTRYXnA3
QEZJX283T2JxSVdTPWFvdFFxSiZTcClhXk5WTmxIKUUNCj4gT2YpdjljWA0KPiB6T1JLV3o7PDV9
YDF8SU9QWH5nZjhTUWF7N3dCRHdedSQrQVVOTXJ4ISled3Aye0VsaktgJG57SFNVMzcmOyUNCj4g
R1lsDQo+IHo+SEdZaCZJazB4TjI2JXAmfkNLKHdIVzVuKGNFQWNmKCo7IUlxMTNsWkVDWiRKcDZ+
UXc2X00oKVEmQUVvDQo+ICE/USsNCj4gejRzeFhvRkd+cmVLfD5qTVJKJCtLKlFNRGppXmg4WUU2
PDwkYnV8fSVSPmNDeEhxWlVkRjhqeCk3SnJSWUtGdA0KPiA3Zg0KPiB6JWxQZHNZfmZGZzgyQGZw
Q2xITGtxTCFvKm1wUT9YOSpoeDtiJk1odk5RMzU0TGNvQmFeM1pgVTkmfjxgQQ0KPiBLalo7DQo+
IHpRdnp3d3hFdl84NTFHRGhiJG1zLQ0KPiBLQXhaUnJtJFFvS3BBK3pZaFlHRD1QSkkoNn1ge2oq
fW5rNXRORnBQJDg3ZDENCj4genVlVDVYP3VZbDdqMD9tMz0qcjBJNXxAVG9yKCorc0J+QT1oPTt4
Vi0NCj4gPHA5fU0rbXJiX2AwU0ROcFB3R2RaeVpoQA0KPiB6Kyh8aC0NCj4gMHtGWGVVOzZCVzkr
SE17QUl7Q31DdXlLVmhVS1IqKSpXbz9OdkNgSSh6JFVoPkRQTlY8an1kdGR5b3wpDQo+IHpjel51
c0ZFVUBXWXE4YDM5ez9IMUdLIylALQ0KPiBHQCRlXk9HcCg2SDUwXzl5R2ROZXxQIV85ZT1aaW8o
SF47Vk9nTikNCj4gek5RZGZfLQ0KPiBecEsoQmMxdjg3MmtaTkFIdF4oPUl9YURRKHEyViRmKXdg
X098cm52TEswTDlEbng3NyVCVmI8S082cQ0KPiB6dEN3V0B7O2l2fHRaTzRaQTdvZndqO2w9eEk/
Q0BIRHpVdE9KTHg8MkF7Vm5ocUdOQTFwZ1VqZWt1PmEkUg0KPiA9K2NsDQo+IHpAP05oKWtZUmJX
QU5xajQ8bWF7SFoke0RhKWMkbU8ob2l9emFXSXxXSlclanZMcHReRzVJWGJlQ158RGANCj4gNnol
V0wNCj4gej9AcllJISNMdmZofio3RT1uUWAmYDYyKT5XSzcyM3k1LVNjYmFMUDtiWiU2OHsrXztW
MzdgeC0NCj4gRU5lNz1IOWdTRA0KPiB6cGx4bCE9PHtBbGJtOHF6NT1ldUZHVm9+cHJOdnpTUXVG
cl98THZuZmdXcyl8cnFocz8lNGU7KXlpITMxdml9RWsNCj4gQ3VDWG92DQo+IA0KPiBsaXRlcmFs
IDANCj4gSGNtVj9kMDAwMDENCj4gDQo+IGRpZmYgLS1naXQgYS92czIwMTIvbGl0ZWFnZW50L0xp
dGVBZ2VudC52Y3hwcm9qDQo+IGIvdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0K
PiBpbmRleCBiMTMzNTc2Li45NjdhM2ExIDEwMDY0NA0KPiAtLS0gYS92czIwMTIvbGl0ZWFnZW50
L0xpdGVBZ2VudC52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZj
eHByb2oNCj4gQEAgLTE5MywxMSArMTkzLDEzIEBADQo+ICAgICAgPC9DdXN0b21CdWlsZFN0ZXA+
DQo+ICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCj4gICAgPEl0ZW1Hcm91cD4NCj4gLSAgPC9J
dGVtR3JvdXA+DQo+ICsgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50
XExpdGVBZ2VudC5jcHAiIC8+DQo+ICsJPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+
IC0gIDwvSXRlbUdyb3VwPg0KPiArICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxp
dGVhZ2VudFxMaXRlQWdlbnQuaCIgLz4NCj4gKwk8L0l0ZW1Hcm91cD4NCj4gICAgPEl0ZW1Hcm91
cD4NCj4gLSAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3JjXHdpbjMyc3R1YmFnZW50
XG1lc3NhZ2VzLm1jIj4NCj4gKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3JjXGxp
dGVhZ2VudFxtZXNzYWdlcy5tYyI+DQo+ICAgICAgICA8RmlsZVR5cGU+RG9jdW1lbnQ8L0ZpbGVU
eXBlPg0KPiAgICAgICAgPENvbW1hbmQNCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPm1jDQo+ICUoRnVsbFBhdGgpPC9Db21tYW5kPg0K
PiAgICAgICAgPENvbW1hbmQNCj4gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj5tYw0KPiAlKEZ1bGxQYXRoKTwvQ29tbWFuZD4NCj4gQEAgLTIx
MCwxMCArMjEyLDEwIEBADQo+ICAgICAgPC9DdXN0b21CdWlsZD4NCj4gICAgPC9JdGVtR3JvdXA+
DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0gICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNcd2luMzJzdHViYWdlbnRcdzMyeGFnZW50LnJjIiAvPg0KPiArICAgIDxSZXNvdXJjZUNv
bXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFxsaXRlYWdlbnQucmMiIC8+DQo+ICAg
IDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAtICAgIDxJbWFnZSBJbmNsdWRlPSIu
LlwuLlxzcmNcd2luMzJzdHViYWdlbnRceGVuLmljbyIgLz4NCj4gKyAgICA8SW1hZ2UgSW5jbHVk
ZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFx4ZW4uaWNvIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0
cyIgLz4NCj4gICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCj4gZGlm
ZiAtLWdpdCBhL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gYi92czIwMTMv
bGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGluZGV4IGE4ZjU5YTMuLmMxYjVjNWQgMTAw
NjQ0DQo+IC0tLSBhL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gKysrIGIv
dnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0KPiBAQCAtMTk3LDExICsxOTcsMTMg
QEANCj4gICAgICA8L0N1c3RvbUJ1aWxkU3RlcD4NCj4gICAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
Pg0KPiAgICA8SXRlbUdyb3VwPg0KPiArICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XGxpdGVhZ2VudFxMaXRlQWdlbnQuY3BwIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAgPEl0
ZW1Hcm91cD4NCj4gKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRc
TGl0ZUFnZW50LmgiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3VwPg0KPiAt
ICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlwuLlxzcmNcd2luMzJzdHViYWdlbnRcbWVzc2Fn
ZXMubWMiPg0KPiArICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50
XG1lc3NhZ2VzLm1jIj4NCj4gICAgICAgIDxGaWxlVHlwZT5Eb2N1bWVudDwvRmlsZVR5cGU+DQo+
ICAgICAgICA8Q29tbWFuZA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+bWMNCj4gJShGdWxsUGF0aCk8L0NvbW1hbmQ+DQo+ICAgICAg
ICA8Q29tbWFuZA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPm1jDQo+ICUoRnVsbFBhdGgpPC9Db21tYW5kPg0KPiBAQCAtMjE0LDEwICsy
MTYsMTAgQEANCj4gICAgICA8L0N1c3RvbUJ1aWxkPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAg
PEl0ZW1Hcm91cD4NCj4gLSAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x3
aW4zMnN0dWJhZ2VudFx3MzJ4YWdlbnQucmMiIC8+DQo+ICsgICAgPFJlc291cmNlQ29tcGlsZSBJ
bmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50XGxpdGVhZ2VudC5yYyIgLz4NCj4gICAgPC9JdGVt
R3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0gICAgPEltYWdlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1x3aW4zMnN0dWJhZ2VudFx4ZW4uaWNvIiAvPg0KPiArICAgIDxJbWFnZSBJbmNsdWRlPSIuLlwu
LlxzcmNcbGl0ZWFnZW50XHhlbi5pY28iIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0K
PiAgICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KPiAtLQ0KPiAxLjku
NC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4t
cHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:06:46 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:06:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgve-0002uQ-Dg; Wed, 22 Jun 2016 12:06:46 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgvd-0002uK-91
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:06:45 +0000
Received: from [85.158.139.211] by server-1.bemta-5.messagelabs.com id
 E6/C1-26908-45F7A675; Wed, 22 Jun 2016 12:06:44 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQje4Piv
 c4MIBI4s/ixMdGD0Of7jCEsAYxZqZl5RfkcCaceTgXMaC9t2MFU+2PWJsYLywg7GLkZNDQsBP
 4sLrr8wgNpuAjsTSo/OZQGwRgQKJ7+/ngcWZBdQkru/vYgWxhQUsJOZOvQTUyw5UYynxib+Lk
 QPIMpJoXKMLUsAioCrx5OkdsGJeAXeJ3kOtQMVcHEICDYwSna/+gG3lFHCTuNLyAmwTo4CsxJ
 fG1VCbxCVuPYG4QEJAQGLJnvPMELaoxMvH/1ghbAOJrUv3sYDsZRbQlFi/Sx+iVVFiSvdDdoi
 9ghInZz5hAbGFBFQktjw+ADWGW2Ll5z8sExhFZyHZNgth0iwkk2YhmbSAkWUVo0ZxalFZapGu
 kaFeUlFmekZJbmJmjq6hgalebmpxcWJ6ak5iUrFecn7uJkZgnNQzMDDuYLw72e8QoyQHk5Ior
 7xyVrgQX1J+SmVGYnFGfFFpTmrxIUYZDg4lCd5f1UA5waLU9NSKtMwcYMTCpCU4eJREeE1A0r
 zFBYm5xZnpEKlTjIpS4rybQBICIImM0jy4NliSuMQoKyXMy8jAwCDEU5BalJtZgir/ilGcg1F
 JmNeiBmgKT2ZeCdz0V0CLmYAWL+tPB1lckoiQkmpgbOU3Y9S5M0fXua3TOCUkODuhxPyv/MP6
 7SvbXwT5+kp8KJ3a71v488kDza029ka+d422Hjh1O/zYu4TIonkvwzUCZi0wntTDyrxtt8Zsl
 cvhfJYJR9KjyhVMF+eZ77gnpbrP9MAqnoiHS35X7nOvFlizf9q6pL4ve2bsvd9rl8awxZkjp2
 yNEktxRqKhFnNRcSIAGuQX3Q0DAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1466597203!33953545!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 44566 invoked from network); 22 Jun 2016 12:06:43 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:06:43 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24784360"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 06/20] Add DeviceList
Thread-Index: AQHRtcfp0/pIEiUjnUGbXE8N7Blpw5/1kYHA
Date: Wed, 22 Jun 2016 12:06:42 +0000
Message-ID: <69fc30d4c4384fb5a8f40631927722ab@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-7-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-7-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 06/20] Add DeviceList
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDYvMjBdIEFkZCBEZXZpY2VMaXN0DQo+IA0KPiBDRGV2aWNl
TGlzdCBtYW5hZ2VzIHRoZSBkZXZpY2UgY2hhbmdlIG5vdGlmaWNhdGlvbnMsIGFuZA0KPiBTZXR1
cEFwaSBlbnVtZXJhdGlvbi4gQWRkIGEgY2xhc3MgaW5oZXJpdGVkIGZyb20gQ0RldmljZSBhbmQN
Cj4gaW1wbGVtZW50IElEZXZpY2VDcmVhdG9yIHRvIGFkZCBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5
DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+
DQoNCkFja2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+
IC0tLQ0KPiAgc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCAgICAgICB8IDI3OQ0KPiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L0Rldmlj
ZUxpc3QuaCAgICAgICAgIHwgIDg5ICsrKysrKysrKysrKw0KPiAgc3JjL2xpdGVhZ2VudC9MaXRl
QWdlbnQuY3BwICAgICAgICB8ICAxMiArLQ0KPiAgc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaCAg
ICAgICAgICB8ICAgOSArLQ0KPiAgdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvaiB8
ICAgMiArDQo+ICB2czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgICAyICsNCj4g
IDYgZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcA0KPiAgY3JlYXRl
IG1vZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oDQo+IA0KPiBkaWZmIC0tZ2l0
IGEvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlz
dC5jcHANCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uMWNiM2JmNg0K
PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHANCj4g
QEAgLTAsMCArMSwyNzkgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5j
Lg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBvciB3aXRo
b3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICogICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAg
ICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiArICogICAg
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0KPiArICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+
ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiArICogQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+ICsg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+ICsgKi8N
Cj4gKw0KPiArI2luY2x1ZGUgPHdpbmRvd3MuaD4NCj4gKyNpbmNsdWRlIDxzdHJpbmc+DQo+ICsj
aW5jbHVkZSA8c2V0dXBhcGkuaD4NCj4gKyNwcmFnbWEgY29tbWVudCAobGliICwgInNldHVwYXBp
LmxpYiIgKQ0KPiArDQo+ICsjaW5jbHVkZSAiRGV2aWNlTGlzdC5oIg0KPiArDQo+ICsvLyBkZWFs
IHdpdGggU2V0dXBBcGkgYW5kIFJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uIHVzaW5nIGRpZmZl
cmVudCBzdHJpbmcNCj4gdHlwZXMNCj4gK3N0YXRpYyBzdGQ6OndzdHJpbmcgQ29udmVydChjb25z
dCBjaGFyKiBzdHIpDQo+ICt7DQo+ICsgICAgc3RkOjp3c3RyaW5nIHdzdHI7DQo+ICsgICAgd3N0
ci5yZXNlcnZlKHN0cmxlbihzdHIpICsgMSk7DQo+ICsgICAgTXVsdGlCeXRlVG9XaWRlQ2hhcihD
UF9BQ1AsIDAsIHN0ciwgLTEsIChMUFdTVFIpd3N0ci5kYXRhKCksDQo+IChpbnQpd3N0ci5jYXBh
Y2l0eSgpKTsNCj4gKyAgICByZXR1cm4gd3N0cjsNCj4gK30NCj4gKw0KPiArc3RhdGljIHN0ZDo6
d3N0cmluZyBDb252ZXJ0KGNvbnN0IHdjaGFyX3QqIHdzdHIpDQo+ICt7DQo+ICsgICAgcmV0dXJu
IHN0ZDo6d3N0cmluZyh3c3RyKTsNCj4gK30NCj4gKw0KPiArQ0RldmljZTo6Q0RldmljZShjb25z
dCB3Y2hhcl90KiBwYXRoKSA6DQo+ICsgICAgbV9oYW5kbGUoSU5WQUxJRF9IQU5ETEVfVkFMVUUp
LCBtX3BhdGgocGF0aCksIG1fbm90aWZ5KE5VTEwpDQo+ICt7DQo+ICt9DQo+ICsNCj4gK0NEZXZp
Y2U6On5DRGV2aWNlKCkNCj4gK3sNCj4gKyAgICBDbG9zZSgpOw0KPiArfQ0KPiArDQo+ICtIQU5E
TEUgQ0RldmljZTo6T3BlbihIQU5ETEUgc3ZjKQ0KPiArew0KPiArICAgIENsb3NlKCk7DQo+ICsN
Cj4gKyAgICBtX2hhbmRsZSA9IENyZWF0ZUZpbGVXKG1fcGF0aC5jX3N0cigpLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJ
VEUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT1BFTl9FWElTVElORywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgICBpZiAo
bV9oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQo+ICsgICAgICAgIHJldHVybiBJTlZB
TElEX0hBTkRMRV9WQUxVRTsNCj4gKw0KPiArICAgIERFVl9CUk9BRENBU1RfSEFORExFIGRldmhk
bCA9IHsgMCB9Ow0KPiArICAgIGRldmhkbC5kYmNoX3NpemUgPSBzaXplb2YoZGV2aGRsKTsNCj4g
KyAgICBkZXZoZGwuZGJjaF9kZXZpY2V0eXBlID0gREJUX0RFVlRZUF9IQU5ETEU7DQo+ICsgICAg
ZGV2aGRsLmRiY2hfaGFuZGxlID0gbV9oYW5kbGU7DQo+ICsNCj4gKyAgICBtX25vdGlmeSA9IFJl
Z2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uKHN2YywgJmRldmhkbCwNCj4gREVWSUNFX05PVElGWV9T
RVJWSUNFX0hBTkRMRSk7DQo+ICsgICAgaWYgKG1fbm90aWZ5ID09IE5VTEwpIHsNCj4gKyAgICAg
ICAgQ2xvc2UoKTsNCj4gKyAgICAgICAgcmV0dXJuIElOVkFMSURfSEFORExFX1ZBTFVFOw0KPiAr
ICAgIH0NCj4gKw0KPiArICAgIHJldHVybiBtX2hhbmRsZTsNCj4gK30NCj4gKw0KPiArdm9pZCBD
RGV2aWNlOjpDbG9zZSgpDQo+ICt7DQo+ICsgICAgaWYgKG1faGFuZGxlID09IElOVkFMSURfSEFO
RExFX1ZBTFVFKQ0KPiArICAgICAgICByZXR1cm47DQo+ICsgICAgQ2xvc2VIYW5kbGUobV9oYW5k
bGUpOw0KPiArICAgIG1faGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7DQo+ICt9DQo+ICsN
Cj4gK2Jvb2wgQ0RldmljZTo6SW9jdGwoRFdPUkQgaW9jdGwsIHZvaWQqIGluLCBEV09SRCBpbnN6
LCB2b2lkKiBvdXQsIERXT1JEDQo+IG91dHN6LCBEV09SRCogYnl0ZXMpDQo+ICt7DQo+ICsgICAg
aWYgKG1faGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQ0KPiArICAgICAgICByZXR1cm4g
ZmFsc2U7DQo+ICsNCj4gKyAgICBpZiAoIURldmljZUlvQ29udHJvbChtX2hhbmRsZSwgaW9jdGws
IGluLCBpbnN6LCBvdXQsIG91dHN6LCBieXRlcywgTlVMTCkpDQo+ICsgICAgICAgIHJldHVybiBm
YWxzZTsNCj4gKw0KPiArICAgIHJldHVybiB0cnVlOw0KPiArfQ0KPiArDQo+ICtDRGV2aWNlTGlz
dDo6Q0RldmljZUxpc3QoY29uc3QgR1VJRCYgaXRmKSA6DQo+ICsgICAgbV9ndWlkKGl0ZiksIG1f
bm90aWZ5KE5VTEwpLCBtX2hhbmRsZShOVUxMKSwgbV9pbXBsKE5VTEwpDQo+ICt7DQo+ICt9DQo+
ICsNCj4gK0NEZXZpY2VMaXN0Ojp+Q0RldmljZUxpc3QoKQ0KPiArew0KPiArICAgIFN0b3AoKTsN
Cj4gK30NCj4gKw0KPiArYm9vbCBDRGV2aWNlTGlzdDo6U3RhcnQoSEFORExFIGhhbmRsZSwgSURl
dmljZUNyZWF0b3IqIGltcGwpDQo+ICt7DQo+ICsgICAgU3RvcCgpOw0KPiArDQo+ICsgICAgbV9o
YW5kbGUgPSBoYW5kbGU7DQo+ICsgICAgbV9pbXBsID0gaW1wbDsNCj4gKw0KPiArICAgIERFVl9C
Uk9BRENBU1RfREVWSUNFSU5URVJGQUNFIGRldiA9IHsgMCB9Ow0KPiArICAgIGRldi5kYmNjX3Np
emUgPSBzaXplb2YoZGV2KTsNCj4gKyAgICBkZXYuZGJjY19kZXZpY2V0eXBlID0gREJUX0RFVlRZ
UF9ERVZJQ0VJTlRFUkZBQ0U7DQo+ICsgICAgZGV2LmRiY2NfY2xhc3NndWlkID0gbV9ndWlkOw0K
PiArDQo+ICsgICAgbV9ub3RpZnkgPSBSZWdpc3RlckRldmljZU5vdGlmaWNhdGlvbkEoaGFuZGxl
LCAmZGV2LA0KPiBERVZJQ0VfTk9USUZZX1NFUlZJQ0VfSEFORExFKTsNCj4gKyAgICBpZiAobV9u
b3RpZnkgPT0gTlVMTCkNCj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgICAgSERF
VklORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbzsNCj4gKyAgICBTUF9ERVZJQ0Vf
SU5URVJGQUNFX0RBVEEgICAgICAgICAgICBpdGY7DQo+ICsgICAgUFNQX0RFVklDRV9JTlRFUkZB
Q0VfREVUQUlMX0RBVEEgICAgZGV0YWlsOw0KPiArICAgIFVMT05HICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlkeDsNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsZW47DQo+ICsNCj4gKyAgICBpbmZvID0gU2V0dXBEaUdldENsYXNzRGV2cygmbV9ndWlk
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBESUdDRl9QUkVTRU5UIHwgRElHQ0ZfREVWSUNFSU5URVJGQUNFKTsNCj4gKyAgICBpZiAo
aW5mbyA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gKyAgICAgICAgcmV0dXJuIHRydWU7IC8v
IG5vbiBmYXRhbCwganVzdCBtaXNzaW5nIGFscmVhZHkgcHJlc2VudCBkZXZpY2UocykNCj4gKw0K
PiArICAgIGl0Zi5jYlNpemUgPSBzaXplb2YoU1BfREVWSUNFX0lOVEVSRkFDRV9EQVRBKTsNCj4g
KyAgICBmb3IgKGlkeCA9IDA7DQo+ICsgICAgICAgIFNldHVwRGlFbnVtRGV2aWNlSW50ZXJmYWNl
cyhpbmZvLCBOVUxMLCAmbV9ndWlkLCBpZHgsICZpdGYpOw0KPiArICAgICAgICArK2lkeCkgew0K
PiArICAgICAgICBTZXR1cERpR2V0RGV2aWNlSW50ZXJmYWNlRGV0YWlsKGluZm8sDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZiwNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmxlbiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMKTsNCj4gKyAgICAgICAgZGV0YWlsID0gKFBTUF9ERVZJQ0VfSU5URVJGQUNFX0RF
VEFJTF9EQVRBKW5ldyBCWVRFW2xlbl07DQo+ICsgICAgICAgIGlmIChkZXRhaWwgPT0gTlVMTCkN
Cj4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICBkZXRhaWwtPmNiU2l6ZSA9IHNp
emVvZihTUF9ERVZJQ0VfSU5URVJGQUNFX0RFVEFJTF9EQVRBKTsNCj4gKyAgICAgICAgaWYgKFNl
dHVwRGlHZXREZXZpY2VJbnRlcmZhY2VEZXRhaWwoaW5mbywNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZiwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZW4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwpKSB7DQo+ICsgICAgICAgICAgICBPbkRldmljZUFkZGVkKENv
bnZlcnQoKGNvbnN0IGNoYXIqKWRldGFpbC0+RGV2aWNlUGF0aCkpOw0KPiArICAgICAgICB9DQo+
ICsgICAgICAgIGRlbGV0ZSBbXSBkZXRhaWw7DQo+ICsgICAgICAgIGl0Zi5jYlNpemUgPSBzaXpl
b2YoU1BfREVWSUNFX0lOVEVSRkFDRV9EQVRBKTsNCj4gKyAgICB9DQo+ICsgICAgU2V0dXBEaURl
c3Ryb3lEZXZpY2VJbmZvTGlzdChpbmZvKTsNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gK30NCj4g
Kw0KPiArdm9pZCBDRGV2aWNlTGlzdDo6U3RvcCgpDQo+ICt7DQo+ICsgICAgaWYgKG1fbm90aWZ5
ICE9IE5VTEwpDQo+ICsgICAgICAgIFVucmVnaXN0ZXJEZXZpY2VOb3RpZmljYXRpb24obV9ub3Rp
ZnkpOw0KPiArICAgIG1fbm90aWZ5ID0gTlVMTDsNCj4gKw0KPiArICAgIGZvciAoRGV2aWNlTWFw
OjppdGVyYXRvciBpdCA9IG1fZGV2cy5iZWdpbigpOw0KPiArICAgICAgICAgICAgaXQgIT0gbV9k
ZXZzLmVuZCgpOw0KPiArICAgICAgICAgICAgKytpdCkgew0KPiArICAgICAgICBkZWxldGUgaXQt
PnNlY29uZDsNCj4gKyAgICB9DQo+ICsgICAgbV9kZXZzLmNsZWFyKCk7DQo+ICt9DQo+ICsNCj4g
K3ZvaWQgQ0RldmljZUxpc3Q6Ok9uRGV2aWNlRXZlbnQoRFdPUkQgZXZ0LCBMUFZPSUQgZGF0YSkN
Cj4gK3sNCj4gKyAgICBQREVWX0JST0FEQ0FTVF9IRFIgICAgICAgICAgICAgIGhkcjsNCj4gKyAg
ICBQREVWX0JST0FEQ0FTVF9ERVZJQ0VJTlRFUkZBQ0UgIGl0ZjsNCj4gKyAgICBQREVWX0JST0FE
Q0FTVF9IQU5ETEUgICAgICAgICAgIGhkbDsNCj4gKw0KPiArICAgIGhkciA9IChQREVWX0JST0FE
Q0FTVF9IRFIpZGF0YTsNCj4gKyAgICBzd2l0Y2ggKGV2dCkgew0KPiArICAgIGNhc2UgREJUX0RF
VklDRUFSUklWQUw6DQo+ICsgICAgICAgIGlmIChoZHItPmRiY2hfZGV2aWNldHlwZSA9PSBEQlRf
REVWVFlQX0RFVklDRUlOVEVSRkFDRSkgew0KPiArICAgICAgICAgICAgaXRmID0gKFBERVZfQlJP
QURDQVNUX0RFVklDRUlOVEVSRkFDRSloZHI7DQo+ICsgICAgICAgICAgICBPbkRldmljZUFkZGVk
KENvbnZlcnQoKGNvbnN0IHdjaGFyX3QqKWl0Zi0+ZGJjY19uYW1lKSk7DQo+ICsgICAgICAgIH0N
Cj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIERCVF9ERVZJQ0VRVUVSWVJFTU9W
RToNCj4gKyAgICAgICAgaWYgKGhkci0+ZGJjaF9kZXZpY2V0eXBlID09IERCVF9ERVZUWVBfSEFO
RExFKSB7DQo+ICsgICAgICAgICAgICBoZGwgPSAoUERFVl9CUk9BRENBU1RfSEFORExFKWhkcjsN
Cj4gKyAgICAgICAgICAgIE9uRGV2aWNlUXVlcnlSZW1vdmUoaGRsLT5kYmNoX2hhbmRsZSk7DQo+
ICsgICAgICAgIH0NCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIERCVF9ERVZJ
Q0VSRU1PVkVQRU5ESU5HOg0KPiArICAgICAgICBpZiAoaGRyLT5kYmNoX2RldmljZXR5cGUgPT0g
REJUX0RFVlRZUF9IQU5ETEUpIHsNCj4gKyAgICAgICAgICAgIGhkbCA9IChQREVWX0JST0FEQ0FT
VF9IQU5ETEUpaGRyOw0KPiArICAgICAgICAgICAgVW5yZWdpc3RlckRldmljZU5vdGlmaWNhdGlv
bihoZGwtPmRiY2hfaGRldm5vdGlmeSk7DQo+ICsgICAgICAgICAgICBPbkRldmljZVJlbW92ZWQo
aGRsLT5kYmNoX2hhbmRsZSk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgYnJlYWs7DQo+ICsN
Cj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICt9DQo+ICsN
Cj4gK0NEZXZpY2UqIENEZXZpY2VMaXN0OjpHZXRGaXJzdERldmljZSgpDQo+ICt7DQo+ICsgICAg
RGV2aWNlTWFwOjppdGVyYXRvciBpdCA9IG1fZGV2cy5iZWdpbigpOw0KPiArICAgIGlmIChpdCA9
PSBtX2RldnMuZW5kKCkpDQo+ICsgICAgICAgIHJldHVybiBOVUxMOw0KPiArICAgIHJldHVybiBp
dC0+c2Vjb25kOw0KPiArfQ0KPiArDQo+ICt2b2lkIENEZXZpY2VMaXN0OjpPbkRldmljZUFkZGVk
KGNvbnN0IHN0ZDo6d3N0cmluZyYgcGF0aCkNCj4gK3sNCj4gKyAgICBDRGV2aWNlKiBkZXY7DQo+
ICsgICAgaWYgKG1faW1wbCA9PSBOVUxMKQ0KPiArICAgICAgICBkZXYgPSBuZXcgQ0RldmljZShw
YXRoLmNfc3RyKCkpOw0KPiArICAgIGVsc2UNCj4gKyAgICAgICAgZGV2ID0gbV9pbXBsLT5DcmVh
dGUocGF0aC5jX3N0cigpKTsNCj4gKyAgICBpZiAoZGV2ID09IE5VTEwpDQo+ICsgICAgICAgIHJl
dHVybjsgLy8gY3JlYXRlIGZhaWxlZA0KPiArDQo+ICsgICAgSEFORExFIGhhbmRsZSA9IGRldi0+
T3BlbihtX2hhbmRsZSk7DQo+ICsgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxV
RSkgew0KPiArICAgICAgICBkZWxldGUgZGV2Ow0KPiArICAgICAgICByZXR1cm47IC8vIG9wZW4g
ZmFpbGVkDQo+ICsgICAgfQ0KPiArDQo+ICsgICAgRGV2aWNlTWFwOjppdGVyYXRvciBpdCA9IG1f
ZGV2cy5maW5kKGhhbmRsZSk7DQo+ICsgICAgaWYgKGl0ICE9IG1fZGV2cy5lbmQoKSkgew0KPiAr
ICAgICAgICBkZWxldGUgZGV2Ow0KPiArICAgICAgICByZXR1cm47DQo+ICsgICAgfQ0KPiArDQo+
ICsgICAgbV9kZXZzW2hhbmRsZV0gPSBkZXY7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgQ0RldmljZUxp
c3Q6Ok9uRGV2aWNlUXVlcnlSZW1vdmUoSEFORExFIGhhbmRsZSkNCj4gK3sNCj4gKyAgICBEZXZp
Y2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kZXZzLmZpbmQoaGFuZGxlKTsNCj4gKyAgICBpZiAoaXQg
PT0gbV9kZXZzLmVuZCgpKQ0KPiArICAgICAgICByZXR1cm47IC8vIHNwdXJpb3VzIGV2ZW50Pw0K
PiArDQo+ICsgICAgQ0RldmljZSogZGV2ID0gaXQtPnNlY29uZDsNCj4gKyAgICBkZXYtPkNsb3Nl
KCk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgQ0RldmljZUxpc3Q6Ok9uRGV2aWNlUmVtb3ZlZChIQU5E
TEUgaGFuZGxlKQ0KPiArew0KPiArICAgIERldmljZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RldnMu
ZmluZChoYW5kbGUpOw0KPiArICAgIGlmIChpdCA9PSBtX2RldnMuZW5kKCkpDQo+ICsgICAgICAg
IHJldHVybjsgLy8gc3B1cmlvdXMgZXZlbnQ/DQo+ICsNCj4gKyAgICBDRGV2aWNlKiBkZXYgPSBp
dC0+c2Vjb25kOw0KPiArICAgIGRlbGV0ZSBkZXY7DQo+ICsgICAgbV9kZXZzLmVyYXNlKGl0KTsN
Cj4gK30NCj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oIGIvc3JjL2xp
dGVhZ2VudC9EZXZpY2VMaXN0LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw
MDAwMC4uMTBkZjU0Ng0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvRGV2
aWNlTGlzdC5oDQo+IEBAIC0wLDAgKzEsODkgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4
IFN5c3RlbXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICog
d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiAr
ICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAq
ICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0K
PiArICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUNCj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICog
ICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
cg0KPiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+
ICsgKg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0K
PiArICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SDQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1B
R0UuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfREVWSUNFTElTVF9IXw0KPiArI2RlZmluZSBf
REVWSUNFTElTVF9IXw0KPiArDQo+ICsjaW5jbHVkZSA8d2luZG93cy5oPg0KPiArI2luY2x1ZGUg
PGRidC5oPg0KPiArI2luY2x1ZGUgPG1hcD4NCj4gKyNpbmNsdWRlIDxzdHJpbmc+DQo+ICsNCj4g
K2NsYXNzIENEZXZpY2UNCj4gK3sNCj4gK3B1YmxpYzoNCj4gKyAgICBDRGV2aWNlKGNvbnN0IHdj
aGFyX3QqIHBhdGgpOw0KPiArICAgIH5DRGV2aWNlKCk7DQo+ICsNCj4gKyAgICBIQU5ETEUgT3Bl
bihIQU5ETEUgc3ZjKTsNCj4gKyAgICB2b2lkIENsb3NlKCk7DQo+ICsNCj4gK3Byb3RlY3RlZDoN
Cj4gKyAgICBib29sIElvY3RsKERXT1JEIGlvY3RsLCB2b2lkKiBpbiwgRFdPUkQgaW5zeiwgdm9p
ZCogb3V0LCBEV09SRCBvdXRzeiwNCj4gRFdPUkQqIGJ5dGVzKTsNCj4gKw0KPiArcHJpdmF0ZToN
Cj4gKyAgICBzdGQ6OndzdHJpbmcgICAgbV9wYXRoOw0KPiArICAgIEhBTkRMRSAgICAgICAgICBt
X2hhbmRsZTsNCj4gKyAgICBIREVWTk9USUZZICAgICAgbV9ub3RpZnk7DQo+ICt9Ow0KPiArDQo+
ICtpbnRlcmZhY2UgSURldmljZUNyZWF0b3INCj4gK3sNCj4gKyAgICB2aXJ0dWFsIENEZXZpY2Uq
IENyZWF0ZShjb25zdCB3Y2hhcl90KiBwYXRoKSA9IDA7DQo+ICt9Ow0KPiArDQo+ICtjbGFzcyBD
RGV2aWNlTGlzdA0KPiArew0KPiArcHVibGljOg0KPiArICAgIENEZXZpY2VMaXN0KGNvbnN0IEdV
SUQmIGl0Zik7DQo+ICsgICAgfkNEZXZpY2VMaXN0KCk7DQo+ICsNCj4gKyAgICBib29sIFN0YXJ0
KEhBTkRMRSBzdmMsIElEZXZpY2VDcmVhdG9yKiBpbXBsKTsNCj4gKyAgICB2b2lkIFN0b3AoKTsN
Cj4gKyAgICB2b2lkIE9uRGV2aWNlRXZlbnQoRFdPUkQgZXZ0LCBMUFZPSUQgZGF0YSk7DQo+ICsg
ICAgQ0RldmljZSogR2V0Rmlyc3REZXZpY2UoKTsNCj4gKw0KPiArcHJpdmF0ZToNCj4gKyAgICB2
b2lkIE9uRGV2aWNlQWRkZWQoY29uc3Qgc3RkOjp3c3RyaW5nJiBwYXRoKTsNCj4gKyAgICB2b2lk
IE9uRGV2aWNlUXVlcnlSZW1vdmUoSEFORExFIGhhbmRsZSk7DQo+ICsgICAgdm9pZCBPbkRldmlj
ZVJlbW92ZWQoSEFORExFIGRldik7DQo+ICsNCj4gKyAgICB0eXBlZGVmIHN0ZDo6bWFwPCBIQU5E
TEUsIENEZXZpY2UqID4gRGV2aWNlTWFwOw0KPiArDQo+ICsgICAgR1VJRCAgICAgICAgbV9ndWlk
Ow0KPiArICAgIERldmljZU1hcCAgIG1fZGV2czsNCj4gKyAgICBIREVWTk9USUZZICBtX25vdGlm
eTsNCj4gKyAgICBIQU5ETEUgICAgICBtX2hhbmRsZTsNCj4gKyAgICBJRGV2aWNlQ3JlYXRvciog
bV9pbXBsOw0KPiArfTsNCj4gKw0KPiArI2VuZGlmDQo+ICsNCj4gZGlmZiAtLWdpdCBhL3NyYy9s
aXRlYWdlbnQvTGl0ZUFnZW50LmNwcCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBp
bmRleCA3OTIwZTliLi4xZWVjODdlIDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVB
Z2VudC5jcHANCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IEBAIC0zMyw2
ICszMyw3IEBADQo+ICAjaW5jbHVkZSA8d2luZG93cy5oPg0KPiANCj4gICNpbmNsdWRlICJMaXRl
QWdlbnQuaCINCj4gKyNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCINCj4gDQo+ICBpbnQgX19z
dGRjYWxsIFdpbk1haW4oSElOU1RBTkNFIGhJbnN0YW5jZSwgSElOU1RBTkNFIGlnbm9yZSwgTFBT
VFINCj4gbHBDbWRMaW5lLCBpbnQgbkNtZFNob3cpDQo+ICB7DQo+IEBAIC04Nyw2ICs4OCw3IEBA
IHN0YXRpYyBDTGl0ZUFnZW50IHNfc2VydmljZTsNCj4gICAgICBEZWxldGVTZXJ2aWNlKHN2Yyk7
DQo+ICAgICAgQ2xvc2VTZXJ2aWNlSGFuZGxlKHN2Yyk7DQo+ICAgICAgQ2xvc2VTZXJ2aWNlSGFu
ZGxlKG1ncik7DQo+ICsgICAgcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAgLypzdGF0aWMqLyBpbnQg
Q0xpdGVBZ2VudDo6U2VydmljZUVudHJ5KCkNCj4gQEAgLTExNCw3ICsxMTYsNyBAQCBzdGF0aWMg
Q0xpdGVBZ2VudCBzX3NlcnZpY2U7DQo+ICAgICAgcmV0dXJuIHNfc2VydmljZS5fX1NlcnZpY2VD
b250cm9sSGFuZGxlckV4KHJlcSwgZXZ0LCBkYXRhLCBjdHh0KTsNCj4gIH0NCj4gDQo+IC1DTGl0
ZUFnZW50OjpDTGl0ZUFnZW50KCkgOiBtX2hhbmRsZShOVUxMKQ0KPiArQ0xpdGVBZ2VudDo6Q0xp
dGVBZ2VudCgpIDogbV9oYW5kbGUoTlVMTCksDQo+IG1fZGV2cyhHVUlEX0lOVEVSRkFDRV9YRU5J
RkFDRSkNCj4gIHsNCj4gICAgICBtX3N0YXR1cy5kd1NlcnZpY2VUeXBlICAgICAgICA9IFNFUlZJ
Q0VfV0lOMzI7DQo+ICAgICAgbV9zdGF0dXMuZHdDdXJyZW50U3RhdGUgICAgICAgPSBTRVJWSUNF
X1NUQVJUX1BFTkRJTkc7DQo+IEBAIC0xMzIsMTkgKzEzNCwyNyBAQCBDTGl0ZUFnZW50Ojp+Q0xp
dGVBZ2VudCgpDQo+ICAgICAgQ2xvc2VIYW5kbGUobV9zdmNfc3RvcCk7DQo+ICB9DQo+IA0KPiAr
Lyp2aXJ0dWFsKi8gQ0RldmljZSogQ0xpdGVBZ2VudDo6Q3JlYXRlKGNvbnN0IHdjaGFyX3QqIHBh
dGgpDQo+ICt7DQo+ICsgICAgcmV0dXJuIG5ldyBDRGV2aWNlKHBhdGgpOw0KPiArfQ0KPiArDQo+
ICB2b2lkIENMaXRlQWdlbnQ6Ok9uU2VydmljZVN0YXJ0KCkNCj4gIHsNCj4gICAgICBDTGl0ZUFn
ZW50OjpMb2coIk9uU2VydmljZVN0YXJ0KClcbiIpOw0KPiArICAgIG1fZGV2cy5TdGFydChtX2hh
bmRsZSwgdGhpcyk7DQo+ICB9DQo+IA0KPiAgdm9pZCBDTGl0ZUFnZW50OjpPblNlcnZpY2VTdG9w
KCkNCj4gIHsNCj4gICAgICBDTGl0ZUFnZW50OjpMb2coIk9uU2VydmljZVN0b3AoKVxuIik7DQo+
ICsgICAgbV9kZXZzLlN0b3AoKTsNCj4gIH0NCj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2
aWNlRXZlbnQoRFdPUkQgZXZ0LCBMUFZPSUQgZGF0YSkNCj4gIHsNCj4gICAgICBDTGl0ZUFnZW50
OjpMb2coIk9uRGV2aWNlRXZlbnQoKVxuIik7DQo+ICsgICAgbV9kZXZzLk9uRGV2aWNlRXZlbnQo
ZXZ0LCBkYXRhKTsNCj4gIH0NCj4gDQo+ICBib29sIENMaXRlQWdlbnQ6OlNlcnZpY2VNYWluTG9v
cCgpDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oIGIvc3JjL2xpdGVh
Z2VudC9MaXRlQWdlbnQuaA0KPiBpbmRleCBhYjE5MmVmLi41N2VkOWU3IDEwMDY0NA0KPiAtLS0g
YS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFn
ZW50LmgNCj4gQEAgLTM4LDcgKzM4LDkgQEANCj4gICNkZWZpbmUgU1ZDX0RJU1BMQVlOQU1FIFBS
T0RVQ1RfTkFNRV9TVFIgIyMgIkludGVyZmFjZSBTZXJ2aWNlIg0KPiAgI2RlZmluZSBTVkNfREVT
QyAiTW9uaXRvcnMgYW5kIHByb3ZpZGVzIHZhcmlvdXMgbWV0cmljcyB0byBYZW5TdG9yZSINCj4g
DQo+IC1jbGFzcyBDTGl0ZUFnZW50DQo+ICsjaW5jbHVkZSAiRGV2aWNlTGlzdC5oIg0KPiArDQo+
ICtjbGFzcyBDTGl0ZUFnZW50IDogcHVibGljIElEZXZpY2VDcmVhdG9yDQo+ICB7DQo+ICBwdWJs
aWM6IC8vIHN0YXRpY3MNCj4gICAgICBzdGF0aWMgdm9pZCBMb2coY29uc3QgY2hhciogZm10LCAu
Li4pOw0KPiBAQCAtNTQsNiArNTYsOSBAQCBwdWJsaWM6IC8vIGN0b3IvZHRvcg0KPiAgICAgIENM
aXRlQWdlbnQoKTsNCj4gICAgICB+Q0xpdGVBZ2VudCgpOw0KPiANCj4gK3B1YmxpYzogLy8gSURl
dmljZUNyZWF0b3INCj4gKyAgICB2aXJ0dWFsIENEZXZpY2UqIENyZWF0ZShjb25zdCB3Y2hhcl90
KiBwYXRoKTsNCj4gKw0KPiAgcHJpdmF0ZTogLy8gc2VydmljZSBldmVudHMNCj4gICAgICB2b2lk
IE9uU2VydmljZVN0YXJ0KCk7DQo+ICAgICAgdm9pZCBPblNlcnZpY2VTdG9wKCk7DQo+IEBAIC02
OCw2ICs3Myw4IEBAIHByaXZhdGU6IC8vIHNlcnZpY2Ugc3VwcG9ydA0KPiAgICAgIFNFUlZJQ0Vf
U1RBVFVTICAgICAgICAgIG1fc3RhdHVzOw0KPiAgICAgIFNFUlZJQ0VfU1RBVFVTX0hBTkRMRSAg
IG1faGFuZGxlOw0KPiAgICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIG1fc3ZjX3N0b3A7DQo+
ICsNCj4gKyAgICBDRGV2aWNlTGlzdCAgICAgICAgICAgICBtX2RldnM7DQo+ICB9Ow0KPiANCj4g
ICNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJv
ag0KPiBiL3ZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gaW5kZXggOTY3YTNh
MS4uODRiNTExMyAxMDA2NDQNCj4gLS0tIGEvdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4
cHJvag0KPiArKysgYi92czIwMTIvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IEBAIC0x
OTQsOSArMTk0LDExIEBADQo+ICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCj4gICAgPEl0ZW1H
cm91cD4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRcTGl0
ZUFnZW50LmNwcCIgLz4NCj4gKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRl
YWdlbnRcRGV2aWNlTGlzdC5jcHAiIC8+DQo+ICAJPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3Jv
dXA+DQo+ICAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50XExpdGVB
Z2VudC5oIiAvPg0KPiArICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2Vu
dFxEZXZpY2VMaXN0LmgiIC8+DQo+ICAJPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+
ICAgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRcbWVzc2FnZXMu
bWMiPg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0K
PiBiL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gaW5kZXggYzFiNWM1ZC4u
NmEzYzc4NyAxMDA2NDQNCj4gLS0tIGEvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJv
ag0KPiArKysgYi92czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IEBAIC0xOTgs
OSArMTk4LDExIEBADQo+ICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCj4gICAgPEl0ZW1Hcm91
cD4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRcTGl0ZUFn
ZW50LmNwcCIgLz4NCj4gKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdl
bnRcRGV2aWNlTGlzdC5jcHAiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3Vw
Pg0KPiAgICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFxMaXRlQWdl
bnQuaCIgLz4NCj4gKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRc
RGV2aWNlTGlzdC5oIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAgPEl0ZW1Hcm91cD4NCj4g
ICAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFxtZXNzYWdlcy5t
YyI+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxp
c3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwg
bWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:06:46 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:06:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFgve-0002uQ-Dg; Wed, 22 Jun 2016 12:06:46 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFgvd-0002uK-91
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:06:45 +0000
Received: from [85.158.139.211] by server-1.bemta-5.messagelabs.com id
 E6/C1-26908-45F7A675; Wed, 22 Jun 2016 12:06:44 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQje4Piv
 c4MIBI4s/ixMdGD0Of7jCEsAYxZqZl5RfkcCaceTgXMaC9t2MFU+2PWJsYLywg7GLkZNDQsBP
 4sLrr8wgNpuAjsTSo/OZQGwRgQKJ7+/ngcWZBdQkru/vYgWxhQUsJOZOvQTUyw5UYynxib+Lk
 QPIMpJoXKMLUsAioCrx5OkdsGJeAXeJ3kOtQMVcHEICDYwSna/+gG3lFHCTuNLyAmwTo4CsxJ
 fG1VCbxCVuPYG4QEJAQGLJnvPMELaoxMvH/1ghbAOJrUv3sYDsZRbQlFi/Sx+iVVFiSvdDdoi
 9ghInZz5hAbGFBFQktjw+ADWGW2Ll5z8sExhFZyHZNgth0iwkk2YhmbSAkWUVo0ZxalFZapGu
 kaFeUlFmekZJbmJmjq6hgalebmpxcWJ6ak5iUrFecn7uJkZgnNQzMDDuYLw72e8QoyQHk5Ior
 7xyVrgQX1J+SmVGYnFGfFFpTmrxIUYZDg4lCd5f1UA5waLU9NSKtMwcYMTCpCU4eJREeE1A0r
 zFBYm5xZnpEKlTjIpS4rybQBICIImM0jy4NliSuMQoKyXMy8jAwCDEU5BalJtZgir/ilGcg1F
 JmNeiBmgKT2ZeCdz0V0CLmYAWL+tPB1lckoiQkmpgbOU3Y9S5M0fXua3TOCUkODuhxPyv/MP6
 7SvbXwT5+kp8KJ3a71v488kDza029ka+d422Hjh1O/zYu4TIonkvwzUCZi0wntTDyrxtt8Zsl
 cvhfJYJR9KjyhVMF+eZ77gnpbrP9MAqnoiHS35X7nOvFlizf9q6pL4ve2bsvd9rl8awxZkjp2
 yNEktxRqKhFnNRcSIAGuQX3Q0DAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1466597203!33953545!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 44566 invoked from network); 22 Jun 2016 12:06:43 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:06:43 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24784360"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 06/20] Add DeviceList
Thread-Index: AQHRtcfp0/pIEiUjnUGbXE8N7Blpw5/1kYHA
Date: Wed, 22 Jun 2016 12:06:42 +0000
Message-ID: <69fc30d4c4384fb5a8f40631927722ab@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-7-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-7-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 06/20] Add DeviceList
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDYvMjBdIEFkZCBEZXZpY2VMaXN0DQo+IA0KPiBDRGV2aWNl
TGlzdCBtYW5hZ2VzIHRoZSBkZXZpY2UgY2hhbmdlIG5vdGlmaWNhdGlvbnMsIGFuZA0KPiBTZXR1
cEFwaSBlbnVtZXJhdGlvbi4gQWRkIGEgY2xhc3MgaW5oZXJpdGVkIGZyb20gQ0RldmljZSBhbmQN
Cj4gaW1wbGVtZW50IElEZXZpY2VDcmVhdG9yIHRvIGFkZCBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5
DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+
DQoNCkFja2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+
IC0tLQ0KPiAgc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCAgICAgICB8IDI3OQ0KPiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L0Rldmlj
ZUxpc3QuaCAgICAgICAgIHwgIDg5ICsrKysrKysrKysrKw0KPiAgc3JjL2xpdGVhZ2VudC9MaXRl
QWdlbnQuY3BwICAgICAgICB8ICAxMiArLQ0KPiAgc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaCAg
ICAgICAgICB8ICAgOSArLQ0KPiAgdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvaiB8
ICAgMiArDQo+ICB2czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgICAyICsNCj4g
IDYgZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcA0KPiAgY3JlYXRl
IG1vZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oDQo+IA0KPiBkaWZmIC0tZ2l0
IGEvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlz
dC5jcHANCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uMWNiM2JmNg0K
PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHANCj4g
QEAgLTAsMCArMSwyNzkgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5j
Lg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBvciB3aXRo
b3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICogICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAg
ICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiArICogICAg
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0KPiArICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+
ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiArICogQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+ICsg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+ICsgKi8N
Cj4gKw0KPiArI2luY2x1ZGUgPHdpbmRvd3MuaD4NCj4gKyNpbmNsdWRlIDxzdHJpbmc+DQo+ICsj
aW5jbHVkZSA8c2V0dXBhcGkuaD4NCj4gKyNwcmFnbWEgY29tbWVudCAobGliICwgInNldHVwYXBp
LmxpYiIgKQ0KPiArDQo+ICsjaW5jbHVkZSAiRGV2aWNlTGlzdC5oIg0KPiArDQo+ICsvLyBkZWFs
IHdpdGggU2V0dXBBcGkgYW5kIFJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uIHVzaW5nIGRpZmZl
cmVudCBzdHJpbmcNCj4gdHlwZXMNCj4gK3N0YXRpYyBzdGQ6OndzdHJpbmcgQ29udmVydChjb25z
dCBjaGFyKiBzdHIpDQo+ICt7DQo+ICsgICAgc3RkOjp3c3RyaW5nIHdzdHI7DQo+ICsgICAgd3N0
ci5yZXNlcnZlKHN0cmxlbihzdHIpICsgMSk7DQo+ICsgICAgTXVsdGlCeXRlVG9XaWRlQ2hhcihD
UF9BQ1AsIDAsIHN0ciwgLTEsIChMUFdTVFIpd3N0ci5kYXRhKCksDQo+IChpbnQpd3N0ci5jYXBh
Y2l0eSgpKTsNCj4gKyAgICByZXR1cm4gd3N0cjsNCj4gK30NCj4gKw0KPiArc3RhdGljIHN0ZDo6
d3N0cmluZyBDb252ZXJ0KGNvbnN0IHdjaGFyX3QqIHdzdHIpDQo+ICt7DQo+ICsgICAgcmV0dXJu
IHN0ZDo6d3N0cmluZyh3c3RyKTsNCj4gK30NCj4gKw0KPiArQ0RldmljZTo6Q0RldmljZShjb25z
dCB3Y2hhcl90KiBwYXRoKSA6DQo+ICsgICAgbV9oYW5kbGUoSU5WQUxJRF9IQU5ETEVfVkFMVUUp
LCBtX3BhdGgocGF0aCksIG1fbm90aWZ5KE5VTEwpDQo+ICt7DQo+ICt9DQo+ICsNCj4gK0NEZXZp
Y2U6On5DRGV2aWNlKCkNCj4gK3sNCj4gKyAgICBDbG9zZSgpOw0KPiArfQ0KPiArDQo+ICtIQU5E
TEUgQ0RldmljZTo6T3BlbihIQU5ETEUgc3ZjKQ0KPiArew0KPiArICAgIENsb3NlKCk7DQo+ICsN
Cj4gKyAgICBtX2hhbmRsZSA9IENyZWF0ZUZpbGVXKG1fcGF0aC5jX3N0cigpLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJ
VEUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT1BFTl9FWElTVElORywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgICBpZiAo
bV9oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQo+ICsgICAgICAgIHJldHVybiBJTlZB
TElEX0hBTkRMRV9WQUxVRTsNCj4gKw0KPiArICAgIERFVl9CUk9BRENBU1RfSEFORExFIGRldmhk
bCA9IHsgMCB9Ow0KPiArICAgIGRldmhkbC5kYmNoX3NpemUgPSBzaXplb2YoZGV2aGRsKTsNCj4g
KyAgICBkZXZoZGwuZGJjaF9kZXZpY2V0eXBlID0gREJUX0RFVlRZUF9IQU5ETEU7DQo+ICsgICAg
ZGV2aGRsLmRiY2hfaGFuZGxlID0gbV9oYW5kbGU7DQo+ICsNCj4gKyAgICBtX25vdGlmeSA9IFJl
Z2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uKHN2YywgJmRldmhkbCwNCj4gREVWSUNFX05PVElGWV9T
RVJWSUNFX0hBTkRMRSk7DQo+ICsgICAgaWYgKG1fbm90aWZ5ID09IE5VTEwpIHsNCj4gKyAgICAg
ICAgQ2xvc2UoKTsNCj4gKyAgICAgICAgcmV0dXJuIElOVkFMSURfSEFORExFX1ZBTFVFOw0KPiAr
ICAgIH0NCj4gKw0KPiArICAgIHJldHVybiBtX2hhbmRsZTsNCj4gK30NCj4gKw0KPiArdm9pZCBD
RGV2aWNlOjpDbG9zZSgpDQo+ICt7DQo+ICsgICAgaWYgKG1faGFuZGxlID09IElOVkFMSURfSEFO
RExFX1ZBTFVFKQ0KPiArICAgICAgICByZXR1cm47DQo+ICsgICAgQ2xvc2VIYW5kbGUobV9oYW5k
bGUpOw0KPiArICAgIG1faGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7DQo+ICt9DQo+ICsN
Cj4gK2Jvb2wgQ0RldmljZTo6SW9jdGwoRFdPUkQgaW9jdGwsIHZvaWQqIGluLCBEV09SRCBpbnN6
LCB2b2lkKiBvdXQsIERXT1JEDQo+IG91dHN6LCBEV09SRCogYnl0ZXMpDQo+ICt7DQo+ICsgICAg
aWYgKG1faGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQ0KPiArICAgICAgICByZXR1cm4g
ZmFsc2U7DQo+ICsNCj4gKyAgICBpZiAoIURldmljZUlvQ29udHJvbChtX2hhbmRsZSwgaW9jdGws
IGluLCBpbnN6LCBvdXQsIG91dHN6LCBieXRlcywgTlVMTCkpDQo+ICsgICAgICAgIHJldHVybiBm
YWxzZTsNCj4gKw0KPiArICAgIHJldHVybiB0cnVlOw0KPiArfQ0KPiArDQo+ICtDRGV2aWNlTGlz
dDo6Q0RldmljZUxpc3QoY29uc3QgR1VJRCYgaXRmKSA6DQo+ICsgICAgbV9ndWlkKGl0ZiksIG1f
bm90aWZ5KE5VTEwpLCBtX2hhbmRsZShOVUxMKSwgbV9pbXBsKE5VTEwpDQo+ICt7DQo+ICt9DQo+
ICsNCj4gK0NEZXZpY2VMaXN0Ojp+Q0RldmljZUxpc3QoKQ0KPiArew0KPiArICAgIFN0b3AoKTsN
Cj4gK30NCj4gKw0KPiArYm9vbCBDRGV2aWNlTGlzdDo6U3RhcnQoSEFORExFIGhhbmRsZSwgSURl
dmljZUNyZWF0b3IqIGltcGwpDQo+ICt7DQo+ICsgICAgU3RvcCgpOw0KPiArDQo+ICsgICAgbV9o
YW5kbGUgPSBoYW5kbGU7DQo+ICsgICAgbV9pbXBsID0gaW1wbDsNCj4gKw0KPiArICAgIERFVl9C
Uk9BRENBU1RfREVWSUNFSU5URVJGQUNFIGRldiA9IHsgMCB9Ow0KPiArICAgIGRldi5kYmNjX3Np
emUgPSBzaXplb2YoZGV2KTsNCj4gKyAgICBkZXYuZGJjY19kZXZpY2V0eXBlID0gREJUX0RFVlRZ
UF9ERVZJQ0VJTlRFUkZBQ0U7DQo+ICsgICAgZGV2LmRiY2NfY2xhc3NndWlkID0gbV9ndWlkOw0K
PiArDQo+ICsgICAgbV9ub3RpZnkgPSBSZWdpc3RlckRldmljZU5vdGlmaWNhdGlvbkEoaGFuZGxl
LCAmZGV2LA0KPiBERVZJQ0VfTk9USUZZX1NFUlZJQ0VfSEFORExFKTsNCj4gKyAgICBpZiAobV9u
b3RpZnkgPT0gTlVMTCkNCj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgICAgSERF
VklORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbzsNCj4gKyAgICBTUF9ERVZJQ0Vf
SU5URVJGQUNFX0RBVEEgICAgICAgICAgICBpdGY7DQo+ICsgICAgUFNQX0RFVklDRV9JTlRFUkZB
Q0VfREVUQUlMX0RBVEEgICAgZGV0YWlsOw0KPiArICAgIFVMT05HICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlkeDsNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsZW47DQo+ICsNCj4gKyAgICBpbmZvID0gU2V0dXBEaUdldENsYXNzRGV2cygmbV9ndWlk
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBESUdDRl9QUkVTRU5UIHwgRElHQ0ZfREVWSUNFSU5URVJGQUNFKTsNCj4gKyAgICBpZiAo
aW5mbyA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gKyAgICAgICAgcmV0dXJuIHRydWU7IC8v
IG5vbiBmYXRhbCwganVzdCBtaXNzaW5nIGFscmVhZHkgcHJlc2VudCBkZXZpY2UocykNCj4gKw0K
PiArICAgIGl0Zi5jYlNpemUgPSBzaXplb2YoU1BfREVWSUNFX0lOVEVSRkFDRV9EQVRBKTsNCj4g
KyAgICBmb3IgKGlkeCA9IDA7DQo+ICsgICAgICAgIFNldHVwRGlFbnVtRGV2aWNlSW50ZXJmYWNl
cyhpbmZvLCBOVUxMLCAmbV9ndWlkLCBpZHgsICZpdGYpOw0KPiArICAgICAgICArK2lkeCkgew0K
PiArICAgICAgICBTZXR1cERpR2V0RGV2aWNlSW50ZXJmYWNlRGV0YWlsKGluZm8sDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZiwNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmxlbiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMKTsNCj4gKyAgICAgICAgZGV0YWlsID0gKFBTUF9ERVZJQ0VfSU5URVJGQUNFX0RF
VEFJTF9EQVRBKW5ldyBCWVRFW2xlbl07DQo+ICsgICAgICAgIGlmIChkZXRhaWwgPT0gTlVMTCkN
Cj4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICBkZXRhaWwtPmNiU2l6ZSA9IHNp
emVvZihTUF9ERVZJQ0VfSU5URVJGQUNFX0RFVEFJTF9EQVRBKTsNCj4gKyAgICAgICAgaWYgKFNl
dHVwRGlHZXREZXZpY2VJbnRlcmZhY2VEZXRhaWwoaW5mbywNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZiwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZW4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwpKSB7DQo+ICsgICAgICAgICAgICBPbkRldmljZUFkZGVkKENv
bnZlcnQoKGNvbnN0IGNoYXIqKWRldGFpbC0+RGV2aWNlUGF0aCkpOw0KPiArICAgICAgICB9DQo+
ICsgICAgICAgIGRlbGV0ZSBbXSBkZXRhaWw7DQo+ICsgICAgICAgIGl0Zi5jYlNpemUgPSBzaXpl
b2YoU1BfREVWSUNFX0lOVEVSRkFDRV9EQVRBKTsNCj4gKyAgICB9DQo+ICsgICAgU2V0dXBEaURl
c3Ryb3lEZXZpY2VJbmZvTGlzdChpbmZvKTsNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gK30NCj4g
Kw0KPiArdm9pZCBDRGV2aWNlTGlzdDo6U3RvcCgpDQo+ICt7DQo+ICsgICAgaWYgKG1fbm90aWZ5
ICE9IE5VTEwpDQo+ICsgICAgICAgIFVucmVnaXN0ZXJEZXZpY2VOb3RpZmljYXRpb24obV9ub3Rp
ZnkpOw0KPiArICAgIG1fbm90aWZ5ID0gTlVMTDsNCj4gKw0KPiArICAgIGZvciAoRGV2aWNlTWFw
OjppdGVyYXRvciBpdCA9IG1fZGV2cy5iZWdpbigpOw0KPiArICAgICAgICAgICAgaXQgIT0gbV9k
ZXZzLmVuZCgpOw0KPiArICAgICAgICAgICAgKytpdCkgew0KPiArICAgICAgICBkZWxldGUgaXQt
PnNlY29uZDsNCj4gKyAgICB9DQo+ICsgICAgbV9kZXZzLmNsZWFyKCk7DQo+ICt9DQo+ICsNCj4g
K3ZvaWQgQ0RldmljZUxpc3Q6Ok9uRGV2aWNlRXZlbnQoRFdPUkQgZXZ0LCBMUFZPSUQgZGF0YSkN
Cj4gK3sNCj4gKyAgICBQREVWX0JST0FEQ0FTVF9IRFIgICAgICAgICAgICAgIGhkcjsNCj4gKyAg
ICBQREVWX0JST0FEQ0FTVF9ERVZJQ0VJTlRFUkZBQ0UgIGl0ZjsNCj4gKyAgICBQREVWX0JST0FE
Q0FTVF9IQU5ETEUgICAgICAgICAgIGhkbDsNCj4gKw0KPiArICAgIGhkciA9IChQREVWX0JST0FE
Q0FTVF9IRFIpZGF0YTsNCj4gKyAgICBzd2l0Y2ggKGV2dCkgew0KPiArICAgIGNhc2UgREJUX0RF
VklDRUFSUklWQUw6DQo+ICsgICAgICAgIGlmIChoZHItPmRiY2hfZGV2aWNldHlwZSA9PSBEQlRf
REVWVFlQX0RFVklDRUlOVEVSRkFDRSkgew0KPiArICAgICAgICAgICAgaXRmID0gKFBERVZfQlJP
QURDQVNUX0RFVklDRUlOVEVSRkFDRSloZHI7DQo+ICsgICAgICAgICAgICBPbkRldmljZUFkZGVk
KENvbnZlcnQoKGNvbnN0IHdjaGFyX3QqKWl0Zi0+ZGJjY19uYW1lKSk7DQo+ICsgICAgICAgIH0N
Cj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIERCVF9ERVZJQ0VRVUVSWVJFTU9W
RToNCj4gKyAgICAgICAgaWYgKGhkci0+ZGJjaF9kZXZpY2V0eXBlID09IERCVF9ERVZUWVBfSEFO
RExFKSB7DQo+ICsgICAgICAgICAgICBoZGwgPSAoUERFVl9CUk9BRENBU1RfSEFORExFKWhkcjsN
Cj4gKyAgICAgICAgICAgIE9uRGV2aWNlUXVlcnlSZW1vdmUoaGRsLT5kYmNoX2hhbmRsZSk7DQo+
ICsgICAgICAgIH0NCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIERCVF9ERVZJ
Q0VSRU1PVkVQRU5ESU5HOg0KPiArICAgICAgICBpZiAoaGRyLT5kYmNoX2RldmljZXR5cGUgPT0g
REJUX0RFVlRZUF9IQU5ETEUpIHsNCj4gKyAgICAgICAgICAgIGhkbCA9IChQREVWX0JST0FEQ0FT
VF9IQU5ETEUpaGRyOw0KPiArICAgICAgICAgICAgVW5yZWdpc3RlckRldmljZU5vdGlmaWNhdGlv
bihoZGwtPmRiY2hfaGRldm5vdGlmeSk7DQo+ICsgICAgICAgICAgICBPbkRldmljZVJlbW92ZWQo
aGRsLT5kYmNoX2hhbmRsZSk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgYnJlYWs7DQo+ICsN
Cj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICt9DQo+ICsN
Cj4gK0NEZXZpY2UqIENEZXZpY2VMaXN0OjpHZXRGaXJzdERldmljZSgpDQo+ICt7DQo+ICsgICAg
RGV2aWNlTWFwOjppdGVyYXRvciBpdCA9IG1fZGV2cy5iZWdpbigpOw0KPiArICAgIGlmIChpdCA9
PSBtX2RldnMuZW5kKCkpDQo+ICsgICAgICAgIHJldHVybiBOVUxMOw0KPiArICAgIHJldHVybiBp
dC0+c2Vjb25kOw0KPiArfQ0KPiArDQo+ICt2b2lkIENEZXZpY2VMaXN0OjpPbkRldmljZUFkZGVk
KGNvbnN0IHN0ZDo6d3N0cmluZyYgcGF0aCkNCj4gK3sNCj4gKyAgICBDRGV2aWNlKiBkZXY7DQo+
ICsgICAgaWYgKG1faW1wbCA9PSBOVUxMKQ0KPiArICAgICAgICBkZXYgPSBuZXcgQ0RldmljZShw
YXRoLmNfc3RyKCkpOw0KPiArICAgIGVsc2UNCj4gKyAgICAgICAgZGV2ID0gbV9pbXBsLT5DcmVh
dGUocGF0aC5jX3N0cigpKTsNCj4gKyAgICBpZiAoZGV2ID09IE5VTEwpDQo+ICsgICAgICAgIHJl
dHVybjsgLy8gY3JlYXRlIGZhaWxlZA0KPiArDQo+ICsgICAgSEFORExFIGhhbmRsZSA9IGRldi0+
T3BlbihtX2hhbmRsZSk7DQo+ICsgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxV
RSkgew0KPiArICAgICAgICBkZWxldGUgZGV2Ow0KPiArICAgICAgICByZXR1cm47IC8vIG9wZW4g
ZmFpbGVkDQo+ICsgICAgfQ0KPiArDQo+ICsgICAgRGV2aWNlTWFwOjppdGVyYXRvciBpdCA9IG1f
ZGV2cy5maW5kKGhhbmRsZSk7DQo+ICsgICAgaWYgKGl0ICE9IG1fZGV2cy5lbmQoKSkgew0KPiAr
ICAgICAgICBkZWxldGUgZGV2Ow0KPiArICAgICAgICByZXR1cm47DQo+ICsgICAgfQ0KPiArDQo+
ICsgICAgbV9kZXZzW2hhbmRsZV0gPSBkZXY7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgQ0RldmljZUxp
c3Q6Ok9uRGV2aWNlUXVlcnlSZW1vdmUoSEFORExFIGhhbmRsZSkNCj4gK3sNCj4gKyAgICBEZXZp
Y2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kZXZzLmZpbmQoaGFuZGxlKTsNCj4gKyAgICBpZiAoaXQg
PT0gbV9kZXZzLmVuZCgpKQ0KPiArICAgICAgICByZXR1cm47IC8vIHNwdXJpb3VzIGV2ZW50Pw0K
PiArDQo+ICsgICAgQ0RldmljZSogZGV2ID0gaXQtPnNlY29uZDsNCj4gKyAgICBkZXYtPkNsb3Nl
KCk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgQ0RldmljZUxpc3Q6Ok9uRGV2aWNlUmVtb3ZlZChIQU5E
TEUgaGFuZGxlKQ0KPiArew0KPiArICAgIERldmljZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RldnMu
ZmluZChoYW5kbGUpOw0KPiArICAgIGlmIChpdCA9PSBtX2RldnMuZW5kKCkpDQo+ICsgICAgICAg
IHJldHVybjsgLy8gc3B1cmlvdXMgZXZlbnQ/DQo+ICsNCj4gKyAgICBDRGV2aWNlKiBkZXYgPSBp
dC0+c2Vjb25kOw0KPiArICAgIGRlbGV0ZSBkZXY7DQo+ICsgICAgbV9kZXZzLmVyYXNlKGl0KTsN
Cj4gK30NCj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oIGIvc3JjL2xp
dGVhZ2VudC9EZXZpY2VMaXN0LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw
MDAwMC4uMTBkZjU0Ng0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvRGV2
aWNlTGlzdC5oDQo+IEBAIC0wLDAgKzEsODkgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4
IFN5c3RlbXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICog
d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiAr
ICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAq
ICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0K
PiArICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUNCj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICog
ICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
cg0KPiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+
ICsgKg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0K
PiArICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SDQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1B
R0UuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfREVWSUNFTElTVF9IXw0KPiArI2RlZmluZSBf
REVWSUNFTElTVF9IXw0KPiArDQo+ICsjaW5jbHVkZSA8d2luZG93cy5oPg0KPiArI2luY2x1ZGUg
PGRidC5oPg0KPiArI2luY2x1ZGUgPG1hcD4NCj4gKyNpbmNsdWRlIDxzdHJpbmc+DQo+ICsNCj4g
K2NsYXNzIENEZXZpY2UNCj4gK3sNCj4gK3B1YmxpYzoNCj4gKyAgICBDRGV2aWNlKGNvbnN0IHdj
aGFyX3QqIHBhdGgpOw0KPiArICAgIH5DRGV2aWNlKCk7DQo+ICsNCj4gKyAgICBIQU5ETEUgT3Bl
bihIQU5ETEUgc3ZjKTsNCj4gKyAgICB2b2lkIENsb3NlKCk7DQo+ICsNCj4gK3Byb3RlY3RlZDoN
Cj4gKyAgICBib29sIElvY3RsKERXT1JEIGlvY3RsLCB2b2lkKiBpbiwgRFdPUkQgaW5zeiwgdm9p
ZCogb3V0LCBEV09SRCBvdXRzeiwNCj4gRFdPUkQqIGJ5dGVzKTsNCj4gKw0KPiArcHJpdmF0ZToN
Cj4gKyAgICBzdGQ6OndzdHJpbmcgICAgbV9wYXRoOw0KPiArICAgIEhBTkRMRSAgICAgICAgICBt
X2hhbmRsZTsNCj4gKyAgICBIREVWTk9USUZZICAgICAgbV9ub3RpZnk7DQo+ICt9Ow0KPiArDQo+
ICtpbnRlcmZhY2UgSURldmljZUNyZWF0b3INCj4gK3sNCj4gKyAgICB2aXJ0dWFsIENEZXZpY2Uq
IENyZWF0ZShjb25zdCB3Y2hhcl90KiBwYXRoKSA9IDA7DQo+ICt9Ow0KPiArDQo+ICtjbGFzcyBD
RGV2aWNlTGlzdA0KPiArew0KPiArcHVibGljOg0KPiArICAgIENEZXZpY2VMaXN0KGNvbnN0IEdV
SUQmIGl0Zik7DQo+ICsgICAgfkNEZXZpY2VMaXN0KCk7DQo+ICsNCj4gKyAgICBib29sIFN0YXJ0
KEhBTkRMRSBzdmMsIElEZXZpY2VDcmVhdG9yKiBpbXBsKTsNCj4gKyAgICB2b2lkIFN0b3AoKTsN
Cj4gKyAgICB2b2lkIE9uRGV2aWNlRXZlbnQoRFdPUkQgZXZ0LCBMUFZPSUQgZGF0YSk7DQo+ICsg
ICAgQ0RldmljZSogR2V0Rmlyc3REZXZpY2UoKTsNCj4gKw0KPiArcHJpdmF0ZToNCj4gKyAgICB2
b2lkIE9uRGV2aWNlQWRkZWQoY29uc3Qgc3RkOjp3c3RyaW5nJiBwYXRoKTsNCj4gKyAgICB2b2lk
IE9uRGV2aWNlUXVlcnlSZW1vdmUoSEFORExFIGhhbmRsZSk7DQo+ICsgICAgdm9pZCBPbkRldmlj
ZVJlbW92ZWQoSEFORExFIGRldik7DQo+ICsNCj4gKyAgICB0eXBlZGVmIHN0ZDo6bWFwPCBIQU5E
TEUsIENEZXZpY2UqID4gRGV2aWNlTWFwOw0KPiArDQo+ICsgICAgR1VJRCAgICAgICAgbV9ndWlk
Ow0KPiArICAgIERldmljZU1hcCAgIG1fZGV2czsNCj4gKyAgICBIREVWTk9USUZZICBtX25vdGlm
eTsNCj4gKyAgICBIQU5ETEUgICAgICBtX2hhbmRsZTsNCj4gKyAgICBJRGV2aWNlQ3JlYXRvciog
bV9pbXBsOw0KPiArfTsNCj4gKw0KPiArI2VuZGlmDQo+ICsNCj4gZGlmZiAtLWdpdCBhL3NyYy9s
aXRlYWdlbnQvTGl0ZUFnZW50LmNwcCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBp
bmRleCA3OTIwZTliLi4xZWVjODdlIDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVB
Z2VudC5jcHANCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IEBAIC0zMyw2
ICszMyw3IEBADQo+ICAjaW5jbHVkZSA8d2luZG93cy5oPg0KPiANCj4gICNpbmNsdWRlICJMaXRl
QWdlbnQuaCINCj4gKyNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCINCj4gDQo+ICBpbnQgX19z
dGRjYWxsIFdpbk1haW4oSElOU1RBTkNFIGhJbnN0YW5jZSwgSElOU1RBTkNFIGlnbm9yZSwgTFBT
VFINCj4gbHBDbWRMaW5lLCBpbnQgbkNtZFNob3cpDQo+ICB7DQo+IEBAIC04Nyw2ICs4OCw3IEBA
IHN0YXRpYyBDTGl0ZUFnZW50IHNfc2VydmljZTsNCj4gICAgICBEZWxldGVTZXJ2aWNlKHN2Yyk7
DQo+ICAgICAgQ2xvc2VTZXJ2aWNlSGFuZGxlKHN2Yyk7DQo+ICAgICAgQ2xvc2VTZXJ2aWNlSGFu
ZGxlKG1ncik7DQo+ICsgICAgcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAgLypzdGF0aWMqLyBpbnQg
Q0xpdGVBZ2VudDo6U2VydmljZUVudHJ5KCkNCj4gQEAgLTExNCw3ICsxMTYsNyBAQCBzdGF0aWMg
Q0xpdGVBZ2VudCBzX3NlcnZpY2U7DQo+ICAgICAgcmV0dXJuIHNfc2VydmljZS5fX1NlcnZpY2VD
b250cm9sSGFuZGxlckV4KHJlcSwgZXZ0LCBkYXRhLCBjdHh0KTsNCj4gIH0NCj4gDQo+IC1DTGl0
ZUFnZW50OjpDTGl0ZUFnZW50KCkgOiBtX2hhbmRsZShOVUxMKQ0KPiArQ0xpdGVBZ2VudDo6Q0xp
dGVBZ2VudCgpIDogbV9oYW5kbGUoTlVMTCksDQo+IG1fZGV2cyhHVUlEX0lOVEVSRkFDRV9YRU5J
RkFDRSkNCj4gIHsNCj4gICAgICBtX3N0YXR1cy5kd1NlcnZpY2VUeXBlICAgICAgICA9IFNFUlZJ
Q0VfV0lOMzI7DQo+ICAgICAgbV9zdGF0dXMuZHdDdXJyZW50U3RhdGUgICAgICAgPSBTRVJWSUNF
X1NUQVJUX1BFTkRJTkc7DQo+IEBAIC0xMzIsMTkgKzEzNCwyNyBAQCBDTGl0ZUFnZW50Ojp+Q0xp
dGVBZ2VudCgpDQo+ICAgICAgQ2xvc2VIYW5kbGUobV9zdmNfc3RvcCk7DQo+ICB9DQo+IA0KPiAr
Lyp2aXJ0dWFsKi8gQ0RldmljZSogQ0xpdGVBZ2VudDo6Q3JlYXRlKGNvbnN0IHdjaGFyX3QqIHBh
dGgpDQo+ICt7DQo+ICsgICAgcmV0dXJuIG5ldyBDRGV2aWNlKHBhdGgpOw0KPiArfQ0KPiArDQo+
ICB2b2lkIENMaXRlQWdlbnQ6Ok9uU2VydmljZVN0YXJ0KCkNCj4gIHsNCj4gICAgICBDTGl0ZUFn
ZW50OjpMb2coIk9uU2VydmljZVN0YXJ0KClcbiIpOw0KPiArICAgIG1fZGV2cy5TdGFydChtX2hh
bmRsZSwgdGhpcyk7DQo+ICB9DQo+IA0KPiAgdm9pZCBDTGl0ZUFnZW50OjpPblNlcnZpY2VTdG9w
KCkNCj4gIHsNCj4gICAgICBDTGl0ZUFnZW50OjpMb2coIk9uU2VydmljZVN0b3AoKVxuIik7DQo+
ICsgICAgbV9kZXZzLlN0b3AoKTsNCj4gIH0NCj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2
aWNlRXZlbnQoRFdPUkQgZXZ0LCBMUFZPSUQgZGF0YSkNCj4gIHsNCj4gICAgICBDTGl0ZUFnZW50
OjpMb2coIk9uRGV2aWNlRXZlbnQoKVxuIik7DQo+ICsgICAgbV9kZXZzLk9uRGV2aWNlRXZlbnQo
ZXZ0LCBkYXRhKTsNCj4gIH0NCj4gDQo+ICBib29sIENMaXRlQWdlbnQ6OlNlcnZpY2VNYWluTG9v
cCgpDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oIGIvc3JjL2xpdGVh
Z2VudC9MaXRlQWdlbnQuaA0KPiBpbmRleCBhYjE5MmVmLi41N2VkOWU3IDEwMDY0NA0KPiAtLS0g
YS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFn
ZW50LmgNCj4gQEAgLTM4LDcgKzM4LDkgQEANCj4gICNkZWZpbmUgU1ZDX0RJU1BMQVlOQU1FIFBS
T0RVQ1RfTkFNRV9TVFIgIyMgIkludGVyZmFjZSBTZXJ2aWNlIg0KPiAgI2RlZmluZSBTVkNfREVT
QyAiTW9uaXRvcnMgYW5kIHByb3ZpZGVzIHZhcmlvdXMgbWV0cmljcyB0byBYZW5TdG9yZSINCj4g
DQo+IC1jbGFzcyBDTGl0ZUFnZW50DQo+ICsjaW5jbHVkZSAiRGV2aWNlTGlzdC5oIg0KPiArDQo+
ICtjbGFzcyBDTGl0ZUFnZW50IDogcHVibGljIElEZXZpY2VDcmVhdG9yDQo+ICB7DQo+ICBwdWJs
aWM6IC8vIHN0YXRpY3MNCj4gICAgICBzdGF0aWMgdm9pZCBMb2coY29uc3QgY2hhciogZm10LCAu
Li4pOw0KPiBAQCAtNTQsNiArNTYsOSBAQCBwdWJsaWM6IC8vIGN0b3IvZHRvcg0KPiAgICAgIENM
aXRlQWdlbnQoKTsNCj4gICAgICB+Q0xpdGVBZ2VudCgpOw0KPiANCj4gK3B1YmxpYzogLy8gSURl
dmljZUNyZWF0b3INCj4gKyAgICB2aXJ0dWFsIENEZXZpY2UqIENyZWF0ZShjb25zdCB3Y2hhcl90
KiBwYXRoKTsNCj4gKw0KPiAgcHJpdmF0ZTogLy8gc2VydmljZSBldmVudHMNCj4gICAgICB2b2lk
IE9uU2VydmljZVN0YXJ0KCk7DQo+ICAgICAgdm9pZCBPblNlcnZpY2VTdG9wKCk7DQo+IEBAIC02
OCw2ICs3Myw4IEBAIHByaXZhdGU6IC8vIHNlcnZpY2Ugc3VwcG9ydA0KPiAgICAgIFNFUlZJQ0Vf
U1RBVFVTICAgICAgICAgIG1fc3RhdHVzOw0KPiAgICAgIFNFUlZJQ0VfU1RBVFVTX0hBTkRMRSAg
IG1faGFuZGxlOw0KPiAgICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIG1fc3ZjX3N0b3A7DQo+
ICsNCj4gKyAgICBDRGV2aWNlTGlzdCAgICAgICAgICAgICBtX2RldnM7DQo+ICB9Ow0KPiANCj4g
ICNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJv
ag0KPiBiL3ZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gaW5kZXggOTY3YTNh
MS4uODRiNTExMyAxMDA2NDQNCj4gLS0tIGEvdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4
cHJvag0KPiArKysgYi92czIwMTIvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IEBAIC0x
OTQsOSArMTk0LDExIEBADQo+ICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCj4gICAgPEl0ZW1H
cm91cD4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRcTGl0
ZUFnZW50LmNwcCIgLz4NCj4gKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRl
YWdlbnRcRGV2aWNlTGlzdC5jcHAiIC8+DQo+ICAJPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3Jv
dXA+DQo+ICAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50XExpdGVB
Z2VudC5oIiAvPg0KPiArICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2Vu
dFxEZXZpY2VMaXN0LmgiIC8+DQo+ICAJPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+
ICAgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRcbWVzc2FnZXMu
bWMiPg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0K
PiBiL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gaW5kZXggYzFiNWM1ZC4u
NmEzYzc4NyAxMDA2NDQNCj4gLS0tIGEvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJv
ag0KPiArKysgYi92czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IEBAIC0xOTgs
OSArMTk4LDExIEBADQo+ICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCj4gICAgPEl0ZW1Hcm91
cD4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRcTGl0ZUFn
ZW50LmNwcCIgLz4NCj4gKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdl
bnRcRGV2aWNlTGlzdC5jcHAiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdyb3Vw
Pg0KPiAgICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFxMaXRlQWdl
bnQuaCIgLz4NCj4gKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRc
RGV2aWNlTGlzdC5oIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAgPEl0ZW1Hcm91cD4NCj4g
ICAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFxtZXNzYWdlcy5t
YyI+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxp
c3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwg
bWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:11:48 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:11:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFh0V-0003Nk-R0; Wed, 22 Jun 2016 12:11:47 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFh0V-0003Ne-BO
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:11:47 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
 3E/ED-00606-2808A675; Wed, 22 Jun 2016 12:11:46 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNIsWRWlGSWpSXmKPExsWyU9JRQrepISv
 c4Ewfl8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDNeLh4InvBZsOKtwe3sjQwPjDoYuTkkBDwk9gz
 +TQriM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V1gNcICARIfLy9jh6gJlPh8cBULhG0k0
 TL3ARuIzSKgKrHq702wXl4Bd4nmj0sZuxi5OIQEGhgl7nXOAEtwCrhJTNsxB8xmFJCV+NK4Gm
 qZuMStJxBHSAgISCzZc54ZwhaVePn4HyuEbSCxdek+oMUcQPWaEut36UO0KkpM6X7IDrFXUOL
 kzCdgtwkJqEhseXwAagy3xMrPf1gmMIrOQrJtFsKkWUgmzUIyaQEjyypGjeLUorLUIl0jA72k
 osz0jJLcxMwcXUMDU73c1OLixPTUnMSkYr3k/NxNjMBIqWdgYNzB2Djb7xCjJAeTkiivvHJWu
 BBfUn5KZUZicUZ8UWlOavEhRhkODiUJ3m11QDnBotT01Iq0zBxgzMKkJTh4lER4d4CkeYsLEn
 OLM9MhUqcYFaXEeVtAEgIgiYzSPLg2WJq4xCgrJczLyMDAIMRTkFqUm1mCKv+KUZyDUUmYtx9
 kCk9mXgnc9FdAi5mAFi/rTwdZXJKIkJJqYMzS15s8ST+u5oVl5OQtmxTt2N7fiY++sPHh3pVi
 inc//p7oqW7y1PGU52ZO0atHdS95P/BRSfgWEsJXu6axLSetiTn51mPJoPJYZT/hZd4r/P9n5
 HVtunKkv2b3cYW1fGH1GxnY55b4HVR3TpaP9hXUnbpv2/orLe5ZC5WfRyxsS7lSsk5WWImlOC
 PRUIu5qDgRAIZqvaQOAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1466597505!33954644!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 34046 invoked from network); 22 Jun 2016 12:11:46 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:11:46 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24784712"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 07/20] Track a single device in the
 service.
Thread-Index: AQHRtce5YZYYS2SWt0GYfG7bC67yhZ/1kpmw
Date: Wed, 22 Jun 2016 12:11:45 +0000
Message-ID: <cc00472a3ef44c079eb04d26f8b33cd0@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-8-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-8-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 07/20] Track a single device in the
 service.
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDcvMjBdIFRyYWNrIGEgc2luZ2xlIGRldmljZSBpbiB0aGUg
c2VydmljZS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0
cml4LmNvbT4NCj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuY3BwIHwgIDkgKysr
KysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuaCAgIHwgIDQgKysrKw0KPiAgc3Jj
L2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwICB8IDIxICsrKysrKysrKysrKysrKysrKysrLQ0KPiAg
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaCAgICB8ICAzICsrKw0KPiAgNCBmaWxlcyBjaGFuZ2Vk
LCAzNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3Jj
L2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHAN
Cj4gaW5kZXggMWNiM2JmNi4uOTAzMzQwNyAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9E
ZXZpY2VMaXN0LmNwcA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuY3BwDQo+IEBA
IC05Niw2ICs5NiwxMSBAQCB2b2lkIENEZXZpY2U6OkNsb3NlKCkNCj4gICAgICBtX2hhbmRsZSA9
IElOVkFMSURfSEFORExFX1ZBTFVFOw0KPiAgfQ0KPiANCj4gK2NvbnN0IHdjaGFyX3QqIENEZXZp
Y2U6OlBhdGgoKSBjb25zdA0KPiArew0KPiArICAgIHJldHVybiBtX3BhdGguY19zdHIoKTsNCj4g
K30NCj4gKw0KPiAgYm9vbCBDRGV2aWNlOjpJb2N0bChEV09SRCBpb2N0bCwgdm9pZCogaW4sIERX
T1JEIGluc3osIHZvaWQqIG91dCwgRFdPUkQNCj4gb3V0c3osIERXT1JEKiBieXRlcykNCj4gIHsN
Cj4gICAgICBpZiAobV9oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQo+IEBAIC0yNTUs
NiArMjYwLDggQEAgdm9pZCBDRGV2aWNlTGlzdDo6T25EZXZpY2VBZGRlZChjb25zdCBzdGQ6Ondz
dHJpbmcmDQo+IHBhdGgpDQo+ICAgICAgfQ0KPiANCj4gICAgICBtX2RldnNbaGFuZGxlXSA9IGRl
djsNCj4gKyAgICBpZiAobV9pbXBsKQ0KPiArICAgICAgICBtX2ltcGwtPk9uRGV2aWNlQWRkZWQo
ZGV2KTsNCj4gIH0NCj4gDQo+ICB2b2lkIENEZXZpY2VMaXN0OjpPbkRldmljZVF1ZXJ5UmVtb3Zl
KEhBTkRMRSBoYW5kbGUpDQo+IEBAIC0yNjQsNiArMjcxLDggQEAgdm9pZCBDRGV2aWNlTGlzdDo6
T25EZXZpY2VRdWVyeVJlbW92ZShIQU5ETEUNCj4gaGFuZGxlKQ0KPiAgICAgICAgICByZXR1cm47
IC8vIHNwdXJpb3VzIGV2ZW50Pw0KPiANCj4gICAgICBDRGV2aWNlKiBkZXYgPSBpdC0+c2Vjb25k
Ow0KPiArICAgIGlmIChtX2ltcGwpDQo+ICsgICAgICAgIG1faW1wbC0+T25EZXZpY2VSZW1vdmVk
KGRldik7DQo+ICAgICAgZGV2LT5DbG9zZSgpOw0KPiAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Ny
Yy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oIGIvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmgNCj4g
aW5kZXggMTBkZjU0Ni4uNDU3YTA5OSAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9EZXZp
Y2VMaXN0LmgNCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmgNCj4gQEAgLTQ2LDYg
KzQ2LDggQEAgcHVibGljOg0KPiAgICAgIEhBTkRMRSBPcGVuKEhBTkRMRSBzdmMpOw0KPiAgICAg
IHZvaWQgQ2xvc2UoKTsNCj4gDQo+ICsgICAgY29uc3Qgd2NoYXJfdCogUGF0aCgpIGNvbnN0Ow0K
PiArDQo+ICBwcm90ZWN0ZWQ6DQo+ICAgICAgYm9vbCBJb2N0bChEV09SRCBpb2N0bCwgdm9pZCog
aW4sIERXT1JEIGluc3osIHZvaWQqIG91dCwgRFdPUkQgb3V0c3osDQo+IERXT1JEKiBieXRlcyk7
DQo+IA0KPiBAQCAtNTgsNiArNjAsOCBAQCBwcml2YXRlOg0KPiAgaW50ZXJmYWNlIElEZXZpY2VD
cmVhdG9yDQo+ICB7DQo+ICAgICAgdmlydHVhbCBDRGV2aWNlKiBDcmVhdGUoY29uc3Qgd2NoYXJf
dCogcGF0aCkgPSAwOw0KPiArICAgIHZpcnR1YWwgdm9pZCBPbkRldmljZUFkZGVkKENEZXZpY2Uq
IGRldikgPSAwOw0KPiArICAgIHZpcnR1YWwgdm9pZCBPbkRldmljZVJlbW92ZWQoQ0RldmljZSog
ZGV2KSA9IDA7DQo+ICB9Ow0KPiANCj4gIGNsYXNzIENEZXZpY2VMaXN0DQo+IGRpZmYgLS1naXQg
YS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5j
cHANCj4gaW5kZXggMWVlYzg3ZS4uYTc5ODdkYyAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2Vu
dC9MaXRlQWdlbnQuY3BwDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBA
QCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBDTGl0ZUFnZW50IHNfc2VydmljZTsNCj4gICAgICBy
ZXR1cm4gc19zZXJ2aWNlLl9fU2VydmljZUNvbnRyb2xIYW5kbGVyRXgocmVxLCBldnQsIGRhdGEs
IGN0eHQpOw0KPiAgfQ0KPiANCj4gLUNMaXRlQWdlbnQ6OkNMaXRlQWdlbnQoKSA6IG1faGFuZGxl
KE5VTEwpLA0KPiBtX2RldnMoR1VJRF9JTlRFUkZBQ0VfWEVOSUZBQ0UpDQo+ICtDTGl0ZUFnZW50
OjpDTGl0ZUFnZW50KCkgOiBtX2hhbmRsZShOVUxMKSwNCj4gbV9kZXZzKEdVSURfSU5URVJGQUNF
X1hFTklGQUNFKSwgbV9kZXYoTlVMTCkNCj4gIHsNCj4gICAgICBtX3N0YXR1cy5kd1NlcnZpY2VU
eXBlICAgICAgICA9IFNFUlZJQ0VfV0lOMzI7DQo+ICAgICAgbV9zdGF0dXMuZHdDdXJyZW50U3Rh
dGUgICAgICAgPSBTRVJWSUNFX1NUQVJUX1BFTkRJTkc7DQo+IEBAIC0xMzYsOSArMTM2LDI4IEBA
IENMaXRlQWdlbnQ6On5DTGl0ZUFnZW50KCkNCj4gDQo+ICAvKnZpcnR1YWwqLyBDRGV2aWNlKiBD
TGl0ZUFnZW50OjpDcmVhdGUoY29uc3Qgd2NoYXJfdCogcGF0aCkNCj4gIHsNCj4gKyAgICAvLyBj
cmVhdGUgc3ViY2xhc3Mgb2YgQ0RldmljZQ0KDQpTaG91bGRuJ3QgdGhpcyBjb21tZW50IGhhdmUg
YmVlbiB0aGVyZSBpbiB0aGUgZmlyc3QgcGxhY2U/DQoNCiAgUGF1bA0KDQo+ICAgICAgcmV0dXJu
IG5ldyBDRGV2aWNlKHBhdGgpOw0KPiAgfQ0KPiANCj4gKy8qdmlydHVhbCovIHZvaWQgQ0xpdGVB
Z2VudDo6T25EZXZpY2VBZGRlZChDRGV2aWNlKiBkZXYpDQo+ICt7DQo+ICsgICAgQ0xpdGVBZ2Vu
dDo6TG9nKCJPbkRldmljZUFkZGVkKCV3cylcbiIsIGRldi0+UGF0aCgpKTsNCj4gKyAgICBpZiAo
bV9kZXYgPT0gTlVMTCkgew0KPiArICAgICAgICBtX2RldiA9IGRldjsNCj4gKyAgICAgICAgLy8g
c2V0dGluZyBhY3RpdmUgZGV2aWNlDQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsvKnZpcnR1YWwq
LyB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2aWNlUmVtb3ZlZChDRGV2aWNlKiBkZXYpDQo+ICt7DQo+
ICsgICAgQ0xpdGVBZ2VudDo6TG9nKCJPbkRldmljZVJlbW92ZWQoJXdzKVxuIiwgZGV2LT5QYXRo
KCkpOw0KPiArICAgIGlmIChkZXYgPT0gbV9kZXYpIHsNCj4gKyAgICAgICAgbV9kZXYgPSBOVUxM
Ow0KPiArICAgICAgICAvLyBhY3RpdmUgZGV2aWNlDQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICB2
b2lkIENMaXRlQWdlbnQ6Ok9uU2VydmljZVN0YXJ0KCkNCj4gIHsNCj4gICAgICBDTGl0ZUFnZW50
OjpMb2coIk9uU2VydmljZVN0YXJ0KClcbiIpOw0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2Vu
dC9MaXRlQWdlbnQuaCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gaW5kZXggNTdlZDll
Ny4uMjYxZTczNyAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiAr
KysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IEBAIC01OCw2ICs1OCw4IEBAIHB1Ymxp
YzogLy8gY3Rvci9kdG9yDQo+IA0KPiAgcHVibGljOiAvLyBJRGV2aWNlQ3JlYXRvcg0KPiAgICAg
IHZpcnR1YWwgQ0RldmljZSogQ3JlYXRlKGNvbnN0IHdjaGFyX3QqIHBhdGgpOw0KPiArICAgIHZp
cnR1YWwgdm9pZCBPbkRldmljZUFkZGVkKENEZXZpY2UqIGRldik7DQo+ICsgICAgdmlydHVhbCB2
b2lkIE9uRGV2aWNlUmVtb3ZlZChDRGV2aWNlKiBkZXYpOw0KPiANCj4gIHByaXZhdGU6IC8vIHNl
cnZpY2UgZXZlbnRzDQo+ICAgICAgdm9pZCBPblNlcnZpY2VTdGFydCgpOw0KPiBAQCAtNzUsNiAr
NzcsNyBAQCBwcml2YXRlOiAvLyBzZXJ2aWNlIHN1cHBvcnQNCj4gICAgICBIQU5ETEUgICAgICAg
ICAgICAgICAgICBtX3N2Y19zdG9wOw0KPiANCj4gICAgICBDRGV2aWNlTGlzdCAgICAgICAgICAg
ICBtX2RldnM7DQo+ICsgICAgQ0RldmljZSogICAgICAgICAgICAgICAgbV9kZXY7DQo+ICB9Ow0K
PiANCj4gICNlbmRpZg0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwg
bWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRw
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1k
ZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2lu
LXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4t
cHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:11:48 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:11:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFh0V-0003Nk-R0; Wed, 22 Jun 2016 12:11:47 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFh0V-0003Ne-BO
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:11:47 +0000
Received: from [85.158.139.211] by server-6.bemta-5.messagelabs.com id
 3E/ED-00606-2808A675; Wed, 22 Jun 2016 12:11:46 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNIsWRWlGSWpSXmKPExsWyU9JRQrepISv
 c4Ewfl8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDNeLh4InvBZsOKtwe3sjQwPjDoYuTkkBDwk9gz
 +TQriM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V1gNcICARIfLy9jh6gJlPh8cBULhG0k0
 TL3ARuIzSKgKrHq702wXl4Bd4nmj0sZuxi5OIQEGhgl7nXOAEtwCrhJTNsxB8xmFJCV+NK4Gm
 qZuMStJxBHSAgISCzZc54ZwhaVePn4HyuEbSCxdek+oMUcQPWaEut36UO0KkpM6X7IDrFXUOL
 kzCdgtwkJqEhseXwAagy3xMrPf1gmMIrOQrJtFsKkWUgmzUIyaQEjyypGjeLUorLUIl0jA72k
 osz0jJLcxMwcXUMDU73c1OLixPTUnMSkYr3k/NxNjMBIqWdgYNzB2Djb7xCjJAeTkiivvHJWu
 BBfUn5KZUZicUZ8UWlOavEhRhkODiUJ3m11QDnBotT01Iq0zBxgzMKkJTh4lER4d4CkeYsLEn
 OLM9MhUqcYFaXEeVtAEgIgiYzSPLg2WJq4xCgrJczLyMDAIMRTkFqUm1mCKv+KUZyDUUmYtx9
 kCk9mXgnc9FdAi5mAFi/rTwdZXJKIkJJqYMzS15s8ST+u5oVl5OQtmxTt2N7fiY++sPHh3pVi
 inc//p7oqW7y1PGU52ZO0atHdS95P/BRSfgWEsJXu6axLSetiTn51mPJoPJYZT/hZd4r/P9n5
 HVtunKkv2b3cYW1fGH1GxnY55b4HVR3TpaP9hXUnbpv2/orLe5ZC5WfRyxsS7lSsk5WWImlOC
 PRUIu5qDgRAIZqvaQOAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-11.tower-206.messagelabs.com!1466597505!33954644!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 34046 invoked from network); 22 Jun 2016 12:11:46 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-11.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:11:46 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24784712"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 07/20] Track a single device in the
 service.
Thread-Index: AQHRtce5YZYYS2SWt0GYfG7bC67yhZ/1kpmw
Date: Wed, 22 Jun 2016 12:11:45 +0000
Message-ID: <cc00472a3ef44c079eb04d26f8b33cd0@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-8-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-8-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 07/20] Track a single device in the
 service.
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDcvMjBdIFRyYWNrIGEgc2luZ2xlIGRldmljZSBpbiB0aGUg
c2VydmljZS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0
cml4LmNvbT4NCj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuY3BwIHwgIDkgKysr
KysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuaCAgIHwgIDQgKysrKw0KPiAgc3Jj
L2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwICB8IDIxICsrKysrKysrKysrKysrKysrKysrLQ0KPiAg
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaCAgICB8ICAzICsrKw0KPiAgNCBmaWxlcyBjaGFuZ2Vk
LCAzNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3Jj
L2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHAN
Cj4gaW5kZXggMWNiM2JmNi4uOTAzMzQwNyAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9E
ZXZpY2VMaXN0LmNwcA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuY3BwDQo+IEBA
IC05Niw2ICs5NiwxMSBAQCB2b2lkIENEZXZpY2U6OkNsb3NlKCkNCj4gICAgICBtX2hhbmRsZSA9
IElOVkFMSURfSEFORExFX1ZBTFVFOw0KPiAgfQ0KPiANCj4gK2NvbnN0IHdjaGFyX3QqIENEZXZp
Y2U6OlBhdGgoKSBjb25zdA0KPiArew0KPiArICAgIHJldHVybiBtX3BhdGguY19zdHIoKTsNCj4g
K30NCj4gKw0KPiAgYm9vbCBDRGV2aWNlOjpJb2N0bChEV09SRCBpb2N0bCwgdm9pZCogaW4sIERX
T1JEIGluc3osIHZvaWQqIG91dCwgRFdPUkQNCj4gb3V0c3osIERXT1JEKiBieXRlcykNCj4gIHsN
Cj4gICAgICBpZiAobV9oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQo+IEBAIC0yNTUs
NiArMjYwLDggQEAgdm9pZCBDRGV2aWNlTGlzdDo6T25EZXZpY2VBZGRlZChjb25zdCBzdGQ6Ondz
dHJpbmcmDQo+IHBhdGgpDQo+ICAgICAgfQ0KPiANCj4gICAgICBtX2RldnNbaGFuZGxlXSA9IGRl
djsNCj4gKyAgICBpZiAobV9pbXBsKQ0KPiArICAgICAgICBtX2ltcGwtPk9uRGV2aWNlQWRkZWQo
ZGV2KTsNCj4gIH0NCj4gDQo+ICB2b2lkIENEZXZpY2VMaXN0OjpPbkRldmljZVF1ZXJ5UmVtb3Zl
KEhBTkRMRSBoYW5kbGUpDQo+IEBAIC0yNjQsNiArMjcxLDggQEAgdm9pZCBDRGV2aWNlTGlzdDo6
T25EZXZpY2VRdWVyeVJlbW92ZShIQU5ETEUNCj4gaGFuZGxlKQ0KPiAgICAgICAgICByZXR1cm47
IC8vIHNwdXJpb3VzIGV2ZW50Pw0KPiANCj4gICAgICBDRGV2aWNlKiBkZXYgPSBpdC0+c2Vjb25k
Ow0KPiArICAgIGlmIChtX2ltcGwpDQo+ICsgICAgICAgIG1faW1wbC0+T25EZXZpY2VSZW1vdmVk
KGRldik7DQo+ICAgICAgZGV2LT5DbG9zZSgpOw0KPiAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Ny
Yy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oIGIvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmgNCj4g
aW5kZXggMTBkZjU0Ni4uNDU3YTA5OSAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9EZXZp
Y2VMaXN0LmgNCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmgNCj4gQEAgLTQ2LDYg
KzQ2LDggQEAgcHVibGljOg0KPiAgICAgIEhBTkRMRSBPcGVuKEhBTkRMRSBzdmMpOw0KPiAgICAg
IHZvaWQgQ2xvc2UoKTsNCj4gDQo+ICsgICAgY29uc3Qgd2NoYXJfdCogUGF0aCgpIGNvbnN0Ow0K
PiArDQo+ICBwcm90ZWN0ZWQ6DQo+ICAgICAgYm9vbCBJb2N0bChEV09SRCBpb2N0bCwgdm9pZCog
aW4sIERXT1JEIGluc3osIHZvaWQqIG91dCwgRFdPUkQgb3V0c3osDQo+IERXT1JEKiBieXRlcyk7
DQo+IA0KPiBAQCAtNTgsNiArNjAsOCBAQCBwcml2YXRlOg0KPiAgaW50ZXJmYWNlIElEZXZpY2VD
cmVhdG9yDQo+ICB7DQo+ICAgICAgdmlydHVhbCBDRGV2aWNlKiBDcmVhdGUoY29uc3Qgd2NoYXJf
dCogcGF0aCkgPSAwOw0KPiArICAgIHZpcnR1YWwgdm9pZCBPbkRldmljZUFkZGVkKENEZXZpY2Uq
IGRldikgPSAwOw0KPiArICAgIHZpcnR1YWwgdm9pZCBPbkRldmljZVJlbW92ZWQoQ0RldmljZSog
ZGV2KSA9IDA7DQo+ICB9Ow0KPiANCj4gIGNsYXNzIENEZXZpY2VMaXN0DQo+IGRpZmYgLS1naXQg
YS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5j
cHANCj4gaW5kZXggMWVlYzg3ZS4uYTc5ODdkYyAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2Vu
dC9MaXRlQWdlbnQuY3BwDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBA
QCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBDTGl0ZUFnZW50IHNfc2VydmljZTsNCj4gICAgICBy
ZXR1cm4gc19zZXJ2aWNlLl9fU2VydmljZUNvbnRyb2xIYW5kbGVyRXgocmVxLCBldnQsIGRhdGEs
IGN0eHQpOw0KPiAgfQ0KPiANCj4gLUNMaXRlQWdlbnQ6OkNMaXRlQWdlbnQoKSA6IG1faGFuZGxl
KE5VTEwpLA0KPiBtX2RldnMoR1VJRF9JTlRFUkZBQ0VfWEVOSUZBQ0UpDQo+ICtDTGl0ZUFnZW50
OjpDTGl0ZUFnZW50KCkgOiBtX2hhbmRsZShOVUxMKSwNCj4gbV9kZXZzKEdVSURfSU5URVJGQUNF
X1hFTklGQUNFKSwgbV9kZXYoTlVMTCkNCj4gIHsNCj4gICAgICBtX3N0YXR1cy5kd1NlcnZpY2VU
eXBlICAgICAgICA9IFNFUlZJQ0VfV0lOMzI7DQo+ICAgICAgbV9zdGF0dXMuZHdDdXJyZW50U3Rh
dGUgICAgICAgPSBTRVJWSUNFX1NUQVJUX1BFTkRJTkc7DQo+IEBAIC0xMzYsOSArMTM2LDI4IEBA
IENMaXRlQWdlbnQ6On5DTGl0ZUFnZW50KCkNCj4gDQo+ICAvKnZpcnR1YWwqLyBDRGV2aWNlKiBD
TGl0ZUFnZW50OjpDcmVhdGUoY29uc3Qgd2NoYXJfdCogcGF0aCkNCj4gIHsNCj4gKyAgICAvLyBj
cmVhdGUgc3ViY2xhc3Mgb2YgQ0RldmljZQ0KDQpTaG91bGRuJ3QgdGhpcyBjb21tZW50IGhhdmUg
YmVlbiB0aGVyZSBpbiB0aGUgZmlyc3QgcGxhY2U/DQoNCiAgUGF1bA0KDQo+ICAgICAgcmV0dXJu
IG5ldyBDRGV2aWNlKHBhdGgpOw0KPiAgfQ0KPiANCj4gKy8qdmlydHVhbCovIHZvaWQgQ0xpdGVB
Z2VudDo6T25EZXZpY2VBZGRlZChDRGV2aWNlKiBkZXYpDQo+ICt7DQo+ICsgICAgQ0xpdGVBZ2Vu
dDo6TG9nKCJPbkRldmljZUFkZGVkKCV3cylcbiIsIGRldi0+UGF0aCgpKTsNCj4gKyAgICBpZiAo
bV9kZXYgPT0gTlVMTCkgew0KPiArICAgICAgICBtX2RldiA9IGRldjsNCj4gKyAgICAgICAgLy8g
c2V0dGluZyBhY3RpdmUgZGV2aWNlDQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsvKnZpcnR1YWwq
LyB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2aWNlUmVtb3ZlZChDRGV2aWNlKiBkZXYpDQo+ICt7DQo+
ICsgICAgQ0xpdGVBZ2VudDo6TG9nKCJPbkRldmljZVJlbW92ZWQoJXdzKVxuIiwgZGV2LT5QYXRo
KCkpOw0KPiArICAgIGlmIChkZXYgPT0gbV9kZXYpIHsNCj4gKyAgICAgICAgbV9kZXYgPSBOVUxM
Ow0KPiArICAgICAgICAvLyBhY3RpdmUgZGV2aWNlDQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICB2
b2lkIENMaXRlQWdlbnQ6Ok9uU2VydmljZVN0YXJ0KCkNCj4gIHsNCj4gICAgICBDTGl0ZUFnZW50
OjpMb2coIk9uU2VydmljZVN0YXJ0KClcbiIpOw0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2Vu
dC9MaXRlQWdlbnQuaCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gaW5kZXggNTdlZDll
Ny4uMjYxZTczNyAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiAr
KysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IEBAIC01OCw2ICs1OCw4IEBAIHB1Ymxp
YzogLy8gY3Rvci9kdG9yDQo+IA0KPiAgcHVibGljOiAvLyBJRGV2aWNlQ3JlYXRvcg0KPiAgICAg
IHZpcnR1YWwgQ0RldmljZSogQ3JlYXRlKGNvbnN0IHdjaGFyX3QqIHBhdGgpOw0KPiArICAgIHZp
cnR1YWwgdm9pZCBPbkRldmljZUFkZGVkKENEZXZpY2UqIGRldik7DQo+ICsgICAgdmlydHVhbCB2
b2lkIE9uRGV2aWNlUmVtb3ZlZChDRGV2aWNlKiBkZXYpOw0KPiANCj4gIHByaXZhdGU6IC8vIHNl
cnZpY2UgZXZlbnRzDQo+ICAgICAgdm9pZCBPblNlcnZpY2VTdGFydCgpOw0KPiBAQCAtNzUsNiAr
NzcsNyBAQCBwcml2YXRlOiAvLyBzZXJ2aWNlIHN1cHBvcnQNCj4gICAgICBIQU5ETEUgICAgICAg
ICAgICAgICAgICBtX3N2Y19zdG9wOw0KPiANCj4gICAgICBDRGV2aWNlTGlzdCAgICAgICAgICAg
ICBtX2RldnM7DQo+ICsgICAgQ0RldmljZSogICAgICAgICAgICAgICAgbV9kZXY7DQo+ICB9Ow0K
PiANCj4gICNlbmRpZg0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwg
bWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRw
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1k
ZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2lu
LXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4t
cHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:19:51 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:19:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFh8I-0003X0-N8; Wed, 22 Jun 2016 12:19:50 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFh8H-0003Wn-9t
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:19:49 +0000
Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id
 5D/16-31810-4628A675; Wed, 22 Jun 2016 12:19:48 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpnleJIrShJLcpLzFFi42LZKekooZvclBV
 usOW7lsWfxYkOjB6HP1xhCWCMYs3MS8qvSGDNuLh/KXPBvsmMFc33D7A3MJ6YyNjFyMEhIeAn
 cfucWhcjJwebgI7E0qPzmUBsEYECie/v5zGD2MwCahLX93exgtjCApYS/T13GSFqrCS+TlwCV
 W8k0dh+kB3EZhFQlWja3g5WzyvgLrF34nmgOVwcQgINjBIPVy9mA0lwCrhJvNzxG2wBo4CsxJ
 fG1VDLxCVuPYE4QkJAQGLJnvPMELaoxMvH/1ghbAOJrUv3sYDczyygKbF+lz5Eq6LElO6H7BB
 7BSVOznzCAmILCahIbHl8AGoMt8TKz39YJjCKzkKybRbCpFlIJs1CMmkBI8sqRvXi1KKy1CJd
 I72kosz0jJLcxMwcXUMDY73c1OLixPTUnMSkYr3k/NxNjMBIqWdgYNzBeKrZ+RCjJAeTkiivv
 HJWuBBfUn5KZUZicUZ8UWlOavEhRhkODiUJ3mcNQDnBotT01Iq0zBxgzMKkJTh4lER4hRqB0r
 zFBYm5xZnpEKlTjLocs5bfWcskxJKXn5cqJc67DmSGAEhRRmke3AhY+rjEKCslzMvIwMAgxFO
 QWpSbWYIq/4pRnINRSZhXA2QVT2ZeCdymV0BHMAEdsaw/HeSIkkSElFQDY7Nno/6ke+ysSsw3
 /Wb8yVDg8bfe37T18Nr3xRpCzo9Pb9wrUu8Z+MD0mGHur91r5VgYSvXtPzaYfTX2faYjtNimd
 4XznXlr+yUDihZzu7RoTfu7+duO9xO/GyV9tsowOcJb0rdt38ut7zL+Z8+Vkf+hm9HwtHhfYn
 rQl6/PXs0sW5speI/XWImlOCPRUIu5qDgRAEPJSjUaAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-31.messagelabs.com!1466597987!43478724!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27988 invoked from network); 22 Jun 2016 12:19:47 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-5.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:19:47 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785268"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 08/20] Add XenIfaceItf
Thread-Index: AQHRtcefVfsoTNtluEWEq9VPGNIyr5/1k2vg
Date: Wed, 22 Jun 2016 12:19:46 +0000
Message-ID: <9bb6cad4329b478bbad79029f2d100bc@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-9-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-9-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 08/20] Add XenIfaceItf
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDgvMjBdIEFkZCBYZW5JZmFjZUl0Zg0KPiANCj4gQWJzdHJh
Y3QgdGhlIElPQ1RMIGNhbGxzIGluIGEgQ0RldmljZSBzdWJjbGFzcy4gSGFuZGxlcyB0cmFuc2xh
dGlvbg0KPiB0by9mcm9tIG1ldGhvZCBwYXJhbWV0ZXJzIHRvL2Zyb20gSU9DVEwgYnVmZmVycw0K
PiANCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0K
DQpBY2tlZC1ieTogUGF1bCBEdXJyYW4gPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0t
LQ0KPiAgc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCAgICAgICB8ICAxMCArKy0NCj4gIHNy
Yy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oICAgICAgICAgfCAgIDIgKy0NCj4gIHNyYy9saXRlYWdl
bnQvTGl0ZUFnZW50LmNwcCAgICAgICAgfCAgIDYgKy0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFn
ZW50LmggICAgICAgICAgfCAgIDMgKy0NCj4gIHNyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuY3Bw
ICAgICAgfCAxNDUNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAg
c3JjL2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5oICAgICAgICB8ICA2MCArKysrKysrKysrKysrKysN
Cj4gIHZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2ogfCAgIDIgKw0KPiAgdnMyMDEz
L2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvaiB8ICAgMiArDQo+ICA4IGZpbGVzIGNoYW5nZWQs
IDIyMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0
IHNyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuY3BwDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj
L2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2Vu
dC9EZXZpY2VMaXN0LmNwcCBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHANCj4gaW5kZXgg
OTAzMzQwNy4uM2ZjOWE4NSAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0
LmNwcA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuY3BwDQo+IEBAIC0xMDEsMTIg
KzEwMSwxOCBAQCBjb25zdCB3Y2hhcl90KiBDRGV2aWNlOjpQYXRoKCkgY29uc3QNCj4gICAgICBy
ZXR1cm4gbV9wYXRoLmNfc3RyKCk7DQo+ICB9DQo+IA0KPiAtYm9vbCBDRGV2aWNlOjpJb2N0bChE
V09SRCBpb2N0bCwgdm9pZCogaW4sIERXT1JEIGluc3osIHZvaWQqIG91dCwgRFdPUkQNCj4gb3V0
c3osIERXT1JEKiBieXRlcykNCj4gK2Jvb2wgQ0RldmljZTo6SW9jdGwoRFdPUkQgaW9jdGwsIHZv
aWQqIGluLCBEV09SRCBpbnN6LCB2b2lkKiBvdXQsIERXT1JEDQo+IG91dHN6LCBEV09SRCogYnl0
ZXMgLyo9IE5VTEwqLykNCj4gIHsNCj4gICAgICBpZiAobV9oYW5kbGUgPT0gSU5WQUxJRF9IQU5E
TEVfVkFMVUUpDQo+ICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gDQo+IC0gICAgaWYgKCFEZXZp
Y2VJb0NvbnRyb2wobV9oYW5kbGUsIGlvY3RsLCBpbiwgaW5zeiwgb3V0LCBvdXRzeiwgYnl0ZXMs
IE5VTEwpKQ0KPiArICAgIERXT1JEICAgX2J5dGVzOw0KPiArICAgIGlmICghRGV2aWNlSW9Db250
cm9sKG1faGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaW9jdGwsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICBpbiwgaW5zeiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IG91dCwgb3V0c3osDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZXMgPT0gTlVMTCkg
PyAmX2J5dGVzIDogYnl0ZXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkNCj4g
ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiANCj4gICAgICByZXR1cm4gdHJ1ZTsNCj4gZGlmZiAt
LWdpdCBhL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oIGIvc3JjL2xpdGVhZ2VudC9EZXZpY2VM
aXN0LmgNCj4gaW5kZXggNDU3YTA5OS4uNmExYjBiNCAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVh
Z2VudC9EZXZpY2VMaXN0LmgNCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmgNCj4g
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOg0KPiAgICAgIGNvbnN0IHdjaGFyX3QqIFBhdGgoKSBj
b25zdDsNCj4gDQo+ICBwcm90ZWN0ZWQ6DQo+IC0gICAgYm9vbCBJb2N0bChEV09SRCBpb2N0bCwg
dm9pZCogaW4sIERXT1JEIGluc3osIHZvaWQqIG91dCwgRFdPUkQgb3V0c3osDQo+IERXT1JEKiBi
eXRlcyk7DQo+ICsgICAgYm9vbCBJb2N0bChEV09SRCBpb2N0bCwgdm9pZCogaW4sIERXT1JEIGlu
c3osIHZvaWQqIG91dCwgRFdPUkQgb3V0c3osDQo+IERXT1JEKiBieXRlcyA9IE5VTEwpOw0KPiAN
Cj4gIHByaXZhdGU6DQo+ICAgICAgc3RkOjp3c3RyaW5nICAgIG1fcGF0aDsNCj4gZGlmZiAtLWdp
dCBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50
LmNwcA0KPiBpbmRleCBhNzk4N2RjLi45MDhjMGM5IDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC5jcHANCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+
IEBAIC0xMzcsMTQgKzEzNywxNCBAQCBDTGl0ZUFnZW50Ojp+Q0xpdGVBZ2VudCgpDQo+ICAvKnZp
cnR1YWwqLyBDRGV2aWNlKiBDTGl0ZUFnZW50OjpDcmVhdGUoY29uc3Qgd2NoYXJfdCogcGF0aCkN
Cj4gIHsNCj4gICAgICAvLyBjcmVhdGUgc3ViY2xhc3Mgb2YgQ0RldmljZQ0KPiAtICAgIHJldHVy
biBuZXcgQ0RldmljZShwYXRoKTsNCj4gKyAgICByZXR1cm4gbmV3IENYZW5JZmFjZUl0ZihwYXRo
KTsNCj4gIH0NCj4gDQo+ICAvKnZpcnR1YWwqLyB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2aWNlQWRk
ZWQoQ0RldmljZSogZGV2KQ0KPiAgew0KPiAgICAgIENMaXRlQWdlbnQ6OkxvZygiT25EZXZpY2VB
ZGRlZCgld3MpXG4iLCBkZXYtPlBhdGgoKSk7DQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpIHsN
Cj4gLSAgICAgICAgbV9kZXYgPSBkZXY7DQo+ICsgICAgICAgIG1fZGV2ID0gKENYZW5JZmFjZUl0
ZiopZGV2Ow0KPiAgICAgICAgICAvLyBzZXR0aW5nIGFjdGl2ZSBkZXZpY2UNCj4gICAgICB9DQo+
ICB9DQo+IEBAIC0xNTIsNyArMTUyLDcgQEAgQ0xpdGVBZ2VudDo6fkNMaXRlQWdlbnQoKQ0KPiAg
Lyp2aXJ0dWFsKi8gdm9pZCBDTGl0ZUFnZW50OjpPbkRldmljZVJlbW92ZWQoQ0RldmljZSogZGV2
KQ0KPiAgew0KPiAgICAgIENMaXRlQWdlbnQ6OkxvZygiT25EZXZpY2VSZW1vdmVkKCV3cylcbiIs
IGRldi0+UGF0aCgpKTsNCj4gLSAgICBpZiAoZGV2ID09IG1fZGV2KSB7DQo+ICsgICAgaWYgKChD
WGVuSWZhY2VJdGYqKWRldiA9PSBtX2Rldikgew0KPiAgICAgICAgICBtX2RldiA9IE5VTEw7DQo+
ICAgICAgICAgIC8vIGFjdGl2ZSBkZXZpY2UNCj4gICAgICB9DQo+IGRpZmYgLS1naXQgYS9zcmMv
bGl0ZWFnZW50L0xpdGVBZ2VudC5oIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBpbmRl
eCAyNjFlNzM3Li4zNjgwYWZkIDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2Vu
dC5oDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gQEAgLTM5LDYgKzM5LDcg
QEANCj4gICNkZWZpbmUgU1ZDX0RFU0MgIk1vbml0b3JzIGFuZCBwcm92aWRlcyB2YXJpb3VzIG1l
dHJpY3MgdG8gWGVuU3RvcmUiDQo+IA0KPiAgI2luY2x1ZGUgIkRldmljZUxpc3QuaCINCj4gKyNp
bmNsdWRlICJYZW5JZmFjZUl0Zi5oIg0KPiANCj4gIGNsYXNzIENMaXRlQWdlbnQgOiBwdWJsaWMg
SURldmljZUNyZWF0b3INCj4gIHsNCj4gQEAgLTc3LDcgKzc4LDcgQEAgcHJpdmF0ZTogLy8gc2Vy
dmljZSBzdXBwb3J0DQo+ICAgICAgSEFORExFICAgICAgICAgICAgICAgICAgbV9zdmNfc3RvcDsN
Cj4gDQo+ICAgICAgQ0RldmljZUxpc3QgICAgICAgICAgICAgbV9kZXZzOw0KPiAtICAgIENEZXZp
Y2UqICAgICAgICAgICAgICAgIG1fZGV2Ow0KPiArICAgIENYZW5JZmFjZUl0ZiogICAgICAgICAg
IG1fZGV2Ow0KPiAgfTsNCj4gDQo+ICAjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdl
bnQvWGVuSWZhY2VJdGYuY3BwIGIvc3JjL2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5jcHANCj4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uN2U1ZmFkZg0KPiAtLS0gL2Rldi9u
dWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuY3BwDQo+IEBAIC0wLDAgKzEs
MTQ1IEBADQo+ICsvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKg0KPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQNCj4gKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6DQo+ICsgKg0KPiArICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCj4gKyAqICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAgICAgZm9sbG93aW5n
IGRpc2NsYWltZXIuDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXINCj4gKyAqICAgICBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPiArICoNCj4gKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiArICogQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4g
KyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GDQo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQ0KPiArICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1INCj4gKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KPiArICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywNCj4gKyAqIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KPiArICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPiArICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+ICsg
KiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcNCj4gKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UNCj4gKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YNCj4gKyAqIFNVQ0ggREFNQUdFLg0KPiArICovDQo+ICsNCj4gKyNp
bmNsdWRlIDx3aW5kb3dzLmg+DQo+ICsjaW5jbHVkZSAiWGVuSWZhY2VJdGYuaCINCj4gKyNpbmNs
dWRlICJEZXZpY2VMaXN0LmgiDQo+ICsjaW5jbHVkZSAieGVuaWZhY2VfaW9jdGxzLmgiDQo+ICsN
Cj4gK0NYZW5JZmFjZUl0Zjo6Q1hlbklmYWNlSXRmKGNvbnN0IHdjaGFyX3QqIHBhdGgpIDogQ0Rl
dmljZShwYXRoKQ0KPiAre30NCj4gKw0KPiArLyp2aXJ0dWFsKi8gQ1hlbklmYWNlSXRmOjp+Q1hl
bklmYWNlSXRmKCkNCj4gK3t9DQo+ICsNCj4gKy8vIHN0b3JlIGludGVyZmFjZQ0KPiArYm9vbCBD
WGVuSWZhY2VJdGY6OlN0b3JlUmVhZChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwgc3RkOjpzdHJp
bmcmIHZhbHVlKQ0KPiArew0KPiArICAgIERXT1JEICAgYnl0ZXMoMCk7DQo+ICsgICAgY2hhciog
ICBidWZmZXI7DQo+ICsgICAgYm9vbCAgICByZXN1bHQ7DQo+ICsNCj4gKyAgICBJb2N0bChJT0NU
TF9YRU5JRkFDRV9TVE9SRV9SRUFELA0KPiArICAgICAgICAgICh2b2lkKilwYXRoLmNfc3RyKCks
IChEV09SRClwYXRoLmxlbmd0aCgpICsgMSwNCj4gKyAgICAgICAgICBOVUxMLCAwLA0KPiArICAg
ICAgICAgICZieXRlcyk7DQo+ICsNCj4gKyAgICBidWZmZXIgPSBuZXcgY2hhcltieXRlcyArIDFd
Ow0KPiArICAgIGlmIChidWZmZXIgPT0gTlVMTCkNCj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0K
PiArDQo+ICsgICAgcmVzdWx0ID0gSW9jdGwoSU9DVExfWEVOSUZBQ0VfU1RPUkVfUkVBRCwNCj4g
KyAgICAgICAgICAgICAgICAgICAodm9pZCopcGF0aC5jX3N0cigpLCAoRFdPUkQpcGF0aC5sZW5n
dGgoKSArIDEsDQo+ICsgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBieXRlcyk7DQo+ICsNCj4g
KyAgICBidWZmZXJbYnl0ZXNdID0gMDsNCj4gKyAgICBpZiAocmVzdWx0KQ0KPiArICAgICAgICB2
YWx1ZSA9IGJ1ZmZlcjsNCj4gKw0KPiArICAgIGRlbGV0ZSBbXSBidWZmZXI7DQo+ICsgICAgcmV0
dXJuIHJlc3VsdDsNCj4gK30NCj4gKw0KPiArYm9vbCBDWGVuSWZhY2VJdGY6OlN0b3JlV3JpdGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIGNvbnN0IHN0ZDo6c3RyaW5nJg0KPiB2YWx1ZSkNCj4g
K3sNCj4gKyAgICBib29sICAgcmVzdWx0Ow0KPiArICAgIHNpemVfdCBsZW5ndGggPSBwYXRoLmxl
bmd0aCgpICsgMSArIHZhbHVlLmxlbmd0aCgpICsgMSArIDE7DQo+ICsgICAgY2hhciogIGJ1ZmZl
ciA9IG5ldyBjaGFyW2xlbmd0aF07DQo+ICsgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQ0KPiArICAg
ICAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICBtZW1jcHkoYnVmZmVyLCBwYXRoLmNfc3Ry
KCksIHBhdGgubGVuZ3RoKCkpOw0KPiArICAgIGJ1ZmZlcltwYXRoLmxlbmd0aCgpXSA9IDA7DQo+
ICsNCj4gKyAgICBtZW1jcHkoYnVmZmVyICsgcGF0aC5sZW5ndGgoKSArIDEsIHZhbHVlLmNfc3Ry
KCksIHZhbHVlLmxlbmd0aCgpKTsNCj4gKyAgICBidWZmZXJbcGF0aC5sZW5ndGgoKSArIDEgKyB2
YWx1ZS5sZW5ndGgoKV0gPSAwOw0KPiArICAgIGJ1ZmZlcltsZW5ndGggLSAxXSA9IDA7DQo+ICsN
Cj4gKyAgICByZXN1bHQgPSBJb2N0bChJT0NUTF9YRU5JRkFDRV9TVE9SRV9XUklURSwgYnVmZmVy
LCAoRFdPUkQpbGVuZ3RoLA0KPiBOVUxMLCAwKTsNCj4gKyAgICBkZWxldGUgW10gYnVmZmVyOw0K
PiArICAgIHJldHVybiByZXN1bHQ7DQo+ICt9DQo+ICsNCj4gK2Jvb2wgQ1hlbklmYWNlSXRmOjpT
dG9yZVJlbW92ZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkNCj4gK3sNCj4gKyAgICByZXR1cm4g
SW9jdGwoSU9DVExfWEVOSUZBQ0VfU1RPUkVfUkVNT1ZFLA0KPiArICAgICAgICAgICAgICAgICAo
dm9pZCopcGF0aC5jX3N0cigpLCAoRFdPUkQpcGF0aC5sZW5ndGgoKSArIDEsDQo+ICsgICAgICAg
ICAgICAgICAgIE5VTEwsIDApOw0KPiArfQ0KPiArDQo+ICtib29sIENYZW5JZmFjZUl0Zjo6U3Rv
cmVBZGRXYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwgSEFORExFIGV2dCwNCj4gdm9pZCoq
IGN0eHQpDQo+ICt7DQo+ICsgICAgWEVOSUZBQ0VfU1RPUkVfQUREX1dBVENIX0lOICBpbiAgPSB7
IChQQ0hBUilwYXRoLmNfc3RyKCksDQo+IChEV09SRClwYXRoLmxlbmd0aCgpICsgMSwgZXZ0IH07
DQo+ICsgICAgWEVOSUZBQ0VfU1RPUkVfQUREX1dBVENIX09VVCBvdXQgPSB7IE5VTEwgfTsNCj4g
KyAgICBpZiAoIUlvY3RsKElPQ1RMX1hFTklGQUNFX1NUT1JFX0FERF9XQVRDSCwNCj4gKyAgICAg
ICAgICAgICAgICZpbiwgKERXT1JEKXNpemVvZihpbiksDQo+ICsgICAgICAgICAgICAgICAmb3V0
LCAoRFdPUkQpc2l6ZW9mKG91dCkpKQ0KPiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAg
KmN0eHQgPSBvdXQuQ29udGV4dDsNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiAr
Ym9vbCBDWGVuSWZhY2VJdGY6OlN0b3JlUmVtb3ZlV2F0Y2godm9pZCogY3R4dCkNCj4gK3sNCj4g
KyAgICBYRU5JRkFDRV9TVE9SRV9SRU1PVkVfV0FUQ0hfSU4gaW4gPSB7IGN0eHQgfTsNCj4gKyAg
ICByZXR1cm4gSW9jdGwoSU9DVExfWEVOSUZBQ0VfU1RPUkVfUkVNT1ZFX1dBVENILA0KPiArICAg
ICAgICAgICAgICAgICAmaW4sIChEV09SRClzaXplb2YoaW4pLA0KPiArICAgICAgICAgICAgICAg
ICBOVUxMLCAwKTsNCj4gK30NCj4gKw0KPiArLy8gc3VzcGVuZCBpbnRlcmZhY2UNCj4gK2Jvb2wg
Q1hlbklmYWNlSXRmOjpTdXNwZW5kUmVnaXN0ZXIoSEFORExFIGV2dCwgdm9pZCoqIGN0eHQpDQo+
ICt7DQo+ICsgICAgWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9JTiAgaW4gID0geyBldnQgfTsN
Cj4gKyAgICBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCBvdXQgPSB7IE5VTEwgfTsNCj4g
KyAgICBpZiAoIUlvY3RsKElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfUkVHSVNURVIsDQo+ICsgICAg
ICAgICAgICAgICAmaW4sIChEV09SRClzaXplb2YoaW4pLA0KPiArICAgICAgICAgICAgICAgJm91
dCwgKERXT1JEKXNpemVvZihvdXQpKSkNCj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAg
ICpjdHh0ID0gb3V0LkNvbnRleHQ7DQo+ICsgICAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4g
K2Jvb2wgQ1hlbklmYWNlSXRmOjpTdXNwZW5kRGVyZWdpc3Rlcih2b2lkKiBjdHh0KQ0KPiArew0K
PiArICAgIFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIGluID0geyBjdHh0IH07DQo+ICsg
ICAgcmV0dXJuIElvY3RsKElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUiwNCj4gKyAg
ICAgICAgICAgICAgICAgJmluLCAoRFdPUkQpc2l6ZW9mKGluKSwNCj4gKyAgICAgICAgICAgICAg
ICAgTlVMTCwgMCk7DQo+ICt9DQo+ICsNCj4gKy8vIHNoYXJlZGluZm8gaW50ZXJmYWNlDQo+ICti
b29sIENYZW5JZmFjZUl0Zjo6U2hhcmVkSW5mb0dldFRpbWUoRklMRVRJTUUqIHRpbWUpDQo+ICt7
DQo+ICsgICAgcmV0dXJuIElvY3RsKElPQ1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUUs
DQo+ICsgICAgICAgICAgICAgICAgIE5VTEwsIDAsDQo+ICsgICAgICAgICAgICAgICAgIHRpbWUs
IHNpemVvZihGSUxFVElNRSkpOw0KPiArfQ0KPiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUN
Cj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuaCBiL3NyYy9saXRlYWdl
bnQvWGVuSWZhY2VJdGYuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw
Li5lMzZmMTg5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9YZW5JZmFj
ZUl0Zi5oDQo+IEBAIC0wLDAgKzEsNjAgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5
c3RlbXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICog
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAr
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0K
PiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsg
Kg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAr
ICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
DQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0Uu
DQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfWEVOSUZBQ0VJVEZfSF8NCj4gKyNkZWZpbmUgX1hF
TklGQUNFSVRGX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDx3aW5kb3dzLmg+DQo+ICsjaW5jbHVkZSAi
RGV2aWNlTGlzdC5oIg0KPiArI2luY2x1ZGUgPHN0cmluZz4NCj4gKw0KPiArY2xhc3MgQ1hlbklm
YWNlSXRmIDogcHVibGljIENEZXZpY2UNCj4gK3sNCj4gK3B1YmxpYzoNCj4gKyAgICBDWGVuSWZh
Y2VJdGYoY29uc3Qgd2NoYXJfdCogcGF0aCk7DQo+ICsgICAgdmlydHVhbCB+Q1hlbklmYWNlSXRm
KCk7DQo+ICsNCj4gK3B1YmxpYzogLy8gc3RvcmUgaW50ZXJmYWNlDQo+ICsgICAgYm9vbCBTdG9y
ZVJlYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIHN0ZDo6c3RyaW5nJiB2YWx1ZSk7DQo+ICsg
ICAgYm9vbCBTdG9yZVdyaXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLCBjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUpOw0KPiArICAgIGJvb2wgU3RvcmVSZW1vdmUoY29uc3Qgc3RkOjpzdHJpbmcm
IHBhdGgpOw0KPiArICAgIGJvb2wgU3RvcmVBZGRXYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcGF0
aCwgSEFORExFIGV2dCwgdm9pZCoqIGN0eHQpOw0KPiArICAgIGJvb2wgU3RvcmVSZW1vdmVXYXRj
aCh2b2lkKiBjdHh0KTsNCj4gKw0KPiArcHVibGljOiAvLyBzdXNwZW5kIGludGVyZmFjZQ0KPiAr
ICAgIGJvb2wgU3VzcGVuZFJlZ2lzdGVyKEhBTkRMRSBldnQsIHZvaWQqKiBjdHh0KTsNCj4gKyAg
ICBib29sIFN1c3BlbmREZXJlZ2lzdGVyKHZvaWQqIGN0eHQpOw0KPiArDQo+ICtwdWJsaWM6IC8v
IHNoYXJlZGluZm8gaW50ZXJmYWNlDQo+ICsgICAgYm9vbCBTaGFyZWRJbmZvR2V0VGltZShGSUxF
VElNRSogdGltZSk7DQo+ICt9Ow0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL3ZzMjAx
Mi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gYi92czIwMTIvbGl0ZWFnZW50L0xpdGVB
Z2VudC52Y3hwcm9qDQo+IGluZGV4IDg0YjUxMTMuLjQ4NjMwNjEgMTAwNjQ0DQo+IC0tLSBhL3Zz
MjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gKysrIGIvdnMyMDEyL2xpdGVhZ2Vu
dC9MaXRlQWdlbnQudmN4cHJvag0KPiBAQCAtMTk1LDEwICsxOTUsMTIgQEANCj4gICAgPEl0ZW1H
cm91cD4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRcTGl0
ZUFnZW50LmNwcCIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRl
YWdlbnRcRGV2aWNlTGlzdC5jcHAiIC8+DQo+ICsgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNcbGl0ZWFnZW50XFhlbklmYWNlSXRmLmNwcCIgLz4NCj4gIAk8L0l0ZW1Hcm91cD4NCj4g
ICAgPEl0ZW1Hcm91cD4NCj4gICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRl
YWdlbnRcTGl0ZUFnZW50LmgiIC8+DQo+ICAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxz
cmNcbGl0ZWFnZW50XERldmljZUxpc3QuaCIgLz4NCj4gKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXC4uXHNyY1xsaXRlYWdlbnRcWGVuSWZhY2VJdGYuaCIgLz4NCj4gIAk8L0l0ZW1Hcm91cD4N
Cj4gICAgPEl0ZW1Hcm91cD4NCj4gICAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3Jj
XGxpdGVhZ2VudFxtZXNzYWdlcy5tYyI+DQo+IGRpZmYgLS1naXQgYS92czIwMTMvbGl0ZWFnZW50
L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGIvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJv
ag0KPiBpbmRleCA2YTNjNzg3Li5hN2QxMGMwIDEwMDY0NA0KPiAtLS0gYS92czIwMTMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50
LnZjeHByb2oNCj4gQEAgLTE5OSwxMCArMTk5LDEyIEBADQo+ICAgIDxJdGVtR3JvdXA+DQo+ICAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50XExpdGVBZ2VudC5jcHAi
IC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50XERldmlj
ZUxpc3QuY3BwIiAvPg0KPiArICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVh
Z2VudFxYZW5JZmFjZUl0Zi5jcHAiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdy
b3VwPg0KPiAgICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFxMaXRl
QWdlbnQuaCIgLz4NCj4gICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdl
bnRcRGV2aWNlTGlzdC5oIiAvPg0KPiArICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XGxpdGVhZ2VudFxYZW5JZmFjZUl0Zi5oIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAgPEl0
ZW1Hcm91cD4NCj4gICAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2Vu
dFxtZXNzYWdlcy5tYyI+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZl
bCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0
dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2
LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3
aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:19:51 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:19:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFh8I-0003X0-N8; Wed, 22 Jun 2016 12:19:50 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFh8H-0003Wn-9t
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:19:49 +0000
Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id
 5D/16-31810-4628A675; Wed, 22 Jun 2016 12:19:48 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpnleJIrShJLcpLzFFi42LZKekooZvclBV
 usOW7lsWfxYkOjB6HP1xhCWCMYs3MS8qvSGDNuLh/KXPBvsmMFc33D7A3MJ6YyNjFyMEhIeAn
 cfucWhcjJwebgI7E0qPzmUBsEYECie/v5zGD2MwCahLX93exgtjCApYS/T13GSFqrCS+TlwCV
 W8k0dh+kB3EZhFQlWja3g5WzyvgLrF34nmgOVwcQgINjBIPVy9mA0lwCrhJvNzxG2wBo4CsxJ
 fG1VDLxCVuPYE4QkJAQGLJnvPMELaoxMvH/1ghbAOJrUv3sYDczyygKbF+lz5Eq6LElO6H7BB
 7BSVOznzCAmILCahIbHl8AGoMt8TKz39YJjCKzkKybRbCpFlIJs1CMmkBI8sqRvXi1KKy1CJd
 I72kosz0jJLcxMwcXUMDY73c1OLixPTUnMSkYr3k/NxNjMBIqWdgYNzBeKrZ+RCjJAeTkiivv
 HJWuBBfUn5KZUZicUZ8UWlOavEhRhkODiUJ3mcNQDnBotT01Iq0zBxgzMKkJTh4lER4hRqB0r
 zFBYm5xZnpEKlTjLocs5bfWcskxJKXn5cqJc67DmSGAEhRRmke3AhY+rjEKCslzMvIwMAgxFO
 QWpSbWYIq/4pRnINRSZhXA2QVT2ZeCdymV0BHMAEdsaw/HeSIkkSElFQDY7Nno/6ke+ysSsw3
 /Wb8yVDg8bfe37T18Nr3xRpCzo9Pb9wrUu8Z+MD0mGHur91r5VgYSvXtPzaYfTX2faYjtNimd
 4XznXlr+yUDihZzu7RoTfu7+duO9xO/GyV9tsowOcJb0rdt38ut7zL+Z8+Vkf+hm9HwtHhfYn
 rQl6/PXs0sW5speI/XWImlOCPRUIu5qDgRAEPJSjUaAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-31.messagelabs.com!1466597987!43478724!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 27988 invoked from network); 22 Jun 2016 12:19:47 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-5.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:19:47 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785268"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 08/20] Add XenIfaceItf
Thread-Index: AQHRtcefVfsoTNtluEWEq9VPGNIyr5/1k2vg
Date: Wed, 22 Jun 2016 12:19:46 +0000
Message-ID: <9bb6cad4329b478bbad79029f2d100bc@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-9-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-9-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 08/20] Add XenIfaceItf
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDgvMjBdIEFkZCBYZW5JZmFjZUl0Zg0KPiANCj4gQWJzdHJh
Y3QgdGhlIElPQ1RMIGNhbGxzIGluIGEgQ0RldmljZSBzdWJjbGFzcy4gSGFuZGxlcyB0cmFuc2xh
dGlvbg0KPiB0by9mcm9tIG1ldGhvZCBwYXJhbWV0ZXJzIHRvL2Zyb20gSU9DVEwgYnVmZmVycw0K
PiANCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0K
DQpBY2tlZC1ieTogUGF1bCBEdXJyYW4gPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0t
LQ0KPiAgc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCAgICAgICB8ICAxMCArKy0NCj4gIHNy
Yy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oICAgICAgICAgfCAgIDIgKy0NCj4gIHNyYy9saXRlYWdl
bnQvTGl0ZUFnZW50LmNwcCAgICAgICAgfCAgIDYgKy0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFn
ZW50LmggICAgICAgICAgfCAgIDMgKy0NCj4gIHNyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuY3Bw
ICAgICAgfCAxNDUNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAg
c3JjL2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5oICAgICAgICB8ICA2MCArKysrKysrKysrKysrKysN
Cj4gIHZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2ogfCAgIDIgKw0KPiAgdnMyMDEz
L2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvaiB8ICAgMiArDQo+ICA4IGZpbGVzIGNoYW5nZWQs
IDIyMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0
IHNyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuY3BwDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj
L2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2Vu
dC9EZXZpY2VMaXN0LmNwcCBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHANCj4gaW5kZXgg
OTAzMzQwNy4uM2ZjOWE4NSAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0
LmNwcA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuY3BwDQo+IEBAIC0xMDEsMTIg
KzEwMSwxOCBAQCBjb25zdCB3Y2hhcl90KiBDRGV2aWNlOjpQYXRoKCkgY29uc3QNCj4gICAgICBy
ZXR1cm4gbV9wYXRoLmNfc3RyKCk7DQo+ICB9DQo+IA0KPiAtYm9vbCBDRGV2aWNlOjpJb2N0bChE
V09SRCBpb2N0bCwgdm9pZCogaW4sIERXT1JEIGluc3osIHZvaWQqIG91dCwgRFdPUkQNCj4gb3V0
c3osIERXT1JEKiBieXRlcykNCj4gK2Jvb2wgQ0RldmljZTo6SW9jdGwoRFdPUkQgaW9jdGwsIHZv
aWQqIGluLCBEV09SRCBpbnN6LCB2b2lkKiBvdXQsIERXT1JEDQo+IG91dHN6LCBEV09SRCogYnl0
ZXMgLyo9IE5VTEwqLykNCj4gIHsNCj4gICAgICBpZiAobV9oYW5kbGUgPT0gSU5WQUxJRF9IQU5E
TEVfVkFMVUUpDQo+ICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gDQo+IC0gICAgaWYgKCFEZXZp
Y2VJb0NvbnRyb2wobV9oYW5kbGUsIGlvY3RsLCBpbiwgaW5zeiwgb3V0LCBvdXRzeiwgYnl0ZXMs
IE5VTEwpKQ0KPiArICAgIERXT1JEICAgX2J5dGVzOw0KPiArICAgIGlmICghRGV2aWNlSW9Db250
cm9sKG1faGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaW9jdGwsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICBpbiwgaW5zeiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IG91dCwgb3V0c3osDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZXMgPT0gTlVMTCkg
PyAmX2J5dGVzIDogYnl0ZXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkNCj4g
ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiANCj4gICAgICByZXR1cm4gdHJ1ZTsNCj4gZGlmZiAt
LWdpdCBhL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oIGIvc3JjL2xpdGVhZ2VudC9EZXZpY2VM
aXN0LmgNCj4gaW5kZXggNDU3YTA5OS4uNmExYjBiNCAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVh
Z2VudC9EZXZpY2VMaXN0LmgNCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmgNCj4g
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOg0KPiAgICAgIGNvbnN0IHdjaGFyX3QqIFBhdGgoKSBj
b25zdDsNCj4gDQo+ICBwcm90ZWN0ZWQ6DQo+IC0gICAgYm9vbCBJb2N0bChEV09SRCBpb2N0bCwg
dm9pZCogaW4sIERXT1JEIGluc3osIHZvaWQqIG91dCwgRFdPUkQgb3V0c3osDQo+IERXT1JEKiBi
eXRlcyk7DQo+ICsgICAgYm9vbCBJb2N0bChEV09SRCBpb2N0bCwgdm9pZCogaW4sIERXT1JEIGlu
c3osIHZvaWQqIG91dCwgRFdPUkQgb3V0c3osDQo+IERXT1JEKiBieXRlcyA9IE5VTEwpOw0KPiAN
Cj4gIHByaXZhdGU6DQo+ICAgICAgc3RkOjp3c3RyaW5nICAgIG1fcGF0aDsNCj4gZGlmZiAtLWdp
dCBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50
LmNwcA0KPiBpbmRleCBhNzk4N2RjLi45MDhjMGM5IDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC5jcHANCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+
IEBAIC0xMzcsMTQgKzEzNywxNCBAQCBDTGl0ZUFnZW50Ojp+Q0xpdGVBZ2VudCgpDQo+ICAvKnZp
cnR1YWwqLyBDRGV2aWNlKiBDTGl0ZUFnZW50OjpDcmVhdGUoY29uc3Qgd2NoYXJfdCogcGF0aCkN
Cj4gIHsNCj4gICAgICAvLyBjcmVhdGUgc3ViY2xhc3Mgb2YgQ0RldmljZQ0KPiAtICAgIHJldHVy
biBuZXcgQ0RldmljZShwYXRoKTsNCj4gKyAgICByZXR1cm4gbmV3IENYZW5JZmFjZUl0ZihwYXRo
KTsNCj4gIH0NCj4gDQo+ICAvKnZpcnR1YWwqLyB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2aWNlQWRk
ZWQoQ0RldmljZSogZGV2KQ0KPiAgew0KPiAgICAgIENMaXRlQWdlbnQ6OkxvZygiT25EZXZpY2VB
ZGRlZCgld3MpXG4iLCBkZXYtPlBhdGgoKSk7DQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpIHsN
Cj4gLSAgICAgICAgbV9kZXYgPSBkZXY7DQo+ICsgICAgICAgIG1fZGV2ID0gKENYZW5JZmFjZUl0
ZiopZGV2Ow0KPiAgICAgICAgICAvLyBzZXR0aW5nIGFjdGl2ZSBkZXZpY2UNCj4gICAgICB9DQo+
ICB9DQo+IEBAIC0xNTIsNyArMTUyLDcgQEAgQ0xpdGVBZ2VudDo6fkNMaXRlQWdlbnQoKQ0KPiAg
Lyp2aXJ0dWFsKi8gdm9pZCBDTGl0ZUFnZW50OjpPbkRldmljZVJlbW92ZWQoQ0RldmljZSogZGV2
KQ0KPiAgew0KPiAgICAgIENMaXRlQWdlbnQ6OkxvZygiT25EZXZpY2VSZW1vdmVkKCV3cylcbiIs
IGRldi0+UGF0aCgpKTsNCj4gLSAgICBpZiAoZGV2ID09IG1fZGV2KSB7DQo+ICsgICAgaWYgKChD
WGVuSWZhY2VJdGYqKWRldiA9PSBtX2Rldikgew0KPiAgICAgICAgICBtX2RldiA9IE5VTEw7DQo+
ICAgICAgICAgIC8vIGFjdGl2ZSBkZXZpY2UNCj4gICAgICB9DQo+IGRpZmYgLS1naXQgYS9zcmMv
bGl0ZWFnZW50L0xpdGVBZ2VudC5oIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBpbmRl
eCAyNjFlNzM3Li4zNjgwYWZkIDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2Vu
dC5oDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gQEAgLTM5LDYgKzM5LDcg
QEANCj4gICNkZWZpbmUgU1ZDX0RFU0MgIk1vbml0b3JzIGFuZCBwcm92aWRlcyB2YXJpb3VzIG1l
dHJpY3MgdG8gWGVuU3RvcmUiDQo+IA0KPiAgI2luY2x1ZGUgIkRldmljZUxpc3QuaCINCj4gKyNp
bmNsdWRlICJYZW5JZmFjZUl0Zi5oIg0KPiANCj4gIGNsYXNzIENMaXRlQWdlbnQgOiBwdWJsaWMg
SURldmljZUNyZWF0b3INCj4gIHsNCj4gQEAgLTc3LDcgKzc4LDcgQEAgcHJpdmF0ZTogLy8gc2Vy
dmljZSBzdXBwb3J0DQo+ICAgICAgSEFORExFICAgICAgICAgICAgICAgICAgbV9zdmNfc3RvcDsN
Cj4gDQo+ICAgICAgQ0RldmljZUxpc3QgICAgICAgICAgICAgbV9kZXZzOw0KPiAtICAgIENEZXZp
Y2UqICAgICAgICAgICAgICAgIG1fZGV2Ow0KPiArICAgIENYZW5JZmFjZUl0ZiogICAgICAgICAg
IG1fZGV2Ow0KPiAgfTsNCj4gDQo+ICAjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdl
bnQvWGVuSWZhY2VJdGYuY3BwIGIvc3JjL2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5jcHANCj4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uN2U1ZmFkZg0KPiAtLS0gL2Rldi9u
dWxsDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuY3BwDQo+IEBAIC0wLDAgKzEs
MTQ1IEBADQo+ICsvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKg0KPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQNCj4gKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6DQo+ICsgKg0KPiArICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCj4gKyAqICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAgICAgZm9sbG93aW5n
IGRpc2NsYWltZXIuDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXINCj4gKyAqICAgICBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPiArICoNCj4gKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiArICogQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4g
KyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GDQo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQ0KPiArICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1INCj4gKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KPiArICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywNCj4gKyAqIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KPiArICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPiArICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+ICsg
KiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcNCj4gKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UNCj4gKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YNCj4gKyAqIFNVQ0ggREFNQUdFLg0KPiArICovDQo+ICsNCj4gKyNp
bmNsdWRlIDx3aW5kb3dzLmg+DQo+ICsjaW5jbHVkZSAiWGVuSWZhY2VJdGYuaCINCj4gKyNpbmNs
dWRlICJEZXZpY2VMaXN0LmgiDQo+ICsjaW5jbHVkZSAieGVuaWZhY2VfaW9jdGxzLmgiDQo+ICsN
Cj4gK0NYZW5JZmFjZUl0Zjo6Q1hlbklmYWNlSXRmKGNvbnN0IHdjaGFyX3QqIHBhdGgpIDogQ0Rl
dmljZShwYXRoKQ0KPiAre30NCj4gKw0KPiArLyp2aXJ0dWFsKi8gQ1hlbklmYWNlSXRmOjp+Q1hl
bklmYWNlSXRmKCkNCj4gK3t9DQo+ICsNCj4gKy8vIHN0b3JlIGludGVyZmFjZQ0KPiArYm9vbCBD
WGVuSWZhY2VJdGY6OlN0b3JlUmVhZChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwgc3RkOjpzdHJp
bmcmIHZhbHVlKQ0KPiArew0KPiArICAgIERXT1JEICAgYnl0ZXMoMCk7DQo+ICsgICAgY2hhciog
ICBidWZmZXI7DQo+ICsgICAgYm9vbCAgICByZXN1bHQ7DQo+ICsNCj4gKyAgICBJb2N0bChJT0NU
TF9YRU5JRkFDRV9TVE9SRV9SRUFELA0KPiArICAgICAgICAgICh2b2lkKilwYXRoLmNfc3RyKCks
IChEV09SRClwYXRoLmxlbmd0aCgpICsgMSwNCj4gKyAgICAgICAgICBOVUxMLCAwLA0KPiArICAg
ICAgICAgICZieXRlcyk7DQo+ICsNCj4gKyAgICBidWZmZXIgPSBuZXcgY2hhcltieXRlcyArIDFd
Ow0KPiArICAgIGlmIChidWZmZXIgPT0gTlVMTCkNCj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0K
PiArDQo+ICsgICAgcmVzdWx0ID0gSW9jdGwoSU9DVExfWEVOSUZBQ0VfU1RPUkVfUkVBRCwNCj4g
KyAgICAgICAgICAgICAgICAgICAodm9pZCopcGF0aC5jX3N0cigpLCAoRFdPUkQpcGF0aC5sZW5n
dGgoKSArIDEsDQo+ICsgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBieXRlcyk7DQo+ICsNCj4g
KyAgICBidWZmZXJbYnl0ZXNdID0gMDsNCj4gKyAgICBpZiAocmVzdWx0KQ0KPiArICAgICAgICB2
YWx1ZSA9IGJ1ZmZlcjsNCj4gKw0KPiArICAgIGRlbGV0ZSBbXSBidWZmZXI7DQo+ICsgICAgcmV0
dXJuIHJlc3VsdDsNCj4gK30NCj4gKw0KPiArYm9vbCBDWGVuSWZhY2VJdGY6OlN0b3JlV3JpdGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIGNvbnN0IHN0ZDo6c3RyaW5nJg0KPiB2YWx1ZSkNCj4g
K3sNCj4gKyAgICBib29sICAgcmVzdWx0Ow0KPiArICAgIHNpemVfdCBsZW5ndGggPSBwYXRoLmxl
bmd0aCgpICsgMSArIHZhbHVlLmxlbmd0aCgpICsgMSArIDE7DQo+ICsgICAgY2hhciogIGJ1ZmZl
ciA9IG5ldyBjaGFyW2xlbmd0aF07DQo+ICsgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQ0KPiArICAg
ICAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICBtZW1jcHkoYnVmZmVyLCBwYXRoLmNfc3Ry
KCksIHBhdGgubGVuZ3RoKCkpOw0KPiArICAgIGJ1ZmZlcltwYXRoLmxlbmd0aCgpXSA9IDA7DQo+
ICsNCj4gKyAgICBtZW1jcHkoYnVmZmVyICsgcGF0aC5sZW5ndGgoKSArIDEsIHZhbHVlLmNfc3Ry
KCksIHZhbHVlLmxlbmd0aCgpKTsNCj4gKyAgICBidWZmZXJbcGF0aC5sZW5ndGgoKSArIDEgKyB2
YWx1ZS5sZW5ndGgoKV0gPSAwOw0KPiArICAgIGJ1ZmZlcltsZW5ndGggLSAxXSA9IDA7DQo+ICsN
Cj4gKyAgICByZXN1bHQgPSBJb2N0bChJT0NUTF9YRU5JRkFDRV9TVE9SRV9XUklURSwgYnVmZmVy
LCAoRFdPUkQpbGVuZ3RoLA0KPiBOVUxMLCAwKTsNCj4gKyAgICBkZWxldGUgW10gYnVmZmVyOw0K
PiArICAgIHJldHVybiByZXN1bHQ7DQo+ICt9DQo+ICsNCj4gK2Jvb2wgQ1hlbklmYWNlSXRmOjpT
dG9yZVJlbW92ZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkNCj4gK3sNCj4gKyAgICByZXR1cm4g
SW9jdGwoSU9DVExfWEVOSUZBQ0VfU1RPUkVfUkVNT1ZFLA0KPiArICAgICAgICAgICAgICAgICAo
dm9pZCopcGF0aC5jX3N0cigpLCAoRFdPUkQpcGF0aC5sZW5ndGgoKSArIDEsDQo+ICsgICAgICAg
ICAgICAgICAgIE5VTEwsIDApOw0KPiArfQ0KPiArDQo+ICtib29sIENYZW5JZmFjZUl0Zjo6U3Rv
cmVBZGRXYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwgSEFORExFIGV2dCwNCj4gdm9pZCoq
IGN0eHQpDQo+ICt7DQo+ICsgICAgWEVOSUZBQ0VfU1RPUkVfQUREX1dBVENIX0lOICBpbiAgPSB7
IChQQ0hBUilwYXRoLmNfc3RyKCksDQo+IChEV09SRClwYXRoLmxlbmd0aCgpICsgMSwgZXZ0IH07
DQo+ICsgICAgWEVOSUZBQ0VfU1RPUkVfQUREX1dBVENIX09VVCBvdXQgPSB7IE5VTEwgfTsNCj4g
KyAgICBpZiAoIUlvY3RsKElPQ1RMX1hFTklGQUNFX1NUT1JFX0FERF9XQVRDSCwNCj4gKyAgICAg
ICAgICAgICAgICZpbiwgKERXT1JEKXNpemVvZihpbiksDQo+ICsgICAgICAgICAgICAgICAmb3V0
LCAoRFdPUkQpc2l6ZW9mKG91dCkpKQ0KPiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAg
KmN0eHQgPSBvdXQuQ29udGV4dDsNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiAr
Ym9vbCBDWGVuSWZhY2VJdGY6OlN0b3JlUmVtb3ZlV2F0Y2godm9pZCogY3R4dCkNCj4gK3sNCj4g
KyAgICBYRU5JRkFDRV9TVE9SRV9SRU1PVkVfV0FUQ0hfSU4gaW4gPSB7IGN0eHQgfTsNCj4gKyAg
ICByZXR1cm4gSW9jdGwoSU9DVExfWEVOSUZBQ0VfU1RPUkVfUkVNT1ZFX1dBVENILA0KPiArICAg
ICAgICAgICAgICAgICAmaW4sIChEV09SRClzaXplb2YoaW4pLA0KPiArICAgICAgICAgICAgICAg
ICBOVUxMLCAwKTsNCj4gK30NCj4gKw0KPiArLy8gc3VzcGVuZCBpbnRlcmZhY2UNCj4gK2Jvb2wg
Q1hlbklmYWNlSXRmOjpTdXNwZW5kUmVnaXN0ZXIoSEFORExFIGV2dCwgdm9pZCoqIGN0eHQpDQo+
ICt7DQo+ICsgICAgWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9JTiAgaW4gID0geyBldnQgfTsN
Cj4gKyAgICBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCBvdXQgPSB7IE5VTEwgfTsNCj4g
KyAgICBpZiAoIUlvY3RsKElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfUkVHSVNURVIsDQo+ICsgICAg
ICAgICAgICAgICAmaW4sIChEV09SRClzaXplb2YoaW4pLA0KPiArICAgICAgICAgICAgICAgJm91
dCwgKERXT1JEKXNpemVvZihvdXQpKSkNCj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAg
ICpjdHh0ID0gb3V0LkNvbnRleHQ7DQo+ICsgICAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4g
K2Jvb2wgQ1hlbklmYWNlSXRmOjpTdXNwZW5kRGVyZWdpc3Rlcih2b2lkKiBjdHh0KQ0KPiArew0K
PiArICAgIFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIGluID0geyBjdHh0IH07DQo+ICsg
ICAgcmV0dXJuIElvY3RsKElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUiwNCj4gKyAg
ICAgICAgICAgICAgICAgJmluLCAoRFdPUkQpc2l6ZW9mKGluKSwNCj4gKyAgICAgICAgICAgICAg
ICAgTlVMTCwgMCk7DQo+ICt9DQo+ICsNCj4gKy8vIHNoYXJlZGluZm8gaW50ZXJmYWNlDQo+ICti
b29sIENYZW5JZmFjZUl0Zjo6U2hhcmVkSW5mb0dldFRpbWUoRklMRVRJTUUqIHRpbWUpDQo+ICt7
DQo+ICsgICAgcmV0dXJuIElvY3RsKElPQ1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUUs
DQo+ICsgICAgICAgICAgICAgICAgIE5VTEwsIDAsDQo+ICsgICAgICAgICAgICAgICAgIHRpbWUs
IHNpemVvZihGSUxFVElNRSkpOw0KPiArfQ0KPiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUN
Cj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuaCBiL3NyYy9saXRlYWdl
bnQvWGVuSWZhY2VJdGYuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw
Li5lMzZmMTg5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9YZW5JZmFj
ZUl0Zi5oDQo+IEBAIC0wLDAgKzEsNjAgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5
c3RlbXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICog
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAr
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0K
PiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsg
Kg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAr
ICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
DQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0Uu
DQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfWEVOSUZBQ0VJVEZfSF8NCj4gKyNkZWZpbmUgX1hF
TklGQUNFSVRGX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDx3aW5kb3dzLmg+DQo+ICsjaW5jbHVkZSAi
RGV2aWNlTGlzdC5oIg0KPiArI2luY2x1ZGUgPHN0cmluZz4NCj4gKw0KPiArY2xhc3MgQ1hlbklm
YWNlSXRmIDogcHVibGljIENEZXZpY2UNCj4gK3sNCj4gK3B1YmxpYzoNCj4gKyAgICBDWGVuSWZh
Y2VJdGYoY29uc3Qgd2NoYXJfdCogcGF0aCk7DQo+ICsgICAgdmlydHVhbCB+Q1hlbklmYWNlSXRm
KCk7DQo+ICsNCj4gK3B1YmxpYzogLy8gc3RvcmUgaW50ZXJmYWNlDQo+ICsgICAgYm9vbCBTdG9y
ZVJlYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIHN0ZDo6c3RyaW5nJiB2YWx1ZSk7DQo+ICsg
ICAgYm9vbCBTdG9yZVdyaXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLCBjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUpOw0KPiArICAgIGJvb2wgU3RvcmVSZW1vdmUoY29uc3Qgc3RkOjpzdHJpbmcm
IHBhdGgpOw0KPiArICAgIGJvb2wgU3RvcmVBZGRXYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcGF0
aCwgSEFORExFIGV2dCwgdm9pZCoqIGN0eHQpOw0KPiArICAgIGJvb2wgU3RvcmVSZW1vdmVXYXRj
aCh2b2lkKiBjdHh0KTsNCj4gKw0KPiArcHVibGljOiAvLyBzdXNwZW5kIGludGVyZmFjZQ0KPiAr
ICAgIGJvb2wgU3VzcGVuZFJlZ2lzdGVyKEhBTkRMRSBldnQsIHZvaWQqKiBjdHh0KTsNCj4gKyAg
ICBib29sIFN1c3BlbmREZXJlZ2lzdGVyKHZvaWQqIGN0eHQpOw0KPiArDQo+ICtwdWJsaWM6IC8v
IHNoYXJlZGluZm8gaW50ZXJmYWNlDQo+ICsgICAgYm9vbCBTaGFyZWRJbmZvR2V0VGltZShGSUxF
VElNRSogdGltZSk7DQo+ICt9Ow0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL3ZzMjAx
Mi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gYi92czIwMTIvbGl0ZWFnZW50L0xpdGVB
Z2VudC52Y3hwcm9qDQo+IGluZGV4IDg0YjUxMTMuLjQ4NjMwNjEgMTAwNjQ0DQo+IC0tLSBhL3Zz
MjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2oNCj4gKysrIGIvdnMyMDEyL2xpdGVhZ2Vu
dC9MaXRlQWdlbnQudmN4cHJvag0KPiBAQCAtMTk1LDEwICsxOTUsMTIgQEANCj4gICAgPEl0ZW1H
cm91cD4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdlbnRcTGl0
ZUFnZW50LmNwcCIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRl
YWdlbnRcRGV2aWNlTGlzdC5jcHAiIC8+DQo+ICsgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNcbGl0ZWFnZW50XFhlbklmYWNlSXRmLmNwcCIgLz4NCj4gIAk8L0l0ZW1Hcm91cD4NCj4g
ICAgPEl0ZW1Hcm91cD4NCj4gICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRl
YWdlbnRcTGl0ZUFnZW50LmgiIC8+DQo+ICAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxz
cmNcbGl0ZWFnZW50XERldmljZUxpc3QuaCIgLz4NCj4gKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXC4uXHNyY1xsaXRlYWdlbnRcWGVuSWZhY2VJdGYuaCIgLz4NCj4gIAk8L0l0ZW1Hcm91cD4N
Cj4gICAgPEl0ZW1Hcm91cD4NCj4gICAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3Jj
XGxpdGVhZ2VudFxtZXNzYWdlcy5tYyI+DQo+IGRpZmYgLS1naXQgYS92czIwMTMvbGl0ZWFnZW50
L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGIvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJv
ag0KPiBpbmRleCA2YTNjNzg3Li5hN2QxMGMwIDEwMDY0NA0KPiAtLS0gYS92czIwMTMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50
LnZjeHByb2oNCj4gQEAgLTE5OSwxMCArMTk5LDEyIEBADQo+ICAgIDxJdGVtR3JvdXA+DQo+ICAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50XExpdGVBZ2VudC5jcHAi
IC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcbGl0ZWFnZW50XERldmlj
ZUxpc3QuY3BwIiAvPg0KPiArICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVh
Z2VudFxYZW5JZmFjZUl0Zi5jcHAiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAgICA8SXRlbUdy
b3VwPg0KPiAgICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2VudFxMaXRl
QWdlbnQuaCIgLz4NCj4gICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHNyY1xsaXRlYWdl
bnRcRGV2aWNlTGlzdC5oIiAvPg0KPiArICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XGxpdGVhZ2VudFxYZW5JZmFjZUl0Zi5oIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAgPEl0
ZW1Hcm91cD4NCj4gICAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cLi5cc3JjXGxpdGVhZ2Vu
dFxtZXNzYWdlcy5tYyI+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZl
bCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0
dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2
LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3
aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:21:42 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:21:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhA5-000401-Sh; Wed, 22 Jun 2016 12:21:41 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhA5-0003zq-4c
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:21:41 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 4E/66-22092-4D28A675; Wed, 22 Jun 2016 12:21:40 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQvdyU1a
 4wfrJ1hZ/Fic6MHoc/nCFJYAxijUzLym/IoE1o71pOnvBC+uKVX/nszYwtlh3MXJySAj4SWx7
 eoURxGYT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i5WEFtYwEHi8p4p7BA1jhLTpi0BqucAs
 o0kejebg4RZBFQl9i5/BRbmFXCXWHrbpouRi0NIoJFR4tGiFrCRnEDxKfeOsoDYjAKyEl8aV0
 OtEpe49QTiBAkBAYkle84zQ9iiEi8f/2OFsA0kti7dxwIyn1lAU2L9Ln2IVkWJKd0PwS7jFRC
 UODnzCdh4IQEViS2PD0CN4ZZY+fkPywRG0VlIts1CmDQLyaRZSCYtYGRZxahenFpUllqka6iX
 VJSZnlGSm5iZo2toYKaXm1pcnJiempOYVKyXnJ+7iREYIwxAsINx53OnQ4ySHExKorzyylnhQ
 nxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4nzUA5QSLUtNTK9Iyc4DRCpOW4OBREuEVagRK8xYXJO
 YWZ6ZDpE4xKkqJ85qAJARAEhmleXBtsARxiVFWSpiXEegQIZ6C1KLczBJU+VeM4hyMSsK870C
 282TmlcBNfwW0mAlo8bL+dJDFJYkIKakGxqIW+X0PD5aF32jRPqhlJWl+ROpSgDOP3+majb8+
 JxwXd1Wbr9zwuvJM9YmjqQeaJb4nZBybYLGax3VP4C2tS8HL5vwUOhEmeWFuTrqMgcCvG/f8G
 pi4b/64tCav3eJwrRJbXU6X1Mc5eqs1t1eEv2bZZ+tcsUrrw4s1Tz8pHnUzO5z4fPqTXCWW4o
 xEQy3mouJEACfu0+ULAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-8.tower-21.messagelabs.com!1466598099!20188610!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 57532 invoked from network); 22 Jun 2016 12:21:39 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-8.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:21:39 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785372"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 09/20] Resolve lifecycle bugs
Thread-Index: AQHRtceVYdzObEQcaEq3phsTWk2XYJ/1lYyA
Date: Wed, 22 Jun 2016 12:21:39 +0000
Message-ID: <27492ff11ada4ae1a078d27204be77b8@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-10-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-10-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 09/20] Resolve lifecycle bugs
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDkvMjBdIFJlc29sdmUgbGlmZWN5Y2xlIGJ1Z3MNCj4gDQo+
ICogbWFrZSBDRGV2aWNlIGRlc3RydWN0b3IgdmlydHVhbA0KPiAqIGNhbGwgSURldmljZUNyZWF0
b3I6Ok9uRGV2aWNlUmVtb3ZlZCB3aGVuIGNsZWFuaW5nIHVwIGRldmljZSBsaXN0DQo+ICAgb24g
c2VydmljZSBzdG9wDQo+ICogYWRkIGxvZ2dpbmcgdG8gT3V0cHV0RGVidWdTdHJpbmcNCj4NCg0K
SXQgbG9va3MgbGlrZSB0aGlzIGlzIGJ1Zy1maXhpbmcgYSBwcmV2aW91cyBwYXRjaCAocGF0Y2gg
IzYgYXQgYSBndWVzdCkgc28gY2FuIGl0IG5vdCBiZSBmb2xkZWQgaW4/DQoNCiAgUGF1bA0KIA0K
PiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IC0t
LQ0KPiAgc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCB8IDEwICsrKysrKysrLS0NCj4gIHNy
Yy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oICAgfCAgMiArLQ0KPiAgc3JjL2xpdGVhZ2VudC9MaXRl
QWdlbnQuY3BwICB8IDE5ICsrKysrKysrKysrKysrKystLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmggICAgfCAgNCArKystDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMo
KyksIDcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9EZXZp
Y2VMaXN0LmNwcCBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHANCj4gaW5kZXggM2ZjOWE4
NS4uY2UwY2NkMiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcA0K
PiArKysgYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuY3BwDQo+IEBAIC01NSw3ICs1NSw3IEBA
IENEZXZpY2U6OkNEZXZpY2UoY29uc3Qgd2NoYXJfdCogcGF0aCkgOg0KPiAgew0KPiAgfQ0KPiAN
Cj4gLUNEZXZpY2U6On5DRGV2aWNlKCkNCj4gKy8qdmlydHVhbCovIENEZXZpY2U6On5DRGV2aWNl
KCkNCj4gIHsNCj4gICAgICBDbG9zZSgpOw0KPiAgfQ0KPiBAQCAtMTk1LDYgKzE5NSw4IEBAIHZv
aWQgQ0RldmljZUxpc3Q6OlN0b3AoKQ0KPiAgICAgIGZvciAoRGV2aWNlTWFwOjppdGVyYXRvciBp
dCA9IG1fZGV2cy5iZWdpbigpOw0KPiAgICAgICAgICAgICAgaXQgIT0gbV9kZXZzLmVuZCgpOw0K
PiAgICAgICAgICAgICAgKytpdCkgew0KPiArICAgICAgICBpZiAobV9pbXBsKQ0KPiArICAgICAg
ICAgICAgbV9pbXBsLT5PbkRldmljZVJlbW92ZWQoaXQtPnNlY29uZCk7DQo+ICAgICAgICAgIGRl
bGV0ZSBpdC0+c2Vjb25kOw0KPiAgICAgIH0NCj4gICAgICBtX2RldnMuY2xlYXIoKTsNCj4gQEAg
LTI3Nyw2ICsyNzksOSBAQCB2b2lkIENEZXZpY2VMaXN0OjpPbkRldmljZVF1ZXJ5UmVtb3ZlKEhB
TkRMRQ0KPiBoYW5kbGUpDQo+ICAgICAgICAgIHJldHVybjsgLy8gc3B1cmlvdXMgZXZlbnQ/DQo+
IA0KPiAgICAgIENEZXZpY2UqIGRldiA9IGl0LT5zZWNvbmQ7DQo+ICsgICAgaWYgKGRldiA9PSBO
VUxMKQ0KPiArICAgICAgICByZXR1cm47IC8vIGJhZCBtYXAgZW50cnkNCj4gKw0KPiAgICAgIGlm
IChtX2ltcGwpDQo+ICAgICAgICAgIG1faW1wbC0+T25EZXZpY2VSZW1vdmVkKGRldik7DQo+ICAg
ICAgZGV2LT5DbG9zZSgpOw0KPiBAQCAtMjg5LDYgKzI5NCw3IEBAIHZvaWQgQ0RldmljZUxpc3Q6
Ok9uRGV2aWNlUmVtb3ZlZChIQU5ETEUgaGFuZGxlKQ0KPiAgICAgICAgICByZXR1cm47IC8vIHNw
dXJpb3VzIGV2ZW50Pw0KPiANCj4gICAgICBDRGV2aWNlKiBkZXYgPSBpdC0+c2Vjb25kOw0KPiAt
ICAgIGRlbGV0ZSBkZXY7DQo+ICsgICAgaWYgKGRldikNCj4gKyAgICAgICAgZGVsZXRlIGRldjsN
Cj4gICAgICBtX2RldnMuZXJhc2UoaXQpOw0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVh
Z2VudC9EZXZpY2VMaXN0LmggYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuaA0KPiBpbmRleCA2
YTFiMGI0Li42YzhiNmNiIDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3Qu
aA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuaA0KPiBAQCAtNDEsNyArNDEsNyBA
QCBjbGFzcyBDRGV2aWNlDQo+ICB7DQo+ICBwdWJsaWM6DQo+ICAgICAgQ0RldmljZShjb25zdCB3
Y2hhcl90KiBwYXRoKTsNCj4gLSAgICB+Q0RldmljZSgpOw0KPiArICAgIHZpcnR1YWwgfkNEZXZp
Y2UoKTsNCj4gDQo+ICAgICAgSEFORExFIE9wZW4oSEFORExFIHN2Yyk7DQo+ICAgICAgdm9pZCBD
bG9zZSgpOw0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwIGIvc3Jj
L2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IGluZGV4IDkwOGMwYzkuLmJhNDhmYzAgMTAwNjQ0
DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysgYi9zcmMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC5jcHANCj4gQEAgLTMxLDYgKzMxLDcgQEANCj4gDQo+ICAjZGVmaW5lIElO
SVRHVUlEDQo+ICAjaW5jbHVkZSA8d2luZG93cy5oPg0KPiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+
IA0KPiAgI2luY2x1ZGUgIkxpdGVBZ2VudC5oIg0KPiAgI2luY2x1ZGUgInhlbmlmYWNlX2lvY3Rs
cy5oIg0KPiBAQCAtNTAsNiArNTEsMTQgQEAgc3RhdGljIENMaXRlQWdlbnQgc19zZXJ2aWNlOw0K
PiANCj4gIC8qc3RhdGljKi8gdm9pZCBDTGl0ZUFnZW50OjpMb2coY29uc3QgY2hhciogZm10LCAu
Li4pDQo+ICB7DQo+ICsgICAgY2hhciBtZXNzYWdlWzI1Nl07DQo+ICsgICAgdmFfbGlzdCBhcmdz
Ow0KPiArDQo+ICsgICAgdmFfc3RhcnQoYXJncywgZm10KTsNCj4gKyAgICB2c25wcmludGZfcyht
ZXNzYWdlLCBzaXplb2YobWVzc2FnZSksDQo+IHNpemVvZihtZXNzYWdlKS9zaXplb2YobWVzc2Fn
ZVswXSkgLSAxLCBmbXQsIGFyZ3MpOw0KPiArICAgIHZhX2VuZChhcmdzKTsNCj4gKw0KPiArICAg
IE91dHB1dERlYnVnU3RyaW5nKG1lc3NhZ2UpOw0KPiAgfQ0KPiANCj4gIC8qc3RhdGljKi8gaW50
IENMaXRlQWdlbnQ6OlNlcnZpY2VJbnN0YWxsKCkNCj4gQEAgLTEyNywxMSArMTM2LDE1IEBAIENM
aXRlQWdlbnQ6OkNMaXRlQWdlbnQoKSA6IG1faGFuZGxlKE5VTEwpLA0KPiBtX2RldnMoR1VJRF9J
TlRFUkZBQ0VfWEVOSUZBQ0UpLCBtX2RlDQo+ICAgICAgbV9zdGF0dXMuZHdXYWl0SGludCAgICAg
ICAgICAgPSAwOw0KPiANCj4gICAgICBtX3N2Y19zdG9wID0gQ3JlYXRlRXZlbnQoRkFMU0UsIE5V
TEwsIE5VTEwsIEZBTFNFKTsNCj4gKyAgICBtX3NodXRkb3duID0gQ3JlYXRlRXZlbnQoRkFMU0Us
IE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gKyAgICBtX3N1c3BlbmQgID0gQ3JlYXRlRXZlbnQoRkFM
U0UsIE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gIH0NCj4gDQo+ICBDTGl0ZUFnZW50Ojp+Q0xpdGVB
Z2VudCgpDQo+ICB7DQo+ICAgICAgQ2xvc2VIYW5kbGUobV9zdmNfc3RvcCk7DQo+ICsgICAgQ2xv
c2VIYW5kbGUobV9zaHV0ZG93bik7DQo+ICsgICAgQ2xvc2VIYW5kbGUobV9zdXNwZW5kKTsNCj4g
IH0NCj4gDQo+ICAvKnZpcnR1YWwqLyBDRGV2aWNlKiBDTGl0ZUFnZW50OjpDcmVhdGUoY29uc3Qg
d2NoYXJfdCogcGF0aCkNCj4gQEAgLTE0Niw2ICsxNTksNyBAQCBDTGl0ZUFnZW50Ojp+Q0xpdGVB
Z2VudCgpDQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpIHsNCj4gICAgICAgICAgbV9kZXYgPSAo
Q1hlbklmYWNlSXRmKilkZXY7DQo+ICAgICAgICAgIC8vIHNldHRpbmcgYWN0aXZlIGRldmljZQ0K
PiArICAgICAgICBDTGl0ZUFnZW50OjpMb2coIlN0YXJ0aW5nIEFjdGl2ZSBEZXZpY2VcbiIpOw0K
PiAgICAgIH0NCj4gIH0NCj4gDQo+IEBAIC0xNTQsNyArMTY4LDggQEAgQ0xpdGVBZ2VudDo6fkNM
aXRlQWdlbnQoKQ0KPiAgICAgIENMaXRlQWdlbnQ6OkxvZygiT25EZXZpY2VSZW1vdmVkKCV3cylc
biIsIGRldi0+UGF0aCgpKTsNCj4gICAgICBpZiAoKENYZW5JZmFjZUl0ZiopZGV2ID09IG1fZGV2
KSB7DQo+ICAgICAgICAgIG1fZGV2ID0gTlVMTDsNCj4gLSAgICAgICAgLy8gYWN0aXZlIGRldmlj
ZQ0KPiArICAgICAgICAvLyBhY3RpdmUgZGV2aWNlIHJlbW92ZWQNCj4gKyAgICAgICAgQ0xpdGVB
Z2VudDo6TG9nKCJBY3RpdmUgRGV2aWNlIFJlbW92ZWRcbiIpOw0KPiAgICAgIH0NCj4gIH0NCj4g
DQo+IEBAIC0xNzIsNyArMTg3LDYgQEAgdm9pZCBDTGl0ZUFnZW50OjpPblNlcnZpY2VTdG9wKCkN
Cj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2aWNlRXZlbnQoRFdPUkQgZXZ0LCBMUFZPSUQg
ZGF0YSkNCj4gIHsNCj4gLSAgICBDTGl0ZUFnZW50OjpMb2coIk9uRGV2aWNlRXZlbnQoKVxuIik7
DQo+ICAgICAgbV9kZXZzLk9uRGV2aWNlRXZlbnQoZXZ0LCBkYXRhKTsNCj4gIH0NCj4gDQo+IEBA
IC0yMjAsNyArMjM0LDYgQEAgRFdPUkQgV0lOQVBJDQo+IENMaXRlQWdlbnQ6Ol9fU2VydmljZUNv
bnRyb2xIYW5kbGVyRXgoRFdPUkQgcmVxLCBEV09SRCBldnQsIExQVk9JRA0KPiAgICAgICAgICBy
ZXR1cm4gTk9fRVJST1I7DQo+IA0KPiAgICAgIGNhc2UgU0VSVklDRV9DT05UUk9MX0RFVklDRUVW
RU5UOg0KPiAtICAgICAgICBDTGl0ZUFnZW50OjpMb2coIlNFUlZJQ0VfQ09OVFJPTF9ERVZJQ0VF
VkVOVFxuIik7DQo+ICAgICAgICAgIFNldFNlcnZpY2VTdGF0dXMoU0VSVklDRV9SVU5OSU5HKTsN
Cj4gICAgICAgICAgT25EZXZpY2VFdmVudChldnQsIGRhdGEpOw0KPiAgICAgICAgICByZXR1cm4g
Tk9fRVJST1I7DQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oIGIvc3Jj
L2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBpbmRleCAzNjgwYWZkLi4yZWMxZjU1IDEwMDY0NA0K
PiAtLS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQv
TGl0ZUFnZW50LmgNCj4gQEAgLTc2LDcgKzc2LDkgQEAgcHJpdmF0ZTogLy8gc2VydmljZSBzdXBw
b3J0DQo+ICAgICAgU0VSVklDRV9TVEFUVVMgICAgICAgICAgbV9zdGF0dXM7DQo+ICAgICAgU0VS
VklDRV9TVEFUVVNfSEFORExFICAgbV9oYW5kbGU7DQo+ICAgICAgSEFORExFICAgICAgICAgICAg
ICAgICAgbV9zdmNfc3RvcDsNCj4gLQ0KPiArICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIG1f
c2h1dGRvd247DQo+ICsgICAgSEFORExFICAgICAgICAgICAgICAgICAgbV9zdXNwZW5kOw0KPiAr
DQo+ICAgICAgQ0RldmljZUxpc3QgICAgICAgICAgICAgbV9kZXZzOw0KPiAgICAgIENYZW5JZmFj
ZUl0ZiogICAgICAgICAgIG1fZGV2Ow0KPiAgfTsNCj4gLS0NCj4gMS45LjQubXN5c2dpdC4xDQo+
IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N
Cj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxt
YW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:21:42 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:21:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhA5-000401-Sh; Wed, 22 Jun 2016 12:21:41 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhA5-0003zq-4c
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:21:41 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 4E/66-22092-4D28A675; Wed, 22 Jun 2016 12:21:40 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQvdyU1a
 4wfrJ1hZ/Fic6MHoc/nCFJYAxijUzLym/IoE1o71pOnvBC+uKVX/nszYwtlh3MXJySAj4SWx7
 eoURxGYT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i5WEFtYwEHi8p4p7BA1jhLTpi0BqucAs
 o0kejebg4RZBFQl9i5/BRbmFXCXWHrbpouRi0NIoJFR4tGiFrCRnEDxKfeOsoDYjAKyEl8aV0
 OtEpe49QTiBAkBAYkle84zQ9iiEi8f/2OFsA0kti7dxwIyn1lAU2L9Ln2IVkWJKd0PwS7jFRC
 UODnzCdh4IQEViS2PD0CN4ZZY+fkPywRG0VlIts1CmDQLyaRZSCYtYGRZxahenFpUllqka6iX
 VJSZnlGSm5iZo2toYKaXm1pcnJiempOYVKyXnJ+7iREYIwxAsINx53OnQ4ySHExKorzyylnhQ
 nxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4nzUA5QSLUtNTK9Iyc4DRCpOW4OBREuEVagRK8xYXJO
 YWZ6ZDpE4xKkqJ85qAJARAEhmleXBtsARxiVFWSpiXEegQIZ6C1KLczBJU+VeM4hyMSsK870C
 282TmlcBNfwW0mAlo8bL+dJDFJYkIKakGxqIW+X0PD5aF32jRPqhlJWl+ROpSgDOP3+majb8+
 JxwXd1Wbr9zwuvJM9YmjqQeaJb4nZBybYLGax3VP4C2tS8HL5vwUOhEmeWFuTrqMgcCvG/f8G
 pi4b/64tCav3eJwrRJbXU6X1Mc5eqs1t1eEv2bZZ+tcsUrrw4s1Tz8pHnUzO5z4fPqTXCWW4o
 xEQy3mouJEACfu0+ULAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-8.tower-21.messagelabs.com!1466598099!20188610!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 57532 invoked from network); 22 Jun 2016 12:21:39 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-8.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:21:39 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785372"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 09/20] Resolve lifecycle bugs
Thread-Index: AQHRtceVYdzObEQcaEq3phsTWk2XYJ/1lYyA
Date: Wed, 22 Jun 2016 12:21:39 +0000
Message-ID: <27492ff11ada4ae1a078d27204be77b8@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-10-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-10-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 09/20] Resolve lifecycle bugs
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDkvMjBdIFJlc29sdmUgbGlmZWN5Y2xlIGJ1Z3MNCj4gDQo+
ICogbWFrZSBDRGV2aWNlIGRlc3RydWN0b3IgdmlydHVhbA0KPiAqIGNhbGwgSURldmljZUNyZWF0
b3I6Ok9uRGV2aWNlUmVtb3ZlZCB3aGVuIGNsZWFuaW5nIHVwIGRldmljZSBsaXN0DQo+ICAgb24g
c2VydmljZSBzdG9wDQo+ICogYWRkIGxvZ2dpbmcgdG8gT3V0cHV0RGVidWdTdHJpbmcNCj4NCg0K
SXQgbG9va3MgbGlrZSB0aGlzIGlzIGJ1Zy1maXhpbmcgYSBwcmV2aW91cyBwYXRjaCAocGF0Y2gg
IzYgYXQgYSBndWVzdCkgc28gY2FuIGl0IG5vdCBiZSBmb2xkZWQgaW4/DQoNCiAgUGF1bA0KIA0K
PiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IC0t
LQ0KPiAgc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcCB8IDEwICsrKysrKysrLS0NCj4gIHNy
Yy9saXRlYWdlbnQvRGV2aWNlTGlzdC5oICAgfCAgMiArLQ0KPiAgc3JjL2xpdGVhZ2VudC9MaXRl
QWdlbnQuY3BwICB8IDE5ICsrKysrKysrKysrKysrKystLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmggICAgfCAgNCArKystDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMo
KyksIDcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9EZXZp
Y2VMaXN0LmNwcCBiL3NyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHANCj4gaW5kZXggM2ZjOWE4
NS4uY2UwY2NkMiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9EZXZpY2VMaXN0LmNwcA0K
PiArKysgYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuY3BwDQo+IEBAIC01NSw3ICs1NSw3IEBA
IENEZXZpY2U6OkNEZXZpY2UoY29uc3Qgd2NoYXJfdCogcGF0aCkgOg0KPiAgew0KPiAgfQ0KPiAN
Cj4gLUNEZXZpY2U6On5DRGV2aWNlKCkNCj4gKy8qdmlydHVhbCovIENEZXZpY2U6On5DRGV2aWNl
KCkNCj4gIHsNCj4gICAgICBDbG9zZSgpOw0KPiAgfQ0KPiBAQCAtMTk1LDYgKzE5NSw4IEBAIHZv
aWQgQ0RldmljZUxpc3Q6OlN0b3AoKQ0KPiAgICAgIGZvciAoRGV2aWNlTWFwOjppdGVyYXRvciBp
dCA9IG1fZGV2cy5iZWdpbigpOw0KPiAgICAgICAgICAgICAgaXQgIT0gbV9kZXZzLmVuZCgpOw0K
PiAgICAgICAgICAgICAgKytpdCkgew0KPiArICAgICAgICBpZiAobV9pbXBsKQ0KPiArICAgICAg
ICAgICAgbV9pbXBsLT5PbkRldmljZVJlbW92ZWQoaXQtPnNlY29uZCk7DQo+ICAgICAgICAgIGRl
bGV0ZSBpdC0+c2Vjb25kOw0KPiAgICAgIH0NCj4gICAgICBtX2RldnMuY2xlYXIoKTsNCj4gQEAg
LTI3Nyw2ICsyNzksOSBAQCB2b2lkIENEZXZpY2VMaXN0OjpPbkRldmljZVF1ZXJ5UmVtb3ZlKEhB
TkRMRQ0KPiBoYW5kbGUpDQo+ICAgICAgICAgIHJldHVybjsgLy8gc3B1cmlvdXMgZXZlbnQ/DQo+
IA0KPiAgICAgIENEZXZpY2UqIGRldiA9IGl0LT5zZWNvbmQ7DQo+ICsgICAgaWYgKGRldiA9PSBO
VUxMKQ0KPiArICAgICAgICByZXR1cm47IC8vIGJhZCBtYXAgZW50cnkNCj4gKw0KPiAgICAgIGlm
IChtX2ltcGwpDQo+ICAgICAgICAgIG1faW1wbC0+T25EZXZpY2VSZW1vdmVkKGRldik7DQo+ICAg
ICAgZGV2LT5DbG9zZSgpOw0KPiBAQCAtMjg5LDYgKzI5NCw3IEBAIHZvaWQgQ0RldmljZUxpc3Q6
Ok9uRGV2aWNlUmVtb3ZlZChIQU5ETEUgaGFuZGxlKQ0KPiAgICAgICAgICByZXR1cm47IC8vIHNw
dXJpb3VzIGV2ZW50Pw0KPiANCj4gICAgICBDRGV2aWNlKiBkZXYgPSBpdC0+c2Vjb25kOw0KPiAt
ICAgIGRlbGV0ZSBkZXY7DQo+ICsgICAgaWYgKGRldikNCj4gKyAgICAgICAgZGVsZXRlIGRldjsN
Cj4gICAgICBtX2RldnMuZXJhc2UoaXQpOw0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVh
Z2VudC9EZXZpY2VMaXN0LmggYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuaA0KPiBpbmRleCA2
YTFiMGI0Li42YzhiNmNiIDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3Qu
aA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0RldmljZUxpc3QuaA0KPiBAQCAtNDEsNyArNDEsNyBA
QCBjbGFzcyBDRGV2aWNlDQo+ICB7DQo+ICBwdWJsaWM6DQo+ICAgICAgQ0RldmljZShjb25zdCB3
Y2hhcl90KiBwYXRoKTsNCj4gLSAgICB+Q0RldmljZSgpOw0KPiArICAgIHZpcnR1YWwgfkNEZXZp
Y2UoKTsNCj4gDQo+ICAgICAgSEFORExFIE9wZW4oSEFORExFIHN2Yyk7DQo+ICAgICAgdm9pZCBD
bG9zZSgpOw0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwIGIvc3Jj
L2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IGluZGV4IDkwOGMwYzkuLmJhNDhmYzAgMTAwNjQ0
DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysgYi9zcmMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC5jcHANCj4gQEAgLTMxLDYgKzMxLDcgQEANCj4gDQo+ICAjZGVmaW5lIElO
SVRHVUlEDQo+ICAjaW5jbHVkZSA8d2luZG93cy5oPg0KPiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+
IA0KPiAgI2luY2x1ZGUgIkxpdGVBZ2VudC5oIg0KPiAgI2luY2x1ZGUgInhlbmlmYWNlX2lvY3Rs
cy5oIg0KPiBAQCAtNTAsNiArNTEsMTQgQEAgc3RhdGljIENMaXRlQWdlbnQgc19zZXJ2aWNlOw0K
PiANCj4gIC8qc3RhdGljKi8gdm9pZCBDTGl0ZUFnZW50OjpMb2coY29uc3QgY2hhciogZm10LCAu
Li4pDQo+ICB7DQo+ICsgICAgY2hhciBtZXNzYWdlWzI1Nl07DQo+ICsgICAgdmFfbGlzdCBhcmdz
Ow0KPiArDQo+ICsgICAgdmFfc3RhcnQoYXJncywgZm10KTsNCj4gKyAgICB2c25wcmludGZfcyht
ZXNzYWdlLCBzaXplb2YobWVzc2FnZSksDQo+IHNpemVvZihtZXNzYWdlKS9zaXplb2YobWVzc2Fn
ZVswXSkgLSAxLCBmbXQsIGFyZ3MpOw0KPiArICAgIHZhX2VuZChhcmdzKTsNCj4gKw0KPiArICAg
IE91dHB1dERlYnVnU3RyaW5nKG1lc3NhZ2UpOw0KPiAgfQ0KPiANCj4gIC8qc3RhdGljKi8gaW50
IENMaXRlQWdlbnQ6OlNlcnZpY2VJbnN0YWxsKCkNCj4gQEAgLTEyNywxMSArMTM2LDE1IEBAIENM
aXRlQWdlbnQ6OkNMaXRlQWdlbnQoKSA6IG1faGFuZGxlKE5VTEwpLA0KPiBtX2RldnMoR1VJRF9J
TlRFUkZBQ0VfWEVOSUZBQ0UpLCBtX2RlDQo+ICAgICAgbV9zdGF0dXMuZHdXYWl0SGludCAgICAg
ICAgICAgPSAwOw0KPiANCj4gICAgICBtX3N2Y19zdG9wID0gQ3JlYXRlRXZlbnQoRkFMU0UsIE5V
TEwsIE5VTEwsIEZBTFNFKTsNCj4gKyAgICBtX3NodXRkb3duID0gQ3JlYXRlRXZlbnQoRkFMU0Us
IE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gKyAgICBtX3N1c3BlbmQgID0gQ3JlYXRlRXZlbnQoRkFM
U0UsIE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gIH0NCj4gDQo+ICBDTGl0ZUFnZW50Ojp+Q0xpdGVB
Z2VudCgpDQo+ICB7DQo+ICAgICAgQ2xvc2VIYW5kbGUobV9zdmNfc3RvcCk7DQo+ICsgICAgQ2xv
c2VIYW5kbGUobV9zaHV0ZG93bik7DQo+ICsgICAgQ2xvc2VIYW5kbGUobV9zdXNwZW5kKTsNCj4g
IH0NCj4gDQo+ICAvKnZpcnR1YWwqLyBDRGV2aWNlKiBDTGl0ZUFnZW50OjpDcmVhdGUoY29uc3Qg
d2NoYXJfdCogcGF0aCkNCj4gQEAgLTE0Niw2ICsxNTksNyBAQCBDTGl0ZUFnZW50Ojp+Q0xpdGVB
Z2VudCgpDQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpIHsNCj4gICAgICAgICAgbV9kZXYgPSAo
Q1hlbklmYWNlSXRmKilkZXY7DQo+ICAgICAgICAgIC8vIHNldHRpbmcgYWN0aXZlIGRldmljZQ0K
PiArICAgICAgICBDTGl0ZUFnZW50OjpMb2coIlN0YXJ0aW5nIEFjdGl2ZSBEZXZpY2VcbiIpOw0K
PiAgICAgIH0NCj4gIH0NCj4gDQo+IEBAIC0xNTQsNyArMTY4LDggQEAgQ0xpdGVBZ2VudDo6fkNM
aXRlQWdlbnQoKQ0KPiAgICAgIENMaXRlQWdlbnQ6OkxvZygiT25EZXZpY2VSZW1vdmVkKCV3cylc
biIsIGRldi0+UGF0aCgpKTsNCj4gICAgICBpZiAoKENYZW5JZmFjZUl0ZiopZGV2ID09IG1fZGV2
KSB7DQo+ICAgICAgICAgIG1fZGV2ID0gTlVMTDsNCj4gLSAgICAgICAgLy8gYWN0aXZlIGRldmlj
ZQ0KPiArICAgICAgICAvLyBhY3RpdmUgZGV2aWNlIHJlbW92ZWQNCj4gKyAgICAgICAgQ0xpdGVB
Z2VudDo6TG9nKCJBY3RpdmUgRGV2aWNlIFJlbW92ZWRcbiIpOw0KPiAgICAgIH0NCj4gIH0NCj4g
DQo+IEBAIC0xNzIsNyArMTg3LDYgQEAgdm9pZCBDTGl0ZUFnZW50OjpPblNlcnZpY2VTdG9wKCkN
Cj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2aWNlRXZlbnQoRFdPUkQgZXZ0LCBMUFZPSUQg
ZGF0YSkNCj4gIHsNCj4gLSAgICBDTGl0ZUFnZW50OjpMb2coIk9uRGV2aWNlRXZlbnQoKVxuIik7
DQo+ICAgICAgbV9kZXZzLk9uRGV2aWNlRXZlbnQoZXZ0LCBkYXRhKTsNCj4gIH0NCj4gDQo+IEBA
IC0yMjAsNyArMjM0LDYgQEAgRFdPUkQgV0lOQVBJDQo+IENMaXRlQWdlbnQ6Ol9fU2VydmljZUNv
bnRyb2xIYW5kbGVyRXgoRFdPUkQgcmVxLCBEV09SRCBldnQsIExQVk9JRA0KPiAgICAgICAgICBy
ZXR1cm4gTk9fRVJST1I7DQo+IA0KPiAgICAgIGNhc2UgU0VSVklDRV9DT05UUk9MX0RFVklDRUVW
RU5UOg0KPiAtICAgICAgICBDTGl0ZUFnZW50OjpMb2coIlNFUlZJQ0VfQ09OVFJPTF9ERVZJQ0VF
VkVOVFxuIik7DQo+ICAgICAgICAgIFNldFNlcnZpY2VTdGF0dXMoU0VSVklDRV9SVU5OSU5HKTsN
Cj4gICAgICAgICAgT25EZXZpY2VFdmVudChldnQsIGRhdGEpOw0KPiAgICAgICAgICByZXR1cm4g
Tk9fRVJST1I7DQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oIGIvc3Jj
L2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBpbmRleCAzNjgwYWZkLi4yZWMxZjU1IDEwMDY0NA0K
PiAtLS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQv
TGl0ZUFnZW50LmgNCj4gQEAgLTc2LDcgKzc2LDkgQEAgcHJpdmF0ZTogLy8gc2VydmljZSBzdXBw
b3J0DQo+ICAgICAgU0VSVklDRV9TVEFUVVMgICAgICAgICAgbV9zdGF0dXM7DQo+ICAgICAgU0VS
VklDRV9TVEFUVVNfSEFORExFICAgbV9oYW5kbGU7DQo+ICAgICAgSEFORExFICAgICAgICAgICAg
ICAgICAgbV9zdmNfc3RvcDsNCj4gLQ0KPiArICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIG1f
c2h1dGRvd247DQo+ICsgICAgSEFORExFICAgICAgICAgICAgICAgICAgbV9zdXNwZW5kOw0KPiAr
DQo+ICAgICAgQ0RldmljZUxpc3QgICAgICAgICAgICAgbV9kZXZzOw0KPiAgICAgIENYZW5JZmFj
ZUl0ZiogICAgICAgICAgIG1fZGV2Ow0KPiAgfTsNCj4gLS0NCj4gMS45LjQubXN5c2dpdC4xDQo+
IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N
Cj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxt
YW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:25:25 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:25:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhDh-00047g-6F; Wed, 22 Jun 2016 12:25:25 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhDg-00047a-CI
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:25:24 +0000
Received: from [193.109.254.147] by server-5.bemta-14.messagelabs.com id
 BC/13-08132-3B38A675; Wed, 22 Jun 2016 12:25:23 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOIsWRWlGSWpSXmKPExsWyU9JRQndzc1a
 4waSzzBZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y8MhhYK3ahV7v8xkamBco9bFyMkhIeAn8f3Q
 XGYQm01AR2Lp0flMILaIQIHE9/fzwOLMAmoS1/d3sYLYwgI2EvN3HmCHqLGVOHpkFpDNAWQbS
 Rxazw0SZhFQlbg5/xojiM0r4C5xeN9VFhBbSKCRUeLpmRwQmxMovnveIbCRjAKyEl8aV0OtEp
 e49QTiBAkBAYkle84zQ9iiEi8f/2OFsA0kti7dxwKylllAU2L9Ln2IVkWJKd0P2SHWCkqcnPk
 Eaq2KxJbHB6DGcEus/PyHZQKj6Cwk22YhTJqFZNIsJJMWMLKsYlQvTi0qSy3SNdFLKspMzyjJ
 TczM0TU0NNHLTS0uTkxPzUlMKtZLzs/dxAiMEAYg2MG4YqHzIUZJDiYlUV555axwIb6k/JTKj
 MTijPii0pzU4kOMMhwcShK8zxqAcoJFqempFWmZOcBYhUlLcPAoifBeBUnzFhck5hZnpkOkTj
 EqSonzrgNJCIAkMkrz4Npg6eESo6yUMC8j0CFCPAWpRbmZJajyrxjFORiVhHnfgUzhycwrgZv
 +CmgxE9DiZf3pIItLEhFSUg2MjamrfatED1X81HCdtyBjRk7ZtGmN7DJaFpO7ZwkUClbG3N13
 98OHdXHqMmH+4k5ntqWz/UtuqRFNlbzE0fxh9Ver7/u+Lo+7xVqe933rD5XZfOd4NjBK8h5Zd
 ++L6TIuKaXpRma83xd5eFXzR1ZVzZrDVM7e+e+GRcQ6t7Rq1b/9mxsn685RYinOSDTUYi4qTg
 QAAVFQdAoDAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1466598322!49224718!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 65309 invoked from network); 22 Jun 2016 12:25:22 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:25:22 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785638"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 10/20] Add ServiceInstall
Thread-Index: AQHRtcs6w5qIuDc2B0yT8X6U3L5oVp/1lipg
Date: Wed, 22 Jun 2016 12:23:29 +0000
Message-ID: <4e890f39d7ac49579e4acaddc825a31d@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-11-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-11-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 10/20] Add ServiceInstall
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTAvMjBdIEFkZCBTZXJ2aWNlSW5zdGFsbA0KPiANCj4gQWRk
cyBldmVudHMgZm9yIHNodXRkb3duIGFuZCBzdXNwZW5kIGhhbmRsZXJzDQo+IA0KPiBTaWduZWQt
b2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQoNCkFja2VkLWJ5OiBQ
YXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0tLQ0KPiAgc3JjL2xp
dGVhZ2VudC9MaXRlQWdlbnQuY3BwIHwgNjANCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oICAgfCAgMyAr
KysNCj4gIDIgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkN
Cj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gaW5kZXggYmE0OGZjMC4uYTg4NzkyNSAxMDA2NDQNCj4g
LS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQv
TGl0ZUFnZW50LmNwcA0KPiBAQCAtNjMsNyArNjMsMzEgQEAgc3RhdGljIENMaXRlQWdlbnQgc19z
ZXJ2aWNlOw0KPiANCj4gIC8qc3RhdGljKi8gaW50IENMaXRlQWdlbnQ6OlNlcnZpY2VJbnN0YWxs
KCkNCj4gIHsNCj4gLSAgICByZXR1cm4gLTE7DQo+ICsgICAgU0NfSEFORExFICAgc3ZjLCBtZ3I7
DQo+ICsgICAgY2hhciAgICAgICAgcGF0aFtNQVhfUEFUSCsxXTsNCj4gKw0KPiArICAgIG1nciA9
IE9wZW5TQ01hbmFnZXIoTlVMTCwgTlVMTCwgU0NfTUFOQUdFUl9BTExfQUNDRVNTKTsNCj4gKyAg
ICBpZiAobWdyID09IE5VTEwpDQo+ICsgICAgICAgIHJldHVybiAtMTsNCj4gKw0KPiArICAgIGlm
IChHZXRNb2R1bGVGaWxlTmFtZUEoTlVMTCwgcGF0aCwgTUFYX1BBVEgpID09IDApIHsNCj4gKyAg
ICAgICAgQ2xvc2VTZXJ2aWNlSGFuZGxlKG1ncik7DQo+ICsgICAgICAgIHJldHVybiBHZXRMYXN0
RXJyb3IoKTsNCj4gKyAgICB9DQo+ICsgICAgcGF0aFtNQVhfUEFUSF0gPSAwOw0KPiArDQo+ICsg
ICAgc3ZjID0gQ3JlYXRlU2VydmljZUEobWdyLCBTVkNfTkFNRSwgU1ZDX0RJU1BMQVlOQU1FLA0K
PiBTRVJWSUNFX0FMTF9BQ0NFU1MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBTRVJWSUNF
X1dJTjMyX09XTl9QUk9DRVNTLCBTRVJWSUNFX0FVVE9fU1RBUlQsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBTRVJWSUNFX0VSUk9SX05PUk1BTCwgcGF0aCwNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOw0KPiArICAgIGlmIChzdmMg
PT0gTlVMTCkgew0KPiArICAgICAgICBDbG9zZVNlcnZpY2VIYW5kbGUobWdyKTsNCj4gKyAgICAg
ICAgcmV0dXJuIC0yOw0KPiArICAgIH0NCj4gKw0KPiArICAgIENsb3NlU2VydmljZUhhbmRsZShz
dmMpOw0KPiArICAgIENsb3NlU2VydmljZUhhbmRsZShtZ3IpOw0KPiArICAgIHJldHVybiAwOw0K
PiAgfQ0KPiANCj4gIC8qc3RhdGljKi8gaW50IENMaXRlQWdlbnQ6OlNlcnZpY2VVbmluc3RhbGwo
KQ0KPiBAQCAtMTkyLDggKzIxNiwzOCBAQCB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2aWNlRXZlbnQo
RFdPUkQgZXZ0LA0KPiBMUFZPSUQgZGF0YSkNCj4gDQo+ICBib29sIENMaXRlQWdlbnQ6OlNlcnZp
Y2VNYWluTG9vcCgpDQo+ICB7DQo+IC0gICAgV2FpdEZvclNpbmdsZU9iamVjdChtX3N2Y19zdG9w
LCBJTkZJTklURSk7DQo+IC0gICAgcmV0dXJuIGZhbHNlOw0KPiArICAgIEhBTkRMRSAgZXZ0c1sz
XSA9IHsgbV9zdmNfc3RvcCwgbV9zaHV0ZG93biwgbV9zdXNwZW5kIH07DQo+ICsgICAgRFdPUkQg
ICB3YWl0ID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cygzLCBldnRzLCBGQUxTRSwgSU5GSU5JVEUp
Ow0KPiArICAgIHN3aXRjaCAod2FpdCkgew0KPiArICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoNCj4g
KyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBzZXJ2aWNlIHN0b3AgZXZlbnQNCj4gKw0KPiArICAg
IGNhc2UgV0FJVF9PQkpFQ1RfMCsxOg0KPiArICAgICAgICBPblNodXRkb3duKCk7DQo+ICsgICAg
ICAgIGJyZWFrOw0KPiArDQo+ICsgICAgY2FzZSBXQUlUX09CSkVDVF8wKzI6DQo+ICsgICAgICAg
IE9uU3VzcGVuZCgpOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1bHQ6DQo+
ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBs
b29waW5nDQo+ICt9DQo+ICsNCj4gK3ZvaWQgQ0xpdGVBZ2VudDo6T25TaHV0ZG93bigpDQo+ICt7
DQo+ICsgICAgaWYgKG1fZGV2ID09IE5VTEwpDQo+ICsgICAgICAgIHJldHVybjsNCj4gKyAgICBD
TGl0ZUFnZW50OjpMb2coIk9uU2h1dGRvd24oJXdzKVxuIiwgbV9kZXYtPlBhdGgoKSk7DQo+ICt9
DQo+ICsNCj4gK3ZvaWQgQ0xpdGVBZ2VudDo6T25TdXNwZW5kKCkNCj4gK3sNCj4gKyAgICBpZiAo
bV9kZXYgPT0gTlVMTCkNCj4gKyAgICAgICAgcmV0dXJuOw0KPiArICAgIENMaXRlQWdlbnQ6Okxv
ZygiT25TdXNwZW5kKCV3cylcbiIsIG1fZGV2LT5QYXRoKCkpOw0KPiAgfQ0KPiANCj4gIHZvaWQg
Q0xpdGVBZ2VudDo6U2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdPUkQgZXhpdCAvKj0g
MCovLA0KPiBEV09SRCBoaW50IC8qPSAwKi8pDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50
L0xpdGVBZ2VudC5oIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBpbmRleCAyZWMxZjU1
Li5iMTlkOGUyIDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+ICsr
KyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gQEAgLTY4LDYgKzY4LDkgQEAgcHJpdmF0
ZTogLy8gc2VydmljZSBldmVudHMNCj4gICAgICB2b2lkIE9uRGV2aWNlRXZlbnQoRFdPUkQsIExQ
Vk9JRCk7DQo+ICAgICAgYm9vbCBTZXJ2aWNlTWFpbkxvb3AoKTsNCj4gDQo+ICsgICAgdm9pZCBP
blNodXRkb3duKCk7DQo+ICsgICAgdm9pZCBPblN1c3BlbmQoKTsNCj4gKw0KPiAgcHJpdmF0ZTog
Ly8gc2VydmljZSBzdXBwb3J0DQo+ICAgICAgdm9pZCBTZXRTZXJ2aWNlU3RhdHVzKERXT1JEIHN0
YXRlLCBEV09SRCBleGl0ID0gMCwgRFdPUkQgaGludCA9IDApOw0KPiAgICAgIHZvaWQgV0lOQVBJ
IF9fU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsNCj4gLS0NCj4gMS45LjQubXN5
c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4v
bWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:25:25 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:25:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhDh-00047g-6F; Wed, 22 Jun 2016 12:25:25 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhDg-00047a-CI
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:25:24 +0000
Received: from [193.109.254.147] by server-5.bemta-14.messagelabs.com id
 BC/13-08132-3B38A675; Wed, 22 Jun 2016 12:25:23 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOIsWRWlGSWpSXmKPExsWyU9JRQndzc1a
 4waSzzBZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y8MhhYK3ahV7v8xkamBco9bFyMkhIeAn8f3Q
 XGYQm01AR2Lp0flMILaIQIHE9/fzwOLMAmoS1/d3sYLYwgI2EvN3HmCHqLGVOHpkFpDNAWQbS
 Rxazw0SZhFQlbg5/xojiM0r4C5xeN9VFhBbSKCRUeLpmRwQmxMovnveIbCRjAKyEl8aV0OtEp
 e49QTiBAkBAYkle84zQ9iiEi8f/2OFsA0kti7dxwKylllAU2L9Ln2IVkWJKd0P2SHWCkqcnPk
 Eaq2KxJbHB6DGcEus/PyHZQKj6Cwk22YhTJqFZNIsJJMWMLKsYlQvTi0qSy3SNdFLKspMzyjJ
 TczM0TU0NNHLTS0uTkxPzUlMKtZLzs/dxAiMEAYg2MG4YqHzIUZJDiYlUV555axwIb6k/JTKj
 MTijPii0pzU4kOMMhwcShK8zxqAcoJFqempFWmZOcBYhUlLcPAoifBeBUnzFhck5hZnpkOkTj
 EqSonzrgNJCIAkMkrz4Npg6eESo6yUMC8j0CFCPAWpRbmZJajyrxjFORiVhHnfgUzhycwrgZv
 +CmgxE9DiZf3pIItLEhFSUg2MjamrfatED1X81HCdtyBjRk7ZtGmN7DJaFpO7ZwkUClbG3N13
 98OHdXHqMmH+4k5ntqWz/UtuqRFNlbzE0fxh9Ver7/u+Lo+7xVqe933rD5XZfOd4NjBK8h5Zd
 ++L6TIuKaXpRma83xd5eFXzR1ZVzZrDVM7e+e+GRcQ6t7Rq1b/9mxsn685RYinOSDTUYi4qTg
 QAAVFQdAoDAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1466598322!49224718!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 65309 invoked from network); 22 Jun 2016 12:25:22 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-12.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:25:22 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785638"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 10/20] Add ServiceInstall
Thread-Index: AQHRtcs6w5qIuDc2B0yT8X6U3L5oVp/1lipg
Date: Wed, 22 Jun 2016 12:23:29 +0000
Message-ID: <4e890f39d7ac49579e4acaddc825a31d@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-11-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-11-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 10/20] Add ServiceInstall
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTAvMjBdIEFkZCBTZXJ2aWNlSW5zdGFsbA0KPiANCj4gQWRk
cyBldmVudHMgZm9yIHNodXRkb3duIGFuZCBzdXNwZW5kIGhhbmRsZXJzDQo+IA0KPiBTaWduZWQt
b2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQoNCkFja2VkLWJ5OiBQ
YXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0tLQ0KPiAgc3JjL2xp
dGVhZ2VudC9MaXRlQWdlbnQuY3BwIHwgNjANCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oICAgfCAgMyAr
KysNCj4gIDIgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkN
Cj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gaW5kZXggYmE0OGZjMC4uYTg4NzkyNSAxMDA2NDQNCj4g
LS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQv
TGl0ZUFnZW50LmNwcA0KPiBAQCAtNjMsNyArNjMsMzEgQEAgc3RhdGljIENMaXRlQWdlbnQgc19z
ZXJ2aWNlOw0KPiANCj4gIC8qc3RhdGljKi8gaW50IENMaXRlQWdlbnQ6OlNlcnZpY2VJbnN0YWxs
KCkNCj4gIHsNCj4gLSAgICByZXR1cm4gLTE7DQo+ICsgICAgU0NfSEFORExFICAgc3ZjLCBtZ3I7
DQo+ICsgICAgY2hhciAgICAgICAgcGF0aFtNQVhfUEFUSCsxXTsNCj4gKw0KPiArICAgIG1nciA9
IE9wZW5TQ01hbmFnZXIoTlVMTCwgTlVMTCwgU0NfTUFOQUdFUl9BTExfQUNDRVNTKTsNCj4gKyAg
ICBpZiAobWdyID09IE5VTEwpDQo+ICsgICAgICAgIHJldHVybiAtMTsNCj4gKw0KPiArICAgIGlm
IChHZXRNb2R1bGVGaWxlTmFtZUEoTlVMTCwgcGF0aCwgTUFYX1BBVEgpID09IDApIHsNCj4gKyAg
ICAgICAgQ2xvc2VTZXJ2aWNlSGFuZGxlKG1ncik7DQo+ICsgICAgICAgIHJldHVybiBHZXRMYXN0
RXJyb3IoKTsNCj4gKyAgICB9DQo+ICsgICAgcGF0aFtNQVhfUEFUSF0gPSAwOw0KPiArDQo+ICsg
ICAgc3ZjID0gQ3JlYXRlU2VydmljZUEobWdyLCBTVkNfTkFNRSwgU1ZDX0RJU1BMQVlOQU1FLA0K
PiBTRVJWSUNFX0FMTF9BQ0NFU1MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBTRVJWSUNF
X1dJTjMyX09XTl9QUk9DRVNTLCBTRVJWSUNFX0FVVE9fU1RBUlQsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBTRVJWSUNFX0VSUk9SX05PUk1BTCwgcGF0aCwNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOw0KPiArICAgIGlmIChzdmMg
PT0gTlVMTCkgew0KPiArICAgICAgICBDbG9zZVNlcnZpY2VIYW5kbGUobWdyKTsNCj4gKyAgICAg
ICAgcmV0dXJuIC0yOw0KPiArICAgIH0NCj4gKw0KPiArICAgIENsb3NlU2VydmljZUhhbmRsZShz
dmMpOw0KPiArICAgIENsb3NlU2VydmljZUhhbmRsZShtZ3IpOw0KPiArICAgIHJldHVybiAwOw0K
PiAgfQ0KPiANCj4gIC8qc3RhdGljKi8gaW50IENMaXRlQWdlbnQ6OlNlcnZpY2VVbmluc3RhbGwo
KQ0KPiBAQCAtMTkyLDggKzIxNiwzOCBAQCB2b2lkIENMaXRlQWdlbnQ6Ok9uRGV2aWNlRXZlbnQo
RFdPUkQgZXZ0LA0KPiBMUFZPSUQgZGF0YSkNCj4gDQo+ICBib29sIENMaXRlQWdlbnQ6OlNlcnZp
Y2VNYWluTG9vcCgpDQo+ICB7DQo+IC0gICAgV2FpdEZvclNpbmdsZU9iamVjdChtX3N2Y19zdG9w
LCBJTkZJTklURSk7DQo+IC0gICAgcmV0dXJuIGZhbHNlOw0KPiArICAgIEhBTkRMRSAgZXZ0c1sz
XSA9IHsgbV9zdmNfc3RvcCwgbV9zaHV0ZG93biwgbV9zdXNwZW5kIH07DQo+ICsgICAgRFdPUkQg
ICB3YWl0ID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cygzLCBldnRzLCBGQUxTRSwgSU5GSU5JVEUp
Ow0KPiArICAgIHN3aXRjaCAod2FpdCkgew0KPiArICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoNCj4g
KyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBzZXJ2aWNlIHN0b3AgZXZlbnQNCj4gKw0KPiArICAg
IGNhc2UgV0FJVF9PQkpFQ1RfMCsxOg0KPiArICAgICAgICBPblNodXRkb3duKCk7DQo+ICsgICAg
ICAgIGJyZWFrOw0KPiArDQo+ICsgICAgY2FzZSBXQUlUX09CSkVDVF8wKzI6DQo+ICsgICAgICAg
IE9uU3VzcGVuZCgpOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1bHQ6DQo+
ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBs
b29waW5nDQo+ICt9DQo+ICsNCj4gK3ZvaWQgQ0xpdGVBZ2VudDo6T25TaHV0ZG93bigpDQo+ICt7
DQo+ICsgICAgaWYgKG1fZGV2ID09IE5VTEwpDQo+ICsgICAgICAgIHJldHVybjsNCj4gKyAgICBD
TGl0ZUFnZW50OjpMb2coIk9uU2h1dGRvd24oJXdzKVxuIiwgbV9kZXYtPlBhdGgoKSk7DQo+ICt9
DQo+ICsNCj4gK3ZvaWQgQ0xpdGVBZ2VudDo6T25TdXNwZW5kKCkNCj4gK3sNCj4gKyAgICBpZiAo
bV9kZXYgPT0gTlVMTCkNCj4gKyAgICAgICAgcmV0dXJuOw0KPiArICAgIENMaXRlQWdlbnQ6Okxv
ZygiT25TdXNwZW5kKCV3cylcbiIsIG1fZGV2LT5QYXRoKCkpOw0KPiAgfQ0KPiANCj4gIHZvaWQg
Q0xpdGVBZ2VudDo6U2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdPUkQgZXhpdCAvKj0g
MCovLA0KPiBEV09SRCBoaW50IC8qPSAwKi8pDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50
L0xpdGVBZ2VudC5oIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBpbmRleCAyZWMxZjU1
Li5iMTlkOGUyIDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+ICsr
KyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gQEAgLTY4LDYgKzY4LDkgQEAgcHJpdmF0
ZTogLy8gc2VydmljZSBldmVudHMNCj4gICAgICB2b2lkIE9uRGV2aWNlRXZlbnQoRFdPUkQsIExQ
Vk9JRCk7DQo+ICAgICAgYm9vbCBTZXJ2aWNlTWFpbkxvb3AoKTsNCj4gDQo+ICsgICAgdm9pZCBP
blNodXRkb3duKCk7DQo+ICsgICAgdm9pZCBPblN1c3BlbmQoKTsNCj4gKw0KPiAgcHJpdmF0ZTog
Ly8gc2VydmljZSBzdXBwb3J0DQo+ICAgICAgdm9pZCBTZXRTZXJ2aWNlU3RhdHVzKERXT1JEIHN0
YXRlLCBEV09SRCBleGl0ID0gMCwgRFdPUkQgaGludCA9IDApOw0KPiAgICAgIHZvaWQgV0lOQVBJ
IF9fU2VydmljZU1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsNCj4gLS0NCj4gMS45LjQubXN5
c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4v
bWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:28:36 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:28:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhGm-0004HU-OI; Wed, 22 Jun 2016 12:28:36 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhGk-0004HK-Vf
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:28:35 +0000
Received: from [193.109.254.147] by server-13.bemta-14.messagelabs.com id
 8D/D7-09524-2748A675; Wed, 22 Jun 2016 12:28:34 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQrewJSv
 c4OQsNYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCacXrvOraCnTYVJ3+rNTBese5i5OSQEPCTuDjx
 KAuIzSagI7H06HwmEFtEoEDi+/t5zCA2s4CaxPX9XawgtrBAiETriitAcQ6gmlCJG/N5IcqNJ
 P5/bAMbwyKgKnFy7XE2EJtXwF3i+u8OoDgXh5BAI6PE5rN7wBKcQIkdLw4xgtiMArISXxpXQ+
 0Sl7j1BOIGCQEBiSV7zjND2KISLx//Y4WwDSS2Lt3HAnIDs4CmxPpd+hCtihJTuh+yQ+wVlDg
 58wnYPUICKhJbHh+AGsMtsfLzH5YJjKKzkGybhTBpFpJJs5BMWsDIsopRvTi1qCy1SNdYL6ko
 Mz2jJDcxM0fX0NBELze1uDgxPTUnMalYLzk/dxMjMEYYgGAH490+50OMkhxMSqK88spZ4UJ8S
 fkplRmJxRnxRaU5qcWHGGU4OJQkeLc1AeUEi1LTUyvSMnOA0QqTluDgURLh1WsGSvMWFyTmFm
 emQ6ROMSpKifOeBukTAElklObBtcESxCVGWSlhXkagQ4R4ClKLcjNLUOVfMYpzMCoJ84qCjOf
 JzCuBm/4KaDET0OJl/ekgi0sSEVJSDYxG+3eusLN1SghZInYniPHEuu+f5HTWCXCuldERfvHw
 xNtdKa+MGPefy2/6WaWUc+hT0sV13Yqf2YTSP7xJVL8Z6K9y7saX+bf8Pxa8+VS0KSKqxTczd
 DrX8xL7RqbPay6vUSl4IHz6yS79XJfns24v13H9dKov1fX08eLrty9e1XtheK6U77a+EktxRq
 KhFnNRcSIAlj34XgsDAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1466598513!44551868!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24076 invoked from network); 22 Jun 2016 12:28:33 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:28:33 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785793"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 12/20] Fix precompiled headers on checked
 builds
Thread-Index: AQHRtcsJBH+Q3ZcCPU+SJuFm9z6cMJ/1l4OQ
Date: Wed, 22 Jun 2016 12:28:32 +0000
Message-ID: <441a30870ad34cbc97bd3f69be628ca8@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-13-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-13-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 12/20] Fix precompiled headers on
	checked	builds
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTIvMjBdIEZpeCBwcmVjb21waWxlZCBoZWFkZXJzIG9uIGNo
ZWNrZWQNCj4gYnVpbGRzDQo+IA0KDQpBZ2FpbiwgdGhpcyBsb29rcyBsaWtlIGEgcGF0Y2ggdGhh
dCBpcyBidWctZml4aW5nIGEgcHJldmlvdXMgcGF0Y2gsIGFuZCBzaG91bGQgdGhlcmVmb3JlIGJl
IGZvbGRlZC4NCg0KICBQYXVsDQoNCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5z
bWl0aEBjaXRyaXguY29tPg0KPiAtLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcCAg
ICAgICAgfCA3ICsrKysrKy0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmggICAgICAgICAg
fCAyICstDQo+ICB2czIwMTIvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgNCAtLS0tDQo+
ICB2czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgNCAtLS0tDQo+ICA0IGZpbGVz
IGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t
Z2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdl
bnQuY3BwDQo+IGluZGV4IGJiMTdlOTEuLjQ4MDQ0N2QgMTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRl
YWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAN
Cj4gQEAgLTI2OSw2ICsyNjksMTEgQEAgdm9pZCBDTGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4g
ICAgICBDTGl0ZUFnZW50OjpMb2coIk9uU2h1dGRvd24oJXdzKVxuIiwgbV9kZXYtPlBhdGgoKSk7
DQo+IA0KPiAgICAgIC8vIGNoZWNrIHNodXRkb3duIHR5cGUgYW5kIGVuYWN0IHNodXRkb3duDQo+
ICsgICAgc3RkOjpzdHJpbmcgdHlwZTsNCj4gKyAgICBtX2Rldi0+U3RvcmVSZWFkKCJjb250cm9s
L3NodXRkb3duIiwgdHlwZSk7DQo+ICsNCj4gKw0KPiArICAgIENMaXRlQWdlbnQ6OkxvZygiT25T
aHV0ZG93biglcylcbiIsIHR5cGUuY19zdHIoKSk7DQo+ICB9DQo+IA0KPiAgdm9pZCBDTGl0ZUFn
ZW50OjpPblN1c3BlbmQoKQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQu
aCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gaW5kZXggYTk1YzM5NC4uOGFiMDYyYSAx
MDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiArKysgYi9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5oDQo+IEBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6IC8vIHNlcnZp
Y2Ugc3VwcG9ydA0KPiAgICAgIENYZW5JZmFjZUl0ZiogICAgICAgICAgIG1fZGV2Ow0KPiAgICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgIG1fY3R4dF9zaHV0ZG93bjsNCj4gICAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICBtX2N0eHRfc3VzcGVuZDsNCj4gLSAgICBpbnQgICAgICAgICAgICAg
ICAgICAgICBtX3VwZGF0ZTsNCj4gKyAgICBsb25nICAgICAgICAgICAgICAgICAgICBtX3VwZGF0
ZTsNCj4gIH07DQo+IA0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQgYS92czIwMTIvbGl0ZWFnZW50
L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGIvdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJv
ag0KPiBpbmRleCA0ODYzMDYxLi42ODNiMzEwIDEwMDY0NA0KPiAtLS0gYS92czIwMTIvbGl0ZWFn
ZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50
LnZjeHByb2oNCj4gQEAgLTg2LDcgKzg2LDYgQEANCj4gDQo+ICAgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4NCj4gICAgICA8Q2xDb21waWxlPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+DQo+ICAgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPg0KPiAgICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0
aW9uPg0KPiANCj4gPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfV0lORE9X
UztfQ1JUX1NFQ1VSRV9OT18NCj4gV0FSTklOR1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KPiBAQCAtMTExLDcgKzExMCw2IEBADQo+ICAgIDwv
SXRlbURlZmluaXRpb25Hcm91cD4NCj4gICAgPEl0ZW1EZWZpbml0aW9uR3JvdXANCj4gQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCj4gICAg
ICA8Q2xDb21waWxlPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGls
ZWRIZWFkZXI+DQo+ICAgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0K
PiAgICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KPiANCj4gPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfV0lORE9XUztfQ1JUX1NFQ1VSRV9O
T18NCj4gV0FSTklOR1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPg0KPiBAQCAtMTM3LDcgKzEzNSw2IEBADQo+ICAgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPg0KPiAgICAgIDxDbENvbXBpbGU+DQo+ICAgICAgICA8V2FybmluZ0xldmVsPkxl
dmVsMzwvV2FybmluZ0xldmVsPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPk5vdFVzaW5n
PC9QcmVjb21waWxlZEhlYWRlcj4NCj4gICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09w
dGltaXphdGlvbj4NCj4gICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlv
bkxldmVsTGlua2luZz4NCj4gICAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmlu
c2ljRnVuY3Rpb25zPg0KPiBAQCAtMTY2LDcgKzE2Myw2IEBADQo+ICAgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4NCj4gICAgICA8Q2xDb21waWxlPg0KPiAgICAgICAgPFdhcm5pbmdMZXZlbD5M
ZXZlbDM8L1dhcm5pbmdMZXZlbD4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Ob3RVc2lu
ZzwvUHJlY29tcGlsZWRIZWFkZXI+DQo+ICAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9P
cHRpbWl6YXRpb24+DQo+ICAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rp
b25MZXZlbExpbmtpbmc+DQo+ICAgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJp
bnNpY0Z1bmN0aW9ucz4NCj4gZGlmZiAtLWdpdCBhL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50
LnZjeHByb2oNCj4gYi92czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGluZGV4
IGE3ZDEwYzAuLmNjNTI5OTIgMTAwNjQ0DQo+IC0tLSBhL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFn
ZW50LnZjeHByb2oNCj4gKysrIGIvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0K
PiBAQCAtODYsNyArODYsNiBAQA0KPiAgICA8L1Byb3BlcnR5R3JvdXA+DQo+ICAgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4NCj4gICAgICA8Q2xDb21waWxlPg0KPiAtICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCj4gICAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQo+ICAgICAgICA8T3B0aW1pemF0aW9uPkRpc2Fi
bGVkPC9PcHRpbWl6YXRpb24+DQo+IA0KPiA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7
X0RFQlVHO19XSU5ET1dTO19DUlRfU0VDVVJFX05PXw0KPiBXQVJOSU5HUzslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQo+IEBAIC0xMTMsNyArMTEy
LDYgQEANCj4gICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KPiAgICA8SXRlbURlZmluaXRpb25H
cm91cA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPg0KPiAgICAgIDxDbENvbXBpbGU+DQo+IC0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KPiAgICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDM8L1dhcm5pbmdMZXZlbD4NCj4gICAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGlt
aXphdGlvbj4NCj4gDQo+IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X1dJ
TkRPV1M7X0NSVF9TRUNVUkVfTk9fDQo+IFdBUk5JTkdTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCj4gQEAgLTE0MSw3ICsxMzksNiBAQA0KPiAg
ICA8SXRlbURlZmluaXRpb25Hcm91cA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCj4gICAgICA8Q2xDb21waWxlPg0KPiAgICAg
ICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCj4gLSAgICAgIDxQcmVjb21w
aWxlZEhlYWRlcj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQo+ICAgICAgICA8T3B0aW1p
emF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQo+ICAgICAgICA8RnVuY3Rpb25MZXZlbExp
bmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQo+ICAgICAgICA8SW50cmluc2ljRnVu
Y3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCj4gQEAgLTE3MCw3ICsxNjcsNiBAQA0K
PiAgICA8SXRlbURlZmluaXRpb25Hcm91cA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQo+ICAgICAgPENsQ29tcGlsZT4NCj4gICAg
ICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQo+IC0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KPiAgICAgICAgPE9wdGlt
aXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KPiAgICAgICAgPEZ1bmN0aW9uTGV2ZWxM
aW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KPiAgICAgICAgPEludHJpbnNpY0Z1
bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQu
MQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxt
YW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9t
YWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:28:36 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:28:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhGm-0004HU-OI; Wed, 22 Jun 2016 12:28:36 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhGk-0004HK-Vf
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:28:35 +0000
Received: from [193.109.254.147] by server-13.bemta-14.messagelabs.com id
 8D/D7-09524-2748A675; Wed, 22 Jun 2016 12:28:34 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQrewJSv
 c4OQsNYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCacXrvOraCnTYVJ3+rNTBese5i5OSQEPCTuDjx
 KAuIzSagI7H06HwmEFtEoEDi+/t5zCA2s4CaxPX9XawgtrBAiETriitAcQ6gmlCJG/N5IcqNJ
 P5/bAMbwyKgKnFy7XE2EJtXwF3i+u8OoDgXh5BAI6PE5rN7wBKcQIkdLw4xgtiMArISXxpXQ+
 0Sl7j1BOIGCQEBiSV7zjND2KISLx//Y4WwDSS2Lt3HAnIDs4CmxPpd+hCtihJTuh+yQ+wVlDg
 58wnYPUICKhJbHh+AGsMtsfLzH5YJjKKzkGybhTBpFpJJs5BMWsDIsopRvTi1qCy1SNdYL6ko
 Mz2jJDcxM0fX0NBELze1uDgxPTUnMalYLzk/dxMjMEYYgGAH490+50OMkhxMSqK88spZ4UJ8S
 fkplRmJxRnxRaU5qcWHGGU4OJQkeLc1AeUEi1LTUyvSMnOA0QqTluDgURLh1WsGSvMWFyTmFm
 emQ6ROMSpKifOeBukTAElklObBtcESxCVGWSlhXkagQ4R4ClKLcjNLUOVfMYpzMCoJ84qCjOf
 JzCuBm/4KaDET0OJl/ekgi0sSEVJSDYxG+3eusLN1SghZInYniPHEuu+f5HTWCXCuldERfvHw
 xNtdKa+MGPefy2/6WaWUc+hT0sV13Yqf2YTSP7xJVL8Z6K9y7saX+bf8Pxa8+VS0KSKqxTczd
 DrX8xL7RqbPay6vUSl4IHz6yS79XJfns24v13H9dKov1fX08eLrty9e1XtheK6U77a+EktxRq
 KhFnNRcSIAlj34XgsDAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1466598513!44551868!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24076 invoked from network); 22 Jun 2016 12:28:33 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:28:33 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785793"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 12/20] Fix precompiled headers on checked
 builds
Thread-Index: AQHRtcsJBH+Q3ZcCPU+SJuFm9z6cMJ/1l4OQ
Date: Wed, 22 Jun 2016 12:28:32 +0000
Message-ID: <441a30870ad34cbc97bd3f69be628ca8@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-13-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-13-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 12/20] Fix precompiled headers on
	checked	builds
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTIvMjBdIEZpeCBwcmVjb21waWxlZCBoZWFkZXJzIG9uIGNo
ZWNrZWQNCj4gYnVpbGRzDQo+IA0KDQpBZ2FpbiwgdGhpcyBsb29rcyBsaWtlIGEgcGF0Y2ggdGhh
dCBpcyBidWctZml4aW5nIGEgcHJldmlvdXMgcGF0Y2gsIGFuZCBzaG91bGQgdGhlcmVmb3JlIGJl
IGZvbGRlZC4NCg0KICBQYXVsDQoNCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5z
bWl0aEBjaXRyaXguY29tPg0KPiAtLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcCAg
ICAgICAgfCA3ICsrKysrKy0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmggICAgICAgICAg
fCAyICstDQo+ICB2czIwMTIvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgNCAtLS0tDQo+
ICB2czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgNCAtLS0tDQo+ICA0IGZpbGVz
IGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t
Z2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdl
bnQuY3BwDQo+IGluZGV4IGJiMTdlOTEuLjQ4MDQ0N2QgMTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRl
YWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAN
Cj4gQEAgLTI2OSw2ICsyNjksMTEgQEAgdm9pZCBDTGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4g
ICAgICBDTGl0ZUFnZW50OjpMb2coIk9uU2h1dGRvd24oJXdzKVxuIiwgbV9kZXYtPlBhdGgoKSk7
DQo+IA0KPiAgICAgIC8vIGNoZWNrIHNodXRkb3duIHR5cGUgYW5kIGVuYWN0IHNodXRkb3duDQo+
ICsgICAgc3RkOjpzdHJpbmcgdHlwZTsNCj4gKyAgICBtX2Rldi0+U3RvcmVSZWFkKCJjb250cm9s
L3NodXRkb3duIiwgdHlwZSk7DQo+ICsNCj4gKw0KPiArICAgIENMaXRlQWdlbnQ6OkxvZygiT25T
aHV0ZG93biglcylcbiIsIHR5cGUuY19zdHIoKSk7DQo+ICB9DQo+IA0KPiAgdm9pZCBDTGl0ZUFn
ZW50OjpPblN1c3BlbmQoKQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQu
aCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gaW5kZXggYTk1YzM5NC4uOGFiMDYyYSAx
MDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiArKysgYi9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5oDQo+IEBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6IC8vIHNlcnZp
Y2Ugc3VwcG9ydA0KPiAgICAgIENYZW5JZmFjZUl0ZiogICAgICAgICAgIG1fZGV2Ow0KPiAgICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgIG1fY3R4dF9zaHV0ZG93bjsNCj4gICAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICBtX2N0eHRfc3VzcGVuZDsNCj4gLSAgICBpbnQgICAgICAgICAgICAg
ICAgICAgICBtX3VwZGF0ZTsNCj4gKyAgICBsb25nICAgICAgICAgICAgICAgICAgICBtX3VwZGF0
ZTsNCj4gIH07DQo+IA0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQgYS92czIwMTIvbGl0ZWFnZW50
L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGIvdnMyMDEyL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJv
ag0KPiBpbmRleCA0ODYzMDYxLi42ODNiMzEwIDEwMDY0NA0KPiAtLS0gYS92czIwMTIvbGl0ZWFn
ZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50
LnZjeHByb2oNCj4gQEAgLTg2LDcgKzg2LDYgQEANCj4gDQo+ICAgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4NCj4gICAgICA8Q2xDb21waWxlPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+DQo+ICAgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPg0KPiAgICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0
aW9uPg0KPiANCj4gPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfV0lORE9X
UztfQ1JUX1NFQ1VSRV9OT18NCj4gV0FSTklOR1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KPiBAQCAtMTExLDcgKzExMCw2IEBADQo+ICAgIDwv
SXRlbURlZmluaXRpb25Hcm91cD4NCj4gICAgPEl0ZW1EZWZpbml0aW9uR3JvdXANCj4gQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCj4gICAg
ICA8Q2xDb21waWxlPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGls
ZWRIZWFkZXI+DQo+ICAgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0K
PiAgICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KPiANCj4gPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfV0lORE9XUztfQ1JUX1NFQ1VSRV9O
T18NCj4gV0FSTklOR1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPg0KPiBAQCAtMTM3LDcgKzEzNSw2IEBADQo+ICAgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPg0KPiAgICAgIDxDbENvbXBpbGU+DQo+ICAgICAgICA8V2FybmluZ0xldmVsPkxl
dmVsMzwvV2FybmluZ0xldmVsPg0KPiAtICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPk5vdFVzaW5n
PC9QcmVjb21waWxlZEhlYWRlcj4NCj4gICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09w
dGltaXphdGlvbj4NCj4gICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlv
bkxldmVsTGlua2luZz4NCj4gICAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmlu
c2ljRnVuY3Rpb25zPg0KPiBAQCAtMTY2LDcgKzE2Myw2IEBADQo+ICAgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4NCj4gICAgICA8Q2xDb21waWxlPg0KPiAgICAgICAgPFdhcm5pbmdMZXZlbD5M
ZXZlbDM8L1dhcm5pbmdMZXZlbD4NCj4gLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Ob3RVc2lu
ZzwvUHJlY29tcGlsZWRIZWFkZXI+DQo+ICAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9P
cHRpbWl6YXRpb24+DQo+ICAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rp
b25MZXZlbExpbmtpbmc+DQo+ICAgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJp
bnNpY0Z1bmN0aW9ucz4NCj4gZGlmZiAtLWdpdCBhL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFnZW50
LnZjeHByb2oNCj4gYi92czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qDQo+IGluZGV4
IGE3ZDEwYzAuLmNjNTI5OTIgMTAwNjQ0DQo+IC0tLSBhL3ZzMjAxMy9saXRlYWdlbnQvTGl0ZUFn
ZW50LnZjeHByb2oNCj4gKysrIGIvdnMyMDEzL2xpdGVhZ2VudC9MaXRlQWdlbnQudmN4cHJvag0K
PiBAQCAtODYsNyArODYsNiBAQA0KPiAgICA8L1Byb3BlcnR5R3JvdXA+DQo+ICAgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwDQo+IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4NCj4gICAgICA8Q2xDb21waWxlPg0KPiAtICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCj4gICAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQo+ICAgICAgICA8T3B0aW1pemF0aW9uPkRpc2Fi
bGVkPC9PcHRpbWl6YXRpb24+DQo+IA0KPiA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7
X0RFQlVHO19XSU5ET1dTO19DUlRfU0VDVVJFX05PXw0KPiBXQVJOSU5HUzslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQo+IEBAIC0xMTMsNyArMTEy
LDYgQEANCj4gICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KPiAgICA8SXRlbURlZmluaXRpb25H
cm91cA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPg0KPiAgICAgIDxDbENvbXBpbGU+DQo+IC0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KPiAgICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDM8L1dhcm5pbmdMZXZlbD4NCj4gICAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGlt
aXphdGlvbj4NCj4gDQo+IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X1dJ
TkRPV1M7X0NSVF9TRUNVUkVfTk9fDQo+IFdBUk5JTkdTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCj4gQEAgLTE0MSw3ICsxMzksNiBAQA0KPiAg
ICA8SXRlbURlZmluaXRpb25Hcm91cA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCj4gICAgICA8Q2xDb21waWxlPg0KPiAgICAg
ICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCj4gLSAgICAgIDxQcmVjb21w
aWxlZEhlYWRlcj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQo+ICAgICAgICA8T3B0aW1p
emF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQo+ICAgICAgICA8RnVuY3Rpb25MZXZlbExp
bmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQo+ICAgICAgICA8SW50cmluc2ljRnVu
Y3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCj4gQEAgLTE3MCw3ICsxNjcsNiBAQA0K
PiAgICA8SXRlbURlZmluaXRpb25Hcm91cA0KPiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQo+ICAgICAgPENsQ29tcGlsZT4NCj4gICAg
ICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQo+IC0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KPiAgICAgICAgPE9wdGlt
aXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KPiAgICAgICAgPEZ1bmN0aW9uTGV2ZWxM
aW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KPiAgICAgICAgPEludHJpbnNpY0Z1
bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQu
MQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxt
YW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9t
YWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:30:21 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:30:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhIS-0004hQ-Tu; Wed, 22 Jun 2016 12:30:20 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhIR-0004hE-Do
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:30:19 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 60/EA-22092-AD48A675; Wed, 22 Jun 2016 12:30:18 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleJIrShJLcpLzFFi42LZKekooXurJSv
 coOMZi8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDNePF+OmvBObeK/Yf+sDcw3nDtYuTkkBDwk9j6
 cCMriM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V1ANRwcwgJuEhdvcEGUuEt8WbaQEcI2k
 lh//hMLiM0ioCrRNeso2EheoJqNa6+ydTFycQgJNDJKzOi4A1bECZR4v301G4jNKCAr8aVxNd
 QucYlbTyBukBAQkFiy5zwzhC0q8fLxP1YI20Bi69J9LCD3MAtoSqzfpQ/RqigxpfshO8ReQYm
 TM5+ArRISUJHY8vgA1BhuiZWf/7BMYBSdhWTbLIRJs5BMmoVk0gJGllWM6sWpRWWpRbrGeklF
 mekZJbmJmTm6hgZmermpxcWJ6ak5iUnFesn5uZsYgVHCAAQ7GDv+OR1ilORgUhLllVfOChfiS
 8pPqcxILM6ILyrNSS0+xCjDwaEkwWvdDJQTLEpNT61Iy8wBxitMWoKDR0mENwckzVtckJhbnJ
 kOkTrFqMsxa/mdtUxCLHn5ealS4rxWIEUCIEUZpXlwI2Cp4xKjrJQwLyPQUUI8BalFuZklqPK
 vGMU5GJWEeV1ApvBk5pXAbXoFdAQT0BHL+tNBjihJREhJNTCaqm/MVbw3LeD5oolxnJt81Ht3
 3uG+VzsrquCCj1bf9qCevu6tq81WH75k37wi7lpwuPgUwxOGx+eUdTybHPl6oggzg3Cw6S4Zr
 nVazZ/XdSrobfkovV9n/y6eTTkacxv7Gbevn1nJ3er8NvquXOSTZavvuVjsenDuq/fPotqPyS
 9k2LataDZQYinOSDTUYi4qTgQAwmpEvBgDAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-21.messagelabs.com!1466598617!20191455!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 54952 invoked from network); 22 Jun 2016 12:30:17 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-9.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:30:17 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785938"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 13/20] Add SetXenTime functionality
Thread-Index: AQHRtctK52oHANdbwkKWBKzblswlvJ/1l+PQ
Date: Wed, 22 Jun 2016 12:30:17 +0000
Message-ID: <0923d7064e98404dada67d4f2cd206be@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-14-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-14-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 13/20] Add SetXenTime functionality
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTMvMjBdIEFkZCBTZXRYZW5UaW1lIGZ1bmN0aW9uYWxpdHkN
Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4N
Cj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgfCAxMTYNCj4gKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmggICB8ICAgMyArKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygr
KSwgMyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVB
Z2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gaW5kZXggNDgwNDQ3ZC4u
YjYxOTY3ZiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+ICsr
KyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAtMzYsNiArMzYsMTIgQEANCj4g
ICNpbmNsdWRlICJMaXRlQWdlbnQuaCINCj4gICNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCIN
Cj4gDQo+ICsjZGVmaW5lIFhFTlRPT0xTX0lOU1RBTExfUkVHX0tFWSAgICJTT0ZUV0FSRVxcQ2l0
cml4XFxYZW5Ub29scyINCj4gKw0KPiArI2lmZGVmIF9XSU42NA0KPiArI2RlZmluZSBYRU5UT09M
U19JTlNUQUxMX1JFR19LRVk2NA0KPiAiU09GVFdBUkVcXFdvdzY0MzJOb2RlXFxDaXRyaXhcXFhl
blRvb2xzIg0KPiArI2VuZGlmDQo+ICsNCg0KTm90aGluZyBDaXRyaXggYnJhbmRlZCBoZXJlIHBs
ZWFzZS4gSW50cm9kdWNlIHBhcmFtZXRlcml6ZWQgYnJhbmRpbmcgaWYgbmVjZXNzYXJ5Lg0KDQog
IFBhdWwNCg0KPiAgaW50IF9fc3RkY2FsbCBXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuY2UsIEhJ
TlNUQU5DRSBpZ25vcmUsIExQU1RSDQo+IGxwQ21kTGluZSwgaW50IG5DbWRTaG93KQ0KPiAgew0K
PiAgICAgIGlmIChzdHJsZW4obHBDbWRMaW5lKSAhPSAwKSB7DQo+IEBAIC0yMDUsNyArMjExLDYg
QEAgQ0xpdGVBZ2VudDo6fkNMaXRlQWdlbnQoKQ0KPiAgew0KPiAgICAgIENMaXRlQWdlbnQ6Okxv
ZygiT25EZXZpY2VSZW1vdmVkKCV3cylcbiIsIGRldi0+UGF0aCgpKTsNCj4gICAgICBpZiAoKENY
ZW5JZmFjZUl0ZiopZGV2ID09IG1fZGV2KSB7DQo+IC0gICAgICAgIG1fZGV2ID0gTlVMTDsNCj4g
ICAgICAgICAgLy8gYWN0aXZlIGRldmljZSByZW1vdmVkDQo+ICAgICAgICAgIENMaXRlQWdlbnQ6
OkxvZygiQWN0aXZlIERldmljZSBSZW1vdmVkXG4iKTsNCj4gDQo+IEBAIC0yMjAsNiArMjI1LDkg
QEAgQ0xpdGVBZ2VudDo6fkNMaXRlQWdlbnQoKQ0KPiAgICAgICAgICAvLyB1bnJlZ2lzdGVyIHdh
dGNoDQo+ICAgICAgICAgIG1fZGV2LT5TdG9yZVJlbW92ZVdhdGNoKG1fY3R4dF9zaHV0ZG93bik7
DQo+ICAgICAgICAgIG1fY3R4dF9zaHV0ZG93biA9IE5VTEw7DQo+ICsNCj4gKyAgICAgICAgLy8g
cmVtb3ZlIGludGVybmFsIHJlZmVyZW5jZQ0KPiArICAgICAgICBtX2RldiA9IE5VTEw7DQo+ICAg
ICAgfQ0KPiAgfQ0KPiANCj4gQEAgLTI0Niw2ICsyNTQsNyBAQCBib29sIENMaXRlQWdlbnQ6OlNl
cnZpY2VNYWluTG9vcCgpDQo+ICAgICAgRFdPUkQgICB3YWl0ID0gV2FpdEZvck11bHRpcGxlT2Jq
ZWN0cygzLCBldnRzLCBGQUxTRSwgSU5GSU5JVEUpOw0KPiAgICAgIHN3aXRjaCAod2FpdCkgew0K
PiAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoNCj4gKyAgICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJT
dG9wIGV2ZW50IHNldFxuIik7DQo+ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2VydmljZSBz
dG9wIGV2ZW50DQo+IA0KPiAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMCsxOg0KPiBAQCAtMjcyLDcg
KzI4MSw2IEBAIHZvaWQgQ0xpdGVBZ2VudDo6T25TaHV0ZG93bigpDQo+ICAgICAgc3RkOjpzdHJp
bmcgdHlwZTsNCj4gICAgICBtX2Rldi0+U3RvcmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgdHlw
ZSk7DQo+IA0KPiAtDQo+ICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJPblNodXRkb3duKCVzKVxuIiwg
dHlwZS5jX3N0cigpKTsNCj4gIH0NCj4gDQo+IEBAIC0yOTMsMTcgKzMwMSwxMTkgQEAgdm9pZCBD
TGl0ZUFnZW50OjpPblN1c3BlbmQoKQ0KPiAgdm9pZCBDTGl0ZUFnZW50OjpTZXRYZW5UaW1lKCkN
Cj4gIHsNCj4gICAgICBDTGl0ZUFnZW50OjpMb2coIlNldFhlblRpbWUoKVxuIik7DQo+ICsNCj4g
KyAgICBGSUxFVElNRSBub3cgPSB7IDAgfTsNCj4gKyAgICBpZiAoIW1fZGV2LT5TaGFyZWRJbmZv
R2V0VGltZSgmbm93KSkNCj4gKyAgICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgYm9vbCBJc1V0
YyA9IEhvc3RUaW1lSXNVdGMoKTsNCj4gKyAgICBpZiAoSXNVdGMpDQo+ICsgICAgICAgIEFkanVz
dFhlblRpbWVUb1V0Yygmbm93KTsNCj4gKw0KPiArICAgIFNZU1RFTVRJTUUgc3lzID0geyAwIH07
DQo+ICsgICAgaWYgKCFGaWxlVGltZVRvU3lzdGVtVGltZSgmbm93LCAmc3lzKSkNCj4gKyAgICAg
ICAgcmV0dXJuOw0KPiArDQo+ICsgICAgU1lTVEVNVElNRSBjdXIgPSB7IDAgfTsNCj4gKyAgICBH
ZXRMb2NhbFRpbWUoJmN1cik7DQo+ICsgICAgQ0xpdGVBZ2VudDo6TG9nKCJUaW1lIE5vdyA9ICVk
LyVkLyVkICVkOiUwMmQ6JTAyZC4lZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgY3VyLndZ
ZWFyLCBjdXIud01vbnRoLCBjdXIud0RheSwNCj4gKyAgICAgICAgICAgICAgICAgICAgY3VyLndI
b3VyLCBjdXIud01pbnV0ZSwgY3VyLndTZWNvbmQsIGN1ci53TWlsbGlzZWNvbmRzKTsNCj4gKyAg
ICBDTGl0ZUFnZW50OjpMb2coIk5ldyBUaW1lID0gJWQvJWQvJWQgJWQ6JTAyZDolMDJkLiVkXG4i
LA0KPiArICAgICAgICAgICAgICAgICAgICBzeXMud1llYXIsIHN5cy53TW9udGgsIHN5cy53RGF5
LA0KPiArICAgICAgICAgICAgICAgICAgICBzeXMud0hvdXIsIHN5cy53TWludXRlLCBzeXMud1Nl
Y29uZCwgc3lzLndNaWxsaXNlY29uZHMpOw0KPiArICAgIGlmIChJc1V0YykNCj4gKyAgICAgICAg
U2V0U3lzdGVtVGltZSgmc3lzKTsNCj4gKyAgICBlbHNlDQo+ICsgICAgICAgIFNldExvY2FsVGlt
ZSgmc3lzKTsNCj4gIH0NCj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6OktpY2tYYXBpKCkNCj4gIHsN
Cj4gICAgICBjaGFyIHZhbHVlWzMyXTsNCj4gLSAgICBfc25wcmludGZfcyh2YWx1ZSwgc2l6ZW9m
KHZhbHVlKSwgMzEsICIlSTY0ZCIsIG1fdXBkYXRlKTsNCj4gKyAgICBfc25wcmludGZfcyh2YWx1
ZSwgc2l6ZW9mKHZhbHVlKSwgMzEsICIlSTY0ZCIsIChfX2ludDY0KW1fdXBkYXRlKTsNCj4gICAg
ICBtX2Rldi0+U3RvcmVXcml0ZSgiZGF0YS91cGRhdGVfY250IiwgdmFsdWUpOw0KPiAgICAgIG1f
ZGV2LT5TdG9yZVdyaXRlKCJkYXRhL3VwZGF0ZWQiLCAiMSIpOw0KPiAgICAgICsrbV91cGRhdGU7
DQo+ICB9DQo+IA0KPiArYm9vbCBDTGl0ZUFnZW50OjpIb3N0VGltZUlzVXRjKCkNCj4gK3sNCj4g
KyNpZmRlZiBfV0lONjQNCj4gKyAgICBpZiAoUmVnTWF0Y2hTdHIoWEVOVE9PTFNfSU5TVEFMTF9S
RUdfS0VZNjQsICJIb3N0VGltZSIsICJVVEMiKSkNCj4gKyAgICAgICAgcmV0dXJuIHRydWU7DQo+
ICsjZW5kaWYNCj4gKyAgICBpZiAoUmVnTWF0Y2hTdHIoWEVOVE9PTFNfSU5TVEFMTF9SRUdfS0VZ
LCAiSG9zdFRpbWUiLCAiVVRDIikpDQo+ICsgICAgICAgIHJldHVybiB0cnVlOw0KPiArDQo+ICsg
ICAgcmV0dXJuIGZhbHNlOw0KPiArfQ0KPiArDQo+ICt2b2lkIENMaXRlQWdlbnQ6OkFkanVzdFhl
blRpbWVUb1V0YyhGSUxFVElNRSogbm93KQ0KPiArew0KPiArICAgIHN0ZDo6c3RyaW5nIHZtOw0K
PiArICAgIGlmICghbV9kZXYtPlN0b3JlUmVhZCgidm0iLCB2bSkpDQo+ICsgICAgICAgIHJldHVy
bjsNCj4gKw0KPiArICAgIHN0ZDo6c3RyaW5nIG9mZnM7DQo+ICsgICAgaWYgKCFtX2Rldi0+U3Rv
cmVSZWFkKHZtICsgIi9ydGMvdGltZW9mZnNldCIsIG9mZnMpKSB7DQo+ICsgICAgICAgIGlmICgh
bV9kZXYtPlN0b3JlUmVhZCgicGxhdGZvcm0vdGltZW9mZnNldCIsIG9mZnMpKQ0KPiArICAgICAg
ICAgICAgcmV0dXJuOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGxvbmcgb2Zmc2V0ID0gKGxvbmcp
YXRvaShvZmZzLmNfc3RyKCkpOw0KPiArDQo+ICsgICAgTEFSR0VfSU5URUdFUiBsb2ZmczsNCj4g
KyAgICBsb2Zmcy5RdWFkUGFydCA9IChMT05HTE9ORylvZmZzZXQgKiAxMDAwMDAwOw0KPiArDQo+
ICsgICAgVUxBUkdFX0lOVEVHRVIgbG5vdzsNCj4gKyAgICBsbm93Lkxvd1BhcnQgID0gbm93LT5k
d0xvd0RhdGVUaW1lOw0KPiArICAgIGxub3cuSGlnaFBhcnQgPSBub3ctPmR3SGlnaERhdGVUaW1l
Ow0KPiArDQo+ICsgICAgbG5vdy5RdWFkUGFydCAtPSBsb2Zmcy5RdWFkUGFydDsNCj4gKw0KPiAr
ICAgIG5vdy0+ZHdMb3dEYXRlVGltZSAgPSBsbm93Lkxvd1BhcnQ7DQo+ICsgICAgbm93LT5kd0hp
Z2hEYXRlVGltZSA9IGxub3cuSGlnaFBhcnQ7DQo+ICt9DQo+ICsNCj4gK2Jvb2wgQ0xpdGVBZ2Vu
dDo6UmVnTWF0Y2hTdHIoY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbmFtZSwgY29uc3QN
Cj4gY2hhciogdmFsdWUpDQo+ICt7DQo+ICsgICAgSEtFWSAgICAgICAga2V5Ow0KPiArICAgIExS
RVNVTFQgICAgIGxyOw0KPiArICAgIGJvb2wgICAgICAgIG1hdGNoID0gZmFsc2U7DQo+ICsNCj4g
KyAgICBsciA9IFJlZ09wZW5LZXlFeChIS0VZX0xPQ0FMX01BQ0hJTkUsIHBhdGgsIDAsIEtFWV9S
RUFELCAma2V5KTsNCj4gKyAgICBpZiAobHIgIT0gRVJST1JfU1VDQ0VTUykNCj4gKyAgICAgICAg
cmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgICAgbG9uZyAgICAgICAgc2l6ZSA9IDMyOw0KPiArICAg
IERXT1JEICAgICAgIGxlbmd0aDsNCj4gKyAgICBjaGFyKiAgICAgICBidWZmZXIgPSBOVUxMOw0K
PiArICAgIGRvIHsNCj4gKyAgICAgICAgbGVuZ3RoID0gc2l6ZTsNCj4gKyAgICAgICAgaWYgKGJ1
ZmZlcikNCj4gKyAgICAgICAgICAgIGRlbGV0ZSBbXSBidWZmZXI7DQo+ICsNCj4gKyAgICAgICAg
YnVmZmVyID0gbmV3IGNoYXJbc2l6ZV07DQo+ICsgICAgICAgIGlmIChidWZmZXIgPT0gTlVMTCkN
Cj4gKyAgICAgICAgICAgIGdvdG8gZG9uZTsNCj4gKw0KPiArICAgICAgICBsciA9IFJlZ1F1ZXJ5
VmFsdWVFeChrZXksIG5hbWUsIE5VTEwsIE5VTEwsIChMUEJZVEUpYnVmZmVyLA0KPiAmbGVuZ3Ro
KTsNCj4gKyAgICAgICAgc2l6ZSAqPSAyOw0KPiArICAgIH0gd2hpbGUgKGxyID09IEVSUk9SX01P
UkVfREFUQSk7DQo+ICsgICAgaWYgKGxyICE9IEVSUk9SX1NVQ0NFU1MpDQo+ICsgICAgICAgIGdv
dG8gZG9uZTsNCj4gKyAgICBpZiAoX3N0cm5pY29sbCh2YWx1ZSwgYnVmZmVyLCBsZW5ndGgpKQ0K
PiArICAgICAgICBnb3RvIGRvbmU7DQo+ICsgICAgbWF0Y2ggPSB0cnVlOw0KPiArDQo+ICtkb25l
Og0KPiArICAgIGlmIChidWZmZXIpDQo+ICsgICAgICAgIGRlbGV0ZSBbXSBidWZmZXI7DQo+ICsg
ICAgUmVnQ2xvc2VLZXkoa2V5KTsNCj4gKyAgICByZXR1cm4gbWF0Y2g7DQo+ICt9DQo+ICsNCj4g
IHZvaWQgQ0xpdGVBZ2VudDo6U2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdPUkQgZXhp
dCAvKj0gMCovLA0KPiBEV09SRCBoaW50IC8qPSAwKi8pDQo+ICB7DQo+ICAgICAgbV9zdGF0dXMu
ZHdDdXJyZW50U3RhdGUgPSBzdGF0ZTsNCj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmggYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IGluZGV4IDhhYjA2MmEuLjk3
YzY1MTQgMTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gKysrIGIv
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBAQCAtNzIsNiArNzIsOSBAQCBwcml2YXRlOiAv
LyBzZXJ2aWNlIGV2ZW50cw0KPiAgICAgIHZvaWQgT25TdXNwZW5kKCk7DQo+ICAgICAgdm9pZCBT
ZXRYZW5UaW1lKCk7DQo+ICAgICAgdm9pZCBLaWNrWGFwaSgpOw0KPiArICAgIGJvb2wgSG9zdFRp
bWVJc1V0YygpOw0KPiArICAgIHZvaWQgQWRqdXN0WGVuVGltZVRvVXRjKEZJTEVUSU1FKiBub3cp
Ow0KPiArICAgIGJvb2wgUmVnTWF0Y2hTdHIoY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciog
bmFtZSwgY29uc3QgY2hhcioNCj4gdmFsdWUpOw0KPiANCj4gIHByaXZhdGU6IC8vIHNlcnZpY2Ug
c3VwcG9ydA0KPiAgICAgIHZvaWQgU2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdPUkQg
ZXhpdCA9IDAsIERXT1JEIGhpbnQgPSAwKTsNCj4gLS0NCj4gMS45LjQubXN5c2dpdC4xDQo+IA0K
PiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4g
d2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0
aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4v
bGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:30:21 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:30:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhIS-0004hQ-Tu; Wed, 22 Jun 2016 12:30:20 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhIR-0004hE-Do
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:30:19 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 60/EA-22092-AD48A675; Wed, 22 Jun 2016 12:30:18 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleJIrShJLcpLzFFi42LZKekooXurJSv
 coOMZi8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDNePF+OmvBObeK/Yf+sDcw3nDtYuTkkBDwk9j6
 cCMriM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V1ANRwcwgJuEhdvcEGUuEt8WbaQEcI2k
 lh//hMLiM0ioCrRNeso2EheoJqNa6+ydTFycQgJNDJKzOi4A1bECZR4v301G4jNKCAr8aVxNd
 QucYlbTyBukBAQkFiy5zwzhC0q8fLxP1YI20Bi69J9LCD3MAtoSqzfpQ/RqigxpfshO8ReQYm
 TM5+ArRISUJHY8vgA1BhuiZWf/7BMYBSdhWTbLIRJs5BMmoVk0gJGllWM6sWpRWWpRbrGeklF
 mekZJbmJmTm6hgZmermpxcWJ6ak5iUnFesn5uZsYgVHCAAQ7GDv+OR1ilORgUhLllVfOChfiS
 8pPqcxILM6ILyrNSS0+xCjDwaEkwWvdDJQTLEpNT61Iy8wBxitMWoKDR0mENwckzVtckJhbnJ
 kOkTrFqMsxa/mdtUxCLHn5ealS4rxWIEUCIEUZpXlwI2Cp4xKjrJQwLyPQUUI8BalFuZklqPK
 vGMU5GJWEeV1ApvBk5pXAbXoFdAQT0BHL+tNBjihJREhJNTCaqm/MVbw3LeD5oolxnJt81Ht3
 3uG+VzsrquCCj1bf9qCevu6tq81WH75k37wi7lpwuPgUwxOGx+eUdTybHPl6oggzg3Cw6S4Zr
 nVazZ/XdSrobfkovV9n/y6eTTkacxv7Gbevn1nJ3er8NvquXOSTZavvuVjsenDuq/fPotqPyS
 9k2LataDZQYinOSDTUYi4qTgQAwmpEvBgDAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-21.messagelabs.com!1466598617!20191455!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 54952 invoked from network); 22 Jun 2016 12:30:17 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-9.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:30:17 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785938"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 13/20] Add SetXenTime functionality
Thread-Index: AQHRtctK52oHANdbwkKWBKzblswlvJ/1l+PQ
Date: Wed, 22 Jun 2016 12:30:17 +0000
Message-ID: <0923d7064e98404dada67d4f2cd206be@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-14-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-14-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 13/20] Add SetXenTime functionality
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTMvMjBdIEFkZCBTZXRYZW5UaW1lIGZ1bmN0aW9uYWxpdHkN
Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4N
Cj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgfCAxMTYNCj4gKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmggICB8ICAgMyArKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygr
KSwgMyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVB
Z2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gaW5kZXggNDgwNDQ3ZC4u
YjYxOTY3ZiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+ICsr
KyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAtMzYsNiArMzYsMTIgQEANCj4g
ICNpbmNsdWRlICJMaXRlQWdlbnQuaCINCj4gICNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCIN
Cj4gDQo+ICsjZGVmaW5lIFhFTlRPT0xTX0lOU1RBTExfUkVHX0tFWSAgICJTT0ZUV0FSRVxcQ2l0
cml4XFxYZW5Ub29scyINCj4gKw0KPiArI2lmZGVmIF9XSU42NA0KPiArI2RlZmluZSBYRU5UT09M
U19JTlNUQUxMX1JFR19LRVk2NA0KPiAiU09GVFdBUkVcXFdvdzY0MzJOb2RlXFxDaXRyaXhcXFhl
blRvb2xzIg0KPiArI2VuZGlmDQo+ICsNCg0KTm90aGluZyBDaXRyaXggYnJhbmRlZCBoZXJlIHBs
ZWFzZS4gSW50cm9kdWNlIHBhcmFtZXRlcml6ZWQgYnJhbmRpbmcgaWYgbmVjZXNzYXJ5Lg0KDQog
IFBhdWwNCg0KPiAgaW50IF9fc3RkY2FsbCBXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuY2UsIEhJ
TlNUQU5DRSBpZ25vcmUsIExQU1RSDQo+IGxwQ21kTGluZSwgaW50IG5DbWRTaG93KQ0KPiAgew0K
PiAgICAgIGlmIChzdHJsZW4obHBDbWRMaW5lKSAhPSAwKSB7DQo+IEBAIC0yMDUsNyArMjExLDYg
QEAgQ0xpdGVBZ2VudDo6fkNMaXRlQWdlbnQoKQ0KPiAgew0KPiAgICAgIENMaXRlQWdlbnQ6Okxv
ZygiT25EZXZpY2VSZW1vdmVkKCV3cylcbiIsIGRldi0+UGF0aCgpKTsNCj4gICAgICBpZiAoKENY
ZW5JZmFjZUl0ZiopZGV2ID09IG1fZGV2KSB7DQo+IC0gICAgICAgIG1fZGV2ID0gTlVMTDsNCj4g
ICAgICAgICAgLy8gYWN0aXZlIGRldmljZSByZW1vdmVkDQo+ICAgICAgICAgIENMaXRlQWdlbnQ6
OkxvZygiQWN0aXZlIERldmljZSBSZW1vdmVkXG4iKTsNCj4gDQo+IEBAIC0yMjAsNiArMjI1LDkg
QEAgQ0xpdGVBZ2VudDo6fkNMaXRlQWdlbnQoKQ0KPiAgICAgICAgICAvLyB1bnJlZ2lzdGVyIHdh
dGNoDQo+ICAgICAgICAgIG1fZGV2LT5TdG9yZVJlbW92ZVdhdGNoKG1fY3R4dF9zaHV0ZG93bik7
DQo+ICAgICAgICAgIG1fY3R4dF9zaHV0ZG93biA9IE5VTEw7DQo+ICsNCj4gKyAgICAgICAgLy8g
cmVtb3ZlIGludGVybmFsIHJlZmVyZW5jZQ0KPiArICAgICAgICBtX2RldiA9IE5VTEw7DQo+ICAg
ICAgfQ0KPiAgfQ0KPiANCj4gQEAgLTI0Niw2ICsyNTQsNyBAQCBib29sIENMaXRlQWdlbnQ6OlNl
cnZpY2VNYWluTG9vcCgpDQo+ICAgICAgRFdPUkQgICB3YWl0ID0gV2FpdEZvck11bHRpcGxlT2Jq
ZWN0cygzLCBldnRzLCBGQUxTRSwgSU5GSU5JVEUpOw0KPiAgICAgIHN3aXRjaCAod2FpdCkgew0K
PiAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoNCj4gKyAgICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJT
dG9wIGV2ZW50IHNldFxuIik7DQo+ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2VydmljZSBz
dG9wIGV2ZW50DQo+IA0KPiAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMCsxOg0KPiBAQCAtMjcyLDcg
KzI4MSw2IEBAIHZvaWQgQ0xpdGVBZ2VudDo6T25TaHV0ZG93bigpDQo+ICAgICAgc3RkOjpzdHJp
bmcgdHlwZTsNCj4gICAgICBtX2Rldi0+U3RvcmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgdHlw
ZSk7DQo+IA0KPiAtDQo+ICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJPblNodXRkb3duKCVzKVxuIiwg
dHlwZS5jX3N0cigpKTsNCj4gIH0NCj4gDQo+IEBAIC0yOTMsMTcgKzMwMSwxMTkgQEAgdm9pZCBD
TGl0ZUFnZW50OjpPblN1c3BlbmQoKQ0KPiAgdm9pZCBDTGl0ZUFnZW50OjpTZXRYZW5UaW1lKCkN
Cj4gIHsNCj4gICAgICBDTGl0ZUFnZW50OjpMb2coIlNldFhlblRpbWUoKVxuIik7DQo+ICsNCj4g
KyAgICBGSUxFVElNRSBub3cgPSB7IDAgfTsNCj4gKyAgICBpZiAoIW1fZGV2LT5TaGFyZWRJbmZv
R2V0VGltZSgmbm93KSkNCj4gKyAgICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgYm9vbCBJc1V0
YyA9IEhvc3RUaW1lSXNVdGMoKTsNCj4gKyAgICBpZiAoSXNVdGMpDQo+ICsgICAgICAgIEFkanVz
dFhlblRpbWVUb1V0Yygmbm93KTsNCj4gKw0KPiArICAgIFNZU1RFTVRJTUUgc3lzID0geyAwIH07
DQo+ICsgICAgaWYgKCFGaWxlVGltZVRvU3lzdGVtVGltZSgmbm93LCAmc3lzKSkNCj4gKyAgICAg
ICAgcmV0dXJuOw0KPiArDQo+ICsgICAgU1lTVEVNVElNRSBjdXIgPSB7IDAgfTsNCj4gKyAgICBH
ZXRMb2NhbFRpbWUoJmN1cik7DQo+ICsgICAgQ0xpdGVBZ2VudDo6TG9nKCJUaW1lIE5vdyA9ICVk
LyVkLyVkICVkOiUwMmQ6JTAyZC4lZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgY3VyLndZ
ZWFyLCBjdXIud01vbnRoLCBjdXIud0RheSwNCj4gKyAgICAgICAgICAgICAgICAgICAgY3VyLndI
b3VyLCBjdXIud01pbnV0ZSwgY3VyLndTZWNvbmQsIGN1ci53TWlsbGlzZWNvbmRzKTsNCj4gKyAg
ICBDTGl0ZUFnZW50OjpMb2coIk5ldyBUaW1lID0gJWQvJWQvJWQgJWQ6JTAyZDolMDJkLiVkXG4i
LA0KPiArICAgICAgICAgICAgICAgICAgICBzeXMud1llYXIsIHN5cy53TW9udGgsIHN5cy53RGF5
LA0KPiArICAgICAgICAgICAgICAgICAgICBzeXMud0hvdXIsIHN5cy53TWludXRlLCBzeXMud1Nl
Y29uZCwgc3lzLndNaWxsaXNlY29uZHMpOw0KPiArICAgIGlmIChJc1V0YykNCj4gKyAgICAgICAg
U2V0U3lzdGVtVGltZSgmc3lzKTsNCj4gKyAgICBlbHNlDQo+ICsgICAgICAgIFNldExvY2FsVGlt
ZSgmc3lzKTsNCj4gIH0NCj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6OktpY2tYYXBpKCkNCj4gIHsN
Cj4gICAgICBjaGFyIHZhbHVlWzMyXTsNCj4gLSAgICBfc25wcmludGZfcyh2YWx1ZSwgc2l6ZW9m
KHZhbHVlKSwgMzEsICIlSTY0ZCIsIG1fdXBkYXRlKTsNCj4gKyAgICBfc25wcmludGZfcyh2YWx1
ZSwgc2l6ZW9mKHZhbHVlKSwgMzEsICIlSTY0ZCIsIChfX2ludDY0KW1fdXBkYXRlKTsNCj4gICAg
ICBtX2Rldi0+U3RvcmVXcml0ZSgiZGF0YS91cGRhdGVfY250IiwgdmFsdWUpOw0KPiAgICAgIG1f
ZGV2LT5TdG9yZVdyaXRlKCJkYXRhL3VwZGF0ZWQiLCAiMSIpOw0KPiAgICAgICsrbV91cGRhdGU7
DQo+ICB9DQo+IA0KPiArYm9vbCBDTGl0ZUFnZW50OjpIb3N0VGltZUlzVXRjKCkNCj4gK3sNCj4g
KyNpZmRlZiBfV0lONjQNCj4gKyAgICBpZiAoUmVnTWF0Y2hTdHIoWEVOVE9PTFNfSU5TVEFMTF9S
RUdfS0VZNjQsICJIb3N0VGltZSIsICJVVEMiKSkNCj4gKyAgICAgICAgcmV0dXJuIHRydWU7DQo+
ICsjZW5kaWYNCj4gKyAgICBpZiAoUmVnTWF0Y2hTdHIoWEVOVE9PTFNfSU5TVEFMTF9SRUdfS0VZ
LCAiSG9zdFRpbWUiLCAiVVRDIikpDQo+ICsgICAgICAgIHJldHVybiB0cnVlOw0KPiArDQo+ICsg
ICAgcmV0dXJuIGZhbHNlOw0KPiArfQ0KPiArDQo+ICt2b2lkIENMaXRlQWdlbnQ6OkFkanVzdFhl
blRpbWVUb1V0YyhGSUxFVElNRSogbm93KQ0KPiArew0KPiArICAgIHN0ZDo6c3RyaW5nIHZtOw0K
PiArICAgIGlmICghbV9kZXYtPlN0b3JlUmVhZCgidm0iLCB2bSkpDQo+ICsgICAgICAgIHJldHVy
bjsNCj4gKw0KPiArICAgIHN0ZDo6c3RyaW5nIG9mZnM7DQo+ICsgICAgaWYgKCFtX2Rldi0+U3Rv
cmVSZWFkKHZtICsgIi9ydGMvdGltZW9mZnNldCIsIG9mZnMpKSB7DQo+ICsgICAgICAgIGlmICgh
bV9kZXYtPlN0b3JlUmVhZCgicGxhdGZvcm0vdGltZW9mZnNldCIsIG9mZnMpKQ0KPiArICAgICAg
ICAgICAgcmV0dXJuOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGxvbmcgb2Zmc2V0ID0gKGxvbmcp
YXRvaShvZmZzLmNfc3RyKCkpOw0KPiArDQo+ICsgICAgTEFSR0VfSU5URUdFUiBsb2ZmczsNCj4g
KyAgICBsb2Zmcy5RdWFkUGFydCA9IChMT05HTE9ORylvZmZzZXQgKiAxMDAwMDAwOw0KPiArDQo+
ICsgICAgVUxBUkdFX0lOVEVHRVIgbG5vdzsNCj4gKyAgICBsbm93Lkxvd1BhcnQgID0gbm93LT5k
d0xvd0RhdGVUaW1lOw0KPiArICAgIGxub3cuSGlnaFBhcnQgPSBub3ctPmR3SGlnaERhdGVUaW1l
Ow0KPiArDQo+ICsgICAgbG5vdy5RdWFkUGFydCAtPSBsb2Zmcy5RdWFkUGFydDsNCj4gKw0KPiAr
ICAgIG5vdy0+ZHdMb3dEYXRlVGltZSAgPSBsbm93Lkxvd1BhcnQ7DQo+ICsgICAgbm93LT5kd0hp
Z2hEYXRlVGltZSA9IGxub3cuSGlnaFBhcnQ7DQo+ICt9DQo+ICsNCj4gK2Jvb2wgQ0xpdGVBZ2Vu
dDo6UmVnTWF0Y2hTdHIoY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbmFtZSwgY29uc3QN
Cj4gY2hhciogdmFsdWUpDQo+ICt7DQo+ICsgICAgSEtFWSAgICAgICAga2V5Ow0KPiArICAgIExS
RVNVTFQgICAgIGxyOw0KPiArICAgIGJvb2wgICAgICAgIG1hdGNoID0gZmFsc2U7DQo+ICsNCj4g
KyAgICBsciA9IFJlZ09wZW5LZXlFeChIS0VZX0xPQ0FMX01BQ0hJTkUsIHBhdGgsIDAsIEtFWV9S
RUFELCAma2V5KTsNCj4gKyAgICBpZiAobHIgIT0gRVJST1JfU1VDQ0VTUykNCj4gKyAgICAgICAg
cmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgICAgbG9uZyAgICAgICAgc2l6ZSA9IDMyOw0KPiArICAg
IERXT1JEICAgICAgIGxlbmd0aDsNCj4gKyAgICBjaGFyKiAgICAgICBidWZmZXIgPSBOVUxMOw0K
PiArICAgIGRvIHsNCj4gKyAgICAgICAgbGVuZ3RoID0gc2l6ZTsNCj4gKyAgICAgICAgaWYgKGJ1
ZmZlcikNCj4gKyAgICAgICAgICAgIGRlbGV0ZSBbXSBidWZmZXI7DQo+ICsNCj4gKyAgICAgICAg
YnVmZmVyID0gbmV3IGNoYXJbc2l6ZV07DQo+ICsgICAgICAgIGlmIChidWZmZXIgPT0gTlVMTCkN
Cj4gKyAgICAgICAgICAgIGdvdG8gZG9uZTsNCj4gKw0KPiArICAgICAgICBsciA9IFJlZ1F1ZXJ5
VmFsdWVFeChrZXksIG5hbWUsIE5VTEwsIE5VTEwsIChMUEJZVEUpYnVmZmVyLA0KPiAmbGVuZ3Ro
KTsNCj4gKyAgICAgICAgc2l6ZSAqPSAyOw0KPiArICAgIH0gd2hpbGUgKGxyID09IEVSUk9SX01P
UkVfREFUQSk7DQo+ICsgICAgaWYgKGxyICE9IEVSUk9SX1NVQ0NFU1MpDQo+ICsgICAgICAgIGdv
dG8gZG9uZTsNCj4gKyAgICBpZiAoX3N0cm5pY29sbCh2YWx1ZSwgYnVmZmVyLCBsZW5ndGgpKQ0K
PiArICAgICAgICBnb3RvIGRvbmU7DQo+ICsgICAgbWF0Y2ggPSB0cnVlOw0KPiArDQo+ICtkb25l
Og0KPiArICAgIGlmIChidWZmZXIpDQo+ICsgICAgICAgIGRlbGV0ZSBbXSBidWZmZXI7DQo+ICsg
ICAgUmVnQ2xvc2VLZXkoa2V5KTsNCj4gKyAgICByZXR1cm4gbWF0Y2g7DQo+ICt9DQo+ICsNCj4g
IHZvaWQgQ0xpdGVBZ2VudDo6U2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdPUkQgZXhp
dCAvKj0gMCovLA0KPiBEV09SRCBoaW50IC8qPSAwKi8pDQo+ICB7DQo+ICAgICAgbV9zdGF0dXMu
ZHdDdXJyZW50U3RhdGUgPSBzdGF0ZTsNCj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmggYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IGluZGV4IDhhYjA2MmEuLjk3
YzY1MTQgMTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4gKysrIGIv
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBAQCAtNzIsNiArNzIsOSBAQCBwcml2YXRlOiAv
LyBzZXJ2aWNlIGV2ZW50cw0KPiAgICAgIHZvaWQgT25TdXNwZW5kKCk7DQo+ICAgICAgdm9pZCBT
ZXRYZW5UaW1lKCk7DQo+ICAgICAgdm9pZCBLaWNrWGFwaSgpOw0KPiArICAgIGJvb2wgSG9zdFRp
bWVJc1V0YygpOw0KPiArICAgIHZvaWQgQWRqdXN0WGVuVGltZVRvVXRjKEZJTEVUSU1FKiBub3cp
Ow0KPiArICAgIGJvb2wgUmVnTWF0Y2hTdHIoY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciog
bmFtZSwgY29uc3QgY2hhcioNCj4gdmFsdWUpOw0KPiANCj4gIHByaXZhdGU6IC8vIHNlcnZpY2Ug
c3VwcG9ydA0KPiAgICAgIHZvaWQgU2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdPUkQg
ZXhpdCA9IDAsIERXT1JEIGhpbnQgPSAwKTsNCj4gLS0NCj4gMS45LjQubXN5c2dpdC4xDQo+IA0K
PiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4g
d2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0
aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4v
bGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:30:43 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:30:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhIp-0004ju-0T; Wed, 22 Jun 2016 12:30:43 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhIn-0004jh-JE
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:30:41 +0000
Received: from [85.158.139.211] by server-13.bemta-5.messagelabs.com id
 00/3A-16475-0F48A675; Wed, 22 Jun 2016 12:30:40 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNIsWRWlGSWpSXmKPExsWyU9JRQvdDS1a
 4wZSFYhZ/Fic6MHoc/nCFJYAxijUzLym/IoE149WOm8wFTYYVnY0/WBsYNxh0MXJySAj4SfS9
 /MgGYrMJ6EgsPTqfCcQWESiQ+P5+HjOIzSygJnF9fxcriC0sUCTxYVkLG0RNscSDHdNYIWwji
 VOd21lAbBYBVYlDP1eyg9i8Au4SJ2Z8BbK5OIQEGhkl+v9eAUtwAiVeP+kBa2YUkJX40rgaap
 m4xK0nEEdICAhILNlznhnCFpV4+fgfK4RtILF16T6gZRxA9ZoS63fpQ7QqSkzpfgi1V1Di5Mw
 nYPcICahIbHl8AGoMt8TKz39YJjCKzkKybRbCpFlIJs1CMmkBI8sqRo3i1KKy1CJdI1O9pKLM
 9IyS3MTMHF1DA1O93NTi4sT01JzEpGK95PzcTYzASKlnYGDcwbir3e8QoyQHk5Ior7xyVrgQX
 1J+SmVGYnFGfFFpTmrxIUYZDg4lCd6YRqCcYFFqempFWmYOMGZh0hIcPEoivL4gad7igsTc4s
 x0iNQpRkUpcV4TkIQASCKjNA+uDZYmLjHKSgnzMjIwMAjxFKQW5WaWoMq/YhTnYFQS5k0AmcK
 TmVcCN/0V0GImoMXL+tNBFpckIqSkGhhjF2prsK7b7PJvUjbr6r3pB0I/X3rzeKLptU9pUdzM
 +mKaiXa7E2rt3wqumXhjjewybbdVm49skdiaP0Et+C6PivSnL3cin3Bza/g0Fyne9brqHef1f
 Wfg671K/JNnuq1JsZ15THzbC/eA6dwrN3gd+fre5/rHmdrXS4v1M8NSEq7MWj2j0pJdiaU4I9
 FQi7moOBEA/UvKkg4DAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-10.tower-206.messagelabs.com!1466598640!28950408!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 58166 invoked from network); 22 Jun 2016 12:30:40 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-10.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:30:40 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785624"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 11/20] Add Setup/teardown of active device
 and logging to OnSuspend/OnShutdown
Thread-Index: AQHRtctKYszwIzwD3kG0ATqgCIypVJ/1ln7w
Date: Wed, 22 Jun 2016 12:25:10 +0000
Message-ID: <3e7c61e2a5844d9d809c63dc9daa18f3@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-12-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-12-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 11/20] Add Setup/teardown of active
	device	and logging to OnSuspend/OnShutdown
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTEvMjBdIEFkZCBTZXR1cC90ZWFyZG93biBvZiBhY3RpdmUg
ZGV2aWNlDQo+IGFuZCBsb2dnaW5nIHRvIE9uU3VzcGVuZC9PblNodXRkb3duDQo+IA0KPiBTaWdu
ZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IC0tLQ0KPiAg
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwIHwgNTENCj4gKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKystDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oICAg
fCAgNSArKysrKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0
aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwIGIv
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IGluZGV4IGE4ODc5MjUuLmJiMTdlOTEgMTAw
NjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysgYi9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gQEAgLTE0OSw3ICsxNDksOSBAQCBzdGF0aWMgQ0xpdGVB
Z2VudCBzX3NlcnZpY2U7DQo+ICAgICAgcmV0dXJuIHNfc2VydmljZS5fX1NlcnZpY2VDb250cm9s
SGFuZGxlckV4KHJlcSwgZXZ0LCBkYXRhLCBjdHh0KTsNCj4gIH0NCj4gDQo+IC1DTGl0ZUFnZW50
OjpDTGl0ZUFnZW50KCkgOiBtX2hhbmRsZShOVUxMKSwNCj4gbV9kZXZzKEdVSURfSU5URVJGQUNF
X1hFTklGQUNFKSwgbV9kZXYoTlVMTCkNCj4gK0NMaXRlQWdlbnQ6OkNMaXRlQWdlbnQoKSA6DQo+
ICsgICAgbV9oYW5kbGUoTlVMTCksIG1fZGV2cyhHVUlEX0lOVEVSRkFDRV9YRU5JRkFDRSksIG1f
ZGV2KE5VTEwpLA0KPiArICAgIG1fY3R4dF9zaHV0ZG93bihOVUxMKSwgbV9jdHh0X3N1c3BlbmQo
TlVMTCksIG1fdXBkYXRlKDApDQo+ICB7DQo+ICAgICAgbV9zdGF0dXMuZHdTZXJ2aWNlVHlwZSAg
ICAgICAgPSBTRVJWSUNFX1dJTjMyOw0KPiAgICAgIG1fc3RhdHVzLmR3Q3VycmVudFN0YXRlICAg
ICAgID0gU0VSVklDRV9TVEFSVF9QRU5ESU5HOw0KPiBAQCAtMTg0LDYgKzE4NiwxOCBAQCBDTGl0
ZUFnZW50Ojp+Q0xpdGVBZ2VudCgpDQo+ICAgICAgICAgIG1fZGV2ID0gKENYZW5JZmFjZUl0Ziop
ZGV2Ow0KPiAgICAgICAgICAvLyBzZXR0aW5nIGFjdGl2ZSBkZXZpY2UNCj4gICAgICAgICAgQ0xp
dGVBZ2VudDo6TG9nKCJTdGFydGluZyBBY3RpdmUgRGV2aWNlXG4iKTsNCj4gKw0KPiArICAgICAg
ICAvLyByZWdpc3RlciB3YXRjaA0KPiArICAgICAgICBtX2Rldi0+U3RvcmVBZGRXYXRjaCgiY29u
dHJvbC9zaHV0ZG93biIsIG1fc2h1dGRvd24sDQo+ICZtX2N0eHRfc2h1dGRvd24pOw0KPiArICAg
ICAgICAvLyByZWdpc3RlciBzdXNwZW5kIGV2ZW50DQo+ICsgICAgICAgIG1fZGV2LT5TdXNwZW5k
UmVnaXN0ZXIobV9zdXNwZW5kLCAmbV9jdHh0X3N1c3BlbmQpOw0KPiArDQo+ICsgICAgICAgIC8v
IGFkdmVydGlzZQ0KPiArICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9mZWF0dXJl
LXNodXRkb3duIiwgIjEiKTsNCj4gKyAgICAgICAgLy8gc2V0IHhlbiB0aW1lDQo+ICsgICAgICAg
IFNldFhlblRpbWUoKTsNCj4gKyAgICAgICAgLy8ga2ljayB4YXBpDQo+ICsgICAgICAgIEtpY2tY
YXBpKCk7DQo+ICAgICAgfQ0KPiAgfQ0KPiANCj4gQEAgLTE5NCw2ICsyMDgsMTggQEAgQ0xpdGVB
Z2VudDo6fkNMaXRlQWdlbnQoKQ0KPiAgICAgICAgICBtX2RldiA9IE5VTEw7DQo+ICAgICAgICAg
IC8vIGFjdGl2ZSBkZXZpY2UgcmVtb3ZlZA0KPiAgICAgICAgICBDTGl0ZUFnZW50OjpMb2coIkFj
dGl2ZSBEZXZpY2UgUmVtb3ZlZFxuIik7DQo+ICsNCj4gKyAgICAgICAgLy8gdW5hZHZlcnRpc2UN
Cj4gKyAgICAgICAgbV9kZXYtPlN0b3JlUmVtb3ZlKCJjb250cm9sL2ZlYXR1cmUtc2h1dGRvd24i
KTsNCj4gKyAgICAgICAgLy8ga2ljayB4YXBpDQo+ICsgICAgICAgIEtpY2tYYXBpKCk7DQo+ICsN
Cj4gKyAgICAgICAgLy8gdW5yZWdpc3RlciBzdXNwZW5kIGV2ZW50DQo+ICsgICAgICAgIG1fZGV2
LT5TdXNwZW5kRGVyZWdpc3RlcihtX2N0eHRfc3VzcGVuZCk7DQo+ICsgICAgICAgIG1fY3R4dF9z
dXNwZW5kID0gTlVMTDsNCj4gKyAgICAgICAgLy8gdW5yZWdpc3RlciB3YXRjaA0KPiArICAgICAg
ICBtX2Rldi0+U3RvcmVSZW1vdmVXYXRjaChtX2N0eHRfc2h1dGRvd24pOw0KPiArICAgICAgICBt
X2N0eHRfc2h1dGRvd24gPSBOVUxMOw0KPiAgICAgIH0NCj4gIH0NCj4gDQo+IEBAIC0yNDEsNiAr
MjY3LDggQEAgdm9pZCBDTGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4gICAgICBpZiAobV9kZXYg
PT0gTlVMTCkNCj4gICAgICAgICAgcmV0dXJuOw0KPiAgICAgIENMaXRlQWdlbnQ6OkxvZygiT25T
aHV0ZG93bigld3MpXG4iLCBtX2Rldi0+UGF0aCgpKTsNCj4gKw0KPiArICAgIC8vIGNoZWNrIHNo
dXRkb3duIHR5cGUgYW5kIGVuYWN0IHNodXRkb3duDQo+ICB9DQo+IA0KPiAgdm9pZCBDTGl0ZUFn
ZW50OjpPblN1c3BlbmQoKQ0KPiBAQCAtMjQ4LDYgKzI3NiwyNyBAQCB2b2lkIENMaXRlQWdlbnQ6
Ok9uU3VzcGVuZCgpDQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpDQo+ICAgICAgICAgIHJldHVy
bjsNCj4gICAgICBDTGl0ZUFnZW50OjpMb2coIk9uU3VzcGVuZCgld3MpXG4iLCBtX2Rldi0+UGF0
aCgpKTsNCj4gKw0KPiArICAgIC8vIGFkdmVydGlzZQ0KPiArICAgIG1fZGV2LT5TdG9yZVdyaXRl
KCJjb250cm9sL2ZlYXR1cmUtc2h1dGRvd24iLCAiMSIpOw0KPiArICAgIC8vIHNldCB4ZW4gdGlt
ZQ0KPiArICAgIFNldFhlblRpbWUoKTsNCj4gKyAgICAvLyBraWNrIHhhcGkNCj4gKyAgICBLaWNr
WGFwaSgpOw0KPiArfQ0KPiArDQo+ICt2b2lkIENMaXRlQWdlbnQ6OlNldFhlblRpbWUoKQ0KPiAr
ew0KPiArICAgIENMaXRlQWdlbnQ6OkxvZygiU2V0WGVuVGltZSgpXG4iKTsNCj4gK30NCj4gKw0K
PiArdm9pZCBDTGl0ZUFnZW50OjpLaWNrWGFwaSgpDQo+ICt7DQo+ICsgICAgY2hhciB2YWx1ZVsz
Ml07DQo+ICsgICAgX3NucHJpbnRmX3ModmFsdWUsIHNpemVvZih2YWx1ZSksIDMxLCAiJUk2NGQi
LCBtX3VwZGF0ZSk7DQo+ICsgICAgbV9kZXYtPlN0b3JlV3JpdGUoImRhdGEvdXBkYXRlX2NudCIs
IHZhbHVlKTsNCj4gKyAgICBtX2Rldi0+U3RvcmVXcml0ZSgiZGF0YS91cGRhdGVkIiwgIjEiKTsN
Cj4gKyAgICArK21fdXBkYXRlOw0KPiAgfQ0KDQpQbGVhc2UgZG9uJ3QgaW5jbHVkZSBhbnl0aGlu
ZyBzcGVjaWZpYyB0byB0aGUgWGVuU2VydmVyIHRvb2xzdGFjayBoZXJlLiBIYXMgdGhpcyBjb2Rl
IGJlZW4gdGVzdGVkIGluIGEgbm9uIFhlblNlcnZlciBlbnZpcm9ubWVudD8NCg0KICBQYXVsDQoN
Cj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6OlNldFNlcnZpY2VTdGF0dXMoRFdPUkQgc3RhdGUsIERX
T1JEIGV4aXQgLyo9IDAqLywNCj4gRFdPUkQgaGludCAvKj0gMCovKQ0KPiBkaWZmIC0tZ2l0IGEv
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4g
aW5kZXggYjE5ZDhlMi4uYTk1YzM5NCAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRl
QWdlbnQuaA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IEBAIC03MCw2ICs3
MCw4IEBAIHByaXZhdGU6IC8vIHNlcnZpY2UgZXZlbnRzDQo+IA0KPiAgICAgIHZvaWQgT25TaHV0
ZG93bigpOw0KPiAgICAgIHZvaWQgT25TdXNwZW5kKCk7DQo+ICsgICAgdm9pZCBTZXRYZW5UaW1l
KCk7DQo+ICsgICAgdm9pZCBLaWNrWGFwaSgpOw0KPiANCj4gIHByaXZhdGU6IC8vIHNlcnZpY2Ug
c3VwcG9ydA0KPiAgICAgIHZvaWQgU2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdPUkQg
ZXhpdCA9IDAsIERXT1JEIGhpbnQgPSAwKTsNCj4gQEAgLTg0LDYgKzg2LDkgQEAgcHJpdmF0ZTog
Ly8gc2VydmljZSBzdXBwb3J0DQo+IA0KPiAgICAgIENEZXZpY2VMaXN0ICAgICAgICAgICAgIG1f
ZGV2czsNCj4gICAgICBDWGVuSWZhY2VJdGYqICAgICAgICAgICBtX2RldjsNCj4gKyAgICB2b2lk
KiAgICAgICAgICAgICAgICAgICBtX2N0eHRfc2h1dGRvd247DQo+ICsgICAgdm9pZCogICAgICAg
ICAgICAgICAgICAgbV9jdHh0X3N1c3BlbmQ7DQo+ICsgICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgbV91cGRhdGU7DQo+ICB9Ow0KPiANCj4gICNlbmRpZg0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0
LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWls
bWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4v
bWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:30:43 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:30:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhIp-0004ju-0T; Wed, 22 Jun 2016 12:30:43 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhIn-0004jh-JE
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:30:41 +0000
Received: from [85.158.139.211] by server-13.bemta-5.messagelabs.com id
 00/3A-16475-0F48A675; Wed, 22 Jun 2016 12:30:40 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrNIsWRWlGSWpSXmKPExsWyU9JRQvdDS1a
 4wZSFYhZ/Fic6MHoc/nCFJYAxijUzLym/IoE149WOm8wFTYYVnY0/WBsYNxh0MXJySAj4SfS9
 /MgGYrMJ6EgsPTqfCcQWESiQ+P5+HjOIzSygJnF9fxcriC0sUCTxYVkLG0RNscSDHdNYIWwji
 VOd21lAbBYBVYlDP1eyg9i8Au4SJ2Z8BbK5OIQEGhkl+v9eAUtwAiVeP+kBa2YUkJX40rgaap
 m4xK0nEEdICAhILNlznhnCFpV4+fgfK4RtILF16T6gZRxA9ZoS63fpQ7QqSkzpfgi1V1Di5Mw
 nYPcICahIbHl8AGoMt8TKz39YJjCKzkKybRbCpFlIJs1CMmkBI8sqRo3i1KKy1CJdI1O9pKLM
 9IyS3MTMHF1DA1O93NTi4sT01JzEpGK95PzcTYzASKlnYGDcwbir3e8QoyQHk5Ior7xyVrgQX
 1J+SmVGYnFGfFFpTmrxIUYZDg4lCd6YRqCcYFFqempFWmYOMGZh0hIcPEoivL4gad7igsTc4s
 x0iNQpRkUpcV4TkIQASCKjNA+uDZYmLjHKSgnzMjIwMAjxFKQW5WaWoMq/YhTnYFQS5k0AmcK
 TmVcCN/0V0GImoMXL+tNBFpckIqSkGhhjF2prsK7b7PJvUjbr6r3pB0I/X3rzeKLptU9pUdzM
 +mKaiXa7E2rt3wqumXhjjewybbdVm49skdiaP0Et+C6PivSnL3cin3Bza/g0Fyne9brqHef1f
 Wfg671K/JNnuq1JsZ15THzbC/eA6dwrN3gd+fre5/rHmdrXS4v1M8NSEq7MWj2j0pJdiaU4I9
 FQi7moOBEA/UvKkg4DAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-10.tower-206.messagelabs.com!1466598640!28950408!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 58166 invoked from network); 22 Jun 2016 12:30:40 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-10.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:30:40 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24785624"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 11/20] Add Setup/teardown of active device
 and logging to OnSuspend/OnShutdown
Thread-Index: AQHRtctKYszwIzwD3kG0ATqgCIypVJ/1ln7w
Date: Wed, 22 Jun 2016 12:25:10 +0000
Message-ID: <3e7c61e2a5844d9d809c63dc9daa18f3@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-12-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-12-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 11/20] Add Setup/teardown of active
	device	and logging to OnSuspend/OnShutdown
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTEvMjBdIEFkZCBTZXR1cC90ZWFyZG93biBvZiBhY3RpdmUg
ZGV2aWNlDQo+IGFuZCBsb2dnaW5nIHRvIE9uU3VzcGVuZC9PblNodXRkb3duDQo+IA0KPiBTaWdu
ZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IC0tLQ0KPiAg
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwIHwgNTENCj4gKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKystDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oICAg
fCAgNSArKysrKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0
aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwIGIv
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IGluZGV4IGE4ODc5MjUuLmJiMTdlOTEgMTAw
NjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysgYi9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gQEAgLTE0OSw3ICsxNDksOSBAQCBzdGF0aWMgQ0xpdGVB
Z2VudCBzX3NlcnZpY2U7DQo+ICAgICAgcmV0dXJuIHNfc2VydmljZS5fX1NlcnZpY2VDb250cm9s
SGFuZGxlckV4KHJlcSwgZXZ0LCBkYXRhLCBjdHh0KTsNCj4gIH0NCj4gDQo+IC1DTGl0ZUFnZW50
OjpDTGl0ZUFnZW50KCkgOiBtX2hhbmRsZShOVUxMKSwNCj4gbV9kZXZzKEdVSURfSU5URVJGQUNF
X1hFTklGQUNFKSwgbV9kZXYoTlVMTCkNCj4gK0NMaXRlQWdlbnQ6OkNMaXRlQWdlbnQoKSA6DQo+
ICsgICAgbV9oYW5kbGUoTlVMTCksIG1fZGV2cyhHVUlEX0lOVEVSRkFDRV9YRU5JRkFDRSksIG1f
ZGV2KE5VTEwpLA0KPiArICAgIG1fY3R4dF9zaHV0ZG93bihOVUxMKSwgbV9jdHh0X3N1c3BlbmQo
TlVMTCksIG1fdXBkYXRlKDApDQo+ICB7DQo+ICAgICAgbV9zdGF0dXMuZHdTZXJ2aWNlVHlwZSAg
ICAgICAgPSBTRVJWSUNFX1dJTjMyOw0KPiAgICAgIG1fc3RhdHVzLmR3Q3VycmVudFN0YXRlICAg
ICAgID0gU0VSVklDRV9TVEFSVF9QRU5ESU5HOw0KPiBAQCAtMTg0LDYgKzE4NiwxOCBAQCBDTGl0
ZUFnZW50Ojp+Q0xpdGVBZ2VudCgpDQo+ICAgICAgICAgIG1fZGV2ID0gKENYZW5JZmFjZUl0Ziop
ZGV2Ow0KPiAgICAgICAgICAvLyBzZXR0aW5nIGFjdGl2ZSBkZXZpY2UNCj4gICAgICAgICAgQ0xp
dGVBZ2VudDo6TG9nKCJTdGFydGluZyBBY3RpdmUgRGV2aWNlXG4iKTsNCj4gKw0KPiArICAgICAg
ICAvLyByZWdpc3RlciB3YXRjaA0KPiArICAgICAgICBtX2Rldi0+U3RvcmVBZGRXYXRjaCgiY29u
dHJvbC9zaHV0ZG93biIsIG1fc2h1dGRvd24sDQo+ICZtX2N0eHRfc2h1dGRvd24pOw0KPiArICAg
ICAgICAvLyByZWdpc3RlciBzdXNwZW5kIGV2ZW50DQo+ICsgICAgICAgIG1fZGV2LT5TdXNwZW5k
UmVnaXN0ZXIobV9zdXNwZW5kLCAmbV9jdHh0X3N1c3BlbmQpOw0KPiArDQo+ICsgICAgICAgIC8v
IGFkdmVydGlzZQ0KPiArICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9mZWF0dXJl
LXNodXRkb3duIiwgIjEiKTsNCj4gKyAgICAgICAgLy8gc2V0IHhlbiB0aW1lDQo+ICsgICAgICAg
IFNldFhlblRpbWUoKTsNCj4gKyAgICAgICAgLy8ga2ljayB4YXBpDQo+ICsgICAgICAgIEtpY2tY
YXBpKCk7DQo+ICAgICAgfQ0KPiAgfQ0KPiANCj4gQEAgLTE5NCw2ICsyMDgsMTggQEAgQ0xpdGVB
Z2VudDo6fkNMaXRlQWdlbnQoKQ0KPiAgICAgICAgICBtX2RldiA9IE5VTEw7DQo+ICAgICAgICAg
IC8vIGFjdGl2ZSBkZXZpY2UgcmVtb3ZlZA0KPiAgICAgICAgICBDTGl0ZUFnZW50OjpMb2coIkFj
dGl2ZSBEZXZpY2UgUmVtb3ZlZFxuIik7DQo+ICsNCj4gKyAgICAgICAgLy8gdW5hZHZlcnRpc2UN
Cj4gKyAgICAgICAgbV9kZXYtPlN0b3JlUmVtb3ZlKCJjb250cm9sL2ZlYXR1cmUtc2h1dGRvd24i
KTsNCj4gKyAgICAgICAgLy8ga2ljayB4YXBpDQo+ICsgICAgICAgIEtpY2tYYXBpKCk7DQo+ICsN
Cj4gKyAgICAgICAgLy8gdW5yZWdpc3RlciBzdXNwZW5kIGV2ZW50DQo+ICsgICAgICAgIG1fZGV2
LT5TdXNwZW5kRGVyZWdpc3RlcihtX2N0eHRfc3VzcGVuZCk7DQo+ICsgICAgICAgIG1fY3R4dF9z
dXNwZW5kID0gTlVMTDsNCj4gKyAgICAgICAgLy8gdW5yZWdpc3RlciB3YXRjaA0KPiArICAgICAg
ICBtX2Rldi0+U3RvcmVSZW1vdmVXYXRjaChtX2N0eHRfc2h1dGRvd24pOw0KPiArICAgICAgICBt
X2N0eHRfc2h1dGRvd24gPSBOVUxMOw0KPiAgICAgIH0NCj4gIH0NCj4gDQo+IEBAIC0yNDEsNiAr
MjY3LDggQEAgdm9pZCBDTGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4gICAgICBpZiAobV9kZXYg
PT0gTlVMTCkNCj4gICAgICAgICAgcmV0dXJuOw0KPiAgICAgIENMaXRlQWdlbnQ6OkxvZygiT25T
aHV0ZG93bigld3MpXG4iLCBtX2Rldi0+UGF0aCgpKTsNCj4gKw0KPiArICAgIC8vIGNoZWNrIHNo
dXRkb3duIHR5cGUgYW5kIGVuYWN0IHNodXRkb3duDQo+ICB9DQo+IA0KPiAgdm9pZCBDTGl0ZUFn
ZW50OjpPblN1c3BlbmQoKQ0KPiBAQCAtMjQ4LDYgKzI3NiwyNyBAQCB2b2lkIENMaXRlQWdlbnQ6
Ok9uU3VzcGVuZCgpDQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpDQo+ICAgICAgICAgIHJldHVy
bjsNCj4gICAgICBDTGl0ZUFnZW50OjpMb2coIk9uU3VzcGVuZCgld3MpXG4iLCBtX2Rldi0+UGF0
aCgpKTsNCj4gKw0KPiArICAgIC8vIGFkdmVydGlzZQ0KPiArICAgIG1fZGV2LT5TdG9yZVdyaXRl
KCJjb250cm9sL2ZlYXR1cmUtc2h1dGRvd24iLCAiMSIpOw0KPiArICAgIC8vIHNldCB4ZW4gdGlt
ZQ0KPiArICAgIFNldFhlblRpbWUoKTsNCj4gKyAgICAvLyBraWNrIHhhcGkNCj4gKyAgICBLaWNr
WGFwaSgpOw0KPiArfQ0KPiArDQo+ICt2b2lkIENMaXRlQWdlbnQ6OlNldFhlblRpbWUoKQ0KPiAr
ew0KPiArICAgIENMaXRlQWdlbnQ6OkxvZygiU2V0WGVuVGltZSgpXG4iKTsNCj4gK30NCj4gKw0K
PiArdm9pZCBDTGl0ZUFnZW50OjpLaWNrWGFwaSgpDQo+ICt7DQo+ICsgICAgY2hhciB2YWx1ZVsz
Ml07DQo+ICsgICAgX3NucHJpbnRmX3ModmFsdWUsIHNpemVvZih2YWx1ZSksIDMxLCAiJUk2NGQi
LCBtX3VwZGF0ZSk7DQo+ICsgICAgbV9kZXYtPlN0b3JlV3JpdGUoImRhdGEvdXBkYXRlX2NudCIs
IHZhbHVlKTsNCj4gKyAgICBtX2Rldi0+U3RvcmVXcml0ZSgiZGF0YS91cGRhdGVkIiwgIjEiKTsN
Cj4gKyAgICArK21fdXBkYXRlOw0KPiAgfQ0KDQpQbGVhc2UgZG9uJ3QgaW5jbHVkZSBhbnl0aGlu
ZyBzcGVjaWZpYyB0byB0aGUgWGVuU2VydmVyIHRvb2xzdGFjayBoZXJlLiBIYXMgdGhpcyBjb2Rl
IGJlZW4gdGVzdGVkIGluIGEgbm9uIFhlblNlcnZlciBlbnZpcm9ubWVudD8NCg0KICBQYXVsDQoN
Cj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6OlNldFNlcnZpY2VTdGF0dXMoRFdPUkQgc3RhdGUsIERX
T1JEIGV4aXQgLyo9IDAqLywNCj4gRFdPUkQgaGludCAvKj0gMCovKQ0KPiBkaWZmIC0tZ2l0IGEv
c3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaCBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4g
aW5kZXggYjE5ZDhlMi4uYTk1YzM5NCAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRl
QWdlbnQuaA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IEBAIC03MCw2ICs3
MCw4IEBAIHByaXZhdGU6IC8vIHNlcnZpY2UgZXZlbnRzDQo+IA0KPiAgICAgIHZvaWQgT25TaHV0
ZG93bigpOw0KPiAgICAgIHZvaWQgT25TdXNwZW5kKCk7DQo+ICsgICAgdm9pZCBTZXRYZW5UaW1l
KCk7DQo+ICsgICAgdm9pZCBLaWNrWGFwaSgpOw0KPiANCj4gIHByaXZhdGU6IC8vIHNlcnZpY2Ug
c3VwcG9ydA0KPiAgICAgIHZvaWQgU2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdPUkQg
ZXhpdCA9IDAsIERXT1JEIGhpbnQgPSAwKTsNCj4gQEAgLTg0LDYgKzg2LDkgQEAgcHJpdmF0ZTog
Ly8gc2VydmljZSBzdXBwb3J0DQo+IA0KPiAgICAgIENEZXZpY2VMaXN0ICAgICAgICAgICAgIG1f
ZGV2czsNCj4gICAgICBDWGVuSWZhY2VJdGYqICAgICAgICAgICBtX2RldjsNCj4gKyAgICB2b2lk
KiAgICAgICAgICAgICAgICAgICBtX2N0eHRfc2h1dGRvd247DQo+ICsgICAgdm9pZCogICAgICAg
ICAgICAgICAgICAgbV9jdHh0X3N1c3BlbmQ7DQo+ICsgICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgbV91cGRhdGU7DQo+ICB9Ow0KPiANCj4gICNlbmRpZg0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0
LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWls
bWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4v
bWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:32:45 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:32:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhKn-0004rt-Do; Wed, 22 Jun 2016 12:32:45 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhKm-0004rn-DJ
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:32:44 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
 26/3D-30629-B658A675; Wed, 22 Jun 2016 12:32:43 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRWlGSWpSXmKPExsWyU9JRQjerNSv
 c4NwvG4s/ixMdGD0Of7jCEsAYxZqZl5RfkcCa0fL+O0vBNJ2K/jnTWRoYz2h3MXJySAj4Sfyb
 P5cJxGYT0JFYenQ+mC0iUCDx/f08ZhCbWUBN4vr+LlYQW1ggTOLansNsXYwcQDXhEheagiHKj
 STm/WthAbFZBFQlGtctZwSxeQXcJaZPvQFUzsUhJNDIKDFjZTvYHE6gxJbNP8F2MQrISnxpXA
 21S1zi1hOIGyQEBCSW7DnPDGGLSrx8/I8VwjaQ2Lp0HwvIDcwCmhLrd+lDtCpKTOl+yA6xV1D
 i5MwnYPcICahIbHl8AGoMt8TKz39YJjCKzkKybRbCpFlIJs1CMmkBI8sqRvXi1KKy1CJdQ72k
 osz0jJLcxMwcXUNDE73c1OLixPTUnMSkYr3k/NxNjMAoYQCCHYxHO50PMUpyMCmJ8sorZ4UL8
 SXlp1RmJBZnxBeV5qQWH2KU4eBQkuCNaQTKCRalpqdWpGXmAOMVJi3BwaMkwusLkuYtLkjMLc
 5Mh0idYlSUEuc1AUkIgCQySvPg2mAp4hKjrJQwLyPQIUI8BalFuZklqPKvGMU5GJWEeRNApvB
 k5pXATX8FtJgJaPGy/nSQxSWJCCmpBsbbqrIyu6PPa3pmyHy9YStlt9iKf3GWyN6IY9U3ZnWr
 NOZpSHZ6f8golTrY6XN+XdLd/YUbrl+dsr/zG1ejYo/8m//LzMUz7m/g8Mq8//2Yom3Yz1MqG
 x6fl5rx4XDN9dx93fM9Wm031Su9c7+aItenvEmqbHfI9zVuIdZdixI2dv1YO6f8T7USS3FGoq
 EWc1FxIgAlEvyLDAMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1466598762!49203341!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 45085 invoked from network); 22 Jun 2016 12:32:42 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:32:42 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786149"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 14/20] Protect active device with critical
 section
Thread-Index: AQHRtcsmoDn+FvZ62EarjHCQmm3CiZ/1mGrQ
Date: Wed, 22 Jun 2016 12:32:07 +0000
Message-ID: <0bdaceb746e84cacab9332b21648b71b@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-15-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-15-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 14/20] Protect active device with
	critical	section
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTQvMjBdIFByb3RlY3QgYWN0aXZlIGRldmljZSB3aXRoIGNy
aXRpY2FsDQo+IHNlY3Rpb24NCj4gDQo+IFRoaXMgc2hvdWxkIHByZXZlbnQgcmFjZSBjb25kaXRp
b25zIGR1ZSB0byBkZXZpY2UgcmVtb3ZhbCB3aGlsZQ0KPiBjdXJyZW50bHkgYXR0ZW1wdGluZyBv
cGVyYXRpb25zLiBXaWxsIGVuc3VyZSB0aGUgbV9kZXYgcG9pbnRlcg0KPiBpcyBub3QgcmVtb3Zl
ZCBkdXJpbmcgYSBPblN1c3BlbmQgb3IgT25TaHV0ZG93biBvcGVyYXRpb24NCj4NCg0KUG9zc2li
bHkgYSBjYW5kaWRhdGUgZm9yIGZvbGRpbmcsIGJ1dCBsZWF2aW5nIGl0IGJyb2tlbiBvdXQgaXMg
aWxsdXN0cmF0aXZlIHNvLi4uDQoNCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5z
bWl0aEBjaXRyaXguY29tPg0KDQpBY2tlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRA
Y2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcCB8IDMy
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVB
Z2VudC5oICAgfCAgMSArDQo+ICAyIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEg
ZGVsZXRpb24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5j
cHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gaW5kZXggYjYxOTY3Zi4uZGI2YzNi
OSAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+ICsrKyBiL3Ny
Yy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAtNDIsNiArNDIsMjQgQEANCj4gICNkZWZp
bmUgWEVOVE9PTFNfSU5TVEFMTF9SRUdfS0VZNjQNCj4gIlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxc
Q2l0cml4XFxYZW5Ub29scyINCj4gICNlbmRpZg0KPiANCj4gK2NsYXNzIENDcml0U2VjDQo+ICt7
DQo+ICtwdWJsaWM6DQo+ICsgICAgQ0NyaXRTZWMoTFBDUklUSUNBTF9TRUNUSU9OIGNyaXQpOw0K
PiArICAgIH5DQ3JpdFNlYygpOw0KPiArcHJpdmF0ZToNCj4gKyAgICBMUENSSVRJQ0FMX1NFQ1RJ
T04gbV9jcml0Ow0KPiArfTsNCj4gKw0KPiArQ0NyaXRTZWM6OkNDcml0U2VjKExQQ1JJVElDQUxf
U0VDVElPTiBjcml0KSA6IG1fY3JpdChjcml0KQ0KPiArew0KPiArICAgIEVudGVyQ3JpdGljYWxT
ZWN0aW9uKG1fY3JpdCk7DQo+ICt9DQo+ICtDQ3JpdFNlYzo6fkNDcml0U2VjKCkNCj4gK3sNCj4g
KyAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbihtX2NyaXQpOw0KPiArfQ0KPiArDQo+ICBpbnQgX19z
dGRjYWxsIFdpbk1haW4oSElOU1RBTkNFIGhJbnN0YW5jZSwgSElOU1RBTkNFIGlnbm9yZSwgTFBT
VFINCj4gbHBDbWRMaW5lLCBpbnQgbkNtZFNob3cpDQo+ICB7DQo+ICAgICAgaWYgKHN0cmxlbihs
cENtZExpbmUpICE9IDApIHsNCj4gQEAgLTE2OSw3ICsxODcsOSBAQCBDTGl0ZUFnZW50OjpDTGl0
ZUFnZW50KCkgOg0KPiANCj4gICAgICBtX3N2Y19zdG9wID0gQ3JlYXRlRXZlbnQoRkFMU0UsIE5V
TEwsIE5VTEwsIEZBTFNFKTsNCj4gICAgICBtX3NodXRkb3duID0gQ3JlYXRlRXZlbnQoRkFMU0Us
IE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gLSAgICBtX3N1c3BlbmQgID0gQ3JlYXRlRXZlbnQoRkFM
U0UsIE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gKyAgICBtX3N1c3BlbmQgID0gQ3JlYXRlRXZlbnQo
RkFMU0UsIE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gKw0KPiArICAgIEluaXRpYWxpemVDcml0aWNh
bFNlY3Rpb24oJm1fY3JpdCk7DQo+ICB9DQo+IA0KPiAgQ0xpdGVBZ2VudDo6fkNMaXRlQWdlbnQo
KQ0KPiBAQCAtMTc3LDYgKzE5Nyw4IEBAIENMaXRlQWdlbnQ6On5DTGl0ZUFnZW50KCkNCj4gICAg
ICBDbG9zZUhhbmRsZShtX3N2Y19zdG9wKTsNCj4gICAgICBDbG9zZUhhbmRsZShtX3NodXRkb3du
KTsNCj4gICAgICBDbG9zZUhhbmRsZShtX3N1c3BlbmQpOw0KPiArDQo+ICsgICAgRGVsZXRlQ3Jp
dGljYWxTZWN0aW9uKCZtX2NyaXQpOw0KPiAgfQ0KPiANCj4gIC8qdmlydHVhbCovIENEZXZpY2Uq
IENMaXRlQWdlbnQ6OkNyZWF0ZShjb25zdCB3Y2hhcl90KiBwYXRoKQ0KPiBAQCAtMTg4LDYgKzIx
MCw4IEBAIENMaXRlQWdlbnQ6On5DTGl0ZUFnZW50KCkNCj4gIC8qdmlydHVhbCovIHZvaWQgQ0xp
dGVBZ2VudDo6T25EZXZpY2VBZGRlZChDRGV2aWNlKiBkZXYpDQo+ICB7DQo+ICAgICAgQ0xpdGVB
Z2VudDo6TG9nKCJPbkRldmljZUFkZGVkKCV3cylcbiIsIGRldi0+UGF0aCgpKTsNCj4gKw0KPiAr
ICAgIENDcml0U2VjIGNyaXQoJm1fY3JpdCk7DQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpIHsN
Cj4gICAgICAgICAgbV9kZXYgPSAoQ1hlbklmYWNlSXRmKilkZXY7DQo+ICAgICAgICAgIC8vIHNl
dHRpbmcgYWN0aXZlIGRldmljZQ0KPiBAQCAtMjEwLDYgKzIzNCw4IEBAIENMaXRlQWdlbnQ6On5D
TGl0ZUFnZW50KCkNCj4gIC8qdmlydHVhbCovIHZvaWQgQ0xpdGVBZ2VudDo6T25EZXZpY2VSZW1v
dmVkKENEZXZpY2UqIGRldikNCj4gIHsNCj4gICAgICBDTGl0ZUFnZW50OjpMb2coIk9uRGV2aWNl
UmVtb3ZlZCgld3MpXG4iLCBkZXYtPlBhdGgoKSk7DQo+ICsNCj4gKyAgICBDQ3JpdFNlYyBjcml0
KCZtX2NyaXQpOw0KPiAgICAgIGlmICgoQ1hlbklmYWNlSXRmKilkZXYgPT0gbV9kZXYpIHsNCj4g
ICAgICAgICAgLy8gYWN0aXZlIGRldmljZSByZW1vdmVkDQo+ICAgICAgICAgIENMaXRlQWdlbnQ6
OkxvZygiQWN0aXZlIERldmljZSBSZW1vdmVkXG4iKTsNCj4gQEAgLTI3Myw2ICsyOTksOCBAQCBi
b29sIENMaXRlQWdlbnQ6OlNlcnZpY2VNYWluTG9vcCgpDQo+IA0KPiAgdm9pZCBDTGl0ZUFnZW50
OjpPblNodXRkb3duKCkNCj4gIHsNCj4gKyAgICBDQ3JpdFNlYyBjcml0KCZtX2NyaXQpOw0KPiAr
DQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpDQo+ICAgICAgICAgIHJldHVybjsNCj4gICAgICBD
TGl0ZUFnZW50OjpMb2coIk9uU2h1dGRvd24oJXdzKVxuIiwgbV9kZXYtPlBhdGgoKSk7DQo+IEBA
IC0yODYsNiArMzE0LDggQEAgdm9pZCBDTGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4gDQo+ICB2
b2lkIENMaXRlQWdlbnQ6Ok9uU3VzcGVuZCgpDQo+ICB7DQo+ICsgICAgQ0NyaXRTZWMgY3JpdCgm
bV9jcml0KTsNCj4gKw0KPiAgICAgIGlmIChtX2RldiA9PSBOVUxMKQ0KPiAgICAgICAgICByZXR1
cm47DQo+ICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJPblN1c3BlbmQoJXdzKVxuIiwgbV9kZXYtPlBh
dGgoKSk7DQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oIGIvc3JjL2xp
dGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBpbmRleCA5N2M2NTE0Li5lM2EyNTczIDEwMDY0NA0KPiAt
LS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmgNCj4gQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0ZTogLy8gc2VydmljZSBzdXBwb3J0
DQo+ICAgICAgSEFORExFICAgICAgICAgICAgICAgICAgbV9zaHV0ZG93bjsNCj4gICAgICBIQU5E
TEUgICAgICAgICAgICAgICAgICBtX3N1c3BlbmQ7DQo+IA0KPiArICAgIENSSVRJQ0FMX1NFQ1RJ
T04gICAgICAgIG1fY3JpdDsNCj4gICAgICBDRGV2aWNlTGlzdCAgICAgICAgICAgICBtX2RldnM7
DQo+ICAgICAgQ1hlbklmYWNlSXRmKiAgICAgICAgICAgbV9kZXY7DQo+ICAgICAgdm9pZCogICAg
ICAgICAgICAgICAgICAgbV9jdHh0X3NodXRkb3duOw0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0LjEN
Cj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Xw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFp
bG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:32:45 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:32:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhKn-0004rt-Do; Wed, 22 Jun 2016 12:32:45 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhKm-0004rn-DJ
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:32:44 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
 26/3D-30629-B658A675; Wed, 22 Jun 2016 12:32:43 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRWlGSWpSXmKPExsWyU9JRQjerNSv
 c4NwvG4s/ixMdGD0Of7jCEsAYxZqZl5RfkcCa0fL+O0vBNJ2K/jnTWRoYz2h3MXJySAj4Sfyb
 P5cJxGYT0JFYenQ+mC0iUCDx/f08ZhCbWUBN4vr+LlYQW1ggTOLansNsXYwcQDXhEheagiHKj
 STm/WthAbFZBFQlGtctZwSxeQXcJaZPvQFUzsUhJNDIKDFjZTvYHE6gxJbNP8F2MQrISnxpXA
 21S1zi1hOIGyQEBCSW7DnPDGGLSrx8/I8VwjaQ2Lp0HwvIDcwCmhLrd+lDtCpKTOl+yA6xV1D
 i5MwnYPcICahIbHl8AGoMt8TKz39YJjCKzkKybRbCpFlIJs1CMmkBI8sqRvXi1KKy1CJdQ72k
 osz0jJLcxMwcXUNDE73c1OLixPTUnMSkYr3k/NxNjMAoYQCCHYxHO50PMUpyMCmJ8sorZ4UL8
 SXlp1RmJBZnxBeV5qQWH2KU4eBQkuCNaQTKCRalpqdWpGXmAOMVJi3BwaMkwusLkuYtLkjMLc
 5Mh0idYlSUEuc1AUkIgCQySvPg2mAp4hKjrJQwLyPQIUI8BalFuZklqPKvGMU5GJWEeRNApvB
 k5pXATX8FtJgJaPGy/nSQxSWJCCmpBsbbqrIyu6PPa3pmyHy9YStlt9iKf3GWyN6IY9U3ZnWr
 NOZpSHZ6f8golTrY6XN+XdLd/YUbrl+dsr/zG1ejYo/8m//LzMUz7m/g8Mq8//2Yom3Yz1MqG
 x6fl5rx4XDN9dx93fM9Wm031Su9c7+aItenvEmqbHfI9zVuIdZdixI2dv1YO6f8T7USS3FGoq
 EWc1FxIgAlEvyLDAMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-27.messagelabs.com!1466598762!49203341!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 45085 invoked from network); 22 Jun 2016 12:32:42 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:32:42 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786149"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 14/20] Protect active device with critical
 section
Thread-Index: AQHRtcsmoDn+FvZ62EarjHCQmm3CiZ/1mGrQ
Date: Wed, 22 Jun 2016 12:32:07 +0000
Message-ID: <0bdaceb746e84cacab9332b21648b71b@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-15-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-15-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 14/20] Protect active device with
	critical	section
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTQvMjBdIFByb3RlY3QgYWN0aXZlIGRldmljZSB3aXRoIGNy
aXRpY2FsDQo+IHNlY3Rpb24NCj4gDQo+IFRoaXMgc2hvdWxkIHByZXZlbnQgcmFjZSBjb25kaXRp
b25zIGR1ZSB0byBkZXZpY2UgcmVtb3ZhbCB3aGlsZQ0KPiBjdXJyZW50bHkgYXR0ZW1wdGluZyBv
cGVyYXRpb25zLiBXaWxsIGVuc3VyZSB0aGUgbV9kZXYgcG9pbnRlcg0KPiBpcyBub3QgcmVtb3Zl
ZCBkdXJpbmcgYSBPblN1c3BlbmQgb3IgT25TaHV0ZG93biBvcGVyYXRpb24NCj4NCg0KUG9zc2li
bHkgYSBjYW5kaWRhdGUgZm9yIGZvbGRpbmcsIGJ1dCBsZWF2aW5nIGl0IGJyb2tlbiBvdXQgaXMg
aWxsdXN0cmF0aXZlIHNvLi4uDQoNCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5z
bWl0aEBjaXRyaXguY29tPg0KDQpBY2tlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRA
Y2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIHNyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcCB8IDMy
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVB
Z2VudC5oICAgfCAgMSArDQo+ICAyIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEg
ZGVsZXRpb24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5j
cHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gaW5kZXggYjYxOTY3Zi4uZGI2YzNi
OSAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+ICsrKyBiL3Ny
Yy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAtNDIsNiArNDIsMjQgQEANCj4gICNkZWZp
bmUgWEVOVE9PTFNfSU5TVEFMTF9SRUdfS0VZNjQNCj4gIlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxc
Q2l0cml4XFxYZW5Ub29scyINCj4gICNlbmRpZg0KPiANCj4gK2NsYXNzIENDcml0U2VjDQo+ICt7
DQo+ICtwdWJsaWM6DQo+ICsgICAgQ0NyaXRTZWMoTFBDUklUSUNBTF9TRUNUSU9OIGNyaXQpOw0K
PiArICAgIH5DQ3JpdFNlYygpOw0KPiArcHJpdmF0ZToNCj4gKyAgICBMUENSSVRJQ0FMX1NFQ1RJ
T04gbV9jcml0Ow0KPiArfTsNCj4gKw0KPiArQ0NyaXRTZWM6OkNDcml0U2VjKExQQ1JJVElDQUxf
U0VDVElPTiBjcml0KSA6IG1fY3JpdChjcml0KQ0KPiArew0KPiArICAgIEVudGVyQ3JpdGljYWxT
ZWN0aW9uKG1fY3JpdCk7DQo+ICt9DQo+ICtDQ3JpdFNlYzo6fkNDcml0U2VjKCkNCj4gK3sNCj4g
KyAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbihtX2NyaXQpOw0KPiArfQ0KPiArDQo+ICBpbnQgX19z
dGRjYWxsIFdpbk1haW4oSElOU1RBTkNFIGhJbnN0YW5jZSwgSElOU1RBTkNFIGlnbm9yZSwgTFBT
VFINCj4gbHBDbWRMaW5lLCBpbnQgbkNtZFNob3cpDQo+ICB7DQo+ICAgICAgaWYgKHN0cmxlbihs
cENtZExpbmUpICE9IDApIHsNCj4gQEAgLTE2OSw3ICsxODcsOSBAQCBDTGl0ZUFnZW50OjpDTGl0
ZUFnZW50KCkgOg0KPiANCj4gICAgICBtX3N2Y19zdG9wID0gQ3JlYXRlRXZlbnQoRkFMU0UsIE5V
TEwsIE5VTEwsIEZBTFNFKTsNCj4gICAgICBtX3NodXRkb3duID0gQ3JlYXRlRXZlbnQoRkFMU0Us
IE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gLSAgICBtX3N1c3BlbmQgID0gQ3JlYXRlRXZlbnQoRkFM
U0UsIE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gKyAgICBtX3N1c3BlbmQgID0gQ3JlYXRlRXZlbnQo
RkFMU0UsIE5VTEwsIE5VTEwsIEZBTFNFKTsNCj4gKw0KPiArICAgIEluaXRpYWxpemVDcml0aWNh
bFNlY3Rpb24oJm1fY3JpdCk7DQo+ICB9DQo+IA0KPiAgQ0xpdGVBZ2VudDo6fkNMaXRlQWdlbnQo
KQ0KPiBAQCAtMTc3LDYgKzE5Nyw4IEBAIENMaXRlQWdlbnQ6On5DTGl0ZUFnZW50KCkNCj4gICAg
ICBDbG9zZUhhbmRsZShtX3N2Y19zdG9wKTsNCj4gICAgICBDbG9zZUhhbmRsZShtX3NodXRkb3du
KTsNCj4gICAgICBDbG9zZUhhbmRsZShtX3N1c3BlbmQpOw0KPiArDQo+ICsgICAgRGVsZXRlQ3Jp
dGljYWxTZWN0aW9uKCZtX2NyaXQpOw0KPiAgfQ0KPiANCj4gIC8qdmlydHVhbCovIENEZXZpY2Uq
IENMaXRlQWdlbnQ6OkNyZWF0ZShjb25zdCB3Y2hhcl90KiBwYXRoKQ0KPiBAQCAtMTg4LDYgKzIx
MCw4IEBAIENMaXRlQWdlbnQ6On5DTGl0ZUFnZW50KCkNCj4gIC8qdmlydHVhbCovIHZvaWQgQ0xp
dGVBZ2VudDo6T25EZXZpY2VBZGRlZChDRGV2aWNlKiBkZXYpDQo+ICB7DQo+ICAgICAgQ0xpdGVB
Z2VudDo6TG9nKCJPbkRldmljZUFkZGVkKCV3cylcbiIsIGRldi0+UGF0aCgpKTsNCj4gKw0KPiAr
ICAgIENDcml0U2VjIGNyaXQoJm1fY3JpdCk7DQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpIHsN
Cj4gICAgICAgICAgbV9kZXYgPSAoQ1hlbklmYWNlSXRmKilkZXY7DQo+ICAgICAgICAgIC8vIHNl
dHRpbmcgYWN0aXZlIGRldmljZQ0KPiBAQCAtMjEwLDYgKzIzNCw4IEBAIENMaXRlQWdlbnQ6On5D
TGl0ZUFnZW50KCkNCj4gIC8qdmlydHVhbCovIHZvaWQgQ0xpdGVBZ2VudDo6T25EZXZpY2VSZW1v
dmVkKENEZXZpY2UqIGRldikNCj4gIHsNCj4gICAgICBDTGl0ZUFnZW50OjpMb2coIk9uRGV2aWNl
UmVtb3ZlZCgld3MpXG4iLCBkZXYtPlBhdGgoKSk7DQo+ICsNCj4gKyAgICBDQ3JpdFNlYyBjcml0
KCZtX2NyaXQpOw0KPiAgICAgIGlmICgoQ1hlbklmYWNlSXRmKilkZXYgPT0gbV9kZXYpIHsNCj4g
ICAgICAgICAgLy8gYWN0aXZlIGRldmljZSByZW1vdmVkDQo+ICAgICAgICAgIENMaXRlQWdlbnQ6
OkxvZygiQWN0aXZlIERldmljZSBSZW1vdmVkXG4iKTsNCj4gQEAgLTI3Myw2ICsyOTksOCBAQCBi
b29sIENMaXRlQWdlbnQ6OlNlcnZpY2VNYWluTG9vcCgpDQo+IA0KPiAgdm9pZCBDTGl0ZUFnZW50
OjpPblNodXRkb3duKCkNCj4gIHsNCj4gKyAgICBDQ3JpdFNlYyBjcml0KCZtX2NyaXQpOw0KPiAr
DQo+ICAgICAgaWYgKG1fZGV2ID09IE5VTEwpDQo+ICAgICAgICAgIHJldHVybjsNCj4gICAgICBD
TGl0ZUFnZW50OjpMb2coIk9uU2h1dGRvd24oJXdzKVxuIiwgbV9kZXYtPlBhdGgoKSk7DQo+IEBA
IC0yODYsNiArMzE0LDggQEAgdm9pZCBDTGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4gDQo+ICB2
b2lkIENMaXRlQWdlbnQ6Ok9uU3VzcGVuZCgpDQo+ICB7DQo+ICsgICAgQ0NyaXRTZWMgY3JpdCgm
bV9jcml0KTsNCj4gKw0KPiAgICAgIGlmIChtX2RldiA9PSBOVUxMKQ0KPiAgICAgICAgICByZXR1
cm47DQo+ICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJPblN1c3BlbmQoJXdzKVxuIiwgbV9kZXYtPlBh
dGgoKSk7DQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oIGIvc3JjL2xp
dGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBpbmRleCA5N2M2NTE0Li5lM2EyNTczIDEwMDY0NA0KPiAt
LS0gYS9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmgNCj4gQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0ZTogLy8gc2VydmljZSBzdXBwb3J0
DQo+ICAgICAgSEFORExFICAgICAgICAgICAgICAgICAgbV9zaHV0ZG93bjsNCj4gICAgICBIQU5E
TEUgICAgICAgICAgICAgICAgICBtX3N1c3BlbmQ7DQo+IA0KPiArICAgIENSSVRJQ0FMX1NFQ1RJ
T04gICAgICAgIG1fY3JpdDsNCj4gICAgICBDRGV2aWNlTGlzdCAgICAgICAgICAgICBtX2RldnM7
DQo+ICAgICAgQ1hlbklmYWNlSXRmKiAgICAgICAgICAgbV9kZXY7DQo+ICAgICAgdm9pZCogICAg
ICAgICAgICAgICAgICAgbV9jdHh0X3NodXRkb3duOw0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0LjEN
Cj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Xw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFp
bG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:36:25 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:36:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhOK-00056m-V0; Wed, 22 Jun 2016 12:36:24 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhOK-00056g-AH
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:36:24 +0000
Received: from [85.158.139.211] by server-13.bemta-5.messagelabs.com id
 CE/D7-16475-7468A675; Wed, 22 Jun 2016 12:36:23 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQtetLSv
 cYPc8a4s/ixMdGD0Of7jCEsAYxZqZl5RfkcCacebMF6aCNeYVb3/0sTYwXjDrYuTkkBDwk+hv
 /sYGYrMJ6EgsPTqfCcQWESiQ+P5+HjOIzSygJnF9fxcriC0skCnx/utaVoiaLIlTN3ZB2UYSq
 7rXgs1hEVCV+PpnAVicV8Bd4tDDySxdjFwcQgKNjBIHnqwAW8AJlFh77iojiM0oICvxpXE11D
 JxiVtPII6QEBCQWLLnPDOELSrx8vE/VgjbQGLr0n1AQzmA6jUl1u/Sh2hVlJjS/ZAdYq+gxMm
 ZT1hAbCEBFYktjw9AjeGWWPn5D8sERtFZSLbNQpg0C8mkWUgmLWBkWcWoXpxaVJZapGuol1SU
 mZ5RkpuYmaNraGCql5taXJyYnpqTmFSsl5yfu4kRGCf1DAyMOxibep0PMUpyMCmJ8sorZ4UL8
 SXlp1RmJBZnxBeV5qQWH2KU4eBQkuDd3AKUEyxKTU+tSMvMAUYsTFqCg0dJhHcmSJq3uCAxtz
 gzHSJ1ilFRSpx3HUhCACSRUZoH1wZLEpcYZaWEeRkZGBiEeApSi3IzS1DlXzGKczAqCfNuAJn
 Ck5lXAjf9FdBiJqDFy/rTQRaXJCKkpBoY9dOn/OQL71I7unn1kTMJ1S9enr6aPJMlXvP0AoVT
 D7kmrp7J859Py/L2k+1X7327KOdk83brIbeYyEw9N7MYSxkWrnQx9bwP8+SdjN5mTOM8uT/pV
 B5PfKosI8/LopfSaiI3NvDN+T9xcZ2w9fzj93c5/UyQl6j75bGjRGZLgiD7S7VHzWWvlViKMx
 INtZiLihMBhq8C3w0DAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-206.messagelabs.com!1466598982!42509224!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17259 invoked from network); 22 Jun 2016 12:36:22 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-3.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:36:22 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786471"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 15/20] Add OnShutdown handler to
 poweroff/halt/reboot/hibernate/s3 VM
Thread-Index: AQHRtcs72zuMgI8GVkCQr4yjrxwrTZ/1mO0w
Date: Wed, 22 Jun 2016 12:36:22 +0000
Message-ID: <4f76abff83a146d489e1461fad30126a@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-16-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-16-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 15/20] Add OnShutdown handler
	to	poweroff/halt/reboot/hibernate/s3 VM
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTUvMjBdIEFkZCBPblNodXRkb3duIGhhbmRsZXIgdG8NCj4g
cG93ZXJvZmYvaGFsdC9yZWJvb3QvaGliZXJuYXRlL3MzIFZNDQo+IA0KPiBTaWduZWQtb2ZmLWJ5
OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IC0tLQ0KPiAgc3JjL2xpdGVh
Z2VudC9MaXRlQWdlbnQuY3BwIHwgNjYNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oICAgfCAgMSArDQo+
ICAyIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS9z
cmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAN
Cj4gaW5kZXggZGI2YzNiOS4uOWY2ZjU2ZiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9M
aXRlQWdlbnQuY3BwDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAt
MzIsNiArMzIsOCBAQA0KPiAgI2RlZmluZSBJTklUR1VJRA0KPiAgI2luY2x1ZGUgPHdpbmRvd3Mu
aD4NCj4gICNpbmNsdWRlIDxzdGRpby5oPg0KPiArI2luY2x1ZGUgPHBvd3Jwcm9mLmg+DQo+ICsj
aW5jbHVkZSA8d2ludXNlci5oPg0KPiANCj4gICNpbmNsdWRlICJMaXRlQWdlbnQuaCINCj4gICNp
bmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCINCj4gQEAgLTMwOCw4ICszMTAsNTMgQEAgdm9pZCBD
TGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4gICAgICAvLyBjaGVjayBzaHV0ZG93biB0eXBlIGFu
ZCBlbmFjdCBzaHV0ZG93bg0KPiAgICAgIHN0ZDo6c3RyaW5nIHR5cGU7DQo+ICAgICAgbV9kZXYt
PlN0b3JlUmVhZCgiY29udHJvbC9zaHV0ZG93biIsIHR5cGUpOw0KPiArICAgIG1fZGV2LT5TdG9y
ZVJlbW92ZSgiY29udHJvbC9zaHV0ZG93biIpOw0KPiANCj4gICAgICBDTGl0ZUFnZW50OjpMb2co
Ik9uU2h1dGRvd24oJXMpXG4iLCB0eXBlLmNfc3RyKCkpOw0KPiArDQo+ICsgICAgQk9PTCByZXM7
DQo+ICsgICAgaWYgKHR5cGUgPT0gInBvd2Vyb2ZmIiB8fCB0eXBlID09ICJoYWx0Iikgew0KPiAr
ICAgICAgICBBY3F1aXJlU3lzdGVtUHJpdmlsZWdlKFNFX1NIVVRET1dOX05BTUUpOw0KPiArICAg
ICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9zaHV0ZG93bi1zdGF0ZSIsICJzdGFydGVk
Iik7DQo+ICsgICAgICAgIHJlcyA9IEluaXRpYXRlU3lzdGVtU2h1dGRvd25FeChOVUxMLCBOVUxM
LCAwLCBUUlVFLCBGQUxTRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNIVEROX1JFQVNPTl9NQUpPUl9PVEhFUiB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTSFRETl9SRUFTT05fTUlOT1JfRU5WSVJPTk1FTlQgfA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hURE5fUkVBU09OX0ZMQUdfUExB
Tk5FRCk7DQo+ICsgICAgICAgIGlmICghcmVzKSB7DQo+ICsgICAgICAgICAgICBtX2Rldi0+U3Rv
cmVXcml0ZSgiY29udHJvbC9zaHV0ZG93bi1zdGF0ZSIsICJmYWlsZWQiKTsNCg0KVGhpcyBpcyBu
b3QgYSBkb2N1bWVudGVkIHhlbnN0b3JlIGtleSBhbmQgdGhlIHdyaXRlIHdpbGwgZmFpbCBpbiBh
IG5vbi1YZW5TZXJ2ZXIgZW52aXJvbm1lbnQgYmVjYXVzZSAnY29udHJvbCcgaXMgcmVhZC1vbmx5
Lg0KDQo+ICsgICAgICAgICAgICBDTGl0ZUFnZW50OjpMb2coIkluaXRpYXRlU3lzdGVtU2h1dGRv
d25FeCBmYWlsZWQgJTA4eFxuIiwNCj4gR2V0TGFzdEVycm9yKCkpOw0KPiArICAgICAgICB9DQo+
ICsgICAgfQ0KPiArICAgIGVsc2UgaWYgKHR5cGUgPT0gInJlYm9vdCIpIHsNCj4gKyAgICAgICAg
QWNxdWlyZVN5c3RlbVByaXZpbGVnZShTRV9TSFVURE9XTl9OQU1FKTsNCj4gKyAgICAgICAgbV9k
ZXYtPlN0b3JlV3JpdGUoImNvbnRyb2wvc2h1dGRvd24tc3RhdGUiLCAic3RhcnRlZCIpOw0KPiAr
ICAgICAgICByZXMgPSBJbml0aWF0ZVN5c3RlbVNodXRkb3duRXgoTlVMTCwgTlVMTCwgMCwgVFJV
RSwgVFJVRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIVERO
X1JFQVNPTl9NQUpPUl9PVEhFUiB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSFRETl9SRUFTT05fTUlOT1JfRU5WSVJPTk1FTlQgfA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hURE5fUkVBU09OX0ZMQUdfUExBTk5FRCk7DQo+
ICsgICAgICAgIGlmICghcmVzKSB7DQo+ICsgICAgICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgi
Y29udHJvbC9zaHV0ZG93bi1zdGF0ZSIsICJmYWlsZWQiKTsNCg0KU2FtZSBoZXJlLg0KDQo+ICsg
ICAgICAgICAgICBDTGl0ZUFnZW50OjpMb2coIkluaXRpYXRlU3lzdGVtU2h1dGRvd25FeCBmYWls
ZWQgJTA4eFxuIiwNCj4gR2V0TGFzdEVycm9yKCkpOw0KPiArICAgICAgICB9DQo+ICsgICAgfQ0K
PiArICAgIGVsc2UgaWYgKHR5cGUgPT0gImhpYmVybmF0ZSIpIHsNCj4gKyAgICAgICAgQWNxdWly
ZVN5c3RlbVByaXZpbGVnZShTRV9TSFVURE9XTl9OQU1FKTsNCj4gKyAgICAgICAgbV9kZXYtPlN0
b3JlV3JpdGUoImNvbnRyb2wvaGliZXJuYXRpb24tc3RhdGUiLCAic3RhcnRlZCIpOw0KPiArICAg
ICAgICByZXMgPSBTZXRTeXN0ZW1Qb3dlclN0YXRlKEZBTFNFLCBGQUxTRSk7DQo+ICsgICAgICAg
IGlmICghcmVzKSB7DQo+ICsgICAgICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9o
aWJlcm5hdGlvbi1zdGF0ZSIsICJmYWlsZWQiKTsNCg0KQW5kIGhlcmUuDQoNCj4gKyAgICAgICAg
ICAgIENMaXRlQWdlbnQ6OkxvZygiU2V0U3lzdGVtUG93ZXJTdGF0ZSBmYWlsZWQgJTA4eFxuIiwN
Cj4gR2V0TGFzdEVycm9yKCkpOw0KPiArICAgICAgICB9DQo+ICsgICAgfQ0KPiArICAgIGVsc2Ug
aWYgKHR5cGUgPT0gInMzIikgew0KPiArICAgICAgICBBY3F1aXJlU3lzdGVtUHJpdmlsZWdlKFNF
X1NIVVRET1dOX05BTUUpOw0KPiArICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9z
My1zdGF0ZSIsICJzdGFydGVkIik7DQo+ICsgICAgICAgIHJlcyA9IFNldFN1c3BlbmRTdGF0ZShG
QUxTRSwgVFJVRSwgRkFMU0UpOw0KPiArICAgICAgICBpZiAoIXJlcykgew0KPiArICAgICAgICAg
ICAgbV9kZXYtPlN0b3JlV3JpdGUoImNvbnRyb2wvczMtc3RhdGUiLCAiZmFpbGVkIik7DQoNCkFu
ZCBoZXJlLg0KDQpQbGVhc2UgcmVtb3ZlIHRoZXNlIFhlblNlcnZlci1pc21zLg0KDQogIFBhdWwN
Cg0KPiArICAgICAgICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJTZXRTdXNwZW5kU3RhdGUgZmFpbGVk
ICUwOHhcbiIsIEdldExhc3RFcnJvcigpKTsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0NCj4gIH0N
Cj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6Ok9uU3VzcGVuZCgpDQo+IEBAIC00NDQsNiArNDkxLDI1
IEBAIGRvbmU6DQo+ICAgICAgcmV0dXJuIG1hdGNoOw0KPiAgfQ0KPiANCj4gK3ZvaWQgQ0xpdGVB
Z2VudDo6QWNxdWlyZVN5c3RlbVByaXZpbGVnZShjb25zdCBjaGFyKiBuYW1lKQ0KPiArew0KPiAr
ICAgIEhBTkRMRSAgICAgICAgICB0b2tlbjsNCj4gKyAgICBUT0tFTl9QUklWSUxFR0VTIHRwOw0K
PiArDQo+ICsgICAgTG9va3VwUHJpdmlsZWdlVmFsdWUoTlVMTCwgbmFtZSwgJnRwLlByaXZpbGVn
ZXNbMF0uTHVpZCk7DQo+ICsgICAgdHAuUHJpdmlsZWdlc1swXS5BdHRyaWJ1dGVzID0gU0VfUFJJ
VklMRUdFX0VOQUJMRUQ7DQo+ICsNCj4gKyAgICB0cC5Qcml2aWxlZ2VDb3VudCA9IDE7DQo+ICsN
Cj4gKyAgICBpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nlc3MoKSwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgVE9LRU5fQURKVVNUX1BSSVZJTEVHRVMgfCBUT0tFTl9R
VUVSWSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnRva2VuKSkNCj4gKyAgICAgICAg
cmV0dXJuOw0KPiArDQo+ICsgICAgQWRqdXN0VG9rZW5Qcml2aWxlZ2VzKHRva2VuLCBGQUxTRSwg
JnRwLCBOVUxMLCAwLCBOVUxMKTsNCj4gKyAgICBDbG9zZUhhbmRsZSh0b2tlbik7DQo+ICt9DQo+
ICsNCj4gIHZvaWQgQ0xpdGVBZ2VudDo6U2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdP
UkQgZXhpdCAvKj0gMCovLA0KPiBEV09SRCBoaW50IC8qPSAwKi8pDQo+ICB7DQo+ICAgICAgbV9z
dGF0dXMuZHdDdXJyZW50U3RhdGUgPSBzdGF0ZTsNCj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdl
bnQvTGl0ZUFnZW50LmggYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IGluZGV4IGUzYTI1
NzMuLjU4NTU0MTYgMTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4g
KysrIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBAQCAtNzUsNiArNzUsNyBAQCBwcml2
YXRlOiAvLyBzZXJ2aWNlIGV2ZW50cw0KPiAgICAgIGJvb2wgSG9zdFRpbWVJc1V0YygpOw0KPiAg
ICAgIHZvaWQgQWRqdXN0WGVuVGltZVRvVXRjKEZJTEVUSU1FKiBub3cpOw0KPiAgICAgIGJvb2wg
UmVnTWF0Y2hTdHIoY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hh
ciogdmFsdWUpOw0KPiArICAgIHZvaWQgQWNxdWlyZVN5c3RlbVByaXZpbGVnZShjb25zdCBjaGFy
KiBuYW1lKTsNCj4gDQo+ICBwcml2YXRlOiAvLyBzZXJ2aWNlIHN1cHBvcnQNCj4gICAgICB2b2lk
IFNldFNlcnZpY2VTdGF0dXMoRFdPUkQgc3RhdGUsIERXT1JEIGV4aXQgPSAwLCBEV09SRCBoaW50
ID0gMCk7DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5n
IGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZl
bA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:36:25 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:36:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhOK-00056m-V0; Wed, 22 Jun 2016 12:36:24 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhOK-00056g-AH
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:36:24 +0000
Received: from [85.158.139.211] by server-13.bemta-5.messagelabs.com id
 CE/D7-16475-7468A675; Wed, 22 Jun 2016 12:36:23 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQtetLSv
 cYPc8a4s/ixMdGD0Of7jCEsAYxZqZl5RfkcCacebMF6aCNeYVb3/0sTYwXjDrYuTkkBDwk+hv
 /sYGYrMJ6EgsPTqfCcQWESiQ+P5+HjOIzSygJnF9fxcriC0skCnx/utaVoiaLIlTN3ZB2UYSq
 7rXgs1hEVCV+PpnAVicV8Bd4tDDySxdjFwcQgKNjBIHnqwAW8AJlFh77iojiM0oICvxpXE11D
 JxiVtPII6QEBCQWLLnPDOELSrx8vE/VgjbQGLr0n1AQzmA6jUl1u/Sh2hVlJjS/ZAdYq+gxMm
 ZT1hAbCEBFYktjw9AjeGWWPn5D8sERtFZSLbNQpg0C8mkWUgmLWBkWcWoXpxaVJZapGuol1SU
 mZ5RkpuYmaNraGCql5taXJyYnpqTmFSsl5yfu4kRGCf1DAyMOxibep0PMUpyMCmJ8sorZ4UL8
 SXlp1RmJBZnxBeV5qQWH2KU4eBQkuDd3AKUEyxKTU+tSMvMAUYsTFqCg0dJhHcmSJq3uCAxtz
 gzHSJ1ilFRSpx3HUhCACSRUZoH1wZLEpcYZaWEeRkZGBiEeApSi3IzS1DlXzGKczAqCfNuAJn
 Ck5lXAjf9FdBiJqDFy/rTQRaXJCKkpBoY9dOn/OQL71I7unn1kTMJ1S9enr6aPJMlXvP0AoVT
 D7kmrp7J859Py/L2k+1X7327KOdk83brIbeYyEw9N7MYSxkWrnQx9bwP8+SdjN5mTOM8uT/pV
 B5PfKosI8/LopfSaiI3NvDN+T9xcZ2w9fzj93c5/UyQl6j75bGjRGZLgiD7S7VHzWWvlViKMx
 INtZiLihMBhq8C3w0DAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-206.messagelabs.com!1466598982!42509224!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17259 invoked from network); 22 Jun 2016 12:36:22 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-3.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:36:22 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786471"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 15/20] Add OnShutdown handler to
 poweroff/halt/reboot/hibernate/s3 VM
Thread-Index: AQHRtcs72zuMgI8GVkCQr4yjrxwrTZ/1mO0w
Date: Wed, 22 Jun 2016 12:36:22 +0000
Message-ID: <4f76abff83a146d489e1461fad30126a@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-16-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-16-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 15/20] Add OnShutdown handler
	to	poweroff/halt/reboot/hibernate/s3 VM
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTUvMjBdIEFkZCBPblNodXRkb3duIGhhbmRsZXIgdG8NCj4g
cG93ZXJvZmYvaGFsdC9yZWJvb3QvaGliZXJuYXRlL3MzIFZNDQo+IA0KPiBTaWduZWQtb2ZmLWJ5
OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IC0tLQ0KPiAgc3JjL2xpdGVh
Z2VudC9MaXRlQWdlbnQuY3BwIHwgNjYNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oICAgfCAgMSArDQo+
ICAyIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS9z
cmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAN
Cj4gaW5kZXggZGI2YzNiOS4uOWY2ZjU2ZiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9M
aXRlQWdlbnQuY3BwDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAt
MzIsNiArMzIsOCBAQA0KPiAgI2RlZmluZSBJTklUR1VJRA0KPiAgI2luY2x1ZGUgPHdpbmRvd3Mu
aD4NCj4gICNpbmNsdWRlIDxzdGRpby5oPg0KPiArI2luY2x1ZGUgPHBvd3Jwcm9mLmg+DQo+ICsj
aW5jbHVkZSA8d2ludXNlci5oPg0KPiANCj4gICNpbmNsdWRlICJMaXRlQWdlbnQuaCINCj4gICNp
bmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCINCj4gQEAgLTMwOCw4ICszMTAsNTMgQEAgdm9pZCBD
TGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4gICAgICAvLyBjaGVjayBzaHV0ZG93biB0eXBlIGFu
ZCBlbmFjdCBzaHV0ZG93bg0KPiAgICAgIHN0ZDo6c3RyaW5nIHR5cGU7DQo+ICAgICAgbV9kZXYt
PlN0b3JlUmVhZCgiY29udHJvbC9zaHV0ZG93biIsIHR5cGUpOw0KPiArICAgIG1fZGV2LT5TdG9y
ZVJlbW92ZSgiY29udHJvbC9zaHV0ZG93biIpOw0KPiANCj4gICAgICBDTGl0ZUFnZW50OjpMb2co
Ik9uU2h1dGRvd24oJXMpXG4iLCB0eXBlLmNfc3RyKCkpOw0KPiArDQo+ICsgICAgQk9PTCByZXM7
DQo+ICsgICAgaWYgKHR5cGUgPT0gInBvd2Vyb2ZmIiB8fCB0eXBlID09ICJoYWx0Iikgew0KPiAr
ICAgICAgICBBY3F1aXJlU3lzdGVtUHJpdmlsZWdlKFNFX1NIVVRET1dOX05BTUUpOw0KPiArICAg
ICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9zaHV0ZG93bi1zdGF0ZSIsICJzdGFydGVk
Iik7DQo+ICsgICAgICAgIHJlcyA9IEluaXRpYXRlU3lzdGVtU2h1dGRvd25FeChOVUxMLCBOVUxM
LCAwLCBUUlVFLCBGQUxTRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNIVEROX1JFQVNPTl9NQUpPUl9PVEhFUiB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTSFRETl9SRUFTT05fTUlOT1JfRU5WSVJPTk1FTlQgfA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hURE5fUkVBU09OX0ZMQUdfUExB
Tk5FRCk7DQo+ICsgICAgICAgIGlmICghcmVzKSB7DQo+ICsgICAgICAgICAgICBtX2Rldi0+U3Rv
cmVXcml0ZSgiY29udHJvbC9zaHV0ZG93bi1zdGF0ZSIsICJmYWlsZWQiKTsNCg0KVGhpcyBpcyBu
b3QgYSBkb2N1bWVudGVkIHhlbnN0b3JlIGtleSBhbmQgdGhlIHdyaXRlIHdpbGwgZmFpbCBpbiBh
IG5vbi1YZW5TZXJ2ZXIgZW52aXJvbm1lbnQgYmVjYXVzZSAnY29udHJvbCcgaXMgcmVhZC1vbmx5
Lg0KDQo+ICsgICAgICAgICAgICBDTGl0ZUFnZW50OjpMb2coIkluaXRpYXRlU3lzdGVtU2h1dGRv
d25FeCBmYWlsZWQgJTA4eFxuIiwNCj4gR2V0TGFzdEVycm9yKCkpOw0KPiArICAgICAgICB9DQo+
ICsgICAgfQ0KPiArICAgIGVsc2UgaWYgKHR5cGUgPT0gInJlYm9vdCIpIHsNCj4gKyAgICAgICAg
QWNxdWlyZVN5c3RlbVByaXZpbGVnZShTRV9TSFVURE9XTl9OQU1FKTsNCj4gKyAgICAgICAgbV9k
ZXYtPlN0b3JlV3JpdGUoImNvbnRyb2wvc2h1dGRvd24tc3RhdGUiLCAic3RhcnRlZCIpOw0KPiAr
ICAgICAgICByZXMgPSBJbml0aWF0ZVN5c3RlbVNodXRkb3duRXgoTlVMTCwgTlVMTCwgMCwgVFJV
RSwgVFJVRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIVERO
X1JFQVNPTl9NQUpPUl9PVEhFUiB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSFRETl9SRUFTT05fTUlOT1JfRU5WSVJPTk1FTlQgfA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hURE5fUkVBU09OX0ZMQUdfUExBTk5FRCk7DQo+
ICsgICAgICAgIGlmICghcmVzKSB7DQo+ICsgICAgICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgi
Y29udHJvbC9zaHV0ZG93bi1zdGF0ZSIsICJmYWlsZWQiKTsNCg0KU2FtZSBoZXJlLg0KDQo+ICsg
ICAgICAgICAgICBDTGl0ZUFnZW50OjpMb2coIkluaXRpYXRlU3lzdGVtU2h1dGRvd25FeCBmYWls
ZWQgJTA4eFxuIiwNCj4gR2V0TGFzdEVycm9yKCkpOw0KPiArICAgICAgICB9DQo+ICsgICAgfQ0K
PiArICAgIGVsc2UgaWYgKHR5cGUgPT0gImhpYmVybmF0ZSIpIHsNCj4gKyAgICAgICAgQWNxdWly
ZVN5c3RlbVByaXZpbGVnZShTRV9TSFVURE9XTl9OQU1FKTsNCj4gKyAgICAgICAgbV9kZXYtPlN0
b3JlV3JpdGUoImNvbnRyb2wvaGliZXJuYXRpb24tc3RhdGUiLCAic3RhcnRlZCIpOw0KPiArICAg
ICAgICByZXMgPSBTZXRTeXN0ZW1Qb3dlclN0YXRlKEZBTFNFLCBGQUxTRSk7DQo+ICsgICAgICAg
IGlmICghcmVzKSB7DQo+ICsgICAgICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9o
aWJlcm5hdGlvbi1zdGF0ZSIsICJmYWlsZWQiKTsNCg0KQW5kIGhlcmUuDQoNCj4gKyAgICAgICAg
ICAgIENMaXRlQWdlbnQ6OkxvZygiU2V0U3lzdGVtUG93ZXJTdGF0ZSBmYWlsZWQgJTA4eFxuIiwN
Cj4gR2V0TGFzdEVycm9yKCkpOw0KPiArICAgICAgICB9DQo+ICsgICAgfQ0KPiArICAgIGVsc2Ug
aWYgKHR5cGUgPT0gInMzIikgew0KPiArICAgICAgICBBY3F1aXJlU3lzdGVtUHJpdmlsZWdlKFNF
X1NIVVRET1dOX05BTUUpOw0KPiArICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9z
My1zdGF0ZSIsICJzdGFydGVkIik7DQo+ICsgICAgICAgIHJlcyA9IFNldFN1c3BlbmRTdGF0ZShG
QUxTRSwgVFJVRSwgRkFMU0UpOw0KPiArICAgICAgICBpZiAoIXJlcykgew0KPiArICAgICAgICAg
ICAgbV9kZXYtPlN0b3JlV3JpdGUoImNvbnRyb2wvczMtc3RhdGUiLCAiZmFpbGVkIik7DQoNCkFu
ZCBoZXJlLg0KDQpQbGVhc2UgcmVtb3ZlIHRoZXNlIFhlblNlcnZlci1pc21zLg0KDQogIFBhdWwN
Cg0KPiArICAgICAgICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJTZXRTdXNwZW5kU3RhdGUgZmFpbGVk
ICUwOHhcbiIsIEdldExhc3RFcnJvcigpKTsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0NCj4gIH0N
Cj4gDQo+ICB2b2lkIENMaXRlQWdlbnQ6Ok9uU3VzcGVuZCgpDQo+IEBAIC00NDQsNiArNDkxLDI1
IEBAIGRvbmU6DQo+ICAgICAgcmV0dXJuIG1hdGNoOw0KPiAgfQ0KPiANCj4gK3ZvaWQgQ0xpdGVB
Z2VudDo6QWNxdWlyZVN5c3RlbVByaXZpbGVnZShjb25zdCBjaGFyKiBuYW1lKQ0KPiArew0KPiAr
ICAgIEhBTkRMRSAgICAgICAgICB0b2tlbjsNCj4gKyAgICBUT0tFTl9QUklWSUxFR0VTIHRwOw0K
PiArDQo+ICsgICAgTG9va3VwUHJpdmlsZWdlVmFsdWUoTlVMTCwgbmFtZSwgJnRwLlByaXZpbGVn
ZXNbMF0uTHVpZCk7DQo+ICsgICAgdHAuUHJpdmlsZWdlc1swXS5BdHRyaWJ1dGVzID0gU0VfUFJJ
VklMRUdFX0VOQUJMRUQ7DQo+ICsNCj4gKyAgICB0cC5Qcml2aWxlZ2VDb3VudCA9IDE7DQo+ICsN
Cj4gKyAgICBpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nlc3MoKSwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgVE9LRU5fQURKVVNUX1BSSVZJTEVHRVMgfCBUT0tFTl9R
VUVSWSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnRva2VuKSkNCj4gKyAgICAgICAg
cmV0dXJuOw0KPiArDQo+ICsgICAgQWRqdXN0VG9rZW5Qcml2aWxlZ2VzKHRva2VuLCBGQUxTRSwg
JnRwLCBOVUxMLCAwLCBOVUxMKTsNCj4gKyAgICBDbG9zZUhhbmRsZSh0b2tlbik7DQo+ICt9DQo+
ICsNCj4gIHZvaWQgQ0xpdGVBZ2VudDo6U2V0U2VydmljZVN0YXR1cyhEV09SRCBzdGF0ZSwgRFdP
UkQgZXhpdCAvKj0gMCovLA0KPiBEV09SRCBoaW50IC8qPSAwKi8pDQo+ICB7DQo+ICAgICAgbV9z
dGF0dXMuZHdDdXJyZW50U3RhdGUgPSBzdGF0ZTsNCj4gZGlmZiAtLWdpdCBhL3NyYy9saXRlYWdl
bnQvTGl0ZUFnZW50LmggYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+IGluZGV4IGUzYTI1
NzMuLjU4NTU0MTYgMTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmgNCj4g
KysrIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaA0KPiBAQCAtNzUsNiArNzUsNyBAQCBwcml2
YXRlOiAvLyBzZXJ2aWNlIGV2ZW50cw0KPiAgICAgIGJvb2wgSG9zdFRpbWVJc1V0YygpOw0KPiAg
ICAgIHZvaWQgQWRqdXN0WGVuVGltZVRvVXRjKEZJTEVUSU1FKiBub3cpOw0KPiAgICAgIGJvb2wg
UmVnTWF0Y2hTdHIoY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hh
ciogdmFsdWUpOw0KPiArICAgIHZvaWQgQWNxdWlyZVN5c3RlbVByaXZpbGVnZShjb25zdCBjaGFy
KiBuYW1lKTsNCj4gDQo+ICBwcml2YXRlOiAvLyBzZXJ2aWNlIHN1cHBvcnQNCj4gICAgICB2b2lk
IFNldFNlcnZpY2VTdGF0dXMoRFdPUkQgc3RhdGUsIERXT1JEIGV4aXQgPSAwLCBEV09SRCBoaW50
ID0gMCk7DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5n
IGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZl
bA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:38:06 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:38:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhPy-0005BE-Fp; Wed, 22 Jun 2016 12:38:06 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhPx-0005At-75
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:38:05 +0000
Received: from [85.158.139.211] by server-5.bemta-5.messagelabs.com id
 AB/19-29837-CA68A675; Wed, 22 Jun 2016 12:38:04 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQnd1W1a
 4waH1NhZ/Fic6MHoc/nCFJYAxijUzLym/IoE14+XZ3awF95Qq/qxZydzAuESpi5GTQ0LAT2LP
 gknsIDabgI7E0qPzmUBsEYECie/v5zGD2MwCahLX93exgtjCApESaxY9YoWoiZJoPPecBcI2k
 tj28RGYzSKgKnHqyCuwmbwC7hIdn4+A2UICjYwS9/5WgdicQPEnW2czgtiMArISXxpXQ+0Sl7
 j1BOIGCQEBiSV7zjND2KISLx//Y4WwDSS2Lt0HtIsDqF5TYv0ufYhWRYkp3Q+h1gpKnJz5hAV
 irYrElscHoMZwS6z8/IdlAqPoLCTbZiFMmoVk0iwkkxYwsqxi1ChOLSpLLdI1MtJLKspMzyjJ
 TczM0TU0MNXLTS0uTkxPzUlMKtZLzs/dxAiMk3oGBsYdjHva/Q4xSnIwKYnyyitnhQvxJeWnV
 GYkFmfEF5XmpBYfYpTh4FCS4JVrBcoJFqWmp1akZeYAIxYmLcHBoyTC6wOS5i0uSMwtzkyHSJ
 1iVJQS59UGSQiAJDJK8+DaYEniEqOslDAvIwMDgxBPQWpRbmYJqvwrRnEORiVh3iyQKTyZeSV
 w018BLWYCWrysPx1kcUkiQkqqgbG/3YmH6eL7n1wZcnfOKt/jjXgRteXb/ll/TC+G792qZbXb
 Jds9JHvxe2OhfdmOa8x4d0+drFm82Kb+Vl9KtVf9LmbRI5r2HZxmdyefuPZoweyuqIA9rJVH3
 fTqb296v8bhyk9mRpO2DjMh+39nDDVTnK8Y36i8siFKi6fhqPYcoYNbXKrzTZVYijMSDbWYi4
 oTAXvHMJ8NAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-206.messagelabs.com!1466599083!46177992!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42596 invoked from network); 22 Jun 2016 12:38:03 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-5.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:38:03 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786563"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 16/20] Only acknowledge the shutdown if
 type	is known
Thread-Index: AQHRtcsRj9cxVIdpqUmb/n7Dh0aDH5/1mhPg
Date: Wed, 22 Jun 2016 12:38:03 +0000
Message-ID: <ebd76cefeb9a4f7db0156c15bd3c7150@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-17-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-17-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 16/20] Only acknowledge the shutdown if
 type	is known
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTYvMjBdIE9ubHkgYWNrbm93bGVkZ2UgdGhlIHNodXRkb3du
IGlmDQo+IHR5cGUgaXMga25vd24NCj4NCg0KTG9va3MgbGlrZSB0aGlzIHNob3VsZCBiZSBmb2xk
ZWQgaW50byB0aGUgcHJldmlvdXMgcGF0Y2ggYnV0Li4uDQogDQo+IFNpZ25lZC1vZmYtYnk6IE93
ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50
L0xpdGVBZ2VudC5jcHAgfCAxMyArKysrKysrKysrKy0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgMTEg
aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gaW5k
ZXggOWY2ZjU2Zi4uNzM5YWNiYiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdl
bnQuY3BwDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAtMzA5LDgg
KzMwOSw4IEBAIHZvaWQgQ0xpdGVBZ2VudDo6T25TaHV0ZG93bigpDQo+IA0KPiAgICAgIC8vIGNo
ZWNrIHNodXRkb3duIHR5cGUgYW5kIGVuYWN0IHNodXRkb3duDQo+ICAgICAgc3RkOjpzdHJpbmcg
dHlwZTsNCj4gLSAgICBtX2Rldi0+U3RvcmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgdHlwZSk7
DQo+IC0gICAgbV9kZXYtPlN0b3JlUmVtb3ZlKCJjb250cm9sL3NodXRkb3duIik7DQo+ICsgICAg
aWYgKCFtX2Rldi0+U3RvcmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgdHlwZSkpDQo+ICsgICAg
ICAgIHJldHVybjsNCj4gDQo+ICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJPblNodXRkb3duKCVzKVxu
IiwgdHlwZS5jX3N0cigpKTsNCj4gDQo+IEBAIC0zMjYsNiArMzI2LDcgQEAgdm9pZCBDTGl0ZUFn
ZW50OjpPblNodXRkb3duKCkNCj4gICAgICAgICAgICAgIG1fZGV2LT5TdG9yZVdyaXRlKCJjb250
cm9sL3NodXRkb3duLXN0YXRlIiwgImZhaWxlZCIpOw0KPiAgICAgICAgICAgICAgQ0xpdGVBZ2Vu
dDo6TG9nKCJJbml0aWF0ZVN5c3RlbVNodXRkb3duRXggZmFpbGVkICUwOHhcbiIsDQo+IEdldExh
c3RFcnJvcigpKTsNCj4gICAgICAgICAgfQ0KPiArICAgICAgICBtX2Rldi0+U3RvcmVSZW1vdmUo
ImNvbnRyb2wvc2h1dGRvd24iKTsNCj4gICAgICB9DQo+ICAgICAgZWxzZSBpZiAodHlwZSA9PSAi
cmVib290Iikgew0KPiAgICAgICAgICBBY3F1aXJlU3lzdGVtUHJpdmlsZWdlKFNFX1NIVVRET1dO
X05BTUUpOw0KPiBAQCAtMzM4LDYgKzMzOSw3IEBAIHZvaWQgQ0xpdGVBZ2VudDo6T25TaHV0ZG93
bigpDQo+ICAgICAgICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9zaHV0ZG93bi1z
dGF0ZSIsICJmYWlsZWQiKTsNCj4gICAgICAgICAgICAgIENMaXRlQWdlbnQ6OkxvZygiSW5pdGlh
dGVTeXN0ZW1TaHV0ZG93bkV4IGZhaWxlZCAlMDh4XG4iLA0KPiBHZXRMYXN0RXJyb3IoKSk7DQo+
ICAgICAgICAgIH0NCj4gKyAgICAgICAgbV9kZXYtPlN0b3JlUmVtb3ZlKCJjb250cm9sL3NodXRk
b3duIik7DQo+ICAgICAgfQ0KPiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImhpYmVybmF0ZSIpIHsN
Cj4gICAgICAgICAgQWNxdWlyZVN5c3RlbVByaXZpbGVnZShTRV9TSFVURE9XTl9OQU1FKTsNCj4g
QEAgLTM0Nyw2ICszNDksNyBAQCB2b2lkIENMaXRlQWdlbnQ6Ok9uU2h1dGRvd24oKQ0KPiAgICAg
ICAgICAgICAgbV9kZXYtPlN0b3JlV3JpdGUoImNvbnRyb2wvaGliZXJuYXRpb24tc3RhdGUiLCAi
ZmFpbGVkIik7DQo+ICAgICAgICAgICAgICBDTGl0ZUFnZW50OjpMb2coIlNldFN5c3RlbVBvd2Vy
U3RhdGUgZmFpbGVkICUwOHhcbiIsDQo+IEdldExhc3RFcnJvcigpKTsNCj4gICAgICAgICAgfQ0K
PiArICAgICAgICBtX2Rldi0+U3RvcmVSZW1vdmUoImNvbnRyb2wvc2h1dGRvd24iKTsNCj4gICAg
ICB9DQo+ICAgICAgZWxzZSBpZiAodHlwZSA9PSAiczMiKSB7DQo+ICAgICAgICAgIEFjcXVpcmVT
eXN0ZW1Qcml2aWxlZ2UoU0VfU0hVVERPV05fTkFNRSk7DQo+IEBAIC0zNTYsNiArMzU5LDcgQEAg
dm9pZCBDTGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4gICAgICAgICAgICAgIG1fZGV2LT5TdG9y
ZVdyaXRlKCJjb250cm9sL3MzLXN0YXRlIiwgImZhaWxlZCIpOw0KPiAgICAgICAgICAgICAgQ0xp
dGVBZ2VudDo6TG9nKCJTZXRTdXNwZW5kU3RhdGUgZmFpbGVkICUwOHhcbiIsIEdldExhc3RFcnJv
cigpKTsNCj4gICAgICAgICAgfQ0KPiArICAgICAgICBtX2Rldi0+U3RvcmVSZW1vdmUoImNvbnRy
b2wvc2h1dGRvd24iKTsNCj4gICAgICB9DQo+ICB9DQo+IA0KPiBAQCAtMzY3LDYgKzM3MSwxMSBA
QCB2b2lkIENMaXRlQWdlbnQ6Ok9uU3VzcGVuZCgpDQo+ICAgICAgICAgIHJldHVybjsNCj4gICAg
ICBDTGl0ZUFnZW50OjpMb2coIk9uU3VzcGVuZCgld3MpXG4iLCBtX2Rldi0+UGF0aCgpKTsNCj4g
DQo+ICsgICAgaWYgKG1fY3R4dF9zaHV0ZG93bikNCj4gKyAgICAgICAgbV9kZXYtPlN0b3JlUmVt
b3ZlV2F0Y2gobV9jdHh0X3NodXRkb3duKTsNCj4gKyAgICBtX2N0eHRfc2h1dGRvd24gPSBOVUxM
Ow0KPiArICAgIG1fZGV2LT5TdG9yZUFkZFdhdGNoKCJjb250cm9sL3NodXRkb3duIiwgbV9zaHV0
ZG93biwNCj4gJm1fY3R4dF9zaHV0ZG93bik7DQo+ICsNCg0KLi4uIHRoaXMgbG9va3MgbGlrZSBp
dCBzaG91bGQgaGF2ZSBiZWVuIGluIGFuIGV2ZW4gZWFybGllciBwYXRjaC4NCg0KICBQYXVsDQoN
Cj4gICAgICAvLyBhZHZlcnRpc2UNCj4gICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9m
ZWF0dXJlLXNodXRkb3duIiwgIjEiKTsNCj4gICAgICAvLyBzZXQgeGVuIHRpbWUNCj4gLS0NCj4g
MS45LjQubXN5c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QK
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:38:06 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:38:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhPy-0005BE-Fp; Wed, 22 Jun 2016 12:38:06 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhPx-0005At-75
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:38:05 +0000
Received: from [85.158.139.211] by server-5.bemta-5.messagelabs.com id
 AB/19-29837-CA68A675; Wed, 22 Jun 2016 12:38:04 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQnd1W1a
 4waH1NhZ/Fic6MHoc/nCFJYAxijUzLym/IoE14+XZ3awF95Qq/qxZydzAuESpi5GTQ0LAT2LP
 gknsIDabgI7E0qPzmUBsEYECie/v5zGD2MwCahLX93exgtjCApESaxY9YoWoiZJoPPecBcI2k
 tj28RGYzSKgKnHqyCuwmbwC7hIdn4+A2UICjYwS9/5WgdicQPEnW2czgtiMArISXxpXQ+0Sl7
 j1BOIGCQEBiSV7zjND2KISLx//Y4WwDSS2Lt0HtIsDqF5TYv0ufYhWRYkp3Q+h1gpKnJz5hAV
 irYrElscHoMZwS6z8/IdlAqPoLCTbZiFMmoVk0iwkkxYwsqxi1ChOLSpLLdI1MtJLKspMzyjJ
 TczM0TU0MNXLTS0uTkxPzUlMKtZLzs/dxAiMk3oGBsYdjHva/Q4xSnIwKYnyyitnhQvxJeWnV
 GYkFmfEF5XmpBYfYpTh4FCS4JVrBcoJFqWmp1akZeYAIxYmLcHBoyTC6wOS5i0uSMwtzkyHSJ
 1iVJQS59UGSQiAJDJK8+DaYEniEqOslDAvIwMDgxBPQWpRbmYJqvwrRnEORiVh3iyQKTyZeSV
 w018BLWYCWrysPx1kcUkiQkqqgbG/3YmH6eL7n1wZcnfOKt/jjXgRteXb/ll/TC+G792qZbXb
 Jds9JHvxe2OhfdmOa8x4d0+drFm82Kb+Vl9KtVf9LmbRI5r2HZxmdyefuPZoweyuqIA9rJVH3
 fTqb296v8bhyk9mRpO2DjMh+39nDDVTnK8Y36i8siFKi6fhqPYcoYNbXKrzTZVYijMSDbWYi4
 oTAXvHMJ8NAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-5.tower-206.messagelabs.com!1466599083!46177992!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42596 invoked from network); 22 Jun 2016 12:38:03 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-5.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:38:03 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786563"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 16/20] Only acknowledge the shutdown if
 type	is known
Thread-Index: AQHRtcsRj9cxVIdpqUmb/n7Dh0aDH5/1mhPg
Date: Wed, 22 Jun 2016 12:38:03 +0000
Message-ID: <ebd76cefeb9a4f7db0156c15bd3c7150@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-17-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-17-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 16/20] Only acknowledge the shutdown if
 type	is known
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTYvMjBdIE9ubHkgYWNrbm93bGVkZ2UgdGhlIHNodXRkb3du
IGlmDQo+IHR5cGUgaXMga25vd24NCj4NCg0KTG9va3MgbGlrZSB0aGlzIHNob3VsZCBiZSBmb2xk
ZWQgaW50byB0aGUgcHJldmlvdXMgcGF0Y2ggYnV0Li4uDQogDQo+IFNpZ25lZC1vZmYtYnk6IE93
ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50
L0xpdGVBZ2VudC5jcHAgfCAxMyArKysrKysrKysrKy0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgMTEg
aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMvbGl0
ZWFnZW50L0xpdGVBZ2VudC5jcHAgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gaW5k
ZXggOWY2ZjU2Zi4uNzM5YWNiYiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdl
bnQuY3BwDQo+ICsrKyBiL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiBAQCAtMzA5LDgg
KzMwOSw4IEBAIHZvaWQgQ0xpdGVBZ2VudDo6T25TaHV0ZG93bigpDQo+IA0KPiAgICAgIC8vIGNo
ZWNrIHNodXRkb3duIHR5cGUgYW5kIGVuYWN0IHNodXRkb3duDQo+ICAgICAgc3RkOjpzdHJpbmcg
dHlwZTsNCj4gLSAgICBtX2Rldi0+U3RvcmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgdHlwZSk7
DQo+IC0gICAgbV9kZXYtPlN0b3JlUmVtb3ZlKCJjb250cm9sL3NodXRkb3duIik7DQo+ICsgICAg
aWYgKCFtX2Rldi0+U3RvcmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgdHlwZSkpDQo+ICsgICAg
ICAgIHJldHVybjsNCj4gDQo+ICAgICAgQ0xpdGVBZ2VudDo6TG9nKCJPblNodXRkb3duKCVzKVxu
IiwgdHlwZS5jX3N0cigpKTsNCj4gDQo+IEBAIC0zMjYsNiArMzI2LDcgQEAgdm9pZCBDTGl0ZUFn
ZW50OjpPblNodXRkb3duKCkNCj4gICAgICAgICAgICAgIG1fZGV2LT5TdG9yZVdyaXRlKCJjb250
cm9sL3NodXRkb3duLXN0YXRlIiwgImZhaWxlZCIpOw0KPiAgICAgICAgICAgICAgQ0xpdGVBZ2Vu
dDo6TG9nKCJJbml0aWF0ZVN5c3RlbVNodXRkb3duRXggZmFpbGVkICUwOHhcbiIsDQo+IEdldExh
c3RFcnJvcigpKTsNCj4gICAgICAgICAgfQ0KPiArICAgICAgICBtX2Rldi0+U3RvcmVSZW1vdmUo
ImNvbnRyb2wvc2h1dGRvd24iKTsNCj4gICAgICB9DQo+ICAgICAgZWxzZSBpZiAodHlwZSA9PSAi
cmVib290Iikgew0KPiAgICAgICAgICBBY3F1aXJlU3lzdGVtUHJpdmlsZWdlKFNFX1NIVVRET1dO
X05BTUUpOw0KPiBAQCAtMzM4LDYgKzMzOSw3IEBAIHZvaWQgQ0xpdGVBZ2VudDo6T25TaHV0ZG93
bigpDQo+ICAgICAgICAgICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9zaHV0ZG93bi1z
dGF0ZSIsICJmYWlsZWQiKTsNCj4gICAgICAgICAgICAgIENMaXRlQWdlbnQ6OkxvZygiSW5pdGlh
dGVTeXN0ZW1TaHV0ZG93bkV4IGZhaWxlZCAlMDh4XG4iLA0KPiBHZXRMYXN0RXJyb3IoKSk7DQo+
ICAgICAgICAgIH0NCj4gKyAgICAgICAgbV9kZXYtPlN0b3JlUmVtb3ZlKCJjb250cm9sL3NodXRk
b3duIik7DQo+ICAgICAgfQ0KPiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImhpYmVybmF0ZSIpIHsN
Cj4gICAgICAgICAgQWNxdWlyZVN5c3RlbVByaXZpbGVnZShTRV9TSFVURE9XTl9OQU1FKTsNCj4g
QEAgLTM0Nyw2ICszNDksNyBAQCB2b2lkIENMaXRlQWdlbnQ6Ok9uU2h1dGRvd24oKQ0KPiAgICAg
ICAgICAgICAgbV9kZXYtPlN0b3JlV3JpdGUoImNvbnRyb2wvaGliZXJuYXRpb24tc3RhdGUiLCAi
ZmFpbGVkIik7DQo+ICAgICAgICAgICAgICBDTGl0ZUFnZW50OjpMb2coIlNldFN5c3RlbVBvd2Vy
U3RhdGUgZmFpbGVkICUwOHhcbiIsDQo+IEdldExhc3RFcnJvcigpKTsNCj4gICAgICAgICAgfQ0K
PiArICAgICAgICBtX2Rldi0+U3RvcmVSZW1vdmUoImNvbnRyb2wvc2h1dGRvd24iKTsNCj4gICAg
ICB9DQo+ICAgICAgZWxzZSBpZiAodHlwZSA9PSAiczMiKSB7DQo+ICAgICAgICAgIEFjcXVpcmVT
eXN0ZW1Qcml2aWxlZ2UoU0VfU0hVVERPV05fTkFNRSk7DQo+IEBAIC0zNTYsNiArMzU5LDcgQEAg
dm9pZCBDTGl0ZUFnZW50OjpPblNodXRkb3duKCkNCj4gICAgICAgICAgICAgIG1fZGV2LT5TdG9y
ZVdyaXRlKCJjb250cm9sL3MzLXN0YXRlIiwgImZhaWxlZCIpOw0KPiAgICAgICAgICAgICAgQ0xp
dGVBZ2VudDo6TG9nKCJTZXRTdXNwZW5kU3RhdGUgZmFpbGVkICUwOHhcbiIsIEdldExhc3RFcnJv
cigpKTsNCj4gICAgICAgICAgfQ0KPiArICAgICAgICBtX2Rldi0+U3RvcmVSZW1vdmUoImNvbnRy
b2wvc2h1dGRvd24iKTsNCj4gICAgICB9DQo+ICB9DQo+IA0KPiBAQCAtMzY3LDYgKzM3MSwxMSBA
QCB2b2lkIENMaXRlQWdlbnQ6Ok9uU3VzcGVuZCgpDQo+ICAgICAgICAgIHJldHVybjsNCj4gICAg
ICBDTGl0ZUFnZW50OjpMb2coIk9uU3VzcGVuZCgld3MpXG4iLCBtX2Rldi0+UGF0aCgpKTsNCj4g
DQo+ICsgICAgaWYgKG1fY3R4dF9zaHV0ZG93bikNCj4gKyAgICAgICAgbV9kZXYtPlN0b3JlUmVt
b3ZlV2F0Y2gobV9jdHh0X3NodXRkb3duKTsNCj4gKyAgICBtX2N0eHRfc2h1dGRvd24gPSBOVUxM
Ow0KPiArICAgIG1fZGV2LT5TdG9yZUFkZFdhdGNoKCJjb250cm9sL3NodXRkb3duIiwgbV9zaHV0
ZG93biwNCj4gJm1fY3R4dF9zaHV0ZG93bik7DQo+ICsNCg0KLi4uIHRoaXMgbG9va3MgbGlrZSBp
dCBzaG91bGQgaGF2ZSBiZWVuIGluIGFuIGV2ZW4gZWFybGllciBwYXRjaC4NCg0KICBQYXVsDQoN
Cj4gICAgICAvLyBhZHZlcnRpc2UNCj4gICAgICBtX2Rldi0+U3RvcmVXcml0ZSgiY29udHJvbC9m
ZWF0dXJlLXNodXRkb3duIiwgIjEiKTsNCj4gICAgICAvLyBzZXQgeGVuIHRpbWUNCj4gLS0NCj4g
MS45LjQubXN5c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QK
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:39:09 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:39:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhQz-0005Hb-Jm; Wed, 22 Jun 2016 12:39:09 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhQy-0005HR-Cm
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:39:08 +0000
Received: from [85.158.139.211] by server-5.bemta-5.messagelabs.com id
 E8/8B-29837-BE68A675; Wed, 22 Jun 2016 12:39:07 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRWlGSWpSXmKPExsWyU9JRQvd1W1a
 4wewmEYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCasajhBFvBdtWKu3+XMjUw/lDpYuTkkBDwk3j7
 ayojiM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V2sILawQJjE/rlrWCBqwiUOz/gIVMMBZ
 BtJzFiXCxJmEVCV2L52CVgrr4C7RPPdNrYuRi4OIYFGRomV79+AzeEEStxubQbbyyggK/GlcT
 XULnGJW08gbpAQEJBYsuc8M4QtKvHy8T9WCNtAYuvSfSwge5kFNCXW79KHaFWUmNL9kB1ir6D
 EyZlPwM4UElCR2PL4ANQYbomVn/+wTGAUnYVk2yyESbOQTJqFZNICRpZVjOrFqUVlqUW6xnpJ
 RZnpGSW5iZk5uoYGpnq5qcXFiempOYlJxXrJ+bmbGIFRwgAEOxj3/nM6xCjJwaQkyiuvnBUux
 JeUn1KZkVicEV9UmpNafIhRhoNDSYJXrhUoJ1iUmp5akZaZA4xXmLQEB4+SCK8PSJq3uCAxtz
 gzHSJ1ilFRSpx3XQtQQgAkkVGaB9cGSxGXGGWlhHkZgQ4R4ilILcrNLEGVf8UozsGoJMyrBDK
 eJzOvBG76K6DFTECLl/WngywuSURISTUwxnonzBD6WP7e1X56XH6gwO8ylk/Vz/T05r45JRV3
 vua17pIu4V0iAVJWzJ/PCLeu+LuhdZXH/Stz73xZ2BPApP57/tyFtcpFxaKvtlhOlXjqYSR/X
 MoqL7drydn5i1LvyB32lFhkfyHv9GP3w8+CZarv7t6mu9qzcQmn+6/5k2PtzniHXgmPVGIpzk
 g01GIuKk4EAEC9/j8MAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-2.tower-206.messagelabs.com!1466599147!30133913!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 65368 invoked from network); 22 Jun 2016 12:39:07 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-2.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:39:07 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786620"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 17/20] Add event log entries for suspend
 and	error
Thread-Index: AQHRtcs7I/BPBzC3L0WZHGTcvzRACp/1mn0Q
Date: Wed, 22 Jun 2016 12:39:06 +0000
Message-ID: <c2660df38d474277adf5c221ff4215f1@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-18-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-18-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 17/20] Add event log entries for suspend
 and	error
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTcvMjBdIEFkZCBldmVudCBsb2cgZW50cmllcyBmb3Igc3Vz
cGVuZA0KPiBhbmQgZXJyb3INCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4u
c21pdGhAY2l0cml4LmNvbT4NCg0KQWNrZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50
QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgfCAy
OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiAgc3JjL2xpdGVhZ2VudC9MaXRlQWdl
bnQuaCAgIHwgIDEgKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxIGRl
bGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3Bw
IGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IGluZGV4IDczOWFjYmIuLjU2OGEyY2Ig
MTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysgYi9zcmMv
bGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gQEAgLTM4LDYgKzM4LDggQEANCj4gICNpbmNsdWRl
ICJMaXRlQWdlbnQuaCINCj4gICNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCINCj4gDQo+ICsj
aW5jbHVkZSAibWVzc2FnZXMuaCINCj4gKw0KPiAgI2RlZmluZSBYRU5UT09MU19JTlNUQUxMX1JF
R19LRVkgICAiU09GVFdBUkVcXENpdHJpeFxcWGVuVG9vbHMiDQo+IA0KPiAgI2lmZGVmIF9XSU42
NA0KPiBAQCAtMTc3LDcgKzE3OSw3IEBAIHN0YXRpYyBDTGl0ZUFnZW50IHNfc2VydmljZTsNCj4g
DQo+ICBDTGl0ZUFnZW50OjpDTGl0ZUFnZW50KCkgOg0KPiAgICAgIG1faGFuZGxlKE5VTEwpLCBt
X2RldnMoR1VJRF9JTlRFUkZBQ0VfWEVOSUZBQ0UpLCBtX2RldihOVUxMKSwNCj4gLSAgICBtX2N0
eHRfc2h1dGRvd24oTlVMTCksIG1fY3R4dF9zdXNwZW5kKE5VTEwpLCBtX3VwZGF0ZSgwKQ0KPiAr
ICAgIG1fY3R4dF9zaHV0ZG93bihOVUxMKSwgbV9jdHh0X3N1c3BlbmQoTlVMTCksIG1fdXBkYXRl
KDApLA0KPiBtX2V2dGxvZyhOVUxMKQ0KPiAgew0KPiAgICAgIG1fc3RhdHVzLmR3U2VydmljZVR5
cGUgICAgICAgID0gU0VSVklDRV9XSU4zMjsNCj4gICAgICBtX3N0YXR1cy5kd0N1cnJlbnRTdGF0
ZSAgICAgICA9IFNFUlZJQ0VfU1RBUlRfUEVORElORzsNCj4gQEAgLTI5MCwxMCArMjkyLDMyIEBA
IGJvb2wgQ0xpdGVBZ2VudDo6U2VydmljZU1haW5Mb29wKCkNCj4gICAgICAgICAgYnJlYWs7DQo+
IA0KPiAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMCsyOg0KPiArICAgICAgICBpZiAobV9ldnRsb2cp
IHsNCj4gKyAgICAgICAgICAgIFJlcG9ydEV2ZW50KG1fZXZ0bG9nLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgRVZFTlRMT0dfU1VDQ0VTUywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBFVkVOVF9YRU5VU0VSX1VOU1VTUEVOREVE
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAr
ICAgICAgICB9DQo+ICAgICAgICAgIE9uU3VzcGVuZCgpOw0KPiAgICAgICAgICBicmVhazsNCj4g
DQo+ICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgaWYgKG1fZXZ0bG9nKSB7DQo+ICsgICAgICAg
ICAgICBSZXBvcnRFdmVudChtX2V2dGxvZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVW
RU5UTE9HX1NVQ0NFU1MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgRVZFTlRfWEVOVVNFUl9VTkVYUEVDVEVELA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIDAsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgICAgICB9DQo+ICAg
ICAgICAgIGJyZWFrOw0KPiAgICAgIH0NCj4gICAgICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBsb29w
aW5nDQo+IEBAIC01MzMsMTAgKzU1NywxMyBAQCB2b2lkIFdJTkFQSSBDTGl0ZUFnZW50OjpfX1Nl
cnZpY2VNYWluKGludCBhcmdjLA0KPiBjaGFyKiogYXJndikNCj4gICAgICBpZiAobV9oYW5kbGUg
PT0gTlVMTCkNCj4gICAgICAgICAgcmV0dXJuOw0KPiANCj4gKyAgICBtX2V2dGxvZyA9IFJlZ2lz
dGVyRXZlbnRTb3VyY2UoTlVMTCwgU1ZDX05BTUUpOw0KPiAgICAgIFNldFNlcnZpY2VTdGF0dXMo
U0VSVklDRV9SVU5OSU5HKTsNCj4gICAgICBPblNlcnZpY2VTdGFydCgpOw0KPiAgICAgIHdoaWxl
IChTZXJ2aWNlTWFpbkxvb3AoKSkgOw0KPiAgICAgIE9uU2VydmljZVN0b3AoKTsNCj4gKyAgICBE
ZXJlZ2lzdGVyRXZlbnRTb3VyY2UobV9ldnRsb2cpOw0KPiArICAgIG1fZXZ0bG9nID0gTlVMTDsN
Cj4gICAgICBTZXRTZXJ2aWNlU3RhdHVzKFNFUlZJQ0VfU1RPUFBFRCk7DQo+ICB9DQo+IA0KPiBk
aWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaCBiL3NyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmgNCj4gaW5kZXggNTg1NTQxNi4uYmIzYTIyZiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xp
dGVhZ2VudC9MaXRlQWdlbnQuaA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+
IEBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6IC8vIHNlcnZpY2Ugc3VwcG9ydA0KPiAgICAgIEhB
TkRMRSAgICAgICAgICAgICAgICAgIG1fc3ZjX3N0b3A7DQo+ICAgICAgSEFORExFICAgICAgICAg
ICAgICAgICAgbV9zaHV0ZG93bjsNCj4gICAgICBIQU5ETEUgICAgICAgICAgICAgICAgICBtX3N1
c3BlbmQ7DQo+ICsgICAgSEFORExFICAgICAgICAgICAgICAgICAgbV9ldnRsb2c7DQo+IA0KPiAg
ICAgIENSSVRJQ0FMX1NFQ1RJT04gICAgICAgIG1fY3JpdDsNCj4gICAgICBDRGV2aWNlTGlzdCAg
ICAgICAgICAgICBtX2RldnM7DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1k
ZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+
IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2lu
LXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Xwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:39:09 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:39:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhQz-0005Hb-Jm; Wed, 22 Jun 2016 12:39:09 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhQy-0005HR-Cm
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:39:08 +0000
Received: from [85.158.139.211] by server-5.bemta-5.messagelabs.com id
 E8/8B-29837-BE68A675; Wed, 22 Jun 2016 12:39:07 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRWlGSWpSXmKPExsWyU9JRQvd1W1a
 4wewmEYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCasajhBFvBdtWKu3+XMjUw/lDpYuTkkBDwk3j7
 ayojiM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V2sILawQJjE/rlrWCBqwiUOz/gIVMMBZ
 BtJzFiXCxJmEVCV2L52CVgrr4C7RPPdNrYuRi4OIYFGRomV79+AzeEEStxubQbbyyggK/GlcT
 XULnGJW08gbpAQEJBYsuc8M4QtKvHy8T9WCNtAYuvSfSwge5kFNCXW79KHaFWUmNL9kB1ir6D
 EyZlPwM4UElCR2PL4ANQYbomVn/+wTGAUnYVk2yyESbOQTJqFZNICRpZVjOrFqUVlqUW6xnpJ
 RZnpGSW5iZk5uoYGpnq5qcXFiempOYlJxXrJ+bmbGIFRwgAEOxj3/nM6xCjJwaQkyiuvnBUux
 JeUn1KZkVicEV9UmpNafIhRhoNDSYJXrhUoJ1iUmp5akZaZA4xXmLQEB4+SCK8PSJq3uCAxtz
 gzHSJ1ilFRSpx3XQtQQgAkkVGaB9cGSxGXGGWlhHkZgQ4R4ilILcrNLEGVf8UozsGoJMyrBDK
 eJzOvBG76K6DFTECLl/WngywuSURISTUwxnonzBD6WP7e1X56XH6gwO8ylk/Vz/T05r45JRV3
 vua17pIu4V0iAVJWzJ/PCLeu+LuhdZXH/Stz73xZ2BPApP57/tyFtcpFxaKvtlhOlXjqYSR/X
 MoqL7drydn5i1LvyB32lFhkfyHv9GP3w8+CZarv7t6mu9qzcQmn+6/5k2PtzniHXgmPVGIpzk
 g01GIuKk4EAEC9/j8MAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-2.tower-206.messagelabs.com!1466599147!30133913!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 65368 invoked from network); 22 Jun 2016 12:39:07 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-2.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:39:07 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786620"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 17/20] Add event log entries for suspend
 and	error
Thread-Index: AQHRtcs7I/BPBzC3L0WZHGTcvzRACp/1mn0Q
Date: Wed, 22 Jun 2016 12:39:06 +0000
Message-ID: <c2660df38d474277adf5c221ff4215f1@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-18-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-18-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 17/20] Add event log entries for suspend
 and	error
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTcvMjBdIEFkZCBldmVudCBsb2cgZW50cmllcyBmb3Igc3Vz
cGVuZA0KPiBhbmQgZXJyb3INCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4u
c21pdGhAY2l0cml4LmNvbT4NCg0KQWNrZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50
QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHAgfCAy
OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiAgc3JjL2xpdGVhZ2VudC9MaXRlQWdl
bnQuaCAgIHwgIDEgKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxIGRl
bGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3Bw
IGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IGluZGV4IDczOWFjYmIuLjU2OGEyY2Ig
MTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysgYi9zcmMv
bGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gQEAgLTM4LDYgKzM4LDggQEANCj4gICNpbmNsdWRl
ICJMaXRlQWdlbnQuaCINCj4gICNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCINCj4gDQo+ICsj
aW5jbHVkZSAibWVzc2FnZXMuaCINCj4gKw0KPiAgI2RlZmluZSBYRU5UT09MU19JTlNUQUxMX1JF
R19LRVkgICAiU09GVFdBUkVcXENpdHJpeFxcWGVuVG9vbHMiDQo+IA0KPiAgI2lmZGVmIF9XSU42
NA0KPiBAQCAtMTc3LDcgKzE3OSw3IEBAIHN0YXRpYyBDTGl0ZUFnZW50IHNfc2VydmljZTsNCj4g
DQo+ICBDTGl0ZUFnZW50OjpDTGl0ZUFnZW50KCkgOg0KPiAgICAgIG1faGFuZGxlKE5VTEwpLCBt
X2RldnMoR1VJRF9JTlRFUkZBQ0VfWEVOSUZBQ0UpLCBtX2RldihOVUxMKSwNCj4gLSAgICBtX2N0
eHRfc2h1dGRvd24oTlVMTCksIG1fY3R4dF9zdXNwZW5kKE5VTEwpLCBtX3VwZGF0ZSgwKQ0KPiAr
ICAgIG1fY3R4dF9zaHV0ZG93bihOVUxMKSwgbV9jdHh0X3N1c3BlbmQoTlVMTCksIG1fdXBkYXRl
KDApLA0KPiBtX2V2dGxvZyhOVUxMKQ0KPiAgew0KPiAgICAgIG1fc3RhdHVzLmR3U2VydmljZVR5
cGUgICAgICAgID0gU0VSVklDRV9XSU4zMjsNCj4gICAgICBtX3N0YXR1cy5kd0N1cnJlbnRTdGF0
ZSAgICAgICA9IFNFUlZJQ0VfU1RBUlRfUEVORElORzsNCj4gQEAgLTI5MCwxMCArMjkyLDMyIEBA
IGJvb2wgQ0xpdGVBZ2VudDo6U2VydmljZU1haW5Mb29wKCkNCj4gICAgICAgICAgYnJlYWs7DQo+
IA0KPiAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMCsyOg0KPiArICAgICAgICBpZiAobV9ldnRsb2cp
IHsNCj4gKyAgICAgICAgICAgIFJlcG9ydEV2ZW50KG1fZXZ0bG9nLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgRVZFTlRMT0dfU1VDQ0VTUywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBFVkVOVF9YRU5VU0VSX1VOU1VTUEVOREVE
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAr
ICAgICAgICB9DQo+ICAgICAgICAgIE9uU3VzcGVuZCgpOw0KPiAgICAgICAgICBicmVhazsNCj4g
DQo+ICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgaWYgKG1fZXZ0bG9nKSB7DQo+ICsgICAgICAg
ICAgICBSZXBvcnRFdmVudChtX2V2dGxvZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVW
RU5UTE9HX1NVQ0NFU1MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgRVZFTlRfWEVOVVNFUl9VTkVYUEVDVEVELA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIDAsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgICAgICB9DQo+ICAg
ICAgICAgIGJyZWFrOw0KPiAgICAgIH0NCj4gICAgICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBsb29w
aW5nDQo+IEBAIC01MzMsMTAgKzU1NywxMyBAQCB2b2lkIFdJTkFQSSBDTGl0ZUFnZW50OjpfX1Nl
cnZpY2VNYWluKGludCBhcmdjLA0KPiBjaGFyKiogYXJndikNCj4gICAgICBpZiAobV9oYW5kbGUg
PT0gTlVMTCkNCj4gICAgICAgICAgcmV0dXJuOw0KPiANCj4gKyAgICBtX2V2dGxvZyA9IFJlZ2lz
dGVyRXZlbnRTb3VyY2UoTlVMTCwgU1ZDX05BTUUpOw0KPiAgICAgIFNldFNlcnZpY2VTdGF0dXMo
U0VSVklDRV9SVU5OSU5HKTsNCj4gICAgICBPblNlcnZpY2VTdGFydCgpOw0KPiAgICAgIHdoaWxl
IChTZXJ2aWNlTWFpbkxvb3AoKSkgOw0KPiAgICAgIE9uU2VydmljZVN0b3AoKTsNCj4gKyAgICBE
ZXJlZ2lzdGVyRXZlbnRTb3VyY2UobV9ldnRsb2cpOw0KPiArICAgIG1fZXZ0bG9nID0gTlVMTDsN
Cj4gICAgICBTZXRTZXJ2aWNlU3RhdHVzKFNFUlZJQ0VfU1RPUFBFRCk7DQo+ICB9DQo+IA0KPiBk
aWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuaCBiL3NyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmgNCj4gaW5kZXggNTg1NTQxNi4uYmIzYTIyZiAxMDA2NDQNCj4gLS0tIGEvc3JjL2xp
dGVhZ2VudC9MaXRlQWdlbnQuaA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5oDQo+
IEBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6IC8vIHNlcnZpY2Ugc3VwcG9ydA0KPiAgICAgIEhB
TkRMRSAgICAgICAgICAgICAgICAgIG1fc3ZjX3N0b3A7DQo+ICAgICAgSEFORExFICAgICAgICAg
ICAgICAgICAgbV9zaHV0ZG93bjsNCj4gICAgICBIQU5ETEUgICAgICAgICAgICAgICAgICBtX3N1
c3BlbmQ7DQo+ICsgICAgSEFORExFICAgICAgICAgICAgICAgICAgbV9ldnRsb2c7DQo+IA0KPiAg
ICAgIENSSVRJQ0FMX1NFQ1RJT04gICAgICAgIG1fY3JpdDsNCj4gICAgICBDRGV2aWNlTGlzdCAg
ICAgICAgICAgICBtX2RldnM7DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1k
ZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+
IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2lu
LXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Xwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:42:05 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:42:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhTo-0005tZ-BC; Wed, 22 Jun 2016 12:42:04 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhTn-0005tS-PH
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:42:03 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 38/22-09256-B978A675; Wed, 22 Jun 2016 12:42:03 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleJIrShJLcpLzFFi42LZKekooTurPSv
 coO2GnsWfxYkOjB6HP1xhCWCMYs3MS8qvSGDNWPZiJ0vBXM2KmbubWRsYb2h0MXJySAj4SSxa
 c4URxGYT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i5WEFtYIF7iyfKNzBA1CRKtx75B2UYSH
 W2X2EFsFgFVib69E8BsXgF3iVVn3oPNFxJoZJSY8V8exOYEivfumA0WZxSQlfjSuBpql7jErS
 cQN0gICEgs2XOeGcIWlXj5+B8rhG0gsXXpPpYuRg6gek2J9bv0IVoVJaZ0P4RaKyhxcuYTFoi
 1KhJbHh+AGsMtsfLzH5YJjKKzkGybhTBpFpJJs5BMWsDIsopRvTi1qCy1SNdQL6koMz2jJDcx
 M0fX0MBMLze1uDgxPTUnMalYLzk/dxMjMEoYgGAH487nTocYJTmYlER55ZWzwoX4kvJTKjMSi
 zPii0pzUosPMWpwcAhsXrv6AqMUS15+XqqSBK9mG1CdYFFqempFWmYOMI5hSiU4eJREeBlA0r
 zFBYm5xZnpEKlTjIpS4rxzW4ESAiCJjNI8uDZY6rjEKCslzMsIdJQQT0FqUW5mCar8K0ZxDkY
 lYV4hkPE8mXklcNNfAS1mAlq8rD8dZHFJIkJKqoGxqF6o12sKb8vmQ5ec/B2et6V2HNqceaTW
 ovzpjZOMb9kSDrdFBF/gn2SgrnFkxk/nu/eS7vWoJLTy32uUX/VX4Ikcs60Qa9Rp8+3eTtLHB
 GKeqKiuXNtRajf9XNe7g+FeXFu/SdxpzX0Smrhq6lG9TpdLL1n4tH/Kry3Y1CGy9m9W6efFCX
 VKLMUZiYZazEXFiQA7sJ2YGAMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-4.tower-21.messagelabs.com!1466599322!14151470!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 46471 invoked from network); 22 Jun 2016 12:42:02 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-4.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:42:02 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786883"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 18/20] Add IOCTL_XENIFACE_LOG to dump a
 log	message to Dom0
Thread-Index: AQHRtcsOyMUk1qi77kODSu2roczsOp/1mvWQ
Date: Wed, 22 Jun 2016 12:42:01 +0000
Message-ID: <279243ef7e4b4fefaecb0608f23e203e@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-19-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-19-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 18/20] Add IOCTL_XENIFACE_LOG to dump a
	log	message to Dom0
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTgvMjBdIEFkZCBJT0NUTF9YRU5JRkFDRV9MT0cgdG8gZHVt
cCBhDQo+IGxvZyBtZXNzYWdlIHRvIERvbTANCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBpbmNsdWRlL3hlbmlmYWNlX2lv
Y3Rscy5oICB8ICA5ICsrKysrKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3RsX3N0b3JlLmMgfCAy
OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5j
ICAgICAgfCAgNSArKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICAgfCAgOCArKysr
KysrKw0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0t
Z2l0IGEvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaCBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxz
LmgNCj4gaW5kZXggYjI2MzFmNi4uZDZkMWYwMyAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS94ZW5p
ZmFjZV9pb2N0bHMuaA0KPiArKysgYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+IEBAIC0z
NjksNCArMzY5LDEzIEBAIHR5cGVkZWYgc3RydWN0DQo+IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lT
VEVSX09VVCB7DQo+ICAjZGVmaW5lIElPQ1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUUg
XA0KPiAgICAgIENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODQwLCBNRVRIT0RfQlVG
RkVSRUQsDQo+IEZJTEVfQU5ZX0FDQ0VTUykNCj4gDQo+ICsvKiEgXGJyaWVmIExvZ3MgYSBtZXNz
YWdlIHRvIERvbTANCj4gKw0KPiArICAgIElucHV0OiBOVUwtdGVybWluYXRlZCBDSEFSIGFycmF5
IGNvbnRhaW5pbmcgdGhlIG1lc3NhZ2UgdG8gbG9nDQo+ICsNCj4gKyAgICBPdXRwdXQ6IE5vbmUN
Cj4gKyovDQo+ICsjZGVmaW5lIElPQ1RMX1hFTklGQUNFX0xPRyBcDQo+ICsgICAgQ1RMX0NPREUo
RklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4NEYsIE1FVEhPRF9CVUZGRVJFRCwNCj4gRklMRV9BTllf
QUNDRVNTKQ0KPiArDQo+ICAjZW5kaWYgLy8gX1hFTklGQUNFX0lPQ1RMU19IXw0KPiBkaWZmIC0t
Z2l0IGEvc3JjL3hlbmlmYWNlL2lvY3RsX3N0b3JlLmMgYi9zcmMveGVuaWZhY2UvaW9jdGxfc3Rv
cmUuYw0KPiBpbmRleCA1YmQ0NjQ5Li5mMWM4MTZiIDEwMDY0NA0KPiAtLS0gYS9zcmMveGVuaWZh
Y2UvaW9jdGxfc3RvcmUuYw0KPiArKysgYi9zcmMveGVuaWZhY2UvaW9jdGxfc3RvcmUuYw0KPiBA
QCAtOTEsNiArOTEsMzUgQEAgX19EaXNwbGF5TXVsdGlTeigNCj4gDQo+ICBERUNMU1BFQ19OT0lO
TElORQ0KPiAgTlRTVEFUVVMNCj4gK0lvY3RsTG9nKA0KPiArICAgIF9faW4gIFBYRU5JRkFDRV9G
RE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZmZXIsDQo+ICsg
ICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcgICAg
ICAgICAgICAgT3V0TGVuDQo+ICsgICAgKQ0KPiArew0KPiArICAgIE5UU1RBVFVTICAgIHN0YXR1
czsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JVRkZFUl9TSVpFOw0KPiAr
ICAgIGlmIChJbkxlbiA9PSAwIHx8IE91dExlbiAhPSAwKQ0KPiArICAgICAgICBnb3RvIGZhaWwx
Ow0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAg
IGlmICghX19Jc1ZhbGlkU3RyKEJ1ZmZlciwgSW5MZW4pKQ0KPiArICAgICAgICBnb3RvIGZhaWwy
Ow0KPiArDQoNClNob3VsZCB0aGVyZSBiZSBhIG1heGltdW0gbGVuZ3RoIGNoZWNrIGhlcmU/IEkn
bSBhc3N1bWluZyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIgY2Fubm90IGdldCBhY2Nlc3MgdG8gdGhp
cyBpb2N0bCBidXQgZHVtcGluZyBhbiBhcmJpdHJhcnkgbGVuZ3RoIGJ1ZmZlciB0aHJvdWdoIGFu
IEkvTyBwb3J0IGlzIHByb2JhYmx5IG5vdCBzb21ldGhpbmcgd2Ugd2FudCB1c2VyLXNwYWNlIGNv
ZGUgdG8gYmUgYWJsZSB0byBkbyByZWdhcmRsZXNzLg0KDQogIFBhdWwNCg0KPiArICAgIFhlbklm
YWNlRGVidWdQcmludChJTkZPLCAiVVNFUjogJXNcbiIsIEJ1ZmZlcik7DQo+ICsgICAgcmV0dXJu
IFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJp
bnQoRVJST1IsICJGYWlsMlxuIik7DQo+ICtmYWlsMToNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJp
bnQoRVJST1IsICJGYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICsgICAgcmV0dXJuIHN0YXR1
czsNCj4gK30NCj4gKw0KPiArREVDTFNQRUNfTk9JTkxJTkUNCj4gK05UU1RBVFVTDQo+ICBJb2N0
bFN0b3JlUmVhZCgNCj4gICAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICAgICAg
X19pbiAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlm
YWNlL2lvY3Rscy5jIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5jDQo+IGluZGV4IDkyOGMyYmUuLjdm
MTcyZDcgMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiArKysgYi9zcmMv
eGVuaWZhY2UvaW9jdGxzLmMNCj4gQEAgLTI2Miw2ICsyNjIsMTEgQEAgWGVuSWZhY2VJb2N0bCgN
Cj4gICAgICAgICAgc3RhdHVzID0gSW9jdGxTaGFyZWRJbmZvR2V0VGltZShGZG8sIEJ1ZmZlciwg
SW5MZW4sIE91dExlbiwgJklycC0NCj4gPklvU3RhdHVzLkluZm9ybWF0aW9uKTsNCj4gICAgICAg
ICAgYnJlYWs7DQo+IA0KPiArICAgICAgICAvLyBtaXNjDQo+ICsgICAgY2FzZSBJT0NUTF9YRU5J
RkFDRV9MT0c6DQo+ICsgICAgICAgIHN0YXR1cyA9IElvY3RsTG9nKEZkbywgQnVmZmVyLCBJbkxl
biwgT3V0TGVuKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gICAgICBkZWZhdWx0Og0KPiAg
ICAgICAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9ERVZJQ0VfUkVRVUVTVDsNCj4gICAgICAg
ICAgYnJlYWs7DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmggYi9zcmMveGVu
aWZhY2UvaW9jdGxzLmgNCj4gaW5kZXggYzFkN2MwZi4uZDA4ZmZiNCAxMDA2NDQNCj4gLS0tIGEv
c3JjL3hlbmlmYWNlL2lvY3Rscy5oDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiBA
QCAtNDE4LDUgKzQxOCwxMyBAQCBJb2N0bFNoYXJlZEluZm9HZXRUaW1lKA0KPiAgICAgIF9fb3V0
IFBVTE9OR19QVFIgICAgICAgIEluZm8NCj4gICAgICApOw0KPiANCj4gK05UU1RBVFVTDQo+ICtJ
b2N0bExvZygNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAgX19p
biAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAg
ICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExlbg0KPiArICAg
ICk7DQo+ICsNCj4gICNlbmRpZiAvLyBfSU9DVExTX0hfDQo+IA0KPiAtLQ0KPiAxLjkuNC5tc3lz
Z2l0LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9t
YWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1i
aW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:42:05 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:42:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhTo-0005tZ-BC; Wed, 22 Jun 2016 12:42:04 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhTn-0005tS-PH
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:42:03 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 38/22-09256-B978A675; Wed, 22 Jun 2016 12:42:03 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleJIrShJLcpLzFFi42LZKekooTurPSv
 coO2GnsWfxYkOjB6HP1xhCWCMYs3MS8qvSGDNWPZiJ0vBXM2KmbubWRsYb2h0MXJySAj4SSxa
 c4URxGYT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i5WEFtYIF7iyfKNzBA1CRKtx75B2UYSH
 W2X2EFsFgFVib69E8BsXgF3iVVn3oPNFxJoZJSY8V8exOYEivfumA0WZxSQlfjSuBpql7jErS
 cQN0gICEgs2XOeGcIWlXj5+B8rhG0gsXXpPpYuRg6gek2J9bv0IVoVJaZ0P4RaKyhxcuYTFoi
 1KhJbHh+AGsMtsfLzH5YJjKKzkGybhTBpFpJJs5BMWsDIsopRvTi1qCy1SNdQL6koMz2jJDcx
 M0fX0MBMLze1uDgxPTUnMalYLzk/dxMjMEoYgGAH487nTocYJTmYlER55ZWzwoX4kvJTKjMSi
 zPii0pzUosPMWpwcAhsXrv6AqMUS15+XqqSBK9mG1CdYFFqempFWmYOMI5hSiU4eJREeBlA0r
 zFBYm5xZnpEKlTjIpS4rxzW4ESAiCJjNI8uDZY6rjEKCslzMsIdJQQT0FqUW5mCar8K0ZxDkY
 lYV4hkPE8mXklcNNfAS1mAlq8rD8dZHFJIkJKqoGxqF6o12sKb8vmQ5ec/B2et6V2HNqceaTW
 ovzpjZOMb9kSDrdFBF/gn2SgrnFkxk/nu/eS7vWoJLTy32uUX/VX4Ikcs60Qa9Rp8+3eTtLHB
 GKeqKiuXNtRajf9XNe7g+FeXFu/SdxpzX0Smrhq6lG9TpdLL1n4tH/Kry3Y1CGy9m9W6efFCX
 VKLMUZiYZazEXFiQA7sJ2YGAMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-4.tower-21.messagelabs.com!1466599322!14151470!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 46471 invoked from network); 22 Jun 2016 12:42:02 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-4.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:42:02 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24786883"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 18/20] Add IOCTL_XENIFACE_LOG to dump a
 log	message to Dom0
Thread-Index: AQHRtcsOyMUk1qi77kODSu2roczsOp/1mvWQ
Date: Wed, 22 Jun 2016 12:42:01 +0000
Message-ID: <279243ef7e4b4fefaecb0608f23e203e@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-19-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-19-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 18/20] Add IOCTL_XENIFACE_LOG to dump a
	log	message to Dom0
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTgvMjBdIEFkZCBJT0NUTF9YRU5JRkFDRV9MT0cgdG8gZHVt
cCBhDQo+IGxvZyBtZXNzYWdlIHRvIERvbTANCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBpbmNsdWRlL3hlbmlmYWNlX2lv
Y3Rscy5oICB8ICA5ICsrKysrKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3RsX3N0b3JlLmMgfCAy
OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5j
ICAgICAgfCAgNSArKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICAgfCAgOCArKysr
KysrKw0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0t
Z2l0IGEvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaCBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxz
LmgNCj4gaW5kZXggYjI2MzFmNi4uZDZkMWYwMyAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS94ZW5p
ZmFjZV9pb2N0bHMuaA0KPiArKysgYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+IEBAIC0z
NjksNCArMzY5LDEzIEBAIHR5cGVkZWYgc3RydWN0DQo+IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lT
VEVSX09VVCB7DQo+ICAjZGVmaW5lIElPQ1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUUg
XA0KPiAgICAgIENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODQwLCBNRVRIT0RfQlVG
RkVSRUQsDQo+IEZJTEVfQU5ZX0FDQ0VTUykNCj4gDQo+ICsvKiEgXGJyaWVmIExvZ3MgYSBtZXNz
YWdlIHRvIERvbTANCj4gKw0KPiArICAgIElucHV0OiBOVUwtdGVybWluYXRlZCBDSEFSIGFycmF5
IGNvbnRhaW5pbmcgdGhlIG1lc3NhZ2UgdG8gbG9nDQo+ICsNCj4gKyAgICBPdXRwdXQ6IE5vbmUN
Cj4gKyovDQo+ICsjZGVmaW5lIElPQ1RMX1hFTklGQUNFX0xPRyBcDQo+ICsgICAgQ1RMX0NPREUo
RklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4NEYsIE1FVEhPRF9CVUZGRVJFRCwNCj4gRklMRV9BTllf
QUNDRVNTKQ0KPiArDQo+ICAjZW5kaWYgLy8gX1hFTklGQUNFX0lPQ1RMU19IXw0KPiBkaWZmIC0t
Z2l0IGEvc3JjL3hlbmlmYWNlL2lvY3RsX3N0b3JlLmMgYi9zcmMveGVuaWZhY2UvaW9jdGxfc3Rv
cmUuYw0KPiBpbmRleCA1YmQ0NjQ5Li5mMWM4MTZiIDEwMDY0NA0KPiAtLS0gYS9zcmMveGVuaWZh
Y2UvaW9jdGxfc3RvcmUuYw0KPiArKysgYi9zcmMveGVuaWZhY2UvaW9jdGxfc3RvcmUuYw0KPiBA
QCAtOTEsNiArOTEsMzUgQEAgX19EaXNwbGF5TXVsdGlTeigNCj4gDQo+ICBERUNMU1BFQ19OT0lO
TElORQ0KPiAgTlRTVEFUVVMNCj4gK0lvY3RsTG9nKA0KPiArICAgIF9faW4gIFBYRU5JRkFDRV9G
RE8gICAgIEZkbywNCj4gKyAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZmZXIsDQo+ICsg
ICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcgICAg
ICAgICAgICAgT3V0TGVuDQo+ICsgICAgKQ0KPiArew0KPiArICAgIE5UU1RBVFVTICAgIHN0YXR1
czsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JVRkZFUl9TSVpFOw0KPiAr
ICAgIGlmIChJbkxlbiA9PSAwIHx8IE91dExlbiAhPSAwKQ0KPiArICAgICAgICBnb3RvIGZhaWwx
Ow0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAg
IGlmICghX19Jc1ZhbGlkU3RyKEJ1ZmZlciwgSW5MZW4pKQ0KPiArICAgICAgICBnb3RvIGZhaWwy
Ow0KPiArDQoNClNob3VsZCB0aGVyZSBiZSBhIG1heGltdW0gbGVuZ3RoIGNoZWNrIGhlcmU/IEkn
bSBhc3N1bWluZyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIgY2Fubm90IGdldCBhY2Nlc3MgdG8gdGhp
cyBpb2N0bCBidXQgZHVtcGluZyBhbiBhcmJpdHJhcnkgbGVuZ3RoIGJ1ZmZlciB0aHJvdWdoIGFu
IEkvTyBwb3J0IGlzIHByb2JhYmx5IG5vdCBzb21ldGhpbmcgd2Ugd2FudCB1c2VyLXNwYWNlIGNv
ZGUgdG8gYmUgYWJsZSB0byBkbyByZWdhcmRsZXNzLg0KDQogIFBhdWwNCg0KPiArICAgIFhlbklm
YWNlRGVidWdQcmludChJTkZPLCAiVVNFUjogJXNcbiIsIEJ1ZmZlcik7DQo+ICsgICAgcmV0dXJu
IFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJp
bnQoRVJST1IsICJGYWlsMlxuIik7DQo+ICtmYWlsMToNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJp
bnQoRVJST1IsICJGYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICsgICAgcmV0dXJuIHN0YXR1
czsNCj4gK30NCj4gKw0KPiArREVDTFNQRUNfTk9JTkxJTkUNCj4gK05UU1RBVFVTDQo+ICBJb2N0
bFN0b3JlUmVhZCgNCj4gICAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICAgICAg
X19pbiAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlm
YWNlL2lvY3Rscy5jIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5jDQo+IGluZGV4IDkyOGMyYmUuLjdm
MTcyZDcgMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiArKysgYi9zcmMv
eGVuaWZhY2UvaW9jdGxzLmMNCj4gQEAgLTI2Miw2ICsyNjIsMTEgQEAgWGVuSWZhY2VJb2N0bCgN
Cj4gICAgICAgICAgc3RhdHVzID0gSW9jdGxTaGFyZWRJbmZvR2V0VGltZShGZG8sIEJ1ZmZlciwg
SW5MZW4sIE91dExlbiwgJklycC0NCj4gPklvU3RhdHVzLkluZm9ybWF0aW9uKTsNCj4gICAgICAg
ICAgYnJlYWs7DQo+IA0KPiArICAgICAgICAvLyBtaXNjDQo+ICsgICAgY2FzZSBJT0NUTF9YRU5J
RkFDRV9MT0c6DQo+ICsgICAgICAgIHN0YXR1cyA9IElvY3RsTG9nKEZkbywgQnVmZmVyLCBJbkxl
biwgT3V0TGVuKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gICAgICBkZWZhdWx0Og0KPiAg
ICAgICAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9ERVZJQ0VfUkVRVUVTVDsNCj4gICAgICAg
ICAgYnJlYWs7DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmggYi9zcmMveGVu
aWZhY2UvaW9jdGxzLmgNCj4gaW5kZXggYzFkN2MwZi4uZDA4ZmZiNCAxMDA2NDQNCj4gLS0tIGEv
c3JjL3hlbmlmYWNlL2lvY3Rscy5oDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiBA
QCAtNDE4LDUgKzQxOCwxMyBAQCBJb2N0bFNoYXJlZEluZm9HZXRUaW1lKA0KPiAgICAgIF9fb3V0
IFBVTE9OR19QVFIgICAgICAgIEluZm8NCj4gICAgICApOw0KPiANCj4gK05UU1RBVFVTDQo+ICtJ
b2N0bExvZygNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAgX19p
biAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAg
ICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExlbg0KPiArICAg
ICk7DQo+ICsNCj4gICNlbmRpZiAvLyBfSU9DVExTX0hfDQo+IA0KPiAtLQ0KPiAxLjkuNC5tc3lz
Z2l0LjENCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9t
YWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1i
aW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:44:06 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:44:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhVl-00061t-TF; Wed, 22 Jun 2016 12:44:05 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhVk-00061h-Ux
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:44:05 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
 0B/75-01707-4188A675; Wed, 22 Jun 2016 12:44:04 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQle4Iyv
 c4Op9dYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCaca6vnbXggGJFR/dClgbGDsUuRk4OCQE/ia/n
 p7GD2GwCOhJLj85nArFFBAokvr+fxwxiMwuoSVzf38UKYgsLhEmcm3iDEaImXGL5gjksELaRx
 P79y8FqWARUJTpXXAabwyvgLrF34jKg+VwcQgKNjBJ7r7WygSQ4gRI3vp4HG8QoICvxpXE11D
 JxiVtPII6QEBCQWLLnPDOELSrx8vE/VgjbQGLr0n1AizmA6jUl1u/Sh2hVlJjS/ZAdYq+gxMm
 ZT8BuExJQkdjy+ADUGG6JlZ//sExgFJ2FZNsshEmzkEyahWTSAkaWVYzqxalFZalFuoZ6SUWZ
 6RkluYmZObqGhiZ6uanFxYnpqTmJScV6yfm5mxiBccIABDsYj3Y6H2KU5GBSEuWVV84KF+JLy
 k+pzEgszogvKs1JLT7EKMPBoSTBK9cKlBMsSk1PrUjLzAFGLExagoNHSYTXByTNW1yQmFucmQ
 6ROsWoKCXOqw2SEABJZJTmwbXBksQlRlkpYV5GoEOEeApSi3IzS1DlXzGKczAqCfNmgUzhycw
 rgZv+CmgxE9DiZf3pIItLEhFSUg2M2+zuye1WLWRQ5gqe9UJT2yHucnuIwM/odSp1S+JX7+wJ
 mfM99IKv6JGsxsI5XTUKbJwfT336eGRTTsAlv8OvP8bF3Urc98bo3d69XVOPFDHpPNy27RkfF
 7+uu9HHNOYta2PvbpS7b2Nhd15tP3uCru8FdvP+Iyte6EnKqppp9ZzW9z7fYO2oxFKckWioxV
 xUnAgAKEqW8g0DAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1466599443!48935056!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 49972 invoked from network); 22 Jun 2016 12:44:03 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:44:03 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24787115"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 19/20] Dynamically allocate the buffer for
 logging
Thread-Index: AQHRtcsuwsJkv37Mq0mey7F6Oj6Hm5/1m9GA
Date: Wed, 22 Jun 2016 12:44:02 +0000
Message-ID: <db172bc6b09745ea89ab1046d39344a2@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-20-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-20-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 19/20] Dynamically allocate the buffer
	for	logging
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTkvMjBdIER5bmFtaWNhbGx5IGFsbG9jYXRlIHRoZSBidWZm
ZXIgZm9yDQo+IGxvZ2dpbmcNCj4gDQo+IEFsbG93cyBsb2cgbWVzc2FnZXMgbG9uZ2VyIHRoYW4g
MjU1IGNoYXJhY3RlcnMNCj4NCg0KVGhlIHBhdGNoIGFsc28gc2VlbXMgdG8gaGF2ZSBleHBhbmRl
ZCB0aGUgc2NvcGUgb2YgdGhlIGxvZyBmdW5jdGlvbiwgYnV0IHRoZXJlJ3Mgbm8gY29tbWVudCB0
byBqdXN0aWZ5IHRoaXMuDQoNCiAgUGF1bA0KDQogDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVB
Z2VudC5jcHAgICB8IDIxICsrKysrKysrKysrKysrKysrKystLQ0KPiAgc3JjL2xpdGVhZ2VudC9Y
ZW5JZmFjZUl0Zi5jcHAgfCAxMiArKysrKysrKysrKy0NCj4gIHNyYy9saXRlYWdlbnQvWGVuSWZh
Y2VJdGYuaCAgIHwgIDMgKysrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyks
IDMgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdl
bnQuY3BwIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IGluZGV4IDU2OGEyY2IuLjg1
OTlkNTIgMTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysg
Yi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gQEAgLTc5LDE0ICs3OSwzMSBAQCBzdGF0
aWMgQ0xpdGVBZ2VudCBzX3NlcnZpY2U7DQo+IA0KPiAgLypzdGF0aWMqLyB2b2lkIENMaXRlQWdl
bnQ6OkxvZyhjb25zdCBjaGFyKiBmbXQsIC4uLikNCj4gIHsNCj4gLSAgICBjaGFyIG1lc3NhZ2Vb
MjU2XTsNCj4gKyAgICBjaGFyKiBtZXNzYWdlOw0KPiArICAgIHNpemVfdCBsZW5ndGg7DQo+ICAg
ICAgdmFfbGlzdCBhcmdzOw0KPiANCj4gICAgICB2YV9zdGFydChhcmdzLCBmbXQpOw0KPiAtICAg
IHZzbnByaW50Zl9zKG1lc3NhZ2UsIHNpemVvZihtZXNzYWdlKSwNCj4gc2l6ZW9mKG1lc3NhZ2Up
L3NpemVvZihtZXNzYWdlWzBdKSAtIDEsIGZtdCwgYXJncyk7DQo+ICsgICAgbGVuZ3RoID0gX3Zz
Y3ByaW50ZihmbXQsIGFyZ3MpOw0KPiAgICAgIHZhX2VuZChhcmdzKTsNCj4gDQo+ICsgICAgbWVz
c2FnZSA9IG5ldyBjaGFyW2xlbmd0aCArIDFdOw0KPiArICAgIGlmIChtZXNzYWdlID09IE5VTEwp
DQo+ICsgICAgICAgIHJldHVybjsNCj4gKw0KPiArICAgIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7DQo+
ICsgICAgdnNucHJpbnRmX3MobWVzc2FnZSwgKGxlbmd0aCArIDEpICogc2l6ZW9mKGNoYXIpLCBs
ZW5ndGgsIGZtdCwgYXJncyk7DQo+ICsgICAgdmFfZW5kKGFyZ3MpOw0KPiArDQo+ICsgICAgbWVz
c2FnZVtsZW5ndGhdID0gMDsNCj4gICAgICBPdXRwdXREZWJ1Z1N0cmluZyhtZXNzYWdlKTsNCj4g
Kw0KPiArICAgIENDcml0U2VjIGNyaXQoJnNfc2VydmljZS5tX2NyaXQpOw0KPiArICAgIGlmIChz
X3NlcnZpY2UubV9kZXYpIHsNCj4gKyAgICAgICAgc19zZXJ2aWNlLm1fZGV2LT5Mb2cobWVzc2Fn
ZSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgZGVsZXRlIFtdIG1lc3NhZ2U7DQo+ICB9DQo+IA0K
PiAgLypzdGF0aWMqLyBpbnQgQ0xpdGVBZ2VudDo6U2VydmljZUluc3RhbGwoKQ0KPiBkaWZmIC0t
Z2l0IGEvc3JjL2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5jcHAgYi9zcmMvbGl0ZWFnZW50L1hlbklm
YWNlSXRmLmNwcA0KPiBpbmRleCA3ZTVmYWRmLi4yMDI3NzY2IDEwMDY0NA0KPiAtLS0gYS9zcmMv
bGl0ZWFnZW50L1hlbklmYWNlSXRmLmNwcA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L1hlbklmYWNl
SXRmLmNwcA0KPiBAQCAtMTQyLDQgKzE0MiwxNCBAQCBib29sIENYZW5JZmFjZUl0Zjo6U2hhcmVk
SW5mb0dldFRpbWUoRklMRVRJTUUqDQo+IHRpbWUpDQo+ICAgICAgcmV0dXJuIElvY3RsKElPQ1RM
X1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUUsDQo+ICAgICAgICAgICAgICAgICAgIE5VTEws
IDAsDQo+ICAgICAgICAgICAgICAgICAgIHRpbWUsIHNpemVvZihGSUxFVElNRSkpOw0KPiAtfQ0K
PiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCj4gK30NCj4gKw0KPiArLy8gbWlzYw0KPiAr
Ym9vbCBDWGVuSWZhY2VJdGY6OkxvZyhjb25zdCBzdGQ6OnN0cmluZyYgbXNnKQ0KPiArew0KPiAr
ICAgIHJldHVybiBJb2N0bChJT0NUTF9YRU5JRkFDRV9MT0csDQo+ICsgICAgICAgICAgICAgICAg
ICh2b2lkKiltc2cuY19zdHIoKSwgKERXT1JEKW1zZy5sZW5ndGgoKSArIDEsDQo+ICsgICAgICAg
ICAgICAgICAgIE5VTEwsIDApOw0KPiArfQ0KPiArDQo+ICsNCj4gZGlmZiAtLWdpdCBhL3NyYy9s
aXRlYWdlbnQvWGVuSWZhY2VJdGYuaCBiL3NyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuaA0KPiBp
bmRleCBlMzZmMTg5Li4wZWY0MmE4IDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L1hlbklm
YWNlSXRmLmgNCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5oDQo+IEBAIC01NSw2
ICs1NSw5IEBAIHB1YmxpYzogLy8gc3VzcGVuZCBpbnRlcmZhY2UNCj4gDQo+ICBwdWJsaWM6IC8v
IHNoYXJlZGluZm8gaW50ZXJmYWNlDQo+ICAgICAgYm9vbCBTaGFyZWRJbmZvR2V0VGltZShGSUxF
VElNRSogdGltZSk7DQo+ICsNCj4gK3B1YmxpYzogLy8gbWlzYw0KPiArICAgIGJvb2wgTG9nKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtc2cpOw0KPiAgfTsNCj4gDQo+ICAjZW5kaWYNCj4gLS0NCj4gMS45
LjQubXN5c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2Nn
aS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2lu
LXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:44:06 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:44:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhVl-00061t-TF; Wed, 22 Jun 2016 12:44:05 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhVk-00061h-Ux
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:44:05 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
 0B/75-01707-4188A675; Wed, 22 Jun 2016 12:44:04 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQle4Iyv
 c4Op9dYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCaca6vnbXggGJFR/dClgbGDsUuRk4OCQE/ia/n
 p7GD2GwCOhJLj85nArFFBAokvr+fxwxiMwuoSVzf38UKYgsLhEmcm3iDEaImXGL5gjksELaRx
 P79y8FqWARUJTpXXAabwyvgLrF34jKg+VwcQgKNjBJ7r7WygSQ4gRI3vp4HG8QoICvxpXE11D
 JxiVtPII6QEBCQWLLnPDOELSrx8vE/VgjbQGLr0n1AizmA6jUl1u/Sh2hVlJjS/ZAdYq+gxMm
 ZT8BuExJQkdjy+ADUGG6JlZ//sExgFJ2FZNsshEmzkEyahWTSAkaWVYzqxalFZalFuoZ6SUWZ
 6RkluYmZObqGhiZ6uanFxYnpqTmJScV6yfm5mxiBccIABDsYj3Y6H2KU5GBSEuWVV84KF+JLy
 k+pzEgszogvKs1JLT7EKMPBoSTBK9cKlBMsSk1PrUjLzAFGLExagoNHSYTXByTNW1yQmFucmQ
 6ROsWoKCXOqw2SEABJZJTmwbXBksQlRlkpYV5GoEOEeApSi3IzS1DlXzGKczAqCfNmgUzhycw
 rgZv+CmgxE9DiZf3pIItLEhFSUg2M2+zuye1WLWRQ5gqe9UJT2yHucnuIwM/odSp1S+JX7+wJ
 mfM99IKv6JGsxsI5XTUKbJwfT336eGRTTsAlv8OvP8bF3Urc98bo3d69XVOPFDHpPNy27RkfF
 7+uu9HHNOYta2PvbpS7b2Nhd15tP3uCru8FdvP+Iyte6EnKqppp9ZzW9z7fYO2oxFKckWioxV
 xUnAgAKEqW8g0DAAA=
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1466599443!48935056!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 49972 invoked from network); 22 Jun 2016 12:44:03 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:44:03 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24787115"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 19/20] Dynamically allocate the buffer for
 logging
Thread-Index: AQHRtcsuwsJkv37Mq0mey7F6Oj6Hm5/1m9GA
Date: Wed, 22 Jun 2016 12:44:02 +0000
Message-ID: <db172bc6b09745ea89ab1046d39344a2@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-20-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-20-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 19/20] Dynamically allocate the buffer
	for	logging
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMTkvMjBdIER5bmFtaWNhbGx5IGFsbG9jYXRlIHRoZSBidWZm
ZXIgZm9yDQo+IGxvZ2dpbmcNCj4gDQo+IEFsbG93cyBsb2cgbWVzc2FnZXMgbG9uZ2VyIHRoYW4g
MjU1IGNoYXJhY3RlcnMNCj4NCg0KVGhlIHBhdGNoIGFsc28gc2VlbXMgdG8gaGF2ZSBleHBhbmRl
ZCB0aGUgc2NvcGUgb2YgdGhlIGxvZyBmdW5jdGlvbiwgYnV0IHRoZXJlJ3Mgbm8gY29tbWVudCB0
byBqdXN0aWZ5IHRoaXMuDQoNCiAgUGF1bA0KDQogDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBzcmMvbGl0ZWFnZW50L0xpdGVB
Z2VudC5jcHAgICB8IDIxICsrKysrKysrKysrKysrKysrKystLQ0KPiAgc3JjL2xpdGVhZ2VudC9Y
ZW5JZmFjZUl0Zi5jcHAgfCAxMiArKysrKysrKysrKy0NCj4gIHNyYy9saXRlYWdlbnQvWGVuSWZh
Y2VJdGYuaCAgIHwgIDMgKysrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyks
IDMgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL2xpdGVhZ2VudC9MaXRlQWdl
bnQuY3BwIGIvc3JjL2xpdGVhZ2VudC9MaXRlQWdlbnQuY3BwDQo+IGluZGV4IDU2OGEyY2IuLjg1
OTlkNTIgMTAwNjQ0DQo+IC0tLSBhL3NyYy9saXRlYWdlbnQvTGl0ZUFnZW50LmNwcA0KPiArKysg
Yi9zcmMvbGl0ZWFnZW50L0xpdGVBZ2VudC5jcHANCj4gQEAgLTc5LDE0ICs3OSwzMSBAQCBzdGF0
aWMgQ0xpdGVBZ2VudCBzX3NlcnZpY2U7DQo+IA0KPiAgLypzdGF0aWMqLyB2b2lkIENMaXRlQWdl
bnQ6OkxvZyhjb25zdCBjaGFyKiBmbXQsIC4uLikNCj4gIHsNCj4gLSAgICBjaGFyIG1lc3NhZ2Vb
MjU2XTsNCj4gKyAgICBjaGFyKiBtZXNzYWdlOw0KPiArICAgIHNpemVfdCBsZW5ndGg7DQo+ICAg
ICAgdmFfbGlzdCBhcmdzOw0KPiANCj4gICAgICB2YV9zdGFydChhcmdzLCBmbXQpOw0KPiAtICAg
IHZzbnByaW50Zl9zKG1lc3NhZ2UsIHNpemVvZihtZXNzYWdlKSwNCj4gc2l6ZW9mKG1lc3NhZ2Up
L3NpemVvZihtZXNzYWdlWzBdKSAtIDEsIGZtdCwgYXJncyk7DQo+ICsgICAgbGVuZ3RoID0gX3Zz
Y3ByaW50ZihmbXQsIGFyZ3MpOw0KPiAgICAgIHZhX2VuZChhcmdzKTsNCj4gDQo+ICsgICAgbWVz
c2FnZSA9IG5ldyBjaGFyW2xlbmd0aCArIDFdOw0KPiArICAgIGlmIChtZXNzYWdlID09IE5VTEwp
DQo+ICsgICAgICAgIHJldHVybjsNCj4gKw0KPiArICAgIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7DQo+
ICsgICAgdnNucHJpbnRmX3MobWVzc2FnZSwgKGxlbmd0aCArIDEpICogc2l6ZW9mKGNoYXIpLCBs
ZW5ndGgsIGZtdCwgYXJncyk7DQo+ICsgICAgdmFfZW5kKGFyZ3MpOw0KPiArDQo+ICsgICAgbWVz
c2FnZVtsZW5ndGhdID0gMDsNCj4gICAgICBPdXRwdXREZWJ1Z1N0cmluZyhtZXNzYWdlKTsNCj4g
Kw0KPiArICAgIENDcml0U2VjIGNyaXQoJnNfc2VydmljZS5tX2NyaXQpOw0KPiArICAgIGlmIChz
X3NlcnZpY2UubV9kZXYpIHsNCj4gKyAgICAgICAgc19zZXJ2aWNlLm1fZGV2LT5Mb2cobWVzc2Fn
ZSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgZGVsZXRlIFtdIG1lc3NhZ2U7DQo+ICB9DQo+IA0K
PiAgLypzdGF0aWMqLyBpbnQgQ0xpdGVBZ2VudDo6U2VydmljZUluc3RhbGwoKQ0KPiBkaWZmIC0t
Z2l0IGEvc3JjL2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5jcHAgYi9zcmMvbGl0ZWFnZW50L1hlbklm
YWNlSXRmLmNwcA0KPiBpbmRleCA3ZTVmYWRmLi4yMDI3NzY2IDEwMDY0NA0KPiAtLS0gYS9zcmMv
bGl0ZWFnZW50L1hlbklmYWNlSXRmLmNwcA0KPiArKysgYi9zcmMvbGl0ZWFnZW50L1hlbklmYWNl
SXRmLmNwcA0KPiBAQCAtMTQyLDQgKzE0MiwxNCBAQCBib29sIENYZW5JZmFjZUl0Zjo6U2hhcmVk
SW5mb0dldFRpbWUoRklMRVRJTUUqDQo+IHRpbWUpDQo+ICAgICAgcmV0dXJuIElvY3RsKElPQ1RM
X1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUUsDQo+ICAgICAgICAgICAgICAgICAgIE5VTEws
IDAsDQo+ICAgICAgICAgICAgICAgICAgIHRpbWUsIHNpemVvZihGSUxFVElNRSkpOw0KPiAtfQ0K
PiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCj4gK30NCj4gKw0KPiArLy8gbWlzYw0KPiAr
Ym9vbCBDWGVuSWZhY2VJdGY6OkxvZyhjb25zdCBzdGQ6OnN0cmluZyYgbXNnKQ0KPiArew0KPiAr
ICAgIHJldHVybiBJb2N0bChJT0NUTF9YRU5JRkFDRV9MT0csDQo+ICsgICAgICAgICAgICAgICAg
ICh2b2lkKiltc2cuY19zdHIoKSwgKERXT1JEKW1zZy5sZW5ndGgoKSArIDEsDQo+ICsgICAgICAg
ICAgICAgICAgIE5VTEwsIDApOw0KPiArfQ0KPiArDQo+ICsNCj4gZGlmZiAtLWdpdCBhL3NyYy9s
aXRlYWdlbnQvWGVuSWZhY2VJdGYuaCBiL3NyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYuaA0KPiBp
bmRleCBlMzZmMTg5Li4wZWY0MmE4IDEwMDY0NA0KPiAtLS0gYS9zcmMvbGl0ZWFnZW50L1hlbklm
YWNlSXRmLmgNCj4gKysrIGIvc3JjL2xpdGVhZ2VudC9YZW5JZmFjZUl0Zi5oDQo+IEBAIC01NSw2
ICs1NSw5IEBAIHB1YmxpYzogLy8gc3VzcGVuZCBpbnRlcmZhY2UNCj4gDQo+ICBwdWJsaWM6IC8v
IHNoYXJlZGluZm8gaW50ZXJmYWNlDQo+ICAgICAgYm9vbCBTaGFyZWRJbmZvR2V0VGltZShGSUxF
VElNRSogdGltZSk7DQo+ICsNCj4gK3B1YmxpYzogLy8gbWlzYw0KPiArICAgIGJvb2wgTG9nKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtc2cpOw0KPiAgfTsNCj4gDQo+ICAjZW5kaWYNCj4gLS0NCj4gMS45
LjQubXN5c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2Nn
aS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2lu
LXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:51:19 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:51:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhcj-0006dZ-FZ; Wed, 22 Jun 2016 12:51:17 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhch-0006dT-Rt
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:51:15 +0000
Received: from [85.158.143.35] by server-2.bemta-6.messagelabs.com id
 B1/B2-11548-3C98A675; Wed, 22 Jun 2016 12:51:15 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRWlGSWpSXmKPExsWyU9JRQvdQZ1a
 4weJzEhZ/Fic6MHoc/nCFJYAxijUzLym/IoE148KnJuaCraYV77oPMzcw3jHpYuTkkBDwk2jp
 ms0MYrMJ6EgsPTqfCcQWESiQ+P5+HlicWUBN4vr+LlYQW1ggSmLByk+MEDXREvsWX2CFsI0kV
 ly5DWazCKhKXP6yAayGV8Bd4t2XrywgtpCAq8TnTd/B4pwCbhLvPtwHizMKyEp8aVwNtUtc4t
 YTiBskBAQkluw5zwxhi0q8fPyPFcI2kNi6dB9QLwdQvabE+l36EK2KElO6H7JDrBWUODnzCdR
 aFYktjw9AjeGWWPn5D8sERtFZSLbNQpg0C8mkWUgmLWBkWcWoXpxaVJZapGuol1SUmZ5RkpuY
 maNraGCml5taXJyYnpqTmFSsl5yfu4kRGCUMQLCDcedzp0OMkhxMSqK88spZ4UJ8SfkplRmJx
 RnxRaU5qcWHGGU4OJQkeOvagXKCRanpqRVpmTnAeIVJS3DwKInwXuoASvMWFyTmFmemQ6ROMS
 pKifMmgyQEQBIZpXlwbbAUcYlRVkqYlxHoECGegtSi3MwSVPlXjOIcjErCvCtApvBk5pXATX8
 FtJgJaPGy/nSQxSWJCCmpBsaSf3J1q4J1LW3bf/UvSfp8+0XNgdZ765KzvW7MOxdSW1TMrCJh
 yWXwMGvZtENq+9s+T36YbRic4KQZ/py3xUBAZv3/l1GPnKUvinQs+3g962aW4Rb9m3PPrprsL
 mp30UdD5B1buKys3Iz/vHqp/ola0n2Ne11/zywtfbxG/4bZNJtnBo8Tg5VYijMSDbWYi4oTAQ
 oTKqMMAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-15.tower-21.messagelabs.com!1466599874!20200358!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25934 invoked from network); 22 Jun 2016 12:51:14 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-15.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:51:14 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24787686"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 00/20] Use IOCTL interface instead of WMI
 in	liteagent
Thread-Index: AQHRtce2tZP4g091BEy3aqdHwUl4op/1nTbw
Date: Wed, 22 Jun 2016 12:51:13 +0000
Message-ID: <5e84112689a64ad0a92ccc8b05367e46@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 00/20] Use IOCTL interface instead of WMI
 in	liteagent
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDAvMjBdIFVzZSBJT0NUTCBpbnRlcmZhY2UgaW5zdGVhZCBv
ZiBXTUkgaW4NCj4gbGl0ZWFnZW50DQo+IA0KPiBUaGUgV01JIGhhbmRsZXIgaW4gdGhlIGxpdGVh
Z2VudCBkb2VzIG5vdCByZWNvdmVyIGZyb20geGVuaWZhY2UNCj4gZGlzYWJsZS9lbmFibGUuIFRo
ZSBsaXRlYWdlbnQgYWxzbyBjb250YWlucyBhIG5vLWxvbmdlci1uZWNlc3NhcnkNCj4gb3Zlcnkg
Y29tcGxpY2F0ZWQgZGVzaWduLCBoYXZpbmcgZXZvbHZlZCBmcm9tIGEgWGVuU2VydmVyIGFnZW50
Lg0KPiANCj4gVGhlc2UgcGF0Y2hlZCBhZGQgZXh0cmEgSU9DVExzIHRvIFhlbklmYWNlLCBhbmQg
cmVwbGFjZSB0aGUgbGl0ZWFnZW50DQo+IHdpdGggYSBzaW1wbGlmaWVkIFBuUCBhd2FyZSBzZXJ2
aWNlLg0KPiANCj4gT3dlbiBTbWl0aCAoMjApOg0KPiAgIEFkZCBTVVNQRU5EIGludGVyZmFjZSBJ
T0NUTHMNCj4gICBBZGQgU0hBUkVESU5GTyBpbnRlcmZhY2UgSU9DVEwNCj4gICBBZGQgSVJQX01K
X0NMRUFOVVAgaGFuZGxlciB0aGF0IGNhbGxzIFhlbklmYWNlQ2xlYW51cA0KPiAgIFJlbW92ZSB3
aW4zMnN0dWJhZ2VudA0KPiAgIEFkZCBiYXNlIGRvLW5vdGhpbmcgc2VydmljZQ0KPiAgIEFkZCBE
ZXZpY2VMaXN0DQo+ICAgVHJhY2sgYSBzaW5nbGUgZGV2aWNlIGluIHRoZSBzZXJ2aWNlLg0KPiAg
IEFkZCBYZW5JZmFjZUl0Zg0KPiAgIFJlc29sdmUgbGlmZWN5Y2xlIGJ1Z3MNCj4gICBBZGQgU2Vy
dmljZUluc3RhbGwgYW5kIGFkZGl0aW9uYWwgZXZlbnRzDQo+ICAgQWRkIFNldHVwL3RlYXJkb3du
IG9mIGFjdGl2ZSBkZXZpY2UgYW5kIGxvZ2dpbmcgdG8NCj4gICAgIE9uU3VzcGVuZC9PblNodXRk
b3duDQo+ICAgRml4IHByZWNvbXBpbGVkIGhlYWRlcnMgb24gY2hlY2tlZCBidWlsZHMNCj4gICBB
ZGQgU2V0WGVuVGltZSBmdW5jdGlvbmFsaXR5DQo+ICAgUHJvdGVjdCBhY3RpdmUgZGV2aWNlIHdp
dGggY3JpdGljYWwgc2VjdGlvbg0KPiAgIEFkZCBPblNodXRkb3duIGhhbmRsZXIgdG8gcG93ZXJv
ZmYvaGFsdC9yZWJvb3QvaGliZXJuYXRlL3MzIFZNDQo+ICAgT25seSBhY2tub3dsZWRnZSB0aGUg
c2h1dGRvd24gaWYgdHlwZSBpcyBrbm93bg0KPiAgIEFkZCBldmVudCBsb2cgZW50cmllcyBmb3Ig
c3VzcGVuZCBhbmQgZXJyb3INCj4gICBBZGQgSU9DVExfWEVOSUZBQ0VfTE9HIHRvIGR1bXAgYSBs
b2cgbWVzc2FnZSB0byBEb20wDQo+ICAgRHluYW1pY2FsbHkgYWxsb2NhdGUgdGhlIGJ1ZmZlciBm
b3IgbG9nZ2luZw0KPiAgIElvY3RsTG9nIGhhbmRsZXIgc2hvdWxkbnQgYmUgaW4gd2l0aCB0aGUg
c3RvcmUgSU9DVExzLCBhbmQgZG9udA0KPiAgICAgZmFpbCBvbiAvbi9yIGluIGxvZyBtZXNzYWdl
cw0KPg0KDQpNb3N0IG9mLCBpZiBub3QgYWxsIG9mLCB0aGVzZSBwYXRjaGVzIGVuZGVkIHVwIGJh
c2U2NCBlbmNvZGVkLiBQbGVhc2UgZW5zdXJlIG5vIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHdoZXJl
IHBvc3NpYmxlIHRvIGF2b2lkIHRoaXMuIEZvciBpdGVtcyB0aGF0IG11c3QgYmUgbm9uLWFzY2lp
LCBzdWNoIGFzIHRoZSBpY29uIGZpbGUsIGl0J3MgcHJvYmFibHkgYmVzdCB0byBicmVhayB0aGVt
IG91dCBpbnRvIGEgc2VwYXJhdGUgcGF0Y2guDQoNClRoYW5rcywNCg0KICBQYXVsIA0KIA0KPiAg
aW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaCAgICAgICAgICB8ICAgNTUgKysNCj4gIHNyYy9saXRl
YWdlbnQvRGV2aWNlTGlzdC5jcHAgICAgICAgfCAgMzAwICsrKysrKysrDQo+ICBzcmMvbGl0ZWFn
ZW50L0RldmljZUxpc3QuaCAgICAgICAgIHwgICA5MyArKysNCj4gIHNyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmNwcCAgICAgICAgfCAgNjE4ICsrKysrKysrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC5oICAgICAgICAgIHwgIDEwMCArKysNCj4gIHNyYy9saXRlYWdlbnQvWGVu
SWZhY2VJdGYuY3BwICAgICAgfCAgMTU1ICsrKysrDQo+ICBzcmMvbGl0ZWFnZW50L1hlbklmYWNl
SXRmLmggICAgICAgIHwgICA2MyArKw0KPiAgc3JjL2xpdGVhZ2VudC9saXRlYWdlbnQucmMgICAg
ICAgICB8ICAgNjAgKysNCj4gIHNyYy9saXRlYWdlbnQvbWVzc2FnZXMubWMgICAgICAgICAgfCAg
IDY2ICsrDQo+ICBzcmMvbGl0ZWFnZW50L3hlbi5pY28gICAgICAgICAgICAgIHwgIEJpbiAwIC0+
IDI1MjE0IGJ5dGVzDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvV21pQWNjZXNzb3IuY3BwIHwgMTMz
MSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIHNyYy93aW4zMnN0dWJh
Z2VudC9XbWlBY2Nlc3Nvci5oICAgfCAgIDg4IC0tLQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L1hT
QWNjZXNzb3IuY3BwICB8ICAyMzAgLS0tLS0tLQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L1hTQWNj
ZXNzb3IuaCAgICB8ICAxMjYgLS0tLQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L1hTZXJ2aWNlLmNw
cCAgICB8IDEwNDQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgc3JjL3dpbjMyc3R1
YmFnZW50L1hTZXJ2aWNlLmggICAgICB8ICAgNTQgLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9l
cnJvcnMuY3BwICAgICAgfCAgMTAyIC0tLQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L21lc3NhZ2Vz
Lm1jICAgICB8ICAgNjYgLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9zdGRhZnguY3BwICAgICAg
fCAgIDM5IC0tDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvc3RkYWZ4LmggICAgICAgIHwgICA0MyAt
LQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L3czMnhhZ2VudC5yYyAgICB8ICAgNjAgLS0NCj4gIHNy
Yy93aW4zMnN0dWJhZ2VudC94ZW4uaWNvICAgICAgICAgfCAgQmluIDI1MjE0IC0+IDAgYnl0ZXMN
Cj4gIHNyYy94ZW5pZmFjZS9mZG8uYyAgICAgICAgICAgICAgICAgfCAgIDM1ICsNCj4gIHNyYy94
ZW5pZmFjZS9mZG8uaCAgICAgICAgICAgICAgICAgfCAgICAzICsNCj4gIHNyYy94ZW5pZmFjZS9p
b2N0bF9zaGFyZWRpbmZvLmMgICAgfCAgIDcwICsrDQo+ICBzcmMveGVuaWZhY2UvaW9jdGxfc3Vz
cGVuZC5jICAgICAgIHwgIDIyMyArKysrKysNCj4gIHNyYy94ZW5pZmFjZS9pb2N0bHMuYyAgICAg
ICAgICAgICAgfCAgIDkxICsrLQ0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICAgICAgICAg
ICB8ICAgNjMgKysNCj4gIHZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2ogfCAgIDUw
ICstDQo+ICB2czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvaiAgIHwgICAgMiArDQo+ICB2
czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgICA0NyArLQ0KPiAgdnMyMDEzL3hl
bmlmYWNlL3hlbmlmYWNlLnZjeHByb2ogICB8ICAgIDIgKw0KPiAgMzIgZmlsZXMgY2hhbmdlZCwg
MjAxNyBpbnNlcnRpb25zKCspLCAzMjYyIGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAw
NjQ0IHNyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHANCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBz
cmMvbGl0ZWFnZW50L0RldmljZUxpc3QuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saXRl
YWdlbnQvTGl0ZUFnZW50LmNwcA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQv
TGl0ZUFnZW50LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGl0ZWFnZW50L1hlbklmYWNl
SXRmLmNwcA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYu
aA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQvbGl0ZWFnZW50LnJjDQo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpdGVhZ2VudC9tZXNzYWdlcy5tYw0KPiAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQveGVuLmljbw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNy
Yy93aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5jcHANCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBz
cmMvd2luMzJzdHViYWdlbnQvV21pQWNjZXNzb3IuaA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNy
Yy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmNwcA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNy
Yy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv
d2luMzJzdHViYWdlbnQvWFNlcnZpY2UuY3BwDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dp
bjMyc3R1YmFnZW50L1hTZXJ2aWNlLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvd2luMzJz
dHViYWdlbnQvZXJyb3JzLmNwcA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJh
Z2VudC9tZXNzYWdlcy5tYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2Vu
dC9zdGRhZnguY3BwDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMyc3R1YmFnZW50L3N0
ZGFmeC5oDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMyc3R1YmFnZW50L3czMnhhZ2Vu
dC5yYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2VudC94ZW4uaWNvDQo+
ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hlbmlmYWNlL2lvY3RsX3NoYXJlZGluZm8uYw0KPiAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5pZmFjZS9pb2N0bF9zdXNwZW5kLmMNCj4gDQo+IC0t
DQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2lu
LXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBs
aXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:51:19 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:51:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhcj-0006dZ-FZ; Wed, 22 Jun 2016 12:51:17 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhch-0006dT-Rt
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:51:15 +0000
Received: from [85.158.143.35] by server-2.bemta-6.messagelabs.com id
 B1/B2-11548-3C98A675; Wed, 22 Jun 2016 12:51:15 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRWlGSWpSXmKPExsWyU9JRQvdQZ1a
 4weJzEhZ/Fic6MHoc/nCFJYAxijUzLym/IoE148KnJuaCraYV77oPMzcw3jHpYuTkkBDwk2jp
 ms0MYrMJ6EgsPTqfCcQWESiQ+P5+HlicWUBN4vr+LlYQW1ggSmLByk+MEDXREvsWX2CFsI0kV
 ly5DWazCKhKXP6yAayGV8Bd4t2XrywgtpCAq8TnTd/B4pwCbhLvPtwHizMKyEp8aVwNtUtc4t
 YTiBskBAQkluw5zwxhi0q8fPyPFcI2kNi6dB9QLwdQvabE+l36EK2KElO6H7JDrBWUODnzCdR
 aFYktjw9AjeGWWPn5D8sERtFZSLbNQpg0C8mkWUgmLWBkWcWoXpxaVJZapGuol1SUmZ5RkpuY
 maNraGCml5taXJyYnpqTmFSsl5yfu4kRGCUMQLCDcedzp0OMkhxMSqK88spZ4UJ8SfkplRmJx
 RnxRaU5qcWHGGU4OJQkeOvagXKCRanpqRVpmTnAeIVJS3DwKInwXuoASvMWFyTmFmemQ6ROMS
 pKifMmgyQEQBIZpXlwbbAUcYlRVkqYlxHoECGegtSi3MwSVPlXjOIcjErCvCtApvBk5pXATX8
 FtJgJaPGy/nSQxSWJCCmpBsaSf3J1q4J1LW3bf/UvSfp8+0XNgdZ765KzvW7MOxdSW1TMrCJh
 yWXwMGvZtENq+9s+T36YbRic4KQZ/py3xUBAZv3/l1GPnKUvinQs+3g962aW4Rb9m3PPrprsL
 mp30UdD5B1buKys3Iz/vHqp/ola0n2Ne11/zywtfbxG/4bZNJtnBo8Tg5VYijMSDbWYi4oTAQ
 oTKqMMAwAA
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-15.tower-21.messagelabs.com!1466599874!20200358!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 25934 invoked from network); 22 Jun 2016 12:51:14 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-15.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:51:14 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24787686"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 00/20] Use IOCTL interface instead of WMI
 in	liteagent
Thread-Index: AQHRtce2tZP4g091BEy3aqdHwUl4op/1nTbw
Date: Wed, 22 Jun 2016 12:51:13 +0000
Message-ID: <5e84112689a64ad0a92ccc8b05367e46@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 00/20] Use IOCTL interface instead of WMI
 in	liteagent
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMDAvMjBdIFVzZSBJT0NUTCBpbnRlcmZhY2UgaW5zdGVhZCBv
ZiBXTUkgaW4NCj4gbGl0ZWFnZW50DQo+IA0KPiBUaGUgV01JIGhhbmRsZXIgaW4gdGhlIGxpdGVh
Z2VudCBkb2VzIG5vdCByZWNvdmVyIGZyb20geGVuaWZhY2UNCj4gZGlzYWJsZS9lbmFibGUuIFRo
ZSBsaXRlYWdlbnQgYWxzbyBjb250YWlucyBhIG5vLWxvbmdlci1uZWNlc3NhcnkNCj4gb3Zlcnkg
Y29tcGxpY2F0ZWQgZGVzaWduLCBoYXZpbmcgZXZvbHZlZCBmcm9tIGEgWGVuU2VydmVyIGFnZW50
Lg0KPiANCj4gVGhlc2UgcGF0Y2hlZCBhZGQgZXh0cmEgSU9DVExzIHRvIFhlbklmYWNlLCBhbmQg
cmVwbGFjZSB0aGUgbGl0ZWFnZW50DQo+IHdpdGggYSBzaW1wbGlmaWVkIFBuUCBhd2FyZSBzZXJ2
aWNlLg0KPiANCj4gT3dlbiBTbWl0aCAoMjApOg0KPiAgIEFkZCBTVVNQRU5EIGludGVyZmFjZSBJ
T0NUTHMNCj4gICBBZGQgU0hBUkVESU5GTyBpbnRlcmZhY2UgSU9DVEwNCj4gICBBZGQgSVJQX01K
X0NMRUFOVVAgaGFuZGxlciB0aGF0IGNhbGxzIFhlbklmYWNlQ2xlYW51cA0KPiAgIFJlbW92ZSB3
aW4zMnN0dWJhZ2VudA0KPiAgIEFkZCBiYXNlIGRvLW5vdGhpbmcgc2VydmljZQ0KPiAgIEFkZCBE
ZXZpY2VMaXN0DQo+ICAgVHJhY2sgYSBzaW5nbGUgZGV2aWNlIGluIHRoZSBzZXJ2aWNlLg0KPiAg
IEFkZCBYZW5JZmFjZUl0Zg0KPiAgIFJlc29sdmUgbGlmZWN5Y2xlIGJ1Z3MNCj4gICBBZGQgU2Vy
dmljZUluc3RhbGwgYW5kIGFkZGl0aW9uYWwgZXZlbnRzDQo+ICAgQWRkIFNldHVwL3RlYXJkb3du
IG9mIGFjdGl2ZSBkZXZpY2UgYW5kIGxvZ2dpbmcgdG8NCj4gICAgIE9uU3VzcGVuZC9PblNodXRk
b3duDQo+ICAgRml4IHByZWNvbXBpbGVkIGhlYWRlcnMgb24gY2hlY2tlZCBidWlsZHMNCj4gICBB
ZGQgU2V0WGVuVGltZSBmdW5jdGlvbmFsaXR5DQo+ICAgUHJvdGVjdCBhY3RpdmUgZGV2aWNlIHdp
dGggY3JpdGljYWwgc2VjdGlvbg0KPiAgIEFkZCBPblNodXRkb3duIGhhbmRsZXIgdG8gcG93ZXJv
ZmYvaGFsdC9yZWJvb3QvaGliZXJuYXRlL3MzIFZNDQo+ICAgT25seSBhY2tub3dsZWRnZSB0aGUg
c2h1dGRvd24gaWYgdHlwZSBpcyBrbm93bg0KPiAgIEFkZCBldmVudCBsb2cgZW50cmllcyBmb3Ig
c3VzcGVuZCBhbmQgZXJyb3INCj4gICBBZGQgSU9DVExfWEVOSUZBQ0VfTE9HIHRvIGR1bXAgYSBs
b2cgbWVzc2FnZSB0byBEb20wDQo+ICAgRHluYW1pY2FsbHkgYWxsb2NhdGUgdGhlIGJ1ZmZlciBm
b3IgbG9nZ2luZw0KPiAgIElvY3RsTG9nIGhhbmRsZXIgc2hvdWxkbnQgYmUgaW4gd2l0aCB0aGUg
c3RvcmUgSU9DVExzLCBhbmQgZG9udA0KPiAgICAgZmFpbCBvbiAvbi9yIGluIGxvZyBtZXNzYWdl
cw0KPg0KDQpNb3N0IG9mLCBpZiBub3QgYWxsIG9mLCB0aGVzZSBwYXRjaGVzIGVuZGVkIHVwIGJh
c2U2NCBlbmNvZGVkLiBQbGVhc2UgZW5zdXJlIG5vIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHdoZXJl
IHBvc3NpYmxlIHRvIGF2b2lkIHRoaXMuIEZvciBpdGVtcyB0aGF0IG11c3QgYmUgbm9uLWFzY2lp
LCBzdWNoIGFzIHRoZSBpY29uIGZpbGUsIGl0J3MgcHJvYmFibHkgYmVzdCB0byBicmVhayB0aGVt
IG91dCBpbnRvIGEgc2VwYXJhdGUgcGF0Y2guDQoNClRoYW5rcywNCg0KICBQYXVsIA0KIA0KPiAg
aW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaCAgICAgICAgICB8ICAgNTUgKysNCj4gIHNyYy9saXRl
YWdlbnQvRGV2aWNlTGlzdC5jcHAgICAgICAgfCAgMzAwICsrKysrKysrDQo+ICBzcmMvbGl0ZWFn
ZW50L0RldmljZUxpc3QuaCAgICAgICAgIHwgICA5MyArKysNCj4gIHNyYy9saXRlYWdlbnQvTGl0
ZUFnZW50LmNwcCAgICAgICAgfCAgNjE4ICsrKysrKysrKysrKysrKysrDQo+ICBzcmMvbGl0ZWFn
ZW50L0xpdGVBZ2VudC5oICAgICAgICAgIHwgIDEwMCArKysNCj4gIHNyYy9saXRlYWdlbnQvWGVu
SWZhY2VJdGYuY3BwICAgICAgfCAgMTU1ICsrKysrDQo+ICBzcmMvbGl0ZWFnZW50L1hlbklmYWNl
SXRmLmggICAgICAgIHwgICA2MyArKw0KPiAgc3JjL2xpdGVhZ2VudC9saXRlYWdlbnQucmMgICAg
ICAgICB8ICAgNjAgKysNCj4gIHNyYy9saXRlYWdlbnQvbWVzc2FnZXMubWMgICAgICAgICAgfCAg
IDY2ICsrDQo+ICBzcmMvbGl0ZWFnZW50L3hlbi5pY28gICAgICAgICAgICAgIHwgIEJpbiAwIC0+
IDI1MjE0IGJ5dGVzDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvV21pQWNjZXNzb3IuY3BwIHwgMTMz
MSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIHNyYy93aW4zMnN0dWJh
Z2VudC9XbWlBY2Nlc3Nvci5oICAgfCAgIDg4IC0tLQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L1hT
QWNjZXNzb3IuY3BwICB8ICAyMzAgLS0tLS0tLQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L1hTQWNj
ZXNzb3IuaCAgICB8ICAxMjYgLS0tLQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L1hTZXJ2aWNlLmNw
cCAgICB8IDEwNDQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgc3JjL3dpbjMyc3R1
YmFnZW50L1hTZXJ2aWNlLmggICAgICB8ICAgNTQgLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9l
cnJvcnMuY3BwICAgICAgfCAgMTAyIC0tLQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L21lc3NhZ2Vz
Lm1jICAgICB8ICAgNjYgLS0NCj4gIHNyYy93aW4zMnN0dWJhZ2VudC9zdGRhZnguY3BwICAgICAg
fCAgIDM5IC0tDQo+ICBzcmMvd2luMzJzdHViYWdlbnQvc3RkYWZ4LmggICAgICAgIHwgICA0MyAt
LQ0KPiAgc3JjL3dpbjMyc3R1YmFnZW50L3czMnhhZ2VudC5yYyAgICB8ICAgNjAgLS0NCj4gIHNy
Yy93aW4zMnN0dWJhZ2VudC94ZW4uaWNvICAgICAgICAgfCAgQmluIDI1MjE0IC0+IDAgYnl0ZXMN
Cj4gIHNyYy94ZW5pZmFjZS9mZG8uYyAgICAgICAgICAgICAgICAgfCAgIDM1ICsNCj4gIHNyYy94
ZW5pZmFjZS9mZG8uaCAgICAgICAgICAgICAgICAgfCAgICAzICsNCj4gIHNyYy94ZW5pZmFjZS9p
b2N0bF9zaGFyZWRpbmZvLmMgICAgfCAgIDcwICsrDQo+ICBzcmMveGVuaWZhY2UvaW9jdGxfc3Vz
cGVuZC5jICAgICAgIHwgIDIyMyArKysrKysNCj4gIHNyYy94ZW5pZmFjZS9pb2N0bHMuYyAgICAg
ICAgICAgICAgfCAgIDkxICsrLQ0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICAgICAgICAg
ICB8ICAgNjMgKysNCj4gIHZzMjAxMi9saXRlYWdlbnQvTGl0ZUFnZW50LnZjeHByb2ogfCAgIDUw
ICstDQo+ICB2czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvaiAgIHwgICAgMiArDQo+ICB2
czIwMTMvbGl0ZWFnZW50L0xpdGVBZ2VudC52Y3hwcm9qIHwgICA0NyArLQ0KPiAgdnMyMDEzL3hl
bmlmYWNlL3hlbmlmYWNlLnZjeHByb2ogICB8ICAgIDIgKw0KPiAgMzIgZmlsZXMgY2hhbmdlZCwg
MjAxNyBpbnNlcnRpb25zKCspLCAzMjYyIGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAw
NjQ0IHNyYy9saXRlYWdlbnQvRGV2aWNlTGlzdC5jcHANCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBz
cmMvbGl0ZWFnZW50L0RldmljZUxpc3QuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saXRl
YWdlbnQvTGl0ZUFnZW50LmNwcA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQv
TGl0ZUFnZW50LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGl0ZWFnZW50L1hlbklmYWNl
SXRmLmNwcA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQvWGVuSWZhY2VJdGYu
aA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQvbGl0ZWFnZW50LnJjDQo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpdGVhZ2VudC9tZXNzYWdlcy5tYw0KPiAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IHNyYy9saXRlYWdlbnQveGVuLmljbw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNy
Yy93aW4zMnN0dWJhZ2VudC9XbWlBY2Nlc3Nvci5jcHANCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBz
cmMvd2luMzJzdHViYWdlbnQvV21pQWNjZXNzb3IuaA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNy
Yy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmNwcA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNy
Yy93aW4zMnN0dWJhZ2VudC9YU0FjY2Vzc29yLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv
d2luMzJzdHViYWdlbnQvWFNlcnZpY2UuY3BwDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dp
bjMyc3R1YmFnZW50L1hTZXJ2aWNlLmgNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvd2luMzJz
dHViYWdlbnQvZXJyb3JzLmNwcA0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJh
Z2VudC9tZXNzYWdlcy5tYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2Vu
dC9zdGRhZnguY3BwDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMyc3R1YmFnZW50L3N0
ZGFmeC5oDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3dpbjMyc3R1YmFnZW50L3czMnhhZ2Vu
dC5yYw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy93aW4zMnN0dWJhZ2VudC94ZW4uaWNvDQo+
ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hlbmlmYWNlL2lvY3RsX3NoYXJlZGluZm8uYw0KPiAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5pZmFjZS9pb2N0bF9zdXNwZW5kLmMNCj4gDQo+IC0t
DQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2lu
LXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBs
aXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:52:22 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:52:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhdm-0006g3-KC; Wed, 22 Jun 2016 12:52:22 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhdl-0006fE-PJ
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:52:21 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
 F0/34-01707-50A8A675; Wed, 22 Jun 2016 12:52:21 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQpelKyv
 c4MlLaYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCa0dFzh7VglmrFnrlCDYx3VLoYOTgkBPwk1i70
 7GLk5GAT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i7WLkYuDmGBdkaJ3uYHYI6IQAejROfEd
 SwQHUYSd/9/AetgEVCVOPvgIyvIAl4Bd4me7iyQeiGBRkaJbTc/sYLUcALFzz7rAetlFJCV+N
 K4GmqbuMStJxBXSAgISCzZc54ZwhaVePn4HyuEbSCxdek+FpD5zAKaEut36UO0KkpM6X7IDmL
 zCghKnJz5BGy8kICKxJbHB6DGcEus/PyHZQKj6Cwk22YhTJqFZNIsJJMWMLKsYtQoTi0qSy3S
 NTTVSyrKTM8oyU3MzNE1NDTRy00tLk5MT81JTCrWS87P3cQIjJN6BgbGHYx/T3seYpTkYFIS5
 ZVXzgoX4kvKT6nMSCzOiC8qzUktPsQow8GhJMHL3Q6UEyxKTU+tSMvMAUYsTFqCg0dJhPcBSJ
 q3uCAxtzgzHSJ1ilFRSpxXGCQhAJLIKM2Da4MliUuMslLCvIwMDAxCPAWpRbmZJajyrxjFORi
 VhHn3gkzhycwrgZv+CmgxE9DiZf3pIItLEhFSUg2Mp7e+nn5jYszEkncGpzefj5OtY+Va3au2
 nu1k5YR/GbcLfn/9sjT+vPIV0XPcZ/273ZtOLjLtVH4w81qH5997pbOa11mtKQwLz/m98vH/+
 4WWcW5PT1878uH8vGah7LLHE602Bz+8fv3/0bk1C/fbfLpqZPFhpfCKUnb3c5c1fIOPLdfbs+
 q/KLcSS3FGoqEWc1FxIgBdYr4zDQMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1466599940!49280466!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32147 invoked from network); 22 Jun 2016 12:52:20 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:52:20 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24787399"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 20/20] IoctlLog handler shouldnt be in
 with	the store IOCTLs, and dont fail on /n/r in log messages
Thread-Index: AQHRtctKsskwnpHPw0WUPIsUIMEp0J/1nIow
Date: Wed, 22 Jun 2016 12:47:39 +0000
Message-ID: <e097753586df4de597e00278d09e09f1@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-21-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-21-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 20/20] IoctlLog handler shouldnt be in
	with	the store IOCTLs, and dont fail on /n/r in log messages
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMjAvMjBdIElvY3RsTG9nIGhhbmRsZXIgc2hvdWxkbnQgYmUg
aW4gd2l0aA0KPiB0aGUgc3RvcmUgSU9DVExzLCBhbmQgZG9udCBmYWlsIG9uIC9uL3IgaW4gbG9n
IG1lc3NhZ2VzDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNp
dHJpeC5jb20+DQo+IC0tLQ0KPiAgc3JjL3hlbmlmYWNlL2lvY3RsX3N0b3JlLmMgfCAyOSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICBzcmMveGVuaWZhY2UvaW9jdGxzLmMgICAgICB8
IDQ3DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4g
IDIgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pDQo+IA0K
PiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3RsX3N0b3JlLmMgYi9zcmMveGVuaWZhY2Uv
aW9jdGxfc3RvcmUuYw0KPiBpbmRleCBmMWM4MTZiLi41YmQ0NjQ5IDEwMDY0NA0KPiAtLS0gYS9z
cmMveGVuaWZhY2UvaW9jdGxfc3RvcmUuYw0KPiArKysgYi9zcmMveGVuaWZhY2UvaW9jdGxfc3Rv
cmUuYw0KPiBAQCAtOTEsMzUgKzkxLDYgQEAgX19EaXNwbGF5TXVsdGlTeigNCj4gDQo+ICBERUNM
U1BFQ19OT0lOTElORQ0KPiAgTlRTVEFUVVMNCj4gLUlvY3RsTG9nKA0KPiAtICAgIF9faW4gIFBY
RU5JRkFDRV9GRE8gICAgIEZkbywNCj4gLSAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZm
ZXIsDQo+IC0gICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+IC0gICAgX19pbiAg
VUxPTkcgICAgICAgICAgICAgT3V0TGVuDQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIE5UU1RBVFVT
ICAgIHN0YXR1czsNCj4gLQ0KPiAtICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JVRkZFUl9T
SVpFOw0KPiAtICAgIGlmIChJbkxlbiA9PSAwIHx8IE91dExlbiAhPSAwKQ0KPiAtICAgICAgICBn
b3RvIGZhaWwxOw0KPiAtDQo+IC0gICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVS
Ow0KPiAtICAgIGlmICghX19Jc1ZhbGlkU3RyKEJ1ZmZlciwgSW5MZW4pKQ0KPiAtICAgICAgICBn
b3RvIGZhaWwyOw0KPiAtDQo+IC0gICAgWGVuSWZhY2VEZWJ1Z1ByaW50KElORk8sICJVU0VSOiAl
c1xuIiwgQnVmZmVyKTsNCj4gLSAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+IC0NCj4gLWZh
aWwyOg0KPiAtICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gLWZh
aWwxOg0KPiAtICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwg
c3RhdHVzKTsNCj4gLSAgICByZXR1cm4gc3RhdHVzOw0KPiAtfQ0KPiAtDQo+IC1ERUNMU1BFQ19O
T0lOTElORQ0KPiAtTlRTVEFUVVMNCj4gIElvY3RsU3RvcmVSZWFkKA0KPiAgICAgIF9faW4gIFBY
RU5JRkFDRV9GRE8gICAgIEZkbywNCj4gICAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZm
ZXIsDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmMgYi9zcmMveGVuaWZhY2Uv
aW9jdGxzLmMNCj4gaW5kZXggN2YxNzJkNy4uODM4MjAwMCAxMDA2NDQNCj4gLS0tIGEvc3JjL3hl
bmlmYWNlL2lvY3Rscy5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiBAQCAtMTYw
LDYgKzE2MCw1MyBAQCBYZW5JZmFjZUNsZWFudXAoDQo+ICAgICAgfQ0KPiAgfQ0KPiANCj4gK3N0
YXRpYyBGT1JDRUlOTElORQ0KPiArQk9PTEVBTg0KPiArX19Jc1ZhbGlkU3RyRml4KA0KPiArICAg
IF9faW4gIFBDSEFSICAgICAgICAgICAgIFN0ciwNCj4gKyAgICBfX2luICBVTE9ORyAgICAgICAg
ICAgICBMZW4NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgZm9yICggOyBMZW4tLTsgKytTdHIpIHsN
Cj4gKyAgICAgICAgaWYgKCpTdHIgPT0gJ1wwJykNCj4gKyAgICAgICAgICAgIHJldHVybiBUUlVF
Ow0KPiArICAgICAgICBpZiAoKlN0ciA9PSAnXG4nIHx8ICpTdHIgPT0gJ1xyJykNCj4gKyAgICAg
ICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICBpZiAoIWlzcHJpbnQoKHVuc2lnbmVkIGNoYXIp
KlN0cikpDQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIEZB
TFNFOw0KPiArfQ0KPiArDQoNCklzIHRoaXMgY29kZSBkdXBsaWNhdGlvbj8gUGF0Y2ggIzE4IHJl
ZmVyZW5jZXMgYSBzaW1pbGFybHkgbmFtZWQgZnVuY3Rpb24gKGFwYXJ0IGZyb20gdGhlIG15c3Rl
cnkgJ0ZpeCcgc3VmZml4IGluIHRoZSBuYW1lKS4NCg0KICBQYXVsDQoNCj4gK0RFQ0xTUEVDX05P
SU5MSU5FDQo+ICtOVFNUQVRVUw0KPiArSW9jdGxMb2coDQo+ICsgICAgX19pbiAgUFhFTklGQUNF
X0ZETyAgICAgRmRvLA0KPiArICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgIEJ1ZmZlciwNCj4g
KyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwNCj4gKyAgICBfX2luICBVTE9ORyAg
ICAgICAgICAgICBPdXRMZW4NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFUVVMgICAgc3Rh
dHVzOw0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVGRkVSX1NJWkU7DQo+
ICsgICAgaWYgKEluTGVuID09IDAgfHwgT3V0TGVuICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFp
bDE7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsg
ICAgaWYgKCFfX0lzVmFsaWRTdHJGaXgoQnVmZmVyLCBJbkxlbikpDQo+ICsgICAgICAgIGdvdG8g
ZmFpbDI7DQo+ICsNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoSU5GTywgIlVTRVI6ICVzXG4i
LCBCdWZmZXIpOw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArZmFpbDI6
DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJcbiIpOw0KPiArZmFpbDE6
DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgpXG4iLCBzdGF0
dXMpOw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gIE5UU1RBVFVTDQo+ICBY
ZW5JZmFjZUlvY3RsKA0KPiAgICAgIF9faW4gICAgIFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4g
LS0NCj4gMS45LjQubXN5c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3
aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5n
IGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Jun 22 12:52:22 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Jun 2016 12:52:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bFhdm-0006g3-KC; Wed, 22 Jun 2016 12:52:22 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=974f53209=Paul.Durrant@citrix.com>)
 id 1bFhdl-0006fE-PJ
 for win-pv-devel@lists.xenproject.org; Wed, 22 Jun 2016 12:52:21 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
 F0/34-01707-50A8A675; Wed, 22 Jun 2016 12:52:21 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQpelKyv
 c4MlLaYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCa0dFzh7VglmrFnrlCDYx3VLoYOTgkBPwk1i70
 7GLk5GAT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i7WLkYuDmGBdkaJ3uYHYI6IQAejROfEd
 SwQHUYSd/9/AetgEVCVOPvgIyvIAl4Bd4me7iyQeiGBRkaJbTc/sYLUcALFzz7rAetlFJCV+N
 K4GmqbuMStJxBXSAgISCzZc54ZwhaVePn4HyuEbSCxdek+FpD5zAKaEut36UO0KkpM6X7IDmL
 zCghKnJz5BGy8kICKxJbHB6DGcEus/PyHZQKj6Cwk22YhTJqFZNIsJJMWMLKsYtQoTi0qSy3S
 NTTVSyrKTM8oyU3MzNE1NDTRy00tLk5MT81JTCrWS87P3cQIjJN6BgbGHYx/T3seYpTkYFIS5
 ZVXzgoX4kvKT6nMSCzOiC8qzUktPsQow8GhJMHL3Q6UEyxKTU+tSMvMAUYsTFqCg0dJhPcBSJ
 q3uCAxtzgzHSJ1ilFRSpxXGCQhAJLIKM2Da4MliUuMslLCvIwMDAxCPAWpRbmZJajyrxjFORi
 VhHn3gkzhycwrgZv+CmgxE9DiZf3pIItLEhFSUg2Mp7e+nn5jYszEkncGpzefj5OtY+Va3au2
 nu1k5YR/GbcLfn/9sjT+vPIV0XPcZ/273ZtOLjLtVH4w81qH5997pbOa11mtKQwLz/m98vH/+
 4WWcW5PT1878uH8vGah7LLHE602Bz+8fv3/0bk1C/fbfLpqZPFhpfCKUnb3c5c1fIOPLdfbs+
 q/KLcSS3FGoqEWc1FxIgBdYr4zDQMAAA==
X-Env-Sender: prvs=974f53209=Paul.Durrant@citrix.com
X-Msg-Ref: server-13.tower-27.messagelabs.com!1466599940!49280466!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 32147 invoked from network); 22 Jun 2016 12:52:20 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-13.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 22 Jun 2016 12:52:20 -0000
X-IronPort-AV: E=Sophos;i="5.26,509,1459814400"; d="scan'208";a="24787399"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 20/20] IoctlLog handler shouldnt be in
 with	the store IOCTLs, and dont fail on /n/r in log messages
Thread-Index: AQHRtctKsskwnpHPw0WUPIsUIMEp0J/1nIow
Date: Wed, 22 Jun 2016 12:47:39 +0000
Message-ID: <e097753586df4de597e00278d09e09f1@AMSPEX02CL03.citrite.net>
References: <1464099660-12432-1-git-send-email-owen.smith@citrix.com>
 <1464099660-12432-21-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1464099660-12432-21-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 20/20] IoctlLog handler shouldnt be in
	with	the store IOCTLs, and dont fail on /n/r in log messages
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjQgTWF5IDIwMTYgMTU6MjENCj4gVG86IHdpbi1wdi1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogT3dlbiBTbWl0aA0KPiBTdWJqZWN0OiBb
d2luLXB2LWRldmVsXSBbUEFUQ0ggMjAvMjBdIElvY3RsTG9nIGhhbmRsZXIgc2hvdWxkbnQgYmUg
aW4gd2l0aA0KPiB0aGUgc3RvcmUgSU9DVExzLCBhbmQgZG9udCBmYWlsIG9uIC9uL3IgaW4gbG9n
IG1lc3NhZ2VzDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNp
dHJpeC5jb20+DQo+IC0tLQ0KPiAgc3JjL3hlbmlmYWNlL2lvY3RsX3N0b3JlLmMgfCAyOSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICBzcmMveGVuaWZhY2UvaW9jdGxzLmMgICAgICB8
IDQ3DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4g
IDIgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pDQo+IA0K
PiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3RsX3N0b3JlLmMgYi9zcmMveGVuaWZhY2Uv
aW9jdGxfc3RvcmUuYw0KPiBpbmRleCBmMWM4MTZiLi41YmQ0NjQ5IDEwMDY0NA0KPiAtLS0gYS9z
cmMveGVuaWZhY2UvaW9jdGxfc3RvcmUuYw0KPiArKysgYi9zcmMveGVuaWZhY2UvaW9jdGxfc3Rv
cmUuYw0KPiBAQCAtOTEsMzUgKzkxLDYgQEAgX19EaXNwbGF5TXVsdGlTeigNCj4gDQo+ICBERUNM
U1BFQ19OT0lOTElORQ0KPiAgTlRTVEFUVVMNCj4gLUlvY3RsTG9nKA0KPiAtICAgIF9faW4gIFBY
RU5JRkFDRV9GRE8gICAgIEZkbywNCj4gLSAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZm
ZXIsDQo+IC0gICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sDQo+IC0gICAgX19pbiAg
VUxPTkcgICAgICAgICAgICAgT3V0TGVuDQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIE5UU1RBVFVT
ICAgIHN0YXR1czsNCj4gLQ0KPiAtICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JVRkZFUl9T
SVpFOw0KPiAtICAgIGlmIChJbkxlbiA9PSAwIHx8IE91dExlbiAhPSAwKQ0KPiAtICAgICAgICBn
b3RvIGZhaWwxOw0KPiAtDQo+IC0gICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVS
Ow0KPiAtICAgIGlmICghX19Jc1ZhbGlkU3RyKEJ1ZmZlciwgSW5MZW4pKQ0KPiAtICAgICAgICBn
b3RvIGZhaWwyOw0KPiAtDQo+IC0gICAgWGVuSWZhY2VEZWJ1Z1ByaW50KElORk8sICJVU0VSOiAl
c1xuIiwgQnVmZmVyKTsNCj4gLSAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+IC0NCj4gLWZh
aWwyOg0KPiAtICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gLWZh
aWwxOg0KPiAtICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwg
c3RhdHVzKTsNCj4gLSAgICByZXR1cm4gc3RhdHVzOw0KPiAtfQ0KPiAtDQo+IC1ERUNMU1BFQ19O
T0lOTElORQ0KPiAtTlRTVEFUVVMNCj4gIElvY3RsU3RvcmVSZWFkKA0KPiAgICAgIF9faW4gIFBY
RU5JRkFDRV9GRE8gICAgIEZkbywNCj4gICAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZm
ZXIsDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmMgYi9zcmMveGVuaWZhY2Uv
aW9jdGxzLmMNCj4gaW5kZXggN2YxNzJkNy4uODM4MjAwMCAxMDA2NDQNCj4gLS0tIGEvc3JjL3hl
bmlmYWNlL2lvY3Rscy5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiBAQCAtMTYw
LDYgKzE2MCw1MyBAQCBYZW5JZmFjZUNsZWFudXAoDQo+ICAgICAgfQ0KPiAgfQ0KPiANCj4gK3N0
YXRpYyBGT1JDRUlOTElORQ0KPiArQk9PTEVBTg0KPiArX19Jc1ZhbGlkU3RyRml4KA0KPiArICAg
IF9faW4gIFBDSEFSICAgICAgICAgICAgIFN0ciwNCj4gKyAgICBfX2luICBVTE9ORyAgICAgICAg
ICAgICBMZW4NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgZm9yICggOyBMZW4tLTsgKytTdHIpIHsN
Cj4gKyAgICAgICAgaWYgKCpTdHIgPT0gJ1wwJykNCj4gKyAgICAgICAgICAgIHJldHVybiBUUlVF
Ow0KPiArICAgICAgICBpZiAoKlN0ciA9PSAnXG4nIHx8ICpTdHIgPT0gJ1xyJykNCj4gKyAgICAg
ICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICBpZiAoIWlzcHJpbnQoKHVuc2lnbmVkIGNoYXIp
KlN0cikpDQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIEZB
TFNFOw0KPiArfQ0KPiArDQoNCklzIHRoaXMgY29kZSBkdXBsaWNhdGlvbj8gUGF0Y2ggIzE4IHJl
ZmVyZW5jZXMgYSBzaW1pbGFybHkgbmFtZWQgZnVuY3Rpb24gKGFwYXJ0IGZyb20gdGhlIG15c3Rl
cnkgJ0ZpeCcgc3VmZml4IGluIHRoZSBuYW1lKS4NCg0KICBQYXVsDQoNCj4gK0RFQ0xTUEVDX05P
SU5MSU5FDQo+ICtOVFNUQVRVUw0KPiArSW9jdGxMb2coDQo+ICsgICAgX19pbiAgUFhFTklGQUNF
X0ZETyAgICAgRmRvLA0KPiArICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgIEJ1ZmZlciwNCj4g
KyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwNCj4gKyAgICBfX2luICBVTE9ORyAg
ICAgICAgICAgICBPdXRMZW4NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFUVVMgICAgc3Rh
dHVzOw0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVGRkVSX1NJWkU7DQo+
ICsgICAgaWYgKEluTGVuID09IDAgfHwgT3V0TGVuICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFp
bDE7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsg
ICAgaWYgKCFfX0lzVmFsaWRTdHJGaXgoQnVmZmVyLCBJbkxlbikpDQo+ICsgICAgICAgIGdvdG8g
ZmFpbDI7DQo+ICsNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoSU5GTywgIlVTRVI6ICVzXG4i
LCBCdWZmZXIpOw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArZmFpbDI6
DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJcbiIpOw0KPiArZmFpbDE6
DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgpXG4iLCBzdGF0
dXMpOw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gIE5UU1RBVFVTDQo+ICBY
ZW5JZmFjZUlvY3RsKA0KPiAgICAgIF9faW4gICAgIFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4g
LS0NCj4gMS45LjQubXN5c2dpdC4xDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3
aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5n
IGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:04 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqN9-0006cl-8Q; Tue, 28 Jun 2016 10:36:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqN8-0006cL-32
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:02 +0000
Received: from [85.158.139.211] by server-11.bemta-5.messagelabs.com id
 DC/7E-04210-11352775; Tue, 28 Jun 2016 10:36:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRWlGSWpSXmKPExsXitHRDpK5gcFG
 4QXc7u8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDNmP3xGFPBC56KuT372BoYV3J1MXJySAj4S8xr
 esgIYrMJaEjM6FzMAmKLCKhL7Pu8lQnEZhZQk7i+v4sVxBYWsJVY+XANWA2LgKrE2m/n2UFsX
 gFXidbvB1ghZmpIbGqYwQZicwq4Sdw4No0ZxBYCqtnQPJUFwlaS+Lb4BTNEr6DEyZlPWCB2SU
 gcfAERlxDglrh9eirzBEa+WUjKZiEpW8DItIpRvTi1qCy1SNdCL6koMz2jJDcxM0fX0MBULze
 1uDgxPTUnMalYLzk/dxMjMKAYgGAH48Fm50OMkhxMSqK8CxiKwoX4kvJTKjMSizPii0pzUosP
 McpwcChJ8CYGAeUEi1LTUyvSMnOAoQ2TluDgURLhPRkAlOYtLkjMLc5Mh0idYtTlmLX8zlomI
 Za8/LxUKXHen4FARQIgRRmleXAjYHF2iVFWSpiXEegoIZ6C1KLczBJU+VeM4hyMSsK8MiCX8G
 TmlcBtegV0BBPQEazV+SBHlCQipKQaGO2DDh7cU/kh/mNs7CqBLWcXTTjMG2m3PPABq2L1yed
 1SybGMXx7cueZx6bdv+4snGRvJpv/ZsGhtdYl/AlLZruXdO27Llld+l3m5/HjZx0N2dosBANm
 t/DdzIzLPunyw8wm6/11YdGvS1STr1668i5P5mfNxNf6LY2s6utD12orB2TFHtX49FWJpTgj0
 VCLuag4EQCskPmcrgIAAA==
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467110159!47143004!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42526 invoked from network); 28 Jun 2016 10:36:00 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:00 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="363166399"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:47 +0100
Message-ID: <1467110150-11120-2-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
In-Reply-To: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 1/4] Call XenIfaceCleanup from IRP_MJ_CLEANUP
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

WGVuSWZhY2VDbGVhbnVwIHdhcyBub3QgY2FsbGVkIHdoaWNoIG1lYW50IHRoYXQgc29tZSB3YXRj
aGVzLCBldmVudApjaGFubmVscyBhbmQgZ3JhbnQgZW50cmllcyB3ZXJlIG5vdCBjbGVhbmVkIHVw
IG9uIGNsb3NpbmcgdGhlIGRldmljZQpoYW5kbGUgYW5kIHJlcXVpcmVkIGV4cGxpY2l0IGNsZWFu
dXAuIEFkZCBhIElSUCBoYW5kbGVyIHRvIGNhbGwKWGVuSWZhY2VDbGVhbnVwIGZyb20gdGhlIElS
UF9NSl9DTEVBTlVQIGZvciBhIHNwZWNpZmljIEZpbGVPYmplY3QuClRoaXMgZW5zdXJlcyBhbGwg
d2F0Y2hlcywgZXZlbnQgY2hhbm5lbHMgYW5kIGdyYW50IGVudHJpZXMgYXJlCmRlc3Ryb3llZCBp
biB0aGUgZXZlbnQgb2YgdGhlIGNhbGxlciBjcmFzaGluZyBvciBub3QgZ3JhY2VmdWxsbHkKY2xl
YW5pbmcgdXAgb2JqZWN0cy4KClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhA
Y2l0cml4LmNvbT4KLS0tCiBzcmMveGVuaWZhY2UvZmRvLmMgfCAyMyArKysrKysrKysrKysrKysr
KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9z
cmMveGVuaWZhY2UvZmRvLmMgYi9zcmMveGVuaWZhY2UvZmRvLmMKaW5kZXggZmExNGI1Yi4uYmE4
ZDE5YSAxMDA2NDQKLS0tIGEvc3JjL3hlbmlmYWNlL2Zkby5jCisrKyBiL3NyYy94ZW5pZmFjZS9m
ZG8uYwpAQCAtMjMwMCw2ICsyMzAwLDI1IEBAIEZkb0Rpc3BhdGNoU3lzdGVtQ29udHJvbCgKICAg
ICByZXR1cm4gc3RhdHVzOwogfQogCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMK
K0Zkb0Rpc3BhdGNoQ2xlYW51cCgKKyAgICBJTiAgUFhFTklGQUNFX0ZETyAgIEZkbywKKyAgICBJ
TiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04g
IFN0YWNrTG9jYXRpb247CisgICAgUEZJTEVfT0JKRUNUICAgICAgICBGaWxlT2JqZWN0OworCisg
ICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAg
ICBGaWxlT2JqZWN0ID0gU3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdDsKKworICAgIC8vIFhlbklm
YWNlQ2xlYW51cCByZXF1aXJlcyBQQVNTSVZFX0xFVkVMIGFzIGl0IGNhbiBjYWxsIEtlRmx1c2hR
dWV1ZWREcGNzCisgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSwgUEFTU0lWRV9M
RVZFTCk7CisgICAgWGVuSWZhY2VDbGVhbnVwKEZkbywgRmlsZU9iamVjdCk7CisKKyAgICByZXR1
cm4gRmRvRGlzcGF0Y2hDb21wbGV0ZShGZG8sIElycCk7Cit9CisKIE5UU1RBVFVTCiBGZG9EaXNw
YXRjaCgKICAgICBJTiAgUFhFTklGQUNFX0ZETyAgIEZkbywKQEAgLTIzMjgsNiArMjM0NywxMCBA
QCBGZG9EaXNwYXRjaCgKICAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hTeXN0ZW1Db250cm9s
KEZkbywgSXJwKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIElSUF9NSl9DTEVBTlVQOgor
ICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaENsZWFudXAoRmRvLCBJcnApOworICAgICAgICBi
cmVhazsKKwogICAgIGNhc2UgSVJQX01KX0NSRUFURToKICAgICBjYXNlIElSUF9NSl9DTE9TRToK
ICAgICBjYXNlIElSUF9NSl9SRUFEOgotLSAKMS45LjQubXN5c2dpdC4xCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcg
bGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:04 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqN9-0006cc-7P; Tue, 28 Jun 2016 10:36:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqN8-0006cK-1B
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:02 +0000
Received: from [85.158.139.211] by server-7.bemta-5.messagelabs.com id
 6B/F7-10476-11352775; Tue, 28 Jun 2016 10:36:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOLMWRWlGSWpSXmKPExsXitHSDva5gcFG
 4wZ0NjBZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y1HHDqaChZwVLYf72BoYN7F3MXJySAj4S6z8
 1w9mswloSMzoXMwCYosIqEvs+7yVCcRmFlCTuL6/ixXEFhbQk1j4+SpQnIODRUBVYscaRpAwr
 4CrxIXWH8wQIzUkNjXMYAOxhQSUJL4tfsEMUSMocXLmExaIkRISB1+8gKrnlrh9eirzBEaeWU
 jKZiEpW8DItIpRozi1qCy1SNfISC+pKDM9oyQ3MTNH19DAVC83tbg4MT01JzGpWC85P3cTIzB
 A6hkYGHcw7mn3O8QoycGkJMq7gKEoXIgvKT+lMiOxOCO+qDQntfgQowwHh5IE7+tAoJxgUWp6
 akVaZg4wVGHSEhw8SiK8JwOA0rzFBYm5xZnpEKlTjIpS4rw/QfoEQBIZpXlwbbD4uMQoKyXMy
 8jAwCDEU5BalJtZgir/ilGcg1FJmDc6CGgKT2ZeCdz0V0CLmYAWs1bngywuSURISTUwlpzxN+
 5hv2y+74bqpvbA++ILv2jrO66dnDipLP16S+Cx5bdX8wToWP7gUd/Q5fdR6ofvlZzLG3c+uTb
 N2uKIQvUjC1thoTybibkpXlLGSsH+3rr3t3UabwoO+7n3+880q+bKN+c//ThyLr5vv7T6LBMz
 10Uv+z5/X/P/1UKz823OrPdKOY7YKrEUZyQaajEXFScCAHW689SKAgAA
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467110159!47143002!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42519 invoked from network); 28 Jun 2016 10:36:00 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:00 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="370057517"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:46 +0100
Message-ID: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 0/4] Add more IOCTL interfaces
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

QWxzbyBmaXhlcyBhIG1pc3NpbmcgSVJQIGhhbmRsZXIgZm9yIElSUF9NSl9DTEVBTlVQCkFkZHMg
SU9DVEwgaW50ZXJmYWNlcyBmb3IgbG9nZ2luZywgc3VzcGVuZCBhbmQgc2hhcmVkIGluZm8uCiog
U3VzcGVuZCBHZXRDb3VudCAtIHJldHVybnMgYSB2YWx1ZSB3aGljaCBjaGFuZ2VzIG92ZXIgc3Vz
cGVuZAoqIFN1c3BlbmQgUmVnaXN0ZXIgLSByZWdpc3RlcnMgYW4gZXZlbnQgdGhhdCBpcyBzZXQg
b24gcmVzdW1lIGZyb20gc3VzcGVuZAoqIFN1c3BlbmQgRGVyZWdpc3RlciAtIGRlcmVnaXN0ZXJz
IGEgcmVzdW1lIGZyb20gc3VzcGVuZCBldmVudAoqIFNoYXJlZEluZm8gR2V0VGltZSAtIHJldHVy
bnMgWGVuIHdhbGxjbG9jayB0aW1lCiogTG9nIC0gd3JpdGVzIGEgdXNlciBkZWZpbmVkIHN0cmlu
ZyB0byBYZW4gZm9yIGxvZ2dpbmcKCk93ZW4gU21pdGggKDQpOgogIENhbGwgWGVuSWZhY2VDbGVh
bnVwIGZyb20gSVJQX01KX0NMRUFOVVAKICBBZGQgU3VzcGVuZCBJT0NUTCBpbnRlcmZhY2UKICBB
ZGQgU2hhcmVkSW5mbyBJT0NUTCBpbnRlcmZhY2UKICBBZGQgTG9nIElPQ1RMCgogaW5jbHVkZS94
ZW5pZmFjZV9pb2N0bHMuaCAgICAgICAgfCAgNjEgKysrKysrKysrKysKIHNyYy94ZW5pZmFjZS9m
ZG8uYyAgICAgICAgICAgICAgIHwgIDM1ICsrKysrKwogc3JjL3hlbmlmYWNlL2Zkby5oICAgICAg
ICAgICAgICAgfCAgIDMgKwogc3JjL3hlbmlmYWNlL2lvY3RsX3NoYXJlZGluZm8uYyAgfCAgNjgg
KysrKysrKysrKysrCiBzcmMveGVuaWZhY2UvaW9jdGxfc3VzcGVuZC5jICAgICB8IDIyMiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy94ZW5pZmFjZS9pb2N0bHMu
YyAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKysrKysrKwogc3JjL3hlbmlmYWNlL2lvY3Rscy5o
ICAgICAgICAgICAgfCAgNjMgKysrKysrKysrKysKIHZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52
Y3hwcm9qIHwgICAyICsKIHZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qIHwgICAyICsK
IDkgZmlsZXMgY2hhbmdlZCwgNTQzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz
cmMveGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hl
bmlmYWNlL2lvY3RsX3N1c3BlbmQuYwoKLS0gCjEuOS40Lm1zeXNnaXQuMQoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5n
IGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:04 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqNA-0006cz-9S; Tue, 28 Jun 2016 10:36:04 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqN8-0006cW-Qb
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:02 +0000
Received: from [85.158.139.211] by server-13.bemta-5.messagelabs.com id
 7D/A1-16475-21352775; Tue, 28 Jun 2016 10:36:02 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplkeJIrShJLcpLzFFi42JxWrohUlcwuCj
 cYM0zfYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCa8flqccEUvYonh36yNTB+UO1i5OSQEPCXmLri
 MROIzSagITGjczELiC0ioC6x7/NWsDizgJrE9f1drF2MHBzCAsYSayZogYRZBFQlfk2cBVbOK
 +Aq8XDuW0aIkRoSmxpmsIHYnAJuEjeOTWMGsYWAajY0T2WBsJUkvi1+wQzRKyhxcuYTFohVEh
 IHX0DEJQS4JW6fnso8gZFvFpKyWUjKFjAyrWJUL04tKkst0rXQSyrKTM8oyU3MzNE1NDDVy00
 tLk5MT81JTCrWS87P3cQIDCYGINjBeLDZ+RCjJAeTkijvAoaicCG+pPyUyozE4oz4otKc1OJD
 jDIcHEoSvIlBQDnBotT01Iq0zBxgWMOkJTh4lER4TwYApXmLCxJzizPTIVKnGBWlxHl/BgIlB
 EASGaV5cG2wWLrEKCslzMsIdIgQT0FqUW5mCar8K0ZxDkYlYV4ZkO08mXklcNNfAS1mAlrMWp
 0PsrgkESEl1cDYzayl9cP7vdXSa6bu/Inqy4V+PQ77eVE0QLr/6TutHT3MAgEfZms3KrF8v//
 e7tq3f9Mfv/Gvndieuq33mfCWCDYFyVgdRpvUnSvWTfvvYTOvK8hKj+3ARFYGtl6xg8Z33rNd
 PpVdM7VSOneb1ZWNHXybHwv+DhFq0j6wJO3r/2itap2TNq+UWIozEg21mIuKEwGvtShdoAIAA
 A==
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467110159!47143004!2
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42602 invoked from network); 28 Jun 2016 10:36:01 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:01 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="363166400"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:49 +0100
Message-ID: <1467110150-11120-4-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
In-Reply-To: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 3/4] Add SharedInfo IOCTL interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

QWRkcyBJT0NUTHMgZm9yOgoqIEdldFRpbWUgLSByZXR1cm5zIFhlbiB3YWxsY2xvY2sgdGltZQoK
U2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIGlu
Y2x1ZGUveGVuaWZhY2VfaW9jdGxzLmggICAgICAgIHwgIDkgKysrKysrCiBzcmMveGVuaWZhY2Uv
aW9jdGxfc2hhcmVkaW5mby5jICB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKIHNyYy94ZW5pZmFjZS9pb2N0bHMuYyAgICAgICAgICAgIHwgIDYgKysrKwogc3Jj
L3hlbmlmYWNlL2lvY3Rscy5oICAgICAgICAgICAgfCAgOSArKysrKysKIHZzMjAxMi94ZW5pZmFj
ZS94ZW5pZmFjZS52Y3hwcm9qIHwgIDEgKwogdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHBy
b2ogfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBzcmMveGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jCgpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS94ZW5pZmFjZV9pb2N0bHMuaCBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgKaW5kZXgg
NWY2NWYxNC4uZGNkZGI1ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaAor
KysgYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oCkBAIC0zNjAsNCArMzYwLDEzIEBAIHR5cGVk
ZWYgc3RydWN0IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCB7CiAjZGVmaW5lIElPQ1RM
X1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUiBcCiAgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0Vf
VU5LTk9XTiwgMHg4MzIsIE1FVEhPRF9CVUZGRVJFRCwgRklMRV9BTllfQUNDRVNTKQogCisvKiEg
XGJyaWVmIEdldHMgdGhlIGN1cnJlbnQgdGltZS4KKworICAgIElucHV0OiBOb25lCisKKyAgICBP
dXRwdXQ6IExBUkdFX0lOVEVHRVIKKyovCisjZGVmaW5lIElPQ1RMX1hFTklGQUNFX1NIQVJFRElO
Rk9fR0VUX1RJTUUgXAorICAgIENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODQwLCBN
RVRIT0RfQlVGRkVSRUQsIEZJTEVfQU5ZX0FDQ0VTUykKKwogI2VuZGlmIC8vIF9YRU5JRkFDRV9J
T0NUTFNfSF8KZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMgYi9z
cmMveGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmM5ZGZlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuaWZhY2UvaW9jdGxf
c2hhcmVkaW5mby5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5
c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLAorICogd2l0aCBvciB3aXRob3V0
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZAorICogdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZQorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlcgorICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5ECisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAorICogQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwK
KyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImRyaXZlci5o
IgorI2luY2x1ZGUgImlvY3Rscy5oIgorI2luY2x1ZGUgInhlbmlmYWNlX2lvY3Rscy5oIgorI2lu
Y2x1ZGUgImxvZy5oIgorCitERUNMU1BFQ19OT0lOTElORQorTlRTVEFUVVMKK0lvY3RsU2hhcmVk
SW5mb0dldFRpbWUoCisgICAgX19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLAorICAgIF9faW4g
IFBDSEFSICAgICAgICAgICAgIEJ1ZmZlciwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJ
bkxlbiwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sCisgICAgX19vdXQgUFVM
T05HX1BUUiAgICAgICAgSW5mbworICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgc3RhdHVz
OworICAgIFBMQVJHRV9JTlRFR0VSICBWYWx1ZTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19JTlZB
TElEX0JVRkZFUl9TSVpFOworICAgIGlmIChJbkxlbiAhPSAwKQorICAgICAgICBnb3RvIGZhaWwx
OworCisgICAgaWYgKE91dExlbiAhPSBzaXplb2YoTEFSR0VfSU5URUdFUikpCisgICAgICAgIGdv
dG8gZmFpbDI7CisKKyAgICBWYWx1ZSA9IChQTEFSR0VfSU5URUdFUilCdWZmZXI7CisgICAgKlZh
bHVlID0gWEVOQlVTX1NIQVJFRF9JTkZPKEdldFRpbWUsICZGZG8tPlNoYXJlZEluZm9JbnRlcmZh
Y2UpOyAKKyAgICAqSW5mbyA9IChVTE9OR19QVFIpc2l6ZW9mKExBUkdFX0lOVEVHRVIpOworCisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMjoKKyAgICBYZW5JZmFjZURlYnVnUHJp
bnQoRVJST1IsICJGYWlsMlxuIik7CitmYWlsMToKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJS
T1IsICJGYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KZGlm
ZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuYyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYwpp
bmRleCAyZGYyOTljLi43MDkyYTU2IDEwMDY0NAotLS0gYS9zcmMveGVuaWZhY2UvaW9jdGxzLmMK
KysrIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5jCkBAIC0yNTcsNiArMjU3LDEyIEBAIFhlbklmYWNl
SW9jdGwoCiAgICAgICAgIHN0YXR1cyA9IElvY3RsU3VzcGVuZERlcmVnaXN0ZXIoRmRvLCBCdWZm
ZXIsIEluTGVuLCBPdXRMZW4sIFN0YWNrLT5GaWxlT2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICAgICAgLy8gc2hhcmVkaW5mbworICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfU0hBUkVESU5G
T19HRVRfVElNRToKKyAgICAgICAgc3RhdHVzID0gSW9jdGxTaGFyZWRJbmZvR2V0VGltZShGZG8s
IEJ1ZmZlciwgSW5MZW4sIE91dExlbiwgJklycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24pOworICAg
ICAgICBicmVhazsKKworCiAgICAgZGVmYXVsdDoKICAgICAgICAgc3RhdHVzID0gU1RBVFVTX0lO
VkFMSURfREVWSUNFX1JFUVVFU1Q7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3hl
bmlmYWNlL2lvY3Rscy5oIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5oCmluZGV4IDdkZDM0ZWUuLmQw
NmY2YjUgMTAwNjQ0Ci0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuaAorKysgYi9zcmMveGVuaWZh
Y2UvaW9jdGxzLmgKQEAgLTQwOSw1ICs0MDksMTQgQEAgU3VzcGVuZEZyZWVFdmVudCgKICAgICBf
X2lub3V0ICBQWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUIENvbnRleHQKICAgICApOwogCitOVFNU
QVRVUworSW9jdGxTaGFyZWRJbmZvR2V0VGltZSgKKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAg
ICBGZG8sCisgICAgX19pbiAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLAorICAgIF9faW4gIFVM
T05HICAgICAgICAgICAgIEluTGVuLAorICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExl
biwKKyAgICBfX291dCBQVUxPTkdfUFRSICAgICAgICBJbmZvCisgICAgKTsKKwogI2VuZGlmIC8v
IF9JT0NUTFNfSF8KIApkaWZmIC0tZ2l0IGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHBy
b2ogYi92czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvagppbmRleCBmZjcwZWIwLi5iYjM0
NGU0IDEwMDY0NAotLS0gYS92czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvagorKysgYi92
czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvagpAQCAtNzksNiArNzksNyBAQAogCQk8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxmZG8uYyIgLz4KIAkJPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VccmVnaXN0cnkuYyIgLz4KIAkJPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcdGhyZWFkLmMiIC8+CisJCTxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJlZGluZm8uYyIgLz4KIAkJPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3VzcGVuZC5jIiAvPgog
CQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9ldnRjaG4uYyIg
Lz4KIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfZ250dGFi
LmMiIC8+CmRpZmYgLS1naXQgYS92czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvaiBiL3Zz
MjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qCmluZGV4IDNhM2E5MzcuLmM2MjMyZTQgMTAw
NjQ0Ci0tLSBhL3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qCisrKyBiL3ZzMjAxMy94
ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qCkBAIC0xMzEsNiArMTMxLDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxmZG8uYyIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxyZWdpc3RyeS5jIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHRocmVhZC5jIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJlZGluZm8uYyIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9zdXNwZW5kLmMi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfZXZ0
Y2huLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9j
dGxfZ250dGFiLmMiIC8+Ci0tIAoxLjkuNC5tc3lzZ2l0LjEKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndp
bi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:04 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqN9-0006cl-8Q; Tue, 28 Jun 2016 10:36:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqN8-0006cL-32
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:02 +0000
Received: from [85.158.139.211] by server-11.bemta-5.messagelabs.com id
 DC/7E-04210-11352775; Tue, 28 Jun 2016 10:36:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRWlGSWpSXmKPExsXitHRDpK5gcFG
 4QXc7u8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDNmP3xGFPBC56KuT372BoYV3J1MXJySAj4S8xr
 esgIYrMJaEjM6FzMAmKLCKhL7Pu8lQnEZhZQk7i+v4sVxBYWsJVY+XANWA2LgKrE2m/n2UFsX
 gFXidbvB1ghZmpIbGqYwQZicwq4Sdw4No0ZxBYCqtnQPJUFwlaS+Lb4BTNEr6DEyZlPWCB2SU
 gcfAERlxDglrh9eirzBEa+WUjKZiEpW8DItIpRvTi1qCy1SNdCL6koMz2jJDcxM0fX0MBULze
 1uDgxPTUnMalYLzk/dxMjMKAYgGAH48Fm50OMkhxMSqK8CxiKwoX4kvJTKjMSizPii0pzUosP
 McpwcChJ8CYGAeUEi1LTUyvSMnOAoQ2TluDgURLhPRkAlOYtLkjMLc5Mh0idYtTlmLX8zlomI
 Za8/LxUKXHen4FARQIgRRmleXAjYHF2iVFWSpiXEegoIZ6C1KLczBJU+VeM4hyMSsK8MiCX8G
 TmlcBtegV0BBPQEazV+SBHlCQipKQaGO2DDh7cU/kh/mNs7CqBLWcXTTjMG2m3PPABq2L1yed
 1SybGMXx7cueZx6bdv+4snGRvJpv/ZsGhtdYl/AlLZruXdO27Llld+l3m5/HjZx0N2dosBANm
 t/DdzIzLPunyw8wm6/11YdGvS1STr1668i5P5mfNxNf6LY2s6utD12orB2TFHtX49FWJpTgj0
 VCLuag4EQCskPmcrgIAAA==
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467110159!47143004!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42526 invoked from network); 28 Jun 2016 10:36:00 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:00 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="363166399"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:47 +0100
Message-ID: <1467110150-11120-2-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
In-Reply-To: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 1/4] Call XenIfaceCleanup from IRP_MJ_CLEANUP
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

WGVuSWZhY2VDbGVhbnVwIHdhcyBub3QgY2FsbGVkIHdoaWNoIG1lYW50IHRoYXQgc29tZSB3YXRj
aGVzLCBldmVudApjaGFubmVscyBhbmQgZ3JhbnQgZW50cmllcyB3ZXJlIG5vdCBjbGVhbmVkIHVw
IG9uIGNsb3NpbmcgdGhlIGRldmljZQpoYW5kbGUgYW5kIHJlcXVpcmVkIGV4cGxpY2l0IGNsZWFu
dXAuIEFkZCBhIElSUCBoYW5kbGVyIHRvIGNhbGwKWGVuSWZhY2VDbGVhbnVwIGZyb20gdGhlIElS
UF9NSl9DTEVBTlVQIGZvciBhIHNwZWNpZmljIEZpbGVPYmplY3QuClRoaXMgZW5zdXJlcyBhbGwg
d2F0Y2hlcywgZXZlbnQgY2hhbm5lbHMgYW5kIGdyYW50IGVudHJpZXMgYXJlCmRlc3Ryb3llZCBp
biB0aGUgZXZlbnQgb2YgdGhlIGNhbGxlciBjcmFzaGluZyBvciBub3QgZ3JhY2VmdWxsbHkKY2xl
YW5pbmcgdXAgb2JqZWN0cy4KClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhA
Y2l0cml4LmNvbT4KLS0tCiBzcmMveGVuaWZhY2UvZmRvLmMgfCAyMyArKysrKysrKysrKysrKysr
KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9z
cmMveGVuaWZhY2UvZmRvLmMgYi9zcmMveGVuaWZhY2UvZmRvLmMKaW5kZXggZmExNGI1Yi4uYmE4
ZDE5YSAxMDA2NDQKLS0tIGEvc3JjL3hlbmlmYWNlL2Zkby5jCisrKyBiL3NyYy94ZW5pZmFjZS9m
ZG8uYwpAQCAtMjMwMCw2ICsyMzAwLDI1IEBAIEZkb0Rpc3BhdGNoU3lzdGVtQ29udHJvbCgKICAg
ICByZXR1cm4gc3RhdHVzOwogfQogCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMK
K0Zkb0Rpc3BhdGNoQ2xlYW51cCgKKyAgICBJTiAgUFhFTklGQUNFX0ZETyAgIEZkbywKKyAgICBJ
TiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04g
IFN0YWNrTG9jYXRpb247CisgICAgUEZJTEVfT0JKRUNUICAgICAgICBGaWxlT2JqZWN0OworCisg
ICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAg
ICBGaWxlT2JqZWN0ID0gU3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdDsKKworICAgIC8vIFhlbklm
YWNlQ2xlYW51cCByZXF1aXJlcyBQQVNTSVZFX0xFVkVMIGFzIGl0IGNhbiBjYWxsIEtlRmx1c2hR
dWV1ZWREcGNzCisgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSwgUEFTU0lWRV9M
RVZFTCk7CisgICAgWGVuSWZhY2VDbGVhbnVwKEZkbywgRmlsZU9iamVjdCk7CisKKyAgICByZXR1
cm4gRmRvRGlzcGF0Y2hDb21wbGV0ZShGZG8sIElycCk7Cit9CisKIE5UU1RBVFVTCiBGZG9EaXNw
YXRjaCgKICAgICBJTiAgUFhFTklGQUNFX0ZETyAgIEZkbywKQEAgLTIzMjgsNiArMjM0NywxMCBA
QCBGZG9EaXNwYXRjaCgKICAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hTeXN0ZW1Db250cm9s
KEZkbywgSXJwKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIElSUF9NSl9DTEVBTlVQOgor
ICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaENsZWFudXAoRmRvLCBJcnApOworICAgICAgICBi
cmVhazsKKwogICAgIGNhc2UgSVJQX01KX0NSRUFURToKICAgICBjYXNlIElSUF9NSl9DTE9TRToK
ICAgICBjYXNlIElSUF9NSl9SRUFEOgotLSAKMS45LjQubXN5c2dpdC4xCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcg
bGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:04 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqN9-0006cc-7P; Tue, 28 Jun 2016 10:36:03 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqN8-0006cK-1B
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:02 +0000
Received: from [85.158.139.211] by server-7.bemta-5.messagelabs.com id
 6B/F7-10476-11352775; Tue, 28 Jun 2016 10:36:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOLMWRWlGSWpSXmKPExsXitHSDva5gcFG
 4wZ0NjBZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y1HHDqaChZwVLYf72BoYN7F3MXJySAj4S6z8
 1w9mswloSMzoXMwCYosIqEvs+7yVCcRmFlCTuL6/ixXEFhbQk1j4+SpQnIODRUBVYscaRpAwr
 4CrxIXWH8wQIzUkNjXMYAOxhQSUJL4tfsEMUSMocXLmExaIkRISB1+8gKrnlrh9eirzBEaeWU
 jKZiEpW8DItIpRozi1qCy1SNfISC+pKDM9oyQ3MTNH19DAVC83tbg4MT01JzGpWC85P3cTIzB
 A6hkYGHcw7mn3O8QoycGkJMq7gKEoXIgvKT+lMiOxOCO+qDQntfgQowwHh5IE7+tAoJxgUWp6
 akVaZg4wVGHSEhw8SiK8JwOA0rzFBYm5xZnpEKlTjIpS4rw/QfoEQBIZpXlwbbD4uMQoKyXMy
 8jAwCDEU5BalJtZgir/ilGcg1FJmDc6CGgKT2ZeCdz0V0CLmYAWs1bngywuSURISTUwlpzxN+
 5hv2y+74bqpvbA++ILv2jrO66dnDipLP16S+Cx5bdX8wToWP7gUd/Q5fdR6ofvlZzLG3c+uTb
 N2uKIQvUjC1thoTybibkpXlLGSsH+3rr3t3UabwoO+7n3+880q+bKN+c//ThyLr5vv7T6LBMz
 10Uv+z5/X/P/1UKz823OrPdKOY7YKrEUZyQaajEXFScCAHW689SKAgAA
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467110159!47143002!1
X-Originating-IP: [66.165.176.63]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42519 invoked from network); 28 Jun 2016 10:36:00 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:00 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="370057517"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:46 +0100
Message-ID: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 0/4] Add more IOCTL interfaces
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

QWxzbyBmaXhlcyBhIG1pc3NpbmcgSVJQIGhhbmRsZXIgZm9yIElSUF9NSl9DTEVBTlVQCkFkZHMg
SU9DVEwgaW50ZXJmYWNlcyBmb3IgbG9nZ2luZywgc3VzcGVuZCBhbmQgc2hhcmVkIGluZm8uCiog
U3VzcGVuZCBHZXRDb3VudCAtIHJldHVybnMgYSB2YWx1ZSB3aGljaCBjaGFuZ2VzIG92ZXIgc3Vz
cGVuZAoqIFN1c3BlbmQgUmVnaXN0ZXIgLSByZWdpc3RlcnMgYW4gZXZlbnQgdGhhdCBpcyBzZXQg
b24gcmVzdW1lIGZyb20gc3VzcGVuZAoqIFN1c3BlbmQgRGVyZWdpc3RlciAtIGRlcmVnaXN0ZXJz
IGEgcmVzdW1lIGZyb20gc3VzcGVuZCBldmVudAoqIFNoYXJlZEluZm8gR2V0VGltZSAtIHJldHVy
bnMgWGVuIHdhbGxjbG9jayB0aW1lCiogTG9nIC0gd3JpdGVzIGEgdXNlciBkZWZpbmVkIHN0cmlu
ZyB0byBYZW4gZm9yIGxvZ2dpbmcKCk93ZW4gU21pdGggKDQpOgogIENhbGwgWGVuSWZhY2VDbGVh
bnVwIGZyb20gSVJQX01KX0NMRUFOVVAKICBBZGQgU3VzcGVuZCBJT0NUTCBpbnRlcmZhY2UKICBB
ZGQgU2hhcmVkSW5mbyBJT0NUTCBpbnRlcmZhY2UKICBBZGQgTG9nIElPQ1RMCgogaW5jbHVkZS94
ZW5pZmFjZV9pb2N0bHMuaCAgICAgICAgfCAgNjEgKysrKysrKysrKysKIHNyYy94ZW5pZmFjZS9m
ZG8uYyAgICAgICAgICAgICAgIHwgIDM1ICsrKysrKwogc3JjL3hlbmlmYWNlL2Zkby5oICAgICAg
ICAgICAgICAgfCAgIDMgKwogc3JjL3hlbmlmYWNlL2lvY3RsX3NoYXJlZGluZm8uYyAgfCAgNjgg
KysrKysrKysrKysrCiBzcmMveGVuaWZhY2UvaW9jdGxfc3VzcGVuZC5jICAgICB8IDIyMiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy94ZW5pZmFjZS9pb2N0bHMu
YyAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKysrKysrKwogc3JjL3hlbmlmYWNlL2lvY3Rscy5o
ICAgICAgICAgICAgfCAgNjMgKysrKysrKysrKysKIHZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52
Y3hwcm9qIHwgICAyICsKIHZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qIHwgICAyICsK
IDkgZmlsZXMgY2hhbmdlZCwgNTQzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz
cmMveGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3hl
bmlmYWNlL2lvY3RsX3N1c3BlbmQuYwoKLS0gCjEuOS40Lm1zeXNnaXQuMQoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5n
IGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:04 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqNA-0006cz-9S; Tue, 28 Jun 2016 10:36:04 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqN8-0006cW-Qb
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:02 +0000
Received: from [85.158.139.211] by server-13.bemta-5.messagelabs.com id
 7D/A1-16475-21352775; Tue, 28 Jun 2016 10:36:02 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplkeJIrShJLcpLzFFi42JxWrohUlcwuCj
 cYM0zfYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCa8flqccEUvYonh36yNTB+UO1i5OSQEPCXmLri
 MROIzSagITGjczELiC0ioC6x7/NWsDizgJrE9f1drF2MHBzCAsYSayZogYRZBFQlfk2cBVbOK
 +Aq8XDuW0aIkRoSmxpmsIHYnAJuEjeOTWMGsYWAajY0T2WBsJUkvi1+wQzRKyhxcuYTFohVEh
 IHX0DEJQS4JW6fnso8gZFvFpKyWUjKFjAyrWJUL04tKkst0rXQSyrKTM8oyU3MzNE1NDDVy00
 tLk5MT81JTCrWS87P3cQIDCYGINjBeLDZ+RCjJAeTkijvAoaicCG+pPyUyozE4oz4otKc1OJD
 jDIcHEoSvIlBQDnBotT01Iq0zBxgWMOkJTh4lER4TwYApXmLCxJzizPTIVKnGBWlxHl/BgIlB
 EASGaV5cG2wWLrEKCslzMsIdIgQT0FqUW5mCar8K0ZxDkYlYV4ZkO08mXklcNNfAS1mAlrMWp
 0PsrgkESEl1cDYzayl9cP7vdXSa6bu/Inqy4V+PQ77eVE0QLr/6TutHT3MAgEfZms3KrF8v//
 e7tq3f9Mfv/Gvndieuq33mfCWCDYFyVgdRpvUnSvWTfvvYTOvK8hKj+3ARFYGtl6xg8Z33rNd
 PpVdM7VSOneb1ZWNHXybHwv+DhFq0j6wJO3r/2itap2TNq+UWIozEg21mIuKEwGvtShdoAIAA
 A==
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467110159!47143004!2
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42602 invoked from network); 28 Jun 2016 10:36:01 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:01 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="363166400"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:49 +0100
Message-ID: <1467110150-11120-4-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
In-Reply-To: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 3/4] Add SharedInfo IOCTL interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

QWRkcyBJT0NUTHMgZm9yOgoqIEdldFRpbWUgLSByZXR1cm5zIFhlbiB3YWxsY2xvY2sgdGltZQoK
U2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIGlu
Y2x1ZGUveGVuaWZhY2VfaW9jdGxzLmggICAgICAgIHwgIDkgKysrKysrCiBzcmMveGVuaWZhY2Uv
aW9jdGxfc2hhcmVkaW5mby5jICB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKIHNyYy94ZW5pZmFjZS9pb2N0bHMuYyAgICAgICAgICAgIHwgIDYgKysrKwogc3Jj
L3hlbmlmYWNlL2lvY3Rscy5oICAgICAgICAgICAgfCAgOSArKysrKysKIHZzMjAxMi94ZW5pZmFj
ZS94ZW5pZmFjZS52Y3hwcm9qIHwgIDEgKwogdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHBy
b2ogfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBzcmMveGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jCgpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS94ZW5pZmFjZV9pb2N0bHMuaCBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgKaW5kZXgg
NWY2NWYxNC4uZGNkZGI1ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaAor
KysgYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oCkBAIC0zNjAsNCArMzYwLDEzIEBAIHR5cGVk
ZWYgc3RydWN0IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCB7CiAjZGVmaW5lIElPQ1RM
X1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUiBcCiAgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0Vf
VU5LTk9XTiwgMHg4MzIsIE1FVEhPRF9CVUZGRVJFRCwgRklMRV9BTllfQUNDRVNTKQogCisvKiEg
XGJyaWVmIEdldHMgdGhlIGN1cnJlbnQgdGltZS4KKworICAgIElucHV0OiBOb25lCisKKyAgICBP
dXRwdXQ6IExBUkdFX0lOVEVHRVIKKyovCisjZGVmaW5lIElPQ1RMX1hFTklGQUNFX1NIQVJFRElO
Rk9fR0VUX1RJTUUgXAorICAgIENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODQwLCBN
RVRIT0RfQlVGRkVSRUQsIEZJTEVfQU5ZX0FDQ0VTUykKKwogI2VuZGlmIC8vIF9YRU5JRkFDRV9J
T0NUTFNfSF8KZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMgYi9z
cmMveGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmM5ZGZlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuaWZhY2UvaW9jdGxf
c2hhcmVkaW5mby5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5
c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLAorICogd2l0aCBvciB3aXRob3V0
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZAorICogdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZQorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlcgorICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5ECisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAorICogQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwK
KyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImRyaXZlci5o
IgorI2luY2x1ZGUgImlvY3Rscy5oIgorI2luY2x1ZGUgInhlbmlmYWNlX2lvY3Rscy5oIgorI2lu
Y2x1ZGUgImxvZy5oIgorCitERUNMU1BFQ19OT0lOTElORQorTlRTVEFUVVMKK0lvY3RsU2hhcmVk
SW5mb0dldFRpbWUoCisgICAgX19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLAorICAgIF9faW4g
IFBDSEFSICAgICAgICAgICAgIEJ1ZmZlciwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJ
bkxlbiwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sCisgICAgX19vdXQgUFVM
T05HX1BUUiAgICAgICAgSW5mbworICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgc3RhdHVz
OworICAgIFBMQVJHRV9JTlRFR0VSICBWYWx1ZTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19JTlZB
TElEX0JVRkZFUl9TSVpFOworICAgIGlmIChJbkxlbiAhPSAwKQorICAgICAgICBnb3RvIGZhaWwx
OworCisgICAgaWYgKE91dExlbiAhPSBzaXplb2YoTEFSR0VfSU5URUdFUikpCisgICAgICAgIGdv
dG8gZmFpbDI7CisKKyAgICBWYWx1ZSA9IChQTEFSR0VfSU5URUdFUilCdWZmZXI7CisgICAgKlZh
bHVlID0gWEVOQlVTX1NIQVJFRF9JTkZPKEdldFRpbWUsICZGZG8tPlNoYXJlZEluZm9JbnRlcmZh
Y2UpOyAKKyAgICAqSW5mbyA9IChVTE9OR19QVFIpc2l6ZW9mKExBUkdFX0lOVEVHRVIpOworCisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMjoKKyAgICBYZW5JZmFjZURlYnVnUHJp
bnQoRVJST1IsICJGYWlsMlxuIik7CitmYWlsMToKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJS
T1IsICJGYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KZGlm
ZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuYyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYwpp
bmRleCAyZGYyOTljLi43MDkyYTU2IDEwMDY0NAotLS0gYS9zcmMveGVuaWZhY2UvaW9jdGxzLmMK
KysrIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5jCkBAIC0yNTcsNiArMjU3LDEyIEBAIFhlbklmYWNl
SW9jdGwoCiAgICAgICAgIHN0YXR1cyA9IElvY3RsU3VzcGVuZERlcmVnaXN0ZXIoRmRvLCBCdWZm
ZXIsIEluTGVuLCBPdXRMZW4sIFN0YWNrLT5GaWxlT2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICAgICAgLy8gc2hhcmVkaW5mbworICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfU0hBUkVESU5G
T19HRVRfVElNRToKKyAgICAgICAgc3RhdHVzID0gSW9jdGxTaGFyZWRJbmZvR2V0VGltZShGZG8s
IEJ1ZmZlciwgSW5MZW4sIE91dExlbiwgJklycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24pOworICAg
ICAgICBicmVhazsKKworCiAgICAgZGVmYXVsdDoKICAgICAgICAgc3RhdHVzID0gU1RBVFVTX0lO
VkFMSURfREVWSUNFX1JFUVVFU1Q7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3hl
bmlmYWNlL2lvY3Rscy5oIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5oCmluZGV4IDdkZDM0ZWUuLmQw
NmY2YjUgMTAwNjQ0Ci0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuaAorKysgYi9zcmMveGVuaWZh
Y2UvaW9jdGxzLmgKQEAgLTQwOSw1ICs0MDksMTQgQEAgU3VzcGVuZEZyZWVFdmVudCgKICAgICBf
X2lub3V0ICBQWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUIENvbnRleHQKICAgICApOwogCitOVFNU
QVRVUworSW9jdGxTaGFyZWRJbmZvR2V0VGltZSgKKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAg
ICBGZG8sCisgICAgX19pbiAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLAorICAgIF9faW4gIFVM
T05HICAgICAgICAgICAgIEluTGVuLAorICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExl
biwKKyAgICBfX291dCBQVUxPTkdfUFRSICAgICAgICBJbmZvCisgICAgKTsKKwogI2VuZGlmIC8v
IF9JT0NUTFNfSF8KIApkaWZmIC0tZ2l0IGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHBy
b2ogYi92czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvagppbmRleCBmZjcwZWIwLi5iYjM0
NGU0IDEwMDY0NAotLS0gYS92czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvagorKysgYi92
czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvagpAQCAtNzksNiArNzksNyBAQAogCQk8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxmZG8uYyIgLz4KIAkJPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VccmVnaXN0cnkuYyIgLz4KIAkJPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcdGhyZWFkLmMiIC8+CisJCTxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJlZGluZm8uYyIgLz4KIAkJPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3VzcGVuZC5jIiAvPgog
CQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9ldnRjaG4uYyIg
Lz4KIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfZ250dGFi
LmMiIC8+CmRpZmYgLS1naXQgYS92czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvaiBiL3Zz
MjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qCmluZGV4IDNhM2E5MzcuLmM2MjMyZTQgMTAw
NjQ0Ci0tLSBhL3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qCisrKyBiL3ZzMjAxMy94
ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qCkBAIC0xMzEsNiArMTMxLDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxmZG8uYyIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxyZWdpc3RyeS5jIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHRocmVhZC5jIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJlZGluZm8uYyIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9zdXNwZW5kLmMi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfZXZ0
Y2huLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9j
dGxfZ250dGFiLmMiIC8+Ci0tIAoxLjkuNC5tc3lzZ2l0LjEKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndp
bi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:05 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqNB-0006dt-AV; Tue, 28 Jun 2016 10:36:05 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqNA-0006cw-5i
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:04 +0000
Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id
 A5/F9-17282-31352775; Tue, 28 Jun 2016 10:36:03 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupnkeJIrShJLcpLzFFi42JxWrohUlc4uCj
 coGENu8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDNmHHsO2PBG6mKL3f6mRoYj4h0MXJySAj4Syzs
 m8cIYrMJaEjM6FzMAmKLCKhL7Pu8lQnEZhZQk7i+v4sVxBYWUJK4enkqG4jNIqAq8WDmLrAaX
 gFXiaebHrFCzNSQ2NQwA6yGU8BN4saxacwgthBQzYbmqSwQtpLEt8UvmCF6BSVOznzCArFLQu
 LgC4i4hAC3xO3TU5knMPLNQlI2C0nZAkamVYzqxalFZalFuhZ6SUWZ6RkluYmZObqGBqZ6uan
 FxYnpqTmJScV6yfm5mxiBAcUABDsYDzY7H2KU5GBSEuVdwFAULsSXlJ9SmZFYnBFfVJqTWnyI
 UYaDQ0mCNzEIKCdYlJqeWpGWmQMMbZi0BAePkgjvyQCgNG9xQWJucWY6ROoUo6KUOO/PQKCEA
 EgiozQPrg0WT5cYZaWEeRmBDhHiKUgtys0sQZV/xSjOwagkzCsDsp0nM68EbvoroMVMQItZq/
 NBFpckIqSkGhjdhFpPuC1qnhDMd5I7LdzBkuWy0Zxmx+uPrdrUqyaE9F1Ifi+m4f0uf92J985
 hTc0M5224LuwJuvqL+Wrj9ezUMzuPT4h/c3y3mS4/Zwp7y2eXQ50coXVbVecrzJX0WqXxZ4ZT
 6ovPd0WeT359fMnZCpGTbfHKv3mmxf3KzrnintJr3lOmxqHEUpyRaKjFXFScCABvAZ/XogIAA
 A==
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467110159!47143004!3
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42789 invoked from network); 28 Jun 2016 10:36:02 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:02 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="363166401"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:50 +0100
Message-ID: <1467110150-11120-5-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
In-Reply-To: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 4/4] Add Log IOCTL
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

QWRkcyBhbiBJT0NUTCB0aGF0IHNlbmRzIGEgdXNlciBkZWZpbmVkIG1lc3NhZ2UgdG8gWGVuIHRv
IGxvZy4KClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4K
LS0tCiBpbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIHwgMTUgKysrKysrKysrKysrKysKIHNyYy94
ZW5pZmFjZS9pb2N0bHMuYyAgICAgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICB8ICA4ICsrKysrKysr
CiAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRl
L3hlbmlmYWNlX2lvY3Rscy5oIGIvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaAppbmRleCBkY2Rk
YjVlLi44NmE2ZWVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oCisrKyBi
L2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgKQEAgLTM2OSw0ICszNjksMTkgQEAgdHlwZWRlZiBz
dHJ1Y3QgX1hFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIHsKICNkZWZpbmUgSU9DVExfWEVO
SUZBQ0VfU0hBUkVESU5GT19HRVRfVElNRSBcCiAgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0VfVU5L
Tk9XTiwgMHg4NDAsIE1FVEhPRF9CVUZGRVJFRCwgRklMRV9BTllfQUNDRVNTKQogCisvKiEgXGJy
aWVmIExvZ3MgYSBtZXNzYWdlIHRvIERvbTAKKworICAgIElucHV0OiBOVUwtdGVybWluYXRlZCBD
SEFSIGFycmF5IGNvbnRhaW5pbmcgdGhlIG1lc3NhZ2UgdG8gbG9nCisgICAgICAgICAgIE11c3Qg
YmUgbGVzcyB0aGFuIFhFTklGQUNFX0xPR19NQVhfTEVOR1RIIGxvbmcsIGFuZCBvbmx5IGNvbnRh
aW4KKyAgICAgICAgICAgcHJpbnRhYmxlIG9yIG5ld2xpbmUgY2hhcmFjdGVycyAoIGlzcHJpbnQo
eCkgfHwgeCA9PSAnXG4nICkKKworICAgIE91dHB1dDogTm9uZQorKi8KKyNkZWZpbmUgSU9DVExf
WEVOSUZBQ0VfTE9HIFwKKyAgICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktOT1dOLCAweDg0Riwg
TUVUSE9EX0JVRkZFUkVELCBGSUxFX0FOWV9BQ0NFU1MpCisKKy8qISBcYnJpZWYgTWF4aW11bSBu
dW1iZXIgb2YgQ0hBUnMgZm9yIElPQ1RMX1hFTklGQUNFX0xPRywgaW5jbHVkaW5nIE5VTCB0ZXJt
aW5hdG9yCisqLworI2RlZmluZSBYRU5JRkFDRV9MT0dfTUFYX0xFTkdUSCAgICAgICAgIDI1Ngor
CiAjZW5kaWYgLy8gX1hFTklGQUNFX0lPQ1RMU19IXwpkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNl
L2lvY3Rscy5jIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5jCmluZGV4IDcwOTJhNTYuLjYzOWIwMTUg
MTAwNjQ0Ci0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuYworKysgYi9zcmMveGVuaWZhY2UvaW9j
dGxzLmMKQEAgLTg1LDYgKzg1LDUzIEBAIF9fRnJlZUNhcHR1cmVkQnVmZmVyKAogICAgIH0KIH0K
IAorc3RhdGljIEZPUkNFSU5MSU5FCitCT09MRUFOCitfX0lzVmFsaWRTdHIoCisgICAgX19pbiAg
UENIQVIgICAgICAgICAgICAgU3RyLAorICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIExlbgor
ICAgICkKK3sKKyAgICBmb3IgKCA7IExlbi0tOyArK1N0cikgeworICAgICAgICBpZiAoKlN0ciA9
PSAnXDAnKQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIGlmICgqU3RyID09ICdc
bicgfHwgKlN0ciA9PSAnXHInKQorICAgICAgICAgICAgY29udGludWU7IC8vIG5ld2xpbmUgaXMg
YWxsb3dlZAorICAgICAgICBpZiAoIWlzcHJpbnQoKHVuc2lnbmVkIGNoYXIpKlN0cikpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIEZBTFNFOworfQorCitERUNMU1BFQ19O
T0lOTElORQorTlRTVEFUVVMKK0lvY3RsTG9nKAorICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAg
IEZkbywKKyAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZmZXIsCisgICAgX19pbiAgVUxP
TkcgICAgICAgICAgICAgSW5MZW4sCisgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVu
CisgICAgKQoreworICAgIE5UU1RBVFVTICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IFNUQVRV
U19JTlZBTElEX0JVRkZFUl9TSVpFOworICAgIGlmIChJbkxlbiA9PSAwIHx8IEluTGVuID4gWEVO
SUZBQ0VfTE9HX01BWF9MRU5HVEggfHwgT3V0TGVuICE9IDApCisgICAgICAgIGdvdG8gZmFpbDE7
CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7CisgICAgaWYgKCFfX0lz
VmFsaWRTdHIoQnVmZmVyLCBJbkxlbikpCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICBYZW5J
ZmFjZURlYnVnUHJpbnQoSU5GTywgIlVTRVI6ICVzXG4iLCBCdWZmZXIpOworICAgIHJldHVybiBT
VEFUVVNfU1VDQ0VTUzsKKworZmFpbDI6CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAi
RmFpbDJcbiIpOworZmFpbDE6CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEg
KCUwOHgpXG4iLCBzdGF0dXMpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKIC8vIENsZWFudXAg
c3RvcmUgd2F0Y2hlcyBhbmQgZXZlbnQgY2hhbm5lbHMsIGNhbGxlZCBvbiBmaWxlIG9iamVjdCBj
bG9zZS4KIF9JUlFMX3JlcXVpcmVzXyhQQVNTSVZFX0xFVkVMKSAvLyBFdnRjaG5GcmVlIGNhbGxz
IEtlRmx1c2hRdWV1ZWREcGNzCiBWT0lECkBAIC0yNjIsNiArMzA5LDEwIEBAIFhlbklmYWNlSW9j
dGwoCiAgICAgICAgIHN0YXR1cyA9IElvY3RsU2hhcmVkSW5mb0dldFRpbWUoRmRvLCBCdWZmZXIs
IEluTGVuLCBPdXRMZW4sICZJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uKTsKICAgICAgICAgYnJl
YWs7CiAKKyAgICAgICAgLy8gbWlzYworICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfTE9HOgorICAg
ICAgICBzdGF0dXMgPSBJb2N0bExvZyhGZG8sIEJ1ZmZlciwgSW5MZW4sIE91dExlbik7CisgICAg
ICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFM
SURfREVWSUNFX1JFUVVFU1Q7CmRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmggYi9z
cmMveGVuaWZhY2UvaW9jdGxzLmgKaW5kZXggZDA2ZjZiNS4uMTRkYTY3NCAxMDA2NDQKLS0tIGEv
c3JjL3hlbmlmYWNlL2lvY3Rscy5oCisrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaApAQCAtNDE4
LDUgKzQxOCwxMyBAQCBJb2N0bFNoYXJlZEluZm9HZXRUaW1lKAogICAgIF9fb3V0IFBVTE9OR19Q
VFIgICAgICAgIEluZm8KICAgICApOwogCitOVFNUQVRVUworSW9jdGxMb2coCisgICAgX19pbiAg
UFhFTklGQUNFX0ZETyAgICAgRmRvLAorICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgIEJ1ZmZl
ciwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwKKyAgICBfX2luICBVTE9ORyAg
ICAgICAgICAgICBPdXRMZW4KKyAgICApOworCiAjZW5kaWYgLy8gX0lPQ1RMU19IXwogCi0tIAox
LjkuNC5tc3lzZ2l0LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp
c3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:05 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqNB-0006dt-AV; Tue, 28 Jun 2016 10:36:05 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqNA-0006cw-5i
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:04 +0000
Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id
 A5/F9-17282-31352775; Tue, 28 Jun 2016 10:36:03 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupnkeJIrShJLcpLzFFi42JxWrohUlc4uCj
 coGENu8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDNmHHsO2PBG6mKL3f6mRoYj4h0MXJySAj4Syzs
 m8cIYrMJaEjM6FzMAmKLCKhL7Pu8lQnEZhZQk7i+v4sVxBYWUJK4enkqG4jNIqAq8WDmLrAaX
 gFXiaebHrFCzNSQ2NQwA6yGU8BN4saxacwgthBQzYbmqSwQtpLEt8UvmCF6BSVOznzCArFLQu
 LgC4i4hAC3xO3TU5knMPLNQlI2C0nZAkamVYzqxalFZalFuhZ6SUWZ6RkluYmZObqGBqZ6uan
 FxYnpqTmJScV6yfm5mxiBAcUABDsYDzY7H2KU5GBSEuVdwFAULsSXlJ9SmZFYnBFfVJqTWnyI
 UYaDQ0mCNzEIKCdYlJqeWpGWmQMMbZi0BAePkgjvyQCgNG9xQWJucWY6ROoUo6KUOO/PQKCEA
 EgiozQPrg0WT5cYZaWEeRmBDhHiKUgtys0sQZV/xSjOwagkzCsDsp0nM68EbvoroMVMQItZq/
 NBFpckIqSkGhjdhFpPuC1qnhDMd5I7LdzBkuWy0Zxmx+uPrdrUqyaE9F1Ifi+m4f0uf92J985
 hTc0M5224LuwJuvqL+Wrj9ezUMzuPT4h/c3y3mS4/Zwp7y2eXQ50coXVbVecrzJX0WqXxZ4ZT
 6ovPd0WeT359fMnZCpGTbfHKv3mmxf3KzrnintJr3lOmxqHEUpyRaKjFXFScCABvAZ/XogIAA
 A==
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467110159!47143004!3
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 42789 invoked from network); 28 Jun 2016 10:36:02 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:02 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="363166401"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:50 +0100
Message-ID: <1467110150-11120-5-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
In-Reply-To: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA2
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 4/4] Add Log IOCTL
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

QWRkcyBhbiBJT0NUTCB0aGF0IHNlbmRzIGEgdXNlciBkZWZpbmVkIG1lc3NhZ2UgdG8gWGVuIHRv
IGxvZy4KClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4K
LS0tCiBpbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIHwgMTUgKysrKysrKysrKysrKysKIHNyYy94
ZW5pZmFjZS9pb2N0bHMuYyAgICAgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICB8ICA4ICsrKysrKysr
CiAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRl
L3hlbmlmYWNlX2lvY3Rscy5oIGIvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaAppbmRleCBkY2Rk
YjVlLi44NmE2ZWVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oCisrKyBi
L2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgKQEAgLTM2OSw0ICszNjksMTkgQEAgdHlwZWRlZiBz
dHJ1Y3QgX1hFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIHsKICNkZWZpbmUgSU9DVExfWEVO
SUZBQ0VfU0hBUkVESU5GT19HRVRfVElNRSBcCiAgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0VfVU5L
Tk9XTiwgMHg4NDAsIE1FVEhPRF9CVUZGRVJFRCwgRklMRV9BTllfQUNDRVNTKQogCisvKiEgXGJy
aWVmIExvZ3MgYSBtZXNzYWdlIHRvIERvbTAKKworICAgIElucHV0OiBOVUwtdGVybWluYXRlZCBD
SEFSIGFycmF5IGNvbnRhaW5pbmcgdGhlIG1lc3NhZ2UgdG8gbG9nCisgICAgICAgICAgIE11c3Qg
YmUgbGVzcyB0aGFuIFhFTklGQUNFX0xPR19NQVhfTEVOR1RIIGxvbmcsIGFuZCBvbmx5IGNvbnRh
aW4KKyAgICAgICAgICAgcHJpbnRhYmxlIG9yIG5ld2xpbmUgY2hhcmFjdGVycyAoIGlzcHJpbnQo
eCkgfHwgeCA9PSAnXG4nICkKKworICAgIE91dHB1dDogTm9uZQorKi8KKyNkZWZpbmUgSU9DVExf
WEVOSUZBQ0VfTE9HIFwKKyAgICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktOT1dOLCAweDg0Riwg
TUVUSE9EX0JVRkZFUkVELCBGSUxFX0FOWV9BQ0NFU1MpCisKKy8qISBcYnJpZWYgTWF4aW11bSBu
dW1iZXIgb2YgQ0hBUnMgZm9yIElPQ1RMX1hFTklGQUNFX0xPRywgaW5jbHVkaW5nIE5VTCB0ZXJt
aW5hdG9yCisqLworI2RlZmluZSBYRU5JRkFDRV9MT0dfTUFYX0xFTkdUSCAgICAgICAgIDI1Ngor
CiAjZW5kaWYgLy8gX1hFTklGQUNFX0lPQ1RMU19IXwpkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNl
L2lvY3Rscy5jIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5jCmluZGV4IDcwOTJhNTYuLjYzOWIwMTUg
MTAwNjQ0Ci0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuYworKysgYi9zcmMveGVuaWZhY2UvaW9j
dGxzLmMKQEAgLTg1LDYgKzg1LDUzIEBAIF9fRnJlZUNhcHR1cmVkQnVmZmVyKAogICAgIH0KIH0K
IAorc3RhdGljIEZPUkNFSU5MSU5FCitCT09MRUFOCitfX0lzVmFsaWRTdHIoCisgICAgX19pbiAg
UENIQVIgICAgICAgICAgICAgU3RyLAorICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIExlbgor
ICAgICkKK3sKKyAgICBmb3IgKCA7IExlbi0tOyArK1N0cikgeworICAgICAgICBpZiAoKlN0ciA9
PSAnXDAnKQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIGlmICgqU3RyID09ICdc
bicgfHwgKlN0ciA9PSAnXHInKQorICAgICAgICAgICAgY29udGludWU7IC8vIG5ld2xpbmUgaXMg
YWxsb3dlZAorICAgICAgICBpZiAoIWlzcHJpbnQoKHVuc2lnbmVkIGNoYXIpKlN0cikpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIEZBTFNFOworfQorCitERUNMU1BFQ19O
T0lOTElORQorTlRTVEFUVVMKK0lvY3RsTG9nKAorICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAg
IEZkbywKKyAgICBfX2luICBQQ0hBUiAgICAgICAgICAgICBCdWZmZXIsCisgICAgX19pbiAgVUxP
TkcgICAgICAgICAgICAgSW5MZW4sCisgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVu
CisgICAgKQoreworICAgIE5UU1RBVFVTICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IFNUQVRV
U19JTlZBTElEX0JVRkZFUl9TSVpFOworICAgIGlmIChJbkxlbiA9PSAwIHx8IEluTGVuID4gWEVO
SUZBQ0VfTE9HX01BWF9MRU5HVEggfHwgT3V0TGVuICE9IDApCisgICAgICAgIGdvdG8gZmFpbDE7
CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7CisgICAgaWYgKCFfX0lz
VmFsaWRTdHIoQnVmZmVyLCBJbkxlbikpCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICBYZW5J
ZmFjZURlYnVnUHJpbnQoSU5GTywgIlVTRVI6ICVzXG4iLCBCdWZmZXIpOworICAgIHJldHVybiBT
VEFUVVNfU1VDQ0VTUzsKKworZmFpbDI6CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAi
RmFpbDJcbiIpOworZmFpbDE6CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEg
KCUwOHgpXG4iLCBzdGF0dXMpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKIC8vIENsZWFudXAg
c3RvcmUgd2F0Y2hlcyBhbmQgZXZlbnQgY2hhbm5lbHMsIGNhbGxlZCBvbiBmaWxlIG9iamVjdCBj
bG9zZS4KIF9JUlFMX3JlcXVpcmVzXyhQQVNTSVZFX0xFVkVMKSAvLyBFdnRjaG5GcmVlIGNhbGxz
IEtlRmx1c2hRdWV1ZWREcGNzCiBWT0lECkBAIC0yNjIsNiArMzA5LDEwIEBAIFhlbklmYWNlSW9j
dGwoCiAgICAgICAgIHN0YXR1cyA9IElvY3RsU2hhcmVkSW5mb0dldFRpbWUoRmRvLCBCdWZmZXIs
IEluTGVuLCBPdXRMZW4sICZJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uKTsKICAgICAgICAgYnJl
YWs7CiAKKyAgICAgICAgLy8gbWlzYworICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfTE9HOgorICAg
ICAgICBzdGF0dXMgPSBJb2N0bExvZyhGZG8sIEJ1ZmZlciwgSW5MZW4sIE91dExlbik7CisgICAg
ICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFM
SURfREVWSUNFX1JFUVVFU1Q7CmRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmggYi9z
cmMveGVuaWZhY2UvaW9jdGxzLmgKaW5kZXggZDA2ZjZiNS4uMTRkYTY3NCAxMDA2NDQKLS0tIGEv
c3JjL3hlbmlmYWNlL2lvY3Rscy5oCisrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaApAQCAtNDE4
LDUgKzQxOCwxMyBAQCBJb2N0bFNoYXJlZEluZm9HZXRUaW1lKAogICAgIF9fb3V0IFBVTE9OR19Q
VFIgICAgICAgIEluZm8KICAgICApOwogCitOVFNUQVRVUworSW9jdGxMb2coCisgICAgX19pbiAg
UFhFTklGQUNFX0ZETyAgICAgRmRvLAorICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgIEJ1ZmZl
ciwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwKKyAgICBfX2luICBVTE9ORyAg
ICAgICAgICAgICBPdXRMZW4KKyAgICApOworCiAjZW5kaWYgLy8gX0lPQ1RMU19IXwogCi0tIAox
LjkuNC5tc3lzZ2l0LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp
c3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:06 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqNC-0006ee-Bd; Tue, 28 Jun 2016 10:36:06 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqNA-0006dC-UC
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:05 +0000
Received: from [85.158.143.35] by server-2.bemta-6.messagelabs.com id
 88/80-11548-41352775; Tue, 28 Jun 2016 10:36:04 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjkeJIrShJLcpLzFFi42JxWrohUlc4uCj
 cYN52bYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCacfJoB3tBY13Fho7ZzA2MN5K6GDk5JAT8JU4d
 2M4KYrMJaEjM6FzMAmKLCKhL7Pu8lQnEZhZQk7i+vwusRljAQGLT80dgNSwCqhJrf1xgBLF5B
 VwlFrZcYIaYqSGxqWEGG4jNKeAmcePYNLC4EFDNhuapLBC2ksS3xS+YIXoFJU7OfMICsUtC4u
 ALkDgH0Bxuib/d9hMY+WYhqZqFpGoBI9MqRvXi1KKy1CJdQ72kosz0jJLcxMwcXUMDM73c1OL
 ixPTUnMSkYr3k/NxNjMBwYgCCHYw7nzsdYpTkYFIS5V3AUBQuxJeUn1KZkVicEV9UmpNafIhR
 hoNDSYI3IxAoJ1iUmp5akZaZAwxsmLQEB4+SCO/JAKA0b3FBYm5xZjpE6hSjopQ4bwNInwBII
 qM0D64NFk2XGGWlhHkZgQ4R4ilILcrNLEGVf8UozsGoJMy7GGQKT2ZeCdz0V0CLmYAWs1bngy
 wuSURISTUwcqpcs5Y/d2bHK5+Abe3nGh6UXJacfVs4iPmT3QMGh+yFh5e1u5dkJm69nZqev6Q
 2QuNl6+RPfkdPTFHW5VxvHbh+xb9FbO0VNvMCJ7+0d9mSJpCysmdO4qLalo3HTNW28CqeVrp7
 velR6dHN7h/PBKVZabFdXte5fcXHHUaSZ6q3Rn0vX/oqTYmlOCPRUIu5qDgRAEfw8/mhAgAA
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-4.tower-21.messagelabs.com!1467110161!15139287!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10294 invoked from network); 28 Jun 2016 10:36:03 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-4.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:03 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="363166402"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:48 +0100
Message-ID: <1467110150-11120-3-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
In-Reply-To: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 2/4] Add Suspend IOCTL interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

QWRkcyBJT0NUTHMgZm9yOgoqIEdldENvdW50IC0gcmV0dXJucyBhIHZhbHVlIHdoaWNoIGNoYW5n
ZXMgb3ZlciBzdXNwZW5kCiogUmVnaXN0ZXIgLSByZWdpc3RlcnMgYW4gZXZlbnQgdGhhdCBpcyBz
ZXQgb24gcmVzdW1lIGZyb20gc3VzcGVuZAoqIERlcmVnaXN0ZXIgLSBkZXJlZ2lzdGVycyBhIHJl
c3VtZSBmcm9tIHN1c3BlbmQgZXZlbnQKClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4u
c21pdGhAY2l0cml4LmNvbT4KLS0tCiBpbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oICAgICAgICB8
ICAzNyArKysrKysrCiBzcmMveGVuaWZhY2UvZmRvLmMgICAgICAgICAgICAgICB8ICAxMiArKysK
IHNyYy94ZW5pZmFjZS9mZG8uaCAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy94ZW5pZmFjZS9p
b2N0bF9zdXNwZW5kLmMgICAgIHwgMjIyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwogc3JjL3hlbmlmYWNlL2lvY3Rscy5jICAgICAgICAgICAgfCAgMzAgKysrKysrCiBz
cmMveGVuaWZhY2UvaW9jdGxzLmggICAgICAgICAgICB8ICA0NiArKysrKysrKwogdnMyMDEyL3hl
bmlmYWNlL3hlbmlmYWNlLnZjeHByb2ogfCAgIDEgKwogdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNl
LnZjeHByb2ogfCAgIDEgKwogOCBmaWxlcyBjaGFuZ2VkLCAzNTIgaW5zZXJ0aW9ucygrKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5pZmFjZS9pb2N0bF9zdXNwZW5kLmMKCmRpZmYgLS1naXQg
YS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIGIvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaApp
bmRleCAxN2JlYWExLi41ZjY1ZjE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rs
cy5oCisrKyBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgKQEAgLTMyMyw0ICszMjMsNDEgQEAg
dHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX0dOVFRBQl9VTk1BUF9GT1JFSUdOX1BBR0VTX0lOIHsK
ICAgICBVTE9ORyBSZXF1ZXN0SWQ7IC8qISBSZXF1ZXN0IElEIHVzZWQgaW4gdGhlIGNvcnJlc3Bv
bmRpbmcgSU9DVExfWEVOSUZBQ0VfR05UVEFCX01BUF9GT1JFSUdOX1BBR0VTIGNhbGwgKi8KIH0g
WEVOSUZBQ0VfR05UVEFCX1VOTUFQX0ZPUkVJR05fUEFHRVNfSU4sICpQWEVOSUZBQ0VfR05UVEFC
X1VOTUFQX0ZPUkVJR05fUEFHRVNfSU47CiAKKy8qISBcYnJpZWYgR2V0cyB0aGUgY3VycmVudCBz
dXNwZW5kIGNvdW50LgorCisgICAgSW5wdXQ6IE5vbmUKKworICAgIE91dHB1dDogVUxPTkcKKyov
CisjZGVmaW5lIElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfR0VUX0NPVU5UIFwKKyAgICBDVExfQ09E
RShGSUxFX0RFVklDRV9VTktOT1dOLCAweDgzMCwgTUVUSE9EX0JVRkZFUkVELCBGSUxFX0FOWV9B
Q0NFU1MpCisKKy8qISBcYnJpZWYgSW5wdXQgZm9yIElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfUkVH
SVNURVIgKi8KK3R5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOIHsK
KyAgICBIQU5ETEUgRXZlbnQ7IC8qITwgSGFuZGxlIHRvIGFuIGV2ZW50IG9iamVjdCB0aGF0IHdp
bGwgcmVjZWl2ZSBzdXNwZW5kIG5vdGlmaWNhdGlvbnMgKi8KK30gWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9JTiwgKlBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOOworCisvKiEgXGJyaWVm
IE91dHB1dCBmb3IgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUiwgSW5wdXQgZm9yIElP
Q1RMX1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUiAqLwordHlwZWRlZiBzdHJ1Y3QgX1hFTklG
QUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIHsKKyAgICBQVk9JRCBDb250ZXh0OyAvKiE8IEhhbmRs
ZSB0byB0aGUgc3VzcGVuZCBldmVudCAqLworfSBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09V
VCwgKlBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVDsKKworLyohIFxicmllZiBSZWdpc3Rl
cnMgYW4gZXZlbnQgd2hpY2ggaXMgc2lnbmFsbGVkIG9uIHJlc3VtZS1mcm9tLXN1c3BlbmQKKwor
ICAgIElucHV0OiBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOCisKKyAgICBPdXRwdXQ6IFhF
TklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUCisqLworI2RlZmluZSBJT0NUTF9YRU5JRkFDRV9T
VVNQRU5EX1JFR0lTVEVSIFwKKyAgICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktOT1dOLCAweDgz
MSwgTUVUSE9EX0JVRkZFUkVELCBGSUxFX0FOWV9BQ0NFU1MpCisKKy8qISBcYnJpZWYgRGVyZWdp
c3RlcnMgYW4gZXZlbnQgd2hpY2ggaXMgc2lnbmFsbGVkIG9uIHJlc3VtZS1mcm9tLXN1c3BlbmQK
KworICAgIElucHV0OiBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVAorCisgICAgT3V0cHV0
OiBOb25lCisqLworI2RlZmluZSBJT0NUTF9YRU5JRkFDRV9TVVNQRU5EX0RFUkVHSVNURVIgXAor
ICAgIENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODMyLCBNRVRIT0RfQlVGRkVSRUQs
IEZJTEVfQU5ZX0FDQ0VTUykKKwogI2VuZGlmIC8vIF9YRU5JRkFDRV9JT0NUTFNfSF8KZGlmZiAt
LWdpdCBhL3NyYy94ZW5pZmFjZS9mZG8uYyBiL3NyYy94ZW5pZmFjZS9mZG8uYwppbmRleCBiYThk
MTlhLi4xOWU1MGZlIDEwMDY0NAotLS0gYS9zcmMveGVuaWZhY2UvZmRvLmMKKysrIGIvc3JjL3hl
bmlmYWNlL2Zkby5jCkBAIC05MDgsNiArOTA4LDcgQEAgRmRvU3VzcGVuZENhbGxiYWNrTGF0ZSgK
ICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKIAogICAgIFdtaUZpcmVTdXNwZW5kRXZl
bnQoRmRvKTsKKyAgICBTdXNwZW5kRXZlbnRGaXJlKEZkbyk7CiB9CiAKIHN0YXRpYyBERUNMU1BF
Q19OT0lOTElORSBOVFNUQVRVUwpAQCAtMjU5Myw2ICsyNTk0LDkgQEAgRmRvQ3JlYXRlKAogICAg
IEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZGZG8tPkV2dGNobkxvY2spOwogICAgIEluaXRpYWxpemVM
aXN0SGVhZCgmRmRvLT5FdnRjaG5MaXN0KTsKIAorICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZG
ZG8tPlN1c3BlbmRMb2NrKTsKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkZkby0+U3VzcGVuZExp
c3QpOworCiAgICAgS2VJbml0aWFsaXplU3BpbkxvY2soJkZkby0+SXJwUXVldWVMb2NrKTsKICAg
ICBJbml0aWFsaXplTGlzdEhlYWQoJkZkby0+SXJwTGlzdCk7CiAKQEAgLTI2MjUsNiArMjYyOSwx
MCBAQCBmYWlsMTU6CiAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5JcnBMaXN0LCBzaXplb2YgKExJ
U1RfRU5UUlkpKTsKICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVlTG9jaywgc2l6ZW9m
IChLU1BJTl9MT0NLKSk7CiAKKyAgICBBU1NFUlQoSXNMaXN0RW1wdHkoJkZkby0+U3VzcGVuZExp
c3QpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlN1c3BlbmRMaXN0LCBzaXplb2YgKExJU1Rf
RU5UUlkpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlN1c3BlbmRMb2NrLCBzaXplb2YgKEtT
UElOX0xPQ0spKTsKKwogICAgIEFTU0VSVChJc0xpc3RFbXB0eSgmRmRvLT5FdnRjaG5MaXN0KSk7
CiAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5FdnRjaG5MaXN0LCBzaXplb2YgKExJU1RfRU5UUlkp
KTsKICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkV2dGNobkxvY2ssIHNpemVvZiAoS1NQSU5fTE9D
SykpOwpAQCAtMjc0Nyw2ICsyNzU1LDEwIEBAIEZkb0Rlc3Ryb3koCiAgICAgUnRsWmVyb01lbW9y
eSgmRmRvLT5JcnBRdWV1ZUxvY2ssIHNpemVvZiAoS1NQSU5fTE9DSykpOwogICAgIFJ0bFplcm9N
ZW1vcnkoJkZkby0+SXJwUXVldWUsIHNpemVvZiAoSU9fQ1NRKSk7CiAKKyAgICBBU1NFUlQoSXNM
aXN0RW1wdHkoJkZkby0+U3VzcGVuZExpc3QpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlN1
c3BlbmRMaXN0LCBzaXplb2YgKExJU1RfRU5UUlkpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8t
PlN1c3BlbmRMb2NrLCBzaXplb2YgKEtTUElOX0xPQ0spKTsKKwogICAgIEFTU0VSVChJc0xpc3RF
bXB0eSgmRmRvLT5FdnRjaG5MaXN0KSk7CiAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5FdnRjaG5M
aXN0LCBzaXplb2YgKExJU1RfRU5UUlkpKTsKICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkV2dGNo
bkxvY2ssIHNpemVvZiAoS1NQSU5fTE9DSykpOwpkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2Zk
by5oIGIvc3JjL3hlbmlmYWNlL2Zkby5oCmluZGV4IDZjZDYyOGMuLjA3OTE5MDYgMTAwNjQ0Ci0t
LSBhL3NyYy94ZW5pZmFjZS9mZG8uaAorKysgYi9zcmMveGVuaWZhY2UvZmRvLmgKQEAgLTkwLDYg
KzkwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX0ZETyB7CiAgICAgS1NQSU5fTE9DSyAg
ICAgICAgICAgICAgICAgICAgICBFdnRjaG5Mb2NrOwogICAgIExJU1RfRU5UUlkgICAgICAgICAg
ICAgICAgICAgICAgRXZ0Y2huTGlzdDsKIAorICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAg
ICAgICAgU3VzcGVuZExvY2s7CisgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICBT
dXNwZW5kTGlzdDsKKwogICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAgICAgICAgR250dGFi
Q2FjaGVMb2NrOwogCiAgICAgSU9fQ1NRICAgICAgICAgICAgICAgICAgICAgICAgICBJcnBRdWV1
ZTsKZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bF9zdXNwZW5kLmMgYi9zcmMveGVuaWZh
Y2UvaW9jdGxfc3VzcGVuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4
NDg4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuaWZhY2UvaW9jdGxfc3VzcGVuZC5jCkBA
IC0wLDAgKzEsMjIyIEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisgKgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUK
KyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisgKiBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
KyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJkcml2ZXIuaCIKKyNpbmNsdWRlICJp
b2N0bHMuaCIKKyNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCIKKyNpbmNsdWRlICJsb2cuaCIK
KworREVDTFNQRUNfTk9JTkxJTkUKK05UU1RBVFVTCitJb2N0bFN1c3BlbmRHZXRDb3VudCgKKyAg
ICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sCisgICAgX19pbiAgUENIQVIgICAgICAgICAg
ICAgQnVmZmVyLAorICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLAorICAgIF9faW4g
IFVMT05HICAgICAgICAgICAgIE91dExlbiwKKyAgICBfX291dCBQVUxPTkdfUFRSICAgICAgICBJ
bmZvCisgICAgKQoreworICAgIE5UU1RBVFVTICAgIHN0YXR1czsKKyAgICBQVUxPTkcgICAgICBW
YWx1ZTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JVRkZFUl9TSVpFOworICAgIGlm
IChJbkxlbiAhPSAwKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgaWYgKE91dExlbiAhPSBz
aXplb2YoVUxPTkcpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgVmFsdWUgPSAoUFVMT05H
KUJ1ZmZlcjsKKyAgICAqVmFsdWUgPSBYRU5CVVNfU1VTUEVORChHZXRDb3VudCwgJkZkby0+U3Vz
cGVuZEludGVyZmFjZSk7IAorICAgICpJbmZvID0gKFVMT05HX1BUUilzaXplb2YoVUxPTkcpOwor
ICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFp
bDI6CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJcbiIpOworZmFpbDE6Cisg
ICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOwor
ICAgIHJldHVybiBzdGF0dXM7Cit9CisKK0RFQ0xTUEVDX05PSU5MSU5FCitOVFNUQVRVUworSW9j
dGxTdXNwZW5kUmVnaXN0ZXIoCisgICAgX19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLAorICAg
IF9faW4gIFBWT0lEICAgICAgICAgICAgIEJ1ZmZlciwKKyAgICBfX2luICBVTE9ORyAgICAgICAg
ICAgICBJbkxlbiwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sCisgICAgX19p
biAgUEZJTEVfT0JKRUNUICAgICAgRmlsZU9iamVjdCwKKyAgICBfX291dCBQVUxPTkdfUFRSICAg
ICAgICBJbmZvCisgICAgKQoreworICAgIE5UU1RBVFVTIHN0YXR1czsKKyAgICBQWEVOSUZBQ0Vf
U1VTUEVORF9SRUdJU1RFUl9JTiBJbiA9IEJ1ZmZlcjsKKyAgICBQWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9PVVQgT3V0ID0gQnVmZmVyOworICAgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQg
Q29udGV4dDsKKworICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JVRkZFUl9TSVpFOworICAg
IGlmIChJbkxlbiAhPSBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9JTikgfHwKKyAg
ICAgICAgT3V0TGVuICE9IHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCkpIHsK
KyAgICAgICAgZ290byBmYWlsMTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVN
T1JZOworICAgIENvbnRleHQgPSBFeEFsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLCBz
aXplb2YoWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUKSwgWEVOSUZBQ0VfUE9PTF9UQUcpOworICAg
IGlmIChDb250ZXh0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICBSdGxaZXJv
TWVtb3J5KENvbnRleHQsIHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQpKTsKKworICAg
IENvbnRleHQtPkZpbGVPYmplY3QgPSBGaWxlT2JqZWN0OworCisgICAgc3RhdHVzID0gT2JSZWZl
cmVuY2VPYmplY3RCeUhhbmRsZShJbi0+RXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFVkVOVF9NT0RJRllfU1RBVEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqRXhFdmVudE9iamVjdFR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZDb250ZXh0LT5FdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAg
ICBnb3RvIGZhaWwzOworCisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KFRSQUNFLCAiPiBTdXNwZW5k
IEV2ZW50ICVwLCBGTyAlcFxuIiwgSW4tPkV2ZW50LCBGaWxlT2JqZWN0KTsKKyAgICBFeEludGVy
bG9ja2VkSW5zZXJ0VGFpbExpc3QoJkZkby0+U3VzcGVuZExpc3QsICZDb250ZXh0LT5FbnRyeSwg
JkZkby0+U3VzcGVuZExvY2spOworCisgICAgT3V0LT5Db250ZXh0ID0gQ29udGV4dDsKKyAgICAq
SW5mbyA9IHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworCitmYWlsMzoKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJST1IsICJGYWls
M1xuIik7CisgICAgUnRsWmVyb01lbW9yeShDb250ZXh0LCBzaXplb2YoWEVOSUZBQ0VfU1VTUEVO
RF9DT05URVhUKSk7CisgICAgRXhGcmVlUG9vbFdpdGhUYWcoQ29udGV4dCwgWEVOSUZBQ0VfUE9P
TF9UQUcpOworCitmYWlsMjoKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJST1IsICJGYWlsMlxu
Iik7CisKK2ZhaWwxOgorICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4
KVxuIiwgc3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfSVJRTF9yZXF1aXJlc19t
YXhfKERJU1BBVENIX0xFVkVMKQorVk9JRAorU3VzcGVuZEZyZWVFdmVudCgKKyAgICBfX2luICAg
ICBQWEVOSUZBQ0VfRkRPIEZkbywKKyAgICBfX2lub3V0ICBQWEVOSUZBQ0VfU1VTUEVORF9DT05U
RVhUIENvbnRleHQKKyAgICApCit7CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KFRSQUNFLCAiQ29u
dGV4dCAlcCwgRk8gJXBcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQsIENvbnRl
eHQtPkZpbGVPYmplY3QpOworCisgICAgT2JEZXJlZmVyZW5jZU9iamVjdChDb250ZXh0LT5FdmVu
dCk7CisgICAgUnRsWmVyb01lbW9yeShDb250ZXh0LCBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9D
T05URVhUKSk7CisgICAgRXhGcmVlUG9vbFdpdGhUYWcoQ29udGV4dCwgWEVOSUZBQ0VfUE9PTF9U
QUcpOworfQorCitERUNMU1BFQ19OT0lOTElORQorTlRTVEFUVVMKK0lvY3RsU3VzcGVuZERlcmVn
aXN0ZXIoCisgICAgX19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLAorICAgIF9faW4gIFBWT0lE
ICAgICAgICAgICAgIEJ1ZmZlciwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwK
KyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sCisgICAgX19pbiAgUEZJTEVfT0JK
RUNUICAgICAgRmlsZU9iamVjdAorICAgICkKK3sKKyAgICBOVFNUQVRVUyBzdGF0dXM7CisgICAg
UFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIEluID0gQnVmZmVyOworICAgIFBYRU5JRkFD
RV9TVVNQRU5EX0NPTlRFWFQgQ29udGV4dCA9IE5VTEw7CisgICAgS0lSUUwgSXJxbDsKKyAgICBQ
TElTVF9FTlRSWSBOb2RlOworCisgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVGRkVSX1NJ
WkU7CisgICAgaWYgKEluTGVuICE9IHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09V
VCkgfHwKKyAgICAgICAgT3V0TGVuICE9IDApIHsKKyAgICAgICAgZ290byBmYWlsMTsKKyAgICB9
CisKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0UsICI+IENvbnRleHQgJXAsIEZPICVwXG4i
LCBJbi0+Q29udGV4dCwgRmlsZU9iamVjdCk7CisKKyAgICBLZUFjcXVpcmVTcGluTG9jaygmRmRv
LT5TdXNwZW5kTG9jaywgJklycWwpOworICAgIE5vZGUgPSBGZG8tPlN1c3BlbmRMaXN0LkZsaW5r
OworICAgIHdoaWxlIChOb2RlLT5GbGluayAhPSBGZG8tPlN1c3BlbmRMaXN0LkZsaW5rKSB7Cisg
ICAgICAgIENvbnRleHQgPSBDT05UQUlOSU5HX1JFQ09SRChOb2RlLCBYRU5JRkFDRV9TVVNQRU5E
X0NPTlRFWFQsIEVudHJ5KTsKKworICAgICAgICBOb2RlID0gTm9kZS0+Rmxpbms7CisgICAgICAg
IGlmIChDb250ZXh0ICE9IEluLT5Db250ZXh0IHx8CisgICAgICAgICAgICBDb250ZXh0LT5GaWxl
T2JqZWN0ICE9IEZpbGVPYmplY3QpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgUmVtb3ZlRW50cnlMaXN0KCZDb250ZXh0LT5FbnRyeSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5TdXNwZW5kTG9jaywgSXJx
bCk7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9UX0ZPVU5EOworICAgIGlmIChDb250ZXh0ID09
IE5VTEwgfHwgQ29udGV4dCAhPSBJbi0+Q29udGV4dCkKKyAgICAgICAgZ290byBmYWlsMjsKKwor
ICAgIFN1c3BlbmRGcmVlRXZlbnQoRmRvLCBDb250ZXh0KTsKKworICAgIHJldHVybiBTVEFUVVNf
U1VDQ0VTUzsKKworZmFpbDI6CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJc
biIpOworCitmYWlsMToKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJST1IsICJGYWlsMSAoJTA4
eClcbiIsIHN0YXR1cyk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworVk9JRAorU3VzcGVuZEV2
ZW50RmlyZSgKKyAgICBfX2luICAgIFBYRU5JRkFDRV9GRE8gICBGZG8KKyAgICApCit7CisgICAg
S0lSUUwgICAgICAgSXJxbDsKKyAgICBQTElTVF9FTlRSWSBOb2RlOworICAgIFBYRU5JRkFDRV9T
VVNQRU5EX0NPTlRFWFQgQ29udGV4dDsKKworICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPlN1
c3BlbmRMb2NrLCAmSXJxbCk7CisgICAgTm9kZSA9IEZkby0+U3VzcGVuZExpc3QuRmxpbms7Cisg
ICAgd2hpbGUgKE5vZGUtPkZsaW5rICE9IEZkby0+U3VzcGVuZExpc3QuRmxpbmspIHsKKyAgICAg
ICAgQ29udGV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKE5vZGUsIFhFTklGQUNFX1NVU1BFTkRfQ09O
VEVYVCwgRW50cnkpOworCisgICAgICAgIEtlU2V0RXZlbnQoQ29udGV4dC0+RXZlbnQsIElPX05P
X0lOQ1JFTUVOVCwgRkFMU0UpOworCisgICAgICAgIE5vZGUgPSBOb2RlLT5GbGluazsKKyAgICB9
CisgICAgS2VSZWxlYXNlU3BpbkxvY2soJkZkby0+U3VzcGVuZExvY2ssIElycWwpOworfQpkaWZm
IC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5jCmlu
ZGV4IGE4YTU1MzguLjJkZjI5OWMgMTAwNjQ0Ci0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuYwor
KysgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMKQEAgLTk2LDYgKzk2LDcgQEAgWGVuSWZhY2VDbGVh
bnVwKAogICAgIFBMSVNUX0VOVFJZIE5vZGU7CiAgICAgUFhFTklGQUNFX1NUT1JFX0NPTlRFWFQg
U3RvcmVDb250ZXh0OwogICAgIFBYRU5JRkFDRV9FVlRDSE5fQ09OVEVYVCBFdnRjaG5Db250ZXh0
OworICAgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQgU3VzcGVuZENvbnRleHQ7CiAgICAgS0lS
UUwgSXJxbDsKICAgICBMSVNUX0VOVFJZIFRvRnJlZTsKIApAQCAtMTQxLDYgKzE0MiwyMiBAQCBY
ZW5JZmFjZUNsZWFudXAoCiAgICAgICAgIFJlbW92ZUVudHJ5TGlzdCgmRXZ0Y2huQ29udGV4dC0+
RW50cnkpOwogICAgICAgICBFdnRjaG5GcmVlKEZkbywgRXZ0Y2huQ29udGV4dCk7CiAgICAgfQor
ICAgICAKKyAgICAvLyBzdXNwZW5kIGV2ZW50cworICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8t
PlN1c3BlbmRMb2NrLCAmSXJxbCk7CisgICAgTm9kZSA9IEZkby0+U3VzcGVuZExpc3QuRmxpbms7
CisgICAgd2hpbGUgKE5vZGUtPkZsaW5rICE9IEZkby0+U3VzcGVuZExpc3QuRmxpbmspIHsKKyAg
ICAgICAgU3VzcGVuZENvbnRleHQgPSBDT05UQUlOSU5HX1JFQ09SRChOb2RlLCBYRU5JRkFDRV9T
VVNQRU5EX0NPTlRFWFQsIEVudHJ5KTsKKworICAgICAgICBOb2RlID0gTm9kZS0+Rmxpbms7Cisg
ICAgICAgIGlmIChTdXNwZW5kQ29udGV4dC0+RmlsZU9iamVjdCAhPSBGaWxlT2JqZWN0KQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KFRSQUNFLCAi
U3VzcGVuZCBjb250ZXh0ICVwXG4iLCBTdXNwZW5kQ29udGV4dCk7CisgICAgICAgIFJlbW92ZUVu
dHJ5TGlzdCgmU3VzcGVuZENvbnRleHQtPkVudHJ5KTsKKyAgICAgICAgU3VzcGVuZEZyZWVFdmVu
dChGZG8sIFN1c3BlbmRDb250ZXh0KTsKKyAgICB9CisgICAgS2VSZWxlYXNlU3BpbkxvY2soJkZk
by0+U3VzcGVuZExvY2ssIElycWwpOwogfQogCiBOVFNUQVRVUwpAQCAtMjI3LDYgKzI0NCwxOSBA
QCBYZW5JZmFjZUlvY3RsKAogICAgICAgICBzdGF0dXMgPSBJb2N0bEdudHRhYlVubWFwRm9yZWln
blBhZ2VzKEZkbywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuKTsKICAgICAgICAgYnJlYWs7CiAKKyAg
ICAgICAgLy8gc3VzcGVuZAorICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9HRVRfQ09V
TlQ6CisgICAgICAgIHN0YXR1cyA9IElvY3RsU3VzcGVuZEdldENvdW50KEZkbywgQnVmZmVyLCBJ
bkxlbiwgT3V0TGVuLCAmSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbik7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBJT0NUTF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSOgorICAgICAgICBz
dGF0dXMgPSBJb2N0bFN1c3BlbmRSZWdpc3RlcihGZG8sIEJ1ZmZlciwgSW5MZW4sIE91dExlbiwg
U3RhY2stPkZpbGVPYmplY3QsICZJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUjoKKyAg
ICAgICAgc3RhdHVzID0gSW9jdGxTdXNwZW5kRGVyZWdpc3RlcihGZG8sIEJ1ZmZlciwgSW5MZW4s
IE91dExlbiwgU3RhY2stPkZpbGVPYmplY3QpOworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0RFVklDRV9SRVFVRVNUOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuaCBiL3NyYy94ZW5p
ZmFjZS9pb2N0bHMuaAppbmRleCBkYTI3M2NlLi43ZGQzNGVlIDEwMDY0NAotLS0gYS9zcmMveGVu
aWZhY2UvaW9jdGxzLmgKKysrIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5oCkBAIC02Myw2ICs2Mywx
MiBAQCB0eXBlZGVmIHN0cnVjdCBfWEVOSUZBQ0VfRVZUQ0hOX0NPTlRFWFQgewogICAgIFBWT0lE
ICAgICAgICAgICAgICAgICAgRmlsZU9iamVjdDsKIH0gWEVOSUZBQ0VfRVZUQ0hOX0NPTlRFWFQs
ICpQWEVOSUZBQ0VfRVZUQ0hOX0NPTlRFWFQ7CiAKK3R5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9T
VVNQRU5EX0NPTlRFWFQgeworICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIEVudHJ5OworICAg
IFBLRVZFTlQgICAgICAgICAgICAgICAgIEV2ZW50OworICAgIFBWT0lEICAgICAgICAgICAgICAg
ICAgIEZpbGVPYmplY3Q7Cit9IFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCwgKlBYRU5JRkFDRV9T
VVNQRU5EX0NPTlRFWFQ7CisKIHR5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9HUkFOVF9DT05URVhU
IHsKICAgICBYRU5JRkFDRV9DT05URVhUX0lEICAgICAgICBJZDsKICAgICBMSVNUX0VOVFJZICAg
ICAgICAgICAgICAgICBFbnRyeTsKQEAgLTM2Myw1ICszNjksNDUgQEAgR250dGFiRnJlZU1hcCgK
ICAgICBfX2lub3V0ICBQWEVOSUZBQ0VfTUFQX0NPTlRFWFQgQ29udGV4dAogICAgICk7CiAKK05U
U1RBVFVTCitJb2N0bFN1c3BlbmRHZXRDb3VudCgKKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAg
ICBGZG8sCisgICAgX19pbiAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLAorICAgIF9faW4gIFVM
T05HICAgICAgICAgICAgIEluTGVuLAorICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExl
biwKKyAgICBfX291dCBQVUxPTkdfUFRSICAgICAgICBJbmZvCisgICAgKTsKKworTlRTVEFUVVMK
K0lvY3RsU3VzcGVuZFJlZ2lzdGVyKAorICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywK
KyAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBCdWZmZXIsCisgICAgX19pbiAgVUxPTkcgICAg
ICAgICAgICAgSW5MZW4sCisgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLAorICAg
IF9faW4gIFBGSUxFX09CSkVDVCAgICAgIEZpbGVPYmplY3QsCisgICAgX19vdXQgUFVMT05HX1BU
UiAgICAgICAgSW5mbworICAgICk7CisKK05UU1RBVFVTCitJb2N0bFN1c3BlbmREZXJlZ2lzdGVy
KAorICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywKKyAgICBfX2luICBQVk9JRCAgICAg
ICAgICAgICBCdWZmZXIsCisgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sCisgICAg
X19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLAorICAgIF9faW4gIFBGSUxFX09CSkVDVCAg
ICAgIEZpbGVPYmplY3QKKyAgICApOworCitWT0lECitTdXNwZW5kRXZlbnRGaXJlKAorICAgIF9f
aW4gICAgUFhFTklGQUNFX0ZETyAgIEZkbworICAgICk7CisKK19JUlFMX3JlcXVpcmVzX21heF8o
RElTUEFUQ0hfTEVWRUwpCitWT0lECitTdXNwZW5kRnJlZUV2ZW50KAorICAgIF9faW4gICAgIFBY
RU5JRkFDRV9GRE8gRmRvLAorICAgIF9faW5vdXQgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQg
Q29udGV4dAorICAgICk7CisKICNlbmRpZiAvLyBfSU9DVExTX0hfCiAKZGlmZiAtLWdpdCBhL3Zz
MjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qIGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNl
LnZjeHByb2oKaW5kZXggYzU3ZTJhMi4uZmY3MGViMCAxMDA2NDQKLS0tIGEvdnMyMDEyL3hlbmlm
YWNlL3hlbmlmYWNlLnZjeHByb2oKKysrIGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHBy
b2oKQEAgLTc5LDYgKzc5LDcgQEAKIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVu
aWZhY2VcZmRvLmMiIC8+CiAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XHJlZ2lzdHJ5LmMiIC8+CiAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XHRocmVhZC5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxp
b2N0bF9zdXNwZW5kLmMiIC8+CiAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlm
YWNlXGlvY3RsX2V2dGNobi5jIiAvPgogCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4
ZW5pZmFjZVxpb2N0bF9nbnR0YWIuYyIgLz4KIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxz
cmNceGVuaWZhY2VcaW9jdGxfc3RvcmUuYyIgLz4KZGlmZiAtLWdpdCBhL3ZzMjAxMy94ZW5pZmFj
ZS94ZW5pZmFjZS52Y3hwcm9qIGIvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oKaW5k
ZXggMDhhYzNhMS4uM2EzYTkzNyAxMDA2NDQKLS0tIGEvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNl
LnZjeHByb2oKKysrIGIvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oKQEAgLTEzMSw2
ICsxMzEsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGZk
by5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHJlZ2lz
dHJ5LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcdGhy
ZWFkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9j
dGxfc3VzcGVuZC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlm
YWNlXGlvY3RsX2V2dGNobi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHhlbmlmYWNlXGlvY3RsX2dudHRhYi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Li5cc3JjXHhlbmlmYWNlXGlvY3RsX3N0b3JlLmMiIC8+Ci0tIAoxLjkuNC5tc3lzZ2l0LjEKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZl
bA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 10:36:06 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 10:36:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHqNC-0006ee-Bd; Tue, 28 Jun 2016 10:36:06 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9804c62b0=owen.smith@citrix.com>)
 id 1bHqNA-0006dC-UC
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 10:36:05 +0000
Received: from [85.158.143.35] by server-2.bemta-6.messagelabs.com id
 88/80-11548-41352775; Tue, 28 Jun 2016 10:36:04 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjkeJIrShJLcpLzFFi42JxWrohUlc4uCj
 cYN52bYs/ixMdGD0Of7jCEsAYxZqZl5RfkcCacfJoB3tBY13Fho7ZzA2MN5K6GDk5JAT8JU4d
 2M4KYrMJaEjM6FzMAmKLCKhL7Pu8lQnEZhZQk7i+vwusRljAQGLT80dgNSwCqhJrf1xgBLF5B
 VwlFrZcYIaYqSGxqWEGG4jNKeAmcePYNLC4EFDNhuapLBC2ksS3xS+YIXoFJU7OfMICsUtC4u
 ALkDgH0Bxuib/d9hMY+WYhqZqFpGoBI9MqRvXi1KKy1CJdQ72kosz0jJLcxMwcXUMDM73c1OL
 ixPTUnMSkYr3k/NxNjMBwYgCCHYw7nzsdYpTkYFIS5V3AUBQuxJeUn1KZkVicEV9UmpNafIhR
 hoNDSYI3IxAoJ1iUmp5akZaZAwxsmLQEB4+SCO/JAKA0b3FBYm5xZjpE6hSjopQ4bwNInwBII
 qM0D64NFk2XGGWlhHkZgQ4R4ilILcrNLEGVf8UozsGoJMy7GGQKT2ZeCdz0V0CLmYAWs1bngy
 wuSURISTUwcqpcs5Y/d2bHK5+Abe3nGh6UXJacfVs4iPmT3QMGh+yFh5e1u5dkJm69nZqev6Q
 2QuNl6+RPfkdPTFHW5VxvHbh+xb9FbO0VNvMCJ7+0d9mSJpCysmdO4qLalo3HTNW28CqeVrp7
 velR6dHN7h/PBKVZabFdXte5fcXHHUaSZ6q3Rn0vX/oqTYmlOCPRUIu5qDgRAEfw8/mhAgAA
X-Env-Sender: prvs=9804c62b0=owen.smith@citrix.com
X-Msg-Ref: server-4.tower-21.messagelabs.com!1467110161!15139287!1
X-Originating-IP: [66.165.176.89]
X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: 
 VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n,received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 10294 invoked from network); 28 Jun 2016 10:36:03 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-4.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 10:36:03 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="363166402"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 28 Jun 2016 11:35:48 +0100
Message-ID: <1467110150-11120-3-git-send-email-owen.smith@citrix.com>
X-Mailer: git-send-email 1.9.4.msysgit.1
In-Reply-To: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
MIME-Version: 1.0
X-DLP: MIA1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 2/4] Add Suspend IOCTL interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

QWRkcyBJT0NUTHMgZm9yOgoqIEdldENvdW50IC0gcmV0dXJucyBhIHZhbHVlIHdoaWNoIGNoYW5n
ZXMgb3ZlciBzdXNwZW5kCiogUmVnaXN0ZXIgLSByZWdpc3RlcnMgYW4gZXZlbnQgdGhhdCBpcyBz
ZXQgb24gcmVzdW1lIGZyb20gc3VzcGVuZAoqIERlcmVnaXN0ZXIgLSBkZXJlZ2lzdGVycyBhIHJl
c3VtZSBmcm9tIHN1c3BlbmQgZXZlbnQKClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4u
c21pdGhAY2l0cml4LmNvbT4KLS0tCiBpbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oICAgICAgICB8
ICAzNyArKysrKysrCiBzcmMveGVuaWZhY2UvZmRvLmMgICAgICAgICAgICAgICB8ICAxMiArKysK
IHNyYy94ZW5pZmFjZS9mZG8uaCAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy94ZW5pZmFjZS9p
b2N0bF9zdXNwZW5kLmMgICAgIHwgMjIyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwogc3JjL3hlbmlmYWNlL2lvY3Rscy5jICAgICAgICAgICAgfCAgMzAgKysrKysrCiBz
cmMveGVuaWZhY2UvaW9jdGxzLmggICAgICAgICAgICB8ICA0NiArKysrKysrKwogdnMyMDEyL3hl
bmlmYWNlL3hlbmlmYWNlLnZjeHByb2ogfCAgIDEgKwogdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNl
LnZjeHByb2ogfCAgIDEgKwogOCBmaWxlcyBjaGFuZ2VkLCAzNTIgaW5zZXJ0aW9ucygrKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IHNyYy94ZW5pZmFjZS9pb2N0bF9zdXNwZW5kLmMKCmRpZmYgLS1naXQg
YS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIGIvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaApp
bmRleCAxN2JlYWExLi41ZjY1ZjE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rs
cy5oCisrKyBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgKQEAgLTMyMyw0ICszMjMsNDEgQEAg
dHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX0dOVFRBQl9VTk1BUF9GT1JFSUdOX1BBR0VTX0lOIHsK
ICAgICBVTE9ORyBSZXF1ZXN0SWQ7IC8qISBSZXF1ZXN0IElEIHVzZWQgaW4gdGhlIGNvcnJlc3Bv
bmRpbmcgSU9DVExfWEVOSUZBQ0VfR05UVEFCX01BUF9GT1JFSUdOX1BBR0VTIGNhbGwgKi8KIH0g
WEVOSUZBQ0VfR05UVEFCX1VOTUFQX0ZPUkVJR05fUEFHRVNfSU4sICpQWEVOSUZBQ0VfR05UVEFC
X1VOTUFQX0ZPUkVJR05fUEFHRVNfSU47CiAKKy8qISBcYnJpZWYgR2V0cyB0aGUgY3VycmVudCBz
dXNwZW5kIGNvdW50LgorCisgICAgSW5wdXQ6IE5vbmUKKworICAgIE91dHB1dDogVUxPTkcKKyov
CisjZGVmaW5lIElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfR0VUX0NPVU5UIFwKKyAgICBDVExfQ09E
RShGSUxFX0RFVklDRV9VTktOT1dOLCAweDgzMCwgTUVUSE9EX0JVRkZFUkVELCBGSUxFX0FOWV9B
Q0NFU1MpCisKKy8qISBcYnJpZWYgSW5wdXQgZm9yIElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfUkVH
SVNURVIgKi8KK3R5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOIHsK
KyAgICBIQU5ETEUgRXZlbnQ7IC8qITwgSGFuZGxlIHRvIGFuIGV2ZW50IG9iamVjdCB0aGF0IHdp
bGwgcmVjZWl2ZSBzdXNwZW5kIG5vdGlmaWNhdGlvbnMgKi8KK30gWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9JTiwgKlBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOOworCisvKiEgXGJyaWVm
IE91dHB1dCBmb3IgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUiwgSW5wdXQgZm9yIElP
Q1RMX1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUiAqLwordHlwZWRlZiBzdHJ1Y3QgX1hFTklG
QUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIHsKKyAgICBQVk9JRCBDb250ZXh0OyAvKiE8IEhhbmRs
ZSB0byB0aGUgc3VzcGVuZCBldmVudCAqLworfSBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09V
VCwgKlBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVDsKKworLyohIFxicmllZiBSZWdpc3Rl
cnMgYW4gZXZlbnQgd2hpY2ggaXMgc2lnbmFsbGVkIG9uIHJlc3VtZS1mcm9tLXN1c3BlbmQKKwor
ICAgIElucHV0OiBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX0lOCisKKyAgICBPdXRwdXQ6IFhF
TklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUCisqLworI2RlZmluZSBJT0NUTF9YRU5JRkFDRV9T
VVNQRU5EX1JFR0lTVEVSIFwKKyAgICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktOT1dOLCAweDgz
MSwgTUVUSE9EX0JVRkZFUkVELCBGSUxFX0FOWV9BQ0NFU1MpCisKKy8qISBcYnJpZWYgRGVyZWdp
c3RlcnMgYW4gZXZlbnQgd2hpY2ggaXMgc2lnbmFsbGVkIG9uIHJlc3VtZS1mcm9tLXN1c3BlbmQK
KworICAgIElucHV0OiBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVAorCisgICAgT3V0cHV0
OiBOb25lCisqLworI2RlZmluZSBJT0NUTF9YRU5JRkFDRV9TVVNQRU5EX0RFUkVHSVNURVIgXAor
ICAgIENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sIDB4ODMyLCBNRVRIT0RfQlVGRkVSRUQs
IEZJTEVfQU5ZX0FDQ0VTUykKKwogI2VuZGlmIC8vIF9YRU5JRkFDRV9JT0NUTFNfSF8KZGlmZiAt
LWdpdCBhL3NyYy94ZW5pZmFjZS9mZG8uYyBiL3NyYy94ZW5pZmFjZS9mZG8uYwppbmRleCBiYThk
MTlhLi4xOWU1MGZlIDEwMDY0NAotLS0gYS9zcmMveGVuaWZhY2UvZmRvLmMKKysrIGIvc3JjL3hl
bmlmYWNlL2Zkby5jCkBAIC05MDgsNiArOTA4LDcgQEAgRmRvU3VzcGVuZENhbGxiYWNrTGF0ZSgK
ICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKIAogICAgIFdtaUZpcmVTdXNwZW5kRXZl
bnQoRmRvKTsKKyAgICBTdXNwZW5kRXZlbnRGaXJlKEZkbyk7CiB9CiAKIHN0YXRpYyBERUNMU1BF
Q19OT0lOTElORSBOVFNUQVRVUwpAQCAtMjU5Myw2ICsyNTk0LDkgQEAgRmRvQ3JlYXRlKAogICAg
IEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZGZG8tPkV2dGNobkxvY2spOwogICAgIEluaXRpYWxpemVM
aXN0SGVhZCgmRmRvLT5FdnRjaG5MaXN0KTsKIAorICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZG
ZG8tPlN1c3BlbmRMb2NrKTsKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkZkby0+U3VzcGVuZExp
c3QpOworCiAgICAgS2VJbml0aWFsaXplU3BpbkxvY2soJkZkby0+SXJwUXVldWVMb2NrKTsKICAg
ICBJbml0aWFsaXplTGlzdEhlYWQoJkZkby0+SXJwTGlzdCk7CiAKQEAgLTI2MjUsNiArMjYyOSwx
MCBAQCBmYWlsMTU6CiAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5JcnBMaXN0LCBzaXplb2YgKExJ
U1RfRU5UUlkpKTsKICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVlTG9jaywgc2l6ZW9m
IChLU1BJTl9MT0NLKSk7CiAKKyAgICBBU1NFUlQoSXNMaXN0RW1wdHkoJkZkby0+U3VzcGVuZExp
c3QpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlN1c3BlbmRMaXN0LCBzaXplb2YgKExJU1Rf
RU5UUlkpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlN1c3BlbmRMb2NrLCBzaXplb2YgKEtT
UElOX0xPQ0spKTsKKwogICAgIEFTU0VSVChJc0xpc3RFbXB0eSgmRmRvLT5FdnRjaG5MaXN0KSk7
CiAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5FdnRjaG5MaXN0LCBzaXplb2YgKExJU1RfRU5UUlkp
KTsKICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkV2dGNobkxvY2ssIHNpemVvZiAoS1NQSU5fTE9D
SykpOwpAQCAtMjc0Nyw2ICsyNzU1LDEwIEBAIEZkb0Rlc3Ryb3koCiAgICAgUnRsWmVyb01lbW9y
eSgmRmRvLT5JcnBRdWV1ZUxvY2ssIHNpemVvZiAoS1NQSU5fTE9DSykpOwogICAgIFJ0bFplcm9N
ZW1vcnkoJkZkby0+SXJwUXVldWUsIHNpemVvZiAoSU9fQ1NRKSk7CiAKKyAgICBBU1NFUlQoSXNM
aXN0RW1wdHkoJkZkby0+U3VzcGVuZExpc3QpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlN1
c3BlbmRMaXN0LCBzaXplb2YgKExJU1RfRU5UUlkpKTsKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8t
PlN1c3BlbmRMb2NrLCBzaXplb2YgKEtTUElOX0xPQ0spKTsKKwogICAgIEFTU0VSVChJc0xpc3RF
bXB0eSgmRmRvLT5FdnRjaG5MaXN0KSk7CiAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5FdnRjaG5M
aXN0LCBzaXplb2YgKExJU1RfRU5UUlkpKTsKICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkV2dGNo
bkxvY2ssIHNpemVvZiAoS1NQSU5fTE9DSykpOwpkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2Zk
by5oIGIvc3JjL3hlbmlmYWNlL2Zkby5oCmluZGV4IDZjZDYyOGMuLjA3OTE5MDYgMTAwNjQ0Ci0t
LSBhL3NyYy94ZW5pZmFjZS9mZG8uaAorKysgYi9zcmMveGVuaWZhY2UvZmRvLmgKQEAgLTkwLDYg
KzkwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX0ZETyB7CiAgICAgS1NQSU5fTE9DSyAg
ICAgICAgICAgICAgICAgICAgICBFdnRjaG5Mb2NrOwogICAgIExJU1RfRU5UUlkgICAgICAgICAg
ICAgICAgICAgICAgRXZ0Y2huTGlzdDsKIAorICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAg
ICAgICAgU3VzcGVuZExvY2s7CisgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICBT
dXNwZW5kTGlzdDsKKwogICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAgICAgICAgR250dGFi
Q2FjaGVMb2NrOwogCiAgICAgSU9fQ1NRICAgICAgICAgICAgICAgICAgICAgICAgICBJcnBRdWV1
ZTsKZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bF9zdXNwZW5kLmMgYi9zcmMveGVuaWZh
Y2UvaW9jdGxfc3VzcGVuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4
NDg4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuaWZhY2UvaW9jdGxfc3VzcGVuZC5jCkBA
IC0wLDAgKzEsMjIyIEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisgKgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUK
KyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORAorICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisgKiBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
KyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJkcml2ZXIuaCIKKyNpbmNsdWRlICJp
b2N0bHMuaCIKKyNpbmNsdWRlICJ4ZW5pZmFjZV9pb2N0bHMuaCIKKyNpbmNsdWRlICJsb2cuaCIK
KworREVDTFNQRUNfTk9JTkxJTkUKK05UU1RBVFVTCitJb2N0bFN1c3BlbmRHZXRDb3VudCgKKyAg
ICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sCisgICAgX19pbiAgUENIQVIgICAgICAgICAg
ICAgQnVmZmVyLAorICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLAorICAgIF9faW4g
IFVMT05HICAgICAgICAgICAgIE91dExlbiwKKyAgICBfX291dCBQVUxPTkdfUFRSICAgICAgICBJ
bmZvCisgICAgKQoreworICAgIE5UU1RBVFVTICAgIHN0YXR1czsKKyAgICBQVUxPTkcgICAgICBW
YWx1ZTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JVRkZFUl9TSVpFOworICAgIGlm
IChJbkxlbiAhPSAwKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgaWYgKE91dExlbiAhPSBz
aXplb2YoVUxPTkcpKQorICAgICAgICBnb3RvIGZhaWwyOworCisgICAgVmFsdWUgPSAoUFVMT05H
KUJ1ZmZlcjsKKyAgICAqVmFsdWUgPSBYRU5CVVNfU1VTUEVORChHZXRDb3VudCwgJkZkby0+U3Vz
cGVuZEludGVyZmFjZSk7IAorICAgICpJbmZvID0gKFVMT05HX1BUUilzaXplb2YoVUxPTkcpOwor
ICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgcmV0dXJuIHN0YXR1czsKKworZmFp
bDI6CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJcbiIpOworZmFpbDE6Cisg
ICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOwor
ICAgIHJldHVybiBzdGF0dXM7Cit9CisKK0RFQ0xTUEVDX05PSU5MSU5FCitOVFNUQVRVUworSW9j
dGxTdXNwZW5kUmVnaXN0ZXIoCisgICAgX19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLAorICAg
IF9faW4gIFBWT0lEICAgICAgICAgICAgIEJ1ZmZlciwKKyAgICBfX2luICBVTE9ORyAgICAgICAg
ICAgICBJbkxlbiwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sCisgICAgX19p
biAgUEZJTEVfT0JKRUNUICAgICAgRmlsZU9iamVjdCwKKyAgICBfX291dCBQVUxPTkdfUFRSICAg
ICAgICBJbmZvCisgICAgKQoreworICAgIE5UU1RBVFVTIHN0YXR1czsKKyAgICBQWEVOSUZBQ0Vf
U1VTUEVORF9SRUdJU1RFUl9JTiBJbiA9IEJ1ZmZlcjsKKyAgICBQWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9PVVQgT3V0ID0gQnVmZmVyOworICAgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQg
Q29udGV4dDsKKworICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JVRkZFUl9TSVpFOworICAg
IGlmIChJbkxlbiAhPSBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9JTikgfHwKKyAg
ICAgICAgT3V0TGVuICE9IHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCkpIHsK
KyAgICAgICAgZ290byBmYWlsMTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVN
T1JZOworICAgIENvbnRleHQgPSBFeEFsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLCBz
aXplb2YoWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUKSwgWEVOSUZBQ0VfUE9PTF9UQUcpOworICAg
IGlmIChDb250ZXh0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICBSdGxaZXJv
TWVtb3J5KENvbnRleHQsIHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQpKTsKKworICAg
IENvbnRleHQtPkZpbGVPYmplY3QgPSBGaWxlT2JqZWN0OworCisgICAgc3RhdHVzID0gT2JSZWZl
cmVuY2VPYmplY3RCeUhhbmRsZShJbi0+RXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFVkVOVF9NT0RJRllfU1RBVEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqRXhFdmVudE9iamVjdFR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZDb250ZXh0LT5FdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAg
ICBnb3RvIGZhaWwzOworCisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KFRSQUNFLCAiPiBTdXNwZW5k
IEV2ZW50ICVwLCBGTyAlcFxuIiwgSW4tPkV2ZW50LCBGaWxlT2JqZWN0KTsKKyAgICBFeEludGVy
bG9ja2VkSW5zZXJ0VGFpbExpc3QoJkZkby0+U3VzcGVuZExpc3QsICZDb250ZXh0LT5FbnRyeSwg
JkZkby0+U3VzcGVuZExvY2spOworCisgICAgT3V0LT5Db250ZXh0ID0gQ29udGV4dDsKKyAgICAq
SW5mbyA9IHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworCitmYWlsMzoKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJST1IsICJGYWls
M1xuIik7CisgICAgUnRsWmVyb01lbW9yeShDb250ZXh0LCBzaXplb2YoWEVOSUZBQ0VfU1VTUEVO
RF9DT05URVhUKSk7CisgICAgRXhGcmVlUG9vbFdpdGhUYWcoQ29udGV4dCwgWEVOSUZBQ0VfUE9P
TF9UQUcpOworCitmYWlsMjoKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJST1IsICJGYWlsMlxu
Iik7CisKK2ZhaWwxOgorICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4
KVxuIiwgc3RhdHVzKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitfSVJRTF9yZXF1aXJlc19t
YXhfKERJU1BBVENIX0xFVkVMKQorVk9JRAorU3VzcGVuZEZyZWVFdmVudCgKKyAgICBfX2luICAg
ICBQWEVOSUZBQ0VfRkRPIEZkbywKKyAgICBfX2lub3V0ICBQWEVOSUZBQ0VfU1VTUEVORF9DT05U
RVhUIENvbnRleHQKKyAgICApCit7CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KFRSQUNFLCAiQ29u
dGV4dCAlcCwgRk8gJXBcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQsIENvbnRl
eHQtPkZpbGVPYmplY3QpOworCisgICAgT2JEZXJlZmVyZW5jZU9iamVjdChDb250ZXh0LT5FdmVu
dCk7CisgICAgUnRsWmVyb01lbW9yeShDb250ZXh0LCBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9D
T05URVhUKSk7CisgICAgRXhGcmVlUG9vbFdpdGhUYWcoQ29udGV4dCwgWEVOSUZBQ0VfUE9PTF9U
QUcpOworfQorCitERUNMU1BFQ19OT0lOTElORQorTlRTVEFUVVMKK0lvY3RsU3VzcGVuZERlcmVn
aXN0ZXIoCisgICAgX19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLAorICAgIF9faW4gIFBWT0lE
ICAgICAgICAgICAgIEJ1ZmZlciwKKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwK
KyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sCisgICAgX19pbiAgUEZJTEVfT0JK
RUNUICAgICAgRmlsZU9iamVjdAorICAgICkKK3sKKyAgICBOVFNUQVRVUyBzdGF0dXM7CisgICAg
UFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIEluID0gQnVmZmVyOworICAgIFBYRU5JRkFD
RV9TVVNQRU5EX0NPTlRFWFQgQ29udGV4dCA9IE5VTEw7CisgICAgS0lSUUwgSXJxbDsKKyAgICBQ
TElTVF9FTlRSWSBOb2RlOworCisgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVGRkVSX1NJ
WkU7CisgICAgaWYgKEluTGVuICE9IHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09V
VCkgfHwKKyAgICAgICAgT3V0TGVuICE9IDApIHsKKyAgICAgICAgZ290byBmYWlsMTsKKyAgICB9
CisKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0UsICI+IENvbnRleHQgJXAsIEZPICVwXG4i
LCBJbi0+Q29udGV4dCwgRmlsZU9iamVjdCk7CisKKyAgICBLZUFjcXVpcmVTcGluTG9jaygmRmRv
LT5TdXNwZW5kTG9jaywgJklycWwpOworICAgIE5vZGUgPSBGZG8tPlN1c3BlbmRMaXN0LkZsaW5r
OworICAgIHdoaWxlIChOb2RlLT5GbGluayAhPSBGZG8tPlN1c3BlbmRMaXN0LkZsaW5rKSB7Cisg
ICAgICAgIENvbnRleHQgPSBDT05UQUlOSU5HX1JFQ09SRChOb2RlLCBYRU5JRkFDRV9TVVNQRU5E
X0NPTlRFWFQsIEVudHJ5KTsKKworICAgICAgICBOb2RlID0gTm9kZS0+Rmxpbms7CisgICAgICAg
IGlmIChDb250ZXh0ICE9IEluLT5Db250ZXh0IHx8CisgICAgICAgICAgICBDb250ZXh0LT5GaWxl
T2JqZWN0ICE9IEZpbGVPYmplY3QpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgUmVtb3ZlRW50cnlMaXN0KCZDb250ZXh0LT5FbnRyeSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5TdXNwZW5kTG9jaywgSXJx
bCk7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9UX0ZPVU5EOworICAgIGlmIChDb250ZXh0ID09
IE5VTEwgfHwgQ29udGV4dCAhPSBJbi0+Q29udGV4dCkKKyAgICAgICAgZ290byBmYWlsMjsKKwor
ICAgIFN1c3BlbmRGcmVlRXZlbnQoRmRvLCBDb250ZXh0KTsKKworICAgIHJldHVybiBTVEFUVVNf
U1VDQ0VTUzsKKworZmFpbDI6CisgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJc
biIpOworCitmYWlsMToKKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJST1IsICJGYWlsMSAoJTA4
eClcbiIsIHN0YXR1cyk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworVk9JRAorU3VzcGVuZEV2
ZW50RmlyZSgKKyAgICBfX2luICAgIFBYRU5JRkFDRV9GRE8gICBGZG8KKyAgICApCit7CisgICAg
S0lSUUwgICAgICAgSXJxbDsKKyAgICBQTElTVF9FTlRSWSBOb2RlOworICAgIFBYRU5JRkFDRV9T
VVNQRU5EX0NPTlRFWFQgQ29udGV4dDsKKworICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPlN1
c3BlbmRMb2NrLCAmSXJxbCk7CisgICAgTm9kZSA9IEZkby0+U3VzcGVuZExpc3QuRmxpbms7Cisg
ICAgd2hpbGUgKE5vZGUtPkZsaW5rICE9IEZkby0+U3VzcGVuZExpc3QuRmxpbmspIHsKKyAgICAg
ICAgQ29udGV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKE5vZGUsIFhFTklGQUNFX1NVU1BFTkRfQ09O
VEVYVCwgRW50cnkpOworCisgICAgICAgIEtlU2V0RXZlbnQoQ29udGV4dC0+RXZlbnQsIElPX05P
X0lOQ1JFTUVOVCwgRkFMU0UpOworCisgICAgICAgIE5vZGUgPSBOb2RlLT5GbGluazsKKyAgICB9
CisgICAgS2VSZWxlYXNlU3BpbkxvY2soJkZkby0+U3VzcGVuZExvY2ssIElycWwpOworfQpkaWZm
IC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5jCmlu
ZGV4IGE4YTU1MzguLjJkZjI5OWMgMTAwNjQ0Ci0tLSBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuYwor
KysgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMKQEAgLTk2LDYgKzk2LDcgQEAgWGVuSWZhY2VDbGVh
bnVwKAogICAgIFBMSVNUX0VOVFJZIE5vZGU7CiAgICAgUFhFTklGQUNFX1NUT1JFX0NPTlRFWFQg
U3RvcmVDb250ZXh0OwogICAgIFBYRU5JRkFDRV9FVlRDSE5fQ09OVEVYVCBFdnRjaG5Db250ZXh0
OworICAgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQgU3VzcGVuZENvbnRleHQ7CiAgICAgS0lS
UUwgSXJxbDsKICAgICBMSVNUX0VOVFJZIFRvRnJlZTsKIApAQCAtMTQxLDYgKzE0MiwyMiBAQCBY
ZW5JZmFjZUNsZWFudXAoCiAgICAgICAgIFJlbW92ZUVudHJ5TGlzdCgmRXZ0Y2huQ29udGV4dC0+
RW50cnkpOwogICAgICAgICBFdnRjaG5GcmVlKEZkbywgRXZ0Y2huQ29udGV4dCk7CiAgICAgfQor
ICAgICAKKyAgICAvLyBzdXNwZW5kIGV2ZW50cworICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8t
PlN1c3BlbmRMb2NrLCAmSXJxbCk7CisgICAgTm9kZSA9IEZkby0+U3VzcGVuZExpc3QuRmxpbms7
CisgICAgd2hpbGUgKE5vZGUtPkZsaW5rICE9IEZkby0+U3VzcGVuZExpc3QuRmxpbmspIHsKKyAg
ICAgICAgU3VzcGVuZENvbnRleHQgPSBDT05UQUlOSU5HX1JFQ09SRChOb2RlLCBYRU5JRkFDRV9T
VVNQRU5EX0NPTlRFWFQsIEVudHJ5KTsKKworICAgICAgICBOb2RlID0gTm9kZS0+Rmxpbms7Cisg
ICAgICAgIGlmIChTdXNwZW5kQ29udGV4dC0+RmlsZU9iamVjdCAhPSBGaWxlT2JqZWN0KQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KFRSQUNFLCAi
U3VzcGVuZCBjb250ZXh0ICVwXG4iLCBTdXNwZW5kQ29udGV4dCk7CisgICAgICAgIFJlbW92ZUVu
dHJ5TGlzdCgmU3VzcGVuZENvbnRleHQtPkVudHJ5KTsKKyAgICAgICAgU3VzcGVuZEZyZWVFdmVu
dChGZG8sIFN1c3BlbmRDb250ZXh0KTsKKyAgICB9CisgICAgS2VSZWxlYXNlU3BpbkxvY2soJkZk
by0+U3VzcGVuZExvY2ssIElycWwpOwogfQogCiBOVFNUQVRVUwpAQCAtMjI3LDYgKzI0NCwxOSBA
QCBYZW5JZmFjZUlvY3RsKAogICAgICAgICBzdGF0dXMgPSBJb2N0bEdudHRhYlVubWFwRm9yZWln
blBhZ2VzKEZkbywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuKTsKICAgICAgICAgYnJlYWs7CiAKKyAg
ICAgICAgLy8gc3VzcGVuZAorICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9HRVRfQ09V
TlQ6CisgICAgICAgIHN0YXR1cyA9IElvY3RsU3VzcGVuZEdldENvdW50KEZkbywgQnVmZmVyLCBJ
bkxlbiwgT3V0TGVuLCAmSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbik7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBJT0NUTF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSOgorICAgICAgICBz
dGF0dXMgPSBJb2N0bFN1c3BlbmRSZWdpc3RlcihGZG8sIEJ1ZmZlciwgSW5MZW4sIE91dExlbiwg
U3RhY2stPkZpbGVPYmplY3QsICZJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUjoKKyAg
ICAgICAgc3RhdHVzID0gSW9jdGxTdXNwZW5kRGVyZWdpc3RlcihGZG8sIEJ1ZmZlciwgSW5MZW4s
IE91dExlbiwgU3RhY2stPkZpbGVPYmplY3QpOworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0RFVklDRV9SRVFVRVNUOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9pb2N0bHMuaCBiL3NyYy94ZW5p
ZmFjZS9pb2N0bHMuaAppbmRleCBkYTI3M2NlLi43ZGQzNGVlIDEwMDY0NAotLS0gYS9zcmMveGVu
aWZhY2UvaW9jdGxzLmgKKysrIGIvc3JjL3hlbmlmYWNlL2lvY3Rscy5oCkBAIC02Myw2ICs2Mywx
MiBAQCB0eXBlZGVmIHN0cnVjdCBfWEVOSUZBQ0VfRVZUQ0hOX0NPTlRFWFQgewogICAgIFBWT0lE
ICAgICAgICAgICAgICAgICAgRmlsZU9iamVjdDsKIH0gWEVOSUZBQ0VfRVZUQ0hOX0NPTlRFWFQs
ICpQWEVOSUZBQ0VfRVZUQ0hOX0NPTlRFWFQ7CiAKK3R5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9T
VVNQRU5EX0NPTlRFWFQgeworICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIEVudHJ5OworICAg
IFBLRVZFTlQgICAgICAgICAgICAgICAgIEV2ZW50OworICAgIFBWT0lEICAgICAgICAgICAgICAg
ICAgIEZpbGVPYmplY3Q7Cit9IFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCwgKlBYRU5JRkFDRV9T
VVNQRU5EX0NPTlRFWFQ7CisKIHR5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9HUkFOVF9DT05URVhU
IHsKICAgICBYRU5JRkFDRV9DT05URVhUX0lEICAgICAgICBJZDsKICAgICBMSVNUX0VOVFJZICAg
ICAgICAgICAgICAgICBFbnRyeTsKQEAgLTM2Myw1ICszNjksNDUgQEAgR250dGFiRnJlZU1hcCgK
ICAgICBfX2lub3V0ICBQWEVOSUZBQ0VfTUFQX0NPTlRFWFQgQ29udGV4dAogICAgICk7CiAKK05U
U1RBVFVTCitJb2N0bFN1c3BlbmRHZXRDb3VudCgKKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAg
ICBGZG8sCisgICAgX19pbiAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLAorICAgIF9faW4gIFVM
T05HICAgICAgICAgICAgIEluTGVuLAorICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExl
biwKKyAgICBfX291dCBQVUxPTkdfUFRSICAgICAgICBJbmZvCisgICAgKTsKKworTlRTVEFUVVMK
K0lvY3RsU3VzcGVuZFJlZ2lzdGVyKAorICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywK
KyAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBCdWZmZXIsCisgICAgX19pbiAgVUxPTkcgICAg
ICAgICAgICAgSW5MZW4sCisgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLAorICAg
IF9faW4gIFBGSUxFX09CSkVDVCAgICAgIEZpbGVPYmplY3QsCisgICAgX19vdXQgUFVMT05HX1BU
UiAgICAgICAgSW5mbworICAgICk7CisKK05UU1RBVFVTCitJb2N0bFN1c3BlbmREZXJlZ2lzdGVy
KAorICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywKKyAgICBfX2luICBQVk9JRCAgICAg
ICAgICAgICBCdWZmZXIsCisgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgSW5MZW4sCisgICAg
X19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLAorICAgIF9faW4gIFBGSUxFX09CSkVDVCAg
ICAgIEZpbGVPYmplY3QKKyAgICApOworCitWT0lECitTdXNwZW5kRXZlbnRGaXJlKAorICAgIF9f
aW4gICAgUFhFTklGQUNFX0ZETyAgIEZkbworICAgICk7CisKK19JUlFMX3JlcXVpcmVzX21heF8o
RElTUEFUQ0hfTEVWRUwpCitWT0lECitTdXNwZW5kRnJlZUV2ZW50KAorICAgIF9faW4gICAgIFBY
RU5JRkFDRV9GRE8gRmRvLAorICAgIF9faW5vdXQgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQg
Q29udGV4dAorICAgICk7CisKICNlbmRpZiAvLyBfSU9DVExTX0hfCiAKZGlmZiAtLWdpdCBhL3Zz
MjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qIGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNl
LnZjeHByb2oKaW5kZXggYzU3ZTJhMi4uZmY3MGViMCAxMDA2NDQKLS0tIGEvdnMyMDEyL3hlbmlm
YWNlL3hlbmlmYWNlLnZjeHByb2oKKysrIGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHBy
b2oKQEAgLTc5LDYgKzc5LDcgQEAKIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVu
aWZhY2VcZmRvLmMiIC8+CiAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XHJlZ2lzdHJ5LmMiIC8+CiAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XHRocmVhZC5jIiAvPgorCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxp
b2N0bF9zdXNwZW5kLmMiIC8+CiAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlm
YWNlXGlvY3RsX2V2dGNobi5jIiAvPgogCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4
ZW5pZmFjZVxpb2N0bF9nbnR0YWIuYyIgLz4KIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxz
cmNceGVuaWZhY2VcaW9jdGxfc3RvcmUuYyIgLz4KZGlmZiAtLWdpdCBhL3ZzMjAxMy94ZW5pZmFj
ZS94ZW5pZmFjZS52Y3hwcm9qIGIvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oKaW5k
ZXggMDhhYzNhMS4uM2EzYTkzNyAxMDA2NDQKLS0tIGEvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNl
LnZjeHByb2oKKysrIGIvdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oKQEAgLTEzMSw2
ICsxMzEsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGZk
by5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHJlZ2lz
dHJ5LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcdGhy
ZWFkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9j
dGxfc3VzcGVuZC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlm
YWNlXGlvY3RsX2V2dGNobi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHhlbmlmYWNlXGlvY3RsX2dudHRhYi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Li5cc3JjXHhlbmlmYWNlXGlvY3RsX3N0b3JlLmMiIC8+Ci0tIAoxLjkuNC5tc3lzZ2l0LjEKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZl
bA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 13:42:54 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 13:42:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHtHv-0004Pg-T0; Tue, 28 Jun 2016 13:42:51 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9803ce555=Paul.Durrant@citrix.com>)
 id 1bHtHu-0004PU-Jb
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 13:42:50 +0000
Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id
 20/EC-17282-9DE72775; Tue, 28 Jun 2016 13:42:49 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDIsWRWlGSWpSXmKPExsWyU9JRQvdmXVG
 4QftyNos/ixMdGD0Of7jCEsAYxZqZl5RfkcCaMfn4K+aCCQcYKxZv2sbawHhhL2MXIyeHhICf
 xJ41T1lBbDYBHYmlR+czgdgiAgUS39/PYwaxmQXUJK7v7wKrERZwlji05yZLFyMHUI2LxKkuA
 YhyI4mfT1ewg9gsAqoSGxZCjOQVcJc4/+cLUDkXh5BAA6PEsQk72UASnAJuEu+2PgezGQVkJb
 40robaJS5x6wnEDRICAhJL9pxnhrBFJV4+/scKYRtIbF26D+wGZgFNifW79CFaFSWmdD9kh9g
 rKHFy5hMWEFtIQEViy+MDUGO4JVZ+/sMygVF0FpJtsxAmzUIyaRaSSQsYWVYxahSnFpWlFuka
 meolFWWmZ5TkJmbm6BoamOrlphYXJ6an5iQmFesl5+duYgTGSj0DA+MOxl3tfocYJTmYlER5F
 zAUhQvxJeWnVGYkFmfEF5XmpBYfYpTh4FCS4FWqBcoJFqWmp1akZeYAoxYmLcHBoyTCuxAkzV
 tckJhbnJkOkTrFqCglztsPkhAASWSU5sG1wRLFJUZZKWFeRgYGBiGegtSi3MwSVPlXjOIcjEr
 CvJogU3gy80rgpr8CWswEtJi1Oh9kcUkiQkqqgbHm9i4HXR7x1pCkCZlSNQ8/a2/P/iox/+2x
 yrq8Re9uyfCl17ldmb8699/FiYwVK3b9/bP/xTzLOW8XGfb3F7647qWfw7u53PUJV/bKjXIyH
 rWht6cGaUrfY7hq9/ds67TQA5zS9ntPMZ4RnibN99G+6KrMvXW9yw+uClq1Rr1i4ZWv+yyPai
 kpsRRnJBpqMRcVJwIAJJegRQ8DAAA=
X-Env-Sender: prvs=9803ce555=Paul.Durrant@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467121369!47193233!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 55032 invoked from network); 28 Jun 2016 13:42:49 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 13:42:49 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="25181952"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 2/4] Add Suspend IOCTL interface
Thread-Index: AQHR0SjvTm7TfCENsUqEhZ4EgpY485/+42Xw
Date: Tue, 28 Jun 2016 13:42:47 +0000
Message-ID: <aaac2cc6c1174653a3fca9c81959678b@AMSPEX02CL03.citrite.net>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
 <1467110150-11120-3-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1467110150-11120-3-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 2/4] Add Suspend IOCTL interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjggSnVuZSAyMDE2IDExOjM2DQo+IFRvOiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgNCj4gU3ViamVjdDog
W3dpbi1wdi1kZXZlbF0gW1BBVENIIDIvNF0gQWRkIFN1c3BlbmQgSU9DVEwgaW50ZXJmYWNlDQo+
IA0KPiBBZGRzIElPQ1RMcyBmb3I6DQo+ICogR2V0Q291bnQgLSByZXR1cm5zIGEgdmFsdWUgd2hp
Y2ggY2hhbmdlcyBvdmVyIHN1c3BlbmQNCj4gKiBSZWdpc3RlciAtIHJlZ2lzdGVycyBhbiBldmVu
dCB0aGF0IGlzIHNldCBvbiByZXN1bWUgZnJvbSBzdXNwZW5kDQo+ICogRGVyZWdpc3RlciAtIGRl
cmVnaXN0ZXJzIGEgcmVzdW1lIGZyb20gc3VzcGVuZCBldmVudA0KPiANCj4gU2lnbmVkLW9mZi1i
eTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpSZXZpZXdlZC1ieTogUGF1
bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIGluY2x1ZGUv
eGVuaWZhY2VfaW9jdGxzLmggICAgICAgIHwgIDM3ICsrKysrKysNCj4gIHNyYy94ZW5pZmFjZS9m
ZG8uYyAgICAgICAgICAgICAgIHwgIDEyICsrKw0KPiAgc3JjL3hlbmlmYWNlL2Zkby5oICAgICAg
ICAgICAgICAgfCAgIDMgKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYyAgICAgfCAy
MjINCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBzcmMveGVu
aWZhY2UvaW9jdGxzLmMgICAgICAgICAgICB8ICAzMCArKysrKysNCj4gIHNyYy94ZW5pZmFjZS9p
b2N0bHMuaCAgICAgICAgICAgIHwgIDQ2ICsrKysrKysrDQo+ICB2czIwMTIveGVuaWZhY2UveGVu
aWZhY2UudmN4cHJvaiB8ICAgMSArDQo+ICB2czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJv
aiB8ICAgMSArDQo+ICA4IGZpbGVzIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCspDQo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYw0KPiANCj4gZGlmZiAt
LWdpdCBhL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmggYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rs
cy5oDQo+IGluZGV4IDE3YmVhYTEuLjVmNjVmMTQgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUveGVu
aWZhY2VfaW9jdGxzLmgNCj4gKysrIGIvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaA0KPiBAQCAt
MzIzLDQgKzMyMyw0MSBAQCB0eXBlZGVmIHN0cnVjdA0KPiBfWEVOSUZBQ0VfR05UVEFCX1VOTUFQ
X0ZPUkVJR05fUEFHRVNfSU4gew0KPiAgICAgIFVMT05HIFJlcXVlc3RJZDsgLyohIFJlcXVlc3Qg
SUQgdXNlZCBpbiB0aGUgY29ycmVzcG9uZGluZw0KPiBJT0NUTF9YRU5JRkFDRV9HTlRUQUJfTUFQ
X0ZPUkVJR05fUEFHRVMgY2FsbCAqLw0KPiAgfSBYRU5JRkFDRV9HTlRUQUJfVU5NQVBfRk9SRUlH
Tl9QQUdFU19JTiwNCj4gKlBYRU5JRkFDRV9HTlRUQUJfVU5NQVBfRk9SRUlHTl9QQUdFU19JTjsN
Cj4gDQo+ICsvKiEgXGJyaWVmIEdldHMgdGhlIGN1cnJlbnQgc3VzcGVuZCBjb3VudC4NCj4gKw0K
PiArICAgIElucHV0OiBOb25lDQo+ICsNCj4gKyAgICBPdXRwdXQ6IFVMT05HDQo+ICsqLw0KPiAr
I2RlZmluZSBJT0NUTF9YRU5JRkFDRV9TVVNQRU5EX0dFVF9DT1VOVCBcDQo+ICsgICAgQ1RMX0NP
REUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4MzAsIE1FVEhPRF9CVUZGRVJFRCwNCj4gRklMRV9B
TllfQUNDRVNTKQ0KPiArDQo+ICsvKiEgXGJyaWVmIElucHV0IGZvciBJT0NUTF9YRU5JRkFDRV9T
VVNQRU5EX1JFR0lTVEVSICovDQo+ICt0eXBlZGVmIHN0cnVjdCBfWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9JTiB7DQo+ICsgICAgSEFORExFIEV2ZW50OyAvKiE8IEhhbmRsZSB0byBhbiBldmVu
dCBvYmplY3QgdGhhdCB3aWxsIHJlY2VpdmUgc3VzcGVuZA0KPiBub3RpZmljYXRpb25zICovDQo+
ICt9IFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfSU4sDQo+ICpQWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9JTjsNCj4gKw0KPiArLyohIFxicmllZiBPdXRwdXQgZm9yIElPQ1RMX1hFTklGQUNF
X1NVU1BFTkRfUkVHSVNURVIsIElucHV0IGZvcg0KPiBJT0NUTF9YRU5JRkFDRV9TVVNQRU5EX0RF
UkVHSVNURVIgKi8NCj4gK3R5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVS
X09VVCB7DQo+ICsgICAgUFZPSUQgQ29udGV4dDsgLyohPCBIYW5kbGUgdG8gdGhlIHN1c3BlbmQg
ZXZlbnQgKi8NCj4gK30gWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQsDQo+ICpQWEVOSUZB
Q0VfU1VTUEVORF9SRUdJU1RFUl9PVVQ7DQo+ICsNCj4gKy8qISBcYnJpZWYgUmVnaXN0ZXJzIGFu
IGV2ZW50IHdoaWNoIGlzIHNpZ25hbGxlZCBvbiByZXN1bWUtZnJvbS1zdXNwZW5kDQo+ICsNCj4g
KyAgICBJbnB1dDogWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9JTg0KPiArDQo+ICsgICAgT3V0
cHV0OiBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVA0KPiArKi8NCj4gKyNkZWZpbmUgSU9D
VExfWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUiBcDQo+ICsgICAgQ1RMX0NPREUoRklMRV9ERVZJ
Q0VfVU5LTk9XTiwgMHg4MzEsIE1FVEhPRF9CVUZGRVJFRCwNCj4gRklMRV9BTllfQUNDRVNTKQ0K
PiArDQo+ICsvKiEgXGJyaWVmIERlcmVnaXN0ZXJzIGFuIGV2ZW50IHdoaWNoIGlzIHNpZ25hbGxl
ZCBvbiByZXN1bWUtZnJvbS1zdXNwZW5kDQo+ICsNCj4gKyAgICBJbnB1dDogWEVOSUZBQ0VfU1VT
UEVORF9SRUdJU1RFUl9PVVQNCj4gKw0KPiArICAgIE91dHB1dDogTm9uZQ0KPiArKi8NCj4gKyNk
ZWZpbmUgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9ERVJFR0lTVEVSIFwNCj4gKyAgICBDVExfQ09E
RShGSUxFX0RFVklDRV9VTktOT1dOLCAweDgzMiwgTUVUSE9EX0JVRkZFUkVELA0KPiBGSUxFX0FO
WV9BQ0NFU1MpDQo+ICsNCj4gICNlbmRpZiAvLyBfWEVOSUZBQ0VfSU9DVExTX0hfDQo+IGRpZmYg
LS1naXQgYS9zcmMveGVuaWZhY2UvZmRvLmMgYi9zcmMveGVuaWZhY2UvZmRvLmMNCj4gaW5kZXgg
YmE4ZDE5YS4uMTllNTBmZSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2Zkby5jDQo+ICsr
KyBiL3NyYy94ZW5pZmFjZS9mZG8uYw0KPiBAQCAtOTA4LDYgKzkwOCw3IEBAIEZkb1N1c3BlbmRD
YWxsYmFja0xhdGUoDQo+ICAgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+IA0KPiAg
ICAgIFdtaUZpcmVTdXNwZW5kRXZlbnQoRmRvKTsNCj4gKyAgICBTdXNwZW5kRXZlbnRGaXJlKEZk
byk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+IEBA
IC0yNTkzLDYgKzI1OTQsOSBAQCBGZG9DcmVhdGUoDQo+ICAgICAgS2VJbml0aWFsaXplU3Bpbkxv
Y2soJkZkby0+RXZ0Y2huTG9jayk7DQo+ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPkV2
dGNobkxpc3QpOw0KPiANCj4gKyAgICBLZUluaXRpYWxpemVTcGluTG9jaygmRmRvLT5TdXNwZW5k
TG9jayk7DQo+ICsgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPlN1c3BlbmRMaXN0KTsNCj4g
Kw0KPiAgICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZGZG8tPklycFF1ZXVlTG9jayk7DQo+ICAg
ICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPklycExpc3QpOw0KPiANCj4gQEAgLTI2MjUsNiAr
MjYyOSwxMCBAQCBmYWlsMTU6DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5JcnBMaXN0LCBz
aXplb2YgKExJU1RfRU5UUlkpKTsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVl
TG9jaywgc2l6ZW9mIChLU1BJTl9MT0NLKSk7DQo+IA0KPiArICAgIEFTU0VSVChJc0xpc3RFbXB0
eSgmRmRvLT5TdXNwZW5kTGlzdCkpOw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+U3VzcGVu
ZExpc3QsIHNpemVvZiAoTElTVF9FTlRSWSkpOw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+
U3VzcGVuZExvY2ssIHNpemVvZiAoS1NQSU5fTE9DSykpOw0KPiArDQo+ICAgICAgQVNTRVJUKElz
TGlzdEVtcHR5KCZGZG8tPkV2dGNobkxpc3QpKTsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8t
PkV2dGNobkxpc3QsIHNpemVvZiAoTElTVF9FTlRSWSkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnko
JkZkby0+RXZ0Y2huTG9jaywgc2l6ZW9mIChLU1BJTl9MT0NLKSk7DQo+IEBAIC0yNzQ3LDYgKzI3
NTUsMTAgQEAgRmRvRGVzdHJveSgNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVl
TG9jaywgc2l6ZW9mIChLU1BJTl9MT0NLKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5J
cnBRdWV1ZSwgc2l6ZW9mIChJT19DU1EpKTsNCj4gDQo+ICsgICAgQVNTRVJUKElzTGlzdEVtcHR5
KCZGZG8tPlN1c3BlbmRMaXN0KSk7DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5TdXNwZW5k
TGlzdCwgc2l6ZW9mIChMSVNUX0VOVFJZKSk7DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5T
dXNwZW5kTG9jaywgc2l6ZW9mIChLU1BJTl9MT0NLKSk7DQo+ICsNCj4gICAgICBBU1NFUlQoSXNM
aXN0RW1wdHkoJkZkby0+RXZ0Y2huTGlzdCkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+
RXZ0Y2huTGlzdCwgc2l6ZW9mIChMSVNUX0VOVFJZKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgm
RmRvLT5FdnRjaG5Mb2NrLCBzaXplb2YgKEtTUElOX0xPQ0spKTsNCj4gZGlmZiAtLWdpdCBhL3Ny
Yy94ZW5pZmFjZS9mZG8uaCBiL3NyYy94ZW5pZmFjZS9mZG8uaA0KPiBpbmRleCA2Y2Q2MjhjLi4w
NzkxOTA2IDEwMDY0NA0KPiAtLS0gYS9zcmMveGVuaWZhY2UvZmRvLmgNCj4gKysrIGIvc3JjL3hl
bmlmYWNlL2Zkby5oDQo+IEBAIC05MCw2ICs5MCw5IEBAIHR5cGVkZWYgc3RydWN0IF9YRU5JRkFD
RV9GRE8gew0KPiAgICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAgICAgICAgRXZ0Y2huTG9j
azsNCj4gICAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgIEV2dGNobkxpc3Q7DQo+
IA0KPiArICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAgICAgICAgU3VzcGVuZExvY2s7DQo+
ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICBTdXNwZW5kTGlzdDsNCj4gKw0K
PiAgICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAgICAgICAgR250dGFiQ2FjaGVMb2NrOw0K
PiANCj4gICAgICBJT19DU1EgICAgICAgICAgICAgICAgICAgICAgICAgIElycFF1ZXVlOw0KPiBk
aWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYyBiL3NyYy94ZW5pZmFjZS9p
b2N0bF9zdXNwZW5kLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4u
ZTg0ODg2NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bF9zdXNw
ZW5kLmMNCj4gQEAgLTAsMCArMSwyMjIgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5
c3RlbXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICog
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAr
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0K
PiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsg
Kg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAr
ICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
DQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0Uu
DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImRyaXZlci5oIg0KPiArI2luY2x1ZGUgImlvY3Rs
cy5oIg0KPiArI2luY2x1ZGUgInhlbmlmYWNlX2lvY3Rscy5oIg0KPiArI2luY2x1ZGUgImxvZy5o
Ig0KPiArDQo+ICtERUNMU1BFQ19OT0lOTElORQ0KPiArTlRTVEFUVVMNCj4gK0lvY3RsU3VzcGVu
ZEdldENvdW50KA0KPiArICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4gKyAgICBf
X2luICBQQ0hBUiAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAg
ICAgICAgSW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLA0KPiAr
ICAgIF9fb3V0IFBVTE9OR19QVFIgICAgICAgIEluZm8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAg
TlRTVEFUVVMgICAgc3RhdHVzOw0KPiArICAgIFBVTE9ORyAgICAgIFZhbHVlOw0KPiArDQo+ICsg
ICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVGRkVSX1NJWkU7DQo+ICsgICAgaWYgKEluTGVu
ICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBpZiAoT3V0TGVuICE9
IHNpemVvZihVTE9ORykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDI7DQo+ICsNCj4gKyAgICBWYWx1
ZSA9IChQVUxPTkcpQnVmZmVyOw0KPiArICAgICpWYWx1ZSA9IFhFTkJVU19TVVNQRU5EKEdldENv
dW50LCAmRmRvLT5TdXNwZW5kSW50ZXJmYWNlKTsNCj4gKyAgICAqSW5mbyA9IChVTE9OR19QVFIp
c2l6ZW9mKFVMT05HKTsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiAr
ICAgIHJldHVybiBzdGF0dXM7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIFhlbklmYWNlRGVidWdQ
cmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gK2ZhaWwxOg0KPiArICAgIFhlbklmYWNlRGVidWdQ
cmludChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKyAgICByZXR1cm4gc3Rh
dHVzOw0KPiArfQ0KPiArDQo+ICtERUNMU1BFQ19OT0lOTElORQ0KPiArTlRTVEFUVVMNCj4gK0lv
Y3RsU3VzcGVuZFJlZ2lzdGVyKA0KPiArICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywN
Cj4gKyAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgX19pbiAgVUxP
TkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0
TGVuLA0KPiArICAgIF9faW4gIFBGSUxFX09CSkVDVCAgICAgIEZpbGVPYmplY3QsDQo+ICsgICAg
X19vdXQgUFVMT05HX1BUUiAgICAgICAgSW5mbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBOVFNU
QVRVUyBzdGF0dXM7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfSU4gSW4gPSBC
dWZmZXI7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIE91dCA9IEJ1ZmZl
cjsNCj4gKyAgICBQWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUIENvbnRleHQ7DQo+ICsNCj4gKyAg
ICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJfU0laRTsNCj4gKyAgICBpZiAoSW5MZW4g
IT0gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfSU4pIHx8DQo+ICsgICAgICAgIE91
dExlbiAhPSBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQpKSB7DQo+ICsgICAg
ICAgIGdvdG8gZmFpbDE7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX05P
X01FTU9SWTsNCj4gKyAgICBDb250ZXh0ID0gRXhBbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2Vk
UG9vbCwNCj4gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCksIFhFTklGQUNFX1BPT0xf
VEFHKTsNCj4gKyAgICBpZiAoQ29udGV4dCA9PSBOVUxMKQ0KPiArICAgICAgICBnb3RvIGZhaWwy
Ow0KPiArDQo+ICsgICAgUnRsWmVyb01lbW9yeShDb250ZXh0LCBzaXplb2YoWEVOSUZBQ0VfU1VT
UEVORF9DT05URVhUKSk7DQo+ICsNCj4gKyAgICBDb250ZXh0LT5GaWxlT2JqZWN0ID0gRmlsZU9i
amVjdDsNCj4gKw0KPiArICAgIHN0YXR1cyA9IE9iUmVmZXJlbmNlT2JqZWN0QnlIYW5kbGUoSW4t
PkV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZFTlRf
TU9ESUZZX1NUQVRFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KkV4RXZlbnRPYmplY3RUeXBlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVXNlck1vZGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmQ29udGV4dC0+RXZlbnQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAg
Z290byBmYWlsMzsNCj4gKw0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChUUkFDRSwgIj4gU3Vz
cGVuZCBFdmVudCAlcCwgRk8gJXBcbiIsIEluLT5FdmVudCwNCj4gRmlsZU9iamVjdCk7DQo+ICsg
ICAgRXhJbnRlcmxvY2tlZEluc2VydFRhaWxMaXN0KCZGZG8tPlN1c3BlbmRMaXN0LCAmQ29udGV4
dC0+RW50cnksICZGZG8tDQo+ID5TdXNwZW5kTG9jayk7DQo+ICsNCj4gKyAgICBPdXQtPkNvbnRl
eHQgPSBDb250ZXh0Ow0KPiArICAgICpJbmZvID0gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVH
SVNURVJfT1VUKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICsNCj4gK2ZhaWwzOg0K
PiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwzXG4iKTsNCj4gKyAgICBSdGxa
ZXJvTWVtb3J5KENvbnRleHQsIHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQpKTsNCj4g
KyAgICBFeEZyZWVQb29sV2l0aFRhZyhDb250ZXh0LCBYRU5JRkFDRV9QT09MX1RBRyk7DQo+ICsN
Cj4gK2ZhaWwyOg0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwyXG4iKTsN
Cj4gKw0KPiArZmFpbDE6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEg
KCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4g
K19JUlFMX3JlcXVpcmVzX21heF8oRElTUEFUQ0hfTEVWRUwpDQo+ICtWT0lEDQo+ICtTdXNwZW5k
RnJlZUV2ZW50KA0KPiArICAgIF9faW4gICAgIFBYRU5JRkFDRV9GRE8gRmRvLA0KPiArICAgIF9f
aW5vdXQgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQgQ29udGV4dA0KPiArICAgICkNCj4gK3sN
Cj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0UsICJDb250ZXh0ICVwLCBGTyAlcFxuIiwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCwgQ29udGV4dC0+RmlsZU9iamVjdCk7
DQo+ICsNCj4gKyAgICBPYkRlcmVmZXJlbmNlT2JqZWN0KENvbnRleHQtPkV2ZW50KTsNCj4gKyAg
ICBSdGxaZXJvTWVtb3J5KENvbnRleHQsIHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQp
KTsNCj4gKyAgICBFeEZyZWVQb29sV2l0aFRhZyhDb250ZXh0LCBYRU5JRkFDRV9QT09MX1RBRyk7
DQo+ICt9DQo+ICsNCj4gK0RFQ0xTUEVDX05PSU5MSU5FDQo+ICtOVFNUQVRVUw0KPiArSW9jdGxT
dXNwZW5kRGVyZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+
ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05H
ICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExl
biwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0DQo+ICsgICAgKQ0K
PiArew0KPiArICAgIE5UU1RBVFVTIHN0YXR1czsNCj4gKyAgICBQWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9PVVQgSW4gPSBCdWZmZXI7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRfQ09OVEVY
VCBDb250ZXh0ID0gTlVMTDsNCj4gKyAgICBLSVJRTCBJcnFsOw0KPiArICAgIFBMSVNUX0VOVFJZ
IE5vZGU7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJfU0laRTsN
Cj4gKyAgICBpZiAoSW5MZW4gIT0gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VU
KSB8fA0KPiArICAgICAgICBPdXRMZW4gIT0gMCkgew0KPiArICAgICAgICBnb3RvIGZhaWwxOw0K
PiArICAgIH0NCj4gKw0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChUUkFDRSwgIj4gQ29udGV4
dCAlcCwgRk8gJXBcbiIsIEluLT5Db250ZXh0LA0KPiBGaWxlT2JqZWN0KTsNCj4gKw0KPiArICAg
IEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPlN1c3BlbmRMb2NrLCAmSXJxbCk7DQo+ICsgICAgTm9k
ZSA9IEZkby0+U3VzcGVuZExpc3QuRmxpbms7DQo+ICsgICAgd2hpbGUgKE5vZGUtPkZsaW5rICE9
IEZkby0+U3VzcGVuZExpc3QuRmxpbmspIHsNCj4gKyAgICAgICAgQ29udGV4dCA9IENPTlRBSU5J
TkdfUkVDT1JEKE5vZGUsDQo+IFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCwgRW50cnkpOw0KPiAr
DQo+ICsgICAgICAgIE5vZGUgPSBOb2RlLT5GbGluazsNCj4gKyAgICAgICAgaWYgKENvbnRleHQg
IT0gSW4tPkNvbnRleHQgfHwNCj4gKyAgICAgICAgICAgIENvbnRleHQtPkZpbGVPYmplY3QgIT0g
RmlsZU9iamVjdCkgew0KPiArICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAgICAgIH0NCj4g
Kw0KPiArICAgICAgICBSZW1vdmVFbnRyeUxpc3QoJkNvbnRleHQtPkVudHJ5KTsNCj4gKyAgICAg
ICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGZG8tPlN1c3Bl
bmRMb2NrLCBJcnFsKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19OT1RfRk9VTkQ7DQo+
ICsgICAgaWYgKENvbnRleHQgPT0gTlVMTCB8fCBDb250ZXh0ICE9IEluLT5Db250ZXh0KQ0KPiAr
ICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAgU3VzcGVuZEZyZWVFdmVudChGZG8sIENv
bnRleHQpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWls
MjoNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJST1IsICJGYWlsMlxuIik7DQo+ICsNCj4g
K2ZhaWwxOg0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4KVxu
Iiwgc3RhdHVzKTsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtWT0lEDQo+
ICtTdXNwZW5kRXZlbnRGaXJlKA0KPiArICAgIF9faW4gICAgUFhFTklGQUNFX0ZETyAgIEZkbw0K
PiArICAgICkNCj4gK3sNCj4gKyAgICBLSVJRTCAgICAgICBJcnFsOw0KPiArICAgIFBMSVNUX0VO
VFJZIE5vZGU7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCBDb250ZXh0Ow0KPiAr
DQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+U3VzcGVuZExvY2ssICZJcnFsKTsNCj4g
KyAgICBOb2RlID0gRmRvLT5TdXNwZW5kTGlzdC5GbGluazsNCj4gKyAgICB3aGlsZSAoTm9kZS0+
RmxpbmsgIT0gRmRvLT5TdXNwZW5kTGlzdC5GbGluaykgew0KPiArICAgICAgICBDb250ZXh0ID0g
Q09OVEFJTklOR19SRUNPUkQoTm9kZSwNCj4gWEVOSUZBQ0VfU1VTUEVORF9DT05URVhULCBFbnRy
eSk7DQo+ICsNCj4gKyAgICAgICAgS2VTZXRFdmVudChDb250ZXh0LT5FdmVudCwgSU9fTk9fSU5D
UkVNRU5ULCBGQUxTRSk7DQo+ICsNCj4gKyAgICAgICAgTm9kZSA9IE5vZGUtPkZsaW5rOw0KPiAr
ICAgIH0NCj4gKyAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5TdXNwZW5kTG9jaywgSXJxbCk7
DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmMgYi9zcmMveGVuaWZh
Y2UvaW9jdGxzLmMNCj4gaW5kZXggYThhNTUzOC4uMmRmMjk5YyAxMDA2NDQNCj4gLS0tIGEvc3Jj
L3hlbmlmYWNlL2lvY3Rscy5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiBAQCAt
OTYsNiArOTYsNyBAQCBYZW5JZmFjZUNsZWFudXAoDQo+ICAgICAgUExJU1RfRU5UUlkgTm9kZTsN
Cj4gICAgICBQWEVOSUZBQ0VfU1RPUkVfQ09OVEVYVCBTdG9yZUNvbnRleHQ7DQo+ICAgICAgUFhF
TklGQUNFX0VWVENITl9DT05URVhUIEV2dGNobkNvbnRleHQ7DQo+ICsgICAgUFhFTklGQUNFX1NV
U1BFTkRfQ09OVEVYVCBTdXNwZW5kQ29udGV4dDsNCj4gICAgICBLSVJRTCBJcnFsOw0KPiAgICAg
IExJU1RfRU5UUlkgVG9GcmVlOw0KPiANCj4gQEAgLTE0MSw2ICsxNDIsMjIgQEAgWGVuSWZhY2VD
bGVhbnVwKA0KPiAgICAgICAgICBSZW1vdmVFbnRyeUxpc3QoJkV2dGNobkNvbnRleHQtPkVudHJ5
KTsNCj4gICAgICAgICAgRXZ0Y2huRnJlZShGZG8sIEV2dGNobkNvbnRleHQpOw0KPiAgICAgIH0N
Cj4gKw0KPiArICAgIC8vIHN1c3BlbmQgZXZlbnRzDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2so
JkZkby0+U3VzcGVuZExvY2ssICZJcnFsKTsNCj4gKyAgICBOb2RlID0gRmRvLT5TdXNwZW5kTGlz
dC5GbGluazsNCj4gKyAgICB3aGlsZSAoTm9kZS0+RmxpbmsgIT0gRmRvLT5TdXNwZW5kTGlzdC5G
bGluaykgew0KPiArICAgICAgICBTdXNwZW5kQ29udGV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKE5v
ZGUsDQo+IFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCwgRW50cnkpOw0KPiArDQo+ICsgICAgICAg
IE5vZGUgPSBOb2RlLT5GbGluazsNCj4gKyAgICAgICAgaWYgKFN1c3BlbmRDb250ZXh0LT5GaWxl
T2JqZWN0ICE9IEZpbGVPYmplY3QpDQo+ICsgICAgICAgICAgICBjb250aW51ZTsNCj4gKw0KPiAr
ICAgICAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0UsICJTdXNwZW5kIGNvbnRleHQgJXBcbiIs
DQo+IFN1c3BlbmRDb250ZXh0KTsNCj4gKyAgICAgICAgUmVtb3ZlRW50cnlMaXN0KCZTdXNwZW5k
Q29udGV4dC0+RW50cnkpOw0KPiArICAgICAgICBTdXNwZW5kRnJlZUV2ZW50KEZkbywgU3VzcGVu
ZENvbnRleHQpOw0KPiArICAgIH0NCj4gKyAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5TdXNw
ZW5kTG9jaywgSXJxbCk7DQo+ICB9DQo+IA0KPiAgTlRTVEFUVVMNCj4gQEAgLTIyNyw2ICsyNDQs
MTkgQEAgWGVuSWZhY2VJb2N0bCgNCj4gICAgICAgICAgc3RhdHVzID0gSW9jdGxHbnR0YWJVbm1h
cEZvcmVpZ25QYWdlcyhGZG8sIEJ1ZmZlciwgSW5MZW4sIE91dExlbik7DQo+ICAgICAgICAgIGJy
ZWFrOw0KPiANCj4gKyAgICAgICAgLy8gc3VzcGVuZA0KPiArICAgIGNhc2UgSU9DVExfWEVOSUZB
Q0VfU1VTUEVORF9HRVRfQ09VTlQ6DQo+ICsgICAgICAgIHN0YXR1cyA9IElvY3RsU3VzcGVuZEdl
dENvdW50KEZkbywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuLCAmSXJwLQ0KPiA+SW9TdGF0dXMuSW5m
b3JtYXRpb24pOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2UgSU9DVExfWEVO
SUZBQ0VfU1VTUEVORF9SRUdJU1RFUjoNCj4gKyAgICAgICAgc3RhdHVzID0gSW9jdGxTdXNwZW5k
UmVnaXN0ZXIoRmRvLCBCdWZmZXIsIEluTGVuLCBPdXRMZW4sIFN0YWNrLQ0KPiA+RmlsZU9iamVj
dCwgJklycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24pOw0KPiArICAgICAgICBicmVhazsNCj4gKw0K
PiArICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9ERVJFR0lTVEVSOg0KPiArICAgICAg
ICBzdGF0dXMgPSBJb2N0bFN1c3BlbmREZXJlZ2lzdGVyKEZkbywgQnVmZmVyLCBJbkxlbiwgT3V0
TGVuLCBTdGFjay0NCj4gPkZpbGVPYmplY3QpOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiAg
ICAgIGRlZmF1bHQ6DQo+ICAgICAgICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0RFVklDRV9S
RVFVRVNUOw0KPiAgICAgICAgICBicmVhazsNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9p
b2N0bHMuaCBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiBpbmRleCBkYTI3M2NlLi43ZGQzNGVl
IDEwMDY0NA0KPiAtLS0gYS9zcmMveGVuaWZhY2UvaW9jdGxzLmgNCj4gKysrIGIvc3JjL3hlbmlm
YWNlL2lvY3Rscy5oDQo+IEBAIC02Myw2ICs2MywxMiBAQCB0eXBlZGVmIHN0cnVjdCBfWEVOSUZB
Q0VfRVZUQ0hOX0NPTlRFWFQgew0KPiAgICAgIFBWT0lEICAgICAgICAgICAgICAgICAgRmlsZU9i
amVjdDsNCj4gIH0gWEVOSUZBQ0VfRVZUQ0hOX0NPTlRFWFQsICpQWEVOSUZBQ0VfRVZUQ0hOX0NP
TlRFWFQ7DQo+IA0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCB7
DQo+ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgRW50cnk7DQo+ICsgICAgUEtFVkVOVCAg
ICAgICAgICAgICAgICAgRXZlbnQ7DQo+ICsgICAgUFZPSUQgICAgICAgICAgICAgICAgICAgRmls
ZU9iamVjdDsNCj4gK30gWEVOSUZBQ0VfU1VTUEVORF9DT05URVhULCAqUFhFTklGQUNFX1NVU1BF
TkRfQ09OVEVYVDsNCj4gKw0KPiAgdHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX0dSQU5UX0NPTlRF
WFQgew0KPiAgICAgIFhFTklGQUNFX0NPTlRFWFRfSUQgICAgICAgIElkOw0KPiAgICAgIExJU1Rf
RU5UUlkgICAgICAgICAgICAgICAgIEVudHJ5Ow0KPiBAQCAtMzYzLDUgKzM2OSw0NSBAQCBHbnR0
YWJGcmVlTWFwKA0KPiAgICAgIF9faW5vdXQgIFBYRU5JRkFDRV9NQVBfQ09OVEVYVCBDb250ZXh0
DQo+ICAgICAgKTsNCj4gDQo+ICtOVFNUQVRVUw0KPiArSW9jdGxTdXNwZW5kR2V0Q291bnQoDQo+
ICsgICAgX19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLA0KPiArICAgIF9faW4gIFBDSEFSICAg
ICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwN
Cj4gKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sDQo+ICsgICAgX19vdXQgUFVM
T05HX1BUUiAgICAgICAgSW5mbw0KPiArICAgICk7DQo+ICsNCj4gK05UU1RBVFVTDQo+ICtJb2N0
bFN1c3BlbmRSZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+
ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05H
ICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExl
biwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0LA0KPiArICAgIF9f
b3V0IFBVTE9OR19QVFIgICAgICAgIEluZm8NCj4gKyAgICApOw0KPiArDQo+ICtOVFNUQVRVUw0K
PiArSW9jdGxTdXNwZW5kRGVyZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAg
ICBGZG8sDQo+ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9f
aW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAg
ICAgIE91dExlbiwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0DQo+
ICsgICAgKTsNCj4gKw0KPiArVk9JRA0KPiArU3VzcGVuZEV2ZW50RmlyZSgNCj4gKyAgICBfX2lu
ICAgIFBYRU5JRkFDRV9GRE8gICBGZG8NCj4gKyAgICApOw0KPiArDQo+ICtfSVJRTF9yZXF1aXJl
c19tYXhfKERJU1BBVENIX0xFVkVMKQ0KPiArVk9JRA0KPiArU3VzcGVuZEZyZWVFdmVudCgNCj4g
KyAgICBfX2luICAgICBQWEVOSUZBQ0VfRkRPIEZkbywNCj4gKyAgICBfX2lub3V0ICBQWEVOSUZB
Q0VfU1VTUEVORF9DT05URVhUIENvbnRleHQNCj4gKyAgICApOw0KPiArDQo+ICAjZW5kaWYgLy8g
X0lPQ1RMU19IXw0KPiANCj4gZGlmZiAtLWdpdCBhL3ZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52
Y3hwcm9qDQo+IGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gaW5kZXggYzU3
ZTJhMi4uZmY3MGViMCAxMDA2NDQNCj4gLS0tIGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZj
eHByb2oNCj4gKysrIGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTc5
LDYgKzc5LDcgQEANCj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2Vc
ZmRvLmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHJl
Z2lzdHJ5LmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XHRocmVhZC5jIiAvPg0KPiArCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFj
ZVxpb2N0bF9zdXNwZW5kLmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHhlbmlmYWNlXGlvY3RsX2V2dGNobi5jIiAvPg0KPiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9nbnR0YWIuYyIgLz4NCj4gIAkJPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3RvcmUuYyIgLz4NCj4gZGlmZiAtLWdpdCBh
L3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qDQo+IGIvdnMyMDEzL3hlbmlmYWNlL3hl
bmlmYWNlLnZjeHByb2oNCj4gaW5kZXggMDhhYzNhMS4uM2EzYTkzNyAxMDA2NDQNCj4gLS0tIGEv
dnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gKysrIGIvdnMyMDEzL3hlbmlmYWNl
L3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTEzMSw2ICsxMzEsNyBAQA0KPiAgICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGZkby5jIiAvPg0KPiAgICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHJlZ2lzdHJ5LmMiIC8+DQo+ICAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcdGhyZWFkLmMiIC8+DQo+ICsgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3VzcGVuZC5jIiAv
Pg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX2V2
dGNobi5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XGlvY3RsX2dudHRhYi5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHhlbmlmYWNlXGlvY3RsX3N0b3JlLmMiIC8+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiAN
Cj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+
IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlz
dGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 13:42:54 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 13:42:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHtHv-0004Pg-T0; Tue, 28 Jun 2016 13:42:51 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9803ce555=Paul.Durrant@citrix.com>)
 id 1bHtHu-0004PU-Jb
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 13:42:50 +0000
Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id
 20/EC-17282-9DE72775; Tue, 28 Jun 2016 13:42:49 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDIsWRWlGSWpSXmKPExsWyU9JRQvdmXVG
 4QftyNos/ixMdGD0Of7jCEsAYxZqZl5RfkcCaMfn4K+aCCQcYKxZv2sbawHhhL2MXIyeHhICf
 xJ41T1lBbDYBHYmlR+czgdgiAgUS39/PYwaxmQXUJK7v7wKrERZwlji05yZLFyMHUI2LxKkuA
 YhyI4mfT1ewg9gsAqoSGxZCjOQVcJc4/+cLUDkXh5BAA6PEsQk72UASnAJuEu+2PgezGQVkJb
 40robaJS5x6wnEDRICAhJL9pxnhrBFJV4+/scKYRtIbF26D+wGZgFNifW79CFaFSWmdD9kh9g
 rKHFy5hMWEFtIQEViy+MDUGO4JVZ+/sMygVF0FpJtsxAmzUIyaRaSSQsYWVYxahSnFpWlFuka
 meolFWWmZ5TkJmbm6BoamOrlphYXJ6an5iQmFesl5+duYgTGSj0DA+MOxl3tfocYJTmYlER5F
 zAUhQvxJeWnVGYkFmfEF5XmpBYfYpTh4FCS4FWqBcoJFqWmp1akZeYAoxYmLcHBoyTCuxAkzV
 tckJhbnJkOkTrFqCglztsPkhAASWSU5sG1wRLFJUZZKWFeRgYGBiGegtSi3MwSVPlXjOIcjEr
 CvJogU3gy80rgpr8CWswEtJi1Oh9kcUkiQkqqgbHm9i4HXR7x1pCkCZlSNQ8/a2/P/iox/+2x
 yrq8Re9uyfCl17ldmb8699/FiYwVK3b9/bP/xTzLOW8XGfb3F7647qWfw7u53PUJV/bKjXIyH
 rWht6cGaUrfY7hq9/ds67TQA5zS9ntPMZ4RnibN99G+6KrMvXW9yw+uClq1Rr1i4ZWv+yyPai
 kpsRRnJBpqMRcVJwIAJJegRQ8DAAA=
X-Env-Sender: prvs=9803ce555=Paul.Durrant@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467121369!47193233!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 55032 invoked from network); 28 Jun 2016 13:42:49 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 13:42:49 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="25181952"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 2/4] Add Suspend IOCTL interface
Thread-Index: AQHR0SjvTm7TfCENsUqEhZ4EgpY485/+42Xw
Date: Tue, 28 Jun 2016 13:42:47 +0000
Message-ID: <aaac2cc6c1174653a3fca9c81959678b@AMSPEX02CL03.citrite.net>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
 <1467110150-11120-3-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1467110150-11120-3-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 2/4] Add Suspend IOCTL interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjggSnVuZSAyMDE2IDExOjM2DQo+IFRvOiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgNCj4gU3ViamVjdDog
W3dpbi1wdi1kZXZlbF0gW1BBVENIIDIvNF0gQWRkIFN1c3BlbmQgSU9DVEwgaW50ZXJmYWNlDQo+
IA0KPiBBZGRzIElPQ1RMcyBmb3I6DQo+ICogR2V0Q291bnQgLSByZXR1cm5zIGEgdmFsdWUgd2hp
Y2ggY2hhbmdlcyBvdmVyIHN1c3BlbmQNCj4gKiBSZWdpc3RlciAtIHJlZ2lzdGVycyBhbiBldmVu
dCB0aGF0IGlzIHNldCBvbiByZXN1bWUgZnJvbSBzdXNwZW5kDQo+ICogRGVyZWdpc3RlciAtIGRl
cmVnaXN0ZXJzIGEgcmVzdW1lIGZyb20gc3VzcGVuZCBldmVudA0KPiANCj4gU2lnbmVkLW9mZi1i
eTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpSZXZpZXdlZC1ieTogUGF1
bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIGluY2x1ZGUv
eGVuaWZhY2VfaW9jdGxzLmggICAgICAgIHwgIDM3ICsrKysrKysNCj4gIHNyYy94ZW5pZmFjZS9m
ZG8uYyAgICAgICAgICAgICAgIHwgIDEyICsrKw0KPiAgc3JjL3hlbmlmYWNlL2Zkby5oICAgICAg
ICAgICAgICAgfCAgIDMgKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYyAgICAgfCAy
MjINCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBzcmMveGVu
aWZhY2UvaW9jdGxzLmMgICAgICAgICAgICB8ICAzMCArKysrKysNCj4gIHNyYy94ZW5pZmFjZS9p
b2N0bHMuaCAgICAgICAgICAgIHwgIDQ2ICsrKysrKysrDQo+ICB2czIwMTIveGVuaWZhY2UveGVu
aWZhY2UudmN4cHJvaiB8ICAgMSArDQo+ICB2czIwMTMveGVuaWZhY2UveGVuaWZhY2UudmN4cHJv
aiB8ICAgMSArDQo+ICA4IGZpbGVzIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCspDQo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYw0KPiANCj4gZGlmZiAt
LWdpdCBhL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmggYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rs
cy5oDQo+IGluZGV4IDE3YmVhYTEuLjVmNjVmMTQgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUveGVu
aWZhY2VfaW9jdGxzLmgNCj4gKysrIGIvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaA0KPiBAQCAt
MzIzLDQgKzMyMyw0MSBAQCB0eXBlZGVmIHN0cnVjdA0KPiBfWEVOSUZBQ0VfR05UVEFCX1VOTUFQ
X0ZPUkVJR05fUEFHRVNfSU4gew0KPiAgICAgIFVMT05HIFJlcXVlc3RJZDsgLyohIFJlcXVlc3Qg
SUQgdXNlZCBpbiB0aGUgY29ycmVzcG9uZGluZw0KPiBJT0NUTF9YRU5JRkFDRV9HTlRUQUJfTUFQ
X0ZPUkVJR05fUEFHRVMgY2FsbCAqLw0KPiAgfSBYRU5JRkFDRV9HTlRUQUJfVU5NQVBfRk9SRUlH
Tl9QQUdFU19JTiwNCj4gKlBYRU5JRkFDRV9HTlRUQUJfVU5NQVBfRk9SRUlHTl9QQUdFU19JTjsN
Cj4gDQo+ICsvKiEgXGJyaWVmIEdldHMgdGhlIGN1cnJlbnQgc3VzcGVuZCBjb3VudC4NCj4gKw0K
PiArICAgIElucHV0OiBOb25lDQo+ICsNCj4gKyAgICBPdXRwdXQ6IFVMT05HDQo+ICsqLw0KPiAr
I2RlZmluZSBJT0NUTF9YRU5JRkFDRV9TVVNQRU5EX0dFVF9DT1VOVCBcDQo+ICsgICAgQ1RMX0NP
REUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4MzAsIE1FVEhPRF9CVUZGRVJFRCwNCj4gRklMRV9B
TllfQUNDRVNTKQ0KPiArDQo+ICsvKiEgXGJyaWVmIElucHV0IGZvciBJT0NUTF9YRU5JRkFDRV9T
VVNQRU5EX1JFR0lTVEVSICovDQo+ICt0eXBlZGVmIHN0cnVjdCBfWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9JTiB7DQo+ICsgICAgSEFORExFIEV2ZW50OyAvKiE8IEhhbmRsZSB0byBhbiBldmVu
dCBvYmplY3QgdGhhdCB3aWxsIHJlY2VpdmUgc3VzcGVuZA0KPiBub3RpZmljYXRpb25zICovDQo+
ICt9IFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfSU4sDQo+ICpQWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9JTjsNCj4gKw0KPiArLyohIFxicmllZiBPdXRwdXQgZm9yIElPQ1RMX1hFTklGQUNF
X1NVU1BFTkRfUkVHSVNURVIsIElucHV0IGZvcg0KPiBJT0NUTF9YRU5JRkFDRV9TVVNQRU5EX0RF
UkVHSVNURVIgKi8NCj4gK3R5cGVkZWYgc3RydWN0IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVS
X09VVCB7DQo+ICsgICAgUFZPSUQgQ29udGV4dDsgLyohPCBIYW5kbGUgdG8gdGhlIHN1c3BlbmQg
ZXZlbnQgKi8NCj4gK30gWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQsDQo+ICpQWEVOSUZB
Q0VfU1VTUEVORF9SRUdJU1RFUl9PVVQ7DQo+ICsNCj4gKy8qISBcYnJpZWYgUmVnaXN0ZXJzIGFu
IGV2ZW50IHdoaWNoIGlzIHNpZ25hbGxlZCBvbiByZXN1bWUtZnJvbS1zdXNwZW5kDQo+ICsNCj4g
KyAgICBJbnB1dDogWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9JTg0KPiArDQo+ICsgICAgT3V0
cHV0OiBYRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVA0KPiArKi8NCj4gKyNkZWZpbmUgSU9D
VExfWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUiBcDQo+ICsgICAgQ1RMX0NPREUoRklMRV9ERVZJ
Q0VfVU5LTk9XTiwgMHg4MzEsIE1FVEhPRF9CVUZGRVJFRCwNCj4gRklMRV9BTllfQUNDRVNTKQ0K
PiArDQo+ICsvKiEgXGJyaWVmIERlcmVnaXN0ZXJzIGFuIGV2ZW50IHdoaWNoIGlzIHNpZ25hbGxl
ZCBvbiByZXN1bWUtZnJvbS1zdXNwZW5kDQo+ICsNCj4gKyAgICBJbnB1dDogWEVOSUZBQ0VfU1VT
UEVORF9SRUdJU1RFUl9PVVQNCj4gKw0KPiArICAgIE91dHB1dDogTm9uZQ0KPiArKi8NCj4gKyNk
ZWZpbmUgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9ERVJFR0lTVEVSIFwNCj4gKyAgICBDVExfQ09E
RShGSUxFX0RFVklDRV9VTktOT1dOLCAweDgzMiwgTUVUSE9EX0JVRkZFUkVELA0KPiBGSUxFX0FO
WV9BQ0NFU1MpDQo+ICsNCj4gICNlbmRpZiAvLyBfWEVOSUZBQ0VfSU9DVExTX0hfDQo+IGRpZmYg
LS1naXQgYS9zcmMveGVuaWZhY2UvZmRvLmMgYi9zcmMveGVuaWZhY2UvZmRvLmMNCj4gaW5kZXgg
YmE4ZDE5YS4uMTllNTBmZSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2Zkby5jDQo+ICsr
KyBiL3NyYy94ZW5pZmFjZS9mZG8uYw0KPiBAQCAtOTA4LDYgKzkwOCw3IEBAIEZkb1N1c3BlbmRD
YWxsYmFja0xhdGUoDQo+ICAgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+IA0KPiAg
ICAgIFdtaUZpcmVTdXNwZW5kRXZlbnQoRmRvKTsNCj4gKyAgICBTdXNwZW5kRXZlbnRGaXJlKEZk
byk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+IEBA
IC0yNTkzLDYgKzI1OTQsOSBAQCBGZG9DcmVhdGUoDQo+ICAgICAgS2VJbml0aWFsaXplU3Bpbkxv
Y2soJkZkby0+RXZ0Y2huTG9jayk7DQo+ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPkV2
dGNobkxpc3QpOw0KPiANCj4gKyAgICBLZUluaXRpYWxpemVTcGluTG9jaygmRmRvLT5TdXNwZW5k
TG9jayk7DQo+ICsgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPlN1c3BlbmRMaXN0KTsNCj4g
Kw0KPiAgICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZGZG8tPklycFF1ZXVlTG9jayk7DQo+ICAg
ICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPklycExpc3QpOw0KPiANCj4gQEAgLTI2MjUsNiAr
MjYyOSwxMCBAQCBmYWlsMTU6DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5JcnBMaXN0LCBz
aXplb2YgKExJU1RfRU5UUlkpKTsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVl
TG9jaywgc2l6ZW9mIChLU1BJTl9MT0NLKSk7DQo+IA0KPiArICAgIEFTU0VSVChJc0xpc3RFbXB0
eSgmRmRvLT5TdXNwZW5kTGlzdCkpOw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+U3VzcGVu
ZExpc3QsIHNpemVvZiAoTElTVF9FTlRSWSkpOw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+
U3VzcGVuZExvY2ssIHNpemVvZiAoS1NQSU5fTE9DSykpOw0KPiArDQo+ICAgICAgQVNTRVJUKElz
TGlzdEVtcHR5KCZGZG8tPkV2dGNobkxpc3QpKTsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8t
PkV2dGNobkxpc3QsIHNpemVvZiAoTElTVF9FTlRSWSkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnko
JkZkby0+RXZ0Y2huTG9jaywgc2l6ZW9mIChLU1BJTl9MT0NLKSk7DQo+IEBAIC0yNzQ3LDYgKzI3
NTUsMTAgQEAgRmRvRGVzdHJveSgNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPklycFF1ZXVl
TG9jaywgc2l6ZW9mIChLU1BJTl9MT0NLKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5J
cnBRdWV1ZSwgc2l6ZW9mIChJT19DU1EpKTsNCj4gDQo+ICsgICAgQVNTRVJUKElzTGlzdEVtcHR5
KCZGZG8tPlN1c3BlbmRMaXN0KSk7DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5TdXNwZW5k
TGlzdCwgc2l6ZW9mIChMSVNUX0VOVFJZKSk7DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5T
dXNwZW5kTG9jaywgc2l6ZW9mIChLU1BJTl9MT0NLKSk7DQo+ICsNCj4gICAgICBBU1NFUlQoSXNM
aXN0RW1wdHkoJkZkby0+RXZ0Y2huTGlzdCkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+
RXZ0Y2huTGlzdCwgc2l6ZW9mIChMSVNUX0VOVFJZKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgm
RmRvLT5FdnRjaG5Mb2NrLCBzaXplb2YgKEtTUElOX0xPQ0spKTsNCj4gZGlmZiAtLWdpdCBhL3Ny
Yy94ZW5pZmFjZS9mZG8uaCBiL3NyYy94ZW5pZmFjZS9mZG8uaA0KPiBpbmRleCA2Y2Q2MjhjLi4w
NzkxOTA2IDEwMDY0NA0KPiAtLS0gYS9zcmMveGVuaWZhY2UvZmRvLmgNCj4gKysrIGIvc3JjL3hl
bmlmYWNlL2Zkby5oDQo+IEBAIC05MCw2ICs5MCw5IEBAIHR5cGVkZWYgc3RydWN0IF9YRU5JRkFD
RV9GRE8gew0KPiAgICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAgICAgICAgRXZ0Y2huTG9j
azsNCj4gICAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgIEV2dGNobkxpc3Q7DQo+
IA0KPiArICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAgICAgICAgU3VzcGVuZExvY2s7DQo+
ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICBTdXNwZW5kTGlzdDsNCj4gKw0K
PiAgICAgIEtTUElOX0xPQ0sgICAgICAgICAgICAgICAgICAgICAgR250dGFiQ2FjaGVMb2NrOw0K
PiANCj4gICAgICBJT19DU1EgICAgICAgICAgICAgICAgICAgICAgICAgIElycFF1ZXVlOw0KPiBk
aWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3RsX3N1c3BlbmQuYyBiL3NyYy94ZW5pZmFjZS9p
b2N0bF9zdXNwZW5kLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4u
ZTg0ODg2NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bF9zdXNw
ZW5kLmMNCj4gQEAgLTAsMCArMSwyMjIgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5
c3RlbXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICog
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAr
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0K
PiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsg
Kg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAr
ICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
DQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0Uu
DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImRyaXZlci5oIg0KPiArI2luY2x1ZGUgImlvY3Rs
cy5oIg0KPiArI2luY2x1ZGUgInhlbmlmYWNlX2lvY3Rscy5oIg0KPiArI2luY2x1ZGUgImxvZy5o
Ig0KPiArDQo+ICtERUNMU1BFQ19OT0lOTElORQ0KPiArTlRTVEFUVVMNCj4gK0lvY3RsU3VzcGVu
ZEdldENvdW50KA0KPiArICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywNCj4gKyAgICBf
X2luICBQQ0hBUiAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAg
ICAgICAgSW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0TGVuLA0KPiAr
ICAgIF9fb3V0IFBVTE9OR19QVFIgICAgICAgIEluZm8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAg
TlRTVEFUVVMgICAgc3RhdHVzOw0KPiArICAgIFBVTE9ORyAgICAgIFZhbHVlOw0KPiArDQo+ICsg
ICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVGRkVSX1NJWkU7DQo+ICsgICAgaWYgKEluTGVu
ICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBpZiAoT3V0TGVuICE9
IHNpemVvZihVTE9ORykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDI7DQo+ICsNCj4gKyAgICBWYWx1
ZSA9IChQVUxPTkcpQnVmZmVyOw0KPiArICAgICpWYWx1ZSA9IFhFTkJVU19TVVNQRU5EKEdldENv
dW50LCAmRmRvLT5TdXNwZW5kSW50ZXJmYWNlKTsNCj4gKyAgICAqSW5mbyA9IChVTE9OR19QVFIp
c2l6ZW9mKFVMT05HKTsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiAr
ICAgIHJldHVybiBzdGF0dXM7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIFhlbklmYWNlRGVidWdQ
cmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gK2ZhaWwxOg0KPiArICAgIFhlbklmYWNlRGVidWdQ
cmludChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKyAgICByZXR1cm4gc3Rh
dHVzOw0KPiArfQ0KPiArDQo+ICtERUNMU1BFQ19OT0lOTElORQ0KPiArTlRTVEFUVVMNCj4gK0lv
Y3RsU3VzcGVuZFJlZ2lzdGVyKA0KPiArICAgIF9faW4gIFBYRU5JRkFDRV9GRE8gICAgIEZkbywN
Cj4gKyAgICBfX2luICBQVk9JRCAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgX19pbiAgVUxP
TkcgICAgICAgICAgICAgSW5MZW4sDQo+ICsgICAgX19pbiAgVUxPTkcgICAgICAgICAgICAgT3V0
TGVuLA0KPiArICAgIF9faW4gIFBGSUxFX09CSkVDVCAgICAgIEZpbGVPYmplY3QsDQo+ICsgICAg
X19vdXQgUFVMT05HX1BUUiAgICAgICAgSW5mbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBOVFNU
QVRVUyBzdGF0dXM7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfSU4gSW4gPSBC
dWZmZXI7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VUIE91dCA9IEJ1ZmZl
cjsNCj4gKyAgICBQWEVOSUZBQ0VfU1VTUEVORF9DT05URVhUIENvbnRleHQ7DQo+ICsNCj4gKyAg
ICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJfU0laRTsNCj4gKyAgICBpZiAoSW5MZW4g
IT0gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfSU4pIHx8DQo+ICsgICAgICAgIE91
dExlbiAhPSBzaXplb2YoWEVOSUZBQ0VfU1VTUEVORF9SRUdJU1RFUl9PVVQpKSB7DQo+ICsgICAg
ICAgIGdvdG8gZmFpbDE7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX05P
X01FTU9SWTsNCj4gKyAgICBDb250ZXh0ID0gRXhBbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2Vk
UG9vbCwNCj4gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCksIFhFTklGQUNFX1BPT0xf
VEFHKTsNCj4gKyAgICBpZiAoQ29udGV4dCA9PSBOVUxMKQ0KPiArICAgICAgICBnb3RvIGZhaWwy
Ow0KPiArDQo+ICsgICAgUnRsWmVyb01lbW9yeShDb250ZXh0LCBzaXplb2YoWEVOSUZBQ0VfU1VT
UEVORF9DT05URVhUKSk7DQo+ICsNCj4gKyAgICBDb250ZXh0LT5GaWxlT2JqZWN0ID0gRmlsZU9i
amVjdDsNCj4gKw0KPiArICAgIHN0YXR1cyA9IE9iUmVmZXJlbmNlT2JqZWN0QnlIYW5kbGUoSW4t
PkV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZFTlRf
TU9ESUZZX1NUQVRFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KkV4RXZlbnRPYmplY3RUeXBlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVXNlck1vZGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmQ29udGV4dC0+RXZlbnQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAg
Z290byBmYWlsMzsNCj4gKw0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChUUkFDRSwgIj4gU3Vz
cGVuZCBFdmVudCAlcCwgRk8gJXBcbiIsIEluLT5FdmVudCwNCj4gRmlsZU9iamVjdCk7DQo+ICsg
ICAgRXhJbnRlcmxvY2tlZEluc2VydFRhaWxMaXN0KCZGZG8tPlN1c3BlbmRMaXN0LCAmQ29udGV4
dC0+RW50cnksICZGZG8tDQo+ID5TdXNwZW5kTG9jayk7DQo+ICsNCj4gKyAgICBPdXQtPkNvbnRl
eHQgPSBDb250ZXh0Ow0KPiArICAgICpJbmZvID0gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVH
SVNURVJfT1VUKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICsNCj4gK2ZhaWwzOg0K
PiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwzXG4iKTsNCj4gKyAgICBSdGxa
ZXJvTWVtb3J5KENvbnRleHQsIHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQpKTsNCj4g
KyAgICBFeEZyZWVQb29sV2l0aFRhZyhDb250ZXh0LCBYRU5JRkFDRV9QT09MX1RBRyk7DQo+ICsN
Cj4gK2ZhaWwyOg0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwyXG4iKTsN
Cj4gKw0KPiArZmFpbDE6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEg
KCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4g
K19JUlFMX3JlcXVpcmVzX21heF8oRElTUEFUQ0hfTEVWRUwpDQo+ICtWT0lEDQo+ICtTdXNwZW5k
RnJlZUV2ZW50KA0KPiArICAgIF9faW4gICAgIFBYRU5JRkFDRV9GRE8gRmRvLA0KPiArICAgIF9f
aW5vdXQgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQgQ29udGV4dA0KPiArICAgICkNCj4gK3sN
Cj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0UsICJDb250ZXh0ICVwLCBGTyAlcFxuIiwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCwgQ29udGV4dC0+RmlsZU9iamVjdCk7
DQo+ICsNCj4gKyAgICBPYkRlcmVmZXJlbmNlT2JqZWN0KENvbnRleHQtPkV2ZW50KTsNCj4gKyAg
ICBSdGxaZXJvTWVtb3J5KENvbnRleHQsIHNpemVvZihYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQp
KTsNCj4gKyAgICBFeEZyZWVQb29sV2l0aFRhZyhDb250ZXh0LCBYRU5JRkFDRV9QT09MX1RBRyk7
DQo+ICt9DQo+ICsNCj4gK0RFQ0xTUEVDX05PSU5MSU5FDQo+ICtOVFNUQVRVUw0KPiArSW9jdGxT
dXNwZW5kRGVyZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+
ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05H
ICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExl
biwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0DQo+ICsgICAgKQ0K
PiArew0KPiArICAgIE5UU1RBVFVTIHN0YXR1czsNCj4gKyAgICBQWEVOSUZBQ0VfU1VTUEVORF9S
RUdJU1RFUl9PVVQgSW4gPSBCdWZmZXI7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRfQ09OVEVY
VCBDb250ZXh0ID0gTlVMTDsNCj4gKyAgICBLSVJRTCBJcnFsOw0KPiArICAgIFBMSVNUX0VOVFJZ
IE5vZGU7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJfU0laRTsN
Cj4gKyAgICBpZiAoSW5MZW4gIT0gc2l6ZW9mKFhFTklGQUNFX1NVU1BFTkRfUkVHSVNURVJfT1VU
KSB8fA0KPiArICAgICAgICBPdXRMZW4gIT0gMCkgew0KPiArICAgICAgICBnb3RvIGZhaWwxOw0K
PiArICAgIH0NCj4gKw0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChUUkFDRSwgIj4gQ29udGV4
dCAlcCwgRk8gJXBcbiIsIEluLT5Db250ZXh0LA0KPiBGaWxlT2JqZWN0KTsNCj4gKw0KPiArICAg
IEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPlN1c3BlbmRMb2NrLCAmSXJxbCk7DQo+ICsgICAgTm9k
ZSA9IEZkby0+U3VzcGVuZExpc3QuRmxpbms7DQo+ICsgICAgd2hpbGUgKE5vZGUtPkZsaW5rICE9
IEZkby0+U3VzcGVuZExpc3QuRmxpbmspIHsNCj4gKyAgICAgICAgQ29udGV4dCA9IENPTlRBSU5J
TkdfUkVDT1JEKE5vZGUsDQo+IFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCwgRW50cnkpOw0KPiAr
DQo+ICsgICAgICAgIE5vZGUgPSBOb2RlLT5GbGluazsNCj4gKyAgICAgICAgaWYgKENvbnRleHQg
IT0gSW4tPkNvbnRleHQgfHwNCj4gKyAgICAgICAgICAgIENvbnRleHQtPkZpbGVPYmplY3QgIT0g
RmlsZU9iamVjdCkgew0KPiArICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAgICAgIH0NCj4g
Kw0KPiArICAgICAgICBSZW1vdmVFbnRyeUxpc3QoJkNvbnRleHQtPkVudHJ5KTsNCj4gKyAgICAg
ICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGZG8tPlN1c3Bl
bmRMb2NrLCBJcnFsKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19OT1RfRk9VTkQ7DQo+
ICsgICAgaWYgKENvbnRleHQgPT0gTlVMTCB8fCBDb250ZXh0ICE9IEluLT5Db250ZXh0KQ0KPiAr
ICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAgU3VzcGVuZEZyZWVFdmVudChGZG8sIENv
bnRleHQpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWls
MjoNCj4gKyAgICBYZW5JZmFjZURlYnVnUHJpbnQoRVJST1IsICJGYWlsMlxuIik7DQo+ICsNCj4g
K2ZhaWwxOg0KPiArICAgIFhlbklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4KVxu
Iiwgc3RhdHVzKTsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtWT0lEDQo+
ICtTdXNwZW5kRXZlbnRGaXJlKA0KPiArICAgIF9faW4gICAgUFhFTklGQUNFX0ZETyAgIEZkbw0K
PiArICAgICkNCj4gK3sNCj4gKyAgICBLSVJRTCAgICAgICBJcnFsOw0KPiArICAgIFBMSVNUX0VO
VFJZIE5vZGU7DQo+ICsgICAgUFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCBDb250ZXh0Ow0KPiAr
DQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+U3VzcGVuZExvY2ssICZJcnFsKTsNCj4g
KyAgICBOb2RlID0gRmRvLT5TdXNwZW5kTGlzdC5GbGluazsNCj4gKyAgICB3aGlsZSAoTm9kZS0+
RmxpbmsgIT0gRmRvLT5TdXNwZW5kTGlzdC5GbGluaykgew0KPiArICAgICAgICBDb250ZXh0ID0g
Q09OVEFJTklOR19SRUNPUkQoTm9kZSwNCj4gWEVOSUZBQ0VfU1VTUEVORF9DT05URVhULCBFbnRy
eSk7DQo+ICsNCj4gKyAgICAgICAgS2VTZXRFdmVudChDb250ZXh0LT5FdmVudCwgSU9fTk9fSU5D
UkVNRU5ULCBGQUxTRSk7DQo+ICsNCj4gKyAgICAgICAgTm9kZSA9IE5vZGUtPkZsaW5rOw0KPiAr
ICAgIH0NCj4gKyAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5TdXNwZW5kTG9jaywgSXJxbCk7
DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmMgYi9zcmMveGVuaWZh
Y2UvaW9jdGxzLmMNCj4gaW5kZXggYThhNTUzOC4uMmRmMjk5YyAxMDA2NDQNCj4gLS0tIGEvc3Jj
L3hlbmlmYWNlL2lvY3Rscy5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiBAQCAt
OTYsNiArOTYsNyBAQCBYZW5JZmFjZUNsZWFudXAoDQo+ICAgICAgUExJU1RfRU5UUlkgTm9kZTsN
Cj4gICAgICBQWEVOSUZBQ0VfU1RPUkVfQ09OVEVYVCBTdG9yZUNvbnRleHQ7DQo+ICAgICAgUFhF
TklGQUNFX0VWVENITl9DT05URVhUIEV2dGNobkNvbnRleHQ7DQo+ICsgICAgUFhFTklGQUNFX1NV
U1BFTkRfQ09OVEVYVCBTdXNwZW5kQ29udGV4dDsNCj4gICAgICBLSVJRTCBJcnFsOw0KPiAgICAg
IExJU1RfRU5UUlkgVG9GcmVlOw0KPiANCj4gQEAgLTE0MSw2ICsxNDIsMjIgQEAgWGVuSWZhY2VD
bGVhbnVwKA0KPiAgICAgICAgICBSZW1vdmVFbnRyeUxpc3QoJkV2dGNobkNvbnRleHQtPkVudHJ5
KTsNCj4gICAgICAgICAgRXZ0Y2huRnJlZShGZG8sIEV2dGNobkNvbnRleHQpOw0KPiAgICAgIH0N
Cj4gKw0KPiArICAgIC8vIHN1c3BlbmQgZXZlbnRzDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2so
JkZkby0+U3VzcGVuZExvY2ssICZJcnFsKTsNCj4gKyAgICBOb2RlID0gRmRvLT5TdXNwZW5kTGlz
dC5GbGluazsNCj4gKyAgICB3aGlsZSAoTm9kZS0+RmxpbmsgIT0gRmRvLT5TdXNwZW5kTGlzdC5G
bGluaykgew0KPiArICAgICAgICBTdXNwZW5kQ29udGV4dCA9IENPTlRBSU5JTkdfUkVDT1JEKE5v
ZGUsDQo+IFhFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCwgRW50cnkpOw0KPiArDQo+ICsgICAgICAg
IE5vZGUgPSBOb2RlLT5GbGluazsNCj4gKyAgICAgICAgaWYgKFN1c3BlbmRDb250ZXh0LT5GaWxl
T2JqZWN0ICE9IEZpbGVPYmplY3QpDQo+ICsgICAgICAgICAgICBjb250aW51ZTsNCj4gKw0KPiAr
ICAgICAgICBYZW5JZmFjZURlYnVnUHJpbnQoVFJBQ0UsICJTdXNwZW5kIGNvbnRleHQgJXBcbiIs
DQo+IFN1c3BlbmRDb250ZXh0KTsNCj4gKyAgICAgICAgUmVtb3ZlRW50cnlMaXN0KCZTdXNwZW5k
Q29udGV4dC0+RW50cnkpOw0KPiArICAgICAgICBTdXNwZW5kRnJlZUV2ZW50KEZkbywgU3VzcGVu
ZENvbnRleHQpOw0KPiArICAgIH0NCj4gKyAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5TdXNw
ZW5kTG9jaywgSXJxbCk7DQo+ICB9DQo+IA0KPiAgTlRTVEFUVVMNCj4gQEAgLTIyNyw2ICsyNDQs
MTkgQEAgWGVuSWZhY2VJb2N0bCgNCj4gICAgICAgICAgc3RhdHVzID0gSW9jdGxHbnR0YWJVbm1h
cEZvcmVpZ25QYWdlcyhGZG8sIEJ1ZmZlciwgSW5MZW4sIE91dExlbik7DQo+ICAgICAgICAgIGJy
ZWFrOw0KPiANCj4gKyAgICAgICAgLy8gc3VzcGVuZA0KPiArICAgIGNhc2UgSU9DVExfWEVOSUZB
Q0VfU1VTUEVORF9HRVRfQ09VTlQ6DQo+ICsgICAgICAgIHN0YXR1cyA9IElvY3RsU3VzcGVuZEdl
dENvdW50KEZkbywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuLCAmSXJwLQ0KPiA+SW9TdGF0dXMuSW5m
b3JtYXRpb24pOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2UgSU9DVExfWEVO
SUZBQ0VfU1VTUEVORF9SRUdJU1RFUjoNCj4gKyAgICAgICAgc3RhdHVzID0gSW9jdGxTdXNwZW5k
UmVnaXN0ZXIoRmRvLCBCdWZmZXIsIEluTGVuLCBPdXRMZW4sIFN0YWNrLQ0KPiA+RmlsZU9iamVj
dCwgJklycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24pOw0KPiArICAgICAgICBicmVhazsNCj4gKw0K
PiArICAgIGNhc2UgSU9DVExfWEVOSUZBQ0VfU1VTUEVORF9ERVJFR0lTVEVSOg0KPiArICAgICAg
ICBzdGF0dXMgPSBJb2N0bFN1c3BlbmREZXJlZ2lzdGVyKEZkbywgQnVmZmVyLCBJbkxlbiwgT3V0
TGVuLCBTdGFjay0NCj4gPkZpbGVPYmplY3QpOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiAg
ICAgIGRlZmF1bHQ6DQo+ICAgICAgICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0RFVklDRV9S
RVFVRVNUOw0KPiAgICAgICAgICBicmVhazsNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5pZmFjZS9p
b2N0bHMuaCBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiBpbmRleCBkYTI3M2NlLi43ZGQzNGVl
IDEwMDY0NA0KPiAtLS0gYS9zcmMveGVuaWZhY2UvaW9jdGxzLmgNCj4gKysrIGIvc3JjL3hlbmlm
YWNlL2lvY3Rscy5oDQo+IEBAIC02Myw2ICs2MywxMiBAQCB0eXBlZGVmIHN0cnVjdCBfWEVOSUZB
Q0VfRVZUQ0hOX0NPTlRFWFQgew0KPiAgICAgIFBWT0lEICAgICAgICAgICAgICAgICAgRmlsZU9i
amVjdDsNCj4gIH0gWEVOSUZBQ0VfRVZUQ0hOX0NPTlRFWFQsICpQWEVOSUZBQ0VfRVZUQ0hOX0NP
TlRFWFQ7DQo+IA0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX1NVU1BFTkRfQ09OVEVYVCB7
DQo+ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgRW50cnk7DQo+ICsgICAgUEtFVkVOVCAg
ICAgICAgICAgICAgICAgRXZlbnQ7DQo+ICsgICAgUFZPSUQgICAgICAgICAgICAgICAgICAgRmls
ZU9iamVjdDsNCj4gK30gWEVOSUZBQ0VfU1VTUEVORF9DT05URVhULCAqUFhFTklGQUNFX1NVU1BF
TkRfQ09OVEVYVDsNCj4gKw0KPiAgdHlwZWRlZiBzdHJ1Y3QgX1hFTklGQUNFX0dSQU5UX0NPTlRF
WFQgew0KPiAgICAgIFhFTklGQUNFX0NPTlRFWFRfSUQgICAgICAgIElkOw0KPiAgICAgIExJU1Rf
RU5UUlkgICAgICAgICAgICAgICAgIEVudHJ5Ow0KPiBAQCAtMzYzLDUgKzM2OSw0NSBAQCBHbnR0
YWJGcmVlTWFwKA0KPiAgICAgIF9faW5vdXQgIFBYRU5JRkFDRV9NQVBfQ09OVEVYVCBDb250ZXh0
DQo+ICAgICAgKTsNCj4gDQo+ICtOVFNUQVRVUw0KPiArSW9jdGxTdXNwZW5kR2V0Q291bnQoDQo+
ICsgICAgX19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLA0KPiArICAgIF9faW4gIFBDSEFSICAg
ICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwN
Cj4gKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sDQo+ICsgICAgX19vdXQgUFVM
T05HX1BUUiAgICAgICAgSW5mbw0KPiArICAgICk7DQo+ICsNCj4gK05UU1RBVFVTDQo+ICtJb2N0
bFN1c3BlbmRSZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+
ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05H
ICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExl
biwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0LA0KPiArICAgIF9f
b3V0IFBVTE9OR19QVFIgICAgICAgIEluZm8NCj4gKyAgICApOw0KPiArDQo+ICtOVFNUQVRVUw0K
PiArSW9jdGxTdXNwZW5kRGVyZWdpc3RlcigNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRPICAg
ICBGZG8sDQo+ICsgICAgX19pbiAgUFZPSUQgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgIF9f
aW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAg
ICAgIE91dExlbiwNCj4gKyAgICBfX2luICBQRklMRV9PQkpFQ1QgICAgICBGaWxlT2JqZWN0DQo+
ICsgICAgKTsNCj4gKw0KPiArVk9JRA0KPiArU3VzcGVuZEV2ZW50RmlyZSgNCj4gKyAgICBfX2lu
ICAgIFBYRU5JRkFDRV9GRE8gICBGZG8NCj4gKyAgICApOw0KPiArDQo+ICtfSVJRTF9yZXF1aXJl
c19tYXhfKERJU1BBVENIX0xFVkVMKQ0KPiArVk9JRA0KPiArU3VzcGVuZEZyZWVFdmVudCgNCj4g
KyAgICBfX2luICAgICBQWEVOSUZBQ0VfRkRPIEZkbywNCj4gKyAgICBfX2lub3V0ICBQWEVOSUZB
Q0VfU1VTUEVORF9DT05URVhUIENvbnRleHQNCj4gKyAgICApOw0KPiArDQo+ICAjZW5kaWYgLy8g
X0lPQ1RMU19IXw0KPiANCj4gZGlmZiAtLWdpdCBhL3ZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52
Y3hwcm9qDQo+IGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gaW5kZXggYzU3
ZTJhMi4uZmY3MGViMCAxMDA2NDQNCj4gLS0tIGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZj
eHByb2oNCj4gKysrIGIvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTc5
LDYgKzc5LDcgQEANCj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2Vc
ZmRvLmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHJl
Z2lzdHJ5LmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XHRocmVhZC5jIiAvPg0KPiArCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFj
ZVxpb2N0bF9zdXNwZW5kLmMiIC8+DQo+ICAJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHhlbmlmYWNlXGlvY3RsX2V2dGNobi5jIiAvPg0KPiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9nbnR0YWIuYyIgLz4NCj4gIAkJPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3RvcmUuYyIgLz4NCj4gZGlmZiAtLWdpdCBh
L3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qDQo+IGIvdnMyMDEzL3hlbmlmYWNlL3hl
bmlmYWNlLnZjeHByb2oNCj4gaW5kZXggMDhhYzNhMS4uM2EzYTkzNyAxMDA2NDQNCj4gLS0tIGEv
dnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gKysrIGIvdnMyMDEzL3hlbmlmYWNl
L3hlbmlmYWNlLnZjeHByb2oNCj4gQEAgLTEzMSw2ICsxMzEsNyBAQA0KPiAgICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGZkby5jIiAvPg0KPiAgICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHJlZ2lzdHJ5LmMiIC8+DQo+ICAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcdGhyZWFkLmMiIC8+DQo+ICsgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9jdGxfc3VzcGVuZC5jIiAv
Pg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX2V2
dGNobi5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNl
XGlvY3RsX2dudHRhYi5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XHhlbmlmYWNlXGlvY3RsX3N0b3JlLmMiIC8+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiAN
Cj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+
IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlz
dGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 13:43:49 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 13:43:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHtIq-0004Tg-W6; Tue, 28 Jun 2016 13:43:48 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9803ce555=Paul.Durrant@citrix.com>)
 id 1bHtIp-0004TW-2M
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 13:43:47 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 5C/71-09256-21F72775; Tue, 28 Jun 2016 13:43:46 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpmleJIrShJLcpLzFFi42LZKekooStUXxR
 usPwIk8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDN6Nh3lbngl0TF0y8LWRoYL0h0MXJySAj4SSxc
 fpwdxGYT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i7WLkYODmGBQIlle4whSoIkVqz/wg5hG
 0n8vvkYrJxFQFVid2M7WJxXwF1iys1PYHEhgQZGiQkbbUDGcAq4SZyalgESZhSQlfjSuBpqk7
 jErScQF0gICEgs2XOeGcIWlXj5+B8rhG0gsXXpPhaQMcwCmhLrd+lDtCpKTOl+CLVVUOLkzCc
 sEFtVJLY8PgA1hlti5ec/LBMYRWch2TYLYdIsJJNmIZm0gJFlFaN6cWpRWWqRrrFeUlFmekZJ
 bmJmjq6hgZlebmpxcWJ6ak5iUrFecn7uJkZghDAAwQ7Gjn9OhxglOZiURHkXMBSFC/El5adUZ
 iQWZ8QXleakFh9ilOHgUJLgnVMLlBMsSk1PrUjLzAHGKkxagoNHSYR3IUiat7ggMbc4Mx0idY
 pRl2PW8jtrmYRY8vLzUqXEeftBigRAijJK8+BGwNLGJUZZKWFeRqCjhHgKUotyM0tQ5V8xinM
 wKgnz3gKZwpOZVwK36RXQEUxAR7BW54McUZKIkJJqYPQxmrCyTi8yN0NiNkebeY+JWPtvaxsW
 oXXGsoZ1J2VZXDun1xnX+7+TObq7UDnmV9Wb2cdyTaJ27buQq+XLc8eQfdnkVB3tHLX1Bl9ff
 1H4/2lL5OOgt7su8zzYphnHvkGutfLt3i9rzr83bQm309/zr+qKlEni02XGT6+ky9o1Gh9PKx
 VYpMRSnJFoqMVcVJwIAMAgxZMWAwAA
X-Env-Sender: prvs=9803ce555=Paul.Durrant@citrix.com
X-Msg-Ref: server-2.tower-21.messagelabs.com!1467121425!7373647!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 63474 invoked from network); 28 Jun 2016 13:43:46 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-2.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 13:43:46 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="25182077"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 1/4] Call XenIfaceCleanup from
 IRP_MJ_CLEANUP
Thread-Index: AQHR0SjtO+ilIXm3fkmX1R7f9dcCPp/+47Ug
Date: Tue, 28 Jun 2016 13:43:35 +0000
Message-ID: <8b77459486794db898e5ee7cc6fdce44@AMSPEX02CL03.citrite.net>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
 <1467110150-11120-2-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1467110150-11120-2-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 1/4] Call XenIfaceCleanup from
 IRP_MJ_CLEANUP
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjggSnVuZSAyMDE2IDExOjM2DQo+IFRvOiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgNCj4gU3ViamVjdDog
W3dpbi1wdi1kZXZlbF0gW1BBVENIIDEvNF0gQ2FsbCBYZW5JZmFjZUNsZWFudXAgZnJvbQ0KPiBJ
UlBfTUpfQ0xFQU5VUA0KPiANCj4gWGVuSWZhY2VDbGVhbnVwIHdhcyBub3QgY2FsbGVkIHdoaWNo
IG1lYW50IHRoYXQgc29tZSB3YXRjaGVzLCBldmVudA0KPiBjaGFubmVscyBhbmQgZ3JhbnQgZW50
cmllcyB3ZXJlIG5vdCBjbGVhbmVkIHVwIG9uIGNsb3NpbmcgdGhlIGRldmljZQ0KPiBoYW5kbGUg
YW5kIHJlcXVpcmVkIGV4cGxpY2l0IGNsZWFudXAuIEFkZCBhIElSUCBoYW5kbGVyIHRvIGNhbGwN
Cj4gWGVuSWZhY2VDbGVhbnVwIGZyb20gdGhlIElSUF9NSl9DTEVBTlVQIGZvciBhIHNwZWNpZmlj
IEZpbGVPYmplY3QuDQo+IFRoaXMgZW5zdXJlcyBhbGwgd2F0Y2hlcywgZXZlbnQgY2hhbm5lbHMg
YW5kIGdyYW50IGVudHJpZXMgYXJlDQo+IGRlc3Ryb3llZCBpbiB0aGUgZXZlbnQgb2YgdGhlIGNh
bGxlciBjcmFzaGluZyBvciBub3QgZ3JhY2VmdWxsbHkNCj4gY2xlYW5pbmcgdXAgb2JqZWN0cy4N
Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4N
Cg0KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoN
Cj4gLS0tDQo+ICBzcmMveGVuaWZhY2UvZmRvLmMgfCAyMyArKysrKysrKysrKysrKysrKysrKysr
Kw0KPiAgMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQg
YS9zcmMveGVuaWZhY2UvZmRvLmMgYi9zcmMveGVuaWZhY2UvZmRvLmMNCj4gaW5kZXggZmExNGI1
Yi4uYmE4ZDE5YSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2Zkby5jDQo+ICsrKyBiL3Ny
Yy94ZW5pZmFjZS9mZG8uYw0KPiBAQCAtMjMwMCw2ICsyMzAwLDI1IEBAIEZkb0Rpc3BhdGNoU3lz
dGVtQ29udHJvbCgNCj4gICAgICByZXR1cm4gc3RhdHVzOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBE
RUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0KPiArRmRvRGlzcGF0Y2hDbGVhbnVwKA0KPiArICAg
IElOICBQWEVOSUZBQ0VfRkRPICAgRmRvLA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJw
DQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlv
bjsNCj4gKyAgICBQRklMRV9PQkpFQ1QgICAgICAgIEZpbGVPYmplY3Q7DQo+ICsNCj4gKyAgICBT
dGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArICAg
IEZpbGVPYmplY3QgPSBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0Ow0KPiArDQo+ICsgICAgLy8g
WGVuSWZhY2VDbGVhbnVwIHJlcXVpcmVzIFBBU1NJVkVfTEVWRUwgYXMgaXQgY2FuIGNhbGwNCj4g
S2VGbHVzaFF1ZXVlZERwY3MNCj4gKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09
LCBQQVNTSVZFX0xFVkVMKTsNCj4gKyAgICBYZW5JZmFjZUNsZWFudXAoRmRvLCBGaWxlT2JqZWN0
KTsNCj4gKw0KPiArICAgIHJldHVybiBGZG9EaXNwYXRjaENvbXBsZXRlKEZkbywgSXJwKTsNCj4g
K30NCj4gKw0KPiAgTlRTVEFUVVMNCj4gIEZkb0Rpc3BhdGNoKA0KPiAgICAgIElOICBQWEVOSUZB
Q0VfRkRPICAgRmRvLA0KPiBAQCAtMjMyOCw2ICsyMzQ3LDEwIEBAIEZkb0Rpc3BhdGNoKA0KPiAg
ICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaFN5c3RlbUNvbnRyb2woRmRvLCBJcnApOw0KPiAg
ICAgICAgICBicmVhazsNCj4gDQo+ICsgICAgY2FzZSBJUlBfTUpfQ0xFQU5VUDoNCj4gKyAgICAg
ICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hDbGVhbnVwKEZkbywgSXJwKTsNCj4gKyAgICAgICAgYnJl
YWs7DQo+ICsNCj4gICAgICBjYXNlIElSUF9NSl9DUkVBVEU6DQo+ICAgICAgY2FzZSBJUlBfTUpf
Q0xPU0U6DQo+ICAgICAgY2FzZSBJUlBfTUpfUkVBRDoNCj4gLS0NCj4gMS45LjQubXN5c2dpdC4x
DQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1h
bi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 13:43:49 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 13:43:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHtIq-0004Tg-W6; Tue, 28 Jun 2016 13:43:48 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9803ce555=Paul.Durrant@citrix.com>)
 id 1bHtIp-0004TW-2M
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 13:43:47 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 5C/71-09256-21F72775; Tue, 28 Jun 2016 13:43:46 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpmleJIrShJLcpLzFFi42LZKekooStUXxR
 usPwIk8WfxYkOjB6HP1xhCWCMYs3MS8qvSGDN6Nh3lbngl0TF0y8LWRoYL0h0MXJySAj4SSxc
 fpwdxGYT0JFYenQ+E4gtIlAg8f39PGYQm1lATeL6/i7WLkYODmGBQIlle4whSoIkVqz/wg5hG
 0n8vvkYrJxFQFVid2M7WJxXwF1iys1PYHEhgQZGiQkbbUDGcAq4SZyalgESZhSQlfjSuBpqk7
 jErScQF0gICEgs2XOeGcIWlXj5+B8rhG0gsXXpPhaQMcwCmhLrd+lDtCpKTOl+CLVVUOLkzCc
 sEFtVJLY8PgA1hlti5ec/LBMYRWch2TYLYdIsJJNmIZm0gJFlFaN6cWpRWWqRrrFeUlFmekZJ
 bmJmjq6hgZlebmpxcWJ6ak5iUrFecn7uJkZghDAAwQ7Gjn9OhxglOZiURHkXMBSFC/El5adUZ
 iQWZ8QXleakFh9ilOHgUJLgnVMLlBMsSk1PrUjLzAHGKkxagoNHSYR3IUiat7ggMbc4Mx0idY
 pRl2PW8jtrmYRY8vLzUqXEeftBigRAijJK8+BGwNLGJUZZKWFeRqCjhHgKUotyM0tQ5V8xinM
 wKgnz3gKZwpOZVwK36RXQEUxAR7BW54McUZKIkJJqYPQxmrCyTi8yN0NiNkebeY+JWPtvaxsW
 oXXGsoZ1J2VZXDun1xnX+7+TObq7UDnmV9Wb2cdyTaJ27buQq+XLc8eQfdnkVB3tHLX1Bl9ff
 1H4/2lL5OOgt7su8zzYphnHvkGutfLt3i9rzr83bQm309/zr+qKlEni02XGT6+ky9o1Gh9PKx
 VYpMRSnJFoqMVcVJwIAMAgxZMWAwAA
X-Env-Sender: prvs=9803ce555=Paul.Durrant@citrix.com
X-Msg-Ref: server-2.tower-21.messagelabs.com!1467121425!7373647!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=received_headers: No 
 Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 63474 invoked from network); 28 Jun 2016 13:43:46 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-2.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 13:43:46 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="25182077"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 1/4] Call XenIfaceCleanup from
 IRP_MJ_CLEANUP
Thread-Index: AQHR0SjtO+ilIXm3fkmX1R7f9dcCPp/+47Ug
Date: Tue, 28 Jun 2016 13:43:35 +0000
Message-ID: <8b77459486794db898e5ee7cc6fdce44@AMSPEX02CL03.citrite.net>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
 <1467110150-11120-2-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1467110150-11120-2-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 1/4] Call XenIfaceCleanup from
 IRP_MJ_CLEANUP
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjggSnVuZSAyMDE2IDExOjM2DQo+IFRvOiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgNCj4gU3ViamVjdDog
W3dpbi1wdi1kZXZlbF0gW1BBVENIIDEvNF0gQ2FsbCBYZW5JZmFjZUNsZWFudXAgZnJvbQ0KPiBJ
UlBfTUpfQ0xFQU5VUA0KPiANCj4gWGVuSWZhY2VDbGVhbnVwIHdhcyBub3QgY2FsbGVkIHdoaWNo
IG1lYW50IHRoYXQgc29tZSB3YXRjaGVzLCBldmVudA0KPiBjaGFubmVscyBhbmQgZ3JhbnQgZW50
cmllcyB3ZXJlIG5vdCBjbGVhbmVkIHVwIG9uIGNsb3NpbmcgdGhlIGRldmljZQ0KPiBoYW5kbGUg
YW5kIHJlcXVpcmVkIGV4cGxpY2l0IGNsZWFudXAuIEFkZCBhIElSUCBoYW5kbGVyIHRvIGNhbGwN
Cj4gWGVuSWZhY2VDbGVhbnVwIGZyb20gdGhlIElSUF9NSl9DTEVBTlVQIGZvciBhIHNwZWNpZmlj
IEZpbGVPYmplY3QuDQo+IFRoaXMgZW5zdXJlcyBhbGwgd2F0Y2hlcywgZXZlbnQgY2hhbm5lbHMg
YW5kIGdyYW50IGVudHJpZXMgYXJlDQo+IGRlc3Ryb3llZCBpbiB0aGUgZXZlbnQgb2YgdGhlIGNh
bGxlciBjcmFzaGluZyBvciBub3QgZ3JhY2VmdWxsbHkNCj4gY2xlYW5pbmcgdXAgb2JqZWN0cy4N
Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4N
Cg0KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoN
Cj4gLS0tDQo+ICBzcmMveGVuaWZhY2UvZmRvLmMgfCAyMyArKysrKysrKysrKysrKysrKysrKysr
Kw0KPiAgMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQg
YS9zcmMveGVuaWZhY2UvZmRvLmMgYi9zcmMveGVuaWZhY2UvZmRvLmMNCj4gaW5kZXggZmExNGI1
Yi4uYmE4ZDE5YSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2Zkby5jDQo+ICsrKyBiL3Ny
Yy94ZW5pZmFjZS9mZG8uYw0KPiBAQCAtMjMwMCw2ICsyMzAwLDI1IEBAIEZkb0Rpc3BhdGNoU3lz
dGVtQ29udHJvbCgNCj4gICAgICByZXR1cm4gc3RhdHVzOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBE
RUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0KPiArRmRvRGlzcGF0Y2hDbGVhbnVwKA0KPiArICAg
IElOICBQWEVOSUZBQ0VfRkRPICAgRmRvLA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJw
DQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlv
bjsNCj4gKyAgICBQRklMRV9PQkpFQ1QgICAgICAgIEZpbGVPYmplY3Q7DQo+ICsNCj4gKyAgICBT
dGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArICAg
IEZpbGVPYmplY3QgPSBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0Ow0KPiArDQo+ICsgICAgLy8g
WGVuSWZhY2VDbGVhbnVwIHJlcXVpcmVzIFBBU1NJVkVfTEVWRUwgYXMgaXQgY2FuIGNhbGwNCj4g
S2VGbHVzaFF1ZXVlZERwY3MNCj4gKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09
LCBQQVNTSVZFX0xFVkVMKTsNCj4gKyAgICBYZW5JZmFjZUNsZWFudXAoRmRvLCBGaWxlT2JqZWN0
KTsNCj4gKw0KPiArICAgIHJldHVybiBGZG9EaXNwYXRjaENvbXBsZXRlKEZkbywgSXJwKTsNCj4g
K30NCj4gKw0KPiAgTlRTVEFUVVMNCj4gIEZkb0Rpc3BhdGNoKA0KPiAgICAgIElOICBQWEVOSUZB
Q0VfRkRPICAgRmRvLA0KPiBAQCAtMjMyOCw2ICsyMzQ3LDEwIEBAIEZkb0Rpc3BhdGNoKA0KPiAg
ICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaFN5c3RlbUNvbnRyb2woRmRvLCBJcnApOw0KPiAg
ICAgICAgICBicmVhazsNCj4gDQo+ICsgICAgY2FzZSBJUlBfTUpfQ0xFQU5VUDoNCj4gKyAgICAg
ICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hDbGVhbnVwKEZkbywgSXJwKTsNCj4gKyAgICAgICAgYnJl
YWs7DQo+ICsNCj4gICAgICBjYXNlIElSUF9NSl9DUkVBVEU6DQo+ICAgICAgY2FzZSBJUlBfTUpf
Q0xPU0U6DQo+ICAgICAgY2FzZSBJUlBfTUpfUkVBRDoNCj4gLS0NCj4gMS45LjQubXN5c2dpdC4x
DQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcNCj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1h
bi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 13:46:57 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 13:46:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHtLt-0004b7-Fv; Tue, 28 Jun 2016 13:46:57 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9803ce555=Paul.Durrant@citrix.com>)
 id 1bHtLt-0004au-4R
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 13:46:57 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
 61/3A-01707-0DF72775; Tue, 28 Jun 2016 13:46:56 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQvd8fVG
 4wYaduhZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y8KNj4wFT70qbrS1sTQwvvDsYuTkkBDwk/h2
 8CQbiM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V2sILawgJvEzPZZjBA17hJ7OvvZuxg5g
 Gwjia671SBhFgFVifuzb4KV84KUnLsAVMLFISTQwCjx4+YKsF5OoDnTm/6B2YwCshJfGldD7R
 KXuPUE4gYJAQGJJXvOM0PYohIvH/9jhbANJLYu3ccCspdZQFNi/S59iFZFiSndD9kh9gpKnJz
 5hAXEFhJQkdjy+ADUGG6JlZ//sExgFJ2FZNsshEmzkEyahWTSAkaWVYwaxalFZalFuoameklF
 mekZJbmJmTm6hoYmermpxcWJ6ak5iUnFesn5uZsYgXFSz8DAuIPx72nPQ4ySHExKorwLGIrCh
 fiS8lMqMxKLM+KLSnNSiw8xynBwKEnwbqgDygkWpaanVqRl5gAjFiYtwcGjJMI7CSTNW1yQmF
 ucmQ6ROsWoKCXOWwSSEABJZJTmwbXBksQlRlkpYV5GBgYGIZ6C1KLczBJU+VeM4hyMSsK850C
 m8GTmlcBNfwW0mAloMWt1PsjikkSElFQD4wKmAPfOQB8NMZkFO15scfp6r/5XxOSIBZ9tHgrP
 +Xmx/Ehiwaqmnr2xaRxfrA6fbE7kmnOHK4g/qu7A8ecX1x6x3qYd9SfmtF1DNJ+Iyf2nP4LPV
 kVaVW1eL+cu8OWBceVSZq3rq+8v+hEbMivix5M39XeuhGs4sSWq8ZlomXt9FP2hm/dPUImlOC
 PRUIu5qDgRAGGwJqQNAwAA
X-Env-Sender: prvs=9803ce555=Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1467121615!50312161!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 64717 invoked from network); 28 Jun 2016 13:46:55 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 13:46:55 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="25182424"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 3/4] Add SharedInfo IOCTL interface
Thread-Index: AQHR0SjmRnB0A+0ZFEOmyxntIHORVp/+5Fig
Date: Tue, 28 Jun 2016 13:46:43 +0000
Message-ID: <185453e4643d4e7d9b94429584f9a6c9@AMSPEX02CL03.citrite.net>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
 <1467110150-11120-4-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1467110150-11120-4-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 3/4] Add SharedInfo IOCTL interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjggSnVuZSAyMDE2IDExOjM2DQo+IFRvOiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgNCj4gU3ViamVjdDog
W3dpbi1wdi1kZXZlbF0gW1BBVENIIDMvNF0gQWRkIFNoYXJlZEluZm8gSU9DVEwgaW50ZXJmYWNl
DQo+IA0KPiBBZGRzIElPQ1RMcyBmb3I6DQo+ICogR2V0VGltZSAtIHJldHVybnMgWGVuIHdhbGxj
bG9jayB0aW1lDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNp
dHJpeC5jb20+DQoNCkl0J3MgYSBuaXQsIGJ1dCBJIHByZWZlciBTSEFSRURfSU5GTyBvciBzaGFy
ZWRfaW5mbyB3aGVuIG5vdCB1c2luZyBDYW1lbENhc2UuIEknbGwgZml4IGl0IHVwIG9uIGNvbW1p
dCBzby4uLg0KDQpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4
LmNvbT4NCg0KPiAtLS0NCj4gIGluY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmggICAgICAgIHwgIDkg
KysrKysrDQo+ICBzcmMveGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jICB8IDY4DQo+ICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIHNyYy94ZW5pZmFjZS9pb2N0
bHMuYyAgICAgICAgICAgIHwgIDYgKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICAg
ICAgICAgfCAgOSArKysrKysNCj4gIHZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qIHwg
IDEgKw0KPiAgdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2ogfCAgMSArDQo+ICA2IGZp
bGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv
eGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS94
ZW5pZmFjZV9pb2N0bHMuaCBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgNCj4gaW5kZXggNWY2
NWYxNC4uZGNkZGI1ZSAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaA0K
PiArKysgYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+IEBAIC0zNjAsNCArMzYwLDEzIEBA
IHR5cGVkZWYgc3RydWN0DQo+IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCB7DQo+ICAj
ZGVmaW5lIElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUiBcDQo+ICAgICAgQ1RMX0NP
REUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4MzIsIE1FVEhPRF9CVUZGRVJFRCwNCj4gRklMRV9B
TllfQUNDRVNTKQ0KPiANCj4gKy8qISBcYnJpZWYgR2V0cyB0aGUgY3VycmVudCB0aW1lLg0KPiAr
DQo+ICsgICAgSW5wdXQ6IE5vbmUNCj4gKw0KPiArICAgIE91dHB1dDogTEFSR0VfSU5URUdFUg0K
PiArKi8NCj4gKyNkZWZpbmUgSU9DVExfWEVOSUZBQ0VfU0hBUkVESU5GT19HRVRfVElNRSBcDQo+
ICsgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4NDAsIE1FVEhPRF9CVUZGRVJF
RCwNCj4gRklMRV9BTllfQUNDRVNTKQ0KPiArDQo+ICAjZW5kaWYgLy8gX1hFTklGQUNFX0lPQ1RM
U19IXw0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3RsX3NoYXJlZGluZm8uYyBiL3Ny
Yy94ZW5pZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g
aW5kZXggMDAwMDAwMC4uYzlkZmU2NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy94ZW5p
ZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMNCj4gQEAgLTAsMCArMSw2OCBAQA0KPiArLyogQ29weXJp
Z2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
PiArICoNCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsDQo+ICsgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkDQo+ICsgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0K
PiArICoNCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUNCj4gKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlDQo+ICsgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyDQo+ICsgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4NCj4gKyAqDQo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsgKiBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KPiArICogTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+ICsg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwNCj4gKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsDQo+ICsgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1INCj4gKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiArICogV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+ICsgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+ICsgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+
ICsgKiBTVUNIIERBTUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSAiZHJpdmVyLmgiDQo+
ICsjaW5jbHVkZSAiaW9jdGxzLmgiDQo+ICsjaW5jbHVkZSAieGVuaWZhY2VfaW9jdGxzLmgiDQo+
ICsjaW5jbHVkZSAibG9nLmgiDQo+ICsNCj4gK0RFQ0xTUEVDX05PSU5MSU5FDQo+ICtOVFNUQVRV
Uw0KPiArSW9jdGxTaGFyZWRJbmZvR2V0VGltZSgNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRP
ICAgICBGZG8sDQo+ICsgICAgX19pbiAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAg
IF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAg
ICAgICAgIE91dExlbiwNCj4gKyAgICBfX291dCBQVUxPTkdfUFRSICAgICAgICBJbmZvDQo+ICsg
ICAgKQ0KPiArew0KPiArICAgIE5UU1RBVFVTICAgICAgICBzdGF0dXM7DQo+ICsgICAgUExBUkdF
X0lOVEVHRVIgIFZhbHVlOw0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVG
RkVSX1NJWkU7DQo+ICsgICAgaWYgKEluTGVuICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7
DQo+ICsNCj4gKyAgICBpZiAoT3V0TGVuICE9IHNpemVvZihMQVJHRV9JTlRFR0VSKSkNCj4gKyAg
ICAgICAgZ290byBmYWlsMjsNCj4gKw0KPiArICAgIFZhbHVlID0gKFBMQVJHRV9JTlRFR0VSKUJ1
ZmZlcjsNCj4gKyAgICAqVmFsdWUgPSBYRU5CVVNfU0hBUkVEX0lORk8oR2V0VGltZSwgJkZkby0+
U2hhcmVkSW5mb0ludGVyZmFjZSk7DQo+ICsgICAgKkluZm8gPSAoVUxPTkdfUFRSKXNpemVvZihM
QVJHRV9JTlRFR0VSKTsNCj4gKw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0K
PiArZmFpbDI6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJcbiIpOw0K
PiArZmFpbDE6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgp
XG4iLCBzdGF0dXMpOw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+IGRpZmYgLS1naXQg
YS9zcmMveGVuaWZhY2UvaW9jdGxzLmMgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMNCj4gaW5kZXgg
MmRmMjk5Yy4uNzA5MmE1NiAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jDQo+
ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiBAQCAtMjU3LDYgKzI1NywxMiBAQCBYZW5J
ZmFjZUlvY3RsKA0KPiAgICAgICAgICBzdGF0dXMgPSBJb2N0bFN1c3BlbmREZXJlZ2lzdGVyKEZk
bywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuLCBTdGFjay0NCj4gPkZpbGVPYmplY3QpOw0KPiAgICAg
ICAgICBicmVhazsNCj4gDQo+ICsgICAgICAgIC8vIHNoYXJlZGluZm8NCj4gKyAgICBjYXNlIElP
Q1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUU6DQo+ICsgICAgICAgIHN0YXR1cyA9IElv
Y3RsU2hhcmVkSW5mb0dldFRpbWUoRmRvLCBCdWZmZXIsIEluTGVuLCBPdXRMZW4sICZJcnAtDQo+
ID5Jb1N0YXR1cy5JbmZvcm1hdGlvbik7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsNCj4g
ICAgICBkZWZhdWx0Og0KPiAgICAgICAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9ERVZJQ0Vf
UkVRVUVTVDsNCj4gICAgICAgICAgYnJlYWs7DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2Uv
aW9jdGxzLmggYi9zcmMveGVuaWZhY2UvaW9jdGxzLmgNCj4gaW5kZXggN2RkMzRlZS4uZDA2ZjZi
NSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5oDQo+ICsrKyBiL3NyYy94ZW5p
ZmFjZS9pb2N0bHMuaA0KPiBAQCAtNDA5LDUgKzQwOSwxNCBAQCBTdXNwZW5kRnJlZUV2ZW50KA0K
PiAgICAgIF9faW5vdXQgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQgQ29udGV4dA0KPiAgICAg
ICk7DQo+IA0KPiArTlRTVEFUVVMNCj4gK0lvY3RsU2hhcmVkSW5mb0dldFRpbWUoDQo+ICsgICAg
X19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLA0KPiArICAgIF9faW4gIFBDSEFSICAgICAgICAg
ICAgIEJ1ZmZlciwNCj4gKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwNCj4gKyAg
ICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sDQo+ICsgICAgX19vdXQgUFVMT05HX1BU
UiAgICAgICAgSW5mbw0KPiArICAgICk7DQo+ICsNCj4gICNlbmRpZiAvLyBfSU9DVExTX0hfDQo+
IA0KPiBkaWZmIC0tZ2l0IGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gYi92
czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiBpbmRleCBmZjcwZWIwLi5iYjM0NGU0
IDEwMDY0NA0KPiAtLS0gYS92czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiArKysg
Yi92czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiBAQCAtNzksNiArNzksNyBAQA0K
PiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxmZG8uYyIgLz4NCj4g
IAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VccmVnaXN0cnkuYyIgLz4N
Cj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcdGhyZWFkLmMiIC8+
DQo+ICsJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJl
ZGluZm8uYyIgLz4NCj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2Vc
aW9jdGxfc3VzcGVuZC5jIiAvPg0KPiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4
ZW5pZmFjZVxpb2N0bF9ldnRjaG4uYyIgLz4NCj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNceGVuaWZhY2VcaW9jdGxfZ250dGFiLmMiIC8+DQo+IGRpZmYgLS1naXQgYS92czIwMTMv
eGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiBiL3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52
Y3hwcm9qDQo+IGluZGV4IDNhM2E5MzcuLmM2MjMyZTQgMTAwNjQ0DQo+IC0tLSBhL3ZzMjAxMy94
ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFj
ZS52Y3hwcm9qDQo+IEBAIC0xMzEsNiArMTMxLDcgQEANCj4gICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxmZG8uYyIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxyZWdpc3RyeS5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHRocmVhZC5jIiAvPg0KPiArICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJlZGluZm8uYyIgLz4NCj4g
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9zdXNwZW5k
LmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9j
dGxfZXZ0Y2huLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVu
aWZhY2VcaW9jdGxfZ250dGFiLmMiIC8+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4g
DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdp
bi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp
c3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 13:46:57 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 13:46:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHtLt-0004b7-Fv; Tue, 28 Jun 2016 13:46:57 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9803ce555=Paul.Durrant@citrix.com>)
 id 1bHtLt-0004au-4R
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 13:46:57 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
 61/3A-01707-0DF72775; Tue, 28 Jun 2016 13:46:56 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRWlGSWpSXmKPExsWyU9JRQvd8fVG
 4wYaduhZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y8KNj4wFT70qbrS1sTQwvvDsYuTkkBDwk/h2
 8CQbiM0moCOx9Oh8JhBbRKBA4vv7ecwgNrOAmsT1/V2sILawgJvEzPZZjBA17hJ7OvvZuxg5g
 Gwjia671SBhFgFVifuzb4KV84KUnLsAVMLFISTQwCjx4+YKsF5OoDnTm/6B2YwCshJfGldD7R
 KXuPUE4gYJAQGJJXvOM0PYohIvH/9jhbANJLYu3ccCspdZQFNi/S59iFZFiSndD9kh9gpKnJz
 5hAXEFhJQkdjy+ADUGG6JlZ//sExgFJ2FZNsshEmzkEyahWTSAkaWVYwaxalFZalFuoameklF
 mekZJbmJmTm6hoYmermpxcWJ6ak5iUnFesn5uZsYgXFSz8DAuIPx72nPQ4ySHExKorwLGIrCh
 fiS8lMqMxKLM+KLSnNSiw8xynBwKEnwbqgDygkWpaanVqRl5gAjFiYtwcGjJMI7CSTNW1yQmF
 ucmQ6ROsWoKCXOWwSSEABJZJTmwbXBksQlRlkpYV5GBgYGIZ6C1KLczBJU+VeM4hyMSsK850C
 m8GTmlcBNfwW0mAloMWt1PsjikkSElFQD4wKmAPfOQB8NMZkFO15scfp6r/5XxOSIBZ9tHgrP
 +Xmx/Ehiwaqmnr2xaRxfrA6fbE7kmnOHK4g/qu7A8ecX1x6x3qYd9SfmtF1DNJ+Iyf2nP4LPV
 kVaVW1eL+cu8OWBceVSZq3rq+8v+hEbMivix5M39XeuhGs4sSWq8ZlomXt9FP2hm/dPUImlOC
 PRUIu5qDgRAGGwJqQNAwAA
X-Env-Sender: prvs=9803ce555=Paul.Durrant@citrix.com
X-Msg-Ref: server-3.tower-27.messagelabs.com!1467121615!50312161!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 64717 invoked from network); 28 Jun 2016 13:46:55 -0000
Received: from smtp.ctxuk.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-3.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 13:46:55 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="25182424"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 3/4] Add SharedInfo IOCTL interface
Thread-Index: AQHR0SjmRnB0A+0ZFEOmyxntIHORVp/+5Fig
Date: Tue, 28 Jun 2016 13:46:43 +0000
Message-ID: <185453e4643d4e7d9b94429584f9a6c9@AMSPEX02CL03.citrite.net>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
 <1467110150-11120-4-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1467110150-11120-4-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 3/4] Add SharedInfo IOCTL interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjggSnVuZSAyMDE2IDExOjM2DQo+IFRvOiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgNCj4gU3ViamVjdDog
W3dpbi1wdi1kZXZlbF0gW1BBVENIIDMvNF0gQWRkIFNoYXJlZEluZm8gSU9DVEwgaW50ZXJmYWNl
DQo+IA0KPiBBZGRzIElPQ1RMcyBmb3I6DQo+ICogR2V0VGltZSAtIHJldHVybnMgWGVuIHdhbGxj
bG9jayB0aW1lDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNp
dHJpeC5jb20+DQoNCkl0J3MgYSBuaXQsIGJ1dCBJIHByZWZlciBTSEFSRURfSU5GTyBvciBzaGFy
ZWRfaW5mbyB3aGVuIG5vdCB1c2luZyBDYW1lbENhc2UuIEknbGwgZml4IGl0IHVwIG9uIGNvbW1p
dCBzby4uLg0KDQpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4
LmNvbT4NCg0KPiAtLS0NCj4gIGluY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmggICAgICAgIHwgIDkg
KysrKysrDQo+ICBzcmMveGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jICB8IDY4DQo+ICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIHNyYy94ZW5pZmFjZS9pb2N0
bHMuYyAgICAgICAgICAgIHwgIDYgKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICAg
ICAgICAgfCAgOSArKysrKysNCj4gIHZzMjAxMi94ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qIHwg
IDEgKw0KPiAgdnMyMDEzL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2ogfCAgMSArDQo+ICA2IGZp
bGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv
eGVuaWZhY2UvaW9jdGxfc2hhcmVkaW5mby5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS94
ZW5pZmFjZV9pb2N0bHMuaCBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgNCj4gaW5kZXggNWY2
NWYxNC4uZGNkZGI1ZSAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS94ZW5pZmFjZV9pb2N0bHMuaA0K
PiArKysgYi9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+IEBAIC0zNjAsNCArMzYwLDEzIEBA
IHR5cGVkZWYgc3RydWN0DQo+IF9YRU5JRkFDRV9TVVNQRU5EX1JFR0lTVEVSX09VVCB7DQo+ICAj
ZGVmaW5lIElPQ1RMX1hFTklGQUNFX1NVU1BFTkRfREVSRUdJU1RFUiBcDQo+ICAgICAgQ1RMX0NP
REUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4MzIsIE1FVEhPRF9CVUZGRVJFRCwNCj4gRklMRV9B
TllfQUNDRVNTKQ0KPiANCj4gKy8qISBcYnJpZWYgR2V0cyB0aGUgY3VycmVudCB0aW1lLg0KPiAr
DQo+ICsgICAgSW5wdXQ6IE5vbmUNCj4gKw0KPiArICAgIE91dHB1dDogTEFSR0VfSU5URUdFUg0K
PiArKi8NCj4gKyNkZWZpbmUgSU9DVExfWEVOSUZBQ0VfU0hBUkVESU5GT19HRVRfVElNRSBcDQo+
ICsgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4NDAsIE1FVEhPRF9CVUZGRVJF
RCwNCj4gRklMRV9BTllfQUNDRVNTKQ0KPiArDQo+ICAjZW5kaWYgLy8gX1hFTklGQUNFX0lPQ1RM
U19IXw0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmlmYWNlL2lvY3RsX3NoYXJlZGluZm8uYyBiL3Ny
Yy94ZW5pZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g
aW5kZXggMDAwMDAwMC4uYzlkZmU2NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy94ZW5p
ZmFjZS9pb2N0bF9zaGFyZWRpbmZvLmMNCj4gQEAgLTAsMCArMSw2OCBAQA0KPiArLyogQ29weXJp
Z2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
PiArICoNCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsDQo+ICsgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkDQo+ICsgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0K
PiArICoNCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUNCj4gKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlDQo+ICsgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyDQo+ICsgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4NCj4gKyAqDQo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsgKiBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KPiArICogTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+ICsg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwNCj4gKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsDQo+ICsgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1INCj4gKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiArICogV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+ICsgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+ICsgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+
ICsgKiBTVUNIIERBTUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSAiZHJpdmVyLmgiDQo+
ICsjaW5jbHVkZSAiaW9jdGxzLmgiDQo+ICsjaW5jbHVkZSAieGVuaWZhY2VfaW9jdGxzLmgiDQo+
ICsjaW5jbHVkZSAibG9nLmgiDQo+ICsNCj4gK0RFQ0xTUEVDX05PSU5MSU5FDQo+ICtOVFNUQVRV
Uw0KPiArSW9jdGxTaGFyZWRJbmZvR2V0VGltZSgNCj4gKyAgICBfX2luICBQWEVOSUZBQ0VfRkRP
ICAgICBGZG8sDQo+ICsgICAgX19pbiAgUENIQVIgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAg
IF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9faW4gIFVMT05HICAgICAg
ICAgICAgIE91dExlbiwNCj4gKyAgICBfX291dCBQVUxPTkdfUFRSICAgICAgICBJbmZvDQo+ICsg
ICAgKQ0KPiArew0KPiArICAgIE5UU1RBVFVTICAgICAgICBzdGF0dXM7DQo+ICsgICAgUExBUkdF
X0lOVEVHRVIgIFZhbHVlOw0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfQlVG
RkVSX1NJWkU7DQo+ICsgICAgaWYgKEluTGVuICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7
DQo+ICsNCj4gKyAgICBpZiAoT3V0TGVuICE9IHNpemVvZihMQVJHRV9JTlRFR0VSKSkNCj4gKyAg
ICAgICAgZ290byBmYWlsMjsNCj4gKw0KPiArICAgIFZhbHVlID0gKFBMQVJHRV9JTlRFR0VSKUJ1
ZmZlcjsNCj4gKyAgICAqVmFsdWUgPSBYRU5CVVNfU0hBUkVEX0lORk8oR2V0VGltZSwgJkZkby0+
U2hhcmVkSW5mb0ludGVyZmFjZSk7DQo+ICsgICAgKkluZm8gPSAoVUxPTkdfUFRSKXNpemVvZihM
QVJHRV9JTlRFR0VSKTsNCj4gKw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0K
PiArZmFpbDI6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDJcbiIpOw0K
PiArZmFpbDE6DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KEVSUk9SLCAiRmFpbDEgKCUwOHgp
XG4iLCBzdGF0dXMpOw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+IGRpZmYgLS1naXQg
YS9zcmMveGVuaWZhY2UvaW9jdGxzLmMgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMNCj4gaW5kZXgg
MmRmMjk5Yy4uNzA5MmE1NiAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jDQo+
ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuYw0KPiBAQCAtMjU3LDYgKzI1NywxMiBAQCBYZW5J
ZmFjZUlvY3RsKA0KPiAgICAgICAgICBzdGF0dXMgPSBJb2N0bFN1c3BlbmREZXJlZ2lzdGVyKEZk
bywgQnVmZmVyLCBJbkxlbiwgT3V0TGVuLCBTdGFjay0NCj4gPkZpbGVPYmplY3QpOw0KPiAgICAg
ICAgICBicmVhazsNCj4gDQo+ICsgICAgICAgIC8vIHNoYXJlZGluZm8NCj4gKyAgICBjYXNlIElP
Q1RMX1hFTklGQUNFX1NIQVJFRElORk9fR0VUX1RJTUU6DQo+ICsgICAgICAgIHN0YXR1cyA9IElv
Y3RsU2hhcmVkSW5mb0dldFRpbWUoRmRvLCBCdWZmZXIsIEluTGVuLCBPdXRMZW4sICZJcnAtDQo+
ID5Jb1N0YXR1cy5JbmZvcm1hdGlvbik7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsNCj4g
ICAgICBkZWZhdWx0Og0KPiAgICAgICAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9ERVZJQ0Vf
UkVRVUVTVDsNCj4gICAgICAgICAgYnJlYWs7DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2Uv
aW9jdGxzLmggYi9zcmMveGVuaWZhY2UvaW9jdGxzLmgNCj4gaW5kZXggN2RkMzRlZS4uZDA2ZjZi
NSAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5oDQo+ICsrKyBiL3NyYy94ZW5p
ZmFjZS9pb2N0bHMuaA0KPiBAQCAtNDA5LDUgKzQwOSwxNCBAQCBTdXNwZW5kRnJlZUV2ZW50KA0K
PiAgICAgIF9faW5vdXQgIFBYRU5JRkFDRV9TVVNQRU5EX0NPTlRFWFQgQ29udGV4dA0KPiAgICAg
ICk7DQo+IA0KPiArTlRTVEFUVVMNCj4gK0lvY3RsU2hhcmVkSW5mb0dldFRpbWUoDQo+ICsgICAg
X19pbiAgUFhFTklGQUNFX0ZETyAgICAgRmRvLA0KPiArICAgIF9faW4gIFBDSEFSICAgICAgICAg
ICAgIEJ1ZmZlciwNCj4gKyAgICBfX2luICBVTE9ORyAgICAgICAgICAgICBJbkxlbiwNCj4gKyAg
ICBfX2luICBVTE9ORyAgICAgICAgICAgICBPdXRMZW4sDQo+ICsgICAgX19vdXQgUFVMT05HX1BU
UiAgICAgICAgSW5mbw0KPiArICAgICk7DQo+ICsNCj4gICNlbmRpZiAvLyBfSU9DVExTX0hfDQo+
IA0KPiBkaWZmIC0tZ2l0IGEvdnMyMDEyL3hlbmlmYWNlL3hlbmlmYWNlLnZjeHByb2oNCj4gYi92
czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiBpbmRleCBmZjcwZWIwLi5iYjM0NGU0
IDEwMDY0NA0KPiAtLS0gYS92czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiArKysg
Yi92czIwMTIveGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiBAQCAtNzksNiArNzksNyBAQA0K
PiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxmZG8uYyIgLz4NCj4g
IAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VccmVnaXN0cnkuYyIgLz4N
Cj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcdGhyZWFkLmMiIC8+
DQo+ICsJCTxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJl
ZGluZm8uYyIgLz4NCj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2Vc
aW9jdGxfc3VzcGVuZC5jIiAvPg0KPiAgCQk8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4
ZW5pZmFjZVxpb2N0bF9ldnRjaG4uYyIgLz4NCj4gIAkJPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNceGVuaWZhY2VcaW9jdGxfZ250dGFiLmMiIC8+DQo+IGRpZmYgLS1naXQgYS92czIwMTMv
eGVuaWZhY2UveGVuaWZhY2UudmN4cHJvag0KPiBiL3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFjZS52
Y3hwcm9qDQo+IGluZGV4IDNhM2E5MzcuLmM2MjMyZTQgMTAwNjQ0DQo+IC0tLSBhL3ZzMjAxMy94
ZW5pZmFjZS94ZW5pZmFjZS52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAxMy94ZW5pZmFjZS94ZW5pZmFj
ZS52Y3hwcm9qDQo+IEBAIC0xMzEsNiArMTMxLDcgQEANCj4gICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxmZG8uYyIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxyZWdpc3RyeS5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXHRocmVhZC5jIiAvPg0KPiArICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cc3JjXHhlbmlmYWNlXGlvY3RsX3NoYXJlZGluZm8uYyIgLz4NCj4g
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1x4ZW5pZmFjZVxpb2N0bF9zdXNwZW5k
LmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVuaWZhY2VcaW9j
dGxfZXZ0Y2huLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNceGVu
aWZhY2VcaW9jdGxfZ250dGFiLmMiIC8+DQo+IC0tDQo+IDEuOS40Lm1zeXNnaXQuMQ0KPiANCj4g
DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdp
bi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp
c3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 13:51:34 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 13:51:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHtQL-0005AM-Ro; Tue, 28 Jun 2016 13:51:33 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9803ce555=Paul.Durrant@citrix.com>)
 id 1bHtQK-0005AF-Tk
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 13:51:33 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 C7/98-22092-4E082775; Tue, 28 Jun 2016 13:51:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQvdxQ1G
 4wYE7ehZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y8vWO8wFL3Urmmd/Z21gnKPbxcjJISHgJ3Gt
 6RoziM0moCOx9Oh8JhBbRKBA4vv7eWBxZgE1iev7u1hBbGEBU4mda6exQtSYSZw8vx7I5gCyj
 SRWXgsDCbMIqEr0XT4CVsIr4C5xdHor2BghgQZGidPLxEBsTgE3iS9bz7OA2IwCshJfGldDrR
 KXuPUE4gQJAQGJJXvOM0PYohIvH/9jhbANJLYu3ccCspZZQFNi/S59iFZFiSndD9kh1gpKnJz
 5hAVirYrElscHoMZwS6z8/IdlAqPoLCTbZiFMmoVk0iwkkxYwsqxiVC9OLSpLLdI10ksqykzP
 KMlNzMzRNTQw08tNLS5OTE/NSUwq1kvOz93ECIwRBiDYwbjsr9MhRkkOJiVR3gUMReFCfEn5K
 ZUZicUZ8UWlOanFhxhlODiUJHgb6oFygkWp6akVaZk5wGiFSUtw8CiJ8B4GSfMWFyTmFmemQ6
 ROMSpKiUP0CYAkMkrz4NpgCeISo6yUMC8j0CFCPAWpRbmZJajyrxjFORiVhHn3gEzhycwrgZv
 +CmgxE9Bi1up8kMUliQgpqQbGvl+PJs/3XPWUV99RTs98zpZVs9Wy7Fxu5j+Yzz6/9/XXb+u/
 P1VVWdx+495xnyV+TvMeCjd+f/5KjVs17eOemm2rH7x3ZXJa6dzBWnKxM03t/OEjfK3fDJas5
 3VZvGbfrgtv5sSpFBtp/hOeIiOve+bzmytnenZJ+nRt0pn4b63Z0qb0V/Jtp5RYijMSDbWYi4
 oTAdYUjoALAwAA
X-Env-Sender: prvs=9803ce555=Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-21.messagelabs.com!1467121891!21225613!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 47667 invoked from network); 28 Jun 2016 13:51:31 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-9.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 13:51:31 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="25183039"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 4/4] Add Log IOCTL
Thread-Index: AQHR0SjnZ+lRBwMu/kOmMUo2V1wed5/+5QUw
Date: Tue, 28 Jun 2016 13:48:16 +0000
Message-ID: <11b30f835f7e4d48897c8636013cdf17@AMSPEX02CL03.citrite.net>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
 <1467110150-11120-5-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1467110150-11120-5-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 4/4] Add Log IOCTL
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjggSnVuZSAyMDE2IDExOjM2DQo+IFRvOiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgNCj4gU3ViamVjdDog
W3dpbi1wdi1kZXZlbF0gW1BBVENIIDQvNF0gQWRkIExvZyBJT0NUTA0KPiANCj4gQWRkcyBhbiBJ
T0NUTCB0aGF0IHNlbmRzIGEgdXNlciBkZWZpbmVkIG1lc3NhZ2UgdG8gWGVuIHRvIGxvZy4NCj4g
DQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCg0K
UmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoNCj4g
LS0tDQo+ICBpbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIHwgMTUgKysrKysrKysrKysrKysNCj4g
IHNyYy94ZW5pZmFjZS9pb2N0bHMuYyAgICAgfCA1MQ0KPiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICB8
ICA4ICsrKysrKysrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKykNCj4gDQo+
IGRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIGIvaW5jbHVkZS94ZW5pZmFj
ZV9pb2N0bHMuaA0KPiBpbmRleCBkY2RkYjVlLi44NmE2ZWVhIDEwMDY0NA0KPiAtLS0gYS9pbmNs
dWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+ICsrKyBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgN
Cj4gQEAgLTM2OSw0ICszNjksMTkgQEAgdHlwZWRlZiBzdHJ1Y3QNCj4gX1hFTklGQUNFX1NVU1BF
TkRfUkVHSVNURVJfT1VUIHsNCj4gICNkZWZpbmUgSU9DVExfWEVOSUZBQ0VfU0hBUkVESU5GT19H
RVRfVElNRSBcDQo+ICAgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4NDAsIE1F
VEhPRF9CVUZGRVJFRCwNCj4gRklMRV9BTllfQUNDRVNTKQ0KPiANCj4gKy8qISBcYnJpZWYgTG9n
cyBhIG1lc3NhZ2UgdG8gRG9tMA0KPiArDQo+ICsgICAgSW5wdXQ6IE5VTC10ZXJtaW5hdGVkIENI
QVIgYXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSB0byBsb2cNCj4gKyAgICAgICAgICAgTXVz
dCBiZSBsZXNzIHRoYW4gWEVOSUZBQ0VfTE9HX01BWF9MRU5HVEggbG9uZywgYW5kIG9ubHkNCj4g
Y29udGFpbg0KPiArICAgICAgICAgICBwcmludGFibGUgb3IgbmV3bGluZSBjaGFyYWN0ZXJzICgg
aXNwcmludCh4KSB8fCB4ID09ICdcbicgKQ0KPiArDQo+ICsgICAgT3V0cHV0OiBOb25lDQo+ICsq
Lw0KPiArI2RlZmluZSBJT0NUTF9YRU5JRkFDRV9MT0cgXA0KPiArICAgIENUTF9DT0RFKEZJTEVf
REVWSUNFX1VOS05PV04sIDB4ODRGLCBNRVRIT0RfQlVGRkVSRUQsDQo+IEZJTEVfQU5ZX0FDQ0VT
UykNCj4gKw0KPiArLyohIFxicmllZiBNYXhpbXVtIG51bWJlciBvZiBDSEFScyBmb3IgSU9DVExf
WEVOSUZBQ0VfTE9HLCBpbmNsdWRpbmcNCj4gTlVMIHRlcm1pbmF0b3INCj4gKyovDQo+ICsjZGVm
aW5lIFhFTklGQUNFX0xPR19NQVhfTEVOR1RIICAgICAgICAgMjU2DQo+ICsNCj4gICNlbmRpZiAv
LyBfWEVOSUZBQ0VfSU9DVExTX0hfDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxz
LmMgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMNCj4gaW5kZXggNzA5MmE1Ni4uNjM5YjAxNSAxMDA2
NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9p
b2N0bHMuYw0KPiBAQCAtODUsNiArODUsNTMgQEAgX19GcmVlQ2FwdHVyZWRCdWZmZXIoDQo+ICAg
ICAgfQ0KPiAgfQ0KPiANCj4gK3N0YXRpYyBGT1JDRUlOTElORQ0KPiArQk9PTEVBTg0KPiArX19J
c1ZhbGlkU3RyKA0KPiArICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgIFN0ciwNCj4gKyAgICBf
X2luICBVTE9ORyAgICAgICAgICAgICBMZW4NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgZm9yICgg
OyBMZW4tLTsgKytTdHIpIHsNCj4gKyAgICAgICAgaWYgKCpTdHIgPT0gJ1wwJykNCj4gKyAgICAg
ICAgICAgIHJldHVybiBUUlVFOw0KPiArICAgICAgICBpZiAoKlN0ciA9PSAnXG4nIHx8ICpTdHIg
PT0gJ1xyJykNCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBuZXdsaW5lIGlzIGFsbG93ZWQN
Cj4gKyAgICAgICAgaWYgKCFpc3ByaW50KCh1bnNpZ25lZCBjaGFyKSpTdHIpKQ0KPiArICAgICAg
ICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiBGQUxTRTsNCj4gK30NCj4gKw0K
PiArREVDTFNQRUNfTk9JTkxJTkUNCj4gK05UU1RBVFVTDQo+ICtJb2N0bExvZygNCj4gKyAgICBf
X2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAgX19pbiAgUENIQVIgICAgICAgICAg
ICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAg
IF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExlbg0KPiArICAgICkNCj4gK3sNCj4gKyAgICBO
VFNUQVRVUyAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9C
VUZGRVJfU0laRTsNCj4gKyAgICBpZiAoSW5MZW4gPT0gMCB8fCBJbkxlbiA+IFhFTklGQUNFX0xP
R19NQVhfTEVOR1RIIHx8IE91dExlbiAhPSAwKQ0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiAr
DQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIGlmICgh
X19Jc1ZhbGlkU3RyKEJ1ZmZlciwgSW5MZW4pKQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiAr
DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KElORk8sICJVU0VSOiAlc1xuIiwgQnVmZmVyKTsN
Cj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIFhl
bklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gK2ZhaWwxOg0KPiArICAgIFhl
bklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKyAg
ICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICAvLyBDbGVhbnVwIHN0b3JlIHdhdGNoZXMg
YW5kIGV2ZW50IGNoYW5uZWxzLCBjYWxsZWQgb24gZmlsZSBvYmplY3QgY2xvc2UuDQo+ICBfSVJR
TF9yZXF1aXJlc18oUEFTU0lWRV9MRVZFTCkgLy8gRXZ0Y2huRnJlZSBjYWxscyBLZUZsdXNoUXVl
dWVkRHBjcw0KPiAgVk9JRA0KPiBAQCAtMjYyLDYgKzMwOSwxMCBAQCBYZW5JZmFjZUlvY3RsKA0K
PiAgICAgICAgICBzdGF0dXMgPSBJb2N0bFNoYXJlZEluZm9HZXRUaW1lKEZkbywgQnVmZmVyLCBJ
bkxlbiwgT3V0TGVuLCAmSXJwLQ0KPiA+SW9TdGF0dXMuSW5mb3JtYXRpb24pOw0KPiAgICAgICAg
ICBicmVhazsNCj4gDQo+ICsgICAgICAgIC8vIG1pc2MNCj4gKyAgICBjYXNlIElPQ1RMX1hFTklG
QUNFX0xPRzoNCj4gKyAgICAgICAgc3RhdHVzID0gSW9jdGxMb2coRmRvLCBCdWZmZXIsIEluTGVu
LCBPdXRMZW4pOw0KPiArICAgICAgICBicmVhazsNCj4gDQo+ICAgICAgZGVmYXVsdDoNCj4gICAg
ICAgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfREVWSUNFX1JFUVVFU1Q7DQo+IGRpZmYgLS1n
aXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmggYi9zcmMveGVuaWZhY2UvaW9jdGxzLmgNCj4gaW5k
ZXggZDA2ZjZiNS4uMTRkYTY3NCAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5o
DQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiBAQCAtNDE4LDUgKzQxOCwxMyBAQCBJ
b2N0bFNoYXJlZEluZm9HZXRUaW1lKA0KPiAgICAgIF9fb3V0IFBVTE9OR19QVFIgICAgICAgIElu
Zm8NCj4gICAgICApOw0KPiANCj4gK05UU1RBVFVTDQo+ICtJb2N0bExvZygNCj4gKyAgICBfX2lu
ICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAgX19pbiAgUENIQVIgICAgICAgICAgICAg
QnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9f
aW4gIFVMT05HICAgICAgICAgICAgIE91dExlbg0KPiArICAgICk7DQo+ICsNCj4gICNlbmRpZiAv
LyBfSU9DVExTX0hfDQo+IA0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBo
dHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1w
di1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
d2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93
aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Tue Jun 28 13:51:34 2016
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Jun 2016 13:51:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1bHtQL-0005AM-Ro; Tue, 28 Jun 2016 13:51:33 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9803ce555=Paul.Durrant@citrix.com>)
 id 1bHtQK-0005AF-Tk
 for win-pv-devel@lists.xenproject.org; Tue, 28 Jun 2016 13:51:33 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 C7/98-22092-4E082775; Tue, 28 Jun 2016 13:51:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRWlGSWpSXmKPExsWyU9JRQvdxQ1G
 4wYE7ehZ/Fic6MHoc/nCFJYAxijUzLym/IoE1Y8vWO8wFL3Urmmd/Z21gnKPbxcjJISHgJ3Gt
 6RoziM0moCOx9Oh8JhBbRKBA4vv7eWBxZgE1iev7u1hBbGEBU4mda6exQtSYSZw8vx7I5gCyj
 SRWXgsDCbMIqEr0XT4CVsIr4C5xdHor2BghgQZGidPLxEBsTgE3iS9bz7OA2IwCshJfGldDrR
 KXuPUE4gQJAQGJJXvOM0PYohIvH/9jhbANJLYu3ccCspZZQFNi/S59iFZFiSndD9kh1gpKnJz
 5hAVirYrElscHoMZwS6z8/IdlAqPoLCTbZiFMmoVk0iwkkxYwsqxiVC9OLSpLLdI10ksqykzP
 KMlNzMzRNTQw08tNLS5OTE/NSUwq1kvOz93ECIwRBiDYwbjsr9MhRkkOJiVR3gUMReFCfEn5K
 ZUZicUZ8UWlOanFhxhlODiUJHgb6oFygkWp6akVaZk5wGiFSUtw8CiJ8B4GSfMWFyTmFmemQ6
 ROMSpKiUP0CYAkMkrz4NpgCeISo6yUMC8j0CFCPAWpRbmZJajyrxjFORiVhHn3gEzhycwrgZv
 +CmgxE9Bi1up8kMUliQgpqQbGvl+PJs/3XPWUV99RTs98zpZVs9Wy7Fxu5j+Yzz6/9/XXb+u/
 P1VVWdx+495xnyV+TvMeCjd+f/5KjVs17eOemm2rH7x3ZXJa6dzBWnKxM03t/OEjfK3fDJas5
 3VZvGbfrgtv5sSpFBtp/hOeIiOve+bzmytnenZJ+nRt0pn4b63Z0qb0V/Jtp5RYijMSDbWYi4
 oTAdYUjoALAwAA
X-Env-Sender: prvs=9803ce555=Paul.Durrant@citrix.com
X-Msg-Ref: server-9.tower-21.messagelabs.com!1467121891!21225613!1
X-Originating-IP: [185.25.65.24]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50,
 received_headers: No Received headers
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 47667 invoked from network); 28 Jun 2016 13:51:31 -0000
Received: from smtp.eu.citrix.com (HELO SMTP.EU.CITRIX.COM) (185.25.65.24)
 by server-9.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 28 Jun 2016 13:51:31 -0000
X-IronPort-AV: E=Sophos;i="5.26,541,1459814400"; d="scan'208";a="25183039"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 4/4] Add Log IOCTL
Thread-Index: AQHR0SjnZ+lRBwMu/kOmMUo2V1wed5/+5QUw
Date: Tue, 28 Jun 2016 13:48:16 +0000
Message-ID: <11b30f835f7e4d48897c8636013cdf17@AMSPEX02CL03.citrite.net>
References: <1467110150-11120-1-git-send-email-owen.smith@citrix.com>
 <1467110150-11120-5-git-send-email-owen.smith@citrix.com>
In-Reply-To: <1467110150-11120-5-git-send-email-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
X-DLP: AMS1
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 4/4] Add Log IOCTL
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIE93ZW4gU21pdGgNCj4gU2VudDogMjggSnVuZSAyMDE2IDExOjM2DQo+IFRvOiB3aW4tcHYt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgNCj4gU3ViamVjdDog
W3dpbi1wdi1kZXZlbF0gW1BBVENIIDQvNF0gQWRkIExvZyBJT0NUTA0KPiANCj4gQWRkcyBhbiBJ
T0NUTCB0aGF0IHNlbmRzIGEgdXNlciBkZWZpbmVkIG1lc3NhZ2UgdG8gWGVuIHRvIGxvZy4NCj4g
DQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCg0K
UmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoNCj4g
LS0tDQo+ICBpbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIHwgMTUgKysrKysrKysrKysrKysNCj4g
IHNyYy94ZW5pZmFjZS9pb2N0bHMuYyAgICAgfCA1MQ0KPiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL3hlbmlmYWNlL2lvY3Rscy5oICAgICB8
ICA4ICsrKysrKysrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKykNCj4gDQo+
IGRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbmlmYWNlX2lvY3Rscy5oIGIvaW5jbHVkZS94ZW5pZmFj
ZV9pb2N0bHMuaA0KPiBpbmRleCBkY2RkYjVlLi44NmE2ZWVhIDEwMDY0NA0KPiAtLS0gYS9pbmNs
dWRlL3hlbmlmYWNlX2lvY3Rscy5oDQo+ICsrKyBiL2luY2x1ZGUveGVuaWZhY2VfaW9jdGxzLmgN
Cj4gQEAgLTM2OSw0ICszNjksMTkgQEAgdHlwZWRlZiBzdHJ1Y3QNCj4gX1hFTklGQUNFX1NVU1BF
TkRfUkVHSVNURVJfT1VUIHsNCj4gICNkZWZpbmUgSU9DVExfWEVOSUZBQ0VfU0hBUkVESU5GT19H
RVRfVElNRSBcDQo+ICAgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgMHg4NDAsIE1F
VEhPRF9CVUZGRVJFRCwNCj4gRklMRV9BTllfQUNDRVNTKQ0KPiANCj4gKy8qISBcYnJpZWYgTG9n
cyBhIG1lc3NhZ2UgdG8gRG9tMA0KPiArDQo+ICsgICAgSW5wdXQ6IE5VTC10ZXJtaW5hdGVkIENI
QVIgYXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSB0byBsb2cNCj4gKyAgICAgICAgICAgTXVz
dCBiZSBsZXNzIHRoYW4gWEVOSUZBQ0VfTE9HX01BWF9MRU5HVEggbG9uZywgYW5kIG9ubHkNCj4g
Y29udGFpbg0KPiArICAgICAgICAgICBwcmludGFibGUgb3IgbmV3bGluZSBjaGFyYWN0ZXJzICgg
aXNwcmludCh4KSB8fCB4ID09ICdcbicgKQ0KPiArDQo+ICsgICAgT3V0cHV0OiBOb25lDQo+ICsq
Lw0KPiArI2RlZmluZSBJT0NUTF9YRU5JRkFDRV9MT0cgXA0KPiArICAgIENUTF9DT0RFKEZJTEVf
REVWSUNFX1VOS05PV04sIDB4ODRGLCBNRVRIT0RfQlVGRkVSRUQsDQo+IEZJTEVfQU5ZX0FDQ0VT
UykNCj4gKw0KPiArLyohIFxicmllZiBNYXhpbXVtIG51bWJlciBvZiBDSEFScyBmb3IgSU9DVExf
WEVOSUZBQ0VfTE9HLCBpbmNsdWRpbmcNCj4gTlVMIHRlcm1pbmF0b3INCj4gKyovDQo+ICsjZGVm
aW5lIFhFTklGQUNFX0xPR19NQVhfTEVOR1RIICAgICAgICAgMjU2DQo+ICsNCj4gICNlbmRpZiAv
LyBfWEVOSUZBQ0VfSU9DVExTX0hfDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuaWZhY2UvaW9jdGxz
LmMgYi9zcmMveGVuaWZhY2UvaW9jdGxzLmMNCj4gaW5kZXggNzA5MmE1Ni4uNjM5YjAxNSAxMDA2
NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5jDQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9p
b2N0bHMuYw0KPiBAQCAtODUsNiArODUsNTMgQEAgX19GcmVlQ2FwdHVyZWRCdWZmZXIoDQo+ICAg
ICAgfQ0KPiAgfQ0KPiANCj4gK3N0YXRpYyBGT1JDRUlOTElORQ0KPiArQk9PTEVBTg0KPiArX19J
c1ZhbGlkU3RyKA0KPiArICAgIF9faW4gIFBDSEFSICAgICAgICAgICAgIFN0ciwNCj4gKyAgICBf
X2luICBVTE9ORyAgICAgICAgICAgICBMZW4NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgZm9yICgg
OyBMZW4tLTsgKytTdHIpIHsNCj4gKyAgICAgICAgaWYgKCpTdHIgPT0gJ1wwJykNCj4gKyAgICAg
ICAgICAgIHJldHVybiBUUlVFOw0KPiArICAgICAgICBpZiAoKlN0ciA9PSAnXG4nIHx8ICpTdHIg
PT0gJ1xyJykNCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBuZXdsaW5lIGlzIGFsbG93ZWQN
Cj4gKyAgICAgICAgaWYgKCFpc3ByaW50KCh1bnNpZ25lZCBjaGFyKSpTdHIpKQ0KPiArICAgICAg
ICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiBGQUxTRTsNCj4gK30NCj4gKw0K
PiArREVDTFNQRUNfTk9JTkxJTkUNCj4gK05UU1RBVFVTDQo+ICtJb2N0bExvZygNCj4gKyAgICBf
X2luICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAgX19pbiAgUENIQVIgICAgICAgICAg
ICAgQnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAg
IF9faW4gIFVMT05HICAgICAgICAgICAgIE91dExlbg0KPiArICAgICkNCj4gK3sNCj4gKyAgICBO
VFNUQVRVUyAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9C
VUZGRVJfU0laRTsNCj4gKyAgICBpZiAoSW5MZW4gPT0gMCB8fCBJbkxlbiA+IFhFTklGQUNFX0xP
R19NQVhfTEVOR1RIIHx8IE91dExlbiAhPSAwKQ0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiAr
DQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIGlmICgh
X19Jc1ZhbGlkU3RyKEJ1ZmZlciwgSW5MZW4pKQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiAr
DQo+ICsgICAgWGVuSWZhY2VEZWJ1Z1ByaW50KElORk8sICJVU0VSOiAlc1xuIiwgQnVmZmVyKTsN
Cj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIFhl
bklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwyXG4iKTsNCj4gK2ZhaWwxOg0KPiArICAgIFhl
bklmYWNlRGVidWdQcmludChFUlJPUiwgIkZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKyAg
ICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICAvLyBDbGVhbnVwIHN0b3JlIHdhdGNoZXMg
YW5kIGV2ZW50IGNoYW5uZWxzLCBjYWxsZWQgb24gZmlsZSBvYmplY3QgY2xvc2UuDQo+ICBfSVJR
TF9yZXF1aXJlc18oUEFTU0lWRV9MRVZFTCkgLy8gRXZ0Y2huRnJlZSBjYWxscyBLZUZsdXNoUXVl
dWVkRHBjcw0KPiAgVk9JRA0KPiBAQCAtMjYyLDYgKzMwOSwxMCBAQCBYZW5JZmFjZUlvY3RsKA0K
PiAgICAgICAgICBzdGF0dXMgPSBJb2N0bFNoYXJlZEluZm9HZXRUaW1lKEZkbywgQnVmZmVyLCBJ
bkxlbiwgT3V0TGVuLCAmSXJwLQ0KPiA+SW9TdGF0dXMuSW5mb3JtYXRpb24pOw0KPiAgICAgICAg
ICBicmVhazsNCj4gDQo+ICsgICAgICAgIC8vIG1pc2MNCj4gKyAgICBjYXNlIElPQ1RMX1hFTklG
QUNFX0xPRzoNCj4gKyAgICAgICAgc3RhdHVzID0gSW9jdGxMb2coRmRvLCBCdWZmZXIsIEluTGVu
LCBPdXRMZW4pOw0KPiArICAgICAgICBicmVhazsNCj4gDQo+ICAgICAgZGVmYXVsdDoNCj4gICAg
ICAgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfREVWSUNFX1JFUVVFU1Q7DQo+IGRpZmYgLS1n
aXQgYS9zcmMveGVuaWZhY2UvaW9jdGxzLmggYi9zcmMveGVuaWZhY2UvaW9jdGxzLmgNCj4gaW5k
ZXggZDA2ZjZiNS4uMTRkYTY3NCAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmlmYWNlL2lvY3Rscy5o
DQo+ICsrKyBiL3NyYy94ZW5pZmFjZS9pb2N0bHMuaA0KPiBAQCAtNDE4LDUgKzQxOCwxMyBAQCBJ
b2N0bFNoYXJlZEluZm9HZXRUaW1lKA0KPiAgICAgIF9fb3V0IFBVTE9OR19QVFIgICAgICAgIElu
Zm8NCj4gICAgICApOw0KPiANCj4gK05UU1RBVFVTDQo+ICtJb2N0bExvZygNCj4gKyAgICBfX2lu
ICBQWEVOSUZBQ0VfRkRPICAgICBGZG8sDQo+ICsgICAgX19pbiAgUENIQVIgICAgICAgICAgICAg
QnVmZmVyLA0KPiArICAgIF9faW4gIFVMT05HICAgICAgICAgICAgIEluTGVuLA0KPiArICAgIF9f
aW4gIFVMT05HICAgICAgICAgICAgIE91dExlbg0KPiArICAgICk7DQo+ICsNCj4gICNlbmRpZiAv
LyBfSU9DVExTX0hfDQo+IA0KPiAtLQ0KPiAxLjkuNC5tc3lzZ2l0LjENCj4gDQo+IA0KPiBfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBo
dHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3dpbi1w
di1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
d2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby93
aW4tcHYtZGV2ZWw=

