From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=CIKYkqMI; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=kernel.org policy.dmarc=quarantine Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by mail.toke.dk (Postfix) with ESMTPS id 8926417C2F74 for ; Mon, 12 Oct 2026 10:15:52 +0200 (CEST) Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id C461F42EB3; Mon, 12 Oct 2026 08:15:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E3DA01F0089B; Mon, 12 Oct 2026 08:15:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791792949; bh=gTpTR8MgtArevivRS8DQFoKmOvkqNz2otEx/FY6wCn8=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=CIKYkqMIDwEkqwjTLl6ujRUhmwsqUpmRn/ZS0W88dJ5v5n1+lnRNVyHNXhqK4NpTI cWyeeeiZbnx/pFQuPJox11MpHKSoLENzQeCVUJw2plbUf3QlS7WmHKU8PQVfQIX5w0 6PvlD2lYWu/85/Ssjxrq2kaTsGrBI8tr/CO8MQnlXSzRKQDLKKJurQd4w8FsTCJUbW OGKNeL/AQwsx+sA18dr8+7dOz17H5J1JS+axKUFIcr1NX4pruhKqlPYohCiNs/WEp8 YcQA2cT13zUjzdFt2IhFbGeZXZyKiTAtg0EZB8XUDAB2ZS4k13sOBJjL+lOA0zKgb9 p7WJeTQBqIHyA== From: netdev-bot+sashiko@kernel.org To: jhs@mojatatu.com Cc: netdev@vger.kernel.org, jiri@resnulli.us, davem@davemloft.net, edumazet@kernel.org, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, victor@mojatatu.com, toke@toke.dk, moeller0@gmx.de, cake@lists.bufferbloat.net, sashiko-bot@kernel.org Date: Mon, 12 Oct 2026 08:15:48 +0000 Message-ID: <179179294846.434549.11139405033362451338@kernel.org> In-Reply-To: References: X-sashiko-severity: High Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MailFrom: netdev-bot+sashiko@kernel.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation Message-ID-Hash: VM5QB7ZXK2ZEIXZFMHO6ZBNLJRI6PZSC X-Message-ID-Hash: VM5QB7ZXK2ZEIXZFMHO6ZBNLJRI6PZSC X-Mailman-Approved-At: Tue, 13 Oct 2026 08:31:32 +0200 X-Mailman-Version: 3.3.10 Precedence: list Subject: [Cake] Re: [PATCH net-next v5] net/sched: cap the accounted backlog before it can wrap List-Id: Cake - FQ_codel the next generation Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NyBwb3RlbnRpYWwNCmlzc3VlKHMpIHRvIGNvbnNpZGVyLg0KDQpDcml0aWNhbDogMCDCtyBIaWdo OiAxIMK3IE1lZGl1bTogMiDCtyBMb3c6IDQNCg0KSWYgeW91IGJlbGlldmUgbm9uZSBvZiB0aGUg aXNzdWVzIGFyZSBsZWdpdGltYXRlLCBwbGVhc2UgcmVwbHkgdG8gZWFjaA0KaXNzdWUgb2YgTWVk aXVtIHNldmVyaXR5IG9yIGhpZ2hlciBhbmQgZXhwbGFpbiB3aHkgdGhlIEFJIGlzIHdyb25nLg0K SWYgYW55IG9mIHRoZW0gYXJlIGxlZ2l0aW1hdGUgYW5kIHlvdSBwbGFuIHRvIHJlc3BpbiwgcGxl YXNlIGxldCBwYXRjaHdvcmsNCmtub3cgYnkgaW5jbHVkaW5nICJwdy1ib3Q6IGNyIiBhcyBhIHNl cGFyYXRlIGxpbmUgYXQgdGhlIGVuZCBvZiB5b3VyIHJlcGx5DQoob25lIHN1Y2ggcmVwbHkgcGVy IHNlcmllcyBpcyBlbm91Z2gpLg0KDQotIFtIaWdoXSBUaGUgY2VpbGluZyBkb2VzIG5vdCBob2xk IGZvciBzdGFibGVzcyBub24tR1NPIHBhY2tldHMsIHNvIHRoZQ0KICB3cmFwIGFuZCB0aGUgZnFf Y29kZWxfZHJvcCgpIE5VTEwgZGVyZWZlcmVuY2UgYXJlIHN0aWxsIHJlYWNoYWJsZS4NCi0gW01l ZGl1bV0gQSBkdXBsaWNhdGluZyBuZXRlbSBjaGlsZCBsZXRzIFJFRCdzIG5ldyBiYWNrbG9nIGd1 YXJkIGJlDQogIGJ5cGFzc2VkLg0KLSBbTWVkaXVtXSBzY2hfcGx1ZyBpcyBhIHNpYmxpbmcgcWRp c2Mgd2hvc2UgYWNjb3VudGVkIGJhY2tsb2cgY2FuIHN0aWxsDQogIHdyYXAsIGFuZCB0aGUgcGF0 Y2ggZG9lcyBub3QgY292ZXIgaXQuDQotIFtMb3ddIFRoZSBwYXRjaCBoYXMgbm8gRml4ZXM6IHRh ZyAoYW5kIG5vIHN0YWJsZSBDYyksIGFsdGhvdWdoIGl0IGZpeGVzDQogIGEgdXNlci12aXNpYmxl IGRlZmVjdCByZWFjaGFibGUgZnJvbSBhIHVzZXIgbmFtZXNwYWNlOiB3cmFwcGVkIEFRTeKApg0K LSBbTG93XSBUaGUga2VybmVsLWRvYyBmb3IgUURJU0NfRFJPUF9PVkVSTElNSVQgKGluY2x1ZGUv bmV0L2Ryb3ByZWFzb24tDQogIHFkaXNjLmgpIGRlZmluZXMgaXQgYXMgJ3RoZSBxZGlzYyBxdWV1 ZSBsZW5ndGggZXhjZWVkZWQgaXRzIGNvbmZpZ3VyZWTigKYNCi0gW0xvd10gVGhlIG5ldyBoZWFk ZXIgY29tbWVudCBvbiBmcV9jb2RlbF9jbGFzc2lmeSgpIHNheXMgaXQgcmV0dXJucw0KICB0cnVl IG9ubHkgd2hlbiAnYSB0ZXJtaW5hbCBUQyBhY3Rpb24gY29uc3VtZWQgdGhlIHBhY2tldCwgb3Ig dGhl4oCmDQotIFtMb3ddIFdoZW4gdGhlIG5ldyBjYWtlX2VucXVldWUoKSBTUExJVF9HU08gc2Vn bWVudC1zdW0gY2hlY2sgcmVqZWN0cyBhDQogIHBhY2tldCwgdGhlIHNlZ21lbnQgbGlzdCBnb2Vz IG9udG8gKnRvX2ZyZWUgdmlhIF9fcWRpc2NfZHJvcF9hbGwoc2VncyzigKYNCg0KLS0NCg0KbmV0 L3NjaGVkOiBjYXAgdGhlIGFjY291bnRlZCBiYWNrbG9nIGJlZm9yZSBpdCBjYW4gd3JhcA0KDQpU aGlzIHBhdGNoIGFkZHMgcWRpc2NfYmFja2xvZ19hdF9tYXgoKSwgd2hpY2ggZHJvcHMgcGFja2V0 cyBhdCBlbnF1ZXVlDQpvbmNlIHRoZSBzdG9yZWQgMzItYml0IGJhY2tsb2cgaXMgd2l0aGluIFFE SVNDX1BLVF9MRU5fTUFYIG9mIFUzMl9NQVguDQpUaGUgZ3VhcmQgaXMgYXBwbGllZCB0byBmcV9j b2RlbCwgY2FrZSwgY29kZWwsIHBpZSwgZnFfcGllLCBkdWFscGkyLA0KcGZpZm8gYW5kIHJlZC4g VGhlIEdTTyBwa3RfbGVuIHByb2R1Y2VyIGluIHFkaXNjX3BrdF9sZW5fc2Vnc19pbml0KCkgaXMN CmFsc28gY2xhbXBlZCwgYW5kIHRoZSBmcV9jb2RlbCBhbmQgY2FrZSBjbGFzc2lmeS9oYXNoIHBh dGhzIGFyZQ0KcmVvcmRlcmVkIHNvIHRoYXQgcmVqZWN0ZWQgcGFja2V0cyBkbyBub3QgY2hhbmdl IGZsb3cgc3RhdGUuDQoNCkNsb3NlczogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbmV0ZGV2LzIw MjYwODE4MTAxMTMwLjE2MjAzLTEtamhzQG1vamF0YXR1LmNvbS8NCkxpbms6IGh0dHBzOi8vbmV0 ZGV2LWFpLmJvdHMubGludXguZGV2L3Nhc2hpa28vIy9wYXRjaHNldC8yMDI2MDgxODEwMTEzMC4x NjIwMy0xLWpoc0Btb2phdGF0dS5jb20NCkxpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL25l dGRldi9DQU5uODlpTGZNSlY3YW5jS0gxR2p6em03WlVHLWdLY3JjemtKakpFV041c0N1V2QtdWdA bWFpbC5nbWFpbC5jb20vDQpMaW5rOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9uZXRkZXYvQ0FO bjg5aStHT0ZIXzhnK3ZTVjBqVWowYUJxTFlWV3VGT3JIdURnZ1p1OWtQQ19tNnRRQG1haWwuZ21h aWwuY29tLw0KTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbmV0ZGV2L0NBTm44OWkrOTlq UGg3SmpaZj1HM091YW9tMnR1T3RBRWlIVWYyTUVzUmRWUGQ9bno0d0BtYWlsLmdtYWlsLmNvbS8N Ckxpbms6IGh0dHBzOi8vbmV0ZGV2LWFpLmJvdHMubGludXguZGV2L3Nhc2hpa28vIy9wYXRjaHNl dC9RRElTQy1CQTI3LnYzLjIwMjYwOTI5MTQyNDE3JTQwbW9qYXRhdHUuY29tDQpMaW5rOiBodHRw czovL2xvcmUua2VybmVsLm9yZy9uZXRkZXYvMjAyNjEwMDYxNTMwNDMuR004Mzg3OUBob3Jtcy5r ZXJuZWwub3JnLw0KDQo+IFRoZSBib3VuZCBpcyBleGFjdCBmb3INCj4gZXZlcnkgcHJvZHVjZXI6 IGEgc3RhYi1jbGFtcGVkIGxlbmd0aCBpcyBjYXBwZWQgYnkgUURJU0NfUEtUX0xFTl9NQVgsIGFu ZA0KPiB0aGUgc3RhYmxlc3MgR1NPIHByb2R1Y2VyIGlzIGNhcHBlZCBieSBxZGlzY19wa3RfbGVu X3NlZ3NfaW5pdCgpICh0aGUNCj4gU1BMSVRfR1NPIHBhdGggYWRkaXRpb25hbGx5IHJlLWNoZWNr cyBpdHMgc2VnbWVudCBzdW0pLiBUaGlzIGZvbGxvd3MgdGhlDQo+IGV4aXN0aW5nIGJmaWZvIGFw cHJvYWNoLCB3aGljaCBib3VuZHMgYnl0ZXMgYWdhaW5zdCB0aGUgYWNjb3VudGVkDQo+IGxlbmd0 aDsgZ3JlZCBpcyBhIHByZWNlZGVudCBvbmx5IGluIFdSRUQgbW9kZSwgd2hlcmUgaXQgYm91bmRz IHRoZQ0KPiBhZ2dyZWdhdGUsIHdoaWxlIG5vbi1XUkVEIGdyZWQgYm91bmRzIGVhY2ggdmlydHVh bCBxdWV1ZS4NCg0KW1NldmVyaXR5OiBNZWRpdW1dDQpTaG91bGQgc2NoX3BsdWcgZ2V0IHRoZSBz YW1lIGd1YXJkPyBJdCBhbHNvIG1ha2VzIGFkbWlzc2lvbiBkZWNpc2lvbnMNCm9uIHRoZSBhY2Nv dW50ZWQgYmFja2xvZywgYnV0IGl0IGlzbid0IGNvdmVyZWQgYnkgdGhpcyBwYXRjaC4NCnBsdWdf ZW5xdWV1ZSgpIGNoZWNrcyBza2ItPmxlbiwgd2hpbGUgcWRpc2NfZW5xdWV1ZV90YWlsKCkgYWRk cw0KcWRpc2NfcGt0X2xlbigpOg0KDQpuZXQvc2NoZWQvc2NoX3BsdWcuYzpwbHVnX2VucXVldWUo KSB7DQoJaWYgKGxpa2VseSgodTY0KXNjaC0+cXN0YXRzLmJhY2tsb2cgKyBza2ItPmxlbiA8PSBx LT5saW1pdCkpIHsNCgkJaWYgKCFxLT51bnBsdWdfaW5kZWZpbml0ZSkNCgkJCXEtPnBrdHNfY3Vy cmVudF9lcG9jaCsrOw0KCQlyZXR1cm4gcWRpc2NfZW5xdWV1ZV90YWlsKHNrYiwgc2NoKTsNCgl9 DQp9DQoNClRoZSB1c2VyIHN1cHBsaWVzIHEtPmxpbWl0IGFzIGEgdTMyLCB0aHJvdWdoIHBsdWdf aW5pdCgpIG9yDQpUQ1FfUExVR19MSU1JVC4gVGFrZSBsaW1pdCA9IFUzMl9NQVggYW5kIGEgMSBN aUIgc3RhYi4gQSAxMDAgYnl0ZSBza2IgaXMNCmFkbWl0dGVkIGF0IGEgYmFja2xvZyBvZiA0MDk1 IE1pQiwgYmVjYXVzZSA0MjkzOTE4NzIwICsgMTAwIDw9IFUzMl9NQVguDQpUaGUgYmFja2xvZyB0 aGVuIHJlYWNoZXMgMl4zMiBhbmQgd3JhcHMgdG8gMC4gV2hpbGUgdGhlIHFkaXNjIGlzDQpwbHVn Z2VkLCB0aGUgYnl0ZSBsaW1pdCBubyBsb25nZXIgYXBwbGllcy4NCg0KQ291bGQgcGx1Z19lbnF1 ZXVlKCkgdXNlIHFkaXNjX2JhY2tsb2dfYXRfbWF4KCksIG9yIGNvbXBhcmUgYWdhaW5zdA0KcWRp c2NfcGt0X2xlbigpPw0KDQpOb24tV1JFRCBncmVkIGhhcyBhIHNpbWlsYXIgZ2FwLiBPbmx5IGVh Y2ggdmlydHVhbCBxdWV1ZSBpcyBib3VuZGVkLCBzbw0KVlEgbGltaXRzIHRoYXQgYWRkIHVwIHRv IG1vcmUgdGhhbiA0IEdpQiBjYW4gd3JhcCB0aGUgYWdncmVnYXRlDQpzY2gtPnFzdGF0cy5iYWNr bG9nLiBUaGUgcGFzcy10aHJvdWdoIGJyYW5jaCBpbiBncmVkX2VucXVldWUoKSB0aGVuDQphZG1p dHMgYWdhaW5zdCB0aGUgd3JhcHBlZCB2YWx1ZToNCg0KCWlmIChsaWtlbHkoKHU2NClzY2gtPnFz dGF0cy5iYWNrbG9nICsgcWRpc2NfcGt0X2xlbihza2IpIDw9DQoJCQkJc2NoLT5saW1pdCkpDQoJ CXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOw0KDQo+IFJlcG9ydGVkLWJ5OiBT YXNoaWtvIChuaXBhKSA8c2FzaGlrby1ib3RAa2VybmVsLm9yZz4NCj4gQ2xvc2VzOiBodHRwczov L2xvcmUua2VybmVsLm9yZy9uZXRkZXYvMjAyNjA4MTgxMDExMzAuMTYyMDMtMS1qaHNAbW9qYXRh dHUuY29tLw0KDQpbIC4uLiBdDQoNCj4gUmV2aWV3ZWQtYnk6IFZpY3RvciBOb2d1ZWlyYSA8dmlj dG9yQG1vamF0YXR1LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogSmFtYWwgSGFkaSBTYWxpbSA8amhz QG1vamF0YXR1LmNvbT4NCg0KW1NldmVyaXR5OiBMb3ddDQpTaG91bGQgdGhpcyBjYXJyeSBhIEZp eGVzOiB0YWcsIGFuZCBwb3NzaWJseSBhIHN0YWJsZSBDYz8gSXQgZml4ZXMgYQ0KZGVmZWN0IHRo YXQgdXNlcnMgY2FuIHJlYWNoIGZyb20gYSB1c2VyIG5hbWVzcGFjZTogd3JhcHBlZCBBUU0gYmFj a2xvZ3MNCmFuZCB0aGUgZnFfY29kZWxfZHJvcCgpIE5VTEwgZGVyZWZlcmVuY2UgZGVzY3JpYmVk IGFib3ZlLg0KDQpUaGUgcGF0Y2ggYWxzbyBkZXBlbmRzIG9uIGNvbW1pdCA4ZjczNWQ2NDM4MmQg KCJuZXQvc2NoZWQ6IGJvdW5kDQpxZGlzY19wa3RfbGVuIHRvIHByZXZlbnQgcWRpc2Mgc29mdCBs b2NrdXAiKS4gVGhhdCBjb21taXQgYWRkZWQgdGhpcw0KY2xhbXAgaW4gX19xZGlzY19jYWxjdWxh dGVfcGt0X2xlbigpLCBwbHVzIHRoZSBRRElTQ19QS1RfTEVOX01BWCBkZWZpbmUNCnRoYXQgdGhp cyBwYXRjaCBtb3ZlczoNCg0KCXBrdF9sZW4gPSBjbGFtcF90KGludCwgcGt0X2xlbiwgMSwgUURJ U0NfUEtUX0xFTl9NQVgpOw0KDQo4ZjczNWQ2NDM4MmQgY2FycmllcyBGaXhlczogMWRhMTc3ZTRj M2Y0IGFuZCB3aWxsIGdvIHRvIHN0YWJsZS4gVGhlDQpRRElTQ19NQVhfQkFDS0xPRyBoZWFkcm9v bSBhcmd1bWVudCBvbmx5IGhvbGRzIHdoZW4gaXQgaXMgYXBwbGllZC4NCg0KQ291bGQgdGhlIGNv bW1pdCBtZXNzYWdlIG5hbWUgdGhpcyBkZXBlbmRlbmN5IGZvciBiYWNrcG9ydGVycz8NCg0KPiBk aWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYw0KPiBpbmRleCBmNTg3 NjQ1ZTkzMGExLi5lNmFjOTRjNjFlYTA3IDEwMDY0NA0KPiAtLS0gYS9uZXQvY29yZS9kZXYuYw0K PiArKysgYi9uZXQvY29yZS9kZXYuYw0KPiBAQCAtNDI2OCw2ICs0MjY4LDE0IEBAIHN0YXRpYyBl bnVtIHNrYl9kcm9wX3JlYXNvbiBxZGlzY19wa3RfbGVuX3NlZ3NfaW5pdChzdHJ1Y3Qgc2tfYnVm ZiAqc2tiKQ0KPiAgCQlxZGlzY19za2JfY2Ioc2tiKS0+cGt0X3NlZ3MgPSBnc29fc2VnczsNCj4g IAl9DQo+ICAJcWRpc2Nfc2tiX2NiKHNrYiktPnBrdF9sZW4gKz0gKGdzb19zZWdzIC0gMSkgKiBo ZHJfbGVuOw0KPiArCS8qIChnc29fc2VncyAtIDEpICogaGRyX2xlbiBjYW4gZXhjZWVkIFFESVND X1BLVF9MRU5fTUFYIGZvciBhIGRvZGd5DQo+ICsJICogR1NPIHNrYiwgc28gY2xhbXAgdGhlIHBy b2R1Y2VyIHRoZSBzYW1lIHdheSBhIHNpemUgdGFibGUgaXMNCj4gKwkgKiBjbGFtcGVkIChfX3Fk aXNjX2NhbGN1bGF0ZV9wa3RfbGVuKCkpLiBUaGUgYWNjb3VudGVkIGJhY2tsb2cgc3RheXMNCj4g KwkgKiB3aXRoaW4gb25lIHN0YWItY2xhbXBlZCBwYWNrZXQgb2YgVTMyX01BWCBhbmQgY2Fubm90 IHdyYXAuDQo+ICsJICovDQo+ICsJcWRpc2Nfc2tiX2NiKHNrYiktPnBrdF9sZW4gPSBtaW5fdCh1 bnNpZ25lZCBpbnQsDQo+ICsJCQkJCSAgIHFkaXNjX3NrYl9jYihza2IpLT5wa3RfbGVuLA0KPiAr CQkJCQkgICBRRElTQ19QS1RfTEVOX01BWCk7DQo+ICAJcmV0dXJuIFNLQl9OT1RfRFJPUFBFRF9Z RVQ7DQo+ICB9DQoNCltTZXZlcml0eTogSGlnaF0NCkRvZXMgdGhpcyBjbGFtcCBjb3ZlciBldmVy eSBleGl0IG9mIHFkaXNjX3BrdF9sZW5fc2Vnc19pbml0KCk/IFRoZQ0KZnVuY3Rpb24gcmV0dXJu cyBlYXJseSBmb3Igbm9uLUdTTyBza2JzLCBhbmQgZm9yIEdTTyBza2JzIHRoYXQgaGF2ZSBubw0K dHJhbnNwb3J0IGhlYWRlci4gSW4gYm90aCBjYXNlcyBwa3RfbGVuIGlzIGxlZnQgYXQgc2tiLT5s ZW46DQoNCglxZGlzY19za2JfY2Ioc2tiKS0+cGt0X2xlbiA9IHNrYi0+bGVuOw0KCWlmICghc2hp bmZvLT5nc29fc2l6ZSkgew0KCQlxZGlzY19za2JfY2Ioc2tiKS0+cGt0X3NlZ3MgPSAxOw0KCQly ZXR1cm4gU0tCX05PVF9EUk9QUEVEX1lFVDsNCgl9DQoJLi4uDQoJCWlmICh1bmxpa2VseSghc2ti X3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChza2IpKSkNCgkJCXJldHVybiBTS0JfTk9UX0RST1BQ RURfWUVUOw0KDQpJZiB0aGUgcm9vdCBoYXMgbm8gc2l6ZSB0YWJsZSwgX19xZGlzY19jYWxjdWxh dGVfcGt0X2xlbigpIG5ldmVyIHJ1bnMuDQpBIG5vbi1HU08gc2tiIGxhcmdlciB0aGFuIDEgTWlC IGlzIHRoZW4gYWNjb3VudGVkIGF0IGl0cyBmdWxsIGxlbmd0aC4NCnFkaXNjX2JhY2tsb2dfYXRf bWF4KCkgcmVzZXJ2ZXMgb25seSBRRElTQ19QS1RfTEVOX01BWCBvZiBoZWFkcm9vbSBhbmQNCmRv ZXMgbm90IGxvb2sgYXQgdGhlIGluY29taW5nIGxlbmd0aC4NCg0KU3VjaCBza2JzIGxvb2sgcmVh Y2hhYmxlOg0KDQotIHR1bl9hbGxvY19za2IoKSBlbmxhcmdlcyB0aGUgbGluZWFyIHBhcnQgZm9y IGxhcmdlIHdyaXRlcyBpbnN0ZWFkIG9mDQogIHJlamVjdGluZyB0aGVtLg0KLSBhY3RfbWlycmVk IGVncmVzcyBoYW5kcyB0aGVtIHRvIGRldl9xdWV1ZV94bWl0KCkgd2l0aG91dCBhbiBNVFUgY2hl Y2suDQotIGxvb3BiYWNrIHNldHMgbm8gbWF4X210dS4NCg0KSGVyZSBpcyBhIHBvc3NpYmxlIHNl cXVlbmNlIHdpdGggZnFfY29kZWwgZmxvd3MgPj0gMiBhbmQgbGltaXQgNDA5NDoNCg0KICAxLiBX aXRoIGEgMSBNaUIgc3RhYiwgcXVldWUgNDA5NCBzbWFsbCBwYWNrZXRzIGludG8gZmxvdyAxIGFu ZCBsZWF2ZQ0KICAgICBmbG93IDAgZW1wdHkuIFRoZSBiYWNrbG9nIGlzIDQyOTI4NzAxNDQsIHdo aWNoIGlzIDw9DQogICAgIFFESVNDX01BWF9CQUNLTE9HICg0MjkzOTE4NzE5KS4NCg0KICAyLiBS dW4gdGMgcWRpc2MgY2hhbmdlIHdpdGhvdXQgVENBX1NUQUIuIHFkaXNjX2NoYW5nZSgpIGRvZXM6 DQoNCglyY3VfYXNzaWduX3BvaW50ZXIoc2NoLT5zdGFiLCBzdGFiKTsNCg0KICAgICB3aXRoIHN0 YWIgPT0gTlVMTC4gVGhlIHF1ZXVlZCBwYWNrZXRzIGtlZXAgdGhlaXIgYWNjb3VudGVkIGxlbmd0 aHMuDQoNCiAgMy4gUmVkaXJlY3QgYSAyIE1pQiBub24tR1NPIGZyYW1lIGludG8gZmxvdyAxLiBJ dCBwYXNzZXMNCiAgICAgcWRpc2NfYmFja2xvZ19hdF9tYXgoKS4gc2NoLT5xc3RhdHMuYmFja2xv ZyBhbmQgcS0+YmFja2xvZ3NbMV0gYm90aA0KICAgICBiZWNvbWUgNDI5Mjg3MDE0NCArIDIwOTcx NTIgPSAyXjMyLCB3aGljaCBpcyAwLg0KDQogIDQuIHFsZW4gNDA5NSBpcyBhYm92ZSB0aGUgbGlt aXQsIHNvIGZxX2NvZGVsX2Ryb3AoKSBydW5zLiBJdHMgc3RyaWN0DQogICAgICc+JyBzY2FuIGtl ZXBzIGlkeCAwLCBhbmQgZGVxdWV1ZV9oZWFkKCZxLT5mbG93c1swXSkgZGVyZWZlcmVuY2VzIGEN CiAgICAgTlVMTCBmbG93LT5oZWFkLg0KDQpJZiB0aGlzIHNlcXVlbmNlIHdvcmtzLCB0aGUgY29t bWl0IG1lc3NhZ2Ugc3RhdGVtZW50ICJUaGUgYm91bmQgaXMNCmV4YWN0IGZvciBldmVyeSBwcm9k dWNlciIgd291bGQgbm90IGhvbGQgZm9yIHN0YWJsZXNzIG5vbi1HU08gcGFja2V0cy4NCg0KQ291 bGQgdGhlIGNsYW1wIGJlIGFwcGxpZWQgb24gZXZlcnkgcmV0dXJuIHBhdGggb2YNCnFkaXNjX3Br dF9sZW5fc2Vnc19pbml0KCksIG9yIGFmdGVyIHFkaXNjX2NhbGN1bGF0ZV9wa3RfbGVuKCk/DQoN Cj4gZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfY2FrZS5jIGIvbmV0L3NjaGVkL3NjaF9jYWtl LmMNCj4gaW5kZXggZGM5MzI2NzAyOWU3MC4uNjQ4NGM0ZmEwY2NjNiAxMDA2NDQNCj4gLS0tIGEv bmV0L3NjaGVkL3NjaF9jYWtlLmMNCj4gKysrIGIvbmV0L3NjaGVkL3NjaF9jYWtlLmMNCg0KWyAu Li4gXQ0KDQo+IEBAIC0xNzU4LDIyICsxNzk3LDg3IEBAIHN0YXRpYyBzMzIgY2FrZV9lbnF1ZXVl KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KDQpbIC4uLiBdDQoNCj4g KwlpZiAocWRpc2NfcGt0X3NlZ3Moc2tiKSA+IDEgJiYgcS0+Y29uZmlnLT5yYXRlX2ZsYWdzICYg Q0FLRV9GTEFHX1NQTElUX0dTTykgew0KPiArCQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgKnNlZzsN Cj4gKwkJbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMgPSBuZXRpZl9za2JfZmVhdHVyZXMoc2ti KTsNCj4gKw0KPiArCQlzZWdzID0gc2tiX2dzb19zZWdtZW50KHNrYiwgZmVhdHVyZXMgJiB+TkVU SUZfRl9HU09fTUFTSyk7DQo+ICsJCWlmIChJU19FUlJfT1JfTlVMTChzZWdzKSkNCj4gKwkJCXJl dHVybiBxZGlzY19kcm9wKHNrYiwgc2NoLCB0b19mcmVlKTsNCg0KWyAuLi4gXQ0KDQo+ICsJCWlm ICh1bmxpa2VseSgodTY0KXNjaC0+cXN0YXRzLmJhY2tsb2cgKyBzbGVuID4gUURJU0NfTUFYX0JB Q0tMT0cpKSB7DQo+ICsJCQlxZGlzY19xc3RhdHNfb3ZlcmxpbWl0KHNjaCk7DQoNClsgLi4uIF0N Cg0KPiArCQkJaWYgKHVubGlrZWx5KHNlZ3MgPT0gc2tiKSkgew0KPiArCQkJCXRjZl9zZXRfcWRp c2NfZHJvcF9yZWFzb24oc2tiLA0KPiArCQkJCQkJCSAgUURJU0NfRFJPUF9PVkVSTElNSVQpOw0K PiArCQkJCWNvbnN1bWVfc2tiKHNrYik7DQo+ICsJCQkJcmV0dXJuIHFkaXNjX2Ryb3BfYWxsKHNl Z3MsIHNjaCwgdG9fZnJlZSk7DQo+ICsJCQl9DQo+ICsJCQlfX3FkaXNjX2Ryb3BfYWxsKHNlZ3Ms IHRvX2ZyZWUpOw0KPiArCQkJcmV0dXJuIHFkaXNjX2Ryb3BfcmVhc29uKHNrYiwgc2NoLCB0b19m cmVlLA0KPiArCQkJCQkJIFFESVNDX0RST1BfT1ZFUkxJTUlUKTsNCj4gKwkJfQ0KPiArCX0NCg0K W1NldmVyaXR5OiBMb3ddDQpXaGF0IGRyb3AgcmVhc29uIGRvIHRoZSByZWplY3RlZCBzZWdtZW50 cyBjYXJyeSB3aGVuIHRoZXkgYXJlIGZyZWVkPw0KVGhleSBnbyBvbnRvICp0b19mcmVlIHdpdGhv dXQgb25lIGJlaW5nIHNldC4gT25seSBza2IsIG9yIHRoZSBoZWFkIGluDQp0aGUgZnJhZ2xpc3Qg Y2FzZSwgZ2V0cyBRRElTQ19EUk9QX09WRVJMSU1JVC4NCg0KdGNfc2tiX2NiKCktPmRyb3BfcmVh c29uIGlzIGF0IGNiIG9mZnNldCAzMi4gVGhhdCBpcyB0aGUgc2FtZSB3b3JkIGFzDQpTS0JfR1NP X0NCKHNrYiktPm1hY19vZmZzZXQuIF9fc2tiX2dzb19zZWdtZW50KCkgd3JpdGVzIGl0IGJlZm9y ZSB0aGUNCnNlZ21lbnRzIGNvcHkgdGhlIGNiOg0KDQoJU0tCX0dTT19DQihza2IpLT5tYWNfb2Zm c2V0ID0gc2tiX2hlYWRyb29tKHNrYik7DQoNCl9fdGNmX2tmcmVlX3NrYl9saXN0KCkgbGF0ZXIg cmVhZHMgaXQgYmFjazoNCg0KCXUzMiByZWFzb24gPSB0Y19za2JfY2Ioc2tiKS0+ZHJvcF9yZWFz b247DQoNClRoZSBxZGlzYyBzdWJzeXN0ZW0gYml0cyBhcmUgY2xlYXIsIHNvIHRoZSBoZWFkcm9v bSB2YWx1ZSBnb2VzIHRvDQprZnJlZV9za2JfcmVhc29uKCkgYXMgYW4gdW5yZWxhdGVkIGNvcmUg ZHJvcCByZWFzb24sIGFuZA0KdHJhY2VfcWRpc2NfZHJvcCBpcyBza2lwcGVkLiBBIGhlYWRyb29t IG9mIDAgb3IgMSB3b3VsZCBiZSByZWFkIGFzDQpTS0JfTk9UX0RST1BQRURfWUVUIG9yIFNLQl9D T05TVU1FRC4NCg0KU2hvdWxkIGVhY2ggc2VnbWVudCBnZXQgdGNmX3NldF9xZGlzY19kcm9wX3Jl YXNvbihzZWcsDQpRRElTQ19EUk9QX09WRVJMSU1JVCkgYmVmb3JlIGl0IGlzIGRlZmVycmVkPw0K DQo+IGRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2NvZGVsLmMgYi9uZXQvc2NoZWQvc2NoX2Nv ZGVsLmMNCj4gaW5kZXggYTFiYTJlMzU1ZjJkMS4uZmY3ZTcyOTg5ZGZjMSAxMDA2NDQNCj4gLS0t IGEvbmV0L3NjaGVkL3NjaF9jb2RlbC5jDQo+ICsrKyBiL25ldC9zY2hlZC9zY2hfY29kZWwuYw0K PiBAQCAtMTE2LDE1ICsxMTYsMTcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpjb2RlbF9wZWVr KHN0cnVjdCBRZGlzYyAqc2NoKQ0KPiAgc3RhdGljIGludCBjb2RlbF9xZGlzY19lbnF1ZXVlKHN0 cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KPiAgCQkJICAgICAgIHN0cnVj dCBza19idWZmICoqdG9fZnJlZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgY29kZWxfc2NoZWRfZGF0YSAq cTsNCj4gKwlzdHJ1Y3QgY29kZWxfc2NoZWRfZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCj4g IA0KPiAtCWlmIChsaWtlbHkocWRpc2NfcWxlbihzY2gpIDwgc2NoLT5saW1pdCkpIHsNCj4gLQkJ Y29kZWxfc2V0X2VucXVldWVfdGltZShza2IpOw0KPiAtCQlyZXR1cm4gcWRpc2NfZW5xdWV1ZV90 YWlsKHNrYiwgc2NoKTsNCj4gKwlpZiAodW5saWtlbHkocWRpc2NfcWxlbihzY2gpID49IHNjaC0+ bGltaXQpIHx8DQo+ICsJICAgIHVubGlrZWx5KHFkaXNjX2JhY2tsb2dfYXRfbWF4KHNjaCkpKSB7 DQo+ICsJCVdSSVRFX09OQ0UocS0+ZHJvcF9vdmVybGltaXQsIHEtPmRyb3Bfb3ZlcmxpbWl0ICsg MSk7DQo+ICsJCXJldHVybiBxZGlzY19kcm9wX3JlYXNvbihza2IsIHNjaCwgdG9fZnJlZSwNCj4g KwkJCQkJIFFESVNDX0RST1BfT1ZFUkxJTUlUKTsNCj4gIAl9DQoNCltTZXZlcml0eTogTG93XQ0K RG9lcyBRRElTQ19EUk9QX09WRVJMSU1JVCBzdGlsbCBkZXNjcmliZSB0aGlzIGRyb3A/IEl0cyBr ZXJuZWwtZG9jIGluDQppbmNsdWRlL25ldC9kcm9wcmVhc29uLXFkaXNjLmggc2F5czoNCg0KCSAq IEBRRElTQ19EUk9QX09WRVJMSU1JVDogcGFja2V0IGRyb3BwZWQgYmVjYXVzZSB0aGUgcWRpc2Mg cXVldWUNCgkgKiBsZW5ndGggZXhjZWVkZWQgaXRzIGNvbmZpZ3VyZWQgbGltaXQgKHNjaC0+bGlt aXQpLiBUaGlzIHR5cGljYWxseQ0KCSAqIGluZGljYXRlcyB0aGUgcXVldWUgaXMgZnVsbCBhbmQg Y2Fubm90IGFjY2VwdCBtb3JlIHBhY2tldHMuDQoNClRoaXMgcGF0Y2ggYWxzbyB1c2VzIGl0IGZv ciB0aGUgYnl0ZSBiYWNrbG9nIGNyb3NzaW5nIFFESVNDX01BWF9CQUNLTE9HOg0KDQotIGNvZGVs X3FkaXNjX2VucXVldWUoKSwgd2hlcmUgdGhlIHFsZW4gYW5kIGNlaWxpbmcgY2FzZXMgY2FuIG5v IGxvbmdlcg0KICBiZSB0b2xkIGFwYXJ0Lg0KLSBmcV9jb2RlbF9lbnF1ZXVlKCkuDQotIGNha2Vf ZW5xdWV1ZSgpLCBib3RoIHRoZSB0b3AtbGV2ZWwgY2hlY2sgYW5kIHRoZSBTUExJVF9HU08gc2Vn bWVudC1zdW0NCiAgcmVqZWN0aW9uLiBjYWtlIGhhcyBubyBzY2gtPmxpbWl0IHBhY2tldCBjaGVj ayBhdCBhbGwuDQotIHJlZF9lbnF1ZXVlKCkuDQoNClRoZXNlIGRyb3BzIGNhbiBoYXBwZW4gd2l0 aCBxbGVuIGZhciBiZWxvdyBzY2gtPmxpbWl0LiBGb3IgZXhhbXBsZSwNCmZxX2NvZGVsIHdpdGgg bGltaXQgMjAwMDAgZHJvcHMgYXQgYWJvdXQgNDA5NiBwYWNrZXRzLiBEcm9wIG1vbml0b3IgYW5k DQp0cmFjZXBvaW50IHVzZXJzIHdvdWxkIGJlIHBvaW50ZWQgYXQgc2NoLT5saW1pdCwgYW5kIHJh aXNpbmcgaXQgZG9lcyBub3QNCmhlbHAuDQoNCkV4aXN0aW5nIHVzYWdlIGlzIGFscmVhZHkgYSBs aXR0bGUgbG9vc2UgaGVyZSwgc2luY2UgdGhlIGR1YWxwaTINCm1lbW9yeV9saW1pdCBkcm9wcyBh bmQgdGhlIGZxX2NvZGVsIG1lbW9yeS1saW1pdGVkIGRyb3BzIGFsc28gcmVwb3J0DQp0aGlzIHJl YXNvbi4gQ291bGQgdGhlIGtlcm5lbC1kb2MgYmUgdXBkYXRlZCwgb3IgYSBzZXBhcmF0ZSByZWFz b24gdXNlZD8NCg0KWyAuLi4gXQ0KDQo+IGRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX2Nv ZGVsLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmMNCj4gaW5kZXggZTZjODdhMzI5NTBmOS4u N2M1MmFjZjIwMWM2MyAxMDA2NDQNCj4gLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jDQo+ ICsrKyBiL25ldC9zY2hlZC9zY2hfZnFfY29kZWwuYw0KPiBAQCAtNzMsMjIgKzczLDM0IEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgZnFfY29kZWxfaGFzaChjb25zdCBzdHJ1Y3QgZnFfY29kZWxfc2No ZWRfZGF0YSAqcSwNCj4gIAlyZXR1cm4gcmVjaXByb2NhbF9zY2FsZShza2JfZ2V0X2hhc2goc2ti KSwgcS0+Zmxvd3NfY250KTsNCj4gIH0NCj4gIA0KPiAtc3RhdGljIHVuc2lnbmVkIGludCBmcV9j b2RlbF9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCj4g LQkJCQkgICAgICBpbnQgKnFlcnIpDQo+ICsvKiBSdW4gdGhlIG9wdGlvbmFsIGV4dGVybmFsIGNs YXNzaWZpZXIuIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSBjYWxsZXIgbXVzdA0KPiArICogZHJvcCAo YSB0ZXJtaW5hbCBUQyBhY3Rpb24gY29uc3VtZWQgdGhlIHBhY2tldCwgb3IgdGhlIHJlc3VsdCBj YXJyaWVkIG5vDQo+ICsgKiBjbGFzcyBJRCk7IHRoZSByZWFzb24gaXMgdGhlbiBpbiAqcWVyci4g RWxzZSAqaWR4IGlzIHRoZSAxLWJhc2VkIGZsb3cNCj4gKyAqIGluZGV4LCBvciAqZG9faGFzaCBh c2tzIHRoZSBjYWxsZXIgdG8gdXNlIGZxX2NvZGVsX2hhc2goKS4NCj4gKyAqLw0KDQpbU2V2ZXJp dHk6IExvd10NCklzIHRoaXMgY29tbWVudCBjb21wbGV0ZT8gVGhlIGJvZHkgYWxzbyByZXR1cm5z IHRydWUgaW4gdHdvIG90aGVyDQpjYXNlczoNCg0KLSBObyBmaWx0ZXIgbWF0Y2hlZCAodGNmX2Ns YXNzaWZ5X3FkaXNjKCkgPCAwKS4NCi0gVGhlIG1pbm9yIGlzIHByZXNlbnQgYnV0IGdyZWF0ZXIg dGhhbiBxLT5mbG93c19jbnQuDQoNCgkJaWYgKFRDX0hfTUlOKHJlcy5jbGFzc2lkKSA+IDAgJiYN CgkJICAgIFRDX0hfTUlOKHJlcy5jbGFzc2lkKSA8PSBxLT5mbG93c19jbnQpIHsNCgkJCSppZHgg PSBUQ19IX01JTihyZXMuY2xhc3NpZCk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9DQoJcmV0 dXJuIHRydWU7DQoNClRDX0FDVF9TSE9UIGlzIGFsc28gYSBkcm9wIHdpdGggX19ORVRfWE1JVF9C WVBBU1MsIG5vdCBhIGNvbnN1bWVkDQpwYWNrZXQsIGFuZCB0aGUgY2FrZV90Y2ZfY2xhc3NpZnko KSBjb21tZW50IHVzZXMgdGhlIHNhbWUgd29yZGluZy4NCg0KVGhlIHR3byBuZXcgaGVscGVycyBo YW5kbGUgbm8tbWF0Y2ggaW4gb3Bwb3NpdGUgd2F5czogY2FrZSBoYXNoZXMgdGhlDQpwYWNrZXQg YW5kIGZxX2NvZGVsIGRyb3BzIGl0LiBUaGF0IG1hdGNoZXMgdGhlIHByZS1wYXRjaCBiZWhhdmlv dXIsIGJ1dA0Kb25seSB0aGUgY2FrZSBjb21tZW50IHNheXMgc28uIENvdWxkIHRoZSBmcV9jb2Rl bCBjb21tZW50IGxpc3QgYWxsIHRoZQ0KZHJvcCBjYXNlcz8NCg0KWyAuLi4gXQ0KDQo+IGRpZmYg LS1naXQgYS9uZXQvc2NoZWQvc2NoX3JlZC5jIGIvbmV0L3NjaGVkL3NjaF9yZWQuYw0KPiBpbmRl eCBkNzU5ODIxNDI3MGI4Li5lM2EyNTRmOWRiZGY5IDEwMDY0NA0KPiAtLS0gYS9uZXQvc2NoZWQv c2NoX3JlZC5jDQo+ICsrKyBiL25ldC9zY2hlZC9zY2hfcmVkLmMNCj4gQEAgLTc2LDYgKzc2LDEy IEBAIHN0YXRpYyBpbnQgcmVkX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFk aXNjICpzY2gsDQo+ICAJdW5zaWduZWQgaW50IGxlbjsNCj4gIAlpbnQgcmV0Ow0KPiAgDQo+ICsJ aWYgKHVubGlrZWx5KHFkaXNjX2JhY2tsb2dfYXRfbWF4KHNjaCkpKSB7DQo+ICsJCXFkaXNjX3Fz dGF0c19vdmVybGltaXQoc2NoKTsNCj4gKwkJcmV0dXJuIHFkaXNjX2Ryb3BfcmVhc29uKHNrYiwg c2NoLCB0b19mcmVlLA0KPiArCQkJCQkgUURJU0NfRFJPUF9PVkVSTElNSVQpOw0KPiArCX0NCj4g Kw0KPiAgCXEtPnZhcnMucWF2ZyA9IHJlZF9jYWxjX3FhdmcoJnEtPnBhcm1zLA0KPiAgCQkJCSAg ICAgJnEtPnZhcnMsDQo+ICAJCQkJICAgICBjaGlsZC0+cXN0YXRzLmJhY2tsb2cpOw0KDQpbU2V2 ZXJpdHk6IE1lZGl1bV0NCkNhbiBhIGR1cGxpY2F0aW5nIG5ldGVtIGNoaWxkIGdldCBhcm91bmQg dGhpcyBjaGVjaz8gcmVkX2VucXVldWUoKQ0KdGVzdHMgdGhlIGJhY2tsb2cgb25jZSBhbmQgdGhl biBjYWxscyBxZGlzY19lbnF1ZXVlKCkgb24gdGhlIGNoaWxkLg0KbmV0ZW1fZW5xdWV1ZSgpIHJl LWVudGVycyB0aGUgcm9vdCB3aXRoIHRoZSBkdXBsaWNhdGUgYmVmb3JlIGl0IGFjY291bnRzDQp0 aGUgb3JpZ2luYWw6DQoNCm5ldC9zY2hlZC9zY2hfbmV0ZW0uYzpuZXRlbV9lbnF1ZXVlKCkgew0K CWlmIChza2IyKSB7DQoJCXN0cnVjdCBRZGlzYyAqcm9vdHEgPSBxZGlzY19yb290X2JoKHNjaCk7 DQoNCgkJc2tiMi0+dGNfZGVwdGgrKzsgLyogcHJldmVudCBkdXBsaWNhdGluZyBhIGR1cC4uLiAq Lw0KCQlyb290cS0+ZW5xdWV1ZShza2IyLCByb290cSwgdG9fZnJlZSk7DQoJCXNrYjIgPSBOVUxM Ow0KCX0NCg0KCXFkaXNjX3FzdGF0c19iYWNrbG9nX2luYyhzY2gsIHNrYik7DQp9DQoNClRoZSBu ZXN0ZWQgcmVkX2VucXVldWUoKSBzZWVzIHRoZSBzYW1lIFJFRCBiYWNrbG9nIHRoYXQgdGhlIG91 dGVyIGNhbGwNCmNoZWNrZWQsIHNvIG9uZSBjaGVjayBhZG1pdHMgdHdvIHBhY2tldHMuIFRoZSBv dXRlciBjYWxsIHRoZW4gZG9lcw0KcXN0YXRzX2JhY2tsb2dfYWRkKHNjaCwgbGVuKSB3aXRob3V0 IGNoZWNraW5nIGFnYWluLg0KDQpUYWtlIGEgMSBNaUIgc3RhYiwgUkVEIGluIGVjbiBub2Ryb3Ag bW9kZSwgYW5kIGEgbmV0ZW0gY2hpbGQgd2l0aA0KZHVwbGljYXRlIDEwMCUgYW5kIGEgbGFyZ2Ug bGltaXQuIEFmdGVyIDIwNDcgaW5wdXRzIHRoZSBiYWNrbG9nIGlzDQo0MDk0IE1pQiwgd2hpY2gg aXMgc3RpbGwgPD0gUURJU0NfTUFYX0JBQ0tMT0cuIFRoZSAyMDQ4dGggaW5wdXQgYWRkcyB0d28N CjEgTWlCIHBhY2tldHMsIGFuZCB0aGUgUkVEIGFuZCBuZXRlbSBxc3RhdHMuYmFja2xvZyBib3Ro IHJlYWNoIDJeMzIsDQp3aGljaCBpcyAwLiByZWRfY2FsY19xYXZnKCkgdGhlbiByZWFkcyBhIHdy YXBwZWQgY2hpbGQgYmFja2xvZy4NCg0KVGhlIGNvbW1pdCBtZXNzYWdlIG5hbWVzIGNoaWxkIEdT TyBzZWdtZW50YXRpb24gdGhyb3VnaA0KcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZygpIGFzIGEg a25vd24gUkVEIGdhcCwgYnV0IG5vdCB0aGlzIGR1cGxpY2F0aW9uDQpwYXRoLiBJcyB0aGlzIGNh c2UgbWVhbnQgdG8gYmUgY292ZXJlZCBoZXJlLCBvciBpbiB0aGUgc2VwYXJhdGUgY2hhbmdlPw0K DQotLSANClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vbmV0ZGV2LWFpLmJvdHMubGludXgu ZGV2L3Nhc2hpa28vIy9wYXRjaHNldC9RRElTQy1CQTI3LnY1LjIwMjYxMDA3MTcxNTA5JTQwbW9q YXRhdHUuY29tDQo=