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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 AA08AC433F5 for ; Tue, 22 Mar 2022 01:59:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:CC:To:Subject:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=VuQpqm9XMduEOpZwx+wLg3kEkjw4IbfjZKFeU57a+/Q=; b=Xu+l81902PjR6qaFVJkg/AR7al fXa0/xNJWtOUKnOdOKyhYLbWrZ1FwUpvAM0s4o3AA9dWlsVBNx0TI6CqlMHodgveqq37vlEMuZoir xFa0qd1ZA5EwNkR8sgDFlBK4EArXmMr6izqcbLLZnAAq/3Sv0jUof93pOFOu6Mh7DQ77Z5OP1ssFk 2YE7sNlpjsSy1magKZAXE+Qmgji7B4jFsEdyLsdbCpWmRhWX1gBDqt5u40TMBJtbrFHlYqtKSqvY1 sBhA6WXsYz2Sej/bG1YfgNehL6arFD0Vn8B0/iC8yD9WUJWvJlZ+9+XhU4DgBUqyZvll3V5yfJyLi TqunQ/kg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWTn4-009eZ4-BG; Tue, 22 Mar 2022 01:58:30 +0000 Received: from szxga03-in.huawei.com ([45.249.212.189]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWTmt-009eWj-TG; Tue, 22 Mar 2022 01:58:24 +0000 Received: from dggpemm500024.china.huawei.com (unknown [172.30.72.53]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4KMvfx3fbrz9ssl; Tue, 22 Mar 2022 09:54:17 +0800 (CST) Received: from dggpemm500006.china.huawei.com (7.185.36.236) by dggpemm500024.china.huawei.com (7.185.36.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Tue, 22 Mar 2022 09:58:12 +0800 Received: from [10.174.178.55] (10.174.178.55) by dggpemm500006.china.huawei.com (7.185.36.236) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Tue, 22 Mar 2022 09:58:10 +0800 Subject: Re: [PATCH v21 3/5] arm64: kdump: reimplement crashkernel=X To: John Donnelly , Thomas Gleixner , Ingo Molnar , Borislav Petkov , , "H . Peter Anvin" , , Dave Young , Baoquan He , Vivek Goyal , Eric Biederman , , Catalin Marinas , Will Deacon , , Rob Herring , Frank Rowand , , "Jonathan Corbet" , CC: Randy Dunlap , Feng Zhou , Kefeng Wang , "Chen Zhou" , Dave Kleikamp References: <20220227030717.1464-1-thunder.leizhen@huawei.com> <20220227030717.1464-4-thunder.leizhen@huawei.com> From: "Leizhen (ThunderTown)" Message-ID: Date: Tue, 22 Mar 2022 09:58:10 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-Originating-IP: [10.174.178.55] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemm500006.china.huawei.com (7.185.36.236) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220321_185820_326792_C1097B02 X-CRM114-Status: GOOD ( 30.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAyMDIyLzMvMjEgMjE6MjksIEpvaG4gRG9ubmVsbHkgd3JvdGU6Cj4gT24gMi8yNi8yMiA5 OjA3IFBNLCBaaGVuIExlaSB3cm90ZToKPj4gRnJvbTogQ2hlbiBaaG91IDxjaGVuemhvdTEwQGh1 YXdlaS5jb20+Cj4+Cj4+IFRoZXJlIGFyZSBmb2xsb3dpbmcgaXNzdWVzIGluIGFybTY0IGtkdW1w Ogo+PiAxLiBXZSB1c2UgY3Jhc2hrZXJuZWw9WCB0byByZXNlcnZlIGNyYXNoa2VybmVsIGJlbG93 IDRHLCB3aGljaAo+PiB3aWxsIGZhaWwgd2hlbiB0aGVyZSBpcyBubyBlbm91Z2ggbG93IG1lbW9y eS4KPiAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIg Tm90IGVub3VnaCAiCgpPSywgdGhhbmtzCgo+PiAyLiBJZiByZXNlcnZpbmcgY3Jhc2hrZXJuZWwg YWJvdmUgNEcsIGluIHRoaXMgY2FzZSwgY3Jhc2ggZHVtcAo+PiBrZXJuZWwgd2lsbCBib290IGZh aWx1cmUgYmVjYXVzZSB0aGVyZSBpcyBubyBsb3cgbWVtb3J5IGF2YWlsYWJsZQo+PiBmb3IgYWxs b2NhdGlvbi4KPiAKPiDCoFdlIGNhbid0IGhhdmUgYSAiYm9vdCBmYWlsdXJlIi4gSWYgdGhlIHJl cXVlc3RlZCByZXNlcnZhdGlvbgo+IMKgY2FuIG5vdCBiZSBtZXQswqAgdGhlIGtkdW1wwqAgY29u ZmlndXJhdGlvbiBpcyBub3Qgc2V0dXAuCj4+Cj4+IFRvIHNvbHZlIHRoZXNlIGlzc3VlcywgY2hh bmdlIHRoZSBiZWhhdmlvciBvZiBjcmFzaGtlcm5lbD1YIGFuZAo+PiBpbnRyb2R1Y2UgY3Jhc2hr ZXJuZWw9WCxbaGlnaCxsb3ddLiBjcmFzaGtlcm5lbD1YIHRyaWVzIGxvdyBhbGxvY2F0aW9uCj4+ IGluIERNQSB6b25lLCBhbmQgZmFsbCBiYWNrIHRvIGhpZ2ggYWxsb2NhdGlvbiBpZiBpdCBmYWls cy4KPj4gV2UgY2FuIGFsc28gdXNlICJjcmFzaGtlcm5lbD1YLGhpZ2giIHRvIHNlbGVjdCBhIHJl Z2lvbiBhYm92ZSBETUEgem9uZSwKPj4gd2hpY2ggYWxzbyB0cmllcyB0byBhbGxvY2F0ZSBhdCBs ZWFzdCAyNTZNIGluIERNQSB6b25lIGF1dG9tYXRpY2FsbHkuCj4+ICJjcmFzaGtlcm5lbD1ZLGxv dyIgY2FuIGJlIHVzZWQgdG8gYWxsb2NhdGUgc3BlY2lmaWVkIHNpemUgbG93IG1lbW9yeS4KPiAK PiBJcyB0aGVyZSBnb2luZyB0byBiZSBkb2N1bWVudGF0aW9uIG9uIHdoYXQgdmFsdWVzIGNlcnRh aW4gQXJtIHBsYXRmb3JtcyBhcmUgZ29pbmcgdG8gdXNlIHRoaXMgb24gPwoKVGhlcmUgaXMgbm8g ZXhhY3QgZm9ybXVsYS4KCj4gCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENoZW4gWmhvdSA8Y2hlbnpo b3UxMEBodWF3ZWkuY29tPgo+PiBDby1kZXZlbG9wZWQtYnk6IFpoZW4gTGVpIDx0aHVuZGVyLmxl aXpoZW5AaHVhd2VpLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogWmhlbiBMZWkgPHRodW5kZXIubGVp emhlbkBodWF3ZWkuY29tPgo+PiAtLS0KPj4gwqAgYXJjaC9hcm02NC9rZXJuZWwvbWFjaGluZV9r ZXhlYy5jwqDCoMKgwqDCoCB8wqDCoCA5ICsrLQo+PiDCoCBhcmNoL2FybTY0L2tlcm5lbC9tYWNo aW5lX2tleGVjX2ZpbGUuYyB8wqAgMTIgKystCj4+IMKgIGFyY2gvYXJtNjQvbW0vaW5pdC5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTA2ICsrKysrKysrKysrKysrKysr KysrKysrLS0KPj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMTIgZGVs ZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9tYWNoaW5lX2tl eGVjLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9tYWNoaW5lX2tleGVjLmMKPj4gaW5kZXggZTE2YjI0 ODY5OWQ1YzNjLi4xOWMyZDQ4N2NiMDhmZWIgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtNjQva2Vy bmVsL21hY2hpbmVfa2V4ZWMuYwo+PiArKysgYi9hcmNoL2FybTY0L2tlcm5lbC9tYWNoaW5lX2tl eGVjLmMKPj4gQEAgLTMyOSw4ICszMjksMTMgQEAgYm9vbCBjcmFzaF9pc19ub3NhdmUodW5zaWdu ZWQgbG9uZyBwZm4pCj4+IMKgIMKgwqDCoMKgwqAgLyogaW4gcmVzZXJ2ZWQgbWVtb3J5PyAqLwo+ PiDCoMKgwqDCoMKgIGFkZHIgPSBfX3Bmbl90b19waHlzKHBmbik7Cj4+IC3CoMKgwqAgaWYgKChh ZGRyIDwgY3Jhc2hrX3Jlcy5zdGFydCkgfHwgKGNyYXNoa19yZXMuZW5kIDwgYWRkcikpCj4+IC3C oMKgwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4+ICvCoMKgwqAgaWYgKChhZGRyIDwgY3Jhc2hr X3Jlcy5zdGFydCkgfHwgKGNyYXNoa19yZXMuZW5kIDwgYWRkcikpIHsKPj4gK8KgwqDCoMKgwqDC oMKgIGlmICghY3Jhc2hrX2xvd19yZXMuZW5kKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gZmFsc2U7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICgoYWRkciA8IGNyYXNoa19s b3dfcmVzLnN0YXJ0KSB8fCAoY3Jhc2hrX2xvd19yZXMuZW5kIDwgYWRkcikpCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4gK8KgwqDCoCB9Cj4+IMKgIMKgwqDCoMKg wqAgaWYgKCFrZXhlY19jcmFzaF9pbWFnZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiB0 cnVlOwo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvbWFjaGluZV9rZXhlY19maWxl LmMgYi9hcmNoL2FybTY0L2tlcm5lbC9tYWNoaW5lX2tleGVjX2ZpbGUuYwo+PiBpbmRleCA1OWM2 NDhkNTE4NDg4ODYuLjg4OTk1MTI5MWNjMGY5YyAxMDA2NDQKPj4gLS0tIGEvYXJjaC9hcm02NC9r ZXJuZWwvbWFjaGluZV9rZXhlY19maWxlLmMKPj4gKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvbWFj aGluZV9rZXhlY19maWxlLmMKPj4gQEAgLTY1LDEwICs2NSwxOCBAQCBzdGF0aWMgaW50IHByZXBh cmVfZWxmX2hlYWRlcnModm9pZCAqKmFkZHIsIHVuc2lnbmVkIGxvbmcgKnN6KQo+PiDCoCDCoMKg wqDCoMKgIC8qIEV4Y2x1ZGUgY3Jhc2hrZXJuZWwgcmVnaW9uICovCj4+IMKgwqDCoMKgwqAgcmV0 ID0gY3Jhc2hfZXhjbHVkZV9tZW1fcmFuZ2UoY21lbSwgY3Jhc2hrX3Jlcy5zdGFydCwgY3Jhc2hr X3Jlcy5lbmQpOwo+PiArwqDCoMKgIGlmIChyZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91 dDsKPj4gKwo+PiArwqDCoMKgIGlmIChjcmFzaGtfbG93X3Jlcy5lbmQpIHsKPj4gK8KgwqDCoMKg wqDCoMKgIHJldCA9IGNyYXNoX2V4Y2x1ZGVfbWVtX3JhbmdlKGNtZW0sIGNyYXNoa19sb3dfcmVz LnN0YXJ0LCBjcmFzaGtfbG93X3Jlcy5lbmQpOwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ICvCoMKgwqAgfQo+PiDCoCAt wqDCoMKgIGlmICghcmV0KQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0ID3CoCBjcmFzaF9wcmVwYXJl X2VsZjY0X2hlYWRlcnMoY21lbSwgdHJ1ZSwgYWRkciwgc3opOwo+PiArwqDCoMKgIHJldCA9IGNy YXNoX3ByZXBhcmVfZWxmNjRfaGVhZGVycyhjbWVtLCB0cnVlLCBhZGRyLCBzeik7Cj4+IMKgICtv dXQ6Cj4+IMKgwqDCoMKgwqAga2ZyZWUoY21lbSk7Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJldDsK Pj4gwqAgfQo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9tbS9pbml0LmMgYi9hcmNoL2FybTY0 L21tL2luaXQuYwo+PiBpbmRleCA5MGYyNzZkNDZiOTNiYzYuLjMwYWU2NjM4ZmY1NGM0NyAxMDA2 NDQKPj4gLS0tIGEvYXJjaC9hcm02NC9tbS9pbml0LmMKPj4gKysrIGIvYXJjaC9hcm02NC9tbS9p bml0LmMKPj4gQEAgLTY1LDYgKzY1LDQ0IEBAIEVYUE9SVF9TWU1CT0wobWVtc3RhcnRfYWRkcik7 Cj4+IMKgIHBoeXNfYWRkcl90IGFybTY0X2RtYV9waHlzX2xpbWl0IF9fcm9fYWZ0ZXJfaW5pdDsK Pj4gwqAgwqAgI2lmZGVmIENPTkZJR19LRVhFQ19DT1JFCj4+ICsvKiBDdXJyZW50IGFybTY0IGJv b3QgcHJvdG9jb2wgcmVxdWlyZXMgMk1CIGFsaWdubWVudCAqLwo+PiArI2RlZmluZSBDUkFTSF9B TElHTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1pfMk0KPj4gKwo+PiArI2RlZmluZSBDUkFTSF9B RERSX0xPV19NQVjCoMKgwqDCoMKgwqDCoCBhcm02NF9kbWFfcGh5c19saW1pdAo+PiArI2RlZmlu ZSBDUkFTSF9BRERSX0hJR0hfTUFYwqDCoMKgwqDCoMKgwqAgbWVtYmxvY2suY3VycmVudF9saW1p dAo+PiArCj4+ICsvKgo+PiArICogVGhpcyBpcyBhbiBlbXBpcmljYWwgdmFsdWUgaW4geDg2XzY0 IGFuZCB0YWtlbiBoZXJlIGRpcmVjdGx5LiBQbGVhc2UKPj4gKyAqIHJlZmVyIHRvIHRoZSBjb2Rl IGNvbW1lbnQgaW4gcmVzZXJ2ZV9jcmFzaGtlcm5lbF9sb3coKSBvZiB4ODZfNjQgZm9yIG1vcmUK Pj4gKyAqIGRldGFpbHMuCj4+ICsgKi8KPj4gKyNkZWZpbmUgREVGQVVMVF9DUkFTSF9LRVJORUxf TE9XX1NJWkXCoMKgwqAgXAo+PiArwqDCoMKgIG1heChzd2lvdGxiX3NpemVfb3JfZGVmYXVsdCgp ICsgKDhVTCA8PCAyMCksIDI1NlVMIDw8IDIwKQo+PiArCj4+ICtzdGF0aWMgaW50IF9faW5pdCBy ZXNlcnZlX2NyYXNoa2VybmVsX2xvdyh1bnNpZ25lZCBsb25nIGxvbmcgbG93X3NpemUpCj4+ICt7 Cj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyBsb25nIGxvd19iYXNlOwo+PiArCj4+ICvCoMKgwqAg LyogcGFzc2VkIHdpdGggY3Jhc2hrZXJuZWw9MCxsb3cgPyAqLwo+PiArwqDCoMKgIGlmICghbG93 X3NpemUpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gKwo+PiArwqDCoMKgIGxvd19i YXNlID0gbWVtYmxvY2tfcGh5c19hbGxvY19yYW5nZShsb3dfc2l6ZSwgQ1JBU0hfQUxJR04sIDAs IENSQVNIX0FERFJfTE9XX01BWCk7Cj4+ICvCoMKgwqAgaWYgKCFsb3dfYmFzZSkgewo+PiArwqDC oMKgwqDCoMKgwqAgcHJfZXJyKCJjYW5ub3QgYWxsb2NhdGUgY3Jhc2hrZXJuZWwgbG93IG1lbW9y eSAoc2l6ZToweCVsbHgpLlxuIiwgbG93X3NpemUpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FTk9NRU07Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgcHJfaW5mbygiY3Jhc2hrZXJu ZWwgbG93IG1lbW9yeSByZXNlcnZlZDogMHglMDhsbHggLSAweCUwOGxseCAoJWxsZCBNQilcbiIs Cj4+ICvCoMKgwqDCoMKgwqDCoCBsb3dfYmFzZSwgbG93X2Jhc2UgKyBsb3dfc2l6ZSwgbG93X3Np emUgPj4gMjApOwo+PiArCj4+ICvCoMKgwqAgY3Jhc2hrX2xvd19yZXMuc3RhcnQgPSBsb3dfYmFz ZTsKPj4gK8KgwqDCoCBjcmFzaGtfbG93X3Jlcy5lbmTCoMKgID0gbG93X2Jhc2UgKyBsb3dfc2l6 ZSAtIDE7Cj4+ICvCoMKgwqAgaW5zZXJ0X3Jlc291cmNlKCZpb21lbV9yZXNvdXJjZSwgJmNyYXNo a19sb3dfcmVzKTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+IMKgIC8q Cj4+IMKgwqAgKiByZXNlcnZlX2NyYXNoa2VybmVsKCkgLSByZXNlcnZlcyBtZW1vcnkgZm9yIGNy YXNoIGtlcm5lbAo+PiDCoMKgICoKPj4gQEAgLTc1LDMwICsxMTMsNzkgQEAgcGh5c19hZGRyX3Qg YXJtNjRfZG1hX3BoeXNfbGltaXQgX19yb19hZnRlcl9pbml0Owo+PiDCoCBzdGF0aWMgdm9pZCBf X2luaXQgcmVzZXJ2ZV9jcmFzaGtlcm5lbCh2b2lkKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgdW5z aWduZWQgbG9uZyBsb25nIGNyYXNoX2Jhc2UsIGNyYXNoX3NpemU7Cj4+IC3CoMKgwqAgdW5zaWdu ZWQgbG9uZyBsb25nIGNyYXNoX21heCA9IGFybTY0X2RtYV9waHlzX2xpbWl0Owo+PiArwqDCoMKg IHVuc2lnbmVkIGxvbmcgbG9uZyBjcmFzaF9sb3dfc2l6ZTsKPj4gK8KgwqDCoCB1bnNpZ25lZCBs b25nIGxvbmcgY3Jhc2hfbWF4ID0gQ1JBU0hfQUREUl9MT1dfTUFYOwo+PiDCoMKgwqDCoMKgIGlu dCByZXQ7Cj4+ICvCoMKgwqAgYm9vbCBmaXhlZF9iYXNlLCBoaWdoID0gZmFsc2U7Cj4+ICvCoMKg wqAgY2hhciAqY21kbGluZSA9IGJvb3RfY29tbWFuZF9saW5lOwo+PiDCoCAtwqDCoMKgIHJldCA9 IHBhcnNlX2NyYXNoa2VybmVsKGJvb3RfY29tbWFuZF9saW5lLCBtZW1ibG9ja19waHlzX21lbV9z aXplKCksCj4+ICvCoMKgwqAgLyogY3Jhc2hrZXJuZWw9WFtAb2Zmc2V0XSAqLwo+PiArwqDCoMKg IHJldCA9IHBhcnNlX2NyYXNoa2VybmVsKGNtZGxpbmUsIG1lbWJsb2NrX3BoeXNfbWVtX3NpemUo KSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmY3Jhc2hfc2l6ZSwgJmNy YXNoX2Jhc2UpOwo+PiAtwqDCoMKgIC8qIG5vIGNyYXNoa2VybmVsPSBvciBpbnZhbGlkIHZhbHVl IHNwZWNpZmllZCAqLwo+PiAtwqDCoMKgIGlmIChyZXQgfHwgIWNyYXNoX3NpemUpCj4+IC3CoMKg wqDCoMKgwqDCoCByZXR1cm47Cj4+ICvCoMKgwqAgaWYgKHJldCB8fCAhY3Jhc2hfc2l6ZSkgewo+ PiArwqDCoMKgwqDCoMKgwqAgLyogY3Jhc2hrZXJuZWw9WCxoaWdoICovCj4+ICvCoMKgwqDCoMKg wqDCoCByZXQgPSBwYXJzZV9jcmFzaGtlcm5lbF9oaWdoKGNtZGxpbmUsIDAsICZjcmFzaF9zaXpl LCAmY3Jhc2hfYmFzZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0IHx8ICFjcmFzaF9zaXpl KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICsKPj4gK8KgwqDCoMKgwqDC oMKgIC8qIGNyYXNoa2VybmVsPVksbG93ICovCj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBwYXJz ZV9jcmFzaGtlcm5lbF9sb3coY21kbGluZSwgMCwgJmNyYXNoX2xvd19zaXplLCAmY3Jhc2hfYmFz ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0ID09IC1FTk9FTlQpCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBjcmFzaGtlcm5l bD1ZLGxvdyBpcyBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0bHksIHVzZQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICogZGVmYXVsdCBzaXplIGF1dG9tYXRpY2FsbHkuCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3Jhc2hfbG93X3Np emUgPSBERUZBVUxUX0NSQVNIX0tFUk5FTF9MT1dfU0laRTsKPj4gK8KgwqDCoMKgwqDCoMKgIGVs c2UgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogY3Jhc2hrZXJuZWw9WSxs b3cgaXMgc3BlY2lmaWVkIGJ1dCBZIGlzIGludmFsaWQgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBNYXJrIGNyYXNoa2VybmVs PVgsaGlnaCBpcyBzcGVjaWZpZWQgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIGhpZ2ggPSB0cnVlOwo+ PiArwqDCoMKgwqDCoMKgwqAgY3Jhc2hfbWF4ID0gQ1JBU0hfQUREUl9ISUdIX01BWDsKPj4gK8Kg wqDCoCB9Cj4+IMKgICvCoMKgwqAgZml4ZWRfYmFzZSA9ICEhY3Jhc2hfYmFzZTsKPj4gwqDCoMKg wqDCoCBjcmFzaF9zaXplID0gUEFHRV9BTElHTihjcmFzaF9zaXplKTsKPj4gwqAgwqDCoMKgwqDC oCAvKiBVc2VyIHNwZWNpZmllcyBiYXNlIGFkZHJlc3MgZXhwbGljaXRseS4gKi8KPj4gLcKgwqDC oCBpZiAoY3Jhc2hfYmFzZSkKPj4gK8KgwqDCoCBpZiAoZml4ZWRfYmFzZSkKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIGNyYXNoX21heCA9IGNyYXNoX2Jhc2UgKyBjcmFzaF9zaXplOwo+PiDCoCAtwqDC oMKgIC8qIEN1cnJlbnQgYXJtNjQgYm9vdCBwcm90b2NvbCByZXF1aXJlcyAyTUIgYWxpZ25tZW50 ICovCj4+IC3CoMKgwqAgY3Jhc2hfYmFzZSA9IG1lbWJsb2NrX3BoeXNfYWxsb2NfcmFuZ2UoY3Jh c2hfc2l6ZSwgU1pfMk0sCj4+ICtyZXRyeToKPj4gK8KgwqDCoCBjcmFzaF9iYXNlID0gbWVtYmxv Y2tfcGh5c19hbGxvY19yYW5nZShjcmFzaF9zaXplLCBDUkFTSF9BTElHTiwKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3Jhc2hfYmFz ZSwgY3Jhc2hfbWF4KTsKPj4gwqDCoMKgwqDCoCBpZiAoIWNyYXNoX2Jhc2UpIHsKPj4gK8KgwqDC oMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogQXR0ZW1wdCB0byBmdWxseSBhbGxv Y2F0ZSBsb3cgbWVtb3J5IGZhaWxlZCwgZmFsbCBiYWNrCj4+ICvCoMKgwqDCoMKgwqDCoMKgICog dG8gaGlnaCBtZW1vcnksIHRoZSBtaW5pbXVtIHJlcXVpcmVkIGxvdyBtZW1vcnkgd2lsbCBiZQo+ PiArwqDCoMKgwqDCoMKgwqDCoCAqIHJlc2VydmVkIGxhdGVyLgo+PiArwqDCoMKgwqDCoMKgwqDC oCAqLwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFmaXhlZF9iYXNlICYmIChjcmFzaF9tYXggPT0g Q1JBU0hfQUREUl9MT1dfTUFYKSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcmFzaF9t YXggPSBDUkFTSF9BRERSX0hJR0hfTUFYOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3Rv IHJldHJ5Owo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBw cl93YXJuKCJjYW5ub3QgYWxsb2NhdGUgY3Jhc2hrZXJuZWwgKHNpemU6MHglbGx4KVxuIiwKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3Jhc2hfc2l6ZSk7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm47Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCArwqDCoMKgIGlmIChjcmFzaF9iYXNl ID49IFNaXzRHKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKgo+PiArwqDCoMKgwqDCoMKgwqDCoCAq IEZvciBjYXNlIGNyYXNoa2VybmVsPVgsIGxvdyBtZW1vcnkgaXMgbm90IGVub3VnaCBhbmQgZmFs bAo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGJhY2sgdG8gcmVzZXJ2ZSBzcGVjaWZpZWQgc2l6ZSBv ZiBtZW1vcnkgYWJvdmUgNEcsIHRyeSB0bwo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGFsbG9jYXRl IG1pbmltdW0gcmVxdWlyZWQgbWVtb3J5IGJlbG93IDRHIGFnYWluLgo+PiArwqDCoMKgwqDCoMKg wqDCoCAqLwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFoaWdoKQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjcmFzaF9sb3dfc2l6ZSA9IERFRkFVTFRfQ1JBU0hfS0VSTkVMX0xPV19TSVpFOwo+ PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmVzZXJ2ZV9jcmFzaGtlcm5lbF9sb3coY3Jhc2hf bG93X3NpemUpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lbWJsb2NrX3BoeXNfZnJl ZShjcmFzaF9iYXNlLCBjcmFzaF9zaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIH0KPj4gKwo+PiDCoMKgwqDCoMKg IHByX2luZm8oImNyYXNoa2VybmVsIHJlc2VydmVkOiAweCUwMTZsbHggLSAweCUwMTZsbHggKCVs bGQgTUIpXG4iLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY3Jhc2hfYmFzZSwgY3Jhc2hfYmFzZSAr IGNyYXNoX3NpemUsIGNyYXNoX3NpemUgPj4gMjApOwo+PiDCoCBAQCAtMTA3LDYgKzE5NCw5IEBA IHN0YXRpYyB2b2lkIF9faW5pdCByZXNlcnZlX2NyYXNoa2VybmVsKHZvaWQpCj4+IMKgwqDCoMKg wqDCoCAqIG1hcC4gSW5mb3JtIGttZW1sZWFrIHNvIHRoYXQgaXQgd29uJ3QgdHJ5IHRvIGFjY2Vz cyBpdC4KPj4gwqDCoMKgwqDCoMKgICovCj4+IMKgwqDCoMKgwqAga21lbWxlYWtfaWdub3JlX3Bo eXMoY3Jhc2hfYmFzZSk7Cj4+ICvCoMKgwqAgaWYgKGNyYXNoa19sb3dfcmVzLmVuZCkKPj4gK8Kg wqDCoMKgwqDCoMKgIGttZW1sZWFrX2lnbm9yZV9waHlzKGNyYXNoa19sb3dfcmVzLnN0YXJ0KTsK Pj4gKwo+PiDCoMKgwqDCoMKgIGNyYXNoa19yZXMuc3RhcnQgPSBjcmFzaF9iYXNlOwo+PiDCoMKg wqDCoMKgIGNyYXNoa19yZXMuZW5kID0gY3Jhc2hfYmFzZSArIGNyYXNoX3NpemUgLSAxOwo+PiDC oMKgwqDCoMKgIGluc2VydF9yZXNvdXJjZSgmaW9tZW1fcmVzb3VyY2UsICZjcmFzaGtfcmVzKTsK PiAKPiAuCj4gCgotLSAKUmVnYXJkcywKICBaaGVuIExlaQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=