From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 10F563B29D for ; Mon, 22 Jan 2024 11:52:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705924337; cv=none; b=CveT43Tz0d5ejbR0FIPHBood9unH/Na7dFQ9riLy5bjJb7nZF9nM+DdDYVdv0XON2hLi0xBIUb5L0ui3/1s9LOKSHeQgg+r7DMq4b+TRl8ZAofc503ltNb/Fwdf/dwvJ6MPisVYL8q1lhkJjmgHatFLEzNAgLSkEPDMesp8MCTk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705924337; c=relaxed/simple; bh=hLvXeeqhGuNuyTGzsHBAl8MJepY8kNsRkD/edo6SSrQ=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=Ch5d2cdZhf3UBfTYSHP8auaxizdZdU8WFOsIxrN12x3az9ZW/GPjnpr+2p47UrRHUM5heXYUHooYlaknUTJV7EHctAeJLaKHbii/OlTzq6FNdKhO0HEXoIu/h1l0/BlgugZ63zP999keOvCbbU+GFElwIk0RG+sqQi4QoR+1qdg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ZMFFRZmq; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ZMFFRZmq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1705924334; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=hLvXeeqhGuNuyTGzsHBAl8MJepY8kNsRkD/edo6SSrQ=; b=ZMFFRZmqVExNFg2lZ6eUtZKdV/98OIGXb0hZDHbVXitULpY5+BPtuLUgRa584ur3dnPPqV gTH0crj8hPR6anxwHuQPVL5ZsXDHJ0SI+zjWqeghpKSLKcqflDYRngyYGlA8RkFargFb2k JEWY6aAl/lrqKfPSUeMw9fuWRpUZC7Y= Received: from mail-lf1-f71.google.com (mail-lf1-f71.google.com [209.85.167.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-632-2tMfCplcNzGhi3haDulbDw-1; Mon, 22 Jan 2024 06:52:12 -0500 X-MC-Unique: 2tMfCplcNzGhi3haDulbDw-1 Received: by mail-lf1-f71.google.com with SMTP id 2adb3069b0e04-50e411af4e6so2095694e87.2 for ; Mon, 22 Jan 2024 03:52:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705924331; x=1706529131; h=mime-version:user-agent:content-transfer-encoding:autocrypt :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=hLvXeeqhGuNuyTGzsHBAl8MJepY8kNsRkD/edo6SSrQ=; b=WMY6VT6PuB0mi+s26thEn/XJZSZyXJMuIsl6+hB4bIesI8VgLQR5ktINSGRXVtE4sN Lh2h/A7c2MX/oHhrd8HGFDlJ9ZN6fybC0ovkDxbI0P7azxhbcLTxiKaFBz90hPh/T7oc 1q1RVRMcjwpXdLzNFaTa54Gw0Q1gwtYK+yimWsh/J44IRuAdKEhdr99o8A2wpOb7Em+y fHsv4BGGy+s6cM+QtmAZeDvxRkLkLk6WzGKJTzf34qdM2+sudPYS7V3VO4MECof/40CF SKph9UZF40pT1zzaNtiMpVlGNCrlYHLhPSrh/8LLsyTxcKrSYBS/Y2BU4YrE552EFuiD ePWQ== X-Gm-Message-State: AOJu0Yzp/n4P1jsaJfA6dTD3OqmeYrlOmbq1Leapuk+XknS3iL936lCz 7UDwY4dq8QLrSzuFtXtrLf3GRnYElnsnmfrDdlRuciWe3irRJ9r2SGAfcjZx0a+g3QkWLAePeQW 02xk0KTju51F4VgigOK5Vi7ETGrKPZcWOSqaCeaySeFZa1+OtrlMNr53kStx89/w= X-Received: by 2002:a05:6512:3a8c:b0:50e:782d:7ea with SMTP id q12-20020a0565123a8c00b0050e782d07eamr2146462lfu.28.1705924331025; Mon, 22 Jan 2024 03:52:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IGptnXjrE3nQX63bAz7MQF3x5uaKLOBNMTrndqTJ7F7mq07VyLILe/BTam5Te52ikh+ztRNNA== X-Received: by 2002:a05:6512:3a8c:b0:50e:782d:7ea with SMTP id q12-20020a0565123a8c00b0050e782d07eamr2146455lfu.28.1705924330657; Mon, 22 Jan 2024 03:52:10 -0800 (PST) Received: from [172.31.0.10] (c-e6a5e255.022-110-73746f36.bbcust.telenor.se. [85.226.165.230]) by smtp.gmail.com with ESMTPSA id f43-20020a0565123b2b00b0050ec7956b1fsm1977694lfv.29.2024.01.22.03.52.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 03:52:10 -0800 (PST) Message-ID: Subject: Re: [PATCH v3] ovl: mark xwhiteouts directory with overlay.opaque='x' From: Alexander Larsson To: Amir Goldstein Cc: Miklos Szeredi , linux-unionfs@vger.kernel.org Date: Mon, 22 Jan 2024 12:52:09 +0100 In-Reply-To: References: <20240121150532.313567-1-amir73il@gmail.com> <3679657b0589ee31d09fb9db140fe57121989a69.camel@redhat.com> Autocrypt: addr=alexl@redhat.com; prefer-encrypt=mutual; keydata=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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.50.3 (3.50.3-1.fc39) Precedence: bulk X-Mailing-List: linux-unionfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 T24gTW9uLCAyMDI0LTAxLTIyIGF0IDEzOjA5ICswMjAwLCBBbWlyIEdvbGRzdGVpbiB3cm90ZToK PiBPbiBNb24sIEphbiAyMiwgMjAyNCBhdCAxMjoxNOKAr1BNIEFsZXhhbmRlciBMYXJzc29uIDxh bGV4bEByZWRoYXQuY29tPgo+IHdyb3RlOgo+ID4gCj4gPiBPbiBTdW4sIDIwMjQtMDEtMjEgYXQg MTc6MDUgKzAyMDAsIEFtaXIgR29sZHN0ZWluIHdyb3RlOgo+ID4gPiBBbiBvcGFxdWUgZGlyZWN0 b3J5IGNhbm5vdCBoYXZlIHh3aGl0ZW91dHMsIHNvIGluc3RlYWQgb2YgbWFya2luZwo+ID4gPiBh bgo+ID4gPiB4d2hpdGVvdXRzIGRpcmVjdG9yeSB3aXRoIGEgbmV3IHhhdHRyLCBvdmVybG9hZCBv dmVybGF5Lm9wYXF1ZQo+ID4gPiB4YXR0cgo+ID4gPiBmb3IgbWFya2luZyBib3RoIG9wYXF1ZSBk aXIgKCd5JykgYW5kIHh3aGl0ZW91dHMgZGlyICgneCcpLgo+ID4gPiAKPiA+ID4gVGhpcyBpcyBt b3JlIGVmZmljaWVudCBhcyB0aGUgb3ZlcmxheS5vcGFxdWUgeGF0dHIgaXMgY2hlY2tlZAo+ID4g PiBkdXJpbmcKPiA+ID4gbG9va3VwIG9mIGRpcmVjdG9yeSBhbnl3YXkuCj4gPiA+IAo+ID4gPiBU aGlzIGFsc28gcHJldmVudHMgdW5uZWNlc3NhcnkgY2hlY2tpbmcgdGhlIHhhdHRyIHdoZW4gcmVh ZGluZyBhCj4gPiA+IGRpcmVjdG9yeSB3aXRob3V0IHh3aGl0ZW91dHMsIGkuZS4gbW9zdCBvZiB0 aGUgdGltZS4KPiA+ID4gCj4gPiA+IE5vdGUgdGhhdCB0aGUgeHdoaXRlb3V0cyBtYXJrZXIgaXMg bm90IGNoZWNrZWQgb24gdGhlIHVwcGVyIGxheWVyCj4gPiA+IGFuZAo+ID4gPiBvbiB0aGUgbGFz dCBsYXllciBpbiBsb3dlcnN0YWNrLCB3aGVyZSB4d2hpdGVvdXRzIGFyZSBub3QKPiA+ID4gZXhw ZWN0ZWQuCj4gPiA+IAo+ID4gPiBGaXhlczogYmM4ZGY3YTNkYzAzICgib3ZsOiBBZGQgYW4gYWx0 ZXJuYXRpdmUgdHlwZSBvZiB3aGl0ZW91dCIpCj4gPiA+IENjOiA8c3RhYmxlQHZnZXIua2VybmVs Lm9yZz4gIyB2Ni43Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEFtaXIgR29sZHN0ZWluIDxhbWlyNzNp bEBnbWFpbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAKPiA+ID4gTWlrbG9zLAo+ID4gPiAKPiA+ID4g QWxleCBoYXMgcmVwb3J0ZWQgYSBwcm9ibGVtIHdpdGggeW91ciBzdWdnZXN0ZWQgYXBwcm9hY2gg b2YKPiA+ID4gcmVxdWlyaW5nCj4gPiA+IHh3aGl0ZW91dHMgeGF0dHIgb24gbGF5ZXJzIHJvb3Qg ZGlyIFsxXS4KPiA+ID4gCj4gPiA+IEZvbGxvd2luZyBjb3VudGVyIHByb3Bvc2FsLCBhbW9ydGl6 ZXMgdGhlIGNvc3Qgb2YgY2hlY2tpbmcgb3BhcXVlCj4gPiA+IHhhdHRyCj4gPiA+IG9uIGRpcmVj dG9yaWVzIGR1cmluZyBsb29rdXAgdG8gYWxzbyBjaGVjayBmb3IgeHdoaXRlb3V0cy4KPiA+ID4g Cj4gPiA+IFRoaXMgY2hhbmdlIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgY2hhbmdlIHRvIHRlc3Qg b3ZlcmxheS8wODQ6Cj4gPiA+IAo+ID4gPiAtLS0gYS90ZXN0cy9vdmVybGF5LzA4NAo+ID4gPiAr KysgYi90ZXN0cy9vdmVybGF5LzA4NAo+ID4gPiBAQCAtMTE1LDcgKzExNSw4IEBAIGRvX3Rlc3Rf eHdoaXRlb3V0KCkKPiA+ID4gCj4gPiA+IMKgwqDCoMKgwqDCoMKgIG1rZGlyIC1wICRiYXNlZGly L2xvd2VyICRiYXNlZGlyL3VwcGVyICRiYXNlZGlyL3dvcmsKPiA+ID4gwqDCoMKgwqDCoMKgwqAg dG91Y2ggJGJhc2VkaXIvbG93ZXIvcmVndWxhciAkYmFzZWRpci9sb3dlci9oaWRkZW4KPiA+ID4g JGJhc2VkaXIvdXBwZXIvaGlkZGVuCj4gPiA+IC3CoMKgwqDCoMKgwqAgc2V0ZmF0dHIgLW4gJHBy ZWZpeC5vdmVybGF5LndoaXRlb3V0cyAtdiAieSIKPiA+ID4gJGJhc2VkaXIvdXBwZXIKPiA+ID4g K8KgwqDCoMKgwqDCoCAjIG92ZXJsYXkub3BhcXVlPSJ4IiBtZWFucyBkaXJlY3RvcnkgaGFzIHh3 aGl0ZW91dAo+ID4gPiBjaGlsZHJlbgo+ID4gPiArwqDCoMKgwqDCoMKgIHNldGZhdHRyIC1uICRw cmVmaXgub3ZlcmxheS5vcGFxdWUgLXYgIngiICRiYXNlZGlyL3VwcGVyCj4gPiA+IMKgwqDCoMKg wqDCoMKgIHNldGZhdHRyIC1uICRwcmVmaXgub3ZlcmxheS53aGl0ZW91dCAtdiAieSIKPiA+ID4g JGJhc2VkaXIvdXBwZXIvaGlkZGVuCj4gPiA+IAo+ID4gPiAKPiA+ID4gQWxleCwKPiA+ID4gCj4g PiA+IFBsZWFzZSBsZXQgdXMga25vdyBpZiB0aGlzIGNoYW5nZSBpcyBhY2NlcHRhYmxlIGZvciBj b21wb3NlZnMuCj4gPiAKPiA+IFllcywgdGhpcyBsb29rcyB2ZXJ5IGdvb2QgdG8gbWUuIChNaW5v ciBjb21tZW50cyBiZWxvdykKPiA+IEknbGwgZG8gc29tZSB0ZXN0aW5nIG9uIHRoaXMuCj4gPiAK PiAKPiBFeGNlbGxlbnQsIEknbGwgYmUgZXhwZWN0aW5nIHlvdXIgUlZCL1Rlc3RlZC1ieS4KPiA+ IAoKWWVzClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxleGxAcmVkaGF0LmNvbT4K VGVzdGVkLWJ5OiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxleGxAcmVkaGF0LmNvbT4KCmZvciB0aGUg cGF0Y2ggaW4gdGhlIG92bC1maXhlcyBicmFuY2guCgpJIHRlc3RlZCBpdCBtYW51YWxseSwgYW5k IHdpdGggeGZzdGVzdCAod2l0aCBjaGFuZ2UpLCBhbmQgYWxzbwp3aXRoIHRoaXMgY29tcG9zZWZz IGNoYW5nZToKCmh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4bGFyc3Nvbi9jb21wb3NlZnMvdHJlZS9u ZXctZm9ybWF0LXZlcnNpb24KCkkgY3JlYXRlZCBhIGxvd2VyZGlyIHdpdGggYSByZWd1bGFyIHdo aXRlb3V0IGluLCBhbmQgYWZ0ZXIgcnVubmluZyB0aGF0CnRob3VnaCB0aGUgY2hhbmdlZCBta2Nv bXBvc2VmcyBJIHdhcyBhYmxlIHRvIG1vdW50IHRoZSBjb21wb3NlZnMgaW1hZ2UsCmFuZCB0aGVu IG1vdW50IHRoZSBsb3dlcmRpcnMgZnJvbSB0aGUgY29tcG9zZWZzIG1vdW50LCBhbmQgdGhleQpj b3JyZWN0bHkgaGFuZGxlZCB0aGUgd2hpdGVvdXQgYm90aCB3aGVuIG1vdW50ZWQgbm9ybWFsbHkg YW5kIHdpdGgKdXNlcnhhdHRyLgoKCj4gPiA+IFRoYW5rcywKPiA+ID4gQW1pci4KPiA+ID4gCj4g PiA+IFsxXQo+ID4gPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC11bmlvbmZzLzVlZTNh MjEwZjhmNGZjODljYjc1MGIzZDFhMzc4YTBmZjAxODdjOWYuY2FtZWxAcmVkaGF0LmNvbS8KPiA+ ID4gCj4gPiA+IMKgZnMvb3ZlcmxheWZzL25hbWVpLmPCoMKgwqDCoCB8IDMyICsrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tCj4gPiA+IMKgZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oIHwg MTcgKysrKysrKysrKysrKy0tLS0KPiA+ID4gwqBmcy9vdmVybGF5ZnMvb3ZsX2VudHJ5LmggfMKg IDIgKysKPiA+ID4gwqBmcy9vdmVybGF5ZnMvcmVhZGRpci5jwqDCoCB8wqAgNSArKystLQo+ID4g PiDCoGZzL292ZXJsYXlmcy9zdXBlci5jwqDCoMKgwqAgfMKgIDkgKysrKysrKysrCj4gPiA+IMKg ZnMvb3ZlcmxheWZzL3V0aWwuY8KgwqDCoMKgwqAgfCAzNCArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gPiA+IMKgNiBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAz OSBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvbmFt ZWkuYyBiL2ZzL292ZXJsYXlmcy9uYW1laS5jCj4gPiA+IGluZGV4IDk4NGZmZGFlZWQ2Yy4uY2Fj Y2YzODAzNzk2IDEwMDY0NAo+ID4gPiAtLS0gYS9mcy9vdmVybGF5ZnMvbmFtZWkuYwo+ID4gPiAr KysgYi9mcy9vdmVybGF5ZnMvbmFtZWkuYwo+ID4gPiBAQCAtMTgsMTAgKzE4LDExIEBACj4gPiA+ IAo+ID4gPiDCoHN0cnVjdCBvdmxfbG9va3VwX2RhdGEgewo+ID4gPiDCoMKgwqDCoMKgIHN0cnVj dCBzdXBlcl9ibG9jayAqc2I7Cj4gPiA+IC3CoMKgwqDCoCBzdHJ1Y3QgdmZzbW91bnQgKm1udDsK PiA+ID4gK8KgwqDCoMKgIGNvbnN0IHN0cnVjdCBvdmxfbGF5ZXIgKmxheWVyOwo+ID4gPiDCoMKg wqDCoMKgIHN0cnVjdCBxc3RyIG5hbWU7Cj4gPiA+IMKgwqDCoMKgwqAgYm9vbCBpc19kaXI7Cj4g PiA+IMKgwqDCoMKgwqAgYm9vbCBvcGFxdWU7Cj4gPiA+ICvCoMKgwqDCoCBib29sIHh3aGl0ZW91 dHM7Cj4gPiA+IMKgwqDCoMKgwqAgYm9vbCBzdG9wOwo+ID4gPiDCoMKgwqDCoMKgIGJvb2wgbGFz dDsKPiA+ID4gwqDCoMKgwqDCoCBjaGFyICpyZWRpcmVjdDsKPiA+ID4gQEAgLTIwMSwxNyArMjAy LDEzIEBAIHN0cnVjdCBkZW50cnkgKm92bF9kZWNvZGVfcmVhbF9maChzdHJ1Y3QKPiA+ID4gb3Zs X2ZzCj4gPiA+ICpvZnMsIHN0cnVjdCBvdmxfZmggKmZoLAo+ID4gPiDCoMKgwqDCoMKgIHJldHVy biByZWFsOwo+ID4gPiDCoH0KPiA+ID4gCj4gPiA+IC1zdGF0aWMgYm9vbCBvdmxfaXNfb3BhcXVl ZGlyKHN0cnVjdCBvdmxfZnMgKm9mcywgY29uc3Qgc3RydWN0Cj4gPiA+IHBhdGgKPiA+ID4gKnBh dGgpCj4gPiA+IC17Cj4gPiA+IC3CoMKgwqDCoCByZXR1cm4gb3ZsX3BhdGhfY2hlY2tfZGlyX3hh dHRyKG9mcywgcGF0aCwKPiA+ID4gT1ZMX1hBVFRSX09QQVFVRSk7Cj4gPiA+IC19Cj4gPiA+IC0K PiA+ID4gwqBzdGF0aWMgc3RydWN0IGRlbnRyeSAqb3ZsX2xvb2t1cF9wb3NpdGl2ZV91bmxvY2tl ZChzdHJ1Y3QKPiA+ID4gb3ZsX2xvb2t1cF9kYXRhICpkLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhcgo+ID4gPiAqbmFtZSwKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkZW50cnkKPiA+ID4g KmJhc2UsIGludCBsZW4sCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBib29sCj4gPiA+IGRyb3BfbmVnYXRpdmUpCj4gPiA+IMKgewo+ID4gPiAtwqDCoMKgwqAg c3RydWN0IGRlbnRyeSAqcmV0ID0gbG9va3VwX29uZV91bmxvY2tlZChtbnRfaWRtYXAoZC0+bW50 KSwKPiA+ID4gbmFtZSwgYmFzZSwgbGVuKTsKPiA+ID4gK8KgwqDCoMKgIHN0cnVjdCBkZW50cnkg KnJldCA9IGxvb2t1cF9vbmVfdW5sb2NrZWQobW50X2lkbWFwKGQtCj4gPiA+ID5sYXllci0KPiA+ ID4gPiBtbnQpLCBuYW1lLAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGJhc2UsIGxlbik7Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgIGlmICghSVNfRVJSKHJldCkgJiYg ZF9mbGFnc19uZWdhdGl2ZShzbXBfbG9hZF9hY3F1aXJlKCZyZXQtCj4gPiA+ID4gZF9mbGFncykp KSB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChkcm9wX25lZ2F0aXZlICYm IHJldC0+ZF9sb2NrcmVmLmNvdW50ID09IDEpIHsKPiA+ID4gQEAgLTIzMiwxMCArMjI5LDEzIEBA IHN0YXRpYyBpbnQgb3ZsX2xvb2t1cF9zaW5nbGUoc3RydWN0IGRlbnRyeQo+ID4gPiAqYmFzZSwg c3RydWN0IG92bF9sb29rdXBfZGF0YSAqZCwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplX3QgcHJlbGVuLCBjb25zdCBjaGFyICpw b3N0LAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBkZW50cnkgKipyZXQsIGJvb2wKPiA+ID4gZHJvcF9uZWdhdGl2ZSkKPiA+ ID4gwqB7Cj4gPiA+ICvCoMKgwqDCoCBzdHJ1Y3Qgb3ZsX2ZzICpvZnMgPSBPVkxfRlMoZC0+c2Ip Owo+ID4gPiDCoMKgwqDCoMKgIHN0cnVjdCBkZW50cnkgKnRoaXM7Cj4gPiA+IMKgwqDCoMKgwqAg c3RydWN0IHBhdGggcGF0aDsKPiA+ID4gwqDCoMKgwqDCoCBpbnQgZXJyOwo+ID4gPiDCoMKgwqDC oMKgIGJvb2wgbGFzdF9lbGVtZW50ID0gIXBvc3RbMF07Cj4gPiA+ICvCoMKgwqDCoCBib29sIGlz X3VwcGVyID0gZC0+bGF5ZXItPmlkeCA9PSAwOwo+ID4gPiArwqDCoMKgwqAgY2hhciB2YWw7Cj4g PiA+IAo+ID4gPiDCoMKgwqDCoMKgIHRoaXMgPSBvdmxfbG9va3VwX3Bvc2l0aXZlX3VubG9ja2Vk KGQsIG5hbWUsIGJhc2UsIG5hbWVsZW4sCj4gPiA+IGRyb3BfbmVnYXRpdmUpOwo+ID4gPiDCoMKg wqDCoMKgIGlmIChJU19FUlIodGhpcykpIHsKPiA+ID4gQEAgLTI1Myw4ICsyNTMsOCBAQCBzdGF0 aWMgaW50IG92bF9sb29rdXBfc2luZ2xlKHN0cnVjdCBkZW50cnkKPiA+ID4gKmJhc2UsCj4gPiA+ IHN0cnVjdCBvdmxfbG9va3VwX2RhdGEgKmQsCj4gPiA+IMKgwqDCoMKgwqAgfQo+ID4gPiAKPiA+ ID4gwqDCoMKgwqDCoCBwYXRoLmRlbnRyeSA9IHRoaXM7Cj4gPiA+IC3CoMKgwqDCoCBwYXRoLm1u dCA9IGQtPm1udDsKPiA+ID4gLcKgwqDCoMKgIGlmIChvdmxfcGF0aF9pc193aGl0ZW91dChPVkxf RlMoZC0+c2IpLCAmcGF0aCkpIHsKPiA+ID4gK8KgwqDCoMKgIHBhdGgubW50ID0gZC0+bGF5ZXIt Pm1udDsKPiA+ID4gK8KgwqDCoMKgIGlmIChvdmxfcGF0aF9pc193aGl0ZW91dChvZnMsICZwYXRo KSkgewo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkLT5zdG9wID0gZC0+b3BhcXVl ID0gdHJ1ZTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBwdXRfYW5kX291 dDsKPiA+ID4gwqDCoMKgwqDCoCB9Cj4gPiA+IEBAIC0yNzIsNyArMjcyLDcgQEAgc3RhdGljIGlu dCBvdmxfbG9va3VwX3NpbmdsZShzdHJ1Y3QgZGVudHJ5Cj4gPiA+ICpiYXNlLAo+ID4gPiBzdHJ1 Y3Qgb3ZsX2xvb2t1cF9kYXRhICpkLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZC0+c3RvcCA9IHRydWU7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIHB1dF9hbmRfb3V0Owo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB9Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyID0g b3ZsX2NoZWNrX21ldGFjb3B5X3hhdHRyKE9WTF9GUyhkLT5zYiksCj4gPiA+ICZwYXRoLAo+ID4g PiBOVUxMKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIgPSBvdmxfY2hlY2tf bWV0YWNvcHlfeGF0dHIob2ZzLCAmcGF0aCwgTlVMTCk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChlcnIgPCAwKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJyOwo+ID4gPiAKPiA+ID4gQEAgLTI5Miw3ICsyOTIs MTEgQEAgc3RhdGljIGludCBvdmxfbG9va3VwX3NpbmdsZShzdHJ1Y3QgZGVudHJ5Cj4gPiA+ICpi YXNlLCBzdHJ1Y3Qgb3ZsX2xvb2t1cF9kYXRhICpkLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoZC0+bGFzdCkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+ID4gPiAKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZiAob3ZsX2lzX29wYXF1ZWRpcihPVkxfRlMoZC0+c2IpLCAmcGF0aCkpIHsKPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBvdmVybGF5Lm9wYXF1ZT14IG1lYW5zIHh3aGl0 ZW91dHMgZGlyZWN0b3J5ICovCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsID0g b3ZsX2dldF9vcGFxdWVkaXJfdmFsKG9mcywgJnBhdGgpOwo+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChsYXN0X2VsZW1lbnQgJiYgIWlzX3VwcGVyICYmIHZhbCA9PSAneCcpIHsK PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZC0+eHdoaXRl b3V0cyA9IHRydWU7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmICh2 YWwgPT0gJ3knKSB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkLT5zdG9wID0gdHJ1ZTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmIChsYXN0X2VsZW1lbnQpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZC0+b3BhcXVlID0gdHJ1ZTsK PiA+ID4gQEAgLTEwNTUsNyArMTA1OSw3IEBAIHN0cnVjdCBkZW50cnkgKm92bF9sb29rdXAoc3Ry dWN0IGlub2RlCj4gPiA+ICpkaXIsCj4gPiA+IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPiA+ID4g wqDCoMKgwqDCoCBvbGRfY3JlZCA9IG92bF9vdmVycmlkZV9jcmVkcyhkZW50cnktPmRfc2IpOwo+ ID4gPiDCoMKgwqDCoMKgIHVwcGVyZGlyID0gb3ZsX2RlbnRyeV91cHBlcihkZW50cnktPmRfcGFy ZW50KTsKPiA+ID4gwqDCoMKgwqDCoCBpZiAodXBwZXJkaXIpIHsKPiA+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBkLm1udCA9IG92bF91cHBlcl9tbnQob2ZzKTsKPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkLmxheWVyID0gJm9mcy0+bGF5ZXJzWzBdOwo+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIgPSBvdmxfbG9va3VwX2xheWVyKHVwcGVyZGlyLCAmZCwg JnVwcGVyZGVudHJ5LAo+ID4gPiB0cnVlKTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKGVycikKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdvdG8gb3V0Owo+ID4gPiBAQCAtMTExMSw3ICsxMTE1LDcgQEAgc3RydWN0IGRlbnRyeSAq b3ZsX2xvb2t1cChzdHJ1Y3QgaW5vZGUKPiA+ID4gKmRpciwKPiA+ID4gc3RydWN0IGRlbnRyeSAq ZGVudHJ5LAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlIGlmIChkLmlzX2Rp ciB8fCAhb2ZzLT5udW1kYXRhbGF5ZXIpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkLmxhc3QgPSBsb3dlci5sYXllci0+aWR4ID09Cj4gPiA+IG92bF9u dW1sb3dlcihyb2UpOwo+ID4gPiAKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkLm1u dCA9IGxvd2VyLmxheWVyLT5tbnQ7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZC5s YXllciA9IGxvd2VyLmxheWVyOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIg PSBvdmxfbG9va3VwX2xheWVyKGxvd2VyLmRlbnRyeSwgJmQsICZ0aGlzLAo+ID4gPiBmYWxzZSk7 Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChlcnIpCj4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9wdXQ7Cj4gPiA+IEBA IC0xMjc4LDYgKzEyODIsOCBAQCBzdHJ1Y3QgZGVudHJ5ICpvdmxfbG9va3VwKHN0cnVjdCBpbm9k ZQo+ID4gPiAqZGlyLAo+ID4gPiBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCj4gPiA+IAo+ID4gPiDC oMKgwqDCoMKgIGlmICh1cHBlcm9wYXF1ZSkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgb3ZsX2RlbnRyeV9zZXRfb3BhcXVlKGRlbnRyeSk7Cj4gPiA+ICvCoMKgwqDCoCBpZiAoZC54 d2hpdGVvdXRzKQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG92bF9kZW50cnlfc2V0 X3h3aGl0ZW91dHMoZGVudHJ5KTsKPiA+ID4gCj4gPiA+IMKgwqDCoMKgwqAgaWYgKHVwcGVyZGVu dHJ5KQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvdmxfZGVudHJ5X3NldF91cHBl cl9hbGlhcyhkZW50cnkpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL292ZXJsYXlm cy5oIGIvZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oCj4gPiA+IGluZGV4IDViYTExZWI0Mzc2Ny4u NDEwYjNiZmMzYWZjIDEwMDY0NAo+ID4gPiAtLS0gYS9mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgK PiA+ID4gKysrIGIvZnMvb3ZlcmxheWZzL292ZXJsYXlmcy5oCj4gPiA+IEBAIC03MCw2ICs3MCw4 IEBAIGVudW0gb3ZsX2VudHJ5X2ZsYWcgewo+ID4gPiDCoMKgwqDCoMKgIE9WTF9FX1VQUEVSX0FM SUFTLAo+ID4gPiDCoMKgwqDCoMKgIE9WTF9FX09QQVFVRSwKPiA+ID4gwqDCoMKgwqDCoCBPVkxf RV9DT05ORUNURUQsCj4gPiA+ICvCoMKgwqDCoCAvKiBMb3dlciBzdGFjayBtYXkgY29udGFpbiB4 d2hpdGVvdXQgZW50cmllcyAqLwo+ID4gPiArwqDCoMKgwqAgT1ZMX0VfWFdISVRFT1VUUywKPiA+ ID4gwqB9Owo+ID4gPiAKPiA+ID4gwqBlbnVtIHsKPiA+ID4gQEAgLTQ3Niw2ICs0NzgsOCBAQCB2 b2lkIG92bF9kZW50cnlfY2xlYXJfZmxhZyh1bnNpZ25lZCBsb25nCj4gPiA+IGZsYWcsCj4gPiA+ IHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7Cj4gPiA+IMKgYm9vbCBvdmxfZGVudHJ5X3Rlc3RfZmxh Zyh1bnNpZ25lZCBsb25nIGZsYWcsIHN0cnVjdCBkZW50cnkKPiA+ID4gKmRlbnRyeSk7Cj4gPiA+ IMKgYm9vbCBvdmxfZGVudHJ5X2lzX29wYXF1ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwo+ID4g PiDCoGJvb2wgb3ZsX2RlbnRyeV9pc193aGl0ZW91dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwo+ ID4gPiArYm9vbCBvdmxfZGVudHJ5X2lzX3h3aGl0ZW91dHMoc3RydWN0IGRlbnRyeSAqZGVudHJ5 KTsKPiA+ID4gK3ZvaWQgb3ZsX2RlbnRyeV9zZXRfeHdoaXRlb3V0cyhzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpOwo+ID4gPiDCoHZvaWQgb3ZsX2RlbnRyeV9zZXRfb3BhcXVlKHN0cnVjdCBkZW50cnkg KmRlbnRyeSk7Cj4gPiA+IMKgYm9vbCBvdmxfZGVudHJ5X2hhc191cHBlcl9hbGlhcyhzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnkpOwo+ID4gPiDCoHZvaWQgb3ZsX2RlbnRyeV9zZXRfdXBwZXJfYWxpYXMo c3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKPiA+ID4gQEAgLTQ5NCwxMSArNDk4LDEwIEBAIHN0cnVj dCBmaWxlICpvdmxfcGF0aF9vcGVuKGNvbnN0IHN0cnVjdAo+ID4gPiBwYXRoCj4gPiA+ICpwYXRo LCBpbnQgZmxhZ3MpOwo+ID4gPiDCoGludCBvdmxfY29weV91cF9zdGFydChzdHJ1Y3QgZGVudHJ5 ICpkZW50cnksIGludCBmbGFncyk7Cj4gPiA+IMKgdm9pZCBvdmxfY29weV91cF9lbmQoc3RydWN0 IGRlbnRyeSAqZGVudHJ5KTsKPiA+ID4gwqBib29sIG92bF9hbHJlYWR5X2NvcGllZF91cChzdHJ1 Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncyk7Cj4gPiA+IC1ib29sIG92bF9wYXRoX2NoZWNr X2Rpcl94YXR0cihzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIGNvbnN0IHN0cnVjdAo+ID4gPiBwYXRoCj4g PiA+ICpwYXRoLAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBlbnVtIG92bF94YXR0ciBveCk7Cj4gPiA+ICtjaGFyIG92bF9nZXRfZGly X3hhdHRyX3ZhbChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsIGNvbnN0IHN0cnVjdCBwYXRoCj4gPiA+ICpw YXRoLAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBlbnVtIG92bF94YXR0ciBveCk7Cj4gPiA+IMKgYm9vbCBvdmxfcGF0aF9jaGVja19vcmlnaW5f eGF0dHIoc3RydWN0IG92bF9mcyAqb2ZzLCBjb25zdAo+ID4gPiBzdHJ1Y3QKPiA+ID4gcGF0aCAq cGF0aCk7Cj4gPiA+IMKgYm9vbCBvdmxfcGF0aF9jaGVja194d2hpdGVvdXRfeGF0dHIoc3RydWN0 IG92bF9mcyAqb2ZzLCBjb25zdAo+ID4gPiBzdHJ1Y3QKPiA+ID4gcGF0aCAqcGF0aCk7Cj4gPiA+ IC1ib29sIG92bF9wYXRoX2NoZWNrX3h3aGl0ZW91dHNfeGF0dHIoc3RydWN0IG92bF9mcyAqb2Zz LCBjb25zdAo+ID4gPiBzdHJ1Y3QgcGF0aCAqcGF0aCk7Cj4gPiA+IMKgYm9vbCBvdmxfaW5pdF91 dWlkX3hhdHRyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBvdmxfZnMKPiA+ID4gKm9m cywKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29u c3Qgc3RydWN0IHBhdGggKnVwcGVycGF0aCk7Cj4gPiA+IAo+ID4gPiBAQCAtNTczLDcgKzU3Niwx MyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgb3ZsX2lzX2ltcHVyZWRpcihzdHJ1Y3QKPiA+ID4gc3Vw ZXJfYmxvY2sgKnNiLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAubW50ID0gb3Zs X3VwcGVyX21udChvZnMpLAo+ID4gPiDCoMKgwqDCoMKgIH07Cj4gPiA+IAo+ID4gPiAtwqDCoMKg wqAgcmV0dXJuIG92bF9wYXRoX2NoZWNrX2Rpcl94YXR0cihvZnMsICZ1cHBlcnBhdGgsCj4gPiA+ IE9WTF9YQVRUUl9JTVBVUkUpOwo+ID4gPiArwqDCoMKgwqAgcmV0dXJuIG92bF9nZXRfZGlyX3hh dHRyX3ZhbChvZnMsICZ1cHBlcnBhdGgsCj4gPiA+IE9WTF9YQVRUUl9JTVBVUkUpID09ICd5JzsK PiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGlubGluZSBjaGFyIG92bF9nZXRfb3BhcXVl ZGlyX3ZhbChzdHJ1Y3Qgb3ZsX2ZzICpvZnMsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25z dCBzdHJ1Y3QgcGF0aCAqcGF0aCkKPiA+ID4gK3sKPiA+ID4gK8KgwqDCoMKgIHJldHVybiBvdmxf Z2V0X2Rpcl94YXR0cl92YWwob2ZzLCBwYXRoLCBPVkxfWEFUVFJfT1BBUVVFKTsKPiA+ID4gwqB9 Cj4gPiA+IAo+ID4gPiDCoHN0YXRpYyBpbmxpbmUgYm9vbCBvdmxfcmVkaXJlY3RfZm9sbG93KHN0 cnVjdCBvdmxfZnMgKm9mcykKPiA+ID4gZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9vdmxfZW50 cnkuaCBiL2ZzL292ZXJsYXlmcy9vdmxfZW50cnkuaAo+ID4gPiBpbmRleCA1ZmE5YzU4YWY2NWYu LjBiN2IyMTc0NWJhMyAxMDA2NDQKPiA+ID4gLS0tIGEvZnMvb3ZlcmxheWZzL292bF9lbnRyeS5o Cj4gPiA+ICsrKyBiL2ZzL292ZXJsYXlmcy9vdmxfZW50cnkuaAo+ID4gPiBAQCAtODYsNiArODYs OCBAQCBzdHJ1Y3Qgb3ZsX2ZzIHsKPiA+ID4gwqDCoMKgwqDCoCAvKiBTaGFyZWQgd2hpdGVvdXQg Y2FjaGUgKi8KPiA+ID4gwqDCoMKgwqDCoCBzdHJ1Y3QgZGVudHJ5ICp3aGl0ZW91dDsKPiA+ID4g wqDCoMKgwqDCoCBib29sIG5vX3NoYXJlZF93aGl0ZW91dDsKPiA+ID4gK8KgwqDCoMKgIC8qIHh3 aGl0ZW91dHMgbWF5IGV4aXN0IGluIGxvd2VyIGxheWVycyAqLwo+ID4gPiArwqDCoMKgwqAgYm9v bCB4d2hpdGVvdXRzOwo+ID4gCj4gPiBUaGlzIGNvbW1lbnQgaXMgYSBiaXQgb2ZmLCB0aGlzIGlz IG5vdyBvbmx5IHVzZWQgZm9yIHRoZSByb290IGRpci4KPiA+IAo+ID4gPiDCoMKgwqDCoMKgIC8q IHIvbyBzbmFwc2hvdCBvZiB1cHBlcmRpciBzYidzIG9ubHkgdGFrZW4gb24gdm9sYXRpbGUKPiA+ ID4gbW91bnRzICovCj4gPiA+IMKgwqDCoMKgwqAgZXJyc2VxX3QgZXJyc2VxOwo+ID4gPiDCoH07 Cj4gPiA+IGRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvcmVhZGRpci5jIGIvZnMvb3ZlcmxheWZz L3JlYWRkaXIuYwo+ID4gPiBpbmRleCBlNzExNTZiYWE3YmMuLmVkZWY0ZTM0MDFkZSAxMDA2NDQK PiA+ID4gLS0tIGEvZnMvb3ZlcmxheWZzL3JlYWRkaXIuYwo+ID4gPiArKysgYi9mcy9vdmVybGF5 ZnMvcmVhZGRpci5jCj4gPiA+IEBAIC0xNjUsNyArMTY1LDggQEAgc3RhdGljIHN0cnVjdCBvdmxf Y2FjaGVfZW50cnkKPiA+ID4gKm92bF9jYWNoZV9lbnRyeV9uZXcoc3RydWN0IG92bF9yZWFkZGly X2RhdGEgKnJkZCwKPiA+ID4gwqDCoMKgwqDCoCBwLT5pc191cHBlciA9IHJkZC0+aXNfdXBwZXI7 Cj4gPiA+IMKgwqDCoMKgwqAgcC0+aXNfd2hpdGVvdXQgPSBmYWxzZTsKPiA+ID4gwqDCoMKgwqDC oCAvKiBEZWZlciBjaGVjayBmb3Igb3ZlcmxheS53aGl0ZW91dCB0byBvdmxfaXRlcmF0ZSgpICov Cj4gPiA+IC3CoMKgwqDCoCBwLT5jaGVja194d2hpdGVvdXQgPSByZGQtPmluX3h3aGl0ZW91dHNf ZGlyICYmIGRfdHlwZSA9PQo+ID4gPiBEVF9SRUc7Cj4gPiA+ICvCoMKgwqDCoCBwLT5jaGVja194 d2hpdGVvdXQgPSByZGQtPmluX3h3aGl0ZW91dHNfZGlyICYmCj4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIXJkZC0+aXNfdXBwZXIgJiYgZF90 eXBlID09IERUX1JFRzsKPiA+ID4gCj4gPiAKPiA+IE1heWJlIHdlIGNhbiBtb3ZlIHRoZSBpc191 cHBlciBjaGVjayB0byB3aGVyZSB3ZSBzZXQKPiA+IGluX3h3aGl0ZW91dHNfZGlyPwo+ID4gCj4g PiA+IMKgwqDCoMKgwqAgaWYgKGRfdHlwZSA9PSBEVF9DSFIpIHsKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcC0+bmV4dF9tYXliZV93aGl0ZW91dCA9IHJkZC0+Zmlyc3RfbWF5YmVf d2hpdGVvdXQ7Cj4gPiA+IEBAIC0zMDYsNyArMzA3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgb3Zs X2Rpcl9yZWFkKGNvbnN0IHN0cnVjdAo+ID4gPiBwYXRoCj4gPiA+ICpyZWFscGF0aCwKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIocmVhbGZpbGUpOwo+ID4g PiAKPiA+ID4gwqDCoMKgwqDCoCByZGQtPmluX3h3aGl0ZW91dHNfZGlyID0gcmRkLT5kZW50cnkg JiYKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvdmxfcGF0aF9jaGVja194d2hpdGVv dXRzX3hhdHRyKE9WTF9GUyhyZGQtPmRlbnRyeS0KPiA+ID4gPiBkX3NiKSwgcmVhbHBhdGgpOwo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG92bF9kZW50cnlfaXNfeHdoaXRlb3V0cyhy ZGQtPmRlbnRyeSk7Cj4gPiAKPiA+IE5vdyB0aGF0IHRoZSB4d2hpdGVvdXQgZmxhZyBpcyBvbiB0 aGUgZGVudHJ5LCBpdCB3aWxsIGJlIHNldCBmb3IKPiA+IGFsbAo+ID4gbGF5ZXJzLiBNYXliZSB3 ZSBjYW4gYXZvaWQgc2V0dGluZyBpbl93aGl0ZW91dHNfZGlyIGZvciB0aGUKPiA+IGxvd2VybW9z dAo+ID4gbGF5ZXI/Cj4gPiAKPiAKPiBBcHBsaWVkIHRoaXMgZGlmZiBhbmQgcHVzaGVkIHRvIHRo ZSBvdmwtZml4ZXMgYnJhbmNoLgo+IAo+IFdpbGwgd2FpdCBmb3IgQUNLIGZyb20gTWlrbG9zIGJl Zm9yZSBzZW5kaW5nIFBSLgo+IAo+IFRoYW5rcywKPiBBbWlyLgo+IAo+IAo+IGRpZmYgLS1naXQg YS9mcy9vdmVybGF5ZnMvb3ZsX2VudHJ5LmggYi9mcy9vdmVybGF5ZnMvb3ZsX2VudHJ5LmgKPiBp bmRleCAwYjdiMjE3NDViYTMuLmMwODllNWZmMzdiNSAxMDA2NDQKPiAtLS0gYS9mcy9vdmVybGF5 ZnMvb3ZsX2VudHJ5LmgKPiArKysgYi9mcy9vdmVybGF5ZnMvb3ZsX2VudHJ5LmgKPiBAQCAtODYs NyArODYsNyBAQCBzdHJ1Y3Qgb3ZsX2ZzIHsKPiDCoMKgwqDCoMKgwqDCoCAvKiBTaGFyZWQgd2hp dGVvdXQgY2FjaGUgKi8KPiDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZGVudHJ5ICp3aGl0ZW91dDsK PiDCoMKgwqDCoMKgwqDCoCBib29sIG5vX3NoYXJlZF93aGl0ZW91dDsKPiAtwqDCoMKgwqDCoMKg IC8qIHh3aGl0ZW91dHMgbWF5IGV4aXN0IGluIGxvd2VyIGxheWVycyAqLwo+ICvCoMKgwqDCoMKg wqAgLyogeHdoaXRlb3V0cyBtYXkgZXhpc3QgaW4gbG93ZXIgbGF5ZXIgcm9vdCBkaXJzICovCj4g wqDCoMKgwqDCoMKgwqAgYm9vbCB4d2hpdGVvdXRzOwo+IMKgwqDCoMKgwqDCoMKgIC8qIHIvbyBz bmFwc2hvdCBvZiB1cHBlcmRpciBzYidzIG9ubHkgdGFrZW4gb24gdm9sYXRpbGUKPiBtb3VudHMg Ki8KPiDCoMKgwqDCoMKgwqDCoCBlcnJzZXFfdCBlcnJzZXE7Cj4gZGlmZiAtLWdpdCBhL2ZzL292 ZXJsYXlmcy9yZWFkZGlyLmMgYi9mcy9vdmVybGF5ZnMvcmVhZGRpci5jCj4gaW5kZXggZWRlZjRl MzQwMWRlLi4zMTY4ZTg1MWNhMWYgMTAwNjQ0Cj4gLS0tIGEvZnMvb3ZlcmxheWZzL3JlYWRkaXIu Ywo+ICsrKyBiL2ZzL292ZXJsYXlmcy9yZWFkZGlyLmMKPiBAQCAtMTY1LDggKzE2NSw3IEBAIHN0 YXRpYyBzdHJ1Y3Qgb3ZsX2NhY2hlX2VudHJ5Cj4gKm92bF9jYWNoZV9lbnRyeV9uZXcoc3RydWN0 IG92bF9yZWFkZGlyX2RhdGEgKnJkZCwKPiDCoMKgwqDCoMKgwqDCoCBwLT5pc191cHBlciA9IHJk ZC0+aXNfdXBwZXI7Cj4gwqDCoMKgwqDCoMKgwqAgcC0+aXNfd2hpdGVvdXQgPSBmYWxzZTsKPiDC oMKgwqDCoMKgwqDCoCAvKiBEZWZlciBjaGVjayBmb3Igb3ZlcmxheS53aGl0ZW91dCB0byBvdmxf aXRlcmF0ZSgpICovCj4gLcKgwqDCoMKgwqDCoCBwLT5jaGVja194d2hpdGVvdXQgPSByZGQtPmlu X3h3aGl0ZW91dHNfZGlyICYmCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIXJkZC0+aXNfdXBwZXIgJiYgZF90eXBlID09IERUX1JFRzsKPiAr wqDCoMKgwqDCoMKgIHAtPmNoZWNrX3h3aGl0ZW91dCA9IHJkZC0+aW5feHdoaXRlb3V0c19kaXIg JiYgZF90eXBlID09Cj4gRFRfUkVHOwo+IAo+IMKgwqDCoMKgwqDCoMKgIGlmIChkX3R5cGUgPT0g RFRfQ0hSKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHAtPm5leHRfbWF5YmVf d2hpdGVvdXQgPSByZGQtPmZpcnN0X21heWJlX3doaXRlb3V0Owo+IEBAIC0zMDYsOCArMzA1LDkg QEAgc3RhdGljIGlubGluZSBpbnQgb3ZsX2Rpcl9yZWFkKGNvbnN0IHN0cnVjdCBwYXRoCj4gKnJl YWxwYXRoLAo+IMKgwqDCoMKgwqDCoMKgIGlmIChJU19FUlIocmVhbGZpbGUpKQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VSUihyZWFsZmlsZSk7Cj4gCj4gLcKg wqDCoMKgwqDCoCByZGQtPmluX3h3aGl0ZW91dHNfZGlyID0gcmRkLT5kZW50cnkgJiYKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvdmxfZGVudHJ5X2lzX3h3aGl0ZW91dHMocmRkLT5k ZW50cnkpOwo+ICvCoMKgwqDCoMKgwqAgLyogTm8gbmVlZCB0byBjaGVjayBmb3IgeHdoaXRlb3V0 cyBpbiB1cHBlciBhbmQgbG93ZXJtb3N0Cj4gbGF5ZXJzICovCj4gK8KgwqDCoMKgwqDCoCByZGQt PmluX3h3aGl0ZW91dHNfZGlyID0gIXJkZC0+aXNfdXBwZXIgJiYgIXJkZC0+aXNfbG93ZXN0ICYm Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmRkLT5kZW50cnkgJiYgb3ZsX2RlbnRy eV9pc194d2hpdGVvdXRzKHJkZC0+ZGVudHJ5KTsKPiDCoMKgwqDCoMKgwqDCoCByZGQtPmZpcnN0 X21heWJlX3doaXRlb3V0ID0gTlVMTDsKPiDCoMKgwqDCoMKgwqDCoCByZGQtPmN0eC5wb3MgPSAw Owo+IAoKLS0gCj0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS0KPS09LT0KIEFsZXhhbmRlciBMYXJzc29uICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWQgSGF0LApJbmMgCiAgICAgICBh bGV4bEByZWRoYXQuY29tICAgICAgICAgICAgYWxleGFuZGVyLmxhcnNzb25AZ21haWwuY29tIApI ZSdzIGEgc3VpY2lkYWwgZGV2aW91cyBnYW5nc3RlciB3aXRoIGEgc2VjcmV0LiBTaGUncyBhIHdh cm0taGVhcnRlZCAKdGhpcnR5c29tZXRoaW5nIGZlbW1lIGZhdGFsZSBpbiB0aGUgd2l0bmVzcyBw cm90ZWN0aW9uIHByb2dyYW0uIFRoZXkgCmZpZ2h0IGNyaW1lISAK