From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id oHGKCbqpe2MVTwEAbAwnHQ (envelope-from ) for ; Mon, 21 Nov 2022 17:39:22 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id qAWACbqpe2OcEgEA9RJhRA (envelope-from ) for ; Mon, 21 Nov 2022 17:39:22 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id A97412D174 for ; Mon, 21 Nov 2022 17:39:21 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ox9pB-0004Sm-Mb; Mon, 21 Nov 2022 11:39:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ox9p1-0004SG-QH for guix-patches@gnu.org; Mon, 21 Nov 2022 11:39:05 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ox9p0-00018Q-8n for guix-patches@gnu.org; Mon, 21 Nov 2022 11:39:03 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ox9p0-0004tl-4j for guix-patches@gnu.org; Mon, 21 Nov 2022 11:39:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#59385] [PATCH] website: Link to the new packages browser Resent-From: Luis Felipe Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 21 Nov 2022 16:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 59385 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 59385@debbugs.gnu.org Received: via spool by 59385-submit@debbugs.gnu.org id=B59385.166904872418797 (code B ref 59385); Mon, 21 Nov 2022 16:39:02 +0000 Received: (at 59385) by debbugs.gnu.org; 21 Nov 2022 16:38:44 +0000 Received: from localhost ([127.0.0.1]:48604 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox9of-0004t3-34 for submit@debbugs.gnu.org; Mon, 21 Nov 2022 11:38:43 -0500 Received: from mail-40140.protonmail.ch ([185.70.40.140]:47269) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox9oa-0004sl-FX for 59385@debbugs.gnu.org; Mon, 21 Nov 2022 11:38:39 -0500 Date: Mon, 21 Nov 2022 16:38:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1669048707; x=1669307907; bh=cfdkZtroXHbI8g4jvbMIc5zIUmzBoIrXwwNzBSwt/ZI=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=amtvmp7sEgZYL1tZo/Brthx9fCm/g2ng6AaM9gJO1iBsM8JBr5Fjx7JoWZw2Pj9GS iSjarlREGqvdyFOz34QhJ9pMaKHcVg/LsLEiIDQYzI3cIaBuoSYX3s0uHflxsR3YdW kUJkzw7mjxv8F4YOiJ8kzgz9vP4+lfjOgRkyRAP89VF1ffZ/lQnt0rOG5sAYoLgbzA stYgkzrEkKNmKMZUl7zr3cVSi9D9l8m2G3QaQvOkmWsCWzTBS2N/tSzpK2P45b+QpG jsGaF6nXGtah4DtBtg3IDssSMwEmQeEApidh1gTaxHqqUQNysP0UkLbZlc0hwMAV4C vxpsPxffflVDw== Message-ID: In-Reply-To: <87pmdglg9b.fsf@gnu.org> References: <87pmdglg9b.fsf@gnu.org> Feedback-ID: 24022468:user:proton MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha256; boundary="------9bcd62c75693aad52ff3de9a0696f806e4e5a2f15210de476208e71277520b36"; charset=utf-8 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Luis Felipe X-ACL-Warn: , Luis Felipe via Guix-patches From: Luis Felipe via Guix-patches via Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1669048762; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=cfdkZtroXHbI8g4jvbMIc5zIUmzBoIrXwwNzBSwt/ZI=; b=J0LERieB5sltgBG+LDWBeRYyQpUBcJRjKLgbidPJcRSP+rxtBXvD2S8j54OnYq+rqmb6Rx WEGXZLsJerZeGT2Pw2s2KQwDi3Y3HIN7Pvb0AE31a4w4Qr9UD4lV/D2AEPtpP4vCQC2wZo RjRBTSsB3UQzpEMdlLY3oLpFWQzQPmkQ6s1oAgvHn54KMxS6QGDs2JXiTbh6PrCV/XPB22 vbeYU2RItpE3NvWg13QG1k1UsD4YC9pXhIuUWq0saa4n7X1L9fFxaywf5fhoMfo08CFZbk FQ5kVoma/y/BgDFn7WM9MF5jKHdPMonhYkxv4ztdVFrZkowibhVnygZCpT0XTw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1669048762; a=rsa-sha256; cv=none; b=lfTeWxj7+cfuAW2Sk6QKIuggfhEU/+gRCttm3573B7X0FaJAuriuHOSxm/NWl85we9jAIa RbYkDjM6CSFq8pzRZL99TGGMslr+Poxl0y/tfNKym6Poir3PLc02EPVw4E6jacLf6NjaUr /PArPgJNk67Vf0GMz0MdvW3dsN+93jgqjG50cWt5gYTENXAlTz1x/kO2s4COiBEwJZF78b 8CzD9nAamhvctfxYBp/4SXTrDpNMKbAV2gDgwdsXGVVEaGbl50z0zniyU9dOw05xyTW5Mc Dy9sXsJO1KI2qChdzN2yX33rmReMGoAxiEGVcVcKdtIKK0hNBTzLQM2eQMKB5w== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=protonmail.com header.s=protonmail3 header.b=amtvmp7s; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -4.61 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=protonmail.com header.s=protonmail3 header.b=amtvmp7s; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: A97412D174 X-Spam-Score: -4.61 X-Migadu-Scanner: scn0.migadu.com X-TUID: k4InGbclcAQm This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------9bcd62c75693aad52ff3de9a0696f806e4e5a2f15210de476208e71277520b36 Content-Type: multipart/mixed;boundary=---------------------52290da2f27cca8aaa545abda9f80d33 -----------------------52290da2f27cca8aaa545abda9f80d33 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain;charset=utf-8 Hi, On Monday, November 21st, 2022 at 11:05, Ludovic Court=C3=A8s wrote: > Hi, > = > Luis Felipe luis.felipe.la@protonmail.com skribis: > = > > From ad0effaab60acdb7bd0e533bd544b49a4bee8a2b Mon Sep 17 00:00:00 2001 > > From: Luis Felipe luis.felipe.la@protonmail.com > > Date: Sat, 19 Nov 2022 08:21:04 -0500 > > Subject: [PATCH] website: Link to the new packages browser. > > = > > Update all package-related links to point to the newly deployed browse= r > > at https://packages.guix.gnu.org/. > > = > > * website/apps/base/utils.scm (packages-url): New procedure. > > * website/apps/base/data.scm (contact-media): Use packages-url. > > * website/apps/base/templates/components.scm (navbar): Likewise. > > * website/apps/base/templates/contribute.scm (contribute-t): Likewise. > > * website/apps/base/templates/donate.scm (donate-t): Likewise. > > * website/apps/base/templates/home.scm (home-t): Likewise. > = > = > Awesome, pushed! Thanks :) > While we=E2=80=99re at it, can we also disable individual package page > generation? It takes a lot of time to build and uses quite a lot of > space as well; I=E2=80=99m eager to see them go. :-) I'm attaching a patch that removes the whole "(apps packages)" module. > Maybe we can add a redirect from https://guix.gnu.org/en/packages That would be good. > If we=E2=80=99re serious about it, we can try to match the package/versi= on in > URLs like https://guix.gnu.org/en/packages/julia-mappedarrays-0.4.0/ > and redirect to the right one. Not sure if that=E2=80=99s worth the trou= ble > though. I'd say it is not necessary since people were avoiding linking to them bec= ause of the version. They were already considered ephemeral. -----------------------52290da2f27cca8aaa545abda9f80d33 Content-Type: text/x-patch; filename="0001-website-Remove-packages-app.patch"; name="0001-website-Remove-packages-app.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-website-Remove-packages-app.patch"; name="0001-website-Remove-packages-app.patch" RnJvbSAyOTcyM2IzYzcxMWRiMjMxNmUxZmI2NmQyNTJkZTc2OTQ5NGI0YTk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWlzIEZlbGlwZSA8bHVpcy5mZWxpcGUubGFAcHJvdG9ubWFp bC5jb20+CkRhdGU6IE1vbiwgMjEgTm92IDIwMjIgMTE6MDY6MDMgLTA1MDAKU3ViamVjdDogW1BB VENIXSB3ZWJzaXRlOiBSZW1vdmUgcGFja2FnZXMgYXBwLgoKVGhlcmUgaXMgYSBuZXcgcGFja2Fn ZSBicm93c2VyIGF0IGh0dHBzOi8vcGFja2FnZXMuZ3VpeC5nbnUub3JnLy4gSXQKaXMgbm90IG5l Y2Vzc2FyeSB0byBnZW5lcmF0ZSBhIHN0YXRpYyBwYWNrYWdlIGNhdGFsb2cgYW55bW9yZS4KCiog d2Vic2l0ZS9hcHBzL3BhY2thZ2VzOiBSZW1vdmUgaXQuCiogd2Vic2l0ZS90ZXN0cy9hcHBzL3Bh Y2thZ2VzOiBMaWtld2lzZS4KKiB3ZWJzaXRlL2hhdW50LnNjbSAoc2l0ZSk6IFJlbW92ZSBwYWNr YWdlcyBidWlsZGVyLgoqIHdlYnNpdGUvdGVzdHMvYWxsLnNjbTogRG9uJ3QgaW1wb3J0IHBhY2th Z2VzIHRlc3RzLgotLS0KIHdlYnNpdGUvYXBwcy9wYWNrYWdlcy9idWlsZGVyLnNjbSAgICAgICAg ICAgICB8IDMwOCAtLS0tLS0tLS0tLS0tLS0tLS0KIHdlYnNpdGUvYXBwcy9wYWNrYWdlcy9kYXRh LnNjbSAgICAgICAgICAgICAgICB8ICA2MyAtLS0tCiAuLi4vYXBwcy9wYWNrYWdlcy90ZW1wbGF0 ZXMvY29tcG9uZW50cy5zY20gICAgfCAyNzUgLS0tLS0tLS0tLS0tLS0tLQogLi4uL3BhY2thZ2Vz L3RlbXBsYXRlcy9kZXRhaWxlZC1pbmRleC5zY20gICAgIHwgIDY2IC0tLS0KIC4uLi90ZW1wbGF0 ZXMvZGV0YWlsZWQtcGFja2FnZS1saXN0LnNjbSAgICAgICB8ICA2NyAtLS0tCiB3ZWJzaXRlL2Fw cHMvcGFja2FnZXMvdGVtcGxhdGVzL2luZGV4LnNjbSAgICAgfCAgNjQgLS0tLQogLi4uL2FwcHMv cGFja2FnZXMvdGVtcGxhdGVzL3BhY2thZ2UtbGlzdC5zY20gIHwgIDY1IC0tLS0KIHdlYnNpdGUv YXBwcy9wYWNrYWdlcy90ZW1wbGF0ZXMvcGFja2FnZS5zY20gICB8ICA4NyAtLS0tLQogd2Vic2l0 ZS9hcHBzL3BhY2thZ2VzL3R5cGVzLnNjbSAgICAgICAgICAgICAgIHwgMTA5IC0tLS0tLS0KIHdl YnNpdGUvYXBwcy9wYWNrYWdlcy91dGlscy5zY20gICAgICAgICAgICAgICB8IDI4MiAtLS0tLS0t LS0tLS0tLS0tCiB3ZWJzaXRlL2hhdW50LnNjbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgLQogd2Vic2l0ZS90ZXN0cy9hbGwuc2NtICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAzICstCiB3ZWJzaXRlL3Rlc3RzL2FwcHMvcGFja2FnZXMvdXRpbHMuc2NtICAgICAgICAgfCAx MDcgLS0tLS0tCiAxMyBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTQ5NyBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCB3ZWJzaXRlL2FwcHMvcGFja2FnZXMvYnVpbGRlci5z Y20KIGRlbGV0ZSBtb2RlIDEwMDY0NCB3ZWJzaXRlL2FwcHMvcGFja2FnZXMvZGF0YS5zY20KIGRl bGV0ZSBtb2RlIDEwMDY0NCB3ZWJzaXRlL2FwcHMvcGFja2FnZXMvdGVtcGxhdGVzL2NvbXBvbmVu dHMuc2NtCiBkZWxldGUgbW9kZSAxMDA2NDQgd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL3RlbXBsYXRl cy9kZXRhaWxlZC1pbmRleC5zY20KIGRlbGV0ZSBtb2RlIDEwMDY0NCB3ZWJzaXRlL2FwcHMvcGFj a2FnZXMvdGVtcGxhdGVzL2RldGFpbGVkLXBhY2thZ2UtbGlzdC5zY20KIGRlbGV0ZSBtb2RlIDEw MDY0NCB3ZWJzaXRlL2FwcHMvcGFja2FnZXMvdGVtcGxhdGVzL2luZGV4LnNjbQogZGVsZXRlIG1v ZGUgMTAwNjQ0IHdlYnNpdGUvYXBwcy9wYWNrYWdlcy90ZW1wbGF0ZXMvcGFja2FnZS1saXN0LnNj bQogZGVsZXRlIG1vZGUgMTAwNjQ0IHdlYnNpdGUvYXBwcy9wYWNrYWdlcy90ZW1wbGF0ZXMvcGFj a2FnZS5zY20KIGRlbGV0ZSBtb2RlIDEwMDY0NCB3ZWJzaXRlL2FwcHMvcGFja2FnZXMvdHlwZXMu c2NtCiBkZWxldGUgbW9kZSAxMDA2NDQgd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL3V0aWxzLnNjbQog ZGVsZXRlIG1vZGUgMTAwNjQ0IHdlYnNpdGUvdGVzdHMvYXBwcy9wYWNrYWdlcy91dGlscy5zY20K CmRpZmYgLS1naXQgYS93ZWJzaXRlL2FwcHMvcGFja2FnZXMvYnVpbGRlci5zY20gYi93ZWJzaXRl L2FwcHMvcGFja2FnZXMvYnVpbGRlci5zY20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGIwOGJhMmUuLjAwMDAwMDAKLS0tIGEvd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL2J1aWxkZXIuc2Nt CisrKyAvZGV2L251bGwKQEAgLTEsMzA4ICswLDAgQEAKLTs7OyBHTlUgR3VpeCB3ZWIgc2l0ZQot Ozs7IENvcHlyaWdodCDCqSAyMDE3IEx1ZG92aWMgQ291cnTDqHMgPGx1ZG9AZ251Lm9yZz4KLTs7 OyBDb3B5cmlnaHQgwqkgMjAxOSBSaWNhcmRvIFd1cm11cyA8cmVrYWRvQGVsZXBobHkubmV0Pgot Ozs7IENvcHlyaWdodCDCqSAyMDE5IE5pY29sw7IgQmFsemFyb3R0aSA8bmljb2xvQG5peG8ueHl6 PgotOzs7IENvcHlyaWdodCDCqSAyMDIwLCAyMDIxIFNpbW9uIFRvdXJuaWVyIDx6aW1vbi50b3V0 b3VuZUBnbWFpbC5jb20+Ci07OzsKLTs7OyBJbml0aWFsbHkgd3JpdHRlbiBieSBzaXJnYXppbAot Ozs7IHdobyB3YWl2ZXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBvbiB0aGlzIGZpbGUuCi07OzsK LTs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEd1aXggd2ViIHNpdGUuCi07OzsKLTs7 OyBUaGUgR05VIEd1aXggd2ViIHNpdGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotOzs7IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yIChhdAotOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLTs7OwotOzs7IFRo ZSBHTlUgR3VpeCB3ZWIgc2l0ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQKLTs7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi07OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotOzs7IEdOVSBBZmZlcm8gR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotOzs7Ci07OzsgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi07OzsgYWxvbmcgd2l0aCB0aGUgR05VIEd1aXggd2ViIHNpdGUuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0KLShkZWZpbmUtbW9kdWxlIChhcHBzIHBh Y2thZ2VzIGJ1aWxkZXIpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBhdXggbGlzdHMpCi0gICM6dXNl LW1vZHVsZSAoYXBwcyBhdXggc3lzdGVtKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgYmFzZSB1dGls cykKLSAgIzp1c2UtbW9kdWxlIChhcHBzIHBhY2thZ2VzIGRhdGEpCi0gICM6dXNlLW1vZHVsZSAo YXBwcyBwYWNrYWdlcyB0ZW1wbGF0ZXMgZGV0YWlsZWQtaW5kZXgpCi0gICM6dXNlLW1vZHVsZSAo YXBwcyBwYWNrYWdlcyB0ZW1wbGF0ZXMgaW5kZXgpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBwYWNr YWdlcyB0ZW1wbGF0ZXMgZGV0YWlsZWQtcGFja2FnZS1saXN0KQotICAjOnVzZS1tb2R1bGUgKGFw cHMgcGFja2FnZXMgdGVtcGxhdGVzIHBhY2thZ2UpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBwYWNr YWdlcyB0ZW1wbGF0ZXMgcGFja2FnZS1saXN0KQotICAjOnVzZS1tb2R1bGUgKGFwcHMgcGFja2Fn ZXMgdHlwZXMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBwYWNrYWdlcyB1dGlscykKLSAgIzp1c2Ut bW9kdWxlIChoYXVudCBodG1sKQotICAjOnVzZS1tb2R1bGUgKGhhdW50IHBhZ2UpCi0gICM6dXNl LW1vZHVsZSAoaGF1bnQgdXRpbHMpCi0gICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCi0gICM6 dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTI2KQotICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2FnZXMp Ci0gICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkKLSAgIzp1c2UtbW9kdWxlIChndWl4IGdp dC1kb3dubG9hZCkKLSAgIzp1c2UtbW9kdWxlIChndWl4IHN2bi1kb3dubG9hZCkKLSAgIzp1c2Ut bW9kdWxlIChndWl4IGhnLWRvd25sb2FkKQotICAjOnVzZS1tb2R1bGUgKGd1aXggdXRpbHMpICAg ICAgICAgICAgICAgICAgICAgICA7bG9jYXRpb24KLSAgIzp1c2UtbW9kdWxlICgoZ3VpeCBidWls ZCBkb3dubG9hZCkgIzpzZWxlY3QgKG1heWJlLWV4cGFuZC1taXJyb3JzKSkKLSAgIzp1c2UtbW9k dWxlICgoZ3VpeCBiYXNlNjQpICM6c2VsZWN0IChiYXNlNjQtZW5jb2RlKSkKLSAgIzp1c2UtbW9k dWxlICgoZ3VpeCBkZXNjcmliZSkgIzpzZWxlY3QgKGN1cnJlbnQtcHJvZmlsZSkpCi0gICM6dXNl LW1vZHVsZSAoKGd1aXggY29uZmlnKSAjOnNlbGVjdCAoJWd1aXgtdmVyc2lvbikpCi0gICM6dXNl LW1vZHVsZSAoZ3VpeCBnZXhwKQotICAjOnVzZS1tb2R1bGUgKGpzb24pCi0gICM6dXNlLW1vZHVs ZSAoaWNlLTkgbWF0Y2gpCi0gICM6dXNlLW1vZHVsZSAoKHdlYiB1cmkpICM6c2VsZWN0IChzdHJp bmctPnVyaSB1cmktPnN0cmluZykpCi0gICM6ZXhwb3J0IChidWlsZGVyKSkKLQotOzs7IFJlcXVp cmVkIGJ5ICdvcmlnaW4tPmpzb24nIGZvciAnY29tcHV0ZWQtb3JpZ2luLW1ldGhvZCcgY29ybmVy IGNhc2VzCi0oZGVmaW5lIGdleHAtcmVmZXJlbmNlcyAoQEAgKGd1aXggZ2V4cCkgZ2V4cC1yZWZl cmVuY2VzKSkKLQotOzs7Ci07OzsgQXBwbGljYXRpb24gYnVpbGRlci4KLTs7OwotCi0oZGVmaW5l IChidWlsZGVyIHNpdGUgcG9zdHMpCi0gICJSZXR1cm4gdGhlIGxpc3Qgb2Ygd2ViIHJlc291cmNl cyB0aGF0IGNvbXBvc2UgdGhlIGFwcC4KLQotICAgVGhpcyBwcm9jZWR1cmUgaXMgYSBIYXVudCBi dWlsZGVyIHByb2NlZHVyZS4KLQotICAgU0lURSAoPHNpdGU+KQotICAgICBBIHNpdGUgb2JqZWN0 IHRoYXQgZGVmaW5lcyBhbGwgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHdlYnNpdGUuIFNlZQotICAg ICBIYXVudCA8c2l0ZT4gb2JqZWN0cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotICAgUE9TVFMg KGxpc3Qgb2YgPHBvc3Q+KQotICAgICBBIGxpc3Qgb2YgcG9zdCBvYmplY3RzIHRoYXQgcmVwcmVz ZW50IGFydGljbGVzIGZyb20gdGhlIGJsb2cuIFNlZQotICAgICBIYXVudCA8cG9zdD4gb2JqZWN0 cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotICAgUkVUVVJOIChsaXN0IG9mIDxwYWdlPikKLSAg ICAgQSBsaXN0IG9mIHBhZ2Ugb2JqZWN0cyB0aGF0IHJlcHJlc2VudCB0aGUgd2ViIHJlc291cmNl cyBvZiB0aGUKLSAgICAgYXBwbGljYXRpb24uIFNlZSBIYXVudCA8cGFnZT4gb2JqZWN0cyBmb3Ig bW9yZSBpbmZvcm1hdGlvbi4iCi0gIChmbGF0dGVuCi0gICAobGlzdAotICAgIChpbmRleC1idWls ZGVyKQotICAgIChzb3VyY2VzLWpzb24tYnVpbGRlcikKLSAgICAocGFja2FnZXMtanNvbi1idWls ZGVyKQotICAgIChwYWNrYWdlcy1idWlsZGVyKQotICAgIChwYWNrYWdlLWxpc3QtYnVpbGRlcikp KSkKLQotCi0KLTs7OwotOzs7IEhlbHBlciBidWlsZGVycy4KLTs7OwotCi0oZGVmaW5lICVtYXgt cGFja2FnZXMtb24taW5kZXgKLSAgOzsgTWF4aW11bSBudW1iZXIgb2YgcGFja2FnZXMgc2hvd24g b24gL3BhY2thZ2VzLgotICAzMCkKLQotKGRlZmluZSAob3JpZ2luLT5qc29uIG9yaWdpbikKLSAg IlJldHVybiBhIEpTT04gcmVwcmVzZW50YXRpb24gKGFuIGFsaXN0KSBvZiBPUklHSU4uIgotICAo ZGVmaW5lIG1ldGhvZAotICAgIChvcmlnaW4tbWV0aG9kIG9yaWdpbikpCi0KLSAgKGRlZmluZSB1 cmkKLSAgICAob3JpZ2luLXVyaSBvcmlnaW4pKQotCi0gIChkZWZpbmUgKHJlc29sdmUgdXJscykK LSAgICAobWFwIHVyaS0+c3RyaW5nCi0gICAgICAgICAoYXBwZW5kLW1hcCAoY3V0IG1heWJlLWV4 cGFuZC1taXJyb3JzIDw+ICVtaXJyb3JzKQotICAgICAgICAgICAgICAgICAgICAgKG1hcCBzdHJp bmctPnVyaSB1cmxzKSkpKQotCi0gIChpZiAoZXE/IG1ldGhvZCAoQEAgKGd1aXggcGFja2FnZXMp IGNvbXB1dGVkLW9yaWdpbi1tZXRob2QpKQotICAgICAgOzsgUGFja2FnZXMgaW4gZ251L3BhY2th Z2VzL2dudXppbGxhLnNjbSBhbmQgZ251L3BhY2thZ2VzL2xpbnV4LnNjbQotICAgICAgOzsgcmVw cmVzZW50IHRoZWlyICd1cmknIGFzICdwcm9taXNlJy4KLSAgICAgIChtYXRjaCB1cmkKLSAgICAg ICAgKCg/IHByb21pc2U/IHByb21pc2UpCi0gICAgICAgICAobWF0Y2ggKGZvcmNlIHByb21pc2Up Ci0gICAgICAgICAgICgoPyBnZXhwPyBnKQotICAgICAgICAgICAgKGFwcGVuZC1tYXAgb3JpZ2lu LT5qc29uCi0gICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyLW1hcCAobWF0Y2gtbGFtYmRh Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoPyBnZXhwLWlucHV0PyB0 aGluZykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZ2V4 cC1pbnB1dC10aGluZyB0aGluZykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCg/IG9yaWdpbj8gbykgbykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKF8gI2YpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KF8gI2YpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdleHAtcmVmZXJl bmNlcyBnKSkpKQotICAgICAgICAgICAoXyBgKCh0eXBlIC4gI25pbCkpKSkpKQotICAgICAgOztS ZWd1bGFyIHBhY2thZ2VzIHJlcHJlc2VudCAndXJpJyBhcyBzdHJpbmcuCi0gICAgICBgKCgodHlw ZSAuICwoY29uZCAoKG9yIChlcT8gdXJsLWZldGNoIG1ldGhvZCkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlcT8gdXJsLWZldGNoL3RhcmJvbWIgbWV0aG9kKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVxPyB1cmwtZmV0Y2gvemlwYm9tYiBtZXRob2QpKSAndXJsKQot ICAgICAgICAgICAgICAgICAgICAgICAgICgoZXE/IGdpdC1mZXRjaCBtZXRob2QpICdnaXQpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgKChvciAoZXE/IHN2bi1mZXRjaCBtZXRob2QpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZXE/IHN2bi1tdWx0aS1mZXRjaCBtZXRob2QpKSAn c3ZuKQotICAgICAgICAgICAgICAgICAgICAgICAgICgoZXE/IGhnLWZldGNoIG1ldGhvZCkgJ2hn KQotICAgICAgICAgICAgICAgICAgICAgICAgIChlbHNlICAgICAgICAgICAgICAgICAgICNuaWwp KSkKLSAgICAgICAgICAsQChjb25kICgob3IgKGVxPyB1cmwtZmV0Y2ggbWV0aG9kKQotICAgICAg ICAgICAgICAgICAgICAgICAoZXE/IHVybC1mZXRjaC90YXJib21iIG1ldGhvZCkKLSAgICAgICAg ICAgICAgICAgICAgICAgKGVxPyB1cmwtZmV0Y2gvemlwYm9tYiBtZXRob2QpKQotICAgICAgICAg ICAgICAgICAgIGAoKCJ1cmxzIiAuICwobGlzdC0+dmVjdG9yCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAocmVzb2x2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtYXRjaCB1cmkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoPyBzdHJp bmc/IHVybCkgKGxpc3QgdXJsKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgodXJscyAuLi4pIHVybHMpKSkpKSkpCi0gICAgICAgICAgICAgICAgICAoKGVxPyBnaXQtZmV0 Y2ggbWV0aG9kKQotICAgICAgICAgICAgICAgICAgIGAoKCJnaXRfdXJsIiAuICwoZ2l0LXJlZmVy ZW5jZS11cmwgdXJpKSkpKQotICAgICAgICAgICAgICAgICAgKChlcT8gc3ZuLWZldGNoIG1ldGhv ZCkKLSAgICAgICAgICAgICAgICAgICBgKCgic3ZuX3VybCIgLiAsKHN2bi1yZWZlcmVuY2UtdXJs IHVyaSkpKSkKLSAgICAgICAgICAgICAgICAgICgoZXE/IHN2bi1tdWx0aS1mZXRjaCBtZXRob2Qp Ci0gICAgICAgICAgICAgICAgICAgYCgoInN2bl91cmwiIC4gLChzdm4tbXVsdGktcmVmZXJlbmNl LXVybCB1cmkpKSkpCi0gICAgICAgICAgICAgICAgICAoKGVxPyBoZy1mZXRjaCBtZXRob2QpCi0g ICAgICAgICAgICAgICAgICAgYCgoImhnX3VybCIgLiAsKGhnLXJlZmVyZW5jZS11cmwgdXJpKSkp KQotICAgICAgICAgICAgICAgICAgKGVsc2UgJygpKSkKLSAgICAgICAgICAsQChpZiAob3IgKGVx PyB1cmwtZmV0Y2ggbWV0aG9kKQotICAgICAgICAgICAgICAgICAgICAoZXE/IHVybC1mZXRjaC90 YXJib21iIG1ldGhvZCkKLSAgICAgICAgICAgICAgICAgICAgKGVxPyB1cmwtZmV0Y2gvemlwYm9t YiBtZXRob2QpKQotICAgICAgICAgICAgICAgIChsZXQqICgoY29udGVudC1oYXNoIChvcmlnaW4t aGFzaCBvcmlnaW4pKQotICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC12YWx1ZSAoY29udGVu dC1oYXNoLXZhbHVlIGNvbnRlbnQtaGFzaCkpCi0gICAgICAgICAgICAgICAgICAgICAgIChoYXNo LWFsZ29yaXRobSAoY29udGVudC1oYXNoLWFsZ29yaXRobSBjb250ZW50LWhhc2gpKQotICAgICAg ICAgICAgICAgICAgICAgICAoYWxnb3JpdGhtLXN0cmluZyAoc3ltYm9sLT5zdHJpbmcgaGFzaC1h bGdvcml0aG0pKSkKLSAgICAgICAgICAgICAgICAgIGAoKCJpbnRlZ3JpdHkiIC4gLChzdHJpbmct YXBwZW5kIGFsZ29yaXRobS1zdHJpbmcgIi0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYmFzZTY0LWVuY29kZSBoYXNoLXZhbHVlKSkpKSkKLSAg ICAgICAgICAgICAgICAnKCkpCi0gICAgICAgICAgLEAoaWYgKGVxPyBtZXRob2QgZ2l0LWZldGNo KQotICAgICAgICAgICAgICAgIGAoKCJnaXRfcmVmIiAuICwoZ2l0LXJlZmVyZW5jZS1jb21taXQg dXJpKSkpCi0gICAgICAgICAgICAgICAgJygpKQotICAgICAgICAgICxAKGlmIChlcT8gbWV0aG9k IHN2bi1mZXRjaCkKLSAgICAgICAgICAgICAgICBgKCgic3ZuX3JldmlzaW9uIiAuICwoc3ZuLXJl ZmVyZW5jZS1yZXZpc2lvbiB1cmkpKSkKLSAgICAgICAgICAgICAgICAnKCkpCi0gICAgICAgICAg LEAoaWYgKGVxPyBtZXRob2Qgc3ZuLW11bHRpLWZldGNoKQotICAgICAgICAgICAgICAgIGAoKCJz dm5fcmV2aXNpb24iIC4gLChzdm4tbXVsdGktcmVmZXJlbmNlLXJldmlzaW9uIHVyaSkpKQotICAg ICAgICAgICAgICAgICcoKSkKLSAgICAgICAgICAsQChpZiAoZXE/IG1ldGhvZCBoZy1mZXRjaCkK LSAgICAgICAgICAgICAgICBgKCgiaGdfY2hhbmdlc2V0IiAuICwoaGctcmVmZXJlbmNlLWNoYW5n ZXNldCB1cmkpKSkKLSAgICAgICAgICAgICAgICAnKCkpKSkpKQotCi0oZGVmaW5lIChwYWNrYWdl cy1qc29uLWJ1aWxkZXIpCi0gICJSZXR1cm4gYSBKU09OIHBhZ2UgbGlzdGluZyBhbGwgcGFja2Fn ZXMuIgotICAoZGVmaW5lIChwYWNrYWdlLT5qc29uIHBhY2thZ2UpCi0gICAgKGRlZmluZSBjcGUt bmFtZQotICAgICAgKGFzc29jLXJlZiAocGFja2FnZS1wcm9wZXJ0aWVzIHBhY2thZ2UpICdjcGUt bmFtZSkpCi0gICAgKGRlZmluZSBjcGUtdmVyc2lvbgotICAgICAgKGFzc29jLXJlZiAocGFja2Fn ZS1wcm9wZXJ0aWVzIHBhY2thZ2UpICdjcGUtdmVyc2lvbikpCi0KLSAgICBgKCgibmFtZSIgICAg IC4gLChwYWNrYWdlLW5hbWUgcGFja2FnZSkpCi0gICAgICAoInZlcnNpb24iICAuICwocGFja2Fn ZS12ZXJzaW9uIHBhY2thZ2UpKQotICAgICAgLEAoaWYgY3BlLW5hbWUgYCgoImNwZV9uYW1lIiAu ICxjcGUtbmFtZSkpICcoKSkKLSAgICAgICxAKGlmIGNwZS12ZXJzaW9uIGAoKCJjcGVfdmVyc2lv biIgLiAsY3BlLXZlcnNpb24pKSAnKCkpCi0gICAgICAsQChpZiAob3JpZ2luPyAocGFja2FnZS1z b3VyY2UgcGFja2FnZSkpCi0gICAgICAgICAgICBgKCgic291cmNlIiAuICwobGlzdC0+dmVjdG9y Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yaWdpbi0+anNvbiAocGFja2FnZS1zb3Vy Y2UgcGFja2FnZSkpKSkpCi0gICAgICAgICAgICAnKCkpCi0gICAgICAoInN5bm9wc2lzIiAuICwo cGFja2FnZS1zeW5vcHNpcyBwYWNrYWdlKSkKLSAgICAgICxAKGlmIChwYWNrYWdlLWhvbWUtcGFn ZSBwYWNrYWdlKQotICAgICAgICAgICAgYCgoImhvbWVwYWdlIiAuICwocGFja2FnZS1ob21lLXBh Z2UgcGFja2FnZSkpKQotICAgICAgICAgICAgJygpKQotICAgICAgLEAobWF0Y2ggKHBhY2thZ2Ut bG9jYXRpb24gcGFja2FnZSkKLSAgICAgICAgICAoKD8gbG9jYXRpb24/IGxvY2F0aW9uKQotICAg ICAgICAgICBgKCgibG9jYXRpb24iCi0gICAgICAgICAgICAgIC4gLChzdHJpbmctYXBwZW5kIChs b2NhdGlvbi1maWxlIGxvY2F0aW9uKSAiOiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG51bWJlci0+c3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyAx IChsb2NhdGlvbi1saW5lIGxvY2F0aW9uKSkpKSkpKQotICAgICAgICAgICgjZgotICAgICAgICAg ICAnKCkpKSkpCi0KLSAgKG1ha2UtcGFnZSAicGFja2FnZXMuanNvbiIKLQkgICAgIChsaXN0LT52 ZWN0b3IgKG1hcCBwYWNrYWdlLT5qc29uIChhbGwtcGFja2FnZXMpKSkKLSAgICAgICAgICAgICBz Y20tPmpzb24pKQotCi0oZGVmaW5lIChzb3VyY2VzLWpzb24tYnVpbGRlcikKLSAgIlJldHVybiBh IEpTT04gcGFnZSBsaXN0aW5nIGFsbCB0aGUgc291cmNlcy4iCi0gIDs7IFRoZSBTb2Z0d2FyZSBI ZXJpdGFnZSBmb3JtYXQgaXMgZGVzY3JpYmVkIGhlcmU6Ci0gIDs7IGh0dHBzOi8vZm9yZ2Uuc29m dHdhcmVoZXJpdGFnZS5vcmcvc291cmNlL3N3aC1sb2FkZXItY29yZS9icm93c2UvbWFzdGVyL3N3 aC9sb2FkZXIvcGFja2FnZS9uaXhndWl4L3Rlc3RzL2RhdGEvaHR0cHNfbml4LWNvbW11bml0eS5n aXRodWIuaW8vbml4cGtncy1zd2hfc291cmNlcy5qc29uCi0gIDs7IEFuZCB0aGUgbG9hZGVyIGlz IGltcGxlbWVudGVkIGhlcmU6Ci0gIDs7IGh0dHBzOi8vZm9yZ2Uuc29mdHdhcmVoZXJpdGFnZS5v cmcvc291cmNlL3N3aC1sb2FkZXItY29yZS9icm93c2UvbWFzdGVyL3N3aC9sb2FkZXIvcGFja2Fn ZS9uaXhndWl4LwotICAoZGVmaW5lIChwYWNrYWdlLT5qc29uIHBhY2thZ2UpCi0gICAgYCgsQChp ZiAob3JpZ2luPyAocGFja2FnZS1zb3VyY2UgcGFja2FnZSkpCi0gICAgICAgICAgICAob3JpZ2lu LT5qc29uIChwYWNrYWdlLXNvdXJjZSBwYWNrYWdlKSkKLSAgICAgICAgICAgIGAoKCh0eXBlIC4g Im5vLW9yaWdpbiIpCi0gICAgICAgICAgICAgICAgKCJuYW1lIiAuICwocGFja2FnZS1uYW1lIHBh Y2thZ2UpKSkpKSkpCi0KLSAgKG1ha2UtcGFnZSAic291cmNlcy5qc29uIgotICAgICAgICAgICAg IGAoKCJzb3VyY2VzIiAuICwobGlzdC0+dmVjdG9yIChhcHBlbmQtbWFwIHBhY2thZ2UtPmpzb24g KGFsbC1wYWNrYWdlcykpKSkKLSAgICAgICAgICAgICAgICgidmVyc2lvbiIgLiAiMSIpCi0gICAg ICAgICAgICAgICAoInJldmlzaW9uIiAuCi0gICAgICAgICAgICAgICAgLChtYXRjaCAoY3VycmVu dC1wcm9maWxlKQotICAgICAgICAgICAgICAgICAgICgjZiAlZ3VpeC12ZXJzaW9uKSAgIDtmb3Ig bGFjayBvZiBhIGJldHRlciBJRAotICAgICAgICAgICAgICAgICAgIChwcm9maWxlCi0gICAgICAg ICAgICAgICAgICAgIChsZXQgKChjaGFubmVsIChmaW5kIGd1aXgtY2hhbm5lbD8gKHByb2ZpbGUt Y2hhbm5lbHMgcHJvZmlsZSkpKSkKLSAgICAgICAgICAgICAgICAgICAgICAoY2hhbm5lbC1jb21t aXQgY2hhbm5lbCkpKSkpKQotICAgICAgICAgICAgIHNjbS0+anNvbikpCi0KLShkZWZpbmUgKGlu ZGV4LWJ1aWxkZXIpCi0gICJSZXR1cm4gYSBIYXVudCBwYWdlIGxpc3Rpbmcgc29tZSByYW5kb20g cGFja2FnZXMuIgotICAoZGVmaW5lIChzYW1wbGUgbiBmcm9tKQotICAgIChtYXAgKGxhbWJkYSAo aWQpIChsaXN0LXJlZiBmcm9tIGlkKSkKLSAgICAgICAgIChsaXN0LXRhYnVsYXRlIG4gKGxhbWJk YSBfIChyYW5kb20gKGxlbmd0aCBmcm9tKSkpKSkpCi0gIChsZXQgKChjb250ZXh0IChsaXN0IChj b25zICJwYWNrYWdlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhbXBsZSAlbWF4 LXBhY2thZ2VzLW9uLWluZGV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGFsbC1wYWNrYWdlcykpKQotCQkgICAgICAgKGNvbnMgInRvdGFsIgotCQkJICAgICAobGVuZ3Ro IChhbGwtcGFja2FnZXMpKSkpKSkKLSAgICAobWFrZS1wYWdlICJwYWNrYWdlcy9pbmRleC5odG1s IiAoaW5kZXgtdCBjb250ZXh0KSBzeG1sLT5odG1sKSkpCi0KLQotKGRlZmluZSAoZGV0YWlsZWQt aW5kZXgtYnVpbGRlcikKLSAgIlJldHVybiBhIEhhdW50IHBhZ2UgbGlzdGluZyBzb21lIHJhbmRv bSBwYWNrYWdlcy4iCi0gIDs7IFRPRE86IFBhc3MgfjMwIHJhbmRvbSBHdWl4IHBhY2thZ2VzLgot ICAobGV0ICgoY29udGV4dCAobGlzdCAoY29ucyAicGFja2FnZXMiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0YWtlLWF0LW1vc3QgKGFsbC1wYWNrYWdlcykKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlbWF4LXBhY2thZ2VzLW9uLWluZGV4KSkpKSkK LSAgICAobWFrZS1wYWdlICJwYWNrYWdlcy9pbmRleC5odG1sIgotICAgICAgICAgICAgICAgKGRl dGFpbGVkLWluZGV4LXQgY29udGV4dCAobGVuZ3RoIChhbGwtcGFja2FnZXMpKSkKLSAgICAgICAg ICAgICAgIHN4bWwtPmh0bWwpKSkKLQotCi0oZGVmaW5lIChkZXRhaWxlZC1wYWNrYWdlLWxpc3Qt YnVpbGRlcikKLSAgIlJldHVybiBhIGxpc3Qgb2YgZ3JvdXBlZCBIYXVudCBwYWdlcyBsaXN0aW5n IEd1aXggcGFja2FnZXMuCi0KLSAgIEVhY2ggZ3JvdXAgaXMgYSBsaXN0IG9mIHBhZ2Ugb2JqZWN0 cyBjb3JyZXNwb25kaW5nIHRvIHBhZ2luYXRlZAotICAgcGFja2FnZXMgc3RhcnRpbmcgd2l0aCBh IHNwZWNpZmljIGxldHRlci4iCi0gIChsZXQgKChwYWNrYWdlLWdyb3VwcyAocGFja2FnZXMvZ3Jv dXAtYnktbGV0dGVyIChhbGwtcGFja2FnZXMpKSkpCi0gICAgKG1hcAotICAgICAobGFtYmRhIChw YWNrYWdlLWdyb3VwKQotICAgICAgIChsZXQqICgobGV0dGVyIChjYXIgcGFja2FnZS1ncm91cCkp Ci0JICAgICAgKGNvbnRleHQKLQkgICAgICAgKGxpc3QKLQkJKGNvbnMgImxldHRlciIgbGV0dGVy KSkpKQotCSAocGFnaW5hdGUgIzpkYXRhc2V0IChjZHIgcGFja2FnZS1ncm91cCkKLQkJICAgIzps aW1pdCAxMDAKLQkJICAgIzpiYXNlLXBhdGggKHBhdGgtam9pbiAicGFja2FnZXMiIGxldHRlcikK LQkJICAgIzp0ZW1wbGF0ZSBkZXRhaWxlZC1wYWNrYWdlLWxpc3QtdAotCQkgICAjOmNvbnRleHQg Y29udGV4dAotCQkgICAjOndyaXRlciBzeG1sLT5odG1sKSkpCi0gICAgIHBhY2thZ2UtZ3JvdXBz KSkpCi0KLQotKGRlZmluZSAocGFja2FnZXMtYnVpbGRlcikKLSAgIlJldHVybiBhIGxpc3Qgb2Yg SGF1bnQgcGFnZXMgZm9yIGVhY2ggR3VpeCBwYWNrYWdlLiIKLSAgKG1hcAotICAgKGxhbWJkYSAo cGFja2FnZSkKLSAgICAgKGxldCAoKGNvbnRleHQgKGxpc3QgKGNvbnMgInBhY2thZ2UiIHBhY2th Z2UpKSkpCi0gICAgICAgKG1ha2UtcGFnZQotCShwYXRoLWpvaW4gKHBhY2thZ2UtdXJsLXBhdGgg cGFja2FnZSkgImluZGV4Lmh0bWwiKQotCShwYWNrYWdlLXQgY29udGV4dCkKLQlzeG1sLT5odG1s KSkpCi0gICAoYWxsLXBhY2thZ2VzKSkpCi0KLQotKGRlZmluZSAocGFja2FnZS1saXN0LWJ1aWxk ZXIpCi0gICJSZXR1cm4gYSBsaXN0IG9mIGdyb3VwZWQgSGF1bnQgcGFnZXMgbGlzdGluZyBHdWl4 IHBhY2thZ2VzLgotCi0gICBFYWNoIGdyb3VwIGlzIGEgbGlzdCBvZiBwYWdlIG9iamVjdHMgY29y cmVzcG9uZGluZyB0byBwYWdpbmF0ZWQKLSAgIHBhY2thZ2VzIHN0YXJ0aW5nIHdpdGggYSBzcGVj aWZpYyBsZXR0ZXIuIgotICAobGV0ICgocGFja2FnZS1ncm91cHMgKHBhY2thZ2VzL2dyb3VwLWJ5 LWxldHRlciAoYWxsLXBhY2thZ2VzKSkpKQotICAgIChtYXAKLSAgICAgKGxhbWJkYSAocGFja2Fn ZS1ncm91cCkKLSAgICAgICAobGV0KiAoKGxldHRlciAoY2FyIHBhY2thZ2UtZ3JvdXApKQotCSAg ICAgIChjb250ZXh0Ci0JICAgICAgIChsaXN0Ci0JCShjb25zICJsZXR0ZXIiIGxldHRlcikpKSkK LQkgKHBhZ2luYXRlICM6ZGF0YXNldCAoY2RyIHBhY2thZ2UtZ3JvdXApCi0JCSAgICM6bGltaXQg MTAwCi0JCSAgICM6YmFzZS1wYXRoIChwYXRoLWpvaW4gInBhY2thZ2VzIiBsZXR0ZXIpCi0JCSAg ICM6dGVtcGxhdGUgcGFja2FnZS1saXN0LXQKLQkJICAgIzpjb250ZXh0IGNvbnRleHQKLQkJICAg Izp3cml0ZXIgc3htbC0+aHRtbCkpKQotICAgICBwYWNrYWdlLWdyb3VwcykpKQpkaWZmIC0tZ2l0 IGEvd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL2RhdGEuc2NtIGIvd2Vic2l0ZS9hcHBzL3BhY2thZ2Vz L2RhdGEuc2NtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODBkOTc5Li4wMDAwMDAw Ci0tLSBhL3dlYnNpdGUvYXBwcy9wYWNrYWdlcy9kYXRhLnNjbQorKysgL2Rldi9udWxsCkBAIC0x LDYzICswLDAgQEAKLTs7OyBHTlUgR3VpeCB3ZWIgc2l0ZQotOzs7IENvcHlyaWdodCDCqSAyMDEz LCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3LCAyMDE4LCAyMDIxIEx1ZG92aWMgQ291cnTDqHMgPGx1 ZG9AZ251Lm9yZz4KLTs7OyBDb3B5cmlnaHQgwqkgMjAxNSBNYXRoaWV1IExpcnppbiA8bXRobEBv cGVubWFpbGJveC5vcmc+Ci07OzsgQ29weXJpZ2h0IMKpIDIwMTMgQWxleCBTYXNzbWFubnNoYXVz ZW4gPGFsZXguc2Fzc21hbm5zaGF1c2VuQGdtYWlsLmNvbT4KLTs7OyBDb3B5cmlnaHQgwqkgMjAx NyBFcmljIEJhdmllciA8YmF2aWVyQG1lbWJlci5mc2Yub3JnPgotOzs7IEluaXRpYWxseSB3cml0 dGVuIGJ5IHNpcmdhemlsIHdobyB3YWl2ZXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBvbiB0aGlz Ci07OzsgZmlsZS4KLTs7OwotOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgR3VpeCB3 ZWIgc2l0ZS4KLTs7OwotOzs7IFRoZSBHTlUgR3VpeCB3ZWIgc2l0ZSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci07OzsgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci07OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Ci07OzsgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotOzs7Ci07OzsgVGhlIEdOVSBHdWl4IHdlYiBzaXRlIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotOzs7IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLTs7OyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi07Ozsg R05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi07OzsK LTs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLTs7OyBhbG9uZyB3aXRoIHRoZSBHTlUgR3VpeCB3ZWIgc2l0 ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLQotCi0oZGVm aW5lLW1vZHVsZSAoYXBwcyBwYWNrYWdlcyBkYXRhKQotICAjOnVzZS1tb2R1bGUgKGdudSBwYWNr YWdlcykKLSAgIzp1c2UtbW9kdWxlIChndWl4IHBhY2thZ2VzKQotICAjOmV4cG9ydCAoYWxsLXBh Y2thZ2VzCi0JICAgIGFscGhhYmV0KSkKLQotCi0oZGVmaW5lIGFscGhhYmV0Ci0gIChsaXN0ICIw LTkiICJBIiAiQiIgIkMiICJEIiAiRSIgIkYiICJHIiAiSCIgIkkiICJKIiAiSyIgIkwiICJNIgot CSJOIiAiTyIgIlAiICJRIiAiUiIgIlMiICJUIiAiVSIgIlYiICJXIiAiWCIgIlkiICJaIikpCi0K LQotKGRlZmluZSAlcGFja2FnZS1saXN0Ci0gIChkZWxheQotICAgIDs7IE5vdGU6IERpc21pc3Mg cGFja2FnZXMgZm91bmQgaW4gJEdVSVhfUEFDS0FHRV9QQVRILgotICAgIChsZXQgKChwYWNrYWdl cwotICAgICAgICAgICAoc29ydCAocGFyYW1ldGVyaXplICgoJXBhY2thZ2UtbW9kdWxlLXBhdGgg KGxhc3QtcGFpcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICglcGFja2FnZS1tb2R1bGUtcGF0aCkpKSkKLSAgICAgICAgICAgICAgICAgICAo Zm9sZC1wYWNrYWdlcyAobGFtYmRhIChwYWNrYWdlIGxzdCkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiAob3IgKHBhY2thZ2Utc3VwZXJzZWRlZCBwYWNrYWdlKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFja2FnZS1yZXBsYWNl bWVudCBwYWNrYWdlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBwYWNrYWdl IGxzdCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKSkpCi0gICAgICAg ICAgICAgICAgIChsYW1iZGEgKHAxIHAyKQotICAgICAgICAgICAgICAgICAgIChzdHJpbmc8PyAo cGFja2FnZS1uYW1lIHAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFja2FnZS1u YW1lIHAyKSkpKSkpCi0gICAgICAoY29uZCAoKG51bGw/IHBhY2thZ2VzKSAnKCkpCi0gICAgICAg ICAgICAoKHN0cmluZz0/ICJ5ZXMiCi0gICAgICAgICAgICAgICAgICAgICAgIChvciAoZ2V0ZW52 ICJHVUlYX1dFQl9TSVRFX0xPQ0FMIikgIm5vIikpCi0gICAgICAgICAgICAgKGxpc3QtaGVhZCBw YWNrYWdlcyAzMDApKQotICAgICAgICAgICAgKGVsc2UgcGFja2FnZXMpKSkpKQotCi0oZGVmaW5l IChhbGwtcGFja2FnZXMpCi0gICJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIEd1aXggcGFja2FnZSBv YmplY3RzLCBzb3J0ZWQgYnkgbmFtZS4KLQotICAgSWYgR1VJWF9XRUJfU0lURV9MT0NBTD15ZXMs IHJldHVybiBvbmx5IDMwMCBwYWNrYWdlcyBmb3IKLSAgIHRlc3RpbmcgdGhlIHdlYnNpdGUuIgot ICAoZm9yY2UgJXBhY2thZ2UtbGlzdCkpCmRpZmYgLS1naXQgYS93ZWJzaXRlL2FwcHMvcGFja2Fn ZXMvdGVtcGxhdGVzL2NvbXBvbmVudHMuc2NtIGIvd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL3RlbXBs YXRlcy9jb21wb25lbnRzLnNjbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY3ZGM0 OS4uMDAwMDAwMAotLS0gYS93ZWJzaXRlL2FwcHMvcGFja2FnZXMvdGVtcGxhdGVzL2NvbXBvbmVu dHMuc2NtCisrKyAvZGV2L251bGwKQEAgLTEsMjc1ICswLDAgQEAKLTs7OyBHTlUgR3VpeCB3ZWIg c2l0ZQotOzs7IEluaXRpYWxseSB3cml0dGVuIGJ5IHNpcmdhemlsIHdobyB3YWl2ZXMgYWxsCi07 OzsgY29weXJpZ2h0IGludGVyZXN0IG9uIHRoaXMgZmlsZS4KLQotKGRlZmluZS1tb2R1bGUgKGFw cHMgcGFja2FnZXMgdGVtcGxhdGVzIGNvbXBvbmVudHMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBh dXggbGlzdHMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBhdXggc3RyaW5ncykKLSAgIzp1c2UtbW9k dWxlIChhcHBzIGF1eCB3ZWIpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBiYXNlIHRlbXBsYXRlcyBj b21wb25lbnRzKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgYmFzZSB1dGlscykKLSAgIzp1c2UtbW9k dWxlIChhcHBzIGkxOG4pCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBwYWNrYWdlcyBkYXRhKQotICAj OnVzZS1tb2R1bGUgKGFwcHMgcGFja2FnZXMgdHlwZXMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBw YWNrYWdlcyB1dGlscykKLSAgIzp1c2UtbW9kdWxlIChndWl4IGxpY2Vuc2VzKQotICAjOnVzZS1t b2R1bGUgKGd1aXggcGFja2FnZXMpCi0gICM6dXNlLW1vZHVsZSAoKGd1aXggaTE4bikgIzpzZWxl Y3QgKFBfKSkKLSAgIzp1c2UtbW9kdWxlIChndWl4IGdudS1tYWludGVuYW5jZSkKLSAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMSkKLSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMjYpCi0gICM6 dXNlLW1vZHVsZSAodGV4aW5mbykKLSAgIzp1c2UtbW9kdWxlICh0ZXhpbmZvIHBsYWluLXRleHQp Ci0gICM6ZXhwb3J0IChkZXRhaWxlZC1wYWNrYWdlLXByZXZpZXcKLQkgICAgaXNzdWUtY291bnQt PnNodG1sCi0JICAgIGxldHRlci1zZWxlY3RvcgotCSAgICBsaWNlbnNlLT5zaHRtbAotCSAgICBs aW50LWlzc3VlLT5zaHRtbAotCSAgICBsb2NhdGlvbi0+c2h0bWwKLQkgICAgcGFja2FnZS1wcmV2 aWV3Ci0JICAgIHBhdGNoZXMtPnNodG1sCi0JICAgIHNpZGViYXIKLQkgICAgc3VwcG9ydGVkLXN5 c3RlbXMtPnNodG1sKSkKLQotCi07OzsKLTs7OyBDb21wb25lbnRzLgotOzs7Ci0KLShkZWZpbmUg KGRldGFpbGVkLXBhY2thZ2UtcHJldmlldyBwYWNrYWdlKQotICAiUmV0dXJuIGFuIFNIVE1MIGRp diBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gUEFDS0FHRSBvYmplY3QuCi0KLSAgIFBB Q0tBR0UgKDxwYWNrYWdlPikKLSAgICAgQSBwYWNrYWdlIG9iamVjdCBhcyBkZWZpbmVkIGluIHRo ZSBHTlUgR3VpeCBBUEkgcmVmZXJlbmNlLiIKLSAgYChkaXYKLSAgICAoQCAoY2xhc3MgInBhY2th Z2UtcHJldmlldyIpKQotICAgIChoMwotICAgICAoQCAoY2xhc3MgInBhY2thZ2UtbmFtZSIpKQot ICAgICAsKHBhY2thZ2UtbmFtZSBwYWNrYWdlKSAiICIgLChwYWNrYWdlLXZlcnNpb24gcGFja2Fn ZSkgIiAiCi0gICAgICwoaWYgKHBhY2thZ2UtaXNzdWVzPyBwYWNrYWdlKSAnKHNwYW4gKEAgKGNs YXNzICJyZWQtdGFnIikpICIiKSAiICIpCi0gICAgIChzcGFuCi0gICAgICAoQCAoY2xhc3MgInBh Y2thZ2Utc3lub3BzaXMiKSkKLSAgICAgICIg4oCUICIKLSAgICAgICwocGFja2FnZS1zeW5vcHNp cy1zaHRtbCBwYWNrYWdlKSkpCi0KLSAgICAoZGl2Ci0gICAgIChAIChjbGFzcyAicGFja2FnZS1k ZXNjcmlwdGlvbiIpKQotCi0gICAgIDs7ICdnbnUtcGFja2FnZT8nIG1pZ2h0IGZldGNoIHN0dWZm IGZyb20gdGhlIG5ldHdvcmsuICBBc3N1bWUgI2YgaWYgdGhhdAotICAgICA7OyBkb2Vzbid0IHdv cmsuCi0gICAgICwoaWYgKGZhbHNlLWlmLWV4Y2VwdGlvbiAoZ251LXBhY2thZ2U/IHBhY2thZ2Up KQotICAgICAgICAgIGAocCAoaSAsKEdfICJUaGlzIGlzIGEgR05VIHBhY2thZ2UuICAiKSkpCi0g ICAgICAgICAgIiIpCi0KLSAgICAgLChwYWNrYWdlLWRlc2NyaXB0aW9uLXNodG1sIHBhY2thZ2Up KQotCi0gICAgKHVsCi0gICAgIChAIChjbGFzcyAicGFja2FnZS1pbmZvIikpCi0gICAgICwoR18g YChsaSAsKEdfIGAoYiAiTGljZW5zZToiKSkgIiAiCi0gICAgICAgICAgICAgICAsKGxpY2Vuc2Ut PnNodG1sIChwYWNrYWdlLWxpY2Vuc2UgcGFja2FnZSkpCi0gICAgICAgICAgICAgICAiLiIpKQot Ci0gICAgICwoR18gYChsaSAsKEdfIGAoYiAiV2Vic2l0ZToiKSkgIiAiCi0gICAgICAgICAgICAg ICAsKGxpbmstc3VidGxlICM6bGFiZWwgKHBhY2thZ2UtaG9tZS1wYWdlIHBhY2thZ2UpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICM6dXJsIChwYWNrYWdlLWhvbWUtcGFnZSBwYWNrYWdl KSkgIi4iKSkKLQotICAgICAsKEdfIGAobGkgLChHXyBgKGIgIlBhY2thZ2Ugc291cmNlOiIpKSAi ICIKLSAgICAgICAgICAgICAgICwobG9jYXRpb24tPnNodG1sIChwYWNrYWdlLWxvY2F0aW9uIHBh Y2thZ2UpKQotICAgICAgICAgICAgICAgIi4iKSkKLQotICAgICAsKEdfIGAobGkgLChHXyBgKGIg IlBhdGNoZXM6IikpICIgIgotICAgICAgICAgICAgICAgLChwYXRjaGVzLT5zaHRtbCAocGFja2Fn ZS1wYXRjaGVzIHBhY2thZ2UpKQotICAgICAgICAgICAgICAgIi4iKSkKLQotICAgICAsKEdfIGAo bGkgLChHXyBgKGIgIkxpbnQgaXNzdWVzOiIpKSAiICIKLSAgICAgICAgICAgICAgICwoaWYgKG51 bGw/IChwYWNrYWdlLWxpbnQtaXNzdWVzIHBhY2thZ2UpKQotICAgICAgICAgICAgICAgICAgICAo R18gIk5vIikKLSAgICAgICAgICAgICAgICAgICAgKGxpbmstc3VidGxlICM6bGFiZWwgKEdfICJZ ZXMiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp1cmwgKGd1aXgtdXJsICJw YWNrYWdlcy9pc3N1ZXMvIikpKQotICAgICAgICAgICAgICAgIi4iKSkKLQotICAgICAsKEdfIGAo bGkgLChHXyBgKGIgIkJ1aWxkczoiKSkgIiAiCi0gICAgICAgICAgICAgICAsKHN1cHBvcnRlZC1z eXN0ZW1zLT5zaHRtbCBwYWNrYWdlKSAiLiIpKQotICAgICAiXG4iKSkpCi0KLQotKGRlZmluZSAo aXNzdWUtY291bnQtPnNodG1sIGNvdW50KQotICAiUmV0dXJuIGFuIFNIVE1MIHJlcHJlc2VudGF0 aW9uIG9mIENPVU5UIGluIHRoZSBmb3JtICdYIGlzc3VlKHMpJy4KLQotICAgQ09VTlQgKG5hdHVy YWwpCi0gICAgIEEgbmF0dXJhbCBudW1iZXIuCi0KLSAgIFJFVFVSTiAoc2h0bWwpCi0gICAgIEEg c3BhbiBlbGVtZW50IGlmIHRoZSBjb3VudCBpcyAwLiBBIG1hcmsgZWxlbWVudCBvdGhlcndpc2Uu IgotICBgKCwoaWYgKD4gY291bnQgMCkgJ21hcmsgJ3NwYW4pCi0gICAgLChudW1iZXItPnN0cmlu ZyBjb3VudCkKLSAgICAsKE5fICIgaXNzdWUiICIgaXNzdWVzIiBjb3VudCkpKQotCi0KLShkZWZp bmUqIChsZXR0ZXItc2VsZWN0b3IgIzpvcHRpb25hbCAoYWN0aXZlLWxldHRlciAiIikpCi0gICJS ZXR1cm4gYW4gU0hUTUwgc2VjdGlvbiBlbGVtZW50IHJlcHJlc2VudGluZyBhIHdpZGdldCB0byBs aXN0Ci0gICBwYWNrYWdlcyBieSBpbml0aWFsLgotCi0gICBBQ1RJVkUtTEVUVEVSIChzdHJpbmcp Ci0gICAgIFRoZSBsZXR0ZXIgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGFzIGFjdGl2ZS4iCi0g IGAoc2VjdGlvbgotICAgIChAIChjbGFzcyAibGV0dGVyLXNlbGVjdG9yIikpCi0gICAgLChHXyBg KGgzIChAIChjbGFzcyAiYTExeS1vZmZzZXQiKSkgIlBhY2thZ2VzIG1lbnU6ICIpKQotCi0gICAg LChHXyBgKGg0IChAIChjbGFzcyAic2VsZWN0b3ItdGl0bGUgc2VsZWN0b3ItdGl0bGUtdG9wIikp Ci0gICAgICAgICAgICAgICJCcm93c2UgYWxwaGFiZXRpY2FsbHkiKSkKLSAgICAoZGl2Ci0gICAg IChAIChjbGFzcyAic2VsZWN0b3ItYm94LXBhZGRlZCIpKQotICAgICAsQChtYXAKLQkobGFtYmRh IChsZXR0ZXIpCi0JICAobGlzdAotCSAgIChidXR0b24tbGl0dGxlCi0JICAgICM6bGFiZWwgbGV0 dGVyCi0JICAgICM6dXJsIChndWl4LXVybCAodXJsLXBhdGgtam9pbiAicGFja2FnZXMiIGxldHRl ciAiIikpCi0JICAgICM6YWN0aXZlIChzdHJpbmc9PyBsZXR0ZXIgYWN0aXZlLWxldHRlcikpCi0J ICAgIiAiKSkgOyBOT1RFOiBGb3JjZSBzcGFjZSBmb3IgcmVhZGFiaWxpdHkgaW4gbm9uLUNTUyBi cm93c2Vycy4KLQlhbHBoYWJldCkpKSkKLQotCi0oZGVmaW5lIChsaWNlbnNlLT5zaHRtbCBsaWNl bnNlKQotICAiUmV0dXJuIGFuIFNIVE1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBMSUNFTlNFLgot Ci0gICBMSUNFTlNFIChpdGVtaXphdGlvbikKLSAgICAgT25lIG9mIHR3byB0eXBlcyBvZiBvYmpl Y3Q6Ci0gICAgIOKAlCBBIDxsaWNlbnNlPiBvYmplY3QgYXMgZGVmaW5lZCBpbiB0aGUgKGFwcHMg cGFja2FnZXMgdHlwZXMpCi0gICAgICAgbW9kdWxlLgotICAgICDigJQgQSBsaXN0IG9mIDxsaWNl bnNlPiBvYmplY3RzLgotCi0gICBSRVRVUk4gKHNodG1sKQotICAgICBPbmUgb3IgbW9yZSBsaW5r cyB0byB0aGUgbGljZW5zZXMuIgotICAoY29uZCAoKGxpY2Vuc2U/IGxpY2Vuc2UpCi0JIChsaW5r LXN1YnRsZSAjOmxhYmVsIChsaWNlbnNlLW5hbWUgbGljZW5zZSkKLQkJICAgICAgIzp1cmwgKGxp Y2Vuc2UtdXJpIGxpY2Vuc2UpKSkKLQkoZWxzZQotCSAoc2VwYXJhdGUKLQkgIChtYXAgKGxhbWJk YSAobCkgOyBhIGxpY2Vuc2Ugb2JqZWN0LgotCQkgKGxpbmstc3VidGxlICM6bGFiZWwgKGxpY2Vu c2UtbmFtZSBsKQotCQkJICAgICAgIzp1cmwgKGxpY2Vuc2UtdXJpIGwpKSkKLQkgICAgICAgbGlj ZW5zZSkKLQkgICIsICIpKSkpCi0KLQotKGRlZmluZSAobGludC1pc3N1ZS0+c2h0bWwgaXNzdWUp Ci0gICJSZXR1cm4gYW4gU0hUTUwgZGl2IGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiBJ U1NVRSBvYmplY3QuCi0KLSAgIElTU1VFICg8bGludC1pc3N1ZT4pCi0gICAgIEEgbGludCBpc3N1 ZSBvYmplY3QgYXMgZGVmaW5lZCBpbiB0aGUgKGFwcHMgcGFja2FnZXMgdHlwZXMpIG1vZHVsZS4i Ci0gIGAoZGl2Ci0gICAgKEAgKGNsYXNzICJsaW50LWlzc3VlIikpCi0gICAgKHAgKEAgKGNsYXNz ICJsaW50LWlzc3VlLXR5cGUiKSkgLChsaW50LWlzc3VlLXR5cGUgaXNzdWUpICI6IikKLSAgICAo cHJlICwobGludC1pc3N1ZS1kZXNjcmlwdGlvbiBpc3N1ZSkpKSkKLQotCi0oZGVmaW5lIChsb2Nh dGlvbi0+c2h0bWwgbG9jKQotICAiUmV0dXJuIGFuIFNIVE1MIGEgZWxlbWVudCByZXByZXNlbnRp bmcgdGhlIGdpdmVuIGxvY2F0aW9uIExPQy4KLQotICAgTE9DICg8bG9jYXRpb24+KQotICAgICBB IGxvY2F0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIHRoZSBHTlUgR3VpeCBBUEkgcmVmZXJlbmNl LiIKLSAgKGxldCAoKGlsaW5rIChsb2NhdGlvbi0+aWxpbmsgbG9jKSkpCi0gICAgKGxpbmstc3Vi dGxlICM6bGFiZWwgKGlsaW5rLW5hbWUgaWxpbmspCi0JCSAjOnVybCAoaWxpbmstdXJsIGlsaW5r KSkpKQotCi0KLShkZWZpbmUgKHBhY2thZ2UtcHJldmlldyBwYWNrYWdlKQotICAiUmV0dXJuIGFu IFNIVE1MIGEgZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGdpdmVuIFBBQ0tBR0Ugb2JqZWN0Lgot Ci0gICBQQUNLQUdFICg8cGFja2FnZT4pCi0gICAgIEEgcGFja2FnZSBvYmplY3QgYXMgZGVmaW5l ZCBpbiB0aGUgR05VIEd1aXggQVBJIHJlZmVyZW5jZS4iCi0gIGAoYQotICAgIChAIChjbGFzcyAi aXRlbS1wcmV2aWV3IikKLSAgICAgICAoaHJlZiAsKGd1aXgtdXJsICh1cmwtcGF0aC1qb2luIChw YWNrYWdlLXVybC1wYXRoIHBhY2thZ2UpICIiKSkpKQotICAgIChoMyAsKHBhY2thZ2UtbmFtZSBw YWNrYWdlKSAiICIgLChwYWNrYWdlLXZlcnNpb24gcGFja2FnZSkpCi0gICAgKHAKLSAgICAgKEAg KGNsYXNzICJpdGVtLXN1bW1hcnkiKSkKLSAgICAgLChzdHJpbmctc3VtbWFyaXplCi0gICAgICAg KHN0ZXhpLT5wbGFpbi10ZXh0Ci0gICAgICAgICAodGV4aS1mcmFnbWVudC0+c3RleGkgKFBfIChw YWNrYWdlLWRlc2NyaXB0aW9uIHBhY2thZ2UpKSkpCi0gICAgICAgMzApCi0gICAgICLigKYiKSkp Ci0KLQotKGRlZmluZSAocGF0Y2hlcy0+c2h0bWwgcGF0Y2hlcykKLSAgIlJldHVybiBhbiBTSFRN TCByZXByZXNlbnRhdGlvbiBvZiBQQVRDSEVTLgotCi0gICBQQVRDSEVTIChsaXN0KQotICAgICBB IGxpc3Qgb2YgPGxpbms+IG9iamVjdHMgYXMgZGVmaW5lZCBpbiAoYXBwcyBwYWNrYWdlcyB0eXBl cykKLSAgICAgbW9kdWxlLgotCi0gICBSRVRVUk4gKHNodG1sKQotICAgICBJZiB0aGUgbGlzdCBv ZiBwYXRjaGVzIGlzIGVtcHR5LCByZXR1cm4gdGhlIHN0cmluZyAnTm9uZScuCi0gICAgIE90aGVy d2lzZSwgcmV0dXJuIGEgbGlzdCBvZiBsaW5rcyB0byBwYXRjaGVzLiIKLSAgKGlmIChudWxsPyBw YXRjaGVzKQotICAgICAgKENfICJwYXRjaGVzIiAiTm9uZSIpCi0gICAgICAoc2VwYXJhdGUKLSAg ICAgICAobWFwIChsYW1iZGEgKHBhdGNoKQotCSAgICAgIChsaW5rLXN1YnRsZSAjOmxhYmVsIChp bGluay1uYW1lIHBhdGNoKQotCQkJICAgIzp1cmwgKGlsaW5rLXVybCBwYXRjaCkpKQotCSAgICBw YXRjaGVzKQotICAgICAgICIsICIpKSkKLQotCi0oZGVmaW5lKiAoc2lkZWJhciAjOm9wdGlvbmFs IChhY3RpdmUtbGV0dGVyICIiKSkKLSAgIlJldHVybiBhbiBTSFRNTCBzZWN0aW9uIGVsZW1lbnQg cmVwcmVzZW50aW5nIHRoZSBzaWRlYmFyIG9mIHRoZQotICAgcGFja2FnZSBsaXN0LgotCi0gICBB Q1RJVkUtTEVUVEVSIChzdHJpbmcpCi0gICAgIFRoZSBsZXR0ZXIgaW4gd2hpY2ggdGhlIGN1cnJl bnQgcGFja2FnZXMgYXJlIGxpc3RlZC4iCi0gIGAoc2VjdGlvbgotICAgIChAIChjbGFzcyAic2lk ZS1iYXIiKSkKLSAgICAsKEdfIGAoaDMgKEAgKGNsYXNzICJhMTF5LW9mZnNldCIpKSAiUGFja2Fn ZXMgbWVudTogIikpCi0KLSAgICAsKEdfIGAoaDQgKEAgKGNsYXNzICJiYXItdGl0bGUgYmFyLXRp dGxlLXRvcCIpKSAiQnJvd3NlIGFscGhhYmV0aWNhbGx5IikpCi0gICAgKGRpdgotICAgICAoQCAo Y2xhc3MgImJhci1ib3gtcGFkZGVkIikpCi0gICAgICxAKG1hcAotCShsYW1iZGEgKGxldHRlcikK LQkgIChsaXN0Ci0JICAgKGJ1dHRvbi1saXR0bGUKLQkgICAgIzpsYWJlbCBsZXR0ZXIKLQkgICAg Izp1cmwgKGd1aXgtdXJsICh1cmwtcGF0aC1qb2luICJwYWNrYWdlcyIgbGV0dGVyICIiKSkKLQkg ICAgIzphY3RpdmUgKHN0cmluZz0/IGxldHRlciBhY3RpdmUtbGV0dGVyKSkKLQkgICAiICIpKSA7 IE5PVEU6IEZvcmNlIHNwYWNlIGZvciByZWFkYWJpbGl0eSBpbiBub24tQ1NTIGJyb3dzZXJzLgot CWFscGhhYmV0KSkKLQotICAgIDs7IEZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSB0b28gY29zdGx5 IHRvIHByb2R1Y2Ugc28gd2UganVzdCBkaXNhYmxlIGl0LgotCi0gICAgOzsgLChHXyBgKGg0IChA IChjbGFzcyAiYmFyLXRpdGxlIikpICJQYWNrYWdlcyBJc3N1ZXMiKSkKLSAgICA7OyAodWwKLSAg ICA7OyAgKEAgKGNsYXNzICJiYXItbGlzdCIpKQotICAgIDs7ICAobGkgKEAgKGNsYXNzICJiYXIt aXRlbSIpKQotICAgIDs7ICAgICAgLChHXyBgKGEgKEAgKGNsYXNzICJiYXItbGluayIpCi0gICAg OzsgICAgICAgICAgICAgICAgICAoaHJlZiAsKGd1aXgtdXJsICJwYWNrYWdlcy9pc3N1ZXMvbGlu dC8iKSkpICJMaW50IikpKQotICAgIDs7ICAobGkgKEAgKGNsYXNzICJiYXItaXRlbSIpKQotICAg IDs7ICAgICAgLChHXyBgKGEgKEAgKGNsYXNzICJiYXItbGluayIpCi0gICAgOzsgICAgICAgICAg ICAgICAgICAoaHJlZiAsKGd1aXgtdXJsICJwYWNrYWdlcy9pc3N1ZXMvcmVwcm9kdWNpYmlsaXR5 LyIpKSkKLSAgICA7OyAgICAgICAgICAgICAgICJSZXByb2R1Y2liaWxpdHkiKSkpKQotICAgICkp Ci0KLQotKGRlZmluZSAoc3VwcG9ydGVkLXN5c3RlbXMtPnNodG1sIHBhY2thZ2UpCi0gICJSZXR1 cm4gYSBsaXN0IG9mIFNIVE1MIGEgbGlua3MgdG8gU1lTVEVNUyBidWlsZHMuCi0KLSAgIFNZU1RF TVMgKDxwYWNrYWdlPikKLSAgICAgQSBwYWNrYWdlIG9iamVjdCBhcyBkZWZpbmVkIGluIEd1aXgg QVBJLgotCi0gICBSRVRVUk4gKHNodG1sKQotICAgICBJZiB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQg c3lzdGVtcyBvZiB0aGUgcGFja2FnZSBpcyBlbXB0eSwgcmV0dXJuCi0gICAgIHRoZSBzdHJpbmcg J05vbmUnLiBPdGhlcndpc2UsIHJldHVybiBhIGxpc3Qgb2YgbGlua3MgdG8gc3lzdGVtcwotICAg ICBidWlsZHMgaW4gaHlkcmEuIgotICAobGV0ICgoYnVpbGQtdXJsICJodHRwczovL2NpLmd1aXgu Z251Lm9yZy9qb2IvZ251L21hc3Rlci8iKQotCShwYWNrYWdlLWlkIChzdHJpbmctYXBwZW5kIChw YWNrYWdlLW5hbWUgcGFja2FnZSkKLQkJCQkgICAiLSIKLQkJCQkgICAocGFja2FnZS12ZXJzaW9u IHBhY2thZ2UpKSkKLQkoc3lzdGVtcyAoZmlsdGVyIChjdXQgc3VwcG9ydGVkLXBhY2thZ2U/IHBh Y2thZ2UgPD4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgJWN1aXJhc3Mtc3VwcG9ydGVkLXN5 c3RlbXMpKSkKLSAgICAoaWYgKG51bGw/IHN5c3RlbXMpCi0gICAgICAgIChDXyAic3lzdGVtcyIg Ik5vbmUiKQotICAgICAgICA7OyBUT0RPOiBUaGVyZSdzIGN1cnJlbnRseSBubyB3YXkgdG8gcmVm ZXIgdG8gYSBqb2IgbGlrZQotICAgICAgICA7OyAnY29yZXV0aWxzLTguMzInIGluIHRoZSBDdWly YXNzIHdlYiBVSS4gIEFkZCBzdWNoIGEgbGluayBvbmNlIGl0J3MKLSAgICAgICAgOzsgYmVjb21l IGF2YWlsYWJsZS4KLQkoc2VwYXJhdGUgc3lzdGVtcyAiLCAiKSkpKQpkaWZmIC0tZ2l0IGEvd2Vi c2l0ZS9hcHBzL3BhY2thZ2VzL3RlbXBsYXRlcy9kZXRhaWxlZC1pbmRleC5zY20gYi93ZWJzaXRl L2FwcHMvcGFja2FnZXMvdGVtcGxhdGVzL2RldGFpbGVkLWluZGV4LnNjbQpkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNjk4YWFjNS4uMDAwMDAwMAotLS0gYS93ZWJzaXRlL2FwcHMvcGFj a2FnZXMvdGVtcGxhdGVzL2RldGFpbGVkLWluZGV4LnNjbQorKysgL2Rldi9udWxsCkBAIC0xLDY2 ICswLDAgQEAKLTs7OyBHTlUgR3VpeCB3ZWIgc2l0ZQotOzs7IEluaXRpYWxseSB3cml0dGVuIGJ5 IHNpcmdhemlsIHdobyB3YWl2ZXMgYWxsCi07OzsgY29weXJpZ2h0IGludGVyZXN0IG9uIHRoaXMg ZmlsZS4KLQotKGRlZmluZS1tb2R1bGUgKGFwcHMgcGFja2FnZXMgdGVtcGxhdGVzIGRldGFpbGVk LWluZGV4KQotICAjOnVzZS1tb2R1bGUgKGFwcHMgYXV4IHdlYikKLSAgIzp1c2UtbW9kdWxlIChh cHBzIGJhc2UgdGVtcGxhdGVzIGNvbXBvbmVudHMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBiYXNl IHRlbXBsYXRlcyB0aGVtZSkKLSAgIzp1c2UtbW9kdWxlIChhcHBzIGJhc2UgdHlwZXMpCi0gICM6 dXNlLW1vZHVsZSAoYXBwcyBiYXNlIHV0aWxzKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgaTE4bikK LSAgIzp1c2UtbW9kdWxlIChhcHBzIHBhY2thZ2VzIHRlbXBsYXRlcyBjb21wb25lbnRzKQotICAj OnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xOSkKLSAgIzpleHBvcnQgKGRldGFpbGVkLWluZGV4LXQp KQotCi0KLShkZWZpbmUqIChkZXRhaWxlZC1pbmRleC10IGNvbnRleHQgIzpvcHRpb25hbCB0b3Rh bCkKLSAgIlJldHVybiBTSFRNTCBpbmRleCBwYWdlIGZvciB0aGUgcGFja2FnZSBhcHAuICBUT1RB TCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mCi1wYWNrYWdlcyB0byBhZHZlcnRpc2UuIgotICAobGV0 ICgocGFja2FnZXMgKGNvbnRleHQtZGF0dW0gY29udGV4dCAicGFja2FnZXMiKSkpCi0gICAgKHRo ZW1lCi0gICAgICM6dGl0bGUgKENfICJ3ZWJwYWdlIHRpdGxlIiAobGlzdCAiUGFja2FnZXMiKSkK LSAgICAgIzpkZXNjcmlwdGlvbgotICAgICAoR18gIkxpc3Qgb2YgcGFja2FnZXMgYXZhaWxhYmxl IHRocm91Z2ggR05VwqBHdWl4LiIpCi0gICAgICM6a2V5d29yZHMKLSAgICAgKHN0cmluZy1zcGxp dCA7VFJBTlNMQVRPUlM6IHwtc2VwYXJhdGVkIGxpc3Qgb2Ygd2VicGFnZSBrZXl3b3JkcwotICAg ICAgKEdfICJHTlV8TGludXh8VW5peHxGcmVlIHNvZnR3YXJlfExpYnJlIHNvZnR3YXJlfE9wZXJh dGluZyBcCi1zeXN0ZW18R05VIEh1cmR8R05VIEd1aXggcGFja2FnZSBtYW5hZ2VyfEdOVSBHdWls ZXxHdWlsZSBcCi1TY2hlbWV8VHJhbnNhY3Rpb25hbCB1cGdyYWRlc3xGdW5jdGlvbmFsIHBhY2th Z2UgXAotbWFuYWdlbWVudHxSZXByb2R1Y2liaWxpdHkiKSAjXHwpCi0gICAgICM6YWN0aXZlLW1l bnUtaXRlbSAoQ18gIndlYnNpdGUgbWVudSIgIlBhY2thZ2VzIikKLSAgICAgIzpjc3MKLSAgICAg KGxpc3QgKGd1aXgtdXJsICJzdGF0aWMvYmFzZS9jc3MvcGFnZS5jc3MiKQotCSAgIChndWl4LXVy bCAic3RhdGljL2Jhc2UvY3NzL2l0ZW0tcHJldmlldy5jc3MiKQotCSAgIChndWl4LXVybCAic3Rh dGljL3BhY2thZ2VzL2Nzcy9sZXR0ZXItc2VsZWN0b3IuY3NzIikKLQkgICAoZ3VpeC11cmwgInN0 YXRpYy9wYWNrYWdlcy9jc3MvcGFja2FnZS1saXN0LmNzcyIpKQotICAgICAjOmNydW1icwotICAg ICAobGlzdCAoY3J1bWIgKENfICJ3ZWJzaXRlIG1lbnUiICJQYWNrYWdlcyIpIChndWl4LXVybCAi cGFja2FnZXMvIikpKQotICAgICAjOmNvbnRlbnQKLSAgICAgYChtYWluCi0gICAgICAgKHNlY3Rp b24KLQkoQCAoY2xhc3MgInBhZ2UgY2VudGVyZWQtdGV4dCIpKQotICAgICAgICAsKEdfIGAoaDIg IlBhY2thZ2VzIikpCi0KLSAgICAgICAgLChHXwotICAgICAgICAgIGAocAotICAgICAgICAgICAg KEAgKGNsYXNzICJsaW1pdC13aWR0aCBjZW50ZXJlZC1ibG9jayIpKQotICAgICAgICAgICAgIkdO VSBHdWl4IHByb3ZpZGVzICIgLChudW1iZXIqIChvciB0b3RhbCAobGVuZ3RoIHBhY2thZ2VzKSkp Ci0gICAgICAgICAgICAiIHBhY2thZ2VzIHRyYW5zcGFyZW50bHkgIgotICAgICAgICAgICAgLChH XwotICAgICAgICAgICAgICBgKGEgKEAgKGhyZWYgImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdh cmUvZ3VpeC9tYW51YWwvZW4vaHRtbF9ub2RlL1N1YnN0aXR1dGVzLmh0bWwiKSkKLSAgICAgICAg ICAgICAgICAgICJhdmFpbGFibGUgYXMgcHJlLWJ1aWx0IGJpbmFyaWVzIikpCi0gICAgICAgICAg ICAiLiBUaGVzZSBwYWdlcyBwcm92aWRlIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgcGFja2FnZXMu ICBPdXIgIgotICAgICAgICAgICAgLChHXwotICAgICAgICAgICAgICBgKGEgKEAgKGhyZWYgImh0 dHBzOi8vY2kuZ3VpeC5nbnUub3JnL2pvYnNldC9tYXN0ZXIiKSkKLSAgICAgICAgICAgICAgICAg ICJjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbSIpKQotICAgICAgICAgICAgIiBzaG93cyB0 aGVpciBjdXJyZW50IGJ1aWxkIHN0YXR1cyAiCi0gICAgICAgICAgICAiKHVwZGF0ZWQgIiAsKGRh dGUtPnN0cmluZyAoY3VycmVudC1kYXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKENfICJTUkZJLTE5IGRhdGUtPnN0cmluZyBmb3JtYXQiCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn5CIH5lLCB+WSIpKSAiKS4iKSkKLQotCShk aXYKLQkgKEAgKGNsYXNzICJzaGVldCBzaGVldC1wYWRkZWQganVzdGlmeS1sZWZ0IikpCi0JICwo bGV0dGVyLXNlbGVjdG9yKQotCSAsQChtYXAgZGV0YWlsZWQtcGFja2FnZS1wcmV2aWV3IHBhY2th Z2VzKQotCSAsKGxldHRlci1zZWxlY3RvcikpKSkpKSkKZGlmZiAtLWdpdCBhL3dlYnNpdGUvYXBw cy9wYWNrYWdlcy90ZW1wbGF0ZXMvZGV0YWlsZWQtcGFja2FnZS1saXN0LnNjbSBiL3dlYnNpdGUv YXBwcy9wYWNrYWdlcy90ZW1wbGF0ZXMvZGV0YWlsZWQtcGFja2FnZS1saXN0LnNjbQpkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMzMmM5OC4uMDAwMDAwMAotLS0gYS93ZWJzaXRlL2Fw cHMvcGFja2FnZXMvdGVtcGxhdGVzL2RldGFpbGVkLXBhY2thZ2UtbGlzdC5zY20KKysrIC9kZXYv bnVsbApAQCAtMSw2NyArMCwwIEBACi07OzsgR05VIEd1aXggd2ViIHNpdGUKLTs7OyBJbml0aWFs bHkgd3JpdHRlbiBieSBzaXJnYXppbCB3aG8gd2FpdmVzIGFsbAotOzs7IGNvcHlyaWdodCBpbnRl cmVzdCBvbiB0aGlzIGZpbGUuCi0KLShkZWZpbmUtbW9kdWxlIChhcHBzIHBhY2thZ2VzIHRlbXBs YXRlcyBkZXRhaWxlZC1wYWNrYWdlLWxpc3QpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBhdXggd2Vi KQotICAjOnVzZS1tb2R1bGUgKGFwcHMgYmFzZSB0ZW1wbGF0ZXMgY29tcG9uZW50cykKLSAgIzp1 c2UtbW9kdWxlIChhcHBzIGJhc2UgdGVtcGxhdGVzIHRoZW1lKQotICAjOnVzZS1tb2R1bGUgKGFw cHMgYmFzZSB0eXBlcykKLSAgIzp1c2UtbW9kdWxlIChhcHBzIGJhc2UgdXRpbHMpCi0gICM6dXNl LW1vZHVsZSAoYXBwcyBpMThuKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgcGFja2FnZXMgdGVtcGxh dGVzIGNvbXBvbmVudHMpCi0gICM6ZXhwb3J0IChkZXRhaWxlZC1wYWNrYWdlLWxpc3QtdCkpCi0K LQotKGRlZmluZSAoZGV0YWlsZWQtcGFja2FnZS1saXN0LXQgY29udGV4dCkKLSAgIlJldHVybiBh biBTSFRNTCBwYWdlIGxpc3RpbmcgdGhlIHBhY2thZ2VzIGluIHRoZSBDT05URVhULiIKLSAgKGxl dCAoKGxldHRlciAoY29udGV4dC1kYXR1bSBjb250ZXh0ICJsZXR0ZXIiKSkKLQkocGFnZS1udW1i ZXIKLQkgICAgKG51bWJlci0+c3RyaW5nIChjb250ZXh0LWRhdHVtIGNvbnRleHQgInBhZ2UtbnVt YmVyIikpKQotCSh0b3RhbC1wYWdlcwotCSAobnVtYmVyLT5zdHJpbmcgKGNvbnRleHQtZGF0dW0g Y29udGV4dCAidG90YWwtcGFnZXMiKSkpKQotICAgICh0aGVtZQotICAgICAjOnRpdGxlIChsaXN0 IChHXyAoc3RyaW5nLWFwcGVuZCAiUGFnZSAiIHBhZ2UtbnVtYmVyICIiKSkKLSAgICAgICAgICAg ICAgICAgICBsZXR0ZXIgKENfICJ3ZWJwYWdlIHRpdGxlIiAiUGFja2FnZXMiKSkKLSAgICAgIzpk ZXNjcmlwdGlvbgotICAgICAoR18gIkxpc3Qgb2YgcGFja2FnZXMgYXZhaWxhYmxlIHRocm91Z2gg R05VwqBHdWl4LiIpCi0gICAgICM6a2V5d29yZHMKLSAgICAgKHN0cmluZy1zcGxpdCA7VFJBTlNM QVRPUlM6IHwtc2VwYXJhdGVkIGxpc3Qgb2Ygd2VicGFnZSBrZXl3b3JkcwotICAgICAgKEdfICJH TlV8TGludXh8VW5peHxGcmVlIHNvZnR3YXJlfExpYnJlIHNvZnR3YXJlfE9wZXJhdGluZyBcCi1z eXN0ZW18R05VIEh1cmR8R05VIEd1aXggcGFja2FnZSBtYW5hZ2VyfEdOVSBHdWlsZXxHdWlsZSBc Ci1TY2hlbWV8VHJhbnNhY3Rpb25hbCB1cGdyYWRlc3xGdW5jdGlvbmFsIHBhY2thZ2UgXAotbWFu YWdlbWVudHxSZXByb2R1Y2liaWxpdHkiKSAjXHwpCi0gICAgICM6YWN0aXZlLW1lbnUtaXRlbSAo Q18gIndlYnNpdGUgbWVudSIgIlBhY2thZ2VzIikKLSAgICAgIzpjc3MKLSAgICAgKGxpc3QgKGd1 aXgtdXJsICJzdGF0aWMvYmFzZS9jc3MvcGFnZS5jc3MiKQotCSAgIChndWl4LXVybCAic3RhdGlj L2Jhc2UvY3NzL2l0ZW0tcHJldmlldy5jc3MiKQotCSAgIChndWl4LXVybCAic3RhdGljL3BhY2th Z2VzL2Nzcy9sZXR0ZXItc2VsZWN0b3IuY3NzIikKLQkgICAoZ3VpeC11cmwgInN0YXRpYy9wYWNr YWdlcy9jc3MvcGFja2FnZS1saXN0LmNzcyIpKQotICAgICAjOnNjcmlwdHMKLSAgICAgKGxpc3Qg KGd1aXgtdXJsICJzdGF0aWMvcGFja2FnZXMvanMvYnVpbGQtc3RhdHVzLmpzIikpCi0gICAgICM6 Y3J1bWJzCi0gICAgIChsaXN0IChjcnVtYiAoQ18gIndlYnNpdGUgbWVudSIgIlBhY2thZ2VzIikg KGd1aXgtdXJsICJwYWNrYWdlcy8iKSkKLQkgICAoY3J1bWIgbGV0dGVyIChndWl4LXVybCAodXJs LXBhdGgtam9pbiAicGFja2FnZXMiCi0JCQkJCQkgIGxldHRlcgotCQkJCQkJICAiIikpKQotICAg ICAgICAgICAoY3J1bWIgKEdfIChzdHJpbmctYXBwZW5kICJQYWdlICIgcGFnZS1udW1iZXIgIiIp KQotCQkgIChndWl4LXVybCAodXJsLXBhdGgtam9pbiAicGFja2FnZXMiCi0JCQkJCSAgICJwYWdl IgotCQkJCQkgICBwYWdlLW51bWJlcgotCQkJCQkgICAiIikpKSkKLSAgICAgIzpjb250ZW50Ci0g ICAgIGAobWFpbgotICAgICAgIChzZWN0aW9uCi0JKEAgKGNsYXNzICJwYWdlIGNlbnRlcmVkLXRl eHQiKSkKLSAgICAgICAgKGgyIChHXyAiUGFja2FnZXMg4oCUICIpICxsZXR0ZXIKLQkgICAgLChw YWdlLWluZGljYXRvciAoc3RyaW5nLT5udW1iZXIgcGFnZS1udW1iZXIpCi0JCQkgICAgIChzdHJp bmctPm51bWJlciB0b3RhbC1wYWdlcykpKQotCi0JKGRpdgotCSAoQCAoY2xhc3MgInNoZWV0IHNo ZWV0LXBhZGRlZCBqdXN0aWZ5LWxlZnQiKSkKLQkgLChsZXR0ZXItc2VsZWN0b3IgbGV0dGVyKQot CSAsQChtYXAgZGV0YWlsZWQtcGFja2FnZS1wcmV2aWV3IChjb250ZXh0LWRhdHVtIGNvbnRleHQg Iml0ZW1zIikpCi0JICwobGV0dGVyLXNlbGVjdG9yIGxldHRlcikKLQkgLChwYWdlLXNlbGVjdG9y IChzdHJpbmctPm51bWJlciB0b3RhbC1wYWdlcykKLQkJCSAoc3RyaW5nLT5udW1iZXIgcGFnZS1u dW1iZXIpCi0JCQkgKGd1aXgtdXJsICh1cmwtcGF0aC1qb2luICJwYWNrYWdlcyIgbGV0dGVyKSkp KSkpKSkpCmRpZmYgLS1naXQgYS93ZWJzaXRlL2FwcHMvcGFja2FnZXMvdGVtcGxhdGVzL2luZGV4 LnNjbSBiL3dlYnNpdGUvYXBwcy9wYWNrYWdlcy90ZW1wbGF0ZXMvaW5kZXguc2NtCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWVjNzU1Li4wMDAwMDAwCi0tLSBhL3dlYnNpdGUvYXBw cy9wYWNrYWdlcy90ZW1wbGF0ZXMvaW5kZXguc2NtCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAs MCBAQAotOzs7IEdOVSBHdWl4IHdlYiBzaXRlCi07OzsgSW5pdGlhbGx5IHdyaXR0ZW4gYnkgc2ly Z2F6aWwgd2hvIHdhaXZlcyBhbGwKLTs7OyBjb3B5cmlnaHQgaW50ZXJlc3Qgb24gdGhpcyBmaWxl LgotCi0oZGVmaW5lLW1vZHVsZSAoYXBwcyBwYWNrYWdlcyB0ZW1wbGF0ZXMgaW5kZXgpCi0gICM6 dXNlLW1vZHVsZSAoYXBwcyBhdXggd2ViKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgYmFzZSB0ZW1w bGF0ZXMgY29tcG9uZW50cykKLSAgIzp1c2UtbW9kdWxlIChhcHBzIGJhc2UgdGVtcGxhdGVzIHRo ZW1lKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgYmFzZSB0eXBlcykKLSAgIzp1c2UtbW9kdWxlIChh cHBzIGJhc2UgdXRpbHMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBpMThuKQotICAjOnVzZS1tb2R1 bGUgKGFwcHMgcGFja2FnZXMgdGVtcGxhdGVzIGNvbXBvbmVudHMpCi0gICM6dXNlLW1vZHVsZSAo c3JmaSBzcmZpLTE5KQotICAjOmV4cG9ydCAoaW5kZXgtdCkpCi0KLQotKGRlZmluZSAoaW5kZXgt dCBjb250ZXh0KQotICAiUmV0dXJuIGFuIFNIVE1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbmRl eCBwYWdlLiIKLSAgKGxldCAoKHBhY2thZ2VzIChjb250ZXh0LWRhdHVtIGNvbnRleHQgInBhY2th Z2VzIikpCi0JKHRvdGFsICAgIChjb250ZXh0LWRhdHVtIGNvbnRleHQgInRvdGFsIikpKQotICAg ICh0aGVtZQotICAgICAjOnRpdGxlIChDXyAid2VicGFnZSB0aXRsZSIgKGxpc3QgIlBhY2thZ2Vz IikpCi0gICAgICM6ZGVzY3JpcHRpb24KLSAgICAgKEdfICJMaXN0IG9mIHBhY2thZ2VzIGF2YWls YWJsZSB0aHJvdWdoIEdOVcKgR3VpeC4iKQotICAgICAjOmtleXdvcmRzCi0gICAgIChzdHJpbmct c3BsaXQgO1RSQU5TTEFUT1JTOiB8LXNlcGFyYXRlZCBsaXN0IG9mIHdlYnBhZ2Uga2V5d29yZHMK LSAgICAgIChHXyAiR05VfExpbnV4fFVuaXh8RnJlZSBzb2Z0d2FyZXxMaWJyZSBzb2Z0d2FyZXxP cGVyYXRpbmcgXAotc3lzdGVtfEdOVSBIdXJkfEdOVSBHdWl4IHBhY2thZ2UgbWFuYWdlcnxHTlUg R3VpbGV8R3VpbGUgXAotU2NoZW1lfFRyYW5zYWN0aW9uYWwgdXBncmFkZXN8RnVuY3Rpb25hbCBw YWNrYWdlIFwKLW1hbmFnZW1lbnR8UmVwcm9kdWNpYmlsaXR5IikgI1x8KQotICAgICAjOmFjdGl2 ZS1tZW51LWl0ZW0gKENfICJ3ZWJzaXRlIG1lbnUiICJQYWNrYWdlcyIpCi0gICAgICM6Y3NzCi0g ICAgIChsaXN0IChndWl4LXVybCAic3RhdGljL2Jhc2UvY3NzL3BhZ2UuY3NzIikKLQkgICAoZ3Vp eC11cmwgInN0YXRpYy9iYXNlL2Nzcy9pdGVtLXByZXZpZXcuY3NzIikKLQkgICAoZ3VpeC11cmwg InN0YXRpYy9wYWNrYWdlcy9jc3MvbGV0dGVyLXNlbGVjdG9yLmNzcyIpKQotICAgICAjOmNydW1i cwotICAgICAobGlzdCAoY3J1bWIgKENfICJ3ZWJzaXRlIG1lbnUiICJQYWNrYWdlcyIpIChndWl4 LXVybCAicGFja2FnZXMvIikpKQotICAgICAjOmNvbnRlbnQKLSAgICAgYChtYWluCi0gICAgICAg KHNlY3Rpb24KLQkoQCAoY2xhc3MgInBhZ2UgY2VudGVyZWQtdGV4dCIpKQotICAgICAgICAsKEdf IGAoaDIgIlBhY2thZ2VzIikpCi0KLSAgICAgICAgLChHXwotICAgICAgICAgIGAocAotICAgICAg ICAgICAgKEAgKGNsYXNzICJsaW1pdC13aWR0aCBjZW50ZXJlZC1ibG9jayIpKQotICAgICAgICAg ICAgIkdOVSBHdWl4IHByb3ZpZGVzICIgLChudW1iZXIqIHRvdGFsKSAiIHBhY2thZ2VzIHRyYW5z cGFyZW50bHkgIgotICAgICAgICAgICAgLChHXwotICAgICAgICAgICAgICBgKGEgKEAgKGhyZWYg Imh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ3VpeC9tYW51YWwvZW4vaHRtbF9ub2RlL1N1 YnN0aXR1dGVzLmh0bWwiKSkKLSAgICAgICAgICAgICAgICAgICJhdmFpbGFibGUgYXMgcHJlLWJ1 aWx0IGJpbmFyaWVzIikpCi0gICAgICAgICAgICAiLiBUaGVzZSBwYWdlcyBwcm92aWRlIGEgY29t cGxldGUgbGlzdCBvZiB0aGUgcGFja2FnZXMuICBPdXIgIgotICAgICAgICAgICAgLChHXwotICAg ICAgICAgICAgICBgKGEgKEAgKGhyZWYgImh0dHBzOi8vY2kuZ3VpeC5nbnUub3JnL2pvYnNldC9t YXN0ZXIiKSkKLSAgICAgICAgICAgICAgICAgICJjb250aW51b3VzIGludGVncmF0aW9uIHN5c3Rl bSIpKQotICAgICAgICAgICAgIiBzaG93cyB0aGVpciBjdXJyZW50IGJ1aWxkIHN0YXR1cyAiCi0g ICAgICAgICAgICAiKHVwZGF0ZWQgIiAsKGRhdGUtPnN0cmluZyAoY3VycmVudC1kYXRlKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENfICJTUkZJLTE5IGRhdGUtPnN0 cmluZyBmb3JtYXQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg In5CIH5lLCB+WSIpKSAiKS4iKSkKLQotCShkaXYKLQkgKEAgKGNsYXNzICJzaGVldCIpKQotCSAs KGxldHRlci1zZWxlY3RvcikKLQkgLEAobWFwIHBhY2thZ2UtcHJldmlldyBwYWNrYWdlcykKLQkg LChsZXR0ZXItc2VsZWN0b3IpKSkpKSkpCmRpZmYgLS1naXQgYS93ZWJzaXRlL2FwcHMvcGFja2Fn ZXMvdGVtcGxhdGVzL3BhY2thZ2UtbGlzdC5zY20gYi93ZWJzaXRlL2FwcHMvcGFja2FnZXMvdGVt cGxhdGVzL3BhY2thZ2UtbGlzdC5zY20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVj YThhNWUuLjAwMDAwMDAKLS0tIGEvd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL3RlbXBsYXRlcy9wYWNr YWdlLWxpc3Quc2NtCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotOzs7IEdOVSBHdWl4 IHdlYiBzaXRlCi07OzsgSW5pdGlhbGx5IHdyaXR0ZW4gYnkgc2lyZ2F6aWwgd2hvIHdhaXZlcyBh bGwKLTs7OyBjb3B5cmlnaHQgaW50ZXJlc3Qgb24gdGhpcyBmaWxlLgotCi0oZGVmaW5lLW1vZHVs ZSAoYXBwcyBwYWNrYWdlcyB0ZW1wbGF0ZXMgcGFja2FnZS1saXN0KQotICAjOnVzZS1tb2R1bGUg KGFwcHMgYXV4IHdlYikKLSAgIzp1c2UtbW9kdWxlIChhcHBzIGJhc2UgdGVtcGxhdGVzIGNvbXBv bmVudHMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBiYXNlIHRlbXBsYXRlcyB0aGVtZSkKLSAgIzp1 c2UtbW9kdWxlIChhcHBzIGJhc2UgdHlwZXMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBiYXNlIHV0 aWxzKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgaTE4bikKLSAgIzp1c2UtbW9kdWxlIChhcHBzIHBh Y2thZ2VzIHRlbXBsYXRlcyBjb21wb25lbnRzKQotICAjOmV4cG9ydCAocGFja2FnZS1saXN0LXQp KQotCi0KLShkZWZpbmUgKHBhY2thZ2UtbGlzdC10IGNvbnRleHQpCi0gICJSZXR1cm4gYSBsaXN0 IG9mIHBhY2thZ2VzIGluIFNIVE1MIHdpdGggdGhlIGRhdGEgaW4gQ09OVEVYVC4iCi0gIChsZXQg KChsZXR0ZXIgKGNvbnRleHQtZGF0dW0gY29udGV4dCAibGV0dGVyIikpCi0JKHBhZ2UtbnVtYmVy Ci0JICAgIChudW1iZXItPnN0cmluZyAoY29udGV4dC1kYXR1bSBjb250ZXh0ICJwYWdlLW51bWJl ciIpKSkKLQkodG90YWwtcGFnZXMKLQkgKG51bWJlci0+c3RyaW5nIChjb250ZXh0LWRhdHVtIGNv bnRleHQgInRvdGFsLXBhZ2VzIikpKSkKLSAgICAodGhlbWUKLSAgICAgIzp0aXRsZSAobGlzdCAo R18gKHN0cmluZy1hcHBlbmQgIlBhZ2UgIiBwYWdlLW51bWJlciAiIikpCi0gICAgICAgICAgICAg ICAgICAgbGV0dGVyIChDXyAid2VicGFnZSB0aXRsZSIgIlBhY2thZ2VzIikpCi0gICAgICM6ZGVz Y3JpcHRpb24KLSAgICAgIkxpc3Qgb2YgcGFja2FnZXMgYXZhaWxhYmxlIHRocm91Z2ggR05VwqBH dWl4LiIKLSAgICAgIzprZXl3b3JkcwotICAgICAoc3RyaW5nLXNwbGl0IDtUUkFOU0xBVE9SUzog fC1zZXBhcmF0ZWQgbGlzdCBvZiB3ZWJwYWdlIGtleXdvcmRzCi0gICAgICAoR18gIkdOVXxMaW51 eHxVbml4fEZyZWUgc29mdHdhcmV8TGlicmUgc29mdHdhcmV8T3BlcmF0aW5nIFwKLXN5c3RlbXxH TlUgSHVyZHxHTlUgR3VpeCBwYWNrYWdlIG1hbmFnZXJ8R05VIEd1aWxlfEd1aWxlIFwKLVNjaGVt ZXxUcmFuc2FjdGlvbmFsIHVwZ3JhZGVzfEZ1bmN0aW9uYWwgcGFja2FnZSBcCi1tYW5hZ2VtZW50 fFJlcHJvZHVjaWJpbGl0eSIpICNcfCkKLSAgICAgIzppbmRleD8gI2ZhbHNlCi0gICAgICM6YWN0 aXZlLW1lbnUtaXRlbSAoQ18gIndlYnNpdGUgbWVudSIgIlBhY2thZ2VzIikKLSAgICAgIzpjc3MK LSAgICAgKGxpc3QgKGd1aXgtdXJsICJzdGF0aWMvYmFzZS9jc3MvcGFnZS5jc3MiKQotCSAgIChn dWl4LXVybCAic3RhdGljL2Jhc2UvY3NzL2l0ZW0tcHJldmlldy5jc3MiKQotCSAgIChndWl4LXVy bCAic3RhdGljL3BhY2thZ2VzL2Nzcy9sZXR0ZXItc2VsZWN0b3IuY3NzIikpCi0gICAgICM6Y3J1 bWJzCi0gICAgIChsaXN0IChjcnVtYiAoQ18gIndlYnNpdGUgbWVudSIgIlBhY2thZ2VzIikgKGd1 aXgtdXJsICJwYWNrYWdlcy8iKSkKLQkgICAoY3J1bWIgbGV0dGVyIChndWl4LXVybCAodXJsLXBh dGgtam9pbiAicGFja2FnZXMiCi0JCQkJCQkgIGxldHRlcgotCQkJCQkJICAiIikpKQotICAgICAg ICAgICAoY3J1bWIgKEdfIChzdHJpbmctYXBwZW5kICJQYWdlICIgcGFnZS1udW1iZXIgIiIpKQot CQkgIChndWl4LXVybCAodXJsLXBhdGgtam9pbiAicGFja2FnZXMiCi0JCQkJCSAgICJwYWdlIgot CQkJCQkgICBwYWdlLW51bWJlcgotCQkJCQkgICAiIikpKSkKLSAgICAgIzpjb250ZW50Ci0gICAg IGAobWFpbgotICAgICAgIChzZWN0aW9uCi0JKEAgKGNsYXNzICJwYWdlIGNlbnRlcmVkLXRleHQi KSkKLQkoaDIgKEdfICJQYWNrYWdlcyDigJQgIikgLGxldHRlcgotCSAgICAsKHBhZ2UtaW5kaWNh dG9yIChzdHJpbmctPm51bWJlciBwYWdlLW51bWJlcikKLQkJCSAgICAgKHN0cmluZy0+bnVtYmVy IHRvdGFsLXBhZ2VzKSkpCi0KLQkoZGl2Ci0JIChAIChjbGFzcyAic2hlZXQiKSkKLQkgLChsZXR0 ZXItc2VsZWN0b3IgbGV0dGVyKQotCSAsQChtYXAgcGFja2FnZS1wcmV2aWV3IChjb250ZXh0LWRh dHVtIGNvbnRleHQgIml0ZW1zIikpCi0JICwobGV0dGVyLXNlbGVjdG9yIGxldHRlcikKLQkgLChw YWdlLXNlbGVjdG9yIChzdHJpbmctPm51bWJlciB0b3RhbC1wYWdlcykKLQkJCSAoc3RyaW5nLT5u dW1iZXIgcGFnZS1udW1iZXIpCi0JCQkgKGd1aXgtdXJsICh1cmwtcGF0aC1qb2luICJwYWNrYWdl cyIgbGV0dGVyKSkpKSkpKSkpCmRpZmYgLS1naXQgYS93ZWJzaXRlL2FwcHMvcGFja2FnZXMvdGVt cGxhdGVzL3BhY2thZ2Uuc2NtIGIvd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL3RlbXBsYXRlcy9wYWNr YWdlLnNjbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEzZGNmMC4uMDAwMDAwMAot LS0gYS93ZWJzaXRlL2FwcHMvcGFja2FnZXMvdGVtcGxhdGVzL3BhY2thZ2Uuc2NtCisrKyAvZGV2 L251bGwKQEAgLTEsODcgKzAsMCBAQAotOzs7IEdOVSBHdWl4IHdlYiBzaXRlCi07OzsgSW5pdGlh bGx5IHdyaXR0ZW4gYnkgc2lyZ2F6aWwgd2hvIHdhaXZlcyBhbGwKLTs7OyBjb3B5cmlnaHQgaW50 ZXJlc3Qgb24gdGhpcyBmaWxlLgotCi0oZGVmaW5lLW1vZHVsZSAoYXBwcyBwYWNrYWdlcyB0ZW1w bGF0ZXMgcGFja2FnZSkKLSAgIzp1c2UtbW9kdWxlIChhcHBzIGF1eCB3ZWIpCi0gICM6dXNlLW1v ZHVsZSAoYXBwcyBiYXNlIHRlbXBsYXRlcyBjb21wb25lbnRzKQotICAjOnVzZS1tb2R1bGUgKGFw cHMgYmFzZSB0ZW1wbGF0ZXMgdGhlbWUpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBiYXNlIHR5cGVz KQotICAjOnVzZS1tb2R1bGUgKGFwcHMgYmFzZSB1dGlscykKLSAgIzp1c2UtbW9kdWxlIChhcHBz IGkxOG4pCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBwYWNrYWdlcyB0ZW1wbGF0ZXMgY29tcG9uZW50 cykKLSAgIzp1c2UtbW9kdWxlIChhcHBzIHBhY2thZ2VzIHR5cGVzKQotICAjOnVzZS1tb2R1bGUg KGFwcHMgcGFja2FnZXMgdXRpbHMpCi0gICM6dXNlLW1vZHVsZSAoZ3VpeCBnbnUtbWFpbnRlbmFu Y2UpCi0gICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykKLSAgIzpleHBvcnQgKHBhY2thZ2Ut dCkpCi0KLQotKGRlZmluZSAocGFja2FnZS10IGNvbnRleHQpCi0gICJSZXR1cm4gYW4gU0hUTUwg cmVwcmVzZW50YXRpb24gb2YgYSBwYWNrYWdlIHBhZ2UuIgotICAobGV0KiAoKHBhY2thZ2UgKGNv bnRleHQtZGF0dW0gY29udGV4dCAicGFja2FnZSIpKQotCSAocGFja2FnZS1pZCAoc3RyaW5nLWFw cGVuZCAocGFja2FnZS1uYW1lIHBhY2thZ2UpCi0JCQkJICAgICIgIgotCQkJCSAgICAocGFja2Fn ZS12ZXJzaW9uIHBhY2thZ2UpKSkKLQkgKGxpbnQtaXNzdWVzIChwYWNrYWdlLWxpbnQtaXNzdWVz IHBhY2thZ2UpKSkKLSAgICAodGhlbWUKLSAgICAgIzp0aXRsZSAoQ18gIndlYnBhZ2UgdGl0bGUi IChsaXN0IHBhY2thZ2UtaWQgIlBhY2thZ2VzIikpCi0gICAgICM6ZGVzY3JpcHRpb24gKHBhY2th Z2Utc3lub3BzaXMtc2h0bWwgcGFja2FnZSkKLSAgICAgIzprZXl3b3JkcwotICAgICAoc3RyaW5n LXNwbGl0IDtUUkFOU0xBVE9SUzogfC1zZXBhcmF0ZWQgbGlzdCBvZiB3ZWJwYWdlIGtleXdvcmRz Ci0gICAgICAoR18gIkdOVXxMaW51eHxVbml4fEZyZWUgc29mdHdhcmV8TGlicmUgc29mdHdhcmV8 T3BlcmF0aW5nIFwKLXN5c3RlbXxHTlUgSHVyZHxHTlUgR3VpeCBwYWNrYWdlIG1hbmFnZXJ8R05V IEd1aWxlfEd1aWxlIFwKLVNjaGVtZXxUcmFuc2FjdGlvbmFsIHVwZ3JhZGVzfEZ1bmN0aW9uYWwg cGFja2FnZSBcCi1tYW5hZ2VtZW50fFJlcHJvZHVjaWJpbGl0eSIpICNcfCkKLSAgICAgIzphY3Rp dmUtbWVudS1pdGVtIChDXyAid2Vic2l0ZSBtZW51IiAiUGFja2FnZXMiKQotICAgICAjOmNzcwot ICAgICAobGlzdCAoZ3VpeC11cmwgInN0YXRpYy9iYXNlL2Nzcy9wYWdlLmNzcyIpCi0JICAgKGd1 aXgtdXJsICJzdGF0aWMvcGFja2FnZXMvY3NzL3BhY2thZ2UuY3NzIikpCi0gICAgICM6Y3J1bWJz Ci0gICAgIChsaXN0IChjcnVtYiAoQ18gIndlYnNpdGUgbWVudSIgIlBhY2thZ2VzIikgKGd1aXgt dXJsICJwYWNrYWdlcy8iKSkKLQkgICAoY3J1bWIgcGFja2FnZS1pZAotCQkgIChndWl4LXVybCAo cGFja2FnZS11cmwtcGF0aCBwYWNrYWdlKSkpKQotICAgICAjOmNvbnRlbnQKLSAgICAgYChtYWlu Ci0gICAgICAgKGFydGljbGUKLQkoQCAoY2xhc3MgInBhZ2UgY2VudGVyZWQtYmxvY2sgbGltaXQt d2lkdGgiKSkKLQkoaDIgLHBhY2thZ2UtaWQgIiAiCi0JICAgIChzcGFuCi0JICAgICAoQCAoY2xh c3MgInN5bm9wc2lzIikpCi0JICAgICAsKHBhY2thZ2Utc3lub3BzaXMtc2h0bWwgcGFja2FnZSkp KQotCi0gICAgICAgIDs7ICdnbnUtcGFja2FnZT8nIG1pZ2h0IGZldGNoIHN0dWZmIGZyb20gdGhl IG5ldHdvcmsuICBBc3N1bWUgI2YgaWYKLSAgICAgICAgOzsgdGhhdCBkb2Vzbid0IHdvcmsuCi0J KHAgLChpZiAoZmFsc2UtaWYtZXhjZXB0aW9uIChnbnUtcGFja2FnZT8gcGFja2FnZSkpCi0gICAg ICAgICAgICAgICAgKEdfICcoaXQgIlRoaXMgaXMgYSBHTlUgcGFja2FnZS4gICIpKQotICAgICAg ICAgICAgICAgICIiKQotICAgICAgICAgICAsKHBhY2thZ2UtZGVzY3JpcHRpb24tc2h0bWwgcGFj a2FnZSkpCi0KLQkodWwKLQkgKEAgKGNsYXNzICJwYWNrYWdlLWluZm8iKSkKLSAgICAgICAgICwo R18gYChsaSAsKEdfIGAoYiAiV2Vic2l0ZTogIikpCi0gICAgICAgICAgICAgICAgICAgKGEgKEAg KGhyZWYgLChwYWNrYWdlLWhvbWUtcGFnZSBwYWNrYWdlKSkpCi0gICAgICAgICAgICAgICAgICAg ICAgLChwYWNrYWdlLWhvbWUtcGFnZSBwYWNrYWdlKSkpKQotICAgICAgICAgLChHXyBgKGxpICwo R18gYChiICJMaWNlbnNlOiAiKSkKLSAgICAgICAgICAgICAgICAgICAsKGxpY2Vuc2UtPnNodG1s IChwYWNrYWdlLWxpY2Vuc2UgcGFja2FnZSkpKSkKLSAgICAgICAgICwoR18gYChsaSAsKEdfIGAo YiAiUGFja2FnZSBzb3VyY2U6ICIpKQotICAgICAgICAgICAgICAgICAgICwobG9jYXRpb24tPnNo dG1sIChwYWNrYWdlLWxvY2F0aW9uIHBhY2thZ2UpKSkpCi0gICAgICAgICAsKEdfIGAobGkgLChH XyBgKGIgIlBhdGNoZXM6ICIpKQotICAgICAgICAgICAgICAgICAgICwocGF0Y2hlcy0+c2h0bWwg KHBhY2thZ2UtcGF0Y2hlcyBwYWNrYWdlKSkpKQotICAgICAgICAgLChHXyBgKGxpICwoR18gYChi ICJCdWlsZHM6ICIpKQotICAgICAgICAgICAgICAgICAgICwoc3VwcG9ydGVkLXN5c3RlbXMtPnNo dG1sIHBhY2thZ2UpKSkpCi0KLQk7OyBMaW50IGlzc3Vlcy4KLQksKGlmIChudWxsPyBsaW50LWlz c3VlcykKLQkgICAgICIiCi0gICAgICAgICAgICAgKEdfIGAoLChHXyBgKGgzICJMaW50IGlzc3Vl cyIpKQotICAgICAgICAgICAgICAgICAgICwoR18KLSAgICAgICAgICAgICAgICAgICAgIGAocAot ICAgICAgICAgICAgICAgICAgICAgICAiIgotICAgICAgICAgICAgICAgICAgICAgICAsKGlzc3Vl LWNvdW50LT5zaHRtbAotICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggbGludC1pc3N1 ZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAiLiAiCi0gICAgICAgICAgICAgICAgICAgICAg ICJTZWUgIiAsKEdfIGAoYSAoQCAoaHJlZiAiIyIpKSAicGFja2FnZSBkZWZpbml0aW9uIikpCi0g ICAgICAgICAgICAgICAgICAgICAgICIgaW4gR3VpeCBzb3VyY2UgY29kZS4iKSkKLQotICAgICAg ICAgICAgICAgICAgICxAKG1hcCBsaW50LWlzc3VlLT5zaHRtbCBsaW50LWlzc3VlcykpKSkpKSkp KQpkaWZmIC0tZ2l0IGEvd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL3R5cGVzLnNjbSBiL3dlYnNpdGUv YXBwcy9wYWNrYWdlcy90eXBlcy5zY20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJi Nzc3YmYuLjAwMDAwMDAKLS0tIGEvd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL3R5cGVzLnNjbQorKysg L2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi07OzsgR05VIEd1aXggd2ViIHNpdGUKLTs7OyBJ bml0aWFsbHkgd3JpdHRlbiBieSBzaXJnYXppbCB3aG8gd2FpdmVzIGFsbAotOzs7IGNvcHlyaWdo dCBpbnRlcmVzdCBvbiB0aGlzIGZpbGUuCi0KLShkZWZpbmUtbW9kdWxlIChhcHBzIHBhY2thZ2Vz IHR5cGVzKQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS05KQotICAjOmV4cG9ydCAoaWxpbmsK LQkgICAgaWxpbms/Ci0JICAgIGlsaW5rLW5hbWUKLQkgICAgaWxpbmstdXJsCi0JICAgIGxpbnQt aXNzdWUKLQkgICAgbGludC1pc3N1ZT8KLQkgICAgbGludC1pc3N1ZS10eXBlCi0JICAgIGxpbnQt aXNzdWUtZGVzY3JpcHRpb24pKQotCi0KLTs7OwotOzs7IERhdGEgdHlwZXMuCi07OzsKLQotOzs7 IExpY2Vuc2UgKHJlY29yZCB0eXBlKQotOzs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotOzs7Ci07 OzsgQSBsaWNlbnNlIG9iamVjdCByZXByZXNlbnRzIGEgY29weXJpZ2h0IGxpY2Vuc2Ugb3IgcHVi bGljIGRvbWFpbgotOzs7IGRlZGljYXRpb24uCi07OzsKLTs7OyBPYmplY3RzIG9mIHRoaXMgdHlw ZSBjYW4gYmUgY3JlYXRlZCB3aXRoIHRoZSAibGljZW5zZSIgcHJvY2VkdXJlCi07OzsgYXMgd2Vs bCAoc2VlIEhlbHBlciBwcm9jZWR1cmVzIGJlbG93KS4KLTs7OwotOzs7IEZpZWxkczoKLTs7Owot Ozs7IG5hbWUgKHN0cmluZykKLTs7OyAgIFRoZSBodW1hbiByZWFkYWJsZSBuYW1lIG9mIHRoZSBs aWNlbnNlLiBGb3IgZXhhbXBsZTogIkdQTCAyKyIsCi07OzsgICAiQ0MtQlktU0EgMy4wIiwgZXRj LgotOzs7Ci07OzsgdXJpIChzdHJpbmcpCi07OzsgICBUaGUgVVJMIHRvIHRoZSBkZWZpbml0aW9u IG9mIHRoZSBsaWNlbnNlIG9uIHRoZSB3ZWIuCi07OzsKLTs7OyBjb21tZW50IChzdHJpbmcpCi07 OzsgICBBIGNvbW1lbnQgYWJvdXQgdGhlIGxpY2Vuc2U/Ci07OzsKLShkZWZpbmUtcmVjb3JkLXR5 cGUgPGxpY2Vuc2U+Ci0gIChtYWtlLWxpY2Vuc2UgbmFtZSB1cmkgY29tbWVudCkKLSAgbGljZW5z ZT8KLSAgKG5hbWUgICAgbGljZW5zZS1uYW1lKQotICAodXJpICAgICBsaWNlbnNlLXVyaSkKLSAg KGNvbW1lbnQgbGljZW5zZS1jb21tZW50KSkKLQotOzs7IEhlbHBlciBwcm9jZWR1cmVzLgotCi0o ZGVmaW5lKiAobGljZW5zZSAjOmtleSBuYW1lIHVyaSAoY29tbWVudCAiIikpCi0gICJSZXR1cm4g YSA8bGljZW5zZT4gb2JqZWN0IHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZXMuIgotICAobWFrZS1s aWNlbnNlIG5hbWUgdXJpIGNvbW1lbnQpKQotCi0KLQotOzs7IElMaW5rIChyZWNvcmQgdHlwZSkK LTs7OyAtLS0tLS0tLS0tLS0tLS0tLS0tCi07OzsKLTs7OyBBIGxpbmsgdG8gYSB3ZWIgcmVzb3Vy Y2UuCi07OzsKLTs7OyBGaWVsZHM6Ci07OzsKLTs7OyBuYW1lIChzdHJpbmcpCi07OzsgICBBIGRl c2NyaXB0aXZlIG5hbWUgZm9yIHRoZSBsaW5rLiBGb3IgZXhhbXBsZToKLTs7OyAgICJpNjg2IGJ1 aWxkIiwgImdyYXBoaWNzLnNjbSIsIGV0Yy4KLTs7OwotOzs7IHVybCAoc3RyaW5nKQotOzs7ICAg VGhlIFVSTCB0byB0aGUgd2ViIHJlc291cmNlLgotOzs7Ci0oZGVmaW5lLXJlY29yZC10eXBlIDxp bGluaz4KLSAgKGlsaW5rIG5hbWUgdXJsKQotICBpbGluaz8KLSAgKG5hbWUgICAgaWxpbmstbmFt ZSkKLSAgKHVybCAgICAgaWxpbmstdXJsKSkKLQotCi0KLTs7OyBMaW50IElzc3VlIChyZWNvcmQg dHlwZSkKLTs7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTs7OwotOzs7IEEgbGludCBpc3N1 ZSBvYmplY3QgcmVwcmVzZW50cyBhbiBpc3N1ZSByZXBvcnRlZCBieSBhbnkgb2YgdGhlIGxpbnQK LTs7OyBjaGVja2VycyBhdmFpbGFibGUgZm9yIEdOVSBHdWl4IChzZWUgYGd1aXggbGludCAtLWxp c3QtY2hlY2tlcnNgKS4KLTs7OwotOzs7IE9iamVjdHMgb2YgdGhpcyB0eXBlIGNhbiBiZSBjcmVh dGVkIHdpdGggdGhlICJsaW50LWlzc3VlIiBwcm9jZWR1cmUKLTs7OyBhcyB3ZWxsIChzZWUgSGVs cGVyIHByb2NlZHVyZXMgYmVsb3cpLgotOzs7Ci07OzsgRmllbGRzOgotOzs7Ci07OzsgdHlwZSAo c3RyaW5nKQotOzs7ICAgVGhlIG5hbWUgb2YgdGhlIGNoZWNrZXIgdGhlIGlzc3VlIGJlbG9uZ3Mg dG8uIEZvciBleGFtcGxlOgotOzs7ICAgImhvbWUtcGFnZSIsICJsaWNlbnNlIiwgInNvdXJjZSIs IGV0Yy4KLTs7OwotOzs7ICAgU2VlIGBndWl4IGxpbnQgLS1saXN0LWNoZWNrZXJzYCBmb3IgYWxs IHRoZSBuYW1lcyBvZiB0aGUgY2hlY2tlcnMuCi07OzsKLTs7OyBkZXNjcmlwdGlvbiAoc3RyaW5n KQotOzs7ICAgVGhlIGRldGFpbHMgb2YgdGhlIGlzc3VlLgotOzs7Ci0oZGVmaW5lLXJlY29yZC10 eXBlIDxsaW50LWlzc3VlPgotICAobWFrZS1saW50LWlzc3VlIHR5cGUgZGVzY3JpcHRpb24pCi0g IGxpbnQtaXNzdWU/Ci0gICh0eXBlIGxpbnQtaXNzdWUtdHlwZSkKLSAgKGRlc2NyaXB0aW9uIGxp bnQtaXNzdWUtZGVzY3JpcHRpb24pKQotCi07OzsgSGVscGVyIHByb2NlZHVyZXMuCi0KLShkZWZp bmUgKGxpbnQtaXNzdWUgdHlwZSBkZXNjcmlwdGlvbikKLSAgIlJldHVybiBhIDxsaW50LWlzc3Vl PiBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcy4iCi0gIChtYWtlLWxpbnQtaXNzdWUg dHlwZSBkZXNjcmlwdGlvbikpCmRpZmYgLS1naXQgYS93ZWJzaXRlL2FwcHMvcGFja2FnZXMvdXRp bHMuc2NtIGIvd2Vic2l0ZS9hcHBzL3BhY2thZ2VzL3V0aWxzLnNjbQpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNTBlNTZiMC4uMDAwMDAwMAotLS0gYS93ZWJzaXRlL2FwcHMvcGFja2Fn ZXMvdXRpbHMuc2NtCisrKyAvZGV2L251bGwKQEAgLTEsMjgyICswLDAgQEAKLTs7OyBHTlUgR3Vp eCB3ZWIgc2l0ZQotOzs7IENvcHlyaWdodCDCqSAyMDE3LCAyMDIyIEx1ZG92aWMgQ291cnTDqHMg PGx1ZG9AZ251Lm9yZz4KLTs7OyBDb3B5cmlnaHQgwqkgMjAxNyBFcmljIEJhdmllciA8YmF2aWVy QG1lbWJlci5mc2Yub3JnPgotOzs7IENvcHlyaWdodCDCqSAyMDIwIFJpY2FyZG8gV3VybXVzIDxy ZWthZG9AZWxlcGhseS5uZXQ+Ci07OzsKLTs7OyBJbml0aWFsbHkgd3JpdHRlbiBieSBzaXJnYXpp bAotOzs7IHdobyB3YWl2ZXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBvbiB0aGlzIGZpbGUuCi07 OzsKLTs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEd1aXggd2ViIHNpdGUuCi07OzsK LTs7OyBUaGUgR05VIEd1aXggd2ViIHNpdGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotOzs7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yIChhdAotOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLTs7OwotOzs7 IFRoZSBHTlUgR3VpeCB3ZWIgc2l0ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLCBidXQKLTs7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi07OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotOzs7IEdOVSBBZmZlcm8gR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotOzs7Ci07OzsgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi07OzsgYWxvbmcgd2l0aCB0aGUgR05VIEd1aXggd2ViIHNpdGUuICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0KLShkZWZpbmUtbW9kdWxlIChhcHBz IHBhY2thZ2VzIHV0aWxzKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgYXV4IHdlYikKLSAgIzp1c2Ut bW9kdWxlIChhcHBzIGJhc2UgdXRpbHMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBpMThuKQotICAj OnVzZS1tb2R1bGUgKGFwcHMgcGFja2FnZXMgZGF0YSkKLSAgIzp1c2UtbW9kdWxlIChhcHBzIHBh Y2thZ2VzIHR5cGVzKQotICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2FnZXMpCi0gICM6dXNlLW1v ZHVsZSAoKGd1aXggaTE4bikgIzpzZWxlY3QgKFBfKSkKLSAgIzp1c2UtbW9kdWxlIChndWl4IHV0 aWxzKQotICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQgdXRpbHMpCi0gICM6dXNlLW1vZHVsZSAo Z3VpeCBidWlsZCBkb3dubG9hZCkKLSAgIzp1c2UtbW9kdWxlIChndWl4IGRvd25sb2FkKQotICAj OnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0yNikK LSAgIzp1c2UtbW9kdWxlIChzeG1sIHRyYW5zZm9ybSkKLSAgIzp1c2UtbW9kdWxlICh0ZXhpbmZv KQotICAjOnVzZS1tb2R1bGUgKHRleGluZm8gaHRtbCkKLSAgIzp1c2UtbW9kdWxlIChpY2UtOSBt YXRjaCkKLSAgIzp1c2UtbW9kdWxlIChpY2UtOSByZGVsaW0pCi0gICM6dXNlLW1vZHVsZSAoaWNl LTkgcG9wZW4pCi0gICM6dXNlLW1vZHVsZSAod2ViIHVyaSkKLSAgIzpleHBvcnQgKHRha2UtYXQt bW9zdAotCi0gICAgICAgICAgICBwYWNrYWdlLWRlc2NyaXB0aW9uLXNodG1sCi0gICAgICAgICAg ICBwYWNrYWdlLXN5bm9wc2lzLXNodG1sCi0KLSAgICAgICAgICAgIGxvY2F0aW9uLT5pbGluawot CSAgICBwYWNrYWdlLWJ1aWxkLWlzc3VlcwotCSAgICBwYWNrYWdlLWlzc3Vlcz8KLQkgICAgcGFj a2FnZS1saW50LWlzc3VlcwotCSAgICBwYWNrYWdlLXBhdGNoZXMKLQkgICAgcGFja2FnZS11cmwt cGF0aAotCSAgICBwYWNrYWdlcy9ncm91cC1ieS1sZXR0ZXIpKQotCi0KLTs7OwotOzs7IEhlbHBl ciBwcm9jZWR1cmVzLgotOzs7Ci0KLShkZWZpbmUgKHRha2UtYXQtbW9zdCBsc3QgbWF4KQotICAi VGFrZSB1cCB0byBNQVggZWxlbWVudHMgZnJvbSBMU1QuIgotICAobGV0IGxvb3AgKChsc3QgbHN0 KQotICAgICAgICAgICAgIChyZXN1bHQgJygpKQotICAgICAgICAgICAgICh0b3RhbCAwKSkKLSAg ICAobWF0Y2ggbHN0Ci0gICAgICAoKCkKLSAgICAgICAocmV2ZXJzZSByZXN1bHQpKQotICAgICAg KChoZWFkIC4gdGFpbCkKLSAgICAgICAoaWYgKD49IHRvdGFsIG1heCkKLSAgICAgICAgICAgKHJl dmVyc2UgcmVzdWx0KQotICAgICAgICAgICAobG9vcCB0YWlsIChjb25zIGhlYWQgcmVzdWx0KSAo KyAxIHRvdGFsKSkpKSkpKQotCi0oZGVmaW5lICh0ZXhpbmZvLT5zaHRtbCB0ZXhpKQotICAiUGFy c2UgVEVYSSwgYSBzdHJpbmcsIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgU0hUTUwuIgot ICA7OyAndGV4aS1mcmFnbWVudC0+c3RleGknIHVzZXMgJ2NhbGwtd2l0aC1pbnB1dC1zdHJpbmcn LCBzbyBtYWtlIHN1cmUKLSAgOzsgdGhvc2Ugc3RyaW5nIHBvcnRzIGFyZSBVbmljb2RlLWNhcGFi bGUuCi0gICh3aXRoLWZsdWlkcyAoKCVkZWZhdWx0LXBvcnQtZW5jb2RpbmcgIlVURi04IikpCi0g ICAgKGxldCAoKHNodG1sIChzdGV4aS0+c2h0bWwgKHRleGktZnJhZ21lbnQtPnN0ZXhpIHRleGkp KSkpCi0gICAgICAocHJlLXBvc3Qtb3JkZXIgc2h0bWwKLSAgICAgICAgICAgICAgICAgICAgICBg KCgqRU5USVRZKgotICAgICAgICAgICAgICAgICAgICAgICAgIC4gLChsYW1iZGEgKHRhZyBlbnRp dHkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZW50aXR5Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgibmJzcCIgKHN0cmluZyAjXHhhMCkpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgiaGVsbGlwIiAoc3RyaW5nICNceDIwMjYpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXyAiICIpKSkpCi0gICAgICAgICAgICAgICAg ICAgICAgICAoKmRlZmF1bHQqCi0gICAgICAgICAgICAgICAgICAgICAgICAgLiAsKGxhbWJkYSBh cmdzIGFyZ3MpKQotICAgICAgICAgICAgICAgICAgICAgICAgKCp0ZXh0KgotICAgICAgICAgICAg ICAgICAgICAgICAgIC4gLChsYW1iZGEgKF8gdHh0KSB0eHQpKSkpKSkpCi0KLShkZWZpbmUgKHBh Y2thZ2UtZGVzY3JpcHRpb24tc2h0bWwgcGFja2FnZSkKLSAgIlJldHVybiBhIFNYTUwgcmVwcmVz ZW50YXRpb24gb2YgUEFDS0FHRSBkZXNjcmlwdGlvbiBmaWVsZCB3aXRoIEhUTUwKLXZvY2FidWxh cnkuIgotICAoYW5kPT4gKGFuZD0+IChwYWNrYWdlLWRlc2NyaXB0aW9uIHBhY2thZ2UpIFBfKSB0 ZXhpbmZvLT5zaHRtbCkpCi0KLShkZWZpbmUgKHBhY2thZ2Utc3lub3BzaXMtc2h0bWwgcGFja2Fn ZSkKLSAgIlJldHVybiBhIFNYTUwgcmVwcmVzZW50YXRpb24gb2YgUEFDS0FHRSBzeW5vcHNpcyBm aWVsZCB3aXRoIEhUTUwKLXZvY2FidWxhcnkuIgotICAoYW5kPT4gKGFuZD0+IChwYWNrYWdlLXN5 bm9wc2lzIHBhY2thZ2UpIFBfKQotICAgICAgICAgKGxhbWJkYSAoc3lub3BzaXMpCi0gICAgICAg ICAgIDs7IFN0cmlwIHRoZSBwYXJhZ3JhcGggdGhhdCAndGV4aW5mby0+c2h0bWwnIGFkZHMuCi0g ICAgICAgICAgIChtYXRjaCAodGV4aW5mby0+c2h0bWwgc3lub3BzaXMpCi0gICAgICAgICAgICAg KCgnZGl2ICgncCB0ZXh0IC4uLikpCi0gICAgICAgICAgICAgIHRleHQpCi0gICAgICAgICAgICAg KHRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtmaXNoeSBkZXNjcmlwdGlvbgot ICAgICAgICAgICAgICB0ZXh0KSkpKSkKLQotKGRlZmluZSBnaXQtZGVzY3JpcHRpb24KLSAgKGRl bGF5Ci0gICAobGV0KiAoKGd1aXggKGZpbmQgKGxhbWJkYSAocCkKLSAgICAgICAgICAgICAgICAg ICAgICAgIChmaWxlLWV4aXN0cz8gKHN0cmluZy1hcHBlbmQgcCAiL2d1aXgvY29uZmlnLnNjbSIp KSkKLSAgICAgICAgICAgICAgICAgICAgICAlbG9hZC1wYXRoKSkKLSAgICAgICAgICAocGlwZSAo d2l0aC1kaXJlY3RvcnktZXhjdXJzaW9uIGd1aXgKLSAgICAgICAgICAgICAgICAgIChvcGVuLXBp cGUqIE9QRU5fUkVBRCAiZ2l0IiAiZGVzY3JpYmUiKSkpCi0gICAgICAgICAgKGRlc2MgKHJlYWQt bGluZSBwaXBlKSkKLSAgICAgICAgICAoZ2l0PyAoY2xvc2UtcGlwZSBwaXBlKSkpCi0gICAgIChh bmQgKHplcm8/IGdpdD8pIGRlc2MpKSkpCi0KLShkZWZpbmUgKGxvY2F0aW9uLT5pbGluayBsb2Mp Ci0gICJDb252ZXJ0IHRoZSBnaXZlbiBsb2NhdGlvbiBMT0MgaW50byBhbiBJbGluay4KLQotICAg TE9DICg8bG9jYXRpb24+KQotICAgICBBIGxvY2F0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIHRo ZSBHTlUgR3VpeCBBUEkgcmVmZXJlbmNlLgotCi0gICBSRVRVUk4gKDxpbGluaz4pCi0gICAgIEFu IElsaW5rIG9iamVjdCBhcyBkZWZpbmVkIGluIChhcHBzIHBhY2thZ2VzIHR5cGVzKS4iCi0gIChp bGluayAoYmFzZW5hbWUgKGxvY2F0aW9uLWZpbGUgbG9jKSkKLQkgKGd1aXgtZ2l0LXRyZWUtdXJs Ci0JICAoc3RyaW5nLWFwcGVuZCAobG9jYXRpb24tZmlsZSBsb2MpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgKG9yIChhbmQ9PiAoZm9yY2UgZ2l0LWRlc2NyaXB0aW9uKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGN1dCBzdHJpbmctYXBwZW5kICI/aWQ9IiA8PikpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKQotICAgICAgICAgICAgICAgICAgICAgICAg ICIjbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAobnVtYmVyLT5zdHJpbmcgKGxvY2F0aW9u LWxpbmUgbG9jKSkpKSkpCi0KLQotOzs7IFRPRE86IFN0dWIuIEltcGxlbWVudC4KLTs7OyBodHRw czovL2JpdGJ1Y2tldC5vcmcvc2lyZ2F6aWwvZ3VpeHNkLXdlYnNpdGUvaXNzdWVzLzQ1LwotKGRl ZmluZSAocGFja2FnZS1idWlsZC1pc3N1ZXMgcGFja2FnZSkKLSAgIlJldHVybiB0aGUgbGlzdCBv ZiBidWlsZCBpc3N1ZXMgZm9yIHRoZSBnaXZlbiBQQUNLQUdFLgotCi0gICBQQUNLQUdFICg8cGFj a2FnZT4pCi0gICAgIEEgcGFja2FnZSBvYmplY3QgYXMgZGVmaW5lZCBpbiB0aGUgR05VIEd1aXgg QVBJIHJlZmVyZW5jZS4KLQotICAgUkVUVVJOIChsaXN0KQotICAgICBBIGxpc3Qgb2YgPGxvY2F0 aW9uPiBvYmplY3RzIGFzIGRlZmluZWQgaW4gKGFwcHMgcGFja2FnZXMgdHlwZXMpCi0gICAgIHRo YXQgcmVwcmVzZW50IGJ1aWxkIGlzc3Vlcy4iCi0gIChsaXN0KSkKLQotCi07OzsgVE9ETzogQWRk IHVuaXQgdGVzdHMuCi07OzsgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3NpcmdhemlsL2d1aXhzZC13 ZWJzaXRlL2lzc3Vlcy80NC8KLShkZWZpbmUgKHBhY2thZ2UtaXNzdWVzPyBwYWNrYWdlKQotICAi UmV0dXJuIHRydWUgaWYgdGhlIFBBQ0tBR0UgaGFzIGxpbnQgb3IgYnVpbGQgaXNzdWVzLgotCi0g ICBQQUNLQUdFICg8cGFja2FnZT4pCi0gICAgIEEgcGFja2FnZSBvYmplY3QgYXMgZGVmaW5lZCBp biB0aGUgR05VIEd1aXggQVBJIHJlZmVyZW5jZS4iCi0gIChvciAobm90IChudWxsPyAocGFja2Fn ZS1saW50LWlzc3VlcyBwYWNrYWdlKSkpCi0gICAgICAobm90IChudWxsPyAocGFja2FnZS1idWls ZC1pc3N1ZXMgcGFja2FnZSkpKSkpCi0KLQotOzs7IFRPRE86IFN0dWIuIEltcGxlbWVudC4KLTs7 OyBodHRwczovL2JpdGJ1Y2tldC5vcmcvc2lyZ2F6aWwvZ3VpeHNkLXdlYnNpdGUvaXNzdWVzLzQz LwotKGRlZmluZSAocGFja2FnZS1saW50LWlzc3VlcyBwYWNrYWdlKQotICAiUmV0dXJuIHRoZSBs aXN0IG9mIGxpbnQgaXNzdWVzIGZvciB0aGUgZ2l2ZW4gUEFDS0FHRS4KLQotICAgUEFDS0FHRSAo PHBhY2thZ2U+KQotICAgICBBIHBhY2thZ2Ugb2JqZWN0IGFzIGRlZmluZWQgaW4gdGhlIEdOVSBH dWl4IEFQSSByZWZlcmVuY2UuCi0KLSAgIFJFVFVSTiAobGlzdCkKLSAgICAgQSBsaXN0IG9mIDxs aW50LWlzc3VlPiBvYmplY3RzIGFzIGRlZmluZWQgaW4gKGFwcHMgcGFja2FnZXMgdHlwZXMpLiIK LSAgKGxpc3QpKQotCi0KLShkZWZpbmUgKHBhY2thZ2UtcGF0Y2hlcyBwYWNrYWdlKQotICAiUmV0 dXJuIHRoZSBsaXN0IG9mIHBhdGNoZXMgZm9yIHRoZSBnaXZlbiBQQUNLQUdFLgotCi0gICBQQUNL QUdFICg8cGFja2FnZT4pCi0gICAgIEEgcGFja2FnZSBvYmplY3QgYXMgZGVmaW5lZCBpbiB0aGUg R05VIEd1aXggQVBJIHJlZmVyZW5jZS4KLQotICAgUkVUVVJOIChsaXN0KQotICAgICBBIGxpc3Qg b2YgPGxpbms+IG9iamVjdHMgYXMgZGVmaW5lZCBpbiAoYXBwcyBwYWNrYWdlcyB0eXBlcykKLSAg ICAgcmVwcmVzZW50aW5nIHBhdGNoZXMuIgotICAoZGVmaW5lIHBhdGNoLXVybAotICAgIChtYXRj aC1sYW1iZGEKLSAgICAgICgoPyBzdHJpbmc/IHBhdGNoKQotICAgICAgIChzdHJpbmctYXBwZW5k Ci0gICAgICAgICIvL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZ3VpeC5naXQvdHJlZS9nbnUv cGFja2FnZXMvcGF0Y2hlcy8iCi0gICAgICAgIChiYXNlbmFtZSBwYXRjaCkpKQotICAgICAgKCg/ IG9yaWdpbj8gcGF0Y2gpCi0gICAgICAgKHVyaS0+c3RyaW5nCi0gICAgICAgIChmaXJzdCAobWF5 YmUtZXhwYW5kLW1pcnJvcnMgKHN0cmluZy0+dXJpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXRjaCAob3JpZ2luLXVyaSBwYXRjaCkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKD8gc3RyaW5nPyB1cmkpIHVyaSkKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGhlYWQgLiB0YWlsKSBoZWFkKSkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJW1pcnJvcnMpKSkpCi0gICAgICAoXwot ICAgICAgIDs7IEl0IG1pZ2h0IGJlIGEgPGZpbGUtYXBwZW5kPiBvciBzb21lIG90aGVyIGZpbGUt bGlrZSBvYmplY3QuCi0gICAgICAgI2YpKSkKLQotICAoZGVmaW5lIHBhdGNoLW5hbWUKLSAgICAo bWF0Y2gtbGFtYmRhCi0gICAgICAoKD8gc3RyaW5nPyBwYXRjaCkKLSAgICAgICAoYmFzZW5hbWUg cGF0Y2gpKQotICAgICAgKCg/IG9yaWdpbj8gcGF0Y2gpCi0gICAgICAgKG1hdGNoIChvcmlnaW4t ZmlsZS1uYW1lIHBhdGNoKQotICAgICAgICAgKCNmCi0gICAgICAgICAgKG1hdGNoIChvcmlnaW4t dXJpIHBhdGNoKQotICAgICAgICAgICAgKCg/IHN0cmluZz8gdXJpKSAoYmFzZW5hbWUgdXJpKSkK LSAgICAgICAgICAgICgoaGVhZCAuIHRhaWwpIChiYXNlbmFtZSBoZWFkKSkpKQotICAgICAgICAg KGZpbGUKLSAgICAgICAgICBmaWxlKSkpKSkKLQotICAoZGVmaW5lIChzbmlwcGV0LWxpbmspCi0g ICAgKGxldCogKChsb2MgIChvciAocGFja2FnZS1maWVsZC1sb2NhdGlvbiBwYWNrYWdlICdzb3Vy Y2UpCi0gICAgICAgICAgICAgICAgICAgICAocGFja2FnZS1sb2NhdGlvbiBwYWNrYWdlKSkpCi0g ICAgICAgICAgIChsaW5rIChsb2NhdGlvbi0+aWxpbmsgbG9jKSkpCi0gICAgICAoaWxpbmsgInNu aXBwZXQiIChpbGluay11cmwgbGluaykpKSkKLQotICAoZGVmaW5lIHBhdGNoZXMKLSAgICAoZmls dGVyLW1hcCAobGFtYmRhIChwYXRjaCkKLSAgICAgICAgICAgICAgICAgIChsZXQgKCh1cmwgKHBh dGNoLXVybCBwYXRjaCkpKQotICAgICAgICAgICAgICAgICAgICAoYW5kIHVybAotICAgICAgICAg ICAgICAgICAgICAgICAgIChpbGluayBgKHNwYW4gKEAgKGNsYXNzICJtb25vIikpICwocGF0Y2gt bmFtZSBwYXRjaCkpCi0JCSAgICAgICAgICAgICAgICAocGF0Y2gtdXJsIHBhdGNoKSkpKSkKLSAg ICAgICAgICAgICAgICAobWF0Y2ggKHBhY2thZ2Utc291cmNlIHBhY2thZ2UpCi0gICAgICAgICAg ICAgICAgICAoI2YgJygpKQotICAgICAgICAgICAgICAgICAgKCg/IG9yaWdpbj8gbykgKG9yaWdp bi1wYXRjaGVzIG8pKSkpKQotCi0gIChkZWZpbmUgc25pcHBldAotICAgIChtYXRjaCAocGFja2Fn ZS1zb3VyY2UgcGFja2FnZSkKLSAgICAgICgjZgotICAgICAgICNmKQotICAgICAgKCg/IG9yaWdp bj8gbykKLSAgICAgICAoYW5kIChvcmlnaW4tc25pcHBldCBvKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAoc25pcHBldC1saW5rKSkpKSkKLQotICAoaWYgc25pcHBldAotICAgICAgKGNvbnMg c25pcHBldCBwYXRjaGVzKQotICAgICAgcGF0Y2hlcykpCi0KLQotKGRlZmluZSAocGFja2FnZS11 cmwtcGF0aCBwYWNrYWdlKQotICAiUmV0dXJuIGEgVVJMIHBhdGggZm9yIHRoZSBQQUNLQUdFIGlu IHRoZSBmb3JtIHBhY2thZ2VzL05BTUUtVkVSU0lPTi8uCi0KLSAgIFBBQ0tBR0UgKDxwYWNrYWdl PikKLSAgICAgQSBwYWNrYWdlIG9iamVjdCBhcyBkZWZpbmVkIGluIHRoZSBHTlUgR3VpeCBBUEkg cmVmZXJlbmNlLiIKLSAgKHVybC1wYXRoLWpvaW4gInBhY2thZ2VzIgotCQkgKHN0cmluZy1hcHBl bmQgKHBhY2thZ2UtbmFtZSBwYWNrYWdlKQotCQkJCSItIgotCQkJCShwYWNrYWdlLXZlcnNpb24g cGFja2FnZSkpKSkKLQotCi0oZGVmaW5lIChwYWNrYWdlcy9ncm91cC1ieS1sZXR0ZXIgcGFja2Fn ZXMpCi0gICJSZXR1cm4gYSBsaXN0IG9mIGFscGhhYmV0aWNhbGx5IGdyb3VwZWQgcGFja2FnZXMu Ci0KLSAgUEFDS0FHRVMgKGxpc3QpCi0gICAgQSBsaXN0IG9mIHBhY2thZ2Ugb2JqZWN0cyBhcyBk ZWZpbmVkIGluIHRoZSBHTlUgR3VpeCBBUEkgcmVmZXJlbmNlLgotCi0gIFJFVFVSTiAobGlzdCkK LSAgICBBIGxpc3Qgb2YgbGlzdHMgb2YgcGFja2FnZXMgd2hlcmUgZWFjaCBsaXN0IGNvcnJlc3Bv bmRzIHRvIHRoZQotICAgIHBhY2thZ2VzIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggYSBzcGVjaWZp YyBsZXR0ZXIuIgotICAoZGVmaW5lIChzdGFydHMtd2l0aC1kaWdpdD8gcGFja2FnZSkKLSAgICAo Y2hhci1zZXQtY29udGFpbnM/IGNoYXItc2V0OmRpZ2l0Ci0gICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLXJlZiAocGFja2FnZS1uYW1lIHBhY2thZ2UpIDApKSkKLQotICAoZGVmaW5lIChz dGFydHMtd2l0aC1sZXR0ZXI/IGxldHRlcikKLSAgICAobGV0ICgobGV0dGVyIChzdHJpbmctZG93 bmNhc2UgbGV0dGVyKSkpCi0gICAgICAobGFtYmRhIChwYWNrYWdlKQotICAgICAgICAoc3RyaW5n LXByZWZpeD8gbGV0dGVyIChwYWNrYWdlLW5hbWUgcGFja2FnZSkpKSkpCi0KLSAgKG1hcCAobGFt YmRhIChsZXR0ZXIpCi0gICAgICAgICAobWF0Y2ggbGV0dGVyCi0gICAgICAgICAgICgiMC05Igot ICAgICAgICAgICAgKGNvbnMgbGV0dGVyIChmaWx0ZXIgc3RhcnRzLXdpdGgtZGlnaXQ/IHBhY2th Z2VzKSkpCi0gICAgICAgICAgIChfCi0gICAgICAgICAgICAoY29ucyBsZXR0ZXIKLSAgICAgICAg ICAgICAgICAgIChmaWx0ZXIgKHN0YXJ0cy13aXRoLWxldHRlcj8gbGV0dGVyKSBwYWNrYWdlcykp KSkpCi0gICAgICAgYWxwaGFiZXQpKQpkaWZmIC0tZ2l0IGEvd2Vic2l0ZS9oYXVudC5zY20gYi93 ZWJzaXRlL2hhdW50LnNjbQppbmRleCAwMWUyYWY3Li40NTViZGM4IDEwMDY0NAotLS0gYS93ZWJz aXRlL2hhdW50LnNjbQorKysgYi93ZWJzaXRlL2hhdW50LnNjbQpAQCAtNyw3ICs3LDYgQEAKIAkg ICAgICgoYXBwcyBkb3dubG9hZCBidWlsZGVyKSAjOnByZWZpeCBkb3dubG9hZDopCiAgICAgICAg ICAgICAgKGFwcHMgaTE4bikKICAgICAgICAgICAgICAoKGFwcHMgbWVkaWEgYnVpbGRlcikgIzpw cmVmaXggbWVkaWE6KQotCSAgICAgKChhcHBzIHBhY2thZ2VzIGJ1aWxkZXIpICM6cHJlZml4IHBh Y2thZ2VzOikKIAkgICAgIChoYXVudCBhc3NldCkKICAgICAgICAgICAgICAoaGF1bnQgYnVpbGRl ciBhc3NldHMpCiAgICAgICAgICAgICAgKGhhdW50IHJlYWRlcikKQEAgLTI1LDUgKzI0LDQgQEAK ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2c6YnVpbGRlcgogICAgICAgICAgICAgICAgICAg ICAgICAgZG93bmxvYWQ6YnVpbGRlcgogICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWE6YnVp bGRlcgotICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXM6YnVpbGRlcgogICAgICAgICAg ICAgICAgICAgICAgICAgKHN0YXRpYy1kaXJlY3RvcnkgInN0YXRpYyIpKSkpCmRpZmYgLS1naXQg YS93ZWJzaXRlL3Rlc3RzL2FsbC5zY20gYi93ZWJzaXRlL3Rlc3RzL2FsbC5zY20KaW5kZXggYTk4 NDAwMi4uYWU0ZmIxZCAxMDA2NDQKLS0tIGEvd2Vic2l0ZS90ZXN0cy9hbGwuc2NtCisrKyBiL3dl YnNpdGUvdGVzdHMvYWxsLnNjbQpAQCAtMTAsNSArMTAsNCBAQAogCSAgICAgKHRlc3RzIGFwcHMg YXV4IHN5c3RlbSkKIAkgICAgICh0ZXN0cyBhcHBzIGF1eCB3ZWIpCiAJICAgICAodGVzdHMgYXBw cyBiYXNlIHR5cGVzKQotCSAgICAgKHRlc3RzIGFwcHMgYmxvZyB1dGlscykKLQkgICAgICh0ZXN0 cyBhcHBzIHBhY2thZ2VzIHV0aWxzKSkKKwkgICAgICh0ZXN0cyBhcHBzIGJsb2cgdXRpbHMpKQpk aWZmIC0tZ2l0IGEvd2Vic2l0ZS90ZXN0cy9hcHBzL3BhY2thZ2VzL3V0aWxzLnNjbSBiL3dlYnNp dGUvdGVzdHMvYXBwcy9wYWNrYWdlcy91dGlscy5zY20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDRlZTM4YjIuLjAwMDAwMDAKLS0tIGEvd2Vic2l0ZS90ZXN0cy9hcHBzL3BhY2thZ2Vz L3V0aWxzLnNjbQorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi07OzsgR05VIEd1aXgg d2ViIHNpdGUKLTs7OyBJbml0aWFsbHkgd3JpdHRlbiBieSBzaXJnYXppbCB3aG8gd2FpdmVzIGFs bAotOzs7IGNvcHlyaWdodCBpbnRlcmVzdCBvbiB0aGlzIGZpbGUuCi0KLShkZWZpbmUtbW9kdWxl ICh0ZXN0cyBhcHBzIHBhY2thZ2VzIHV0aWxzKQotICAjOnVzZS1tb2R1bGUgKGFwcHMgcGFja2Fn ZXMgdHlwZXMpCi0gICM6dXNlLW1vZHVsZSAoYXBwcyBwYWNrYWdlcyB1dGlscykKLSAgIzp1c2Ut bW9kdWxlIChndWl4IHBhY2thZ2VzKQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS02NCkpCi0K LQotOzs7Ci07OzsgQ29uc3RhbnRzLgotOzs7Ci0KLShkZWZpbmUgU1VJVEVfTkFNRSAiYXBwcy1w YWNrYWdlcy11dGlscyIpCi0KLQotCi07OzsKLTs7OyBUZXN0IHN1aXRlLgotOzs7Ci0KLSh0ZXN0 LWJlZ2luIFNVSVRFX05BTUUpCi0KLTs7OyBGSVhNRTogUmV3cml0ZSB3aXRoIHJlYWwgR3VpeCBw YWNrYWdlcyBpbiBtaW5kLgotOzs7Ci07OyAodGVzdC1ncm91cAotOzsgICJbcHJvY2VkdXJlXSBw YWNrYWdlLWlzc3Vlcz8iCi0KLTs7ICAodGVzdC1lcXVhbAotOzsgICAiUmV0dXJuIGZhbHNlIGlm IHRoZSBwYWNrYWdlIGhhcyBubyBsaW50IG5vciBidWlsZCBpc3N1ZXMuIgotOzsgICAocGFja2Fn ZS1pc3N1ZXM/IChwYWNrYWdlICM6bmFtZSAiYXJhdSIpKQotOzsgICAjZmFsc2UpCi0KLTs7ICAo dGVzdC1lcXVhbAotOzsgICAiUmV0dXJuIHRydWUgaWYgdGhlIHBhY2thZ2UgaGFzIGxpbnQgaXNz dWVzLiIKLTs7ICAgKHBhY2thZ2UtaXNzdWVzPyAocGFja2FnZSAjOm5hbWUgImFyYXUiCi07OyAJ CQkgICAgIzpsaW50LWlzc3VlcyAnKChsaW50LWlzc3VlICJBIiAiLi4uIikKLTs7IAkJCQkJICAg IChsaW50LWlzc3VlICJCIiAiLi4uIikKLTs7IAkJCQkJICAgIChsaW50LWlzc3VlICJDIiAiLi4u IikpKSkKLTs7ICAgI3RydWUpCi0KLTs7ICAodGVzdC1lcXVhbAotOzsgICAiUmV0dXJuIHRydWUg aWYgdGhlIHBhY2thZ2UgaGFzIGJ1aWxkIGlzc3Vlcy4iCi07OyAgIChwYWNrYWdlLWlzc3Vlcz8g KHBhY2thZ2UgIzpuYW1lICJraXdpIiAjOmJ1aWxkLWlzc3VlcyAnKCIiKSkpIDsgRklYTUU6IFBh c3MgYSByZWFsIGlzc3VlIG9iamVjdC4KLTs7ICAgI3RydWUpKQotCi0KLTs7OyBGSVhNRTogUmV3 cml0ZSB3aXRoIHJlYWwgR3VpeCBwYWNrYWdlcyBpbiBtaW5kLgotOzs7Ci07OyAodGVzdC1ncm91 cAotOzsgICJbcHJvY2VkdXJlXSBwYWNrYWdlLXVybC1wYXRoIgotCi07OyAgKHRlc3QtZXF1YWwK LTs7ICAgIlJldHVybiB0aGUgY29ycmVjdCBVUkwgcGF0aCB0byB0aGUgcGFja2FnZS4iCi07OyAg IChwYWNrYWdlLXVybC1wYXRoIChwYWNrYWdlICM6bmFtZSAiYXJhdSIgIzp2ZXJzaW9uICIxLjAu MCIpKQotOzsgICAicGFja2FnZXMvYXJhdS0xLjAuMCIpKQotCi0KLTs7OyBGSVhNRTogUmV3cml0 ZSB3aXRoIHJlYWwgR3VpeCBwYWNrYWdlcyBpbiBtaW5kLgotOzs7Ci07OyAodGVzdC1ncm91cAot OzsgICJbcHJvY2VkdXJlXSBwYWNrYWdlcy9ncm91cC1ieS1sZXR0ZXIiCi0KLTs7ICAodGVzdC1l cXVhbAotOzsgICAiUmV0dXJuIGFuIGVtcHR5IGxpc3QgaWYgdGhlcmUgYXJlIG5vIHBhY2thZ2Vz LiIKLTs7ICAgKHBhY2thZ2VzL2dyb3VwLWJ5LWxldHRlciAnKCkpCi07OyAgICcoKSkKLQotOzsg ICh0ZXN0LWVxdWFsCi07OyAgICJHcm91cCBwYWNrYWdlcyBieSBsZXR0ZXIuIgotOzsgICAocGFj a2FnZXMvZ3JvdXAtYnktbGV0dGVyIChsaXN0IChwYWNrYWdlICM6bmFtZSAiYWd1YSIpCi07OyAJ CQkJICAocGFja2FnZSAjOm5hbWUgImF6dWwiKQotOzsgCQkJCSAgKHBhY2thZ2UgIzpuYW1lICJm dWVnbyIpCi07OyAJCQkJICAocGFja2FnZSAjOm5hbWUgInRpZXJyYSIpKSkKLTs7ICAgKGxpc3QK LTs7ICAgIChjb25zICIwLTkiICcoKSkKLTs7ICAgIChjb25zICJBIiAobGlzdCAocGFja2FnZSAj Om5hbWUgImFndWEiKSAocGFja2FnZSAjOm5hbWUgImF6dWwiKSkpCi07OyAgICAoY29ucyAiQiIg JygpKQotOzsgICAgKGNvbnMgIkMiICcoKSkKLTs7ICAgIChjb25zICJEIiAnKCkpCi07OyAgICAo Y29ucyAiRSIgJygpKQotOzsgICAgKGNvbnMgIkYiIChsaXN0IChwYWNrYWdlICM6bmFtZSAiZnVl Z28iKSkpCi07OyAgICAoY29ucyAiRyIgJygpKQotOzsgICAgKGNvbnMgIkgiICcoKSkKLTs7ICAg IChjb25zICJJIiAnKCkpCi07OyAgICAoY29ucyAiSiIgJygpKQotOzsgICAgKGNvbnMgIksiICco KSkKLTs7ICAgIChjb25zICJMIiAnKCkpCi07OyAgICAoY29ucyAiTSIgJygpKQotOzsgICAgKGNv bnMgIk4iICcoKSkKLTs7ICAgIChjb25zICJPIiAnKCkpCi07OyAgICAoY29ucyAiUCIgJygpKQot OzsgICAgKGNvbnMgIlEiICcoKSkKLTs7ICAgIChjb25zICJSIiAnKCkpCi07OyAgICAoY29ucyAi UyIgJygpKQotOzsgICAgKGNvbnMgIlQiIChsaXN0IChwYWNrYWdlICM6bmFtZSAidGllcnJhIikp KQotOzsgICAgKGNvbnMgIlUiICcoKSkKLTs7ICAgIChjb25zICJWIiAnKCkpCi07OyAgICAoY29u cyAiVyIgJygpKQotOzsgICAgKGNvbnMgIlgiICcoKSkKLTs7ICAgIChjb25zICJZIiAnKCkpCi07 OyAgICAoY29ucyAiWiIgJygpKSkpKQotCi0KLSh0ZXN0LWVuZCBTVUlURV9OQU1FKQoKYmFzZS1j b21taXQ6IGM5YjZiYzE5OTNjZDU5NjQ4ZDM5M2I4NDBmMTE2ZDExOTAzYTMxODQKLS0gCjIuMzgu MAoK -----------------------52290da2f27cca8aaa545abda9f80d33 Content-Type: application/pgp-keys; filename="publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc"; name="publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc"; name="publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc" LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgp4c0JOQkY4WnBVZ0JDQURMamgy dW0ySmRsOUJRS2tnTVNnbkhKK3NIaDdLei92UDlzd3E3SFlMRW5GZzYKSEI0S2t1b1dJcU15RUpy TmM0azVSUEhieGs5cUEwemtBMXdBOHh2M2pBKzJVbGlRa2taUjArNHI5Syt4CmZZRGx4ZHd2Sk1V RVJaUk5kb3QvZnFCaGtTYmhpVElTU3pvRUs2ZjNreHdiN3NyME9jSkx2aU5wQ0tvawpZWjVGdzRR endDRjlXWGNrRWY5c0V4Y0ZjNkNOR0svSkJWVlpmVmhxVk1reGpRTjZicXVZbnprcThZU2gKOWdZ UzlYMXZsYmRSQXllS1JhcTR1akl1dGlTNnYwMmw0UkU2dUY1amlyOHgvVHg3NzRGbmpQQjZnQ3Vs Ck5TeDZCZmhVTndZeWJ5UFB4SVhYOUpPNHZrT3ZXNE9NZVdjcW1BK1VnQ3c5Vmk5dnJDN3lISlRG QUJFQgpBQUhOUFd4MWFYTXVabVZzYVhCbExteGhRSEJ5YjNSdmJtMWhhV3d1WTI5dElEeHNkV2x6 TG1abGJHbHcKWlM1c1lVQndjbTkwYjI1dFlXbHNMbU52YlQ3Q3dIWUVFQUVJQUNBRkFsOFpwVWdH Q3drSENBTUNCQlVJCkNnSUVGZ0lCQUFJWkFRSWJBd0llQVFBS0NSQTU0TWRqZWpuR3FWVWFCLzk3 UC9WSEtwK0FiRWJMemVkNgpQSWhIcjY0ZDh6Tk83bWJsbkZ3Tno0OWhrN0ptUllMNXZQMlYvbUMw M1dJSmZTaml2WUdTaUhuTFJlREUKbmxtVUNNZjNtKzFOOThlQWlxSE5FZzZlaWkzMmFxVlFiYXh2 L3orNTlSR2VLSDJBbHRhZHBzVEFnS1VzCjFrL2Z0ZEJXVlplYitCQXJHYWlsREU3OHVlYiszWE15 Z3ZDV2oyMWZleS81VXZiakhxUjlMNEpZVGlTbQp3WXo3SGZabytERTdZSXNjem1WZWg4TTFWekNs LzFpYWhrOVVFTGpBUC9qUCtydU1UOXFFV3VqMlFsbEEKTWVQR1J6UWJxaURoVlM4TEZkakJITm9L THh5aG5iREVGakhGLzR4TnE4amxRTGZHSlo1aEtldHRaK2JVClNXYUVYRjNoano5V1dVOGE1Sy8y TS9Ib3pzQk5CRjhacFVnQkNBREtVblJJOXl6NFJ2TnV2U09JRmxKdgprZm9IZVpyL0JMY1NHVmNT Qmt4NWxzS2RWek14OStVYWFlS2pXcElPK3hmRU5zejdiK0JWb0JMMFdydjkKNGhsd1dtRzVxMEFk RXlVMS9mUXNSUjdtNU8xZWE2VVQzZnVVZzFWc2pGWitSM2pTeWxBdHl6SVpNMExVCmJXNUY2NzNL NEF1U2NGcE44TkxHVGdScjBXUWwvQm5Id2gyWFExeHFoYzZHQk92d2l3VkJqYWY1MFNIRQpUaVVQ cGUzSmpReXlCWnArOEZLbStzblJxQ0dYbjBKRzhvMEZYeTlXY3h0dmZRRk1NSnA5Qk8yeXRneEgK elFJcFljSnBKWnVjY25Gb3FxSDlqKzFxWFhOU2EzL3FPM3p1OWxTdlhUeHg2a2RoMEZXVG5ZQ3g4 TWY4CkJZL1BXL2JCT095aExDb1RrSHFsQUJFQkFBSEN3RjhFR0FFSUFBa0ZBbDhacFVnQ0d3d0FD Z2tRT2VESApZM281eHFrZUtRZitKTWxjYlJsd2VoL0ZBMW53OHpGQ3hhRjU4UE5ERU84bEg5Mi94 dHpud0dkQXVselQKaFo0MGpHVEVpcHlnc25xSFY3V0hVZjQ0bmVYbjJBMWN2Q1orNzNLY3BhUU5o OU1wOHlXbkdLWllVR2tHCjZPZjFoRVU3OTJYWkV4a3lBODJQZ0xCTlkrVnpOWFhLQ0g3Tlh4WlFR V1Y1blhjYlVGQ1p5Slp1ZFNnUQp4azE5c1FmNHM5dkpYNlBDNjhxd2k3YUoxN25WZnJiY01heVJw bTJPR0pYZCt0OTFWL0xuTnBDUmd0bDMKak5Zc0NCRktEQzBZeGRBL05DZEVrMWdmdWpGemwwYkJz Nys1SmJkM3pSYUU1QWZkVlF0SWxtRVhEa1c2CjB1eUVpM050Y3E1b2RYQTFubFIrZTA0NEtGdmVa ekZ1Tk5lVGdzekFCcjVIaVU3MC9FbHlzdz09Cj16NmU3Ci0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZ IEJMT0NLLS0tLS0K -----------------------52290da2f27cca8aaa545abda9f80d33-- --------9bcd62c75693aad52ff3de9a0696f806e4e5a2f15210de476208e71277520b36 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: ProtonMail wsBzBAEBCAAnBQJje6ltCRA54MdjejnGqRYhBBLeFZh9HEWkNPdw7zngx2N6 OcapAAChggf+KAGFY+Loa/Ufa9OuFXL557DpYyE4Y6F0pIcNRFjtWFkFS56h OMywSS06n4kHnFB7H/RkXsrA4JcKTt630WOBgEY3Bi8QB8Sg+tlFiqRHsH9u VQLTkTr/MDqqbaSfvCW2hf+FNrbq0dDtA2A732StooJseg8pQmq7Tv76ocT6 M515TgKVvQuOfiiicbuaieN1Ar2jeQ01yLUyn2etchigAH+X8yOmSIIFnDLT trPGQ+GYA2JS5spSyyAbb3ZEstwbRI2AtlskXXiclnvuZIdNz+9YKg5J7gde TkvEKzIqdbogr+rkL5gIo+UnxUxYz0QBtJxmzJIaHz4heC2NfGuLDQ== =j9HD -----END PGP SIGNATURE----- --------9bcd62c75693aad52ff3de9a0696f806e4e5a2f15210de476208e71277520b36--