From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by sourceware.org (Postfix) with ESMTPS id 1F32F3858C2D for ; Tue, 11 Oct 2022 08:34:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1F32F3858C2D 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: bizesmtp89t1665477269tvk5z46n Received: from LAPTOP-EPITNQBU ( [58.60.1.3]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 11 Oct 2022 16:34:28 +0800 (CST) X-QQ-SSF: 01400000000000D0J000000A0000000 X-QQ-FEAT: D6RqbDSxuq4UoYHXGspJCBhyDRnGhACs2CWDvYELNULQIPDkfJNCzlQmOGGT7 rxtxtZdSalaquCi8OWpSOWCWG72F4bZ30az5n6MKJQdEStGkRAJHU4M3AeYmgDsFBzzk3cb 8iE5yUqy+MOf15l6Rafot9+B9cAQIO53AugMmAT49mz2AiL67Qv0ZY5i7ePKw4TEcM/rUrG XsTPwKRKT4GrR8vXmG+HfV7Kn1dXDiwKChGQG4tOdAl/Qjh+hy4lmVr+PgjkHuyqSKxL0K8 2cDDrE18DGXhwKR/i72RzZJoCAhMYiUvdOeIR3x6vJjk2bY30gAEJXWeus+OrQ/5cQSDzRs V3TcnlvFkOmVgdOIZgmZm0p5jB206jeQ6jCWtyi2PjraQ73Ex1rIg0aORpmYDrpuga/TXSJ wI9UHfE3Q5c= X-QQ-GoodBg: 2 Date: Tue, 11 Oct 2022 16:34:28 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther , gcc-patches Cc: richard.sandiford , ams Subject: Re: [PATCH][RFT] Vectorization of first-order recurrences References: <20221010110339.E9E2513479@imap2.suse-dmz.suse.de> X-Priority: 3 X-GUID: 27FDE85A-BA03-4096-8321-7DDEB57C9892 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <02651FEADC20AB80+2022101116342725936522@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart208323315401_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-11.1 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 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_NextPart208323315401_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 SGksIEkgYXBwbHkgdGhpcyBwYXRjaCBpbiBSVlYgZG93bnN0cmVhbi4gVGVz dGVkIGl0IHdpdGggYSBsb3Qgb2YgdmVjdG9yIGJlbmNobWFyay4gSXQgb3Zl cmFsIGhhcyBhIGdyZWF0ZSBwZXJmb3JtYW5jZSBnYWluLg0KTWF5YmUgdGhl IGxhc3QgdGhpbmcgdG8gbWVyZ2UgdGhpcyBwYXRjaCBpcyB3YWl0IGZvciBS aWNoYXJkIFNhbmRpZm9yZCB0ZXN0IGl0IGluIEFSTSBTVkU/DQoNCkJ5IHRo ZSB3YXksIHdvdWxkIHlvdSBtaW5kIHNoYXJpbmcgdGhlIGNhc2UgbGlzdCB0 aGF0IEdDQyBmYWlsZWQgdG8gdmVjdG9yaXplIGJ1dCBDbGFuZyBzdWNjZWVk ID8gDQpJIGFtIGZhbWlsaWFyIHdpdGggTExWTS4gSSB0aGluayBJIGNhbiBk byB0aGlzIGpvYi4NClRoYW5rcy4NCg0KDQpqdXpoZS56aG9uZ0ByaXZhaS5h aQ0KIA0KRnJvbTogUmljaGFyZCBCaWVuZXINCkRhdGU6IDIwMjItMTAtMTAg MTk6MDMNClRvOiBnY2MtcGF0Y2hlcw0KQ0M6IHJpY2hhcmQuc2FuZGlmb3Jk OyBhbXM7IGp1emhlLnpob25nDQpTdWJqZWN0OiBbUEFUQ0hdW1JGVF0gVmVj dG9yaXphdGlvbiBvZiBmaXJzdC1vcmRlciByZWN1cnJlbmNlcw0KVGhlIGZv bGxvd2luZyBwaWNrcyB1cCB0aGUgcHJvdG90eXBlIGJ5IEp1LVpoZSBaaG9u ZyBmb3IgdmVjdG9yaXppbmcNCmZpcnN0IG9yZGVyIHJlY3VycmVuY2VzLiAg VGhhdCBzb2x2ZXMgdHdvIFRTVkMgbWlzc2VkIG9wdGltaXphdGlvbiBQUnMu DQogDQpUaGVyZSdzIGEgbmV3IHNjYWxhciBjeWNsZSBkZWYga2luZCwgdmVj dF9maXJzdF9vcmRlcl9yZWN1cnJlbmNlDQphbmQgaXQncyBoYW5kbGluZyBv ZiB0aGUgYmFja2VkZ2UgdmFsdWUgdmVjdG9yaXphdGlvbiBpcyBjb21wbGlj YXRlZA0KYnkgdGhlIGZhY3QgdGhhdCB0aGUgdmVjdG9yaXplZCB2YWx1ZSBp c24ndCB0aGUgUEhJIGJ1dCBpbnN0ZWFkDQphIChzZXJpZXMgb2YpIHBlcm11 dGUocykgc2hpZnRpbmcgaW4gdGhlIHJlY3VycmluZyB2YWx1ZSBmcm9tIHRo ZQ0KcHJldmlvdXMgaXRlcmF0aW9uLiAgSSd2ZSBpbXBsZW1lbnRlZCB0aGlz IGJ5IGNyZWF0aW5nIGJvdGggdGhlDQpzaW5nbGUgdmVjdG9yaXplZCBQSEkg YW5kIHRoZSBzZXJpZXMgb2YgcGVybXV0ZXMgd2hlbiB2ZWN0b3JpemluZw0K dGhlIHNjYWxhciBQSEkgYnV0IGxlYXZlIHRoZSBiYWNrZWRnZSB2YWx1ZXMg aW4gYm90aCB1bmFzc2lnbmVkLg0KVGhlIGJhY2tlZGdlIHZhbHVlcyBhcmUg KGZvciB0aGUgdGVzdGNhc2VzKSBjb21wdXRlZCBieSBhIGxvYWQNCndoaWNo IGlzIGFsc28gdGhlIHBsYWNlIGFmdGVyIHdoaWNoIHRoZSBwZXJtdXRlcyBh cmUgaW5zZXJ0ZWQuDQpUaGF0IHBsYWNlbWVudCBhbHNvIHJlc3RyaWN0cyB0 aGUgY2FzZXMgd2UgY2FuIGhhbmRsZSAod2l0aG91dA0KcmVzb3J0aW5nIHRv IGNvZGUgbW90aW9uKS4NCiANCkkgYWRkZWQgYm90aCBjb3N0aW5nIGFuZCBT TFAgaGFuZGxpbmcgdGhvdWdoIFNMUCBoYW5kbGluZyBpcw0KcmVzdHJpY3Rl ZCB0byB0aGUgY2FzZSB3aGVyZSBhIHNpbmdsZSB2ZWN0b3JpemVkIFBISSBp cyBlbm91Z2guDQogDQpNaXNzaW5nIGlzIGVwaWxvZ3VlIGhhbmRsaW5nIC0g d2hpbGUgcHJvbG9ndWUgcGVlbGluZyB3b3VsZA0KYmUgaGFuZGxlZCB0cmFu c3BhcmVudGx5IGJ5IGFkanVzdGluZyBpdl9waGlfcCB0aGUgZXBpbG9ndWUN CmNhc2UgZG9lc24ndCB3b3JrIHdpdGgganVzdCBpbnNlcnRpbmcgYSBzY2Fs YXIgTEMgUEhJIHNpbmNlDQp0aGF0IGEpIGtlZXBzIHRoZSBzY2FsYXIgbG9h ZCBsaXZlIGFuZCBiKSB0aGF0IGxvYWRzIGlzIHRoZQ0Kd3Jvbmcgb25lLCBp dCBoYXMgdG8gYmUgdGhlIGxhc3QsIG11Y2ggbGlrZSB3aGVuIHdlJ2QgdmVj dG9yaXplDQp0aGUgTEMgUEhJIGFzIGxpdmUgb3BlcmF0aW9uLiAgVW5mb3J0 dW5hdGVseSBMSVZFDQpjb21wdXRlL2FuYWx5c2lzIGhhcHBlbnMgdG9vIGVh cmx5IGJlZm9yZSB3ZSBkZWNpZGUgb24NCnBlZWxpbmcuICBXaGVuIHVzaW5n IGZ1bGx5IG1hc2tlZCBsb29wIHZlY3Rvcml6YXRpb24gdGhlDQp2ZWN0LXJl Y3Vyci02LmMgd29ya3MgYXMgZXhwZWN0ZWQgdGhvdWdoLg0KIA0KSSBoYXZl IHRlc3RlZCB0aGlzIG9uIHg4Nl82NCBmb3Igbm93LCBidXQgc2luY2UgZXBp bG9ndWUNCmhhbmRsaW5nIGlzIG1pc3NpbmcgdGhlcmUncyBwcm9iYWJseSBu byBwcmFjdGljYWwgY2FzZXMuDQpNeSBwcm90b3R5cGUgV0hJTEVfVUxUIEFW WDUxMiBwYXRjaCBjYW4gaGFuZGxlIHZlY3QtcmVjdXJyLTYuYw0KanVzdCBm aW5lIGJ1dCBJIGRpZG4ndCBmZWVsIGxpa2UgcnVubmluZyBTUEVDIHdpdGhp biBTREUgbm9yDQppcyB0aGUgV0hJTEVfVUxUIHBhdGNoIGNvbXBsZXRlIGVu b3VnaC4gIEJ1aWxkcyBvZiBTUEVDIDJrNw0Kd2l0aCBmdWxseSBtYXNrZWQg bG9vcHMgc3VjY2VlZCAobWludXMgdGhyZWUgY2FzZXMgb2YNClBSMTA3MDk2 LCBjYXVzZWQgYnkgbXkgV0hJTEVfVUxUIHByb3RvdHlwZSkuDQogDQpCb290 c3RyYXBwZWQgYW5kIHRlc3RlZCBvbiB4ODZfNjQtdW5rbm93bi1saW51eC1n bnUuDQogDQpUZXN0aW5nIHdpdGggU1ZFLCBHQ04gb3IgUlZWIGFwcHJlY2lh dGVkLCBpZGVhcyBob3cgdG8gY2xlYW5seQ0KaGFuZGxlIGVwaWxvZ3VlcyB3 ZWxjb21lLg0KIA0KVGhhbmtzLA0KUmljaGFyZC4NCiANClBSIHRyZWUtb3B0 aW1pemF0aW9uLzk5NDA5DQpQUiB0cmVlLW9wdGltaXphdGlvbi85OTM5NA0K KiB0cmVlLXZlY3Rvcml6ZXIuaCAodmVjdF9kZWZfdHlwZTo6dmVjdF9maXJz dF9vcmRlcl9yZWN1cnJlbmNlKTogQWRkLg0KKHN0bXRfdmVjX2luZm9fdHlw ZTo6cmVjdXJyX2luZm9fdHlwZSk6IExpa2V3aXNlLg0KKHZlY3Rvcml6YWJs ZV9yZWN1cnIpOiBOZXcgZnVuY3Rpb24uDQoqIHRyZWUtdmVjdC1sb29wLmNj ICh2ZWN0X3BoaV9maXJzdF9vcmRlcl9yZWN1cnJlbmNlX3ApOiBOZXcNCmZ1 bmN0aW9uLg0KKHZlY3RfYW5hbHl6ZV9zY2FsYXJfY3ljbGVzXzEpOiBMb29r IGZvciBmaXJzdCBvcmRlcg0KcmVjdXJyZW5jZXMuDQoodmVjdF9hbmFseXpl X2xvb3Bfb3BlcmF0aW9ucyk6IEhhbmRsZSB0aGVtLg0KKHZlY3RfdHJhbnNm b3JtX2xvb3ApOiBMaWtld2lzZS4NCih2ZWN0b3JpemFibGVfcmVjdXJyKTog TmV3IGZ1bmN0aW9uLg0KKG1heWJlX3NldF92ZWN0b3JpemVkX2JhY2tlZGdl X3ZhbHVlKTogSGFuZGxlIHRoZSBiYWNrZWRnZSB2YWx1ZQ0Kc2V0dGluZyBp biB0aGUgZmlyc3Qgb3JkZXIgcmVjdXJyZW5jZSBQSEkgYW5kIHRoZSBwZXJt dXRlcy4NCiogdHJlZS12ZWN0LXN0bXRzLmNjICh2ZWN0X2FuYWx5emVfc3Rt dCk6IEhhbmRsZSBmaXJzdCBvcmRlcg0KcmVjdXJyZW5jZXMuDQoodmVjdF90 cmFuc2Zvcm1fc3RtdCk6IExpa2V3aXNlLg0KKHZlY3RfaXNfc2ltcGxlX3Vz ZSk6IExpa2V3aXNlLg0KKHZlY3RfaXNfc2ltcGxlX3VzZSk6IExpa2V3aXNl Lg0KKiB0cmVlLXZlY3Qtc2xwLmNjICh2ZWN0X2dldF9hbmRfY2hlY2tfc2xw X2RlZnMpOiBMaWtld2lzZS4NCih2ZWN0X2J1aWxkX3NscF90cmVlXzIpOiBM aWtld2lzZS4NCih2ZWN0X3NjaGVkdWxlX3NjYyk6IEhhbmRsZSB0aGUgYmFj a2VkZ2UgdmFsdWUgc2V0dGluZyBpbiB0aGUNCmZpcnN0IG9yZGVyIHJlY3Vy cmVuY2UgUEhJIGFuZCB0aGUgcGVybXV0ZXMuDQogDQoqIGdjYy5kZy92ZWN0 L3ZlY3QtcmVjdXJyLTEuYzogTmV3IHRlc3RjYXNlLg0KKiBnY2MuZGcvdmVj dC92ZWN0LXJlY3Vyci0yLmM6IExpa2V3aXNlLg0KKiBnY2MuZGcvdmVjdC92 ZWN0LXJlY3Vyci0zLmM6IExpa2V3aXNlLg0KKiBnY2MuZGcvdmVjdC92ZWN0 LXJlY3Vyci00LmM6IExpa2V3aXNlLg0KKiBnY2MuZGcvdmVjdC92ZWN0LXJl Y3Vyci01LmM6IExpa2V3aXNlLg0KKiBnY2MuZGcvdmVjdC92ZWN0LXJlY3Vy ci02LmM6IExpa2V3aXNlLg0KKiBnY2MuZGcvdmVjdC90c3ZjL3ZlY3QtdHN2 Yy1zMjUyLmM6IFVuLVhGQUlMLg0KKiBnY2MuZGcvdmVjdC90c3ZjL3ZlY3Qt dHN2Yy1zMjU0LmM6IExpa2V3aXNlLg0KKiBnY2MuZGcvdmVjdC90c3ZjL3Zl Y3QtdHN2Yy1zMjkxLmM6IExpa2V3aXNlLg0KIA0KQ28tYXV0aG9yZWQtYnk6 IEp1LVpoZSBaaG9uZyA8anV6aGUuemhvbmdAcml2YWkuYWk+DQotLS0NCi4u Li9nY2MuZGcvdmVjdC90c3ZjL3ZlY3QtdHN2Yy1zMjUyLmMgICAgICAgICB8 ICAgMiArLQ0KLi4uL2djYy5kZy92ZWN0L3RzdmMvdmVjdC10c3ZjLXMyNTQu YyAgICAgICAgIHwgICAyICstDQouLi4vZ2NjLmRnL3ZlY3QvdHN2Yy92ZWN0 LXRzdmMtczI5MS5jICAgICAgICAgfCAgIDIgKy0NCmdjYy90ZXN0c3VpdGUv Z2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItMS5jICAgICB8ICAzOCArKysNCmdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItMi5jICAgICB8 ICAzOSArKysNCmdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1 cnItMy5jICAgICB8ICAzOSArKysNCmdjYy90ZXN0c3VpdGUvZ2NjLmRnL3Zl Y3QvdmVjdC1yZWN1cnItNC5jICAgICB8ICA0MiArKysNCmdjYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItNS5jICAgICB8ICA0MyArKysN CmdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItNi5jICAg ICB8ICAzOSArKysNCmdjYy90cmVlLXZlY3QtbG9vcC5jYyAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI4NiArKysrKysrKysrKysrKysrLS0NCmdjYy90 cmVlLXZlY3Qtc2xwLmNjICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAz OCArKy0NCmdjYy90cmVlLXZlY3Qtc3RtdHMuY2MgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxNyArLQ0KZ2NjL3RyZWUtdmVjdG9yaXplci5oICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA0ICsNCjEzIGZpbGVzIGNoYW5nZWQs IDU2MyBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkNCmNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVj dXJyLTEuYw0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1yZWN1cnItMi5jDQpjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlY3Vyci0zLmMNCmNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3Zl Y3QtcmVjdXJyLTQuYw0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItNS5jDQpjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlY3Vyci02 LmMNCiANCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0 L3RzdmMvdmVjdC10c3ZjLXMyNTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ZlY3QvdHN2Yy92ZWN0LXRzdmMtczI1Mi5jDQppbmRleCBmMTMwMmI2MGFl NS4uODNlYWE3YThmZjUgMTAwNjQ0DQotLS0gYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy92ZWN0L3RzdmMvdmVjdC10c3ZjLXMyNTIuYw0KKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC90c3ZjL3ZlY3QtdHN2Yy1zMjUyLmMNCkBA IC00MCw0ICs0MCw0IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFy Z3YpDQogICByZXR1cm4gMDsNCn0NCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgInZlY3Rvcml6ZWQgMSBsb29wcyIgInZlY3QiIHsgeGZhaWwg Ki0qLSogfSB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgInZlY3Rvcml6ZWQgMSBsb29wcyIgInZlY3QiIH0gfSAqLw0KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdHN2Yy92ZWN0LXRz dmMtczI1NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC90c3ZjL3Zl Y3QtdHN2Yy1zMjU0LmMNCmluZGV4IGJkYzhhMDFlMmE1Li4wNmU5YjBhODQ5 ZCAxMDA2NDQNCi0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdHN2 Yy92ZWN0LXRzdmMtczI1NC5jDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy92ZWN0L3RzdmMvdmVjdC10c3ZjLXMyNTQuYw0KQEAgLTM5LDQgKzM5LDQg QEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAgIHJldHVy biAwOw0KfQ0KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidmVj dG9yaXplZCAxIGxvb3BzIiAidmVjdCIgeyB4ZmFpbCAqLSotKiB9IH0gfSAq Lw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidmVjdG9yaXpl ZCAxIGxvb3BzIiAidmVjdCIgfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC90c3ZjL3ZlY3QtdHN2Yy1zMjkxLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3RzdmMvdmVjdC10c3ZjLXMyOTEu Yw0KaW5kZXggMGI0NzRjMmU4MWEuLjkxY2RjMTIxMDk1IDEwMDY0NA0KLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC90c3ZjL3ZlY3QtdHN2Yy1z MjkxLmMNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdHN2Yy92 ZWN0LXRzdmMtczI5MS5jDQpAQCAtMzksNCArMzksNCBAQCBpbnQgbWFpbiAo aW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KICAgcmV0dXJuIDA7DQp9DQotLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9v cHMiICJ2ZWN0IiB7IHhmYWlsICotKi0qIH0gfSB9ICovDQorLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9vcHMiICJ2 ZWN0IiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy92ZWN0L3ZlY3QtcmVjdXJyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ZlY3QvdmVjdC1yZWN1cnItMS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMDAwMDAuLjZlYjU5ZmRmODU0DQotLS0gL2Rldi9udWxs DQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJy LTEuYw0KQEAgLTAsMCArMSwzOCBAQA0KKy8qIHsgZGctZG8gcnVuIH0gKi8N CisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9 ICovDQorDQorI2luY2x1ZGUgInRyZWUtdmVjdC5oIg0KKw0KK3ZvaWQgX19h dHRyaWJ1dGVfXygobm9pcGEpKQ0KK2ZvbyAoaW50ICogX19yZXN0cmljdF9f IGEsIGludCAqIF9fcmVzdHJpY3RfXyBiLCBpbnQgKiBfX3Jlc3RyaWN0X18g YykNCit7DQorICBpbnQgdCA9ICpjOw0KKyAgZm9yIChpbnQgaSA9IDA7IGkg PCA2NDsgKytpKQ0KKyAgICB7DQorICAgICAgYltpXSA9IGFbaV0gLSB0Ow0K KyAgICAgIHQgPSBhW2ldOw0KKyAgICB9DQorfQ0KKw0KK2ludCBhWzY0XSwg Yls2NF07DQorDQoraW50DQorbWFpbiAoKQ0KK3sNCisgIGNoZWNrX3ZlY3Qg KCk7DQorICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyArK2kpDQorICAgIHsN CisgICAgICBhW2ldID0gaTsNCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgi IiA6OjogIm1lbW9yeSIpOw0KKyAgICB9DQorICBpbnQgYyA9IDc7DQorICBm b28gKGEsIGIsICZjKTsNCisgIGZvciAoaW50IGkgPSAxOyBpIDwgNjQ7ICsr aSkNCisgICAgaWYgKGJbaV0gIT0gYVtpXSAtIGFbaS0xXSkNCisgICAgICBh Ym9ydCAoKTsNCisgIGlmIChiWzBdICE9IC03KQ0KKyAgICBhYm9ydCAoKTsN CisgIHJldHVybiAwOw0KK30NCisNCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgInZl Y3QiIH0gfSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ZlY3QvdmVjdC1yZWN1cnItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dmVjdC92ZWN0LXJlY3Vyci0yLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAwMC4uOTdlZmFhYTM4YmMNCi0tLSAvZGV2L251bGwN CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnIt Mi5jDQpAQCAtMCwwICsxLDM5IEBADQorLyogeyBkZy1kbyBydW4gfSAqLw0K Ky8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0g Ki8NCisNCisjaW5jbHVkZSAidHJlZS12ZWN0LmgiDQorDQordm9pZCBfX2F0 dHJpYnV0ZV9fKChub2lwYSkpDQorZm9vIChpbnQgKiBfX3Jlc3RyaWN0X18g YSwgc2hvcnQgKiBfX3Jlc3RyaWN0X18gYiwgaW50ICogX19yZXN0cmljdF9f IGMpDQorew0KKyAgaW50IHQgPSAqYzsNCisgIGZvciAoaW50IGkgPSAwOyBp IDwgNjQ7ICsraSkNCisgICAgew0KKyAgICAgIGJbaV0gPSBhW2ldIC0gdDsN CisgICAgICB0ID0gYVtpXTsNCisgICAgfQ0KK30NCisNCitpbnQgYVs2NF07 DQorc2hvcnQgYls2NF07DQorDQoraW50DQorbWFpbiAoKQ0KK3sNCisgIGNo ZWNrX3ZlY3QgKCk7DQorICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyArK2kp DQorICAgIHsNCisgICAgICBhW2ldID0gaTsNCisgICAgICBfX2FzbV9fIHZv bGF0aWxlICgiIiA6OjogIm1lbW9yeSIpOw0KKyAgICB9DQorICBpbnQgYyA9 IDc7DQorICBmb28gKGEsIGIsICZjKTsNCisgIGZvciAoaW50IGkgPSAxOyBp IDwgNjQ7ICsraSkNCisgICAgaWYgKGJbaV0gIT0gYVtpXSAtIGFbaS0xXSkN CisgICAgICBhYm9ydCAoKTsNCisgIGlmIChiWzBdICE9IC03KQ0KKyAgICBh Ym9ydCAoKTsNCisgIHJldHVybiAwOw0KK30NCisNCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5j dGlvbiIgInZlY3QiIH0gfSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItMy5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdmVjdC92ZWN0LXJlY3Vyci0zLmMNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uNjIxYTVkOGEyNTcNCi0tLSAv ZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVj dC1yZWN1cnItMy5jDQpAQCAtMCwwICsxLDM5IEBADQorLyogeyBkZy1kbyBy dW4gfSAqLw0KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZl Y3RfaW50IH0gKi8NCisNCisjaW5jbHVkZSAidHJlZS12ZWN0LmgiDQorDQor dm9pZCBfX2F0dHJpYnV0ZV9fKChub2lwYSkpDQorZm9vIChpbnQgKiBfX3Jl c3RyaWN0X18gYSwgc2lnbmVkIGNoYXIgKiBfX3Jlc3RyaWN0X18gYiwgaW50 ICogX19yZXN0cmljdF9fIGMpDQorew0KKyAgaW50IHQgPSAqYzsNCisgIGZv ciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsraSkNCisgICAgew0KKyAgICAgIGJb aV0gPSBhW2ldIC0gdDsNCisgICAgICB0ID0gYVtpXTsNCisgICAgfQ0KK30N CisNCitpbnQgYVs2NF07DQorc2lnbmVkIGNoYXIgYls2NF07DQorDQoraW50 DQorbWFpbiAoKQ0KK3sNCisgIGNoZWNrX3ZlY3QgKCk7DQorICBmb3IgKGlu dCBpID0gMDsgaSA8IDY0OyArK2kpDQorICAgIHsNCisgICAgICBhW2ldID0g aTsNCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiIiA6OjogIm1lbW9yeSIp Ow0KKyAgICB9DQorICBpbnQgYyA9IDc7DQorICBmb28gKGEsIGIsICZjKTsN CisgIGZvciAoaW50IGkgPSAxOyBpIDwgNjQ7ICsraSkNCisgICAgaWYgKGJb aV0gIT0gYVtpXSAtIGFbaS0xXSkNCisgICAgICBhYm9ydCAoKTsNCisgIGlm IChiWzBdICE9IC03KQ0KKyAgICBhYm9ydCAoKTsNCisgIHJldHVybiAwOw0K K30NCisNCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInZlY3Rv cml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgInZlY3QiIH0gfSAqLw0KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1 cnItNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlY3Vy ci00LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAw MC4uZjZkYmM0OTRhNjINCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItNC5jDQpAQCAtMCwwICsx LDQyIEBADQorLyogeyBkZy1kbyBydW4gfSAqLw0KKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCisNCisjaW5jbHVk ZSAidHJlZS12ZWN0LmgiDQorDQordm9pZCBfX2F0dHJpYnV0ZV9fKChub2lw YSkpDQorZm9vIChpbnQgKiBfX3Jlc3RyaWN0X18gYSwgaW50ICogX19yZXN0 cmljdF9fIGIsIGludCAqIF9fcmVzdHJpY3RfXyBjKQ0KK3sNCisgIGludCB0 MSA9ICpjOw0KKyAgaW50IHQyID0gKmM7DQorICBmb3IgKGludCBpID0gMDsg aSA8IDY0OyBpKz0yKQ0KKyAgICB7DQorICAgICAgYltpXSA9IGFbaV0gLSB0 MTsNCisgICAgICB0MSA9IGFbaV07DQorICAgICAgYltpKzFdID0gYVtpKzFd IC0gdDI7DQorICAgICAgdDIgPSBhW2krMV07DQorICAgIH0NCit9DQorDQor aW50IGFbNjRdLCBiWzY0XTsNCisNCitpbnQNCittYWluICgpDQorew0KKyAg Y2hlY2tfdmVjdCAoKTsNCisgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsr aSkNCisgICAgew0KKyAgICAgIGFbaV0gPSBpOw0KKyAgICAgIF9fYXNtX18g dm9sYXRpbGUgKCIiIDo6OiAibWVtb3J5Iik7DQorICAgIH0NCisgIGludCBj ID0gNzsNCisgIGZvbyAoYSwgYiwgJmMpOw0KKyAgZm9yIChpbnQgaSA9IDI7 IGkgPCA2NDsgaSs9MikNCisgICAgaWYgKGJbaV0gIT0gYVtpXSAtIGFbaS0y XQ0KKyB8fCBiW2krMV0gIT0gYVtpKzFdIC0gYVtpLTFdKQ0KKyAgICAgIGFi b3J0ICgpOw0KKyAgaWYgKGJbMF0gIT0gLTcgfHwgYlsxXSAhPSAtNikNCisg ICAgYWJvcnQgKCk7DQorICByZXR1cm4gMDsNCit9DQorDQorLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4g ZnVuY3Rpb24iICJ2ZWN0IiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTUuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItNS5jDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjE5YzU2ZGY5ZTgzDQot LS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0 L3ZlY3QtcmVjdXJyLTUuYw0KQEAgLTAsMCArMSw0MyBAQA0KKy8qIHsgZGct ZG8gcnVuIH0gKi8NCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdl dCB2ZWN0X2ludCB9ICovDQorDQorI2luY2x1ZGUgInRyZWUtdmVjdC5oIg0K Kw0KK3ZvaWQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KK2ZvbyAoaW50ICog X19yZXN0cmljdF9fIGEsIHNob3J0ICogX19yZXN0cmljdF9fIGIsIGludCAq IF9fcmVzdHJpY3RfXyBjKQ0KK3sNCisgIGludCB0MSA9ICpjOw0KKyAgaW50 IHQyID0gKmM7DQorICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyBpKz0yKQ0K KyAgICB7DQorICAgICAgYltpXSA9IGFbaV0gLSB0MTsNCisgICAgICB0MSA9 IGFbaV07DQorICAgICAgYltpKzFdID0gYVtpKzFdIC0gdDI7DQorICAgICAg dDIgPSBhW2krMV07DQorICAgIH0NCit9DQorDQoraW50IGFbNjRdOw0KK3No b3J0IGJbNjRdOw0KKw0KK2ludA0KK21haW4gKCkNCit7DQorICBjaGVja192 ZWN0ICgpOw0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgKytpKQ0KKyAg ICB7DQorICAgICAgYVtpXSA9IGk7DQorICAgICAgX19hc21fXyB2b2xhdGls ZSAoIiIgOjo6ICJtZW1vcnkiKTsNCisgICAgfQ0KKyAgaW50IGMgPSA3Ow0K KyAgZm9vIChhLCBiLCAmYyk7DQorICBmb3IgKGludCBpID0gMjsgaSA8IDY0 OyBpKz0yKQ0KKyAgICBpZiAoYltpXSAhPSBhW2ldIC0gYVtpLTJdDQorIHx8 IGJbaSsxXSAhPSBhW2krMV0gLSBhW2ktMV0pDQorICAgICAgYWJvcnQgKCk7 DQorICBpZiAoYlswXSAhPSAtNyB8fCBiWzFdICE9IC02KQ0KKyAgICBhYm9y dCAoKTsNCisgIHJldHVybiAwOw0KK30NCisNCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlv biIgInZlY3QiIH0gfSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdmVjdC92ZWN0LXJlY3Vyci02LmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uZTc3MTI2ODA4NTMNCi0tLSAvZGV2 L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1y ZWN1cnItNi5jDQpAQCAtMCwwICsxLDM5IEBADQorLyogeyBkZy1kbyBydW4g fSAqLw0KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3Rf aW50IH0gKi8NCisNCisjaW5jbHVkZSAidHJlZS12ZWN0LmgiDQorDQordm9p ZCBfX2F0dHJpYnV0ZV9fKChub2lwYSkpDQorZm9vIChpbnQgKiBfX3Jlc3Ry aWN0X18gYSwgaW50ICogX19yZXN0cmljdF9fIGIsIGludCAqIF9fcmVzdHJp Y3RfXyBjLCBpbnQgbikNCit7DQorICBpbnQgdCA9ICpjOw0KKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBuOyArK2kpDQorICAgIHsNCisgICAgICBiW2ldID0g YVtpXSAtIHQ7DQorICAgICAgdCA9IGFbaV07DQorICAgIH0NCit9DQorDQor aW50IGFbNjRdLCBiWzY0XTsNCisNCitpbnQNCittYWluICgpDQorew0KKyAg Y2hlY2tfdmVjdCAoKTsNCisgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsr aSkNCisgICAgew0KKyAgICAgIGFbaV0gPSBpOw0KKyAgICAgIF9fYXNtX18g dm9sYXRpbGUgKCIiIDo6OiAibWVtb3J5Iik7DQorICAgIH0NCisgIGludCBj ID0gNzsNCisgIGZvbyAoYSwgYiwgJmMsIDYzKTsNCisgIGZvciAoaW50IGkg PSAxOyBpIDwgNjM7ICsraSkNCisgICAgaWYgKGJbaV0gIT0gYVtpXSAtIGFb aS0xXSkNCisgICAgICBhYm9ydCAoKTsNCisgIGlmIChiWzBdICE9IC03KQ0K KyAgICBhYm9ydCAoKTsNCisgIHJldHVybiAwOw0KK30NCisNCisvKiA/Pz8g IFdlIG1pc3MgZXBpbG9ndWUgaGFuZGxpbmcgZm9yIGZpcnN0IG9yZGVyIHJl Y3VycmVuY2VzLiAgKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgInZlY3QiIHsg dGFyZ2V0IHZlY3RfZnVsbHlfbWFza2VkIH0gfSB9ICovDQpkaWZmIC0tZ2l0 IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29w LmNjDQppbmRleCAyNTM2Y2MzY2Y0OS4uYjU0ODIwYTk2MGIgMTAwNjQ0DQot LS0gYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCisrKyBiL2djYy90cmVlLXZl Y3QtbG9vcC5jYw0KQEAgLTUyOSw2ICs1MjksNDUgQEAgdmVjdF9pbm5lcl9w aGlfaW5fZG91YmxlX3JlZHVjdGlvbl9wIChsb29wX3ZlY19pbmZvIGxvb3Bf dmluZm8sIGdwaGkgKnBoaSkNCiAgIHJldHVybiBmYWxzZTsNCn0NCisvKiBS ZXR1cm5zIHRydWUgaWYgUGhpIGlzIGEgZmlyc3Qtb3JkZXIgcmVjdXJyZW5j ZS4gQSBmaXJzdC1vcmRlcg0KKyAgIHJlY3VycmVuY2UgaXMgYSBub24tcmVk dWN0aW9uIHJlY3VycmVuY2UgcmVsYXRpb24gaW4gd2hpY2ggdGhlIHZhbHVl IG9mDQorICAgdGhlIHJlY3VycmVuY2UgaW4gdGhlIGN1cnJlbnQgbG9vcCBp dGVyYXRpb24gZXF1YWxzIGEgdmFsdWUgZGVmaW5lZCBpbg0KKyAgIHRoZSBw cmV2aW91cyBpdGVyYXRpb24uICAqLw0KKw0KK3N0YXRpYyBib29sDQordmVj dF9waGlfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZV9wIChsb29wX3ZlY19pbmZv IGxvb3BfdmluZm8sIGNsYXNzIGxvb3AgKmxvb3AsDQorICAgIGdwaGkgKnBo aSkNCit7DQorICAvKiBFbnN1cmUgdGhlIGxvb3AgbGF0Y2ggZGVmaW5pdGlv biBpcyBmcm9tIHdpdGhpbiB0aGUgbG9vcC4gICovDQorICBlZGdlIGxhdGNo ID0gbG9vcF9sYXRjaF9lZGdlIChsb29wKTsNCisgIHRyZWUgbGRlZiA9IFBI SV9BUkdfREVGX0ZST01fRURHRSAocGhpLCBsYXRjaCk7DQorICBpZiAoVFJF RV9DT0RFIChsZGVmKSAhPSBTU0FfTkFNRQ0KKyAgICAgIHx8IFNTQV9OQU1F X0lTX0RFRkFVTFRfREVGIChsZGVmKQ0KKyAgICAgIHx8ICFmbG93X2JiX2lu c2lkZV9sb29wX3AgKGxvb3AsIGdpbXBsZV9iYiAoU1NBX05BTUVfREVGX1NU TVQgKGxkZWYpKSkpDQorICAgIHJldHVybiBmYWxzZTsNCisNCisgIHRyZWUg ZGVmID0gZ2ltcGxlX3BoaV9yZXN1bHQgKHBoaSk7DQorDQorICAvKiBFbnN1 cmUgZXZlcnkgdXNlX3N0bXQgb2YgdGhlIHBoaSBub2RlIGlzIGRvbWluYXRl ZCBieSB0aGUgbGF0Y2gNCisgICAgIGRlZmluaXRpb24uICAqLw0KKyAgaW1t X3VzZV9pdGVyYXRvciBpbW1faXRlcjsNCisgIHVzZV9vcGVyYW5kX3AgdXNl X3A7DQorICBGT1JfRUFDSF9JTU1fVVNFX0ZBU1QgKHVzZV9wLCBpbW1faXRl ciwgZGVmKQ0KKyAgICBpZiAoIWlzX2dpbXBsZV9kZWJ1ZyAoVVNFX1NUTVQg KHVzZV9wKSkNCisgJiYgKFNTQV9OQU1FX0RFRl9TVE1UIChsZGVmKSA9PSBV U0VfU1RNVCAodXNlX3ApDQorICAgICB8fCAhdmVjdF9zdG10X2RvbWluYXRl c19zdG10X3AgKFNTQV9OQU1FX0RFRl9TVE1UIChsZGVmKSwNCisgICAgIFVT RV9TVE1UICh1c2VfcCkpKSkNCisgICAgICByZXR1cm4gZmFsc2U7DQorDQor ICAvKiBGaXJzdC1vcmRlciByZWN1cnJlbmNlIGF1dG92ZWN0b3JpemF0aW9u IG5lZWRzIHNodWZmbGUgdmVjdG9yLiAgKi8NCisgIHRyZWUgc2NhbGFyX3R5 cGUgPSBUUkVFX1RZUEUgKGRlZik7DQorICB0cmVlIHZlY3R5cGUgPSBnZXRf dmVjdHlwZV9mb3Jfc2NhbGFyX3R5cGUgKGxvb3BfdmluZm8sIHNjYWxhcl90 eXBlKTsNCisgIGlmICghdmVjdHlwZSkNCisgICAgcmV0dXJuIGZhbHNlOw0K Kw0KKyAgcmV0dXJuIHRydWU7DQorfQ0KKw0KLyogRnVuY3Rpb24gdmVjdF9h bmFseXplX3NjYWxhcl9jeWNsZXNfMS4NCiAgICBFeGFtaW5lIHRoZSBjcm9z cyBpdGVyYXRpb24gZGVmLXVzZSBjeWNsZXMgb2Ygc2NhbGFyIHZhcmlhYmxl cw0KQEAgLTY2Niw2ICs3MDUsOCBAQCB2ZWN0X2FuYWx5emVfc2NhbGFyX2N5 Y2xlc18xIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIGNsYXNzIGxvb3Ag Kmxvb3AsDQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQog ICAgICAgICB9DQorICAgICAgZWxzZSBpZiAodmVjdF9waGlfZmlyc3Rfb3Jk ZXJfcmVjdXJyZW5jZV9wIChsb29wX3ZpbmZvLCBsb29wLCBwaGkpKQ0KKyBT VE1UX1ZJTkZPX0RFRl9UWVBFIChzdG10X3ZpbmZvKSA9IHZlY3RfZmlyc3Rf b3JkZXJfcmVjdXJyZW5jZTsNCiAgICAgICBlbHNlDQogICAgICAgICBpZiAo ZHVtcF9lbmFibGVkX3AgKCkpDQogICAgICAgICAgIGR1bXBfcHJpbnRmX2xv YyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIHZlY3RfbG9jYXRpb24sDQpA QCAtMTgxMCw3ICsxODUxLDggQEAgdmVjdF9hbmFseXplX2xvb3Bfb3BlcmF0 aW9ucyAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvKQ0KICAgICAgICAgICBp ZiAoKFNUTVRfVklORk9fUkVMRVZBTlQgKHN0bXRfaW5mbykgPT0gdmVjdF91 c2VkX2luX3Njb3BlDQogICAgICAgICAgICAgICAgfHwgU1RNVF9WSU5GT19M SVZFX1AgKHN0bXRfaW5mbykpDQotICAgICAgICAgICAgICAmJiBTVE1UX1ZJ TkZPX0RFRl9UWVBFIChzdG10X2luZm8pICE9IHZlY3RfaW5kdWN0aW9uX2Rl ZikNCisgICAgICAgJiYgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZv KSAhPSB2ZWN0X2luZHVjdGlvbl9kZWYNCisgICAgICAgJiYgU1RNVF9WSU5G T19ERUZfVFlQRSAoc3RtdF9pbmZvKSAhPSB2ZWN0X2ZpcnN0X29yZGVyX3Jl Y3VycmVuY2UpDQogICAgLyogQSBzY2FsYXItZGVwZW5kZW5jZSBjeWNsZSB0 aGF0IHdlIGRvbid0IHN1cHBvcnQuICAqLw0KICAgIHJldHVybiBvcHRfcmVz dWx0OjpmYWlsdXJlX2F0IChwaGksDQogICAibm90IHZlY3Rvcml6ZWQ6Ig0K QEAgLTE4MzEsNiArMTg3MywxMSBAQCB2ZWN0X2FuYWx5emVfbG9vcF9vcGVy YXRpb25zIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8pDQogICAgICAgJiYg ISBQVVJFX1NMUF9TVE1UIChzdG10X2luZm8pKQ0Kb2sgPSB2ZWN0b3JpemFi bGVfcmVkdWN0aW9uIChsb29wX3ZpbmZvLA0KICAgICBzdG10X2luZm8sIE5V TEwsIE5VTEwsICZjb3N0X3ZlYyk7DQorICAgICAgIGVsc2UgaWYgKChTVE1U X1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8pDQorID09IHZlY3RfZmlyc3Rf b3JkZXJfcmVjdXJyZW5jZSkNCisgICAgICAgICYmICEgUFVSRV9TTFBfU1RN VCAoc3RtdF9pbmZvKSkNCisgb2sgPSB2ZWN0b3JpemFibGVfcmVjdXJyIChs b29wX3ZpbmZvLCBzdG10X2luZm8sIE5VTEwsIE5VTEwsDQorICAgICZjb3N0 X3ZlYyk7DQogICAgICAgICAgICAgfQ0KICAvKiBTTFAgUEhJcyBhcmUgdGVz dGVkIGJ5IHZlY3Rfc2xwX2FuYWx5emVfbm9kZV9vcGVyYXRpb25zLiAgKi8N CkBAIC04MjY3LDYgKzgzMTQsMTgzIEBAIHZlY3Rvcml6YWJsZV9waGkgKHZl Y19pbmZvICosDQogICByZXR1cm4gdHJ1ZTsNCn0NCisvKiBWZWN0b3JpemVz IGZpcnN0IG9yZGVyIHJlY3VycmVuY2VzLiAgKi8NCisNCitib29sDQordmVj dG9yaXphYmxlX3JlY3VyciAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCBz dG10X3ZlY19pbmZvIHN0bXRfaW5mbywNCisgICAgICAgZ2ltcGxlICoqdmVj X3N0bXQsIHNscF90cmVlIHNscF9ub2RlLA0KKyAgICAgICBzdG10X3ZlY3Rv cl9mb3JfY29zdCAqY29zdF92ZWMpDQorew0KKyAgaWYgKCFsb29wX3ZpbmZv IHx8ICFpc19hPGdwaGkgKj4gKHN0bXRfaW5mby0+c3RtdCkpDQorICAgIHJl dHVybiBmYWxzZTsNCisNCisgIGdwaGkgKnBoaSA9IGFzX2E8Z3BoaSAqPiAo c3RtdF9pbmZvLT5zdG10KTsNCisNCisgIC8qIFNvIGZhciB3ZSBvbmx5IHN1 cHBvcnQgZmlyc3Qtb3JkZXIgcmVjdXJyZW5jZSBhdXRvLXZlY3Rvcml6YXRp b24uICAqLw0KKyAgaWYgKFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRfaW5m bykgIT0gdmVjdF9maXJzdF9vcmRlcl9yZWN1cnJlbmNlKQ0KKyAgICByZXR1 cm4gZmFsc2U7DQorDQorICB0cmVlIHZlY3R5cGUgPSBTVE1UX1ZJTkZPX1ZF Q1RZUEUgKHN0bXRfaW5mbyk7DQorICB1bnNpZ25lZCBuY29waWVzOw0KKyAg aWYgKHNscF9ub2RlKQ0KKyAgICBuY29waWVzID0gU0xQX1RSRUVfTlVNQkVS X09GX1ZFQ19TVE1UUyAoc2xwX25vZGUpOw0KKyAgZWxzZQ0KKyAgICBuY29w aWVzID0gdmVjdF9nZXRfbnVtX2NvcGllcyAobG9vcF92aW5mbywgdmVjdHlw ZSk7DQorICBwb2x5X2ludDY0IG51bml0cyA9IFRZUEVfVkVDVE9SX1NVQlBB UlRTICh2ZWN0eXBlKTsNCisgIHVuc2lnbmVkIGRpc3QgPSBzbHBfbm9kZSA/ IFNMUF9UUkVFX0xBTkVTIChzbHBfbm9kZSkgOiAxOw0KKyAgLyogV2UgbmVl ZCB0byBiZSBhYmxlIHRvIG1ha2UgcHJvZ3Jlc3Mgd2l0aCBhIHNpbmdsZSB2 ZWN0b3IuICAqLw0KKyAgaWYgKG1heWJlX2d0IChkaXN0ICogMiwgbnVuaXRz KSkNCisgICAgew0KKyAgICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCisg ZHVtcF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwgdmVj dF9sb2NhdGlvbiwNCisgImZpcnN0IG9yZGVyIHJlY3VycmVuY2UgZXhjZWVk cyBoYWxmIG9mICINCisgImEgdmVjdG9yXG4iKTsNCisgICAgICByZXR1cm4g ZmFsc2U7DQorICAgIH0NCisNCisgIC8qIEZpcnN0LW9yZGVyIHJlY3VycmVu Y2UgYXV0b3ZlY3Rvcml6YXRpb24gbmVlZHMgdG8gaGFuZGxlIHBlcm11dGF0 aW9uDQorICAgICB3aXRoIGluZGljZXMgPSBbbnVuaXRzLTEsIG51bml0cywg bnVuaXRzKzEsIC4uLl0uICAqLw0KKyAgdmVjX3Blcm1fYnVpbGRlciBzZWwg KG51bml0cywgMSwgMyk7DQorICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsr aSkNCisgICAgc2VsLnF1aWNrX3B1c2ggKG51bml0cyAtIGRpc3QgKyBpKTsN CisgIHZlY19wZXJtX2luZGljZXMgaW5kaWNlcyAoc2VsLCAxLCBudW5pdHMg KiAyKTsNCisNCisgIGlmICghdmVjX3N0bXQpIC8qIHRyYW5zZm9ybWF0aW9u IG5vdCByZXF1aXJlZC4gICovDQorICAgIHsNCisgICAgICBpZiAoIWNhbl92 ZWNfcGVybV9jb25zdF9wIChUWVBFX01PREUgKHZlY3R5cGUpLCBUWVBFX01P REUgKHZlY3R5cGUpLA0KKyBpbmRpY2VzKSkNCisgcmV0dXJuIGZhbHNlOw0K Kw0KKyAgICAgIGlmIChzbHBfbm9kZSkNCisgew0KKyAgIC8qIFdlIGV2ZW50 dWFsbHkgbmVlZCB0byBzZXQgYSB2ZWN0b3IgdHlwZSBvbiBpbnZhcmlhbnQN CisgICAgICBhcmd1bWVudHMuICAqLw0KKyAgIHVuc2lnbmVkIGo7DQorICAg c2xwX3RyZWUgY2hpbGQ7DQorICAgRk9SX0VBQ0hfVkVDX0VMVCAoU0xQX1RS RUVfQ0hJTERSRU4gKHNscF9ub2RlKSwgaiwgY2hpbGQpDQorICAgICBpZiAo IXZlY3RfbWF5YmVfdXBkYXRlX3NscF9vcF92ZWN0eXBlDQorICAgKGNoaWxk LCBTTFBfVFJFRV9WRUNUWVBFIChzbHBfbm9kZSkpKQ0KKyAgICAgICB7DQor IGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCisgICBkdW1wX3ByaW50Zl9sb2Mg KE1TR19NSVNTRURfT1BUSU1JWkFUSU9OLCB2ZWN0X2xvY2F0aW9uLA0KKyAg ICAiaW5jb21wYXRpYmxlIHZlY3RvciB0eXBlcyBmb3IgIg0KKyAgICAiaW52 YXJpYW50c1xuIik7DQorIHJldHVybiBmYWxzZTsNCisgICAgICAgfQ0KKyB9 DQorICAgICAgLyogVGhlIHJlY3VycmVuY2UgY29zdHMgdGhlIGluaXRpYWxp emF0aW9uIHZlY3RvciBhbmQgb25lIHBlcm11dGUNCisgZm9yIGVhY2ggY29w eS4gICovDQorICAgICAgdW5zaWduZWQgcHJvbG9ndWVfY29zdCA9IHJlY29y ZF9zdG10X2Nvc3QgKGNvc3RfdmVjLCAxLCBzY2FsYXJfdG9fdmVjLA0KKyBz dG10X2luZm8sIDAsIHZlY3RfcHJvbG9ndWUpOw0KKyAgICAgIHVuc2lnbmVk IGluc2lkZV9jb3N0ID0gcmVjb3JkX3N0bXRfY29zdCAoY29zdF92ZWMsIG5j b3BpZXMsIHZlY3Rvcl9zdG10LA0KKyAgICAgICAgc3RtdF9pbmZvLCAwLCB2 ZWN0X2JvZHkpOw0KKyAgICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCisg ZHVtcF9wcmludGZfbG9jIChNU0dfTk9URSwgdmVjdF9sb2NhdGlvbiwNCisg InZlY3Rvcml6YWJsZV9yZWN1cnI6IGluc2lkZV9jb3N0ID0gJWQsICINCisg InByb2xvZ3VlX2Nvc3QgPSAlZCAuXG4iLCBpbnNpZGVfY29zdCwNCisgcHJv bG9ndWVfY29zdCk7DQorDQorICAgICAgU1RNVF9WSU5GT19UWVBFIChzdG10 X2luZm8pID0gcmVjdXJyX2luZm9fdHlwZTsNCisgICAgICByZXR1cm4gdHJ1 ZTsNCisgICAgfQ0KKw0KKyAgLyogVGhpcyBpcyB0aGUgc2Vjb25kIHBoYXNl IG9mIHZlY3Rvcml6aW5nIGZpcnN0LW9yZGVyIHJlY2VjdXJyZW5jZXMuIEFu DQorICAgICBvdmVydmlldyBvZiB0aGUgdHJhbnNmb3JtYXRpb24gaXMgZGVz Y3JpYmVkIGJlbG93LiBTdXBwb3NlIHdlIGhhdmUgdGhlDQorICAgICBmb2xs b3dpbmcgbG9vcC4NCisNCisgICAgIGludDMyX3QgdCA9IDA7DQorICAgICBm b3IgKGludCBpID0gMDsgaSA8IG47ICsraSkNCisgICAgICAgew0KKyBiW2ld ID0gYVtpXSAtIHQ7DQorIHQgPSBhW2ldOw0KKyAgICAgIH0NCisNCisgICAg VGhlcmUgaXMgYSBmaXJzdC1vcmRlciByZWN1cnJlbmNlIG9uICJhIi4gRm9y IHRoaXMgbG9vcCwgdGhlIHNob3J0aGFuZA0KKyAgICBzY2FsYXIgSVIgbG9v a3MgbGlrZToNCisNCisgICAgc2NhbGFyLnByZWhlYWRlcjoNCisgICAgICBp bml0ID0gYVstMV0NCisgICAgICBiciBsb29wLmJvZHkNCisNCisgICAgc2Nh bGFyLmJvZHk6DQorICAgICAgaSA9IFBISSA8MChzY2FsYXIucHJlaGVhZGVy KSwgaSsxKHNjYWxhci5ib2R5KT4NCisgICAgICBfMiA9IFBISSA8KGluaXQo c2NhbGFyLnByZWhlYWRlciksIDxfMShzY2FsYXIuYm9keSk+DQorICAgICAg XzEgPSBhW2ldDQorICAgICAgYltpXSA9IF8xIC0gXzINCisgICAgICBiciBj b25kLCBzY2FsYXIuYm9keSwgLi4uDQorDQorICAgIEluIHRoaXMgZXhhbXBs ZSwgXzIgaXMgYSByZWN1cnJlbmNlIGJlY2F1c2UgaXQncyB2YWx1ZSBkZXBl bmRzIG9uIHRoZQ0KKyAgICBwcmV2aW91cyBpdGVyYXRpb24uIEluIHRoZSBm aXJzdCBwaGFzZSBvZiB2ZWN0b3JpemF0aW9uLCB3ZSBjcmVhdGVkIGENCisg ICAgdGVtcG9yYXJ5IHZhbHVlIGZvciBfMi4gV2Ugbm93IGNvbXBsZXRlIHRo ZSB2ZWN0b3JpemF0aW9uIGFuZCBwcm9kdWNlIHRoZQ0KKyAgICBzaG9ydGhh bmQgdmVjdG9yIElSIHNob3duIGJlbG93IChWRiA9IDQpLg0KKw0KKyAgICB2 ZWN0b3IucHJlaGVhZGVyOg0KKyAgICAgIHZlY3RfaW5pdCA9IHZlY3RfY3N0 KC4uLiwgLi4uLCAuLi4sIGFbLTFdKQ0KKyAgICAgIGJyIHZlY3Rvci5ib2R5 DQorDQorICAgIHZlY3Rvci5ib2R5DQorICAgICAgaSA9IFBISSA8MCh2ZWN0 b3IucHJlaGVhZGVyKSwgaSs0KHZlY3Rvci5ib2R5KT4NCisgICAgICB2ZWN0 XzEgPSBQSEkgPHZlY3RfaW5pdCh2ZWN0b3IucHJlaGVhZGVyKSwgdjIodmVj dG9yLmJvZHkpPg0KKyAgICAgIHZlY3RfMiA9IGFbaSwgaSsxLCBpKzIsIGkr M107DQorICAgICAgdmVjdF8zID0gdmVjdG9yKHZlY3RfMSgzKSwgdmVjdF8y KDAsIDEsIDIpKQ0KKyAgICAgIGJbaSwgaSsxLCBpKzIsIGkrM10gPSB2ZWN0 XzIgLSB2ZWN0XzMNCisgICAgICBiciBjb25kLCB2ZWN0b3IuYm9keSwgbWlk ZGxlLmJsb2NrDQorDQorICAgIG1pZGRsZS5ibG9jazoNCisgICAgICB4ID0g dmVjdF8yKDMpDQorICAgICAgYnIgc2NhbGFyLnByZWhlYWRlcg0KKw0KKyAg ICBzY2FsYXIucGg6DQorICAgICAgc19pbml0ID0gUEhJIDx4KG1pZGRsZS5i bG9jayksIGFbLTFdLCBvdGhlcndpc2U+DQorICAgICAgYnIgc2NhbGFyLmJv ZHkNCisNCisgICAgQWZ0ZXIgZXhlY3V0aW9uIGNvbXBsZXRlcyB0aGUgdmVj dG9yIGxvb3AsIHdlIGV4dHJhY3QgdGhlIG5leHQgdmFsdWUgb2YNCisgICAg dGhlIHJlY3VycmVuY2UgKHgpIHRvIHVzZSBhcyB0aGUgaW5pdGlhbCB2YWx1 ZSBpbiB0aGUgc2NhbGFyIGxvb3AuICAqLw0KKw0KKyAgZWRnZSBwZSA9IGxv b3BfcHJlaGVhZGVyX2VkZ2UgKExPT1BfVklORk9fTE9PUCAobG9vcF92aW5m bykpOw0KKyAgYmFzaWNfYmxvY2sgYmIgPSBnaW1wbGVfYmIgKHBoaSk7DQor ICB0cmVlIHByZWhlYWRlciA9IFBISV9BUkdfREVGX0ZST01fRURHRSAocGhp LCBwZSk7DQorICB0cmVlIHZlY19pbml0ID0gYnVpbGRfdmVjdG9yX2Zyb21f dmFsICh2ZWN0eXBlLCBwcmVoZWFkZXIpOw0KKyAgdmVjX2luaXQgPSB2ZWN0 X2luaXRfdmVjdG9yIChsb29wX3ZpbmZvLCBzdG10X2luZm8sIHZlY19pbml0 LCB2ZWN0eXBlLCBOVUxMKTsNCisNCisgIC8qIENyZWF0ZSB0aGUgdmVjdG9y aXplZCBmaXJzdC1vcmRlciBQSEkgbm9kZS4gICovDQorICB0cmVlIHZlY19k ZXN0ID0gdmVjdF9nZXRfbmV3X3ZlY3RfdmFyICh2ZWN0eXBlLA0KKyB2ZWN0 X3NpbXBsZV92YXIsICJ2ZWNfcmVjdXJfIik7DQorICBncGhpICpuZXdfcGhp ID0gY3JlYXRlX3BoaV9ub2RlICh2ZWNfZGVzdCwgYmIpOw0KKyAgYWRkX3Bo aV9hcmcgKG5ld19waGksIHZlY19pbml0LCBwZSwgVU5LTk9XTl9MT0NBVElP Tik7DQorDQorICAvKiBJbnNlcnQgc2h1ZmZsZXMgdGhlIGZpcnN0LW9yZGVy IHJlY3VycmVuY2UgYXV0b3ZlY3Rvcml6YXRpb24uDQorICAgICAgIHJlc3Vs dCA9IFZFQ19QRVJNIDx2ZWNfcmVjdXIsIHZlY3RfMSwgaW5kZXhbbnVuaXRz LTEsIG51bml0cywgLi4uXT4uICAqLw0KKyAgdHJlZSBwZXJtID0gdmVjdF9n ZW5fcGVybV9tYXNrX2NoZWNrZWQgKHZlY3R5cGUsIGluZGljZXMpOw0KKw0K KyAgLyogSW5zZXJ0IHRoZSByZXF1aXJlZCBwZXJtdXRlIGFmdGVyIHRoZSBs YXRjaCBkZWZpbml0aW9uLiAgVGhlDQorICAgICBzZWNvbmQgYW5kIGxhdGVy IG9wZXJhbmRzIGFyZSB0ZW50YXRpdmUgYW5kIHdpbGwgYmUgdXBkYXRlZCB3 aGVuIHdlIGhhdmUNCisgICAgIHZlY3Rvcml6ZWQgdGhlIGxhdGNoIGRlZmlu aXRpb24uICAqLw0KKyAgZWRnZSBsZSA9IGxvb3BfbGF0Y2hfZWRnZSAoTE9P UF9WSU5GT19MT09QIChsb29wX3ZpbmZvKSk7DQorICBnaW1wbGVfc3RtdF9p dGVyYXRvciBnc2kyDQorICAgID0gZ3NpX2Zvcl9zdG10IChTU0FfTkFNRV9E RUZfU1RNVCAoUEhJX0FSR19ERUZfRlJPTV9FREdFIChwaGksIGxlKSkpOw0K KyAgZ3NpX25leHQgKCZnc2kyKTsNCisNCisgIGZvciAodW5zaWduZWQgaSA9 IDA7IGkgPCBuY29waWVzOyArK2kpDQorICAgIHsNCisgICAgICB2ZWNfZGVz dCA9IG1ha2Vfc3NhX25hbWUgKHZlY3R5cGUpOw0KKyAgICAgIGdhc3NpZ24g KnZwZXJtDQorICAgPSBnaW1wbGVfYnVpbGRfYXNzaWduICh2ZWNfZGVzdCwg VkVDX1BFUk1fRVhQUiwNCisgaSA9PSAwID8gZ2ltcGxlX3BoaV9yZXN1bHQg KG5ld19waGkpIDogTlVMTCwNCisgTlVMTCwgcGVybSk7DQorICAgICAgdmVj dF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uIChsb29wX3ZpbmZvLCBzdG10X2lu Zm8sIHZwZXJtLCAmZ3NpMik7DQorDQorICAgICAgaWYgKHNscF9ub2RlKQ0K KyBTTFBfVFJFRV9WRUNfU1RNVFMgKHNscF9ub2RlKS5xdWlja19wdXNoICh2 cGVybSk7DQorICAgICAgZWxzZQ0KKyBTVE1UX1ZJTkZPX1ZFQ19TVE1UUyAo c3RtdF9pbmZvKS5zYWZlX3B1c2ggKHZwZXJtKTsNCisgICAgfQ0KKw0KKyAg aWYgKCFzbHBfbm9kZSkNCisgICAgKnZlY19zdG10ID0gU1RNVF9WSU5GT19W RUNfU1RNVFMgKHN0bXRfaW5mbylbMF07DQorICByZXR1cm4gdHJ1ZTsNCit9 DQorDQovKiBSZXR1cm4gdHJ1ZSBpZiBWRUNUWVBFIHJlcHJlc2VudHMgYSB2 ZWN0b3IgdGhhdCByZXF1aXJlcyBsb3dlcmluZw0KICAgIGJ5IHRoZSB2ZWN0 b3IgbG93ZXJpbmcgcGFzcy4gICovDQpAQCAtMTAyMjMsMjcgKzEwNDQ3LDUz IEBAIG1heWJlX3NldF92ZWN0b3JpemVkX2JhY2tlZGdlX3ZhbHVlIChsb29w X3ZlY19pbmZvIGxvb3BfdmluZm8sDQogICBpbW1fdXNlX2l0ZXJhdG9yIGl0 ZXI7DQogICB1c2Vfb3BlcmFuZF9wIHVzZV9wOw0KICAgRk9SX0VBQ0hfSU1N X1VTRV9GQVNUICh1c2VfcCwgaXRlciwgZGVmKQ0KLSAgICBpZiAoZ3BoaSAq cGhpID0gZHluX2Nhc3QgPGdwaGkgKj4gKFVTRV9TVE1UICh1c2VfcCkpKQ0K LSAgICAgIGlmIChnaW1wbGVfYmIgKHBoaSktPmxvb3BfZmF0aGVyLT5oZWFk ZXIgPT0gZ2ltcGxlX2JiIChwaGkpDQotICAgJiYgKHBoaV9pbmZvID0gbG9v cF92aW5mby0+bG9va3VwX3N0bXQgKHBoaSkpDQotICAgJiYgU1RNVF9WSU5G T19SRUxFVkFOVF9QIChwaGlfaW5mbykNCi0gICAmJiBWRUNUT1JJWkFCTEVf Q1lDTEVfREVGIChTVE1UX1ZJTkZPX0RFRl9UWVBFIChwaGlfaW5mbykpDQor ICAgIHsNCisgICAgICBncGhpICpwaGkgPSBkeW5fY2FzdCA8Z3BoaSAqPiAo VVNFX1NUTVQgKHVzZV9wKSk7DQorICAgICAgaWYgKCFwaGkpDQorIGNvbnRp bnVlOw0KKyAgICAgIGlmICghKGdpbXBsZV9iYiAocGhpKS0+bG9vcF9mYXRo ZXItPmhlYWRlciA9PSBnaW1wbGVfYmIgKHBoaSkNCisgICAgICYmIChwaGlf aW5mbyA9IGxvb3BfdmluZm8tPmxvb2t1cF9zdG10IChwaGkpKQ0KKyAgICAg JiYgU1RNVF9WSU5GT19SRUxFVkFOVF9QIChwaGlfaW5mbykpKQ0KKyBjb250 aW51ZTsNCisgICAgICBsb29wX3AgbG9vcCA9IGdpbXBsZV9iYiAocGhpKS0+ bG9vcF9mYXRoZXI7DQorICAgICAgZWRnZSBlID0gbG9vcF9sYXRjaF9lZGdl IChsb29wKTsNCisgICAgICBpZiAoUEhJX0FSR19ERUZfRlJPTV9FREdFIChw aGksIGUpICE9IGRlZikNCisgY29udGludWU7DQorDQorICAgICAgaWYgKFZF Q1RPUklaQUJMRV9DWUNMRV9ERUYgKFNUTVRfVklORk9fREVGX1RZUEUgKHBo aV9pbmZvKSkNCiAgJiYgU1RNVF9WSU5GT19SRURVQ19UWVBFIChwaGlfaW5m bykgIT0gRk9MRF9MRUZUX1JFRFVDVElPTg0KICAmJiBTVE1UX1ZJTkZPX1JF RFVDX1RZUEUgKHBoaV9pbmZvKSAhPSBFWFRSQUNUX0xBU1RfUkVEVUNUSU9O KQ0Kew0KLSAgIGxvb3BfcCBsb29wID0gZ2ltcGxlX2JiIChwaGkpLT5sb29w X2ZhdGhlcjsNCi0gICBlZGdlIGUgPSBsb29wX2xhdGNoX2VkZ2UgKGxvb3Ap Ow0KLSAgIGlmIChQSElfQVJHX0RFRl9GUk9NX0VER0UgKHBoaSwgZSkgPT0g ZGVmKQ0KKyAgIHZlYzxnaW1wbGUgKj4gJnBoaV9kZWZzID0gU1RNVF9WSU5G T19WRUNfU1RNVFMgKHBoaV9pbmZvKTsNCisgICB2ZWM8Z2ltcGxlICo+ICZs YXRjaF9kZWZzID0gU1RNVF9WSU5GT19WRUNfU1RNVFMgKGRlZl9zdG10X2lu Zm8pOw0KKyAgIGdjY19hc3NlcnQgKHBoaV9kZWZzLmxlbmd0aCAoKSA9PSBs YXRjaF9kZWZzLmxlbmd0aCAoKSk7DQorICAgZm9yICh1bnNpZ25lZCBpID0g MDsgaSA8IHBoaV9kZWZzLmxlbmd0aCAoKTsgKytpKQ0KKyAgICAgYWRkX3Bo aV9hcmcgKGFzX2EgPGdwaGkgKj4gKHBoaV9kZWZzW2ldKSwNCisgZ2ltcGxl X2dldF9saHMgKGxhdGNoX2RlZnNbaV0pLCBlLA0KKyBnaW1wbGVfcGhpX2Fy Z19sb2NhdGlvbiAocGhpLCBlLT5kZXN0X2lkeCkpOw0KKyB9DQorICAgICAg ZWxzZSBpZiAoU1RNVF9WSU5GT19ERUZfVFlQRSAocGhpX2luZm8pID09IHZl Y3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSkNCisgew0KKyAgIC8qIEZvciBm aXJzdCBvcmRlciByZWN1cnJlbmNlcyB3ZSBoYXZlIHRvIHVwZGF0ZSBib3Ro IHVzZXMgb2YNCisgICAgICB0aGUgbGF0Y2ggZGVmaW5pdGlvbiwgdGhlIG9u ZSBpbiB0aGUgUEhJIG5vZGUgYW5kIHRoZSBvbmUNCisgICAgICBpbiB0aGUg Z2VuZXJhdGVkIFZFQ19QRVJNX0VYUFIuICAqLw0KKyAgIHZlYzxnaW1wbGUg Kj4gJnBoaV9kZWZzID0gU1RNVF9WSU5GT19WRUNfU1RNVFMgKHBoaV9pbmZv KTsNCisgICB2ZWM8Z2ltcGxlICo+ICZsYXRjaF9kZWZzID0gU1RNVF9WSU5G T19WRUNfU1RNVFMgKGRlZl9zdG10X2luZm8pOw0KKyAgIGdjY19hc3NlcnQg KHBoaV9kZWZzLmxlbmd0aCAoKSA9PSBsYXRjaF9kZWZzLmxlbmd0aCAoKSk7 DQorICAgdHJlZSBwaGlkZWYgPSBnaW1wbGVfYXNzaWduX3JoczEgKHBoaV9k ZWZzWzBdKTsNCisgICBncGhpICp2cGhpID0gYXNfYSA8Z3BoaSAqPiAoU1NB X05BTUVfREVGX1NUTVQgKHBoaWRlZikpOw0KKyAgIGZvciAodW5zaWduZWQg aSA9IDA7IGkgPCBwaGlfZGVmcy5sZW5ndGggKCk7ICsraSkNCiAgICB7DQot ICAgICAgIHZlYzxnaW1wbGUgKj4gJnBoaV9kZWZzID0gU1RNVF9WSU5GT19W RUNfU1RNVFMgKHBoaV9pbmZvKTsNCi0gICAgICAgdmVjPGdpbXBsZSAqPiAm bGF0Y2hfZGVmcyA9IFNUTVRfVklORk9fVkVDX1NUTVRTIChkZWZfc3RtdF9p bmZvKTsNCi0gICAgICAgZ2NjX2Fzc2VydCAocGhpX2RlZnMubGVuZ3RoICgp ID09IGxhdGNoX2RlZnMubGVuZ3RoICgpKTsNCi0gICAgICAgZm9yICh1bnNp Z25lZCBpID0gMDsgaSA8IHBoaV9kZWZzLmxlbmd0aCAoKTsgKytpKQ0KLSBh ZGRfcGhpX2FyZyAoYXNfYSA8Z3BoaSAqPiAocGhpX2RlZnNbaV0pLA0KLSAg ICAgIGdpbXBsZV9nZXRfbGhzIChsYXRjaF9kZWZzW2ldKSwgZSwNCi0gICAg ICBnaW1wbGVfcGhpX2FyZ19sb2NhdGlvbiAocGhpLCBlLT5kZXN0X2lkeCkp Ow0KKyAgICAgICBnYXNzaWduICpwZXJtID0gYXNfYSA8Z2Fzc2lnbiAqPiAo cGhpX2RlZnNbaV0pOw0KKyAgICAgICBpZiAoaSA+IDApDQorIGdpbXBsZV9h c3NpZ25fc2V0X3JoczEgKHBlcm0sIGdpbXBsZV9nZXRfbGhzIChsYXRjaF9k ZWZzW2ktMV0pKTsNCisgICAgICAgZ2ltcGxlX2Fzc2lnbl9zZXRfcmhzMiAo cGVybSwgZ2ltcGxlX2dldF9saHMgKGxhdGNoX2RlZnNbaV0pKTsNCisgICAg ICAgdXBkYXRlX3N0bXQgKHBlcm0pOw0KICAgIH0NCisgICBhZGRfcGhpX2Fy ZyAodnBoaSwgZ2ltcGxlX2dldF9saHMgKGxhdGNoX2RlZnMubGFzdCAoKSks IGUsDQorICAgICAgICBnaW1wbGVfcGhpX2FyZ19sb2NhdGlvbiAocGhpLCBl LT5kZXN0X2lkeCkpOw0KfQ0KKyAgICB9DQp9DQovKiBWZWN0b3JpemUgU1RN VF9JTkZPIGlmIHJlbGV2YW50LCBpbnNlcnRpbmcgYW55IG5ldyBpbnN0cnVj dGlvbnMgYmVmb3JlIEdTSS4NCkBAIC0xMDY1Miw2ICsxMDkwMiw3IEBAIHZl Y3RfdHJhbnNmb3JtX2xvb3AgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywg Z2ltcGxlICpsb29wX3ZlY3Rvcml6ZWRfY2FsbCkNCiAgICAgICB8fCBTVE1U X1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8pID09IHZlY3RfcmVkdWN0aW9u X2RlZg0KICAgICAgIHx8IFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRfaW5m bykgPT0gdmVjdF9kb3VibGVfcmVkdWN0aW9uX2RlZg0KICAgICAgIHx8IFNU TVRfVklORk9fREVGX1RZUEUgKHN0bXRfaW5mbykgPT0gdmVjdF9uZXN0ZWRf Y3ljbGUNCisgICAgICAgIHx8IFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRf aW5mbykgPT0gdmVjdF9maXJzdF9vcmRlcl9yZWN1cnJlbmNlDQogICAgICAg fHwgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZvKSA9PSB2ZWN0X2lu dGVybmFsX2RlZikNCiAgICAgICYmICEgUFVSRV9TTFBfU1RNVCAoc3RtdF9p bmZvKSkNCiAgICB7DQpAQCAtMTA2NzcsNyArMTA5MjgsOCBAQCB2ZWN0X3Ry YW5zZm9ybV9sb29wIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIGdpbXBs ZSAqbG9vcF92ZWN0b3JpemVkX2NhbGwpDQogICAgICAgfHwgU1RNVF9WSU5G T19ERUZfVFlQRSAoc3RtdF9pbmZvKSA9PSB2ZWN0X3JlZHVjdGlvbl9kZWYN CiAgICAgICB8fCBTVE1UX1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8pID09 IHZlY3RfZG91YmxlX3JlZHVjdGlvbl9kZWYNCiAgICAgICB8fCBTVE1UX1ZJ TkZPX0RFRl9UWVBFIChzdG10X2luZm8pID09IHZlY3RfbmVzdGVkX2N5Y2xl DQotICAgICAgICB8fCBTVE1UX1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8p ID09IHZlY3RfaW50ZXJuYWxfZGVmKQ0KKyAgICAgICAgfHwgU1RNVF9WSU5G T19ERUZfVFlQRSAoc3RtdF9pbmZvKSA9PSB2ZWN0X2ludGVybmFsX2RlZg0K KyAgICAgICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZvKSA9 PSB2ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVuY2UpDQogICAgICAmJiAhIFBV UkVfU0xQX1NUTVQgKHN0bXRfaW5mbykpDQogICAgbWF5YmVfc2V0X3ZlY3Rv cml6ZWRfYmFja2VkZ2VfdmFsdWUgKGxvb3BfdmluZm8sIHN0bXRfaW5mbyk7 DQp9DQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zbHAuY2MgYi9nY2Mv dHJlZS12ZWN0LXNscC5jYw0KaW5kZXggMjI5ZjI2NjNlYmMuLmNlYTVkNTBk YTkyIDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUtdmVjdC1zbHAuY2MNCisrKyBi L2djYy90cmVlLXZlY3Qtc2xwLmNjDQpAQCAtNjkzLDYgKzY5Myw3IEBAIHZl Y3RfZ2V0X2FuZF9jaGVja19zbHBfZGVmcyAodmVjX2luZm8gKnZpbmZvLCB1 bnNpZ25lZCBjaGFyIHN3YXAsDQogICAgY2FzZSB2ZWN0X3JlZHVjdGlvbl9k ZWY6DQogICAgY2FzZSB2ZWN0X2luZHVjdGlvbl9kZWY6DQogICAgY2FzZSB2 ZWN0X25lc3RlZF9jeWNsZToNCisgICAgIGNhc2UgdmVjdF9maXJzdF9vcmRl cl9yZWN1cnJlbmNlOg0KICAgICAgYnJlYWs7DQogICAgZGVmYXVsdDoNCkBA IC0xNzMyLDcgKzE3MzMsOCBAQCB2ZWN0X2J1aWxkX3NscF90cmVlXzIgKHZl Y19pbmZvICp2aW5mbywgc2xwX3RyZWUgbm9kZSwNCiAgfQ0KZWxzZSBpZiAo ZGVmX3R5cGUgPT0gdmVjdF9yZWR1Y3Rpb25fZGVmDQp8fCBkZWZfdHlwZSA9 PSB2ZWN0X2RvdWJsZV9yZWR1Y3Rpb25fZGVmDQotIHx8IGRlZl90eXBlID09 IHZlY3RfbmVzdGVkX2N5Y2xlKQ0KKyB8fCBkZWZfdHlwZSA9PSB2ZWN0X25l c3RlZF9jeWNsZQ0KKyB8fCBkZWZfdHlwZSA9PSB2ZWN0X2ZpcnN0X29yZGVy X3JlY3VycmVuY2UpDQogIHsNCiAgICAvKiBFbHNlIGRlZiB0eXBlcyBoYXZl IHRvIG1hdGNoLiAgKi8NCiAgICBzdG10X3ZlY19pbmZvIG90aGVyX2luZm87 DQpAQCAtMTc0Niw3ICsxNzQ4LDggQEAgdmVjdF9idWlsZF9zbHBfdHJlZV8y ICh2ZWNfaW5mbyAqdmluZm8sIHNscF90cmVlIG5vZGUsDQogICAgICB9DQog ICAgY2xhc3MgbG9vcCAqbG9vcCA9IExPT1BfVklORk9fTE9PUCAobG9vcF92 aW5mbyk7DQogICAgLyogUmVkdWN0aW9uIGluaXRpYWwgdmFsdWVzIGFyZSBu b3QgZXhwbGljaXRlbHkgcmVwcmVzZW50ZWQuICAqLw0KLSAgICAgaWYgKCFu ZXN0ZWRfaW5fdmVjdF9sb29wX3AgKGxvb3AsIHN0bXRfaW5mbykpDQorICAg ICBpZiAoZGVmX3R5cGUgIT0gdmVjdF9maXJzdF9vcmRlcl9yZWN1cnJlbmNl DQorICYmICFuZXN0ZWRfaW5fdmVjdF9sb29wX3AgKGxvb3AsIHN0bXRfaW5m bykpDQogICAgICBza2lwX2FyZ3NbbG9vcF9wcmVoZWFkZXJfZWRnZSAobG9v cCktPmRlc3RfaWR4XSA9IHRydWU7DQogICAgLyogUmVkdWN0aW9uIGNoYWlu IGJhY2tlZGdlIGRlZnMgYXJlIGZpbGxlZCBtYW51YWxseS4NCiAgICAgICA/ Pz8gIE5lZWQgYSBiZXR0ZXIgd2F5IHRvIGlkZW50aWZ5IGEgU0xQIHJlZHVj dGlvbiBjaGFpbiBQSEkuDQpAQCAtOTE4NywxMSArOTE5MCwzNCBAQCB2ZWN0 X3NjaGVkdWxlX3NjYyAodmVjX2luZm8gKnZpbmZvLCBzbHBfdHJlZSBub2Rl LCBzbHBfaW5zdGFuY2UgaW5zdGFuY2UsDQogIGNoaWxkID0gU0xQX1RSRUVf Q0hJTERSRU4gKHBoaV9ub2RlKVtkZXN0X2lkeF07DQogIGlmICghY2hpbGQg fHwgU0xQX1RSRUVfREVGX1RZUEUgKGNoaWxkKSAhPSB2ZWN0X2ludGVybmFs X2RlZikNCiAgICBjb250aW51ZTsNCisgICB1bnNpZ25lZCBuID0gU0xQX1RS RUVfVkVDX1NUTVRTIChwaGlfbm9kZSkubGVuZ3RoICgpOw0KICAvKiBTaW1w bHkgZmlsbCBhbGwgYXJncy4gICovDQotICAgZm9yICh1bnNpZ25lZCBpID0g MDsgaSA8IFNMUF9UUkVFX1ZFQ19TVE1UUyAocGhpX25vZGUpLmxlbmd0aCAo KTsgKytpKQ0KLSAgICAgYWRkX3BoaV9hcmcgKGFzX2EgPGdwaGkgKj4gKFNM UF9UUkVFX1ZFQ19TVE1UUyAocGhpX25vZGUpW2ldKSwNCi0gdmVjdF9nZXRf c2xwX3ZlY3RfZGVmIChjaGlsZCwgaSksDQotIGUsIGdpbXBsZV9waGlfYXJn X2xvY2F0aW9uIChwaGksIGRlc3RfaWR4KSk7DQorICAgaWYgKFNUTVRfVklO Rk9fREVGX1RZUEUgKFNMUF9UUkVFX1JFUFJFU0VOVEFUSVZFIChwaGlfbm9k ZSkpDQorICAgICAgICE9IHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSkN CisgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kpDQorICAg ICAgIGFkZF9waGlfYXJnIChhc19hIDxncGhpICo+IChTTFBfVFJFRV9WRUNf U1RNVFMgKHBoaV9ub2RlKVtpXSksDQorICAgIHZlY3RfZ2V0X3NscF92ZWN0 X2RlZiAoY2hpbGQsIGkpLA0KKyAgICBlLCBnaW1wbGVfcGhpX2FyZ19sb2Nh dGlvbiAocGhpLCBkZXN0X2lkeCkpOw0KKyAgIGVsc2UNCisgICAgIHsNCisg ICAgICAgLyogVW5sZXNzIGl0IGlzIGEgZmlyc3Qgb3JkZXIgcmVjdXJyZW5j ZSB3aGljaCBuZWVkcw0KKyBhcmdzIGZpbGxlZCBpbiBmb3IgYm90aCB0aGUg UEhJIG5vZGUgYW5kIHRoZSBwZXJtdXRlcy4gICovDQorICAgICAgIGdpbXBs ZSAqcGVybSA9IFNMUF9UUkVFX1ZFQ19TVE1UUyAocGhpX25vZGUpWzBdOw0K KyAgICAgICBnaW1wbGUgKnJwaGkgPSBTU0FfTkFNRV9ERUZfU1RNVCAoZ2lt cGxlX2Fzc2lnbl9yaHMxIChwZXJtKSk7DQorICAgICAgIGFkZF9waGlfYXJn IChhc19hIDxncGhpICo+IChycGhpKSwNCisgICAgdmVjdF9nZXRfc2xwX3Zl Y3RfZGVmIChjaGlsZCwgbiAtIDEpLA0KKyAgICBlLCBnaW1wbGVfcGhpX2Fy Z19sb2NhdGlvbiAocGhpLCBkZXN0X2lkeCkpOw0KKyAgICAgICBmb3IgKHVu c2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQ0KKyB7DQorICAgZ2ltcGxlICpw ZXJtID0gU0xQX1RSRUVfVkVDX1NUTVRTIChwaGlfbm9kZSlbaV07DQorICAg aWYgKGkgPiAwKQ0KKyAgICAgZ2ltcGxlX2Fzc2lnbl9zZXRfcmhzMSAocGVy bSwNCisgICAgIHZlY3RfZ2V0X3NscF92ZWN0X2RlZiAoY2hpbGQsIGkgLSAx KSk7DQorICAgZ2ltcGxlX2Fzc2lnbl9zZXRfcmhzMiAocGVybSwNCisgICB2 ZWN0X2dldF9zbHBfdmVjdF9kZWYgKGNoaWxkLCBpKSk7DQorICAgdXBkYXRl X3N0bXQgKHBlcm0pOw0KKyB9DQorICAgICB9DQp9DQogICAgIH0NCn0NCmRp ZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjIGIvZ2NjL3RyZWUt dmVjdC1zdG10cy5jYw0KaW5kZXggYzhkMWVmYzQ1ZTUuLjRlMGQ3NWUwZDc1 IDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KKysrIGIv Z2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KQEAgLTExMTc2LDYgKzExMTc2LDcg QEAgdmVjdF9hbmFseXplX3N0bXQgKHZlY19pbmZvICp2aW5mbywNCiAgICAg ICAgICBicmVhazsNCiAgICAgICBjYXNlIHZlY3RfaW5kdWN0aW9uX2RlZjoN CisgICAgICBjYXNlIHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZToNCmdj Y19hc3NlcnQgKCFiYl92aW5mbyk7DQpicmVhazsNCkBAIC0xMTIzNCw3ICsx MTIzNSw5IEBAIHZlY3RfYW5hbHl6ZV9zdG10ICh2ZWNfaW5mbyAqdmluZm8s DQogIHx8IHZlY3Rvcml6YWJsZV9jb21wYXJpc29uICh2aW5mbywgc3RtdF9p bmZvLCBOVUxMLCBOVUxMLCBub2RlLA0KICAgICAgY29zdF92ZWMpDQogIHx8 IHZlY3Rvcml6YWJsZV9sY19waGkgKGFzX2EgPGxvb3BfdmVjX2luZm8+ICh2 aW5mbyksDQotICAgc3RtdF9pbmZvLCBOVUxMLCBub2RlKSk7DQorICAgc3Rt dF9pbmZvLCBOVUxMLCBub2RlKQ0KKyAgIHx8IHZlY3Rvcml6YWJsZV9yZWN1 cnIgKGFzX2EgPGxvb3BfdmVjX2luZm8+ICh2aW5mbyksDQorICAgIHN0bXRf aW5mbywgTlVMTCwgbm9kZSwgY29zdF92ZWMpKTsNCiAgIGVsc2UNCiAgICAg ew0KICAgICAgIGlmIChiYl92aW5mbykNCkBAIC0xMTQwNCw2ICsxMTQwNywx MiBAQCB2ZWN0X3RyYW5zZm9ybV9zdG10ICh2ZWNfaW5mbyAqdmluZm8sDQog ICAgICAgZ2NjX2Fzc2VydCAoZG9uZSk7DQogICAgICAgYnJlYWs7DQorICAg IGNhc2UgcmVjdXJyX2luZm9fdHlwZToNCisgICAgICBkb25lID0gdmVjdG9y aXphYmxlX3JlY3VyciAoYXNfYSA8bG9vcF92ZWNfaW5mbz4gKHZpbmZvKSwN CisgICBzdG10X2luZm8sICZ2ZWNfc3RtdCwgc2xwX25vZGUsIE5VTEwpOw0K KyAgICAgIGdjY19hc3NlcnQgKGRvbmUpOw0KKyAgICAgIGJyZWFrOw0KKw0K ICAgICBjYXNlIHBoaV9pbmZvX3R5cGU6DQogICAgICAgZG9uZSA9IHZlY3Rv cml6YWJsZV9waGkgKHZpbmZvLCBzdG10X2luZm8sICZ2ZWNfc3RtdCwgc2xw X25vZGUsIE5VTEwpOw0KICAgICAgIGdjY19hc3NlcnQgKGRvbmUpOw0KQEAg LTExODA0LDYgKzExODEzLDkgQEAgdmVjdF9pc19zaW1wbGVfdXNlICh0cmVl IG9wZXJhbmQsIHZlY19pbmZvICp2aW5mbywgZW51bSB2ZWN0X2RlZl90eXBl ICpkdCwNCmNhc2UgdmVjdF9uZXN0ZWRfY3ljbGU6DQogIGR1bXBfcHJpbnRm IChNU0dfTk9URSwgIm5lc3RlZCBjeWNsZVxuIik7DQogIGJyZWFrOw0KKyBj YXNlIHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZToNCisgICBkdW1wX3By aW50ZiAoTVNHX05PVEUsICJmaXJzdCBvcmRlciByZWN1cnJlbmNlXG4iKTsN CisgICBicmVhazsNCmNhc2UgdmVjdF91bmtub3duX2RlZl90eXBlOg0KICBk dW1wX3ByaW50ZiAoTVNHX05PVEUsICJ1bmtub3duXG4iKTsNCiAgYnJlYWs7 DQpAQCAtMTE4NTIsNyArMTE4NjQsOCBAQCB2ZWN0X2lzX3NpbXBsZV91c2Ug KHRyZWUgb3BlcmFuZCwgdmVjX2luZm8gKnZpbmZvLCBlbnVtIHZlY3RfZGVm X3R5cGUgKmR0LA0KICAgICAgIHx8ICpkdCA9PSB2ZWN0X2luZHVjdGlvbl9k ZWYNCiAgICAgICB8fCAqZHQgPT0gdmVjdF9yZWR1Y3Rpb25fZGVmDQogICAg ICAgfHwgKmR0ID09IHZlY3RfZG91YmxlX3JlZHVjdGlvbl9kZWYNCi0gICAg ICB8fCAqZHQgPT0gdmVjdF9uZXN0ZWRfY3ljbGUpDQorICAgICAgfHwgKmR0 ID09IHZlY3RfbmVzdGVkX2N5Y2xlDQorICAgICAgfHwgKmR0ID09IHZlY3Rf Zmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSkNCiAgICAgew0KICAgICAgICp2ZWN0 eXBlID0gU1RNVF9WSU5GT19WRUNUWVBFIChkZWZfc3RtdF9pbmZvKTsNCiAg ICAgICBnY2NfYXNzZXJ0ICgqdmVjdHlwZSAhPSBOVUxMX1RSRUUpOw0KZGlm ZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIuaCBiL2djYy90cmVlLXZl Y3Rvcml6ZXIuaA0KaW5kZXggNDg3MGM3NTQ0OTkuLjAxNjk2MWRhODUxIDEw MDY0NA0KLS0tIGEvZ2NjL3RyZWUtdmVjdG9yaXplci5oDQorKysgYi9nY2Mv dHJlZS12ZWN0b3JpemVyLmgNCkBAIC02NSw2ICs2NSw3IEBAIGVudW0gdmVj dF9kZWZfdHlwZSB7DQogICB2ZWN0X3JlZHVjdGlvbl9kZWYsDQogICB2ZWN0 X2RvdWJsZV9yZWR1Y3Rpb25fZGVmLA0KICAgdmVjdF9uZXN0ZWRfY3ljbGUs DQorICB2ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVuY2UsDQogICB2ZWN0X3Vu a25vd25fZGVmX3R5cGUNCn07DQpAQCAtMTAyNyw2ICsxMDI4LDcgQEAgZW51 bSBzdG10X3ZlY19pbmZvX3R5cGUgew0KICAgY3ljbGVfcGhpX2luZm9fdHlw ZSwNCiAgIGxjX3BoaV9pbmZvX3R5cGUsDQogICBwaGlfaW5mb190eXBlLA0K KyAgcmVjdXJyX2luZm9fdHlwZSwNCiAgIGxvb3BfZXhpdF9jdHJsX3ZlY19p bmZvX3R5cGUNCn07DQpAQCAtMjMzMSw2ICsyMzMzLDggQEAgZXh0ZXJuIGJv b2wgdmVjdG9yaXphYmxlX2xjX3BoaSAobG9vcF92ZWNfaW5mbywgc3RtdF92 ZWNfaW5mbywNCmdpbXBsZSAqKiwgc2xwX3RyZWUpOw0KZXh0ZXJuIGJvb2wg dmVjdG9yaXphYmxlX3BoaSAodmVjX2luZm8gKiwgc3RtdF92ZWNfaW5mbywg Z2ltcGxlICoqLCBzbHBfdHJlZSwNCiAgICAgIHN0bXRfdmVjdG9yX2Zvcl9j b3N0ICopOw0KK2V4dGVybiBib29sIHZlY3Rvcml6YWJsZV9yZWN1cnIgKGxv b3BfdmVjX2luZm8sIHN0bXRfdmVjX2luZm8sDQorICAgZ2ltcGxlICoqLCBz bHBfdHJlZSwgc3RtdF92ZWN0b3JfZm9yX2Nvc3QgKik7DQpleHRlcm4gYm9v bCB2ZWN0X2VtdWxhdGVkX3ZlY3Rvcl9wICh0cmVlKTsNCmV4dGVybiBib29s IHZlY3RfY2FuX3ZlY3Rvcml6ZV93aXRob3V0X3NpbWRfcCAodHJlZV9jb2Rl KTsNCmV4dGVybiBib29sIHZlY3RfY2FuX3ZlY3Rvcml6ZV93aXRob3V0X3Np bWRfcCAoY29kZV9oZWxwZXIpOw0KLS0gDQoyLjM1LjMNCiANCg== ------=_001_NextPart208323315401_=------