From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 837CFC4BA28 for ; Wed, 26 Feb 2020 20:23:00 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5645B24656 for ; Wed, 26 Feb 2020 20:23:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="V5rLbRd9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5645B24656 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j73CP-0003ix-R1; Wed, 26 Feb 2020 20:22:29 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j73CO-0003im-Hv for xen-devel@lists.xenproject.org; Wed, 26 Feb 2020 20:22:28 +0000 X-Inumbo-ID: b4a9af64-58d5-11ea-aba8-bc764e2007e4 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id b4a9af64-58d5-11ea-aba8-bc764e2007e4; Wed, 26 Feb 2020 20:22:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1582748547; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=X9izvnLzHz+THrGOiU5ApMRfurw3HicbGhki5Cgu8dk=; b=V5rLbRd9ilxK0QQZrUVuhWGxx9EExswcr6ysloSqAHogOqsA3xjg1dd9 8dfMFkYTRfB++wQU0lVJg2i6CUmyxRRsAu0xef84E6OWIdE75ItQieo1z q8QtXMCgThyDEHwOiLiwuY/V9C7TzM+ae1hTzNXkzd+Q4tfgv0ABry2r/ Y=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=andrew.cooper3@citrix.com; spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of andrew.cooper3@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="andrew.cooper3@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa6.hc3370-68.iphmx.com: domain of Andrew.Cooper3@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="Andrew.Cooper3@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: TruIjfm06i0tm0KddLOX3m2GnwWEN3BzYtZ3kA7CHWDLNgoKlrqvBm9aTkZcCZ0TPH0LCypBS5 PssFKplbcIC/hGMg1wv0otdGZkKVsrUHxi7aMrbeGo5xh/nMCVYwHzW/s6cwSLkswn7ekIvXmo ckMOL6xwG9KxcHraxsxpQSv6pKEqkLAM3sufNGtBN1WN1c9GaL/sMo99zjInajeXowx2lah1QK Z5XGIYCrHNsSFsRXmXuAkjL+syLJFPCD0k2JQ2UaMIN/w08qyJgIl4A8HMTsZP6Prlio4ZUsh7 ahQ= X-SBRS: 2.7 X-MesageID: 13496568 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.70,489,1574139600"; d="scan'208";a="13496568" From: Andrew Cooper To: Xen-devel Date: Wed, 26 Feb 2020 20:22:14 +0000 Message-ID: <20200226202221.6555-4-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20200226202221.6555-1-andrew.cooper3@citrix.com> References: <20200226202221.6555-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 03/10] x86/gen-cpuid: Rework internal logic to ease future changes X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Andrew Cooper , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" QmV0dGVyIHNwbGl0IHRoZSBsb2dpYyBiZXR3ZWVuIHBhcnNlL2NhbGN1bGF0ZS93cml0ZS4gIENv bGxlY3QgdGhlIGZlYXR1cmUKY29tbWVudCBieSB0aGVpciBjb21tZW50IGNoYXJhY3RlciwgYW5k IHBlcmZvcm0gdGhlIGFjY3VtdWxhdGlvbiBvcGVyYXRpb25zIGluCmNydW5jaF9udW1iZXJzKCku CgpBdm9pZCByZW5kZXJpbmcgdGhlIGZlYXR1cmVzZXRzIHRvIEMgdWludDMyX3QncyBpbiBjcnVu Y2hfbnVtYmVycygpLCBhbmQKaW5zdGVhZCBkbyB0aGlzIGluIHdyaXRlX3Jlc3VsdHMoKS4gIFVw ZGF0ZSBmb3JtYXRfdWludDMycygpIHRvIGNhbGwKZmVhdHVyZXNldF90b191aW50MzJzKCkgaW50 ZXJuYWxseS4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlIC0gdGhlIGdlbmVyYXRlZCBjcHVpZC1hdXRv Z2VuLmggaXMgaWRlbnRpY2FsLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3 LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5j b20+CkNDOiBXZWkgTGl1IDx3bEB4ZW4ub3JnPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIu cGF1QGNpdHJpeC5jb20+Ci0tLQogeGVuL3Rvb2xzL2dlbi1jcHVpZC5weSB8IDc3ICsrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMjkgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL3Rv b2xzL2dlbi1jcHVpZC5weSBiL3hlbi90b29scy9nZW4tY3B1aWQucHkKaW5kZXggNzFlYTc4ZjRl Yi4uOTliMmU3YWVlZSAxMDA3NTUKLS0tIGEveGVuL3Rvb2xzL2dlbi1jcHVpZC5weQorKysgYi94 ZW4vdG9vbHMvZ2VuLWNwdWlkLnB5CkBAIC0yMCwyMCArMjAsMjEgQEAgZGVmIF9faW5pdF9fKHNl bGYsIGlucHV0LCBvdXRwdXQpOgogICAgICAgICAjIFN0YXRlIHBhcnNlZCBmcm9tIGlucHV0CiAg ICAgICAgIHNlbGYubmFtZXMgPSB7fSAgIyBWYWx1ZSA9PiBOYW1lIG1hcHBpbmcKICAgICAgICAg c2VsZi52YWx1ZXMgPSB7fSAjIE5hbWUgPT4gVmFsdWUgbWFwcGluZwotICAgICAgICBzZWxmLnJh d19zcGVjaWFsID0gc2V0KCkKLSAgICAgICAgc2VsZi5yYXdfcHYgPSBzZXQoKQotICAgICAgICBz ZWxmLnJhd19odm1fc2hhZG93ID0gc2V0KCkKLSAgICAgICAgc2VsZi5yYXdfaHZtX2hhcCA9IHNl dCgpCisgICAgICAgIHNlbGYucmF3ID0geworICAgICAgICAgICAgJyEnOiBzZXQoKSwKKyAgICAg ICAgICAgICdBJzogc2V0KCksICdTJzogc2V0KCksICdIJzogc2V0KCksCisgICAgICAgIH0KIAog ICAgICAgICAjIFN0YXRlIGNhbGN1bGF0ZWQKICAgICAgICAgc2VsZi5ucl9lbnRyaWVzID0gMCAj IE51bWJlciBvZiB3b3JkcyBpbiBhIGZlYXR1cmVzZXQKICAgICAgICAgc2VsZi5jb21tb25fMWQg PSAwICMgQ29tbW9uIGZlYXR1cmVzIGJldHdlZW4gMWQgYW5kIGUxZAotICAgICAgICBzZWxmLmtu b3duID0gW10gIyBBbGwga25vd24gZmVhdHVyZXMKLSAgICAgICAgc2VsZi5zcGVjaWFsID0gW10g IyBGZWF0dXJlcyB3aXRoIHNwZWNpYWwgc2VtYW50aWNzCi0gICAgICAgIHNlbGYucHYgPSBbXQot ICAgICAgICBzZWxmLmh2bV9zaGFkb3cgPSBbXQotICAgICAgICBzZWxmLmh2bV9oYXAgPSBbXQor ICAgICAgICBzZWxmLnB2ID0gc2V0KCkgIyBQViBmZWF0dXJlcworICAgICAgICBzZWxmLmh2bV9z aGFkb3cgPSBzZXQoKSAjIEhWTSBzaGFkb3cgZmVhdHVyZXMKKyAgICAgICAgc2VsZi5odm1faGFw ID0gc2V0KCkgIyBIVk0gSEFQIGZlYXR1cmVzCiAgICAgICAgIHNlbGYuYml0ZmllbGRzID0gW10g IyBUZXh0IHRvIGRlY2xhcmUgbmFtZWQgYml0ZmllbGRzIGluIEMKKyAgICAgICAgc2VsZi5kZWVw X2RlcHMgPSB7fSAjIHsgZmVhdHVyZSBudW0gPT4gZGVwZW5kYW50IGZlYXR1cmVzIH0KKyAgICAg ICAgc2VsZi5ucl9kZWVwX2RlcHMgPSAwICMgTnVtYmVyIG9mIGVudHJpZXMgaW4gZGVlcF9kZXBz CisgICAgICAgIHNlbGYuZGVlcF9mZWF0dXJlcyA9IHNldCgpICMgZmVhdHVyZXNldCBvZiBrZXlz IGluIGRlZXBfZGVwcwogCiBkZWYgcGFyc2VfZGVmaW5pdGlvbnMoc3RhdGUpOgogICAgICIiIgpA QCAtODEsMjAgKzgyLDkgQEAgZGVmIHBhcnNlX2RlZmluaXRpb25zKHN0YXRlKToKICAgICAgICAg c3RhdGUudmFsdWVzW25hbWUubG93ZXIoKS5yZXBsYWNlKCJfIiwgIi0iKV0gPSB2YWwKIAogICAg ICAgICBmb3IgYSBpbiBhdHRyOgotCi0gICAgICAgICAgICBpZiBhID09ICIhIjoKLSAgICAgICAg ICAgICAgICBzdGF0ZS5yYXdfc3BlY2lhbC5hZGQodmFsKQotICAgICAgICAgICAgZWxpZiBhIGlu ICJBU0giOgotICAgICAgICAgICAgICAgIGlmIGEgPT0gIkEiOgotICAgICAgICAgICAgICAgICAg ICBzdGF0ZS5yYXdfcHYuYWRkKHZhbCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUucmF3X2h2 bV9zaGFkb3cuYWRkKHZhbCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUucmF3X2h2bV9oYXAu YWRkKHZhbCkKLSAgICAgICAgICAgICAgICBlbGlmIGF0dHIgPT0gIlMiOgotICAgICAgICAgICAg ICAgICAgICBzdGF0ZS5yYXdfaHZtX3NoYWRvdy5hZGQodmFsKQotICAgICAgICAgICAgICAgICAg ICBzdGF0ZS5yYXdfaHZtX2hhcC5hZGQodmFsKQotICAgICAgICAgICAgICAgIGVsaWYgYXR0ciA9 PSAiSCI6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnJhd19odm1faGFwLmFkZCh2YWwpCi0g ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0YXRl LnJhd1thXS5hZGQodmFsKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAg ICAgICAgIHJhaXNlIEZhaWwoIlVucmVjb2duaXNlZCBhdHRyaWJ1dGUgJyVzJyBmb3IgJXMiICUg KGEsIG5hbWUpKQogCiAgICAgaWYgbGVuKHN0YXRlLm5hbWVzKSA9PSAwOgpAQCAtMTE3LDEwICsx MDcsMTEgQEAgZGVmIGZlYXR1cmVzZXRfdG9fdWludDMycyhmcywgbnIpOgogICAgIGlmIGxlbih3 b3JkcykgPCBucjoKICAgICAgICAgd29yZHMuZXh0ZW5kKFswXSAqIChuciAtIGxlbih3b3Jkcykp KQogCi0gICAgcmV0dXJuIFsgIjB4JTA4eFUiICUgeCBmb3IgeCBpbiB3b3JkcyBdCisgICAgcmV0 dXJuICgiMHglMDh4VSIgJSB4IGZvciB4IGluIHdvcmRzKQogCi1kZWYgZm9ybWF0X3VpbnQzMnMo d29yZHMsIGluZGVudCk6CitkZWYgZm9ybWF0X3VpbnQzMnMoc3RhdGUsIGZlYXR1cmVzZXQsIGlu ZGVudCk6CiAgICAgIiIiIEZvcm1hdCBhIGxpc3Qgb2YgdWludDMyX3QncyBzdWl0YWJsZSBmb3Ig YSBtYWNybyBkZWZpbml0aW9uICIiIgorICAgIHdvcmRzID0gZmVhdHVyZXNldF90b191aW50MzJz KGZlYXR1cmVzZXQsIHN0YXRlLm5yX2VudHJpZXMpCiAgICAgc3BhY2VzID0gIiAiICogaW5kZW50 CiAgICAgcmV0dXJuIHNwYWNlcyArICgiLCBcXFxuIiArIHNwYWNlcykuam9pbih3b3JkcykgKyAi LCBcXCIKIApAQCAtMTMzLDEzICsxMjQsMTEgQEAgZGVmIGNydW5jaF9udW1iZXJzKHN0YXRlKToK ICAgICAjIEZlYXR1cmVzIGNvbW1vbiBiZXR3ZWVuIDFkIGFuZCBlMWQuCiAgICAgY29tbW9uXzFk ID0gKEZQVSwgVk1FLCBERSwgUFNFLCBUU0MsIE1TUiwgUEFFLCBNQ0UsIENYOCwgQVBJQywKICAg ICAgICAgICAgICAgICAgTVRSUiwgUEdFLCBNQ0EsIENNT1YsIFBBVCwgUFNFMzYsIE1NWCwgRlhT UikKKyAgICBzdGF0ZS5jb21tb25fMWQgPSBjb21tb25fMWQKIAotICAgIHN0YXRlLmtub3duID0g ZmVhdHVyZXNldF90b191aW50MzJzKHN0YXRlLm5hbWVzLmtleXMoKSwgbnJfZW50cmllcykKLSAg ICBzdGF0ZS5jb21tb25fMWQgPSBmZWF0dXJlc2V0X3RvX3VpbnQzMnMoY29tbW9uXzFkLCAxKVsw XQotICAgIHN0YXRlLnNwZWNpYWwgPSBmZWF0dXJlc2V0X3RvX3VpbnQzMnMoc3RhdGUucmF3X3Nw ZWNpYWwsIG5yX2VudHJpZXMpCi0gICAgc3RhdGUucHYgPSBmZWF0dXJlc2V0X3RvX3VpbnQzMnMo c3RhdGUucmF3X3B2LCBucl9lbnRyaWVzKQotICAgIHN0YXRlLmh2bV9zaGFkb3cgPSBmZWF0dXJl c2V0X3RvX3VpbnQzMnMoc3RhdGUucmF3X2h2bV9zaGFkb3csIG5yX2VudHJpZXMpCi0gICAgc3Rh dGUuaHZtX2hhcCA9IGZlYXR1cmVzZXRfdG9fdWludDMycyhzdGF0ZS5yYXdfaHZtX2hhcCwgbnJf ZW50cmllcykKKyAgICBzdGF0ZS5wdiA9IHN0YXRlLnJhd1snQSddCisgICAgc3RhdGUuaHZtX3No YWRvdyA9IHN0YXRlLnB2IHwgc3RhdGUucmF3WydTJ10KKyAgICBzdGF0ZS5odm1faGFwID0gc3Rh dGUuaHZtX3NoYWRvdyB8IHN0YXRlLnJhd1snSCddCiAKICAgICAjCiAgICAgIyBGZWF0dXJlIGRl cGVuZGVuY3kgaW5mb3JtYXRpb24uCkBAIC0zMTcsMTcgKzMwNiw5IEBAIGRlZiBjcnVuY2hfbnVt YmVycyhzdGF0ZSk6CiAKICAgICAgICAgc3RhdGUuZGVlcF9kZXBzW2ZlYXRdID0gc2VlblsxOl0K IAotICAgIHN0YXRlLmRlZXBfZmVhdHVyZXMgPSBmZWF0dXJlc2V0X3RvX3VpbnQzMnMoZGVwcy5r ZXlzKCksIG5yX2VudHJpZXMpCisgICAgc3RhdGUuZGVlcF9mZWF0dXJlcyA9IGRlcHMua2V5cygp CiAgICAgc3RhdGUubnJfZGVlcF9kZXBzID0gbGVuKHN0YXRlLmRlZXBfZGVwcy5rZXlzKCkpCiAK LSAgICB0cnk6Ci0gICAgICAgIF90bXAgPSBzdGF0ZS5kZWVwX2RlcHMuaXRlcml0ZW1zKCkKLSAg ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIF90bXAgPSBzdGF0ZS5kZWVwX2RlcHMu aXRlbXMoKQotCi0gICAgZm9yIGssIHYgaW4gX3RtcDoKLSAgICAgICAgc3RhdGUuZGVlcF9kZXBz W2tdID0gZmVhdHVyZXNldF90b191aW50MzJzKHYsIG5yX2VudHJpZXMpCi0KICAgICAjIENhbGN1 bGF0ZSB0aGUgYml0ZmllbGQgbmFtZSBkZWNsYXJhdGlvbnMKICAgICBmb3Igd29yZCBpbiByYW5n ZShucl9lbnRyaWVzKToKIApAQCAtMzgyLDIxICszNjMsMjEgQEAgZGVmIHdyaXRlX3Jlc3VsdHMo c3RhdGUpOgogCiAjZGVmaW5lIElOSVRfREVFUF9ERVBTIHsgXFwKICIiIiAlIChzdGF0ZS5ucl9l bnRyaWVzLAotICAgICAgIHN0YXRlLmNvbW1vbl8xZCwKLSAgICAgICBmb3JtYXRfdWludDMycyhz dGF0ZS5rbm93biwgNCksCi0gICAgICAgZm9ybWF0X3VpbnQzMnMoc3RhdGUuc3BlY2lhbCwgNCks Ci0gICAgICAgZm9ybWF0X3VpbnQzMnMoc3RhdGUucHYsIDQpLAotICAgICAgIGZvcm1hdF91aW50 MzJzKHN0YXRlLmh2bV9zaGFkb3csIDQpLAotICAgICAgIGZvcm1hdF91aW50MzJzKHN0YXRlLmh2 bV9oYXAsIDQpLAorICAgICAgIG5leHQoZmVhdHVyZXNldF90b191aW50MzJzKHN0YXRlLmNvbW1v bl8xZCwgMSkpLAorICAgICAgIGZvcm1hdF91aW50MzJzKHN0YXRlLCBzdGF0ZS5uYW1lcy5rZXlz KCksIDQpLAorICAgICAgIGZvcm1hdF91aW50MzJzKHN0YXRlLCBzdGF0ZS5yYXdbJyEnXSwgNCks CisgICAgICAgZm9ybWF0X3VpbnQzMnMoc3RhdGUsIHN0YXRlLnB2LCA0KSwKKyAgICAgICBmb3Jt YXRfdWludDMycyhzdGF0ZSwgc3RhdGUuaHZtX3NoYWRvdywgNCksCisgICAgICAgZm9ybWF0X3Vp bnQzMnMoc3RhdGUsIHN0YXRlLmh2bV9oYXAsIDQpLAogICAgICAgIHN0YXRlLm5yX2RlZXBfZGVw cywKLSAgICAgICBmb3JtYXRfdWludDMycyhzdGF0ZS5kZWVwX2ZlYXR1cmVzLCA0KSwKKyAgICAg ICBmb3JtYXRfdWludDMycyhzdGF0ZSwgc3RhdGUuZGVlcF9mZWF0dXJlcywgNCksCiAgICAgICAg KSkKIAogICAgIGZvciBkZXAgaW4gc29ydGVkKHN0YXRlLmRlZXBfZGVwcy5rZXlzKCkpOgogICAg ICAgICBzdGF0ZS5vdXRwdXQud3JpdGUoCiAgICAgICAgICAgICAiICAgIHsgJSN4VSwgLyogJXMg Ki8geyBcXFxuJXNcbiAgICB9LCB9LCBcXFxuIgogICAgICAgICAgICAgJSAoZGVwLCBzdGF0ZS5u YW1lc1tkZXBdLAotICAgICAgICAgICAgICAgZm9ybWF0X3VpbnQzMnMoc3RhdGUuZGVlcF9kZXBz W2RlcF0sIDgpCisgICAgICAgICAgICAgICBmb3JtYXRfdWludDMycyhzdGF0ZSwgc3RhdGUuZGVl cF9kZXBzW2RlcF0sIDgpCiAgICAgICAgICAgICkpCiAKICAgICBzdGF0ZS5vdXRwdXQud3JpdGUo Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs