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 C3B69C433E0 for ; Fri, 8 Jan 2021 04:54:57 +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 5C48622E02 for ; Fri, 8 Jan 2021 04:54:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5C48622E02 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]:48450 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kxjnc-0005tL-CB for qemu-devel@archiver.kernel.org; Thu, 07 Jan 2021 23:54:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxjOt-0006oH-BB for qemu-devel@nongnu.org; Thu, 07 Jan 2021 23:29:23 -0500 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:28203) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kxjOp-00059h-GU for qemu-devel@nongnu.org; Thu, 07 Jan 2021 23:29:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1610080159; x=1641616159; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JY9APKqwwFW6QQIVwUlm2KqDq6O0G/1RptPUjIoD7HY=; b=u6TXEsaiYNzrtyARiNWDQ+27NhY7AWntMcN3QqwWQG5EBGN1Y3Uy5uh4 w43iGT9UJCRhzYNAfhdaPdUaY1ZcjsKiBB+okf1UYJeMuQdJAq8PTWko6 rEAUwoWQvrYChoxK6LUCB99N/Pp/vPM5OmW1p0GQKGwkV8cKt1J6RSb3G M=; Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by alexa-out-sd-02.qualcomm.com with ESMTP; 07 Jan 2021 20:29:15 -0800 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg04-sd.qualcomm.com with ESMTP; 07 Jan 2021 20:29:14 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 68B60FFD; Thu, 7 Jan 2021 22:29:14 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v6 21/35] Hexagon (target/hexagon) generator phase 3 - C preprocessor for decode tree Date: Thu, 7 Jan 2021 22:28:52 -0600 Message-Id: <1610080146-14968-22-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1610080146-14968-1-git-send-email-tsimpson@quicinc.com> References: <1610080146-14968-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 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, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, philmd@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" UnVuIHRoZSBDIHByZXByb2Nlc3NvciBhY3Jvc3MgdGhlIGluc3RydWN0aW9uIGRlZmluaXRpb24g YW5kIGVuY29kaW5nCmZpbGVzIHRvIGV4cGFuZCBtYWNyb3MgYW5kIHByZXBhcmUgdGhlIGlzZXQu cHkgZmlsZS4gIFRoZSByZXN1bHRpbmcKZmlsbCBjb250YWlucyBweXRob24gZGF0YSBzdHJ1Y3R1 cmVzIHVzZWQgdG8gYnVpbGQgdGhlIGRlY29kZSB0cmVlLgoKU2lnbmVkLW9mZi1ieTogVGF5bG9y IFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgpSZXZpZXdlZC1ieTogUGhpbGlwcGUgTWF0 aGlldS1EYXVkw6kgPGY0YnVnQGFtc2F0Lm9yZwotLS0KIHRhcmdldC9oZXhhZ29uL2dlbl9kZWN0 cmVlX2ltcG9ydC5jIHwgMTg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDE4NyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFy Z2V0L2hleGFnb24vZ2VuX2RlY3RyZWVfaW1wb3J0LmMKCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4 YWdvbi9nZW5fZGVjdHJlZV9pbXBvcnQuYyBiL3RhcmdldC9oZXhhZ29uL2dlbl9kZWN0cmVlX2lt cG9ydC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhOWQ5NjgKLS0tIC9k ZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9nZW5fZGVjdHJlZV9pbXBvcnQuYwpAQCAtMCww ICsxLDE4NyBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92 YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKgorICogVGhpcyBwcm9ncmFtIGdl bmVyYXRlcyB0aGUgZW5jb2RpbmdzIGZpbGUgdGhhdCBpcyBwcm9jZXNzZWQgYnkKKyAqIHRoZSBk ZWN0cmVlLnB5IHNjcmlwdCB0byBwcm9kdWNlIHRoZSBkZWNvZGluZyB0cmVlLiAgV2UgdXNlIHRo ZSBDCisgKiBwcmVwcm9jZXNzb3IgdG8gbWFuaXB1bGF0ZSB0aGUgZmlsZXMgaW1wb3J0ZWQgZnJv bSB0aGUgSGV4YWdvbgorICogYXJjaGl0ZWN0dXJlIGxpYnJhcnkuCisgKi8KKyNpbmNsdWRlICJx ZW11L29zZGVwLmgiCisjaW5jbHVkZSAib3Bjb2Rlcy5oIgorCisjZGVmaW5lIFNUUklOR0laRShY KSAgICAjWAorCitjb25zdCBjaGFyICogY29uc3Qgb3Bjb2RlX25hbWVzW10gPSB7CisjZGVmaW5l IE9QQ09ERShJSUQpIFNUUklOR0laRShJSUQpCisjaW5jbHVkZSAib3Bjb2Rlc19kZWZfZ2VuZXJh dGVkLmgiCisgICAgTlVMTAorI3VuZGVmIE9QQ09ERQorfTsKKworLyoKKyAqIFByb2Nlc3MgdGhl IGluc3RydWN0aW9uIGRlZmluaXRpb25zCisgKiAgICAgU2NhbGFyIGNvcmUgaW5zdHJ1Y3Rpb25z IGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtCisgKiAgICAgICAgIFE2SU5TTihBMl9hZGQsIlJkMzI9 YWRkKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyAqICAgICAgICAgIkFkZCAzMi1iaXQgcmVnaXN0 ZXJzIiwKKyAqICAgICAgICAgeyBSZFY9UnNWK1J0Vjt9KQorICovCitjb25zdCBjaGFyICogY29u c3Qgb3Bjb2RlX3N5bnRheFtYWF9MQVNUX09QQ09ERV0gPSB7CisjZGVmaW5lIFE2SU5TTihUQUcs IEJFSCwgQVRUUklCUywgREVTQ1IsIFNFTSkgXAorICAgW1RBR10gPSBCRUgsCisjZGVmaW5lIEVY VElOU04oVEFHLCBCRUgsIEFUVFJJQlMsIERFU0NSLCBTRU0pIFwKKyAgIFtUQUddID0gQkVILAor I2luY2x1ZGUgImltcG9ydGVkL2FsbGlkZWZzLmRlZiIKKyN1bmRlZiBRNklOU04KKyN1bmRlZiBF WFRJTlNOCit9OworCitjb25zdCBjaGFyICogY29uc3Qgb3Bjb2RlX3JyZWdzW10gPSB7CisjZGVm aW5lIFJFR0lORk8oVEFHLCBSRUdJTkZPLCBSUkVHUywgV1JFR1MpIFJSRUdTLAorI2RlZmluZSBJ TU1JTkZPKFRBRywgU0lHTiwgU0laRSwgU0hBTVQsIFNJR04yLCBTSVpFMiwgU0hBTVQyKSAgLyog bm90aGluZyAqLworI2luY2x1ZGUgIm9wX3JlZ3NfZ2VuZXJhdGVkLmgiCisgICAgTlVMTAorI3Vu ZGVmIFJFR0lORk8KKyN1bmRlZiBJTU1JTkZPCit9OworCitjb25zdCBjaGFyICogY29uc3Qgb3Bj b2RlX3dyZWdzW10gPSB7CisjZGVmaW5lIFJFR0lORk8oVEFHLCBSRUdJTkZPLCBSUkVHUywgV1JF R1MpIFdSRUdTLAorI2RlZmluZSBJTU1JTkZPKFRBRywgU0lHTiwgU0laRSwgU0hBTVQsIFNJR04y LCBTSVpFMiwgU0hBTVQyKSAgLyogbm90aGluZyAqLworI2luY2x1ZGUgIm9wX3JlZ3NfZ2VuZXJh dGVkLmgiCisgICAgTlVMTAorI3VuZGVmIFJFR0lORk8KKyN1bmRlZiBJTU1JTkZPCit9OworCitj b25zdCBPcGNvZGVFbmNvZGluZyBvcGNvZGVfZW5jb2RpbmdzW10gPSB7CisjZGVmaW5lIERFRl9F TkMzMihUQUcsIEVOQ1NUUikgXAorICAgIFtUQUddID0geyAuZW5jb2RpbmcgPSBFTkNTVFIgfSwK KyNkZWZpbmUgREVGX0VOQ19TVUJJTlNOKFRBRywgQ0xBU1MsIEVOQ1NUUikgXAorICAgIFtUQUdd ID0geyAuZW5jb2RpbmcgPSBFTkNTVFIsIC5lbmNfY2xhc3MgPSBDTEFTUyB9LAorI2RlZmluZSBE RUZfRVhUX0VOQyhUQUcsIENMQVNTLCBFTkNTVFIpIFwKKyAgICBbVEFHXSA9IHsgLmVuY29kaW5n ID0gRU5DU1RSLCAuZW5jX2NsYXNzID0gQ0xBU1MgfSwKKyNpbmNsdWRlICJpbXBvcnRlZC9lbmNv ZGUuZGVmIgorI3VuZGVmIERFRl9FTkMzMgorI3VuZGVmIERFRl9FTkNfU1VCSU5TTgorI3VuZGVm IERFRl9FWFRfRU5DCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG9wY29kZV9lbmNf Y2xhc3NfbmFtZXNbWFhfTEFTVF9FTkNfQ0xBU1NdID0geworICAgICJOT1JNQUwiLAorICAgICIx NkJJVCIsCisgICAgIlNVQklOU05fQSIsCisgICAgIlNVQklOU05fTDEiLAorICAgICJTVUJJTlNO X0wyIiwKKyAgICAiU1VCSU5TTl9TMSIsCisgICAgIlNVQklOU05fUzIiLAorICAgICJFWFRfbm9l eHQiLAorICAgICJFWFRfbW12ZWMiLAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmdldF9vcGNv ZGVfZW5jKGludCBvcGNvZGUpCit7CisgICAgY29uc3QgY2hhciAqdG1wID0gb3Bjb2RlX2VuY29k aW5nc1tvcGNvZGVdLmVuY29kaW5nOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICB0 bXAgPSAiTUlTU0lORyBFTkNPRElORyI7CisgICAgfQorICAgIHJldHVybiB0bXA7Cit9CisKK3N0 YXRpYyBjb25zdCBjaGFyICpnZXRfb3Bjb2RlX2VuY19jbGFzcyhpbnQgb3Bjb2RlKQoreworICAg IHJldHVybiBvcGNvZGVfZW5jX2NsYXNzX25hbWVzW29wY29kZV9lbmNvZGluZ3Nbb3Bjb2RlXS5l bmNfY2xhc3NdOworfQorCitzdGF0aWMgdm9pZCBnZW5faXNldF90YWJsZShGSUxFICpvdXQpCit7 CisgICAgaW50IGk7CisKKyAgICBmcHJpbnRmKG91dCwgImlzZXQgPSB7XG4iKTsKKyAgICBmb3Ig KGkgPSAwOyBpIDwgWFhfTEFTVF9PUENPREU7IGkrKykgeworICAgICAgICBmcHJpbnRmKG91dCwg Ilx0XCclc1wnIDoge1xuIiwgb3Bjb2RlX25hbWVzW2ldKTsKKyAgICAgICAgZnByaW50ZihvdXQs ICJcdFx0XCd0YWdcJyA6IFwnJXNcJyxcbiIsIG9wY29kZV9uYW1lc1tpXSk7CisgICAgICAgIGZw cmludGYob3V0LCAiXHRcdFwnc3ludGF4XCcgOiBcJyVzXCcsXG4iLCBvcGNvZGVfc3ludGF4W2ld KTsKKyAgICAgICAgZnByaW50ZihvdXQsICJcdFx0XCdycmVnc1wnIDogXCclc1wnLFxuIiwgb3Bj b2RlX3JyZWdzW2ldKTsKKyAgICAgICAgZnByaW50ZihvdXQsICJcdFx0XCd3cmVnc1wnIDogXCcl c1wnLFxuIiwgb3Bjb2RlX3dyZWdzW2ldKTsKKyAgICAgICAgZnByaW50ZihvdXQsICJcdFx0XCdl bmNcJyA6IFwnJXNcJyxcbiIsIGdldF9vcGNvZGVfZW5jKGkpKTsKKyAgICAgICAgZnByaW50Zihv dXQsICJcdFx0XCdlbmNfY2xhc3NcJyA6IFwnJXNcJyxcbiIsIGdldF9vcGNvZGVfZW5jX2NsYXNz KGkpKTsKKyAgICAgICAgZnByaW50ZihvdXQsICJcdH0sXG4iKTsKKyAgICB9CisgICAgZnByaW50 ZihvdXQsICJ9O1xuXG4iKTsKK30KKworc3RhdGljIHZvaWQgZ2VuX3RhZ3NfbGlzdChGSUxFICpv dXQpCit7CisgICAgaW50IGk7CisKKyAgICBmcHJpbnRmKG91dCwgInRhZ3MgPSBbXG4iKTsKKyAg ICBmb3IgKGkgPSAwOyBpIDwgWFhfTEFTVF9PUENPREU7IGkrKykgeworICAgICAgICBmcHJpbnRm KG91dCwgIlx0XCclc1wnLFxuIiwgb3Bjb2RlX25hbWVzW2ldKTsKKyAgICB9CisgICAgZnByaW50 ZihvdXQsICJdO1xuXG4iKTsKK30KKworc3RhdGljIHZvaWQgZ2VuX2VuY19leHRfc3BhY2VzX3Rh YmxlKEZJTEUgKm91dCkKK3sKKyAgICBmcHJpbnRmKG91dCwgImVuY19leHRfc3BhY2VzID0ge1xu Iik7CisjZGVmaW5lIERFRl9FWFRfU1BBQ0UoU1BBQ0VJRCwgRU5DU1RSKSBcCisgICAgZnByaW50 ZihvdXQsICJcdFwnJXNcJyA6IFwnJXNcJyxcbiIsICNTUEFDRUlELCBFTkNTVFIpOworI2luY2x1 ZGUgImltcG9ydGVkL2VuY29kZS5kZWYiCisjdW5kZWYgREVGX0VYVF9TUEFDRQorICAgIGZwcmlu dGYob3V0LCAifTtcblxuIik7Cit9CisKK3N0YXRpYyB2b2lkIGdlbl9zdWJpbnNuX2dyb3VwaW5n c190YWJsZShGSUxFICpvdXQpCit7CisgICAgZnByaW50ZihvdXQsICJzdWJpbnNuX2dyb3VwaW5n cyA9IHtcbiIpOworI2RlZmluZSBERUZfUEFDS0VEMzIoVEFHLCBUWVBFQSwgVFlQRUIsIEVOQ1NU UikgXAorICAgIGRvIHsgXAorICAgICAgICBmcHJpbnRmKG91dCwgIlx0XCclc1wnIDoge1xuIiwg I1RBRyk7IFwKKyAgICAgICAgZnByaW50ZihvdXQsICJcdFx0XCduYW1lXCcgOiBcJyVzXCcsXG4i LCAjVEFHKTsgXAorICAgICAgICBmcHJpbnRmKG91dCwgIlx0XHRcJ2NsYXNzX2FcJyA6IFwnJXNc JyxcbiIsICNUWVBFQSk7IFwKKyAgICAgICAgZnByaW50ZihvdXQsICJcdFx0XCdjbGFzc19iXCcg OiBcJyVzXCcsXG4iLCAjVFlQRUIpOyBcCisgICAgICAgIGZwcmludGYob3V0LCAiXHRcdFwnZW5j XCcgOiBcJyVzXCcsXG4iLCBFTkNTVFIpOyBcCisgICAgICAgIGZwcmludGYob3V0LCAiXHR9LFxu Iik7IFwKKyAgICB9IHdoaWxlICgwKTsKKyNpbmNsdWRlICJpbXBvcnRlZC9lbmNvZGUuZGVmIgor I3VuZGVmIERFRl9QQUNLRUQzMgorICAgIGZwcmludGYob3V0LCAifTtcblxuIik7Cit9CisKK2lu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgRklMRSAqb3V0ZmlsZTsKKwor ICAgIGlmIChhcmdjICE9IDIpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogZ2Vu X2RlY3RyZWVfaW1wb3J0IG91cHRwdXRmaWxlXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAg fQorICAgIG91dGZpbGUgPSBmb3Blbihhcmd2WzFdLCAidyIpOworICAgIGlmIChvdXRmaWxlID09 IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgb3BlbiAlcyBmb3Igd3Jp dGluZ1xuIiwgYXJndlsxXSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGdlbl9p c2V0X3RhYmxlKG91dGZpbGUpOworICAgIGdlbl90YWdzX2xpc3Qob3V0ZmlsZSk7CisgICAgZ2Vu X2VuY19leHRfc3BhY2VzX3RhYmxlKG91dGZpbGUpOworICAgIGdlbl9zdWJpbnNuX2dyb3VwaW5n c190YWJsZShvdXRmaWxlKTsKKworICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICByZXR1cm4gMDsK K30KLS0gCjIuNy40Cgo=