From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgau2.qq.com (smtpbgau2.qq.com [54.206.34.216]) by sourceware.org (Postfix) with ESMTPS id AE51C3858C41 for ; Thu, 26 Oct 2023 08:20:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AE51C3858C41 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AE51C3858C41 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.206.34.216 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698308468; cv=none; b=hje9jd/+09qj1C47+ltNasHQPilXo2x/WXSgKFfwUzcg2L3pHDR4IxR6dCk91oE5DqwTTBRbZKhWI9ene49JkRrfDiPV+NohQJV2QHKr/QDcPBM1t1+G/1jIezj56SnOZlRDaTWLf4ZDd3P6wVyBZpK74bxAM307CIv+GQetgMM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698308468; c=relaxed/simple; bh=pwu1tjzl7bkOPPEX5C7bHIRmlFLfwB/lKR1KvzFWrzI=; h=Date:From:To:Subject:Mime-Version:Message-ID; b=Y2ERtWYuLfnnDqhCZdY1hscpkvOrNZ4v/VMa5THPWHn/qk431bO7mJEvo1oTc0qBPq+rAORrKQ3QifyetBjOj8QkM+2EFus97jfptg19//sxvTmGA02NNk7bggZ0iGUx1Om9Plv6CUWs+vtFhL7rTkoEHODAidNXa/OwT/owxDw= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp65t1698308449tjjj1wfw Received: from LAPTOP-EPITNQBU ( [61.141.253.106]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 26 Oct 2023 16:20:48 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: +ynUkgUhZJnQzh6zfd975NQHfAit7hzfgWlQ5JIcfzypWYmzeCCG8WIv7tO8w bKxwSkHldi0GmBHndh5oyMqSvWPuClT7UrEtgb711Bwbbk2BX+i786CgDh7UrDo9ElIAoT9 p8HSfvbXdXh+moDMeBaVtb6diugOuJgRvEk85HfWMztWvpk6NnpJwo8aEZJhEP+MCqGUOXC BwB0wZ+w4+gzRo5zTTDn8CbyqJOabpaGFpvOn6dY4MJbD7bA/Htk+xh32BUzZguDHMJldgr 2r4g00oQaSc0vNpzyiqemjU1dU0v1RkqiAVtBLEHyjCzXKh2vm2ZWEXFrrKDDIsikV1tvTg u9UrONDrOuG0rKzig+mvNzyk1VYEWWobvVu21J0/WBQXl+pWenzL5U0pk7OsRF8j4TjyPHe HOlse/d62uSwanFLXxOJKAZ7I4yJJbg8 X-QQ-GoodBg: 2 X-BIZMAIL-ID: 2654868866904600110 Date: Thu, 26 Oct 2023 16:20:49 +0800 From: "juzhe.zhong@rivai.ai" To: Kito.cheng Cc: gcc-patches , kito.cheng , jeffreyalaw , "Robin Dapp" , "Patrick O'Neill" Subject: Re: Re: [PATCH V2] RISC-V: Add AVL propagation PASS for RVV auto-vectorization References: <20231025120518.1319929-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: E089E3DE-F874-44D1-8200-D9A2D4795C70 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <8F90C59D74E50144+2023102616204852123013@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart553361283432_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SCC_10_SHORT_WORD_LINES,SCC_20_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,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_NextPart553361283432_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 VGhhbmtzIEtpdG8uDQoNCkkgaGF2ZSBzZW50IFYzIHdpdGggYWRhcHRpbmcg dGVzdGNhc2VzICgyIGFkZGl0aW9uYWwgZHVtcCBGQUlMcyBkZXRlY3RlZCBi eSBib3RoIFBhbiBMaSBhbmQgUGF0cmljaykuDQpObyBuZWVkIHRvIHJldmll dy4NCg0KSSB3aWxsIHdhaXQgZm9yIHBhdHJpY2sgaXMgb2sgdG8gaWdub3Jl IHBvcGNvdW50IEZBSUxzIGZvciBub3cgdGhlbiBjb21taXQgaXQuDQoNCg0K DQpqdXpoZS56aG9uZ0ByaXZhaS5haQ0KIA0KRnJvbTogS2l0byBDaGVuZw0K RGF0ZTogMjAyMy0xMC0yNiAxNTo1MQ0KVG86IEp1emhlLVpob25nDQpDQzog Z2NjLXBhdGNoZXM7IGtpdG8uY2hlbmc7IGplZmZyZXlhbGF3OyByZGFwcC5n Y2M7IFBhdHJpY2sgTydOZWlsbA0KU3ViamVjdDogUmU6IFtQQVRDSCBWMl0g UklTQy1WOiBBZGQgQVZMIHByb3BhZ2F0aW9uIFBBU1MgZm9yIFJWViBhdXRv LXZlY3Rvcml6YXRpb24NCkxHVE0sIFRoYW5rcywgaXQncyByZWFsbHkgYXdl c29tZSAtIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzaW1wbGVyIHRoYW4NCkkg ZXhwZWN0ZWQsIGl0J3MgYW5vdGhlciBncmVhdCBpbXByb3ZlbWVudCBmb3Ig UklTQy1WIEdDQyENCiANCkp1c3QgbWFrZSBzdXJlIFBhdHJpY2sgZ2l2ZXMg YSBncmVlbiBsaWdodCBvbiB0aGUgdGVzdGluZyBiZWZvcmUNCmNvbW1pdHRp bmcgdGhlIHBhdGNoIDopDQogDQogDQogDQogDQpPbiBXZWQsIE9jdCAyNSwg MjAyMyBhdCA4OjA14oCvUE0gSnV6aGUtWmhvbmcgPGp1emhlLnpob25nQHJp dmFpLmFpPiB3cm90ZToNCj4NCj4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhl IHJlZHVuZGFudCBBVkwvVkwgdG9nZ2xpbmcgaW4gUlZWIHBhcnRpYWwgYXV0 by12ZWN0b3JpemF0aW9uDQo+IHdoaWNoIGlzIGEga25vd24gaXNzdWUgZm9y IGEgbG9uZyB0aW1lIGFuZCBJIGZpbmFsbHkgZmluZCB0aGUgdGltZSB0byBh ZGRyZXNzIGl0Lg0KPg0KPiBDb25zaWRlciBhIHNpbXBsZSB2ZWN0b3IgYWRk aXRpb24gb3BlcmF0aW9uOg0KPg0KPiBodHRwczovL2dvZGJvbHQub3JnL3ov N2hmR2ZFalczDQo+DQo+IHZvaWQNCj4gZm9vIChpbnQgKl9fcmVzdHJpY3Qg YSwNCj4gICAgICBpbnQgKl9fcmVzdHJpY3QgYiwNCj4gICAgICBpbnQgKl9f cmVzdHJpY3QgbikNCj4gew0KPiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg aSsrKQ0KPiAgICAgICBhW2ldID0gYVtpXSArIGJbaV07DQo+IH0NCj4NCj4g T3B0aW1pemVkIElSOg0KPg0KPiBMb29wIGJvZHk6DQo+ICAgXzM4ID0gLlNF TEVDVF9WTCAoaXZ0bXBfMzYsIFBPTFlfSU5UX0NTVCBbNCwgNF0pOyAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gdnNldHZsaSBhNSxhMixlOCxtZjQs dGEsbWENCj4gICAuLi4NCj4gICB2ZWN0X180LjhfMjcgPSAuTUFTS19MRU5f TE9BRCAodmVjdHBfYS42XzI5LCAzMkIsIHsgLTEsIC4uLiB9LCBfMzgsIDAp OyAgICAtPiB2bGUzMi52IHYyLDAoYTApDQo+ICAgdmVjdF9fNi4xMV8yMCA9 IC5NQVNLX0xFTl9MT0FEICh2ZWN0cF9iLjlfMjUsIDMyQiwgeyAtMSwgLi4u IH0sIF8zOCwgMCk7ICAgLT4gdmxlMzIudiB2MSwwKGExKQ0KPiAgIHZlY3Rf XzcuMTJfMTkgPSB2ZWN0X182LjExXzIwICsgdmVjdF9fNC44XzI3OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+IHZzZXR2bGkgYTYsemVybyxl MzIsbTEsdGEsbWEgKyB2YWRkLnZ2IHYxLHYxLHYyDQo+ICAgLk1BU0tfTEVO X1NUT1JFICh2ZWN0cF9hLjEzXzExLCAzMkIsIHsgLTEsIC4uLiB9LCBfMzgs IDAsIHZlY3RfXzcuMTJfMTkpOyAgLT4gdnNldHZsaSB6ZXJvLGE1LGUzMixt MSx0YSxtYSArIHZzZTMyLnYgdjEsMChhNCkNCj4NCj4gV2UgY2FuIHNlZSAy IHJlZHVuZGFudCB2c2V0dmxzIGluc2lkZSB0aGUgbG9vcCBib2R5IGR1ZSB0 byBBVkwvVkwgdG9nZ2xpbmcuDQo+IFRoZSBBVkwvVkwgdG9nZ2xpbmcgaXMg YmVjYXVzZSB3ZSBhcmUgbWlzc2luZyBMRU4gaW5mb3JtYXRpb24gaW4gc2lt cGxlIFBMVVNfRVhQUiBHSU1QTEUgYXNzaWdubWVudDoNCj4NCj4gdmVjdF9f Ny4xMl8xOSA9IHZlY3RfXzYuMTFfMjAgKyB2ZWN0X180LjhfMjc7DQo+DQo+ IEdDQyBhcHBseSBwYXJ0aWFsIHByZWRpY2F0ZSBsb2FkL3N0b3JlIGFuZCB1 bi1wcmVkaWNhdGVkIGZ1bGwgdmVjdG9yIG9wZXJhdGlvbiBvbiBwYXJ0aWFs IHZlY3Rvcml6YXRpb24uDQo+IFN1Y2ggZmxvdyBhcmUgdXNlZCBieSBhbGwg b3RoZXIgdGFyZ2V0cyBsaWtlIEFSTSBTVkUgKFJWViBhbHNvIHVzZXMgc3Vj aCBmbG93KToNCj4NCj4gQVJNIFNWRToNCj4NCj4gLkwzOg0KPiAgICAgICAg IGxkMXcgICAgejMwLnMsIHA3L3osIFt4MCwgeDMsIGxzbCAyXSAgIC0+IHBy ZWRpY2F0ZWQgbG9hZA0KPiAgICAgICAgIGxkMXcgICAgejMxLnMsIHA3L3os IFt4MSwgeDMsIGxzbCAyXSAgIC0+IHByZWRpY2F0ZWQgbG9hZA0KPiAgICAg ICAgIGFkZCAgICAgejMxLnMsIHozMS5zLCB6MzAucyAgICAgICAgICAgIC0+ IHVuLXByZWRpY2F0ZWQgYWRkDQo+ICAgICAgICAgc3QxdyAgICB6MzEucywg cDcsIFt4MCwgeDMsIGxzbCAyXSAgICAgLT4gcHJlZGljYXRlZCBzdG9yZQ0K Pg0KPiBTdWNoIHZlY3Rvcml6YXRpb24gZmxvdyBjYXVzZXMgQVZML1ZMIHRv Z2dsaW5nIG9uIFJWViBzbyB3ZSBuZWVkIEFWTCBwcm9wYWdhdGlvbiBQQVNT IGZvciBpdC4NCj4NCj4gQWxzbywgSXQncyB2ZXJ5IHVubGlrZWx5IHRoYXQg d2UgY2FuIGFwcGx5IHByZWRpY2F0ZWQgb3BlcmF0aW9ucyBvbiBhbGwgdmVj dG9yaXphdGlvbiBmb3IgZm9sbG93aW5nIHJlYXNvbnM6DQo+DQo+IDEuIEl0 J3MgdmVyeSBoZWF2eSB3b3JrbG9hZCB0byBzdXBwb3J0IHRoZW0gb24gYWxs IHZlY3Rvcml6YXRpb24gYW5kIHdlIGRvbid0IHNlZSBhbnkgYmVuZWZpdHMg aWYgd2UgY2FuIGhhbmRsZSB0aGF0IG9uIHRhcmdldHMgYmFja2VuZC4NCj4g Mi4gQ2hhbmdpbmcgTG9vcCB2ZWN0b3JpemVyIGZvciBpdCB3aWxsIG1ha2Ug Y29kZSBiYXNlIHVnbHkgYW5kIGhhcmQgdG8gbWFpbnRhaW4uDQo+IDMuIFdl IHdpbGwgbmVlZCBzbyBtYW55IHBhdHRlcm5zIGZvciBhbGwgb3BlcmF0aW9u cy4gTm90IG9ubHkgQ09ORF9MRU5fQURELCBDT05EX0xFTl9TVUIsIC4uLi4N Cj4gICAgV2UgYWxzbyBuZWVkIENPTkRfTEVOX0VYVEVORCwgLi4uLiwgQ09O RF9MRU5fQ0VJTCwgLi4uIC4uIG92ZXIgMTAwKyBwYXR0ZXJucywgdW5yZWFz b25hYmxlIG51bWJlciBvZiBwYXR0ZXJucy4NCj4NCj4gVG8gY29uY2x1ZGUs IHdlIHByZWZlciB1bi1wcmVkaWNhdGVkIG9wZXJhdGlvbnMgaGVyZSwgYW5k IGRlc2lnbiBhIG5pY2UgYW5kIGNsZWFuIEFWTCBwcm9wYWdhdGlvbiBQQVNT IGZvciBpdCB0byBlbGlkZSB0aGUgcmVkdW5kYW50IHZzZXR2bHMNCj4gZHVl IHRvIEFWTC9WTCB0b2dnbGluZy4NCj4NCj4gVGhlIHNlY29uZCBxdWVzdGlv biBpcyB0aGF0IHdoeSB3ZSBzZXBhcmF0ZSBhIFBBU1MgY2FsbGVkIEFWTCBw cm9wYWdhdGlvbi4gV2h5IG5vdCBvcHRpbWl6ZSBpdCBpbiBWU0VUVkwgUEFT UyAoV2UgZGVmaW5pdGV0bHkgY2FuIG9wdGltaXplIEFWTCBpbiBWU0VUVkwg UEFTUykNCj4NCj4gRnJhbmtseSwgSSB3YXMgcGxhbm5pbmcgdG8gYWRkcmVz cyBzdWNoIGlzc3VlIGluIFZTRVRWTCBQQVNTIHRoYXQncyB3aHkgd2UgcmVj ZW50bHkgcmVmYWN0b3JlZCBWU0VUVkwgUEFTUy4gSG93ZXZlciwgSSBjaGFu Z2VkIG15IG1pbmQgcmVjZW50bHkgYWZ0ZXIgc2V2ZXJhbA0KPiBleHBlcmlt ZW50cyBhbmQgdHJpZXMuDQo+DQo+IFRoZSByZWFzb25zIGFzIGZvbGxvd3M6 DQo+DQo+IDEuIEZvciBjb2RlIGJhc2UgbWFuYWdlbWVudCBhbmQgbWFpbnRh aW5pZW5jZS4gQ3VycmVudCBWU0VUVkwgUEFTUyBpcyBjb21wbGljYXRlZCBl bm91Z2ggYW5kIGFsZWFkeSBoYXMgZW5vdWdoIGFnZ3Jlc3NpdmUgYW5kIGZh bmN5IG9wdGltaXphdGlvbnMgd2hpY2gNCj4gICAgdHVybnMgb3V0IGl0IGNh biBhbHdheXMgZ2VuZXJhdGUgb3B0aW1hbCBjb2RlZ2VuIGluIG1vc3Qgb2Yg dGhlIGNhc2VzLiBJdCdzIG5vdCBhIGdvb2QgaWRlYSBrZWVwIGFkZGluZyBt b3JlIGZlYXR1cmVzIGludG8gVlNFVFZMIFBBU1MgdG8gbWFrZSBWU0VUVkwN Cj4gICAgICAgICAgUEFTUyBiZWNvbWUgaGVhdnkgYW5kIGhlYXZ5IGFnYWlu LCB0aGVuIHdlIHdpbGwgbmVlZCB0byByZWZhY3RvciBpdCBhZ2FpbiBpbiB0 aGUgZnV0dXJlLg0KPiAgICAgICAgICBBY3R1YWxsLCB0aGUgVlNFVFZMIFBB U1MgaXMgdmVyeSBzdGFibGUgYW5kIG9wdGltYWwgYWZ0ZXIgdGhlIHJlY2Vu dCByZWZhY3RvcmluZy4gSG9wZWZ1bGx5LCB3ZSBzaG91bGQgbm90IGNoYW5n ZSBWU0VUVkwgUEFTUyBhbnkgbW9yZSBleGNlcHQgdGhlIG1pbm9yDQo+ICAg ICAgICAgIGZpeGVzLg0KPg0KPiAyLiB2c2V0dmwgaW5zZXJ0aW9uIChWU0VU VkwgUEFTUyBkb2VzIHRoaXMgdGhpbmcpIGFuZCBBVkwgcHJvcGFnYXRpb24g YXJlIDIgZGlmZmVyZW50IHRoaW5ncywgIEkgZG9uJ3QgdGhpbmsgd2Ugc2hv dWxkIGZ1c2UgdGhlbSBpbnRvIHNhbWUgUEFTUy4NCj4NCj4gMy4gVlNFVFZM IFBBU1MgaXMgYW4gcG9zdC1SQSBQQVNTLCB3aGVyYXMgQVZMIHByb3BhZ3Rp b24gc2hvdWxkIGJlIGRvbmUgYmVmb3JlIFJBIHdoaWNoIGNhbiByZWR1Y2Ug cmVnaXN0ZXIgYWxsb2NhdGlvbi4NCj4NCj4gNC4gVGhpcyBwYXRjaCdzIEFW TCBwcm9wYWdhdGlvbiBQQVNTIG9ubHkgZG9lcyBBVkwgcHJvcGFnYXRpb24g Zm9yIFJWViBwYXJ0aWFsIGF1dG8tdmVjdG9yaXphdGlvbiBzaXR1YXRpb25z Lg0KPiAgICBUaGlzIHBhdGNoJ3MgY29kZXMgYXJlIG9ubHkgaHVuZHJlZHMg bGluZXMgd2hpY2ggaXMgdmVyeSBtYW5hZ2FibGUgYW5kIGNhbiBiZSB2ZXJ5 IGVhc2lseSBleHRlbmRlZCBmZWF0dXJlcyBhbmQgZW5oYW5jZW1lbnRzLg0K PiAgICAgICAgICBXZSBjYW4gZWFzaWx5IGV4dGVuZCBhbmQgZW5oYW5jZSBt b3JlIEFWTCBwcm9wYWdhdGlvbiBpbiBhIGNsZWFuIGFuZCBzZXBhcmF0ZSBQ QVNTIGluIHRoZSBmdXR1cmUuIChJZiB3ZSBkbyBpdCBvbiBWU0VUVkwgUEFT Uywgd2Ugd2lsbCBjb21wbGljYXRlDQo+ICAgICAgICAgIFZTRVRWTCBQQVNT IGFnYWluIHdoaWNoIGlzIGFscmVhZHkgc28gY29tcGxpY2F0ZWQuKQ0KPg0K PiBIZXJlIGlzIGFuIGV4YW1wbGUgdG8gZGVtb25zdHJhdGUgbW9yZToNCj4N Cj4gaHR0cHM6Ly9nb2Rib2x0Lm9yZy96L2JFODZzdjNxNQ0KPg0KPiB2b2lk IGZvbzIgKGludCAqX19yZXN0cmljdCBhLA0KPiAgICAgICAgICAgaW50ICpf X3Jlc3RyaWN0IGIsDQo+ICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgYywN Cj4gICAgICAgICAgIGludCAqX19yZXN0cmljdCBhMiwNCj4gICAgICAgICAg IGludCAqX19yZXN0cmljdCBiMiwNCj4gICAgICAgICAgIGludCAqX19yZXN0 cmljdCBjMiwNCj4gICAgICAgICAgIGludCAqX19yZXN0cmljdCBhMywNCj4g ICAgICAgICAgIGludCAqX19yZXN0cmljdCBiMywNCj4gICAgICAgICAgIGlu dCAqX19yZXN0cmljdCBjMywNCj4gICAgICAgICAgIGludCAqX19yZXN0cmlj dCBhNCwNCj4gICAgICAgICAgIGludCAqX19yZXN0cmljdCBiNCwNCj4gICAg ICAgICAgIGludCAqX19yZXN0cmljdCBjNCwNCj4gICAgICAgICAgIGludCAq X19yZXN0cmljdCBhNSwNCj4gICAgICAgICAgIGludCAqX19yZXN0cmljdCBi NSwNCj4gICAgICAgICAgIGludCAqX19yZXN0cmljdCBjNSwNCj4gICAgICAg ICAgIGludCBuKQ0KPiB7DQo+ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47 IGkrKyl7DQo+ICAgICAgIGFbaV0gPSBiW2ldICsgY1tpXTsNCj4gICAgICAg YjVbaV0gPSBiW2ldICsgY1tpXTsNCj4gICAgICAgYTJbaV0gPSBiMltpXSAr IGMyW2ldOw0KPiAgICAgICBhM1tpXSA9IGIzW2ldICsgYzNbaV07DQo+ICAg ICAgIGE0W2ldID0gYjRbaV0gKyBjNFtpXTsNCj4gICAgICAgYTVbaV0gPSBh W2ldICsgYTRbaV07DQo+ICAgICAgIGFbaV0gPSBhNVtpXSArIGI1W2ldKyBh W2ldOw0KPg0KPiAgICAgICBhW2ldID0gYVtpXSArIGNbaV07DQo+ICAgICAg IGI1W2ldID0gYVtpXSArIGNbaV07DQo+ICAgICAgIGEyW2ldID0gYVtpXSAr IGMyW2ldOw0KPiAgICAgICBhM1tpXSA9IGFbaV0gKyBjM1tpXTsNCj4gICAg ICAgYTRbaV0gPSBhW2ldICsgYzRbaV07DQo+ICAgICAgIGE1W2ldID0gYVtp XSArIGE0W2ldOw0KPiAgICAgICBhW2ldID0gYVtpXSArIGI1W2ldKyBhW2ld Ow0KPiAgICAgfQ0KPiB9DQo+DQo+IDEuIExvb3AgQm9keToNCj4NCj4gQmVm b3JlIHRoaXMgcGF0Y2g6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQWZ0ZXIgdGhpcyBwYXRjaDoNCj4NCj4gICAgICAgICAg ICAgICB2c2V0dmxpIGE0LHQxLGU4LG1mNCx0YSxtYSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZzZXR2bGkgICAgICBhNCx0MSxlMzIsbTEsdGEsbWEN Cj4gICAgICAgICB2bGUzMi52IHYyLDAoYTIpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZsZTMyLnYgICAgdjIsMChhMikNCj4gICAg ICAgICB2bGUzMi52IHY0LDAoYTEpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZsZTMyLnYgICAgdjMsMCh0MikNCj4gICAgICAgICB2 bGUzMi52IHYxLDAodDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZsZTMyLnYgICAgdjQsMChhMSkNCj4gICAgICAgICB2c2V0dmxp IGE3LHplcm8sZTMyLG0xLHRhLG1hICAgICAgICAgICAgICAgICAgICAgICAg IHZsZTMyLnYgICAgdjEsMCh0MCkNCj4gICAgICAgICB2YWRkLnZ2IHY0LHYy LHY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGQu dnYgICAgdjQsdjIsdjQNCj4gICAgICAgICB2c2V0dmxpIHplcm8sYTQsZTMy LG0xLHRhLG1hICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGQudnYgICAg djEsdjMsdjENCj4gICAgICAgICB2bGUzMi52IHYzLDAoczApICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGQudnYgICAgdjEsdjEs djQNCj4gICAgICAgICB2c2V0dmxpIGE3LHplcm8sZTMyLG0xLHRhLG1hICAg ICAgICAgICAgICAgICAgICAgICAgIHZhZGQudnYgICAgdjEsdjEsdjQNCj4g ICAgICAgICB2YWRkLnZ2IHYxLHYzLHYxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZhZGQudnYgICAgdjEsdjEsdjQNCj4gICAgICAg ICB2YWRkLnZ2IHYxLHYxLHY0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhZGQudnYgICAgdjEsdjEsdjINCj4gICAgICAgICB2YWRk LnZ2IHYxLHYxLHY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZhZGQudnYgICAgdjIsdjEsdjINCj4gICAgICAgICB2YWRkLnZ2IHYx LHYxLHY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZz ZTMyLnYgICAgdjIsMCh0NSkNCj4gICAgICAgICB2c2V0dmxpIHplcm8sYTQs ZTMyLG0xLHRhLG1hICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGQudnYg ICAgdjIsdjIsdjENCj4gICAgICAgICB2bGUzMi52IHY0LDAoYTUpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGQudnYgICAgdjIs djIsdjENCj4gICAgICAgICB2c2V0dmxpIGE3LHplcm8sZTMyLG0xLHRhLG1h ICAgICAgICAgICAgICAgICAgICAgICAgIHNsbGkgICAgICAgYTcsYTQsMg0K PiAgICAgICAgIHZhZGQudnYgdjEsdjEsdjIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmFkZC52diAgICB2Myx2MSx2Mw0KPiAgICAg ICAgIHZhZGQudnYgdjIsdjEsdjIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmxlMzIudiAgICB2NSwwKGE1KQ0KPiAgICAgICAgIHZh ZGQudnYgdjQsdjEsdjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdmxlMzIudiAgICB2NiwwKHQ2KQ0KPiAgICAgICAgIHZzZXR2bGkg emVybyxhNCxlMzIsbTEsdGEsbWEgICAgICAgICAgICAgICAgICAgICAgICAg dnNlMzIudiAgICB2MywwKHQzKQ0KPiAgICAgICAgIHZzZTMyLnYgdjIsMCh0 NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnNlMzIu diAgICB2MiwwKGEwKQ0KPiAgICAgICAgIHZzZTMyLnYgdjQsMChhMykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFkZC52diAgICB2 Myx2Myx2MQ0KPiAgICAgICAgIHZzZXR2bGkgYTcsemVybyxlMzIsbTEsdGEs bWEgICAgICAgICAgICAgICAgICAgICAgICAgdmFkZC52diAgICB2Mix2MSx2 NQ0KPiAgICAgICAgIHZhZGQudnYgdjMsdjEsdjMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdnNlMzIudiAgICB2MywwKHQ0KQ0KPiAg ICAgICAgIHZhZGQudnYgdjIsdjIsdjEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFkZC52diAgICB2MSx2MSx2Ng0KPiAgICAgICAg IHZhZGQudnYgdjIsdjIsdjEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdnNlMzIudiAgICB2MiwwKGEzKQ0KPiAgICAgICAgIHZzZXR2 bGkgemVybyxhNCxlMzIsbTEsdGEsbWEgICAgICAgICAgICAgICAgICAgICAg ICAgdnNlMzIudiAgICB2MSwwKGE2KQ0KPiAgICAgICAgIHZzZTMyLnYgdjIs MChhMCkNCj4gICAgICAgICB2c2UzMi52IHYzLDAodDMpDQo+ICAgICAgICAg dmxlMzIudiB2MiwwKHQwKQ0KPiAgICAgICAgIHZzZXR2bGkgYTcsemVybyxl MzIsbTEsdGEsbWENCj4gICAgICAgICB2YWRkLnZ2IHYzLHYzLHYxDQo+ICAg ICAgICAgdnNldHZsaSB6ZXJvLGE0LGUzMixtMSx0YSxtYQ0KPiAgICAgICAg IHZzZTMyLnYgdjMsMCh0NCkNCj4gICAgICAgICB2c2V0dmxpIGE3LHplcm8s ZTMyLG0xLHRhLG1hDQo+ICAgICAgICAgc2xsaSAgICBhNyxhNCwyDQo+ICAg ICAgICAgdmFkZC52diB2MSx2MSx2Mg0KPiAgICAgICAgIHN1YiAgICAgdDEs dDEsYTQNCj4gICAgICAgICB2c2V0dmxpIHplcm8sYTQsZTMyLG0xLHRhLG1h DQo+ICAgICAgICAgdnNlMzIudiB2MSwwKGE2KQ0KPg0KPiBJdCdzIHF1aXRl IG9idmlvdXMsIGFsbCBoZWF2eSAmJiByZWR1bmRhbnQgdnNldHZscyBpbnNp ZGUgbG9vcCBib2R5IGFyZSBlbGltaW5hdGVkLg0KPg0KPiAyLiBFcGlsb2d1 ZToNCj4gICAgIEJlZm9yZSB0aGlzIHBhdGNoOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHRoaXMgcGF0Y2g6DQo+ DQo+ICAgICAgLkw1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC5MNToNCj4gICAgICAgICBsZCAgICAg IHMwLDgoc3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXQNCj4gICAgICAgICBhZGRpICAgIHNwLHNwLDE2DQo+ICAgICAg ICAganIgICAgICByYQ0KPg0KPiBUaGlzIGlzIHRoZSBiZW5lZml0IHdlIGRv IHRoZSBBVkwgcHJvcGF0aW9uIGJlZm9yZSBSQSBzaW5jZSB3ZSBlbGltaW5h dGUgdGhlIHVzZSBvZiAnYTcnIHJlZ2lzdGVyDQo+IHdoaWNoIGlzIHVzZWQg YnkgdGhlIHJlZHVkYW50IEFWTC9WTCB0b2dnbGluZyBpbnN0cnVjdGlvbjog J3ZzZXR2bGkgYTcsemVybyxlMzIsbTEsdGEsbWEnDQo+DQo+IFRoZSBmaW5h bCBjb2RlZ2VuIGFmdGVyIHRoaXMgcGF0Y2g6DQo+DQo+IGZvbzI6DQo+ICAg ICAgICAgbHcgICAgICB0MSw1NihzcCkNCj4gICAgICAgICBsZCAgICAgIHQ2 LDAoc3ApDQo+ICAgICAgICAgbGQgICAgICB0Myw4KHNwKQ0KPiAgICAgICAg IGxkICAgICAgdDAsMTYoc3ApDQo+ICAgICAgICAgbGQgICAgICB0MiwyNChz cCkNCj4gICAgICAgICBsZCAgICAgIHQ0LDMyKHNwKQ0KPiAgICAgICAgIGxk ICAgICAgdDUsNDAoc3ApDQo+ICAgICAgICAgYmxlICAgICB0MSx6ZXJvLC5M NQ0KPiAuTDM6DQo+ICAgICAgICAgdnNldHZsaSBhNCx0MSxlMzIsbTEsdGEs bWENCj4gICAgICAgICB2bGUzMi52IHYyLDAoYTIpDQo+ICAgICAgICAgdmxl MzIudiB2MywwKHQyKQ0KPiAgICAgICAgIHZsZTMyLnYgdjQsMChhMSkNCj4g ICAgICAgICB2bGUzMi52IHYxLDAodDApDQo+ICAgICAgICAgdmFkZC52diB2 NCx2Mix2NA0KPiAgICAgICAgIHZhZGQudnYgdjEsdjMsdjENCj4gICAgICAg ICB2YWRkLnZ2IHYxLHYxLHY0DQo+ICAgICAgICAgdmFkZC52diB2MSx2MSx2 NA0KPiAgICAgICAgIHZhZGQudnYgdjEsdjEsdjQNCj4gICAgICAgICB2YWRk LnZ2IHYxLHYxLHYyDQo+ICAgICAgICAgdmFkZC52diB2Mix2MSx2Mg0KPiAg ICAgICAgIHZzZTMyLnYgdjIsMCh0NSkNCj4gICAgICAgICB2YWRkLnZ2IHYy LHYyLHYxDQo+ICAgICAgICAgdmFkZC52diB2Mix2Mix2MQ0KPiAgICAgICAg IHNsbGkgICAgYTcsYTQsMg0KPiAgICAgICAgIHZhZGQudnYgdjMsdjEsdjMN Cj4gICAgICAgICB2bGUzMi52IHY1LDAoYTUpDQo+ICAgICAgICAgdmxlMzIu diB2NiwwKHQ2KQ0KPiAgICAgICAgIHZzZTMyLnYgdjMsMCh0MykNCj4gICAg ICAgICB2c2UzMi52IHYyLDAoYTApDQo+ICAgICAgICAgdmFkZC52diB2Myx2 Myx2MQ0KPiAgICAgICAgIHZhZGQudnYgdjIsdjEsdjUNCj4gICAgICAgICB2 c2UzMi52IHYzLDAodDQpDQo+ICAgICAgICAgdmFkZC52diB2MSx2MSx2Ng0K PiAgICAgICAgIHZzZTMyLnYgdjIsMChhMykNCj4gICAgICAgICB2c2UzMi52 IHYxLDAoYTYpDQo+ICAgICAgICAgc3ViICAgICB0MSx0MSxhNA0KPiAgICAg ICAgIGFkZCAgICAgYTEsYTEsYTcNCj4gICAgICAgICBhZGQgICAgIGEyLGEy LGE3DQo+ICAgICAgICAgYWRkICAgICBhNSxhNSxhNw0KPiAgICAgICAgIGFk ZCAgICAgdDYsdDYsYTcNCj4gICAgICAgICBhZGQgICAgIHQwLHQwLGE3DQo+ ICAgICAgICAgYWRkICAgICB0Mix0MixhNw0KPiAgICAgICAgIGFkZCAgICAg dDUsdDUsYTcNCj4gICAgICAgICBhZGQgICAgIGEzLGEzLGE3DQo+ICAgICAg ICAgYWRkICAgICBhNixhNixhNw0KPiAgICAgICAgIGFkZCAgICAgdDMsdDMs YTcNCj4gICAgICAgICBhZGQgICAgIHQ0LHQ0LGE3DQo+ICAgICAgICAgYWRk ICAgICBhMCxhMCxhNw0KPiAgICAgICAgIGJuZSAgICAgdDEsemVybywuTDMN Cj4gLkw1Og0KPiAgICAgICAgIHJldA0KPg0KPg0KPiAgICAgICAgIFBSIHRh cmdldC8xMTEzMTgNCj4gICAgICAgICBQUiB0YXJnZXQvMTExODg4DQo+DQo+ IGdjYy9DaGFuZ2VMb2c6DQo+DQo+ICAgICAgICAgKiBjb25maWcuZ2NjOiBB ZGQgQVZMIHByb3BhZ2F0aW9uIFBBU1MuDQo+ICAgICAgICAgKiBjb25maWcv cmlzY3YvcmlzY3YtcGFzc2VzLmRlZiAoSU5TRVJUX1BBU1NfQUZURVIpOiBE aXR0by4NCj4gICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3Mu aCAobWFrZV9wYXNzX2F2bHByb3ApOiBEaXR0by4NCj4gICAgICAgICAqIGNv bmZpZy9yaXNjdi90LXJpc2N2OiBEaXR0by4NCj4gICAgICAgICAqIGNvbmZp Zy9yaXNjdi9yaXNjdi1hdmxwcm9wLmNjOiBOZXcgZmlsZS4NCj4NCj4gZ2Nj L3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+DQo+ICAgICAgICAgKiBnY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2VsZWN0X3ZsLTIuYzog QWRhcHQgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvdGVybm9wL3Rlcm5vcF9ub2ZtLTIuYzogRGl0dG8uDQo+ICAg ICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3ByMTExMzE4 LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy9wcjExMTg4OC5jOiBOZXcgdGVzdC4NCj4NCj4gLS0tDQo+ ICBnY2MvY29uZmlnLmdjYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0NCj4gIGdjYy9jb25maWcvcmlzY3YvcmlzY3YtYXZscHJv cC5jYyAgICAgICAgICAgICB8IDQxOSArKysrKysrKysrKysrKysrKysNCj4g IGdjYy9jb25maWcvcmlzY3YvcmlzY3YtcGFzc2VzLmRlZiAgICAgICAgICAg ICB8ICAgMSArDQo+ICBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5o ICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgZ2NjL2NvbmZpZy9yaXNjdi90 LXJpc2N2ICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsNCj4gIC4uLi9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NlbGVjdF92bC0yLmMgICB8ICAg NSArLQ0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcHIx MTEzMTguYyAgIHwgIDE2ICsNCj4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3ByMTExODg4LmMgICB8ICAzMyArKw0KPiAgLi4uL3Jpc2N2 L3J2di9hdXRvdmVjL3Rlcm5vcC90ZXJub3Bfbm9mbS0yLmMgIHwgICAxIC0N Cj4gIDkgZmlsZXMgY2hhbmdlZCwgNDgwIGluc2VydGlvbnMoKyksIDQgZGVs ZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi1hdmxwcm9wLmNjDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3By MTExMzE4LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcHIxMTE4ODguYw0KPg0K PiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdj Yw0KPiBpbmRleCA2MDZkM2E4NTEzZS4uZWZkNTM5NjVjOWEgMTAwNjQ0DQo+ IC0tLSBhL2djYy9jb25maWcuZ2NjDQo+ICsrKyBiL2djYy9jb25maWcuZ2Nj DQo+IEBAIC01NDQsNyArNTQ0LDcgQEAgcHJ1LSotKikNCj4gIHJpc2N2KikN Cj4gICAgICAgICBjcHVfdHlwZT1yaXNjdg0KPiAgICAgICAgIGV4dHJhX29i anM9InJpc2N2LWJ1aWx0aW5zLm8gcmlzY3YtYy5vIHJpc2N2LXNyLm8gcmlz Y3Ytc2hvcnRlbi1tZW1yZWZzLm8gcmlzY3Ytc2VsZnRlc3RzLm8gcmlzY3Yt c3RyaW5nLm8iDQo+IC0gICAgICAgZXh0cmFfb2Jqcz0iJHtleHRyYV9vYmpz fSByaXNjdi12Lm8gcmlzY3YtdnNldHZsLm8gcmlzY3YtdmVjdG9yLWNvc3Rz Lm8iDQo+ICsgICAgICAgZXh0cmFfb2Jqcz0iJHtleHRyYV9vYmpzfSByaXNj di12Lm8gcmlzY3YtdnNldHZsLm8gcmlzY3YtdmVjdG9yLWNvc3RzLm8gcmlz Y3YtYXZscHJvcC5vIg0KPiAgICAgICAgIGV4dHJhX29ianM9IiR7ZXh0cmFf b2Jqc30gcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLm8gcmlzY3YtdmVjdG9yLWJ1 aWx0aW5zLXNoYXBlcy5vIHJpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5v Ig0KPiAgICAgICAgIGV4dHJhX29ianM9IiR7ZXh0cmFfb2Jqc30gdGhlYWQu byINCj4gICAgICAgICBkX3RhcmdldF9vYmpzPSJyaXNjdi1kLm8iDQo+IGRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LWF2bHByb3AuY2Mg Yi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LWF2bHByb3AuY2MNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjJjNzllYzgx ODA2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi1hdmxwcm9wLmNjDQo+IEBAIC0wLDAgKzEsNDE5IEBADQo+ICsv KiBBVkwgcHJvcGFnYXRpb24gcGFzcyBmb3IgUklTQy1WICdWJyBFeHRlbnNp b24gZm9yIEdOVSBjb21waWxlci4NCj4gKyAgIENvcHlyaWdodCAoQykgMjAy My0yMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KPiArICAg Q29udHJpYnV0ZWQgYnkgSnV6aGUgWmhvbmcgKGp1emhlLnpob25nQHJpdmFp LmFpKSwgUmlWQUkgVGVjaG5vbG9naWVzIEx0ZC4NCj4gKw0KPiArVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0NDLg0KPiArDQo+ICtHQ0MgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0K PiAraXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCj4gK3RoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yKGF0IHlvdXIg b3B0aW9uKQ0KPiArYW55IGxhdGVyIHZlcnNpb24uDQo+ICsNCj4gK0dDQyBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLA0KPiArYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCj4gK01FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUNCj4gK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuDQo+ICsNCj4gK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo+ICthbG9u ZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNl ZQ0KPiArPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCj4g Kw0KPiArLyogUHJlLVJBIFJUTF9TU0EtYmFzZWQgcGFzcyBwcm9wYWdhdGVz IEFWTCBmb3IgUlZWIGluc3RydWN0aW9ucy4NCj4gKyAgIEEgc3RhbmRhbG9u ZSBBVkwgcHJvcGFnYXRpb24gcGFzcyBpcyBkZXNpZ25lZCBiZWNhdXNlOg0K PiArDQo+ICsgICAgIC0gQmV0dGVyIGNvZGUgbWFpbnRhaW46DQo+ICsgICAg ICAgQ3VycmVudCBMQ00tYmFzZWQgVlNFVFZMIHBhc3MgaXMgc28gY29tcGxp Y2F0ZWQgdGhhdCBjb2Rlcw0KPiArICAgICAgIHRoZXJlIHdpbGwgYmVjb21l IGV2ZW4gaGFyZGVyIHRvIG1haW50YWluLiBBIHN0cmFpZ2h0IGZvcndhcmQN Cj4gKyAgICAgICBBVkwgcHJvcGFnYXRpb24gUEFTUyBpcyBtdWNoIGVhc2ll ciB0byBtYWludGFpbi4NCj4gKw0KPiArICAgICAtIFJlZHVjZSBzY2FsYXIg cmVnaXN0ZXIgcHJlc3N1cmU6DQo+ICsgICAgICAgQSB0eXBlIG9mIEFWTCBw cm9wYWdhdGlvbiBpcyB3ZSBwcm9wYWdhdGUgQVZMIGZyb20gTk9OLVZMTUFY DQo+ICsgICAgICAgaW5zdHJ1Y3Rpb24gdG8gVkxNQVggaW5zdHJ1Y3Rpb24u DQo+ICsgICAgICAgTm90ZTogVkxNQVggaW5zdHJ1Y3Rpb24gc2hvdWxkIGJl IGlnbm9yZSB0YWlsIGVsZW1lbnRzIChUQSkNCj4gKyAgICAgICBhbmQgdGhl IHJlc3VsdCBzaG91bGQgYmUgdXNlZCBieSB0aGUgTk9OLVZMTUFYIGluc3Ry dWN0aW9uLg0KPiArICAgICAgIFRoaXMgb3B0aW1pemF0aW9uIGlzIG1vc3Rs eSBmb3IgYXV0by12ZWN0b3JpemF0aW9uIGNvZGVzOg0KPiArDQo+ICsgICAg ICAgICB2c2V0dmxpIHIxMzYsIHIxMzcgICAgICAtLS0gU0VMRUNUX1ZMDQo+ ICsgICAgICAgICB2bGU4LnYgKHVzZSBhdmwgPSByMTM2KSAtLS0gSUZOX01B U0tfTEVOX0xPQUQNCj4gKyAgICAgICAgIHZhZGQudnYgKHVzZSBWTE1BWCkg ICAgIC0tLSBQTFVTX0VYUFINCj4gKyAgICAgICAgIHZzZTgudiAodXNlIGF2 bCA9IHIxMzYpIC0tLSBJRk5fTUFTS19MRU5fU1RPUkUNCj4gKw0KPiArICAg ICAgIE5PIEFWTCBwcm9wYXRpb246DQo+ICsNCj4gKyAgICAgICAgIHZzZXR2 bGkgYTUsIGE0LCB0YQ0KPiArICAgICAgICAgdmxlOC52IHYxDQo+ICsgICAg ICAgICB2c2V0dmxpIHQwLCB6ZXJvLCB0YQ0KPiArICAgICAgICAgdmFkZC52 diB2MiwgdjEsIHYxDQo+ICsgICAgICAgICB2c2U4LnYgdjINCj4gKw0KPiAr ICAgICAgIFdlIGNhbiBwcm9wYWdhdGUgdGhlIEFWTCB0byAndmFkZC52dicg c2luY2UgaXRzIHJlc3VsdA0KPiArICAgICAgIGlzIGNvbnN1bWVkIGJ5IGEg J3ZzZTgudicgd2hpY2ggaGFzIEFWTCA9IGE1IGFuZCBpdHMNCj4gKyAgICAg ICB0YWlsIGVsZW1lbnRzIGFyZSBhZ25vc3RpYy4NCj4gKw0KPiArICAgICAg IFdlIERPTidUIGRvIHRoaXMgb3B0aW1pemF0aW9uIG9uIFZTRVRWTCBwYXNz IHNpbmNlIGl0IGlzIGENCj4gKyAgICAgICBwb3N0LVJBIHBhc3MgdGhhdCBj b25zdW1lZCAndDAnIGFscmVhZHkgd2hlcmFzIGEgc3RhbmRhbG9uZQ0KPiAr ICAgICAgIHByZS1SQSBBVkwgcHJvcGFnYXRpb24gcGFzcyBhbGxvd3MgdXMg ZWxpZGUgdGhlIGNvbnN1bXB0aW9uDQo+ICsgICAgICAgb2YgdGhlIHBzZXVk byByZWdpc3RlciBvZiAndDAnIHRoZW4gd2UgY2FuIHJlZHVjZSBzY2FsYXIN Cj4gKyAgICAgICByZWdpc3RlciBwcmVzc3VyZS4NCj4gKw0KPiArICAgICAt IE1vcmUgQVZMIHByb3BhZ2F0aW9uIG9wcG9ydHVuaXRpZXM6DQo+ICsgICAg ICAgQSBwcmUtUkEgcGFzcyBpcyBtb3JlIGZsZXhpYmxlIGZvciBBVkwgUkVH IGRlZi11c2UgY2hhaW4sDQo+ICsgICAgICAgdGh1cyB3ZSB3aWxsIGdldCBt b3JlIHBvdGVudGlhbCBBVkwgcHJvcGFnYXRpb24gYXMgbG9uZyBhcw0KPiAr ICAgICAgIGl0IGRvZXNuJ3QgaW5jcmVhc2UgdGhlIHNjYWxhciByZWdpc3Rl ciBwcmVzc3VyZS4NCj4gKyovDQo+ICsNCj4gKyNkZWZpbmUgSU5fVEFSR0VU X0NPREUgMQ0KPiArI2RlZmluZSBJTkNMVURFX0FMR09SSVRITQ0KPiArI2Rl ZmluZSBJTkNMVURFX0ZVTkNUSU9OQUwNCj4gKw0KPiArI2luY2x1ZGUgImNv bmZpZy5oIg0KPiArI2luY2x1ZGUgInN5c3RlbS5oIg0KPiArI2luY2x1ZGUg ImNvcmV0eXBlcy5oIg0KPiArI2luY2x1ZGUgInRtLmgiDQo+ICsjaW5jbHVk ZSAiYmFja2VuZC5oIg0KPiArI2luY2x1ZGUgInJ0bC5oIg0KPiArI2luY2x1 ZGUgInRhcmdldC5oIg0KPiArI2luY2x1ZGUgInRyZWUtcGFzcy5oIg0KPiAr I2luY2x1ZGUgImRmLmgiDQo+ICsjaW5jbHVkZSAicnRsLXNzYS5oIg0KPiAr I2luY2x1ZGUgImNmZ2NsZWFudXAuaCINCj4gKyNpbmNsdWRlICJpbnNuLWF0 dHIuaCINCj4gKw0KPiArdXNpbmcgbmFtZXNwYWNlIHJ0bF9zc2E7DQo+ICt1 c2luZyBuYW1lc3BhY2UgcmlzY3ZfdmVjdG9yOw0KPiArDQo+ICtlbnVtIGF2 bHByb3BfdHlwZQ0KPiArew0KPiArICAvKiBWTE1BWCBBVkwgYW5kIHRhaWwg YWdub3N0aWMgY2FuZGlkYXRlcy4gICovDQo+ICsgIEFWTFBST1BfVkxNQVhf VEEsDQo+ICsgIEFWTFBST1BfTk9ORQ0KPiArfTsNCj4gKw0KPiArLyogZHVt cCBoZWxwZXIgZnVuY3Rpb25zICovDQo+ICtzdGF0aWMgY29uc3QgY2hhciAq DQo+ICthdmxwcm9wX3R5cGVfdG9fc3RyIChlbnVtIGF2bHByb3BfdHlwZSB0 eXBlKQ0KPiArew0KPiArICBzd2l0Y2ggKHR5cGUpDQo+ICsgICAgew0KPiAr ICAgIGNhc2UgQVZMUFJPUF9WTE1BWF9UQToNCj4gKyAgICAgIHJldHVybiAi dmxtYXhfdGEiOw0KPiArDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgIGdj Y191bnJlYWNoYWJsZSAoKTsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBib29sDQo+ICt2bG1heF90YV9wIChydHhfaW5zbiAqcmluc24pDQo+ ICt7DQo+ICsgIHJldHVybiB2bG1heF9hdmxfdHlwZV9wIChyaW5zbikgJiYg dGFpbF9hZ25vc3RpY19wIChyaW5zbik7DQo+ICt9DQo+ICsNCj4gK2NvbnN0 IHBhc3NfZGF0YSBwYXNzX2RhdGFfYXZscHJvcCA9IHsNCj4gKyAgUlRMX1BB U1MsICAgICAvKiB0eXBlICovDQo+ICsgICJhdmxwcm9wIiwgICAgLyogbmFt ZSAqLw0KPiArICBPUFRHUk9VUF9OT05FLCAvKiBvcHRpbmZvX2ZsYWdzICov DQo+ICsgIFRWX05PTkUsICAgICAgLyogdHZfaWQgKi8NCj4gKyAgMCwgICAg ICAgICAgICAvKiBwcm9wZXJ0aWVzX3JlcXVpcmVkICovDQo+ICsgIDAsICAg ICAgICAgICAgLyogcHJvcGVydGllc19wcm92aWRlZCAqLw0KPiArICAwLCAg ICAgICAgICAgIC8qIHByb3BlcnRpZXNfZGVzdHJveWVkICovDQo+ICsgIDAs ICAgICAgICAgICAgLyogdG9kb19mbGFnc19zdGFydCAqLw0KPiArICAwLCAg ICAgICAgICAgIC8qIHRvZG9fZmxhZ3NfZmluaXNoICovDQo+ICt9Ow0KPiAr DQo+ICtjbGFzcyBwYXNzX2F2bHByb3AgOiBwdWJsaWMgcnRsX29wdF9wYXNz DQo+ICt7DQo+ICtwdWJsaWM6DQo+ICsgIHBhc3NfYXZscHJvcCAoZ2NjOjpj b250ZXh0ICpjdHh0KSA6IHJ0bF9vcHRfcGFzcyAocGFzc19kYXRhX2F2bHBy b3AsIGN0eHQpIHt9DQo+ICsNCj4gKyAgLyogb3B0X3Bhc3MgbWV0aG9kczog Ki8NCj4gKyAgdmlydHVhbCBib29sIGdhdGUgKGZ1bmN0aW9uICopIGZpbmFs IG92ZXJyaWRlDQo+ICsgIHsNCj4gKyAgICByZXR1cm4gVEFSR0VUX1ZFQ1RP UiAmJiBvcHRpbWl6ZSA+IDA7DQo+ICsgIH0NCj4gKyAgdmlydHVhbCB1bnNp Z25lZCBpbnQgZXhlY3V0ZSAoZnVuY3Rpb24gKikgZmluYWwgb3ZlcnJpZGU7 DQo+ICsNCj4gK3ByaXZhdGU6DQo+ICsgIC8qIFRoZSBBVkwgcHJvcGFnYXRp b24gaW5zdHJ1Y3Rpb25zIGFuZCBjb3JyZXNwb25kaW5nIHByZWZlcnJlZCBB VkwuDQo+ICsgICAgIEl0IHdpbGwgYmUgdXBkYXRlZCBkdXJpbmcgdGhlIGFu YWx5c2lzLiAgKi8NCj4gKyAgaGFzaF9tYXA8aW5zbl9pbmZvICosIHJ0eD4g Km1fYXZsX3Byb3BhZ2F0aW9uczsNCj4gKw0KPiArICAvKiBQb3RlbnRpYWwg ZmVhc2libGUgQVZMIHByb3BhZ2F0aW9uIGNhbmRpZGF0ZXMuICAqLw0KPiAr ICBhdXRvX3ZlYzxzdGQ6OnBhaXI8ZW51bSBhdmxwcm9wX3R5cGUsIGluc25f aW5mbyAqPj4gbV9jYW5kaWRhdGVzOw0KPiArDQo+ICsgIHJ0eCBnZXRfcHJl ZmVycmVkX2F2bCAoY29uc3Qgc3RkOjpwYWlyPGVudW0gYXZscHJvcF90eXBl LCBpbnNuX2luZm8gKj4pIGNvbnN0Ow0KPiArICBydHggZ2V0X3ZsbWF4X3Rh X3ByZWZlcnJlZF9hdmwgKGluc25faW5mbyAqKSBjb25zdDsNCj4gKyAgcnR4 IGdldF9ub252bG1heF9hdmwgKGluc25faW5mbyAqKSBjb25zdDsNCj4gKw0K PiArICB2b2lkIGF2bHByb3BfaW5pdCAoZnVuY3Rpb24gKik7DQo+ICsgIHZv aWQgYXZscHJvcF9kb25lICh2b2lkKTsNCj4gK307IC8vIGNsYXNzIHBhc3Nf YXZscHJvcA0KPiArDQo+ICt2b2lkDQo+ICtwYXNzX2F2bHByb3A6OmF2bHBy b3BfaW5pdCAoZnVuY3Rpb24gKmZuKQ0KPiArew0KPiArICBjYWxjdWxhdGVf ZG9taW5hbmNlX2luZm8gKENESV9ET01JTkFUT1JTKTsNCj4gKyAgZGZfYW5h bHl6ZSAoKTsNCj4gKyAgY3J0bC0+c3NhID0gbmV3IGZ1bmN0aW9uX2luZm8g KGZuKTsNCj4gKyAgbV9hdmxfcHJvcGFnYXRpb25zID0gbmV3IGhhc2hfbWFw PGluc25faW5mbyAqLCBydHg+Ow0KPiArfQ0KPiArDQo+ICt2b2lkDQo+ICtw YXNzX2F2bHByb3A6OmF2bHByb3BfZG9uZSAodm9pZCkNCj4gK3sNCj4gKyAg ZnJlZV9kb21pbmFuY2VfaW5mbyAoQ0RJX0RPTUlOQVRPUlMpOw0KPiArICBp ZiAoY3J0bC0+c3NhLT5wZXJmb3JtX3BlbmRpbmdfdXBkYXRlcyAoKSkNCj4g KyAgICBjbGVhbnVwX2NmZyAoMCk7DQo+ICsgIGRlbGV0ZSBjcnRsLT5zc2E7 DQo+ICsgIGNydGwtPnNzYSA9IG51bGxwdHI7DQo+ICsgIGRlbGV0ZSBtX2F2 bF9wcm9wYWdhdGlvbnM7DQo+ICsgIG1fYXZsX3Byb3BhZ2F0aW9ucyA9IE5V TEw7DQo+ICsgIGlmICghbV9jYW5kaWRhdGVzLmlzX2VtcHR5ICgpKQ0KPiAr ICAgIG1fY2FuZGlkYXRlcy5yZWxlYXNlICgpOw0KPiArfQ0KPiArDQo+ICsv KiBJZiB3ZSBoYXZlIGEgcHJlZmVycmVkIEFWTCB0byBwcm9wYWdhdGUsIHJl dHVybiB0aGUgQVZMLg0KPiArICAgT3RoZXJ3aXNlLCByZXR1cm4gTlVMTF9S VFggYXMgd2UgZG9uJ3QgbmVlZCBoYXZlIGFueSBwcmVmZXJyZWQNCj4gKyAg IEFWTC4gICovDQo+ICsNCj4gK3J0eA0KPiArcGFzc19hdmxwcm9wOjpnZXRf cHJlZmVycmVkX2F2bCAoDQo+ICsgIGNvbnN0IHN0ZDo6cGFpcjxlbnVtIGF2 bHByb3BfdHlwZSwgaW5zbl9pbmZvICo+IGNhbmRpZGF0ZSkgY29uc3QNCj4g K3sNCj4gKyAgc3dpdGNoIChjYW5kaWRhdGUuZmlyc3QpDQo+ICsgICAgew0K PiArICAgIGNhc2UgQVZMUFJPUF9WTE1BWF9UQToNCj4gKyAgICAgIHJldHVy biBnZXRfdmxtYXhfdGFfcHJlZmVycmVkX2F2bCAoY2FuZGlkYXRlLnNlY29u ZCk7DQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgIGdjY191bnJlYWNoYWJs ZSAoKTsNCj4gKyAgICB9DQo+ICsgIHJldHVybiBOVUxMX1JUWDsNCj4gK30N Cj4gKw0KPiArLyogVGhpcyBpcyBhIHN0cmFpZ2h0IGZvcndhcmQgcGF0dGVy biBBTFdBWVMgaW4gcGFyaXRpYWwgYXV0by12ZWN0b3JpemF0aW9uOg0KPiAr DQo+ICsgICAgIFZMID0gU0VMRUNUX0FWTCAoQVZMLCAuLi4pDQo+ICsgICAg IFYwID0gTUFTS19MRU5fTE9BRCAoLi4uLCBWTCkNCj4gKyAgICAgVjEgPSBN QVNLX0xFTl9MT0FEICguLi4sIFZMKQ0KPiArICAgICBWMiA9IFYwICsgVjEg LS0tIE1pc3NlZCBMRU4gaW5mb3JtYXRpb24uDQo+ICsgICAgIE1BU0tfTEVO X1NUT1JFICguLi4sIFYyLCBWTCkNCj4gKw0KPiArICAgV2UgcHJlZmVyIFBM VVNfRVhQUiAoVjAgKyBWMSkgaW5zdGVhZCBvZiBDT05EX0xFTl9BREQgKFYw LCBWMSwgZHVtbXkgTEVOKQ0KPiArICAgYmVjYXVzZToNCj4gKw0KPiArICAg ICAtIEZldyBjb2RlIGNoYW5nZXMgaW4gTG9vcCBWZWN0b3JpemVyLg0KPiAr ICAgICAtIFJldXNlIHRoZSBjdXJyZW50IGNsZWFuIGZsb3cgb2YgcGFydGlh bCB2ZWN0b3JpemF0aW9uLCBUaGF0IGlzLCBhcHBseQ0KPiArICAgICAgIHBy ZWRpY2F0ZSBMRU4gb3IgTUFTSyBpbnRvIExPQUQvU1RPUkUgb3BlcmF0aW9u cyBhbmQgb3RoZXIgc3BlY2lhbA0KPiArICAgICAgIGFyaXRobWV0aWMgb3Bl cmF0aW9ucyAoZS5kLiBESVYpLCB0aGVuIGRvIHRoZSB3aG9sZSB2ZWN0b3Ig cmVnaXN0ZXINCj4gKyAgICAgICBvcGVyYXRpb24gaWYgaXQgRE9OJ1QgYWZm ZWN0IHRoZSBjb3JyZWN0bmVzcy4NCj4gKyAgICAgICBTdWNoIGZsb3cgaXMg dXNlZCBieSBhbGwgb3RoZXIgdGFyZ2V0cyBsaWtlIHg4Niwgc3ZlLCBzMzkw LCAuLi4gZXRjLg0KPiArICAgICAtIFBMVVNfRVhQUiBoYXMgYmV0dGVyIGdp bXBsZSBvcHRpbWl6YXRpb25zIHRoYW4gQ09ORF9MRU5fQURELg0KPiArDQo+ ICsgICBXZSBwcm9wYWdhdGUgQVZMIGZyb20gTk9OLVZMTUFYIHRvIFZMTUFY IGZvciBnaW1wbGUgSVIgbGlrZSBQTFVTX0VYUFIgd2hpY2gNCj4gKyAgIGdl bmVyYXRlcyB0aGUgVkxNQVggaW5zdHJ1Y3Rpb24gZHVlIHRvIG1pc3NlZCBM RU4gaW5mb3JtYXRpb24uIFRoZSBsYXRlcg0KPiArICAgVlNFVFZMIFBBU1Mg d2lsbCBlbGlkZWQgdGhlIHJlZHVuZGFudCB2c2V0dmxzLg0KPiArKi8NCj4g Kw0KPiArcnR4DQo+ICtwYXNzX2F2bHByb3A6OmdldF92bG1heF90YV9wcmVm ZXJyZWRfYXZsIChpbnNuX2luZm8gKmluc24pIGNvbnN0DQo+ICt7DQo+ICsg IGludCBzZXcgPSBnZXRfc2V3IChpbnNuLT5ydGwgKCkpOw0KPiArICBlbnVt IHZsbXVsX3R5cGUgdmxtdWwgPSBnZXRfdmxtdWwgKGluc24tPnJ0bCAoKSk7 DQo+ICsgIGludCByYXRpbyA9IGNhbGN1bGF0ZV9yYXRpbyAoc2V3LCB2bG11 bCk7DQo+ICsNCj4gKyAgcnR4IHVzZV9hdmwgPSBOVUxMX1JUWDsNCj4gKyAg Zm9yIChkZWZfaW5mbyAqZGVmIDogaW5zbi0+ZGVmcyAoKSkNCj4gKyAgICB7 DQo+ICsgICAgICBpZiAoIWlzX2E8c2V0X2luZm8gKj4gKGRlZikgfHwgZGVm LT5pc19tZW0gKCkpDQo+ICsgICAgICAgcmV0dXJuIE5VTExfUlRYOw0KPiAr ICAgICAgY29uc3QgYXV0byAqc2V0ID0gZHluX2Nhc3Q8c2V0X2luZm8gKj4g KGRlZik7DQo+ICsNCj4gKyAgICAgIC8qIEZJWE1FOiBTdG9wIEFWTCBwcm9w YWdhdGlvbiBpZiBhbnkgVVNFIGlzIG5vdCBhIFJWViByZWFsDQo+ICsgICAg ICAgIGluc3RydWN0aW9uLiBJdCBzaG91bGQgYmUgdG90YWxseSBlbm91Z2gg Zm9yIHZlY3Rvcml6ZWQgY29kZXMgc2luY2UNCj4gKyAgICAgICAgdGhleSBh bHdheXMgbG9jYXRlIGF0IGV4dGVuZGVkIGJsb2Nrcy4NCj4gKw0KPiArICAg ICAgICBUT0RPOiBXZSBjYW4gZXh0ZW5kIFBISSBjaGVja2luZyBmb3IgaW50 cmluc2ljIGNvZGVzIGlmIGl0DQo+ICsgICAgICAgIG5lY2Vzc2FyeSBpbiB0 aGUgZnV0dXJlLiAgKi8NCj4gKyAgICAgIGlmICghc2V0LT5pc19sb2NhbF90 b19lYmIgKCkpDQo+ICsgICAgICAgcmV0dXJuIE5VTExfUlRYOw0KPiArDQo+ ICsgICAgICBmb3IgKHVzZV9pbmZvICp1c2UgOiBzZXQtPm5vbmRlYnVnX2lu c25fdXNlcyAoKSkNCj4gKyAgICAgICB7DQo+ICsgICAgICAgICBpbnNuX2lu Zm8gKnVzZV9pbnNuID0gdXNlLT5pbnNuICgpOw0KPiArICAgICAgICAgaWYg KCF1c2VfaW5zbi0+Y2FuX2JlX29wdGltaXplZCAoKSB8fCB1c2VfaW5zbi0+ aXNfYXNtICgpDQo+ICsgICAgICAgICAgICAgfHwgdXNlX2luc24tPmlzX2Nh bGwgKCkgfHwgdXNlX2luc24tPmhhc192b2xhdGlsZV9yZWZzICgpDQo+ICsg ICAgICAgICAgICAgfHwgdXNlX2luc24tPmhhc19wcmVfcG9zdF9tb2RpZnkg KCkNCj4gKyAgICAgICAgICAgICB8fCAhaGFzX3ZsX29wICh1c2VfaW5zbi0+ cnRsICgpKQ0KPiArICAgICAgICAgICAgIHx8ICF0YWlsX2Fnbm9zdGljX3Ag KHVzZV9pbnNuLT5ydGwgKCkpKQ0KPiArICAgICAgICAgICByZXR1cm4gTlVM TF9SVFg7DQo+ICsNCj4gKyAgICAgICAgIGludCBuZXdfc2V3ID0gZ2V0X3Nl dyAodXNlX2luc24tPnJ0bCAoKSk7DQo+ICsgICAgICAgICBlbnVtIHZsbXVs X3R5cGUgbmV3X3ZsbXVsID0gZ2V0X3ZsbXVsICh1c2VfaW5zbi0+cnRsICgp KTsNCj4gKyAgICAgICAgIGludCBuZXdfcmF0aW8gPSBjYWxjdWxhdGVfcmF0 aW8gKG5ld19zZXcsIG5ld192bG11bCk7DQo+ICsgICAgICAgICBpZiAobmV3 X3JhdGlvICE9IHJhdGlvKQ0KPiArICAgICAgICAgICByZXR1cm4gTlVMTF9S VFg7DQo+ICsNCj4gKyAgICAgICAgIHJ0eCBuZXdfdXNlX2F2bCA9IGdldF9u b252bG1heF9hdmwgKHVzZV9pbnNuKTsNCj4gKyAgICAgICAgIGlmICghbmV3 X3VzZV9hdmwgfHwgU1VCUkVHX1AgKG5ld191c2VfYXZsKSkNCj4gKyAgICAg ICAgICAgcmV0dXJuIE5VTExfUlRYOw0KPiArICAgICAgICAgaWYgKFJFR19Q IChuZXdfdXNlX2F2bCkpDQo+ICsgICAgICAgICAgIHsNCj4gKyAgICAgICAg ICAgICByZXNvdXJjZV9pbmZvIHJlc291cmNlID0gZnVsbF9yZWdpc3RlciAo UkVHTk8gKG5ld191c2VfYXZsKSk7DQo+ICsgICAgICAgICAgICAgZGVmX2xv b2t1cCBkbCA9IGNydGwtPnNzYS0+ZmluZF9kZWYgKHJlc291cmNlLCB1c2Vf aW5zbik7DQo+ICsgICAgICAgICAgICAgaWYgKGRsLm1hdGNoaW5nX3NldCAo KSkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBOVUxMX1JUWDsNCj4gKyAg ICAgICAgICAgICBkZWZfaW5mbyAqZGVmMSA9IGRsLnByZXZfZGVmIChpbnNu KTsNCj4gKyAgICAgICAgICAgICBkZWZfaW5mbyAqZGVmMiA9IGRsLnByZXZf ZGVmICh1c2VfaW5zbik7DQo+ICsgICAgICAgICAgICAgaWYgKCFkZWYxIHx8 ICFkZWYyIHx8IGRlZjEgIT0gZGVmMikNCj4gKyAgICAgICAgICAgICAgIHJl dHVybiBOVUxMX1JUWDsNCj4gKw0KPiArICAgICAgICAgICAgIC8qIEZJWE1F OiBXZSBvbmx5IGFsbCBBVkwgcHJvcGF0aW9uIHdpdGhpbiBhIGJsb2NrIHdo aWNoIHNob3VsZA0KPiArICAgICAgICAgICAgICAgIGJlIHRvdGFsbHkgZW5v dWdoIGZvciB2ZWN0b3JpemVkIGNvZGVzLg0KPiArDQo+ICsgICAgICAgICAg ICAgICAgVE9ETzogV2UgY2FuIGVuaGFuY2UgaXQgaGVyZSBmb3IgaW50cmlu c2ljIGNvZGVzIGluIHRoZSBmdXR1cmUNCj4gKyAgICAgICAgICAgICAgICBp ZiBpdCBpcyBuZWNlc3NhcnkuICAqLw0KPiArICAgICAgICAgICAgIGlmIChk ZWYxLT5pbnNuICgpLT5iYiAoKSAhPSBpbnNuLT5iYiAoKQ0KPiArICAgICAg ICAgICAgICAgICAmJiAhZG9taW5hdGVkX2J5X3AgKENESV9ET01JTkFUT1JT LCBpbnNuLT5iYiAoKS0+Y2ZnX2JiICgpLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlZjEtPmluc24gKCktPmJiICgpLT5j ZmdfYmIgKCkpKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIE5VTExfUlRY Ow0KPiArICAgICAgICAgICAgIGlmIChkZWYxLT5pbnNuICgpLT5iYiAoKSA9 PSBpbnNuLT5iYiAoKQ0KPiArICAgICAgICAgICAgICAgICAmJiBkZWYxLT5p bnNuICgpLT5jb21wYXJlX3dpdGggKGluc24pID49IDApDQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gTlVMTF9SVFg7DQo+ICsgICAgICAgICAgIH0NCj4g Kw0KPiArICAgICAgICAgaWYgKCF1c2VfYXZsKQ0KPiArICAgICAgICAgICB1 c2VfYXZsID0gbmV3X3VzZV9hdmw7DQo+ICsgICAgICAgICBlbHNlIGlmICgh cnR4X2VxdWFsX3AgKHVzZV9hdmwsIG5ld191c2VfYXZsKSkNCj4gKyAgICAg ICAgICAgcmV0dXJuIE5VTExfUlRYOw0KPiArICAgICAgIH0NCj4gKyAgICB9 DQo+ICsNCj4gKyAgcmV0dXJuIHVzZV9hdmw7DQo+ICt9DQo+ICsNCj4gKy8q IFRyeSB0byBnZXQgdGhlIE5PTlZMTUFYIEFWTCBvZiB0aGUgSU5TTi4NCj4g KyAgIElOU04gY2FuIGJlIGVpdGhlciBOT04tVkxNQVggQVZMIGl0c2VsZiBv ciBWTE1BWCBBVkwgSU5TTg0KPiArICAgYmVmb3JlIHRoZSBQQVNTIGJ1dCBo YXMgYmVlbiBwcm9wYWdhdGVkIGEgTk9OLVZMTUFYIEFWTA0KPiArICAgaW4g dGhlIGJlZm9yZSByb3VuZCBwcm9wYWdhdGlvbi4gICovDQo+ICtydHgNCj4g K3Bhc3NfYXZscHJvcDo6Z2V0X25vbnZsbWF4X2F2bCAoaW5zbl9pbmZvICpp bnNuKSBjb25zdA0KPiArew0KPiArICBpZiAobV9hdmxfcHJvcGFnYXRpb25z LT5nZXQgKGluc24pKQ0KPiArICAgIHJldHVybiAoKm1fYXZsX3Byb3BhZ2F0 aW9ucy0+Z2V0IChpbnNuKSk7DQo+ICsgIGVsc2UgaWYgKG5vbnZsbWF4X2F2 bF90eXBlX3AgKGluc24tPnJ0bCAoKSkpDQo+ICsgICAgew0KPiArICAgICAg ZXh0cmFjdF9pbnNuX2NhY2hlZCAoaW5zbi0+cnRsICgpKTsNCj4gKyAgICAg IHJldHVybiByZWNvZ19kYXRhLm9wZXJhbmRbZ2V0X2F0dHJfdmxfb3BfaWR4 IChpbnNuLT5ydGwgKCkpXTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgcmV0dXJu IE5VTExfUlRYOw0KPiArfQ0KPiArDQo+ICsvKiBNYWluIGVudHJ5IHBvaW50 IGZvciB0aGlzIHBhc3MuICAqLw0KPiArdW5zaWduZWQgaW50DQo+ICtwYXNz X2F2bHByb3A6OmV4ZWN1dGUgKGZ1bmN0aW9uICpmbikNCj4gK3sNCj4gKyAg YXZscHJvcF9pbml0IChmbik7DQo+ICsNCj4gKyAgLyogSXRlcmF0ZSB0aGUg d2hvbGUgZnVuY3Rpb24gaW4gcmV2ZXJzZSBvcmRlciAod2hpY2ggY291bGQg c3BlZWQgdGhlDQo+ICsgICAgIGNvbnZlcmdlbmNlKSB0byBjb2xsZWN0IGFs bCBwb3RlbnRpYWwgY2FuZGlkYXRlcyB0aGF0IGNvdWxkIGJlIEFWTA0KPiAr ICAgICBwcm9wYWdhdGVkLg0KPiArDQo+ICsgICAgIE5vdGUgdGhhdDogKipO T1QqKiBhbGwgdGhlIGNhbmRpZGF0ZXMgd2lsbCBiZSBzdWNjZXNzZnVsbHkg QVZMIHByb3BhZ2F0ZWQuDQo+ICsgICovDQo+ICsgIGZvciAoYmJfaW5mbyAq YmIgOiBjcnRsLT5zc2EtPnJldmVyc2VfYmJzICgpKQ0KPiArICAgIHsNCj4g KyAgICAgIGZvciAoaW5zbl9pbmZvICppbnNuIDogYmItPnJldmVyc2VfcmVh bF9ub25kZWJ1Z19pbnNucyAoKSkNCj4gKyAgICAgICB7DQo+ICsgICAgICAg ICAvKiBXZSBvbmx5IGZvcndhcmQgQVZMIHRvIHRoZSBpbnN0cnVjdGlvbiB0 aGF0IGhhcyBBVkwvVkwgb3BlcmFuZA0KPiArICAgICAgICAgICAgYW5kIGNh biBiZSBvcHRpbWl6ZWQgaW4gUlRMX1NTQSBsZXZlbC4gICovDQo+ICsgICAg ICAgICBpZiAoIWluc24tPmNhbl9iZV9vcHRpbWl6ZWQgKCkgfHwgIWhhc192 bF9vcCAoaW5zbi0+cnRsICgpKSkNCj4gKyAgICAgICAgICAgY29udGludWU7 DQo+ICsNCj4gKyAgICAgICAgIC8qIFRPRE86IFdlIG9ubHkgZG8gQVZMIHBy b3BhZ2F0aW9uIGZvciBWTE1BWCBBVkwgd2l0aCB0YWlsDQo+ICsgICAgICAg ICAgICBhZ25vc3RpYyBwb2xpY3kgc2luY2Ugd2UgaGF2ZSBtaXNzZWQtTEVO IGluZm9ybWF0aW9uIHBhcnRpYWwNCj4gKyAgICAgICAgICAgIGF1dG92ZWN0 b3JpemF0aW9uLiAgV2UgY291bGQgYWRkIG1vcmUgbW9yZSBBVkwgcHJvcGFn YXRpb24NCj4gKyAgICAgICAgICAgIGZvciBpbnRyaW5zaWMgY29kZXMgaW4g dGhlIGZ1dHVyZS4gICovDQo+ICsgICAgICAgICBpZiAodmxtYXhfdGFfcCAo aW5zbi0+cnRsICgpKSkNCj4gKyAgICAgICAgICAgbV9jYW5kaWRhdGVzLnNh ZmVfcHVzaCAoc3RkOjptYWtlX3BhaXIgKEFWTFBST1BfVkxNQVhfVEEsIGlu c24pKTsNCj4gKyAgICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsgIGlmIChk dW1wX2ZpbGUgJiYgKGR1bXBfZmxhZ3MgJiBUREZfREVUQUlMUykpDQo+ICsg ICAgew0KPiArICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiXG5OdW1iZXIg b2YgcG90ZW50aWFsIEFWTCBwcm9wYWdhdGlvbnM6ICVkXG4iLA0KPiArICAg ICAgICAgICAgICBtX2NhbmRpZGF0ZXMubGVuZ3RoICgpKTsNCj4gKyAgICAg IGZvciAoY29uc3QgYXV0byBjYW5kaWRhdGUgOiBtX2NhbmRpZGF0ZXMpDQo+ ICsgICAgICAgew0KPiArICAgICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAi XG5BVkwgcHJvcGFnYXRpb24gdHlwZTogJXNcbiIsDQo+ICsgICAgICAgICAg ICAgICAgICBhdmxwcm9wX3R5cGVfdG9fc3RyIChjYW5kaWRhdGUuZmlyc3Qp KTsNCj4gKyAgICAgICAgIHByaW50X3J0bF9zaW5nbGUgKGR1bXBfZmlsZSwg Y2FuZGlkYXRlLnNlY29uZC0+cnRsICgpKTsNCj4gKyAgICAgICB9DQo+ICsg ICAgfQ0KPiArDQo+ICsgIC8qIEdvIHRocm91Z2ggYWxsIHRoZSBjYW5kaWRh dGVzIGxvb2tpbmcgZm9yIEFWTCB0aGF0IHdlIGNvdWxkIHByb3BhZ2F0ZS4g Ki8NCj4gKyAgYm9vbCBjaGFuZ2VfcCA9IHRydWU7DQo+ICsgIHdoaWxlIChj aGFuZ2VfcCkNCj4gKyAgICB7DQo+ICsgICAgICBjaGFuZ2VfcCA9IGZhbHNl Ow0KPiArICAgICAgZm9yIChhdXRvICZjYW5kaWRhdGUgOiBtX2NhbmRpZGF0 ZXMpDQo+ICsgICAgICAgew0KPiArICAgICAgICAgcnR4IG5ld19hdmwgPSBn ZXRfcHJlZmVycmVkX2F2bCAoY2FuZGlkYXRlKTsNCj4gKyAgICAgICAgIGlm IChuZXdfYXZsKQ0KPiArICAgICAgICAgICB7DQo+ICsgICAgICAgICAgICAg Z2NjX2Fzc2VydCAoIXZsbWF4X2F2bF9wIChuZXdfYXZsKSk7DQo+ICsgICAg ICAgICAgICAgYXV0byAmdXBkYXRlDQo+ICsgICAgICAgICAgICAgICA9IG1f YXZsX3Byb3BhZ2F0aW9ucy0+Z2V0X29yX2luc2VydCAoY2FuZGlkYXRlLnNl Y29uZCk7DQo+ICsgICAgICAgICAgICAgY2hhbmdlX3AgPSAhcnR4X2VxdWFs X3AgKHVwZGF0ZSwgbmV3X2F2bCk7DQo+ICsgICAgICAgICAgICAgdXBkYXRl ID0gbmV3X2F2bDsNCj4gKyAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4g KyAgICB9DQo+ICsNCj4gKyAgaWYgKGR1bXBfZmlsZSAmJiAoZHVtcF9mbGFn cyAmIFRERl9ERVRBSUxTKSkNCj4gKyAgICBmcHJpbnRmIChkdW1wX2ZpbGUs ICJcbk51bWJlciBvZiBzdWNjZXNzZnVsIEFWTCBwcm9wYWdhdGlvbnM6ICVk XG5cbiIsDQo+ICsgICAgICAgICAgICAoaW50KSBtX2F2bF9wcm9wYWdhdGlv bnMtPmVsZW1lbnRzICgpKTsNCj4gKw0KPiArICBmb3IgKGNvbnN0IGF1dG8g cHJvcCA6ICptX2F2bF9wcm9wYWdhdGlvbnMpDQo+ICsgICAgew0KPiArICAg ICAgcnR4X2luc24gKnJpbnNuID0gcHJvcC5maXJzdC0+cnRsICgpOw0KPiAr ICAgICAgaWYgKGR1bXBfZmlsZSAmJiAoZHVtcF9mbGFncyAmIFRERl9ERVRB SUxTKSkNCj4gKyAgICAgICB7DQo+ICsgICAgICAgICBmcHJpbnRmIChkdW1w X2ZpbGUsICJcblByb3BhZ2F0aW5nIEFWTDogIik7DQo+ICsgICAgICAgICBw cmludF9ydGxfc2luZ2xlIChkdW1wX2ZpbGUsIHByb3Auc2Vjb25kKTsNCj4g KyAgICAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwgImludG86ICIpOw0KPiAr ICAgICAgICAgcHJpbnRfcnRsX3NpbmdsZSAoZHVtcF9maWxlLCByaW5zbik7 DQo+ICsgICAgICAgfQ0KPiArICAgICAgLyogUmVwbGFjZSBBVkwgb3BlcmFu ZC4gICovDQo+ICsgICAgICBleHRyYWN0X2luc25fY2FjaGVkIChyaW5zbik7 DQo+ICsgICAgICBydHggYXZsID0gcmVjb2dfZGF0YS5vcGVyYW5kW2dldF9h dHRyX3ZsX29wX2lkeCAocmluc24pXTsNCj4gKyAgICAgIGludCBjb3VudCA9 IGNvdW50X3JlZ25vX29jY3VycmVuY2VzIChyaW5zbiwgUkVHTk8gKGF2bCkp Ow0KPiArICAgICAgZ2NjX2Fzc2VydCAoY291bnQgPT0gMSk7DQo+ICsgICAg ICBydHggbmV3X3BhdCA9IHNpbXBsaWZ5X3JlcGxhY2VfcnR4IChQQVRURVJO IChyaW5zbiksIGF2bCwgcHJvcC5zZWNvbmQpOw0KPiArICAgICAgdmFsaWRh dGVfY2hhbmdlX29yX2ZhaWwgKHJpbnNuLCAmUEFUVEVSTiAocmluc24pLCBu ZXdfcGF0LCBmYWxzZSk7DQo+ICsNCj4gKyAgICAgIC8qIENoYW5nZSBBVkwg VFlQRSBpbnRvIE5PTlZMTUFYIGlmIGl0IGlzIFZMTUFYLiAgKi8NCj4gKyAg ICAgIGlmICh2bG1heF9hdmxfdHlwZV9wIChyaW5zbikpDQo+ICsgICAgICAg ew0KPiArICAgICAgICAgaW50IGluZGV4ID0gZ2V0X2F0dHJfYXZsX3R5cGVf aWR4IChyaW5zbik7DQo+ICsgICAgICAgICBnY2NfYXNzZXJ0IChpbmRleCAh PSBJTlZBTElEX0FUVFJJQlVURSk7DQo+ICsgICAgICAgICB2YWxpZGF0ZV9j aGFuZ2Vfb3JfZmFpbCAocmluc24sIHJlY29nX2RhdGEub3BlcmFuZF9sb2Nb aW5kZXhdLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdldF9hdmxfdHlwZV9ydHggKGF2bF90eXBlOjpOT05WTE1BWCksDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOw0KPiAr ICAgICAgIH0NCj4gKyAgICAgIGlmIChkdW1wX2ZpbGUgJiYgKGR1bXBfZmxh Z3MgJiBUREZfREVUQUlMUykpDQo+ICsgICAgICAgew0KPiArICAgICAgICAg ZnByaW50ZiAoZHVtcF9maWxlLCAiU3VjY2Vzc2Z1bGx5IHRvIG1hdGNoIHRo aXMgaW5zdHJ1Y3Rpb246ICIpOw0KPiArICAgICAgICAgcHJpbnRfcnRsX3Np bmdsZSAoZHVtcF9maWxlLCByaW5zbik7DQo+ICsgICAgICAgfQ0KPiArICAg IH0NCj4gKw0KPiArICBhdmxwcm9wX2RvbmUgKCk7DQo+ICsgIHJldHVybiAw Ow0KPiArfQ0KPiArDQo+ICtydGxfb3B0X3Bhc3MgKg0KPiArbWFrZV9wYXNz X2F2bHByb3AgKGdjYzo6Y29udGV4dCAqY3R4dCkNCj4gK3sNCj4gKyAgcmV0 dXJuIG5ldyBwYXNzX2F2bHByb3AgKGN0eHQpOw0KPiArfQ0KPiBkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wYXNzZXMuZGVmIGIvZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi1wYXNzZXMuZGVmDQo+IGluZGV4IDQwODQx MjJjZjBhLi5iNjI2MDkzOWQ1YyAxMDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi1wYXNzZXMuZGVmDQo+ICsrKyBiL2djYy9jb25maWcv cmlzY3YvcmlzY3YtcGFzc2VzLmRlZg0KPiBAQCAtMTgsNCArMTgsNSBAQA0K PiAgICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCj4N Cj4gIElOU0VSVF9QQVNTX0FGVEVSIChwYXNzX3J0bF9zdG9yZV9tb3Rpb24s IDEsIHBhc3Nfc2hvcnRlbl9tZW1yZWZzKTsNCj4gK0lOU0VSVF9QQVNTX0FG VEVSIChwYXNzX3NwbGl0X2FsbF9pbnNucywgMSwgcGFzc19hdmxwcm9wKTsN Cj4gIElOU0VSVF9QQVNTX0JFRk9SRSAocGFzc19mYXN0X3J0bF9kY2UsIDEs IHBhc3NfdnNldHZsKTsNCj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlz Y3YvcmlzY3YtcHJvdG9zLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXBy b3Rvcy5oDQo+IGluZGV4IDY2OGQ3NTA0M2NhLi5kNGUxN2ZjM2ZkMCAxMDA2 NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaA0K PiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oDQo+IEBA IC0xNTYsNiArMTU2LDcgQEAgZXh0ZXJuIHZvaWQgcmlzY3ZfcGFyc2VfYXJj aF9zdHJpbmcgKGNvbnN0IGNoYXIgKiwgc3RydWN0IGdjY19vcHRpb25zICos IGxvY2F0aW8NCj4gIGV4dGVybiBib29sIHJpc2N2X2hhcmRfcmVnbm9fcmVu YW1lX29rICh1bnNpZ25lZCwgdW5zaWduZWQpOw0KPg0KPiAgcnRsX29wdF9w YXNzICogbWFrZV9wYXNzX3Nob3J0ZW5fbWVtcmVmcyAoZ2NjOjpjb250ZXh0 ICpjdHh0KTsNCj4gK3J0bF9vcHRfcGFzcyAqIG1ha2VfcGFzc19hdmxwcm9w IChnY2M6OmNvbnRleHQgKmN0eHQpOw0KPiAgcnRsX29wdF9wYXNzICogbWFr ZV9wYXNzX3ZzZXR2bCAoZ2NjOjpjb250ZXh0ICpjdHh0KTsNCj4NCj4gIC8q IFJvdXRpbmVzIGltcGxlbWVudGVkIGluIHJpc2N2LXN0cmluZy5jLiAgKi8N Cj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvdC1yaXNjdiBiL2dj Yy9jb25maWcvcmlzY3YvdC1yaXNjdg0KPiBpbmRleCBkZDE3MDU2ZmU4Mi4u ZjhjYTNmNGFjNTcgMTAwNjQ0DQo+IC0tLSBhL2djYy9jb25maWcvcmlzY3Yv dC1yaXNjdg0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YNCj4g QEAgLTc4LDYgKzc4LDEyIEBAIHJpc2N2LXZlY3Rvci1jb3N0cy5vOiAkKHNy Y2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1jb3N0cy5jYyBcDQo+ ICAgICAgICAgJChDT01QSUxFUikgLWMgJChBTExfQ09NUElMRVJGTEFHUykg JChBTExfQ1BQRkxBR1MpICQoSU5DTFVERVMpIFwNCj4gICAgICAgICAgICAg ICAgICQoc3JjZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWNvc3Rz LmNjDQo+DQo+ICtyaXNjdi1hdmxwcm9wLm86ICQoc3JjZGlyKS9jb25maWcv cmlzY3YvcmlzY3YtYXZscHJvcC5jYyBcDQo+ICsgICQoQ09ORklHX0gpICQo U1lTVEVNX0gpIGNvcmV0eXBlcy5oICQoVE1fSCkgJChSVExfSCkgJChSRUdT X0gpIFwNCj4gKyAgJChUQVJHRVRfSCkgdHJlZS1wYXNzLmggZGYuaCBydGwt c3NhLmggY2ZnY2xlYW51cC5oIGluc24tYXR0ci5oDQo+ICsgICAgICAgJChD T01QSUxFUikgLWMgJChBTExfQ09NUElMRVJGTEFHUykgJChBTExfQ1BQRkxB R1MpICQoSU5DTFVERVMpIFwNCj4gKyAgICAgICAgICAgICAgICQoc3JjZGly KS9jb25maWcvcmlzY3YvcmlzY3YtYXZscHJvcC5jYw0KPiArDQo+ICByaXNj di1kLm86ICQoc3JjZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtZC5jYyBcDQo+ ICAgICQoQ09ORklHX0gpICQoU1lTVEVNX0gpIGNvcmV0eXBlcy5oICQoVE1f SCkNCj4gICAgICAgICAkKENPTVBJTEUpICQ8DQo+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zZWxlY3RfdmwtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2VsZWN0X3ZsLTIuYw0KPiBp bmRleCBlYWM3Y2JjNzU3Yi4uY2E4OGQ0MmNkZjQgMTAwNjQ0DQo+IC0tLSBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9w YXJ0aWFsL3NlbGVjdF92bC0yLmMNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2VsZWN0X3Zs LTIuYw0KPiBAQCAtNywxMCArNywxMSBAQA0KPiAgLyoNCj4gICoqIGZvbzoN Cj4gICoqICAgICB2c2V0aXZsaVx0W2EteDAtOV0rLFxzKjgsXHMqZSg4P3wx Nj98MzI/fDY0KSxccyptKDE/fDI/fDQ/fDg/fGYyP3xmND98ZjgpLFxzKnRb YXVdLFxzKm1bYXVdDQo+ICsqKiAgICAgLi4uDQo+ICAqKiAgICAgdmxlMzJc LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCj4gICoqICAgICAuLi4NCj4g LSoqICAgICB2c2V0dmxpXHRbYS14MC05XSssXHMqW2EteDAtOV0rLFxzKmUo OD98MTY/fDMyP3w2NCksXHMqbSgxP3wyP3w0P3w4P3xmMj98ZjQ/fGY4KSxc cyp0W2F1XSxccyptW2F1XQ0KPiAtKiogICAgIGFkZFx0W2EteDAtOV0rLFth LXgwLTldKyxbYS14MC05XSsNCj4gKyoqICAgICB2c2V0dmxpXHR6ZXJvLFxz KlthLXgwLTldKyxccyplKDg/fDE2P3wzMj98NjQpLFxzKm0oMT98Mj98ND98 OD98ZjI/fGY0P3xmOCksXHMqdFthdV0sXHMqbVthdV0NCj4gKyoqICAgICAu Li4NCj4gICoqICAgICB2bGUzMlwudlx0dlswLTldKywwXChbYS14MC05XStc KQ0KPiAgKiogICAgIC4uLg0KPiAgKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wcjExMTMx OC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3ByMTExMzE4LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMDAuLmZmMzZkYThmZWViDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL3ByMTExMzE4LmMNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArLyog eyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLW1h cmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQgLU8zIC1mbm8tdmVjdC1jb3N0LW1v ZGVsIiB9ICovDQo+ICsNCj4gK3ZvaWQNCj4gK2ZvbyAoaW50ICpfX3Jlc3Ry aWN0IGEsIGludCAqX19yZXN0cmljdCBiLCBpbnQgKl9fcmVzdHJpY3QgYywg aW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSAr PSAxKQ0KPiArICAgIGNbaV0gPSBhW2ldICsgYltpXTsNCj4gK30NCj4gKw0K PiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2c2V0 dmxpfSAxIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCB7dnNldGl2bGl9IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2c2V0dmxpXHMqW2EteDAtOV0rLFxz KlthLXgwLTldK30gMSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3Qge3ZzZXR2bGlccypbYS14MC05XSssXHMqemVyb30g fSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 IHt2c2V0dmxpXHMqemVyb30gfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90IHt2c2V0aXZsaVxzKnplcm99IH0gfSAqLw0K PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3ByMTExODg4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcHIxMTE4ODguYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uMjM4N2MyMGEy NmMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcHIxMTE4ODguYw0KPiBAQCAt MCwwICsxLDMzIEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiAr LyogeyBkZy1vcHRpb25zICItbWFyY2g9cnY2NGdjdiAtbWFiaT1scDY0ZCAt TzMgLWZuby12ZWN0LWNvc3QtbW9kZWwiIH0gKi8NCj4gKw0KPiArdm9pZA0K PiArZm9vIChpbnQgKl9fcmVzdHJpY3QgYSwgaW50ICpfX3Jlc3RyaWN0IGIs IGludCAqX19yZXN0cmljdCBjLA0KPiArICAgICBpbnQgKl9fcmVzdHJpY3Qg YTIsIGludCAqX19yZXN0cmljdCBiMiwgaW50ICpfX3Jlc3RyaWN0IGMyLA0K PiArICAgICBpbnQgKl9fcmVzdHJpY3QgYTMsIGludCAqX19yZXN0cmljdCBi MywgaW50ICpfX3Jlc3RyaWN0IGMzLA0KPiArICAgICBpbnQgKl9fcmVzdHJp Y3QgYTQsIGludCAqX19yZXN0cmljdCBiNCwgaW50ICpfX3Jlc3RyaWN0IGM0 LA0KPiArICAgICBpbnQgKl9fcmVzdHJpY3QgYTUsIGludCAqX19yZXN0cmlj dCBiNSwgaW50ICpfX3Jlc3RyaWN0IGM1LA0KPiArICAgICBpbnQgKl9fcmVz dHJpY3QgZCwgaW50ICpfX3Jlc3RyaWN0IGQyLCBpbnQgKl9fcmVzdHJpY3Qg ZDMsDQo+ICsgICAgIGludCAqX19yZXN0cmljdCBkNCwgaW50ICpfX3Jlc3Ry aWN0IGQ1LCBpbnQgbiwgaW50IG0pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkg PSAwOyBpIDwgbjsgaSsrKQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaV0gPSBi W2ldICsgY1tpXTsNCj4gKyAgICAgIGEyW2ldID0gYjJbaV0gKyBjMltpXTsN Cj4gKyAgICAgIGEzW2ldID0gYjNbaV0gKyBjM1tpXTsNCj4gKyAgICAgIGE0 W2ldID0gYjRbaV0gKyBjNFtpXTsNCj4gKyAgICAgIGE1W2ldID0gYVtpXSAr IGE0W2ldOw0KPiArICAgICAgZFtpXSA9IGFbaV0gLSBhMltpXTsNCj4gKyAg ICAgIGQyW2ldID0gYTJbaV0gKiBhW2ldOw0KPiArICAgICAgZDNbaV0gPSBh M1tpXSAqIGEyW2ldOw0KPiArICAgICAgZDRbaV0gPSBhMltpXSAqIGQyW2ld Ow0KPiArICAgICAgZDVbaV0gPSBhW2ldICogYTJbaV0gKiBhM1tpXSAqIGE0 W2ldICogZFtpXTsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dnNldHZsaX0gMSB9IH0g Ki8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3Zz ZXRpdmxpfSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyB7dnNldHZsaVxzKlthLXgwLTldKyxccypbYS14MC05XSt9 IDEgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt bm90IHt2c2V0dmxpXHMqW2EteDAtOV0rLFxzKnplcm99IH0gfSAqLw0KPiAr LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7dnNldHZsaVxz Knplcm99IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCB7dnNldGl2bGlccyp6ZXJvfSB9IH0gKi8NCj4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3Zl Yy90ZXJub3AvdGVybm9wX25vZm0tMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Rlcm5vcC90ZXJub3Bfbm9mbS0y LmMNCj4gaW5kZXggOTY1MzY1ZGE0YmIuLjEzMzY3NDIzNzUxIDEwMDY0NA0K PiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvdGVybm9wL3Rlcm5vcF9ub2ZtLTIuYw0KPiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdGVybm9wL3Rl cm5vcF9ub2ZtLTIuYw0KPiBAQCAtMyw3ICszLDYgQEANCj4NCj4gICNpbmNs dWRlICJ0ZXJub3AtMi5jIg0KPg0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzIHtcdHZtYWNjXC52dn0gOCB9IH0gKi8NCj4gIC8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHR2Zm1hW2Mt ZF1bYy1kXVwudnZ9IDkgfSB9ICovDQo+ICAvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgIkNPTkRfTEVOX0ZNQSIgOSAib3B0aW1pemVk IiB9IH0gKi8NCj4gIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3Qge1x0dm12fSB9IH0gKi8NCj4gLS0NCj4gMi4zNi4zDQo+DQogDQo= ------=_001_NextPart553361283432_=------