From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 36DC0199A9 for ; Thu, 7 Sep 2017 10:55:26 +0200 (CEST) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP; 07 Sep 2017 01:55:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,357,1500966000"; d="scan'208";a="148545302" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga005.fm.intel.com with ESMTP; 07 Sep 2017 01:55:25 -0700 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 7 Sep 2017 01:55:25 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx124.amr.corp.intel.com (10.18.125.39) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 7 Sep 2017 01:55:25 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.39]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.117]) with mapi id 14.03.0319.002; Thu, 7 Sep 2017 16:55:23 +0800 From: "Hu, Jiayu" To: Wisam Monther CC: "users@dpdk.org" , Raslan Darawsheh , Shahaf Shuler Thread-Topic: Unable to merge packets using GRO feature Thread-Index: AdMaTiF+8CYSsq4aQZ+8LenCiQpxYQAD6neAADXVIAAABK9KMAAAd2TQAFQNtLAAAYcosADMAwaAACXOZZAAC76hwAGa1cBQABz64GAADFFDsAAB9LoAAADl2aAAALoY0AAAU8cw Date: Thu, 7 Sep 2017 08:55:22 +0000 Message-ID: References: <20170821091347.GA94297@dpdk15.sh.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzk0YjFmMzgtZjVkNS00N2M3LTg5MzEtYzFhNmQ0N2FjYjhiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6ImN0OWt2VkNzN3cwWFg4TDMyRDdPY1dqYWNUTFwvb3hRUlkzcGQ2RzZ0b1k4PSJ9 x-ctpclassification: CTP_IC x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-users] Unable to merge packets using GRO feature X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Sep 2017 08:55:28 -0000 T25lIHRoaW5nIHRvIG5vdGljZTogdGhlIFRDUCBmbGFnIGluIHRoZSBUQ1AgcGFja2V0IGlzICdT WU4nLiBCdXQgdGhlIEdSTw0KbGlicmFyeSBkb2Vzbid0IG1lcmdlIHBhY2tldHMgd2hvc2UgZmxh ZyBpcyBub3QgJ0FDSycuIFRoaXMgaXMgYmVjYXVzZSBvbmx5DQonQUNLJyBwYWNrZXRzIGhhdmUg dmFsaWQgZGF0YSBpbiB0b2RheSdzIG5ldHdvcmsuDQoNCkkgdGhpbmsgdGhpcyBpcyB0aGUgcm9v dCBjYXVzZSBvZiB0aGUgR1JPIGRvZXNuJ3Qgd29yay4NCg0KVGhhbmtzLA0KSmlheXUNCg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXaXNhbSBNb250aGVyIFttYWlsdG86 d2lzYW1tQG1lbGxhbm94LmNvbV0NCj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciA3LCAyMDE3 IDQ6NDggUE0NCj4gVG86IEh1LCBKaWF5dSA8amlheXUuaHVAaW50ZWwuY29tPg0KPiBDYzogdXNl cnNAZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWggPHJhc2xhbmRAbWVsbGFub3guY29tPjsgU2hh aGFmDQo+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+DQo+IFN1YmplY3Q6IFJFOiBVbmFi bGUgdG8gbWVyZ2UgcGFja2V0cyB1c2luZyBHUk8gZmVhdHVyZQ0KPiANCj4gU29ycnkgSSBmb3Jn ZXQgdG8gYXR0YWNoIHRoZSBwY2FwIGZpbGUuDQo+IFNlZSBhdHRhY2hlZCBwbGVhc2UgW3RoZSBv dXRwdXQgb2YgVFNPIGFuZCB0aGUgaW5wdXQgb2YgR1JPXQ0KPiANCj4gQlJzLA0KPiBXaXNhbSBK YWRkbw0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV2lzYW0gTW9u dGhlcg0KPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDcsIDIwMTcgMTE6MjQgQU0NCj4gVG86 ICdIdSwgSmlheXUnDQo+IENjOiB1c2Vyc0BkcGRrLm9yZzsgUmFzbGFuIERhcmF3c2hlaDsgU2hh aGFmIFNodWxlcg0KPiBTdWJqZWN0OiBSRTogVW5hYmxlIHRvIG1lcmdlIHBhY2tldHMgdXNpbmcg R1JPIGZlYXR1cmUNCj4gDQo+IFllcyBzdXJlLA0KPiANCj4gVGhpcyBpcyB0aGUgcGFja2V0IEkg c2VudCBmb3IgdGhlIHRlc3RwbWQgInRoZSBvbmUgdGhhdCBlbmFibGVkIHRzbyINCj4gIiINCj4g cD1FdGhlcihzcmM9Z2V0X2lmX2h3YWRkcignZW5zMTAnKSwgZHN0PSAnZmY6ZmY6ZmY6ZmY6ZmY6 ZmYnKQ0KPiBwLmFkZF9wYXlsb2FkKERvdDFRKHZsYW49MSkpDQo+IHAuYWRkX3BheWxvYWQoSVAo ZHN0PScxMS4xMC4xMC4yMScsIHNyYz0nMTEuMTAuMTAuMjAnKSkNCj4gcC5hZGRfcGF5bG9hZChU Q1Aoc3BvcnQ9MjAwMCwgZHBvcnQ9MzAwMCkpDQo+IHAuYWRkX3BheWxvYWQoJzAnKigxNTAwIC0g bGVuKHApKSkNCj4gc2VuZHAocCwgaWZhY2U9J2VuczEwJywgY291bnQ9MSApDQo+ICIiIg0KPiAN Cj4gQW5kIHRoaXMgaXMgdGhlIG91dHB1dCBmcm9tIFRTTyAidGhlIGlucHV0IGZvciBHUk8iDQo+ IA0KPiAiIiINCj4gIyB0Y3BkdW1wIC1pIGVuczkgLXZ2dmVuIC12bGFuDQo+IHRjcGR1bXA6IGxp c3RlbmluZyBvbiBlbnM5LCBsaW5rLXR5cGUgRU4xME1CIChFdGhlcm5ldCksIGNhcHR1cmUgc2l6 ZQ0KPiAyNjIxNDQgYnl0ZXMNCj4gDQo+IDExOjIwOjUxLjQ5NDY1MSAyNDo4YTowNzo4ODoyNjo2 YSA+IDI0OjhhOjA3Ojg4OjI2OjVhLCBldGhlcnR5cGUgSVB2NA0KPiAoMHgwODAwKSwgbGVuZ3Ro IDU1NDogKHRvcyAweDAsIHR0bCA2NCwgaWQgMSwgb2Zmc2V0IDAsIGZsYWdzIFtub25lXSwgcHJv dG8gVENQDQo+ICg2KSwgbGVuZ3RoIDU0MCkNCj4gICAgIDExLjEwLjEwLjIwLjIwMDAgPiAxMS4x MC4xMC4yMS4zMDAwOiBGbGFncyBbU10sIGNrc3VtIDB4NDExYiAoY29ycmVjdCksDQo+IHNlcSAw OjUwMCwgd2luIDgxOTIsIGxlbmd0aCA1MDANCj4gMTE6MjA6NTEuNDk0NjYwIDI0OjhhOjA3Ojg4 OjI2OjZhID4gMjQ6OGE6MDc6ODg6MjY6NWEsIGV0aGVydHlwZSBJUHY0DQo+ICgweDA4MDApLCBs ZW5ndGggNTU0OiAodG9zIDB4MCwgdHRsIDY0LCBpZCAyLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVd LCBwcm90byBUQ1ANCj4gKDYpLCBsZW5ndGggNTQwKQ0KPiAgICAgMTEuMTAuMTAuMjAuMjAwMCA+ IDExLjEwLjEwLjIxLjMwMDA6IEZsYWdzIFtTXSwgY2tzdW0gMHgzZjI3IChjb3JyZWN0KSwNCj4g c2VxIDUwMDoxMDAwLCB3aW4gODE5MiwgbGVuZ3RoIDUwMA0KPiAxMToyMDo1MS40OTQ2NjIgMjQ6 OGE6MDc6ODg6MjY6NmEgPiAyNDo4YTowNzo4ODoyNjo1YSwgZXRoZXJ0eXBlIElQdjQNCj4gKDB4 MDgwMCksIGxlbmd0aCA0OTY6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDMsIG9mZnNldCAwLCBmbGFn cyBbbm9uZV0sIHByb3RvIFRDUA0KPiAoNiksIGxlbmd0aCA0ODIpDQo+ICAgICAxMS4xMC4xMC4y MC4yMDAwID4gMTEuMTAuMTAuMjEuMzAwMDogRmxhZ3MgW1NdLCBja3N1bSAweGIyZTIgKGNvcnJl Y3QpLA0KPiBzZXEgMTAwMDoxNDQyLCB3aW4gODE5MiwgbGVuZ3RoIDQ0MiAiIiINCj4gDQo+IEJS cywNCj4gV2lzYW0gSmFkZG8NCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZy b206IEh1LCBKaWF5dSBbbWFpbHRvOmppYXl1Lmh1QGludGVsLmNvbV0NCj4gU2VudDogVGh1cnNk YXksIFNlcHRlbWJlciA3LCAyMDE3IDEwOjU4IEFNDQo+IFRvOiBXaXNhbSBNb250aGVyDQo+IENj OiB1c2Vyc0BkcGRrLm9yZzsgUmFzbGFuIERhcmF3c2hlaDsgU2hhaGFmIFNodWxlcg0KPiBTdWJq ZWN0OiBSRTogVW5hYmxlIHRvIG1lcmdlIHBhY2tldHMgdXNpbmcgR1JPIGZlYXR1cmUNCj4gDQo+ IEhpIFdpc2FtLA0KPiANCj4gQ2FuIHlvdSBzZW5kIG1lIHRoZSBwY2FwIGZpbGUgb2YgdGhlIFRT T2VkIHBhY2tldHM/IEkgd2FudCB0byBzZWUgd2hhdCB0aGUNCj4gcGFja2V0cyB0aGF0IHRoZSBH Uk8gZW5hYmxlZCBwb3J0IHJlY2VpdmVzIGxvb2sgbGlrZS4NCj4gDQo+IFRoYW5rcywNCj4gSmlh eXUNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBXaXNhbSBN b250aGVyIFttYWlsdG86d2lzYW1tQG1lbGxhbm94LmNvbV0NCj4gPiBTZW50OiBUaHVyc2RheSwg U2VwdGVtYmVyIDcsIDIwMTcgMzoxOSBQTQ0KPiA+IFRvOiBIdSwgSmlheXUgPGppYXl1Lmh1QGlu dGVsLmNvbT4NCj4gPiBDYzogdXNlcnNAZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWggPHJhc2xh bmRAbWVsbGFub3guY29tPjsgU2hhaGFmDQo+ID4gU2h1bGVyIDxzaGFoYWZzQG1lbGxhbm94LmNv bT4NCj4gPiBTdWJqZWN0OiBSRTogVW5hYmxlIHRvIG1lcmdlIHBhY2tldHMgdXNpbmcgR1JPIGZl YXR1cmUNCj4gPg0KPiA+IEhpIEppYXl1LA0KPiA+DQo+ID4gRmlyc3Qgb2YgYWxsLCBJIGFwcHJl Y2lhdGUgeW91ciBlZmZvcnRzIHdpdGggbWUgOikgVGhlIHRoaW5nIHRoYXQgdGhlDQo+ID4gcGFj a2V0cyBkaWRuJ3QgZHJvcHBlZCB3aGVuIEkgdXNlZCBhIHBhY2tldCB3aXRoIDE1MDAgaW4gdG90 YWwgYXMgYQ0KPiA+IHRocmVlIHNlZ21lbnRzIG9mIDUwMCwgU28sIGV2ZW4gd2hlbiBlbmFibGUg Z3JvLCB0ZXN0cG1kIHdpbGwgZndkIHRoZQ0KPiA+IHJlY2VpdmVkIHNlZ21lbnRzIGFzIGl0Lg0K PiA+ICJTbyBhY2NvcmRpbmcgdG8gdGhpcyBiZWhhdmlvciB3ZSBjb25jbHVkZSB0aGF0IGl0J3Mg ZGlkbid0IHJlYWNoIHRoZQ0KPiA+IGxpbWl0LCBhbmQgYWxzbyB0aGUgR1JPIGRpZG4ndCB3b3Jr Ig0KPiA+DQo+ID4gQ291bGQgYmUgdGhlcmUgc29tZSBjb25zdHJhaW50cyBmb3IgTUxYIGRyaXZl ciBvciBNTFggTklDcyByZWdhcmRzIEdSTz8NCj4gPg0KPiA+IEJlc3QgcmVnYXJkcywNCj4gPiBX aXNhbSBKYWRkbw0KPiA+DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9t OiBIdSwgSmlheXUgW21haWx0bzpqaWF5dS5odUBpbnRlbC5jb21dDQo+ID4gU2VudDogVGh1cnNk YXksIFNlcHRlbWJlciA3LCAyMDE3IDQ6MTUgQU0NCj4gPiBUbzogV2lzYW0gTW9udGhlcg0KPiA+ IENjOiB1c2Vyc0BkcGRrLm9yZzsgUmFzbGFuIERhcmF3c2hlaDsgU2hhaGFmIFNodWxlcg0KPiA+ IFN1YmplY3Q6IFJFOiBVbmFibGUgdG8gbWVyZ2UgcGFja2V0cyB1c2luZyBHUk8gZmVhdHVyZQ0K PiA+DQo+ID4gSGkgV2lzYW0sDQo+ID4NCj4gPiBXaGVuIHdlIHBlcmZvcm0gYSBzaW1pbGFyIHRl c3Qgb24gaTQwZSwgd2UgZmluZCBhbiBpbXBvcnRhbnQgdGhpbmc6DQo+ID4gdGhlcmUgaXMgYSBt YXggbnVtYmVyIGxpbWl0IGZvciBtYnVmLT5uYl9zZWdzLiBXaGVuIHRoZSBudW1iZXIgb2YgTUJV Rg0KPiA+IHNlZ21lbnRzIG9mIHRoZSBwYWNrZXQgaXMgbGFyZ2VyIHRoYW4gdGhpcyBsaW1pdCwg dGhlIHBhY2tldCB3aWxsIGJlIGRyb3BwZWQuDQo+ID4NCj4gPiBUaGUgR1JPZWQgcGFja2V0IGhh cyBtdWx0aXBsZSBNQlVGIHNlZ21lbnRzLiBGb3Igdmhvc3QtZHBkaywgaXQNCj4gPiBkb2Vzbid0 IGhhdmUgbGltaXQgZm9yIHRoZSBudW1iZXIgb2Ygc2VnbWVudHMuIEJ1dCBpdCdzIG5vdCB0aGUg c2FtZQ0KPiA+IGZvciBhbGwgTklDIGRyaXZlcnMuIFNvIEkgc3VnZ2VzdCB5b3UgdG8gY2hlY2sg aWYgdGhlIE1MWCBkcml2ZXIgaGFzIHRoaXMgbGltaXQNCj4gdG9vLg0KPiA+DQo+ID4gVGhhbmtz LA0KPiA+IEppYXl1DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiBGcm9tOiBXaXNhbSBNb250aGVyIFttYWlsdG86d2lzYW1tQG1lbGxhbm94LmNvbV0NCj4gPiA+ IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDYsIDIwMTcgNzoxOCBQTQ0KPiA+ID4gVG86IEh1 LCBKaWF5dSA8amlheXUuaHVAaW50ZWwuY29tPg0KPiA+ID4gQ2M6IHVzZXJzQGRwZGsub3JnOyBS YXNsYW4gRGFyYXdzaGVoIDxyYXNsYW5kQG1lbGxhbm94LmNvbT47DQo+IFNoYWhhZg0KPiA+ID4g U2h1bGVyIDxzaGFoYWZzQG1lbGxhbm94LmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJFOiBVbmFibGUg dG8gbWVyZ2UgcGFja2V0cyB1c2luZyBHUk8gZmVhdHVyZQ0KPiA+ID4NCj4gPiA+IEhpIEppYXl1 LA0KPiA+ID4NCj4gPiA+IEFueSBjb21tZW50IHJlZ2FyZCB3aGF0IEkgZGVzY3JpYmVkPw0KPiA+ ID4NCj4gPiA+IEJScywNCj4gPiA+IFdpc2FtIEphZGRvDQo+ID4gPg0KPiA+ID4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFdpc2FtIE1vbnRoZXINCj4gPiA+IFNlbnQ6 IFR1ZXNkYXksIEF1Z3VzdCAyOSwgMjAxNyAxMDo0OSBBTQ0KPiA+ID4gVG86ICdIdSwgSmlheXUn DQo+ID4gPiBDYzogdXNlcnNAZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWg7IFNoYWhhZiBTaHVs ZXINCj4gPiA+IFN1YmplY3Q6IFJFOiBVbmFibGUgdG8gbWVyZ2UgcGFja2V0cyB1c2luZyBHUk8g ZmVhdHVyZQ0KPiA+ID4NCj4gPiA+IEhpIEppYXl1LA0KPiA+ID4NCj4gPiA+IExldCBtZSByZS1k ZXNjcmliZSBteSB0b3BvbG9neSBpbiBhIGJldHRlciB3YXksIHNlZSBhdHRhY2hlZCBpbWFnZS4N Cj4gPiA+IEFuZCBpdCBpcyBjb25uZWN0ZWQgcGh5c2ljYWxseSBhcyBkZXNjcmliZWQsIGFuZCBJ J20gdXNpbmcgaXQgd2l0aA0KPiA+ID4gTVRVDQo+ID4gPiBzaXplPTE1MDAgaW4gb3JkZXIgdG8g bWFrZSBzdXJlIEV2ZXJ5IHBvcnQgY2FuIGhhbmRsZSBpdC4NCj4gPiA+DQo+ID4gPiBBbmQgdGhp cyBpcyB0aGUgZXhhY3QgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBpbnRlcmZhY2VzLCBzbyBJJ20g c3VyZQ0KPiA+ID4gdGhlIHBhY2tldHMgcmVjZWl2ZWQgaW4gTklDIEIgbWFjaGluZSBCIGlzIGNv bWluZyBmcm9tIHRoZSB0ZXN0cG1kDQo+ID4gPiB3aXRoIEdSTyBlbmFibGVkLg0KPiA+ID4NCj4g PiA+IEJ1dCBldmVuIHNvLCBJIGludGVudGlvbmFsbHkgbWFkZSB0aGUgcGFja2V0IHNpemUgMTUw MCwgdG8gYmUNCj4gPiA+IGRpdmlkZWQgaW50byAzICogKCA1MDApIGZyYWdtZW50cyB1c2luZyB0 aGUgVFNPLCBhbmQgdGhlbiBtZXJnZWQNCj4gPiA+IGludG8gMTUwMCBwYWNrZXQgYWdhaW4gaW4g dGhlIEdSTy4NCj4gPiA+IFNvIHRoZSBldmVyeSBtYWNoaW5lIGNhbiBtYW5hZ2UgdGhpcyBtdHUg c2l6ZS4NCj4gPiA+DQo+ID4gPiBUaGUgdGhpbmcgdGhhdCBJIG5lZWQgdG8gdGVzdCBHUk8gd2l0 aCBlYWNoIHNldHVwcyB0eXBlcywgIlZNcyB3aXRoDQo+ID4gPiBCYXJlbWV0YWwgd2l0aCBwYXNz IHRocm91Z2ggd2l0aCBWRnMgZXRjLi4uIi4NCj4gPiA+IFNvIEkgbmVlZCB0byBzZWUgdGhlIGZl YXR1cmUgd29ya3Mgb24gbGVhc3Qgd29yaywgaXQgd291bGQgYmUgbmljZQ0KPiA+ID4gdG8gc2Vu ZCBJUFY0X1RDUCBmcmFnbWVudGVkIHBhY2tldCB1c2luZyAic2NhcHksIElwZXJmIg0KPiA+ID4g QW5kIGNoZWNrIHRoZSBmd2QgcGFja2V0IGZyb20gR1JPIGRpcmVjdGx5Lg0KPiA+ID4NCj4gPiA+ IEJScywNCj4gPiA+IFdpc2FtIEphZGRvDQo+ID4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiA+IEZyb206IEh1LCBKaWF5dSBbbWFpbHRvOmppYXl1Lmh1QGludGVsLmNv bV0NCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIEF1Z3VzdCAyOSwgMjAxNyA0OjUxIEFNDQo+ID4gPiBU bzogV2lzYW0gTW9udGhlcg0KPiA+ID4gQ2M6IHVzZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdz aGVoOyBTaGFoYWYgU2h1bGVyDQo+ID4gPiBTdWJqZWN0OiBSRTogVW5hYmxlIHRvIG1lcmdlIHBh Y2tldHMgdXNpbmcgR1JPIGZlYXR1cmUNCj4gPiA+DQo+ID4gPiBIaSBXaXNhbSwNCj4gPiA+DQo+ ID4gPiBJbiB0aGUgcGljdHVyZSBvZiB5b3VyIGV4cGVyaW1lbnQgdG9wb2xvZ3ksIEkgZ3Vlc3Mg TklDIEIgaW4gdGhlDQo+ID4gPiBtYWNoaW5lIEIgaXMgY29ubmVjdGVkIHdpdGggYW5vdGhlciBp bnRlcmZhY2UgcGh5c2ljYWxseS4gSWYgc28sIHRoZQ0KPiA+ID4gcGFja2V0cyB0aGF0IHRjcGR1 bXAgY2FwdHVyZXMgYXJlIGZyb20gdGhlIHBoeXNpY2FsIGxpbmsuIEhvd2V2ZXIsDQo+ID4gPiBw YWNrZXRzIGFmdGVyIEdST2VkIGFyZSBtdWx0aS0gc2VnbWVudCBsYXJnZSBwYWNrZXRzLCB3aGlj aCBhcmUNCj4gPiA+IGxhcmdlciB0aGFuIE1UVS4gSSBhbSBub3Qgc3VyZSBpZiB5b3UgaGF2ZSBt YWtlIG90aGVyIGNvbmZpZ3VyYXRpb25zDQo+ID4gPiB0byBlbmFibGUgdGhlc2UgbGFyZ2UgcGFj a2V0cyB0byBwYXNzIHRoZSBwaHlzaWNhbCBsaW5rLCBhbmQgdGhlcmUNCj4gPiA+IGlzIGp1bWJv IGZyYW1lIHNpemUgbGltaXQgZm9yIGRpZmZlcmVudCBOSUNzLiBTbyB3b3VsZCB5b3UgcGxlYXNl IHRvDQo+ID4gPiBjaGVjayB0aGlzPyBCVFcsIHlvdSBjYW4gdXNlIHRoZSBWTSB0byB0ZXN0IHRo aXMgR1JPIGZlYXR1cmUsIHNpbmNlDQo+ID4gPiBsYXJnZQ0KPiA+IHBhY2tldHMgY2FuIGFsd2F5 cyBwYXNzIHRvIHRoZSBWTS4NCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ID4gPiBKaWF5dQ0KPiA+ ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogV2lz YW0gTW9udGhlciBbbWFpbHRvOndpc2FtbUBtZWxsYW5veC5jb21dDQo+ID4gPiA+IFNlbnQ6IE1v bmRheSwgQXVndXN0IDI4LCAyMDE3IDM6MzcgUE0NCj4gPiA+ID4gVG86IEh1LCBKaWF5dSA8amlh eXUuaHVAaW50ZWwuY29tPg0KPiA+ID4gPiBDYzogdXNlcnNAZHBkay5vcmc7IFJhc2xhbiBEYXJh d3NoZWggPHJhc2xhbmRAbWVsbGFub3guY29tPjsNCj4gPiBTaGFoYWYNCj4gPiA+ID4gU2h1bGVy IDxzaGFoYWZzQG1lbGxhbm94LmNvbT4NCj4gPiA+ID4gU3ViamVjdDogUkU6IFVuYWJsZSB0byBt ZXJnZSBwYWNrZXRzIHVzaW5nIEdSTyBmZWF0dXJlDQo+ID4gPiA+DQo+ID4gPiA+IEhpIEppYXl1 LA0KPiA+ID4gPg0KPiA+ID4gPiBJJ20gc29ycnkgZm9yIGJvdGhlcmluZyB5b3UsIGJ1dCBjb3Vs ZCB5b3UgY29uZm9ybSB0aGF0IHRoZQ0KPiA+ID4gPiBmZWF0dXJlIGlzIHdvcmtpbmcgcHJvYmFi bHkgQmVjYXVzZSwgd2hhdCBJIGV2ZXIgIGRpZCwgSSBjb3VsZG4ndA0KPiA+ID4gPiBnZXQgdGhl IG1lcmdlZCBwYWNrZXRzLg0KPiA+ID4gPg0KPiA+ID4gPiBCUnMsDQo+ID4gPiA+IFdpc2FtIEph ZGRvDQo+ID4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ IEZyb206IFdpc2FtIE1vbnRoZXINCj4gPiA+ID4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCAyNCwg MjAxNyA5OjE1IEFNDQo+ID4gPiA+IFRvOiAnSHUsIEppYXl1Jw0KPiA+ID4gPiBDYzogdXNlcnNA ZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWg7IFNoYWhhZiBTaHVsZXINCj4gPiA+ID4gU3ViamVj dDogUkU6IFVuYWJsZSB0byBtZXJnZSBwYWNrZXRzIHVzaW5nIEdSTyBmZWF0dXJlDQo+ID4gPiA+ DQo+ID4gPiA+IEhpLA0KPiA+ID4gPg0KPiA+ID4gPiBJJ20gdXNpbmcgTWVsbGFub3ggTklDcywg YW5kIGl0IGlzIHN1cHBvcnRpbmcgcGFyc2UgcGFja2V0IHR5cGVzLg0KPiA+ID4gPg0KPiA+ID4g PiBCZXN0IHJlZ2FyZHMsDQo+ID4gPiA+IFdpc2FtIEphZGRvDQo+ID4gPiA+DQo+ID4gPiA+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IEh1LCBKaWF5dSBbbWFpbHRv OmppYXl1Lmh1QGludGVsLmNvbV0NCj4gPiA+ID4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCAyNCwg MjAxNyA4OjQ3IEFNDQo+ID4gPiA+IFRvOiBXaXNhbSBNb250aGVyDQo+ID4gPiA+IENjOiB1c2Vy c0BkcGRrLm9yZzsgUmFzbGFuIERhcmF3c2hlaDsgU2hhaGFmIFNodWxlcg0KPiA+ID4gPiBTdWJq ZWN0OiBSRTogVW5hYmxlIHRvIG1lcmdlIHBhY2tldHMgdXNpbmcgR1JPIGZlYXR1cmUNCj4gPiA+ ID4NCj4gPiA+ID4gSGksDQo+ID4gPiA+DQo+ID4gPiA+IENhbiB5b3UgdGVsbCBtZSB3aGF0J3Mg dGhlIE5JQyB0eXBlIG9mIHRoZSBHUk8tZW5hYmxlZCBwb3J0Pw0KPiA+ID4gPg0KPiA+ID4gPiBT aW5jZSBHUk8gbGlicmFyeSB1c2VzIG1idWYtPnBhY2tldF90eXBlIHRvIHBhcnNlIHBhY2tldCBo ZWFkZXJzLA0KPiA+ID4gPiBhcHBsaWNhdGlvbnMgbmVlZCB0byBmaWxsIHRoaXMgdmFsdWUgYmVm b3JlIGNhbGxpbmcgR1JPIHJlYXNzZW1ibHkgQVBJcy4NCj4gPiA+ID4gT3RoZXJ3aXNlLCB0aGUg R1JPIGNhbid0IHdvcmsgY29ycmVjdGx5Lg0KPiA+ID4gPg0KPiA+ID4gPiBJbiBjc3VtIGZvcndh cmRpbmcgZW5naW5lIG9mIHRlc3RwbWQsIHBhY2tldF90eXBlIGlzIGZpbGxlZCBieSBOSUMNCj4g ZHJpdmVycy4NCj4gPiA+ID4gVGhlIGNzdW0gZm9yd2FyZGluZyBlbmdpbmUgd29uJ3Qgc2V0IHRo aXMgdmFsdWUuIFNvIGlmIHlvdXIgTklDDQo+ID4gPiA+IGRvZXNu4oCZdCBzdXBwb3J0IHRvIHBh cnNlIHBhY2tldCB0eXBlcywgdGhlIHZhbHVlIG9mIHBhY2tldF90eXBlIGlzDQo+ID4gPiA+IDAg YW5kIEdSTyBjYW4ndCB3b3JrIGNvcnJlY3RseS4NCj4gPiA+ID4NCj4gPiA+ID4gQlJzLA0KPiA+ ID4gPiBKaWF5dQ0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gPiA+ID4gRnJvbTogV2lzYW0gTW9udGhlciBbbWFpbHRvOndpc2FtbUBtZWxsYW5veC5j b21dDQo+ID4gPiA+ID4gU2VudDogVHVlc2RheSwgQXVndXN0IDIyLCAyMDE3IDk6MjUgUE0NCj4g PiA+ID4gPiBUbzogSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gQ2M6 IHVzZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoIDxyYXNsYW5kQG1lbGxhbm94LmNvbT47 DQo+ID4gPiBTaGFoYWYNCj4gPiA+ID4gPiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29tPg0K PiA+ID4gPiA+IFN1YmplY3Q6IFJFOiBVbmFibGUgdG8gbWVyZ2UgcGFja2V0cyB1c2luZyBHUk8g ZmVhdHVyZQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gWWVzIGl0IGlzLA0KPiA+ID4gPiA+IFRoZSBm cmFnbWVudGVkIHBhY2tldHMgY29tZXMgZnJvbSBwb3J0MSAvIE5JQyBiIGZyb20gbWFjaGluZSBB DQo+ID4gPiA+ID4gdG8gcG9ydA0KPiA+ID4gPiA+IDEgaW4gTklDIEEgZm9yIG1hY2hpbmUgYiBT byBpdCdzIHJlY2VpdmVkIG9uIHRoZSBwb3J0ICcxJywgd2hpY2gNCj4gPiA+ID4gPiBpcyBjb25m aWd1cmVkIGdybyBhY3RpdmUgb24gdGhpcyBwb3J0Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQmVz dCByZWdhcmRzLA0KPiA+ID4gPiA+IFdpc2FtIEphZGRvDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IEh1LCBKaWF5dSBbbWFp bHRvOmppYXl1Lmh1QGludGVsLmNvbV0NCj4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3Qg MjIsIDIwMTcgNDoyMSBQTQ0KPiA+ID4gPiA+IFRvOiBXaXNhbSBNb250aGVyDQo+ID4gPiA+ID4g Q2M6IHVzZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoOyBTaGFoYWYgU2h1bGVyDQo+ID4g PiA+ID4gU3ViamVjdDogUkU6IFVuYWJsZSB0byBtZXJnZSBwYWNrZXRzIHVzaW5nIEdSTyBmZWF0 dXJlDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBIaSwNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+IEZyb206IFdpc2FtIE1vbnRoZXIg W21haWx0bzp3aXNhbW1AbWVsbGFub3guY29tXQ0KPiA+ID4gPiA+ID4gU2VudDogVHVlc2RheSwg QXVndXN0IDIyLCAyMDE3IDc6MDcgUE0NCj4gPiA+ID4gPiA+IFRvOiBIdSwgSmlheXUgPGppYXl1 Lmh1QGludGVsLmNvbT4NCj4gPiA+ID4gPiA+IENjOiB1c2Vyc0BkcGRrLm9yZzsgUmFzbGFuIERh cmF3c2hlaCA8cmFzbGFuZEBtZWxsYW5veC5jb20+Ow0KPiA+ID4gPiBTaGFoYWYNCj4gPiA+ID4g PiA+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+DQo+ID4gPiA+ID4gPiBTdWJqZWN0OiBS RTogVW5hYmxlIHRvIG1lcmdlIHBhY2tldHMgdXNpbmcgR1JPIGZlYXR1cmUNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBIZXkgSmlheXUsDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGhhbmsg eW91IGZvciB5b3VyIHJlcGx5Lg0KPiA+ID4gPiA+ID4gSSB0cmllZCB3aGF0IHlvdSBzYWlkIHdp dGggdGhlIGNzdW0gYXQgZndkIG1vZGUuDQo+ID4gPiA+ID4gPiBFdmVuIHNvIHRoZSBHUk8gZGlk bid0IHdvcmtzIGZpbmUuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSSBldmVuIHRlc3RlZCB3 aXRoIGEgbmV3IG1ldGhvZG9sb2d5Lg0KPiA+ID4gPiA+ID4gVHdvIG1hY2hpbmVzIHdpdGggdHdv IGRpZmZlcmVudCBuaWMgZm9yIGVhY2guDQo+ID4gPiA+ID4gPiBUaGUgbWV0aG9kb2xvZ3kgdGhh dCBJIHVzZWQgdG8gdGVzdCBpdCBpcyBkZXNjcmliZWQgaW4gdGhlIGF0dGFjaGVkDQo+IGZpbGUu DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gV2hhdCBJIGRpZCBmcm9tIGdybyBzaWRlOg0KPiA+ ID4gPiA+ID4gIiIiDQo+ID4gPiA+ID4gPiB0ZXN0cG1kPmdybyBvbiAxDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBEb2VzIHRoZSBwb3J0IG51bWJlciBvZiBOSUMgQSBpbiBtYWNoaW5lIEIgaXMgJzEn PyBXaGVuIHlvdQ0KPiA+ID4gPiA+IGVuYWJsZSBHUk8gZm9yIHBvcnQgJzEnLCBUZXN0cG1kIG9u bHkgdHJpZXMgdG8gbWVyZ2UgcGFja2V0cw0KPiA+ID4gPiA+IHJlY2VpdmVkIGZyb20gcG9ydA0K PiA+ID4gJzEnLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQlJzLA0KPiA+ID4gPiA+IEppYXl1DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFRlc3RwbWQ+c2V0IGZ3ZCBjc3VtDQo+ID4gPiA+ID4gPiBU ZXN0cG1kPnN0YXJ0DQo+ID4gPiA+ID4gPiAiIiINCj4gPiA+ID4gPiA+IEFuZCB0aGUgcGFja2V0 IHdpdGggY29ycmVjdCBkc3QgbWFjLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEJlc3QgcmVn YXJkcywNCj4gPiA+ID4gPiA+IFdpc2FtIEphZGRvDQo+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gRnJvbTogSmlheXUgSHUgW21haWx0bzpqaWF5dS5o dUBpbnRlbC5jb21dDQo+ID4gPiA+ID4gPiBTZW50OiBNb25kYXksIEF1Z3VzdCAyMSwgMjAxNyAx MjoxNCBQTQ0KPiA+ID4gPiA+ID4gVG86IFdpc2FtIE1vbnRoZXINCj4gPiA+ID4gPiA+IENjOiBU aG9tYXMgTW9uamFsb247IHVzZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoOyBTaGFoYWYN Cj4gPiA+ID4gPiA+IFNodWxlcg0KPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFVuYWJsZSB0byBt ZXJnZSBwYWNrZXRzIHVzaW5nIEdSTyBmZWF0dXJlDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g SGksDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gT24gTW9uLCBBdWcgMjEsIDIwMTcgYXQgMDc6 MjU6MjNBTSArMDAwMCwgV2lzYW0gTW9udGhlciB3cm90ZToNCj4gPiA+ID4gPiA+ID4gSGVsbG8g R3V5cywNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gSSBob3BlIHRoaXMgZmluZHMgeW91IHdlbGwsIEnigJltIHRyeWluZyB0byB0ZXN0 IHRoZSBHUk8gZmVhdHVyZS4NCj4gPiA+ID4gPiA+ID4gQnV0IEnigJltIHN0dWNrIHdpdGggdGhp cyBzY2VuYXJpby4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gQXMgeW91IGtub3csIEdS TyBpcyBvbmx5IHN1cHBvcnQgVENQX0lQVjQgcGFja2V0IHVudGlsIG5vdy4NCj4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gU28gSeKAmW0gdHJ5aW5nIHRvIHRlc3QgdGhlIGJhc2ljIGZ1bmN0 aW9uYWxpdHkgb2YgdGhlDQo+ID4gPiA+ID4gPiA+IGZlYXR1cmUsIGFzDQo+ID4gPiBmb2xsb3dp bmc6DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFN0YXJ0IHRlc3RwbWQ6DQo+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+IOKAnOKAneKAnQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiAuL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjL2J1aWxkL2FwcC90ZXN0LXBtZC90ZXN0 cG1kIC1uIDQNCj4gPiA+ID4gPiA+ID4gLXcNCj4gPiA+ID4gPiA+ID4gMDA6MGEuMCAgLXcNCj4g PiA+ID4gPiA+ID4gMDA6MDkuMCAtLSAgLS1idXJzdD02NCAtLW1iY2FjaGU9NTEyIC0tcG9ydG1h c2sgMHhmIC1pDQo+ID4gPiA+ID4gPiA+IC0tdHhkPTUxMg0KPiA+ID4gPiA+ID4gPiAtLXJ4ZD01 MTINCj4gPiA+ID4gPiA+ID4gLS1uYi1jb3Jlcz05ICAtLXJ4cT0yIC0tdHhxPTIgLS10eHFmbGFn cz0wDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IOKAnOKAneKAnQ0KPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBUaGVuIGVuYWJs ZSBHUk8gYXQgdGhlIHR3byBwb3J0czoNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g4oCc 4oCd4oCdDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRlc3RwbWQ+Z3JvIG9uIDANCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGVzdHBtZD5ncm8gb24gMQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+IFdoZW4gdXNlIEdSTyBpbiB0ZXN0cG1kLCB0aGVyZSBhcmUgZm9sbG93aW5n IHRoaW5ncyB0byBub3RpY2U6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gMS4gSW4gdGVzdHBt ZCwgR1JPIGlzIHN1cHBvcnRlZCBieSBjc3VtIGZvcndhcmRpbmcgZW5naW5lLg0KPiA+ID4gPiA+ ID4gVGhlcmVmb3JlLCBwbGVhc2UgdXNlICdzZXQgZndkIGNzdW0nIHRvIHN3aXRjaCBmb3J3YXJk aW5nIGVuZ2luZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAyLiBCeSBkZWZhdWx0LCBjc3Vt IGZvcndhcmRpbmcgZW5naW5lIGNvbXB1bHNvcmlseSBjaGFuZ2VzDQo+ID4gPiA+ID4gPiBldGhl cm5ldCBhZGRyZXNzZXMuIFNvIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCBNQUMgYWRkcmVzc2VzIGFy ZQ0KPiA+ID4gY29ycmVjdC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAzLiBXaGVuIGVuYWJs ZSBHUk8gZm9yIHBvcnQwLCBjc3VtIGZvcndhcmRpbmcgZW5naW5lIHdpbGwNCj4gPiA+ID4gPiA+ IG1lcmdlIHBhY2tldHMgcmVjZWl2ZWQgZnJvbSBwb3J0MC4gSWYgdGhlcmUgYXJlIG5vIHBhY2tl dHMNCj4gPiA+ID4gPiA+IGZyb20gcG9ydDEgdG8gcG9ydDAsIHlvdSBkb24ndCBuZWVkIHRvIGVu YWJsZSBHUk8gZm9yIHBvcnQxLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IDQuIEdSTyBsaWJy YXJ5IGRvZXNuJ3QgcmUtY2FsY3VsYXRlIGNoZWNrc3VtcyBmb3IgbWVyZ2VkIHBhY2tldHMuDQo+ ID4gPiA+ID4gPiBJZiB5b3Ugd2FudCBtZXJnZWQgcGFja2V0cyBoYXZlIGNvcnJlY3QgY2hlY2tz dW0sIHBsZWFzZQ0KPiA+ID4gPiA+ID4gc2VsZWN0IEhXIElQIGFuZCBIVyBUQ1AgY2hlY2tzdW0g Y2FsY3VsYXRpb24gZm9yIHRoZSBwb3J0DQo+ID4gPiA+ID4gPiB3aGljaCB0aGUgbWVyZ2VkIHBh Y2tldHMgYXJlIHRyYW5zbWl0dGVkIHRvIGluIGNzdW0gZm9yd2FyZGluZw0KPiBlbmdpbmUuDQo+ ID4gPiA+ID4gPiBUaGlzIGlzIGJlY2F1c2UgdGhlIG1lcmdlZCBwYWNrZXRzIGFyZSBtdWx0aS1z ZWdtZW50IG1idWZzLA0KPiA+ID4gPiA+ID4gYnV0IGNzdW0gZm9yd2FyZGluZyBlbmdpbmUgZG9l c24ndCBzdXBwb3J0IHRvIGNhbGN1bGF0ZQ0KPiA+ID4gPiA+ID4gY2hlY2tzdW1zIGZvciBtdWx0 aS1zZWdtZW50IG1idWZzIGluIFNXLiBTbyB3ZSBuZWVkIHRvIHNlbGVjdA0KPiA+ID4gPiA+ID4g SFcgY2hlY2tzdW0NCj4gPiA+ID4gb2ZmbG9hZGluZy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiBlLmcuIElmIGRhdGEgZmxvdyBpcyAicGFja2V0cyAtPiBwb3J0MCAtPiBwb3J0MSIsIGNvbW1h bmRzDQo+ID4gPiA+ID4gPiB1c2VkIGluDQo+ID4gPiA+IHRlc3RwbWQ6DQo+ID4gPiA+ID4gPiAJ Z3JvIG9uIHBvcnQwDQo+ID4gPiA+ID4gPiAJc2V0IGZ3ZCBjc3VtDQo+ID4gPiA+ID4gPiAJY3N1 bSBzZXQgaXAgaHcgcG9ydDENCj4gPiA+ID4gPiA+IAljc3VtIHNldCB0Y3AgaHcgcG9ydDENCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQmVzaWRlcywgeW91IG5lZWQgdG8g bWFrZSBzdXJlIHRoYXQgeW91ciBQTUQgZHJpdmVyIGRvZXNuJ3QNCj4gPiA+ID4gPiA+IHVzZSB2 ZWN0b3IgVFggZnVuY3Rpb24sIHNpbmNlIHZlY3RvciBmdW5jdGlvbiBkb2Vzbid0IHN1cHBvcnQN Cj4gPiA+ID4gPiA+IGNoZWNrc3VtDQo+ID4gPiA+IG9mZmxvYWRpbmcuDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiDigJzigJ3igJ0NCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gQW5kIHRyeWluZyB0byBz ZW5kIFRDUF9JUFY0IGZyYWdtZW50ZWQgcGFja2V0IOKAnHBhY2tldCB3aXRoDQo+ID4gPiA+ID4g PiA+IGxlbmd0aA0KPiA+ID4gPiA+ID4gPiAxNTAwIGZyYWdtZW50ZWQgdG8gdGhyZWUgcGFja2V0 cyBvZiA1MDDigJ0NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g4oCc4oCd4oCdDQo+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IHA9RXRoZXIoc3JjPWdldF9pZl9od2FkZHIoJ2VuczEw JyksIGRzdD0NCj4gPiA+ID4gPiA+ID4gJzI0OjhBOjA3Ojg4OjI2OjZCJykvSVAoKS9UQ1AoKQ0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBwLmFkZF9wYXlsb2FkKCdGJyooMTUwMCAtIGxl bihwKSkpDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IGZyYWdzPWZyYWdtZW50KHAsZnJh Z3NpemU9NTAwKQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBmb3IgZnJhZ21lbnQgaW4g ZnJhZ3M6DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ICAgICAgc2VuZHAoZnJhZ21lbnQs IGlmYWNlPSdlbnMxMCcpDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IOKAnOKAneKAnQ0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiBCdXQgdGhlIHRlc3RwbWQgZm9yd2FyZCB0aGUgcGFja2V0cyBhcyBpdCBpcywg4oCcIGRvZXNu 4oCZdCBkbyBhbnkNCj4gbWVyZ2XigJ0NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGNwZHVtcCBhdCB0aGUgVEcgc2lkZSwNCj4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGhlIHNlbmRpbmcgZnJhZ21ldHMgdXNpbmcgZW5zMTA6 DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ICN0Y3BkdW1wIOKAk0kgZW5zMTAg4oCTdnZ2 ZW4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gMTU6NDU6MjkuMDgzNTE0IDI0OjhhOjA3 Ojg4OjI2OjViID4gMjQ6OGE6MDc6ODg6MjY6NmIsDQo+ID4gPiA+ID4gPiA+IGV0aGVydHlwZQ0K PiA+ID4gPiA+ID4gPiBJUHY0ICgweDA4MDApLCBsZW5ndGggNTM4OiAodG9zIDB4MCwgdHRsIDY0 LCBpZCAxLCBvZmZzZXQgMCwNCj4gPiA+ID4gPiA+ID4gZmxhZ3MgWytdLCBwcm90byBPcHRpb25z ICgwKSwgbGVuZ3RoIDUyNCkNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gICAgIDEyNy4w LjAuMSA+IDEyNy4wLjAuMTogIGlwLXByb3RvLTAgNTA0DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+IDE1OjQ1OjI5LjExNTI2NiAyNDo4YTowNzo4ODoyNjo1YiA+IDI0OjhhOjA3Ojg4OjI2 OjZiLA0KPiA+ID4gPiA+ID4gPiBldGhlcnR5cGUNCj4gPiA+ID4gPiA+ID4gSVB2NCAoMHgwODAw KSwgbGVuZ3RoIDUzODogKHRvcyAweDAsIHR0bCA2NCwgaWQgMSwgb2Zmc2V0DQo+ID4gPiA+ID4g PiA+IDUwNCwgZmxhZ3MgWytdLCBwcm90byBPcHRpb25zICgwKSwgbGVuZ3RoIDUyNCkNCj4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gICAgIDEyNy4wLjAuMSA+IDEyNy4wLjAuMTogaXAtcHJv dG8tMA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAxNTo0NToyOS4xNDcyNTggMjQ6OGE6 MDc6ODg6MjY6NWIgPiAyNDo4YTowNzo4ODoyNjo2YiwNCj4gPiA+ID4gPiA+ID4gZXRoZXJ0eXBl DQo+ID4gPiA+ID4gPiA+IElQdjQgKDB4MDgwMCksIGxlbmd0aCA0OTI6ICh0b3MgMHgwLCB0dGwg NjQsIGlkIDEsIG9mZnNldA0KPiA+ID4gPiA+ID4gPiAxMDA4LCBmbGFncyBbbm9uZV0sIHByb3Rv IE9wdGlvbnMgKDApLCBsZW5ndGggNDc4KQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAg ICAgMTI3LjAuMC4xID4gMTI3LjAuMC4xOiBpcC1wcm90by0wDQo+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ICN0Y3BkdW1wIC1pIGVuczkg 4oCTdnZ2ZW4gIC8vLyBoZXJlIHdpbGwgYmUgcmVjZWl2ZWQgdGhlDQo+ID4gPiA+ID4gPiA+IGZv cndhcmRlZCBwYWNrZXRzIGZyb20NCj4gPiA+ID4gPiA+ID4gdGVzdHBtZDoNCj4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gMTU6NDU6MjkuMDgzOTk2IDI0OjhhOjA3Ojg4OjI2OjViID4gMjQ6 OGE6MDc6ODg6MjY6NmIsDQo+ID4gPiA+ID4gPiA+IGV0aGVydHlwZQ0KPiA+ID4gPiA+ID4gPiBJ UHY0ICgweDA4MDApLCBsZW5ndGggNTM4OiAodG9zIDB4MCwgdHRsIDY0LCBpZCAxLCBvZmZzZXQg MCwNCj4gPiA+ID4gPiA+ID4gZmxhZ3MgWytdLCBwcm90byBPcHRpb25zICgwKSwgbGVuZ3RoIDUy NCkNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gICAgIDEyNy4wLjAuMSA+IDEyNy4wLjAu MTogIGlwLXByb3RvLTAgNTA0DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IDE1OjQ1OjI5 LjExNTQyNSAyNDo4YTowNzo4ODoyNjo1YiA+IDI0OjhhOjA3Ojg4OjI2OjZiLA0KPiA+ID4gPiA+ ID4gPiBldGhlcnR5cGUNCj4gPiA+ID4gPiA+ID4gSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDUzODog KHRvcyAweDAsIHR0bCA2NCwgaWQgMSwgb2Zmc2V0DQo+ID4gPiA+ID4gPiA+IDUwNCwgZmxhZ3Mg WytdLCBwcm90byBPcHRpb25zICgwKSwgbGVuZ3RoIDUyNCkNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gICAgIDEyNy4wLjAuMSA+IDEyNy4wLjAuMTogaXAtcHJvdG8tMA0KPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiAxNTo0NToyOS4xNDc0OTIgMjQ6OGE6MDc6ODg6MjY6NWIgPiAy NDo4YTowNzo4ODoyNjo2YiwNCj4gPiA+ID4gPiA+ID4gZXRoZXJ0eXBlDQo+ID4gPiA+ID4gPiA+ IElQdjQgKDB4MDgwMCksIGxlbmd0aCA0OTI6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDEsIG9mZnNl dA0KPiA+ID4gPiA+ID4gPiAxMDA4LCBmbGFncyBbbm9uZV0sIHByb3RvIE9wdGlvbnMgKDApLCBs ZW5ndGggNDc4KQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAgICAgMTI3LjAuMC4xID4g MTI3LjAuMC4xOiBpcC1wcm90by0wDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEFt IEkgZG9pbmcgc29tZXRoaW5nIHdyb25nPyEgT3IgaXQgaXMgYSBidWcuDQo+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+IMOoIEFzIHlvdSBzZWUgdGhlIHRjcGR1bXAgc2hvd3MgdGhlIG9mZnNl dCBvZiBlYWNoIGZyYWdtZW50LA0KPiA+ID4gPiA+ID4gPiBhbmQgdGVzdHBtZCBwcmludHMgTDRf RlJBRywgc28gdGhlIGJvdGggYXJlIHJlY29nbml6aW5nIHRoYXQNCj4gPiA+ID4gPiA+ID4gdGhp cyBpcyBhDQo+ID4gPiA+ID4gPiBmcmFnbWVudGVkIHBhY2tldC4NCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiBHUk8gbGlicmFyeSBtZXJnZXMgVFNPZWQvR1NPZWQgcGFja2V0cywgd2hvc2UgSVAg SURzIGFuZCBUQ1ANCj4gPiA+ID4gPiBzZXF1ZW5jZXMNCj4gPiA+ID4gPiA+IGFyZSBib3RoIGNv bnNlY3V0aXZlLiBJZiBpbnB1dCBwYWNrZXRzIGhhdmUgc2FtZSBJUCBJRHMsIG5vDQo+ID4gPiA+ ID4gPiBwYWNrZXRzIHdpbGwgYmUgbWVyZ2VkLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEJU VywgeW91IGNhbiB1c2UgaXBlcmYgdG8gdGVzdCBHUk8gZmVhdHVyZS4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiBCZXN0IFJlZ2FyZHMsDQo+ID4gPiA+ID4gPiBKaWF5dQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gQmVzdCByZWdhcmRzLA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBXaXNhbSBKYWRk bw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0K