From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by sourceware.org (Postfix) with ESMTPS id 0E7EC3858D1E for ; Fri, 5 May 2023 23:41:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0E7EC3858D1E 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: bizesmtp62t1683330074tclihpww Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Sat, 06 May 2023 07:41:13 +0800 (CST) X-QQ-SSF: 01400000000000F0Q000000A0000000 X-QQ-FEAT: znfcQSa1hKbl0sZMRDO3yjrH3blE3hC98atYG3QMgN31J9r5DzvmJZ4S/0uol +uXyI55x/O/+ZAvDr6GZVwjBgwkcKs9lxMyc4Mdl1qndYRneRutJy4KcmuQEw70ZqQ7bbEv 4X5M1+LKmBvX2oYpI4aK8Mvj+BRO1cmBJ3f3zNhxx+35JDrgJLQnHMe0OjMRcpaEjQdG4Ry JZo0yLfVCJmS9s1r2av+IEU99FFii2mwlfO7PRwr3fdhaYQF/qYox4KPQfz1hJEff/mzqfi w1MUHHH3KP/yTagug2liW3MNDdWDFR29SaoesFE8lM5TArcX21h+gpsAM8QvL0KVkoTWEms YnKrhUuVI952YOkFY0F73SPvE1hDTKmakVFrdB0yvCoevjkS8H+1fx/jJqU3qI2gNcXAv7z RENprK6kJ58= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 4109050183730697872 Date: Sat, 6 May 2023 07:41:14 +0800 From: =?GB2312?B?1tO+09Xc?= To: gcc-patches Cc: richard.sandiford , rguenther Subject: Re: [PATCH V4] VECT: Add decrement IV iteration loop control by variable amount support References: <20230504132540.286148-1-juzhe.zhong@rivai.ai> X-Priority: 3 X-GUID: F983CE0C-CB85-4AE3-BFFA-8F164669BE40 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <4EF09AECDA5B339B+2023050607411407276371@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart137333538430_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,CHARSET_FARAWAY_HEADER,GIT_PATCH_0,HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SCC_10_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart137333538430_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 SGksIFJpY2hhcmRzLiBJIHdvdWxkIGxpa2UgdG8gZ2l2ZSBtb3JlIGluZm9y bWF0aW9uIGFib3V0IHRoaXMgcGF0Y2ggc28gdGhhdCBpdCB3aWxsIG1ha2Ug dGhpcyBwYXRjaCBlYXNpZXIgZm9yIHlvdSB0byByZXZpZXcuDQoNCkN1cnJl bnRseSwgSSBzYXcgd2UgaGF2ZSAzIHNpdHVhdGlvbnMgdGhhdCB3ZSBuZWVk IHRvIGhhbmRsZSBpbiBjYXNlIG9mIGxvb3AgY29udHJvbCBJViBpbiBhdXRv LXZlY3Rvcml6YXRpb246DQoxLiBTaW5nbGUgcmdyb3VwIGxvb3AgY29udHJv bCAobmNvcGllcyA9PSAxICYmIHZlY19udW0gPT0gMSBzbyBsb29wX2xlbi5s ZW5ndGggKCkgPT0gMSBvciByZ2MtPmxlbmdoICgpID09IDEpDQoyLiBNdWx0 aXBsZSByZ3JvdXAgZm9yIFNMUC4NCjMuIE11bHRpcGxlIHJncm91cCBmb3Ig bm9uLVNMUCB3aGljaCBpcyBSaWNoYXJkIFNhbmRpZm9yZCBwb2ludCBvdXQg cHJldmlvdXNseSAoRm9yIGV4YW1wbGUsIFZFQ19QQUNLX1RSVU5DKS4NCg0K VG8gdGFsayBhYm91dCB0aGlzIHBhdGNoLCBsZXQgbWUgdGFsayBhYm91dCBS VlYgTExWTSBpbXBsZW1lbnRhdGlvbiBmaXJzdCB3aGljaCBpbnNwaXJlIG1l IHRvIHNlbmQgdGhpcyBwYXRjaDoNCmh0dHBzOi8vcmV2aWV3cy5sbHZtLm9y Zy9EOTk3NTAgDQoNCkFjY29yZGluZyB0byBMTFZNIGltcGxlbWVudGF0aW9u LCB0aGV5IGFyZSBhZGRpbmcgYSBtaWRkbGUtZW5kIElSIGNhbGxlZCAiZ2V0 X3ZlY3Rvcl9sZW5ndGgiIHdoaWNoIGhhcyB0b3RhbGx5DQpzYW1lIGZ1bmN0 aW9uYWxpdHkgYXMgInNlbGVjdF92bCIgaW4gdGhpcyBwYXRjaCAoSSBjYWxs IGl0ICJ3aGlsZV9sZW4iIHByZXZpb3VzbHksIG5vdyBJIHJlbmFtZSBpdCBh cyAic2VsZWN0X3ZsIiBmb2xsb3dpbmcgUmljaGFyZCBzdWdnZXN0aW9uKS4N Cg0KVGhlIExMVk0gaW1wbGVtZW50YXRpb24gaXMgb25seSBsZXQgImdldF92 ZWN0b3JfbGVuZ3RoIiBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50 cyBpbiBzaW5nbGUgcmdyb3VwIGxvb3AuDQpGb3IgbXVsdGkgcmdyb3VwLCBs ZXQncyB0YWtlIGEgbG9vayBhdCBpdDoNCmh0dHBzOi8vZ29kYm9sdC5vcmcv ei8zR1A3OGVmVFkgDQoNCnZvaWQNCmZvbzEgKHNob3J0ICpfX3Jlc3RyaWN0 IGYsIGludCAqX19yZXN0cmljdCBkLCBpbnQgbikNCnsNCiAgZm9yIChpbnQg aSA9IDA7IGkgPCBuOyArK2kpDQogICAgew0KICAgICAgZltpICogMiArIDBd ID0gMTsNCiAgICAgIGZbaSAqIDIgKyAxXSA9IDI7DQogICAgICBkW2ldID0g MzsNCiAgICB9DQp9IA0KDQpSSVNDLVYgQ2xhbmc6DQpmb28xOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBAZm9vMQ0KIyAlYmIuMDoN CiAgICAgICAgYmxleiAgICBhMiwgLkxCQjBfOA0KIyAlYmIuMToNCiAgICAg ICAgbGkgICAgICBhMywgMTYNCiAgICAgICAgYmdldSAgICBhMiwgYTMsIC5M QkIwXzMNCiMgJWJiLjI6DQogICAgICAgIGxpICAgICAgYTYsIDANCiAgICAg ICAgaiAgICAgICAuTEJCMF82DQouTEJCMF8zOg0KICAgICAgICBhbmRpICAg IGE2LCBhMiwgLTE2DQogICAgICAgIGx1aSAgICAgYTMsIDMyDQogICAgICAg IGFkZGl3ICAgYTMsIGEzLCAxDQogICAgICAgIHZzZXRpdmxpICAgICAgICB6 ZXJvLCA4LCBlMzIsIG0yLCB0YSwgbWENCiAgICAgICAgdm12LnYueCB2OCwg YTMNCiAgICAgICAgdm12LnYuaSB2MTAsIDMNCiAgICAgICAgbXYgICAgICBh NCwgYTYNCiAgICAgICAgbXYgICAgICBhNSwgYTENCiAgICAgICAgbXYgICAg ICBhMywgYTANCi5MQkIwXzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjID0+VGhpcyBJbm5lciBMb29wIEhlYWRlcjogRGVwdGg9MQ0KICAg ICAgICBhZGRpICAgIGE3LCBhNSwgMzINCiAgICAgICAgYWRkaSAgICB0MCwg YTMsIDMyDQogICAgICAgIHZzZXRpdmxpICAgICAgICB6ZXJvLCAxNiwgZTE2 LCBtMiwgdGEsIG1hDQogICAgICAgIHZzZTE2LnYgdjgsIChhMykNCiAgICAg ICAgdnNlMTYudiB2OCwgKHQwKQ0KICAgICAgICB2c2V0aXZsaSAgICAgICAg emVybywgOCwgZTMyLCBtMiwgdGEsIG1hDQogICAgICAgIHZzZTMyLnYgdjEw LCAoYTUpDQogICAgICAgIHZzZTMyLnYgdjEwLCAoYTcpDQogICAgICAgIGFk ZGkgICAgYTMsIGEzLCA2NA0KICAgICAgICBhZGRpICAgIGE0LCBhNCwgLTE2 DQogICAgICAgIGFkZGkgICAgYTUsIGE1LCA2NA0KICAgICAgICBibmV6ICAg IGE0LCAuTEJCMF80DQojICViYi41Og0KICAgICAgICBiZXEgICAgIGE2LCBh MiwgLkxCQjBfOA0KLkxCQjBfNjoNCiAgICAgICAgc2xsaSAgICBhMywgYTYs IDINCiAgICAgICAgYWRkICAgICBhMCwgYTAsIGEzDQogICAgICAgIGFkZGkg ICAgYTAsIGEwLCAyDQogICAgICAgIGFkZCAgICAgYTEsIGExLCBhMw0KICAg ICAgICBzdWIgICAgIGEyLCBhMiwgYTYNCiAgICAgICAgbGkgICAgICBhMywg MQ0KICAgICAgICBsaSAgICAgIGE0LCAyDQogICAgICAgIGxpICAgICAgYTUs IDMNCi5MQkIwXzc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj ID0+VGhpcyBJbm5lciBMb29wIEhlYWRlcjogRGVwdGg9MQ0KICAgICAgICBz aCAgICAgIGEzLCAtMihhMCkNCiAgICAgICAgc2ggICAgICBhNCwgMChhMCkN CiAgICAgICAgc3cgICAgICBhNSwgMChhMSkNCiAgICAgICAgYWRkaSAgICBh MCwgYTAsIDQNCiAgICAgICAgYWRkaSAgICBhMiwgYTIsIC0xDQogICAgICAg IGFkZGkgICAgYTEsIGExLCA0DQogICAgICAgIGJuZXogICAgYTIsIC5MQkIw XzcNCi5MQkIwXzg6DQogICAgICAgIHJldA0KDQpBUk0gR0NDOg0KZm9vMToN CiAgICAgICAgY21wICAgICB3MiwgMA0KICAgICAgICBibGUgICAgIC5MMQ0K ICAgICAgICBhZGR2bCAgIHg0LCB4MCwgIzENCiAgICAgICAgbW92ICAgICB4 MywgMA0KICAgICAgICBjbnRiICAgIHg3DQogICAgICAgIGNudGIgICAgeDYs IGFsbCwgbXVsICMyDQogICAgICAgIHNiZml6ICAgeDIsIHgyLCAxLCAzMg0K ICAgICAgICBwdHJ1ZSAgIHAwLmIsIGFsbA0KICAgICAgICBtb3YgICAgIHg1 LCB4Mg0KICAgICAgICBhZHJwICAgIHg4LCAuTEMwDQogICAgICAgIHVxZGVj aCAgeDUNCiAgICAgICAgYWRkICAgICB4OCwgeDgsIDpsbzEyOi5MQzANCiAg ICAgICAgd2hpbGVsbyBwMS5oLCB4enIsIHg1DQogICAgICAgIGxkMXJ3ICAg ejEucywgcDAveiwgW3g4XQ0KICAgICAgICBtb3YgICAgIHowLnMsICMzDQog ICAgICAgIHdoaWxlbG8gcDAuaCwgeHpyLCB4Mg0KLkwzOg0KICAgICAgICBz dDFoICAgIHoxLmgsIHAwLCBbeDAsIHgzLCBsc2wgMV0NCiAgICAgICAgc3Qx aCAgICB6MS5oLCBwMSwgW3g0LCB4MywgbHNsIDFdDQogICAgICAgIHN0MXcg ICAgejAucywgcDEsIFt4MSwgIzEsIG11bCB2bF0NCiAgICAgICAgYWRkICAg ICB4MywgeDMsIHg3DQogICAgICAgIHdoaWxlbG8gcDEuaCwgeDMsIHg1DQog ICAgICAgIHN0MXcgICAgejAucywgcDAsIFt4MV0NCiAgICAgICAgYWRkICAg ICB4MSwgeDEsIHg2DQogICAgICAgIHdoaWxlbG8gcDAuaCwgeDMsIHgyDQog ICAgICAgIGIuYW55ICAgLkwzDQouTDE6DQogICAgICAgIHJldA0KDQpJdCdz IHZlcnkgb2J2aW91cyB0aGF0IEFSTSBHQ0MgaGFzIG11Y2ggYmV0dGVyIGNv ZGVnZW4gc2luY2UgUlZWIExMVk0ganVzdCB1c2UgU0lNRCBzdHlsZSB0byBo YW5kbGUgbXVsdGktcmdyb3VwIFNMUCBhdXRvLXZlY3Rvcml6YXRpb24uDQoN CldlbGwsIEkgYW0gdG90YWxseSBhZ2dyZWUgdGhhdCB3ZSBzaG91bGQgYWRk IGxlbmd0aCBzdHVmZiBpbiBhdXRvLXZlY3Rvcml6YXRpb24gbm90IG9ubHkg Zm9yIHNpbmdsZSByZ3JvdXAgYnV0IGFsc28gbXVsdGlwbGUgcmdyb3VwLg0K SG93ZXZlciwgd2hlbiBJIGFtIHRyeWluZyB0byBpbXBsZW1lbnQgbXVsdGlw bGUgcmdyb3VwIGxlbmd0aCBmb3IgYm90aCBTTFAgYW5kIG5vbi1TTFAgYW5k IHRlc3RpbmcsIHR1cm5zIG91dCBpdCdzIGhhcmQgdG8gdXNlIHNlbGVjdF92 bA0Kc2luY2UgInNlbGVjdF92bCIgcGF0dGVybiBhbGxvd3Mgbm9uLVZGIGZs ZXhpYmxlIGxlbmd0aCAobGVuZ3RoIDw9IG1pbiAocmVtYWluLFZGKSkgaW4g YW55IGl0ZXJhdGlvbiwgaXQncyBjb25zdW1pbmcgbXVjaCBtb3JlIG9wZXJh dGlvbnMgZm9yDQphZGp1c3QgbG9vcCBjb250cm9scyBJViBhbmQgZGF0YSBy ZWZlcmVuY2UgYWRkcmVzcyBwb2ludCBJViB0aGFuIGp1c3QgdXNpbmcgIk1J Tl9FWFBSIi4NCg0KU28gZm9yIENhc2UgMiAmJiBDYXNlIDMsIEkganVzdCB1 c2UgTUlOX0VYUFIgZGlyZWN0bHkgaW5zdGVhZCBvZiBTRUxFQ1RfVkwgYWZ0 ZXIgbXkgc2VydmVyYWwgaW50ZXJuYWwgdGVzdGluZy4NCg0KTm93IGJhc2Ug b24gdGhlc2Ugc2l0dWF0aW9ucywgd2Ugb25seSBoYXZlICJzZWxlY3Rfdmwi IGZvciBzaW5nbGUtcmdyb3VwLCBidXQgbXVsdGlwbGUtcmdyb3VwIChib3Ro IFNMUCBhbmQgbm9uLVNMUCksIHdlIGp1c3QNCnVzZSBNSU5fRVhQUi4NCg0K SXMgaXQgbW9yZSBhcHByb3ByaWF0ZSB0aGF0IHdlIHNob3VsZCByZW1vdmUg InNlbGVjdF92bCIgYW5kIGp1c3QgdXNlIE1JTl9FWFBSIGZvcmNlIFZGIGVs ZW1lbnRzIGluIGVhY2ggbm9uLWZpbmFsIGl0ZXJhdGlvbiBpbiBzaW5nbGUg cmdyb3VwPw0KDQpMaWtlIHRoZSBjb2RlZ2VuIGFjY29yZGluZyB0byBSVlYg SVNBIGV4YW1wbGUgKHNob3cgYXMgUlZWIExMVk0pOg0KaHR0cHM6Ly9yZXBv LmhjYS5ic2MuZXMvZXBpYy96L295bmh6UCANCg0KQVNNOg0KdmVjX2FkZDog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQHZlY19hZGQNCiAg ICAgICAgYmxleiAgICBhMywgLkxCQjBfMw0KICAgICAgICBsaSAgICAgIGE0 LCAwDQouTEJCMF8yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyAldmVjdG9yLmJvZHkNCiAgICAgICAgc3ViICAgICBhNSwgYTMsIGE0DQog ICAgICAgIHZzZXR2bGkgYTYsIGE1LCBlNjQsIG0xLCB0YSwgbXUgID09PiBj aGFuZ2UgaXQgaW50byBhNiA9IG1pbiAoYTUsIFZGKSAmJiB2c2V0dmxpIHpl cm8sIGE2LCBlNjQsIG0xLCB0YSwgbXUNCiAgICAgICAgc2xsaSAgICBhNywg YTQsIDMNCiAgICAgICAgYWRkICAgICBhNSwgYTEsIGE3DQogICAgICAgIHZs ZTY0LnYgdjgsIChhNSkNCiAgICAgICAgYWRkICAgICBhNSwgYTIsIGE3DQog ICAgICAgIHZsZTY0LnYgdjksIChhNSkNCiAgICAgICAgdmZhZGQudnYgICAg ICAgIHY4LCB2OCwgdjkNCiAgICAgICAgYWRkICAgICBhNywgYTcsIGEwDQog ICAgICAgIGFkZCAgICAgYTQsIGE0LCBhNg0KICAgICAgICB2c2U2NC52IHY4 LCAoYTcpDQogICAgICAgIGJuZSAgICAgYTQsIGEzLCAuTEJCMF8yDQouTEJC MF8zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAlZm9yLmNv bmQuY2xlYW51cA0KICAgICAgICByZXQNCg0KU28gaWYgd2UgcmVtb3ZlICJz ZWxlY3RfdmwiIGp1c3QgdXNlIE1JTl9FWFBSIHRvIGZvcmNlIFZGIGVsZW1l bnRzIGluIG5vbi1maW5hbCBpdGVyYXRpb24sIHdlIHdpbGwgZW5kIHVwIHdp dGggaGF2aW5nIGxpa2UgdGhpczoNCg0KdmVjX2FkZDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgQHZlY19hZGQNCiAgICAgICAgYmxleiAg ICBhMywgLkxCQjBfMw0KICAgICAgICBjc3JyICAgIFZGIGluIGJ5dGVzLCB2 bGVuYg0KLkxCQjBfMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgJXZlY3Rvci5ib2R5DQogICAgICAgIHN1YiAgICAgYTUsIGEzLCBWRiBp biBlbGVtZW50cw0KICAgICAgICBhNiA9IG1pbiAoYTUsIFZGIGluIGVsZW1l bnRzKSANCiAgICAgICAgdnNldHZsaSB6ZXJvLCBhNiwgZTY0LCBtMSwgdGEs IG11DQogICAgICAgIGFkZCAgICAgYTUsIGExLCBWRiBpbiBieXRlcw0KICAg ICAgICB2bGU2NC52IHY4LCAoYTUpDQogICAgICAgIGFkZCAgICAgYTUsIGEy LCBWRiBpbiBieXRlcw0KICAgICAgICB2bGU2NC52IHY5LCAoYTUpDQogICAg ICAgIHZmYWRkLnZ2ICAgICAgICB2OCwgdjgsIHY5DQogICAgICAgIGFkZCAg ICAgYTcsIGE3LCBhMA0KICAgICAgICB2c2U2NC52IHY4LCAoYTcpDQogICAg ICAgIGJuZSAgICAgYTQsIGEzLCAuTEJCMF8yDQouTEJCMF8zOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAlZm9yLmNvbmQuY2xlYW51cA0K ICAgICAgICByZXQNCg0KQm90aCBjb2RlZ2VuIGFyZSB3b3JraW5nIGdvb2Qg Zm9yIFJWVi4NCkp1c3Qgb25seSB0aGUgc2Vjb25kIG9uZSBjYW4gbm90IGhh dmUgdGhlIFJWViBzcGVjaWFsIG9wdGltaXphdGlvbiAoZXZlbiBkaXN0cmli dXRlZCB3b3JrbG9hZCBpbiBsYXN0IDIgaXRlcmF0aW9ucykuDQoNCkV4cGVj dGluZyBhbnkgc3VnZ2VzdGlvbnMgZnJvbSB5b3UuDQpUaGFua3MuDQoNCg0K anV6aGUuemhvbmdAcml2YWkuYWkNCiANCkZyb206IGp1emhlLnpob25nDQpE YXRlOiAyMDIzLTA1LTA0IDIxOjI1DQpUbzogZ2NjLXBhdGNoZXMNCkNDOiBy aWNoYXJkLnNhbmRpZm9yZDsgcmd1ZW50aGVyOyBKdS1aaGUgWmhvbmcNClN1 YmplY3Q6IFtQQVRDSCBWNF0gVkVDVDogQWRkIGRlY3JlbWVudCBJViBpdGVy YXRpb24gbG9vcCBjb250cm9sIGJ5IHZhcmlhYmxlIGFtb3VudCBzdXBwb3J0 DQpGcm9tOiBKdS1aaGUgWmhvbmcgPGp1emhlLnpob25nQHJpdmFpLmFpPg0K IA0KVGhpcyBwYXRjaCBpcyBmaXhpbmcgVjMgcGF0Y2g6DQpodHRwczovL3Bh dGNod29yay5zb3VyY2V3YXJlLm9yZy9wcm9qZWN0L2djYy9wYXRjaC8yMDIz MDQwNzAxNDc0MS4xMzkzODctMS1qdXpoZS56aG9uZ0ByaXZhaS5haS8NCiAN CkZpeCBpc3N1ZXMgYWNjb3JkaW5nIHRvIFJpY2hhcmQgU2FuZGlmb3JkICYm IFJpY2hhcmQgQmllbmVyLg0KIA0KMS4gUmVuYW1lIFdISUxFX0xFTiBwYXR0 ZXJuIGludG8gU0VMRUNUX1ZMIGFjY29yZGluZyB0byBSaWNoYXJkIFNhbmRp Zm9yZC4NCjIuIFN1cHBvcnQgbXVsdGlwbGUtcmdyb3VwIGZvciBub24tU0xQ IGF1dG8tdmVjdG9yaXphdGlvbi4NCiANCiAgIEZvciB2ZWNfcGFja190cnVu YyBwYXR0ZXJuIChtdWx0aS1yZ3JvdXAgb2Ygbm9uLVNMUCksIHdlIGdlbmVy YXRlIHRoZSB0b3RhbCBsZW5ndGg6DQogDQogICAgIF8zNiA9IE1JTl9FWFBS IDxpdnRtcF8zNCwgUE9MWV9JTlRfQ1NUIFs4LCA4XT47DQogDQogICAgIEZp cnN0IGxlbmd0aCAoTUlOIChYLCBWRi9OKSk6DQogICAgICAgbG9vcF9sZW5f MTUgPSBNSU5fRVhQUiA8XzM2LCBQT0xZX0lOVF9DU1QgWzIsIDJdPjsNCiAN CiAgICAgU2Vjb25kIGxlbmd0aCAoWCAtIE1JTiAoWCwgMSAqIFZGL04pKToN CiAgICAgICBsb29wX2xlbl8xNiA9IF8zNiAtIGxvb3BfbGVuXzE1Ow0KIA0K ICAgICBUaGlyZCBsZW5ndGggKFggLSBNSU4gKFgsIDIgKiBWRi9OKSk6DQog ICAgICAgXzM4ID0gTUlOX0VYUFIgPF8zNiwgUE9MWV9JTlRfQ1NUIFs0LCA0 XT47DQogICAgICAgbG9vcF9sZW5fMTcgPSBfMzYgLSBfMzg7DQogDQogICAg IEZvcnRoIGxlbmd0aCAoWCAtIE1JTiAoWCwgMyAqIFZGL04pKToNCiAgICAg ICBfMzkgPSBNSU5fRVhQUiA8XzM2LCBQT0xZX0lOVF9DU1QgWzYsIDZdPjsN CiAgICAgICBsb29wX2xlbl8xOCA9IF8zNiAtIF8zOTsNCiANClRoZSByZWFz b24gdGhhdCBJIHVzZSBNSU5fRVhQUiBpbnN0ZWFkIG9mIFNFTEVDVF9WTCB0 byBjYWxjdWxhdGUgdG90YWwgbGVuZ3RoIHNpbmNlIHVzaW5nIFNFTEVDVF9W TA0KdG8gYWRhcHQgaW5kdWN0aW9uIElWIGNvbnN1bWVzIG1vcmUgaW5zdHJ1 Y3Rpb25zIHRoYW4ganVzdCB1c2luZyBNSU5fRVhQUi4gQWxzbywgZHVyaW5n IHRlc3RpbmcsDQpJIGZvdW5kIGl0J3MgaGFyZCB0byBhZGp1c3QgbGVuZ3Ro IGNvcnJlY3RseSBhY2NvcmRpbmcgdG8gU0VMRUNUX1ZMLg0KIA0KU28sIHRo aXMgcGF0Y2ggd2Ugb25seSB1c2UgU0VMRUNUX1ZMIGZvciBzaW5nbGUtcmdy b3VwIHdpdGggc2luZ2xlIGxlbmd0aCBjb250cm9sLg0KIA0KMy4gRml4IGRv Y3VtZW50IG9mIHNlbGVjdF92bCBmb3IgUmljaGFyZCBCaWVuZXIgKHJlbW92 ZSBtb2RlIE4pLg0KNC4gRml4IGNvbW1lbnRzIG9mIHZlY3Rfc2V0X2xvb3Bf Y29udHJvbHNfYnlfc2VsZWN0X3ZsIGFjY29yZGluZyB0byBSaWNoYXJkIEJp ZW5lci4NCjUuIEtlZXAgbG9vcF92aW5mbyBhcyBmaXJzdCBwYXJhbWV0ZXIg Zm9yICJ2ZWN0X2dldF9sb29wX2xlbiIuDQo2LiBtYWtlIHJlcXVpcmVtZW50 IG9mIGdldF93aGlsZV9sZW5fZGF0YV9yZWZfcHRyIG91dHNpZGUsIGxldCBp dCB0byBiZSBnYXRlZCBhdCB0aGUgY2FsbGVyIHNpdGUuDQogDQpNb3JlIGNv bW1lbnRzIGZyb20gUmljaGFyZCBCaWVuZXI6DQo+PiBTbyBpdCdzIG5vdCBh Y3R1YWxseSBzYXR1cmF0aW5nLiAgVGhlIHNhdHVyYXRpbmcgb3BlcmF0aW9u IGlzIGRvbmUgYnkgLldISUxFX0xFTj8NCkkgZGVmaW5lIHRoZSBvdXRjb21l IG9mIFNFTEVDVF9WTCAobiwgdmYpICAoV0hJTEVfTEVOKSA9IElOX1JBTkdF ICgwLCBtaW4gKG4sIHZmKSkgd2lsbCBtYWtlIA0KdGhlIGxvb3AgY29udHJv bCBjb3VudGVyIG5ldmVyIHVuZGVyZmxvdyB6ZXJvLg0KIA0KPj4gSSBzZWUu ICBJIHdvbmRlciBpZiBpdCBtYWtlcyBzZW5zZSB0byBsZWF2ZSAuV0hJTEVf TEVOIGFzaWRlIGZvciBhIHN0YXJ0LA0KPj4gdGhlIGFib3ZlIHNjaGVtZSBz aG91bGQgYWxzbyB3b3JrIGZvciBzaW5nbGUgcmdyb3Vwcywgbm8/DQo+PiBB cyBzYWlkLCBpdCBfbG9va3NfIGxpa2UgeW91IGNhbiBwcm9ncmVzcyB3aXRo b3V0IC5XSElMRV9MRU4gYW5kIHVzaW5nDQo+PiAuV0hJTEVfTEVOIGlzIGEg cHVyZSBvcHRpbWl6YXRpb24/DQpZZXMsIFNFTEVDVF9WTCAoV0hJTEVfTEVO KSBpcyBwdXJlIG9wdGltaXphdGlvbiBmb3Igc2luZ2xlLXJncm91cCBhbmQg YWxsb3cNCnRhcmdldCBhZGp1c3QgYW55IGxlbmd0aCA9IElOUkFOR0UgKDAs IG1pbiAobiwgdmYpKSBlYWNoIGl0ZXJhdGlvbi4NCiANCkxldCBtZSBrbm93 biBpZiBJIG1pc3NlZCBzb21ldGhpbmcgZm9yIHRoZSBWMyBwYXRjaC4NClRo YW5rcy4NCiANCi0tLQ0KZ2NjL2NmZ2xvb3BtYW5pcC5jYyAgICAgICAgICAg IHwgICAyICstDQpnY2MvZG9jL21kLnRleGkgICAgICAgICAgICAgICAgfCAg MzQgKysrDQpnY2MvZ2ltcGxlLWxvb3AtaW50ZXJjaGFuZ2UuY2MgfCAgIDIg Ky0NCmdjYy9pbnRlcm5hbC1mbi5kZWYgICAgICAgICAgICB8ICAgMSArDQpn Y2Mvb3B0YWJzLmRlZiAgICAgICAgICAgICAgICAgfCAgIDEgKw0KZ2NjL3Ry ZWUtc3NhLWxvb3AtaXZjYW5vbi5jYyAgIHwgICAyICstDQpnY2MvdHJlZS1z c2EtbG9vcC1pdm9wdHMuY2MgICAgfCAgIDIgKy0NCmdjYy90cmVlLXNzYS1s b29wLW1hbmlwLmNjICAgICB8ICAxOCArLQ0KZ2NjL3RyZWUtc3NhLWxvb3At bWFuaXAuaCAgICAgIHwgICA0ICstDQpnY2MvdHJlZS12ZWN0LWRhdGEtcmVm cy5jYyAgICAgfCAgIDggKy0NCmdjYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5j YyAgICB8IDM3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0N CmdjYy90cmVlLXZlY3QtbG9vcC5jYyAgICAgICAgICB8ICAzMiArKy0NCmdj Yy90cmVlLXZlY3Qtc3RtdHMuY2MgICAgICAgICB8ICA4OSArKysrKysrLQ0K Z2NjL3RyZWUtdmVjdG9yaXplci5oICAgICAgICAgIHwgICA0ICstDQoxNCBm aWxlcyBjaGFuZ2VkLCA1MzUgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25z KC0pDQogDQpkaWZmIC0tZ2l0IGEvZ2NjL2NmZ2xvb3BtYW5pcC5jYyBiL2dj Yy9jZmdsb29wbWFuaXAuY2MNCmluZGV4IDBlM2FkOGVkNzQyLi42ZTA5ZGNi YjBiMSAxMDA2NDQNCi0tLSBhL2djYy9jZmdsb29wbWFuaXAuY2MNCisrKyBi L2djYy9jZmdsb29wbWFuaXAuY2MNCkBAIC04MjYsNyArODI2LDcgQEAgY3Jl YXRlX2VtcHR5X2xvb3Bfb25fZWRnZSAoZWRnZSBlbnRyeV9lZGdlLA0KICAg ICB9DQogICBnc2kgPSBnc2lfbGFzdF9iYiAobG9vcF9oZWFkZXIpOw0KLSAg Y3JlYXRlX2l2IChpbml0aWFsX3ZhbHVlLCBzdHJpZGUsIGl2LCBsb29wLCAm Z3NpLCBmYWxzZSwNCisgIGNyZWF0ZV9pdiAoaW5pdGlhbF92YWx1ZSwgUExV U19FWFBSLCBzdHJpZGUsIGl2LCBsb29wLCAmZ3NpLCBmYWxzZSwNCiAgICAg aXZfYmVmb3JlLCBpdl9hZnRlcik7DQogICAvKiBJbnNlcnQgbG9vcCBleGl0 IGNvbmRpdGlvbi4gICovDQpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9tZC50ZXhp IGIvZ2NjL2RvYy9tZC50ZXhpDQppbmRleCBjYzRhOTNhODc2My4uOTljZjBj ZGJkY2EgMTAwNjQ0DQotLS0gYS9nY2MvZG9jL21kLnRleGkNCisrKyBiL2dj Yy9kb2MvbWQudGV4aQ0KQEAgLTQ5NzQsNiArNDk3NCw0MCBAQCBmb3IgKGkg PSAxOyBpIDwgb3BlcmFuZDM7IGkrKykNCiAgIG9wZXJhbmQwW2ldID0gb3Bl cmFuZDBbaSAtIDFdICYmIChvcGVyYW5kMSArIGkgPCBvcGVyYW5kMik7DQpA ZW5kIHNtYWxsZXhhbXBsZQ0KK0BjaW5kZXggQGNvZGV7c2VsZWN0X3ZsQHZh cnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybg0KK0BpdGVtIEBjb2Rle3NlbGVj dF92bEB2YXJ7bX19DQorU2V0IG9wZXJhbmQgMCB0byB0aGUgbnVtYmVyIG9m IGFjdGl2ZSBlbGVtZW50cyBpbiB2ZWN0b3Igd2lsbCBiZSB1cGRhdGVkIHZh bHVlLg0KK29wZXJhbmQgMSBpcyB0aGUgdG90YWwgZWxlbWVudHMgbmVlZCB0 byBiZSB1cGRhdGVkIHZhbHVlLg0KK29wZXJhbmQgMiBpcyB0aGUgdmVjdG9y aXphdGlvbiBmYWN0b3IuDQorVGhlIHZhbHVlIG9mIG9wZXJhbmQgMCBpcyB0 YXJnZXQgZGVwZW5kZW50IGFuZCBmbGV4aWJsZSBpbiBlYWNoIGl0ZXJhdGlv bi4NCitUaGUgb3BlcmF0aW9uIG9mIHRoaXMgcGF0dGVybiBjYW4gYmU6DQor DQorQHNtYWxsZXhhbXBsZQ0KK0Nhc2UgMToNCitvcGVyYW5kMCA9IE1JTiAo b3BlcmFuZDEsIG9wZXJhbmQyKTsNCitvcGVyYW5kMiBjYW4gYmUgY29uc3Rf cG9seV9pbnQgb3IgcG9seV9pbnQgcmVsYXRlZCB0byB2ZWN0b3IgbW9kZSBz aXplLg0KK1NvbWUgdGFyZ2V0IGxpa2UgUklTQy1WIGhhcyBhIHN0YW5kYWxv bmUgaW5zdHJ1Y3Rpb24gdG8gZ2V0IE1JTiAobiwgTU9ERSBTSVpFKSBzbw0K K3RoYXQgd2UgY2FuIHJlZHVjZSBhIHVzZSBvZiBnZW5lcmFsIHB1cnBvc2Ug cmVnaXN0ZXIuDQorDQorSW4gdGhpcyBjYXNlLCBvbmx5IHRoZSBsYXN0IGl0 ZXJhdGlvbiBvZiB0aGUgbG9vcCBpcyBwYXJ0aWFsIGl0ZXJhdGlvbi4NCitA ZW5kIHNtYWxsZXhhbXBsZQ0KKw0KK0BzbWFsbGV4YW1wbGUNCitDYXNlIDI6 DQoraWYgKG9wZXJhbmQxIDw9IG9wZXJhbmQyKQ0KKyAgb3BlcmFuZDAgPSBv cGVyYW5kMTsNCitlbHNlIGlmIChvcGVyYW5kMSA8IDIgKiBvcGVyYW5kMikN CisgIG9wZXJhbmQwID0gSU5fUkFOR0UgKGNlaWwgKG9wZXJhbmQxIC8gMiks IG9wZXJhbmQyKTsNCitlbHNlDQorICBvcGVyYW5kMCA9IG9wZXJhbmQyOw0K Kw0KK1RoaXMgY2FzZSB3aWxsIGV2ZW5seSBkaXN0cmlidXRlIHdvcmsgb3Zl ciB0aGUgbGFzdCAyIGl0ZXJhdGlvbnMgb2YgYSBzdHJpcG1pbmUgbG9vcC4N CitAZW5kIHNtYWxsZXhhbXBsZQ0KKw0KK1RoZSBvdXRwdXQgb2YgdGhpcyBw YXR0ZXJuIGlzIG5vdCBvbmx5IHVzZWQgYXMgSVYgb2YgbG9vcCBjb250cm9s IGNvdW50ZXIsIGJ1dCBhbHNvDQoraXMgdXNlZCBhcyB0aGUgSVYgb2YgYWRk cmVzcyBjYWxjdWxhdGlvbiB3aXRoIG11bHRpcGx5L3NoaWZ0IG9wZXJhdGlv bi4gVGhpcyBhbGxvdw0KK3VzIGR5bmFtaWMgYWRqdXN0IHRoZSBudW1iZXIg b2YgZWxlbWVudHMgaXMgcHJvY2Vzc2VkIGluIGVhY2ggaXRlcmF0aW9uIG9m IHRoZSBsb29wLg0KKw0KQGNpbmRleCBAY29kZXtjaGVja19yYXdfcHRyc0B2 YXJ7bX19IGluc3RydWN0aW9uIHBhdHRlcm4NCkBpdGVtIEBzYW1we2NoZWNr X3Jhd19wdHJzQHZhcnttfX0NCkNoZWNrIHdoZXRoZXIsIGdpdmVuIHR3byBw b2ludGVycyBAdmFye2F9IGFuZCBAdmFye2J9IGFuZCBhIGxlbmd0aCBAdmFy e2xlbn0sDQpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1sb29wLWludGVyY2hh bmdlLmNjIGIvZ2NjL2dpbXBsZS1sb29wLWludGVyY2hhbmdlLmNjDQppbmRl eCAxYjc3YmZkNDZiMi4uZTU1OTAzNzRlNTkgMTAwNjQ0DQotLS0gYS9nY2Mv Z2ltcGxlLWxvb3AtaW50ZXJjaGFuZ2UuY2MNCisrKyBiL2djYy9naW1wbGUt bG9vcC1pbnRlcmNoYW5nZS5jYw0KQEAgLTExODUsNyArMTE4NSw3IEBAIHRy ZWVfbG9vcF9pbnRlcmNoYW5nZTo6bWFwX2luZHVjdGlvbnNfdG9fbG9vcCAo bG9vcF9jYW5kICZzcmMsIGxvb3BfY2FuZCAmdGd0KQ0KICB0cmVlIHZhcl9i ZWZvcmUsIHZhcl9hZnRlcjsNCiAgdHJlZSBiYXNlID0gdW5zaGFyZV9leHBy IChpdi0+aW5pdF9leHByKTsNCiAgdHJlZSBzdGVwID0gdW5zaGFyZV9leHBy IChpdi0+c3RlcCk7DQotICAgY3JlYXRlX2l2IChiYXNlLCBzdGVwLCBTU0Ff TkFNRV9WQVIgKGl2LT52YXIpLA0KKyAgIGNyZWF0ZV9pdiAoYmFzZSwgUExV U19FWFBSLCBzdGVwLCBTU0FfTkFNRV9WQVIgKGl2LT52YXIpLA0KICAgICB0 Z3QubV9sb29wLCAmaW5jcl9wb3MsIGZhbHNlLCAmdmFyX2JlZm9yZSwgJnZh cl9hZnRlcik7DQogIGJpdG1hcF9zZXRfYml0IChtX2RjZV9zZWVkcywgU1NB X05BTUVfVkVSU0lPTiAodmFyX2JlZm9yZSkpOw0KICBiaXRtYXBfc2V0X2Jp dCAobV9kY2Vfc2VlZHMsIFNTQV9OQU1FX1ZFUlNJT04gKHZhcl9hZnRlcikp Ow0KZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5kZWYgYi9nY2MvaW50 ZXJuYWwtZm4uZGVmDQppbmRleCA3ZmU3NDJjMmFlNy4uNmY2ZmE3ZDM3Zjkg MTAwNjQ0DQotLS0gYS9nY2MvaW50ZXJuYWwtZm4uZGVmDQorKysgYi9nY2Mv aW50ZXJuYWwtZm4uZGVmDQpAQCAtMTUzLDYgKzE1Myw3IEBAIERFRl9JTlRF Uk5BTF9PUFRBQl9GTiAoVkVDX1NFVCwgMCwgdmVjX3NldCwgdmVjX3NldCkN CkRFRl9JTlRFUk5BTF9PUFRBQl9GTiAoTEVOX1NUT1JFLCAwLCBsZW5fc3Rv cmUsIGxlbl9zdG9yZSkNCkRFRl9JTlRFUk5BTF9PUFRBQl9GTiAoV0hJTEVf VUxULCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywgd2hpbGVfdWx0LCB3aGls ZSkNCitERUZfSU5URVJOQUxfT1BUQUJfRk4gKFNFTEVDVF9WTCwgRUNGX0NP TlNUIHwgRUNGX05PVEhST1csIHNlbGVjdF92bCwgYmluYXJ5KQ0KREVGX0lO VEVSTkFMX09QVEFCX0ZOIChDSEVDS19SQVdfUFRSUywgRUNGX0NPTlNUIHwg RUNGX05PVEhST1csDQogICAgICAgY2hlY2tfcmF3X3B0cnMsIGNoZWNrX3B0 cnMpDQpERUZfSU5URVJOQUxfT1BUQUJfRk4gKENIRUNLX1dBUl9QVFJTLCBF Q0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywNCmRpZmYgLS1naXQgYS9nY2Mvb3B0 YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVmDQppbmRleCA2OTVmNTkxMWIzMC4u YjYzNzQ3MWI3NmUgMTAwNjQ0DQotLS0gYS9nY2Mvb3B0YWJzLmRlZg0KKysr IGIvZ2NjL29wdGFicy5kZWYNCkBAIC00NzYsMyArNDc2LDQgQEAgT1BUQUJf REMgKHZlY19zZXJpZXNfb3B0YWIsICJ2ZWNfc2VyaWVzJGEiLCBWRUNfU0VS SUVTKQ0KT1BUQUJfRCAodmVjX3NobF9pbnNlcnRfb3B0YWIsICJ2ZWNfc2hs X2luc2VydF8kYSIpDQpPUFRBQl9EIChsZW5fbG9hZF9vcHRhYiwgImxlbl9s b2FkXyRhIikNCk9QVEFCX0QgKGxlbl9zdG9yZV9vcHRhYiwgImxlbl9zdG9y ZV8kYSIpDQorT1BUQUJfRCAoc2VsZWN0X3ZsX29wdGFiLCAic2VsZWN0X3Zs JGEiKQ0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1sb29wLWl2Y2Fub24u Y2MgYi9nY2MvdHJlZS1zc2EtbG9vcC1pdmNhbm9uLmNjDQppbmRleCBlNDFl YzczYTUyYS4uZDRlMTEzYzQ0ZGYgMTAwNjQ0DQotLS0gYS9nY2MvdHJlZS1z c2EtbG9vcC1pdmNhbm9uLmNjDQorKysgYi9nY2MvdHJlZS1zc2EtbG9vcC1p dmNhbm9uLmNjDQpAQCAtMTEzLDcgKzExMyw3IEBAIGNyZWF0ZV9jYW5vbmlj YWxfaXYgKGNsYXNzIGxvb3AgKmxvb3AsIGVkZ2UgZXhpdCwgdHJlZSBuaXRl ciwNCiAgICAgICBuaXRlciwNCiAgICAgICBidWlsZF9pbnRfY3N0ICh0eXBl LCAxKSk7DQogICBpbmNyX2F0ID0gZ3NpX2xhc3RfYmIgKGluLT5zcmMpOw0K LSAgY3JlYXRlX2l2IChuaXRlciwNCisgIGNyZWF0ZV9pdiAobml0ZXIsIFBM VVNfRVhQUiwNCiAgICAgYnVpbGRfaW50X2NzdCAodHlwZSwgLTEpLA0KICAg ICBOVUxMX1RSRUUsIGxvb3AsDQogICAgICZpbmNyX2F0LCBmYWxzZSwgdmFy X2JlZm9yZSwgJnZhcik7DQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxv b3AtaXZvcHRzLmNjIGIvZ2NjL3RyZWUtc3NhLWxvb3AtaXZvcHRzLmNjDQpp bmRleCA3OGU4Y2JjNzViNS4uODY0MGZlMmQ0ODcgMTAwNjQ0DQotLS0gYS9n Y2MvdHJlZS1zc2EtbG9vcC1pdm9wdHMuY2MNCisrKyBiL2djYy90cmVlLXNz YS1sb29wLWl2b3B0cy5jYw0KQEAgLTcyNjcsNyArNzI2Nyw3IEBAIGNyZWF0 ZV9uZXdfaXYgKHN0cnVjdCBpdm9wdHNfZGF0YSAqZGF0YSwgc3RydWN0IGl2 X2NhbmQgKmNhbmQpDQogICBiYXNlID0gdW5zaGFyZV9leHByIChjYW5kLT5p di0+YmFzZSk7DQotICBjcmVhdGVfaXYgKGJhc2UsIHVuc2hhcmVfZXhwciAo Y2FuZC0+aXYtPnN0ZXApLA0KKyAgY3JlYXRlX2l2IChiYXNlLCBQTFVTX0VY UFIsIHVuc2hhcmVfZXhwciAoY2FuZC0+aXYtPnN0ZXApLA0KICAgICBjYW5k LT52YXJfYmVmb3JlLCBkYXRhLT5jdXJyZW50X2xvb3AsDQogICAgICZpbmNy X3BvcywgYWZ0ZXIsICZjYW5kLT52YXJfYmVmb3JlLCAmY2FuZC0+dmFyX2Fm dGVyKTsNCn0NCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtbG9vcC1tYW5p cC5jYyBiL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmNjDQppbmRleCA5MDli NzA1ZDAwZC4uNWFiY2E2NDM3OWUgMTAwNjQ0DQotLS0gYS9nY2MvdHJlZS1z c2EtbG9vcC1tYW5pcC5jYw0KKysrIGIvZ2NjL3RyZWUtc3NhLWxvb3AtbWFu aXAuY2MNCkBAIC00Nyw3ICs0Nyw5IEBAIGFsb25nIHdpdGggR0NDOyBzZWUg dGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlDQogICAgc28gdGhhdCB3 ZSBjYW4gZnJlZSB0aGVtIGFsbCBhdCBvbmNlLiAgKi8NCnN0YXRpYyBiaXRt YXBfb2JzdGFjayBsb29wX3JlbmFtZXJfb2JzdGFjazsNCi0vKiBDcmVhdGVz IGFuIGluZHVjdGlvbiB2YXJpYWJsZSB3aXRoIHZhbHVlIEJBU0UgKyBTVEVQ ICogaXRlcmF0aW9uIGluIExPT1AuDQorLyogQ3JlYXRlcyBhbiBpbmR1Y3Rp b24gdmFyaWFibGUgd2l0aCB2YWx1ZSBCQVNFICgrLy0pIFNURVAgKiBpdGVy YXRpb24gaW4gTE9PUC4NCisgICBJZiBDT0RFIGlzIFBMVVNfRVhQUiwgdGhl IGluZHVjdGlvbiB2YXJpYWJsZSBpcyBCQVNFICsgU1RFUCAqIGl0ZXJhdGlv bi4NCisgICBJZiBDT0RFIGlzIE1JTlVTX0VYUFIsIHRoZSBpbmR1Y3Rpb24g dmFyaWFibGUgaXMgQkFTRSAtIFNURVAgKiBpdGVyYXRpb24uDQogICAgSXQg aXMgZXhwZWN0ZWQgdGhhdCBuZWl0aGVyIEJBU0Ugbm9yIFNURVAgYXJlIHNo YXJlZCB3aXRoIG90aGVyIGV4cHJlc3Npb25zDQogICAgKHVubGVzcyB0aGUg c2hhcmluZyBydWxlcyBhbGxvdyB0aGlzKS4gIFVzZSBWQVIgYXMgYSBiYXNl IHZhcl9kZWNsIGZvciBpdA0KICAgIChpZiBOVUxMLCBhIG5ldyB0ZW1wb3Jh cnkgd2lsbCBiZSBjcmVhdGVkKS4gIFRoZSBpbmNyZW1lbnQgd2lsbCBvY2N1 ciBhdA0KQEAgLTU3LDggKzU5LDggQEAgc3RhdGljIGJpdG1hcF9vYnN0YWNr IGxvb3BfcmVuYW1lcl9vYnN0YWNrOw0KICAgIFZBUl9BRlRFUiAodW5sZXNz IHRoZXkgYXJlIE5VTEwpLiAgKi8NCnZvaWQNCi1jcmVhdGVfaXYgKHRyZWUg YmFzZSwgdHJlZSBzdGVwLCB0cmVlIHZhciwgY2xhc3MgbG9vcCAqbG9vcCwN Ci0gICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmluY3JfcG9zLCBib29sIGFm dGVyLA0KK2NyZWF0ZV9pdiAodHJlZSBiYXNlLCB0cmVlX2NvZGUgY29kZSwg dHJlZSBzdGVwLCB0cmVlIHZhciwNCisgICAgY2xhc3MgbG9vcCAqbG9vcCwg Z2ltcGxlX3N0bXRfaXRlcmF0b3IgKmluY3JfcG9zLCBib29sIGFmdGVyLA0K ICAgdHJlZSAqdmFyX2JlZm9yZSwgdHJlZSAqdmFyX2FmdGVyKQ0Kew0KICAg Z2Fzc2lnbiAqc3RtdDsNCkBAIC02Niw3ICs2OCw5IEBAIGNyZWF0ZV9pdiAo dHJlZSBiYXNlLCB0cmVlIHN0ZXAsIHRyZWUgdmFyLCBjbGFzcyBsb29wICps b29wLA0KICAgdHJlZSBpbml0aWFsLCBzdGVwMTsNCiAgIGdpbXBsZV9zZXEg c3RtdHM7DQogICB0cmVlIHZiLCB2YTsNCi0gIGVudW0gdHJlZV9jb2RlIGlu Y3Jfb3AgPSBQTFVTX0VYUFI7DQorICAvKiBUaGUgY29kZSBjYW4gb25seSBi ZSBQTFVTX0VYUFIgb3IgTUlOVVNfRVhQUi4gICovDQorICBnY2NfYXNzZXJ0 IChjb2RlID09IFBMVVNfRVhQUiB8fCBjb2RlID09IE1JTlVTX0VYUFIpOw0K KyAgdHJlZV9jb2RlIGluY3Jfb3AgPSBjb2RlOw0KICAgZWRnZSBwZSA9IGxv b3BfcHJlaGVhZGVyX2VkZ2UgKGxvb3ApOw0KICAgaWYgKHZhciAhPSBOVUxM X1RSRUUpDQpAQCAtMTM2NSw3ICsxMzY5LDcgQEAgdHJlZV90cmFuc2Zvcm1f YW5kX3Vucm9sbF9sb29wIChjbGFzcyBsb29wICpsb29wLCB1bnNpZ25lZCBm YWN0b3IsDQogICAgICAgdHJlZSBjdHJfYmVmb3JlLCBjdHJfYWZ0ZXI7DQog ICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgYnNpID0gZ3NpX2xhc3Rfbm9u ZGVidWdfYmIgKG5ld19leGl0LT5zcmMpOw0KICAgICAgIGV4aXRfaWYgPSBh c19hIDxnY29uZCAqPiAoZ3NpX3N0bXQgKGJzaSkpOw0KLSAgICAgIGNyZWF0 ZV9pdiAoZXhpdF9iYXNlLCBleGl0X3N0ZXAsIE5VTExfVFJFRSwgbG9vcCwN CisgICAgICBjcmVhdGVfaXYgKGV4aXRfYmFzZSwgUExVU19FWFBSLCBleGl0 X3N0ZXAsIE5VTExfVFJFRSwgbG9vcCwNCiZic2ksIGZhbHNlLCAmY3RyX2Jl Zm9yZSwgJmN0cl9hZnRlcik7DQogICAgICAgZ2ltcGxlX2NvbmRfc2V0X2Nv ZGUgKGV4aXRfaWYsIGV4aXRfY21wKTsNCiAgICAgICBnaW1wbGVfY29uZF9z ZXRfbGhzIChleGl0X2lmLCBjdHJfYWZ0ZXIpOw0KQEAgLTE1ODAsOCArMTU4 NCw4IEBAIGNhbm9uaWNhbGl6ZV9sb29wX2l2cyAoY2xhc3MgbG9vcCAqbG9v cCwgdHJlZSAqbml0LCBib29sIGJ1bXBfaW5fbGF0Y2gpDQogICAgIGdzaSA9 IGdzaV9sYXN0X2JiIChsb29wLT5sYXRjaCk7DQogICBlbHNlDQogICAgIGdz aSA9IGdzaV9sYXN0X25vbmRlYnVnX2JiIChsb29wLT5oZWFkZXIpOw0KLSAg Y3JlYXRlX2l2IChidWlsZF9pbnRfY3N0X3R5cGUgKHR5cGUsIDApLCBidWls ZF9pbnRfY3N0ICh0eXBlLCAxKSwgTlVMTF9UUkVFLA0KLSAgICAgIGxvb3As ICZnc2ksIGJ1bXBfaW5fbGF0Y2gsICZ2YXJfYmVmb3JlLCBOVUxMKTsNCisg IGNyZWF0ZV9pdiAoYnVpbGRfaW50X2NzdF90eXBlICh0eXBlLCAwKSwgUExV U19FWFBSLCBidWlsZF9pbnRfY3N0ICh0eXBlLCAxKSwNCisgICAgICBOVUxM X1RSRUUsIGxvb3AsICZnc2ksIGJ1bXBfaW5fbGF0Y2gsICZ2YXJfYmVmb3Jl LCBOVUxMKTsNCiAgIHJld3JpdGVfYWxsX3BoaV9ub2Rlc193aXRoX2l2IChs b29wLCB2YXJfYmVmb3JlKTsNCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2Et bG9vcC1tYW5pcC5oIGIvZ2NjL3RyZWUtc3NhLWxvb3AtbWFuaXAuaA0KaW5k ZXggZDQ5MjczYTM5ODcuLmJkYTA5ZjUxZDU2IDEwMDY0NA0KLS0tIGEvZ2Nj L3RyZWUtc3NhLWxvb3AtbWFuaXAuaA0KKysrIGIvZ2NjL3RyZWUtc3NhLWxv b3AtbWFuaXAuaA0KQEAgLTIyLDggKzIyLDggQEAgYWxvbmcgd2l0aCBHQ0M7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUNCnR5cGVkZWYg dm9pZCAoKnRyYW5zZm9ybV9jYWxsYmFjaykoY2xhc3MgbG9vcCAqLCB2b2lk ICopOw0KLWV4dGVybiB2b2lkIGNyZWF0ZV9pdiAodHJlZSwgdHJlZSwgdHJl ZSwgY2xhc3MgbG9vcCAqLCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqLA0KLSAg ICAgICAgYm9vbCwgdHJlZSAqLCB0cmVlICopOw0KK2V4dGVybiB2b2lkIGNy ZWF0ZV9pdiAodHJlZSwgdHJlZV9jb2RlLCB0cmVlLCB0cmVlLCBjbGFzcyBs b29wICosDQorICAgICAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciAqLCBib29s LCB0cmVlICosIHRyZWUgKik7DQpleHRlcm4gdm9pZCByZXdyaXRlX2ludG9f bG9vcF9jbG9zZWRfc3NhIChiaXRtYXAsIHVuc2lnbmVkKTsNCmV4dGVybiB2 b2lkIHZlcmlmeV9sb29wX2Nsb3NlZF9zc2EgKGJvb2wsIGNsYXNzIGxvb3Ag KiA9IE5VTEwpOw0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtZGF0YS1y ZWZzLmNjIGIvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MNCmluZGV4IDY3 MjFhYjZlZmM0Li41YzkxMDNiMTZlNSAxMDA2NDQNCi0tLSBhL2djYy90cmVl LXZlY3QtZGF0YS1yZWZzLmNjDQorKysgYi9nY2MvdHJlZS12ZWN0LWRhdGEt cmVmcy5jYw0KQEAgLTUwOTksNyArNTA5OSw3IEBAIHZlY3RfY3JlYXRlX2Rh dGFfcmVmX3B0ciAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0 bXRfaW5mbywNCiAgICAgICBzdGFuZGFyZF9pdl9pbmNyZW1lbnRfcG9zaXRp b24gKGxvb3AsICZpbmNyX2dzaSwgJmluc2VydF9hZnRlcik7DQotICAgICAg Y3JlYXRlX2l2IChhZ2dyX3B0cl9pbml0LA0KKyAgICAgIGNyZWF0ZV9pdiAo YWdncl9wdHJfaW5pdCwgUExVU19FWFBSLA0KZm9sZF9jb252ZXJ0IChhZ2dy X3B0cl90eXBlLCBpdl9zdGVwKSwNCmFnZ3JfcHRyLCBsb29wLCAmaW5jcl9n c2ksIGluc2VydF9hZnRlciwNCiZpbmR4X2JlZm9yZV9pbmNyLCAmaW5keF9h ZnRlcl9pbmNyKTsNCkBAIC01MTI5LDkgKzUxMjksOSBAQCB2ZWN0X2NyZWF0 ZV9kYXRhX3JlZl9wdHIgKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5m byBzdG10X2luZm8sDQogICAgIHsNCiAgICAgICBzdGFuZGFyZF9pdl9pbmNy ZW1lbnRfcG9zaXRpb24gKGNvbnRhaW5pbmdfbG9vcCwgJmluY3JfZ3NpLA0K ICAgICAgJmluc2VydF9hZnRlcik7DQotICAgICAgY3JlYXRlX2l2IChhcHRy LCBmb2xkX2NvbnZlcnQgKGFnZ3JfcHRyX3R5cGUsIERSX1NURVAgKGRyKSks IGFnZ3JfcHRyLA0KLSBjb250YWluaW5nX2xvb3AsICZpbmNyX2dzaSwgaW5z ZXJ0X2FmdGVyLCAmaW5keF9iZWZvcmVfaW5jciwNCi0gJmluZHhfYWZ0ZXJf aW5jcik7DQorICAgICAgY3JlYXRlX2l2IChhcHRyLCBQTFVTX0VYUFIsIGZv bGRfY29udmVydCAoYWdncl9wdHJfdHlwZSwgRFJfU1RFUCAoZHIpKSwNCisg YWdncl9wdHIsIGNvbnRhaW5pbmdfbG9vcCwgJmluY3JfZ3NpLCBpbnNlcnRf YWZ0ZXIsDQorICZpbmR4X2JlZm9yZV9pbmNyLCAmaW5keF9hZnRlcl9pbmNy KTsNCiAgICAgICBpbmNyID0gZ3NpX3N0bXQgKGluY3JfZ3NpKTsNCiAgICAg ICAvKiBDb3B5IHRoZSBwb2ludHMtdG8gaW5mb3JtYXRpb24gaWYgaXQgZXhp c3RzLiAqLw0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC1tYW5p cC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KaW5kZXggNDRi ZDVmMmM4MDUuLmQ2M2RlZDVkNGYwIDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUt dmVjdC1sb29wLW1hbmlwLmNjDQorKysgYi9nY2MvdHJlZS12ZWN0LWxvb3At bWFuaXAuY2MNCkBAIC0zODUsNiArMzg1LDQ4IEBAIHZlY3RfbWF5YmVfcGVy bXV0ZV9sb29wX21hc2tzIChnaW1wbGVfc2VxICpzZXEsIHJncm91cF9jb250 cm9scyAqZGVzdF9yZ20sDQogICByZXR1cm4gZmFsc2U7DQp9DQorLyogVHJ5 IHRvIHVzZSBwZXJtdXRlcyB0byBkZWZpbmUgdGhlIGxlbnMgaW4gREVTVF9S R00gdXNpbmcgdGhlIGxlbnMNCisgICBpbiBTUkNfUkdNLCBnaXZlbiB0aGF0 IHRoZSBmb3JtZXIgaGFzIHR3aWNlIGFzIG1hbnkgbGVucyBhcyB0aGUNCisg ICBsYXR0ZXIuICBSZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBhZGRpbmcgYW55 IG5ldyBzdGF0ZW1lbnRzIHRvIFNFUS4gICovDQorDQorc3RhdGljIGJvb2wN Cit2ZWN0X21heWJlX3Blcm11dGVfbG9vcF9sZW5zICh0cmVlIGl2X3R5cGUs IGdpbXBsZV9zZXEgKnNlcSwNCisgICAgICAgcmdyb3VwX2NvbnRyb2xzICpk ZXN0X3JnbSwNCisgICAgICAgcmdyb3VwX2NvbnRyb2xzICpzcmNfcmdtKQ0K K3sNCisgIHRyZWUgY3RybF90eXBlID0gZGVzdF9yZ20tPnR5cGU7DQorICBw b2x5X3VpbnQ2NCBuaXRlbXNfcGVyX2N0cmwNCisgICAgPSBUWVBFX1ZFQ1RP Ul9TVUJQQVJUUyAoY3RybF90eXBlKSAqIGRlc3RfcmdtLT5mYWN0b3I7DQor ICBpZiAoZGVzdF9yZ20tPm1heF9uc2NhbGFyc19wZXJfaXRlciA8PSBzcmNf cmdtLT5tYXhfbnNjYWxhcnNfcGVyX2l0ZXIpDQorICAgIHsNCisgICAgICBm b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGRlc3RfcmdtLT5jb250cm9s cy5sZW5ndGggKCk7ICsraSkNCisgew0KKyAgIHRyZWUgc3JjID0gc3JjX3Jn bS0+Y29udHJvbHNbaSAvIGRlc3RfcmdtLT5jb250cm9scy5sZW5ndGggKCld Ow0KKyAgIHRyZWUgZGVzdCA9IGRlc3RfcmdtLT5jb250cm9sc1tpXTsNCisg ICBnYXNzaWduICpzdG10Ow0KKyAgIGlmIChpID09IDApDQorICAgICB7DQor ICAgICAgIC8qIE1JTiAoWCwgVkYqSS9OKSBjYXBwZWQgdG8gdGhlIHJhbmdl IFswLCBWRi9OXS4gICovDQorICAgICAgIHRyZWUgZmFjdG9yID0gYnVpbGRf aW50X2NzdCAoaXZfdHlwZSwgbml0ZW1zX3Blcl9jdHJsKTsNCisgICAgICAg c3RtdCA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKGRlc3QsIE1JTl9FWFBSLCBz cmMsIGZhY3Rvcik7DQorICAgICAgIGdpbXBsZV9zZXFfYWRkX3N0bXQgKHNl cSwgc3RtdCk7DQorICAgICB9DQorICAgZWxzZQ0KKyAgICAgew0KKyAgICAg ICAvKiAoWCAtIE1JTiAoWCwgVkYqSS9OKSkgY2FwcGVkIHRvIHRoZSByYW5n ZSBbMCwgVkYvTl0uICAqLw0KKyAgICAgICB0cmVlIGZhY3RvciA9IGJ1aWxk X2ludF9jc3QgKGl2X3R5cGUsIG5pdGVtc19wZXJfY3RybCAqIGkpOw0KKyAg ICAgICB0cmVlIHRlbXAgPSBtYWtlX3NzYV9uYW1lIChpdl90eXBlKTsNCisg ICAgICAgc3RtdCA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKHRlbXAsIE1JTl9F WFBSLCBzcmMsIGZhY3Rvcik7DQorICAgICAgIGdpbXBsZV9zZXFfYWRkX3N0 bXQgKHNlcSwgc3RtdCk7DQorICAgICAgIHN0bXQgPSBnaW1wbGVfYnVpbGRf YXNzaWduIChkZXN0LCBNSU5VU19FWFBSLCBzcmMsIHRlbXApOw0KKyAgICAg ICBnaW1wbGVfc2VxX2FkZF9zdG10IChzZXEsIHN0bXQpOw0KKyAgICAgfQ0K KyB9DQorICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisgIHJldHVybiBm YWxzZTsNCit9DQorDQovKiBIZWxwZXIgZm9yIHZlY3Rfc2V0X2xvb3BfY29u ZGl0aW9uX3BhcnRpYWxfdmVjdG9ycy4gIEdlbmVyYXRlIGRlZmluaXRpb25z DQogICAgZm9yIGFsbCB0aGUgcmdyb3VwIGNvbnRyb2xzIGluIFJHQyBhbmQg cmV0dXJuIGEgY29udHJvbCB0aGF0IGlzIG5vbnplcm8NCiAgICB3aGVuIHRo ZSBsb29wIG5lZWRzIHRvIGl0ZXJhdGUuICBBZGQgYW55IG5ldyBwcmVoZWFk ZXIgc3RhdGVtZW50cyB0bw0KQEAgLTQ2OCw4ICs1MTAsOSBAQCB2ZWN0X3Nl dF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IChjbGFzcyBsb29wICpsb29wLCBs b29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQogICBnaW1wbGVfc3RtdF9pdGVy YXRvciBpbmNyX2dzaTsNCiAgIGJvb2wgaW5zZXJ0X2FmdGVyOw0KICAgc3Rh bmRhcmRfaXZfaW5jcmVtZW50X3Bvc2l0aW9uIChsb29wLCAmaW5jcl9nc2ks ICZpbnNlcnRfYWZ0ZXIpOw0KLSAgY3JlYXRlX2l2IChidWlsZF9pbnRfY3N0 IChpdl90eXBlLCAwKSwgbml0ZW1zX3N0ZXAsIE5VTExfVFJFRSwgbG9vcCwN Ci0gICAgICAmaW5jcl9nc2ksIGluc2VydF9hZnRlciwgJmluZGV4X2JlZm9y ZV9pbmNyLCAmaW5kZXhfYWZ0ZXJfaW5jcik7DQorICBjcmVhdGVfaXYgKGJ1 aWxkX2ludF9jc3QgKGl2X3R5cGUsIDApLCBQTFVTX0VYUFIsIG5pdGVtc19z dGVwLCBOVUxMX1RSRUUsDQorICAgICAgbG9vcCwgJmluY3JfZ3NpLCBpbnNl cnRfYWZ0ZXIsICZpbmRleF9iZWZvcmVfaW5jciwNCisgICAgICAmaW5kZXhf YWZ0ZXJfaW5jcik7DQogICB0cmVlIHplcm9faW5kZXggPSBidWlsZF9pbnRf Y3N0IChjb21wYXJlX3R5cGUsIDApOw0KICAgdHJlZSB0ZXN0X2luZGV4LCB0 ZXN0X2xpbWl0LCBmaXJzdF9saW1pdDsNCkBAIC02ODIsNiArNzI1LDMwMCBA QCB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IChjbGFzcyBsb29w ICpsb29wLCBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQogICByZXR1cm4g bmV4dF9jdHJsOw0KfQ0KKy8qIEhlbHBlciBmb3IgdmVjdF9zZXRfbG9vcF9j b25kaXRpb25fcGFydGlhbF92ZWN0b3JzLiAgR2VuZXJhdGUgZGVmaW5pdGlv bnMNCisgICBmb3IgYWxsIHRoZSByZ3JvdXAgY29udHJvbHMgaW4gUkdDIGFu ZCByZXR1cm4gYSBjb250cm9sIHRoYXQgaXMgbm9uemVybw0KKyAgIHdoZW4g dGhlIGxvb3AgbmVlZHMgdG8gaXRlcmF0ZS4gIEFkZCBhbnkgbmV3IHByZWhl YWRlciBzdGF0ZW1lbnRzIHRvDQorICAgUFJFSEVBREVSX1NFUS4gIFVzZSBM T09QX0NPTkRfR1NJIHRvIGluc2VydCBjb2RlIGJlZm9yZSB0aGUgZXhpdCBn Y29uZC4NCisNCisgICBSR0MgYmVsb25ncyB0byBsb29wIExPT1AuICBUaGUg bG9vcCBvcmlnaW5hbGx5IGl0ZXJhdGVkIE5JVEVSUw0KKyAgIHRpbWVzIGFu ZCBoYXMgYmVlbiB2ZWN0b3JpemVkIGFjY29yZGluZyB0byBMT09QX1ZJTkZP Lg0KKw0KKyAgIFVubGlrZSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVj dGx5IHdoaWNoIGlzIGl0ZXJhdGluZyBmcm9tIDAtYmFzZWQgSVYNCisgICB0 byBURVNUX0xJTUlUIC0gYmlhcy4NCisNCisgICBJbiB2ZWN0X3NldF9sb29w X2NvbnRyb2xzX2J5X3NlbGVjdF92bCwgd2UgYXJlIGl0ZXJhdGluZyBmcm9t IHN0YXJ0IGF0DQorICAgSVYgPSBURVNUX0xJTUlUIC0gYmlhcyBhbmQga2Vl cCBzdWJ0cmFjdCBJViBieSB0aGUgbGVuZ3RoIGNhbGN1bGF0ZWQgYnkNCisg ICBJRk5fU0VMRUNUX1ZMIHBhdHRlcm4uDQorDQorICAgMS4gU2luZ2xlIHJn cm91cCwgdGhlIEdpbXBsZSBJUiBzaG91bGQgYmU6DQorDQorICMgdmVjdHBf Qi42XzggPSBQSEkgPHZlY3RwX0IuNl8xMyg2KSwgJkIoNSk+DQorICMgdmVj dHBfQi44XzE2ID0gUEhJIDx2ZWN0cF9CLjhfMTcoNiksICZCKDUpPg0KKyAj IHZlY3RwX0EuMTFfMTkgPSBQSEkgPHZlY3RwX0EuMTFfMjAoNiksICZBKDUp Pg0KKyAjIHZlY3RwX0EuMTNfMjIgPSBQSEkgPHZlY3RwX0EuMTNfMjMoNiks ICZBKDUpPg0KKyAjIGl2dG1wXzI2ID0gUEhJIDxpdnRtcF8yNyg2KSwgXzI1 KDUpPg0KKyBfMjggPSAuU0VMRUNUX1ZMIChpdnRtcF8yNiwgUE9MWV9JTlRf Q1NUIFs0LCA0XSk7DQorIGl2dG1wXzE1ID0gXzI4ICogNDsNCisgdmVjdF9f MS4xMF8xOCA9IC5MRU5fTE9BRCAodmVjdHBfQi44XzE2LCAxMjhCLCBfMjgs IDApOw0KKyBfMSA9IEJbaV8xMF07DQorIC5MRU5fU1RPUkUgKHZlY3RwX0Eu MTNfMjIsIDEyOEIsIF8yOCwgdmVjdF9fMS4xMF8xOCwgMCk7DQorIGlfNyA9 IGlfMTAgKyAxOw0KKyB2ZWN0cF9CLjhfMTcgPSB2ZWN0cF9CLjhfMTYgKyBp dnRtcF8xNTsNCisgdmVjdHBfQS4xM18yMyA9IHZlY3RwX0EuMTNfMjIgKyBp dnRtcF8xNTsNCisgaXZ0bXBfMjcgPSBpdnRtcF8yNiAtIF8yODsNCisgaWYg KGl2dG1wXzI3ICE9IDApDQorICAgZ290byA8YmIgNj47IFs4My4zMyVdDQor IGVsc2UNCisgICBnb3RvIDxiYiA3PjsgWzE2LjY3JV0NCisNCisgICBOb3Rl OiBXZSB1c2UgdGhlIG91dGNvbWUgb2YgLlNFTEVDVF9WTCB0byBhZGp1c3Qg Ym90aCBsb29wIGNvbnRyb2wgSVYgYW5kDQorICAgZGF0YSByZWZlcmVuY2Ug cG9pbnRlciBJVi4NCisNCisgICAxKS4gVGhlIHJlc3VsdCBvZiAuU0VMRUNU X1ZMOg0KKyAgICAgICBfMjggPSAuU0VMRUNUX1ZMIChpdnRtcF8yNiwgUE9M WV9JTlRfQ1NUIFs0LCA0XSk7DQorICAgICAgIFRoZSBfMjggaXMgbm90IG5l Y2Vzc2FyeSB0byBiZSBWRiBpbiBhbnkgaXRlcmF0aW9uLCBpbnN0ZWFkLCB3 ZSBhbGxvdw0KKyAgICAgICBfMjggdG8gYmUgYW55IHZhbHVlIGFzIGxvbmcg YXMgXzI4IDw9IFZGLiBTdWNoIGZsZXhpYmxlIFNFTEVDVF9WTA0KKyAgICAg ICBwYXR0ZXJuIGFsbG93cyB0YXJnZXQgaGF2ZSB2YXJpb3VzIGZsZXhpYmxl IG9wdGltaXphdGlvbnMgaW4gdmVjdG9yDQorICAgICAgIGxvb3AgaXRlcmF0 aW9ucy4gVGFyZ2V0IGxpa2UgUklTQy1WIGhhcyBzcGVjaWFsIGFwcGxpY2F0 aW9uIHZlY3Rvcg0KKyAgICAgICBsZW5ndGggY2FsY3VsYXRpb24gaW5zdHJ1 Y3Rpb24gd2hpY2ggd2lsbCBkaXN0cmlidXRlIGV2ZW4gd29ya2xvYWQNCisg ICAgICAgaW4gdGhlIGxhc3QgMiBpdGVyYXRpb25zLg0KKw0KKyAgICAgICBP dGhlciBleGFtcGxlIGlzIHRoYXQgd2UgY2FuIGFsbG93IGV2ZW4gZ2VuZXJh dGUgXzI4IDw9IFZGIC8gMiBzbw0KKyAgICAgICB0aGF0IHNvbWUgbWFjaGlu ZSBjYW4gcnVuIHZlY3RvciBjb2RlcyBpbiBsb3cgcG93ZXIgbW9kZS4NCisN CisgICAyKS4gTG9vcCBjb250cm9sIElWOg0KKyAgICAgICBpdnRtcF8yNyA9 IGl2dG1wXzI2IC0gXzI4Ow0KKyAgICAgICBpZiAoaXZ0bXBfMjcgIT0gMCkN CisgZ290byA8YmIgNj47IFs4My4zMyVdDQorICAgICAgIGVsc2UNCisgZ290 byA8YmIgNz47IFsxNi42NyVdDQorDQorICAgICAgIFRoaXMgaXMgdGhlIHNh dHVyYXRpbmctc3VidHJhY3Rpb24gdG93YXJkcyB6ZXJvLCB0aGUgb3V0Y29t ZSBvZg0KKyAgICAgICAuU0VMRUNUX1ZMIHdpbCBtYWtlIGl2dG1wXzI3IG5l dmVyIHVuZGVyZmxvdyB6ZXJvLg0KKw0KKyAgIDMpLiBEYXRhIHJlZmVyZW5j ZSBwb2ludGVyIElWOg0KKyAgICAgICBpdnRtcF8xNSA9IF8yOCAqIDQ7DQor ICAgICAgIHZlY3RwX0IuOF8xNyA9IHZlY3RwX0IuOF8xNiArIGl2dG1wXzE1 Ow0KKyAgICAgICB2ZWN0cF9BLjEzXzIzID0gdmVjdHBfQS4xM18yMiArIGl2 dG1wXzE1Ow0KKw0KKyAgICAgICBUaGUgcG9pbnRlciBJViBpcyBhZGp1c3Rl ZCBhY2N1cmF0ZWx5IGFjY29yZGluZyB0byB0aGUgLlNFTEVDVF9WTC4NCisN CisgICAyLiBNdWx0aXBsZSByZ3JvdXAsIHRoZSBHaW1wbGUgSVIgc2hvdWxk IGJlOg0KKw0KKyAjIGlfMjMgPSBQSEkgPGlfMjAoNiksIDAoMTEpPg0KKyAj IHZlY3RwX2YuOF81MSA9IFBISSA8dmVjdHBfZi44XzUyKDYpLCBmXzE1KEQp KDExKT4NCisgIyB2ZWN0cF9kLjEwXzU5ID0gUEhJIDx2ZWN0cF9kLjEwXzYw KDYpLCBkXzE4KEQpKDExKT4NCisgIyBpdnRtcF83MCA9IFBISSA8aXZ0bXBf NzEoNiksIF82OSgxMSk+DQorICMgaXZ0bXBfNzMgPSBQSEkgPGl2dG1wXzc0 KDYpLCBfNjcoMTEpPg0KKyBfNzIgPSBNSU5fRVhQUiA8aXZ0bXBfNzAsIDE2 PjsNCisgXzc1ID0gTUlOX0VYUFIgPGl2dG1wXzczLCAxNj47DQorIF8xID0g aV8yMyAqIDI7DQorIF8yID0gKGxvbmcgdW5zaWduZWQgaW50KSBfMTsNCisg XzMgPSBfMiAqIDI7DQorIF80ID0gZl8xNShEKSArIF8zOw0KKyBfNSA9IF8y ICsgMTsNCisgXzYgPSBfNSAqIDI7DQorIF83ID0gZl8xNShEKSArIF82Ow0K KyAuTEVOX1NUT1JFICh2ZWN0cF9mLjhfNTEsIDEyOEIsIF83NSwgeyAxLCAy LCAxLCAyLCAxLCAyLCAxLCAyIH0sIDApOw0KKyB2ZWN0cF9mLjhfNTYgPSB2 ZWN0cF9mLjhfNTEgKyAxNjsNCisgLkxFTl9TVE9SRSAodmVjdHBfZi44XzU2 LCAxMjhCLCBfNzIsIHsgMSwgMiwgMSwgMiwgMSwgMiwgMSwgMiB9LCAwKTsN CisgXzggPSAobG9uZyB1bnNpZ25lZCBpbnQpIGlfMjM7DQorIF85ID0gXzgg KiA0Ow0KKyBfMTAgPSBkXzE4KEQpICsgXzk7DQorIF82MSA9IF83NSAvIDI7 DQorIC5MRU5fU1RPUkUgKHZlY3RwX2QuMTBfNTksIDEyOEIsIF82MSwgeyAz LCAzLCAzLCAzIH0sIDApOw0KKyB2ZWN0cF9kLjEwXzYzID0gdmVjdHBfZC4x MF81OSArIDE2Ow0KKyBfNjQgPSBfNzIgLyAyOw0KKyAuTEVOX1NUT1JFICh2 ZWN0cF9kLjEwXzYzLCAxMjhCLCBfNjQsIHsgMywgMywgMywgMyB9LCAwKTsN CisgaV8yMCA9IGlfMjMgKyAxOw0KKyB2ZWN0cF9mLjhfNTIgPSB2ZWN0cF9m LjhfNTYgKyAxNjsNCisgdmVjdHBfZC4xMF82MCA9IHZlY3RwX2QuMTBfNjMg KyAxNjsNCisgaXZ0bXBfNzQgPSBpdnRtcF83MyAtIF83NTsNCisgaXZ0bXBf NzEgPSBpdnRtcF83MCAtIF83MjsNCisgaWYgKGl2dG1wXzc0ICE9IDApDQor ICAgZ290byA8YmIgNj47IFs4My4zMyVdDQorIGVsc2UNCisgICBnb3RvIDxi YiAxMz47IFsxNi42NyVdDQorDQorICAgTm90ZTogV2UgRE8gTk9UIHVzZSAu U0VMRUNUX1ZMIGluIFNMUCBhdXRvLXZlY3Rvcml6YXRpb24gZm9yIG11bHRp cGxlDQorICAgcmdyb3Vwcy4gSW5zdGVhZCwgd2UgdXNlIE1JTl9FWFBSIHRv IGd1YXJhbnRlZSB3ZSBhbHdheXMgdXNlIFZGIGFzIHRoZQ0KKyAgIGl0ZXJh dGlvbiBhbW91bnQgZm9yIG11dGlwbGUgcmdyb3Vwcy4NCisNCisgICBUaGUg YW5hbHlzaXMgb2YgdGhlIGZsb3cgb2YgbXVsdGlwbGUgcmdyb3VwczoNCisg XzcyID0gTUlOX0VYUFIgPGl2dG1wXzcwLCAxNj47DQorIF83NSA9IE1JTl9F WFBSIDxpdnRtcF83MywgMTY+Ow0KKyAuLi4NCisgLkxFTl9TVE9SRSAodmVj dHBfZi44XzUxLCAxMjhCLCBfNzUsIHsgMSwgMiwgMSwgMiwgMSwgMiwgMSwg MiB9LCAwKTsNCisgdmVjdHBfZi44XzU2ID0gdmVjdHBfZi44XzUxICsgMTY7 DQorIC5MRU5fU1RPUkUgKHZlY3RwX2YuOF81NiwgMTI4QiwgXzcyLCB7IDEs IDIsIDEsIDIsIDEsIDIsIDEsIDIgfSwgMCk7DQorIC4uLg0KKyBfNjEgPSBf NzUgLyAyOw0KKyAuTEVOX1NUT1JFICh2ZWN0cF9kLjEwXzU5LCAxMjhCLCBf NjEsIHsgMywgMywgMywgMyB9LCAwKTsNCisgdmVjdHBfZC4xMF82MyA9IHZl Y3RwX2QuMTBfNTkgKyAxNjsNCisgXzY0ID0gXzcyIC8gMjsNCisgLkxFTl9T VE9SRSAodmVjdHBfZC4xMF82MywgMTI4QiwgXzY0LCB7IDMsIDMsIDMsIDMg fSwgMCk7DQorDQorICBXZSB1c2UgXzcyID0gTUlOX0VYUFIgPGl2dG1wXzcw LCAxNj47IHRvIGdlbmVyYXRlIHRoZSBudW1iZXIgb2YgdGhlIGVsZW1lbnRz DQorICB0byBiZSBwcm9jZXNzZWQgaW4gZWFjaCBpdGVyYXRpb24uDQorDQor ICBUaGUgcmVsYXRlZCBTVE9SRXM6DQorICAgIF83MiA9IE1JTl9FWFBSIDxp dnRtcF83MCwgMTY+Ow0KKyAgICAuTEVOX1NUT1JFICh2ZWN0cF9mLjhfNTYs IDEyOEIsIF83MiwgeyAxLCAyLCAxLCAyLCAxLCAyLCAxLCAyIH0sIDApOw0K KyAgICBfNjQgPSBfNzIgLyAyOw0KKyAgICAuTEVOX1NUT1JFICh2ZWN0cF9k LjEwXzYzLCAxMjhCLCBfNjQsIHsgMywgMywgMywgMyB9LCAwKTsNCisgIFNp bmNlIHRoZXNlIDIgU1RPUkVzIHN0b3JlIDIgdmVjdG9ycyB0aGF0IHRoZSBz ZWNvbmQgdmVjdG9yIGlzIGhhbGYgZWxlbWVudHMNCisgIG9mIHRoZSBmaXJz dCB2ZWN0b3IuIFNvIHRoZSBsZW5ndGggb2Ygc2Vjb25kIFNUT1JFIHdpbGwg YmUgXzY0ID0gXzcyIC8gMjsNCisgIEl0J3Mgc2ltaWxhciB0byB0aGUgVklF V19DT05WRVJUIG9mIGhhbmRsaW5nIG1hc2tzIGluIFNMUC4NCisNCisgIDMu IE11bHRpcGxlIHJncm91cHMgZm9yIG5vbi1TTFAgYXV0by12ZWN0b3JpemF0 aW9uLg0KKw0KKyAgICAgIyBpdnRtcF8yNiA9IFBISSA8aXZ0bXBfMjcoNCks IF8yNSgzKT4NCisgICAgICMgaXZ0bXAuMzVfMTAgPSBQSEkgPGl2dG1wLjM1 XzExKDQpLCBpdnRtcC4zNV8xKDMpPg0KKyAgICAgIyBpdnRtcC4zNl8yID0g UEhJIDxpdnRtcC4zNl84KDQpLCBpdnRtcC4zNl8yMygzKT4NCisgICAgIF8y OCA9IE1JTl9FWFBSIDxpdnRtcF8yNiwgUE9MWV9JTlRfQ1NUIFs4LCA4XT47 DQorICAgICBsb29wX2xlbl8xNSA9IE1JTl9FWFBSIDxfMjgsIFBPTFlfSU5U X0NTVCBbNCwgNF0+Ow0KKyAgICAgbG9vcF9sZW5fMTYgPSBfMjggLSBsb29w X2xlbl8xNTsNCisgICAgIF8yOSA9ICh2b2lkICopIGl2dG1wLjM1XzEwOw0K KyAgICAgXzcgPSAmTUVNIDx2ZWN0b3IoWzQsNF0pIGludD4gWyhpbnQgKilf MjldOw0KKyAgICAgdmVjdF9fMS4yNV8xNyA9IC5MRU5fTE9BRCAoXzcsIDEy OEIsIGxvb3BfbGVuXzE1LCAwKTsNCisgICAgIF8zMyA9IF8yOSArIFBPTFlf SU5UX0NTVCBbMTYsIDE2XTsNCisgICAgIF8zNCA9ICZNRU0gPHZlY3Rvcihb NCw0XSkgaW50PiBbKGludCAqKV8zM107DQorICAgICB2ZWN0X18xLjI2XzE5 ID0gLkxFTl9MT0FEIChfMzQsIDEyOEIsIGxvb3BfbGVuXzE2LCAwKTsNCisg ICAgIHZlY3RfXzIuMjdfMjAgPSBWRUNfUEFDS19UUlVOQ19FWFBSIDx2ZWN0 X18xLjI1XzE3LCB2ZWN0X18xLjI2XzE5PjsNCisgICAgIF8zMCA9ICh2b2lk ICopIGl2dG1wLjM2XzI7DQorICAgICBfMzEgPSAmTUVNIDx2ZWN0b3IoWzgs OF0pIHNob3J0IGludD4gWyhzaG9ydCBpbnQgKilfMzBdOw0KKyAgICAgLkxF Tl9TVE9SRSAoXzMxLCAxMjhCLCBfMjgsIHZlY3RfXzIuMjdfMjAsIDApOw0K KyAgICAgaXZ0bXBfMjcgPSBpdnRtcF8yNiAtIF8yODsNCisgICAgIGl2dG1w LjM1XzExID0gaXZ0bXAuMzVfMTAgKyBQT0xZX0lOVF9DU1QgWzMyLCAzMl07 DQorICAgICBpdnRtcC4zNl84ID0gaXZ0bXAuMzZfMiArIFBPTFlfSU5UX0NT VCBbMTYsIDE2XTsNCisgICAgIGlmIChpdnRtcF8yNyAhPSAwKQ0KKyAgICAg ICBnb3RvIDxiYiA0PjsgWzgzLjMzJV0NCisgICAgIGVsc2UNCisgICAgICAg Z290byA8YmIgNT47IFsxNi42NyVdDQorDQorICAgICBUaGUgdG90YWwgbGVu Z3RoOiBfMjggPSBNSU5fRVhQUiA8aXZ0bXBfMjYsIFBPTFlfSU5UX0NTVCBb OCwgOF0+Ow0KKw0KKyAgICAgVGhlIGxlbmd0aCBvZiBmaXJzdCBoYWxmIHZl Y3RvcjoNCisgICAgICAgbG9vcF9sZW5fMTUgPSBNSU5fRVhQUiA8XzI4LCBQ T0xZX0lOVF9DU1QgWzQsIDRdPjsNCisNCisgICAgIFRoZSBsZW5ndGggb2Yg c2Vjb25kIGhhbGYgdmVjdG9yOg0KKyAgICAgICBsb29wX2xlbl8xNSA9IE1J Tl9FWFBSIDxfMjgsIFBPTFlfSU5UX0NTVCBbNCwgNF0+Ow0KKyAgICAgICBs b29wX2xlbl8xNiA9IF8yOCAtIGxvb3BfbGVuXzE1Ow0KKw0KKyAgICAgMSku IF8yOCBhbHdheXMgPD0gUE9MWV9JTlRfQ1NUIFs4LCA4XS4NCisgICAgIDIp LiBXaGVuIF8yOCA8PSBQT0xZX0lOVF9DU1QgWzQsIDRdLCBzZWNvbmQgaGFs ZiB2ZWN0b3IgaXMgbm90IHByb2Nlc3NlZC4NCisgICAgIDMpLiBXaGVuIF8y OCA+IFBPTFlfSU5UX0NTVCBbNCwgNF0sIHNlY29uZCBoYWxmIHZlY3RvciBp cyBwcm9jZXNzZWQuDQorKi8NCisNCitzdGF0aWMgdHJlZQ0KK3ZlY3Rfc2V0 X2xvb3BfY29udHJvbHNfYnlfc2VsZWN0X3ZsIChjbGFzcyBsb29wICpsb29w LCBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQorICAgICAgZ2ltcGxlX3Nl cSAqcHJlaGVhZGVyX3NlcSwNCisgICAgICBnaW1wbGVfc2VxICpoZWFkZXJf c2VxLA0KKyAgICAgIHJncm91cF9jb250cm9scyAqcmdjLCB0cmVlIG5pdGVy cywNCisgICAgICB1bnNpZ25lZCBpbnQgY29udHJvbHNfbGVuZ3RoKQ0KK3sN CisgIHRyZWUgY29tcGFyZV90eXBlID0gTE9PUF9WSU5GT19SR1JPVVBfQ09N UEFSRV9UWVBFIChsb29wX3ZpbmZvKTsNCisgIHRyZWUgaXZfdHlwZSA9IExP T1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pOw0KKyAgLyog V2UgYXJlIG5vdCBhbGxvd2luZyBtYXNrZWQgYXBwcm9hY2ggaW4gU0VMRUNU X1ZMLiAgKi8NCisgIGdjY19hc3NlcnQgKCFMT09QX1ZJTkZPX0ZVTExZX01B U0tFRF9QIChsb29wX3ZpbmZvKSk7DQorDQorICB0cmVlIGN0cmxfdHlwZSA9 IHJnYy0+dHlwZTsNCisgIHVuc2lnbmVkIGludCBuaXRlbXNfcGVyX2l0ZXIg PSByZ2MtPm1heF9uc2NhbGFyc19wZXJfaXRlciAqIHJnYy0+ZmFjdG9yOw0K KyAgcG9seV91aW50NjQgbml0ZW1zX3Blcl9jdHJsID0gVFlQRV9WRUNUT1Jf U1VCUEFSVFMgKGN0cmxfdHlwZSkgKiByZ2MtPmZhY3RvcjsNCisgIHBvbHlf dWludDY0IHZmID0gTE9PUF9WSU5GT19WRUNUX0ZBQ1RPUiAobG9vcF92aW5m byk7DQorDQorICAvKiBDYWxjdWxhdGUgdGhlIG1heGltdW0gbnVtYmVyIG9m IGl0ZW0gdmFsdWVzIHRoYXQgdGhlIHJncm91cA0KKyAgICAgaGFuZGxlcyBp biB0b3RhbCwgdGhlIG51bWJlciB0aGF0IGl0IGhhbmRsZXMgZm9yIGVhY2gg aXRlcmF0aW9uDQorICAgICBvZiB0aGUgdmVjdG9yIGxvb3AuICAqLw0KKyAg dHJlZSBuaXRlbXNfdG90YWwgPSBuaXRlcnM7DQorICBpZiAobml0ZW1zX3Bl cl9pdGVyICE9IDEpDQorICAgIHsNCisgICAgICAvKiBXZSBjaGVja2VkIGJl Zm9yZSBzZXR0aW5nIExPT1BfVklORk9fVVNJTkdfUEFSVElBTF9WRUNUT1JT X1AgdGhhdA0KKyB0aGVzZSBtdWx0aXBsaWNhdGlvbnMgZG9uJ3Qgb3ZlcmZs b3cuICAqLw0KKyAgICAgIHRyZWUgY29tcGFyZV9mYWN0b3IgPSBidWlsZF9p bnRfY3N0IChjb21wYXJlX3R5cGUsIG5pdGVtc19wZXJfaXRlcik7DQorICAg ICAgbml0ZW1zX3RvdGFsID0gZ2ltcGxlX2J1aWxkIChwcmVoZWFkZXJfc2Vx LCBNVUxUX0VYUFIsIGNvbXBhcmVfdHlwZSwNCisgICAgbml0ZW1zX3RvdGFs LCBjb21wYXJlX2ZhY3Rvcik7DQorICAgIH0NCisNCisgIC8qIENvbnZlcnQg dGhlIGNvbXBhcmlzb24gdmFsdWUgdG8gdGhlIElWIHR5cGUgKGVpdGhlciBh IG5vLW9wIG9yDQorICAgICBhIHByb21vdGlvbikuICAqLw0KKyAgbml0ZW1z X3RvdGFsID0gZ2ltcGxlX2NvbnZlcnQgKHByZWhlYWRlcl9zZXEsIGl2X3R5 cGUsIG5pdGVtc190b3RhbCk7DQorDQorICAvKiBDcmVhdGUgYW4gaW5kdWN0 aW9uIHZhcmlhYmxlIHRoYXQgY291bnRzIHRoZSBudW1iZXIgb2YgaXRlbXMN CisgICAgIHByb2Nlc3NlZC4gICovDQorICB0cmVlIGluZGV4X2JlZm9yZV9p bmNyLCBpbmRleF9hZnRlcl9pbmNyOw0KKyAgZ2ltcGxlX3N0bXRfaXRlcmF0 b3IgaW5jcl9nc2k7DQorICBib29sIGluc2VydF9hZnRlcjsNCisgIHN0YW5k YXJkX2l2X2luY3JlbWVudF9wb3NpdGlvbiAobG9vcCwgJmluY3JfZ3NpLCAm aW5zZXJ0X2FmdGVyKTsNCisNCisgIC8qIFRlc3QgdGhlIGRlY3JlbWVudGVk IElWLCB3aGljaCB3aWxsIG5ldmVyIHVuZGVyZmxvdyAwIHNpbmNlIHdlIGhh dmUNCisgICAgIElGTl9TRUxFQ1RfVkwgdG8gZ3VyYW50ZWUgdGhhdC4gICov DQorICB0cmVlIHRlc3RfbGltaXQgPSBuaXRlbXNfdG90YWw7DQorDQorICAv KiBQcm92aWRlIGEgZGVmaW5pdGlvbiBvZiBlYWNoIGNvbnRyb2wgaW4gdGhl IGdyb3VwLiAgKi8NCisgIHRyZWUgY3RybDsNCisgIHVuc2lnbmVkIGludCBp Ow0KKyAgRk9SX0VBQ0hfVkVDX0VMVF9SRVZFUlNFIChyZ2MtPmNvbnRyb2xz LCBpLCBjdHJsKQ0KKyAgICB7DQorICAgICAgLyogUHJldmlvdXMgY29udHJv bHMgd2lsbCBjb3ZlciBCSUFTIGl0ZW1zLiAgVGhpcyBjb250cm9sIGNvdmVy cyB0aGUNCisgbmV4dCBiYXRjaC4gICovDQorICAgICAgcG9seV91aW50NjQg YmlhcyA9IG5pdGVtc19wZXJfY3RybCAqIGk7DQorICAgICAgdHJlZSBiaWFz X3RyZWUgPSBidWlsZF9pbnRfY3N0IChpdl90eXBlLCBiaWFzKTsNCisNCisg ICAgICAvKiBSYXRoZXIgdGhhbiBoYXZlIGEgbmV3IElWIHRoYXQgc3RhcnRz IGF0IFRFU1RfTElNSVQgYW5kIGdvZXMgZG93biB0bw0KKyBCSUFTLCBwcmVm ZXIgdG8gdXNlIHRoZSBzYW1lIFRFU1RfTElNSVQgLSBCSUFTIGJhc2VkIElW IGZvciBlYWNoDQorIGNvbnRyb2wgYW5kIGFkanVzdCB0aGUgYm91bmQgZG93 biBieSBCSUFTLiAgKi8NCisgICAgICB0cmVlIHRoaXNfdGVzdF9saW1pdCA9 IHRlc3RfbGltaXQ7DQorICAgICAgaWYgKGkgIT0gMCkNCisgew0KKyAgIHRo aXNfdGVzdF9saW1pdCA9IGdpbXBsZV9idWlsZCAocHJlaGVhZGVyX3NlcSwg TUFYX0VYUFIsIGl2X3R5cGUsDQorICAgdGhpc190ZXN0X2xpbWl0LCBiaWFz X3RyZWUpOw0KKyAgIHRoaXNfdGVzdF9saW1pdCA9IGdpbXBsZV9idWlsZCAo cHJlaGVhZGVyX3NlcSwgTUlOVVNfRVhQUiwgaXZfdHlwZSwNCisgICB0aGlz X3Rlc3RfbGltaXQsIGJpYXNfdHJlZSk7DQorIH0NCisNCisgICAgICAvKiBD cmVhdGUgZGVjcmVtZW50IElWLiAgKi8NCisgICAgICBjcmVhdGVfaXYgKHRo aXNfdGVzdF9saW1pdCwgTUlOVVNfRVhQUiwgY3RybCwgTlVMTF9UUkVFLCBs b29wLCAmaW5jcl9nc2ksDQorIGluc2VydF9hZnRlciwgJmluZGV4X2JlZm9y ZV9pbmNyLCAmaW5kZXhfYWZ0ZXJfaW5jcik7DQorDQorICAgICAgcG9seV91 aW50NjQgZmluYWxfdmYgPSB2ZiAqIG5pdGVtc19wZXJfaXRlcjsNCisgICAg ICB0cmVlIHZmX3N0ZXAgPSBidWlsZF9pbnRfY3N0IChpdl90eXBlLCBmaW5h bF92Zik7DQorICAgICAgdHJlZSByZXNfbGVuOw0KKyAgICAgIGlmIChuaXRl bXNfcGVyX2l0ZXIgIT0gMSB8fCBjb250cm9sc19sZW5ndGggIT0gMSkNCisg ew0KKyAgIC8qIEZvciBTTFAsIHdlIGNhbid0IGFsbG93IG5vbi1WRiBudW1i ZXIgb2YgZWxlbWVudHMgdG8gYmUgcHJvY2Vzc2VkDQorICAgICAgaW4gbm9u LWZpbmFsIGl0ZXJhdGlvbi4gV2UgZm9yY2UgdGhlIG51bWJlciBvZiBlbGVt ZW50cyB0byBiZQ0KKyAgICBwcm9jZXNzZWQgaW4gZWFjaCBub24tZmluYWwg aXRlcmF0aW9uIGlzIFZGIGVsZW1lbnRzLiBJZiB3ZSBhbGxvdw0KKyAgICBu b24tVkYgZWxlbWVudHMgcHJvY2Vzc2luZyBpbiBub24tZmluYWwgaXRlcmF0 aW9uIHdpbGwgbWFrZSBTTFAgdG9vDQorICAgIGNvbXBsaWNhdGVkIGFuZCBw cm9kdWNlIGluZmVyaW9yIGNvZGVnZW4uDQorDQorICAgICAgICBGb3IgZXhh bXBsZToNCisNCisgSWYgbm9uLWZpbmFsIGl0ZXJhdGlvbiBwcm9jZXNzIFZG IGVsZW1lbnRzLg0KKw0KKyAgIC4uLg0KKyAgIC5MRU5fU1RPUkUgKHZlY3Rw X2YuOF81MSwgMTI4QiwgXzcxLCB7IDEsIDIsIDEsIDIgfSwgMCk7DQorICAg LkxFTl9TVE9SRSAodmVjdHBfZi44XzU2LCAxMjhCLCBfNzIsIHsgMSwgMiwg MSwgMiB9LCAwKTsNCisgICAuLi4NCisNCisgSWYgbm9uLWZpbmFsIGl0ZXJh dGlvbiBwcm9jZXNzIG5vbi1WRiBlbGVtZW50cy4NCisNCisgICAuLi4NCisg ICAuTEVOX1NUT1JFICh2ZWN0cF9mLjhfNTEsIDEyOEIsIF83MSwgeyAxLCAy LCAxLCAyIH0sIDApOw0KKyAgIGlmIChfNzEgJSAyID09IDApDQorICAgIC5M RU5fU1RPUkUgKHZlY3RwX2YuOF81NiwgMTI4QiwgXzcyLCB7IDEsIDIsIDEs IDIgfSwgMCk7DQorICAgZWxzZQ0KKyAgICAuTEVOX1NUT1JFICh2ZWN0cF9m LjhfNTYsIDEyOEIsIF83MiwgeyAyLCAxLCAyLCAxIH0sIDApOw0KKyAgIC4u Lg0KKw0KKyAgICBUaGlzIGlzIHRoZSBzaW1wbGUgY2FzZSBvZiAyLWVsZW1l bnRzIGludGVybGVhdmVkIHZlY3RvciBTTFAuIFdlDQorICAgIGNvbnNpZGVy IG90aGVyIGludGVybGVhdmUgdmVjdG9yLCB0aGUgc2l0dWF0aW9uIHdpbGwg YmVjb21lIG1vcmUNCisgICAgY29tcGxpY2F0ZWQuICAqLw0KKyAgIHJlc19s ZW4gPSBnaW1wbGVfYnVpbGQgKGhlYWRlcl9zZXEsIE1JTl9FWFBSLCBpdl90 eXBlLA0KKyAgIGluZGV4X2JlZm9yZV9pbmNyLCB2Zl9zdGVwKTsNCisgfQ0K KyAgICAgIGVsc2UNCisgew0KKyAgIHJlc19sZW4gPSBnaW1wbGVfYnVpbGQg KGhlYWRlcl9zZXEsIElGTl9TRUxFQ1RfVkwsIGl2X3R5cGUsDQorICAgaW5k ZXhfYmVmb3JlX2luY3IsIHZmX3N0ZXApOw0KKyB9DQorICAgICAgZ2Fzc2ln biAqYXNzaWduID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoY3RybCwgcmVzX2xl bik7DQorICAgICAgZ2ltcGxlX3NlcV9hZGRfc3RtdCAoaGVhZGVyX3NlcSwg YXNzaWduKTsNCisgICAgfQ0KKw0KKyAgcmV0dXJuIGluZGV4X2FmdGVyX2lu Y3I7DQorfQ0KKw0KLyogU2V0IHVwIHRoZSBpdGVyYXRpb24gY29uZGl0aW9u IGFuZCByZ3JvdXAgY29udHJvbHMgZm9yIExPT1AsIGdpdmVuDQogICAgdGhh dCBMT09QX1ZJTkZPX1VTSU5HX1BBUlRJQUxfVkVDVE9SU19QIGlzIHRydWUg Zm9yIHRoZSB2ZWN0b3JpemVkDQogICAgbG9vcC4gIExPT1BfVklORk8gZGVz Y3JpYmVzIHRoZSB2ZWN0b3JpemF0aW9uIG9mIExPT1AuICBOSVRFUlMgaXMN CkBAIC03MDMsNiArMTA0MCwxMCBAQCB2ZWN0X3NldF9sb29wX2NvbmRpdGlv bl9wYXJ0aWFsX3ZlY3RvcnMgKGNsYXNzIGxvb3AgKmxvb3AsDQogICBib29s IHVzZV9tYXNrc19wID0gTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9v cF92aW5mbyk7DQogICB0cmVlIGNvbXBhcmVfdHlwZSA9IExPT1BfVklORk9f UkdST1VQX0NPTVBBUkVfVFlQRSAobG9vcF92aW5mbyk7DQorICB0cmVlIGl2 X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29wX3ZpbmZv KTsNCisgIGJvb2wgdXNlX3ZsX3AgPSAhdXNlX21hc2tzX3ANCisgICAmJiBk aXJlY3RfaW50ZXJuYWxfZm5fc3VwcG9ydGVkX3AgKElGTl9TRUxFQ1RfVkws IGl2X3R5cGUsDQorICAgICAgT1BUSU1JWkVfRk9SX1NQRUVEKTsNCiAgIHVu c2lnbmVkIGludCBjb21wYXJlX3ByZWNpc2lvbiA9IFRZUEVfUFJFQ0lTSU9O IChjb21wYXJlX3R5cGUpOw0KICAgdHJlZSBvcmlnX25pdGVycyA9IG5pdGVy czsNCkBAIC03NTIsMTcgKzEwOTMsMzIgQEAgdmVjdF9zZXRfbG9vcF9jb25k aXRpb25fcGFydGlhbF92ZWN0b3JzIChjbGFzcyBsb29wICpsb29wLA0KICAg ICAgY29udGludWU7DQogIH0NCisgaWYgKHVzZV92bF9wICYmIHJnYy0+Y29u dHJvbHMubGVuZ3RoICgpICE9IDEpDQorICAgew0KKyAgICAgcmdyb3VwX2Nv bnRyb2xzICpzdWJfcmdjDQorICAgICAgID0gJigqY29udHJvbHMpW25tYXNr cyAvIHJnYy0+Y29udHJvbHMubGVuZ3RoICgpIC0gMV07DQorICAgICBpZiAo IXN1Yl9yZ2MtPmNvbnRyb2xzLmlzX2VtcHR5ICgpDQorICYmIHZlY3RfbWF5 YmVfcGVybXV0ZV9sb29wX2xlbnMgKGl2X3R5cGUsICZoZWFkZXJfc2VxLCBy Z2MsDQorIHN1Yl9yZ2MpKQ0KKyAgICAgICBjb250aW51ZTsNCisgICB9DQor DQovKiBTZWUgd2hldGhlciB6ZXJvLWJhc2VkIElWIHdvdWxkIGV2ZXIgZ2Vu ZXJhdGUgYWxsLWZhbHNlIG1hc2tzDQogICBvciB6ZXJvIGxlbmd0aCBiZWZv cmUgd3JhcHBpbmcgYXJvdW5kLiAgKi8NCmJvb2wgbWlnaHRfd3JhcF9wID0g dmVjdF9yZ3JvdXBfaXZfbWlnaHRfd3JhcF9wIChsb29wX3ZpbmZvLCByZ2Mp Ow0KLyogU2V0IHVwIGFsbCBjb250cm9scyBmb3IgdGhpcyBncm91cC4gICov DQotIHRlc3RfY3RybCA9IHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0 bHkgKGxvb3AsIGxvb3BfdmluZm8sDQotICAgICAgJnByZWhlYWRlcl9zZXEs DQotICAgICAgJmhlYWRlcl9zZXEsDQotICAgICAgbG9vcF9jb25kX2dzaSwg cmdjLA0KLSAgICAgIG5pdGVycywgbml0ZXJzX3NraXAsDQotICAgICAgbWln aHRfd3JhcF9wKTsNCisgaWYgKHVzZV92bF9wKQ0KKyAgIHRlc3RfY3RybA0K KyAgICAgPSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3NlbGVjdF92bCAo bG9vcCwgbG9vcF92aW5mbywNCisgICAgJnByZWhlYWRlcl9zZXEsICZoZWFk ZXJfc2VxLA0KKyAgICByZ2MsIG5pdGVycywgY29udHJvbHMtPmxlbmd0aCAo KSk7DQorIGVsc2UNCisgICB0ZXN0X2N0cmwNCisgICAgID0gdmVjdF9zZXRf bG9vcF9jb250cm9sc19kaXJlY3RseSAobG9vcCwgbG9vcF92aW5mbywgJnBy ZWhlYWRlcl9zZXEsDQorICAgICAgICAmaGVhZGVyX3NlcSwgbG9vcF9jb25k X2dzaSwgcmdjLA0KKyAgICAgICAgbml0ZXJzLCBuaXRlcnNfc2tpcCwNCisg ICAgICAgIG1pZ2h0X3dyYXBfcCk7DQogICAgICAgfQ0KICAgLyogRW1pdCBh bGwgYWNjdW11bGF0ZWQgc3RhdGVtZW50cy4gICovDQpAQCAtODkzLDcgKzEy NDksNyBAQCB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9ub3JtYWwgKGNsYXNz IGxvb3AgKmxvb3AsIHRyZWUgbml0ZXJzLCB0cmVlIHN0ZXAsDQogICAgIH0N CiAgIHN0YW5kYXJkX2l2X2luY3JlbWVudF9wb3NpdGlvbiAobG9vcCwgJmlu Y3JfZ3NpLCAmaW5zZXJ0X2FmdGVyKTsNCi0gIGNyZWF0ZV9pdiAoaW5pdCwg c3RlcCwgTlVMTF9UUkVFLCBsb29wLA0KKyAgY3JlYXRlX2l2IChpbml0LCBQ TFVTX0VYUFIsIHN0ZXAsIE5VTExfVFJFRSwgbG9vcCwNCiAgICAgICAgICAg ICAgJmluY3JfZ3NpLCBpbnNlcnRfYWZ0ZXIsICZpbmR4X2JlZm9yZV9pbmNy LCAmaW5keF9hZnRlcl9pbmNyKTsNCiAgIGluZHhfYWZ0ZXJfaW5jciA9IGZv cmNlX2dpbXBsZV9vcGVyYW5kX2dzaSAoJmxvb3BfY29uZF9nc2ksIGluZHhf YWZ0ZXJfaW5jciwNCiAgICAgIHRydWUsIE5VTExfVFJFRSwgdHJ1ZSwNCmRp ZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MgYi9nY2MvdHJlZS12 ZWN0LWxvb3AuY2MNCmluZGV4IDZlYTBmMjFmZDEzLi5kN2NmOTI1NzZkMSAx MDA2NDQNCi0tLSBhL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KKysrIGIvZ2Nj L3RyZWUtdmVjdC1sb29wLmNjDQpAQCAtNTU2Nyw3ICs1NTY3LDcgQEAgdmVj dF9jcmVhdGVfZXBpbG9nX2Zvcl9yZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8g bG9vcF92aW5mbywNCiAgICAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBpbmNy X2dzaTsNCiAgICAgICBib29sIGluc2VydF9hZnRlcjsNCiAgICAgICBzdGFu ZGFyZF9pdl9pbmNyZW1lbnRfcG9zaXRpb24gKGxvb3AsICZpbmNyX2dzaSwg Jmluc2VydF9hZnRlcik7DQotICAgICAgY3JlYXRlX2l2IChzZXJpZXNfdmVj dCwgdmVjX3N0ZXAsIE5VTExfVFJFRSwgbG9vcCwgJmluY3JfZ3NpLA0KKyAg ICAgIGNyZWF0ZV9pdiAoc2VyaWVzX3ZlY3QsIFBMVVNfRVhQUiwgdmVjX3N0 ZXAsIE5VTExfVFJFRSwgbG9vcCwgJmluY3JfZ3NpLA0KaW5zZXJ0X2FmdGVy LCAmaW5keF9iZWZvcmVfaW5jciwgJmluZHhfYWZ0ZXJfaW5jcik7DQogICAg ICAgLyogTmV4dCBjcmVhdGUgYSBuZXcgcGhpIG5vZGUgdmVjdG9yIChORVdf UEhJX1RSRUUpIHdoaWNoIHN0YXJ0cw0KQEAgLTEwMzYxLDE1ICsxMDM2MSwx OCBAQCB2ZWN0X3JlY29yZF9sb29wX2xlbiAobG9vcF92ZWNfaW5mbyBsb29w X3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KfQ0KLyogR2l2ZW4gYSBj b21wbGV0ZSBzZXQgb2YgbGVuZ3RoIExFTlMsIGV4dHJhY3QgbGVuZ3RoIG51 bWJlciBJTkRFWCBmb3IgYW4NCi0gICByZ3JvdXAgdGhhdCBvcGVyYXRlcyBv biBOVkVDVE9SUyB2ZWN0b3JzLCB3aGVyZSAwIDw9IElOREVYIDwgTlZFQ1RP UlMuICAqLw0KKyAgIHJncm91cCB0aGF0IG9wZXJhdGVzIG9uIE5WRUNUT1JT IHZlY3RvcnMsIHdoZXJlIDAgPD0gSU5ERVggPCBOVkVDVE9SUy4NCisgICBJ bnNlcnQgYW55IHNldC11cCBzdGF0ZW1lbnRzIGJlZm9yZSBHU0kuICAqLw0K dHJlZQ0KLXZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZlY19pbmZvIGxvb3Bf dmluZm8sIHZlY19sb29wX2xlbnMgKmxlbnMsDQotICAgIHVuc2lnbmVkIGlu dCBudmVjdG9ycywgdW5zaWduZWQgaW50IGluZGV4KQ0KK3ZlY3RfZ2V0X2xv b3BfbGVuIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIGdpbXBsZV9zdG10 X2l0ZXJhdG9yICpnc2ksDQorICAgIHZlY19sb29wX2xlbnMgKmxlbnMsIHVu c2lnbmVkIGludCBudmVjdG9ycywgdHJlZSB2ZWN0eXBlLA0KKyAgICB1bnNp Z25lZCBpbnQgaW5kZXgpDQp7DQogICByZ3JvdXBfY29udHJvbHMgKnJnbCA9 ICYoKmxlbnMpW252ZWN0b3JzIC0gMV07DQogICBib29sIHVzZV9iaWFzX2Fk anVzdGVkX2xlbiA9DQogICAgIExPT1BfVklORk9fUEFSVElBTF9MT0FEX1NU T1JFX0JJQVMgKGxvb3BfdmluZm8pICE9IDA7DQorICB0cmVlIGl2X3R5cGUg PSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29wX3ZpbmZvKTsNCiAg IC8qIFBvcHVsYXRlIHRoZSByZ3JvdXAncyBsZW4gYXJyYXksIGlmIHRoaXMg aXMgdGhlIGZpcnN0IHRpbWUgd2UndmUNCiAgICAgIHVzZWQgaXQuICAqLw0K QEAgLTEwNDAwLDYgKzEwNDAzLDI3IEBAIHZlY3RfZ2V0X2xvb3BfbGVuIChs b29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIHZlY19sb29wX2xlbnMgKmxlbnMs DQogICBpZiAodXNlX2JpYXNfYWRqdXN0ZWRfbGVuKQ0KICAgICByZXR1cm4g cmdsLT5iaWFzX2FkanVzdGVkX2N0cmw7DQorICBlbHNlIGlmIChkaXJlY3Rf aW50ZXJuYWxfZm5fc3VwcG9ydGVkX3AgKElGTl9TRUxFQ1RfVkwsIGl2X3R5 cGUsDQorICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkpDQorICAgIHsNCisgICAg ICB0cmVlIGxvb3BfbGVuID0gcmdsLT5jb250cm9sc1tpbmRleF07DQorICAg ICAgcG9seV9pbnQ2NCBudW5pdHMxID0gVFlQRV9WRUNUT1JfU1VCUEFSVFMg KHJnbC0+dHlwZSk7DQorICAgICAgcG9seV9pbnQ2NCBudW5pdHMyID0gVFlQ RV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGUpOw0KKyAgICAgIGlmIChtYXli ZV9uZSAobnVuaXRzMSwgbnVuaXRzMikpDQorIHsNCisgICAvKiBBIGxvb3Ag bGVuIGZvciBkYXRhIHR5cGUgWCBjYW4gYmUgcmV1c2VkIGZvciBkYXRhIHR5 cGUgWQ0KKyAgICAgIGlmIFggaGFzIE4gdGltZXMgbW9yZSBlbGVtZW50cyB0 aGFuIFkgYW5kIGlmIFkncyBlbGVtZW50cw0KKyAgICAgIGFyZSBOIHRpbWVz IGJpZ2dlciB0aGFuIFgncy4gICovDQorICAgZ2NjX2Fzc2VydCAobXVsdGlw bGVfcCAobnVuaXRzMSwgbnVuaXRzMikpOw0KKyAgIHVuc2lnbmVkIGludCBm YWN0b3IgPSBleGFjdF9kaXYgKG51bml0czEsIG51bml0czIpLnRvX2NvbnN0 YW50ICgpOw0KKyAgIGdpbXBsZV9zZXEgc2VxID0gTlVMTDsNCisgICBsb29w X2xlbiA9IGdpbXBsZV9idWlsZCAoJnNlcSwgUkRJVl9FWFBSLCBpdl90eXBl LCBsb29wX2xlbiwNCisgICAgYnVpbGRfaW50X2NzdCAoaXZfdHlwZSwgZmFj dG9yKSk7DQorICAgaWYgKHNlcSkNCisgICAgIGdzaV9pbnNlcnRfc2VxX2Jl Zm9yZSAoZ3NpLCBzZXEsIEdTSV9TQU1FX1NUTVQpOw0KKyB9DQorICAgICAg cmV0dXJuIGxvb3BfbGVuOw0KKyAgICB9DQogICBlbHNlDQogICAgIHJldHVy biByZ2wtPmNvbnRyb2xzW2luZGV4XTsNCn0NCmRpZmYgLS1naXQgYS9nY2Mv dHJlZS12ZWN0LXN0bXRzLmNjIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYw0K aW5kZXggM2FkNmE3ZDI4ZDcuLjI2ODEzYWI1NmU5IDEwMDY0NA0KLS0tIGEv Z2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KKysrIGIvZ2NjL3RyZWUtdmVjdC1z dG10cy5jYw0KQEAgLTMxNDcsNiArMzE0Nyw2MSBAQCB2ZWN0X2dldF9kYXRh X3B0cl9pbmNyZW1lbnQgKHZlY19pbmZvICp2aW5mbywNCiAgIHJldHVybiBp dl9zdGVwOw0KfQ0KKy8qIFByZXBhcmUgdGhlIHBvaW50ZXIgSVZzIHdoaWNo IG5lZWRzIHRvIGJlIHVwZGF0ZWQgYnkgYSB2YXJpYWJsZSBhbW91bnQuDQor ICAgU3VjaCB2YXJpYWJsZSBhbW91bnQgaXMgdGhlIG91dGNvbWUgb2YgLlNF TEVDVF9WTC4gSW4gdGhpcyBjYXNlLCB3ZSBjYW4NCisgICBhbGxvdyBlYWNo IGl0ZXJhdGlvbiBwcm9jZXNzIHRoZSBmbGV4aWJsZSBudW1iZXIgb2YgZWxl bWVudHMgYXMgbG9uZyBhcw0KKyAgIHRoZSBudW1iZXIgPD0gdmYgZWxtZW50 cy4NCisNCisgICBSZXR1cm4gZGF0YSByZWZlcmVuY2UgYWNjb3JkaW5nIHRv IFNFTEVDVF9WTC4NCisgICBJZiBuZXcgc3RhdGVtZW50cyBhcmUgbmVlZGVk LCBpbnNlcnQgdGhlbSBiZWZvcmUgR1NJLiAgKi8NCisNCitzdGF0aWMgdHJl ZQ0KK2dldF9zZWxlY3RfdmxfZGF0YV9yZWZfcHRyICh2ZWNfaW5mbyAqdmlu Zm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLA0KKyAgICAgdHJlZSBhZ2dy X3R5cGUsIGNsYXNzIGxvb3AgKmF0X2xvb3AsIHRyZWUgb2Zmc2V0LA0KKyAg ICAgdHJlZSAqZHVtbXksIGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksDQor ICAgICBib29sIHNpbWRfbGFuZV9hY2Nlc3NfcCwgdmVjX2xvb3BfbGVucyAq bG9vcF9sZW5zLA0KKyAgICAgZHJfdmVjX2luZm8gKmRyX2luZm8sDQorICAg ICB2ZWN0X21lbW9yeV9hY2Nlc3NfdHlwZSBtZW1vcnlfYWNjZXNzX3R5cGUp DQorew0KKyAgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvID0gZHluX2Nhc3Q8 bG9vcF92ZWNfaW5mbz4gKHZpbmZvKTsNCisgIHRyZWUgc3RlcCA9IHZlY3Rf ZHJfYmVoYXZpb3IgKHZpbmZvLCBkcl9pbmZvKS0+c3RlcDsNCisNCisgIC8q IFRPRE86IFdlIGRvbid0IHN1cHBvcnQgZ2F0aGVyL3NjYXR0ZXIgb3IgbG9h ZF9sYW5lcy9zdG9yZV9sYW5lcyBmb3IgcG9pbnRlcg0KKyAgICAgSVZzIGFy ZSB1cGRhdGVkIGJ5IHZhcmlhYmxlIGFtb3VudCBidXQgd2Ugd2lsbCBzdXBw b3J0IHRoZW0gaW4gdGhlIGZ1dHVyZS4NCisgICAqLw0KKyAgZ2NjX2Fzc2Vy dCAobWVtb3J5X2FjY2Vzc190eXBlICE9IFZNQVRfR0FUSEVSX1NDQVRURVIN CisgICAgICAgJiYgbWVtb3J5X2FjY2Vzc190eXBlICE9IFZNQVRfTE9BRF9T VE9SRV9MQU5FUyk7DQorDQorICAvKiBXaGVuIHdlIHN1cHBvcnQgU0VMRUNU X1ZMIHBhdHRlcm4sIHdlIGR5bmFtaWMgYWRqdXN0DQorICAgICB0aGUgbWVt b3J5IGFkZHJlc3MgYnkgLlNFTEVDVF9WTCByZXN1bHQuDQorDQorICAgICBU aGUgcmVzdWx0IG9mIC5TRUxFQ1RfVkwgaXMgdGhlIG51bWJlciBvZiBlbGVt ZW50cyB0bw0KKyAgICAgYmUgcHJvY2Vzc2VkIG9mIGVhY2ggaXRlcmF0aW9u LiBTbyB0aGUgbWVtb3J5IGFkZHJlc3MNCisgICAgIGFkanVzdG1lbnQgb3Bl cmF0aW9uIHNob3VsZCBiZToNCisNCisgICAgIGJ5dGVzaXplID0gR0VUX01P REVfU0laRSAoZWxlbWVudF9tb2RlIChhZ2dyX3R5cGUpKTsNCisgICAgIGFk ZHIgPSBhZGRyICsgLlNFTEVDVF9WTCAoQVJHLi4pICogYnl0ZXNpemU7DQor ICAqLw0KKyAgZ2ltcGxlICpwdHJfaW5jcjsNCisgIHRyZWUgbG9vcF9sZW4N CisgICAgPSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92aW5mbywgZ3NpLCBs b29wX2xlbnMsIDEsIGFnZ3JfdHlwZSwgMCk7DQorICB0cmVlIGxlbl90eXBl ID0gVFJFRV9UWVBFIChsb29wX2xlbik7DQorICBwb2x5X3VpbnQ2NCBieXRl c2l6ZSA9IEdFVF9NT0RFX1NJWkUgKGVsZW1lbnRfbW9kZSAoYWdncl90eXBl KSk7DQorICAvKiBTaW5jZSB0aGUgb3V0Y29tZSBvZiAuU0VMRUNUX1ZMIGlz IGVsZW1lbnQgc2l6ZSwgd2Ugc2hvdWxkIGFkanVzdA0KKyAgICAgaXQgaW50 byBieXRlc2l6ZSBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGFkZHJlc3Mg cG9pbnRlciB2YXJpYWJsZQ0KKyAgICAgYW1vdW50IElWcyBhZGp1c3RtZW50 LiAgKi8NCisgIHRyZWUgdG1wID0gZm9sZF9idWlsZDIgKE1VTFRfRVhQUiwg bGVuX3R5cGUsIGxvb3BfbGVuLA0KKyAgIGJ1aWxkX2ludF9jc3QgKGxlbl90 eXBlLCBieXRlc2l6ZSkpOw0KKyAgaWYgKHRyZWVfaW50X2NzdF9zZ24gKHN0 ZXApID09IC0xKQ0KKyAgICB0bXAgPSBmb2xkX2J1aWxkMSAoTkVHQVRFX0VY UFIsIGxlbl90eXBlLCB0bXApOw0KKyAgdHJlZSBidW1wID0gbWFrZV90ZW1w X3NzYV9uYW1lIChsZW5fdHlwZSwgTlVMTCwgIml2dG1wIik7DQorICBnYXNz aWduICphc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNzaWduIChidW1wLCB0bXAp Ow0KKyAgZ3NpX2luc2VydF9iZWZvcmUgKGdzaSwgYXNzaWduLCBHU0lfU0FN RV9TVE1UKTsNCisgIHJldHVybiB2ZWN0X2NyZWF0ZV9kYXRhX3JlZl9wdHIg KHZpbmZvLCBzdG10X2luZm8sIGFnZ3JfdHlwZSwgYXRfbG9vcCwgb2Zmc2V0 LA0KKyAgICBkdW1teSwgZ3NpLCAmcHRyX2luY3IsIHNpbWRfbGFuZV9hY2Nl c3NfcCwNCisgICAgYnVtcCk7DQorfQ0KKw0KLyogQ2hlY2sgYW5kIHBlcmZv cm0gdmVjdG9yaXphdGlvbiBvZiBCVUlMVF9JTl9CU1dBUHsxNiwzMiw2NCwx Mjh9LiAgKi8NCnN0YXRpYyBib29sDQpAQCAtODI3OSw3ICs4MzM0LDcgQEAg dmVjdG9yaXphYmxlX3N0b3JlICh2ZWNfaW5mbyAqdmluZm8sDQogICAgICAg c3RyaWRlX2Jhc2UgPSBjc2VfYW5kX2dpbXBsaWZ5X3RvX3ByZWhlYWRlciAo bG9vcF92aW5mbywgc3RyaWRlX2Jhc2UpOw0KICAgICAgIGl2c3RlcCA9IGNz ZV9hbmRfZ2ltcGxpZnlfdG9fcHJlaGVhZGVyIChsb29wX3ZpbmZvLCBpdnN0 ZXApOw0KLSAgICAgIGNyZWF0ZV9pdiAoc3RyaWRlX2Jhc2UsIGl2c3RlcCwg TlVMTCwNCisgICAgICBjcmVhdGVfaXYgKHN0cmlkZV9iYXNlLCBQTFVTX0VY UFIsIGl2c3RlcCwgTlVMTCwNCmxvb3AsICZpbmNyX2dzaSwgaW5zZXJ0X2Fm dGVyLA0KJm9mZnZhciwgTlVMTCk7DQogICAgICAgaW5jciA9IGdzaV9zdG10 IChpbmNyX2dzaSk7DQpAQCAtODU0MCw2ICs4NTk1LDE3IEBAIHZlY3Rvcml6 YWJsZV9zdG9yZSAodmVjX2luZm8gKnZpbmZvLA0KICAgIHZlY3RfZ2V0X2dh dGhlcl9zY2F0dGVyX29wcyAobG9vcF92aW5mbywgbG9vcCwgc3RtdF9pbmZv LA0Kc2xwX25vZGUsICZnc19pbmZvLCAmZGF0YXJlZl9wdHIsDQomdmVjX29m ZnNldHMpOw0KKyAgIGVsc2UgaWYgKGxvb3BfbGVucyAmJiBsb29wX2xlbnMt Pmxlbmd0aCAoKSA9PSAxDQorICAgICYmIGRpcmVjdF9pbnRlcm5hbF9mbl9z dXBwb3J0ZWRfcCAoDQorICAgICAgSUZOX1NFTEVDVF9WTCwgTE9PUF9WSU5G T19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyksDQorICAgICAgT1BUSU1J WkVfRk9SX1NQRUVEKQ0KKyAgICAmJiBtZW1vcnlfYWNjZXNzX3R5cGUgIT0g Vk1BVF9JTlZBUklBTlQpDQorICAgICBkYXRhcmVmX3B0cg0KKyAgICAgICA9 IGdldF9zZWxlY3RfdmxfZGF0YV9yZWZfcHRyICh2aW5mbywgc3RtdF9pbmZv LCBhZ2dyX3R5cGUsDQorICAgICBzaW1kX2xhbmVfYWNjZXNzX3AgPyBsb29w IDogTlVMTCwNCisgICAgIG9mZnNldCwgJmR1bW15LCBnc2ksDQorICAgICBz aW1kX2xhbmVfYWNjZXNzX3AsIGxvb3BfbGVucywNCisgICAgIGRyX2luZm8s IG1lbW9yeV9hY2Nlc3NfdHlwZSk7DQogIGVsc2UNCiAgICBkYXRhcmVmX3B0 cg0KICAgICAgPSB2ZWN0X2NyZWF0ZV9kYXRhX3JlZl9wdHIgKHZpbmZvLCBm aXJzdF9zdG10X2luZm8sIGFnZ3JfdHlwZSwNCkBAIC04Nzg4LDggKzg4NTQs OSBAQCB2ZWN0b3JpemFibGVfc3RvcmUgKHZlY19pbmZvICp2aW5mbywNCiAg ICAgIGVsc2UgaWYgKGxvb3BfbGVucykNCnsNCiAgdHJlZSBmaW5hbF9sZW4N Ci0gICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGxvb3Bf bGVucywNCi0gdmVjX251bSAqIG5jb3BpZXMsIHZlY19udW0gKiBqICsgaSk7 DQorICAgICA9IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBnc2ks IGxvb3BfbGVucywNCisgdmVjX251bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQor IHZlY19udW0gKiBqICsgaSk7DQogIHRyZWUgcHRyID0gYnVpbGRfaW50X2Nz dCAocmVmX3R5cGUsIGFsaWduICogQklUU19QRVJfVU5JVCk7DQogIG1hY2hp bmVfbW9kZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlwZSk7DQogIG9wdF9t YWNoaW5lX21vZGUgbmV3X292bW9kZQ0KQEAgLTk0NTAsNyArOTUxNyw3IEBA IHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNfaW5mbyAqdmluZm8sDQogICAgICAg c3RyaWRlX2Jhc2UgPSBjc2VfYW5kX2dpbXBsaWZ5X3RvX3ByZWhlYWRlciAo bG9vcF92aW5mbywgc3RyaWRlX2Jhc2UpOw0KICAgICAgIGl2c3RlcCA9IGNz ZV9hbmRfZ2ltcGxpZnlfdG9fcHJlaGVhZGVyIChsb29wX3ZpbmZvLCBpdnN0 ZXApOw0KLSAgICAgIGNyZWF0ZV9pdiAoc3RyaWRlX2Jhc2UsIGl2c3RlcCwg TlVMTCwNCisgICAgICBjcmVhdGVfaXYgKHN0cmlkZV9iYXNlLCBQTFVTX0VY UFIsIGl2c3RlcCwgTlVMTCwNCmxvb3AsICZpbmNyX2dzaSwgaW5zZXJ0X2Fm dGVyLA0KJm9mZnZhciwgTlVMTCk7DQpAQCAtOTkyOCw2ICs5OTk1LDE2IEBA IHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNfaW5mbyAqdmluZm8sDQogICBzbHBf bm9kZSwgJmdzX2luZm8sICZkYXRhcmVmX3B0ciwNCiAgICZ2ZWNfb2Zmc2V0 cyk7DQogICAgfQ0KKyAgIGVsc2UgaWYgKGxvb3BfbGVucyAmJiBsb29wX2xl bnMtPmxlbmd0aCAoKSA9PSAxDQorICAgICYmIGRpcmVjdF9pbnRlcm5hbF9m bl9zdXBwb3J0ZWRfcCAoDQorICAgICAgSUZOX1NFTEVDVF9WTCwgTE9PUF9W SU5GT19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyksDQorICAgICAgT1BU SU1JWkVfRk9SX1NQRUVEKQ0KKyAgICAmJiBtZW1vcnlfYWNjZXNzX3R5cGUg IT0gVk1BVF9JTlZBUklBTlQpDQorICAgICBkYXRhcmVmX3B0cg0KKyAgICAg ICA9IGdldF9zZWxlY3RfdmxfZGF0YV9yZWZfcHRyICh2aW5mbywgc3RtdF9p bmZvLCBhZ2dyX3R5cGUsDQorICAgICBhdF9sb29wLCBvZmZzZXQsICZkdW1t eSwgZ3NpLA0KKyAgICAgc2ltZF9sYW5lX2FjY2Vzc19wLCBsb29wX2xlbnMs DQorICAgICBkcl9pbmZvLCBtZW1vcnlfYWNjZXNzX3R5cGUpOw0KICBlbHNl DQogICAgZGF0YXJlZl9wdHINCiAgICAgID0gdmVjdF9jcmVhdGVfZGF0YV9y ZWZfcHRyICh2aW5mbywgZmlyc3Rfc3RtdF9pbmZvLCBhZ2dyX3R5cGUsDQpA QCAtMTAxNDQsOCArMTAyMjEsOCBAQCB2ZWN0b3JpemFibGVfbG9hZCAodmVj X2luZm8gKnZpbmZvLA0KICAgIGVsc2UgaWYgKGxvb3BfbGVucyAmJiBtZW1v cnlfYWNjZXNzX3R5cGUgIT0gVk1BVF9JTlZBUklBTlQpDQogICAgICB7DQp0 cmVlIGZpbmFsX2xlbg0KLSAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3Bf dmluZm8sIGxvb3BfbGVucywNCi0gICAgICAgIHZlY19udW0gKiBuY29waWVz LA0KKyAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGdzaSwg bG9vcF9sZW5zLA0KKyAgICAgICAgdmVjX251bSAqIG5jb3BpZXMsIHZlY3R5 cGUsDQogICAgICAgdmVjX251bSAqIGogKyBpKTsNCnRyZWUgcHRyID0gYnVp bGRfaW50X2NzdCAocmVmX3R5cGUsDQogIGFsaWduICogQklUU19QRVJfVU5J VCk7DQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdG9yaXplci5oIGIvZ2Nj L3RyZWUtdmVjdG9yaXplci5oDQppbmRleCA5Y2YyZmIyM2ZlMy4uMzU3YmM1 YzczMTUgMTAwNjQ0DQotLS0gYS9nY2MvdHJlZS12ZWN0b3JpemVyLmgNCisr KyBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KQEAgLTIyOTMsOCArMjI5Myw4 IEBAIGV4dGVybiB0cmVlIHZlY3RfZ2V0X2xvb3BfbWFzayAoZ2ltcGxlX3N0 bXRfaXRlcmF0b3IgKiwgdmVjX2xvb3BfbWFza3MgKiwNCnVuc2lnbmVkIGlu dCwgdHJlZSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiB2b2lkIHZlY3RfcmVj b3JkX2xvb3BfbGVuIChsb29wX3ZlY19pbmZvLCB2ZWNfbG9vcF9sZW5zICos IHVuc2lnbmVkIGludCwNCiAgdHJlZSwgdW5zaWduZWQgaW50KTsNCi1leHRl cm4gdHJlZSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92ZWNfaW5mbywgdmVj X2xvb3BfbGVucyAqLCB1bnNpZ25lZCBpbnQsDQotICAgICAgICB1bnNpZ25l ZCBpbnQpOw0KK2V4dGVybiB0cmVlIHZlY3RfZ2V0X2xvb3BfbGVuIChsb29w X3ZlY19pbmZvLCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqLCB2ZWNfbG9vcF9s ZW5zICosDQorICAgICAgICB1bnNpZ25lZCBpbnQsIHRyZWUsIHVuc2lnbmVk IGludCk7DQpleHRlcm4gZ2ltcGxlX3NlcSB2ZWN0X2dlbl9sZW4gKHRyZWUs IHRyZWUsIHRyZWUsIHRyZWUpOw0KZXh0ZXJuIHN0bXRfdmVjX2luZm8gaW5m b19mb3JfcmVkdWN0aW9uICh2ZWNfaW5mbyAqLCBzdG10X3ZlY19pbmZvKTsN CmV4dGVybiBib29sIHJlZHVjdGlvbl9mbl9mb3Jfc2NhbGFyX2NvZGUgKGNv ZGVfaGVscGVyLCBpbnRlcm5hbF9mbiAqKTsNCi0tIA0KMi4zNi4xDQogDQo= ------=_001_NextPart137333538430_=------