From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgsg1.qq.com (smtpbgsg1.qq.com [54.254.200.92]) by sourceware.org (Postfix) with ESMTPS id 4C883388459A for ; Tue, 23 May 2023 08:25:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4C883388459A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp90t1684830307tv7pryrq Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 23 May 2023 16:25:06 +0800 (CST) X-QQ-SSF: 01400000000000F0R000000A0000000 X-QQ-FEAT: JaSVRzI69SUWXKXwM7jiwKBiQS5HHG3RV7WzYZ2/t/3zkqwB1DnG4cLOybvNY zbWApin0zTGRWF5qofZvUm+5l9STExPA1awzGe9/cJNWZTbHjf9O0gsT9EPRnj3UbXDB7/H MBkAVjobP5dJgI89q+IxRehp24YeloViyRx8lekvaYOxeHC/VbWRRSWyJIKlR3jzvhbUm8E QNoQawOw9ShftaklRlZwpZlcZT0XSnRqJoGKxc4SvKMxtKcR2hWeXXdvWO/MOCDRgIoKwtP jknxvoQKRRN5EY2fUx4THhi21C8JiWK3loqyKauubYNrD1MuXCsA3G8u0iyMm2YwxRvWV9v VqjjrkZv46YyqXY5zFHIfV/wuZ97iz+ZVPYW9nO0NPii/N8fguuPCI1LXL7fgRFX97dmqZp 1SlHjlUauiPCo6ih1g/opA== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 17865778374257050353 Date: Tue, 23 May 2023 16:25:06 +0800 From: "juzhe.zhong@rivai.ai" To: "Robin Dapp" , gcc-patches Cc: "Robin Dapp" , kito.cheng , Kito.cheng , palmer , palmer , jeffreyalaw Subject: Re: Re: [PATCH] RISC-V: Refactor the framework of RVV auto-vectorization References: <20230523060804.61556-1-juzhe.zhong@rivai.ai>, <3cf370ef-adab-2f36-4361-5474de68386f@gmail.com> X-Priority: 3 X-GUID: 3DF73BDE-A623-4A40-8FC5-8CCBBE11C40F X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart552854156666_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_WEB,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart552854156666_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 DQpIaSwgUm9iaW4uDQoNCj4+IFdoeSBkb2VzIGEgc3RvcmUgbm90IGhhdmUg YSBkZXN0aW5hdGlvbiAoYXMgY29tbWVudGVkIGJlbG93KT8NCk9LLCBWMiBw YXRjaCB3aWxsIGhhdmUgbW9yZSBjb21tZW50cy4NCg0KPj4gbV9hbGxfdW5t YXNrZWRfcCBvciBtX2Z1bGx5X3VubWFza2VkX3A/DQpPSy4NCg0KPj4gQXBh cnQgZnJvbSB0aGUgaW5zbi1jZW50cmljIG5hbWUsIGNvdWxkbid0IHdlIGFs c28gZGVjaWRlIHRoaXMNCj4+IGJhc2VkIG9uIHRoZSBjb250ZXh0IGxhdGVy PyAgSW4gdGhlIHZlY3Rvci1idWlsdGlucy5jYyB3ZSBoYXZlDQo+PiB1c2Vf cmVhbF9tYXNrX3AgYW5kIHVzZV9yZWFsX21lcmdlX3AgdGhhdCBkbyB0aGlz Lg0KT2suIFYyIHdpbGwgZm9sbG93IGJ1aWx0aW4gZnJhbWV3b3JrDQoNCj4+ IFRoaXMgbWVhbnMgImhhcyBhdmwgb3BlcmFuZCIgSSBzdXBwb3NlPyAgRnJv bSB0aGUgY2FsbGVyJ3MgcG9pbnQNCj4+IG9mIHZpZXcgKGFuZCBhbHNvIHRo ZSB2c2V0dmwgcGFzcykgc29tZXRoaW5nIGxpa2UgIm5lZWRzIGF2bCIgb3Ig c28NCj4+IHdvdWxkIGJlIG1vcmUgZGVzY3JpcHRpdmUgYnV0IHVuZGVjaWRl ZCBoZXJlLg0KT2suDQoNCj4+IERvIHdlIG5lZWQgdG8gZXhwb3NlIHRoZXNl IGluIHRoZSBjb25zdHJ1Y3Rvcj8gIEFzIGZhciBhcyBJIGNhbg0KPj4gdGVs bCB3ZSBjYW4gZGVjaWRlIGxhdGVyIHdoZXRoZXIgdGhlIGluc3RydWN0aW9u IGhhcyBhIHBvbGljeQ0KPj4gb3Igbm90IChhcyBJIGRpZCBpbiBteSBwYXRj aCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYWxsIGlucHV0cw0KPj4gYXJlIG1h c2tzIG9yIHNvKS4NCg0KTWF5YmUsIHdlIGNhbiBhZGQgaGVscGVycyB0byBz ZXQgcG9saWNpZXMuIEkgd2lsbCBzZW5kIFYyIGxldCB5b3Ugc2VlLg0KDQo+ PiBIYXZpbmcgdGhlIG1hc2sgbW9kZSBiZSBhdXRvbWF0aWNhbGx5IGRlZHVj ZWQgZnJvbSB0aGUgZGVzdGluYXRpb24NCj4+aXMgZ29vZCwgaXQgd2FzIGp1 c3Qgb2Jub3hpb3VzIGJlZm9yZSB0byBwYXNzIDxWTT4uLi4NCk9rDQoNCj4+ IEkgZG9uJ3QgcGFydGljdWxhcmx5IGxpa2UgdGhlIG5hbWVzIDspIEdvaW5n IGJhY2sgdG8gdmxtYXggYW5kDQo+PiBub252bG1heCBJIGRvbid0IG1pbmQg YnV0IGRvIHdlIHJlYWxseSBuZWVkIHRvIGhhdmUgdGhlIHBvbGljaWVzDQo+ PiBlbmNvZGVkIGluIHRoZSBuYW1lIG5vdz8gIEVzcGVjaWFsbHkgc2luY2Ug Im1hbnkiIGlzIGEgd29yZCBhbmQNCj4+IHRoZSBkZWZhdWx0IGlzIEFOWSBh bnl3YXkuICBXaHkgbm90IGVtaXRfdmxtYXhfaW5zbi9lbWl0X3ZsbWF4X29w DQo+PiBmb3Igbm93IGFuZCBhZGQgdGhlIHR1L211IGxhdGVyPw0KDQpPaw0K DQo+PiBZb3UgY2FuIGp1c3QgZHJvcCB0aGUgIlRoZSBudW1iZXIgPSAxMSBp cyBiZWNhdXNlIiBhbmQgc2F5DQo+PiAiV2UgaGF2ZSBhIG1heGltdW0gb2Yg MTEgb3BlcmFuZHMgZm9yLi4uIi4NCj4+IFRoZSBlbGV2ZW4gYXJndW1lbnRz IHNlZW0gYSBiaXQgY2x1bmt5IGhlcmUgOykgIEkgd291bGQgc3VnZ2VzdA0K Pj4gY2hhbmdpbmcgdGhpcyBhZ2FpbiBpbiB0aGUgZnV0dXJlIGJ1ciBmb3Ig bm93IGxldCdzIGp1c3QgZ28gYWhlYWQNCj4+IHdpdGggaXQgaW4gb3JkZXIg dG8gbWFrZSBwcm9ncmVzcy4NCk9rDQoNCj4+IFRoZSBydHggb3BlcmFuZHNb XSBhcnJheSBJIGxpa2UgbGVhc3Qgb2YgdGhlIGNoYW5nZXMgaW4gdGhpcyBw YXRjaC4NCj4+IEl0J3MgZXNzZW50aWFsbHkgYW4gdW50eXBlZCBhcnJheSB3 aG9zZSBtZWFuaW5nIGlzIGRlcGVuZGVudCBvbiBjb250ZXh0DQo+PiBjb250 YWluaW5nIHNvdXJjZSBvcGVyYW5kcyBhbmQgdGhlIGxlbmd0aCB0aGF0IGlz IHNvbWV0aW1lcyBlbXB0eSBhbmQNCj4+IHNvbWV0aW1lcyBub3QuICBJIGNh bid0IHRoaW5rIG9mIHNvbWV0aGluZyB0aGF0IHdvdWxkbid0IGNvbXBsaWNh dGUgdGhpbmdzDQo+PiB0aG91Z2ggYnV0IGJlZm9yZSB3ZSBhdCBsZWFzdCBo YWQgZnVuY3Rpb25zIGNhbGxlZCBfbGVuIHRoYXQgd291bGQgdGFrZQ0KPj4g YSBsZW5ndGggKE5VTEwgb3Igbm90KSBhbmQgX3ZsbWF4IHRoYXQgd291bGRu J3QuICBJdCdzIHByZXR0eSBlYXN5IHRvIG1lc3MNCj4+IHVwIGhlcmUgb24g dGhlIGNhbGxlcidzIHNpZGUuDQoNCkFSTSB1c2VzIHJ0eCBvcGVyYW5kc1td IGluIG1hbnkgcGxhY2VzIGFuZCBJIHBlcnNvbmFsbHkgcHJlZmVyIHRoaXMg d2F5IHNpbmNlDQppdCB3aWxsIG1ha2UgY29kZXMgbXVjaCBjbGVhbmVyLiAN CkkgZGlzbGlrZSB0aGUgd2F5IG1ha2luZyB0aGUgZnVuY3Rpb24gYXJndW1l bnQgd2l0aCBtdWx0aXBsZSBvcGVyYW5kICxsaWtlIHRoaXM6DQp2b2lkIGZ1 bmMocnR4IGRlc3QsIHJ0eCBzcmMxLCBydHggc3JjMiwgLi4uLikNCklmIHdl IGFyZSBkb2luZyB0aGlzLCB3ZSB3aWxsIG5lZWQgdG8gYWRkIGhlbHBlcnMg Zm9yZXZlci4uLg0KDQpTZW5kaW5nIFYyIHBhdGNoIHNvb24uDQoNClRoYW5r cy4NCg0KDQpqdXpoZS56aG9uZ0ByaXZhaS5haQ0KIA0KRnJvbTogUm9iaW4g RGFwcA0KRGF0ZTogMjAyMy0wNS0yMyAxNjowNg0KVG86IGp1emhlLnpob25n OyBnY2MtcGF0Y2hlcw0KQ0M6IHJkYXBwLmdjYzsga2l0by5jaGVuZzsga2l0 by5jaGVuZzsgcGFsbWVyOyBwYWxtZXI7IGplZmZyZXlhbGF3DQpTdWJqZWN0 OiBSZTogW1BBVENIXSBSSVNDLVY6IFJlZmFjdG9yIHRoZSBmcmFtZXdvcmsg b2YgUlZWIGF1dG8tdmVjdG9yaXphdGlvbg0KSGkgSnV6aGUsDQogDQppbiBn ZW5lcmFsIEkgZmluZCB0aGUgcmV2aXNlZCBzdHJ1Y3R1cmUgcXVpdGUgbG9n aWNhbCBhbmQgaXQgaXMgZGVmaW5pdGVseQ0KYW4gaW1wcm92ZW1lbnQuICBT b21lIGFic3RyYWN0aW9uIGFyZSBzdGlsbCBhIGJpdCBsZWFreSBidXQgd2Ug Y2FuIGFsd2F5cw0KcmVmYWN0b3IgIm9uIHRoZSBmbHkiLiAgU29tZSBjb21t ZW50cyBvbiB0aGUgZ2VuZXJhbCBwYXJ0cywgc2tpcHBpbmcNCm92ZXIgdGhl IGxhdGVyIGRldGFpbHMuDQogDQo+ICAgYm9vbCBtX2hhc19kZXN0X3A7DQog DQpXaHkgZG9lcyBhIHN0b3JlIG5vdCBoYXZlIGEgZGVzdGluYXRpb24gKGFz IGNvbW1lbnRlZCBiZWxvdyk/DQogDQo+ICAgLyogSXQndCB0cnVlIGlmIHRo ZSBwYXR0ZXJuIHVzZXMgYWxsIHRydWVzIG1hc2sgb3BlcmFuZC4gICovDQo+ ICAgYm9vbCBtX3VzZV9hbGxfdHJ1ZXNfbWFza19wOw0KIA0KbV9hbGxfdW5t YXNrZWRfcCBvciBtX2Z1bGx5X3VubWFza2VkX3A/DQogDQo+ICAgLyogSXQn cyB0cnVlIGlmIHRoZSBwYXR0ZXJuIHVzZXMgdW5kZWZpbmVkIG1lcmdlIG9w ZXJhbmQuICAqLw0KPiAgIGJvb2wgbV91c2VfdW5kZWZfbWVyZ2VfcDsNCiAN CkFwYXJ0IGZyb20gdGhlIGluc24tY2VudHJpYyBuYW1lLCBjb3VsZG4ndCB3 ZSBhbHNvIGRlY2lkZSB0aGlzDQpiYXNlZCBvbiB0aGUgY29udGV4dCBsYXRl cj8gIEluIHRoZSB2ZWN0b3ItYnVpbHRpbnMuY2Mgd2UgaGF2ZQ0KdXNlX3Jl YWxfbWFza19wIGFuZCB1c2VfcmVhbF9tZXJnZV9wIHRoYXQgZG8gdGhpcy4N CiANCj4gICBib29sIG1faGFzX2F2bF9wOw0KIA0KVGhpcyBtZWFucyAiaGFz IGF2bCBvcGVyYW5kIiBJIHN1cHBvc2U/ICBGcm9tIHRoZSBjYWxsZXIncyBw b2ludA0Kb2YgdmlldyAoYW5kIGFsc28gdGhlIHZzZXR2bCBwYXNzKSBzb21l dGhpbmcgbGlrZSAibmVlZHMgYXZsIiBvciBzbw0Kd291bGQgYmUgbW9yZSBk ZXNjcmlwdGl2ZSBidXQgdW5kZWNpZGVkIGhlcmUuDQogDQo+ICAgYm9vbCBt X3ZsbWF4X3A7DQo+ICAgYm9vbCBtX2hhc190YWlsX3BvbGljeV9wOw0KPiAg IGJvb2wgbV9oYXNfbWFza19wb2xpY3lfcDsNCiANCkRvIHdlIG5lZWQgdG8g ZXhwb3NlIHRoZXNlIGluIHRoZSBjb25zdHJ1Y3Rvcj8gIEFzIGZhciBhcyBJ IGNhbg0KdGVsbCB3ZSBjYW4gZGVjaWRlIGxhdGVyIHdoZXRoZXIgdGhlIGlu c3RydWN0aW9uIGhhcyBhIHBvbGljeQ0Kb3Igbm90IChhcyBJIGRpZCBpbiBt eSBwYXRjaCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYWxsIGlucHV0cw0KYXJl IG1hc2tzIG9yIHNvKS4NCiANCj4gICBlbnVtIHRhaWxfcG9saWN5IG1fdGFp bF9wb2xpY3k7DQo+ICAgZW51bSBtYXNrX3BvbGljeSBtX21hc2tfcG9saWN5 Ow0KIA0KPiAgIG1hY2hpbmVfbW9kZSBtX2Rlc3RfbW9kZTsNCj4gICBtYWNo aW5lX21vZGUgbV9tYXNrX21vZGU7DQogDQpIYXZpbmcgdGhlIG1hc2sgbW9k ZSBiZSBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgZnJvbSB0aGUgZGVzdGluYXRp b24NCmlzIGdvb2QsIGl0IHdhcyBqdXN0IG9ibm94aW91cyBiZWZvcmUgdG8g cGFzcyA8Vk0+Li4uDQogDQo+IEN1cnJlbnRseSwgd2UgaGF2ZSAiZW1pdF92 bG1heF90YW55X21hbnkiIGFuZCAiZW1pdF9ub252bG1heF90YW55X21hbnki Lg0KIA0KSSBkb24ndCBwYXJ0aWN1bGFybHkgbGlrZSB0aGUgbmFtZXMgOykg R29pbmcgYmFjayB0byB2bG1heCBhbmQNCm5vbnZsbWF4IEkgZG9uJ3QgbWlu ZCBidXQgZG8gd2UgcmVhbGx5IG5lZWQgdG8gaGF2ZSB0aGUgcG9saWNpZXMN CmVuY29kZWQgaW4gdGhlIG5hbWUgbm93PyAgRXNwZWNpYWxseSBzaW5jZSAi bWFueSIgaXMgYSB3b3JkIGFuZA0KdGhlIGRlZmF1bHQgaXMgQU5ZIGFueXdh eS4gIFdoeSBub3QgZW1pdF92bG1heF9pbnNuL2VtaXRfdmxtYXhfb3ANCmZv ciBub3cgYW5kIGFkZCB0aGUgdHUvbXUgbGF0ZXI/DQo+ICNkZWZpbmUgUlZW X0JJTk9QX05VTSAzIChudW1iZXIgaW5jbHVkaW5nIHRoZSBvdXRwdXQpDQog DQpDb3VsZCBtYWtlIHRoaXMgaW50byBhbiAiaW5zdHJ1Y3Rpb24gdHlwZSIg cmF0aGVyIHRoYW4ganVzdCBhDQpudW1iZXIgIChpLmUuIFJWVl9CSU5PUCkg YW5kIHRoZW4gc2V0IHRoZSBudW1iZXIgb2Ygb3BlcmFuZHMNCmludGVybmFs bHkgYWNjb3JkaW5nIHRvIHRoZSB0eXBlLiAgVGhpcyB3b3VsZCBhbHNvIG1h a2UgaXQgY2xlYXJlcg0KaW4gY2FzZSB3ZSBsYXRlciB3YW50IHRvIHNldCBv dGhlciBvcHRpb25zIGRlcGVuZGluZyBvbiB0aGUgdHlwZS4NCj4gVGhlbiBq dXN0IHVzZSBlbWl0X3ZsbWF4X3RhbnlfbWFueSAoLi4uUlZWX0JJTk9QX05V TS4uLikNCj4gDQo+IFNvLCBpZiB3ZSBzdXBwb3J0IHRlcm5hcnkgb3BlcmF0 aW9uIGluIHRoZSBmdXR1cmUuIEl0J3MgcXVpdGUgc2ltcGxlOg0KPiAjZGVm aW5lIFJWVl9URVJOT1BfTlVNIDQgKG51bWJlciBpbmNsdWRpbmcgdGhlIG91 dHB1dCkNCj4gZW1pdF92bG1heF90YW55X21hbnkgKC4uLlJWVl9CSU5PUF9O VU0uLi4pDQo+IA0KPiAiKl90YW55X21hbnkiIG1lYW5zIHdlIGFyZSB1c2lu ZyB0YWlsIGFueSBhbmQgbWFzayBhbnkuDQo+IA0KPiBXZSB3aWxsIGRlZmlu aXRlbHkgbmVlZCB0YWlsIHVuZGlzdHVyYmVkIG9yIG1hc2sgdW5kaXN0dXJi ZWQgd2hlbiB3ZSBzdXBwb3J0IHRoZXNlIHBhdHRlcm5zDQo+IGluIG1pZGRs ZS1lbmQuIEl0J3MgdmVyeSBzaW1wbGUgdG8gZXh0ZW5kIHN1Y2ggaGVscGVy IGJhc2Ugb24gY3VycmVudCBmcmFtZXdvcms6DQo+IA0KPiB3ZSBjYW4gZG8g dGhhdCBpbiB0aGUgZnV0dXJlIGxpa2UgdGhpczoNCj4gDQo+IHZvaWQNCj4g ZW1pdF9ub252bG1heF90dV9tdSAodW5zaWduZWQgaWNvZGUsIGludCBvcF9u dW0sIHJ0eCAqb3BzKQ0KPiB7DQo+ICAgbWFjaGluZV9tb2RlIGRhdGFfbW9k ZSA9IEdFVF9NT0RFIChvcHNbMF0pOw0KPiAgIG1hY2hpbmVfbW9kZSBtYXNr X21vZGUgPSBnZXRfbWFza19tb2RlIChkYXRhX21vZGUpLnJlcXVpcmUgKCk7 DQo+ICAgLyogVGhlIG51bWJlciA9IDExIGlzIGJlY2F1c2Ugd2UgaGF2ZSBt YXhpbXVtIDExIG9wZXJhbmRzIGZvcg0KPiAgICAgIFJWViBpbnN0cnVjdGlv biBwYXR0ZXJucyBhY2NvcmRpbmcgdG8gdmVjdG9yLm1kLiAgKi8NCiANCllv dSBjYW4ganVzdCBkcm9wIHRoZSAiVGhlIG51bWJlciA9IDExIGlzIGJlY2F1 c2UiIGFuZCBzYXkNCiJXZSBoYXZlIGEgbWF4aW11bSBvZiAxMSBvcGVyYW5k cyBmb3IuLi4iLg0KIA0KPiAgIGluc25fZXhwYW5kZXI8MTE+IGUgKC8qT1Bf TlVNKi8gb3BfbnVtLCAvKkhBU19ERVNUX1AqLyB0cnVlLA0KPiAgICAgICAg LypVU0VfQUxMX1RSVUVTX01BU0tfUCovIHRydWUsDQo+ICAgICAgICAvKlVT RV9VTkRFRl9NRVJHRV9QKi8gdHJ1ZSwgLypIQVNfQVZMX1AqLyB0cnVlLA0K PiAgICAgICAgLypWTE1BWF9QKi8gZmFsc2UsDQo+ICAgICAgICAvKkhBU19U QUlMX1BPTElDWV9QKi8gdHJ1ZSwgLypIQVNfTUFTS19QT0xJQ1lfUCovIHRy dWUsDQo+ICAgICAgICAvKlRBSUxfUE9MSUNZKi8gVEFJTF9VTkRJU1RVUkJF RCwgLypNQVNLX1BPTElDWSovIE1BU0tfVU5ESVNUVVJCRUQsDQo+ICAgICAg ICAvKkRFU1RfTU9ERSovIGRhdGFfbW9kZSwgLypNQVNLX01PREUqLyBtYXNr X21vZGUpOw0KPiAgIGUuZW1pdF9pbnNuICgoZW51bSBpbnNuX2NvZGUpIGlj b2RlLCBvcHMpOw0KPiB9DQogDQpUaGUgZWxldmVuIGFyZ3VtZW50cyBzZWVt IGEgYml0IGNsdW5reSBoZXJlIDspICBJIHdvdWxkIHN1Z2dlc3QNCmNoYW5n aW5nIHRoaXMgYWdhaW4gaW4gdGhlIGZ1dHVyZSBidXIgZm9yIG5vdyBsZXQn cyBqdXN0IGdvIGFoZWFkDQp3aXRoIGl0IGluIG9yZGVyIHRvIG1ha2UgcHJv Z3Jlc3MuDQogDQo+IC0gIHJpc2N2X3ZlY3Rvcjo6ZW1pdF9sZW5fb3AgKGNv ZGVfZm9yX3ByZWRfbW92ICg8TU9ERT5tb2RlKSwgb3BlcmFuZHNbMF0sDQo+ IC0gICAgICBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sIDxWTT5tb2RlKTsN Cj4gKyAgcmlzY3ZfdmVjdG9yOjplbWl0X25vbnZsbWF4X3RhbnlfbWFueSAo Y29kZV9mb3JfcHJlZF9tb3YgKDxNT0RFPm1vZGUpLA0KPiArICBSVlZfVU5P UF9OVU0sIG9wZXJhbmRzKTsNCj4gICAgRE9ORTsNCj4gIH0pDQogDQpUaGUg cnR4IG9wZXJhbmRzW10gYXJyYXkgSSBsaWtlIGxlYXN0IG9mIHRoZSBjaGFu Z2VzIGluIHRoaXMgcGF0Y2guDQpJdCdzIGVzc2VudGlhbGx5IGFuIHVudHlw ZWQgYXJyYXkgd2hvc2UgbWVhbmluZyBpcyBkZXBlbmRlbnQgb24gY29udGV4 dA0KY29udGFpbmluZyBzb3VyY2Ugb3BlcmFuZHMgYW5kIHRoZSBsZW5ndGgg dGhhdCBpcyBzb21ldGltZXMgZW1wdHkgYW5kDQpzb21ldGltZXMgbm90LiAg SSBjYW4ndCB0aGluayBvZiBzb21ldGhpbmcgdGhhdCB3b3VsZG4ndCBjb21w bGljYXRlIHRoaW5ncw0KdGhvdWdoIGJ1dCBiZWZvcmUgd2UgYXQgbGVhc3Qg aGFkIGZ1bmN0aW9ucyBjYWxsZWQgX2xlbiB0aGF0IHdvdWxkIHRha2UNCmEg bGVuZ3RoIChOVUxMIG9yIG5vdCkgYW5kIF92bG1heCB0aGF0IHdvdWxkbid0 LiAgSXQncyBwcmV0dHkgZWFzeSB0byBtZXNzDQp1cCBoZXJlIG9uIHRoZSBj YWxsZXIncyBzaWRlLg0KIA0KVGhhdCBzYWlkLCBhZ2Fpbiwgd2UgY2FuIGFs d2F5cyByZWZhY3RvciBhZ2FpbiBhbmQgbGV0J3Mgbm90IGxldCBwZXJmZWN0 DQpiZSB0aGUgZW5lbXkgb2YgZ29vZCBoZXJlLiAgQWxsIGluIGFsbCBpdCBp cyBub3QgbW9yZSBjb21wbGljYXRlZCBub3cgdGhhbg0KaXQgd2FzIGJlZm9y ZSBzbyB3ZSBzaG91bGQgZ28gYWhlYWQgSU1ITy4NCiANClJlZ2FyZHMNClJv YmluDQogDQo= ------=_001_NextPart552854156666_=------