From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass smtp.mailfrom=; dkim=pass header.d=herbertland.com; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=herbertland.com policy.dmarc=reject Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by mail.toke.dk (Postfix) with ESMTPS id 91A9E69AC63 for ; Tue, 16 Sep 2025 02:05:25 +0200 (CEST) Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-336c86796c0so38577171fa.2 for ; Mon, 15 Sep 2025 17:05:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=herbertland.com; s=google; t=1757981123; x=1758585923; darn=lists.bufferbloat.net; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=fdX/3DOWHLfw6DbT2DorvgLPgFdRRP8hwc8D1x01XAA=; b=guCGpG4GQY3X0z/mC+nANBlsyroyFrL3+kJKA58wsxkEWGzL1SbvIYBjv9+CenMs65 I7Lb4SFYFr3rr78V+uybAfPnBMaAanB29dFyBvVXUCMAvi8n8/evY7qjm4lGHY0cMBIX ZmNtye6MvwY6HLnna/O6x51JTEgM62ut4juAwZXTI1qzT4tsJfigU073w2sb17AMROeE No2C0G5PWSQA1g1ujcrqnDNBZ5dslakQiyq0CRkorx4QxEWr8crDEVvAQfQsjjLcQJPM /aHFEEBdZNO1X0uDom1FnPVcfQneym0Q0hbfSk/u3EVaPlSMLgQPh17/VLQim9oQrSEn IXMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757981123; x=1758585923; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fdX/3DOWHLfw6DbT2DorvgLPgFdRRP8hwc8D1x01XAA=; b=htSG0hydUTP/3YqCqXbx1dZJ3IpAH+BETZG2pVyymu25mPOSSgbJYe1YaBVCT5dejZ 0K+QcNwLZCoCHhLr+Z9xdFco5VdfNUAHYlva9UtX2cELMtJD9V0iMaWFhKLLld4matFF 9YN9Ivdk18s13SVcoOY51oybjPFe0KWmGR5QXjaIelzLkuHatLGISP7E7FwTi1xdM3VV GP/lmZc8RbHwfLBHntnhPpAmTzcO5VJafwL9Epcgpi7lv1mvxiTpgYlqtoSCLaOaRt++ ONFiSNAEskNOl30DiqohiuHahBXcoWKRGX6vjc3uPnNFd1kDu3ASOPTBY/cYTi6hxMnk I99g== X-Forwarded-Encrypted: i=1; AJvYcCUYHfthAfCtzlEdKOmFzlGeytup5HKFBQHLVUfP482Wig+HBjHPJBJ2G8n/eJUJQ5vgd/un/w==@lists.bufferbloat.net X-Gm-Message-State: AOJu0Yx2kuUIxwGxj8IOmw++s8LmeDqaHO7URUreEyXL3ER6uAqOYTUG 92iucqRo0zjIuzvJfx8XVRUwBuC7WaMROX69nLnh+k00SVb7euiPqHyYaZeFEUySGr7V6/YR0SY x2QEPglGbCwWrpz2Lw5Qr+XjSHn821oCefceKMft2 X-Gm-Gg: ASbGnctb8fjBwr0JoppeaF7UzJBfNUELX9WnTRWnWO6+fWcdl9Gmt2yjgMC8t4C5hdk 9z5Z/36mfnSdD/s03P7igyfLWx+EX7igY6BGZ07wLrhkz3MfG6JKyW13LwyjIrQWPSM8bbvVh7q 2+WwmGMJd5bg5c2XD6ADZAmsgTaeIPJBDdjof25AeBkBB7oWU0RSUZgQrhVWn2WvMa5IzBdn1om asIA7jwDkCmwkD6puKpoSYljs0EUcsOgN0JVMc6zsoVEMl1klRgnvWtElMif14= X-Google-Smtp-Source: AGHT+IG6cKeFSTb+mSYJODVar+LIYZ1sP+2+4+U3ko08HGDy3Ts+Icmfxu4phwPEX8NVveiol7AIQ05kN4eN+uTW+lM= X-Received: by 2002:a05:651c:2228:b0:35b:6321:d0dd with SMTP id 38308e7fff4ca-35b6321e410mr8509321fa.32.1757981122725; Mon, 15 Sep 2025 17:05:22 -0700 (PDT) MIME-Version: 1.0 References: <1757449551.421420786@apps.rackspace.com> <1757795591.523513612@apps.rackspace.com> <20250915081637.2cd0d07c@hermes.local> <1757978184.931224085@apps.rackspace.com> In-Reply-To: <1757978184.931224085@apps.rackspace.com> From: Tom Herbert Date: Mon, 15 Sep 2025 17:05:11 -0700 X-Gm-Features: AS18NWD1Mho2ZiSFiFSE1FBZPtF3p9HXgB3wA9Nce7cWLcez0vSegXF8flcaTjQ Message-ID: To: "David P. Reed" Cc: Frantisek Borsik , Stephen Hemminger , BeckW--- via Bloat , beckw@telekom.de, Cake List , codel@lists.bufferbloat.net, Jeremy Austin via Rpm X-MailFrom: tom@herbertland.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation Message-ID-Hash: WTWIUZ7QG6CT7Q3YIVWIMTHLHK2JFYSY X-Message-ID-Hash: WTWIUZ7QG6CT7Q3YIVWIMTHLHK2JFYSY X-Mailman-Approved-At: Tue, 16 Sep 2025 10:38:05 +0200 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 3.3.10 X-Mailman-Version: 3.3.10 Precedence: list Subject: [Bloat] Re: [Cake] Re: XDP2 is here - from one and only Tom Herbert (almost to the date, 10 years after XDP was released) List-Id: General list for discussing Bufferbloat Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gTW9uLCBTZXAgMTUsIDIwMjUsIDQ6MTbigK9QTSBEYXZpZCBQLiBSZWVkIDxkcHJlZWRAZGVl cHBsdW0uY29tPiB3cm90ZToNCg0KPg0KPg0KPiBPbiBNb25kYXksIFNlcHRlbWJlciAxNSwgMjAy NSAxODoyNiwgIkZyYW50aXNlayBCb3JzaWsiIDwNCj4gZnJhbnRpc2VrLmJvcnNpa0BnbWFpbC5j b20+IHNhaWQ6DQo+DQo+ID4gRnJlc2ggZnJvbSBUb20ncyBvdmVuOg0KPiA+DQo+IGh0dHBzOi8v bWVkaXVtLmNvbS9AdG9tXzg0OTEyL3Byb2dyYW1taW5nLWEtcGFyc2VyLWluLXhkcDItaXMtYXMt ZWFzeS1hcy1waWUtOGYyNmM4YjNlNzA0DQo+DQo+IE5pY2UgZW5vdWdoLiBJJ3ZlIGFsd2F5cyB3 b25kZXJlZCB3aHkgbm8gb25lIGRpZCBhIHRhYmxlIGRyaXZlbiBwYWNrZXQNCj4gcGFyc2VyLiBT dXJlbHkgd2lyZXNoYXJrIGRpZCB0aGlzPw0KPg0KPiBIb3dldmVyLCB0aGUgc3BhZ2hldHRpIG1l c3MgaW4gcHJhY3RpY2UgcGFydGlhbGx5IGFyaXNlcyBmcm9tIHNrYnVmZg0KPiAoTGludXgpIG9y IG1idWYgKHVuaXgpIHN0cnVjdHVyaW5nLiAgSSBjYW4gdGVzdGlmeSB0byB0aGlzIGJlY2F1c2Ug SSd2ZSBoYWQNCj4gdG8gYWRkIGEgbG93IGxldmVsIHByb3RvY29sIG9uIHRvcCBvZiBFdGhlcm5l dCBpbiBhIHZlcnNpb24gb2YgdGhlIEZyZWVCU0QNCj4ga2VybmVsLCBhbmQgdGhhdCBwcm90b2Nv bCBoYWQgdG8gKGZvciBwZXJmb3JtYW5jZSByZWFzb25zKSBtb2RpZnkgaGVhZGVycw0KPiAiaW4g cGxhY2UiIHRvIGdlbmVyYXRlIHJlc3BvbnNlIHBhY2tldHMgd2l0aG91dCBjb3B5aW5nIG9yIHJl YWxsb2NhdGluZy4NCj4NCj4gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIHJlYXNvbiB3aHkgTGludXgn cyBuZXR3b3JrIHN0YWNrIGlzIGEgbWVzcyAtIHNrYnVmZg0KPiBtYW5hZ2VtZW50IGlzIGdlbmVy YWxseSBub3QgY29tcGF0aWJsZSB3aXRoIHBhY2tldCBmb3JtYXRzIGluIE5JQ3Mgd2l0aA0KPiBh Y2NlbGVyYXRpb24gZmVhdHVyZXMgdGhhdCBwYXJzZSBvciB2ZXJpZnkgcGFydHMgb2YgdGhlIHBh Y2tldHMuDQo+DQo+IEFkbWl0dGVkbHksIEkndmUgZm9jdXNlZCBvbiBtaW5pbWl6aW5nIGVuZC10 by1lbmQgbGF0ZW5jeSBpbiBwcm90b2NvbHMNCj4gd2hlcmUgdGhlIG1pbmltdW0gc3BlZWQgaXMg MTAgR2Ivc2VjIEV0aGVybmV0LCB3aGVyZSB0aGUgaGFyZHdhcmUNCj4gZnVuY3Rpb25hbGl0eSAo aW5jbHVkaW5nIHBpcGVsaW5pbmcgdGhlIHBhY2tldCBwcm9jZXNzaW5nIGluIHRoZSBOSUMNCj4g Y29udHJvbGxlciwgcG9zc2libHkgd2l0aCBGUEdBcywgYXJlIGVzc2VudGlhbC4NCj4NCj4gV2hp bGUgdGhlIGhlYWRlciBwYXJzaW5nIGlzIGEgY2h1bmsgb2YgdGhlIHBlcmZvcm1hbmNlIGlzc3Vl LCBzcGVjaWFsaXplZA0KPiBtZW1vcnkgbWFuYWdlbWVudCBpcyBhbHNvLg0KPg0KPiBIb3Bpbmcg dG8gc2VlIHdoYXQgcmVwbGFjZXMgc2tidWZmIGluIEVESzIuDQo+DQoNClBWYnVmcyA6LSkNCg0K aHR0cHM6Ly9tZWRpdW0uY29tL0B0b21fODQ5MTIvcHZidWZzLWhhcmR3YXJlLWZyaWVuZGx5LW1l dGFkYXRhLXN0cnVjdHVyZS1mb3Itc2NhdHRlci1nYXRoZXItNmZjZThkNDJmNzVmDQoNCg0KPiA+ DQo+ID4NCj4gPiBBbGwgdGhlIGJlc3QsDQo+ID4NCj4gPiBGcmFuaw0KPiA+DQo+ID4gRnJhbnRp c2VrIChGcmFuaykgQm9yc2lrDQo+ID4NCj4gPg0KPiA+ICpJbiBsb3ZpbmcgbWVtb3J5IG9mIERh dmUgVMOkaHQ6ICoxOTY1LTIwMjUNCj4gPg0KPiA+IGh0dHBzOi8vbGlicmVxb3MuaW8vMjAyNS8w NC8wMS9pbi1sb3ZpbmctbWVtb3J5LW9mLWRhdmUvDQo+ID4NCj4gPg0KPiA+IGh0dHBzOi8vd3d3 LmxpbmtlZGluLmNvbS9pbi9mcmFudGlzZWtib3JzaWsNCj4gPg0KPiA+IFNpZ25hbCwgVGVsZWdy YW0sIFdoYXRzQXBwOiArNDIxOTE5NDE2NzE0DQo+ID4NCj4gPiBpTWVzc2FnZSwgbW9iaWxlOiAr NDIwNzc1MjMwODg1DQo+ID4NCj4gPiBTa3lwZTogY2FzaW9hNTMwMmNhDQo+ID4NCj4gPiBmcmFu dGlzZWsuYm9yc2lrQGdtYWlsLmNvbQ0KPiA+DQo+ID4NCj4gPiBPbiBNb24sIFNlcCAxNSwgMjAy NSBhdCA4OjM14oCvUE0gVG9tIEhlcmJlcnQgPHRvbUBoZXJiZXJ0bGFuZC5jb20+IHdyb3RlOg0K PiA+DQo+ID4+IE9uIE1vbiwgU2VwIDE1LCAyMDI1IGF0IDExOjA34oCvQU0gRnJhbnRpc2VrIEJv cnNpaw0KPiA+PiA8ZnJhbnRpc2VrLmJvcnNpa0BnbWFpbC5jb20+IHdyb3RlOg0KPiA+PiA+DQo+ ID4+ID4NCj4gPj4gPiAiVGhlcmUgd2VyZSBhIGZldyBOSUMncyB0aGF0IG9mZmxvYWRlZCBlQlBG IGJ1dCB0aGV5IG5ldmVyIHJlYWxseSB3ZW50DQo+ID4+IG1haW5zdHJlYW0uIg0KPiA+PiA+DQo+ ID4+ID4gQW5kIGV2ZW4gdGhlbiwgdGhleSB3ZXJlIGRvaW5nIG9ubHkgNDAgR2JwcywgbGlrZQ0K PiBodHRwczovL25ldHJvbm9tZS5jb20NCj4gPj4gYW5kIGRpZG4ndCBldmVuIHN1cHBvcnRlZCBm dWxsIGVCUEYuLi4NCj4gPj4gPg0KPiA+PiA+IFRoZXkgb25seSBzdXBwb3J0IGEgcHJldHR5IHNt YWxsIHN1YnNldCBvZiBlQlBGIChpbiBwYXJ0aWN1bGFyIHRoZXkNCj4gPj4gZG9uJ3Qgc3VwcG9y dCB0aGUgTFBNIG1hcCB0eXBlLCB3aGljaCB3YXMgb3VyIGJpZ2dlc3QgcGVyZm9ybWFuY2UgcGFp bg0KPiA+PiBwb2ludCksIGFuZCBoYXZlIGEgcHJldHR5IGNvb2wgdXNlciByZXBsYWNlYWJsZSBm aXJtd2FyZSBzeXN0ZW0uIFRoZXkNCj4gYWxzbw0KPiA+PiBkb24ndCBoYXZlIHRoZSBoaWdoZXIg c3BlZWRzIC0gYWJvdmUgNDAgR2JwcyAtIHdoZXJlIHRoZSBvZmZsb2FkaW5nDQo+IHdvdWxkDQo+ ID4+IGJlIG1vc3QgdXNlZnVsLiINCj4gPj4NCj4gPj4gWWVhaCwgdGhlIGF0dGVtcHRzIGF0IG9m ZmxvYWRpbmcgZUJQRiB3ZXJlIGRvb21lZCB0byBmYWlsLiBJdCdzIGENCj4gPj4gcmVzdHJpY3Rl ZCBtb2RlbCwgbGFja3MgcGFyYWxsZWxpc20sIGRvZXNuJ3Qgc3VwcG9ydCBpbmxpbmUNCj4gPj4g YWNjZWxlcmF0b3JzLCBhbmQgcmVxdWlyZXMgdGhlIGVCUEYgVk0gdG8gbWFrZSBpdCBuby1zdGF0 ZXJzLiBEUERLDQo+ID4+IHdvdWxkIGZhaWwgYXMgd2VsbC4gVGhlIGtlcm5lbC9ob3N0IGVudmly b25tZW50IGFuZCBoYXJkd2FyZQ0KPiA+PiBlbnZpcm9ubWVudHMgYXJlIHF1aXRlIGRpZmZlcmVu dC4gSWYgd2UgdHJ5IHRvIGZvcmNlIHRoZSBoYXJkd2FyZSB0bw0KPiA+PiBsb29rIGxpa2UgdGhl IGhvc3QgdG8gbWFrZSBlQlBGIG9yIERQREsgcG9ydGFibGUgdGhlbiB3ZSdsbCBsb3NlIHRoZQ0K PiA+PiBwZXJmb3JtYW5jZSBhZHZhbnRhZ2VzIG9mIHJ1bm5pbmcgaW4gdGhlIGhhcmR3YXJlLiBX ZSBuZWVkIGEgbW9kZWwNCj4gPj4gdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGFkYXB0IHRv IEhXLCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQgKG9mDQo+ID4+IGNvdXJzZSwgaW4gYSBwZXJm ZWN0IHdvcmxkIHdlJ2QgZG8gc29mdHdhcmUvaGFyZHdhcmUgY29kZXNpZ24gZnJvbSB0aGUNCj4g Pj4gZ2V0LWdvKS4NCj4gPj4NCj4gPj4gPg0KPiA+PiA+IEJ0dywgVG9tIHdpbGwgYmUgYXQgRkxP U1MgV2Vla2x5IHRvbW9ycm93IChUdWVzZGF5KSwgMTI6MjAgRURUIC8gMTE6MjANCj4gPj4gQ0RU IC8gMTA6MjAgTURUIC8gOToyMCBQRFQNCj4gPj4NCj4gPj4gQ2FuJ3Qgd2FpdCENCj4gPj4NCj4g Pj4gPg0KPiA+PiA+IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2xpdmUvT0JXNXR3dm1IT0kNCj4g Pj4gPg0KPiA+PiA+DQo+ID4+ID4gQWxsIHRoZSBiZXN0LA0KPiA+PiA+DQo+ID4+ID4gRnJhbmsN Cj4gPj4gPg0KPiA+PiA+IEZyYW50aXNlayAoRnJhbmspIEJvcnNpaw0KPiA+PiA+DQo+ID4+ID4N Cj4gPj4gPiBJbiBsb3ZpbmcgbWVtb3J5IG9mIERhdmUgVMOkaHQ6IDE5NjUtMjAyNQ0KPiA+PiA+ DQo+ID4+ID4gaHR0cHM6Ly9saWJyZXFvcy5pby8yMDI1LzA0LzAxL2luLWxvdmluZy1tZW1vcnkt b2YtZGF2ZS8NCj4gPj4gPg0KPiA+PiA+DQo+ID4+ID4gaHR0cHM6Ly93d3cubGlua2VkaW4uY29t L2luL2ZyYW50aXNla2JvcnNpaw0KPiA+PiA+DQo+ID4+ID4gU2lnbmFsLCBUZWxlZ3JhbSwgV2hh dHNBcHA6ICs0MjE5MTk0MTY3MTQNCj4gPj4gPg0KPiA+PiA+IGlNZXNzYWdlLCBtb2JpbGU6ICs0 MjA3NzUyMzA4ODUNCj4gPj4gPg0KPiA+PiA+IFNreXBlOiBjYXNpb2E1MzAyY2ENCj4gPj4gPg0K PiA+PiA+IGZyYW50aXNlay5ib3JzaWtAZ21haWwuY29tDQo+ID4+ID4NCj4gPj4gPg0KPiA+PiA+ DQo+ID4+ID4gT24gTW9uLCBTZXAgMTUsIDIwMjUgYXQgNToxNuKAr1BNIFN0ZXBoZW4gSGVtbWlu Z2VyIDwNCj4gPj4gc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+IHdyb3RlOg0KPiA+PiA+Pg0K PiA+PiA+PiBPbiBNb24sIDE1IFNlcCAyMDI1IDA4OjM5OjQ4ICswMDAwDQo+ID4+ID4+IEJlY2tX LS0tIHZpYSBCbG9hdCA8YmxvYXRAbGlzdHMuYnVmZmVyYmxvYXQubmV0PiB3cm90ZToNCj4gPj4g Pj4NCj4gPj4gPj4gPiBQcm9ncmFtbWluZyBuZXR3b3JraW5nIGhhcmR3YXJlIGlzIGEgYml0IGxp a2UgcHJvZ3JhbW1pbmcgOCBiaXQNCj4gPj4gY29tcHV0ZXJzIGludCB0aGUgMTk4MHMsIHRoZSBo YXJkd2FyZSBpcyBvZnRlbiB0b28gbGltaXRlZCBhbmQgdmFyaWVkIHRvDQo+ID4+IHN1cHBvcnQg dXNlZnVsIGFic3RyYWN0aW9ucy4gVGhpcyBpcyBhbHNvIHRydWUgZm9yIENQVS1iYXNlZCBuZXR3 b3JraW5nDQo+ID4+IG9uY2UgeW91IGdldCBpbnRvIHRoZSA+MTAgR2JwcyByZWFsbSwgd2hlbiBj YWNoaW5nIGFuZCBwaXBlbGluaW5nDQo+ID4+IGFyY2hpdGVjdHVyZXMgYmVjb21lIHJlbGV2YW50 LiBXcml0aW5nIGEgbmV0d29yayBwcm90b2NvbCBjb21waWxlciB0aGF0DQo+ID4+IHByb2R1Y2Vz IGVmZmljaWVudCBjb2RlIGZvciBkaWZmZXJlbnQgTklDcyBhbmQgZGlmZmVyZW50IENQVXMgaXMg YQ0KPiBkYXVudGluZw0KPiA+PiB0YXNrLiBBbmQgdW5saWtlIHdpdGggOCBiaXQgY29tcHV0ZXJz LCB0aGVyZSBhcmUgbm8gc2ltcGxlIG1ldHJpY3MgKCd5b3UNCj4gPj4gbmVlZCBhdCBsZWFzdCAz MmtiIFJBTSB0byBydW4gdGhpcyBjb2RlJyB2cyAndGhpcyBOSUMgc3VwcG9ydHMgNGsgcXVldWVz DQo+ID4+IHdpdGggUElFLCBDb2RlbCcsICd0aGlzIENQVSBoYXMgMjAgTWJ5dGUgb2YgSW50ZWwg U21hcnRDYWNoZScpLg0KPiA+PiA+Pg0KPiA+PiA+PiBMaW51eCBrZXJuZWwgc3RpbGwgbGFja3Mg YW4gZWFzeSB3YXkgdG8gc2V0dXAgbWFueSBmZWF0dXJlcyBpbiBTbWFydA0KPiA+PiBOSUMncy4g RFBESyBoYXMgcnRlX2Zsb3cgd2hpY2ggYWxsb3dzIGRpcmVjdA0KPiA+PiA+PiBhY2Nlc3MgdG8g aGFyZHdhcmUgZmxvdyBwcm9jZXNzaW5nLiBCdXQgRFBESyBsYWNrcyBhbnkgcmVhc29uYWJsZQ0K PiBmb3JtDQo+ID4+IG9mIHNoYXBlciBjb250cm9sLg0KPiA+PiA+Pg0KPiA+PiA+PiA+IEVicGYg aXMgdmVyeSBjbG9zZSB0byB3aGF0IHdhcyBkZXNjcmliZWQgaW4gdGhpcyAxOTk1IGV4b2tlcm5l bA0KPiA+PiBwYXBlcigNCj4gPj4gaHR0cHM6Ly9wZG9zLmNzYWlsLm1pdC5lZHUvNi44MjgvMjAw OC9yZWFkaW5ncy9lbmdsZXI5NWV4b2tlcm5lbC5wZGYpLg0KPiA+PiBUaGUgaWRlYSBvZiB0aGUg ZXhva2VybmVsIHdhcyB0byBoYXZlIGVhc2lseSBsb2FkYWJsZSwgdmVyaWZpZWQgY29kZSBpbg0K PiB0aGUNCj4gPj4ga2VybmVsIC0tIGVnIHRoZSBzZWN1cml0eS1jcml0aWNhbCB0YXNrIG9mIGFz c2lnbmluZyBhIHBhY2tldCB0byBhDQo+IHNlc3Npb24NCj4gPj4gb2YgYSB1c2VyIC0tIGFuZCBs ZWF2ZSB0aGUgcmVzdCBvZiB0aGUgcHJvdG9jb2wgLS0gZWcgdGNwDQo+IHJldHJhbnNtaXNzaW9u cw0KPiA+PiAtLSB0byB0aGUgdXNlciBzcGFjZS4gQUZBSUsgZmV3IHBlb3BsZSB1c2UgZWJwZiBs aWtlIHRoaXMsIGJ1dCBpdA0KPiBzaG91bGQgYmUNCj4gPj4gcG9zc2libGUuDQo+ID4+ID4+ID4N Cj4gPj4gPj4gPiBFYnBmIG1hbmFnZXMgdGhlIGFic3RyYWN0aW9uIHBhcnQgd2VsbCwgYnV0IHNh Y3JpZmljZXMgYSBsb3Qgb2YNCj4gPj4gcGVyZm9ybWFuY2UgLS0gZWcgbGFjayBvZiBhZ2dyZXNz aXZlIGJhdGNoaW5nIGxpa2UgdnBwIC8gZmQuaW8gZG9lcy4NCj4gV2l0aA0KPiA+PiBEUERLLCAg eW91IG9mdGVuIGZpbmQgb3V0IHRoYXQgeW91ciBuaWMncyBoYXJkd2FyZSBvciBkcml2ZXIgZG9l c24ndA0KPiA+PiBzdXBwb3J0IHRoZSBmdW5jdGlvbiB0aGF0IHlvdSBob3BlZCB0byB1c2UgYW5k IGVuZCB1cCBvcHRpbWl6aW5nIGZvciBhDQo+ID4+IHBhcnRpY3VsYXIgaGFyZHdhcmUuIEV2ZW4g aWYgZHJpdmVyIGFuZCBoYXJkd2FyZSBzdXBwb3J0IGENCj4gZnVuY3Rpb25hbGl0eSwNCj4gPj4g aXQgbWF5IHZlcnkgd2VsbCBiZSB0aGF0IGhhcmR3YXJlIHJlc291cmNlcyBhcmUgdG9vIGxpbWl0 ZWQgZm9yIHlvdXINCj4gPj4gcGFydGljdWxhciB1c2UgY2FzZS4gVGhlIGFic3RyYWN0aW9uIGlz IHRoZXJlLCBidXQgeW91ciBjb2RlIGlzIHN0aWxsDQo+ID4+IGhhcmR3YXJlIHNwZWNpZmljLg0K PiA+PiA+Pg0KPiA+PiA+PiBUaGVyZSB3ZXJlIGEgZmV3IE5JQydzIHRoYXQgb2ZmbG9hZGVkIGVC UEYgYnV0IHRoZXkgbmV2ZXIgcmVhbGx5IHdlbnQNCj4gPj4gbWFpbnN0cmVhbS4NCj4gPj4gPj4N Cj4gPj4gPg0KPiA+PiA+DQo+ID4+ID4+DQo+ID4+ID4+ID4gLS0tLS1VcnNwcsO8bmdsaWNoZSBO YWNocmljaHQtLS0tLQ0KPiA+PiA+PiA+IFZvbjogRGF2aWQgUC4gUmVlZCA8ZHByZWVkQGRlZXBw bHVtLmNvbT4NCj4gPj4gPj4gPiBHZXNlbmRldDogU2Ftc3RhZywgMTMuIFNlcHRlbWJlciAyMDI1 IDIyOjMzDQo+ID4+ID4+ID4gQW46IFRvbSBIZXJiZXJ0IDx0b21AaGVyYmVydGxhbmQuY29tPg0K PiA+PiA+PiA+IENjOiBGcmFudGlzZWsgQm9yc2lrIDxmcmFudGlzZWsuYm9yc2lrQGdtYWlsLmNv bT47IENha2UgTGlzdCA8DQo+ID4+IGNha2VAbGlzdHMuYnVmZmVyYmxvYXQubmV0PjsgY29kZWxA bGlzdHMuYnVmZmVyYmxvYXQubmV0OyBibG9hdCA8DQo+ID4+IGJsb2F0QGxpc3RzLmJ1ZmZlcmJs b2F0Lm5ldD47IEplcmVteSBBdXN0aW4gdmlhIFJwbSA8DQo+ID4+IHJwbUBsaXN0cy5idWZmZXJi bG9hdC5uZXQ+DQo+ID4+ID4+ID4gQmV0cmVmZjogW0Jsb2F0XSBSZTogW0Nha2VdIFJlOiBYRFAy IGlzIGhlcmUgLSBmcm9tIG9uZSBhbmQgb25seQ0KPiBUb20NCj4gPj4gSGVyYmVydCAoYWxtb3N0 IHRvIHRoZSBkYXRlLCAxMCB5ZWFycyBhZnRlciBYRFAgd2FzIHJlbGVhc2VkKQ0KPiA+PiA+PiA+ DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiBUb20gLQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gQW4gYXJj aGl0ZWN0dXJlLWluZGVwZW5kZW50IG5ldHdvcmsgZnJhbWV3b3JrIGluZGVwZW5kZW50IG9mIHRo ZSBPUw0KPiA+PiBrZXJuZWwncyBwZWN1bGlhcml0aWVzIHNlZW1zIHdpdGhpbiByZWFjaCAodGhv dWdoIGEgZmFpciBiaXQgb2Ygd29yayksDQo+IGFuZA0KPiA+PiBJIHRoaW5rIGl0IHdvdWxkIGJl IGEgR09PRCBUSElORyBpbmRlZWQuIElNSE8gdGhlIExpbnV4IG5ldHdvcmtpbmcNCj4gc3RhY2sg aW4NCj4gPj4gdGhlIGtlcm5lbCBpcyBhIGhvcnJpZmljIG1lc3MsIGFuZCBpdCBkb2Vzbid0IGhh dmUgdG8gYmUuDQo+ID4+ID4+ID4NCj4gPj4gPj4gPiBUaGUgcmVhc29uIGl0IGRvZXNuJ3QgaGF2 ZSB0byBiZSBpcyB0aGF0IHRoZXJlIHNob3VsZCBiZSBubyByZWFzb24NCj4gaXQNCj4gPj4gY2Fu bm90IHJ1biBpbiByaW5nMy91c2VybGFuZCwganVzdCBsaWtlIERQREsuIEFuZCBpdCBzaG91bGQg YmUgYnVpbHQNCj4gdXNpbmcNCj4gPj4gInJlYWwtdGltZSIgdXNlcmxhbmQgcHJvZ3JhbW1pbmcg dGVjaG5pcXVlcy4gKGF2b2lkaW5nIHRoZSBnZW5lcmljIGxpbnV4DQo+ID4+IHNjaGVkdWxlciku IFRoZSBPTkxZIHJlYXNvbiBmb3IgaW52b2x2aW5nIHRoZSBzY2hlZHVsZXIgd291bGQgYmUgYmVj YXVzZQ0KPiA+PiB0aGVyZSBhcmVuJ3QgZW5vdWdoIGNvcmVzLiBMaW51eCB3YXMgZGVzaWduZWQg dG8gYmUgYSB1bmlwcm9jZXNzb3IgVW5peCwNCj4gPj4gYW5kIHRoYXQganVzdCBpcyBubyBsb25n ZXIgdHJ1ZSBhdCBhbGwuIFdpdGggaHlwZXJ0aHJlYWRpbmcsIHRvbywgb25lDQo+IG5lZWQNCj4g Pj4gbmV2ZXIgYWJhbmRvbiBhIHByb2Nlc3NvcidzIGNvbnRleHQgaW4gdXNlcnNwYWNlIHRvIHJ1 biBzb21lICJ1c2VybGFuZCINCj4gPj4gYXBwbGljYXRpb24uDQo+ID4+ID4+ID4NCj4gPj4gPj4g PiBUaGlzIHdvdWxkIHJpcCBhIGh1Z2UgYW1vdW50IG9mIGtlcm5lbCBjb2RlIG91dCBvZiB0aGUg a2VybmVsLiAoYXQNCj4gPj4gbGVhc3QgNTAlLCBhbmQgcHJvYmFibHkgbW9yZSkuIFRIZSBzZWN1 cml0eSBpc3N1ZXMgb2YgYWxsIHRob3NlIDNyZA0KPiBwYXJ0eQ0KPiA+PiBuZXR3b3JrIGRyaXZl cnMgd291bGQgZ28gYXdheS4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IEFuZCB0aGUgcGVyZm9ybWFu Y2Ugd291bGQgYmUgbXVjaCBoaWdoZXIgZm9yIG5ldHdvcmtpbmcuICAocnVubmluZw0KPiBpbg0K PiA+PiByaW5nIDMsIGVzcGVjaWFsbHkgaWYgeW91IGRvbid0IGRvIHN5c3RlbSBjYWxscywgaXMg bm8gcGVyZm9ybWFuY2UNCj4gcGVuYWx0eSwNCj4gPj4gYW5kIGludGVycHJvY2Vzc29yIGNvbW11 bmljYXRpb25zIHVzaW5nIHNoYXJlZCBtZW1vcnkgaXMgbXVjaCBsb3dlcg0KPiBsYXRlbmN5DQo+ ID4+IHRoYW4gTGludXggSVBDIG9yIG11dGV4ZXMpLg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gSSBs aWtlIHRoZSBpZGVhIG9mIGEgY29tcGlsYXRpb24gYmFzZWQgbmV0d29yayBzdGFjaywgYXQgYSBz bGlnaHRseQ0KPiA+PiBoaWdoZXIgbGV2ZWwgdGhhbiBDLiBlQlBGIGlzIE5PVCB3aGF0IEkgaGF2 ZSBpbiBtaW5kIC0gaXQncyBhbg0KPiBpbnRlcnByZXRlcg0KPiA+PiB3aXRoIGhpZ2ggb3Zlcmhl YWQuIFRoZSBsYW5ndWFnZSBzaG91bGQgc3VwcG9ydCBoaWdoLXBlcmZvcm1hbmNlDQo+ID4+IGNv LXJvdXRpbmluZyAtIHNoYXJlZCBtZW1vcnksIGlkZWFsbHkuIEkgZG9uJ3QgdGhpbmcgR0MgaXMg YSBnb29kIHRoaW5nLg0KPiA+PiBSdXN0IG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBi ZWNhdXNlIGl0cyBtZW1vcnkgbWFuYWdlbWVudCBpcw0KPiBzYWZlLg0KPiA+PiA+PiA+IFRvIG1l LCBzb21lIG9mIHdoYXQgdGhlIGJhc2Ugb2YgRFBESyBpcyBsaWtlIGlzIGdvb2Qgc3R1ZmYuDQo+ IEhvd2V2ZXIsDQo+ID4+IGl0IGlzbid0IGFyY2hpdGVjdHVyYWxseSBuZXV0cmFsLg0KPiA+PiA+ PiA+DQo+ID4+ID4+ID4gVG8gbWUsIHRoZSBuZXR3b3JrIHN0YWNrIHNob3VsZCBub3QgYmUgZW50 YW5nbGVkIHdpdGggaW50ZXJydXB0DQo+ID4+IGhhbmRsaW5nIGF0IGFsbC4gInBvbGxpbmciIGlz IGZhciBtb3JlIHBlcmZvcm1hbnQgdW5kZXIgbG9hZC4gVGhlIG9ubHkNCj4gdXNlDQo+ID4+IGZv ciBpbnRlcnJ1cHRzIGlzIHdoZW4gdGhlIG5ldHdvcmsgc3RhY2sgaXMgY29tcGxldGVseSBpZGxl LiBUaGF0IHdvdWxkDQo+IGJlLA0KPiA+PiBpbiB1c2VybGFuZCwgYSAid2FpdCBmb3IgaW50ZXJy dXB0IiBjYWxsIChub3QgYSBwb2xsKS4gSWRlYWxseSwgb24NCj4gcmVjZW50DQo+ID4+IEludGVs IG1hY2hpbmVzLCBhIHVzZXJzcGFjZSB2ZXJzaW9uIG9mIE1PTklUT1IvTVdBSVQpLg0KPiA+PiA+ PiA+DQo+ID4+ID4+ID4gTm93IEkga25vdyB0aGF0IExpbnVzIGFuZCBoaXMgY3JldyBhcmUgcmVh bGx5IE5PVCBnb25uYSBsaWtlIHRoaXMuDQo+ID4+IExpbnVzIGlzIHN0aWxsIHRoaW5raW5nIGxp a2UgTUlOSVgsIGEgdW5pcHJvY2Vzc29yIHRpbWUtc2hhcmluZyBzeXN0ZW0NCj4gd2l0aA0KPiA+ PiByaWNoIE9TIGZ1bmN0aW9ucyBpbiB0aGUga2VybmVsIGFuZCBkb2luZyAiZmlsZSIgcmVhZHMg YW5kIHdyaXRlcyB0bw0KPiA+PiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBrZXJuZWwgc3RhdGUuIEJ1 dCBpdCBpcyBhIG11Y2ggbW9yZSBtb2Rlcm4gd2F5IHRvDQo+ID4+IHRoaW5rIG9mIHJlYWwtdGlt ZSBJTyBpbiBhIG1vZGVybiBvcGVyYXRpbmcgc3lzdGVtLiAoV2luZG93cyBhbmQgbWFjT1MNCj4g YXJlDQo+ID4+IGFsc28gVW5peC1saWtlLCB1bmlwcm9jZXNzb3IgbW9ub2xpdGhpYyBrZXJuZWwg ZGVzaWducykuDQo+ID4+ID4+ID4NCj4gPj4gPj4gPiBTbywgaWYgWERQMiBnb3QgYXdheSBmcm9t IHRoZSBMaW51eCBrZXJuZWwsIGl0IGNvdWxkIGJlIGdyZWF0Lg0KPiA+PiA+PiA+IEJUVywgaW9f dXJpbmcsIGV0Yy4gYXJlIGhhbGYtbWVhc3VyZXMuIFRoZXkgYWRkcmVzcyBnZXR0aW5nIGF3YXkN Cj4gZnJvbQ0KPiA+PiBpbnRlcnJ1cHRzIHRvd2FyZCBwb2xsaW5nLCBidXQgdGhleSBzdGlsbCBt YWtlIHRoZSBtaXN0YWtlIG9mIGtlZXBpbmcNCj4gaHVnZQ0KPiA+PiBkcml2ZXJzIGluIHRoZSBr ZXJuZWwuDQo+ID4+ID4+DQo+ID4+ID4+IERQREsgYWxyZWFkeSBzdXBwb3J0cyB1c2Ugb2YgWERQ IGFzIGEgd2F5IHRvIGRvIHVzZXJzcGFjZSBuZXR3b3JraW5nLg0KPiA+PiA+PiBJdCBpcyBnb29k IGdlbmVyaWMgd2F5IHRvIGdldCBwYWNrZXRzIGluL291dCBidXQgdGhlIGRlZGljYXRlZA0KPiA+ PiB1c2Vyc3BhY2UgZHJpdmVycyBhbGxvdw0KPiA+PiA+PiBmb3IgbW9yZSBhY2Nlc3MgdG8gaGFy ZHdhcmUuIFRoZSBYRFAgYWJzdHJhY3Rpb24gZ2V0cyBpbiB0aGUgd2F5IG9mDQo+ID4+IGxpdHRs ZSB0aGluZ3MgbGlrZSBwcm9ncmFtbWluZw0KPiA+PiA+PiBWTEFOJ3MsIGV0Yy4NCj4gPj4gPj4N Cj4gPj4gPj4gVGhlIHRyYWRlb2ZmIGlzIHVzZXJzcGFjZSBuZXR3b3JraW5nIHdvcmtzIGdyZWF0 IGZvciBpbmZyYXN0cnVjdHVyZSwNCj4gPj4gcm91dGVycywgc3dpdGNoZXMsIGZpcmV3YWxscyBl dGM7DQo+ID4+ID4+IGJ1dCB1c2Vyc3BhY2UgbmV0d29ya2luZyBmb3IgbmV0d29yayBzdGFja3Mg dG8gYXBwbGljYXRpb25zIGlzIGhhcmQNCj4gdG8NCj4gPj4gZG8sIGFuZCBsb3NlcyB0aGUgaXNv bGF0aW9uDQo+ID4+ID4+IHRoYXQgdGhlIGtlcm5lbCBwcm92aWRlcy4NCj4gPj4gPj4NCj4gPj4g Pj4gPiAgPiBJIHRoaW5rIGl0IGlzIGludGVyZXN0aW5nIGFzIGEgY29uY2VwdC4gQSBwcm9qZWN0 IEkgYW0gYWR2aXNpbmcNCj4gPj4gaGFzIGJlZW4gID4gdXNpbmcgRFBESyB2ZXJ5IGVmZmVjdGl2 ZWx5IHRvIGdldCByaWQgb2YgdGhlIGh1Z2UgcGF0aCBhbmQNCj4gPj4gbG9ja2luZyBkZWxheXMg ID4gaW4gdGhlIGN1cnJlbnQgTGludXggbmV0d29yayBzdGFjay4gWERQMiBjb3VsZCBiZQ0KPiA+ PiBzdXBwb3J0ZWQgaW4gYSByaW5nMyAgPiAodXNlcikgYWRkcmVzcyBzcGFjZSwgYWNoaWV2aW5n IGEgc2ltaWxhcg0KPiByZXN1bHQuDQo+ID4+ID4+ID4gSEkgRGF2aWQsDQo+ID4+ID4+ID4gVGhl IGlkZWEgaXMgeW91IGNvdWxkIHdyaXRlIHRoZSBjb2RlIGluIFhEUDIgYW5kIGl0IHdvdWxkIGJl DQo+IGNvbXBpbGVkDQo+ID4+IHRvIERQREsgb3IgZUJQRiBhbmQgdGhlIGNvbXBpbGVyIHdvdWxk IGhhbmRsZSB0aGUgb3B0aW1pemF0aW9ucy4NCj4gPj4gPj4gPiAgPg0KPiA+PiA+PiA+ICA+DQo+ ID4+ID4+ID4gID4NCj4gPj4gPj4gPiAgPiBCdXQgSSBkb24ndCB0aGluayBYRFAyIGlzIGdvaW5n IHRoYXQgZGlyZWN0aW9uIC0gc28gaXQgbWF5IGJlDQo+ID4+IHN0dWNraW50byAgPiB0aGUgbWVz cyBvZiBrZXJuZWwgc3BhY2UgbmV0d29ya2luZy4gQWRkaW5nIGVCUEYgb25seSBoYXMNCj4gbWFk ZQ0KPiA+PiB0aGlzIG1vcmUgb2YgID4gYSBtZXNzLCBieSB0aGUgd2F5IChhbmQgYWRkaW5nIGEg bmV3ICJjb21waWxlciIgdGhhdA0KPiBuZWVkcw0KPiA+PiB0byBiZSB2ZXJpcmllZCAgPiBhcyBz YWZlIGZvciB0aGUga2VybmVsKS4NCj4gPj4gPj4gPiBUaGluayBvZiBYRFAyIGFzIHRoZSBnZW5l cmFsaXphdGlvbiBvZiBYRFAgdG8gZ28gYmV5b25kIGp1c3QgdGhlDQo+ID4+IGtlcm5lbC4gVGhl IGlkZWEgaXMgdGhhdCB0aGUgdXNlciB3cml0ZXMgdGhlaXIgZGF0YXBhdGggY29kZSBvbmNlIGFu ZA0KPiB0aGV5DQo+ID4+IGNvbXBpbGUgaXQgdG8gcnVuIGluIHdoYXRldmVyIHRhcmdldHMgdGhl eSBoYXZlLS0gRFBESywgUDQsIG90aGVyDQo+ID4+IHByb2dyYW1tYWJsZSBoYXJkd2FyZSwgYW5k IHllcyBYRFAvZUJQRi4gSXQncyByZWFsbHkgbm90IGxpbWl0ZWQgdG8NCj4ga2VybmVsDQo+ID4+ IG5ldHdvcmtpbmcuDQo+ID4+ID4+ID4gQXMgZm9yIHRoZSBuYW1lIFhEUDIsIHdoZW4gd2UgY3Jl YXRlZCBYRFAsIGVYcHJlc3MgRGF0YVBhdGgsIG15DQo+ID4+IHZpc2lvbiB3YXMgdGhhdCBpdCB3 b3VsZCBiZSBpbXBsZW1lbnRhdGlvbiBhZ25vc3RpYy4gZUJQRiB3YXMgdGhlIGZpcnN0DQo+ID4+ IGluc3RhbnRpYXRpb24gZm9yIHByYWN0aWNhbGl0eSwgYnV0IG5vdyB0ZW4geWVhcnMgbGF0ZXIg SSB0aGluayB3ZSBjYW4NCj4gPj4gcmVhbGl6ZSB0aGUgaW5pdGlhbCB2aXNpb24uDQo+ID4+ID4+ ID4gVG9tDQo+ID4+ID4+DQo+ID4+ID4+DQo+ID4+ID4+IEF0IHRoaXMgcG9pbnQsIGRpZmZlcmVu dCBuZXR3b3JrIGFyY2hpdGVjdHVyZXMgZ2V0IGZvY3VzZWQgYXQNCj4gZGlmZmVyZW50DQo+ID4+ IHVzZSBjYXNlcy4NCj4gPj4gPj4gVGhlIGRheXMgb2YgdGhlIG9uZS1zaXplLWZpdHMtYWxsIG5l dHdvcmtpbmcgb2YgQlNEIFVuaXggaXMgZGVhZC4NCj4gPj4NCj4gPg0KPg0KPg0KPg0K