From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgau1.qq.com (smtpbgau1.qq.com [54.206.16.166]) by sourceware.org (Postfix) with ESMTPS id 8A9013858D1E for ; Fri, 10 Nov 2023 10:30:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8A9013858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8A9013858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.206.16.166 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699612217; cv=none; b=A62Jvw+BeaAYiVNqro3BT9PdJ5HXJD6/yhR9uaGRC6ssQFabjUPCYU0eVXggiBFknfGMBn+l2XO5EjS/orYkgDrp+fQnhJLvUP/faWJnAsSh3VLvs2FBKdi0YuaQBbdRjKFmSnP2ZO3uM7h4myI1I+WNh0sH3/Hqq8bMDRNYctg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699612217; c=relaxed/simple; bh=HhdOWmBooqUa8DlGhbR+jnhobPGp+bgQ1rl/StFhYrc=; h=Date:From:To:Subject:Mime-Version:Message-ID; b=BXhDUbRFjoEcrVeXyMWryhyL3bPeTsWo44DYa+U/fjT57ZI9bTC8hZ6hx+/OP8Sx8uZthyPJ9Nl6JbfJ5m0Gvc6d1cbET6pbH2XV1lrA/PKcjUuW5+Uo/Sy098eC6G4I89MPJkEHkZDqB6OLTD+NJN54ALCPIi2f3M4lLzyx9+k= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp78t1699612205ta4heam5 Received: from LAPTOP-EPITNQBU ( [121.35.180.247]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 10 Nov 2023 18:30:04 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: W+onFc5Tw4Mip/sfWly/LPQ1sup9L/2bdFlIHfSvnx5A23eFIcFigGLOy0YNG 8BOVBiF0ayVf23fddXFHFKwpvWem/HFjXyOeWmMGgYnCVBUrTSykTBbnlvbuMuUYaGQJ+7y 9G8ZvJuEgeebIeReE9XmbcqzzR9aVSKuJocRV4Y3lQuJTIFHbzDPtOSU0BkMwCfPL4r2CWy VEMYhftXJ1CI18pSpqbs9O94iUFDl3aZy40fHHmZFn4daSTzBWRL0hocgLUIpJyA2rPfQnh SeSmnQW2LjmYGHtUgJkhevEBd31tgGXgU8W0YWp0xRlTxGP5U6r9lu9fi76Cv/DQfb7MtbR jwB9C1D3YonLyt1Frgs9BgQs/+w3f3lTkHhZZkuhg3VmRE4GHYEe6le9/w5t4rvI7QWGOpd mIFrDI9hfnS/nD1VqiqVeo1jJZZuwCGfOg/z4YXM9s0= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 8858860682638920523 Date: Fri, 10 Nov 2023 18:30:03 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: "Richard Biener" , gcc-patches , richard.sandiford , kito.cheng , Kito.cheng Subject: Re: Re: [PATCH] Middle-end: Fix bug of induction variable vectorization for RVV References: <20231108105317.1786716-1-juzhe.zhong@rivai.ai>, , , , <13B9AC74355D1006+2023111018134955379425@rivai.ai>, X-Priority: 3 X-GUID: 712FF4BE-3D74-4814-BE5F-F3D8A0217C9B X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart837133154442_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,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_NextPart837133154442_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 VGhhbmtzIGEgbG90LiBJIHRoaW5rIEkgZmluYWxseSB1bmRlcnN0YW5kIHdo YXQgeW91IG1lYW4gbm93IDopLg0KDQpDb3VsZCB5b3UgY29uZmlybSB0aGlz IGZvbGxvd2luZyBjb2Rlczo/DQoNCmRpZmYgLS1naXQgYS9nY2MvdHJlZS12 ZWN0LWxvb3AuY2MgYi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCmluZGV4IDhh YmMxOTM3ZDc0Li41NjE1YjE2YmRjZCAxMDA2NDQNCi0tLSBhL2djYy90cmVl LXZlY3QtbG9vcC5jYw0KKysrIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQpA QCAtMTAzMDYsMTAgKzEwMzA2LDM5IEBAIHZlY3Rvcml6YWJsZV9pbmR1Y3Rp b24gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCg0KDQogICAvKiBDcmVh dGUgdGhlIHZlY3RvciB0aGF0IGhvbGRzIHRoZSBzdGVwIG9mIHRoZSBpbmR1 Y3Rpb24uICAqLw0KKyAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKnN0ZXBfaXZf c2kgPSBOVUxMOw0KICAgaWYgKG5lc3RlZF9pbl92ZWN0X2xvb3ApDQotICAg IC8qIGl2X2xvb3AgaXMgbmVzdGVkIGluIHRoZSBsb29wIHRvIGJlIHZlY3Rv cml6ZWQuIEdlbmVyYXRlOg0KLSAgICAgICB2ZWNfc3RlcCA9IFtTLCBTLCBT LCBTXSAgKi8NCi0gICAgbmV3X25hbWUgPSBzdGVwX2V4cHI7DQorICAgIHsN CisgICAgICAvKiBpdl9sb29wIGlzIG5lc3RlZCBpbiB0aGUgbG9vcCB0byBi ZSB2ZWN0b3JpemVkLiBHZW5lcmF0ZToNCisgICAgICAgIHZlY19zdGVwID0g W1MsIFMsIFMsIFNdICAqLw0KKyAgICAgIG5ld19uYW1lID0gc3RlcF9leHBy Ow0KKyAgICAgIC8qIFdlIGV4cGVjdCBMT09QX1ZJTkZPX1VTSU5HX1NFTEVD VF9WTF9QIHRvIGJlIGZhbHNlIGluIG5lc3RlZCBsb29wLiAgKi8NCisgICAg ICBnY2NfYXNzZXJ0ICghTE9PUF9WSU5GT19VU0lOR19TRUxFQ1RfVkxfUCAo bG9vcF92aW5mbykpOw0KKyAgICB9DQorICBlbHNlIGlmIChMT09QX1ZJTkZP X1VTSU5HX1NFTEVDVF9WTF9QIChsb29wX3ZpbmZvKSkNCisgICAgew0KKyAg ICAgIC8qIFdoZW4gd2UncmUgdXNpbmcgbG9vcF9sZW4gcHJvZHVjZWQgYnkg U0VMRUNfVkwsIHRoZSBub24tZmluYWwNCisgICAgICAgIGl0ZXJhdGlvbnMg YXJlIG5vdCBhbHdheXMgcHJvY2Vzc2luZyBWRiBlbGVtZW50cy4gIFNvIHZl Y3Rvcml6ZQ0KKyAgICAgICAgaW5kdWN0aW9uIHZhcmlhYmxlIGluc3RlYWQg b2YNCisNCisgICAgICAgICAgXzIxID0gdmVjdF92ZWNfaXZfLjZfMjIgKyB7 IFZGLCAuLi4gfTsNCisNCisgICAgICAgIFdlIHNob3VsZCBnZW5lcmF0ZToN CisNCisgICAgICAgICAgXzM1ID0gLlNFTEVDVF9WTCAoaXZ0bXBfMzMsIFZG KTsNCisgICAgICAgICAgdmVjdF9jc3RfXzIyID0gW3ZlY19kdXBsaWNhdGVf ZXhwcl0gXzM1Ow0KKyAgICAgICAgICBfMjEgPSB2ZWN0X3ZlY19pdl8uNl8y MiArIHZlY3RfY3N0X18yMjsgICovDQorICAgICAgZ2ltcGxlX3NlcSBzZXEg PSBOVUxMOw0KKyAgICAgIHZlY19sb29wX2xlbnMgKmxlbnMgPSAmTE9PUF9W SU5GT19MRU5TIChsb29wX3ZpbmZvKTsNCisgICAgICB0cmVlIGxlbiA9IHZl Y3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBOVUxMLCBsZW5zLCAxLCB2 ZWN0eXBlLCAwLCAwKTsNCisgICAgICBleHByID0gZm9yY2VfZ2ltcGxlX29w ZXJhbmQgKGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChzdGVwX2V4cHIpLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2hhcmVfZXhwciAobGVuKSksDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZzZXEsIHRydWUsIE5VTExfVFJFRSk7DQorICAg ICAgbmV3X25hbWUgPSBnaW1wbGVfYnVpbGQgKCZzZXEsIE1VTFRfRVhQUiwg VFJFRV9UWVBFIChzdGVwX2V4cHIpLCBleHByLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0ZXBfZXhwcik7DQorICAgICAgZ3NpX2luc2Vy dF9zZXFfYmVmb3JlICgmc2ksIHNlcSwgR1NJX1NBTUVfU1RNVCk7DQorICAg ICAgc3RlcF9pdl9zaSA9ICZzaTsNCisgICAgfQ0KICAgZWxzZQ0KICAgICB7 DQogICAgICAgLyogaXZfbG9vcCBpcyB0aGUgbG9vcCB0byBiZSB2ZWN0b3Jp emVkLiBHZW5lcmF0ZToNCkBAIC0xMDMzNiw3ICsxMDM2NSw3IEBAIHZlY3Rv cml6YWJsZV9pbmR1Y3Rpb24gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywN CiAgICAgICAgICAgICAgfHwgVFJFRV9DT0RFIChuZXdfbmFtZSkgPT0gU1NB X05BTUUpOw0KICAgbmV3X3ZlYyA9IGJ1aWxkX3ZlY3Rvcl9mcm9tX3ZhbCAo c3RlcF92ZWN0eXBlLCB0KTsNCiAgIHZlY19zdGVwID0gdmVjdF9pbml0X3Zl Y3RvciAobG9vcF92aW5mbywgc3RtdF9pbmZvLA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5ld192ZWMsIHN0ZXBfdmVjdHlwZSwgTlVMTCk7 DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ZlYywgc3Rl cF92ZWN0eXBlLCBzdGVwX2l2X3NpKTsNCg0KDQogICAvKiBDcmVhdGUgdGhl IGZvbGxvd2luZyBkZWYtdXNlIGN5Y2xlOg0KQEAgLTEwMzgyLDYgKzEwNDEx LDggQEAgdmVjdG9yaXphYmxlX2luZHVjdGlvbiAobG9vcF92ZWNfaW5mbyBs b29wX3ZpbmZvLA0KICAgICAgIGdpbXBsZV9zZXEgc2VxID0gTlVMTDsNCiAg ICAgICAvKiBGT1JOT1cuIFRoaXMgcmVzdHJpY3Rpb24gc2hvdWxkIGJlIHJl bGF4ZWQuICAqLw0KICAgICAgIGdjY19hc3NlcnQgKCFuZXN0ZWRfaW5fdmVj dF9sb29wKTsNCisgICAgICAvKiBXZSBleHBlY3QgTE9PUF9WSU5GT19VU0lO R19TRUxFQ1RfVkxfUCB0byBiZSBmYWxzZSBpZiBuY29waWVzID4gMS4gICov DQorICAgICAgZ2NjX2Fzc2VydCAoIUxPT1BfVklORk9fVVNJTkdfU0VMRUNU X1ZMX1AgKGxvb3BfdmluZm8pKTsNCg0KDQpJZiBpdCBpcyBPayBmb3IgeW91 LiBJIGFtIGdvbm5hIHRlc3RpbmcgaXQgb24gWDg2IGJvb3RzdHJhcCArIHJl Z3Rlc3QuDQoNClRoYW5rcy4NCg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFp DQogDQpGcm9tOiBSaWNoYXJkIEJpZW5lcg0KRGF0ZTogMjAyMy0xMS0xMCAx ODoxOQ0KVG86IGp1emhlLnpob25nQHJpdmFpLmFpDQpDQzogUmljaGFyZCBC aWVuZXI7IGdjYy1wYXRjaGVzOyByaWNoYXJkLnNhbmRpZm9yZDsga2l0by5j aGVuZzsgS2l0by5jaGVuZw0KU3ViamVjdDogUmU6IFJlOiBbUEFUQ0hdIE1p ZGRsZS1lbmQ6IEZpeCBidWcgb2YgaW5kdWN0aW9uIHZhcmlhYmxlIHZlY3Rv cml6YXRpb24gZm9yIFJWVg0KT24gRnJpLCAxMCBOb3YgMjAyMywganV6aGUu emhvbmdAcml2YWkuYWkgd3JvdGU6DQogDQo+IEhpLCBSaWNoYXJkLg0KPiAN Cj4gSSBhbSBzb3JyeSBmb3IgYm90aGVyaW5nIHlvdS4gSSBhbSB0cnlpbmcg dG8gdW5kZXJzdGFuZCB3aGF0IHlvdSBtZWFuLg0KPiANCj4gSXMgdGhpcyBm b2xsb3dpbmcgY29kZXMgdGhhdCB5b3Ugd2FudCA/DQo+IA0KPiAgIC8qIENy ZWF0ZSB0aGUgdmVjdG9yIHRoYXQgaG9sZHMgdGhlIHN0ZXAgb2YgdGhlIGlu ZHVjdGlvbi4gICovDQo+ICAgaWYgKG5lc3RlZF9pbl92ZWN0X2xvb3ApDQo+ ICAgICB7DQo+ICAgICAgIC8qIGl2X2xvb3AgaXMgbmVzdGVkIGluIHRoZSBs b29wIHRvIGJlIHZlY3Rvcml6ZWQuIEdlbmVyYXRlOg0KPiAgICAgICAgICB2 ZWNfc3RlcCA9IFtTLCBTLCBTLCBTXSAgKi8NCj4gICAgICAgbmV3X25hbWUg PSBzdGVwX2V4cHI7DQo+ICAgICAgIC8qIFdlIGV4cGVjdCBMT09QX1ZJTkZP X1VTSU5HX1NFTEVDVF9WTF9QIHRvIGJlIGZhbHNlIGluIG5lc3RlZCBsb29w LiAgKi8NCj4gICAgICAgZ2NjX2Fzc2VydCAoIUxPT1BfVklORk9fVVNJTkdf U0VMRUNUX1ZMX1AgKGxvb3BfdmluZm8pKTsNCj4gICAgICAgdCA9IHVuc2hh cmVfZXhwciAobmV3X25hbWUpOw0KPiAgICAgICBnY2NfYXNzZXJ0IChDT05T VEFOVF9DTEFTU19QIChuZXdfbmFtZSkNCj4gICAgICAgICAgICAgICAgICAg fHwgVFJFRV9DT0RFIChuZXdfbmFtZSkgPT0gU1NBX05BTUUpOw0KPiAgICAg ICBuZXdfdmVjID0gYnVpbGRfdmVjdG9yX2Zyb21fdmFsIChzdGVwX3ZlY3R5 cGUsIHQpOw0KPiAgICAgICB2ZWNfc3RlcA0KPiAgICAgICAgID0gdmVjdF9p bml0X3ZlY3RvciAobG9vcF92aW5mbywgc3RtdF9pbmZvLCBuZXdfdmVjLCBz dGVwX3ZlY3R5cGUsIE5VTEwpOw0KPiAgICAgfQ0KPiAgIGVsc2UgaWYgKExP T1BfVklORk9fVVNJTkdfU0VMRUNUX1ZMX1AgKGxvb3BfdmluZm8pKQ0KPiAg ICAgew0KPiAgICAgICAvKiBXaGVuIHdlJ3JlIHVzaW5nIGxvb3BfbGVuIHBy b2R1Y2VkIGJ5IFNFTEVDX1ZMLCB0aGUgbm9uLWZpbmFsDQo+ICAgICAgICAg IGl0ZXJhdGlvbnMgYXJlIG5vdCBhbHdheXMgcHJvY2Vzc2luZyBWRiBlbGVt ZW50cy4gIFNvIHZlY3Rvcml6ZQ0KPiAgICAgICAgICBpbmR1Y3Rpb24gdmFy aWFibGUgaW5zdGVhZCBvZg0KPiANCj4gICAgICAgICAgICBfMjEgPSB2ZWN0 X3ZlY19pdl8uNl8yMiArIHsgVkYsIC4uLiB9Ow0KPiANCj4gICAgICAgICAg V2Ugc2hvdWxkIGdlbmVyYXRlOg0KPiANCj4gICAgICAgICAgICBfMzUgPSAu U0VMRUNUX1ZMIChpdnRtcF8zMywgVkYpOw0KPiAgICAgICAgICAgIHZlY3Rf Y3N0X18yMiA9IFt2ZWNfZHVwbGljYXRlX2V4cHJdIF8zNTsNCj4gICAgICAg ICAgICBfMjEgPSB2ZWN0X3ZlY19pdl8uNl8yMiArIHZlY3RfY3N0X18yMjsg ICovDQo+ICAgICAgIHZlY19sb29wX2xlbnMgKmxlbnMgPSAmTE9PUF9WSU5G T19MRU5TIChsb29wX3ZpbmZvKTsNCj4gICAgICAgdHJlZSBsZW4gPSB2ZWN0 X2dldF9sb29wX2xlbiAobG9vcF92aW5mbywgTlVMTCwgbGVucywgMSwgdmVj dHlwZSwgMCwgMCk7DQo+ICAgICAgIGV4cHIgPSBmb3JjZV9naW1wbGVfb3Bl cmFuZCAoZm9sZF9jb252ZXJ0IChUUkVFX1RZUEUgKHN0ZXBfZXhwciksDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNoYXJlX2V4cHIgKGxlbikpLA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZzZXEsIHRydWUsIE5VTExfVFJFRSk7DQo+ ICAgICAgIGdzaV9pbnNlcnRfc2VxX2JlZm9yZSAoJnNpLCBzZXEsIEdTSV9T QU1FX1NUTVQpOw0KPiAgICAgICB0ID0gdW5zaGFyZV9leHByIChuZXdfbmFt ZSk7DQo+ICAgICAgIGdjY19hc3NlcnQgKENPTlNUQU5UX0NMQVNTX1AgKG5l d19uYW1lKQ0KPiAgICAgICAgICAgICAgICAgICB8fCBUUkVFX0NPREUgKG5l d19uYW1lKSA9PSBTU0FfTkFNRSk7DQo+ICAgICAgIG5ld192ZWMgPSBidWls ZF92ZWN0b3JfZnJvbV92YWwgKHN0ZXBfdmVjdHlwZSwgdCk7DQo+ICAgICAg IHZlY19zdGVwDQo+ICAgICAgICAgPSB2ZWN0X2luaXRfdmVjdG9yIChsb29w X3ZpbmZvLCBzdG10X2luZm8sIG5ld192ZWMsIHN0ZXBfdmVjdHlwZSwgJnNp KTsNCj4gICAgIH0NCj4gICBlbHNlDQo+ICAgICB7DQo+ICAgICAgIC8qIGl2 X2xvb3AgaXMgdGhlIGxvb3AgdG8gYmUgdmVjdG9yaXplZC4gR2VuZXJhdGU6 DQo+ICAgICAgICAgICB2ZWNfc3RlcCA9IFtWRipTLCBWRipTLCBWRipTLCBW RipTXSAgKi8NCj4gICAgICAgZ2ltcGxlX3NlcSBzZXEgPSBOVUxMOw0KPiAg ICAgICBpZiAoU0NBTEFSX0ZMT0FUX1RZUEVfUCAoVFJFRV9UWVBFIChzdGVw X2V4cHIpKSkNCj4gICAgICAgICB7DQo+ICAgICAgICAgICBleHByID0gYnVp bGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsIHZmKTsNCj4gICAgICAg ICAgIGV4cHIgPSBnaW1wbGVfYnVpbGQgKCZzZXEsIEZMT0FUX0VYUFIsIFRS RUVfVFlQRSAoc3RlcF9leHByKSwgZXhwcik7DQo+ICAgICAgICAgfQ0KPiAg ICAgICBlbHNlDQo+ICAgICAgICAgZXhwciA9IGJ1aWxkX2ludF9jc3QgKFRS RUVfVFlQRSAoc3RlcF9leHByKSwgdmYpOw0KPiAgICAgICBuZXdfbmFtZSA9 IGdpbXBsZV9idWlsZCAoJnNlcSwgTVVMVF9FWFBSLCBUUkVFX1RZUEUgKHN0 ZXBfZXhwciksDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eHByLCBzdGVwX2V4cHIpOw0KPiAgICAgICBpZiAoc2VxKQ0KPiAgICAgICAg IHsNCj4gICAgICAgICAgIG5ld19iYiA9IGdzaV9pbnNlcnRfc2VxX29uX2Vk Z2VfaW1tZWRpYXRlIChwZSwgc2VxKTsNCj4gICAgICAgICAgIGdjY19hc3Nl cnQgKCFuZXdfYmIpOw0KPiAgICAgICAgIH0NCj4gICAgICAgdCA9IHVuc2hh cmVfZXhwciAobmV3X25hbWUpOw0KPiAgICAgICBnY2NfYXNzZXJ0IChDT05T VEFOVF9DTEFTU19QIChuZXdfbmFtZSkNCj4gICAgICAgICAgICAgICAgICAg fHwgVFJFRV9DT0RFIChuZXdfbmFtZSkgPT0gU1NBX05BTUUpOw0KPiAgICAg ICBuZXdfdmVjID0gYnVpbGRfdmVjdG9yX2Zyb21fdmFsIChzdGVwX3ZlY3R5 cGUsIHQpOw0KPiAgICAgICB2ZWNfc3RlcA0KPiAgICAgICAgID0gdmVjdF9p bml0X3ZlY3RvciAobG9vcF92aW5mbywgc3RtdF9pbmZvLCBuZXdfdmVjLCBz dGVwX3ZlY3R5cGUsIE5VTEwpOw0KPiAgICAgfQ0KPiANCj4gSXQgc2VlbXMg dGhhdCB0aGlzIGZvbGxvd2luZyBjb2RlczoNCj4gDQo+ICAgICAgIHQgPSB1 bnNoYXJlX2V4cHIgKG5ld19uYW1lKTsNCj4gICAgICAgZ2NjX2Fzc2VydCAo Q09OU1RBTlRfQ0xBU1NfUCAobmV3X25hbWUpDQo+ICAgICAgICAgICAgICAg ICAgIHx8IFRSRUVfQ09ERSAobmV3X25hbWUpID09IFNTQV9OQU1FKTsNCj4g ICAgICAgbmV3X3ZlYyA9IGJ1aWxkX3ZlY3Rvcl9mcm9tX3ZhbCAoc3RlcF92 ZWN0eXBlLCB0KTsNCj4gICAgICAgdmVjX3N0ZXANCj4gICAgICAgICA9IHZl Y3RfaW5pdF92ZWN0b3IgDQo+IA0KPiBhcHBlYXJzIDMgdGltZXMuICBJIGFt IG5vdCBzdXJlIHdoZXRoZXIgaXQgaXMgdGhlIHdheSB5b3Ugd2FudD8NCiAN CkknZCBhdm9pZCB0aGF0IHBhcnRpY3VsYXIgYml0IGJ5IGhhdmluZw0KIA0K ICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKnNpID0gTlVMTDsNCiANCmJlZm9y ZSB0aGUgaWYgKCkgYW5kIHNldCB0aGF0IGFjY29yZGluZ2x5IG9ubHkgaW4g dGhlDQpMT09QX1ZJTkZPX1VTSU5HX1NFTEVDVF9WTF9QIHBhdGguICBCdXQg b3RoZXJ3aXNlIHllcy4NCiANClJpY2hhcmQuDQogDQo+IA0KPiBUaGFua3Mu DQo+IA0KPiANCj4gDQo+IGp1emhlLnpob25nQHJpdmFpLmFpDQo+ICANCj4g RnJvbTogUmljaGFyZCBCaWVuZXINCj4gRGF0ZTogMjAyMy0xMS0xMCAxNzo0 Ng0KPiBUbzogPz8/DQo+IENDOiByaWNoYXJkLmd1ZW50aGVyOyBnY2MtcGF0 Y2hlczsgcmljaGFyZC5zYW5kaWZvcmQ7IGtpdG8uY2hlbmc7IGtpdG8uY2hl bmcNCj4gU3ViamVjdDogUmU6IFJlOiBbUEFUQ0hdIE1pZGRsZS1lbmQ6IEZp eCBidWcgb2YgaW5kdWN0aW9uIHZhcmlhYmxlIHZlY3Rvcml6YXRpb24gZm9y IFJWVg0KPiBPbiBUaHUsIDkgTm92IDIwMjMsID8/PyB3cm90ZToNCj4gIA0K PiA+IEhpLCBSaWNoYXJkLg0KPiA+IA0KPiA+ID4+IEkgdGhpbmsgaXQgd291 bGQgYmUgYmV0dGVyIHRvIHNwbGl0IG91dCBidWlsZGluZyBhIHRyZWUgZnJv bSBWRiBmcm9tIGJvdGgNCj4gPiA+PiBhcm1zIGFuZCBhdm9pZCB1c2luZyAn dmYnIHdoZW4gTE9PUF9WSU5GT19VU0lOR19TRUxFQ1RfVkxfUC4NCj4gPiAN Cj4gPiBJIGFtIHRyeWluZyB0byBzcGxpdCBvdXQgYnVpbGRpbmcgdHJlZSBm cm9tIGJvdGggYXJtcyBhcyB5b3Ugc3VnZ2VzdGVkLi4NCj4gPiBDb3VsZCB5 b3UgdGFrZSBhIGxvb2sgdGhlIGZvbGxvd2luZyBjb2RlcyA/DQo+ID4gDQo+ ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC5jYyBiL2djYy90 cmVlLXZlY3QtbG9vcC5jYw0KPiA+IGluZGV4IDhhYmMxOTM3ZDc0Li4yNGE4 NjE4N2QxMSAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvdHJlZS12ZWN0LWxvb3Au Y2MNCj4gPiArKysgYi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gPiBAQCAt MTAzMTUsMTkgKzEwMzE1LDQ3IEBAIHZlY3Rvcml6YWJsZV9pbmR1Y3Rpb24g KGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gPiAgICAgICAgLyogaXZf bG9vcCBpcyB0aGUgbG9vcCB0byBiZSB2ZWN0b3JpemVkLiBHZW5lcmF0ZToN Cj4gPiAgICAgdmVjX3N0ZXAgPSBbVkYqUywgVkYqUywgVkYqUywgVkYqU10g ICovDQo+ID4gICAgICAgIGdpbXBsZV9zZXEgc2VxID0gTlVMTDsNCj4gPiAt ICAgICAgaWYgKFNDQUxBUl9GTE9BVF9UWVBFX1AgKFRSRUVfVFlQRSAoc3Rl cF9leHByKSkpDQo+ID4gKyAgICAgIGlmIChMT09QX1ZJTkZPX1VTSU5HX1NF TEVDVF9WTF9QIChsb29wX3ZpbmZvKSkNCj4gPiAgIHsNCj4gPiAtICAgZXhw ciA9IGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCB2Zik7DQo+ ID4gLSAgIGV4cHIgPSBnaW1wbGVfYnVpbGQgKCZzZXEsIEZMT0FUX0VYUFIs IFRSRUVfVFlQRSAoc3RlcF9leHByKSwgZXhwcik7DQo+ID4gKyAgIC8qIFdo ZW4gd2UncmUgdXNpbmcgbG9vcF9sZW4gcHJvZHVjZWQgYnkgU0VMRUNfVkws IHRoZSBub24tZmluYWwNCj4gPiArICAgICAgaXRlcmF0aW9ucyBhcmUgbm90 IGFsd2F5cyBwcm9jZXNzaW5nIFZGIGVsZW1lbnRzLiAgU28gdmVjdG9yaXpl DQo+ID4gKyAgICAgIGluZHVjdGlvbiB2YXJpYWJsZSBpbnN0ZWFkIG9mDQo+ ID4gKw0KPiA+ICsgICAgICAgIF8yMSA9IHZlY3RfdmVjX2l2Xy42XzIyICsg eyBWRiwgLi4uIH07DQo+ID4gKw0KPiA+ICsgICAgICBXZSBzaG91bGQgZ2Vu ZXJhdGU6DQo+ID4gKw0KPiA+ICsgICAgICAgXzM1ID0gLlNFTEVDVF9WTCAo aXZ0bXBfMzMsIFZGKTsNCj4gPiArICAgICAgIHZlY3RfY3N0X18yMiA9IFt2 ZWNfZHVwbGljYXRlX2V4cHJdIF8zNTsNCj4gPiArICAgICAgIF8yMSA9IHZl Y3RfdmVjX2l2Xy42XzIyICsgdmVjdF9jc3RfXzIyOyAgKi8NCj4gPiArICAg dmVjX2xvb3BfbGVucyAqbGVucyA9ICZMT09QX1ZJTkZPX0xFTlMgKGxvb3Bf dmluZm8pOw0KPiA+ICsgICB0cmVlIGxlbg0KPiA+ICsgICAgID0gdmVjdF9n ZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIE5VTEwsIGxlbnMsIDEsIHZlY3R5 cGUsIDAsIDApOw0KPiA+ICsgICBleHByID0gZm9yY2VfZ2ltcGxlX29wZXJh bmQgKGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChzdGVwX2V4cHIpLA0KPiA+ ICsgICAgICB1bnNoYXJlX2V4cHIgKGxlbikpLA0KPiA+ICsgICAgICAgICZz ZXEsIHRydWUsIE5VTExfVFJFRSk7DQo+ID4gICB9DQo+ID4gICAgICAgIGVs c2UNCj4gPiAtIGV4cHIgPSBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKHN0 ZXBfZXhwciksIHZmKTsNCj4gPiArIHsNCj4gPiArICAgYm9vbCBmbG9hdF9w ID0gU0NBTEFSX0ZMT0FUX1RZUEVfUCAoVFJFRV9UWVBFIChzdGVwX2V4cHIp KTsNCj4gPiArICAgZXhwciA9IGJ1aWxkX2ludF9jc3QgKGZsb2F0X3AgPyBp bnRlZ2VyX3R5cGVfbm9kZQ0KPiA+ICsgOiBUUkVFX1RZUEUgKHN0ZXBfZXhw ciksDQo+ID4gKyB2Zik7DQo+ID4gKyAgIGlmIChmbG9hdF9wKQ0KPiA+ICsg ICAgIGV4cHIgPSBnaW1wbGVfYnVpbGQgKCZzZXEsIEZMT0FUX0VYUFIsIFRS RUVfVFlQRSAoc3RlcF9leHByKSwgZXhwcik7DQo+ID4gKyB9DQo+ID4gKw0K PiAgDQo+IEkgbWVhbnQgeW91IGtlZXAgdGhlIGV4aXN0aW5nIGZsb3cgaW4g dGhlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkNCj4gSSB0aGluayB5b3Ugc2hv dWxkIGhhbmRsZSBTQ0FMQVJfRkxPQVRfVFlQRV9QIGxpa2UgaXQgd2FzIHBy ZXZpb3VzbHkNCj4gaGFuZGxlZCwganVzdCBidWlsZCAndmYnIGluIHRoZSBk eW5hbWljIHdheS4NCj4gIA0KPiA+ICAgICAgICBuZXdfbmFtZSA9IGdpbXBs ZV9idWlsZCAoJnNlcSwgTVVMVF9FWFBSLCBUUkVFX1RZUEUgKHN0ZXBfZXhw ciksDQo+ID4gICAgICAgICAgZXhwciwgc3RlcF9leHByKTsNCj4gPiAgICAg ICAgaWYgKHNlcSkNCj4gPiAgIHsNCj4gPiAtICAgbmV3X2JiID0gZ3NpX2lu c2VydF9zZXFfb25fZWRnZV9pbW1lZGlhdGUgKHBlLCBzZXEpOw0KPiA+IC0g ICBnY2NfYXNzZXJ0ICghbmV3X2JiKTsNCj4gPiArICAgaWYgKExPT1BfVklO Rk9fVVNJTkdfU0VMRUNUX1ZMX1AgKGxvb3BfdmluZm8pKQ0KPiA+ICsgICAg IGdzaV9pbnNlcnRfc2VxX2JlZm9yZSAoJnNpLCBzZXEsIEdTSV9TQU1FX1NU TVQpOw0KPiA+ICsgICBlbHNlDQo+ID4gKyAgICAgew0KPiA+ICsgICAgICAg bmV3X2JiID0gZ3NpX2luc2VydF9zZXFfb25fZWRnZV9pbW1lZGlhdGUgKHBl LCBzZXEpOw0KPiA+ICsgICAgICAgZ2NjX2Fzc2VydCAoIW5ld19iYik7DQo+ ID4gKyAgICAgfQ0KPiA+ICAgfQ0KPiA+ICAgICAgfQ0KPiA+ICANCj4gPiBA QCAtMTAzMzUsOSArMTAzNjMsOSBAQCB2ZWN0b3JpemFibGVfaW5kdWN0aW9u IChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ID4gICAgZ2NjX2Fzc2Vy dCAoQ09OU1RBTlRfQ0xBU1NfUCAobmV3X25hbWUpDQo+ID4gICAgICAgICB8 fCBUUkVFX0NPREUgKG5ld19uYW1lKSA9PSBTU0FfTkFNRSk7DQo+ID4gICAg bmV3X3ZlYyA9IGJ1aWxkX3ZlY3Rvcl9mcm9tX3ZhbCAoc3RlcF92ZWN0eXBl LCB0KTsNCj4gPiAtICB2ZWNfc3RlcCA9IHZlY3RfaW5pdF92ZWN0b3IgKGxv b3BfdmluZm8sIHN0bXRfaW5mbywNCj4gPiAtICAgICAgICBuZXdfdmVjLCBz dGVwX3ZlY3R5cGUsIE5VTEwpOw0KPiA+IC0NCj4gPiArICB2ZWNfc3RlcA0K PiA+ICsgICAgPSB2ZWN0X2luaXRfdmVjdG9yIChsb29wX3ZpbmZvLCBzdG10 X2luZm8sIG5ld192ZWMsIHN0ZXBfdmVjdHlwZSwNCj4gPiArIExPT1BfVklO Rk9fVVNJTkdfU0VMRUNUX1ZMX1AgKGxvb3BfdmluZm8pID8gJnNpIDogTlVM TCk7DQo+ICANCj4gYWdhaW4gdGhpcyBtYWtlcyB0aGUgZmxvdyBoYXJkIHRv IGZvbGxvdy4gIEkgc3VwcG9zZSByZWZhY3RvcmluZyB0aGlzDQo+IG92ZXJh bGwgdG8NCj4gIA0KPiAgICAgaWYgKG5lc3RlZF9pbl92ZWN0X2xvb3ApDQo+ IC4uLg0KPiAgICAgZWxzZSBpZiAoTE9PUF9WSU5GT19VU0lOR19TRUxFQ1Rf VkxfUCAoLi4pKQ0KPiAuLi4NCj4gICAgIGVsc2UNCj4gLi4uDQo+ICANCj4g YW5kIGR1cGxpY2F0ZSB0aGlzIHRhaWwgaW50byB0aGUgY2FzZXMgbWFrZXMg aXQgZWFzaWVyIHRvIGZvbGxvdy4NCj4gIA0KPiBGb3IgbmVzdGVkX2luX3Zl Y3RfbG9vcCB3ZSBuZXZlciBoYXZlIExPT1BfVklORk9fVVNJTkdfU0VMRUNU X1ZMX1A/DQo+ICANCj4gUmljaGFyZC4NCj4gIA0KPiAgDQo+ID4gVGhhbmtz Lg0KPiA+IA0KPiA+IA0KPiA+IGp1emhlLnpob25nQHJpdmFpLmFpDQo+ID4g IA0KPiA+IEZyb206IFJpY2hhcmQgQmllbmVyDQo+ID4gRGF0ZTogMjAyMy0x MS0wOSAyMDoxNg0KPiA+IFRvOiBKdXpoZS1aaG9uZw0KPiA+IENDOiBnY2Mt cGF0Y2hlczsgcmljaGFyZC5zYW5kaWZvcmQ7IHJndWVudGhlcjsga2l0by5j aGVuZzsga2l0by5jaGVuZw0KPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIE1p ZGRsZS1lbmQ6IEZpeCBidWcgb2YgaW5kdWN0aW9uIHZhcmlhYmxlIHZlY3Rv cml6YXRpb24gZm9yIFJWVg0KPiA+IE9uIFdlZCwgTm92IDgsIDIwMjMgYXQg MTE6NTM/QU0gSnV6aGUtWmhvbmcgPGp1emhlLnpob25nQHJpdmFpLmFpPiB3 cm90ZToNCj4gPiA+DQo+ID4gPiBQUjogaHR0cHM6Ly9nY2MuZ251Lm9yZy9i dWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTEyNDM4DQo+ID4gPg0KPiA+ID4g U0VMRUNUX1ZMIHJlc3VsdCBpcyBub3QgbmVjZXNzYXJ5IGFsd2F5cyBWRiBp biBub24tZmluYWwgaXRlcmF0aW9uLg0KPiA+ID4NCj4gPiA+IEN1cnJlbnQg R0lNUExFIElSIGlzIHdyb25nOg0KPiA+ID4NCj4gPiA+ICMgdmVjdF92ZWNf aXZfLjIxXzI1ID0gUEhJIDxfMjQoNCksIHsgMCwgMSwgMiwgLi4uIH0oMyk+ DQo+ID4gPiAuLi4NCj4gPiA+IF8yNCA9IHZlY3RfdmVjX2l2Xy4yMV8yNSAr IHsgUE9MWV9JTlRfQ1NUIFs0LCA0XSwgLi4uIH07DQo+ID4gPg0KPiA+ID4g QWZ0ZXIgdGhpcyBwYXRjaCB3aGljaCBpcyBjb3JyZWN0IGZvciBTRUxFQ1Rf Vkw6DQo+ID4gPg0KPiA+ID4gIyB2ZWN0X3ZlY19pdl8uOF8yMiA9IFBISSA8 XzIxKDQpLCB7IDAsIDEsIDIsIC4uLiB9KDMpPg0KPiA+ID4gLi4uDQo+ID4g PiBfMzUgPSAuU0VMRUNUX1ZMIChpdnRtcF8zMywgUE9MWV9JTlRfQ1NUIFs0 LCA0XSk7DQo+ID4gPiBfMjEgPSB2ZWN0X3ZlY19pdl8uOF8yMiArIHsgUE9M WV9JTlRfQ1NUIFs0LCA0XSwgLi4uIH07DQo+ID4gPg0KPiA+ID4ga2l0bywg Y291bGQgeW91IGdpdmUgbW9yZSBleHBsYW5hdGlvbiA/DQo+ID4gPg0KPiA+ ID4gICAgICAgICBQUiBtaWRkbGUvMTEyNDM4DQo+ID4gPg0KPiA+ID4gZ2Nj L0NoYW5nZUxvZzoNCj4gPiA+DQo+ID4gPiAgICAgICAgICogdHJlZS12ZWN0 LWxvb3AuY2MgKHZlY3Rvcml6YWJsZV9pbmR1Y3Rpb24pOiBGaXggYnVnLg0K PiA+ID4NCj4gPiA+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPiA+ID4N Cj4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3ByMTEyNDM4LmM6IE5ldyB0ZXN0Lg0KPiA+ID4NCj4gPiA+IC0tLQ0KPiA+ ID4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3ByMTEyNDM4 LmMgICB8IDM1ICsrKysrKysrKysrKysrKysrDQo+ID4gPiAgZ2NjL3RyZWUt dmVjdC1sb29wLmNjICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzkgKysr KysrKysrKysrKysrLS0tLQ0KPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgNjcg aW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkNCj4gPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3ByMTEyNDM4LmMNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3ByMTEyNDM4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcHIxMTI0MzguYw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwLi5iMzI2ZDU2YTUyYw0K PiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3ByMTEyNDM4LmMNCj4g PiA+IEBAIC0wLDAgKzEsMzUgQEANCj4gPiA+ICsvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLw0KPiA+ID4gKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2NjRn Y3YgLW1hYmk9bHA2NGQgLU8zIC1mbm8tdmVjdC1jb3N0LW1vZGVsIC1mZmFz dC1tYXRoIC1mZHVtcC10cmVlLW9wdGltaXplZC1kZXRhaWxzIiB9ICovDQo+ ID4gPiArDQo+ID4gPiArdm9pZA0KPiA+ID4gK2ZvbyAoaW50IG4sIGludCAq X19yZXN0cmljdCBpbiwgaW50ICpfX3Jlc3RyaWN0IG91dCkNCj4gPiA+ICt7 DQo+ID4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkgKz0gMSkNCj4g PiA+ICsgICAgew0KPiA+ID4gKyAgICAgIG91dFtpXSA9IGluW2ldICsgaTsN Cj4gPiA+ICsgICAgfQ0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICt2b2lk DQo+ID4gPiArZm9vMiAoaW50IG4sIGZsb2F0ICogX19yZXN0cmljdCBpbiwN Cj4gPiA+ICtmbG9hdCAqIF9fcmVzdHJpY3Qgb3V0KQ0KPiA+ID4gK3sNCj4g PiA+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSArPSAxKQ0KPiA+ID4g KyAgICB7DQo+ID4gPiArICAgICAgb3V0W2ldID0gaW5baV0gKyBpOw0KPiA+ ID4gKyAgICB9DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3ZvaWQNCj4g PiA+ICtmb28zIChpbnQgbiwgZmxvYXQgKiBfX3Jlc3RyaWN0IGluLA0KPiA+ ID4gK2Zsb2F0ICogX19yZXN0cmljdCBvdXQsIGZsb2F0IHgpDQo+ID4gPiAr ew0KPiA+ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpICs9IDEpDQo+ ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICBvdXRbaV0gPSBpbltpXSArIGkq IGk7DQo+ID4gPiArICAgIH0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr LyogV2UgZG9uJ3Qgd2FudCB0byBzZWUgdmVjdF92ZWNfaXZfLjIxXzI1ICsg eyBQT0xZX0lOVF9DU1QgWzQsIDRdLCAuLi4gfS4gICovDQo+ID4gPiArLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAiXFwrIFx7IFBPTFlf SU5UX0NTVCIgIm9wdGltaXplZCIgfSB9ICovDQo+ID4gPiArDQo+ID4gPiBk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGIvZ2NjL3RyZWUt dmVjdC1sb29wLmNjDQo+ID4gPiBpbmRleCBhNTQ0YmM5YjA1OS4uM2UxMDM5 NDYxNjggMTAwNjQ0DQo+ID4gPiAtLS0gYS9nY2MvdHJlZS12ZWN0LWxvb3Au Y2MNCj4gPiA+ICsrKyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiA+ID4g QEAgLTEwMzA5LDEwICsxMDMwOSwzMCBAQCB2ZWN0b3JpemFibGVfaW5kdWN0 aW9uIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ID4gPiAgICAgIG5l d19uYW1lID0gc3RlcF9leHByOw0KPiA+ID4gICAgZWxzZQ0KPiA+ID4gICAg ICB7DQo+ID4gPiArICAgICAgZ2ltcGxlX3NlcSBzZXEgPSBOVUxMOw0KPiA+ ID4gKyAgICAgIGlmIChMT09QX1ZJTkZPX1VTSU5HX1NFTEVDVF9WTF9QIChs b29wX3ZpbmZvKSkNCj4gPiA+ICsgICAgICAgew0KPiA+ID4gKyAgICAgICAg IC8qIFdoZW4gd2UncmUgdXNpbmcgbG9vcF9sZW4gcHJvZHVjZWQgYnkgU0VM RUNfVkwsIHRoZSBub24tZmluYWwNCj4gPiA+ICsgICAgICAgICAgICBpdGVy YXRpb25zIGFyZSBub3QgYWx3YXlzIHByb2Nlc3NpbmcgVkYgZWxlbWVudHMu ICBTbyB2ZWN0b3JpemUNCj4gPiA+ICsgICAgICAgICAgICBpbmR1Y3Rpb24g dmFyaWFibGUgaW5zdGVhZCBvZg0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAg ICAgICAgXzIxID0gdmVjdF92ZWNfaXZfLjZfMjIgKyB7IFZGLCAuLi4gfTsN Cj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICBXZSBzaG91bGQgZ2VuZXJh dGU6DQo+ID4gPiArDQo+ID4gPiArICAgICAgICAgICAgICBfMzUgPSAuU0VM RUNUX1ZMIChpdnRtcF8zMywgVkYpOw0KPiA+ID4gKyAgICAgICAgICAgICAg dmVjdF9jc3RfXzIyID0gW3ZlY19kdXBsaWNhdGVfZXhwcl0gXzM1Ow0KPiA+ ID4gKyAgICAgICAgICAgICAgXzIxID0gdmVjdF92ZWNfaXZfLjZfMjIgKyB2 ZWN0X2NzdF9fMjI7ICAqLw0KPiA+ID4gKyAgICAgICAgIHZlY19sb29wX2xl bnMgKmxlbnMgPSAmTE9PUF9WSU5GT19MRU5TIChsb29wX3ZpbmZvKTsNCj4g PiA+ICsgICAgICAgICB0cmVlIGxlbg0KPiA+ID4gKyAgICAgICAgICAgPSB2 ZWN0X2dldF9sb29wX2xlbiAobG9vcF92aW5mbywgTlVMTCwgbGVucywgMSwg dmVjdHlwZSwgMCwgMCk7DQo+ID4gPiArICAgICAgICAgZXhwciA9IGZvcmNl X2dpbXBsZV9vcGVyYW5kIChmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRSAoc3Rl cF9leHByKSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaGFyZV9leHByIChsZW4pKSwN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzZXEsIHRydWUsIE5VTExfVFJFRSk7DQo+ID4gPiArICAgICAgIH0NCj4g PiAgDQo+ID4gSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gc3BsaXQg b3V0IGJ1aWxkaW5nIGEgdHJlZSBmcm9tIFZGIGZyb20gYm90aA0KPiA+IGFy bXMgYW5kIGF2b2lkIHVzaW5nICd2Zicgd2hlbiBMT09QX1ZJTkZPX1VTSU5H X1NFTEVDVF9WTF9QLg0KPiA+ICANCj4gPiBCdHcsIHlvdSBhcmUgbm90IHBh dGNoaW5nIHRoZSBTTFAgcGF0aCBoZXJlIHdoaWNoIEkgYmVsaWV2ZSBoYXMg dGhlIHNhbWUNCj4gPiBwcm9ibGVtIGJ1dCBpcyBjdXJyZW50bHkgZXhlbXB0 IGZyb20gbm9uLWNvbnN0YW50IFZGIGF0IGxlYXN0Lg0KPiA+ICANCj4gPiBS aWNoYXJkLg0KPiA+ICANCj4gPiA+ICAgICAgICAvKiBpdl9sb29wIGlzIHRo ZSBsb29wIHRvIGJlIHZlY3Rvcml6ZWQuIEdlbmVyYXRlOg0KPiA+ID4gICAg ICAgICAgIHZlY19zdGVwID0gW1ZGKlMsIFZGKlMsIFZGKlMsIFZGKlNdICAq Lw0KPiA+ID4gLSAgICAgIGdpbXBsZV9zZXEgc2VxID0gTlVMTDsNCj4gPiA+ IC0gICAgICBpZiAoU0NBTEFSX0ZMT0FUX1RZUEVfUCAoVFJFRV9UWVBFIChz dGVwX2V4cHIpKSkNCj4gPiA+ICsgICAgICBlbHNlIGlmIChTQ0FMQVJfRkxP QVRfVFlQRV9QIChUUkVFX1RZUEUgKHN0ZXBfZXhwcikpKQ0KPiA+ID4gICAg ICAgICB7DQo+ID4gPiAgICAgICAgICAgZXhwciA9IGJ1aWxkX2ludF9jc3Qg KGludGVnZXJfdHlwZV9ub2RlLCB2Zik7DQo+ID4gPiAgICAgICAgICAgZXhw ciA9IGdpbXBsZV9idWlsZCAoJnNlcSwgRkxPQVRfRVhQUiwgVFJFRV9UWVBF IChzdGVwX2V4cHIpLCBleHByKTsNCj4gPiA+IEBAIC0xMDMyMyw4ICsxMDM0 MywxMyBAQCB2ZWN0b3JpemFibGVfaW5kdWN0aW9uIChsb29wX3ZlY19pbmZv IGxvb3BfdmluZm8sDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhwciwgc3RlcF9leHByKTsNCj4gPiA+ICAgICAgICBpZiAoc2Vx KQ0KPiA+ID4gICAgICAgICB7DQo+ID4gPiAtICAgICAgICAgbmV3X2JiID0g Z3NpX2luc2VydF9zZXFfb25fZWRnZV9pbW1lZGlhdGUgKHBlLCBzZXEpOw0K PiA+ID4gLSAgICAgICAgIGdjY19hc3NlcnQgKCFuZXdfYmIpOw0KPiA+ID4g KyAgICAgICAgIGlmIChMT09QX1ZJTkZPX1VTSU5HX1NFTEVDVF9WTF9QIChs b29wX3ZpbmZvKSkNCj4gPiA+ICsgICAgICAgICAgIGdzaV9pbnNlcnRfc2Vx X2JlZm9yZSAoJnNpLCBzZXEsIEdTSV9TQU1FX1NUTVQpOw0KPiA+ID4gKyAg ICAgICAgIGVsc2UNCj4gPiA+ICsgICAgICAgICAgIHsNCj4gPiA+ICsgICAg ICAgICAgICAgbmV3X2JiID0gZ3NpX2luc2VydF9zZXFfb25fZWRnZV9pbW1l ZGlhdGUgKHBlLCBzZXEpOw0KPiA+ID4gKyAgICAgICAgICAgICBnY2NfYXNz ZXJ0ICghbmV3X2JiKTsNCj4gPiA+ICsgICAgICAgICAgIH0NCj4gPiA+ICAg ICAgICAgfQ0KPiA+ID4gICAgICB9DQo+ID4gPg0KPiA+ID4gQEAgLTEwMzMy LDkgKzEwMzU3LDkgQEAgdmVjdG9yaXphYmxlX2luZHVjdGlvbiAobG9vcF92 ZWNfaW5mbyBsb29wX3ZpbmZvLA0KPiA+ID4gICAgZ2NjX2Fzc2VydCAoQ09O U1RBTlRfQ0xBU1NfUCAobmV3X25hbWUpDQo+ID4gPiAgICAgICAgICAgICAg IHx8IFRSRUVfQ09ERSAobmV3X25hbWUpID09IFNTQV9OQU1FKTsNCj4gPiA+ ICAgIG5ld192ZWMgPSBidWlsZF92ZWN0b3JfZnJvbV92YWwgKHN0ZXBfdmVj dHlwZSwgdCk7DQo+ID4gPiAtICB2ZWNfc3RlcCA9IHZlY3RfaW5pdF92ZWN0 b3IgKGxvb3BfdmluZm8sIHN0bXRfaW5mbywNCj4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuZXdfdmVjLCBzdGVwX3ZlY3R5cGUsIE5V TEwpOw0KPiA+ID4gLQ0KPiA+ID4gKyAgdmVjX3N0ZXANCj4gPiA+ICsgICAg PSB2ZWN0X2luaXRfdmVjdG9yIChsb29wX3ZpbmZvLCBzdG10X2luZm8sIG5l d192ZWMsIHN0ZXBfdmVjdHlwZSwNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIExPT1BfVklORk9fVVNJTkdfU0VMRUNUX1ZMX1AgKGxvb3Bfdmlu Zm8pID8gJnNpIDogTlVMTCk7DQo+ID4gPg0KPiA+ID4gICAgLyogQ3JlYXRl IHRoZSBmb2xsb3dpbmcgZGVmLXVzZSBjeWNsZToNCj4gPiA+ICAgICAgIGxv b3AgcHJvbG9nOg0KPiA+ID4gLS0NCj4gPiA+IDIuMzYuMw0KPiA+ID4NCj4g PiAgDQo+ID4gDQo+ICANCj4gDQogDQotLSANClJpY2hhcmQgQmllbmVyIDxy Z3VlbnRoZXJAc3VzZS5kZT4NClNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdl cm1hbnkgR21iSCwNCkZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5i ZXJnLCBHZXJtYW55Ow0KR0Y6IEl2byBUb3RldiwgQW5kcmV3IE1jRG9uYWxk LCBXZXJuZXIgS25vYmxpY2g7IChIUkIgMzY4MDksIEFHIE51ZXJuYmVyZykN CiANCg== ------=_001_NextPart837133154442_=------