From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: 312 Newsgroups: gmane.emacs.bugs Subject: bug#24038: etags missing tag for static prototypes in header file Date: Wed, 20 Jul 2016 21:39:08 +0800 (GMT+08:00) Message-ID: <6bf5b612.9f65.156088809dd.Coremail.moan1223@163.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_120532_595808780.1469021948372" X-Trace: ger.gmane.org 1469030192 7960 80.91.229.3 (20 Jul 2016 15:56:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 20 Jul 2016 15:56:32 +0000 (UTC) To: 24038@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jul 20 17:56:20 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bPtr8-0005b4-Ne for geb-bug-gnu-emacs@m.gmane.org; Wed, 20 Jul 2016 17:56:19 +0200 Original-Received: from localhost ([::1]:35396 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPtr7-0000cK-E3 for geb-bug-gnu-emacs@m.gmane.org; Wed, 20 Jul 2016 11:56:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49720) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPtqw-0000aa-8b for bug-gnu-emacs@gnu.org; Wed, 20 Jul 2016 11:56:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bPtqt-0006dW-CL for bug-gnu-emacs@gnu.org; Wed, 20 Jul 2016 11:56:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:46467) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPtqs-0006dQ-Ta for bug-gnu-emacs@gnu.org; Wed, 20 Jul 2016 11:56:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bPtqs-0003LV-HP for bug-gnu-emacs@gnu.org; Wed, 20 Jul 2016 11:56:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: 312 Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Jul 2016 15:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 24038 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: "bug-gnu-emacs@gnu.org" Original-Received: via spool by submit@debbugs.gnu.org id=B.146903012812809 (code B ref -1); Wed, 20 Jul 2016 15:56:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 20 Jul 2016 15:55:28 +0000 Original-Received: from localhost ([127.0.0.1]:58802 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bPtqI-0003KU-U5 for submit@debbugs.gnu.org; Wed, 20 Jul 2016 11:55:28 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:59096) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bPsCZ-0000oy-BE for submit@debbugs.gnu.org; Wed, 20 Jul 2016 10:10:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bPsCQ-0005rV-Qi for submit@debbugs.gnu.org; Wed, 20 Jul 2016 10:10:14 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:53342) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPsCQ-0005r2-MH for submit@debbugs.gnu.org; Wed, 20 Jul 2016 10:10:10 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50040) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPsCL-000370-4K for bug-gnu-emacs@gnu.org; Wed, 20 Jul 2016 10:10:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bPsCF-0005ln-Nn for bug-gnu-emacs@gnu.org; Wed, 20 Jul 2016 10:10:04 -0400 Original-Received: from mproxyhzb2.163.com ([123.58.178.202]:39029) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPsCD-0005kI-Er for bug-gnu-emacs@gnu.org; Wed, 20 Jul 2016 10:09:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=wMbhP ebkgV+H/lWOWzMQh7F01fzZVCr9OpApo8Z+EPY=; b=WTL2hTvy2VG9+Jn2WN9jj fPMARqb6BmsKlc3SUUdddYa9nl4gUlV3ulmX9KZxCFa6/tko5HCoRy48m+h02Ns0 YLkuYShNAoJynKgLh7eAR/ZAoaipMeTnvf/6vlJVYle6SZLfw69gYj+EQRdMKbDP jBsdfoh0yLno9P0agCzwnQ= Original-Received: from moan1223$163.com ( [183.193.121.143] ) by ajax-webmail-wmsvr168 (Coremail) ; Wed, 20 Jul 2016 21:39:08 +0800 (GMT+08:00) X-Originating-IP: [183.193.121.143] X-Priority: 3 X-Mailer: Coremail Webmail Server Version SP_ntes V3.5 build 20150911(74783.7961) Copyright (c) 2002-2016 www.mailtech.cn 163com X-CM-CTRLDATA: jQbajmZvb3Rlcl9odG09NDI2Ojk= X-CM-TRANSID: qMGowAAnxnn9fo9XQusCAA--.25042W X-CM-SenderInfo: xprd0iqsstqiywtou0bp/1tbiMASsolWBXJcBoAABsF X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Mailman-Approved-At: Wed, 20 Jul 2016 11:55:25 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:121317 Archived-At: ------=_Part_120532_595808780.1469021948372 Content-Type: multipart/alternative; boundary="----=_Part_120534_166383477.1469021948373" ------=_Part_120534_166383477.1469021948373 Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 SGkgRXZlcnlvbmUsCgpJIGZvdW5kIGV0YWdzIGZhaWxzIHRvIGNyZWF0ZSBzb21lIHRhZ3MgZm9y IHN0YXRpYyBtZXRob2QgaW4gaGVhZGVyIGZpbGUuIElzIHRoaXMgYSBrbm93biBpc3N1ZS4KCmZv ciBleGFtcGxlOgoKZXRhZ3MgTmVzdGVkTmFtZVNwZWNpZmllci5oCgoKbGluZXMgYmV0d2VlbiAx MDAgYW5kIDE2MiBpcyBpZ25vcmVkLCB0aG9zZSBhcmUgYWxsIHN0YXRpYyBwcm90b3R5cGUuCgpE b26hr3Qga25vdyB3aHkgdGhpcyBoYXBwZW5lZC4KCk15IGVtYWNzIHZlcnNpb24gaXMgMjUuMS41 MAoKQmVzdCBSZWdhcmRzCgoKSmFja3NvbiBaaGVuZwoKCgog ------=_Part_120534_166383477.1469021948373 Content-Type: text/html; charset=GBK Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6MS40Ij5IaSBFdmVyeW9uZSw8YnI+PGJyPkkgZm91bmQg ZXRhZ3MgZmFpbHMgdG8gY3JlYXRlIHNvbWUgdGFncyBmb3Igc3RhdGljIG1ldGhvZCBpbiBoZWFk ZXIgZmlsZS4gSXMgdGhpcyBhIGtub3duIGlzc3VlLjxicj48YnI+Zm9yIGV4YW1wbGU6PGJyPjxi cj5ldGFncyBOZXN0ZWROYW1lU3BlY2lmaWVyLmg8YnI+PGJyPjxicj5saW5lcyBiZXR3ZWVuIDEw MCBhbmQgMTYyIGlzIGlnbm9yZWQsIHRob3NlIGFyZSBhbGwgc3RhdGljIHByb3RvdHlwZS48YnI+ PGJyPkRvbqGvdCBrbm93IHdoeSB0aGlzIGhhcHBlbmVkLjxicj48YnI+TXkgZW1hY3MgdmVyc2lv biBpcyAyNS4xLjUwPGJyPjxicj5CZXN0IFJlZ2FyZHM8YnI+PGJyPjxicj5KYWNrc29uIFpoZW5n PGJyPjxicj48YnI+PGJyPiZuYnNwOzwvZGl2Pjxicj48YnI+Cg== ------=_Part_120534_166383477.1469021948373-- ------=_Part_120532_595808780.1469021948372 Content-Type: application/octet-stream; name="NestedNameSpecifier.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="NestedNameSpecifier.h" Ly89PT0tLS0gTmVzdGVkTmFtZVNwZWNpZmllci5oIC0gQysrIG5lc3RlZCBuYW1lIHNwZWNpZmll cnMgLS0tLS0qLSBDKysgLSotPT09Ly8KLy8KLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExW TSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQovLwovLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQg dW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLy8gTGljZW5zZS4g U2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwov LwovLyAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIE5lc3RlZE5hbWVTcGVjaWZpZXIgY2xhc3MsIHdo aWNoIHJlcHJlc2VudHMKLy8gIGEgQysrIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KLy8KLy89PT0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tPT09Ly8KI2lmbmRlZiBMTFZNX0NMQU5HX0FTVF9ORVNURUROQU1FU1BFQ0lG SUVSX0gKI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9ORVNURUROQU1FU1BFQ0lGSUVSX0gKCiNpbmNs dWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgiCiNpbmNsdWRlICJsbHZtL0FEVC9Gb2xkaW5n U2V0LmgiCiNpbmNsdWRlICJsbHZtL0FEVC9Qb2ludGVySW50UGFpci5oIgojaW5jbHVkZSAibGx2 bS9TdXBwb3J0L0NvbXBpbGVyLmgiCgpuYW1lc3BhY2UgY2xhbmcgewoKY2xhc3MgQVNUQ29udGV4 dDsKY2xhc3MgQ1hYUmVjb3JkRGVjbDsKY2xhc3MgTmFtZXNwYWNlQWxpYXNEZWNsOwpjbGFzcyBO YW1lc3BhY2VEZWNsOwpjbGFzcyBJZGVudGlmaWVySW5mbzsKc3RydWN0IFByaW50aW5nUG9saWN5 OwpjbGFzcyBUeXBlOwpjbGFzcyBUeXBlTG9jOwpjbGFzcyBMYW5nT3B0aW9uczsKCi8vLyBcYnJp ZWYgUmVwcmVzZW50cyBhIEMrKyBuZXN0ZWQgbmFtZSBzcGVjaWZpZXIsIHN1Y2ggYXMKLy8vICJc OjpzdGQ6OnZlY3RvcjxpbnQ+OjoiLgovLy8KLy8vIEMrKyBuZXN0ZWQgbmFtZSBzcGVjaWZpZXJz IGFyZSB0aGUgcHJlZml4ZXMgdG8gcXVhbGlmaWVkCi8vLyBuYW1lc3BhY2VzLiBGb3IgZXhhbXBs ZSwgImZvbzo6IiBpbiAiZm9vOjp4IiBpcyBhIG5lc3RlZCBuYW1lCi8vLyBzcGVjaWZpZXIuIE5l c3RlZCBuYW1lIHNwZWNpZmllcnMgYXJlIG1hZGUgdXAgb2YgYSBzZXF1ZW5jZSBvZgovLy8gc3Bl Y2lmaWVycywgZWFjaCBvZiB3aGljaCBjYW4gYmUgYSBuYW1lc3BhY2UsIHR5cGUsIGlkZW50aWZp ZXIKLy8vIChmb3IgZGVwZW5kZW50IG5hbWVzKSwgZGVjbHR5cGUgc3BlY2lmaWVyLCBvciB0aGUg Z2xvYmFsIHNwZWNpZmllciAoJzo6JykuCi8vLyBUaGUgbGFzdCB0d28gc3BlY2lmaWVycyBjYW4g b25seSBhcHBlYXIgYXQgdGhlIHN0YXJ0IG9mIGEgCi8vLyBuZXN0ZWQtbmFtZXNwYWNlLXNwZWNp Zmllci4KY2xhc3MgTmVzdGVkTmFtZVNwZWNpZmllciA6IHB1YmxpYyBsbHZtOjpGb2xkaW5nU2V0 Tm9kZSB7CgogIC8vLyBcYnJpZWYgRW51bWVyYXRpb24gZGVzY3JpYmluZwogIGVudW0gU3RvcmVk U3BlY2lmaWVyS2luZCB7CiAgICBTdG9yZWRJZGVudGlmaWVyID0gMCwKICAgIFN0b3JlZERlY2wg PSAxLAogICAgU3RvcmVkVHlwZVNwZWMgPSAyLAogICAgU3RvcmVkVHlwZVNwZWNXaXRoVGVtcGxh dGUgPSAzCiAgfTsKCiAgLy8vIFxicmllZiBUaGUgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHRoYXQg cHJlY2VkZXMgdGhpcyBuZXN0ZWQgbmFtZQogIC8vLyBzcGVjaWZpZXIuCiAgLy8vCiAgLy8vIFRo ZSBwb2ludGVyIGlzIHRoZSBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgdGhhdCBwcmVjZWRlcyB0aGlz CiAgLy8vIG9uZS4gVGhlIGludGVnZXIgc3RvcmVzIG9uZSBvZiB0aGUgZmlyc3QgZm91ciB2YWx1 ZXMgb2YgdHlwZQogIC8vLyBTcGVjaWZpZXJLaW5kLgogIGxsdm06OlBvaW50ZXJJbnRQYWlyPE5l c3RlZE5hbWVTcGVjaWZpZXIgKiwgMiwgU3RvcmVkU3BlY2lmaWVyS2luZD4gUHJlZml4OwoKICAv Ly8gXGJyaWVmIFRoZSBsYXN0IGNvbXBvbmVudCBpbiB0aGUgbmVzdGVkIG5hbWUgc3BlY2lmaWVy LCB3aGljaAogIC8vLyBjYW4gYmUgYW4gaWRlbnRpZmllciwgYSBkZWNsYXJhdGlvbiwgb3IgYSB0 eXBlLgogIC8vLwogIC8vLyBXaGVuIHRoZSBwb2ludGVyIGlzIE5VTEwsIHRoaXMgc3BlY2lmaWVy IHJlcHJlc2VudHMgdGhlIGdsb2JhbAogIC8vLyBzcGVjaWZpZXIgJzo6Jy4gT3RoZXJ3aXNlLCB0 aGUgcG9pbnRlciBpcyBvbmUgb2YKICAvLy8gSWRlbnRpZmllckluZm8qLCBOYW1lc3BhY2UqLCBv ciBUeXBlKiwgZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mCiAgLy8vIHNwZWNpZmllciBhcyBlbmNv ZGVkIHdpdGhpbiB0aGUgcHJlZml4LgogIHZvaWQqIFNwZWNpZmllcjsKCnB1YmxpYzoKICAvLy8g XGJyaWVmIFRoZSBraW5kIG9mIHNwZWNpZmllciB0aGF0IGNvbXBsZXRlcyB0aGlzIG5lc3RlZCBu YW1lCiAgLy8vIHNwZWNpZmllci4KICBlbnVtIFNwZWNpZmllcktpbmQgewogICAgLy8vIFxicmll ZiBBbiBpZGVudGlmaWVyLCBzdG9yZWQgYXMgYW4gSWRlbnRpZmllckluZm8qLgogICAgSWRlbnRp ZmllciwKICAgIC8vLyBcYnJpZWYgQSBuYW1lc3BhY2UsIHN0b3JlZCBhcyBhIE5hbWVzcGFjZURl Y2wqLgogICAgTmFtZXNwYWNlLAogICAgLy8vIFxicmllZiBBIG5hbWVzcGFjZSBhbGlhcywgc3Rv cmVkIGFzIGEgTmFtZXNwYWNlQWxpYXNEZWNsKi4KICAgIE5hbWVzcGFjZUFsaWFzLAogICAgLy8v IFxicmllZiBBIHR5cGUsIHN0b3JlZCBhcyBhIFR5cGUqLgogICAgVHlwZVNwZWMsCiAgICAvLy8g XGJyaWVmIEEgdHlwZSB0aGF0IHdhcyBwcmVjZWRlZCBieSB0aGUgJ3RlbXBsYXRlJyBrZXl3b3Jk LAogICAgLy8vIHN0b3JlZCBhcyBhIFR5cGUqLgogICAgVHlwZVNwZWNXaXRoVGVtcGxhdGUsCiAg ICAvLy8gXGJyaWVmIFRoZSBnbG9iYWwgc3BlY2lmaWVyICc6OicuIFRoZXJlIGlzIG5vIHN0b3Jl ZCB2YWx1ZS4KICAgIEdsb2JhbCwKICAgIC8vLyBcYnJpZWYgTWljcm9zb2Z0J3MgJ19fc3VwZXIn IHNwZWNpZmllciwgc3RvcmVkIGFzIGEgQ1hYUmVjb3JkRGVjbCogb2YKICAgIC8vLyB0aGUgY2xh c3MgaXQgYXBwZWFyZWQgaW4uCiAgICBTdXBlcgogIH07Cgpwcml2YXRlOgogIC8vLyBcYnJpZWYg QnVpbGRzIHRoZSBnbG9iYWwgc3BlY2lmaWVyLgogIE5lc3RlZE5hbWVTcGVjaWZpZXIoKQogICAg OiBQcmVmaXgobnVsbHB0ciwgU3RvcmVkSWRlbnRpZmllciksIFNwZWNpZmllcihudWxscHRyKSB7 fQoKICAvLy8gXGJyaWVmIENvcHkgY29uc3RydWN0b3IgdXNlZCBpbnRlcm5hbGx5IHRvIGNsb25l IG5lc3RlZCBuYW1lCiAgLy8vIHNwZWNpZmllcnMuCiAgTmVzdGVkTmFtZVNwZWNpZmllcihjb25z dCBOZXN0ZWROYW1lU3BlY2lmaWVyICZPdGhlcikKICAgIDogbGx2bTo6Rm9sZGluZ1NldE5vZGUo T3RoZXIpLCBQcmVmaXgoT3RoZXIuUHJlZml4KSwKICAgICAgU3BlY2lmaWVyKE90aGVyLlNwZWNp ZmllcikgewogIH0KCiAgdm9pZCBvcGVyYXRvcj0oY29uc3QgTmVzdGVkTmFtZVNwZWNpZmllciAm KSA9IGRlbGV0ZTsKCiAgLy8vIFxicmllZiBFaXRoZXIgZmluZCBvciBpbnNlcnQgdGhlIGdpdmVu IG5lc3RlZCBuYW1lIHNwZWNpZmllcgogIC8vLyBtb2NrdXAgaW4gdGhlIGdpdmVuIGNvbnRleHQu CiAgc3RhdGljIE5lc3RlZE5hbWVTcGVjaWZpZXIgKkZpbmRPckluc2VydChjb25zdCBBU1RDb250 ZXh0ICZDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgTmVzdGVkTmFtZVNwZWNpZmllciAmTW9ja3VwKTsKCnB1YmxpYzoKICAvLy8gXGJyaWVm IEJ1aWxkcyBhIHNwZWNpZmllciBjb21iaW5pbmcgYSBwcmVmaXggYW5kIGFuIGlkZW50aWZpZXIu CiAgLy8vCiAgLy8vIFRoZSBwcmVmaXggbXVzdCBiZSBkZXBlbmRlbnQsIHNpbmNlIG5lc3RlZCBu YW1lIHNwZWNpZmllcnMKICAvLy8gcmVmZXJlbmNpbmcgYW4gaWRlbnRpZmllciBhcmUgb25seSBw ZXJtaXR0ZWQgd2hlbiB0aGUgaWRlbnRpZmllcgogIC8vLyBjYW5ub3QgYmUgcmVzb2x2ZWQuCiAg c3RhdGljIE5lc3RlZE5hbWVTcGVjaWZpZXIgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDb250 ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZVNwZWNp ZmllciAqUHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRp ZmllckluZm8gKklJKTsKCiAgLy8vIFxicmllZiBCdWlsZHMgYSBuZXN0ZWQgbmFtZSBzcGVjaWZp ZXIgdGhhdCBuYW1lcyBhIG5hbWVzcGFjZS4KICBzdGF0aWMgTmVzdGVkTmFtZVNwZWNpZmllciAq Q3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyICpQcmVmaXgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lc3BhY2VEZWNsICpOUyk7CgogIC8vLyBc YnJpZWYgQnVpbGRzIGEgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHRoYXQgbmFtZXMgYSBuYW1lc3Bh Y2UgYWxpYXMuCiAgc3RhdGljIE5lc3RlZE5hbWVTcGVjaWZpZXIgKkNyZWF0ZShjb25zdCBBU1RD b250ZXh0ICZDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmVz dGVkTmFtZVNwZWNpZmllciAqUHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTmFtZXNwYWNlQWxpYXNEZWNsICpBbGlhcyk7CgogIC8vLyBcYnJpZWYgQnVpbGRzIGEg bmVzdGVkIG5hbWUgc3BlY2lmaWVyIHRoYXQgbmFtZXMgYSB0eXBlLgogIHN0YXRpYyBOZXN0ZWRO YW1lU3BlY2lmaWVyICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lc3RlZE5hbWVTcGVjaWZpZXIgKlByZWZpeCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVGVtcGxhdGUsIGNvbnN0 IFR5cGUgKlQpOwoKICAvLy8gXGJyaWVmIEJ1aWxkcyBhIHNwZWNpZmllciB0aGF0IGNvbnNpc3Rz IG9mIGp1c3QgYW4gaWRlbnRpZmllci4KICAvLy8KICAvLy8gVGhlIG5lc3RlZC1uYW1lLXNwZWNp ZmllciBpcyBhc3N1bWVkIHRvIGJlIGRlcGVuZGVudCwgYnV0IGhhcyBubwogIC8vLyBwcmVmaXgg YmVjYXVzZSB0aGUgcHJlZml4IGlzIGltcGxpZWQgYnkgc29tZXRoaW5nIG91dHNpZGUgb2YgdGhl CiAgLy8vIG5lc3RlZCBuYW1lIHNwZWNpZmllciwgZS5nLiwgaW4gIngtPkJhc2U6OmYiLCB0aGUg IngiIGhhcyBhIGRlcGVuZGVudAogIC8vLyB0eXBlLgogIHN0YXRpYyBOZXN0ZWROYW1lU3BlY2lm aWVyICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXJJbmZvICpJSSk7CgogIC8vLyBcYnJpZWYgUmV0 dXJucyB0aGUgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHJlcHJlc2VudGluZyB0aGUgZ2xvYmFsCiAg Ly8vIHNjb3BlLgogIHN0YXRpYyBOZXN0ZWROYW1lU3BlY2lmaWVyICpHbG9iYWxTcGVjaWZpZXIo Y29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCk7CgogIC8vLyBcYnJpZWYgUmV0dXJucyB0aGUgbmVz dGVkIG5hbWUgc3BlY2lmaWVyIHJlcHJlc2VudGluZyB0aGUgX19zdXBlciBzY29wZQogIC8vLyBm b3IgdGhlIGdpdmVuIENYWFJlY29yZERlY2wuCiAgc3RhdGljIE5lc3RlZE5hbWVTcGVjaWZpZXIg KlN1cGVyU3BlY2lmaWVyKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENYWFJlY29yZERlY2wgKlJEKTsKCiAgLy8v IFxicmllZiBSZXR1cm4gdGhlIHByZWZpeCBvZiB0aGlzIG5lc3RlZCBuYW1lIHNwZWNpZmllci4K ICAvLy8KICAvLy8gVGhlIHByZWZpeCBjb250YWlucyBhbGwgb2YgdGhlIHBhcnRzIG9mIHRoZSBu ZXN0ZWQgbmFtZQogIC8vLyBzcGVjaWZpZXIgdGhhdCBwcmVjZWQgdGhpcyBjdXJyZW50IHNwZWNp Zmllci4gRm9yIGV4YW1wbGUsIGZvciBhCiAgLy8vIG5lc3RlZCBuYW1lIHNwZWNpZmllciB0aGF0 IHJlcHJlc2VudHMgImZvbzo6YmFyOjoiLCB0aGUgY3VycmVudAogIC8vLyBzcGVjaWZpZXIgd2ls bCBjb250YWluICJiYXI6OiIgYW5kIHRoZSBwcmVmaXggd2lsbCBjb250YWluCiAgLy8vICJmb286 OiIuCiAgTmVzdGVkTmFtZVNwZWNpZmllciAqZ2V0UHJlZml4KCkgY29uc3QgeyByZXR1cm4gUHJl Zml4LmdldFBvaW50ZXIoKTsgfQoKICAvLy8gXGJyaWVmIERldGVybWluZSB3aGF0IGtpbmQgb2Yg bmVzdGVkIG5hbWUgc3BlY2lmaWVyIGlzIHN0b3JlZC4KICBTcGVjaWZpZXJLaW5kIGdldEtpbmQo KSBjb25zdDsKCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgaWRlbnRpZmllciBzdG9yZWQgaW4g dGhpcyBuZXN0ZWQgbmFtZQogIC8vLyBzcGVjaWZpZXIuCiAgSWRlbnRpZmllckluZm8gKmdldEFz SWRlbnRpZmllcigpIGNvbnN0IHsKICAgIGlmIChQcmVmaXguZ2V0SW50KCkgPT0gU3RvcmVkSWRl bnRpZmllcikKICAgICAgcmV0dXJuIChJZGVudGlmaWVySW5mbyAqKVNwZWNpZmllcjsKCiAgICBy ZXR1cm4gbnVsbHB0cjsKICB9CgogIC8vLyBcYnJpZWYgUmV0cmlldmUgdGhlIG5hbWVzcGFjZSBz dG9yZWQgaW4gdGhpcyBuZXN0ZWQgbmFtZQogIC8vLyBzcGVjaWZpZXIuCiAgTmFtZXNwYWNlRGVj bCAqZ2V0QXNOYW1lc3BhY2UoKSBjb25zdDsKCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgbmFt ZXNwYWNlIGFsaWFzIHN0b3JlZCBpbiB0aGlzIG5lc3RlZCBuYW1lCiAgLy8vIHNwZWNpZmllci4K ICBOYW1lc3BhY2VBbGlhc0RlY2wgKmdldEFzTmFtZXNwYWNlQWxpYXMoKSBjb25zdDsKCiAgLy8v IFxicmllZiBSZXRyaWV2ZSB0aGUgcmVjb3JkIGRlY2xhcmF0aW9uIHN0b3JlZCBpbiB0aGlzIG5l c3RlZCBuYW1lCiAgLy8vIHNwZWNpZmllci4KICBDWFhSZWNvcmREZWNsICpnZXRBc1JlY29yZERl Y2woKSBjb25zdDsKCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgdHlwZSBzdG9yZWQgaW4gdGhp cyBuZXN0ZWQgbmFtZSBzcGVjaWZpZXIuCiAgY29uc3QgVHlwZSAqZ2V0QXNUeXBlKCkgY29uc3Qg ewogICAgaWYgKFByZWZpeC5nZXRJbnQoKSA9PSBTdG9yZWRUeXBlU3BlYyB8fAogICAgICAgIFBy ZWZpeC5nZXRJbnQoKSA9PSBTdG9yZWRUeXBlU3BlY1dpdGhUZW1wbGF0ZSkKICAgICAgcmV0dXJu IChjb25zdCBUeXBlICopU3BlY2lmaWVyOwoKICAgIHJldHVybiBudWxscHRyOwogIH0KCiAgLy8v IFxicmllZiBXaGV0aGVyIHRoaXMgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHJlZmVycyB0byBhIGRl cGVuZGVudAogIC8vLyB0eXBlIG9yIG5vdC4KICBib29sIGlzRGVwZW5kZW50KCkgY29uc3Q7Cgog IC8vLyBcYnJpZWYgV2hldGhlciB0aGlzIG5lc3RlZCBuYW1lIHNwZWNpZmllciBpbnZvbHZlcyBh IHRlbXBsYXRlCiAgLy8vIHBhcmFtZXRlci4KICBib29sIGlzSW5zdGFudGlhdGlvbkRlcGVuZGVu dCgpIGNvbnN0OwoKICAvLy8gXGJyaWVmIFdoZXRoZXIgdGhpcyBuZXN0ZWQtbmFtZS1zcGVjaWZp ZXIgY29udGFpbnMgYW4gdW5leHBhbmRlZAogIC8vLyBwYXJhbWV0ZXIgcGFjayAoZm9yIEMrKzEx IHZhcmlhZGljIHRlbXBsYXRlcykuCiAgYm9vbCBjb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQ YWNrKCkgY29uc3Q7CgogIC8vLyBcYnJpZWYgUHJpbnQgdGhpcyBuZXN0ZWQgbmFtZSBzcGVjaWZp ZXIgdG8gdGhlIGdpdmVuIG91dHB1dAogIC8vLyBzdHJlYW0uCiAgdm9pZCBwcmludChyYXdfb3N0 cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OwoKICB2b2lkIFBy b2ZpbGUobGx2bTo6Rm9sZGluZ1NldE5vZGVJRCAmSUQpIGNvbnN0IHsKICAgIElELkFkZFBvaW50 ZXIoUHJlZml4LmdldE9wYXF1ZVZhbHVlKCkpOwogICAgSUQuQWRkUG9pbnRlcihTcGVjaWZpZXIp OwogIH0KCiAgLy8vIFxicmllZiBEdW1wIHRoZSBuZXN0ZWQgbmFtZSBzcGVjaWZpZXIgdG8gc3Rh bmRhcmQgb3V0cHV0IHRvIGFpZAogIC8vLyBpbiBkZWJ1Z2dpbmcuCiAgdm9pZCBkdW1wKGNvbnN0 IExhbmdPcHRpb25zICZMTyk7Cn07CgovLy8gXGJyaWVmIEEgQysrIG5lc3RlZC1uYW1lLXNwZWNp ZmllciBhdWdtZW50ZWQgd2l0aCBzb3VyY2UgbG9jYXRpb24KLy8vIGluZm9ybWF0aW9uLgpjbGFz cyBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIHsKICBOZXN0ZWROYW1lU3BlY2lmaWVyICpRdWFsaWZp ZXI7CiAgdm9pZCAqRGF0YTsKCiAgLy8vIFxicmllZiBEZXRlcm1pbmVzIHRoZSBkYXRhIGxlbmd0 aCBmb3IgdGhlIGxhc3QgY29tcG9uZW50IGluIHRoZQogIC8vLyBnaXZlbiBuZXN0ZWQtbmFtZS1z cGVjaWZpZXIuCiAgc3RhdGljIHVuc2lnbmVkIGdldExvY2FsRGF0YUxlbmd0aChOZXN0ZWROYW1l U3BlY2lmaWVyICpRdWFsaWZpZXIpOwoKICAvLy8gXGJyaWVmIERldGVybWluZXMgdGhlIGRhdGEg bGVuZ3RoIGZvciB0aGUgZW50aXJlCiAgLy8vIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICBzdGF0 aWMgdW5zaWduZWQgZ2V0RGF0YUxlbmd0aChOZXN0ZWROYW1lU3BlY2lmaWVyICpRdWFsaWZpZXIp OwoKcHVibGljOgogIC8vLyBcYnJpZWYgQ29uc3RydWN0IGFuIGVtcHR5IG5lc3RlZC1uYW1lLXNw ZWNpZmllci4KICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jKCkgOiBRdWFsaWZpZXIobnVsbHB0ciks IERhdGEobnVsbHB0cikgeyB9CgogIC8vLyBcYnJpZWYgQ29uc3RydWN0IGEgbmVzdGVkLW5hbWUt c3BlY2lmaWVyIHdpdGggc291cmNlIGxvY2F0aW9uIGluZm9ybWF0aW9uCiAgLy8vIGZyb20KICBO ZXN0ZWROYW1lU3BlY2lmaWVyTG9jKE5lc3RlZE5hbWVTcGVjaWZpZXIgKlF1YWxpZmllciwgdm9p ZCAqRGF0YSkKICAgIDogUXVhbGlmaWVyKFF1YWxpZmllciksIERhdGEoRGF0YSkgeyB9CgogIC8v LyBcYnJpZWYgRXZhbHV0ZXMgdHJ1ZSB3aGVuIHRoaXMgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGxv Y2F0aW9uIGlzCiAgLy8vIG5vbi1lbXB0eS4KICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u c3QgeyByZXR1cm4gUXVhbGlmaWVyOyB9CgogIC8vLyBcYnJpZWYgRXZhbHV0ZXMgdHJ1ZSB3aGVu IHRoaXMgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGxvY2F0aW9uIGlzCiAgLy8vIGVtcHR5LgogIGJv b2wgaGFzUXVhbGlmaWVyKCkgY29uc3QgeyByZXR1cm4gUXVhbGlmaWVyOyB9CgogIC8vLyBcYnJp ZWYgUmV0cmlldmUgdGhlIG5lc3RlZC1uYW1lLXNwZWNpZmllciB0byB3aGljaCB0aGlzIGluc3Rh bmNlCiAgLy8vIHJlZmVycy4KICBOZXN0ZWROYW1lU3BlY2lmaWVyICpnZXROZXN0ZWROYW1lU3Bl Y2lmaWVyKCkgY29uc3QgewogICAgcmV0dXJuIFF1YWxpZmllcjsKICB9CgogIC8vLyBcYnJpZWYg UmV0cmlldmUgdGhlIG9wYXF1ZSBwb2ludGVyIHRoYXQgcmVmZXJzIHRvIHNvdXJjZS1sb2NhdGlv biBkYXRhLgogIHZvaWQgKmdldE9wYXF1ZURhdGEoKSBjb25zdCB7IHJldHVybiBEYXRhOyB9Cgog IC8vLyBcYnJpZWYgUmV0cmlldmUgdGhlIHNvdXJjZSByYW5nZSBjb3ZlcmluZyB0aGUgZW50aXJl dHkgb2YgdGhpcwogIC8vLyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIuCiAgLy8vCiAgLy8vIEZvciBl eGFtcGxlLCBpZiB0aGlzIGluc3RhbmNlIHJlZmVycyB0byBhIG5lc3RlZC1uYW1lLXNwZWNpZmll cgogIC8vLyBcYyBcOjpzdGQ6OnZlY3RvcjxpbnQ+OjosIHRoZSByZXR1cm5lZCBzb3VyY2UgcmFu Z2Ugd291bGQgY292ZXIKICAvLy8gZnJvbSB0aGUgaW5pdGlhbCAnOjonIHRvIHRoZSBsYXN0ICc6 OicuCiAgU291cmNlUmFuZ2UgZ2V0U291cmNlUmFuZ2UoKSBjb25zdCBMTFZNX1JFQURPTkxZOwoK ICAvLy8gXGJyaWVmIFJldHJpZXZlIHRoZSBzb3VyY2UgcmFuZ2UgY292ZXJpbmcganVzdCB0aGUg bGFzdCBwYXJ0IG9mCiAgLy8vIHRoaXMgbmVzdGVkLW5hbWUtc3BlY2lmaWVyLCBub3QgaW5jbHVk aW5nIHRoZSBwcmVmaXguCiAgLy8vCiAgLy8vIEZvciBleGFtcGxlLCBpZiB0aGlzIGluc3RhbmNl IHJlZmVycyB0byBhIG5lc3RlZC1uYW1lLXNwZWNpZmllcgogIC8vLyBcYyBcOjpzdGQ6OnZlY3Rv cjxpbnQ+OjosIHRoZSByZXR1cm5lZCBzb3VyY2UgcmFuZ2Ugd291bGQgY292ZXIKICAvLy8gZnJv bSAidmVjdG9yIiB0byB0aGUgbGFzdCAnOjonLgogIFNvdXJjZVJhbmdlIGdldExvY2FsU291cmNl UmFuZ2UoKSBjb25zdDsKCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhl IGJlZ2lubmluZyBvZiB0aGlzCiAgLy8vIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICBTb3VyY2VM b2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsKICAgIHJldHVybiBnZXRTb3VyY2VSYW5nZSgp LmdldEJlZ2luKCk7CiAgfQoKICAvLy8gXGJyaWVmIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0 aGUgZW5kIG9mIHRoaXMKICAvLy8gbmVzdGVkLW5hbWUtc3BlY2lmaWVyLgogIFNvdXJjZUxvY2F0 aW9uIGdldEVuZExvYygpIGNvbnN0IHsKICAgIHJldHVybiBnZXRTb3VyY2VSYW5nZSgpLmdldEVu ZCgpOwogIH0KCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGJlZ2lu bmluZyBvZiB0aGlzCiAgLy8vIGNvbXBvbmVudCBvZiB0aGUgbmVzdGVkLW5hbWUtc3BlY2lmaWVy LgogIFNvdXJjZUxvY2F0aW9uIGdldExvY2FsQmVnaW5Mb2MoKSBjb25zdCB7CiAgICByZXR1cm4g Z2V0TG9jYWxTb3VyY2VSYW5nZSgpLmdldEJlZ2luKCk7CiAgfQoKICAvLy8gXGJyaWVmIFJldHJp ZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZW5kIG9mIHRoaXMgY29tcG9uZW50IG9mIHRoZQogIC8v LyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIuCiAgU291cmNlTG9jYXRpb24gZ2V0TG9jYWxFbmRMb2Mo KSBjb25zdCB7CiAgICByZXR1cm4gZ2V0TG9jYWxTb3VyY2VSYW5nZSgpLmdldEVuZCgpOwogIH0K CiAgLy8vIFxicmllZiBSZXR1cm4gdGhlIHByZWZpeCBvZiB0aGlzIG5lc3RlZC1uYW1lLXNwZWNp Zmllci4KICAvLy8KICAvLy8gRm9yIGV4YW1wbGUsIGlmIHRoaXMgaW5zdGFuY2UgcmVmZXJzIHRv IGEgbmVzdGVkLW5hbWUtc3BlY2lmaWVyCiAgLy8vIFxjIFw6OnN0ZDo6dmVjdG9yPGludD46Oiwg dGhlIHByZWZpeCBpcyBcYyBcOjpzdGQ6Oi4gTm90ZSB0aGF0IHRoZQogIC8vLyByZXR1cm5lZCBw cmVmaXggbWF5IGJlIGVtcHR5LCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBjb21wb25lbnQgb2YKICAv Ly8gdGhlIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIGdl dFByZWZpeCgpIGNvbnN0IHsKICAgIGlmICghUXVhbGlmaWVyKQogICAgICByZXR1cm4gKnRoaXM7 CgogICAgcmV0dXJuIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MoUXVhbGlmaWVyLT5nZXRQcmVmaXgo KSwgRGF0YSk7CiAgfQoKICAvLy8gXGJyaWVmIEZvciBhIG5lc3RlZC1uYW1lLXNwZWNpZmllciB0 aGF0IHJlZmVycyB0byBhIHR5cGUsCiAgLy8vIHJldHJpZXZlIHRoZSB0eXBlIHdpdGggc291cmNl LWxvY2F0aW9uIGluZm9ybWF0aW9uLgogIFR5cGVMb2MgZ2V0VHlwZUxvYygpIGNvbnN0OwoKICAv Ly8gXGJyaWVmIERldGVybWluZXMgdGhlIGRhdGEgbGVuZ3RoIGZvciB0aGUgZW50aXJlCiAgLy8v IG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICB1bnNpZ25lZCBnZXREYXRhTGVuZ3RoKCkgY29uc3Qg eyByZXR1cm4gZ2V0RGF0YUxlbmd0aChRdWFsaWZpZXIpOyB9CgogIGZyaWVuZCBib29sIG9wZXJh dG9yPT0oTmVzdGVkTmFtZVNwZWNpZmllckxvYyBYLAogICAgICAgICAgICAgICAgICAgICAgICAg TmVzdGVkTmFtZVNwZWNpZmllckxvYyBZKSB7CiAgICByZXR1cm4gWC5RdWFsaWZpZXIgPT0gWS5R dWFsaWZpZXIgJiYgWC5EYXRhID09IFkuRGF0YTsKICB9CgogIGZyaWVuZCBib29sIG9wZXJhdG9y IT0oTmVzdGVkTmFtZVNwZWNpZmllckxvYyBYLAogICAgICAgICAgICAgICAgICAgICAgICAgTmVz dGVkTmFtZVNwZWNpZmllckxvYyBZKSB7CiAgICByZXR1cm4gIShYID09IFkpOwogIH0KfTsKCi8v LyBcYnJpZWYgQ2xhc3MgdGhhdCBhaWRzIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgbmVzdGVkLW5h bWUtc3BlY2lmaWVycyBhbG9uZwovLy8gd2l0aCBzb3VyY2UtbG9jYXRpb24gaW5mb3JtYXRpb24g Zm9yIGFsbCBvZiB0aGUgY29tcG9uZW50cyBvZiB0aGUKLy8vIG5lc3RlZC1uYW1lLXNwZWNpZmll ci4KY2xhc3MgTmVzdGVkTmFtZVNwZWNpZmllckxvY0J1aWxkZXIgewogIC8vLyBcYnJpZWYgVGhl IGN1cnJlbnQgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5lc3RlZC1uYW1lLXNwZWNpZmllciB3ZSdy ZQogIC8vLyBidWlsZGluZy4KICBOZXN0ZWROYW1lU3BlY2lmaWVyICpSZXByZXNlbnRhdGlvbjsK CiAgLy8vIFxicmllZiBCdWZmZXIgdXNlZCB0byBzdG9yZSBzb3VyY2UtbG9jYXRpb24gaW5mb3Jt YXRpb24gZm9yIHRoZQogIC8vLyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIuCiAgLy8vCiAgLy8vIE5v dGUgdGhhdCB3ZSBleHBsaWNpdGx5IG1hbmFnZSB0aGUgYnVmZmVyIChyYXRoZXIgdGhhbiB1c2lu ZyBhCiAgLy8vIFNtYWxsVmVjdG9yKSBiZWNhdXNlIFxjIERlY2xhcmF0b3IgZXhwZWN0cyBpdCB0 byBiZSBwb3NzaWJsZSB0byBtZW1jcHkoKQogIC8vLyBhIFxjIENYWFNjb3BlU3BlYywgYW5kIENY WFNjb3BlU3BlYyB1c2VzIGEgTmVzdGVkTmFtZVNwZWNpZmllckxvY0J1aWxkZXIuCiAgY2hhciAq QnVmZmVyOwoKICAvLy8gXGJyaWVmIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgdXNlZCB0byBzdG9y ZSBzb3VyY2UtbG9jYXRpb24gaW5mb3JtYXRpb24KICAvLy8gZm9yIHRoZSBuZXN0ZWQtbmFtZS1z cGVjaWZpZXIuCiAgdW5zaWduZWQgQnVmZmVyU2l6ZTsKCiAgLy8vIFxicmllZiBUaGUgY2FwYWNp dHkgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIHN0b3JlIHNvdXJjZS1sb2NhdGlvbgogIC8vLyBpbmZv cm1hdGlvbiBmb3IgdGhlIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICB1bnNpZ25lZCBCdWZmZXJD YXBhY2l0eTsKCnB1YmxpYzoKICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jQnVpbGRlcigpCiAgICA6 IFJlcHJlc2VudGF0aW9uKG51bGxwdHIpLCBCdWZmZXIobnVsbHB0ciksIEJ1ZmZlclNpemUoMCks CiAgICAgIEJ1ZmZlckNhcGFjaXR5KDApIHt9CgogIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2NCdWls ZGVyKGNvbnN0IE5lc3RlZE5hbWVTcGVjaWZpZXJMb2NCdWlsZGVyICZPdGhlcik7CgogIE5lc3Rl ZE5hbWVTcGVjaWZpZXJMb2NCdWlsZGVyICYKICBvcGVyYXRvcj0oY29uc3QgTmVzdGVkTmFtZVNw ZWNpZmllckxvY0J1aWxkZXIgJk90aGVyKTsKCiAgfk5lc3RlZE5hbWVTcGVjaWZpZXJMb2NCdWls ZGVyKCkgewogICAgaWYgKEJ1ZmZlckNhcGFjaXR5KQogICAgICBmcmVlKEJ1ZmZlcik7CiAgfQoK ICAvLy8gXGJyaWVmIFJldHJpZXZlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmVzdGVkLW5h bWUtc3BlY2lmaWVyLgogIE5lc3RlZE5hbWVTcGVjaWZpZXIgKmdldFJlcHJlc2VudGF0aW9uKCkg Y29uc3QgeyByZXR1cm4gUmVwcmVzZW50YXRpb247IH0KCiAgLy8vIFxicmllZiBFeHRlbmQgdGhl IGN1cnJlbnQgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGJ5IGFub3RoZXIKICAvLy8gbmVzdGVkLW5h bWUtc3BlY2lmaWVyIGNvbXBvbmVudCBvZiB0aGUgZm9ybSAndHlwZTo6Jy4KICAvLy8KICAvLy8g XHBhcmFtIENvbnRleHQgVGhlIEFTVCBjb250ZXh0IGluIHdoaWNoIHRoaXMgbmVzdGVkLW5hbWUt c3BlY2lmaWVyCiAgLy8vIHJlc2lkZXMuCiAgLy8vCiAgLy8vIFxwYXJhbSBUZW1wbGF0ZUtXTG9j IFRoZSBsb2NhdGlvbiBvZiB0aGUgJ3RlbXBsYXRlJyBrZXl3b3JkLCBpZiBwcmVzZW50LgogIC8v LwogIC8vLyBccGFyYW0gVEwgVGhlIFR5cGVMb2MgdGhhdCBkZXNjcmliZXMgdGhlIHR5cGUgcHJl Y2VkaW5nIHRoZSAnOjonLgogIC8vLwogIC8vLyBccGFyYW0gQ29sb25Db2xvbkxvYyBUaGUgbG9j YXRpb24gb2YgdGhlIHRyYWlsaW5nICc6OicuCiAgdm9pZCBFeHRlbmQoQVNUQ29udGV4dCAmQ29u dGV4dCwgU291cmNlTG9jYXRpb24gVGVtcGxhdGVLV0xvYywgVHlwZUxvYyBUTCwKICAgICAgICAg ICAgICBTb3VyY2VMb2NhdGlvbiBDb2xvbkNvbG9uTG9jKTsKCiAgLy8vIFxicmllZiBFeHRlbmQg dGhlIGN1cnJlbnQgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGJ5IGFub3RoZXIKICAvLy8gbmVzdGVk LW5hbWUtc3BlY2lmaWVyIGNvbXBvbmVudCBvZiB0aGUgZm9ybSAnaWRlbnRpZmllcjo6Jy4KICAv Ly8KICAvLy8gXHBhcmFtIENvbnRleHQgVGhlIEFTVCBjb250ZXh0IGluIHdoaWNoIHRoaXMgbmVz dGVkLW5hbWUtc3BlY2lmaWVyCiAgLy8vIHJlc2lkZXMuCiAgLy8vCiAgLy8vIFxwYXJhbSBJZGVu dGlmaWVyIFRoZSBpZGVudGlmaWVyLgogIC8vLwogIC8vLyBccGFyYW0gSWRlbnRpZmllckxvYyBU aGUgbG9jYXRpb24gb2YgdGhlIGlkZW50aWZpZXIuCiAgLy8vCiAgLy8vIFxwYXJhbSBDb2xvbkNv bG9uTG9jIFRoZSBsb2NhdGlvbiBvZiB0aGUgdHJhaWxpbmcgJzo6Jy4KICB2b2lkIEV4dGVuZChB U1RDb250ZXh0ICZDb250ZXh0LCBJZGVudGlmaWVySW5mbyAqSWRlbnRpZmllciwKICAgICAgICAg ICAgICBTb3VyY2VMb2NhdGlvbiBJZGVudGlmaWVyTG9jLCBTb3VyY2VMb2NhdGlvbiBDb2xvbkNv bG9uTG9jKTsKCiAgLy8vIFxicmllZiBFeHRlbmQgdGhlIGN1cnJlbnQgbmVzdGVkLW5hbWUtc3Bl Y2lmaWVyIGJ5IGFub3RoZXIKICAvLy8gbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGNvbXBvbmVudCBv ZiB0aGUgZm9ybSAnbmFtZXNwYWNlOjonLgogIC8vLwogIC8vLyBccGFyYW0gQ29udGV4dCBUaGUg QVNUIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIKICAvLy8gcmVz aWRlcy4KICAvLy8KICAvLy8gXHBhcmFtIE5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlLgogIC8vLwog IC8vLyBccGFyYW0gTmFtZXNwYWNlTG9jIFRoZSBsb2NhdGlvbiBvZiB0aGUgbmFtZXNwYWNlIG5h bWUuCiAgLy8vCiAgLy8vIFxwYXJhbSBDb2xvbkNvbG9uTG9jIFRoZSBsb2NhdGlvbiBvZiB0aGUg dHJhaWxpbmcgJzo6Jy4KICB2b2lkIEV4dGVuZChBU1RDb250ZXh0ICZDb250ZXh0LCBOYW1lc3Bh Y2VEZWNsICpOYW1lc3BhY2UsCiAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTmFtZXNwYWNl TG9jLCBTb3VyY2VMb2NhdGlvbiBDb2xvbkNvbG9uTG9jKTsKCiAgLy8vIFxicmllZiBFeHRlbmQg dGhlIGN1cnJlbnQgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGJ5IGFub3RoZXIKICAvLy8gbmVzdGVk LW5hbWUtc3BlY2lmaWVyIGNvbXBvbmVudCBvZiB0aGUgZm9ybSAnbmFtZXNwYWNlLWFsaWFzOjon LgogIC8vLwogIC8vLyBccGFyYW0gQ29udGV4dCBUaGUgQVNUIGNvbnRleHQgaW4gd2hpY2ggdGhp cyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIKICAvLy8gcmVzaWRlcy4KICAvLy8KICAvLy8gXHBhcmFt IEFsaWFzIFRoZSBuYW1lc3BhY2UgYWxpYXMuCiAgLy8vCiAgLy8vIFxwYXJhbSBBbGlhc0xvYyBU aGUgbG9jYXRpb24gb2YgdGhlIG5hbWVzcGFjZSBhbGlhcwogIC8vLyBuYW1lLgogIC8vLwogIC8v LyBccGFyYW0gQ29sb25Db2xvbkxvYyBUaGUgbG9jYXRpb24gb2YgdGhlIHRyYWlsaW5nICc6Oicu CiAgdm9pZCBFeHRlbmQoQVNUQ29udGV4dCAmQ29udGV4dCwgTmFtZXNwYWNlQWxpYXNEZWNsICpB bGlhcywKICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBBbGlhc0xvYywgU291cmNlTG9jYXRp b24gQ29sb25Db2xvbkxvYyk7CgogIC8vLyBcYnJpZWYgVHVybiB0aGlzIChlbXB0eSkgbmVzdGVk LW5hbWUtc3BlY2lmaWVyIGludG8gdGhlIGdsb2JhbAogIC8vLyBuZXN0ZWQtbmFtZS1zcGVjaWZp ZXIgJzo6Jy4KICB2b2lkIE1ha2VHbG9iYWwoQVNUQ29udGV4dCAmQ29udGV4dCwgU291cmNlTG9j YXRpb24gQ29sb25Db2xvbkxvYyk7CiAgCiAgLy8vIFxicmllZiBUdXJucyB0aGlzIChlbXB0eSkg bmVzdGVkLW5hbWUtc3BlY2lmaWVyIGludG8gJ19fc3VwZXInCiAgLy8vIG5lc3RlZC1uYW1lLXNw ZWNpZmllci4KICAvLy8KICAvLy8gXHBhcmFtIENvbnRleHQgVGhlIEFTVCBjb250ZXh0IGluIHdo aWNoIHRoaXMgbmVzdGVkLW5hbWUtc3BlY2lmaWVyCiAgLy8vIHJlc2lkZXMuCiAgLy8vCiAgLy8v IFxwYXJhbSBSRCBUaGUgZGVjbGFyYXRpb24gb2YgdGhlIGNsYXNzIGluIHdoaWNoIG5lc3RlZC1u YW1lLXNwZWNpZmllcgogIC8vLyBhcHBlYXJlZC4KICAvLy8KICAvLy8gXHBhcmFtIFN1cGVyTG9j IFRoZSBsb2NhdGlvbiBvZiB0aGUgJ19fc3VwZXInIGtleXdvcmQuCiAgLy8vIG5hbWUuCiAgLy8v CiAgLy8vIFxwYXJhbSBDb2xvbkNvbG9uTG9jIFRoZSBsb2NhdGlvbiBvZiB0aGUgdHJhaWxpbmcg Jzo6Jy4KICB2b2lkIE1ha2VTdXBlcihBU1RDb250ZXh0ICZDb250ZXh0LCBDWFhSZWNvcmREZWNs ICpSRCwgCiAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gU3VwZXJMb2MsIFNvdXJjZUxv Y2F0aW9uIENvbG9uQ29sb25Mb2MpOwogIC8vLyBcYnJpZWYgTWFrZSBhIG5ldyBuZXN0ZWQtbmFt ZS1zcGVjaWZpZXIgZnJvbSBpbmNvbXBsZXRlIHNvdXJjZS1sb2NhdGlvbgogIC8vLyBpbmZvcm1h dGlvbi4KICAvLy8KICAvLy8gVGhpcyByb3V0aW5lIHNob3VsZCBiZSB1c2VkIHZlcnksIHZlcnkg cmFyZWx5LCBpbiBjYXNlcyB3aGVyZSB3ZQogIC8vLyBuZWVkIHRvIHN5bnRoZXNpemUgYSBuZXN0 ZWQtbmFtZS1zcGVjaWZpZXIuIE1vc3QgY29kZSBzaG91bGQgaW5zdGVhZCB1c2UKICAvLy8gXGMg QWRvcHQoKSB3aXRoIGEgcHJvcGVyIFxjIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MuCiAgdm9pZCBN YWtlVHJpdmlhbChBU1RDb250ZXh0ICZDb250ZXh0LCBOZXN0ZWROYW1lU3BlY2lmaWVyICpRdWFs aWZpZXIsCiAgICAgICAgICAgICAgICAgICBTb3VyY2VSYW5nZSBSKTsKCiAgLy8vIFxicmllZiBB ZG9wdCBhbiBleGlzdGluZyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgKHdpdGggc291cmNlLXJhbmdl CiAgLy8vIGluZm9ybWF0aW9uKS4KICB2b2lkIEFkb3B0KE5lc3RlZE5hbWVTcGVjaWZpZXJMb2Mg T3RoZXIpOwoKICAvLy8gXGJyaWVmIFJldHJpZXZlIHRoZSBzb3VyY2UgcmFuZ2UgY292ZXJlZCBi eSB0aGlzIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICBTb3VyY2VSYW5nZSBnZXRTb3VyY2VSYW5n ZSgpIGNvbnN0IExMVk1fUkVBRE9OTFkgewogICAgcmV0dXJuIE5lc3RlZE5hbWVTcGVjaWZpZXJM b2MoUmVwcmVzZW50YXRpb24sIEJ1ZmZlcikuZ2V0U291cmNlUmFuZ2UoKTsKICB9CgogIC8vLyBc YnJpZWYgUmV0cmlldmUgYSBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgd2l0aCBsb2NhdGlvbiBpbmZv cm1hdGlvbiwKICAvLy8gY29waWVkIGludG8gdGhlIGdpdmVuIEFTVCBjb250ZXh0LgogIC8vLwog IC8vLyBccGFyYW0gQ29udGV4dCBUaGUgY29udGV4dCBpbnRvIHdoaWNoIHRoaXMgbmVzdGVkLW5h bWUtc3BlY2lmaWVyIHdpbGwgYmUKICAvLy8gY29waWVkLgogIE5lc3RlZE5hbWVTcGVjaWZpZXJM b2MgZ2V0V2l0aExvY0luQ29udGV4dChBU1RDb250ZXh0ICZDb250ZXh0KSBjb25zdDsKCiAgLy8v IFxicmllZiBSZXRyaWV2ZSBhIG5lc3RlZC1uYW1lLXNwZWNpZmllciB3aXRoIGxvY2F0aW9uCiAg Ly8vIGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIGJ1aWxkZXIu CiAgLy8vCiAgLy8vIFRoaXMgbG9jIHdpbGwgY29udGFpbiByZWZlcmVuY2VzIHRvIHRoZSBidWls ZGVyJ3MgaW50ZXJuYWwgZGF0YSBhbmQgbWF5CiAgLy8vIGJlIGludmFsaWRhdGVkIGJ5IGFueSBj aGFuZ2UgdG8gdGhlIGJ1aWxkZXIuCiAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBnZXRUZW1wb3Jh cnkoKSBjb25zdCB7CiAgICByZXR1cm4gTmVzdGVkTmFtZVNwZWNpZmllckxvYyhSZXByZXNlbnRh dGlvbiwgQnVmZmVyKTsKICB9CgogIC8vLyBcYnJpZWYgQ2xlYXIgb3V0IHRoaXMgYnVpbGRlciwg YW5kIHByZXBhcmUgaXQgdG8gYnVpbGQgYW5vdGhlcgogIC8vLyBuZXN0ZWQtbmFtZS1zcGVjaWZp ZXIgd2l0aCBzb3VyY2UtbG9jYXRpb24gaW5mb3JtYXRpb24uCiAgdm9pZCBDbGVhcigpIHsKICAg IFJlcHJlc2VudGF0aW9uID0gbnVsbHB0cjsKICAgIEJ1ZmZlclNpemUgPSAwOwogIH0KCiAgLy8v IFxicmllZiBSZXRyaWV2ZSB0aGUgdW5kZXJseWluZyBidWZmZXIuCiAgLy8vCiAgLy8vIFxyZXR1 cm5zIEEgcGFpciBjb250YWluaW5nIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIG9mIHNvdXJjZS1s b2NhdGlvbgogIC8vLyBkYXRhIGFuZCB0aGUgc2l6ZSBvZiB0aGUgc291cmNlLWxvY2F0aW9uIGRh dGEgdGhhdCByZXNpZGVzIGluIHRoYXQKICAvLy8gYnVmZmVyLgogIHN0ZDo6cGFpcjxjaGFyICos IHVuc2lnbmVkPiBnZXRCdWZmZXIoKSBjb25zdCB7CiAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo QnVmZmVyLCBCdWZmZXJTaXplKTsKICB9Cn07CgovLy8gSW5zZXJ0aW9uIG9wZXJhdG9yIGZvciBk aWFnbm9zdGljcy4gIFRoaXMgYWxsb3dzIHNlbmRpbmcKLy8vIE5lc3RlZE5hbWVTcGVjaWZpZXJz IGludG8gYSBkaWFnbm9zdGljIHdpdGggPDwuCmlubGluZSBjb25zdCBEaWFnbm9zdGljQnVpbGRl ciAmb3BlcmF0b3I8PChjb25zdCBEaWFnbm9zdGljQnVpbGRlciAmREIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyICpOTlMpIHsK ICBEQi5BZGRUYWdnZWRWYWwocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oTk5TKSwKICAgICAg ICAgICAgICAgICAgRGlhZ25vc3RpY3NFbmdpbmU6OmFrX25lc3RlZG5hbWVzcGVjKTsKICByZXR1 cm4gREI7Cn0KCn0KCiNlbmRpZgo= ------=_Part_120532_595808780.1469021948372--