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 0DB713858D1E for ; Tue, 20 Jun 2023 06:01:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0DB713858D1E 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: bizesmtp63t1687240912tyn4c835 Received: from LAPTOP-EPITNQBU ( [58.60.1.5]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 20 Jun 2023 14:01:50 +0800 (CST) X-QQ-SSF: 01400000000000G0S000000A0000000 X-QQ-FEAT: +ynUkgUhZJlTJLqiDx9gh2zgvL3F9qrld1ITmsnPiZssEdnqkyGmyqSx+9AFG QQM572QWb2C3d2fNirOX+nriLS13tFgUhHWqGWjH9iNvPA5oljpTraCMiAT1U89ZHrgYr5G lcwdYI53ujgQINsUBUW6HWFh+xc77DA1JI+6qVajE5Cc7oRbDa7q3QPonEEvGdT0TKDOEbP NyNIC0tAeFdS/YavuUWQGypHMQbm334XynHFmV4ZID6A7iD37bEnmyz7CysZ7igiCtyGDXB 99HsCmfNZP+fG3Z0AwzYrBVj+qGNCn88ynIl3jLnZlyGfoq31U6blR7mep5NqGVgtMPN4Qk fiTxbRNk/7hd1uvev6hTcvpcgiboyja32Byv+P97mhJ5ljhlxTZv4wx1tg0SfKR6B7/TLVX X4uKz0+1O2MM4O5ENzs+qVv0rnwJjk9Qcx9PoSlAR1Y= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 6662470024365938002 Date: Tue, 20 Jun 2023 14:01:51 +0800 From: "juzhe.zhong@rivai.ai" To: =?GB2312?B?1tO+09Xc?= , gcc-patches Cc: rguenther , richard.sandiford Subject: Re: [PATCH] VECT: Apply LEN_MASK_{LOAD,STORE} into vectorizer References: <20230619161705.251983-1-juzhe.zhong@rivai.ai> X-Priority: 3 X-GUID: 34A566E1-B73D-4BE3-ACF5-05FC3C8C1C11 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <083AE6097CA64F60+2023062014015032941230@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart545740674385_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,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_NextPart545740674385_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 Qm9vdHN0cmFwICYmIFJlZ3Jlc3Npb24gb24gWDg2IG5vIHN1cnByaXNlIGRp ZmZlcmVuY2UuDQoNCg0KDQpqdXpoZS56aG9uZ0ByaXZhaS5haQ0KIA0KRnJv bToganV6aGUuemhvbmcNCkRhdGU6IDIwMjMtMDYtMjAgMDA6MTcNClRvOiBn Y2MtcGF0Y2hlcw0KQ0M6IHJndWVudGhlcjsgcmljaGFyZC5zYW5kaWZvcmQ7 IEp1LVpoZSBaaG9uZw0KU3ViamVjdDogW1BBVENIXSBWRUNUOiBBcHBseSBM RU5fTUFTS197TE9BRCxTVE9SRX0gaW50byB2ZWN0b3JpemVyDQpGcm9tOiBK dS1aaGUgWmhvbmcgPGp1emhlLnpob25nQHJpdmFpLmFpPg0KIA0KVGhpcyBw YXRjaCBpcyBhcHBseSBMRU5fTUFTS197TE9BRCxTVE9SRX0gaW50byB2ZWN0 b3JpemVyLg0KSSByZWZhY3RvciBnaW1wbGUgSVIgYnVpbGQgdG8gbWFrZSBj b2RlcyBsb29rIGNsZWFuZXIuDQogDQpnY2MvQ2hhbmdlTG9nOg0KIA0KICAg ICAgICAqIGludGVybmFsLWZuLmNjIChleHBhbmRfcGFydGlhbF9zdG9yZV9v cHRhYl9mbik6IEFkZCBMRU5fTUFTS197TE9BRCxTVE9SRX0gdmVjdG9yaXpl ciBzdXBwb3J0Lg0KICAgICAgICAoaW50ZXJuYWxfbG9hZF9mbl9wKTogRGl0 dG8uDQogICAgICAgIChpbnRlcm5hbF9zdG9yZV9mbl9wKTogRGl0dG8uDQog ICAgICAgIChpbnRlcm5hbF9mbl9tYXNrX2luZGV4KTogRGl0dG8uDQogICAg ICAgIChpbnRlcm5hbF9mbl9zdG9yZWRfdmFsdWVfaW5kZXgpOiBEaXR0by4N CiAgICAgICAgKGludGVybmFsX2xlbl9sb2FkX3N0b3JlX2JpYXMpOiBEaXR0 by4NCiAgICAgICAgKiBvcHRhYnMtcXVlcnkuY2MgKGNhbl92ZWNfbWFza19s b2FkX3N0b3JlX3ApOiBEaXR0by4NCiAgICAgICAgKGdldF9sZW5fbG9hZF9z dG9yZV9tb2RlKTogRGl0dG8uDQogICAgICAgICogdHJlZS12ZWN0LXN0bXRz LmNjIChjaGVja19sb2FkX3N0b3JlX2Zvcl9wYXJ0aWFsX3ZlY3RvcnMpOiBE aXR0by4NCiAgICAgICAgKGdldF9hbGxfb25lc19tYXNrKTogTmV3IGZ1bmN0 aW9uLg0KICAgICAgICAodmVjdG9yaXphYmxlX3N0b3JlKTogQWRkIExFTl9N QVNLX3tMT0FELFNUT1JFfSB2ZWN0b3JpemVyIHN1cHBvcnQuDQogICAgICAg ICh2ZWN0b3JpemFibGVfbG9hZCk6IERpdHRvLg0KIA0KLS0tDQpnY2MvaW50 ZXJuYWwtZm4uY2MgICAgIHwgIDM1ICsrKysrLQ0KZ2NjL29wdGFicy1xdWVy eS5jYyAgICB8ICAyNSArKystDQpnY2MvdHJlZS12ZWN0LXN0bXRzLmNjIHwg MjU5ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t DQozIGZpbGVzIGNoYW5nZWQsIDIxMyBpbnNlcnRpb25zKCspLCAxMDYgZGVs ZXRpb25zKC0pDQogDQpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmNj IGIvZ2NjL2ludGVybmFsLWZuLmNjDQppbmRleCBjOTExYWU3OTBjYi4uZTEw YzIxZGU1ZjEgMTAwNjQ0DQotLS0gYS9nY2MvaW50ZXJuYWwtZm4uY2MNCisr KyBiL2djYy9pbnRlcm5hbC1mbi5jYw0KQEAgLTI5NDksNyArMjk0OSw3IEBA IGV4cGFuZF9wYXJ0aWFsX2xvYWRfb3B0YWJfZm4gKGludGVybmFsX2ZuLCBn Y2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikNCiAgKiBPUFRBQi4g ICovDQpzdGF0aWMgdm9pZA0KLWV4cGFuZF9wYXJ0aWFsX3N0b3JlX29wdGFi X2ZuIChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIg b3B0YWIpDQorZXhwYW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4gKGludGVy bmFsX2ZuIGlmbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIp DQp7DQogICBjbGFzcyBleHBhbmRfb3BlcmFuZCBvcHNbNV07DQogICB0cmVl IHR5cGUsIGxocywgcmhzLCBtYXNrdCwgYmlhc3Q7DQpAQCAtMjk1Nyw3ICsy OTU3LDcgQEAgZXhwYW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4gKGludGVy bmFsX2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikNCiAg IGluc25fY29kZSBpY29kZTsNCiAgIG1hc2t0ID0gZ2ltcGxlX2NhbGxfYXJn IChzdG10LCAyKTsNCi0gIHJocyA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwg Myk7DQorICByaHMgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIGludGVybmFs X2ZuX3N0b3JlZF92YWx1ZV9pbmRleCAoaWZuKSk7DQogICB0eXBlID0gVFJF RV9UWVBFIChyaHMpOw0KICAgbGhzID0gZXhwYW5kX2NhbGxfbWVtX3JlZiAo dHlwZSwgc3RtdCwgMCk7DQpAQCAtNDQzNSw2ICs0NDM1LDcgQEAgaW50ZXJu YWxfbG9hZF9mbl9wIChpbnRlcm5hbF9mbiBmbikNCiAgICAgY2FzZSBJRk5f R0FUSEVSX0xPQUQ6DQogICAgIGNhc2UgSUZOX01BU0tfR0FUSEVSX0xPQUQ6 DQogICAgIGNhc2UgSUZOX0xFTl9MT0FEOg0KKyAgICBjYXNlIElGTl9MRU5f TUFTS19MT0FEOg0KICAgICAgIHJldHVybiB0cnVlOw0KICAgICBkZWZhdWx0 Og0KQEAgLTQ0NTUsNiArNDQ1Niw3IEBAIGludGVybmFsX3N0b3JlX2ZuX3Ag KGludGVybmFsX2ZuIGZuKQ0KICAgICBjYXNlIElGTl9TQ0FUVEVSX1NUT1JF Og0KICAgICBjYXNlIElGTl9NQVNLX1NDQVRURVJfU1RPUkU6DQogICAgIGNh c2UgSUZOX0xFTl9TVE9SRToNCisgICAgY2FzZSBJRk5fTEVOX01BU0tfU1RP UkU6DQogICAgICAgcmV0dXJuIHRydWU7DQogICAgIGRlZmF1bHQ6DQpAQCAt NDQ5NCw2ICs0NDk2LDEwIEBAIGludGVybmFsX2ZuX21hc2tfaW5kZXggKGlu dGVybmFsX2ZuIGZuKQ0KICAgICBjYXNlIElGTl9NQVNLX1NUT1JFX0xBTkVT Og0KICAgICAgIHJldHVybiAyOw0KKyAgICBjYXNlIElGTl9MRU5fTUFTS19M T0FEOg0KKyAgICBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToNCisgICAgICBy ZXR1cm4gMzsNCisNCiAgICAgY2FzZSBJRk5fTUFTS19HQVRIRVJfTE9BRDoN CiAgICAgY2FzZSBJRk5fTUFTS19TQ0FUVEVSX1NUT1JFOg0KICAgICAgIHJl dHVybiA0Ow0KQEAgLTQ1MTksNiArNDUyNSw5IEBAIGludGVybmFsX2ZuX3N0 b3JlZF92YWx1ZV9pbmRleCAoaW50ZXJuYWxfZm4gZm4pDQogICAgIGNhc2Ug SUZOX0xFTl9TVE9SRToNCiAgICAgICByZXR1cm4gMzsNCisgICAgY2FzZSBJ Rk5fTEVOX01BU0tfU1RPUkU6DQorICAgICAgcmV0dXJuIDQ7DQorDQogICAg IGRlZmF1bHQ6DQogICAgICAgcmV0dXJuIC0xOw0KICAgICB9DQpAQCAtNDU4 MywxMyArNDU5MiwzMSBAQCBpbnRlcm5hbF9sZW5fbG9hZF9zdG9yZV9iaWFz IChpbnRlcm5hbF9mbiBpZm4sIG1hY2hpbmVfbW9kZSBtb2RlKQ0Kew0KICAg b3B0YWIgb3B0YWIgPSBkaXJlY3RfaW50ZXJuYWxfZm5fb3B0YWIgKGlmbik7 DQogICBpbnNuX2NvZGUgaWNvZGUgPSBkaXJlY3Rfb3B0YWJfaGFuZGxlciAo b3B0YWIsIG1vZGUpOw0KKyAgaW50IGJpYXNfYXJnbm8gPSAzOw0KKyAgaWYg KGljb2RlID09IENPREVfRk9SX25vdGhpbmcpDQorICAgIHsNCisgICAgICBt YWNoaW5lX21vZGUgbWFza19tb2RlDQorID0gdGFyZ2V0bS52ZWN0b3JpemUu Z2V0X21hc2tfbW9kZSAobW9kZSkucmVxdWlyZSAoKTsNCisgICAgICBpZiAo aWZuID09IElGTl9MRU5fTE9BRCkNCisgew0KKyAgIC8qIFRyeSBMRU5fTUFT S19MT0FELiAgKi8NCisgICBvcHRhYiA9IGRpcmVjdF9pbnRlcm5hbF9mbl9v cHRhYiAoSUZOX0xFTl9NQVNLX0xPQUQpOw0KKyB9DQorICAgICAgZWxzZQ0K KyB7DQorICAgLyogVHJ5IExFTl9NQVNLX1NUT1JFLiAgKi8NCisgICBvcHRh YiA9IGRpcmVjdF9pbnRlcm5hbF9mbl9vcHRhYiAoSUZOX0xFTl9NQVNLX1NU T1JFKTsNCisgfQ0KKyAgICAgIGljb2RlID0gY29udmVydF9vcHRhYl9oYW5k bGVyIChvcHRhYiwgbW9kZSwgbWFza19tb2RlKTsNCisgICAgICBiaWFzX2Fy Z25vID0gNDsNCisgICAgfQ0KICAgaWYgKGljb2RlICE9IENPREVfRk9SX25v dGhpbmcpDQogICAgIHsNCiAgICAgICAvKiBGb3Igbm93IHdlIG9ubHkgc3Vw cG9ydCBiaWFzZXMgb2YgMCBvciAtMS4gIFRyeSBib3RoIG9mIHRoZW0uICAq Lw0KLSAgICAgIGlmIChpbnNuX29wZXJhbmRfbWF0Y2hlcyAoaWNvZGUsIDMs IEdFTl9JTlQgKDApKSkNCisgICAgICBpZiAoaW5zbl9vcGVyYW5kX21hdGNo ZXMgKGljb2RlLCBiaWFzX2FyZ25vLCBHRU5fSU5UICgwKSkpDQpyZXR1cm4g MDsNCi0gICAgICBpZiAoaW5zbl9vcGVyYW5kX21hdGNoZXMgKGljb2RlLCAz LCBHRU5fSU5UICgtMSkpKQ0KKyAgICAgIGlmIChpbnNuX29wZXJhbmRfbWF0 Y2hlcyAoaWNvZGUsIGJpYXNfYXJnbm8sIEdFTl9JTlQgKC0xKSkpDQpyZXR1 cm4gLTE7DQogICAgIH0NCmRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLXF1ZXJ5 LmNjIGIvZ2NjL29wdGFicy1xdWVyeS5jYw0KaW5kZXggMjc2Zjg0MDhkZDcu LjQzOTRkMzkxMjAwIDEwMDY0NA0KLS0tIGEvZ2NjL29wdGFicy1xdWVyeS5j Yw0KKysrIGIvZ2NjL29wdGFicy1xdWVyeS5jYw0KQEAgLTU2NiwxMSArNTY2 LDE0IEBAIGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3AgKG1hY2hpbmVfbW9k ZSBtb2RlLA0KICAgYm9vbCBpc19sb2FkKQ0Kew0KICAgb3B0YWIgb3AgPSBp c19sb2FkID8gbWFza2xvYWRfb3B0YWIgOiBtYXNrc3RvcmVfb3B0YWI7DQor ICBvcHRhYiBsZW5fb3AgPSBpc19sb2FkID8gbGVuX21hc2tsb2FkX29wdGFi IDogbGVuX21hc2tzdG9yZV9vcHRhYjsNCiAgIG1hY2hpbmVfbW9kZSB2bW9k ZTsNCiAgIC8qIElmIG1vZGUgaXMgdmVjdG9yIG1vZGUsIGNoZWNrIGl0IGRp cmVjdGx5LiAgKi8NCiAgIGlmIChWRUNUT1JfTU9ERV9QIChtb2RlKSkNCi0g ICAgcmV0dXJuIGNvbnZlcnRfb3B0YWJfaGFuZGxlciAob3AsIG1vZGUsIG1h c2tfbW9kZSkgIT0gQ09ERV9GT1Jfbm90aGluZzsNCisgICAgcmV0dXJuIGNv bnZlcnRfb3B0YWJfaGFuZGxlciAob3AsIG1vZGUsIG1hc2tfbW9kZSkgIT0g Q09ERV9GT1Jfbm90aGluZw0KKyAgICB8fCBjb252ZXJ0X29wdGFiX2hhbmRs ZXIgKGxlbl9vcCwgbW9kZSwgbWFza19tb2RlKQ0KKyAhPSBDT0RFX0ZPUl9u b3RoaW5nOw0KICAgLyogT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZSBpZiB0aGVy ZSBpcyBzb21lIHZlY3RvciBtb2RlIHdpdGgNCiAgICAgIHRoZSBtYXNrIGxv YWQvc3RvcmUgc3VwcG9ydGVkLiAgKi8NCkBAIC01ODQsNyArNTg3LDkgQEAg Y2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCAobWFjaGluZV9tb2RlIG1vZGUs DQogICB2bW9kZSA9IHRhcmdldG0udmVjdG9yaXplLnByZWZlcnJlZF9zaW1k X21vZGUgKHNtb2RlKTsNCiAgIGlmIChWRUNUT1JfTU9ERV9QICh2bW9kZSkN CiAgICAgICAmJiB0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlICh2 bW9kZSkuZXhpc3RzICgmbWFza19tb2RlKQ0KLSAgICAgICYmIGNvbnZlcnRf b3B0YWJfaGFuZGxlciAob3AsIHZtb2RlLCBtYXNrX21vZGUpICE9IENPREVf Rk9SX25vdGhpbmcpDQorICAgICAgJiYgKGNvbnZlcnRfb3B0YWJfaGFuZGxl ciAob3AsIHZtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9SX25vdGhpbmcN CisgICB8fCBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKGxlbl9vcCwgdm1vZGUs IG1hc2tfbW9kZSkNCisgICAgICAgICE9IENPREVfRk9SX25vdGhpbmcpKQ0K ICAgICByZXR1cm4gdHJ1ZTsNCiAgIGF1dG9fdmVjdG9yX21vZGVzIHZlY3Rv cl9tb2RlczsNCkBAIC01OTIsNyArNTk3LDkgQEAgY2FuX3ZlY19tYXNrX2xv YWRfc3RvcmVfcCAobWFjaGluZV9tb2RlIG1vZGUsDQogICBmb3IgKG1hY2hp bmVfbW9kZSBiYXNlX21vZGUgOiB2ZWN0b3JfbW9kZXMpDQogICAgIGlmIChy ZWxhdGVkX3ZlY3Rvcl9tb2RlIChiYXNlX21vZGUsIHNtb2RlKS5leGlzdHMg KCZ2bW9kZSkNCiYmIHRhcmdldG0udmVjdG9yaXplLmdldF9tYXNrX21vZGUg KHZtb2RlKS5leGlzdHMgKCZtYXNrX21vZGUpDQotICYmIGNvbnZlcnRfb3B0 YWJfaGFuZGxlciAob3AsIHZtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9S X25vdGhpbmcpDQorICYmIChjb252ZXJ0X29wdGFiX2hhbmRsZXIgKG9wLCB2 bW9kZSwgbWFza19tb2RlKSAhPSBDT0RFX0ZPUl9ub3RoaW5nDQorICAgICB8 fCBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKGxlbl9vcCwgdm1vZGUsIG1hc2tf bW9kZSkNCisgIT0gQ09ERV9GT1Jfbm90aGluZykpDQogICAgICAgcmV0dXJu IHRydWU7DQogICByZXR1cm4gZmFsc2U7DQp9DQpAQCAtNjA4LDE3ICs2MTUs MjcgQEAgb3B0X21hY2hpbmVfbW9kZQ0KZ2V0X2xlbl9sb2FkX3N0b3JlX21v ZGUgKG1hY2hpbmVfbW9kZSBtb2RlLCBib29sIGlzX2xvYWQpDQp7DQogICBv cHRhYiBvcCA9IGlzX2xvYWQgPyBsZW5fbG9hZF9vcHRhYiA6IGxlbl9zdG9y ZV9vcHRhYjsNCisgIG9wdGFiIG1hc2tlZF9vcCA9IGlzX2xvYWQgPyBsZW5f bWFza2xvYWRfb3B0YWIgOiBsZW5fbWFza3N0b3JlX29wdGFiOw0KICAgZ2Nj X2Fzc2VydCAoVkVDVE9SX01PREVfUCAobW9kZSkpOw0KICAgLyogQ2hlY2sg aWYgbGVuZ3RoIGluIGxhbmVzIHN1cHBvcnRlZCBmb3IgdGhpcyBtb2RlIGRp cmVjdGx5LiAgKi8NCiAgIGlmIChkaXJlY3Rfb3B0YWJfaGFuZGxlciAob3As IG1vZGUpKQ0KICAgICByZXR1cm4gbW9kZTsNCisgIC8qIENoZWNrIGlmIGxl bmd0aCBpbiBsYW5lcyBzdXBwb3J0ZWQgYnkgbGVuX21hc2tsb2FkL3N0b3Jl LiAgKi8NCisgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGU7DQorICBpZiAodGFy Z2V0bS52ZWN0b3JpemUuZ2V0X21hc2tfbW9kZSAobW9kZSkuZXhpc3RzICgm bWFza19tb2RlKQ0KKyAgICAgICYmIGNvbnZlcnRfb3B0YWJfaGFuZGxlciAo bWFza2VkX29wLCBtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9SX25vdGhp bmcpDQorICAgIHJldHVybiBtb2RlOw0KKw0KICAgLyogQ2hlY2sgaWYgbGVu Z3RoIGluIGJ5dGVzIHN1cHBvcnRlZCBmb3Igc2FtZSB2ZWN0b3Igc2l6ZSBW blFJLiAgKi8NCiAgIG1hY2hpbmVfbW9kZSB2bW9kZTsNCiAgIHBvbHlfdWlu dDY0IG51bml0cyA9IEdFVF9NT0RFX1NJWkUgKG1vZGUpOw0KICAgaWYgKHJl bGF0ZWRfdmVjdG9yX21vZGUgKG1vZGUsIFFJbW9kZSwgbnVuaXRzKS5leGlz dHMgKCZ2bW9kZSkNCi0gICAgICAmJiBkaXJlY3Rfb3B0YWJfaGFuZGxlciAo b3AsIHZtb2RlKSkNCisgICAgICAmJiAoZGlyZWN0X29wdGFiX2hhbmRsZXIg KG9wLCB2bW9kZSkNCisgICB8fCAodGFyZ2V0bS52ZWN0b3JpemUuZ2V0X21h c2tfbW9kZSAodm1vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCisgICAgICAg JiYgY29udmVydF9vcHRhYl9oYW5kbGVyIChtYXNrZWRfb3AsIHZtb2RlLCBt YXNrX21vZGUpDQorICAgICE9IENPREVfRk9SX25vdGhpbmcpKSkNCiAgICAg cmV0dXJuIHZtb2RlOw0KICAgcmV0dXJuIG9wdF9tYWNoaW5lX21vZGUgKCk7 DQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90 cmVlLXZlY3Qtc3RtdHMuY2MNCmluZGV4IDA1NmEwZWNiMmJlLi40NWJjMWU0 YjViYyAxMDA2NDQNCi0tLSBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCisr KyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCkBAIC0xODE5LDE2ICsxODE5 LDE3IEBAIGNoZWNrX2xvYWRfc3RvcmVfZm9yX3BhcnRpYWxfdmVjdG9ycyAo bG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB0cmVlIHZlY3R5cGUsDQogICBw b2x5X3VpbnQ2NCBudW5pdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVj dHlwZSk7DQogICBwb2x5X3VpbnQ2NCB2ZiA9IExPT1BfVklORk9fVkVDVF9G QUNUT1IgKGxvb3BfdmluZm8pOw0KICAgbWFjaGluZV9tb2RlIG1hc2tfbW9k ZTsNCisgIG1hY2hpbmVfbW9kZSB2bW9kZTsNCiAgIGJvb2wgdXNpbmdfcGFy dGlhbF92ZWN0b3JzX3AgPSBmYWxzZTsNCiAgIGlmICh0YXJnZXRtLnZlY3Rv cml6ZS5nZXRfbWFza19tb2RlICh2ZWNtb2RlKS5leGlzdHMgKCZtYXNrX21v ZGUpDQotICAgICAgJiYgY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCAodmVj bW9kZSwgbWFza19tb2RlLCBpc19sb2FkKSkNCisgICAgICAmJiBjYW5fdmVj X21hc2tfbG9hZF9zdG9yZV9wICh2ZWNtb2RlLCBtYXNrX21vZGUsIGlzX2xv YWQpDQorICAgICAgJiYgIWdldF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2ZWNt b2RlLCBpc19sb2FkKS5leGlzdHMgKCZ2bW9kZSkpDQogICAgIHsNCiAgICAg ICBudmVjdG9ycyA9IGdyb3VwX21lbW9yeV9udmVjdG9ycyAoZ3JvdXBfc2l6 ZSAqIHZmLCBudW5pdHMpOw0KICAgICAgIHZlY3RfcmVjb3JkX2xvb3BfbWFz ayAobG9vcF92aW5mbywgbWFza3MsIG52ZWN0b3JzLCB2ZWN0eXBlLCBzY2Fs YXJfbWFzayk7DQogICAgICAgdXNpbmdfcGFydGlhbF92ZWN0b3JzX3AgPSB0 cnVlOw0KICAgICB9DQotICBtYWNoaW5lX21vZGUgdm1vZGU7DQogICBpZiAo Z2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKHZlY21vZGUsIGlzX2xvYWQpLmV4 aXN0cyAoJnZtb2RlKSkNCiAgICAgew0KICAgICAgIG52ZWN0b3JzID0gZ3Jv dXBfbWVtb3J5X252ZWN0b3JzIChncm91cF9zaXplICogdmYsIG51bml0cyk7 DQpAQCAtMjgwOSw2ICsyODEwLDE3IEBAIHZlY3RfYnVpbGRfemVyb19tZXJn ZV9hcmd1bWVudCAodmVjX2luZm8gKnZpbmZvLA0KICAgcmV0dXJuIHZlY3Rf aW5pdF92ZWN0b3IgKHZpbmZvLCBzdG10X2luZm8sIG1lcmdlLCB2ZWN0eXBl LCBOVUxMKTsNCn0NCisvKiBHZXQgYWxsLW9uZXMgdmVjdG9yIG1hc2sgZm9y IGNvcnJlc3BvbmRpbmcgbWFza21vZGUuICAqLw0KKw0KK3N0YXRpYyB0cmVl DQorZ2V0X2FsbF9vbmVzX21hc2sgKG1hY2hpbmVfbW9kZSBtYXNrbW9kZSkN Cit7DQorICBwb2x5X3VpbnQ2NCBudW5pdHMgPSBHRVRfTU9ERV9OVU5JVFMg KG1hc2ttb2RlKTsNCisgIHRyZWUgbWFza3R5cGUgPSBidWlsZF90cnV0aF92 ZWN0b3JfdHlwZV9mb3JfbW9kZSAobnVuaXRzLCBtYXNrbW9kZSk7DQorICB0 cmVlIG1hc2sgPSBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKG1hc2t0eXBl KSwgMSk7DQorICByZXR1cm4gYnVpbGRfdmVjdG9yX2Zyb21fdmFsIChtYXNr dHlwZSwgbWFzayk7DQorfQ0KKw0KLyogQnVpbGQgYSBnYXRoZXIgbG9hZCBj YWxsIHdoaWxlIHZlY3Rvcml6aW5nIFNUTVRfSU5GTy4gIEluc2VydCBuZXcN CiAgICBpbnN0cnVjdGlvbnMgYmVmb3JlIEdTSSBhbmQgYWRkIHRoZW0gdG8g VkVDX1NUTVQuICBHU19JTkZPIGRlc2NyaWJlcw0KICAgIHRoZSBnYXRoZXIg bG9hZCBvcGVyYXRpb24uICBJZiB0aGUgbG9hZCBpcyBjb25kaXRpb25hbCwg TUFTSyBpcyB0aGUNCkBAIC04OTQ1LDU2ICs4OTU3LDgwIEBAIHZlY3Rvcml6 YWJsZV9zdG9yZSAodmVjX2luZm8gKnZpbmZvLA0KfQ0KICAgICAgLyogQXJn dW1lbnRzIGFyZSByZWFkeS4gIENyZWF0ZSB0aGUgbmV3IHZlY3RvciBzdG10 LiAgKi8NCi0gICAgICAgaWYgKGZpbmFsX21hc2spDQorICAgICAgIGlmIChm aW5hbF9tYXNrIHx8IGxvb3BfbGVucykNCnsNCisgICBnY2FsbCAqY2FsbDsN CiAgdHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24g KiBCSVRTX1BFUl9VTklUKTsNCi0gICBnY2FsbCAqY2FsbA0KLSAgICAgPSBn aW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX01BU0tfU1RPUkUsIDQs DQotICAgZGF0YXJlZl9wdHIsIHB0ciwNCi0gICBmaW5hbF9tYXNrLCB2ZWNf b3BybmQpOw0KLSAgIGdpbXBsZV9jYWxsX3NldF9ub3Rocm93IChjYWxsLCB0 cnVlKTsNCi0gICB2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRpb24gKHZpbmZv LCBzdG10X2luZm8sIGNhbGwsIGdzaSk7DQotICAgbmV3X3N0bXQgPSBjYWxs Ow0KLSB9DQotICAgICAgIGVsc2UgaWYgKGxvb3BfbGVucykNCi0gew0KICBt YWNoaW5lX21vZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0KLSAg IG9wdF9tYWNoaW5lX21vZGUgbmV3X292bW9kZQ0KLSAgICAgPSBnZXRfbGVu X2xvYWRfc3RvcmVfbW9kZSAodm1vZGUsIGZhbHNlKTsNCi0gICBtYWNoaW5l X21vZGUgbmV3X3Ztb2RlID0gbmV3X292bW9kZS5yZXF1aXJlICgpOw0KLSAg IHVuc2lnbmVkIGZhY3Rvcg0KLSAgICAgPSAobmV3X292bW9kZSA9PSB2bW9k ZSkgPyAxIDogR0VUX01PREVfVU5JVF9TSVpFICh2bW9kZSk7DQotICAgdHJl ZSBmaW5hbF9sZW4NCi0gICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3Bf dmluZm8sIGdzaSwgbG9vcF9sZW5zLA0KLSB2ZWNfbnVtICogbmNvcGllcywg dmVjdHlwZSwNCi0gdmVjX251bSAqIGogKyBpLCBmYWN0b3IpOw0KLSAgIHRy ZWUgcHRyID0gYnVpbGRfaW50X2NzdCAocmVmX3R5cGUsIGFsaWduICogQklU U19QRVJfVU5JVCk7DQotICAgLyogTmVlZCBjb252ZXJzaW9uIGlmIGl0J3Mg d3JhcHBlZCB3aXRoIFZuUUkuICAqLw0KLSAgIGlmICh2bW9kZSAhPSBuZXdf dm1vZGUpDQorICAgbWFjaGluZV9tb2RlIG5ld192bW9kZSA9IHZtb2RlOw0K Kw0KKyAgIGlmIChnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAodm1vZGUsIGZh bHNlKQ0KKyAuZXhpc3RzICgmbmV3X3Ztb2RlKSkNCiAgICB7DQotICAgICAg IHRyZWUgbmV3X3Z0eXBlDQotID0gYnVpbGRfdmVjdG9yX3R5cGVfZm9yX21v ZGUgKHVuc2lnbmVkX2ludFFJX3R5cGVfbm9kZSwNCi0gICAgICAgbmV3X3Zt b2RlKTsNCi0gICAgICAgdHJlZSB2YXINCi0gPSB2ZWN0X2dldF9uZXdfc3Nh X25hbWUgKG5ld192dHlwZSwgdmVjdF9zaW1wbGVfdmFyKTsNCi0gICAgICAg dmVjX29wcm5kDQotID0gYnVpbGQxIChWSUVXX0NPTlZFUlRfRVhQUiwgbmV3 X3Z0eXBlLCB2ZWNfb3BybmQpOw0KLSAgICAgICBnYXNzaWduICpuZXdfc3Rt dA0KLSA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKHZhciwgVklFV19DT05WRVJU X0VYUFIsDQotICAgICAgICB2ZWNfb3BybmQpOw0KLSAgICAgICB2ZWN0X2Zp bmlzaF9zdG10X2dlbmVyYXRpb24gKHZpbmZvLCBzdG10X2luZm8sIG5ld19z dG10LA0KLSAgICBnc2kpOw0KLSAgICAgICB2ZWNfb3BybmQgPSB2YXI7DQot ICAgICB9DQorICAgICAgIHRyZWUgZmluYWxfbGVuOw0KKyAgICAgICBtYWNo aW5lX21vZGUgbWFza21vZGU7DQorICAgICAgIHVuc2lnbmVkIGZhY3RvciA9 IChuZXdfdm1vZGUgPT0gdm1vZGUpDQorICAgPyAxDQorICAgOiBHRVRfTU9E RV9VTklUX1NJWkUgKHZtb2RlKTsNCisgICAgICAgaWYgKGxvb3BfbGVucykN CisgZmluYWxfbGVuDQorICAgPSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92 aW5mbywgZ3NpLCBsb29wX2xlbnMsDQorICAgICAgICB2ZWNfbnVtICogbmNv cGllcywgdmVjdHlwZSwNCisgICAgICAgIHZlY19udW0gKiBqICsgaSwgZmFj dG9yKTsNCisgICAgICAgZWxzZQ0KKyB7DQorICAgdHJlZSBpdl90eXBlID0g TE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyk7DQorICAg ZmluYWxfbGVuDQorICAgICA9IGJ1aWxkX2ludF9jc3QgKGl2X3R5cGUsDQor ICAgICAgVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGUpKTsNCisgfQ0K LSAgIHNpZ25lZCBjaGFyIGJpYXN2YWwgPQ0KLSAgICAgTE9PUF9WSU5GT19Q QVJUSUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQorICAgICAg IC8qIE5lZWQgY29udmVyc2lvbiBpZiBpdCdzIHdyYXBwZWQgd2l0aCBWblFJ LiAgKi8NCisgICAgICAgaWYgKHZtb2RlICE9IG5ld192bW9kZSkNCisgew0K KyAgIHRyZWUgbmV3X3Z0eXBlID0gYnVpbGRfdmVjdG9yX3R5cGVfZm9yX21v ZGUgKA0KKyAgICAgdW5zaWduZWRfaW50UUlfdHlwZV9ub2RlLCBuZXdfdm1v ZGUpOw0KKyAgIHRyZWUgdmFyID0gdmVjdF9nZXRfbmV3X3NzYV9uYW1lIChu ZXdfdnR5cGUsDQorICAgICB2ZWN0X3NpbXBsZV92YXIpOw0KKyAgIHZlY19v cHJuZA0KKyAgICAgPSBidWlsZDEgKFZJRVdfQ09OVkVSVF9FWFBSLCBuZXdf dnR5cGUsIHZlY19vcHJuZCk7DQorICAgZ2Fzc2lnbiAqbmV3X3N0bXQNCisg ICAgID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodmFyLCBWSUVXX0NPTlZFUlRf RVhQUiwNCisgICAgdmVjX29wcm5kKTsNCisgICB2ZWN0X2ZpbmlzaF9zdG10 X2dlbmVyYXRpb24gKHZpbmZvLCBzdG10X2luZm8sDQorICAgICAgICBuZXdf c3RtdCwgZ3NpKTsNCisgICB2ZWNfb3BybmQgPSB2YXI7DQorIH0NCisgICAg ICAgc2lnbmVkIGNoYXIgYmlhc3ZhbA0KKyA9IExPT1BfVklORk9fUEFSVElB TF9MT0FEX1NUT1JFX0JJQVMgKGxvb3BfdmluZm8pOw0KKw0KKyAgICAgICB0 cmVlIGJpYXMgPSBidWlsZF9pbnRfY3N0IChpbnRRSV90eXBlX25vZGUsIGJp YXN2YWwpOw0KLSAgIHRyZWUgYmlhcyA9IGJ1aWxkX2ludF9jc3QgKGludFFJ X3R5cGVfbm9kZSwgYmlhc3ZhbCk7DQotICAgZ2NhbGwgKmNhbGwNCi0gICAg ID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9MRU5fU1RPUkUs IDUsIGRhdGFyZWZfcHRyLA0KLSAgIHB0ciwgZmluYWxfbGVuLCB2ZWNfb3By bmQsDQotICAgYmlhcyk7DQorICAgICAgIGlmICh0YXJnZXRtLnZlY3Rvcml6 ZS5nZXRfbWFza19tb2RlICh2bW9kZSkuZXhpc3RzICgNCisgICAgICZtYXNr bW9kZSkNCisgICAmJiBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wICh2bW9k ZSwgbWFza21vZGUsIGZhbHNlKSkNCisgew0KKyAgIGlmICghZmluYWxfbWFz aykNCisgICAgIGZpbmFsX21hc2sgPSBnZXRfYWxsX29uZXNfbWFzayAobWFz a21vZGUpOw0KKyAgIGNhbGwNCisgICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxf aW50ZXJuYWwgKElGTl9MRU5fTUFTS19TVE9SRSwgNiwNCisgICBkYXRhcmVm X3B0ciwgcHRyLA0KKyAgIGZpbmFsX2xlbiwgZmluYWxfbWFzaywNCisgICB2 ZWNfb3BybmQsIGJpYXMpOw0KKyB9DQorICAgICAgIGVsc2UNCisgY2FsbCA9 IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVOX1NUT1JFLCA1 LA0KKyAgICBkYXRhcmVmX3B0ciwgcHRyLA0KKyAgICBmaW5hbF9sZW4sIHZl Y19vcHJuZCwNCisgICAgYmlhcyk7DQorICAgICB9DQorICAgZWxzZQ0KKyAg ICAgew0KKyAgICAgICBnY2NfYXNzZXJ0IChmaW5hbF9tYXNrKTsNCisgICAg ICAgY2FsbCA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTUFT S19TVE9SRSwgNCwNCisgZGF0YXJlZl9wdHIsIHB0ciwNCisgZmluYWxfbWFz aywgdmVjX29wcm5kKTsNCisgICAgIH0NCiAgZ2ltcGxlX2NhbGxfc2V0X25v dGhyb3cgKGNhbGwsIHRydWUpOw0KICB2ZWN0X2ZpbmlzaF9zdG10X2dlbmVy YXRpb24gKHZpbmZvLCBzdG10X2luZm8sIGNhbGwsIGdzaSk7DQogIG5ld19z dG10ID0gY2FsbDsNCkBAIC0xMDMwNCw2MyArMTAzNDAsOTAgQEAgdmVjdG9y aXphYmxlX2xvYWQgKHZlY19pbmZvICp2aW5mbywNCiAgICAgIGFsaWduLCBt aXNhbGlnbik7DQogICAgYWxpZ24gPSBsZWFzdF9iaXRfaHdpIChtaXNhbGln biB8IGFsaWduKTsNCi0gICAgIGlmIChmaW5hbF9tYXNrKQ0KKyAgICAgaWYg KGZpbmFsX21hc2sNCisgfHwgKGxvb3BfbGVucyAmJiBtZW1vcnlfYWNjZXNz X3R5cGUgIT0gVk1BVF9JTlZBUklBTlQpKQ0KICAgICAgew0KLSB0cmVlIHB0 ciA9IGJ1aWxkX2ludF9jc3QgKHJlZl90eXBlLA0KLSAgIGFsaWduICogQklU U19QRVJfVU5JVCk7DQotIGdjYWxsICpjYWxsDQotICAgPSBnaW1wbGVfYnVp bGRfY2FsbF9pbnRlcm5hbCAoSUZOX01BU0tfTE9BRCwgMywNCi0gZGF0YXJl Zl9wdHIsIHB0ciwNCi0gZmluYWxfbWFzayk7DQotIGdpbXBsZV9jYWxsX3Nl dF9ub3Rocm93IChjYWxsLCB0cnVlKTsNCi0gbmV3X3N0bXQgPSBjYWxsOw0K LSBkYXRhX3JlZiA9IE5VTExfVFJFRTsNCi0gICAgICAgfQ0KLSAgICAgZWxz ZSBpZiAobG9vcF9sZW5zICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBWTUFU X0lOVkFSSUFOVCkNCi0gICAgICAgew0KLSBtYWNoaW5lX21vZGUgdm1vZGUg PSBUWVBFX01PREUgKHZlY3R5cGUpOw0KLSBvcHRfbWFjaGluZV9tb2RlIG5l d19vdm1vZGUNCi0gICA9IGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2bW9k ZSwgdHJ1ZSk7DQotIG1hY2hpbmVfbW9kZSBuZXdfdm1vZGUgPSBuZXdfb3Zt b2RlLnJlcXVpcmUgKCk7DQotIHVuc2lnbmVkIGZhY3RvciA9IChuZXdfb3Zt b2RlID09IHZtb2RlKQ0KLSAgICAgPyAxDQotICAgICA6IEdFVF9NT0RFX1VO SVRfU0laRSAodm1vZGUpOw0KLSB0cmVlIGZpbmFsX2xlbg0KLSAgID0gdmVj dF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5zLA0K LSAgICAgICAgdmVjX251bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQotICAgICAg ICB2ZWNfbnVtICogaiArIGksIGZhY3Rvcik7DQorIGdjYWxsICpjYWxsOw0K dHJlZSBwdHINCiAgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24g KiBCSVRTX1BFUl9VTklUKTsNCisgbWFjaGluZV9tb2RlIHZtb2RlID0gVFlQ RV9NT0RFICh2ZWN0eXBlKTsNCisgbWFjaGluZV9tb2RlIG5ld192bW9kZSA9 IHZtb2RlOw0KKyBpZiAoZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKHZtb2Rl LCB0cnVlKQ0KKyAgICAgICAuZXhpc3RzICgmbmV3X3Ztb2RlKSkNCisgICB7 DQorICAgICB0cmVlIGZpbmFsX2xlbjsNCisgICAgIG1hY2hpbmVfbW9kZSBt YXNrbW9kZTsNCisgICAgIHRyZWUgcWlfdHlwZSA9IHVuc2lnbmVkX2ludFFJ X3R5cGVfbm9kZTsNCisgICAgIHNpZ25lZCBjaGFyIGJpYXN2YWwNCisgICAg ICAgPSBMT09QX1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChsb29w X3ZpbmZvKTsNCisgICAgIHRyZWUgYmlhcw0KKyAgICAgICA9IGJ1aWxkX2lu dF9jc3QgKGludFFJX3R5cGVfbm9kZSwgYmlhc3ZhbCk7DQorICAgICB1bnNp Z25lZCBmYWN0b3IgPSAobmV3X3Ztb2RlID09IHZtb2RlKQ0KKyA/IDENCisg OiBHRVRfTU9ERV9VTklUX1NJWkUgKHZtb2RlKTsNCisgICAgIGlmIChsb29w X2xlbnMpDQorICAgICAgIGZpbmFsX2xlbg0KKyA9IHZlY3RfZ2V0X2xvb3Bf bGVuIChsb29wX3ZpbmZvLCBnc2ksIGxvb3BfbGVucywNCisgICAgICB2ZWNf bnVtICogbmNvcGllcywgdmVjdHlwZSwNCisgICAgICB2ZWNfbnVtICogaiAr IGksIGZhY3Rvcik7DQorICAgICBlbHNlDQorICAgICAgIHsNCisgdHJlZSBp dl90eXBlDQorICAgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29w X3ZpbmZvKTsNCisgZmluYWxfbGVuID0gYnVpbGRfaW50X2NzdCAoDQorICAg aXZfdHlwZSwgVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGUpKTsNCisg ICAgICAgfQ0KLSB0cmVlIHFpX3R5cGUgPSB1bnNpZ25lZF9pbnRRSV90eXBl X25vZGU7DQotDQotIHNpZ25lZCBjaGFyIGJpYXN2YWwgPQ0KLSAgIExPT1Bf VklORk9fUEFSVElBTF9MT0FEX1NUT1JFX0JJQVMgKGxvb3BfdmluZm8pOw0K LQ0KLSB0cmVlIGJpYXMgPSBidWlsZF9pbnRfY3N0IChpbnRRSV90eXBlX25v ZGUsIGJpYXN2YWwpOw0KLQ0KLSBnY2FsbCAqY2FsbA0KLSAgID0gZ2ltcGxl X2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9MRU5fTE9BRCwgNCwNCi0gZGF0 YXJlZl9wdHIsIHB0ciwNCi0gZmluYWxfbGVuLCBiaWFzKTsNCi0gZ2ltcGxl X2NhbGxfc2V0X25vdGhyb3cgKGNhbGwsIHRydWUpOw0KLSBuZXdfc3RtdCA9 IGNhbGw7DQotIGRhdGFfcmVmID0gTlVMTF9UUkVFOw0KLQ0KLSAvKiBOZWVk IGNvbnZlcnNpb24gaWYgaXQncyB3cmFwcGVkIHdpdGggVm5RSS4gICovDQot IGlmICh2bW9kZSAhPSBuZXdfdm1vZGUpDQorICAgICBpZiAodGFyZ2V0bS52 ZWN0b3JpemUuZ2V0X21hc2tfbW9kZSAodm1vZGUpLmV4aXN0cyAoDQorICAg Jm1hc2ttb2RlKQ0KKyAmJiBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wICh2 bW9kZSwgbWFza21vZGUsDQorICAgICAgIGZhbHNlKSkNCisgICAgICAgew0K KyBpZiAoIWZpbmFsX21hc2spDQorICAgZmluYWxfbWFzayA9IGdldF9hbGxf b25lc19tYXNrIChtYXNrbW9kZSk7DQorIGNhbGwgPSBnaW1wbGVfYnVpbGRf Y2FsbF9pbnRlcm5hbCAoDQorICAgSUZOX0xFTl9NQVNLX0xPQUQsIDUsIGRh dGFyZWZfcHRyLCBwdHIsDQorICAgZmluYWxfbGVuLCBmaW5hbF9tYXNrLCBi aWFzKTsNCisgICAgICAgfQ0KKyAgICAgZWxzZQ0KKyAgICAgICB7DQorIGNh bGwNCisgICA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVO X0xPQUQsIDQsDQorIGRhdGFyZWZfcHRyLA0KKyBwdHIsIGZpbmFsX2xlbiwN CisgYmlhcyk7DQorICAgICAgIH0NCisgICAgIGdpbXBsZV9jYWxsX3NldF9u b3Rocm93IChjYWxsLCB0cnVlKTsNCisgICAgIG5ld19zdG10ID0gY2FsbDsN CisgICAgIGRhdGFfcmVmID0gTlVMTF9UUkVFOw0KKyAgICAgLyogTmVlZCBj b252ZXJzaW9uIGlmIGl0J3Mgd3JhcHBlZCB3aXRoIFZuUUkuICAqLw0KKyAg ICAgaWYgKHZtb2RlICE9IG5ld192bW9kZSkNCisgICAgICAgew0KKyB0cmVl IG5ld192dHlwZQ0KKyAgID0gYnVpbGRfdmVjdG9yX3R5cGVfZm9yX21vZGUg KHFpX3R5cGUsDQorIG5ld192bW9kZSk7DQorIHRyZWUgdmFyDQorICAgPSB2 ZWN0X2dldF9uZXdfc3NhX25hbWUgKG5ld192dHlwZSwNCisgICAgdmVjdF9z aW1wbGVfdmFyKTsNCisgZ2ltcGxlX3NldF9saHMgKGNhbGwsIHZhcik7DQor IHZlY3RfZmluaXNoX3N0bXRfZ2VuZXJhdGlvbiAodmluZm8sIHN0bXRfaW5m bywNCisgICAgICBjYWxsLCBnc2kpOw0KKyB0cmVlIG9wDQorICAgPSBidWls ZDEgKFZJRVdfQ09OVkVSVF9FWFBSLCB2ZWN0eXBlLCB2YXIpOw0KKyBuZXdf c3RtdA0KKyAgID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodmVjX2Rlc3QsDQor IFZJRVdfQ09OVkVSVF9FWFBSLCBvcCk7DQorICAgICAgIH0NCisgICB9DQor IGVsc2UNCiAgew0KLSAgICAgdHJlZSBuZXdfdnR5cGUNCi0gICAgICAgPSBi dWlsZF92ZWN0b3JfdHlwZV9mb3JfbW9kZSAocWlfdHlwZSwgbmV3X3Ztb2Rl KTsNCi0gICAgIHRyZWUgdmFyID0gdmVjdF9nZXRfbmV3X3NzYV9uYW1lIChu ZXdfdnR5cGUsDQotICAgICAgIHZlY3Rfc2ltcGxlX3Zhcik7DQotICAgICBn aW1wbGVfc2V0X2xocyAoY2FsbCwgdmFyKTsNCi0gICAgIHZlY3RfZmluaXNo X3N0bXRfZ2VuZXJhdGlvbiAodmluZm8sIHN0bXRfaW5mbywgY2FsbCwNCi0g Z3NpKTsNCi0gICAgIHRyZWUgb3AgPSBidWlsZDEgKFZJRVdfQ09OVkVSVF9F WFBSLCB2ZWN0eXBlLCB2YXIpOw0KLSAgICAgbmV3X3N0bXQNCi0gICAgICAg PSBnaW1wbGVfYnVpbGRfYXNzaWduICh2ZWNfZGVzdCwNCi0gICAgICBWSUVX X0NPTlZFUlRfRVhQUiwgb3ApOw0KKyAgICAgZ2NjX2Fzc2VydCAoZmluYWxf bWFzayk7DQorICAgICBjYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJu YWwgKElGTl9NQVNLX0xPQUQsIDMsDQorICAgICAgICBkYXRhcmVmX3B0ciwg cHRyLA0KKyAgICAgICAgZmluYWxfbWFzayk7DQorICAgICBnaW1wbGVfY2Fs bF9zZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7DQorICAgICBuZXdfc3RtdCA9 IGNhbGw7DQorICAgICBkYXRhX3JlZiA9IE5VTExfVFJFRTsNCiAgfQ0KICAg ICAgfQ0KICAgIGVsc2UNCi0tIA0KMi4zNi4xDQogDQo= ------=_001_NextPart545740674385_=------