From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg150.qq.com (smtpbg150.qq.com [18.132.163.193]) by sourceware.org (Postfix) with ESMTPS id F09B8385771B for ; Mon, 15 May 2023 21:20:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F09B8385771B 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: bizesmtp84t1684185623tadnzz31 Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 16 May 2023 05:20:22 +0800 (CST) X-QQ-SSF: 01400000000000F0R000000A0000000 X-QQ-FEAT: pMHwdq3i9JMfM6Ow1nExUv8oeHDGEMISqgdn7oFE0So+MVgKvApa5IrM5+AQ6 D3koWrjGvMNRiGaNVnne3mSh3MNejow3/liBgPH9h4HwKzpN0ng+zEef0t/NI0gcDK42U+l 9EIokS7M3n6UFrFR6hq+4CVxkPUs9nEWPhw5nOmSpB7EaKkJi8cToqeTMTEmTG4unev6zFT naWQCiLna4ECZW86ZdBrTwXa++/yaR1TA27LkiA742WZm8/KNs/lAyi51R+CkcFK9HNzJxT kFYg6Fz6nUCy3yceOydIhgLHsOWKSdZlwEgoo8GsTxnqhYmmgdPSNaOWTp8geP2OXvWpHsu TBslKRNNtsBnJdgRm3AYOT0iQ+1Lxi8IaItjw7rpeA3XqSh/iazcHDtOmgaTaJgGv0A9kYw vcz2I/OSB29u0uAF2RTYDw== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 30579911436969329 Date: Tue, 16 May 2023 05:20:24 +0800 From: =?GB2312?B?1tO+09Xc?= To: richard.sandiford Cc: gcc-patches , rguenther Subject: Re: Re: [PATCH V7] VECT: Add decrement IV support in Loop Vectorizer References: <20230515012844.183599-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: 47C2B24B-1EE0-4119-A5ED-FED17830FA15 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart540014012320_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,CHARSET_FARAWAY_HEADER,GIT_PATCH_0,HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE 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_NextPart540014012320_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 SGksIFJpY2hhcmQuDQoNCj4+IEVhc2llciB0byByZWFkIGFzOg0KDQogPj4g IF80MSA9IF80MCAtIDE2DQoNCj4+ICh3aGljaCBtaWdodCBub3QgYmUgdmFs aWQgZ2ltcGxlLCBidXQgcHNldWRvY29kZSBpcyBnb29kIGVub3VnaCkuDQoN Ck9LLg0KDQoNCj4+IFRoZSBkaWZmaWN1bHR5IHdpdGggdGhpcyBpcyB0aGF0 IHRoZSBsZW5fbG9hZCogYW5kIGxlbl9zdG9yZSoNCj4+b3B0YWJzIGN1cnJl bnRseSBzYXkgdGhhdCB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZCBpZiB0 aGUNCj4+bGVuZ3RoIGFyZ3VtZW50IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVu Z3RoIG9mIGEgdmVjdG9yLg0KPj5TbyBJIHRoaW5rIHVzaW5nIHRoZXNlIHZh bHVlcyBvZiBfNDcgYW5kIF80NCBpbiB0aGUgLkxFTl9TVE9SRXMNCj4+aXMg cmVseWluZyBvbiB1bmRlZmluZWQgYmVoYXZpb3VyLg0KDQo+PkhhdmVuJ3Qg aGFkIHRpbWUgdG8gdGhpbmsgYWJvdXQgdGhlIGNvbnNlcXVlbmNlcyBvZiB0 aGF0IHlldCwNCj4+YnV0IHdhbnRlZCB0byBzZW5kIHNvbWV0aGluZyBvdXQg c29vbmVyIHJhdGhlciB0aGFuIGxhdGVyLg0KDQpZZXMsIHdlIGhhdmUgdGFp bCBhZ25vc3RpYyAoVEEpIGluIHZzZXZsaSB3aGljaCBpcyBtYWtlIHRhaWwg ZWxlbWVudCANCnVuZGVmaW5lZCB2YWx1ZS4gVGhlIGN1cnJlbnQgb3B0YWJz IGJlaGF2aW9yIG1hdGNoZXMgdGhlIFJWViBzcGVjaWZpY2F0aW9uLg0KSSB0 aGluayBtYXliZSB3ZSBjYW4gbGVhdmUgaXQgdG8gYmUgY2FyZWZ1bGx5IHNv bHZlZCBpbiB0aGUgZnV0dXJlLiBDdXJyZW50bHksDQpJIGRvbid0IHNlZSB0 aGUgaXNzdWUgeWV0IHNvIGZhci4NCg0KPj5JdCB3b3VsZCBiZSBiZXR0ZXIg dG8gdXNlIGtub3duX2xlIGhlcmUsIHdpdGhvdXQgY2hlY2tpbmcgd2hldGhl ciB0aGUNCj4+VkYgaXMgY29uc3RhbnQuDQpPaw0KDQpUaGFuayB5b3Ugc28g bXVjaCBmb3IgeW91ciBwYXRpZW5jZSBoZWxwaW5nIHRoaXMgcGF0Y2guDQpJ IGhhdmUgc2VudCBWOCBwYXRjaCB3aXRoIGZpeGVzIGFzIHlvdSBzdWdnZXN0 ZWQ6DQpodHRwczovL2djYy5nbnUub3JnL3BpcGVybWFpbC9nY2MtcGF0Y2hl cy8yMDIzLU1heS82MTg2MzguaHRtbCANCg0KQ2FuIEkgbWVyZ2UgdGhpcyBw YXRjaD8NCg0KSSBhbSBnb25uYSBwb3N0IHRoZSBuZXh0IHBhdGNoIHdpdGgg c2VsZWN0X3ZsIGluY2x1ZGVkLg0KDQpUaGFua3MuDQoNCg0KanV6aGUuemhv bmdAcml2YWkuYWkNCiANCkZyb206IFJpY2hhcmQgU2FuZGlmb3JkDQpEYXRl OiAyMDIzLTA1LTE2IDAzOjQ0DQpUbzoganV6aGUuemhvbmcNCkNDOiBnY2Mt cGF0Y2hlczsgcmd1ZW50aGVyDQpTdWJqZWN0OiBSZTogW1BBVENIIFY3XSBW RUNUOiBBZGQgZGVjcmVtZW50IElWIHN1cHBvcnQgaW4gTG9vcCBWZWN0b3Jp emVyDQpqdXpoZS56aG9uZ0ByaXZhaS5haSB3cml0ZXM6DQo+IEZyb206IEp1 emhlLVpob25nIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4NCj4NCj4gVGhpcyBw YXRjaCBpbXBsZW1lbnQgZGVjcmVtZW50IElWIGZvciBsZW5ndGggYXBwcm9h Y2ggaW4gbG9vcCBjb250cm9sLg0KPg0KPiBBZGRyZXNzIGNvbW1lbnQgZnJv bSBrZXdlbiB0aGF0IGluY29ycG9yYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBp bnNpZGUNCj4gInZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkiIGlu c3RlYWQgb2YgYSBzdGFuZGFsb25lIGZ1bmN0aW9uLg0KPg0KPiBBZGRyZXNz IGNvbW1lbnQgZnJvbSBSaWNoYXJkIHVzaW5nIE1JTl9FWFBSIHRvIGhhbmRs ZSB0aGVzZSAzIGZvbGxvd2luZw0KPiBjYXNlcw0KPiAxLiBzaW5nbGUgcmdy b3VwLg0KPiAyLiBtdWx0aXBsZSByZ3JvdXAgZm9yIFNMUC4NCj4gMy4gbXVs dGlwbGUgcmdyb3VwIGZvciBub24tU0xQICh0ZXN0ZWQgb24gdmVjX3BhY2tf dHJ1bmMpLg0KIA0KVGhhbmtzLCB0aGlzIGxvb2tzIHByZXR0eSByZWFzb25h YmxlIHRvIG1lIEZXSVcsIGJ1dCBzb21lIGNvbW1lbnRzIGJlbG93Og0KIA0K PiBCb290c3RyYXBlZCAmJiBSZWdyZXNzaW9uIG9uIHg4Ni4NCj4NCj4gT2sg Zm9yIHRydW5rID8NCj4NCj4gZ2NjL0NoYW5nZUxvZzoNCj4NCj4gICAgICAg ICAqIHRyZWUtdmVjdC1sb29wLW1hbmlwLmNjICh2ZWN0X2FkanVzdF9sb29w X2xlbnMpOiBOZXcgZnVuY3Rpb24uDQo+ICAgICAgICAgKHZlY3Rfc2V0X2xv b3BfY29udHJvbHNfZGlyZWN0bHkpOiBBZGQgZGVjcmVtZW50IElWIHN1cHBv cnQuDQo+ICAgICAgICAgKHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRp YWxfdmVjdG9ycyk6IERpdHRvLg0KPiAgICAgICAgICogdHJlZS12ZWN0LWxv b3AuY2MgKF9sb29wX3ZlY19pbmZvOjpfbG9vcF92ZWNfaW5mbyk6IEFkZCBh IG5ldyB2YXJpYWJsZS4NCj4gICAgICAgICAodmVjdF9nZXRfbG9vcF9sZW4p OiBBZGQgZGVjcmVtZW50IElWIHN1cHBvcnQuDQo+ICAgICAgICAgKiB0cmVl LXZlY3Qtc3RtdHMuY2MgKHZlY3Rvcml6YWJsZV9zdG9yZSk6IERpdHRvLg0K PiAgICAgICAgICh2ZWN0b3JpemFibGVfbG9hZCk6IERpdHRvLg0KPiAgICAg ICAgICogdHJlZS12ZWN0b3JpemVyLmggKExPT1BfVklORk9fVVNJTkdfREVD UkVNRU5USU5HX0lWX1ApOiBOZXcgbWFjcm8uDQo+ICAgICAgICAgKHZlY3Rf Z2V0X2xvb3BfbGVuKTogQWRkIGRlY3JlbWVudCBJViBzdXBwb3J0Lg0KPg0K PiAtLS0NCj4gIGdjYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYyB8IDE3NyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gIGdjYy90 cmVlLXZlY3QtbG9vcC5jYyAgICAgICB8ICAzOCArKysrKysrLQ0KPiAgZ2Nj L3RyZWUtdmVjdC1zdG10cy5jYyAgICAgIHwgICA5ICstDQo+ICBnY2MvdHJl ZS12ZWN0b3JpemVyLmggICAgICAgfCAgMTMgKystDQo+ICA0IGZpbGVzIGNo YW5nZWQsIDIyNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkNCj4N Cj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYyBi L2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiBpbmRleCBmZjYxNTll MDhkNS4uMWJhYWM3YjFiNTIgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXZl Y3QtbG9vcC1tYW5pcC5jYw0KPiArKysgYi9nY2MvdHJlZS12ZWN0LWxvb3At bWFuaXAuY2MNCj4gQEAgLTM4NSw2ICszODUsNTggQEAgdmVjdF9tYXliZV9w ZXJtdXRlX2xvb3BfbWFza3MgKGdpbXBsZV9zZXEgKnNlcSwgcmdyb3VwX2Nv bnRyb2xzICpkZXN0X3JnbSwNCj4gICAgcmV0dXJuIGZhbHNlOw0KPiAgfQ0K PiAgDQo+ICsvKiBUcnkgdG8gdXNlIGFkanVzdCBsb29wIGxlbnMgZm9yIG5v bi1TTFAgbXVsdGlwbGUtcmdyb3Vwcy4NCj4gKw0KPiArICAgICBfMzYgPSBN SU5fRVhQUiA8aXZ0bXBfMzQsIFZGPjsNCj4gKw0KPiArICAgICBGaXJzdCBs ZW5ndGggKE1JTiAoWCwgVkYvTikpOg0KPiArICAgICAgIGxvb3BfbGVuXzE1 ID0gTUlOX0VYUFIgPF8zNiwgVkYvTj47DQo+ICsNCj4gKyAgICAgU2Vjb25k IGxlbmd0aDoNCj4gKyAgICAgICB0bXAgPSBfMzYgLSBsb29wX2xlbl8xNTsN Cj4gKyAgICAgICBsb29wX2xlbl8xNiA9IE1JTiAodG1wLCBWRi9OKTsNCj4g Kw0KPiArICAgICBUaGlyZCBsZW5ndGg6DQo+ICsgICAgICAgdG1wMiA9IHRt cCAtIGxvb3BfbGVuXzE2Ow0KPiArICAgICAgIGxvb3BfbGVuXzE3ID0gTUlO ICh0bXAyLCBWRi9OKTsNCj4gKw0KPiArICAgICBGb3J0aCBsZW5ndGg6DQo+ ICsgICAgICAgdG1wMyA9IHRtcDIgLSBsb29wX2xlbl8xNzsNCj4gKyAgICAg ICBsb29wX2xlbl8xOCA9IE1JTiAodG1wMywgVkYvTik7ICAqLw0KPiArDQo+ ICtzdGF0aWMgdm9pZA0KPiArdmVjdF9hZGp1c3RfbG9vcF9sZW5zICh0cmVl IGl2X3R5cGUsIGdpbXBsZV9zZXEgKnNlcSwgcmdyb3VwX2NvbnRyb2xzICpk ZXN0X3JnbSwNCj4gKyAgICAgICAgcmdyb3VwX2NvbnRyb2xzICpzcmNfcmdt KQ0KPiArew0KPiArICB0cmVlIGN0cmxfdHlwZSA9IGRlc3RfcmdtLT50eXBl Ow0KPiArICBwb2x5X3VpbnQ2NCBuaXRlbXNfcGVyX2N0cmwNCj4gKyAgICA9 IFRZUEVfVkVDVE9SX1NVQlBBUlRTIChjdHJsX3R5cGUpICogZGVzdF9yZ20t PmZhY3RvcjsNCj4gKw0KPiArICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg aSA8IGRlc3RfcmdtLT5jb250cm9scy5sZW5ndGggKCk7ICsraSkNCj4gKyAg ICB7DQo+ICsgICAgICB0cmVlIHNyYyA9IHNyY19yZ20tPmNvbnRyb2xzW2kg LyBkZXN0X3JnbS0+Y29udHJvbHMubGVuZ3RoICgpXTsNCj4gKyAgICAgIHRy ZWUgZGVzdCA9IGRlc3RfcmdtLT5jb250cm9sc1tpXTsNCj4gKyAgICAgIHRy ZWUgbGVuZ3RoX2xpbWl0ID0gYnVpbGRfaW50X2NzdCAoaXZfdHlwZSwgbml0 ZW1zX3Blcl9jdHJsKTsNCj4gKyAgICAgIGdhc3NpZ24gKnN0bXQ7DQo+ICsg ICAgICBpZiAoaSA9PSAwKQ0KPiArIHsNCj4gKyAgIC8qIE1JTiAoWCwgVkYq SS9OKSBjYXBwZWQgdG8gdGhlIHJhbmdlIFswLCBWRi9OXS4gICovDQo+ICsg ICBzdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoZGVzdCwgTUlOX0VYUFIs IHNyYywgbGVuZ3RoX2xpbWl0KTsNCj4gKyAgIGdpbXBsZV9zZXFfYWRkX3N0 bXQgKHNlcSwgc3RtdCk7DQo+ICsgfQ0KPiArICAgICAgZWxzZQ0KPiArIHsN Cj4gKyAgIC8qIChNSU4gKHJlbWFpbiwgVkYqSS9OKSkgY2FwcGVkIHRvIHRo ZSByYW5nZSBbMCwgVkYvTl0uICAqLw0KPiArICAgdHJlZSB0ZW1wID0gbWFr ZV9zc2FfbmFtZSAoaXZfdHlwZSk7DQo+ICsgICBzdG10ID0gZ2ltcGxlX2J1 aWxkX2Fzc2lnbiAodGVtcCwgTUlOVVNfRVhQUiwgc3JjLA0KPiArICAgICAg IGRlc3RfcmdtLT5jb250cm9sc1tpIC0gMV0pOw0KPiArICAgZ2ltcGxlX3Nl cV9hZGRfc3RtdCAoc2VxLCBzdG10KTsNCj4gKyAgIHN0bXQgPSBnaW1wbGVf YnVpbGRfYXNzaWduIChkZXN0LCBNSU5fRVhQUiwgdGVtcCwgbGVuZ3RoX2xp bWl0KTsNCj4gKyAgIGdpbXBsZV9zZXFfYWRkX3N0bXQgKHNlcSwgc3RtdCk7 DQo+ICsgfQ0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAgLyogSGVscGVyIGZv ciB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMuICBH ZW5lcmF0ZSBkZWZpbml0aW9ucw0KPiAgICAgZm9yIGFsbCB0aGUgcmdyb3Vw IGNvbnRyb2xzIGluIFJHQyBhbmQgcmV0dXJuIGEgY29udHJvbCB0aGF0IGlz IG5vbnplcm8NCj4gICAgIHdoZW4gdGhlIGxvb3AgbmVlZHMgdG8gaXRlcmF0 ZS4gIEFkZCBhbnkgbmV3IHByZWhlYWRlciBzdGF0ZW1lbnRzIHRvDQo+IEBA IC00NjgsOSArNTIwLDEwIEBAIHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGly ZWN0bHkgKGNsYXNzIGxvb3AgKmxvb3AsIGxvb3BfdmVjX2luZm8gbG9vcF92 aW5mbywNCj4gICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaW5jcl9nc2k7DQo+ ICAgIGJvb2wgaW5zZXJ0X2FmdGVyOw0KPiAgICBzdGFuZGFyZF9pdl9pbmNy ZW1lbnRfcG9zaXRpb24gKGxvb3AsICZpbmNyX2dzaSwgJmluc2VydF9hZnRl cik7DQo+IC0gIGNyZWF0ZV9pdiAoYnVpbGRfaW50X2NzdCAoaXZfdHlwZSwg MCksIFBMVVNfRVhQUiwgbml0ZW1zX3N0ZXAsIE5VTExfVFJFRSwNCj4gLSAg ICAgIGxvb3AsICZpbmNyX2dzaSwgaW5zZXJ0X2FmdGVyLCAmaW5kZXhfYmVm b3JlX2luY3IsDQo+IC0gICAgICAmaW5kZXhfYWZ0ZXJfaW5jcik7DQo+ICsg IGlmICghTE9PUF9WSU5GT19VU0lOR19ERUNSRU1FTlRJTkdfSVZfUCAobG9v cF92aW5mbykpDQo+ICsgICAgY3JlYXRlX2l2IChidWlsZF9pbnRfY3N0IChp dl90eXBlLCAwKSwgUExVU19FWFBSLCBuaXRlbXNfc3RlcCwgTlVMTF9UUkVF LA0KPiArICAgICAgICBsb29wLCAmaW5jcl9nc2ksIGluc2VydF9hZnRlciwg JmluZGV4X2JlZm9yZV9pbmNyLA0KPiArICAgICAgICAmaW5kZXhfYWZ0ZXJf aW5jcik7DQo+ICANCj4gICAgdHJlZSB6ZXJvX2luZGV4ID0gYnVpbGRfaW50 X2NzdCAoY29tcGFyZV90eXBlLCAwKTsNCj4gICAgdHJlZSB0ZXN0X2luZGV4 LCB0ZXN0X2xpbWl0LCBmaXJzdF9saW1pdDsNCj4gQEAgLTU1Miw4ICs2MDUs MTMgQEAgdmVjdF9zZXRfbG9vcF9jb250cm9sc19kaXJlY3RseSAoY2xhc3Mg bG9vcCAqbG9vcCwgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0KPiAgICAv KiBDb252ZXJ0IHRoZSBJViB2YWx1ZSB0byB0aGUgY29tcGFyaXNvbiB0eXBl IChlaXRoZXIgYSBuby1vcCBvcg0KPiAgICAgICBhIGRlbW90aW9uKS4gICov DQo+ICAgIGdpbXBsZV9zZXEgdGVzdF9zZXEgPSBOVUxMOw0KPiAtICB0ZXN0 X2luZGV4ID0gZ2ltcGxlX2NvbnZlcnQgKCZ0ZXN0X3NlcSwgY29tcGFyZV90 eXBlLCB0ZXN0X2luZGV4KTsNCj4gLSAgZ3NpX2luc2VydF9zZXFfYmVmb3Jl ICh0ZXN0X2dzaSwgdGVzdF9zZXEsIEdTSV9TQU1FX1NUTVQpOw0KPiArICBp ZiAoTE9PUF9WSU5GT19VU0lOR19ERUNSRU1FTlRJTkdfSVZfUCAobG9vcF92 aW5mbykpDQo+ICsgICAgdGVzdF9saW1pdCA9IGdpbXBsZV9jb252ZXJ0IChw cmVoZWFkZXJfc2VxLCBpdl90eXBlLCBuaXRlbXNfdG90YWwpOw0KPiArICBl bHNlDQo+ICsgICAgew0KPiArICAgICAgdGVzdF9pbmRleCA9IGdpbXBsZV9j b252ZXJ0ICgmdGVzdF9zZXEsIGNvbXBhcmVfdHlwZSwgdGVzdF9pbmRleCk7 DQo+ICsgICAgICBnc2lfaW5zZXJ0X3NlcV9iZWZvcmUgKHRlc3RfZ3NpLCB0 ZXN0X3NlcSwgR1NJX1NBTUVfU1RNVCk7DQo+ICsgICAgfQ0KPiAgDQo+ICAg IC8qIFByb3ZpZGUgYSBkZWZpbml0aW9uIG9mIGVhY2ggY29udHJvbCBpbiB0 aGUgZ3JvdXAuICAqLw0KPiAgICB0cmVlIG5leHRfY3RybCA9IE5VTExfVFJF RTsNCj4gQEAgLTU4Nyw2ICs2NDUsMTAxIEBAIHZlY3Rfc2V0X2xvb3BfY29u dHJvbHNfZGlyZWN0bHkgKGNsYXNzIGxvb3AgKmxvb3AsIGxvb3BfdmVjX2lu Zm8gbG9vcF92aW5mbywNCj4gICAgYmlhc190cmVlKTsNCj4gIH0NCj4gIA0K PiArICAgICAgaWYgKExPT1BfVklORk9fVVNJTkdfREVDUkVNRU5USU5HX0lW X1AgKGxvb3BfdmluZm8pKQ0KPiArIHsNCj4gKyAgIC8qIENyZWF0ZSBkZWNy ZW1lbnQgSVY6DQo+ICsNCj4gKyAgICAgIENhc2UgMSAoc2luZ2xlIHJncm91 cCk6DQo+ICsgLi4uDQo+ICsgXzEwID0gKHVuc2lnbmVkIGxvbmcpIGNvdW50 XzEyKEQpOw0KPiArIC4uLg0KPiArICMgaXZ0bXBfOSA9IFBISSA8aXZ0bXBf MzUoNiksIF8xMCg1KT4NCj4gKyBfMzYgPSBNSU5fRVhQUiA8aXZ0bXBfOSwg UE9MWV9JTlRfQ1NUIFs0LCA0XT47DQo+ICsgLi4uDQo+ICsgdmVjdF9fNC44 XzI4ID0gLkxFTl9MT0FEIChfMTcsIDMyQiwgXzM2LCAwKTsNCj4gKyAuLi4N Cj4gKyBpdnRtcF8zNSA9IGl2dG1wXzkgLSBfMzY7DQo+ICsgLi4uDQo+ICsg aWYgKGl2dG1wXzM1ICE9IDApDQo+ICsgICBnb3RvIDxiYiA0PjsgWzgzLjMz JV0NCj4gKyBlbHNlDQo+ICsgICBnb3RvIDxiYiA1PjsgWzE2LjY3JV0NCj4g Kw0KPiArICAgICAgQ2FzZSAyIChTTFAgbXVsdGlwbGUgcmdyb3VwKToNCj4g KyAuLi4NCj4gKyBfMzggPSAodW5zaWduZWQgbG9uZykgbl8xMihEKTsNCj4g KyBfMzkgPSBfMzggKiAyOw0KPiArIF80MCA9IE1BWF9FWFBSIDxfMzksIDE2 PjsNCj4gKyBfNDEgPSBfNDAgKyAxODQ0Njc0NDA3MzcwOTU1MTYwMDsNCiAN CkVhc2llciB0byByZWFkIGFzOg0KIA0KICBfNDEgPSBfNDAgLSAxNg0KIA0K KHdoaWNoIG1pZ2h0IG5vdCBiZSB2YWxpZCBnaW1wbGUsIGJ1dCBwc2V1ZG9j b2RlIGlzIGdvb2QgZW5vdWdoKS4NCiANCj4gKyAuLi4NCj4gKyAjIGl2dG1w XzQyID0gUEhJIDxpdnRtcF80Myg0KSwgXzQxKDMpPg0KPiArICMgaXZ0bXBf NDUgPSBQSEkgPGl2dG1wXzQ2KDQpLCBfMzkoMyk+DQo+ICsgLi4uDQo+ICsg XzQ0ID0gTUlOX0VYUFIgPGl2dG1wXzQyLCAzMj47DQo+ICsgXzQ3ID0gTUlO X0VYUFIgPGl2dG1wXzQ1LCAzMj47DQo+ICsgLi4uDQo+ICsgLkxFTl9TVE9S RSAoXzYsIDhCLCBfNDcsIC4uLik7DQo+ICsgLi4uDQo+ICsgLkxFTl9TVE9S RSAoXzI1LCA4QiwgXzQ0LCAuLi4pOw0KPiArIF8zMyA9IF80NyAvIDI7DQo+ ICsgLi4uDQo+ICsgLkxFTl9TVE9SRSAoXzgsIDE2QiwgXzMzLCAuLi4pOw0K PiArIF8zNiA9IF80NCAvIDI7DQo+ICsgLi4uDQo+ICsgLkxFTl9TVE9SRSAo XzE1LCAxNkIsIF8zNiwgLi4uKTsNCj4gKyBpdnRtcF80NiA9IGl2dG1wXzQ1 IC0gXzQ3Ow0KPiArIGl2dG1wXzQzID0gaXZ0bXBfNDIgLSBfNDQ7DQo+ICsg Li4uDQo+ICsgaWYgKGl2dG1wXzQ2ICE9IDApDQo+ICsgICBnb3RvIDxiYiA0 PjsgWzgzLjMzJV0NCj4gKyBlbHNlDQo+ICsgICBnb3RvIDxiYiA1PjsgWzE2 LjY3JV0NCiANClRoZSBleGFtcGxlcyBhcmUgZ29vZCwgYnV0IHRoaXMgb25l IG1hZGUgbWUgd29uZGVyOiB3aHkgaXMgdGhlDQphZGp1c3RtZW50IG1hZGUg dG8gdGhlIGxpbWl0IChuYW1lbHkgMTYsIHRoZSBnYXAgYmV0d2VlbiBfMzkg YW5kIF80MSkNCmRpZmZlcmVudCBmcm9tIHRoZSBsaW1pdHMgaW1wb3NlZCBi eSB0aGUgTUlOX0VYUFIgKDMyKT8gIEFuZCBJIHRoaW5rDQp0aGUgYW5zd2Vy IGlzIHRoYXQ6DQogDQotIF80NyBjb3VudHMgdGhlIG51bWJlciBvZiBlbGVt ZW50cyBwcm9jZXNzZWQgYnkgdGhlIGxvb3AgaW4gdG90YWwsDQogIGluY2x1 ZGluZyB0aGUgdmVjdG9ycyB1bmRlciB0aGUgY29udHJvbCBvZiBfNDQNCiAN Ci0gXzQ0IGNvdW50cyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnRyb2xs ZWQgYnkgXzQ3IGluIHRoZSBuZXh0DQogIGl0ZXJhdGlvbiBvZiB0aGUgdmVj dG9yIGxvb3AgKGlmIHRoZXJlIGlzIG9uZSkNCiANCkFuZCB0aGF0J3MgbmVl ZGVkIHRvIGFsbG93IHRoZSBJVnMgdG8gYmUgdXBkYXRlZCBpbmRlcGVuZGVu dGx5Lg0KIA0KVGhlIGRpZmZpY3VsdHkgd2l0aCB0aGlzIGlzIHRoYXQgdGhl IGxlbl9sb2FkKiBhbmQgbGVuX3N0b3JlKg0Kb3B0YWJzIGN1cnJlbnRseSBz YXkgdGhhdCB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZCBpZiB0aGUNCmxl bmd0aCBhcmd1bWVudCBpcyBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiBh IHZlY3Rvci4NClNvIEkgdGhpbmsgdXNpbmcgdGhlc2UgdmFsdWVzIG9mIF80 NyBhbmQgXzQ0IGluIHRoZSAuTEVOX1NUT1JFcw0KaXMgcmVseWluZyBvbiB1 bmRlZmluZWQgYmVoYXZpb3VyLg0KIA0KSGF2ZW4ndCBoYWQgdGltZSB0byB0 aGluayBhYm91dCB0aGUgY29uc2VxdWVuY2VzIG9mIHRoYXQgeWV0LA0KYnV0 IHdhbnRlZCB0byBzZW5kIHNvbWV0aGluZyBvdXQgc29vbmVyIHJhdGhlciB0 aGFuIGxhdGVyLg0KIA0KPiArDQo+ICsgICAgICBDYXNlIDMgKG5vbi1TTFAg bXVsdGlwbGUgcmdyb3VwKToNCj4gKyAuLi4NCj4gKyBfMzggPSAodW5zaWdu ZWQgbG9uZykgbl8xMihEKTsNCj4gKyAuLi4NCj4gKyAjIGl2dG1wXzM4ID0g UEhJIDxpdnRtcF8zOSgzKSwgMTAwKDIpPg0KPiArIC4uLg0KPiArIF80MCA9 IE1JTl9FWFBSIDxpdnRtcF8zOCwgUE9MWV9JTlRfQ1NUIFs4LCA4XT47DQo+ ICsgbG9vcF9sZW5fMjEgPSBNSU5fRVhQUiA8XzQwLCBQT0xZX0lOVF9DU1Qg WzIsIDJdPjsNCj4gKyBfNDEgPSBfNDAgLSBsb29wX2xlbl8yMTsNCj4gKyBs b29wX2xlbl8yMCA9IE1JTl9FWFBSIDxfNDEsIFBPTFlfSU5UX0NTVCBbMiwg Ml0+Ow0KPiArIF80MiA9IF80MCAtIGxvb3BfbGVuXzIwOw0KPiArIGxvb3Bf bGVuXzE5ID0gTUlOX0VYUFIgPF80MiwgUE9MWV9JTlRfQ1NUIFsyLCAyXT47 DQo+ICsgXzQzID0gXzQwIC0gbG9vcF9sZW5fMTk7DQo+ICsgbG9vcF9sZW5f MTYgPSBNSU5fRVhQUiA8XzQzLCBQT0xZX0lOVF9DU1QgWzIsIDJdPjsNCj4g KyAuLi4NCj4gKyB2ZWN0X180LjhfMTUgPSAuTEVOX0xPQUQgKF82LCA2NEIs IGxvb3BfbGVuXzIxLCAwKTsNCj4gKyAuLi4NCj4gKyB2ZWN0X180LjlfOCA9 IC5MRU5fTE9BRCAoXzEzLCA2NEIsIGxvb3BfbGVuXzIwLCAwKTsNCj4gKyAu Li4NCj4gKyB2ZWN0X180LjEwXzI4ID0gLkxFTl9MT0FEIChfNDYsIDY0Qiwg bG9vcF9sZW5fMTksIDApOw0KPiArIC4uLg0KPiArIHZlY3RfXzQuMTFfMzAg PSAuTEVOX0xPQUQgKF80OSwgNjRCLCBsb29wX2xlbl8xNiwgMCk7DQo+ICsg dmVjdF9fNy4xM18zMSA9IFZFQ19QQUNLX1RSVU5DX0VYUFIgPHZlY3RfXzQu OF8xNSwgdmVjdF9fNC45Xzg+Ow0KPiArIHZlY3RfXzcuMTNfMzIgPSBWRUNf UEFDS19UUlVOQ19FWFBSIDx2ZWN0X180LjEwXzI4LCB2ZWN0X180LjExXzMw PjsNCj4gKyB2ZWN0X183LjEyXzMzID0gVkVDX1BBQ0tfVFJVTkNfRVhQUiA8 dmVjdF9fNy4xM18zMSwgdmVjdF9fNy4xM18zMj47DQo+ICsgLi4uDQo+ICsg LkxFTl9TVE9SRSAoXzE0LCAxNkIsIF80MCwgdmVjdF9fNy4xMl8zMywgMCk7 DQo+ICsgaXZ0bXBfMzkgPSBpdnRtcF8zOCAtIF80MDsNCj4gKyAuLi4NCj4g KyBpZiAoaXZ0bXBfMzkgIT0gMCkNCj4gKyAgIGdvdG8gPGJiIDM+OyBbOTIu MzElXQ0KPiArIGVsc2UNCj4gKyAgIGdvdG8gPGJiIDQ+OyBbNy42OSVdDQo+ ICsgICAqLw0KPiArICAgY3JlYXRlX2l2ICh0aGlzX3Rlc3RfbGltaXQsIE1J TlVTX0VYUFIsIGN0cmwsIE5VTExfVFJFRSwgbG9vcCwNCj4gKyAgICAgICZp bmNyX2dzaSwgaW5zZXJ0X2FmdGVyLCAmaW5kZXhfYmVmb3JlX2luY3IsDQo+ ICsgICAgICAmaW5kZXhfYWZ0ZXJfaW5jcik7DQo+ICsgICB0cmVlIHN0ZXAg PSBnaW1wbGVfYnVpbGQgKGhlYWRlcl9zZXEsIE1JTl9FWFBSLCBpdl90eXBl LA0KPiArICAgICBpbmRleF9iZWZvcmVfaW5jciwgbml0ZW1zX3N0ZXApOw0K PiArICAgZ2Fzc2lnbiAqYXNzaWduID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAo Y3RybCwgc3RlcCk7DQo+ICsgICBnaW1wbGVfc2VxX2FkZF9zdG10IChoZWFk ZXJfc2VxLCBhc3NpZ24pOw0KPiArICAgbmV4dF9jdHJsID0gaW5kZXhfYWZ0 ZXJfaW5jcjsNCj4gKyAgIGNvbnRpbnVlOw0KPiArIH0NCj4gKw0KPiAgICAg ICAgLyogQ3JlYXRlIHRoZSBpbml0aWFsIGNvbnRyb2wuICBGaXJzdCBpbmNs dWRlIGFsbCBpdGVtcyB0aGF0DQo+ICBhcmUgd2l0aGluIHRoZSBsb29wIGxp bWl0LiAgKi8NCj4gICAgICAgIHRyZWUgaW5pdF9jdHJsID0gTlVMTF9UUkVF Ow0KPiBAQCAtNzA0LDYgKzg1Nyw3IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0 aW9uX3BhcnRpYWxfdmVjdG9ycyAoY2xhc3MgbG9vcCAqbG9vcCwNCj4gIA0K PiAgICBib29sIHVzZV9tYXNrc19wID0gTE9PUF9WSU5GT19GVUxMWV9NQVNL RURfUCAobG9vcF92aW5mbyk7DQo+ICAgIHRyZWUgY29tcGFyZV90eXBlID0g TE9PUF9WSU5GT19SR1JPVVBfQ09NUEFSRV9UWVBFIChsb29wX3ZpbmZvKTsN Cj4gKyAgdHJlZSBpdl90eXBlID0gTE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQ RSAobG9vcF92aW5mbyk7DQo+ICAgIHVuc2lnbmVkIGludCBjb21wYXJlX3By ZWNpc2lvbiA9IFRZUEVfUFJFQ0lTSU9OIChjb21wYXJlX3R5cGUpOw0KPiAg ICB0cmVlIG9yaWdfbml0ZXJzID0gbml0ZXJzOw0KPiAgDQo+IEBAIC03NTMs NiArOTA3LDE5IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxf dmVjdG9ycyAoY2xhc3MgbG9vcCAqbG9vcCwNCj4gICAgICAgIGNvbnRpbnVl Ow0KPiAgICB9DQo+ICANCj4gKyBpZiAoTE9PUF9WSU5GT19VU0lOR19ERUNS RU1FTlRJTkdfSVZfUCAobG9vcF92aW5mbykNCj4gKyAgICAgJiYgcmdjLT5t YXhfbnNjYWxhcnNfcGVyX2l0ZXIgPT0gMQ0KPiArICAgICAmJiByZ2MgIT0g JkxPT1BfVklORk9fTEVOUyAobG9vcF92aW5mbylbMF0pDQo+ICsgICB7DQo+ ICsgICAgIHJncm91cF9jb250cm9scyAqc3ViX3JnYw0KPiArICAgICAgID0g JigqY29udHJvbHMpW25tYXNrcyAvIHJnYy0+Y29udHJvbHMubGVuZ3RoICgp IC0gMV07DQo+ICsgICAgIGlmICghc3ViX3JnYy0+Y29udHJvbHMuaXNfZW1w dHkgKCkpDQo+ICsgICAgICAgew0KPiArIHZlY3RfYWRqdXN0X2xvb3BfbGVu cyAoaXZfdHlwZSwgJmhlYWRlcl9zZXEsIHJnYywgc3ViX3JnYyk7DQo+ICsg Y29udGludWU7DQo+ICsgICAgICAgfQ0KPiArICAgfQ0KPiArDQo+ICAvKiBT ZWUgd2hldGhlciB6ZXJvLWJhc2VkIElWIHdvdWxkIGV2ZXIgZ2VuZXJhdGUg YWxsLWZhbHNlIG1hc2tzDQo+ICAgICBvciB6ZXJvIGxlbmd0aCBiZWZvcmUg d3JhcHBpbmcgYXJvdW5kLiAgKi8NCj4gIGJvb2wgbWlnaHRfd3JhcF9wID0g dmVjdF9yZ3JvdXBfaXZfbWlnaHRfd3JhcF9wIChsb29wX3ZpbmZvLCByZ2Mp Ow0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGIvZ2Nj L3RyZWUtdmVjdC1sb29wLmNjDQo+IGluZGV4IGVkMDE2NmZlZGFiLi40NGMw ODI5YTgyMyAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNj DQo+ICsrKyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiBAQCAtOTczLDYg Kzk3Myw3IEBAIF9sb29wX3ZlY19pbmZvOjpfbG9vcF92ZWNfaW5mbyAoY2xh c3MgbG9vcCAqbG9vcF9pbiwgdmVjX2luZm9fc2hhcmVkICpzaGFyZWQpDQo+ ICAgICAgdmVjdG9yaXphYmxlIChmYWxzZSksDQo+ICAgICAgY2FuX3VzZV9w YXJ0aWFsX3ZlY3RvcnNfcCAocGFyYW1fdmVjdF9wYXJ0aWFsX3ZlY3Rvcl91 c2FnZSAhPSAwKSwNCj4gICAgICB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCAo ZmFsc2UpLA0KPiArICAgIHVzaW5nX2RlY3JlbWVudGluZ19pdl9wIChmYWxz ZSksDQo+ICAgICAgZXBpbF91c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCAoZmFs c2UpLA0KPiAgICAgIHBhcnRpYWxfbG9hZF9zdG9yZV9iaWFzICgwKSwNCj4g ICAgICBwZWVsaW5nX2Zvcl9nYXBzIChmYWxzZSksDQo+IEBAIC0yNzI1LDYg KzI3MjYsMTcgQEAgc3RhcnRfb3ZlcjoNCj4gICAgICAgICYmICF2ZWN0X3Zl cmlmeV9sb29wX2xlbnMgKGxvb3BfdmluZm8pKQ0KPiAgICAgIExPT1BfVklO Rk9fQ0FOX1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUCAobG9vcF92aW5mbykgPSBm YWxzZTsNCj4gIA0KPiArICAvKiBJZiB3ZSdyZSB2ZWN0b3JpemluZyBhbiBs b29wIHRoYXQgdXNlcyBsZW5ndGggImNvbnRyb2xzIiBhbmQNCj4gKyAgICAg Y2FuIGl0ZXJhdGUgbW9yZSB0aGFuIG9uY2UsIHdlIGFwcGx5IGRlY3JlbWVu dGluZyBJViBhcHByb2FjaA0KPiArICAgICBpbiBsb29wIGNvbnRyb2wuICAq Lw0KPiArICBpZiAoTE9PUF9WSU5GT19DQU5fVVNFX1BBUlRJQUxfVkVDVE9S U19QIChsb29wX3ZpbmZvKQ0KPiArICAgICAgJiYgIUxPT1BfVklORk9fTEVO UyAobG9vcF92aW5mbykuaXNfZW1wdHkgKCkNCj4gKyAgICAgICYmICEoTE9P UF9WSU5GT19OSVRFUlNfS05PV05fUCAobG9vcF92aW5mbykNCj4gKyAgICAm JiBMT09QX1ZJTkZPX1ZFQ1RfRkFDVE9SIChsb29wX3ZpbmZvKS5pc19jb25z dGFudCAoKQ0KPiArICAgICYmIExPT1BfVklORk9fSU5UX05JVEVSUyAobG9v cF92aW5mbykNCj4gKyA8PSBMT09QX1ZJTkZPX1ZFQ1RfRkFDVE9SIChsb29w X3ZpbmZvKS5pc19jb25zdGFudCAoKSkpDQogDQpJdCB3b3VsZCBiZSBiZXR0 ZXIgdG8gdXNlIGtub3duX2xlIGhlcmUsIHdpdGhvdXQgY2hlY2tpbmcgd2hl dGhlciB0aGUNClZGIGlzIGNvbnN0YW50Lg0KIA0KVGhhbmtzLA0KUmljaGFy ZA0KIA0KPiArICAgIExPT1BfVklORk9fVVNJTkdfREVDUkVNRU5USU5HX0lW X1AgKGxvb3BfdmluZm8pID0gdHJ1ZTsNCj4gKw0KPiAgICAvKiBJZiB3ZSdy ZSB2ZWN0b3JpemluZyBhbiBlcGlsb2d1ZSBsb29wLCB0aGUgdmVjdG9yaXpl ZCBsb29wIGVpdGhlciBuZWVkcw0KPiAgICAgICB0byBiZSBhYmxlIHRvIGhh bmRsZSBmZXdlciB0aGFuIFZGIHNjYWxhcnMsIG9yIG5lZWRzIHRvIGhhdmUg YSBsb3dlciBWRg0KPiAgICAgICB0aGFuIHRoZSBtYWluIGxvb3AuICAqLw0K PiBAQCAtMTAzNjQsMTIgKzEwMzc2LDE0IEBAIHZlY3RfcmVjb3JkX2xvb3Bf bGVuIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIHZlY19sb29wX2xlbnMg KmxlbnMsDQo+ICAgICByZ3JvdXAgdGhhdCBvcGVyYXRlcyBvbiBOVkVDVE9S UyB2ZWN0b3JzLCB3aGVyZSAwIDw9IElOREVYIDwgTlZFQ1RPUlMuICAqLw0K PiAgDQo+ICB0cmVlDQo+IC12ZWN0X2dldF9sb29wX2xlbiAobG9vcF92ZWNf aW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KPiAtICAg IHVuc2lnbmVkIGludCBudmVjdG9ycywgdW5zaWduZWQgaW50IGluZGV4KQ0K PiArdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5m bywgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaSwNCj4gKyAgICB2ZWNfbG9v cF9sZW5zICpsZW5zLCB1bnNpZ25lZCBpbnQgbnZlY3RvcnMsIHRyZWUgdmVj dHlwZSwNCj4gKyAgICB1bnNpZ25lZCBpbnQgaW5kZXgpDQo+ICB7DQo+ICAg IHJncm91cF9jb250cm9scyAqcmdsID0gJigqbGVucylbbnZlY3RvcnMgLSAx XTsNCj4gICAgYm9vbCB1c2VfYmlhc19hZGp1c3RlZF9sZW4gPQ0KPiAgICAg IExPT1BfVklORk9fUEFSVElBTF9MT0FEX1NUT1JFX0JJQVMgKGxvb3Bfdmlu Zm8pICE9IDA7DQo+ICsgIHRyZWUgaXZfdHlwZSA9IExPT1BfVklORk9fUkdS T1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pOw0KPiAgDQo+ICAgIC8qIFBvcHVs YXRlIHRoZSByZ3JvdXAncyBsZW4gYXJyYXksIGlmIHRoaXMgaXMgdGhlIGZp cnN0IHRpbWUgd2UndmUNCj4gICAgICAgdXNlZCBpdC4gICovDQo+IEBAIC0x MDQwMCw2ICsxMDQxNCwyNiBAQCB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92 ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KPiAg DQo+ICAgIGlmICh1c2VfYmlhc19hZGp1c3RlZF9sZW4pDQo+ICAgICAgcmV0 dXJuIHJnbC0+Ymlhc19hZGp1c3RlZF9jdHJsOw0KPiArICBlbHNlIGlmIChM T09QX1ZJTkZPX1VTSU5HX0RFQ1JFTUVOVElOR19JVl9QIChsb29wX3ZpbmZv KSkNCj4gKyAgICB7DQo+ICsgICAgICB0cmVlIGxvb3BfbGVuID0gcmdsLT5j b250cm9sc1tpbmRleF07DQo+ICsgICAgICBwb2x5X2ludDY0IG51bml0czEg PSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAocmdsLT50eXBlKTsNCj4gKyAgICAg IHBvbHlfaW50NjQgbnVuaXRzMiA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTICh2 ZWN0eXBlKTsNCj4gKyAgICAgIGlmIChtYXliZV9uZSAobnVuaXRzMSwgbnVu aXRzMikpDQo+ICsgew0KPiArICAgLyogQSBsb29wIGxlbiBmb3IgZGF0YSB0 eXBlIFggY2FuIGJlIHJldXNlZCBmb3IgZGF0YSB0eXBlIFkNCj4gKyAgICAg IGlmIFggaGFzIE4gdGltZXMgbW9yZSBlbGVtZW50cyB0aGFuIFkgYW5kIGlm IFkncyBlbGVtZW50cw0KPiArICAgICAgYXJlIE4gdGltZXMgYmlnZ2VyIHRo YW4gWCdzLiAgKi8NCj4gKyAgIGdjY19hc3NlcnQgKG11bHRpcGxlX3AgKG51 bml0czEsIG51bml0czIpKTsNCj4gKyAgIHVuc2lnbmVkIGludCBmYWN0b3Ig PSBleGFjdF9kaXYgKG51bml0czEsIG51bml0czIpLnRvX2NvbnN0YW50ICgp Ow0KPiArICAgZ2ltcGxlX3NlcSBzZXEgPSBOVUxMOw0KPiArICAgbG9vcF9s ZW4gPSBnaW1wbGVfYnVpbGQgKCZzZXEsIFJESVZfRVhQUiwgaXZfdHlwZSwg bG9vcF9sZW4sDQo+ICsgICAgYnVpbGRfaW50X2NzdCAoaXZfdHlwZSwgZmFj dG9yKSk7DQo+ICsgICBpZiAoc2VxKQ0KPiArICAgICBnc2lfaW5zZXJ0X3Nl cV9iZWZvcmUgKGdzaSwgc2VxLCBHU0lfU0FNRV9TVE1UKTsNCj4gKyB9DQo+ ICsgICAgICByZXR1cm4gbG9vcF9sZW47DQo+ICsgICAgfQ0KPiAgICBlbHNl DQo+ICAgICAgcmV0dXJuIHJnbC0+Y29udHJvbHNbaW5kZXhdOw0KPiAgfQ0K PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90 cmVlLXZlY3Qtc3RtdHMuY2MNCj4gaW5kZXggNzMxMzE5MWIwZGIuLmI1ZTRi YzU5MzU1IDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNj DQo+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gQEAgLTg3OTUs OCArODc5NSw5IEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAodmVjX2luZm8gKnZp bmZvLA0KPiAgICAgICAgZWxzZSBpZiAobG9vcF9sZW5zKQ0KPiAgew0KPiAg ICB0cmVlIGZpbmFsX2xlbg0KPiAtICAgICA9IHZlY3RfZ2V0X2xvb3BfbGVu IChsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQo+IC0gdmVjX251bSAqIG5jb3Bp ZXMsIHZlY19udW0gKiBqICsgaSk7DQo+ICsgICAgID0gdmVjdF9nZXRfbG9v cF9sZW4gKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5zLA0KPiArIHZlY19u dW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KPiArIHZlY19udW0gKiBqICsgaSk7 DQo+ICAgIHRyZWUgcHRyID0gYnVpbGRfaW50X2NzdCAocmVmX3R5cGUsIGFs aWduICogQklUU19QRVJfVU5JVCk7DQo+ICAgIG1hY2hpbmVfbW9kZSB2bW9k ZSA9IFRZUEVfTU9ERSAodmVjdHlwZSk7DQo+ICAgIG9wdF9tYWNoaW5lX21v ZGUgbmV3X292bW9kZQ0KPiBAQCAtMTAxNTEsOCArMTAxNTIsOCBAQCB2ZWN0 b3JpemFibGVfbG9hZCAodmVjX2luZm8gKnZpbmZvLA0KPiAgICAgIGVsc2Ug aWYgKGxvb3BfbGVucyAmJiBtZW1vcnlfYWNjZXNzX3R5cGUgIT0gVk1BVF9J TlZBUklBTlQpDQo+ICAgICAgICB7DQo+ICB0cmVlIGZpbmFsX2xlbg0KPiAt ICAgPSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92aW5mbywgbG9vcF9sZW5z LA0KPiAtICAgICAgICB2ZWNfbnVtICogbmNvcGllcywNCj4gKyAgID0gdmVj dF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5zLA0K PiArICAgICAgICB2ZWNfbnVtICogbmNvcGllcywgdmVjdHlwZSwNCj4gICAg ICAgICB2ZWNfbnVtICogaiArIGkpOw0KPiAgdHJlZSBwdHIgPSBidWlsZF9p bnRfY3N0IChyZWZfdHlwZSwNCj4gICAgYWxpZ24gKiBCSVRTX1BFUl9VTklU KTsNCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIuaCBiL2dj Yy90cmVlLXZlY3Rvcml6ZXIuaA0KPiBpbmRleCA5Y2YyZmIyM2ZlMy4uOGFm M2IzNTMyNGUgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3Rvcml6ZXIu aA0KPiArKysgYi9nY2MvdHJlZS12ZWN0b3JpemVyLmgNCj4gQEAgLTgxOCw2 ICs4MTgsMTMgQEAgcHVibGljOg0KPiAgICAgICB0aGUgdmVjdG9yIGxvb3Ag Y2FuIGhhbmRsZSBmZXdlciB0aGFuIFZGIHNjYWxhcnMuICAqLw0KPiAgICBi b29sIHVzaW5nX3BhcnRpYWxfdmVjdG9yc19wOw0KPiAgDQo+ICsgIC8qIFRy dWUgaWYgd2UndmUgZGVjaWRlZCB0byB1c2UgYSBkZWNyZW1lbnRpbmcgbG9v cCBjb250cm9sIElWIHRoYXQgY291bnRzDQo+ICsgICAgIHNjYWxhcnMuIFRo aXMgY2FuIGJlIGRvbmUgZm9yIGFueSBsb29wIHRoYXQ6DQo+ICsNCj4gKyAo YSkgdXNlcyBsZW5ndGggImNvbnRyb2xzIjsgYW5kDQo+ICsgKGIpIGNhbiBp dGVyYXRlIG1vcmUgdGhhbiBvbmNlLiAgKi8NCj4gKyAgYm9vbCB1c2luZ19k ZWNyZW1lbnRpbmdfaXZfcDsNCj4gKw0KPiAgICAvKiBUcnVlIGlmIHdlJ3Zl IGRlY2lkZWQgdG8gdXNlIHBhcnRpYWxseS1wb3B1bGF0ZWQgdmVjdG9ycyBm b3IgdGhlDQo+ICAgICAgIGVwaWxvZ3VlIG9mIGxvb3AuICAqLw0KPiAgICBi b29sIGVwaWxfdXNpbmdfcGFydGlhbF92ZWN0b3JzX3A7DQo+IEBAIC04OTAs NiArODk3LDcgQEAgcHVibGljOg0KPiAgI2RlZmluZSBMT09QX1ZJTkZPX1ZF Q1RPUklaQUJMRV9QKEwpICAgICAgIChMKS0+dmVjdG9yaXphYmxlDQo+ICAj ZGVmaW5lIExPT1BfVklORk9fQ0FOX1VTRV9QQVJUSUFMX1ZFQ1RPUlNfUChM KSAoTCktPmNhbl91c2VfcGFydGlhbF92ZWN0b3JzX3ANCj4gICNkZWZpbmUg TE9PUF9WSU5GT19VU0lOR19QQVJUSUFMX1ZFQ1RPUlNfUChMKSAoTCktPnVz aW5nX3BhcnRpYWxfdmVjdG9yc19wDQo+ICsjZGVmaW5lIExPT1BfVklORk9f VVNJTkdfREVDUkVNRU5USU5HX0lWX1AoTCkgKEwpLT51c2luZ19kZWNyZW1l bnRpbmdfaXZfcA0KPiAgI2RlZmluZSBMT09QX1ZJTkZPX0VQSUxfVVNJTkdf UEFSVElBTF9WRUNUT1JTX1AoTCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gICAgKEwpLT5lcGlsX3VzaW5nX3BhcnRpYWxfdmVjdG9yc19w DQo+ICAjZGVmaW5lIExPT1BfVklORk9fUEFSVElBTF9MT0FEX1NUT1JFX0JJ QVMoTCkgKEwpLT5wYXJ0aWFsX2xvYWRfc3RvcmVfYmlhcw0KPiBAQCAtMjI5 Myw4ICsyMzAxLDkgQEAgZXh0ZXJuIHRyZWUgdmVjdF9nZXRfbG9vcF9tYXNr IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqLCB2ZWNfbG9vcF9tYXNrcyAqLA0K PiAgdW5zaWduZWQgaW50LCB0cmVlLCB1bnNpZ25lZCBpbnQpOw0KPiAgZXh0 ZXJuIHZvaWQgdmVjdF9yZWNvcmRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8s IHZlY19sb29wX2xlbnMgKiwgdW5zaWduZWQgaW50LA0KPiAgICB0cmVlLCB1 bnNpZ25lZCBpbnQpOw0KPiAtZXh0ZXJuIHRyZWUgdmVjdF9nZXRfbG9vcF9s ZW4gKGxvb3BfdmVjX2luZm8sIHZlY19sb29wX2xlbnMgKiwgdW5zaWduZWQg aW50LA0KPiAtICAgICAgICB1bnNpZ25lZCBpbnQpOw0KPiArZXh0ZXJuIHRy ZWUgdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8sIGdpbXBsZV9z dG10X2l0ZXJhdG9yICosDQo+ICsgICAgICAgIHZlY19sb29wX2xlbnMgKiwg dW5zaWduZWQgaW50LCB0cmVlLA0KPiArICAgICAgICB1bnNpZ25lZCBpbnQp Ow0KPiAgZXh0ZXJuIGdpbXBsZV9zZXEgdmVjdF9nZW5fbGVuICh0cmVlLCB0 cmVlLCB0cmVlLCB0cmVlKTsNCj4gIGV4dGVybiBzdG10X3ZlY19pbmZvIGlu Zm9fZm9yX3JlZHVjdGlvbiAodmVjX2luZm8gKiwgc3RtdF92ZWNfaW5mbyk7 DQo+ICBleHRlcm4gYm9vbCByZWR1Y3Rpb25fZm5fZm9yX3NjYWxhcl9jb2Rl IChjb2RlX2hlbHBlciwgaW50ZXJuYWxfZm4gKik7DQogDQo= ------=_001_NextPart540014012320_=------