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.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 234F5C64ED6 for ; Tue, 28 Feb 2023 17:22:06 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.503604.775917 (Exim 4.92) (envelope-from ) id 1pX3fe-0003mR-F9; Tue, 28 Feb 2023 17:21:46 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 503604.775917; Tue, 28 Feb 2023 17:21:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pX3fe-0003mK-CX; Tue, 28 Feb 2023 17:21:46 +0000 Received: by outflank-mailman (input) for mailman id 503604; Tue, 28 Feb 2023 17:21:44 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pX3fc-0003IB-Eq for xen-devel@lists.xenproject.org; Tue, 28 Feb 2023 17:21:44 +0000 Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [2a00:1450:4864:20::22e]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 5eeb817b-b78c-11ed-9695-2f268f93b82a; Tue, 28 Feb 2023 18:21:43 +0100 (CET) Received: by mail-lj1-x22e.google.com with SMTP id z42so11037420ljq.13 for ; Tue, 28 Feb 2023 09:21:43 -0800 (PST) Received: from [192.168.8.114] (46.204.108.203.nat.umts.dynamic.t-mobile.pl. [46.204.108.203]) by smtp.gmail.com with ESMTPSA id h24-20020a05651c125800b002958904dceesm1296094ljh.13.2023.02.28.09.21.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Feb 2023 09:21:42 -0800 (PST) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 5eeb817b-b78c-11ed-9695-2f268f93b82a DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=SZe9bOL2Rt/Ls+qvothBWJskKPaxYJQR8kGQbjFvucU=; b=acKiB++dEI+2DTOIIUrjShg7bzlkxfUAi0WRdtXuVqXEkv0RA8nQiZiwAsnr3rks5L //nL8TUKSiwTTUHqhjKRhrxuwtuZ6lGxy5oRyKnhu53d3WHuCITNr2StJaECllSfC1u5 sg8KVqSbQDCzJbbQiJPQmn/jwWDZd7f2DqAE4kj01AjJy7+89QlFbg+wZXKZG4eCeLPC I0yD1O+55WrJ4Jc6VS6InZg1TytXpHQ5E8lwovSCzIfaTMtLBi1nyfo1Bvk8XZBG75ht qAZUbHawDbWuIm7FjaxThgYlyCeW++AOA3BPqaqtrJBPCpz9xYIg/A2gP5YvxOpuubGP 66Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=SZe9bOL2Rt/Ls+qvothBWJskKPaxYJQR8kGQbjFvucU=; b=QbFhfYAhBddQCueZMop7Ds3jNtZhwBHiGN4Agj/+XYsedisJRIXE+lk58Apyw2YPwS OUcKOC46ZWtyHal6ud2thS2qe5uuh5MJ/hnBS1zL1YY0QRhehSYaUbvqCL5Y06vFBQyG EsRoARgha6WuTmTtGR7ABPDS0qHz0YxRBP3IMMb4huUWzba+7nA3QdxNhPMC2LVQMt/o UbVJv5DmAbXHlwOdo9Vq2H3D4T/gs0rPR/XUVZMZ9OXpveto/BYhLA82dX1AkXBWft5A 1oWm7bGX59NX9oNEOXmOsNGUwEz1a+ixgi26cFMn6zYOrkfl2ns1opSWExfpXl82BOUg s8bg== X-Gm-Message-State: AO0yUKWB5k4QkTSJwlE8pzZTOKWd6SmYbMdJ3SyuEi7mazGBXJWR0c7s gt8Up3jjySfNhWZNvLjEJRg= X-Google-Smtp-Source: AK7set/Nu8CtO0/h+mgz+pEUmMz56QzfLTr8dGXkxSdEUEAtcgMg36lH+VBGlktXPShqHfuHH3IyAw== X-Received: by 2002:a2e:9b49:0:b0:293:4b61:265a with SMTP id o9-20020a2e9b49000000b002934b61265amr1086094ljj.49.1677604902802; Tue, 28 Feb 2023 09:21:42 -0800 (PST) Message-ID: Subject: Re: [PATCH v3 1/4] xen: introduce CONFIG_GENERIC_BUG_FRAME From: Oleksii To: Julien Grall , xen-devel@lists.xenproject.org Cc: Jan Beulich , Andrew Cooper , Stefano Stabellini , Gianluca Guida , George Dunlap , Wei Liu Date: Tue, 28 Feb 2023 19:21:40 +0200 In-Reply-To: <8734edd9-70eb-b2bd-8763-b7468d7caba3@xen.org> References: <932b0fd2a211d2d837d00e1bda87a84ad680fe7b.1677233393.git.oleksii.kurochko@gmail.com> <8734edd9-70eb-b2bd-8763-b7468d7caba3@xen.org> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.3 (3.46.3-1.fc37) MIME-Version: 1.0 SGkgSnVsaWVuLAoKT24gU2F0LCAyMDIzLTAyLTI1IGF0IDE2OjQyICswMDAwLCBKdWxpZW4gR3Jh bGwgd3JvdGU6Cj4gSGkgT2xla3NpaSwKPiAKPiBPbiAyNC8wMi8yMDIzIDExOjMxLCBPbGVrc2lp IEt1cm9jaGtvIHdyb3RlOgo+ID4gQSBsYXJnZSBwYXJ0IG9mIHRoZSBjb250ZW50IG9mIHRoZSBi dWcuaCBpcyByZXBlYXRlZCBhbW9uZyBhbGwKPiA+IGFyY2hpdGVjdHVyZXMsIHNvIGl0IHdhcyBk ZWNpZGVkIHRvIGNyZWF0ZSBhIG5ldyBjb25maWcKPiA+IENPTkZJR19HRU5FUklDX0JVR19GUkFN RS4KPiA+IAo+ID4gVGhlIHZlcnNpb24gb2YgPGJ1Zy5oPiBmcm9tIHg4NiB3YXMgdGFrZW4gYXMg dGhlIGJhc2UgdmVyc2lvbi4KPiA+IAo+ID4gVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGZvbGxv d2luZyBzdHVmZjoKPiA+IMKgwqAgKiBjb21tb24gYnVnLmggaGVhZGVyCj4gPiDCoMKgICogZ2Vu ZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBkb19idWdfZnJhbWUKPiA+IMKgwqAgKiBuZXcgY29uZmln IENPTkZJR19HRU5FUklDX0JVR19GUkFNRQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2lp IEt1cm9jaGtvIDxvbGVrc2lpLmt1cm9jaGtvQGdtYWlsLmNvbT4KPiA+IC0tLQo+ID4gQ2hhbmdl cyBpbiBWMzoKPiA+IMKgICogQWRkIGRlYnVnZ2VyX3RyYXBfZmF0YWwoKSB0byBkb19idWdfZnJh bWUoKS4gSXQgc2ltcGxpZmllcwo+ID4gdXNhZ2Ugb2YKPiA+IMKgwqDCoCBkb19idWdfZnJhbWUo KSBmb3IgeDg2IHNvIG1ha2luZyBoYW5kbGVfYnVnX2ZyYW1lKCkgYW5kCj4gPiBmaW5kX2J1Z19m cmFtZSgpCj4gPiDCoMKgwqAgbm90IG5lZWRlZCBhbnltb3JlLgo+ID4gwqAgKiBVcGRhdGUgZG9f YnVnX2ZyYW1lKCkgdG8gcmV0dXJuIC1FSU5WQUwgaWYgc29tZXRoaW5nIGdvZXMKPiA+IHdyb25n OyBvdGhlcndpc2UKPiA+IMKgwqDCoCBpZCBvZiBidWdfZnJhbWUKPiA+IMKgICogVXBkYXRlIF9B U01fQlVHRlJBTUVfVEVYVCB0byBtYWtlIGl0IG1vcmUgcG9ydGFibGUuCj4gPiDCoCAqIERyb3Ag dW5uZWNlc3NhcnkgY29tbWVudHMuCj4gPiDCoCAqIGRlZmluZSBzdHViIHZhbHVlIGZvciBUUkFQ X2ludmFsaWRfb3AgaW4gY2FzZSBpZiB3YXNuJ3QgZGVmaW5lZAo+ID4gaW4KPiA+IMKgwqDCoCBh cmNoLXNwZWNpZmljIGZvbGRlcnMuCj4gPiAtLS0KPiA+IENoYW5nZXMgaW4gVjI6Cj4gPiDCoMKg IC0gU3dpdGNoIHRvIHg4NiBpbXBsZW1lbnRhdGlvbiBhcyBnZW5lcmljIGFzIGl0IGlzIG1vcmUg Y29tcGFjdAo+ID4gwqDCoMKgwqAgKCBhdCBsZWFzdCBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9m IGJ1ZyBmcmFtZSBzdHJ1Y3R1cmUgKS4KPiA+IMKgwqAgLSBSZW5hbWUgQ09ORklHX0dFTkVSSUNf RE9fQlVHX0ZSQU1FIHRvCj4gPiBDT05GSUdfR0VORVJJQ19CVUdfRlJBTUUuCj4gPiDCoMKgIC0g Q2hhbmdlIHRoZSBtYWNybyBidWdfbG9jKGIpIHRvIGF2b2lkIHRoZSBuZWVkIGZvciBhIGNhc3Q6 Cj4gPiDCoMKgwqDCoCAjZGVmaW5lIGJ1Z19sb2MoYikgKCh1bnNpZ25lZCBsb25nKShiKSArIChi KS0+bG9jX2Rpc3ApCj4gPiDCoMKgIC0gUmVuYW1lIEJVR19GUkFNRV9TVFVGRiB0byBCVUdfRlJB TUVfU1RSVUNUCj4gPiDCoMKgIC0gTWFrZSBtYWNyb3MgcmVsYXRlZCB0byBidWcgZnJhbWUgc3Ry dWN0dXJlIG1vcmUgZ2VuZXJpYy4KPiA+IMKgwqAgLSBJbnRyb2R1Y2UgQlVHX0lOU1RSIGFuZCBN T0RJRklFUiB0byBtYWtlIF9BU01fQlVHRlJBTUVfVEVYVAo+ID4gcmV1c2FibGUKPiA+IMKgwqDC oMKgIGJldHdlZW4geDg2IGFuZCBSSVNDLVYuCj4gPiDCoMKgIC0gUmV3b3JrIGRvX2J1Z19mcmFt ZSgpIGFuZCBpbnRyb2R1Y2UgZmluZF9idWdfZnJhbWUoKSBhbmQKPiA+IGhhbmRsZV9idWdfZnJh bWUoKQo+ID4gwqDCoMKgwqAgZnVuY3Rpb25zIHRvIG1ha2UgaXQgcmV1c2FibGUgYnkgeDg2Lgo+ ID4gwqDCoCAtIGNvZGUgc3R5bGUgZml4ZXMKPiA+IC0tLQo+ID4gwqAgeGVuL2NvbW1vbi9LY29u ZmlnwqDCoMKgIHzCoMKgIDMgKwo+ID4gwqAgeGVuL2NvbW1vbi9NYWtlZmlsZcKgwqAgfMKgwqAg MSArCj4gPiDCoCB4ZW4vY29tbW9uL2J1Zy5jwqDCoMKgwqDCoCB8IDEwOSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiA+IMKgIHhlbi9pbmNsdWRlL3hlbi9idWcuaCB8IDE1MAo+ID4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiDCoCA0IGZpbGVz IGNoYW5nZWQsIDI2MyBpbnNlcnRpb25zKCspCj4gPiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgeGVu L2NvbW1vbi9idWcuYwo+ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9i dWcuaAo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9LY29uZmlnIGIveGVuL2NvbW1v bi9LY29uZmlnCj4gPiBpbmRleCBmMWVhMzE5OWM4Li5iMjI2MzIzNTM3IDEwMDY0NAo+ID4gLS0t IGEveGVuL2NvbW1vbi9LY29uZmlnCj4gPiArKysgYi94ZW4vY29tbW9uL0tjb25maWcKPiA+IEBA IC0yOCw2ICsyOCw5IEBAIGNvbmZpZyBBTFRFUk5BVElWRV9DQUxMCj4gPiDCoCBjb25maWcgQVJD SF9NQVBfRE9NQUlOX1BBR0UKPiA+IMKgwqDCoMKgwqDCoMKgwqBib29sCj4gPiDCoCAKPiA+ICtj b25maWcgR0VORVJJQ19CVUdfRlJBTUUKPiA+ICvCoMKgwqDCoMKgwqDCoGJvb2wKPiA+ICsKPiA+ IMKgIGNvbmZpZyBIQVNfQUxURVJOQVRJVkUKPiA+IMKgwqDCoMKgwqDCoMKgwqBib29sCj4gPiDC oCAKPiA+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL01ha2VmaWxlIGIveGVuL2NvbW1vbi9NYWtl ZmlsZQo+ID4gaW5kZXggYmJkNzViNGJlNi4uNDYwNDllYWMzNSAxMDA2NDQKPiA+IC0tLSBhL3hl bi9jb21tb24vTWFrZWZpbGUKPiA+ICsrKyBiL3hlbi9jb21tb24vTWFrZWZpbGUKPiA+IEBAIC0x LDUgKzEsNiBAQAo+ID4gwqAgb2JqLSQoQ09ORklHX0FSR08pICs9IGFyZ28ubwo+ID4gwqAgb2Jq LXkgKz0gYml0bWFwLm8KPiA+ICtvYmotJChDT05GSUdfR0VORVJJQ19CVUdfRlJBTUUpICs9IGJ1 Zy5vCj4gPiDCoCBvYmotJChDT05GSUdfSFlQRlNfQ09ORklHKSArPSBjb25maWdfZGF0YS5vCj4g PiDCoCBvYmotJChDT05GSUdfQ09SRV9QQVJLSU5HKSArPSBjb3JlX3Bhcmtpbmcubwo+ID4gwqAg b2JqLXkgKz0gY3B1Lm8KPiA+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2J1Zy5jIGIveGVuL2Nv bW1vbi9idWcuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAu LmY4MTcyNGZjOWIKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3hlbi9jb21tb24vYnVnLmMK PiA+IEBAIC0wLDAgKzEsMTA5IEBACj4gPiArI2luY2x1ZGUgPHhlbi9idWcuaD4KPiA+ICsjaW5j bHVkZSA8eGVuL2RlYnVnZ2VyLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9lcnJuby5oPgo+ID4gKyNp bmNsdWRlIDx4ZW4va2VybmVsLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4gPiAr I2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4KPiA+ICsjaW5jbHVkZSA8eGVuL3R5cGVzLmg+Cj4gPiAr I2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgo+ID4gKwo+ID4gKyNpbmNsdWRlIDxhc20v cHJvY2Vzc29yLmg+Cj4gPiArCj4gPiArLyogU2V0IGRlZmF1bHQgdmFsdWUgZm9yIFRSQVBfaW52 YWxpZF9vcCBhcyBpdCBpcyBkZWZpbmVkIG9ubHkgZm9yCj4gPiBYODYgbm93ICovCj4gPiArI2lm bmRlZiBUUkFQX2ludmFsaWRfb3AKPiA+ICsjZGVmaW5lIFRSQVBfaW52YWxpZF9vcCAwCj4gPiAr I2VuZGlmCj4gCj4gSXQgZmVlbHMgdG8gbWUgdGhhdCB0aGlzIHZhbHVlIHNob3VsZCBiZSBkZWZp bmVkIGluIHRoZSBlbHNlIHBhcnQgaW4gCj4geGVuL2RlYnVnZ2VyLmguCkFzIGl0IHdhcyBkaXNz Y3Vzc2VkIGluIHRoZSBvdGhlciBlLW1haWwgWzFdIHRoZSBmb2xsb3dpbmcgd2lsbCBiZQppbnRy b2R1Y2VkIGluIDx4ZW4vYnVnLmg+CgojaWZuZGVmIEJVR19ERUJVR0dFUl9UUkFQX0ZBVEFMCiNk ZWZpbmUgQlVHX0RFQlVHR0VSX1RSQVBfRkFUQUwocmVncykgMAojZW5kaWYKCmFuZCByZS1kZWZp bmVkIGluIDxhc20vYnVnLmg+LgoKT2YgY291cnNlLCBkb19idWdfZnJhbWUoKSB3aWxsIGJlIHVw ZGF0ZWQgY29ycmVzcG9uZGluZ2x5IHRvIHVzZQpCVUdfREVCVUdHRVJfVFJBUF9GQVRBTC4KClsx XQpodHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvOWI2NmVlNTEtMTdjMy0wZjhlLTBm YzItNGZmMDgzOTUyZTlkQHN1c2UuY29tLwo+IAo+ID4gKwo+ID4gK2ludCBkb19idWdfZnJhbWUo Y29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcKPiA+IHBjKQo+ IAo+IEkgd291bGQgc3VnZ2VzdCB0byBkb2N1bWVudCB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgbWVh bnQgdG8gcmV0dXJuLiAKPiBBRkFVSSwgaXQgd291bGQgcmV0dXJuIGEgbmVnYXRpdmUgdmFsdWUg aW4gY2FzZSBvZiBhbiBlcnJvciBvdGhlcndpc2UKPiB0aGUgYnVnIHR5cGUuCnN1cmUuIGknbGwg YWRkZWQgaW4gdGhlIG5leHQgcGF0Y2ggdmVyc2lvbi4KPiAKPiA+ICt7Cj4gPiArwqDCoMKgIGNv bnN0IHN0cnVjdCBidWdfZnJhbWUgKmJ1ZyA9IE5VTEw7Cj4gPiArwqDCoMKgIGNvbnN0IHN0cnVj dCB2aXJ0dWFsX3JlZ2lvbiAqcmVnaW9uOwo+ID4gK8KgwqDCoCBjb25zdCBjaGFyICpwcmVmaXgg PSAiIiwgKmZpbGVuYW1lLCAqcHJlZGljYXRlOwo+ID4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGZp eHVwOwo+ID4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaWQgPSBCVUdGUkFNRV9OUiwgbGluZW5vOwo+ ID4gKwo+ID4gK8KgwqDCoCByZWdpb24gPSBmaW5kX3RleHRfcmVnaW9uKHBjKTsKPiA+ICvCoMKg wqAgaWYgKCByZWdpb24gKQo+IAo+IE5JVDogSWYgeW91IGludmVydCB0aGUgY29uZGl0aW9uIGhl cmUsIHRoZW4geW91IGNhbiByZWR1Y2UgdGhlCj4gaW5kZW50aW9uIAo+IGJ5IG9uZSBiZWxvdy4K VGhhbmtzLiBpJ2xsIGFkZGVkIGluIHRoZSBuZXh0IHBhdGNoIHZlcnNpb24uCj4gCj4gPiArwqDC oMKgIHsKPiA+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKCBpZCA9IDA7IGlkIDwgQlVHRlJBTUVfTlI7 IGlkKysgKQo+ID4gK8KgwqDCoMKgwqDCoMKgIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmI7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 bnNpZ25lZCBpbnQgaTsKPiAKPiBZb3UgY29tcGFyZSB0aGlzIGFnYWluc3Qgbl9idWdzIHdoaWNo IGlzIGEgc2l6ZV90LiBTbywgdGhpcyB3YW50cyB0bwo+IGJlIAo+IGEgc2l6ZV90LgpUaGlzIG9u ZSB3aWxsIGJlIHVwZGF0ZWQgdG9vLiBUaGFua3MuCj4gCj4gPiArCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBmb3IgKCBpID0gMCwgYiA9IHJlZ2lvbi0+ZnJhbWVbaWRdLmJ1Z3M7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpIDwgcmVnaW9uLT5mcmFtZVtpZF0u bl9idWdzOyBiKyssIGkrKyApCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICggYnVnX2xvYyhiKSA9PSBwYyApCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBidWcgPSBiOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdvdG8gZm91bmQ7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIH0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+ICvCoMKgwqDCoMKgwqDC oCB9Cj4gPiArwqDCoMKgIH0KPiA+ICsKPiA+ICsgZm91bmQ6Cj4gPiArwqDCoMKgIGlmICggIWJ1 ZyApCj4gPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArwqDCoMKg IGlmICggaWQgPT0gQlVHRlJBTUVfcnVuX2ZuICkKPiA+ICvCoMKgwqAgewo+ID4gKyNpZmRlZiBC VUdfRk5fUkVHCj4gPiArwqDCoMKgwqDCoMKgwqAgdm9pZCAoKmZuKShjb25zdCBzdHJ1Y3QgY3B1 X3VzZXJfcmVncyAqKSA9ICh2b2lkICopcmVncy0KPiA+ID5CVUdfRk5fUkVHOwo+IAo+IEFGQUlV LCB0aGlzIGlzIG5lY2Vzc2FyeSBzbyBBcm0gY2FuIHVzZSB0aGUgZ2VuZXJpYyBkb19idWdfZnJh bWUoKS4KPiAKPiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IFJJU0MtViBhbmQgQXJt IGhhZCB0aGUgc2ltaWxhciBpc3N1ZSAKPiB3aXRoICVjLiBJdCBzZWVtcyBsaWtlIHlvdSBtYW5h Z2VkIHRvIHJlc29sdmUgaXQgb24gUklTQy1WLCBzbyBjYW4gd2UKPiBmdWxseSBzd2l0Y2ggQXJt IHRvIHRoZSBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIGJ1Zz8KSSB0cmllZCB0byBzd2l0Y2gg QVJNIHRvIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uCgpIZXJlIGlzIHRoZSBwYXRjaDogWzFdCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vYnVnLmgKYi94ZW4vYXJjaC9hcm0v aW5jbHVkZS9hc20vYnVnLmgKaW5kZXggZTZjYzM3ZTFkNi4uZmZiMGY1NjlmYyAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2J1Zy5oCisrKyBiL3hlbi9hcmNoL2FybS9pbmNs dWRlL2FzbS9idWcuaApAQCAtMSw4ICsxLDYgQEAKICNpZm5kZWYgX19BUk1fQlVHX0hfXwogI2Rl ZmluZSBfX0FSTV9CVUdfSF9fCiAKLSNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KLQogI2lmIGRlZmlu ZWQoQ09ORklHX0FSTV8zMikKICMgaW5jbHVkZSA8YXNtL2FybTMyL2J1Zy5oPgogI2VsaWYgZGVm aW5lZChDT05GSUdfQVJNXzY0KQpAQCAtMTEsNjMgKzksNyBAQAogIyBlcnJvciAidW5rbm93biBB Uk0gdmFyaWFudCIKICNlbmRpZgogCi0jZGVmaW5lIEJVR19GUkFNRV9TVFJVQ1QKLQotc3RydWN0 IGJ1Z19mcmFtZSB7Ci0gICAgc2lnbmVkIGludCBsb2NfZGlzcDsgICAgLyogUmVsYXRpdmUgYWRk cmVzcyB0byB0aGUgYnVnIGFkZHJlc3MgKi8KLSAgICBzaWduZWQgaW50IGZpbGVfZGlzcDsgICAv KiBSZWxhdGl2ZSBhZGRyZXNzIHRvIHRoZSBmaWxlbmFtZSAqLwotICAgIHNpZ25lZCBpbnQgbXNn X2Rpc3A7ICAgIC8qIFJlbGF0aXZlIGFkZHJlc3MgdG8gdGhlIHByZWRpY2F0ZSAoZm9yCkFTU0VS VCkgKi8KLSAgICB1aW50MTZfdCBsaW5lOyAgICAgICAgICAvKiBMaW5lIG51bWJlciAqLwotICAg IHVpbnQzMl90IHBhZDA6MTY7ICAgICAgIC8qIFBhZGRpbmcgZm9yIDgtYnl0ZXMgYWxpZ24gKi8K LX07Ci0KLSNkZWZpbmUgYnVnX3B0cihiKSAoKGNvbnN0IHZvaWQgKikoYikgKyAoYiktPmZpbGVf ZGlzcCkKLSNkZWZpbmUgYnVnX2xpbmUoYikgKChiKS0+bGluZSkKLSNkZWZpbmUgYnVnX21zZyhi KSAoKGNvbnN0IGNoYXIgKikoYikgKyAoYiktPm1zZ19kaXNwKQotCi0vKiBNYW55IHZlcnNpb25z IG9mIEdDQyBkb2Vzbid0IHN1cHBvcnQgdGhlIGFzbSAlYyBwYXJhbWV0ZXIgd2hpY2gKd291bGQK LSAqIGJlIHByZWZlcmFibGUgdG8gdGhpcyB1bnBsZWFzYW50bmVzcy4gV2UgdXNlIG1lcmdlYWJs ZSBzdHJpbmcKLSAqIHNlY3Rpb25zIHRvIGF2b2lkIG11bHRpcGxlIGNvcGllcyBvZiB0aGUgc3Ry aW5nIGFwcGVhcmluZyBpbiB0aGUKLSAqIFhlbiBpbWFnZS4gQlVHRlJBTUVfcnVuX2ZuIG5lZWRz IHRvIGJlIGhhbmRsZWQgc2VwYXJhdGVseS4KLSAqLwotI2RlZmluZSBCVUdfRlJBTUUodHlwZSwg bGluZSwgZmlsZSwgaGFzX21zZywgbXNnKSBkbyB7ICAgICAgICAgICAgICAgClwKLSAgICBCVUlM RF9CVUdfT04oKGxpbmUpID4+IDE2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIApcCi0gICAgQlVJTERfQlVHX09OKCh0eXBlKSA+PSBCVUdGUkFNRV9OUik7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKXAotICAgIGFzbSAoIjE6IkJVR19JTlNUUiJcbiIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClwKLSAgICAgICAgICIucHVzaHNl Y3Rpb24gLnJvZGF0YS5zdHIsIFwiYU1TXCIsICVwcm9nYml0cywgMVxuIiAgICAgICAgIApcCi0g ICAgICAgICAiMjpcdC5hc2NpeiAiIF9fc3RyaW5naWZ5KGZpbGUpICJcbiIgICAgICAgICAgICAg ICAgICAgICAgICAKXAotICAgICAgICAgIjM6XG4iICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgClwKLSAgICAgICAgICIuaWYgIiAjaGFzX21zZyAi XG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApcCi0gICAgICAgICAi XHQuYXNjaXogIiAjbXNnICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKXAotICAgICAgICAgIi5lbmRpZlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgClwKLSAgICAgICAgICIucG9wc2VjdGlvblxuIiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApcCi0gICAgICAgICAiLnB1c2hzZWN0 aW9uIC5idWdfZnJhbWVzLiIgX19zdHJpbmdpZnkodHlwZSkgIiwgXCJhXCIsCiVwcm9nYml0c1xu IlwKLSAgICAgICAgICI0OlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIApcCi0gICAgICAgICAiLnAyYWxpZ24gMlxuIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKXAotICAgICAgICAgIi5sb25nICgxYiAt IDRiKVxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClwKLSAgICAg ICAgICIubG9uZyAoMmIgLSA0YilcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIApcCi0gICAgICAgICAiLmxvbmcgKDNiIC0gNGIpXG4iICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKXAotICAgICAgICAgIi5od29yZCAiIF9fc3RyaW5naWZ5 KGxpbmUpICIsIDBcbiIgICAgICAgICAgICAgICAgICAgICAgICAgClwKLSAgICAgICAgICIucG9w c2VjdGlvbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApc Ci19IHdoaWxlICgwKQotCi0vKgotICogR0NDIHdpbGwgbm90IGFsbG93IHRvIHVzZSAiaSIgIHdo ZW4gUElFIGlzIGVuYWJsZWQgKFhlbiBkb2Vzbid0IHNldAp0aGUKLSAqIGZsYWcgYnV0IGluc3Rl YWQgcmVseSBvbiB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBjb21waWxlcikuIFNvCnRoZQot ICogZWFzaWVzdCB3YXkgdG8gaW1wbGVtZW50IHJ1bl9pbl9leGNlcHRpb25faGFuZGxlcigpIGlz IHRvIHBhc3MgdGhlCnRvCi0gKiBiZSBjYWxsZWQgZnVuY3Rpb24gaW4gYSBmaXhlZCByZWdpc3Rl ci4KLSAqLwotI2RlZmluZSAgcnVuX2luX2V4Y2VwdGlvbl9oYW5kbGVyKGZuKSBkbyB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgClwKLSAgICBhc20gKCJtb3YgIiBfX3N0cmluZ2lmeShCVUdf Rk5fUkVHKSAiLCAlMFxuIiAgICAgICAgICAgICAgICAgICAgIApcCi0gICAgICAgICAiMToiQlVH X0lOU1RSIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKXAot ICAgICAgICAgIi5wdXNoc2VjdGlvbiAuYnVnX2ZyYW1lcy4iIF9fc3RyaW5naWZ5KEJVR0ZSQU1F X3J1bl9mbikgIiwiClwKLSAgICAgICAgICIgICAgICAgICAgICAgXCJhXCIsICUlcHJvZ2JpdHNc biIgICAgICAgICAgICAgICAgICAgICAgICAgIApcCi0gICAgICAgICAiMjpcbiIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKXAotICAgICAgICAg Ii5wMmFsaWduIDJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgClwKLSAgICAgICAgICIubG9uZyAoMWIgLSAyYilcbiIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIApcCi0gICAgICAgICAiLmxvbmcgMCwgMCwgMFxuIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKXAotICAgICAgICAgIi5wb3BzZWN0 aW9uIiA6OiAiciIgKGZuKSA6IF9fc3RyaW5naWZ5KEJVR19GTl9SRUcpICk7ICAgICAgClwKLX0g d2hpbGUgKDApCisjZGVmaW5lIEJVR19BU01fQ09OU1QgICAiYyIKIAogI2VuZGlmIC8qIF9fQVJN X0JVR19IX18gKi8KLi4uCihpdCB3aWxsIGJlIG1lcmdlZCB3aXRoIHBhdGNoIDMgaWYgaXQgaXMg T0sgKQoKQW5kIGxvb2tzIGxpa2Ugd2UgY2FuIHN3aXRjaCBBUk0gdG8gZ2VuZXJpYyBpbXBsZW1l bnRhdGlvbiBhcyBhbGwgdGVzdHMKcGFzc2VkOgpodHRwczovL2dpdGxhYi5jb20veGVuLXByb2pl Y3QvcGVvcGxlL29sa3VyL3hlbi8tL3BpcGVsaW5lcy83OTE1NDkzOTYKClRoZSBvbmx5IGlzc3Vl IGlzIHdpdGggeW9jdG8tYXJtOgpodHRwczovL2dpdGxhYi5jb20veGVuLXByb2plY3QvcGVvcGxl L29sa3VyL3hlbi8tL3BpcGVsaW5lcy83OTE1NDkzOTYvZmFpbHVyZXMKQnV0IEkgYW0gbm90IHN1 cmUgdGhhdCBpdCBpcyBiZWNhdXNlIG9mIG15IHBhdGNoCgpJcyB0aGlzIGVub3VnaCBmcm9tIGEg dmVyaWZpY2F0aW9uIHBvaW50IG9mIHZpZXc/CgpbMV0KaHR0cHM6Ly9naXRsYWIuY29tL3hlbi1w cm9qZWN0L3Blb3BsZS9vbGt1ci94ZW4vLS9jb21taXQvNWZmN2EwNmUxZDM1NGUxZTQyYmRlMWMy MDNmM2NmMDVhMzY1M2FkNmh0dHBzOi8vZ2l0bGFiLmNvbS94ZW4tcHJvamVjdC9wZW9wbGUvb2xr dXIveGVuLy0vY29tbWl0LzVmZjdhMDZlMWQzNTRlMWU0MmJkZTFjMjAzZjNjZjA1YTM2NTNhZDYK PiAKPiA+ICsjZWxzZQo+ID4gK8KgwqDCoMKgwqDCoMKgIHZvaWQgKCpmbikoY29uc3Qgc3RydWN0 IGNwdV91c2VyX3JlZ3MgKikgPSBidWdfcHRyKGJ1Zyk7Cj4gPiArI2VuZGlmCj4gPiArCj4gPiAr wqDCoMKgwqDCoMKgwqAgZm4ocmVncyk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IGlkOwo+ID4gK8KgwqDCoCB9Cj4gPiArCj4gPiArwqDCoMKgIC8qIFdBUk4sIEJVRyBvciBBU1NF UlQ6IGRlY29kZSB0aGUgZmlsZW5hbWUgcG9pbnRlciBhbmQgbGluZQo+ID4gbnVtYmVyLiAqLwo+ ID4gK8KgwqDCoCBmaWxlbmFtZSA9IGJ1Z19wdHIoYnVnKTsKPiA+ICvCoMKgwqAgaWYgKCAhaXNf a2VybmVsKGZpbGVuYW1lKSAmJiAhaXNfcGF0Y2goZmlsZW5hbWUpICkKPiA+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4gLUVJTlZBTDsKPiA+ICvCoMKgwqAgZml4dXAgPSBzdHJsZW4oZmlsZW5hbWUp Owo+ID4gK8KgwqDCoCBpZiAoIGZpeHVwID4gNTAgKQo+ID4gK8KgwqDCoCB7Cj4gPiArwqDCoMKg wqDCoMKgwqAgZmlsZW5hbWUgKz0gZml4dXAgLSA0NzsKPiA+ICvCoMKgwqDCoMKgwqDCoCBwcmVm aXggPSAiLi4uIjsKPiA+ICvCoMKgwqAgfQo+ID4gK8KgwqDCoCBsaW5lbm8gPSBidWdfbGluZShi dWcpOwo+ID4gKwo+ID4gK8KgwqDCoCBzd2l0Y2ggKCBpZCApCj4gPiArwqDCoMKgIHsKPiA+ICvC oMKgwqAgY2FzZSBCVUdGUkFNRV93YXJuOgo+ID4gK8KgwqDCoMKgwqDCoMKgIHByaW50aygiWGVu IFdBUk4gYXQgJXMlczolZFxuIiwgcHJlZml4LCBmaWxlbmFtZSwgbGluZW5vKTsKPiA+ICvCoMKg wqDCoMKgwqDCoCBzaG93X2V4ZWN1dGlvbl9zdGF0ZShyZWdzKTsKPiA+ICsKPiA+ICvCoMKgwqDC oMKgwqDCoCByZXR1cm4gaWQ7Cj4gPiArCj4gPiArwqDCoMKgIGNhc2UgQlVHRlJBTUVfYnVnOgo+ ID4gK8KgwqDCoMKgwqDCoMKgIHByaW50aygiWGVuIEJVRyBhdCAlcyVzOiVkXG4iLCBwcmVmaXgs IGZpbGVuYW1lLCBsaW5lbm8pOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgIGlmICggZGVidWdn ZXJfdHJhcF9mYXRhbChUUkFQX2ludmFsaWRfb3AsIHJlZ3MpICkKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBpZDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoCBzaG93X2V4ZWN1 dGlvbl9zdGF0ZShyZWdzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoCBwYW5pYygiWGVuIEJVRyBhdCAl cyVzOiVkXG4iLCBwcmVmaXgsIGZpbGVuYW1lLCBsaW5lbm8pOwo+ID4gKwo+ID4gK8KgwqDCoCBj YXNlIEJVR0ZSQU1FX2Fzc2VydDoKPiA+ICvCoMKgwqDCoMKgwqDCoCAvKiBBU1NFUlQ6IGRlY29k ZSB0aGUgcHJlZGljYXRlIHN0cmluZyBwb2ludGVyLiAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgIHBy ZWRpY2F0ZSA9IGJ1Z19tc2coYnVnKTsKPiA+ICvCoMKgwqDCoMKgwqDCoCBpZiAoICFpc19rZXJu ZWwocHJlZGljYXRlKSAmJiAhaXNfcGF0Y2gocHJlZGljYXRlKSApCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBwcmVkaWNhdGUgPSAiPHVua25vd24+IjsKPiA+ICsKPiA+ICvCoMKgwqDCoMKg wqDCoCBwcmludGsoIkFzc2VydGlvbiAnJXMnIGZhaWxlZCBhdCAlcyVzOiVkXG4iLAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJlZGljYXRlLCBwcmVmaXgsIGZpbGVuYW1lLCBs aW5lbm8pOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgIGlmICggZGVidWdnZXJfdHJhcF9mYXRh bChUUkFQX2ludmFsaWRfb3AsIHJlZ3MpICkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBpZDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoCBzaG93X2V4ZWN1dGlvbl9zdGF0ZShy ZWdzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoCBwYW5pYygiQXNzZXJ0aW9uICclcycgZmFpbGVkIGF0 ICVzJXM6JWRcbiIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJlZGljYXRlLCBw cmVmaXgsIGZpbGVuYW1lLCBsaW5lbm8pOwo+ID4gK8KgwqDCoCB9Cj4gPiArCj4gPiArwqDCoMKg IHJldHVybiBpZDsKPiA+ICt9Cj4gPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2J1Zy5o IGIveGVuL2luY2x1ZGUveGVuL2J1Zy5oCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5k ZXggMDAwMDAwMDAwMC4uNGIxOGNmYTY5Ywo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIveGVu L2luY2x1ZGUveGVuL2J1Zy5oCj4gPiBAQCAtMCwwICsxLDE1MCBAQAo+ID4gKyNpZm5kZWYgX19Y RU5fQlVHX0hfXwo+ID4gKyNkZWZpbmUgX19YRU5fQlVHX0hfXwo+ID4gKwo+ID4gKyNkZWZpbmUg QlVHX0RJU1BfV0lEVEjCoMKgwqAgMjQKPiA+ICsjZGVmaW5lIEJVR19MSU5FX0xPX1dJRFRIICgz MSAtIEJVR19ESVNQX1dJRFRIKQo+ID4gKyNkZWZpbmUgQlVHX0xJTkVfSElfV0lEVEggKDMxIC0g QlVHX0RJU1BfV0lEVEgpCj4gPiArCj4gPiArI2RlZmluZSBCVUdGUkFNRV9ydW5fZm4gMAo+ID4g KyNkZWZpbmUgQlVHRlJBTUVfd2FybsKgwqAgMQo+ID4gKyNkZWZpbmUgQlVHRlJBTUVfYnVnwqDC oMKgIDIKPiA+ICsjZGVmaW5lIEJVR0ZSQU1FX2Fzc2VydCAzCj4gPiArCj4gPiArI2RlZmluZSBC VUdGUkFNRV9OUsKgwqDCoMKgIDQKPiA+ICsKPiA+ICsjaW5jbHVkZSA8YXNtL2J1Zy5oPgo+ID4g Kwo+ID4gKyNpZm5kZWYgX19BU1NFTUJMWV9fCj4gPiArCj4gPiArI2luY2x1ZGUgPHhlbi9lcnJu by5oPgo+IAo+IGVycm5vLmggZG9lc24ndCBsb29rIHRvIGJlIHVzZWQgd2l0aGluIHRoaXMgaGVy ZS4gU28gaXMgaXQgbmVjZXNzYXJ5Cj4gdG8gCj4gaW1wb3J0IGl0Pwo+IAo+ID4gKyNpbmNsdWRl IDx4ZW4vbGliLmg+Cj4gCj4gV2h5IGlzIHRoaXMgbmVjZXNzYXJ5IHRvIGluY2x1ZGUgaW4gdGhl IGhlYWRlcj8KPiAKPiA+ICsjaW5jbHVkZSA8eGVuL3N0cmluZ2lmeS5oPgo+IAo+IFlvdSBkb24n dCBzZWVtIHRvIHVzZSBfX3N0cmluZ2lmeSBpbiB0aGlzIGhlYWRlci4gU28gaXMgdGhpcwo+IG5l Y2Vzc2FyeT8KVGhlIG1lbnRpb25lZCBoZWFkZXJzIHdpbGwgYmUgcmVtb3ZlZC4gVGhleSB3YXMg bmVlZGVkIHdoZW4gSSB0cmllZCB0bwp1c2UgQVJNIGltcGxlbWVudGF0aW9uIGFzIGdlbmVyaWMg b25lLgo+IAo+ID4gKwo+ID4gKyNpZm5kZWYgQlVHX0ZSQU1FX1NUUlVDVAo+ID4gKwo+ID4gK3N0 cnVjdCBidWdfZnJhbWUgewo+ID4gK8KgwqDCoCBzaWduZWQgaW50IGxvY19kaXNwOkJVR19ESVNQ X1dJRFRIOwo+ID4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgbGluZV9oaTpCVUdfTElORV9ISV9XSURU SDsKPiA+ICvCoMKgwqAgc2lnbmVkIGludCBwdHJfZGlzcDpCVUdfRElTUF9XSURUSDsKPiA+ICvC oMKgwqAgdW5zaWduZWQgaW50IGxpbmVfbG86QlVHX0xJTkVfTE9fV0lEVEg7Cj4gPiArwqDCoMKg IHNpZ25lZCBpbnQgbXNnX2Rpc3BbXTsKPiA+ICt9Owo+ID4gKwo+ID4gKyNlbmRpZiAvKiBCVUdf RlJBTUVfU1RSVUNUICovCj4gPiArCj4gPiArI2lmbmRlZiBidWdfbG9jCj4gPiArI2RlZmluZSBi dWdfbG9jKGIpICgodW5zaWduZWQgbG9uZykoYikgKyAoYiktPmxvY19kaXNwKQo+ID4gKyNlbmRp Zgo+ID4gKwo+ID4gKyNpZm5kZWYgYnVnX3B0cgo+ID4gKyNkZWZpbmUgYnVnX3B0cihiKSAoKGNv bnN0IHZvaWQgKikoYikgKyAoYiktPnB0cl9kaXNwKQo+ID4gKyNlbmRpZgo+ID4gKwo+ID4gKyNp Zm5kZWYgYnVnX2xpbmUKPiA+ICsjZGVmaW5lIGJ1Z19saW5lKGIpICgoKCgoYiktPmxpbmVfaGkg KyAoKGIpLT5sb2NfZGlzcCA8IDApKQo+ID4gJsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCgx IDw8IEJVR19MSU5FX0hJX1dJRFRIKSAtIDEpKQo+ID4gPDzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJVR19MSU5FX0xPX1dJRFRIKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoKGIpLT5saW5lX2xvICsgKChi KS0+cHRyX2Rpc3AgPCAwKSkKPiA+ICbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBc Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoMSA8PCBC VUdfTElORV9MT19XSURUSCkgLSAxKSkpCj4gPiArI2VuZGlmCj4gPiArCj4gPiArI2lmbmRlZiBi dWdfbXNnCj4gPiArI2RlZmluZSBidWdfbXNnKGIpICgoY29uc3QgY2hhciAqKShiKSArIChiKS0+ bXNnX2Rpc3BbMV0pCj4gPiArI2VuZGlmCj4gCj4gRm9yIGFsbCB0aGUgbWFjcm8gYWJvdmUsIGl0 IGZlZWxzIHdyb25nIHRvIG1lIHRvIGFsbG93IGFuCj4gYXJjaGl0ZWN0dXJlIAo+IHRvIG92ZXJy aWRlIHRoZW0gaWYgdGhlIGRlZmF1bHQgQlVHX0ZSQU1FX1NUUlVDVC4KPiAKPiBJdCB3b3VsZCBh bHNvIGZlZWxzIHdyb25nIHRvIG1lIHRoYXQgaWYgdGhlIGRlZmF1bHQgQlVHX0ZSQU1FX1NUUlVD VAo+IGlzIAo+IG5vdCB1c2VkIHRvIHN0aWxsIHBhcnRpYWxseSByZWx5IG9uIHRoZSBnZW5lcmlj IHZlcnNpb24gb2YgdGhlCj4gaGVscGVyLlwKPiAKPiBTbyBJIHdvdWxkIHN1Z2dlc3QgdG8gbW92 ZSB0aGVtIGluIHRoZSAjaWZuZGVmIEJVR19GUkFNRV9TVFJVQ1QgYW5kCj4gZHJvcCAKPiB0aGUg I2lmbmRlZiA8aGVscGVyPi4KQWdyZWUuIEknbGwgZG8gdGhhdCBpbiB0aGUgbmV4dCB2ZXJzaW9u IG9mIHRoZSBwYXRjaC4gVGhhbmtzLgo+IAo+ID4gKwo+ID4gKyNpZm5kZWYgQlVHX0FTTV9DT05T VAo+ID4gKyNkZWZpbmUgQlVHX0FTTV9DT05TVCAiIgo+ID4gKyNlbmRpZgo+IAo+IFRoaXMgbGlu ZSBpcyBhIGJpdCBtaXN0ZXJpb3VzIHRvIG1lLiBXb3VsZCB5b3UgYmUgYWJsZSB0byBvdXRsaW5l IHdoeQo+IGFuIAo+IGFyY2hpdGVjdHVyZSB3b3VsZCBvdmVycmlkZSB0aGlzPwpJdCBpcyBuZWVk ZWQgaW4gY2FzZSBpZiBjb21waWxlciBmb3IgYW4gYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgaGF2ZQpw cm9wZXIgc3VwcG9ydCBvZiAnJWMnICggaXQgaXMgc28gZm9yIEFSTSAmIFJJU0MtViApCj4gCj4g PiArCj4gPiArI2lmICFkZWZpbmVkKF9BU01fQlVHRlJBTUVfVEVYVCkgfHwgIWRlZmluZWQoX0FT TV9CVUdGUkFNRV9JTkZPKQo+ID4gKwo+ID4gKyNkZWZpbmUKPiA+IF9BU01fQlVHRlJBTUVfVEVY VChzZWNvbmRfZnJhbWUpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiAr wqDCoMKgCj4gPiAiLkxidWclPToiQlVHX0lOU1RSIlxuIsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgICLCoMKg IC5wdXNoc2VjdGlvbiAuYnVnX2ZyYW1lcy4lIkJVR19BU01fQ09OU1QiW2JmX3R5cGVdLCBcImFc IiwKPiA+ICUlcHJvZ2JpdHNcbiLCoMKgwqAgXAo+ID4gK8KgwqDCoCAiwqDCoCAucDJhbGlnbgo+ ID4gMlxuIsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAKPiA+IFwKPiA+ICvCoMKgwqAKPiA+ICIuTGZybSU9OlxuIsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCAiwqDCoCAubG9uZyAoLkxidWclPSAt IC5MZnJtJT0pICsKPiA+ICUiQlVHX0FTTV9DT05TVCJbYmZfbGluZV9oaV1cbiLCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgICLCoMKgIC5sb25nICglIkJVR19B U01fQ09OU1QiW2JmX3B0cl0gLSAuTGZybSU9KSArCj4gPiAlIkJVR19BU01fQ09OU1QiW2JmX2xp bmVfbG9dXG4iXAo+ID4gK8KgwqDCoCAiwqDCoCAuaWYgIiAjc2Vjb25kX2ZyYW1lCj4gPiAiXG4i wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKg wqAgIsKgwqAgLmxvbmcgMCwgJSJCVUdfQVNNX0NPTlNUIltiZl9tc2ddIC0KPiA+IC5MZnJtJT1c biLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFwKPiA+ICvCoMKgwqAgIsKgwqAKPiA+IC5lbmRpZlxuIsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiDCoMKgwqDCoMKgwqDC oMKgIFwKPiA+ICvCoMKgwqAgIsKgwqAgLnBvcHNlY3Rpb25cbiIKPiA+ICsKPiA+ICsjZGVmaW5l IF9BU01fQlVHRlJBTUVfSU5GTyh0eXBlLCBsaW5lLCBwdHIsCj4gPiBtc2cpwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDC oCBbYmZfdHlwZV3CoMKgwqAgImkiCj4gPiAodHlwZSkswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgW2JmX3B0cl3CoMKgwqDCoCAiaSIKPiA+IChw dHIpLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKg wqAgW2JmX21zZ13CoMKgwqDCoCAiaSIKPiA+IChtc2cpLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgW2JmX2xpbmVfbG9dICJpIiAoKGxpbmUg JiAoKDEgPDwgQlVHX0xJTkVfTE9fV0lEVEgpIC0KPiA+IDEpKcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDw8Cj4gPiBCVUdfRElTUF9XSURUSCkswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgIFti Zl9saW5lX2hpXSAiaSIgKCgobGluZSkgPj4gQlVHX0xJTkVfTE9fV0lEVEgpIDw8Cj4gPiBCVUdf RElTUF9XSURUSCkKPiA+ICsKPiA+ICsjZW5kaWYgLyogX0FTTV9CVUdGUkFNRV9URVhUIHx8IF9B U01fQlVHRlJBTUVfSU5GTyAqLwo+ID4gKwo+ID4gKyNpZm5kZWYgQlVHX0ZSQU1FCj4gPiArCj4g PiArI2RlZmluZSBCVUdfRlJBTUUodHlwZSwgbGluZSwgcHRyLCBzZWNvbmRfZnJhbWUsIG1zZykg ZG8KPiA+IHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDC oCBCVUlMRF9CVUdfT04oKGxpbmUpID4+IChCVUdfTElORV9MT19XSURUSCArCj4gPiBCVUdfTElO RV9ISV9XSURUSCkpO8KgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBCVUlMRF9CVUdfT04o KHR5cGUpID49Cj4gPiBCVUdGUkFNRV9OUik7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAg YXNtIHZvbGF0aWxlICgKPiA+IF9BU01fQlVHRlJBTUVfVEVYVChzZWNvbmRfZnJhbWUpwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6OiBfQVNNX0JVR0ZSQU1FX0lORk8odHlw ZSwgbGluZSwgcHRyLCBtc2cpCj4gPiApO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK30g d2hpbGUgKDApCj4gPiArCj4gPiArI2VuZGlmCj4gPiArCj4gPiArI2lmbmRlZiBydW5faW5fZXhj ZXB0aW9uX2hhbmRsZXIKPiA+ICsKPiA+ICsvKgo+ID4gKyAqIFRPRE86IHVudGFuZ2xlIGhlYWRl ciBkZXBlbmRlbmNlcywgYnJlYWsgQlVJTERfQlVHX09OKCkgb3V0IG9mCj4gPiB4ZW4vbGliLmgs Cj4gPiArICogYW5kIHVzZSBhIHJlYWwgc3RhdGljIGlubGluZSBoZXJlIHRvIGdldCBwcm9wZXIg dHlwZSBjaGVja2luZwo+ID4gb2YgZm4oKS4KPiA+ICsgKi8KPiA+ICsjZGVmaW5lIHJ1bl9pbl9l eGNlcHRpb25faGFuZGxlcihmbinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBkbyB7wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgwqDCoMKgICh2 b2lkKSgoZm4pID09ICh2b2lkICgqKShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqKSlOVUxMKTsgXAo+ ID4gK8KgwqDCoMKgwqDCoMKgIEJVR19GUkFNRShCVUdGUkFNRV9ydW5fZm4sIDAsIGZuLCAwLCBO VUxMKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCB9IHdoaWxlICggMCAp Cj4gPiArCj4gPiArI2VuZGlmIC8qIHJ1bl9pbl9leGNlcHRpb25faGFuZGxlciAqLwo+ID4gKwo+ ID4gKyNpZm5kZWYgV0FSTgo+ID4gKyNkZWZpbmUgV0FSTigpIEJVR19GUkFNRShCVUdGUkFNRV93 YXJuLCBfX0xJTkVfXywgX19GSUxFX18sIDAsCj4gPiBOVUxMKQo+ID4gKyNlbmRpZgo+ID4gKwo+ ID4gKyNpZm5kZWYgQlVHCj4gPiArI2RlZmluZSBCVUcoKSBkbyB7wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgQlVHX0ZSQU1FKEJVR0ZSQU1FX2J1ZyzCoCBf X0xJTkVfXywgX19GSUxFX18sIDAsIE5VTEwpO8KgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCB1bnJl YWNoYWJsZSgpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArfSB3aGls ZSAoMCkKPiA+ICsjZW5kaWYKPiA+ICsKPiA+ICsjaWZuZGVmIGFzc2VydF9mYWlsZWQKPiA+ICsj ZGVmaW5lIGFzc2VydF9mYWlsZWQobXNnKSBkbyB7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgIEJVR19G UkFNRShCVUdGUkFNRV9hc3NlcnQsIF9fTElORV9fLCBfX0ZJTEVfXywgMSwgbXNnKTvCoMKgwqDC oCBcCj4gPiArwqDCoMKgIHVucmVhY2hhYmxlKCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFwKPiA+ICt9IHdoaWxlICgwKQo+ID4gKyNlbmRpZgo+ID4gKwo+ID4gKyNpZmRlZiBD T05GSUdfR0VORVJJQ19CVUdfRlJBTUUKPiA+ICsKPiA+ICtzdHJ1Y3QgY3B1X3VzZXJfcmVnczsK PiA+ICsKPiA+ICtpbnQgZG9fYnVnX2ZyYW1lKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzLCB1bnNpZ25lZCBsb25nCj4gPiBwYyk7Cj4gPiArCj4gPiArI2VuZGlmIC8qIENPTkZJR19H RU5FUklDX0JVR19GUkFNRSAqLwo+ID4gKwo+ID4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgYnVnX2Zy YW1lIF9fc3RhcnRfYnVnX2ZyYW1lc1tdLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19zdG9wX2J1Z19mcmFtZXNfMFtdLAo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgX19zdG9wX2J1Z19mcmFtZXNfMVtdLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19zdG9wX2J1Z19mcmFtZXNfMltd LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgX19zdG9wX2J1Z19mcmFtZXNfM1tdOwo+ID4gKwo+ID4gKyNlbmRpZiAvKiAhX19B U1NFTUJMWV9fICovCj4gPiArCj4gPiArI2VuZGlmIC8qIF9fWEVOX0JVR19IX18gKi8KPiA+ICsv Kgo+ID4gKyAqIExvY2FsIHZhcmlhYmxlczoKPiA+ICsgKiBtb2RlOiBDCj4gPiArICogYy1maWxl LXN0eWxlOiAiQlNEIgo+ID4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cj4gPiArICogaW5kZW50LXRh YnMtbW9kZTogbmlsCj4gPiArICogRW5kOgo+ID4gKyAqLwo+IAo+IENoZWVycywKPiAKfiBPbGVr c2lpCgo=