From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by sourceware.org (Postfix) with ESMTPS id 0B663385840F for ; Wed, 12 Apr 2023 09:20:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0B663385840F 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: bizesmtp84t1681291203tbk4y9g8 Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 12 Apr 2023 17:20:01 +0800 (CST) X-QQ-SSF: 01400000000000F0O000000A0000000 X-QQ-FEAT: jZjPcLZVW7Rp8OAuKvtTJrzIKvfk1oJ7bCfdNEuGtacnmDupmfv0LLM9WrECC /K/PjwB/wrmfut/wI1NB27ejZOA8s42TpqK9/bU02y4ztw6XS/zFv2qtq4G7xIzzONvESXh cl9lXYXkQcaXJfeNaZ8Q5pmS5NPTMKl+HCAnR6gLDYVT/XmMqnvRpShZAQwb7H9KYjBZloR 3DK/o1V/XJn19EE4WALEnXLwpVUEue37uAElXYSmYnRSKfgebv+mvt+sxeFehKubPqXfMTY +S9c01kr2yW+slVfEPw7o0mPP5N8YyBsjgq6cotCMyws1cZ401UNz9blfXEamxz9VlA3g7j ap3AuUvqZy8vJRXSyDI6TTbqr/bgcJjQxZ60OgpG2v2Ec+W4k4XKWz5/0tp6QmPXT3wkqSg CMYzVQz0yhp9qF1zhG4A79kJH9JW+wKwCQgREISPsvg= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 14712206773279468687 Date: Wed, 12 Apr 2023 17:20:02 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: richard.sandiford , gcc-patches , jeffreyalaw Subject: Re: Re: [PATCH] VECT: Add WHILE_LEN pattern for decrement IV support for auto-vectorization References: <20230407014741.139387-1-juzhe.zhong@rivai.ai>, <63723855B0BF2130+2023041120125573846623@rivai.ai>, , , <139DA38AFC9CA5B5+2023041216004591287739@rivai.ai>, , <2023041217154958074655@rivai.ai> X-Priority: 3 X-GUID: 1E5E4EF7-9252-45A6-85BC-545A7483ED41 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart136064087480_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-9.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_WEB,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID 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_NextPart136064087480_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 U29ycnkgZm9yIGluY29ycmVjdCB0eXBvLldlIGNhbiBwcmVkaWNhdGUgdmFk ZC52diB3aXRoIHYxIC0gdjMxLg0KPT09PT4NCldlIGNhbid0IHByZWRpY2F0 ZSB2YWRkLnZ2IHdpdGggdjEgLSB2MzEuDQoNCg0KanV6aGUuemhvbmdAcml2 YWkuYWkNCiANCkZyb206IGp1emhlLnpob25nQHJpdmFpLmFpDQpEYXRlOiAy MDIzLTA0LTEyIDE3OjE1DQpUbzogcmd1ZW50aGVyDQpDQzogcmljaGFyZC5z YW5kaWZvcmQ7IGdjYy1wYXRjaGVzOyBqZWZmcmV5YWxhdw0KU3ViamVjdDog UmU6IFJlOiBbUEFUQ0hdIFZFQ1Q6IEFkZCBXSElMRV9MRU4gcGF0dGVybiBm b3IgZGVjcmVtZW50IElWIHN1cHBvcnQgZm9yIGF1dG8tdmVjdG9yaXphdGlv bg0KDQo+PiBUaGFua3MgZm9yIHRoZSBkZXRhaWxlZCBleHBsYW5hdGlvbi4g IEp1c3QgdG8gY2xhcmlmeSAtIHdpdGggUlZWDQo+PiB0aGVyZSdzIG9ubHkg YSBzaW5nbGUgbWFzayByZWdpc3RlciwgdjAudCwgb3IgZGlkIHlvdSB3YW50 IHRvDQo+PiBzYXkgYW4gaW5zdHJ1Y3Rpb24gY2FuIG9ubHkgc3BlY2lmeSBh IHNpbmdsZSBtYXNrIHJlZ2lzdGVyPw0KDQpSVlYgaGFzIDMyICh2MH52MzEp IHZlY3RvciByZWdpc3RlciBpbiB0b3RhbC4NCldlIGNhbiBzdG9yZSB2ZWN0 b3IgZGF0YSB2YWx1ZSBvciBtYXNrIHZhbHVlIGluIGFueSBvZiB0aGVtLg0K V2UgYWxzbyBoYXZlIG1hc2stbG9naWMgaW5zdHJ1Y3Rpb24gZm9yIGV4YW1w bGUgbWFzay1hbmQgYmV0d2VlbiBhbnkgdmVjdG9yIHJlZ2lzdGVyLg0KDQpI b3dldmVyLCBhbnkgdmVjdG9yIG9wZXJhdGlvbiBmb3IgZXhhbXBsZSBsaWtl IHZhZGQudnYgY2FuIG9ubHkgIHByZWRpY2F0ZWQgYnkgdjAgKGluIGFzbSBp cyB2MC50KSB3aGljaCBpcyB0aGUgZmlyc3QgdmVjdG9yIHJlZ2lzdGVyLg0K V2UgY2FuIHByZWRpY2F0ZSB2YWRkLnZ2IHdpdGggdjEgLSB2MzEuDQoNClNv LCB5b3UgY2FuIGltYWdlIGV2ZXJ5IHRpbWUgd2Ugd2FudCB0byB1c2UgYSBt YXNrIHRvIHByZWRpY2F0ZSBhIHZlY3RvciBvcGVyYXRpb24sIHdlIHNob3Vs ZCBhbHdheXMgZmlyc3Qgc3RvcmUgdGhlIG1hc2sgdmFsdWUNCmludG8gdjAu DQoNClNvLCB3ZSBjYW4gd3JpdGUgaW50cmluc2ljIHNlcXVlbmNlIGxpa2Ug dGhpczoNCg0Kdm1zZXEgdjAsdjgsdjkgKHN0b3JlIG1hc2sgdmFsdWUgdG8g djApDQp2bXNsdCB2MSx2MTAsdjExIChzdG9yZSBtYXNrIHZhbHVlIHRvIHYx KQ0Kdm1hbmQgdjAsdjAsdjENCnZhZGQudnYgLi4udjAudCAocHJlZGljYXRl IG1hc2sgc2hvdWxkIGFsd2F5cyBiZSBtYXNrKS4NCg0KPj4gQVJNIFNWRSB3 b3VsZCBoYXZlIGEgbG9vcCBjb250cm9sIG1hc2sgYW5kIGEgc2VwYXJhdGUg bWFzaw0KPj4gZm9yIHRoZSBpZiAoY29uZFtpXSkgd2hpY2ggd291bGQgYmUg Y29tYmluZWQgd2l0aCBhIG1hc2stYW5kDQo+PiBpbnN0cnVjdGlvbiB0byBh IHRoaXJkIG1hc2sgd2hpY2ggaXMgdGhlbiB1c2VkIG9uIHRoZQ0KPj4gcHJl ZGljYXRlZCBpbnN0cnVjdGlvbnMuDQoNClllYWgsIEkga25vdyBpdC4gQVJN IFNWRSB3YXkgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRoYW4gUlZWIGRvLiAN Ckhvd2V2ZXIsIGZvciBSVlYsIHdlIGNhbid0IGZvbGxvdyB0aGlzIGZsb3cu DQpXZSBkb24ndCBoYXZlIGEgICJ3aGlsZWxvIiBpbnN0cnVjdGlvbiB0byBn ZW5lcmF0ZSBsb29wIGNvbnRyb2wgbWFzay4NCldlIG9ubHkgY2FuIGRvIGxv b3AgY29udHJvbCB3aXRoIGxlbmd0aCBnZW5lcmF0ZWQgYnkgdnNldHZsLg0K QW5kIHdlIGNhbiBvbmx5IHVzZSAidjAiIHRvIG1hc2sgcHJlZGljYXRlIHZh ZGQudnYsIGFuZCBtYXNrIHZhbHVlIGNhbiBvbmx5IGdlbmVyYXRlZCBieSBj b21wYXJpc29uIG9yIG1hc2sgbG9naWNhbCBpbnN0cnVjdGlvbnMuIA0KDQo+ PiBQb3dlclBDIGFuZCBzMzkweCBtaWdodCBiZSBhYmxlIHRvIHVzZSBXSElM RV9MRU4gYXMgd2VsbCAodGhvdWdoDQo+PiB0aGV5IG9ubHkgaGF2ZSBMRU4g dmFyaWFudHMgb2YgbG9hZHMgYW5kIHN0b3JlcykgLSBvZiBjb3Vyc2UNCj4+ IG9ubHkgInNpbXVsYXRpbmcgaXQiLiAgRm9yIHRoZSBmaXhlZC12ZWN0b3It bGVuZ3RoIElTQXMgdGhlDQo+PiBwcmVkaWNhdGVkIHZlY3RvciBsb29wIElN SE8gbWFrZXMgbW9zdCBzZW5zZSBmb3IgdGhlIGVwaWxvZ3VlIHRvDQo+PiBo YW5kbGUgbG93LXRyaXAgbG9vcHMgYmV0dGVyLg0KDQpZZWFoLCBJIHdvbmRl ciBob3cgdGhleSBkbyB0aGUgZmxvdyBjb250cm9sIChpZiAoY29uZFtpXSkp LiANCkZvciBSVlYsIHlvdSBjYW4gaW1hZ2UgSSB3aWxsIG5lZWQgdG8gYWRk IGEgcGF0dGVybiBMRU5fTUFTS19MT0FEL0xFTl9NQVNLX1NUT1JFIChsZW5n dGggZ2VuZXJhdGVkIGJ5IFdISUxFX0xFTiBhbmQgbWFzayBnZW5lcmF0ZWQg YnkgY29tcGFyaXNvbikNCg0KSSB0aGluayB3ZSBjYW4gQ0MgSUJNIGZvbGtz IHRvIHNlZSB3aGV0aGVyIHdlIGNhbiBtYWtlIFdISUxFX0xFTiB3b3JrcyAN CmZvciBib3RoIElCTSBhbmQgUlZWID8gDQoNClRoYW5rcy4NCg0KDQpqdXpo ZS56aG9uZ0ByaXZhaS5haQ0KIA0KRnJvbTogUmljaGFyZCBCaWVuZXINCkRh dGU6IDIwMjMtMDQtMTIgMTY6NDINClRvOiBqdXpoZS56aG9uZ0ByaXZhaS5h aQ0KQ0M6IHJpY2hhcmQuc2FuZGlmb3JkOyBnY2MtcGF0Y2hlczsgamVmZnJl eWFsYXcNClN1YmplY3Q6IFJlOiBSZTogW1BBVENIXSBWRUNUOiBBZGQgV0hJ TEVfTEVOIHBhdHRlcm4gZm9yIGRlY3JlbWVudCBJViBzdXBwb3J0IGZvciBh dXRvLXZlY3Rvcml6YXRpb24NCk9uIFdlZCwgMTIgQXByIDIwMjMsIGp1emhl Lnpob25nQHJpdmFpLmFpIHdyb3RlOg0KIA0KPiBUaGFuayB5b3UgdmVyeSBt dWNoIGZvciByZXBseS4NCj4gDQo+IFdISUxFX0xFTiBpcyB0aGUgcGF0dGVy biB0aGF0IGNhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiB0aGUgZWxlbWVudHMg b2YgdGhlIHZlY3RvciB3aWxsIGJlIHVwZGF0ZWQgaW4gZWFjaCBpdGVyYXRp b24uDQo+IEZvciBSVlYsIHdlIHVzZSB2c2V0dmwgaW5zdHJ1Y3Rpb24gdG8g Y2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB2 ZWN0b3IuDQo+IA0KPiBXSElMRV9VTFQgY2FuIG5vdCB3b3JrIGZvciBSVlYg c2luY2UgV0hJTEVfVUxUIGlzIGdlbmVyYXRpbmcgbWFzayB0byBwcmVkaWNh dGUgdmVjdG9yIG9wZXJhdGlvbiwgYnV0IFJWViBkbyBub3QNCj4gdXNlIG1h c2sgdG8gZG8gdGhlIGxvb3Agc3RyaXAgbWluaW5nIChSVlYgb25seSB1c2Ug bWFzayBmb3IgY29udHJvbCBmbG93IGluc2lkZSB0aGUgbG9vcCkuDQo+IA0K PiBIZXJlIGlzIHRoZSBleGFtcGxlIFdISUxFX1VMVCB3b3JraW5nIGluIEFS TSBTVkU6DQo+IGh0dHBzOi8vZ29kYm9sdC5vcmcvei9qS3NUOEUxaFAgDQo+ IA0KPiBUaGUgZmlyc3QgZXhhbXBsZSBpczoNCj4gdm9pZCBmb28gKGludDMy X3QgKiBfX3Jlc3RyaWN0IGEsIGludDMyX3QgKiBfX3Jlc3RyaWN0IGIsIGlu dCBuKQ0KPiB7DQo+ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykN Cj4gICAgICAgYVtpXSA9IGFbaV0gKyBiW2ldOw0KPiB9DQo+IA0KPiBBUk0g U1ZFOg0KPiBmb286DQo+ICAgICAgICAgY21wICAgICB3MiwgMA0KPiAgICAg ICAgIGJsZSAgICAgLkwxDQo+ICAgICAgICAgbW92ICAgICB4MywgMA0KPiAg ICAgICAgIGNudHcgICAgeDQNCj4gICAgICAgICB3aGlsZWxvIHAwLnMsIHd6 ciwgdzINCj4gLkwzOg0KPiAgICAgICAgIGxkMXcgICAgejEucywgcDAveiwg W3gwLCB4MywgbHNsIDJdDQo+ICAgICAgICAgbGQxdyAgICB6MC5zLCBwMC96 LCBbeDEsIHgzLCBsc2wgMl0NCj4gICAgICAgICBhZGQgICAgIHowLnMsIHow LnMsIHoxLnMNCj4gICAgICAgICBzdDF3ICAgIHowLnMsIHAwLCBbeDAsIHgz LCBsc2wgMl0NCj4gICAgICAgICBhZGQgICAgIHgzLCB4MywgeDQNCj4gICAg ICAgICB3aGlsZWxvIHAwLnMsIHczLCB3Mg0KPiAgICAgICAgIGIuYW55ICAg LkwzDQo+IC5MMToNCj4gICAgICAgICByZXQNCj4gDQo+IEhlcmUsIHdoaWxl bG8gd2lsbCBnZW5lcmF0ZSB0aGUgbWFzayBhY2NvcmRpbmcgdG8gdzMgdG8g dzIuDQo+IFNvIGZvciBleGFtcGxlLCBpZiB3MyA9IDAsIGFuZCB3MiA9IDMg KFN1cHBvc2UgbWFjaGluZSB2ZWN0b3IgbGVuZ3RoID4gMykuDQo+IFRoZW4g aXQgd2lsbCBnZW5lcmF0ZSBhIG1hc2sgd2l0aCAwYjExMSBtYXNrIHRvIHBy ZWRpY2F0ZSBsb2FkcyBhbmQgc3RvcmVzLg0KPiANCj4gRm9yIFJWViwgd2Ug Y2FuJ3QgZG8gdGhhdCBzaW5jZSBSVlYgZG9lc24ndCBoYXZlIHdoaWxlbG8g aW5zdHJ1Y3Rpb25zIHRvIGdlbmVyYXRlIHByZWRpY2F0ZSBtYXNrLg0KPiBB bHNvLCB3ZSBjYW4ndCB1c2UgbWFzayBhcyB0aGUgcHJlZGljYXRlIHRvIGRv IGxvb3Agc3RyaXAgbWluaW5nIHNpbmNlIFJWViBvbmx5IGhhcyAxIHNpbmds ZSBtYXNrIA0KPiB0byBoYW5kbGUgZmxvdyBjb250cm9sICBpbnNpZGUgdGhl IGxvb3AuDQo+IA0KPiBJbnN0ZWFkLCB3ZSB1c2UgdnNldHZsIHRvIGRvIHRo ZSBzdHJpcCBtaW5pbmcsIHNvIGJhc2Ugb24gdGhpcywgdGhlIHNhbWUgQyBj b2RlLCBSVlYgaWRlYWwgYXNtIGFjY29yZGluZyBSVlYgSVNBIHNob3VsZCBi ZToNCj4gDQo+IHByZWhlYWRlcjoNCj4gYTAgPSBuICh0aGUgdG90YWwgbnVt YmVyIG9mIHRoZSBzY2FsYXIgc2hvdWxkIGJlIGNhbGN1bGF0ZWQpLg0KPiAg Li4uLi4NCj4gLkwzOg0KPiAgICAgICAgIHZzZXR2bGkgYTUsYTAsZTMyLG0x LHRhLG1hICAgID09PT0+IFdISUxFX0xFTiBwYXR0ZXJuIGdlbmVyYXRlIHRo aXMgaW5zdHJ1Y3Rpb24sIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHRoZSBl bGVtZW50cyBzaG91bGQgYmUgdXBkYXRlZA0KPiAgICAgICAgIHZsZTMyLnYg djEsMChhNCkNCj4gICAgICAgICBzdWIgICAgIGEwLGEwLGE1ICAgICAgPT09 PT09PT09PT09PiBEZWNyZW1lbnQgdGhlIGluZHVjdGlvbiB2YXJpYWJsZSBi eSB0aGUgYTUgKGdlbmVyYXRlZCBieSBXSElMRV9MRU4pDQo+ICAgICAgICAg Li4uLiAgIA0KPiANCj4gICAgICAgICB2YWRkLnZ2Li4uLg0KPiAgICAgICAg IHZzZTMyLnYgdjEsMChhMykNCj4gICAgICAgICBhZGQgICAgIGE0LGE0LGEy DQo+ICAgICAgICAgYWRkICAgICBhMyxhMyxhMg0KPiAgICAgICAgIGJuZSAg ICAgYTAsemVybywuTDMNCj4gLkwxOg0KPiAgICAgICAgIHJldA0KPiANCj4g U28geW91IHdpbGwgc2VlLCBpZiBuID0gMyBsaWtlIEkgc2FpZCBmb3IgQVJN IFNWRSAoU3VwcG9zZSBtYWNoaW5lIHZlY3RvciBsZW5ndGggPiAzKSwgdGhl biB2c2V0dmxpIGE1LGEwLGUzMixtMSx0YSxtYSB3aWxsDQo+IGdlbmVyYXRl IGE1ID0gMywgdGhlbiB0aGUgdmxlMzIudi92YWRkLnZ2L3ZzZTMyLnYgYXJl IGFsbCBkb2luZyB0aGUgb3BlcmF0aW9uIG9ubHkgb24gdGhlIGVsZW1lbnQg MCwgIGVsZW1lbnQgMSwgZWxlbWVudCAyLg0KPiANCj4gQmVzaWRlcywgV0hJ TEVfTEVOIGlzIGRlZmluZWQgdG8gbWFrZSBzdXJlIHRvIGJlIG5ldmVyIG92 ZXJmbG93IHRoZSBpbnB1dCBvcGVyYW5kIHdoaWNoIGlzICJhMCIuDQo+IFRo YXQgbWVhbnMgIHN1YiAgICAgYTAsYTAsYTUgd2lsbCBtYWtlIGEwIG5ldmVy IHVuZGVyZmxvdyAwLg0KPiANCj4gSSBoYXZlIHRyaWVkIHRvIHJldHVybiBQ bW9kZSBpbiBUQVJHRVRfVkVDVE9SSVpFX0dFVF9NQVNLX01PREUgDQo+IHRh cmdldCBob29rIGFuZCB0aGVuIHVzZSBXSElMRV9VTFQuIA0KPiANCj4gQnV0 IHRoZXJlIGFyZSAyIGlzc3VlczoNCj4gT25lIGlzIHRoYXQgY3VycmVudCBH Q0MgaXMgZG9pbmcgdGhlIGZsb3cgZnJvbSAwLWJhc2VkIHVudGlsIHRoZSBU RVNUX0xJTUlULiBXaGVyYXMgdGhlIG9wdGltYWwgZmxvdyBvZiBSVlYgSSBz aG93ZWQgYWJvdmUNCj4gaXMgZnJvbSAibiIga2VlcCBkZWNyZWFzaW5nIG4g dW50aWwgMC4gIFRyeWluZyB0byBmaXQgdGhlIGN1cnJlbnQgZmxvdyBvZiBH Q0MsIFJWViBuZWVkcyBtb3JlIGluc3RydWN0aW9ucyB0byBkbyB0aGUgbG9v cCBzdHJpcCBtaW5pbmcuDQo+IA0KPiBTZWNvbmQgaXMgdGhhdCBpZiB3ZSBy ZXR1cm4gYSBQbW9kZSBpbiBUQVJHRVRfVkVDVE9SSVpFX0dFVF9NQVNLX01P REUgDQo+IHdoaWNoIG5vdCBvbmx5IHNwZWNpZnkgdGhlIGRlc3QgbW9kZSBm b3IgV0hJTEVfVUxUIGJ1dCBhbHNvIHRoZSBtYXNrIG1vZGUgb2YgZmxvdyBj b250cm9sLg0KPiBJZiB3ZSByZXR1cm4gUG1vZGUgd2hpY2ggaXMgdXNlZCBh cyB0aGUgbGVuZ3RoIGZvciBSVlYuIFdlIGNhbid0IHVzZSBtYXNrIG1vZGUg bGlrZSBWTngyQkkgbW9kZSB0byBkbyB0aGUgZmxvdyBjb250cm9sIHByZWRp Y2F0ZS4NCj4gVGhpcyBhbm90aGVyIGV4YW1wbGU6DQo+IHZvaWQgZm9vMiAo aW50MzJfdCAqIF9fcmVzdHJpY3QgYSwgaW50MzJfdCAqIF9fcmVzdHJpY3Qg YiwgaW50MzJfdCAqIHJlc3RyaWN0IGNvbmQsIGludCBuKQ0KPiB7DQo+ICAg ICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gICAgICAgaWYgKGNv bmRbaV0pDQo+ICAgICAgICAgYVtpXSA9IGFbaV0gKyBiW2ldOw0KPiB9DQo+ IA0KPiBBUk0gU1ZFOg0KPiAgICAgICAgIGxkMXcgICAgejAucywgcDAveiwg W3gyLCB4NCwgbHNsIDJdDQo+ICAgICAgICAgY21wbmUgICBwMC5zLCBwMC96 LCB6MC5zLCAjMA0KPiAgICAgICAgIGxkMXcgICAgejAucywgcDAveiwgW3gw LCB4NCwgbHNsIDJdDQo+ICAgICAgICAgbGQxdyAgICB6MS5zLCBwMC96LCBb eDEsIHg0LCBsc2wgMl0NCj4gICAgICAgICBhZGQgICAgIHowLnMsIHowLnMs IHoxLnMNCj4gICAgICAgICBzdDF3ICAgIHowLnMsIHAwLCBbeDAsIHg0LCBs c2wgMl0NCj4gICAgICAgICBhZGQgICAgIHg0LCB4NCwgeDUNCj4gICAgICAg ICB3aGlsZWxvIHAwLnMsIHc0LCB3Mw0KPiAgICAgICAgIGIuYW55ICAgLkw4 DQo+IA0KPiBIZXJlIHdlIGNhbiBzZWUgQVJNIHVzZSBtYXNrIG1vZGUgZm9y IGJvdGggbG9vcCBzdHJpcCBtaW5uaW5nIGFuZCBmbG93IGNvbnRyb2wuDQo+ IA0KPiBXaGVyYXMsIFJWViB1c2UgbGVuZ3RoIGdlbmVyYXRlZCBieSB2c2V0 dmwgKFdISUxFX0xFTikgdG8gZG8gdGhlIGxvb3Agc3RyaXAgbWlubmluZyBh bmQgbWFzayBnZW5lcmF0ZWQgYnkgY29tcGFyaXNvbiB0byBkbyB0aGUgZmxv dyBjb250cm9sLg0KPiANCj4gU28gdGhlIEFTTSBnZW5lcmF0ZWQgYnkgbXkg ZG93bnN0cmVhbSBMTFZNL0dDQzoNCj4gLkwzOg0KPiAgICAgICAgIHZzZXR2 bGkgYTYsYTMsZTMyLG0xLHRhLG11ICAgPT09PT09PT09PT4gZ2VuZXJhdGUg bGVuZ3RoIHRvIHByZWRpY2F0ZSBSVlYgb3BlcmF0aW9uLiANCj4gICAgICAg ICB2bGUzMi52IHYwLChhMikNCj4gICAgICAgICBzdWIgICAgIGEzLGEzLGE2 ICAgICAgPT09PT09PT09PT4gZGVjcmVhc2UgdGhlIGluZHVjdGlvbiB2YXJp YWJsZSB1bnRpbCAwLg0KPiAgICAgICAgIHZtc25lLnZpICAgICAgICB2MCx2 MCwwICAgPT09PT09PT09PT4gZ2VuZXJhdGUgbWFzayB0byBwcmVkaWNhdGUg UlZWIG9wZXJhdGlvbi4gDQo+ICAgICAgICAgdmxlMzIudiB2MjQsKGEwKSx2 MC50ICAgPT09PT09PT09PT0+IGhlcmUgdXNpbmcgdjAudCBpcyB0aGUgb25s eSBtYXNrIHJlZ2lzdGVyIHRvIHByZWRpY2F0ZSBSVlYgb3BlcmF0aW9uDQo+ ICAgICAgICAgdmxlMzIudiB2MjUsKGExKSx2MC50DQo+ICAgICAgICAgdmFk ZC52diB2MjQsdjI0LHYyNQ0KPiAgICAgICAgIHZzZTMyLnYgdjI0LChhMCks djAudA0KPiAgICAgICAgIGFkZCAgICAgYTIsYTIsYTQNCj4gICAgICAgICBh ZGQgICAgIGEwLGEwLGE0DQo+ICAgICAgICAgYWRkICAgICBhMSxhMSxhNA0K PiAgICAgICAgIGJuZSAgICAgYTMsemVybywuTDMNCj4gLkwxOg0KPiAgICAg ICAgIHJldA0KPiANCj4gDQo+IFRoaXMgaXMgdGhlIGhvdyBSVlYgd29ya3Mu DQo+IEZlZWwgZnJlZSB0byBjb21tZW50IGlmIHlvdSBoYXZlIGFueSBxdWVz dGlvbnMuDQogDQpUaGFua3MgZm9yIHRoZSBkZXRhaWxlZCBleHBsYW5hdGlv bi4gIEp1c3QgdG8gY2xhcmlmeSAtIHdpdGggUlZWDQp0aGVyZSdzIG9ubHkg YSBzaW5nbGUgbWFzayByZWdpc3RlciwgdjAudCwgb3IgZGlkIHlvdSB3YW50 IHRvDQpzYXkgYW4gaW5zdHJ1Y3Rpb24gY2FuIG9ubHkgc3BlY2lmeSBhIHNp bmdsZSBtYXNrIHJlZ2lzdGVyPw0KQVJNIFNWRSB3b3VsZCBoYXZlIGEgbG9v cCBjb250cm9sIG1hc2sgYW5kIGEgc2VwYXJhdGUgbWFzaw0KZm9yIHRoZSBp ZiAoY29uZFtpXSkgd2hpY2ggd291bGQgYmUgY29tYmluZWQgd2l0aCBhIG1h c2stYW5kDQppbnN0cnVjdGlvbiB0byBhIHRoaXJkIG1hc2sgd2hpY2ggaXMg dGhlbiB1c2VkIG9uIHRoZQ0KcHJlZGljYXRlZCBpbnN0cnVjdGlvbnMuDQog DQpGb3IgQVZYNTEyIFdISUxFX1VMVCBpcyBhIGJldHRlciBtYXRjaCBzaW5j ZSB3ZSBuZWVkIGEgbWFzayBpbiB0aGUNCmVuZCAoYnV0IFdISUxFX1VMVCBp c24ndCBhIHZlcnkgZ29vZCBtYXRjaCBlaXRoZXIsIHNvIEknbSBzdGlsbA0K d29ya2luZyBvbiBtYXNrZWQgbG9vcCBzdXBwb3J0IHRoZXJlKS4NCiANClBv d2VyUEMgYW5kIHMzOTB4IG1pZ2h0IGJlIGFibGUgdG8gdXNlIFdISUxFX0xF TiBhcyB3ZWxsICh0aG91Z2gNCnRoZXkgb25seSBoYXZlIExFTiB2YXJpYW50 cyBvZiBsb2FkcyBhbmQgc3RvcmVzKSAtIG9mIGNvdXJzZQ0Kb25seSAic2lt dWxhdGluZyBpdCIuICBGb3IgdGhlIGZpeGVkLXZlY3Rvci1sZW5ndGggSVNB cyB0aGUNCnByZWRpY2F0ZWQgdmVjdG9yIGxvb3AgSU1ITyBtYWtlcyBtb3N0 IHNlbnNlIGZvciB0aGUgZXBpbG9ndWUgdG8NCmhhbmRsZSBsb3ctdHJpcCBs b29wcyBiZXR0ZXIuDQogDQpSaWNoYXJkLg0KIA0KPiBUaGFua3MuDQo+IA0K PiANCj4ganV6aGUuemhvbmdAcml2YWkuYWkNCj4gIA0KPiBGcm9tOiBSaWNo YXJkIEJpZW5lcg0KPiBEYXRlOiAyMDIzLTA0LTEyIDE1OjAwDQo+IFRvOiBS aWNoYXJkIFNhbmRpZm9yZA0KPiBDQzoganV6aGUuemhvbmdAcml2YWkuYWk7 IGdjYy1wYXRjaGVzOyBqZWZmcmV5YWxhdw0KPiBTdWJqZWN0OiBSZTogW1BB VENIXSBWRUNUOiBBZGQgV0hJTEVfTEVOIHBhdHRlcm4gZm9yIGRlY3JlbWVu dCBJViBzdXBwb3J0IGZvciBhdXRvLXZlY3Rvcml6YXRpb24NCj4gT24gVHVl LCAxMSBBcHIgMjAyMywgUmljaGFyZCBTYW5kaWZvcmQgd3JvdGU6DQo+ICAN Cj4gPiAianV6aGUuemhvbmdAcml2YWkuYWkiIDxqdXpoZS56aG9uZ0ByaXZh aS5haT4gd3JpdGVzOg0KPiA+ID4gSGksIFJpY2hhcmRzLiANCj4gPiA+IEtp bmRseSBQaW5nIHRoaXMgcGF0Y2guIA0KPiA+ID4gVGhpcyBpcyB0aGUgbW9z dCBpbXBvcnRhbnQgcGF0Y2ggZm9yIFJWViBhdXRvLXZlY3Rvcml6YXRpb24g c3VwcG9ydC4NCj4gPiA+IEJvb3RzdHJhcGVkIG9uIFg4NiBoYXMgcGFzc2Vk Lg0KPiA+IA0KPiA+IENhbiBpdCB3YWl0IGZvciBHQ0MgMTQ/ICBJdCBkb2Vz bid0IHNlZW0gbGlrZSBzdGFnZSA0IG1hdGVyaWFsLg0KPiA+IA0KPiA+IEFs c28sIHBpbmdpbmcgYWZ0ZXIgNSBkYXlzIHNlZW1zIGEgYml0IHNvb24uICBJ dCdzIGJlZW4gYSA0LWRheQ0KPiA+IGhvbGlkYXkgd2Vla2VuZCBmb3IgbXVj aCBvZiBFdXJvcGUuDQo+ICANCj4gQWxzbyBjYW4geW91IGV4cGxhaW4gd2h5 IHVzaW5nIFdISUxFX1VMVCBpcyBub3QgcG9zc2libGU/ICAoSSd2ZQ0KPiBz dWNjZXNzZnVsbHkgLSB0byBzb21lIGV4dGVudCAtIGRvbmUgdGhhdCBmb3Ig QVZYNTEyIGZvciBleGFtcGxlKQ0KPiAgDQo+IFRoZSBwYXRjaCBsYWNrcyB0 aGUgZGVzY3JpcHRpb24gb2Ygd2hhdCBXSElMRV9MRU4gYWN0dWFsbHkgaXMu DQo+ICANCj4gUmljaGFyZC4NCj4gIA0KPiA+IFRoYW5rcywNCj4gPiBSaWNo YXJkDQo+ID4gDQo+ID4gPiBGZWVsIGZyZWUgdG8gY29tbWVudHMuDQo+ID4g Pg0KPiA+ID4gVGhhbmtzLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBqdXpoZS56 aG9uZ0ByaXZhaS5haQ0KPiA+ID4gIA0KPiA+ID4gRnJvbToganV6aGUuemhv bmcNCj4gPiA+IERhdGU6IDIwMjMtMDQtMDcgMDk6NDcNCj4gPiA+IFRvOiBn Y2MtcGF0Y2hlcw0KPiA+ID4gQ0M6IHJpY2hhcmQuc2FuZGlmb3JkOyByZ3Vl bnRoZXI7IGplZmZyZXlhbGF3OyBKdXpoZS1aaG9uZw0KPiA+ID4gU3ViamVj dDogW1BBVENIXSBWRUNUOiBBZGQgV0hJTEVfTEVOIHBhdHRlcm4gZm9yIGRl Y3JlbWVudCBJViBzdXBwb3J0IGZvciBhdXRvLXZlY3Rvcml6YXRpb24NCj4g PiA+IEZyb206IEp1emhlLVpob25nIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4N Cj4gPiA+ICANCj4gPiA+IFRoaXMgcGF0Y2ggaXMgdG8gYWRkIFdISUxFX0xF TiBwYXR0ZXJuLg0KPiA+ID4gSXQncyBpbnNwaXJlZCBieSBSVlYgSVNBIHNp bXBsZSAidnZhZGRpbnQzMi5zIiBleGFtcGxlOg0KPiA+ID4gaHR0cHM6Ly9n aXRodWIuY29tL3Jpc2N2L3Jpc2N2LXYtc3BlYy9ibG9iL21hc3Rlci9leGFt cGxlL3Z2YWRkaW50MzIucw0KPiA+ID4gIA0KPiA+ID4gTW9yZSBkZXRhaWxz IGFyZSBpbiAidmVjdF9zZXRfbG9vcF9jb250cm9sc19ieV93aGlsZV9sZW4i IGltcGxlbWVudGF0aW9uDQo+ID4gPiBhbmQgY29tbWVudHMuDQo+ID4gPiAg DQo+ID4gPiBDb25zaWRlciBzdWNoIGZvbGxvd2luZyBjYXNlOg0KPiA+ID4g I2RlZmluZSBOIDE2DQo+ID4gPiBpbnQgc3JjW05dOw0KPiA+ID4gaW50IGRl c3RbTl07DQo+ID4gPiAgDQo+ID4gPiB2b2lkDQo+ID4gPiBmb28gKGludCBu KQ0KPiA+ID4gew0KPiA+ID4gICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkr KykNCj4gPiA+ICAgICBkZXN0W2ldID0gc3JjW2ldOw0KPiA+ID4gfQ0KPiA+ ID4gIA0KPiA+ID4gLW1hcmNoPXJ2NjRnY3YgLU8zIC0tcGFyYW0gcmlzY3Yt YXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1mbm8tdmVjdC1jb3N0LW1v ZGVsIC1mbm8tdHJlZS1sb29wLWRpc3RyaWJ1dGUtcGF0dGVybnM6DQo+ID4g PiAgDQo+ID4gPiBmb286ICAgICAgICANCj4gPiA+ICAgICAgICAgYmxlICAg ICBhMCx6ZXJvLC5MMQ0KPiA+ID4gICAgICAgICBsdWkgICAgIGE0LCVoaSgu TEFOQ0hPUjApDQo+ID4gPiAgICAgICAgIGFkZGkgICAgYTQsYTQsJWxvKC5M QU5DSE9SMCkNCj4gPiA+ICAgICAgICAgYWRkaSAgICBhMyxhNCw2NA0KPiA+ ID4gICAgICAgICBjc3JyICAgIGEyLHZsZW5iDQo+ID4gPiAuTDM6DQo+ID4g PiAgICAgICAgIHZzZXR2bGkgYTUsYTAsZTMyLG0xLHRhLG1hDQo+ID4gPiAg ICAgICAgIHZsZTMyLnYgdjEsMChhNCkNCj4gPiA+ICAgICAgICAgc3ViICAg ICBhMCxhMCxhNQ0KPiA+ID4gICAgICAgICB2c2UzMi52IHYxLDAoYTMpDQo+ ID4gPiAgICAgICAgIGFkZCAgICAgYTQsYTQsYTINCj4gPiA+ICAgICAgICAg YWRkICAgICBhMyxhMyxhMg0KPiA+ID4gICAgICAgICBibmUgICAgIGEwLHpl cm8sLkwzDQo+ID4gPiAuTDE6DQo+ID4gPiAgICAgICAgIHJldA0KPiA+ID4g IA0KPiA+ID4gZ2NjL0NoYW5nZUxvZzoNCj4gPiA+ICANCj4gPiA+ICAgICAg ICAgKiBkb2MvbWQudGV4aTogQWRkIFdISUxFX0xFTiBzdXBwb3J0Lg0KPiA+ ID4gICAgICAgICAqIGludGVybmFsLWZuLmNjICh3aGlsZV9sZW5fZGlyZWN0 KTogRGl0dG8uDQo+ID4gPiAgICAgICAgIChleHBhbmRfd2hpbGVfbGVuX29w dGFiX2ZuKTogRGl0dG8uDQo+ID4gPiAgICAgICAgIChkaXJlY3Rfd2hpbGVf bGVuX29wdGFiX3N1cHBvcnRlZF9wKTogRGl0dG8uDQo+ID4gPiAgICAgICAg ICogaW50ZXJuYWwtZm4uZGVmIChXSElMRV9MRU4pOiBEaXR0by4NCj4gPiA+ ICAgICAgICAgKiBvcHRhYnMuZGVmIChPUFRBQl9EKTogRGl0dG8uDQo+ID4g PiAgICAgICAgICogdHJlZS1zc2EtbG9vcC1tYW5pcC5jYyAoY3JlYXRlX2l2 KTogRGl0dG8uDQo+ID4gPiAgICAgICAgICogdHJlZS1zc2EtbG9vcC1tYW5p cC5oIChjcmVhdGVfaXYpOiBEaXR0by4NCj4gPiA+ICAgICAgICAgKiB0cmVl LXZlY3QtbG9vcC1tYW5pcC5jYyAodmVjdF9zZXRfbG9vcF9jb250cm9sc19i eV93aGlsZV9sZW4pOiBEaXR0by4NCj4gPiA+ICAgICAgICAgKHZlY3Rfc2V0 X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycyk6IERpdHRvLg0KPiA+ ID4gICAgICAgICAqIHRyZWUtdmVjdC1sb29wLmNjICh2ZWN0X2dldF9sb29w X2xlbik6IERpdHRvLg0KPiA+ID4gICAgICAgICAqIHRyZWUtdmVjdC1zdG10 cy5jYyAodmVjdG9yaXphYmxlX3N0b3JlKTogRGl0dG8uDQo+ID4gPiAgICAg ICAgICh2ZWN0b3JpemFibGVfbG9hZCk6IERpdHRvLg0KPiA+ID4gICAgICAg ICAqIHRyZWUtdmVjdG9yaXplci5oICh2ZWN0X2dldF9sb29wX2xlbik6IERp dHRvLg0KPiA+ID4gIA0KPiA+ID4gLS0tDQo+ID4gPiBnY2MvZG9jL21kLnRl eGkgICAgICAgICAgICAgfCAgMTQgKysrDQo+ID4gPiBnY2MvaW50ZXJuYWwt Zm4uY2MgICAgICAgICAgfCAgMjkgKysrKysrDQo+ID4gPiBnY2MvaW50ZXJu YWwtZm4uZGVmICAgICAgICAgfCAgIDEgKw0KPiA+ID4gZ2NjL29wdGFicy5k ZWYgICAgICAgICAgICAgIHwgICAxICsNCj4gPiA+IGdjYy90cmVlLXNzYS1s b29wLW1hbmlwLmNjICB8ICAgNCArLQ0KPiA+ID4gZ2NjL3RyZWUtc3NhLWxv b3AtbWFuaXAuaCAgIHwgICAyICstDQo+ID4gPiBnY2MvdHJlZS12ZWN0LWxv b3AtbWFuaXAuY2MgfCAxODYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tDQo+ID4gPiBnY2MvdHJlZS12ZWN0LWxvb3AuY2MgICAgICAg fCAgMzUgKysrKystLQ0KPiA+ID4gZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyAg ICAgIHwgICA5ICstDQo+ID4gPiBnY2MvdHJlZS12ZWN0b3JpemVyLmggICAg ICAgfCAgIDQgKy0NCj4gPiA+IDEwIGZpbGVzIGNoYW5nZWQsIDI2NCBpbnNl cnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkNCj4gPiA+ICANCj4gPiA+IGRp ZmYgLS1naXQgYS9nY2MvZG9jL21kLnRleGkgYi9nY2MvZG9jL21kLnRleGkN Cj4gPiA+IGluZGV4IDhlMzExMzU5OWZkLi43MjE3OGFiMDE0YyAxMDA2NDQN Cj4gPiA+IC0tLSBhL2djYy9kb2MvbWQudGV4aQ0KPiA+ID4gKysrIGIvZ2Nj L2RvYy9tZC50ZXhpDQo+ID4gPiBAQCAtNDk2NSw2ICs0OTY1LDIwIEBAIGZv ciAoaSA9IDE7IGkgPCBvcGVyYW5kMzsgaSsrKQ0KPiA+ID4gICAgb3BlcmFu ZDBbaV0gPSBvcGVyYW5kMFtpIC0gMV0gJiYgKG9wZXJhbmQxICsgaSA8IG9w ZXJhbmQyKTsNCj4gPiA+IEBlbmQgc21hbGxleGFtcGxlDQo+ID4gPiArQGNp bmRleCBAY29kZXt3aGlsZV9sZW5AdmFye219QHZhcntufX0gaW5zdHJ1Y3Rp b24gcGF0dGVybg0KPiA+ID4gK0BpdGVtIEBjb2Rle3doaWxlX2xlbkB2YXJ7 bX1AdmFye259fQ0KPiA+ID4gK1NldCBvcGVyYW5kIDAgdG8gdGhlIG51bWJl ciBvZiBhY3RpdmUgZWxlbWVudHMgaW4gdmVjdG9yIHdpbGwgYmUgdXBkYXRl ZCB2YWx1ZS4NCj4gPiA+ICtvcGVyYW5kIDEgaXMgdGhlIHRvdGFsIGVsZW1l bnRzIG5lZWQgdG8gYmUgdXBkYXRlZCB2YWx1ZS4NCj4gPiA+ICtvcGVyYW5k IDIgaXMgdGhlIHZlY3Rvcml6YXRpb24gZmFjdG9yLg0KPiA+ID4gK1RoZSBv cGVyYXRpb24gaXMgZXF1aXZhbGVudCB0bzoNCj4gPiA+ICsNCj4gPiA+ICtA c21hbGxleGFtcGxlDQo+ID4gPiArb3BlcmFuZDAgPSBNSU4gKG9wZXJhbmQx LCBvcGVyYW5kMik7DQo+ID4gPiArb3BlcmFuZDIgY2FuIGJlIGNvbnN0X3Bv bHlfaW50IG9yIHBvbHlfaW50IHJlbGF0ZWQgdG8gdmVjdG9yIG1vZGUgc2l6 ZS4NCj4gPiA+ICtTb21lIHRhcmdldCBsaWtlIFJJU0MtViBoYXMgYSBzdGFu ZGFsb25lIGluc3RydWN0aW9uIHRvIGdldCBNSU4gKG4sIE1PREUgU0laRSkg c28NCj4gPiA+ICt0aGF0IHdlIGNhbiByZWR1Y2UgYSB1c2Ugb2YgZ2VuZXJh bCBwdXJwb3NlIHJlZ2lzdGVyLg0KPiA+ID4gK0BlbmQgc21hbGxleGFtcGxl DQo+ID4gPiArDQo+ID4gPiBAY2luZGV4IEBjb2Rle2NoZWNrX3Jhd19wdHJz QHZhcnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybg0KPiA+ID4gQGl0ZW0gQHNh bXB7Y2hlY2tfcmF3X3B0cnNAdmFye219fQ0KPiA+ID4gQ2hlY2sgd2hldGhl ciwgZ2l2ZW4gdHdvIHBvaW50ZXJzIEB2YXJ7YX0gYW5kIEB2YXJ7Yn0gYW5k IGEgbGVuZ3RoIEB2YXJ7bGVufSwNCj4gPiA+IGRpZmYgLS1naXQgYS9nY2Mv aW50ZXJuYWwtZm4uY2MgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4gPiA+IGlu ZGV4IDZlODFkYzA1ZTBlLi41ZjQ0ZGVmOTBkMyAxMDA2NDQNCj4gPiA+IC0t LSBhL2djYy9pbnRlcm5hbC1mbi5jYw0KPiA+ID4gKysrIGIvZ2NjL2ludGVy bmFsLWZuLmNjDQo+ID4gPiBAQCAtMTI3LDYgKzEyNyw3IEBAIGluaXRfaW50 ZXJuYWxfZm5zICgpDQo+ID4gPiAjZGVmaW5lIGNvbmRfYmluYXJ5X2RpcmVj dCB7IDEsIDEsIHRydWUgfQ0KPiA+ID4gI2RlZmluZSBjb25kX3Rlcm5hcnlf ZGlyZWN0IHsgMSwgMSwgdHJ1ZSB9DQo+ID4gPiAjZGVmaW5lIHdoaWxlX2Rp cmVjdCB7IDAsIDIsIGZhbHNlIH0NCj4gPiA+ICsjZGVmaW5lIHdoaWxlX2xl bl9kaXJlY3QgeyAwLCAwLCBmYWxzZSB9DQo+ID4gPiAjZGVmaW5lIGZvbGRf ZXh0cmFjdF9kaXJlY3QgeyAyLCAyLCBmYWxzZSB9DQo+ID4gPiAjZGVmaW5l IGZvbGRfbGVmdF9kaXJlY3QgeyAxLCAxLCBmYWxzZSB9DQo+ID4gPiAjZGVm aW5lIG1hc2tfZm9sZF9sZWZ0X2RpcmVjdCB7IDEsIDEsIGZhbHNlIH0NCj4g PiA+IEBAIC0zNzAyLDYgKzM3MDMsMzMgQEAgZXhwYW5kX3doaWxlX29wdGFi X2ZuIChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIg b3B0YWIpDQo+ID4gPiAgICAgIGVtaXRfbW92ZV9pbnNuIChsaHNfcnR4LCBv cHNbMF0udmFsdWUpOw0KPiA+ID4gfQ0KPiA+ID4gKy8qIEV4cGFuZCBXSElM RV9MRU4gY2FsbCBTVE1UIHVzaW5nIG9wdGFiIE9QVEFCLiAgKi8NCj4gPiA+ ICtzdGF0aWMgdm9pZA0KPiA+ID4gK2V4cGFuZF93aGlsZV9sZW5fb3B0YWJf Zm4gKGludGVybmFsX2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBv cHRhYikNCj4gPiA+ICt7DQo+ID4gPiArICBleHBhbmRfb3BlcmFuZCBvcHNb M107DQo+ID4gPiArICB0cmVlIHJoc190eXBlWzJdOw0KPiA+ID4gKw0KPiA+ ID4gKyAgdHJlZSBsaHMgPSBnaW1wbGVfY2FsbF9saHMgKHN0bXQpOw0KPiA+ ID4gKyAgdHJlZSBsaHNfdHlwZSA9IFRSRUVfVFlQRSAobGhzKTsNCj4gPiA+ ICsgIHJ0eCBsaHNfcnR4ID0gZXhwYW5kX2V4cHIgKGxocywgTlVMTF9SVFgs IFZPSURtb2RlLCBFWFBBTkRfV1JJVEUpOw0KPiA+ID4gKyAgY3JlYXRlX291 dHB1dF9vcGVyYW5kICgmb3BzWzBdLCBsaHNfcnR4LCBUWVBFX01PREUgKGxo c190eXBlKSk7DQo+ID4gPiArDQo+ID4gPiArICBmb3IgKHVuc2lnbmVkIGlu dCBpID0gMDsgaSA8IGdpbXBsZV9jYWxsX251bV9hcmdzIChzdG10KTsgKytp KQ0KPiA+ID4gKyAgICB7DQo+ID4gPiArICAgICAgdHJlZSByaHMgPSBnaW1w bGVfY2FsbF9hcmcgKHN0bXQsIGkpOw0KPiA+ID4gKyAgICAgIHJoc190eXBl W2ldID0gVFJFRV9UWVBFIChyaHMpOw0KPiA+ID4gKyAgICAgIHJ0eCByaHNf cnR4ID0gZXhwYW5kX25vcm1hbCAocmhzKTsNCj4gPiA+ICsgICAgICBjcmVh dGVfaW5wdXRfb3BlcmFuZCAoJm9wc1tpICsgMV0sIHJoc19ydHgsIFRZUEVf TU9ERSAocmhzX3R5cGVbaV0pKTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgaW5zbl9jb2RlIGljb2RlID0gZGlyZWN0X29wdGFiX2hhbmRs ZXIgKG9wdGFiLCBUWVBFX01PREUgKHJoc190eXBlWzBdKSk7DQo+ID4gPiAr DQo+ID4gPiArICBleHBhbmRfaW5zbiAoaWNvZGUsIDMsIG9wcyk7DQo+ID4g PiArICBpZiAoIXJ0eF9lcXVhbF9wIChsaHNfcnR4LCBvcHNbMF0udmFsdWUp KQ0KPiA+ID4gKyAgICBlbWl0X21vdmVfaW5zbiAobGhzX3J0eCwgb3BzWzBd LnZhbHVlKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAvKiBFeHBhbmQg YSBjYWxsIHRvIGEgY29udmVydC1saWtlIG9wdGFiIHVzaW5nIHRoZSBvcGVy YW5kcyBpbiBTVE1ULg0KPiA+ID4gICAgIEZOIGhhcyBhIHNpbmdsZSBvdXRw dXQgb3BlcmFuZCBhbmQgTkFSR1MgaW5wdXQgb3BlcmFuZHMuICAqLw0KPiA+ ID4gQEAgLTM4NDMsNiArMzg3MSw3IEBAIG11bHRpX3ZlY3Rvcl9vcHRhYl9z dXBwb3J0ZWRfcCAoY29udmVydF9vcHRhYiBvcHRhYiwgdHJlZV9wYWlyIHR5 cGVzLA0KPiA+ID4gI2RlZmluZSBkaXJlY3Rfc2NhdHRlcl9zdG9yZV9vcHRh Yl9zdXBwb3J0ZWRfcCBjb252ZXJ0X29wdGFiX3N1cHBvcnRlZF9wDQo+ID4g PiAjZGVmaW5lIGRpcmVjdF9sZW5fc3RvcmVfb3B0YWJfc3VwcG9ydGVkX3Ag ZGlyZWN0X29wdGFiX3N1cHBvcnRlZF9wDQo+ID4gPiAjZGVmaW5lIGRpcmVj dF93aGlsZV9vcHRhYl9zdXBwb3J0ZWRfcCBjb252ZXJ0X29wdGFiX3N1cHBv cnRlZF9wDQo+ID4gPiArI2RlZmluZSBkaXJlY3Rfd2hpbGVfbGVuX29wdGFi X3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiA+ID4g I2RlZmluZSBkaXJlY3RfZm9sZF9leHRyYWN0X29wdGFiX3N1cHBvcnRlZF9w IGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiA+ID4gI2RlZmluZSBkaXJl Y3RfZm9sZF9sZWZ0X29wdGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9z dXBwb3J0ZWRfcA0KPiA+ID4gI2RlZmluZSBkaXJlY3RfbWFza19mb2xkX2xl ZnRfb3B0YWJfc3VwcG9ydGVkX3AgZGlyZWN0X29wdGFiX3N1cHBvcnRlZF9w DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2dj Yy9pbnRlcm5hbC1mbi5kZWYNCj4gPiA+IGluZGV4IDdmZTc0MmMyYWU3Li4z YTkzM2FiZmY1ZCAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy9pbnRlcm5hbC1m bi5kZWYNCj4gPiA+ICsrKyBiL2djYy9pbnRlcm5hbC1mbi5kZWYNCj4gPiA+ IEBAIC0xNTMsNiArMTUzLDcgQEAgREVGX0lOVEVSTkFMX09QVEFCX0ZOIChW RUNfU0VULCAwLCB2ZWNfc2V0LCB2ZWNfc2V0KQ0KPiA+ID4gREVGX0lOVEVS TkFMX09QVEFCX0ZOIChMRU5fU1RPUkUsIDAsIGxlbl9zdG9yZSwgbGVuX3N0 b3JlKQ0KPiA+ID4gREVGX0lOVEVSTkFMX09QVEFCX0ZOIChXSElMRV9VTFQs IEVDRl9DT05TVCB8IEVDRl9OT1RIUk9XLCB3aGlsZV91bHQsIHdoaWxlKQ0K PiA+ID4gK0RFRl9JTlRFUk5BTF9PUFRBQl9GTiAoV0hJTEVfTEVOLCBFQ0Zf Q09OU1QgfCBFQ0ZfTk9USFJPVywgd2hpbGVfbGVuLCB3aGlsZV9sZW4pDQo+ ID4gPiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKENIRUNLX1JBV19QVFJTLCBF Q0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywNCj4gPiA+ICAgICAgICBjaGVja19y YXdfcHRycywgY2hlY2tfcHRycykNCj4gPiA+IERFRl9JTlRFUk5BTF9PUFRB Ql9GTiAoQ0hFQ0tfV0FSX1BUUlMsIEVDRl9DT05TVCB8IEVDRl9OT1RIUk9X LA0KPiA+ID4gZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMuZGVmIGIvZ2NjL29w dGFicy5kZWYNCj4gPiA+IGluZGV4IDY5NWY1OTExYjMwLi5mNTkzOGJkMmMy NCAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy9vcHRhYnMuZGVmDQo+ID4gPiAr KysgYi9nY2Mvb3B0YWJzLmRlZg0KPiA+ID4gQEAgLTQ3NiwzICs0NzYsNCBA QCBPUFRBQl9EQyAodmVjX3Nlcmllc19vcHRhYiwgInZlY19zZXJpZXMkYSIs IFZFQ19TRVJJRVMpDQo+ID4gPiBPUFRBQl9EICh2ZWNfc2hsX2luc2VydF9v cHRhYiwgInZlY19zaGxfaW5zZXJ0XyRhIikNCj4gPiA+IE9QVEFCX0QgKGxl bl9sb2FkX29wdGFiLCAibGVuX2xvYWRfJGEiKQ0KPiA+ID4gT1BUQUJfRCAo bGVuX3N0b3JlX29wdGFiLCAibGVuX3N0b3JlXyRhIikNCj4gPiA+ICtPUFRB Ql9EICh3aGlsZV9sZW5fb3B0YWIsICJ3aGlsZV9sZW4kYSIpDQo+ID4gPiBk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxvb3AtbWFuaXAuY2MgYi9nY2Mv dHJlZS1zc2EtbG9vcC1tYW5pcC5jYw0KPiA+ID4gaW5kZXggMDlhY2MxYzk0 Y2MuLmNkYmYyODBlMjQ5IDEwMDY0NA0KPiA+ID4gLS0tIGEvZ2NjL3RyZWUt c3NhLWxvb3AtbWFuaXAuY2MNCj4gPiA+ICsrKyBiL2djYy90cmVlLXNzYS1s b29wLW1hbmlwLmNjDQo+ID4gPiBAQCAtNTksMTQgKzU5LDE0IEBAIHN0YXRp YyBiaXRtYXBfb2JzdGFjayBsb29wX3JlbmFtZXJfb2JzdGFjazsNCj4gPiA+ IHZvaWQNCj4gPiA+IGNyZWF0ZV9pdiAodHJlZSBiYXNlLCB0cmVlIHN0ZXAs IHRyZWUgdmFyLCBjbGFzcyBsb29wICpsb29wLA0KPiA+ID4gICAgZ2ltcGxl X3N0bXRfaXRlcmF0b3IgKmluY3JfcG9zLCBib29sIGFmdGVyLA0KPiA+ID4g LSAgICB0cmVlICp2YXJfYmVmb3JlLCB0cmVlICp2YXJfYWZ0ZXIpDQo+ID4g PiArICAgIHRyZWUgKnZhcl9iZWZvcmUsIHRyZWUgKnZhcl9hZnRlciwgZW51 bSB0cmVlX2NvZGUgY29kZSkNCj4gPiA+IHsNCj4gPiA+ICAgIGdhc3NpZ24g KnN0bXQ7DQo+ID4gPiAgICBncGhpICpwaGk7DQo+ID4gPiAgICB0cmVlIGlu aXRpYWwsIHN0ZXAxOw0KPiA+ID4gICAgZ2ltcGxlX3NlcSBzdG10czsNCj4g PiA+ICAgIHRyZWUgdmIsIHZhOw0KPiA+ID4gLSAgZW51bSB0cmVlX2NvZGUg aW5jcl9vcCA9IFBMVVNfRVhQUjsNCj4gPiA+ICsgIGVudW0gdHJlZV9jb2Rl IGluY3Jfb3AgPSBjb2RlOw0KPiA+ID4gICAgZWRnZSBwZSA9IGxvb3BfcHJl aGVhZGVyX2VkZ2UgKGxvb3ApOw0KPiA+ID4gICAgaWYgKHZhciAhPSBOVUxM X1RSRUUpDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxvb3At bWFuaXAuaCBiL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4gPiA+IGlu ZGV4IGQ0OTI3M2EzOTg3Li5kYTc1NTMyMGEzYSAxMDA2NDQNCj4gPiA+IC0t LSBhL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4gPiA+ICsrKyBiL2dj Yy90cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4gPiA+IEBAIC0yMyw3ICsyMyw3 IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJ ZiBub3Qgc2VlDQo+ID4gPiB0eXBlZGVmIHZvaWQgKCp0cmFuc2Zvcm1fY2Fs bGJhY2spKGNsYXNzIGxvb3AgKiwgdm9pZCAqKTsNCj4gPiA+IGV4dGVybiB2 b2lkIGNyZWF0ZV9pdiAodHJlZSwgdHJlZSwgdHJlZSwgY2xhc3MgbG9vcCAq LCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqLA0KPiA+ID4gLSAgICAgICAgYm9v bCwgdHJlZSAqLCB0cmVlICopOw0KPiA+ID4gKyAgICAgICAgYm9vbCwgdHJl ZSAqLCB0cmVlICosIGVudW0gdHJlZV9jb2RlID0gUExVU19FWFBSKTsNCj4g PiA+IGV4dGVybiB2b2lkIHJld3JpdGVfaW50b19sb29wX2Nsb3NlZF9zc2Eg KGJpdG1hcCwgdW5zaWduZWQpOw0KPiA+ID4gZXh0ZXJuIHZvaWQgdmVyaWZ5 X2xvb3BfY2xvc2VkX3NzYSAoYm9vbCwgY2xhc3MgbG9vcCAqID0gTlVMTCk7 DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlw LmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjDQo+ID4gPiBpbmRl eCBmNjBmYTUwZThmNC4uZjNjZDZjNTFkMmUgMTAwNjQ0DQo+ID4gPiAtLS0g YS9nY2MvdHJlZS12ZWN0LWxvb3AtbWFuaXAuY2MNCj4gPiA+ICsrKyBiL2dj Yy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiA+ID4gQEAgLTY4Miw2ICs2 ODIsMTczIEBAIHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGNs YXNzIGxvb3AgKmxvb3AsIGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4g PiA+ICAgIHJldHVybiBuZXh0X2N0cmw7DQo+ID4gPiB9DQo+ID4gPiArLyog SGVscGVyIGZvciB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3Zl Y3RvcnMuICBHZW5lcmF0ZSBkZWZpbml0aW9ucw0KPiA+ID4gKyAgIGZvciBh bGwgdGhlIHJncm91cCBjb250cm9scyBpbiBSR0MgYW5kIHJldHVybiBhIGNv bnRyb2wgdGhhdCBpcyBub256ZXJvDQo+ID4gPiArICAgd2hlbiB0aGUgbG9v cCBuZWVkcyB0byBpdGVyYXRlLiAgQWRkIGFueSBuZXcgcHJlaGVhZGVyIHN0 YXRlbWVudHMgdG8NCj4gPiA+ICsgICBQUkVIRUFERVJfU0VRLiAgVXNlIExP T1BfQ09ORF9HU0kgdG8gaW5zZXJ0IGNvZGUgYmVmb3JlIHRoZSBleGl0IGdj b25kLg0KPiA+ID4gKw0KPiA+ID4gKyAgIFJHQyBiZWxvbmdzIHRvIGxvb3Ag TE9PUC4gIFRoZSBsb29wIG9yaWdpbmFsbHkgaXRlcmF0ZWQgTklURVJTDQo+ ID4gPiArICAgdGltZXMgYW5kIGhhcyBiZWVuIHZlY3Rvcml6ZWQgYWNjb3Jk aW5nIHRvIExPT1BfVklORk8uDQo+ID4gPiArDQo+ID4gPiArICAgVW5saWtl IHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgd2hpY2ggaXMgaXRl cmF0aW5nIGZyb20gMC1iYXNlZCBJVg0KPiA+ID4gKyAgIHRvIFRFU1RfTElN SVQgLSBiaWFzLg0KPiA+ID4gKw0KPiA+ID4gKyAgIEluIHZlY3Rfc2V0X2xv b3BfY29udHJvbHNfYnlfd2hpbGVfbGVuLCB3ZSBhcmUgaXRlcmF0aW5nIGZy b20gc3RhcnQgYXQNCj4gPiA+ICsgICBJViA9IFRFU1RfTElNSVQgLSBiaWFz IGFuZCBrZWVwIHN1YnRyYWN0IElWIGJ5IHRoZSBsZW5ndGggY2FsY3VsYXRl ZCBieQ0KPiA+ID4gKyAgIElGTl9XSElMRV9MRU4gcGF0dGVybi4NCj4gPiA+ ICsNCj4gPiA+ICsgICBOb3RlOiB0aGUgY29zdCBvZiB0aGUgY29kZSBnZW5l cmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyBtb2RlbGVkDQo+ID4gPiArICAg YnkgdmVjdF9lc3RpbWF0ZV9taW5fcHJvZml0YWJsZV9pdGVycywgc28gY2hh bmdlcyBoZXJlIG1heSBuZWVkDQo+ID4gPiArICAgY29ycmVzcG9uZGluZyBj aGFuZ2VzIHRoZXJlLg0KPiA+ID4gKw0KPiA+ID4gKyAgIDEuIFNpbmdsZSBy Z3JvdXAsIHRoZSBHaW1wbGUgSVIgc2hvdWxkIGJlOg0KPiA+ID4gKw0KPiA+ ID4gKyA8YmIgMz4NCj4gPiA+ICsgXzE5ID0gKHVuc2lnbmVkIGxvbmcpIG5f NShEKTsNCj4gPiA+ICsgLi4uDQo+ID4gPiArDQo+ID4gPiArIDxiYiA0PjoN Cj4gPiA+ICsgLi4uDQo+ID4gPiArICMgaXZ0bXBfMjAgPSBQSEkgPGl2dG1w XzIxKDQpLCBfMTkoMyk+DQo+ID4gPiArIC4uLg0KPiA+ID4gKyBfMjIgPSAu V0hJTEVfTEVOIChpdnRtcF8yMCwgdmYpOw0KPiA+ID4gKyAuLi4NCj4gPiA+ ICsgdmVjdG9yIHN0YXRlbWVudCAodXNlIF8yMik7DQo+ID4gPiArIC4uLg0K PiA+ID4gKyBpdnRtcF8yMSA9IGl2dG1wXzIwIC0gXzIyOw0KPiA+ID4gKyAu Li4NCj4gPiA+ICsgaWYgKGl2dG1wXzIxICE9IDApDQo+ID4gPiArICAgZ290 byA8YmIgND47IFs3NS4wMCVdDQo+ID4gPiArIGVsc2UNCj4gPiA+ICsgICBn b3RvIDxiYiA1PjsgWzI1LjAwJV0NCj4gPiA+ICsNCj4gPiA+ICsgPGJiIDU+ DQo+ID4gPiArIHJldHVybjsNCj4gPiA+ICsNCj4gPiA+ICsgICBOb3RlOiBJ Rk5fV0hJTEVfTEVOIHdpbGwgZ3VhcmFudGVlICJpdnRtcF8yMSA9IGl2dG1w XzIwIC0gXzIyIiBuZXZlcg0KPiA+ID4gKyAgIHVuZGVyZmxvdyAwLg0KPiA+ ID4gKw0KPiA+ID4gKyAgIDIuIE11bHRpcGxlIHJncm91cCwgdGhlIEdpbXBs ZSBJUiBzaG91bGQgYmU6DQo+ID4gPiArDQo+ID4gPiArIDxiYiAzPg0KPiA+ ID4gKyBfNzAgPSAodW5zaWduZWQgbG9uZykgYm5kLjdfNTI7DQo+ID4gPiAr IF83MSA9IF83MCAqIDI7DQo+ID4gPiArIF83MiA9IE1BWF9FWFBSIDxfNzEs IDQ+Ow0KPiA+ID4gKyBfNzMgPSBfNzIgKyAxODQ0Njc0NDA3MzcwOTU1MTYx MjsNCj4gPiA+ICsgLi4uDQo+ID4gPiArDQo+ID4gPiArIDxiYiA0PjoNCj4g PiA+ICsgLi4uDQo+ID4gPiArICMgaXZ0bXBfNzQgPSBQSEkgPGl2dG1wXzc1 KDYpLCBfNzMoMTIpPg0KPiA+ID4gKyAjIGl2dG1wXzc3ID0gUEhJIDxpdnRt cF83OCg2KSwgXzcxKDEyKT4NCj4gPiA+ICsgXzc2ID0gLldISUxFX0xFTiAo aXZ0bXBfNzQsIHZmICogbml0ZW1zX3Blcl9jdHJsKTsNCj4gPiA+ICsgXzc5 ID0gLldISUxFX0xFTiAoaXZ0bXBfNzcsIHZmICogbml0ZW1zX3Blcl9jdHJs KTsNCj4gPiA+ICsgLi4uDQo+ID4gPiArIHZlY3RvciBzdGF0ZW1lbnQgKHVz ZSBfNzkpOw0KPiA+ID4gKyAuLi4NCj4gPiA+ICsgdmVjdG9yIHN0YXRlbWVu dCAodXNlIF83Nik7DQo+ID4gPiArIC4uLg0KPiA+ID4gKyBfNjUgPSBfNzkg LyAyOw0KPiA+ID4gKyB2ZWN0b3Igc3RhdGVtZW50ICh1c2UgXzY1KTsNCj4g PiA+ICsgLi4uDQo+ID4gPiArIF82OCA9IF83NiAvIDI7DQo+ID4gPiArIHZl Y3RvciBzdGF0ZW1lbnQgKHVzZSBfNjgpOw0KPiA+ID4gKyAuLi4NCj4gPiA+ ICsgaXZ0bXBfNzggPSBpdnRtcF83NyAtIF83OTsNCj4gPiA+ICsgaXZ0bXBf NzUgPSBpdnRtcF83NCAtIF83NjsNCj4gPiA+ICsgLi4uDQo+ID4gPiArIGlm IChpdnRtcF83OCAhPSAwKQ0KPiA+ID4gKyAgIGdvdG8gPGJiIDQ+OyBbNzUu MDAlXQ0KPiA+ID4gKyBlbHNlDQo+ID4gPiArICAgZ290byA8YmIgNT47IFsy NS4wMCVdDQo+ID4gPiArDQo+ID4gPiArIDxiYiA1Pg0KPiA+ID4gKyByZXR1 cm47DQo+ID4gPiArDQo+ID4gPiArKi8NCj4gPiA+ICsNCj4gPiA+ICtzdGF0 aWMgdHJlZQ0KPiA+ID4gK3ZlY3Rfc2V0X2xvb3BfY29udHJvbHNfYnlfd2hp bGVfbGVuIChjbGFzcyBsb29wICpsb29wLCBsb29wX3ZlY19pbmZvIGxvb3Bf dmluZm8sDQo+ID4gPiArICAgICAgZ2ltcGxlX3NlcSAqcHJlaGVhZGVyX3Nl cSwNCj4gPiA+ICsgICAgICBnaW1wbGVfc2VxICpoZWFkZXJfc2VxLA0KPiA+ ID4gKyAgICAgIHJncm91cF9jb250cm9scyAqcmdjLCB0cmVlIG5pdGVycykN Cj4gPiA+ICt7DQo+ID4gPiArICB0cmVlIGNvbXBhcmVfdHlwZSA9IExPT1Bf VklORk9fUkdST1VQX0NPTVBBUkVfVFlQRSAobG9vcF92aW5mbyk7DQo+ID4g PiArICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBF IChsb29wX3ZpbmZvKTsNCj4gPiA+ICsgIC8qIFdlIGFyZSBub3QgYWxsb3dp bmcgbWFza2VkIGFwcHJvYWNoIGluIFdISUxFX0xFTi4gICovDQo+ID4gPiAr ICBnY2NfYXNzZXJ0ICghTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9v cF92aW5mbykpOw0KPiA+ID4gKw0KPiA+ID4gKyAgdHJlZSBjdHJsX3R5cGUg PSByZ2MtPnR5cGU7DQo+ID4gPiArICB1bnNpZ25lZCBpbnQgbml0ZW1zX3Bl cl9pdGVyID0gcmdjLT5tYXhfbnNjYWxhcnNfcGVyX2l0ZXIgKiByZ2MtPmZh Y3RvcjsNCj4gPiA+ICsgIHBvbHlfdWludDY0IG5pdGVtc19wZXJfY3RybCA9 IFRZUEVfVkVDVE9SX1NVQlBBUlRTIChjdHJsX3R5cGUpICogcmdjLT5mYWN0 b3I7DQo+ID4gPiArICBwb2x5X3VpbnQ2NCB2ZiA9IExPT1BfVklORk9fVkVD VF9GQUNUT1IgKGxvb3BfdmluZm8pOw0KPiA+ID4gKw0KPiA+ID4gKyAgLyog Q2FsY3VsYXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtIHZhbHVlcyB0 aGF0IHRoZSByZ3JvdXANCj4gPiA+ICsgICAgIGhhbmRsZXMgaW4gdG90YWws IHRoZSBudW1iZXIgdGhhdCBpdCBoYW5kbGVzIGZvciBlYWNoIGl0ZXJhdGlv bg0KPiA+ID4gKyAgICAgb2YgdGhlIHZlY3RvciBsb29wLiAgKi8NCj4gPiA+ ICsgIHRyZWUgbml0ZW1zX3RvdGFsID0gbml0ZXJzOw0KPiA+ID4gKyAgaWYg KG5pdGVtc19wZXJfaXRlciAhPSAxKQ0KPiA+ID4gKyAgICB7DQo+ID4gPiAr ICAgICAgLyogV2UgY2hlY2tlZCBiZWZvcmUgc2V0dGluZyBMT09QX1ZJTkZP X1VTSU5HX1BBUlRJQUxfVkVDVE9SU19QIHRoYXQNCj4gPiA+ICsgdGhlc2Ug bXVsdGlwbGljYXRpb25zIGRvbid0IG92ZXJmbG93LiAgKi8NCj4gPiA+ICsg ICAgICB0cmVlIGNvbXBhcmVfZmFjdG9yID0gYnVpbGRfaW50X2NzdCAoY29t cGFyZV90eXBlLCBuaXRlbXNfcGVyX2l0ZXIpOw0KPiA+ID4gKyAgICAgIG5p dGVtc190b3RhbCA9IGdpbXBsZV9idWlsZCAocHJlaGVhZGVyX3NlcSwgTVVM VF9FWFBSLCBjb21wYXJlX3R5cGUsDQo+ID4gPiArICAgIG5pdGVtc190b3Rh bCwgY29tcGFyZV9mYWN0b3IpOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ ID4gPiArICAvKiBDb252ZXJ0IHRoZSBjb21wYXJpc29uIHZhbHVlIHRvIHRo ZSBJViB0eXBlIChlaXRoZXIgYSBuby1vcCBvcg0KPiA+ID4gKyAgICAgYSBw cm9tb3Rpb24pLiAgKi8NCj4gPiA+ICsgIG5pdGVtc190b3RhbCA9IGdpbXBs ZV9jb252ZXJ0IChwcmVoZWFkZXJfc2VxLCBpdl90eXBlLCBuaXRlbXNfdG90 YWwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgLyogQ3JlYXRlIGFuIGluZHVjdGlv biB2YXJpYWJsZSB0aGF0IGNvdW50cyB0aGUgbnVtYmVyIG9mIGl0ZW1zDQo+ ID4gPiArICAgICBwcm9jZXNzZWQuICAqLw0KPiA+ID4gKyAgdHJlZSBpbmRl eF9iZWZvcmVfaW5jciwgaW5kZXhfYWZ0ZXJfaW5jcjsNCj4gPiA+ICsgIGdp bXBsZV9zdG10X2l0ZXJhdG9yIGluY3JfZ3NpOw0KPiA+ID4gKyAgYm9vbCBp bnNlcnRfYWZ0ZXI7DQo+ID4gPiArICBzdGFuZGFyZF9pdl9pbmNyZW1lbnRf cG9zaXRpb24gKGxvb3AsICZpbmNyX2dzaSwgJmluc2VydF9hZnRlcik7DQo+ ID4gPiArDQo+ID4gPiArICAvKiBUZXN0IHRoZSBkZWNyZW1lbnRlZCBJViwg d2hpY2ggd2lsbCBuZXZlciB1bmRlcmZsb3cgMCBzaW5jZSB3ZSBoYXZlDQo+ ID4gPiArICAgICBJRk5fV0hJTEVfTEVOIHRvIGd1cmFudGVlIHRoYXQuICAq Lw0KPiA+ID4gKyAgdHJlZSB0ZXN0X2xpbWl0ID0gbml0ZW1zX3RvdGFsOw0K PiA+ID4gKw0KPiA+ID4gKyAgLyogUHJvdmlkZSBhIGRlZmluaXRpb24gb2Yg ZWFjaCBjb250cm9sIGluIHRoZSBncm91cC4gICovDQo+ID4gPiArICB0cmVl IGN0cmw7DQo+ID4gPiArICB1bnNpZ25lZCBpbnQgaTsNCj4gPiA+ICsgIEZP Ul9FQUNIX1ZFQ19FTFRfUkVWRVJTRSAocmdjLT5jb250cm9scywgaSwgY3Ry bCkNCj4gPiA+ICsgICAgew0KPiA+ID4gKyAgICAgIC8qIFByZXZpb3VzIGNv bnRyb2xzIHdpbGwgY292ZXIgQklBUyBpdGVtcy4gIFRoaXMgY29udHJvbCBj b3ZlcnMgdGhlDQo+ID4gPiArIG5leHQgYmF0Y2guICAqLw0KPiA+ID4gKyAg ICAgIHBvbHlfdWludDY0IGJpYXMgPSBuaXRlbXNfcGVyX2N0cmwgKiBpOw0K PiA+ID4gKyAgICAgIHRyZWUgYmlhc190cmVlID0gYnVpbGRfaW50X2NzdCAo aXZfdHlwZSwgYmlhcyk7DQo+ID4gPiArDQo+ID4gPiArICAgICAgLyogUmF0 aGVyIHRoYW4gaGF2ZSBhIG5ldyBJViB0aGF0IHN0YXJ0cyBhdCBURVNUX0xJ TUlUIGFuZCBnb2VzIGRvd24gdG8NCj4gPiA+ICsgQklBUywgcHJlZmVyIHRv IHVzZSB0aGUgc2FtZSBURVNUX0xJTUlUIC0gQklBUyBiYXNlZCBJViBmb3Ig ZWFjaA0KPiA+ID4gKyBjb250cm9sIGFuZCBhZGp1c3QgdGhlIGJvdW5kIGRv d24gYnkgQklBUy4gICovDQo+ID4gPiArICAgICAgdHJlZSB0aGlzX3Rlc3Rf bGltaXQgPSB0ZXN0X2xpbWl0Ow0KPiA+ID4gKyAgICAgIGlmIChpICE9IDAp DQo+ID4gPiArIHsNCj4gPiA+ICsgICB0aGlzX3Rlc3RfbGltaXQgPSBnaW1w bGVfYnVpbGQgKHByZWhlYWRlcl9zZXEsIE1BWF9FWFBSLCBpdl90eXBlLA0K PiA+ID4gKyAgIHRoaXNfdGVzdF9saW1pdCwgYmlhc190cmVlKTsNCj4gPiA+ ICsgICB0aGlzX3Rlc3RfbGltaXQgPSBnaW1wbGVfYnVpbGQgKHByZWhlYWRl cl9zZXEsIE1JTlVTX0VYUFIsIGl2X3R5cGUsDQo+ID4gPiArICAgdGhpc190 ZXN0X2xpbWl0LCBiaWFzX3RyZWUpOw0KPiA+ID4gKyB9DQo+ID4gPiArDQo+ ID4gPiArICAgICAgLyogQ3JlYXRlIGRlY3JlbWVudCBJVi4gICovDQo+ID4g PiArICAgICAgY3JlYXRlX2l2ICh0aGlzX3Rlc3RfbGltaXQsIGN0cmwsIE5V TExfVFJFRSwgbG9vcCwgJmluY3JfZ3NpLA0KPiA+ID4gKyBpbnNlcnRfYWZ0 ZXIsICZpbmRleF9iZWZvcmVfaW5jciwgJmluZGV4X2FmdGVyX2luY3IsDQo+ ID4gPiArIE1JTlVTX0VYUFIpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgIHBv bHlfdWludDY0IGZpbmFsX3ZmID0gdmYgKiBuaXRlbXNfcGVyX2l0ZXI7DQo+ ID4gPiArICAgICAgdHJlZSB2Zl9zdGVwID0gYnVpbGRfaW50X2NzdCAoaXZf dHlwZSwgZmluYWxfdmYpOw0KPiA+ID4gKyAgICAgIHRyZWUgcmVzX2xlbiA9 IGdpbXBsZV9idWlsZCAoaGVhZGVyX3NlcSwgSUZOX1dISUxFX0xFTiwgaXZf dHlwZSwNCj4gPiA+ICsgICAgaW5kZXhfYmVmb3JlX2luY3IsIHZmX3N0ZXAp Ow0KPiA+ID4gKyAgICAgIGdhc3NpZ24gKmFzc2lnbiA9IGdpbXBsZV9idWls ZF9hc3NpZ24gKGN0cmwsIHJlc19sZW4pOw0KPiA+ID4gKyAgICAgIGdpbXBs ZV9zZXFfYWRkX3N0bXQgKGhlYWRlcl9zZXEsIGFzc2lnbik7DQo+ID4gPiAr ICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBpbmRleF9hZnRlcl9p bmNyOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+IC8qIFNldCB1cCB0aGUg aXRlcmF0aW9uIGNvbmRpdGlvbiBhbmQgcmdyb3VwIGNvbnRyb2xzIGZvciBM T09QLCBnaXZlbg0KPiA+ID4gICAgIHRoYXQgTE9PUF9WSU5GT19VU0lOR19Q QVJUSUFMX1ZFQ1RPUlNfUCBpcyB0cnVlIGZvciB0aGUgdmVjdG9yaXplZA0K PiA+ID4gICAgIGxvb3AuICBMT09QX1ZJTkZPIGRlc2NyaWJlcyB0aGUgdmVj dG9yaXphdGlvbiBvZiBMT09QLiAgTklURVJTIGlzDQo+ID4gPiBAQCAtNzAz LDYgKzg3MCw3IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxf dmVjdG9ycyAoY2xhc3MgbG9vcCAqbG9vcCwNCj4gPiA+ICAgIGJvb2wgdXNl X21hc2tzX3AgPSBMT09QX1ZJTkZPX0ZVTExZX01BU0tFRF9QIChsb29wX3Zp bmZvKTsNCj4gPiA+ICAgIHRyZWUgY29tcGFyZV90eXBlID0gTE9PUF9WSU5G T19SR1JPVVBfQ09NUEFSRV9UWVBFIChsb29wX3ZpbmZvKTsNCj4gPiA+ICsg IHRyZWUgaXZfdHlwZSA9IExPT1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxv b3BfdmluZm8pOw0KPiA+ID4gICAgdW5zaWduZWQgaW50IGNvbXBhcmVfcHJl Y2lzaW9uID0gVFlQRV9QUkVDSVNJT04gKGNvbXBhcmVfdHlwZSk7DQo+ID4g PiAgICB0cmVlIG9yaWdfbml0ZXJzID0gbml0ZXJzOw0KPiA+ID4gQEAgLTc1 NywxMiArOTI1LDE4IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRp YWxfdmVjdG9ycyAoY2xhc3MgbG9vcCAqbG9vcCwNCj4gPiA+IGJvb2wgbWln aHRfd3JhcF9wID0gdmVjdF9yZ3JvdXBfaXZfbWlnaHRfd3JhcF9wIChsb29w X3ZpbmZvLCByZ2MpOw0KPiA+ID4gLyogU2V0IHVwIGFsbCBjb250cm9scyBm b3IgdGhpcyBncm91cC4gICovDQo+ID4gPiAtIHRlc3RfY3RybCA9IHZlY3Rf c2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGxvb3AsIGxvb3BfdmluZm8s DQo+ID4gPiAtICAgICAgJnByZWhlYWRlcl9zZXEsDQo+ID4gPiAtICAgICAg JmhlYWRlcl9zZXEsDQo+ID4gPiAtICAgICAgbG9vcF9jb25kX2dzaSwgcmdj LA0KPiA+ID4gLSAgICAgIG5pdGVycywgbml0ZXJzX3NraXAsDQo+ID4gPiAt ICAgICAgbWlnaHRfd3JhcF9wKTsNCj4gPiA+ICsgaWYgKGRpcmVjdF9pbnRl cm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX1dISUxFX0xFTiwgaXZfdHlwZSwN Cj4gPiA+ICsgICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkpDQo+ID4gPiArICAg dGVzdF9jdHJsDQo+ID4gPiArICAgICA9IHZlY3Rfc2V0X2xvb3BfY29udHJv bHNfYnlfd2hpbGVfbGVuIChsb29wLCBsb29wX3ZpbmZvLA0KPiA+ID4gKyAg ICAmcHJlaGVhZGVyX3NlcSwgJmhlYWRlcl9zZXEsDQo+ID4gPiArICAgIHJn Yywgbml0ZXJzKTsNCj4gPiA+ICsgZWxzZQ0KPiA+ID4gKyAgIHRlc3RfY3Ry bA0KPiA+ID4gKyAgICAgPSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVj dGx5IChsb29wLCBsb29wX3ZpbmZvLCAmcHJlaGVhZGVyX3NlcSwNCj4gPiA+ ICsgICAgICAgICZoZWFkZXJfc2VxLCBsb29wX2NvbmRfZ3NpLCByZ2MsDQo+ ID4gPiArICAgICAgICBuaXRlcnMsIG5pdGVyc19za2lwLA0KPiA+ID4gKyAg ICAgICAgbWlnaHRfd3JhcF9wKTsNCj4gPiA+ICAgICAgICB9DQo+ID4gPiAg ICAvKiBFbWl0IGFsbCBhY2N1bXVsYXRlZCBzdGF0ZW1lbnRzLiAgKi8NCj4g PiA+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MgYi9nY2Mv dHJlZS12ZWN0LWxvb3AuY2MNCj4gPiA+IGluZGV4IDFiYTlmMThkNzNlLi41 YmZmZDlhNjMyMiAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy90cmVlLXZlY3Qt bG9vcC5jYw0KPiA+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQo+ ID4gPiBAQCAtMTAzNjAsMTIgKzEwMzYwLDE0IEBAIHZlY3RfcmVjb3JkX2xv b3BfbGVuIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIHZlY19sb29wX2xl bnMgKmxlbnMsDQo+ID4gPiAgICAgcmdyb3VwIHRoYXQgb3BlcmF0ZXMgb24g TlZFQ1RPUlMgdmVjdG9ycywgd2hlcmUgMCA8PSBJTkRFWCA8IE5WRUNUT1JT LiAgKi8NCj4gPiA+IHRyZWUNCj4gPiA+IC12ZWN0X2dldF9sb29wX2xlbiAo bG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5z LA0KPiA+ID4gLSAgICB1bnNpZ25lZCBpbnQgbnZlY3RvcnMsIHVuc2lnbmVk IGludCBpbmRleCkNCj4gPiA+ICt2ZWN0X2dldF9sb29wX2xlbiAoZ2ltcGxl X3N0bXRfaXRlcmF0b3IgKmdzaSwgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZv LA0KPiA+ID4gKyAgICB2ZWNfbG9vcF9sZW5zICpsZW5zLCB1bnNpZ25lZCBp bnQgbnZlY3RvcnMsIHRyZWUgdmVjdHlwZSwNCj4gPiA+ICsgICAgdW5zaWdu ZWQgaW50IGluZGV4KQ0KPiA+ID4gew0KPiA+ID4gICAgcmdyb3VwX2NvbnRy b2xzICpyZ2wgPSAmKCpsZW5zKVtudmVjdG9ycyAtIDFdOw0KPiA+ID4gLSAg Ym9vbCB1c2VfYmlhc19hZGp1c3RlZF9sZW4gPQ0KPiA+ID4gLSAgICBMT09Q X1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKSAh PSAwOw0KPiA+ID4gKyAgYm9vbCB1c2VfYmlhc19hZGp1c3RlZF9sZW4NCj4g PiA+ICsgICAgPSBMT09QX1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFT IChsb29wX3ZpbmZvKSAhPSAwOw0KPiA+ID4gKyAgdHJlZSBpdl90eXBlID0g TE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyk7DQo+ID4g PiAgICAvKiBQb3B1bGF0ZSB0aGUgcmdyb3VwJ3MgbGVuIGFycmF5LCBpZiB0 aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlDQo+ID4gPiAgICAgICB1c2Vk IGl0LiAgKi8NCj4gPiA+IEBAIC0xMDM4Niw4ICsxMDM4OCw4IEBAIHZlY3Rf Z2V0X2xvb3BfbGVuIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIHZlY19s b29wX2xlbnMgKmxlbnMsDQo+ID4gPiAgIGlmICh1c2VfYmlhc19hZGp1c3Rl ZF9sZW4pDQo+ID4gPiAgICAgew0KPiA+ID4gICAgICAgZ2NjX2Fzc2VydCAo aSA9PSAwKTsNCj4gPiA+IC0gICAgICAgdHJlZSBhZGp1c3RlZF9sZW4gPQ0K PiA+ID4gLSBtYWtlX3RlbXBfc3NhX25hbWUgKGxlbl90eXBlLCBOVUxMLCAi YWRqdXN0ZWRfbG9vcF9sZW4iKTsNCj4gPiA+ICsgICAgICAgdHJlZSBhZGp1 c3RlZF9sZW4NCj4gPiA+ICsgPSBtYWtlX3RlbXBfc3NhX25hbWUgKGxlbl90 eXBlLCBOVUxMLCAiYWRqdXN0ZWRfbG9vcF9sZW4iKTsNCj4gPiA+ICAgICAg IFNTQV9OQU1FX0RFRl9TVE1UIChhZGp1c3RlZF9sZW4pID0gZ2ltcGxlX2J1 aWxkX25vcCAoKTsNCj4gPiA+ICAgICAgIHJnbC0+Ymlhc19hZGp1c3RlZF9j dHJsID0gYWRqdXN0ZWRfbGVuOw0KPiA+ID4gICAgIH0NCj4gPiA+IEBAIC0x MDM5Niw2ICsxMDM5OCwyNyBAQCB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92 ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KPiA+ ID4gICAgaWYgKHVzZV9iaWFzX2FkanVzdGVkX2xlbikNCj4gPiA+ICAgICAg cmV0dXJuIHJnbC0+Ymlhc19hZGp1c3RlZF9jdHJsOw0KPiA+ID4gKyAgZWxz ZSBpZiAoZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChJRk5fV0hJ TEVfTEVOLCBpdl90eXBlLA0KPiA+ID4gKyAgICBPUFRJTUlaRV9GT1JfU1BF RUQpKQ0KPiA+ID4gKyAgICB7DQo+ID4gPiArICAgICAgdHJlZSBsb29wX2xl biA9IHJnbC0+Y29udHJvbHNbaW5kZXhdOw0KPiA+ID4gKyAgICAgIHBvbHlf aW50NjQgbnVuaXRzMSA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTIChyZ2wtPnR5 cGUpOw0KPiA+ID4gKyAgICAgIHBvbHlfaW50NjQgbnVuaXRzMiA9IFRZUEVf VkVDVE9SX1NVQlBBUlRTICh2ZWN0eXBlKTsNCj4gPiA+ICsgICAgICBpZiAo bWF5YmVfbmUgKG51bml0czEsIG51bml0czIpKQ0KPiA+ID4gKyB7DQo+ID4g PiArICAgLyogQSBsb29wIGxlbiBmb3IgZGF0YSB0eXBlIFggY2FuIGJlIHJl dXNlZCBmb3IgZGF0YSB0eXBlIFkNCj4gPiA+ICsgICAgICBpZiBYIGhhcyBO IHRpbWVzIG1vcmUgZWxlbWVudHMgdGhhbiBZIGFuZCBpZiBZJ3MgZWxlbWVu dHMNCj4gPiA+ICsgICAgICBhcmUgTiB0aW1lcyBiaWdnZXIgdGhhbiBYJ3Mu ICAqLw0KPiA+ID4gKyAgIGdjY19hc3NlcnQgKG11bHRpcGxlX3AgKG51bml0 czEsIG51bml0czIpKTsNCj4gPiA+ICsgICB1bnNpZ25lZCBpbnQgZmFjdG9y ID0gZXhhY3RfZGl2IChudW5pdHMxLCBudW5pdHMyKS50b19jb25zdGFudCAo KTsNCj4gPiA+ICsgICBnaW1wbGVfc2VxIHNlcSA9IE5VTEw7DQo+ID4gPiAr ICAgbG9vcF9sZW4gPSBnaW1wbGVfYnVpbGQgKCZzZXEsIFJESVZfRVhQUiwg aXZfdHlwZSwgbG9vcF9sZW4sDQo+ID4gPiArICAgIGJ1aWxkX2ludF9jc3Qg KGl2X3R5cGUsIGZhY3RvcikpOw0KPiA+ID4gKyAgIGlmIChzZXEpDQo+ID4g PiArICAgICBnc2lfaW5zZXJ0X3NlcV9iZWZvcmUgKGdzaSwgc2VxLCBHU0lf U0FNRV9TVE1UKTsNCj4gPiA+ICsgfQ0KPiA+ID4gKyAgICAgIHJldHVybiBs b29wX2xlbjsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gICAgZWxzZQ0KPiA+ID4g ICAgICByZXR1cm4gcmdsLT5jb250cm9sc1tpbmRleF07DQo+ID4gPiB9DQo+ ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2dj Yy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gPiA+IGluZGV4IGVmYTJkMGRhYTUy Li43MDhjOGExZDgwNiAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy90cmVlLXZl Y3Qtc3RtdHMuY2MNCj4gPiA+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMu Y2MNCj4gPiA+IEBAIC04NjUzLDggKzg2NTMsOSBAQCB2ZWN0b3JpemFibGVf c3RvcmUgKHZlY19pbmZvICp2aW5mbywNCj4gPiA+ICAgICAgIGVsc2UgaWYg KGxvb3BfbGVucykNCj4gPiA+IHsNCj4gPiA+ICAgdHJlZSBmaW5hbF9sZW4N Cj4gPiA+IC0gICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8s IGxvb3BfbGVucywNCj4gPiA+IC0gdmVjX251bSAqIG5jb3BpZXMsIHZlY19u dW0gKiBqICsgaSk7DQo+ID4gPiArICAgICA9IHZlY3RfZ2V0X2xvb3BfbGVu IChnc2ksIGxvb3BfdmluZm8sIGxvb3BfbGVucywNCj4gPiA+ICsgdmVjX251 bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQo+ID4gPiArIHZlY19udW0gKiBqICsg aSk7DQo+ID4gPiAgIHRyZWUgcHRyID0gYnVpbGRfaW50X2NzdCAocmVmX3R5 cGUsIGFsaWduICogQklUU19QRVJfVU5JVCk7DQo+ID4gPiAgIG1hY2hpbmVf bW9kZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlwZSk7DQo+ID4gPiAgIG9w dF9tYWNoaW5lX21vZGUgbmV3X292bW9kZQ0KPiA+ID4gQEAgLTEwMDA5LDgg KzEwMDEwLDggQEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19pbmZvICp2aW5m bywNCj4gPiA+ICAgICBlbHNlIGlmIChsb29wX2xlbnMgJiYgbWVtb3J5X2Fj Y2Vzc190eXBlICE9IFZNQVRfSU5WQVJJQU5UKQ0KPiA+ID4gICAgICAgew0K PiA+ID4gdHJlZSBmaW5hbF9sZW4NCj4gPiA+IC0gICA9IHZlY3RfZ2V0X2xv b3BfbGVuIChsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQo+ID4gPiAtICAgICAg ICB2ZWNfbnVtICogbmNvcGllcywNCj4gPiA+ICsgICA9IHZlY3RfZ2V0X2xv b3BfbGVuIChnc2ksIGxvb3BfdmluZm8sIGxvb3BfbGVucywNCj4gPiA+ICsg ICAgICAgIHZlY19udW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KPiA+ID4gICAg ICAgIHZlY19udW0gKiBqICsgaSk7DQo+ID4gPiB0cmVlIHB0ciA9IGJ1aWxk X2ludF9jc3QgKHJlZl90eXBlLA0KPiA+ID4gICBhbGlnbiAqIEJJVFNfUEVS X1VOSVQpOw0KPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6 ZXIuaCBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KPiA+ID4gaW5kZXggOWNm MmZiMjNmZTMuLmU1Y2YzOGNhZjRiIDEwMDY0NA0KPiA+ID4gLS0tIGEvZ2Nj L3RyZWUtdmVjdG9yaXplci5oDQo+ID4gPiArKysgYi9nY2MvdHJlZS12ZWN0 b3JpemVyLmgNCj4gPiA+IEBAIC0yMjkzLDggKzIyOTMsOCBAQCBleHRlcm4g dHJlZSB2ZWN0X2dldF9sb29wX21hc2sgKGdpbXBsZV9zdG10X2l0ZXJhdG9y ICosIHZlY19sb29wX21hc2tzICosDQo+ID4gPiB1bnNpZ25lZCBpbnQsIHRy ZWUsIHVuc2lnbmVkIGludCk7DQo+ID4gPiBleHRlcm4gdm9pZCB2ZWN0X3Jl Y29yZF9sb29wX2xlbiAobG9vcF92ZWNfaW5mbywgdmVjX2xvb3BfbGVucyAq LCB1bnNpZ25lZCBpbnQsDQo+ID4gPiAgIHRyZWUsIHVuc2lnbmVkIGludCk7 DQo+ID4gPiAtZXh0ZXJuIHRyZWUgdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3Bf dmVjX2luZm8sIHZlY19sb29wX2xlbnMgKiwgdW5zaWduZWQgaW50LA0KPiA+ ID4gLSAgICAgICAgdW5zaWduZWQgaW50KTsNCj4gPiA+ICtleHRlcm4gdHJl ZSB2ZWN0X2dldF9sb29wX2xlbiAoZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKiwg bG9vcF92ZWNfaW5mbywNCj4gPiA+ICsgICAgICAgIHZlY19sb29wX2xlbnMg KiwgdW5zaWduZWQgaW50LCB0cmVlLCB1bnNpZ25lZCBpbnQpOw0KPiA+ID4g ZXh0ZXJuIGdpbXBsZV9zZXEgdmVjdF9nZW5fbGVuICh0cmVlLCB0cmVlLCB0 cmVlLCB0cmVlKTsNCj4gPiA+IGV4dGVybiBzdG10X3ZlY19pbmZvIGluZm9f Zm9yX3JlZHVjdGlvbiAodmVjX2luZm8gKiwgc3RtdF92ZWNfaW5mbyk7DQo+ ID4gPiBleHRlcm4gYm9vbCByZWR1Y3Rpb25fZm5fZm9yX3NjYWxhcl9jb2Rl IChjb2RlX2hlbHBlciwgaW50ZXJuYWxfZm4gKik7DQo+ID4gDQo+ICANCj4g DQogDQotLSANClJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4N ClNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgRnJhbmtl bnN0cmFzc2UgMTQ2LCA5MDQ2MSBOdWVybmJlcmcsDQpHZXJtYW55OyBHRjog SXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFsZCwgQm91 ZGllbiBNb2VybWFuOw0KSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQogDQo= ------=_001_NextPart136064087480_=------