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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 7F05CC4725D for ; Mon, 22 Jan 2024 06:37:35 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rRnuU-0003AQ-KL; Mon, 22 Jan 2024 01:35:54 -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 1rRnuA-0002tP-Eg for qemu-devel@nongnu.org; Mon, 22 Jan 2024 01:35:34 -0500 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rRnu6-0005iI-B5 for qemu-devel@nongnu.org; Mon, 22 Jan 2024 01:35:34 -0500 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 40M5FcZ8019784; Mon, 22 Jan 2024 06:35:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s= qcppdkim1; bh=v1oLY4QoRyyhleKTVYJIocBbw2t6NPj5DhOjEOB+LBM=; b=pp Gn+alX05yuYIS/RQBSV4z/9XZHWrCtdC1d0MGWXFIURUcCZiMkcgReh92zzAPNsv oZMjIPJGq6WUHIh2sCgouS2robHidxNBJpptArXMf1L94pzZtCP6/Yxz3Q6SJT9/ LYXreWCjXVqH5Z/VsVudeV/J4i2zmPDI/hYTsq0BvqEqQWyoeBY0H+u+Ha/G4nxd FedVsURbdYTt2wbKs80djLVxZk3MeNKM0FJzn0G9rfWbxbDE0Jr4cKivIfsl0PsI oBErvt3Kd0w+ZglBSQBQmNRjglDvOsNQqxK1PVkIh8/aHyYqKoL28rS4kd/xmCUo Azx8d9IQGR9PDU3YE7Pw== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3vr6jbu3r8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Jan 2024 06:35:28 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 40M6ZQ4T004566 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Jan 2024 06:35:27 GMT Received: from hu-bcain-lv.qualcomm.com (10.49.16.6) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Sun, 21 Jan 2024 22:35:26 -0800 From: Brian Cain To: CC: , , , , , , , , , , Subject: [PULL 06/15] Hexagon (target/hexagon) Make generators object oriented - gen_helper_funcs Date: Sun, 21 Jan 2024 22:34:52 -0800 Message-ID: <20240122063501.782041-7-bcain@quicinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240122063501.782041-1-bcain@quicinc.com> References: <20240122063501.782041-1-bcain@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: I0NnciCcy5i72Q28Hl2KGBxP5aQZjVoa X-Proofpoint-ORIG-GUID: I0NnciCcy5i72Q28Hl2KGBxP5aQZjVoa X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-21_04,2024-01-19_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 mlxscore=0 bulkscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 spamscore=0 mlxlogscore=790 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2401220046 Received-SPF: pass client-ip=205.220.180.131; envelope-from=bcain@quicinc.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org RnJvbTogVGF5bG9yIFNpbXBzb24gPGx0YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KClNpZ25lZC1v ZmYtYnk6IFRheWxvciBTaW1wc29uIDxsdGF5bG9yc2ltcHNvbkBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBCcmlhbiBDYWluIDxiY2FpbkBxdWljaW5jLmNvbT4KTWVzc2FnZS1JZDogPDIwMjMxMjEw MjIwNzEyLjQ5MTQ5NC01LWx0YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTog QnJpYW4gQ2FpbiA8YmNhaW5AcXVpY2luYy5jb20+Ci0tLQogdGFyZ2V0L2hleGFnb24vZ2VuX2hl bHBlcl9mdW5jcy5weSB8IDM3MCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdGFyZ2V0 L2hleGFnb24vaGV4X2NvbW1vbi5weSAgICAgICB8ICA0OCArKystCiAyIGZpbGVzIGNoYW5nZWQs IDEwNCBpbnNlcnRpb25zKCspLCAzMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0 L2hleGFnb24vZ2VuX2hlbHBlcl9mdW5jcy5weSBiL3RhcmdldC9oZXhhZ29uL2dlbl9oZWxwZXJf ZnVuY3MucHkKaW5kZXggY2UyMWQzYjY4OC4uOWNjM2Q2OWM0OSAxMDA3NTUKLS0tIGEvdGFyZ2V0 L2hleGFnb24vZ2VuX2hlbHBlcl9mdW5jcy5weQorKysgYi90YXJnZXQvaGV4YWdvbi9nZW5faGVs cGVyX2Z1bmNzLnB5CkBAIC0yMywxODEgKzIzLDE0IEBACiBpbXBvcnQgaGV4X2NvbW1vbgogCiAK LSMjCi0jIyBIZWxwZXJzIGZvciBnZW5faGVscGVyX2Z1bmN0aW9uCi0jIwotZGVmIGdlbl9kZWNs X2VhKGYpOgotICAgIGYud3JpdGUoIiAgICB1aW50MzJfdCBFQTtcbiIpCi0KLQotZGVmIGdlbl9o ZWxwZXJfcmV0dXJuX3R5cGUoZiwgcmVndHlwZSwgcmVnaWQsIHJlZ25vKToKLSAgICBpZiByZWdu byA+IDE6Ci0gICAgICAgIGYud3JpdGUoIiwgIikKLSAgICBmLndyaXRlKCJpbnQzMl90IikKLQot Ci1kZWYgZ2VuX2hlbHBlcl9yZXR1cm5fdHlwZV9wYWlyKGYsIHJlZ3R5cGUsIHJlZ2lkLCByZWdu byk6Ci0gICAgaWYgcmVnbm8gPiAxOgotICAgICAgICBmLndyaXRlKCIsICIpCi0gICAgZi53cml0 ZSgiaW50NjRfdCIpCi0KLQotZGVmIGdlbl9oZWxwZXJfYXJnKGYsIHJlZ3R5cGUsIHJlZ2lkLCBy ZWdubyk6Ci0gICAgaWYgcmVnbm8gPiAwOgotICAgICAgICBmLndyaXRlKCIsICIpCi0gICAgZi53 cml0ZShmImludDMyX3Qge3JlZ3R5cGV9e3JlZ2lkfVYiKQotCi0KLWRlZiBnZW5faGVscGVyX2Fy Z19uZXcoZiwgcmVndHlwZSwgcmVnaWQsIHJlZ25vKToKLSAgICBpZiByZWdubyA+PSAwOgotICAg ICAgICBmLndyaXRlKCIsICIpCi0gICAgZi53cml0ZShmImludDMyX3Qge3JlZ3R5cGV9e3JlZ2lk fU4iKQotCi0KLWRlZiBnZW5faGVscGVyX2FyZ19wYWlyKGYsIHJlZ3R5cGUsIHJlZ2lkLCByZWdu byk6Ci0gICAgaWYgcmVnbm8gPj0gMDoKLSAgICAgICAgZi53cml0ZSgiLCAiKQotICAgIGYud3Jp dGUoZiJpbnQ2NF90IHtyZWd0eXBlfXtyZWdpZH1WIikKLQotCi1kZWYgZ2VuX2hlbHBlcl9hcmdf ZXh0KGYsIHJlZ3R5cGUsIHJlZ2lkLCByZWdubyk6Ci0gICAgaWYgcmVnbm8gPiAwOgotICAgICAg ICBmLndyaXRlKCIsICIpCi0gICAgZi53cml0ZShmInZvaWQgKntyZWd0eXBlfXtyZWdpZH1WX3Zv aWQiKQotCi0KLWRlZiBnZW5faGVscGVyX2FyZ19leHRfcGFpcihmLCByZWd0eXBlLCByZWdpZCwg cmVnbm8pOgotICAgIGlmIHJlZ25vID4gMDoKLSAgICAgICAgZi53cml0ZSgiLCAiKQotICAgIGYu d3JpdGUoZiJ2b2lkICp7cmVndHlwZX17cmVnaWR9Vl92b2lkIikKLQotCi1kZWYgZ2VuX2hlbHBl cl9hcmdfb3BuKGYsIHJlZ3R5cGUsIHJlZ2lkLCBpLCB0YWcpOgotICAgIGlmIGhleF9jb21tb24u aXNfcGFpcihyZWdpZCk6Ci0gICAgICAgIGlmIGhleF9jb21tb24uaXNfaHZ4X3JlZyhyZWd0eXBl KToKLSAgICAgICAgICAgIGdlbl9oZWxwZXJfYXJnX2V4dF9wYWlyKGYsIHJlZ3R5cGUsIHJlZ2lk LCBpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ2VuX2hlbHBlcl9hcmdfcGFpcihmLCBy ZWd0eXBlLCByZWdpZCwgaSkKLSAgICBlbGlmIGhleF9jb21tb24uaXNfc2luZ2xlKHJlZ2lkKToK LSAgICAgICAgaWYgaGV4X2NvbW1vbi5pc19vbGRfdmFsKHJlZ3R5cGUsIHJlZ2lkLCB0YWcpOgot ICAgICAgICAgICAgaWYgaGV4X2NvbW1vbi5pc19odnhfcmVnKHJlZ3R5cGUpOgotICAgICAgICAg ICAgICAgIGdlbl9oZWxwZXJfYXJnX2V4dChmLCByZWd0eXBlLCByZWdpZCwgaSkKLSAgICAgICAg ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZ2VuX2hlbHBlcl9hcmcoZiwgcmVndHlwZSwgcmVn aWQsIGkpCi0gICAgICAgIGVsaWYgaGV4X2NvbW1vbi5pc19uZXdfdmFsKHJlZ3R5cGUsIHJlZ2lk LCB0YWcpOgotICAgICAgICAgICAgZ2VuX2hlbHBlcl9hcmdfbmV3KGYsIHJlZ3R5cGUsIHJlZ2lk LCBpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaGV4X2NvbW1vbi5iYWRfcmVnaXN0ZXIo cmVndHlwZSwgcmVnaWQpCi0gICAgZWxzZToKLSAgICAgICAgaGV4X2NvbW1vbi5iYWRfcmVnaXN0 ZXIocmVndHlwZSwgcmVnaWQpCi0KLQotZGVmIGdlbl9oZWxwZXJfYXJnX2ltbShmLCBpbW1sZXR0 KToKLSAgICBmLndyaXRlKGYiLCBpbnQzMl90IHtoZXhfY29tbW9uLmltbV9uYW1lKGltbWxldHQp fSIpCi0KLQotZGVmIGdlbl9oZWxwZXJfZGVzdF9kZWNsKGYsIHJlZ3R5cGUsIHJlZ2lkLCByZWdu bywgc3ViZmllbGQ9IiIpOgotICAgIGYud3JpdGUoZiIgICAgaW50MzJfdCB7cmVndHlwZX17cmVn aWR9VntzdWJmaWVsZH0gPSAwO1xuIikKLQotCi1kZWYgZ2VuX2hlbHBlcl9kZXN0X2RlY2xfcGFp cihmLCByZWd0eXBlLCByZWdpZCwgcmVnbm8sIHN1YmZpZWxkPSIiKToKLSAgICBmLndyaXRlKGYi ICAgIGludDY0X3Qge3JlZ3R5cGV9e3JlZ2lkfVZ7c3ViZmllbGR9ID0gMDtcbiIpCi0KLQotZGVm IGdlbl9oZWxwZXJfZGVzdF9kZWNsX2V4dChmLCByZWd0eXBlLCByZWdpZCk6Ci0gICAgaWYgcmVn dHlwZSA9PSAiUSI6Ci0gICAgICAgIGYud3JpdGUoCi0gICAgICAgICAgICBmIiAgICAvKiB7cmVn dHlwZX17cmVnaWR9ViBpcyAqKE1NUVJlZyAqKSIgZiIoe3JlZ3R5cGV9e3JlZ2lkfVZfdm9pZCkg Ki9cbiIKLSAgICAgICAgKQotICAgIGVsc2U6Ci0gICAgICAgIGYud3JpdGUoCi0gICAgICAgICAg ICBmIiAgICAvKiB7cmVndHlwZX17cmVnaWR9ViBpcyAqKE1NVmVjdG9yICopIgotICAgICAgICAg ICAgZiIoe3JlZ3R5cGV9e3JlZ2lkfVZfdm9pZCkgKi9cbiIKLSAgICAgICAgKQotCi0KLWRlZiBn ZW5faGVscGVyX2Rlc3RfZGVjbF9leHRfcGFpcihmLCByZWd0eXBlLCByZWdpZCwgcmVnbm8pOgot ICAgIGYud3JpdGUoCi0gICAgICAgIGYiICAgIC8qIHtyZWd0eXBlfXtyZWdpZH1WIGlzICooTU1W ZWN0b3JQYWlyICopKSIKLSAgICAgICAgZiJ7cmVndHlwZX17cmVnaWR9Vl92b2lkKSAqL1xuIgot ICAgICkKLQotCi1kZWYgZ2VuX2hlbHBlcl9kZXN0X2RlY2xfb3BuKGYsIHJlZ3R5cGUsIHJlZ2lk LCBpKToKLSAgICBpZiBoZXhfY29tbW9uLmlzX3BhaXIocmVnaWQpOgotICAgICAgICBpZiBoZXhf Y29tbW9uLmlzX2h2eF9yZWcocmVndHlwZSk6Ci0gICAgICAgICAgICBnZW5faGVscGVyX2Rlc3Rf ZGVjbF9leHRfcGFpcihmLCByZWd0eXBlLCByZWdpZCwgaSkKLSAgICAgICAgZWxzZToKLSAgICAg ICAgICAgIGdlbl9oZWxwZXJfZGVzdF9kZWNsX3BhaXIoZiwgcmVndHlwZSwgcmVnaWQsIGkpCi0g ICAgZWxpZiBoZXhfY29tbW9uLmlzX3NpbmdsZShyZWdpZCk6Ci0gICAgICAgIGlmIGhleF9jb21t b24uaXNfaHZ4X3JlZyhyZWd0eXBlKToKLSAgICAgICAgICAgIGdlbl9oZWxwZXJfZGVzdF9kZWNs X2V4dChmLCByZWd0eXBlLCByZWdpZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGdlbl9o ZWxwZXJfZGVzdF9kZWNsKGYsIHJlZ3R5cGUsIHJlZ2lkLCBpKQotICAgIGVsc2U6Ci0gICAgICAg IGhleF9jb21tb24uYmFkX3JlZ2lzdGVyKHJlZ3R5cGUsIHJlZ2lkKQotCi0KLWRlZiBnZW5faGVs cGVyX3NyY192YXJfZXh0KGYsIHJlZ3R5cGUsIHJlZ2lkKToKLSAgICBpZiByZWd0eXBlID09ICJR IjoKLSAgICAgICAgZi53cml0ZSgKLSAgICAgICAgICAgIGYiICAgIC8qIHtyZWd0eXBlfXtyZWdp ZH1WIGlzICooTU1RUmVnICopIiBmIih7cmVndHlwZX17cmVnaWR9Vl92b2lkKSAqL1xuIgotICAg ICAgICApCi0gICAgZWxzZToKLSAgICAgICAgZi53cml0ZSgKLSAgICAgICAgICAgIGYiICAgIC8q IHtyZWd0eXBlfXtyZWdpZH1WIGlzICooTU1WZWN0b3IgKikiCi0gICAgICAgICAgICBmIih7cmVn dHlwZX17cmVnaWR9Vl92b2lkKSAqL1xuIgotICAgICAgICApCi0KLQotZGVmIGdlbl9oZWxwZXJf c3JjX3Zhcl9leHRfcGFpcihmLCByZWd0eXBlLCByZWdpZCwgcmVnbm8pOgotICAgIGYud3JpdGUo Ci0gICAgICAgIGYiICAgIC8qIHtyZWd0eXBlfXtyZWdpZH1We3JlZ25vfSBpcyAqKE1NVmVjdG9y UGFpciAqKSIKLSAgICAgICAgZiIoe3JlZ3R5cGV9e3JlZ2lkfVZ7cmVnbm99X3ZvaWQpICovXG4i Ci0gICAgKQotCi0KLWRlZiBnZW5faGVscGVyX3JldHVybihmLCByZWd0eXBlLCByZWdpZCwgcmVn bm8pOgotICAgIGYud3JpdGUoZiIgICAgcmV0dXJuIHtyZWd0eXBlfXtyZWdpZH1WO1xuIikKLQot Ci1kZWYgZ2VuX2hlbHBlcl9yZXR1cm5fcGFpcihmLCByZWd0eXBlLCByZWdpZCwgcmVnbm8pOgot ICAgIGYud3JpdGUoZiIgICAgcmV0dXJuIHtyZWd0eXBlfXtyZWdpZH1WO1xuIikKLQotCi1kZWYg Z2VuX2hlbHBlcl9kc3Rfd3JpdGVfZXh0KGYsIHJlZ3R5cGUsIHJlZ2lkKToKLSAgICByZXR1cm4K LQotCi1kZWYgZ2VuX2hlbHBlcl9kc3Rfd3JpdGVfZXh0X3BhaXIoZiwgcmVndHlwZSwgcmVnaWQp OgotICAgIHJldHVybgotCi0KLWRlZiBnZW5faGVscGVyX3JldHVybl9vcG4oZiwgcmVndHlwZSwg cmVnaWQsIGkpOgotICAgIGlmIGhleF9jb21tb24uaXNfcGFpcihyZWdpZCk6Ci0gICAgICAgIGlm IGhleF9jb21tb24uaXNfaHZ4X3JlZyhyZWd0eXBlKToKLSAgICAgICAgICAgIGdlbl9oZWxwZXJf ZHN0X3dyaXRlX2V4dF9wYWlyKGYsIHJlZ3R5cGUsIHJlZ2lkKQotICAgICAgICBlbHNlOgotICAg ICAgICAgICAgZ2VuX2hlbHBlcl9yZXR1cm5fcGFpcihmLCByZWd0eXBlLCByZWdpZCwgaSkKLSAg ICBlbGlmIGhleF9jb21tb24uaXNfc2luZ2xlKHJlZ2lkKToKLSAgICAgICAgaWYgaGV4X2NvbW1v bi5pc19odnhfcmVnKHJlZ3R5cGUpOgotICAgICAgICAgICAgZ2VuX2hlbHBlcl9kc3Rfd3JpdGVf ZXh0KGYsIHJlZ3R5cGUsIHJlZ2lkKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ2VuX2hl bHBlcl9yZXR1cm4oZiwgcmVndHlwZSwgcmVnaWQsIGkpCi0gICAgZWxzZToKLSAgICAgICAgaGV4 X2NvbW1vbi5iYWRfcmVnaXN0ZXIocmVndHlwZSwgcmVnaWQpCi0KLQogIyMKICMjIEdlbmVyYXRl IHRoZSBUQ0cgY29kZSB0byBjYWxsIHRoZSBoZWxwZXIKICMjICAgICBGb3IgQTJfYWRkOiBSZDMy PWFkZChSczMyLFJ0MzIpLCB7IFJkVj1Sc1YrUnRWO30KICMjICAgICBXZSBwcm9kdWNlOgogIyMg ICAgICAgaW50MzJfdCBIRUxQRVIoQTJfYWRkKShDUFVIZXhhZ29uU3RhdGUgKmVudiwgaW50MzJf dCBSc1YsIGludDMyX3QgUnRWKQogIyMgICAgICAgewotIyMgICAgICAgICAgIHVpbnQzMl90IHNs b3QgX19hdHRyaWJ1dGVfXyh1bnVzZWQpKSA9IDQ7CiAjIyAgICAgICAgICAgaW50MzJfdCBSZFYg PSAwOwogIyMgICAgICAgICAgIHsgUmRWPVJzVitSdFY7fQotIyMgICAgICAgICAgIENPVU5UX0hF TFBFUihBMl9hZGQpOwogIyMgICAgICAgICAgIHJldHVybiBSZFY7CiAjIyAgICAgICB9CiAjIwpA QCAtMjA1LDE1MSArMzgsNjcgQEAgZGVmIGdlbl9oZWxwZXJfZnVuY3Rpb24oZiwgdGFnLCB0YWdy ZWdzLCB0YWdpbW1zKToKICAgICByZWdzID0gdGFncmVnc1t0YWddCiAgICAgaW1tcyA9IHRhZ2lt bXNbdGFnXQogCi0gICAgbnVtcmVzdWx0cyA9IDAKLSAgICBudW1zY2FsYXJyZXN1bHRzID0gMAot ICAgIG51bXNjYWxhcnJlYWR3cml0ZSA9IDAKLSAgICBmb3IgcmVndHlwZSwgcmVnaWQgaW4gcmVn czoKLSAgICAgICAgaWYgaGV4X2NvbW1vbi5pc193cml0dGVuKHJlZ2lkKToKLSAgICAgICAgICAg IG51bXJlc3VsdHMgKz0gMQotICAgICAgICAgICAgaWYgaGV4X2NvbW1vbi5pc19zY2FsYXJfcmVn KHJlZ3R5cGUpOgotICAgICAgICAgICAgICAgIG51bXNjYWxhcnJlc3VsdHMgKz0gMQotICAgICAg ICBpZiBoZXhfY29tbW9uLmlzX3JlYWR3cml0ZShyZWdpZCk6Ci0gICAgICAgICAgICBpZiBoZXhf Y29tbW9uLmlzX3NjYWxhcl9yZWcocmVndHlwZSk6Ci0gICAgICAgICAgICAgICAgbnVtc2NhbGFy cmVhZHdyaXRlICs9IDEKLQotICAgIGlmIG51bXNjYWxhcnJlc3VsdHMgPiAxOgotICAgICAgICAj IyBUaGUgaGVscGVyIGlzIGJvZ3VzIHdoZW4gdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSByZXN1bHQK LSAgICAgICAgZi53cml0ZSgKLSAgICAgICAgICAgIGYidm9pZCBIRUxQRVIoe3RhZ30pKENQVUhl eGFnb25TdGF0ZSAqZW52KSAiIGYie3sgQk9HVVNfSEVMUEVSKHt0YWd9KTsgfX1cbiIKLSAgICAg ICAgKQotICAgIGVsc2U6Ci0gICAgICAgICMjIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rp b24gaXMgdGhlIHR5cGUgb2YgdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgICMjIHJlZ2lzdGVyIChp ZiBzY2FsYXIpCi0gICAgICAgIGkgPSAwCi0gICAgICAgIGZvciByZWd0eXBlLCByZWdpZCBpbiBy ZWdzOgotICAgICAgICAgICAgaWYgaGV4X2NvbW1vbi5pc193cml0dGVuKHJlZ2lkKToKLSAgICAg ICAgICAgICAgICBpZiBoZXhfY29tbW9uLmlzX3BhaXIocmVnaWQpOgotICAgICAgICAgICAgICAg ICAgICBpZiBoZXhfY29tbW9uLmlzX2h2eF9yZWcocmVndHlwZSk6Ci0gICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg ICAgICAgICAgICAgZ2VuX2hlbHBlcl9yZXR1cm5fdHlwZV9wYWlyKGYsIHJlZ3R5cGUsIHJlZ2lk LCBpKQotICAgICAgICAgICAgICAgIGVsaWYgaGV4X2NvbW1vbi5pc19zaW5nbGUocmVnaWQpOgot ICAgICAgICAgICAgICAgICAgICBpZiBoZXhfY29tbW9uLmlzX2h2eF9yZWcocmVndHlwZSk6Ci0g ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBlbHNl OgotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX2hlbHBlcl9yZXR1cm5fdHlwZShmLCByZWd0 eXBlLCByZWdpZCwgaSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg ICBoZXhfY29tbW9uLmJhZF9yZWdpc3RlcihyZWd0eXBlLCByZWdpZCkKLSAgICAgICAgICAgIGkg Kz0gMQotCi0gICAgICAgIGlmIG51bXNjYWxhcnJlc3VsdHMgPT0gMDoKLSAgICAgICAgICAgIGYu d3JpdGUoInZvaWQiKQotICAgICAgICBmLndyaXRlKGYiIEhFTFBFUih7dGFnfSkoQ1BVSGV4YWdv blN0YXRlICplbnYiKQotCi0gICAgICAgICMjIEFyZ3VtZW50cyBpbmNsdWRlIHRoZSB2ZWN0b3Ig ZGVzdGluYXRpb24gb3BlcmFuZHMKLSAgICAgICAgaSA9IDEKKyAgICByZXRfdHlwZSA9IGhleF9j b21tb24uaGVscGVyX3JldF90eXBlKHRhZywgcmVncykuZnVuY19hcmcKKworICAgIGRlY2xhcmVk ID0gW10KKyAgICBmb3IgYXJnIGluIGhleF9jb21tb24uaGVscGVyX2FyZ3ModGFnLCByZWdzLCBp bW1zKToKKyAgICAgICAgZGVjbGFyZWQuYXBwZW5kKGFyZy5mdW5jX2FyZykKKworICAgIGFyZ3Vt ZW50cyA9ICIsICIuam9pbihkZWNsYXJlZCkKKyAgICBmLndyaXRlKGYie3JldF90eXBlfSBIRUxQ RVIoe3RhZ30pKHthcmd1bWVudHN9KVxuIikKKyAgICBmLndyaXRlKCJ7XG4iKQorICAgIGlmIGhl eF9jb21tb24ubmVlZF9lYSh0YWcpOgorICAgICAgICBmLndyaXRlKGhleF9jb21tb24uY29kZV9m bXQoZiIiIlwKKyAgICAgICAgICAgIHVpbnQzMl90IEVBOworICAgICAgICAiIiIpKQorICAgICMj IERlY2xhcmUgdGhlIHJldHVybiB2YXJpYWJsZQorICAgIGlmIG5vdCBoZXhfY29tbW9uLmlzX3By ZWRpY2F0ZWQodGFnKToKICAgICAgICAgZm9yIHJlZ3R5cGUsIHJlZ2lkIGluIHJlZ3M6Ci0gICAg ICAgICAgICBpZiBoZXhfY29tbW9uLmlzX3dyaXR0ZW4ocmVnaWQpOgotICAgICAgICAgICAgICAg IGlmIGhleF9jb21tb24uaXNfcGFpcihyZWdpZCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGhl eF9jb21tb24uaXNfaHZ4X3JlZyhyZWd0eXBlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGdl bl9oZWxwZXJfYXJnX2V4dF9wYWlyKGYsIHJlZ3R5cGUsIHJlZ2lkLCBpKQotICAgICAgICAgICAg ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg ICAgICAgICBlbGlmIGhleF9jb21tb24uaXNfc2luZ2xlKHJlZ2lkKToKLSAgICAgICAgICAgICAg ICAgICAgaWYgaGV4X2NvbW1vbi5pc19odnhfcmVnKHJlZ3R5cGUpOgotICAgICAgICAgICAgICAg ICAgICAgICAgZ2VuX2hlbHBlcl9hcmdfZXh0KGYsIHJlZ3R5cGUsIHJlZ2lkLCBpKQotICAgICAg ICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRo ZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhleF9j b21tb24uYmFkX3JlZ2lzdGVyKHJlZ3R5cGUsIHJlZ2lkKQotICAgICAgICAgICAgICAgIGkgKz0g MQotCi0gICAgICAgICMjIEZvciBjb25kaXRpb25hbCBpbnN0cnVjdGlvbnMsIHdlIHBhc3MgaW4g dGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyCi0gICAgICAgIGlmICJBX0NPTkRFWEVDIiBpbiBoZXhf Y29tbW9uLmF0dHJpYmRpY3RbdGFnXToKLSAgICAgICAgICAgIGZvciByZWd0eXBlLCByZWdpZCBp biByZWdzOgotICAgICAgICAgICAgICAgIGlmIGhleF9jb21tb24uaXNfd3JpdGVvbmx5KHJlZ2lk KSBhbmQgbm90IGhleF9jb21tb24uaXNfaHZ4X3JlZygKLSAgICAgICAgICAgICAgICAgICAgcmVn dHlwZQotICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgICAgIGdlbl9oZWxwZXJf YXJnX29wbihmLCByZWd0eXBlLCByZWdpZCwgaSwgdGFnKQotICAgICAgICAgICAgICAgICAgICBp ICs9IDEKLQotICAgICAgICAjIyBBcmd1bWVudHMgdG8gdGhlIGhlbHBlciBmdW5jdGlvbiBhcmUg dGhlIHNvdXJjZSByZWdzIGFuZCBpbW1lZGlhdGVzCi0gICAgICAgIGZvciByZWd0eXBlLCByZWdp ZCBpbiByZWdzOgotICAgICAgICAgICAgaWYgaGV4X2NvbW1vbi5pc19yZWFkKHJlZ2lkKToKLSAg ICAgICAgICAgICAgICBpZiBoZXhfY29tbW9uLmlzX2h2eF9yZWcocmVndHlwZSkgYW5kIGhleF9j b21tb24uaXNfcmVhZHdyaXRlKHJlZ2lkKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUK LSAgICAgICAgICAgICAgICBnZW5faGVscGVyX2FyZ19vcG4oZiwgcmVndHlwZSwgcmVnaWQsIGks IHRhZykKLSAgICAgICAgICAgICAgICBpICs9IDEKLSAgICAgICAgZm9yIGltbWxldHQsIGJpdHMs IGltbXNoaWZ0IGluIGltbXM6Ci0gICAgICAgICAgICBnZW5faGVscGVyX2FyZ19pbW0oZiwgaW1t bGV0dCkKLSAgICAgICAgICAgIGkgKz0gMQotCi0gICAgICAgIGlmIGhleF9jb21tb24ubmVlZF9w a3RfaGFzX211bHRpX2NvZih0YWcpOgotICAgICAgICAgICAgZi53cml0ZSgiLCB1aW50MzJfdCBw a3RfaGFzX211bHRpX2NvZiIpCi0gICAgICAgIGlmIChoZXhfY29tbW9uLm5lZWRfcGt0X25lZWRf Y29tbWl0KHRhZykpOgotICAgICAgICAgICAgZi53cml0ZSgiLCB1aW50MzJfdCBwa3RfbmVlZF9j b21taXQiKQotCi0gICAgICAgIGlmIGhleF9jb21tb24ubmVlZF9QQyh0YWcpOgotICAgICAgICAg ICAgaWYgaSA+IDA6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiLCAiKQotICAgICAgICAgICAg Zi53cml0ZSgidGFyZ2V0X3Vsb25nIFBDIikKLSAgICAgICAgICAgIGkgKz0gMQotICAgICAgICBp ZiBoZXhfY29tbW9uLmhlbHBlcl9uZWVkc19uZXh0X1BDKHRhZyk6Ci0gICAgICAgICAgICBpZiBp ID4gMDoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCIsICIpCi0gICAgICAgICAgICBmLndyaXRl KCJ0YXJnZXRfdWxvbmcgbmV4dF9QQyIpCi0gICAgICAgICAgICBpICs9IDEKLSAgICAgICAgaWYg aGV4X2NvbW1vbi5uZWVkX3Nsb3QodGFnKToKLSAgICAgICAgICAgIGlmIGkgPiAwOgotICAgICAg ICAgICAgICAgIGYud3JpdGUoIiwgIikKLSAgICAgICAgICAgIGYud3JpdGUoInVpbnQzMl90IHNs b3R2YWwiKQotICAgICAgICAgICAgaSArPSAxCi0gICAgICAgIGlmIGhleF9jb21tb24ubmVlZF9w YXJ0MSh0YWcpOgotICAgICAgICAgICAgaWYgaSA+IDA6Ci0gICAgICAgICAgICAgICAgZi53cml0 ZSgiLCAiKQotICAgICAgICAgICAgZi53cml0ZSgidWludDMyX3QgcGFydDEiKQotICAgICAgICBm LndyaXRlKCIpXG57XG4iKQotICAgICAgICBpZiBoZXhfY29tbW9uLm5lZWRfZWEodGFnKToKLSAg ICAgICAgICAgIGdlbl9kZWNsX2VhKGYpCi0gICAgICAgICMjIERlY2xhcmUgdGhlIHJldHVybiB2 YXJpYWJsZQotICAgICAgICBpID0gMAotICAgICAgICBpZiAiQV9DT05ERVhFQyIgbm90IGluIGhl eF9jb21tb24uYXR0cmliZGljdFt0YWddOgotICAgICAgICAgICAgZm9yIHJlZ3R5cGUsIHJlZ2lk IGluIHJlZ3M6Ci0gICAgICAgICAgICAgICAgaWYgaGV4X2NvbW1vbi5pc193cml0ZW9ubHkocmVn aWQpOgotICAgICAgICAgICAgICAgICAgICBnZW5faGVscGVyX2Rlc3RfZGVjbF9vcG4oZiwgcmVn dHlwZSwgcmVnaWQsIGkpCi0gICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgICByZWcg PSBoZXhfY29tbW9uLmdldF9yZWdpc3Rlcih0YWcsIHJlZ3R5cGUsIHJlZ2lkKQorICAgICAgICAg ICAgaWYgcmVnLmlzX3dyaXRlb25seSgpIGFuZCBub3QgcmVnLmlzX2h2eF9yZWcoKToKKyAgICAg ICAgICAgICAgICBmLndyaXRlKGhleF9jb21tb24uY29kZV9mbXQoZiIiIlwKKyAgICAgICAgICAg ICAgICAgICAge3JlZy5oZWxwZXJfYXJnX3R5cGUoKX0ge3JlZy5oZWxwZXJfYXJnX25hbWUoKX0g PSAwOworICAgICAgICAgICAgICAgICIiIikpCiAKLSAgICAgICAgZm9yIHJlZ3R5cGUsIHJlZ2lk IGluIHJlZ3M6Ci0gICAgICAgICAgICBpZiBoZXhfY29tbW9uLmlzX3JlYWQocmVnaWQpOgotICAg ICAgICAgICAgICAgIGlmIGhleF9jb21tb24uaXNfcGFpcihyZWdpZCk6Ci0gICAgICAgICAgICAg ICAgICAgIGlmIGhleF9jb21tb24uaXNfaHZ4X3JlZyhyZWd0eXBlKToKLSAgICAgICAgICAgICAg ICAgICAgICAgIGdlbl9oZWxwZXJfc3JjX3Zhcl9leHRfcGFpcihmLCByZWd0eXBlLCByZWdpZCwg aSkKLSAgICAgICAgICAgICAgICBlbGlmIGhleF9jb21tb24uaXNfc2luZ2xlKHJlZ2lkKToKLSAg ICAgICAgICAgICAgICAgICAgaWYgaGV4X2NvbW1vbi5pc19odnhfcmVnKHJlZ3R5cGUpOgotICAg ICAgICAgICAgICAgICAgICAgICAgZ2VuX2hlbHBlcl9zcmNfdmFyX2V4dChmLCByZWd0eXBlLCBy ZWdpZCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBoZXhfY29t bW9uLmJhZF9yZWdpc3RlcihyZWd0eXBlLCByZWdpZCkKLQotICAgICAgICBpZiBoZXhfY29tbW9u Lm5lZWRfc2xvdCh0YWcpOgotICAgICAgICAgICAgaWYgIkFfTE9BRCIgaW4gaGV4X2NvbW1vbi5h dHRyaWJkaWN0W3RhZ106Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiICAgIGJvb2wgcGt0X2hh c19zdG9yZV9zMSA9IHNsb3R2YWwgJiAweDE7XG4iKQotICAgICAgICAgICAgZi53cml0ZSgiICAg IHVpbnQzMl90IHNsb3QgPSBzbG90dmFsID4+IDE7XG4iKQotCi0gICAgICAgIGlmICJBX0ZQT1Ai IGluIGhleF9jb21tb24uYXR0cmliZGljdFt0YWddOgotICAgICAgICAgICAgZi53cml0ZSgiICAg IGFyY2hfZnBvcF9zdGFydChlbnYpO1xuIikKLQotICAgICAgICBmLndyaXRlKGYiICAgIHtoZXhf Y29tbW9uLnNlbWRpY3RbdGFnXX1cbiIpCi0KLSAgICAgICAgaWYgIkFfRlBPUCIgaW4gaGV4X2Nv bW1vbi5hdHRyaWJkaWN0W3RhZ106Ci0gICAgICAgICAgICBmLndyaXRlKCIgICAgYXJjaF9mcG9w X2VuZChlbnYpO1xuIikKLQotICAgICAgICAjIyBTYXZlL3JldHVybiB0aGUgcmV0dXJuIHZhcmlh YmxlCi0gICAgICAgIGZvciByZWd0eXBlLCByZWdpZCBpbiByZWdzOgotICAgICAgICAgICAgaWYg aGV4X2NvbW1vbi5pc193cml0dGVuKHJlZ2lkKToKLSAgICAgICAgICAgICAgICBnZW5faGVscGVy X3JldHVybl9vcG4oZiwgcmVndHlwZSwgcmVnaWQsIGkpCi0gICAgICAgIGYud3JpdGUoIn1cblxu IikKLSAgICAgICAgIyMgRW5kIG9mIHRoZSBoZWxwZXIgZGVmaW5pdGlvbgorICAgICMjIFByaW50 IHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBIVlggcmVnaXN0ZXJzCisgICAgZm9yIHJlZ3R5cGUs IHJlZ2lkIGluIHJlZ3M6CisgICAgICAgIHJlZyA9IGhleF9jb21tb24uZ2V0X3JlZ2lzdGVyKHRh ZywgcmVndHlwZSwgcmVnaWQpCisgICAgICAgIGlmIHJlZy5pc19odnhfcmVnKCk6CisgICAgICAg ICAgICByZWcuaGVscGVyX2h2eF9kZXNjKGYpCisKKyAgICBpZiBoZXhfY29tbW9uLm5lZWRfc2xv dCh0YWcpOgorICAgICAgICBpZiAiQV9MT0FEIiBpbiBoZXhfY29tbW9uLmF0dHJpYmRpY3RbdGFn XToKKyAgICAgICAgICAgIGYud3JpdGUoaGV4X2NvbW1vbi5jb2RlX2ZtdChmIiIiXAorICAgICAg ICAgICAgICAgIGJvb2wgcGt0X2hhc19zdG9yZV9zMSA9IHNsb3R2YWwgJiAweDE7CisgICAgICAg ICAgICAiIiIpKQorICAgICAgICBmLndyaXRlKGhleF9jb21tb24uY29kZV9mbXQoZiIiIlwKKyAg ICAgICAgICAgIHVpbnQzMl90IHNsb3QgPSBzbG90dmFsID4+IDE7CisgICAgICAgICIiIikpCisK KyAgICBpZiAiQV9GUE9QIiBpbiBoZXhfY29tbW9uLmF0dHJpYmRpY3RbdGFnXToKKyAgICAgICAg Zi53cml0ZShoZXhfY29tbW9uLmNvZGVfZm10KGYiIiJcCisgICAgICAgICAgICBhcmNoX2Zwb3Bf c3RhcnQoZW52KTsKKyAgICAgICAgIiIiKSkKKworICAgIGYud3JpdGUoaGV4X2NvbW1vbi5jb2Rl X2ZtdChmIiIiXAorICAgICAgICB7aGV4X2NvbW1vbi5zZW1kaWN0W3RhZ119CisgICAgIiIiKSkK KworICAgIGlmICJBX0ZQT1AiIGluIGhleF9jb21tb24uYXR0cmliZGljdFt0YWddOgorICAgICAg ICBmLndyaXRlKGhleF9jb21tb24uY29kZV9mbXQoZiIiIlwKKyAgICAgICAgICAgIGFyY2hfZnBv cF9lbmQoZW52KTsKKyAgICAgICAgIiIiKSkKKworICAgICMjIFJldHVybiB0aGUgc2NhbGFyIHJl c3VsdAorICAgIGZvciByZWd0eXBlLCByZWdpZCBpbiByZWdzOgorICAgICAgICByZWcgPSBoZXhf Y29tbW9uLmdldF9yZWdpc3Rlcih0YWcsIHJlZ3R5cGUsIHJlZ2lkKQorICAgICAgICBpZiByZWcu aXNfd3JpdHRlbigpIGFuZCBub3QgcmVnLmlzX2h2eF9yZWcoKToKKyAgICAgICAgICAgIGYud3Jp dGUoaGV4X2NvbW1vbi5jb2RlX2ZtdChmIiIiXAorICAgICAgICAgICAgICAgIHJldHVybiB7cmVn LmhlbHBlcl9hcmdfbmFtZSgpfTsKKyAgICAgICAgICAgICIiIikpCisKKyAgICBmLndyaXRlKCJ9 XG5cbiIpCisgICAgIyMgRW5kIG9mIHRoZSBoZWxwZXIgZGVmaW5pdGlvbgogCiAKIGRlZiBtYWlu KCk6CkBAIC0zNzAsNiArMTE5LDcgQEAgZGVmIG1haW4oKToKICAgICBpZiBpc19pZGVmX3BhcnNl cl9lbmFibGVkOgogICAgICAgICBoZXhfY29tbW9uLnJlYWRfaWRlZl9wYXJzZXJfZW5hYmxlZF9m aWxlKHN5cy5hcmd2WzVdKQogICAgIGhleF9jb21tb24uY2FsY3VsYXRlX2F0dHJpYnMoKQorICAg IGhleF9jb21tb24uaW5pdF9yZWdpc3RlcnMoKQogICAgIHRhZ3JlZ3MgPSBoZXhfY29tbW9uLmdl dF90YWdyZWdzKCkKICAgICB0YWdpbW1zID0gaGV4X2NvbW1vbi5nZXRfdGFnaW1tcygpCiAKZGlm ZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2hleF9jb21tb24ucHkgYi90YXJnZXQvaGV4YWdvbi9o ZXhfY29tbW9uLnB5CmluZGV4IDJhYmQ2NTNlNmQuLmZjOWNlNGUyYjAgMTAwNzU1Ci0tLSBhL3Rh cmdldC9oZXhhZ29uL2hleF9jb21tb24ucHkKKysrIGIvdGFyZ2V0L2hleGFnb24vaGV4X2NvbW1v bi5weQpAQCAtMjc1LDEwICsyNzUsNiBAQCBkZWYgbmVlZF9QQyh0YWcpOgogICAgIHJldHVybiAi QV9JTVBMSUNJVF9SRUFEU19QQyIgaW4gYXR0cmliZGljdFt0YWddCiAKIAotZGVmIGhlbHBlcl9u ZWVkc19uZXh0X1BDKHRhZyk6Ci0gICAgcmV0dXJuICJBX0NBTEwiIGluIGF0dHJpYmRpY3RbdGFn XQotCi0KIGRlZiBuZWVkX25leHRfUEModGFnKToKICAgICByZXR1cm4gIkFfQ0FMTCIgaW4gYXR0 cmliZGljdFt0YWddCiAKQEAgLTY4MCw2ICs2NzYsMTAgQEAgZGVmIGRlY2xfdGNnKHNlbGYsIGYs IHRhZywgcmVnbm8pOgogICAgICAgICAgICAgIiIiKSkKICAgICBkZWYgbG9nX3dyaXRlKHNlbGYs IGYsIHRhZyk6CiAgICAgICAgIHBhc3MKKyAgICBkZWYgaGVscGVyX2h2eF9kZXNjKHNlbGYsIGYp OgorICAgICAgICBmLndyaXRlKGNvZGVfZm10KGYiIiJcCisgICAgICAgICAgICAvKiB7c2VsZi5y ZWdfdGNnKCl9IGlzICooTU1WZWN0b3IgKikoe3NlbGYuaGVscGVyX2FyZ19uYW1lKCl9KSAqLwor ICAgICAgICAiIiIpKQogCiBjbGFzcyBWUmVnU291cmNlKFJlZ2lzdGVyLCBIdngsIE9sZFNvdXJj ZSk6CiAgICAgZGVmIGRlY2xfdGNnKHNlbGYsIGYsIHRhZywgcmVnbm8pOgpAQCAtNjkyLDYgKzY5 MiwxMCBAQCBkZWYgZGVjbF90Y2coc2VsZiwgZiwgdGFnLCByZWdubyk6CiAgICAgICAgICAgICAg ICAgVENHdl9wdHIge3NlbGYucmVnX3RjZygpfSA9IHRjZ190ZW1wX25ld19wdHIoKTsKICAgICAg ICAgICAgICAgICB0Y2dfZ2VuX2FkZGlfcHRyKHtzZWxmLnJlZ190Y2coKX0sIHRjZ19lbnYsIHtz ZWxmLmh2eF9vZmYoKX0pOwogICAgICAgICAgICAgIiIiKSkKKyAgICBkZWYgaGVscGVyX2h2eF9k ZXNjKHNlbGYsIGYpOgorICAgICAgICBmLndyaXRlKGNvZGVfZm10KGYiIiJcCisgICAgICAgICAg ICAvKiB7c2VsZi5yZWdfdGNnKCl9IGlzICooTU1WZWN0b3IgKikoe3NlbGYuaGVscGVyX2FyZ19u YW1lKCl9KSAqLworICAgICAgICAiIiIpKQogCiBjbGFzcyBWUmVnTmV3U291cmNlKFJlZ2lzdGVy LCBIdngsIE5ld1NvdXJjZSk6CiAgICAgZGVmIGRlY2xfdGNnKHNlbGYsIGYsIHRhZywgcmVnbm8p OgpAQCAtNzAxLDYgKzcwNSwxMCBAQCBkZWYgZGVjbF90Y2coc2VsZiwgZiwgdGFnLCByZWdubyk6 CiAgICAgICAgICAgICAgICAgY29uc3QgaW50cHRyX3Qge3NlbGYuaHZ4X29mZigpfSA9CiAgICAg ICAgICAgICAgICAgICAgIGN0eF9mdXR1cmVfdnJlZ19vZmYoY3R4LCB7c2VsZi5yZWdfbnVtfSwg MSwgdHJ1ZSk7CiAgICAgICAgICAgICAiIiIpKQorICAgIGRlZiBoZWxwZXJfaHZ4X2Rlc2Moc2Vs ZiwgZik6CisgICAgICAgIGYud3JpdGUoY29kZV9mbXQoZiIiIlwKKyAgICAgICAgICAgIC8qIHtz ZWxmLnJlZ190Y2coKX0gaXMgKihNTVZlY3RvciAqKSh7c2VsZi5oZWxwZXJfYXJnX25hbWUoKX0p ICovCisgICAgICAgICIiIikpCiAKIGNsYXNzIFZSZWdSZWFkV3JpdGUoUmVnaXN0ZXIsIEh2eCwg UmVhZFdyaXRlKToKICAgICBkZWYgZGVjbF90Y2coc2VsZiwgZiwgdGFnLCByZWdubyk6CkBAIC03 MTksNiArNzI3LDEwIEBAIGRlZiBkZWNsX3RjZyhzZWxmLCBmLCB0YWcsIHJlZ25vKToKICAgICAg ICAgICAgICIiIikpCiAgICAgZGVmIGxvZ193cml0ZShzZWxmLCBmLCB0YWcpOgogICAgICAgICBw YXNzCisgICAgZGVmIGhlbHBlcl9odnhfZGVzYyhzZWxmLCBmKToKKyAgICAgICAgZi53cml0ZShj b2RlX2ZtdChmIiIiXAorICAgICAgICAgICAgLyoge3NlbGYucmVnX3RjZygpfSBpcyAqKE1NVmVj dG9yICopKHtzZWxmLmhlbHBlcl9hcmdfbmFtZSgpfSkgKi8KKyAgICAgICAgIiIiKSkKIAogY2xh c3MgVlJlZ1RtcChSZWdpc3RlciwgSHZ4LCBSZWFkV3JpdGUpOgogICAgIGRlZiBkZWNsX3RjZyhz ZWxmLCBmLCB0YWcsIHJlZ25vKToKQEAgLTczOSw2ICs3NTEsMTAgQEAgZGVmIGxvZ193cml0ZShz ZWxmLCBmLCB0YWcpOgogICAgICAgICAgICAgZ2VuX2xvZ192cmVnX3dyaXRlKGN0eCwge3NlbGYu aHZ4X29mZigpfSwge3NlbGYucmVnX251bX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAge2h2eF9uZXd2KHRhZyl9KTsKICAgICAgICAgIiIiKSkKKyAgICBkZWYgaGVscGVyX2h2eF9k ZXNjKHNlbGYsIGYpOgorICAgICAgICBmLndyaXRlKGNvZGVfZm10KGYiIiJcCisgICAgICAgICAg ICAvKiB7c2VsZi5yZWdfdGNnKCl9IGlzICooTU1WZWN0b3IgKikoe3NlbGYuaGVscGVyX2FyZ19u YW1lKCl9KSAqLworICAgICAgICAiIiIpKQogCiBjbGFzcyBWUmVnUGFpckRlc3QoUmVnaXN0ZXIs IEh2eCwgRGVzdCk6CiAgICAgZGVmIGRlY2xfdGNnKHNlbGYsIGYsIHRhZywgcmVnbm8pOgpAQCAt NzU0LDYgKzc3MCwxMCBAQCBkZWYgZGVjbF90Y2coc2VsZiwgZiwgdGFnLCByZWdubyk6CiAgICAg ICAgICAgICAiIiIpKQogICAgIGRlZiBsb2dfd3JpdGUoc2VsZiwgZiwgdGFnKToKICAgICAgICAg cGFzcworICAgIGRlZiBoZWxwZXJfaHZ4X2Rlc2Moc2VsZiwgZik6CisgICAgICAgIGYud3JpdGUo Y29kZV9mbXQoZiIiIlwKKyAgICAgICAgICAgIC8qIHtzZWxmLnJlZ190Y2coKX0gaXMgKihNTVZl Y3RvclBhaXIgKikoe3NlbGYuaGVscGVyX2FyZ19uYW1lKCl9KSAqLworICAgICAgICAiIiIpKQog CiBjbGFzcyBWUmVnUGFpclNvdXJjZShSZWdpc3RlciwgSHZ4LCBPbGRTb3VyY2UpOgogICAgIGRl ZiBkZWNsX3RjZyhzZWxmLCBmLCB0YWcsIHJlZ25vKToKQEAgLTc3Myw2ICs3OTMsMTAgQEAgZGVm IGRlY2xfdGNnKHNlbGYsIGYsIHRhZywgcmVnbm8pOgogICAgICAgICAgICAgICAgIFRDR3ZfcHRy IHtzZWxmLnJlZ190Y2coKX0gPSB0Y2dfdGVtcF9uZXdfcHRyKCk7CiAgICAgICAgICAgICAgICAg dGNnX2dlbl9hZGRpX3B0cih7c2VsZi5yZWdfdGNnKCl9LCB0Y2dfZW52LCB7c2VsZi5odnhfb2Zm KCl9KTsKICAgICAgICAgICAgICIiIikpCisgICAgZGVmIGhlbHBlcl9odnhfZGVzYyhzZWxmLCBm KToKKyAgICAgICAgZi53cml0ZShjb2RlX2ZtdChmIiIiXAorICAgICAgICAgICAgLyoge3NlbGYu cmVnX3RjZygpfSBpcyAqKE1NVmVjdG9yUGFpciAqKSh7c2VsZi5oZWxwZXJfYXJnX25hbWUoKX0p ICovCisgICAgICAgICIiIikpCiAKIGNsYXNzIFZSZWdQYWlyUmVhZFdyaXRlKFJlZ2lzdGVyLCBI dngsIFJlYWRXcml0ZSk6CiAgICAgZGVmIGRlY2xfdGNnKHNlbGYsIGYsIHRhZywgcmVnbm8pOgpA QCAtNzk3LDYgKzgyMSwxMCBAQCBkZWYgbG9nX3dyaXRlKHNlbGYsIGYsIHRhZyk6CiAgICAgICAg ICAgICBnZW5fbG9nX3ZyZWdfd3JpdGVfcGFpcihjdHgsIHtzZWxmLmh2eF9vZmYoKX0sIHtzZWxm LnJlZ19udW19LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2h2eF9uZXd2 KHRhZyl9KTsKICAgICAgICAgIiIiKSkKKyAgICBkZWYgaGVscGVyX2h2eF9kZXNjKHNlbGYsIGYp OgorICAgICAgICBmLndyaXRlKGNvZGVfZm10KGYiIiJcCisgICAgICAgICAgICAvKiB7c2VsZi5y ZWdfdGNnKCl9IGlzICooTU1WZWN0b3JQYWlyICopKHtzZWxmLmhlbHBlcl9hcmdfbmFtZSgpfSkg Ki8KKyAgICAgICAgIiIiKSkKIAogY2xhc3MgUVJlZ0Rlc3QoUmVnaXN0ZXIsIEh2eCwgRGVzdCk6 CiAgICAgZGVmIGRlY2xfdGNnKHNlbGYsIGYsIHRhZywgcmVnbm8pOgpAQCAtODEyLDYgKzg0MCwx MCBAQCBkZWYgZGVjbF90Y2coc2VsZiwgZiwgdGFnLCByZWdubyk6CiAgICAgICAgICAgICAiIiIp KQogICAgIGRlZiBsb2dfd3JpdGUoc2VsZiwgZiwgdGFnKToKICAgICAgICAgcGFzcworICAgIGRl ZiBoZWxwZXJfaHZ4X2Rlc2Moc2VsZiwgZik6CisgICAgICAgIGYud3JpdGUoY29kZV9mbXQoZiIi IlwKKyAgICAgICAgICAgIC8qIHtzZWxmLnJlZ190Y2coKX0gaXMgKihNTVFSZWcgKikoe3NlbGYu aGVscGVyX2FyZ19uYW1lKCl9KSAqLworICAgICAgICAiIiIpKQogCiBjbGFzcyBRUmVnU291cmNl KFJlZ2lzdGVyLCBIdngsIE9sZFNvdXJjZSk6CiAgICAgZGVmIGRlY2xfdGNnKHNlbGYsIGYsIHRh ZywgcmVnbm8pOgpAQCAtODI1LDYgKzg1NywxMCBAQCBkZWYgZGVjbF90Y2coc2VsZiwgZiwgdGFn LCByZWdubyk6CiAgICAgICAgICAgICAgICAgVENHdl9wdHIge3NlbGYucmVnX3RjZygpfSA9IHRj Z190ZW1wX25ld19wdHIoKTsKICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FkZGlfcHRyKHtzZWxm LnJlZ190Y2coKX0sIHRjZ19lbnYsIHtzZWxmLmh2eF9vZmYoKX0pOwogICAgICAgICAgICAgIiIi KSkKKyAgICBkZWYgaGVscGVyX2h2eF9kZXNjKHNlbGYsIGYpOgorICAgICAgICBmLndyaXRlKGNv ZGVfZm10KGYiIiJcCisgICAgICAgICAgICAvKiB7c2VsZi5yZWdfdGNnKCl9IGlzICooTU1RUmVn ICopKHtzZWxmLmhlbHBlcl9hcmdfbmFtZSgpfSkgKi8KKyAgICAgICAgIiIiKSkKIAogY2xhc3Mg UVJlZ1JlYWRXcml0ZShSZWdpc3RlciwgSHZ4LCBSZWFkV3JpdGUpOgogICAgIGRlZiBkZWNsX3Rj ZyhzZWxmLCBmLCB0YWcsIHJlZ25vKToKQEAgLTg0Myw2ICs4NzksMTAgQEAgZGVmIGRlY2xfdGNn KHNlbGYsIGYsIHRhZywgcmVnbm8pOgogICAgICAgICAgICAgIiIiKSkKICAgICBkZWYgbG9nX3dy aXRlKHNlbGYsIGYsIHRhZyk6CiAgICAgICAgIHBhc3MKKyAgICBkZWYgaGVscGVyX2h2eF9kZXNj KHNlbGYsIGYpOgorICAgICAgICBmLndyaXRlKGNvZGVfZm10KGYiIiJcCisgICAgICAgICAgICAv KiB7c2VsZi5yZWdfdGNnKCl9IGlzICooTU1RUmVnICopKHtzZWxmLmhlbHBlcl9hcmdfbmFtZSgp fSkgKi8KKyAgICAgICAgIiIiKSkKIAogZGVmIGluaXRfcmVnaXN0ZXJzKCk6CiAgICAgcmVncyA9 IHsKLS0gCjIuMjUuMQoK