From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by sourceware.org (Postfix) with ESMTPS id EFDFA3858D20; Fri, 11 Aug 2023 11:25:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EFDFA3858D20 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: bizesmtp70t1691753098ta2cb5dx Received: from LAPTOP-EPITNQBU ( [113.104.212.2]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 11 Aug 2023 19:24:57 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: vrqOr+ppv0sto1obsDIBkBLdcfl5/dIkegOD7nhTxRljru+5qCRftmD4SI5zL Ir8HPEfGyFjyiFHs/kItDOhEvbQI/ulLWkedjbVEYqKj3+n6f1AXY07hQvnqcN5pew965Wn O/pYysPg9L4xXkskCrBSv0Ca96coUdcNc2LHtwGrzBHfyjWMBKF5wmgwaQgiUC6gDgtXqI1 snw2P1lWJUt3zPfbZrrDa1FN+Iol0ZSJMKRthLOQ3PRPGLRiI2TTEcuvL3uf+nuhgDL6UHx Fpfmz2lnST4S6EvkahCsjBrEDS9EW27ouNJ2k4V2NVqk2yv9qSASXB2CQEWAWoNd4jDCKC9 givWzJkV4P6oz6mRdfwqzz+LPiy12Ayt+JoadWVlOgRKDUxgIerODPDl5o1LeB8pNYnWYfO gWxSTi0EbCaiIpDUkNqViKYARW9goXxQ X-QQ-GoodBg: 2 X-BIZMAIL-ID: 10226031140551391513 Date: Fri, 11 Aug 2023 19:24:57 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: gcc-patches , richard.sandiford , linkw , krebbel Subject: Re: Re: [PATCH V3] VECT: Support loop len control on EXTRACT_LAST vectorization References: <20230811063817.491547-1-juzhe.zhong@rivai.ai>, , <0CF24057688529E6+2023081115284214396319@rivai.ai>, , , X-Priority: 3 X-GUID: 9888FE32-081D-427B-838F-32ECBBCF30B2 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart453610537081_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID autolearn=ham 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_NextPart453610537081_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 SGksIFJpY2hpLg0KDQo+PiBjaGVjayBoZXJlIHRoZSB0YXJnZXQgc3VwcG9y dHMgVkVDX0VYVFJBQ1QNCj4+IGVsc2Ugc2V0IExPT1BfVklORk9fQ0FOX1VT RV9QQVJUSUFMX1ZFQ1RPUlNfUCB0byBmYWxzZSB3aXRoIGENCj4+IGRpYWdu b3N0aWMuDQoNCkkgYW0gd29uZGVyaW5nIHRhcmdldCBoYXMgVkVDX0VYVFJB Q1QgYnV0IG5vIEVYVFJBQ1RfTEFTVCwgYW5kIHN1Y2ggdGFyZ2V0IGlzIHVz aW5nIE1BU0sgYXMgdGhlIGxvb3AgY29udHJvbC4NCkl0IHNlZW1zIHRoYXQg aXQgd2lsbCBjYXVzZSBJQ0UgZm9yIHN1Y2ggdGFyZ2V0ID8gKE5vdCBzdXJl IHdoZXRoZXIgd2UgY3VycmVudGx5IGhhdmUgc3VjaCB0YXJnZXQgc28gZmFy KS4NCg0KVGhhbmtzLg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpG cm9tOiBSaWNoYXJkIEJpZW5lcg0KRGF0ZTogMjAyMy0wOC0xMSAxOToxMA0K VG86IGp1emhlLnpob25nQHJpdmFpLmFpDQpDQzogZ2NjLXBhdGNoZXM7IHJp Y2hhcmQuc2FuZGlmb3JkOyBsaW5rdzsga3JlYmJlbA0KU3ViamVjdDogUmU6 IFJlOiBbUEFUQ0ggVjNdIFZFQ1Q6IFN1cHBvcnQgbG9vcCBsZW4gY29udHJv bCBvbiBFWFRSQUNUX0xBU1QgdmVjdG9yaXphdGlvbg0KT24gRnJpLCAxMSBB dWcgMjAyMywganV6aGUuemhvbmdAcml2YWkuYWkgd3JvdGU6DQogDQo+IEhp LCBSaWNoaS4NCj4gDQo+ID4gMS4gVGFyZ2V0IGlzIHVzaW5nIGxvb3AgTUFT SyBhcyB0aGUgcGFydGlhbCB2ZWN0b3IgbG9vcCBjb250cm9sLg0KPiA+PiBJ IGRvbid0IHRoaW5rIGl0IGNoZWNrcyBmb3IgdGhpcz8NCj4gDQo+IEkgYW0g bm90IHN1cmUgd2hldGhlciBJIHVuZGVyc3RhbmQgRVhUUkFDVF9MQVNUIGNv cnJlY3RseS4NCj4gQnV0IGlmIHRhcmdldCBkb2Vzbid0IHVzZSBsb29wIE1B U0sgZm9yIHBhcnRpYWwgdmVjdG9yIGxvb3AgY29udHJvbCwgaG93IGRvZXMg dGFyZ2V0IHVzZSBFWFRSQUNUX0xBU1Q/DQo+IFNpbmNlIEVYVFJBQ1RfTEFT VCBpcyBhbHdheXMgZXh0cmFjdGluZyB0aGUgbGFzdCBlbGVtZW50IG9mIHRo ZSB2ZWN0b3IgYWNjb3JkaW5nIHRvIE1BU0sgb3BlcmFuZC4NCj4gDQo+ID4g QnV0IHdlIGRvbid0IHJlYWxseSBrbm93IHRoaXMgYXQgdGhpcyBwb2ludD8g IFRoZSBvbmx5IHRoaW5nIHdlIGtub3cNCj4gPiBpcyB0aGF0IG5vdGhpbmcg c2V0IExPT1BfVklORk9fQ0FOX1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUCB0byBm YWxzZS4NCj4gDQo+IFllcy4gU28gSSBhbSB0cnkgdG8gdXNlICdnZXRfbGVu X2xvYWRfc3RvcmUnIHRvIGNoZWNrIHdoZXRoZXIgdGFyZ2V0IHN1cHBvcnQg TEVOIGxvb3AgY29udHJvbC4NCj4gDQo+IFdlbGwsIEkgYWRtaXQgaXQncyBu b3QgYSBnb29kIGlkZWEuDQo+IA0KPiANCj4gPiBJIHRoaW5rIGl0IHNob3Vs ZCB3b3JrIHRvIGNoYW5nZSB0aGUgZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBv cnRlZF9wDQo+ID4gY2hlY2sgZm9yIElGTl9FWFRSQUNUX0xBU1QgdG8gYSAi cG9pdGl2ZSIgb25lIGd1YXJkaW5nDQo+IA0KPiA+ICAgICAgICAgICAgICAg Z2NjX2Fzc2VydCAobmNvcGllcyA9PSAxICYmICFzbHBfbm9kZSk7DQo+ID4g ICAgICAgICAgICAgICB2ZWN0X3JlY29yZF9sb29wX21hc2sgKGxvb3Bfdmlu Zm8sDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZMT09QX1ZJTkZPX01BU0tTIChsb29wX3ZpbmZvKSwNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgdmVjdHlwZSwgTlVM TCk7DQo+IA0KPiA+IGFuZCBpbiB0aGUgZWxzZSBicmFuY2ggY2hlY2sgZm9y IFZFQ19FWFRSQUNUIHN1cHBvcnQgYW5kIGlmIHByZXNlbnQNCj4gPiByZWNv cmQgYSBsb29wIGxlbi4gIEp1c3QgaW4gdGhpcyBjYXNlIHRoaXMgcGFydGlj dWxhciBvcmRlciB3b3VsZA0KPiA+IGJlIGltcG9ydGFudC4NCj4gDQo+IERv IHlvdSBtZWFuIGNoYW5nZSB0aGUgY29kZXMgYXMgZm9sbG93cyA6Pw0KPiAN Cj4gLSAgICAgICAgIGlmICghZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRl ZF9wIChJRk5fRVhUUkFDVF9MQVNULCB2ZWN0eXBlLA0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QVElNSVpF X0ZPUl9TUEVFRCkpDQo+IC0gICAgICAgICAgIHsNCj4gLSAgICAgICAgICAg ICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+IC0gICAgICAgICAgICAgICBk dW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BUSU1JWkFUSU9OLCB2ZWN0 X2xvY2F0aW9uLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiY2FuJ3Qgb3BlcmF0ZSBvbiBwYXJ0aWFsIHZlY3RvcnMgIg0KPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVjYXVzZSB0aGUgdGFy Z2V0IGRvZXNuJ3Qgc3VwcG9ydCBleHRyYWN0ICINCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImxhc3QgcmVkdWN0aW9uLlxuIik7DQo+ IC0gICAgICAgICAgICAgTE9PUF9WSU5GT19DQU5fVVNFX1BBUlRJQUxfVkVD VE9SU19QIChsb29wX3ZpbmZvKSA9IGZhbHNlOw0KPiAtICAgICAgICAgICB9 DQo+IC0gICAgICAgICBlbHNlIGlmIChzbHBfbm9kZSkNCj4gICAgICAgICAg IGlmIChzbHBfbm9kZSkNCj4gICAgICAgICAgICAgew0KPiAgICAgICAgICAg ICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gICAgICAgICAgICAgICAg IGR1bXBfcHJpbnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIHZl Y3RfbG9jYXRpb24sDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjYW4ndCBvcGVyYXRlIG9uIHBhcnRpYWwgdmVjdG9ycyAiDQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWNhdXNlIGFuIFNM UCBzdGF0ZW1lbnQgaXMgbGl2ZSBhZnRlciAiDQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJ0aGUgbG9vcC5cbiIpOw0KPiAgICAgICAg ICAgICAgIExPT1BfVklORk9fQ0FOX1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUCAo bG9vcF92aW5mbykgPSBmYWxzZTsNCj4gICAgICAgICAgICAgfQ0KPiAgICAg ICAgICAgZWxzZSBpZiAobmNvcGllcyA+IDEpDQo+ICAgICAgICAgICAgIHsN Cj4gICAgICAgICAgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ICAg ICAgICAgICAgICAgICBkdW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BU SU1JWkFUSU9OLCB2ZWN0X2xvY2F0aW9uLA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiY2FuJ3Qgb3BlcmF0ZSBvbiBwYXJ0aWFsIHZl Y3RvcnMgIg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi YmVjYXVzZSBuY29waWVzIGlzIGdyZWF0ZXIgdGhhbiAxLlxuIik7DQo+ICAg ICAgICAgICAgICAgTE9PUF9WSU5GT19DQU5fVVNFX1BBUlRJQUxfVkVDVE9S U19QIChsb29wX3ZpbmZvKSA9IGZhbHNlOw0KPiAgICAgICAgICAgICB9DQo+ ICAgICAgICAgICBlbHNlDQo+ICAgICAgICAgICAgIHsNCj4gICAgICAgICAg ICAgICBnY2NfYXNzZXJ0IChuY29waWVzID09IDEgJiYgIXNscF9ub2RlKTsN Cj4gICAgICAgICAgICAgICBpZiAoZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBv cnRlZF9wIChJRk5fRVhUUkFDVF9MQVNULCB2ZWN0eXBlLA0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9Q VElNSVpFX0ZPUl9TUEVFRCkpDQo+ICAgICAgICAgICAgICAgICB2ZWN0X3Jl Y29yZF9sb29wX21hc2sgKGxvb3BfdmluZm8sDQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZMT09QX1ZJTkZPX01BU0tTIChs b29wX3ZpbmZvKSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMSwgdmVjdHlwZSwgTlVMTCk7DQo+ICAgICAgICAgICAgICAg ZWxzZQ0KIA0KY2hlY2sgaGVyZSB0aGUgdGFyZ2V0IHN1cHBvcnRzIFZFQ19F WFRSQUNUDQogDQo+ICAgICAgICAgICAgICAgICB2ZWN0X3JlY29yZF9sb29w X2xlbiAobG9vcF92aW5mbywNCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmTE9PUF9WSU5GT19MRU5TIChsb29wX3ZpbmZvKSwN Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCB2 ZWN0eXBlLCAxKTsNCiANCmVsc2Ugc2V0IExPT1BfVklORk9fQ0FOX1VTRV9Q QVJUSUFMX1ZFQ1RPUlNfUCB0byBmYWxzZSB3aXRoIGENCmRpYWdub3N0aWMu DQogDQo+ICAgICAgICAgICAgIH0NCj4gDQo+IA0KPiBUaGFua3MuDQo+IA0K PiANCj4ganV6aGUuemhvbmdAcml2YWkuYWkNCj4gIA0KPiBGcm9tOiBSaWNo YXJkIEJpZW5lcg0KPiBEYXRlOiAyMDIzLTA4LTExIDE4OjIxDQo+IFRvOiBq dXpoZS56aG9uZ0ByaXZhaS5haQ0KPiBDQzogZ2NjLXBhdGNoZXM7IHJpY2hh cmQuc2FuZGlmb3JkOyBsaW5rdzsga3JlYmJlbA0KPiBTdWJqZWN0OiBSZTog UmU6IFtQQVRDSCBWM10gVkVDVDogU3VwcG9ydCBsb29wIGxlbiBjb250cm9s IG9uIEVYVFJBQ1RfTEFTVCB2ZWN0b3JpemF0aW9uDQo+IE9uIEZyaSwgMTEg QXVnIDIwMjMsIGp1emhlLnpob25nQHJpdmFpLmFpIHdyb3RlOg0KPiAgDQo+ ID4gSGksIFJpY2hpLg0KPiA+IA0KPiA+ID4+IFNvIGhvdyBjYW4gd2UgcmVz b2x2ZSB0aGUgaXNzdWUgd2hlbiBhIG5vbi1WTCBvcGVyYXRpb24gbGlrZQ0K PiA+ID4+IC5WRUNfRVhUUkFDVCBpcyB1c2VkIGZvciBfbGVuIHN1cHBvcnQ/ DQo+ID4gDQo+ID4gRG8geW91IG1lYW4gbm9uLVZMIGV4dHJhY3QgbGFzdCBv cGVyYXRpb24gKEkgYW0gc29ycnkgdGhhdCBub3Qgc3VyZSB3aGV0aGVyIEkg dW5kZXJzdGFuZCB5b3VyIHF1ZXN0aW9uIGNvcnJlY3RseSk/IA0KPiA+IElm IHllcywgdGhlIGFuc3dlciBpcyBmb3IgUlZWLCB3ZSBhcmUgcmV1c2luZyB0 aGUgc2FtZSBmbG93IGFzIEFSTSBTVkUgKEJJVF9GSUxFRF9SRUYgYXBwcm9h Y2gpLCBzZWUgdGhlIGV4YW1wbGUgYmVsb3c6DQo+ID4gDQo+ID4gaHR0cHM6 Ly9nb2Rib2x0Lm9yZy96L2NxcldyWThxNCANCj4gPiANCj4gPiAjZGVmaW5l IEVYVFJBQ1RfTEFTVChUWVBFKSAgICAgICAgICBcDQo+ID4gICBUWVBFIF9f YXR0cmlidXRlX18gKChub2lubGluZSwgbm9jbG9uZSkpICBcDQo+ID4gICB0 ZXN0XyMjVFlQRSAoVFlQRSAqeCwgaW50IG4sIFRZUEUgdmFsdWUpICBcDQo+ ID4gICB7ICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICAgICBUWVBFIGxh c3Q7ICAgICAgICAgICAgICAgICAgXA0KPiA+ICAgICBmb3IgKGludCBqID0g MDsgaiA8IDY0OyArK2opICAgICAgICAgICAgXA0KPiA+ICAgICAgIHsgICAg ICAgICAgICAgICAgICAgICBcDQo+ID4gICAgIGxhc3QgPSB4W2pdOyAgICAg ICAgICAgICAgICBcDQo+ID4gICAgIHhbal0gPSBsYXN0ICogdmFsdWU7ICAg ICAgICAgICAgXA0KPiA+ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICBc DQo+ID4gICAgIHJldHVybiBsYXN0OyAgICAgICAgICAgICAgICBcDQo+ID4g ICB9DQo+ID4gDQo+ID4gI2RlZmluZSBURVNUX0FMTChUKSAgICAgICAgICAg ICBcDQo+ID4gICBUICh1aW50OF90KSAgICAgICAgICAgICAgICAgICBcDQo+ ID4gDQo+ID4gVEVTVF9BTEwgKEVYVFJBQ1RfTEFTVCkNCj4gPiANCj4gPiAg IHZlY3RfY3N0X18yMiA9IHt2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZh bHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEy KEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2 YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8x MihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwg dmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVf MTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCks IHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVl XzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQp LCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1 ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihE KSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFs dWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIo RCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZh bHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEy KEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2 YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8x MihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwg dmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKX07DQo+ID4g ICB2ZWN0X2xhc3RfMTEuNl8zID0gTUVNIDx2ZWN0b3IoNjQpIHVuc2lnbmVk IGNoYXI+IFsodWludDhfdCAqKXhfMTAoRCldOw0KPiA+ICAgdmVjdF9fNC43 XzIzID0gdmVjdF9sYXN0XzExLjZfMyAqIHZlY3RfY3N0X18yMjsNCj4gPiAg IE1FTSA8dmVjdG9yKDY0KSB1bnNpZ25lZCBjaGFyPiBbKHVpbnQ4X3QgKil4 XzEwKEQpXSA9IHZlY3RfXzQuN18yMzsNCj4gPiAgIF8yMSA9IEJJVF9GSUVM RF9SRUYgPHZlY3RfbGFzdF8xMS42XzMsIDgsIDUwND47DQo+ID4gDQo+ID4g VGhpcyBhcHByb2FjaCB3b3JrcyBwZXJmZWN0bHkgZm9yIGJvdGggUlZWIGFu ZCBBUk0gU1ZFIGZvciBub24tVkwgYW5kIG5vbi1NQVNLIEVYVFJBQ1RfTEFT VCBvcGVyYXRpb24uDQo+ID4gDQo+ID4gPj4gU28sIHdoeSBkbyB3ZSB0ZXN0 IGZvciBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSBhbmQgbm90IGp1c3QgZm9y DQo+ID4gPj4gVkVDX0VYVFJBQ1Q/DQo+ID4gDQo+ID4gQmVmb3JlIGFuc3dl ciB0aGlzIHF1ZXN0aW9uLCBsZXQgbWUgZmlyc3QgZWxhYm9yYXRlIGhvdyBB Uk0gU1ZFIGlzIGRvaW5nIHdpdGggTUFTSyBFWFRSQUNUX0xBU1QuDQo+ID4g DQo+ID4gSGVyZSBpcyB0aGUgZXhhbXBsZToNCj4gPiBodHRwczovL2dvZGJv bHQub3JnL3ovOGNUdjFqcU1iIA0KPiA+IA0KPiA+IEFSTSBTVkUgSVI6DQo+ ID4gDQo+ID4gICA8YmIgND4gW2xvY2FsIGNvdW50OiA5NTU2MzAyMjRdOg0K PiA+ICAgIyBpdnRtcF8zMSA9IFBISSA8aXZ0bXBfMzIoNCksIDAoMyk+DQo+ ID4gDQo+ID4gICAjIGxvb3BfbWFza18yMiA9IFBISSA8bmV4dF9tYXNrXzM1 KDQpLCBtYXhfbWFza18zNCgzKT4gLS0tLS0+IEZvciBSVlYsIHdlIHdhbnQg dGhpcyB0byBiZSBsb29wX2xlbiA9IFNFTEVDVF9WTDsNCj4gPiANCj4gPiAg IF83ID0gJk1FTSA8dmVjdG9yKFsxNiwxNl0pIHVuc2lnbmVkIGNoYXI+IFso dWludDhfdCAqKXhfMTEoRCkgKyBpdnRtcF8zMSAqIDFdOw0KPiA+ICAgdmVj dF9sYXN0XzEyLjhfMjMgPSAuTUFTS19MT0FEIChfNywgOEIsIGxvb3BfbWFz a18yMik7DQo+ID4gICB2ZWN0X180LjlfMjcgPSB2ZWN0X2xhc3RfMTIuOF8y MyAqIHZlY3RfY3N0X18yNjsNCj4gPiAgIC5NQVNLX1NUT1JFIChfNywgOEIs IGxvb3BfbWFza18yMiwgdmVjdF9fNC45XzI3KTsNCj4gPiAgIGl2dG1wXzMy ID0gaXZ0bXBfMzEgKyBQT0xZX0lOVF9DU1QgWzE2LCAxNl07DQo+ID4gICBf MSA9ICh1bnNpZ25lZCBpbnQpIGl2dG1wXzMyOw0KPiA+IA0KPiA+ICAgbmV4 dF9tYXNrXzM1ID0gLldISUxFX1VMVCAoXzEsIGJuZC41XzYsIHsgMCwgLi4u IH0pOw0KPiA+IA0KPiA+ICAgaWYgKG5leHRfbWFza18zNSAhPSB7IDAsIC4u LiB9KQ0KPiA+ICAgICBnb3RvIDxiYiA0PjsgWzg5LjAwJV0NCj4gPiAgIGVs c2UNCj4gPiAgICAgZ290byA8YmIgNT47IFsxMS4wMCVdDQo+ID4gDQo+ID4g ICA8YmIgNT4gW2xvY2FsIGNvdW50OiAxMDUxMTkzMjRdOg0KPiA+IA0KPiA+ ICAgXzI1ID0gLkVYVFJBQ1RfTEFTVCAobG9vcF9tYXNrXzIyLCB2ZWN0X2xh c3RfMTIuOF8yMyk7IFt0YWlsIGNhbGxdIC0tLS0+IFVzZSB0aGUgbGFzdCBt YXNrIGdlbmVyYXRlZCBpbiBCQiA0LCBzbyBmb3IgUlZWLCB3ZSBhcmUgdXNp bmcgdGhlIGxvb3BfbGVuLg0KPiA+IA0KPiA+IFNvIHRoaXMgcGF0Y2ggaXMg dHJ5aW5nIHRvIG9wdGltaXplIHRoZSBjb2RlZ2VuIHdpdGggc2ltdWxhdGlu ZyBzYW1lIGZsb3cgYXMgQVJNIFNWRSBidXQgd2l0aCByZXBsYWNpbmcgJ2xv b3BfbWFza18yMicgKFRoaXMgaXMgZ2VuZXJhdGVkIGluIEJCNCkgaW50byAn bG9vcF9sZW4nLg0KPiA+IA0KPiA+IEZvciBBUk0gU1ZFLCB0aGV5IG9ubHkg Y2hlY2sgd2hldGhlciB0YXJnZXQgc3VwcG9ydCBFWFRSQUNUX0xBU1QgcGF0 dGVybiwgdGhpcyBwYXR0ZXJuIGlzIHN1cHBvcnRlZCBtZWFuczoNCj4gPiAN Cj4gPiAxLiBUYXJnZXQgaXMgdXNpbmcgbG9vcCBNQVNLIGFzIHRoZSBwYXJ0 aWFsIHZlY3RvciBsb29wIGNvbnRyb2wuDQo+ICANCj4gSSBkb24ndCB0aGlu ayBpdCBjaGVja3MgZm9yIHRoaXM/DQo+ICANCj4gPiAyLiBleHRyYWN0X2xh c3Qgb3B0YWIgaXMgZW5hYmxlZCBpbiB0aGUgYmFja2VuZC4NCj4gPiANCj4g PiBTbyBmb3IgUlZWLCB3ZSBhcmUgYWxzbyBjaGVja2luZyBzYW1lIGNvbmRp dGlvbnM6DQo+ID4gDQo+ID4gMS4gVGFyZ2V0IGlzIHVzaW5nIGxvb3AgTEVO IGFzIHRoZSBwYXJ0aWFsIHZlY3RvciBsb29wIGNvbnRyb2wgKEkgdXNlIGdl dF9sZW5fbG9hZF9zdG9yZV9tb2RlIHRvIGNoZWNrIHdoZXRoZXIgdGFyZ2V0 IGlzIHVzaW5nIGxvb3AgTEVOIGFzIHRoZSBwYXJ0aWFsIHZlY3RvciBsb29w IGNvbnRyb2wpLg0KPiAgDQo+IEJ1dCB3ZSBkb24ndCByZWFsbHkga25vdyB0 aGlzIGF0IHRoaXMgcG9pbnQ/ICBUaGUgb25seSB0aGluZyB3ZSBrbm93DQo+ IGlzIHRoYXQgbm90aGluZyBzZXQgTE9PUF9WSU5GT19DQU5fVVNFX1BBUlRJ QUxfVkVDVE9SU19QIHRvIGZhbHNlLg0KPiAgDQo+ID4gMi4gdmVjX2V4dHJh Y3Qgb3B0YWIgaXMgZW5hYmxlZCBpbiB0aGUgYmFja2VuZC4NCj4gPiANCj4g PiBBbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpcyB0aGF0IHdlIGNhbiBhZGRp bmcgRVhUUkFDVF9MQVNUX0xFTiBpbnRlcm5hbCBGTiwgdGhlbiB3ZSBjYW4g b25seSBjaGVjayB0aGlzIGxpa2UgQVJNIFNWRSBvbmx5IGNoZWNrIEVYVFJB Q1RfTEFTVC4NCj4gIA0KPiBJIHRoaW5rIGl0IHNob3VsZCB3b3JrIHRvIGNo YW5nZSB0aGUgZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wDQo+IGNo ZWNrIGZvciBJRk5fRVhUUkFDVF9MQVNUIHRvIGEgInBvaXRpdmUiIG9uZSBn dWFyZGluZw0KPiAgDQo+ICAgICAgICAgICAgICAgZ2NjX2Fzc2VydCAobmNv cGllcyA9PSAxICYmICFzbHBfbm9kZSk7DQo+ICAgICAgICAgICAgICAgdmVj dF9yZWNvcmRfbG9vcF9tYXNrIChsb29wX3ZpbmZvLA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxPT1BfVklORk9fTUFTS1Mg KGxvb3BfdmluZm8pLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMSwgdmVjdHlwZSwgTlVMTCk7DQo+ICANCj4gYW5kIGluIHRo ZSBlbHNlIGJyYW5jaCBjaGVjayBmb3IgVkVDX0VYVFJBQ1Qgc3VwcG9ydCBh bmQgaWYgcHJlc2VudA0KPiByZWNvcmQgYSBsb29wIGxlbi4gIEp1c3QgaW4g dGhpcyBjYXNlIHRoaXMgcGFydGljdWxhciBvcmRlciB3b3VsZA0KPiBiZSBp bXBvcnRhbnQuDQo+ICANCj4gPiA+PiBjYW4gd2UgZG91YmxlLWNoZWNrIHRo aXMgb24gcG93ZXJwYyBhbmQgczM5MD8NCj4gPiANCj4gPiBTdXJlLCBJIGhv cGUgaXQgY2FuIGJlIGJlbmVmaWNpYWwgdG8gcG93ZXJwYyBhbmQgczM5MC4N Cj4gPiBBbmQsIEkgdGhpbmsgUmljaGFyZCdzIGNvbW1lbnRzIGFyZSBhbHNv IHZlcnkgaW1wb3J0YW50IHNvIEkgYW0gZ29ubmEgd2FpdCBmb3IgaXQuDQo+ ICANCj4gWWVhaCwganVzdCB0byBkb3VibGUtY2hlY2sgdGhlIGJpYXMgc3R1 ZmYgd29ya3MgY29ycmVjdGx5Lg0KPiAgDQo+IFJpY2hhcmQuDQo+ICANCj4g PiBUaGFua3MuDQo+ID4gDQo+ID4gDQo+ID4ganV6aGUuemhvbmdAcml2YWku YWkNCj4gPiAgDQo+ID4gRnJvbTogUmljaGFyZCBCaWVuZXINCj4gPiBEYXRl OiAyMDIzLTA4LTExIDE1OjAxDQo+ID4gVG86IEp1LVpoZSBaaG9uZw0KPiA+ IENDOiBnY2MtcGF0Y2hlczsgcmljaGFyZC5zYW5kaWZvcmQ7IGxpbmt3OyBr cmViYmVsDQo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCBWM10gVkVDVDogU3Vw cG9ydCBsb29wIGxlbiBjb250cm9sIG9uIEVYVFJBQ1RfTEFTVCB2ZWN0b3Jp emF0aW9uDQo+ID4gT24gRnJpLCAxMSBBdWcgMjAyMywganV6aGUuemhvbmdA cml2YWkuYWkgd3JvdGU6DQo+ID4gIA0KPiA+ID4gRnJvbTogSnUtWmhlIFpo b25nIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4NCj4gPiA+IA0KPiA+ID4gSGks IFJpY2hhcmQgYW5kIFJpY2hpLg0KPiA+ID4gDQo+ID4gPiBUaGlzIHBhdGNo IGFkZCBzdXBwb3J0IGxpdmUgdmVjdG9yaXphdGlvbiBieSBWRUNfRVhUUkFD VCBmb3IgTEVOIGxvb3AgY29udHJvbC4NCj4gPiA+IA0KPiA+ID4gQ29uc2lk ZXIgdGhpcyBmb2xsb3dpbmcgY2FzZToNCj4gPiA+IA0KPiA+ID4gI2luY2x1 ZGUgPHN0ZGludC5oPg0KPiA+ID4gDQo+ID4gPiAjZGVmaW5lIEVYVFJBQ1Rf TEFTVChUWVBFKSBcDQo+ID4gPiAgIFRZUEUgX19hdHRyaWJ1dGVfXyAoKG5v aW5saW5lLCBub2Nsb25lKSkgXA0KPiA+ID4gICB0ZXN0XyMjVFlQRSAoVFlQ RSAqeCwgaW50IG4sIFRZUEUgdmFsdWUpIFwNCj4gPiA+ICAgeyBcDQo+ID4g PiAgICAgVFlQRSBsYXN0OyBcDQo+ID4gPiAgICAgZm9yIChpbnQgaiA9IDA7 IGogPCBuOyArK2opIFwNCj4gPiA+ICAgICAgIHsgXA0KPiA+ID4gbGFzdCA9 IHhbal07IFwNCj4gPiA+IHhbal0gPSBsYXN0ICogdmFsdWU7IFwNCj4gPiA+ ICAgICAgIH0gXA0KPiA+ID4gICAgIHJldHVybiBsYXN0OyBcDQo+ID4gPiAg IH0NCj4gPiA+IA0KPiA+ID4gI2RlZmluZSBURVNUX0FMTChUKSBcDQo+ID4g PiAgIFQgKHVpbnQ4X3QpIFwNCj4gPiA+IA0KPiA+ID4gVEVTVF9BTEwgKEVY VFJBQ1RfTEFTVCkNCj4gPiA+IA0KPiA+ID4gQVJNIFNWRSBJUjoNCj4gPiA+ IA0KPiA+ID4gUHJlaGVhZGVyOg0KPiA+ID4gICBtYXhfbWFza18zNCA9IC5X SElMRV9VTFQgKDAsIGJuZC41XzYsIHsgMCwgLi4uIH0pOw0KPiA+ID4gDQo+ ID4gPiBMb29wOg0KPiA+ID4gICAuLi4NCj4gPiA+ICAgIyBsb29wX21hc2tf MjIgPSBQSEkgPG5leHRfbWFza18zNSg0KSwgbWF4X21hc2tfMzQoMyk+DQo+ ID4gPiAgIC4uLg0KPiA+ID4gICB2ZWN0X2xhc3RfMTIuOF8yMyA9IC5NQVNL X0xPQUQgKF83LCA4QiwgbG9vcF9tYXNrXzIyKTsNCj4gPiA+ICAgdmVjdF9f NC45XzI3ID0gdmVjdF9sYXN0XzEyLjhfMjMgKiB2ZWN0X2NzdF9fMjY7DQo+ ID4gPiAgIC5NQVNLX1NUT1JFIChfNywgOEIsIGxvb3BfbWFza18yMiwgdmVj dF9fNC45XzI3KTsNCj4gPiA+ICAgLi4uDQo+ID4gPiAgIG5leHRfbWFza18z NSA9IC5XSElMRV9VTFQgKF8xLCBibmQuNV82LCB7IDAsIC4uLiB9KTsNCj4g PiA+ICAgLi4uDQo+ID4gPiANCj4gPiA+IEVwaWxvZ3VlOg0KPiA+ID4gICBf MjUgPSAuRVhUUkFDVF9MQVNUIChsb29wX21hc2tfMjIsIHZlY3RfbGFzdF8x Mi44XzIzKTsNCj4gPiA+IA0KPiA+ID4gRm9yIFJWViBzaW5jZSB3ZSBwcmVm ZXIgbGVuIGluIGxvb3AgY29udHJvbCwgYWZ0ZXIgdGhpcyBwYXRjaCBmb3Ig UlZWOg0KPiA+ID4gDQo+ID4gPiBMb29wOg0KPiA+ID4gICAuLi4NCj4gPiA+ ICAgbG9vcF9sZW5fMjIgPSBTRUxFQ1RfVkw7DQo+ID4gPiAgIHZlY3RfbGFz dF8xMi44XzIzID0gLk1BU0tfTE9BRCAoXzcsIDhCLCBsb29wX2xlbl8yMik7 DQo+ID4gPiAgIHZlY3RfXzQuOV8yNyA9IHZlY3RfbGFzdF8xMi44XzIzICog dmVjdF9jc3RfXzI2Ow0KPiA+ID4gICAuTUFTS19TVE9SRSAoXzcsIDhCLCBs b29wX2xlbl8yMiwgdmVjdF9fNC45XzI3KTsNCj4gPiA+ICAgLi4uDQo+ID4g PiANCj4gPiA+IEVwaWxvZ3VlOg0KPiA+ID4gICBfMjUgPSAuVkVDX0VYVFJB Q1QgKGxvb3BfbGVuXzIyICsgYmlhcyAtIDEsIHZlY3RfbGFzdF8xMi44XzIz KTsNCj4gPiA+IA0KPiA+ID4gRGV0YWlscyBvZiB0aGlzIGFwcHJvYWNoOg0K PiA+ID4gDQo+ID4gPiAxLiBTdGVwIDEgLSBBZGQgJ3ZlY3RfY2FuX3ZlY3Rv cml6ZV9leHRyYWN0X2xhc3Rfd2l0aF9sZW5fcCcgIHRvIGVuYWJsZSBsaXZl IHZlY3Rvcml6YXRpb24NCj4gPiA+ICAgICAgICAgICAgIGZvciBMRU4gbG9v cCBjb250cm9sLg0KPiA+ID4gICAgDQo+ID4gPiAgICBUaGlzIGZ1bmN0aW9u IHdlIGNoZWNrIHdoZXRoZXIgdGFyZ2V0IHN1cHBvcnQ6DQo+ID4gPiAgICAg LSBVc2UgTEVOIGFzIHRoZSBsb29wIGNvbnRyb2wuDQo+ID4gPiAgICAgLSBT dXBwb3J0IFZFQ19FWFRSQUNUIG9wdGFiLg0KPiA+ID4gDQo+ID4gPiAyLiBT dGVwIDIgLSBSZWNvcmQgTEVOIGZvciBsb29wIGNvbnRyb2wgaWYgJ3ZlY3Rf Y2FuX3ZlY3Rvcml6ZV9leHRyYWN0X2xhc3Rfd2l0aF9sZW5fcCcgaXMgdHJ1 ZS4NCj4gPiA+IA0KPiA+ID4gMy4gU3RlcCAzIC0gR2VyZW5hdGUgVkVDX0VY VFJBQ1QgKHYsIExFTiArIEJJQVMgLSAxKS4NCj4gPiA+IA0KPiA+ID4gVGhl IG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIG1hc2sgYW5kIGxlbiBpcyB0aGF0 IGxlbiBpcyB1c2luZyBsZW5ndGggZ2VuZXJhdGVkIGJ5IFNFTEVDVF9WTCBh bmQNCj4gPiA+IHVzZSBWRUNfRVhUUkFDVCBwYXR0ZXJuLiBUaGUgcmVzdCBv ZiB0aGUgbGl2ZSB2ZWN0b3JpemF0aW9uIGlzIHRvdGFsbHkgdGhlIHNhbWUg QVJNIFNWRS4NCj4gPiA+IA0KPiA+ID4gQm9vdHN0cmFwIGFuZCBSZWdyZXNz aW9uIG9uIFg4NiBwYXNzZWQuDQo+ID4gPiANCj4gPiA+IFRlc3RlZCBvbiBB Uk0gUUVNVS4NCj4gPiA+IA0KPiA+ID4gT2sgZm9yIHRydW5rPw0KPiA+ID4g DQo+ID4gPiBnY2MvQ2hhbmdlTG9nOg0KPiA+ID4gDQo+ID4gPiAqIHRyZWUt dmVjdC1sb29wLmNjICh2ZWN0X2Nhbl92ZWN0b3JpemVfZXh0cmFjdF9sYXN0 X3dpdGhfbGVuX3ApOiBOZXcgZnVuY3Rpb24uDQo+ID4gPiAodmVjdG9yaXph YmxlX2xpdmVfb3BlcmF0aW9uKTogQWRkIGxvb3AgbGVuIGNvbnRyb2wuDQo+ ID4gPiANCj4gPiA+IC0tLQ0KPiA+ID4gIGdjYy90cmVlLXZlY3QtbG9vcC5j YyB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0NCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBh L2djYy90cmVlLXZlY3QtbG9vcC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC5j Yw0KPiA+ID4gaW5kZXggYmY4ZDY3N2I1ODQuLjgwOWI3M2I5NjZjIDEwMDY0 NA0KPiA+ID4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQo+ID4gPiAr KysgYi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gPiA+IEBAIC04OTYzLDYg Kzg5NjMsMjcgQEAgdmVjdF9jYW5fdmVjdG9yaXplX3dpdGhvdXRfc2ltZF9w IChjb2RlX2hlbHBlciBjb2RlKQ0KPiA+ID4gICAgJiYgdmVjdF9jYW5fdmVj dG9yaXplX3dpdGhvdXRfc2ltZF9wICh0cmVlX2NvZGUgKGNvZGUpKSk7DQo+ ID4gPiAgfQ0KPiA+ID4gIA0KPiA+ID4gKy8qIFJldHVybiB0cnVlIGlmIHRh cmdldCBzdXBwb3J0cyBleHRyYWN0IGxhc3QgdmVjdG9yaXphdGlvbiB3aXRo IExFTi4gICovDQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGJvb2wNCj4gPiA+ ICt2ZWN0X2Nhbl92ZWN0b3JpemVfZXh0cmFjdF9sYXN0X3dpdGhfbGVuX3Ag KHRyZWUgdmVjdHlwZSkNCj4gPiA+ICt7DQo+ID4gPiArICAvKiBSZXR1cm4g ZmFsc2UgaWYgdGFyZ2V0IGRvZXNuJ3Qgc3VwcG9ydCBMRU4gaW4gbG9vcCBj b250cm9sLiAgKi8NCj4gPiA+ICsgIG1hY2hpbmVfbW9kZSB2bW9kZTsNCj4g PiA+ICsgIG1hY2hpbmVfbW9kZSB2ZWNfbW9kZSA9IFRZUEVfTU9ERSAodmVj dHlwZSk7DQo+ID4gPiArICBpZiAoIVZFQ1RPUl9NT0RFX1AgKHZlY19tb2Rl KSkNCj4gPiA+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiA+ID4gKyAgaWYgKCFn ZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAodmVjX21vZGUsIHRydWUpLmV4aXN0 cyAoJnZtb2RlKQ0KPiA+ID4gKyAgICAgIHx8ICFnZXRfbGVuX2xvYWRfc3Rv cmVfbW9kZSAodmVjX21vZGUsIGZhbHNlKS5leGlzdHMgKCZ2bW9kZSkpDQo+ ID4gPiArICAgIHJldHVybiBmYWxzZTsNCj4gPiAgDQo+ID4gU28gdGhpcyAi aGlkZGVuIiBiaXQgaW4gdGhlIGVuZCBkZWNpZGVzIHdoZXRoZXIgdG8gLi4u DQo+ID4gIA0KPiA+ID4gKyAgLyogVGFyZ2V0IG5lZWQgdG8gc3VwcG9ydCBW RUNfRVhUUkFDVCB0byBleHRyYWN0IHRoZSBsYXN0IGFjdGl2ZSBlbGVtZW50 LiAgKi8NCj4gPiA+ICsgIHJldHVybiBjb252ZXJ0X29wdGFiX2hhbmRsZXIg KHZlY19leHRyYWN0X29wdGFiLA0KPiA+ID4gKyB2ZWNfbW9kZSwNCj4gPiA+ ICsgVFlQRV9NT0RFIChUUkVFX1RZUEUgKHZlY3R5cGUpKSkNCj4gPiA+ICsg IT0gQ09ERV9GT1Jfbm90aGluZzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiAgLyogQ3JlYXRlIHZlY3RvciBpbml0IGZvciB2ZWN0b3JpemVkIGl2LiAg Ki8NCj4gPiA+ICBzdGF0aWMgdHJlZQ0KPiA+ID4gIHZlY3RfY3JlYXRlX25v bmxpbmVhcl9pdl9pbml0IChnaW1wbGVfc2VxKiBzdG10cywgdHJlZSBpbml0 X2V4cHIsDQo+ID4gPiBAQCAtMTAyNzksNyArMTAzMDAsOCBAQCB2ZWN0b3Jp emFibGVfbGl2ZV9vcGVyYXRpb24gKHZlY19pbmZvICp2aW5mbywgc3RtdF92 ZWNfaW5mbyBzdG10X2luZm8sDQo+ID4gPiAgICAgICAgaWYgKGxvb3Bfdmlu Zm8gJiYgTE9PUF9WSU5GT19DQU5fVVNFX1BBUlRJQUxfVkVDVE9SU19QIChs b29wX3ZpbmZvKSkNCj4gPiA+ICB7DQo+ID4gPiAgICBpZiAoIWRpcmVjdF9p bnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX0VYVFJBQ1RfTEFTVCwgdmVj dHlwZSwNCj4gPiA+IC0gICAgICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkpDQo+ ID4gPiArICAgICAgICBPUFRJTUlaRV9GT1JfU1BFRUQpDQo+ID4gPiArICAg ICAgICYmICF2ZWN0X2Nhbl92ZWN0b3JpemVfZXh0cmFjdF9sYXN0X3dpdGhf bGVuX3AgKHZlY3R5cGUpKQ0KPiA+ID4gICAgICB7DQo+ID4gPiAgICAgICAg aWYgKGR1bXBfZW5hYmxlZF9wICgpKQ0KPiA+ID4gIGR1bXBfcHJpbnRmX2xv YyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIHZlY3RfbG9jYXRpb24sDQo+ ID4gPiBAQCAtMTAzMDgsOSArMTAzMzAsMTQgQEAgdmVjdG9yaXphYmxlX2xp dmVfb3BlcmF0aW9uICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8g c3RtdF9pbmZvLA0KPiA+ID4gICAgZWxzZQ0KPiA+ID4gICAgICB7DQo+ID4g PiAgICAgICAgZ2NjX2Fzc2VydCAobmNvcGllcyA9PSAxICYmICFzbHBfbm9k ZSk7DQo+ID4gPiAtICAgICAgIHZlY3RfcmVjb3JkX2xvb3BfbWFzayAobG9v cF92aW5mbywNCj4gPiA+IC0gICAgICAmTE9PUF9WSU5GT19NQVNLUyAobG9v cF92aW5mbyksDQo+ID4gPiAtICAgICAgMSwgdmVjdHlwZSwgTlVMTCk7DQo+ ID4gPiArICAgICAgIGlmICh2ZWN0X2Nhbl92ZWN0b3JpemVfZXh0cmFjdF9s YXN0X3dpdGhfbGVuX3AgKHZlY3R5cGUpKQ0KPiA+ID4gKyB2ZWN0X3JlY29y ZF9sb29wX2xlbiAobG9vcF92aW5mbywNCj4gPiA+ICsgICAgICAgJkxPT1Bf VklORk9fTEVOUyAobG9vcF92aW5mbyksDQo+ID4gPiArICAgICAgIDEsIHZl Y3R5cGUsIDEpOw0KPiA+ICANCj4gPiAuLiByZWNvcmQgYSBsb29wX2xlbiBo ZXJlLiAgSSB0aGluayBwb3dlcnBjIGF0IGxlYXN0IGhhcyAuVkVDX0VYVFJB Q1QgYXMgDQo+ID4gd2VsbCBidXQgb2YgY291cnNlIC5WRUNfRVhUUkFDVCBz dXBwb3J0IGl0c2VsZiBkb2Vzbid0IGhhdmUgYW55dGhpbmcgdG8NCj4gPiBk byB3aXRoICdsZW4nIHN1cHBvcnQuDQo+ID4gIA0KPiA+IHg4NiBoYXMgLlZF Q19TRVQgYnV0IG5vdCB5ZXQgLlZFQ19FWFRSQUNULCBpZiBpdCBnZXRzIC5W RUNfRVhUUkFDVA0KPiA+IGl0cyBwYXJ0aWFsIHZlY3RvciBzdXBwb3J0IHN0 aWxsIHdhbnRzIG1hc2tzLCBub3QgbGVucyAoYW5kIG9uY2UNCj4gPiB3ZSBy ZWNvcmQgYm90aCB3ZSBmYWlsKS4NCj4gPiAgDQo+ID4gU28gaG93IGNhbiB3 ZSByZXNvbHZlIHRoZSBpc3N1ZSB3aGVuIGEgbm9uLVZMIG9wZXJhdGlvbiBs aWtlDQo+ID4gLlZFQ19FWFRSQUNUIGlzIHVzZWQgZm9yIF9sZW4gc3VwcG9y dD8NCj4gPiAgDQo+ID4gTm90ZSB4ODYgZG9lbnMndCB5ZXQgc3VwcG9ydCBJ Rk5fRVhUUkFDVF9MQVNUIGVpdGhlci4NCj4gPiAgDQo+ID4gU28sIHdoeSBk byB3ZSB0ZXN0IGZvciBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSBhbmQgbm90 IGp1c3QgZm9yDQo+ID4gVkVDX0VYVFJBQ1Q/DQo+ID4gIA0KPiA+ID4gKyAg ICAgICBlbHNlDQo+ID4gPiArIHZlY3RfcmVjb3JkX2xvb3BfbWFzayAobG9v cF92aW5mbywNCj4gPiA+ICsgICAgICAgICZMT09QX1ZJTkZPX01BU0tTIChs b29wX3ZpbmZvKSwNCj4gPiA+ICsgICAgICAgIDEsIHZlY3R5cGUsIE5VTEwp Ow0KPiA+ID4gICAgICB9DQo+ID4gPiAgfQ0KPiA+ID4gICAgICAgIC8qID8/ PyAgRW5hYmxlIGZvciBsb29wIGNvc3RpbmcgYXMgd2VsbC4gICovDQo+ID4g PiBAQCAtMTAzMzYsNyArMTAzNjMsOSBAQCB2ZWN0b3JpemFibGVfbGl2ZV9v cGVyYXRpb24gKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10 X2luZm8sDQo+ID4gPiAgICBnaW1wbGUgKnZlY19zdG10Ow0KPiA+ID4gICAg aWYgKHNscF9ub2RlKQ0KPiA+ID4gICAgICB7DQo+ID4gPiAtICAgICAgZ2Nj X2Fzc2VydCAoIWxvb3BfdmluZm8gfHwgIUxPT1BfVklORk9fRlVMTFlfTUFT S0VEX1AgKGxvb3BfdmluZm8pKTsNCj4gPiA+ICsgICAgICBnY2NfYXNzZXJ0 ICghbG9vcF92aW5mbw0KPiA+ID4gKyAgIHx8ICghTE9PUF9WSU5GT19GVUxM WV9NQVNLRURfUCAobG9vcF92aW5mbykNCj4gPiA+ICsgICAgICAgJiYgIUxP T1BfVklORk9fRlVMTFlfV0lUSF9MRU5HVEhfUCAobG9vcF92aW5mbykpKTsN Cj4gPiA+ICANCj4gPiA+ICAgICAgICAvKiBHZXQgdGhlIGNvcnJlY3Qgc2xw IHZlY3Rvcml6ZWQgc3RtdC4gICovDQo+ID4gPiAgICAgICAgdmVjX2xocyA9 IFNMUF9UUkVFX1ZFQ19ERUZTIChzbHBfbm9kZSlbdmVjX2VudHJ5XTsNCj4g PiA+IEBAIC0xMDM4MCw3ICsxMDQwOSw0MiBAQCB2ZWN0b3JpemFibGVfbGl2 ZV9vcGVyYXRpb24gKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBz dG10X2luZm8sDQo+ID4gPiAgDQo+ID4gPiAgICAgICAgZ2ltcGxlX3NlcSBz dG10cyA9IE5VTEw7DQo+ID4gPiAgICAgICAgdHJlZSBuZXdfdHJlZTsNCj4g PiA+IC0gICAgICBpZiAoTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9v cF92aW5mbykpDQo+ID4gPiArICAgICAgaWYgKExPT1BfVklORk9fRlVMTFlf V0lUSF9MRU5HVEhfUCAobG9vcF92aW5mbykpDQo+ID4gPiArIHsNCj4gPiA+ ICsgICAvKiBFbWl0Og0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgU0NBTEFS X1JFUyA9IFZFQ19FWFRSQUNUIDxWRUNfTEhTLCBMRU4gKyBCSUFTIC0gMT4N Cj4gPiA+ICsNCj4gPiA+ICsgICAgICB3aGVyZSBWRUNfTEhTIGlzIHRoZSB2 ZWN0b3JpemVkIGxpdmUtb3V0IHJlc3VsdCBhbmQgTUFTSyBpcw0KPiA+ID4g KyAgICAgIHRoZSBsb29wIG1hc2sgZm9yIHRoZSBmaW5hbCBpdGVyYXRpb24u ICAqLw0KPiA+ID4gKyAgIGdjY19hc3NlcnQgKG5jb3BpZXMgPT0gMSAmJiAh c2xwX25vZGUpOw0KPiA+ID4gKyAgIGdpbXBsZV9zZXEgdGVtID0gTlVMTDsN Cj4gPiA+ICsgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2kgPSBnc2lfbGFz dCAodGVtKTsNCj4gPiA+ICsgICB0cmVlIGxlbg0KPiA+ID4gKyAgICAgPSB2 ZWN0X2dldF9sb29wX2xlbiAobG9vcF92aW5mbywgJmdzaSwNCj4gPiA+ICsg JkxPT1BfVklORk9fTEVOUyAobG9vcF92aW5mbyksDQo+ID4gPiArIDEsIHZl Y3R5cGUsIDAsIDApOw0KPiA+ID4gKw0KPiA+ID4gKyAgIC8qIEJJQVMgLSAx LiAgKi8NCj4gPiA+ICsgICBzaWduZWQgY2hhciBiaWFzdmFsID0gTE9PUF9W SU5GT19QQVJUSUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+ ID4gPiArICAgdHJlZSBiaWFzX21pbnVzX29uZQ0KPiA+ID4gKyAgICAgPSBp bnRfY29uc3RfYmlub3AgKE1JTlVTX0VYUFIsDQo+ID4gPiArICAgICAgICBi dWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKGxlbiksIGJpYXN2YWwpLA0KPiA+ ID4gKyAgICAgICAgYnVpbGRfb25lX2NzdCAoVFJFRV9UWVBFIChsZW4pKSk7 DQo+ID4gPiArDQo+ID4gPiArICAgLyogTEFTVF9JTkRFWCA9IExFTiArIChC SUFTIC0gMSkuICAqLw0KPiA+ID4gKyAgIHRyZWUgbGFzdF9pbmRleCA9IGdp bXBsZV9idWlsZCAoJnN0bXRzLCBQTFVTX0VYUFIsIFRSRUVfVFlQRSAobGVu KSwNCj4gPiA+ICsgICBsZW4sIGJpYXNfbWludXNfb25lKTsNCj4gPiA+ICsN Cj4gPiA+ICsgICAvKiBTQ0FMQVJfUkVTID0gVkVDX0VYVFJBQ1QgPFZFQ19M SFMsIExFTiArIEJJQVMgLSAxPi4gICovDQo+ID4gPiArICAgdHJlZSBzY2Fs YXJfcmVzDQo+ID4gPiArICAgICA9IGdpbXBsZV9idWlsZCAoJnN0bXRzLCBD Rk5fVkVDX0VYVFJBQ1QsIFRSRUVfVFlQRSAodmVjdHlwZSksDQo+ID4gPiAr ICAgICB2ZWNfbGhzX3BoaSwgbGFzdF9pbmRleCk7DQo+ID4gPiArDQo+ID4g IA0KPiA+IGNhbiB3ZSBkb3VibGUtY2hlY2sgdGhpcyBvbiBwb3dlcnBjIGFu ZCBzMzkwPw0KPiA+ICANCj4gPiBUaGFua3MsDQo+ID4gUmljaGFyZC4NCj4g PiAgDQo+ID4gPiArICAgLyogQ29udmVydCB0aGUgZXh0cmFjdGVkIHZlY3Rv ciBlbGVtZW50IHRvIHRoZSBzY2FsYXIgdHlwZS4gICovDQo+ID4gPiArICAg bmV3X3RyZWUgPSBnaW1wbGVfY29udmVydCAoJnN0bXRzLCBsaHNfdHlwZSwg c2NhbGFyX3Jlcyk7DQo+ID4gPiArIH0NCj4gPiA+ICsgICAgICBlbHNlIGlm IChMT09QX1ZJTkZPX0ZVTExZX01BU0tFRF9QIChsb29wX3ZpbmZvKSkNCj4g PiA+ICB7DQo+ID4gPiAgICAvKiBFbWl0Og0KPiA+ID4gIA0KPiA+ICANCj4g PiANCj4gIA0KPiANCiANCi0tIA0KUmljaGFyZCBCaWVuZXIgPHJndWVudGhl ckBzdXNlLmRlPg0KU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBH bWJILA0KRnJhbmtlbnN0cmFzc2UgMTQ2LCA5MDQ2MSBOdWVybmJlcmcsIEdl cm1hbnk7DQpHRjogSXZvIFRvdGV2LCBBbmRyZXcgTWNEb25hbGQsIFdlcm5l ciBLbm9ibGljaDsgKEhSQiAzNjgwOSwgQUcgTnVlcm5iZXJnKQ0KIA0K ------=_001_NextPart453610537081_=------