From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ex1.cas-well.com (unknown [122.147.166.54]) by dpdk.org (Postfix) with ESMTP id 8A8DD1FE for ; Sat, 12 Jul 2014 19:53:00 +0200 (CEST) Received: from EX1.cas-well.com ([fe80::f0f5:be15:e925:96c8]) by ex1.cas-well.com ([fe80::f0f5:be15:e925:96c8%18]) with mapi id 14.03.0123.003; Sun, 13 Jul 2014 01:55:07 +0800 From: To: Thread-Topic: [dpdk-dev] DPDK Performance issue with l2fwd Thread-Index: AQHPnBX/3Xv611f1rEG8RLZlxA7HMJuYdt6AgAANK4CAAGvggIABQTaAgAA5PwCAAcuzAA== Date: Sat, 12 Jul 2014 17:55:06 +0000 Message-ID: <53C17614.8070709@cas-well.com> References: <53BE495E.2000900@cas-well.com> <53BE5C7D.4090707@cas-well.com> <59AF69C657FD0841A61C55336867B5B0343AC6CB@IRSMSX103.ger.corp.intel.com> <53BFC46F.8080307@cas-well.com> <59AF69C657FD0841A61C55336867B5B0343ACD1E@IRSMSX103.ger.corp.intel.com> In-Reply-To: <59AF69C657FD0841A61C55336867B5B0343ACD1E@IRSMSX103.ger.corp.intel.com> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [203.73.222.22] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: Alan.Yu@cas-well.com Subject: Re: [dpdk-dev] DPDK Performance issue with l2fwd X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Jul 2014 17:53:02 -0000 SGkgQnJ1Y2U6DQoNClRoYW5rcyBmb3IgeW91ciByZXBseSBzbyBtdWNoLg0KDQpBbGwgbXkgdGVz dCBhcmUgdXNpbmcgMTUxOCBieXRlIHBhY2tldHMgYW5kIGtlZXAgdGhlIGNyaXRlcmlhIHdoaWNo IEkNCnRvbGQgYmVmb3JlIGR1ZSB0byBJIG5lZWQgdG8ga25vdyBob3cgbWFueSBHYiBjYW4gYmUg aGFuZGxlIGluIG91ciBwbGF0Zm9ybS4NCk9yaWdpbmFsbHksIEkgdGhpbmsgaXQgc2hvdWxkIG5v IGFueSBsaW1pdGF0aW9ucyBpbiBEUERLLiBCdXQsIGl0IHNlZW1zDQphIGxpdHRsZSBzdXJwcmlz ZWQgZm9yIG1lIHdoZW4gSSBnZXQgMTYwR2IgYnkgSVJRIGJhbGFuY2UgbWV0aG9kIGJ1dA0KRFBE SyBjYW4ndC4NCkFmdGVyIHRlc3RwbWQgYXBwLiBleHBlcmltZW50LCBJIGZvdW5kIGl0IGNhbiBh Y2hpZXZlIH4xNjBHYiwgYWx0aG91Z2gNCnNvbWUgcG9ydHMgY2FuIG5vdCBnZXQgZnVsbCBzcGVl ZC4NCkF0IGxlYXN0LCBpdCBwcm92ZXMgb25lIG9mIG15IGFzcGVjdCB0aGF0IGl0IHNob3VsZCBu byBhbnkgbGltaXRhdGlvbnMNCmluIERQREsuDQpUaGVyZWZvcmUsIGl0IG1lYW5zIHRoZXJlIHNo b3VsZCBoYXZlIHNvbWUgdGhpbmcgd3JvbmcgaW4gbDJmd2QuDQoNCkJUVywgY291bGQgeW91IGdp dmUgbWUgc29tZSBkaXJlY3Rpb24gZm9yIHdoZXJlIHRoZSByb290IGNhdXNlIG1heQ0KbG9jYXRl IGluLg0KTWF5YmUgSSBjYW4gdHJ5IHRvIHRyYWNlIHRoZSBjb2RlIHRvIGNoZWNrIHdoZXJlIGlz IHRoZSBwcm9ibGVtcy4NCg0KQW55d2F5LCB0aGFuayBmb3IgeW91ciBncmVhdCBoZWxwDQoNCg0K DQpPbiAwNy8xMS8yMDE0IDEwOjI4IFBNLCBSaWNoYXJkc29uLCBCcnVjZSB3cm90ZToNCj4NCj4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiBGcm9tOiBaYWNoYXJ5LkplbkBjYXMtd2Vs bC5jb20gW21haWx0bzpaYWNoYXJ5LkplbkBjYXMtd2VsbC5jb21dDQo+PiBTZW50OiBGcmlkYXks IEp1bHkgMTEsIDIwMTQgNDowNSBBTQ0KPj4gVG86IGRldkBkcGRrLm9yZw0KPj4gQ2M6IFJpY2hh cmRzb24sIEJydWNlOyBBbGFuLll1QGNhcy13ZWxsLmNvbQ0KPj4gU3ViamVjdDogUmU6IFtkcGRr LWRldl0gRFBESyBQZXJmb3JtYW5jZSBpc3N1ZSB3aXRoIGwyZndkDQo+Pg0KPj4gSGkgQnJ1Y2U6 DQo+Pg0KPj4gVGhhbmtzIGZvciB5b3VyIHN1Z2dlc3Rpb24uDQo+PiBJIGhhdmUgdHJpZWQgdG8g dXNlIHRlc3RwbWQgdG8gdGVzdCAxNiBwb3J0cyB0b2RheS4NCj4+IFRoZSByZXN1bHQgaXMgc28g SW50ZXJlc3RlZC4gSXQgY2FuIHdvcmssIGFsdGhvdWdoIHNvbWUgcG9ydHMgZ2V0IGxvdw0KPj4g cGVyZm9ybWFuY2UgKG9ubHkgZ2V0IDgwJSkuDQo+IEZvciBzbWFsbCBwYWNrZXRzLCBQQ0kgYmFu ZHdpZHRoIGNhbiBiZSBhbiBpc3N1ZS4gRG8geW91IGdldCA4MCUgb2YgbGluZSByYXRlIHdpdGgg NjQtYnl0ZSBwYWNrZXRzIG9yIHdpdGggbGFyZ2VyIHBhY2tldCBzaXplcz8gSG93IG1hbnkgdGVz dHBtZCBjb3JlcyB3ZXJlIHlvdSB1c2luZywgYW5kIHdoYXQgcGFyYW1ldGVycyB3ZXJlIHlvdSBz ZXR0aW5nIGluIHRlc3RwbWQ/DQo+DQo+PiBCZXNpZGVzLCBJIGFsc28gZG8gYW5vdGhlciB0ZXN0 IGluIGwyZndkLg0KPj4gSSB0cmllZCB0byB1c2UgODI1ODAgKiAxNiBwb3J0cyBpbiB0aGUgc2Ft ZSBwbGF0Zm9ybSB3aXRoIGwyZndkIHRlc3QuDQo+PiBUaGUgc2FtZSBzaXR1YXRpb24gaGFwcGVu ZWQgYWdhaW4uDQo+PiBTbywgaXQgc2VlbXMgYSBiaWcgYnVnIGhpZGRlbiBpbiB0aGUgbDJmd2Qu DQo+ICBGcm9tIHdoYXQgeW91IHJlcG9ydCwgdGhhdCBkb2VzIGluZGVlZCBzZWVtIHRvIGJlIHRo ZSBjYXNlLiBXZSdsbCBoYXZlIHRvIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIHRvIHNl ZSBpZiB0aGVyZSBpcyBhbiBpc3N1ZSB0aGVyZS4NCj4NCj4gL0JydWNlDQo+DQo+PiBIYXZlIHNv bWVvbmUgZ2V0IHRoZSBzaW1pbGFyIGNhc2U/DQo+Pg0KPj4gQlRXLCBtYXkgdGhpcyBpc3N1ZSBy ZWxhdGUgd2l0aCBEUERLIHZlcnNpb24/DQo+Pg0KPj4NCj4+IE9uIDA3LzEwLzIwMTQgMTE6NTMg UE0sIFJpY2hhcmRzb24sIEJydWNlIHdyb3RlOg0KPj4+IEhpLA0KPj4+DQo+Pj4gSGF2ZSB5b3Ug dHJpZWQgcnVubmluZyBhIHRlc3Qgd2l0aCAxNiBwb3J0cyB1c2luZyBhbnkgb3RoZXIgYXBwbGlj YXRpb25zLCBmb3INCj4+IGV4YW1wbGUgdGVzdHBtZD8NCj4+PiBSZWdhcmRzLA0KPj4+IC9CcnVj ZQ0KPj4+DQo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+Pj4+IEZyb206IGRldiBb bWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgWmFjaGFyeS5KZW5AY2Fz LQ0KPj4+PiB3ZWxsLmNvbQ0KPj4+PiBTZW50OiBUaHVyc2RheSwgSnVseSAxMCwgMjAxNCAyOjI5 IEFNDQo+Pj4+IFRvOiBkZXZAZHBkay5vcmcNCj4+Pj4gQ2M6IEFsYW4uWXVAY2FzLXdlbGwuY29t DQo+Pj4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIERQREsgUGVyZm9ybWFuY2UgaXNzdWUgd2l0 aCBsMmZ3ZA0KPj4+Pg0KPj4+PiBIaSBBbGV4Og0KPj4+Pg0KPj4+PiBUaGFua3MgZm9yIHlvdXIg aGVscC4NCj4+Pj4NCj4+Pj4gSSBmb3JnZXQgdG8gZGVzY3JpYmUgc29tZSBjcml0ZXJpYSBpbiBt eSBvcmlnaW5hbCBwb3N0Lg0KPj4+Pg0KPj4+PiBBdCBmaXJzdCwgSSBoYXMgY29uZmlybWVkIG15 IDgyNTk5IGhhcyBjb25uZWN0ZWQgYnkgUENJZSBHZW4zIChHZW4zIHg4KQ0KPj4gc3BlZWQuDQo+ Pj4+IFRoZSB0aGVvcmV0aWNhbCBiYW5kd2lkdGggY2FuIHN1cHBvcnQgb3ZlciAxNjBHIGluIHRv dGFsLg0KPj4+PiBIZW5jZSwgSXQgc2hvdWxkIGdldCBmdWxsIHNwZWVkIGluIG15IHRlc3QuDQo+ Pj4+DQo+Pj4+IFNlY29uZCwgSSBoYXZlIGV2ZXIgY2hlY2sgdGhlIHBlcmZvcm1hbmNlIHcvbyBE UERLIGluIHBhY2tldCBzaXplIDE1MTggaW4NCj4+IHRoZQ0KPj4+PiBzYW1lIGVudmlyb25tZW50 LCBhbmQgaW5kZWVkIGl0IGNhbiBnZXQgMTYwRyB0b3RhbGx5IChieSBJUlEgYmFsYW5jZQ0KPj4g bWV0aG9kKS4NCj4+Pj4gU28sIEkgd2FzIHNvIHN1cnByaXNlZCB0byBnZXQgdGhpcyBraW5kcyBv ZiByZXN1bHQgaW4gRFBESyAoSSBhbHNvIHVzZSBzaXplIDE1MTgNCj4+IHRvDQo+Pj4+IHRlc3Qg RFBESykuDQo+Pj4+DQo+Pj4+IEJUVywgSSBjYW4gZ2V0IDEyMEcgdGhyb3VnaHB1dCBpbiAxMiBw b3J0cyBhbHJlYWR5LiBCdXQgd2hlbiBJIGFkZCBtb3JlDQo+PiB0aGFuDQo+Pj4+IDEyIHBvcnRz LCBJIG9ubHkgY2FuIGdldCAxMDBHLg0KPj4+PiBXaHkgdGhlIHBlcmZvcm1hbmNlIGdldHMgbGVz cyB0aGFuIDEyMEc/IFdoeSBvbmx5IDEwIHBvcnRzIHdvcmtzIGZpbmUgYW5kDQo+PiBOTw0KPj4+ PiBUeCBhbmQgUnggaW4gdGhlIG90aGVycz8NCj4+Pj4gSXMgaXQgYnVncyBvciBsaW1pdGF0aW9u cyBpbiBEUERLPw0KPj4+Pg0KPj4+PiBIYXMgYW55b25lIGV2ZXJ5IGRvIHRoZSBzaW1pbGFyIG9y IHRoZSBzYW1lIHRlc3Q/DQo+Pj4+DQo+Pj4+DQo+Pj4+IE9uIDA3LzEwLzIwMTQgMDQ6NDAgUE0s IEFsZXggTWFya3V6ZSB3cm90ZToNCj4+Pj4gSGkgWmFjaGFyeSwNCj4+Pj4gWW91ciBpc3N1ZSBt YXkgYmUgd2l0aCB0aGUgUENJLWUgMywgd2l0aCAxNiBsYW5lcyBFYWNoIHNsb3QgaXMgbGltaXRl ZCB0bw0KPj4+PiAxMjhHYi9zWzNdLg0KPj4+PiBOb3csIEFGQUlLWzFdIHRoZSBDUFUgaXMgY29u bmVjdGVkIHRvIHRoZSAgSS9PIHdpdGggYSBzaW5nbGUgUENJLUUgc2xvdC4NCj4+Pj4NCj4+Pj4g U2V2ZXJhbCB0aG91Z2h0cyB0aGF0IG1heSBoZWxwIHlvdToNCj4+Pj4NCj4+Pj4gMS4gWW91IGNh biBmaWd1cmUgb3V0IHRoZSBtYXggYi93IGJ5IHJ1bm5pbmcgbmV0c3VyZiBvdmVyIHRoZSBrZXJu ZWwNCj4+IGludGVyZmFjZXMNCj4+Pj4gKHcvbyBEUERLKS4gRWFjaCBDUFUgY2FuIGhhbmRsZSB0 aGUgTmV0cGVyZiBhbmQgdGhlIENvbXBsZXRpb24gaW50ZXJydXB0cw0KPj4+PiB3aXRoIGdyYWNl IChwYWNrZXRzIG9mIDY0SyBhbmQgYWxsIG9mZmxvYWRzIG9uKSBmb3IgMTBHYiBuaWNzLg0KPj4+ PiBXaXRoIG1vcmUgdGhlbiAxMCBOaWNzIEkgd291bGQgZGlzYWJsZSB0aGUgSVJRIGJhbGFuY2Vy IGFuZCBtYWtlIHN1cmUNCj4+Pj4gaW50ZXJydXB0cyBhcmUgc3ByZWFkIGV2ZW5seSBieSBzZXR0 aW5nIHRoZSAgSVJRIGFmZmluaXR5IG1hbnVhbGx5IFsyXS4NCj4+Pj4gQXMgbG9uZyBhcyB5b3Ug aGF2ZSBhIHBoeXNpY2FsIGNvcmUoTk8gaHlwZXJ0aHJlYWRpbmcpIHBlciBOSUMgcG9ydCB5b3Ug Y2FuDQo+Pj4+IGZpZ3VyZSBvdXQgdGhlIE1BWCBCL1cgeW91IGNhbiBnZXQgd2l0aCBhbGwgdGhl IG5pY3MuDQo+Pj4+DQo+Pj4+IDIuIFlvdSBjYW4gdHJ5IHVzaW5nIChJZiBhdmFpbGFibGUgdG8g eW91ICwgb2J2aW91c2x5KSA0MEdiIGFuZCA1NkdiIE5pY3MNCj4+Pj4gKE1lbGxhbm94KSwgSW4g dGhpcyBjYXNlIGZvciBlYWNoIE5ldHBlcmYgZmxvdyB5b3Ugd2lsbCBuZWVkIHRvIHNlcGFyYXRl IGVhY2gNCj4+Pj4gTmV0cGVyZiBTdHJlYW0gYW5kIHRoZSBpbnRlcnJ1cHRzIHRvIGRpZmZlcmVu dCBDb3JlcyB0byBSZWFjaCB3aXJlIHNwZWVkIGFzDQo+Pj4+IGxvbmcgYXMgYm90aCBjb3JlcyBh cmUgb24gdGhlIHNhbWUgTlVNQSBub2RlKGxzY3B1KS4NCj4+Pj4NCj4+Pj4gSG9wZSB0aGlzIGhl bHBzLg0KPj4+Pg0KPj4+Pg0KPj4gWzFdaHR0cDovL2tvbXBvc3Rlci5jb20udWEvZG9jdW1lbnRz L1BDSV9FeHByZXNzX0Jhc2VfU3BlY2lmaWNhdGlvbl9SZXZpcw0KPj4+PiBpb25fMy4wLnBkZg0K Pj4+Pg0KPj4gWzJdaHR0cDovL2g1MDE0Ni53d3c1LmhwLmNvbS9wcm9kdWN0cy9zb2Z0d2FyZS9v ZS9saW51eC9tYWluc3RyZWFtL3N1cHANCj4+Pj4gb3J0L3doaXRlcGFwZXIvcGRmcy80QUE0LTky OTRFTlcucGRmDQo+Pj4+IFszXWh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUENJX0V4cHJl c3MjUENJX0V4cHJlc3NfMy54DQo+Pj4+DQo+Pj4+DQo+Pj4+IE9uIFRodSwgSnVsIDEwLCAyMDE0 IGF0IDExOjA3IEFNLCA8WmFjaGFyeS5KZW5AY2FzLQ0KPj4+PiB3ZWxsLmNvbTxtYWlsdG86WmFj aGFyeS5KZW5AY2FzLXdlbGwuY29tPj4gd3JvdGU6DQo+Pj4+IEhleSBHdXlzLA0KPj4+Pg0KPj4+ PiBSZWNlbnRseSwgSSBoYXZlIHVzZWQgbDJmd2QgdG8gdGVzdCAxNjBHICg4MjU5OSAxMEcgKiAx NiBwb3J0cyksIGJ1dCBJDQo+Pj4+IGdvdCBhIHN0cmFuZ2UgcGhlcm9tb25lIGluIG15IHRlc3Qu DQo+Pj4+DQo+Pj4+IFdoZW4gSSB1c2VkIDEyIHBvcnRzIHRvIHRlc3QgdGhlIHBlcmZvcm1hbmNl IG9mIGwyZndkLCBpdCBjYW4gd29yayBmaW5lDQo+Pj4+IGFuZCBhY2hpZXZlIDEyMEcuDQo+Pj4+ IEJ1dCBpdCBnb3QgYWJub3JtYWwgd2hlbiBJIHVzaW5nIG92ZXIgdGhhbiAxMiBwb3J0LiBQYXJ0 IG9mIHBvcnRzIHNlZW1zDQo+Pj4+IHNvbWV0aGluZyB3cm9uZyBhbmQgbm8gYW55IFR4L1J4Lg0K Pj4+PiBIYXMgYW55b25lIGtub3cgYWJvdXQgdGhpcz8NCj4+Pj4NCj4+Pj4gTXkgdGVzdGluZyBF bnZpcm9ubWVudC4NCj4+Pj4gMS4gRTUtMjY1OCB2MiAoMTAgY29yZXMpICogMg0KPj4+PiBodHRw Oi8vYXJrLmludGVsLmNvbS96aC10dy9wcm9kdWN0cy83NjE2MC9JbnRlbC1YZW9uLVByb2Nlc3Nv ci1FNS0yNjU4LQ0KPj4gdjItDQo+Pj4+IDI1TS1DYWNoZS0yXzQwLUdIeg0KPj4+PiAyLiBvbmUg Y29yZSBoYW5kbGUgb25lIHBvcnQuIChJbiBvcmRlciB0byBnZXQgYmVzdCBwZXJmb3JtYW5jZS4p DQo+Pj4+IDMuIE5vIGFueSBRUEkgY3Jvc3NpbmcgIGlzc3VlLg0KPj4+PiA0LiBsMmZ3ZCBwYXJh bWV0ZXJzDQo+Pj4+ICAgICAgICA0LjEgLWMgMHhGMEZGIC0tIC1QIDB4RjAwRkYgID0+IDEyMEcg Z2V0IQ0KPj4+PiAgICAgICAgNC4yIC1jIDB4RkYwRkYgLS0gLVAgMHhGRjBGRiA9PiBGYWlsZWQh IE9ubHkgZmlyc3QgMTAgcG9ydHMgY2FuDQo+Pj4+IHdvcmsgd2VsbC4NCj4+Pj4gICAgICAgIDQu MyAtYyAweDNGM0ZGIC0tIC1QIDB4M0YzRkYgPT4gRmFpbGVkISBPbmx5IGZpcnN0IDEwIHBvcnRz IGNhbg0KPj4+PiB3b3JrIHdlbGwuDQo+Pj4+DQo+Pj4+IEJUVywgSSBoYXZlIHRyaWVkIGxvdHMg b2YgcGFyYW1ldGVyIHNldHMgYW5kIGlmIEkgc2V0IHRoZSBwb3J0cyBudW1iZXINCj4+Pj4gb3Zl ciB0aGFuIDEyIHBvcnRzLCBpdCBvbmx5IGZpcnN0IDEwIHBvcnRzIGdvdCB3b3JrLg0KPj4+PiBF bHNlLCBldmVyeXRoaW5nIGdvdCB3ZWxsLg0KPj4+Pg0KPj4+PiBDYW4gYW55b25lIGhlbHAgbWUg dG8gc29sdmUgdGhlIGlzc3VlPyBPciBEUERLIG9ubHkgY2FuIHNldCBsZXNzIGVxdWFsDQo+Pj4+ IHRoYW4gMTIgcG9ydHM/DQo+Pj4+IE9yIERQREsgbWF4IHRocm91Z2hwdXQgaXMgMTIwRz8NCj4+ Pj4NCj4+Pj4g5pys5L+h5Lu25Y+v6IO95YyF5ZCr55Ge56W66Zu76YCa5qmf5a+G6LOH6KiK77yM 6Z2e5oyH5a6a5LmL5pS25Lu26ICF77yM6KuL5Yu/5L2/55So5oiW5o+t6ZyyDQo+PiDmnKwNCj4+ Pj4g5L+h5Lu25YWn5a6577yM5Lim6KuL6Yq35q+A5q2k5L+h5Lu244CCIFRoaXMgZW1haWwgbWF5 IGNvbnRhaW4gY29uZmlkZW50aWFsDQo+Pj4+IGluZm9ybWF0aW9uLiBQbGVhc2UgZG8gbm90IHVz ZSBvciBkaXNjbG9zZSBpdCBpbiBhbnkgd2F5IGFuZCBkZWxldGUgaXQgaWYgeW91DQo+PiBhcmUN Cj4+Pj4gbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQuDQo+Pj4+DQo+Pj4+DQo+Pj4+DQo+Pj4+ IC0tDQo+Pj4+IEJlc3QgUmVnYXJkcywNCj4+Pj4gWmFjaGFyeSBKZW4NCj4+Pj4NCj4+Pj4gU29m dHdhcmUgUkQNCj4+Pj4gQ0FTLVdFTEwgSW5jLg0KPj4+PiA4dGggRmxvb3IsIE5vLiAyNDIsIEJv LUFpIFN0LiwgU2h1LUxpbiBDaXR5LCBUYWlwZWkgQ291bnR5IDIzOCwgVGFpd2FuDQo+Pj4+IFRl bDogKzg4Ni0yLTc3MDUtODg4OCM2MzA1DQo+Pj4+IEZheDogKzg4Ni0yLTc3MzEtOTk4OA0KPj4+ Pg0KPj4+PiDmnKzkv6Hku7blj6/og73ljIXlkKvnkZ7npbrpm7vpgJrmqZ/lr4bos4foqIrvvIzp nZ7mjIflrprkuYvmlLbku7bogIXvvIzoq4vli7/kvb/nlKjmiJbmj63pnLINCj4+IOacrA0KPj4+ PiDkv6Hku7blhaflrrnvvIzkuKboq4vpirfmr4DmraTkv6Hku7bjgIIgVGhpcyBlbWFpbCBtYXkg Y29udGFpbiBjb25maWRlbnRpYWwNCj4+Pj4gaW5mb3JtYXRpb24uIFBsZWFzZSBkbyBub3QgdXNl IG9yIGRpc2Nsb3NlIGl0IGluIGFueSB3YXkgYW5kIGRlbGV0ZSBpdCBpZiB5b3UNCj4+IGFyZQ0K Pj4+PiBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudC4NCj4+IC0tDQo+PiBCZXN0IFJlZ2FyZHMs DQo+PiBaYWNoYXJ5IEplbg0KPj4NCj4+IFNvZnR3YXJlIFJEDQo+PiBDQVMtV0VMTCBJbmMuDQo+ PiA4dGggRmxvb3IsIE5vLiAyNDIsIEJvLUFpIFN0LiwgU2h1LUxpbiBDaXR5LCBUYWlwZWkgQ291 bnR5IDIzOCwgVGFpd2FuDQo+PiBUZWw6ICs4ODYtMi03NzA1LTg4ODgjNjMwNQ0KPj4gRmF4OiAr ODg2LTItNzczMS05OTg4DQo+PiDmnKzkv6Hku7blj6/og73ljIXlkKvnkZ7npbrpm7vpgJrmqZ/l r4bos4foqIrvvIzpnZ7mjIflrprkuYvmlLbku7bogIXvvIzoq4vli7/kvb/nlKjmiJbmj63pnLLm nKwNCj4+IOS/oeS7tuWFp+Wuue+8jOS4puiri+mKt+avgOatpOS/oeS7tuOAgiBUaGlzIGVtYWls IG1heSBjb250YWluIGNvbmZpZGVudGlhbA0KPj4gaW5mb3JtYXRpb24uIFBsZWFzZSBkbyBub3Qg dXNlIG9yIGRpc2Nsb3NlIGl0IGluIGFueSB3YXkgYW5kIGRlbGV0ZSBpdCBpZiB5b3UgYXJlDQo+ PiBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudC4NCg0KLS0NCkJlc3QgUmVnYXJkcywNClphY2hh cnkgSmVuDQoNClNvZnR3YXJlIFJEDQpDQVMtV0VMTCBJbmMuDQo4dGggRmxvb3IsIE5vLiAyNDIs IEJvLUFpIFN0LiwgU2h1LUxpbiBDaXR5LCBUYWlwZWkgQ291bnR5IDIzOCwgVGFpd2FuDQpUZWw6 ICs4ODYtMi03NzA1LTg4ODgjNjMwNQ0KRmF4OiArODg2LTItNzczMS05OTg4DQrmnKzkv6Hku7bl j6/og73ljIXlkKvnkZ7npbrpm7vpgJrmqZ/lr4bos4foqIrvvIzpnZ7mjIflrprkuYvmlLbku7bo gIXvvIzoq4vli7/kvb/nlKjmiJbmj63pnLLmnKzkv6Hku7blhaflrrnvvIzkuKboq4vpirfmr4Dm raTkv6Hku7bjgIIgVGhpcyBlbWFpbCBtYXkgY29udGFpbiBjb25maWRlbnRpYWwgaW5mb3JtYXRp b24uIFBsZWFzZSBkbyBub3QgdXNlIG9yIGRpc2Nsb3NlIGl0IGluIGFueSB3YXkgYW5kIGRlbGV0 ZSBpdCBpZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50Lg0K