From minios-devel-bounces@lists.xenproject.org Fri Jul 01 09:33:19 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 01 Jul 2016 09:33: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bIup3-0007lm-LE; Fri, 01 Jul 2016 09:33:17 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bIup2-0007ld-HR; Fri, 01 Jul 2016 09:33:16 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
 AB/3C-01707-BD836775; Fri, 01 Jul 2016 09:33:15 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrHLMWRWlGSWpSXmKPExsVyuP0Ov+5ti7J
 wg29veCzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZlzf0MZUcJOl4uU03wbGF8xdjJwc
 EgJGEm8n/mPqYuTiEBJYyCixpP0aWIJNQFViw/VTrCC2iICbxJfvs9hAbGYBJ4kvk/eBxYUFd
 CR2XTrJAmKzANVPXrSGHcTmFbCXWDvlMyPEAjmJ6zOnM01g5FzAyLCKUaM4tagstUjXyFAvqS
 gzPaMkNzEzR9fQ0EQvN7W4ODE9NScxqVgvOT93EyPQb/UMDIw7GC9e8jvEKMnBpCTK+0W0LFy
 ILyk/pTIjsTgjvqg0J7X4EKMMB4eSBO97c6CcYFFqempFWmYOMIBg0hIcPEoivBLAIBLiLS5I
 zC3OTIdInWLU5Vjw4/ZaJiGWvPy8VClx3iMgMwRAijJK8+BGwIL5EqOslDAvIwMDgxBPQWpRb
 mYJqvwrRnEORiVh3k8gU3gy80rgNr0COoIJ6Ajm0mKQI0oSEVJSDYwKOl0ykz4Hn3Kc0m+69L
 7GMffMoyv/Py9g3pvCUVt6Uf3tn2er3oY0bMqPC+YWPnJjNvfvMwpZibMbDwWe2nXz+sEDKVc
 NJvy94VPimXzjn6iJ3accMR1T9Qpl9iCjtQWPmNzzX/s1tzVmPlgrI3Wr43JHlXDgw+tTDjd/
 tTv484cY51ozy/dKLMUZiYZazEXFiQDB6gJaYQIAAA==
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-8.tower-27.messagelabs.com!1467365594!40876622!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 63207 invoked from network); 1 Jul 2016 09:33:15 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-8.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 1 Jul 2016 09:33:15 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 0AAAAAC76;
 Fri,  1 Jul 2016 09:33:14 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Fri,  1 Jul 2016 11:33:11 +0200
Message-Id: <1467365591-22445-1-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org
Subject: [Minios-devel] [PATCH] mini-os: make cscope repair
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Im1ha2UgY3Njb3BlIiBkb2Vzbid0IGxpa2Ugc3ltYm9saWMgbGluayBpbmNsdWRlL21pbmktb3Mt
Pi4gYXMgaXQKbGVhZHMgdG8gYSBmaWxlIHN5c3RlbSByZWN1cnNpb24uIFJlcGFpciB0aGF0IGJ5
IG5vdCBmb2xsb3dpbmcgbGlua3MKd2hlbiBzZWFyY2hpbmcgdGhlIHNvdXJjZXMuCgpTaWduZWQt
b2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQogTWFrZWZpbGUgfCAy
ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg
LS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDEwYzA1YTUuLjJlNGJkYmEgMTAwNjQ0
Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0yMTIsNyArMjEyLDcgQEAgY2xlYW46
CWFyY2hfY2xlYW4KIAogCiBkZWZpbmUgYWxsX3NvdXJjZXMKLSAgICAgKCBmaW5kIC4gLWZvbGxv
dyAtbmFtZSBTQ0NTIC1wcnVuZSAtbyAtbmFtZSAnKi5bY2hTXScgLXByaW50ICkKKyAgICAgKCBm
aW5kIC4gLW5hbWUgU0NDUyAtcHJ1bmUgLW8gLW5hbWUgJyouW2NoU10nIC1wcmludCApCiBlbmRl
ZgogCiAuUEhPTlk6IGNzY29wZQotLSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jul 01 09:33:19 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 01 Jul 2016 09:33: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bIup3-0007lm-LE; Fri, 01 Jul 2016 09:33:17 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bIup2-0007ld-HR; Fri, 01 Jul 2016 09:33:16 +0000
Received: from [193.109.254.147] by server-11.bemta-14.messagelabs.com id
 AB/3C-01707-BD836775; Fri, 01 Jul 2016 09:33:15 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrHLMWRWlGSWpSXmKPExsVyuP0Ov+5ti7J
 wg29veCzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZlzf0MZUcJOl4uU03wbGF8xdjJwc
 EgJGEm8n/mPqYuTiEBJYyCixpP0aWIJNQFViw/VTrCC2iICbxJfvs9hAbGYBJ4kvk/eBxYUFd
 CR2XTrJAmKzANVPXrSGHcTmFbCXWDvlMyPEAjmJ6zOnM01g5FzAyLCKUaM4tagstUjXyFAvqS
 gzPaMkNzEzR9fQ0EQvN7W4ODE9NScxqVgvOT93EyPQb/UMDIw7GC9e8jvEKMnBpCTK+0W0LFy
 ILyk/pTIjsTgjvqg0J7X4EKMMB4eSBO97c6CcYFFqempFWmYOMIBg0hIcPEoivBLAIBLiLS5I
 zC3OTIdInWLU5Vjw4/ZaJiGWvPy8VClx3iMgMwRAijJK8+BGwIL5EqOslDAvIwMDgxBPQWpRb
 mYJqvwrRnEORiVh3k8gU3gy80rgNr0COoIJ6Ajm0mKQI0oSEVJSDYwKOl0ykz4Hn3Kc0m+69L
 7GMffMoyv/Py9g3pvCUVt6Uf3tn2er3oY0bMqPC+YWPnJjNvfvMwpZibMbDwWe2nXz+sEDKVc
 NJvy94VPimXzjn6iJ3accMR1T9Qpl9iCjtQWPmNzzX/s1tzVmPlgrI3Wr43JHlXDgw+tTDjd/
 tTv484cY51ozy/dKLMUZiYZazEXFiQDB6gJaYQIAAA==
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-8.tower-27.messagelabs.com!1467365594!40876622!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 63207 invoked from network); 1 Jul 2016 09:33:15 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-8.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 1 Jul 2016 09:33:15 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 0AAAAAC76;
 Fri,  1 Jul 2016 09:33:14 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Fri,  1 Jul 2016 11:33:11 +0200
Message-Id: <1467365591-22445-1-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org
Subject: [Minios-devel] [PATCH] mini-os: make cscope repair
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Im1ha2UgY3Njb3BlIiBkb2Vzbid0IGxpa2Ugc3ltYm9saWMgbGluayBpbmNsdWRlL21pbmktb3Mt
Pi4gYXMgaXQKbGVhZHMgdG8gYSBmaWxlIHN5c3RlbSByZWN1cnNpb24uIFJlcGFpciB0aGF0IGJ5
IG5vdCBmb2xsb3dpbmcgbGlua3MKd2hlbiBzZWFyY2hpbmcgdGhlIHNvdXJjZXMuCgpTaWduZWQt
b2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQogTWFrZWZpbGUgfCAy
ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg
LS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDEwYzA1YTUuLjJlNGJkYmEgMTAwNjQ0
Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0yMTIsNyArMjEyLDcgQEAgY2xlYW46
CWFyY2hfY2xlYW4KIAogCiBkZWZpbmUgYWxsX3NvdXJjZXMKLSAgICAgKCBmaW5kIC4gLWZvbGxv
dyAtbmFtZSBTQ0NTIC1wcnVuZSAtbyAtbmFtZSAnKi5bY2hTXScgLXByaW50ICkKKyAgICAgKCBm
aW5kIC4gLW5hbWUgU0NDUyAtcHJ1bmUgLW8gLW5hbWUgJyouW2NoU10nIC1wcmludCApCiBlbmRl
ZgogCiAuUEhPTlk6IGNzY29wZQotLSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jul 01 09:33:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 01 Jul 2016 09:33: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bIupK-0007or-U8; Fri, 01 Jul 2016 09:33:34 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bIupJ-0007oW-1u; Fri, 01 Jul 2016 09:33:33 +0000
Received: from [193.109.254.147] by server-10.bemta-14.messagelabs.com id
 42/A5-10191-CE836775; Fri, 01 Jul 2016 09:33:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrPLMWRWlGSWpSXmKPExsVyuP0Ov+4ri7J
 wgy0nTC3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZlw5O5u54FsvS8Wnnv8sDYybm5i6
 GDk5JASMJN5O/Adkc3EICSxklDg9ZwozSIJNQFViw/VTrCC2iICbxJfvs9hAbGaBOIk7b08yd
 jFycAgLeEs0zM0ECbMAlT9acxqsnFfAXmLivw2MEPPlJK7PnM40gZFzASPDKkb14tSistQiXV
 O9pKLM9IyS3MTMHF1DQxO93NTi4sT01JzEpGK95PzcTYxAzzEAwQ7GdYudDzFKcjApifJ+ES0
 LF+JLyk+pzEgszogvKs1JLT7EKMPBoSTB22AOlBMsSk1PrUjLzAGGEExagoNHSYQ3ASTNW1yQ
 mFucmQ6ROsWoy7Flxv21TEIsefl5qVLivB4gRQIgRRmleXAjYOF8iVFWSpiXEegoIZ6C1KLcz
 BJU+VeM4hyMSsK8W0Cm8GTmlcBtegV0BBPQEcylxSBHlCQipKQaGL23n5D5cMEnJCqSzyVOqS
 Cnv0zx3L0d1fPWvBfgyPObVr1Gip3L1/10Vdu5LedutHSJ/S85/emFlIzC5KBlEX81rkZeSeW
 oeH89aIniUZ47Jfmul1IVpj57Po3jnrflhzObj655NUHll0qT/rYMk7vc9a+UxdtuJof0Npyf
 fIH1Q1bAiw2BC5VYijMSDbWYi4oTAWCGXRJiAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1467365610!50421332!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=2.3 required=7.0 tests=BODY_FWORD,
 BODY_RANDOM_LONG,MAILTO_TO_SPAM_ADDR
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16572 invoked from network); 1 Jul 2016 09:33:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-4.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 1 Jul 2016 09:33:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 1E08CACDC;
 Fri,  1 Jul 2016 09:33:30 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Fri,  1 Jul 2016 11:33:27 +0200
Message-Id: <1467365607-22499-1-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 andrew.cooper3@citrix.com
Subject: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a version
	not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW5zdGVhZCBvZiBhIExpbnV4IGtlcm5lbCBiYXNlZCBpbXBsZW1lbnRhdGlvbiB1c2Ugb25lIGZy
b20gZnJlZUJTRC4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNv
bT4KLS0tCkknbSBub3Qgc3VyZSBhYm91dCBjb2Rpbmcgc3R5bGUgaGVyZTogc2hvdWxkIEkga2Vl
cCAobW9yZSBvciBsZXNzKSB0aGUKb25lIGZyb20gZnJlZUJTRCwgb3IgaXMgdGhlIFhlbiBzdHls
ZSBwcmVmZXJyZWQ/Ci0tLQogYmxrZnJvbnQuYyAgICAgICAgfCAgICA0IC0KIGluY2x1ZGUvbGli
LWdwbC5oIHwgICAgNyArLQogbGliL3ByaW50Zi5jICAgICAgfCAxNzQ0ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiB0cG1iYWNrLmMgICAgICAg
ICB8ICAgIDQgLQogNCBmaWxlcyBjaGFuZ2VkLCAxMTAwIGluc2VydGlvbnMoKyksIDY1OSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibGtmcm9udC5jIGIvYmxrZnJvbnQuYwppbmRleCBiZGI3
NzY1Li5mNzQ3MjE2IDEwMDY0NAotLS0gYS9ibGtmcm9udC5jCisrKyBiL2Jsa2Zyb250LmMKQEAg
LTE3LDEwICsxNyw2IEBACiAjaW5jbHVkZSA8bWluaS1vcy9saWIuaD4KICNpbmNsdWRlIDxmY250
bC5oPgogCi0jaWZuZGVmIEhBVkVfTElCQwotI2RlZmluZSBzdHJ0b3VsIHNpbXBsZV9zdHJ0b3Vs
Ci0jZW5kaWYKLQogLyogTm90ZTogd2UgZ2VuZXJhbGx5IGRvbid0IG5lZWQgdG8gZGlzYWJsZSBJ
UlFzIHNpbmNlIHdlIGhhcmRseSBkbyBhbnl0aGluZyBpbgogICogdGhlIGludGVycnVwdCBoYW5k
bGVyLiAgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWItZ3BsLmggYi9pbmNsdWRlL2xpYi1n
cGwuaAppbmRleCBkNTYwMmIyLi43NTU3NjI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpYi1ncGwu
aAorKysgYi9pbmNsdWRlL2xpYi1ncGwuaApAQCAtMzMsMTAgKzMzLDkgQEAKIAogI2lmbmRlZiBI
QVZFX0xJQkMKIC8qIHByaW50aW5nICovCi1leHRlcm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3Ry
dG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwotZXh0ZXJuIGxvbmcgc2lt
cGxlX3N0cnRvbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwotZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgbG9uZyBzaW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5z
aWduZWQgaW50KTsKLWV4dGVybiBsb25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAq
LGNoYXIgKiosdW5zaWduZWQgaW50KTsKK3Vuc2lnbmVkIGxvbmcgc3RydG91bChjb25zdCBjaGFy
ICpucHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSk7CitpbnQ2NF90IHN0cnRvcShjb25zdCBj
aGFyICpucHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSk7Cit1aW50NjRfdCBzdHJ0b3VxKGNv
bnN0IGNoYXIgKm5wdHIsIGNoYXIgKiplbmRwdHIsIGludCBiYXNlKTsKIAogZXh0ZXJuIGludCBz
cHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKIAlfX2F0dHJpYnV0ZV9f
ICgoZm9ybWF0IChwcmludGYsIDIsIDMpKSk7CmRpZmYgLS1naXQgYS9saWIvcHJpbnRmLmMgYi9s
aWIvcHJpbnRmLmMKaW5kZXggNDBmOTJmYy4uZTQ4YWI2MSAxMDA2NDQKLS0tIGEvbGliL3ByaW50
Zi5jCisrKyBiL2xpYi9wcmludGYuYwpAQCAtMSw1MCArMSw1MyBAQAogLyoKICAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCi0gKiAoQykgMjAwMyAtIFJvbGYgTmV1Z2ViYXVlciAtIEludGVsIFJlc2VhcmNo
IENhbWJyaWRnZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiAgICAgICAgRmlsZTogcHJp
bnRmLmMKLSAqICAgICAgQXV0aG9yOiBSb2xmIE5ldWdlYmF1ZXIgKG5ldWdlYmFyQGRjcy5nbGEu
YWMudWspCi0gKiAgICAgQ2hhbmdlczogR3J6ZWdvcnogTWlsb3MgKGdtMjgxQGNhbS5hYy51aykg
CisgKiAgICAgIEF1dGhvcjogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgogICoKLSAq
ICAgICAgICBEYXRlOiBBdWcgMjAwMywgQXVnIDIwMDUKKyAqICAgICAgICBEYXRlOiBKdW4gMjAx
NgogICoKICAqIEVudmlyb25tZW50OiBYZW4gTWluaW1hbCBPUwogICogRGVzY3JpcHRpb246IExp
YnJhcnkgZnVuY3Rpb25zIGZvciBwcmludGluZwotICogICAgICAgICAgICAgIChMaW51eCBwb3J0
LCBtYWlubHkgbGliL3ZzcHJpbnRmLmMpCisgKiAgICAgICAgICAgICAgKGZyZWVCU0QgcG9ydCkK
ICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogICovCiAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5
OTEsIDE5OTIgIExpbnVzIFRvcnZhbGRzCi0gKi8KLQotLyogdnNwcmludGYuYyAtLSBMYXJzIFdp
cnplbml1cyAmIExpbnVzIFRvcnZhbGRzLiAqLwotLyoKLSAqIFdpcnplbml1cyB3cm90ZSB0aGlz
IHBvcnRhYmx5LCBUb3J2YWxkcyBmdWNrZWQgaXQgdXAgOi0pCi0gKi8KLQotLyoKLSAqIEZyaSBK
dWwgMTMgMjAwMSBDcnV0Y2hlciBEdW5uYXZhbnQgPGNydXRjaGVyK2tlcm5lbEBkYXRhc3RhY2tz
LmNvbT4KLSAqIC0gY2hhbmdlZCB0byBwcm92aWRlIHNucHJpbnRmIGFuZCB2c25wcmludGYgZnVu
Y3Rpb25zCi0gKiBTbyBGZWIgIDEgMTY6NTE6MzIgQ0VUIDIwMDQgSnVlcmdlbiBRdWFkZSA8cXVh
ZGVAaHNuci5kZT4KLSAqIC0gc2NucHJpbnRmIGFuZCB2c2NucHJpbnRmCisvKi0KKyAqIENvcHly
aWdodCAoYykgMTk5MCwgMTk5MworICoJVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2Yg
Q2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgorICogVGhpcyBjb2RlIGlzIGRl
cml2ZWQgZnJvbSBzb2Z0d2FyZSBjb250cmlidXRlZCB0byBCZXJrZWxleSBieQorICogQ2hyaXMg
VG9yZWsuCiAgKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgot
ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqIENvcHlyaWdodCAoYykg
MjAxMSBUaGUgRnJlZUJTRCBGb3VuZGF0aW9uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
UG9ydGlvbnMgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGRldmVsb3BlZCBieSBEYXZpZCBDaGlzbmFs
bAorICogdW5kZXIgc3BvbnNvcnNoaXAgZnJvbSB0aGUgRnJlZUJTRCBGb3VuZGF0aW9uLgogICoK
LSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgogICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICog
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQor
ICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmICFkZWZpbmVkIEhB
VkVfTElCQwpAQCAtNTcsNDQ5ICs2MCw1MjkgQEAKICNpbmNsdWRlIDxtaW5pLW9zL2N0eXBlLmg+
CiAjaW5jbHVkZSA8bWluaS1vcy9wb3NpeC9saW1pdHMuaD4KIAotLyoqCi0gKiBzaW1wbGVfc3Ry
dG91bCAtIGNvbnZlcnQgYSBzdHJpbmcgdG8gYW4gdW5zaWduZWQgbG9uZwotICogQGNwOiBUaGUg
c3RhcnQgb2YgdGhlIHN0cmluZwotICogQGVuZHA6IEEgcG9pbnRlciB0byB0aGUgZW5kIG9mIHRo
ZSBwYXJzZWQgc3RyaW5nIHdpbGwgYmUgcGxhY2VkIGhlcmUKLSAqIEBiYXNlOiBUaGUgbnVtYmVy
IGJhc2UgdG8gdXNlCisjZGVmaW5lIF9fREVDT05TVCh0eXBlLCB2YXIpICAgICgodHlwZSkodWlu
dHB0cl90KShjb25zdCB2b2lkICopKHZhcikpCisvKiA2NCBiaXRzICsgMC1CeXRlIGF0IGVuZCAq
LworI2RlZmluZSBNQVhOQlVGCTY1CisKK3N0YXRpYyBjaGFyIGNvbnN0IGhleDJhc2NpaV9kYXRh
W10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKy8qCisgKiBQdXQg
YSBOVUwtdGVybWluYXRlZCBBU0NJSSBudW1iZXIgKGJhc2UgPD0gMzYpIGluIGEgYnVmZmVyIGlu
IHJldmVyc2UKKyAqIG9yZGVyOyByZXR1cm4gYW4gb3B0aW9uYWwgbGVuZ3RoIGFuZCBhIHBvaW50
ZXIgdG8gdGhlIGxhc3QgY2hhcmFjdGVyCisgKiB3cml0dGVuIGluIHRoZSBidWZmZXIgKGkuZS4s
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZykuCisgKiBUaGUgYnVmZmVyIHBvaW50
ZWQgdG8gYnkgYG5idWYnIG11c3QgaGF2ZSBsZW5ndGggPj0gTUFYTkJVRi4KICAqLwotdW5zaWdu
ZWQgbG9uZyBzaW1wbGVfc3RydG91bChjb25zdCBjaGFyICpjcCxjaGFyICoqZW5kcCx1bnNpZ25l
ZCBpbnQgYmFzZSkKK3N0YXRpYyBjaGFyICoKK2tzcHJpbnRuKGNoYXIgKm5idWYsIHVpbnRtYXhf
dCBudW0sIGludCBiYXNlLCBpbnQgKmxlbnAsIGludCB1cHBlcikKIHsKLSAgICB1bnNpZ25lZCBs
b25nIHJlc3VsdCA9IDAsdmFsdWU7Ci0KLSAgICBpZiAoIWJhc2UpIHsKLSAgICAgICAgYmFzZSA9
IDEwOwotICAgICAgICBpZiAoKmNwID09ICcwJykgewotICAgICAgICAgICAgYmFzZSA9IDg7Ci0g
ICAgICAgICAgICBjcCsrOwotICAgICAgICAgICAgaWYgKCgqY3AgPT0gJ3gnKSAmJiBpc3hkaWdp
dChjcFsxXSkpIHsKLSAgICAgICAgICAgICAgICBjcCsrOwotICAgICAgICAgICAgICAgIGJhc2Ug
PSAxNjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoaXN4ZGln
aXQoKmNwKSAmJgotICAgICAgICAgICAodmFsdWUgPSBpc2RpZ2l0KCpjcCkgPyAqY3AtJzAnIDog
dG91cHBlcigqY3ApLSdBJysxMCkgPCBiYXNlKSB7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCpi
YXNlICsgdmFsdWU7Ci0gICAgICAgIGNwKys7Ci0gICAgfQotICAgIGlmIChlbmRwKQotICAgICAg
ICAqZW5kcCA9IChjaGFyICopY3A7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoqCi0gKiBz
aW1wbGVfc3RydG9sIC0gY29udmVydCBhIHN0cmluZyB0byBhIHNpZ25lZCBsb25nCi0gKiBAY3A6
IFRoZSBzdGFydCBvZiB0aGUgc3RyaW5nCi0gKiBAZW5kcDogQSBwb2ludGVyIHRvIHRoZSBlbmQg
b2YgdGhlIHBhcnNlZCBzdHJpbmcgd2lsbCBiZSBwbGFjZWQgaGVyZQotICogQGJhc2U6IFRoZSBu
dW1iZXIgYmFzZSB0byB1c2UKLSAqLwotbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKmNw
LGNoYXIgKiplbmRwLHVuc2lnbmVkIGludCBiYXNlKQotewotICAgIGlmKCpjcD09Jy0nKQotICAg
ICAgICByZXR1cm4gLXNpbXBsZV9zdHJ0b3VsKGNwKzEsZW5kcCxiYXNlKTsKLSAgICByZXR1cm4g
c2ltcGxlX3N0cnRvdWwoY3AsZW5kcCxiYXNlKTsKKwljaGFyICpwLCBjOworCisJcCA9IG5idWY7
CisJKnAgPSAnXDAnOworCWRvIHsKKwkJYyA9IGhleDJhc2NpaV9kYXRhW251bSAlIGJhc2VdOwor
CQkqKytwID0gdXBwZXIgPyB0b3VwcGVyKGMpIDogYzsKKwl9IHdoaWxlIChudW0gLz0gYmFzZSk7
CisJaWYgKGxlbnApCisJCSpsZW5wID0gcCAtIG5idWY7CisJcmV0dXJuIChwKTsKIH0KIAotLyoq
Ci0gKiBzaW1wbGVfc3RydG91bGwgLSBjb252ZXJ0IGEgc3RyaW5nIHRvIGFuIHVuc2lnbmVkIGxv
bmcgbG9uZwotICogQGNwOiBUaGUgc3RhcnQgb2YgdGhlIHN0cmluZwotICogQGVuZHA6IEEgcG9p
bnRlciB0byB0aGUgZW5kIG9mIHRoZSBwYXJzZWQgc3RyaW5nIHdpbGwgYmUgcGxhY2VkIGhlcmUK
LSAqIEBiYXNlOiBUaGUgbnVtYmVyIGJhc2UgdG8gdXNlCisvKgorICogQ29udmVydCBhIHN0cmlu
ZyB0byBhbiB1bnNpZ25lZCBsb25nIGludGVnZXIuCisgKgorICogSWdub3JlcyBgbG9jYWxlJyBz
dHVmZi4gIEFzc3VtZXMgdGhhdCB0aGUgdXBwZXIgYW5kIGxvd2VyIGNhc2UKKyAqIGFscGhhYmV0
cyBhbmQgZGlnaXRzIGFyZSBlYWNoIGNvbnRpZ3VvdXMuCiAgKi8KLXVuc2lnbmVkIGxvbmcgbG9u
ZyBzaW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqY3AsY2hhciAqKmVuZHAsdW5zaWduZWQgaW50
IGJhc2UpCit1bnNpZ25lZCBsb25nCitzdHJ0b3VsKGNvbnN0IGNoYXIgKm5wdHIsIGNoYXIgKipl
bmRwdHIsIGludCBiYXNlKQogewotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHQgPSAwLHZh
bHVlOwotCi0gICAgaWYgKCFiYXNlKSB7Ci0gICAgICAgIGJhc2UgPSAxMDsKLSAgICAgICAgaWYg
KCpjcCA9PSAnMCcpIHsKLSAgICAgICAgICAgIGJhc2UgPSA4OwotICAgICAgICAgICAgY3ArKzsK
LSAgICAgICAgICAgIGlmICgoKmNwID09ICd4JykgJiYgaXN4ZGlnaXQoY3BbMV0pKSB7Ci0gICAg
ICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IG5wdHI7CisgICAgICAg
IHVuc2lnbmVkIGxvbmcgYWNjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CisgICAgICAgIHVu
c2lnbmVkIGxvbmcgY3V0b2ZmOworICAgICAgICBpbnQgbmVnID0gMCwgYW55LCBjdXRsaW07CisK
KyAgICAgICAgLyoKKyAgICAgICAgICogU2VlIHN0cnRvbCBmb3IgY29tbWVudHMgYXMgdG8gdGhl
IGxvZ2ljIHVzZWQuCisgICAgICAgICAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAg
YyA9ICpzKys7CisgICAgICAgIH0gd2hpbGUgKGlzc3BhY2UoYykpOworICAgICAgICBpZiAoYyA9
PSAnLScpIHsKKyAgICAgICAgICAgICAgICBuZWcgPSAxOworICAgICAgICAgICAgICAgIGMgPSAq
cysrOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJysnKQorICAgICAgICAgICAgICAgIGMgPSAq
cysrOworICAgICAgICBpZiAoKGJhc2UgPT0gMCB8fCBiYXNlID09IDE2KSAmJgorICAgICAgICAg
ICAgYyA9PSAnMCcgJiYgKCpzID09ICd4JyB8fCAqcyA9PSAnWCcpKSB7CisgICAgICAgICAgICAg
ICAgYyA9IHNbMV07CisgICAgICAgICAgICAgICAgcyArPSAyOwogICAgICAgICAgICAgICAgIGJh
c2UgPSAxNjsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoaXN4
ZGlnaXQoKmNwKSAmJiAodmFsdWUgPSBpc2RpZ2l0KCpjcCkgPyAqY3AtJzAnIDogKGlzbG93ZXIo
KmNwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPyB0b3VwcGVyKCpjcCkgOiAqY3ApLSdBJysxMCkgPCBiYXNlKSB7Ci0gICAg
ICAgIHJlc3VsdCA9IHJlc3VsdCpiYXNlICsgdmFsdWU7Ci0gICAgICAgIGNwKys7Ci0gICAgfQot
ICAgIGlmIChlbmRwKQotICAgICAgICAqZW5kcCA9IChjaGFyICopY3A7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgaWYgKGJhc2UgPT0gMCkKKyAgICAgICAgICAgICAgICBiYXNlID0gYyA9
PSAnMCcgPyA4IDogMTA7CisgICAgICAgIGN1dG9mZiA9ICh1bnNpZ25lZCBsb25nKVVMT05HX01B
WCAvICh1bnNpZ25lZCBsb25nKWJhc2U7CisgICAgICAgIGN1dGxpbSA9ICh1bnNpZ25lZCBsb25n
KVVMT05HX01BWCAlICh1bnNpZ25lZCBsb25nKWJhc2U7CisgICAgICAgIGZvciAoYWNjID0gMCwg
YW55ID0gMDs7IGMgPSAqcysrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc2FzY2lpKGMpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGlzZGln
aXQoYykpCisgICAgICAgICAgICAgICAgICAgICAgICBjIC09ICcwJzsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChpc2FscGhhKGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSBpc3Vw
cGVyKGMpID8gJ0EnIC0gMTAgOiAnYScgLSAxMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoYyA+PSBiYXNl
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGFu
eSA8IDAgfHwgYWNjID4gY3V0b2ZmIHx8IChhY2MgPT0gY3V0b2ZmICYmIGMgPiBjdXRsaW0pKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYW55ID0gLTE7CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjICo9IGJhc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhY2MgKz0gYzsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFueSA8IDApIHsKKyAgICAgICAg
ICAgICAgICBhY2MgPSBVTE9OR19NQVg7CisgICAgICAgIH0gZWxzZSBpZiAobmVnKQorICAgICAg
ICAgICAgICAgIGFjYyA9IC1hY2M7CisgICAgICAgIGlmIChlbmRwdHIgIT0gMCkKKyAgICAgICAg
ICAgICAgICAqZW5kcHRyID0gX19ERUNPTlNUKGNoYXIgKiwgYW55ID8gcyAtIDEgOiBucHRyKTsK
KyAgICAgICAgcmV0dXJuIChhY2MpOwogfQogCi0vKioKLSAqIHNpbXBsZV9zdHJ0b2xsIC0gY29u
dmVydCBhIHN0cmluZyB0byBhIHNpZ25lZCBsb25nIGxvbmcKLSAqIEBjcDogVGhlIHN0YXJ0IG9m
IHRoZSBzdHJpbmcKLSAqIEBlbmRwOiBBIHBvaW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUgcGFyc2Vk
IHN0cmluZyB3aWxsIGJlIHBsYWNlZCBoZXJlCi0gKiBAYmFzZTogVGhlIG51bWJlciBiYXNlIHRv
IHVzZQorLyoKKyAqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBxdWFkIGludGVnZXIuCisgKgorICog
SWdub3JlcyBgbG9jYWxlJyBzdHVmZi4gIEFzc3VtZXMgdGhhdCB0aGUgdXBwZXIgYW5kIGxvd2Vy
IGNhc2UKKyAqIGFscGhhYmV0cyBhbmQgZGlnaXRzIGFyZSBlYWNoIGNvbnRpZ3VvdXMuCiAgKi8K
LWxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICpjcCxjaGFyICoqZW5kcCx1bnNp
Z25lZCBpbnQgYmFzZSkKLXsKLSAgICBpZigqY3A9PSctJykKLSAgICAgICAgcmV0dXJuIC1zaW1w
bGVfc3RydG91bGwoY3ArMSxlbmRwLGJhc2UpOwotICAgIHJldHVybiBzaW1wbGVfc3RydG91bGwo
Y3AsZW5kcCxiYXNlKTsKLX0KLQotc3RhdGljIGludCBza2lwX2F0b2koY29uc3QgY2hhciAqKnMp
Ci17Ci0gICAgaW50IGk9MDsKLQotICAgIHdoaWxlIChpc2RpZ2l0KCoqcykpCi0gICAgICAgIGkg
PSBpKjEwICsgKigoKnMpKyspIC0gJzAnOwotICAgIHJldHVybiBpOwotfQotCi0jZGVmaW5lIFpF
Uk9QQUQgMSAgICAgICAgICAgICAgIC8qIHBhZCB3aXRoIHplcm8gKi8KLSNkZWZpbmUgU0lHTiAg
ICAyICAgICAgICAgICAgICAgLyogdW5zaWduZWQvc2lnbmVkIGxvbmcgKi8KLSNkZWZpbmUgUExV
UyAgICA0ICAgICAgICAgICAgICAgLyogc2hvdyBwbHVzICovCi0jZGVmaW5lIFNQQUNFICAgOCAg
ICAgICAgICAgICAgIC8qIHNwYWNlIGlmIHBsdXMgKi8KLSNkZWZpbmUgTEVGVCAgICAxNiAgICAg
ICAgICAgICAgLyogbGVmdCBqdXN0aWZpZWQgKi8KLSNkZWZpbmUgU1BFQ0lBTCAzMiAgICAgICAg
ICAgICAgLyogMHggKi8KLSNkZWZpbmUgTEFSR0UgICA2NCAgICAgICAgICAgICAgLyogdXNlICdB
QkNERUYnIGluc3RlYWQgb2YgJ2FiY2RlZicgKi8KLQotc3RhdGljIGNoYXIgKiBudW1iZXIoY2hh
ciAqIGJ1ZiwgY2hhciAqIGVuZCwgbG9uZyBsb25nIG51bSwgaW50IGJhc2UsIGludCBzaXplLCBp
bnQgcHJlY2lzaW9uLCBpbnQgdHlwZSkKK2ludDY0X3QKK3N0cnRvcShjb25zdCBjaGFyICpucHRy
LCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSkKIHsKLSAgICBjaGFyIGMsc2lnbix0bXBbNjZdOwot
ICAgIGNvbnN0IGNoYXIgKmRpZ2l0czsKLSAgICBjb25zdCBjaGFyIHNtYWxsX2RpZ2l0c1tdID0g
IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0gICAgY29uc3QgY2hhciBs
YXJnZV9kaWdpdHNbXSA9ICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOwot
ICAgIGludCBpOwotCi0gICAgZGlnaXRzID0gKHR5cGUgJiBMQVJHRSkgPyBsYXJnZV9kaWdpdHMg
OiBzbWFsbF9kaWdpdHM7Ci0gICAgaWYgKHR5cGUgJiBMRUZUKQotICAgICAgICB0eXBlICY9IH5a
RVJPUEFEOwotICAgIGlmIChiYXNlIDwgMiB8fCBiYXNlID4gMzYpCi0gICAgICAgIHJldHVybiBi
dWY7Ci0gICAgYyA9ICh0eXBlICYgWkVST1BBRCkgPyAnMCcgOiAnICc7Ci0gICAgc2lnbiA9IDA7
Ci0gICAgaWYgKHR5cGUgJiBTSUdOKSB7Ci0gICAgICAgIGlmIChudW0gPCAwKSB7Ci0gICAgICAg
ICAgICBzaWduID0gJy0nOwotICAgICAgICAgICAgbnVtID0gLW51bTsKLSAgICAgICAgICAgIHNp
emUtLTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgUExVUykgewotICAgICAgICAgICAgc2ln
biA9ICcrJzsKLSAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlICYg
U1BBQ0UpIHsKLSAgICAgICAgICAgIHNpZ24gPSAnICc7Ci0gICAgICAgICAgICBzaXplLS07Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHR5cGUgJiBTUEVDSUFMKSB7Ci0gICAgICAgIGlmIChi
YXNlID09IDE2KQotICAgICAgICAgICAgc2l6ZSAtPSAyOwotICAgICAgICBlbHNlIGlmIChiYXNl
ID09IDgpCi0gICAgICAgICAgICBzaXplLS07Ci0gICAgfQotICAgIGkgPSAwOwotICAgIGlmIChu
dW0gPT0gMCkKLSAgICAgICAgdG1wW2krK109JzAnOwotICAgIGVsc2UgCi0gICAgewotICAgICAg
ICAvKiBYWFggS0FGOiBmb3JjZSB1bnNpZ25lZCBtb2QgYW5kIGRpdi4gKi8KLSAgICAgICAgdW5z
aWduZWQgbG9uZyBsb25nIG51bTI9KHVuc2lnbmVkIGxvbmcgbG9uZyludW07Ci0gICAgICAgIHVu
c2lnbmVkIGludCBiYXNlMj0odW5zaWduZWQgaW50KWJhc2U7Ci0gICAgICAgIHdoaWxlIChudW0y
ICE9IDApIHsgdG1wW2krK10gPSBkaWdpdHNbbnVtMiViYXNlMl07IG51bTIgLz0gYmFzZTI7IH0K
LSAgICB9Ci0gICAgaWYgKGkgPiBwcmVjaXNpb24pCi0gICAgICAgIHByZWNpc2lvbiA9IGk7Ci0g
ICAgc2l6ZSAtPSBwcmVjaXNpb247Ci0gICAgaWYgKCEodHlwZSYoWkVST1BBRCtMRUZUKSkpIHsK
LSAgICAgICAgd2hpbGUoc2l6ZS0tPjApIHsKLSAgICAgICAgICAgIGlmIChidWYgPD0gZW5kKQot
ICAgICAgICAgICAgICAgICpidWYgPSAnICc7Ci0gICAgICAgICAgICArK2J1ZjsKKyAgICAgICAg
Y29uc3QgY2hhciAqczsKKyAgICAgICAgdWludDY0X3QgYWNjOworICAgICAgICB1bnNpZ25lZCBj
aGFyIGM7CisgICAgICAgIHVpbnQ2NF90IHFiYXNlLCBjdXRvZmY7CisgICAgICAgIGludCBuZWcs
IGFueSwgY3V0bGltOworCisgICAgICAgIC8qCisgICAgICAgICAqIFNraXAgd2hpdGUgc3BhY2Ug
YW5kIHBpY2sgdXAgbGVhZGluZyArLy0gc2lnbiBpZiBhbnkuCisgICAgICAgICAqIElmIGJhc2Ug
aXMgMCwgYWxsb3cgMHggZm9yIGhleCBhbmQgMCBmb3Igb2N0YWwsIGVsc2UKKyAgICAgICAgICog
YXNzdW1lIGRlY2ltYWw7IGlmIGJhc2UgaXMgYWxyZWFkeSAxNiwgYWxsb3cgMHguCisgICAgICAg
ICAqLworICAgICAgICBzID0gbnB0cjsKKyAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGMg
PSAqcysrOworICAgICAgICB9IHdoaWxlIChpc3NwYWNlKGMpKTsKKyAgICAgICAgaWYgKGMgPT0g
Jy0nKSB7CisgICAgICAgICAgICAgICAgbmVnID0gMTsKKyAgICAgICAgICAgICAgICBjID0gKnMr
KzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZWcgPSAwOworICAgICAgICAg
ICAgICAgIGlmIChjID09ICcrJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqcysrOwog
ICAgICAgICB9Ci0gICAgfQotICAgIGlmIChzaWduKSB7Ci0gICAgICAgIGlmIChidWYgPD0gZW5k
KQotICAgICAgICAgICAgKmJ1ZiA9IHNpZ247Ci0gICAgICAgICsrYnVmOwotICAgIH0KLSAgICBp
ZiAodHlwZSAmIFNQRUNJQUwpIHsKLSAgICAgICAgaWYgKGJhc2U9PTgpIHsKLSAgICAgICAgICAg
IGlmIChidWYgPD0gZW5kKQotICAgICAgICAgICAgICAgICpidWYgPSAnMCc7Ci0gICAgICAgICAg
ICArK2J1ZjsKLSAgICAgICAgfSBlbHNlIGlmIChiYXNlPT0xNikgewotICAgICAgICAgICAgaWYg
KGJ1ZiA8PSBlbmQpCi0gICAgICAgICAgICAgICAgKmJ1ZiA9ICcwJzsKLSAgICAgICAgICAgICsr
YnVmOwotICAgICAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCi0gICAgICAgICAgICAgICAgKmJ1ZiA9
IGRpZ2l0c1szM107Ci0gICAgICAgICAgICArK2J1ZjsKKyAgICAgICAgaWYgKChiYXNlID09IDAg
fHwgYmFzZSA9PSAxNikgJiYKKyAgICAgICAgICAgIGMgPT0gJzAnICYmICgqcyA9PSAneCcgfHwg
KnMgPT0gJ1gnKSkgeworICAgICAgICAgICAgICAgIGMgPSBzWzFdOworICAgICAgICAgICAgICAg
IHMgKz0gMjsKKyAgICAgICAgICAgICAgICBiYXNlID0gMTY7CiAgICAgICAgIH0KLSAgICB9Ci0g
ICAgaWYgKCEodHlwZSAmIExFRlQpKSB7Ci0gICAgICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0g
ICAgICAgICAgICBpZiAoYnVmIDw9IGVuZCkKLSAgICAgICAgICAgICAgICAqYnVmID0gYzsKLSAg
ICAgICAgICAgICsrYnVmOworICAgICAgICBpZiAoYmFzZSA9PSAwKQorICAgICAgICAgICAgICAg
IGJhc2UgPSBjID09ICcwJyA/IDggOiAxMDsKKworICAgICAgICAvKgorICAgICAgICAgKiBDb21w
dXRlIHRoZSBjdXRvZmYgdmFsdWUgYmV0d2VlbiBsZWdhbCBudW1iZXJzIGFuZCBpbGxlZ2FsCisg
ICAgICAgICAqIG51bWJlcnMuICBUaGF0IGlzIHRoZSBsYXJnZXN0IGxlZ2FsIHZhbHVlLCBkaXZp
ZGVkIGJ5IHRoZQorICAgICAgICAgKiBiYXNlLiAgQW4gaW5wdXQgbnVtYmVyIHRoYXQgaXMgZ3Jl
YXRlciB0aGFuIHRoaXMgdmFsdWUsIGlmCisgICAgICAgICAqIGZvbGxvd2VkIGJ5IGEgbGVnYWwg
aW5wdXQgY2hhcmFjdGVyLCBpcyB0b28gYmlnLiAgT25lIHRoYXQKKyAgICAgICAgICogaXMgZXF1
YWwgdG8gdGhpcyB2YWx1ZSBtYXkgYmUgdmFsaWQgb3Igbm90OyB0aGUgbGltaXQKKyAgICAgICAg
ICogYmV0d2VlbiB2YWxpZCBhbmQgaW52YWxpZCBudW1iZXJzIGlzIHRoZW4gYmFzZWQgb24gdGhl
IGxhc3QKKyAgICAgICAgICogZGlnaXQuICBGb3IgaW5zdGFuY2UsIGlmIHRoZSByYW5nZSBmb3Ig
cXVhZHMgaXMKKyAgICAgICAgICogWy05MjIzMzcyMDM2ODU0Nzc1ODA4Li45MjIzMzcyMDM2ODU0
Nzc1ODA3XSBhbmQgdGhlIGlucHV0IGJhc2UKKyAgICAgICAgICogaXMgMTAsIGN1dG9mZiB3aWxs
IGJlIHNldCB0byA5MjIzMzcyMDM2ODU0Nzc1ODAgYW5kIGN1dGxpbSB0bworICAgICAgICAgKiBl
aXRoZXIgNyAobmVnPT0wKSBvciA4IChuZWc9PTEpLCBtZWFuaW5nIHRoYXQgaWYgd2UgaGF2ZQor
ICAgICAgICAgKiBhY2N1bXVsYXRlZCBhIHZhbHVlID4gOTIyMzM3MjAzNjg1NDc3NTgwLCBvciBl
cXVhbCBidXQgdGhlCisgICAgICAgICAqIG5leHQgZGlnaXQgaXMgPiA3IChvciA4KSwgdGhlIG51
bWJlciBpcyB0b28gYmlnLCBhbmQgd2Ugd2lsbAorICAgICAgICAgKiByZXR1cm4gYSByYW5nZSBl
cnJvci4KKyAgICAgICAgICoKKyAgICAgICAgICogU2V0IGFueSBpZiBhbnkgYGRpZ2l0cycgY29u
c3VtZWQ7IG1ha2UgaXQgbmVnYXRpdmUgdG8gaW5kaWNhdGUKKyAgICAgICAgICogb3ZlcmZsb3cu
CisgICAgICAgICAqLworICAgICAgICBxYmFzZSA9ICh1bnNpZ25lZCliYXNlOworICAgICAgICBj
dXRvZmYgPSBuZWcgPyAodWludDY0X3QpLShMTE9OR19NSU4gKyBMTE9OR19NQVgpICsgTExPTkdf
TUFYIDogTExPTkdfTUFYOworICAgICAgICBjdXRsaW0gPSBjdXRvZmYgJSBxYmFzZTsKKyAgICAg
ICAgY3V0b2ZmIC89IHFiYXNlOworICAgICAgICBmb3IgKGFjYyA9IDAsIGFueSA9IDA7OyBjID0g
KnMrKykgeworICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0KGMpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNh
bHBoYShjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgLT0gaXN1cHBlcihjKSA/ICdBJyAt
IDEwIDogJ2EnIC0gMTA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gYmFzZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChhbnkgPCAwIHx8IGFjYyA+
IGN1dG9mZiB8fCAoYWNjID09IGN1dG9mZiAmJiBjID4gY3V0bGltKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFueSA9IC0xOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgYW55ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYyAqPSBxYmFz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYyArPSBjOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoaSA8IHByZWNpc2lvbi0tKSB7Ci0gICAgICAg
IGlmIChidWYgPD0gZW5kKQotICAgICAgICAgICAgKmJ1ZiA9ICcwJzsKLSAgICAgICAgKytidWY7
Ci0gICAgfQotICAgIHdoaWxlIChpLS0gPiAwKSB7Ci0gICAgICAgIGlmIChidWYgPD0gZW5kKQot
ICAgICAgICAgICAgKmJ1ZiA9IHRtcFtpXTsKLSAgICAgICAgKytidWY7Ci0gICAgfQotICAgIHdo
aWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIGlmIChidWYgPD0gZW5kKQotICAgICAgICAgICAg
KmJ1ZiA9ICcgJzsKLSAgICAgICAgKytidWY7Ci0gICAgfQotICAgIHJldHVybiBidWY7CisgICAg
ICAgIGlmIChhbnkgPCAwKSB7CisgICAgICAgICAgICAgICAgYWNjID0gbmVnID8gTExPTkdfTUlO
IDogTExPTkdfTUFYOworICAgICAgICB9IGVsc2UgaWYgKG5lZykKKyAgICAgICAgICAgICAgICBh
Y2MgPSAtYWNjOworICAgICAgICBpZiAoZW5kcHRyICE9IDApCisgICAgICAgICAgICAgICAgKmVu
ZHB0ciA9IF9fREVDT05TVChjaGFyICosIGFueSA/IHMgLSAxIDogbnB0cik7CisgICAgICAgIHJl
dHVybiAoYWNjKTsKIH0KIAotLyoqCi0qIHZzbnByaW50ZiAtIEZvcm1hdCBhIHN0cmluZyBhbmQg
cGxhY2UgaXQgaW4gYSBidWZmZXIKLSogQGJ1ZjogVGhlIGJ1ZmZlciB0byBwbGFjZSB0aGUgcmVz
dWx0IGludG8KLSogQHNpemU6IFRoZSBzaXplIG9mIHRoZSBidWZmZXIsIGluY2x1ZGluZyB0aGUg
dHJhaWxpbmcgbnVsbCBzcGFjZQotKiBAZm10OiBUaGUgZm9ybWF0IHN0cmluZyB0byB1c2UKLSog
QGFyZ3M6IEFyZ3VtZW50cyBmb3IgdGhlIGZvcm1hdCBzdHJpbmcKLSoKLSogQ2FsbCB0aGlzIGZ1
bmN0aW9uIGlmIHlvdSBhcmUgYWxyZWFkeSBkZWFsaW5nIHdpdGggYSB2YV9saXN0LgotKiBZb3Ug
cHJvYmFibHkgd2FudCBzbnByaW50ZiBpbnN0ZWFkLgorLyoKKyAqIENvbnZlcnQgYSBzdHJpbmcg
dG8gYW4gdW5zaWduZWQgcXVhZCBpbnRlZ2VyLgorICoKKyAqIElnbm9yZXMgYGxvY2FsZScgc3R1
ZmYuICBBc3N1bWVzIHRoYXQgdGhlIHVwcGVyIGFuZCBsb3dlciBjYXNlCisgKiBhbHBoYWJldHMg
YW5kIGRpZ2l0cyBhcmUgZWFjaCBjb250aWd1b3VzLgogICovCi1pbnQgdnNucHJpbnRmKGNoYXIg
KmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQordWludDY0
X3QKK3N0cnRvdXEoY29uc3QgY2hhciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpCiB7
Ci0gICAgaW50IGxlbjsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbnVtOwotICAgIGludCBpLCBi
YXNlOwotICAgIGNoYXIgKnN0ciwgKmVuZCwgYzsKLSAgICBjb25zdCBjaGFyICpzOwotCi0gICAg
aW50IGZsYWdzOyAgICAgICAgICAvKiBmbGFncyB0byBudW1iZXIoKSAqLwotCi0gICAgaW50IGZp
ZWxkX3dpZHRoOyAgICAvKiB3aWR0aCBvZiBvdXRwdXQgZmllbGQgKi8KLSAgICBpbnQgcHJlY2lz
aW9uOyAgICAgICAgICAgICAgLyogbWluLiAjIG9mIGRpZ2l0cyBmb3IgaW50ZWdlcnM7IG1heAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgY2hhcnMgZm9yIGZy
b20gc3RyaW5nICovCi0gICAgaW50IHF1YWxpZmllcjsgICAgICAgICAgICAgIC8qICdoJywgJ2wn
LCBvciAnTCcgZm9yIGludGVnZXIgZmllbGRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qICd6JyBzdXBwb3J0IGFkZGVkIDIzLzcvMTk5OSBTLkguICAgICovCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICd6JyBjaGFuZ2VkIHRvICdaJyAtLWRhdmlkbSAx
LzI1Lzk5ICovCi0KLSAgICBzdHIgPSBidWY7Ci0gICAgZW5kID0gYnVmICsgc2l6ZSAtIDE7Ci0K
LSAgICBpZiAoZW5kIDwgYnVmIC0gMSkgewotICAgICAgICBlbmQgPSAoKHZvaWQgKikgLTEpOwot
ICAgICAgICBzaXplID0gZW5kIC0gYnVmICsgMTsKLSAgICB9Ci0KLSAgICBmb3IgKDsgKmZtdCA7
ICsrZm10KSB7Ci0gICAgICAgIGlmICgqZm10ICE9ICclJykgewotICAgICAgICAgICAgaWYgKHN0
ciA8PSBlbmQpCi0gICAgICAgICAgICAgICAgKnN0ciA9ICpmbXQ7Ci0gICAgICAgICAgICArK3N0
cjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogcHJvY2Vz
cyBmbGFncyAqLwotICAgICAgICBmbGFncyA9IDA7Ci0gICAgcmVwZWF0OgotICAgICAgICArK2Zt
dDsgICAgICAgICAgLyogdGhpcyBhbHNvIHNraXBzIGZpcnN0ICclJyAqLwotICAgICAgICBzd2l0
Y2ggKCpmbXQpIHsKLSAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IExFRlQ7IGdvdG8gcmVwZWF0
OwotICAgICAgICBjYXNlICcrJzogZmxhZ3MgfD0gUExVUzsgZ290byByZXBlYXQ7Ci0gICAgICAg
IGNhc2UgJyAnOiBmbGFncyB8PSBTUEFDRTsgZ290byByZXBlYXQ7Ci0gICAgICAgIGNhc2UgJyMn
OiBmbGFncyB8PSBTUEVDSUFMOyBnb3RvIHJlcGVhdDsKLSAgICAgICAgY2FzZSAnMCc6IGZsYWdz
IHw9IFpFUk9QQUQ7IGdvdG8gcmVwZWF0OwotICAgICAgICB9Ci0KLSAgICAgICAgLyogZ2V0IGZp
ZWxkIHdpZHRoICovCi0gICAgICAgIGZpZWxkX3dpZHRoID0gLTE7Ci0gICAgICAgIGlmIChpc2Rp
Z2l0KCpmbXQpKQotICAgICAgICAgICAgZmllbGRfd2lkdGggPSBza2lwX2F0b2koJmZtdCk7Ci0g
ICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJyonKSB7Ci0gICAgICAgICAgICArK2ZtdDsKLSAgICAg
ICAgICAgIC8qIGl0J3MgdGhlIG5leHQgYXJndW1lbnQgKi8KLSAgICAgICAgICAgIGZpZWxkX3dp
ZHRoID0gdmFfYXJnKGFyZ3MsIGludCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRfd2lkdGggPCAw
KSB7Ci0gICAgICAgICAgICAgICAgZmllbGRfd2lkdGggPSAtZmllbGRfd2lkdGg7Ci0gICAgICAg
ICAgICAgICAgZmxhZ3MgfD0gTEVGVDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIC8qIGdldCB0aGUgcHJlY2lzaW9uICovCi0gICAgICAgIHByZWNpc2lvbiA9IC0xOwotICAg
ICAgICBpZiAoKmZtdCA9PSAnLicpIHsKLSAgICAgICAgICAgICsrZm10OwotICAgICAgICAgICAg
aWYgKGlzZGlnaXQoKmZtdCkpCi0gICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gc2tpcF9hdG9p
KCZmbXQpOwotICAgICAgICAgICAgZWxzZSBpZiAoKmZtdCA9PSAnKicpIHsKLSAgICAgICAgICAg
ICAgICArK2ZtdDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXQncyB0aGUgbmV4dCBh
cmd1bWVudCAqLwotICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IHZhX2FyZyhhcmdzLCBpbnQp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHByZWNpc2lvbiA8IDApCi0gICAgICAg
ICAgICAgICAgcHJlY2lzaW9uID0gMDsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IG5wdHI7Cisg
ICAgICAgIHVpbnQ2NF90IGFjYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOworICAgICAgICB1
aW50NjRfdCBxYmFzZSwgY3V0b2ZmOworICAgICAgICBpbnQgbmVnLCBhbnksIGN1dGxpbTsKKwor
ICAgICAgICAvKgorICAgICAgICAgKiBTZWUgc3RydG9xIGZvciBjb21tZW50cyBhcyB0byB0aGUg
bG9naWMgdXNlZC4KKyAgICAgICAgICovCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBj
ID0gKnMrKzsKKyAgICAgICAgfSB3aGlsZSAoaXNzcGFjZShjKSk7CisgICAgICAgIGlmIChjID09
ICctJykgeworICAgICAgICAgICAgICAgIG5lZyA9IDE7CisgICAgICAgICAgICAgICAgYyA9ICpz
Kys7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmVnID0gMDsKKyAgICAgICAg
ICAgICAgICBpZiAoYyA9PSAnKycpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsK
ICAgICAgICAgfQotCi0gICAgICAgIC8qIGdldCB0aGUgY29udmVyc2lvbiBxdWFsaWZpZXIgKi8K
LSAgICAgICAgcXVhbGlmaWVyID0gLTE7Ci0gICAgICAgIGlmICgqZm10ID09ICdoJyB8fCAqZm10
ID09ICdsJyB8fCAqZm10ID09ICdMJyB8fCAqZm10ID09J1onIHx8ICpmbXQgPT0gJ3onKSB7Ci0g
ICAgICAgICAgICBxdWFsaWZpZXIgPSAqZm10OwotICAgICAgICAgICAgKytmbXQ7Ci0gICAgICAg
ICAgICBpZiAocXVhbGlmaWVyID09ICdsJyAmJiAqZm10ID09ICdsJykgewotICAgICAgICAgICAg
ICAgIHF1YWxpZmllciA9ICdMJzsKLSAgICAgICAgICAgICAgICArK2ZtdDsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAocXVhbGlmaWVyID09ICd6JykgewotICAgICAgICAgICAgICAgIHF1YWxpZmll
ciA9ICdaJzsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKChiYXNlID09IDAgfHwgYmFzZSA9
PSAxNikgJiYKKyAgICAgICAgICAgIGMgPT0gJzAnICYmICgqcyA9PSAneCcgfHwgKnMgPT0gJ1gn
KSkgeworICAgICAgICAgICAgICAgIGMgPSBzWzFdOworICAgICAgICAgICAgICAgIHMgKz0gMjsK
KyAgICAgICAgICAgICAgICBiYXNlID0gMTY7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCpmbXQg
PT0gJ3EnKSB7Ci0gICAgICAgICAgICBxdWFsaWZpZXIgPSAnTCc7Ci0gICAgICAgICAgICArK2Zt
dDsKKyAgICAgICAgaWYgKGJhc2UgPT0gMCkKKyAgICAgICAgICAgICAgICBiYXNlID0gYyA9PSAn
MCcgPyA4IDogMTA7CisgICAgICAgIHFiYXNlID0gKHVuc2lnbmVkKWJhc2U7CisgICAgICAgIGN1
dG9mZiA9ICh1aW50NjRfdClVTExPTkdfTUFYIC8gcWJhc2U7CisgICAgICAgIGN1dGxpbSA9ICh1
aW50NjRfdClVTExPTkdfTUFYICUgcWJhc2U7CisgICAgICAgIGZvciAoYWNjID0gMCwgYW55ID0g
MDs7IGMgPSAqcysrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc2FzY2lpKGMpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykp
CisgICAgICAgICAgICAgICAgICAgICAgICBjIC09ICcwJzsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChpc2FscGhhKGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSBpc3VwcGVyKGMp
ID8gJ0EnIC0gMTAgOiAnYScgLSAxMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoYyA+PSBiYXNlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGFueSA8IDAg
fHwgYWNjID4gY3V0b2ZmIHx8IChhY2MgPT0gY3V0b2ZmICYmIGMgPiBjdXRsaW0pKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYW55ID0gLTE7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhbnkgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgYWNj
ICo9IHFiYXNlOworICAgICAgICAgICAgICAgICAgICAgICAgYWNjICs9IGM7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmIChhbnkgPCAwKSB7CisgICAgICAgICAgICAg
ICAgYWNjID0gVUxMT05HX01BWDsKKyAgICAgICAgfSBlbHNlIGlmIChuZWcpCisgICAgICAgICAg
ICAgICAgYWNjID0gLWFjYzsKKyAgICAgICAgaWYgKGVuZHB0ciAhPSAwKQorICAgICAgICAgICAg
ICAgICplbmRwdHIgPSBfX0RFQ09OU1QoY2hhciAqLCBhbnkgPyBzIC0gMSA6IG5wdHIpOworICAg
ICAgICByZXR1cm4gKGFjYyk7Cit9CiAKLSAgICAgICAgLyogZGVmYXVsdCBiYXNlICovCi0gICAg
ICAgIGJhc2UgPSAxMDsKLQotICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKLSAgICAgICAgY2FzZSAn
Yyc6Ci0gICAgICAgICAgICBpZiAoIShmbGFncyAmIExFRlQpKSB7Ci0gICAgICAgICAgICAgICAg
d2hpbGUgKC0tZmllbGRfd2lkdGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdHIg
PD0gZW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciA9ICcgJzsKLSAgICAgICAgICAg
ICAgICAgICAgKytzdHI7CisvKgorICogU2NhbGVkIGRvd24gdmVyc2lvbiBvZiBwcmludGYoMyku
CisgKi8KK2ludAordnNucHJpbnRmKGNoYXIgKnN0ciwgc2l6ZV90IHNpemUsIGNoYXIgY29uc3Qg
KmZtdCwgdmFfbGlzdCBhcCkKK3sKKyNkZWZpbmUgUENIQVIoYykgeyBpZiAoc2l6ZSA+PSAyKSB7
ICpzdHIrKyA9IGM7IHNpemUtLTsgfSByZXR2YWwrKzsgfQorICAgICAgICBjaGFyIG5idWZbTUFY
TkJVRl07CisgICAgICAgIGNvbnN0IGNoYXIgKnAsICpwZXJjZW50OworICAgICAgICBpbnQgY2gs
IG47CisgICAgICAgIHVpbnRtYXhfdCBudW07CisgICAgICAgIGludCBiYXNlLCBsZmxhZywgcWZs
YWcsIHRtcCwgd2lkdGgsIGxhZGp1c3QsIHNoYXJwZmxhZywgbmVnLCBzaWduLCBkb3Q7CisgICAg
ICAgIGludCBjZmxhZywgaGZsYWcsIGpmbGFnLCB0ZmxhZywgemZsYWc7CisgICAgICAgIGludCBk
d2lkdGgsIHVwcGVyOworICAgICAgICBjaGFyIHBhZGM7CisgICAgICAgIGludCBzdG9wID0gMCwg
cmV0dmFsID0gMDsKKworICAgICAgICBudW0gPSAwOworCisgICAgICAgIGlmIChmbXQgPT0gTlVM
TCkKKyAgICAgICAgICAgICAgICBmbXQgPSAiKGZtdCBudWxsKVxuIjsKKworICAgICAgICBmb3Ig
KDs7KSB7CisgICAgICAgICAgICAgICAgcGFkYyA9ICcgJzsKKyAgICAgICAgICAgICAgICB3aWR0
aCA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKChjaCA9ICh1X2NoYXIpKmZtdCsrKSAhPSAn
JScgfHwgc3RvcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICdcMCcpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPj0gMSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAnXDAnOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJldHZhbCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUihjaCk7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSB2
YV9hcmcoYXJncywgaW50KTsKLSAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQotICAgICAgICAg
ICAgICAgICpzdHIgPSBjOwotICAgICAgICAgICAgKytzdHI7Ci0gICAgICAgICAgICB3aGlsZSAo
LS1maWVsZF93aWR0aCA+IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RyIDw9IGVuZCkKLSAg
ICAgICAgICAgICAgICAgICAgKnN0ciA9ICcgJzsKLSAgICAgICAgICAgICAgICArK3N0cjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGNhc2UgJ3MnOgot
ICAgICAgICAgICAgcyA9IHZhX2FyZyhhcmdzLCBjaGFyICopOwotICAgICAgICAgICAgaWYgKCFz
KQotICAgICAgICAgICAgICAgIHMgPSAiPE5VTEw+IjsKLQotICAgICAgICAgICAgbGVuID0gc3Ry
bmxlbihzLCBwcmVjaXNpb24pOwotCi0gICAgICAgICAgICBpZiAoIShmbGFncyAmIExFRlQpKSB7
Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGxlbiA8IGZpZWxkX3dpZHRoLS0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3Ry
ID0gJyAnOwotICAgICAgICAgICAgICAgICAgICArK3N0cjsKKyAgICAgICAgICAgICAgICBwZXJj
ZW50ID0gZm10IC0gMTsKKyAgICAgICAgICAgICAgICBxZmxhZyA9IDA7IGxmbGFnID0gMDsgbGFk
anVzdCA9IDA7IHNoYXJwZmxhZyA9IDA7IG5lZyA9IDA7CisgICAgICAgICAgICAgICAgc2lnbiA9
IDA7IGRvdCA9IDA7IGR3aWR0aCA9IDA7IHVwcGVyID0gMDsKKyAgICAgICAgICAgICAgICBjZmxh
ZyA9IDA7IGhmbGFnID0gMDsgamZsYWcgPSAwOyB0ZmxhZyA9IDA7IHpmbGFnID0gMDsKK3Jlc3dp
dGNoOiAgICAgICBzd2l0Y2ggKGNoID0gKHVfY2hhcikqZm10KyspIHsKKyAgICAgICAgICAgICAg
ICBjYXNlICcuJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdCA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJyMnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhcnBmbGFnID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gcmVzd2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAnKyc6CisgICAgICAg
ICAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cmVzd2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAnLSc6CisgICAgICAgICAgICAgICAgICAg
ICAgICBsYWRqdXN0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7
CisgICAgICAgICAgICAgICAgY2FzZSAnJSc6CisgICAgICAgICAgICAgICAgICAgICAgICBQQ0hB
UihjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlICcqJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG90KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gdmFfYXJnKGFwLCBpbnQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGFkanVzdCA9ICFsYWRqdXN0OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd2lkdGggPSB2YV9hcmcoYXAsIGludCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHJlc3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFkb3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkYyA9
ICcwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlICcxJzogY2FzZSAn
Mic6IGNhc2UgJzMnOiBjYXNlICc0JzoKKyAgICAgICAgICAgICAgICBjYXNlICc1JzogY2FzZSAn
Nic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAobiA9IDA7OyArK2ZtdCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG4gPSBuICogMTAgKyBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaCA9ICpmbXQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgJzAnIHx8IGNoID4gJzknKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb3QpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3aWR0aCA9IG47CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0g
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CisgICAgICAgICAgICAg
ICAgY2FzZSAnYyc6CisgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUih2YV9hcmcoYXAsIGlu
dCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAnZCc6CisgICAgICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX3NpZ247CisgICAgICAgICAgICAgICAgY2FzZSAn
aCc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGZsYWcpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGZsYWcgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGZsYWcgPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byByZXN3aXRjaDsKKyAgICAgICAgICAgICAgICBjYXNlICdqJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGpmbGFnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVz
d2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAnbCc6CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobGZsYWcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZsYWcgPSAw
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxZmxhZyA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZs
YWcgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKyAgICAgICAg
ICAgICAgICBjYXNlICduJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqZmxhZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIGludG1heF90ICopKSA9
IHJldHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHFmbGFnKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHZhX2FyZyhhcCwgaW50NjRfdCAqKSkgPSByZXR2
YWw7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsZmxhZykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIGxvbmcgKikpID0gcmV0dmFsOworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoemZsYWcpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICoodmFfYXJnKGFwLCBzaXplX3QgKikpID0gcmV0dmFsOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaGZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICoodmFfYXJnKGFwLCBzaG9ydCAqKSkgPSByZXR2YWw7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChjZmxhZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Kih2YV9hcmcoYXAsIGNoYXIgKikpID0gcmV0dmFsOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHZhX2FyZyhhcCwgaW50ICop
KSA9IHJldHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9ub3NpZ247CisgICAgICAgICAgICAgICAgY2Fz
ZSAncCc6CisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzaGFycGZsYWcgPSAod2lkdGggPT0gMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzaWduID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9ICh1aW50cHRyX3Qp
dmFfYXJnKGFwLCB2b2lkICopOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBudW1iZXI7
CisgICAgICAgICAgICAgICAgY2FzZSAncSc6CisgICAgICAgICAgICAgICAgICAgICAgICBxZmxh
ZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgICAg
ICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gaGFuZGxlX3NpZ247CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhh
bmRsZV9ub3NpZ247CisgICAgICAgICAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAgICAg
ICAgICAgICBwID0gdmFfYXJnKGFwLCBjaGFyICopOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9ICIobnVs
bCkiOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkb3QpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG4gPSBzdHJsZW4gKHApOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgZHdp
ZHRoICYmIHBbbl07IG4rKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggLT0gbjsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYWRqdXN0ICYmIHdpZHRoID4gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIocGFkYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAobi0tKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUigq
cCsrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYWRqdXN0ICYmIHdpZHRoID4gMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIocGFkYyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICd0JzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRmbGFnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cmVzd2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9ub3Np
Z247CisgICAgICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgICAgICAgICB1
cHBlciA9IDE7CisgICAgICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9ub3Np
Z247CisgICAgICAgICAgICAgICAgY2FzZSAneSc6CisgICAgICAgICAgICAgICAgICAgICAgICBi
YXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gaGFuZGxlX3NpZ247CisgICAgICAgICAgICAgICAgY2FzZSAneic6
CisgICAgICAgICAgICAgICAgICAgICAgICB6ZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHJlc3dpdGNoOworaGFuZGxlX25vc2lnbjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpZ24gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpmbGFnKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIHVpbnRtYXhfdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxZmxhZykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCB1aW50NjRfdCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICh0ZmxhZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVtID0gdmFfYXJnKGFwLCBwdHJkaWZmX3QpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobGZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZh
X2FyZyhhcCwgdV9sb25nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHpmbGFn
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIHNpemVf
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoZmxhZykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtID0gKHVuc2lnbmVkIHNob3J0KXZhX2FyZyhhcCwgaW50
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNmbGFnKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudW0gPSAodV9jaGFyKXZhX2FyZyhhcCwgaW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVtID0gdmFfYXJnKGFwLCB1X2ludCk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG51
bWJlcjsKK2hhbmRsZV9zaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpmbGFnKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIGludG1heF90
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHFmbGFnKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIGludDY0X3QpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodGZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bSA9IHZhX2FyZyhhcCwgcHRyZGlmZl90KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGxmbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0g
PSB2YV9hcmcoYXAsIGxvbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoemZs
YWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgc3Np
emVfdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoZmxhZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gKHNob3J0KXZhX2FyZyhhcCwgaW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNmbGFnKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudW0gPSAoY2hhcil2YV9hcmcoYXAsIGludCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZh
X2FyZyhhcCwgaW50KTsKK251bWJlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaWdu
ICYmIChpbnRtYXhfdCludW0gPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5lZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IC0oaW50bWF4
X3QpbnVtOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgcCA9IGtzcHJpbnRuKG5idWYsIG51bSwgYmFzZSwgJm4sIHVwcGVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRtcCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcnBm
bGFnICYmIG51bSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChi
YXNlID09IDgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKys7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UgPT0gMTYpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wICs9IDI7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVnKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXArKzsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFsYWRqdXN0ICYmIHBhZGMgPT0gJzAnKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkd2lkdGggPSB3aWR0aCAtIHRtcDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHdpZHRoIC09IHRtcCArIChkd2lkdGggPiBuID8gZHdpZHRoIDogbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkd2lkdGggLT0gbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFk
anVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0gPiAw
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcgJyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVnKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQQ0hBUignLScpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXJwZmxh
ZyAmJiBudW0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFz
ZSA9PSA4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIo
JzAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiYXNlID09
IDE2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJzAn
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUigneCcpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZHdpZHRoLS0gPiAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUignMCcpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoKnApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFS
KCpwLS0pOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFkanVzdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0gPiAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcgJyk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAocGVyY2VudCA8IGZtdCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUENIQVIoKnBlcmNlbnQrKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICAgICAgICAgICAgICogU2luY2Ugd2UgaWdub3JlIGEgZm9ybWF0dGluZyBh
cmd1bWVudCBpdCBpcyBubworICAgICAgICAgICAgICAgICAgICAgICAgICogbG9uZ2VyIHNhZmUg
dG8gb2JleSB0aGUgcmVtYWluaW5nIGZvcm1hdHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAqIGFyZ3VtZW50cyBhcyB0aGUgYXJndW1lbnRzIHdpbGwgbm8gbG9uZ2VyIG1hdGNoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKiB0aGUgZm9ybWF0IHNwZWNzLgorICAgICAgICAgICAgICAg
ICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBzdG9wID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgewotICAgICAgICAgICAgICAg
IGlmIChzdHIgPD0gZW5kKQotICAgICAgICAgICAgICAgICAgICAqc3RyID0gKnM7Ci0gICAgICAg
ICAgICAgICAgKytzdHI7ICsrczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlIChs
ZW4gPCBmaWVsZF93aWR0aC0tKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCi0g
ICAgICAgICAgICAgICAgICAgICpzdHIgPSAnICc7Ci0gICAgICAgICAgICAgICAgKytzdHI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjYXNlICdwJzoK
LSAgICAgICAgICAgIGlmIChmaWVsZF93aWR0aCA9PSAtMSkgewotICAgICAgICAgICAgICAgIGZp
ZWxkX3dpZHRoID0gMipzaXplb2Yodm9pZCAqKTsKLSAgICAgICAgICAgICAgICBmbGFncyB8PSBa
RVJPUEFEOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyID0gbnVtYmVyKHN0ciwgZW5k
LAotICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSB2YV9hcmcoYXJncywg
dm9pZCAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgZmllbGRfd2lkdGgsIHByZWNp
c2lvbiwgZmxhZ3MpOwotICAgICAgICAgICAgY29udGludWU7Ci0KLQotICAgICAgICBjYXNlICdu
JzoKLSAgICAgICAgICAgIGlmIChxdWFsaWZpZXIgPT0gJ2wnKSB7Ci0gICAgICAgICAgICAgICAg
bG9uZyAqIGlwID0gdmFfYXJnKGFyZ3MsIGxvbmcgKik7Ci0gICAgICAgICAgICAgICAgKmlwID0g
KHN0ciAtIGJ1Zik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAnWicpIHsK
LSAgICAgICAgICAgICAgICBzaXplX3QgKiBpcCA9IHZhX2FyZyhhcmdzLCBzaXplX3QgKik7Ci0g
ICAgICAgICAgICAgICAgKmlwID0gKHN0ciAtIGJ1Zik7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGludCAqIGlwID0gdmFfYXJnKGFyZ3MsIGludCAqKTsKLSAgICAgICAg
ICAgICAgICAqaXAgPSAoc3RyIC0gYnVmKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQp
Ci0gICAgICAgICAgICAgICAgKnN0ciA9ICclJzsKLSAgICAgICAgICAgICsrc3RyOwotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIC8qIGludGVnZXIgbnVtYmVyIGZvcm1hdHMg
LSBzZXQgdXAgdGhlIGZsYWdzIGFuZCAiYnJlYWsiICovCi0gICAgICAgIGNhc2UgJ28nOgotICAg
ICAgICAgICAgYmFzZSA9IDg7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICdY
JzoKLSAgICAgICAgICAgIGZsYWdzIHw9IExBUkdFOwotICAgICAgICBjYXNlICd4JzoKLSAgICAg
ICAgICAgIGJhc2UgPSAxNjsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgJ2Qn
OgotICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgIGZsYWdzIHw9IFNJR047Ci0gICAgICAg
IGNhc2UgJ3UnOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGlmIChzdHIgPD0gZW5kKQotICAgICAgICAgICAgICAgICpzdHIgPSAnJSc7Ci0gICAg
ICAgICAgICArK3N0cjsKLSAgICAgICAgICAgIGlmICgqZm10KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHN0ciA8PSBlbmQpCi0gICAgICAgICAgICAgICAgICAgICpzdHIgPSAqZm10OwotICAgICAg
ICAgICAgICAgICsrc3RyOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAt
LWZtdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChxdWFsaWZpZXIgPT0gJ0wnKQotICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFy
Z3MsIGxvbmcgbG9uZyk7Ci0gICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSAnbCcpIHsKLSAg
ICAgICAgICAgIG51bSA9IHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBsb25nKTsKLSAgICAgICAgICAg
IGlmIChmbGFncyAmIFNJR04pCi0gICAgICAgICAgICAgICAgbnVtID0gKHNpZ25lZCBsb25nKSBu
dW07Ci0gICAgICAgIH0gZWxzZSBpZiAocXVhbGlmaWVyID09ICdaJykgewotICAgICAgICAgICAg
bnVtID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocXVhbGlmaWVy
ID09ICdoJykgewotICAgICAgICAgICAgbnVtID0gKHVuc2lnbmVkIHNob3J0KSB2YV9hcmcoYXJn
cywgaW50KTsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNJR04pCi0gICAgICAgICAgICAgICAg
bnVtID0gKHNpZ25lZCBzaG9ydCkgbnVtOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bnVtID0gdmFfYXJnKGFyZ3MsIHVuc2lnbmVkIGludCk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3Mg
JiBTSUdOKQotICAgICAgICAgICAgICAgIG51bSA9IChzaWduZWQgaW50KSBudW07Ci0gICAgICAg
IH0KLQotICAgICAgICBzdHIgPSBudW1iZXIoc3RyLCBlbmQsIG51bSwgYmFzZSwKLSAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkX3dpZHRoLCBwcmVjaXNpb24sIGZsYWdzKTsKLSAgICB9Ci0gICAg
aWYgKHN0ciA8PSBlbmQpCi0gICAgICAgICpzdHIgPSAnXDAnOwotICAgIGVsc2UgaWYgKHNpemUg
PiAwKQotICAgICAgICAvKiBkb24ndCB3cml0ZSBvdXQgYSBudWxsIGJ5dGUgaWYgdGhlIGJ1ZiBz
aXplIGlzIHplcm8gKi8KLSAgICAgICAgKmVuZCA9ICdcMCc7Ci0gICAgLyogdGhlIHRyYWlsaW5n
IG51bGwgYnl0ZSBkb2Vzbid0IGNvdW50IHRvd2FyZHMgdGhlIHRvdGFsCi0gICAgICogKytzdHI7
Ci0gICAgICovCi0gICAgcmV0dXJuIHN0ci1idWY7CisjdW5kZWYgUENIQVIKIH0KIAogLyoqCkBA
IC01NTIsMjIwICs2MzUsNTg3IEBAIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIg
KmZtdCwgLi4uKQogICAgIHJldHVybiBpOwogfQogCisvKgorICogRmlsbCBpbiB0aGUgZ2l2ZW4g
dGFibGUgZnJvbSB0aGUgc2NhbnNldCBhdCB0aGUgZ2l2ZW4gZm9ybWF0CisgKiAoanVzdCBhZnRl
ciBgWycpLiAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY2hhcmFjdGVyIHBhc3QgdGhlCisgKiBj
bG9zaW5nIGBdJy4gIFRoZSB0YWJsZSBoYXMgYSAxIHdoZXJldmVyIGNoYXJhY3RlcnMgc2hvdWxk
IGJlCisgKiBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNjYW5zZXQuCisgKi8KK3N0YXRpYyBjb25z
dCB1X2NoYXIgKgorX19zY2NsKGNoYXIgKnRhYiwgY29uc3QgdV9jaGFyICpmbXQpCit7CisgICAg
ICAgIGludCBjLCBuLCB2OworCisgICAgICAgIC8qIGZpcnN0IGBjbGVhcicgdGhlIHdob2xlIHRh
YmxlICovCisgICAgICAgIGMgPSAqZm10Kys7ICAgICAgICAgICAgIC8qIGZpcnN0IGNoYXIgaGF0
ID0+IG5lZ2F0ZWQgc2NhbnNldCAqLworICAgICAgICBpZiAoYyA9PSAnXicpIHsKKyAgICAgICAg
ICAgICAgICB2ID0gMTsgICAgICAgICAgLyogZGVmYXVsdCA9PiBhY2NlcHQgKi8KKyAgICAgICAg
ICAgICAgICBjID0gKmZtdCsrOyAgICAgLyogZ2V0IG5ldyBmaXJzdCBjaGFyICovCisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIHYgPSAwOyAgICAgICAgICAvKiBkZWZhdWx0ID0+IHJl
amVjdCAqLworCisgICAgICAgIC8qIFhYWDogV2lsbCBub3Qgd29yayBpZiBzaXplb2YodGFiKikg
PiBzaXplb2YoY2hhcikgKi8KKyAgICAgICAgZm9yIChuID0gMDsgbiA8IDI1NjsgbisrKQorICAg
ICAgICAgICAgICAgICAgICAgdGFiW25dID0gdjsgICAgICAgIC8qIG1lbXNldCh0YWIsIHYsIDI1
NikgKi8KKworICAgICAgICBpZiAoYyA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAoZm10
IC0gMSk7LyogZm9ybWF0IGVuZGVkIGJlZm9yZSBjbG9zaW5nIF0gKi8KKworICAgICAgICAvKgor
ICAgICAgICAgKiBOb3cgc2V0IHRoZSBlbnRyaWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFjdHVh
bCBzY2Fuc2V0CisgICAgICAgICAqIHRvIHRoZSBvcHBvc2l0ZSBvZiB0aGUgYWJvdmUuCisgICAg
ICAgICAqCisgICAgICAgICAqIFRoZSBmaXJzdCBjaGFyYWN0ZXIgbWF5IGJlICddJyAob3IgJy0n
KSB3aXRob3V0IGJlaW5nIHNwZWNpYWw7CisgICAgICAgICAqIHRoZSBsYXN0IGNoYXJhY3RlciBt
YXkgYmUgJy0nLgorICAgICAgICAgKi8KKyAgICAgICAgdiA9IDEgLSB2OworICAgICAgICBmb3Ig
KDs7KSB7CisgICAgICAgICAgICAgICAgdGFiW2NdID0gdjsgICAgICAgICAgICAgLyogdGFrZSBj
aGFyYWN0ZXIgYyAqLworZG9zd2l0Y2g6CisgICAgICAgICAgICAgICAgbiA9ICpmbXQrKzsgICAg
ICAgICAgICAgLyogYW5kIGV4YW1pbmUgdGhlIG5leHQgKi8KKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKG4pIHsKKworICAgICAgICAgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgIC8qIGZv
cm1hdCBlbmRlZCB0b28gc29vbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChm
bXQgLSAxKTsKKworICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgICAgICAg
ICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIEEgc2NhbnNldCBvZiB0aGUgZm9y
bQorICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICBbMDErLV0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqIGlzIGRlZmluZWQgYXMgYHRoZSBkaWdpdCAwLCB0aGUgZGlnaXQgMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBjaGFyYWN0ZXIgKywgdGhlIGNoYXJhY3RlciAt
JywgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgZWZmZWN0IG9mIGEgc2NhbnNl
dCBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgIFthLXpBLVowLTldCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLiAgVGhl
IFY3IFVuaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHNjYW5mIHRyZWF0cyBgYS16JyBh
cyBgdGhlIGxldHRlcnMgYSB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB6Jywg
YnV0IHRyZWF0cyBgYS1hJyBhcyBgdGhlIGxldHRlciBhLCB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqIGNoYXJhY3RlciAtLCBhbmQgdGhlIGxldHRlciBhJy4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBGb3IgY29tcGF0aWJpbGl0
eSwgdGhlIGAtJyBpcyBub3QgY29uc2lkZXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0
byBkZWZpbmUgYSByYW5nZSBpZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZworICAgICAgICAgICAg
ICAgICAgICAgICAgICogaXQgaXMgZWl0aGVyIGEgY2xvc2UgYnJhY2tldCAocmVxdWlyZWQgYnkg
QU5TSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIG9yIGlzIG5vdCBudW1lcmljYWxseSBn
cmVhdGVyIHRoYW4gdGhlIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICogd2Ug
anVzdCBzdG9yZWQgaW4gdGhlIHRhYmxlIChjKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAq
LworICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICpmbXQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobiA9PSAnXScgfHwgbiA8IGMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYyA9ICctJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAv
KiByZXN1bWUgdGhlIGZvcig7OykgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZtdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgLyogZmls
bCBpbiB0aGUgcmFuZ2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0YWJbKytjXSA9IHY7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IHdoaWxlIChjIDwgbik7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gbjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBBbGFzLCB0
aGUgVjcgVW5peCBzY2FuZiBhbHNvIHRyZWF0cyBmb3JtYXRzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgKiBzdWNoIGFzIFthLWMtZV0gYXMgYHRoZSBsZXR0ZXJzIGEgdGhyb3VnaCBlJy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgdG9vIGlzIHBlcm1pdHRlZCBieSB0aGUgc3Rh
bmRhcmQuLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gZG9zd2l0Y2g7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGNhc2UgJ10nOiAgICAgICAgICAgICAgIC8qIGVuZCBvZiBzY2Fuc2V0
ICovCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGZtdCk7CisKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAvKiBqdXN0IGFub3RoZXIgY2hhcmFjdGVyICov
CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBOT1RSRUFD
SEVEICovCit9CisKIC8qKgogICogdnNzY2FuZiAtIFVuZm9ybWF0IGEgYnVmZmVyIGludG8gYSBs
aXN0IG9mIGFyZ3VtZW50cwogICogQGJ1ZjoJaW5wdXQgYnVmZmVyCiAgKiBAZm10Oglmb3JtYXQg
b2YgYnVmZmVyCiAgKiBAYXJnczoJYXJndW1lbnRzCiAgKi8KLWludCB2c3NjYW5mKGNvbnN0IGNo
YXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIHZhX2xpc3QgYXJncykKKyNkZWZpbmUgQlVGICAg
ICAgICAgICAgIDMyICAgICAgLyogTWF4aW11bSBsZW5ndGggb2YgbnVtZXJpYyBzdHJpbmcuICov
CisKKy8qCisgKiBGbGFncyB1c2VkIGR1cmluZyBjb252ZXJzaW9uLgorICovCisjZGVmaW5lIExP
TkcgICAgICAgICAgICAweDAxICAgIC8qIGw6IGxvbmcgb3IgZG91YmxlICovCisjZGVmaW5lIFNI
T1JUICAgICAgICAgICAweDA0ICAgIC8qIGg6IHNob3J0ICovCisjZGVmaW5lIFNVUFBSRVNTICAg
ICAgICAweDA4ICAgIC8qIHN1cHByZXNzIGFzc2lnbm1lbnQgKi8KKyNkZWZpbmUgUE9JTlRFUiAg
ICAgICAgIDB4MTAgICAgLyogd2VpcmQgJXAgcG9pbnRlciAoYGZha2UgaGV4JykgKi8KKyNkZWZp
bmUgTk9TS0lQICAgICAgICAgIDB4MjAgICAgLyogZG8gbm90IHNraXAgYmxhbmtzICovCisjZGVm
aW5lIFFVQUQgICAgICAgICAgICAweDQwMAorI2RlZmluZSBTSE9SVFNIT1JUICAgICAgMHg0MDAw
ICAvKiogaGg6IGNoYXIgKi8KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgYXJlIHVzZWQgaW4gbnVt
ZXJpYyBjb252ZXJzaW9ucyBvbmx5OgorICogU0lHTk9LLCBORElHSVRTLCBEUFRPSywgYW5kIEVY
UE9LIGFyZSBmb3IgZmxvYXRpbmcgcG9pbnQ7CisgKiBTSUdOT0ssIE5ESUdJVFMsIFBGWE9LLCBh
bmQgTlpESUdJVFMgYXJlIGZvciBpbnRlZ3JhbC4KKyAqLworI2RlZmluZSBTSUdOT0sgICAgICAg
ICAgMHg0MCAgICAvKiArLy0gaXMgKHN0aWxsKSBsZWdhbCAqLworI2RlZmluZSBORElHSVRTICAg
ICAgICAgMHg4MCAgICAvKiBubyBkaWdpdHMgZGV0ZWN0ZWQgKi8KKworI2RlZmluZSBEUFRPSyAg
ICAgICAgICAgMHgxMDAgICAvKiAoZmxvYXQpIGRlY2ltYWwgcG9pbnQgaXMgc3RpbGwgbGVnYWwg
Ki8KKyNkZWZpbmUgRVhQT0sgICAgICAgICAgIDB4MjAwICAgLyogKGZsb2F0KSBleHBvbmVudCAo
ZSszLCBldGMpIHN0aWxsIGxlZ2FsICovCisKKyNkZWZpbmUgUEZYT0sgICAgICAgICAgIDB4MTAw
ICAgLyogMHggcHJlZml4IGlzIChzdGlsbCkgbGVnYWwgKi8KKyNkZWZpbmUgTlpESUdJVFMgICAg
ICAgIDB4MjAwICAgLyogbm8gemVybyBkaWdpdHMgZGV0ZWN0ZWQgKi8KKworLyoKKyAqIENvbnZl
cnNpb24gdHlwZXMuCisgKi8KKyNkZWZpbmUgQ1RfQ0hBUiAgICAgICAgIDAgICAgICAgLyogJWMg
Y29udmVyc2lvbiAqLworI2RlZmluZSBDVF9DQ0wgICAgICAgICAgMSAgICAgICAvKiAlWy4uLl0g
Y29udmVyc2lvbiAqLworI2RlZmluZSBDVF9TVFJJTkcgICAgICAgMiAgICAgICAvKiAlcyBjb252
ZXJzaW9uICovCisjZGVmaW5lIENUX0lOVCAgICAgICAgICAzICAgICAgIC8qIGludGVnZXIsIGku
ZS4sIHN0cnRvcSBvciBzdHJ0b3VxICovCit0eXBlZGVmIHVpbnQ2NF90ICgqY2NmbnR5cGUpKGNv
bnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKKworaW50Cit2c3NjYW5mKGNvbnN0IGNoYXIgKmlu
cCwgY2hhciBjb25zdCAqZm10MCwgdmFfbGlzdCBhcCkKIHsKLQljb25zdCBjaGFyICpzdHIgPSBi
dWY7Ci0JY2hhciAqbmV4dDsKLQljaGFyIGRpZ2l0OwotCWludCBudW0gPSAwOwotCWludCBxdWFs
aWZpZXI7Ci0JaW50IGJhc2U7Ci0JaW50IGZpZWxkX3dpZHRoOwotCWludCBpc19zaWduID0gMDsK
KyAgICAgICAgaW50IGlucjsKKyAgICAgICAgY29uc3QgdV9jaGFyICpmbXQgPSAoY29uc3QgdV9j
aGFyICopZm10MDsKKyAgICAgICAgaW50IGM7ICAgICAgICAgICAgICAgICAgLyogY2hhcmFjdGVy
IGZyb20gZm9ybWF0LCBvciBjb252ZXJzaW9uICovCisgICAgICAgIHNpemVfdCB3aWR0aDsgICAg
ICAgICAgIC8qIGZpZWxkIHdpZHRoLCBvciAwICovCisgICAgICAgIGNoYXIgKnA7ICAgICAgICAg
ICAgICAgIC8qIHBvaW50cyBpbnRvIGFsbCBraW5kcyBvZiBzdHJpbmdzICovCisgICAgICAgIGlu
dCBuOyAgICAgICAgICAgICAgICAgIC8qIGhhbmR5IGludGVnZXIgKi8KKyAgICAgICAgaW50IGZs
YWdzOyAgICAgICAgICAgICAgLyogZmxhZ3MgYXMgZGVmaW5lZCBhYm92ZSAqLworICAgICAgICBj
aGFyICpwMDsgICAgICAgICAgICAgICAvKiBzYXZlcyBvcmlnaW5hbCB2YWx1ZSBvZiBwIHdoZW4g
bmVjZXNzYXJ5ICovCisgICAgICAgIGludCBuYXNzaWduZWQ7ICAgICAgICAgIC8qIG51bWJlciBv
ZiBmaWVsZHMgYXNzaWduZWQgKi8KKyAgICAgICAgaW50IG5jb252ZXJzaW9uczsgICAgICAgLyog
bnVtYmVyIG9mIGNvbnZlcnNpb25zICovCisgICAgICAgIGludCBucmVhZDsgICAgICAgICAgICAg
IC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvbnN1bWVkIGZyb20gZnAgKi8KKyAgICAgICAgaW50
IGJhc2U7ICAgICAgICAgICAgICAgLyogYmFzZSBhcmd1bWVudCB0byBzdHJ0b3Evc3RydG91cSAq
LworICAgICAgICBjY2ZudHlwZSBjY2ZuOyAgICAgICAgICAvKiBjb252ZXJzaW9uIGZ1bmN0aW9u
IChzdHJ0b3Evc3RydG91cSkgKi8KKyAgICAgICAgY2hhciBjY2x0YWJbMjU2XTsgICAgICAgLyog
Y2hhcmFjdGVyIGNsYXNzIHRhYmxlIGZvciAlWy4uLl0gKi8KKyAgICAgICAgY2hhciBidWZbQlVG
XTsgICAgICAgICAgLyogYnVmZmVyIGZvciBudW1lcmljIGNvbnZlcnNpb25zICovCiAKLQl3aGls
ZSgqZm10ICYmICpzdHIpIHsKLQkJLyogc2tpcCBhbnkgd2hpdGUgc3BhY2UgaW4gZm9ybWF0ICov
Ci0JCS8qIHdoaXRlIHNwYWNlIGluIGZvcm1hdCBtYXRjaHMgYW55IGFtb3VudCBvZgotCQkgKiB3
aGl0ZSBzcGFjZSwgaW5jbHVkaW5nIG5vbmUsIGluIHRoZSBpbnB1dC4KLQkJICovCi0JCWlmIChp
c3NwYWNlKCpmbXQpKSB7Ci0JCQl3aGlsZSAoaXNzcGFjZSgqZm10KSkKLQkJCQkrK2ZtdDsKLQkJ
CXdoaWxlIChpc3NwYWNlKCpzdHIpKQotCQkJCSsrc3RyOwotCQl9CisgICAgICAgIC8qIGBiYXNl
Zml4JyBpcyB1c2VkIHRvIGF2b2lkIGBpZicgdGVzdHMgaW4gdGhlIGludGVnZXIgc2Nhbm5lciAq
LworICAgICAgICBzdGF0aWMgc2hvcnQgYmFzZWZpeFsxN10gPQorICAgICAgICAgICAgICAgIHsg
MTAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2
IH07CiAKLQkJLyogYW55dGhpbmcgdGhhdCBpcyBub3QgYSBjb252ZXJzaW9uIG11c3QgbWF0Y2gg
ZXhhY3RseSAqLwotCQlpZiAoKmZtdCAhPSAnJScgJiYgKmZtdCkgewotCQkJaWYgKCpmbXQrKyAh
PSAqc3RyKyspCi0JCQkJYnJlYWs7Ci0JCQljb250aW51ZTsKLQkJfQorICAgICAgICBpbnIgPSBz
dHJsZW4oaW5wKTsKIAotCQlpZiAoISpmbXQpCi0JCQlicmVhazsKLQkJKytmbXQ7Ci0JCQotCQkv
KiBza2lwIHRoaXMgY29udmVyc2lvbi4KLQkJICogYWR2YW5jZSBib3RoIHN0cmluZ3MgdG8gbmV4
dCB3aGl0ZSBzcGFjZQotCQkgKi8KLQkJaWYgKCpmbXQgPT0gJyonKSB7Ci0JCQl3aGlsZSAoIWlz
c3BhY2UoKmZtdCkgJiYgKmZtdCkKLQkJCQlmbXQrKzsKLQkJCXdoaWxlICghaXNzcGFjZSgqc3Ry
KSAmJiAqc3RyKQotCQkJCXN0cisrOwotCQkJY29udGludWU7Ci0JCX0KKyAgICAgICAgbmFzc2ln
bmVkID0gMDsKKyAgICAgICAgbmNvbnZlcnNpb25zID0gMDsKKyAgICAgICAgbnJlYWQgPSAwOwor
ICAgICAgICBiYXNlID0gMDsgICAgICAgICAgICAgICAvKiBYWFgganVzdCB0byBrZWVwIGdjYyBo
YXBweSAqLworICAgICAgICBjY2ZuID0gTlVMTDsgICAgICAgICAgICAvKiBYWFgganVzdCB0byBr
ZWVwIGdjYyBoYXBweSAqLworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgYyA9
ICpmbXQrKzsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChuYXNzaWduZWQpOworICAgICAgICAgICAgICAgIGlmIChpc3NwYWNlKGMp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5yID4gMCAmJiBpc3NwYWNlKCpp
bnApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCsrLCBpbnItLSwgaW5w
Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKGMgIT0gJyUnKQorICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBsaXRlcmFsOworICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKKyAgICAgICAgICAgICAg
ICBmbGFncyA9IDA7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBzd2l0
Y2ggb24gdGhlIGZvcm1hdC4gIGNvbnRpbnVlIGlmIGRvbmU7CisgICAgICAgICAgICAgICAgICog
YnJlYWsgb25jZSBmb3JtYXQgdHlwZSBpcyBkZXJpdmVkLgorICAgICAgICAgICAgICAgICAqLwor
YWdhaW46ICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7
CisgICAgICAgICAgICAgICAgY2FzZSAnJSc6CitsaXRlcmFsOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGluciA8PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IGlucHV0X2ZhaWx1cmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmlucCAhPSBjKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG1hdGNoX2ZhaWx1cmU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnItLSwgaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAg
ICBucmVhZCsrOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLQkJLyogZ2V0
IGZpZWxkIHdpZHRoICovCi0JCWZpZWxkX3dpZHRoID0gLTE7Ci0JCWlmIChpc2RpZ2l0KCpmbXQp
KQotCQkJZmllbGRfd2lkdGggPSBza2lwX2F0b2koJmZtdCk7CisgICAgICAgICAgICAgICAgY2Fz
ZSAnKic6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBTVVBQUkVTUzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47CisgICAgICAgICAgICAgICAgY2FzZSAnbCc6
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBMT05HKXsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfkxPTkc7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzIHw9IFFVQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBMT05HOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBhZ2Fp
bjsKKyAgICAgICAgICAgICAgICBjYXNlICdxJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzIHw9IFFVQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOworICAgICAg
ICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYg
U0hPUlQpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmPSB+U0hPUlQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFNIT1JUU0hPUlQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncyB8PSBTSE9SVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47CiAKLQkJLyogZ2V0IGNvbnZlcnNpb24gcXVh
bGlmaWVyICovCi0JCXF1YWxpZmllciA9IC0xOwotCQlpZiAoKmZtdCA9PSAnaCcgfHwgKmZtdCA9
PSAnbCcgfHwgKmZtdCA9PSAnTCcgfHwKLQkJICAgICpmbXQgPT0gJ1onIHx8ICpmbXQgPT0gJ3on
KSB7Ci0JCQlxdWFsaWZpZXIgPSAqZm10Kys7Ci0JCQlpZiAodW5saWtlbHkocXVhbGlmaWVyID09
ICpmbXQpKSB7Ci0JCQkJaWYgKHF1YWxpZmllciA9PSAnaCcpIHsKLQkJCQkJcXVhbGlmaWVyID0g
J0gnOwotCQkJCQlmbXQrKzsKLQkJCQl9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAnbCcpIHsKLQkJ
CQkJcXVhbGlmaWVyID0gJ0wnOwotCQkJCQlmbXQrKzsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJYmFz
ZSA9IDEwOwotCQlpc19zaWduID0gMDsKKyAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAn
MSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CisgICAgICAgICAgICAgICAgY2FzZSAn
NSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOgorICAgICAgICAgICAg
ICAgICAgICAgICAgd2lkdGggPSB3aWR0aCAqIDEwICsgYyAtICcwJzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gYWdhaW47CiAKLQkJaWYgKCEqZm10IHx8ICEqc3RyKQotCQkJYnJlYWs7
CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBDb252ZXJzaW9ucy4KKyAg
ICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGNh
c2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNjZm4gPSAoY2NmbnR5cGUpc3RydG9xOworICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLQkJc3dp
dGNoKCpmbXQrKykgewotCQljYXNlICdjJzoKLQkJewotCQkJY2hhciAqcyA9IChjaGFyICopIHZh
X2FyZyhhcmdzLGNoYXIqKTsKLQkJCWlmIChmaWVsZF93aWR0aCA9PSAtMSkKLQkJCQlmaWVsZF93
aWR0aCA9IDE7Ci0JCQlkbyB7Ci0JCQkJKnMrKyA9ICpzdHIrKzsKLQkJCX0gd2hpbGUgKC0tZmll
bGRfd2lkdGggPiAwICYmICpzdHIpOwotCQkJbnVtKys7Ci0JCX0KLQkJY29udGludWU7Ci0JCWNh
c2UgJ3MnOgotCQl7Ci0JCQljaGFyICpzID0gKGNoYXIgKikgdmFfYXJnKGFyZ3MsIGNoYXIgKik7
Ci0JCQlpZihmaWVsZF93aWR0aCA9PSAtMSkKLQkJCQlmaWVsZF93aWR0aCA9IElOVF9NQVg7Ci0J
CQkvKiBmaXJzdCwgc2tpcCBsZWFkaW5nIHdoaXRlIHNwYWNlIGluIGJ1ZmZlciAqLwotCQkJd2hp
bGUgKGlzc3BhY2UoKnN0cikpCi0JCQkJc3RyKys7Ci0KLQkJCS8qIG5vdyBjb3B5IHVudGlsIG5l
eHQgd2hpdGUgc3BhY2UgKi8KLQkJCXdoaWxlICgqc3RyICYmICFpc3NwYWNlKCpzdHIpICYmIGZp
ZWxkX3dpZHRoLS0pIHsKLQkJCQkqcysrID0gKnN0cisrOwotCQkJfQotCQkJKnMgPSAnXDAnOwot
CQkJbnVtKys7Ci0JCX0KLQkJY29udGludWU7Ci0JCWNhc2UgJ24nOgotCQkJLyogcmV0dXJuIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyICovCi0JCXsKLQkJCWludCAqaSA9IChpbnQg
Kil2YV9hcmcoYXJncyxpbnQqKTsKLQkJCSppID0gc3RyIC0gYnVmOwotCQl9Ci0JCWNvbnRpbnVl
OwotCQljYXNlICdvJzoKLQkJCWJhc2UgPSA4OwotCQkJYnJlYWs7Ci0JCWNhc2UgJ3gnOgotCQlj
YXNlICdYJzoKLQkJCWJhc2UgPSAxNjsKLQkJCWJyZWFrOwotCQljYXNlICdpJzoKKyAgICAgICAg
ICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDVF9JTlQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjY2ZuID0gKGNjZm50eXBlKXN0cnRvcTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2UgPSAwOwotCQljYXNlICdkJzoKLQkJCWlzX3NpZ24gPSAxOwot
CQljYXNlICd1JzoKLQkJCWJyZWFrOwotCQljYXNlICclJzoKLQkJCS8qIGxvb2tpbmcgZm9yICcl
JyBpbiBzdHIgKi8KLQkJCWlmICgqc3RyKysgIT0gJyUnKSAKLQkJCQlyZXR1cm4gbnVtOwotCQkJ
Y29udGludWU7Ci0JCWRlZmF1bHQ6Ci0JCQkvKiBpbnZhbGlkIGZvcm1hdDsgc3RvcCBoZXJlICov
Ci0JCQlyZXR1cm4gbnVtOwotCQl9Ci0KLQkJLyogaGF2ZSBzb21lIHNvcnQgb2YgaW50ZWdlciBj
b252ZXJzaW9uLgotCQkgKiBmaXJzdCwgc2tpcCB3aGl0ZSBzcGFjZSBpbiBidWZmZXIuCi0JCSAq
LwotCQl3aGlsZSAoaXNzcGFjZSgqc3RyKSkKLQkJCXN0cisrOwotCi0JCWRpZ2l0ID0gKnN0cjsK
LQkJaWYgKGlzX3NpZ24gJiYgZGlnaXQgPT0gJy0nKQotCQkJZGlnaXQgPSAqKHN0ciArIDEpOwot
Ci0JCWlmICghZGlnaXQKLSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gMTYgJiYgIWlz
eGRpZ2l0KGRpZ2l0KSkKLSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gMTAgJiYgIWlz
ZGlnaXQoZGlnaXQpKQotICAgICAgICAgICAgICAgICAgICB8fCAoYmFzZSA9PSA4ICYmICghaXNk
aWdpdChkaWdpdCkgfHwgZGlnaXQgPiAnNycpKQotICAgICAgICAgICAgICAgICAgICB8fCAoYmFz
ZSA9PSAwICYmICFpc2RpZ2l0KGRpZ2l0KSkpCi0JCQkJYnJlYWs7Ci0KLQkJc3dpdGNoKHF1YWxp
ZmllcikgewotCQljYXNlICdIJzoJLyogdGhhdCdzICdoaCcgaW4gZm9ybWF0ICovCi0JCQlpZiAo
aXNfc2lnbikgewotCQkJCXNpZ25lZCBjaGFyICpzID0gKHNpZ25lZCBjaGFyICopIHZhX2FyZyhh
cmdzLHNpZ25lZCBjaGFyICopOwotCQkJCSpzID0gKHNpZ25lZCBjaGFyKSBzaW1wbGVfc3RydG9s
KHN0ciwmbmV4dCxiYXNlKTsKLQkJCX0gZWxzZSB7Ci0JCQkJdW5zaWduZWQgY2hhciAqcyA9ICh1
bnNpZ25lZCBjaGFyICopIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBjaGFyICopOwotCQkJCSpzID0g
KHVuc2lnbmVkIGNoYXIpIHNpbXBsZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJhc2UpOwotCQkJfQot
CQkJYnJlYWs7Ci0JCWNhc2UgJ2gnOgotCQkJaWYgKGlzX3NpZ24pIHsKLQkJCQlzaG9ydCAqcyA9
IChzaG9ydCAqKSB2YV9hcmcoYXJncyxzaG9ydCAqKTsKLQkJCQkqcyA9IChzaG9ydCkgc2ltcGxl
X3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Ci0JCQl9IGVsc2UgewotCQkJCXVuc2lnbmVkIHNob3J0
ICpzID0gKHVuc2lnbmVkIHNob3J0ICopIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBzaG9ydCAqKTsK
LQkJCQkqcyA9ICh1bnNpZ25lZCBzaG9ydCkgc2ltcGxlX3N0cnRvdWwoc3RyLCAmbmV4dCwgYmFz
ZSk7Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2FzZSAnbCc6Ci0JCQlpZiAoaXNfc2lnbikgewotCQkJ
CWxvbmcgKmwgPSAobG9uZyAqKSB2YV9hcmcoYXJncyxsb25nICopOwotCQkJCSpsID0gc2ltcGxl
X3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Ci0JCQl9IGVsc2UgewotCQkJCXVuc2lnbmVkIGxvbmcg
KmwgPSAodW5zaWduZWQgbG9uZyopIHZhX2FyZyhhcmdzLHVuc2lnbmVkIGxvbmcqKTsKLQkJCQkq
bCA9IHNpbXBsZV9zdHJ0b3VsKHN0ciwmbmV4dCxiYXNlKTsKLQkJCX0KLQkJCWJyZWFrOwotCQlj
YXNlICdMJzoKLQkJCWlmIChpc19zaWduKSB7Ci0JCQkJbG9uZyBsb25nICpsID0gKGxvbmcgbG9u
ZyopIHZhX2FyZyhhcmdzLGxvbmcgbG9uZyAqKTsKLQkJCQkqbCA9IHNpbXBsZV9zdHJ0b2xsKHN0
ciwmbmV4dCxiYXNlKTsKLQkJCX0gZWxzZSB7Ci0JCQkJdW5zaWduZWQgbG9uZyBsb25nICpsID0g
KHVuc2lnbmVkIGxvbmcgbG9uZyopIHZhX2FyZyhhcmdzLHVuc2lnbmVkIGxvbmcgbG9uZyopOwot
CQkJCSpsID0gc2ltcGxlX3N0cnRvdWxsKHN0ciwmbmV4dCxiYXNlKTsKLQkJCX0KLQkJCWJyZWFr
OwotCQljYXNlICdaJzoKLQkJY2FzZSAneic6Ci0JCXsKLQkJCXNpemVfdCAqcyA9IChzaXplX3Qq
KSB2YV9hcmcoYXJncyxzaXplX3QqKTsKLQkJCSpzID0gKHNpemVfdCkgc2ltcGxlX3N0cnRvdWwo
c3RyLCZuZXh0LGJhc2UpOwotCQl9Ci0JCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJaWYgKGlzX3Np
Z24pIHsKLQkJCQlpbnQgKmkgPSAoaW50ICopIHZhX2FyZyhhcmdzLCBpbnQqKTsKLQkJCQkqaSA9
IChpbnQpIHNpbXBsZV9zdHJ0b2woc3RyLCZuZXh0LGJhc2UpOwotCQkJfSBlbHNlIHsKLQkJCQl1
bnNpZ25lZCBpbnQgKmkgPSAodW5zaWduZWQgaW50KikgdmFfYXJnKGFyZ3MsIHVuc2lnbmVkIGlu
dCopOwotCQkJCSppID0gKHVuc2lnbmVkIGludCkgc2ltcGxlX3N0cnRvdWwoc3RyLCZuZXh0LGJh
c2UpOwotCQkJfQotCQkJYnJlYWs7Ci0JCX0KLQkJbnVtKys7Ci0KLQkJaWYgKCFuZXh0KQotCQkJ
YnJlYWs7Ci0JCXN0ciA9IG5leHQ7Ci0JfQotCXJldHVybiBudW07CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAg
ICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNjZm4gPSBz
dHJ0b3VxOworICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNjZm4g
PSBzdHJ0b3VxOworICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBGWE9LOyAvKiBlbmFibGUgMHggcHJlZml4aW5n
ICovCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfSU5UOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2NmbiA9IHN0cnRvdXE7CisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0g
MTY7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNh
c2UgJ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX1NUUklORzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAnWyc6CisgICAg
ICAgICAgICAgICAgICAgICAgICBmbXQgPSBfX3NjY2woY2NsdGFiLCBmbXQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MgfD0gTk9TS0lQOworICAgICAgICAgICAgICAgICAgICAgICAg
YyA9IENUX0NDTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBOT1NLSVA7
CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfQ0hBUjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAncCc6ICAgICAgIC8qIHBvaW50
ZXIgZm9ybWF0IGlzIGxpa2UgaGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8
PSBQT0lOVEVSIHwgUEZYT0s7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfSU5UOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IHN0cnRvdXE7CisgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgIGNhc2UgJ24nOgorICAgICAgICAgICAgICAgICAgICAgICAgbmNvbnZlcnNp
b25zKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTVVBQUkVTUykgICAv
KiA/Pz8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTSE9SVFNIT1JUKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBjaGFyICopID0gbnJlYWQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIFNIT1JUKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBzaG9ydCAqKSA9IG5yZWFkOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBMT05HKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBsb25nICopID0gbnJlYWQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIFFVQUQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICp2YV9hcmcoYXAsIGludDY0X3QgKikgPSBucmVhZDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhh
cCwgaW50ICopID0gbnJlYWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAq
IFdlIGhhdmUgYSBjb252ZXJzaW9uIHRoYXQgcmVxdWlyZXMgaW5wdXQuCisgICAgICAgICAgICAg
ICAgICovCisgICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBpbnB1dF9mYWlsdXJlOworCisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAg
ICAgICAgICAgKiBDb25zdW1lIGxlYWRpbmcgd2hpdGUgc3BhY2UsIGV4Y2VwdCBmb3IgZm9ybWF0
cworICAgICAgICAgICAgICAgICAqIHRoYXQgc3VwcHJlc3MgdGhpcy4KKyAgICAgICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgTk9TS0lQKSA9PSAwKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqaW5wKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBucmVhZCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoLS1pbnIgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbnB1dF9mYWlsdXJlOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAqIE5vdGUgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hh
cmFjdGVyIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgYnVmZmVyLCBzbyBjb252
ZXJzaW9ucyB0aGF0IGRvIG5vdCBzZXQgTk9TS0lQCisgICAgICAgICAgICAgICAgICAgICAgICAg
KiBjYW4gbm8gbG9uZ2VyIHJlc3VsdCBpbiBhbiBpbnB1dCBmYWlsdXJlLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyoK
KyAgICAgICAgICAgICAgICAgKiBEbyB0aGUgY29udmVyc2lvbi4KKyAgICAgICAgICAgICAgICAg
Ki8KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKworICAgICAgICAgICAgICAgIGNhc2Ug
Q1RfQ0hBUjoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjYW4gYXJiaXRyYXJ5IGNoYXJh
Y3RlcnMgKHNldHMgTk9TS0lQKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRo
ID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNVUFBSRVNTKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzdW0gPSAwOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKChuID0gaW5yKSA8IHdpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdW0gKz0gbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IG47CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAgKz0gbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdW0gPT0gMCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbnB1dF9m
YWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSB3
aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ciAtPSB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucCArPSB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBucmVhZCArPSBzdW07CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkodmFfYXJnKGFwLCBj
aGFyICopLCBpbnAsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5y
IC09IHdpZHRoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAgKz0gd2lkdGg7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkICs9IHdpZHRoOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNzaWduZWQrKzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5jb252ZXJzaW9ucysrOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIENUX0NDTDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjYW4gYSAobm9uZW1wdHkpIGNoYXJhY3RlciBj
bGFzcyAoc2V0cyBOT1NLSVApICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGgg
PT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAoc2l6ZV90KX4w
OyAgICAgLyogYGluZmluaXR5JyAqLworICAgICAgICAgICAgICAgICAgICAgICAgLyogdGFrZSBv
bmx5IHRob3NlIHRoaW5ncyBpbiB0aGUgY2xhc3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChmbGFncyAmIFNVUFBSRVNTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY2NsdGFiWyh1
bnNpZ25lZCBjaGFyKSppbnBdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbisrLCBpbnItLSwgaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKC0td2lkdGggPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbnIgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbnB1dF9mYWlsdXJlOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09IDAp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBtYXRjaF9mYWls
dXJlOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcDAgPSBwID0gdmFfYXJnKGFwLCBjaGFyICopOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY2NsdGFiWyh1bnNpZ25lZCBjaGFyKSppbnBdKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5yLS07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9ICppbnArKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLS13aWR0aCA9PSAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCA9PSBwMCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBpbnB1dF9mYWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG4gPSBwIC0gcDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChuID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBtYXRjaF9mYWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCA9IDA7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hc3NpZ25lZCsrOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWQgKz0gbjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5jb252ZXJzaW9ucysrOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIENUX1NUUklORzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGxpa2UgQ0NMLCBidXQgemVyby1sZW5ndGggc3RyaW5nIE9LLCAm
IG5vIE5PU0tJUCAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IDApCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gKHNpemVfdCl+MDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNVUFBSRVNTKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoIWlzc3BhY2UoKmlucCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuKyssIGluci0tLCBpbnArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoLS13aWR0aCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWQgKz0gbjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHAwID0gcCA9IHZhX2FyZyhhcCwgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKCFpc3NwYWNlKCppbnApKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5yLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnArKyA9ICppbnArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoLS13aWR0aCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGluciA8PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnAgPSAwOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBucmVhZCArPSBwIC0gcDA7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hc3NpZ25lZCsrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgbmNvbnZlcnNpb25zKys7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGNhc2UgQ1RfSU5UOgorICAgICAgICAgICAg
ICAgICAgICAgICAgLyogc2NhbiBhbiBpbnRlZ2VyIGFzIGlmIGJ5IHN0cnRvcS9zdHJ0b3VxICov
CisjaWZkZWYgaGFyZHdheQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IDAg
fHwgd2lkdGggPiBzaXplb2YoYnVmKSAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpZHRoID0gc2l6ZW9mKGJ1ZikgLSAxOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHNpemVfdCBpcyB1bnNpZ25lZCwgaGVuY2UgdGhpcyBvcHRpbWlzYXRpb24gKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgtLXdpZHRoID4gc2l6ZW9mKGJ1ZikgLSAyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHNpemVvZihidWYpIC0gMjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKys7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzIHw9IFNJR05PSyB8IE5ESUdJVFMgfCBOWkRJR0lUUzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAocCA9IGJ1Zjsgd2lkdGg7IHdpZHRoLS0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYyA9ICppbnA7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFN3aXRjaCBvbiB0
aGUgY2hhcmFjdGVyOyBgZ290byBvaycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICogaWYgd2UgYWNjZXB0IGl0IGFzIGEgcGFydCBvZiBudW1iZXIuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGMpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgZGlnaXQgMCBpcyBhbHdheXMgbGVnYWwsIGJ1
dCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzcGVjaWFsLiAgRm9yICVp
IGNvbnZlcnNpb25zLCBpZiBubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBk
aWdpdHMgKHplcm8gb3Igbm9uemVybykgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqIHNjYW5uZWQgKG9ubHkgc2lnbnMpLCB3ZSB3aWxsIGhhdmUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogYmFzZT09MC4gIEluIHRoYXQgY2FzZSwgd2Ugc2hv
dWxkIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCB0byA4IGFuZCBl
bmFibGUgMHggcHJlZml4aW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBB
bHNvLCBpZiB3ZSBoYXZlIG5vdCBzY2FubmVkIHplcm8gZGlnaXRzCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqIGJlZm9yZSB0aGlzLCBkbyBub3QgdHVybiBvZmYgcHJlZml4aW5n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIChzb21lb25lIGVsc2Ugd2lsbCB0
dXJuIGl0IG9mZiBpZiB3ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoYXZl
IHNjYW5uZWQgYW55IG5vbnplcm8gZGlnaXRzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlID09IDApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0g
UEZYT0s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIE5aRElHSVRTKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmPSB+KFNJ
R05PS3xOWkRJR0lUU3xORElHSVRTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzICY9IH4oU0lHTk9LfFBGWE9LfE5ESUdJVFMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gb2s7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogMSB0aHJvdWdoIDcgYWx3YXlzIGxlZ2FsICovCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcn
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlZml4
W2Jhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9
IH4oU0lHTk9LIHwgUEZYT0sgfCBORElHSVRTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIG9rOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIGRpZ2l0cyA4IGFuZCA5IG9rIGlmZiBkZWNpbWFsIG9yIGhleCAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICc4JzogY2FzZSAnOSc6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2VmaXhbYmFzZV07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UgPD0gOCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLyogbm90IGxlZ2Fs
IGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAm
PSB+KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBvazsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBsZXR0ZXJzIG9rIGlmZiBoZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAnQSc6IGNhc2UgJ0InOiBjYXNlICdDJzoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAnRCc6IGNhc2UgJ0UnOiBjYXNlICdGJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAnYSc6IGNhc2UgJ2InOiBjYXNlICdjJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZCc6IGNhc2UgJ2UnOiBjYXNlICdmJzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBuZWVkIHRvIGZpeCBiYXNl
IGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFz
ZSA8PSAxMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOyAgLyogbm90IGxlZ2FsIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncyAmPSB+KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvazsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBzaWduIG9rIG9ubHkgYXMgZmlyc3QgY2hhcmFjdGVy
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJysnOiBjYXNlICctJzoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTSUdO
T0spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzICY9IH5TSUdOT0s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIG9rOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB4IG9rIGlmZiBmbGFnIHN0aWxsIHNldCAm
IDJuZCBjaGFyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOiBj
YXNlICdYJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxh
Z3MgJiBQRlhPSyAmJiBwID09IGJ1ZiArIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsgICAgICAvKiBpZiAlaSAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gflBGWE9L
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBv
azsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJZiB3ZSBnb3QgaGVyZSwgYyBpcyBub3Qg
YSBsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZm9y
IGEgbnVtYmVyLiAgU3RvcCBhY2N1bXVsYXRpbmcgZGlnaXRzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgb2s6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGMgaXMgbGVnYWw6IHN0b3JlIGl0
IGFuZCBsb29rIGF0IHRoZSBuZXh0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgtLWluciA+IDApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
ICAgICAgICAgIC8qIGVuZCBvZiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIElm
IHdlIGhhZCBvbmx5IGEgc2lnbiwgaXQgaXMgbm8gZ29vZDsgcHVzaAorICAgICAgICAgICAgICAg
ICAgICAgICAgICogYmFjayB0aGUgc2lnbi4gIElmIHRoZSBudW1iZXIgZW5kcyBpbiBgeCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCB3YXMgW3NpZ25dICcnICd4Jywgc28gcHVzaCBi
YWNrIHRoZSB4CisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbmQgdHJlYXQgaXQgYXMgW3Np
Z25dICcnLgorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZmxhZ3MgJiBORElHSVRTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwID4gYnVmKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5yKys7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBtYXRjaF9mYWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICgodV9jaGFyICopcClbLTFdOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0tcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucisrOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChmbGFncyAm
IFNVUFBSRVNTKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2
NF90IHJlczsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCA9IDA7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9ICgqY2NmbikoYnVmLCAoY2hhciAqKilO
VUxMLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYg
UE9JTlRFUikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJn
KGFwLCB2b2lkICoqKSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodm9pZCAqKSh1aW50cHRyX3QpcmVzOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChmbGFncyAmIFNIT1JUU0hPUlQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgY2hhciAqKSA9IHJlczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBTSE9SVCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBzaG9ydCAqKSA9IHJl
czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBMT05H
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAsIGxv
bmcgKikgPSByZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZs
YWdzICYgUVVBRCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFf
YXJnKGFwLCBpbnQ2NF90ICopID0gcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhh
cCwgaW50ICopID0gcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNzaWdu
ZWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IG5yZWFkICs9IHAgLSBidWY7CisgICAgICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMr
KzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgfQor
ICAgICAgICB9CitpbnB1dF9mYWlsdXJlOgorICAgICAgICByZXR1cm4gKG5jb252ZXJzaW9ucyAh
PSAwID8gbmFzc2lnbmVkIDogLTEpOworbWF0Y2hfZmFpbHVyZToKKyAgICAgICAgcmV0dXJuIChu
YXNzaWduZWQpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL3RwbWJhY2suYyBiL3RwbWJhY2suYwpp
bmRleCAwMGI2NmU4Li4yMmFkYmQzIDEwMDY0NAotLS0gYS90cG1iYWNrLmMKKysrIGIvdHBtYmFj
ay5jCkBAIC01MiwxMCArNTIsNiBAQAogI2luY2x1ZGUgPG1pbmktb3Mvd2FpdC5oPgogCiAKLSNp
Zm5kZWYgSEFWRV9MSUJDCi0jZGVmaW5lIHN0cnRvdWwgc2ltcGxlX3N0cnRvdWwKLSNlbmRpZgot
CiAvLyNkZWZpbmUgVFBNQkFDS19QUklOVF9ERUJVRwogI2lmZGVmIFRQTUJBQ0tfUFJJTlRfREVC
VUcKICNkZWZpbmUgVFBNQkFDS19ERUJVRyhmbXQsLi4uKSBwcmludGsoIlRwbWJhY2s6RGVidWco
Il9fRklMRV9fIjolZCkgIiBmbXQsIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQotLSAKMi42LjYK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jul 01 09:33:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 01 Jul 2016 09:33: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bIupK-0007or-U8; Fri, 01 Jul 2016 09:33:34 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bIupJ-0007oW-1u; Fri, 01 Jul 2016 09:33:33 +0000
Received: from [193.109.254.147] by server-10.bemta-14.messagelabs.com id
 42/A5-10191-CE836775; Fri, 01 Jul 2016 09:33:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrPLMWRWlGSWpSXmKPExsVyuP0Ov+4ri7J
 wgy0nTC3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZlw5O5u54FsvS8Wnnv8sDYybm5i6
 GDk5JASMJN5O/Adkc3EICSxklDg9ZwozSIJNQFViw/VTrCC2iICbxJfvs9hAbGaBOIk7b08yd
 jFycAgLeEs0zM0ECbMAlT9acxqsnFfAXmLivw2MEPPlJK7PnM40gZFzASPDKkb14tSistQiXV
 O9pKLM9IyS3MTMHF1DQxO93NTi4sT01JzEpGK95PzcTYxAzzEAwQ7GdYudDzFKcjApifJ+ES0
 LF+JLyk+pzEgszogvKs1JLT7EKMPBoSTB22AOlBMsSk1PrUjLzAGGEExagoNHSYQ3ASTNW1yQ
 mFucmQ6ROsWoy7Flxv21TEIsefl5qVLivB4gRQIgRRmleXAjYOF8iVFWSpiXEegoIZ6C1KLcz
 BJU+VeM4hyMSsK8W0Cm8GTmlcBtegV0BBPQEcylxSBHlCQipKQaGL23n5D5cMEnJCqSzyVOqS
 Cnv0zx3L0d1fPWvBfgyPObVr1Gip3L1/10Vdu5LedutHSJ/S85/emFlIzC5KBlEX81rkZeSeW
 oeH89aIniUZ47Jfmul1IVpj57Po3jnrflhzObj655NUHll0qT/rYMk7vc9a+UxdtuJof0Npyf
 fIH1Q1bAiw2BC5VYijMSDbWYi4oTAWCGXRJiAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1467365610!50421332!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=2.3 required=7.0 tests=BODY_FWORD,
 BODY_RANDOM_LONG,MAILTO_TO_SPAM_ADDR
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 16572 invoked from network); 1 Jul 2016 09:33:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-4.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 1 Jul 2016 09:33:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 1E08CACDC;
 Fri,  1 Jul 2016 09:33:30 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Fri,  1 Jul 2016 11:33:27 +0200
Message-Id: <1467365607-22499-1-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 andrew.cooper3@citrix.com
Subject: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a version
	not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW5zdGVhZCBvZiBhIExpbnV4IGtlcm5lbCBiYXNlZCBpbXBsZW1lbnRhdGlvbiB1c2Ugb25lIGZy
b20gZnJlZUJTRC4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNv
bT4KLS0tCkknbSBub3Qgc3VyZSBhYm91dCBjb2Rpbmcgc3R5bGUgaGVyZTogc2hvdWxkIEkga2Vl
cCAobW9yZSBvciBsZXNzKSB0aGUKb25lIGZyb20gZnJlZUJTRCwgb3IgaXMgdGhlIFhlbiBzdHls
ZSBwcmVmZXJyZWQ/Ci0tLQogYmxrZnJvbnQuYyAgICAgICAgfCAgICA0IC0KIGluY2x1ZGUvbGli
LWdwbC5oIHwgICAgNyArLQogbGliL3ByaW50Zi5jICAgICAgfCAxNzQ0ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiB0cG1iYWNrLmMgICAgICAg
ICB8ICAgIDQgLQogNCBmaWxlcyBjaGFuZ2VkLCAxMTAwIGluc2VydGlvbnMoKyksIDY1OSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibGtmcm9udC5jIGIvYmxrZnJvbnQuYwppbmRleCBiZGI3
NzY1Li5mNzQ3MjE2IDEwMDY0NAotLS0gYS9ibGtmcm9udC5jCisrKyBiL2Jsa2Zyb250LmMKQEAg
LTE3LDEwICsxNyw2IEBACiAjaW5jbHVkZSA8bWluaS1vcy9saWIuaD4KICNpbmNsdWRlIDxmY250
bC5oPgogCi0jaWZuZGVmIEhBVkVfTElCQwotI2RlZmluZSBzdHJ0b3VsIHNpbXBsZV9zdHJ0b3Vs
Ci0jZW5kaWYKLQogLyogTm90ZTogd2UgZ2VuZXJhbGx5IGRvbid0IG5lZWQgdG8gZGlzYWJsZSBJ
UlFzIHNpbmNlIHdlIGhhcmRseSBkbyBhbnl0aGluZyBpbgogICogdGhlIGludGVycnVwdCBoYW5k
bGVyLiAgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWItZ3BsLmggYi9pbmNsdWRlL2xpYi1n
cGwuaAppbmRleCBkNTYwMmIyLi43NTU3NjI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpYi1ncGwu
aAorKysgYi9pbmNsdWRlL2xpYi1ncGwuaApAQCAtMzMsMTAgKzMzLDkgQEAKIAogI2lmbmRlZiBI
QVZFX0xJQkMKIC8qIHByaW50aW5nICovCi1leHRlcm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3Ry
dG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwotZXh0ZXJuIGxvbmcgc2lt
cGxlX3N0cnRvbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwotZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgbG9uZyBzaW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5z
aWduZWQgaW50KTsKLWV4dGVybiBsb25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAq
LGNoYXIgKiosdW5zaWduZWQgaW50KTsKK3Vuc2lnbmVkIGxvbmcgc3RydG91bChjb25zdCBjaGFy
ICpucHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSk7CitpbnQ2NF90IHN0cnRvcShjb25zdCBj
aGFyICpucHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSk7Cit1aW50NjRfdCBzdHJ0b3VxKGNv
bnN0IGNoYXIgKm5wdHIsIGNoYXIgKiplbmRwdHIsIGludCBiYXNlKTsKIAogZXh0ZXJuIGludCBz
cHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKIAlfX2F0dHJpYnV0ZV9f
ICgoZm9ybWF0IChwcmludGYsIDIsIDMpKSk7CmRpZmYgLS1naXQgYS9saWIvcHJpbnRmLmMgYi9s
aWIvcHJpbnRmLmMKaW5kZXggNDBmOTJmYy4uZTQ4YWI2MSAxMDA2NDQKLS0tIGEvbGliL3ByaW50
Zi5jCisrKyBiL2xpYi9wcmludGYuYwpAQCAtMSw1MCArMSw1MyBAQAogLyoKICAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCi0gKiAoQykgMjAwMyAtIFJvbGYgTmV1Z2ViYXVlciAtIEludGVsIFJlc2VhcmNo
IENhbWJyaWRnZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiAgICAgICAgRmlsZTogcHJp
bnRmLmMKLSAqICAgICAgQXV0aG9yOiBSb2xmIE5ldWdlYmF1ZXIgKG5ldWdlYmFyQGRjcy5nbGEu
YWMudWspCi0gKiAgICAgQ2hhbmdlczogR3J6ZWdvcnogTWlsb3MgKGdtMjgxQGNhbS5hYy51aykg
CisgKiAgICAgIEF1dGhvcjogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgogICoKLSAq
ICAgICAgICBEYXRlOiBBdWcgMjAwMywgQXVnIDIwMDUKKyAqICAgICAgICBEYXRlOiBKdW4gMjAx
NgogICoKICAqIEVudmlyb25tZW50OiBYZW4gTWluaW1hbCBPUwogICogRGVzY3JpcHRpb246IExp
YnJhcnkgZnVuY3Rpb25zIGZvciBwcmludGluZwotICogICAgICAgICAgICAgIChMaW51eCBwb3J0
LCBtYWlubHkgbGliL3ZzcHJpbnRmLmMpCisgKiAgICAgICAgICAgICAgKGZyZWVCU0QgcG9ydCkK
ICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogICovCiAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5
OTEsIDE5OTIgIExpbnVzIFRvcnZhbGRzCi0gKi8KLQotLyogdnNwcmludGYuYyAtLSBMYXJzIFdp
cnplbml1cyAmIExpbnVzIFRvcnZhbGRzLiAqLwotLyoKLSAqIFdpcnplbml1cyB3cm90ZSB0aGlz
IHBvcnRhYmx5LCBUb3J2YWxkcyBmdWNrZWQgaXQgdXAgOi0pCi0gKi8KLQotLyoKLSAqIEZyaSBK
dWwgMTMgMjAwMSBDcnV0Y2hlciBEdW5uYXZhbnQgPGNydXRjaGVyK2tlcm5lbEBkYXRhc3RhY2tz
LmNvbT4KLSAqIC0gY2hhbmdlZCB0byBwcm92aWRlIHNucHJpbnRmIGFuZCB2c25wcmludGYgZnVu
Y3Rpb25zCi0gKiBTbyBGZWIgIDEgMTY6NTE6MzIgQ0VUIDIwMDQgSnVlcmdlbiBRdWFkZSA8cXVh
ZGVAaHNuci5kZT4KLSAqIC0gc2NucHJpbnRmIGFuZCB2c2NucHJpbnRmCisvKi0KKyAqIENvcHly
aWdodCAoYykgMTk5MCwgMTk5MworICoJVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2Yg
Q2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgorICogVGhpcyBjb2RlIGlzIGRl
cml2ZWQgZnJvbSBzb2Z0d2FyZSBjb250cmlidXRlZCB0byBCZXJrZWxleSBieQorICogQ2hyaXMg
VG9yZWsuCiAgKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgot
ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqIENvcHlyaWdodCAoYykg
MjAxMSBUaGUgRnJlZUJTRCBGb3VuZGF0aW9uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
UG9ydGlvbnMgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIGRldmVsb3BlZCBieSBEYXZpZCBDaGlzbmFs
bAorICogdW5kZXIgc3BvbnNvcnNoaXAgZnJvbSB0aGUgRnJlZUJTRCBGb3VuZGF0aW9uLgogICoK
LSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgogICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICog
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQor
ICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmICFkZWZpbmVkIEhB
VkVfTElCQwpAQCAtNTcsNDQ5ICs2MCw1MjkgQEAKICNpbmNsdWRlIDxtaW5pLW9zL2N0eXBlLmg+
CiAjaW5jbHVkZSA8bWluaS1vcy9wb3NpeC9saW1pdHMuaD4KIAotLyoqCi0gKiBzaW1wbGVfc3Ry
dG91bCAtIGNvbnZlcnQgYSBzdHJpbmcgdG8gYW4gdW5zaWduZWQgbG9uZwotICogQGNwOiBUaGUg
c3RhcnQgb2YgdGhlIHN0cmluZwotICogQGVuZHA6IEEgcG9pbnRlciB0byB0aGUgZW5kIG9mIHRo
ZSBwYXJzZWQgc3RyaW5nIHdpbGwgYmUgcGxhY2VkIGhlcmUKLSAqIEBiYXNlOiBUaGUgbnVtYmVy
IGJhc2UgdG8gdXNlCisjZGVmaW5lIF9fREVDT05TVCh0eXBlLCB2YXIpICAgICgodHlwZSkodWlu
dHB0cl90KShjb25zdCB2b2lkICopKHZhcikpCisvKiA2NCBiaXRzICsgMC1CeXRlIGF0IGVuZCAq
LworI2RlZmluZSBNQVhOQlVGCTY1CisKK3N0YXRpYyBjaGFyIGNvbnN0IGhleDJhc2NpaV9kYXRh
W10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKy8qCisgKiBQdXQg
YSBOVUwtdGVybWluYXRlZCBBU0NJSSBudW1iZXIgKGJhc2UgPD0gMzYpIGluIGEgYnVmZmVyIGlu
IHJldmVyc2UKKyAqIG9yZGVyOyByZXR1cm4gYW4gb3B0aW9uYWwgbGVuZ3RoIGFuZCBhIHBvaW50
ZXIgdG8gdGhlIGxhc3QgY2hhcmFjdGVyCisgKiB3cml0dGVuIGluIHRoZSBidWZmZXIgKGkuZS4s
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZykuCisgKiBUaGUgYnVmZmVyIHBvaW50
ZWQgdG8gYnkgYG5idWYnIG11c3QgaGF2ZSBsZW5ndGggPj0gTUFYTkJVRi4KICAqLwotdW5zaWdu
ZWQgbG9uZyBzaW1wbGVfc3RydG91bChjb25zdCBjaGFyICpjcCxjaGFyICoqZW5kcCx1bnNpZ25l
ZCBpbnQgYmFzZSkKK3N0YXRpYyBjaGFyICoKK2tzcHJpbnRuKGNoYXIgKm5idWYsIHVpbnRtYXhf
dCBudW0sIGludCBiYXNlLCBpbnQgKmxlbnAsIGludCB1cHBlcikKIHsKLSAgICB1bnNpZ25lZCBs
b25nIHJlc3VsdCA9IDAsdmFsdWU7Ci0KLSAgICBpZiAoIWJhc2UpIHsKLSAgICAgICAgYmFzZSA9
IDEwOwotICAgICAgICBpZiAoKmNwID09ICcwJykgewotICAgICAgICAgICAgYmFzZSA9IDg7Ci0g
ICAgICAgICAgICBjcCsrOwotICAgICAgICAgICAgaWYgKCgqY3AgPT0gJ3gnKSAmJiBpc3hkaWdp
dChjcFsxXSkpIHsKLSAgICAgICAgICAgICAgICBjcCsrOwotICAgICAgICAgICAgICAgIGJhc2Ug
PSAxNjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoaXN4ZGln
aXQoKmNwKSAmJgotICAgICAgICAgICAodmFsdWUgPSBpc2RpZ2l0KCpjcCkgPyAqY3AtJzAnIDog
dG91cHBlcigqY3ApLSdBJysxMCkgPCBiYXNlKSB7Ci0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCpi
YXNlICsgdmFsdWU7Ci0gICAgICAgIGNwKys7Ci0gICAgfQotICAgIGlmIChlbmRwKQotICAgICAg
ICAqZW5kcCA9IChjaGFyICopY3A7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoqCi0gKiBz
aW1wbGVfc3RydG9sIC0gY29udmVydCBhIHN0cmluZyB0byBhIHNpZ25lZCBsb25nCi0gKiBAY3A6
IFRoZSBzdGFydCBvZiB0aGUgc3RyaW5nCi0gKiBAZW5kcDogQSBwb2ludGVyIHRvIHRoZSBlbmQg
b2YgdGhlIHBhcnNlZCBzdHJpbmcgd2lsbCBiZSBwbGFjZWQgaGVyZQotICogQGJhc2U6IFRoZSBu
dW1iZXIgYmFzZSB0byB1c2UKLSAqLwotbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKmNw
LGNoYXIgKiplbmRwLHVuc2lnbmVkIGludCBiYXNlKQotewotICAgIGlmKCpjcD09Jy0nKQotICAg
ICAgICByZXR1cm4gLXNpbXBsZV9zdHJ0b3VsKGNwKzEsZW5kcCxiYXNlKTsKLSAgICByZXR1cm4g
c2ltcGxlX3N0cnRvdWwoY3AsZW5kcCxiYXNlKTsKKwljaGFyICpwLCBjOworCisJcCA9IG5idWY7
CisJKnAgPSAnXDAnOworCWRvIHsKKwkJYyA9IGhleDJhc2NpaV9kYXRhW251bSAlIGJhc2VdOwor
CQkqKytwID0gdXBwZXIgPyB0b3VwcGVyKGMpIDogYzsKKwl9IHdoaWxlIChudW0gLz0gYmFzZSk7
CisJaWYgKGxlbnApCisJCSpsZW5wID0gcCAtIG5idWY7CisJcmV0dXJuIChwKTsKIH0KIAotLyoq
Ci0gKiBzaW1wbGVfc3RydG91bGwgLSBjb252ZXJ0IGEgc3RyaW5nIHRvIGFuIHVuc2lnbmVkIGxv
bmcgbG9uZwotICogQGNwOiBUaGUgc3RhcnQgb2YgdGhlIHN0cmluZwotICogQGVuZHA6IEEgcG9p
bnRlciB0byB0aGUgZW5kIG9mIHRoZSBwYXJzZWQgc3RyaW5nIHdpbGwgYmUgcGxhY2VkIGhlcmUK
LSAqIEBiYXNlOiBUaGUgbnVtYmVyIGJhc2UgdG8gdXNlCisvKgorICogQ29udmVydCBhIHN0cmlu
ZyB0byBhbiB1bnNpZ25lZCBsb25nIGludGVnZXIuCisgKgorICogSWdub3JlcyBgbG9jYWxlJyBz
dHVmZi4gIEFzc3VtZXMgdGhhdCB0aGUgdXBwZXIgYW5kIGxvd2VyIGNhc2UKKyAqIGFscGhhYmV0
cyBhbmQgZGlnaXRzIGFyZSBlYWNoIGNvbnRpZ3VvdXMuCiAgKi8KLXVuc2lnbmVkIGxvbmcgbG9u
ZyBzaW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqY3AsY2hhciAqKmVuZHAsdW5zaWduZWQgaW50
IGJhc2UpCit1bnNpZ25lZCBsb25nCitzdHJ0b3VsKGNvbnN0IGNoYXIgKm5wdHIsIGNoYXIgKipl
bmRwdHIsIGludCBiYXNlKQogewotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHQgPSAwLHZh
bHVlOwotCi0gICAgaWYgKCFiYXNlKSB7Ci0gICAgICAgIGJhc2UgPSAxMDsKLSAgICAgICAgaWYg
KCpjcCA9PSAnMCcpIHsKLSAgICAgICAgICAgIGJhc2UgPSA4OwotICAgICAgICAgICAgY3ArKzsK
LSAgICAgICAgICAgIGlmICgoKmNwID09ICd4JykgJiYgaXN4ZGlnaXQoY3BbMV0pKSB7Ci0gICAg
ICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IG5wdHI7CisgICAgICAg
IHVuc2lnbmVkIGxvbmcgYWNjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CisgICAgICAgIHVu
c2lnbmVkIGxvbmcgY3V0b2ZmOworICAgICAgICBpbnQgbmVnID0gMCwgYW55LCBjdXRsaW07CisK
KyAgICAgICAgLyoKKyAgICAgICAgICogU2VlIHN0cnRvbCBmb3IgY29tbWVudHMgYXMgdG8gdGhl
IGxvZ2ljIHVzZWQuCisgICAgICAgICAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAg
YyA9ICpzKys7CisgICAgICAgIH0gd2hpbGUgKGlzc3BhY2UoYykpOworICAgICAgICBpZiAoYyA9
PSAnLScpIHsKKyAgICAgICAgICAgICAgICBuZWcgPSAxOworICAgICAgICAgICAgICAgIGMgPSAq
cysrOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJysnKQorICAgICAgICAgICAgICAgIGMgPSAq
cysrOworICAgICAgICBpZiAoKGJhc2UgPT0gMCB8fCBiYXNlID09IDE2KSAmJgorICAgICAgICAg
ICAgYyA9PSAnMCcgJiYgKCpzID09ICd4JyB8fCAqcyA9PSAnWCcpKSB7CisgICAgICAgICAgICAg
ICAgYyA9IHNbMV07CisgICAgICAgICAgICAgICAgcyArPSAyOwogICAgICAgICAgICAgICAgIGJh
c2UgPSAxNjsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoaXN4
ZGlnaXQoKmNwKSAmJiAodmFsdWUgPSBpc2RpZ2l0KCpjcCkgPyAqY3AtJzAnIDogKGlzbG93ZXIo
KmNwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPyB0b3VwcGVyKCpjcCkgOiAqY3ApLSdBJysxMCkgPCBiYXNlKSB7Ci0gICAg
ICAgIHJlc3VsdCA9IHJlc3VsdCpiYXNlICsgdmFsdWU7Ci0gICAgICAgIGNwKys7Ci0gICAgfQot
ICAgIGlmIChlbmRwKQotICAgICAgICAqZW5kcCA9IChjaGFyICopY3A7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgaWYgKGJhc2UgPT0gMCkKKyAgICAgICAgICAgICAgICBiYXNlID0gYyA9
PSAnMCcgPyA4IDogMTA7CisgICAgICAgIGN1dG9mZiA9ICh1bnNpZ25lZCBsb25nKVVMT05HX01B
WCAvICh1bnNpZ25lZCBsb25nKWJhc2U7CisgICAgICAgIGN1dGxpbSA9ICh1bnNpZ25lZCBsb25n
KVVMT05HX01BWCAlICh1bnNpZ25lZCBsb25nKWJhc2U7CisgICAgICAgIGZvciAoYWNjID0gMCwg
YW55ID0gMDs7IGMgPSAqcysrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc2FzY2lpKGMpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGlzZGln
aXQoYykpCisgICAgICAgICAgICAgICAgICAgICAgICBjIC09ICcwJzsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChpc2FscGhhKGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSBpc3Vw
cGVyKGMpID8gJ0EnIC0gMTAgOiAnYScgLSAxMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoYyA+PSBiYXNl
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGFu
eSA8IDAgfHwgYWNjID4gY3V0b2ZmIHx8IChhY2MgPT0gY3V0b2ZmICYmIGMgPiBjdXRsaW0pKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYW55ID0gLTE7CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjICo9IGJhc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhY2MgKz0gYzsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFueSA8IDApIHsKKyAgICAgICAg
ICAgICAgICBhY2MgPSBVTE9OR19NQVg7CisgICAgICAgIH0gZWxzZSBpZiAobmVnKQorICAgICAg
ICAgICAgICAgIGFjYyA9IC1hY2M7CisgICAgICAgIGlmIChlbmRwdHIgIT0gMCkKKyAgICAgICAg
ICAgICAgICAqZW5kcHRyID0gX19ERUNPTlNUKGNoYXIgKiwgYW55ID8gcyAtIDEgOiBucHRyKTsK
KyAgICAgICAgcmV0dXJuIChhY2MpOwogfQogCi0vKioKLSAqIHNpbXBsZV9zdHJ0b2xsIC0gY29u
dmVydCBhIHN0cmluZyB0byBhIHNpZ25lZCBsb25nIGxvbmcKLSAqIEBjcDogVGhlIHN0YXJ0IG9m
IHRoZSBzdHJpbmcKLSAqIEBlbmRwOiBBIHBvaW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUgcGFyc2Vk
IHN0cmluZyB3aWxsIGJlIHBsYWNlZCBoZXJlCi0gKiBAYmFzZTogVGhlIG51bWJlciBiYXNlIHRv
IHVzZQorLyoKKyAqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBxdWFkIGludGVnZXIuCisgKgorICog
SWdub3JlcyBgbG9jYWxlJyBzdHVmZi4gIEFzc3VtZXMgdGhhdCB0aGUgdXBwZXIgYW5kIGxvd2Vy
IGNhc2UKKyAqIGFscGhhYmV0cyBhbmQgZGlnaXRzIGFyZSBlYWNoIGNvbnRpZ3VvdXMuCiAgKi8K
LWxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICpjcCxjaGFyICoqZW5kcCx1bnNp
Z25lZCBpbnQgYmFzZSkKLXsKLSAgICBpZigqY3A9PSctJykKLSAgICAgICAgcmV0dXJuIC1zaW1w
bGVfc3RydG91bGwoY3ArMSxlbmRwLGJhc2UpOwotICAgIHJldHVybiBzaW1wbGVfc3RydG91bGwo
Y3AsZW5kcCxiYXNlKTsKLX0KLQotc3RhdGljIGludCBza2lwX2F0b2koY29uc3QgY2hhciAqKnMp
Ci17Ci0gICAgaW50IGk9MDsKLQotICAgIHdoaWxlIChpc2RpZ2l0KCoqcykpCi0gICAgICAgIGkg
PSBpKjEwICsgKigoKnMpKyspIC0gJzAnOwotICAgIHJldHVybiBpOwotfQotCi0jZGVmaW5lIFpF
Uk9QQUQgMSAgICAgICAgICAgICAgIC8qIHBhZCB3aXRoIHplcm8gKi8KLSNkZWZpbmUgU0lHTiAg
ICAyICAgICAgICAgICAgICAgLyogdW5zaWduZWQvc2lnbmVkIGxvbmcgKi8KLSNkZWZpbmUgUExV
UyAgICA0ICAgICAgICAgICAgICAgLyogc2hvdyBwbHVzICovCi0jZGVmaW5lIFNQQUNFICAgOCAg
ICAgICAgICAgICAgIC8qIHNwYWNlIGlmIHBsdXMgKi8KLSNkZWZpbmUgTEVGVCAgICAxNiAgICAg
ICAgICAgICAgLyogbGVmdCBqdXN0aWZpZWQgKi8KLSNkZWZpbmUgU1BFQ0lBTCAzMiAgICAgICAg
ICAgICAgLyogMHggKi8KLSNkZWZpbmUgTEFSR0UgICA2NCAgICAgICAgICAgICAgLyogdXNlICdB
QkNERUYnIGluc3RlYWQgb2YgJ2FiY2RlZicgKi8KLQotc3RhdGljIGNoYXIgKiBudW1iZXIoY2hh
ciAqIGJ1ZiwgY2hhciAqIGVuZCwgbG9uZyBsb25nIG51bSwgaW50IGJhc2UsIGludCBzaXplLCBp
bnQgcHJlY2lzaW9uLCBpbnQgdHlwZSkKK2ludDY0X3QKK3N0cnRvcShjb25zdCBjaGFyICpucHRy
LCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSkKIHsKLSAgICBjaGFyIGMsc2lnbix0bXBbNjZdOwot
ICAgIGNvbnN0IGNoYXIgKmRpZ2l0czsKLSAgICBjb25zdCBjaGFyIHNtYWxsX2RpZ2l0c1tdID0g
IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0gICAgY29uc3QgY2hhciBs
YXJnZV9kaWdpdHNbXSA9ICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOwot
ICAgIGludCBpOwotCi0gICAgZGlnaXRzID0gKHR5cGUgJiBMQVJHRSkgPyBsYXJnZV9kaWdpdHMg
OiBzbWFsbF9kaWdpdHM7Ci0gICAgaWYgKHR5cGUgJiBMRUZUKQotICAgICAgICB0eXBlICY9IH5a
RVJPUEFEOwotICAgIGlmIChiYXNlIDwgMiB8fCBiYXNlID4gMzYpCi0gICAgICAgIHJldHVybiBi
dWY7Ci0gICAgYyA9ICh0eXBlICYgWkVST1BBRCkgPyAnMCcgOiAnICc7Ci0gICAgc2lnbiA9IDA7
Ci0gICAgaWYgKHR5cGUgJiBTSUdOKSB7Ci0gICAgICAgIGlmIChudW0gPCAwKSB7Ci0gICAgICAg
ICAgICBzaWduID0gJy0nOwotICAgICAgICAgICAgbnVtID0gLW51bTsKLSAgICAgICAgICAgIHNp
emUtLTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgUExVUykgewotICAgICAgICAgICAgc2ln
biA9ICcrJzsKLSAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlICYg
U1BBQ0UpIHsKLSAgICAgICAgICAgIHNpZ24gPSAnICc7Ci0gICAgICAgICAgICBzaXplLS07Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHR5cGUgJiBTUEVDSUFMKSB7Ci0gICAgICAgIGlmIChi
YXNlID09IDE2KQotICAgICAgICAgICAgc2l6ZSAtPSAyOwotICAgICAgICBlbHNlIGlmIChiYXNl
ID09IDgpCi0gICAgICAgICAgICBzaXplLS07Ci0gICAgfQotICAgIGkgPSAwOwotICAgIGlmIChu
dW0gPT0gMCkKLSAgICAgICAgdG1wW2krK109JzAnOwotICAgIGVsc2UgCi0gICAgewotICAgICAg
ICAvKiBYWFggS0FGOiBmb3JjZSB1bnNpZ25lZCBtb2QgYW5kIGRpdi4gKi8KLSAgICAgICAgdW5z
aWduZWQgbG9uZyBsb25nIG51bTI9KHVuc2lnbmVkIGxvbmcgbG9uZyludW07Ci0gICAgICAgIHVu
c2lnbmVkIGludCBiYXNlMj0odW5zaWduZWQgaW50KWJhc2U7Ci0gICAgICAgIHdoaWxlIChudW0y
ICE9IDApIHsgdG1wW2krK10gPSBkaWdpdHNbbnVtMiViYXNlMl07IG51bTIgLz0gYmFzZTI7IH0K
LSAgICB9Ci0gICAgaWYgKGkgPiBwcmVjaXNpb24pCi0gICAgICAgIHByZWNpc2lvbiA9IGk7Ci0g
ICAgc2l6ZSAtPSBwcmVjaXNpb247Ci0gICAgaWYgKCEodHlwZSYoWkVST1BBRCtMRUZUKSkpIHsK
LSAgICAgICAgd2hpbGUoc2l6ZS0tPjApIHsKLSAgICAgICAgICAgIGlmIChidWYgPD0gZW5kKQot
ICAgICAgICAgICAgICAgICpidWYgPSAnICc7Ci0gICAgICAgICAgICArK2J1ZjsKKyAgICAgICAg
Y29uc3QgY2hhciAqczsKKyAgICAgICAgdWludDY0X3QgYWNjOworICAgICAgICB1bnNpZ25lZCBj
aGFyIGM7CisgICAgICAgIHVpbnQ2NF90IHFiYXNlLCBjdXRvZmY7CisgICAgICAgIGludCBuZWcs
IGFueSwgY3V0bGltOworCisgICAgICAgIC8qCisgICAgICAgICAqIFNraXAgd2hpdGUgc3BhY2Ug
YW5kIHBpY2sgdXAgbGVhZGluZyArLy0gc2lnbiBpZiBhbnkuCisgICAgICAgICAqIElmIGJhc2Ug
aXMgMCwgYWxsb3cgMHggZm9yIGhleCBhbmQgMCBmb3Igb2N0YWwsIGVsc2UKKyAgICAgICAgICog
YXNzdW1lIGRlY2ltYWw7IGlmIGJhc2UgaXMgYWxyZWFkeSAxNiwgYWxsb3cgMHguCisgICAgICAg
ICAqLworICAgICAgICBzID0gbnB0cjsKKyAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGMg
PSAqcysrOworICAgICAgICB9IHdoaWxlIChpc3NwYWNlKGMpKTsKKyAgICAgICAgaWYgKGMgPT0g
Jy0nKSB7CisgICAgICAgICAgICAgICAgbmVnID0gMTsKKyAgICAgICAgICAgICAgICBjID0gKnMr
KzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZWcgPSAwOworICAgICAgICAg
ICAgICAgIGlmIChjID09ICcrJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqcysrOwog
ICAgICAgICB9Ci0gICAgfQotICAgIGlmIChzaWduKSB7Ci0gICAgICAgIGlmIChidWYgPD0gZW5k
KQotICAgICAgICAgICAgKmJ1ZiA9IHNpZ247Ci0gICAgICAgICsrYnVmOwotICAgIH0KLSAgICBp
ZiAodHlwZSAmIFNQRUNJQUwpIHsKLSAgICAgICAgaWYgKGJhc2U9PTgpIHsKLSAgICAgICAgICAg
IGlmIChidWYgPD0gZW5kKQotICAgICAgICAgICAgICAgICpidWYgPSAnMCc7Ci0gICAgICAgICAg
ICArK2J1ZjsKLSAgICAgICAgfSBlbHNlIGlmIChiYXNlPT0xNikgewotICAgICAgICAgICAgaWYg
KGJ1ZiA8PSBlbmQpCi0gICAgICAgICAgICAgICAgKmJ1ZiA9ICcwJzsKLSAgICAgICAgICAgICsr
YnVmOwotICAgICAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCi0gICAgICAgICAgICAgICAgKmJ1ZiA9
IGRpZ2l0c1szM107Ci0gICAgICAgICAgICArK2J1ZjsKKyAgICAgICAgaWYgKChiYXNlID09IDAg
fHwgYmFzZSA9PSAxNikgJiYKKyAgICAgICAgICAgIGMgPT0gJzAnICYmICgqcyA9PSAneCcgfHwg
KnMgPT0gJ1gnKSkgeworICAgICAgICAgICAgICAgIGMgPSBzWzFdOworICAgICAgICAgICAgICAg
IHMgKz0gMjsKKyAgICAgICAgICAgICAgICBiYXNlID0gMTY7CiAgICAgICAgIH0KLSAgICB9Ci0g
ICAgaWYgKCEodHlwZSAmIExFRlQpKSB7Ci0gICAgICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0g
ICAgICAgICAgICBpZiAoYnVmIDw9IGVuZCkKLSAgICAgICAgICAgICAgICAqYnVmID0gYzsKLSAg
ICAgICAgICAgICsrYnVmOworICAgICAgICBpZiAoYmFzZSA9PSAwKQorICAgICAgICAgICAgICAg
IGJhc2UgPSBjID09ICcwJyA/IDggOiAxMDsKKworICAgICAgICAvKgorICAgICAgICAgKiBDb21w
dXRlIHRoZSBjdXRvZmYgdmFsdWUgYmV0d2VlbiBsZWdhbCBudW1iZXJzIGFuZCBpbGxlZ2FsCisg
ICAgICAgICAqIG51bWJlcnMuICBUaGF0IGlzIHRoZSBsYXJnZXN0IGxlZ2FsIHZhbHVlLCBkaXZp
ZGVkIGJ5IHRoZQorICAgICAgICAgKiBiYXNlLiAgQW4gaW5wdXQgbnVtYmVyIHRoYXQgaXMgZ3Jl
YXRlciB0aGFuIHRoaXMgdmFsdWUsIGlmCisgICAgICAgICAqIGZvbGxvd2VkIGJ5IGEgbGVnYWwg
aW5wdXQgY2hhcmFjdGVyLCBpcyB0b28gYmlnLiAgT25lIHRoYXQKKyAgICAgICAgICogaXMgZXF1
YWwgdG8gdGhpcyB2YWx1ZSBtYXkgYmUgdmFsaWQgb3Igbm90OyB0aGUgbGltaXQKKyAgICAgICAg
ICogYmV0d2VlbiB2YWxpZCBhbmQgaW52YWxpZCBudW1iZXJzIGlzIHRoZW4gYmFzZWQgb24gdGhl
IGxhc3QKKyAgICAgICAgICogZGlnaXQuICBGb3IgaW5zdGFuY2UsIGlmIHRoZSByYW5nZSBmb3Ig
cXVhZHMgaXMKKyAgICAgICAgICogWy05MjIzMzcyMDM2ODU0Nzc1ODA4Li45MjIzMzcyMDM2ODU0
Nzc1ODA3XSBhbmQgdGhlIGlucHV0IGJhc2UKKyAgICAgICAgICogaXMgMTAsIGN1dG9mZiB3aWxs
IGJlIHNldCB0byA5MjIzMzcyMDM2ODU0Nzc1ODAgYW5kIGN1dGxpbSB0bworICAgICAgICAgKiBl
aXRoZXIgNyAobmVnPT0wKSBvciA4IChuZWc9PTEpLCBtZWFuaW5nIHRoYXQgaWYgd2UgaGF2ZQor
ICAgICAgICAgKiBhY2N1bXVsYXRlZCBhIHZhbHVlID4gOTIyMzM3MjAzNjg1NDc3NTgwLCBvciBl
cXVhbCBidXQgdGhlCisgICAgICAgICAqIG5leHQgZGlnaXQgaXMgPiA3IChvciA4KSwgdGhlIG51
bWJlciBpcyB0b28gYmlnLCBhbmQgd2Ugd2lsbAorICAgICAgICAgKiByZXR1cm4gYSByYW5nZSBl
cnJvci4KKyAgICAgICAgICoKKyAgICAgICAgICogU2V0IGFueSBpZiBhbnkgYGRpZ2l0cycgY29u
c3VtZWQ7IG1ha2UgaXQgbmVnYXRpdmUgdG8gaW5kaWNhdGUKKyAgICAgICAgICogb3ZlcmZsb3cu
CisgICAgICAgICAqLworICAgICAgICBxYmFzZSA9ICh1bnNpZ25lZCliYXNlOworICAgICAgICBj
dXRvZmYgPSBuZWcgPyAodWludDY0X3QpLShMTE9OR19NSU4gKyBMTE9OR19NQVgpICsgTExPTkdf
TUFYIDogTExPTkdfTUFYOworICAgICAgICBjdXRsaW0gPSBjdXRvZmYgJSBxYmFzZTsKKyAgICAg
ICAgY3V0b2ZmIC89IHFiYXNlOworICAgICAgICBmb3IgKGFjYyA9IDAsIGFueSA9IDA7OyBjID0g
KnMrKykgeworICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0KGMpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNh
bHBoYShjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgLT0gaXN1cHBlcihjKSA/ICdBJyAt
IDEwIDogJ2EnIC0gMTA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gYmFzZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChhbnkgPCAwIHx8IGFjYyA+
IGN1dG9mZiB8fCAoYWNjID09IGN1dG9mZiAmJiBjID4gY3V0bGltKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFueSA9IC0xOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgYW55ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYyAqPSBxYmFz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYyArPSBjOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoaSA8IHByZWNpc2lvbi0tKSB7Ci0gICAgICAg
IGlmIChidWYgPD0gZW5kKQotICAgICAgICAgICAgKmJ1ZiA9ICcwJzsKLSAgICAgICAgKytidWY7
Ci0gICAgfQotICAgIHdoaWxlIChpLS0gPiAwKSB7Ci0gICAgICAgIGlmIChidWYgPD0gZW5kKQot
ICAgICAgICAgICAgKmJ1ZiA9IHRtcFtpXTsKLSAgICAgICAgKytidWY7Ci0gICAgfQotICAgIHdo
aWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIGlmIChidWYgPD0gZW5kKQotICAgICAgICAgICAg
KmJ1ZiA9ICcgJzsKLSAgICAgICAgKytidWY7Ci0gICAgfQotICAgIHJldHVybiBidWY7CisgICAg
ICAgIGlmIChhbnkgPCAwKSB7CisgICAgICAgICAgICAgICAgYWNjID0gbmVnID8gTExPTkdfTUlO
IDogTExPTkdfTUFYOworICAgICAgICB9IGVsc2UgaWYgKG5lZykKKyAgICAgICAgICAgICAgICBh
Y2MgPSAtYWNjOworICAgICAgICBpZiAoZW5kcHRyICE9IDApCisgICAgICAgICAgICAgICAgKmVu
ZHB0ciA9IF9fREVDT05TVChjaGFyICosIGFueSA/IHMgLSAxIDogbnB0cik7CisgICAgICAgIHJl
dHVybiAoYWNjKTsKIH0KIAotLyoqCi0qIHZzbnByaW50ZiAtIEZvcm1hdCBhIHN0cmluZyBhbmQg
cGxhY2UgaXQgaW4gYSBidWZmZXIKLSogQGJ1ZjogVGhlIGJ1ZmZlciB0byBwbGFjZSB0aGUgcmVz
dWx0IGludG8KLSogQHNpemU6IFRoZSBzaXplIG9mIHRoZSBidWZmZXIsIGluY2x1ZGluZyB0aGUg
dHJhaWxpbmcgbnVsbCBzcGFjZQotKiBAZm10OiBUaGUgZm9ybWF0IHN0cmluZyB0byB1c2UKLSog
QGFyZ3M6IEFyZ3VtZW50cyBmb3IgdGhlIGZvcm1hdCBzdHJpbmcKLSoKLSogQ2FsbCB0aGlzIGZ1
bmN0aW9uIGlmIHlvdSBhcmUgYWxyZWFkeSBkZWFsaW5nIHdpdGggYSB2YV9saXN0LgotKiBZb3Ug
cHJvYmFibHkgd2FudCBzbnByaW50ZiBpbnN0ZWFkLgorLyoKKyAqIENvbnZlcnQgYSBzdHJpbmcg
dG8gYW4gdW5zaWduZWQgcXVhZCBpbnRlZ2VyLgorICoKKyAqIElnbm9yZXMgYGxvY2FsZScgc3R1
ZmYuICBBc3N1bWVzIHRoYXQgdGhlIHVwcGVyIGFuZCBsb3dlciBjYXNlCisgKiBhbHBoYWJldHMg
YW5kIGRpZ2l0cyBhcmUgZWFjaCBjb250aWd1b3VzLgogICovCi1pbnQgdnNucHJpbnRmKGNoYXIg
KmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQordWludDY0
X3QKK3N0cnRvdXEoY29uc3QgY2hhciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpCiB7
Ci0gICAgaW50IGxlbjsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbnVtOwotICAgIGludCBpLCBi
YXNlOwotICAgIGNoYXIgKnN0ciwgKmVuZCwgYzsKLSAgICBjb25zdCBjaGFyICpzOwotCi0gICAg
aW50IGZsYWdzOyAgICAgICAgICAvKiBmbGFncyB0byBudW1iZXIoKSAqLwotCi0gICAgaW50IGZp
ZWxkX3dpZHRoOyAgICAvKiB3aWR0aCBvZiBvdXRwdXQgZmllbGQgKi8KLSAgICBpbnQgcHJlY2lz
aW9uOyAgICAgICAgICAgICAgLyogbWluLiAjIG9mIGRpZ2l0cyBmb3IgaW50ZWdlcnM7IG1heAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgY2hhcnMgZm9yIGZy
b20gc3RyaW5nICovCi0gICAgaW50IHF1YWxpZmllcjsgICAgICAgICAgICAgIC8qICdoJywgJ2wn
LCBvciAnTCcgZm9yIGludGVnZXIgZmllbGRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qICd6JyBzdXBwb3J0IGFkZGVkIDIzLzcvMTk5OSBTLkguICAgICovCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICd6JyBjaGFuZ2VkIHRvICdaJyAtLWRhdmlkbSAx
LzI1Lzk5ICovCi0KLSAgICBzdHIgPSBidWY7Ci0gICAgZW5kID0gYnVmICsgc2l6ZSAtIDE7Ci0K
LSAgICBpZiAoZW5kIDwgYnVmIC0gMSkgewotICAgICAgICBlbmQgPSAoKHZvaWQgKikgLTEpOwot
ICAgICAgICBzaXplID0gZW5kIC0gYnVmICsgMTsKLSAgICB9Ci0KLSAgICBmb3IgKDsgKmZtdCA7
ICsrZm10KSB7Ci0gICAgICAgIGlmICgqZm10ICE9ICclJykgewotICAgICAgICAgICAgaWYgKHN0
ciA8PSBlbmQpCi0gICAgICAgICAgICAgICAgKnN0ciA9ICpmbXQ7Ci0gICAgICAgICAgICArK3N0
cjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogcHJvY2Vz
cyBmbGFncyAqLwotICAgICAgICBmbGFncyA9IDA7Ci0gICAgcmVwZWF0OgotICAgICAgICArK2Zt
dDsgICAgICAgICAgLyogdGhpcyBhbHNvIHNraXBzIGZpcnN0ICclJyAqLwotICAgICAgICBzd2l0
Y2ggKCpmbXQpIHsKLSAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IExFRlQ7IGdvdG8gcmVwZWF0
OwotICAgICAgICBjYXNlICcrJzogZmxhZ3MgfD0gUExVUzsgZ290byByZXBlYXQ7Ci0gICAgICAg
IGNhc2UgJyAnOiBmbGFncyB8PSBTUEFDRTsgZ290byByZXBlYXQ7Ci0gICAgICAgIGNhc2UgJyMn
OiBmbGFncyB8PSBTUEVDSUFMOyBnb3RvIHJlcGVhdDsKLSAgICAgICAgY2FzZSAnMCc6IGZsYWdz
IHw9IFpFUk9QQUQ7IGdvdG8gcmVwZWF0OwotICAgICAgICB9Ci0KLSAgICAgICAgLyogZ2V0IGZp
ZWxkIHdpZHRoICovCi0gICAgICAgIGZpZWxkX3dpZHRoID0gLTE7Ci0gICAgICAgIGlmIChpc2Rp
Z2l0KCpmbXQpKQotICAgICAgICAgICAgZmllbGRfd2lkdGggPSBza2lwX2F0b2koJmZtdCk7Ci0g
ICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJyonKSB7Ci0gICAgICAgICAgICArK2ZtdDsKLSAgICAg
ICAgICAgIC8qIGl0J3MgdGhlIG5leHQgYXJndW1lbnQgKi8KLSAgICAgICAgICAgIGZpZWxkX3dp
ZHRoID0gdmFfYXJnKGFyZ3MsIGludCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRfd2lkdGggPCAw
KSB7Ci0gICAgICAgICAgICAgICAgZmllbGRfd2lkdGggPSAtZmllbGRfd2lkdGg7Ci0gICAgICAg
ICAgICAgICAgZmxhZ3MgfD0gTEVGVDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIC8qIGdldCB0aGUgcHJlY2lzaW9uICovCi0gICAgICAgIHByZWNpc2lvbiA9IC0xOwotICAg
ICAgICBpZiAoKmZtdCA9PSAnLicpIHsKLSAgICAgICAgICAgICsrZm10OwotICAgICAgICAgICAg
aWYgKGlzZGlnaXQoKmZtdCkpCi0gICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gc2tpcF9hdG9p
KCZmbXQpOwotICAgICAgICAgICAgZWxzZSBpZiAoKmZtdCA9PSAnKicpIHsKLSAgICAgICAgICAg
ICAgICArK2ZtdDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXQncyB0aGUgbmV4dCBh
cmd1bWVudCAqLwotICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IHZhX2FyZyhhcmdzLCBpbnQp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHByZWNpc2lvbiA8IDApCi0gICAgICAg
ICAgICAgICAgcHJlY2lzaW9uID0gMDsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IG5wdHI7Cisg
ICAgICAgIHVpbnQ2NF90IGFjYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOworICAgICAgICB1
aW50NjRfdCBxYmFzZSwgY3V0b2ZmOworICAgICAgICBpbnQgbmVnLCBhbnksIGN1dGxpbTsKKwor
ICAgICAgICAvKgorICAgICAgICAgKiBTZWUgc3RydG9xIGZvciBjb21tZW50cyBhcyB0byB0aGUg
bG9naWMgdXNlZC4KKyAgICAgICAgICovCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBj
ID0gKnMrKzsKKyAgICAgICAgfSB3aGlsZSAoaXNzcGFjZShjKSk7CisgICAgICAgIGlmIChjID09
ICctJykgeworICAgICAgICAgICAgICAgIG5lZyA9IDE7CisgICAgICAgICAgICAgICAgYyA9ICpz
Kys7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmVnID0gMDsKKyAgICAgICAg
ICAgICAgICBpZiAoYyA9PSAnKycpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsK
ICAgICAgICAgfQotCi0gICAgICAgIC8qIGdldCB0aGUgY29udmVyc2lvbiBxdWFsaWZpZXIgKi8K
LSAgICAgICAgcXVhbGlmaWVyID0gLTE7Ci0gICAgICAgIGlmICgqZm10ID09ICdoJyB8fCAqZm10
ID09ICdsJyB8fCAqZm10ID09ICdMJyB8fCAqZm10ID09J1onIHx8ICpmbXQgPT0gJ3onKSB7Ci0g
ICAgICAgICAgICBxdWFsaWZpZXIgPSAqZm10OwotICAgICAgICAgICAgKytmbXQ7Ci0gICAgICAg
ICAgICBpZiAocXVhbGlmaWVyID09ICdsJyAmJiAqZm10ID09ICdsJykgewotICAgICAgICAgICAg
ICAgIHF1YWxpZmllciA9ICdMJzsKLSAgICAgICAgICAgICAgICArK2ZtdDsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAocXVhbGlmaWVyID09ICd6JykgewotICAgICAgICAgICAgICAgIHF1YWxpZmll
ciA9ICdaJzsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKChiYXNlID09IDAgfHwgYmFzZSA9
PSAxNikgJiYKKyAgICAgICAgICAgIGMgPT0gJzAnICYmICgqcyA9PSAneCcgfHwgKnMgPT0gJ1gn
KSkgeworICAgICAgICAgICAgICAgIGMgPSBzWzFdOworICAgICAgICAgICAgICAgIHMgKz0gMjsK
KyAgICAgICAgICAgICAgICBiYXNlID0gMTY7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCpmbXQg
PT0gJ3EnKSB7Ci0gICAgICAgICAgICBxdWFsaWZpZXIgPSAnTCc7Ci0gICAgICAgICAgICArK2Zt
dDsKKyAgICAgICAgaWYgKGJhc2UgPT0gMCkKKyAgICAgICAgICAgICAgICBiYXNlID0gYyA9PSAn
MCcgPyA4IDogMTA7CisgICAgICAgIHFiYXNlID0gKHVuc2lnbmVkKWJhc2U7CisgICAgICAgIGN1
dG9mZiA9ICh1aW50NjRfdClVTExPTkdfTUFYIC8gcWJhc2U7CisgICAgICAgIGN1dGxpbSA9ICh1
aW50NjRfdClVTExPTkdfTUFYICUgcWJhc2U7CisgICAgICAgIGZvciAoYWNjID0gMCwgYW55ID0g
MDs7IGMgPSAqcysrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc2FzY2lpKGMpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykp
CisgICAgICAgICAgICAgICAgICAgICAgICBjIC09ICcwJzsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChpc2FscGhhKGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSBpc3VwcGVyKGMp
ID8gJ0EnIC0gMTAgOiAnYScgLSAxMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoYyA+PSBiYXNlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGFueSA8IDAg
fHwgYWNjID4gY3V0b2ZmIHx8IChhY2MgPT0gY3V0b2ZmICYmIGMgPiBjdXRsaW0pKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYW55ID0gLTE7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhbnkgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgYWNj
ICo9IHFiYXNlOworICAgICAgICAgICAgICAgICAgICAgICAgYWNjICs9IGM7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmIChhbnkgPCAwKSB7CisgICAgICAgICAgICAg
ICAgYWNjID0gVUxMT05HX01BWDsKKyAgICAgICAgfSBlbHNlIGlmIChuZWcpCisgICAgICAgICAg
ICAgICAgYWNjID0gLWFjYzsKKyAgICAgICAgaWYgKGVuZHB0ciAhPSAwKQorICAgICAgICAgICAg
ICAgICplbmRwdHIgPSBfX0RFQ09OU1QoY2hhciAqLCBhbnkgPyBzIC0gMSA6IG5wdHIpOworICAg
ICAgICByZXR1cm4gKGFjYyk7Cit9CiAKLSAgICAgICAgLyogZGVmYXVsdCBiYXNlICovCi0gICAg
ICAgIGJhc2UgPSAxMDsKLQotICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKLSAgICAgICAgY2FzZSAn
Yyc6Ci0gICAgICAgICAgICBpZiAoIShmbGFncyAmIExFRlQpKSB7Ci0gICAgICAgICAgICAgICAg
d2hpbGUgKC0tZmllbGRfd2lkdGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdHIg
PD0gZW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciA9ICcgJzsKLSAgICAgICAgICAg
ICAgICAgICAgKytzdHI7CisvKgorICogU2NhbGVkIGRvd24gdmVyc2lvbiBvZiBwcmludGYoMyku
CisgKi8KK2ludAordnNucHJpbnRmKGNoYXIgKnN0ciwgc2l6ZV90IHNpemUsIGNoYXIgY29uc3Qg
KmZtdCwgdmFfbGlzdCBhcCkKK3sKKyNkZWZpbmUgUENIQVIoYykgeyBpZiAoc2l6ZSA+PSAyKSB7
ICpzdHIrKyA9IGM7IHNpemUtLTsgfSByZXR2YWwrKzsgfQorICAgICAgICBjaGFyIG5idWZbTUFY
TkJVRl07CisgICAgICAgIGNvbnN0IGNoYXIgKnAsICpwZXJjZW50OworICAgICAgICBpbnQgY2gs
IG47CisgICAgICAgIHVpbnRtYXhfdCBudW07CisgICAgICAgIGludCBiYXNlLCBsZmxhZywgcWZs
YWcsIHRtcCwgd2lkdGgsIGxhZGp1c3QsIHNoYXJwZmxhZywgbmVnLCBzaWduLCBkb3Q7CisgICAg
ICAgIGludCBjZmxhZywgaGZsYWcsIGpmbGFnLCB0ZmxhZywgemZsYWc7CisgICAgICAgIGludCBk
d2lkdGgsIHVwcGVyOworICAgICAgICBjaGFyIHBhZGM7CisgICAgICAgIGludCBzdG9wID0gMCwg
cmV0dmFsID0gMDsKKworICAgICAgICBudW0gPSAwOworCisgICAgICAgIGlmIChmbXQgPT0gTlVM
TCkKKyAgICAgICAgICAgICAgICBmbXQgPSAiKGZtdCBudWxsKVxuIjsKKworICAgICAgICBmb3Ig
KDs7KSB7CisgICAgICAgICAgICAgICAgcGFkYyA9ICcgJzsKKyAgICAgICAgICAgICAgICB3aWR0
aCA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKChjaCA9ICh1X2NoYXIpKmZtdCsrKSAhPSAn
JScgfHwgc3RvcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICdcMCcpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPj0gMSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAnXDAnOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJldHZhbCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUihjaCk7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSB2
YV9hcmcoYXJncywgaW50KTsKLSAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQotICAgICAgICAg
ICAgICAgICpzdHIgPSBjOwotICAgICAgICAgICAgKytzdHI7Ci0gICAgICAgICAgICB3aGlsZSAo
LS1maWVsZF93aWR0aCA+IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RyIDw9IGVuZCkKLSAg
ICAgICAgICAgICAgICAgICAgKnN0ciA9ICcgJzsKLSAgICAgICAgICAgICAgICArK3N0cjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGNhc2UgJ3MnOgot
ICAgICAgICAgICAgcyA9IHZhX2FyZyhhcmdzLCBjaGFyICopOwotICAgICAgICAgICAgaWYgKCFz
KQotICAgICAgICAgICAgICAgIHMgPSAiPE5VTEw+IjsKLQotICAgICAgICAgICAgbGVuID0gc3Ry
bmxlbihzLCBwcmVjaXNpb24pOwotCi0gICAgICAgICAgICBpZiAoIShmbGFncyAmIExFRlQpKSB7
Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGxlbiA8IGZpZWxkX3dpZHRoLS0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3Ry
ID0gJyAnOwotICAgICAgICAgICAgICAgICAgICArK3N0cjsKKyAgICAgICAgICAgICAgICBwZXJj
ZW50ID0gZm10IC0gMTsKKyAgICAgICAgICAgICAgICBxZmxhZyA9IDA7IGxmbGFnID0gMDsgbGFk
anVzdCA9IDA7IHNoYXJwZmxhZyA9IDA7IG5lZyA9IDA7CisgICAgICAgICAgICAgICAgc2lnbiA9
IDA7IGRvdCA9IDA7IGR3aWR0aCA9IDA7IHVwcGVyID0gMDsKKyAgICAgICAgICAgICAgICBjZmxh
ZyA9IDA7IGhmbGFnID0gMDsgamZsYWcgPSAwOyB0ZmxhZyA9IDA7IHpmbGFnID0gMDsKK3Jlc3dp
dGNoOiAgICAgICBzd2l0Y2ggKGNoID0gKHVfY2hhcikqZm10KyspIHsKKyAgICAgICAgICAgICAg
ICBjYXNlICcuJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdCA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJyMnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhcnBmbGFnID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gcmVzd2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAnKyc6CisgICAgICAg
ICAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cmVzd2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAnLSc6CisgICAgICAgICAgICAgICAgICAg
ICAgICBsYWRqdXN0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7
CisgICAgICAgICAgICAgICAgY2FzZSAnJSc6CisgICAgICAgICAgICAgICAgICAgICAgICBQQ0hB
UihjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlICcqJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG90KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gdmFfYXJnKGFwLCBpbnQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGFkanVzdCA9ICFsYWRqdXN0OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd2lkdGggPSB2YV9hcmcoYXAsIGludCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHJlc3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFkb3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkYyA9
ICcwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlICcxJzogY2FzZSAn
Mic6IGNhc2UgJzMnOiBjYXNlICc0JzoKKyAgICAgICAgICAgICAgICBjYXNlICc1JzogY2FzZSAn
Nic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAobiA9IDA7OyArK2ZtdCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG4gPSBuICogMTAgKyBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaCA9ICpmbXQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgJzAnIHx8IGNoID4gJzknKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb3QpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3aWR0aCA9IG47CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0g
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CisgICAgICAgICAgICAg
ICAgY2FzZSAnYyc6CisgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUih2YV9hcmcoYXAsIGlu
dCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAnZCc6CisgICAgICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX3NpZ247CisgICAgICAgICAgICAgICAgY2FzZSAn
aCc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGZsYWcpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGZsYWcgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGZsYWcgPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byByZXN3aXRjaDsKKyAgICAgICAgICAgICAgICBjYXNlICdqJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGpmbGFnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVz
d2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAnbCc6CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobGZsYWcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZsYWcgPSAw
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxZmxhZyA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZs
YWcgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKyAgICAgICAg
ICAgICAgICBjYXNlICduJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqZmxhZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIGludG1heF90ICopKSA9
IHJldHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHFmbGFnKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHZhX2FyZyhhcCwgaW50NjRfdCAqKSkgPSByZXR2
YWw7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsZmxhZykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIGxvbmcgKikpID0gcmV0dmFsOworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoemZsYWcpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICoodmFfYXJnKGFwLCBzaXplX3QgKikpID0gcmV0dmFsOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaGZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICoodmFfYXJnKGFwLCBzaG9ydCAqKSkgPSByZXR2YWw7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChjZmxhZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Kih2YV9hcmcoYXAsIGNoYXIgKikpID0gcmV0dmFsOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHZhX2FyZyhhcCwgaW50ICop
KSA9IHJldHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9ub3NpZ247CisgICAgICAgICAgICAgICAgY2Fz
ZSAncCc6CisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzaGFycGZsYWcgPSAod2lkdGggPT0gMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzaWduID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9ICh1aW50cHRyX3Qp
dmFfYXJnKGFwLCB2b2lkICopOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBudW1iZXI7
CisgICAgICAgICAgICAgICAgY2FzZSAncSc6CisgICAgICAgICAgICAgICAgICAgICAgICBxZmxh
ZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgICAg
ICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gaGFuZGxlX3NpZ247CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhh
bmRsZV9ub3NpZ247CisgICAgICAgICAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAgICAg
ICAgICAgICBwID0gdmFfYXJnKGFwLCBjaGFyICopOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9ICIobnVs
bCkiOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkb3QpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG4gPSBzdHJsZW4gKHApOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgZHdp
ZHRoICYmIHBbbl07IG4rKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggLT0gbjsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYWRqdXN0ICYmIHdpZHRoID4gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIocGFkYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAobi0tKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUigq
cCsrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYWRqdXN0ICYmIHdpZHRoID4gMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIocGFkYyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICd0JzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRmbGFnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cmVzd2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9ub3Np
Z247CisgICAgICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgICAgICAgICB1
cHBlciA9IDE7CisgICAgICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9ub3Np
Z247CisgICAgICAgICAgICAgICAgY2FzZSAneSc6CisgICAgICAgICAgICAgICAgICAgICAgICBi
YXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gaGFuZGxlX3NpZ247CisgICAgICAgICAgICAgICAgY2FzZSAneic6
CisgICAgICAgICAgICAgICAgICAgICAgICB6ZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHJlc3dpdGNoOworaGFuZGxlX25vc2lnbjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpZ24gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpmbGFnKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIHVpbnRtYXhfdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxZmxhZykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCB1aW50NjRfdCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICh0ZmxhZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVtID0gdmFfYXJnKGFwLCBwdHJkaWZmX3QpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobGZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZh
X2FyZyhhcCwgdV9sb25nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHpmbGFn
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIHNpemVf
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoZmxhZykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtID0gKHVuc2lnbmVkIHNob3J0KXZhX2FyZyhhcCwgaW50
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNmbGFnKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudW0gPSAodV9jaGFyKXZhX2FyZyhhcCwgaW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVtID0gdmFfYXJnKGFwLCB1X2ludCk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG51
bWJlcjsKK2hhbmRsZV9zaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpmbGFnKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIGludG1heF90
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHFmbGFnKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIGludDY0X3QpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodGZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bSA9IHZhX2FyZyhhcCwgcHRyZGlmZl90KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGxmbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0g
PSB2YV9hcmcoYXAsIGxvbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoemZs
YWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgc3Np
emVfdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoZmxhZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gKHNob3J0KXZhX2FyZyhhcCwgaW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNmbGFnKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudW0gPSAoY2hhcil2YV9hcmcoYXAsIGludCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZh
X2FyZyhhcCwgaW50KTsKK251bWJlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaWdu
ICYmIChpbnRtYXhfdCludW0gPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5lZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IC0oaW50bWF4
X3QpbnVtOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgcCA9IGtzcHJpbnRuKG5idWYsIG51bSwgYmFzZSwgJm4sIHVwcGVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRtcCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcnBm
bGFnICYmIG51bSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChi
YXNlID09IDgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKys7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UgPT0gMTYpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wICs9IDI7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVnKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXArKzsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFsYWRqdXN0ICYmIHBhZGMgPT0gJzAnKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkd2lkdGggPSB3aWR0aCAtIHRtcDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHdpZHRoIC09IHRtcCArIChkd2lkdGggPiBuID8gZHdpZHRoIDogbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkd2lkdGggLT0gbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFk
anVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0gPiAw
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcgJyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVnKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQQ0hBUignLScpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXJwZmxh
ZyAmJiBudW0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFz
ZSA9PSA4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIo
JzAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiYXNlID09
IDE2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJzAn
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUigneCcpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZHdpZHRoLS0gPiAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUignMCcpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoKnApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFS
KCpwLS0pOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFkanVzdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0gPiAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcgJyk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAocGVyY2VudCA8IGZtdCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUENIQVIoKnBlcmNlbnQrKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICAgICAgICAgICAgICogU2luY2Ugd2UgaWdub3JlIGEgZm9ybWF0dGluZyBh
cmd1bWVudCBpdCBpcyBubworICAgICAgICAgICAgICAgICAgICAgICAgICogbG9uZ2VyIHNhZmUg
dG8gb2JleSB0aGUgcmVtYWluaW5nIGZvcm1hdHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAqIGFyZ3VtZW50cyBhcyB0aGUgYXJndW1lbnRzIHdpbGwgbm8gbG9uZ2VyIG1hdGNoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKiB0aGUgZm9ybWF0IHNwZWNzLgorICAgICAgICAgICAgICAg
ICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBzdG9wID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgewotICAgICAgICAgICAgICAg
IGlmIChzdHIgPD0gZW5kKQotICAgICAgICAgICAgICAgICAgICAqc3RyID0gKnM7Ci0gICAgICAg
ICAgICAgICAgKytzdHI7ICsrczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlIChs
ZW4gPCBmaWVsZF93aWR0aC0tKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCi0g
ICAgICAgICAgICAgICAgICAgICpzdHIgPSAnICc7Ci0gICAgICAgICAgICAgICAgKytzdHI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjYXNlICdwJzoK
LSAgICAgICAgICAgIGlmIChmaWVsZF93aWR0aCA9PSAtMSkgewotICAgICAgICAgICAgICAgIGZp
ZWxkX3dpZHRoID0gMipzaXplb2Yodm9pZCAqKTsKLSAgICAgICAgICAgICAgICBmbGFncyB8PSBa
RVJPUEFEOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyID0gbnVtYmVyKHN0ciwgZW5k
LAotICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSB2YV9hcmcoYXJncywg
dm9pZCAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgZmllbGRfd2lkdGgsIHByZWNp
c2lvbiwgZmxhZ3MpOwotICAgICAgICAgICAgY29udGludWU7Ci0KLQotICAgICAgICBjYXNlICdu
JzoKLSAgICAgICAgICAgIGlmIChxdWFsaWZpZXIgPT0gJ2wnKSB7Ci0gICAgICAgICAgICAgICAg
bG9uZyAqIGlwID0gdmFfYXJnKGFyZ3MsIGxvbmcgKik7Ci0gICAgICAgICAgICAgICAgKmlwID0g
KHN0ciAtIGJ1Zik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAnWicpIHsK
LSAgICAgICAgICAgICAgICBzaXplX3QgKiBpcCA9IHZhX2FyZyhhcmdzLCBzaXplX3QgKik7Ci0g
ICAgICAgICAgICAgICAgKmlwID0gKHN0ciAtIGJ1Zik7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGludCAqIGlwID0gdmFfYXJnKGFyZ3MsIGludCAqKTsKLSAgICAgICAg
ICAgICAgICAqaXAgPSAoc3RyIC0gYnVmKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQp
Ci0gICAgICAgICAgICAgICAgKnN0ciA9ICclJzsKLSAgICAgICAgICAgICsrc3RyOwotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIC8qIGludGVnZXIgbnVtYmVyIGZvcm1hdHMg
LSBzZXQgdXAgdGhlIGZsYWdzIGFuZCAiYnJlYWsiICovCi0gICAgICAgIGNhc2UgJ28nOgotICAg
ICAgICAgICAgYmFzZSA9IDg7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICdY
JzoKLSAgICAgICAgICAgIGZsYWdzIHw9IExBUkdFOwotICAgICAgICBjYXNlICd4JzoKLSAgICAg
ICAgICAgIGJhc2UgPSAxNjsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgJ2Qn
OgotICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgIGZsYWdzIHw9IFNJR047Ci0gICAgICAg
IGNhc2UgJ3UnOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGlmIChzdHIgPD0gZW5kKQotICAgICAgICAgICAgICAgICpzdHIgPSAnJSc7Ci0gICAg
ICAgICAgICArK3N0cjsKLSAgICAgICAgICAgIGlmICgqZm10KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHN0ciA8PSBlbmQpCi0gICAgICAgICAgICAgICAgICAgICpzdHIgPSAqZm10OwotICAgICAg
ICAgICAgICAgICsrc3RyOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAt
LWZtdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChxdWFsaWZpZXIgPT0gJ0wnKQotICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFy
Z3MsIGxvbmcgbG9uZyk7Ci0gICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSAnbCcpIHsKLSAg
ICAgICAgICAgIG51bSA9IHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBsb25nKTsKLSAgICAgICAgICAg
IGlmIChmbGFncyAmIFNJR04pCi0gICAgICAgICAgICAgICAgbnVtID0gKHNpZ25lZCBsb25nKSBu
dW07Ci0gICAgICAgIH0gZWxzZSBpZiAocXVhbGlmaWVyID09ICdaJykgewotICAgICAgICAgICAg
bnVtID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocXVhbGlmaWVy
ID09ICdoJykgewotICAgICAgICAgICAgbnVtID0gKHVuc2lnbmVkIHNob3J0KSB2YV9hcmcoYXJn
cywgaW50KTsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNJR04pCi0gICAgICAgICAgICAgICAg
bnVtID0gKHNpZ25lZCBzaG9ydCkgbnVtOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bnVtID0gdmFfYXJnKGFyZ3MsIHVuc2lnbmVkIGludCk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3Mg
JiBTSUdOKQotICAgICAgICAgICAgICAgIG51bSA9IChzaWduZWQgaW50KSBudW07Ci0gICAgICAg
IH0KLQotICAgICAgICBzdHIgPSBudW1iZXIoc3RyLCBlbmQsIG51bSwgYmFzZSwKLSAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkX3dpZHRoLCBwcmVjaXNpb24sIGZsYWdzKTsKLSAgICB9Ci0gICAg
aWYgKHN0ciA8PSBlbmQpCi0gICAgICAgICpzdHIgPSAnXDAnOwotICAgIGVsc2UgaWYgKHNpemUg
PiAwKQotICAgICAgICAvKiBkb24ndCB3cml0ZSBvdXQgYSBudWxsIGJ5dGUgaWYgdGhlIGJ1ZiBz
aXplIGlzIHplcm8gKi8KLSAgICAgICAgKmVuZCA9ICdcMCc7Ci0gICAgLyogdGhlIHRyYWlsaW5n
IG51bGwgYnl0ZSBkb2Vzbid0IGNvdW50IHRvd2FyZHMgdGhlIHRvdGFsCi0gICAgICogKytzdHI7
Ci0gICAgICovCi0gICAgcmV0dXJuIHN0ci1idWY7CisjdW5kZWYgUENIQVIKIH0KIAogLyoqCkBA
IC01NTIsMjIwICs2MzUsNTg3IEBAIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIg
KmZtdCwgLi4uKQogICAgIHJldHVybiBpOwogfQogCisvKgorICogRmlsbCBpbiB0aGUgZ2l2ZW4g
dGFibGUgZnJvbSB0aGUgc2NhbnNldCBhdCB0aGUgZ2l2ZW4gZm9ybWF0CisgKiAoanVzdCBhZnRl
ciBgWycpLiAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY2hhcmFjdGVyIHBhc3QgdGhlCisgKiBj
bG9zaW5nIGBdJy4gIFRoZSB0YWJsZSBoYXMgYSAxIHdoZXJldmVyIGNoYXJhY3RlcnMgc2hvdWxk
IGJlCisgKiBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNjYW5zZXQuCisgKi8KK3N0YXRpYyBjb25z
dCB1X2NoYXIgKgorX19zY2NsKGNoYXIgKnRhYiwgY29uc3QgdV9jaGFyICpmbXQpCit7CisgICAg
ICAgIGludCBjLCBuLCB2OworCisgICAgICAgIC8qIGZpcnN0IGBjbGVhcicgdGhlIHdob2xlIHRh
YmxlICovCisgICAgICAgIGMgPSAqZm10Kys7ICAgICAgICAgICAgIC8qIGZpcnN0IGNoYXIgaGF0
ID0+IG5lZ2F0ZWQgc2NhbnNldCAqLworICAgICAgICBpZiAoYyA9PSAnXicpIHsKKyAgICAgICAg
ICAgICAgICB2ID0gMTsgICAgICAgICAgLyogZGVmYXVsdCA9PiBhY2NlcHQgKi8KKyAgICAgICAg
ICAgICAgICBjID0gKmZtdCsrOyAgICAgLyogZ2V0IG5ldyBmaXJzdCBjaGFyICovCisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIHYgPSAwOyAgICAgICAgICAvKiBkZWZhdWx0ID0+IHJl
amVjdCAqLworCisgICAgICAgIC8qIFhYWDogV2lsbCBub3Qgd29yayBpZiBzaXplb2YodGFiKikg
PiBzaXplb2YoY2hhcikgKi8KKyAgICAgICAgZm9yIChuID0gMDsgbiA8IDI1NjsgbisrKQorICAg
ICAgICAgICAgICAgICAgICAgdGFiW25dID0gdjsgICAgICAgIC8qIG1lbXNldCh0YWIsIHYsIDI1
NikgKi8KKworICAgICAgICBpZiAoYyA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAoZm10
IC0gMSk7LyogZm9ybWF0IGVuZGVkIGJlZm9yZSBjbG9zaW5nIF0gKi8KKworICAgICAgICAvKgor
ICAgICAgICAgKiBOb3cgc2V0IHRoZSBlbnRyaWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFjdHVh
bCBzY2Fuc2V0CisgICAgICAgICAqIHRvIHRoZSBvcHBvc2l0ZSBvZiB0aGUgYWJvdmUuCisgICAg
ICAgICAqCisgICAgICAgICAqIFRoZSBmaXJzdCBjaGFyYWN0ZXIgbWF5IGJlICddJyAob3IgJy0n
KSB3aXRob3V0IGJlaW5nIHNwZWNpYWw7CisgICAgICAgICAqIHRoZSBsYXN0IGNoYXJhY3RlciBt
YXkgYmUgJy0nLgorICAgICAgICAgKi8KKyAgICAgICAgdiA9IDEgLSB2OworICAgICAgICBmb3Ig
KDs7KSB7CisgICAgICAgICAgICAgICAgdGFiW2NdID0gdjsgICAgICAgICAgICAgLyogdGFrZSBj
aGFyYWN0ZXIgYyAqLworZG9zd2l0Y2g6CisgICAgICAgICAgICAgICAgbiA9ICpmbXQrKzsgICAg
ICAgICAgICAgLyogYW5kIGV4YW1pbmUgdGhlIG5leHQgKi8KKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKG4pIHsKKworICAgICAgICAgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgIC8qIGZv
cm1hdCBlbmRlZCB0b28gc29vbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChm
bXQgLSAxKTsKKworICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgICAgICAg
ICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIEEgc2NhbnNldCBvZiB0aGUgZm9y
bQorICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICBbMDErLV0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqIGlzIGRlZmluZWQgYXMgYHRoZSBkaWdpdCAwLCB0aGUgZGlnaXQgMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBjaGFyYWN0ZXIgKywgdGhlIGNoYXJhY3RlciAt
JywgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgZWZmZWN0IG9mIGEgc2NhbnNl
dCBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgIFthLXpBLVowLTldCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLiAgVGhl
IFY3IFVuaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHNjYW5mIHRyZWF0cyBgYS16JyBh
cyBgdGhlIGxldHRlcnMgYSB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB6Jywg
YnV0IHRyZWF0cyBgYS1hJyBhcyBgdGhlIGxldHRlciBhLCB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqIGNoYXJhY3RlciAtLCBhbmQgdGhlIGxldHRlciBhJy4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBGb3IgY29tcGF0aWJpbGl0
eSwgdGhlIGAtJyBpcyBub3QgY29uc2lkZXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0
byBkZWZpbmUgYSByYW5nZSBpZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZworICAgICAgICAgICAg
ICAgICAgICAgICAgICogaXQgaXMgZWl0aGVyIGEgY2xvc2UgYnJhY2tldCAocmVxdWlyZWQgYnkg
QU5TSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIG9yIGlzIG5vdCBudW1lcmljYWxseSBn
cmVhdGVyIHRoYW4gdGhlIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICogd2Ug
anVzdCBzdG9yZWQgaW4gdGhlIHRhYmxlIChjKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAq
LworICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICpmbXQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobiA9PSAnXScgfHwgbiA8IGMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYyA9ICctJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAv
KiByZXN1bWUgdGhlIGZvcig7OykgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZtdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgLyogZmls
bCBpbiB0aGUgcmFuZ2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0YWJbKytjXSA9IHY7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IHdoaWxlIChjIDwgbik7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gbjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBBbGFzLCB0
aGUgVjcgVW5peCBzY2FuZiBhbHNvIHRyZWF0cyBmb3JtYXRzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgKiBzdWNoIGFzIFthLWMtZV0gYXMgYHRoZSBsZXR0ZXJzIGEgdGhyb3VnaCBlJy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgdG9vIGlzIHBlcm1pdHRlZCBieSB0aGUgc3Rh
bmRhcmQuLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gZG9zd2l0Y2g7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGNhc2UgJ10nOiAgICAgICAgICAgICAgIC8qIGVuZCBvZiBzY2Fuc2V0
ICovCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGZtdCk7CisKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAvKiBqdXN0IGFub3RoZXIgY2hhcmFjdGVyICov
CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBOT1RSRUFD
SEVEICovCit9CisKIC8qKgogICogdnNzY2FuZiAtIFVuZm9ybWF0IGEgYnVmZmVyIGludG8gYSBs
aXN0IG9mIGFyZ3VtZW50cwogICogQGJ1ZjoJaW5wdXQgYnVmZmVyCiAgKiBAZm10Oglmb3JtYXQg
b2YgYnVmZmVyCiAgKiBAYXJnczoJYXJndW1lbnRzCiAgKi8KLWludCB2c3NjYW5mKGNvbnN0IGNo
YXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIHZhX2xpc3QgYXJncykKKyNkZWZpbmUgQlVGICAg
ICAgICAgICAgIDMyICAgICAgLyogTWF4aW11bSBsZW5ndGggb2YgbnVtZXJpYyBzdHJpbmcuICov
CisKKy8qCisgKiBGbGFncyB1c2VkIGR1cmluZyBjb252ZXJzaW9uLgorICovCisjZGVmaW5lIExP
TkcgICAgICAgICAgICAweDAxICAgIC8qIGw6IGxvbmcgb3IgZG91YmxlICovCisjZGVmaW5lIFNI
T1JUICAgICAgICAgICAweDA0ICAgIC8qIGg6IHNob3J0ICovCisjZGVmaW5lIFNVUFBSRVNTICAg
ICAgICAweDA4ICAgIC8qIHN1cHByZXNzIGFzc2lnbm1lbnQgKi8KKyNkZWZpbmUgUE9JTlRFUiAg
ICAgICAgIDB4MTAgICAgLyogd2VpcmQgJXAgcG9pbnRlciAoYGZha2UgaGV4JykgKi8KKyNkZWZp
bmUgTk9TS0lQICAgICAgICAgIDB4MjAgICAgLyogZG8gbm90IHNraXAgYmxhbmtzICovCisjZGVm
aW5lIFFVQUQgICAgICAgICAgICAweDQwMAorI2RlZmluZSBTSE9SVFNIT1JUICAgICAgMHg0MDAw
ICAvKiogaGg6IGNoYXIgKi8KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgYXJlIHVzZWQgaW4gbnVt
ZXJpYyBjb252ZXJzaW9ucyBvbmx5OgorICogU0lHTk9LLCBORElHSVRTLCBEUFRPSywgYW5kIEVY
UE9LIGFyZSBmb3IgZmxvYXRpbmcgcG9pbnQ7CisgKiBTSUdOT0ssIE5ESUdJVFMsIFBGWE9LLCBh
bmQgTlpESUdJVFMgYXJlIGZvciBpbnRlZ3JhbC4KKyAqLworI2RlZmluZSBTSUdOT0sgICAgICAg
ICAgMHg0MCAgICAvKiArLy0gaXMgKHN0aWxsKSBsZWdhbCAqLworI2RlZmluZSBORElHSVRTICAg
ICAgICAgMHg4MCAgICAvKiBubyBkaWdpdHMgZGV0ZWN0ZWQgKi8KKworI2RlZmluZSBEUFRPSyAg
ICAgICAgICAgMHgxMDAgICAvKiAoZmxvYXQpIGRlY2ltYWwgcG9pbnQgaXMgc3RpbGwgbGVnYWwg
Ki8KKyNkZWZpbmUgRVhQT0sgICAgICAgICAgIDB4MjAwICAgLyogKGZsb2F0KSBleHBvbmVudCAo
ZSszLCBldGMpIHN0aWxsIGxlZ2FsICovCisKKyNkZWZpbmUgUEZYT0sgICAgICAgICAgIDB4MTAw
ICAgLyogMHggcHJlZml4IGlzIChzdGlsbCkgbGVnYWwgKi8KKyNkZWZpbmUgTlpESUdJVFMgICAg
ICAgIDB4MjAwICAgLyogbm8gemVybyBkaWdpdHMgZGV0ZWN0ZWQgKi8KKworLyoKKyAqIENvbnZl
cnNpb24gdHlwZXMuCisgKi8KKyNkZWZpbmUgQ1RfQ0hBUiAgICAgICAgIDAgICAgICAgLyogJWMg
Y29udmVyc2lvbiAqLworI2RlZmluZSBDVF9DQ0wgICAgICAgICAgMSAgICAgICAvKiAlWy4uLl0g
Y29udmVyc2lvbiAqLworI2RlZmluZSBDVF9TVFJJTkcgICAgICAgMiAgICAgICAvKiAlcyBjb252
ZXJzaW9uICovCisjZGVmaW5lIENUX0lOVCAgICAgICAgICAzICAgICAgIC8qIGludGVnZXIsIGku
ZS4sIHN0cnRvcSBvciBzdHJ0b3VxICovCit0eXBlZGVmIHVpbnQ2NF90ICgqY2NmbnR5cGUpKGNv
bnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKKworaW50Cit2c3NjYW5mKGNvbnN0IGNoYXIgKmlu
cCwgY2hhciBjb25zdCAqZm10MCwgdmFfbGlzdCBhcCkKIHsKLQljb25zdCBjaGFyICpzdHIgPSBi
dWY7Ci0JY2hhciAqbmV4dDsKLQljaGFyIGRpZ2l0OwotCWludCBudW0gPSAwOwotCWludCBxdWFs
aWZpZXI7Ci0JaW50IGJhc2U7Ci0JaW50IGZpZWxkX3dpZHRoOwotCWludCBpc19zaWduID0gMDsK
KyAgICAgICAgaW50IGlucjsKKyAgICAgICAgY29uc3QgdV9jaGFyICpmbXQgPSAoY29uc3QgdV9j
aGFyICopZm10MDsKKyAgICAgICAgaW50IGM7ICAgICAgICAgICAgICAgICAgLyogY2hhcmFjdGVy
IGZyb20gZm9ybWF0LCBvciBjb252ZXJzaW9uICovCisgICAgICAgIHNpemVfdCB3aWR0aDsgICAg
ICAgICAgIC8qIGZpZWxkIHdpZHRoLCBvciAwICovCisgICAgICAgIGNoYXIgKnA7ICAgICAgICAg
ICAgICAgIC8qIHBvaW50cyBpbnRvIGFsbCBraW5kcyBvZiBzdHJpbmdzICovCisgICAgICAgIGlu
dCBuOyAgICAgICAgICAgICAgICAgIC8qIGhhbmR5IGludGVnZXIgKi8KKyAgICAgICAgaW50IGZs
YWdzOyAgICAgICAgICAgICAgLyogZmxhZ3MgYXMgZGVmaW5lZCBhYm92ZSAqLworICAgICAgICBj
aGFyICpwMDsgICAgICAgICAgICAgICAvKiBzYXZlcyBvcmlnaW5hbCB2YWx1ZSBvZiBwIHdoZW4g
bmVjZXNzYXJ5ICovCisgICAgICAgIGludCBuYXNzaWduZWQ7ICAgICAgICAgIC8qIG51bWJlciBv
ZiBmaWVsZHMgYXNzaWduZWQgKi8KKyAgICAgICAgaW50IG5jb252ZXJzaW9uczsgICAgICAgLyog
bnVtYmVyIG9mIGNvbnZlcnNpb25zICovCisgICAgICAgIGludCBucmVhZDsgICAgICAgICAgICAg
IC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvbnN1bWVkIGZyb20gZnAgKi8KKyAgICAgICAgaW50
IGJhc2U7ICAgICAgICAgICAgICAgLyogYmFzZSBhcmd1bWVudCB0byBzdHJ0b3Evc3RydG91cSAq
LworICAgICAgICBjY2ZudHlwZSBjY2ZuOyAgICAgICAgICAvKiBjb252ZXJzaW9uIGZ1bmN0aW9u
IChzdHJ0b3Evc3RydG91cSkgKi8KKyAgICAgICAgY2hhciBjY2x0YWJbMjU2XTsgICAgICAgLyog
Y2hhcmFjdGVyIGNsYXNzIHRhYmxlIGZvciAlWy4uLl0gKi8KKyAgICAgICAgY2hhciBidWZbQlVG
XTsgICAgICAgICAgLyogYnVmZmVyIGZvciBudW1lcmljIGNvbnZlcnNpb25zICovCiAKLQl3aGls
ZSgqZm10ICYmICpzdHIpIHsKLQkJLyogc2tpcCBhbnkgd2hpdGUgc3BhY2UgaW4gZm9ybWF0ICov
Ci0JCS8qIHdoaXRlIHNwYWNlIGluIGZvcm1hdCBtYXRjaHMgYW55IGFtb3VudCBvZgotCQkgKiB3
aGl0ZSBzcGFjZSwgaW5jbHVkaW5nIG5vbmUsIGluIHRoZSBpbnB1dC4KLQkJICovCi0JCWlmIChp
c3NwYWNlKCpmbXQpKSB7Ci0JCQl3aGlsZSAoaXNzcGFjZSgqZm10KSkKLQkJCQkrK2ZtdDsKLQkJ
CXdoaWxlIChpc3NwYWNlKCpzdHIpKQotCQkJCSsrc3RyOwotCQl9CisgICAgICAgIC8qIGBiYXNl
Zml4JyBpcyB1c2VkIHRvIGF2b2lkIGBpZicgdGVzdHMgaW4gdGhlIGludGVnZXIgc2Nhbm5lciAq
LworICAgICAgICBzdGF0aWMgc2hvcnQgYmFzZWZpeFsxN10gPQorICAgICAgICAgICAgICAgIHsg
MTAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2
IH07CiAKLQkJLyogYW55dGhpbmcgdGhhdCBpcyBub3QgYSBjb252ZXJzaW9uIG11c3QgbWF0Y2gg
ZXhhY3RseSAqLwotCQlpZiAoKmZtdCAhPSAnJScgJiYgKmZtdCkgewotCQkJaWYgKCpmbXQrKyAh
PSAqc3RyKyspCi0JCQkJYnJlYWs7Ci0JCQljb250aW51ZTsKLQkJfQorICAgICAgICBpbnIgPSBz
dHJsZW4oaW5wKTsKIAotCQlpZiAoISpmbXQpCi0JCQlicmVhazsKLQkJKytmbXQ7Ci0JCQotCQkv
KiBza2lwIHRoaXMgY29udmVyc2lvbi4KLQkJICogYWR2YW5jZSBib3RoIHN0cmluZ3MgdG8gbmV4
dCB3aGl0ZSBzcGFjZQotCQkgKi8KLQkJaWYgKCpmbXQgPT0gJyonKSB7Ci0JCQl3aGlsZSAoIWlz
c3BhY2UoKmZtdCkgJiYgKmZtdCkKLQkJCQlmbXQrKzsKLQkJCXdoaWxlICghaXNzcGFjZSgqc3Ry
KSAmJiAqc3RyKQotCQkJCXN0cisrOwotCQkJY29udGludWU7Ci0JCX0KKyAgICAgICAgbmFzc2ln
bmVkID0gMDsKKyAgICAgICAgbmNvbnZlcnNpb25zID0gMDsKKyAgICAgICAgbnJlYWQgPSAwOwor
ICAgICAgICBiYXNlID0gMDsgICAgICAgICAgICAgICAvKiBYWFgganVzdCB0byBrZWVwIGdjYyBo
YXBweSAqLworICAgICAgICBjY2ZuID0gTlVMTDsgICAgICAgICAgICAvKiBYWFgganVzdCB0byBr
ZWVwIGdjYyBoYXBweSAqLworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgYyA9
ICpmbXQrKzsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChuYXNzaWduZWQpOworICAgICAgICAgICAgICAgIGlmIChpc3NwYWNlKGMp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5yID4gMCAmJiBpc3NwYWNlKCpp
bnApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCsrLCBpbnItLSwgaW5w
Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKGMgIT0gJyUnKQorICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBsaXRlcmFsOworICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKKyAgICAgICAgICAgICAg
ICBmbGFncyA9IDA7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBzd2l0
Y2ggb24gdGhlIGZvcm1hdC4gIGNvbnRpbnVlIGlmIGRvbmU7CisgICAgICAgICAgICAgICAgICog
YnJlYWsgb25jZSBmb3JtYXQgdHlwZSBpcyBkZXJpdmVkLgorICAgICAgICAgICAgICAgICAqLwor
YWdhaW46ICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7
CisgICAgICAgICAgICAgICAgY2FzZSAnJSc6CitsaXRlcmFsOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGluciA8PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IGlucHV0X2ZhaWx1cmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmlucCAhPSBjKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG1hdGNoX2ZhaWx1cmU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnItLSwgaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAg
ICBucmVhZCsrOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLQkJLyogZ2V0
IGZpZWxkIHdpZHRoICovCi0JCWZpZWxkX3dpZHRoID0gLTE7Ci0JCWlmIChpc2RpZ2l0KCpmbXQp
KQotCQkJZmllbGRfd2lkdGggPSBza2lwX2F0b2koJmZtdCk7CisgICAgICAgICAgICAgICAgY2Fz
ZSAnKic6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBTVVBQUkVTUzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47CisgICAgICAgICAgICAgICAgY2FzZSAnbCc6
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBMT05HKXsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfkxPTkc7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzIHw9IFFVQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBMT05HOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBhZ2Fp
bjsKKyAgICAgICAgICAgICAgICBjYXNlICdxJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzIHw9IFFVQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOworICAgICAg
ICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYg
U0hPUlQpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmPSB+U0hPUlQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFNIT1JUU0hPUlQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncyB8PSBTSE9SVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47CiAKLQkJLyogZ2V0IGNvbnZlcnNpb24gcXVh
bGlmaWVyICovCi0JCXF1YWxpZmllciA9IC0xOwotCQlpZiAoKmZtdCA9PSAnaCcgfHwgKmZtdCA9
PSAnbCcgfHwgKmZtdCA9PSAnTCcgfHwKLQkJICAgICpmbXQgPT0gJ1onIHx8ICpmbXQgPT0gJ3on
KSB7Ci0JCQlxdWFsaWZpZXIgPSAqZm10Kys7Ci0JCQlpZiAodW5saWtlbHkocXVhbGlmaWVyID09
ICpmbXQpKSB7Ci0JCQkJaWYgKHF1YWxpZmllciA9PSAnaCcpIHsKLQkJCQkJcXVhbGlmaWVyID0g
J0gnOwotCQkJCQlmbXQrKzsKLQkJCQl9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAnbCcpIHsKLQkJ
CQkJcXVhbGlmaWVyID0gJ0wnOwotCQkJCQlmbXQrKzsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJYmFz
ZSA9IDEwOwotCQlpc19zaWduID0gMDsKKyAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAn
MSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CisgICAgICAgICAgICAgICAgY2FzZSAn
NSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOgorICAgICAgICAgICAg
ICAgICAgICAgICAgd2lkdGggPSB3aWR0aCAqIDEwICsgYyAtICcwJzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gYWdhaW47CiAKLQkJaWYgKCEqZm10IHx8ICEqc3RyKQotCQkJYnJlYWs7
CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBDb252ZXJzaW9ucy4KKyAg
ICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGNh
c2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNjZm4gPSAoY2NmbnR5cGUpc3RydG9xOworICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLQkJc3dp
dGNoKCpmbXQrKykgewotCQljYXNlICdjJzoKLQkJewotCQkJY2hhciAqcyA9IChjaGFyICopIHZh
X2FyZyhhcmdzLGNoYXIqKTsKLQkJCWlmIChmaWVsZF93aWR0aCA9PSAtMSkKLQkJCQlmaWVsZF93
aWR0aCA9IDE7Ci0JCQlkbyB7Ci0JCQkJKnMrKyA9ICpzdHIrKzsKLQkJCX0gd2hpbGUgKC0tZmll
bGRfd2lkdGggPiAwICYmICpzdHIpOwotCQkJbnVtKys7Ci0JCX0KLQkJY29udGludWU7Ci0JCWNh
c2UgJ3MnOgotCQl7Ci0JCQljaGFyICpzID0gKGNoYXIgKikgdmFfYXJnKGFyZ3MsIGNoYXIgKik7
Ci0JCQlpZihmaWVsZF93aWR0aCA9PSAtMSkKLQkJCQlmaWVsZF93aWR0aCA9IElOVF9NQVg7Ci0J
CQkvKiBmaXJzdCwgc2tpcCBsZWFkaW5nIHdoaXRlIHNwYWNlIGluIGJ1ZmZlciAqLwotCQkJd2hp
bGUgKGlzc3BhY2UoKnN0cikpCi0JCQkJc3RyKys7Ci0KLQkJCS8qIG5vdyBjb3B5IHVudGlsIG5l
eHQgd2hpdGUgc3BhY2UgKi8KLQkJCXdoaWxlICgqc3RyICYmICFpc3NwYWNlKCpzdHIpICYmIGZp
ZWxkX3dpZHRoLS0pIHsKLQkJCQkqcysrID0gKnN0cisrOwotCQkJfQotCQkJKnMgPSAnXDAnOwot
CQkJbnVtKys7Ci0JCX0KLQkJY29udGludWU7Ci0JCWNhc2UgJ24nOgotCQkJLyogcmV0dXJuIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyICovCi0JCXsKLQkJCWludCAqaSA9IChpbnQg
Kil2YV9hcmcoYXJncyxpbnQqKTsKLQkJCSppID0gc3RyIC0gYnVmOwotCQl9Ci0JCWNvbnRpbnVl
OwotCQljYXNlICdvJzoKLQkJCWJhc2UgPSA4OwotCQkJYnJlYWs7Ci0JCWNhc2UgJ3gnOgotCQlj
YXNlICdYJzoKLQkJCWJhc2UgPSAxNjsKLQkJCWJyZWFrOwotCQljYXNlICdpJzoKKyAgICAgICAg
ICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDVF9JTlQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjY2ZuID0gKGNjZm50eXBlKXN0cnRvcTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2UgPSAwOwotCQljYXNlICdkJzoKLQkJCWlzX3NpZ24gPSAxOwot
CQljYXNlICd1JzoKLQkJCWJyZWFrOwotCQljYXNlICclJzoKLQkJCS8qIGxvb2tpbmcgZm9yICcl
JyBpbiBzdHIgKi8KLQkJCWlmICgqc3RyKysgIT0gJyUnKSAKLQkJCQlyZXR1cm4gbnVtOwotCQkJ
Y29udGludWU7Ci0JCWRlZmF1bHQ6Ci0JCQkvKiBpbnZhbGlkIGZvcm1hdDsgc3RvcCBoZXJlICov
Ci0JCQlyZXR1cm4gbnVtOwotCQl9Ci0KLQkJLyogaGF2ZSBzb21lIHNvcnQgb2YgaW50ZWdlciBj
b252ZXJzaW9uLgotCQkgKiBmaXJzdCwgc2tpcCB3aGl0ZSBzcGFjZSBpbiBidWZmZXIuCi0JCSAq
LwotCQl3aGlsZSAoaXNzcGFjZSgqc3RyKSkKLQkJCXN0cisrOwotCi0JCWRpZ2l0ID0gKnN0cjsK
LQkJaWYgKGlzX3NpZ24gJiYgZGlnaXQgPT0gJy0nKQotCQkJZGlnaXQgPSAqKHN0ciArIDEpOwot
Ci0JCWlmICghZGlnaXQKLSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gMTYgJiYgIWlz
eGRpZ2l0KGRpZ2l0KSkKLSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gMTAgJiYgIWlz
ZGlnaXQoZGlnaXQpKQotICAgICAgICAgICAgICAgICAgICB8fCAoYmFzZSA9PSA4ICYmICghaXNk
aWdpdChkaWdpdCkgfHwgZGlnaXQgPiAnNycpKQotICAgICAgICAgICAgICAgICAgICB8fCAoYmFz
ZSA9PSAwICYmICFpc2RpZ2l0KGRpZ2l0KSkpCi0JCQkJYnJlYWs7Ci0KLQkJc3dpdGNoKHF1YWxp
ZmllcikgewotCQljYXNlICdIJzoJLyogdGhhdCdzICdoaCcgaW4gZm9ybWF0ICovCi0JCQlpZiAo
aXNfc2lnbikgewotCQkJCXNpZ25lZCBjaGFyICpzID0gKHNpZ25lZCBjaGFyICopIHZhX2FyZyhh
cmdzLHNpZ25lZCBjaGFyICopOwotCQkJCSpzID0gKHNpZ25lZCBjaGFyKSBzaW1wbGVfc3RydG9s
KHN0ciwmbmV4dCxiYXNlKTsKLQkJCX0gZWxzZSB7Ci0JCQkJdW5zaWduZWQgY2hhciAqcyA9ICh1
bnNpZ25lZCBjaGFyICopIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBjaGFyICopOwotCQkJCSpzID0g
KHVuc2lnbmVkIGNoYXIpIHNpbXBsZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJhc2UpOwotCQkJfQot
CQkJYnJlYWs7Ci0JCWNhc2UgJ2gnOgotCQkJaWYgKGlzX3NpZ24pIHsKLQkJCQlzaG9ydCAqcyA9
IChzaG9ydCAqKSB2YV9hcmcoYXJncyxzaG9ydCAqKTsKLQkJCQkqcyA9IChzaG9ydCkgc2ltcGxl
X3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Ci0JCQl9IGVsc2UgewotCQkJCXVuc2lnbmVkIHNob3J0
ICpzID0gKHVuc2lnbmVkIHNob3J0ICopIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBzaG9ydCAqKTsK
LQkJCQkqcyA9ICh1bnNpZ25lZCBzaG9ydCkgc2ltcGxlX3N0cnRvdWwoc3RyLCAmbmV4dCwgYmFz
ZSk7Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2FzZSAnbCc6Ci0JCQlpZiAoaXNfc2lnbikgewotCQkJ
CWxvbmcgKmwgPSAobG9uZyAqKSB2YV9hcmcoYXJncyxsb25nICopOwotCQkJCSpsID0gc2ltcGxl
X3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Ci0JCQl9IGVsc2UgewotCQkJCXVuc2lnbmVkIGxvbmcg
KmwgPSAodW5zaWduZWQgbG9uZyopIHZhX2FyZyhhcmdzLHVuc2lnbmVkIGxvbmcqKTsKLQkJCQkq
bCA9IHNpbXBsZV9zdHJ0b3VsKHN0ciwmbmV4dCxiYXNlKTsKLQkJCX0KLQkJCWJyZWFrOwotCQlj
YXNlICdMJzoKLQkJCWlmIChpc19zaWduKSB7Ci0JCQkJbG9uZyBsb25nICpsID0gKGxvbmcgbG9u
ZyopIHZhX2FyZyhhcmdzLGxvbmcgbG9uZyAqKTsKLQkJCQkqbCA9IHNpbXBsZV9zdHJ0b2xsKHN0
ciwmbmV4dCxiYXNlKTsKLQkJCX0gZWxzZSB7Ci0JCQkJdW5zaWduZWQgbG9uZyBsb25nICpsID0g
KHVuc2lnbmVkIGxvbmcgbG9uZyopIHZhX2FyZyhhcmdzLHVuc2lnbmVkIGxvbmcgbG9uZyopOwot
CQkJCSpsID0gc2ltcGxlX3N0cnRvdWxsKHN0ciwmbmV4dCxiYXNlKTsKLQkJCX0KLQkJCWJyZWFr
OwotCQljYXNlICdaJzoKLQkJY2FzZSAneic6Ci0JCXsKLQkJCXNpemVfdCAqcyA9IChzaXplX3Qq
KSB2YV9hcmcoYXJncyxzaXplX3QqKTsKLQkJCSpzID0gKHNpemVfdCkgc2ltcGxlX3N0cnRvdWwo
c3RyLCZuZXh0LGJhc2UpOwotCQl9Ci0JCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJaWYgKGlzX3Np
Z24pIHsKLQkJCQlpbnQgKmkgPSAoaW50ICopIHZhX2FyZyhhcmdzLCBpbnQqKTsKLQkJCQkqaSA9
IChpbnQpIHNpbXBsZV9zdHJ0b2woc3RyLCZuZXh0LGJhc2UpOwotCQkJfSBlbHNlIHsKLQkJCQl1
bnNpZ25lZCBpbnQgKmkgPSAodW5zaWduZWQgaW50KikgdmFfYXJnKGFyZ3MsIHVuc2lnbmVkIGlu
dCopOwotCQkJCSppID0gKHVuc2lnbmVkIGludCkgc2ltcGxlX3N0cnRvdWwoc3RyLCZuZXh0LGJh
c2UpOwotCQkJfQotCQkJYnJlYWs7Ci0JCX0KLQkJbnVtKys7Ci0KLQkJaWYgKCFuZXh0KQotCQkJ
YnJlYWs7Ci0JCXN0ciA9IG5leHQ7Ci0JfQotCXJldHVybiBudW07CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAg
ICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNjZm4gPSBz
dHJ0b3VxOworICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNjZm4g
PSBzdHJ0b3VxOworICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBGWE9LOyAvKiBlbmFibGUgMHggcHJlZml4aW5n
ICovCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfSU5UOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2NmbiA9IHN0cnRvdXE7CisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0g
MTY7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNh
c2UgJ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX1NUUklORzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAnWyc6CisgICAg
ICAgICAgICAgICAgICAgICAgICBmbXQgPSBfX3NjY2woY2NsdGFiLCBmbXQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MgfD0gTk9TS0lQOworICAgICAgICAgICAgICAgICAgICAgICAg
YyA9IENUX0NDTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBOT1NLSVA7
CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfQ0hBUjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAncCc6ICAgICAgIC8qIHBvaW50
ZXIgZm9ybWF0IGlzIGxpa2UgaGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8
PSBQT0lOVEVSIHwgUEZYT0s7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfSU5UOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IHN0cnRvdXE7CisgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgIGNhc2UgJ24nOgorICAgICAgICAgICAgICAgICAgICAgICAgbmNvbnZlcnNp
b25zKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTVVBQUkVTUykgICAv
KiA/Pz8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTSE9SVFNIT1JUKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBjaGFyICopID0gbnJlYWQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIFNIT1JUKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBzaG9ydCAqKSA9IG5yZWFkOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBMT05HKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBsb25nICopID0gbnJlYWQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIFFVQUQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICp2YV9hcmcoYXAsIGludDY0X3QgKikgPSBucmVhZDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhh
cCwgaW50ICopID0gbnJlYWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAq
IFdlIGhhdmUgYSBjb252ZXJzaW9uIHRoYXQgcmVxdWlyZXMgaW5wdXQuCisgICAgICAgICAgICAg
ICAgICovCisgICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBpbnB1dF9mYWlsdXJlOworCisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAg
ICAgICAgICAgKiBDb25zdW1lIGxlYWRpbmcgd2hpdGUgc3BhY2UsIGV4Y2VwdCBmb3IgZm9ybWF0
cworICAgICAgICAgICAgICAgICAqIHRoYXQgc3VwcHJlc3MgdGhpcy4KKyAgICAgICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgTk9TS0lQKSA9PSAwKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqaW5wKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBucmVhZCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoLS1pbnIgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbnB1dF9mYWlsdXJlOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAqIE5vdGUgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hh
cmFjdGVyIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgYnVmZmVyLCBzbyBjb252
ZXJzaW9ucyB0aGF0IGRvIG5vdCBzZXQgTk9TS0lQCisgICAgICAgICAgICAgICAgICAgICAgICAg
KiBjYW4gbm8gbG9uZ2VyIHJlc3VsdCBpbiBhbiBpbnB1dCBmYWlsdXJlLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyoK
KyAgICAgICAgICAgICAgICAgKiBEbyB0aGUgY29udmVyc2lvbi4KKyAgICAgICAgICAgICAgICAg
Ki8KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKworICAgICAgICAgICAgICAgIGNhc2Ug
Q1RfQ0hBUjoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjYW4gYXJiaXRyYXJ5IGNoYXJh
Y3RlcnMgKHNldHMgTk9TS0lQKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRo
ID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNVUFBSRVNTKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzdW0gPSAwOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKChuID0gaW5yKSA8IHdpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdW0gKz0gbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IG47CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAgKz0gbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdW0gPT0gMCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbnB1dF9m
YWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSB3
aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ciAtPSB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucCArPSB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBucmVhZCArPSBzdW07CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkodmFfYXJnKGFwLCBj
aGFyICopLCBpbnAsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5y
IC09IHdpZHRoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAgKz0gd2lkdGg7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkICs9IHdpZHRoOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNzaWduZWQrKzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5jb252ZXJzaW9ucysrOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIENUX0NDTDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjYW4gYSAobm9uZW1wdHkpIGNoYXJhY3RlciBj
bGFzcyAoc2V0cyBOT1NLSVApICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGgg
PT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAoc2l6ZV90KX4w
OyAgICAgLyogYGluZmluaXR5JyAqLworICAgICAgICAgICAgICAgICAgICAgICAgLyogdGFrZSBv
bmx5IHRob3NlIHRoaW5ncyBpbiB0aGUgY2xhc3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChmbGFncyAmIFNVUFBSRVNTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY2NsdGFiWyh1
bnNpZ25lZCBjaGFyKSppbnBdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbisrLCBpbnItLSwgaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKC0td2lkdGggPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbnIgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbnB1dF9mYWlsdXJlOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09IDAp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBtYXRjaF9mYWls
dXJlOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcDAgPSBwID0gdmFfYXJnKGFwLCBjaGFyICopOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY2NsdGFiWyh1bnNpZ25lZCBjaGFyKSppbnBdKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5yLS07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9ICppbnArKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLS13aWR0aCA9PSAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCA9PSBwMCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBpbnB1dF9mYWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG4gPSBwIC0gcDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChuID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBtYXRjaF9mYWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCA9IDA7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hc3NpZ25lZCsrOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWQgKz0gbjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5jb252ZXJzaW9ucysrOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIENUX1NUUklORzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGxpa2UgQ0NMLCBidXQgemVyby1sZW5ndGggc3RyaW5nIE9LLCAm
IG5vIE5PU0tJUCAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IDApCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gKHNpemVfdCl+MDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNVUFBSRVNTKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoIWlzc3BhY2UoKmlucCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuKyssIGluci0tLCBpbnArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoLS13aWR0aCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWQgKz0gbjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHAwID0gcCA9IHZhX2FyZyhhcCwgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKCFpc3NwYWNlKCppbnApKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5yLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnArKyA9ICppbnArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoLS13aWR0aCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGluciA8PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnAgPSAwOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBucmVhZCArPSBwIC0gcDA7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hc3NpZ25lZCsrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgbmNvbnZlcnNpb25zKys7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGNhc2UgQ1RfSU5UOgorICAgICAgICAgICAg
ICAgICAgICAgICAgLyogc2NhbiBhbiBpbnRlZ2VyIGFzIGlmIGJ5IHN0cnRvcS9zdHJ0b3VxICov
CisjaWZkZWYgaGFyZHdheQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IDAg
fHwgd2lkdGggPiBzaXplb2YoYnVmKSAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpZHRoID0gc2l6ZW9mKGJ1ZikgLSAxOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHNpemVfdCBpcyB1bnNpZ25lZCwgaGVuY2UgdGhpcyBvcHRpbWlzYXRpb24gKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgtLXdpZHRoID4gc2l6ZW9mKGJ1ZikgLSAyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHNpemVvZihidWYpIC0gMjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKys7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzIHw9IFNJR05PSyB8IE5ESUdJVFMgfCBOWkRJR0lUUzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAocCA9IGJ1Zjsgd2lkdGg7IHdpZHRoLS0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYyA9ICppbnA7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFN3aXRjaCBvbiB0
aGUgY2hhcmFjdGVyOyBgZ290byBvaycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICogaWYgd2UgYWNjZXB0IGl0IGFzIGEgcGFydCBvZiBudW1iZXIuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGMpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgZGlnaXQgMCBpcyBhbHdheXMgbGVnYWwsIGJ1
dCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzcGVjaWFsLiAgRm9yICVp
IGNvbnZlcnNpb25zLCBpZiBubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBk
aWdpdHMgKHplcm8gb3Igbm9uemVybykgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqIHNjYW5uZWQgKG9ubHkgc2lnbnMpLCB3ZSB3aWxsIGhhdmUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogYmFzZT09MC4gIEluIHRoYXQgY2FzZSwgd2Ugc2hv
dWxkIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCB0byA4IGFuZCBl
bmFibGUgMHggcHJlZml4aW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBB
bHNvLCBpZiB3ZSBoYXZlIG5vdCBzY2FubmVkIHplcm8gZGlnaXRzCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqIGJlZm9yZSB0aGlzLCBkbyBub3QgdHVybiBvZmYgcHJlZml4aW5n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIChzb21lb25lIGVsc2Ugd2lsbCB0
dXJuIGl0IG9mZiBpZiB3ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoYXZl
IHNjYW5uZWQgYW55IG5vbnplcm8gZGlnaXRzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlID09IDApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0g
UEZYT0s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIE5aRElHSVRTKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmPSB+KFNJ
R05PS3xOWkRJR0lUU3xORElHSVRTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzICY9IH4oU0lHTk9LfFBGWE9LfE5ESUdJVFMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gb2s7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogMSB0aHJvdWdoIDcgYWx3YXlzIGxlZ2FsICovCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcn
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlZml4
W2Jhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9
IH4oU0lHTk9LIHwgUEZYT0sgfCBORElHSVRTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIG9rOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIGRpZ2l0cyA4IGFuZCA5IG9rIGlmZiBkZWNpbWFsIG9yIGhleCAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICc4JzogY2FzZSAnOSc6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2VmaXhbYmFzZV07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UgPD0gOCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLyogbm90IGxlZ2Fs
IGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAm
PSB+KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBvazsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBsZXR0ZXJzIG9rIGlmZiBoZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAnQSc6IGNhc2UgJ0InOiBjYXNlICdDJzoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAnRCc6IGNhc2UgJ0UnOiBjYXNlICdGJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAnYSc6IGNhc2UgJ2InOiBjYXNlICdjJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZCc6IGNhc2UgJ2UnOiBjYXNlICdmJzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBuZWVkIHRvIGZpeCBiYXNl
IGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFz
ZSA8PSAxMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOyAgLyogbm90IGxlZ2FsIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncyAmPSB+KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvazsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBzaWduIG9rIG9ubHkgYXMgZmlyc3QgY2hhcmFjdGVy
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJysnOiBjYXNlICctJzoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTSUdO
T0spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzICY9IH5TSUdOT0s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIG9rOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB4IG9rIGlmZiBmbGFnIHN0aWxsIHNldCAm
IDJuZCBjaGFyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOiBj
YXNlICdYJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxh
Z3MgJiBQRlhPSyAmJiBwID09IGJ1ZiArIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsgICAgICAvKiBpZiAlaSAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gflBGWE9L
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBv
azsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJZiB3ZSBnb3QgaGVyZSwgYyBpcyBub3Qg
YSBsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZm9y
IGEgbnVtYmVyLiAgU3RvcCBhY2N1bXVsYXRpbmcgZGlnaXRzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgb2s6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGMgaXMgbGVnYWw6IHN0b3JlIGl0
IGFuZCBsb29rIGF0IHRoZSBuZXh0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgtLWluciA+IDApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
ICAgICAgICAgIC8qIGVuZCBvZiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIElm
IHdlIGhhZCBvbmx5IGEgc2lnbiwgaXQgaXMgbm8gZ29vZDsgcHVzaAorICAgICAgICAgICAgICAg
ICAgICAgICAgICogYmFjayB0aGUgc2lnbi4gIElmIHRoZSBudW1iZXIgZW5kcyBpbiBgeCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCB3YXMgW3NpZ25dICcnICd4Jywgc28gcHVzaCBi
YWNrIHRoZSB4CisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbmQgdHJlYXQgaXQgYXMgW3Np
Z25dICcnLgorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZmxhZ3MgJiBORElHSVRTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwID4gYnVmKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5yKys7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBtYXRjaF9mYWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICgodV9jaGFyICopcClbLTFdOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0tcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucisrOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChmbGFncyAm
IFNVUFBSRVNTKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2
NF90IHJlczsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCA9IDA7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9ICgqY2NmbikoYnVmLCAoY2hhciAqKilO
VUxMLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYg
UE9JTlRFUikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJn
KGFwLCB2b2lkICoqKSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodm9pZCAqKSh1aW50cHRyX3QpcmVzOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChmbGFncyAmIFNIT1JUU0hPUlQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgY2hhciAqKSA9IHJlczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBTSE9SVCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBzaG9ydCAqKSA9IHJl
czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBMT05H
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAsIGxv
bmcgKikgPSByZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZs
YWdzICYgUVVBRCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFf
YXJnKGFwLCBpbnQ2NF90ICopID0gcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhh
cCwgaW50ICopID0gcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNzaWdu
ZWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IG5yZWFkICs9IHAgLSBidWY7CisgICAgICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMr
KzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgfQor
ICAgICAgICB9CitpbnB1dF9mYWlsdXJlOgorICAgICAgICByZXR1cm4gKG5jb252ZXJzaW9ucyAh
PSAwID8gbmFzc2lnbmVkIDogLTEpOworbWF0Y2hfZmFpbHVyZToKKyAgICAgICAgcmV0dXJuIChu
YXNzaWduZWQpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL3RwbWJhY2suYyBiL3RwbWJhY2suYwpp
bmRleCAwMGI2NmU4Li4yMmFkYmQzIDEwMDY0NAotLS0gYS90cG1iYWNrLmMKKysrIGIvdHBtYmFj
ay5jCkBAIC01MiwxMCArNTIsNiBAQAogI2luY2x1ZGUgPG1pbmktb3Mvd2FpdC5oPgogCiAKLSNp
Zm5kZWYgSEFWRV9MSUJDCi0jZGVmaW5lIHN0cnRvdWwgc2ltcGxlX3N0cnRvdWwKLSNlbmRpZgot
CiAvLyNkZWZpbmUgVFBNQkFDS19QUklOVF9ERUJVRwogI2lmZGVmIFRQTUJBQ0tfUFJJTlRfREVC
VUcKICNkZWZpbmUgVFBNQkFDS19ERUJVRyhmbXQsLi4uKSBwcmludGsoIlRwbWJhY2s6RGVidWco
Il9fRklMRV9fIjolZCkgIiBmbXQsIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQotLSAKMi42LjYK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jul 03 18:32:02 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 03 Jul 2016 18:32: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bJmBU-0005Fu-V2; Sun, 03 Jul 2016 18:32:00 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bJmBT-0005Fl-Rq; Sun, 03 Jul 2016 18:31:59 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 B9/41-22092-F1A59775; Sun, 03 Jul 2016 18:31:59 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrHIsWRWlGSWpSXmKPExsXS+7+BUVcuqjL
 c4PNeBYu3X5cwW3zfMpnJgcnj8IcrLAGMUayZeUn5FQmsGSsfT2EpmMpRcaKvgaWB8SBbFyMX
 h5DAREaJl9NXsUI4uxglpl2dzwLhHGOUuDFxKjOEs4FR4sGuGUBlnBwsAioSt36cBbPZBEwk+
 hvnsYHYIgLKEh9be9lBbGYBV4nbb9+D2cICBhJfjk8Fs3kFdCSOTlnACDKUV2AZ0LqbIA4H0A
 Z7iQ0zPSFqBCVOznzCAjFHR2Ln1jtsICXMAtISy/9xQITlJZq3zmYGsTkFHCRWPN7LDlIiKmA
 m8e2nwQRGoVlIBs1CMmgWwqBZSAYtYGRZxahenFpUllqka6yXVJSZnlGSm5iZo2toYKaXm1pc
 nJiempOYVKyXnJ+7iREY7gxAsIOx45/TIUZJDiYlUV4u5/JwIb6k/JTKjMTijPii0pzU4kOMM
 hwcShK8LyIqw4UEi1LTUyvSMnOAkQeTluDgURLhfQCS5i0uSMwtzkyHSJ1iVJQS5/0BkhAASW
 SU5sG1waL9EqOslDAvI9AhQjwFqUW5mSWo8q8YxTkYlYR52SOBpvBk5pXATX8FtJgJaDFrbDn
 I4pJEhJRUA2PvgzW2Tcc+vV9hscBu/4OzdXesfn/h0WZpK749SzH3eLzz5tRPctf2szpf4TNX
 m62a/5C59BtHYUOpol5g5dwLYfNMd7puml5cbJV9ZJfUz+zWk9qN5xN/xSi9tXjyN8Nujlr90
 grVX9f39G+NyxGyF1Hdom9TnvK/SWyr/z62gIrqMs/WS0osxRmJhlrMRcWJAHPkGjXxAgAA
X-Env-Sender: samuel.thibault@ens-lyon.org
X-Msg-Ref: server-4.tower-21.messagelabs.com!1467570718!15982498!1
X-Originating-IP: [141.255.128.1]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 45574 invoked from network); 3 Jul 2016 18:31:58 -0000
Received: from hera.aquilenet.fr (HELO hera.aquilenet.fr) (141.255.128.1)
 by server-4.tower-21.messagelabs.com with SMTP; 3 Jul 2016 18:31:58 -0000
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id E3212757F;
 Sun,  3 Jul 2016 20:31:52 +0200 (CEST)
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id t5cgN3h-dFGM; Sun,  3 Jul 2016 20:31:52 +0200 (CEST)
Received: from var.youpi.perso.aquilenet.fr (unknown
 [IPv6:2a01:cb19:1af:4600:3602:86ff:fe2c:6a19])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id A9F4174C9;
 Sun,  3 Jul 2016 20:31:52 +0200 (CEST)
Received: from samy by var.youpi.perso.aquilenet.fr with local (Exim 4.87)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bJmBQ-0003JZ-RK; Sun, 03 Jul 2016 20:31:56 +0200
Date: Sun, 3 Jul 2016 20:31:56 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160703183156.GF5041@var.home>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <1467365591-22445-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1467365591-22445-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: [Minios-devel] [PATCH] mini-os: make cscope repair
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SnVlcmdlbiBHcm9zcywgb24gRnJpIDAxIEp1bCAyMDE2IDExOjMzOjExICswMjAwLCB3cm90ZToK
PiAibWFrZSBjc2NvcGUiIGRvZXNuJ3QgbGlrZSBzeW1ib2xpYyBsaW5rIGluY2x1ZGUvbWluaS1v
cy0+LiBhcyBpdAo+IGxlYWRzIHRvIGEgZmlsZSBzeXN0ZW0gcmVjdXJzaW9uLiBSZXBhaXIgdGhh
dCBieSBub3QgZm9sbG93aW5nIGxpbmtzCj4gd2hlbiBzZWFyY2hpbmcgdGhlIHNvdXJjZXMuCj4g
Cj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgoKQWNrZWQt
Ynk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KClRoYW5r
cyEKCj4gLS0tCj4gIE1ha2VmaWxlIHwgMiArLQo+ICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp
b24oKyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmls
ZQo+IGluZGV4IDEwYzA1YTUuLjJlNGJkYmEgMTAwNjQ0Cj4gLS0tIGEvTWFrZWZpbGUKPiArKysg
Yi9NYWtlZmlsZQo+IEBAIC0yMTIsNyArMjEyLDcgQEAgY2xlYW46CWFyY2hfY2xlYW4KPiAgCj4g
IAo+ICBkZWZpbmUgYWxsX3NvdXJjZXMKPiAtICAgICAoIGZpbmQgLiAtZm9sbG93IC1uYW1lIFND
Q1MgLXBydW5lIC1vIC1uYW1lICcqLltjaFNdJyAtcHJpbnQgKQo+ICsgICAgICggZmluZCAuIC1u
YW1lIFNDQ1MgLXBydW5lIC1vIC1uYW1lICcqLltjaFNdJyAtcHJpbnQgKQo+ICBlbmRlZgo+ICAK
PiAgLlBIT05ZOiBjc2NvcGUKPiAtLSAKPiAyLjYuNgo+IAoKLS0gClNhbXVlbAogUFM+IFNhbHV0
ICEgSidhaSB1biBzdWpldCBkZSBwaGlsbyDDoCB2b3VzIHNvdW1ldHRyZSA6ICJTdWZmaXQtaWwK
IFBTPiBkJ29ic2VydmVyIHBvdXIgY29ubmHDrnRyZSIgSWTDqWVzICsgcGxhbiBNZXLDp2kKIE91
aSwgeWEgcXUnYSB0J29ic2VydmVyIHBvdXIgY29ubmHDrnRyZSBsZSBmYWl0IHF1ZSB0dSBlcyB1
bmUgZmVpZ25hc3NlLgogLSstIEZGIGluOiBHdWlkZSBkdSBOZXVuZXUgZCdVc2VuZXQgLSBOZXVu
ZXUgZmFpdCBkZSBsYSBwaGlsbyAtKy0KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jul 03 18:32:02 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 03 Jul 2016 18:32: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bJmBU-0005Fu-V2; Sun, 03 Jul 2016 18:32:00 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bJmBT-0005Fl-Rq; Sun, 03 Jul 2016 18:31:59 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 B9/41-22092-F1A59775; Sun, 03 Jul 2016 18:31:59 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrHIsWRWlGSWpSXmKPExsXS+7+BUVcuqjL
 c4PNeBYu3X5cwW3zfMpnJgcnj8IcrLAGMUayZeUn5FQmsGSsfT2EpmMpRcaKvgaWB8SBbFyMX
 h5DAREaJl9NXsUI4uxglpl2dzwLhHGOUuDFxKjOEs4FR4sGuGUBlnBwsAioSt36cBbPZBEwk+
 hvnsYHYIgLKEh9be9lBbGYBV4nbb9+D2cICBhJfjk8Fs3kFdCSOTlnACDKUV2AZ0LqbIA4H0A
 Z7iQ0zPSFqBCVOznzCAjFHR2Ln1jtsICXMAtISy/9xQITlJZq3zmYGsTkFHCRWPN7LDlIiKmA
 m8e2nwQRGoVlIBs1CMmgWwqBZSAYtYGRZxahenFpUllqka6yXVJSZnlGSm5iZo2toYKaXm1pc
 nJiempOYVKyXnJ+7iREY7gxAsIOx45/TIUZJDiYlUV4u5/JwIb6k/JTKjMTijPii0pzU4kOMM
 hwcShK8LyIqw4UEi1LTUyvSMnOAkQeTluDgURLhfQCS5i0uSMwtzkyHSJ1iVJQS5/0BkhAASW
 SU5sG1waL9EqOslDAvI9AhQjwFqUW5mSWo8q8YxTkYlYR52SOBpvBk5pXATX8FtJgJaDFrbDn
 I4pJEhJRUA2PvgzW2Tcc+vV9hscBu/4OzdXesfn/h0WZpK749SzH3eLzz5tRPctf2szpf4TNX
 m62a/5C59BtHYUOpol5g5dwLYfNMd7puml5cbJV9ZJfUz+zWk9qN5xN/xSi9tXjyN8Nujlr90
 grVX9f39G+NyxGyF1Hdom9TnvK/SWyr/z62gIrqMs/WS0osxRmJhlrMRcWJAHPkGjXxAgAA
X-Env-Sender: samuel.thibault@ens-lyon.org
X-Msg-Ref: server-4.tower-21.messagelabs.com!1467570718!15982498!1
X-Originating-IP: [141.255.128.1]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 45574 invoked from network); 3 Jul 2016 18:31:58 -0000
Received: from hera.aquilenet.fr (HELO hera.aquilenet.fr) (141.255.128.1)
 by server-4.tower-21.messagelabs.com with SMTP; 3 Jul 2016 18:31:58 -0000
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id E3212757F;
 Sun,  3 Jul 2016 20:31:52 +0200 (CEST)
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id t5cgN3h-dFGM; Sun,  3 Jul 2016 20:31:52 +0200 (CEST)
Received: from var.youpi.perso.aquilenet.fr (unknown
 [IPv6:2a01:cb19:1af:4600:3602:86ff:fe2c:6a19])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id A9F4174C9;
 Sun,  3 Jul 2016 20:31:52 +0200 (CEST)
Received: from samy by var.youpi.perso.aquilenet.fr with local (Exim 4.87)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bJmBQ-0003JZ-RK; Sun, 03 Jul 2016 20:31:56 +0200
Date: Sun, 3 Jul 2016 20:31:56 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160703183156.GF5041@var.home>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <1467365591-22445-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1467365591-22445-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: [Minios-devel] [PATCH] mini-os: make cscope repair
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SnVlcmdlbiBHcm9zcywgb24gRnJpIDAxIEp1bCAyMDE2IDExOjMzOjExICswMjAwLCB3cm90ZToK
PiAibWFrZSBjc2NvcGUiIGRvZXNuJ3QgbGlrZSBzeW1ib2xpYyBsaW5rIGluY2x1ZGUvbWluaS1v
cy0+LiBhcyBpdAo+IGxlYWRzIHRvIGEgZmlsZSBzeXN0ZW0gcmVjdXJzaW9uLiBSZXBhaXIgdGhh
dCBieSBub3QgZm9sbG93aW5nIGxpbmtzCj4gd2hlbiBzZWFyY2hpbmcgdGhlIHNvdXJjZXMuCj4g
Cj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgoKQWNrZWQt
Ynk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KClRoYW5r
cyEKCj4gLS0tCj4gIE1ha2VmaWxlIHwgMiArLQo+ICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp
b24oKyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmls
ZQo+IGluZGV4IDEwYzA1YTUuLjJlNGJkYmEgMTAwNjQ0Cj4gLS0tIGEvTWFrZWZpbGUKPiArKysg
Yi9NYWtlZmlsZQo+IEBAIC0yMTIsNyArMjEyLDcgQEAgY2xlYW46CWFyY2hfY2xlYW4KPiAgCj4g
IAo+ICBkZWZpbmUgYWxsX3NvdXJjZXMKPiAtICAgICAoIGZpbmQgLiAtZm9sbG93IC1uYW1lIFND
Q1MgLXBydW5lIC1vIC1uYW1lICcqLltjaFNdJyAtcHJpbnQgKQo+ICsgICAgICggZmluZCAuIC1u
YW1lIFNDQ1MgLXBydW5lIC1vIC1uYW1lICcqLltjaFNdJyAtcHJpbnQgKQo+ICBlbmRlZgo+ICAK
PiAgLlBIT05ZOiBjc2NvcGUKPiAtLSAKPiAyLjYuNgo+IAoKLS0gClNhbXVlbAogUFM+IFNhbHV0
ICEgSidhaSB1biBzdWpldCBkZSBwaGlsbyDDoCB2b3VzIHNvdW1ldHRyZSA6ICJTdWZmaXQtaWwK
IFBTPiBkJ29ic2VydmVyIHBvdXIgY29ubmHDrnRyZSIgSWTDqWVzICsgcGxhbiBNZXLDp2kKIE91
aSwgeWEgcXUnYSB0J29ic2VydmVyIHBvdXIgY29ubmHDrnRyZSBsZSBmYWl0IHF1ZSB0dSBlcyB1
bmUgZmVpZ25hc3NlLgogLSstIEZGIGluOiBHdWlkZSBkdSBOZXVuZXUgZCdVc2VuZXQgLSBOZXVu
ZXUgZmFpdCBkZSBsYSBwaGlsbyAtKy0KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jul 03 18:35:51 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 03 Jul 2016 18:35: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bJmFD-0005RU-I7; Sun, 03 Jul 2016 18:35:51 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bJmFC-0005RK-Ib; Sun, 03 Jul 2016 18:35:50 +0000
Received: from [85.158.139.211] by server-11.bemta-5.messagelabs.com id
 51/5F-04210-50B59775; Sun, 03 Jul 2016 18:35:49 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrPIsWRWlGSWpSXmKPExsXS+7+BUZc1ujL
 coG8fn8Xbr0uYLb5vmczkwORx+MMVlgDGKNbMvKT8igTWjKPLXzEVXGOrWH3tDXsD4y7WLkYu
 DiGBiYwSr55/Z+ti5ARydjFKHJ0lCmEfY5S4u18domgDo8Tixc3sIAkWARWJSzMvsYDYbAImE
 v2N88CaRQSUJT629oLVMAskSiz6/Ymxi5GDQ1ggQOLuLG2QMK+AjsT2u02MIDN5BQ4yShy5tI
 4ZpEZIwF7ib4MrRI2gxMmZT1ggxmhJ3Pj3kgmkhFlAWmL5Pw6QMKeAg8T8I2tZQcKiAmYS334
 aTGAUnIWkeRaS5lkIzQsYmVcxqhenFpWlFuka6iUVZaZnlOQmZuboGhqY6uWmFhcnpqfmJCYV
 6yXn525iBAZuPQMD4w7Gpl7nQ4ySHExKorxczuXhQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4T
 0dWhgsJFqWmp1akZeYAYwgmLcHBoyTCewkkzVtckJhbnJkOkTrFqMux4MfttUxCLHn5ealS4r
 znQYoEQIoySvPgRsDi+RKjrJQwLyMDA4MQT0FqUW5mCar8K0ZxDkYlYd7vIFN4MvNK4Da9Ajq
 CCegI1thykCNKEhFSUg2MHGuPa1+Y231rto5Zy6HNf6pusnzZUlLl+plHxPWZwerze5d+7W7x
 KDwzQ/7slg2NmRJ6ctW+n28+Yln6yyd4yWmOqJevndIP3dl83Kh/0X2NjcU1q6Savy7YFxF30
 YXv7oUlx4xbbm3QX+5+wTbK4dX7u68nq0V6LV/edyTy9Ar2dQePFVjkLlFiKc5INNRiLipOBA
 DZmyhz4gIAAA==
X-Env-Sender: samuel.thibault@ens-lyon.org
X-Msg-Ref: server-3.tower-206.messagelabs.com!1467570949!44583110!1
X-Originating-IP: [141.255.128.1]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12710 invoked from network); 3 Jul 2016 18:35:49 -0000
Received: from hera.aquilenet.fr (HELO hera.aquilenet.fr) (141.255.128.1)
 by server-3.tower-206.messagelabs.com with SMTP; 3 Jul 2016 18:35:49 -0000
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 23527777E;
 Sun,  3 Jul 2016 20:35:44 +0200 (CEST)
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id UFxPMy1PBOOn; Sun,  3 Jul 2016 20:35:44 +0200 (CEST)
Received: from var.youpi.perso.aquilenet.fr (unknown
 [IPv6:2a01:cb19:1af:4600:3602:86ff:fe2c:6a19])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id D897674C9;
 Sun,  3 Jul 2016 20:35:43 +0200 (CEST)
Received: from samy by var.youpi.perso.aquilenet.fr with local (Exim 4.87)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bJmF9-0003OH-I7; Sun, 03 Jul 2016 20:35:47 +0200
Date: Sun, 3 Jul 2016 20:35:47 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160703183547.GG5041@var.home>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com
References: <1467365607-22499-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1467365607-22499-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
Subject: Re: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8sCgpKdWVyZ2VuIEdyb3NzLCBvbiBGcmkgMDEgSnVsIDIwMTYgMTE6MzM6MjcgKzAyMDAs
IHdyb3RlOgo+IEluc3RlYWQgb2YgYSBMaW51eCBrZXJuZWwgYmFzZWQgaW1wbGVtZW50YXRpb24g
dXNlIG9uZSBmcm9tIGZyZWVCU0QuCgpUaGF0J2QgYmUgdXNlZnVsIGluZGVlZCA6KQoKPiBJJ20g
bm90IHN1cmUgYWJvdXQgY29kaW5nIHN0eWxlIGhlcmU6IHNob3VsZCBJIGtlZXAgKG1vcmUgb3Ig
bGVzcykgdGhlCj4gb25lIGZyb20gZnJlZUJTRCwgb3IgaXMgdGhlIFhlbiBzdHlsZSBwcmVmZXJy
ZWQ/CgpJJ2Qgc2F5IGp1c3Qga2VlcCB0aGUgZmlsZSBhcyBpdCBpcyB1cHN0cmVhbSwgc28gd2Ug
Y2FuIHN5bmMgbW9yZSBlYXNpbHkKaW4gdGhlIGZ1dHVyZS4KCj4gZGlmZiAtLWdpdCBhL2luY2x1
ZGUvbGliLWdwbC5oIGIvaW5jbHVkZS9saWItZ3BsLmgKPiBpbmRleCBkNTYwMmIyLi43NTU3NjI3
IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGliLWdwbC5oCj4gKysrIGIvaW5jbHVkZS9saWItZ3Bs
LmgKClBsZWFzZSBtb3ZlIHRoZSBjb250ZW50IHRvIGxpYi5oIHRoZW4sIHNpbmNlIGl0IHdvbid0
IGJlIGdwbCBhbnkgbW9yZS4KCkRpZCB5b3UgY2hlY2sgdGhlIGJvb3Qgb3V0cHV0IGUuZy4gb2Yg
YSB0cml2aWFsIG1pbmktb3MgYXBwbGljYXRpb24/Ck5vdGFibHksIGlpcmMgdGhlcmUgd2VyZSBw
ZXJoYXBzIG9kZCBmb3JtYXRpbmcgd2l0aCAleCwgJXAgb3Igc3VjaC4KTW92aW5nIHRvIHRoZSBw
b3NpeCBiZWhhdmlvciB3b3VsZCBiZSBhIGdvb2QgdGhpbmcsIEknZCBqdXN0IHdhbnQgdG8Ka25v
dyB3aGV0aGVyIHdlIGhhdmUgc29tZSBiZWhhdmlvciBjaGFuZ2UuCgpUaGFua3MsClNhbXVlbAoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDov
L2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jul 03 18:35:51 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 03 Jul 2016 18:35: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bJmFD-0005RU-I7; Sun, 03 Jul 2016 18:35:51 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bJmFC-0005RK-Ib; Sun, 03 Jul 2016 18:35:50 +0000
Received: from [85.158.139.211] by server-11.bemta-5.messagelabs.com id
 51/5F-04210-50B59775; Sun, 03 Jul 2016 18:35:49 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrPIsWRWlGSWpSXmKPExsXS+7+BUZc1ujL
 coG8fn8Xbr0uYLb5vmczkwORx+MMVlgDGKNbMvKT8igTWjKPLXzEVXGOrWH3tDXsD4y7WLkYu
 DiGBiYwSr55/Z+ti5ARydjFKHJ0lCmEfY5S4u18domgDo8Tixc3sIAkWARWJSzMvsYDYbAImE
 v2N88CaRQSUJT629oLVMAskSiz6/Ymxi5GDQ1ggQOLuLG2QMK+AjsT2u02MIDN5BQ4yShy5tI
 4ZpEZIwF7ib4MrRI2gxMmZT1ggxmhJ3Pj3kgmkhFlAWmL5Pw6QMKeAg8T8I2tZQcKiAmYS334
 aTGAUnIWkeRaS5lkIzQsYmVcxqhenFpWlFuka6iUVZaZnlOQmZuboGhqY6uWmFhcnpqfmJCYV
 6yXn525iBAZuPQMD4w7Gpl7nQ4ySHExKorxczuXhQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4T
 0dWhgsJFqWmp1akZeYAYwgmLcHBoyTCewkkzVtckJhbnJkOkTrFqMux4MfttUxCLHn5ealS4r
 znQYoEQIoySvPgRsDi+RKjrJQwLyMDA4MQT0FqUW5mCar8K0ZxDkYlYd7vIFN4MvNK4Da9Ajq
 CCegI1thykCNKEhFSUg2MHGuPa1+Y231rto5Zy6HNf6pusnzZUlLl+plHxPWZwerze5d+7W7x
 KDwzQ/7slg2NmRJ6ctW+n28+Yln6yyd4yWmOqJevndIP3dl83Kh/0X2NjcU1q6Savy7YFxF30
 YXv7oUlx4xbbm3QX+5+wTbK4dX7u68nq0V6LV/edyTy9Ar2dQePFVjkLlFiKc5INNRiLipOBA
 DZmyhz4gIAAA==
X-Env-Sender: samuel.thibault@ens-lyon.org
X-Msg-Ref: server-3.tower-206.messagelabs.com!1467570949!44583110!1
X-Originating-IP: [141.255.128.1]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12710 invoked from network); 3 Jul 2016 18:35:49 -0000
Received: from hera.aquilenet.fr (HELO hera.aquilenet.fr) (141.255.128.1)
 by server-3.tower-206.messagelabs.com with SMTP; 3 Jul 2016 18:35:49 -0000
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 23527777E;
 Sun,  3 Jul 2016 20:35:44 +0200 (CEST)
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id UFxPMy1PBOOn; Sun,  3 Jul 2016 20:35:44 +0200 (CEST)
Received: from var.youpi.perso.aquilenet.fr (unknown
 [IPv6:2a01:cb19:1af:4600:3602:86ff:fe2c:6a19])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id D897674C9;
 Sun,  3 Jul 2016 20:35:43 +0200 (CEST)
Received: from samy by var.youpi.perso.aquilenet.fr with local (Exim 4.87)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bJmF9-0003OH-I7; Sun, 03 Jul 2016 20:35:47 +0200
Date: Sun, 3 Jul 2016 20:35:47 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160703183547.GG5041@var.home>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com
References: <1467365607-22499-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1467365607-22499-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
Subject: Re: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8sCgpKdWVyZ2VuIEdyb3NzLCBvbiBGcmkgMDEgSnVsIDIwMTYgMTE6MzM6MjcgKzAyMDAs
IHdyb3RlOgo+IEluc3RlYWQgb2YgYSBMaW51eCBrZXJuZWwgYmFzZWQgaW1wbGVtZW50YXRpb24g
dXNlIG9uZSBmcm9tIGZyZWVCU0QuCgpUaGF0J2QgYmUgdXNlZnVsIGluZGVlZCA6KQoKPiBJJ20g
bm90IHN1cmUgYWJvdXQgY29kaW5nIHN0eWxlIGhlcmU6IHNob3VsZCBJIGtlZXAgKG1vcmUgb3Ig
bGVzcykgdGhlCj4gb25lIGZyb20gZnJlZUJTRCwgb3IgaXMgdGhlIFhlbiBzdHlsZSBwcmVmZXJy
ZWQ/CgpJJ2Qgc2F5IGp1c3Qga2VlcCB0aGUgZmlsZSBhcyBpdCBpcyB1cHN0cmVhbSwgc28gd2Ug
Y2FuIHN5bmMgbW9yZSBlYXNpbHkKaW4gdGhlIGZ1dHVyZS4KCj4gZGlmZiAtLWdpdCBhL2luY2x1
ZGUvbGliLWdwbC5oIGIvaW5jbHVkZS9saWItZ3BsLmgKPiBpbmRleCBkNTYwMmIyLi43NTU3NjI3
IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGliLWdwbC5oCj4gKysrIGIvaW5jbHVkZS9saWItZ3Bs
LmgKClBsZWFzZSBtb3ZlIHRoZSBjb250ZW50IHRvIGxpYi5oIHRoZW4sIHNpbmNlIGl0IHdvbid0
IGJlIGdwbCBhbnkgbW9yZS4KCkRpZCB5b3UgY2hlY2sgdGhlIGJvb3Qgb3V0cHV0IGUuZy4gb2Yg
YSB0cml2aWFsIG1pbmktb3MgYXBwbGljYXRpb24/Ck5vdGFibHksIGlpcmMgdGhlcmUgd2VyZSBw
ZXJoYXBzIG9kZCBmb3JtYXRpbmcgd2l0aCAleCwgJXAgb3Igc3VjaC4KTW92aW5nIHRvIHRoZSBw
b3NpeCBiZWhhdmlvciB3b3VsZCBiZSBhIGdvb2QgdGhpbmcsIEknZCBqdXN0IHdhbnQgdG8Ka25v
dyB3aGV0aGVyIHdlIGhhdmUgc29tZSBiZWhhdmlvciBjaGFuZ2UuCgpUaGFua3MsClNhbXVlbAoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDov
L2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jul 04 05:29:54 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Jul 2016 05:29: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bJwS7-0001iI-Pk; Mon, 04 Jul 2016 05:29:51 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bJwS5-0001i9-SM; Mon, 04 Jul 2016 05:29:49 +0000
Received: from [85.158.139.211] by server-3.bemta-5.messagelabs.com id
 7A/8F-01915-C44F9775; Mon, 04 Jul 2016 05:29:48 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIIsWRWlGSWpSXmKPExsVyuP0Ov67Pl8p
 wg/7PQhZvvy5htvi+ZTKTA5PH4Q9XWAIYo1gz85LyKxJYM6YsPs5ccEGy4vF2yQbGCaJdjJwc
 EgJGEm8n/mPqYuTiEBJYyCix4vYhxi5GDg5hgQCJu7O0QeIiApMYJY7Nm8sI0iAkkCix5sNWd
 hCbTUBVYsP1U6wQg+QkersnsYDYvEDx8w8ng9WzCKhITJmznx1kpqhAuMSOlb4QJYISJ2c+AS
 vnFNCVWNexAmwMs4CexI7rv6BseYntb+cwT2Dkm4WkZRaSsllIyhYwMq9i1ChOLSpLLdI1stB
 LKspMzyjJTczM0TU0MNXLTS0uTkxPzUlMKtZLzs/dxAgMunoGBsYdjH2r/A4xSnIwKYnycjmX
 hwvxJeWnVGYkFmfEF5XmpBYfYpTh4FCS4C39VBkuJFiUmp5akZaZAwx/mLQEB4+SCO9SkDRvc
 UFibnFmOkTqFKOilDjvSpCEAEgiozQPrg0Wc5cYZaWEeRkZGBiEeApSi3IzS1DlXzGKczAqCf
 NuApnCk5lXAjf9FdBiJqDFrLHlIItLEhFSUg2MCrKNv071zm3Nj+BoNim8PffvLsatc9Ui71o
 lXE3Rd80NPKXtftr4YIN3isD11HWZcTGXDSXVb7LzF8mxF+kcXDt3ZcG3iNbQdzPPvd0fZvBB
 LmASW8mN2dvXnqxx1MzjusJ+9/k0+2SzvIfCdpVTRSvastLvyAj8ZV9VZ8VVcjxAS7c+5q0SS
 3FGoqEWc1FxIgBXkcyjtAIAAA==
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-6.tower-206.messagelabs.com!1467610188!48002482!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 2379 invoked from network); 4 Jul 2016 05:29:48 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-6.tower-206.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 4 Jul 2016 05:29:48 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 735A9ABA6;
 Mon,  4 Jul 2016 05:29:47 +0000 (UTC)
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
References: <1467365607-22499-1-git-send-email-jgross@suse.com>
 <20160703183547.GG5041@var.home>
From: Juergen Gross <jgross@suse.com>
X-Enigmail-Draft-Status: N1110
Message-ID: <5779F44A.50104@suse.com>
Date: Mon, 4 Jul 2016 07:29:46 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
 Thunderbird/38.7.0
MIME-Version: 1.0
In-Reply-To: <20160703183547.GG5041@var.home>
Subject: Re: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMDMvMDcvMTYgMjA6MzUsIFNhbXVlbCBUaGliYXVsdCB3cm90ZToKPiBIZWxsbywKPiAKPiBK
dWVyZ2VuIEdyb3NzLCBvbiBGcmkgMDEgSnVsIDIwMTYgMTE6MzM6MjcgKzAyMDAsIHdyb3RlOgo+
PiBJbnN0ZWFkIG9mIGEgTGludXgga2VybmVsIGJhc2VkIGltcGxlbWVudGF0aW9uIHVzZSBvbmUg
ZnJvbSBmcmVlQlNELgo+IAo+IFRoYXQnZCBiZSB1c2VmdWwgaW5kZWVkIDopCj4gCj4+IEknbSBu
b3Qgc3VyZSBhYm91dCBjb2Rpbmcgc3R5bGUgaGVyZTogc2hvdWxkIEkga2VlcCAobW9yZSBvciBs
ZXNzKSB0aGUKPj4gb25lIGZyb20gZnJlZUJTRCwgb3IgaXMgdGhlIFhlbiBzdHlsZSBwcmVmZXJy
ZWQ/Cj4gCj4gSSdkIHNheSBqdXN0IGtlZXAgdGhlIGZpbGUgYXMgaXQgaXMgdXBzdHJlYW0sIHNv
IHdlIGNhbiBzeW5jIG1vcmUgZWFzaWx5Cj4gaW4gdGhlIGZ1dHVyZS4KCk9rYXksIHRoYW5rcy4K
Cj4gCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi1ncGwuaCBiL2luY2x1ZGUvbGliLWdwbC5o
Cj4+IGluZGV4IGQ1NjAyYjIuLjc1NTc2MjcgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbGliLWdw
bC5oCj4+ICsrKyBiL2luY2x1ZGUvbGliLWdwbC5oCj4gCj4gUGxlYXNlIG1vdmUgdGhlIGNvbnRl
bnQgdG8gbGliLmggdGhlbiwgc2luY2UgaXQgd29uJ3QgYmUgZ3BsIGFueSBtb3JlLgoKT2theS4K
Cj4gRGlkIHlvdSBjaGVjayB0aGUgYm9vdCBvdXRwdXQgZS5nLiBvZiBhIHRyaXZpYWwgbWluaS1v
cyBhcHBsaWNhdGlvbj8KPiBOb3RhYmx5LCBpaXJjIHRoZXJlIHdlcmUgcGVyaGFwcyBvZGQgZm9y
bWF0aW5nIHdpdGggJXgsICVwIG9yIHN1Y2guCj4gTW92aW5nIHRvIHRoZSBwb3NpeCBiZWhhdmlv
ciB3b3VsZCBiZSBhIGdvb2QgdGhpbmcsIEknZCBqdXN0IHdhbnQgdG8KPiBrbm93IHdoZXRoZXIg
d2UgaGF2ZSBzb21lIGJlaGF2aW9yIGNoYW5nZS4KCkp1c3QgZG91YmxlIGNoZWNrZWQ6IHNvbWUg
b2YgdGhlIHByaW50cyBhcmUgbm93IHdpdGhvdXQgbGVhZGluZyB6ZXJvZXM6CgpXaXRob3V0IG15
IHBhdGNoOgoKWGVuIE1pbmltYWwgT1MhCiAgc3RhcnRfaW5mbzogMDAwMDAwMDAwMDA3NDAwMChW
QSkKICAgIG5yX3BhZ2VzOiAweDEwMDAKICBzaGFyZWRfaW5mOiAweGQ3NDUwMDAwKE1BKQogICAg
IHB0X2Jhc2U6IDAwMDAwMDAwMDAwNzcwMDAoVkEpCm5yX3B0X2ZyYW1lczogMHg1CiAgICBtZm5f
bGlzdDogMDAwMDAwMDAwMDA2YzAwMChWQSkKICAgbW9kX3N0YXJ0OiAweDAoVkEpCiAgICAgbW9k
X2xlbjogMAogICAgICAgZmxhZ3M6IDB4MAogICAgY21kX2xpbmU6CiAgICAgICBzdGFjazogMDAw
MDAwMDAwMDAyYjU0MC0wMDAwMDAwMDAwMDRiNTQwCk1NOiBJbml0CiAgICAgIF90ZXh0OiAwMDAw
MDAwMDAwMDAwMDAwKFZBKQogICAgIF9ldGV4dDogMDAwMDAwMDAwMDAxNzcwOChWQSkKICAgX2Vy
b2RhdGE6IDAwMDAwMDAwMDAwMWUwMDAoVkEpCiAgICAgX2VkYXRhOiAwMDAwMDAwMDAwMDFlNDgw
KFZBKQpzdGFjayBzdGFydDogMDAwMDAwMDAwMDAyYjU0MChWQSkKICAgICAgIF9lbmQ6IDAwMDAw
MDAwMDAwNmJhNTgoVkEpCiAgc3RhcnRfcGZuOiA3ZgogICAgbWF4X3BmbjogMTAwMApNYXBwaW5n
IG1lbW9yeSByYW5nZSAweDdmMDAwIC0gMHgxMDAwMDAwCnNldHRpbmcgMDAwMDAwMDAwMDAwMDAw
MC0wMDAwMDAwMDAwMDFlMDAwIHJlYWRvbmx5CnNraXBwZWQgMTAwMApNTTogSW5pdGlhbGlzZSBw
YWdlIGFsbG9jYXRvciBmb3IgODUwMDAoODUwMDApLTEwMDAwMDAoMTAwMDAwMCkKTU06IGRvbmUK
RGVtYW5kIG1hcCBwZm5zIGF0IDEwMDEwMDAtMDAwMDAwMjAwMTAwMTAwMC4KSW5pdGlhbGlzaW5n
IHRpbWVyIGludGVyZmFjZQpJbml0aWFsaXNpbmcgY29uc29sZSAuLi4gZG9uZS4KZ250dGFiX3Rh
YmxlIG1hcHBlZCBhdCAwMDAwMDAwMDAxMDAxMDAwLgpJbml0aWFsaXNpbmcgc2NoZWR1bGVyClRo
cmVhZCAiSWRsZSI6IHBvaW50ZXI6IDB4MDAwMDAwMDAwMDA5MDA3MCwgc3RhY2s6IDB4MDAwMDAw
MDAwMDBhMDAwMApUaHJlYWQgInhlbnN0b3JlIjogcG9pbnRlcjogMHgwMDAwMDAwMDAwMDkwMGQw
LCBzdGFjazogMHgwMDAwMDAwMDAwMGIwMDAwCnhlbmJ1cyBpbml0aWFsaXNlZCBvbiBpcnEgMSBt
Zm4gMHgxMTY2NzUKVGhyZWFkICJzaHV0ZG93biI6IHBvaW50ZXI6IDB4MDAwMDAwMDAwMDA5MDEz
MCwgc3RhY2s6IDB4MDAwMDAwMDAwMDBjMDAwMAprZXJuZWwuYzogZHVtbXkgbWFpbjogc3RhcnRf
aW5mbz0wMDAwMDAwMDAwMDRiNTQwCgpXaXRoIG15IHBhdGNoOgoKWGVuIE1pbmltYWwgT1MhCiAg
c3RhcnRfaW5mbzogMHg3NTAwMChWQSkKICAgIG5yX3BhZ2VzOiAweDEwMDAKICBzaGFyZWRfaW5m
OiAweGRiMGIwMDAwKE1BKQogICAgIHB0X2Jhc2U6IDB4NzgwMDAoVkEpCm5yX3B0X2ZyYW1lczog
MHg1CiAgICBtZm5fbGlzdDogMHg2ZDAwMChWQSkKICAgbW9kX3N0YXJ0OiAweDAoVkEpCiAgICAg
bW9kX2xlbjogMAogICAgICAgZmxhZ3M6IDB4MAogICAgY21kX2xpbmU6CiAgICAgICBzdGFjazog
MHgyYzU4MC0weDRjNTgwCk1NOiBJbml0CiAgICAgIF90ZXh0OiAwKFZBKQogICAgIF9ldGV4dDog
MHgxODNmYyhWQSkKICAgX2Vyb2RhdGE6IDB4MWYwMDAoVkEpCiAgICAgX2VkYXRhOiAweDFmNGMw
KFZBKQpzdGFjayBzdGFydDogMHgyYzU4MChWQSkKICAgICAgIF9lbmQ6IDB4NmNhOTgoVkEpCiAg
c3RhcnRfcGZuOiA4MAogICAgbWF4X3BmbjogMTAwMApNYXBwaW5nIG1lbW9yeSByYW5nZSAweDgw
MDAwIC0gMHgxMDAwMDAwCnNldHRpbmcgMC0weDFmMDAwIHJlYWRvbmx5CnNraXBwZWQgMTAwMApN
TTogSW5pdGlhbGlzZSBwYWdlIGFsbG9jYXRvciBmb3IgODYwMDAoODYwMDApLTEwMDAwMDAoMTAw
MDAwMCkKTU06IGRvbmUKRGVtYW5kIG1hcCBwZm5zIGF0IDEwMDEwMDAtMHgyMDAxMDAxMDAwLgpJ
bml0aWFsaXNpbmcgdGltZXIgaW50ZXJmYWNlCkluaXRpYWxpc2luZyBjb25zb2xlIC4uLiBkb25l
LgpnbnR0YWJfdGFibGUgbWFwcGVkIGF0IDB4MTAwMTAwMC4KSW5pdGlhbGlzaW5nIHNjaGVkdWxl
cgpUaHJlYWQgIklkbGUiOiBwb2ludGVyOiAweDB4OTEwNzAsIHN0YWNrOiAweDB4YTAwMDAKVGhy
ZWFkICJ4ZW5zdG9yZSI6IHBvaW50ZXI6IDB4MHg5MTBkMCwgc3RhY2s6IDB4MHhiMDAwMAp4ZW5i
dXMgaW5pdGlhbGlzZWQgb24gaXJxIDEgbWZuIDB4MTFhYTc2ClRocmVhZCAic2h1dGRvd24iOiBw
b2ludGVyOiAweDB4OTExMzAsIHN0YWNrOiAweDB4YzAwMDAKa2VybmVsLmM6IGR1bW15IG1haW46
IHN0YXJ0X2luZm89MHg0YzU4MAoKCkp1ZXJnZW4KCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jul 04 05:29:54 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Jul 2016 05:29: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bJwS7-0001iI-Pk; Mon, 04 Jul 2016 05:29:51 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bJwS5-0001i9-SM; Mon, 04 Jul 2016 05:29:49 +0000
Received: from [85.158.139.211] by server-3.bemta-5.messagelabs.com id
 7A/8F-01915-C44F9775; Mon, 04 Jul 2016 05:29:48 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIIsWRWlGSWpSXmKPExsVyuP0Ov67Pl8p
 wg/7PQhZvvy5htvi+ZTKTA5PH4Q9XWAIYo1gz85LyKxJYM6YsPs5ccEGy4vF2yQbGCaJdjJwc
 EgJGEm8n/mPqYuTiEBJYyCix4vYhxi5GDg5hgQCJu7O0QeIiApMYJY7Nm8sI0iAkkCix5sNWd
 hCbTUBVYsP1U6wQg+QkersnsYDYvEDx8w8ng9WzCKhITJmznx1kpqhAuMSOlb4QJYISJ2c+AS
 vnFNCVWNexAmwMs4CexI7rv6BseYntb+cwT2Dkm4WkZRaSsllIyhYwMq9i1ChOLSpLLdI1stB
 LKspMzyjJTczM0TU0MNXLTS0uTkxPzUlMKtZLzs/dxAgMunoGBsYdjH2r/A4xSnIwKYnycjmX
 hwvxJeWnVGYkFmfEF5XmpBYfYpTh4FCS4C39VBkuJFiUmp5akZaZAwx/mLQEB4+SCO9SkDRvc
 UFibnFmOkTqFKOilDjvSpCEAEgiozQPrg0Wc5cYZaWEeRkZGBiEeApSi3IzS1DlXzGKczAqCf
 NuApnCk5lXAjf9FdBiJqDFrLHlIItLEhFSUg2MCrKNv071zm3Nj+BoNim8PffvLsatc9Ui71o
 lXE3Rd80NPKXtftr4YIN3isD11HWZcTGXDSXVb7LzF8mxF+kcXDt3ZcG3iNbQdzPPvd0fZvBB
 LmASW8mN2dvXnqxx1MzjusJ+9/k0+2SzvIfCdpVTRSvastLvyAj8ZV9VZ8VVcjxAS7c+5q0SS
 3FGoqEWc1FxIgBXkcyjtAIAAA==
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-6.tower-206.messagelabs.com!1467610188!48002482!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 2379 invoked from network); 4 Jul 2016 05:29:48 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-6.tower-206.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 4 Jul 2016 05:29:48 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 735A9ABA6;
 Mon,  4 Jul 2016 05:29:47 +0000 (UTC)
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
References: <1467365607-22499-1-git-send-email-jgross@suse.com>
 <20160703183547.GG5041@var.home>
From: Juergen Gross <jgross@suse.com>
X-Enigmail-Draft-Status: N1110
Message-ID: <5779F44A.50104@suse.com>
Date: Mon, 4 Jul 2016 07:29:46 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
 Thunderbird/38.7.0
MIME-Version: 1.0
In-Reply-To: <20160703183547.GG5041@var.home>
Subject: Re: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMDMvMDcvMTYgMjA6MzUsIFNhbXVlbCBUaGliYXVsdCB3cm90ZToKPiBIZWxsbywKPiAKPiBK
dWVyZ2VuIEdyb3NzLCBvbiBGcmkgMDEgSnVsIDIwMTYgMTE6MzM6MjcgKzAyMDAsIHdyb3RlOgo+
PiBJbnN0ZWFkIG9mIGEgTGludXgga2VybmVsIGJhc2VkIGltcGxlbWVudGF0aW9uIHVzZSBvbmUg
ZnJvbSBmcmVlQlNELgo+IAo+IFRoYXQnZCBiZSB1c2VmdWwgaW5kZWVkIDopCj4gCj4+IEknbSBu
b3Qgc3VyZSBhYm91dCBjb2Rpbmcgc3R5bGUgaGVyZTogc2hvdWxkIEkga2VlcCAobW9yZSBvciBs
ZXNzKSB0aGUKPj4gb25lIGZyb20gZnJlZUJTRCwgb3IgaXMgdGhlIFhlbiBzdHlsZSBwcmVmZXJy
ZWQ/Cj4gCj4gSSdkIHNheSBqdXN0IGtlZXAgdGhlIGZpbGUgYXMgaXQgaXMgdXBzdHJlYW0sIHNv
IHdlIGNhbiBzeW5jIG1vcmUgZWFzaWx5Cj4gaW4gdGhlIGZ1dHVyZS4KCk9rYXksIHRoYW5rcy4K
Cj4gCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi1ncGwuaCBiL2luY2x1ZGUvbGliLWdwbC5o
Cj4+IGluZGV4IGQ1NjAyYjIuLjc1NTc2MjcgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbGliLWdw
bC5oCj4+ICsrKyBiL2luY2x1ZGUvbGliLWdwbC5oCj4gCj4gUGxlYXNlIG1vdmUgdGhlIGNvbnRl
bnQgdG8gbGliLmggdGhlbiwgc2luY2UgaXQgd29uJ3QgYmUgZ3BsIGFueSBtb3JlLgoKT2theS4K
Cj4gRGlkIHlvdSBjaGVjayB0aGUgYm9vdCBvdXRwdXQgZS5nLiBvZiBhIHRyaXZpYWwgbWluaS1v
cyBhcHBsaWNhdGlvbj8KPiBOb3RhYmx5LCBpaXJjIHRoZXJlIHdlcmUgcGVyaGFwcyBvZGQgZm9y
bWF0aW5nIHdpdGggJXgsICVwIG9yIHN1Y2guCj4gTW92aW5nIHRvIHRoZSBwb3NpeCBiZWhhdmlv
ciB3b3VsZCBiZSBhIGdvb2QgdGhpbmcsIEknZCBqdXN0IHdhbnQgdG8KPiBrbm93IHdoZXRoZXIg
d2UgaGF2ZSBzb21lIGJlaGF2aW9yIGNoYW5nZS4KCkp1c3QgZG91YmxlIGNoZWNrZWQ6IHNvbWUg
b2YgdGhlIHByaW50cyBhcmUgbm93IHdpdGhvdXQgbGVhZGluZyB6ZXJvZXM6CgpXaXRob3V0IG15
IHBhdGNoOgoKWGVuIE1pbmltYWwgT1MhCiAgc3RhcnRfaW5mbzogMDAwMDAwMDAwMDA3NDAwMChW
QSkKICAgIG5yX3BhZ2VzOiAweDEwMDAKICBzaGFyZWRfaW5mOiAweGQ3NDUwMDAwKE1BKQogICAg
IHB0X2Jhc2U6IDAwMDAwMDAwMDAwNzcwMDAoVkEpCm5yX3B0X2ZyYW1lczogMHg1CiAgICBtZm5f
bGlzdDogMDAwMDAwMDAwMDA2YzAwMChWQSkKICAgbW9kX3N0YXJ0OiAweDAoVkEpCiAgICAgbW9k
X2xlbjogMAogICAgICAgZmxhZ3M6IDB4MAogICAgY21kX2xpbmU6CiAgICAgICBzdGFjazogMDAw
MDAwMDAwMDAyYjU0MC0wMDAwMDAwMDAwMDRiNTQwCk1NOiBJbml0CiAgICAgIF90ZXh0OiAwMDAw
MDAwMDAwMDAwMDAwKFZBKQogICAgIF9ldGV4dDogMDAwMDAwMDAwMDAxNzcwOChWQSkKICAgX2Vy
b2RhdGE6IDAwMDAwMDAwMDAwMWUwMDAoVkEpCiAgICAgX2VkYXRhOiAwMDAwMDAwMDAwMDFlNDgw
KFZBKQpzdGFjayBzdGFydDogMDAwMDAwMDAwMDAyYjU0MChWQSkKICAgICAgIF9lbmQ6IDAwMDAw
MDAwMDAwNmJhNTgoVkEpCiAgc3RhcnRfcGZuOiA3ZgogICAgbWF4X3BmbjogMTAwMApNYXBwaW5n
IG1lbW9yeSByYW5nZSAweDdmMDAwIC0gMHgxMDAwMDAwCnNldHRpbmcgMDAwMDAwMDAwMDAwMDAw
MC0wMDAwMDAwMDAwMDFlMDAwIHJlYWRvbmx5CnNraXBwZWQgMTAwMApNTTogSW5pdGlhbGlzZSBw
YWdlIGFsbG9jYXRvciBmb3IgODUwMDAoODUwMDApLTEwMDAwMDAoMTAwMDAwMCkKTU06IGRvbmUK
RGVtYW5kIG1hcCBwZm5zIGF0IDEwMDEwMDAtMDAwMDAwMjAwMTAwMTAwMC4KSW5pdGlhbGlzaW5n
IHRpbWVyIGludGVyZmFjZQpJbml0aWFsaXNpbmcgY29uc29sZSAuLi4gZG9uZS4KZ250dGFiX3Rh
YmxlIG1hcHBlZCBhdCAwMDAwMDAwMDAxMDAxMDAwLgpJbml0aWFsaXNpbmcgc2NoZWR1bGVyClRo
cmVhZCAiSWRsZSI6IHBvaW50ZXI6IDB4MDAwMDAwMDAwMDA5MDA3MCwgc3RhY2s6IDB4MDAwMDAw
MDAwMDBhMDAwMApUaHJlYWQgInhlbnN0b3JlIjogcG9pbnRlcjogMHgwMDAwMDAwMDAwMDkwMGQw
LCBzdGFjazogMHgwMDAwMDAwMDAwMGIwMDAwCnhlbmJ1cyBpbml0aWFsaXNlZCBvbiBpcnEgMSBt
Zm4gMHgxMTY2NzUKVGhyZWFkICJzaHV0ZG93biI6IHBvaW50ZXI6IDB4MDAwMDAwMDAwMDA5MDEz
MCwgc3RhY2s6IDB4MDAwMDAwMDAwMDBjMDAwMAprZXJuZWwuYzogZHVtbXkgbWFpbjogc3RhcnRf
aW5mbz0wMDAwMDAwMDAwMDRiNTQwCgpXaXRoIG15IHBhdGNoOgoKWGVuIE1pbmltYWwgT1MhCiAg
c3RhcnRfaW5mbzogMHg3NTAwMChWQSkKICAgIG5yX3BhZ2VzOiAweDEwMDAKICBzaGFyZWRfaW5m
OiAweGRiMGIwMDAwKE1BKQogICAgIHB0X2Jhc2U6IDB4NzgwMDAoVkEpCm5yX3B0X2ZyYW1lczog
MHg1CiAgICBtZm5fbGlzdDogMHg2ZDAwMChWQSkKICAgbW9kX3N0YXJ0OiAweDAoVkEpCiAgICAg
bW9kX2xlbjogMAogICAgICAgZmxhZ3M6IDB4MAogICAgY21kX2xpbmU6CiAgICAgICBzdGFjazog
MHgyYzU4MC0weDRjNTgwCk1NOiBJbml0CiAgICAgIF90ZXh0OiAwKFZBKQogICAgIF9ldGV4dDog
MHgxODNmYyhWQSkKICAgX2Vyb2RhdGE6IDB4MWYwMDAoVkEpCiAgICAgX2VkYXRhOiAweDFmNGMw
KFZBKQpzdGFjayBzdGFydDogMHgyYzU4MChWQSkKICAgICAgIF9lbmQ6IDB4NmNhOTgoVkEpCiAg
c3RhcnRfcGZuOiA4MAogICAgbWF4X3BmbjogMTAwMApNYXBwaW5nIG1lbW9yeSByYW5nZSAweDgw
MDAwIC0gMHgxMDAwMDAwCnNldHRpbmcgMC0weDFmMDAwIHJlYWRvbmx5CnNraXBwZWQgMTAwMApN
TTogSW5pdGlhbGlzZSBwYWdlIGFsbG9jYXRvciBmb3IgODYwMDAoODYwMDApLTEwMDAwMDAoMTAw
MDAwMCkKTU06IGRvbmUKRGVtYW5kIG1hcCBwZm5zIGF0IDEwMDEwMDAtMHgyMDAxMDAxMDAwLgpJ
bml0aWFsaXNpbmcgdGltZXIgaW50ZXJmYWNlCkluaXRpYWxpc2luZyBjb25zb2xlIC4uLiBkb25l
LgpnbnR0YWJfdGFibGUgbWFwcGVkIGF0IDB4MTAwMTAwMC4KSW5pdGlhbGlzaW5nIHNjaGVkdWxl
cgpUaHJlYWQgIklkbGUiOiBwb2ludGVyOiAweDB4OTEwNzAsIHN0YWNrOiAweDB4YTAwMDAKVGhy
ZWFkICJ4ZW5zdG9yZSI6IHBvaW50ZXI6IDB4MHg5MTBkMCwgc3RhY2s6IDB4MHhiMDAwMAp4ZW5i
dXMgaW5pdGlhbGlzZWQgb24gaXJxIDEgbWZuIDB4MTFhYTc2ClRocmVhZCAic2h1dGRvd24iOiBw
b2ludGVyOiAweDB4OTExMzAsIHN0YWNrOiAweDB4YzAwMDAKa2VybmVsLmM6IGR1bW15IG1haW46
IHN0YXJ0X2luZm89MHg0YzU4MAoKCkp1ZXJnZW4KCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jul 04 09:17:08 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Jul 2016 09:17:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bK003-0004b9-Om; Mon, 04 Jul 2016 09:17:07 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bK002-0004av-6T; Mon, 04 Jul 2016 09:17:06 +0000
Received: from [193.109.254.147] by server-5.bemta-14.messagelabs.com id
 9F/9C-08132-1992A775; Mon, 04 Jul 2016 09:17:05 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrALMWRWlGSWpSXmKPExsVyuP0Ov26/ZlW
 4wZa7ChZvvy5htvi+ZTKTA5PH4Q9XWAIYo1gz85LyKxJYM3r6XjEXvF3FUvHm5m3WBsauWUxd
 jJwcEgJGEm8n/gOyuTiEBBYySnw9voANJMEmoCqx4fopVhBbRMBN4sv3WWBxZoE4iTtvTzKC2
 MICfhIrVlxi6WLk4GABqr/bZAcS5hWwl3g8dTHUfDmJ6zOnM01g5FzAyLCKUaM4tagstUjXyE
 AvqSgzPaMkNzEzR9fQ0EQvN7W4ODE9NScxqVgvOT93EyPQd/UMDIw7GDsv+x1ilORgUhLl1eS
 oChfiS8pPqcxILM6ILyrNSS0+xCjDwaEkwSugAZQTLEpNT61Iy8wBBhFMWoKDR0mE96c6UJq3
 uCAxtzgzHSJ1ilGXY8uM+2uZhFjy8vNSpcR5WUFmCIAUZZTmwY2ABfQlRlkpYV5GBgYGIZ6C1
 KLczBJU+VeM4hyMSsK8wSBTeDLzSuA2vQI6ggnoCNbYcpAjShIRUlINjDtWcG+seSQ8reH1Pt
 4g9j61j9Hb/32O4DEKX3s/QknUKemsW7hy24QXD7bNEJN9aTvxotzKtZWSOXzHbxbMfnN8TvO
 mmw6ZkR3qHW47ovZHsHWzBQTzGdyp/H+hNLhigu1Srg/CjKusIp4u9EvnKr+ZPn9z7qN4rawT
 wZJ96izrNV5w9t7foMRSnJFoqMVcVJwIAPCyy29jAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1467623822!50838844!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=2.3 required=7.0 tests=BODY_FWORD,
 BODY_RANDOM_LONG,MAILTO_TO_SPAM_ADDR
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 35763 invoked from network); 4 Jul 2016 09:17:03 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-4.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 4 Jul 2016 09:17:03 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 3277BABA6;
 Mon,  4 Jul 2016 09:17:02 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Mon,  4 Jul 2016 11:16:59 +0200
Message-Id: <1467623819-31378-1-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 andrew.cooper3@citrix.com
Subject: [Minios-devel] [PATCH v2] mini-os: replace lib/printf.c with a
	version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW5zdGVhZCBvZiBhIExpbnV4IGtlcm5lbCBiYXNlZCBpbXBsZW1lbnRhdGlvbiB1c2Ugb25lIGZy
b20gZnJlZUJTRC4KCkFzIGEgcmVzdWx0IHNvbWUgb2YgdGhlIHByaW50aW5ncyB3aWxsIGNoYW5n
ZSBkdWUgdG8gbW9yZSBwb3NpeCBsaWtlCmJlaGF2aW9yIG9mICVwIGZvcm1hdCAob21pdHRpbmcg
bGVhZGluZyB6ZXJvZXMsIHByZXBlbmRpbmcgIjB4IikuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2Vu
IEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQpWMjogcmVtb3ZlIGluY2x1ZGUvbGliLWdwbC5o
IGFzIHJlcXVlc3RlZCBieSBTYW11ZWwgVGhpYmF1bHQKLS0tCiBibGtmcm9udC5jICAgICAgICB8
ICAgIDQgLQogaW5jbHVkZS9saWItZ3BsLmggfCAgIDU5IC0tCiBpbmNsdWRlL2xpYi5oICAgICB8
ICAgMjcgKy0KIGxpYi9wcmludGYuYyAgICAgIHwgMTc0NCArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogdHBtYmFjay5jICAgICAgICAgfCAgICA0
IC0KIDUgZmlsZXMgY2hhbmdlZCwgMTExOSBpbnNlcnRpb25zKCspLCA3MTkgZGVsZXRpb25zKC0p
CiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saWItZ3BsLmgKCmRpZmYgLS1naXQgYS9ibGtm
cm9udC5jIGIvYmxrZnJvbnQuYwppbmRleCBiZGI3NzY1Li5mNzQ3MjE2IDEwMDY0NAotLS0gYS9i
bGtmcm9udC5jCisrKyBiL2Jsa2Zyb250LmMKQEAgLTE3LDEwICsxNyw2IEBACiAjaW5jbHVkZSA8
bWluaS1vcy9saWIuaD4KICNpbmNsdWRlIDxmY250bC5oPgogCi0jaWZuZGVmIEhBVkVfTElCQwot
I2RlZmluZSBzdHJ0b3VsIHNpbXBsZV9zdHJ0b3VsCi0jZW5kaWYKLQogLyogTm90ZTogd2UgZ2Vu
ZXJhbGx5IGRvbid0IG5lZWQgdG8gZGlzYWJsZSBJUlFzIHNpbmNlIHdlIGhhcmRseSBkbyBhbnl0
aGluZyBpbgogICogdGhlIGludGVycnVwdCBoYW5kbGVyLiAgKi8KIApkaWZmIC0tZ2l0IGEvaW5j
bHVkZS9saWItZ3BsLmggYi9pbmNsdWRlL2xpYi1ncGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDU2MDJiMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL2xpYi1ncGwuaAorKysgL2Rl
di9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qIC0qLSAgTW9kZTpDOyBjLWJhc2ljLW9mZnNldDo0
OyB0YWItd2lkdGg6NCAtKi0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAoQykgMjAwMyAtIFJv
bGYgTmV1Z2ViYXVlciAtIEludGVsIFJlc2VhcmNoIENhbWJyaWRnZQotICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKLSAqCi0gKiAgICAgICAgRmlsZTogbGliLmgKLSAqICAgICAgQXV0aG9yOiBSb2xmIE5l
dWdlYmF1ZXIgKG5ldWdlYmFyQGRjcy5nbGEuYWMudWspCi0gKiAgICAgQ2hhbmdlczogCi0gKiAg
ICAgICAgICAgICAgCi0gKiAgICAgICAgRGF0ZTogQXVnIDIwMDMKLSAqIAotICogRW52aXJvbm1l
bnQ6IFhlbiBNaW5pbWFsIE9TCi0gKiBEZXNjcmlwdGlvbjogUmFuZG9tIHVzZWZ1bCBsaWJyYXJ5
IGZ1bmN0aW9ucywgZnJvbSBMaW51eCcKLSAqIGluY2x1ZGUvbGludXgva2VybmVsLmgKLSAqCi0g
KiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vciBtb2RpZnkKLSAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0gKiAgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBwcm9ncmFtIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlCi0gKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8K
LQotI2lmbmRlZiBfTElCX0dQTF9IXwotI2RlZmluZSBfTElCX0dQTF9IXwotCi0jaWZuZGVmIEhB
VkVfTElCQwotLyogcHJpbnRpbmcgKi8KLWV4dGVybiB1bnNpZ25lZCBsb25nIHNpbXBsZV9zdHJ0
b3VsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7Ci1leHRlcm4gbG9uZyBzaW1w
bGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7Ci1leHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIHNpbXBsZV9zdHJ0b3VsbChjb25zdCBjaGFyICosY2hhciAqKix1bnNp
Z25lZCBpbnQpOwotZXh0ZXJuIGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICos
Y2hhciAqKix1bnNpZ25lZCBpbnQpOwotCi1leHRlcm4gaW50IHNwcmludGYoY2hhciAqIGJ1Ziwg
Y29uc3QgY2hhciAqIGZtdCwgLi4uKQotCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50Ziwg
MiwgMykpKTsKLWV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZh
X2xpc3QpCi0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAyLCAwKSkpOwotZXh0ZXJu
IGludCBzbnByaW50ZihjaGFyICogYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqIGZtdCwg
Li4uKQotCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKLWV4dGVybiBp
bnQgdnNucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFf
bGlzdCBhcmdzKQotCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgMCkpKTsKLWV4
dGVybiBpbnQgc2NucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICog
Zm10LCAuLi4pCi0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwotZXh0
ZXJuIGludCB2c2NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZt
dCwgdmFfbGlzdCBhcmdzKQotCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgMCkp
KTsKLWV4dGVybiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pCi0J
X19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsIDIsIDMpKSk7Ci1leHRlcm4gaW50IHZzc2Nh
bmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCi0JX19hdHRyaWJ1dGVfXyAo
KGZvcm1hdCAoc2NhbmYsIDIsIDApKSk7Ci0jZW5kaWYKLQotI2VuZGlmIC8qIF9MSUJfR1BMX0hf
ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi5oIGIvaW5jbHVkZS9saWIuaAppbmRleCA2Mjgz
NmM3Li4zOWQ2YTE4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpYi5oCisrKyBiL2luY2x1ZGUvbGli
LmgKQEAgLTY2LDExICs2Niw2IEBACiAjaWZkZWYgSEFWRV9MSUJDCiAjaW5jbHVkZSA8c3lzL3F1
ZXVlLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNlbHNlCi0jaW5jbHVkZSA8bGliLWdwbC5oPgot
I2VuZGlmCi0KLSNpZmRlZiBIQVZFX0xJQkMKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAv
KiBzdHJpbmcgYW5kIG1lbW9yeSBtYW5pcHVsYXRpb24gKi8KQEAgLTEwNyw2ICsxMDIsMjggQEAg
Y2hhciAqc3RycmNocihjb25zdCBjaGFyICpwLCBpbnQgY2gpOwogdm9pZAkqbWVtY3B5KHZvaWQg
KnRvLCBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgbGVuKTsKIAogc2l6ZV90IHN0cm5sZW4oY29u
c3QgY2hhciAqLCBzaXplX3QpOworCit1bnNpZ25lZCBsb25nIHN0cnRvdWwoY29uc3QgY2hhciAq
bnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpOworaW50NjRfdCBzdHJ0b3EoY29uc3QgY2hh
ciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpOwordWludDY0X3Qgc3RydG91cShjb25z
dCBjaGFyICpucHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSk7CisKK2V4dGVybiBpbnQgc3By
aW50ZihjaGFyICogYnVmLCBjb25zdCBjaGFyICogZm10LCAuLi4pCisgICAgICAgIF9fYXR0cmli
dXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsKK2V4dGVybiBpbnQgdnNwcmludGYoY2hh
ciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCisgICAgICAgIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgMiwgMCkpKTsKK2V4dGVybiBpbnQgc25wcmludGYoY2hhciAqIGJ1Ziwg
c2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKKyAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOworZXh0ZXJuIGludCB2c25wcmludGYoY2hhciAq
YnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCisgICAgICAg
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgMCkpKTsKK2V4dGVybiBpbnQgc2Nu
cHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICogZm10LCAuLi4pCisg
ICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKK2V4dGVybiBp
bnQgdnNjbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZh
X2xpc3QgYXJncykKKyAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCAw
KSkpOworZXh0ZXJuIGludCBzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikK
KyAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsIDIsIDMpKSk7CitleHRlcm4g
aW50IHZzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCisgICAgICAg
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLCAyLCAwKSkpOworCiAjZW5kaWYKIAogI2lu
Y2x1ZGUgPG1pbmktb3MvY29uc29sZS5oPgpkaWZmIC0tZ2l0IGEvbGliL3ByaW50Zi5jIGIvbGli
L3ByaW50Zi5jCmluZGV4IDQwZjkyZmMuLmU0OGFiNjEgMTAwNjQ0Ci0tLSBhL2xpYi9wcmludGYu
YworKysgYi9saWIvcHJpbnRmLmMKQEAgLTEsNTAgKzEsNTMgQEAKIC8qCiAgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotICogKEMpIDIwMDMgLSBSb2xmIE5ldWdlYmF1ZXIgLSBJbnRlbCBSZXNlYXJjaCBD
YW1icmlkZ2UKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogICAgICAgIEZpbGU6IHByaW50
Zi5jCi0gKiAgICAgIEF1dGhvcjogUm9sZiBOZXVnZWJhdWVyIChuZXVnZWJhckBkY3MuZ2xhLmFj
LnVrKQotICogICAgIENoYW5nZXM6IEdyemVnb3J6IE1pbG9zIChnbTI4MUBjYW0uYWMudWspIAor
ICogICAgICBBdXRob3I6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KICAqCi0gKiAg
ICAgICAgRGF0ZTogQXVnIDIwMDMsIEF1ZyAyMDA1CisgKiAgICAgICAgRGF0ZTogSnVuIDIwMTYK
ICAqCiAgKiBFbnZpcm9ubWVudDogWGVuIE1pbmltYWwgT1MKICAqIERlc2NyaXB0aW9uOiBMaWJy
YXJ5IGZ1bmN0aW9ucyBmb3IgcHJpbnRpbmcKLSAqICAgICAgICAgICAgICAoTGludXggcG9ydCwg
bWFpbmx5IGxpYi92c3ByaW50Zi5jKQorICogICAgICAgICAgICAgIChmcmVlQlNEIHBvcnQpCiAg
KgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICAqLwogCi0vKgotICogQ29weXJpZ2h0IChDKSAxOTkx
LCAxOTkyICBMaW51cyBUb3J2YWxkcwotICovCi0KLS8qIHZzcHJpbnRmLmMgLS0gTGFycyBXaXJ6
ZW5pdXMgJiBMaW51cyBUb3J2YWxkcy4gKi8KLS8qCi0gKiBXaXJ6ZW5pdXMgd3JvdGUgdGhpcyBw
b3J0YWJseSwgVG9ydmFsZHMgZnVja2VkIGl0IHVwIDotKQotICovCi0KLS8qCi0gKiBGcmkgSnVs
IDEzIDIwMDEgQ3J1dGNoZXIgRHVubmF2YW50IDxjcnV0Y2hlcitrZXJuZWxAZGF0YXN0YWNrcy5j
b20+Ci0gKiAtIGNoYW5nZWQgdG8gcHJvdmlkZSBzbnByaW50ZiBhbmQgdnNucHJpbnRmIGZ1bmN0
aW9ucwotICogU28gRmViICAxIDE2OjUxOjMyIENFVCAyMDA0IEp1ZXJnZW4gUXVhZGUgPHF1YWRl
QGhzbnIuZGU+Ci0gKiAtIHNjbnByaW50ZiBhbmQgdnNjbnByaW50ZgorLyotCisgKiBDb3B5cmln
aHQgKGMpIDE5OTAsIDE5OTMKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh
bGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKKyAqIFRoaXMgY29kZSBpcyBkZXJp
dmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gQmVya2VsZXkgYnkKKyAqIENocmlzIFRv
cmVrLgogICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSAq
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTEgVGhlIEZyZWVCU0QgRm91bmRhdGlvbgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBv
cnRpb25zIG9mIHRoaXMgc29mdHdhcmUgd2VyZSBkZXZlbG9wZWQgYnkgRGF2aWQgQ2hpc25hbGwK
KyAqIHVuZGVyIHNwb25zb3JzaGlwIGZyb20gdGhlIEZyZWVCU0QgRm91bmRhdGlvbi4KICAqCi0g
KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBV
bml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
ICAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgogICovCiAKICNpZiAhZGVmaW5lZCBIQVZF
X0xJQkMKQEAgLTU3LDQ0OSArNjAsNTI5IEBACiAjaW5jbHVkZSA8bWluaS1vcy9jdHlwZS5oPgog
I2luY2x1ZGUgPG1pbmktb3MvcG9zaXgvbGltaXRzLmg+CiAKLS8qKgotICogc2ltcGxlX3N0cnRv
dWwgLSBjb252ZXJ0IGEgc3RyaW5nIHRvIGFuIHVuc2lnbmVkIGxvbmcKLSAqIEBjcDogVGhlIHN0
YXJ0IG9mIHRoZSBzdHJpbmcKLSAqIEBlbmRwOiBBIHBvaW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUg
cGFyc2VkIHN0cmluZyB3aWxsIGJlIHBsYWNlZCBoZXJlCi0gKiBAYmFzZTogVGhlIG51bWJlciBi
YXNlIHRvIHVzZQorI2RlZmluZSBfX0RFQ09OU1QodHlwZSwgdmFyKSAgICAoKHR5cGUpKHVpbnRw
dHJfdCkoY29uc3Qgdm9pZCAqKSh2YXIpKQorLyogNjQgYml0cyArIDAtQnl0ZSBhdCBlbmQgKi8K
KyNkZWZpbmUgTUFYTkJVRgk2NQorCitzdGF0aWMgY2hhciBjb25zdCBoZXgyYXNjaWlfZGF0YVtd
ID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisvKgorICogUHV0IGEg
TlVMLXRlcm1pbmF0ZWQgQVNDSUkgbnVtYmVyIChiYXNlIDw9IDM2KSBpbiBhIGJ1ZmZlciBpbiBy
ZXZlcnNlCisgKiBvcmRlcjsgcmV0dXJuIGFuIG9wdGlvbmFsIGxlbmd0aCBhbmQgYSBwb2ludGVy
IHRvIHRoZSBsYXN0IGNoYXJhY3RlcgorICogd3JpdHRlbiBpbiB0aGUgYnVmZmVyIChpLmUuLCB0
aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcpLgorICogVGhlIGJ1ZmZlciBwb2ludGVk
IHRvIGJ5IGBuYnVmJyBtdXN0IGhhdmUgbGVuZ3RoID49IE1BWE5CVUYuCiAgKi8KLXVuc2lnbmVk
IGxvbmcgc2ltcGxlX3N0cnRvdWwoY29uc3QgY2hhciAqY3AsY2hhciAqKmVuZHAsdW5zaWduZWQg
aW50IGJhc2UpCitzdGF0aWMgY2hhciAqCitrc3ByaW50bihjaGFyICpuYnVmLCB1aW50bWF4X3Qg
bnVtLCBpbnQgYmFzZSwgaW50ICpsZW5wLCBpbnQgdXBwZXIpCiB7Ci0gICAgdW5zaWduZWQgbG9u
ZyByZXN1bHQgPSAwLHZhbHVlOwotCi0gICAgaWYgKCFiYXNlKSB7Ci0gICAgICAgIGJhc2UgPSAx
MDsKLSAgICAgICAgaWYgKCpjcCA9PSAnMCcpIHsKLSAgICAgICAgICAgIGJhc2UgPSA4OwotICAg
ICAgICAgICAgY3ArKzsKLSAgICAgICAgICAgIGlmICgoKmNwID09ICd4JykgJiYgaXN4ZGlnaXQo
Y3BbMV0pKSB7Ci0gICAgICAgICAgICAgICAgY3ArKzsKLSAgICAgICAgICAgICAgICBiYXNlID0g
MTY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKGlzeGRpZ2l0
KCpjcCkgJiYKLSAgICAgICAgICAgKHZhbHVlID0gaXNkaWdpdCgqY3ApID8gKmNwLScwJyA6IHRv
dXBwZXIoKmNwKS0nQScrMTApIDwgYmFzZSkgewotICAgICAgICByZXN1bHQgPSByZXN1bHQqYmFz
ZSArIHZhbHVlOwotICAgICAgICBjcCsrOwotICAgIH0KLSAgICBpZiAoZW5kcCkKLSAgICAgICAg
KmVuZHAgPSAoY2hhciAqKWNwOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qKgotICogc2lt
cGxlX3N0cnRvbCAtIGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBzaWduZWQgbG9uZwotICogQGNwOiBU
aGUgc3RhcnQgb2YgdGhlIHN0cmluZwotICogQGVuZHA6IEEgcG9pbnRlciB0byB0aGUgZW5kIG9m
IHRoZSBwYXJzZWQgc3RyaW5nIHdpbGwgYmUgcGxhY2VkIGhlcmUKLSAqIEBiYXNlOiBUaGUgbnVt
YmVyIGJhc2UgdG8gdXNlCi0gKi8KLWxvbmcgc2ltcGxlX3N0cnRvbChjb25zdCBjaGFyICpjcCxj
aGFyICoqZW5kcCx1bnNpZ25lZCBpbnQgYmFzZSkKLXsKLSAgICBpZigqY3A9PSctJykKLSAgICAg
ICAgcmV0dXJuIC1zaW1wbGVfc3RydG91bChjcCsxLGVuZHAsYmFzZSk7Ci0gICAgcmV0dXJuIHNp
bXBsZV9zdHJ0b3VsKGNwLGVuZHAsYmFzZSk7CisJY2hhciAqcCwgYzsKKworCXAgPSBuYnVmOwor
CSpwID0gJ1wwJzsKKwlkbyB7CisJCWMgPSBoZXgyYXNjaWlfZGF0YVtudW0gJSBiYXNlXTsKKwkJ
KisrcCA9IHVwcGVyID8gdG91cHBlcihjKSA6IGM7CisJfSB3aGlsZSAobnVtIC89IGJhc2UpOwor
CWlmIChsZW5wKQorCQkqbGVucCA9IHAgLSBuYnVmOworCXJldHVybiAocCk7CiB9CiAKLS8qKgot
ICogc2ltcGxlX3N0cnRvdWxsIC0gY29udmVydCBhIHN0cmluZyB0byBhbiB1bnNpZ25lZCBsb25n
IGxvbmcKLSAqIEBjcDogVGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcKLSAqIEBlbmRwOiBBIHBvaW50
ZXIgdG8gdGhlIGVuZCBvZiB0aGUgcGFyc2VkIHN0cmluZyB3aWxsIGJlIHBsYWNlZCBoZXJlCi0g
KiBAYmFzZTogVGhlIG51bWJlciBiYXNlIHRvIHVzZQorLyoKKyAqIENvbnZlcnQgYSBzdHJpbmcg
dG8gYW4gdW5zaWduZWQgbG9uZyBpbnRlZ2VyLgorICoKKyAqIElnbm9yZXMgYGxvY2FsZScgc3R1
ZmYuICBBc3N1bWVzIHRoYXQgdGhlIHVwcGVyIGFuZCBsb3dlciBjYXNlCisgKiBhbHBoYWJldHMg
YW5kIGRpZ2l0cyBhcmUgZWFjaCBjb250aWd1b3VzLgogICovCi11bnNpZ25lZCBsb25nIGxvbmcg
c2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKmNwLGNoYXIgKiplbmRwLHVuc2lnbmVkIGludCBi
YXNlKQordW5zaWduZWQgbG9uZworc3RydG91bChjb25zdCBjaGFyICpucHRyLCBjaGFyICoqZW5k
cHRyLCBpbnQgYmFzZSkKIHsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0ID0gMCx2YWx1
ZTsKLQotICAgIGlmICghYmFzZSkgewotICAgICAgICBiYXNlID0gMTA7Ci0gICAgICAgIGlmICgq
Y3AgPT0gJzAnKSB7Ci0gICAgICAgICAgICBiYXNlID0gODsKLSAgICAgICAgICAgIGNwKys7Ci0g
ICAgICAgICAgICBpZiAoKCpjcCA9PSAneCcpICYmIGlzeGRpZ2l0KGNwWzFdKSkgewotICAgICAg
ICAgICAgICAgIGNwKys7CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBucHRyOworICAgICAgICB1
bnNpZ25lZCBsb25nIGFjYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOworICAgICAgICB1bnNp
Z25lZCBsb25nIGN1dG9mZjsKKyAgICAgICAgaW50IG5lZyA9IDAsIGFueSwgY3V0bGltOworCisg
ICAgICAgIC8qCisgICAgICAgICAqIFNlZSBzdHJ0b2wgZm9yIGNvbW1lbnRzIGFzIHRvIHRoZSBs
b2dpYyB1c2VkLgorICAgICAgICAgKi8KKyAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGMg
PSAqcysrOworICAgICAgICB9IHdoaWxlIChpc3NwYWNlKGMpKTsKKyAgICAgICAgaWYgKGMgPT0g
Jy0nKSB7CisgICAgICAgICAgICAgICAgbmVnID0gMTsKKyAgICAgICAgICAgICAgICBjID0gKnMr
KzsKKyAgICAgICAgfSBlbHNlIGlmIChjID09ICcrJykKKyAgICAgICAgICAgICAgICBjID0gKnMr
KzsKKyAgICAgICAgaWYgKChiYXNlID09IDAgfHwgYmFzZSA9PSAxNikgJiYKKyAgICAgICAgICAg
IGMgPT0gJzAnICYmICgqcyA9PSAneCcgfHwgKnMgPT0gJ1gnKSkgeworICAgICAgICAgICAgICAg
IGMgPSBzWzFdOworICAgICAgICAgICAgICAgIHMgKz0gMjsKICAgICAgICAgICAgICAgICBiYXNl
ID0gMTY7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKGlzeGRp
Z2l0KCpjcCkgJiYgKHZhbHVlID0gaXNkaWdpdCgqY3ApID8gKmNwLScwJyA6IChpc2xvd2VyKCpj
cCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID8gdG91cHBlcigqY3ApIDogKmNwKS0nQScrMTApIDwgYmFzZSkgewotICAgICAg
ICByZXN1bHQgPSByZXN1bHQqYmFzZSArIHZhbHVlOwotICAgICAgICBjcCsrOwotICAgIH0KLSAg
ICBpZiAoZW5kcCkKLSAgICAgICAgKmVuZHAgPSAoY2hhciAqKWNwOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIGlmIChiYXNlID09IDApCisgICAgICAgICAgICAgICAgYmFzZSA9IGMgPT0g
JzAnID8gOCA6IDEwOworICAgICAgICBjdXRvZmYgPSAodW5zaWduZWQgbG9uZylVTE9OR19NQVgg
LyAodW5zaWduZWQgbG9uZyliYXNlOworICAgICAgICBjdXRsaW0gPSAodW5zaWduZWQgbG9uZylV
TE9OR19NQVggJSAodW5zaWduZWQgbG9uZyliYXNlOworICAgICAgICBmb3IgKGFjYyA9IDAsIGFu
eSA9IDA7OyBjID0gKnMrKykgeworICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0
KGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaXNhbHBoYShjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgLT0gaXN1cHBl
cihjKSA/ICdBJyAtIDEwIDogJ2EnIC0gMTA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gYmFzZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChhbnkg
PCAwIHx8IGFjYyA+IGN1dG9mZiB8fCAoYWNjID09IGN1dG9mZiAmJiBjID4gY3V0bGltKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFueSA9IC0xOworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgYW55ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFjYyAqPSBiYXNlOworICAgICAgICAgICAgICAgICAgICAgICAgYWNjICs9IGM7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChhbnkgPCAwKSB7CisgICAgICAgICAg
ICAgICAgYWNjID0gVUxPTkdfTUFYOworICAgICAgICB9IGVsc2UgaWYgKG5lZykKKyAgICAgICAg
ICAgICAgICBhY2MgPSAtYWNjOworICAgICAgICBpZiAoZW5kcHRyICE9IDApCisgICAgICAgICAg
ICAgICAgKmVuZHB0ciA9IF9fREVDT05TVChjaGFyICosIGFueSA/IHMgLSAxIDogbnB0cik7Cisg
ICAgICAgIHJldHVybiAoYWNjKTsKIH0KIAotLyoqCi0gKiBzaW1wbGVfc3RydG9sbCAtIGNvbnZl
cnQgYSBzdHJpbmcgdG8gYSBzaWduZWQgbG9uZyBsb25nCi0gKiBAY3A6IFRoZSBzdGFydCBvZiB0
aGUgc3RyaW5nCi0gKiBAZW5kcDogQSBwb2ludGVyIHRvIHRoZSBlbmQgb2YgdGhlIHBhcnNlZCBz
dHJpbmcgd2lsbCBiZSBwbGFjZWQgaGVyZQotICogQGJhc2U6IFRoZSBudW1iZXIgYmFzZSB0byB1
c2UKKy8qCisgKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgcXVhZCBpbnRlZ2VyLgorICoKKyAqIEln
bm9yZXMgYGxvY2FsZScgc3R1ZmYuICBBc3N1bWVzIHRoYXQgdGhlIHVwcGVyIGFuZCBsb3dlciBj
YXNlCisgKiBhbHBoYWJldHMgYW5kIGRpZ2l0cyBhcmUgZWFjaCBjb250aWd1b3VzLgogICovCi1s
b25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAqY3AsY2hhciAqKmVuZHAsdW5zaWdu
ZWQgaW50IGJhc2UpCi17Ci0gICAgaWYoKmNwPT0nLScpCi0gICAgICAgIHJldHVybiAtc2ltcGxl
X3N0cnRvdWxsKGNwKzEsZW5kcCxiYXNlKTsKLSAgICByZXR1cm4gc2ltcGxlX3N0cnRvdWxsKGNw
LGVuZHAsYmFzZSk7Ci19Ci0KLXN0YXRpYyBpbnQgc2tpcF9hdG9pKGNvbnN0IGNoYXIgKipzKQot
ewotICAgIGludCBpPTA7Ci0KLSAgICB3aGlsZSAoaXNkaWdpdCgqKnMpKQotICAgICAgICBpID0g
aSoxMCArICooKCpzKSsrKSAtICcwJzsKLSAgICByZXR1cm4gaTsKLX0KLQotI2RlZmluZSBaRVJP
UEFEIDEgICAgICAgICAgICAgICAvKiBwYWQgd2l0aCB6ZXJvICovCi0jZGVmaW5lIFNJR04gICAg
MiAgICAgICAgICAgICAgIC8qIHVuc2lnbmVkL3NpZ25lZCBsb25nICovCi0jZGVmaW5lIFBMVVMg
ICAgNCAgICAgICAgICAgICAgIC8qIHNob3cgcGx1cyAqLwotI2RlZmluZSBTUEFDRSAgIDggICAg
ICAgICAgICAgICAvKiBzcGFjZSBpZiBwbHVzICovCi0jZGVmaW5lIExFRlQgICAgMTYgICAgICAg
ICAgICAgIC8qIGxlZnQganVzdGlmaWVkICovCi0jZGVmaW5lIFNQRUNJQUwgMzIgICAgICAgICAg
ICAgIC8qIDB4ICovCi0jZGVmaW5lIExBUkdFICAgNjQgICAgICAgICAgICAgIC8qIHVzZSAnQUJD
REVGJyBpbnN0ZWFkIG9mICdhYmNkZWYnICovCi0KLXN0YXRpYyBjaGFyICogbnVtYmVyKGNoYXIg
KiBidWYsIGNoYXIgKiBlbmQsIGxvbmcgbG9uZyBudW0sIGludCBiYXNlLCBpbnQgc2l6ZSwgaW50
IHByZWNpc2lvbiwgaW50IHR5cGUpCitpbnQ2NF90CitzdHJ0b3EoY29uc3QgY2hhciAqbnB0ciwg
Y2hhciAqKmVuZHB0ciwgaW50IGJhc2UpCiB7Ci0gICAgY2hhciBjLHNpZ24sdG1wWzY2XTsKLSAg
ICBjb25zdCBjaGFyICpkaWdpdHM7Ci0gICAgY29uc3QgY2hhciBzbWFsbF9kaWdpdHNbXSA9ICIw
MTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotICAgIGNvbnN0IGNoYXIgbGFy
Z2VfZGlnaXRzW10gPSAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjsKLSAg
ICBpbnQgaTsKLQotICAgIGRpZ2l0cyA9ICh0eXBlICYgTEFSR0UpID8gbGFyZ2VfZGlnaXRzIDog
c21hbGxfZGlnaXRzOwotICAgIGlmICh0eXBlICYgTEVGVCkKLSAgICAgICAgdHlwZSAmPSB+WkVS
T1BBRDsKLSAgICBpZiAoYmFzZSA8IDIgfHwgYmFzZSA+IDM2KQotICAgICAgICByZXR1cm4gYnVm
OwotICAgIGMgPSAodHlwZSAmIFpFUk9QQUQpID8gJzAnIDogJyAnOwotICAgIHNpZ24gPSAwOwot
ICAgIGlmICh0eXBlICYgU0lHTikgewotICAgICAgICBpZiAobnVtIDwgMCkgewotICAgICAgICAg
ICAgc2lnbiA9ICctJzsKLSAgICAgICAgICAgIG51bSA9IC1udW07Ci0gICAgICAgICAgICBzaXpl
LS07Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSAmIFBMVVMpIHsKLSAgICAgICAgICAgIHNpZ24g
PSAnKyc7Ci0gICAgICAgICAgICBzaXplLS07Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSAmIFNQ
QUNFKSB7Ci0gICAgICAgICAgICBzaWduID0gJyAnOwotICAgICAgICAgICAgc2l6ZS0tOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGlmICh0eXBlICYgU1BFQ0lBTCkgewotICAgICAgICBpZiAoYmFz
ZSA9PSAxNikKLSAgICAgICAgICAgIHNpemUgLT0gMjsKLSAgICAgICAgZWxzZSBpZiAoYmFzZSA9
PSA4KQotICAgICAgICAgICAgc2l6ZS0tOwotICAgIH0KLSAgICBpID0gMDsKLSAgICBpZiAobnVt
ID09IDApCi0gICAgICAgIHRtcFtpKytdPScwJzsKLSAgICBlbHNlIAotICAgIHsKLSAgICAgICAg
LyogWFhYIEtBRjogZm9yY2UgdW5zaWduZWQgbW9kIGFuZCBkaXYuICovCi0gICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBudW0yPSh1bnNpZ25lZCBsb25nIGxvbmcpbnVtOwotICAgICAgICB1bnNp
Z25lZCBpbnQgYmFzZTI9KHVuc2lnbmVkIGludCliYXNlOwotICAgICAgICB3aGlsZSAobnVtMiAh
PSAwKSB7IHRtcFtpKytdID0gZGlnaXRzW251bTIlYmFzZTJdOyBudW0yIC89IGJhc2UyOyB9Ci0g
ICAgfQotICAgIGlmIChpID4gcHJlY2lzaW9uKQotICAgICAgICBwcmVjaXNpb24gPSBpOwotICAg
IHNpemUgLT0gcHJlY2lzaW9uOwotICAgIGlmICghKHR5cGUmKFpFUk9QQUQrTEVGVCkpKSB7Ci0g
ICAgICAgIHdoaWxlKHNpemUtLT4wKSB7Ci0gICAgICAgICAgICBpZiAoYnVmIDw9IGVuZCkKLSAg
ICAgICAgICAgICAgICAqYnVmID0gJyAnOwotICAgICAgICAgICAgKytidWY7CisgICAgICAgIGNv
bnN0IGNoYXIgKnM7CisgICAgICAgIHVpbnQ2NF90IGFjYzsKKyAgICAgICAgdW5zaWduZWQgY2hh
ciBjOworICAgICAgICB1aW50NjRfdCBxYmFzZSwgY3V0b2ZmOworICAgICAgICBpbnQgbmVnLCBh
bnksIGN1dGxpbTsKKworICAgICAgICAvKgorICAgICAgICAgKiBTa2lwIHdoaXRlIHNwYWNlIGFu
ZCBwaWNrIHVwIGxlYWRpbmcgKy8tIHNpZ24gaWYgYW55LgorICAgICAgICAgKiBJZiBiYXNlIGlz
IDAsIGFsbG93IDB4IGZvciBoZXggYW5kIDAgZm9yIG9jdGFsLCBlbHNlCisgICAgICAgICAqIGFz
c3VtZSBkZWNpbWFsOyBpZiBiYXNlIGlzIGFscmVhZHkgMTYsIGFsbG93IDB4LgorICAgICAgICAg
Ki8KKyAgICAgICAgcyA9IG5wdHI7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBjID0g
KnMrKzsKKyAgICAgICAgfSB3aGlsZSAoaXNzcGFjZShjKSk7CisgICAgICAgIGlmIChjID09ICct
JykgeworICAgICAgICAgICAgICAgIG5lZyA9IDE7CisgICAgICAgICAgICAgICAgYyA9ICpzKys7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmVnID0gMDsKKyAgICAgICAgICAg
ICAgICBpZiAoYyA9PSAnKycpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsKICAg
ICAgICAgfQotICAgIH0KLSAgICBpZiAoc2lnbikgewotICAgICAgICBpZiAoYnVmIDw9IGVuZCkK
LSAgICAgICAgICAgICpidWYgPSBzaWduOwotICAgICAgICArK2J1ZjsKLSAgICB9Ci0gICAgaWYg
KHR5cGUgJiBTUEVDSUFMKSB7Ci0gICAgICAgIGlmIChiYXNlPT04KSB7Ci0gICAgICAgICAgICBp
ZiAoYnVmIDw9IGVuZCkKLSAgICAgICAgICAgICAgICAqYnVmID0gJzAnOwotICAgICAgICAgICAg
KytidWY7Ci0gICAgICAgIH0gZWxzZSBpZiAoYmFzZT09MTYpIHsKLSAgICAgICAgICAgIGlmIChi
dWYgPD0gZW5kKQotICAgICAgICAgICAgICAgICpidWYgPSAnMCc7Ci0gICAgICAgICAgICArK2J1
ZjsKLSAgICAgICAgICAgIGlmIChidWYgPD0gZW5kKQotICAgICAgICAgICAgICAgICpidWYgPSBk
aWdpdHNbMzNdOwotICAgICAgICAgICAgKytidWY7CisgICAgICAgIGlmICgoYmFzZSA9PSAwIHx8
IGJhc2UgPT0gMTYpICYmCisgICAgICAgICAgICBjID09ICcwJyAmJiAoKnMgPT0gJ3gnIHx8ICpz
ID09ICdYJykpIHsKKyAgICAgICAgICAgICAgICBjID0gc1sxXTsKKyAgICAgICAgICAgICAgICBz
ICs9IDI7CisgICAgICAgICAgICAgICAgYmFzZSA9IDE2OwogICAgICAgICB9Ci0gICAgfQotICAg
IGlmICghKHR5cGUgJiBMRUZUKSkgewotICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAg
ICAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCi0gICAgICAgICAgICAgICAgKmJ1ZiA9IGM7Ci0gICAg
ICAgICAgICArK2J1ZjsKKyAgICAgICAgaWYgKGJhc2UgPT0gMCkKKyAgICAgICAgICAgICAgICBi
YXNlID0gYyA9PSAnMCcgPyA4IDogMTA7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29tcHV0
ZSB0aGUgY3V0b2ZmIHZhbHVlIGJldHdlZW4gbGVnYWwgbnVtYmVycyBhbmQgaWxsZWdhbAorICAg
ICAgICAgKiBudW1iZXJzLiAgVGhhdCBpcyB0aGUgbGFyZ2VzdCBsZWdhbCB2YWx1ZSwgZGl2aWRl
ZCBieSB0aGUKKyAgICAgICAgICogYmFzZS4gIEFuIGlucHV0IG51bWJlciB0aGF0IGlzIGdyZWF0
ZXIgdGhhbiB0aGlzIHZhbHVlLCBpZgorICAgICAgICAgKiBmb2xsb3dlZCBieSBhIGxlZ2FsIGlu
cHV0IGNoYXJhY3RlciwgaXMgdG9vIGJpZy4gIE9uZSB0aGF0CisgICAgICAgICAqIGlzIGVxdWFs
IHRvIHRoaXMgdmFsdWUgbWF5IGJlIHZhbGlkIG9yIG5vdDsgdGhlIGxpbWl0CisgICAgICAgICAq
IGJldHdlZW4gdmFsaWQgYW5kIGludmFsaWQgbnVtYmVycyBpcyB0aGVuIGJhc2VkIG9uIHRoZSBs
YXN0CisgICAgICAgICAqIGRpZ2l0LiAgRm9yIGluc3RhbmNlLCBpZiB0aGUgcmFuZ2UgZm9yIHF1
YWRzIGlzCisgICAgICAgICAqIFstOTIyMzM3MjAzNjg1NDc3NTgwOC4uOTIyMzM3MjAzNjg1NDc3
NTgwN10gYW5kIHRoZSBpbnB1dCBiYXNlCisgICAgICAgICAqIGlzIDEwLCBjdXRvZmYgd2lsbCBi
ZSBzZXQgdG8gOTIyMzM3MjAzNjg1NDc3NTgwIGFuZCBjdXRsaW0gdG8KKyAgICAgICAgICogZWl0
aGVyIDcgKG5lZz09MCkgb3IgOCAobmVnPT0xKSwgbWVhbmluZyB0aGF0IGlmIHdlIGhhdmUKKyAg
ICAgICAgICogYWNjdW11bGF0ZWQgYSB2YWx1ZSA+IDkyMjMzNzIwMzY4NTQ3NzU4MCwgb3IgZXF1
YWwgYnV0IHRoZQorICAgICAgICAgKiBuZXh0IGRpZ2l0IGlzID4gNyAob3IgOCksIHRoZSBudW1i
ZXIgaXMgdG9vIGJpZywgYW5kIHdlIHdpbGwKKyAgICAgICAgICogcmV0dXJuIGEgcmFuZ2UgZXJy
b3IuCisgICAgICAgICAqCisgICAgICAgICAqIFNldCBhbnkgaWYgYW55IGBkaWdpdHMnIGNvbnN1
bWVkOyBtYWtlIGl0IG5lZ2F0aXZlIHRvIGluZGljYXRlCisgICAgICAgICAqIG92ZXJmbG93Lgor
ICAgICAgICAgKi8KKyAgICAgICAgcWJhc2UgPSAodW5zaWduZWQpYmFzZTsKKyAgICAgICAgY3V0
b2ZmID0gbmVnID8gKHVpbnQ2NF90KS0oTExPTkdfTUlOICsgTExPTkdfTUFYKSArIExMT05HX01B
WCA6IExMT05HX01BWDsKKyAgICAgICAgY3V0bGltID0gY3V0b2ZmICUgcWJhc2U7CisgICAgICAg
IGN1dG9mZiAvPSBxYmFzZTsKKyAgICAgICAgZm9yIChhY2MgPSAwLCBhbnkgPSAwOzsgYyA9ICpz
KyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzYXNjaWkoYykpCisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGMgLT0gJzAnOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzYWxw
aGEoYykpCisgICAgICAgICAgICAgICAgICAgICAgICBjIC09IGlzdXBwZXIoYykgPyAnQScgLSAx
MCA6ICdhJyAtIDEwOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChjID49IGJhc2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoYW55IDwgMCB8fCBhY2MgPiBj
dXRvZmYgfHwgKGFjYyA9PSBjdXRvZmYgJiYgYyA+IGN1dGxpbSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBhbnkgPSAtMTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFueSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBhY2MgKj0gcWJhc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBhY2MgKz0gYzsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKGkgPCBwcmVjaXNpb24tLSkgewotICAgICAgICBp
ZiAoYnVmIDw9IGVuZCkKLSAgICAgICAgICAgICpidWYgPSAnMCc7Ci0gICAgICAgICsrYnVmOwot
ICAgIH0KLSAgICB3aGlsZSAoaS0tID4gMCkgewotICAgICAgICBpZiAoYnVmIDw9IGVuZCkKLSAg
ICAgICAgICAgICpidWYgPSB0bXBbaV07Ci0gICAgICAgICsrYnVmOwotICAgIH0KLSAgICB3aGls
ZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBpZiAoYnVmIDw9IGVuZCkKLSAgICAgICAgICAgICpi
dWYgPSAnICc7Ci0gICAgICAgICsrYnVmOwotICAgIH0KLSAgICByZXR1cm4gYnVmOworICAgICAg
ICBpZiAoYW55IDwgMCkgeworICAgICAgICAgICAgICAgIGFjYyA9IG5lZyA/IExMT05HX01JTiA6
IExMT05HX01BWDsKKyAgICAgICAgfSBlbHNlIGlmIChuZWcpCisgICAgICAgICAgICAgICAgYWNj
ID0gLWFjYzsKKyAgICAgICAgaWYgKGVuZHB0ciAhPSAwKQorICAgICAgICAgICAgICAgICplbmRw
dHIgPSBfX0RFQ09OU1QoY2hhciAqLCBhbnkgPyBzIC0gMSA6IG5wdHIpOworICAgICAgICByZXR1
cm4gKGFjYyk7CiB9CiAKLS8qKgotKiB2c25wcmludGYgLSBGb3JtYXQgYSBzdHJpbmcgYW5kIHBs
YWNlIGl0IGluIGEgYnVmZmVyCi0qIEBidWY6IFRoZSBidWZmZXIgdG8gcGxhY2UgdGhlIHJlc3Vs
dCBpbnRvCi0qIEBzaXplOiBUaGUgc2l6ZSBvZiB0aGUgYnVmZmVyLCBpbmNsdWRpbmcgdGhlIHRy
YWlsaW5nIG51bGwgc3BhY2UKLSogQGZtdDogVGhlIGZvcm1hdCBzdHJpbmcgdG8gdXNlCi0qIEBh
cmdzOiBBcmd1bWVudHMgZm9yIHRoZSBmb3JtYXQgc3RyaW5nCi0qCi0qIENhbGwgdGhpcyBmdW5j
dGlvbiBpZiB5b3UgYXJlIGFscmVhZHkgZGVhbGluZyB3aXRoIGEgdmFfbGlzdC4KLSogWW91IHBy
b2JhYmx5IHdhbnQgc25wcmludGYgaW5zdGVhZC4KKy8qCisgKiBDb252ZXJ0IGEgc3RyaW5nIHRv
IGFuIHVuc2lnbmVkIHF1YWQgaW50ZWdlci4KKyAqCisgKiBJZ25vcmVzIGBsb2NhbGUnIHN0dWZm
LiAgQXNzdW1lcyB0aGF0IHRoZSB1cHBlciBhbmQgbG93ZXIgY2FzZQorICogYWxwaGFiZXRzIGFu
ZCBkaWdpdHMgYXJlIGVhY2ggY29udGlndW91cy4KICAqLwotaW50IHZzbnByaW50ZihjaGFyICpi
dWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykKK3VpbnQ2NF90
CitzdHJ0b3VxKGNvbnN0IGNoYXIgKm5wdHIsIGNoYXIgKiplbmRwdHIsIGludCBiYXNlKQogewot
ICAgIGludCBsZW47Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG51bTsKLSAgICBpbnQgaSwgYmFz
ZTsKLSAgICBjaGFyICpzdHIsICplbmQsIGM7Ci0gICAgY29uc3QgY2hhciAqczsKLQotICAgIGlu
dCBmbGFnczsgICAgICAgICAgLyogZmxhZ3MgdG8gbnVtYmVyKCkgKi8KLQotICAgIGludCBmaWVs
ZF93aWR0aDsgICAgLyogd2lkdGggb2Ygb3V0cHV0IGZpZWxkICovCi0gICAgaW50IHByZWNpc2lv
bjsgICAgICAgICAgICAgIC8qIG1pbi4gIyBvZiBkaWdpdHMgZm9yIGludGVnZXJzOyBtYXgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGNoYXJzIGZvciBmcm9t
IHN0cmluZyAqLwotICAgIGludCBxdWFsaWZpZXI7ICAgICAgICAgICAgICAvKiAnaCcsICdsJywg
b3IgJ0wnIGZvciBpbnRlZ2VyIGZpZWxkcyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiAneicgc3VwcG9ydCBhZGRlZCAyMy83LzE5OTkgUy5ILiAgICAqLwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiAneicgY2hhbmdlZCB0byAnWicgLS1kYXZpZG0gMS8y
NS85OSAqLwotCi0gICAgc3RyID0gYnVmOwotICAgIGVuZCA9IGJ1ZiArIHNpemUgLSAxOwotCi0g
ICAgaWYgKGVuZCA8IGJ1ZiAtIDEpIHsKLSAgICAgICAgZW5kID0gKCh2b2lkICopIC0xKTsKLSAg
ICAgICAgc2l6ZSA9IGVuZCAtIGJ1ZiArIDE7Ci0gICAgfQotCi0gICAgZm9yICg7ICpmbXQgOyAr
K2ZtdCkgewotICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKLSAgICAgICAgICAgIGlmIChzdHIg
PD0gZW5kKQotICAgICAgICAgICAgICAgICpzdHIgPSAqZm10OwotICAgICAgICAgICAgKytzdHI7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIHByb2Nlc3Mg
ZmxhZ3MgKi8KLSAgICAgICAgZmxhZ3MgPSAwOwotICAgIHJlcGVhdDoKLSAgICAgICAgKytmbXQ7
ICAgICAgICAgIC8qIHRoaXMgYWxzbyBza2lwcyBmaXJzdCAnJScgKi8KLSAgICAgICAgc3dpdGNo
ICgqZm10KSB7Ci0gICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBMRUZUOyBnb3RvIHJlcGVhdDsK
LSAgICAgICAgY2FzZSAnKyc6IGZsYWdzIHw9IFBMVVM7IGdvdG8gcmVwZWF0OwotICAgICAgICBj
YXNlICcgJzogZmxhZ3MgfD0gU1BBQ0U7IGdvdG8gcmVwZWF0OwotICAgICAgICBjYXNlICcjJzog
ZmxhZ3MgfD0gU1BFQ0lBTDsgZ290byByZXBlYXQ7Ci0gICAgICAgIGNhc2UgJzAnOiBmbGFncyB8
PSBaRVJPUEFEOyBnb3RvIHJlcGVhdDsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIGdldCBmaWVs
ZCB3aWR0aCAqLwotICAgICAgICBmaWVsZF93aWR0aCA9IC0xOwotICAgICAgICBpZiAoaXNkaWdp
dCgqZm10KSkKLSAgICAgICAgICAgIGZpZWxkX3dpZHRoID0gc2tpcF9hdG9pKCZmbXQpOwotICAg
ICAgICBlbHNlIGlmICgqZm10ID09ICcqJykgewotICAgICAgICAgICAgKytmbXQ7Ci0gICAgICAg
ICAgICAvKiBpdCdzIHRoZSBuZXh0IGFyZ3VtZW50ICovCi0gICAgICAgICAgICBmaWVsZF93aWR0
aCA9IHZhX2FyZyhhcmdzLCBpbnQpOwotICAgICAgICAgICAgaWYgKGZpZWxkX3dpZHRoIDwgMCkg
ewotICAgICAgICAgICAgICAgIGZpZWxkX3dpZHRoID0gLWZpZWxkX3dpZHRoOwotICAgICAgICAg
ICAgICAgIGZsYWdzIHw9IExFRlQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICAvKiBnZXQgdGhlIHByZWNpc2lvbiAqLwotICAgICAgICBwcmVjaXNpb24gPSAtMTsKLSAgICAg
ICAgaWYgKCpmbXQgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2ZtdDsKLSAgICAgICAgICAgIGlm
IChpc2RpZ2l0KCpmbXQpKQotICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IHNraXBfYXRvaSgm
Zm10KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJyonKSB7Ci0gICAgICAgICAgICAg
ICAgKytmbXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGl0J3MgdGhlIG5leHQgYXJn
dW1lbnQgKi8KLSAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSB2YV9hcmcoYXJncywgaW50KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwcmVjaXNpb24gPCAwKQotICAgICAgICAg
ICAgICAgIHByZWNpc2lvbiA9IDA7CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBucHRyOworICAg
ICAgICB1aW50NjRfdCBhY2M7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKKyAgICAgICAgdWlu
dDY0X3QgcWJhc2UsIGN1dG9mZjsKKyAgICAgICAgaW50IG5lZywgYW55LCBjdXRsaW07CisKKyAg
ICAgICAgLyoKKyAgICAgICAgICogU2VlIHN0cnRvcSBmb3IgY29tbWVudHMgYXMgdG8gdGhlIGxv
Z2ljIHVzZWQuCisgICAgICAgICAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgYyA9
ICpzKys7CisgICAgICAgIH0gd2hpbGUgKGlzc3BhY2UoYykpOworICAgICAgICBpZiAoYyA9PSAn
LScpIHsKKyAgICAgICAgICAgICAgICBuZWcgPSAxOworICAgICAgICAgICAgICAgIGMgPSAqcysr
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5lZyA9IDA7CisgICAgICAgICAg
ICAgICAgaWYgKGMgPT0gJysnKQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpzKys7CiAg
ICAgICAgIH0KLQotICAgICAgICAvKiBnZXQgdGhlIGNvbnZlcnNpb24gcXVhbGlmaWVyICovCi0g
ICAgICAgIHF1YWxpZmllciA9IC0xOwotICAgICAgICBpZiAoKmZtdCA9PSAnaCcgfHwgKmZtdCA9
PSAnbCcgfHwgKmZtdCA9PSAnTCcgfHwgKmZtdCA9PSdaJyB8fCAqZm10ID09ICd6JykgewotICAg
ICAgICAgICAgcXVhbGlmaWVyID0gKmZtdDsKLSAgICAgICAgICAgICsrZm10OwotICAgICAgICAg
ICAgaWYgKHF1YWxpZmllciA9PSAnbCcgJiYgKmZtdCA9PSAnbCcpIHsKLSAgICAgICAgICAgICAg
ICBxdWFsaWZpZXIgPSAnTCc7Ci0gICAgICAgICAgICAgICAgKytmbXQ7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKHF1YWxpZmllciA9PSAneicpIHsKLSAgICAgICAgICAgICAgICBxdWFsaWZpZXIg
PSAnWic7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICgoYmFzZSA9PSAwIHx8IGJhc2UgPT0g
MTYpICYmCisgICAgICAgICAgICBjID09ICcwJyAmJiAoKnMgPT0gJ3gnIHx8ICpzID09ICdYJykp
IHsKKyAgICAgICAgICAgICAgICBjID0gc1sxXTsKKyAgICAgICAgICAgICAgICBzICs9IDI7Cisg
ICAgICAgICAgICAgICAgYmFzZSA9IDE2OwogICAgICAgICB9Ci0gICAgICAgIGlmICgqZm10ID09
ICdxJykgewotICAgICAgICAgICAgcXVhbGlmaWVyID0gJ0wnOwotICAgICAgICAgICAgKytmbXQ7
CisgICAgICAgIGlmIChiYXNlID09IDApCisgICAgICAgICAgICAgICAgYmFzZSA9IGMgPT0gJzAn
ID8gOCA6IDEwOworICAgICAgICBxYmFzZSA9ICh1bnNpZ25lZCliYXNlOworICAgICAgICBjdXRv
ZmYgPSAodWludDY0X3QpVUxMT05HX01BWCAvIHFiYXNlOworICAgICAgICBjdXRsaW0gPSAodWlu
dDY0X3QpVUxMT05HX01BWCAlIHFiYXNlOworICAgICAgICBmb3IgKGFjYyA9IDAsIGFueSA9IDA7
OyBjID0gKnMrKykgeworICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0KGMpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaXNhbHBoYShjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgLT0gaXN1cHBlcihjKSA/
ICdBJyAtIDEwIDogJ2EnIC0gMTA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gYmFzZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChhbnkgPCAwIHx8
IGFjYyA+IGN1dG9mZiB8fCAoYWNjID09IGN1dG9mZiAmJiBjID4gY3V0bGltKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFueSA9IC0xOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgYW55ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYyAq
PSBxYmFzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYyArPSBjOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoYW55IDwgMCkgeworICAgICAgICAgICAgICAg
IGFjYyA9IFVMTE9OR19NQVg7CisgICAgICAgIH0gZWxzZSBpZiAobmVnKQorICAgICAgICAgICAg
ICAgIGFjYyA9IC1hY2M7CisgICAgICAgIGlmIChlbmRwdHIgIT0gMCkKKyAgICAgICAgICAgICAg
ICAqZW5kcHRyID0gX19ERUNPTlNUKGNoYXIgKiwgYW55ID8gcyAtIDEgOiBucHRyKTsKKyAgICAg
ICAgcmV0dXJuIChhY2MpOworfQogCi0gICAgICAgIC8qIGRlZmF1bHQgYmFzZSAqLwotICAgICAg
ICBiYXNlID0gMTA7Ci0KLSAgICAgICAgc3dpdGNoICgqZm10KSB7Ci0gICAgICAgIGNhc2UgJ2Mn
OgotICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBMRUZUKSkgewotICAgICAgICAgICAgICAgIHdo
aWxlICgtLWZpZWxkX3dpZHRoID4gMCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RyIDw9
IGVuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdHIgPSAnICc7Ci0gICAgICAgICAgICAg
ICAgICAgICsrc3RyOworLyoKKyAqIFNjYWxlZCBkb3duIHZlcnNpb24gb2YgcHJpbnRmKDMpLgor
ICovCitpbnQKK3ZzbnByaW50ZihjaGFyICpzdHIsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICpm
bXQsIHZhX2xpc3QgYXApCit7CisjZGVmaW5lIFBDSEFSKGMpIHsgaWYgKHNpemUgPj0gMikgeyAq
c3RyKysgPSBjOyBzaXplLS07IH0gcmV0dmFsKys7IH0KKyAgICAgICAgY2hhciBuYnVmW01BWE5C
VUZdOworICAgICAgICBjb25zdCBjaGFyICpwLCAqcGVyY2VudDsKKyAgICAgICAgaW50IGNoLCBu
OworICAgICAgICB1aW50bWF4X3QgbnVtOworICAgICAgICBpbnQgYmFzZSwgbGZsYWcsIHFmbGFn
LCB0bXAsIHdpZHRoLCBsYWRqdXN0LCBzaGFycGZsYWcsIG5lZywgc2lnbiwgZG90OworICAgICAg
ICBpbnQgY2ZsYWcsIGhmbGFnLCBqZmxhZywgdGZsYWcsIHpmbGFnOworICAgICAgICBpbnQgZHdp
ZHRoLCB1cHBlcjsKKyAgICAgICAgY2hhciBwYWRjOworICAgICAgICBpbnQgc3RvcCA9IDAsIHJl
dHZhbCA9IDA7CisKKyAgICAgICAgbnVtID0gMDsKKworICAgICAgICBpZiAoZm10ID09IE5VTEwp
CisgICAgICAgICAgICAgICAgZm10ID0gIihmbXQgbnVsbClcbiI7CisKKyAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgICAgIHBhZGMgPSAnICc7CisgICAgICAgICAgICAgICAgd2lkdGgg
PSAwOworICAgICAgICAgICAgICAgIHdoaWxlICgoY2ggPSAodV9jaGFyKSpmbXQrKykgIT0gJyUn
IHx8IHN0b3ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXDAnKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaXplID49IDEpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJ1wwJzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXR2YWwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoY2gpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikgdmFf
YXJnKGFyZ3MsIGludCk7Ci0gICAgICAgICAgICBpZiAoc3RyIDw9IGVuZCkKLSAgICAgICAgICAg
ICAgICAqc3RyID0gYzsKLSAgICAgICAgICAgICsrc3RyOwotICAgICAgICAgICAgd2hpbGUgKC0t
ZmllbGRfd2lkdGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCi0gICAg
ICAgICAgICAgICAgICAgICpzdHIgPSAnICc7Ci0gICAgICAgICAgICAgICAgKytzdHI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjYXNlICdzJzoKLSAg
ICAgICAgICAgIHMgPSB2YV9hcmcoYXJncywgY2hhciAqKTsKLSAgICAgICAgICAgIGlmICghcykK
LSAgICAgICAgICAgICAgICBzID0gIjxOVUxMPiI7Ci0KLSAgICAgICAgICAgIGxlbiA9IHN0cm5s
ZW4ocywgcHJlY2lzaW9uKTsKLQotICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBMRUZUKSkgewot
ICAgICAgICAgICAgICAgIHdoaWxlIChsZW4gPCBmaWVsZF93aWR0aC0tKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciA9
ICcgJzsKLSAgICAgICAgICAgICAgICAgICAgKytzdHI7CisgICAgICAgICAgICAgICAgcGVyY2Vu
dCA9IGZtdCAtIDE7CisgICAgICAgICAgICAgICAgcWZsYWcgPSAwOyBsZmxhZyA9IDA7IGxhZGp1
c3QgPSAwOyBzaGFycGZsYWcgPSAwOyBuZWcgPSAwOworICAgICAgICAgICAgICAgIHNpZ24gPSAw
OyBkb3QgPSAwOyBkd2lkdGggPSAwOyB1cHBlciA9IDA7CisgICAgICAgICAgICAgICAgY2ZsYWcg
PSAwOyBoZmxhZyA9IDA7IGpmbGFnID0gMDsgdGZsYWcgPSAwOyB6ZmxhZyA9IDA7CityZXN3aXRj
aDogICAgICAgc3dpdGNoIChjaCA9ICh1X2NoYXIpKmZtdCsrKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSAnLic6CisgICAgICAgICAgICAgICAgICAgICAgICBkb3QgPSAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNoYXJwZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJysnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJl
c3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgICAgICAgICAg
ICAgbGFkanVzdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOwor
ICAgICAgICAgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIo
Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAnKic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRvdCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHZhX2FyZyhhcCwgaW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhZGp1c3QgPSAhbGFkanVzdDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC13aWR0aDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHdpZHRoID0gdmFfYXJnKGFwLCBpbnQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBy
ZXN3aXRjaDsKKyAgICAgICAgICAgICAgICBjYXNlICcwJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghZG90KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGMgPSAn
MCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAnMSc6IGNhc2UgJzIn
OiBjYXNlICczJzogY2FzZSAnNCc6CisgICAgICAgICAgICAgICAgY2FzZSAnNSc6IGNhc2UgJzYn
OiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKG4gPSAwOzsgKytmbXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuID0gbiAqIDEwICsgY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2ggPSAqZm10OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjaCA8ICcwJyB8fCBjaCA+ICc5JykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG90KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd2lkdGggPSBuOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG47
CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgICAgICAgICAg
IGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIodmFfYXJnKGFwLCBpbnQp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
J2QnOgorICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9zaWduOworICAgICAgICAgICAgICAgIGNhc2UgJ2gn
OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhmbGFnKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhmbGFnID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2ZsYWcgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhmbGFnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gcmVzd2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAnaic6CisgICAgICAgICAgICAg
ICAgICAgICAgICBqZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dp
dGNoOworICAgICAgICAgICAgICAgIGNhc2UgJ2wnOgorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxmbGFnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxmbGFnID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWZsYWcgPSAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxmbGFn
ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CisgICAgICAgICAg
ICAgICAgY2FzZSAnbic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoamZsYWcpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBpbnRtYXhfdCAqKSkgPSBy
ZXR2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxZmxhZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIGludDY0X3QgKikpID0gcmV0dmFs
OworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobGZsYWcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBsb25nICopKSA9IHJldHZhbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHpmbGFnKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKHZhX2FyZyhhcCwgc2l6ZV90ICopKSA9IHJldHZhbDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGhmbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqKHZhX2FyZyhhcCwgc2hvcnQgKikpID0gcmV0dmFsOworICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoY2ZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoo
dmFfYXJnKGFwLCBjaGFyICopKSA9IHJldHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIGludCAqKSkg
PSByZXR2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBoYW5kbGVfbm9zaWduOworICAgICAgICAgICAgICAgIGNhc2Ug
J3AnOgorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhcnBmbGFnID0gKHdpZHRoID09IDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgc2lnbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSAodWludHB0cl90KXZh
X2FyZyhhcCwgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbnVtYmVyOwor
ICAgICAgICAgICAgICAgIGNhc2UgJ3EnOgorICAgICAgICAgICAgICAgICAgICAgICAgcWZsYWcg
PSAxOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKyAgICAgICAgICAg
ICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzaWduKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGhhbmRsZV9zaWduOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5k
bGVfbm9zaWduOworICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgcCA9IHZhX2FyZyhhcCwgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAiKG51bGwp
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG90KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuID0gc3RybGVuIChwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGR3aWR0
aCAmJiBwW25dOyBuKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IG47CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghbGFkanVzdCAmJiB3aWR0aCA+IDApCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKHBhZGMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKG4tLSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoKnAr
Kyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFkanVzdCAmJiB3aWR0aCA+IDApCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKHBhZGMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAndCc6CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJl
c3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfbm9zaWdu
OworICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgICAgICAgICAgdXBw
ZXIgPSAxOworICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfbm9zaWdu
OworICAgICAgICAgICAgICAgIGNhc2UgJ3knOgorICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIGhhbmRsZV9zaWduOworICAgICAgICAgICAgICAgIGNhc2UgJ3onOgor
ICAgICAgICAgICAgICAgICAgICAgICAgemZsYWcgPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byByZXN3aXRjaDsKK2hhbmRsZV9ub3NpZ246CisgICAgICAgICAgICAgICAgICAgICAg
ICBzaWduID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqZmxhZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCB1aW50bWF4X3QpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocWZsYWcpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgdWludDY0X3QpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAodGZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bSA9IHZhX2FyZyhhcCwgcHRyZGlmZl90KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGxmbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9h
cmcoYXAsIHVfbG9uZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh6ZmxhZykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBzaXplX3Qp
OworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGZsYWcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bSA9ICh1bnNpZ25lZCBzaG9ydCl2YV9hcmcoYXAsIGludCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjZmxhZykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVtID0gKHVfY2hhcil2YV9hcmcoYXAsIGludCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bSA9IHZhX2FyZyhhcCwgdV9pbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBudW1i
ZXI7CitoYW5kbGVfc2lnbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqZmxhZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBpbnRtYXhfdCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxZmxhZykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBpbnQ2NF90KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHRmbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudW0gPSB2YV9hcmcoYXAsIHB0cmRpZmZfdCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChsZmxhZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0g
dmFfYXJnKGFwLCBsb25nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHpmbGFn
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIHNzaXpl
X3QpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGZsYWcpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bSA9IChzaG9ydCl2YV9hcmcoYXAsIGludCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjZmxhZykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtID0gKGNoYXIpdmFfYXJnKGFwLCBpbnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9h
cmcoYXAsIGludCk7CitudW1iZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbiAm
JiAoaW50bWF4X3QpbnVtIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZWcgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSAtKGludG1heF90
KW51bTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IHAgPSBrc3ByaW50bihuYnVmLCBudW0sIGJhc2UsICZuLCB1cHBlcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0bXAgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXJwZmxh
ZyAmJiBudW0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFz
ZSA9PSA4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCsrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChiYXNlID09IDE2KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCArPSAyOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKys7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbGFkanVzdCAmJiBwYWRjID09ICcwJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZHdpZHRoID0gd2lkdGggLSB0bXA7CisgICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCAtPSB0bXAgKyAoZHdpZHRoID4gbiA/IGR3aWR0aCA6IG4pOworICAgICAgICAgICAgICAg
ICAgICAgICAgZHdpZHRoIC09IG47CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhZGp1
c3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tID4gMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUignICcpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUENIQVIoJy0nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFycGZsYWcg
JiYgbnVtICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2Ug
PT0gOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcw
Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmFzZSA9PSAx
NikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcwJyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJ3gnKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGR3aWR0aC0tID4gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJzAnKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCpwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUigq
cC0tKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhZGp1c3QpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tID4gMCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUignICcpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKHBlcmNlbnQgPCBmbXQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBDSEFSKCpwZXJjZW50KyspOworICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAqIFNpbmNlIHdlIGlnbm9yZSBhIGZvcm1hdHRpbmcgYXJn
dW1lbnQgaXQgaXMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGxvbmdlciBzYWZlIHRv
IG9iZXkgdGhlIHJlbWFpbmluZyBmb3JtYXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAg
KiBhcmd1bWVudHMgYXMgdGhlIGFyZ3VtZW50cyB3aWxsIG5vIGxvbmdlciBtYXRjaAorICAgICAg
ICAgICAgICAgICAgICAgICAgICogdGhlIGZvcm1hdCBzcGVjcy4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc3RyIDw9IGVuZCkKLSAgICAgICAgICAgICAgICAgICAgKnN0ciA9ICpzOwotICAgICAgICAg
ICAgICAgICsrc3RyOyArK3M7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSAobGVu
IDwgZmllbGRfd2lkdGgtLSkgewotICAgICAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQotICAg
ICAgICAgICAgICAgICAgICAqc3RyID0gJyAnOwotICAgICAgICAgICAgICAgICsrc3RyOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgY2FzZSAncCc6Ci0g
ICAgICAgICAgICBpZiAoZmllbGRfd2lkdGggPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBmaWVs
ZF93aWR0aCA9IDIqc2l6ZW9mKHZvaWQgKik7Ci0gICAgICAgICAgICAgICAgZmxhZ3MgfD0gWkVS
T1BBRDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ciA9IG51bWJlcihzdHIsIGVuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgdmFfYXJnKGFyZ3MsIHZv
aWQgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgMTYsIGZpZWxkX3dpZHRoLCBwcmVjaXNp
b24sIGZsYWdzKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0KLSAgICAgICAgY2FzZSAnbic6
Ci0gICAgICAgICAgICBpZiAocXVhbGlmaWVyID09ICdsJykgewotICAgICAgICAgICAgICAgIGxv
bmcgKiBpcCA9IHZhX2FyZyhhcmdzLCBsb25nICopOwotICAgICAgICAgICAgICAgICppcCA9IChz
dHIgLSBidWYpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ1onKSB7Ci0g
ICAgICAgICAgICAgICAgc2l6ZV90ICogaXAgPSB2YV9hcmcoYXJncywgc2l6ZV90ICopOwotICAg
ICAgICAgICAgICAgICppcCA9IChzdHIgLSBidWYpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpbnQgKiBpcCA9IHZhX2FyZyhhcmdzLCBpbnQgKik7Ci0gICAgICAgICAg
ICAgICAgKmlwID0gKHN0ciAtIGJ1Zik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQot
ICAgICAgICAgICAgICAgICpzdHIgPSAnJSc7Ci0gICAgICAgICAgICArK3N0cjsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAvKiBpbnRlZ2VyIG51bWJlciBmb3JtYXRzIC0g
c2V0IHVwIHRoZSBmbGFncyBhbmQgImJyZWFrIiAqLwotICAgICAgICBjYXNlICdvJzoKLSAgICAg
ICAgICAgIGJhc2UgPSA4OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAnWCc6
Ci0gICAgICAgICAgICBmbGFncyB8PSBMQVJHRTsKLSAgICAgICAgY2FzZSAneCc6Ci0gICAgICAg
ICAgICBiYXNlID0gMTY7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICdkJzoK
LSAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICBmbGFncyB8PSBTSUdOOwotICAgICAgICBj
YXNlICd1JzoKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBpZiAoc3RyIDw9IGVuZCkKLSAgICAgICAgICAgICAgICAqc3RyID0gJyUnOwotICAgICAg
ICAgICAgKytzdHI7Ci0gICAgICAgICAgICBpZiAoKmZtdCkgewotICAgICAgICAgICAgICAgIGlm
IChzdHIgPD0gZW5kKQotICAgICAgICAgICAgICAgICAgICAqc3RyID0gKmZtdDsKLSAgICAgICAg
ICAgICAgICArK3N0cjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLS1m
bXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
ICAgICBpZiAocXVhbGlmaWVyID09ICdMJykKLSAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcmdz
LCBsb25nIGxvbmcpOwotICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ2wnKSB7Ci0gICAg
ICAgICAgICBudW0gPSB2YV9hcmcoYXJncywgdW5zaWduZWQgbG9uZyk7Ci0gICAgICAgICAgICBp
ZiAoZmxhZ3MgJiBTSUdOKQotICAgICAgICAgICAgICAgIG51bSA9IChzaWduZWQgbG9uZykgbnVt
OwotICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAnWicpIHsKLSAgICAgICAgICAgIG51
bSA9IHZhX2FyZyhhcmdzLCBzaXplX3QpOwotICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9
PSAnaCcpIHsKLSAgICAgICAgICAgIG51bSA9ICh1bnNpZ25lZCBzaG9ydCkgdmFfYXJnKGFyZ3Ms
IGludCk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBTSUdOKQotICAgICAgICAgICAgICAgIG51
bSA9IChzaWduZWQgc2hvcnQpIG51bTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG51
bSA9IHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBpbnQpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYg
U0lHTikKLSAgICAgICAgICAgICAgICBudW0gPSAoc2lnbmVkIGludCkgbnVtOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RyID0gbnVtYmVyKHN0ciwgZW5kLCBudW0sIGJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICBmaWVsZF93aWR0aCwgcHJlY2lzaW9uLCBmbGFncyk7Ci0gICAgfQotICAgIGlm
IChzdHIgPD0gZW5kKQotICAgICAgICAqc3RyID0gJ1wwJzsKLSAgICBlbHNlIGlmIChzaXplID4g
MCkKLSAgICAgICAgLyogZG9uJ3Qgd3JpdGUgb3V0IGEgbnVsbCBieXRlIGlmIHRoZSBidWYgc2l6
ZSBpcyB6ZXJvICovCi0gICAgICAgICplbmQgPSAnXDAnOwotICAgIC8qIHRoZSB0cmFpbGluZyBu
dWxsIGJ5dGUgZG9lc24ndCBjb3VudCB0b3dhcmRzIHRoZSB0b3RhbAotICAgICAqICsrc3RyOwot
ICAgICAqLwotICAgIHJldHVybiBzdHItYnVmOworI3VuZGVmIFBDSEFSCiB9CiAKIC8qKgpAQCAt
NTUyLDIyMCArNjM1LDU4NyBAQCBpbnQgc3ByaW50ZihjaGFyICogYnVmLCBjb25zdCBjaGFyICpm
bXQsIC4uLikKICAgICByZXR1cm4gaTsKIH0KIAorLyoKKyAqIEZpbGwgaW4gdGhlIGdpdmVuIHRh
YmxlIGZyb20gdGhlIHNjYW5zZXQgYXQgdGhlIGdpdmVuIGZvcm1hdAorICogKGp1c3QgYWZ0ZXIg
YFsnKS4gIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGNoYXJhY3RlciBwYXN0IHRoZQorICogY2xv
c2luZyBgXScuICBUaGUgdGFibGUgaGFzIGEgMSB3aGVyZXZlciBjaGFyYWN0ZXJzIHNob3VsZCBi
ZQorICogY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzY2Fuc2V0LgorICovCitzdGF0aWMgY29uc3Qg
dV9jaGFyICoKK19fc2NjbChjaGFyICp0YWIsIGNvbnN0IHVfY2hhciAqZm10KQoreworICAgICAg
ICBpbnQgYywgbiwgdjsKKworICAgICAgICAvKiBmaXJzdCBgY2xlYXInIHRoZSB3aG9sZSB0YWJs
ZSAqLworICAgICAgICBjID0gKmZtdCsrOyAgICAgICAgICAgICAvKiBmaXJzdCBjaGFyIGhhdCA9
PiBuZWdhdGVkIHNjYW5zZXQgKi8KKyAgICAgICAgaWYgKGMgPT0gJ14nKSB7CisgICAgICAgICAg
ICAgICAgdiA9IDE7ICAgICAgICAgIC8qIGRlZmF1bHQgPT4gYWNjZXB0ICovCisgICAgICAgICAg
ICAgICAgYyA9ICpmbXQrKzsgICAgIC8qIGdldCBuZXcgZmlyc3QgY2hhciAqLworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICB2ID0gMDsgICAgICAgICAgLyogZGVmYXVsdCA9PiByZWpl
Y3QgKi8KKworICAgICAgICAvKiBYWFg6IFdpbGwgbm90IHdvcmsgaWYgc2l6ZW9mKHRhYiopID4g
c2l6ZW9mKGNoYXIpICovCisgICAgICAgIGZvciAobiA9IDA7IG4gPCAyNTY7IG4rKykKKyAgICAg
ICAgICAgICAgICAgICAgIHRhYltuXSA9IHY7ICAgICAgICAvKiBtZW1zZXQodGFiLCB2LCAyNTYp
ICovCisKKyAgICAgICAgaWYgKGMgPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZtdCAt
IDEpOy8qIGZvcm1hdCBlbmRlZCBiZWZvcmUgY2xvc2luZyBdICovCisKKyAgICAgICAgLyoKKyAg
ICAgICAgICogTm93IHNldCB0aGUgZW50cmllcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBhY3R1YWwg
c2NhbnNldAorICAgICAgICAgKiB0byB0aGUgb3Bwb3NpdGUgb2YgdGhlIGFib3ZlLgorICAgICAg
ICAgKgorICAgICAgICAgKiBUaGUgZmlyc3QgY2hhcmFjdGVyIG1heSBiZSAnXScgKG9yICctJykg
d2l0aG91dCBiZWluZyBzcGVjaWFsOworICAgICAgICAgKiB0aGUgbGFzdCBjaGFyYWN0ZXIgbWF5
IGJlICctJy4KKyAgICAgICAgICovCisgICAgICAgIHYgPSAxIC0gdjsKKyAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgICAgIHRhYltjXSA9IHY7ICAgICAgICAgICAgIC8qIHRha2UgY2hh
cmFjdGVyIGMgKi8KK2Rvc3dpdGNoOgorICAgICAgICAgICAgICAgIG4gPSAqZm10Kys7ICAgICAg
ICAgICAgIC8qIGFuZCBleGFtaW5lIHRoZSBuZXh0ICovCisgICAgICAgICAgICAgICAgc3dpdGNo
IChuKSB7CisKKyAgICAgICAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAvKiBmb3Jt
YXQgZW5kZWQgdG9vIHNvb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZm10
IC0gMSk7CisKKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBBIHNjYW5zZXQgb2YgdGhlIGZvcm0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgWzAxKy1dCisgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBpcyBkZWZpbmVkIGFzIGB0aGUgZGlnaXQgMCwgdGhlIGRpZ2l0IDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKiB0aGUgY2hhcmFjdGVyICssIHRoZSBjaGFyYWN0ZXIgLScs
IGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGVmZmVjdCBvZiBhIHNjYW5zZXQg
c3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICBbYS16QS1aMC05XQorICAg
ICAgICAgICAgICAgICAgICAgICAgICogaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZC4gIFRoZSBW
NyBVbml4CisgICAgICAgICAgICAgICAgICAgICAgICAgKiBzY2FuZiB0cmVhdHMgYGEteicgYXMg
YHRoZSBsZXR0ZXJzIGEgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICogeicsIGJ1
dCB0cmVhdHMgYGEtYScgYXMgYHRoZSBsZXR0ZXIgYSwgdGhlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgKiBjaGFyYWN0ZXIgLSwgYW5kIHRoZSBsZXR0ZXIgYScuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAgICAgICogRm9yIGNvbXBhdGliaWxpdHks
IHRoZSBgLScgaXMgbm90IGNvbnNpZGVyZAorICAgICAgICAgICAgICAgICAgICAgICAgICogdG8g
ZGVmaW5lIGEgcmFuZ2UgaWYgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqIGl0IGlzIGVpdGhlciBhIGNsb3NlIGJyYWNrZXQgKHJlcXVpcmVkIGJ5IEFO
U0kpCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBvciBpcyBub3QgbnVtZXJpY2FsbHkgZ3Jl
YXRlciB0aGFuIHRoZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHdlIGp1
c3Qgc3RvcmVkIGluIHRoZSB0YWJsZSAoYykuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAqZm10OworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG4gPT0gJ10nIHx8IG4gPCBjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGMgPSAnLSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLyog
cmVzdW1lIHRoZSBmb3IoOzspICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpbGwg
aW4gdGhlIHJhbmdlICovCisgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFiWysrY10gPSB2OworICAgICAgICAgICAgICAgICAgICAgICAg
fSB3aGlsZSAoYyA8IG4pOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG47CisgICAgICAg
ICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogQWxhcywgdGhl
IFY3IFVuaXggc2NhbmYgYWxzbyB0cmVhdHMgZm9ybWF0cworICAgICAgICAgICAgICAgICAgICAg
ICAgICogc3VjaCBhcyBbYS1jLWVdIGFzIGB0aGUgbGV0dGVycyBhIHRocm91Z2ggZScuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIHRvbyBpcyBwZXJtaXR0ZWQgYnkgdGhlIHN0YW5k
YXJkLi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGRvc3dpdGNoOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBjYXNlICddJzogICAgICAgICAgICAgICAvKiBlbmQgb2Ygc2NhbnNldCAq
LworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChmbXQpOworCisgICAgICAgICAgICAg
ICAgZGVmYXVsdDogICAgICAgICAgICAgICAgLyoganVzdCBhbm90aGVyIGNoYXJhY3RlciAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG47CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogTk9UUkVBQ0hF
RCAqLworfQorCiAvKioKICAqIHZzc2NhbmYgLSBVbmZvcm1hdCBhIGJ1ZmZlciBpbnRvIGEgbGlz
dCBvZiBhcmd1bWVudHMKICAqIEBidWY6CWlucHV0IGJ1ZmZlcgogICogQGZtdDoJZm9ybWF0IG9m
IGJ1ZmZlcgogICogQGFyZ3M6CWFyZ3VtZW50cwogICovCi1pbnQgdnNzY2FuZihjb25zdCBjaGFy
ICogYnVmLCBjb25zdCBjaGFyICogZm10LCB2YV9saXN0IGFyZ3MpCisjZGVmaW5lIEJVRiAgICAg
ICAgICAgICAzMiAgICAgIC8qIE1heGltdW0gbGVuZ3RoIG9mIG51bWVyaWMgc3RyaW5nLiAqLwor
CisvKgorICogRmxhZ3MgdXNlZCBkdXJpbmcgY29udmVyc2lvbi4KKyAqLworI2RlZmluZSBMT05H
ICAgICAgICAgICAgMHgwMSAgICAvKiBsOiBsb25nIG9yIGRvdWJsZSAqLworI2RlZmluZSBTSE9S
VCAgICAgICAgICAgMHgwNCAgICAvKiBoOiBzaG9ydCAqLworI2RlZmluZSBTVVBQUkVTUyAgICAg
ICAgMHgwOCAgICAvKiBzdXBwcmVzcyBhc3NpZ25tZW50ICovCisjZGVmaW5lIFBPSU5URVIgICAg
ICAgICAweDEwICAgIC8qIHdlaXJkICVwIHBvaW50ZXIgKGBmYWtlIGhleCcpICovCisjZGVmaW5l
IE5PU0tJUCAgICAgICAgICAweDIwICAgIC8qIGRvIG5vdCBza2lwIGJsYW5rcyAqLworI2RlZmlu
ZSBRVUFEICAgICAgICAgICAgMHg0MDAKKyNkZWZpbmUgU0hPUlRTSE9SVCAgICAgIDB4NDAwMCAg
LyoqIGhoOiBjaGFyICovCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGFyZSB1c2VkIGluIG51bWVy
aWMgY29udmVyc2lvbnMgb25seToKKyAqIFNJR05PSywgTkRJR0lUUywgRFBUT0ssIGFuZCBFWFBP
SyBhcmUgZm9yIGZsb2F0aW5nIHBvaW50OworICogU0lHTk9LLCBORElHSVRTLCBQRlhPSywgYW5k
IE5aRElHSVRTIGFyZSBmb3IgaW50ZWdyYWwuCisgKi8KKyNkZWZpbmUgU0lHTk9LICAgICAgICAg
IDB4NDAgICAgLyogKy8tIGlzIChzdGlsbCkgbGVnYWwgKi8KKyNkZWZpbmUgTkRJR0lUUyAgICAg
ICAgIDB4ODAgICAgLyogbm8gZGlnaXRzIGRldGVjdGVkICovCisKKyNkZWZpbmUgRFBUT0sgICAg
ICAgICAgIDB4MTAwICAgLyogKGZsb2F0KSBkZWNpbWFsIHBvaW50IGlzIHN0aWxsIGxlZ2FsICov
CisjZGVmaW5lIEVYUE9LICAgICAgICAgICAweDIwMCAgIC8qIChmbG9hdCkgZXhwb25lbnQgKGUr
MywgZXRjKSBzdGlsbCBsZWdhbCAqLworCisjZGVmaW5lIFBGWE9LICAgICAgICAgICAweDEwMCAg
IC8qIDB4IHByZWZpeCBpcyAoc3RpbGwpIGxlZ2FsICovCisjZGVmaW5lIE5aRElHSVRTICAgICAg
ICAweDIwMCAgIC8qIG5vIHplcm8gZGlnaXRzIGRldGVjdGVkICovCisKKy8qCisgKiBDb252ZXJz
aW9uIHR5cGVzLgorICovCisjZGVmaW5lIENUX0NIQVIgICAgICAgICAwICAgICAgIC8qICVjIGNv
bnZlcnNpb24gKi8KKyNkZWZpbmUgQ1RfQ0NMICAgICAgICAgIDEgICAgICAgLyogJVsuLi5dIGNv
bnZlcnNpb24gKi8KKyNkZWZpbmUgQ1RfU1RSSU5HICAgICAgIDIgICAgICAgLyogJXMgY29udmVy
c2lvbiAqLworI2RlZmluZSBDVF9JTlQgICAgICAgICAgMyAgICAgICAvKiBpbnRlZ2VyLCBpLmUu
LCBzdHJ0b3Egb3Igc3RydG91cSAqLwordHlwZWRlZiB1aW50NjRfdCAoKmNjZm50eXBlKShjb25z
dCBjaGFyICosIGNoYXIgKiosIGludCk7CisKK2ludAordnNzY2FuZihjb25zdCBjaGFyICppbnAs
IGNoYXIgY29uc3QgKmZtdDAsIHZhX2xpc3QgYXApCiB7Ci0JY29uc3QgY2hhciAqc3RyID0gYnVm
OwotCWNoYXIgKm5leHQ7Ci0JY2hhciBkaWdpdDsKLQlpbnQgbnVtID0gMDsKLQlpbnQgcXVhbGlm
aWVyOwotCWludCBiYXNlOwotCWludCBmaWVsZF93aWR0aDsKLQlpbnQgaXNfc2lnbiA9IDA7Cisg
ICAgICAgIGludCBpbnI7CisgICAgICAgIGNvbnN0IHVfY2hhciAqZm10ID0gKGNvbnN0IHVfY2hh
ciAqKWZtdDA7CisgICAgICAgIGludCBjOyAgICAgICAgICAgICAgICAgIC8qIGNoYXJhY3RlciBm
cm9tIGZvcm1hdCwgb3IgY29udmVyc2lvbiAqLworICAgICAgICBzaXplX3Qgd2lkdGg7ICAgICAg
ICAgICAvKiBmaWVsZCB3aWR0aCwgb3IgMCAqLworICAgICAgICBjaGFyICpwOyAgICAgICAgICAg
ICAgICAvKiBwb2ludHMgaW50byBhbGwga2luZHMgb2Ygc3RyaW5ncyAqLworICAgICAgICBpbnQg
bjsgICAgICAgICAgICAgICAgICAvKiBoYW5keSBpbnRlZ2VyICovCisgICAgICAgIGludCBmbGFn
czsgICAgICAgICAgICAgIC8qIGZsYWdzIGFzIGRlZmluZWQgYWJvdmUgKi8KKyAgICAgICAgY2hh
ciAqcDA7ICAgICAgICAgICAgICAgLyogc2F2ZXMgb3JpZ2luYWwgdmFsdWUgb2YgcCB3aGVuIG5l
Y2Vzc2FyeSAqLworICAgICAgICBpbnQgbmFzc2lnbmVkOyAgICAgICAgICAvKiBudW1iZXIgb2Yg
ZmllbGRzIGFzc2lnbmVkICovCisgICAgICAgIGludCBuY29udmVyc2lvbnM7ICAgICAgIC8qIG51
bWJlciBvZiBjb252ZXJzaW9ucyAqLworICAgICAgICBpbnQgbnJlYWQ7ICAgICAgICAgICAgICAv
KiBudW1iZXIgb2YgY2hhcmFjdGVycyBjb25zdW1lZCBmcm9tIGZwICovCisgICAgICAgIGludCBi
YXNlOyAgICAgICAgICAgICAgIC8qIGJhc2UgYXJndW1lbnQgdG8gc3RydG9xL3N0cnRvdXEgKi8K
KyAgICAgICAgY2NmbnR5cGUgY2NmbjsgICAgICAgICAgLyogY29udmVyc2lvbiBmdW5jdGlvbiAo
c3RydG9xL3N0cnRvdXEpICovCisgICAgICAgIGNoYXIgY2NsdGFiWzI1Nl07ICAgICAgIC8qIGNo
YXJhY3RlciBjbGFzcyB0YWJsZSBmb3IgJVsuLi5dICovCisgICAgICAgIGNoYXIgYnVmW0JVRl07
ICAgICAgICAgIC8qIGJ1ZmZlciBmb3IgbnVtZXJpYyBjb252ZXJzaW9ucyAqLwogCi0Jd2hpbGUo
KmZtdCAmJiAqc3RyKSB7Ci0JCS8qIHNraXAgYW55IHdoaXRlIHNwYWNlIGluIGZvcm1hdCAqLwot
CQkvKiB3aGl0ZSBzcGFjZSBpbiBmb3JtYXQgbWF0Y2hzIGFueSBhbW91bnQgb2YKLQkJICogd2hp
dGUgc3BhY2UsIGluY2x1ZGluZyBub25lLCBpbiB0aGUgaW5wdXQuCi0JCSAqLwotCQlpZiAoaXNz
cGFjZSgqZm10KSkgewotCQkJd2hpbGUgKGlzc3BhY2UoKmZtdCkpCi0JCQkJKytmbXQ7Ci0JCQl3
aGlsZSAoaXNzcGFjZSgqc3RyKSkKLQkJCQkrK3N0cjsKLQkJfQorICAgICAgICAvKiBgYmFzZWZp
eCcgaXMgdXNlZCB0byBhdm9pZCBgaWYnIHRlc3RzIGluIHRoZSBpbnRlZ2VyIHNjYW5uZXIgKi8K
KyAgICAgICAgc3RhdGljIHNob3J0IGJhc2VmaXhbMTddID0KKyAgICAgICAgICAgICAgICB7IDEw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiB9
OwogCi0JCS8qIGFueXRoaW5nIHRoYXQgaXMgbm90IGEgY29udmVyc2lvbiBtdXN0IG1hdGNoIGV4
YWN0bHkgKi8KLQkJaWYgKCpmbXQgIT0gJyUnICYmICpmbXQpIHsKLQkJCWlmICgqZm10KysgIT0g
KnN0cisrKQotCQkJCWJyZWFrOwotCQkJY29udGludWU7Ci0JCX0KKyAgICAgICAgaW5yID0gc3Ry
bGVuKGlucCk7CiAKLQkJaWYgKCEqZm10KQotCQkJYnJlYWs7Ci0JCSsrZm10OwotCQkKLQkJLyog
c2tpcCB0aGlzIGNvbnZlcnNpb24uCi0JCSAqIGFkdmFuY2UgYm90aCBzdHJpbmdzIHRvIG5leHQg
d2hpdGUgc3BhY2UKLQkJICovCi0JCWlmICgqZm10ID09ICcqJykgewotCQkJd2hpbGUgKCFpc3Nw
YWNlKCpmbXQpICYmICpmbXQpCi0JCQkJZm10Kys7Ci0JCQl3aGlsZSAoIWlzc3BhY2UoKnN0cikg
JiYgKnN0cikKLQkJCQlzdHIrKzsKLQkJCWNvbnRpbnVlOwotCQl9CisgICAgICAgIG5hc3NpZ25l
ZCA9IDA7CisgICAgICAgIG5jb252ZXJzaW9ucyA9IDA7CisgICAgICAgIG5yZWFkID0gMDsKKyAg
ICAgICAgYmFzZSA9IDA7ICAgICAgICAgICAgICAgLyogWFhYIGp1c3QgdG8ga2VlcCBnY2MgaGFw
cHkgKi8KKyAgICAgICAgY2NmbiA9IE5VTEw7ICAgICAgICAgICAgLyogWFhYIGp1c3QgdG8ga2Vl
cCBnY2MgaGFwcHkgKi8KKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGMgPSAq
Zm10Kys7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAobmFzc2lnbmVkKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNzcGFjZShjKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGluciA+IDAgJiYgaXNzcGFjZSgqaW5w
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWQrKywgaW5yLS0sIGlucCsr
OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChjICE9ICclJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gbGl0ZXJhbDsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CisgICAgICAgICAgICAgICAg
ZmxhZ3MgPSAwOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogc3dpdGNo
IG9uIHRoZSBmb3JtYXQuICBjb250aW51ZSBpZiBkb25lOworICAgICAgICAgICAgICAgICAqIGJy
ZWFrIG9uY2UgZm9ybWF0IHR5cGUgaXMgZGVyaXZlZC4KKyAgICAgICAgICAgICAgICAgKi8KK2Fn
YWluOiAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgewor
ICAgICAgICAgICAgICAgIGNhc2UgJyUnOgorbGl0ZXJhbDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpbnIgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBp
bnB1dF9mYWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCppbnAgIT0gYykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBtYXRjaF9mYWlsdXJlOworICAgICAg
ICAgICAgICAgICAgICAgICAgaW5yLS0sIGlucCsrOworICAgICAgICAgICAgICAgICAgICAgICAg
bnJlYWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0JCS8qIGdldCBm
aWVsZCB3aWR0aCAqLwotCQlmaWVsZF93aWR0aCA9IC0xOwotCQlpZiAoaXNkaWdpdCgqZm10KSkK
LQkJCWZpZWxkX3dpZHRoID0gc2tpcF9hdG9pKCZmbXQpOworICAgICAgICAgICAgICAgIGNhc2Ug
JyonOgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gU1VQUFJFU1M7CisgICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOworICAgICAgICAgICAgICAgIGNhc2UgJ2wnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgTE9ORyl7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IH5MT05HOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFncyB8PSBRVUFEOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTE9ORzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47
CisgICAgICAgICAgICAgICAgY2FzZSAncSc6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cyB8PSBRVUFEOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBhZ2FpbjsKKyAgICAgICAg
ICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNI
T1JUKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gflNIT1JUOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBTSE9SVFNIT1JUOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MgfD0gU0hPUlQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOwogCi0JCS8qIGdldCBjb252ZXJzaW9uIHF1YWxp
ZmllciAqLwotCQlxdWFsaWZpZXIgPSAtMTsKLQkJaWYgKCpmbXQgPT0gJ2gnIHx8ICpmbXQgPT0g
J2wnIHx8ICpmbXQgPT0gJ0wnIHx8Ci0JCSAgICAqZm10ID09ICdaJyB8fCAqZm10ID09ICd6Jykg
ewotCQkJcXVhbGlmaWVyID0gKmZtdCsrOwotCQkJaWYgKHVubGlrZWx5KHF1YWxpZmllciA9PSAq
Zm10KSkgewotCQkJCWlmIChxdWFsaWZpZXIgPT0gJ2gnKSB7Ci0JCQkJCXF1YWxpZmllciA9ICdI
JzsKLQkJCQkJZm10Kys7Ci0JCQkJfSBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ2wnKSB7Ci0JCQkJ
CXF1YWxpZmllciA9ICdMJzsKLQkJCQkJZm10Kys7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWJhc2Ug
PSAxMDsKLQkJaXNfc2lnbiA9IDA7CisgICAgICAgICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEn
OiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgorICAgICAgICAgICAgICAgIGNhc2UgJzUn
OiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoID0gd2lkdGggKiAxMCArIGMgLSAnMCc7CisgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIGFnYWluOwogCi0JCWlmICghKmZtdCB8fCAhKnN0cikKLQkJCWJyZWFrOwor
ICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQ29udmVyc2lvbnMuCisgICAg
ICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBjYXNl
ICdkJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDVF9JTlQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjY2ZuID0gKGNjZm50eXBlKXN0cnRvcTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0JCXN3aXRj
aCgqZm10KyspIHsKLQkJY2FzZSAnYyc6Ci0JCXsKLQkJCWNoYXIgKnMgPSAoY2hhciAqKSB2YV9h
cmcoYXJncyxjaGFyKik7Ci0JCQlpZiAoZmllbGRfd2lkdGggPT0gLTEpCi0JCQkJZmllbGRfd2lk
dGggPSAxOwotCQkJZG8gewotCQkJCSpzKysgPSAqc3RyKys7Ci0JCQl9IHdoaWxlICgtLWZpZWxk
X3dpZHRoID4gMCAmJiAqc3RyKTsKLQkJCW51bSsrOwotCQl9Ci0JCWNvbnRpbnVlOwotCQljYXNl
ICdzJzoKLQkJewotCQkJY2hhciAqcyA9IChjaGFyICopIHZhX2FyZyhhcmdzLCBjaGFyICopOwot
CQkJaWYoZmllbGRfd2lkdGggPT0gLTEpCi0JCQkJZmllbGRfd2lkdGggPSBJTlRfTUFYOwotCQkJ
LyogZmlyc3QsIHNraXAgbGVhZGluZyB3aGl0ZSBzcGFjZSBpbiBidWZmZXIgKi8KLQkJCXdoaWxl
IChpc3NwYWNlKCpzdHIpKQotCQkJCXN0cisrOwotCi0JCQkvKiBub3cgY29weSB1bnRpbCBuZXh0
IHdoaXRlIHNwYWNlICovCi0JCQl3aGlsZSAoKnN0ciAmJiAhaXNzcGFjZSgqc3RyKSAmJiBmaWVs
ZF93aWR0aC0tKSB7Ci0JCQkJKnMrKyA9ICpzdHIrKzsKLQkJCX0KLQkJCSpzID0gJ1wwJzsKLQkJ
CW51bSsrOwotCQl9Ci0JCWNvbnRpbnVlOwotCQljYXNlICduJzoKLQkJCS8qIHJldHVybiBudW1i
ZXIgb2YgY2hhcmFjdGVycyByZWFkIHNvIGZhciAqLwotCQl7Ci0JCQlpbnQgKmkgPSAoaW50ICop
dmFfYXJnKGFyZ3MsaW50Kik7Ci0JCQkqaSA9IHN0ciAtIGJ1ZjsKLQkJfQotCQljb250aW51ZTsK
LQkJY2FzZSAnbyc6Ci0JCQliYXNlID0gODsKLQkJCWJyZWFrOwotCQljYXNlICd4JzoKLQkJY2Fz
ZSAnWCc6Ci0JCQliYXNlID0gMTY7Ci0JCQlicmVhazsKLQkJY2FzZSAnaSc6CisgICAgICAgICAg
ICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfSU5UOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IChjY2ZudHlwZSlzdHJ0b3E7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlID0gMDsKLQkJY2FzZSAnZCc6Ci0JCQlpc19zaWduID0gMTsKLQkJ
Y2FzZSAndSc6Ci0JCQlicmVhazsKLQkJY2FzZSAnJSc6Ci0JCQkvKiBsb29raW5nIGZvciAnJScg
aW4gc3RyICovCi0JCQlpZiAoKnN0cisrICE9ICclJykgCi0JCQkJcmV0dXJuIG51bTsKLQkJCWNv
bnRpbnVlOwotCQlkZWZhdWx0OgotCQkJLyogaW52YWxpZCBmb3JtYXQ7IHN0b3AgaGVyZSAqLwot
CQkJcmV0dXJuIG51bTsKLQkJfQotCi0JCS8qIGhhdmUgc29tZSBzb3J0IG9mIGludGVnZXIgY29u
dmVyc2lvbi4KLQkJICogZmlyc3QsIHNraXAgd2hpdGUgc3BhY2UgaW4gYnVmZmVyLgotCQkgKi8K
LQkJd2hpbGUgKGlzc3BhY2UoKnN0cikpCi0JCQlzdHIrKzsKLQotCQlkaWdpdCA9ICpzdHI7Ci0J
CWlmIChpc19zaWduICYmIGRpZ2l0ID09ICctJykKLQkJCWRpZ2l0ID0gKihzdHIgKyAxKTsKLQot
CQlpZiAoIWRpZ2l0Ci0gICAgICAgICAgICAgICAgICAgIHx8IChiYXNlID09IDE2ICYmICFpc3hk
aWdpdChkaWdpdCkpCi0gICAgICAgICAgICAgICAgICAgIHx8IChiYXNlID09IDEwICYmICFpc2Rp
Z2l0KGRpZ2l0KSkKLSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gOCAmJiAoIWlzZGln
aXQoZGlnaXQpIHx8IGRpZ2l0ID4gJzcnKSkKLSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2Ug
PT0gMCAmJiAhaXNkaWdpdChkaWdpdCkpKQotCQkJCWJyZWFrOwotCi0JCXN3aXRjaChxdWFsaWZp
ZXIpIHsKLQkJY2FzZSAnSCc6CS8qIHRoYXQncyAnaGgnIGluIGZvcm1hdCAqLwotCQkJaWYgKGlz
X3NpZ24pIHsKLQkJCQlzaWduZWQgY2hhciAqcyA9IChzaWduZWQgY2hhciAqKSB2YV9hcmcoYXJn
cyxzaWduZWQgY2hhciAqKTsKLQkJCQkqcyA9IChzaWduZWQgY2hhcikgc2ltcGxlX3N0cnRvbChz
dHIsJm5leHQsYmFzZSk7Ci0JCQl9IGVsc2UgewotCQkJCXVuc2lnbmVkIGNoYXIgKnMgPSAodW5z
aWduZWQgY2hhciAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgY2hhciAqKTsKLQkJCQkqcyA9ICh1
bnNpZ25lZCBjaGFyKSBzaW1wbGVfc3RydG91bChzdHIsICZuZXh0LCBiYXNlKTsKLQkJCX0KLQkJ
CWJyZWFrOwotCQljYXNlICdoJzoKLQkJCWlmIChpc19zaWduKSB7Ci0JCQkJc2hvcnQgKnMgPSAo
c2hvcnQgKikgdmFfYXJnKGFyZ3Msc2hvcnQgKik7Ci0JCQkJKnMgPSAoc2hvcnQpIHNpbXBsZV9z
dHJ0b2woc3RyLCZuZXh0LGJhc2UpOwotCQkJfSBlbHNlIHsKLQkJCQl1bnNpZ25lZCBzaG9ydCAq
cyA9ICh1bnNpZ25lZCBzaG9ydCAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgc2hvcnQgKik7Ci0J
CQkJKnMgPSAodW5zaWduZWQgc2hvcnQpIHNpbXBsZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJhc2Up
OwotCQkJfQotCQkJYnJlYWs7Ci0JCWNhc2UgJ2wnOgotCQkJaWYgKGlzX3NpZ24pIHsKLQkJCQls
b25nICpsID0gKGxvbmcgKikgdmFfYXJnKGFyZ3MsbG9uZyAqKTsKLQkJCQkqbCA9IHNpbXBsZV9z
dHJ0b2woc3RyLCZuZXh0LGJhc2UpOwotCQkJfSBlbHNlIHsKLQkJCQl1bnNpZ25lZCBsb25nICps
ID0gKHVuc2lnbmVkIGxvbmcqKSB2YV9hcmcoYXJncyx1bnNpZ25lZCBsb25nKik7Ci0JCQkJKmwg
PSBzaW1wbGVfc3RydG91bChzdHIsJm5leHQsYmFzZSk7Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2Fz
ZSAnTCc6Ci0JCQlpZiAoaXNfc2lnbikgewotCQkJCWxvbmcgbG9uZyAqbCA9IChsb25nIGxvbmcq
KSB2YV9hcmcoYXJncyxsb25nIGxvbmcgKik7Ci0JCQkJKmwgPSBzaW1wbGVfc3RydG9sbChzdHIs
Jm5leHQsYmFzZSk7Ci0JCQl9IGVsc2UgewotCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyAqbCA9ICh1
bnNpZ25lZCBsb25nIGxvbmcqKSB2YV9hcmcoYXJncyx1bnNpZ25lZCBsb25nIGxvbmcqKTsKLQkJ
CQkqbCA9IHNpbXBsZV9zdHJ0b3VsbChzdHIsJm5leHQsYmFzZSk7Ci0JCQl9Ci0JCQlicmVhazsK
LQkJY2FzZSAnWic6Ci0JCWNhc2UgJ3onOgotCQl7Ci0JCQlzaXplX3QgKnMgPSAoc2l6ZV90Kikg
dmFfYXJnKGFyZ3Msc2l6ZV90Kik7Ci0JCQkqcyA9IChzaXplX3QpIHNpbXBsZV9zdHJ0b3VsKHN0
ciwmbmV4dCxiYXNlKTsKLQkJfQotCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWlmIChpc19zaWdu
KSB7Ci0JCQkJaW50ICppID0gKGludCAqKSB2YV9hcmcoYXJncywgaW50Kik7Ci0JCQkJKmkgPSAo
aW50KSBzaW1wbGVfc3RydG9sKHN0ciwmbmV4dCxiYXNlKTsKLQkJCX0gZWxzZSB7Ci0JCQkJdW5z
aWduZWQgaW50ICppID0gKHVuc2lnbmVkIGludCopIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBpbnQq
KTsKLQkJCQkqaSA9ICh1bnNpZ25lZCBpbnQpIHNpbXBsZV9zdHJ0b3VsKHN0ciwmbmV4dCxiYXNl
KTsKLQkJCX0KLQkJCWJyZWFrOwotCQl9Ci0JCW51bSsrOwotCi0JCWlmICghbmV4dCkKLQkJCWJy
ZWFrOwotCQlzdHIgPSBuZXh0OwotCX0KLQlyZXR1cm4gbnVtOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGMgPSBDVF9JTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjY2ZuID0gc3Ry
dG91cTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGMgPSBDVF9JTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjY2ZuID0g
c3RydG91cTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncyB8PSBQRlhPSzsgLyogZW5hYmxlIDB4IHByZWZpeGluZyAq
LworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNjZm4gPSBzdHJ0b3VxOworICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDE2
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNl
ICdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDVF9TVFJJTkc7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ1snOgorICAgICAg
ICAgICAgICAgICAgICAgICAgZm10ID0gX19zY2NsKGNjbHRhYiwgZm10KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzIHw9IE5PU0tJUDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMg
PSBDVF9DQ0w7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTk9TS0lQOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0NIQVI7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ3AnOiAgICAgICAvKiBwb2ludGVy
IGZvcm1hdCBpcyBsaWtlIGhleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0g
UE9JTlRFUiB8IFBGWE9LOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNjZm4gPSBzdHJ0b3VxOworICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBjYXNlICduJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5jb252ZXJzaW9u
cysrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU1VQUFJFU1MpICAgLyog
Pz8/ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU0hPUlRTSE9SVCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgY2hhciAqKSA9IG5yZWFkOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBTSE9SVCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgc2hvcnQgKikgPSBucmVhZDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTE9ORykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnZhX2FyZyhhcCwgbG9uZyAqKSA9IG5yZWFkOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBRVUFEKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqdmFfYXJnKGFwLCBpbnQ2NF90ICopID0gbnJlYWQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAs
IGludCAqKSA9IG5yZWFkOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBX
ZSBoYXZlIGEgY29udmVyc2lvbiB0aGF0IHJlcXVpcmVzIGlucHV0LgorICAgICAgICAgICAgICAg
ICAqLworICAgICAgICAgICAgICAgIGlmIChpbnIgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gaW5wdXRfZmFpbHVyZTsKKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAg
ICAgICAgICogQ29uc3VtZSBsZWFkaW5nIHdoaXRlIHNwYWNlLCBleGNlcHQgZm9yIGZvcm1hdHMK
KyAgICAgICAgICAgICAgICAgKiB0aGF0IHN1cHByZXNzIHRoaXMuCisgICAgICAgICAgICAgICAg
ICovCisgICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIE5PU0tJUCkgPT0gMCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmlucCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnJlYWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKC0taW5yID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW5wdXRfZmFpbHVyZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAg
ICAgICAgICAgICAgICAgICAgKiBOb3RlIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJh
Y3RlciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGJ1ZmZlciwgc28gY29udmVy
c2lvbnMgdGhhdCBkbyBub3Qgc2V0IE5PU0tJUAorICAgICAgICAgICAgICAgICAgICAgICAgICog
Y2FuIG5vIGxvbmdlciByZXN1bHQgaW4gYW4gaW5wdXQgZmFpbHVyZS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qCisg
ICAgICAgICAgICAgICAgICogRG8gdGhlIGNvbnZlcnNpb24uCisgICAgICAgICAgICAgICAgICov
CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisKKyAgICAgICAgICAgICAgICBjYXNlIENU
X0NIQVI6CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2FuIGFyYml0cmFyeSBjaGFyYWN0
ZXJzIChzZXRzIE5PU0tJUCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9
PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDE7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTVVBQUkVTUykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc3VtID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgobiA9IGlucikgPCB3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VtICs9IG47CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAtPSBuOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wICs9IG47CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VtID09IDApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW5wdXRfZmFp
bHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0gKz0gd2lk
dGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnIg
LT0gd2lkdGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnAgKz0gd2lkdGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnJlYWQgKz0gc3VtOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHZhX2FyZyhhcCwgY2hh
ciAqKSwgaW5wLCB3aWR0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluciAt
PSB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wICs9IHdpZHRoOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCArPSB3aWR0aDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmFzc2lnbmVkKys7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMrKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBDVF9DQ0w6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2FuIGEgKG5vbmVtcHR5KSBjaGFyYWN0ZXIgY2xh
c3MgKHNldHMgTk9TS0lQKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09
IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gKHNpemVfdCl+MDsg
ICAgIC8qIGBpbmZpbml0eScgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRha2Ugb25s
eSB0aG9zZSB0aGluZ3MgaW4gdGhlIGNsYXNzICovCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZmxhZ3MgJiBTVVBQUkVTUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNjbHRhYlsodW5z
aWduZWQgY2hhcikqaW5wXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG4rKywgaW5yLS0sIGlucCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgtLXdpZHRoID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaW5yIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChuID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW5wdXRfZmFpbHVyZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9PSAwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbWF0Y2hfZmFpbHVy
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHAwID0gcCA9IHZhX2FyZyhhcCwgY2hhciAqKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGNjbHRhYlsodW5zaWduZWQgY2hhcikqaW5wXSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluci0tOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAqaW5wKys7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0td2lkdGggPT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnIgPD0gMCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPT0gcDApCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
aW5wdXRfZmFpbHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuID0gcCAtIHAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobiA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
bWF0Y2hfZmFpbHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnAgPSAwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNzaWduZWQrKzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkICs9IG47CisgICAg
ICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMrKzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBDVF9TVFJJTkc6CisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBsaWtlIENDTCwgYnV0IHplcm8tbGVuZ3RoIHN0cmluZyBPSywgJiBu
byBOT1NLSVAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAwKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IChzaXplX3QpfjA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTVVBQUkVTUykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKCFpc3NwYWNlKCppbnApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbisrLCBpbnItLSwgaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKC0td2lkdGggPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpbnIgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkICs9IG47CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwMCA9IHAgPSB2YV9hcmcoYXAsIGNoYXIgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlICghaXNzcGFjZSgqaW5wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluci0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpwKysgPSAqaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKC0td2lkdGggPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpbnIgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnJlYWQgKz0gcCAtIHAwOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuYXNzaWduZWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5jb252ZXJzaW9ucysrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICBjYXNlIENUX0lOVDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHNjYW4gYW4gaW50ZWdlciBhcyBpZiBieSBzdHJ0b3Evc3RydG91cSAqLwor
I2lmZGVmIGhhcmR3YXkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAwIHx8
IHdpZHRoID4gc2l6ZW9mKGJ1ZikgLSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aCA9IHNpemVvZihidWYpIC0gMTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBzaXplX3QgaXMgdW5zaWduZWQsIGhlbmNlIHRoaXMgb3B0aW1pc2F0aW9uICovCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoLS13aWR0aCA+IHNpemVvZihidWYpIC0gMikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzaXplb2YoYnVmKSAtIDI7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aCsrOworI2VuZGlmCisgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncyB8PSBTSUdOT0sgfCBORElHSVRTIHwgTlpESUdJVFM7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKHAgPSBidWY7IHdpZHRoOyB3aWR0aC0tKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGMgPSAqaW5wOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTd2l0Y2ggb24gdGhl
IGNoYXJhY3RlcjsgYGdvdG8gb2snCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
IGlmIHdlIGFjY2VwdCBpdCBhcyBhIHBhcnQgb2YgbnVtYmVyLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChjKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICogVGhlIGRpZ2l0IDAgaXMgYWx3YXlzIGxlZ2FsLCBidXQg
aXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3BlY2lhbC4gIEZvciAlaSBj
b252ZXJzaW9ucywgaWYgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGln
aXRzICh6ZXJvIG9yIG5vbnplcm8pIGhhdmUgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBzY2FubmVkIChvbmx5IHNpZ25zKSwgd2Ugd2lsbCBoYXZlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqIGJhc2U9PTAuICBJbiB0aGF0IGNhc2UsIHdlIHNob3Vs
ZCBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQgdG8gOCBhbmQgZW5h
YmxlIDB4IHByZWZpeGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQWxz
bywgaWYgd2UgaGF2ZSBub3Qgc2Nhbm5lZCB6ZXJvIGRpZ2l0cworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiBiZWZvcmUgdGhpcywgZG8gbm90IHR1cm4gb2ZmIHByZWZpeGluZwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAoc29tZW9uZSBlbHNlIHdpbGwgdHVy
biBpdCBvZmYgaWYgd2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaGF2ZSBz
Y2FubmVkIGFueSBub256ZXJvIGRpZ2l0cykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZSA9PSAwKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gODsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBG
WE9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBOWkRJR0lUUykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfihTSUdO
T0t8TlpESUdJVFN8TkRJR0lUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFncyAmPSB+KFNJR05PS3xQRlhPS3xORElHSVRTKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIG9rOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDEgdGhyb3VnaCA3IGFsd2F5cyBsZWdhbCAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gYmFzZWZpeFti
YXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmPSB+
KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBvazsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBkaWdpdHMgOCBhbmQgOSBvayBpZmYgZGVjaW1hbCBvciBoZXggKi8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAnOCc6IGNhc2UgJzknOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlZml4W2Jhc2VdOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlIDw9IDgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8qIG5vdCBsZWdhbCBo
ZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0g
fihTSUdOT0sgfCBQRlhPSyB8IE5ESUdJVFMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gb2s7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogbGV0dGVycyBvayBpZmYgaGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgJ0EnOiBjYXNlICdCJzogY2FzZSAnQyc6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ0QnOiBjYXNlICdFJzogY2FzZSAnRic6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgJ2EnOiBjYXNlICdiJzogY2FzZSAnYyc6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOiBjYXNlICdlJzogY2FzZSAnZic6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gbmVlZCB0byBmaXggYmFzZSBo
ZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2Ug
PD0gMTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsgIC8qIG5vdCBsZWdhbCBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MgJj0gfihTSUdOT0sgfCBQRlhPSyB8IE5ESUdJVFMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2s7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogc2lnbiBvayBvbmx5IGFzIGZpcnN0IGNoYXJhY3RlciAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcrJzogY2FzZSAnLSc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU0lHTk9L
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cyAmPSB+U0lHTk9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBvazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeCBvayBpZmYgZmxhZyBzdGlsbCBzZXQgJiAy
bmQgY2hhciAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzogY2Fz
ZSAnWCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdz
ICYgUEZYT0sgJiYgcCA9PSBidWYgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7ICAgICAgLyogaWYgJWkgKi8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IH5QRlhPSzsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2s7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSWYgd2UgZ290IGhlcmUsIGMgaXMgbm90IGEg
bGVnYWwgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZvciBh
IG51bWJlci4gIFN0b3AgYWNjdW11bGF0aW5nIGRpZ2l0cy4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIG9rOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjIGlzIGxlZ2FsOiBzdG9yZSBpdCBh
bmQgbG9vayBhdCB0aGUgbmV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBjOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoLS1pbnIgPiAwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlucCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAg
ICAgICAgICAvKiBlbmQgb2YgaW5wdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBJZiB3
ZSBoYWQgb25seSBhIHNpZ24sIGl0IGlzIG5vIGdvb2Q7IHB1c2gKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqIGJhY2sgdGhlIHNpZ24uICBJZiB0aGUgbnVtYmVyIGVuZHMgaW4gYHgnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICogaXQgd2FzIFtzaWduXSAnJyAneCcsIHNvIHB1c2ggYmFj
ayB0aGUgeAorICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIHRyZWF0IGl0IGFzIFtzaWdu
XSAnJy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGZsYWdzICYgTkRJR0lUUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocCA+IGJ1ZikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlucC0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucisrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gbWF0Y2hfZmFpbHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAoKHVfY2hhciAqKXApWy0xXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjID09ICd4JyB8fCBjID09ICdYJykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtLXA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlucC0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnIrKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBT
VVBQUkVTUykgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf
dCByZXM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnAgPSAwOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSAoKmNjZm4pKGJ1ZiwgKGNoYXIgKiopTlVM
TCwgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFBP
SU5URVIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhh
cCwgdm9pZCAqKikgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHZvaWQgKikodWludHB0cl90KXJlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBTSE9SVFNIT1JUKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAsIGNoYXIgKikgPSByZXM7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgU0hPUlQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgc2hvcnQgKikgPSByZXM7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTE9ORykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBsb25n
ICopID0gcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFn
cyAmIFFVQUQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2Fy
ZyhhcCwgaW50NjRfdCAqKSA9IHJlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAs
IGludCAqKSA9IHJlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFzc2lnbmVk
Kys7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBu
cmVhZCArPSBwIC0gYnVmOworICAgICAgICAgICAgICAgICAgICAgICAgbmNvbnZlcnNpb25zKys7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgfQoraW5wdXRfZmFpbHVyZToKKyAgICAgICAgcmV0dXJuIChuY29udmVyc2lvbnMgIT0g
MCA/IG5hc3NpZ25lZCA6IC0xKTsKK21hdGNoX2ZhaWx1cmU6CisgICAgICAgIHJldHVybiAobmFz
c2lnbmVkKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS90cG1iYWNrLmMgYi90cG1iYWNrLmMKaW5k
ZXggMDBiNjZlOC4uMjJhZGJkMyAxMDA2NDQKLS0tIGEvdHBtYmFjay5jCisrKyBiL3RwbWJhY2su
YwpAQCAtNTIsMTAgKzUyLDYgQEAKICNpbmNsdWRlIDxtaW5pLW9zL3dhaXQuaD4KIAogCi0jaWZu
ZGVmIEhBVkVfTElCQwotI2RlZmluZSBzdHJ0b3VsIHNpbXBsZV9zdHJ0b3VsCi0jZW5kaWYKLQog
Ly8jZGVmaW5lIFRQTUJBQ0tfUFJJTlRfREVCVUcKICNpZmRlZiBUUE1CQUNLX1BSSU5UX0RFQlVH
CiAjZGVmaW5lIFRQTUJBQ0tfREVCVUcoZm10LC4uLikgcHJpbnRrKCJUcG1iYWNrOkRlYnVnKCJf
X0ZJTEVfXyI6JWQpICIgZm10LCBfX0xJTkVfXywgIyNfX1ZBX0FSR1NfXykKLS0gCjIuNi42CgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDov
L2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jul 04 09:17:08 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Jul 2016 09:17:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bK003-0004b9-Om; Mon, 04 Jul 2016 09:17:07 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bK002-0004av-6T; Mon, 04 Jul 2016 09:17:06 +0000
Received: from [193.109.254.147] by server-5.bemta-14.messagelabs.com id
 9F/9C-08132-1992A775; Mon, 04 Jul 2016 09:17:05 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrALMWRWlGSWpSXmKPExsVyuP0Ov26/ZlW
 4wZa7ChZvvy5htvi+ZTKTA5PH4Q9XWAIYo1gz85LyKxJYM3r6XjEXvF3FUvHm5m3WBsauWUxd
 jJwcEgJGEm8n/gOyuTiEBBYySnw9voANJMEmoCqx4fopVhBbRMBN4sv3WWBxZoE4iTtvTzKC2
 MICfhIrVlxi6WLk4GABqr/bZAcS5hWwl3g8dTHUfDmJ6zOnM01g5FzAyLCKUaM4tagstUjXyE
 AvqSgzPaMkNzEzR9fQ0EQvN7W4ODE9NScxqVgvOT93EyPQd/UMDIw7GDsv+x1ilORgUhLl1eS
 oChfiS8pPqcxILM6ILyrNSS0+xCjDwaEkwSugAZQTLEpNT61Iy8wBBhFMWoKDR0mE96c6UJq3
 uCAxtzgzHSJ1ilGXY8uM+2uZhFjy8vNSpcR5WUFmCIAUZZTmwY2ABfQlRlkpYV5GBgYGIZ6C1
 KLczBJU+VeM4hyMSsK8wSBTeDLzSuA2vQI6ggnoCNbYcpAjShIRUlINjDtWcG+seSQ8reH1Pt
 4g9j61j9Hb/32O4DEKX3s/QknUKemsW7hy24QXD7bNEJN9aTvxotzKtZWSOXzHbxbMfnN8TvO
 mmw6ZkR3qHW47ovZHsHWzBQTzGdyp/H+hNLhigu1Srg/CjKusIp4u9EvnKr+ZPn9z7qN4rawT
 wZJ96izrNV5w9t7foMRSnJFoqMVcVJwIAPCyy29jAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-4.tower-27.messagelabs.com!1467623822!50838844!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=2.3 required=7.0 tests=BODY_FWORD,
 BODY_RANDOM_LONG,MAILTO_TO_SPAM_ADDR
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 35763 invoked from network); 4 Jul 2016 09:17:03 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-4.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 4 Jul 2016 09:17:03 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 3277BABA6;
 Mon,  4 Jul 2016 09:17:02 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Mon,  4 Jul 2016 11:16:59 +0200
Message-Id: <1467623819-31378-1-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 andrew.cooper3@citrix.com
Subject: [Minios-devel] [PATCH v2] mini-os: replace lib/printf.c with a
	version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW5zdGVhZCBvZiBhIExpbnV4IGtlcm5lbCBiYXNlZCBpbXBsZW1lbnRhdGlvbiB1c2Ugb25lIGZy
b20gZnJlZUJTRC4KCkFzIGEgcmVzdWx0IHNvbWUgb2YgdGhlIHByaW50aW5ncyB3aWxsIGNoYW5n
ZSBkdWUgdG8gbW9yZSBwb3NpeCBsaWtlCmJlaGF2aW9yIG9mICVwIGZvcm1hdCAob21pdHRpbmcg
bGVhZGluZyB6ZXJvZXMsIHByZXBlbmRpbmcgIjB4IikuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2Vu
IEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQpWMjogcmVtb3ZlIGluY2x1ZGUvbGliLWdwbC5o
IGFzIHJlcXVlc3RlZCBieSBTYW11ZWwgVGhpYmF1bHQKLS0tCiBibGtmcm9udC5jICAgICAgICB8
ICAgIDQgLQogaW5jbHVkZS9saWItZ3BsLmggfCAgIDU5IC0tCiBpbmNsdWRlL2xpYi5oICAgICB8
ICAgMjcgKy0KIGxpYi9wcmludGYuYyAgICAgIHwgMTc0NCArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogdHBtYmFjay5jICAgICAgICAgfCAgICA0
IC0KIDUgZmlsZXMgY2hhbmdlZCwgMTExOSBpbnNlcnRpb25zKCspLCA3MTkgZGVsZXRpb25zKC0p
CiBkZWxldGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saWItZ3BsLmgKCmRpZmYgLS1naXQgYS9ibGtm
cm9udC5jIGIvYmxrZnJvbnQuYwppbmRleCBiZGI3NzY1Li5mNzQ3MjE2IDEwMDY0NAotLS0gYS9i
bGtmcm9udC5jCisrKyBiL2Jsa2Zyb250LmMKQEAgLTE3LDEwICsxNyw2IEBACiAjaW5jbHVkZSA8
bWluaS1vcy9saWIuaD4KICNpbmNsdWRlIDxmY250bC5oPgogCi0jaWZuZGVmIEhBVkVfTElCQwot
I2RlZmluZSBzdHJ0b3VsIHNpbXBsZV9zdHJ0b3VsCi0jZW5kaWYKLQogLyogTm90ZTogd2UgZ2Vu
ZXJhbGx5IGRvbid0IG5lZWQgdG8gZGlzYWJsZSBJUlFzIHNpbmNlIHdlIGhhcmRseSBkbyBhbnl0
aGluZyBpbgogICogdGhlIGludGVycnVwdCBoYW5kbGVyLiAgKi8KIApkaWZmIC0tZ2l0IGEvaW5j
bHVkZS9saWItZ3BsLmggYi9pbmNsdWRlL2xpYi1ncGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDU2MDJiMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL2xpYi1ncGwuaAorKysgL2Rl
di9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qIC0qLSAgTW9kZTpDOyBjLWJhc2ljLW9mZnNldDo0
OyB0YWItd2lkdGg6NCAtKi0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAoQykgMjAwMyAtIFJv
bGYgTmV1Z2ViYXVlciAtIEludGVsIFJlc2VhcmNoIENhbWJyaWRnZQotICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKLSAqCi0gKiAgICAgICAgRmlsZTogbGliLmgKLSAqICAgICAgQXV0aG9yOiBSb2xmIE5l
dWdlYmF1ZXIgKG5ldWdlYmFyQGRjcy5nbGEuYWMudWspCi0gKiAgICAgQ2hhbmdlczogCi0gKiAg
ICAgICAgICAgICAgCi0gKiAgICAgICAgRGF0ZTogQXVnIDIwMDMKLSAqIAotICogRW52aXJvbm1l
bnQ6IFhlbiBNaW5pbWFsIE9TCi0gKiBEZXNjcmlwdGlvbjogUmFuZG9tIHVzZWZ1bCBsaWJyYXJ5
IGZ1bmN0aW9ucywgZnJvbSBMaW51eCcKLSAqIGluY2x1ZGUvbGludXgva2VybmVsLmgKLSAqCi0g
KiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vciBtb2RpZnkKLSAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0gKiAgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBwcm9ncmFtIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlCi0gKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8K
LQotI2lmbmRlZiBfTElCX0dQTF9IXwotI2RlZmluZSBfTElCX0dQTF9IXwotCi0jaWZuZGVmIEhB
VkVfTElCQwotLyogcHJpbnRpbmcgKi8KLWV4dGVybiB1bnNpZ25lZCBsb25nIHNpbXBsZV9zdHJ0
b3VsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7Ci1leHRlcm4gbG9uZyBzaW1w
bGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7Ci1leHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIHNpbXBsZV9zdHJ0b3VsbChjb25zdCBjaGFyICosY2hhciAqKix1bnNp
Z25lZCBpbnQpOwotZXh0ZXJuIGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICos
Y2hhciAqKix1bnNpZ25lZCBpbnQpOwotCi1leHRlcm4gaW50IHNwcmludGYoY2hhciAqIGJ1Ziwg
Y29uc3QgY2hhciAqIGZtdCwgLi4uKQotCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50Ziwg
MiwgMykpKTsKLWV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZh
X2xpc3QpCi0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAyLCAwKSkpOwotZXh0ZXJu
IGludCBzbnByaW50ZihjaGFyICogYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqIGZtdCwg
Li4uKQotCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKLWV4dGVybiBp
bnQgdnNucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFf
bGlzdCBhcmdzKQotCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgMCkpKTsKLWV4
dGVybiBpbnQgc2NucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICog
Zm10LCAuLi4pCi0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwotZXh0
ZXJuIGludCB2c2NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZt
dCwgdmFfbGlzdCBhcmdzKQotCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgMCkp
KTsKLWV4dGVybiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pCi0J
X19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsIDIsIDMpKSk7Ci1leHRlcm4gaW50IHZzc2Nh
bmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCi0JX19hdHRyaWJ1dGVfXyAo
KGZvcm1hdCAoc2NhbmYsIDIsIDApKSk7Ci0jZW5kaWYKLQotI2VuZGlmIC8qIF9MSUJfR1BMX0hf
ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi5oIGIvaW5jbHVkZS9saWIuaAppbmRleCA2Mjgz
NmM3Li4zOWQ2YTE4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpYi5oCisrKyBiL2luY2x1ZGUvbGli
LmgKQEAgLTY2LDExICs2Niw2IEBACiAjaWZkZWYgSEFWRV9MSUJDCiAjaW5jbHVkZSA8c3lzL3F1
ZXVlLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNlbHNlCi0jaW5jbHVkZSA8bGliLWdwbC5oPgot
I2VuZGlmCi0KLSNpZmRlZiBIQVZFX0xJQkMKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAv
KiBzdHJpbmcgYW5kIG1lbW9yeSBtYW5pcHVsYXRpb24gKi8KQEAgLTEwNyw2ICsxMDIsMjggQEAg
Y2hhciAqc3RycmNocihjb25zdCBjaGFyICpwLCBpbnQgY2gpOwogdm9pZAkqbWVtY3B5KHZvaWQg
KnRvLCBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgbGVuKTsKIAogc2l6ZV90IHN0cm5sZW4oY29u
c3QgY2hhciAqLCBzaXplX3QpOworCit1bnNpZ25lZCBsb25nIHN0cnRvdWwoY29uc3QgY2hhciAq
bnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpOworaW50NjRfdCBzdHJ0b3EoY29uc3QgY2hh
ciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpOwordWludDY0X3Qgc3RydG91cShjb25z
dCBjaGFyICpucHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSk7CisKK2V4dGVybiBpbnQgc3By
aW50ZihjaGFyICogYnVmLCBjb25zdCBjaGFyICogZm10LCAuLi4pCisgICAgICAgIF9fYXR0cmli
dXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsKK2V4dGVybiBpbnQgdnNwcmludGYoY2hh
ciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCisgICAgICAgIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgMiwgMCkpKTsKK2V4dGVybiBpbnQgc25wcmludGYoY2hhciAqIGJ1Ziwg
c2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKKyAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOworZXh0ZXJuIGludCB2c25wcmludGYoY2hhciAq
YnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCisgICAgICAg
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgMCkpKTsKK2V4dGVybiBpbnQgc2Nu
cHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICogZm10LCAuLi4pCisg
ICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKK2V4dGVybiBp
bnQgdnNjbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZh
X2xpc3QgYXJncykKKyAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCAw
KSkpOworZXh0ZXJuIGludCBzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikK
KyAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsIDIsIDMpKSk7CitleHRlcm4g
aW50IHZzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCisgICAgICAg
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLCAyLCAwKSkpOworCiAjZW5kaWYKIAogI2lu
Y2x1ZGUgPG1pbmktb3MvY29uc29sZS5oPgpkaWZmIC0tZ2l0IGEvbGliL3ByaW50Zi5jIGIvbGli
L3ByaW50Zi5jCmluZGV4IDQwZjkyZmMuLmU0OGFiNjEgMTAwNjQ0Ci0tLSBhL2xpYi9wcmludGYu
YworKysgYi9saWIvcHJpbnRmLmMKQEAgLTEsNTAgKzEsNTMgQEAKIC8qCiAgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotICogKEMpIDIwMDMgLSBSb2xmIE5ldWdlYmF1ZXIgLSBJbnRlbCBSZXNlYXJjaCBD
YW1icmlkZ2UKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogICAgICAgIEZpbGU6IHByaW50
Zi5jCi0gKiAgICAgIEF1dGhvcjogUm9sZiBOZXVnZWJhdWVyIChuZXVnZWJhckBkY3MuZ2xhLmFj
LnVrKQotICogICAgIENoYW5nZXM6IEdyemVnb3J6IE1pbG9zIChnbTI4MUBjYW0uYWMudWspIAor
ICogICAgICBBdXRob3I6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KICAqCi0gKiAg
ICAgICAgRGF0ZTogQXVnIDIwMDMsIEF1ZyAyMDA1CisgKiAgICAgICAgRGF0ZTogSnVuIDIwMTYK
ICAqCiAgKiBFbnZpcm9ubWVudDogWGVuIE1pbmltYWwgT1MKICAqIERlc2NyaXB0aW9uOiBMaWJy
YXJ5IGZ1bmN0aW9ucyBmb3IgcHJpbnRpbmcKLSAqICAgICAgICAgICAgICAoTGludXggcG9ydCwg
bWFpbmx5IGxpYi92c3ByaW50Zi5jKQorICogICAgICAgICAgICAgIChmcmVlQlNEIHBvcnQpCiAg
KgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICAqLwogCi0vKgotICogQ29weXJpZ2h0IChDKSAxOTkx
LCAxOTkyICBMaW51cyBUb3J2YWxkcwotICovCi0KLS8qIHZzcHJpbnRmLmMgLS0gTGFycyBXaXJ6
ZW5pdXMgJiBMaW51cyBUb3J2YWxkcy4gKi8KLS8qCi0gKiBXaXJ6ZW5pdXMgd3JvdGUgdGhpcyBw
b3J0YWJseSwgVG9ydmFsZHMgZnVja2VkIGl0IHVwIDotKQotICovCi0KLS8qCi0gKiBGcmkgSnVs
IDEzIDIwMDEgQ3J1dGNoZXIgRHVubmF2YW50IDxjcnV0Y2hlcitrZXJuZWxAZGF0YXN0YWNrcy5j
b20+Ci0gKiAtIGNoYW5nZWQgdG8gcHJvdmlkZSBzbnByaW50ZiBhbmQgdnNucHJpbnRmIGZ1bmN0
aW9ucwotICogU28gRmViICAxIDE2OjUxOjMyIENFVCAyMDA0IEp1ZXJnZW4gUXVhZGUgPHF1YWRl
QGhzbnIuZGU+Ci0gKiAtIHNjbnByaW50ZiBhbmQgdnNjbnByaW50ZgorLyotCisgKiBDb3B5cmln
aHQgKGMpIDE5OTAsIDE5OTMKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh
bGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKKyAqIFRoaXMgY29kZSBpcyBkZXJp
dmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gQmVya2VsZXkgYnkKKyAqIENocmlzIFRv
cmVrLgogICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSAq
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTEgVGhlIEZyZWVCU0QgRm91bmRhdGlvbgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBv
cnRpb25zIG9mIHRoaXMgc29mdHdhcmUgd2VyZSBkZXZlbG9wZWQgYnkgRGF2aWQgQ2hpc25hbGwK
KyAqIHVuZGVyIHNwb25zb3JzaGlwIGZyb20gdGhlIEZyZWVCU0QgRm91bmRhdGlvbi4KICAqCi0g
KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBV
bml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
ICAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgogICovCiAKICNpZiAhZGVmaW5lZCBIQVZF
X0xJQkMKQEAgLTU3LDQ0OSArNjAsNTI5IEBACiAjaW5jbHVkZSA8bWluaS1vcy9jdHlwZS5oPgog
I2luY2x1ZGUgPG1pbmktb3MvcG9zaXgvbGltaXRzLmg+CiAKLS8qKgotICogc2ltcGxlX3N0cnRv
dWwgLSBjb252ZXJ0IGEgc3RyaW5nIHRvIGFuIHVuc2lnbmVkIGxvbmcKLSAqIEBjcDogVGhlIHN0
YXJ0IG9mIHRoZSBzdHJpbmcKLSAqIEBlbmRwOiBBIHBvaW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUg
cGFyc2VkIHN0cmluZyB3aWxsIGJlIHBsYWNlZCBoZXJlCi0gKiBAYmFzZTogVGhlIG51bWJlciBi
YXNlIHRvIHVzZQorI2RlZmluZSBfX0RFQ09OU1QodHlwZSwgdmFyKSAgICAoKHR5cGUpKHVpbnRw
dHJfdCkoY29uc3Qgdm9pZCAqKSh2YXIpKQorLyogNjQgYml0cyArIDAtQnl0ZSBhdCBlbmQgKi8K
KyNkZWZpbmUgTUFYTkJVRgk2NQorCitzdGF0aWMgY2hhciBjb25zdCBoZXgyYXNjaWlfZGF0YVtd
ID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisvKgorICogUHV0IGEg
TlVMLXRlcm1pbmF0ZWQgQVNDSUkgbnVtYmVyIChiYXNlIDw9IDM2KSBpbiBhIGJ1ZmZlciBpbiBy
ZXZlcnNlCisgKiBvcmRlcjsgcmV0dXJuIGFuIG9wdGlvbmFsIGxlbmd0aCBhbmQgYSBwb2ludGVy
IHRvIHRoZSBsYXN0IGNoYXJhY3RlcgorICogd3JpdHRlbiBpbiB0aGUgYnVmZmVyIChpLmUuLCB0
aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcpLgorICogVGhlIGJ1ZmZlciBwb2ludGVk
IHRvIGJ5IGBuYnVmJyBtdXN0IGhhdmUgbGVuZ3RoID49IE1BWE5CVUYuCiAgKi8KLXVuc2lnbmVk
IGxvbmcgc2ltcGxlX3N0cnRvdWwoY29uc3QgY2hhciAqY3AsY2hhciAqKmVuZHAsdW5zaWduZWQg
aW50IGJhc2UpCitzdGF0aWMgY2hhciAqCitrc3ByaW50bihjaGFyICpuYnVmLCB1aW50bWF4X3Qg
bnVtLCBpbnQgYmFzZSwgaW50ICpsZW5wLCBpbnQgdXBwZXIpCiB7Ci0gICAgdW5zaWduZWQgbG9u
ZyByZXN1bHQgPSAwLHZhbHVlOwotCi0gICAgaWYgKCFiYXNlKSB7Ci0gICAgICAgIGJhc2UgPSAx
MDsKLSAgICAgICAgaWYgKCpjcCA9PSAnMCcpIHsKLSAgICAgICAgICAgIGJhc2UgPSA4OwotICAg
ICAgICAgICAgY3ArKzsKLSAgICAgICAgICAgIGlmICgoKmNwID09ICd4JykgJiYgaXN4ZGlnaXQo
Y3BbMV0pKSB7Ci0gICAgICAgICAgICAgICAgY3ArKzsKLSAgICAgICAgICAgICAgICBiYXNlID0g
MTY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKGlzeGRpZ2l0
KCpjcCkgJiYKLSAgICAgICAgICAgKHZhbHVlID0gaXNkaWdpdCgqY3ApID8gKmNwLScwJyA6IHRv
dXBwZXIoKmNwKS0nQScrMTApIDwgYmFzZSkgewotICAgICAgICByZXN1bHQgPSByZXN1bHQqYmFz
ZSArIHZhbHVlOwotICAgICAgICBjcCsrOwotICAgIH0KLSAgICBpZiAoZW5kcCkKLSAgICAgICAg
KmVuZHAgPSAoY2hhciAqKWNwOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qKgotICogc2lt
cGxlX3N0cnRvbCAtIGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBzaWduZWQgbG9uZwotICogQGNwOiBU
aGUgc3RhcnQgb2YgdGhlIHN0cmluZwotICogQGVuZHA6IEEgcG9pbnRlciB0byB0aGUgZW5kIG9m
IHRoZSBwYXJzZWQgc3RyaW5nIHdpbGwgYmUgcGxhY2VkIGhlcmUKLSAqIEBiYXNlOiBUaGUgbnVt
YmVyIGJhc2UgdG8gdXNlCi0gKi8KLWxvbmcgc2ltcGxlX3N0cnRvbChjb25zdCBjaGFyICpjcCxj
aGFyICoqZW5kcCx1bnNpZ25lZCBpbnQgYmFzZSkKLXsKLSAgICBpZigqY3A9PSctJykKLSAgICAg
ICAgcmV0dXJuIC1zaW1wbGVfc3RydG91bChjcCsxLGVuZHAsYmFzZSk7Ci0gICAgcmV0dXJuIHNp
bXBsZV9zdHJ0b3VsKGNwLGVuZHAsYmFzZSk7CisJY2hhciAqcCwgYzsKKworCXAgPSBuYnVmOwor
CSpwID0gJ1wwJzsKKwlkbyB7CisJCWMgPSBoZXgyYXNjaWlfZGF0YVtudW0gJSBiYXNlXTsKKwkJ
KisrcCA9IHVwcGVyID8gdG91cHBlcihjKSA6IGM7CisJfSB3aGlsZSAobnVtIC89IGJhc2UpOwor
CWlmIChsZW5wKQorCQkqbGVucCA9IHAgLSBuYnVmOworCXJldHVybiAocCk7CiB9CiAKLS8qKgot
ICogc2ltcGxlX3N0cnRvdWxsIC0gY29udmVydCBhIHN0cmluZyB0byBhbiB1bnNpZ25lZCBsb25n
IGxvbmcKLSAqIEBjcDogVGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcKLSAqIEBlbmRwOiBBIHBvaW50
ZXIgdG8gdGhlIGVuZCBvZiB0aGUgcGFyc2VkIHN0cmluZyB3aWxsIGJlIHBsYWNlZCBoZXJlCi0g
KiBAYmFzZTogVGhlIG51bWJlciBiYXNlIHRvIHVzZQorLyoKKyAqIENvbnZlcnQgYSBzdHJpbmcg
dG8gYW4gdW5zaWduZWQgbG9uZyBpbnRlZ2VyLgorICoKKyAqIElnbm9yZXMgYGxvY2FsZScgc3R1
ZmYuICBBc3N1bWVzIHRoYXQgdGhlIHVwcGVyIGFuZCBsb3dlciBjYXNlCisgKiBhbHBoYWJldHMg
YW5kIGRpZ2l0cyBhcmUgZWFjaCBjb250aWd1b3VzLgogICovCi11bnNpZ25lZCBsb25nIGxvbmcg
c2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKmNwLGNoYXIgKiplbmRwLHVuc2lnbmVkIGludCBi
YXNlKQordW5zaWduZWQgbG9uZworc3RydG91bChjb25zdCBjaGFyICpucHRyLCBjaGFyICoqZW5k
cHRyLCBpbnQgYmFzZSkKIHsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0ID0gMCx2YWx1
ZTsKLQotICAgIGlmICghYmFzZSkgewotICAgICAgICBiYXNlID0gMTA7Ci0gICAgICAgIGlmICgq
Y3AgPT0gJzAnKSB7Ci0gICAgICAgICAgICBiYXNlID0gODsKLSAgICAgICAgICAgIGNwKys7Ci0g
ICAgICAgICAgICBpZiAoKCpjcCA9PSAneCcpICYmIGlzeGRpZ2l0KGNwWzFdKSkgewotICAgICAg
ICAgICAgICAgIGNwKys7CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBucHRyOworICAgICAgICB1
bnNpZ25lZCBsb25nIGFjYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOworICAgICAgICB1bnNp
Z25lZCBsb25nIGN1dG9mZjsKKyAgICAgICAgaW50IG5lZyA9IDAsIGFueSwgY3V0bGltOworCisg
ICAgICAgIC8qCisgICAgICAgICAqIFNlZSBzdHJ0b2wgZm9yIGNvbW1lbnRzIGFzIHRvIHRoZSBs
b2dpYyB1c2VkLgorICAgICAgICAgKi8KKyAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGMg
PSAqcysrOworICAgICAgICB9IHdoaWxlIChpc3NwYWNlKGMpKTsKKyAgICAgICAgaWYgKGMgPT0g
Jy0nKSB7CisgICAgICAgICAgICAgICAgbmVnID0gMTsKKyAgICAgICAgICAgICAgICBjID0gKnMr
KzsKKyAgICAgICAgfSBlbHNlIGlmIChjID09ICcrJykKKyAgICAgICAgICAgICAgICBjID0gKnMr
KzsKKyAgICAgICAgaWYgKChiYXNlID09IDAgfHwgYmFzZSA9PSAxNikgJiYKKyAgICAgICAgICAg
IGMgPT0gJzAnICYmICgqcyA9PSAneCcgfHwgKnMgPT0gJ1gnKSkgeworICAgICAgICAgICAgICAg
IGMgPSBzWzFdOworICAgICAgICAgICAgICAgIHMgKz0gMjsKICAgICAgICAgICAgICAgICBiYXNl
ID0gMTY7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKGlzeGRp
Z2l0KCpjcCkgJiYgKHZhbHVlID0gaXNkaWdpdCgqY3ApID8gKmNwLScwJyA6IChpc2xvd2VyKCpj
cCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID8gdG91cHBlcigqY3ApIDogKmNwKS0nQScrMTApIDwgYmFzZSkgewotICAgICAg
ICByZXN1bHQgPSByZXN1bHQqYmFzZSArIHZhbHVlOwotICAgICAgICBjcCsrOwotICAgIH0KLSAg
ICBpZiAoZW5kcCkKLSAgICAgICAgKmVuZHAgPSAoY2hhciAqKWNwOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIGlmIChiYXNlID09IDApCisgICAgICAgICAgICAgICAgYmFzZSA9IGMgPT0g
JzAnID8gOCA6IDEwOworICAgICAgICBjdXRvZmYgPSAodW5zaWduZWQgbG9uZylVTE9OR19NQVgg
LyAodW5zaWduZWQgbG9uZyliYXNlOworICAgICAgICBjdXRsaW0gPSAodW5zaWduZWQgbG9uZylV
TE9OR19NQVggJSAodW5zaWduZWQgbG9uZyliYXNlOworICAgICAgICBmb3IgKGFjYyA9IDAsIGFu
eSA9IDA7OyBjID0gKnMrKykgeworICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0
KGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaXNhbHBoYShjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgLT0gaXN1cHBl
cihjKSA/ICdBJyAtIDEwIDogJ2EnIC0gMTA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gYmFzZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChhbnkg
PCAwIHx8IGFjYyA+IGN1dG9mZiB8fCAoYWNjID09IGN1dG9mZiAmJiBjID4gY3V0bGltKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFueSA9IC0xOworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgYW55ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFjYyAqPSBiYXNlOworICAgICAgICAgICAgICAgICAgICAgICAgYWNjICs9IGM7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChhbnkgPCAwKSB7CisgICAgICAgICAg
ICAgICAgYWNjID0gVUxPTkdfTUFYOworICAgICAgICB9IGVsc2UgaWYgKG5lZykKKyAgICAgICAg
ICAgICAgICBhY2MgPSAtYWNjOworICAgICAgICBpZiAoZW5kcHRyICE9IDApCisgICAgICAgICAg
ICAgICAgKmVuZHB0ciA9IF9fREVDT05TVChjaGFyICosIGFueSA/IHMgLSAxIDogbnB0cik7Cisg
ICAgICAgIHJldHVybiAoYWNjKTsKIH0KIAotLyoqCi0gKiBzaW1wbGVfc3RydG9sbCAtIGNvbnZl
cnQgYSBzdHJpbmcgdG8gYSBzaWduZWQgbG9uZyBsb25nCi0gKiBAY3A6IFRoZSBzdGFydCBvZiB0
aGUgc3RyaW5nCi0gKiBAZW5kcDogQSBwb2ludGVyIHRvIHRoZSBlbmQgb2YgdGhlIHBhcnNlZCBz
dHJpbmcgd2lsbCBiZSBwbGFjZWQgaGVyZQotICogQGJhc2U6IFRoZSBudW1iZXIgYmFzZSB0byB1
c2UKKy8qCisgKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgcXVhZCBpbnRlZ2VyLgorICoKKyAqIEln
bm9yZXMgYGxvY2FsZScgc3R1ZmYuICBBc3N1bWVzIHRoYXQgdGhlIHVwcGVyIGFuZCBsb3dlciBj
YXNlCisgKiBhbHBoYWJldHMgYW5kIGRpZ2l0cyBhcmUgZWFjaCBjb250aWd1b3VzLgogICovCi1s
b25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAqY3AsY2hhciAqKmVuZHAsdW5zaWdu
ZWQgaW50IGJhc2UpCi17Ci0gICAgaWYoKmNwPT0nLScpCi0gICAgICAgIHJldHVybiAtc2ltcGxl
X3N0cnRvdWxsKGNwKzEsZW5kcCxiYXNlKTsKLSAgICByZXR1cm4gc2ltcGxlX3N0cnRvdWxsKGNw
LGVuZHAsYmFzZSk7Ci19Ci0KLXN0YXRpYyBpbnQgc2tpcF9hdG9pKGNvbnN0IGNoYXIgKipzKQot
ewotICAgIGludCBpPTA7Ci0KLSAgICB3aGlsZSAoaXNkaWdpdCgqKnMpKQotICAgICAgICBpID0g
aSoxMCArICooKCpzKSsrKSAtICcwJzsKLSAgICByZXR1cm4gaTsKLX0KLQotI2RlZmluZSBaRVJP
UEFEIDEgICAgICAgICAgICAgICAvKiBwYWQgd2l0aCB6ZXJvICovCi0jZGVmaW5lIFNJR04gICAg
MiAgICAgICAgICAgICAgIC8qIHVuc2lnbmVkL3NpZ25lZCBsb25nICovCi0jZGVmaW5lIFBMVVMg
ICAgNCAgICAgICAgICAgICAgIC8qIHNob3cgcGx1cyAqLwotI2RlZmluZSBTUEFDRSAgIDggICAg
ICAgICAgICAgICAvKiBzcGFjZSBpZiBwbHVzICovCi0jZGVmaW5lIExFRlQgICAgMTYgICAgICAg
ICAgICAgIC8qIGxlZnQganVzdGlmaWVkICovCi0jZGVmaW5lIFNQRUNJQUwgMzIgICAgICAgICAg
ICAgIC8qIDB4ICovCi0jZGVmaW5lIExBUkdFICAgNjQgICAgICAgICAgICAgIC8qIHVzZSAnQUJD
REVGJyBpbnN0ZWFkIG9mICdhYmNkZWYnICovCi0KLXN0YXRpYyBjaGFyICogbnVtYmVyKGNoYXIg
KiBidWYsIGNoYXIgKiBlbmQsIGxvbmcgbG9uZyBudW0sIGludCBiYXNlLCBpbnQgc2l6ZSwgaW50
IHByZWNpc2lvbiwgaW50IHR5cGUpCitpbnQ2NF90CitzdHJ0b3EoY29uc3QgY2hhciAqbnB0ciwg
Y2hhciAqKmVuZHB0ciwgaW50IGJhc2UpCiB7Ci0gICAgY2hhciBjLHNpZ24sdG1wWzY2XTsKLSAg
ICBjb25zdCBjaGFyICpkaWdpdHM7Ci0gICAgY29uc3QgY2hhciBzbWFsbF9kaWdpdHNbXSA9ICIw
MTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotICAgIGNvbnN0IGNoYXIgbGFy
Z2VfZGlnaXRzW10gPSAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjsKLSAg
ICBpbnQgaTsKLQotICAgIGRpZ2l0cyA9ICh0eXBlICYgTEFSR0UpID8gbGFyZ2VfZGlnaXRzIDog
c21hbGxfZGlnaXRzOwotICAgIGlmICh0eXBlICYgTEVGVCkKLSAgICAgICAgdHlwZSAmPSB+WkVS
T1BBRDsKLSAgICBpZiAoYmFzZSA8IDIgfHwgYmFzZSA+IDM2KQotICAgICAgICByZXR1cm4gYnVm
OwotICAgIGMgPSAodHlwZSAmIFpFUk9QQUQpID8gJzAnIDogJyAnOwotICAgIHNpZ24gPSAwOwot
ICAgIGlmICh0eXBlICYgU0lHTikgewotICAgICAgICBpZiAobnVtIDwgMCkgewotICAgICAgICAg
ICAgc2lnbiA9ICctJzsKLSAgICAgICAgICAgIG51bSA9IC1udW07Ci0gICAgICAgICAgICBzaXpl
LS07Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSAmIFBMVVMpIHsKLSAgICAgICAgICAgIHNpZ24g
PSAnKyc7Ci0gICAgICAgICAgICBzaXplLS07Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSAmIFNQ
QUNFKSB7Ci0gICAgICAgICAgICBzaWduID0gJyAnOwotICAgICAgICAgICAgc2l6ZS0tOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGlmICh0eXBlICYgU1BFQ0lBTCkgewotICAgICAgICBpZiAoYmFz
ZSA9PSAxNikKLSAgICAgICAgICAgIHNpemUgLT0gMjsKLSAgICAgICAgZWxzZSBpZiAoYmFzZSA9
PSA4KQotICAgICAgICAgICAgc2l6ZS0tOwotICAgIH0KLSAgICBpID0gMDsKLSAgICBpZiAobnVt
ID09IDApCi0gICAgICAgIHRtcFtpKytdPScwJzsKLSAgICBlbHNlIAotICAgIHsKLSAgICAgICAg
LyogWFhYIEtBRjogZm9yY2UgdW5zaWduZWQgbW9kIGFuZCBkaXYuICovCi0gICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBudW0yPSh1bnNpZ25lZCBsb25nIGxvbmcpbnVtOwotICAgICAgICB1bnNp
Z25lZCBpbnQgYmFzZTI9KHVuc2lnbmVkIGludCliYXNlOwotICAgICAgICB3aGlsZSAobnVtMiAh
PSAwKSB7IHRtcFtpKytdID0gZGlnaXRzW251bTIlYmFzZTJdOyBudW0yIC89IGJhc2UyOyB9Ci0g
ICAgfQotICAgIGlmIChpID4gcHJlY2lzaW9uKQotICAgICAgICBwcmVjaXNpb24gPSBpOwotICAg
IHNpemUgLT0gcHJlY2lzaW9uOwotICAgIGlmICghKHR5cGUmKFpFUk9QQUQrTEVGVCkpKSB7Ci0g
ICAgICAgIHdoaWxlKHNpemUtLT4wKSB7Ci0gICAgICAgICAgICBpZiAoYnVmIDw9IGVuZCkKLSAg
ICAgICAgICAgICAgICAqYnVmID0gJyAnOwotICAgICAgICAgICAgKytidWY7CisgICAgICAgIGNv
bnN0IGNoYXIgKnM7CisgICAgICAgIHVpbnQ2NF90IGFjYzsKKyAgICAgICAgdW5zaWduZWQgY2hh
ciBjOworICAgICAgICB1aW50NjRfdCBxYmFzZSwgY3V0b2ZmOworICAgICAgICBpbnQgbmVnLCBh
bnksIGN1dGxpbTsKKworICAgICAgICAvKgorICAgICAgICAgKiBTa2lwIHdoaXRlIHNwYWNlIGFu
ZCBwaWNrIHVwIGxlYWRpbmcgKy8tIHNpZ24gaWYgYW55LgorICAgICAgICAgKiBJZiBiYXNlIGlz
IDAsIGFsbG93IDB4IGZvciBoZXggYW5kIDAgZm9yIG9jdGFsLCBlbHNlCisgICAgICAgICAqIGFz
c3VtZSBkZWNpbWFsOyBpZiBiYXNlIGlzIGFscmVhZHkgMTYsIGFsbG93IDB4LgorICAgICAgICAg
Ki8KKyAgICAgICAgcyA9IG5wdHI7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBjID0g
KnMrKzsKKyAgICAgICAgfSB3aGlsZSAoaXNzcGFjZShjKSk7CisgICAgICAgIGlmIChjID09ICct
JykgeworICAgICAgICAgICAgICAgIG5lZyA9IDE7CisgICAgICAgICAgICAgICAgYyA9ICpzKys7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmVnID0gMDsKKyAgICAgICAgICAg
ICAgICBpZiAoYyA9PSAnKycpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsKICAg
ICAgICAgfQotICAgIH0KLSAgICBpZiAoc2lnbikgewotICAgICAgICBpZiAoYnVmIDw9IGVuZCkK
LSAgICAgICAgICAgICpidWYgPSBzaWduOwotICAgICAgICArK2J1ZjsKLSAgICB9Ci0gICAgaWYg
KHR5cGUgJiBTUEVDSUFMKSB7Ci0gICAgICAgIGlmIChiYXNlPT04KSB7Ci0gICAgICAgICAgICBp
ZiAoYnVmIDw9IGVuZCkKLSAgICAgICAgICAgICAgICAqYnVmID0gJzAnOwotICAgICAgICAgICAg
KytidWY7Ci0gICAgICAgIH0gZWxzZSBpZiAoYmFzZT09MTYpIHsKLSAgICAgICAgICAgIGlmIChi
dWYgPD0gZW5kKQotICAgICAgICAgICAgICAgICpidWYgPSAnMCc7Ci0gICAgICAgICAgICArK2J1
ZjsKLSAgICAgICAgICAgIGlmIChidWYgPD0gZW5kKQotICAgICAgICAgICAgICAgICpidWYgPSBk
aWdpdHNbMzNdOwotICAgICAgICAgICAgKytidWY7CisgICAgICAgIGlmICgoYmFzZSA9PSAwIHx8
IGJhc2UgPT0gMTYpICYmCisgICAgICAgICAgICBjID09ICcwJyAmJiAoKnMgPT0gJ3gnIHx8ICpz
ID09ICdYJykpIHsKKyAgICAgICAgICAgICAgICBjID0gc1sxXTsKKyAgICAgICAgICAgICAgICBz
ICs9IDI7CisgICAgICAgICAgICAgICAgYmFzZSA9IDE2OwogICAgICAgICB9Ci0gICAgfQotICAg
IGlmICghKHR5cGUgJiBMRUZUKSkgewotICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAg
ICAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCi0gICAgICAgICAgICAgICAgKmJ1ZiA9IGM7Ci0gICAg
ICAgICAgICArK2J1ZjsKKyAgICAgICAgaWYgKGJhc2UgPT0gMCkKKyAgICAgICAgICAgICAgICBi
YXNlID0gYyA9PSAnMCcgPyA4IDogMTA7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29tcHV0
ZSB0aGUgY3V0b2ZmIHZhbHVlIGJldHdlZW4gbGVnYWwgbnVtYmVycyBhbmQgaWxsZWdhbAorICAg
ICAgICAgKiBudW1iZXJzLiAgVGhhdCBpcyB0aGUgbGFyZ2VzdCBsZWdhbCB2YWx1ZSwgZGl2aWRl
ZCBieSB0aGUKKyAgICAgICAgICogYmFzZS4gIEFuIGlucHV0IG51bWJlciB0aGF0IGlzIGdyZWF0
ZXIgdGhhbiB0aGlzIHZhbHVlLCBpZgorICAgICAgICAgKiBmb2xsb3dlZCBieSBhIGxlZ2FsIGlu
cHV0IGNoYXJhY3RlciwgaXMgdG9vIGJpZy4gIE9uZSB0aGF0CisgICAgICAgICAqIGlzIGVxdWFs
IHRvIHRoaXMgdmFsdWUgbWF5IGJlIHZhbGlkIG9yIG5vdDsgdGhlIGxpbWl0CisgICAgICAgICAq
IGJldHdlZW4gdmFsaWQgYW5kIGludmFsaWQgbnVtYmVycyBpcyB0aGVuIGJhc2VkIG9uIHRoZSBs
YXN0CisgICAgICAgICAqIGRpZ2l0LiAgRm9yIGluc3RhbmNlLCBpZiB0aGUgcmFuZ2UgZm9yIHF1
YWRzIGlzCisgICAgICAgICAqIFstOTIyMzM3MjAzNjg1NDc3NTgwOC4uOTIyMzM3MjAzNjg1NDc3
NTgwN10gYW5kIHRoZSBpbnB1dCBiYXNlCisgICAgICAgICAqIGlzIDEwLCBjdXRvZmYgd2lsbCBi
ZSBzZXQgdG8gOTIyMzM3MjAzNjg1NDc3NTgwIGFuZCBjdXRsaW0gdG8KKyAgICAgICAgICogZWl0
aGVyIDcgKG5lZz09MCkgb3IgOCAobmVnPT0xKSwgbWVhbmluZyB0aGF0IGlmIHdlIGhhdmUKKyAg
ICAgICAgICogYWNjdW11bGF0ZWQgYSB2YWx1ZSA+IDkyMjMzNzIwMzY4NTQ3NzU4MCwgb3IgZXF1
YWwgYnV0IHRoZQorICAgICAgICAgKiBuZXh0IGRpZ2l0IGlzID4gNyAob3IgOCksIHRoZSBudW1i
ZXIgaXMgdG9vIGJpZywgYW5kIHdlIHdpbGwKKyAgICAgICAgICogcmV0dXJuIGEgcmFuZ2UgZXJy
b3IuCisgICAgICAgICAqCisgICAgICAgICAqIFNldCBhbnkgaWYgYW55IGBkaWdpdHMnIGNvbnN1
bWVkOyBtYWtlIGl0IG5lZ2F0aXZlIHRvIGluZGljYXRlCisgICAgICAgICAqIG92ZXJmbG93Lgor
ICAgICAgICAgKi8KKyAgICAgICAgcWJhc2UgPSAodW5zaWduZWQpYmFzZTsKKyAgICAgICAgY3V0
b2ZmID0gbmVnID8gKHVpbnQ2NF90KS0oTExPTkdfTUlOICsgTExPTkdfTUFYKSArIExMT05HX01B
WCA6IExMT05HX01BWDsKKyAgICAgICAgY3V0bGltID0gY3V0b2ZmICUgcWJhc2U7CisgICAgICAg
IGN1dG9mZiAvPSBxYmFzZTsKKyAgICAgICAgZm9yIChhY2MgPSAwLCBhbnkgPSAwOzsgYyA9ICpz
KyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzYXNjaWkoYykpCisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGMgLT0gJzAnOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzYWxw
aGEoYykpCisgICAgICAgICAgICAgICAgICAgICAgICBjIC09IGlzdXBwZXIoYykgPyAnQScgLSAx
MCA6ICdhJyAtIDEwOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChjID49IGJhc2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoYW55IDwgMCB8fCBhY2MgPiBj
dXRvZmYgfHwgKGFjYyA9PSBjdXRvZmYgJiYgYyA+IGN1dGxpbSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBhbnkgPSAtMTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFueSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBhY2MgKj0gcWJhc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBhY2MgKz0gYzsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKGkgPCBwcmVjaXNpb24tLSkgewotICAgICAgICBp
ZiAoYnVmIDw9IGVuZCkKLSAgICAgICAgICAgICpidWYgPSAnMCc7Ci0gICAgICAgICsrYnVmOwot
ICAgIH0KLSAgICB3aGlsZSAoaS0tID4gMCkgewotICAgICAgICBpZiAoYnVmIDw9IGVuZCkKLSAg
ICAgICAgICAgICpidWYgPSB0bXBbaV07Ci0gICAgICAgICsrYnVmOwotICAgIH0KLSAgICB3aGls
ZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBpZiAoYnVmIDw9IGVuZCkKLSAgICAgICAgICAgICpi
dWYgPSAnICc7Ci0gICAgICAgICsrYnVmOwotICAgIH0KLSAgICByZXR1cm4gYnVmOworICAgICAg
ICBpZiAoYW55IDwgMCkgeworICAgICAgICAgICAgICAgIGFjYyA9IG5lZyA/IExMT05HX01JTiA6
IExMT05HX01BWDsKKyAgICAgICAgfSBlbHNlIGlmIChuZWcpCisgICAgICAgICAgICAgICAgYWNj
ID0gLWFjYzsKKyAgICAgICAgaWYgKGVuZHB0ciAhPSAwKQorICAgICAgICAgICAgICAgICplbmRw
dHIgPSBfX0RFQ09OU1QoY2hhciAqLCBhbnkgPyBzIC0gMSA6IG5wdHIpOworICAgICAgICByZXR1
cm4gKGFjYyk7CiB9CiAKLS8qKgotKiB2c25wcmludGYgLSBGb3JtYXQgYSBzdHJpbmcgYW5kIHBs
YWNlIGl0IGluIGEgYnVmZmVyCi0qIEBidWY6IFRoZSBidWZmZXIgdG8gcGxhY2UgdGhlIHJlc3Vs
dCBpbnRvCi0qIEBzaXplOiBUaGUgc2l6ZSBvZiB0aGUgYnVmZmVyLCBpbmNsdWRpbmcgdGhlIHRy
YWlsaW5nIG51bGwgc3BhY2UKLSogQGZtdDogVGhlIGZvcm1hdCBzdHJpbmcgdG8gdXNlCi0qIEBh
cmdzOiBBcmd1bWVudHMgZm9yIHRoZSBmb3JtYXQgc3RyaW5nCi0qCi0qIENhbGwgdGhpcyBmdW5j
dGlvbiBpZiB5b3UgYXJlIGFscmVhZHkgZGVhbGluZyB3aXRoIGEgdmFfbGlzdC4KLSogWW91IHBy
b2JhYmx5IHdhbnQgc25wcmludGYgaW5zdGVhZC4KKy8qCisgKiBDb252ZXJ0IGEgc3RyaW5nIHRv
IGFuIHVuc2lnbmVkIHF1YWQgaW50ZWdlci4KKyAqCisgKiBJZ25vcmVzIGBsb2NhbGUnIHN0dWZm
LiAgQXNzdW1lcyB0aGF0IHRoZSB1cHBlciBhbmQgbG93ZXIgY2FzZQorICogYWxwaGFiZXRzIGFu
ZCBkaWdpdHMgYXJlIGVhY2ggY29udGlndW91cy4KICAqLwotaW50IHZzbnByaW50ZihjaGFyICpi
dWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykKK3VpbnQ2NF90
CitzdHJ0b3VxKGNvbnN0IGNoYXIgKm5wdHIsIGNoYXIgKiplbmRwdHIsIGludCBiYXNlKQogewot
ICAgIGludCBsZW47Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG51bTsKLSAgICBpbnQgaSwgYmFz
ZTsKLSAgICBjaGFyICpzdHIsICplbmQsIGM7Ci0gICAgY29uc3QgY2hhciAqczsKLQotICAgIGlu
dCBmbGFnczsgICAgICAgICAgLyogZmxhZ3MgdG8gbnVtYmVyKCkgKi8KLQotICAgIGludCBmaWVs
ZF93aWR0aDsgICAgLyogd2lkdGggb2Ygb3V0cHV0IGZpZWxkICovCi0gICAgaW50IHByZWNpc2lv
bjsgICAgICAgICAgICAgIC8qIG1pbi4gIyBvZiBkaWdpdHMgZm9yIGludGVnZXJzOyBtYXgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGNoYXJzIGZvciBmcm9t
IHN0cmluZyAqLwotICAgIGludCBxdWFsaWZpZXI7ICAgICAgICAgICAgICAvKiAnaCcsICdsJywg
b3IgJ0wnIGZvciBpbnRlZ2VyIGZpZWxkcyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiAneicgc3VwcG9ydCBhZGRlZCAyMy83LzE5OTkgUy5ILiAgICAqLwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiAneicgY2hhbmdlZCB0byAnWicgLS1kYXZpZG0gMS8y
NS85OSAqLwotCi0gICAgc3RyID0gYnVmOwotICAgIGVuZCA9IGJ1ZiArIHNpemUgLSAxOwotCi0g
ICAgaWYgKGVuZCA8IGJ1ZiAtIDEpIHsKLSAgICAgICAgZW5kID0gKCh2b2lkICopIC0xKTsKLSAg
ICAgICAgc2l6ZSA9IGVuZCAtIGJ1ZiArIDE7Ci0gICAgfQotCi0gICAgZm9yICg7ICpmbXQgOyAr
K2ZtdCkgewotICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKLSAgICAgICAgICAgIGlmIChzdHIg
PD0gZW5kKQotICAgICAgICAgICAgICAgICpzdHIgPSAqZm10OwotICAgICAgICAgICAgKytzdHI7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIHByb2Nlc3Mg
ZmxhZ3MgKi8KLSAgICAgICAgZmxhZ3MgPSAwOwotICAgIHJlcGVhdDoKLSAgICAgICAgKytmbXQ7
ICAgICAgICAgIC8qIHRoaXMgYWxzbyBza2lwcyBmaXJzdCAnJScgKi8KLSAgICAgICAgc3dpdGNo
ICgqZm10KSB7Ci0gICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBMRUZUOyBnb3RvIHJlcGVhdDsK
LSAgICAgICAgY2FzZSAnKyc6IGZsYWdzIHw9IFBMVVM7IGdvdG8gcmVwZWF0OwotICAgICAgICBj
YXNlICcgJzogZmxhZ3MgfD0gU1BBQ0U7IGdvdG8gcmVwZWF0OwotICAgICAgICBjYXNlICcjJzog
ZmxhZ3MgfD0gU1BFQ0lBTDsgZ290byByZXBlYXQ7Ci0gICAgICAgIGNhc2UgJzAnOiBmbGFncyB8
PSBaRVJPUEFEOyBnb3RvIHJlcGVhdDsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIGdldCBmaWVs
ZCB3aWR0aCAqLwotICAgICAgICBmaWVsZF93aWR0aCA9IC0xOwotICAgICAgICBpZiAoaXNkaWdp
dCgqZm10KSkKLSAgICAgICAgICAgIGZpZWxkX3dpZHRoID0gc2tpcF9hdG9pKCZmbXQpOwotICAg
ICAgICBlbHNlIGlmICgqZm10ID09ICcqJykgewotICAgICAgICAgICAgKytmbXQ7Ci0gICAgICAg
ICAgICAvKiBpdCdzIHRoZSBuZXh0IGFyZ3VtZW50ICovCi0gICAgICAgICAgICBmaWVsZF93aWR0
aCA9IHZhX2FyZyhhcmdzLCBpbnQpOwotICAgICAgICAgICAgaWYgKGZpZWxkX3dpZHRoIDwgMCkg
ewotICAgICAgICAgICAgICAgIGZpZWxkX3dpZHRoID0gLWZpZWxkX3dpZHRoOwotICAgICAgICAg
ICAgICAgIGZsYWdzIHw9IExFRlQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICAvKiBnZXQgdGhlIHByZWNpc2lvbiAqLwotICAgICAgICBwcmVjaXNpb24gPSAtMTsKLSAgICAg
ICAgaWYgKCpmbXQgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2ZtdDsKLSAgICAgICAgICAgIGlm
IChpc2RpZ2l0KCpmbXQpKQotICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IHNraXBfYXRvaSgm
Zm10KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJyonKSB7Ci0gICAgICAgICAgICAg
ICAgKytmbXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGl0J3MgdGhlIG5leHQgYXJn
dW1lbnQgKi8KLSAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSB2YV9hcmcoYXJncywgaW50KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwcmVjaXNpb24gPCAwKQotICAgICAgICAg
ICAgICAgIHByZWNpc2lvbiA9IDA7CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBucHRyOworICAg
ICAgICB1aW50NjRfdCBhY2M7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKKyAgICAgICAgdWlu
dDY0X3QgcWJhc2UsIGN1dG9mZjsKKyAgICAgICAgaW50IG5lZywgYW55LCBjdXRsaW07CisKKyAg
ICAgICAgLyoKKyAgICAgICAgICogU2VlIHN0cnRvcSBmb3IgY29tbWVudHMgYXMgdG8gdGhlIGxv
Z2ljIHVzZWQuCisgICAgICAgICAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgYyA9
ICpzKys7CisgICAgICAgIH0gd2hpbGUgKGlzc3BhY2UoYykpOworICAgICAgICBpZiAoYyA9PSAn
LScpIHsKKyAgICAgICAgICAgICAgICBuZWcgPSAxOworICAgICAgICAgICAgICAgIGMgPSAqcysr
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5lZyA9IDA7CisgICAgICAgICAg
ICAgICAgaWYgKGMgPT0gJysnKQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpzKys7CiAg
ICAgICAgIH0KLQotICAgICAgICAvKiBnZXQgdGhlIGNvbnZlcnNpb24gcXVhbGlmaWVyICovCi0g
ICAgICAgIHF1YWxpZmllciA9IC0xOwotICAgICAgICBpZiAoKmZtdCA9PSAnaCcgfHwgKmZtdCA9
PSAnbCcgfHwgKmZtdCA9PSAnTCcgfHwgKmZtdCA9PSdaJyB8fCAqZm10ID09ICd6JykgewotICAg
ICAgICAgICAgcXVhbGlmaWVyID0gKmZtdDsKLSAgICAgICAgICAgICsrZm10OwotICAgICAgICAg
ICAgaWYgKHF1YWxpZmllciA9PSAnbCcgJiYgKmZtdCA9PSAnbCcpIHsKLSAgICAgICAgICAgICAg
ICBxdWFsaWZpZXIgPSAnTCc7Ci0gICAgICAgICAgICAgICAgKytmbXQ7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKHF1YWxpZmllciA9PSAneicpIHsKLSAgICAgICAgICAgICAgICBxdWFsaWZpZXIg
PSAnWic7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICgoYmFzZSA9PSAwIHx8IGJhc2UgPT0g
MTYpICYmCisgICAgICAgICAgICBjID09ICcwJyAmJiAoKnMgPT0gJ3gnIHx8ICpzID09ICdYJykp
IHsKKyAgICAgICAgICAgICAgICBjID0gc1sxXTsKKyAgICAgICAgICAgICAgICBzICs9IDI7Cisg
ICAgICAgICAgICAgICAgYmFzZSA9IDE2OwogICAgICAgICB9Ci0gICAgICAgIGlmICgqZm10ID09
ICdxJykgewotICAgICAgICAgICAgcXVhbGlmaWVyID0gJ0wnOwotICAgICAgICAgICAgKytmbXQ7
CisgICAgICAgIGlmIChiYXNlID09IDApCisgICAgICAgICAgICAgICAgYmFzZSA9IGMgPT0gJzAn
ID8gOCA6IDEwOworICAgICAgICBxYmFzZSA9ICh1bnNpZ25lZCliYXNlOworICAgICAgICBjdXRv
ZmYgPSAodWludDY0X3QpVUxMT05HX01BWCAvIHFiYXNlOworICAgICAgICBjdXRsaW0gPSAodWlu
dDY0X3QpVUxMT05HX01BWCAlIHFiYXNlOworICAgICAgICBmb3IgKGFjYyA9IDAsIGFueSA9IDA7
OyBjID0gKnMrKykgeworICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0KGMpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaXNhbHBoYShjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgLT0gaXN1cHBlcihjKSA/
ICdBJyAtIDEwIDogJ2EnIC0gMTA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gYmFzZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChhbnkgPCAwIHx8
IGFjYyA+IGN1dG9mZiB8fCAoYWNjID09IGN1dG9mZiAmJiBjID4gY3V0bGltKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFueSA9IC0xOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgYW55ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYyAq
PSBxYmFzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYyArPSBjOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoYW55IDwgMCkgeworICAgICAgICAgICAgICAg
IGFjYyA9IFVMTE9OR19NQVg7CisgICAgICAgIH0gZWxzZSBpZiAobmVnKQorICAgICAgICAgICAg
ICAgIGFjYyA9IC1hY2M7CisgICAgICAgIGlmIChlbmRwdHIgIT0gMCkKKyAgICAgICAgICAgICAg
ICAqZW5kcHRyID0gX19ERUNPTlNUKGNoYXIgKiwgYW55ID8gcyAtIDEgOiBucHRyKTsKKyAgICAg
ICAgcmV0dXJuIChhY2MpOworfQogCi0gICAgICAgIC8qIGRlZmF1bHQgYmFzZSAqLwotICAgICAg
ICBiYXNlID0gMTA7Ci0KLSAgICAgICAgc3dpdGNoICgqZm10KSB7Ci0gICAgICAgIGNhc2UgJ2Mn
OgotICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBMRUZUKSkgewotICAgICAgICAgICAgICAgIHdo
aWxlICgtLWZpZWxkX3dpZHRoID4gMCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RyIDw9
IGVuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdHIgPSAnICc7Ci0gICAgICAgICAgICAg
ICAgICAgICsrc3RyOworLyoKKyAqIFNjYWxlZCBkb3duIHZlcnNpb24gb2YgcHJpbnRmKDMpLgor
ICovCitpbnQKK3ZzbnByaW50ZihjaGFyICpzdHIsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICpm
bXQsIHZhX2xpc3QgYXApCit7CisjZGVmaW5lIFBDSEFSKGMpIHsgaWYgKHNpemUgPj0gMikgeyAq
c3RyKysgPSBjOyBzaXplLS07IH0gcmV0dmFsKys7IH0KKyAgICAgICAgY2hhciBuYnVmW01BWE5C
VUZdOworICAgICAgICBjb25zdCBjaGFyICpwLCAqcGVyY2VudDsKKyAgICAgICAgaW50IGNoLCBu
OworICAgICAgICB1aW50bWF4X3QgbnVtOworICAgICAgICBpbnQgYmFzZSwgbGZsYWcsIHFmbGFn
LCB0bXAsIHdpZHRoLCBsYWRqdXN0LCBzaGFycGZsYWcsIG5lZywgc2lnbiwgZG90OworICAgICAg
ICBpbnQgY2ZsYWcsIGhmbGFnLCBqZmxhZywgdGZsYWcsIHpmbGFnOworICAgICAgICBpbnQgZHdp
ZHRoLCB1cHBlcjsKKyAgICAgICAgY2hhciBwYWRjOworICAgICAgICBpbnQgc3RvcCA9IDAsIHJl
dHZhbCA9IDA7CisKKyAgICAgICAgbnVtID0gMDsKKworICAgICAgICBpZiAoZm10ID09IE5VTEwp
CisgICAgICAgICAgICAgICAgZm10ID0gIihmbXQgbnVsbClcbiI7CisKKyAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgICAgIHBhZGMgPSAnICc7CisgICAgICAgICAgICAgICAgd2lkdGgg
PSAwOworICAgICAgICAgICAgICAgIHdoaWxlICgoY2ggPSAodV9jaGFyKSpmbXQrKykgIT0gJyUn
IHx8IHN0b3ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXDAnKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaXplID49IDEpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJ1wwJzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXR2YWwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoY2gpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikgdmFf
YXJnKGFyZ3MsIGludCk7Ci0gICAgICAgICAgICBpZiAoc3RyIDw9IGVuZCkKLSAgICAgICAgICAg
ICAgICAqc3RyID0gYzsKLSAgICAgICAgICAgICsrc3RyOwotICAgICAgICAgICAgd2hpbGUgKC0t
ZmllbGRfd2lkdGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCi0gICAg
ICAgICAgICAgICAgICAgICpzdHIgPSAnICc7Ci0gICAgICAgICAgICAgICAgKytzdHI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjYXNlICdzJzoKLSAg
ICAgICAgICAgIHMgPSB2YV9hcmcoYXJncywgY2hhciAqKTsKLSAgICAgICAgICAgIGlmICghcykK
LSAgICAgICAgICAgICAgICBzID0gIjxOVUxMPiI7Ci0KLSAgICAgICAgICAgIGxlbiA9IHN0cm5s
ZW4ocywgcHJlY2lzaW9uKTsKLQotICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBMRUZUKSkgewot
ICAgICAgICAgICAgICAgIHdoaWxlIChsZW4gPCBmaWVsZF93aWR0aC0tKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciA9
ICcgJzsKLSAgICAgICAgICAgICAgICAgICAgKytzdHI7CisgICAgICAgICAgICAgICAgcGVyY2Vu
dCA9IGZtdCAtIDE7CisgICAgICAgICAgICAgICAgcWZsYWcgPSAwOyBsZmxhZyA9IDA7IGxhZGp1
c3QgPSAwOyBzaGFycGZsYWcgPSAwOyBuZWcgPSAwOworICAgICAgICAgICAgICAgIHNpZ24gPSAw
OyBkb3QgPSAwOyBkd2lkdGggPSAwOyB1cHBlciA9IDA7CisgICAgICAgICAgICAgICAgY2ZsYWcg
PSAwOyBoZmxhZyA9IDA7IGpmbGFnID0gMDsgdGZsYWcgPSAwOyB6ZmxhZyA9IDA7CityZXN3aXRj
aDogICAgICAgc3dpdGNoIChjaCA9ICh1X2NoYXIpKmZtdCsrKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSAnLic6CisgICAgICAgICAgICAgICAgICAgICAgICBkb3QgPSAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNoYXJwZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJysnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJl
c3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgICAgICAgICAg
ICAgbGFkanVzdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOwor
ICAgICAgICAgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIo
Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAnKic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRvdCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHZhX2FyZyhhcCwgaW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhZGp1c3QgPSAhbGFkanVzdDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC13aWR0aDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHdpZHRoID0gdmFfYXJnKGFwLCBpbnQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBy
ZXN3aXRjaDsKKyAgICAgICAgICAgICAgICBjYXNlICcwJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghZG90KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGMgPSAn
MCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAnMSc6IGNhc2UgJzIn
OiBjYXNlICczJzogY2FzZSAnNCc6CisgICAgICAgICAgICAgICAgY2FzZSAnNSc6IGNhc2UgJzYn
OiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKG4gPSAwOzsgKytmbXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuID0gbiAqIDEwICsgY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2ggPSAqZm10OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjaCA8ICcwJyB8fCBjaCA+ICc5JykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG90KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd2lkdGggPSBuOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG47
CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgICAgICAgICAg
IGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIodmFfYXJnKGFwLCBpbnQp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
J2QnOgorICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9zaWduOworICAgICAgICAgICAgICAgIGNhc2UgJ2gn
OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhmbGFnKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhmbGFnID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2ZsYWcgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhmbGFnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gcmVzd2l0Y2g7CisgICAgICAgICAgICAgICAgY2FzZSAnaic6CisgICAgICAgICAgICAg
ICAgICAgICAgICBqZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dp
dGNoOworICAgICAgICAgICAgICAgIGNhc2UgJ2wnOgorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxmbGFnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxmbGFnID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWZsYWcgPSAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxmbGFn
ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CisgICAgICAgICAg
ICAgICAgY2FzZSAnbic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoamZsYWcpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBpbnRtYXhfdCAqKSkgPSBy
ZXR2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxZmxhZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIGludDY0X3QgKikpID0gcmV0dmFs
OworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobGZsYWcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBsb25nICopKSA9IHJldHZhbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHpmbGFnKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKHZhX2FyZyhhcCwgc2l6ZV90ICopKSA9IHJldHZhbDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGhmbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqKHZhX2FyZyhhcCwgc2hvcnQgKikpID0gcmV0dmFsOworICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoY2ZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoo
dmFfYXJnKGFwLCBjaGFyICopKSA9IHJldHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIGludCAqKSkg
PSByZXR2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBoYW5kbGVfbm9zaWduOworICAgICAgICAgICAgICAgIGNhc2Ug
J3AnOgorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAg
ICAgICAgICAgc2hhcnBmbGFnID0gKHdpZHRoID09IDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgc2lnbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSAodWludHB0cl90KXZh
X2FyZyhhcCwgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbnVtYmVyOwor
ICAgICAgICAgICAgICAgIGNhc2UgJ3EnOgorICAgICAgICAgICAgICAgICAgICAgICAgcWZsYWcg
PSAxOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKyAgICAgICAgICAg
ICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzaWduKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGhhbmRsZV9zaWduOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5k
bGVfbm9zaWduOworICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgcCA9IHZhX2FyZyhhcCwgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAiKG51bGwp
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG90KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuID0gc3RybGVuIChwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGR3aWR0
aCAmJiBwW25dOyBuKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IG47CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghbGFkanVzdCAmJiB3aWR0aCA+IDApCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKHBhZGMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKG4tLSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoKnAr
Kyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFkanVzdCAmJiB3aWR0aCA+IDApCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKHBhZGMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAndCc6CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJl
c3dpdGNoOworICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfbm9zaWdu
OworICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgICAgICAgICAgdXBw
ZXIgPSAxOworICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfbm9zaWdu
OworICAgICAgICAgICAgICAgIGNhc2UgJ3knOgorICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIGhhbmRsZV9zaWduOworICAgICAgICAgICAgICAgIGNhc2UgJ3onOgor
ICAgICAgICAgICAgICAgICAgICAgICAgemZsYWcgPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byByZXN3aXRjaDsKK2hhbmRsZV9ub3NpZ246CisgICAgICAgICAgICAgICAgICAgICAg
ICBzaWduID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqZmxhZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCB1aW50bWF4X3QpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocWZsYWcpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgdWludDY0X3QpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAodGZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bSA9IHZhX2FyZyhhcCwgcHRyZGlmZl90KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGxmbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9h
cmcoYXAsIHVfbG9uZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh6ZmxhZykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBzaXplX3Qp
OworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGZsYWcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bSA9ICh1bnNpZ25lZCBzaG9ydCl2YV9hcmcoYXAsIGludCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjZmxhZykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVtID0gKHVfY2hhcil2YV9hcmcoYXAsIGludCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bSA9IHZhX2FyZyhhcCwgdV9pbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBudW1i
ZXI7CitoYW5kbGVfc2lnbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqZmxhZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBpbnRtYXhfdCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxZmxhZykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBpbnQ2NF90KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHRmbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudW0gPSB2YV9hcmcoYXAsIHB0cmRpZmZfdCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChsZmxhZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0g
dmFfYXJnKGFwLCBsb25nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHpmbGFn
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIHNzaXpl
X3QpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGZsYWcpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bSA9IChzaG9ydCl2YV9hcmcoYXAsIGludCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjZmxhZykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtID0gKGNoYXIpdmFfYXJnKGFwLCBpbnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9h
cmcoYXAsIGludCk7CitudW1iZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbiAm
JiAoaW50bWF4X3QpbnVtIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZWcgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSAtKGludG1heF90
KW51bTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IHAgPSBrc3ByaW50bihuYnVmLCBudW0sIGJhc2UsICZuLCB1cHBlcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0bXAgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXJwZmxh
ZyAmJiBudW0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFz
ZSA9PSA4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCsrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChiYXNlID09IDE2KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCArPSAyOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKys7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbGFkanVzdCAmJiBwYWRjID09ICcwJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZHdpZHRoID0gd2lkdGggLSB0bXA7CisgICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCAtPSB0bXAgKyAoZHdpZHRoID4gbiA/IGR3aWR0aCA6IG4pOworICAgICAgICAgICAgICAg
ICAgICAgICAgZHdpZHRoIC09IG47CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhZGp1
c3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tID4gMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUignICcpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUENIQVIoJy0nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFycGZsYWcg
JiYgbnVtICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2Ug
PT0gOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcw
Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmFzZSA9PSAx
NikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcwJyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJ3gnKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGR3aWR0aC0tID4gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJzAnKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCpwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUigq
cC0tKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhZGp1c3QpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tID4gMCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUignICcpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKHBlcmNlbnQgPCBmbXQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBDSEFSKCpwZXJjZW50KyspOworICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAqIFNpbmNlIHdlIGlnbm9yZSBhIGZvcm1hdHRpbmcgYXJn
dW1lbnQgaXQgaXMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGxvbmdlciBzYWZlIHRv
IG9iZXkgdGhlIHJlbWFpbmluZyBmb3JtYXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAg
KiBhcmd1bWVudHMgYXMgdGhlIGFyZ3VtZW50cyB3aWxsIG5vIGxvbmdlciBtYXRjaAorICAgICAg
ICAgICAgICAgICAgICAgICAgICogdGhlIGZvcm1hdCBzcGVjcy4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc3RyIDw9IGVuZCkKLSAgICAgICAgICAgICAgICAgICAgKnN0ciA9ICpzOwotICAgICAgICAg
ICAgICAgICsrc3RyOyArK3M7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSAobGVu
IDwgZmllbGRfd2lkdGgtLSkgewotICAgICAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQotICAg
ICAgICAgICAgICAgICAgICAqc3RyID0gJyAnOwotICAgICAgICAgICAgICAgICsrc3RyOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgY2FzZSAncCc6Ci0g
ICAgICAgICAgICBpZiAoZmllbGRfd2lkdGggPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBmaWVs
ZF93aWR0aCA9IDIqc2l6ZW9mKHZvaWQgKik7Ci0gICAgICAgICAgICAgICAgZmxhZ3MgfD0gWkVS
T1BBRDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ciA9IG51bWJlcihzdHIsIGVuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgdmFfYXJnKGFyZ3MsIHZv
aWQgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgMTYsIGZpZWxkX3dpZHRoLCBwcmVjaXNp
b24sIGZsYWdzKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0KLSAgICAgICAgY2FzZSAnbic6
Ci0gICAgICAgICAgICBpZiAocXVhbGlmaWVyID09ICdsJykgewotICAgICAgICAgICAgICAgIGxv
bmcgKiBpcCA9IHZhX2FyZyhhcmdzLCBsb25nICopOwotICAgICAgICAgICAgICAgICppcCA9IChz
dHIgLSBidWYpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ1onKSB7Ci0g
ICAgICAgICAgICAgICAgc2l6ZV90ICogaXAgPSB2YV9hcmcoYXJncywgc2l6ZV90ICopOwotICAg
ICAgICAgICAgICAgICppcCA9IChzdHIgLSBidWYpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpbnQgKiBpcCA9IHZhX2FyZyhhcmdzLCBpbnQgKik7Ci0gICAgICAgICAg
ICAgICAgKmlwID0gKHN0ciAtIGJ1Zik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQot
ICAgICAgICAgICAgICAgICpzdHIgPSAnJSc7Ci0gICAgICAgICAgICArK3N0cjsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAvKiBpbnRlZ2VyIG51bWJlciBmb3JtYXRzIC0g
c2V0IHVwIHRoZSBmbGFncyBhbmQgImJyZWFrIiAqLwotICAgICAgICBjYXNlICdvJzoKLSAgICAg
ICAgICAgIGJhc2UgPSA4OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAnWCc6
Ci0gICAgICAgICAgICBmbGFncyB8PSBMQVJHRTsKLSAgICAgICAgY2FzZSAneCc6Ci0gICAgICAg
ICAgICBiYXNlID0gMTY7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICdkJzoK
LSAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICBmbGFncyB8PSBTSUdOOwotICAgICAgICBj
YXNlICd1JzoKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBpZiAoc3RyIDw9IGVuZCkKLSAgICAgICAgICAgICAgICAqc3RyID0gJyUnOwotICAgICAg
ICAgICAgKytzdHI7Ci0gICAgICAgICAgICBpZiAoKmZtdCkgewotICAgICAgICAgICAgICAgIGlm
IChzdHIgPD0gZW5kKQotICAgICAgICAgICAgICAgICAgICAqc3RyID0gKmZtdDsKLSAgICAgICAg
ICAgICAgICArK3N0cjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLS1m
bXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
ICAgICBpZiAocXVhbGlmaWVyID09ICdMJykKLSAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcmdz
LCBsb25nIGxvbmcpOwotICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ2wnKSB7Ci0gICAg
ICAgICAgICBudW0gPSB2YV9hcmcoYXJncywgdW5zaWduZWQgbG9uZyk7Ci0gICAgICAgICAgICBp
ZiAoZmxhZ3MgJiBTSUdOKQotICAgICAgICAgICAgICAgIG51bSA9IChzaWduZWQgbG9uZykgbnVt
OwotICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAnWicpIHsKLSAgICAgICAgICAgIG51
bSA9IHZhX2FyZyhhcmdzLCBzaXplX3QpOwotICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9
PSAnaCcpIHsKLSAgICAgICAgICAgIG51bSA9ICh1bnNpZ25lZCBzaG9ydCkgdmFfYXJnKGFyZ3Ms
IGludCk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBTSUdOKQotICAgICAgICAgICAgICAgIG51
bSA9IChzaWduZWQgc2hvcnQpIG51bTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG51
bSA9IHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBpbnQpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYg
U0lHTikKLSAgICAgICAgICAgICAgICBudW0gPSAoc2lnbmVkIGludCkgbnVtOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RyID0gbnVtYmVyKHN0ciwgZW5kLCBudW0sIGJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICBmaWVsZF93aWR0aCwgcHJlY2lzaW9uLCBmbGFncyk7Ci0gICAgfQotICAgIGlm
IChzdHIgPD0gZW5kKQotICAgICAgICAqc3RyID0gJ1wwJzsKLSAgICBlbHNlIGlmIChzaXplID4g
MCkKLSAgICAgICAgLyogZG9uJ3Qgd3JpdGUgb3V0IGEgbnVsbCBieXRlIGlmIHRoZSBidWYgc2l6
ZSBpcyB6ZXJvICovCi0gICAgICAgICplbmQgPSAnXDAnOwotICAgIC8qIHRoZSB0cmFpbGluZyBu
dWxsIGJ5dGUgZG9lc24ndCBjb3VudCB0b3dhcmRzIHRoZSB0b3RhbAotICAgICAqICsrc3RyOwot
ICAgICAqLwotICAgIHJldHVybiBzdHItYnVmOworI3VuZGVmIFBDSEFSCiB9CiAKIC8qKgpAQCAt
NTUyLDIyMCArNjM1LDU4NyBAQCBpbnQgc3ByaW50ZihjaGFyICogYnVmLCBjb25zdCBjaGFyICpm
bXQsIC4uLikKICAgICByZXR1cm4gaTsKIH0KIAorLyoKKyAqIEZpbGwgaW4gdGhlIGdpdmVuIHRh
YmxlIGZyb20gdGhlIHNjYW5zZXQgYXQgdGhlIGdpdmVuIGZvcm1hdAorICogKGp1c3QgYWZ0ZXIg
YFsnKS4gIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGNoYXJhY3RlciBwYXN0IHRoZQorICogY2xv
c2luZyBgXScuICBUaGUgdGFibGUgaGFzIGEgMSB3aGVyZXZlciBjaGFyYWN0ZXJzIHNob3VsZCBi
ZQorICogY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzY2Fuc2V0LgorICovCitzdGF0aWMgY29uc3Qg
dV9jaGFyICoKK19fc2NjbChjaGFyICp0YWIsIGNvbnN0IHVfY2hhciAqZm10KQoreworICAgICAg
ICBpbnQgYywgbiwgdjsKKworICAgICAgICAvKiBmaXJzdCBgY2xlYXInIHRoZSB3aG9sZSB0YWJs
ZSAqLworICAgICAgICBjID0gKmZtdCsrOyAgICAgICAgICAgICAvKiBmaXJzdCBjaGFyIGhhdCA9
PiBuZWdhdGVkIHNjYW5zZXQgKi8KKyAgICAgICAgaWYgKGMgPT0gJ14nKSB7CisgICAgICAgICAg
ICAgICAgdiA9IDE7ICAgICAgICAgIC8qIGRlZmF1bHQgPT4gYWNjZXB0ICovCisgICAgICAgICAg
ICAgICAgYyA9ICpmbXQrKzsgICAgIC8qIGdldCBuZXcgZmlyc3QgY2hhciAqLworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICB2ID0gMDsgICAgICAgICAgLyogZGVmYXVsdCA9PiByZWpl
Y3QgKi8KKworICAgICAgICAvKiBYWFg6IFdpbGwgbm90IHdvcmsgaWYgc2l6ZW9mKHRhYiopID4g
c2l6ZW9mKGNoYXIpICovCisgICAgICAgIGZvciAobiA9IDA7IG4gPCAyNTY7IG4rKykKKyAgICAg
ICAgICAgICAgICAgICAgIHRhYltuXSA9IHY7ICAgICAgICAvKiBtZW1zZXQodGFiLCB2LCAyNTYp
ICovCisKKyAgICAgICAgaWYgKGMgPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZtdCAt
IDEpOy8qIGZvcm1hdCBlbmRlZCBiZWZvcmUgY2xvc2luZyBdICovCisKKyAgICAgICAgLyoKKyAg
ICAgICAgICogTm93IHNldCB0aGUgZW50cmllcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBhY3R1YWwg
c2NhbnNldAorICAgICAgICAgKiB0byB0aGUgb3Bwb3NpdGUgb2YgdGhlIGFib3ZlLgorICAgICAg
ICAgKgorICAgICAgICAgKiBUaGUgZmlyc3QgY2hhcmFjdGVyIG1heSBiZSAnXScgKG9yICctJykg
d2l0aG91dCBiZWluZyBzcGVjaWFsOworICAgICAgICAgKiB0aGUgbGFzdCBjaGFyYWN0ZXIgbWF5
IGJlICctJy4KKyAgICAgICAgICovCisgICAgICAgIHYgPSAxIC0gdjsKKyAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgICAgIHRhYltjXSA9IHY7ICAgICAgICAgICAgIC8qIHRha2UgY2hh
cmFjdGVyIGMgKi8KK2Rvc3dpdGNoOgorICAgICAgICAgICAgICAgIG4gPSAqZm10Kys7ICAgICAg
ICAgICAgIC8qIGFuZCBleGFtaW5lIHRoZSBuZXh0ICovCisgICAgICAgICAgICAgICAgc3dpdGNo
IChuKSB7CisKKyAgICAgICAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAvKiBmb3Jt
YXQgZW5kZWQgdG9vIHNvb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZm10
IC0gMSk7CisKKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBBIHNjYW5zZXQgb2YgdGhlIGZvcm0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgWzAxKy1dCisgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBpcyBkZWZpbmVkIGFzIGB0aGUgZGlnaXQgMCwgdGhlIGRpZ2l0IDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKiB0aGUgY2hhcmFjdGVyICssIHRoZSBjaGFyYWN0ZXIgLScs
IGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGVmZmVjdCBvZiBhIHNjYW5zZXQg
c3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICBbYS16QS1aMC05XQorICAg
ICAgICAgICAgICAgICAgICAgICAgICogaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZC4gIFRoZSBW
NyBVbml4CisgICAgICAgICAgICAgICAgICAgICAgICAgKiBzY2FuZiB0cmVhdHMgYGEteicgYXMg
YHRoZSBsZXR0ZXJzIGEgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICogeicsIGJ1
dCB0cmVhdHMgYGEtYScgYXMgYHRoZSBsZXR0ZXIgYSwgdGhlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgKiBjaGFyYWN0ZXIgLSwgYW5kIHRoZSBsZXR0ZXIgYScuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAgICAgICogRm9yIGNvbXBhdGliaWxpdHks
IHRoZSBgLScgaXMgbm90IGNvbnNpZGVyZAorICAgICAgICAgICAgICAgICAgICAgICAgICogdG8g
ZGVmaW5lIGEgcmFuZ2UgaWYgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqIGl0IGlzIGVpdGhlciBhIGNsb3NlIGJyYWNrZXQgKHJlcXVpcmVkIGJ5IEFO
U0kpCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBvciBpcyBub3QgbnVtZXJpY2FsbHkgZ3Jl
YXRlciB0aGFuIHRoZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHdlIGp1
c3Qgc3RvcmVkIGluIHRoZSB0YWJsZSAoYykuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAqZm10OworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG4gPT0gJ10nIHx8IG4gPCBjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGMgPSAnLSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLyog
cmVzdW1lIHRoZSBmb3IoOzspICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpbGwg
aW4gdGhlIHJhbmdlICovCisgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFiWysrY10gPSB2OworICAgICAgICAgICAgICAgICAgICAgICAg
fSB3aGlsZSAoYyA8IG4pOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG47CisgICAgICAg
ICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogQWxhcywgdGhl
IFY3IFVuaXggc2NhbmYgYWxzbyB0cmVhdHMgZm9ybWF0cworICAgICAgICAgICAgICAgICAgICAg
ICAgICogc3VjaCBhcyBbYS1jLWVdIGFzIGB0aGUgbGV0dGVycyBhIHRocm91Z2ggZScuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIHRvbyBpcyBwZXJtaXR0ZWQgYnkgdGhlIHN0YW5k
YXJkLi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGRvc3dpdGNoOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBjYXNlICddJzogICAgICAgICAgICAgICAvKiBlbmQgb2Ygc2NhbnNldCAq
LworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChmbXQpOworCisgICAgICAgICAgICAg
ICAgZGVmYXVsdDogICAgICAgICAgICAgICAgLyoganVzdCBhbm90aGVyIGNoYXJhY3RlciAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG47CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogTk9UUkVBQ0hF
RCAqLworfQorCiAvKioKICAqIHZzc2NhbmYgLSBVbmZvcm1hdCBhIGJ1ZmZlciBpbnRvIGEgbGlz
dCBvZiBhcmd1bWVudHMKICAqIEBidWY6CWlucHV0IGJ1ZmZlcgogICogQGZtdDoJZm9ybWF0IG9m
IGJ1ZmZlcgogICogQGFyZ3M6CWFyZ3VtZW50cwogICovCi1pbnQgdnNzY2FuZihjb25zdCBjaGFy
ICogYnVmLCBjb25zdCBjaGFyICogZm10LCB2YV9saXN0IGFyZ3MpCisjZGVmaW5lIEJVRiAgICAg
ICAgICAgICAzMiAgICAgIC8qIE1heGltdW0gbGVuZ3RoIG9mIG51bWVyaWMgc3RyaW5nLiAqLwor
CisvKgorICogRmxhZ3MgdXNlZCBkdXJpbmcgY29udmVyc2lvbi4KKyAqLworI2RlZmluZSBMT05H
ICAgICAgICAgICAgMHgwMSAgICAvKiBsOiBsb25nIG9yIGRvdWJsZSAqLworI2RlZmluZSBTSE9S
VCAgICAgICAgICAgMHgwNCAgICAvKiBoOiBzaG9ydCAqLworI2RlZmluZSBTVVBQUkVTUyAgICAg
ICAgMHgwOCAgICAvKiBzdXBwcmVzcyBhc3NpZ25tZW50ICovCisjZGVmaW5lIFBPSU5URVIgICAg
ICAgICAweDEwICAgIC8qIHdlaXJkICVwIHBvaW50ZXIgKGBmYWtlIGhleCcpICovCisjZGVmaW5l
IE5PU0tJUCAgICAgICAgICAweDIwICAgIC8qIGRvIG5vdCBza2lwIGJsYW5rcyAqLworI2RlZmlu
ZSBRVUFEICAgICAgICAgICAgMHg0MDAKKyNkZWZpbmUgU0hPUlRTSE9SVCAgICAgIDB4NDAwMCAg
LyoqIGhoOiBjaGFyICovCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGFyZSB1c2VkIGluIG51bWVy
aWMgY29udmVyc2lvbnMgb25seToKKyAqIFNJR05PSywgTkRJR0lUUywgRFBUT0ssIGFuZCBFWFBP
SyBhcmUgZm9yIGZsb2F0aW5nIHBvaW50OworICogU0lHTk9LLCBORElHSVRTLCBQRlhPSywgYW5k
IE5aRElHSVRTIGFyZSBmb3IgaW50ZWdyYWwuCisgKi8KKyNkZWZpbmUgU0lHTk9LICAgICAgICAg
IDB4NDAgICAgLyogKy8tIGlzIChzdGlsbCkgbGVnYWwgKi8KKyNkZWZpbmUgTkRJR0lUUyAgICAg
ICAgIDB4ODAgICAgLyogbm8gZGlnaXRzIGRldGVjdGVkICovCisKKyNkZWZpbmUgRFBUT0sgICAg
ICAgICAgIDB4MTAwICAgLyogKGZsb2F0KSBkZWNpbWFsIHBvaW50IGlzIHN0aWxsIGxlZ2FsICov
CisjZGVmaW5lIEVYUE9LICAgICAgICAgICAweDIwMCAgIC8qIChmbG9hdCkgZXhwb25lbnQgKGUr
MywgZXRjKSBzdGlsbCBsZWdhbCAqLworCisjZGVmaW5lIFBGWE9LICAgICAgICAgICAweDEwMCAg
IC8qIDB4IHByZWZpeCBpcyAoc3RpbGwpIGxlZ2FsICovCisjZGVmaW5lIE5aRElHSVRTICAgICAg
ICAweDIwMCAgIC8qIG5vIHplcm8gZGlnaXRzIGRldGVjdGVkICovCisKKy8qCisgKiBDb252ZXJz
aW9uIHR5cGVzLgorICovCisjZGVmaW5lIENUX0NIQVIgICAgICAgICAwICAgICAgIC8qICVjIGNv
bnZlcnNpb24gKi8KKyNkZWZpbmUgQ1RfQ0NMICAgICAgICAgIDEgICAgICAgLyogJVsuLi5dIGNv
bnZlcnNpb24gKi8KKyNkZWZpbmUgQ1RfU1RSSU5HICAgICAgIDIgICAgICAgLyogJXMgY29udmVy
c2lvbiAqLworI2RlZmluZSBDVF9JTlQgICAgICAgICAgMyAgICAgICAvKiBpbnRlZ2VyLCBpLmUu
LCBzdHJ0b3Egb3Igc3RydG91cSAqLwordHlwZWRlZiB1aW50NjRfdCAoKmNjZm50eXBlKShjb25z
dCBjaGFyICosIGNoYXIgKiosIGludCk7CisKK2ludAordnNzY2FuZihjb25zdCBjaGFyICppbnAs
IGNoYXIgY29uc3QgKmZtdDAsIHZhX2xpc3QgYXApCiB7Ci0JY29uc3QgY2hhciAqc3RyID0gYnVm
OwotCWNoYXIgKm5leHQ7Ci0JY2hhciBkaWdpdDsKLQlpbnQgbnVtID0gMDsKLQlpbnQgcXVhbGlm
aWVyOwotCWludCBiYXNlOwotCWludCBmaWVsZF93aWR0aDsKLQlpbnQgaXNfc2lnbiA9IDA7Cisg
ICAgICAgIGludCBpbnI7CisgICAgICAgIGNvbnN0IHVfY2hhciAqZm10ID0gKGNvbnN0IHVfY2hh
ciAqKWZtdDA7CisgICAgICAgIGludCBjOyAgICAgICAgICAgICAgICAgIC8qIGNoYXJhY3RlciBm
cm9tIGZvcm1hdCwgb3IgY29udmVyc2lvbiAqLworICAgICAgICBzaXplX3Qgd2lkdGg7ICAgICAg
ICAgICAvKiBmaWVsZCB3aWR0aCwgb3IgMCAqLworICAgICAgICBjaGFyICpwOyAgICAgICAgICAg
ICAgICAvKiBwb2ludHMgaW50byBhbGwga2luZHMgb2Ygc3RyaW5ncyAqLworICAgICAgICBpbnQg
bjsgICAgICAgICAgICAgICAgICAvKiBoYW5keSBpbnRlZ2VyICovCisgICAgICAgIGludCBmbGFn
czsgICAgICAgICAgICAgIC8qIGZsYWdzIGFzIGRlZmluZWQgYWJvdmUgKi8KKyAgICAgICAgY2hh
ciAqcDA7ICAgICAgICAgICAgICAgLyogc2F2ZXMgb3JpZ2luYWwgdmFsdWUgb2YgcCB3aGVuIG5l
Y2Vzc2FyeSAqLworICAgICAgICBpbnQgbmFzc2lnbmVkOyAgICAgICAgICAvKiBudW1iZXIgb2Yg
ZmllbGRzIGFzc2lnbmVkICovCisgICAgICAgIGludCBuY29udmVyc2lvbnM7ICAgICAgIC8qIG51
bWJlciBvZiBjb252ZXJzaW9ucyAqLworICAgICAgICBpbnQgbnJlYWQ7ICAgICAgICAgICAgICAv
KiBudW1iZXIgb2YgY2hhcmFjdGVycyBjb25zdW1lZCBmcm9tIGZwICovCisgICAgICAgIGludCBi
YXNlOyAgICAgICAgICAgICAgIC8qIGJhc2UgYXJndW1lbnQgdG8gc3RydG9xL3N0cnRvdXEgKi8K
KyAgICAgICAgY2NmbnR5cGUgY2NmbjsgICAgICAgICAgLyogY29udmVyc2lvbiBmdW5jdGlvbiAo
c3RydG9xL3N0cnRvdXEpICovCisgICAgICAgIGNoYXIgY2NsdGFiWzI1Nl07ICAgICAgIC8qIGNo
YXJhY3RlciBjbGFzcyB0YWJsZSBmb3IgJVsuLi5dICovCisgICAgICAgIGNoYXIgYnVmW0JVRl07
ICAgICAgICAgIC8qIGJ1ZmZlciBmb3IgbnVtZXJpYyBjb252ZXJzaW9ucyAqLwogCi0Jd2hpbGUo
KmZtdCAmJiAqc3RyKSB7Ci0JCS8qIHNraXAgYW55IHdoaXRlIHNwYWNlIGluIGZvcm1hdCAqLwot
CQkvKiB3aGl0ZSBzcGFjZSBpbiBmb3JtYXQgbWF0Y2hzIGFueSBhbW91bnQgb2YKLQkJICogd2hp
dGUgc3BhY2UsIGluY2x1ZGluZyBub25lLCBpbiB0aGUgaW5wdXQuCi0JCSAqLwotCQlpZiAoaXNz
cGFjZSgqZm10KSkgewotCQkJd2hpbGUgKGlzc3BhY2UoKmZtdCkpCi0JCQkJKytmbXQ7Ci0JCQl3
aGlsZSAoaXNzcGFjZSgqc3RyKSkKLQkJCQkrK3N0cjsKLQkJfQorICAgICAgICAvKiBgYmFzZWZp
eCcgaXMgdXNlZCB0byBhdm9pZCBgaWYnIHRlc3RzIGluIHRoZSBpbnRlZ2VyIHNjYW5uZXIgKi8K
KyAgICAgICAgc3RhdGljIHNob3J0IGJhc2VmaXhbMTddID0KKyAgICAgICAgICAgICAgICB7IDEw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiB9
OwogCi0JCS8qIGFueXRoaW5nIHRoYXQgaXMgbm90IGEgY29udmVyc2lvbiBtdXN0IG1hdGNoIGV4
YWN0bHkgKi8KLQkJaWYgKCpmbXQgIT0gJyUnICYmICpmbXQpIHsKLQkJCWlmICgqZm10KysgIT0g
KnN0cisrKQotCQkJCWJyZWFrOwotCQkJY29udGludWU7Ci0JCX0KKyAgICAgICAgaW5yID0gc3Ry
bGVuKGlucCk7CiAKLQkJaWYgKCEqZm10KQotCQkJYnJlYWs7Ci0JCSsrZm10OwotCQkKLQkJLyog
c2tpcCB0aGlzIGNvbnZlcnNpb24uCi0JCSAqIGFkdmFuY2UgYm90aCBzdHJpbmdzIHRvIG5leHQg
d2hpdGUgc3BhY2UKLQkJICovCi0JCWlmICgqZm10ID09ICcqJykgewotCQkJd2hpbGUgKCFpc3Nw
YWNlKCpmbXQpICYmICpmbXQpCi0JCQkJZm10Kys7Ci0JCQl3aGlsZSAoIWlzc3BhY2UoKnN0cikg
JiYgKnN0cikKLQkJCQlzdHIrKzsKLQkJCWNvbnRpbnVlOwotCQl9CisgICAgICAgIG5hc3NpZ25l
ZCA9IDA7CisgICAgICAgIG5jb252ZXJzaW9ucyA9IDA7CisgICAgICAgIG5yZWFkID0gMDsKKyAg
ICAgICAgYmFzZSA9IDA7ICAgICAgICAgICAgICAgLyogWFhYIGp1c3QgdG8ga2VlcCBnY2MgaGFw
cHkgKi8KKyAgICAgICAgY2NmbiA9IE5VTEw7ICAgICAgICAgICAgLyogWFhYIGp1c3QgdG8ga2Vl
cCBnY2MgaGFwcHkgKi8KKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGMgPSAq
Zm10Kys7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAobmFzc2lnbmVkKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNzcGFjZShjKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGluciA+IDAgJiYgaXNzcGFjZSgqaW5w
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWQrKywgaW5yLS0sIGlucCsr
OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChjICE9ICclJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gbGl0ZXJhbDsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CisgICAgICAgICAgICAgICAg
ZmxhZ3MgPSAwOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogc3dpdGNo
IG9uIHRoZSBmb3JtYXQuICBjb250aW51ZSBpZiBkb25lOworICAgICAgICAgICAgICAgICAqIGJy
ZWFrIG9uY2UgZm9ybWF0IHR5cGUgaXMgZGVyaXZlZC4KKyAgICAgICAgICAgICAgICAgKi8KK2Fn
YWluOiAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgewor
ICAgICAgICAgICAgICAgIGNhc2UgJyUnOgorbGl0ZXJhbDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpbnIgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBp
bnB1dF9mYWlsdXJlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCppbnAgIT0gYykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBtYXRjaF9mYWlsdXJlOworICAgICAg
ICAgICAgICAgICAgICAgICAgaW5yLS0sIGlucCsrOworICAgICAgICAgICAgICAgICAgICAgICAg
bnJlYWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0JCS8qIGdldCBm
aWVsZCB3aWR0aCAqLwotCQlmaWVsZF93aWR0aCA9IC0xOwotCQlpZiAoaXNkaWdpdCgqZm10KSkK
LQkJCWZpZWxkX3dpZHRoID0gc2tpcF9hdG9pKCZmbXQpOworICAgICAgICAgICAgICAgIGNhc2Ug
JyonOgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gU1VQUFJFU1M7CisgICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOworICAgICAgICAgICAgICAgIGNhc2UgJ2wnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgTE9ORyl7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IH5MT05HOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFncyB8PSBRVUFEOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTE9ORzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47
CisgICAgICAgICAgICAgICAgY2FzZSAncSc6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cyB8PSBRVUFEOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBhZ2FpbjsKKyAgICAgICAg
ICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNI
T1JUKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gflNIT1JUOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBTSE9SVFNIT1JUOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MgfD0gU0hPUlQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOwogCi0JCS8qIGdldCBjb252ZXJzaW9uIHF1YWxp
ZmllciAqLwotCQlxdWFsaWZpZXIgPSAtMTsKLQkJaWYgKCpmbXQgPT0gJ2gnIHx8ICpmbXQgPT0g
J2wnIHx8ICpmbXQgPT0gJ0wnIHx8Ci0JCSAgICAqZm10ID09ICdaJyB8fCAqZm10ID09ICd6Jykg
ewotCQkJcXVhbGlmaWVyID0gKmZtdCsrOwotCQkJaWYgKHVubGlrZWx5KHF1YWxpZmllciA9PSAq
Zm10KSkgewotCQkJCWlmIChxdWFsaWZpZXIgPT0gJ2gnKSB7Ci0JCQkJCXF1YWxpZmllciA9ICdI
JzsKLQkJCQkJZm10Kys7Ci0JCQkJfSBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ2wnKSB7Ci0JCQkJ
CXF1YWxpZmllciA9ICdMJzsKLQkJCQkJZm10Kys7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWJhc2Ug
PSAxMDsKLQkJaXNfc2lnbiA9IDA7CisgICAgICAgICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEn
OiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgorICAgICAgICAgICAgICAgIGNhc2UgJzUn
OiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoID0gd2lkdGggKiAxMCArIGMgLSAnMCc7CisgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIGFnYWluOwogCi0JCWlmICghKmZtdCB8fCAhKnN0cikKLQkJCWJyZWFrOwor
ICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQ29udmVyc2lvbnMuCisgICAg
ICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBjYXNl
ICdkJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDVF9JTlQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjY2ZuID0gKGNjZm50eXBlKXN0cnRvcTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0JCXN3aXRj
aCgqZm10KyspIHsKLQkJY2FzZSAnYyc6Ci0JCXsKLQkJCWNoYXIgKnMgPSAoY2hhciAqKSB2YV9h
cmcoYXJncyxjaGFyKik7Ci0JCQlpZiAoZmllbGRfd2lkdGggPT0gLTEpCi0JCQkJZmllbGRfd2lk
dGggPSAxOwotCQkJZG8gewotCQkJCSpzKysgPSAqc3RyKys7Ci0JCQl9IHdoaWxlICgtLWZpZWxk
X3dpZHRoID4gMCAmJiAqc3RyKTsKLQkJCW51bSsrOwotCQl9Ci0JCWNvbnRpbnVlOwotCQljYXNl
ICdzJzoKLQkJewotCQkJY2hhciAqcyA9IChjaGFyICopIHZhX2FyZyhhcmdzLCBjaGFyICopOwot
CQkJaWYoZmllbGRfd2lkdGggPT0gLTEpCi0JCQkJZmllbGRfd2lkdGggPSBJTlRfTUFYOwotCQkJ
LyogZmlyc3QsIHNraXAgbGVhZGluZyB3aGl0ZSBzcGFjZSBpbiBidWZmZXIgKi8KLQkJCXdoaWxl
IChpc3NwYWNlKCpzdHIpKQotCQkJCXN0cisrOwotCi0JCQkvKiBub3cgY29weSB1bnRpbCBuZXh0
IHdoaXRlIHNwYWNlICovCi0JCQl3aGlsZSAoKnN0ciAmJiAhaXNzcGFjZSgqc3RyKSAmJiBmaWVs
ZF93aWR0aC0tKSB7Ci0JCQkJKnMrKyA9ICpzdHIrKzsKLQkJCX0KLQkJCSpzID0gJ1wwJzsKLQkJ
CW51bSsrOwotCQl9Ci0JCWNvbnRpbnVlOwotCQljYXNlICduJzoKLQkJCS8qIHJldHVybiBudW1i
ZXIgb2YgY2hhcmFjdGVycyByZWFkIHNvIGZhciAqLwotCQl7Ci0JCQlpbnQgKmkgPSAoaW50ICop
dmFfYXJnKGFyZ3MsaW50Kik7Ci0JCQkqaSA9IHN0ciAtIGJ1ZjsKLQkJfQotCQljb250aW51ZTsK
LQkJY2FzZSAnbyc6Ci0JCQliYXNlID0gODsKLQkJCWJyZWFrOwotCQljYXNlICd4JzoKLQkJY2Fz
ZSAnWCc6Ci0JCQliYXNlID0gMTY7Ci0JCQlicmVhazsKLQkJY2FzZSAnaSc6CisgICAgICAgICAg
ICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfSU5UOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IChjY2ZudHlwZSlzdHJ0b3E7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlID0gMDsKLQkJY2FzZSAnZCc6Ci0JCQlpc19zaWduID0gMTsKLQkJ
Y2FzZSAndSc6Ci0JCQlicmVhazsKLQkJY2FzZSAnJSc6Ci0JCQkvKiBsb29raW5nIGZvciAnJScg
aW4gc3RyICovCi0JCQlpZiAoKnN0cisrICE9ICclJykgCi0JCQkJcmV0dXJuIG51bTsKLQkJCWNv
bnRpbnVlOwotCQlkZWZhdWx0OgotCQkJLyogaW52YWxpZCBmb3JtYXQ7IHN0b3AgaGVyZSAqLwot
CQkJcmV0dXJuIG51bTsKLQkJfQotCi0JCS8qIGhhdmUgc29tZSBzb3J0IG9mIGludGVnZXIgY29u
dmVyc2lvbi4KLQkJICogZmlyc3QsIHNraXAgd2hpdGUgc3BhY2UgaW4gYnVmZmVyLgotCQkgKi8K
LQkJd2hpbGUgKGlzc3BhY2UoKnN0cikpCi0JCQlzdHIrKzsKLQotCQlkaWdpdCA9ICpzdHI7Ci0J
CWlmIChpc19zaWduICYmIGRpZ2l0ID09ICctJykKLQkJCWRpZ2l0ID0gKihzdHIgKyAxKTsKLQot
CQlpZiAoIWRpZ2l0Ci0gICAgICAgICAgICAgICAgICAgIHx8IChiYXNlID09IDE2ICYmICFpc3hk
aWdpdChkaWdpdCkpCi0gICAgICAgICAgICAgICAgICAgIHx8IChiYXNlID09IDEwICYmICFpc2Rp
Z2l0KGRpZ2l0KSkKLSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gOCAmJiAoIWlzZGln
aXQoZGlnaXQpIHx8IGRpZ2l0ID4gJzcnKSkKLSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2Ug
PT0gMCAmJiAhaXNkaWdpdChkaWdpdCkpKQotCQkJCWJyZWFrOwotCi0JCXN3aXRjaChxdWFsaWZp
ZXIpIHsKLQkJY2FzZSAnSCc6CS8qIHRoYXQncyAnaGgnIGluIGZvcm1hdCAqLwotCQkJaWYgKGlz
X3NpZ24pIHsKLQkJCQlzaWduZWQgY2hhciAqcyA9IChzaWduZWQgY2hhciAqKSB2YV9hcmcoYXJn
cyxzaWduZWQgY2hhciAqKTsKLQkJCQkqcyA9IChzaWduZWQgY2hhcikgc2ltcGxlX3N0cnRvbChz
dHIsJm5leHQsYmFzZSk7Ci0JCQl9IGVsc2UgewotCQkJCXVuc2lnbmVkIGNoYXIgKnMgPSAodW5z
aWduZWQgY2hhciAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgY2hhciAqKTsKLQkJCQkqcyA9ICh1
bnNpZ25lZCBjaGFyKSBzaW1wbGVfc3RydG91bChzdHIsICZuZXh0LCBiYXNlKTsKLQkJCX0KLQkJ
CWJyZWFrOwotCQljYXNlICdoJzoKLQkJCWlmIChpc19zaWduKSB7Ci0JCQkJc2hvcnQgKnMgPSAo
c2hvcnQgKikgdmFfYXJnKGFyZ3Msc2hvcnQgKik7Ci0JCQkJKnMgPSAoc2hvcnQpIHNpbXBsZV9z
dHJ0b2woc3RyLCZuZXh0LGJhc2UpOwotCQkJfSBlbHNlIHsKLQkJCQl1bnNpZ25lZCBzaG9ydCAq
cyA9ICh1bnNpZ25lZCBzaG9ydCAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgc2hvcnQgKik7Ci0J
CQkJKnMgPSAodW5zaWduZWQgc2hvcnQpIHNpbXBsZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJhc2Up
OwotCQkJfQotCQkJYnJlYWs7Ci0JCWNhc2UgJ2wnOgotCQkJaWYgKGlzX3NpZ24pIHsKLQkJCQls
b25nICpsID0gKGxvbmcgKikgdmFfYXJnKGFyZ3MsbG9uZyAqKTsKLQkJCQkqbCA9IHNpbXBsZV9z
dHJ0b2woc3RyLCZuZXh0LGJhc2UpOwotCQkJfSBlbHNlIHsKLQkJCQl1bnNpZ25lZCBsb25nICps
ID0gKHVuc2lnbmVkIGxvbmcqKSB2YV9hcmcoYXJncyx1bnNpZ25lZCBsb25nKik7Ci0JCQkJKmwg
PSBzaW1wbGVfc3RydG91bChzdHIsJm5leHQsYmFzZSk7Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2Fz
ZSAnTCc6Ci0JCQlpZiAoaXNfc2lnbikgewotCQkJCWxvbmcgbG9uZyAqbCA9IChsb25nIGxvbmcq
KSB2YV9hcmcoYXJncyxsb25nIGxvbmcgKik7Ci0JCQkJKmwgPSBzaW1wbGVfc3RydG9sbChzdHIs
Jm5leHQsYmFzZSk7Ci0JCQl9IGVsc2UgewotCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyAqbCA9ICh1
bnNpZ25lZCBsb25nIGxvbmcqKSB2YV9hcmcoYXJncyx1bnNpZ25lZCBsb25nIGxvbmcqKTsKLQkJ
CQkqbCA9IHNpbXBsZV9zdHJ0b3VsbChzdHIsJm5leHQsYmFzZSk7Ci0JCQl9Ci0JCQlicmVhazsK
LQkJY2FzZSAnWic6Ci0JCWNhc2UgJ3onOgotCQl7Ci0JCQlzaXplX3QgKnMgPSAoc2l6ZV90Kikg
dmFfYXJnKGFyZ3Msc2l6ZV90Kik7Ci0JCQkqcyA9IChzaXplX3QpIHNpbXBsZV9zdHJ0b3VsKHN0
ciwmbmV4dCxiYXNlKTsKLQkJfQotCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWlmIChpc19zaWdu
KSB7Ci0JCQkJaW50ICppID0gKGludCAqKSB2YV9hcmcoYXJncywgaW50Kik7Ci0JCQkJKmkgPSAo
aW50KSBzaW1wbGVfc3RydG9sKHN0ciwmbmV4dCxiYXNlKTsKLQkJCX0gZWxzZSB7Ci0JCQkJdW5z
aWduZWQgaW50ICppID0gKHVuc2lnbmVkIGludCopIHZhX2FyZyhhcmdzLCB1bnNpZ25lZCBpbnQq
KTsKLQkJCQkqaSA9ICh1bnNpZ25lZCBpbnQpIHNpbXBsZV9zdHJ0b3VsKHN0ciwmbmV4dCxiYXNl
KTsKLQkJCX0KLQkJCWJyZWFrOwotCQl9Ci0JCW51bSsrOwotCi0JCWlmICghbmV4dCkKLQkJCWJy
ZWFrOwotCQlzdHIgPSBuZXh0OwotCX0KLQlyZXR1cm4gbnVtOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGMgPSBDVF9JTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjY2ZuID0gc3Ry
dG91cTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGMgPSBDVF9JTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjY2ZuID0g
c3RydG91cTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncyB8PSBQRlhPSzsgLyogZW5hYmxlIDB4IHByZWZpeGluZyAq
LworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNjZm4gPSBzdHJ0b3VxOworICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDE2
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNl
ICdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDVF9TVFJJTkc7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ1snOgorICAgICAg
ICAgICAgICAgICAgICAgICAgZm10ID0gX19zY2NsKGNjbHRhYiwgZm10KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzIHw9IE5PU0tJUDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMg
PSBDVF9DQ0w7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTk9TS0lQOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0NIQVI7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ3AnOiAgICAgICAvKiBwb2ludGVy
IGZvcm1hdCBpcyBsaWtlIGhleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0g
UE9JTlRFUiB8IFBGWE9LOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNjZm4gPSBzdHJ0b3VxOworICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBjYXNlICduJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5jb252ZXJzaW9u
cysrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU1VQUFJFU1MpICAgLyog
Pz8/ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU0hPUlRTSE9SVCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgY2hhciAqKSA9IG5yZWFkOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBTSE9SVCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgc2hvcnQgKikgPSBucmVhZDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTE9ORykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnZhX2FyZyhhcCwgbG9uZyAqKSA9IG5yZWFkOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBRVUFEKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqdmFfYXJnKGFwLCBpbnQ2NF90ICopID0gbnJlYWQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAs
IGludCAqKSA9IG5yZWFkOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBX
ZSBoYXZlIGEgY29udmVyc2lvbiB0aGF0IHJlcXVpcmVzIGlucHV0LgorICAgICAgICAgICAgICAg
ICAqLworICAgICAgICAgICAgICAgIGlmIChpbnIgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gaW5wdXRfZmFpbHVyZTsKKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAg
ICAgICAgICogQ29uc3VtZSBsZWFkaW5nIHdoaXRlIHNwYWNlLCBleGNlcHQgZm9yIGZvcm1hdHMK
KyAgICAgICAgICAgICAgICAgKiB0aGF0IHN1cHByZXNzIHRoaXMuCisgICAgICAgICAgICAgICAg
ICovCisgICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIE5PU0tJUCkgPT0gMCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmlucCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnJlYWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKC0taW5yID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW5wdXRfZmFpbHVyZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAg
ICAgICAgICAgICAgICAgICAgKiBOb3RlIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJh
Y3RlciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGJ1ZmZlciwgc28gY29udmVy
c2lvbnMgdGhhdCBkbyBub3Qgc2V0IE5PU0tJUAorICAgICAgICAgICAgICAgICAgICAgICAgICog
Y2FuIG5vIGxvbmdlciByZXN1bHQgaW4gYW4gaW5wdXQgZmFpbHVyZS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qCisg
ICAgICAgICAgICAgICAgICogRG8gdGhlIGNvbnZlcnNpb24uCisgICAgICAgICAgICAgICAgICov
CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisKKyAgICAgICAgICAgICAgICBjYXNlIENU
X0NIQVI6CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2FuIGFyYml0cmFyeSBjaGFyYWN0
ZXJzIChzZXRzIE5PU0tJUCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9
PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDE7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTVVBQUkVTUykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc3VtID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgobiA9IGlucikgPCB3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VtICs9IG47CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAtPSBuOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wICs9IG47CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VtID09IDApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW5wdXRfZmFp
bHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0gKz0gd2lk
dGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnIg
LT0gd2lkdGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnAgKz0gd2lkdGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnJlYWQgKz0gc3VtOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHZhX2FyZyhhcCwgY2hh
ciAqKSwgaW5wLCB3aWR0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluciAt
PSB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wICs9IHdpZHRoOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCArPSB3aWR0aDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmFzc2lnbmVkKys7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMrKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBDVF9DQ0w6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2FuIGEgKG5vbmVtcHR5KSBjaGFyYWN0ZXIgY2xh
c3MgKHNldHMgTk9TS0lQKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09
IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gKHNpemVfdCl+MDsg
ICAgIC8qIGBpbmZpbml0eScgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRha2Ugb25s
eSB0aG9zZSB0aGluZ3MgaW4gdGhlIGNsYXNzICovCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZmxhZ3MgJiBTVVBQUkVTUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNjbHRhYlsodW5z
aWduZWQgY2hhcikqaW5wXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG4rKywgaW5yLS0sIGlucCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgtLXdpZHRoID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaW5yIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChuID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW5wdXRfZmFpbHVyZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9PSAwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbWF0Y2hfZmFpbHVy
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHAwID0gcCA9IHZhX2FyZyhhcCwgY2hhciAqKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGNjbHRhYlsodW5zaWduZWQgY2hhcikqaW5wXSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluci0tOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAqaW5wKys7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0td2lkdGggPT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnIgPD0gMCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPT0gcDApCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
aW5wdXRfZmFpbHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuID0gcCAtIHAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobiA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
bWF0Y2hfZmFpbHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnAgPSAwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNzaWduZWQrKzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkICs9IG47CisgICAg
ICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMrKzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBDVF9TVFJJTkc6CisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBsaWtlIENDTCwgYnV0IHplcm8tbGVuZ3RoIHN0cmluZyBPSywgJiBu
byBOT1NLSVAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAwKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IChzaXplX3QpfjA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTVVBQUkVTUykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKCFpc3NwYWNlKCppbnApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbisrLCBpbnItLSwgaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKC0td2lkdGggPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpbnIgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkICs9IG47CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwMCA9IHAgPSB2YV9hcmcoYXAsIGNoYXIgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlICghaXNzcGFjZSgqaW5wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluci0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpwKysgPSAqaW5wKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKC0td2lkdGggPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpbnIgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnJlYWQgKz0gcCAtIHAwOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuYXNzaWduZWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5jb252ZXJzaW9ucysrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICBjYXNlIENUX0lOVDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHNjYW4gYW4gaW50ZWdlciBhcyBpZiBieSBzdHJ0b3Evc3RydG91cSAqLwor
I2lmZGVmIGhhcmR3YXkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAwIHx8
IHdpZHRoID4gc2l6ZW9mKGJ1ZikgLSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aCA9IHNpemVvZihidWYpIC0gMTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBzaXplX3QgaXMgdW5zaWduZWQsIGhlbmNlIHRoaXMgb3B0aW1pc2F0aW9uICovCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoLS13aWR0aCA+IHNpemVvZihidWYpIC0gMikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzaXplb2YoYnVmKSAtIDI7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aCsrOworI2VuZGlmCisgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncyB8PSBTSUdOT0sgfCBORElHSVRTIHwgTlpESUdJVFM7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKHAgPSBidWY7IHdpZHRoOyB3aWR0aC0tKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGMgPSAqaW5wOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTd2l0Y2ggb24gdGhl
IGNoYXJhY3RlcjsgYGdvdG8gb2snCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
IGlmIHdlIGFjY2VwdCBpdCBhcyBhIHBhcnQgb2YgbnVtYmVyLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChjKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICogVGhlIGRpZ2l0IDAgaXMgYWx3YXlzIGxlZ2FsLCBidXQg
aXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3BlY2lhbC4gIEZvciAlaSBj
b252ZXJzaW9ucywgaWYgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGln
aXRzICh6ZXJvIG9yIG5vbnplcm8pIGhhdmUgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBzY2FubmVkIChvbmx5IHNpZ25zKSwgd2Ugd2lsbCBoYXZlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqIGJhc2U9PTAuICBJbiB0aGF0IGNhc2UsIHdlIHNob3Vs
ZCBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQgdG8gOCBhbmQgZW5h
YmxlIDB4IHByZWZpeGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQWxz
bywgaWYgd2UgaGF2ZSBub3Qgc2Nhbm5lZCB6ZXJvIGRpZ2l0cworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiBiZWZvcmUgdGhpcywgZG8gbm90IHR1cm4gb2ZmIHByZWZpeGluZwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAoc29tZW9uZSBlbHNlIHdpbGwgdHVy
biBpdCBvZmYgaWYgd2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaGF2ZSBz
Y2FubmVkIGFueSBub256ZXJvIGRpZ2l0cykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZSA9PSAwKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gODsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBG
WE9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBOWkRJR0lUUykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfihTSUdO
T0t8TlpESUdJVFN8TkRJR0lUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFncyAmPSB+KFNJR05PS3xQRlhPS3xORElHSVRTKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIG9rOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDEgdGhyb3VnaCA3IGFsd2F5cyBsZWdhbCAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gYmFzZWZpeFti
YXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmPSB+
KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBvazsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBkaWdpdHMgOCBhbmQgOSBvayBpZmYgZGVjaW1hbCBvciBoZXggKi8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAnOCc6IGNhc2UgJzknOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlZml4W2Jhc2VdOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlIDw9IDgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8qIG5vdCBsZWdhbCBo
ZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0g
fihTSUdOT0sgfCBQRlhPSyB8IE5ESUdJVFMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gb2s7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogbGV0dGVycyBvayBpZmYgaGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgJ0EnOiBjYXNlICdCJzogY2FzZSAnQyc6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ0QnOiBjYXNlICdFJzogY2FzZSAnRic6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgJ2EnOiBjYXNlICdiJzogY2FzZSAnYyc6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOiBjYXNlICdlJzogY2FzZSAnZic6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gbmVlZCB0byBmaXggYmFzZSBo
ZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2Ug
PD0gMTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsgIC8qIG5vdCBsZWdhbCBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MgJj0gfihTSUdOT0sgfCBQRlhPSyB8IE5ESUdJVFMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2s7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogc2lnbiBvayBvbmx5IGFzIGZpcnN0IGNoYXJhY3RlciAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcrJzogY2FzZSAnLSc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU0lHTk9L
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cyAmPSB+U0lHTk9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBvazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeCBvayBpZmYgZmxhZyBzdGlsbCBzZXQgJiAy
bmQgY2hhciAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzogY2Fz
ZSAnWCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdz
ICYgUEZYT0sgJiYgcCA9PSBidWYgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7ICAgICAgLyogaWYgJWkgKi8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IH5QRlhPSzsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2s7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSWYgd2UgZ290IGhlcmUsIGMgaXMgbm90IGEg
bGVnYWwgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZvciBh
IG51bWJlci4gIFN0b3AgYWNjdW11bGF0aW5nIGRpZ2l0cy4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIG9rOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjIGlzIGxlZ2FsOiBzdG9yZSBpdCBh
bmQgbG9vayBhdCB0aGUgbmV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBjOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoLS1pbnIgPiAwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlucCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAg
ICAgICAgICAvKiBlbmQgb2YgaW5wdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBJZiB3
ZSBoYWQgb25seSBhIHNpZ24sIGl0IGlzIG5vIGdvb2Q7IHB1c2gKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqIGJhY2sgdGhlIHNpZ24uICBJZiB0aGUgbnVtYmVyIGVuZHMgaW4gYHgnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICogaXQgd2FzIFtzaWduXSAnJyAneCcsIHNvIHB1c2ggYmFj
ayB0aGUgeAorICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIHRyZWF0IGl0IGFzIFtzaWdu
XSAnJy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGZsYWdzICYgTkRJR0lUUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocCA+IGJ1ZikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlucC0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucisrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gbWF0Y2hfZmFpbHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAoKHVfY2hhciAqKXApWy0xXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjID09ICd4JyB8fCBjID09ICdYJykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtLXA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlucC0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnIrKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBT
VVBQUkVTUykgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf
dCByZXM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnAgPSAwOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSAoKmNjZm4pKGJ1ZiwgKGNoYXIgKiopTlVM
TCwgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFBP
SU5URVIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhh
cCwgdm9pZCAqKikgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHZvaWQgKikodWludHB0cl90KXJlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBTSE9SVFNIT1JUKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAsIGNoYXIgKikgPSByZXM7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgU0hPUlQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgc2hvcnQgKikgPSByZXM7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTE9ORykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBsb25n
ICopID0gcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFn
cyAmIFFVQUQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2Fy
ZyhhcCwgaW50NjRfdCAqKSA9IHJlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAs
IGludCAqKSA9IHJlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFzc2lnbmVk
Kys7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBu
cmVhZCArPSBwIC0gYnVmOworICAgICAgICAgICAgICAgICAgICAgICAgbmNvbnZlcnNpb25zKys7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgfQoraW5wdXRfZmFpbHVyZToKKyAgICAgICAgcmV0dXJuIChuY29udmVyc2lvbnMgIT0g
MCA/IG5hc3NpZ25lZCA6IC0xKTsKK21hdGNoX2ZhaWx1cmU6CisgICAgICAgIHJldHVybiAobmFz
c2lnbmVkKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS90cG1iYWNrLmMgYi90cG1iYWNrLmMKaW5k
ZXggMDBiNjZlOC4uMjJhZGJkMyAxMDA2NDQKLS0tIGEvdHBtYmFjay5jCisrKyBiL3RwbWJhY2su
YwpAQCAtNTIsMTAgKzUyLDYgQEAKICNpbmNsdWRlIDxtaW5pLW9zL3dhaXQuaD4KIAogCi0jaWZu
ZGVmIEhBVkVfTElCQwotI2RlZmluZSBzdHJ0b3VsIHNpbXBsZV9zdHJ0b3VsCi0jZW5kaWYKLQog
Ly8jZGVmaW5lIFRQTUJBQ0tfUFJJTlRfREVCVUcKICNpZmRlZiBUUE1CQUNLX1BSSU5UX0RFQlVH
CiAjZGVmaW5lIFRQTUJBQ0tfREVCVUcoZm10LC4uLikgcHJpbnRrKCJUcG1iYWNrOkRlYnVnKCJf
X0ZJTEVfXyI6JWQpICIgZm10LCBfX0xJTkVfXywgIyNfX1ZBX0FSR1NfXykKLS0gCjIuNi42CgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cDov
L2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jul 04 19:26:28 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Jul 2016 19:26:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bK9Vj-0007Ku-0E; Mon, 04 Jul 2016 19:26:27 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bK9Vh-0007Kl-FX; Mon, 04 Jul 2016 19:26:25 +0000
Received: from [85.158.137.68] by server-12.bemta-3.messagelabs.com id
 AE/FC-32245-068BA775; Mon, 04 Jul 2016 19:26:24 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMIsWRWlGSWpSXmKPExsXS+7+BUTdhR1W
 4wcIXHBZvvy5htvi+ZTKTA5PH4Q9XWAIYo1gz85LyKxJYM2b3vWMu+MRc8eLRI+YGxn7mLkYu
 DiGBiYwSrRea2SCcXYwSO9ZMhHKOMUq8eXASqmwDo8TDDwuYuhg5OVgEVCR+3d/KAmKzCZhI9
 DfOYwOxRQSUJT629rKD2MwCiRKLfn9i7GLk4BAWCJC4O0sbJMwroCPxoH8hI8hMXoGDjBJHLq
 1jBkkICdRIvDr9ixWiSFDi5MwnLBBztCRu/HvJBDKHWUBaYvk/DpAwp4CaxKr9r9hBwqICZhL
 ffhpMYBSchaR5FpLmWQjNCxiZVzFqFKcWlaUW6Roa6iUVZaZnlOQmZuboGhoY6+WmFhcnpqfm
 JCYV6yXn525iBAYwAxDsYFz92+kQoyQHk5Iob3tvVbgQX1J+SmVGYnFGfFFpTmrxIUYZDg4lC
 d6g7UA5waLU9NSKtMwcYCzBpCU4eJREeP1A0rzFBYm5xZnpEKlTjLocC37cXsskxJKXn5cqJc
 6rCFIkAFKUUZoHNwIW15cYZaWEeRmBjhLiKUgtys0sQZV/xSjOwagkzJsMMoUnM68EbtMroCO
 YgI5gjS0HOaIkESEl1cB4yGvNtullX4UX1QQkRbXFTVrr/Ujlz4Ft79ZriYqK7uotY5RaqfZ5
 2cNHPAdipTTf13GfPvg4bGmCzh2fuBvbWRQEWVm3PbV713+9r3yRjcWru5OeXLh53tAlOU3T2
 9leKlgiK3xjSfrWUrkrX/x6c7y195txHJnHlb9LaPucCzWb55iumMqixFKckWioxVxUnAgAFQ
 8oeOYCAAA=
X-Env-Sender: samuel.thibault@ens-lyon.org
X-Msg-Ref: server-3.tower-31.messagelabs.com!1467660384!48788179!1
X-Originating-IP: [141.255.128.1]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 60751 invoked from network); 4 Jul 2016 19:26:24 -0000
Received: from hera.aquilenet.fr (HELO hera.aquilenet.fr) (141.255.128.1)
 by server-3.tower-31.messagelabs.com with SMTP; 4 Jul 2016 19:26:24 -0000
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 3277F8B4F;
 Mon,  4 Jul 2016 21:26:18 +0200 (CEST)
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id T37RYWteztfc; Mon,  4 Jul 2016 21:26:18 +0200 (CEST)
Received: from var.youpi.perso.aquilenet.fr (unknown
 [IPv6:2a01:cb19:1af:4600:3602:86ff:fe2c:6a19])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id DEA7C82E6;
 Mon,  4 Jul 2016 21:26:17 +0200 (CEST)
Received: from samy by var.youpi.perso.aquilenet.fr with local (Exim 4.87)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bK9Vc-0003A6-SN; Mon, 04 Jul 2016 21:26:20 +0200
Date: Mon, 4 Jul 2016 21:26:20 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160704192620.GD3004@var.home>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com
References: <1467365607-22499-1-git-send-email-jgross@suse.com>
 <20160703183547.GG5041@var.home> <5779F44A.50104@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <5779F44A.50104@suse.com>
User-Agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
Subject: Re: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8sCgpKdWVyZ2VuIEdyb3NzLCBvbiBNb24gMDQgSnVsIDIwMTYgMDc6Mjk6NDYgKzAyMDAs
IHdyb3RlOgo+ID4gRGlkIHlvdSBjaGVjayB0aGUgYm9vdCBvdXRwdXQgZS5nLiBvZiBhIHRyaXZp
YWwgbWluaS1vcyBhcHBsaWNhdGlvbj8KPiA+IE5vdGFibHksIGlpcmMgdGhlcmUgd2VyZSBwZXJo
YXBzIG9kZCBmb3JtYXRpbmcgd2l0aCAleCwgJXAgb3Igc3VjaC4KPiA+IE1vdmluZyB0byB0aGUg
cG9zaXggYmVoYXZpb3Igd291bGQgYmUgYSBnb29kIHRoaW5nLCBJJ2QganVzdCB3YW50IHRvCj4g
PiBrbm93IHdoZXRoZXIgd2UgaGF2ZSBzb21lIGJlaGF2aW9yIGNoYW5nZS4KPiAKPiBKdXN0IGRv
dWJsZSBjaGVja2VkOiBzb21lIG9mIHRoZSBwcmludHMgYXJlIG5vdyB3aXRob3V0IGxlYWRpbmcg
emVyb2VzOgoKT2ssIHNvICVwIG1vdmVzIGZyb20gJTA4eCB0byAweCV4LiBUaGF0J3MgZmluZSBi
eSBtZSwgYW55Ym9keSBhZ2FpbnN0CnRoZSBjaGFuZ2U/CgpTYW11ZWwKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jul 04 19:26:28 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Jul 2016 19:26:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bK9Vj-0007Ku-0E; Mon, 04 Jul 2016 19:26:27 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bK9Vh-0007Kl-FX; Mon, 04 Jul 2016 19:26:25 +0000
Received: from [85.158.137.68] by server-12.bemta-3.messagelabs.com id
 AE/FC-32245-068BA775; Mon, 04 Jul 2016 19:26:24 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMIsWRWlGSWpSXmKPExsXS+7+BUTdhR1W
 4wcIXHBZvvy5htvi+ZTKTA5PH4Q9XWAIYo1gz85LyKxJYM2b3vWMu+MRc8eLRI+YGxn7mLkYu
 DiGBiYwSrRea2SCcXYwSO9ZMhHKOMUq8eXASqmwDo8TDDwuYuhg5OVgEVCR+3d/KAmKzCZhI9
 DfOYwOxRQSUJT629rKD2MwCiRKLfn9i7GLk4BAWCJC4O0sbJMwroCPxoH8hI8hMXoGDjBJHLq
 1jBkkICdRIvDr9ixWiSFDi5MwnLBBztCRu/HvJBDKHWUBaYvk/DpAwp4CaxKr9r9hBwqICZhL
 ffhpMYBSchaR5FpLmWQjNCxiZVzFqFKcWlaUW6Roa6iUVZaZnlOQmZuboGhoY6+WmFhcnpqfm
 JCYV6yXn525iBAYwAxDsYFz92+kQoyQHk5Iob3tvVbgQX1J+SmVGYnFGfFFpTmrxIUYZDg4lC
 d6g7UA5waLU9NSKtMwcYCzBpCU4eJREeP1A0rzFBYm5xZnpEKlTjLocC37cXsskxJKXn5cqJc
 6rCFIkAFKUUZoHNwIW15cYZaWEeRmBjhLiKUgtys0sQZV/xSjOwagkzJsMMoUnM68EbtMroCO
 YgI5gjS0HOaIkESEl1cB4yGvNtullX4UX1QQkRbXFTVrr/Ujlz4Ft79ZriYqK7uotY5RaqfZ5
 2cNHPAdipTTf13GfPvg4bGmCzh2fuBvbWRQEWVm3PbV713+9r3yRjcWru5OeXLh53tAlOU3T2
 9leKlgiK3xjSfrWUrkrX/x6c7y195txHJnHlb9LaPucCzWb55iumMqixFKckWioxVxUnAgAFQ
 8oeOYCAAA=
X-Env-Sender: samuel.thibault@ens-lyon.org
X-Msg-Ref: server-3.tower-31.messagelabs.com!1467660384!48788179!1
X-Originating-IP: [141.255.128.1]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 60751 invoked from network); 4 Jul 2016 19:26:24 -0000
Received: from hera.aquilenet.fr (HELO hera.aquilenet.fr) (141.255.128.1)
 by server-3.tower-31.messagelabs.com with SMTP; 4 Jul 2016 19:26:24 -0000
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 3277F8B4F;
 Mon,  4 Jul 2016 21:26:18 +0200 (CEST)
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id T37RYWteztfc; Mon,  4 Jul 2016 21:26:18 +0200 (CEST)
Received: from var.youpi.perso.aquilenet.fr (unknown
 [IPv6:2a01:cb19:1af:4600:3602:86ff:fe2c:6a19])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id DEA7C82E6;
 Mon,  4 Jul 2016 21:26:17 +0200 (CEST)
Received: from samy by var.youpi.perso.aquilenet.fr with local (Exim 4.87)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bK9Vc-0003A6-SN; Mon, 04 Jul 2016 21:26:20 +0200
Date: Mon, 4 Jul 2016 21:26:20 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160704192620.GD3004@var.home>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com
References: <1467365607-22499-1-git-send-email-jgross@suse.com>
 <20160703183547.GG5041@var.home> <5779F44A.50104@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <5779F44A.50104@suse.com>
User-Agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
Subject: Re: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <http://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <http://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8sCgpKdWVyZ2VuIEdyb3NzLCBvbiBNb24gMDQgSnVsIDIwMTYgMDc6Mjk6NDYgKzAyMDAs
IHdyb3RlOgo+ID4gRGlkIHlvdSBjaGVjayB0aGUgYm9vdCBvdXRwdXQgZS5nLiBvZiBhIHRyaXZp
YWwgbWluaS1vcyBhcHBsaWNhdGlvbj8KPiA+IE5vdGFibHksIGlpcmMgdGhlcmUgd2VyZSBwZXJo
YXBzIG9kZCBmb3JtYXRpbmcgd2l0aCAleCwgJXAgb3Igc3VjaC4KPiA+IE1vdmluZyB0byB0aGUg
cG9zaXggYmVoYXZpb3Igd291bGQgYmUgYSBnb29kIHRoaW5nLCBJJ2QganVzdCB3YW50IHRvCj4g
PiBrbm93IHdoZXRoZXIgd2UgaGF2ZSBzb21lIGJlaGF2aW9yIGNoYW5nZS4KPiAKPiBKdXN0IGRv
dWJsZSBjaGVja2VkOiBzb21lIG9mIHRoZSBwcmludHMgYXJlIG5vdyB3aXRob3V0IGxlYWRpbmcg
emVyb2VzOgoKT2ssIHNvICVwIG1vdmVzIGZyb20gJTA4eCB0byAweCV4LiBUaGF0J3MgZmluZSBi
eSBtZSwgYW55Ym9keSBhZ2FpbnN0CnRoZSBjaGFuZ2U/CgpTYW11ZWwKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHA6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jul 06 21:07:18 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Jul 2016 21:07:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bKu2P-0003Nx-0m; Wed, 06 Jul 2016 21:07:17 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <gotoc64@gmail.com>) id 1bKu2N-0003Nr-Iz
 for minios-devel@lists.xenproject.org; Wed, 06 Jul 2016 21:07:15 +0000
Received: from [85.158.139.211] by server-3.bemta-5.messagelabs.com id
 D1/82-01915-2037D775; Wed, 06 Jul 2016 21:07:14 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrNIsWRWlGSWpSXmKPExsVyMXThOl2m4tp
 wg0evOCzefl3C7MDocfjDFZYAxijWzLyk/IoE1oz/f1+wFLRxVux6d5ylgbGRo4uRi0NIYA6j
 RPeyN0wgDovAHRaJPy9fsIA4EgI/WCR2NmwAynACOTkSNw48hrLLJHY/bmIDsXkFBCVOznzCA
 mILCbhLTNnZyt7FyMHBJqAk8fVKBUiYRUBFYuLqV6wQ5QES025uZgIpERZQl1hyHGyiiICqRO
 /RZmYQm1nAS+L8rSeMExh5ZyFZMAtJahZQNzNQ9/p5QhBhNYnb266yQ9jaEssWvmZewMi6ilG
 jOLWoLLVI19BCL6koMz2jJDcxM0fX0MBULze1uDgxPTUnMalYLzk/dxMjMAgZgGAHY9N2z0OM
 khxMSqK8LN+qw4X4kvJTKjMSizPii0pzUosPMcpwcChJ8C4srA0XEixKTU+tSMvMAcYDTFqCg
 0dJhPcmSJq3uCAxtzgzHSJ1itGYY8vva2uZOLZNvbeWSYglLz8vVUqcNx+kVACkNKM0D24QLE
 4vMcpKCfMyAp0mxFOQWpSbWYIq/4pRnINRSZh3FsgUnsy8Erh9r4BOYQI65adLNcgpJYkIKak
 GxnjbvZzP3S9N9OFS1b0XfJ8r/ebb6X5S9U3+v/bcuf9y0728u6uuHjwgc994TevsuRei7z8U
 ntboPJFh1e38zPyyVckWZ/V6pNSP/pmgME9h07K9Z6oeWC3c/K1OMX/fa94WA3nW6xPnTThzv
 9RkR7aDulGHU91S0V0qsq7XVeW4rjPU60wQD1ZiKc5INNRiLipOBABy+lY9zgIAAA==
X-Env-Sender: gotoc64@gmail.com
X-Msg-Ref: server-7.tower-206.messagelabs.com!1467839233!48652601!1
X-Originating-IP: [209.85.161.174]
X-SpamReason: No, hits=0.4 required=7.0 tests=HTML_30_40,HTML_MESSAGE,
 RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21130 invoked from network); 6 Jul 2016 21:07:14 -0000
Received: from mail-yw0-f174.google.com (HELO mail-yw0-f174.google.com)
 (209.85.161.174)
 by server-7.tower-206.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP;
 6 Jul 2016 21:07:14 -0000
Received: by mail-yw0-f174.google.com with SMTP id i12so97367694ywa.1
 for <minios-devel@lists.xenproject.org>; Wed, 06 Jul 2016 14:07:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:from:date:message-id:subject:to;
 bh=hPH7C8vHi5F8aVg3N6waKpZbV14tUl5Nw2ZEiOgHjbU=;
 b=vJnGrTO4ptNS7opmOyJPS+POrEbL38BtOrjUuVHq5UVpi4vzxue5rTi1eSThNIiVAz
 JRmP/f6+lEDQvY7WYK1xMpSmOGlKMvpADG8byHEKROQYoEppCnfHZe2t+prGPtmYX3Ua
 ojcTfyNaBMBzpXoeXb3FnAf33gStE8hOoBz6ncnK/12g2i44skexZWpVjeAeB4wVbkly
 J607a6J2y2Xlon2Zc42BgnpRgZJCjE9oUOmGi+YsW7Y11EXKOXtmxDIRT7hqU99y4IPu
 yAbQyicuKgWoaEGZ8ps7WRoNueeDmlgJQXcplkITHGGLNQCIeOS5/IviJd3l6opphwW4
 ReZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=hPH7C8vHi5F8aVg3N6waKpZbV14tUl5Nw2ZEiOgHjbU=;
 b=O7LERy72VdgiGEm0pEuWnJHu8VUECPY8eGC6JPfxlALxlLMLZbRJlzLenUKLFn9AQe
 3jdkWbLbztotYsx2eAKz0XhIlIfQVpqb6SM83FVjoCCVh0ZwYpgTPY4O4Fu8Go8HTowc
 RIKSLlAymi3TJij1x96Kyz0+Wbwq5kwm60jyW7XKq6R6B6fW9nWbaWuuja+84coNR5Yn
 LSvZePhBKlB2YG3qu4zWcYmLOp0iRxueANq/MpuuPKnmtWHzFdH65H0BHS1Tdf+FuwXj
 nopatnEepzlKCkd4i5cJPdYX0hN8UqvD9/2CBjfWzNQMejM/XaS9LAZ3mrpRxhA9DfzB
 ErWA==
X-Gm-Message-State: ALyK8tLwGEQ3vfpeEERY0n97MPv27FDQZ+iWXIJGZdnQOpDdE/IFGFhI1Av0SkHt/upNikMT2hxYZ2aVeJ54xA==
X-Received: by 10.129.124.132 with SMTP id x126mr16509840ywc.254.1467839232904; 
 Wed, 06 Jul 2016 14:07:12 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.37.4.77 with HTTP; Wed, 6 Jul 2016 14:07:12 -0700 (PDT)
From: gotoc io <gotoc64@gmail.com>
Date: Wed, 6 Jul 2016 22:07:12 +0100
Message-ID: <CAH9pBJVQXdFMOq0q1+J=oHRscJd2znux=+soKRmhcA=PpmryJA@mail.gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [Minios-devel] own getDayTime return always 0
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2197430517711940416=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============2197430517711940416==
Content-Type: multipart/alternative; boundary=001a114925401094c90536fdf407

--001a114925401094c90536fdf407
Content-Type: text/plain; charset=UTF-8

Hi, I am trying read time from shared_info page as a guest uOS.

extern shared_info_t * shared_info;
..

seconds = shared_info->wc_sec;
nanoseconds = shared_info->wc_nsec;

But during reading I always got 0 from sec/nsec.
Do I need any action/syscall to update this values, after domainU OS start?

I am using Xen 4.8 hypervisor builded for debug.


Thanks

--001a114925401094c90536fdf407
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi, I am trying read time from shared_info page as a =
guest uOS.</div><div><br></div><div>extern shared_info_t * shared_info;</di=
v><div>..</div><div><br></div><div>seconds =3D shared_info-&gt;wc_sec;</div=
><div>nanoseconds =3D shared_info-&gt;wc_nsec;</div><div><br></div><div>But=
 during reading I always got 0 from sec/nsec.</div><div>Do I need any actio=
n/syscall to update this values, after domainU OS start?</div><div><br></di=
v><div>I am using Xen 4.8 hypervisor builded for debug.</div><div><br></div=
><div><br></div><div>Thanks</div></div>

--001a114925401094c90536fdf407--


--===============2197430517711940416==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

--===============2197430517711940416==--


From minios-devel-bounces@lists.xenproject.org Wed Jul 06 21:07:18 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Jul 2016 21:07:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bKu2P-0003Nx-0m; Wed, 06 Jul 2016 21:07:17 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <gotoc64@gmail.com>) id 1bKu2N-0003Nr-Iz
 for minios-devel@lists.xenproject.org; Wed, 06 Jul 2016 21:07:15 +0000
Received: from [85.158.139.211] by server-3.bemta-5.messagelabs.com id
 D1/82-01915-2037D775; Wed, 06 Jul 2016 21:07:14 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrNIsWRWlGSWpSXmKPExsVyMXThOl2m4tp
 wg0evOCzefl3C7MDocfjDFZYAxijWzLyk/IoE1oz/f1+wFLRxVux6d5ylgbGRo4uRi0NIYA6j
 RPeyN0wgDovAHRaJPy9fsIA4EgI/WCR2NmwAynACOTkSNw48hrLLJHY/bmIDsXkFBCVOznzCA
 mILCbhLTNnZyt7FyMHBJqAk8fVKBUiYRUBFYuLqV6wQ5QES025uZgIpERZQl1hyHGyiiICqRO
 /RZmYQm1nAS+L8rSeMExh5ZyFZMAtJahZQNzNQ9/p5QhBhNYnb266yQ9jaEssWvmZewMi6ilG
 jOLWoLLVI19BCL6koMz2jJDcxM0fX0MBULze1uDgxPTUnMalYLzk/dxMjMAgZgGAHY9N2z0OM
 khxMSqK8LN+qw4X4kvJTKjMSizPii0pzUosPMcpwcChJ8C4srA0XEixKTU+tSMvMAcYDTFqCg
 0dJhPcmSJq3uCAxtzgzHSJ1itGYY8vva2uZOLZNvbeWSYglLz8vVUqcNx+kVACkNKM0D24QLE
 4vMcpKCfMyAp0mxFOQWpSbWYIq/4pRnINRSZh3FsgUnsy8Erh9r4BOYQI65adLNcgpJYkIKak
 GxnjbvZzP3S9N9OFS1b0XfJ8r/ebb6X5S9U3+v/bcuf9y0728u6uuHjwgc994TevsuRei7z8U
 ntboPJFh1e38zPyyVckWZ/V6pNSP/pmgME9h07K9Z6oeWC3c/K1OMX/fa94WA3nW6xPnTThzv
 9RkR7aDulGHU91S0V0qsq7XVeW4rjPU60wQD1ZiKc5INNRiLipOBABy+lY9zgIAAA==
X-Env-Sender: gotoc64@gmail.com
X-Msg-Ref: server-7.tower-206.messagelabs.com!1467839233!48652601!1
X-Originating-IP: [209.85.161.174]
X-SpamReason: No, hits=0.4 required=7.0 tests=HTML_30_40,HTML_MESSAGE,
 RCVD_BY_IP
X-StarScan-Received: 
X-StarScan-Version: 8.46; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21130 invoked from network); 6 Jul 2016 21:07:14 -0000
Received: from mail-yw0-f174.google.com (HELO mail-yw0-f174.google.com)
 (209.85.161.174)
 by server-7.tower-206.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP;
 6 Jul 2016 21:07:14 -0000
Received: by mail-yw0-f174.google.com with SMTP id i12so97367694ywa.1
 for <minios-devel@lists.xenproject.org>; Wed, 06 Jul 2016 14:07:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:from:date:message-id:subject:to;
 bh=hPH7C8vHi5F8aVg3N6waKpZbV14tUl5Nw2ZEiOgHjbU=;
 b=vJnGrTO4ptNS7opmOyJPS+POrEbL38BtOrjUuVHq5UVpi4vzxue5rTi1eSThNIiVAz
 JRmP/f6+lEDQvY7WYK1xMpSmOGlKMvpADG8byHEKROQYoEppCnfHZe2t+prGPtmYX3Ua
 ojcTfyNaBMBzpXoeXb3FnAf33gStE8hOoBz6ncnK/12g2i44skexZWpVjeAeB4wVbkly
 J607a6J2y2Xlon2Zc42BgnpRgZJCjE9oUOmGi+YsW7Y11EXKOXtmxDIRT7hqU99y4IPu
 yAbQyicuKgWoaEGZ8ps7WRoNueeDmlgJQXcplkITHGGLNQCIeOS5/IviJd3l6opphwW4
 ReZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=hPH7C8vHi5F8aVg3N6waKpZbV14tUl5Nw2ZEiOgHjbU=;
 b=O7LERy72VdgiGEm0pEuWnJHu8VUECPY8eGC6JPfxlALxlLMLZbRJlzLenUKLFn9AQe
 3jdkWbLbztotYsx2eAKz0XhIlIfQVpqb6SM83FVjoCCVh0ZwYpgTPY4O4Fu8Go8HTowc
 RIKSLlAymi3TJij1x96Kyz0+Wbwq5kwm60jyW7XKq6R6B6fW9nWbaWuuja+84coNR5Yn
 LSvZePhBKlB2YG3qu4zWcYmLOp0iRxueANq/MpuuPKnmtWHzFdH65H0BHS1Tdf+FuwXj
 nopatnEepzlKCkd4i5cJPdYX0hN8UqvD9/2CBjfWzNQMejM/XaS9LAZ3mrpRxhA9DfzB
 ErWA==
X-Gm-Message-State: ALyK8tLwGEQ3vfpeEERY0n97MPv27FDQZ+iWXIJGZdnQOpDdE/IFGFhI1Av0SkHt/upNikMT2hxYZ2aVeJ54xA==
X-Received: by 10.129.124.132 with SMTP id x126mr16509840ywc.254.1467839232904; 
 Wed, 06 Jul 2016 14:07:12 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.37.4.77 with HTTP; Wed, 6 Jul 2016 14:07:12 -0700 (PDT)
From: gotoc io <gotoc64@gmail.com>
Date: Wed, 6 Jul 2016 22:07:12 +0100
Message-ID: <CAH9pBJVQXdFMOq0q1+J=oHRscJd2znux=+soKRmhcA=PpmryJA@mail.gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [Minios-devel] own getDayTime return always 0
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2197430517711940416=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============2197430517711940416==
Content-Type: multipart/alternative; boundary=001a114925401094c90536fdf407

--001a114925401094c90536fdf407
Content-Type: text/plain; charset=UTF-8

Hi, I am trying read time from shared_info page as a guest uOS.

extern shared_info_t * shared_info;
..

seconds = shared_info->wc_sec;
nanoseconds = shared_info->wc_nsec;

But during reading I always got 0 from sec/nsec.
Do I need any action/syscall to update this values, after domainU OS start?

I am using Xen 4.8 hypervisor builded for debug.


Thanks

--001a114925401094c90536fdf407
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi, I am trying read time from shared_info page as a =
guest uOS.</div><div><br></div><div>extern shared_info_t * shared_info;</di=
v><div>..</div><div><br></div><div>seconds =3D shared_info-&gt;wc_sec;</div=
><div>nanoseconds =3D shared_info-&gt;wc_nsec;</div><div><br></div><div>But=
 during reading I always got 0 from sec/nsec.</div><div>Do I need any actio=
n/syscall to update this values, after domainU OS start?</div><div><br></di=
v><div>I am using Xen 4.8 hypervisor builded for debug.</div><div><br></div=
><div><br></div><div>Thanks</div></div>

--001a114925401094c90536fdf407--


--===============2197430517711940416==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

--===============2197430517711940416==--


From minios-devel-bounces@lists.xenproject.org Fri Jul 08 11:37:03 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Jul 2016 11:37:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bLU5d-0001h2-S7; Fri, 08 Jul 2016 11:37:01 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9901e81f4=wei.liu2@citrix.com>)
 id 1bLU5c-0001gv-FP
 for minios-devel@lists.xenproject.org; Fri, 08 Jul 2016 11:37:00 +0000
Received: from [85.158.139.211] by server-7.bemta-5.messagelabs.com id
 45/1C-10476-B509F775; Fri, 08 Jul 2016 11:36:59 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrIIsWRWlGSWpSXmKPExsXitHRDpG70hPp
 wgxfbxS3efl3C7MDocfjDFZYAxijWzLyk/IoE1ozF0z6xFPxgrZjXs4SxgfE/SxcjB4eEgL/E
 uzlmXYycHCwCKhItpx6wgNhsAsoSPzt72UBsEQEFiX0LzzCC2MwCbhLnHswBaxUWsJKYP4EJJ
 MwroCvx5tcfsHIhgQCJD7dnskLEBSVOznzCAtGqI7Fg9yc2kFZmAWmJ5f84QMKcAoESN98fZA
 exRYEuuDLhLTvEGAWJjunHwMZLCHBL3D49lXkCI/8sJFNnIZk6C2HqAkbmVYwaxalFZalFuka
 GeklFmekZJbmJmTm6hgamermpxcWJ6ak5iUnFesn5uZsYgcFXz8DAuIPx7mS/Q4ySHExKoryG
 AfXhQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR40/uBcoJFqempFWmZOcA4gElLcPAoifAGgKR5i
 wsSc4sz0yFSpxh1ORb8uL2WSYglLz8vVUqc1wCkSACkKKM0D24ELCYvMcpKCfMyMjAwCPEUpB
 blZpagyr9iFOdgVBLmjQOZwpOZVwK36RXQEUxARxgEgB1RkoiQkmpgPJaj+z3+b/01zQ+2apM
 vFlnIrHBJ82HRre1q2HJh3qXzhXxbU11yeHOuBIn4X1WOL39tdsWo2f/cZsnCj3PeOXBGnz6/
 J2rGxrg7i+RMBIVcG5dUK2t+P8/3ah83u9TO62cjdW9dMPuUvSTzVk2w8Rau6o6cJTMZJQ/2d
 NWeS9Vgm2zZ5P1LiaU4I9FQi7moOBEAovvQc8QCAAA=
X-Env-Sender: prvs=9901e81f4=wei.liu2@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467977817!48949846!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 19285 invoked from network); 8 Jul 2016 11:36:59 -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;
 8 Jul 2016 11:36:59 -0000
X-IronPort-AV: E=Sophos;i="5.28,329,1464652800"; d="scan'208";a="365057501"
Date: Fri, 8 Jul 2016 12:36:55 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: gotoc io <gotoc64@gmail.com>
Message-ID: <20160708113655.GS416@citrix.com>
References: <CAH9pBJVQXdFMOq0q1+J=oHRscJd2znux=+soKRmhcA=PpmryJA@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CAH9pBJVQXdFMOq0q1+J=oHRscJd2znux=+soKRmhcA=PpmryJA@mail.gmail.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA2
Cc: minios-devel@lists.xenproject.org, Wei Liu <wei.liu2@citrix.com>
Subject: Re: [Minios-devel] own getDayTime return always 0
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gV2VkLCBKdWwgMDYsIDIwMTYgYXQgMTA6MDc6MTJQTSArMDEwMCwgZ290b2MgaW8gd3JvdGU6
Cj4gSGksIEkgYW0gdHJ5aW5nIHJlYWQgdGltZSBmcm9tIHNoYXJlZF9pbmZvIHBhZ2UgYXMgYSBn
dWVzdCB1T1MuCj4gCj4gZXh0ZXJuIHNoYXJlZF9pbmZvX3QgKiBzaGFyZWRfaW5mbzsKPiAuLgo+
IAo+IHNlY29uZHMgPSBzaGFyZWRfaW5mby0+d2Nfc2VjOwo+IG5hbm9zZWNvbmRzID0gc2hhcmVk
X2luZm8tPndjX25zZWM7Cj4gCj4gQnV0IGR1cmluZyByZWFkaW5nIEkgYWx3YXlzIGdvdCAwIGZy
b20gc2VjL25zZWMuCj4gRG8gSSBuZWVkIGFueSBhY3Rpb24vc3lzY2FsbCB0byB1cGRhdGUgdGhp
cyB2YWx1ZXMsIGFmdGVyIGRvbWFpblUgT1Mgc3RhcnQ/Cj4gCgpTeXNjYWxsIC0tIG5vLgoKUGxl
YXNlIGhhdmUgYSBsb29rIGF0IG1pbmktb3MuZ2l0L2FyY2gveDg2L3RpbWUuYzp1cGRhdGVfd2Fs
bGNsb2NrLiBZb3UKbmVlZCB0byBoYXZlIHByb3BlciBiYXJyaWVycyBldGMuCgpXZWkuCgo+IEkg
YW0gdXNpbmcgWGVuIDQuOCBoeXBlcnZpc29yIGJ1aWxkZWQgZm9yIGRlYnVnLgo+IAo+IAo+IFRo
YW5rcwoKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+
IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jul 08 11:37:03 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Jul 2016 11:37:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bLU5d-0001h2-S7; Fri, 08 Jul 2016 11:37:01 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=9901e81f4=wei.liu2@citrix.com>)
 id 1bLU5c-0001gv-FP
 for minios-devel@lists.xenproject.org; Fri, 08 Jul 2016 11:37:00 +0000
Received: from [85.158.139.211] by server-7.bemta-5.messagelabs.com id
 45/1C-10476-B509F775; Fri, 08 Jul 2016 11:36:59 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrIIsWRWlGSWpSXmKPExsXitHRDpG70hPp
 wgxfbxS3efl3C7MDocfjDFZYAxijWzLyk/IoE1ozF0z6xFPxgrZjXs4SxgfE/SxcjB4eEgL/E
 uzlmXYycHCwCKhItpx6wgNhsAsoSPzt72UBsEQEFiX0LzzCC2MwCbhLnHswBaxUWsJKYP4EJJ
 MwroCvx5tcfsHIhgQCJD7dnskLEBSVOznzCAtGqI7Fg9yc2kFZmAWmJ5f84QMKcAoESN98fZA
 exRYEuuDLhLTvEGAWJjunHwMZLCHBL3D49lXkCI/8sJFNnIZk6C2HqAkbmVYwaxalFZalFuka
 GeklFmekZJbmJmTm6hgamermpxcWJ6ak5iUnFesn5uZsYgcFXz8DAuIPx7mS/Q4ySHExKoryG
 AfXhQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR40/uBcoJFqempFWmZOcA4gElLcPAoifAGgKR5i
 wsSc4sz0yFSpxh1ORb8uL2WSYglLz8vVUqc1wCkSACkKKM0D24ELCYvMcpKCfMyMjAwCPEUpB
 blZpagyr9iFOdgVBLmjQOZwpOZVwK36RXQEUxARxgEgB1RkoiQkmpgPJaj+z3+b/01zQ+2apM
 vFlnIrHBJ82HRre1q2HJh3qXzhXxbU11yeHOuBIn4X1WOL39tdsWo2f/cZsnCj3PeOXBGnz6/
 J2rGxrg7i+RMBIVcG5dUK2t+P8/3ah83u9TO62cjdW9dMPuUvSTzVk2w8Rau6o6cJTMZJQ/2d
 NWeS9Vgm2zZ5P1LiaU4I9FQi7moOBEAovvQc8QCAAA=
X-Env-Sender: prvs=9901e81f4=wei.liu2@citrix.com
X-Msg-Ref: server-8.tower-206.messagelabs.com!1467977817!48949846!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 19285 invoked from network); 8 Jul 2016 11:36:59 -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;
 8 Jul 2016 11:36:59 -0000
X-IronPort-AV: E=Sophos;i="5.28,329,1464652800"; d="scan'208";a="365057501"
Date: Fri, 8 Jul 2016 12:36:55 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: gotoc io <gotoc64@gmail.com>
Message-ID: <20160708113655.GS416@citrix.com>
References: <CAH9pBJVQXdFMOq0q1+J=oHRscJd2znux=+soKRmhcA=PpmryJA@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CAH9pBJVQXdFMOq0q1+J=oHRscJd2znux=+soKRmhcA=PpmryJA@mail.gmail.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA2
Cc: minios-devel@lists.xenproject.org, Wei Liu <wei.liu2@citrix.com>
Subject: Re: [Minios-devel] own getDayTime return always 0
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gV2VkLCBKdWwgMDYsIDIwMTYgYXQgMTA6MDc6MTJQTSArMDEwMCwgZ290b2MgaW8gd3JvdGU6
Cj4gSGksIEkgYW0gdHJ5aW5nIHJlYWQgdGltZSBmcm9tIHNoYXJlZF9pbmZvIHBhZ2UgYXMgYSBn
dWVzdCB1T1MuCj4gCj4gZXh0ZXJuIHNoYXJlZF9pbmZvX3QgKiBzaGFyZWRfaW5mbzsKPiAuLgo+
IAo+IHNlY29uZHMgPSBzaGFyZWRfaW5mby0+d2Nfc2VjOwo+IG5hbm9zZWNvbmRzID0gc2hhcmVk
X2luZm8tPndjX25zZWM7Cj4gCj4gQnV0IGR1cmluZyByZWFkaW5nIEkgYWx3YXlzIGdvdCAwIGZy
b20gc2VjL25zZWMuCj4gRG8gSSBuZWVkIGFueSBhY3Rpb24vc3lzY2FsbCB0byB1cGRhdGUgdGhp
cyB2YWx1ZXMsIGFmdGVyIGRvbWFpblUgT1Mgc3RhcnQ/Cj4gCgpTeXNjYWxsIC0tIG5vLgoKUGxl
YXNlIGhhdmUgYSBsb29rIGF0IG1pbmktb3MuZ2l0L2FyY2gveDg2L3RpbWUuYzp1cGRhdGVfd2Fs
bGNsb2NrLiBZb3UKbmVlZCB0byBoYXZlIHByb3BlciBiYXJyaWVycyBldGMuCgpXZWkuCgo+IEkg
YW0gdXNpbmcgWGVuIDQuOCBoeXBlcnZpc29yIGJ1aWxkZWQgZm9yIGRlYnVnLgo+IAo+IAo+IFRo
YW5rcwoKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+
IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 08:00:13 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 08:00:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bMsbz-00087c-Ur; Tue, 12 Jul 2016 08:00:11 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=994fb90f6=wei.liu2@citrix.com>)
 id 1bMsbz-00087T-5c; Tue, 12 Jul 2016 08:00:11 +0000
Received: from [193.109.254.147] by server-2.bemta-14.messagelabs.com id
 F0/BC-29243-A83A4875; Tue, 12 Jul 2016 08:00:10 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRWlGSWpSXmKPExsXitHSDvW7n4pZ
 wg5XHrS3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZvz/9J+1YAZzxYZrag2M55m6GDk5
 JAT8JeacvsUKYrMIqEosfPGWHcRmE1CW+NnZywZiiwDZH1t7weLMAp2MEp3bREBsYQF7idvrP
 4P18groS/w7dZS5i5GDQwgovmGmJ0RYUOLkzCcsEK06Egt2f2IDKWEWkJZY/o8DJMwp4CCx4v
 FesOmiAioSVyZAXCAkoCDRMf0Y1JXcErdPT2WewMg/C8nUWUimzkKYuoCReRWjRnFqUVlqka6
 RkV5SUWZ6RkluYmaOrqGhiV5uanFxYnpqTmJSsV5yfu4mRmAY1jMwMO5gvH3J7xCjJAeTkihv
 M3NLuBBfUn5KZUZicUZ8UWlOavEhRhkODiUJ3sRFQDnBotT01Iq0zBxgRMCkJTh4lER4Ty8ES
 vMWFyTmFmemQ6ROMepyLPhxey2TEEtefl6qlDjvf5AiAZCijNI8uBGw6LzEKCslzMvIwMAgxF
 OQWpSbWYIq/4pRnINRSRjiEp7MvBK4Ta+AjmACOqLWoRnkiJJEhJRUA+O8KSzxvR37duuXiDZ
 NcF7N2DvltVlOdCDf6/4ULT2u7q3/v857dC4+pk4/KuGSyyTPKVPbDRnu3nqVEGNe8frB/K49
 Z753XlhRUyjc+meezZHm+459KWedJrj3lHx4z37aMnTdwrWBi/ytGnvjvW7FxfHd11qwUXtRq
 6ca1/cywarXuvYR8kosxRmJhlrMRcWJAA9qwH/JAgAA
X-Env-Sender: prvs=994fb90f6=wei.liu2@citrix.com
X-Msg-Ref: server-14.tower-27.messagelabs.com!1468310408!41044555!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12314 invoked from network); 12 Jul 2016 08:00:09 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-14.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 12 Jul 2016 08:00:09 -0000
X-IronPort-AV: E=Sophos;i="5.28,350,1464652800"; d="scan'208";a="372601141"
Date: Tue, 12 Jul 2016 08:59:38 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160712075938.GD20723@citrix.com>
References: <1467365591-22445-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1467365591-22445-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA2
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Wei Liu <wei.liu2@citrix.com>, samuel.thibault@ens-lyon.org
Subject: Re: [Minios-devel] [PATCH] mini-os: make cscope repair
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gRnJpLCBKdWwgMDEsIDIwMTYgYXQgMTE6MzM6MTFBTSArMDIwMCwgSnVlcmdlbiBHcm9zcyB3
cm90ZToKPiAibWFrZSBjc2NvcGUiIGRvZXNuJ3QgbGlrZSBzeW1ib2xpYyBsaW5rIGluY2x1ZGUv
bWluaS1vcy0+LiBhcyBpdAo+IGxlYWRzIHRvIGEgZmlsZSBzeXN0ZW0gcmVjdXJzaW9uLiBSZXBh
aXIgdGhhdCBieSBub3QgZm9sbG93aW5nIGxpbmtzCj4gd2hlbiBzZWFyY2hpbmcgdGhlIHNvdXJj
ZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgoK
UXVldWVkLgoKSnVlcmdlbiwgcGxlYXNlIENDIG1lIG9uIGFsbCB5b3VyIG1pbmktb3MgcGF0Y2hl
cyBzbyB0aGF0IEkga25vdyBJIG5lZWQKdG8gY29tbWl0IHRoZW0gd2hlbiB0aGV5IGFyZSBhY2tl
ZC4KCldlaS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 08:00:13 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 08:00:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bMsbz-00087c-Ur; Tue, 12 Jul 2016 08:00:11 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=994fb90f6=wei.liu2@citrix.com>)
 id 1bMsbz-00087T-5c; Tue, 12 Jul 2016 08:00:11 +0000
Received: from [193.109.254.147] by server-2.bemta-14.messagelabs.com id
 F0/BC-29243-A83A4875; Tue, 12 Jul 2016 08:00:10 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRWlGSWpSXmKPExsXitHSDvW7n4pZ
 wg5XHrS3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZvz/9J+1YAZzxYZrag2M55m6GDk5
 JAT8JeacvsUKYrMIqEosfPGWHcRmE1CW+NnZywZiiwDZH1t7weLMAp2MEp3bREBsYQF7idvrP
 4P18groS/w7dZS5i5GDQwgovmGmJ0RYUOLkzCcsEK06Egt2f2IDKWEWkJZY/o8DJMwp4CCx4v
 FesOmiAioSVyZAXCAkoCDRMf0Y1JXcErdPT2WewMg/C8nUWUimzkKYuoCReRWjRnFqUVlqka6
 RkV5SUWZ6RkluYmaOrqGhiV5uanFxYnpqTmJSsV5yfu4mRmAY1jMwMO5gvH3J7xCjJAeTkihv
 M3NLuBBfUn5KZUZicUZ8UWlOavEhRhkODiUJ3sRFQDnBotT01Iq0zBxgRMCkJTh4lER4Ty8ES
 vMWFyTmFmemQ6ROMepyLPhxey2TEEtefl6qlDjvf5AiAZCijNI8uBGw6LzEKCslzMvIwMAgxF
 OQWpSbWYIq/4pRnINRSRjiEp7MvBK4Ta+AjmACOqLWoRnkiJJEhJRUA+O8KSzxvR37duuXiDZ
 NcF7N2DvltVlOdCDf6/4ULT2u7q3/v857dC4+pk4/KuGSyyTPKVPbDRnu3nqVEGNe8frB/K49
 Z753XlhRUyjc+meezZHm+459KWedJrj3lHx4z37aMnTdwrWBi/ytGnvjvW7FxfHd11qwUXtRq
 6ca1/cywarXuvYR8kosxRmJhlrMRcWJAA9qwH/JAgAA
X-Env-Sender: prvs=994fb90f6=wei.liu2@citrix.com
X-Msg-Ref: server-14.tower-27.messagelabs.com!1468310408!41044555!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 12314 invoked from network); 12 Jul 2016 08:00:09 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-14.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 12 Jul 2016 08:00:09 -0000
X-IronPort-AV: E=Sophos;i="5.28,350,1464652800"; d="scan'208";a="372601141"
Date: Tue, 12 Jul 2016 08:59:38 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160712075938.GD20723@citrix.com>
References: <1467365591-22445-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1467365591-22445-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA2
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Wei Liu <wei.liu2@citrix.com>, samuel.thibault@ens-lyon.org
Subject: Re: [Minios-devel] [PATCH] mini-os: make cscope repair
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gRnJpLCBKdWwgMDEsIDIwMTYgYXQgMTE6MzM6MTFBTSArMDIwMCwgSnVlcmdlbiBHcm9zcyB3
cm90ZToKPiAibWFrZSBjc2NvcGUiIGRvZXNuJ3QgbGlrZSBzeW1ib2xpYyBsaW5rIGluY2x1ZGUv
bWluaS1vcy0+LiBhcyBpdAo+IGxlYWRzIHRvIGEgZmlsZSBzeXN0ZW0gcmVjdXJzaW9uLiBSZXBh
aXIgdGhhdCBieSBub3QgZm9sbG93aW5nIGxpbmtzCj4gd2hlbiBzZWFyY2hpbmcgdGhlIHNvdXJj
ZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgoK
UXVldWVkLgoKSnVlcmdlbiwgcGxlYXNlIENDIG1lIG9uIGFsbCB5b3VyIG1pbmktb3MgcGF0Y2hl
cyBzbyB0aGF0IEkga25vdyBJIG5lZWQKdG8gY29tbWl0IHRoZW0gd2hlbiB0aGV5IGFyZSBhY2tl
ZC4KCldlaS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 08:01:20 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 08:01: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bMsd6-0008Dz-AB; Tue, 12 Jul 2016 08:01: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=994fb90f6=wei.liu2@citrix.com>)
 id 1bMsd4-0008Dj-W7; Tue, 12 Jul 2016 08:01:19 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 7A/F4-22092-EC3A4875; Tue, 12 Jul 2016 08:01:18 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrBIsWRWlGSWpSXmKPExsXitHRDpO7ZxS3
 hBvtOali8/bqE2eL7lslMDkwehz9cYQlgjGLNzEvKr0hgzdi/8C9rwXW2ihl/D7E3MO5m7WLk
 5JAQ8JdoeNLMDmKzCKhKLJx0mhnEZhNQlvjZ2cvWxcjFISKwk1Gic8cMNpAEs4CixKnbM8CKh
 AXiJaY0rgYbxCugL7Hz1hkWkAYhgbmMEnsPd0AlBCVOznzCAtGsI7Fg9yegQRxAtrTE8n8cIG
 FOAV2Je/83gs0XFVCRuDLhLdhBQgIKEh3TjzGBlEsIcEv87bafwMg/C8nQWUiGzkIYuoCReRW
 jenFqUVlqka6xXlJRZnpGSW5iZo6uoYGZXm5qcXFiempOYlKxXnJ+7iZGYCgyAMEOxo5/TocY
 JTmYlER5m5lbwoX4kvJTKjMSizPii0pzUosPMcpwcChJ8G5aBJQTLEpNT61Iy8wBRgVMWoKDR
 0mE1wIYGUK8xQWJucWZ6RCpU4y6HAt+3F7LJMSSl5+XKiXOWwYyQwCkKKM0D24ELEIvMcpKCf
 MyAh0lxFOQWpSbWYIq/4pRnINRSZh3BsgUnsy8ErhNr4COYAI6otahGeSIkkSElFQD4za9g0+
 lV8RPnP13ye+UxZNsNl37UDF7w3/tuIzm2Acb+AoWzXz2QeTArqip6euP5lny/Z+SOy9FjPlb
 6OIjOdHK3Ge/77URcfgjd/LWg/nn1KP/CB+41HC7XnA5p8XSFZ/u6u7237c35JHiCsfzz3KX1
 C02LjXvuXq4oEqwNoR18n3l0/6qPPeVWIozEg21mIuKEwE9c3dTywIAAA==
X-Env-Sender: prvs=994fb90f6=wei.liu2@citrix.com
X-Msg-Ref: server-3.tower-21.messagelabs.com!1468310474!22859903!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6173 invoked from network); 12 Jul 2016 08:01:17 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-3.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 12 Jul 2016 08:01:17 -0000
X-IronPort-AV: E=Sophos;i="5.28,350,1464652800"; d="scan'208";a="365649106"
Date: Tue, 12 Jul 2016 09:00:46 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, Juergen Gross
 <jgross@suse.com>, <minios-devel@lists.xenproject.org>,
 <xen-devel@lists.xenproject.org>, <andrew.cooper3@citrix.com>
Message-ID: <20160712080046.GE20723@citrix.com>
References: <1467365607-22499-1-git-send-email-jgross@suse.com>
 <20160703183547.GG5041@var.home> <5779F44A.50104@suse.com>
 <20160704192620.GD3004@var.home>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20160704192620.GD3004@var.home>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA1
Cc: Wei Liu <wei.liu2@citrix.com>
Subject: Re: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gTW9uLCBKdWwgMDQsIDIwMTYgYXQgMDk6MjY6MjBQTSArMDIwMCwgU2FtdWVsIFRoaWJhdWx0
IHdyb3RlOgo+IEhlbGxvLAo+IAo+IEp1ZXJnZW4gR3Jvc3MsIG9uIE1vbiAwNCBKdWwgMjAxNiAw
NzoyOTo0NiArMDIwMCwgd3JvdGU6Cj4gPiA+IERpZCB5b3UgY2hlY2sgdGhlIGJvb3Qgb3V0cHV0
IGUuZy4gb2YgYSB0cml2aWFsIG1pbmktb3MgYXBwbGljYXRpb24/Cj4gPiA+IE5vdGFibHksIGlp
cmMgdGhlcmUgd2VyZSBwZXJoYXBzIG9kZCBmb3JtYXRpbmcgd2l0aCAleCwgJXAgb3Igc3VjaC4K
PiA+ID4gTW92aW5nIHRvIHRoZSBwb3NpeCBiZWhhdmlvciB3b3VsZCBiZSBhIGdvb2QgdGhpbmcs
IEknZCBqdXN0IHdhbnQgdG8KPiA+ID4ga25vdyB3aGV0aGVyIHdlIGhhdmUgc29tZSBiZWhhdmlv
ciBjaGFuZ2UuCj4gPiAKPiA+IEp1c3QgZG91YmxlIGNoZWNrZWQ6IHNvbWUgb2YgdGhlIHByaW50
cyBhcmUgbm93IHdpdGhvdXQgbGVhZGluZyB6ZXJvZXM6Cj4gCj4gT2ssIHNvICVwIG1vdmVzIGZy
b20gJTA4eCB0byAweCV4LiBUaGF0J3MgZmluZSBieSBtZSwgYW55Ym9keSBhZ2FpbnN0Cj4gdGhl
IGNoYW5nZT8KPiAKCk5vIG9iamVjdGlvbiBmcm9tIG1lLiA6LSkKCklmIHlvdSBhY2sgdGhpcyBw
YXRjaCBJIHdpbGwganVzdCBxdWV1ZSBpdC4KCldlaS4KCj4gU2FtdWVsCj4gCj4gX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cDovL2xp
c3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 08:01:20 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 08:01: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bMsd6-0008Dz-AB; Tue, 12 Jul 2016 08:01: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=994fb90f6=wei.liu2@citrix.com>)
 id 1bMsd4-0008Dj-W7; Tue, 12 Jul 2016 08:01:19 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 7A/F4-22092-EC3A4875; Tue, 12 Jul 2016 08:01:18 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrBIsWRWlGSWpSXmKPExsXitHRDpO7ZxS3
 hBvtOali8/bqE2eL7lslMDkwehz9cYQlgjGLNzEvKr0hgzdi/8C9rwXW2ihl/D7E3MO5m7WLk
 5JAQ8JdoeNLMDmKzCKhKLJx0mhnEZhNQlvjZ2cvWxcjFISKwk1Gic8cMNpAEs4CixKnbM8CKh
 AXiJaY0rgYbxCugL7Hz1hkWkAYhgbmMEnsPd0AlBCVOznzCAtGsI7Fg9yegQRxAtrTE8n8cIG
 FOAV2Je/83gs0XFVCRuDLhLdhBQgIKEh3TjzGBlEsIcEv87bafwMg/C8nQWUiGzkIYuoCReRW
 jenFqUVlqka6xXlJRZnpGSW5iZo6uoYGZXm5qcXFiempOYlKxXnJ+7iZGYCgyAMEOxo5/TocY
 JTmYlER5m5lbwoX4kvJTKjMSizPii0pzUosPMcpwcChJ8G5aBJQTLEpNT61Iy8wBRgVMWoKDR
 0mE1wIYGUK8xQWJucWZ6RCpU4y6HAt+3F7LJMSSl5+XKiXOWwYyQwCkKKM0D24ELEIvMcpKCf
 MyAh0lxFOQWpSbWYIq/4pRnINRSZh3BsgUnsy8ErhNr4COYAI6otahGeSIkkSElFQD4za9g0+
 lV8RPnP13ye+UxZNsNl37UDF7w3/tuIzm2Acb+AoWzXz2QeTArqip6euP5lny/Z+SOy9FjPlb
 6OIjOdHK3Ge/77URcfgjd/LWg/nn1KP/CB+41HC7XnA5p8XSFZ/u6u7237c35JHiCsfzz3KX1
 C02LjXvuXq4oEqwNoR18n3l0/6qPPeVWIozEg21mIuKEwE9c3dTywIAAA==
X-Env-Sender: prvs=994fb90f6=wei.liu2@citrix.com
X-Msg-Ref: server-3.tower-21.messagelabs.com!1468310474!22859903!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 6173 invoked from network); 12 Jul 2016 08:01:17 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-3.tower-21.messagelabs.com with RC4-SHA encrypted SMTP;
 12 Jul 2016 08:01:17 -0000
X-IronPort-AV: E=Sophos;i="5.28,350,1464652800"; d="scan'208";a="365649106"
Date: Tue, 12 Jul 2016 09:00:46 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, Juergen Gross
 <jgross@suse.com>, <minios-devel@lists.xenproject.org>,
 <xen-devel@lists.xenproject.org>, <andrew.cooper3@citrix.com>
Message-ID: <20160712080046.GE20723@citrix.com>
References: <1467365607-22499-1-git-send-email-jgross@suse.com>
 <20160703183547.GG5041@var.home> <5779F44A.50104@suse.com>
 <20160704192620.GD3004@var.home>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20160704192620.GD3004@var.home>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA1
Cc: Wei Liu <wei.liu2@citrix.com>
Subject: Re: [Minios-devel] [PATCH] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gTW9uLCBKdWwgMDQsIDIwMTYgYXQgMDk6MjY6MjBQTSArMDIwMCwgU2FtdWVsIFRoaWJhdWx0
IHdyb3RlOgo+IEhlbGxvLAo+IAo+IEp1ZXJnZW4gR3Jvc3MsIG9uIE1vbiAwNCBKdWwgMjAxNiAw
NzoyOTo0NiArMDIwMCwgd3JvdGU6Cj4gPiA+IERpZCB5b3UgY2hlY2sgdGhlIGJvb3Qgb3V0cHV0
IGUuZy4gb2YgYSB0cml2aWFsIG1pbmktb3MgYXBwbGljYXRpb24/Cj4gPiA+IE5vdGFibHksIGlp
cmMgdGhlcmUgd2VyZSBwZXJoYXBzIG9kZCBmb3JtYXRpbmcgd2l0aCAleCwgJXAgb3Igc3VjaC4K
PiA+ID4gTW92aW5nIHRvIHRoZSBwb3NpeCBiZWhhdmlvciB3b3VsZCBiZSBhIGdvb2QgdGhpbmcs
IEknZCBqdXN0IHdhbnQgdG8KPiA+ID4ga25vdyB3aGV0aGVyIHdlIGhhdmUgc29tZSBiZWhhdmlv
ciBjaGFuZ2UuCj4gPiAKPiA+IEp1c3QgZG91YmxlIGNoZWNrZWQ6IHNvbWUgb2YgdGhlIHByaW50
cyBhcmUgbm93IHdpdGhvdXQgbGVhZGluZyB6ZXJvZXM6Cj4gCj4gT2ssIHNvICVwIG1vdmVzIGZy
b20gJTA4eCB0byAweCV4LiBUaGF0J3MgZmluZSBieSBtZSwgYW55Ym9keSBhZ2FpbnN0Cj4gdGhl
IGNoYW5nZT8KPiAKCk5vIG9iamVjdGlvbiBmcm9tIG1lLiA6LSkKCklmIHlvdSBhY2sgdGhpcyBw
YXRjaCBJIHdpbGwganVzdCBxdWV1ZSBpdC4KCldlaS4KCj4gU2FtdWVsCj4gCj4gX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cDovL2xp
c3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 08:04:01 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 08:04:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bMsfg-0008Ux-Va; Tue, 12 Jul 2016 08:04:00 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bMsff-0008Ui-KD; Tue, 12 Jul 2016 08:03:59 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 BB/3A-22092-E64A4875; Tue, 12 Jul 2016 08:03:58 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrLIsWRWlGSWpSXmKPExsVyuP0Ov27ekpZ
 wg1XrpSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZnTu7GUreMFcce7KR8YGxh7mLkZO
 DgkBI4m3E/8xdTFycQgJLGSU+Ln+PQtIQljAXuL2+s+sILaIgKLEg5c3wWwhgRSJphOHwZqZg
 eyHq+eBxdkEVCU2XD8FZvMKqEtsf/abHcRmAYpf3buFsYuRg0NUIFxix0pfiBJBiZMzn4Ct4h
 QwkFj6ppMVYqSexI7rv6BseYntb+cwT2Dkm4WkZRaSsllIyhYwMq9iVC9OLSpLLdI11Esqykz
 PKMlNzMzRNTQw08tNLS5OTE/NSUwq1kvOz93ECAw6BiDYwbjzudMhRkkOJiVR3mbmlnAhvqT8
 lMqMxOKM+KLSnNTiQ4wyHBxKErzKi4FygkWp6akVaZk5wPCHSUtw8CiJ8FqApHmLCxJzizPTI
 VKnGHU5Fvy4vZZJiCUvPy9VSpz35SKgIgGQoozSPLgRsFi8xCgrJczLCHSUEE9BalFuZgmq/C
 tGcQ5GJWFeX5BVPJl5JXCbXgEdwQR0RK1DM8gRJYkIKakGRk2mbT1tCv8fp99STrXL1/y/UXn
 N0xk/vRk0fzoJhXa32hef/x7Y8Ob/T+f3O93rXk28ezLdcUHUgg9pneueLRX/kHrRY/vbqOMP
 BA9ektq0JE9EYU8++0JGziyPTX0c0StW/M0MaytRFDA+VPHgy/2ubJXDt26ZLlyUZbPeNf5v9
 cyzKw54iCixFGckGmoxFxUnAgCBwR2mwAIAAA==
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1468310638!912644!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 48588 invoked from network); 12 Jul 2016 08:03:58 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-6.tower-21.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 12 Jul 2016 08:03:58 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id A6B17ACBB;
 Tue, 12 Jul 2016 08:03:12 +0000 (UTC)
To: Wei Liu <wei.liu2@citrix.com>
References: <1467365591-22445-1-git-send-email-jgross@suse.com>
 <20160712075938.GD20723@citrix.com>
From: Juergen Gross <jgross@suse.com>
Message-ID: <5784A440.4030706@suse.com>
Date: Tue, 12 Jul 2016 10:03:12 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
 Thunderbird/38.7.0
MIME-Version: 1.0
In-Reply-To: <20160712075938.GD20723@citrix.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 samuel.thibault@ens-lyon.org
Subject: Re: [Minios-devel] [PATCH] mini-os: make cscope repair
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMTIvMDcvMTYgMDk6NTksIFdlaSBMaXUgd3JvdGU6Cj4gT24gRnJpLCBKdWwgMDEsIDIwMTYg
YXQgMTE6MzM6MTFBTSArMDIwMCwgSnVlcmdlbiBHcm9zcyB3cm90ZToKPj4gIm1ha2UgY3Njb3Bl
IiBkb2Vzbid0IGxpa2Ugc3ltYm9saWMgbGluayBpbmNsdWRlL21pbmktb3MtPi4gYXMgaXQKPj4g
bGVhZHMgdG8gYSBmaWxlIHN5c3RlbSByZWN1cnNpb24uIFJlcGFpciB0aGF0IGJ5IG5vdCBmb2xs
b3dpbmcgbGlua3MKPj4gd2hlbiBzZWFyY2hpbmcgdGhlIHNvdXJjZXMuCj4+Cj4+IFNpZ25lZC1v
ZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KPiAKPiBRdWV1ZWQuCj4gCj4g
SnVlcmdlbiwgcGxlYXNlIENDIG1lIG9uIGFsbCB5b3VyIG1pbmktb3MgcGF0Y2hlcyBzbyB0aGF0
IEkga25vdyBJIG5lZWQKPiB0byBjb21taXQgdGhlbSB3aGVuIHRoZXkgYXJlIGFja2VkLgoKT2th
eSwgd2lsbCBkby4KCgpUaGFua3MsCgpKdWVyZ2VuCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9j
Z2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 08:04:01 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 08:04:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bMsfg-0008Ux-Va; Tue, 12 Jul 2016 08:04:00 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bMsff-0008Ui-KD; Tue, 12 Jul 2016 08:03:59 +0000
Received: from [85.158.143.35] by server-3.bemta-6.messagelabs.com id
 BB/3A-22092-E64A4875; Tue, 12 Jul 2016 08:03:58 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrLIsWRWlGSWpSXmKPExsVyuP0Ov27ekpZ
 wg1XrpSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZnTu7GUreMFcce7KR8YGxh7mLkZO
 DgkBI4m3E/8xdTFycQgJLGSU+Ln+PQtIQljAXuL2+s+sILaIgKLEg5c3wWwhgRSJphOHwZqZg
 eyHq+eBxdkEVCU2XD8FZvMKqEtsf/abHcRmAYpf3buFsYuRg0NUIFxix0pfiBJBiZMzn4Ct4h
 QwkFj6ppMVYqSexI7rv6BseYntb+cwT2Dkm4WkZRaSsllIyhYwMq9iVC9OLSpLLdI11Esqykz
 PKMlNzMzRNTQw08tNLS5OTE/NSUwq1kvOz93ECAw6BiDYwbjzudMhRkkOJiVR3mbmlnAhvqT8
 lMqMxOKM+KLSnNTiQ4wyHBxKErzKi4FygkWp6akVaZk5wPCHSUtw8CiJ8FqApHmLCxJzizPTI
 VKnGHU5Fvy4vZZJiCUvPy9VSpz35SKgIgGQoozSPLgRsFi8xCgrJczLCHSUEE9BalFuZgmq/C
 tGcQ5GJWFeX5BVPJl5JXCbXgEdwQR0RK1DM8gRJYkIKakGRk2mbT1tCv8fp99STrXL1/y/UXn
 N0xk/vRk0fzoJhXa32hef/x7Y8Ob/T+f3O93rXk28ezLdcUHUgg9pneueLRX/kHrRY/vbqOMP
 BA9ektq0JE9EYU8++0JGziyPTX0c0StW/M0MaytRFDA+VPHgy/2ubJXDt26ZLlyUZbPeNf5v9
 cyzKw54iCixFGckGmoxFxUnAgCBwR2mwAIAAA==
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-6.tower-21.messagelabs.com!1468310638!912644!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 48588 invoked from network); 12 Jul 2016 08:03:58 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-6.tower-21.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 12 Jul 2016 08:03:58 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id A6B17ACBB;
 Tue, 12 Jul 2016 08:03:12 +0000 (UTC)
To: Wei Liu <wei.liu2@citrix.com>
References: <1467365591-22445-1-git-send-email-jgross@suse.com>
 <20160712075938.GD20723@citrix.com>
From: Juergen Gross <jgross@suse.com>
Message-ID: <5784A440.4030706@suse.com>
Date: Tue, 12 Jul 2016 10:03:12 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
 Thunderbird/38.7.0
MIME-Version: 1.0
In-Reply-To: <20160712075938.GD20723@citrix.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 samuel.thibault@ens-lyon.org
Subject: Re: [Minios-devel] [PATCH] mini-os: make cscope repair
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMTIvMDcvMTYgMDk6NTksIFdlaSBMaXUgd3JvdGU6Cj4gT24gRnJpLCBKdWwgMDEsIDIwMTYg
YXQgMTE6MzM6MTFBTSArMDIwMCwgSnVlcmdlbiBHcm9zcyB3cm90ZToKPj4gIm1ha2UgY3Njb3Bl
IiBkb2Vzbid0IGxpa2Ugc3ltYm9saWMgbGluayBpbmNsdWRlL21pbmktb3MtPi4gYXMgaXQKPj4g
bGVhZHMgdG8gYSBmaWxlIHN5c3RlbSByZWN1cnNpb24uIFJlcGFpciB0aGF0IGJ5IG5vdCBmb2xs
b3dpbmcgbGlua3MKPj4gd2hlbiBzZWFyY2hpbmcgdGhlIHNvdXJjZXMuCj4+Cj4+IFNpZ25lZC1v
ZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KPiAKPiBRdWV1ZWQuCj4gCj4g
SnVlcmdlbiwgcGxlYXNlIENDIG1lIG9uIGFsbCB5b3VyIG1pbmktb3MgcGF0Y2hlcyBzbyB0aGF0
IEkga25vdyBJIG5lZWQKPiB0byBjb21taXQgdGhlbSB3aGVuIHRoZXkgYXJlIGFja2VkLgoKT2th
eSwgd2lsbCBkby4KCgpUaGFua3MsCgpKdWVyZ2VuCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9j
Z2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 08:48:55 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 08:48:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bMtN8-0002Ya-NR; Tue, 12 Jul 2016 08:48:54 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bMtN7-0002YR-R0; Tue, 12 Jul 2016 08:48:54 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 8D/5E-09256-5FEA4875; Tue, 12 Jul 2016 08:48:53 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGIsWRWlGSWpSXmKPExsVyoG1JsO7ndS3
 hBq+PiFq8/bqE2eL7lslMDkwehz9cYQlgjGLNzEvKr0hgzfh5aBZzwfYzLBX35lxnbmC8v5qp
 i5GTQ0LAX+Lw+RfsXYxcHEICmxglDj7bwQLhbGCUuDpxPStIFYuAqsSkRUdYQGw2AROJ/sZ5b
 CC2iICFxIWuM8wgNrNAosSi358YQWxhgWCJvl9PwTbwClhKvDv2CmwDr8B1Rokle6eANQsJ2E
 vM+DGfGaJIUOLkzCcsEIO0JG78ewnUzAFkS0ss/8cBYnIKOEi0HmQHMUUFzCS+/TSYwCgwC0n
 vLCS9sxB6FzAyr2JUL04tKkst0jXSSyrKTM8oyU3MzNE1NDDTy00tLk5MT81JTCrWS87P3cQI
 DFMGINjBuOyv0yFGSQ4mJVHeZuaWcCG+pPyUyozE4oz4otKc1OJDjDIcHEoSvAfXAuUEi1LTU
 yvSMnOAEQOTluDgURLhDQdJ8xYXJOYWZ6ZDpE4x6nJsmXF/LZMQS15+XqqUOO9lkCIBkKKM0j
 y4EbDovcQoKyXMywh0lBBPQWpRbmYJqvwrRnEORiVh3jcgU3gy80rgNr0COoIJ6Ihah2aQI0o
 SEVJSDYx17/nsrA27irfsPKF/TXqtzh25Cbe8duxxnDvbOs7pVoHpitcHl4icMPhi+ZtFdo7r
 lJXqabfU92wIPrb1hsu5ysetC250BxdZ7fuSvn/dq4fX13jdm9HhbMik0r9y+rqOJav2Pzj/s
 NSqJKjLv2eK6+XcJrbzvyL3bPlwuyGMb+bseg2p11UPlFiKMxINtZiLihMByIQdxNkCAAA=
X-Env-Sender: samuel.thibault@ens-lyon.org
X-Msg-Ref: server-5.tower-21.messagelabs.com!1468313330!23412319!1
X-Originating-IP: [192.134.164.83]
X-SpamReason: No, hits=2.3 required=7.0 tests=BODY_FWORD,
 BODY_RANDOM_LONG,MAILTO_TO_SPAM_ADDR
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17547 invoked from network); 12 Jul 2016 08:48:51 -0000
Received: from mail2-relais-roc.national.inria.fr (HELO
 mail2-relais-roc.national.inria.fr) (192.134.164.83)
 by server-5.tower-21.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted
 SMTP; 12 Jul 2016 08:48:51 -0000
X-IronPort-AV: E=Sophos;i="5.28,351,1464645600"; d="scan'208";a="226434243"
Received: from unknown (HELO var.youpi.perso.aquilenet.fr) ([193.50.110.245])
 by mail2-relais-roc.national.inria.fr with
 ESMTP/TLS/AES256-GCM-SHA384; 12 Jul 2016 10:48:50 +0200
Received: from samy by var.youpi.perso.aquilenet.fr with local (Exim 4.87)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bMtN4-0002Z9-5Z; Tue, 12 Jul 2016 10:48:50 +0200
Date: Tue, 12 Jul 2016 10:48:50 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>, wei.liu2@citrix.com
Message-ID: <20160712084850.GF3654@var.bordeaux.inria.fr>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, wei.liu2@citrix.com,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
References: <1467623819-31378-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1467623819-31378-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
Subject: Re: [Minios-devel] [PATCH v2] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SnVlcmdlbiBHcm9zcywgb24gTW9uIDA0IEp1bCAyMDE2IDExOjE2OjU5ICswMjAwLCB3cm90ZToK
PiBJbnN0ZWFkIG9mIGEgTGludXgga2VybmVsIGJhc2VkIGltcGxlbWVudGF0aW9uIHVzZSBvbmUg
ZnJvbSBmcmVlQlNELgo+IAo+IEFzIGEgcmVzdWx0IHNvbWUgb2YgdGhlIHByaW50aW5ncyB3aWxs
IGNoYW5nZSBkdWUgdG8gbW9yZSBwb3NpeCBsaWtlCj4gYmVoYXZpb3Igb2YgJXAgZm9ybWF0IChv
bWl0dGluZyBsZWFkaW5nIHplcm9lcywgcHJlcGVuZGluZyAiMHgiKS4KPiAKPiBTaWduZWQtb2Zm
LWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CgpBY2tlZC1ieTogU2FtdWVsIFRo
aWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgoKPiAtLS0KPiBWMjogcmVtb3Zl
IGluY2x1ZGUvbGliLWdwbC5oIGFzIHJlcXVlc3RlZCBieSBTYW11ZWwgVGhpYmF1bHQKPiAtLS0K
PiAgYmxrZnJvbnQuYyAgICAgICAgfCAgICA0IC0KPiAgaW5jbHVkZS9saWItZ3BsLmggfCAgIDU5
IC0tCj4gIGluY2x1ZGUvbGliLmggICAgIHwgICAyNyArLQo+ICBsaWIvcHJpbnRmLmMgICAgICB8
IDE3NDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t
LS0KPiAgdHBtYmFjay5jICAgICAgICAgfCAgICA0IC0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMTE5
IGluc2VydGlvbnMoKyksIDcxOSBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGlu
Y2x1ZGUvbGliLWdwbC5oCj4gCj4gZGlmZiAtLWdpdCBhL2Jsa2Zyb250LmMgYi9ibGtmcm9udC5j
Cj4gaW5kZXggYmRiNzc2NS4uZjc0NzIxNiAxMDA2NDQKPiAtLS0gYS9ibGtmcm9udC5jCj4gKysr
IGIvYmxrZnJvbnQuYwo+IEBAIC0xNywxMCArMTcsNiBAQAo+ICAjaW5jbHVkZSA8bWluaS1vcy9s
aWIuaD4KPiAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4gIAo+IC0jaWZuZGVmIEhBVkVfTElCQwo+IC0j
ZGVmaW5lIHN0cnRvdWwgc2ltcGxlX3N0cnRvdWwKPiAtI2VuZGlmCj4gLQo+ICAvKiBOb3RlOiB3
ZSBnZW5lcmFsbHkgZG9uJ3QgbmVlZCB0byBkaXNhYmxlIElSUXMgc2luY2Ugd2UgaGFyZGx5IGRv
IGFueXRoaW5nIGluCj4gICAqIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gICovCj4gIAo+IGRpZmYg
LS1naXQgYS9pbmNsdWRlL2xpYi1ncGwuaCBiL2luY2x1ZGUvbGliLWdwbC5oCj4gZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggZDU2MDJiMi4uMDAwMDAwMAo+IC0tLSBhL2luY2x1ZGUv
bGliLWdwbC5oCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDU5ICswLDAgQEAKPiAtLyogLSotICBN
b2RlOkM7IGMtYmFzaWMtb2Zmc2V0OjQ7IHRhYi13aWR0aDo0IC0qLQo+IC0gKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgo+IC0gKiAoQykgMjAwMyAtIFJvbGYgTmV1Z2ViYXVlciAtIEludGVsIFJlc2VhcmNo
IENhbWJyaWRnZQo+IC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+IC0gKgo+IC0gKiAgICAgICAgRmls
ZTogbGliLmgKPiAtICogICAgICBBdXRob3I6IFJvbGYgTmV1Z2ViYXVlciAobmV1Z2ViYXJAZGNz
LmdsYS5hYy51aykKPiAtICogICAgIENoYW5nZXM6IAo+IC0gKiAgICAgICAgICAgICAgCj4gLSAq
ICAgICAgICBEYXRlOiBBdWcgMjAwMwo+IC0gKiAKPiAtICogRW52aXJvbm1lbnQ6IFhlbiBNaW5p
bWFsIE9TCj4gLSAqIERlc2NyaXB0aW9uOiBSYW5kb20gdXNlZnVsIGxpYnJhcnkgZnVuY3Rpb25z
LCBmcm9tIExpbnV4Jwo+IC0gKiBpbmNsdWRlL2xpbnV4L2tlcm5lbC5oCj4gLSAqCj4gLSAqICBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQo+IC0gKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiAtICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gLSAqICAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+IC0gKgo+IC0gKiAgVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgo+IC0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZQo+IC0gKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KPiAtICoKPiAtICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gLSAqICBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+IC0gKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKPiAtICovCj4gLQo+IC0jaWZuZGVmIF9MSUJfR1BMX0hfCj4gLSNkZWZp
bmUgX0xJQl9HUExfSF8KPiAtCj4gLSNpZm5kZWYgSEFWRV9MSUJDCj4gLS8qIHByaW50aW5nICov
Cj4gLWV4dGVybiB1bnNpZ25lZCBsb25nIHNpbXBsZV9zdHJ0b3VsKGNvbnN0IGNoYXIgKixjaGFy
ICoqLHVuc2lnbmVkIGludCk7Cj4gLWV4dGVybiBsb25nIHNpbXBsZV9zdHJ0b2woY29uc3QgY2hh
ciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKPiAtZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBz
aW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKPiAtZXh0
ZXJuIGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25l
ZCBpbnQpOwo+IC0KPiAtZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIg
KiBmbXQsIC4uLikKPiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsK
PiAtZXh0ZXJuIGludCB2c3ByaW50ZihjaGFyICpidWYsIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCkK
PiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMCkpKTsKPiAtZXh0ZXJuIGlu
dCBzbnByaW50ZihjaGFyICogYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqIGZtdCwgLi4u
KQo+IC0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwo+IC1leHRlcm4g
aW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZh
X2xpc3QgYXJncykKPiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgMCkpKTsK
PiAtZXh0ZXJuIGludCBzY25wcmludGYoY2hhciAqIGJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNo
YXIgKiBmbXQsIC4uLikKPiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkp
KTsKPiAtZXh0ZXJuIGludCB2c2NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0
IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQo+IC0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJp
bnRmLCAzLCAwKSkpOwo+IC1leHRlcm4gaW50IHNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgLi4uKQo+IC0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsIDIsIDMpKSk7Cj4g
LWV4dGVybiBpbnQgdnNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCkK
PiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLCAyLCAwKSkpOwo+IC0jZW5kaWYKPiAt
Cj4gLSNlbmRpZiAvKiBfTElCX0dQTF9IXyAqLwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi5o
IGIvaW5jbHVkZS9saWIuaAo+IGluZGV4IDYyODM2YzcuLjM5ZDZhMTggMTAwNjQ0Cj4gLS0tIGEv
aW5jbHVkZS9saWIuaAo+ICsrKyBiL2luY2x1ZGUvbGliLmgKPiBAQCAtNjYsMTEgKzY2LDYgQEAK
PiAgI2lmZGVmIEhBVkVfTElCQwo+ICAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+Cj4gICNpbmNsdWRl
IDxzdGRpby5oPgo+IC0jZWxzZQo+IC0jaW5jbHVkZSA8bGliLWdwbC5oPgo+IC0jZW5kaWYKPiAt
Cj4gLSNpZmRlZiBIQVZFX0xJQkMKPiAgI2luY2x1ZGUgPHN0cmluZy5oPgo+ICAjZWxzZQo+ICAv
KiBzdHJpbmcgYW5kIG1lbW9yeSBtYW5pcHVsYXRpb24gKi8KPiBAQCAtMTA3LDYgKzEwMiwyOCBA
QCBjaGFyICpzdHJyY2hyKGNvbnN0IGNoYXIgKnAsIGludCBjaCk7Cj4gIHZvaWQJKm1lbWNweSh2
b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IGxlbik7Cj4gIAo+ICBzaXplX3Qgc3Ry
bmxlbihjb25zdCBjaGFyICosIHNpemVfdCk7Cj4gKwo+ICt1bnNpZ25lZCBsb25nIHN0cnRvdWwo
Y29uc3QgY2hhciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpOwo+ICtpbnQ2NF90IHN0
cnRvcShjb25zdCBjaGFyICpucHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSk7Cj4gK3VpbnQ2
NF90IHN0cnRvdXEoY29uc3QgY2hhciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpOwo+
ICsKPiArZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIC4u
LikKPiArICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDIsIDMpKSk7Cj4g
K2V4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCj4g
KyAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAyLCAwKSkpOwo+ICtleHRl
cm4gaW50IHNucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICogZm10
LCAuLi4pCj4gKyAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkp
Owo+ICtleHRlcm4gaW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBj
aGFyICpmbXQsIHZhX2xpc3QgYXJncykKPiArICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0
IChwcmludGYsIDMsIDApKSk7Cj4gK2V4dGVybiBpbnQgc2NucHJpbnRmKGNoYXIgKiBidWYsIHNp
emVfdCBzaXplLCBjb25zdCBjaGFyICogZm10LCAuLi4pCj4gKyAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwo+ICtleHRlcm4gaW50IHZzY25wcmludGYoY2hh
ciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCj4gKyAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCAwKSkpOwo+ICtleHRlcm4g
aW50IHNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKQo+ICsgICAgICAgIF9f
YXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLCAyLCAzKSkpOwo+ICtleHRlcm4gaW50IHZzc2Nh
bmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCj4gKyAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsIDIsIDApKSk7Cj4gKwo+ICAjZW5kaWYKPiAgCj4gICNp
bmNsdWRlIDxtaW5pLW9zL2NvbnNvbGUuaD4KPiBkaWZmIC0tZ2l0IGEvbGliL3ByaW50Zi5jIGIv
bGliL3ByaW50Zi5jCj4gaW5kZXggNDBmOTJmYy4uZTQ4YWI2MSAxMDA2NDQKPiAtLS0gYS9saWIv
cHJpbnRmLmMKPiArKysgYi9saWIvcHJpbnRmLmMKPiBAQCAtMSw1MCArMSw1MyBAQAo+ICAvKgo+
ICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgo+IC0gKiAoQykgMjAwMyAtIFJvbGYgTmV1Z2ViYXVlciAt
IEludGVsIFJlc2VhcmNoIENhbWJyaWRnZQo+IC0gKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICAgKgo+
ICAgKiAgICAgICAgRmlsZTogcHJpbnRmLmMKPiAtICogICAgICBBdXRob3I6IFJvbGYgTmV1Z2Vi
YXVlciAobmV1Z2ViYXJAZGNzLmdsYS5hYy51aykKPiAtICogICAgIENoYW5nZXM6IEdyemVnb3J6
IE1pbG9zIChnbTI4MUBjYW0uYWMudWspIAo+ICsgKiAgICAgIEF1dGhvcjogSnVlcmdlbiBHcm9z
cyA8amdyb3NzQHN1c2UuY29tPgo+ICAgKgo+IC0gKiAgICAgICAgRGF0ZTogQXVnIDIwMDMsIEF1
ZyAyMDA1Cj4gKyAqICAgICAgICBEYXRlOiBKdW4gMjAxNgo+ICAgKgo+ICAgKiBFbnZpcm9ubWVu
dDogWGVuIE1pbmltYWwgT1MKPiAgICogRGVzY3JpcHRpb246IExpYnJhcnkgZnVuY3Rpb25zIGZv
ciBwcmludGluZwo+IC0gKiAgICAgICAgICAgICAgKExpbnV4IHBvcnQsIG1haW5seSBsaWIvdnNw
cmludGYuYykKPiArICogICAgICAgICAgICAgIChmcmVlQlNEIHBvcnQpCj4gICAqCj4gICAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCj4gICAqLwo+ICAKPiAtLyoKPiAtICogQ29weXJpZ2h0IChDKSAxOTkx
LCAxOTkyICBMaW51cyBUb3J2YWxkcwo+IC0gKi8KPiAtCj4gLS8qIHZzcHJpbnRmLmMgLS0gTGFy
cyBXaXJ6ZW5pdXMgJiBMaW51cyBUb3J2YWxkcy4gKi8KPiAtLyoKPiAtICogV2lyemVuaXVzIHdy
b3RlIHRoaXMgcG9ydGFibHksIFRvcnZhbGRzIGZ1Y2tlZCBpdCB1cCA6LSkKPiAtICovCj4gLQo+
IC0vKgo+IC0gKiBGcmkgSnVsIDEzIDIwMDEgQ3J1dGNoZXIgRHVubmF2YW50IDxjcnV0Y2hlcitr
ZXJuZWxAZGF0YXN0YWNrcy5jb20+Cj4gLSAqIC0gY2hhbmdlZCB0byBwcm92aWRlIHNucHJpbnRm
IGFuZCB2c25wcmludGYgZnVuY3Rpb25zCj4gLSAqIFNvIEZlYiAgMSAxNjo1MTozMiBDRVQgMjAw
NCBKdWVyZ2VuIFF1YWRlIDxxdWFkZUBoc25yLmRlPgo+IC0gKiAtIHNjbnByaW50ZiBhbmQgdnNj
bnByaW50Zgo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAxOTkwLCAxOTkzCj4gKyAqCVRoZSBS
ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgo+ICAgKgo+ICsgKiBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNvZnR3YXJlIGNvbnRy
aWJ1dGVkIHRvIEJlcmtlbGV5IGJ5Cj4gKyAqIENocmlzIFRvcmVrLgo+ICAgKgo+IC0gKiBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQo+IC0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+IC0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+IC0gKiAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIEZy
ZWVCU0QgRm91bmRhdGlvbgo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKiBQb3J0aW9u
cyBvZiB0aGlzIHNvZnR3YXJlIHdlcmUgZGV2ZWxvcGVkIGJ5IERhdmlkIENoaXNuYWxsCj4gKyAq
IHVuZGVyIHNwb25zb3JzaGlwIGZyb20gdGhlIEZyZWVCU0QgRm91bmRhdGlvbi4KPiAgICoKPiAt
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCj4gLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAtICogR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMKPiArICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCj4gKyAqICAgIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICAgKgo+IC0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+IC0gKiBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQo+IC0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4g
KyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gICAqLwo+ICAKPiAgI2lmICFkZWZp
bmVkIEhBVkVfTElCQwo+IEBAIC01Nyw0NDkgKzYwLDUyOSBAQAo+ICAjaW5jbHVkZSA8bWluaS1v
cy9jdHlwZS5oPgo+ICAjaW5jbHVkZSA8bWluaS1vcy9wb3NpeC9saW1pdHMuaD4KPiAgCj4gLS8q
Kgo+IC0gKiBzaW1wbGVfc3RydG91bCAtIGNvbnZlcnQgYSBzdHJpbmcgdG8gYW4gdW5zaWduZWQg
bG9uZwo+IC0gKiBAY3A6IFRoZSBzdGFydCBvZiB0aGUgc3RyaW5nCj4gLSAqIEBlbmRwOiBBIHBv
aW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUgcGFyc2VkIHN0cmluZyB3aWxsIGJlIHBsYWNlZCBoZXJl
Cj4gLSAqIEBiYXNlOiBUaGUgbnVtYmVyIGJhc2UgdG8gdXNlCj4gKyNkZWZpbmUgX19ERUNPTlNU
KHR5cGUsIHZhcikgICAgKCh0eXBlKSh1aW50cHRyX3QpKGNvbnN0IHZvaWQgKikodmFyKSkKPiAr
LyogNjQgYml0cyArIDAtQnl0ZSBhdCBlbmQgKi8KPiArI2RlZmluZSBNQVhOQlVGCTY1Cj4gKwo+
ICtzdGF0aWMgY2hhciBjb25zdCBoZXgyYXNjaWlfZGF0YVtdID0gIjAxMjM0NTY3ODlhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5eiI7Cj4gKy8qCj4gKyAqIFB1dCBhIE5VTC10ZXJtaW5hdGVkIEFT
Q0lJIG51bWJlciAoYmFzZSA8PSAzNikgaW4gYSBidWZmZXIgaW4gcmV2ZXJzZQo+ICsgKiBvcmRl
cjsgcmV0dXJuIGFuIG9wdGlvbmFsIGxlbmd0aCBhbmQgYSBwb2ludGVyIHRvIHRoZSBsYXN0IGNo
YXJhY3Rlcgo+ICsgKiB3cml0dGVuIGluIHRoZSBidWZmZXIgKGkuZS4sIHRoZSBmaXJzdCBjaGFy
YWN0ZXIgb2YgdGhlIHN0cmluZykuCj4gKyAqIFRoZSBidWZmZXIgcG9pbnRlZCB0byBieSBgbmJ1
ZicgbXVzdCBoYXZlIGxlbmd0aCA+PSBNQVhOQlVGLgo+ICAgKi8KPiAtdW5zaWduZWQgbG9uZyBz
aW1wbGVfc3RydG91bChjb25zdCBjaGFyICpjcCxjaGFyICoqZW5kcCx1bnNpZ25lZCBpbnQgYmFz
ZSkKPiArc3RhdGljIGNoYXIgKgo+ICtrc3ByaW50bihjaGFyICpuYnVmLCB1aW50bWF4X3QgbnVt
LCBpbnQgYmFzZSwgaW50ICpsZW5wLCBpbnQgdXBwZXIpCj4gIHsKPiAtICAgIHVuc2lnbmVkIGxv
bmcgcmVzdWx0ID0gMCx2YWx1ZTsKPiAtCj4gLSAgICBpZiAoIWJhc2UpIHsKPiAtICAgICAgICBi
YXNlID0gMTA7Cj4gLSAgICAgICAgaWYgKCpjcCA9PSAnMCcpIHsKPiAtICAgICAgICAgICAgYmFz
ZSA9IDg7Cj4gLSAgICAgICAgICAgIGNwKys7Cj4gLSAgICAgICAgICAgIGlmICgoKmNwID09ICd4
JykgJiYgaXN4ZGlnaXQoY3BbMV0pKSB7Cj4gLSAgICAgICAgICAgICAgICBjcCsrOwo+IC0gICAg
ICAgICAgICAgICAgYmFzZSA9IDE2Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+IC0g
ICAgfQo+IC0gICAgd2hpbGUgKGlzeGRpZ2l0KCpjcCkgJiYKPiAtICAgICAgICAgICAodmFsdWUg
PSBpc2RpZ2l0KCpjcCkgPyAqY3AtJzAnIDogdG91cHBlcigqY3ApLSdBJysxMCkgPCBiYXNlKSB7
Cj4gLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0KmJhc2UgKyB2YWx1ZTsKPiAtICAgICAgICBjcCsr
Owo+IC0gICAgfQo+IC0gICAgaWYgKGVuZHApCj4gLSAgICAgICAgKmVuZHAgPSAoY2hhciAqKWNw
Owo+IC0gICAgcmV0dXJuIHJlc3VsdDsKPiAtfQo+IC0KPiAtLyoqCj4gLSAqIHNpbXBsZV9zdHJ0
b2wgLSBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgc2lnbmVkIGxvbmcKPiAtICogQGNwOiBUaGUgc3Rh
cnQgb2YgdGhlIHN0cmluZwo+IC0gKiBAZW5kcDogQSBwb2ludGVyIHRvIHRoZSBlbmQgb2YgdGhl
IHBhcnNlZCBzdHJpbmcgd2lsbCBiZSBwbGFjZWQgaGVyZQo+IC0gKiBAYmFzZTogVGhlIG51bWJl
ciBiYXNlIHRvIHVzZQo+IC0gKi8KPiAtbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKmNw
LGNoYXIgKiplbmRwLHVuc2lnbmVkIGludCBiYXNlKQo+IC17Cj4gLSAgICBpZigqY3A9PSctJykK
PiAtICAgICAgICByZXR1cm4gLXNpbXBsZV9zdHJ0b3VsKGNwKzEsZW5kcCxiYXNlKTsKPiAtICAg
IHJldHVybiBzaW1wbGVfc3RydG91bChjcCxlbmRwLGJhc2UpOwo+ICsJY2hhciAqcCwgYzsKPiAr
Cj4gKwlwID0gbmJ1ZjsKPiArCSpwID0gJ1wwJzsKPiArCWRvIHsKPiArCQljID0gaGV4MmFzY2lp
X2RhdGFbbnVtICUgYmFzZV07Cj4gKwkJKisrcCA9IHVwcGVyID8gdG91cHBlcihjKSA6IGM7Cj4g
Kwl9IHdoaWxlIChudW0gLz0gYmFzZSk7Cj4gKwlpZiAobGVucCkKPiArCQkqbGVucCA9IHAgLSBu
YnVmOwo+ICsJcmV0dXJuIChwKTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAqIHNpbXBsZV9zdHJ0b3Vs
bCAtIGNvbnZlcnQgYSBzdHJpbmcgdG8gYW4gdW5zaWduZWQgbG9uZyBsb25nCj4gLSAqIEBjcDog
VGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcKPiAtICogQGVuZHA6IEEgcG9pbnRlciB0byB0aGUgZW5k
IG9mIHRoZSBwYXJzZWQgc3RyaW5nIHdpbGwgYmUgcGxhY2VkIGhlcmUKPiAtICogQGJhc2U6IFRo
ZSBudW1iZXIgYmFzZSB0byB1c2UKPiArLyoKPiArICogQ29udmVydCBhIHN0cmluZyB0byBhbiB1
bnNpZ25lZCBsb25nIGludGVnZXIuCj4gKyAqCj4gKyAqIElnbm9yZXMgYGxvY2FsZScgc3R1ZmYu
ICBBc3N1bWVzIHRoYXQgdGhlIHVwcGVyIGFuZCBsb3dlciBjYXNlCj4gKyAqIGFscGhhYmV0cyBh
bmQgZGlnaXRzIGFyZSBlYWNoIGNvbnRpZ3VvdXMuCj4gICAqLwo+IC11bnNpZ25lZCBsb25nIGxv
bmcgc2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKmNwLGNoYXIgKiplbmRwLHVuc2lnbmVkIGlu
dCBiYXNlKQo+ICt1bnNpZ25lZCBsb25nCj4gK3N0cnRvdWwoY29uc3QgY2hhciAqbnB0ciwgY2hh
ciAqKmVuZHB0ciwgaW50IGJhc2UpCj4gIHsKPiAtICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1
bHQgPSAwLHZhbHVlOwo+IC0KPiAtICAgIGlmICghYmFzZSkgewo+IC0gICAgICAgIGJhc2UgPSAx
MDsKPiAtICAgICAgICBpZiAoKmNwID09ICcwJykgewo+IC0gICAgICAgICAgICBiYXNlID0gODsK
PiAtICAgICAgICAgICAgY3ArKzsKPiAtICAgICAgICAgICAgaWYgKCgqY3AgPT0gJ3gnKSAmJiBp
c3hkaWdpdChjcFsxXSkpIHsKPiAtICAgICAgICAgICAgICAgIGNwKys7Cj4gKyAgICAgICAgY29u
c3QgY2hhciAqcyA9IG5wdHI7Cj4gKyAgICAgICAgdW5zaWduZWQgbG9uZyBhY2M7Cj4gKyAgICAg
ICAgdW5zaWduZWQgY2hhciBjOwo+ICsgICAgICAgIHVuc2lnbmVkIGxvbmcgY3V0b2ZmOwo+ICsg
ICAgICAgIGludCBuZWcgPSAwLCBhbnksIGN1dGxpbTsKPiArCj4gKyAgICAgICAgLyoKPiArICAg
ICAgICAgKiBTZWUgc3RydG9sIGZvciBjb21tZW50cyBhcyB0byB0aGUgbG9naWMgdXNlZC4KPiAr
ICAgICAgICAgKi8KPiArICAgICAgICBkbyB7Cj4gKyAgICAgICAgICAgICAgICBjID0gKnMrKzsK
PiArICAgICAgICB9IHdoaWxlIChpc3NwYWNlKGMpKTsKPiArICAgICAgICBpZiAoYyA9PSAnLScp
IHsKPiArICAgICAgICAgICAgICAgIG5lZyA9IDE7Cj4gKyAgICAgICAgICAgICAgICBjID0gKnMr
KzsKPiArICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJysnKQo+ICsgICAgICAgICAgICAgICAgYyA9
ICpzKys7Cj4gKyAgICAgICAgaWYgKChiYXNlID09IDAgfHwgYmFzZSA9PSAxNikgJiYKPiArICAg
ICAgICAgICAgYyA9PSAnMCcgJiYgKCpzID09ICd4JyB8fCAqcyA9PSAnWCcpKSB7Cj4gKyAgICAg
ICAgICAgICAgICBjID0gc1sxXTsKPiArICAgICAgICAgICAgICAgIHMgKz0gMjsKPiAgICAgICAg
ICAgICAgICAgIGJhc2UgPSAxNjsKPiAtICAgICAgICAgICAgfQo+ICAgICAgICAgIH0KPiAtICAg
IH0KPiAtICAgIHdoaWxlIChpc3hkaWdpdCgqY3ApICYmICh2YWx1ZSA9IGlzZGlnaXQoKmNwKSA/
ICpjcC0nMCcgOiAoaXNsb3dlcigqY3ApCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdG91cHBlcigqY3ApIDogKmNwKS0n
QScrMTApIDwgYmFzZSkgewo+IC0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCpiYXNlICsgdmFsdWU7
Cj4gLSAgICAgICAgY3ArKzsKPiAtICAgIH0KPiAtICAgIGlmIChlbmRwKQo+IC0gICAgICAgICpl
bmRwID0gKGNoYXIgKiljcDsKPiAtICAgIHJldHVybiByZXN1bHQ7Cj4gKyAgICAgICAgaWYgKGJh
c2UgPT0gMCkKPiArICAgICAgICAgICAgICAgIGJhc2UgPSBjID09ICcwJyA/IDggOiAxMDsKPiAr
ICAgICAgICBjdXRvZmYgPSAodW5zaWduZWQgbG9uZylVTE9OR19NQVggLyAodW5zaWduZWQgbG9u
ZyliYXNlOwo+ICsgICAgICAgIGN1dGxpbSA9ICh1bnNpZ25lZCBsb25nKVVMT05HX01BWCAlICh1
bnNpZ25lZCBsb25nKWJhc2U7Cj4gKyAgICAgICAgZm9yIChhY2MgPSAwLCBhbnkgPSAwOzsgYyA9
ICpzKyspIHsKPiArICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkK
PiArICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7Cj4gKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChpc2FscGhhKGMpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjIC09IGlzdXBw
ZXIoYykgPyAnQScgLSAxMCA6ICdhJyAtIDEwOwo+ICsgICAgICAgICAgICAgICAgZWxzZQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIGlmIChjID49
IGJhc2UpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAg
ICAgaWYgKGFueSA8IDAgfHwgYWNjID4gY3V0b2ZmIHx8IChhY2MgPT0gY3V0b2ZmICYmIGMgPiBj
dXRsaW0pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAtMTsKPiArICAgICAgICAg
ICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAxOwo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICBhY2MgKj0gYmFzZTsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjICs9IGM7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgICAg
IGlmIChhbnkgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgICBhY2MgPSBVTE9OR19NQVg7Cj4gKyAg
ICAgICAgfSBlbHNlIGlmIChuZWcpCj4gKyAgICAgICAgICAgICAgICBhY2MgPSAtYWNjOwo+ICsg
ICAgICAgIGlmIChlbmRwdHIgIT0gMCkKPiArICAgICAgICAgICAgICAgICplbmRwdHIgPSBfX0RF
Q09OU1QoY2hhciAqLCBhbnkgPyBzIC0gMSA6IG5wdHIpOwo+ICsgICAgICAgIHJldHVybiAoYWNj
KTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAqIHNpbXBsZV9zdHJ0b2xsIC0gY29udmVydCBhIHN0cmlu
ZyB0byBhIHNpZ25lZCBsb25nIGxvbmcKPiAtICogQGNwOiBUaGUgc3RhcnQgb2YgdGhlIHN0cmlu
Zwo+IC0gKiBAZW5kcDogQSBwb2ludGVyIHRvIHRoZSBlbmQgb2YgdGhlIHBhcnNlZCBzdHJpbmcg
d2lsbCBiZSBwbGFjZWQgaGVyZQo+IC0gKiBAYmFzZTogVGhlIG51bWJlciBiYXNlIHRvIHVzZQo+
ICsvKgo+ICsgKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgcXVhZCBpbnRlZ2VyLgo+ICsgKgo+ICsg
KiBJZ25vcmVzIGBsb2NhbGUnIHN0dWZmLiAgQXNzdW1lcyB0aGF0IHRoZSB1cHBlciBhbmQgbG93
ZXIgY2FzZQo+ICsgKiBhbHBoYWJldHMgYW5kIGRpZ2l0cyBhcmUgZWFjaCBjb250aWd1b3VzLgo+
ICAgKi8KPiAtbG9uZyBsb25nIHNpbXBsZV9zdHJ0b2xsKGNvbnN0IGNoYXIgKmNwLGNoYXIgKipl
bmRwLHVuc2lnbmVkIGludCBiYXNlKQo+IC17Cj4gLSAgICBpZigqY3A9PSctJykKPiAtICAgICAg
ICByZXR1cm4gLXNpbXBsZV9zdHJ0b3VsbChjcCsxLGVuZHAsYmFzZSk7Cj4gLSAgICByZXR1cm4g
c2ltcGxlX3N0cnRvdWxsKGNwLGVuZHAsYmFzZSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgc2tp
cF9hdG9pKGNvbnN0IGNoYXIgKipzKQo+IC17Cj4gLSAgICBpbnQgaT0wOwo+IC0KPiAtICAgIHdo
aWxlIChpc2RpZ2l0KCoqcykpCj4gLSAgICAgICAgaSA9IGkqMTAgKyAqKCgqcykrKykgLSAnMCc7
Cj4gLSAgICByZXR1cm4gaTsKPiAtfQo+IC0KPiAtI2RlZmluZSBaRVJPUEFEIDEgICAgICAgICAg
ICAgICAvKiBwYWQgd2l0aCB6ZXJvICovCj4gLSNkZWZpbmUgU0lHTiAgICAyICAgICAgICAgICAg
ICAgLyogdW5zaWduZWQvc2lnbmVkIGxvbmcgKi8KPiAtI2RlZmluZSBQTFVTICAgIDQgICAgICAg
ICAgICAgICAvKiBzaG93IHBsdXMgKi8KPiAtI2RlZmluZSBTUEFDRSAgIDggICAgICAgICAgICAg
ICAvKiBzcGFjZSBpZiBwbHVzICovCj4gLSNkZWZpbmUgTEVGVCAgICAxNiAgICAgICAgICAgICAg
LyogbGVmdCBqdXN0aWZpZWQgKi8KPiAtI2RlZmluZSBTUEVDSUFMIDMyICAgICAgICAgICAgICAv
KiAweCAqLwo+IC0jZGVmaW5lIExBUkdFICAgNjQgICAgICAgICAgICAgIC8qIHVzZSAnQUJDREVG
JyBpbnN0ZWFkIG9mICdhYmNkZWYnICovCj4gLQo+IC1zdGF0aWMgY2hhciAqIG51bWJlcihjaGFy
ICogYnVmLCBjaGFyICogZW5kLCBsb25nIGxvbmcgbnVtLCBpbnQgYmFzZSwgaW50IHNpemUsIGlu
dCBwcmVjaXNpb24sIGludCB0eXBlKQo+ICtpbnQ2NF90Cj4gK3N0cnRvcShjb25zdCBjaGFyICpu
cHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSkKPiAgewo+IC0gICAgY2hhciBjLHNpZ24sdG1w
WzY2XTsKPiAtICAgIGNvbnN0IGNoYXIgKmRpZ2l0czsKPiAtICAgIGNvbnN0IGNoYXIgc21hbGxf
ZGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKPiAtICAg
IGNvbnN0IGNoYXIgbGFyZ2VfZGlnaXRzW10gPSAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaIjsKPiAtICAgIGludCBpOwo+IC0KPiAtICAgIGRpZ2l0cyA9ICh0eXBlICYgTEFS
R0UpID8gbGFyZ2VfZGlnaXRzIDogc21hbGxfZGlnaXRzOwo+IC0gICAgaWYgKHR5cGUgJiBMRUZU
KQo+IC0gICAgICAgIHR5cGUgJj0gflpFUk9QQUQ7Cj4gLSAgICBpZiAoYmFzZSA8IDIgfHwgYmFz
ZSA+IDM2KQo+IC0gICAgICAgIHJldHVybiBidWY7Cj4gLSAgICBjID0gKHR5cGUgJiBaRVJPUEFE
KSA/ICcwJyA6ICcgJzsKPiAtICAgIHNpZ24gPSAwOwo+IC0gICAgaWYgKHR5cGUgJiBTSUdOKSB7
Cj4gLSAgICAgICAgaWYgKG51bSA8IDApIHsKPiAtICAgICAgICAgICAgc2lnbiA9ICctJzsKPiAt
ICAgICAgICAgICAgbnVtID0gLW51bTsKPiAtICAgICAgICAgICAgc2l6ZS0tOwo+IC0gICAgICAg
IH0gZWxzZSBpZiAodHlwZSAmIFBMVVMpIHsKPiAtICAgICAgICAgICAgc2lnbiA9ICcrJzsKPiAt
ICAgICAgICAgICAgc2l6ZS0tOwo+IC0gICAgICAgIH0gZWxzZSBpZiAodHlwZSAmIFNQQUNFKSB7
Cj4gLSAgICAgICAgICAgIHNpZ24gPSAnICc7Cj4gLSAgICAgICAgICAgIHNpemUtLTsKPiAtICAg
ICAgICB9Cj4gLSAgICB9Cj4gLSAgICBpZiAodHlwZSAmIFNQRUNJQUwpIHsKPiAtICAgICAgICBp
ZiAoYmFzZSA9PSAxNikKPiAtICAgICAgICAgICAgc2l6ZSAtPSAyOwo+IC0gICAgICAgIGVsc2Ug
aWYgKGJhc2UgPT0gOCkKPiAtICAgICAgICAgICAgc2l6ZS0tOwo+IC0gICAgfQo+IC0gICAgaSA9
IDA7Cj4gLSAgICBpZiAobnVtID09IDApCj4gLSAgICAgICAgdG1wW2krK109JzAnOwo+IC0gICAg
ZWxzZSAKPiAtICAgIHsKPiAtICAgICAgICAvKiBYWFggS0FGOiBmb3JjZSB1bnNpZ25lZCBtb2Qg
YW5kIGRpdi4gKi8KPiAtICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbnVtMj0odW5zaWduZWQg
bG9uZyBsb25nKW51bTsKPiAtICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZTI9KHVuc2lnbmVkIGlu
dCliYXNlOwo+IC0gICAgICAgIHdoaWxlIChudW0yICE9IDApIHsgdG1wW2krK10gPSBkaWdpdHNb
bnVtMiViYXNlMl07IG51bTIgLz0gYmFzZTI7IH0KPiAtICAgIH0KPiAtICAgIGlmIChpID4gcHJl
Y2lzaW9uKQo+IC0gICAgICAgIHByZWNpc2lvbiA9IGk7Cj4gLSAgICBzaXplIC09IHByZWNpc2lv
bjsKPiAtICAgIGlmICghKHR5cGUmKFpFUk9QQUQrTEVGVCkpKSB7Cj4gLSAgICAgICAgd2hpbGUo
c2l6ZS0tPjApIHsKPiAtICAgICAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCj4gLSAgICAgICAgICAg
ICAgICAqYnVmID0gJyAnOwo+IC0gICAgICAgICAgICArK2J1ZjsKPiArICAgICAgICBjb25zdCBj
aGFyICpzOwo+ICsgICAgICAgIHVpbnQ2NF90IGFjYzsKPiArICAgICAgICB1bnNpZ25lZCBjaGFy
IGM7Cj4gKyAgICAgICAgdWludDY0X3QgcWJhc2UsIGN1dG9mZjsKPiArICAgICAgICBpbnQgbmVn
LCBhbnksIGN1dGxpbTsKPiArCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBTa2lwIHdoaXRl
IHNwYWNlIGFuZCBwaWNrIHVwIGxlYWRpbmcgKy8tIHNpZ24gaWYgYW55Lgo+ICsgICAgICAgICAq
IElmIGJhc2UgaXMgMCwgYWxsb3cgMHggZm9yIGhleCBhbmQgMCBmb3Igb2N0YWwsIGVsc2UKPiAr
ICAgICAgICAgKiBhc3N1bWUgZGVjaW1hbDsgaWYgYmFzZSBpcyBhbHJlYWR5IDE2LCBhbGxvdyAw
eC4KPiArICAgICAgICAgKi8KPiArICAgICAgICBzID0gbnB0cjsKPiArICAgICAgICBkbyB7Cj4g
KyAgICAgICAgICAgICAgICBjID0gKnMrKzsKPiArICAgICAgICB9IHdoaWxlIChpc3NwYWNlKGMp
KTsKPiArICAgICAgICBpZiAoYyA9PSAnLScpIHsKPiArICAgICAgICAgICAgICAgIG5lZyA9IDE7
Cj4gKyAgICAgICAgICAgICAgICBjID0gKnMrKzsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAg
ICAgICAgICAgICAgbmVnID0gMDsKPiArICAgICAgICAgICAgICAgIGlmIChjID09ICcrJykKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpzKys7Cj4gICAgICAgICAgfQo+IC0gICAgfQo+
IC0gICAgaWYgKHNpZ24pIHsKPiAtICAgICAgICBpZiAoYnVmIDw9IGVuZCkKPiAtICAgICAgICAg
ICAgKmJ1ZiA9IHNpZ247Cj4gLSAgICAgICAgKytidWY7Cj4gLSAgICB9Cj4gLSAgICBpZiAodHlw
ZSAmIFNQRUNJQUwpIHsKPiAtICAgICAgICBpZiAoYmFzZT09OCkgewo+IC0gICAgICAgICAgICBp
ZiAoYnVmIDw9IGVuZCkKPiAtICAgICAgICAgICAgICAgICpidWYgPSAnMCc7Cj4gLSAgICAgICAg
ICAgICsrYnVmOwo+IC0gICAgICAgIH0gZWxzZSBpZiAoYmFzZT09MTYpIHsKPiAtICAgICAgICAg
ICAgaWYgKGJ1ZiA8PSBlbmQpCj4gLSAgICAgICAgICAgICAgICAqYnVmID0gJzAnOwo+IC0gICAg
ICAgICAgICArK2J1ZjsKPiAtICAgICAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCj4gLSAgICAgICAg
ICAgICAgICAqYnVmID0gZGlnaXRzWzMzXTsKPiAtICAgICAgICAgICAgKytidWY7Cj4gKyAgICAg
ICAgaWYgKChiYXNlID09IDAgfHwgYmFzZSA9PSAxNikgJiYKPiArICAgICAgICAgICAgYyA9PSAn
MCcgJiYgKCpzID09ICd4JyB8fCAqcyA9PSAnWCcpKSB7Cj4gKyAgICAgICAgICAgICAgICBjID0g
c1sxXTsKPiArICAgICAgICAgICAgICAgIHMgKz0gMjsKPiArICAgICAgICAgICAgICAgIGJhc2Ug
PSAxNjsKPiAgICAgICAgICB9Cj4gLSAgICB9Cj4gLSAgICBpZiAoISh0eXBlICYgTEVGVCkpIHsK
PiAtICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewo+IC0gICAgICAgICAgICBpZiAoYnVmIDw9
IGVuZCkKPiAtICAgICAgICAgICAgICAgICpidWYgPSBjOwo+IC0gICAgICAgICAgICArK2J1ZjsK
PiArICAgICAgICBpZiAoYmFzZSA9PSAwKQo+ICsgICAgICAgICAgICAgICAgYmFzZSA9IGMgPT0g
JzAnID8gOCA6IDEwOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIENvbXB1dGUgdGhl
IGN1dG9mZiB2YWx1ZSBiZXR3ZWVuIGxlZ2FsIG51bWJlcnMgYW5kIGlsbGVnYWwKPiArICAgICAg
ICAgKiBudW1iZXJzLiAgVGhhdCBpcyB0aGUgbGFyZ2VzdCBsZWdhbCB2YWx1ZSwgZGl2aWRlZCBi
eSB0aGUKPiArICAgICAgICAgKiBiYXNlLiAgQW4gaW5wdXQgbnVtYmVyIHRoYXQgaXMgZ3JlYXRl
ciB0aGFuIHRoaXMgdmFsdWUsIGlmCj4gKyAgICAgICAgICogZm9sbG93ZWQgYnkgYSBsZWdhbCBp
bnB1dCBjaGFyYWN0ZXIsIGlzIHRvbyBiaWcuICBPbmUgdGhhdAo+ICsgICAgICAgICAqIGlzIGVx
dWFsIHRvIHRoaXMgdmFsdWUgbWF5IGJlIHZhbGlkIG9yIG5vdDsgdGhlIGxpbWl0Cj4gKyAgICAg
ICAgICogYmV0d2VlbiB2YWxpZCBhbmQgaW52YWxpZCBudW1iZXJzIGlzIHRoZW4gYmFzZWQgb24g
dGhlIGxhc3QKPiArICAgICAgICAgKiBkaWdpdC4gIEZvciBpbnN0YW5jZSwgaWYgdGhlIHJhbmdl
IGZvciBxdWFkcyBpcwo+ICsgICAgICAgICAqIFstOTIyMzM3MjAzNjg1NDc3NTgwOC4uOTIyMzM3
MjAzNjg1NDc3NTgwN10gYW5kIHRoZSBpbnB1dCBiYXNlCj4gKyAgICAgICAgICogaXMgMTAsIGN1
dG9mZiB3aWxsIGJlIHNldCB0byA5MjIzMzcyMDM2ODU0Nzc1ODAgYW5kIGN1dGxpbSB0bwo+ICsg
ICAgICAgICAqIGVpdGhlciA3IChuZWc9PTApIG9yIDggKG5lZz09MSksIG1lYW5pbmcgdGhhdCBp
ZiB3ZSBoYXZlCj4gKyAgICAgICAgICogYWNjdW11bGF0ZWQgYSB2YWx1ZSA+IDkyMjMzNzIwMzY4
NTQ3NzU4MCwgb3IgZXF1YWwgYnV0IHRoZQo+ICsgICAgICAgICAqIG5leHQgZGlnaXQgaXMgPiA3
IChvciA4KSwgdGhlIG51bWJlciBpcyB0b28gYmlnLCBhbmQgd2Ugd2lsbAo+ICsgICAgICAgICAq
IHJldHVybiBhIHJhbmdlIGVycm9yLgo+ICsgICAgICAgICAqCj4gKyAgICAgICAgICogU2V0IGFu
eSBpZiBhbnkgYGRpZ2l0cycgY29uc3VtZWQ7IG1ha2UgaXQgbmVnYXRpdmUgdG8gaW5kaWNhdGUK
PiArICAgICAgICAgKiBvdmVyZmxvdy4KPiArICAgICAgICAgKi8KPiArICAgICAgICBxYmFzZSA9
ICh1bnNpZ25lZCliYXNlOwo+ICsgICAgICAgIGN1dG9mZiA9IG5lZyA/ICh1aW50NjRfdCktKExM
T05HX01JTiArIExMT05HX01BWCkgKyBMTE9OR19NQVggOiBMTE9OR19NQVg7Cj4gKyAgICAgICAg
Y3V0bGltID0gY3V0b2ZmICUgcWJhc2U7Cj4gKyAgICAgICAgY3V0b2ZmIC89IHFiYXNlOwo+ICsg
ICAgICAgIGZvciAoYWNjID0gMCwgYW55ID0gMDs7IGMgPSAqcysrKSB7Cj4gKyAgICAgICAgICAg
ICAgICBpZiAoIWlzYXNjaWkoYykpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+
ICsgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIGMgLT0gJzAnOwo+ICsgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNhbHBoYShjKSkKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSBpc3VwcGVyKGMpID8gJ0EnIC0gMTAgOiAnYScg
LSAxMDsKPiArICAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBpZiAoYyA+PSBiYXNlKQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIGlmIChhbnkgPCAwIHx8IGFjYyA+
IGN1dG9mZiB8fCAoYWNjID09IGN1dG9mZiAmJiBjID4gY3V0bGltKSkKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgYW55ID0gLTE7Cj4gKyAgICAgICAgICAgICAgICBlbHNlIHsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgYW55ID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYWNj
ICo9IHFiYXNlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhY2MgKz0gYzsKPiArICAgICAg
ICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4gLSAgICB9Cj4gLSAgICB3aGlsZSAoaSA8IHByZWNp
c2lvbi0tKSB7Cj4gLSAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCj4gLSAgICAgICAgICAgICpidWYg
PSAnMCc7Cj4gLSAgICAgICAgKytidWY7Cj4gLSAgICB9Cj4gLSAgICB3aGlsZSAoaS0tID4gMCkg
ewo+IC0gICAgICAgIGlmIChidWYgPD0gZW5kKQo+IC0gICAgICAgICAgICAqYnVmID0gdG1wW2ld
Owo+IC0gICAgICAgICsrYnVmOwo+IC0gICAgfQo+IC0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsK
PiAtICAgICAgICBpZiAoYnVmIDw9IGVuZCkKPiAtICAgICAgICAgICAgKmJ1ZiA9ICcgJzsKPiAt
ICAgICAgICArK2J1ZjsKPiAtICAgIH0KPiAtICAgIHJldHVybiBidWY7Cj4gKyAgICAgICAgaWYg
KGFueSA8IDApIHsKPiArICAgICAgICAgICAgICAgIGFjYyA9IG5lZyA/IExMT05HX01JTiA6IExM
T05HX01BWDsKPiArICAgICAgICB9IGVsc2UgaWYgKG5lZykKPiArICAgICAgICAgICAgICAgIGFj
YyA9IC1hY2M7Cj4gKyAgICAgICAgaWYgKGVuZHB0ciAhPSAwKQo+ICsgICAgICAgICAgICAgICAg
KmVuZHB0ciA9IF9fREVDT05TVChjaGFyICosIGFueSA/IHMgLSAxIDogbnB0cik7Cj4gKyAgICAg
ICAgcmV0dXJuIChhY2MpOwo+ICB9Cj4gIAo+IC0vKioKPiAtKiB2c25wcmludGYgLSBGb3JtYXQg
YSBzdHJpbmcgYW5kIHBsYWNlIGl0IGluIGEgYnVmZmVyCj4gLSogQGJ1ZjogVGhlIGJ1ZmZlciB0
byBwbGFjZSB0aGUgcmVzdWx0IGludG8KPiAtKiBAc2l6ZTogVGhlIHNpemUgb2YgdGhlIGJ1ZmZl
ciwgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBudWxsIHNwYWNlCj4gLSogQGZtdDogVGhlIGZvcm1h
dCBzdHJpbmcgdG8gdXNlCj4gLSogQGFyZ3M6IEFyZ3VtZW50cyBmb3IgdGhlIGZvcm1hdCBzdHJp
bmcKPiAtKgo+IC0qIENhbGwgdGhpcyBmdW5jdGlvbiBpZiB5b3UgYXJlIGFscmVhZHkgZGVhbGlu
ZyB3aXRoIGEgdmFfbGlzdC4KPiAtKiBZb3UgcHJvYmFibHkgd2FudCBzbnByaW50ZiBpbnN0ZWFk
Lgo+ICsvKgo+ICsgKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIHVuc2lnbmVkIHF1YWQgaW50ZWdl
ci4KPiArICoKPiArICogSWdub3JlcyBgbG9jYWxlJyBzdHVmZi4gIEFzc3VtZXMgdGhhdCB0aGUg
dXBwZXIgYW5kIGxvd2VyIGNhc2UKPiArICogYWxwaGFiZXRzIGFuZCBkaWdpdHMgYXJlIGVhY2gg
Y29udGlndW91cy4KPiAgICovCj4gLWludCB2c25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6
ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCj4gK3VpbnQ2NF90Cj4gK3N0cnRvdXEo
Y29uc3QgY2hhciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpCj4gIHsKPiAtICAgIGlu
dCBsZW47Cj4gLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbnVtOwo+IC0gICAgaW50IGksIGJhc2U7
Cj4gLSAgICBjaGFyICpzdHIsICplbmQsIGM7Cj4gLSAgICBjb25zdCBjaGFyICpzOwo+IC0KPiAt
ICAgIGludCBmbGFnczsgICAgICAgICAgLyogZmxhZ3MgdG8gbnVtYmVyKCkgKi8KPiAtCj4gLSAg
ICBpbnQgZmllbGRfd2lkdGg7ICAgIC8qIHdpZHRoIG9mIG91dHB1dCBmaWVsZCAqLwo+IC0gICAg
aW50IHByZWNpc2lvbjsgICAgICAgICAgICAgIC8qIG1pbi4gIyBvZiBkaWdpdHMgZm9yIGludGVn
ZXJzOyBtYXgKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Yg
Y2hhcnMgZm9yIGZyb20gc3RyaW5nICovCj4gLSAgICBpbnQgcXVhbGlmaWVyOyAgICAgICAgICAg
ICAgLyogJ2gnLCAnbCcsIG9yICdMJyBmb3IgaW50ZWdlciBmaWVsZHMgKi8KPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiAneicgc3VwcG9ydCBhZGRlZCAyMy83LzE5OTkgUy5I
LiAgICAqLwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICd6JyBjaGFuZ2Vk
IHRvICdaJyAtLWRhdmlkbSAxLzI1Lzk5ICovCj4gLQo+IC0gICAgc3RyID0gYnVmOwo+IC0gICAg
ZW5kID0gYnVmICsgc2l6ZSAtIDE7Cj4gLQo+IC0gICAgaWYgKGVuZCA8IGJ1ZiAtIDEpIHsKPiAt
ICAgICAgICBlbmQgPSAoKHZvaWQgKikgLTEpOwo+IC0gICAgICAgIHNpemUgPSBlbmQgLSBidWYg
KyAxOwo+IC0gICAgfQo+IC0KPiAtICAgIGZvciAoOyAqZm10IDsgKytmbXQpIHsKPiAtICAgICAg
ICBpZiAoKmZtdCAhPSAnJScpIHsKPiAtICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCj4gLSAg
ICAgICAgICAgICAgICAqc3RyID0gKmZtdDsKPiAtICAgICAgICAgICAgKytzdHI7Cj4gLSAgICAg
ICAgICAgIGNvbnRpbnVlOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgICAgLyogcHJvY2VzcyBm
bGFncyAqLwo+IC0gICAgICAgIGZsYWdzID0gMDsKPiAtICAgIHJlcGVhdDoKPiAtICAgICAgICAr
K2ZtdDsgICAgICAgICAgLyogdGhpcyBhbHNvIHNraXBzIGZpcnN0ICclJyAqLwo+IC0gICAgICAg
IHN3aXRjaCAoKmZtdCkgewo+IC0gICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBMRUZUOyBnb3Rv
IHJlcGVhdDsKPiAtICAgICAgICBjYXNlICcrJzogZmxhZ3MgfD0gUExVUzsgZ290byByZXBlYXQ7
Cj4gLSAgICAgICAgY2FzZSAnICc6IGZsYWdzIHw9IFNQQUNFOyBnb3RvIHJlcGVhdDsKPiAtICAg
ICAgICBjYXNlICcjJzogZmxhZ3MgfD0gU1BFQ0lBTDsgZ290byByZXBlYXQ7Cj4gLSAgICAgICAg
Y2FzZSAnMCc6IGZsYWdzIHw9IFpFUk9QQUQ7IGdvdG8gcmVwZWF0Owo+IC0gICAgICAgIH0KPiAt
Cj4gLSAgICAgICAgLyogZ2V0IGZpZWxkIHdpZHRoICovCj4gLSAgICAgICAgZmllbGRfd2lkdGgg
PSAtMTsKPiAtICAgICAgICBpZiAoaXNkaWdpdCgqZm10KSkKPiAtICAgICAgICAgICAgZmllbGRf
d2lkdGggPSBza2lwX2F0b2koJmZtdCk7Cj4gLSAgICAgICAgZWxzZSBpZiAoKmZtdCA9PSAnKicp
IHsKPiAtICAgICAgICAgICAgKytmbXQ7Cj4gLSAgICAgICAgICAgIC8qIGl0J3MgdGhlIG5leHQg
YXJndW1lbnQgKi8KPiAtICAgICAgICAgICAgZmllbGRfd2lkdGggPSB2YV9hcmcoYXJncywgaW50
KTsKPiAtICAgICAgICAgICAgaWYgKGZpZWxkX3dpZHRoIDwgMCkgewo+IC0gICAgICAgICAgICAg
ICAgZmllbGRfd2lkdGggPSAtZmllbGRfd2lkdGg7Cj4gLSAgICAgICAgICAgICAgICBmbGFncyB8
PSBMRUZUOwo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+IC0KPiAtICAgICAgICAvKiBn
ZXQgdGhlIHByZWNpc2lvbiAqLwo+IC0gICAgICAgIHByZWNpc2lvbiA9IC0xOwo+IC0gICAgICAg
IGlmICgqZm10ID09ICcuJykgewo+IC0gICAgICAgICAgICArK2ZtdDsKPiAtICAgICAgICAgICAg
aWYgKGlzZGlnaXQoKmZtdCkpCj4gLSAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSBza2lwX2F0
b2koJmZtdCk7Cj4gLSAgICAgICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJyonKSB7Cj4gLSAgICAg
ICAgICAgICAgICArK2ZtdDsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpdCdzIHRo
ZSBuZXh0IGFyZ3VtZW50ICovCj4gLSAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSB2YV9hcmco
YXJncywgaW50KTsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBpZiAocHJlY2lzaW9u
IDwgMCkKPiAtICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IDA7Cj4gKyAgICAgICAgY29uc3Qg
Y2hhciAqcyA9IG5wdHI7Cj4gKyAgICAgICAgdWludDY0X3QgYWNjOwo+ICsgICAgICAgIHVuc2ln
bmVkIGNoYXIgYzsKPiArICAgICAgICB1aW50NjRfdCBxYmFzZSwgY3V0b2ZmOwo+ICsgICAgICAg
IGludCBuZWcsIGFueSwgY3V0bGltOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIFNl
ZSBzdHJ0b3EgZm9yIGNvbW1lbnRzIGFzIHRvIHRoZSBsb2dpYyB1c2VkLgo+ICsgICAgICAgICAq
Lwo+ICsgICAgICAgIGRvIHsKPiArICAgICAgICAgICAgICAgIGMgPSAqcysrOwo+ICsgICAgICAg
IH0gd2hpbGUgKGlzc3BhY2UoYykpOwo+ICsgICAgICAgIGlmIChjID09ICctJykgewo+ICsgICAg
ICAgICAgICAgICAgbmVnID0gMTsKPiArICAgICAgICAgICAgICAgIGMgPSAqcysrOwo+ICsgICAg
ICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgICBuZWcgPSAwOwo+ICsgICAgICAgICAgICAg
ICAgaWYgKGMgPT0gJysnKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsKPiAg
ICAgICAgICB9Cj4gLQo+IC0gICAgICAgIC8qIGdldCB0aGUgY29udmVyc2lvbiBxdWFsaWZpZXIg
Ki8KPiAtICAgICAgICBxdWFsaWZpZXIgPSAtMTsKPiAtICAgICAgICBpZiAoKmZtdCA9PSAnaCcg
fHwgKmZtdCA9PSAnbCcgfHwgKmZtdCA9PSAnTCcgfHwgKmZtdCA9PSdaJyB8fCAqZm10ID09ICd6
Jykgewo+IC0gICAgICAgICAgICBxdWFsaWZpZXIgPSAqZm10Owo+IC0gICAgICAgICAgICArK2Zt
dDsKPiAtICAgICAgICAgICAgaWYgKHF1YWxpZmllciA9PSAnbCcgJiYgKmZtdCA9PSAnbCcpIHsK
PiAtICAgICAgICAgICAgICAgIHF1YWxpZmllciA9ICdMJzsKPiAtICAgICAgICAgICAgICAgICsr
Zm10Owo+IC0gICAgICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAneicpIHsKPiAtICAg
ICAgICAgICAgICAgIHF1YWxpZmllciA9ICdaJzsKPiAtICAgICAgICAgICAgfQo+ICsgICAgICAg
IGlmICgoYmFzZSA9PSAwIHx8IGJhc2UgPT0gMTYpICYmCj4gKyAgICAgICAgICAgIGMgPT0gJzAn
ICYmICgqcyA9PSAneCcgfHwgKnMgPT0gJ1gnKSkgewo+ICsgICAgICAgICAgICAgICAgYyA9IHNb
MV07Cj4gKyAgICAgICAgICAgICAgICBzICs9IDI7Cj4gKyAgICAgICAgICAgICAgICBiYXNlID0g
MTY7Cj4gICAgICAgICAgfQo+IC0gICAgICAgIGlmICgqZm10ID09ICdxJykgewo+IC0gICAgICAg
ICAgICBxdWFsaWZpZXIgPSAnTCc7Cj4gLSAgICAgICAgICAgICsrZm10Owo+ICsgICAgICAgIGlm
IChiYXNlID09IDApCj4gKyAgICAgICAgICAgICAgICBiYXNlID0gYyA9PSAnMCcgPyA4IDogMTA7
Cj4gKyAgICAgICAgcWJhc2UgPSAodW5zaWduZWQpYmFzZTsKPiArICAgICAgICBjdXRvZmYgPSAo
dWludDY0X3QpVUxMT05HX01BWCAvIHFiYXNlOwo+ICsgICAgICAgIGN1dGxpbSA9ICh1aW50NjRf
dClVTExPTkdfTUFYICUgcWJhc2U7Cj4gKyAgICAgICAgZm9yIChhY2MgPSAwLCBhbnkgPSAwOzsg
YyA9ICpzKyspIHsKPiArICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChj
KSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7Cj4gKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChpc2FscGhhKGMpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjIC09IGlz
dXBwZXIoYykgPyAnQScgLSAxMCA6ICdhJyAtIDEwOwo+ICsgICAgICAgICAgICAgICAgZWxzZQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIGlmIChj
ID49IGJhc2UpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAg
ICAgICAgaWYgKGFueSA8IDAgfHwgYWNjID4gY3V0b2ZmIHx8IChhY2MgPT0gY3V0b2ZmICYmIGMg
PiBjdXRsaW0pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAtMTsKPiArICAgICAg
ICAgICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAxOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBhY2MgKj0gcWJhc2U7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFjYyArPSBjOwo+ICsgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgIH0KPiArICAg
ICAgICBpZiAoYW55IDwgMCkgewo+ICsgICAgICAgICAgICAgICAgYWNjID0gVUxMT05HX01BWDsK
PiArICAgICAgICB9IGVsc2UgaWYgKG5lZykKPiArICAgICAgICAgICAgICAgIGFjYyA9IC1hY2M7
Cj4gKyAgICAgICAgaWYgKGVuZHB0ciAhPSAwKQo+ICsgICAgICAgICAgICAgICAgKmVuZHB0ciA9
IF9fREVDT05TVChjaGFyICosIGFueSA/IHMgLSAxIDogbnB0cik7Cj4gKyAgICAgICAgcmV0dXJu
IChhY2MpOwo+ICt9Cj4gIAo+IC0gICAgICAgIC8qIGRlZmF1bHQgYmFzZSAqLwo+IC0gICAgICAg
IGJhc2UgPSAxMDsKPiAtCj4gLSAgICAgICAgc3dpdGNoICgqZm10KSB7Cj4gLSAgICAgICAgY2Fz
ZSAnYyc6Cj4gLSAgICAgICAgICAgIGlmICghKGZsYWdzICYgTEVGVCkpIHsKPiAtICAgICAgICAg
ICAgICAgIHdoaWxlICgtLWZpZWxkX3dpZHRoID4gMCkgewo+IC0gICAgICAgICAgICAgICAgICAg
IGlmIChzdHIgPD0gZW5kKQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAqc3RyID0gJyAnOwo+
IC0gICAgICAgICAgICAgICAgICAgICsrc3RyOwo+ICsvKgo+ICsgKiBTY2FsZWQgZG93biB2ZXJz
aW9uIG9mIHByaW50ZigzKS4KPiArICovCj4gK2ludAo+ICt2c25wcmludGYoY2hhciAqc3RyLCBz
aXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqZm10LCB2YV9saXN0IGFwKQo+ICt7Cj4gKyNkZWZpbmUg
UENIQVIoYykgeyBpZiAoc2l6ZSA+PSAyKSB7ICpzdHIrKyA9IGM7IHNpemUtLTsgfSByZXR2YWwr
KzsgfQo+ICsgICAgICAgIGNoYXIgbmJ1ZltNQVhOQlVGXTsKPiArICAgICAgICBjb25zdCBjaGFy
ICpwLCAqcGVyY2VudDsKPiArICAgICAgICBpbnQgY2gsIG47Cj4gKyAgICAgICAgdWludG1heF90
IG51bTsKPiArICAgICAgICBpbnQgYmFzZSwgbGZsYWcsIHFmbGFnLCB0bXAsIHdpZHRoLCBsYWRq
dXN0LCBzaGFycGZsYWcsIG5lZywgc2lnbiwgZG90Owo+ICsgICAgICAgIGludCBjZmxhZywgaGZs
YWcsIGpmbGFnLCB0ZmxhZywgemZsYWc7Cj4gKyAgICAgICAgaW50IGR3aWR0aCwgdXBwZXI7Cj4g
KyAgICAgICAgY2hhciBwYWRjOwo+ICsgICAgICAgIGludCBzdG9wID0gMCwgcmV0dmFsID0gMDsK
PiArCj4gKyAgICAgICAgbnVtID0gMDsKPiArCj4gKyAgICAgICAgaWYgKGZtdCA9PSBOVUxMKQo+
ICsgICAgICAgICAgICAgICAgZm10ID0gIihmbXQgbnVsbClcbiI7Cj4gKwo+ICsgICAgICAgIGZv
ciAoOzspIHsKPiArICAgICAgICAgICAgICAgIHBhZGMgPSAnICc7Cj4gKyAgICAgICAgICAgICAg
ICB3aWR0aCA9IDA7Cj4gKyAgICAgICAgICAgICAgICB3aGlsZSAoKGNoID0gKHVfY2hhcikqZm10
KyspICE9ICclJyB8fCBzdG9wKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9
PSAnXDAnKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPj0g
MSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICdc
MCc7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXR2YWwpOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFBD
SEFSKGNoKTsKPiAgICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfQo+IC0gICAgICAg
ICAgICBjID0gKHVuc2lnbmVkIGNoYXIpIHZhX2FyZyhhcmdzLCBpbnQpOwo+IC0gICAgICAgICAg
ICBpZiAoc3RyIDw9IGVuZCkKPiAtICAgICAgICAgICAgICAgICpzdHIgPSBjOwo+IC0gICAgICAg
ICAgICArK3N0cjsKPiAtICAgICAgICAgICAgd2hpbGUgKC0tZmllbGRfd2lkdGggPiAwKSB7Cj4g
LSAgICAgICAgICAgICAgICBpZiAoc3RyIDw9IGVuZCkKPiAtICAgICAgICAgICAgICAgICAgICAq
c3RyID0gJyAnOwo+IC0gICAgICAgICAgICAgICAgKytzdHI7Cj4gLSAgICAgICAgICAgIH0KPiAt
ICAgICAgICAgICAgY29udGludWU7Cj4gLQo+IC0gICAgICAgIGNhc2UgJ3MnOgo+IC0gICAgICAg
ICAgICBzID0gdmFfYXJnKGFyZ3MsIGNoYXIgKik7Cj4gLSAgICAgICAgICAgIGlmICghcykKPiAt
ICAgICAgICAgICAgICAgIHMgPSAiPE5VTEw+IjsKPiAtCj4gLSAgICAgICAgICAgIGxlbiA9IHN0
cm5sZW4ocywgcHJlY2lzaW9uKTsKPiAtCj4gLSAgICAgICAgICAgIGlmICghKGZsYWdzICYgTEVG
VCkpIHsKPiAtICAgICAgICAgICAgICAgIHdoaWxlIChsZW4gPCBmaWVsZF93aWR0aC0tKSB7Cj4g
LSAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICpzdHIgPSAnICc7Cj4gLSAgICAgICAgICAgICAgICAgICAgKytzdHI7Cj4gKyAgICAg
ICAgICAgICAgICBwZXJjZW50ID0gZm10IC0gMTsKPiArICAgICAgICAgICAgICAgIHFmbGFnID0g
MDsgbGZsYWcgPSAwOyBsYWRqdXN0ID0gMDsgc2hhcnBmbGFnID0gMDsgbmVnID0gMDsKPiArICAg
ICAgICAgICAgICAgIHNpZ24gPSAwOyBkb3QgPSAwOyBkd2lkdGggPSAwOyB1cHBlciA9IDA7Cj4g
KyAgICAgICAgICAgICAgICBjZmxhZyA9IDA7IGhmbGFnID0gMDsgamZsYWcgPSAwOyB0ZmxhZyA9
IDA7IHpmbGFnID0gMDsKPiArcmVzd2l0Y2g6ICAgICAgIHN3aXRjaCAoY2ggPSAodV9jaGFyKSpm
bXQrKykgewo+ICsgICAgICAgICAgICAgICAgY2FzZSAnLic6Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvdCA9IDE7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7
Cj4gKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAg
c2hhcnBmbGFnID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsK
PiArICAgICAgICAgICAgICAgIGNhc2UgJysnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBz
aWduID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKPiArICAg
ICAgICAgICAgICAgIGNhc2UgJy0nOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBsYWRqdXN0
ID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKPiArICAgICAg
ICAgICAgICAgIGNhc2UgJyUnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUihjaCk7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgY2Fz
ZSAnKic6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG90KSB7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSB2YV9hcmcoYXAsIGludCk7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkgewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFkanVzdCA9ICFsYWRqdXN0Owo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAtd2lkdGg7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3aWR0aCA9IHZh
X2FyZyhhcCwgaW50KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOwo+ICsgICAgICAgICAgICAgICAgY2FzZSAnMCc6
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG90KSB7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFkYyA9ICcwJzsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIHJlc3dpdGNoOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAg
ICAgICAgICAgICAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKPiAr
ICAgICAgICAgICAgICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBj
YXNlICc5JzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOzsg
KytmbXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBu
ICogMTAgKyBjaCAtICcwJzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoID0gKmZtdDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjaCA8ICcwJyB8fCBjaCA+ICc5JykKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG90KQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGR3aWR0aCA9IG47Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG47Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7Cj4gKyAgICAgICAgICAgICAg
ICBjYXNlICdjJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIodmFfYXJnKGFwLCBp
bnQpKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAg
ICBjYXNlICdkJzoKPiArICAgICAgICAgICAgICAgIGNhc2UgJ2knOgo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlID0gMTA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAx
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9zaWduOwo+ICsgICAgICAg
ICAgICAgICAgY2FzZSAnaCc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZmxhZykg
ewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhmbGFnID0gMDsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjZmxhZyA9IDE7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhmbGFnID0g
MTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKPiArICAgICAgICAg
ICAgICAgIGNhc2UgJ2onOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBqZmxhZyA9IDE7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7Cj4gKyAgICAgICAgICAgICAg
ICBjYXNlICdsJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxmbGFnKSB7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZsYWcgPSAwOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHFmbGFnID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZsYWcgPSAxOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOwo+ICsgICAgICAgICAgICAgICAg
Y2FzZSAnbic6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqZmxhZykKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHZhX2FyZyhhcCwgaW50bWF4X3QgKikpID0gcmV0
dmFsOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxZmxhZykKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHZhX2FyZyhhcCwgaW50NjRfdCAqKSkgPSByZXR2
YWw7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxmbGFnKQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBsb25nICopKSA9IHJldHZhbDsK
PiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoemZsYWcpCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIHNpemVfdCAqKSkgPSByZXR2YWw7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGhmbGFnKQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBzaG9ydCAqKSkgPSByZXR2YWw7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNmbGFnKQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBjaGFyICopKSA9IHJldHZhbDsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoodmFfYXJnKGFwLCBpbnQgKikpID0gcmV0dmFsOwo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKPiArICAgICAgICAgICAgICAgIGNhc2UgJ28nOgo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlID0gODsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVf
bm9zaWduOwo+ICsgICAgICAgICAgICAgICAgY2FzZSAncCc6Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2UgPSAxNjsKPiArICAgICAgICAgICAgICAgICAgICAgICAgc2hhcnBmbGFnID0g
KHdpZHRoID09IDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMDsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtID0gKHVpbnRwdHJfdCl2YV9hcmcoYXAsIHZvaWQgKik7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbnVtYmVyOwo+ICsgICAgICAgICAgICAg
ICAgY2FzZSAncSc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHFmbGFnID0gMTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKPiArICAgICAgICAgICAgICAgIGNh
c2UgJ3InOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTA7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzaWduKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gaGFuZGxlX3NpZ247Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaGFu
ZGxlX25vc2lnbjsKPiArICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBwID0gdmFfYXJnKGFwLCBjaGFyICopOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocCA9PSBOVUxMKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAg
PSAiKG51bGwpIjsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkb3QpCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHN0cmxlbiAocCk7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KG4gPSAwOyBuIDwgZHdpZHRoICYmIHBbbl07IG4rKykKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGggLT0gbjsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFkanVz
dCAmJiB3aWR0aCA+IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUg
KHdpZHRoLS0pCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hB
UihwYWRjKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG4tLSkKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUigqcCsrKTsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxhZGp1c3QgJiYgd2lkdGggPiAwKQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUENIQVIocGFkYyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwo+ICsgICAgICAgICAgICAgICAgY2FzZSAndCc6Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRmbGFnID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsK
PiArICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBi
YXNlID0gMTA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX25vc2lnbjsK
PiArICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICB1
cHBlciA9IDE7Cj4gKyAgICAgICAgICAgICAgICBjYXNlICd4JzoKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZSA9IDE2Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRs
ZV9ub3NpZ247Cj4gKyAgICAgICAgICAgICAgICBjYXNlICd5JzoKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZSA9IDE2Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsK
PiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfc2lnbjsKPiArICAgICAgICAg
ICAgICAgIGNhc2UgJ3onOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICB6ZmxhZyA9IDE7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7Cj4gK2hhbmRsZV9ub3NpZ246
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAwOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoamZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVt
ID0gdmFfYXJnKGFwLCB1aW50bWF4X3QpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChxZmxhZykKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9h
cmcoYXAsIHVpbnQ2NF90KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGZs
YWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBw
dHJkaWZmX3QpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsZmxhZykKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIHVfbG9uZyk7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHpmbGFnKQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgc2l6ZV90KTsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtID0gKHVuc2lnbmVkIHNob3J0KXZhX2FyZyhhcCwgaW50KTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ZsYWcpCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtID0gKHVfY2hhcil2YV9hcmcoYXAsIGludCk7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dW0gPSB2YV9hcmcoYXAsIHVfaW50KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byBu
dW1iZXI7Cj4gK2hhbmRsZV9zaWduOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoamZs
YWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBp
bnRtYXhfdCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHFmbGFnKQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgaW50NjRfdCk7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRmbGFnKQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgcHRyZGlmZl90KTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobGZsYWcpCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBsb25nKTsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoemZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVtID0gdmFfYXJnKGFwLCBzc2l6ZV90KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaGZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0g
KHNob3J0KXZhX2FyZyhhcCwgaW50KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY2ZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gKGNoYXIp
dmFfYXJnKGFwLCBpbnQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBpbnQpOwo+ICtudW1i
ZXI6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaWduICYmIChpbnRtYXhfdCludW0g
PCAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnID0gMTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSAtKGludG1heF90KW51bTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBwID0ga3Nw
cmludG4obmJ1ZiwgbnVtLCBiYXNlLCAmbiwgdXBwZXIpOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICB0bXAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcnBmbGFnICYm
IG51bSAhPSAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2Ug
PT0gOCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCsrOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UgPT0gMTYpCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgKz0gMjsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVn
KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCsrOwo+ICsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFsYWRqdXN0ICYmIHBhZGMgPT0gJzAnKQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGR3aWR0aCA9IHdpZHRoIC0gdG1wOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aCAtPSB0bXAgKyAoZHdpZHRoID4gbiA/IGR3aWR0aCA6IG4p
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBkd2lkdGggLT0gbjsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFsYWRqdXN0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICh3aWR0aC0tID4gMCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBDSEFSKCcgJyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWcp
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJy0nKTsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNoYXJwZmxhZyAmJiBudW0gIT0gMCkgewo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlID09IDgpIHsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcwJyk7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiYXNlID09IDE2KSB7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUignMCcpOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJ3gnKTsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGR3aWR0aC0tID4gMCkKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQQ0hBUignMCcpOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKCpwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCpw
LS0pOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhZGp1c3QpCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0gPiAwKQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJyAnKTsKPiArCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgZGVmYXVsdDoKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBlcmNlbnQgPCBmbXQpCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoKnBlcmNlbnQrKyk7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIFNpbmNlIHdlIGln
bm9yZSBhIGZvcm1hdHRpbmcgYXJndW1lbnQgaXQgaXMgbm8KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICogbG9uZ2VyIHNhZmUgdG8gb2JleSB0aGUgcmVtYWluaW5nIGZvcm1hdHRpbmcKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICogYXJndW1lbnRzIGFzIHRoZSBhcmd1bWVudHMgd2ls
bCBubyBsb25nZXIgbWF0Y2gKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGZvcm1h
dCBzcGVjcy4KPiArICAgICAgICAgICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0b3AgPSAxOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAg
ICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgbGVuOyArK2kpIHsKPiAtICAgICAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQo+
IC0gICAgICAgICAgICAgICAgICAgICpzdHIgPSAqczsKPiAtICAgICAgICAgICAgICAgICsrc3Ry
OyArK3M7Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgd2hpbGUgKGxlbiA8IGZpZWxk
X3dpZHRoLS0pIHsKPiAtICAgICAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQo+IC0gICAgICAg
ICAgICAgICAgICAgICpzdHIgPSAnICc7Cj4gLSAgICAgICAgICAgICAgICArK3N0cjsKPiAtICAg
ICAgICAgICAgfQo+IC0gICAgICAgICAgICBjb250aW51ZTsKPiAtCj4gLSAgICAgICAgY2FzZSAn
cCc6Cj4gLSAgICAgICAgICAgIGlmIChmaWVsZF93aWR0aCA9PSAtMSkgewo+IC0gICAgICAgICAg
ICAgICAgZmllbGRfd2lkdGggPSAyKnNpemVvZih2b2lkICopOwo+IC0gICAgICAgICAgICAgICAg
ZmxhZ3MgfD0gWkVST1BBRDsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBzdHIgPSBu
dW1iZXIoc3RyLCBlbmQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9u
ZykgdmFfYXJnKGFyZ3MsIHZvaWQgKiksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAxNiwg
ZmllbGRfd2lkdGgsIHByZWNpc2lvbiwgZmxhZ3MpOwo+IC0gICAgICAgICAgICBjb250aW51ZTsK
PiAtCj4gLQo+IC0gICAgICAgIGNhc2UgJ24nOgo+IC0gICAgICAgICAgICBpZiAocXVhbGlmaWVy
ID09ICdsJykgewo+IC0gICAgICAgICAgICAgICAgbG9uZyAqIGlwID0gdmFfYXJnKGFyZ3MsIGxv
bmcgKik7Cj4gLSAgICAgICAgICAgICAgICAqaXAgPSAoc3RyIC0gYnVmKTsKPiAtICAgICAgICAg
ICAgfSBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ1onKSB7Cj4gLSAgICAgICAgICAgICAgICBzaXpl
X3QgKiBpcCA9IHZhX2FyZyhhcmdzLCBzaXplX3QgKik7Cj4gLSAgICAgICAgICAgICAgICAqaXAg
PSAoc3RyIC0gYnVmKTsKPiAtICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAg
IGludCAqIGlwID0gdmFfYXJnKGFyZ3MsIGludCAqKTsKPiAtICAgICAgICAgICAgICAgICppcCA9
IChzdHIgLSBidWYpOwo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIGNvbnRpbnVlOwo+
IC0KPiAtICAgICAgICBjYXNlICclJzoKPiAtICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCj4g
LSAgICAgICAgICAgICAgICAqc3RyID0gJyUnOwo+IC0gICAgICAgICAgICArK3N0cjsKPiAtICAg
ICAgICAgICAgY29udGludWU7Cj4gLQo+IC0gICAgICAgICAgICAvKiBpbnRlZ2VyIG51bWJlciBm
b3JtYXRzIC0gc2V0IHVwIHRoZSBmbGFncyBhbmQgImJyZWFrIiAqLwo+IC0gICAgICAgIGNhc2Ug
J28nOgo+IC0gICAgICAgICAgICBiYXNlID0gODsKPiAtICAgICAgICAgICAgYnJlYWs7Cj4gLQo+
IC0gICAgICAgIGNhc2UgJ1gnOgo+IC0gICAgICAgICAgICBmbGFncyB8PSBMQVJHRTsKPiAtICAg
ICAgICBjYXNlICd4JzoKPiAtICAgICAgICAgICAgYmFzZSA9IDE2Owo+IC0gICAgICAgICAgICBi
cmVhazsKPiAtCj4gLSAgICAgICAgY2FzZSAnZCc6Cj4gLSAgICAgICAgY2FzZSAnaSc6Cj4gLSAg
ICAgICAgICAgIGZsYWdzIHw9IFNJR047Cj4gLSAgICAgICAgY2FzZSAndSc6Cj4gLSAgICAgICAg
ICAgIGJyZWFrOwo+IC0KPiAtICAgICAgICBkZWZhdWx0Ogo+IC0gICAgICAgICAgICBpZiAoc3Ry
IDw9IGVuZCkKPiAtICAgICAgICAgICAgICAgICpzdHIgPSAnJSc7Cj4gLSAgICAgICAgICAgICsr
c3RyOwo+IC0gICAgICAgICAgICBpZiAoKmZtdCkgewo+IC0gICAgICAgICAgICAgICAgaWYgKHN0
ciA8PSBlbmQpCj4gLSAgICAgICAgICAgICAgICAgICAgKnN0ciA9ICpmbXQ7Cj4gLSAgICAgICAg
ICAgICAgICArK3N0cjsKPiAtICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAg
IC0tZm10Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAg
ICAgIH0KPiAtICAgICAgICBpZiAocXVhbGlmaWVyID09ICdMJykKPiAtICAgICAgICAgICAgbnVt
ID0gdmFfYXJnKGFyZ3MsIGxvbmcgbG9uZyk7Cj4gLSAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVy
ID09ICdsJykgewo+IC0gICAgICAgICAgICBudW0gPSB2YV9hcmcoYXJncywgdW5zaWduZWQgbG9u
Zyk7Cj4gLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNJR04pCj4gLSAgICAgICAgICAgICAgICBu
dW0gPSAoc2lnbmVkIGxvbmcpIG51bTsKPiAtICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9
PSAnWicpIHsKPiAtICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7Cj4gLSAg
ICAgICAgfSBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ2gnKSB7Cj4gLSAgICAgICAgICAgIG51bSA9
ICh1bnNpZ25lZCBzaG9ydCkgdmFfYXJnKGFyZ3MsIGludCk7Cj4gLSAgICAgICAgICAgIGlmIChm
bGFncyAmIFNJR04pCj4gLSAgICAgICAgICAgICAgICBudW0gPSAoc2lnbmVkIHNob3J0KSBudW07
Cj4gLSAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFyZ3MsIHVu
c2lnbmVkIGludCk7Cj4gLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNJR04pCj4gLSAgICAgICAg
ICAgICAgICBudW0gPSAoc2lnbmVkIGludCkgbnVtOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAg
ICAgc3RyID0gbnVtYmVyKHN0ciwgZW5kLCBudW0sIGJhc2UsCj4gLSAgICAgICAgICAgICAgICAg
ICAgIGZpZWxkX3dpZHRoLCBwcmVjaXNpb24sIGZsYWdzKTsKPiAtICAgIH0KPiAtICAgIGlmIChz
dHIgPD0gZW5kKQo+IC0gICAgICAgICpzdHIgPSAnXDAnOwo+IC0gICAgZWxzZSBpZiAoc2l6ZSA+
IDApCj4gLSAgICAgICAgLyogZG9uJ3Qgd3JpdGUgb3V0IGEgbnVsbCBieXRlIGlmIHRoZSBidWYg
c2l6ZSBpcyB6ZXJvICovCj4gLSAgICAgICAgKmVuZCA9ICdcMCc7Cj4gLSAgICAvKiB0aGUgdHJh
aWxpbmcgbnVsbCBieXRlIGRvZXNuJ3QgY291bnQgdG93YXJkcyB0aGUgdG90YWwKPiAtICAgICAq
ICsrc3RyOwo+IC0gICAgICovCj4gLSAgICByZXR1cm4gc3RyLWJ1ZjsKPiArI3VuZGVmIFBDSEFS
Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC01NTIsMjIwICs2MzUsNTg3IEBAIGludCBzcHJpbnRmKGNo
YXIgKiBidWYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQo+ICAgICAgcmV0dXJuIGk7Cj4gIH0KPiAg
Cj4gKy8qCj4gKyAqIEZpbGwgaW4gdGhlIGdpdmVuIHRhYmxlIGZyb20gdGhlIHNjYW5zZXQgYXQg
dGhlIGdpdmVuIGZvcm1hdAo+ICsgKiAoanVzdCBhZnRlciBgWycpLiAgUmV0dXJuIGEgcG9pbnRl
ciB0byB0aGUgY2hhcmFjdGVyIHBhc3QgdGhlCj4gKyAqIGNsb3NpbmcgYF0nLiAgVGhlIHRhYmxl
IGhhcyBhIDEgd2hlcmV2ZXIgY2hhcmFjdGVycyBzaG91bGQgYmUKPiArICogY29uc2lkZXJlZCBw
YXJ0IG9mIHRoZSBzY2Fuc2V0Lgo+ICsgKi8KPiArc3RhdGljIGNvbnN0IHVfY2hhciAqCj4gK19f
c2NjbChjaGFyICp0YWIsIGNvbnN0IHVfY2hhciAqZm10KQo+ICt7Cj4gKyAgICAgICAgaW50IGMs
IG4sIHY7Cj4gKwo+ICsgICAgICAgIC8qIGZpcnN0IGBjbGVhcicgdGhlIHdob2xlIHRhYmxlICov
Cj4gKyAgICAgICAgYyA9ICpmbXQrKzsgICAgICAgICAgICAgLyogZmlyc3QgY2hhciBoYXQgPT4g
bmVnYXRlZCBzY2Fuc2V0ICovCj4gKyAgICAgICAgaWYgKGMgPT0gJ14nKSB7Cj4gKyAgICAgICAg
ICAgICAgICB2ID0gMTsgICAgICAgICAgLyogZGVmYXVsdCA9PiBhY2NlcHQgKi8KPiArICAgICAg
ICAgICAgICAgIGMgPSAqZm10Kys7ICAgICAvKiBnZXQgbmV3IGZpcnN0IGNoYXIgKi8KPiArICAg
ICAgICB9IGVsc2UKPiArICAgICAgICAgICAgICAgIHYgPSAwOyAgICAgICAgICAvKiBkZWZhdWx0
ID0+IHJlamVjdCAqLwo+ICsKPiArICAgICAgICAvKiBYWFg6IFdpbGwgbm90IHdvcmsgaWYgc2l6
ZW9mKHRhYiopID4gc2l6ZW9mKGNoYXIpICovCj4gKyAgICAgICAgZm9yIChuID0gMDsgbiA8IDI1
NjsgbisrKQo+ICsgICAgICAgICAgICAgICAgICAgICB0YWJbbl0gPSB2OyAgICAgICAgLyogbWVt
c2V0KHRhYiwgdiwgMjU2KSAqLwo+ICsKPiArICAgICAgICBpZiAoYyA9PSAwKQo+ICsgICAgICAg
ICAgICAgICAgcmV0dXJuIChmbXQgLSAxKTsvKiBmb3JtYXQgZW5kZWQgYmVmb3JlIGNsb3Npbmcg
XSAqLwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIE5vdyBzZXQgdGhlIGVudHJpZXMg
Y29ycmVzcG9uZGluZyB0byB0aGUgYWN0dWFsIHNjYW5zZXQKPiArICAgICAgICAgKiB0byB0aGUg
b3Bwb3NpdGUgb2YgdGhlIGFib3ZlLgo+ICsgICAgICAgICAqCj4gKyAgICAgICAgICogVGhlIGZp
cnN0IGNoYXJhY3RlciBtYXkgYmUgJ10nIChvciAnLScpIHdpdGhvdXQgYmVpbmcgc3BlY2lhbDsK
PiArICAgICAgICAgKiB0aGUgbGFzdCBjaGFyYWN0ZXIgbWF5IGJlICctJy4KPiArICAgICAgICAg
Ki8KPiArICAgICAgICB2ID0gMSAtIHY7Cj4gKyAgICAgICAgZm9yICg7Oykgewo+ICsgICAgICAg
ICAgICAgICAgdGFiW2NdID0gdjsgICAgICAgICAgICAgLyogdGFrZSBjaGFyYWN0ZXIgYyAqLwo+
ICtkb3N3aXRjaDoKPiArICAgICAgICAgICAgICAgIG4gPSAqZm10Kys7ICAgICAgICAgICAgIC8q
IGFuZCBleGFtaW5lIHRoZSBuZXh0ICovCj4gKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHsK
PiArCj4gKyAgICAgICAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAvKiBmb3JtYXQg
ZW5kZWQgdG9vIHNvb24gKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChmbXQg
LSAxKTsKPiArCj4gKyAgICAgICAgICAgICAgICBjYXNlICctJzoKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogQSBzY2Fuc2V0IG9mIHRo
ZSBmb3JtCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgWzAxKy1dCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAqIGlzIGRlZmluZWQgYXMgYHRoZSBkaWdpdCAwLCB0aGUgZGln
aXQgMSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGNoYXJhY3RlciArLCB0aGUg
Y2hhcmFjdGVyIC0nLCBidXQKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGVmZmVj
dCBvZiBhIHNjYW5zZXQgc3VjaCBhcwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAg
IFthLXpBLVowLTldCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGlzIGltcGxlbWVudGF0
aW9uIGRlZmluZWQuICBUaGUgVjcgVW5peAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBz
Y2FuZiB0cmVhdHMgYGEteicgYXMgYHRoZSBsZXR0ZXJzIGEgdGhyb3VnaAo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgKiB6JywgYnV0IHRyZWF0cyBgYS1hJyBhcyBgdGhlIGxldHRlciBhLCB0
aGUKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogY2hhcmFjdGVyIC0sIGFuZCB0aGUgbGV0
dGVyIGEnLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKgo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBGb3IgY29tcGF0aWJpbGl0eSwgdGhlIGAtJyBpcyBub3QgY29uc2lkZXJkCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRvIGRlZmluZSBhIHJhbmdlIGlmIHRoZSBjaGFy
YWN0ZXIgZm9sbG93aW5nCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0IGlzIGVpdGhl
ciBhIGNsb3NlIGJyYWNrZXQgKHJlcXVpcmVkIGJ5IEFOU0kpCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqIG9yIGlzIG5vdCBudW1lcmljYWxseSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3Rl
cgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiB3ZSBqdXN0IHN0b3JlZCBpbiB0aGUgdGFi
bGUgKGMpLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgbiA9ICpmbXQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09ICdd
JyB8fCBuIDwgYykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAnLSc7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAvKiByZXN1bWUgdGhl
IGZvcig7OykgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBmbXQrKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgLyogZmlsbCBpbiB0
aGUgcmFuZ2UgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgZG8gewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFiWysrY10gPSB2Owo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICB9IHdoaWxlIChjIDwgbik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBB
bGFzLCB0aGUgVjcgVW5peCBzY2FuZiBhbHNvIHRyZWF0cyBmb3JtYXRzCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAqIHN1Y2ggYXMgW2EtYy1lXSBhcyBgdGhlIGxldHRlcnMgYSB0aHJvdWdo
IGUnLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIHRvbyBpcyBwZXJtaXR0ZWQg
YnkgdGhlIHN0YW5kYXJkLi4uLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBkb3N3aXRjaDsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2FzZSAnXSc6ICAgICAgICAgICAg
ICAgLyogZW5kIG9mIHNjYW5zZXQgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IChmbXQpOwo+ICsKPiArICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgIC8q
IGp1c3QgYW5vdGhlciBjaGFyYWN0ZXIgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgYyA9
IG47Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAg
fQo+ICsgICAgICAgIH0KPiArICAgICAgICAvKiBOT1RSRUFDSEVEICovCj4gK30KPiArCj4gIC8q
Kgo+ICAgKiB2c3NjYW5mIC0gVW5mb3JtYXQgYSBidWZmZXIgaW50byBhIGxpc3Qgb2YgYXJndW1l
bnRzCj4gICAqIEBidWY6CWlucHV0IGJ1ZmZlcgo+ICAgKiBAZm10Oglmb3JtYXQgb2YgYnVmZmVy
Cj4gICAqIEBhcmdzOglhcmd1bWVudHMKPiAgICovCj4gLWludCB2c3NjYW5mKGNvbnN0IGNoYXIg
KiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIHZhX2xpc3QgYXJncykKPiArI2RlZmluZSBCVUYgICAg
ICAgICAgICAgMzIgICAgICAvKiBNYXhpbXVtIGxlbmd0aCBvZiBudW1lcmljIHN0cmluZy4gKi8K
PiArCj4gKy8qCj4gKyAqIEZsYWdzIHVzZWQgZHVyaW5nIGNvbnZlcnNpb24uCj4gKyAqLwo+ICsj
ZGVmaW5lIExPTkcgICAgICAgICAgICAweDAxICAgIC8qIGw6IGxvbmcgb3IgZG91YmxlICovCj4g
KyNkZWZpbmUgU0hPUlQgICAgICAgICAgIDB4MDQgICAgLyogaDogc2hvcnQgKi8KPiArI2RlZmlu
ZSBTVVBQUkVTUyAgICAgICAgMHgwOCAgICAvKiBzdXBwcmVzcyBhc3NpZ25tZW50ICovCj4gKyNk
ZWZpbmUgUE9JTlRFUiAgICAgICAgIDB4MTAgICAgLyogd2VpcmQgJXAgcG9pbnRlciAoYGZha2Ug
aGV4JykgKi8KPiArI2RlZmluZSBOT1NLSVAgICAgICAgICAgMHgyMCAgICAvKiBkbyBub3Qgc2tp
cCBibGFua3MgKi8KPiArI2RlZmluZSBRVUFEICAgICAgICAgICAgMHg0MDAKPiArI2RlZmluZSBT
SE9SVFNIT1JUICAgICAgMHg0MDAwICAvKiogaGg6IGNoYXIgKi8KPiArCj4gKy8qCj4gKyAqIFRo
ZSBmb2xsb3dpbmcgYXJlIHVzZWQgaW4gbnVtZXJpYyBjb252ZXJzaW9ucyBvbmx5Ogo+ICsgKiBT
SUdOT0ssIE5ESUdJVFMsIERQVE9LLCBhbmQgRVhQT0sgYXJlIGZvciBmbG9hdGluZyBwb2ludDsK
PiArICogU0lHTk9LLCBORElHSVRTLCBQRlhPSywgYW5kIE5aRElHSVRTIGFyZSBmb3IgaW50ZWdy
YWwuCj4gKyAqLwo+ICsjZGVmaW5lIFNJR05PSyAgICAgICAgICAweDQwICAgIC8qICsvLSBpcyAo
c3RpbGwpIGxlZ2FsICovCj4gKyNkZWZpbmUgTkRJR0lUUyAgICAgICAgIDB4ODAgICAgLyogbm8g
ZGlnaXRzIGRldGVjdGVkICovCj4gKwo+ICsjZGVmaW5lIERQVE9LICAgICAgICAgICAweDEwMCAg
IC8qIChmbG9hdCkgZGVjaW1hbCBwb2ludCBpcyBzdGlsbCBsZWdhbCAqLwo+ICsjZGVmaW5lIEVY
UE9LICAgICAgICAgICAweDIwMCAgIC8qIChmbG9hdCkgZXhwb25lbnQgKGUrMywgZXRjKSBzdGls
bCBsZWdhbCAqLwo+ICsKPiArI2RlZmluZSBQRlhPSyAgICAgICAgICAgMHgxMDAgICAvKiAweCBw
cmVmaXggaXMgKHN0aWxsKSBsZWdhbCAqLwo+ICsjZGVmaW5lIE5aRElHSVRTICAgICAgICAweDIw
MCAgIC8qIG5vIHplcm8gZGlnaXRzIGRldGVjdGVkICovCj4gKwo+ICsvKgo+ICsgKiBDb252ZXJz
aW9uIHR5cGVzLgo+ICsgKi8KPiArI2RlZmluZSBDVF9DSEFSICAgICAgICAgMCAgICAgICAvKiAl
YyBjb252ZXJzaW9uICovCj4gKyNkZWZpbmUgQ1RfQ0NMICAgICAgICAgIDEgICAgICAgLyogJVsu
Li5dIGNvbnZlcnNpb24gKi8KPiArI2RlZmluZSBDVF9TVFJJTkcgICAgICAgMiAgICAgICAvKiAl
cyBjb252ZXJzaW9uICovCj4gKyNkZWZpbmUgQ1RfSU5UICAgICAgICAgIDMgICAgICAgLyogaW50
ZWdlciwgaS5lLiwgc3RydG9xIG9yIHN0cnRvdXEgKi8KPiArdHlwZWRlZiB1aW50NjRfdCAoKmNj
Zm50eXBlKShjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7Cj4gKwo+ICtpbnQKPiArdnNzY2Fu
Zihjb25zdCBjaGFyICppbnAsIGNoYXIgY29uc3QgKmZtdDAsIHZhX2xpc3QgYXApCj4gIHsKPiAt
CWNvbnN0IGNoYXIgKnN0ciA9IGJ1ZjsKPiAtCWNoYXIgKm5leHQ7Cj4gLQljaGFyIGRpZ2l0Owo+
IC0JaW50IG51bSA9IDA7Cj4gLQlpbnQgcXVhbGlmaWVyOwo+IC0JaW50IGJhc2U7Cj4gLQlpbnQg
ZmllbGRfd2lkdGg7Cj4gLQlpbnQgaXNfc2lnbiA9IDA7Cj4gKyAgICAgICAgaW50IGlucjsKPiAr
ICAgICAgICBjb25zdCB1X2NoYXIgKmZtdCA9IChjb25zdCB1X2NoYXIgKilmbXQwOwo+ICsgICAg
ICAgIGludCBjOyAgICAgICAgICAgICAgICAgIC8qIGNoYXJhY3RlciBmcm9tIGZvcm1hdCwgb3Ig
Y29udmVyc2lvbiAqLwo+ICsgICAgICAgIHNpemVfdCB3aWR0aDsgICAgICAgICAgIC8qIGZpZWxk
IHdpZHRoLCBvciAwICovCj4gKyAgICAgICAgY2hhciAqcDsgICAgICAgICAgICAgICAgLyogcG9p
bnRzIGludG8gYWxsIGtpbmRzIG9mIHN0cmluZ3MgKi8KPiArICAgICAgICBpbnQgbjsgICAgICAg
ICAgICAgICAgICAvKiBoYW5keSBpbnRlZ2VyICovCj4gKyAgICAgICAgaW50IGZsYWdzOyAgICAg
ICAgICAgICAgLyogZmxhZ3MgYXMgZGVmaW5lZCBhYm92ZSAqLwo+ICsgICAgICAgIGNoYXIgKnAw
OyAgICAgICAgICAgICAgIC8qIHNhdmVzIG9yaWdpbmFsIHZhbHVlIG9mIHAgd2hlbiBuZWNlc3Nh
cnkgKi8KPiArICAgICAgICBpbnQgbmFzc2lnbmVkOyAgICAgICAgICAvKiBudW1iZXIgb2YgZmll
bGRzIGFzc2lnbmVkICovCj4gKyAgICAgICAgaW50IG5jb252ZXJzaW9uczsgICAgICAgLyogbnVt
YmVyIG9mIGNvbnZlcnNpb25zICovCj4gKyAgICAgICAgaW50IG5yZWFkOyAgICAgICAgICAgICAg
LyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29uc3VtZWQgZnJvbSBmcCAqLwo+ICsgICAgICAgIGlu
dCBiYXNlOyAgICAgICAgICAgICAgIC8qIGJhc2UgYXJndW1lbnQgdG8gc3RydG9xL3N0cnRvdXEg
Ki8KPiArICAgICAgICBjY2ZudHlwZSBjY2ZuOyAgICAgICAgICAvKiBjb252ZXJzaW9uIGZ1bmN0
aW9uIChzdHJ0b3Evc3RydG91cSkgKi8KPiArICAgICAgICBjaGFyIGNjbHRhYlsyNTZdOyAgICAg
ICAvKiBjaGFyYWN0ZXIgY2xhc3MgdGFibGUgZm9yICVbLi4uXSAqLwo+ICsgICAgICAgIGNoYXIg
YnVmW0JVRl07ICAgICAgICAgIC8qIGJ1ZmZlciBmb3IgbnVtZXJpYyBjb252ZXJzaW9ucyAqLwo+
ICAKPiAtCXdoaWxlKCpmbXQgJiYgKnN0cikgewo+IC0JCS8qIHNraXAgYW55IHdoaXRlIHNwYWNl
IGluIGZvcm1hdCAqLwo+IC0JCS8qIHdoaXRlIHNwYWNlIGluIGZvcm1hdCBtYXRjaHMgYW55IGFt
b3VudCBvZgo+IC0JCSAqIHdoaXRlIHNwYWNlLCBpbmNsdWRpbmcgbm9uZSwgaW4gdGhlIGlucHV0
Lgo+IC0JCSAqLwo+IC0JCWlmIChpc3NwYWNlKCpmbXQpKSB7Cj4gLQkJCXdoaWxlIChpc3NwYWNl
KCpmbXQpKQo+IC0JCQkJKytmbXQ7Cj4gLQkJCXdoaWxlIChpc3NwYWNlKCpzdHIpKQo+IC0JCQkJ
KytzdHI7Cj4gLQkJfQo+ICsgICAgICAgIC8qIGBiYXNlZml4JyBpcyB1c2VkIHRvIGF2b2lkIGBp
ZicgdGVzdHMgaW4gdGhlIGludGVnZXIgc2Nhbm5lciAqLwo+ICsgICAgICAgIHN0YXRpYyBzaG9y
dCBiYXNlZml4WzE3XSA9Cj4gKyAgICAgICAgICAgICAgICB7IDEwLCAxLCAyLCAzLCA0LCA1LCA2
LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiB9Owo+ICAKPiAtCQkvKiBhbnl0
aGluZyB0aGF0IGlzIG5vdCBhIGNvbnZlcnNpb24gbXVzdCBtYXRjaCBleGFjdGx5ICovCj4gLQkJ
aWYgKCpmbXQgIT0gJyUnICYmICpmbXQpIHsKPiAtCQkJaWYgKCpmbXQrKyAhPSAqc3RyKyspCj4g
LQkJCQlicmVhazsKPiAtCQkJY29udGludWU7Cj4gLQkJfQo+ICsgICAgICAgIGluciA9IHN0cmxl
bihpbnApOwo+ICAKPiAtCQlpZiAoISpmbXQpCj4gLQkJCWJyZWFrOwo+IC0JCSsrZm10Owo+IC0J
CQo+IC0JCS8qIHNraXAgdGhpcyBjb252ZXJzaW9uLgo+IC0JCSAqIGFkdmFuY2UgYm90aCBzdHJp
bmdzIHRvIG5leHQgd2hpdGUgc3BhY2UKPiAtCQkgKi8KPiAtCQlpZiAoKmZtdCA9PSAnKicpIHsK
PiAtCQkJd2hpbGUgKCFpc3NwYWNlKCpmbXQpICYmICpmbXQpCj4gLQkJCQlmbXQrKzsKPiAtCQkJ
d2hpbGUgKCFpc3NwYWNlKCpzdHIpICYmICpzdHIpCj4gLQkJCQlzdHIrKzsKPiAtCQkJY29udGlu
dWU7Cj4gLQkJfQo+ICsgICAgICAgIG5hc3NpZ25lZCA9IDA7Cj4gKyAgICAgICAgbmNvbnZlcnNp
b25zID0gMDsKPiArICAgICAgICBucmVhZCA9IDA7Cj4gKyAgICAgICAgYmFzZSA9IDA7ICAgICAg
ICAgICAgICAgLyogWFhYIGp1c3QgdG8ga2VlcCBnY2MgaGFwcHkgKi8KPiArICAgICAgICBjY2Zu
ID0gTlVMTDsgICAgICAgICAgICAvKiBYWFgganVzdCB0byBrZWVwIGdjYyBoYXBweSAqLwo+ICsg
ICAgICAgIGZvciAoOzspIHsKPiArICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7Cj4gKyAgICAg
ICAgICAgICAgICBpZiAoYyA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KG5hc3NpZ25lZCk7Cj4gKyAgICAgICAgICAgICAgICBpZiAoaXNzcGFjZShjKSkgewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5yID4gMCAmJiBpc3NwYWNlKCppbnApKQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkKyssIGluci0tLCBpbnArKzsKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgICAgICAgICB9Cj4g
KyAgICAgICAgICAgICAgICBpZiAoYyAhPSAnJScpCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gbGl0ZXJhbDsKPiArICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKPiArICAgICAgICAg
ICAgICAgIGZsYWdzID0gMDsKPiArICAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAg
ICAgKiBzd2l0Y2ggb24gdGhlIGZvcm1hdC4gIGNvbnRpbnVlIGlmIGRvbmU7Cj4gKyAgICAgICAg
ICAgICAgICAgKiBicmVhayBvbmNlIGZvcm1hdCB0eXBlIGlzIGRlcml2ZWQuCj4gKyAgICAgICAg
ICAgICAgICAgKi8KPiArYWdhaW46ICAgICAgICAgIGMgPSAqZm10Kys7Cj4gKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGMpIHsKPiArICAgICAgICAgICAgICAgIGNhc2UgJyUnOgo+ICtsaXRlcmFs
Ogo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5yIDw9IDApCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBpbnB1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKmlucCAhPSBjKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gbWF0Y2hfZmFpbHVyZTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaW5yLS0s
IGlucCsrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCsrOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKPiAgCj4gLQkJLyogZ2V0IGZpZWxkIHdpZHRoICovCj4g
LQkJZmllbGRfd2lkdGggPSAtMTsKPiAtCQlpZiAoaXNkaWdpdCgqZm10KSkKPiAtCQkJZmllbGRf
d2lkdGggPSBza2lwX2F0b2koJmZtdCk7Cj4gKyAgICAgICAgICAgICAgICBjYXNlICcqJzoKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gU1VQUFJFU1M7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gYWdhaW47Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdsJzoKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgTE9ORyl7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfkxPTkc7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MgfD0gUVVBRDsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBMT05H
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gYWdhaW47Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdxJzoKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MgfD0gUVVBRDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBhZ2FpbjsKPiArICAgICAgICAgICAgICAgIGNhc2UgJ2gnOgo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZmxhZ3MgJiBTSE9SVCl7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MgJj0gflNIT1JUOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzIHw9IFNIT1JUU0hPUlQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gU0hPUlQ7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byBh
Z2FpbjsKPiAgCj4gLQkJLyogZ2V0IGNvbnZlcnNpb24gcXVhbGlmaWVyICovCj4gLQkJcXVhbGlm
aWVyID0gLTE7Cj4gLQkJaWYgKCpmbXQgPT0gJ2gnIHx8ICpmbXQgPT0gJ2wnIHx8ICpmbXQgPT0g
J0wnIHx8Cj4gLQkJICAgICpmbXQgPT0gJ1onIHx8ICpmbXQgPT0gJ3onKSB7Cj4gLQkJCXF1YWxp
ZmllciA9ICpmbXQrKzsKPiAtCQkJaWYgKHVubGlrZWx5KHF1YWxpZmllciA9PSAqZm10KSkgewo+
IC0JCQkJaWYgKHF1YWxpZmllciA9PSAnaCcpIHsKPiAtCQkJCQlxdWFsaWZpZXIgPSAnSCc7Cj4g
LQkJCQkJZm10Kys7Cj4gLQkJCQl9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAnbCcpIHsKPiAtCQkJ
CQlxdWFsaWZpZXIgPSAnTCc7Cj4gLQkJCQkJZm10Kys7Cj4gLQkJCQl9Cj4gLQkJCX0KPiAtCQl9
Cj4gLQkJYmFzZSA9IDEwOwo+IC0JCWlzX3NpZ24gPSAwOwo+ICsgICAgICAgICAgICAgICAgY2Fz
ZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgo+ICsgICAgICAg
ICAgICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzkn
Ogo+ICsgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoICogMTAgKyBjIC0gJzAn
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOwo+ICAKPiAtCQlpZiAoISpm
bXQgfHwgISpzdHIpCj4gLQkJCWJyZWFrOwo+ICsgICAgICAgICAgICAgICAgLyoKPiArICAgICAg
ICAgICAgICAgICAqIENvbnZlcnNpb25zLgo+ICsgICAgICAgICAgICAgICAgICoKPiArICAgICAg
ICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICAgY2FzZSAnZCc6Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGMgPSBDVF9JTlQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNjZm4g
PSAoY2NmbnR5cGUpc3RydG9xOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTA7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAKPiAtCQlzd2l0Y2goKmZtdCsr
KSB7Cj4gLQkJY2FzZSAnYyc6Cj4gLQkJewo+IC0JCQljaGFyICpzID0gKGNoYXIgKikgdmFfYXJn
KGFyZ3MsY2hhciopOwo+IC0JCQlpZiAoZmllbGRfd2lkdGggPT0gLTEpCj4gLQkJCQlmaWVsZF93
aWR0aCA9IDE7Cj4gLQkJCWRvIHsKPiAtCQkJCSpzKysgPSAqc3RyKys7Cj4gLQkJCX0gd2hpbGUg
KC0tZmllbGRfd2lkdGggPiAwICYmICpzdHIpOwo+IC0JCQludW0rKzsKPiAtCQl9Cj4gLQkJY29u
dGludWU7Cj4gLQkJY2FzZSAncyc6Cj4gLQkJewo+IC0JCQljaGFyICpzID0gKGNoYXIgKikgdmFf
YXJnKGFyZ3MsIGNoYXIgKik7Cj4gLQkJCWlmKGZpZWxkX3dpZHRoID09IC0xKQo+IC0JCQkJZmll
bGRfd2lkdGggPSBJTlRfTUFYOwo+IC0JCQkvKiBmaXJzdCwgc2tpcCBsZWFkaW5nIHdoaXRlIHNw
YWNlIGluIGJ1ZmZlciAqLwo+IC0JCQl3aGlsZSAoaXNzcGFjZSgqc3RyKSkKPiAtCQkJCXN0cisr
Owo+IC0KPiAtCQkJLyogbm93IGNvcHkgdW50aWwgbmV4dCB3aGl0ZSBzcGFjZSAqLwo+IC0JCQl3
aGlsZSAoKnN0ciAmJiAhaXNzcGFjZSgqc3RyKSAmJiBmaWVsZF93aWR0aC0tKSB7Cj4gLQkJCQkq
cysrID0gKnN0cisrOwo+IC0JCQl9Cj4gLQkJCSpzID0gJ1wwJzsKPiAtCQkJbnVtKys7Cj4gLQkJ
fQo+IC0JCWNvbnRpbnVlOwo+IC0JCWNhc2UgJ24nOgo+IC0JCQkvKiByZXR1cm4gbnVtYmVyIG9m
IGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgKi8KPiAtCQl7Cj4gLQkJCWludCAqaSA9IChpbnQgKil2
YV9hcmcoYXJncyxpbnQqKTsKPiAtCQkJKmkgPSBzdHIgLSBidWY7Cj4gLQkJfQo+IC0JCWNvbnRp
bnVlOwo+IC0JCWNhc2UgJ28nOgo+IC0JCQliYXNlID0gODsKPiAtCQkJYnJlYWs7Cj4gLQkJY2Fz
ZSAneCc6Cj4gLQkJY2FzZSAnWCc6Cj4gLQkJCWJhc2UgPSAxNjsKPiAtCQkJYnJlYWs7Cj4gLQkJ
Y2FzZSAnaSc6Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdpJzoKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgYyA9IENUX0lOVDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IChj
Y2ZudHlwZSlzdHJ0b3E7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAwOwo+IC0J
CWNhc2UgJ2QnOgo+IC0JCQlpc19zaWduID0gMTsKPiAtCQljYXNlICd1JzoKPiAtCQkJYnJlYWs7
Cj4gLQkJY2FzZSAnJSc6Cj4gLQkJCS8qIGxvb2tpbmcgZm9yICclJyBpbiBzdHIgKi8KPiAtCQkJ
aWYgKCpzdHIrKyAhPSAnJScpIAo+IC0JCQkJcmV0dXJuIG51bTsKPiAtCQkJY29udGludWU7Cj4g
LQkJZGVmYXVsdDoKPiAtCQkJLyogaW52YWxpZCBmb3JtYXQ7IHN0b3AgaGVyZSAqLwo+IC0JCQly
ZXR1cm4gbnVtOwo+IC0JCX0KPiAtCj4gLQkJLyogaGF2ZSBzb21lIHNvcnQgb2YgaW50ZWdlciBj
b252ZXJzaW9uLgo+IC0JCSAqIGZpcnN0LCBza2lwIHdoaXRlIHNwYWNlIGluIGJ1ZmZlci4KPiAt
CQkgKi8KPiAtCQl3aGlsZSAoaXNzcGFjZSgqc3RyKSkKPiAtCQkJc3RyKys7Cj4gLQo+IC0JCWRp
Z2l0ID0gKnN0cjsKPiAtCQlpZiAoaXNfc2lnbiAmJiBkaWdpdCA9PSAnLScpCj4gLQkJCWRpZ2l0
ID0gKihzdHIgKyAxKTsKPiAtCj4gLQkJaWYgKCFkaWdpdAo+IC0gICAgICAgICAgICAgICAgICAg
IHx8IChiYXNlID09IDE2ICYmICFpc3hkaWdpdChkaWdpdCkpCj4gLSAgICAgICAgICAgICAgICAg
ICAgfHwgKGJhc2UgPT0gMTAgJiYgIWlzZGlnaXQoZGlnaXQpKQo+IC0gICAgICAgICAgICAgICAg
ICAgIHx8IChiYXNlID09IDggJiYgKCFpc2RpZ2l0KGRpZ2l0KSB8fCBkaWdpdCA+ICc3JykpCj4g
LSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gMCAmJiAhaXNkaWdpdChkaWdpdCkpKQo+
IC0JCQkJYnJlYWs7Cj4gLQo+IC0JCXN3aXRjaChxdWFsaWZpZXIpIHsKPiAtCQljYXNlICdIJzoJ
LyogdGhhdCdzICdoaCcgaW4gZm9ybWF0ICovCj4gLQkJCWlmIChpc19zaWduKSB7Cj4gLQkJCQlz
aWduZWQgY2hhciAqcyA9IChzaWduZWQgY2hhciAqKSB2YV9hcmcoYXJncyxzaWduZWQgY2hhciAq
KTsKPiAtCQkJCSpzID0gKHNpZ25lZCBjaGFyKSBzaW1wbGVfc3RydG9sKHN0ciwmbmV4dCxiYXNl
KTsKPiAtCQkJfSBlbHNlIHsKPiAtCQkJCXVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hh
ciAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgY2hhciAqKTsKPiAtCQkJCSpzID0gKHVuc2lnbmVk
IGNoYXIpIHNpbXBsZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJhc2UpOwo+IC0JCQl9Cj4gLQkJCWJy
ZWFrOwo+IC0JCWNhc2UgJ2gnOgo+IC0JCQlpZiAoaXNfc2lnbikgewo+IC0JCQkJc2hvcnQgKnMg
PSAoc2hvcnQgKikgdmFfYXJnKGFyZ3Msc2hvcnQgKik7Cj4gLQkJCQkqcyA9IChzaG9ydCkgc2lt
cGxlX3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJCX0gZWxzZSB7Cj4gLQkJCQl1bnNpZ25l
ZCBzaG9ydCAqcyA9ICh1bnNpZ25lZCBzaG9ydCAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgc2hv
cnQgKik7Cj4gLQkJCQkqcyA9ICh1bnNpZ25lZCBzaG9ydCkgc2ltcGxlX3N0cnRvdWwoc3RyLCAm
bmV4dCwgYmFzZSk7Cj4gLQkJCX0KPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSAnbCc6Cj4gLQkJCWlm
IChpc19zaWduKSB7Cj4gLQkJCQlsb25nICpsID0gKGxvbmcgKikgdmFfYXJnKGFyZ3MsbG9uZyAq
KTsKPiAtCQkJCSpsID0gc2ltcGxlX3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJCX0gZWxz
ZSB7Cj4gLQkJCQl1bnNpZ25lZCBsb25nICpsID0gKHVuc2lnbmVkIGxvbmcqKSB2YV9hcmcoYXJn
cyx1bnNpZ25lZCBsb25nKik7Cj4gLQkJCQkqbCA9IHNpbXBsZV9zdHJ0b3VsKHN0ciwmbmV4dCxi
YXNlKTsKPiAtCQkJfQo+IC0JCQlicmVhazsKPiAtCQljYXNlICdMJzoKPiAtCQkJaWYgKGlzX3Np
Z24pIHsKPiAtCQkJCWxvbmcgbG9uZyAqbCA9IChsb25nIGxvbmcqKSB2YV9hcmcoYXJncyxsb25n
IGxvbmcgKik7Cj4gLQkJCQkqbCA9IHNpbXBsZV9zdHJ0b2xsKHN0ciwmbmV4dCxiYXNlKTsKPiAt
CQkJfSBlbHNlIHsKPiAtCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyAqbCA9ICh1bnNpZ25lZCBsb25n
IGxvbmcqKSB2YV9hcmcoYXJncyx1bnNpZ25lZCBsb25nIGxvbmcqKTsKPiAtCQkJCSpsID0gc2lt
cGxlX3N0cnRvdWxsKHN0ciwmbmV4dCxiYXNlKTsKPiAtCQkJfQo+IC0JCQlicmVhazsKPiAtCQlj
YXNlICdaJzoKPiAtCQljYXNlICd6JzoKPiAtCQl7Cj4gLQkJCXNpemVfdCAqcyA9IChzaXplX3Qq
KSB2YV9hcmcoYXJncyxzaXplX3QqKTsKPiAtCQkJKnMgPSAoc2l6ZV90KSBzaW1wbGVfc3RydG91
bChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJfQo+IC0JCWJyZWFrOwo+IC0JCWRlZmF1bHQ6Cj4gLQkJ
CWlmIChpc19zaWduKSB7Cj4gLQkJCQlpbnQgKmkgPSAoaW50ICopIHZhX2FyZyhhcmdzLCBpbnQq
KTsKPiAtCQkJCSppID0gKGludCkgc2ltcGxlX3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJ
CX0gZWxzZSB7Cj4gLQkJCQl1bnNpZ25lZCBpbnQgKmkgPSAodW5zaWduZWQgaW50KikgdmFfYXJn
KGFyZ3MsIHVuc2lnbmVkIGludCopOwo+IC0JCQkJKmkgPSAodW5zaWduZWQgaW50KSBzaW1wbGVf
c3RydG91bChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJCX0KPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0J
CW51bSsrOwo+IC0KPiAtCQlpZiAoIW5leHQpCj4gLQkJCWJyZWFrOwo+IC0JCXN0ciA9IG5leHQ7
Cj4gLQl9Cj4gLQlyZXR1cm4gbnVtOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
PiArCj4gKyAgICAgICAgICAgICAgICBjYXNlICdvJzoKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgYyA9IENUX0lOVDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IHN0cnRvdXE7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4Owo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgICAgICBjYXNlICd1JzoKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
Y2NmbiA9IHN0cnRvdXE7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2Fz
ZSAneCc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBGWE9LOyAvKiBlbmFi
bGUgMHggcHJlZml4aW5nICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDVF9JTlQ7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNjZm4gPSBzdHJ0b3VxOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlID0gMTY7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
Owo+ICsKPiArICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBjID0gQ1RfU1RSSU5HOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAr
Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdbJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAg
Zm10ID0gX19zY2NsKGNjbHRhYiwgZm10KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3MgfD0gTk9TS0lQOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfQ0NMOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgICAgICBjYXNl
ICdjJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTk9TS0lQOwo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICBjID0gQ1RfQ0hBUjsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2FzZSAncCc6ICAgICAgIC8qIHBvaW50
ZXIgZm9ybWF0IGlzIGxpa2UgaGV4ICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
IHw9IFBPSU5URVIgfCBQRlhPSzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0lO
VDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IHN0cnRvdXE7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2FzZSAnbic6Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5jb252ZXJzaW9ucysrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxh
Z3MgJiBTVVBQUkVTUykgICAvKiA/Pz8gKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU0hP
UlRTSE9SVCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBj
aGFyICopID0gbnJlYWQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdz
ICYgU0hPUlQpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwg
c2hvcnQgKikgPSBucmVhZDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxh
Z3MgJiBMT05HKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAs
IGxvbmcgKikgPSBucmVhZDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxh
Z3MgJiBRVUFEKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAs
IGludDY0X3QgKikgPSBucmVhZDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAsIGludCAqKSA9IG5yZWFk
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICAgICAgICAg
IH0KPiArCj4gKyAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICogV2UgaGF2
ZSBhIGNvbnZlcnNpb24gdGhhdCByZXF1aXJlcyBpbnB1dC4KPiArICAgICAgICAgICAgICAgICAq
Lwo+ICsgICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGlucHV0X2ZhaWx1cmU7Cj4gKwo+ICsgICAgICAgICAgICAgICAgLyoKPiArICAg
ICAgICAgICAgICAgICAqIENvbnN1bWUgbGVhZGluZyB3aGl0ZSBzcGFjZSwgZXhjZXB0IGZvciBm
b3JtYXRzCj4gKyAgICAgICAgICAgICAgICAgKiB0aGF0IHN1cHByZXNzIHRoaXMuCj4gKyAgICAg
ICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBOT1NLSVApID09
IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmlucCkpIHsK
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCsrOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgtLWluciA+IDApCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnArKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGlucHV0X2ZhaWx1cmU7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogTm90ZSB0
aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICogdGhlIGJ1ZmZlciwgc28gY29udmVyc2lvbnMgdGhhdCBkbyBub3Qgc2V0IE5P
U0tJUAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBjYW4gbm8gbG9uZ2VyIHJlc3VsdCBp
biBhbiBpbnB1dCBmYWlsdXJlLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAg
ICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAg
ICAgICogRG8gdGhlIGNvbnZlcnNpb24uCj4gKyAgICAgICAgICAgICAgICAgKi8KPiArICAgICAg
ICAgICAgICAgIHN3aXRjaCAoYykgewo+ICsKPiArICAgICAgICAgICAgICAgIGNhc2UgQ1RfQ0hB
UjoKPiArICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NhbiBhcmJpdHJhcnkgY2hhcmFjdGVy
cyAoc2V0cyBOT1NLSVApICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9
PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU1VQUFJFU1MpIHsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3VtID0gMDsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKG4gPSBpbnIpIDwgd2lkdGgpIHsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IG47Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IG47Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucCArPSBuOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VtID09
IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBpbnB1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1bSArPSB3aWR0aDsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5yIC09IHdpZHRoOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAgKz0gd2lkdGg7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCAr
PSBzdW07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHZhX2FyZyhhcCwgY2hhciAqKSwgaW5wLCB3aWR0
aCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5yIC09IHdpZHRoOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucCArPSB3aWR0aDsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBucmVhZCArPSB3aWR0aDsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuYXNzaWduZWQrKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
fQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMrKzsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2FzZSBDVF9DQ0w6
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjYW4gYSAobm9uZW1wdHkpIGNoYXJhY3Rl
ciBjbGFzcyAoc2V0cyBOT1NLSVApICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3
aWR0aCA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gKHNp
emVfdCl+MDsgICAgIC8qIGBpbmZpbml0eScgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAg
LyogdGFrZSBvbmx5IHRob3NlIHRoaW5ncyBpbiB0aGUgY2xhc3MgKi8KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGZsYWdzICYgU1VQUFJFU1MpIHsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuID0gMDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoY2NsdGFiWyh1bnNpZ25lZCBjaGFyKSppbnBdKSB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuKyssIGluci0tLCBpbnArKzsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLXdpZHRoID09IDApCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKSB7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09IDApCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBpbnB1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbWF0Y2hfZmFpbHVyZTsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
MCA9IHAgPSB2YV9hcmcoYXAsIGNoYXIgKik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKGNjbHRhYlsodW5zaWduZWQgY2hhcikqaW5wXSkgewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5yLS07Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gKmlucCsrOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0td2lkdGggPT0gMCkKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5yIDw9IDApIHsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPT0gcDApCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBpbnB1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbiA9IHAgLSBwMDsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobiA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBtYXRjaF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpwID0gMDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNzaWdu
ZWQrKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBucmVhZCArPSBuOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMr
KzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAg
ICAgY2FzZSBDVF9TVFJJTkc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxpa2UgQ0NM
LCBidXQgemVyby1sZW5ndGggc3RyaW5nIE9LLCAmIG5vIE5PU0tJUCAqLwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAod2lkdGggPT0gMCkKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCA9IChzaXplX3QpfjA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmbGFncyAmIFNVUFBSRVNTKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
biA9IDA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFpc3NwYWNl
KCppbnApKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKyss
IGluci0tLCBpbnArKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgtLXdpZHRoID09IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGluciA8PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWQgKz0gbjsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwMCA9IHAgPSB2YV9hcmcoYXAsIGNoYXIgKik7Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKCFpc3NwYWNlKCppbnApKSB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnItLTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpwKysgPSAqaW5wKys7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoLS13aWR0aCA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnIgPD0gMCkKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwID0g
MDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCArPSBwIC0gcDA7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFzc2lnbmVkKys7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgbmNvbnZlcnNpb25z
Kys7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgICAg
ICAgICAgIGNhc2UgQ1RfSU5UOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2FuIGFu
IGludGVnZXIgYXMgaWYgYnkgc3RydG9xL3N0cnRvdXEgKi8KPiArI2lmZGVmIGhhcmR3YXkKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IDAgfHwgd2lkdGggPiBzaXplb2Yo
YnVmKSAtIDEpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzaXpl
b2YoYnVmKSAtIDE7Cj4gKyNlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemVf
dCBpcyB1bnNpZ25lZCwgaGVuY2UgdGhpcyBvcHRpbWlzYXRpb24gKi8KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKC0td2lkdGggPiBzaXplb2YoYnVmKSAtIDIpCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzaXplb2YoYnVmKSAtIDI7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoKys7Cj4gKyNlbmRpZgo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncyB8PSBTSUdOT0sgfCBORElHSVRTIHwgTlpESUdJVFM7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAocCA9IGJ1Zjsgd2lkdGg7IHdpZHRoLS0pIHsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjID0gKmlucDsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFN3aXRj
aCBvbiB0aGUgY2hhcmFjdGVyOyBgZ290byBvaycKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBpZiB3ZSBhY2NlcHQgaXQgYXMgYSBwYXJ0IG9mIG51bWJlci4KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGMpIHsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgZGlnaXQgMCBp
cyBhbHdheXMgbGVnYWwsIGJ1dCBpcwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqIHNwZWNpYWwuICBGb3IgJWkgY29udmVyc2lvbnMsIGlmIG5vCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICogZGlnaXRzICh6ZXJvIG9yIG5vbnplcm8pIGhhdmUgYmVlbgo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNjYW5uZWQgKG9ubHkgc2lnbnMp
LCB3ZSB3aWxsIGhhdmUKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiYXNl
PT0wLiAgSW4gdGhhdCBjYXNlLCB3ZSBzaG91bGQgc2V0Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICogaXQgdG8gOCBhbmQgZW5hYmxlIDB4IHByZWZpeGluZy4KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBBbHNvLCBpZiB3ZSBoYXZlIG5vdCBzY2FubmVk
IHplcm8gZGlnaXRzCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYmVmb3Jl
IHRoaXMsIGRvIG5vdCB0dXJuIG9mZiBwcmVmaXhpbmcKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiAoc29tZW9uZSBlbHNlIHdpbGwgdHVybiBpdCBvZmYgaWYgd2UKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoYXZlIHNjYW5uZWQgYW55IG5vbnplcm8g
ZGlnaXRzKS4KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzoKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlID09IDApIHsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBGWE9LOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgTlpESUdJVFMpCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfihTSUdOT0t8
TlpESUdJVFN8TkRJR0lUUyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MgJj0gfihTSUdOT0t8UEZYT0t8TkRJR0lUUyk7Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIG9rOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiAxIHRocm91Z2ggNyBhbHdheXMgbGVnYWwgKi8KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6
IGNhc2UgJzcnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZSA9IGJhc2VmaXhbYmFzZV07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncyAmPSB+KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9rOwo+ICsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBkaWdpdHMgOCBhbmQgOSBvayBpZmYgZGVjaW1hbCBvciBo
ZXggKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc4JzogY2FzZSAn
OSc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gYmFz
ZWZpeFtiYXNlXTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChiYXNlIDw9IDgpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOyAgLyogbm90IGxlZ2FsIGhlcmUgKi8KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IH4oU0lHTk9LIHwgUEZYT0sgfCBORElHSVRT
KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2s7Cj4g
Kwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxldHRlcnMgb2sgaWZmIGhl
eCAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0EnOiBjYXNlICdC
JzogY2FzZSAnQyc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRCc6
IGNhc2UgJ0UnOiBjYXNlICdGJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICdhJzogY2FzZSAnYic6IGNhc2UgJ2MnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ2QnOiBjYXNlICdlJzogY2FzZSAnZic6Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBuZWVkIHRvIGZpeCBiYXNlIGhlcmUgKi8KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlIDw9IDEwKQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsg
IC8qIG5vdCBsZWdhbCBoZXJlICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncyAmPSB+KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9rOwo+ICsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBzaWduIG9rIG9ubHkgYXMgZmlyc3QgY2hhcmFjdGVy
ICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnKyc6IGNhc2UgJy0n
Ogo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYg
U0lHTk9LKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzICY9IH5TSUdOT0s7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gb2s7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeCBvayBpZmYg
ZmxhZyBzdGlsbCBzZXQgJiAybmQgY2hhciAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ3gnOiBjYXNlICdYJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmbGFncyAmIFBGWE9LICYmIHAgPT0gYnVmICsgMSkgewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7ICAg
ICAgLyogaWYgJWkgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MgJj0gflBGWE9LOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIG9rOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqIElmIHdlIGdvdCBoZXJlLCBjIGlzIG5vdCBhIGxlZ2FsIGNoYXJhY3Rlcgo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZvciBhIG51bWJlci4gIFN0b3Ag
YWNjdW11bGF0aW5nIGRpZ2l0cy4KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAg
ICAgICAgIG9rOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYyBpcyBsZWdhbDogc3RvcmUgaXQgYW5kIGxv
b2sgYXQgdGhlIG5leHQuCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKC0taW5yID4gMCkKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlucCsrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgLyogZW5kIG9mIGlucHV0ICovCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICogSWYgd2UgaGFkIG9ubHkgYSBzaWduLCBpdCBpcyBubyBnb29kOyBwdXNoCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAqIGJhY2sgdGhlIHNpZ24uICBJZiB0aGUgbnVtYmVyIGVu
ZHMgaW4gYHgnLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCB3YXMgW3NpZ25dICcn
ICd4Jywgc28gcHVzaCBiYWNrIHRoZSB4Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGFu
ZCB0cmVhdCBpdCBhcyBbc2lnbl0gJycuCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBORElHSVRTKSB7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPiBidWYpIHsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0tOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5yKys7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbWF0Y2hfZmFp
bHVyZTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBjID0gKCh1X2NoYXIgKilwKVstMV07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjID09ICd4JyB8fCBjID09ICdYJykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0tcDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAtLTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnIrKzsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgU1VQUFJFU1Mp
ID09IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZXM7
Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwID0gMDsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSAoKmNjZm4pKGJ1ZiwgKGNoYXIgKiopTlVM
TCwgYmFzZSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYg
UE9JTlRFUikKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9h
cmcoYXAsIHZvaWQgKiopID0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHZvaWQgKikodWludHB0cl90KXJlczsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIFNIT1JUU0hPUlQpCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBjaGFyICopID0gcmVzOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgU0hPUlQp
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBz
aG9ydCAqKSA9IHJlczsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChmbGFncyAmIExPTkcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqdmFfYXJnKGFwLCBsb25nICopID0gcmVzOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGZsYWdzICYgUVVBRCkKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICp2YV9hcmcoYXAsIGludDY0X3QgKikgPSByZXM7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgaW50ICopID0gcmVzOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5hc3NpZ25lZCsrOwo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkICs9IHAgLSBidWY7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5jb252ZXJzaW9ucysrOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICtpbnB1
dF9mYWlsdXJlOgo+ICsgICAgICAgIHJldHVybiAobmNvbnZlcnNpb25zICE9IDAgPyBuYXNzaWdu
ZWQgOiAtMSk7Cj4gK21hdGNoX2ZhaWx1cmU6Cj4gKyAgICAgICAgcmV0dXJuIChuYXNzaWduZWQp
Owo+ICB9Cj4gIAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvdHBtYmFjay5jIGIvdHBtYmFjay5jCj4g
aW5kZXggMDBiNjZlOC4uMjJhZGJkMyAxMDA2NDQKPiAtLS0gYS90cG1iYWNrLmMKPiArKysgYi90
cG1iYWNrLmMKPiBAQCAtNTIsMTAgKzUyLDYgQEAKPiAgI2luY2x1ZGUgPG1pbmktb3Mvd2FpdC5o
Pgo+ICAKPiAgCj4gLSNpZm5kZWYgSEFWRV9MSUJDCj4gLSNkZWZpbmUgc3RydG91bCBzaW1wbGVf
c3RydG91bAo+IC0jZW5kaWYKPiAtCj4gIC8vI2RlZmluZSBUUE1CQUNLX1BSSU5UX0RFQlVHCj4g
ICNpZmRlZiBUUE1CQUNLX1BSSU5UX0RFQlVHCj4gICNkZWZpbmUgVFBNQkFDS19ERUJVRyhmbXQs
Li4uKSBwcmludGsoIlRwbWJhY2s6RGVidWcoIl9fRklMRV9fIjolZCkgIiBmbXQsIF9fTElORV9f
LCAjI19fVkFfQVJHU19fKQo+IC0tIAo+IDIuNi42Cj4gCgotLSAKU2FtdWVsCkFzIHVzdWFsLCB0
aGlzIGJlaW5nIGEgMS4zLnggcmVsZWFzZSwgSSBoYXZlbid0IGV2ZW4gY29tcGlsZWQgdGhpcwpr
ZXJuZWwgeWV0LiAgU28gaWYgaXQgd29ya3MsIHlvdSBzaG91bGQgYmUgZG91Ymx5IGltcHJlc3Nl
ZC4KKExpbnVzIFRvcnZhbGRzLCBhbm5vdW5jaW5nIGtlcm5lbCAxLjMuMyBvbiB0aGUgbGludXgt
a2VybmVsIG1haWxpbmcgbGlzdC4pCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 08:48:55 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 08:48:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bMtN8-0002Ya-NR; Tue, 12 Jul 2016 08:48:54 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bMtN7-0002YR-R0; Tue, 12 Jul 2016 08:48:54 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 8D/5E-09256-5FEA4875; Tue, 12 Jul 2016 08:48:53 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGIsWRWlGSWpSXmKPExsVyoG1JsO7ndS3
 hBq+PiFq8/bqE2eL7lslMDkwehz9cYQlgjGLNzEvKr0hgzfh5aBZzwfYzLBX35lxnbmC8v5qp
 i5GTQ0LAX+Lw+RfsXYxcHEICmxglDj7bwQLhbGCUuDpxPStIFYuAqsSkRUdYQGw2AROJ/sZ5b
 CC2iICFxIWuM8wgNrNAosSi358YQWxhgWCJvl9PwTbwClhKvDv2CmwDr8B1Rokle6eANQsJ2E
 vM+DGfGaJIUOLkzCcsEIO0JG78ewnUzAFkS0ss/8cBYnIKOEi0HmQHMUUFzCS+/TSYwCgwC0n
 vLCS9sxB6FzAyr2JUL04tKkst0jXSSyrKTM8oyU3MzNE1NDDTy00tLk5MT81JTCrWS87P3cQI
 DFMGINjBuOyv0yFGSQ4mJVHeZuaWcCG+pPyUyozE4oz4otKc1OJDjDIcHEoSvAfXAuUEi1LTU
 yvSMnOAEQOTluDgURLhDQdJ8xYXJOYWZ6ZDpE4x6nJsmXF/LZMQS15+XqqUOO9lkCIBkKKM0j
 y4EbDovcQoKyXMywh0lBBPQWpRbmYJqvwrRnEORiVh3jcgU3gy80rgNr0COoIJ6Ihah2aQI0o
 SEVJSDYx17/nsrA27irfsPKF/TXqtzh25Cbe8duxxnDvbOs7pVoHpitcHl4icMPhi+ZtFdo7r
 lJXqabfU92wIPrb1hsu5ysetC250BxdZ7fuSvn/dq4fX13jdm9HhbMik0r9y+rqOJav2Pzj/s
 NSqJKjLv2eK6+XcJrbzvyL3bPlwuyGMb+bseg2p11UPlFiKMxINtZiLihMByIQdxNkCAAA=
X-Env-Sender: samuel.thibault@ens-lyon.org
X-Msg-Ref: server-5.tower-21.messagelabs.com!1468313330!23412319!1
X-Originating-IP: [192.134.164.83]
X-SpamReason: No, hits=2.3 required=7.0 tests=BODY_FWORD,
 BODY_RANDOM_LONG,MAILTO_TO_SPAM_ADDR
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 17547 invoked from network); 12 Jul 2016 08:48:51 -0000
Received: from mail2-relais-roc.national.inria.fr (HELO
 mail2-relais-roc.national.inria.fr) (192.134.164.83)
 by server-5.tower-21.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted
 SMTP; 12 Jul 2016 08:48:51 -0000
X-IronPort-AV: E=Sophos;i="5.28,351,1464645600"; d="scan'208";a="226434243"
Received: from unknown (HELO var.youpi.perso.aquilenet.fr) ([193.50.110.245])
 by mail2-relais-roc.national.inria.fr with
 ESMTP/TLS/AES256-GCM-SHA384; 12 Jul 2016 10:48:50 +0200
Received: from samy by var.youpi.perso.aquilenet.fr with local (Exim 4.87)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1bMtN4-0002Z9-5Z; Tue, 12 Jul 2016 10:48:50 +0200
Date: Tue, 12 Jul 2016 10:48:50 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>, wei.liu2@citrix.com
Message-ID: <20160712084850.GF3654@var.bordeaux.inria.fr>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, wei.liu2@citrix.com,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
References: <1467623819-31378-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1467623819-31378-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 andrew.cooper3@citrix.com
Subject: Re: [Minios-devel] [PATCH v2] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SnVlcmdlbiBHcm9zcywgb24gTW9uIDA0IEp1bCAyMDE2IDExOjE2OjU5ICswMjAwLCB3cm90ZToK
PiBJbnN0ZWFkIG9mIGEgTGludXgga2VybmVsIGJhc2VkIGltcGxlbWVudGF0aW9uIHVzZSBvbmUg
ZnJvbSBmcmVlQlNELgo+IAo+IEFzIGEgcmVzdWx0IHNvbWUgb2YgdGhlIHByaW50aW5ncyB3aWxs
IGNoYW5nZSBkdWUgdG8gbW9yZSBwb3NpeCBsaWtlCj4gYmVoYXZpb3Igb2YgJXAgZm9ybWF0IChv
bWl0dGluZyBsZWFkaW5nIHplcm9lcywgcHJlcGVuZGluZyAiMHgiKS4KPiAKPiBTaWduZWQtb2Zm
LWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CgpBY2tlZC1ieTogU2FtdWVsIFRo
aWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgoKPiAtLS0KPiBWMjogcmVtb3Zl
IGluY2x1ZGUvbGliLWdwbC5oIGFzIHJlcXVlc3RlZCBieSBTYW11ZWwgVGhpYmF1bHQKPiAtLS0K
PiAgYmxrZnJvbnQuYyAgICAgICAgfCAgICA0IC0KPiAgaW5jbHVkZS9saWItZ3BsLmggfCAgIDU5
IC0tCj4gIGluY2x1ZGUvbGliLmggICAgIHwgICAyNyArLQo+ICBsaWIvcHJpbnRmLmMgICAgICB8
IDE3NDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t
LS0KPiAgdHBtYmFjay5jICAgICAgICAgfCAgICA0IC0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMTE5
IGluc2VydGlvbnMoKyksIDcxOSBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGlu
Y2x1ZGUvbGliLWdwbC5oCj4gCj4gZGlmZiAtLWdpdCBhL2Jsa2Zyb250LmMgYi9ibGtmcm9udC5j
Cj4gaW5kZXggYmRiNzc2NS4uZjc0NzIxNiAxMDA2NDQKPiAtLS0gYS9ibGtmcm9udC5jCj4gKysr
IGIvYmxrZnJvbnQuYwo+IEBAIC0xNywxMCArMTcsNiBAQAo+ICAjaW5jbHVkZSA8bWluaS1vcy9s
aWIuaD4KPiAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4gIAo+IC0jaWZuZGVmIEhBVkVfTElCQwo+IC0j
ZGVmaW5lIHN0cnRvdWwgc2ltcGxlX3N0cnRvdWwKPiAtI2VuZGlmCj4gLQo+ICAvKiBOb3RlOiB3
ZSBnZW5lcmFsbHkgZG9uJ3QgbmVlZCB0byBkaXNhYmxlIElSUXMgc2luY2Ugd2UgaGFyZGx5IGRv
IGFueXRoaW5nIGluCj4gICAqIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gICovCj4gIAo+IGRpZmYg
LS1naXQgYS9pbmNsdWRlL2xpYi1ncGwuaCBiL2luY2x1ZGUvbGliLWdwbC5oCj4gZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggZDU2MDJiMi4uMDAwMDAwMAo+IC0tLSBhL2luY2x1ZGUv
bGliLWdwbC5oCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDU5ICswLDAgQEAKPiAtLyogLSotICBN
b2RlOkM7IGMtYmFzaWMtb2Zmc2V0OjQ7IHRhYi13aWR0aDo0IC0qLQo+IC0gKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgo+IC0gKiAoQykgMjAwMyAtIFJvbGYgTmV1Z2ViYXVlciAtIEludGVsIFJlc2VhcmNo
IENhbWJyaWRnZQo+IC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+IC0gKgo+IC0gKiAgICAgICAgRmls
ZTogbGliLmgKPiAtICogICAgICBBdXRob3I6IFJvbGYgTmV1Z2ViYXVlciAobmV1Z2ViYXJAZGNz
LmdsYS5hYy51aykKPiAtICogICAgIENoYW5nZXM6IAo+IC0gKiAgICAgICAgICAgICAgCj4gLSAq
ICAgICAgICBEYXRlOiBBdWcgMjAwMwo+IC0gKiAKPiAtICogRW52aXJvbm1lbnQ6IFhlbiBNaW5p
bWFsIE9TCj4gLSAqIERlc2NyaXB0aW9uOiBSYW5kb20gdXNlZnVsIGxpYnJhcnkgZnVuY3Rpb25z
LCBmcm9tIExpbnV4Jwo+IC0gKiBpbmNsdWRlL2xpbnV4L2tlcm5lbC5oCj4gLSAqCj4gLSAqICBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQo+IC0gKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiAtICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gLSAqICAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+IC0gKgo+IC0gKiAgVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgo+IC0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZQo+IC0gKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KPiAtICoKPiAtICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gLSAqICBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+IC0gKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKPiAtICovCj4gLQo+IC0jaWZuZGVmIF9MSUJfR1BMX0hfCj4gLSNkZWZp
bmUgX0xJQl9HUExfSF8KPiAtCj4gLSNpZm5kZWYgSEFWRV9MSUJDCj4gLS8qIHByaW50aW5nICov
Cj4gLWV4dGVybiB1bnNpZ25lZCBsb25nIHNpbXBsZV9zdHJ0b3VsKGNvbnN0IGNoYXIgKixjaGFy
ICoqLHVuc2lnbmVkIGludCk7Cj4gLWV4dGVybiBsb25nIHNpbXBsZV9zdHJ0b2woY29uc3QgY2hh
ciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKPiAtZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBz
aW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKPiAtZXh0
ZXJuIGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25l
ZCBpbnQpOwo+IC0KPiAtZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIg
KiBmbXQsIC4uLikKPiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsK
PiAtZXh0ZXJuIGludCB2c3ByaW50ZihjaGFyICpidWYsIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCkK
PiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMCkpKTsKPiAtZXh0ZXJuIGlu
dCBzbnByaW50ZihjaGFyICogYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqIGZtdCwgLi4u
KQo+IC0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwo+IC1leHRlcm4g
aW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZh
X2xpc3QgYXJncykKPiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgMCkpKTsK
PiAtZXh0ZXJuIGludCBzY25wcmludGYoY2hhciAqIGJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNo
YXIgKiBmbXQsIC4uLikKPiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkp
KTsKPiAtZXh0ZXJuIGludCB2c2NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0
IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQo+IC0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJp
bnRmLCAzLCAwKSkpOwo+IC1leHRlcm4gaW50IHNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgLi4uKQo+IC0JX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsIDIsIDMpKSk7Cj4g
LWV4dGVybiBpbnQgdnNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCkK
PiAtCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLCAyLCAwKSkpOwo+IC0jZW5kaWYKPiAt
Cj4gLSNlbmRpZiAvKiBfTElCX0dQTF9IXyAqLwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi5o
IGIvaW5jbHVkZS9saWIuaAo+IGluZGV4IDYyODM2YzcuLjM5ZDZhMTggMTAwNjQ0Cj4gLS0tIGEv
aW5jbHVkZS9saWIuaAo+ICsrKyBiL2luY2x1ZGUvbGliLmgKPiBAQCAtNjYsMTEgKzY2LDYgQEAK
PiAgI2lmZGVmIEhBVkVfTElCQwo+ICAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+Cj4gICNpbmNsdWRl
IDxzdGRpby5oPgo+IC0jZWxzZQo+IC0jaW5jbHVkZSA8bGliLWdwbC5oPgo+IC0jZW5kaWYKPiAt
Cj4gLSNpZmRlZiBIQVZFX0xJQkMKPiAgI2luY2x1ZGUgPHN0cmluZy5oPgo+ICAjZWxzZQo+ICAv
KiBzdHJpbmcgYW5kIG1lbW9yeSBtYW5pcHVsYXRpb24gKi8KPiBAQCAtMTA3LDYgKzEwMiwyOCBA
QCBjaGFyICpzdHJyY2hyKGNvbnN0IGNoYXIgKnAsIGludCBjaCk7Cj4gIHZvaWQJKm1lbWNweSh2
b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IGxlbik7Cj4gIAo+ICBzaXplX3Qgc3Ry
bmxlbihjb25zdCBjaGFyICosIHNpemVfdCk7Cj4gKwo+ICt1bnNpZ25lZCBsb25nIHN0cnRvdWwo
Y29uc3QgY2hhciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpOwo+ICtpbnQ2NF90IHN0
cnRvcShjb25zdCBjaGFyICpucHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSk7Cj4gK3VpbnQ2
NF90IHN0cnRvdXEoY29uc3QgY2hhciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpOwo+
ICsKPiArZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIC4u
LikKPiArICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDIsIDMpKSk7Cj4g
K2V4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCj4g
KyAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAyLCAwKSkpOwo+ICtleHRl
cm4gaW50IHNucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICogZm10
LCAuLi4pCj4gKyAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkp
Owo+ICtleHRlcm4gaW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBj
aGFyICpmbXQsIHZhX2xpc3QgYXJncykKPiArICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0
IChwcmludGYsIDMsIDApKSk7Cj4gK2V4dGVybiBpbnQgc2NucHJpbnRmKGNoYXIgKiBidWYsIHNp
emVfdCBzaXplLCBjb25zdCBjaGFyICogZm10LCAuLi4pCj4gKyAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwo+ICtleHRlcm4gaW50IHZzY25wcmludGYoY2hh
ciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCj4gKyAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCAwKSkpOwo+ICtleHRlcm4g
aW50IHNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKQo+ICsgICAgICAgIF9f
YXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLCAyLCAzKSkpOwo+ICtleHRlcm4gaW50IHZzc2Nh
bmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpCj4gKyAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsIDIsIDApKSk7Cj4gKwo+ICAjZW5kaWYKPiAgCj4gICNp
bmNsdWRlIDxtaW5pLW9zL2NvbnNvbGUuaD4KPiBkaWZmIC0tZ2l0IGEvbGliL3ByaW50Zi5jIGIv
bGliL3ByaW50Zi5jCj4gaW5kZXggNDBmOTJmYy4uZTQ4YWI2MSAxMDA2NDQKPiAtLS0gYS9saWIv
cHJpbnRmLmMKPiArKysgYi9saWIvcHJpbnRmLmMKPiBAQCAtMSw1MCArMSw1MyBAQAo+ICAvKgo+
ICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgo+IC0gKiAoQykgMjAwMyAtIFJvbGYgTmV1Z2ViYXVlciAt
IEludGVsIFJlc2VhcmNoIENhbWJyaWRnZQo+IC0gKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICAgKgo+
ICAgKiAgICAgICAgRmlsZTogcHJpbnRmLmMKPiAtICogICAgICBBdXRob3I6IFJvbGYgTmV1Z2Vi
YXVlciAobmV1Z2ViYXJAZGNzLmdsYS5hYy51aykKPiAtICogICAgIENoYW5nZXM6IEdyemVnb3J6
IE1pbG9zIChnbTI4MUBjYW0uYWMudWspIAo+ICsgKiAgICAgIEF1dGhvcjogSnVlcmdlbiBHcm9z
cyA8amdyb3NzQHN1c2UuY29tPgo+ICAgKgo+IC0gKiAgICAgICAgRGF0ZTogQXVnIDIwMDMsIEF1
ZyAyMDA1Cj4gKyAqICAgICAgICBEYXRlOiBKdW4gMjAxNgo+ICAgKgo+ICAgKiBFbnZpcm9ubWVu
dDogWGVuIE1pbmltYWwgT1MKPiAgICogRGVzY3JpcHRpb246IExpYnJhcnkgZnVuY3Rpb25zIGZv
ciBwcmludGluZwo+IC0gKiAgICAgICAgICAgICAgKExpbnV4IHBvcnQsIG1haW5seSBsaWIvdnNw
cmludGYuYykKPiArICogICAgICAgICAgICAgIChmcmVlQlNEIHBvcnQpCj4gICAqCj4gICAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCj4gICAqLwo+ICAKPiAtLyoKPiAtICogQ29weXJpZ2h0IChDKSAxOTkx
LCAxOTkyICBMaW51cyBUb3J2YWxkcwo+IC0gKi8KPiAtCj4gLS8qIHZzcHJpbnRmLmMgLS0gTGFy
cyBXaXJ6ZW5pdXMgJiBMaW51cyBUb3J2YWxkcy4gKi8KPiAtLyoKPiAtICogV2lyemVuaXVzIHdy
b3RlIHRoaXMgcG9ydGFibHksIFRvcnZhbGRzIGZ1Y2tlZCBpdCB1cCA6LSkKPiAtICovCj4gLQo+
IC0vKgo+IC0gKiBGcmkgSnVsIDEzIDIwMDEgQ3J1dGNoZXIgRHVubmF2YW50IDxjcnV0Y2hlcitr
ZXJuZWxAZGF0YXN0YWNrcy5jb20+Cj4gLSAqIC0gY2hhbmdlZCB0byBwcm92aWRlIHNucHJpbnRm
IGFuZCB2c25wcmludGYgZnVuY3Rpb25zCj4gLSAqIFNvIEZlYiAgMSAxNjo1MTozMiBDRVQgMjAw
NCBKdWVyZ2VuIFF1YWRlIDxxdWFkZUBoc25yLmRlPgo+IC0gKiAtIHNjbnByaW50ZiBhbmQgdnNj
bnByaW50Zgo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAxOTkwLCAxOTkzCj4gKyAqCVRoZSBS
ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgo+ICAgKgo+ICsgKiBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNvZnR3YXJlIGNvbnRy
aWJ1dGVkIHRvIEJlcmtlbGV5IGJ5Cj4gKyAqIENocmlzIFRvcmVrLgo+ICAgKgo+IC0gKiBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQo+IC0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+IC0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+IC0gKiAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIEZy
ZWVCU0QgRm91bmRhdGlvbgo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKiBQb3J0aW9u
cyBvZiB0aGlzIHNvZnR3YXJlIHdlcmUgZGV2ZWxvcGVkIGJ5IERhdmlkIENoaXNuYWxsCj4gKyAq
IHVuZGVyIHNwb25zb3JzaGlwIGZyb20gdGhlIEZyZWVCU0QgRm91bmRhdGlvbi4KPiAgICoKPiAt
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCj4gLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAtICogR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMKPiArICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCj4gKyAqICAgIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICAgKgo+IC0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+IC0gKiBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQo+IC0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4g
KyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gICAqLwo+ICAKPiAgI2lmICFkZWZp
bmVkIEhBVkVfTElCQwo+IEBAIC01Nyw0NDkgKzYwLDUyOSBAQAo+ICAjaW5jbHVkZSA8bWluaS1v
cy9jdHlwZS5oPgo+ICAjaW5jbHVkZSA8bWluaS1vcy9wb3NpeC9saW1pdHMuaD4KPiAgCj4gLS8q
Kgo+IC0gKiBzaW1wbGVfc3RydG91bCAtIGNvbnZlcnQgYSBzdHJpbmcgdG8gYW4gdW5zaWduZWQg
bG9uZwo+IC0gKiBAY3A6IFRoZSBzdGFydCBvZiB0aGUgc3RyaW5nCj4gLSAqIEBlbmRwOiBBIHBv
aW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUgcGFyc2VkIHN0cmluZyB3aWxsIGJlIHBsYWNlZCBoZXJl
Cj4gLSAqIEBiYXNlOiBUaGUgbnVtYmVyIGJhc2UgdG8gdXNlCj4gKyNkZWZpbmUgX19ERUNPTlNU
KHR5cGUsIHZhcikgICAgKCh0eXBlKSh1aW50cHRyX3QpKGNvbnN0IHZvaWQgKikodmFyKSkKPiAr
LyogNjQgYml0cyArIDAtQnl0ZSBhdCBlbmQgKi8KPiArI2RlZmluZSBNQVhOQlVGCTY1Cj4gKwo+
ICtzdGF0aWMgY2hhciBjb25zdCBoZXgyYXNjaWlfZGF0YVtdID0gIjAxMjM0NTY3ODlhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5eiI7Cj4gKy8qCj4gKyAqIFB1dCBhIE5VTC10ZXJtaW5hdGVkIEFT
Q0lJIG51bWJlciAoYmFzZSA8PSAzNikgaW4gYSBidWZmZXIgaW4gcmV2ZXJzZQo+ICsgKiBvcmRl
cjsgcmV0dXJuIGFuIG9wdGlvbmFsIGxlbmd0aCBhbmQgYSBwb2ludGVyIHRvIHRoZSBsYXN0IGNo
YXJhY3Rlcgo+ICsgKiB3cml0dGVuIGluIHRoZSBidWZmZXIgKGkuZS4sIHRoZSBmaXJzdCBjaGFy
YWN0ZXIgb2YgdGhlIHN0cmluZykuCj4gKyAqIFRoZSBidWZmZXIgcG9pbnRlZCB0byBieSBgbmJ1
ZicgbXVzdCBoYXZlIGxlbmd0aCA+PSBNQVhOQlVGLgo+ICAgKi8KPiAtdW5zaWduZWQgbG9uZyBz
aW1wbGVfc3RydG91bChjb25zdCBjaGFyICpjcCxjaGFyICoqZW5kcCx1bnNpZ25lZCBpbnQgYmFz
ZSkKPiArc3RhdGljIGNoYXIgKgo+ICtrc3ByaW50bihjaGFyICpuYnVmLCB1aW50bWF4X3QgbnVt
LCBpbnQgYmFzZSwgaW50ICpsZW5wLCBpbnQgdXBwZXIpCj4gIHsKPiAtICAgIHVuc2lnbmVkIGxv
bmcgcmVzdWx0ID0gMCx2YWx1ZTsKPiAtCj4gLSAgICBpZiAoIWJhc2UpIHsKPiAtICAgICAgICBi
YXNlID0gMTA7Cj4gLSAgICAgICAgaWYgKCpjcCA9PSAnMCcpIHsKPiAtICAgICAgICAgICAgYmFz
ZSA9IDg7Cj4gLSAgICAgICAgICAgIGNwKys7Cj4gLSAgICAgICAgICAgIGlmICgoKmNwID09ICd4
JykgJiYgaXN4ZGlnaXQoY3BbMV0pKSB7Cj4gLSAgICAgICAgICAgICAgICBjcCsrOwo+IC0gICAg
ICAgICAgICAgICAgYmFzZSA9IDE2Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+IC0g
ICAgfQo+IC0gICAgd2hpbGUgKGlzeGRpZ2l0KCpjcCkgJiYKPiAtICAgICAgICAgICAodmFsdWUg
PSBpc2RpZ2l0KCpjcCkgPyAqY3AtJzAnIDogdG91cHBlcigqY3ApLSdBJysxMCkgPCBiYXNlKSB7
Cj4gLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0KmJhc2UgKyB2YWx1ZTsKPiAtICAgICAgICBjcCsr
Owo+IC0gICAgfQo+IC0gICAgaWYgKGVuZHApCj4gLSAgICAgICAgKmVuZHAgPSAoY2hhciAqKWNw
Owo+IC0gICAgcmV0dXJuIHJlc3VsdDsKPiAtfQo+IC0KPiAtLyoqCj4gLSAqIHNpbXBsZV9zdHJ0
b2wgLSBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgc2lnbmVkIGxvbmcKPiAtICogQGNwOiBUaGUgc3Rh
cnQgb2YgdGhlIHN0cmluZwo+IC0gKiBAZW5kcDogQSBwb2ludGVyIHRvIHRoZSBlbmQgb2YgdGhl
IHBhcnNlZCBzdHJpbmcgd2lsbCBiZSBwbGFjZWQgaGVyZQo+IC0gKiBAYmFzZTogVGhlIG51bWJl
ciBiYXNlIHRvIHVzZQo+IC0gKi8KPiAtbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKmNw
LGNoYXIgKiplbmRwLHVuc2lnbmVkIGludCBiYXNlKQo+IC17Cj4gLSAgICBpZigqY3A9PSctJykK
PiAtICAgICAgICByZXR1cm4gLXNpbXBsZV9zdHJ0b3VsKGNwKzEsZW5kcCxiYXNlKTsKPiAtICAg
IHJldHVybiBzaW1wbGVfc3RydG91bChjcCxlbmRwLGJhc2UpOwo+ICsJY2hhciAqcCwgYzsKPiAr
Cj4gKwlwID0gbmJ1ZjsKPiArCSpwID0gJ1wwJzsKPiArCWRvIHsKPiArCQljID0gaGV4MmFzY2lp
X2RhdGFbbnVtICUgYmFzZV07Cj4gKwkJKisrcCA9IHVwcGVyID8gdG91cHBlcihjKSA6IGM7Cj4g
Kwl9IHdoaWxlIChudW0gLz0gYmFzZSk7Cj4gKwlpZiAobGVucCkKPiArCQkqbGVucCA9IHAgLSBu
YnVmOwo+ICsJcmV0dXJuIChwKTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAqIHNpbXBsZV9zdHJ0b3Vs
bCAtIGNvbnZlcnQgYSBzdHJpbmcgdG8gYW4gdW5zaWduZWQgbG9uZyBsb25nCj4gLSAqIEBjcDog
VGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcKPiAtICogQGVuZHA6IEEgcG9pbnRlciB0byB0aGUgZW5k
IG9mIHRoZSBwYXJzZWQgc3RyaW5nIHdpbGwgYmUgcGxhY2VkIGhlcmUKPiAtICogQGJhc2U6IFRo
ZSBudW1iZXIgYmFzZSB0byB1c2UKPiArLyoKPiArICogQ29udmVydCBhIHN0cmluZyB0byBhbiB1
bnNpZ25lZCBsb25nIGludGVnZXIuCj4gKyAqCj4gKyAqIElnbm9yZXMgYGxvY2FsZScgc3R1ZmYu
ICBBc3N1bWVzIHRoYXQgdGhlIHVwcGVyIGFuZCBsb3dlciBjYXNlCj4gKyAqIGFscGhhYmV0cyBh
bmQgZGlnaXRzIGFyZSBlYWNoIGNvbnRpZ3VvdXMuCj4gICAqLwo+IC11bnNpZ25lZCBsb25nIGxv
bmcgc2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKmNwLGNoYXIgKiplbmRwLHVuc2lnbmVkIGlu
dCBiYXNlKQo+ICt1bnNpZ25lZCBsb25nCj4gK3N0cnRvdWwoY29uc3QgY2hhciAqbnB0ciwgY2hh
ciAqKmVuZHB0ciwgaW50IGJhc2UpCj4gIHsKPiAtICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1
bHQgPSAwLHZhbHVlOwo+IC0KPiAtICAgIGlmICghYmFzZSkgewo+IC0gICAgICAgIGJhc2UgPSAx
MDsKPiAtICAgICAgICBpZiAoKmNwID09ICcwJykgewo+IC0gICAgICAgICAgICBiYXNlID0gODsK
PiAtICAgICAgICAgICAgY3ArKzsKPiAtICAgICAgICAgICAgaWYgKCgqY3AgPT0gJ3gnKSAmJiBp
c3hkaWdpdChjcFsxXSkpIHsKPiAtICAgICAgICAgICAgICAgIGNwKys7Cj4gKyAgICAgICAgY29u
c3QgY2hhciAqcyA9IG5wdHI7Cj4gKyAgICAgICAgdW5zaWduZWQgbG9uZyBhY2M7Cj4gKyAgICAg
ICAgdW5zaWduZWQgY2hhciBjOwo+ICsgICAgICAgIHVuc2lnbmVkIGxvbmcgY3V0b2ZmOwo+ICsg
ICAgICAgIGludCBuZWcgPSAwLCBhbnksIGN1dGxpbTsKPiArCj4gKyAgICAgICAgLyoKPiArICAg
ICAgICAgKiBTZWUgc3RydG9sIGZvciBjb21tZW50cyBhcyB0byB0aGUgbG9naWMgdXNlZC4KPiAr
ICAgICAgICAgKi8KPiArICAgICAgICBkbyB7Cj4gKyAgICAgICAgICAgICAgICBjID0gKnMrKzsK
PiArICAgICAgICB9IHdoaWxlIChpc3NwYWNlKGMpKTsKPiArICAgICAgICBpZiAoYyA9PSAnLScp
IHsKPiArICAgICAgICAgICAgICAgIG5lZyA9IDE7Cj4gKyAgICAgICAgICAgICAgICBjID0gKnMr
KzsKPiArICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJysnKQo+ICsgICAgICAgICAgICAgICAgYyA9
ICpzKys7Cj4gKyAgICAgICAgaWYgKChiYXNlID09IDAgfHwgYmFzZSA9PSAxNikgJiYKPiArICAg
ICAgICAgICAgYyA9PSAnMCcgJiYgKCpzID09ICd4JyB8fCAqcyA9PSAnWCcpKSB7Cj4gKyAgICAg
ICAgICAgICAgICBjID0gc1sxXTsKPiArICAgICAgICAgICAgICAgIHMgKz0gMjsKPiAgICAgICAg
ICAgICAgICAgIGJhc2UgPSAxNjsKPiAtICAgICAgICAgICAgfQo+ICAgICAgICAgIH0KPiAtICAg
IH0KPiAtICAgIHdoaWxlIChpc3hkaWdpdCgqY3ApICYmICh2YWx1ZSA9IGlzZGlnaXQoKmNwKSA/
ICpjcC0nMCcgOiAoaXNsb3dlcigqY3ApCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdG91cHBlcigqY3ApIDogKmNwKS0n
QScrMTApIDwgYmFzZSkgewo+IC0gICAgICAgIHJlc3VsdCA9IHJlc3VsdCpiYXNlICsgdmFsdWU7
Cj4gLSAgICAgICAgY3ArKzsKPiAtICAgIH0KPiAtICAgIGlmIChlbmRwKQo+IC0gICAgICAgICpl
bmRwID0gKGNoYXIgKiljcDsKPiAtICAgIHJldHVybiByZXN1bHQ7Cj4gKyAgICAgICAgaWYgKGJh
c2UgPT0gMCkKPiArICAgICAgICAgICAgICAgIGJhc2UgPSBjID09ICcwJyA/IDggOiAxMDsKPiAr
ICAgICAgICBjdXRvZmYgPSAodW5zaWduZWQgbG9uZylVTE9OR19NQVggLyAodW5zaWduZWQgbG9u
ZyliYXNlOwo+ICsgICAgICAgIGN1dGxpbSA9ICh1bnNpZ25lZCBsb25nKVVMT05HX01BWCAlICh1
bnNpZ25lZCBsb25nKWJhc2U7Cj4gKyAgICAgICAgZm9yIChhY2MgPSAwLCBhbnkgPSAwOzsgYyA9
ICpzKyspIHsKPiArICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkK
PiArICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7Cj4gKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChpc2FscGhhKGMpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjIC09IGlzdXBw
ZXIoYykgPyAnQScgLSAxMCA6ICdhJyAtIDEwOwo+ICsgICAgICAgICAgICAgICAgZWxzZQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIGlmIChjID49
IGJhc2UpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAg
ICAgaWYgKGFueSA8IDAgfHwgYWNjID4gY3V0b2ZmIHx8IChhY2MgPT0gY3V0b2ZmICYmIGMgPiBj
dXRsaW0pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAtMTsKPiArICAgICAgICAg
ICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAxOwo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICBhY2MgKj0gYmFzZTsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjICs9IGM7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgICAg
IGlmIChhbnkgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgICBhY2MgPSBVTE9OR19NQVg7Cj4gKyAg
ICAgICAgfSBlbHNlIGlmIChuZWcpCj4gKyAgICAgICAgICAgICAgICBhY2MgPSAtYWNjOwo+ICsg
ICAgICAgIGlmIChlbmRwdHIgIT0gMCkKPiArICAgICAgICAgICAgICAgICplbmRwdHIgPSBfX0RF
Q09OU1QoY2hhciAqLCBhbnkgPyBzIC0gMSA6IG5wdHIpOwo+ICsgICAgICAgIHJldHVybiAoYWNj
KTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAqIHNpbXBsZV9zdHJ0b2xsIC0gY29udmVydCBhIHN0cmlu
ZyB0byBhIHNpZ25lZCBsb25nIGxvbmcKPiAtICogQGNwOiBUaGUgc3RhcnQgb2YgdGhlIHN0cmlu
Zwo+IC0gKiBAZW5kcDogQSBwb2ludGVyIHRvIHRoZSBlbmQgb2YgdGhlIHBhcnNlZCBzdHJpbmcg
d2lsbCBiZSBwbGFjZWQgaGVyZQo+IC0gKiBAYmFzZTogVGhlIG51bWJlciBiYXNlIHRvIHVzZQo+
ICsvKgo+ICsgKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgcXVhZCBpbnRlZ2VyLgo+ICsgKgo+ICsg
KiBJZ25vcmVzIGBsb2NhbGUnIHN0dWZmLiAgQXNzdW1lcyB0aGF0IHRoZSB1cHBlciBhbmQgbG93
ZXIgY2FzZQo+ICsgKiBhbHBoYWJldHMgYW5kIGRpZ2l0cyBhcmUgZWFjaCBjb250aWd1b3VzLgo+
ICAgKi8KPiAtbG9uZyBsb25nIHNpbXBsZV9zdHJ0b2xsKGNvbnN0IGNoYXIgKmNwLGNoYXIgKipl
bmRwLHVuc2lnbmVkIGludCBiYXNlKQo+IC17Cj4gLSAgICBpZigqY3A9PSctJykKPiAtICAgICAg
ICByZXR1cm4gLXNpbXBsZV9zdHJ0b3VsbChjcCsxLGVuZHAsYmFzZSk7Cj4gLSAgICByZXR1cm4g
c2ltcGxlX3N0cnRvdWxsKGNwLGVuZHAsYmFzZSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgc2tp
cF9hdG9pKGNvbnN0IGNoYXIgKipzKQo+IC17Cj4gLSAgICBpbnQgaT0wOwo+IC0KPiAtICAgIHdo
aWxlIChpc2RpZ2l0KCoqcykpCj4gLSAgICAgICAgaSA9IGkqMTAgKyAqKCgqcykrKykgLSAnMCc7
Cj4gLSAgICByZXR1cm4gaTsKPiAtfQo+IC0KPiAtI2RlZmluZSBaRVJPUEFEIDEgICAgICAgICAg
ICAgICAvKiBwYWQgd2l0aCB6ZXJvICovCj4gLSNkZWZpbmUgU0lHTiAgICAyICAgICAgICAgICAg
ICAgLyogdW5zaWduZWQvc2lnbmVkIGxvbmcgKi8KPiAtI2RlZmluZSBQTFVTICAgIDQgICAgICAg
ICAgICAgICAvKiBzaG93IHBsdXMgKi8KPiAtI2RlZmluZSBTUEFDRSAgIDggICAgICAgICAgICAg
ICAvKiBzcGFjZSBpZiBwbHVzICovCj4gLSNkZWZpbmUgTEVGVCAgICAxNiAgICAgICAgICAgICAg
LyogbGVmdCBqdXN0aWZpZWQgKi8KPiAtI2RlZmluZSBTUEVDSUFMIDMyICAgICAgICAgICAgICAv
KiAweCAqLwo+IC0jZGVmaW5lIExBUkdFICAgNjQgICAgICAgICAgICAgIC8qIHVzZSAnQUJDREVG
JyBpbnN0ZWFkIG9mICdhYmNkZWYnICovCj4gLQo+IC1zdGF0aWMgY2hhciAqIG51bWJlcihjaGFy
ICogYnVmLCBjaGFyICogZW5kLCBsb25nIGxvbmcgbnVtLCBpbnQgYmFzZSwgaW50IHNpemUsIGlu
dCBwcmVjaXNpb24sIGludCB0eXBlKQo+ICtpbnQ2NF90Cj4gK3N0cnRvcShjb25zdCBjaGFyICpu
cHRyLCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSkKPiAgewo+IC0gICAgY2hhciBjLHNpZ24sdG1w
WzY2XTsKPiAtICAgIGNvbnN0IGNoYXIgKmRpZ2l0czsKPiAtICAgIGNvbnN0IGNoYXIgc21hbGxf
ZGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKPiAtICAg
IGNvbnN0IGNoYXIgbGFyZ2VfZGlnaXRzW10gPSAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaIjsKPiAtICAgIGludCBpOwo+IC0KPiAtICAgIGRpZ2l0cyA9ICh0eXBlICYgTEFS
R0UpID8gbGFyZ2VfZGlnaXRzIDogc21hbGxfZGlnaXRzOwo+IC0gICAgaWYgKHR5cGUgJiBMRUZU
KQo+IC0gICAgICAgIHR5cGUgJj0gflpFUk9QQUQ7Cj4gLSAgICBpZiAoYmFzZSA8IDIgfHwgYmFz
ZSA+IDM2KQo+IC0gICAgICAgIHJldHVybiBidWY7Cj4gLSAgICBjID0gKHR5cGUgJiBaRVJPUEFE
KSA/ICcwJyA6ICcgJzsKPiAtICAgIHNpZ24gPSAwOwo+IC0gICAgaWYgKHR5cGUgJiBTSUdOKSB7
Cj4gLSAgICAgICAgaWYgKG51bSA8IDApIHsKPiAtICAgICAgICAgICAgc2lnbiA9ICctJzsKPiAt
ICAgICAgICAgICAgbnVtID0gLW51bTsKPiAtICAgICAgICAgICAgc2l6ZS0tOwo+IC0gICAgICAg
IH0gZWxzZSBpZiAodHlwZSAmIFBMVVMpIHsKPiAtICAgICAgICAgICAgc2lnbiA9ICcrJzsKPiAt
ICAgICAgICAgICAgc2l6ZS0tOwo+IC0gICAgICAgIH0gZWxzZSBpZiAodHlwZSAmIFNQQUNFKSB7
Cj4gLSAgICAgICAgICAgIHNpZ24gPSAnICc7Cj4gLSAgICAgICAgICAgIHNpemUtLTsKPiAtICAg
ICAgICB9Cj4gLSAgICB9Cj4gLSAgICBpZiAodHlwZSAmIFNQRUNJQUwpIHsKPiAtICAgICAgICBp
ZiAoYmFzZSA9PSAxNikKPiAtICAgICAgICAgICAgc2l6ZSAtPSAyOwo+IC0gICAgICAgIGVsc2Ug
aWYgKGJhc2UgPT0gOCkKPiAtICAgICAgICAgICAgc2l6ZS0tOwo+IC0gICAgfQo+IC0gICAgaSA9
IDA7Cj4gLSAgICBpZiAobnVtID09IDApCj4gLSAgICAgICAgdG1wW2krK109JzAnOwo+IC0gICAg
ZWxzZSAKPiAtICAgIHsKPiAtICAgICAgICAvKiBYWFggS0FGOiBmb3JjZSB1bnNpZ25lZCBtb2Qg
YW5kIGRpdi4gKi8KPiAtICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbnVtMj0odW5zaWduZWQg
bG9uZyBsb25nKW51bTsKPiAtICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZTI9KHVuc2lnbmVkIGlu
dCliYXNlOwo+IC0gICAgICAgIHdoaWxlIChudW0yICE9IDApIHsgdG1wW2krK10gPSBkaWdpdHNb
bnVtMiViYXNlMl07IG51bTIgLz0gYmFzZTI7IH0KPiAtICAgIH0KPiAtICAgIGlmIChpID4gcHJl
Y2lzaW9uKQo+IC0gICAgICAgIHByZWNpc2lvbiA9IGk7Cj4gLSAgICBzaXplIC09IHByZWNpc2lv
bjsKPiAtICAgIGlmICghKHR5cGUmKFpFUk9QQUQrTEVGVCkpKSB7Cj4gLSAgICAgICAgd2hpbGUo
c2l6ZS0tPjApIHsKPiAtICAgICAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCj4gLSAgICAgICAgICAg
ICAgICAqYnVmID0gJyAnOwo+IC0gICAgICAgICAgICArK2J1ZjsKPiArICAgICAgICBjb25zdCBj
aGFyICpzOwo+ICsgICAgICAgIHVpbnQ2NF90IGFjYzsKPiArICAgICAgICB1bnNpZ25lZCBjaGFy
IGM7Cj4gKyAgICAgICAgdWludDY0X3QgcWJhc2UsIGN1dG9mZjsKPiArICAgICAgICBpbnQgbmVn
LCBhbnksIGN1dGxpbTsKPiArCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBTa2lwIHdoaXRl
IHNwYWNlIGFuZCBwaWNrIHVwIGxlYWRpbmcgKy8tIHNpZ24gaWYgYW55Lgo+ICsgICAgICAgICAq
IElmIGJhc2UgaXMgMCwgYWxsb3cgMHggZm9yIGhleCBhbmQgMCBmb3Igb2N0YWwsIGVsc2UKPiAr
ICAgICAgICAgKiBhc3N1bWUgZGVjaW1hbDsgaWYgYmFzZSBpcyBhbHJlYWR5IDE2LCBhbGxvdyAw
eC4KPiArICAgICAgICAgKi8KPiArICAgICAgICBzID0gbnB0cjsKPiArICAgICAgICBkbyB7Cj4g
KyAgICAgICAgICAgICAgICBjID0gKnMrKzsKPiArICAgICAgICB9IHdoaWxlIChpc3NwYWNlKGMp
KTsKPiArICAgICAgICBpZiAoYyA9PSAnLScpIHsKPiArICAgICAgICAgICAgICAgIG5lZyA9IDE7
Cj4gKyAgICAgICAgICAgICAgICBjID0gKnMrKzsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAg
ICAgICAgICAgICAgbmVnID0gMDsKPiArICAgICAgICAgICAgICAgIGlmIChjID09ICcrJykKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpzKys7Cj4gICAgICAgICAgfQo+IC0gICAgfQo+
IC0gICAgaWYgKHNpZ24pIHsKPiAtICAgICAgICBpZiAoYnVmIDw9IGVuZCkKPiAtICAgICAgICAg
ICAgKmJ1ZiA9IHNpZ247Cj4gLSAgICAgICAgKytidWY7Cj4gLSAgICB9Cj4gLSAgICBpZiAodHlw
ZSAmIFNQRUNJQUwpIHsKPiAtICAgICAgICBpZiAoYmFzZT09OCkgewo+IC0gICAgICAgICAgICBp
ZiAoYnVmIDw9IGVuZCkKPiAtICAgICAgICAgICAgICAgICpidWYgPSAnMCc7Cj4gLSAgICAgICAg
ICAgICsrYnVmOwo+IC0gICAgICAgIH0gZWxzZSBpZiAoYmFzZT09MTYpIHsKPiAtICAgICAgICAg
ICAgaWYgKGJ1ZiA8PSBlbmQpCj4gLSAgICAgICAgICAgICAgICAqYnVmID0gJzAnOwo+IC0gICAg
ICAgICAgICArK2J1ZjsKPiAtICAgICAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCj4gLSAgICAgICAg
ICAgICAgICAqYnVmID0gZGlnaXRzWzMzXTsKPiAtICAgICAgICAgICAgKytidWY7Cj4gKyAgICAg
ICAgaWYgKChiYXNlID09IDAgfHwgYmFzZSA9PSAxNikgJiYKPiArICAgICAgICAgICAgYyA9PSAn
MCcgJiYgKCpzID09ICd4JyB8fCAqcyA9PSAnWCcpKSB7Cj4gKyAgICAgICAgICAgICAgICBjID0g
c1sxXTsKPiArICAgICAgICAgICAgICAgIHMgKz0gMjsKPiArICAgICAgICAgICAgICAgIGJhc2Ug
PSAxNjsKPiAgICAgICAgICB9Cj4gLSAgICB9Cj4gLSAgICBpZiAoISh0eXBlICYgTEVGVCkpIHsK
PiAtICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewo+IC0gICAgICAgICAgICBpZiAoYnVmIDw9
IGVuZCkKPiAtICAgICAgICAgICAgICAgICpidWYgPSBjOwo+IC0gICAgICAgICAgICArK2J1ZjsK
PiArICAgICAgICBpZiAoYmFzZSA9PSAwKQo+ICsgICAgICAgICAgICAgICAgYmFzZSA9IGMgPT0g
JzAnID8gOCA6IDEwOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIENvbXB1dGUgdGhl
IGN1dG9mZiB2YWx1ZSBiZXR3ZWVuIGxlZ2FsIG51bWJlcnMgYW5kIGlsbGVnYWwKPiArICAgICAg
ICAgKiBudW1iZXJzLiAgVGhhdCBpcyB0aGUgbGFyZ2VzdCBsZWdhbCB2YWx1ZSwgZGl2aWRlZCBi
eSB0aGUKPiArICAgICAgICAgKiBiYXNlLiAgQW4gaW5wdXQgbnVtYmVyIHRoYXQgaXMgZ3JlYXRl
ciB0aGFuIHRoaXMgdmFsdWUsIGlmCj4gKyAgICAgICAgICogZm9sbG93ZWQgYnkgYSBsZWdhbCBp
bnB1dCBjaGFyYWN0ZXIsIGlzIHRvbyBiaWcuICBPbmUgdGhhdAo+ICsgICAgICAgICAqIGlzIGVx
dWFsIHRvIHRoaXMgdmFsdWUgbWF5IGJlIHZhbGlkIG9yIG5vdDsgdGhlIGxpbWl0Cj4gKyAgICAg
ICAgICogYmV0d2VlbiB2YWxpZCBhbmQgaW52YWxpZCBudW1iZXJzIGlzIHRoZW4gYmFzZWQgb24g
dGhlIGxhc3QKPiArICAgICAgICAgKiBkaWdpdC4gIEZvciBpbnN0YW5jZSwgaWYgdGhlIHJhbmdl
IGZvciBxdWFkcyBpcwo+ICsgICAgICAgICAqIFstOTIyMzM3MjAzNjg1NDc3NTgwOC4uOTIyMzM3
MjAzNjg1NDc3NTgwN10gYW5kIHRoZSBpbnB1dCBiYXNlCj4gKyAgICAgICAgICogaXMgMTAsIGN1
dG9mZiB3aWxsIGJlIHNldCB0byA5MjIzMzcyMDM2ODU0Nzc1ODAgYW5kIGN1dGxpbSB0bwo+ICsg
ICAgICAgICAqIGVpdGhlciA3IChuZWc9PTApIG9yIDggKG5lZz09MSksIG1lYW5pbmcgdGhhdCBp
ZiB3ZSBoYXZlCj4gKyAgICAgICAgICogYWNjdW11bGF0ZWQgYSB2YWx1ZSA+IDkyMjMzNzIwMzY4
NTQ3NzU4MCwgb3IgZXF1YWwgYnV0IHRoZQo+ICsgICAgICAgICAqIG5leHQgZGlnaXQgaXMgPiA3
IChvciA4KSwgdGhlIG51bWJlciBpcyB0b28gYmlnLCBhbmQgd2Ugd2lsbAo+ICsgICAgICAgICAq
IHJldHVybiBhIHJhbmdlIGVycm9yLgo+ICsgICAgICAgICAqCj4gKyAgICAgICAgICogU2V0IGFu
eSBpZiBhbnkgYGRpZ2l0cycgY29uc3VtZWQ7IG1ha2UgaXQgbmVnYXRpdmUgdG8gaW5kaWNhdGUK
PiArICAgICAgICAgKiBvdmVyZmxvdy4KPiArICAgICAgICAgKi8KPiArICAgICAgICBxYmFzZSA9
ICh1bnNpZ25lZCliYXNlOwo+ICsgICAgICAgIGN1dG9mZiA9IG5lZyA/ICh1aW50NjRfdCktKExM
T05HX01JTiArIExMT05HX01BWCkgKyBMTE9OR19NQVggOiBMTE9OR19NQVg7Cj4gKyAgICAgICAg
Y3V0bGltID0gY3V0b2ZmICUgcWJhc2U7Cj4gKyAgICAgICAgY3V0b2ZmIC89IHFiYXNlOwo+ICsg
ICAgICAgIGZvciAoYWNjID0gMCwgYW55ID0gMDs7IGMgPSAqcysrKSB7Cj4gKyAgICAgICAgICAg
ICAgICBpZiAoIWlzYXNjaWkoYykpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+
ICsgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIGMgLT0gJzAnOwo+ICsgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNhbHBoYShjKSkKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSBpc3VwcGVyKGMpID8gJ0EnIC0gMTAgOiAnYScg
LSAxMDsKPiArICAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBpZiAoYyA+PSBiYXNlKQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIGlmIChhbnkgPCAwIHx8IGFjYyA+
IGN1dG9mZiB8fCAoYWNjID09IGN1dG9mZiAmJiBjID4gY3V0bGltKSkKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgYW55ID0gLTE7Cj4gKyAgICAgICAgICAgICAgICBlbHNlIHsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgYW55ID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYWNj
ICo9IHFiYXNlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhY2MgKz0gYzsKPiArICAgICAg
ICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4gLSAgICB9Cj4gLSAgICB3aGlsZSAoaSA8IHByZWNp
c2lvbi0tKSB7Cj4gLSAgICAgICAgaWYgKGJ1ZiA8PSBlbmQpCj4gLSAgICAgICAgICAgICpidWYg
PSAnMCc7Cj4gLSAgICAgICAgKytidWY7Cj4gLSAgICB9Cj4gLSAgICB3aGlsZSAoaS0tID4gMCkg
ewo+IC0gICAgICAgIGlmIChidWYgPD0gZW5kKQo+IC0gICAgICAgICAgICAqYnVmID0gdG1wW2ld
Owo+IC0gICAgICAgICsrYnVmOwo+IC0gICAgfQo+IC0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsK
PiAtICAgICAgICBpZiAoYnVmIDw9IGVuZCkKPiAtICAgICAgICAgICAgKmJ1ZiA9ICcgJzsKPiAt
ICAgICAgICArK2J1ZjsKPiAtICAgIH0KPiAtICAgIHJldHVybiBidWY7Cj4gKyAgICAgICAgaWYg
KGFueSA8IDApIHsKPiArICAgICAgICAgICAgICAgIGFjYyA9IG5lZyA/IExMT05HX01JTiA6IExM
T05HX01BWDsKPiArICAgICAgICB9IGVsc2UgaWYgKG5lZykKPiArICAgICAgICAgICAgICAgIGFj
YyA9IC1hY2M7Cj4gKyAgICAgICAgaWYgKGVuZHB0ciAhPSAwKQo+ICsgICAgICAgICAgICAgICAg
KmVuZHB0ciA9IF9fREVDT05TVChjaGFyICosIGFueSA/IHMgLSAxIDogbnB0cik7Cj4gKyAgICAg
ICAgcmV0dXJuIChhY2MpOwo+ICB9Cj4gIAo+IC0vKioKPiAtKiB2c25wcmludGYgLSBGb3JtYXQg
YSBzdHJpbmcgYW5kIHBsYWNlIGl0IGluIGEgYnVmZmVyCj4gLSogQGJ1ZjogVGhlIGJ1ZmZlciB0
byBwbGFjZSB0aGUgcmVzdWx0IGludG8KPiAtKiBAc2l6ZTogVGhlIHNpemUgb2YgdGhlIGJ1ZmZl
ciwgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBudWxsIHNwYWNlCj4gLSogQGZtdDogVGhlIGZvcm1h
dCBzdHJpbmcgdG8gdXNlCj4gLSogQGFyZ3M6IEFyZ3VtZW50cyBmb3IgdGhlIGZvcm1hdCBzdHJp
bmcKPiAtKgo+IC0qIENhbGwgdGhpcyBmdW5jdGlvbiBpZiB5b3UgYXJlIGFscmVhZHkgZGVhbGlu
ZyB3aXRoIGEgdmFfbGlzdC4KPiAtKiBZb3UgcHJvYmFibHkgd2FudCBzbnByaW50ZiBpbnN0ZWFk
Lgo+ICsvKgo+ICsgKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIHVuc2lnbmVkIHF1YWQgaW50ZWdl
ci4KPiArICoKPiArICogSWdub3JlcyBgbG9jYWxlJyBzdHVmZi4gIEFzc3VtZXMgdGhhdCB0aGUg
dXBwZXIgYW5kIGxvd2VyIGNhc2UKPiArICogYWxwaGFiZXRzIGFuZCBkaWdpdHMgYXJlIGVhY2gg
Y29udGlndW91cy4KPiAgICovCj4gLWludCB2c25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6
ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCj4gK3VpbnQ2NF90Cj4gK3N0cnRvdXEo
Y29uc3QgY2hhciAqbnB0ciwgY2hhciAqKmVuZHB0ciwgaW50IGJhc2UpCj4gIHsKPiAtICAgIGlu
dCBsZW47Cj4gLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbnVtOwo+IC0gICAgaW50IGksIGJhc2U7
Cj4gLSAgICBjaGFyICpzdHIsICplbmQsIGM7Cj4gLSAgICBjb25zdCBjaGFyICpzOwo+IC0KPiAt
ICAgIGludCBmbGFnczsgICAgICAgICAgLyogZmxhZ3MgdG8gbnVtYmVyKCkgKi8KPiAtCj4gLSAg
ICBpbnQgZmllbGRfd2lkdGg7ICAgIC8qIHdpZHRoIG9mIG91dHB1dCBmaWVsZCAqLwo+IC0gICAg
aW50IHByZWNpc2lvbjsgICAgICAgICAgICAgIC8qIG1pbi4gIyBvZiBkaWdpdHMgZm9yIGludGVn
ZXJzOyBtYXgKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Yg
Y2hhcnMgZm9yIGZyb20gc3RyaW5nICovCj4gLSAgICBpbnQgcXVhbGlmaWVyOyAgICAgICAgICAg
ICAgLyogJ2gnLCAnbCcsIG9yICdMJyBmb3IgaW50ZWdlciBmaWVsZHMgKi8KPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiAneicgc3VwcG9ydCBhZGRlZCAyMy83LzE5OTkgUy5I
LiAgICAqLwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICd6JyBjaGFuZ2Vk
IHRvICdaJyAtLWRhdmlkbSAxLzI1Lzk5ICovCj4gLQo+IC0gICAgc3RyID0gYnVmOwo+IC0gICAg
ZW5kID0gYnVmICsgc2l6ZSAtIDE7Cj4gLQo+IC0gICAgaWYgKGVuZCA8IGJ1ZiAtIDEpIHsKPiAt
ICAgICAgICBlbmQgPSAoKHZvaWQgKikgLTEpOwo+IC0gICAgICAgIHNpemUgPSBlbmQgLSBidWYg
KyAxOwo+IC0gICAgfQo+IC0KPiAtICAgIGZvciAoOyAqZm10IDsgKytmbXQpIHsKPiAtICAgICAg
ICBpZiAoKmZtdCAhPSAnJScpIHsKPiAtICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCj4gLSAg
ICAgICAgICAgICAgICAqc3RyID0gKmZtdDsKPiAtICAgICAgICAgICAgKytzdHI7Cj4gLSAgICAg
ICAgICAgIGNvbnRpbnVlOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgICAgLyogcHJvY2VzcyBm
bGFncyAqLwo+IC0gICAgICAgIGZsYWdzID0gMDsKPiAtICAgIHJlcGVhdDoKPiAtICAgICAgICAr
K2ZtdDsgICAgICAgICAgLyogdGhpcyBhbHNvIHNraXBzIGZpcnN0ICclJyAqLwo+IC0gICAgICAg
IHN3aXRjaCAoKmZtdCkgewo+IC0gICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBMRUZUOyBnb3Rv
IHJlcGVhdDsKPiAtICAgICAgICBjYXNlICcrJzogZmxhZ3MgfD0gUExVUzsgZ290byByZXBlYXQ7
Cj4gLSAgICAgICAgY2FzZSAnICc6IGZsYWdzIHw9IFNQQUNFOyBnb3RvIHJlcGVhdDsKPiAtICAg
ICAgICBjYXNlICcjJzogZmxhZ3MgfD0gU1BFQ0lBTDsgZ290byByZXBlYXQ7Cj4gLSAgICAgICAg
Y2FzZSAnMCc6IGZsYWdzIHw9IFpFUk9QQUQ7IGdvdG8gcmVwZWF0Owo+IC0gICAgICAgIH0KPiAt
Cj4gLSAgICAgICAgLyogZ2V0IGZpZWxkIHdpZHRoICovCj4gLSAgICAgICAgZmllbGRfd2lkdGgg
PSAtMTsKPiAtICAgICAgICBpZiAoaXNkaWdpdCgqZm10KSkKPiAtICAgICAgICAgICAgZmllbGRf
d2lkdGggPSBza2lwX2F0b2koJmZtdCk7Cj4gLSAgICAgICAgZWxzZSBpZiAoKmZtdCA9PSAnKicp
IHsKPiAtICAgICAgICAgICAgKytmbXQ7Cj4gLSAgICAgICAgICAgIC8qIGl0J3MgdGhlIG5leHQg
YXJndW1lbnQgKi8KPiAtICAgICAgICAgICAgZmllbGRfd2lkdGggPSB2YV9hcmcoYXJncywgaW50
KTsKPiAtICAgICAgICAgICAgaWYgKGZpZWxkX3dpZHRoIDwgMCkgewo+IC0gICAgICAgICAgICAg
ICAgZmllbGRfd2lkdGggPSAtZmllbGRfd2lkdGg7Cj4gLSAgICAgICAgICAgICAgICBmbGFncyB8
PSBMRUZUOwo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+IC0KPiAtICAgICAgICAvKiBn
ZXQgdGhlIHByZWNpc2lvbiAqLwo+IC0gICAgICAgIHByZWNpc2lvbiA9IC0xOwo+IC0gICAgICAg
IGlmICgqZm10ID09ICcuJykgewo+IC0gICAgICAgICAgICArK2ZtdDsKPiAtICAgICAgICAgICAg
aWYgKGlzZGlnaXQoKmZtdCkpCj4gLSAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSBza2lwX2F0
b2koJmZtdCk7Cj4gLSAgICAgICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJyonKSB7Cj4gLSAgICAg
ICAgICAgICAgICArK2ZtdDsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpdCdzIHRo
ZSBuZXh0IGFyZ3VtZW50ICovCj4gLSAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSB2YV9hcmco
YXJncywgaW50KTsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBpZiAocHJlY2lzaW9u
IDwgMCkKPiAtICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IDA7Cj4gKyAgICAgICAgY29uc3Qg
Y2hhciAqcyA9IG5wdHI7Cj4gKyAgICAgICAgdWludDY0X3QgYWNjOwo+ICsgICAgICAgIHVuc2ln
bmVkIGNoYXIgYzsKPiArICAgICAgICB1aW50NjRfdCBxYmFzZSwgY3V0b2ZmOwo+ICsgICAgICAg
IGludCBuZWcsIGFueSwgY3V0bGltOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIFNl
ZSBzdHJ0b3EgZm9yIGNvbW1lbnRzIGFzIHRvIHRoZSBsb2dpYyB1c2VkLgo+ICsgICAgICAgICAq
Lwo+ICsgICAgICAgIGRvIHsKPiArICAgICAgICAgICAgICAgIGMgPSAqcysrOwo+ICsgICAgICAg
IH0gd2hpbGUgKGlzc3BhY2UoYykpOwo+ICsgICAgICAgIGlmIChjID09ICctJykgewo+ICsgICAg
ICAgICAgICAgICAgbmVnID0gMTsKPiArICAgICAgICAgICAgICAgIGMgPSAqcysrOwo+ICsgICAg
ICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgICBuZWcgPSAwOwo+ICsgICAgICAgICAgICAg
ICAgaWYgKGMgPT0gJysnKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsKPiAg
ICAgICAgICB9Cj4gLQo+IC0gICAgICAgIC8qIGdldCB0aGUgY29udmVyc2lvbiBxdWFsaWZpZXIg
Ki8KPiAtICAgICAgICBxdWFsaWZpZXIgPSAtMTsKPiAtICAgICAgICBpZiAoKmZtdCA9PSAnaCcg
fHwgKmZtdCA9PSAnbCcgfHwgKmZtdCA9PSAnTCcgfHwgKmZtdCA9PSdaJyB8fCAqZm10ID09ICd6
Jykgewo+IC0gICAgICAgICAgICBxdWFsaWZpZXIgPSAqZm10Owo+IC0gICAgICAgICAgICArK2Zt
dDsKPiAtICAgICAgICAgICAgaWYgKHF1YWxpZmllciA9PSAnbCcgJiYgKmZtdCA9PSAnbCcpIHsK
PiAtICAgICAgICAgICAgICAgIHF1YWxpZmllciA9ICdMJzsKPiAtICAgICAgICAgICAgICAgICsr
Zm10Owo+IC0gICAgICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAneicpIHsKPiAtICAg
ICAgICAgICAgICAgIHF1YWxpZmllciA9ICdaJzsKPiAtICAgICAgICAgICAgfQo+ICsgICAgICAg
IGlmICgoYmFzZSA9PSAwIHx8IGJhc2UgPT0gMTYpICYmCj4gKyAgICAgICAgICAgIGMgPT0gJzAn
ICYmICgqcyA9PSAneCcgfHwgKnMgPT0gJ1gnKSkgewo+ICsgICAgICAgICAgICAgICAgYyA9IHNb
MV07Cj4gKyAgICAgICAgICAgICAgICBzICs9IDI7Cj4gKyAgICAgICAgICAgICAgICBiYXNlID0g
MTY7Cj4gICAgICAgICAgfQo+IC0gICAgICAgIGlmICgqZm10ID09ICdxJykgewo+IC0gICAgICAg
ICAgICBxdWFsaWZpZXIgPSAnTCc7Cj4gLSAgICAgICAgICAgICsrZm10Owo+ICsgICAgICAgIGlm
IChiYXNlID09IDApCj4gKyAgICAgICAgICAgICAgICBiYXNlID0gYyA9PSAnMCcgPyA4IDogMTA7
Cj4gKyAgICAgICAgcWJhc2UgPSAodW5zaWduZWQpYmFzZTsKPiArICAgICAgICBjdXRvZmYgPSAo
dWludDY0X3QpVUxMT05HX01BWCAvIHFiYXNlOwo+ICsgICAgICAgIGN1dGxpbSA9ICh1aW50NjRf
dClVTExPTkdfTUFYICUgcWJhc2U7Cj4gKyAgICAgICAgZm9yIChhY2MgPSAwLCBhbnkgPSAwOzsg
YyA9ICpzKyspIHsKPiArICAgICAgICAgICAgICAgIGlmICghaXNhc2NpaShjKSkKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChj
KSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgYyAtPSAnMCc7Cj4gKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChpc2FscGhhKGMpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjIC09IGlz
dXBwZXIoYykgPyAnQScgLSAxMCA6ICdhJyAtIDEwOwo+ICsgICAgICAgICAgICAgICAgZWxzZQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIGlmIChj
ID49IGJhc2UpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAg
ICAgICAgaWYgKGFueSA8IDAgfHwgYWNjID4gY3V0b2ZmIHx8IChhY2MgPT0gY3V0b2ZmICYmIGMg
PiBjdXRsaW0pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAtMTsKPiArICAgICAg
ICAgICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbnkgPSAxOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBhY2MgKj0gcWJhc2U7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFjYyArPSBjOwo+ICsgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgIH0KPiArICAg
ICAgICBpZiAoYW55IDwgMCkgewo+ICsgICAgICAgICAgICAgICAgYWNjID0gVUxMT05HX01BWDsK
PiArICAgICAgICB9IGVsc2UgaWYgKG5lZykKPiArICAgICAgICAgICAgICAgIGFjYyA9IC1hY2M7
Cj4gKyAgICAgICAgaWYgKGVuZHB0ciAhPSAwKQo+ICsgICAgICAgICAgICAgICAgKmVuZHB0ciA9
IF9fREVDT05TVChjaGFyICosIGFueSA/IHMgLSAxIDogbnB0cik7Cj4gKyAgICAgICAgcmV0dXJu
IChhY2MpOwo+ICt9Cj4gIAo+IC0gICAgICAgIC8qIGRlZmF1bHQgYmFzZSAqLwo+IC0gICAgICAg
IGJhc2UgPSAxMDsKPiAtCj4gLSAgICAgICAgc3dpdGNoICgqZm10KSB7Cj4gLSAgICAgICAgY2Fz
ZSAnYyc6Cj4gLSAgICAgICAgICAgIGlmICghKGZsYWdzICYgTEVGVCkpIHsKPiAtICAgICAgICAg
ICAgICAgIHdoaWxlICgtLWZpZWxkX3dpZHRoID4gMCkgewo+IC0gICAgICAgICAgICAgICAgICAg
IGlmIChzdHIgPD0gZW5kKQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAqc3RyID0gJyAnOwo+
IC0gICAgICAgICAgICAgICAgICAgICsrc3RyOwo+ICsvKgo+ICsgKiBTY2FsZWQgZG93biB2ZXJz
aW9uIG9mIHByaW50ZigzKS4KPiArICovCj4gK2ludAo+ICt2c25wcmludGYoY2hhciAqc3RyLCBz
aXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqZm10LCB2YV9saXN0IGFwKQo+ICt7Cj4gKyNkZWZpbmUg
UENIQVIoYykgeyBpZiAoc2l6ZSA+PSAyKSB7ICpzdHIrKyA9IGM7IHNpemUtLTsgfSByZXR2YWwr
KzsgfQo+ICsgICAgICAgIGNoYXIgbmJ1ZltNQVhOQlVGXTsKPiArICAgICAgICBjb25zdCBjaGFy
ICpwLCAqcGVyY2VudDsKPiArICAgICAgICBpbnQgY2gsIG47Cj4gKyAgICAgICAgdWludG1heF90
IG51bTsKPiArICAgICAgICBpbnQgYmFzZSwgbGZsYWcsIHFmbGFnLCB0bXAsIHdpZHRoLCBsYWRq
dXN0LCBzaGFycGZsYWcsIG5lZywgc2lnbiwgZG90Owo+ICsgICAgICAgIGludCBjZmxhZywgaGZs
YWcsIGpmbGFnLCB0ZmxhZywgemZsYWc7Cj4gKyAgICAgICAgaW50IGR3aWR0aCwgdXBwZXI7Cj4g
KyAgICAgICAgY2hhciBwYWRjOwo+ICsgICAgICAgIGludCBzdG9wID0gMCwgcmV0dmFsID0gMDsK
PiArCj4gKyAgICAgICAgbnVtID0gMDsKPiArCj4gKyAgICAgICAgaWYgKGZtdCA9PSBOVUxMKQo+
ICsgICAgICAgICAgICAgICAgZm10ID0gIihmbXQgbnVsbClcbiI7Cj4gKwo+ICsgICAgICAgIGZv
ciAoOzspIHsKPiArICAgICAgICAgICAgICAgIHBhZGMgPSAnICc7Cj4gKyAgICAgICAgICAgICAg
ICB3aWR0aCA9IDA7Cj4gKyAgICAgICAgICAgICAgICB3aGlsZSAoKGNoID0gKHVfY2hhcikqZm10
KyspICE9ICclJyB8fCBzdG9wKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9
PSAnXDAnKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPj0g
MSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICdc
MCc7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXR2YWwpOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFBD
SEFSKGNoKTsKPiAgICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfQo+IC0gICAgICAg
ICAgICBjID0gKHVuc2lnbmVkIGNoYXIpIHZhX2FyZyhhcmdzLCBpbnQpOwo+IC0gICAgICAgICAg
ICBpZiAoc3RyIDw9IGVuZCkKPiAtICAgICAgICAgICAgICAgICpzdHIgPSBjOwo+IC0gICAgICAg
ICAgICArK3N0cjsKPiAtICAgICAgICAgICAgd2hpbGUgKC0tZmllbGRfd2lkdGggPiAwKSB7Cj4g
LSAgICAgICAgICAgICAgICBpZiAoc3RyIDw9IGVuZCkKPiAtICAgICAgICAgICAgICAgICAgICAq
c3RyID0gJyAnOwo+IC0gICAgICAgICAgICAgICAgKytzdHI7Cj4gLSAgICAgICAgICAgIH0KPiAt
ICAgICAgICAgICAgY29udGludWU7Cj4gLQo+IC0gICAgICAgIGNhc2UgJ3MnOgo+IC0gICAgICAg
ICAgICBzID0gdmFfYXJnKGFyZ3MsIGNoYXIgKik7Cj4gLSAgICAgICAgICAgIGlmICghcykKPiAt
ICAgICAgICAgICAgICAgIHMgPSAiPE5VTEw+IjsKPiAtCj4gLSAgICAgICAgICAgIGxlbiA9IHN0
cm5sZW4ocywgcHJlY2lzaW9uKTsKPiAtCj4gLSAgICAgICAgICAgIGlmICghKGZsYWdzICYgTEVG
VCkpIHsKPiAtICAgICAgICAgICAgICAgIHdoaWxlIChsZW4gPCBmaWVsZF93aWR0aC0tKSB7Cj4g
LSAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICpzdHIgPSAnICc7Cj4gLSAgICAgICAgICAgICAgICAgICAgKytzdHI7Cj4gKyAgICAg
ICAgICAgICAgICBwZXJjZW50ID0gZm10IC0gMTsKPiArICAgICAgICAgICAgICAgIHFmbGFnID0g
MDsgbGZsYWcgPSAwOyBsYWRqdXN0ID0gMDsgc2hhcnBmbGFnID0gMDsgbmVnID0gMDsKPiArICAg
ICAgICAgICAgICAgIHNpZ24gPSAwOyBkb3QgPSAwOyBkd2lkdGggPSAwOyB1cHBlciA9IDA7Cj4g
KyAgICAgICAgICAgICAgICBjZmxhZyA9IDA7IGhmbGFnID0gMDsgamZsYWcgPSAwOyB0ZmxhZyA9
IDA7IHpmbGFnID0gMDsKPiArcmVzd2l0Y2g6ICAgICAgIHN3aXRjaCAoY2ggPSAodV9jaGFyKSpm
bXQrKykgewo+ICsgICAgICAgICAgICAgICAgY2FzZSAnLic6Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvdCA9IDE7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7
Cj4gKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAg
c2hhcnBmbGFnID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsK
PiArICAgICAgICAgICAgICAgIGNhc2UgJysnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBz
aWduID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKPiArICAg
ICAgICAgICAgICAgIGNhc2UgJy0nOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBsYWRqdXN0
ID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKPiArICAgICAg
ICAgICAgICAgIGNhc2UgJyUnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUihjaCk7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgY2Fz
ZSAnKic6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG90KSB7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSB2YV9hcmcoYXAsIGludCk7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkgewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFkanVzdCA9ICFsYWRqdXN0Owo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAtd2lkdGg7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3aWR0aCA9IHZh
X2FyZyhhcCwgaW50KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOwo+ICsgICAgICAgICAgICAgICAgY2FzZSAnMCc6
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG90KSB7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFkYyA9ICcwJzsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIHJlc3dpdGNoOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAg
ICAgICAgICAgICAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKPiAr
ICAgICAgICAgICAgICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBj
YXNlICc5JzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwOzsg
KytmbXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBu
ICogMTAgKyBjaCAtICcwJzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoID0gKmZtdDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjaCA8ICcwJyB8fCBjaCA+ICc5JykKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG90KQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGR3aWR0aCA9IG47Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG47Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7Cj4gKyAgICAgICAgICAgICAg
ICBjYXNlICdjJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIodmFfYXJnKGFwLCBp
bnQpKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAg
ICBjYXNlICdkJzoKPiArICAgICAgICAgICAgICAgIGNhc2UgJ2knOgo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlID0gMTA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAx
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9zaWduOwo+ICsgICAgICAg
ICAgICAgICAgY2FzZSAnaCc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZmxhZykg
ewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhmbGFnID0gMDsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjZmxhZyA9IDE7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhmbGFnID0g
MTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKPiArICAgICAgICAg
ICAgICAgIGNhc2UgJ2onOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBqZmxhZyA9IDE7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7Cj4gKyAgICAgICAgICAgICAg
ICBjYXNlICdsJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxmbGFnKSB7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZsYWcgPSAwOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHFmbGFnID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZsYWcgPSAxOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOwo+ICsgICAgICAgICAgICAgICAg
Y2FzZSAnbic6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqZmxhZykKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHZhX2FyZyhhcCwgaW50bWF4X3QgKikpID0gcmV0
dmFsOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxZmxhZykKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHZhX2FyZyhhcCwgaW50NjRfdCAqKSkgPSByZXR2
YWw7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxmbGFnKQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBsb25nICopKSA9IHJldHZhbDsK
PiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoemZsYWcpCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKih2YV9hcmcoYXAsIHNpemVfdCAqKSkgPSByZXR2YWw7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGhmbGFnKQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBzaG9ydCAqKSkgPSByZXR2YWw7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNmbGFnKQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICoodmFfYXJnKGFwLCBjaGFyICopKSA9IHJldHZhbDsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoodmFfYXJnKGFwLCBpbnQgKikpID0gcmV0dmFsOwo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKPiArICAgICAgICAgICAgICAgIGNhc2UgJ28nOgo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlID0gODsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVf
bm9zaWduOwo+ICsgICAgICAgICAgICAgICAgY2FzZSAncCc6Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2UgPSAxNjsKPiArICAgICAgICAgICAgICAgICAgICAgICAgc2hhcnBmbGFnID0g
KHdpZHRoID09IDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMDsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtID0gKHVpbnRwdHJfdCl2YV9hcmcoYXAsIHZvaWQgKik7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbnVtYmVyOwo+ICsgICAgICAgICAgICAg
ICAgY2FzZSAncSc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHFmbGFnID0gMTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKPiArICAgICAgICAgICAgICAgIGNh
c2UgJ3InOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTA7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzaWduKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gaGFuZGxlX3NpZ247Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaGFu
ZGxlX25vc2lnbjsKPiArICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBwID0gdmFfYXJnKGFwLCBjaGFyICopOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocCA9PSBOVUxMKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAg
PSAiKG51bGwpIjsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkb3QpCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHN0cmxlbiAocCk7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KG4gPSAwOyBuIDwgZHdpZHRoICYmIHBbbl07IG4rKykKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGggLT0gbjsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFkanVz
dCAmJiB3aWR0aCA+IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUg
KHdpZHRoLS0pCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hB
UihwYWRjKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG4tLSkKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUigqcCsrKTsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxhZGp1c3QgJiYgd2lkdGggPiAwKQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICh3aWR0aC0tKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUENIQVIocGFkYyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwo+ICsgICAgICAgICAgICAgICAgY2FzZSAndCc6Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRmbGFnID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsK
PiArICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBi
YXNlID0gMTA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX25vc2lnbjsK
PiArICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICB1
cHBlciA9IDE7Cj4gKyAgICAgICAgICAgICAgICBjYXNlICd4JzoKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZSA9IDE2Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRs
ZV9ub3NpZ247Cj4gKyAgICAgICAgICAgICAgICBjYXNlICd5JzoKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZSA9IDE2Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsK
PiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfc2lnbjsKPiArICAgICAgICAg
ICAgICAgIGNhc2UgJ3onOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICB6ZmxhZyA9IDE7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7Cj4gK2hhbmRsZV9ub3NpZ246
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAwOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoamZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVt
ID0gdmFfYXJnKGFwLCB1aW50bWF4X3QpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChxZmxhZykKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9h
cmcoYXAsIHVpbnQ2NF90KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGZs
YWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBw
dHJkaWZmX3QpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsZmxhZykKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSB2YV9hcmcoYXAsIHVfbG9uZyk7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHpmbGFnKQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgc2l6ZV90KTsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtID0gKHVuc2lnbmVkIHNob3J0KXZhX2FyZyhhcCwgaW50KTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ZsYWcpCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtID0gKHVfY2hhcil2YV9hcmcoYXAsIGludCk7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dW0gPSB2YV9hcmcoYXAsIHVfaW50KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byBu
dW1iZXI7Cj4gK2hhbmRsZV9zaWduOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoamZs
YWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBp
bnRtYXhfdCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHFmbGFnKQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgaW50NjRfdCk7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRmbGFnKQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bSA9IHZhX2FyZyhhcCwgcHRyZGlmZl90KTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobGZsYWcpCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBsb25nKTsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoemZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVtID0gdmFfYXJnKGFwLCBzc2l6ZV90KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaGZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0g
KHNob3J0KXZhX2FyZyhhcCwgaW50KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY2ZsYWcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gKGNoYXIp
dmFfYXJnKGFwLCBpbnQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFwLCBpbnQpOwo+ICtudW1i
ZXI6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaWduICYmIChpbnRtYXhfdCludW0g
PCAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnID0gMTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSAtKGludG1heF90KW51bTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBwID0ga3Nw
cmludG4obmJ1ZiwgbnVtLCBiYXNlLCAmbiwgdXBwZXIpOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICB0bXAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcnBmbGFnICYm
IG51bSAhPSAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2Ug
PT0gOCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCsrOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UgPT0gMTYpCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgKz0gMjsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVn
KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCsrOwo+ICsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFsYWRqdXN0ICYmIHBhZGMgPT0gJzAnKQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGR3aWR0aCA9IHdpZHRoIC0gdG1wOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aCAtPSB0bXAgKyAoZHdpZHRoID4gbiA/IGR3aWR0aCA6IG4p
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBkd2lkdGggLT0gbjsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFsYWRqdXN0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICh3aWR0aC0tID4gMCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBDSEFSKCcgJyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWcp
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJy0nKTsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNoYXJwZmxhZyAmJiBudW0gIT0gMCkgewo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlID09IDgpIHsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCcwJyk7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiYXNlID09IDE2KSB7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0hBUignMCcpOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJ3gnKTsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGR3aWR0aC0tID4gMCkKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQQ0hBUignMCcpOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKCpwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSEFSKCpw
LS0pOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhZGp1c3QpCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdpZHRoLS0gPiAwKQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoJyAnKTsKPiArCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgZGVmYXVsdDoKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBlcmNlbnQgPCBmbXQpCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUENIQVIoKnBlcmNlbnQrKyk7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIFNpbmNlIHdlIGln
bm9yZSBhIGZvcm1hdHRpbmcgYXJndW1lbnQgaXQgaXMgbm8KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICogbG9uZ2VyIHNhZmUgdG8gb2JleSB0aGUgcmVtYWluaW5nIGZvcm1hdHRpbmcKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICogYXJndW1lbnRzIGFzIHRoZSBhcmd1bWVudHMgd2ls
bCBubyBsb25nZXIgbWF0Y2gKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGZvcm1h
dCBzcGVjcy4KPiArICAgICAgICAgICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0b3AgPSAxOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAg
ICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgbGVuOyArK2kpIHsKPiAtICAgICAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQo+
IC0gICAgICAgICAgICAgICAgICAgICpzdHIgPSAqczsKPiAtICAgICAgICAgICAgICAgICsrc3Ry
OyArK3M7Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgd2hpbGUgKGxlbiA8IGZpZWxk
X3dpZHRoLS0pIHsKPiAtICAgICAgICAgICAgICAgIGlmIChzdHIgPD0gZW5kKQo+IC0gICAgICAg
ICAgICAgICAgICAgICpzdHIgPSAnICc7Cj4gLSAgICAgICAgICAgICAgICArK3N0cjsKPiAtICAg
ICAgICAgICAgfQo+IC0gICAgICAgICAgICBjb250aW51ZTsKPiAtCj4gLSAgICAgICAgY2FzZSAn
cCc6Cj4gLSAgICAgICAgICAgIGlmIChmaWVsZF93aWR0aCA9PSAtMSkgewo+IC0gICAgICAgICAg
ICAgICAgZmllbGRfd2lkdGggPSAyKnNpemVvZih2b2lkICopOwo+IC0gICAgICAgICAgICAgICAg
ZmxhZ3MgfD0gWkVST1BBRDsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBzdHIgPSBu
dW1iZXIoc3RyLCBlbmQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9u
ZykgdmFfYXJnKGFyZ3MsIHZvaWQgKiksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAxNiwg
ZmllbGRfd2lkdGgsIHByZWNpc2lvbiwgZmxhZ3MpOwo+IC0gICAgICAgICAgICBjb250aW51ZTsK
PiAtCj4gLQo+IC0gICAgICAgIGNhc2UgJ24nOgo+IC0gICAgICAgICAgICBpZiAocXVhbGlmaWVy
ID09ICdsJykgewo+IC0gICAgICAgICAgICAgICAgbG9uZyAqIGlwID0gdmFfYXJnKGFyZ3MsIGxv
bmcgKik7Cj4gLSAgICAgICAgICAgICAgICAqaXAgPSAoc3RyIC0gYnVmKTsKPiAtICAgICAgICAg
ICAgfSBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ1onKSB7Cj4gLSAgICAgICAgICAgICAgICBzaXpl
X3QgKiBpcCA9IHZhX2FyZyhhcmdzLCBzaXplX3QgKik7Cj4gLSAgICAgICAgICAgICAgICAqaXAg
PSAoc3RyIC0gYnVmKTsKPiAtICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAg
IGludCAqIGlwID0gdmFfYXJnKGFyZ3MsIGludCAqKTsKPiAtICAgICAgICAgICAgICAgICppcCA9
IChzdHIgLSBidWYpOwo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIGNvbnRpbnVlOwo+
IC0KPiAtICAgICAgICBjYXNlICclJzoKPiAtICAgICAgICAgICAgaWYgKHN0ciA8PSBlbmQpCj4g
LSAgICAgICAgICAgICAgICAqc3RyID0gJyUnOwo+IC0gICAgICAgICAgICArK3N0cjsKPiAtICAg
ICAgICAgICAgY29udGludWU7Cj4gLQo+IC0gICAgICAgICAgICAvKiBpbnRlZ2VyIG51bWJlciBm
b3JtYXRzIC0gc2V0IHVwIHRoZSBmbGFncyBhbmQgImJyZWFrIiAqLwo+IC0gICAgICAgIGNhc2Ug
J28nOgo+IC0gICAgICAgICAgICBiYXNlID0gODsKPiAtICAgICAgICAgICAgYnJlYWs7Cj4gLQo+
IC0gICAgICAgIGNhc2UgJ1gnOgo+IC0gICAgICAgICAgICBmbGFncyB8PSBMQVJHRTsKPiAtICAg
ICAgICBjYXNlICd4JzoKPiAtICAgICAgICAgICAgYmFzZSA9IDE2Owo+IC0gICAgICAgICAgICBi
cmVhazsKPiAtCj4gLSAgICAgICAgY2FzZSAnZCc6Cj4gLSAgICAgICAgY2FzZSAnaSc6Cj4gLSAg
ICAgICAgICAgIGZsYWdzIHw9IFNJR047Cj4gLSAgICAgICAgY2FzZSAndSc6Cj4gLSAgICAgICAg
ICAgIGJyZWFrOwo+IC0KPiAtICAgICAgICBkZWZhdWx0Ogo+IC0gICAgICAgICAgICBpZiAoc3Ry
IDw9IGVuZCkKPiAtICAgICAgICAgICAgICAgICpzdHIgPSAnJSc7Cj4gLSAgICAgICAgICAgICsr
c3RyOwo+IC0gICAgICAgICAgICBpZiAoKmZtdCkgewo+IC0gICAgICAgICAgICAgICAgaWYgKHN0
ciA8PSBlbmQpCj4gLSAgICAgICAgICAgICAgICAgICAgKnN0ciA9ICpmbXQ7Cj4gLSAgICAgICAg
ICAgICAgICArK3N0cjsKPiAtICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAg
IC0tZm10Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAg
ICAgIH0KPiAtICAgICAgICBpZiAocXVhbGlmaWVyID09ICdMJykKPiAtICAgICAgICAgICAgbnVt
ID0gdmFfYXJnKGFyZ3MsIGxvbmcgbG9uZyk7Cj4gLSAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVy
ID09ICdsJykgewo+IC0gICAgICAgICAgICBudW0gPSB2YV9hcmcoYXJncywgdW5zaWduZWQgbG9u
Zyk7Cj4gLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNJR04pCj4gLSAgICAgICAgICAgICAgICBu
dW0gPSAoc2lnbmVkIGxvbmcpIG51bTsKPiAtICAgICAgICB9IGVsc2UgaWYgKHF1YWxpZmllciA9
PSAnWicpIHsKPiAtICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7Cj4gLSAg
ICAgICAgfSBlbHNlIGlmIChxdWFsaWZpZXIgPT0gJ2gnKSB7Cj4gLSAgICAgICAgICAgIG51bSA9
ICh1bnNpZ25lZCBzaG9ydCkgdmFfYXJnKGFyZ3MsIGludCk7Cj4gLSAgICAgICAgICAgIGlmIChm
bGFncyAmIFNJR04pCj4gLSAgICAgICAgICAgICAgICBudW0gPSAoc2lnbmVkIHNob3J0KSBudW07
Cj4gLSAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgbnVtID0gdmFfYXJnKGFyZ3MsIHVu
c2lnbmVkIGludCk7Cj4gLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNJR04pCj4gLSAgICAgICAg
ICAgICAgICBudW0gPSAoc2lnbmVkIGludCkgbnVtOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAg
ICAgc3RyID0gbnVtYmVyKHN0ciwgZW5kLCBudW0sIGJhc2UsCj4gLSAgICAgICAgICAgICAgICAg
ICAgIGZpZWxkX3dpZHRoLCBwcmVjaXNpb24sIGZsYWdzKTsKPiAtICAgIH0KPiAtICAgIGlmIChz
dHIgPD0gZW5kKQo+IC0gICAgICAgICpzdHIgPSAnXDAnOwo+IC0gICAgZWxzZSBpZiAoc2l6ZSA+
IDApCj4gLSAgICAgICAgLyogZG9uJ3Qgd3JpdGUgb3V0IGEgbnVsbCBieXRlIGlmIHRoZSBidWYg
c2l6ZSBpcyB6ZXJvICovCj4gLSAgICAgICAgKmVuZCA9ICdcMCc7Cj4gLSAgICAvKiB0aGUgdHJh
aWxpbmcgbnVsbCBieXRlIGRvZXNuJ3QgY291bnQgdG93YXJkcyB0aGUgdG90YWwKPiAtICAgICAq
ICsrc3RyOwo+IC0gICAgICovCj4gLSAgICByZXR1cm4gc3RyLWJ1ZjsKPiArI3VuZGVmIFBDSEFS
Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC01NTIsMjIwICs2MzUsNTg3IEBAIGludCBzcHJpbnRmKGNo
YXIgKiBidWYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQo+ICAgICAgcmV0dXJuIGk7Cj4gIH0KPiAg
Cj4gKy8qCj4gKyAqIEZpbGwgaW4gdGhlIGdpdmVuIHRhYmxlIGZyb20gdGhlIHNjYW5zZXQgYXQg
dGhlIGdpdmVuIGZvcm1hdAo+ICsgKiAoanVzdCBhZnRlciBgWycpLiAgUmV0dXJuIGEgcG9pbnRl
ciB0byB0aGUgY2hhcmFjdGVyIHBhc3QgdGhlCj4gKyAqIGNsb3NpbmcgYF0nLiAgVGhlIHRhYmxl
IGhhcyBhIDEgd2hlcmV2ZXIgY2hhcmFjdGVycyBzaG91bGQgYmUKPiArICogY29uc2lkZXJlZCBw
YXJ0IG9mIHRoZSBzY2Fuc2V0Lgo+ICsgKi8KPiArc3RhdGljIGNvbnN0IHVfY2hhciAqCj4gK19f
c2NjbChjaGFyICp0YWIsIGNvbnN0IHVfY2hhciAqZm10KQo+ICt7Cj4gKyAgICAgICAgaW50IGMs
IG4sIHY7Cj4gKwo+ICsgICAgICAgIC8qIGZpcnN0IGBjbGVhcicgdGhlIHdob2xlIHRhYmxlICov
Cj4gKyAgICAgICAgYyA9ICpmbXQrKzsgICAgICAgICAgICAgLyogZmlyc3QgY2hhciBoYXQgPT4g
bmVnYXRlZCBzY2Fuc2V0ICovCj4gKyAgICAgICAgaWYgKGMgPT0gJ14nKSB7Cj4gKyAgICAgICAg
ICAgICAgICB2ID0gMTsgICAgICAgICAgLyogZGVmYXVsdCA9PiBhY2NlcHQgKi8KPiArICAgICAg
ICAgICAgICAgIGMgPSAqZm10Kys7ICAgICAvKiBnZXQgbmV3IGZpcnN0IGNoYXIgKi8KPiArICAg
ICAgICB9IGVsc2UKPiArICAgICAgICAgICAgICAgIHYgPSAwOyAgICAgICAgICAvKiBkZWZhdWx0
ID0+IHJlamVjdCAqLwo+ICsKPiArICAgICAgICAvKiBYWFg6IFdpbGwgbm90IHdvcmsgaWYgc2l6
ZW9mKHRhYiopID4gc2l6ZW9mKGNoYXIpICovCj4gKyAgICAgICAgZm9yIChuID0gMDsgbiA8IDI1
NjsgbisrKQo+ICsgICAgICAgICAgICAgICAgICAgICB0YWJbbl0gPSB2OyAgICAgICAgLyogbWVt
c2V0KHRhYiwgdiwgMjU2KSAqLwo+ICsKPiArICAgICAgICBpZiAoYyA9PSAwKQo+ICsgICAgICAg
ICAgICAgICAgcmV0dXJuIChmbXQgLSAxKTsvKiBmb3JtYXQgZW5kZWQgYmVmb3JlIGNsb3Npbmcg
XSAqLwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIE5vdyBzZXQgdGhlIGVudHJpZXMg
Y29ycmVzcG9uZGluZyB0byB0aGUgYWN0dWFsIHNjYW5zZXQKPiArICAgICAgICAgKiB0byB0aGUg
b3Bwb3NpdGUgb2YgdGhlIGFib3ZlLgo+ICsgICAgICAgICAqCj4gKyAgICAgICAgICogVGhlIGZp
cnN0IGNoYXJhY3RlciBtYXkgYmUgJ10nIChvciAnLScpIHdpdGhvdXQgYmVpbmcgc3BlY2lhbDsK
PiArICAgICAgICAgKiB0aGUgbGFzdCBjaGFyYWN0ZXIgbWF5IGJlICctJy4KPiArICAgICAgICAg
Ki8KPiArICAgICAgICB2ID0gMSAtIHY7Cj4gKyAgICAgICAgZm9yICg7Oykgewo+ICsgICAgICAg
ICAgICAgICAgdGFiW2NdID0gdjsgICAgICAgICAgICAgLyogdGFrZSBjaGFyYWN0ZXIgYyAqLwo+
ICtkb3N3aXRjaDoKPiArICAgICAgICAgICAgICAgIG4gPSAqZm10Kys7ICAgICAgICAgICAgIC8q
IGFuZCBleGFtaW5lIHRoZSBuZXh0ICovCj4gKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHsK
PiArCj4gKyAgICAgICAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAvKiBmb3JtYXQg
ZW5kZWQgdG9vIHNvb24gKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChmbXQg
LSAxKTsKPiArCj4gKyAgICAgICAgICAgICAgICBjYXNlICctJzoKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogQSBzY2Fuc2V0IG9mIHRo
ZSBmb3JtCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgWzAxKy1dCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAqIGlzIGRlZmluZWQgYXMgYHRoZSBkaWdpdCAwLCB0aGUgZGln
aXQgMSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGNoYXJhY3RlciArLCB0aGUg
Y2hhcmFjdGVyIC0nLCBidXQKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGVmZmVj
dCBvZiBhIHNjYW5zZXQgc3VjaCBhcwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAg
IFthLXpBLVowLTldCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGlzIGltcGxlbWVudGF0
aW9uIGRlZmluZWQuICBUaGUgVjcgVW5peAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBz
Y2FuZiB0cmVhdHMgYGEteicgYXMgYHRoZSBsZXR0ZXJzIGEgdGhyb3VnaAo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgKiB6JywgYnV0IHRyZWF0cyBgYS1hJyBhcyBgdGhlIGxldHRlciBhLCB0
aGUKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogY2hhcmFjdGVyIC0sIGFuZCB0aGUgbGV0
dGVyIGEnLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKgo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBGb3IgY29tcGF0aWJpbGl0eSwgdGhlIGAtJyBpcyBub3QgY29uc2lkZXJkCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRvIGRlZmluZSBhIHJhbmdlIGlmIHRoZSBjaGFy
YWN0ZXIgZm9sbG93aW5nCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0IGlzIGVpdGhl
ciBhIGNsb3NlIGJyYWNrZXQgKHJlcXVpcmVkIGJ5IEFOU0kpCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqIG9yIGlzIG5vdCBudW1lcmljYWxseSBncmVhdGVyIHRoYW4gdGhlIGNoYXJhY3Rl
cgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiB3ZSBqdXN0IHN0b3JlZCBpbiB0aGUgdGFi
bGUgKGMpLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgbiA9ICpmbXQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09ICdd
JyB8fCBuIDwgYykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAnLSc7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAvKiByZXN1bWUgdGhl
IGZvcig7OykgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBmbXQrKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgLyogZmlsbCBpbiB0
aGUgcmFuZ2UgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgZG8gewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFiWysrY10gPSB2Owo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICB9IHdoaWxlIChjIDwgbik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBB
bGFzLCB0aGUgVjcgVW5peCBzY2FuZiBhbHNvIHRyZWF0cyBmb3JtYXRzCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAqIHN1Y2ggYXMgW2EtYy1lXSBhcyBgdGhlIGxldHRlcnMgYSB0aHJvdWdo
IGUnLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIHRvbyBpcyBwZXJtaXR0ZWQg
YnkgdGhlIHN0YW5kYXJkLi4uLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBkb3N3aXRjaDsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2FzZSAnXSc6ICAgICAgICAgICAg
ICAgLyogZW5kIG9mIHNjYW5zZXQgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IChmbXQpOwo+ICsKPiArICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgIC8q
IGp1c3QgYW5vdGhlciBjaGFyYWN0ZXIgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgYyA9
IG47Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAg
fQo+ICsgICAgICAgIH0KPiArICAgICAgICAvKiBOT1RSRUFDSEVEICovCj4gK30KPiArCj4gIC8q
Kgo+ICAgKiB2c3NjYW5mIC0gVW5mb3JtYXQgYSBidWZmZXIgaW50byBhIGxpc3Qgb2YgYXJndW1l
bnRzCj4gICAqIEBidWY6CWlucHV0IGJ1ZmZlcgo+ICAgKiBAZm10Oglmb3JtYXQgb2YgYnVmZmVy
Cj4gICAqIEBhcmdzOglhcmd1bWVudHMKPiAgICovCj4gLWludCB2c3NjYW5mKGNvbnN0IGNoYXIg
KiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIHZhX2xpc3QgYXJncykKPiArI2RlZmluZSBCVUYgICAg
ICAgICAgICAgMzIgICAgICAvKiBNYXhpbXVtIGxlbmd0aCBvZiBudW1lcmljIHN0cmluZy4gKi8K
PiArCj4gKy8qCj4gKyAqIEZsYWdzIHVzZWQgZHVyaW5nIGNvbnZlcnNpb24uCj4gKyAqLwo+ICsj
ZGVmaW5lIExPTkcgICAgICAgICAgICAweDAxICAgIC8qIGw6IGxvbmcgb3IgZG91YmxlICovCj4g
KyNkZWZpbmUgU0hPUlQgICAgICAgICAgIDB4MDQgICAgLyogaDogc2hvcnQgKi8KPiArI2RlZmlu
ZSBTVVBQUkVTUyAgICAgICAgMHgwOCAgICAvKiBzdXBwcmVzcyBhc3NpZ25tZW50ICovCj4gKyNk
ZWZpbmUgUE9JTlRFUiAgICAgICAgIDB4MTAgICAgLyogd2VpcmQgJXAgcG9pbnRlciAoYGZha2Ug
aGV4JykgKi8KPiArI2RlZmluZSBOT1NLSVAgICAgICAgICAgMHgyMCAgICAvKiBkbyBub3Qgc2tp
cCBibGFua3MgKi8KPiArI2RlZmluZSBRVUFEICAgICAgICAgICAgMHg0MDAKPiArI2RlZmluZSBT
SE9SVFNIT1JUICAgICAgMHg0MDAwICAvKiogaGg6IGNoYXIgKi8KPiArCj4gKy8qCj4gKyAqIFRo
ZSBmb2xsb3dpbmcgYXJlIHVzZWQgaW4gbnVtZXJpYyBjb252ZXJzaW9ucyBvbmx5Ogo+ICsgKiBT
SUdOT0ssIE5ESUdJVFMsIERQVE9LLCBhbmQgRVhQT0sgYXJlIGZvciBmbG9hdGluZyBwb2ludDsK
PiArICogU0lHTk9LLCBORElHSVRTLCBQRlhPSywgYW5kIE5aRElHSVRTIGFyZSBmb3IgaW50ZWdy
YWwuCj4gKyAqLwo+ICsjZGVmaW5lIFNJR05PSyAgICAgICAgICAweDQwICAgIC8qICsvLSBpcyAo
c3RpbGwpIGxlZ2FsICovCj4gKyNkZWZpbmUgTkRJR0lUUyAgICAgICAgIDB4ODAgICAgLyogbm8g
ZGlnaXRzIGRldGVjdGVkICovCj4gKwo+ICsjZGVmaW5lIERQVE9LICAgICAgICAgICAweDEwMCAg
IC8qIChmbG9hdCkgZGVjaW1hbCBwb2ludCBpcyBzdGlsbCBsZWdhbCAqLwo+ICsjZGVmaW5lIEVY
UE9LICAgICAgICAgICAweDIwMCAgIC8qIChmbG9hdCkgZXhwb25lbnQgKGUrMywgZXRjKSBzdGls
bCBsZWdhbCAqLwo+ICsKPiArI2RlZmluZSBQRlhPSyAgICAgICAgICAgMHgxMDAgICAvKiAweCBw
cmVmaXggaXMgKHN0aWxsKSBsZWdhbCAqLwo+ICsjZGVmaW5lIE5aRElHSVRTICAgICAgICAweDIw
MCAgIC8qIG5vIHplcm8gZGlnaXRzIGRldGVjdGVkICovCj4gKwo+ICsvKgo+ICsgKiBDb252ZXJz
aW9uIHR5cGVzLgo+ICsgKi8KPiArI2RlZmluZSBDVF9DSEFSICAgICAgICAgMCAgICAgICAvKiAl
YyBjb252ZXJzaW9uICovCj4gKyNkZWZpbmUgQ1RfQ0NMICAgICAgICAgIDEgICAgICAgLyogJVsu
Li5dIGNvbnZlcnNpb24gKi8KPiArI2RlZmluZSBDVF9TVFJJTkcgICAgICAgMiAgICAgICAvKiAl
cyBjb252ZXJzaW9uICovCj4gKyNkZWZpbmUgQ1RfSU5UICAgICAgICAgIDMgICAgICAgLyogaW50
ZWdlciwgaS5lLiwgc3RydG9xIG9yIHN0cnRvdXEgKi8KPiArdHlwZWRlZiB1aW50NjRfdCAoKmNj
Zm50eXBlKShjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7Cj4gKwo+ICtpbnQKPiArdnNzY2Fu
Zihjb25zdCBjaGFyICppbnAsIGNoYXIgY29uc3QgKmZtdDAsIHZhX2xpc3QgYXApCj4gIHsKPiAt
CWNvbnN0IGNoYXIgKnN0ciA9IGJ1ZjsKPiAtCWNoYXIgKm5leHQ7Cj4gLQljaGFyIGRpZ2l0Owo+
IC0JaW50IG51bSA9IDA7Cj4gLQlpbnQgcXVhbGlmaWVyOwo+IC0JaW50IGJhc2U7Cj4gLQlpbnQg
ZmllbGRfd2lkdGg7Cj4gLQlpbnQgaXNfc2lnbiA9IDA7Cj4gKyAgICAgICAgaW50IGlucjsKPiAr
ICAgICAgICBjb25zdCB1X2NoYXIgKmZtdCA9IChjb25zdCB1X2NoYXIgKilmbXQwOwo+ICsgICAg
ICAgIGludCBjOyAgICAgICAgICAgICAgICAgIC8qIGNoYXJhY3RlciBmcm9tIGZvcm1hdCwgb3Ig
Y29udmVyc2lvbiAqLwo+ICsgICAgICAgIHNpemVfdCB3aWR0aDsgICAgICAgICAgIC8qIGZpZWxk
IHdpZHRoLCBvciAwICovCj4gKyAgICAgICAgY2hhciAqcDsgICAgICAgICAgICAgICAgLyogcG9p
bnRzIGludG8gYWxsIGtpbmRzIG9mIHN0cmluZ3MgKi8KPiArICAgICAgICBpbnQgbjsgICAgICAg
ICAgICAgICAgICAvKiBoYW5keSBpbnRlZ2VyICovCj4gKyAgICAgICAgaW50IGZsYWdzOyAgICAg
ICAgICAgICAgLyogZmxhZ3MgYXMgZGVmaW5lZCBhYm92ZSAqLwo+ICsgICAgICAgIGNoYXIgKnAw
OyAgICAgICAgICAgICAgIC8qIHNhdmVzIG9yaWdpbmFsIHZhbHVlIG9mIHAgd2hlbiBuZWNlc3Nh
cnkgKi8KPiArICAgICAgICBpbnQgbmFzc2lnbmVkOyAgICAgICAgICAvKiBudW1iZXIgb2YgZmll
bGRzIGFzc2lnbmVkICovCj4gKyAgICAgICAgaW50IG5jb252ZXJzaW9uczsgICAgICAgLyogbnVt
YmVyIG9mIGNvbnZlcnNpb25zICovCj4gKyAgICAgICAgaW50IG5yZWFkOyAgICAgICAgICAgICAg
LyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29uc3VtZWQgZnJvbSBmcCAqLwo+ICsgICAgICAgIGlu
dCBiYXNlOyAgICAgICAgICAgICAgIC8qIGJhc2UgYXJndW1lbnQgdG8gc3RydG9xL3N0cnRvdXEg
Ki8KPiArICAgICAgICBjY2ZudHlwZSBjY2ZuOyAgICAgICAgICAvKiBjb252ZXJzaW9uIGZ1bmN0
aW9uIChzdHJ0b3Evc3RydG91cSkgKi8KPiArICAgICAgICBjaGFyIGNjbHRhYlsyNTZdOyAgICAg
ICAvKiBjaGFyYWN0ZXIgY2xhc3MgdGFibGUgZm9yICVbLi4uXSAqLwo+ICsgICAgICAgIGNoYXIg
YnVmW0JVRl07ICAgICAgICAgIC8qIGJ1ZmZlciBmb3IgbnVtZXJpYyBjb252ZXJzaW9ucyAqLwo+
ICAKPiAtCXdoaWxlKCpmbXQgJiYgKnN0cikgewo+IC0JCS8qIHNraXAgYW55IHdoaXRlIHNwYWNl
IGluIGZvcm1hdCAqLwo+IC0JCS8qIHdoaXRlIHNwYWNlIGluIGZvcm1hdCBtYXRjaHMgYW55IGFt
b3VudCBvZgo+IC0JCSAqIHdoaXRlIHNwYWNlLCBpbmNsdWRpbmcgbm9uZSwgaW4gdGhlIGlucHV0
Lgo+IC0JCSAqLwo+IC0JCWlmIChpc3NwYWNlKCpmbXQpKSB7Cj4gLQkJCXdoaWxlIChpc3NwYWNl
KCpmbXQpKQo+IC0JCQkJKytmbXQ7Cj4gLQkJCXdoaWxlIChpc3NwYWNlKCpzdHIpKQo+IC0JCQkJ
KytzdHI7Cj4gLQkJfQo+ICsgICAgICAgIC8qIGBiYXNlZml4JyBpcyB1c2VkIHRvIGF2b2lkIGBp
ZicgdGVzdHMgaW4gdGhlIGludGVnZXIgc2Nhbm5lciAqLwo+ICsgICAgICAgIHN0YXRpYyBzaG9y
dCBiYXNlZml4WzE3XSA9Cj4gKyAgICAgICAgICAgICAgICB7IDEwLCAxLCAyLCAzLCA0LCA1LCA2
LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiB9Owo+ICAKPiAtCQkvKiBhbnl0
aGluZyB0aGF0IGlzIG5vdCBhIGNvbnZlcnNpb24gbXVzdCBtYXRjaCBleGFjdGx5ICovCj4gLQkJ
aWYgKCpmbXQgIT0gJyUnICYmICpmbXQpIHsKPiAtCQkJaWYgKCpmbXQrKyAhPSAqc3RyKyspCj4g
LQkJCQlicmVhazsKPiAtCQkJY29udGludWU7Cj4gLQkJfQo+ICsgICAgICAgIGluciA9IHN0cmxl
bihpbnApOwo+ICAKPiAtCQlpZiAoISpmbXQpCj4gLQkJCWJyZWFrOwo+IC0JCSsrZm10Owo+IC0J
CQo+IC0JCS8qIHNraXAgdGhpcyBjb252ZXJzaW9uLgo+IC0JCSAqIGFkdmFuY2UgYm90aCBzdHJp
bmdzIHRvIG5leHQgd2hpdGUgc3BhY2UKPiAtCQkgKi8KPiAtCQlpZiAoKmZtdCA9PSAnKicpIHsK
PiAtCQkJd2hpbGUgKCFpc3NwYWNlKCpmbXQpICYmICpmbXQpCj4gLQkJCQlmbXQrKzsKPiAtCQkJ
d2hpbGUgKCFpc3NwYWNlKCpzdHIpICYmICpzdHIpCj4gLQkJCQlzdHIrKzsKPiAtCQkJY29udGlu
dWU7Cj4gLQkJfQo+ICsgICAgICAgIG5hc3NpZ25lZCA9IDA7Cj4gKyAgICAgICAgbmNvbnZlcnNp
b25zID0gMDsKPiArICAgICAgICBucmVhZCA9IDA7Cj4gKyAgICAgICAgYmFzZSA9IDA7ICAgICAg
ICAgICAgICAgLyogWFhYIGp1c3QgdG8ga2VlcCBnY2MgaGFwcHkgKi8KPiArICAgICAgICBjY2Zu
ID0gTlVMTDsgICAgICAgICAgICAvKiBYWFgganVzdCB0byBrZWVwIGdjYyBoYXBweSAqLwo+ICsg
ICAgICAgIGZvciAoOzspIHsKPiArICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7Cj4gKyAgICAg
ICAgICAgICAgICBpZiAoYyA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KG5hc3NpZ25lZCk7Cj4gKyAgICAgICAgICAgICAgICBpZiAoaXNzcGFjZShjKSkgewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5yID4gMCAmJiBpc3NwYWNlKCppbnApKQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkKyssIGluci0tLCBpbnArKzsKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgICAgICAgICB9Cj4g
KyAgICAgICAgICAgICAgICBpZiAoYyAhPSAnJScpCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gbGl0ZXJhbDsKPiArICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKPiArICAgICAgICAg
ICAgICAgIGZsYWdzID0gMDsKPiArICAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAg
ICAgKiBzd2l0Y2ggb24gdGhlIGZvcm1hdC4gIGNvbnRpbnVlIGlmIGRvbmU7Cj4gKyAgICAgICAg
ICAgICAgICAgKiBicmVhayBvbmNlIGZvcm1hdCB0eXBlIGlzIGRlcml2ZWQuCj4gKyAgICAgICAg
ICAgICAgICAgKi8KPiArYWdhaW46ICAgICAgICAgIGMgPSAqZm10Kys7Cj4gKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGMpIHsKPiArICAgICAgICAgICAgICAgIGNhc2UgJyUnOgo+ICtsaXRlcmFs
Ogo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5yIDw9IDApCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBpbnB1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKmlucCAhPSBjKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gbWF0Y2hfZmFpbHVyZTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaW5yLS0s
IGlucCsrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCsrOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKPiAgCj4gLQkJLyogZ2V0IGZpZWxkIHdpZHRoICovCj4g
LQkJZmllbGRfd2lkdGggPSAtMTsKPiAtCQlpZiAoaXNkaWdpdCgqZm10KSkKPiAtCQkJZmllbGRf
d2lkdGggPSBza2lwX2F0b2koJmZtdCk7Cj4gKyAgICAgICAgICAgICAgICBjYXNlICcqJzoKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gU1VQUFJFU1M7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gYWdhaW47Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdsJzoKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgTE9ORyl7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfkxPTkc7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MgfD0gUVVBRDsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBMT05H
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gYWdhaW47Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdxJzoKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MgfD0gUVVBRDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBhZ2FpbjsKPiArICAgICAgICAgICAgICAgIGNhc2UgJ2gnOgo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZmxhZ3MgJiBTSE9SVCl7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MgJj0gflNIT1JUOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzIHw9IFNIT1JUU0hPUlQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gU0hPUlQ7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZ290byBh
Z2FpbjsKPiAgCj4gLQkJLyogZ2V0IGNvbnZlcnNpb24gcXVhbGlmaWVyICovCj4gLQkJcXVhbGlm
aWVyID0gLTE7Cj4gLQkJaWYgKCpmbXQgPT0gJ2gnIHx8ICpmbXQgPT0gJ2wnIHx8ICpmbXQgPT0g
J0wnIHx8Cj4gLQkJICAgICpmbXQgPT0gJ1onIHx8ICpmbXQgPT0gJ3onKSB7Cj4gLQkJCXF1YWxp
ZmllciA9ICpmbXQrKzsKPiAtCQkJaWYgKHVubGlrZWx5KHF1YWxpZmllciA9PSAqZm10KSkgewo+
IC0JCQkJaWYgKHF1YWxpZmllciA9PSAnaCcpIHsKPiAtCQkJCQlxdWFsaWZpZXIgPSAnSCc7Cj4g
LQkJCQkJZm10Kys7Cj4gLQkJCQl9IGVsc2UgaWYgKHF1YWxpZmllciA9PSAnbCcpIHsKPiAtCQkJ
CQlxdWFsaWZpZXIgPSAnTCc7Cj4gLQkJCQkJZm10Kys7Cj4gLQkJCQl9Cj4gLQkJCX0KPiAtCQl9
Cj4gLQkJYmFzZSA9IDEwOwo+IC0JCWlzX3NpZ24gPSAwOwo+ICsgICAgICAgICAgICAgICAgY2Fz
ZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgo+ICsgICAgICAg
ICAgICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzkn
Ogo+ICsgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoICogMTAgKyBjIC0gJzAn
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOwo+ICAKPiAtCQlpZiAoISpm
bXQgfHwgISpzdHIpCj4gLQkJCWJyZWFrOwo+ICsgICAgICAgICAgICAgICAgLyoKPiArICAgICAg
ICAgICAgICAgICAqIENvbnZlcnNpb25zLgo+ICsgICAgICAgICAgICAgICAgICoKPiArICAgICAg
ICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICAgY2FzZSAnZCc6Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGMgPSBDVF9JTlQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNjZm4g
PSAoY2NmbnR5cGUpc3RydG9xOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTA7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAKPiAtCQlzd2l0Y2goKmZtdCsr
KSB7Cj4gLQkJY2FzZSAnYyc6Cj4gLQkJewo+IC0JCQljaGFyICpzID0gKGNoYXIgKikgdmFfYXJn
KGFyZ3MsY2hhciopOwo+IC0JCQlpZiAoZmllbGRfd2lkdGggPT0gLTEpCj4gLQkJCQlmaWVsZF93
aWR0aCA9IDE7Cj4gLQkJCWRvIHsKPiAtCQkJCSpzKysgPSAqc3RyKys7Cj4gLQkJCX0gd2hpbGUg
KC0tZmllbGRfd2lkdGggPiAwICYmICpzdHIpOwo+IC0JCQludW0rKzsKPiAtCQl9Cj4gLQkJY29u
dGludWU7Cj4gLQkJY2FzZSAncyc6Cj4gLQkJewo+IC0JCQljaGFyICpzID0gKGNoYXIgKikgdmFf
YXJnKGFyZ3MsIGNoYXIgKik7Cj4gLQkJCWlmKGZpZWxkX3dpZHRoID09IC0xKQo+IC0JCQkJZmll
bGRfd2lkdGggPSBJTlRfTUFYOwo+IC0JCQkvKiBmaXJzdCwgc2tpcCBsZWFkaW5nIHdoaXRlIHNw
YWNlIGluIGJ1ZmZlciAqLwo+IC0JCQl3aGlsZSAoaXNzcGFjZSgqc3RyKSkKPiAtCQkJCXN0cisr
Owo+IC0KPiAtCQkJLyogbm93IGNvcHkgdW50aWwgbmV4dCB3aGl0ZSBzcGFjZSAqLwo+IC0JCQl3
aGlsZSAoKnN0ciAmJiAhaXNzcGFjZSgqc3RyKSAmJiBmaWVsZF93aWR0aC0tKSB7Cj4gLQkJCQkq
cysrID0gKnN0cisrOwo+IC0JCQl9Cj4gLQkJCSpzID0gJ1wwJzsKPiAtCQkJbnVtKys7Cj4gLQkJ
fQo+IC0JCWNvbnRpbnVlOwo+IC0JCWNhc2UgJ24nOgo+IC0JCQkvKiByZXR1cm4gbnVtYmVyIG9m
IGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgKi8KPiAtCQl7Cj4gLQkJCWludCAqaSA9IChpbnQgKil2
YV9hcmcoYXJncyxpbnQqKTsKPiAtCQkJKmkgPSBzdHIgLSBidWY7Cj4gLQkJfQo+IC0JCWNvbnRp
bnVlOwo+IC0JCWNhc2UgJ28nOgo+IC0JCQliYXNlID0gODsKPiAtCQkJYnJlYWs7Cj4gLQkJY2Fz
ZSAneCc6Cj4gLQkJY2FzZSAnWCc6Cj4gLQkJCWJhc2UgPSAxNjsKPiAtCQkJYnJlYWs7Cj4gLQkJ
Y2FzZSAnaSc6Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdpJzoKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgYyA9IENUX0lOVDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IChj
Y2ZudHlwZSlzdHJ0b3E7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAwOwo+IC0J
CWNhc2UgJ2QnOgo+IC0JCQlpc19zaWduID0gMTsKPiAtCQljYXNlICd1JzoKPiAtCQkJYnJlYWs7
Cj4gLQkJY2FzZSAnJSc6Cj4gLQkJCS8qIGxvb2tpbmcgZm9yICclJyBpbiBzdHIgKi8KPiAtCQkJ
aWYgKCpzdHIrKyAhPSAnJScpIAo+IC0JCQkJcmV0dXJuIG51bTsKPiAtCQkJY29udGludWU7Cj4g
LQkJZGVmYXVsdDoKPiAtCQkJLyogaW52YWxpZCBmb3JtYXQ7IHN0b3AgaGVyZSAqLwo+IC0JCQly
ZXR1cm4gbnVtOwo+IC0JCX0KPiAtCj4gLQkJLyogaGF2ZSBzb21lIHNvcnQgb2YgaW50ZWdlciBj
b252ZXJzaW9uLgo+IC0JCSAqIGZpcnN0LCBza2lwIHdoaXRlIHNwYWNlIGluIGJ1ZmZlci4KPiAt
CQkgKi8KPiAtCQl3aGlsZSAoaXNzcGFjZSgqc3RyKSkKPiAtCQkJc3RyKys7Cj4gLQo+IC0JCWRp
Z2l0ID0gKnN0cjsKPiAtCQlpZiAoaXNfc2lnbiAmJiBkaWdpdCA9PSAnLScpCj4gLQkJCWRpZ2l0
ID0gKihzdHIgKyAxKTsKPiAtCj4gLQkJaWYgKCFkaWdpdAo+IC0gICAgICAgICAgICAgICAgICAg
IHx8IChiYXNlID09IDE2ICYmICFpc3hkaWdpdChkaWdpdCkpCj4gLSAgICAgICAgICAgICAgICAg
ICAgfHwgKGJhc2UgPT0gMTAgJiYgIWlzZGlnaXQoZGlnaXQpKQo+IC0gICAgICAgICAgICAgICAg
ICAgIHx8IChiYXNlID09IDggJiYgKCFpc2RpZ2l0KGRpZ2l0KSB8fCBkaWdpdCA+ICc3JykpCj4g
LSAgICAgICAgICAgICAgICAgICAgfHwgKGJhc2UgPT0gMCAmJiAhaXNkaWdpdChkaWdpdCkpKQo+
IC0JCQkJYnJlYWs7Cj4gLQo+IC0JCXN3aXRjaChxdWFsaWZpZXIpIHsKPiAtCQljYXNlICdIJzoJ
LyogdGhhdCdzICdoaCcgaW4gZm9ybWF0ICovCj4gLQkJCWlmIChpc19zaWduKSB7Cj4gLQkJCQlz
aWduZWQgY2hhciAqcyA9IChzaWduZWQgY2hhciAqKSB2YV9hcmcoYXJncyxzaWduZWQgY2hhciAq
KTsKPiAtCQkJCSpzID0gKHNpZ25lZCBjaGFyKSBzaW1wbGVfc3RydG9sKHN0ciwmbmV4dCxiYXNl
KTsKPiAtCQkJfSBlbHNlIHsKPiAtCQkJCXVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hh
ciAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgY2hhciAqKTsKPiAtCQkJCSpzID0gKHVuc2lnbmVk
IGNoYXIpIHNpbXBsZV9zdHJ0b3VsKHN0ciwgJm5leHQsIGJhc2UpOwo+IC0JCQl9Cj4gLQkJCWJy
ZWFrOwo+IC0JCWNhc2UgJ2gnOgo+IC0JCQlpZiAoaXNfc2lnbikgewo+IC0JCQkJc2hvcnQgKnMg
PSAoc2hvcnQgKikgdmFfYXJnKGFyZ3Msc2hvcnQgKik7Cj4gLQkJCQkqcyA9IChzaG9ydCkgc2lt
cGxlX3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJCX0gZWxzZSB7Cj4gLQkJCQl1bnNpZ25l
ZCBzaG9ydCAqcyA9ICh1bnNpZ25lZCBzaG9ydCAqKSB2YV9hcmcoYXJncywgdW5zaWduZWQgc2hv
cnQgKik7Cj4gLQkJCQkqcyA9ICh1bnNpZ25lZCBzaG9ydCkgc2ltcGxlX3N0cnRvdWwoc3RyLCAm
bmV4dCwgYmFzZSk7Cj4gLQkJCX0KPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSAnbCc6Cj4gLQkJCWlm
IChpc19zaWduKSB7Cj4gLQkJCQlsb25nICpsID0gKGxvbmcgKikgdmFfYXJnKGFyZ3MsbG9uZyAq
KTsKPiAtCQkJCSpsID0gc2ltcGxlX3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJCX0gZWxz
ZSB7Cj4gLQkJCQl1bnNpZ25lZCBsb25nICpsID0gKHVuc2lnbmVkIGxvbmcqKSB2YV9hcmcoYXJn
cyx1bnNpZ25lZCBsb25nKik7Cj4gLQkJCQkqbCA9IHNpbXBsZV9zdHJ0b3VsKHN0ciwmbmV4dCxi
YXNlKTsKPiAtCQkJfQo+IC0JCQlicmVhazsKPiAtCQljYXNlICdMJzoKPiAtCQkJaWYgKGlzX3Np
Z24pIHsKPiAtCQkJCWxvbmcgbG9uZyAqbCA9IChsb25nIGxvbmcqKSB2YV9hcmcoYXJncyxsb25n
IGxvbmcgKik7Cj4gLQkJCQkqbCA9IHNpbXBsZV9zdHJ0b2xsKHN0ciwmbmV4dCxiYXNlKTsKPiAt
CQkJfSBlbHNlIHsKPiAtCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyAqbCA9ICh1bnNpZ25lZCBsb25n
IGxvbmcqKSB2YV9hcmcoYXJncyx1bnNpZ25lZCBsb25nIGxvbmcqKTsKPiAtCQkJCSpsID0gc2lt
cGxlX3N0cnRvdWxsKHN0ciwmbmV4dCxiYXNlKTsKPiAtCQkJfQo+IC0JCQlicmVhazsKPiAtCQlj
YXNlICdaJzoKPiAtCQljYXNlICd6JzoKPiAtCQl7Cj4gLQkJCXNpemVfdCAqcyA9IChzaXplX3Qq
KSB2YV9hcmcoYXJncyxzaXplX3QqKTsKPiAtCQkJKnMgPSAoc2l6ZV90KSBzaW1wbGVfc3RydG91
bChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJfQo+IC0JCWJyZWFrOwo+IC0JCWRlZmF1bHQ6Cj4gLQkJ
CWlmIChpc19zaWduKSB7Cj4gLQkJCQlpbnQgKmkgPSAoaW50ICopIHZhX2FyZyhhcmdzLCBpbnQq
KTsKPiAtCQkJCSppID0gKGludCkgc2ltcGxlX3N0cnRvbChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJ
CX0gZWxzZSB7Cj4gLQkJCQl1bnNpZ25lZCBpbnQgKmkgPSAodW5zaWduZWQgaW50KikgdmFfYXJn
KGFyZ3MsIHVuc2lnbmVkIGludCopOwo+IC0JCQkJKmkgPSAodW5zaWduZWQgaW50KSBzaW1wbGVf
c3RydG91bChzdHIsJm5leHQsYmFzZSk7Cj4gLQkJCX0KPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0J
CW51bSsrOwo+IC0KPiAtCQlpZiAoIW5leHQpCj4gLQkJCWJyZWFrOwo+IC0JCXN0ciA9IG5leHQ7
Cj4gLQl9Cj4gLQlyZXR1cm4gbnVtOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
PiArCj4gKyAgICAgICAgICAgICAgICBjYXNlICdvJzoKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgYyA9IENUX0lOVDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IHN0cnRvdXE7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4Owo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgICAgICBjYXNlICd1JzoKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgYyA9IENUX0lOVDsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
Y2NmbiA9IHN0cnRvdXE7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2Fz
ZSAneCc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBGWE9LOyAvKiBlbmFi
bGUgMHggcHJlZml4aW5nICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDVF9JTlQ7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNjZm4gPSBzdHJ0b3VxOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlID0gMTY7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
Owo+ICsKPiArICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBjID0gQ1RfU1RSSU5HOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAr
Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdbJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAg
Zm10ID0gX19zY2NsKGNjbHRhYiwgZm10KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3MgfD0gTk9TS0lQOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ1RfQ0NMOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgICAgICBjYXNl
ICdjJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTk9TS0lQOwo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICBjID0gQ1RfQ0hBUjsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2FzZSAncCc6ICAgICAgIC8qIHBvaW50
ZXIgZm9ybWF0IGlzIGxpa2UgaGV4ICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
IHw9IFBPSU5URVIgfCBQRlhPSzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENUX0lO
VDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgY2NmbiA9IHN0cnRvdXE7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2FzZSAnbic6Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5jb252ZXJzaW9ucysrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxh
Z3MgJiBTVVBQUkVTUykgICAvKiA/Pz8gKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU0hP
UlRTSE9SVCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBj
aGFyICopID0gbnJlYWQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdz
ICYgU0hPUlQpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwg
c2hvcnQgKikgPSBucmVhZDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxh
Z3MgJiBMT05HKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAs
IGxvbmcgKikgPSBucmVhZDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxh
Z3MgJiBRVUFEKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAs
IGludDY0X3QgKikgPSBucmVhZDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9hcmcoYXAsIGludCAqKSA9IG5yZWFk
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICAgICAgICAg
IH0KPiArCj4gKyAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICogV2UgaGF2
ZSBhIGNvbnZlcnNpb24gdGhhdCByZXF1aXJlcyBpbnB1dC4KPiArICAgICAgICAgICAgICAgICAq
Lwo+ICsgICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGlucHV0X2ZhaWx1cmU7Cj4gKwo+ICsgICAgICAgICAgICAgICAgLyoKPiArICAg
ICAgICAgICAgICAgICAqIENvbnN1bWUgbGVhZGluZyB3aGl0ZSBzcGFjZSwgZXhjZXB0IGZvciBm
b3JtYXRzCj4gKyAgICAgICAgICAgICAgICAgKiB0aGF0IHN1cHByZXNzIHRoaXMuCj4gKyAgICAg
ICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBOT1NLSVApID09
IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmlucCkpIHsK
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCsrOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgtLWluciA+IDApCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnArKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGlucHV0X2ZhaWx1cmU7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICogTm90ZSB0
aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICogdGhlIGJ1ZmZlciwgc28gY29udmVyc2lvbnMgdGhhdCBkbyBub3Qgc2V0IE5P
U0tJUAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBjYW4gbm8gbG9uZ2VyIHJlc3VsdCBp
biBhbiBpbnB1dCBmYWlsdXJlLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAg
ICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAg
ICAgICogRG8gdGhlIGNvbnZlcnNpb24uCj4gKyAgICAgICAgICAgICAgICAgKi8KPiArICAgICAg
ICAgICAgICAgIHN3aXRjaCAoYykgewo+ICsKPiArICAgICAgICAgICAgICAgIGNhc2UgQ1RfQ0hB
UjoKPiArICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NhbiBhcmJpdHJhcnkgY2hhcmFjdGVy
cyAoc2V0cyBOT1NLSVApICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9
PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU1VQUFJFU1MpIHsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3VtID0gMDsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKG4gPSBpbnIpIDwgd2lkdGgpIHsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IG47Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IG47Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucCArPSBuOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VtID09
IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBpbnB1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1bSArPSB3aWR0aDsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5yIC09IHdpZHRoOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAgKz0gd2lkdGg7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCAr
PSBzdW07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHZhX2FyZyhhcCwgY2hhciAqKSwgaW5wLCB3aWR0
aCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5yIC09IHdpZHRoOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucCArPSB3aWR0aDsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBucmVhZCArPSB3aWR0aDsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuYXNzaWduZWQrKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
fQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMrKzsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgY2FzZSBDVF9DQ0w6
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjYW4gYSAobm9uZW1wdHkpIGNoYXJhY3Rl
ciBjbGFzcyAoc2V0cyBOT1NLSVApICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3
aWR0aCA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gKHNp
emVfdCl+MDsgICAgIC8qIGBpbmZpbml0eScgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAg
LyogdGFrZSBvbmx5IHRob3NlIHRoaW5ncyBpbiB0aGUgY2xhc3MgKi8KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGZsYWdzICYgU1VQUFJFU1MpIHsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuID0gMDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoY2NsdGFiWyh1bnNpZ25lZCBjaGFyKSppbnBdKSB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuKyssIGluci0tLCBpbnArKzsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLXdpZHRoID09IDApCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluciA8PSAwKSB7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09IDApCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBpbnB1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbWF0Y2hfZmFpbHVyZTsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
MCA9IHAgPSB2YV9hcmcoYXAsIGNoYXIgKik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKGNjbHRhYlsodW5zaWduZWQgY2hhcikqaW5wXSkgewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5yLS07Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gKmlucCsrOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0td2lkdGggPT0gMCkKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5yIDw9IDApIHsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPT0gcDApCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBpbnB1dF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbiA9IHAgLSBwMDsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobiA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBtYXRjaF9mYWlsdXJlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpwID0gMDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNzaWdu
ZWQrKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBucmVhZCArPSBuOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBuY29udmVyc2lvbnMr
KzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAg
ICAgY2FzZSBDVF9TVFJJTkc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxpa2UgQ0NM
LCBidXQgemVyby1sZW5ndGggc3RyaW5nIE9LLCAmIG5vIE5PU0tJUCAqLwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAod2lkdGggPT0gMCkKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCA9IChzaXplX3QpfjA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmbGFncyAmIFNVUFBSRVNTKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
biA9IDA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFpc3NwYWNl
KCppbnApKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKyss
IGluci0tLCBpbnArKzsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgtLXdpZHRoID09IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGluciA8PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWQgKz0gbjsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwMCA9IHAgPSB2YV9hcmcoYXAsIGNoYXIgKik7Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKCFpc3NwYWNlKCppbnApKSB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnItLTsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpwKysgPSAqaW5wKys7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoLS13aWR0aCA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnIgPD0gMCkKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwID0g
MDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCArPSBwIC0gcDA7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFzc2lnbmVkKys7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgbmNvbnZlcnNpb25z
Kys7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgICAg
ICAgICAgIGNhc2UgQ1RfSU5UOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2FuIGFu
IGludGVnZXIgYXMgaWYgYnkgc3RydG9xL3N0cnRvdXEgKi8KPiArI2lmZGVmIGhhcmR3YXkKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IDAgfHwgd2lkdGggPiBzaXplb2Yo
YnVmKSAtIDEpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzaXpl
b2YoYnVmKSAtIDE7Cj4gKyNlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemVf
dCBpcyB1bnNpZ25lZCwgaGVuY2UgdGhpcyBvcHRpbWlzYXRpb24gKi8KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKC0td2lkdGggPiBzaXplb2YoYnVmKSAtIDIpCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzaXplb2YoYnVmKSAtIDI7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoKys7Cj4gKyNlbmRpZgo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncyB8PSBTSUdOT0sgfCBORElHSVRTIHwgTlpESUdJVFM7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAocCA9IGJ1Zjsgd2lkdGg7IHdpZHRoLS0pIHsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjID0gKmlucDsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFN3aXRj
aCBvbiB0aGUgY2hhcmFjdGVyOyBgZ290byBvaycKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBpZiB3ZSBhY2NlcHQgaXQgYXMgYSBwYXJ0IG9mIG51bWJlci4KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGMpIHsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgZGlnaXQgMCBp
cyBhbHdheXMgbGVnYWwsIGJ1dCBpcwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqIHNwZWNpYWwuICBGb3IgJWkgY29udmVyc2lvbnMsIGlmIG5vCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICogZGlnaXRzICh6ZXJvIG9yIG5vbnplcm8pIGhhdmUgYmVlbgo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNjYW5uZWQgKG9ubHkgc2lnbnMp
LCB3ZSB3aWxsIGhhdmUKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiYXNl
PT0wLiAgSW4gdGhhdCBjYXNlLCB3ZSBzaG91bGQgc2V0Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICogaXQgdG8gOCBhbmQgZW5hYmxlIDB4IHByZWZpeGluZy4KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBBbHNvLCBpZiB3ZSBoYXZlIG5vdCBzY2FubmVk
IHplcm8gZGlnaXRzCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYmVmb3Jl
IHRoaXMsIGRvIG5vdCB0dXJuIG9mZiBwcmVmaXhpbmcKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiAoc29tZW9uZSBlbHNlIHdpbGwgdHVybiBpdCBvZmYgaWYgd2UKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoYXZlIHNjYW5uZWQgYW55IG5vbnplcm8g
ZGlnaXRzKS4KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzoKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlID09IDApIHsKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBGWE9LOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgTlpESUdJVFMpCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfihTSUdOT0t8
TlpESUdJVFN8TkRJR0lUUyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MgJj0gfihTSUdOT0t8UEZYT0t8TkRJR0lUUyk7Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIG9rOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiAxIHRocm91Z2ggNyBhbHdheXMgbGVnYWwgKi8KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6
IGNhc2UgJzcnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZSA9IGJhc2VmaXhbYmFzZV07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncyAmPSB+KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9rOwo+ICsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBkaWdpdHMgOCBhbmQgOSBvayBpZmYgZGVjaW1hbCBvciBo
ZXggKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc4JzogY2FzZSAn
OSc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gYmFz
ZWZpeFtiYXNlXTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChiYXNlIDw9IDgpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOyAgLyogbm90IGxlZ2FsIGhlcmUgKi8KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IH4oU0lHTk9LIHwgUEZYT0sgfCBORElHSVRT
KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb2s7Cj4g
Kwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxldHRlcnMgb2sgaWZmIGhl
eCAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0EnOiBjYXNlICdC
JzogY2FzZSAnQyc6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRCc6
IGNhc2UgJ0UnOiBjYXNlICdGJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICdhJzogY2FzZSAnYic6IGNhc2UgJ2MnOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ2QnOiBjYXNlICdlJzogY2FzZSAnZic6Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBuZWVkIHRvIGZpeCBiYXNlIGhlcmUgKi8KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlIDw9IDEwKQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsg
IC8qIG5vdCBsZWdhbCBoZXJlICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncyAmPSB+KFNJR05PSyB8IFBGWE9LIHwgTkRJR0lUUyk7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9rOwo+ICsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBzaWduIG9rIG9ubHkgYXMgZmlyc3QgY2hhcmFjdGVy
ICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnKyc6IGNhc2UgJy0n
Ogo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYg
U0lHTk9LKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzICY9IH5TSUdOT0s7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gb2s7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeCBvayBpZmYg
ZmxhZyBzdGlsbCBzZXQgJiAybmQgY2hhciAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ3gnOiBjYXNlICdYJzoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmbGFncyAmIFBGWE9LICYmIHAgPT0gYnVmICsgMSkgewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7ICAg
ICAgLyogaWYgJWkgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MgJj0gflBGWE9LOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIG9rOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqIElmIHdlIGdvdCBoZXJlLCBjIGlzIG5vdCBhIGxlZ2FsIGNoYXJhY3Rlcgo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZvciBhIG51bWJlci4gIFN0b3Ag
YWNjdW11bGF0aW5nIGRpZ2l0cy4KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAg
ICAgICAgIG9rOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYyBpcyBsZWdhbDogc3RvcmUgaXQgYW5kIGxv
b2sgYXQgdGhlIG5leHQuCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKC0taW5yID4gMCkKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlucCsrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgLyogZW5kIG9mIGlucHV0ICovCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICogSWYgd2UgaGFkIG9ubHkgYSBzaWduLCBpdCBpcyBubyBnb29kOyBwdXNoCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAqIGJhY2sgdGhlIHNpZ24uICBJZiB0aGUgbnVtYmVyIGVu
ZHMgaW4gYHgnLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCB3YXMgW3NpZ25dICcn
ICd4Jywgc28gcHVzaCBiYWNrIHRoZSB4Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGFu
ZCB0cmVhdCBpdCBhcyBbc2lnbl0gJycuCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBORElHSVRTKSB7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPiBidWYpIHsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0tOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5yKys7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbWF0Y2hfZmFp
bHVyZTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBjID0gKCh1X2NoYXIgKilwKVstMV07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjID09ICd4JyB8fCBjID09ICdYJykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0tcDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAtLTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnIrKzsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgU1VQUFJFU1Mp
ID09IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZXM7
Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwID0gMDsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSAoKmNjZm4pKGJ1ZiwgKGNoYXIgKiopTlVM
TCwgYmFzZSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYg
UE9JTlRFUikKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YV9h
cmcoYXAsIHZvaWQgKiopID0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHZvaWQgKikodWludHB0cl90KXJlczsKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIFNIT1JUU0hPUlQpCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBjaGFyICopID0gcmVzOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgU0hPUlQp
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFfYXJnKGFwLCBz
aG9ydCAqKSA9IHJlczsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChmbGFncyAmIExPTkcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqdmFfYXJnKGFwLCBsb25nICopID0gcmVzOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGZsYWdzICYgUVVBRCkKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICp2YV9hcmcoYXAsIGludDY0X3QgKikgPSByZXM7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnZhX2FyZyhhcCwgaW50ICopID0gcmVzOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5hc3NpZ25lZCsrOwo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkICs9IHAgLSBidWY7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5jb252ZXJzaW9ucysrOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICtpbnB1
dF9mYWlsdXJlOgo+ICsgICAgICAgIHJldHVybiAobmNvbnZlcnNpb25zICE9IDAgPyBuYXNzaWdu
ZWQgOiAtMSk7Cj4gK21hdGNoX2ZhaWx1cmU6Cj4gKyAgICAgICAgcmV0dXJuIChuYXNzaWduZWQp
Owo+ICB9Cj4gIAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvdHBtYmFjay5jIGIvdHBtYmFjay5jCj4g
aW5kZXggMDBiNjZlOC4uMjJhZGJkMyAxMDA2NDQKPiAtLS0gYS90cG1iYWNrLmMKPiArKysgYi90
cG1iYWNrLmMKPiBAQCAtNTIsMTAgKzUyLDYgQEAKPiAgI2luY2x1ZGUgPG1pbmktb3Mvd2FpdC5o
Pgo+ICAKPiAgCj4gLSNpZm5kZWYgSEFWRV9MSUJDCj4gLSNkZWZpbmUgc3RydG91bCBzaW1wbGVf
c3RydG91bAo+IC0jZW5kaWYKPiAtCj4gIC8vI2RlZmluZSBUUE1CQUNLX1BSSU5UX0RFQlVHCj4g
ICNpZmRlZiBUUE1CQUNLX1BSSU5UX0RFQlVHCj4gICNkZWZpbmUgVFBNQkFDS19ERUJVRyhmbXQs
Li4uKSBwcmludGsoIlRwbWJhY2s6RGVidWcoIl9fRklMRV9fIjolZCkgIiBmbXQsIF9fTElORV9f
LCAjI19fVkFfQVJHU19fKQo+IC0tIAo+IDIuNi42Cj4gCgotLSAKU2FtdWVsCkFzIHVzdWFsLCB0
aGlzIGJlaW5nIGEgMS4zLnggcmVsZWFzZSwgSSBoYXZlbid0IGV2ZW4gY29tcGlsZWQgdGhpcwpr
ZXJuZWwgeWV0LiAgU28gaWYgaXQgd29ya3MsIHlvdSBzaG91bGQgYmUgZG91Ymx5IGltcHJlc3Nl
ZC4KKExpbnVzIFRvcnZhbGRzLCBhbm5vdW5jaW5nIGtlcm5lbCAxLjMuMyBvbiB0aGUgbGludXgt
a2VybmVsIG1haWxpbmcgbGlzdC4pCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 09:19:49 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 09:19: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bMtr2-0004qw-St; Tue, 12 Jul 2016 09:19:48 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=994fb90f6=wei.liu2@citrix.com>)
 id 1bMtr2-0004qg-FE; Tue, 12 Jul 2016 09:19:48 +0000
Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id
 A2/7C-31810-336B4875; Tue, 12 Jul 2016 09:19:47 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrNIsWRWlGSWpSXmKPExsXitHRDpK7xtpZ
 wg83/+S3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZqxZs4ex4AZzRe+D7YwNjK3MXYyc
 HBIC/hKtD9oYQWwWAVWJliW/WEBsNgFliZ+dvWxdjFwcIgIXGSWWrHkD1iAskCRx8+tLsAZeA
 X2Jh3f3AjVwcAgJ5Em8flQIERaUODnzCdgcZgEdiQW7P7GBlDALSEss/8cBEuYUsJJ4fbmPCc
 QWFVCRuDLhLTuILSSgINEx/RgTxGncErdPT2WewMg3C8nUWUimzkKYuoCReRWjenFqUVlqka6
 5XlJRZnpGSW5iZo6uoYGxXm5qcXFiempOYlKxXnJ+7iZGYMAxAMEOxsbvTocYJTmYlER5m5lb
 woX4kvJTKjMSizPii0pzUosPMcpwcChJ8HJvBcoJFqWmp1akZeYAQx8mLcHBoyTCe2MLUJq3u
 CAxtzgzHSJ1ilGXY8GP22uZhFjy8vNSpcR5T4EUCYAUZZTmwY2AxeElRlkpYV5GoKOEeApSi3
 IzS1DlXzGKczAqCfNKgFzCk5lXArfpFdARTEBH1Do0gxxRkoiQkmpgPCb3IWz/xayWMNnFh4/
 ZrJ+08yrTvX7vj9P9unuktzyrt6uMV/r68YPc3a//3/M9W5bx5MsMWwkh9v4JcRFHDmZfmbDy
 9fagvDK1dY9vt63fnbNhZ6h33JFQ2/V9rHNmSxyaI/R+H1d7koVVmp3OnTrRlQwZ8eYXsi6/9
 WkMWZ60Z4Psql8/byqxFGckGmoxFxUnAgDEqzVuvgIAAA==
X-Env-Sender: prvs=994fb90f6=wei.liu2@citrix.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1468315185!6805729!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 17185 invoked from network); 12 Jul 2016 09:19:47 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 12 Jul 2016 09:19:47 -0000
X-IronPort-AV: E=Sophos;i="5.28,351,1464652800"; d="scan'208";a="365658767"
Date: Tue, 12 Jul 2016 10:19:41 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, Juergen Gross
 <jgross@suse.com>, <wei.liu2@citrix.com>,
 <minios-devel@lists.xenproject.org>, <xen-devel@lists.xenproject.org>,
 <andrew.cooper3@citrix.com>
Message-ID: <20160712091941.GG20723@citrix.com>
References: <1467623819-31378-1-git-send-email-jgross@suse.com>
 <20160712084850.GF3654@var.bordeaux.inria.fr>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20160712084850.GF3654@var.bordeaux.inria.fr>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA2
Subject: Re: [Minios-devel] [PATCH v2] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gVHVlLCBKdWwgMTIsIDIwMTYgYXQgMTA6NDg6NTBBTSArMDIwMCwgU2FtdWVsIFRoaWJhdWx0
IHdyb3RlOgo+IEp1ZXJnZW4gR3Jvc3MsIG9uIE1vbiAwNCBKdWwgMjAxNiAxMToxNjo1OSArMDIw
MCwgd3JvdGU6Cj4gPiBJbnN0ZWFkIG9mIGEgTGludXgga2VybmVsIGJhc2VkIGltcGxlbWVudGF0
aW9uIHVzZSBvbmUgZnJvbSBmcmVlQlNELgo+ID4gCj4gPiBBcyBhIHJlc3VsdCBzb21lIG9mIHRo
ZSBwcmludGluZ3Mgd2lsbCBjaGFuZ2UgZHVlIHRvIG1vcmUgcG9zaXggbGlrZQo+ID4gYmVoYXZp
b3Igb2YgJXAgZm9ybWF0IChvbWl0dGluZyBsZWFkaW5nIHplcm9lcywgcHJlcGVuZGluZyAiMHgi
KS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29t
Pgo+IAo+IEFja2VkLWJ5OiBTYW11ZWwgVGhpYmF1bHQgPHNhbXVlbC50aGliYXVsdEBlbnMtbHlv
bi5vcmc+CgpRdWV1ZWQuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 09:19:49 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 09:19: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bMtr2-0004qw-St; Tue, 12 Jul 2016 09:19:48 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=994fb90f6=wei.liu2@citrix.com>)
 id 1bMtr2-0004qg-FE; Tue, 12 Jul 2016 09:19:48 +0000
Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id
 A2/7C-31810-336B4875; Tue, 12 Jul 2016 09:19:47 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrNIsWRWlGSWpSXmKPExsXitHRDpK7xtpZ
 wg83/+S3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZqxZs4ex4AZzRe+D7YwNjK3MXYyc
 HBIC/hKtD9oYQWwWAVWJliW/WEBsNgFliZ+dvWxdjFwcIgIXGSWWrHkD1iAskCRx8+tLsAZeA
 X2Jh3f3AjVwcAgJ5Em8flQIERaUODnzCdgcZgEdiQW7P7GBlDALSEss/8cBEuYUsJJ4fbmPCc
 QWFVCRuDLhLTuILSSgINEx/RgTxGncErdPT2WewMg3C8nUWUimzkKYuoCReRWjenFqUVlqka6
 5XlJRZnpGSW5iZo6uoYGxXm5qcXFiempOYlKxXnJ+7iZGYMAxAMEOxsbvTocYJTmYlER5m5lb
 woX4kvJTKjMSizPii0pzUosPMcpwcChJ8HJvBcoJFqWmp1akZeYAQx8mLcHBoyTCe2MLUJq3u
 CAxtzgzHSJ1ilGXY8GP22uZhFjy8vNSpcR5T4EUCYAUZZTmwY2AxeElRlkpYV5GoKOEeApSi3
 IzS1DlXzGKczAqCfNKgFzCk5lXArfpFdARTEBH1Do0gxxRkoiQkmpgPCb3IWz/xayWMNnFh4/
 ZrJ+08yrTvX7vj9P9unuktzyrt6uMV/r68YPc3a//3/M9W5bx5MsMWwkh9v4JcRFHDmZfmbDy
 9fagvDK1dY9vt63fnbNhZ6h33JFQ2/V9rHNmSxyaI/R+H1d7koVVmp3OnTrRlQwZ8eYXsi6/9
 WkMWZ60Z4Psql8/byqxFGckGmoxFxUnAgDEqzVuvgIAAA==
X-Env-Sender: prvs=994fb90f6=wei.liu2@citrix.com
X-Msg-Ref: server-9.tower-31.messagelabs.com!1468315185!6805729!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 17185 invoked from network); 12 Jul 2016 09:19:47 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-9.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 12 Jul 2016 09:19:47 -0000
X-IronPort-AV: E=Sophos;i="5.28,351,1464652800"; d="scan'208";a="365658767"
Date: Tue, 12 Jul 2016 10:19:41 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, Juergen Gross
 <jgross@suse.com>, <wei.liu2@citrix.com>,
 <minios-devel@lists.xenproject.org>, <xen-devel@lists.xenproject.org>,
 <andrew.cooper3@citrix.com>
Message-ID: <20160712091941.GG20723@citrix.com>
References: <1467623819-31378-1-git-send-email-jgross@suse.com>
 <20160712084850.GF3654@var.bordeaux.inria.fr>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20160712084850.GF3654@var.bordeaux.inria.fr>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA2
Subject: Re: [Minios-devel] [PATCH v2] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gVHVlLCBKdWwgMTIsIDIwMTYgYXQgMTA6NDg6NTBBTSArMDIwMCwgU2FtdWVsIFRoaWJhdWx0
IHdyb3RlOgo+IEp1ZXJnZW4gR3Jvc3MsIG9uIE1vbiAwNCBKdWwgMjAxNiAxMToxNjo1OSArMDIw
MCwgd3JvdGU6Cj4gPiBJbnN0ZWFkIG9mIGEgTGludXgga2VybmVsIGJhc2VkIGltcGxlbWVudGF0
aW9uIHVzZSBvbmUgZnJvbSBmcmVlQlNELgo+ID4gCj4gPiBBcyBhIHJlc3VsdCBzb21lIG9mIHRo
ZSBwcmludGluZ3Mgd2lsbCBjaGFuZ2UgZHVlIHRvIG1vcmUgcG9zaXggbGlrZQo+ID4gYmVoYXZp
b3Igb2YgJXAgZm9ybWF0IChvbWl0dGluZyBsZWFkaW5nIHplcm9lcywgcHJlcGVuZGluZyAiMHgi
KS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29t
Pgo+IAo+IEFja2VkLWJ5OiBTYW11ZWwgVGhpYmF1bHQgPHNhbXVlbC50aGliYXVsdEBlbnMtbHlv
bi5vcmc+CgpRdWV1ZWQuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 09:44:43 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 09:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bMuF9-00072V-RX; Tue, 12 Jul 2016 09:44:43 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=994fb90f6=wei.liu2@citrix.com>)
 id 1bMuF9-00072L-AW; Tue, 12 Jul 2016 09:44:43 +0000
Received: from [193.109.254.147] by server-12.bemta-14.messagelabs.com id
 39/A4-31201-A0CB4875; Tue, 12 Jul 2016 09:44:42 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrNIsWRWlGSWpSXmKPExsXitHSDvS7XnpZ
 wgy2ruSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZiy8PIex4DFTxcymXqYGxnlMXYyc
 HBIC/hJn3mxmBLFZBFQl3k9oYwax2QSUJX529rJ1MXJxiAhcZJRYsuYNWEJYIEni5teXYA28A
 voSd/ouMoIUCQlMZpS41LyFDSIhKHFy5hMWEJtZQEdiwe5PQHEOIFtaYvk/DhCTU8BA4tCiNJ
 AKUQEViSsT3rKD2EICChId048xgZRICHBL/O22n8DINwvJzFlIZs5CmLmAkXkVo3pxalFZapG
 upV5SUWZ6RkluYmaOrqGhiV5uanFxYnpqTmJSsV5yfu4mRmDAMQDBDsb+Kc6HGCU5mJREeZuZ
 W8KF+JLyUyozEosz4otKc1KLDzHKcHAoSfB+2QWUEyxKTU+tSMvMAYY+TFqCg0dJhNd8N1Cat
 7ggMbc4Mx0idYpRl2PBj9trmYRY8vLzUqXEee1AigRAijJK8+BGwOLwEqOslDAvI9BRQjwFqU
 W5mSWo8q8YxTkYlYR5rUCm8GTmlcBtegV0BBPQEbUOzSBHlCQipKQaGLnDdbvzc8/cOu7Vcdf
 o4KFWxnOpR9LVzums+3x96iSHWQeOrrm9+tPW9nUV3of/3OE7c3HG2Y3HDRdc8uFewS1UsMfs
 prVM0u+/vh9LCuPfym+86XNpd8yFrYUvXW+q73Yy8XU50nrfyyyHLcdj5v0XWh92H994/5iI/
 6WlLbV/3p1/9DyR5VSoEktxRqKhFnNRcSIA3Yi8eL4CAAA=
X-Env-Sender: prvs=994fb90f6=wei.liu2@citrix.com
X-Msg-Ref: server-10.tower-27.messagelabs.com!1468316680!53272917!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20418 invoked from network); 12 Jul 2016 09:44:41 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-10.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 12 Jul 2016 09:44:41 -0000
X-IronPort-AV: E=Sophos;i="5.28,351,1464652800"; d="scan'208";a="372613867"
Date: Tue, 12 Jul 2016 10:44:38 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, Juergen Gross
 <jgross@suse.com>, <wei.liu2@citrix.com>,
 <minios-devel@lists.xenproject.org>, <xen-devel@lists.xenproject.org>,
 <andrew.cooper3@citrix.com>
Message-ID: <20160712094438.GH20723@citrix.com>
References: <1467623819-31378-1-git-send-email-jgross@suse.com>
 <20160712084850.GF3654@var.bordeaux.inria.fr>
 <20160712091941.GG20723@citrix.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20160712091941.GG20723@citrix.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA1
Subject: Re: [Minios-devel] [PATCH v2] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gVHVlLCBKdWwgMTIsIDIwMTYgYXQgMTA6MTk6NDFBTSArMDEwMCwgV2VpIExpdSB3cm90ZToK
PiBPbiBUdWUsIEp1bCAxMiwgMjAxNiBhdCAxMDo0ODo1MEFNICswMjAwLCBTYW11ZWwgVGhpYmF1
bHQgd3JvdGU6Cj4gPiBKdWVyZ2VuIEdyb3NzLCBvbiBNb24gMDQgSnVsIDIwMTYgMTE6MTY6NTkg
KzAyMDAsIHdyb3RlOgo+ID4gPiBJbnN0ZWFkIG9mIGEgTGludXgga2VybmVsIGJhc2VkIGltcGxl
bWVudGF0aW9uIHVzZSBvbmUgZnJvbSBmcmVlQlNELgoKUm9nZXIgaGFzIGFza2VkIG1lIG9uIElS
QyB0byBzL2ZyZWVCU0QvRnJlZUJTRC8uIEkgd2lsbCBkbyB0aGF0IHdoZW4gSQpwdXNoIHRoaXMg
cGF0Y2guCgpXZWkuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 12 09:44:43 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Jul 2016 09:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bMuF9-00072V-RX; Tue, 12 Jul 2016 09:44:43 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=994fb90f6=wei.liu2@citrix.com>)
 id 1bMuF9-00072L-AW; Tue, 12 Jul 2016 09:44:43 +0000
Received: from [193.109.254.147] by server-12.bemta-14.messagelabs.com id
 39/A4-31201-A0CB4875; Tue, 12 Jul 2016 09:44:42 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrNIsWRWlGSWpSXmKPExsXitHSDvS7XnpZ
 wgy2ruSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZiy8PIex4DFTxcymXqYGxnlMXYyc
 HBIC/hJn3mxmBLFZBFQl3k9oYwax2QSUJX529rJ1MXJxiAhcZJRYsuYNWEJYIEni5teXYA28A
 voSd/ouMoIUCQlMZpS41LyFDSIhKHFy5hMWEJtZQEdiwe5PQHEOIFtaYvk/DhCTU8BA4tCiNJ
 AKUQEViSsT3rKD2EICChId048xgZRICHBL/O22n8DINwvJzFlIZs5CmLmAkXkVo3pxalFZapG
 upV5SUWZ6RkluYmaOrqGhiV5uanFxYnpqTmJSsV5yfu4mRmDAMQDBDsb+Kc6HGCU5mJREeZuZ
 W8KF+JLyUyozEosz4otKc1KLDzHKcHAoSfB+2QWUEyxKTU+tSMvMAYY+TFqCg0dJhNd8N1Cat
 7ggMbc4Mx0idYpRl2PBj9trmYRY8vLzUqXEee1AigRAijJK8+BGwOLwEqOslDAvI9BRQjwFqU
 W5mSWo8q8YxTkYlYR5rUCm8GTmlcBtegV0BBPQEbUOzSBHlCQipKQaGLnDdbvzc8/cOu7Vcdf
 o4KFWxnOpR9LVzums+3x96iSHWQeOrrm9+tPW9nUV3of/3OE7c3HG2Y3HDRdc8uFewS1UsMfs
 prVM0u+/vh9LCuPfym+86XNpd8yFrYUvXW+q73Yy8XU50nrfyyyHLcdj5v0XWh92H994/5iI/
 6WlLbV/3p1/9DyR5VSoEktxRqKhFnNRcSIA3Yi8eL4CAAA=
X-Env-Sender: prvs=994fb90f6=wei.liu2@citrix.com
X-Msg-Ref: server-10.tower-27.messagelabs.com!1468316680!53272917!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 20418 invoked from network); 12 Jul 2016 09:44:41 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-10.tower-27.messagelabs.com with RC4-SHA encrypted SMTP;
 12 Jul 2016 09:44:41 -0000
X-IronPort-AV: E=Sophos;i="5.28,351,1464652800"; d="scan'208";a="372613867"
Date: Tue, 12 Jul 2016 10:44:38 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, Juergen Gross
 <jgross@suse.com>, <wei.liu2@citrix.com>,
 <minios-devel@lists.xenproject.org>, <xen-devel@lists.xenproject.org>,
 <andrew.cooper3@citrix.com>
Message-ID: <20160712094438.GH20723@citrix.com>
References: <1467623819-31378-1-git-send-email-jgross@suse.com>
 <20160712084850.GF3654@var.bordeaux.inria.fr>
 <20160712091941.GG20723@citrix.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <20160712091941.GG20723@citrix.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA1
Subject: Re: [Minios-devel] [PATCH v2] mini-os: replace lib/printf.c with a
 version not under GPL
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gVHVlLCBKdWwgMTIsIDIwMTYgYXQgMTA6MTk6NDFBTSArMDEwMCwgV2VpIExpdSB3cm90ZToK
PiBPbiBUdWUsIEp1bCAxMiwgMjAxNiBhdCAxMDo0ODo1MEFNICswMjAwLCBTYW11ZWwgVGhpYmF1
bHQgd3JvdGU6Cj4gPiBKdWVyZ2VuIEdyb3NzLCBvbiBNb24gMDQgSnVsIDIwMTYgMTE6MTY6NTkg
KzAyMDAsIHdyb3RlOgo+ID4gPiBJbnN0ZWFkIG9mIGEgTGludXgga2VybmVsIGJhc2VkIGltcGxl
bWVudGF0aW9uIHVzZSBvbmUgZnJvbSBmcmVlQlNELgoKUm9nZXIgaGFzIGFza2VkIG1lIG9uIElS
QyB0byBzL2ZyZWVCU0QvRnJlZUJTRC8uIEkgd2lsbCBkbyB0aGF0IHdoZW4gSQpwdXNoIHRoaXMg
cGF0Y2guCgpXZWkuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdl-0008Io-4S; Tue, 19 Jul 2016 08:44:33 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdj-0008Hj-JO; Tue, 19 Jul 2016 08:44:31 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
 90/6F-30629-E68ED875; Tue, 19 Jul 2016 08:44:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wgynT+Czefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZvTd7mQvOMhV0XVkJ1sD40KOLkZO
 DgkBI4m3E/8xdTFycQgJLGSU6Hq8hA0kwSagKrHh+ilWEFtEwE3iy/dZYHFmgQiJOR9OsYDYw
 gL2Ei+23GIGsVmA6r/sngdWwwsUf7T7OQvEAjmJ6zOnM01g5FzAyLCKUaM4tagstUjX0FwvqS
 gzPaMkNzEzR9fQ0EQvN7W4ODE9NScxqVgvOT93EyPQc/UMDIw7GH+e9jzEKMnBpCTKqyraGy7
 El5SfUpmRWJwRX1Sak1p8iFGGg0NJglfoOVBOsCg1PbUiLTMHGEIwaQkOHiUR3rnPgNK8xQWJ
 ucWZ6RCpU4yKUuK8oSB9AiCJjNI8uDZY2F5ilJUS5mVkYGAQ4ilILcrNLEGVf8UozsGoJMzrC
 jKFJzOvBG76K6DFTECLDVS7QRaXJCKkpBoYpzd+Wv9KLPGzlut+9ufsJbyfWSOmuLgd1s45v2
 pqCud/sSDzDG1JObvwAxN3B/kZeiUILXHu3POf3VBfkMPqSpmacIHhUXsvgRaH8C0qt3bmuYR
 fmOg7Nb7AyziHyWIu/8650ad9zY+HGb34rLFlsWx2zdknkxgmdP2s3/5N8EvLLabcg5eVWIoz
 Eg21mIuKEwH4tsJLVgIAAA==
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1468917869!54756918!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 62709 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-6.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 0ED34ADB9;
 Tue, 19 Jul 2016 08:44:28 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:16 +0200
Message-Id: <1468917865-12828-1-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 0/9] mini-os: prepare for support of
	ballooning
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RG8gc29tZSBjbGVhbnVwcywgYSBzbWFsbCBjb3JyZWN0aW9uIGFuZCBhZGQgc29tZSBiYXNpYyBm
ZWF0dXJlcyB0bwpsYXkgZ3JvdW5kd29yayBmb3Igc3VwcG9ydCBvZiBiYWxsb29uaW5nIGluIE1p
bmktT1MuCgpUaGUgbWFpbiB2aXNpYmxlIGNoYW5nZSBpcyB0aGUgdmlydHVhbCBtZW1vcnkgbGF5
b3V0OiB0byBiZSBhYmxlIHRvCmFkZCBtZW1vcnkgdG8gdGhlIHJ1bm5pbmcgTWluaS1PUyB3ZSBu
ZWVkIHRvIGhhdmUgc29tZSBzcGFyZSBhcmVhcwplc3BlY2lhbGx5IGFmdGVyIHRoZSAxOjEgbWFw
cGluZyBvZiBwaHlzaWNhbCBtZW1vcnkuCgpUaGUgd2hvbGUgc2VyaWVzIGhhcyBiZWVuIHRlc3Rl
ZCB3aXRoOgoKLSBwdXJlIG1pbmktb3MKLSB4ZW5zdG9yZSBzdHViZG9tCi0gaW9lbXUgc3R1YmRv
bQotIHB2Z3J1YiA2NCBiaXQKCnB2Z3J1YiAzMiBiaXQgZGlkbid0IHdvcmsgYmVmb3JlIGFwcGx5
aW5nIHRoZSBzZXJpZXMsIGl0IGp1c3QgZW50ZXJlZAp0aGUgZ3J1YiBzaGVsbC4gV2l0aCB0aGUg
c2VyaWVzIGFwcGxpZWQgdGhlIGJlaGF2aW9yIHdhcyBleGFjdGx5IHRoZQpzYW1lLgoKSnVlcmdl
biBHcm9zcyAoOSk6CiAgbWluaS1vczogY29ycmVjdCBmaXJzdCBmcmVlIHBmbgogIG1pbmktb3M6
IHJlbW92ZSB1bnVzZWQgYWxsb2NfY29udGlnX3BhZ2VzKCkgZnVuY3Rpb24KICBtaW5pLW9zOiBy
ZW1vdmUgTU1fREVCVUcgY29kZQogIG1pbmktb3M6IGFkZCBkZXNjcmlwdGlvbiBvZiB4ODYgbWVt
b3J5IHVzYWdlCiAgbWluaS1vczogYWRkIG5yX2ZyZWVfcGFnZXMgY291bnRlcgogIG1pbmktb3M6
IGxldCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsIGlmIG5vIGZyZWUgcGFnZSBhdmFpbGFibGUKICBt
aW5pLW9zOiBhZGQgYmFsbG9vbmluZyBjb25maWcgaXRlbQogIG1pbmktb3M6IGdldCBtYXhpbXVt
IG1lbW9yeSBzaXplIGZyb20gaHlwZXJ2aXNvcgogIG1pbmktb3M6IG1vZGlmeSB2aXJ0dWFsIG1l
bW9yeSBsYXlvdXQgZm9yIHN1cHBvcnQgb2YgYmFsbG9vbmluZwoKIE1ha2VmaWxlICAgICAgICAg
ICAgICB8ICAgMiArCiBhcmNoL2FybS9tbS5jICAgICAgICAgfCAgIDIgKy0KIGFyY2gveDg2L21t
LmMgICAgICAgICB8IDE5MSArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogaW5jbHVkZS9tbS5oICAgICAgICAgIHwgICA1ICstCiBpbmNsdWRlL3g4Ni9h
cmNoX21tLmggfCAgNDQgKysrKysrKysrKysrCiBtbS5jICAgICAgICAgICAgICAgICAgfCAgOTUg
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25z
KCspLCAyNDIgZGVsZXRpb25zKC0pCgotLSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdl-0008JP-Cf; Tue, 19 Jul 2016 08:44:33 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdj-0008Hk-Ls; Tue, 19 Jul 2016 08:44:31 +0000
Received: from [193.109.254.147] by server-13.bemta-14.messagelabs.com id
 28/C1-09524-E68ED875; Tue, 19 Jul 2016 08:44:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wg1vXBC3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZvTsvsBW8Ea44vvFrywNjMv4uxg5
 OSQEjCTeTvzH1MXIxSEksJBR4vCCE0wgCTYBVYkN10+xgtgiAm4SX77PYgOxmQUiJOZ8OMUCY
 gsDNX9bcxSshgWovm/1VXYQm1fAXuLVu35GiAVyEtdnTgebySngINH6+QaYLQRUc2XRUpYJjN
 wLGBlWMWoUpxaVpRbpGhnrJRVlpmeU5CZm5ugaGpro5aYWFyemp+YkJhXrJefnbmIEerqegYF
 xB+Os436HGCU5mJREeVVFe8OF+JLyUyozEosz4otKc1KLDzHKcHAoSfAueAaUEyxKTU+tSMvM
 AYYcTFqCg0dJhHcuSJq3uCAxtzgzHSJ1ilFRSpw3EiQhAJLIKM2Da4OF+SVGWSlhXkYGBgYhn
 oLUotzMElT5V4ziHIxKwrynQabwZOaVwE1/BbSYCWixgWo3yOKSRISUVAPjkaBaRRmRbY1Wys
 LHD3SILH5yfUrZtBlHZG6ssdn9nkeNa6P+B/HDj3KOCmWZPw89bP/5g9HrnPyvaw9EK+7Yzs3
 2fJFmE29yw1Lhkt+V8y2+3FsS2fVqMusaly2rjs88PUtuwaJrrOFmb9T5n15TSLVlXfPdzPrr
 1Zod2Q8/vp4rHL37xtFYEyWW4oxEQy3mouJEAHZOOeVuAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1468917869!53719408!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 48875 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-12.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 91A75ADC1;
 Tue, 19 Jul 2016 08:44:29 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:19 +0200
Message-Id: <1468917865-12828-4-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 3/9] mini-os: remove MM_DEBUG code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

bW0uYyBjb250YWlucyB1bnVzZWQgY29kZSBpbnNpZGUgI2lmZGVmIE1NX0RFQlVHIGFyZWFzLiBJ
dHMgdXNhYmlsaXR5CmlzIHJhdGhlciBxdWVzdGlvbmFibGUgYW5kIHNvbWUgcGFydHMgYXJlIGV2
ZW4gd3JvbmcgKGUuZy4KcHJpbnRfY2h1bmtzKCkgY2FsbGVkIHdpdGggbnJfcGFnZXMgPiAxMDAw
IHdpbGwgY2xvYmJlciBhbiBhcmJpdHJhcnkKc3RhY2sgY29udGVudCB3aXRoIGEgMCBieXRlKS4K
ClJlbW92ZSB0aGlzIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NA
c3VzZS5jb20+Ci0tLQogbW0uYyB8IDYwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYwIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL21tLmMgYi9tbS5jCmluZGV4IDMxYWFmODMuLjBkZDQ4NjIgMTAw
NjQ0Ci0tLSBhL21tLmMKKysrIGIvbW0uYwpAQCAtNDIsMTMgKzQyLDYgQEAKICNpbmNsdWRlIDxt
aW5pLW9zL2xpYi5oPgogI2luY2x1ZGUgPG1pbmktb3MveG1hbGxvYy5oPgogCi0jaWZkZWYgTU1f
REVCVUcKLSNkZWZpbmUgREVCVUcoX2YsIF9hLi4uKSBcCi0gICAgcHJpbnRrKCJNSU5JX09TKGZp
bGU9bW0uYywgbGluZT0lZCkgIiBfZiAiXG4iLCBfX0xJTkVfXywgIyMgX2EpCi0jZWxzZQotI2Rl
ZmluZSBERUJVRyhfZiwgX2EuLi4pICAgICgodm9pZCkwKQotI2VuZGlmCi0KIC8qKioqKioqKioq
KioqKioqKioqKioKICAqIEFMTE9DQVRJT04gQklUTUFQCiAgKiAgT25lIGJpdCBwZXIgcGFnZSBv
ZiBtZW1vcnkuIEJpdCBzZXQgPT4gcGFnZSBpcyBhbGxvY2F0ZWQuCkBAIC0xNDAsNTkgKzEzMyw2
IEBAIHN0YXRpYyBjaHVua19oZWFkX3QgIGZyZWVfdGFpbFtGUkVFTElTVF9TSVpFXTsKICNkZWZp
bmUgcm91bmRfcGdkb3duKF9wKSAgKChfcCkmUEFHRV9NQVNLKQogI2RlZmluZSByb3VuZF9wZ3Vw
KF9wKSAgICAoKChfcCkrKFBBR0VfU0laRS0xKSkmUEFHRV9NQVNLKQogCi0jaWZkZWYgTU1fREVC
VUcKLS8qCi0gKiBQcmludHMgYWxsb2NhdGlvblswLzFdIGZvciBAbnJfcGFnZXMsIHN0YXJ0aW5n
IGF0IEBzdGFydAotICogYWRkcmVzcyAodmlydHVhbCkuCi0gKi8KLVVTRUQgc3RhdGljIHZvaWQg
cHJpbnRfYWxsb2NhdGlvbih2b2lkICpzdGFydCwgaW50IG5yX3BhZ2VzKQotewotICAgIHVuc2ln
bmVkIGxvbmcgcGZuX3N0YXJ0ID0gdmlydF90b19wZm4oc3RhcnQpOwotICAgIGludCBjb3VudDsK
LSAgICBmb3IoY291bnQgPSAwOyBjb3VudCA8IG5yX3BhZ2VzOyBjb3VudCsrKQotICAgICAgICBp
ZihhbGxvY2F0ZWRfaW5fbWFwKHBmbl9zdGFydCArIGNvdW50KSkgcHJpbnRrKCIxIik7Ci0gICAg
ICAgIGVsc2UgcHJpbnRrKCIwIik7Ci0gICAgICAgIAotICAgIHByaW50aygiXG4iKTsgICAgICAg
IAotfQotCi0vKgotICogUHJpbnRzIGNodW5rcyAobWFraW5nIHRoZW0gd2l0aCBsZXR0ZXJzKSBm
b3IgQG5yX3BhZ2VzIHN0YXJ0aW5nCi0gKiBhdCBAc3RhcnQgKHZpcnR1YWwpLgotICovCi1VU0VE
IHN0YXRpYyB2b2lkIHByaW50X2NodW5rcyh2b2lkICpzdGFydCwgaW50IG5yX3BhZ2VzKQotewot
ICAgIGNoYXIgY2h1bmtzWzEwMDFdLCBjdXJyZW50PSdBJzsKLSAgICBpbnQgb3JkZXIsIGNvdW50
OwotICAgIGNodW5rX2hlYWRfdCAqaGVhZDsKLSAgICB1bnNpZ25lZCBsb25nIHBmbl9zdGFydCA9
IHZpcnRfdG9fcGZuKHN0YXJ0KTsKLSAgIAotICAgIG1lbXNldChjaHVua3MsIChpbnQpJ18nLCAx
MDAwKTsKLSAgICBpZihucl9wYWdlcyA+IDEwMDApIAotICAgIHsKLSAgICAgICAgREVCVUcoIkNh
biBvbmx5IHByaW5nIDEwMDAgcGFnZXMuIEluY3JlYXNlIGJ1ZmZlciBzaXplLiIpOwotICAgIH0K
LSAgICAKLSAgICBmb3Iob3JkZXI9MDsgb3JkZXIgPCBGUkVFTElTVF9TSVpFOyBvcmRlcisrKQot
ICAgIHsKLSAgICAgICAgaGVhZCA9IGZyZWVfaGVhZFtvcmRlcl07Ci0gICAgICAgIHdoaWxlKCFG
UkVFTElTVF9FTVBUWShoZWFkKSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yKGNvdW50ID0g
MDsgY291bnQgPCAxVUw8PCBoZWFkLT5sZXZlbDsgY291bnQrKykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpZihjb3VudCArIHZpcnRfdG9fcGZuKGhlYWQpIC0gcGZuX3N0YXJ0IDwg
MTAwMCkKLSAgICAgICAgICAgICAgICAgICAgY2h1bmtzW2NvdW50ICsgdmlydF90b19wZm4oaGVh
ZCkgLSBwZm5fc3RhcnRdID0gY3VycmVudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGhl
YWQgPSBoZWFkLT5uZXh0OwotICAgICAgICAgICAgY3VycmVudCsrOwotICAgICAgICB9Ci0gICAg
fQotICAgIGNodW5rc1tucl9wYWdlc10gPSAnXDAnOwotICAgIHByaW50aygiJXNcbiIsIGNodW5r
cyk7Ci19Ci0jZW5kaWYKLQotCiAvKgogICogSW5pdGlhbGlzZSBhbGxvY2F0b3IsIHBsYWNpbmcg
YWRkcmVzc2VzIFtAbWluLEBtYXhdIGluIGZyZWUgcG9vbC4KICAqIEBtaW4gYW5kIEBtYXggYXJl
IFBIWVNJQ0FMIGFkZHJlc3Nlcy4KLS0gCjIuNi42CgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9j
Z2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdl-0008K1-Ld; Tue, 19 Jul 2016 08:44:33 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdj-0008Hh-VI; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [85.158.137.68] by server-7.bemta-3.messagelabs.com id
 C3/75-03271-E68ED875; Tue, 19 Jul 2016 08:44:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wg+vf2Szefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZqxcOoux4JVWxdWb7SwNjAfkuxg5
 OSQEjCTeTvzH1MXIxSEksJBRYu7Lg0wgCTYBVYkN10+xgtgiAm4SX77PYgOxmQUiJOZ8OMUCY
 gsLeEp0Hz7MCGKzANVPb1sEVsMrYC/xZflyFogFchLXZ04Hm8kp4CDR+vkGmC0EVHNl0VKWCY
 zcCxgZVjFqFKcWlaUW6Rqa6iUVZaZnlOQmZuboGhoY6+WmFhcnpqfmJCYV6yXn525iBHqaAQh
 2MK7Z7nmIUZKDSUmUV1W0N1yILyk/pTIjsTgjvqg0J7X4EKMMB4eSBG/bc6CcYFFqempFWmYO
 MORg0hIcPEoivP0gad7igsTc4sx0iNQpRkUpcd5QkIQASCKjNA+uDRbmlxhlpYR5GYEOEeIpS
 C3KzSxBlX/FKM7BqCTM6woyhSczrwRu+iugxUxAiw1Uu0EWlyQipKQaGA3vaGyquN1VetL+Ts
 t5fxW9tuaH5w+f2LrNXilZSTN8404vDSv2/c0fU9ZdNr/Nvu7WC13L88+OfCqcu0tQS009+2u
 k94q95/JXyYZJqa6dOeXyZuNvpjK+DRN3iM+9dp8vt+Dg1La2G39jPrRtPs3r19Ajq87XcdKz
 IfxZk9zKik6hyP6zekosxRmJhlrMRcWJAGiSnK9uAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1468917869!34592541!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24747 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-12.tower-31.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 3A19FADBA;
 Tue, 19 Jul 2016 08:44:29 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:18 +0200
Message-Id: <1468917865-12828-3-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 2/9] mini-os: remove unused
	alloc_contig_pages() function
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

YWxsb2NfY29udGlnX3BhZ2VzKCkgaXMgbmV2ZXIgdXNlZCBhbnl3aGVyZSBpbiBtaW5pLW9zLiBS
ZW1vdmUgaXQuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+
Ci0tLQogYXJjaC94ODYvbW0uYyB8IDE0MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL21tLmggIHwgICAxIC0KIDIgZmls
ZXMgY2hhbmdlZCwgMTQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tLmMg
Yi9hcmNoL3g4Ni9tbS5jCmluZGV4IGFlMTAzNmUuLmM1OWE1ZDMgMTAwNjQ0Ci0tLSBhL2FyY2gv
eDg2L21tLmMKKysrIGIvYXJjaC94ODYvbW0uYwpAQCAtNjUyLDE0OCArNjUyLDYgQEAgaW50IHVu
bWFwX2ZyYW1lcyh1bnNpZ25lZCBsb25nIHZhLCB1bnNpZ25lZCBsb25nIG51bV9mcmFtZXMpCiB9
CiAKIC8qCi0gKiBBbGxvY2F0ZSBwYWdlcyB3aGljaCBhcmUgY29udGlndW91cyBpbiBtYWNoaW5l
IG1lbW9yeS4KLSAqIFJldHVybnMgYSBWQSB0byB3aGVyZSB0aGV5IGFyZSBtYXBwZWQgb3IgMCBv
biBmYWlsdXJlLgotICogCi0gKiBhZGRyX2JpdHMgaW5kaWNhdGVzIGlmIHRoZSByZWdpb24gaGFz
IHJlc3RyaWN0aW9ucyBvbiB3aGVyZSBpdCBpcwotICogbG9jYXRlZC4gVHlwaWNhbCB2YWx1ZXMg
YXJlIDMyIChpZiBmb3IgZXhhbXBsZSBQQ0kgZGV2aWNlcyBjYW4ndCBhY2Nlc3MKLSAqIDY0Yml0
IG1lbW9yeSkgb3IgMCBmb3Igbm8gcmVzdHJpY3Rpb25zLgotICoKLSAqIEFsbG9jYXRlZCBwYWdl
cyBjYW4gYmUgZnJlZWQgdXNpbmcgdGhlIHBhZ2UgYWxsb2NhdG9ycyBmcmVlX3BhZ2VzKCkgCi0g
KiBmdW5jdGlvbi4KLSAqCi0gKiBiYXNlZCBvbiBMaW51eCBmdW5jdGlvbiB4ZW5fY3JlYXRlX2Nv
bnRpZ3VvdXNfcmVnaW9uKCkKLSAqLwotI2RlZmluZSBNQVhfQ09OVElHX09SREVSIDkgLyogMk1C
ICovCi11bnNpZ25lZCBsb25nIGFsbG9jX2NvbnRpZ19wYWdlcyhpbnQgb3JkZXIsIHVuc2lnbmVk
IGludCBhZGRyX2JpdHMpCi17Ci0gICAgdW5zaWduZWQgbG9uZyBpbl92YSwgdmE7Ci0gICAgdW5z
aWduZWQgbG9uZyBpbl9mcmFtZXNbMVVMIDw8IG9yZGVyXSwgb3V0X2ZyYW1lcywgbWZuOwotICAg
IG11bHRpY2FsbF9lbnRyeV90IGNhbGxbMVVMIDw8IG9yZGVyXTsKLSAgICB1bnNpZ25lZCBpbnQg
aSwgbnVtX3BhZ2VzID0gMVVMIDw8IG9yZGVyOwotICAgIGludCByZXQsIGV4Y2hfc3VjY2VzczsK
LQotICAgIC8qIHBhc3MgaW4gbnVtX3BhZ2VzICdleHRlbmRzJyBvZiBzaXplIDEgYW5kCi0gICAg
ICogcmVxdWVzdCAxIGV4dGVuZCBvZiBzaXplICdvcmRlciAqLwotICAgIHN0cnVjdCB4ZW5fbWVt
b3J5X2V4Y2hhbmdlIGV4Y2hhbmdlID0gewotICAgICAgICAuaW4gPSB7Ci0gICAgICAgICAgICAu
bnJfZXh0ZW50cyAgID0gbnVtX3BhZ2VzLAotICAgICAgICAgICAgLmV4dGVudF9vcmRlciA9IDAs
Ci0gICAgICAgICAgICAuZG9taWQgICAgICAgID0gRE9NSURfU0VMRgotICAgICAgICB9LAotICAg
ICAgICAub3V0ID0gewotICAgICAgICAgICAgLm5yX2V4dGVudHMgICA9IDEsCi0gICAgICAgICAg
ICAuZXh0ZW50X29yZGVyID0gb3JkZXIsCi0gICAgICAgICAgICAuYWRkcmVzc19iaXRzID0gYWRk
cl9iaXRzLAotICAgICAgICAgICAgLmRvbWlkICAgICAgICA9IERPTUlEX1NFTEYKLSAgICAgICAg
fSwKLSAgICAgICAgLm5yX2V4Y2hhbmdlZCA9IDAKLSAgICB9OwotCi0gICAgaWYgKCBvcmRlciA+
IE1BWF9DT05USUdfT1JERVIgKQotICAgIHsKLSAgICAgICAgcHJpbnRrKCJhbGxvY19jb250aWdf
cGFnZXM6IG9yZGVyIHRvbyBsYXJnZSAweCV4ID4gMHgleFxuIiwKLSAgICAgICAgICAgICAgIG9y
ZGVyLCBNQVhfQ09OVElHX09SREVSKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
LyogQWxsb2NhdGUgc29tZSBwb3RlbnRpYWxseSBkaXNjb250aWd1b3VzIHBhZ2VzICovCi0gICAg
aW5fdmEgPSBhbGxvY19wYWdlcyhvcmRlcik7Ci0gICAgaWYgKCAhaW5fdmEgKQotICAgIHsKLSAg
ICAgICAgcHJpbnRrKCJhbGxvY19jb250aWdfcGFnZXM6IGNvdWxkIG5vdCBnZXQgZW5vdWdoIHBh
Z2VzIChvcmRlcj0weCV4XG4iLAotICAgICAgICAgICAgICAgb3JkZXIpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICAvKiBzZXQgdXAgYXJndW1lbnRzIGZvciBleGNoYW5nZSBoeXBl
ciBjYWxsICovCi0gICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUoZXhjaGFuZ2UuaW4uZXh0ZW50X3N0
YXJ0LCBpbl9mcmFtZXMpOwotICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGV4Y2hhbmdlLm91dC5l
eHRlbnRfc3RhcnQsICZvdXRfZnJhbWVzKTsKLQotICAgIC8qIHVubWFwIGN1cnJlbnQgZnJhbWVz
LCBrZWVwIGEgbGlzdCBvZiBNRk5zICovCi0gICAgZm9yICggaSA9IDA7IGkgPCBudW1fcGFnZXM7
IGkrKyApCi0gICAgewotICAgICAgICBpbnQgYXJnID0gMDsKLQotICAgICAgICB2YSA9IGluX3Zh
ICsgKFBBR0VfU0laRSAqIGkpOwotICAgICAgICBpbl9mcmFtZXNbaV0gPSB2aXJ0X3RvX21mbih2
YSk7Ci0KLSAgICAgICAgLyogdXBkYXRlIFAyTSBtYXBwaW5nICovCi0gICAgICAgIHBoeXNfdG9f
bWFjaGluZV9tYXBwaW5nW3ZpcnRfdG9fcGZuKHZhKV0gPSBJTlZBTElEX1AyTV9FTlRSWTsKLQot
ICAgICAgICAvKiBidWlsZCBtdWx0aSBjYWxsICovCi0gICAgICAgIGNhbGxbaV0ub3AgPSBfX0hZ
UEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmc7Ci0gICAgICAgIGNhbGxbaV0uYXJnc1thcmcrK10g
PSB2YTsKLSAgICAgICAgY2FsbFtpXS5hcmdzW2FyZysrXSA9IDA7Ci0jaWZkZWYgX19pMzg2X18K
LSAgICAgICAgY2FsbFtpXS5hcmdzW2FyZysrXSA9IDA7Ci0jZW5kaWYgIAotICAgICAgICBjYWxs
W2ldLmFyZ3NbYXJnKytdID0gVVZNRl9JTlZMUEc7Ci0gICAgfQotCi0gICAgcmV0ID0gSFlQRVJW
SVNPUl9tdWx0aWNhbGwoY2FsbCwgaSk7Ci0gICAgaWYgKCByZXQgKQotICAgIHsKLSAgICAgICAg
cHJpbnRrKCJPZGQsIHVwZGF0ZV92YV9tYXBwaW5nIGh5cGVyY2FsbCBmYWlsZWQgd2l0aCByYz0l
ZC5cbiIsIHJldCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIHRyeSBnZXR0
aW5nIGEgY29udGlnIHJhbmdlIG9mIE1GTnMgKi8KLSAgICBvdXRfZnJhbWVzID0gdmlydF90b19w
Zm4oaW5fdmEpOyAvKiBQRk5zIHRvIHBvcHVsYXRlICovCi0gICAgcmV0ID0gSFlQRVJWSVNPUl9t
ZW1vcnlfb3AoWEVOTUVNX2V4Y2hhbmdlLCAmZXhjaGFuZ2UpOwotICAgIGlmICggcmV0ICkgewot
ICAgICAgICBwcmludGsoIm1lbSBleGNoYW5nZWQgb3JkZXI9MHgleCBmYWlsZWQgd2l0aCByYz0l
ZCwgbnJfZXhjaGFuZ2VkPSVsdVxuIiwKLSAgICAgICAgICAgICAgIG9yZGVyLCByZXQsIGV4Y2hh
bmdlLm5yX2V4Y2hhbmdlZCk7Ci0gICAgICAgIC8qIHdlIHN0aWxsIG5lZWQgdG8gcmV0dXJuIHRo
ZSBhbGxvY2F0ZWQgcGFnZXMgYWJvdmUgdG8gdGhlIHBvb2wKLSAgICAgICAgICogaWUuIG1hcCB0
aGVtIGJhY2sgaW50byB0aGUgMToxIG1hcHBpbmcgZXRjLiBzbyB3ZSBjb250aW51ZSBidXQgCi0g
ICAgICAgICAqIGluIHRoZSBlbmQgcmV0dXJuIHRoZSBwYWdlcyB0byB0aGUgcGFnZSBhbGxvY2F0
b3IgYW5kIHJldHVybiAwLiAqLwotICAgICAgICBleGNoX3N1Y2Nlc3MgPSAwOwotICAgIH0KLSAg
ICBlbHNlCi0gICAgICAgIGV4Y2hfc3VjY2VzcyA9IDE7Ci0KLSAgICAvKiBtYXAgZnJhbWVzIGlu
dG8gMToxIGFuZCB1cGRhdGUgcDJtICovCi0gICAgZm9yICggaSA9IDA7IGkgPCBudW1fcGFnZXM7
IGkrKyApCi0gICAgewotICAgICAgICBpbnQgYXJnID0gMDsKLSAgICAgICAgcHRlX3QgcHRlOwot
Ci0gICAgICAgIHZhID0gaW5fdmEgKyAoUEFHRV9TSVpFICogaSk7Ci0gICAgICAgIG1mbiA9IGkg
PCBleGNoYW5nZS5ucl9leGNoYW5nZWQgPyAob3V0X2ZyYW1lcyArIGkpIDogaW5fZnJhbWVzW2ld
OwotICAgICAgICBwdGUgPSBfX3B0ZShtZm4gPDwgUEFHRV9TSElGVCB8IEwxX1BST1QpOwotCi0g
ICAgICAgIC8qIHVwZGF0ZSBQMk0gbWFwcGluZyAqLwotICAgICAgICBwaHlzX3RvX21hY2hpbmVf
bWFwcGluZ1t2aXJ0X3RvX3Bmbih2YSldID0gbWZuOwotCi0gICAgICAgIC8qIGJ1aWxkIG11bHRp
IGNhbGwgKi8KLSAgICAgICAgY2FsbFtpXS5vcCA9IF9fSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFw
cGluZzsKLSAgICAgICAgY2FsbFtpXS5hcmdzW2FyZysrXSA9IHZhOwotI2lmZGVmIF9feDg2XzY0
X18KLSAgICAgICAgY2FsbFtpXS5hcmdzW2FyZysrXSA9IChwZ2VudHJ5X3QpcHRlLnB0ZTsKLSNl
bHNlCi0gICAgICAgIGNhbGxbaV0uYXJnc1thcmcrK10gPSBwdGUucHRlX2xvdzsKLSAgICAgICAg
Y2FsbFtpXS5hcmdzW2FyZysrXSA9IHB0ZS5wdGVfaGlnaDsKLSNlbmRpZiAgCi0gICAgICAgIGNh
bGxbaV0uYXJnc1thcmcrK10gPSBVVk1GX0lOVkxQRzsKLSAgICB9Ci0gICAgcmV0ID0gSFlQRVJW
SVNPUl9tdWx0aWNhbGwoY2FsbCwgaSk7Ci0gICAgaWYgKCByZXQgKQotICAgIHsKLSAgICAgICAg
cHJpbnRrKCJ1cGRhdGVfdmFfbWFwcGluZyBoeXBlcmNhbGwgbm8uIDIgZmFpbGVkIHdpdGggcmM9
JWQuXG4iLCByZXQpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoICFleGNo
X3N1Y2Nlc3MgKQotICAgIHsKLSAgICAgICAgLyogc2luY2UgdGhlIGV4Y2hhbmdlZCBmYWlsZWQg
d2UganVzdCBmcmVlIHRoZSBwYWdlcyBhcyB3ZWxsICovCi0gICAgICAgIGZyZWVfcGFnZXMoKHZv
aWQgKikgaW5fdmEsIG9yZGVyKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBpbl92YTsKLX0KLQotLyoKICAqIENsZWFyIHNvbWUgb2YgdGhlIGJvb3RzdHJhcCBt
ZW1vcnkKICAqLwogc3RhdGljIHZvaWQgY2xlYXJfYm9vdHN0cmFwKHZvaWQpCmRpZmYgLS1naXQg
YS9pbmNsdWRlL21tLmggYi9pbmNsdWRlL21tLmgKaW5kZXggZjU3ZDhhYi4uYTQ4ZjQ4NSAxMDA2
NDQKLS0tIGEvaW5jbHVkZS9tbS5oCisrKyBiL2luY2x1ZGUvbW0uaApAQCAtNzEsNyArNzEsNiBA
QCB2b2lkIGRvX21hcF9mcmFtZXModW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICBjb25zdCB1
bnNpZ25lZCBsb25nICpmLCB1bnNpZ25lZCBsb25nIG4sIHVuc2lnbmVkIGxvbmcgc3RyaWRlLAog
CXVuc2lnbmVkIGxvbmcgaW5jcmVtZW50LCBkb21pZF90IGlkLCBpbnQgKmVyciwgdW5zaWduZWQg
bG9uZyBwcm90KTsKIGludCB1bm1hcF9mcmFtZXModW5zaWduZWQgbG9uZyB2YSwgdW5zaWduZWQg
bG9uZyBudW1fZnJhbWVzKTsKLXVuc2lnbmVkIGxvbmcgYWxsb2NfY29udGlnX3BhZ2VzKGludCBv
cmRlciwgdW5zaWduZWQgaW50IGFkZHJfYml0cyk7CiAjaWZkZWYgSEFWRV9MSUJDCiBleHRlcm4g
dW5zaWduZWQgbG9uZyBoZWFwLCBicmssIGhlYXBfbWFwcGVkLCBoZWFwX2VuZDsKICNlbmRpZgot
LSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdl-0008Io-4S; Tue, 19 Jul 2016 08:44:33 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdj-0008Hj-JO; Tue, 19 Jul 2016 08:44:31 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
 90/6F-30629-E68ED875; Tue, 19 Jul 2016 08:44:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wgynT+Czefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZvTd7mQvOMhV0XVkJ1sD40KOLkZO
 DgkBI4m3E/8xdTFycQgJLGSU6Hq8hA0kwSagKrHh+ilWEFtEwE3iy/dZYHFmgQiJOR9OsYDYw
 gL2Ei+23GIGsVmA6r/sngdWwwsUf7T7OQvEAjmJ6zOnM01g5FzAyLCKUaM4tagstUjX0FwvqS
 gzPaMkNzEzR9fQ0EQvN7W4ODE9NScxqVgvOT93EyPQc/UMDIw7GH+e9jzEKMnBpCTKqyraGy7
 El5SfUpmRWJwRX1Sak1p8iFGGg0NJglfoOVBOsCg1PbUiLTMHGEIwaQkOHiUR3rnPgNK8xQWJ
 ucWZ6RCpU4yKUuK8oSB9AiCJjNI8uDZY2F5ilJUS5mVkYGAQ4ilILcrNLEGVf8UozsGoJMzrC
 jKFJzOvBG76K6DFTECLDVS7QRaXJCKkpBoYpzd+Wv9KLPGzlut+9ufsJbyfWSOmuLgd1s45v2
 pqCud/sSDzDG1JObvwAxN3B/kZeiUILXHu3POf3VBfkMPqSpmacIHhUXsvgRaH8C0qt3bmuYR
 fmOg7Nb7AyziHyWIu/8650ad9zY+HGb34rLFlsWx2zdknkxgmdP2s3/5N8EvLLabcg5eVWIoz
 Eg21mIuKEwH4tsJLVgIAAA==
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-6.tower-27.messagelabs.com!1468917869!54756918!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 62709 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-6.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 0ED34ADB9;
 Tue, 19 Jul 2016 08:44:28 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:16 +0200
Message-Id: <1468917865-12828-1-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 0/9] mini-os: prepare for support of
	ballooning
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RG8gc29tZSBjbGVhbnVwcywgYSBzbWFsbCBjb3JyZWN0aW9uIGFuZCBhZGQgc29tZSBiYXNpYyBm
ZWF0dXJlcyB0bwpsYXkgZ3JvdW5kd29yayBmb3Igc3VwcG9ydCBvZiBiYWxsb29uaW5nIGluIE1p
bmktT1MuCgpUaGUgbWFpbiB2aXNpYmxlIGNoYW5nZSBpcyB0aGUgdmlydHVhbCBtZW1vcnkgbGF5
b3V0OiB0byBiZSBhYmxlIHRvCmFkZCBtZW1vcnkgdG8gdGhlIHJ1bm5pbmcgTWluaS1PUyB3ZSBu
ZWVkIHRvIGhhdmUgc29tZSBzcGFyZSBhcmVhcwplc3BlY2lhbGx5IGFmdGVyIHRoZSAxOjEgbWFw
cGluZyBvZiBwaHlzaWNhbCBtZW1vcnkuCgpUaGUgd2hvbGUgc2VyaWVzIGhhcyBiZWVuIHRlc3Rl
ZCB3aXRoOgoKLSBwdXJlIG1pbmktb3MKLSB4ZW5zdG9yZSBzdHViZG9tCi0gaW9lbXUgc3R1YmRv
bQotIHB2Z3J1YiA2NCBiaXQKCnB2Z3J1YiAzMiBiaXQgZGlkbid0IHdvcmsgYmVmb3JlIGFwcGx5
aW5nIHRoZSBzZXJpZXMsIGl0IGp1c3QgZW50ZXJlZAp0aGUgZ3J1YiBzaGVsbC4gV2l0aCB0aGUg
c2VyaWVzIGFwcGxpZWQgdGhlIGJlaGF2aW9yIHdhcyBleGFjdGx5IHRoZQpzYW1lLgoKSnVlcmdl
biBHcm9zcyAoOSk6CiAgbWluaS1vczogY29ycmVjdCBmaXJzdCBmcmVlIHBmbgogIG1pbmktb3M6
IHJlbW92ZSB1bnVzZWQgYWxsb2NfY29udGlnX3BhZ2VzKCkgZnVuY3Rpb24KICBtaW5pLW9zOiBy
ZW1vdmUgTU1fREVCVUcgY29kZQogIG1pbmktb3M6IGFkZCBkZXNjcmlwdGlvbiBvZiB4ODYgbWVt
b3J5IHVzYWdlCiAgbWluaS1vczogYWRkIG5yX2ZyZWVfcGFnZXMgY291bnRlcgogIG1pbmktb3M6
IGxldCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsIGlmIG5vIGZyZWUgcGFnZSBhdmFpbGFibGUKICBt
aW5pLW9zOiBhZGQgYmFsbG9vbmluZyBjb25maWcgaXRlbQogIG1pbmktb3M6IGdldCBtYXhpbXVt
IG1lbW9yeSBzaXplIGZyb20gaHlwZXJ2aXNvcgogIG1pbmktb3M6IG1vZGlmeSB2aXJ0dWFsIG1l
bW9yeSBsYXlvdXQgZm9yIHN1cHBvcnQgb2YgYmFsbG9vbmluZwoKIE1ha2VmaWxlICAgICAgICAg
ICAgICB8ICAgMiArCiBhcmNoL2FybS9tbS5jICAgICAgICAgfCAgIDIgKy0KIGFyY2gveDg2L21t
LmMgICAgICAgICB8IDE5MSArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogaW5jbHVkZS9tbS5oICAgICAgICAgIHwgICA1ICstCiBpbmNsdWRlL3g4Ni9h
cmNoX21tLmggfCAgNDQgKysrKysrKysrKysrCiBtbS5jICAgICAgICAgICAgICAgICAgfCAgOTUg
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25z
KCspLCAyNDIgZGVsZXRpb25zKC0pCgotLSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdl-0008Jt-Kj; Tue, 19 Jul 2016 08:44:33 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdj-0008Hi-VH; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [85.158.137.68] by server-2.bemta-3.messagelabs.com id
 E5/91-32553-E68ED875; Tue, 19 Jul 2016 08:44:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wg7mLWCzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZtzbvoqxYD9nxeSHS9gbGG+zdzFy
 ckgIGEm8nfiPqYuRi0NIYCGjxLnHf5hBEmwCqhIbrp9iBbFFBNwkvnyfxQZiMwtESMz5cIoFx
 BYWMJF4vPIP0CAODhag+n29xSBhXgF7ibmLfrNBzJeTuD5zOhOIzSngINH6+QaYLQRUc2XRUp
 YJjNwLGBlWMWoUpxaVpRbpGproJRVlpmeU5CZm5ugaGhjr5aYWFyemp+YkJhXrJefnbmIE+pk
 BCHYwrtjueYhRkoNJSZRXVbQ3XIgvKT+lMiOxOCO+qDQntfgQowwHh5IEb9tzoJxgUWp6akVa
 Zg4w4GDSEhw8SiK8/SBp3uKCxNzizHSI1ClGRSlx3lCQhABIIqM0D64NFuSXGGWlhHkZgQ4R4
 ilILcrNLEGVf8UozsGoJMzbDjKFJzOvBG76K6DFTECLDVS7QRaXJCKkpBoYa7a8NjmbM5fdsd
 9lw7G+wt6U33nvNSdPOMziXXy91V72+6E3upllJ6KyVDacft1XtWbdt43hgowfuY/dU1i0V06
 jWfT3rTslvse/PtOyd9ts7Nj2fO4Lu5jy0PR7Ee8TvOw0ja78mH9cco6R/+od7mnli9a8Evig
 kSe0eHfD7a8rzRcuvPTZWImlOCPRUIu5qDgRAAk86EttAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1468917869!51288272!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 36259 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-14.tower-31.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 0ECFFAD9E;
 Tue, 19 Jul 2016 08:44:28 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:17 +0200
Message-Id: <1468917865-12828-2-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 1/9] mini-os: correct first free pfn
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGZpcnN0IGZyZWUgcGZuIGF2YWlsYWJsZSBmb3IgYWxsb2NhdGlvbiBpcyBjYWxjdWxhdGVk
IGJ5IGFkZGluZyB0aGUKbnVtYmVyIG9mIHBhZ2UgdGFibGUgZnJhbWVzIHRvIHRoZSBwZm4gb2Yg
dGhlIGZpcnN0IHBhZ2UgdGFibGUgYW5kCnRoZW4gdGhlIG1hZ2ljIG51bWJlciAzIHRvIGFjY291
bnQgZm9yIHN0YXJ0IGluZm8gcGFnZSBldCBhbC4KCkFzIHRoZSBzdGFydCBpbmZvIHBhZ2UsIHhl
bnN0b3JlIHBhZ2UgYW5kIGNvbnNvbGUgcGFnZSBhcmUgYWxsb2NhdGVkCl9iZWZvcmVfIHRoZSBw
YWdlIHRhYmxlcyBsZWF2aW5nIHJvb20gZm9yIHRoZXNlIHBhZ2VzIGJlaGluZCB0aGUgcGFnZQp0
YWJsZXMgbWFrZXMgbm8gc2Vuc2UuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jv
c3NAc3VzZS5jb20+Ci0tLQogYXJjaC94ODYvbW0uYyB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2Vk
LCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv
bW0uYyBiL2FyY2gveDg2L21tLmMKaW5kZXggNTFhYTk2Ni4uYWUxMDM2ZSAxMDA2NDQKLS0tIGEv
YXJjaC94ODYvbW0uYworKysgYi9hcmNoL3g4Ni9tbS5jCkBAIC04NjcsOSArODY3LDggQEAgdm9p
ZCBhcmNoX2luaXRfbW0odW5zaWduZWQgbG9uZyogc3RhcnRfcGZuX3AsIHVuc2lnbmVkIGxvbmcq
IG1heF9wZm5fcCkKICAgICBwcmludGsoInN0YWNrIHN0YXJ0OiAlcChWQSlcbiIsIHN0YWNrKTsK
ICAgICBwcmludGsoIiAgICAgICBfZW5kOiAlcChWQSlcbiIsICZfZW5kKTsKIAotICAgIC8qIEZp
cnN0IHBhZ2UgZm9sbG93cyBwYWdlIHRhYmxlIHBhZ2VzIGFuZCAzIG1vcmUgcGFnZXMgKHN0b3Jl
IHBhZ2UgZXRjKSAqLwotICAgIHN0YXJ0X3BmbiA9IFBGTl9VUCh0b19waHlzKHN0YXJ0X2luZm8u
cHRfYmFzZSkpICsgCi0gICAgICAgIHN0YXJ0X2luZm8ubnJfcHRfZnJhbWVzICsgMzsKKyAgICAv
KiBGaXJzdCBwYWdlIGZvbGxvd3MgcGFnZSB0YWJsZSBwYWdlcy4gKi8KKyAgICBzdGFydF9wZm4g
PSBQRk5fVVAodG9fcGh5cyhzdGFydF9pbmZvLnB0X2Jhc2UpKSArIHN0YXJ0X2luZm8ubnJfcHRf
ZnJhbWVzOwogICAgIG1heF9wZm4gPSBzdGFydF9pbmZvLm5yX3BhZ2VzOwogCiAgICAgLyogV2Ug
bmVlZCByb29tIGZvciBkZW1hbmQgbWFwcGluZyBhbmQgaGVhcCwgY2xpcCBhdmFpbGFibGUgbWVt
b3J5ICovCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdl-0008K1-Ld; Tue, 19 Jul 2016 08:44:33 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdj-0008Hh-VI; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [85.158.137.68] by server-7.bemta-3.messagelabs.com id
 C3/75-03271-E68ED875; Tue, 19 Jul 2016 08:44:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wg+vf2Szefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZqxcOoux4JVWxdWb7SwNjAfkuxg5
 OSQEjCTeTvzH1MXIxSEksJBRYu7Lg0wgCTYBVYkN10+xgtgiAm4SX77PYgOxmQUiJOZ8OMUCY
 gsLeEp0Hz7MCGKzANVPb1sEVsMrYC/xZflyFogFchLXZ04Hm8kp4CDR+vkGmC0EVHNl0VKWCY
 zcCxgZVjFqFKcWlaUW6Rqa6iUVZaZnlOQmZuboGhoY6+WmFhcnpqfmJCYV6yXn525iBHqaAQh
 2MK7Z7nmIUZKDSUmUV1W0N1yILyk/pTIjsTgjvqg0J7X4EKMMB4eSBG/bc6CcYFFqempFWmYO
 MORg0hIcPEoivP0gad7igsTc4sx0iNQpRkUpcd5QkIQASCKjNA+uDRbmlxhlpYR5GYEOEeIpS
 C3KzSxBlX/FKM7BqCTM6woyhSczrwRu+iugxUxAiw1Uu0EWlyQipKQaGA3vaGyquN1VetL+Ts
 t5fxW9tuaH5w+f2LrNXilZSTN8404vDSv2/c0fU9ZdNr/Nvu7WC13L88+OfCqcu0tQS009+2u
 k94q95/JXyYZJqa6dOeXyZuNvpjK+DRN3iM+9dp8vt+Dg1La2G39jPrRtPs3r19Ajq87XcdKz
 IfxZk9zKik6hyP6zekosxRmJhlrMRcWJAGiSnK9uAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-12.tower-31.messagelabs.com!1468917869!34592541!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 24747 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-12.tower-31.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 3A19FADBA;
 Tue, 19 Jul 2016 08:44:29 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:18 +0200
Message-Id: <1468917865-12828-3-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 2/9] mini-os: remove unused
	alloc_contig_pages() function
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

YWxsb2NfY29udGlnX3BhZ2VzKCkgaXMgbmV2ZXIgdXNlZCBhbnl3aGVyZSBpbiBtaW5pLW9zLiBS
ZW1vdmUgaXQuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+
Ci0tLQogYXJjaC94ODYvbW0uYyB8IDE0MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL21tLmggIHwgICAxIC0KIDIgZmls
ZXMgY2hhbmdlZCwgMTQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tLmMg
Yi9hcmNoL3g4Ni9tbS5jCmluZGV4IGFlMTAzNmUuLmM1OWE1ZDMgMTAwNjQ0Ci0tLSBhL2FyY2gv
eDg2L21tLmMKKysrIGIvYXJjaC94ODYvbW0uYwpAQCAtNjUyLDE0OCArNjUyLDYgQEAgaW50IHVu
bWFwX2ZyYW1lcyh1bnNpZ25lZCBsb25nIHZhLCB1bnNpZ25lZCBsb25nIG51bV9mcmFtZXMpCiB9
CiAKIC8qCi0gKiBBbGxvY2F0ZSBwYWdlcyB3aGljaCBhcmUgY29udGlndW91cyBpbiBtYWNoaW5l
IG1lbW9yeS4KLSAqIFJldHVybnMgYSBWQSB0byB3aGVyZSB0aGV5IGFyZSBtYXBwZWQgb3IgMCBv
biBmYWlsdXJlLgotICogCi0gKiBhZGRyX2JpdHMgaW5kaWNhdGVzIGlmIHRoZSByZWdpb24gaGFz
IHJlc3RyaWN0aW9ucyBvbiB3aGVyZSBpdCBpcwotICogbG9jYXRlZC4gVHlwaWNhbCB2YWx1ZXMg
YXJlIDMyIChpZiBmb3IgZXhhbXBsZSBQQ0kgZGV2aWNlcyBjYW4ndCBhY2Nlc3MKLSAqIDY0Yml0
IG1lbW9yeSkgb3IgMCBmb3Igbm8gcmVzdHJpY3Rpb25zLgotICoKLSAqIEFsbG9jYXRlZCBwYWdl
cyBjYW4gYmUgZnJlZWQgdXNpbmcgdGhlIHBhZ2UgYWxsb2NhdG9ycyBmcmVlX3BhZ2VzKCkgCi0g
KiBmdW5jdGlvbi4KLSAqCi0gKiBiYXNlZCBvbiBMaW51eCBmdW5jdGlvbiB4ZW5fY3JlYXRlX2Nv
bnRpZ3VvdXNfcmVnaW9uKCkKLSAqLwotI2RlZmluZSBNQVhfQ09OVElHX09SREVSIDkgLyogMk1C
ICovCi11bnNpZ25lZCBsb25nIGFsbG9jX2NvbnRpZ19wYWdlcyhpbnQgb3JkZXIsIHVuc2lnbmVk
IGludCBhZGRyX2JpdHMpCi17Ci0gICAgdW5zaWduZWQgbG9uZyBpbl92YSwgdmE7Ci0gICAgdW5z
aWduZWQgbG9uZyBpbl9mcmFtZXNbMVVMIDw8IG9yZGVyXSwgb3V0X2ZyYW1lcywgbWZuOwotICAg
IG11bHRpY2FsbF9lbnRyeV90IGNhbGxbMVVMIDw8IG9yZGVyXTsKLSAgICB1bnNpZ25lZCBpbnQg
aSwgbnVtX3BhZ2VzID0gMVVMIDw8IG9yZGVyOwotICAgIGludCByZXQsIGV4Y2hfc3VjY2VzczsK
LQotICAgIC8qIHBhc3MgaW4gbnVtX3BhZ2VzICdleHRlbmRzJyBvZiBzaXplIDEgYW5kCi0gICAg
ICogcmVxdWVzdCAxIGV4dGVuZCBvZiBzaXplICdvcmRlciAqLwotICAgIHN0cnVjdCB4ZW5fbWVt
b3J5X2V4Y2hhbmdlIGV4Y2hhbmdlID0gewotICAgICAgICAuaW4gPSB7Ci0gICAgICAgICAgICAu
bnJfZXh0ZW50cyAgID0gbnVtX3BhZ2VzLAotICAgICAgICAgICAgLmV4dGVudF9vcmRlciA9IDAs
Ci0gICAgICAgICAgICAuZG9taWQgICAgICAgID0gRE9NSURfU0VMRgotICAgICAgICB9LAotICAg
ICAgICAub3V0ID0gewotICAgICAgICAgICAgLm5yX2V4dGVudHMgICA9IDEsCi0gICAgICAgICAg
ICAuZXh0ZW50X29yZGVyID0gb3JkZXIsCi0gICAgICAgICAgICAuYWRkcmVzc19iaXRzID0gYWRk
cl9iaXRzLAotICAgICAgICAgICAgLmRvbWlkICAgICAgICA9IERPTUlEX1NFTEYKLSAgICAgICAg
fSwKLSAgICAgICAgLm5yX2V4Y2hhbmdlZCA9IDAKLSAgICB9OwotCi0gICAgaWYgKCBvcmRlciA+
IE1BWF9DT05USUdfT1JERVIgKQotICAgIHsKLSAgICAgICAgcHJpbnRrKCJhbGxvY19jb250aWdf
cGFnZXM6IG9yZGVyIHRvbyBsYXJnZSAweCV4ID4gMHgleFxuIiwKLSAgICAgICAgICAgICAgIG9y
ZGVyLCBNQVhfQ09OVElHX09SREVSKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
LyogQWxsb2NhdGUgc29tZSBwb3RlbnRpYWxseSBkaXNjb250aWd1b3VzIHBhZ2VzICovCi0gICAg
aW5fdmEgPSBhbGxvY19wYWdlcyhvcmRlcik7Ci0gICAgaWYgKCAhaW5fdmEgKQotICAgIHsKLSAg
ICAgICAgcHJpbnRrKCJhbGxvY19jb250aWdfcGFnZXM6IGNvdWxkIG5vdCBnZXQgZW5vdWdoIHBh
Z2VzIChvcmRlcj0weCV4XG4iLAotICAgICAgICAgICAgICAgb3JkZXIpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICAvKiBzZXQgdXAgYXJndW1lbnRzIGZvciBleGNoYW5nZSBoeXBl
ciBjYWxsICovCi0gICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUoZXhjaGFuZ2UuaW4uZXh0ZW50X3N0
YXJ0LCBpbl9mcmFtZXMpOwotICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGV4Y2hhbmdlLm91dC5l
eHRlbnRfc3RhcnQsICZvdXRfZnJhbWVzKTsKLQotICAgIC8qIHVubWFwIGN1cnJlbnQgZnJhbWVz
LCBrZWVwIGEgbGlzdCBvZiBNRk5zICovCi0gICAgZm9yICggaSA9IDA7IGkgPCBudW1fcGFnZXM7
IGkrKyApCi0gICAgewotICAgICAgICBpbnQgYXJnID0gMDsKLQotICAgICAgICB2YSA9IGluX3Zh
ICsgKFBBR0VfU0laRSAqIGkpOwotICAgICAgICBpbl9mcmFtZXNbaV0gPSB2aXJ0X3RvX21mbih2
YSk7Ci0KLSAgICAgICAgLyogdXBkYXRlIFAyTSBtYXBwaW5nICovCi0gICAgICAgIHBoeXNfdG9f
bWFjaGluZV9tYXBwaW5nW3ZpcnRfdG9fcGZuKHZhKV0gPSBJTlZBTElEX1AyTV9FTlRSWTsKLQot
ICAgICAgICAvKiBidWlsZCBtdWx0aSBjYWxsICovCi0gICAgICAgIGNhbGxbaV0ub3AgPSBfX0hZ
UEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmc7Ci0gICAgICAgIGNhbGxbaV0uYXJnc1thcmcrK10g
PSB2YTsKLSAgICAgICAgY2FsbFtpXS5hcmdzW2FyZysrXSA9IDA7Ci0jaWZkZWYgX19pMzg2X18K
LSAgICAgICAgY2FsbFtpXS5hcmdzW2FyZysrXSA9IDA7Ci0jZW5kaWYgIAotICAgICAgICBjYWxs
W2ldLmFyZ3NbYXJnKytdID0gVVZNRl9JTlZMUEc7Ci0gICAgfQotCi0gICAgcmV0ID0gSFlQRVJW
SVNPUl9tdWx0aWNhbGwoY2FsbCwgaSk7Ci0gICAgaWYgKCByZXQgKQotICAgIHsKLSAgICAgICAg
cHJpbnRrKCJPZGQsIHVwZGF0ZV92YV9tYXBwaW5nIGh5cGVyY2FsbCBmYWlsZWQgd2l0aCByYz0l
ZC5cbiIsIHJldCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIHRyeSBnZXR0
aW5nIGEgY29udGlnIHJhbmdlIG9mIE1GTnMgKi8KLSAgICBvdXRfZnJhbWVzID0gdmlydF90b19w
Zm4oaW5fdmEpOyAvKiBQRk5zIHRvIHBvcHVsYXRlICovCi0gICAgcmV0ID0gSFlQRVJWSVNPUl9t
ZW1vcnlfb3AoWEVOTUVNX2V4Y2hhbmdlLCAmZXhjaGFuZ2UpOwotICAgIGlmICggcmV0ICkgewot
ICAgICAgICBwcmludGsoIm1lbSBleGNoYW5nZWQgb3JkZXI9MHgleCBmYWlsZWQgd2l0aCByYz0l
ZCwgbnJfZXhjaGFuZ2VkPSVsdVxuIiwKLSAgICAgICAgICAgICAgIG9yZGVyLCByZXQsIGV4Y2hh
bmdlLm5yX2V4Y2hhbmdlZCk7Ci0gICAgICAgIC8qIHdlIHN0aWxsIG5lZWQgdG8gcmV0dXJuIHRo
ZSBhbGxvY2F0ZWQgcGFnZXMgYWJvdmUgdG8gdGhlIHBvb2wKLSAgICAgICAgICogaWUuIG1hcCB0
aGVtIGJhY2sgaW50byB0aGUgMToxIG1hcHBpbmcgZXRjLiBzbyB3ZSBjb250aW51ZSBidXQgCi0g
ICAgICAgICAqIGluIHRoZSBlbmQgcmV0dXJuIHRoZSBwYWdlcyB0byB0aGUgcGFnZSBhbGxvY2F0
b3IgYW5kIHJldHVybiAwLiAqLwotICAgICAgICBleGNoX3N1Y2Nlc3MgPSAwOwotICAgIH0KLSAg
ICBlbHNlCi0gICAgICAgIGV4Y2hfc3VjY2VzcyA9IDE7Ci0KLSAgICAvKiBtYXAgZnJhbWVzIGlu
dG8gMToxIGFuZCB1cGRhdGUgcDJtICovCi0gICAgZm9yICggaSA9IDA7IGkgPCBudW1fcGFnZXM7
IGkrKyApCi0gICAgewotICAgICAgICBpbnQgYXJnID0gMDsKLSAgICAgICAgcHRlX3QgcHRlOwot
Ci0gICAgICAgIHZhID0gaW5fdmEgKyAoUEFHRV9TSVpFICogaSk7Ci0gICAgICAgIG1mbiA9IGkg
PCBleGNoYW5nZS5ucl9leGNoYW5nZWQgPyAob3V0X2ZyYW1lcyArIGkpIDogaW5fZnJhbWVzW2ld
OwotICAgICAgICBwdGUgPSBfX3B0ZShtZm4gPDwgUEFHRV9TSElGVCB8IEwxX1BST1QpOwotCi0g
ICAgICAgIC8qIHVwZGF0ZSBQMk0gbWFwcGluZyAqLwotICAgICAgICBwaHlzX3RvX21hY2hpbmVf
bWFwcGluZ1t2aXJ0X3RvX3Bmbih2YSldID0gbWZuOwotCi0gICAgICAgIC8qIGJ1aWxkIG11bHRp
IGNhbGwgKi8KLSAgICAgICAgY2FsbFtpXS5vcCA9IF9fSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFw
cGluZzsKLSAgICAgICAgY2FsbFtpXS5hcmdzW2FyZysrXSA9IHZhOwotI2lmZGVmIF9feDg2XzY0
X18KLSAgICAgICAgY2FsbFtpXS5hcmdzW2FyZysrXSA9IChwZ2VudHJ5X3QpcHRlLnB0ZTsKLSNl
bHNlCi0gICAgICAgIGNhbGxbaV0uYXJnc1thcmcrK10gPSBwdGUucHRlX2xvdzsKLSAgICAgICAg
Y2FsbFtpXS5hcmdzW2FyZysrXSA9IHB0ZS5wdGVfaGlnaDsKLSNlbmRpZiAgCi0gICAgICAgIGNh
bGxbaV0uYXJnc1thcmcrK10gPSBVVk1GX0lOVkxQRzsKLSAgICB9Ci0gICAgcmV0ID0gSFlQRVJW
SVNPUl9tdWx0aWNhbGwoY2FsbCwgaSk7Ci0gICAgaWYgKCByZXQgKQotICAgIHsKLSAgICAgICAg
cHJpbnRrKCJ1cGRhdGVfdmFfbWFwcGluZyBoeXBlcmNhbGwgbm8uIDIgZmFpbGVkIHdpdGggcmM9
JWQuXG4iLCByZXQpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoICFleGNo
X3N1Y2Nlc3MgKQotICAgIHsKLSAgICAgICAgLyogc2luY2UgdGhlIGV4Y2hhbmdlZCBmYWlsZWQg
d2UganVzdCBmcmVlIHRoZSBwYWdlcyBhcyB3ZWxsICovCi0gICAgICAgIGZyZWVfcGFnZXMoKHZv
aWQgKikgaW5fdmEsIG9yZGVyKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBpbl92YTsKLX0KLQotLyoKICAqIENsZWFyIHNvbWUgb2YgdGhlIGJvb3RzdHJhcCBt
ZW1vcnkKICAqLwogc3RhdGljIHZvaWQgY2xlYXJfYm9vdHN0cmFwKHZvaWQpCmRpZmYgLS1naXQg
YS9pbmNsdWRlL21tLmggYi9pbmNsdWRlL21tLmgKaW5kZXggZjU3ZDhhYi4uYTQ4ZjQ4NSAxMDA2
NDQKLS0tIGEvaW5jbHVkZS9tbS5oCisrKyBiL2luY2x1ZGUvbW0uaApAQCAtNzEsNyArNzEsNiBA
QCB2b2lkIGRvX21hcF9mcmFtZXModW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICBjb25zdCB1
bnNpZ25lZCBsb25nICpmLCB1bnNpZ25lZCBsb25nIG4sIHVuc2lnbmVkIGxvbmcgc3RyaWRlLAog
CXVuc2lnbmVkIGxvbmcgaW5jcmVtZW50LCBkb21pZF90IGlkLCBpbnQgKmVyciwgdW5zaWduZWQg
bG9uZyBwcm90KTsKIGludCB1bm1hcF9mcmFtZXModW5zaWduZWQgbG9uZyB2YSwgdW5zaWduZWQg
bG9uZyBudW1fZnJhbWVzKTsKLXVuc2lnbmVkIGxvbmcgYWxsb2NfY29udGlnX3BhZ2VzKGludCBv
cmRlciwgdW5zaWduZWQgaW50IGFkZHJfYml0cyk7CiAjaWZkZWYgSEFWRV9MSUJDCiBleHRlcm4g
dW5zaWduZWQgbG9uZyBoZWFwLCBicmssIGhlYXBfbWFwcGVkLCBoZWFwX2VuZDsKICNlbmRpZgot
LSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdl-0008JP-Cf; Tue, 19 Jul 2016 08:44:33 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdj-0008Hk-Ls; Tue, 19 Jul 2016 08:44:31 +0000
Received: from [193.109.254.147] by server-13.bemta-14.messagelabs.com id
 28/C1-09524-E68ED875; Tue, 19 Jul 2016 08:44:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wg1vXBC3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZvTsvsBW8Ea44vvFrywNjMv4uxg5
 OSQEjCTeTvzH1MXIxSEksJBR4vCCE0wgCTYBVYkN10+xgtgiAm4SX77PYgOxmQUiJOZ8OMUCY
 gsDNX9bcxSshgWovm/1VXYQm1fAXuLVu35GiAVyEtdnTgebySngINH6+QaYLQRUc2XRUpYJjN
 wLGBlWMWoUpxaVpRbpGhnrJRVlpmeU5CZm5ugaGpro5aYWFyemp+YkJhXrJefnbmIEerqegYF
 xB+Os436HGCU5mJREeVVFe8OF+JLyUyozEosz4otKc1KLDzHKcHAoSfAueAaUEyxKTU+tSMvM
 AYYcTFqCg0dJhHcuSJq3uCAxtzgzHSJ1ilFRSpw3EiQhAJLIKM2Da4OF+SVGWSlhXkYGBgYhn
 oLUotzMElT5V4ziHIxKwrynQabwZOaVwE1/BbSYCWixgWo3yOKSRISUVAPjkaBaRRmRbY1Wys
 LHD3SILH5yfUrZtBlHZG6ssdn9nkeNa6P+B/HDj3KOCmWZPw89bP/5g9HrnPyvaw9EK+7Yzs3
 2fJFmE29yw1Lhkt+V8y2+3FsS2fVqMusaly2rjs88PUtuwaJrrOFmb9T5n15TSLVlXfPdzPrr
 1Zod2Q8/vp4rHL37xtFYEyWW4oxEQy3mouJEAHZOOeVuAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1468917869!53719408!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 48875 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-12.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 91A75ADC1;
 Tue, 19 Jul 2016 08:44:29 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:19 +0200
Message-Id: <1468917865-12828-4-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 3/9] mini-os: remove MM_DEBUG code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

bW0uYyBjb250YWlucyB1bnVzZWQgY29kZSBpbnNpZGUgI2lmZGVmIE1NX0RFQlVHIGFyZWFzLiBJ
dHMgdXNhYmlsaXR5CmlzIHJhdGhlciBxdWVzdGlvbmFibGUgYW5kIHNvbWUgcGFydHMgYXJlIGV2
ZW4gd3JvbmcgKGUuZy4KcHJpbnRfY2h1bmtzKCkgY2FsbGVkIHdpdGggbnJfcGFnZXMgPiAxMDAw
IHdpbGwgY2xvYmJlciBhbiBhcmJpdHJhcnkKc3RhY2sgY29udGVudCB3aXRoIGEgMCBieXRlKS4K
ClJlbW92ZSB0aGlzIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NA
c3VzZS5jb20+Ci0tLQogbW0uYyB8IDYwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYwIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL21tLmMgYi9tbS5jCmluZGV4IDMxYWFmODMuLjBkZDQ4NjIgMTAw
NjQ0Ci0tLSBhL21tLmMKKysrIGIvbW0uYwpAQCAtNDIsMTMgKzQyLDYgQEAKICNpbmNsdWRlIDxt
aW5pLW9zL2xpYi5oPgogI2luY2x1ZGUgPG1pbmktb3MveG1hbGxvYy5oPgogCi0jaWZkZWYgTU1f
REVCVUcKLSNkZWZpbmUgREVCVUcoX2YsIF9hLi4uKSBcCi0gICAgcHJpbnRrKCJNSU5JX09TKGZp
bGU9bW0uYywgbGluZT0lZCkgIiBfZiAiXG4iLCBfX0xJTkVfXywgIyMgX2EpCi0jZWxzZQotI2Rl
ZmluZSBERUJVRyhfZiwgX2EuLi4pICAgICgodm9pZCkwKQotI2VuZGlmCi0KIC8qKioqKioqKioq
KioqKioqKioqKioKICAqIEFMTE9DQVRJT04gQklUTUFQCiAgKiAgT25lIGJpdCBwZXIgcGFnZSBv
ZiBtZW1vcnkuIEJpdCBzZXQgPT4gcGFnZSBpcyBhbGxvY2F0ZWQuCkBAIC0xNDAsNTkgKzEzMyw2
IEBAIHN0YXRpYyBjaHVua19oZWFkX3QgIGZyZWVfdGFpbFtGUkVFTElTVF9TSVpFXTsKICNkZWZp
bmUgcm91bmRfcGdkb3duKF9wKSAgKChfcCkmUEFHRV9NQVNLKQogI2RlZmluZSByb3VuZF9wZ3Vw
KF9wKSAgICAoKChfcCkrKFBBR0VfU0laRS0xKSkmUEFHRV9NQVNLKQogCi0jaWZkZWYgTU1fREVC
VUcKLS8qCi0gKiBQcmludHMgYWxsb2NhdGlvblswLzFdIGZvciBAbnJfcGFnZXMsIHN0YXJ0aW5n
IGF0IEBzdGFydAotICogYWRkcmVzcyAodmlydHVhbCkuCi0gKi8KLVVTRUQgc3RhdGljIHZvaWQg
cHJpbnRfYWxsb2NhdGlvbih2b2lkICpzdGFydCwgaW50IG5yX3BhZ2VzKQotewotICAgIHVuc2ln
bmVkIGxvbmcgcGZuX3N0YXJ0ID0gdmlydF90b19wZm4oc3RhcnQpOwotICAgIGludCBjb3VudDsK
LSAgICBmb3IoY291bnQgPSAwOyBjb3VudCA8IG5yX3BhZ2VzOyBjb3VudCsrKQotICAgICAgICBp
ZihhbGxvY2F0ZWRfaW5fbWFwKHBmbl9zdGFydCArIGNvdW50KSkgcHJpbnRrKCIxIik7Ci0gICAg
ICAgIGVsc2UgcHJpbnRrKCIwIik7Ci0gICAgICAgIAotICAgIHByaW50aygiXG4iKTsgICAgICAg
IAotfQotCi0vKgotICogUHJpbnRzIGNodW5rcyAobWFraW5nIHRoZW0gd2l0aCBsZXR0ZXJzKSBm
b3IgQG5yX3BhZ2VzIHN0YXJ0aW5nCi0gKiBhdCBAc3RhcnQgKHZpcnR1YWwpLgotICovCi1VU0VE
IHN0YXRpYyB2b2lkIHByaW50X2NodW5rcyh2b2lkICpzdGFydCwgaW50IG5yX3BhZ2VzKQotewot
ICAgIGNoYXIgY2h1bmtzWzEwMDFdLCBjdXJyZW50PSdBJzsKLSAgICBpbnQgb3JkZXIsIGNvdW50
OwotICAgIGNodW5rX2hlYWRfdCAqaGVhZDsKLSAgICB1bnNpZ25lZCBsb25nIHBmbl9zdGFydCA9
IHZpcnRfdG9fcGZuKHN0YXJ0KTsKLSAgIAotICAgIG1lbXNldChjaHVua3MsIChpbnQpJ18nLCAx
MDAwKTsKLSAgICBpZihucl9wYWdlcyA+IDEwMDApIAotICAgIHsKLSAgICAgICAgREVCVUcoIkNh
biBvbmx5IHByaW5nIDEwMDAgcGFnZXMuIEluY3JlYXNlIGJ1ZmZlciBzaXplLiIpOwotICAgIH0K
LSAgICAKLSAgICBmb3Iob3JkZXI9MDsgb3JkZXIgPCBGUkVFTElTVF9TSVpFOyBvcmRlcisrKQot
ICAgIHsKLSAgICAgICAgaGVhZCA9IGZyZWVfaGVhZFtvcmRlcl07Ci0gICAgICAgIHdoaWxlKCFG
UkVFTElTVF9FTVBUWShoZWFkKSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yKGNvdW50ID0g
MDsgY291bnQgPCAxVUw8PCBoZWFkLT5sZXZlbDsgY291bnQrKykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpZihjb3VudCArIHZpcnRfdG9fcGZuKGhlYWQpIC0gcGZuX3N0YXJ0IDwg
MTAwMCkKLSAgICAgICAgICAgICAgICAgICAgY2h1bmtzW2NvdW50ICsgdmlydF90b19wZm4oaGVh
ZCkgLSBwZm5fc3RhcnRdID0gY3VycmVudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGhl
YWQgPSBoZWFkLT5uZXh0OwotICAgICAgICAgICAgY3VycmVudCsrOwotICAgICAgICB9Ci0gICAg
fQotICAgIGNodW5rc1tucl9wYWdlc10gPSAnXDAnOwotICAgIHByaW50aygiJXNcbiIsIGNodW5r
cyk7Ci19Ci0jZW5kaWYKLQotCiAvKgogICogSW5pdGlhbGlzZSBhbGxvY2F0b3IsIHBsYWNpbmcg
YWRkcmVzc2VzIFtAbWluLEBtYXhdIGluIGZyZWUgcG9vbC4KICAqIEBtaW4gYW5kIEBtYXggYXJl
IFBIWVNJQ0FMIGFkZHJlc3Nlcy4KLS0gCjIuNi42CgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9j
Z2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdl-0008Jt-Kj; Tue, 19 Jul 2016 08:44:33 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdj-0008Hi-VH; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [85.158.137.68] by server-2.bemta-3.messagelabs.com id
 E5/91-32553-E68ED875; Tue, 19 Jul 2016 08:44:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wg7mLWCzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZtzbvoqxYD9nxeSHS9gbGG+zdzFy
 ckgIGEm8nfiPqYuRi0NIYCGjxLnHf5hBEmwCqhIbrp9iBbFFBNwkvnyfxQZiMwtESMz5cIoFx
 BYWMJF4vPIP0CAODhag+n29xSBhXgF7ibmLfrNBzJeTuD5zOhOIzSngINH6+QaYLQRUc2XRUp
 YJjNwLGBlWMWoUpxaVpRbpGproJRVlpmeU5CZm5ugaGhjr5aYWFyemp+YkJhXrJefnbmIE+pk
 BCHYwrtjueYhRkoNJSZRXVbQ3XIgvKT+lMiOxOCO+qDQntfgQowwHh5IEb9tzoJxgUWp6akVa
 Zg4w4GDSEhw8SiK8/SBp3uKCxNzizHSI1ClGRSlx3lCQhABIIqM0D64NFuSXGGWlhHkZgQ4R4
 ilILcrNLEGVf8UozsGoJMzbDjKFJzOvBG76K6DFTECLDVS7QRaXJCKkpBoYa7a8NjmbM5fdsd
 9lw7G+wt6U33nvNSdPOMziXXy91V72+6E3upllJ6KyVDacft1XtWbdt43hgowfuY/dU1i0V06
 jWfT3rTslvse/PtOyd9ts7Nj2fO4Lu5jy0PR7Ee8TvOw0ja78mH9cco6R/+od7mnli9a8Evig
 kSe0eHfD7a8rzRcuvPTZWImlOCPRUIu5qDgRAAk86EttAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-14.tower-31.messagelabs.com!1468917869!51288272!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 36259 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-14.tower-31.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 0ECFFAD9E;
 Tue, 19 Jul 2016 08:44:28 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:17 +0200
Message-Id: <1468917865-12828-2-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 1/9] mini-os: correct first free pfn
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGZpcnN0IGZyZWUgcGZuIGF2YWlsYWJsZSBmb3IgYWxsb2NhdGlvbiBpcyBjYWxjdWxhdGVk
IGJ5IGFkZGluZyB0aGUKbnVtYmVyIG9mIHBhZ2UgdGFibGUgZnJhbWVzIHRvIHRoZSBwZm4gb2Yg
dGhlIGZpcnN0IHBhZ2UgdGFibGUgYW5kCnRoZW4gdGhlIG1hZ2ljIG51bWJlciAzIHRvIGFjY291
bnQgZm9yIHN0YXJ0IGluZm8gcGFnZSBldCBhbC4KCkFzIHRoZSBzdGFydCBpbmZvIHBhZ2UsIHhl
bnN0b3JlIHBhZ2UgYW5kIGNvbnNvbGUgcGFnZSBhcmUgYWxsb2NhdGVkCl9iZWZvcmVfIHRoZSBw
YWdlIHRhYmxlcyBsZWF2aW5nIHJvb20gZm9yIHRoZXNlIHBhZ2VzIGJlaGluZCB0aGUgcGFnZQp0
YWJsZXMgbWFrZXMgbm8gc2Vuc2UuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jv
c3NAc3VzZS5jb20+Ci0tLQogYXJjaC94ODYvbW0uYyB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2Vk
LCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv
bW0uYyBiL2FyY2gveDg2L21tLmMKaW5kZXggNTFhYTk2Ni4uYWUxMDM2ZSAxMDA2NDQKLS0tIGEv
YXJjaC94ODYvbW0uYworKysgYi9hcmNoL3g4Ni9tbS5jCkBAIC04NjcsOSArODY3LDggQEAgdm9p
ZCBhcmNoX2luaXRfbW0odW5zaWduZWQgbG9uZyogc3RhcnRfcGZuX3AsIHVuc2lnbmVkIGxvbmcq
IG1heF9wZm5fcCkKICAgICBwcmludGsoInN0YWNrIHN0YXJ0OiAlcChWQSlcbiIsIHN0YWNrKTsK
ICAgICBwcmludGsoIiAgICAgICBfZW5kOiAlcChWQSlcbiIsICZfZW5kKTsKIAotICAgIC8qIEZp
cnN0IHBhZ2UgZm9sbG93cyBwYWdlIHRhYmxlIHBhZ2VzIGFuZCAzIG1vcmUgcGFnZXMgKHN0b3Jl
IHBhZ2UgZXRjKSAqLwotICAgIHN0YXJ0X3BmbiA9IFBGTl9VUCh0b19waHlzKHN0YXJ0X2luZm8u
cHRfYmFzZSkpICsgCi0gICAgICAgIHN0YXJ0X2luZm8ubnJfcHRfZnJhbWVzICsgMzsKKyAgICAv
KiBGaXJzdCBwYWdlIGZvbGxvd3MgcGFnZSB0YWJsZSBwYWdlcy4gKi8KKyAgICBzdGFydF9wZm4g
PSBQRk5fVVAodG9fcGh5cyhzdGFydF9pbmZvLnB0X2Jhc2UpKSArIHN0YXJ0X2luZm8ubnJfcHRf
ZnJhbWVzOwogICAgIG1heF9wZm4gPSBzdGFydF9pbmZvLm5yX3BhZ2VzOwogCiAgICAgLyogV2Ug
bmVlZCByb29tIGZvciBkZW1hbmQgbWFwcGluZyBhbmQgaGVhcCwgY2xpcCBhdmFpbGFibGUgbWVt
b3J5ICovCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdm-0008LY-4y; Tue, 19 Jul 2016 08:44:34 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdk-0008Hl-9M; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 69/3D-21406-F68ED875; Tue, 19 Jul 2016 08:44:31 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wgw+rFSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZuyYcoy9oIWzYteif4wNjL/Zuhg5
 OSQEjCTeTvzH1MXIxSEksJBR4tfkzywgCTYBVYkN10+xgtgiAm4SX77PAmtgFoiQmPPhFFiNs
 ICjxPyOHUwgNgtQ/esdZ8DivAL2EqvfP2CBWCAncX3mdLAaTgEHidbPN8BsIaCaK4uWskxg5F
 7AyLCKUb04tagstUjXSC+pKDM9oyQ3MTNH19DATC83tbg4MT01JzGpWC85P3cTI9DPDECwg3H
 ZX6dDjJIcTEqivKqiveFCfEn5KZUZicUZ8UWlOanFhxhlODiUJHjbngPlBItS01Mr0jJzgAEH
 k5bg4FES4e0HSfMWFyTmFmemQ6ROMSpKifOGgiQEQBIZpXlwbbAgv8QoKyXMywh0iBBPQWpRb
 mYJqvwrRnEORiVhXleQKTyZeSVw018BLWYCWmyg2g2yuCQRISXVwCi4XFT+wF/1q+1h8c/yk3
 p6Izxl5Hbc7m2aKliw7KePXsasQzx3dyS3vlsppGGSVeLJL3b/7bGnXRarHuXpHgpOy/qp9qE
 q9HRTU+0fSy32x+5Re3817bzzL/mv6eZelg/nOI9phNb5K1hfOfdMZkO3+lLrl/JVi/xs1mS6
 /kx5cesxuxODrBJLcUaioRZzUXEiAJr2ezJtAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-4.tower-21.messagelabs.com!1468917870!18459189!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 53495 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-4.tower-21.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id E8804ADC4;
 Tue, 19 Jul 2016 08:44:29 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:20 +0200
Message-Id: <1468917865-12828-5-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 4/9] mini-os: add description of x86 memory
	usage
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIGEgYnJpZWYgZGVzY3JpcHRpb24gaG93IHRoZSBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRy
ZXNzIHVzYWdlCmxvb2tzIGxpa2Ugb24geDg2IHRvIGluY2x1ZGUveDg2L2FyY2hfbW0uaAoKU2ln
bmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KIGluY2x1ZGUv
eDg2L2FyY2hfbW0uaCB8IDIwICsrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwg
MjAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUveDg2L2FyY2hfbW0uaCBiL2lu
Y2x1ZGUveDg2L2FyY2hfbW0uaAppbmRleCA1OGYyOWZjLi5mNzU2ZGFiIDEwMDY0NAotLS0gYS9p
bmNsdWRlL3g4Ni9hcmNoX21tLmgKKysrIGIvaW5jbHVkZS94ODYvYXJjaF9tbS5oCkBAIC0zNiw2
ICszNiwyNiBAQAogI2VuZGlmCiAjZW5kaWYKIAorLyoKKyAqIFBoeXNpY2FsIGFkZHJlc3Mgc3Bh
Y2UgdXNhZ2U6CisgKgorICogMC4uLl9lZGF0YToga2VybmVsIHRleHQvZGF0YQorICogKnN0YWNr
ICAgIDoga2VybmVsIHN0YWNrICh0aHJlYWQgMCkKKyAqIGh5cGVydmlzb3IgYWxsb2NhdGVkIGRh
dGE6IHAybV9saXN0LCBzdGFydF9pbmZvIHBhZ2UsIHhlbnN0b3JlIHBhZ2UsCisgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zb2xlIHBhZ2UsIGluaXRpYWwgcGFnZSB0YWJsZXMKKyAq
IGJpdG1hcCBvZiBhbGxvY2F0ZWQgcGFnZXMKKyAqIHBhZ2VzIGNvbnRyb2xsZWQgYnkgdGhlIHBh
Z2UgYWxsb2NhdG9yCisgKgorICoKKyAqIFZpcnR1YWwgYWRkcmVzcyBzcGFjZSB1c2FnZToKKyAq
CisgKiAxOjEgbWFwcGluZyBvZiBwaHlzaWNhbCBtZW1vcnkgc3RhcnRpbmcgYXQgVkEoMCkKKyAq
IDEgdW5hbGxvY2F0ZWQgcGFnZQorICogZGVtYW5kIG1hcCBhcmVhICgzMiBiaXRzOiAyIEdCLCA2
NCBiaXRzOiAxMjggR0IpIGZvciB2aXJ0dWFsIGFsbG9jYXRpb25zCisgKiAxIHVuYWxsb2NhdGVk
IHBhZ2UKKyAqIHdpdGggbGliYzogaGVhcCBhcmVhICgzMiBiaXRzOiAxIEdCLCA2NCBiaXRzOiAx
MjggR0IpCisgKi8KKwogI2RlZmluZSBMMV9GUkFNRSAgICAgICAgICAgICAgICAxCiAjZGVmaW5l
IEwyX0ZSQU1FICAgICAgICAgICAgICAgIDIKICNkZWZpbmUgTDNfRlJBTUUgICAgICAgICAgICAg
ICAgMwotLSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdm-0008LY-4y; Tue, 19 Jul 2016 08:44:34 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdk-0008Hl-9M; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 69/3D-21406-F68ED875; Tue, 19 Jul 2016 08:44:31 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov27ei95
 wgw+rFSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZuyYcoy9oIWzYteif4wNjL/Zuhg5
 OSQEjCTeTvzH1MXIxSEksJBR4tfkzywgCTYBVYkN10+xgtgiAm4SX77PAmtgFoiQmPPhFFiNs
 ICjxPyOHUwgNgtQ/esdZ8DivAL2EqvfP2CBWCAncX3mdLAaTgEHidbPN8BsIaCaK4uWskxg5F
 7AyLCKUb04tagstUjXSC+pKDM9oyQ3MTNH19DATC83tbg4MT01JzGpWC85P3cTI9DPDECwg3H
 ZX6dDjJIcTEqivKqiveFCfEn5KZUZicUZ8UWlOanFhxhlODiUJHjbngPlBItS01Mr0jJzgAEH
 k5bg4FES4e0HSfMWFyTmFmemQ6ROMSpKifOGgiQEQBIZpXlwbbAgv8QoKyXMywh0iBBPQWpRb
 mYJqvwrRnEORiVhXleQKTyZeSVw018BLWYCWmyg2g2yuCQRISXVwCi4XFT+wF/1q+1h8c/yk3
 p6Izxl5Hbc7m2aKliw7KePXsasQzx3dyS3vlsppGGSVeLJL3b/7bGnXRarHuXpHgpOy/qp9qE
 q9HRTU+0fSy32x+5Re3817bzzL/mv6eZelg/nOI9phNb5K1hfOfdMZkO3+lLrl/JVi/xs1mS6
 /kx5cesxuxODrBJLcUaioRZzUXEiAJr2ezJtAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-4.tower-21.messagelabs.com!1468917870!18459189!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 53495 invoked from network); 19 Jul 2016 08:44:30 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-4.tower-21.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:30 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id E8804ADC4;
 Tue, 19 Jul 2016 08:44:29 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:20 +0200
Message-Id: <1468917865-12828-5-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 4/9] mini-os: add description of x86 memory
	usage
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIGEgYnJpZWYgZGVzY3JpcHRpb24gaG93IHRoZSBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRy
ZXNzIHVzYWdlCmxvb2tzIGxpa2Ugb24geDg2IHRvIGluY2x1ZGUveDg2L2FyY2hfbW0uaAoKU2ln
bmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KIGluY2x1ZGUv
eDg2L2FyY2hfbW0uaCB8IDIwICsrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwg
MjAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUveDg2L2FyY2hfbW0uaCBiL2lu
Y2x1ZGUveDg2L2FyY2hfbW0uaAppbmRleCA1OGYyOWZjLi5mNzU2ZGFiIDEwMDY0NAotLS0gYS9p
bmNsdWRlL3g4Ni9hcmNoX21tLmgKKysrIGIvaW5jbHVkZS94ODYvYXJjaF9tbS5oCkBAIC0zNiw2
ICszNiwyNiBAQAogI2VuZGlmCiAjZW5kaWYKIAorLyoKKyAqIFBoeXNpY2FsIGFkZHJlc3Mgc3Bh
Y2UgdXNhZ2U6CisgKgorICogMC4uLl9lZGF0YToga2VybmVsIHRleHQvZGF0YQorICogKnN0YWNr
ICAgIDoga2VybmVsIHN0YWNrICh0aHJlYWQgMCkKKyAqIGh5cGVydmlzb3IgYWxsb2NhdGVkIGRh
dGE6IHAybV9saXN0LCBzdGFydF9pbmZvIHBhZ2UsIHhlbnN0b3JlIHBhZ2UsCisgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zb2xlIHBhZ2UsIGluaXRpYWwgcGFnZSB0YWJsZXMKKyAq
IGJpdG1hcCBvZiBhbGxvY2F0ZWQgcGFnZXMKKyAqIHBhZ2VzIGNvbnRyb2xsZWQgYnkgdGhlIHBh
Z2UgYWxsb2NhdG9yCisgKgorICoKKyAqIFZpcnR1YWwgYWRkcmVzcyBzcGFjZSB1c2FnZToKKyAq
CisgKiAxOjEgbWFwcGluZyBvZiBwaHlzaWNhbCBtZW1vcnkgc3RhcnRpbmcgYXQgVkEoMCkKKyAq
IDEgdW5hbGxvY2F0ZWQgcGFnZQorICogZGVtYW5kIG1hcCBhcmVhICgzMiBiaXRzOiAyIEdCLCA2
NCBiaXRzOiAxMjggR0IpIGZvciB2aXJ0dWFsIGFsbG9jYXRpb25zCisgKiAxIHVuYWxsb2NhdGVk
IHBhZ2UKKyAqIHdpdGggbGliYzogaGVhcCBhcmVhICgzMiBiaXRzOiAxIEdCLCA2NCBiaXRzOiAx
MjggR0IpCisgKi8KKwogI2RlZmluZSBMMV9GUkFNRSAgICAgICAgICAgICAgICAxCiAjZGVmaW5l
IEwyX0ZSQU1FICAgICAgICAgICAgICAgIDIKICNkZWZpbmUgTDNfRlJBTUUgICAgICAgICAgICAg
ICAgMwotLSAKMi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdm-0008Li-5q; Tue, 19 Jul 2016 08:44:34 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdk-0008Hz-AD; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [193.109.254.147] by server-7.bemta-14.messagelabs.com id
 23/EA-09881-F68ED875; Tue, 19 Jul 2016 08:44:31 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRWlGSWpSXmKPExsVyuP0Ov27+i95
 wg40zuS3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZlx89JOl4C1rxd+Jz1gbGOexdDFy
 ckgIGEm8nfiPqYuRi0NIYCGjxNMLx9hBEmwCqhIbrp9iBbFFBNwkvnyfxQZiMwtESMz5cAqsW
 VggSGJJ522wGhag+p9/bjGB2LwC9hJ7znaxQSyQk7g+czpYnFPAQaL18w0wWwio5sqipSwTGL
 kXMDKsYtQoTi0qSy3SNTbQSyrKTM8oyU3MzNE1NDTRy00tLk5MT81JTCrWS87P3cQI9HQ9AwP
 jDsb9l/wOMUpyMCmJ8qqK9oYL8SXlp1RmJBZnxBeV5qQWH2KU4eBQkuBtew6UEyxKTU+tSMvM
 AYYcTFqCg0dJhLcfJM1bXJCYW5yZDpE6xajLseDH7bVMQix5+XmpUuK8oSBFAiBFGaV5cCNg4
 X+JUVZKmJeRgYFBiKcgtSg3swRV/hWjOAejkjCvK8gUnsy8ErhNr4COYAI6wkC1G+SIkkSElF
 QDo137uQhboeRVr7a9rZ8RNKlf6KJe1jXNA9I/+Xzi5pmULl19Nr/C1s69cfaxLs8jWSdyAtx
 euKm6xJ3Z4u5tOZ3fc2vSajuZhZdZoxr7/q7zMf59/PaqX5e/rLS91DuP+ezBDdW+RYt29jd8
 mHdmetpvW2W73ennTXezlJqn918O2bxTfM98RSWW4oxEQy3mouJEAB1ZM3l6AgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1468917870!49990446!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 34403 invoked from network); 19 Jul 2016 08:44:31 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-7.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:31 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id A126BADC9;
 Tue, 19 Jul 2016 08:44:30 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:22 +0200
Message-Id: <1468917865-12828-7-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 6/9] mini-os: let memory allocation fail if
	no free page available
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW5zdGVhZCBvZiBwYW5pY2luZyB3aGVuIG5vIHBhZ2UgY2FuIGJlIGFsbG9jYXRlZCB0cnkgdG8g
ZmFpbCB0aGUKbWVtb3J5IGFsbG9jYXRpb24gYnkgcmV0dXJuaW5nIE5VTEwgaW5zdGVhZC4KClNp
Z25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KLS0tCiBtbS5jIHwg
NSArKysrKwogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL21t
LmMgYi9tbS5jCmluZGV4IDI2M2EzNTYuLjE4NWE4YTUgMTAwNjQ0Ci0tLSBhL21tLmMKKysrIGIv
bW0uYwpAQCAtMzM1LDYgKzMzNSwxMSBAQCB2b2lkICpzYnJrKHB0cmRpZmZfdCBpbmNyZW1lbnQp
CiAgICAgCiAgICAgaWYgKG5ld19icmsgPiBoZWFwX21hcHBlZCkgewogICAgICAgICB1bnNpZ25l
ZCBsb25nIG4gPSAobmV3X2JyayAtIGhlYXBfbWFwcGVkICsgUEFHRV9TSVpFIC0gMSkgLyBQQUdF
X1NJWkU7CisgICAgICAgIGlmIChuID4gbnJfZnJlZV9wYWdlcykgeworICAgICAgICAgICAgcHJp
bnRrKCJNZW1vcnkgZXhoYXVzdGVkOiB3YW50ICVsZCBwYWdlcywgYnV0IG9ubHkgJWxkIGFyZSBs
ZWZ0XG4iLAorICAgICAgICAgICAgICAgICAgIG4sIG5yX2ZyZWVfcGFnZXMpOworICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZG9fbWFwX3plcm8oaGVhcF9tYXBw
ZWQsIG4pOwogICAgICAgICBoZWFwX21hcHBlZCArPSBuICogUEFHRV9TSVpFOwogICAgIH0KLS0g
CjIuNi42CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdm-0008Li-5q; Tue, 19 Jul 2016 08:44:34 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdk-0008Hz-AD; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [193.109.254.147] by server-7.bemta-14.messagelabs.com id
 23/EA-09881-F68ED875; Tue, 19 Jul 2016 08:44:31 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRWlGSWpSXmKPExsVyuP0Ov27+i95
 wg40zuS3efl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZlx89JOl4C1rxd+Jz1gbGOexdDFy
 ckgIGEm8nfiPqYuRi0NIYCGjxNMLx9hBEmwCqhIbrp9iBbFFBNwkvnyfxQZiMwtESMz5cAqsW
 VggSGJJ522wGhag+p9/bjGB2LwC9hJ7znaxQSyQk7g+czpYnFPAQaL18w0wWwio5sqipSwTGL
 kXMDKsYtQoTi0qSy3SNTbQSyrKTM8oyU3MzNE1NDTRy00tLk5MT81JTCrWS87P3cQI9HQ9AwP
 jDsb9l/wOMUpyMCmJ8qqK9oYL8SXlp1RmJBZnxBeV5qQWH2KU4eBQkuBtew6UEyxKTU+tSMvM
 AYYcTFqCg0dJhLcfJM1bXJCYW5yZDpE6xajLseDH7bVMQix5+XmpUuK8oSBFAiBFGaV5cCNg4
 X+JUVZKmJeRgYFBiKcgtSg3swRV/hWjOAejkjCvK8gUnsy8ErhNr4COYAI6wkC1G+SIkkSElF
 QDo137uQhboeRVr7a9rZ8RNKlf6KJe1jXNA9I/+Xzi5pmULl19Nr/C1s69cfaxLs8jWSdyAtx
 euKm6xJ3Z4u5tOZ3fc2vSajuZhZdZoxr7/q7zMf59/PaqX5e/rLS91DuP+ezBDdW+RYt29jd8
 mHdmetpvW2W73ennTXezlJqn918O2bxTfM98RSWW4oxEQy3mouJEAB1ZM3l6AgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-7.tower-27.messagelabs.com!1468917870!49990446!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 34403 invoked from network); 19 Jul 2016 08:44:31 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-7.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:31 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id A126BADC9;
 Tue, 19 Jul 2016 08:44:30 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:22 +0200
Message-Id: <1468917865-12828-7-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 6/9] mini-os: let memory allocation fail if
	no free page available
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW5zdGVhZCBvZiBwYW5pY2luZyB3aGVuIG5vIHBhZ2UgY2FuIGJlIGFsbG9jYXRlZCB0cnkgdG8g
ZmFpbCB0aGUKbWVtb3J5IGFsbG9jYXRpb24gYnkgcmV0dXJuaW5nIE5VTEwgaW5zdGVhZC4KClNp
Z25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KLS0tCiBtbS5jIHwg
NSArKysrKwogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL21t
LmMgYi9tbS5jCmluZGV4IDI2M2EzNTYuLjE4NWE4YTUgMTAwNjQ0Ci0tLSBhL21tLmMKKysrIGIv
bW0uYwpAQCAtMzM1LDYgKzMzNSwxMSBAQCB2b2lkICpzYnJrKHB0cmRpZmZfdCBpbmNyZW1lbnQp
CiAgICAgCiAgICAgaWYgKG5ld19icmsgPiBoZWFwX21hcHBlZCkgewogICAgICAgICB1bnNpZ25l
ZCBsb25nIG4gPSAobmV3X2JyayAtIGhlYXBfbWFwcGVkICsgUEFHRV9TSVpFIC0gMSkgLyBQQUdF
X1NJWkU7CisgICAgICAgIGlmIChuID4gbnJfZnJlZV9wYWdlcykgeworICAgICAgICAgICAgcHJp
bnRrKCJNZW1vcnkgZXhoYXVzdGVkOiB3YW50ICVsZCBwYWdlcywgYnV0IG9ubHkgJWxkIGFyZSBs
ZWZ0XG4iLAorICAgICAgICAgICAgICAgICAgIG4sIG5yX2ZyZWVfcGFnZXMpOworICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZG9fbWFwX3plcm8oaGVhcF9tYXBw
ZWQsIG4pOwogICAgICAgICBoZWFwX21hcHBlZCArPSBuICogUEFHRV9TSVpFOwogICAgIH0KLS0g
CjIuNi42CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdm-0008Ol-OS; Tue, 19 Jul 2016 08:44:34 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdk-0008IK-OK; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [85.158.139.211] by server-1.bemta-5.messagelabs.com id
 93/3B-19721-F68ED875; Tue, 19 Jul 2016 08:44:31 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRWlGSWpSXmKPExsVyuP0Ov27+i95
 wg1sLFCzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZnS9+8Be0MZW8Wj9BMYGxpmsXYyc
 HBICRhJvJ/5j6mLk4hASWMgoMXXXCjaQBJuAqsSG66fAikQE3CS+fJ8FFmcWiJCY8+EUC4gtL
 GAh8fr3UyYQmwWovvvFPkYQm1fAXuJs43kWiAVyEtdnTger4RRwkGj9fAPMFgKqubJoKcsERu
 4FjAyrGDWKU4vKUot0jcz1kooy0zNKchMzc3QNDUz1clOLixPTU3MSk4r1kvNzNzECPV3PwMC
 4g/HqFr9DjJIcTEqivKqiveFCfEn5KZUZicUZ8UWlOanFhxhlODiUJHjbngPlBItS01Mr0jJz
 gCEHk5bg4FES4e0HSfMWFyTmFmemQ6ROMepyLPhxey2TEEtefl6qlDhvKEiRAEhRRmke3AhY+
 F9ilJUS5mVkYGAQ4ilILcrNLEGVf8UozsGoJMzbDjKFJzOvBG7TK6AjmICOMFDtBjmiJBEhJd
 XAKL7sRSaXQdY320kqt7k7qucUJ4tLX6lY3r3vybT6Hz8++JbX1Tr/XbHglPAuJs5vczbmJez
 NUZsgaBwruMLS6tMOX+OoTb92uOq2PtbkeSbVOq/+iWzrxI2Trsw+GCyrb7/Gif2+lkXGW63f
 n7hi2qKiD1wQ6XY5yTE/0/yhX7rB/27u5Un2SizFGYmGWsxFxYkA9U6B6noCAAA=
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-12.tower-206.messagelabs.com!1468917871!13925674!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 39639 invoked from network); 19 Jul 2016 08:44:31 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-12.tower-206.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:31 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 05F46ADCF;
 Tue, 19 Jul 2016 08:44:31 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:23 +0200
Message-Id: <1468917865-12828-8-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 7/9] mini-os: add ballooning config item
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIENPTkZJR19CQUxMT09OIGRlZmF1bHRpbmcgdG8gJ24nIGFzIGEgY29uZmlnIGl0ZW0gdG8g
TWluaS1PUy4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4K
LS0tCiBNYWtlZmlsZSB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRp
ZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDJlNGJkYmEuLjYxZDk2MGMgMTAw
NjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0zMyw2ICszMyw3IEBAIENPTkZJ
R19DT05TRlJPTlQgPz0geQogQ09ORklHX1hFTkJVUyA/PSB5CiBDT05GSUdfWEMgPz15CiBDT05G
SUdfTFdJUCA/PSAkKGx3aXApCitDT05GSUdfQkFMTE9PTiA/PSBuCiAKICMgRXhwb3J0IGNvbmZp
ZyBpdGVtcyBhcyBjb21waWxlciBkaXJlY3RpdmVzCiBmbGFncy0kKENPTkZJR19TVEFSVF9ORVRX
T1JLKSArPSAtRENPTkZJR19TVEFSVF9ORVRXT1JLCkBAIC00OCw2ICs0OSw3IEBAIGZsYWdzLSQo
Q09ORklHX0tCREZST05UKSArPSAtRENPTkZJR19LQkRGUk9OVAogZmxhZ3MtJChDT05GSUdfRkJG
Uk9OVCkgKz0gLURDT05GSUdfRkJGUk9OVAogZmxhZ3MtJChDT05GSUdfQ09OU0ZST05UKSArPSAt
RENPTkZJR19DT05TRlJPTlQKIGZsYWdzLSQoQ09ORklHX1hFTkJVUykgKz0gLURDT05GSUdfWEVO
QlVTCitmbGFncy0kKENPTkZJR19CQUxMT09OKSArPSAtRENPTkZJR19CQUxMT09OCiAKIERFRl9D
RkxBR1MgKz0gJChmbGFncy15KQogCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
Y2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:34 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdm-0008Ol-OS; Tue, 19 Jul 2016 08:44:34 +0000
Received: from mail6.bemta5.messagelabs.com ([195.245.231.135])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdk-0008IK-OK; Tue, 19 Jul 2016 08:44:32 +0000
Received: from [85.158.139.211] by server-1.bemta-5.messagelabs.com id
 93/3B-19721-F68ED875; Tue, 19 Jul 2016 08:44:31 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRWlGSWpSXmKPExsVyuP0Ov27+i95
 wg1sLFCzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZnS9+8Be0MZW8Wj9BMYGxpmsXYyc
 HBICRhJvJ/5j6mLk4hASWMgoMXXXCjaQBJuAqsSG66fAikQE3CS+fJ8FFmcWiJCY8+EUC4gtL
 GAh8fr3UyYQmwWovvvFPkYQm1fAXuJs43kWiAVyEtdnTger4RRwkGj9fAPMFgKqubJoKcsERu
 4FjAyrGDWKU4vKUot0jcz1kooy0zNKchMzc3QNDUz1clOLixPTU3MSk4r1kvNzNzECPV3PwMC
 4g/HqFr9DjJIcTEqivKqiveFCfEn5KZUZicUZ8UWlOanFhxhlODiUJHjbngPlBItS01Mr0jJz
 gCEHk5bg4FES4e0HSfMWFyTmFmemQ6ROMepyLPhxey2TEEtefl6qlDhvKEiRAEhRRmke3AhY+
 F9ilJUS5mVkYGAQ4ilILcrNLEGVf8UozsGoJMzbDjKFJzOvBG7TK6AjmICOMFDtBjmiJBEhJd
 XAKL7sRSaXQdY320kqt7k7qucUJ4tLX6lY3r3vybT6Hz8++JbX1Tr/XbHglPAuJs5vczbmJez
 NUZsgaBwruMLS6tMOX+OoTb92uOq2PtbkeSbVOq/+iWzrxI2Trsw+GCyrb7/Gif2+lkXGW63f
 n7hi2qKiD1wQ6XY5yTE/0/yhX7rB/27u5Un2SizFGYmGWsxFxYkA9U6B6noCAAA=
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-12.tower-206.messagelabs.com!1468917871!13925674!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=UPPERCASE_25_50
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 39639 invoked from network); 19 Jul 2016 08:44:31 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-12.tower-206.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:31 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 05F46ADCF;
 Tue, 19 Jul 2016 08:44:31 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:23 +0200
Message-Id: <1468917865-12828-8-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 7/9] mini-os: add ballooning config item
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIENPTkZJR19CQUxMT09OIGRlZmF1bHRpbmcgdG8gJ24nIGFzIGEgY29uZmlnIGl0ZW0gdG8g
TWluaS1PUy4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4K
LS0tCiBNYWtlZmlsZSB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRp
ZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDJlNGJkYmEuLjYxZDk2MGMgMTAw
NjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0zMyw2ICszMyw3IEBAIENPTkZJ
R19DT05TRlJPTlQgPz0geQogQ09ORklHX1hFTkJVUyA/PSB5CiBDT05GSUdfWEMgPz15CiBDT05G
SUdfTFdJUCA/PSAkKGx3aXApCitDT05GSUdfQkFMTE9PTiA/PSBuCiAKICMgRXhwb3J0IGNvbmZp
ZyBpdGVtcyBhcyBjb21waWxlciBkaXJlY3RpdmVzCiBmbGFncy0kKENPTkZJR19TVEFSVF9ORVRX
T1JLKSArPSAtRENPTkZJR19TVEFSVF9ORVRXT1JLCkBAIC00OCw2ICs0OSw3IEBAIGZsYWdzLSQo
Q09ORklHX0tCREZST05UKSArPSAtRENPTkZJR19LQkRGUk9OVAogZmxhZ3MtJChDT05GSUdfRkJG
Uk9OVCkgKz0gLURDT05GSUdfRkJGUk9OVAogZmxhZ3MtJChDT05GSUdfQ09OU0ZST05UKSArPSAt
RENPTkZJR19DT05TRlJPTlQKIGZsYWdzLSQoQ09ORklHX1hFTkJVUykgKz0gLURDT05GSUdfWEVO
QlVTCitmbGFncy0kKENPTkZJR19CQUxMT09OKSArPSAtRENPTkZJR19CQUxMT09OCiAKIERFRl9D
RkxBR1MgKz0gJChmbGFncy15KQogCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
Y2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:35 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdn-0008Ps-0r; Tue, 19 Jul 2016 08:44:35 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdl-0008IQ-0r; Tue, 19 Jul 2016 08:44:33 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
 5A/AB-15788-078ED875; Tue, 19 Jul 2016 08:44:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRWlGSWpSXmKPExsVyuP0Ov27+i95
 wg6bNGhZvvy5htvi+ZTKTA5PH4Q9XWAIYo1gz85LyKxJYM16vuc1c8Jyn4mLHN6YGxs1cXYyc
 HBICRhJvJ/5j6mLk4hASWMgose7JZBaQBJuAqsSG66dYQWwRATeJL99nsYHYzAIREnM+nAKrE
 RZwlbj36zeYzQJUv/frOWYQm1fAXuLtxWXsEAvkJK7PnM4EYnMKOEi0fr4BZgsB1VxZtJRlAi
 P3AkaGVYwaxalFZalFuoYmeklFmekZJbmJmTm6hgbGermpxcWJ6ak5iUnFesn5uZsYgZ5mAII
 djCu2ex5ilORgUhLlVRXtDRfiS8pPqcxILM6ILyrNSS0+xCjDwaEkwdv2HCgnWJSanlqRlpkD
 DDmYtAQHj5IIbz9Imre4IDG3ODMdInWKUVFKnDcUJCEAksgozYNrg4X5JUZZKWFeRqBDhHgKU
 otyM0tQ5V8xinMwKgnztoNM4cnMK4Gb/gpoMRPQYgPVbpDFJYkIKakGxpmC1SelfPrjrx2LLO
 ZSkUl8vDSN0SNX0OfNwuavLJckJ8Y+aj23iMcuOO2wxMabc9L+9WizXWJdmf6CIa4zW6ZO9U5
 pP4cZ+0HO/TM5X8TMYLL6MevUi4d6zzaW3TyrWRF3SE+ycK7tLVbVQwZWq1+/Lg1N8rEU4U54
 7y9owMG3a298uLGNEktxRqKhFnNRcSIAcSamqW4CAAA=
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-16.tower-31.messagelabs.com!1468917871!43696807!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 64227 invoked from network); 19 Jul 2016 08:44:31 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-16.tower-31.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:31 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 5DDBDADD0;
 Tue, 19 Jul 2016 08:44:31 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:24 +0200
Message-Id: <1468917865-12828-9-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 8/9] mini-os: get maximum memory size from
	hypervisor
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIHN1cHBvcnQgZm9yIG9idGFpbmluZyB0aGUgbWF4aW11bSBtZW1vcnkgc2l6ZSBmcm9tIHRo
ZSBoeXBlcnZpc29yLgpUaGlzIHdpbGwgbWFrZSBpdCBwb3NzaWJsZSB0byBzdXBwb3J0IGJhbGxv
b25pbmcuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0t
LQogaW5jbHVkZS9tbS5oIHwgIDEgKwogbW0uYyAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysr
KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv
aW5jbHVkZS9tbS5oIGIvaW5jbHVkZS9tbS5oCmluZGV4IGI5N2I0M2UuLjE2MTQ4M2YgMTAwNjQ0
Ci0tLSBhL2luY2x1ZGUvbW0uaAorKysgYi9pbmNsdWRlL21tLmgKQEAgLTQzLDYgKzQzLDcgQEAK
ICNkZWZpbmUgU1RBQ0tfU0laRSBfX1NUQUNLX1NJWkUKIAogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
bnJfZnJlZV9wYWdlczsKK2V4dGVybiB1bnNpZ25lZCBsb25nIG5yX21heF9wYWdlczsKIAogdm9p
ZCBpbml0X21tKHZvaWQpOwogdW5zaWduZWQgbG9uZyBhbGxvY19wYWdlcyhpbnQgb3JkZXIpOwpk
aWZmIC0tZ2l0IGEvbW0uYyBiL21tLmMKaW5kZXggMTg1YThhNS4uZDRhOGYxZSAxMDA2NDQKLS0t
IGEvbW0uYworKysgYi9tbS5jCkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25n
ICphbGxvY19iaXRtYXA7CiAoYWxsb2NfYml0bWFwWyhfcG4pL1BBR0VTX1BFUl9NQVBXT1JEXSAm
ICgxVUw8PCgoX3BuKSYoUEFHRVNfUEVSX01BUFdPUkQtMSkpKSkKIAogdW5zaWduZWQgbG9uZyBu
cl9mcmVlX3BhZ2VzOwordW5zaWduZWQgbG9uZyBucl9tYXhfcGFnZXM7CiAKIC8qCiAgKiBIaW50
IHJlZ2FyZGluZyBiaXR3aXNlIGFyaXRobWV0aWMgaW4gbWFwX3thbGxvYyxmcmVlfToKQEAgLTM1
MCw3ICszNTEsMjcgQEAgdm9pZCAqc2JyayhwdHJkaWZmX3QgaW5jcmVtZW50KQogfQogI2VuZGlm
CiAKKyNpZmRlZiBDT05GSUdfQkFMTE9PTgorc3RhdGljIHZvaWQgZ2V0X21heF9wYWdlcyh2b2lk
KQoreworICAgIGxvbmcgcmV0OworICAgIGRvbWlkX3QgZG9taWQgPSBET01JRF9TRUxGOwogCisg
ICAgcmV0ID0gSFlQRVJWSVNPUl9tZW1vcnlfb3AoWEVOTUVNX21heGltdW1fcmVzZXJ2YXRpb24s
ICZkb21pZCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcHJpbnRrKCJDb3VsZCBub3Qg
Z2V0IG1heGltdW0gcGZuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG5yX21h
eF9wYWdlcyA9IHJldDsKKyAgICBwcmludGsoIk1heGltdW0gbWVtb3J5IHNpemU6ICVsZCBwYWdl
c1xuIiwgbnJfbWF4X3BhZ2VzKTsKK30KKyNlbHNlCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRf
bWF4X3BhZ2VzKHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKIAogdm9pZCBpbml0
X21tKHZvaWQpCiB7CkBAIC0zNTksNiArMzgwLDcgQEAgdm9pZCBpbml0X21tKHZvaWQpCiAKICAg
ICBwcmludGsoIk1NOiBJbml0XG4iKTsKIAorICAgIGdldF9tYXhfcGFnZXMoKTsKICAgICBhcmNo
X2luaXRfbW0oJnN0YXJ0X3BmbiwgJm1heF9wZm4pOwogICAgIC8qCiAgICAgICogbm93IHdlIGNh
biBpbml0aWFsaXNlIHRoZSBwYWdlIGFsbG9jYXRvcgotLSAKMi42LjYKCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:35 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdn-0008Ps-0r; Tue, 19 Jul 2016 08:44:35 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdl-0008IQ-0r; Tue, 19 Jul 2016 08:44:33 +0000
Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id
 5A/AB-15788-078ED875; Tue, 19 Jul 2016 08:44:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRWlGSWpSXmKPExsVyuP0Ov27+i95
 wg6bNGhZvvy5htvi+ZTKTA5PH4Q9XWAIYo1gz85LyKxJYM16vuc1c8Jyn4mLHN6YGxs1cXYyc
 HBICRhJvJ/5j6mLk4hASWMgose7JZBaQBJuAqsSG66dYQWwRATeJL99nsYHYzAIREnM+nAKrE
 RZwlbj36zeYzQJUv/frOWYQm1fAXuLtxWXsEAvkJK7PnM4EYnMKOEi0fr4BZgsB1VxZtJRlAi
 P3AkaGVYwaxalFZalFuoYmeklFmekZJbmJmTm6hgbGermpxcWJ6ak5iUnFesn5uZsYgZ5mAII
 djCu2ex5ilORgUhLlVRXtDRfiS8pPqcxILM6ILyrNSS0+xCjDwaEkwdv2HCgnWJSanlqRlpkD
 DDmYtAQHj5IIbz9Imre4IDG3ODMdInWKUVFKnDcUJCEAksgozYNrg4X5JUZZKWFeRqBDhHgKU
 otyM0tQ5V8xinMwKgnztoNM4cnMK4Gb/gpoMRPQYgPVbpDFJYkIKakGxpmC1SelfPrjrx2LLO
 ZSkUl8vDSN0SNX0OfNwuavLJckJ8Y+aj23iMcuOO2wxMabc9L+9WizXWJdmf6CIa4zW6ZO9U5
 pP4cZ+0HO/TM5X8TMYLL6MevUi4d6zzaW3TyrWRF3SE+ycK7tLVbVQwZWq1+/Lg1N8rEU4U54
 7y9owMG3a298uLGNEktxRqKhFnNRcSIAcSamqW4CAAA=
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-16.tower-31.messagelabs.com!1468917871!43696807!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 64227 invoked from network); 19 Jul 2016 08:44:31 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-16.tower-31.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:31 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 5DDBDADD0;
 Tue, 19 Jul 2016 08:44:31 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:24 +0200
Message-Id: <1468917865-12828-9-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 8/9] mini-os: get maximum memory size from
	hypervisor
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIHN1cHBvcnQgZm9yIG9idGFpbmluZyB0aGUgbWF4aW11bSBtZW1vcnkgc2l6ZSBmcm9tIHRo
ZSBoeXBlcnZpc29yLgpUaGlzIHdpbGwgbWFrZSBpdCBwb3NzaWJsZSB0byBzdXBwb3J0IGJhbGxv
b25pbmcuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0t
LQogaW5jbHVkZS9tbS5oIHwgIDEgKwogbW0uYyAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysr
KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv
aW5jbHVkZS9tbS5oIGIvaW5jbHVkZS9tbS5oCmluZGV4IGI5N2I0M2UuLjE2MTQ4M2YgMTAwNjQ0
Ci0tLSBhL2luY2x1ZGUvbW0uaAorKysgYi9pbmNsdWRlL21tLmgKQEAgLTQzLDYgKzQzLDcgQEAK
ICNkZWZpbmUgU1RBQ0tfU0laRSBfX1NUQUNLX1NJWkUKIAogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
bnJfZnJlZV9wYWdlczsKK2V4dGVybiB1bnNpZ25lZCBsb25nIG5yX21heF9wYWdlczsKIAogdm9p
ZCBpbml0X21tKHZvaWQpOwogdW5zaWduZWQgbG9uZyBhbGxvY19wYWdlcyhpbnQgb3JkZXIpOwpk
aWZmIC0tZ2l0IGEvbW0uYyBiL21tLmMKaW5kZXggMTg1YThhNS4uZDRhOGYxZSAxMDA2NDQKLS0t
IGEvbW0uYworKysgYi9tbS5jCkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25n
ICphbGxvY19iaXRtYXA7CiAoYWxsb2NfYml0bWFwWyhfcG4pL1BBR0VTX1BFUl9NQVBXT1JEXSAm
ICgxVUw8PCgoX3BuKSYoUEFHRVNfUEVSX01BUFdPUkQtMSkpKSkKIAogdW5zaWduZWQgbG9uZyBu
cl9mcmVlX3BhZ2VzOwordW5zaWduZWQgbG9uZyBucl9tYXhfcGFnZXM7CiAKIC8qCiAgKiBIaW50
IHJlZ2FyZGluZyBiaXR3aXNlIGFyaXRobWV0aWMgaW4gbWFwX3thbGxvYyxmcmVlfToKQEAgLTM1
MCw3ICszNTEsMjcgQEAgdm9pZCAqc2JyayhwdHJkaWZmX3QgaW5jcmVtZW50KQogfQogI2VuZGlm
CiAKKyNpZmRlZiBDT05GSUdfQkFMTE9PTgorc3RhdGljIHZvaWQgZ2V0X21heF9wYWdlcyh2b2lk
KQoreworICAgIGxvbmcgcmV0OworICAgIGRvbWlkX3QgZG9taWQgPSBET01JRF9TRUxGOwogCisg
ICAgcmV0ID0gSFlQRVJWSVNPUl9tZW1vcnlfb3AoWEVOTUVNX21heGltdW1fcmVzZXJ2YXRpb24s
ICZkb21pZCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcHJpbnRrKCJDb3VsZCBub3Qg
Z2V0IG1heGltdW0gcGZuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG5yX21h
eF9wYWdlcyA9IHJldDsKKyAgICBwcmludGsoIk1heGltdW0gbWVtb3J5IHNpemU6ICVsZCBwYWdl
c1xuIiwgbnJfbWF4X3BhZ2VzKTsKK30KKyNlbHNlCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRf
bWF4X3BhZ2VzKHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKIAogdm9pZCBpbml0
X21tKHZvaWQpCiB7CkBAIC0zNTksNiArMzgwLDcgQEAgdm9pZCBpbml0X21tKHZvaWQpCiAKICAg
ICBwcmludGsoIk1NOiBJbml0XG4iKTsKIAorICAgIGdldF9tYXhfcGFnZXMoKTsKICAgICBhcmNo
X2luaXRfbW0oJnN0YXJ0X3BmbiwgJm1heF9wZm4pOwogICAgIC8qCiAgICAgICogbm93IHdlIGNh
biBpbml0aWFsaXNlIHRoZSBwYWdlIGFsbG9jYXRvcgotLSAKMi42LjYKCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:35 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdn-0008RN-BJ; Tue, 19 Jul 2016 08:44:35 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdl-0008Hj-7Z; Tue, 19 Jul 2016 08:44:33 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
 A1/7F-30629-078ED875; Tue, 19 Jul 2016 08:44:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov27Bi95
 wg8WzBSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZtx8dpy1YLNxRfOZn2wNjNs1uhg5
 OSQEjCTeTvzH1MXIxSEksJBRYs6aViaQBJuAqsSG66dYQWwRATeJL99nsYHYzAIREnM+nGIBs
 YUFQiT2HFkFVsMCVN97ZBVzFyMHB6+Ag8Sjj0IQ8+Ukrs+cDjaSEyjc+vkGmC0kYC9xZdFSlg
 mM3AsYGVYxahSnFpWlFukaWuglFWWmZ5TkJmbm6BoamujlphYXJ6an5iQmFesl5+duYgT6uZ6
 BgXEH45HtnocYJTmYlER5VUV7w4X4kvJTKjMSizPii0pzUosPMcpwcChJ8C54BpQTLEpNT61I
 y8wBBhxMWoKDR0mEdy5Imre4IDG3ODMdInWKUVFKnPc6SEIAJJFRmgfXBgvyS4yyUsK8jAwMD
 EI8BalFuZklqPKvGMU5GJWEeTmeA03hycwrgZv+CmgxE9BiA9VukMUliQgpqQbG6V65V92Urt
 dGfrX8se/cvqTfd15p7T+0fMVt51651gcf/fTSZ/+X+hJ2dJ0Oa6XetN6Oa885tR4li3fMz5+
 z81TMIUftKSF+ysVHTeU/dCfmHHPvOCd6lSOolHWv5CmrtE+rJ6+eLn9+rab6wQoH4f1Fh3gX
 3Db2r97yIuBfweIW08YVDvNllViKMxINtZiLihMBVZ53oG0CAAA=
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1468917871!53719417!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 49102 invoked from network); 19 Jul 2016 08:44:32 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-12.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:32 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id B7FBCADC1;
 Tue, 19 Jul 2016 08:44:31 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:25 +0200
Message-Id: <1468917865-12828-10-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 9/9] mini-os: modify virtual memory layout
	for support of ballooning
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW4gb3JkZXIgdG8gYmUgYWJsZSB0byBzdXBwb3J0IGJhbGxvb25pbmcgdGhlIHZpcnR1YWwgbWVt
b3J5IGxheW91dApvZiBNaW5pLU9TIGhhcyB0byBiZSBtb2RpZmllZDogaW5zdGVhZCBvZiBhIChu
ZWFybHkpIGNvbnNlY3V0aXZlCmFyZWEgdXNlZCBmb3IgcGh5c2ljYWwgbWVtb3J5IG1hcHBpbmcs
IG9uIGRlbWFuZCBtYXBwaW5ncywgYW5kIGhlYXAKd2UgbmVlZCBlbm91Z2ggc3BhcmUgcGxhY2Ug
Zm9yIGFkZGluZyBuZXcgbWVtb3J5LgoKU28gaW5zdGVhZCBvZiBkeW5hbWljYWxseSBwbGFjZSB0
aGUgZGlmZmVyZW50IHJlZ2lvbnMgYmFzZWQgb24gZm91bmQKbWVtb3J5IHNpemUgbG9jYXRlIHRo
ZW0gc3RhdGljYWxseSBhdCBmaXhlZCB2aXJ0dWFsIGFkZHJlc3NlczoKCmFyZWEgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4ODYtNjQgICAgICAgICAgICAgICB4ODYtMzIKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm1hcHBlZCBw
aHlzaWNhbCBtZW1vcnkgICAgICAgMDAwMDAwMDAgICAgICAgICAgICAgMDAwMDAwMDAKa2VybmVs
IHZpcnR1YWwgbWFwcGluZ3MgICAgODAwMDAwMDAwMCAgICAgICAgICAgICAzZjAwMDAwMApkZW1h
bmQgbWFwcGluZ3MgICAgICAgICAgMTAwMDAwMDAwMDAwICAgICAgICAgICAgIDQwMDAwMDAwCmhl
YXAgICAgICAgICAgICAgICAgICAgICAyMDAwMDAwMDAwMDAgICAgICAgICAgICAgYzAwMDAwMDAK
ClRoaXMgd2lsbCBlbmFibGUgTWluaS1PUyB0byBzdXBwb3J0IHVwIHRvIDUxMkdCIG9mIGRvbWFp
biBtZW1vcnkgd2l0aAphIDY0IGJpdCBrZXJuZWwgYW5kIG5lYXJseSAxR0Igd2l0aCBhIDMyIGJp
dCBrZXJuZWwuCgpUaGUga2VybmVsIHZpcnR1YWwgbWFwcGluZ3MgYXJlIGEgbmV3IGFyZWEgbmVl
ZGVkIGZvciBiZWluZyBhYmxlIHRvCmdyb3cgdGhlIHAybSBsaXN0IHdpdGhvdXQgaGF2aW5nIHRv
IHJlbG9jYXRlIGl0IGluIHBoeXNpY2FsIG1lbW9yeS4KCk1vZGlmeSB0aGUgcGxhY2VtZW50IG9m
IHRoZSBkZW1hbmQgbWFwcGluZ3MgYW5kIGhlYXAgYW5kIGFkanVzdCB0aGUKbWVtb3J5IGxheW91
dCBkZXNjcmlwdGlvbi4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNl
LmNvbT4KLS0tCiBhcmNoL2FybS9tbS5jICAgICAgICAgfCAgMiArLQogYXJjaC94ODYvbW0uYyAg
ICAgICAgIHwgNDQgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IGluY2x1ZGUvbW0uaCAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL3g4Ni9hcmNoX21tLmggfCAz
NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBtbS5jICAgICAgICAgICAgICAg
ICAgfCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS5jIGIvYXJjaC9hcm0vbW0uYwppbmRleCBl
ZmVjYzUxLi5mNzU4ODhkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS5jCisrKyBiL2FyY2gvYXJt
L21tLmMKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBhcmNoX2luaXRfcDJtKHVuc2lnbmVkIGxvbmcg
bWF4X3BmbikKIHsKIH0KIAotdm9pZCBhcmNoX2luaXRfZGVtYW5kX21hcHBpbmdfYXJlYSh1bnNp
Z25lZCBsb25nIGN1cl9wZm4pCit2b2lkIGFyY2hfaW5pdF9kZW1hbmRfbWFwcGluZ19hcmVhKHZv
aWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tLmMgYi9hcmNoL3g4Ni9tbS5jCmlu
ZGV4IGM1OWE1ZDMuLjA4ODU4M2UgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tLmMKKysrIGIvYXJj
aC94ODYvbW0uYwpAQCAtNDQyLDM3ICs0NDIsMjEgQEAgcGdlbnRyeV90ICpuZWVkX3BndCh1bnNp
Z25lZCBsb25nIHZhKQogICogUmVzZXJ2ZSBhbiBhcmVhIG9mIHZpcnR1YWwgYWRkcmVzcyBzcGFj
ZSBmb3IgbWFwcGluZ3MgYW5kIEhlYXAKICAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgZGVtYW5k
X21hcF9hcmVhX3N0YXJ0OwotI2lmZGVmIF9feDg2XzY0X18KLSNkZWZpbmUgREVNQU5EX01BUF9Q
QUdFUyAoKDEyOFVMTCA8PCAzMCkgLyBQQUdFX1NJWkUpCi0jZWxzZQotI2RlZmluZSBERU1BTkRf
TUFQX1BBR0VTICgoMlVMTCA8PCAzMCkgLyBQQUdFX1NJWkUpCi0jZW5kaWYKLQotI2lmbmRlZiBI
QVZFX0xJQkMKLSNkZWZpbmUgSEVBUF9QQUdFUyAwCi0jZWxzZQorc3RhdGljIHVuc2lnbmVkIGxv
bmcgZGVtYW5kX21hcF9hcmVhX2VuZDsKKyNpZmRlZiBIQVZFX0xJQkMKIHVuc2lnbmVkIGxvbmcg
aGVhcCwgYnJrLCBoZWFwX21hcHBlZCwgaGVhcF9lbmQ7Ci0jaWZkZWYgX194ODZfNjRfXwotI2Rl
ZmluZSBIRUFQX1BBR0VTICgoMTI4VUxMIDw8IDMwKSAvIFBBR0VfU0laRSkKLSNlbHNlCi0jZGVm
aW5lIEhFQVBfUEFHRVMgKCgxVUxMIDw8IDMwKSAvIFBBR0VfU0laRSkKLSNlbmRpZgogI2VuZGlm
CiAKLXZvaWQgYXJjaF9pbml0X2RlbWFuZF9tYXBwaW5nX2FyZWEodW5zaWduZWQgbG9uZyBjdXJf
cGZuKQordm9pZCBhcmNoX2luaXRfZGVtYW5kX21hcHBpbmdfYXJlYSh2b2lkKQogewotICAgIGN1
cl9wZm4rKzsKLQotICAgIGRlbWFuZF9tYXBfYXJlYV9zdGFydCA9ICh1bnNpZ25lZCBsb25nKSBw
Zm5fdG9fdmlydChjdXJfcGZuKTsKLSAgICBjdXJfcGZuICs9IERFTUFORF9NQVBfUEFHRVM7Ci0g
ICAgcHJpbnRrKCJEZW1hbmQgbWFwIHBmbnMgYXQgJWx4LSVwLlxuIiwgCi0gICAgICAgICAgIGRl
bWFuZF9tYXBfYXJlYV9zdGFydCwgcGZuX3RvX3ZpcnQoY3VyX3BmbikpOworICAgIGRlbWFuZF9t
YXBfYXJlYV9zdGFydCA9IFZJUlRfREVNQU5EX0FSRUE7CisgICAgZGVtYW5kX21hcF9hcmVhX2Vu
ZCA9IGRlbWFuZF9tYXBfYXJlYV9zdGFydCArIERFTUFORF9NQVBfUEFHRVMgKiBQQUdFX1NJWkU7
CisgICAgcHJpbnRrKCJEZW1hbmQgbWFwIHBmbnMgYXQgJWx4LSVseC5cbiIsIGRlbWFuZF9tYXBf
YXJlYV9zdGFydCwKKyAgICAgICAgICAgZGVtYW5kX21hcF9hcmVhX2VuZCk7CiAKICNpZmRlZiBI
QVZFX0xJQkMKLSAgICBjdXJfcGZuKys7Ci0gICAgaGVhcF9tYXBwZWQgPSBicmsgPSBoZWFwID0g
KHVuc2lnbmVkIGxvbmcpIHBmbl90b192aXJ0KGN1cl9wZm4pOwotICAgIGN1cl9wZm4gKz0gSEVB
UF9QQUdFUzsKLSAgICBoZWFwX2VuZCA9ICh1bnNpZ25lZCBsb25nKSBwZm5fdG9fdmlydChjdXJf
cGZuKTsKKyAgICBoZWFwX21hcHBlZCA9IGJyayA9IGhlYXAgPSBWSVJUX0hFQVBfQVJFQTsKKyAg
ICBoZWFwX2VuZCA9IGhlYXBfbWFwcGVkICsgSEVBUF9QQUdFUyAqIFBBR0VfU0laRTsKICAgICBw
cmludGsoIkhlYXAgcmVzaWRlcyBhdCAlbHgtJWx4LlxuIiwgYnJrLCBoZWFwX2VuZCk7CiAjZW5k
aWYKIH0KQEAgLTcyOSwxNCArNzEzLDggQEAgdm9pZCBhcmNoX2luaXRfbW0odW5zaWduZWQgbG9u
Zyogc3RhcnRfcGZuX3AsIHVuc2lnbmVkIGxvbmcqIG1heF9wZm5fcCkKICAgICBzdGFydF9wZm4g
PSBQRk5fVVAodG9fcGh5cyhzdGFydF9pbmZvLnB0X2Jhc2UpKSArIHN0YXJ0X2luZm8ubnJfcHRf
ZnJhbWVzOwogICAgIG1heF9wZm4gPSBzdGFydF9pbmZvLm5yX3BhZ2VzOwogCi0gICAgLyogV2Ug
bmVlZCByb29tIGZvciBkZW1hbmQgbWFwcGluZyBhbmQgaGVhcCwgY2xpcCBhdmFpbGFibGUgbWVt
b3J5ICovCi0jaWYgZGVmaW5lZChfX2kzODZfXykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxv
bmcgdmlydF9wZm5zID0gMSArIERFTUFORF9NQVBfUEFHRVMgKyAxICsgSEVBUF9QQUdFUzsKLSAg
ICAgICAgaWYgKG1heF9wZm4gKyB2aXJ0X3BmbnMgPj0gMHgxMDAwMDApCi0gICAgICAgICAgICBt
YXhfcGZuID0gMHgxMDAwMDAgLSB2aXJ0X3BmbnMgLSAxOwotICAgIH0KLSNlbmRpZgorICAgIGlm
IChtYXhfcGZuID49IE1BWF9NRU1fU0laRSAvIFBBR0VfU0laRSkKKyAgICAgICAgbWF4X3BmbiA9
IE1BWF9NRU1fU0laRSAvIFBBR0VfU0laRSAtIDE7CiAKICAgICBwcmludGsoIiAgc3RhcnRfcGZu
OiAlbHhcbiIsIHN0YXJ0X3Bmbik7CiAgICAgcHJpbnRrKCIgICAgbWF4X3BmbjogJWx4XG4iLCBt
YXhfcGZuKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbW0uaCBiL2luY2x1ZGUvbW0uaAppbmRleCAx
NjE0ODNmLi4xNTVlYTY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL21tLmgKKysrIGIvaW5jbHVkZS9t
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfb3JkZXIodW5z
aWduZWQgbG9uZyBzaXplKQogICAgIHJldHVybiBvcmRlcjsKIH0KIAotdm9pZCBhcmNoX2luaXRf
ZGVtYW5kX21hcHBpbmdfYXJlYSh1bnNpZ25lZCBsb25nIG1heF9wZm4pOwordm9pZCBhcmNoX2lu
aXRfZGVtYW5kX21hcHBpbmdfYXJlYSh2b2lkKTsKIHZvaWQgYXJjaF9pbml0X21tKHVuc2lnbmVk
IGxvbmcqIHN0YXJ0X3Bmbl9wLCB1bnNpZ25lZCBsb25nKiBtYXhfcGZuX3ApOwogdm9pZCBhcmNo
X2luaXRfcDJtKHVuc2lnbmVkIGxvbmcgbWF4X3Bmbl9wKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVk
ZS94ODYvYXJjaF9tbS5oIGIvaW5jbHVkZS94ODYvYXJjaF9tbS5oCmluZGV4IGY3NTZkYWIuLmI1
MzE3Y2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveDg2L2FyY2hfbW0uaAorKysgYi9pbmNsdWRlL3g4
Ni9hcmNoX21tLmgKQEAgLTQ5LDExICs0OSwxMyBAQAogICoKICAqIFZpcnR1YWwgYWRkcmVzcyBz
cGFjZSB1c2FnZToKICAqCi0gKiAxOjEgbWFwcGluZyBvZiBwaHlzaWNhbCBtZW1vcnkgc3RhcnRp
bmcgYXQgVkEoMCkKLSAqIDEgdW5hbGxvY2F0ZWQgcGFnZQotICogZGVtYW5kIG1hcCBhcmVhICgz
MiBiaXRzOiAyIEdCLCA2NCBiaXRzOiAxMjggR0IpIGZvciB2aXJ0dWFsIGFsbG9jYXRpb25zCi0g
KiAxIHVuYWxsb2NhdGVkIHBhZ2UKLSAqIHdpdGggbGliYzogaGVhcCBhcmVhICgzMiBiaXRzOiAx
IEdCLCA2NCBiaXRzOiAxMjggR0IpCisgKiAgYXJlYSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHg4Ni02NCAgICAgICAgICAgICAgIHg4Ni0zMgorICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIG1hcHBlZCBwaHlzaWNh
bCBtZW1vcnkgICAgICAgMDAwMDAwMDAgICAgICAgICAgICAgMDAwMDAwMDAKKyAqICBrZXJuZWwg
dmlydHVhbCBtYXBwaW5ncyAgICA4MDAwMDAwMDAwICAgICAgICAgICAgIDNmMDAwMDAwCisgKiAg
ZGVtYW5kIG1hcHBpbmdzICAgICAgICAgIDEwMDAwMDAwMDAwMCAgICAgICAgICAgICA0MDAwMDAw
MAorICogIGhlYXAgKHdpdGggbGliYyBvbmx5KSAgICAyMDAwMDAwMDAwMDAgICAgICAgICAgICAg
YzAwMDAwMDAKKyAqCiAgKi8KIAogI2RlZmluZSBMMV9GUkFNRSAgICAgICAgICAgICAgICAxCkBA
IC04MSw2ICs4MywxNCBAQAogdHlwZWRlZiB1aW50NjRfdCBwZ2VudHJ5X3Q7CiAjZW5kaWYKIAor
I2RlZmluZSBNQVhfTUVNX1NJWkUgICAgICAgICAgICAweDNmMDAwMDAwVUwKKyNkZWZpbmUgVklS
VF9LRVJORUxfQVJFQSAgICAgICAgMHgzZjAwMDAwMFVMCisjZGVmaW5lIFZJUlRfREVNQU5EX0FS
RUEgICAgICAgIDB4NDAwMDAwMDBVTAorI2RlZmluZSBWSVJUX0hFQVBfQVJFQSAgICAgICAgICAw
eGMwMDAwMDAwVUwKKworI2RlZmluZSBERU1BTkRfTUFQX1BBR0VTICAgICAgICAweDdmZmZmVUwK
KyNkZWZpbmUgSEVBUF9QQUdFU19NQVggICAgICAgICAgMHgzZmZmZlVMCisKICNlbGlmIGRlZmlu
ZWQoX194ODZfNjRfXykKIAogI2RlZmluZSBMMl9QQUdFVEFCTEVfU0hJRlQgICAgICAyMQpAQCAt
MTA2LDYgKzExNiwyMCBAQCB0eXBlZGVmIHVpbnQ2NF90IHBnZW50cnlfdDsKIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBwZ2VudHJ5X3Q7CiAjZW5kaWYKIAorI2RlZmluZSBNQVhfTUVNX1NJWkUgICAg
ICAgICAgICAoNTEyVUxMIDw8IDMwKQorI2RlZmluZSBWSVJUX0tFUk5FTF9BUkVBICAgICAgICAw
eDAwMDAwMDgwMDAwMDAwMDBVTAorI2RlZmluZSBWSVJUX0RFTUFORF9BUkVBICAgICAgICAweDAw
MDAxMDAwMDAwMDAwMDBVTAorI2RlZmluZSBWSVJUX0hFQVBfQVJFQSAgICAgICAgICAweDAwMDAy
MDAwMDAwMDAwMDBVTAorCisjZGVmaW5lIERFTUFORF9NQVBfUEFHRVMgICAgICAgIDB4ODAwMDAw
MFVMCisjZGVmaW5lIEhFQVBfUEFHRVNfTUFYICAgICAgICAgIDB4ODAwMDAwMFVMCisKKyNlbmRp
ZgorCisjaWZuZGVmIEhBVkVfTElCQworI2RlZmluZSBIRUFQX1BBR0VTIDAKKyNlbHNlCisjZGVm
aW5lIEhFQVBfUEFHRVMgICBIRUFQX1BBR0VTX01BWAogI2VuZGlmCiAKICNkZWZpbmUgTDFfTUFT
SyAgKCgxVUwgPDwgTDJfUEFHRVRBQkxFX1NISUZUKSAtIDEpCmRpZmYgLS1naXQgYS9tbS5jIGIv
bW0uYwppbmRleCBkNGE4ZjFlLi4yMWEwMWRmIDEwMDY0NAotLS0gYS9tbS5jCisrKyBiL21tLmMK
QEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIGluaXRfbW0odm9pZCkKIAogICAgIGFyY2hfaW5pdF9w
Mm0obWF4X3Bmbik7CiAgICAgCi0gICAgYXJjaF9pbml0X2RlbWFuZF9tYXBwaW5nX2FyZWEobWF4
X3Bmbik7CisgICAgYXJjaF9pbml0X2RlbWFuZF9tYXBwaW5nX2FyZWEoKTsKIH0KIAogdm9pZCBm
aW5pX21tKHZvaWQpCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:44:35 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:44:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQdn-0008RN-BJ; Tue, 19 Jul 2016 08:44:35 +0000
Received: from mail6.bemta14.messagelabs.com ([193.109.254.103])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQdl-0008Hj-7Z; Tue, 19 Jul 2016 08:44:33 +0000
Received: from [193.109.254.147] by server-4.bemta-14.messagelabs.com id
 A1/7F-30629-078ED875; Tue, 19 Jul 2016 08:44:32 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov27Bi95
 wg8WzBSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZtx8dpy1YLNxRfOZn2wNjNs1uhg5
 OSQEjCTeTvzH1MXIxSEksJBRYs6aViaQBJuAqsSG66dYQWwRATeJL99nsYHYzAIREnM+nGIBs
 YUFQiT2HFkFVsMCVN97ZBVzFyMHB6+Ag8Sjj0IQ8+Ukrs+cDjaSEyjc+vkGmC0kYC9xZdFSlg
 mM3AsYGVYxahSnFpWlFukaWuglFWWmZ5TkJmbm6BoamujlphYXJ6an5iQmFesl5+duYgT6uZ6
 BgXEH45HtnocYJTmYlER5VUV7w4X4kvJTKjMSizPii0pzUosPMcpwcChJ8C54BpQTLEpNT61I
 y8wBBhxMWoKDR0mEdy5Imre4IDG3ODMdInWKUVFKnPc6SEIAJJFRmgfXBgvyS4yyUsK8jAwMD
 EI8BalFuZklqPKvGMU5GJWEeTmeA03hycwrgZv+CmgxE9BiA9VukMUliQgpqQbG6V65V92Urt
 dGfrX8se/cvqTfd15p7T+0fMVt51651gcf/fTSZ/+X+hJ2dJ0Oa6XetN6Oa885tR4li3fMz5+
 z81TMIUftKSF+ysVHTeU/dCfmHHPvOCd6lSOolHWv5CmrtE+rJ6+eLn9+rab6wQoH4f1Fh3gX
 3Db2r97yIuBfweIW08YVDvNllViKMxINtZiLihMBVZ53oG0CAAA=
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-12.tower-27.messagelabs.com!1468917871!53719417!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 49102 invoked from network); 19 Jul 2016 08:44:32 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-12.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:44:32 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id B7FBCADC1;
 Tue, 19 Jul 2016 08:44:31 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:25 +0200
Message-Id: <1468917865-12828-10-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 9/9] mini-os: modify virtual memory layout
	for support of ballooning
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW4gb3JkZXIgdG8gYmUgYWJsZSB0byBzdXBwb3J0IGJhbGxvb25pbmcgdGhlIHZpcnR1YWwgbWVt
b3J5IGxheW91dApvZiBNaW5pLU9TIGhhcyB0byBiZSBtb2RpZmllZDogaW5zdGVhZCBvZiBhIChu
ZWFybHkpIGNvbnNlY3V0aXZlCmFyZWEgdXNlZCBmb3IgcGh5c2ljYWwgbWVtb3J5IG1hcHBpbmcs
IG9uIGRlbWFuZCBtYXBwaW5ncywgYW5kIGhlYXAKd2UgbmVlZCBlbm91Z2ggc3BhcmUgcGxhY2Ug
Zm9yIGFkZGluZyBuZXcgbWVtb3J5LgoKU28gaW5zdGVhZCBvZiBkeW5hbWljYWxseSBwbGFjZSB0
aGUgZGlmZmVyZW50IHJlZ2lvbnMgYmFzZWQgb24gZm91bmQKbWVtb3J5IHNpemUgbG9jYXRlIHRo
ZW0gc3RhdGljYWxseSBhdCBmaXhlZCB2aXJ0dWFsIGFkZHJlc3NlczoKCmFyZWEgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4ODYtNjQgICAgICAgICAgICAgICB4ODYtMzIKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm1hcHBlZCBw
aHlzaWNhbCBtZW1vcnkgICAgICAgMDAwMDAwMDAgICAgICAgICAgICAgMDAwMDAwMDAKa2VybmVs
IHZpcnR1YWwgbWFwcGluZ3MgICAgODAwMDAwMDAwMCAgICAgICAgICAgICAzZjAwMDAwMApkZW1h
bmQgbWFwcGluZ3MgICAgICAgICAgMTAwMDAwMDAwMDAwICAgICAgICAgICAgIDQwMDAwMDAwCmhl
YXAgICAgICAgICAgICAgICAgICAgICAyMDAwMDAwMDAwMDAgICAgICAgICAgICAgYzAwMDAwMDAK
ClRoaXMgd2lsbCBlbmFibGUgTWluaS1PUyB0byBzdXBwb3J0IHVwIHRvIDUxMkdCIG9mIGRvbWFp
biBtZW1vcnkgd2l0aAphIDY0IGJpdCBrZXJuZWwgYW5kIG5lYXJseSAxR0Igd2l0aCBhIDMyIGJp
dCBrZXJuZWwuCgpUaGUga2VybmVsIHZpcnR1YWwgbWFwcGluZ3MgYXJlIGEgbmV3IGFyZWEgbmVl
ZGVkIGZvciBiZWluZyBhYmxlIHRvCmdyb3cgdGhlIHAybSBsaXN0IHdpdGhvdXQgaGF2aW5nIHRv
IHJlbG9jYXRlIGl0IGluIHBoeXNpY2FsIG1lbW9yeS4KCk1vZGlmeSB0aGUgcGxhY2VtZW50IG9m
IHRoZSBkZW1hbmQgbWFwcGluZ3MgYW5kIGhlYXAgYW5kIGFkanVzdCB0aGUKbWVtb3J5IGxheW91
dCBkZXNjcmlwdGlvbi4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNl
LmNvbT4KLS0tCiBhcmNoL2FybS9tbS5jICAgICAgICAgfCAgMiArLQogYXJjaC94ODYvbW0uYyAg
ICAgICAgIHwgNDQgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IGluY2x1ZGUvbW0uaCAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL3g4Ni9hcmNoX21tLmggfCAz
NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBtbS5jICAgICAgICAgICAgICAg
ICAgfCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS5jIGIvYXJjaC9hcm0vbW0uYwppbmRleCBl
ZmVjYzUxLi5mNzU4ODhkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS5jCisrKyBiL2FyY2gvYXJt
L21tLmMKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBhcmNoX2luaXRfcDJtKHVuc2lnbmVkIGxvbmcg
bWF4X3BmbikKIHsKIH0KIAotdm9pZCBhcmNoX2luaXRfZGVtYW5kX21hcHBpbmdfYXJlYSh1bnNp
Z25lZCBsb25nIGN1cl9wZm4pCit2b2lkIGFyY2hfaW5pdF9kZW1hbmRfbWFwcGluZ19hcmVhKHZv
aWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tLmMgYi9hcmNoL3g4Ni9tbS5jCmlu
ZGV4IGM1OWE1ZDMuLjA4ODU4M2UgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tLmMKKysrIGIvYXJj
aC94ODYvbW0uYwpAQCAtNDQyLDM3ICs0NDIsMjEgQEAgcGdlbnRyeV90ICpuZWVkX3BndCh1bnNp
Z25lZCBsb25nIHZhKQogICogUmVzZXJ2ZSBhbiBhcmVhIG9mIHZpcnR1YWwgYWRkcmVzcyBzcGFj
ZSBmb3IgbWFwcGluZ3MgYW5kIEhlYXAKICAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgZGVtYW5k
X21hcF9hcmVhX3N0YXJ0OwotI2lmZGVmIF9feDg2XzY0X18KLSNkZWZpbmUgREVNQU5EX01BUF9Q
QUdFUyAoKDEyOFVMTCA8PCAzMCkgLyBQQUdFX1NJWkUpCi0jZWxzZQotI2RlZmluZSBERU1BTkRf
TUFQX1BBR0VTICgoMlVMTCA8PCAzMCkgLyBQQUdFX1NJWkUpCi0jZW5kaWYKLQotI2lmbmRlZiBI
QVZFX0xJQkMKLSNkZWZpbmUgSEVBUF9QQUdFUyAwCi0jZWxzZQorc3RhdGljIHVuc2lnbmVkIGxv
bmcgZGVtYW5kX21hcF9hcmVhX2VuZDsKKyNpZmRlZiBIQVZFX0xJQkMKIHVuc2lnbmVkIGxvbmcg
aGVhcCwgYnJrLCBoZWFwX21hcHBlZCwgaGVhcF9lbmQ7Ci0jaWZkZWYgX194ODZfNjRfXwotI2Rl
ZmluZSBIRUFQX1BBR0VTICgoMTI4VUxMIDw8IDMwKSAvIFBBR0VfU0laRSkKLSNlbHNlCi0jZGVm
aW5lIEhFQVBfUEFHRVMgKCgxVUxMIDw8IDMwKSAvIFBBR0VfU0laRSkKLSNlbmRpZgogI2VuZGlm
CiAKLXZvaWQgYXJjaF9pbml0X2RlbWFuZF9tYXBwaW5nX2FyZWEodW5zaWduZWQgbG9uZyBjdXJf
cGZuKQordm9pZCBhcmNoX2luaXRfZGVtYW5kX21hcHBpbmdfYXJlYSh2b2lkKQogewotICAgIGN1
cl9wZm4rKzsKLQotICAgIGRlbWFuZF9tYXBfYXJlYV9zdGFydCA9ICh1bnNpZ25lZCBsb25nKSBw
Zm5fdG9fdmlydChjdXJfcGZuKTsKLSAgICBjdXJfcGZuICs9IERFTUFORF9NQVBfUEFHRVM7Ci0g
ICAgcHJpbnRrKCJEZW1hbmQgbWFwIHBmbnMgYXQgJWx4LSVwLlxuIiwgCi0gICAgICAgICAgIGRl
bWFuZF9tYXBfYXJlYV9zdGFydCwgcGZuX3RvX3ZpcnQoY3VyX3BmbikpOworICAgIGRlbWFuZF9t
YXBfYXJlYV9zdGFydCA9IFZJUlRfREVNQU5EX0FSRUE7CisgICAgZGVtYW5kX21hcF9hcmVhX2Vu
ZCA9IGRlbWFuZF9tYXBfYXJlYV9zdGFydCArIERFTUFORF9NQVBfUEFHRVMgKiBQQUdFX1NJWkU7
CisgICAgcHJpbnRrKCJEZW1hbmQgbWFwIHBmbnMgYXQgJWx4LSVseC5cbiIsIGRlbWFuZF9tYXBf
YXJlYV9zdGFydCwKKyAgICAgICAgICAgZGVtYW5kX21hcF9hcmVhX2VuZCk7CiAKICNpZmRlZiBI
QVZFX0xJQkMKLSAgICBjdXJfcGZuKys7Ci0gICAgaGVhcF9tYXBwZWQgPSBicmsgPSBoZWFwID0g
KHVuc2lnbmVkIGxvbmcpIHBmbl90b192aXJ0KGN1cl9wZm4pOwotICAgIGN1cl9wZm4gKz0gSEVB
UF9QQUdFUzsKLSAgICBoZWFwX2VuZCA9ICh1bnNpZ25lZCBsb25nKSBwZm5fdG9fdmlydChjdXJf
cGZuKTsKKyAgICBoZWFwX21hcHBlZCA9IGJyayA9IGhlYXAgPSBWSVJUX0hFQVBfQVJFQTsKKyAg
ICBoZWFwX2VuZCA9IGhlYXBfbWFwcGVkICsgSEVBUF9QQUdFUyAqIFBBR0VfU0laRTsKICAgICBw
cmludGsoIkhlYXAgcmVzaWRlcyBhdCAlbHgtJWx4LlxuIiwgYnJrLCBoZWFwX2VuZCk7CiAjZW5k
aWYKIH0KQEAgLTcyOSwxNCArNzEzLDggQEAgdm9pZCBhcmNoX2luaXRfbW0odW5zaWduZWQgbG9u
Zyogc3RhcnRfcGZuX3AsIHVuc2lnbmVkIGxvbmcqIG1heF9wZm5fcCkKICAgICBzdGFydF9wZm4g
PSBQRk5fVVAodG9fcGh5cyhzdGFydF9pbmZvLnB0X2Jhc2UpKSArIHN0YXJ0X2luZm8ubnJfcHRf
ZnJhbWVzOwogICAgIG1heF9wZm4gPSBzdGFydF9pbmZvLm5yX3BhZ2VzOwogCi0gICAgLyogV2Ug
bmVlZCByb29tIGZvciBkZW1hbmQgbWFwcGluZyBhbmQgaGVhcCwgY2xpcCBhdmFpbGFibGUgbWVt
b3J5ICovCi0jaWYgZGVmaW5lZChfX2kzODZfXykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxv
bmcgdmlydF9wZm5zID0gMSArIERFTUFORF9NQVBfUEFHRVMgKyAxICsgSEVBUF9QQUdFUzsKLSAg
ICAgICAgaWYgKG1heF9wZm4gKyB2aXJ0X3BmbnMgPj0gMHgxMDAwMDApCi0gICAgICAgICAgICBt
YXhfcGZuID0gMHgxMDAwMDAgLSB2aXJ0X3BmbnMgLSAxOwotICAgIH0KLSNlbmRpZgorICAgIGlm
IChtYXhfcGZuID49IE1BWF9NRU1fU0laRSAvIFBBR0VfU0laRSkKKyAgICAgICAgbWF4X3BmbiA9
IE1BWF9NRU1fU0laRSAvIFBBR0VfU0laRSAtIDE7CiAKICAgICBwcmludGsoIiAgc3RhcnRfcGZu
OiAlbHhcbiIsIHN0YXJ0X3Bmbik7CiAgICAgcHJpbnRrKCIgICAgbWF4X3BmbjogJWx4XG4iLCBt
YXhfcGZuKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbW0uaCBiL2luY2x1ZGUvbW0uaAppbmRleCAx
NjE0ODNmLi4xNTVlYTY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL21tLmgKKysrIGIvaW5jbHVkZS9t
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfb3JkZXIodW5z
aWduZWQgbG9uZyBzaXplKQogICAgIHJldHVybiBvcmRlcjsKIH0KIAotdm9pZCBhcmNoX2luaXRf
ZGVtYW5kX21hcHBpbmdfYXJlYSh1bnNpZ25lZCBsb25nIG1heF9wZm4pOwordm9pZCBhcmNoX2lu
aXRfZGVtYW5kX21hcHBpbmdfYXJlYSh2b2lkKTsKIHZvaWQgYXJjaF9pbml0X21tKHVuc2lnbmVk
IGxvbmcqIHN0YXJ0X3Bmbl9wLCB1bnNpZ25lZCBsb25nKiBtYXhfcGZuX3ApOwogdm9pZCBhcmNo
X2luaXRfcDJtKHVuc2lnbmVkIGxvbmcgbWF4X3Bmbl9wKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVk
ZS94ODYvYXJjaF9tbS5oIGIvaW5jbHVkZS94ODYvYXJjaF9tbS5oCmluZGV4IGY3NTZkYWIuLmI1
MzE3Y2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveDg2L2FyY2hfbW0uaAorKysgYi9pbmNsdWRlL3g4
Ni9hcmNoX21tLmgKQEAgLTQ5LDExICs0OSwxMyBAQAogICoKICAqIFZpcnR1YWwgYWRkcmVzcyBz
cGFjZSB1c2FnZToKICAqCi0gKiAxOjEgbWFwcGluZyBvZiBwaHlzaWNhbCBtZW1vcnkgc3RhcnRp
bmcgYXQgVkEoMCkKLSAqIDEgdW5hbGxvY2F0ZWQgcGFnZQotICogZGVtYW5kIG1hcCBhcmVhICgz
MiBiaXRzOiAyIEdCLCA2NCBiaXRzOiAxMjggR0IpIGZvciB2aXJ0dWFsIGFsbG9jYXRpb25zCi0g
KiAxIHVuYWxsb2NhdGVkIHBhZ2UKLSAqIHdpdGggbGliYzogaGVhcCBhcmVhICgzMiBiaXRzOiAx
IEdCLCA2NCBiaXRzOiAxMjggR0IpCisgKiAgYXJlYSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHg4Ni02NCAgICAgICAgICAgICAgIHg4Ni0zMgorICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIG1hcHBlZCBwaHlzaWNh
bCBtZW1vcnkgICAgICAgMDAwMDAwMDAgICAgICAgICAgICAgMDAwMDAwMDAKKyAqICBrZXJuZWwg
dmlydHVhbCBtYXBwaW5ncyAgICA4MDAwMDAwMDAwICAgICAgICAgICAgIDNmMDAwMDAwCisgKiAg
ZGVtYW5kIG1hcHBpbmdzICAgICAgICAgIDEwMDAwMDAwMDAwMCAgICAgICAgICAgICA0MDAwMDAw
MAorICogIGhlYXAgKHdpdGggbGliYyBvbmx5KSAgICAyMDAwMDAwMDAwMDAgICAgICAgICAgICAg
YzAwMDAwMDAKKyAqCiAgKi8KIAogI2RlZmluZSBMMV9GUkFNRSAgICAgICAgICAgICAgICAxCkBA
IC04MSw2ICs4MywxNCBAQAogdHlwZWRlZiB1aW50NjRfdCBwZ2VudHJ5X3Q7CiAjZW5kaWYKIAor
I2RlZmluZSBNQVhfTUVNX1NJWkUgICAgICAgICAgICAweDNmMDAwMDAwVUwKKyNkZWZpbmUgVklS
VF9LRVJORUxfQVJFQSAgICAgICAgMHgzZjAwMDAwMFVMCisjZGVmaW5lIFZJUlRfREVNQU5EX0FS
RUEgICAgICAgIDB4NDAwMDAwMDBVTAorI2RlZmluZSBWSVJUX0hFQVBfQVJFQSAgICAgICAgICAw
eGMwMDAwMDAwVUwKKworI2RlZmluZSBERU1BTkRfTUFQX1BBR0VTICAgICAgICAweDdmZmZmVUwK
KyNkZWZpbmUgSEVBUF9QQUdFU19NQVggICAgICAgICAgMHgzZmZmZlVMCisKICNlbGlmIGRlZmlu
ZWQoX194ODZfNjRfXykKIAogI2RlZmluZSBMMl9QQUdFVEFCTEVfU0hJRlQgICAgICAyMQpAQCAt
MTA2LDYgKzExNiwyMCBAQCB0eXBlZGVmIHVpbnQ2NF90IHBnZW50cnlfdDsKIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBwZ2VudHJ5X3Q7CiAjZW5kaWYKIAorI2RlZmluZSBNQVhfTUVNX1NJWkUgICAg
ICAgICAgICAoNTEyVUxMIDw8IDMwKQorI2RlZmluZSBWSVJUX0tFUk5FTF9BUkVBICAgICAgICAw
eDAwMDAwMDgwMDAwMDAwMDBVTAorI2RlZmluZSBWSVJUX0RFTUFORF9BUkVBICAgICAgICAweDAw
MDAxMDAwMDAwMDAwMDBVTAorI2RlZmluZSBWSVJUX0hFQVBfQVJFQSAgICAgICAgICAweDAwMDAy
MDAwMDAwMDAwMDBVTAorCisjZGVmaW5lIERFTUFORF9NQVBfUEFHRVMgICAgICAgIDB4ODAwMDAw
MFVMCisjZGVmaW5lIEhFQVBfUEFHRVNfTUFYICAgICAgICAgIDB4ODAwMDAwMFVMCisKKyNlbmRp
ZgorCisjaWZuZGVmIEhBVkVfTElCQworI2RlZmluZSBIRUFQX1BBR0VTIDAKKyNlbHNlCisjZGVm
aW5lIEhFQVBfUEFHRVMgICBIRUFQX1BBR0VTX01BWAogI2VuZGlmCiAKICNkZWZpbmUgTDFfTUFT
SyAgKCgxVUwgPDwgTDJfUEFHRVRBQkxFX1NISUZUKSAtIDEpCmRpZmYgLS1naXQgYS9tbS5jIGIv
bW0uYwppbmRleCBkNGE4ZjFlLi4yMWEwMWRmIDEwMDY0NAotLS0gYS9tbS5jCisrKyBiL21tLmMK
QEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIGluaXRfbW0odm9pZCkKIAogICAgIGFyY2hfaW5pdF9w
Mm0obWF4X3Bmbik7CiAgICAgCi0gICAgYXJjaF9pbml0X2RlbWFuZF9tYXBwaW5nX2FyZWEobWF4
X3Bmbik7CisgICAgYXJjaF9pbml0X2RlbWFuZF9tYXBwaW5nX2FyZWEoKTsKIH0KIAogdm9pZCBm
aW5pX21tKHZvaWQpCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:45:18 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:45:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQeU-0000Vy-24; Tue, 19 Jul 2016 08:45:18 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQeT-0000VW-32; Tue, 19 Jul 2016 08:45:17 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 B5/9E-21406-C98ED875; Tue, 19 Jul 2016 08:45:16 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov+7sF73
 hBmc22Fi8/bqE2eL7lslMDkwehz9cYQlgjGLNzEvKr0hgzTjy8AJzwSyeijNzGlgbGH9xdjFy
 ckgIGEm8nfiPqYuRi0NIYCGjxMMbW9hAEmwCqhIbrp9iBbFFBNwkvnyfBRZnFoiQmPPhFAuIL
 SxgLtG+/zEziM0CVL/5QB8jiM0rYC+xY8ZbFogFchLXZ05nArE5BRwkWj/fALOFgGquLFrKMo
 GRewEjwypG9eLUorLUIl1DvaSizPSMktzEzBxdQwMzvdzU4uLE9NScxKRiveT83E2MQD8zAME
 Oxp3PnQ4xSnIwKYnyqor2hgvxJeWnVGYkFmfEF5XmpBYfYpTh4FCS4G17DpQTLEpNT61Iy8wB
 BhxMWoKDR0mEtx8kzVtckJhbnJkOkTrFqCglzhsKkhAASWSU5sG1wYL8EqOslDAvI9AhQjwFq
 UW5mSWo8q8YxTkYlYR520Gm8GTmlcBNfwW0mAlosYFqN8jikkSElFQDo8JzJhuppisnjQSULY
 v+eyjdW/7U8j5b88Uv7gwS8ef/XPhumnnv4OuYo2wzPnwSO9VwLfe1cpGEfnrRortOS2ells7
 vij7/z6xzwtbDIfdUXnBeqYvdrXI9iE2rdn7wraBbDJNk/3GISV37+UvKztF2Lqvd8tzD7i/n
 6t1/k/HS8o3a7kBjFyWW4oxEQy3mouJEANvwxwptAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-8.tower-21.messagelabs.com!1468917915!24496824!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30089 invoked from network); 19 Jul 2016 08:45:15 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-8.tower-21.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:45:15 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 7F11EADC6;
 Tue, 19 Jul 2016 08:44:30 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:21 +0200
Message-Id: <1468917865-12828-6-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 5/9] mini-os: add nr_free_pages counter
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIGEgdmFyaWFibGUgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBtZW1vcnkgcGFn
ZXMuIFRoaXMgd2lsbAphaWQgYXV0by1iYWxsb29uaW5nIGxhdGVyLgoKU2lnbmVkLW9mZi1ieTog
SnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KIGluY2x1ZGUvbW0uaCB8IDEgKwog
bW0uYyAgICAgICAgIHwgNiArKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCsp
CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tbS5oIGIvaW5jbHVkZS9tbS5oCmluZGV4IGE0OGY0ODUu
LmI5N2I0M2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbW0uaAorKysgYi9pbmNsdWRlL21tLmgKQEAg
LTQyLDYgKzQyLDcgQEAKICNkZWZpbmUgU1RBQ0tfU0laRV9QQUdFX09SREVSIF9fU1RBQ0tfU0la
RV9QQUdFX09SREVSCiAjZGVmaW5lIFNUQUNLX1NJWkUgX19TVEFDS19TSVpFCiAKK2V4dGVybiB1
bnNpZ25lZCBsb25nIG5yX2ZyZWVfcGFnZXM7CiAKIHZvaWQgaW5pdF9tbSh2b2lkKTsKIHVuc2ln
bmVkIGxvbmcgYWxsb2NfcGFnZXMoaW50IG9yZGVyKTsKZGlmZiAtLWdpdCBhL21tLmMgYi9tbS5j
CmluZGV4IDBkZDQ4NjIuLjI2M2EzNTYgMTAwNjQ0Ci0tLSBhL21tLmMKKysrIGIvbW0uYwpAQCAt
NTMsNiArNTMsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqYWxsb2NfYml0bWFwOwogI2RlZmlu
ZSBhbGxvY2F0ZWRfaW5fbWFwKF9wbikgXAogKGFsbG9jX2JpdG1hcFsoX3BuKS9QQUdFU19QRVJf
TUFQV09SRF0gJiAoMVVMPDwoKF9wbikmKFBBR0VTX1BFUl9NQVBXT1JELTEpKSkpCiAKK3Vuc2ln
bmVkIGxvbmcgbnJfZnJlZV9wYWdlczsKKwogLyoKICAqIEhpbnQgcmVnYXJkaW5nIGJpdHdpc2Ug
YXJpdGhtZXRpYyBpbiBtYXBfe2FsbG9jLGZyZWV9OgogICogIC0oMTw8bikgIHNldHMgYWxsIGJp
dHMgPj0gbi4gCkBAIC04MSw2ICs4Myw4IEBAIHN0YXRpYyB2b2lkIG1hcF9hbGxvYyh1bnNpZ25l
ZCBsb25nIGZpcnN0X3BhZ2UsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpCiAgICAgICAgIHdoaWxl
ICggKytjdXJyX2lkeCA8IGVuZF9pZHggKSBhbGxvY19iaXRtYXBbY3Vycl9pZHhdID0gfjBVTDsK
ICAgICAgICAgYWxsb2NfYml0bWFwW2N1cnJfaWR4XSB8PSAoMVVMPDxlbmRfb2ZmKS0xOwogICAg
IH0KKworICAgIG5yX2ZyZWVfcGFnZXMgLT0gbnJfcGFnZXM7CiB9CiAKIApAQCAtOTMsNiArOTcs
OCBAQCBzdGF0aWMgdm9pZCBtYXBfZnJlZSh1bnNpZ25lZCBsb25nIGZpcnN0X3BhZ2UsIHVuc2ln
bmVkIGxvbmcgbnJfcGFnZXMpCiAgICAgZW5kX2lkeCAgID0gKGZpcnN0X3BhZ2UgKyBucl9wYWdl
cykgLyBQQUdFU19QRVJfTUFQV09SRDsKICAgICBlbmRfb2ZmICAgPSAoZmlyc3RfcGFnZSArIG5y
X3BhZ2VzKSAmIChQQUdFU19QRVJfTUFQV09SRC0xKTsKIAorICAgIG5yX2ZyZWVfcGFnZXMgKz0g
bnJfcGFnZXM7CisKICAgICBpZiAoIGN1cnJfaWR4ID09IGVuZF9pZHggKQogICAgIHsKICAgICAg
ICAgYWxsb2NfYml0bWFwW2N1cnJfaWR4XSAmPSAtKDFVTDw8ZW5kX29mZikgfCAoKDFVTDw8c3Rh
cnRfb2ZmKS0xKTsKLS0gCjIuNi42CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jul 19 08:45:18 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Jul 2016 08:45:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1bPQeU-0000Vy-24; Tue, 19 Jul 2016 08:45:18 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <jgross@suse.com>)
 id 1bPQeT-0000VW-32; Tue, 19 Jul 2016 08:45:17 +0000
Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id
 B5/9E-21406-C98ED875; Tue, 19 Jul 2016 08:45:16 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRWlGSWpSXmKPExsVyuP0Ov+7sF73
 hBmc22Fi8/bqE2eL7lslMDkwehz9cYQlgjGLNzEvKr0hgzTjy8AJzwSyeijNzGlgbGH9xdjFy
 ckgIGEm8nfiPqYuRi0NIYCGjxMMbW9hAEmwCqhIbrp9iBbFFBNwkvnyfBRZnFoiQmPPhFAuIL
 SxgLtG+/zEziM0CVL/5QB8jiM0rYC+xY8ZbFogFchLXZ05nArE5BRwkWj/fALOFgGquLFrKMo
 GRewEjwypG9eLUorLUIl1DvaSizPSMktzEzBxdQwMzvdzU4uLE9NScxKRiveT83E2MQD8zAME
 Oxp3PnQ4xSnIwKYnyqor2hgvxJeWnVGYkFmfEF5XmpBYfYpTh4FCS4G17DpQTLEpNT61Iy8wB
 BhxMWoKDR0mEtx8kzVtckJhbnJkOkTrFqCglzhsKkhAASWSU5sG1wYL8EqOslDAvI9AhQjwFq
 UW5mSWo8q8YxTkYlYR520Gm8GTmlcBNfwW0mAlosYFqN8jikkSElFQDo8JzJhuppisnjQSULY
 v+eyjdW/7U8j5b88Uv7gwS8ef/XPhumnnv4OuYo2wzPnwSO9VwLfe1cpGEfnrRortOS2ells7
 vij7/z6xzwtbDIfdUXnBeqYvdrXI9iE2rdn7wraBbDJNk/3GISV37+UvKztF2Lqvd8tzD7i/n
 6t1/k/HS8o3a7kBjFyWW4oxEQy3mouJEANvwxwptAgAA
X-Env-Sender: jgross@suse.com
X-Msg-Ref: server-8.tower-21.messagelabs.com!1468917915!24496824!1
X-Originating-IP: [195.135.220.15]
X-SpamReason: No, hits=0.0 required=7.0 tests=
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 30089 invoked from network); 19 Jul 2016 08:45:15 -0000
Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15)
 by server-8.tower-21.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted
 SMTP; 19 Jul 2016 08:45:15 -0000
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 7F11EADC6;
 Tue, 19 Jul 2016 08:44:30 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Date: Tue, 19 Jul 2016 10:44:21 +0200
Message-Id: <1468917865-12828-6-git-send-email-jgross@suse.com>
X-Mailer: git-send-email 2.6.6
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
Cc: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org,
 wei.liu2@citrix.com
Subject: [Minios-devel] [PATCH 5/9] mini-os: add nr_free_pages counter
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIGEgdmFyaWFibGUgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBtZW1vcnkgcGFn
ZXMuIFRoaXMgd2lsbAphaWQgYXV0by1iYWxsb29uaW5nIGxhdGVyLgoKU2lnbmVkLW9mZi1ieTog
SnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KIGluY2x1ZGUvbW0uaCB8IDEgKwog
bW0uYyAgICAgICAgIHwgNiArKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCsp
CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tbS5oIGIvaW5jbHVkZS9tbS5oCmluZGV4IGE0OGY0ODUu
LmI5N2I0M2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbW0uaAorKysgYi9pbmNsdWRlL21tLmgKQEAg
LTQyLDYgKzQyLDcgQEAKICNkZWZpbmUgU1RBQ0tfU0laRV9QQUdFX09SREVSIF9fU1RBQ0tfU0la
RV9QQUdFX09SREVSCiAjZGVmaW5lIFNUQUNLX1NJWkUgX19TVEFDS19TSVpFCiAKK2V4dGVybiB1
bnNpZ25lZCBsb25nIG5yX2ZyZWVfcGFnZXM7CiAKIHZvaWQgaW5pdF9tbSh2b2lkKTsKIHVuc2ln
bmVkIGxvbmcgYWxsb2NfcGFnZXMoaW50IG9yZGVyKTsKZGlmZiAtLWdpdCBhL21tLmMgYi9tbS5j
CmluZGV4IDBkZDQ4NjIuLjI2M2EzNTYgMTAwNjQ0Ci0tLSBhL21tLmMKKysrIGIvbW0uYwpAQCAt
NTMsNiArNTMsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqYWxsb2NfYml0bWFwOwogI2RlZmlu
ZSBhbGxvY2F0ZWRfaW5fbWFwKF9wbikgXAogKGFsbG9jX2JpdG1hcFsoX3BuKS9QQUdFU19QRVJf
TUFQV09SRF0gJiAoMVVMPDwoKF9wbikmKFBBR0VTX1BFUl9NQVBXT1JELTEpKSkpCiAKK3Vuc2ln
bmVkIGxvbmcgbnJfZnJlZV9wYWdlczsKKwogLyoKICAqIEhpbnQgcmVnYXJkaW5nIGJpdHdpc2Ug
YXJpdGhtZXRpYyBpbiBtYXBfe2FsbG9jLGZyZWV9OgogICogIC0oMTw8bikgIHNldHMgYWxsIGJp
dHMgPj0gbi4gCkBAIC04MSw2ICs4Myw4IEBAIHN0YXRpYyB2b2lkIG1hcF9hbGxvYyh1bnNpZ25l
ZCBsb25nIGZpcnN0X3BhZ2UsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpCiAgICAgICAgIHdoaWxl
ICggKytjdXJyX2lkeCA8IGVuZF9pZHggKSBhbGxvY19iaXRtYXBbY3Vycl9pZHhdID0gfjBVTDsK
ICAgICAgICAgYWxsb2NfYml0bWFwW2N1cnJfaWR4XSB8PSAoMVVMPDxlbmRfb2ZmKS0xOwogICAg
IH0KKworICAgIG5yX2ZyZWVfcGFnZXMgLT0gbnJfcGFnZXM7CiB9CiAKIApAQCAtOTMsNiArOTcs
OCBAQCBzdGF0aWMgdm9pZCBtYXBfZnJlZSh1bnNpZ25lZCBsb25nIGZpcnN0X3BhZ2UsIHVuc2ln
bmVkIGxvbmcgbnJfcGFnZXMpCiAgICAgZW5kX2lkeCAgID0gKGZpcnN0X3BhZ2UgKyBucl9wYWdl
cykgLyBQQUdFU19QRVJfTUFQV09SRDsKICAgICBlbmRfb2ZmICAgPSAoZmlyc3RfcGFnZSArIG5y
X3BhZ2VzKSAmIChQQUdFU19QRVJfTUFQV09SRC0xKTsKIAorICAgIG5yX2ZyZWVfcGFnZXMgKz0g
bnJfcGFnZXM7CisKICAgICBpZiAoIGN1cnJfaWR4ID09IGVuZF9pZHggKQogICAgIHsKICAgICAg
ICAgYWxsb2NfYml0bWFwW2N1cnJfaWR4XSAmPSAtKDFVTDw8ZW5kX29mZikgfCAoKDFVTDw8c3Rh
cnRfb2ZmKS0xKTsKLS0gCjIuNi42CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jul 25 13:53:04 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 25 Jul 2016 13: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bRgJb-0001CV-BK; Mon, 25 Jul 2016 13: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=0073ad739=wei.liu2@citrix.com>)
 id 1bRgJa-0001CM-B2; Mon, 25 Jul 2016 13:53:02 +0000
Received: from [85.158.139.211] by server-4.bemta-5.messagelabs.com id
 B0/D4-12285-DB916975; Mon, 25 Jul 2016 13:53:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRWlGSWpSXmKPExsXitHRDpO5eyWn
 hBg0fuCzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZtz+fpSlwKSi79tBpgZGvS5GTg4J
 AX+J06efMoPYLAKqEt9n3GUBsdkElCV+dvaygdgiQPbH1l72LkYuDmaBRkaJy/+7mUASwgLOE
 j1vpwIlODh4BfQlDh3gBQkLCdhLXFm0FGwOr4CgxMmZT8BsZgEdiQW7P7GBlDMLSEss/8cBEu
 YUcJBo/XwDbKKogIrElQlv2SHGKEh0TD/GBFIuIcAt8bfbfgIj/ywkQ2chGToLYegCRuZVjBr
 FqUVlqUW6hpZ6SUWZ6RkluYmZObqGBqZ6uanFxYnpqTmJScV6yfm5mxiBQVjPwMC4g/FRv98h
 RkkOJiVRXgfGaeFCfEn5KZUZicUZ8UWlOanFhxhlODiUJHh3SwDlBItS01Mr0jJzgPEAk5bg4
 FES4WUFxoQQb3FBYm5xZjpE6hSjJceLadfWMnFcmw4iF/y4vZZJiCUvPy9VSpzXAWSeAEhDRm
 ke3DhYzF5ilJUS5mVkYGAQ4ilILcrNLEGVf8UozsGoJMybDDKFJzOvBG7rK6CDmIAOWsAzGeS
 gkkSElFQDY77+9G8y2//OKb2Y5tq1cfmsYs1FFhbWEm2K1Xt9ix/FTdZxSy+SNrxSvWjl38N6
 3lyyveZ5S6teL7uylF/5ROqdV4wf5Jh2OW9y/jn17ZrpPRH7PWbEKcyLb+dc4GBcsPZS3eQ7D
 g4l2UWhO3RP7W15/HmOSPR5lmuXfESDsk/uOar/8b2WrhJLcUaioRZzUXEiAMfMQyzUAgAA
X-Env-Sender: prvs=0073ad739=wei.liu2@citrix.com
X-Msg-Ref: server-13.tower-206.messagelabs.com!1469454779!35595985!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28255 invoked from network); 25 Jul 2016 13:53:00 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-13.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 25 Jul 2016 13:53:00 -0000
X-IronPort-AV: E=Sophos;i="5.28,419,1464652800"; d="scan'208";a="368201052"
Date: Mon, 25 Jul 2016 14:52:56 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160725135256.GR27082@citrix.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA1
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 wei.liu2@citrix.com, samuel.thibault@ens-lyon.org
Subject: Re: [Minios-devel] [PATCH 0/9] mini-os: prepare for support of
	ballooning
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2VyaWVzOgoKUmV2aWV3ZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jul 25 13:53:04 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 25 Jul 2016 13: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bRgJb-0001CV-BK; Mon, 25 Jul 2016 13: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=0073ad739=wei.liu2@citrix.com>)
 id 1bRgJa-0001CM-B2; Mon, 25 Jul 2016 13:53:02 +0000
Received: from [85.158.139.211] by server-4.bemta-5.messagelabs.com id
 B0/D4-12285-DB916975; Mon, 25 Jul 2016 13:53:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRWlGSWpSXmKPExsXitHRDpO5eyWn
 hBg0fuCzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZtz+fpSlwKSi79tBpgZGvS5GTg4J
 AX+J06efMoPYLAKqEt9n3GUBsdkElCV+dvaygdgiQPbH1l72LkYuDmaBRkaJy/+7mUASwgLOE
 j1vpwIlODh4BfQlDh3gBQkLCdhLXFm0FGwOr4CgxMmZT8BsZgEdiQW7P7GBlDMLSEss/8cBEu
 YUcJBo/XwDbKKogIrElQlv2SHGKEh0TD/GBFIuIcAt8bfbfgIj/ywkQ2chGToLYegCRuZVjBr
 FqUVlqUW6hpZ6SUWZ6RkluYmZObqGBqZ6uanFxYnpqTmJScV6yfm5mxiBQVjPwMC4g/FRv98h
 RkkOJiVRXgfGaeFCfEn5KZUZicUZ8UWlOanFhxhlODiUJHh3SwDlBItS01Mr0jJzgPEAk5bg4
 FES4WUFxoQQb3FBYm5xZjpE6hSjJceLadfWMnFcmw4iF/y4vZZJiCUvPy9VSpzXAWSeAEhDRm
 ke3DhYzF5ilJUS5mVkYGAQ4ilILcrNLEGVf8UozsGoJMybDDKFJzOvBG7rK6CDmIAOWsAzGeS
 gkkSElFQDY77+9G8y2//OKb2Y5tq1cfmsYs1FFhbWEm2K1Xt9ix/FTdZxSy+SNrxSvWjl38N6
 3lyyveZ5S6teL7uylF/5ROqdV4wf5Jh2OW9y/jn17ZrpPRH7PWbEKcyLb+dc4GBcsPZS3eQ7D
 g4l2UWhO3RP7W15/HmOSPR5lmuXfESDsk/uOar/8b2WrhJLcUaioRZzUXEiAMfMQyzUAgAA
X-Env-Sender: prvs=0073ad739=wei.liu2@citrix.com
X-Msg-Ref: server-13.tower-206.messagelabs.com!1469454779!35595985!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 28255 invoked from network); 25 Jul 2016 13:53:00 -0000
Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89)
 by server-13.tower-206.messagelabs.com with RC4-SHA encrypted SMTP;
 25 Jul 2016 13:53:00 -0000
X-IronPort-AV: E=Sophos;i="5.28,419,1464652800"; d="scan'208";a="368201052"
Date: Mon, 25 Jul 2016 14:52:56 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Juergen Gross <jgross@suse.com>
Message-ID: <20160725135256.GR27082@citrix.com>
References: <1468917865-12828-1-git-send-email-jgross@suse.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <1468917865-12828-1-git-send-email-jgross@suse.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA1
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 wei.liu2@citrix.com, samuel.thibault@ens-lyon.org
Subject: Re: [Minios-devel] [PATCH 0/9] mini-os: prepare for support of
	ballooning
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2VyaWVzOgoKUmV2aWV3ZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jul 30 02:36:05 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 30 Jul 2016 02: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bTK8B-0001kG-HW; Sat, 30 Jul 2016 02:36:03 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <yukaigoforit@gmail.com>) id 1bTK8A-0001kA-5f
 for minios-devel@lists.xenproject.org; Sat, 30 Jul 2016 02:36:02 +0000
Received: from [85.158.143.35] by server-2.bemta-6.messagelabs.com id
 0A/37-13744-1921C975; Sat, 30 Jul 2016 02:36:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrHIsWRWlGSWpSXmKPExsVyMfSake4EoTn
 hBhdeqVu8/bqE2YHR4/CHKywBjFGsmXlJ+RUJrBl3WppYCs7zV1yY1M/awPiRt4uRi0NIYDaj
 xNH2M4wgDovAHRaJIw/3gjkSAj9YJF4t2svaxcgJ5ORIbHz0mA3CLpbo3faeCcTmFRCUODnzC
 UsXIwcHm4CqxI+NeSBhFiDzyMrHjBAlARI/Py5lAikRFtCQ+HYnFCQsAlTSe7SZGcRmFvCS2L
 f7LPsERp5ZSIbOQpKaBdTNLKAusX6eEERYTeL2tqvsELa2xLKFr5kXMLKuYlQvTi0qSy3SNdV
 LKspMzyjJTczM0TU0MNPLTS0uTkxPzUlMKtZLzs/dxAgMNQYg2ME4/bL/IUZJDiYlUV6b07PD
 hfiS8lMqMxKLM+KLSnNSiw8xynBwKEnwqgnMCRcSLEpNT61Iy8wBBj1MWoKDR0mENxYkzVtck
 JhbnJkOkTrFaMyx5fe1tUwc26beW8skxJKXn5cqJc4rLAhUKgBSmlGaBzcIFo2XGGWlhHkZgU
 4T4ilILcrNLEGVf8UozsGoJMz7iR9oCk9mXgncvldApzABnVIcOwPklJJEhJRUA+P21dtNDhv
 eC84o+VwlWHV1io38+zjemp9Cej+tPjcrTHvxfqmF6c/ja393PnvHslLHeU7OY/Vn2teyvJ9/
 vvonJtlXtufuqbW9v8/fTz5w/eTSBVwfOtf+UTptlh9UsE5rh91cvlzLT+qy9vN5tLi3qEVps
 Z655O0stedpbJqI2ISCt7FKpjuUWIozEg21mIuKEwEXd7NewQIAAA==
X-Env-Sender: yukaigoforit@gmail.com
X-Msg-Ref: server-9.tower-21.messagelabs.com!1469846159!26260737!1
X-Originating-IP: [209.85.214.50]
X-SpamReason: No, hits=0.3 required=7.0 tests=HTML_60_70,HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21256 invoked from network); 30 Jul 2016 02:36:00 -0000
Received: from mail-it0-f50.google.com (HELO mail-it0-f50.google.com)
 (209.85.214.50)
 by server-9.tower-21.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP;
 30 Jul 2016 02:36:00 -0000
Received: by mail-it0-f50.google.com with SMTP id f6so123699853ith.0
 for <minios-devel@lists.xenproject.org>; Fri, 29 Jul 2016 19:36:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:from:date:message-id:subject:to;
 bh=I0QtDX1FNuC6UGQM/pa93FmtT9PbUB9jALcLJI/q/uM=;
 b=M18ZKgFLuNAI0R2wpqaKCjPqb9bHU7Jf+ScUUNi9K+nZGlmQrOHN+n0lgtbXQqFj2+
 kfNH8VrmHAXrcHo07eejAt/SR72PhQSEtkb1od84eC7y3lS24pErBbIPny72LhFJkmWB
 eKaW+iBbUgSQVw4iXAiDmtyjQWTpl0v/8q6PBTDFq4JOuSRhh+fiZO//ntyMlsJ8eHZy
 Ya9Via4nMkPo8xbgMhXbgFPXFGizSBBRxoL6QAsD9OiT5/4NT+urA9CI6h6BZc4VoeIk
 VmNsCFhqdrdq1bPDk+i7FDcK4/BY9hRBqXggHpJJDxvygjcONh6/0Hk5Lle0Es3fo5TL
 kTkw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=I0QtDX1FNuC6UGQM/pa93FmtT9PbUB9jALcLJI/q/uM=;
 b=C14e0yfveY/65GhZgEUCgxlwkm4Rdw1Vy94YtivbRofXI1NErtZ9tkGqmZQqlzQ1VZ
 lMBP11GK0p4hyLDeOM6xjHYtfM48aQ+Z7KDGWaDrRXz+1q434QlVinpWa/mfEwELeF4F
 i6rdc9bAjepgHYXsuwojAeXVDoIGOtlHmKvlbervgXJ2clk4/d9YdeRZIbokEMYVN7yr
 feAqSuA3oqE3vwIh1KNlO2a41Lu6gor4lLrOqQdElorQWHkNOO9LrvFxuJUoIL4yXjQV
 KUE4Tj3sut9WjrY6wkyIapJ6mrzXh0fe6piLnI1hRsizY5ckcVXi9cNjvIN8a6WYlVhP
 yQlQ==
X-Gm-Message-State: AEkoouvn0VIlJqRQgoR0rmKRji2SjMWKIuA3+bXDdcZAcNlqw93nou5qPViRK4i0qniNQ8Eq2Uli3ylgpIGL9A==
X-Received: by 10.36.91.134 with SMTP id g128mr49318133itb.42.1469846159122;
 Fri, 29 Jul 2016 19:35:59 -0700 (PDT)
MIME-Version: 1.0
From: Kai Yu <yukaigoforit@gmail.com>
Date: Sat, 30 Jul 2016 02:35:49 +0000
Message-ID: <CAMW3DFtGt3pFBWs9RXz4VkCccFwe9-Wx7_sVvnm3=OLkWZ_XQw@mail.gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [Minios-devel] Web server on minios restricted
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0856456110412028488=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============0856456110412028488==
Content-Type: multipart/alternative; boundary=001a1144a1e630674e0538d13ac3

--001a1144a1e630674e0538d13ac3
Content-Type: text/plain; charset=UTF-8

I implement a mini web server on minios, and it runs okay. Then  I want to
run several servers simultaneously, each one on a separate minios vm, all
vms on one physical machine. I use the weighttp tools to test all the
servers simultaneously. But when vm number >5, only 4 servers on 4 separate vms
can give response, the remaining all time out. Then I alter the redis code
to run on minios, and it has the same problem. Why  is the vm number
restricted?

thanks.

Collins

--001a1144a1e630674e0538d13ac3
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><font face=3D"georgia, serif">I implement a mini web serve=
r on minios, and it runs okay. Then =C2=A0I want to run several servers sim=
ultaneously, each one on a separate minios vm, all vms on one physical mach=
ine. I use the weighttp tools to test all the servers=C2=A0</font><span sty=
le=3D"font-family:georgia,serif">simultaneously</span><font face=3D"georgia=
, serif">. But when vm number &gt;5, only 4 servers on 4=C2=A0</font><span =
style=3D"font-family:georgia,serif">separate<span class=3D"inbox-inbox-Appl=
e-converted-space">=C2=A0vms can give response, the remaining all time out.=
 Then I alter the redis code to run on minios, and it has the same problem.=
 Why=C2=A0</span></span><span style=3D"font-family:georgia,serif"><span cla=
ss=3D"inbox-inbox-Apple-converted-space">=C2=A0</span>is</span>=C2=A0<span =
style=3D"font-family:georgia,serif"><span class=3D"inbox-inbox-Apple-conver=
ted-space">the vm number restricted?</span></span><div><span style=3D"font-=
family:georgia,serif"><span class=3D"inbox-inbox-Apple-converted-space"><br=
></span></span></div><div><span style=3D"font-family:georgia,serif"><span c=
lass=3D"inbox-inbox-Apple-converted-space">thanks.</span></span></div><div>=
<br></div><div><font face=3D"georgia, serif">Collins</font></div></div>

--001a1144a1e630674e0538d13ac3--


--===============0856456110412028488==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

--===============0856456110412028488==--


From minios-devel-bounces@lists.xenproject.org Sat Jul 30 02:36:05 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 30 Jul 2016 02: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bTK8B-0001kG-HW; Sat, 30 Jul 2016 02:36:03 +0000
Received: from mail6.bemta6.messagelabs.com ([85.158.143.247])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <yukaigoforit@gmail.com>) id 1bTK8A-0001kA-5f
 for minios-devel@lists.xenproject.org; Sat, 30 Jul 2016 02:36:02 +0000
Received: from [85.158.143.35] by server-2.bemta-6.messagelabs.com id
 0A/37-13744-1921C975; Sat, 30 Jul 2016 02:36:01 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrHIsWRWlGSWpSXmKPExsVyMfSake4EoTn
 hBhdeqVu8/bqE2YHR4/CHKywBjFGsmXlJ+RUJrBl3WppYCs7zV1yY1M/awPiRt4uRi0NIYDaj
 xNH2M4wgDovAHRaJIw/3gjkSAj9YJF4t2svaxcgJ5ORIbHz0mA3CLpbo3faeCcTmFRCUODnzC
 UsXIwcHm4CqxI+NeSBhFiDzyMrHjBAlARI/Py5lAikRFtCQ+HYnFCQsAlTSe7SZGcRmFvCS2L
 f7LPsERp5ZSIbOQpKaBdTNLKAusX6eEERYTeL2tqvsELa2xLKFr5kXMLKuYlQvTi0qSy3SNdV
 LKspMzyjJTczM0TU0MNPLTS0uTkxPzUlMKtZLzs/dxAgMNQYg2ME4/bL/IUZJDiYlUV6b07PD
 hfiS8lMqMxKLM+KLSnNSiw8xynBwKEnwqgnMCRcSLEpNT61Iy8wBBj1MWoKDR0mENxYkzVtck
 JhbnJkOkTrFaMyx5fe1tUwc26beW8skxJKXn5cqJc4rLAhUKgBSmlGaBzcIFo2XGGWlhHkZgU
 4T4ilILcrNLEGVf8UozsGoJMz7iR9oCk9mXgncvldApzABnVIcOwPklJJEhJRUA+P21dtNDhv
 eC84o+VwlWHV1io38+zjemp9Cej+tPjcrTHvxfqmF6c/ja393PnvHslLHeU7OY/Vn2teyvJ9/
 vvonJtlXtufuqbW9v8/fTz5w/eTSBVwfOtf+UTptlh9UsE5rh91cvlzLT+qy9vN5tLi3qEVps
 Z655O0stedpbJqI2ISCt7FKpjuUWIozEg21mIuKEwEXd7NewQIAAA==
X-Env-Sender: yukaigoforit@gmail.com
X-Msg-Ref: server-9.tower-21.messagelabs.com!1469846159!26260737!1
X-Originating-IP: [209.85.214.50]
X-SpamReason: No, hits=0.3 required=7.0 tests=HTML_60_70,HTML_MESSAGE
X-StarScan-Received: 
X-StarScan-Version: 8.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 21256 invoked from network); 30 Jul 2016 02:36:00 -0000
Received: from mail-it0-f50.google.com (HELO mail-it0-f50.google.com)
 (209.85.214.50)
 by server-9.tower-21.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP;
 30 Jul 2016 02:36:00 -0000
Received: by mail-it0-f50.google.com with SMTP id f6so123699853ith.0
 for <minios-devel@lists.xenproject.org>; Fri, 29 Jul 2016 19:36:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:from:date:message-id:subject:to;
 bh=I0QtDX1FNuC6UGQM/pa93FmtT9PbUB9jALcLJI/q/uM=;
 b=M18ZKgFLuNAI0R2wpqaKCjPqb9bHU7Jf+ScUUNi9K+nZGlmQrOHN+n0lgtbXQqFj2+
 kfNH8VrmHAXrcHo07eejAt/SR72PhQSEtkb1od84eC7y3lS24pErBbIPny72LhFJkmWB
 eKaW+iBbUgSQVw4iXAiDmtyjQWTpl0v/8q6PBTDFq4JOuSRhh+fiZO//ntyMlsJ8eHZy
 Ya9Via4nMkPo8xbgMhXbgFPXFGizSBBRxoL6QAsD9OiT5/4NT+urA9CI6h6BZc4VoeIk
 VmNsCFhqdrdq1bPDk+i7FDcK4/BY9hRBqXggHpJJDxvygjcONh6/0Hk5Lle0Es3fo5TL
 kTkw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=I0QtDX1FNuC6UGQM/pa93FmtT9PbUB9jALcLJI/q/uM=;
 b=C14e0yfveY/65GhZgEUCgxlwkm4Rdw1Vy94YtivbRofXI1NErtZ9tkGqmZQqlzQ1VZ
 lMBP11GK0p4hyLDeOM6xjHYtfM48aQ+Z7KDGWaDrRXz+1q434QlVinpWa/mfEwELeF4F
 i6rdc9bAjepgHYXsuwojAeXVDoIGOtlHmKvlbervgXJ2clk4/d9YdeRZIbokEMYVN7yr
 feAqSuA3oqE3vwIh1KNlO2a41Lu6gor4lLrOqQdElorQWHkNOO9LrvFxuJUoIL4yXjQV
 KUE4Tj3sut9WjrY6wkyIapJ6mrzXh0fe6piLnI1hRsizY5ckcVXi9cNjvIN8a6WYlVhP
 yQlQ==
X-Gm-Message-State: AEkoouvn0VIlJqRQgoR0rmKRji2SjMWKIuA3+bXDdcZAcNlqw93nou5qPViRK4i0qniNQ8Eq2Uli3ylgpIGL9A==
X-Received: by 10.36.91.134 with SMTP id g128mr49318133itb.42.1469846159122;
 Fri, 29 Jul 2016 19:35:59 -0700 (PDT)
MIME-Version: 1.0
From: Kai Yu <yukaigoforit@gmail.com>
Date: Sat, 30 Jul 2016 02:35:49 +0000
Message-ID: <CAMW3DFtGt3pFBWs9RXz4VkCccFwe9-Wx7_sVvnm3=OLkWZ_XQw@mail.gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [Minios-devel] Web server on minios restricted
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0856456110412028488=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============0856456110412028488==
Content-Type: multipart/alternative; boundary=001a1144a1e630674e0538d13ac3

--001a1144a1e630674e0538d13ac3
Content-Type: text/plain; charset=UTF-8

I implement a mini web server on minios, and it runs okay. Then  I want to
run several servers simultaneously, each one on a separate minios vm, all
vms on one physical machine. I use the weighttp tools to test all the
servers simultaneously. But when vm number >5, only 4 servers on 4 separate vms
can give response, the remaining all time out. Then I alter the redis code
to run on minios, and it has the same problem. Why  is the vm number
restricted?

thanks.

Collins

--001a1144a1e630674e0538d13ac3
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><font face=3D"georgia, serif">I implement a mini web serve=
r on minios, and it runs okay. Then =C2=A0I want to run several servers sim=
ultaneously, each one on a separate minios vm, all vms on one physical mach=
ine. I use the weighttp tools to test all the servers=C2=A0</font><span sty=
le=3D"font-family:georgia,serif">simultaneously</span><font face=3D"georgia=
, serif">. But when vm number &gt;5, only 4 servers on 4=C2=A0</font><span =
style=3D"font-family:georgia,serif">separate<span class=3D"inbox-inbox-Appl=
e-converted-space">=C2=A0vms can give response, the remaining all time out.=
 Then I alter the redis code to run on minios, and it has the same problem.=
 Why=C2=A0</span></span><span style=3D"font-family:georgia,serif"><span cla=
ss=3D"inbox-inbox-Apple-converted-space">=C2=A0</span>is</span>=C2=A0<span =
style=3D"font-family:georgia,serif"><span class=3D"inbox-inbox-Apple-conver=
ted-space">the vm number restricted?</span></span><div><span style=3D"font-=
family:georgia,serif"><span class=3D"inbox-inbox-Apple-converted-space"><br=
></span></span></div><div><span style=3D"font-family:georgia,serif"><span c=
lass=3D"inbox-inbox-Apple-converted-space">thanks.</span></span></div><div>=
<br></div><div><font face=3D"georgia, serif">Collins</font></div></div>

--001a1144a1e630674e0538d13ac3--


--===============0856456110412028488==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

--===============0856456110412028488==--


From minios-devel-bounces@lists.xenproject.org Sat Jul 30 15:50:02 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 30 Jul 2016 15:50: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bTWWW-0004qZ-1i; Sat, 30 Jul 2016 15:50:00 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=01296b64e=wei.liu2@citrix.com>)
 id 1bTWWU-0004qT-AB
 for minios-devel@lists.xenproject.org; Sat, 30 Jul 2016 15:49:58 +0000
Received: from [85.158.137.68] by server-13.bemta-3.messagelabs.com id
 AD/A1-06162-5ACCC975; Sat, 30 Jul 2016 15:49:57 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrEIsWRWlGSWpSXmKPExsXitHSDve7SM3P
 CDV5vZrV4+3UJswOjx+EPV1gCGKNYM/OS8isSWDMObtnNVHCDveLKzvcsDYyr2LoYOTkkBPwl
 jq2aBWRzcLAIqEqcXcoFEmYTUJb42dkLViICZH96t4ARxGYWcJM492AOC4gtLGAtMWt2N5jNK
 6An8fxoDzOILSQQILG89QErRFxQ4uTMJywQvToSC3Z/AlvFLCAtsfwfB0iYUyBQ4tOOo2Alog
 IqElcmvGWHGKMg0TH9GBPEldwSt09PZZ7AyD8LydRZSKbOQpi6gJF5FaNGcWpRWWqRrqGlXlJ
 RZnpGSW5iZo6uoYGxXm5qcXFiempOYlKxXnJ+7iZGYPjVMzAw7mD8fdzvEKMkB5OSKK+r7Zxw
 Ib6k/JTKjMTijPii0pzU4kOMMhwcShK8taeBcoJFqempFWmZOcBIgElLcPAoifB+OgmU5i0uS
 MwtzkyHSJ1i1OVY8OP2WiYhlrz8vFQpcV5mkBkCIEUZpXlwI2BReYlRVkqYl5GBgUGIpyC1KD
 ezBFX+FaM4B6OSMG/yKaApPJl5JXCbXgEdwQR0RKI92BEliQgpqQbG85qn42Zfyw6fsOuf7rd
 Lx0UPtemEBuik2j33cu/wnW1yz+lcTnT6By4bpwuStXFLjbKaRW76fKxhNk58yb6g9Y/m/Ff5
 l6OshabdF+ZYIrhgcs/XUIVPEy9XyayeM2n55686ZsZFKcInfV3st8S8/PHpUG9kL4vicf/9X
 zv+t/+x9lR4FPBOiaU4I9FQi7moOBEAxtjnwcUCAAA=
X-Env-Sender: prvs=01296b64e=wei.liu2@citrix.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1469893795!49245104!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 61534 invoked from network); 30 Jul 2016 15:49:56 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 30 Jul 2016 15:49:56 -0000
X-IronPort-AV: E=Sophos;i="5.28,445,1464652800"; d="scan'208";a="376494085"
Date: Sat, 30 Jul 2016 16:49:11 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Kai Yu <yukaigoforit@gmail.com>
Message-ID: <20160730154911.GA5874@citrix.com>
References: <CAMW3DFtGt3pFBWs9RXz4VkCccFwe9-Wx7_sVvnm3=OLkWZ_XQw@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CAMW3DFtGt3pFBWs9RXz4VkCccFwe9-Wx7_sVvnm3=OLkWZ_XQw@mail.gmail.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA2
Cc: minios-devel@lists.xenproject.org, Wei Liu <wei.liu2@citrix.com>
Subject: Re: [Minios-devel] Web server on minios restricted
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gU2F0LCBKdWwgMzAsIDIwMTYgYXQgMDI6MzU6NDlBTSArMDAwMCwgS2FpIFl1IHdyb3RlOgo+
IEkgaW1wbGVtZW50IGEgbWluaSB3ZWIgc2VydmVyIG9uIG1pbmlvcywgYW5kIGl0IHJ1bnMgb2th
eS4gVGhlbiAgSSB3YW50IHRvCj4gcnVuIHNldmVyYWwgc2VydmVycyBzaW11bHRhbmVvdXNseSwg
ZWFjaCBvbmUgb24gYSBzZXBhcmF0ZSBtaW5pb3Mgdm0sIGFsbAo+IHZtcyBvbiBvbmUgcGh5c2lj
YWwgbWFjaGluZS4gSSB1c2UgdGhlIHdlaWdodHRwIHRvb2xzIHRvIHRlc3QgYWxsIHRoZQo+IHNl
cnZlcnMgc2ltdWx0YW5lb3VzbHkuIEJ1dCB3aGVuIHZtIG51bWJlciA+NSwgb25seSA0IHNlcnZl
cnMgb24gNCBzZXBhcmF0ZSB2bXMKPiBjYW4gZ2l2ZSByZXNwb25zZSwgdGhlIHJlbWFpbmluZyBh
bGwgdGltZSBvdXQuIFRoZW4gSSBhbHRlciB0aGUgcmVkaXMgY29kZQo+IHRvIHJ1biBvbiBtaW5p
b3MsIGFuZCBpdCBoYXMgdGhlIHNhbWUgcHJvYmxlbS4gV2h5ICBpcyB0aGUgdm0gbnVtYmVyCj4g
cmVzdHJpY3RlZD8KPiAKCkknbSBjYW4ndCB0aGluayBvZiB3aHkgc2VwYXJhdGUgVk1zIGNhbiBh
ZmZlY3QgZWFjaCBvdGhlci4gSSdtIGluY2xpbmVkCnRvIHRoaW5rIHRoZXJlIGFyZSBwcm9ibGVt
cyB3aXRoIHlvdXIgRG9tMCBuZXR3b3JrIHNldHVwLgoKRG8geW91IGhhdmUgc2ltaWxhciBwcm9i
bGVtIGlmIHlvdSBydW4gc2V2ZXJhbCBMaW51eCBWTXM/IFRoYXQgd291bGQKaGVscCB5b3UgaWRl
bnRpZnkgd2hlcmUgdGhlIHByb2JsZW0gaXMuCgpXZWkuCgo+IHRoYW5rcy4KPiAKPiBDb2xsaW5z
Cgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
Zwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jul 30 15:50:02 2016
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 30 Jul 2016 15:50: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 <minios-devel-bounces@lists.xenproject.org>)
	id 1bTWWW-0004qZ-1i; Sat, 30 Jul 2016 15:50:00 +0000
Received: from mail6.bemta3.messagelabs.com ([195.245.230.39])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <prvs=01296b64e=wei.liu2@citrix.com>)
 id 1bTWWU-0004qT-AB
 for minios-devel@lists.xenproject.org; Sat, 30 Jul 2016 15:49:58 +0000
Received: from [85.158.137.68] by server-13.bemta-3.messagelabs.com id
 AD/A1-06162-5ACCC975; Sat, 30 Jul 2016 15:49:57 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrEIsWRWlGSWpSXmKPExsXitHSDve7SM3P
 CDV5vZrV4+3UJswOjx+EPV1gCGKNYM/OS8isSWDMObtnNVHCDveLKzvcsDYyr2LoYOTkkBPwl
 jq2aBWRzcLAIqEqcXcoFEmYTUJb42dkLViICZH96t4ARxGYWcJM492AOC4gtLGAtMWt2N5jNK
 6An8fxoDzOILSQQILG89QErRFxQ4uTMJywQvToSC3Z/AlvFLCAtsfwfB0iYUyBQ4tOOo2Alog
 IqElcmvGWHGKMg0TH9GBPEldwSt09PZZ7AyD8LydRZSKbOQpi6gJF5FaNGcWpRWWqRrqGlXlJ
 RZnpGSW5iZo6uoYGxXm5qcXFiempOYlKxXnJ+7iZGYPjVMzAw7mD8fdzvEKMkB5OSKK+r7Zxw
 Ib6k/JTKjMTijPii0pzU4kOMMhwcShK8taeBcoJFqempFWmZOcBIgElLcPAoifB+OgmU5i0uS
 MwtzkyHSJ1i1OVY8OP2WiYhlrz8vFQpcV5mkBkCIEUZpXlwI2BReYlRVkqYl5GBgUGIpyC1KD
 ezBFX+FaM4B6OSMG/yKaApPJl5JXCbXgEdwQR0RKI92BEliQgpqQbG85qn42Zfyw6fsOuf7rd
 Lx0UPtemEBuik2j33cu/wnW1yz+lcTnT6By4bpwuStXFLjbKaRW76fKxhNk58yb6g9Y/m/Ff5
 l6OshabdF+ZYIrhgcs/XUIVPEy9XyayeM2n55686ZsZFKcInfV3st8S8/PHpUG9kL4vicf/9X
 zv+t/+x9lR4FPBOiaU4I9FQi7moOBEAxtjnwcUCAAA=
X-Env-Sender: prvs=01296b64e=wei.liu2@citrix.com
X-Msg-Ref: server-15.tower-31.messagelabs.com!1469893795!49245104!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.77; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 61534 invoked from network); 30 Jul 2016 15:49:56 -0000
Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63)
 by server-15.tower-31.messagelabs.com with RC4-SHA encrypted SMTP;
 30 Jul 2016 15:49:56 -0000
X-IronPort-AV: E=Sophos;i="5.28,445,1464652800"; d="scan'208";a="376494085"
Date: Sat, 30 Jul 2016 16:49:11 +0100
From: Wei Liu <wei.liu2@citrix.com>
To: Kai Yu <yukaigoforit@gmail.com>
Message-ID: <20160730154911.GA5874@citrix.com>
References: <CAMW3DFtGt3pFBWs9RXz4VkCccFwe9-Wx7_sVvnm3=OLkWZ_XQw@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <CAMW3DFtGt3pFBWs9RXz4VkCccFwe9-Wx7_sVvnm3=OLkWZ_XQw@mail.gmail.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-DLP: MIA2
Cc: minios-devel@lists.xenproject.org, Wei Liu <wei.liu2@citrix.com>
Subject: Re: [Minios-devel] Web server on minios restricted
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/cgi-bin/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gU2F0LCBKdWwgMzAsIDIwMTYgYXQgMDI6MzU6NDlBTSArMDAwMCwgS2FpIFl1IHdyb3RlOgo+
IEkgaW1wbGVtZW50IGEgbWluaSB3ZWIgc2VydmVyIG9uIG1pbmlvcywgYW5kIGl0IHJ1bnMgb2th
eS4gVGhlbiAgSSB3YW50IHRvCj4gcnVuIHNldmVyYWwgc2VydmVycyBzaW11bHRhbmVvdXNseSwg
ZWFjaCBvbmUgb24gYSBzZXBhcmF0ZSBtaW5pb3Mgdm0sIGFsbAo+IHZtcyBvbiBvbmUgcGh5c2lj
YWwgbWFjaGluZS4gSSB1c2UgdGhlIHdlaWdodHRwIHRvb2xzIHRvIHRlc3QgYWxsIHRoZQo+IHNl
cnZlcnMgc2ltdWx0YW5lb3VzbHkuIEJ1dCB3aGVuIHZtIG51bWJlciA+NSwgb25seSA0IHNlcnZl
cnMgb24gNCBzZXBhcmF0ZSB2bXMKPiBjYW4gZ2l2ZSByZXNwb25zZSwgdGhlIHJlbWFpbmluZyBh
bGwgdGltZSBvdXQuIFRoZW4gSSBhbHRlciB0aGUgcmVkaXMgY29kZQo+IHRvIHJ1biBvbiBtaW5p
b3MsIGFuZCBpdCBoYXMgdGhlIHNhbWUgcHJvYmxlbS4gV2h5ICBpcyB0aGUgdm0gbnVtYmVyCj4g
cmVzdHJpY3RlZD8KPiAKCkknbSBjYW4ndCB0aGluayBvZiB3aHkgc2VwYXJhdGUgVk1zIGNhbiBh
ZmZlY3QgZWFjaCBvdGhlci4gSSdtIGluY2xpbmVkCnRvIHRoaW5rIHRoZXJlIGFyZSBwcm9ibGVt
cyB3aXRoIHlvdXIgRG9tMCBuZXR3b3JrIHNldHVwLgoKRG8geW91IGhhdmUgc2ltaWxhciBwcm9i
bGVtIGlmIHlvdSBydW4gc2V2ZXJhbCBMaW51eCBWTXM/IFRoYXQgd291bGQKaGVscCB5b3UgaWRl
bnRpZnkgd2hlcmUgdGhlIHByb2JsZW0gaXMuCgpXZWkuCgo+IHRoYW5rcy4KPiAKPiBDb2xsaW5z
Cgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
Zwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

