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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 557CDC433E0 for ; Mon, 8 Feb 2021 06:01:09 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 6B26164E6E for ; Mon, 8 Feb 2021 06:01:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6B26164E6E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:47952 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l8zbf-0007nv-Cd for qemu-devel@archiver.kernel.org; Mon, 08 Feb 2021 01:01:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56184) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l8zOZ-0008KK-9k for qemu-devel@nongnu.org; Mon, 08 Feb 2021 00:47:35 -0500 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:35765) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l8zOS-0006SB-RH for qemu-devel@nongnu.org; Mon, 08 Feb 2021 00:47:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1612763248; x=1644299248; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DpJ+vA7oti3UEdJkKcPR9eV0DCQxsug3eu/FAlNgVRk=; b=rXX7OcghONF7mu/EwMWw5cSwWfzcPOLHgL2LLO8/t7pC7sXIVYdjyett 3dJpWL44FIL/s9CDTWAWIhtxV9J8OIa83RcBvzkrgn6dJNUp7+gMwo5MC LoqRW7ug5RMxEYA8C0ejDvzB6ETRTogNjypZBCWWil3qy3KPiEPyS3Urn w=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-02.qualcomm.com with ESMTP; 07 Feb 2021 21:46:32 -0800 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg05-sd.qualcomm.com with ESMTP; 07 Feb 2021 21:46:31 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 5A72F29BD; Sun, 7 Feb 2021 23:46:31 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v8 32/35] Hexagon (tests/tcg/hexagon) TCG tests - atomics/load/store/misc Date: Sun, 7 Feb 2021 23:46:22 -0600 Message-Id: <1612763186-18161-33-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1612763186-18161-1-git-send-email-tsimpson@quicinc.com> References: <1612763186-18161-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.39; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-02.qualcomm.com X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.248, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ale@rev.ng, bcain@quicinc.com, philmd@redhat.com, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, alex.bennee@linaro.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" U2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0K IHRlc3RzL3RjZy9oZXhhZ29uL2F0b21pY3MuYyAgICAgICB8IDEzOSArKysrKysrKysrKysrKwog dGVzdHMvdGNnL2hleGFnb24vZHVhbF9zdG9yZXMuYyAgIHwgIDYwICsrKysrKwogdGVzdHMvdGNn L2hleGFnb24vbWVtX25vc2h1Zi5jICAgIHwgMzI4ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiB0ZXN0cy90Y2cvaGV4YWdvbi9taXNjLmMgICAgICAgICAgfCAzODAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL3RjZy9oZXhhZ29uL3ByZWdfYWxp YXMuYyAgICB8IDE2OSArKysrKysrKysrKysrKysrKwogdGVzdHMvdGNnL2hleGFnb24vTWFrZWZp bGUudGFyZ2V0IHwgIDE1ICsrCiB0ZXN0cy90Y2cvaGV4YWdvbi9maXJzdC5TICAgICAgICAgfCAg NTYgKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDExNDcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3RzL3RjZy9oZXhhZ29uL2F0b21pY3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHRlc3RzL3RjZy9oZXhhZ29uL2R1YWxfc3RvcmVzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 cy90Y2cvaGV4YWdvbi9tZW1fbm9zaHVmLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Y2cv aGV4YWdvbi9taXNjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Y2cvaGV4YWdvbi9wcmVn X2FsaWFzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Y2cvaGV4YWdvbi9maXJzdC5TCgpk aWZmIC0tZ2l0IGEvdGVzdHMvdGNnL2hleGFnb24vYXRvbWljcy5jIGIvdGVzdHMvdGNnL2hleGFn b24vYXRvbWljcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMWNlZWUK LS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy90Y2cvaGV4YWdvbi9hdG9taWNzLmMKQEAgLTAsMCAr MSwxMzkgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMSBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+ CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKy8qIFVzaW5n IHZvbGF0aWxlIGJlY2F1c2Ugd2UgYXJlIHRlc3RpbmcgYXRvbWljcyAqLworc3RhdGljIGlubGlu ZSBpbnQgYXRvbWljX2luYzMyKHZvbGF0aWxlIGludCAqeCkKK3sKKyAgICBpbnQgb2xkLCBkdW1t eTsKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyAgICAgICAgIjE6ICUwID0gbWVtd19sb2Nr ZWQoJTIpXG5cdCIKKyAgICAgICAgIiAgICUxID0gYWRkKCUwLCAjMSlcblx0IgorICAgICAgICAi ICAgbWVtd19sb2NrZWQoJTIsIHAwKSA9ICUxXG5cdCIKKyAgICAgICAgIiAgIGlmICghcDApIGp1 bXAgMWJcblx0IgorICAgICAgICA6ICI9JnIiKG9sZCksICI9JnIiKGR1bW15KQorICAgICAgICA6 ICJyIih4KQorICAgICAgICA6ICJwMCIsICJtZW1vcnkiKTsKKyAgICByZXR1cm4gb2xkOworfQor CisvKiBVc2luZyB2b2xhdGlsZSBiZWNhdXNlIHdlIGFyZSB0ZXN0aW5nIGF0b21pY3MgKi8KK3N0 YXRpYyBpbmxpbmUgbG9uZyBsb25nIGF0b21pY19pbmM2NCh2b2xhdGlsZSBsb25nIGxvbmcgKngp Cit7CisgICAgbG9uZyBsb25nIG9sZCwgZHVtbXk7CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o CisgICAgICAgICIxOiAlMCA9IG1lbWRfbG9ja2VkKCUyKVxuXHQiCisgICAgICAgICIgICAlMSA9 ICMxXG5cdCIKKyAgICAgICAgIiAgICUxID0gYWRkKCUwLCAlMSlcblx0IgorICAgICAgICAiICAg bWVtZF9sb2NrZWQoJTIsIHAwKSA9ICUxXG5cdCIKKyAgICAgICAgIiAgIGlmICghcDApIGp1bXAg MWJcblx0IgorICAgICAgICA6ICI9JnIiKG9sZCksICI9JnIiKGR1bW15KQorICAgICAgICA6ICJy Iih4KQorICAgICAgICA6ICJwMCIsICJtZW1vcnkiKTsKKyAgICByZXR1cm4gb2xkOworfQorCisv KiBVc2luZyB2b2xhdGlsZSBiZWNhdXNlIHdlIGFyZSB0ZXN0aW5nIGF0b21pY3MgKi8KK3N0YXRp YyBpbmxpbmUgaW50IGF0b21pY19kZWMzMih2b2xhdGlsZSBpbnQgKngpCit7CisgICAgaW50IG9s ZCwgZHVtbXk7CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCisgICAgICAgICIxOiAlMCA9IG1l bXdfbG9ja2VkKCUyKVxuXHQiCisgICAgICAgICIgICAlMSA9IGFkZCglMCwgIy0xKVxuXHQiCisg ICAgICAgICIgICBtZW13X2xvY2tlZCglMiwgcDApID0gJTFcblx0IgorICAgICAgICAiICAgaWYg KCFwMCkganVtcCAxYlxuXHQiCisgICAgICAgIDogIj0mciIob2xkKSwgIj0mciIoZHVtbXkpCisg ICAgICAgIDogInIiKHgpCisgICAgICAgIDogInAwIiwgIm1lbW9yeSIpOworICAgIHJldHVybiBv bGQ7Cit9CisKKy8qIFVzaW5nIHZvbGF0aWxlIGJlY2F1c2Ugd2UgYXJlIHRlc3RpbmcgYXRvbWlj cyAqLworc3RhdGljIGlubGluZSBsb25nIGxvbmcgYXRvbWljX2RlYzY0KHZvbGF0aWxlIGxvbmcg bG9uZyAqeCkKK3sKKyAgICBsb25nIGxvbmcgb2xkLCBkdW1teTsKKyAgICBfX2FzbV9fIF9fdm9s YXRpbGVfXygKKyAgICAgICAgIjE6ICUwID0gbWVtZF9sb2NrZWQoJTIpXG5cdCIKKyAgICAgICAg IiAgICUxID0gIy0xXG5cdCIKKyAgICAgICAgIiAgICUxID0gYWRkKCUwLCAlMSlcblx0IgorICAg ICAgICAiICAgbWVtZF9sb2NrZWQoJTIsIHAwKSA9ICUxXG5cdCIKKyAgICAgICAgIiAgIGlmICgh cDApIGp1bXAgMWJcblx0IgorICAgICAgICA6ICI9JnIiKG9sZCksICI9JnIiKGR1bW15KQorICAg ICAgICA6ICJyIih4KQorICAgICAgICA6ICJwMCIsICJtZW1vcnkiKTsKKyAgICByZXR1cm4gb2xk OworfQorCisjZGVmaW5lIExPT1BfQ05UIDEwMDAKKy8qIFVzaW5nIHZvbGF0aWxlIGJlY2F1c2Ug d2UgYXJlIHRlc3RpbmcgYXRvbWljcyAqLwordm9sYXRpbGUgaW50IHRpY2szMiA9IDE7CisvKiBV c2luZyB2b2xhdGlsZSBiZWNhdXNlIHdlIGFyZSB0ZXN0aW5nIGF0b21pY3MgKi8KK3ZvbGF0aWxl IGxvbmcgbG9uZyB0aWNrNjQgPSAxOworaW50IGVycjsKKwordm9pZCAqdGhyZWFkMV9mdW5jKHZv aWQgKmFyZykKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBMT09QX0NOVDsg aSsrKSB7CisgICAgICAgIGF0b21pY19pbmMzMigmdGljazMyKTsKKyAgICAgICAgYXRvbWljX2Rl YzY0KCZ0aWNrNjQpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwordm9pZCAqdGhyZWFk Ml9mdW5jKHZvaWQgKmFyZykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgTE9P UF9DTlQ7IGkrKykgeworICAgICAgICBhdG9taWNfZGVjMzIoJnRpY2szMik7CisgICAgICAgIGF0 b21pY19pbmM2NCgmdGljazY0KTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQg dGVzdF9wdGhyZWFkKHZvaWQpCit7CisgICAgcHRocmVhZF90IHRpZDEsIHRpZDI7CisKKyAgICBw dGhyZWFkX2NyZWF0ZSgmdGlkMSwgTlVMTCwgdGhyZWFkMV9mdW5jLCAiaGVsbG8xIik7CisgICAg cHRocmVhZF9jcmVhdGUoJnRpZDIsIE5VTEwsIHRocmVhZDJfZnVuYywgImhlbGxvMiIpOworICAg IHB0aHJlYWRfam9pbih0aWQxLCBOVUxMKTsKKyAgICBwdGhyZWFkX2pvaW4odGlkMiwgTlVMTCk7 CisKKyAgICBpZiAodGljazMyICE9IDEpIHsKKyAgICAgICAgcHJpbnRmKCJFUlJPUjogdGljazMy ICVkICE9IDFcbiIsIHRpY2szMik7CisgICAgICAgIGVycisrOworICAgIH0KKyAgICBpZiAodGlj azY0ICE9IDEpIHsKKyAgICAgICAgcHJpbnRmKCJFUlJPUjogdGljazY0ICVsbGQgIT0gMVxuIiwg dGljazY0KTsKKyAgICAgICAgZXJyKys7CisgICAgfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCit7CisgICAgdGVzdF9wdGhyZWFkKCk7CisgICAgcHV0cyhlcnIgPyAiRkFJ TCIgOiAiUEFTUyIpOworICAgIHJldHVybiBlcnI7Cit9CmRpZmYgLS1naXQgYS90ZXN0cy90Y2cv aGV4YWdvbi9kdWFsX3N0b3Jlcy5jIGIvdGVzdHMvdGNnL2hleGFnb24vZHVhbF9zdG9yZXMuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZhMzgxCi0tLSAvZGV2L251bGwK KysrIGIvdGVzdHMvdGNnL2hleGFnb24vZHVhbF9zdG9yZXMuYwpAQCAtMCwwICsxLDYwIEBACisv KgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIs IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisvKgorICogIE1ha2Ug c3VyZSB0aGF0IHR3byBzdG9yZXMgaW4gdGhlIHNhbWUgcGFja2V0IGhvbm9yIHByb3BlcgorICog IHNlbWFudGljczogc2xvdCAxIGV4ZWN1dGVzIGZpcnN0LCB0aGVuIHNsb3QgMC4KKyAqICBUaGlz IGlzIGltcG9ydGFudCB3aGVuIHRoZSBhZGRyZXNzZXMgb3ZlcmxhcC4KKyAqLworc3RhdGljIGlu bGluZSB2b2lkIGR1YWxfc3RvcmVzKGludCAqcCwgY2hhciAqcSwgaW50IHgsIGNoYXIgeSkKK3sK KyAgYXNtIHZvbGF0aWxlKCJ7XG5cdCIKKyAgICAgICAgICAgICAgICIgICAgbWVtdyglMCkgPSAl MlxuXHQiCisgICAgICAgICAgICAgICAiICAgIG1lbWIoJTEpID0gJTNcblx0IgorICAgICAgICAg ICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgIDo6ICJyIihwKSwgInIiKHEpLCAiciIoeCksICJy Iih5KQorICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7Cit9CisKK3R5cGVkZWYgdW5pb24gewor ICAgIGludCB3b3JkOworICAgIGNoYXIgYnl0ZTsKK30gRHVhbDsKKworaW50IGVycjsKKworc3Rh dGljIHZvaWQgY2hlY2soRHVhbCBkLCBpbnQgZXhwZWN0KQoreworICAgIGlmIChkLndvcmQgIT0g ZXhwZWN0KSB7CisgICAgICAgIHByaW50ZigiRVJST1I6IDB4JTA4eCAhPSAweCUwOHhcbiIsIGQu d29yZCwgZXhwZWN0KTsKKyAgICAgICAgZXJyKys7CisgICAgfQorfQorCitpbnQgbWFpbigpCit7 CisgICAgRHVhbCBkOworCisgICAgZC53b3JkID0gfjA7CisgICAgZHVhbF9zdG9yZXMoJmQud29y ZCwgJmQuYnl0ZSwgMHgxMjM0NTY3OCwgMHhmZik7CisgICAgY2hlY2soZCwgMHgxMjM0NTZmZik7 CisKKyAgICBwdXRzKGVyciA/ICJGQUlMIiA6ICJQQVNTIik7CisgICAgcmV0dXJuIGVycjsKK30K ZGlmZiAtLWdpdCBhL3Rlc3RzL3RjZy9oZXhhZ29uL21lbV9ub3NodWYuYyBiL3Rlc3RzL3RjZy9o ZXhhZ29uL21lbV9ub3NodWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k ZDcxNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGNnL2hleGFnb24vbWVtX25vc2h1Zi5j CkBAIC0wLDAgKzEsMzI4IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNv bW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxzdGRp by5oPgorCisvKgorICogIE1ha2Ugc3VyZSB0aGF0IHRoZSA6bWVtX25vc2h1ZiBwYWNrZXQgYXR0 cmlidXRlIGlzIGhvbm9yZWQuCisgKiAgVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiB0aGUgYWRkcmVz c2VzIG92ZXJsYXAuCisgKiAgVGhlIHN0b3JlIGluc3RydWN0aW9uIGluIHNsb3QgMSBlZmZlY3Rp dmVseSBleGVjdXRlcyBmaXJzdCwKKyAqICBmb2xsb3dlZCBieSB0aGUgbG9hZCBpbnN0cnVjdGlv biBpbiBzbG90IDAuCisgKi8KKworI2RlZmluZSBNRU1fTk9TSFVGMzIoTkFNRSwgU1RfVFlQRSwg TERfVFlQRSwgU1RfT1AsIExEX09QKSBcCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBOQU1F KFNUX1RZUEUgKiBwLCBMRF9UWVBFICogcSwgU1RfVFlQRSB4KSBcCit7IFwKKyAgICB1bnNpZ25l ZCBpbnQgcmV0OyBcCisgICAgYXNtIHZvbGF0aWxlKCJ7XG5cdCIgXAorICAgICAgICAgICAgICAg ICAiICAgICIgI1NUX09QICIoJTEpID0gJTNcblx0IiBcCisgICAgICAgICAgICAgICAgICIgICAg JTAgPSAiICNMRF9PUCAiKCUyKVxuXHQiIFwKKyAgICAgICAgICAgICAgICAgIn06bWVtX25vc2h1 ZlxuIiBcCisgICAgICAgICAgICAgICAgIDogIj1yIihyZXQpIFwKKyAgICAgICAgICAgICAgICAg OiAiciIocCksICJyIihxKSwgInIiKHgpIFwKKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7 IFwKKyAgICByZXR1cm4gcmV0OyBcCit9CisKKyNkZWZpbmUgTUVNX05PU0hVRjY0KE5BTUUsIFNU X1RZUEUsIExEX1RZUEUsIFNUX09QLCBMRF9PUCkgXAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBs b25nIGxvbmcgTkFNRShTVF9UWVBFICogcCwgTERfVFlQRSAqIHEsIFNUX1RZUEUgeCkgXAoreyBc CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHJldDsgXAorICAgIGFzbSB2b2xhdGlsZSgie1xuXHQi IFwKKyAgICAgICAgICAgICAgICAgIiAgICAiICNTVF9PUCAiKCUxKSA9ICUzXG5cdCIgXAorICAg ICAgICAgICAgICAgICAiICAgICUwID0gIiAjTERfT1AgIiglMilcblx0IiBcCisgICAgICAgICAg ICAgICAgICJ9Om1lbV9ub3NodWZcbiIgXAorICAgICAgICAgICAgICAgICA6ICI9ciIocmV0KSBc CisgICAgICAgICAgICAgICAgIDogInIiKHApLCAiciIocSksICJyIih4KSBcCisgICAgICAgICAg ICAgICAgIDogIm1lbW9yeSIpOyBcCisgICAgcmV0dXJuIHJldDsgXAorfQorCisvKiBTdG9yZSBi eXRlIGNvbWJpbmF0aW9ucyAqLworTUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc2JfbGIsICBzaWdu ZWQgY2hhciwgIHNpZ25lZCBjaGFyLCAgICAgIG1lbWIsIG1lbWIpCitNRU1fTk9TSFVGMzIobWVt X25vc2h1Zl9zYl9sdWIsIHNpZ25lZCBjaGFyLCAgdW5zaWduZWQgY2hhciwgICAgbWVtYiwgbWVt dWIpCitNRU1fTk9TSFVGMzIobWVtX25vc2h1Zl9zYl9saCwgIHNpZ25lZCBjaGFyLCAgc2lnbmVk IHNob3J0LCAgICAgbWVtYiwgbWVtaCkKK01FTV9OT1NIVUYzMihtZW1fbm9zaHVmX3NiX2x1aCwg c2lnbmVkIGNoYXIsICB1bnNpZ25lZCBzaG9ydCwgICBtZW1iLCBtZW11aCkKK01FTV9OT1NIVUYz MihtZW1fbm9zaHVmX3NiX2x3LCAgc2lnbmVkIGNoYXIsICBzaWduZWQgaW50LCAgICAgICBtZW1i LCBtZW13KQorTUVNX05PU0hVRjY0KG1lbV9ub3NodWZfc2JfbGQsICBzaWduZWQgY2hhciwgIHNp Z25lZCBsb25nIGxvbmcsIG1lbWIsIG1lbWQpCisKKy8qIFN0b3JlIGhhbGYgY29tYmluYXRpb25z ICovCitNRU1fTk9TSFVGMzIobWVtX25vc2h1Zl9zaF9sYiwgIHNpZ25lZCBzaG9ydCwgc2lnbmVk IGNoYXIsICAgICAgbWVtaCwgbWVtYikKK01FTV9OT1NIVUYzMihtZW1fbm9zaHVmX3NoX2x1Yiwg c2lnbmVkIHNob3J0LCB1bnNpZ25lZCBjaGFyLCAgICBtZW1oLCBtZW11YikKK01FTV9OT1NIVUYz MihtZW1fbm9zaHVmX3NoX2xoLCAgc2lnbmVkIHNob3J0LCBzaWduZWQgc2hvcnQsICAgICBtZW1o LCBtZW1oKQorTUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc2hfbHVoLCBzaWduZWQgc2hvcnQsIHVu c2lnbmVkIHNob3J0LCAgIG1lbWgsIG1lbXVoKQorTUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc2hf bHcsICBzaWduZWQgc2hvcnQsIHNpZ25lZCBpbnQsICAgICAgIG1lbWgsIG1lbXcpCitNRU1fTk9T SFVGNjQobWVtX25vc2h1Zl9zaF9sZCwgIHNpZ25lZCBzaG9ydCwgc2lnbmVkIGxvbmcgbG9uZywg bWVtaCwgbWVtZCkKKworLyogU3RvcmUgd29yZCBjb21iaW5hdGlvbnMgKi8KK01FTV9OT1NIVUYz MihtZW1fbm9zaHVmX3N3X2xiLCAgc2lnbmVkIGludCwgICBzaWduZWQgY2hhciwgICAgICBtZW13 LCBtZW1iKQorTUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc3dfbHViLCBzaWduZWQgaW50LCAgIHVu c2lnbmVkIGNoYXIsICAgIG1lbXcsIG1lbXViKQorTUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc3df bGgsICBzaWduZWQgaW50LCAgIHNpZ25lZCBzaG9ydCwgICAgIG1lbXcsIG1lbWgpCitNRU1fTk9T SFVGMzIobWVtX25vc2h1Zl9zd19sdWgsIHNpZ25lZCBpbnQsICAgdW5zaWduZWQgc2hvcnQsICAg bWVtdywgbWVtdWgpCitNRU1fTk9TSFVGMzIobWVtX25vc2h1Zl9zd19sdywgIHNpZ25lZCBpbnQs ICAgc2lnbmVkIGludCwgICAgICAgbWVtdywgbWVtdykKK01FTV9OT1NIVUY2NChtZW1fbm9zaHVm X3N3X2xkLCAgc2lnbmVkIGludCwgICBzaWduZWQgbG9uZyBsb25nLCBtZW13LCBtZW1kKQorCisv KiBTdG9yZSBkb3VibGUgY29tYmluYXRpb25zICovCitNRU1fTk9TSFVGMzIobWVtX25vc2h1Zl9z ZF9sYiwgIGxvbmcgbG9uZywgICAgc2lnbmVkIGNoYXIsICAgICAgbWVtZCwgbWVtYikKK01FTV9O T1NIVUYzMihtZW1fbm9zaHVmX3NkX2x1YiwgbG9uZyBsb25nLCAgICB1bnNpZ25lZCBjaGFyLCAg ICBtZW1kLCBtZW11YikKK01FTV9OT1NIVUYzMihtZW1fbm9zaHVmX3NkX2xoLCAgbG9uZyBsb25n LCAgICBzaWduZWQgc2hvcnQsICAgICBtZW1kLCBtZW1oKQorTUVNX05PU0hVRjMyKG1lbV9ub3No dWZfc2RfbHVoLCBsb25nIGxvbmcsICAgIHVuc2lnbmVkIHNob3J0LCAgIG1lbWQsIG1lbXVoKQor TUVNX05PU0hVRjMyKG1lbV9ub3NodWZfc2RfbHcsICBsb25nIGxvbmcsICAgIHNpZ25lZCBpbnQs ICAgICAgIG1lbWQsIG1lbXcpCitNRU1fTk9TSFVGNjQobWVtX25vc2h1Zl9zZF9sZCwgIGxvbmcg bG9uZywgICAgc2lnbmVkIGxvbmcgbG9uZywgbWVtZCwgbWVtZCkKKworc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQgY2FuY2VsX3N3X2xiKGludCBwcmVkLCBpbnQgKnAsIHNpZ25lZCBjaGFyICpx LCBpbnQgeCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmV0OworICAgIGFzbSB2b2xhdGlsZSgicDAg PSBjbXAuZXEoJTQsICMwKVxuXHQiCisgICAgICAgICAgICAgICAgICJ7XG5cdCIKKyAgICAgICAg ICAgICAgICAgIiAgICBpZiAoIXAwKSBtZW13KCUxKSA9ICUzXG5cdCIKKyAgICAgICAgICAgICAg ICAgIiAgICAlMCA9IG1lbWIoJTIpXG5cdCIKKyAgICAgICAgICAgICAgICAgIn06bWVtX25vc2h1 ZlxuIgorICAgICAgICAgICAgICAgICA6ICI9ciIocmV0KQorICAgICAgICAgICAgICAgICA6ICJy IihwKSwgInIiKHEpLCAiciIoeCksICJyIihwcmVkKQorICAgICAgICAgICAgICAgICA6ICJwMCIs ICJtZW1vcnkiKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5saW5lCit1bnNpZ25l ZCBsb25nIGxvbmcgY2FuY2VsX3N3X2xkKGludCBwcmVkLCBpbnQgKnAsIGxvbmcgbG9uZyAqcSwg aW50IHgpCit7CisgICAgbG9uZyBsb25nIHJldDsKKyAgICBhc20gdm9sYXRpbGUoInAwID0gY21w LmVxKCU0LCAjMClcblx0IgorICAgICAgICAgICAgICAgICAie1xuXHQiCisgICAgICAgICAgICAg ICAgICIgICAgaWYgKCFwMCkgbWVtdyglMSkgPSAlM1xuXHQiCisgICAgICAgICAgICAgICAgICIg ICAgJTAgPSBtZW1kKCUyKVxuXHQiCisgICAgICAgICAgICAgICAgICJ9Om1lbV9ub3NodWZcbiIK KyAgICAgICAgICAgICAgICAgOiAiPXIiKHJldCkKKyAgICAgICAgICAgICAgICAgOiAiciIocCks ICJyIihxKSwgInIiKHgpLCAiciIocHJlZCkKKyAgICAgICAgICAgICAgICAgOiAicDAiLCAibWVt b3J5Iik7CisgICAgcmV0dXJuIHJldDsKK30KKwordHlwZWRlZiB1bmlvbiB7CisgICAgc2lnbmVk IGxvbmcgbG9uZyBkWzJdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1ZFsyXTsKKyAgICBzaWdu ZWQgaW50IHdbNF07CisgICAgdW5zaWduZWQgaW50IHV3WzRdOworICAgIHNpZ25lZCBzaG9ydCBo WzhdOworICAgIHVuc2lnbmVkIHNob3J0IHVoWzhdOworICAgIHNpZ25lZCBjaGFyIGJbMTZdOwor ICAgIHVuc2lnbmVkIGNoYXIgdWJbMTZdOworfSBNZW1vcnk7CisKK2ludCBlcnI7CisKK3N0YXRp YyB2b2lkIGNoZWNrMzIoaW50IG4sIGludCBleHBlY3QpCit7CisgICAgaWYgKG4gIT0gZXhwZWN0 KSB7CisgICAgICAgIHByaW50ZigiRVJST1I6IDB4JTA4eCAhPSAweCUwOHhcbiIsIG4sIGV4cGVj dCk7CisgICAgICAgIGVycisrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY2hlY2s2NChsb25n IGxvbmcgbiwgbG9uZyBsb25nIGV4cGVjdCkKK3sKKyAgICBpZiAobiAhPSBleHBlY3QpIHsKKyAg ICAgICAgcHJpbnRmKCJFUlJPUjogMHglMDhsbHggIT0gMHglMDhsbHhcbiIsIG4sIGV4cGVjdCk7 CisgICAgICAgIGVycisrOworICAgIH0KK30KKworaW50IG1haW4oKQoreworICAgIE1lbW9yeSBu OworICAgIHVuc2lnbmVkIGludCByZXMzMjsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzNjQ7 CisKKyAgICAvKgorICAgICAqIFN0b3JlIGJ5dGUgY29tYmluYXRpb25zCisgICAgICovCisgICAg bi53WzBdID0gfjA7CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3NiX2xiKCZuLmJbMF0sICZuLmJb MF0sIDB4ODcpOworICAgIGNoZWNrMzIocmVzMzIsIDB4ZmZmZmZmODcpOworCisgICAgbi53WzBd ID0gfjA7CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3NiX2x1Yigmbi5iWzBdLCAmbi51YlswXSwg MHg4Nyk7CisgICAgY2hlY2szMihyZXMzMiwgMHgwMDAwMDA4Nyk7CisKKyAgICBuLndbMF0gPSB+ MDsKKyAgICByZXMzMiA9IG1lbV9ub3NodWZfc2JfbGgoJm4uYlswXSwgJm4uaFswXSwgMHg4Nyk7 CisgICAgY2hlY2szMihyZXMzMiwgMHhmZmZmZmY4Nyk7CisKKyAgICBuLndbMF0gPSB+MDsKKyAg ICByZXMzMiA9IG1lbV9ub3NodWZfc2JfbHVoKCZuLmJbMF0sICZuLnVoWzBdLCAweDg3KTsKKyAg ICBjaGVjazMyKHJlczMyLCAweDAwMDBmZjg3KTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJl czMyID0gbWVtX25vc2h1Zl9zYl9sdygmbi5iWzBdLCAmbi53WzBdLCAweDg3KTsKKyAgICBjaGVj azMyKHJlczMyLCAweGZmZmZmZjg3KTsKKworICAgIG4uZFswXSA9IH4wTEw7CisgICAgcmVzNjQg PSBtZW1fbm9zaHVmX3NiX2xkKCZuLmJbMF0sICZuLmRbMF0sIDB4ODcpOworICAgIGNoZWNrNjQo cmVzNjQsIDB4ZmZmZmZmZmZmZmZmZmY4N0xMKTsKKworICAgIC8qCisgICAgICogU3RvcmUgaGFs ZiBjb21iaW5hdGlvbnMKKyAgICAgKi8KKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1l bV9ub3NodWZfc2hfbGIoJm4uaFswXSwgJm4uYlswXSwgMHg4Nzg3KTsKKyAgICBjaGVjazMyKHJl czMyLCAweGZmZmZmZjg3KTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25v c2h1Zl9zaF9sdWIoJm4uaFswXSwgJm4udWJbMV0sIDB4OGY4Nyk7CisgICAgY2hlY2szMihyZXMz MiwgMHgwMDAwMDA4Zik7CisKKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1lbV9ub3No dWZfc2hfbGgoJm4uaFswXSwgJm4uaFswXSwgMHg4YTg3KTsKKyAgICBjaGVjazMyKHJlczMyLCAw eGZmZmY4YTg3KTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9z aF9sdWgoJm4uaFswXSwgJm4udWhbMF0sIDB4OGE4Nyk7CisgICAgY2hlY2szMihyZXMzMiwgMHg4 YTg3KTsKKworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zaF9sdygm bi5oWzFdLCAmbi53WzBdLCAweDhhODcpOworICAgIGNoZWNrMzIocmVzMzIsIDB4OGE4N2ZmZmYp OworCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzNjQgPSBtZW1fbm9zaHVmX3NoX2xkKCZuLmhb MV0sICZuLmRbMF0sIDB4OGE4Nyk7CisgICAgY2hlY2s2NChyZXM2NCwgMHhmZmZmZmZmZjhhODdm ZmZmTEwpOworCisgICAgLyoKKyAgICAgKiBTdG9yZSB3b3JkIGNvbWJpbmF0aW9ucworICAgICAq LworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zd19sYigmbi53WzBd LCAmbi5iWzBdLCAweDEyMzQ1Njg3KTsKKyAgICBjaGVjazMyKHJlczMyLCAweGZmZmZmZjg3KTsK KworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9zd19sdWIoJm4ud1sw XSwgJm4udWJbMF0sIDB4MTIzNDU2ODcpOworICAgIGNoZWNrMzIocmVzMzIsIDB4MDAwMDAwODcp OworCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3N3X2xoKCZuLndb MF0sICZuLmhbMF0sIDB4MTIzNGY2NzgpOworICAgIGNoZWNrMzIocmVzMzIsIDB4ZmZmZmY2Nzgp OworCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3N3X2x1aCgmbi53 WzBdLCAmbi51aFswXSwgMHgxMjM0NTY3OCk7CisgICAgY2hlY2szMihyZXMzMiwgMHgwMDAwNTY3 OCk7CisKKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1lbV9ub3NodWZfc3dfbHcoJm4u d1swXSwgJm4ud1swXSwgMHgxMjM0NTY3OCk7CisgICAgY2hlY2szMihyZXMzMiwgMHgxMjM0NTY3 OCk7CisKKyAgICBuLmRbMF0gPSB+MExMOworICAgIHJlczY0ID0gbWVtX25vc2h1Zl9zd19sZCgm bi53WzBdLCAmbi5kWzBdLCAweDEyMzQ1Njc4KTsKKyAgICBjaGVjazY0KHJlczY0LCAweGZmZmZm ZmZmMTIzNDU2NzhMTCk7CisKKyAgICAvKgorICAgICAqIFN0b3JlIGRvdWJsZSBjb21iaW5hdGlv bnMKKyAgICAgKi8KKyAgICBuLmRbMF0gPSB+MExMOworICAgIHJlczMyID0gbWVtX25vc2h1Zl9z ZF9sYigmbi5kWzBdLCAmbi5iWzFdLCAweDEyMzQ1Njc4OWFiY2RlZjApOworICAgIGNoZWNrMzIo cmVzMzIsIDB4ZmZmZmZmZGUpOworCisgICAgbi5kWzBdID0gfjBMTDsKKyAgICByZXMzMiA9IG1l bV9ub3NodWZfc2RfbHViKCZuLmRbMF0sICZuLnViWzFdLCAweDEyMzQ1Njc4OWFiY2RlZjApOwor ICAgIGNoZWNrMzIocmVzMzIsIDB4MDAwMDAwZGUpOworCisgICAgbi5kWzBdID0gfjBMTDsKKyAg ICByZXMzMiA9IG1lbV9ub3NodWZfc2RfbGgoJm4uZFswXSwgJm4uaFsxXSwgMHgxMjM0NTY3ODlh YmNkZWYwKTsKKyAgICBjaGVjazMyKHJlczMyLCAweGZmZmY5YWJjKTsKKworICAgIG4uZFswXSA9 IH4wTEw7CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3NkX2x1aCgmbi5kWzBdLCAmbi51aFsxXSwg MHgxMjM0NTY3ODlhYmNkZWYwKTsKKyAgICBjaGVjazMyKHJlczMyLCAweDAwMDA5YWJjKTsKKwor ICAgIG4uZFswXSA9IH4wTEw7CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3NkX2x3KCZuLmRbMF0s ICZuLndbMV0sIDB4MTIzNDU2Nzg5YWJjZGVmMCk7CisgICAgY2hlY2szMihyZXMzMiwgMHgxMjM0 NTY3OCk7CisKKyAgICBuLmRbMF0gPSB+MExMOworICAgIHJlczY0ID0gbWVtX25vc2h1Zl9zZF9s ZCgmbi5kWzBdLCAmbi5kWzBdLCAweDEyMzQ1Njc4OWFiY2RlZjApOworICAgIGNoZWNrNjQocmVz NjQsIDB4MTIzNDU2Nzg5YWJjZGVmMExMKTsKKworICAgIC8qCisgICAgICogUHJlZGljYXRlZCB3 b3JkIHN0b3JlcworICAgICAqLworICAgIG4ud1swXSA9IH4wOworICAgIHJlczMyID0gY2FuY2Vs X3N3X2xiKDAsICZuLndbMF0sICZuLmJbMF0sIDB4MTIzNDU2NzgpOworICAgIGNoZWNrMzIocmVz MzIsIDB4ZmZmZmZmZmYpOworCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzMzIgPSBjYW5jZWxf c3dfbGIoMSwgJm4ud1swXSwgJm4uYlswXSwgMHgxMjM0NTY4Nyk7CisgICAgY2hlY2szMihyZXMz MiwgMHhmZmZmZmY4Nyk7CisKKyAgICAvKgorICAgICAqIFByZWRpY2F0ZWQgZG91YmxlIHN0b3Jl cworICAgICAqLworICAgIG4uZFswXSA9IH4wTEw7CisgICAgcmVzNjQgPSBjYW5jZWxfc3dfbGQo MCwgJm4ud1swXSwgJm4uZFswXSwgMHgxMjM0NTY3OCk7CisgICAgY2hlY2s2NChyZXM2NCwgMHhm ZmZmZmZmZmZmZmZmZmZmTEwpOworCisgICAgbi5kWzBdID0gfjBMTDsKKyAgICByZXM2NCA9IGNh bmNlbF9zd19sZCgxLCAmbi53WzBdLCAmbi5kWzBdLCAweDEyMzQ1Njc4KTsKKyAgICBjaGVjazY0 KHJlczY0LCAweGZmZmZmZmZmMTIzNDU2NzhMTCk7CisKKyAgICBuLmRbMF0gPSB+MExMOworICAg IHJlczY0ID0gY2FuY2VsX3N3X2xkKDAsICZuLndbMV0sICZuLmRbMF0sIDB4MTIzNDU2NzgpOwor ICAgIGNoZWNrNjQocmVzNjQsIDB4ZmZmZmZmZmZmZmZmZmZmZkxMKTsKKworICAgIG4uZFswXSA9 IH4wTEw7CisgICAgcmVzNjQgPSBjYW5jZWxfc3dfbGQoMSwgJm4ud1sxXSwgJm4uZFswXSwgMHgx MjM0NTY3OCk7CisgICAgY2hlY2s2NChyZXM2NCwgMHgxMjM0NTY3OGZmZmZmZmZmTEwpOworCisg ICAgLyoKKyAgICAgKiBObyBvdmVybGFwIHRlc3RzCisgICAgICovCisgICAgbi53WzBdID0gfjA7 CisgICAgcmVzMzIgPSBtZW1fbm9zaHVmX3NiX2xiKCZuLmJbMV0sICZuLmJbMF0sIDB4ODcpOwor ICAgIGNoZWNrMzIocmVzMzIsIDB4ZmZmZmZmZmYpOworCisgICAgbi53WzBdID0gfjA7CisgICAg cmVzMzIgPSBtZW1fbm9zaHVmX3NiX2xiKCZuLmJbMF0sICZuLmJbMV0sIDB4ODcpOworICAgIGNo ZWNrMzIocmVzMzIsIDB4ZmZmZmZmZmYpOworCisgICAgbi53WzBdID0gfjA7CisgICAgcmVzMzIg PSBtZW1fbm9zaHVmX3NoX2xoKCZuLmhbMV0sICZuLmhbMF0sIDB4ODc4Nyk7CisgICAgY2hlY2sz MihyZXMzMiwgMHhmZmZmZmZmZik7CisKKyAgICBuLndbMF0gPSB+MDsKKyAgICByZXMzMiA9IG1l bV9ub3NodWZfc2hfbGgoJm4uaFswXSwgJm4uaFsxXSwgMHg4Nzg3KTsKKyAgICBjaGVjazMyKHJl czMyLCAweGZmZmZmZmZmKTsKKworICAgIG4uZFswXSA9IH4wTEw7CisgICAgcmVzMzIgPSBtZW1f bm9zaHVmX3N3X2x3KCZuLndbMF0sICZuLndbMV0sIDB4MTIzNDU2NzgpOworICAgIGNoZWNrMzIo cmVzMzIsIDB4ZmZmZmZmZmYpOworCisgICAgbi5kWzBdID0gfjBMTDsKKyAgICByZXMzMiA9IG1l bV9ub3NodWZfc3dfbHcoJm4ud1sxXSwgJm4ud1swXSwgMHgxMjM0NTY3OCk7CisgICAgY2hlY2sz MihyZXMzMiwgMHhmZmZmZmZmZik7CisKKyAgICBuLmRbMF0gPSB+MExMOworICAgIG4uZFsxXSA9 IH4wTEw7CisgICAgcmVzNjQgPSBtZW1fbm9zaHVmX3NkX2xkKCZuLmRbMV0sICZuLmRbMF0sIDB4 MTIzNDU2Nzg5YWJjZGVmMExMKTsKKyAgICBjaGVjazY0KHJlczY0LCAweGZmZmZmZmZmZmZmZmZm ZmZMTCk7CisKKyAgICBuLmRbMF0gPSB+MExMOworICAgIG4uZFsxXSA9IH4wTEw7CisgICAgcmVz NjQgPSBtZW1fbm9zaHVmX3NkX2xkKCZuLmRbMF0sICZuLmRbMV0sIDB4MTIzNDU2Nzg5YWJjZGVm MExMKTsKKyAgICBjaGVjazY0KHJlczY0LCAweGZmZmZmZmZmZmZmZmZmZmZMTCk7CisKKyAgICBw dXRzKGVyciA/ICJGQUlMIiA6ICJQQVNTIik7CisgICAgcmV0dXJuIGVycjsKK30KZGlmZiAtLWdp dCBhL3Rlc3RzL3RjZy9oZXhhZ29uL21pc2MuYyBiL3Rlc3RzL3RjZy9oZXhhZ29uL21pc2MuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTg3NTlmCi0tLSAvZGV2L251bGwK KysrIGIvdGVzdHMvdGNnL2hleGFnb24vbWlzYy5jCkBAIC0wLDAgKzEsMzgwIEBACisvKgorICog IENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgor Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQg dWludDE2X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKKworCitzdGF0aWMgaW5s aW5lIHZvaWQgUzRfc3RvcmVyaG5ld19ycih2b2lkICpwLCBpbnQgaW5kZXgsIHVpbnQxNl90IHYp Cit7CisgIGFzbSB2b2xhdGlsZSgie1xuXHQiCisgICAgICAgICAgICAgICAiICAgIHIwID0gJTBc blxuIgorICAgICAgICAgICAgICAgIiAgICBtZW1oKCUxKyUyPDwjMikgPSByMC5uZXdcblx0Igor ICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgIDo6ICJyIih2KSwgInIiKHApLCAi ciIoaW5kZXgpCisgICAgICAgICAgICAgICA6ICJyMCIsICJtZW1vcnkiKTsKK30KKworc3RhdGlj IHVpbnQzMl90IGRhdGE7CitzdGF0aWMgaW5saW5lIHZvaWQgKlM0X3N0b3JlcmJuZXdfYXAodWlu dDhfdCB2KQoreworICB2b2lkICpyZXQ7CisgIGFzbSB2b2xhdGlsZSgie1xuXHQiCisgICAgICAg ICAgICAgICAiICAgIHIwID0gJTFcblxuIgorICAgICAgICAgICAgICAgIiAgICBtZW1iKCUwID0g IyNkYXRhKSA9IHIwLm5ld1xuXHQiCisgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAg ICAgOiAiPXIiKHJldCkKKyAgICAgICAgICAgICAgIDogInIiKHYpCisgICAgICAgICAgICAgICA6 ICJyMCIsICJtZW1vcnkiKTsKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlubGluZSB2b2lk ICpTNF9zdG9yZXJobmV3X2FwKHVpbnQxNl90IHYpCit7CisgIHZvaWQgKnJldDsKKyAgYXNtIHZv bGF0aWxlKCJ7XG5cdCIKKyAgICAgICAgICAgICAgICIgICAgcjAgPSAlMVxuXG4iCisgICAgICAg ICAgICAgICAiICAgIG1lbWgoJTAgPSAjI2RhdGEpID0gcjAubmV3XG5cdCIKKyAgICAgICAgICAg ICAgICJ9XG4iCisgICAgICAgICAgICAgICA6ICI9ciIocmV0KQorICAgICAgICAgICAgICAgOiAi ciIodikKKyAgICAgICAgICAgICAgIDogInIwIiwgIm1lbW9yeSIpOworICByZXR1cm4gcmV0Owor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgKlM0X3N0b3JlcmluZXdfYXAodWludDMyX3QgdikKK3sK KyAgdm9pZCAqcmV0OworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAgICAgICAgICAgICAgIiAg ICByMCA9ICUxXG5cbiIKKyAgICAgICAgICAgICAgICIgICAgbWVtdyglMCA9ICMjZGF0YSkgPSBy MC5uZXdcblx0IgorICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgIDogIj1yIihy ZXQpCisgICAgICAgICAgICAgICA6ICJyIih2KQorICAgICAgICAgICAgICAgOiAicjAiLCAibWVt b3J5Iik7CisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBTNF9zdG9yZWly YnRfaW8odm9pZCAqcCwgaW50IHByZWQpCit7CisgIGFzbSB2b2xhdGlsZSgicDAgPSBjbXAuZXEo JTAsICMxKVxuXHQiCisgICAgICAgICAgICAgICAiaWYgKHAwKSBtZW1iKCUxKyM0KT0jMjdcblx0 IgorICAgICAgICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDog InAwIiwgIm1lbW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmJmX2lv KHZvaWQgKnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoInAwID0gY21wLmVxKCUwLCAj MSlcblx0IgorICAgICAgICAgICAgICAgImlmICghcDApIG1lbWIoJTErIzQpPSMyN1xuXHQiCisg ICAgICAgICAgICAgICA6OiAiciIocHJlZCksICJyIihwKQorICAgICAgICAgICAgICAgOiAicDAi LCAibWVtb3J5Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBTNF9zdG9yZWlyYnRuZXdfaW8o dm9pZCAqcCwgaW50IHByZWQpCit7CisgIGFzbSB2b2xhdGlsZSgie1xuXHQiCisgICAgICAgICAg ICAgICAiICAgIHAwID0gY21wLmVxKCUwLCAjMSlcblx0IgorICAgICAgICAgICAgICAgIiAgICBp ZiAocDAubmV3KSBtZW1iKCUxKyM0KT0jMjdcblx0IgorICAgICAgICAgICAgICAgIn1cblx0Igor ICAgICAgICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAw IiwgIm1lbW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmJmbmV3X2lv KHZvaWQgKnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAgICAgICAg ICAgICAgIiAgICBwMCA9IGNtcC5lcSglMCwgIzEpXG5cdCIKKyAgICAgICAgICAgICAgICIgICAg aWYgKCFwMC5uZXcpIG1lbWIoJTErIzQpPSMyN1xuXHQiCisgICAgICAgICAgICAgICAifVxuXHQi CisgICAgICAgICAgICAgICA6OiAiciIocHJlZCksICJyIihwKQorICAgICAgICAgICAgICAgOiAi cDAiLCAibWVtb3J5Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBTNF9zdG9yZWlyaHRfaW8o dm9pZCAqcCwgaW50IHByZWQpCit7CisgIGFzbSB2b2xhdGlsZSgicDAgPSBjbXAuZXEoJTAsICMx KVxuXHQiCisgICAgICAgICAgICAgICAiaWYgKHAwKSBtZW1oKCUxKyM0KT0jMjdcblx0IgorICAg ICAgICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAwIiwg Im1lbW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmhmX2lvKHZvaWQg KnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoInAwID0gY21wLmVxKCUwLCAjMSlcblx0 IgorICAgICAgICAgICAgICAgImlmICghcDApIG1lbWgoJTErIzQpPSMyN1xuXHQiCisgICAgICAg ICAgICAgICA6OiAiciIocHJlZCksICJyIihwKQorICAgICAgICAgICAgICAgOiAicDAiLCAibWVt b3J5Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBTNF9zdG9yZWlyaHRuZXdfaW8odm9pZCAq cCwgaW50IHByZWQpCit7CisgIGFzbSB2b2xhdGlsZSgie1xuXHQiCisgICAgICAgICAgICAgICAi ICAgIHAwID0gY21wLmVxKCUwLCAjMSlcblx0IgorICAgICAgICAgICAgICAgIiAgICBpZiAocDAu bmV3KSBtZW1oKCUxKyM0KT0jMjdcblx0IgorICAgICAgICAgICAgICAgIn1cblx0IgorICAgICAg ICAgICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAwIiwgIm1l bW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmhmbmV3X2lvKHZvaWQg KnAsIGludCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAgICAgICAgICAgICAg IiAgICBwMCA9IGNtcC5lcSglMCwgIzEpXG5cdCIKKyAgICAgICAgICAgICAgICIgICAgaWYgKCFw MC5uZXcpIG1lbWgoJTErIzQpPSMyN1xuXHQiCisgICAgICAgICAgICAgICAifVxuXHQiCisgICAg ICAgICAgICAgICA6OiAiciIocHJlZCksICJyIihwKQorICAgICAgICAgICAgICAgOiAicDAiLCAi bWVtb3J5Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBTNF9zdG9yZWlyaXRfaW8odm9pZCAq cCwgaW50IHByZWQpCit7CisgIGFzbSB2b2xhdGlsZSgicDAgPSBjbXAuZXEoJTAsICMxKVxuXHQi CisgICAgICAgICAgICAgICAiaWYgKHAwKSBtZW13KCUxKyM0KT0jMjdcblx0IgorICAgICAgICAg ICAgICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAwIiwgIm1lbW9y eSIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmlmX2lvKHZvaWQgKnAsIGlu dCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoInAwID0gY21wLmVxKCUwLCAjMSlcblx0IgorICAg ICAgICAgICAgICAgImlmICghcDApIG1lbXcoJTErIzQpPSMyN1xuXHQiCisgICAgICAgICAgICAg ICA6OiAiciIocHJlZCksICJyIihwKQorICAgICAgICAgICAgICAgOiAicDAiLCAibWVtb3J5Iik7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBTNF9zdG9yZWlyaXRuZXdfaW8odm9pZCAqcCwgaW50 IHByZWQpCit7CisgIGFzbSB2b2xhdGlsZSgie1xuXHQiCisgICAgICAgICAgICAgICAiICAgIHAw ID0gY21wLmVxKCUwLCAjMSlcblx0IgorICAgICAgICAgICAgICAgIiAgICBpZiAocDAubmV3KSBt ZW13KCUxKyM0KT0jMjdcblx0IgorICAgICAgICAgICAgICAgIn1cblx0IgorICAgICAgICAgICAg ICAgOjogInIiKHByZWQpLCAiciIocCkKKyAgICAgICAgICAgICAgIDogInAwIiwgIm1lbW9yeSIp OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUzRfc3RvcmVpcmlmbmV3X2lvKHZvaWQgKnAsIGlu dCBwcmVkKQoreworICBhc20gdm9sYXRpbGUoIntcblx0IgorICAgICAgICAgICAgICAgIiAgICBw MCA9IGNtcC5lcSglMCwgIzEpXG5cdCIKKyAgICAgICAgICAgICAgICIgICAgaWYgKCFwMC5uZXcp IG1lbXcoJTErIzQpPSMyN1xuXHQiCisgICAgICAgICAgICAgICAifVxuXHQiCisgICAgICAgICAg ICAgICA6OiAiciIocHJlZCksICJyIihwKQorICAgICAgICAgICAgICAgOiAicDAiLCAibWVtb3J5 Iik7Cit9CisKKy8qCisgKiBUZXN0IHRoYXQgY29tcG91bmQtY29tcGFyZS1qdW1wIGlzIGV4ZWN1 dGVkIGluIDIgcGFydHMKKyAqIEZpcnN0IHdlIGhhdmUgdG8gZG8gYWxsIHRoZSBjb21wYXJlcyBp biB0aGUgcGFja2V0IGFuZAorICogYWNjb3VudCBmb3IgYXV0by1hbmRpbmcuICBUaGVuLCB3ZSBj YW4gZG8gdGhlIHByZWRpY2F0ZWQKKyAqIGp1bXAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGNt cG5kX2NtcF9qdW1wKHZvaWQpCit7CisgICAgaW50IHJldHZhbDsKKyAgICBhc20gKCJyNSA9ICM3 XG5cdCIKKyAgICAgICAgICJyNiA9ICM5XG5cdCIKKyAgICAgICAgICJ7XG5cdCIKKyAgICAgICAg ICIgICAgcDAgPSBjbXAuZXEocjUsICM3KVxuXHQiCisgICAgICAgICAiICAgIGlmIChwMC5uZXcp IGp1bXA6bnQgMWZcblx0IgorICAgICAgICAgIiAgICBwMCA9IGNtcC5lcShyNiwgIzcpXG5cdCIK KyAgICAgICAgICJ9XG5cdCIKKyAgICAgICAgICIlMCA9ICMxMlxuXHQiCisgICAgICAgICAianVt cCAyZlxuXHQiCisgICAgICAgICAiMTpcblx0IgorICAgICAgICAgIiUwID0gIzEzXG5cdCIKKyAg ICAgICAgICIyOlxuXHQiCisgICAgICAgICA6ICI9ciIocmV0dmFsKSA6OiAicjUiLCAicjYiLCAi cDAiKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgaW5saW5lIGludCB0ZXN0X2Ns cnRuZXcoaW50IGFyZzEsIGludCBvbGRfdmFsKQoreworICBpbnQgcmV0OworICBhc20gdm9sYXRp bGUoInI1ID0gJTJcblx0IgorICAgICAgICAgICAgICAgIntcblx0IgorICAgICAgICAgICAgICAg ICAgICJwMCA9IGNtcC5lcSglMSwgIzEpXG5cdCIKKyAgICAgICAgICAgICAgICAgICAiaWYgKHAw Lm5ldykgcjU9IzBcblx0IgorICAgICAgICAgICAgICAgIn1cblx0IgorICAgICAgICAgICAgICAg IiUwID0gcjVcblx0IgorICAgICAgICAgICAgICAgOiAiPXIiKHJldCkKKyAgICAgICAgICAgICAg IDogInIiKGFyZzEpLCAiciIob2xkX3ZhbCkKKyAgICAgICAgICAgICAgIDogInAwIiwgInI1Iik7 CisgIHJldHVybiByZXQ7Cit9CisKK2ludCBlcnI7CisKK3N0YXRpYyB2b2lkIGNoZWNrKGludCB2 YWwsIGludCBleHBlY3QpCit7CisgICAgaWYgKHZhbCAhPSBleHBlY3QpIHsKKyAgICAgICAgcHJp bnRmKCJFUlJPUjogMHglMDR4ICE9IDB4JTA0eFxuIiwgdmFsLCBleHBlY3QpOworICAgICAgICBl cnIrKzsKKyAgICB9Cit9CisKK3VpbnQzMl90IGluaXRbMTBdID0geyAwLCAxLCAyLCAzLCA0LCA1 LCA2LCA3LCA4LCA5IH07Cit1aW50MzJfdCBhcnJheVsxMF07CisKK3VpbnQzMl90IGVhcmx5X2V4 aXQ7CisKKy8qCisgKiBXcml0ZSB0aGlzIGFzIGEgZnVuY3Rpb24gYmVjYXVzZSB3ZSBjYW4ndCBn dWFyYW50ZWUgdGhlIGNvbXBpbGVyIHdpbGwKKyAqIGFsbG9jYXRlIGEgZnJhbWUgd2l0aCBqdXN0 IHRoZSBTTDJfcmV0dXJuX3RuZXcgcGFja2V0LgorICovCitzdGF0aWMgdm9pZCBTTDJfcmV0dXJu X3RuZXcoaW50IHgpOworYXNtICgiU0wyX3JldHVybl90bmV3OlxuXHQiCisgICAgICIgICBhbGxv Y2ZyYW1lKCMwKVxuXHQiCisgICAgICIgICByMSA9ICMxXG5cdCIKKyAgICAgIiAgIG1lbXcoIyNl YXJseV9leGl0KSA9IHIxXG5cdCIKKyAgICAgIiAgIHtcblx0IgorICAgICAiICAgICAgIHAwID0g Y21wLmVxKHIwLCAjMSlcblx0IgorICAgICAiICAgICAgIGlmIChwMC5uZXcpIGRlYWxsb2NfcmV0 dXJuOm50XG5cdCIgICAgLyogU0wyX3JldHVybl90bmV3ICovCisgICAgICIgICB9XG5cdCIKKyAg ICAgIiAgIHIxID0gIzBcblx0IgorICAgICAiICAgbWVtdygjI2Vhcmx5X2V4aXQpID0gcjFcblx0 IgorICAgICAiICAgZGVhbGxvY19yZXR1cm5cblx0IgorICAgICk7CisKK3N0YXRpYyBsb25nIGxv bmcgY3JlZ19wYWlyKGludCB4LCBpbnQgeSkKK3sKKyAgICBsb25nIGxvbmcgcmV0dmFsOworICAg IGFzbSAoIm0wID0gJTFcblx0IgorICAgICAgICAgIm0xID0gJTJcblx0IgorICAgICAgICAgIiUw ID0gYzc6NlxuXHQiCisgICAgICAgICA6ICI9ciIocmV0dmFsKSA6ICJyIih4KSwgInIiKHkpIDog Im0wIiwgIm0xIik7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50IG1haW4oKQoreworCisg ICAgbWVtY3B5KGFycmF5LCBpbml0LCBzaXplb2YoYXJyYXkpKTsKKyAgICBTNF9zdG9yZXJobmV3 X3JyKGFycmF5LCA0LCAweGZmZmYpOworICAgIGNoZWNrKGFycmF5WzRdLCAweGZmZmYpOworCisg ICAgZGF0YSA9IH4wOworICAgIGNoZWNrKCh1aW50MzJfdClTNF9zdG9yZXJibmV3X2FwKDB4MTIp LCAodWludDMyX3QpJmRhdGEpOworICAgIGNoZWNrKGRhdGEsIDB4ZmZmZmZmMTIpOworCisgICAg ZGF0YSA9IH4wOworICAgIGNoZWNrKCh1aW50MzJfdClTNF9zdG9yZXJobmV3X2FwKDB4MTIzNCks ICh1aW50MzJfdCkmZGF0YSk7CisgICAgY2hlY2soZGF0YSwgMHhmZmZmMTIzNCk7CisKKyAgICBk YXRhID0gfjA7CisgICAgY2hlY2soKHVpbnQzMl90KVM0X3N0b3JlcmluZXdfYXAoMHgxMjM0NTY3 OCksICh1aW50MzJfdCkmZGF0YSk7CisgICAgY2hlY2soZGF0YSwgMHgxMjM0NTY3OCk7CisKKyAg ICAvKiBCeXRlICovCisgICAgbWVtY3B5KGFycmF5LCBpbml0LCBzaXplb2YoYXJyYXkpKTsKKyAg ICBTNF9zdG9yZWlyYnRfaW8oJmFycmF5WzFdLCAxKTsKKyAgICBjaGVjayhhcnJheVsyXSwgMjcp OworICAgIFM0X3N0b3JlaXJidF9pbygmYXJyYXlbMl0sIDApOworICAgIGNoZWNrKGFycmF5WzNd LCAzKTsKKworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6ZW9mKGFycmF5KSk7CisgICAgUzRf c3RvcmVpcmJmX2lvKCZhcnJheVszXSwgMCk7CisgICAgY2hlY2soYXJyYXlbNF0sIDI3KTsKKyAg ICBTNF9zdG9yZWlyYmZfaW8oJmFycmF5WzRdLCAxKTsKKyAgICBjaGVjayhhcnJheVs1XSwgNSk7 CisKKyAgICBtZW1jcHkoYXJyYXksIGluaXQsIHNpemVvZihhcnJheSkpOworICAgIFM0X3N0b3Jl aXJidG5ld19pbygmYXJyYXlbNV0sIDEpOworICAgIGNoZWNrKGFycmF5WzZdLCAyNyk7CisgICAg UzRfc3RvcmVpcmJ0bmV3X2lvKCZhcnJheVs2XSwgMCk7CisgICAgY2hlY2soYXJyYXlbN10sIDcp OworCisgICAgbWVtY3B5KGFycmF5LCBpbml0LCBzaXplb2YoYXJyYXkpKTsKKyAgICBTNF9zdG9y ZWlyYmZuZXdfaW8oJmFycmF5WzddLCAwKTsKKyAgICBjaGVjayhhcnJheVs4XSwgMjcpOworICAg IFM0X3N0b3JlaXJiZm5ld19pbygmYXJyYXlbOF0sIDEpOworICAgIGNoZWNrKGFycmF5WzldLCA5 KTsKKworICAgIC8qIEhhbGYgd29yZCAqLworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6ZW9m KGFycmF5KSk7CisgICAgUzRfc3RvcmVpcmh0X2lvKCZhcnJheVsxXSwgMSk7CisgICAgY2hlY2so YXJyYXlbMl0sIDI3KTsKKyAgICBTNF9zdG9yZWlyaHRfaW8oJmFycmF5WzJdLCAwKTsKKyAgICBj aGVjayhhcnJheVszXSwgMyk7CisKKyAgICBtZW1jcHkoYXJyYXksIGluaXQsIHNpemVvZihhcnJh eSkpOworICAgIFM0X3N0b3JlaXJoZl9pbygmYXJyYXlbM10sIDApOworICAgIGNoZWNrKGFycmF5 WzRdLCAyNyk7CisgICAgUzRfc3RvcmVpcmhmX2lvKCZhcnJheVs0XSwgMSk7CisgICAgY2hlY2so YXJyYXlbNV0sIDUpOworCisgICAgbWVtY3B5KGFycmF5LCBpbml0LCBzaXplb2YoYXJyYXkpKTsK KyAgICBTNF9zdG9yZWlyaHRuZXdfaW8oJmFycmF5WzVdLCAxKTsKKyAgICBjaGVjayhhcnJheVs2 XSwgMjcpOworICAgIFM0X3N0b3JlaXJodG5ld19pbygmYXJyYXlbNl0sIDApOworICAgIGNoZWNr KGFycmF5WzddLCA3KTsKKworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6ZW9mKGFycmF5KSk7 CisgICAgUzRfc3RvcmVpcmhmbmV3X2lvKCZhcnJheVs3XSwgMCk7CisgICAgY2hlY2soYXJyYXlb OF0sIDI3KTsKKyAgICBTNF9zdG9yZWlyaGZuZXdfaW8oJmFycmF5WzhdLCAxKTsKKyAgICBjaGVj ayhhcnJheVs5XSwgOSk7CisKKyAgICAvKiBXb3JkICovCisgICAgbWVtY3B5KGFycmF5LCBpbml0 LCBzaXplb2YoYXJyYXkpKTsKKyAgICBTNF9zdG9yZWlyaXRfaW8oJmFycmF5WzFdLCAxKTsKKyAg ICBjaGVjayhhcnJheVsyXSwgMjcpOworICAgIFM0X3N0b3JlaXJpdF9pbygmYXJyYXlbMl0sIDAp OworICAgIGNoZWNrKGFycmF5WzNdLCAzKTsKKworICAgIG1lbWNweShhcnJheSwgaW5pdCwgc2l6 ZW9mKGFycmF5KSk7CisgICAgUzRfc3RvcmVpcmlmX2lvKCZhcnJheVszXSwgMCk7CisgICAgY2hl Y2soYXJyYXlbNF0sIDI3KTsKKyAgICBTNF9zdG9yZWlyaWZfaW8oJmFycmF5WzRdLCAxKTsKKyAg ICBjaGVjayhhcnJheVs1XSwgNSk7CisKKyAgICBtZW1jcHkoYXJyYXksIGluaXQsIHNpemVvZihh cnJheSkpOworICAgIFM0X3N0b3JlaXJpdG5ld19pbygmYXJyYXlbNV0sIDEpOworICAgIGNoZWNr KGFycmF5WzZdLCAyNyk7CisgICAgUzRfc3RvcmVpcml0bmV3X2lvKCZhcnJheVs2XSwgMCk7Cisg ICAgY2hlY2soYXJyYXlbN10sIDcpOworCisgICAgbWVtY3B5KGFycmF5LCBpbml0LCBzaXplb2Yo YXJyYXkpKTsKKyAgICBTNF9zdG9yZWlyaWZuZXdfaW8oJmFycmF5WzddLCAwKTsKKyAgICBjaGVj ayhhcnJheVs4XSwgMjcpOworICAgIFM0X3N0b3JlaXJpZm5ld19pbygmYXJyYXlbOF0sIDEpOwor ICAgIGNoZWNrKGFycmF5WzldLCA5KTsKKworICAgIGludCB4ID0gY21wbmRfY21wX2p1bXAoKTsK KyAgICBjaGVjayh4LCAxMik7CisKKyAgICBTTDJfcmV0dXJuX3RuZXcoMCk7CisgICAgY2hlY2so ZWFybHlfZXhpdCwgMCk7CisgICAgU0wyX3JldHVybl90bmV3KDEpOworICAgIGNoZWNrKGVhcmx5 X2V4aXQsIDEpOworCisgICAgbG9uZyBsb25nIHBhaXIgPSBjcmVnX3BhaXIoNSwgNyk7CisgICAg Y2hlY2soKGludClwYWlyLCA1KTsKKyAgICBjaGVjaygoaW50KShwYWlyID4+IDMyKSwgNyk7CisK KyAgICBpbnQgcmVzID0gdGVzdF9jbHJ0bmV3KDEsIDcpOworICAgIGNoZWNrKHJlcywgMCk7Cisg ICAgcmVzID0gdGVzdF9jbHJ0bmV3KDIsIDcpOworICAgIGNoZWNrKHJlcywgNyk7CisKKyAgICBw dXRzKGVyciA/ICJGQUlMIiA6ICJQQVNTIik7CisgICAgcmV0dXJuIGVycjsKK30KZGlmZiAtLWdp dCBhL3Rlc3RzL3RjZy9oZXhhZ29uL3ByZWdfYWxpYXMuYyBiL3Rlc3RzL3RjZy9oZXhhZ29uL3By ZWdfYWxpYXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2FjNDY5Ci0t LSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGNnL2hleGFnb24vcHJlZ19hbGlhcy5jCkBAIC0wLDAg KzEsMTY5IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5ub3Zh dGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg KiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCitz dGF0aWMgaW5saW5lIGludCBwcmVnX2FsaWFzKGludCB2MCwgaW50IHYxLCBpbnQgdjIsIGludCB2 MykKK3sKKyAgaW50IHJldDsKKyAgYXNtIHZvbGF0aWxlKCJwMCA9ICUxXG5cdCIKKyAgICAgICAg ICAgICAgICJwMSA9ICUyXG5cdCIKKyAgICAgICAgICAgICAgICJwMiA9ICUzXG5cdCIKKyAgICAg ICAgICAgICAgICJwMyA9ICU0XG5cdCIKKyAgICAgICAgICAgICAgICIlMCA9IEM0XG4iCisgICAg ICAgICAgICAgICA6ICI9ciIocmV0KQorICAgICAgICAgICAgICAgOiAiciIodjApLCAiciIodjEp LCAiciIodjIpLCAiciIodjMpCisgICAgICAgICAgICAgICA6ICJwMCIsICJwMSIsICJwMiIsICJw MyIpOworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5saW5lIGludCBwcmVnX2FsaWFzX3Bh aXIoaW50IHYwLCBpbnQgdjEsIGludCB2MiwgaW50IHYzKQoreworICBsb25nIGxvbmcgYzU0Owor ICBhc20gdm9sYXRpbGUoInAwID0gJTFcblx0IgorICAgICAgICAgICAgICAgInAxID0gJTJcblx0 IgorICAgICAgICAgICAgICAgInAyID0gJTNcblx0IgorICAgICAgICAgICAgICAgInAzID0gJTRc blx0IgorICAgICAgICAgICAgICAgIiUwID0gQzU6NFxuIgorICAgICAgICAgICAgICAgOiAiPXIi KGM1NCkKKyAgICAgICAgICAgICAgIDogInIiKHYwKSwgInIiKHYxKSwgInIiKHYyKSwgInIiKHYz KQorICAgICAgICAgICAgICAgOiAicDAiLCAicDEiLCAicDIiLCAicDMiKTsKKyAgcmV0dXJuIChp bnQpYzU0OworfQorCit0eXBlZGVmIHVuaW9uIHsKKyAgICBpbnQgY3JlZzsKKyAgICBzdHJ1Y3Qg eworICAgICAgdW5zaWduZWQgY2hhciBwMDsKKyAgICAgIHVuc2lnbmVkIGNoYXIgcDE7CisgICAg ICB1bnNpZ25lZCBjaGFyIHAyOworICAgICAgdW5zaWduZWQgY2hhciBwMzsKKyAgICB9IHByZWdz OworfSBQUmVnczsKKworc3RhdGljIGlubGluZSB2b2lkIGNyZWdfYWxpYXMoaW50IGN2YWwsIFBS ZWdzICpwcmVncykKK3sKKyAgdW5zaWduZWQgY2hhciB2YWw7CisgIGFzbSB2b2xhdGlsZSgiYzQg PSAlMCIgOiA6ICJyIihjdmFsKSk7CisKKyAgYXNtIHZvbGF0aWxlKCIlMCA9IHAwIiA6ICI9ciIo dmFsKSk7CisgIHByZWdzLT5wcmVncy5wMCA9IHZhbDsKKyAgYXNtIHZvbGF0aWxlKCIlMCA9IHAx IiA6ICI9ciIodmFsKSk7CisgIHByZWdzLT5wcmVncy5wMSA9IHZhbDsKKyAgYXNtIHZvbGF0aWxl KCIlMCA9IHAyIiA6ICI9ciIodmFsKSk7CisgIHByZWdzLT5wcmVncy5wMiA9IHZhbDsKKyAgYXNt IHZvbGF0aWxlKCIlMCA9IHAzIiA6ICI9ciIodmFsKSk7CisgIHByZWdzLT5wcmVncy5wMyA9IHZh bDsKK30KKworaW50IGVycjsKKworc3RhdGljIHZvaWQgY2hlY2soaW50IHZhbCwgaW50IGV4cGVj dCkKK3sKKyAgICBpZiAodmFsICE9IGV4cGVjdCkgeworICAgICAgICBwcmludGYoIkVSUk9SOiAw eCUwOHggIT0gMHglMDh4XG4iLCB2YWwsIGV4cGVjdCk7CisgICAgICAgIGVycisrOworICAgIH0K K30KKworc3RhdGljIGlubGluZSB2b2lkIGNyZWdfYWxpYXNfcGFpcih1bnNpZ25lZCBpbnQgY3Zh bCwgUFJlZ3MgKnByZWdzKQoreworICB1bnNpZ25lZCBsb25nIGxvbmcgY3ZhbF9wYWlyID0gKDB4 ZGVhZGJlZWZVTEwgPDwgMzIpIHwgY3ZhbDsKKyAgdW5zaWduZWQgY2hhciB2YWw7CisgIGludCBj NTsKKyAgYXNtIHZvbGF0aWxlKCJjNTo0ID0gJTAiIDogOiAiciIoY3ZhbF9wYWlyKSk7CisKKyAg YXNtIHZvbGF0aWxlKCIlMCA9IHAwIiA6ICI9ciIodmFsKSk7CisgIHByZWdzLT5wcmVncy5wMCA9 IHZhbDsKKyAgYXNtIHZvbGF0aWxlKCIlMCA9IHAxIiA6ICI9ciIodmFsKSk7CisgIHByZWdzLT5w cmVncy5wMSA9IHZhbDsKKyAgYXNtIHZvbGF0aWxlKCIlMCA9IHAyIiA6ICI9ciIodmFsKSk7Cisg IHByZWdzLT5wcmVncy5wMiA9IHZhbDsKKyAgYXNtIHZvbGF0aWxlKCIlMCA9IHAzIiA6ICI9ciIo dmFsKSk7CisgIHByZWdzLT5wcmVncy5wMyA9IHZhbDsKKyAgYXNtIHZvbGF0aWxlKCIlMCA9IGM1 IiA6ICI9ciIoYzUpKTsKKyAgY2hlY2soYzUsIDB4ZGVhZGJlZWYpOworfQorCitpbnQgbWFpbigp Cit7CisgICAgaW50IGM0OworICAgIFBSZWdzIHByZWdzOworCisgICAgYzQgPSBwcmVnX2FsaWFz KDB4ZmYsIDB4MDAsIDB4ZmYsIDB4MDApOworICAgIGNoZWNrKGM0LCAweDAwZmYwMGZmKTsKKyAg ICBjNCA9IHByZWdfYWxpYXMoMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCk7CisgICAgY2hlY2soYzQs IDB4MDAwMDAwZmYpOworICAgIGM0ID0gcHJlZ19hbGlhcygweDAwLCAweGZmLCAweDAwLCAweDAw KTsKKyAgICBjaGVjayhjNCwgMHgwMDAwZmYwMCk7CisgICAgYzQgPSBwcmVnX2FsaWFzKDB4MDAs IDB4MDAsIDB4ZmYsIDB4MDApOworICAgIGNoZWNrKGM0LCAweDAwZmYwMDAwKTsKKyAgICBjNCA9 IHByZWdfYWxpYXMoMHgwMCwgMHgwMCwgMHgwMCwgMHhmZik7CisgICAgY2hlY2soYzQsIDB4ZmYw MDAwMDApOworICAgIGM0ID0gcHJlZ19hbGlhcygweGZmLCAweGZmLCAweGZmLCAweGZmKTsKKyAg ICBjaGVjayhjNCwgMHhmZmZmZmZmZik7CisKKyAgICBjNCA9IHByZWdfYWxpYXNfcGFpcigweGZm LCAweDAwLCAweGZmLCAweDAwKTsKKyAgICBjaGVjayhjNCwgMHgwMGZmMDBmZik7CisgICAgICBj NCA9IHByZWdfYWxpYXNfcGFpcigweGZmLCAweDAwLCAweDAwLCAweDAwKTsKKyAgICBjaGVjayhj NCwgMHgwMDAwMDBmZik7CisgICAgYzQgPSBwcmVnX2FsaWFzX3BhaXIoMHgwMCwgMHhmZiwgMHgw MCwgMHgwMCk7CisgICAgY2hlY2soYzQsIDB4MDAwMGZmMDApOworICAgIGM0ID0gcHJlZ19hbGlh c19wYWlyKDB4MDAsIDB4MDAsIDB4ZmYsIDB4MDApOworICAgIGNoZWNrKGM0LCAweDAwZmYwMDAw KTsKKyAgICBjNCA9IHByZWdfYWxpYXNfcGFpcigweDAwLCAweDAwLCAweDAwLCAweGZmKTsKKyAg ICBjaGVjayhjNCwgMHhmZjAwMDAwMCk7CisgICAgYzQgPSBwcmVnX2FsaWFzX3BhaXIoMHhmZiwg MHhmZiwgMHhmZiwgMHhmZik7CisgICAgY2hlY2soYzQsIDB4ZmZmZmZmZmYpOworCisgICAgY3Jl Z19hbGlhcygweDAwZmYwMGZmLCAmcHJlZ3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4MDBm ZjAwZmYpOworICAgIGNyZWdfYWxpYXMoMHgwMGZmZmYwMCwgJnByZWdzKTsKKyAgICBjaGVjayhw cmVncy5jcmVnLCAweDAwZmZmZjAwKTsKKyAgICBjcmVnX2FsaWFzKDB4MDAwMDAwMDAsICZwcmVn cyk7CisgICAgY2hlY2socHJlZ3MuY3JlZywgMHgwMDAwMDAwMCk7CisgICAgY3JlZ19hbGlhcygw eGZmMDAwMDAwLCAmcHJlZ3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4ZmYwMDAwMDApOwor ICAgIGNyZWdfYWxpYXMoMHgwMGZmMDAwMCwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVn LCAweDAwZmYwMDAwKTsKKyAgICBjcmVnX2FsaWFzKDB4MDAwMGZmMDAsICZwcmVncyk7CisgICAg Y2hlY2socHJlZ3MuY3JlZywgMHgwMDAwZmYwMCk7CisgICAgY3JlZ19hbGlhcygweDAwMDAwMGZm LCAmcHJlZ3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4MDAwMDAwZmYpOworICAgIGNyZWdf YWxpYXMoMHhmZmZmZmZmZiwgJnByZWdzKTsKKyAgICBjaGVjayhwcmVncy5jcmVnLCAweGZmZmZm ZmZmKTsKKworICAgIGNyZWdfYWxpYXNfcGFpcigweDAwZmYwMGZmLCAmcHJlZ3MpOworICAgIGNo ZWNrKHByZWdzLmNyZWcsIDB4MDBmZjAwZmYpOworICAgIGNyZWdfYWxpYXNfcGFpcigweDAwZmZm ZjAwLCAmcHJlZ3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4MDBmZmZmMDApOworICAgIGNy ZWdfYWxpYXNfcGFpcigweDAwMDAwMDAwLCAmcHJlZ3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcs IDB4MDAwMDAwMDApOworICAgIGNyZWdfYWxpYXNfcGFpcigweGZmMDAwMDAwLCAmcHJlZ3MpOwor ICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4ZmYwMDAwMDApOworICAgIGNyZWdfYWxpYXNfcGFpcigw eDAwZmYwMDAwLCAmcHJlZ3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4MDBmZjAwMDApOwor ICAgIGNyZWdfYWxpYXNfcGFpcigweDAwMDBmZjAwLCAmcHJlZ3MpOworICAgIGNoZWNrKHByZWdz LmNyZWcsIDB4MDAwMGZmMDApOworICAgIGNyZWdfYWxpYXNfcGFpcigweDAwMDAwMGZmLCAmcHJl Z3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4MDAwMDAwZmYpOworICAgIGNyZWdfYWxpYXNf cGFpcigweGZmZmZmZmZmLCAmcHJlZ3MpOworICAgIGNoZWNrKHByZWdzLmNyZWcsIDB4ZmZmZmZm ZmYpOworCisgICAgcHV0cyhlcnIgPyAiRkFJTCIgOiAiUEFTUyIpOworICAgIHJldHVybiBlcnI7 Cit9CmRpZmYgLS1naXQgYS90ZXN0cy90Y2cvaGV4YWdvbi9NYWtlZmlsZS50YXJnZXQgYi90ZXN0 cy90Y2cvaGV4YWdvbi9NYWtlZmlsZS50YXJnZXQKaW5kZXggMTBiN2M4NC4uYTU0ZTNjNyAxMDA2 NDQKLS0tIGEvdGVzdHMvdGNnL2hleGFnb24vTWFrZWZpbGUudGFyZ2V0CisrKyBiL3Rlc3RzL3Rj Zy9oZXhhZ29uL01ha2VmaWxlLnRhcmdldApAQCAtMjgsMyArMjgsMTggQEAgZW5kaWYKIAogCiBD RkxBR1MgKz0gLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcyAtV25vLXVuZGVmaW5lZC1p bnRlcm5hbAorCitIRVhfU1JDPSQoU1JDX1BBVEgpL3Rlc3RzL3RjZy9oZXhhZ29uCitWUEFUSCAr PSAkKEhFWF9TUkMpCisKK2ZpcnN0OiAkKEhFWF9TUkMpL2ZpcnN0LlMKKwkkKENDKSAtc3RhdGlj IC1tdjY3IC1ub3N0ZGxpYiAkXiAtbyAkQAorCitIRVhfVEVTVFMgPSBmaXJzdAorSEVYX1RFU1RT ICs9IG1pc2MKK0hFWF9URVNUUyArPSBwcmVnX2FsaWFzCitIRVhfVEVTVFMgKz0gZHVhbF9zdG9y ZXMKK0hFWF9URVNUUyArPSBtZW1fbm9zaHVmCitIRVhfVEVTVFMgKz0gYXRvbWljcworCitURVNU UyArPSAkKEhFWF9URVNUUykKZGlmZiAtLWdpdCBhL3Rlc3RzL3RjZy9oZXhhZ29uL2ZpcnN0LlMg Yi90ZXN0cy90Y2cvaGV4YWdvbi9maXJzdC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmU5ZjJkOTYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy90Y2cvaGV4YWdvbi9maXJz dC5TCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMSBRdWFs Y29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2RlZmluZSBTWVNf d3JpdGUJCSA2NAorI2RlZmluZSBTWVNfZXhpdF9ncm91cCAgICAgICAgICAgOTQKKyNkZWZpbmUg U1lTX2V4aXQgICAgICAgICAgICAgICAgIDkzCisKKyNkZWZpbmUgRkRfU1RET1VUICAgICAgICAg ICAgICAgIDEKKworCS50eXBlCXN0cixAb2JqZWN0CisJLnNlY3Rpb24JLnJvZGF0YQorc3RyOgor CS5zdHJpbmcJIkhlbGxvIVxuIgorCS5zaXplCXN0ciwgOAorCisudGV4dAorLmdsb2JhbCBfc3Rh cnQKK19zdGFydDoKKwlyNiA9ICNTWVNfd3JpdGUKKwlyMCA9ICNGRF9TVERPVVQKKwlyMSA9ICMj c3RyCisJcjIgPSAjNworCXRyYXAwKCMxKQorCisJcjAgPSAjMAorCXI2ID0gI1NZU19leGl0X2dy b3VwCisJdHJhcDAoIzEpCisKKy5zZWN0aW9uICIubm90ZS5BQkktdGFnIiwgImEiCisuYWxpZ24g NAorLmxvbmcgMWYgLSAwZiAgICAgICAgICAvKiBuYW1lIGxlbmd0aCAqLworLmxvbmcgM2YgLSAy ZiAgICAgICAgICAvKiBkYXRhIGxlbmd0aCAqLworLmxvbmcgIDEgICAgICAgICAgICAgICAvKiBu b3RlIHR5cGUgKi8KKworLyoKKyAqIHZlbmRvciBuYW1lIHNlZW1zIGxpa2UgdGhpcyBzaG91bGQg YmUgTVVTTCBidXQgbGxkYiBkb2Vzbid0IGFncmVlLgorICovCiswOiAgICAgLmFzY2l6ICJHTlUi CisxOiAgICAgLmFsaWduIDQKKzI6ICAgICAubG9uZyAwIC8qIGxpbnV4ICovCisgICAgICAgLmxv bmcgMywwLDAKKzM6ICAgICAuYWxpZ24gNAotLSAKMi43LjQKCg==