From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) by sourceware.org (Postfix) with ESMTPS id 05D143858D33 for ; Fri, 5 May 2023 15:57:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 05D143858D33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R181e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046050;MF=sinan.lin@linux.alibaba.com;NM=1;PH=DW;RN=3;SR=0;TI=W4_0.1.47_DEFAULT_21283DCF_1683301808152_o7001c30k; Received: from WS-web (sinan.lin@linux.alibaba.com[W4_0.1.47_DEFAULT_21283DCF_1683301808152_o7001c30k]) at Fri, 05 May 2023 23:57:10 +0800 Date: Fri, 05 May 2023 23:57:10 +0800 From: "Sinan" To: "Fei Gao" Cc: "Jiawei" , "gcc-patches" Reply-To: "Sinan" Message-ID: <991049a4-d55b-4cb6-8d2f-6d9979047517.sinan.lin@linux.alibaba.com> Subject: =?UTF-8?B?UmU6IFtQQVRDSCA0LzVdIFJJU0MtVjogQWRkIFpjbXAgZXh0ZW5zaW9uIHN1cHBvcnRzLg==?= X-Mailer: [Alimail-Mailagent revision 29][W4_0.1.47][DEFAULT][Chrome] MIME-Version: 1.0 References: <2023042518114000378158@eswincomputing.com> x-aliyun-mail-creator: W4_0.1.47_DEFAULT_QvNTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMi4wLjAuMCBTYWZhcmkvNTM3LjM2La In-Reply-To: <2023042518114000378158@eswincomputing.com> Content-Type: multipart/alternative; boundary="----=ALIBOUNDARY_44548_7f0370adb700_64552756_3e794" X-Spam-Status: No, score=-20.1 required=5.0 tests=BAYES_00,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL 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: ------=ALIBOUNDARY_44548_7f0370adb700_64552756_3e794 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 PiBoaSBKaWF3ZWkKPiAKPiBQbGVhc2UgaWdub3JlIG15IHByZXZpb3VzIHJl cGx5LiBJIGFjY2lkZW50bHkgc2VudCB0aGUgZW1haWwgYmVmb3JlIEkgZmlu aXNoZWQgaXQuCj4gU29ycnkgZm9yIHRoYXQhCj4gCj4gSSBkb3dubG9hZGVk IHRoZSBzZXJpZXMgb2YgcGF0Y2hlcyBmcm9tIHlvdSBhbmQgZm91bmQgaW4g c29tZSBjYXNlcwo+IGl0IGZhaWxzIHRvIGdlbmVyYXRlIHpjbXAgcHVzaCBh bmQgcG9wIGluc25zLgo+IAo+IFRDOgo+IAo+IGNoYXIgbXlfZ2V0Y2hhcigp Owo+IGludCB0ZXN0X3MwKCkKPiB7Cj4gCj4gaW50IGEgPSBteV9nZXRjaGFy KCk7Cj4gaW50IGIgPSBteV9nZXRjaGFyKCk7Cj4gcmV0dXJuIGErYjsKPiB9 Cj4gCj4gY2MxIC1mbm8tc2hyaW5rLXdyYXAtc2VwYXJhdGUgLU8yIC1tYXJj aD1ydjMyZV96Y2FfemNtcCAtbWFiaT1pbHAzMmUgLW1jbW9kZWw9bWVkbG93 IHRlc3QuYwo+IAo+IC1mbm8tc2hyaW5rLXdyYXAtc2VwYXJhdGUgaXMgdXNl ZCBoZXJlIHRvIGF2b2lkIHRoZSBpbXBhY3QgZnJvbSBzaHJpbmstd3JhcC1z ZXBhcmF0ZSB0aGF0IGlzIGJ5IGRlZmF1bHQKPiBlbmFibGVkIGluIE8yLgo+ IAo+IEFzIGknbSBhbHNvIGludGVyZXN0ZWQgaW4gWmMqLCBpIGRpZCBzb21l IGNoYW5nZXMgbWFpbmx5IGluIHByb2xvZ3VlIGFuZCBlcGlsb2d1ZSBwYXNz IHF1aXRlIHNpbWxpYXIgdG8KPiB3aGF0IGhhcyBiZWVuIGRvbmUgZm9yIHNh dmUgYW5kIHJlc3RvcmUgZXhjZXB0IHRoZSBDRkkgZGlyZWN0aXZlcyBkdWUg dG8gcmV2ZXJzZWQgb3JkZXIgdGhhdCB6Y21wCj4gcHVzaGVzIGFuZCBwb3Bz IHJhLCBzIHJlZ3MgdGhhbiB3aGF0IHNhdmUgYW5kIHJlc3RvcmUgZG8uIAo+ IAo+IEkgd2lsbCByZWZpbmUgYW5kIHNoYXJlIHRoZSBjb2RlIHNvb24gZm9y IHlvdXIgcmV2aWV3Lgo+IAo+IEJSCj4gRmVpCkhpIEZlaSwKSW4gdGhlIGN1 cnJlbnQgaW1wbGVtZW50YXRpb24sIGNtLnB1c2ggd2lsbCBub3QgaW5jcmVh c2UgdGhlIG9yaWdpbmFsIGFkanVzdG1lbnQgc2l6ZSBvZiB0aGUgc3RhY2sg cG9pbnRlci4gQXMgY20ucHVzaCB1c2VzIGEgbWluaW11bSBhZGp1c3RtZW50 IHNpemUgb2YgMTYsIGFuZCBpbiB5b3VyIGV4YW1wbGUsIHRoZSBhZGp1c3Rt ZW50IHNpemUgb2Ygc3AgaXMgMTIsIHNvIGNtLnB1c2ggd2lsbCBub3QgYmUg Z2VuZXJhdGVkLgp5b3UgY2FuIGZpbmQgdGhlIGNoZWNrIGF0IHJpc2N2X3Vz ZV9wdXNoX3BvcAo+ID4gKyAqLwo+ID4gKyBpZiAoYmFzZV9zaXplID4gZnJh bWVfc2l6ZSkKPiA+ICsgcmV0dXJuIGZhbHNlOwo+ID4gKwpBbmQgaWYgdGhp cyBjaGVjayBpcyByZW1vdmVkLCB0aGVuIHlvdSBjYW4gZ2V0IHRoZSBvdXRw dXQgdGhhdCB5b3UgZXhwZWN0LiAKYGBgCiBjbS5wdXNoIHtyYSxzMH0sLTE2 CiBjYWxsIG15X2dldGNoYXIKIG12IHMwLGEwCiBjYWxsIG15X2dldGNoYXIK IGFkZCBhMCxzMCxhMAogY20ucG9wcmV0IHtyYSxzMH0sMTYKYGBgCkluIG1h bnkgc2NlbmFyaW9zIG9mIHJ2MzJlLCBjbS5wdXNoIGNhbm5vdCBiZSBnZW5l cmF0ZWQgYXMgYSByZXN1bHQuIFBlcmhhcHMgd2UgY2FuIHJlbW92ZSB0aGlz IGNoZWNrPyBJIGhhdmVuJ3QgdGVzdGVkIGlmIGl0IGlzIG9rIHRvIHJlbW92 ZSB0aGlzIGNoZWNrLCBhbmQgQ0Mgamlhd2VpIHRvIGhlbHAgdGVzdCBpdC4K QlIsClNpbmFuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTZW5kZXI6RmVpIEdh byA8Z2FvZmVpQGVzd2luY29tcHV0aW5nLmNvbT4KU2VudCBBdDoyMDIzIEFw ci4gMjUgKFR1ZS4pIDE4OjEyClJlY2lwaWVudDpqaWF3ZWkgPGppYXdlaUBp c2Nhcy5hYy5jbj4KQ2M6Z2NjLXBhdGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5n bnUub3JnPgpTdWJqZWN0OltQQVRDSCA0LzVdIFJJU0MtVjogQWRkIFpjbXAg ZXh0ZW5zaW9uIHN1cHBvcnRzLgpoaSBKaWF3ZWkKUGxlYXNlIGlnbm9yZSBt eSBwcmV2aW91cyByZXBseS4gSSBhY2NpZGVudGx5IHNlbnQgdGhlIGVtYWls IGJlZm9yZSBJIGZpbmlzaGVkIGl0LgpTb3JyeSBmb3IgdGhhdCEKSSBkb3du bG9hZGVkIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcyBmcm9tIHlvdSBhbmQgZm91 bmQgaW4gc29tZSBjYXNlcwppdCBmYWlscyB0byBnZW5lcmF0ZSB6Y21wIHB1 c2ggYW5kIHBvcCBpbnNucy4KVEM6CmNoYXIgbXlfZ2V0Y2hhcigpOwppbnQg dGVzdF9zMCgpCnsKIGludCBhID0gbXlfZ2V0Y2hhcigpOwogaW50IGIgPSBt eV9nZXRjaGFyKCk7CiByZXR1cm4gYStiOwp9CmNjMSAtZm5vLXNocmluay13 cmFwLXNlcGFyYXRlIC1PMiAtbWFyY2g9cnYzMmVfemNhX3pjbXAgLW1hYmk9 aWxwMzJlIC1tY21vZGVsPW1lZGxvdyB0ZXN0LmMKLWZuby1zaHJpbmstd3Jh cC1zZXBhcmF0ZSBpcyB1c2VkIGhlcmUgdG8gYXZvaWQgdGhlIGltcGFjdCBm cm9tIHNocmluay13cmFwLXNlcGFyYXRlIHRoYXQgaXMgYnkgZGVmYXVsdApl bmFibGVkIGluIE8yLgpBcyBpJ20gYWxzbyBpbnRlcmVzdGVkIGluIFpjKiwg aSBkaWQgc29tZSBjaGFuZ2VzIG1haW5seSBpbiBwcm9sb2d1ZSBhbmQgZXBp bG9ndWUgcGFzcyBxdWl0ZSBzaW1saWFyIHRvCndoYXQgaGFzIGJlZW4gZG9u ZSBmb3Igc2F2ZSBhbmQgcmVzdG9yZSBleGNlcHQgdGhlIENGSSBkaXJlY3Rp dmVzIGR1ZSB0byByZXZlcnNlZCBvcmRlciB0aGF0IHpjbXAKcHVzaGVzIGFu ZCBwb3BzIHJhLCBzIHJlZ3MgdGhhbiB3aGF0IHNhdmUgYW5kIHJlc3RvcmUg ZG8uIApJIHdpbGwgcmVmaW5lIGFuZCBzaGFyZSB0aGUgY29kZSBzb29uIGZv ciB5b3VyIHJldmlldy4KQlIKRmVpCk9uIFRodSBBcHIgNiAwNjoyMToxNyBH TVQgMjAyMyBKaWF3ZWkgamlhd2VpQGlzY2FzLmFjLmNuIHdyb3RlOgo+Cj5B ZGQgWmNtcCBleHRlbnNpb24gaW5zdHJ1Y3Rpb25zIHN1cHBvcnQuIEdlbmVy YXRlIHB1c2gvcG9wCj53aXRoIGZvbGxvdyBzdGVwczoKPgo+IDEuIHByZXBy b2Nlc3Npbmc6Cj4gMS4xLiBpZiB0aGVyZSBpcyBubyBwdXNoIHJ0eCwgdGhl biBqdXN0IHJldHVybi4gZS5nLgo+IChub3RlIDUgMSAyMiAyIFtiYiAyXSBO T1RFX0lOU05fQkFTSUNfQkxPQ0spCj4gKGluc24vZiAyMiA1IDIzIDIgKHNl dCAocmVnL2Y6U0kgMiBzcCkKPiAocGx1czpTSSAocmVnL2Y6U0kgMiBzcCkK PiAoY29uc3RfaW50IC0zMiBbMHhmZmZmZmZmZmZmZmZmZmUwXSkpKQo+IChu aWwpKQo+IChub3RlIDIzIDIyIDIgMiBOT1RFX0lOU05fUFJPTE9HVUVfRU5E KQo+IDEuMi4gaWYgcHVzaCBydHggZXhpc3RzLCB0aGVuIHdlIGNvbXB1dGUg dGhlIG51bWJlciBvZgo+IHB1c2hlZCBzLXJlZ2lzdGVycywgbl9zcmVnLgo+ Cj4gcHVzaCBydHggc2hvdWxkIGJlIGZpbmQgYmVmb3JlIE5PVEVfSU5TTl9Q Uk9MT0dVRV9FTkQgdGFnCj4KPiBbMiBhbmQgMyBoYXBwZW5kIHNpbXVsdGFu ZW91c2x5XQo+Cj4gMi4gZmluZCB2YWxpZCBtb3ZlIHBhdHRlcm4sIG12IHNO LCBhTiwgd2hlcmUgTiA8IG5fc3JlZywKPiBhbmQgYU4gaXMgbm90IHVzZWQg dGhlIG1vdmUgcGF0dGVybiwgYW5kIHNOIGlzIG5vdAo+IGRlZmluZWQgYmVm b3JlIHRoZSBtb3ZlIHBhdHRlcm4gKGZyb20gcHJvbG9ndWUgdG8gdGhlCj4g cG9zaXRpb24gb2YgbW92ZSBwYXR0ZXJuKS4KPgo+IDMuIGFuYWx5c2lzIHVz ZSBhbmQgcmVhY2ggb2YgZXZlcnkgaW5zdHJ1Y3Rpb24gZnJvbSBwcm9sb2d1 ZQo+IHRvIHRoZSBwb3NpdGlvbiBvZiBtb3ZlIHBhdHRlcm4uCj4gaWYgYW55 IHNOIGlzIHVzZWQsIHRoZW4gd2UgbWFyayB0aGUgY29ycmVzcG9uZGluZyBh cmd1bWVudCBsaXN0Cj4gY2FuZGlkYXRlIGFzIGludmFsaWQuCj4gZS5nLgo+ IHB1c2gge3JhLHMwLXMzfSwge30sIC0zMgo+IHN3IHMwLDQ0KHNwKSAjIHMw IGlzIHVzZWQsIHRoZW4gYXJndW1lbnQgbGlzdCBpcyBpbnZhbGlkCj4gbXYg YTAsYTUgIyBhMCBpcyBkZWZpbmVkLCB0aGVuIGFyZ3VtZW50IGxpc3QgaXMg aW52YWxpZAo+IC4uLgo+IG12IHMwLGEwCj4gbXYgczEsYTEKPiBtdiBzMixh Mgo+Cj4gNC4gaWYgdGhlcmUgaXMgYSB2YWxpZCBhcmd1bWVudCBsaXN0LCB0 aGVuIHJlcGxhY2UgdGhlIHBvcAo+IHB1c2ggcGFyYWxsZWwgaW5zbiwgYW5k IGRlbGV0ZSBtdiBwYXR0ZXJuLgo+IGlmIG5vdCwgc2tpcC4KPgo+QWxsICJ6 Y21wZSIgbWVhbnMgWmNtcCB3aXRoIFJWRSBleHRlbnNpb24uCj5UaGUgcHVz aC9wb3AgaW5zdHJ1bmN0aW9uIGltcGxlbWVudCBpcyBtb3N0bHkgZmluaXNo ZWQgYnkgU2luYW4gTGluLgo+Cj5Dby1BdXRob3JlZCBieTogU2luYW4gTGlu IDxzaW5hbi4uLi5AbGludXguYWxpYmFiYS5jb20+Cj5Dby1BdXRob3JlZCBi eTogU2ltb24gQ29vayA8c2ltb24uYy4uLkBlbWJlY29zbS5jb20+Cj5Dby1B dXRob3JlZCBieTogU2hpaHVhIExpYW8gPHNoaS4uLkBpc2Nhcy5hYy5jbj4K Pgo+Z2NjL0NoYW5nZUxvZzoKPgo+ICogY29uZmlnLmdjYzogTmV3IG9iamVj dC4KPiAqIGNvbmZpZy9yaXNjdi9wcmVkaWNhdGVzLm1kIChyaXNjdl9zdGFj a19wdXNoX29wZXJhdGlvbik6Cj4gTmV3IHByZWRpY2F0ZS4KPiAocmlzY3Zf c3RhY2tfcG9wX29wZXJhdGlvbik6IERpdHRvLgo+IChwb3BfcmV0dXJuX3Zh bHVlX2NvbnN0YW50KTogRGl0dG8uCj4gKiBjb25maWcvcmlzY3YvcmlzY3Yt cGFzc2VzLmRlZiAoSU5TRVJUX1BBU1NfQUZURVIpOiBOZXcgcGFzcy4KPiAq IGNvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaCAocmlzY3Zfb3V0cHV0X3Bv cHJldF9wKToKPiBOZXcgcm91dGluZS4KPiAocmlzY3ZfdmFsaWRfc3RhY2tf cHVzaF9wb3BfcCk6IERpdHRvLgo+IChyaXNjdl9jaGVja19yZWdubyk6IERp dHRvLgo+IChtYWtlX3Bhc3NfemNtcF9wb3ByZXQpOiBOZXcgcGFzcy4KPiAq IGNvbmZpZy9yaXNjdi9yaXNjdi5jYyAoc3RydWN0IHJpc2N2X2ZyYW1lX2lu Zm8pOiBOZXcgdmFyaWFibGUuCj4gKHJpc2N2X291dHB1dF9wb3ByZXRfcCk6 IE5ldyBmdW5jdGlvbi4KPiAocmlzY3ZfcHJpbnRfcG9wX3NpemUpOiBEaXR0 by4KPiAocmlzY3ZfcHJpbnRfcmVnbGlzdCk6IERpdHRvLgo+IChyaXNjdl9w cmludF9vcGVyYW5kKTogTmV3IGNhc2Ugc3ltYm9scy4KPiAocmlzY3Zfc2F2 ZV9wdXNoX3BvcF9jb3VudCk6IE5ldyBmdW5jdGlvbi4KPiAocmlzY3ZfcHVz aF9wb3BfYmFzZV9zcF9hZGp1c3QpOiBEaXR0by4KPiAocmlzY3ZfdXNlX3B1 c2hfcG9wKTogRGl0dG8uCj4gKHJpc2N2X2NvbXB1dGVfZnJhbWVfaW5mbyk6 IEFkanVzdCBmcmFtZSB2YWx1ZS4KPiAocmlzY3ZfZW1pdF9wb3BfaW5zbik6 IE5ldyBmdW5jdGlvbi4KPiAocmlzY3ZfY2hlY2tfcmVnbm8pOiBEaXR0by4K PiAocmlzY3ZfdmFsaWRfc3RhY2tfcHVzaF9wb3BfcCk6IERpdHRvLgo+IChy aXNjdl9lbWl0X3B1c2hfaW5zbik6IERpdHRvLgo+IChyaXNjdl9leHBhbmRf cHJvbG9ndWUpOiBNb2RpZnkgZnJhbWUgcGF0dGVybi4KPiAocmlzY3ZfZXhw YW5kX2VwaWxvZ3VlKTogRGl0dG8uCj4gKiBjb25maWcvcmlzY3YvcmlzY3Yu aCAoUkVUVVJOX1ZBTFVFX1JFR05VTSk6Cj4gKFJJU0NWX1pDRV9QVVNIX1BP UF9NQVNLKTogTmV3IG1hc2suCj4gKFJJU0NWX1pDTVBFX1BVU0hfUE9QX01B U0spOiBEaXR0by4KPiAqIGNvbmZpZy9yaXNjdi9yaXNjdi5tZDogQWRkIG5l dyByZWcgbnVtYmVyIGFuZCBpbmNsdWRlIGluZm8uCj4gKiBjb25maWcvcmlz Y3YvdC1yaXNjdjogTmV3IG9iamVjdCBydWxlcy4KPiAqIGNvbmZpZy9yaXNj di9yaXNjdi16Y21wLXBvcHJldC5jYzogTmV3IGZpbGUuCj4gKiBjb25maWcv cmlzY3YvemMubWQ6IE5ldyBmaWxlLgo+LS0tCj4gZ2NjL2NvbmZpZy5nY2Mg fCAyICstCj4gZ2NjL2NvbmZpZy9yaXNjdi9wcmVkaWNhdGVzLm1kIHwgMTYg Kwo+IGdjYy9jb25maWcvcmlzY3YvcmlzY3YtcGFzc2VzLmRlZiB8IDEgKwo+ IGdjYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggfCA0ICsKPiBnY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXpjbXAtcG9wcmV0LmNjIHwgMjYwICsrKysr KysrKysrKysrKwo+IGdjYy9jb25maWcvcmlzY3YvcmlzY3YuY2MgfCA0Mzcg KysrKysrKysrKysrKysrKysrKysrKysrKy0KPiBnY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LmggfCA0ICsKPiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kIHwg MyArCj4gZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2IHwgNCArCj4gZ2NjL2Nv bmZpZy9yaXNjdi96Yy5tZCB8IDQ3ICsrKwo+IDEwIGZpbGVzIGNoYW5nZWQs IDc2NyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKPiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi16Y21wLXBvcHJl dC5jYwo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvY29uZmlnL3Jpc2N2L3pj Lm1kCj4KPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25m aWcuZ2NjCj5pbmRleCA2MjlkMzI0YjVlZi4uYTk5MWM1MjczZjkgMTAwNjQ0 Cj4tLS0gYS9nY2MvY29uZmlnLmdjYwo+KysrIGIvZ2NjL2NvbmZpZy5nY2MK PkBAIC01MjksNyArNTI5LDcgQEAgcHJ1LSotKikKPiA7Owo+IHJpc2N2KikK PiBjcHVfdHlwZT1yaXNjdgo+LSBleHRyYV9vYmpzPSJyaXNjdi1idWlsdGlu cy5vIHJpc2N2LWMubyByaXNjdi1zci5vIAo+cmlzY3Ytc2hvcnRlbi1tZW1y ZWZzLm8gcmlzY3Ytc2VsZnRlc3RzLm8gcmlzY3Ytdi5vIHJpc2N2LXZzZXR2 bC5vIgo+KyBleHRyYV9vYmpzPSJyaXNjdi1idWlsdGlucy5vIHJpc2N2LWMu byByaXNjdi1zci5vIAo+cmlzY3Ytc2hvcnRlbi1tZW1yZWZzLm8gcmlzY3Yt c2VsZnRlc3RzLm8gcmlzY3Ytdi5vIHJpc2N2LXZzZXR2bC5vIAo+cmlzY3Yt emNtcC1wb3ByZXQubyIKPiBleHRyYV9vYmpzPSIke2V4dHJhX29ianN9IHJp c2N2LXZlY3Rvci1idWlsdGlucy5vIAo+cmlzY3YtdmVjdG9yLWJ1aWx0aW5z LXNoYXBlcy5vIHJpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5vIgo+IGV4 dHJhX29ianM9IiR7ZXh0cmFfb2Jqc30gdGhlYWQubyIKPiBkX3RhcmdldF9v YmpzPSJyaXNjdi1kLm8iCj5kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNj di9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9wcmVkaWNhdGVz Lm1kCj5pbmRleCAwZDlkNzcwMWM3ZS4uNmJmZjZjZDA0N2EgMTAwNjQ0Cj4t LS0gYS9nY2MvY29uZmlnL3Jpc2N2L3ByZWRpY2F0ZXMubWQKPisrKyBiL2dj Yy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZAo+QEAgLTQxMiwzICs0MTIs MTkgQEAKPiAoYW5kIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQo+IChpb3Ig KG1hdGNoX29wZXJhbmQgMCAibm90X3VpbW1fZXh0cmFfYml0X29wZXJhbmQi KQo+IChtYXRjaF9vcGVyYW5kIDAgImNvbnN0X25vdHR3b2JpdHNfb3BlcmFu ZCIpKSkpCj4rCj4rKGRlZmluZV9zcGVjaWFsX3ByZWRpY2F0ZSAicmlzY3Zf c3RhY2tfcHVzaF9vcGVyYXRpb24iCj4rIChtYXRjaF9jb2RlICJwYXJhbGxl bCIpCj4rewo+KyByZXR1cm4gcmlzY3ZfdmFsaWRfc3RhY2tfcHVzaF9wb3Bf cCAob3AsIHRydWUpOwo+K30pCj4rCj4rKGRlZmluZV9zcGVjaWFsX3ByZWRp Y2F0ZSAicmlzY3Zfc3RhY2tfcG9wX29wZXJhdGlvbiIKPisgKG1hdGNoX2Nv ZGUgInBhcmFsbGVsIikKPit7Cj4rIHJldHVybiByaXNjdl92YWxpZF9zdGFj a19wdXNoX3BvcF9wIChvcCwgZmFsc2UpOwo+K30pCj4rCj4rKGRlZmluZV9w cmVkaWNhdGUgInBvcF9yZXR1cm5fdmFsdWVfY29uc3RhbnQiCj4rIChhbmQg KG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCj4rIChtYXRjaF90ZXN0ICJJTlRW QUwgKG9wKSA9PSAwIikpKQo+ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlz Y3YvcmlzY3YtcGFzc2VzLmRlZiAKPmIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di1wYXNzZXMuZGVmCj5pbmRleCA0MDg0MTIyY2YwYS4uMjU2MjViOWFmM2Ug MTAwNjQ0Cj4tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXBhc3Nlcy5k ZWYKPisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcGFzc2VzLmRlZgo+ QEAgLTE5LDMgKzE5LDQgQEAKPiAKPiBJTlNFUlRfUEFTU19BRlRFUiAocGFz c19ydGxfc3RvcmVfbW90aW9uLCAxLCBwYXNzX3Nob3J0ZW5fbWVtcmVmcyk7 Cj4gSU5TRVJUX1BBU1NfQkVGT1JFIChwYXNzX2Zhc3RfcnRsX2RjZSwgMSwg cGFzc192c2V0dmwpOwo+K0lOU0VSVF9QQVNTX0FGVEVSIChwYXNzX2Nwcm9w X2hhcmRyZWcsIDEsIHBhc3NfemNtcF9wb3ByZXQpOwo+ZGlmZiAtLWdpdCBh L2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggYi9nY2MvY29uZmln L3Jpc2N2L3Jpc2N2LXByb3Rvcy5oCj5pbmRleCA0NjExNDQ3ZGRkZS4uOGYy NDNjZDVmNDQgMTAwNjQ0Cj4tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2 LXByb3Rvcy5oCj4rKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rv cy5oCj5AQCAtNTQsNiArNTQsNyBAQCBleHRlcm4gYm9vbCByaXNjdl9zcGxp dF82NGJpdF9tb3ZlX3AgKHJ0eCwgcnR4KTsKPiBleHRlcm4gdm9pZCByaXNj dl9zcGxpdF9kb3VibGV3b3JkX21vdmUgKHJ0eCwgcnR4KTsKPiBleHRlcm4g Y29uc3QgY2hhciAqcmlzY3Zfb3V0cHV0X21vdmUgKHJ0eCwgcnR4KTsKPiBl eHRlcm4gY29uc3QgY2hhciAqcmlzY3Zfb3V0cHV0X3JldHVybiAoKTsKPitl eHRlcm4gYm9vbCByaXNjdl9vdXRwdXRfcG9wcmV0X3AgKHJ0eCk7Cj4gCj4g I2lmZGVmIFJUWF9DT0RFCj4gZXh0ZXJuIHZvaWQgcmlzY3ZfZXhwYW5kX2lu dF9zY2MgKHJ0eCwgZW51bSBydHhfY29kZSwgcnR4LCBydHgpOwo+QEAgLTc5 LDYgKzgwLDggQEAgZXh0ZXJuIHZvaWQgcmlzY3ZfcmVpbml0ICh2b2lkKTsK PiBleHRlcm4gcG9seV91aW50NjQgcmlzY3ZfcmVnbW9kZV9uYXR1cmFsX3Np emUgKG1hY2hpbmVfbW9kZSk7Cj4gZXh0ZXJuIGJvb2wgcmlzY3Zfdl9leHRf dmVjdG9yX21vZGVfcCAobWFjaGluZV9tb2RlKTsKPiBleHRlcm4gYm9vbCBy aXNjdl9zaGFtdF9tYXRjaGVzX21hc2tfcCAoaW50LCBIT1NUX1dJREVfSU5U KTsKPitleHRlcm4gYm9vbCByaXNjdl92YWxpZF9zdGFja19wdXNoX3BvcF9w IChydHgsIGJvb2wpOwo+K2V4dGVybiBib29sIHJpc2N2X2NoZWNrX3JlZ25v KHJ0eCwgdW5zaWduZWQpOwo+IAo+IC8qIFJvdXRpbmVzIGltcGxlbWVudGVk IGluIHJpc2N2LWMuY2MuICovCj4gdm9pZCByaXNjdl9jcHVfY3BwX2J1aWx0 aW5zIChjcHBfcmVhZGVyICopOwo+QEAgLTk5LDYgKzEwMiw3IEBAIGV4dGVy biBib29sIHJpc2N2X2hhcmRfcmVnbm9fcmVuYW1lX29rICh1bnNpZ25lZCwg dW5zaWduZWQpOwo+IAo+IHJ0bF9vcHRfcGFzcyAqIG1ha2VfcGFzc19zaG9y dGVuX21lbXJlZnMgKGdjYzo6Y29udGV4dCAqY3R4dCk7Cj4gcnRsX29wdF9w YXNzICogbWFrZV9wYXNzX3ZzZXR2bCAoZ2NjOjpjb250ZXh0ICpjdHh0KTsK PitydGxfb3B0X3Bhc3MgKiBtYWtlX3Bhc3NfemNtcF9wb3ByZXQgKGdjYzo6 Y29udGV4dCAqY3R4dCk7Cj4gCj4gLyogSW5mb3JtYXRpb24gYWJvdXQgb25l IENQVSB3ZSBrbm93IGFib3V0LiAqLwo+IHN0cnVjdCByaXNjdl9jcHVfaW5m byB7Cj5kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi16Y21w LXBvcHJldC5jYyAKPmIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi16Y21wLXBv cHJldC5jYwo+bmV3IGZpbGUgbW9kZSAxMDA2NDQKPmluZGV4IDAwMDAwMDAw MDAwLi5kN2I0MGY2YTNlMgo+LS0tIC9kZXYvbnVsbAo+KysrIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi16Y21wLXBvcHJldC5jYwo+QEAgLTAsMCArMSwy NjAgQEAKPisjaW5jbHVkZSAiY29uZmlnLmgiCj4rI2luY2x1ZGUgInN5c3Rl bS5oIgo+KyNpbmNsdWRlICJjb3JldHlwZXMuaCIKPisjaW5jbHVkZSAidG0u aCIKPisjaW5jbHVkZSAicnRsLmgiCj4rI2luY2x1ZGUgImJhY2tlbmQuaCIK PisjaW5jbHVkZSAicmVncy5oIgo+KyNpbmNsdWRlICJ0YXJnZXQuaCIKPisj aW5jbHVkZSAibWVtbW9kZWwuaCIKPisjaW5jbHVkZSAiZW1pdC1ydGwuaCIK PisjaW5jbHVkZSAiZGYuaCIKPisjaW5jbHVkZSAicHJlZGljdC5oIgo+KyNp bmNsdWRlICJ0cmVlLXBhc3MuaCIKPisjaW5jbHVkZSAidHJlZS5oIgo+KyNp bmNsdWRlICJ0bV9wLmgiCj4rI2luY2x1ZGUgIm9wdGFicy5oIgo+KyNpbmNs dWRlICJyZWNvZy5oIgo+KyNpbmNsdWRlICJjZmdydGwuaCIKPisKPisjZGVm aW5lIElOX1RBUkdFVF9DT0RFIDEKPisKPituYW1lc3BhY2Ugewo+Kwo+Ky8q Cj4rIDEuIHByZXByb2Nlc3Npbmc6Cj4rIDEuMS4gaWYgdGhlcmUgaXMgbm8g cHVzaCBydHgsIHRoZW4ganVzdCByZXR1cm4uIGUuZy4KPisgKG5vdGUgNSAx IDIyIDIgW2JiIDJdIE5PVEVfSU5TTl9CQVNJQ19CTE9DSykKPisgKGluc24v ZiAyMiA1IDIzIDIgKHNldCAocmVnL2Y6U0kgMiBzcCkKPisgKHBsdXM6U0kg KHJlZy9mOlNJIDIgc3ApCj4rIChjb25zdF9pbnQgLTMyIFsweGZmZmZmZmZm ZmZmZmZmZTBdKSkpCj4rIChuaWwpKQo+KyAobm90ZSAyMyAyMiAyIDIgTk9U RV9JTlNOX1BST0xPR1VFX0VORCkKPisgMS4yLiBpZiBwdXNoIHJ0eCBleGlz dHMsIHRoZW4gd2UgY29tcHV0ZSB0aGUgbnVtYmVyIG9mCj4rIHB1c2hlZCBz LXJlZ2lzdGVycywgbl9zcmVnLgo+Kwo+KyBwdXNoIHJ0eCBzaG91bGQgYmUg ZmluZCBiZWZvcmUgTk9URV9JTlNOX1BST0xPR1VFX0VORCB0YWcKPisKPisg WzIgYW5kIDMgaGFwcGVuZCBzaW11bHRhbmVvdXNseV0KPisgMi4gZmluZCB2 YWxpZCBtb3ZlIHBhdHRlcm4sIG12IHNOLCBhTiwgd2hlcmUgTiA8IG5fc3Jl ZywKPisgYW5kIGFOIGlzIG5vdCB1c2VkIHRoZSBtb3ZlIHBhdHRlcm4sIGFu ZCBzTiBpcyBub3QKPisgZGVmaW5lZCBiZWZvcmUgdGhlIG1vdmUgcGF0dGVy biAoZnJvbSBwcm9sb2d1ZSB0byB0aGUKPisgcG9zaXRpb24gb2YgbW92ZSBw YXR0ZXJuKS4KPisgMy4gYW5hbHlzaXMgdXNlIGFuZCByZWFjaCBvZiBldmVy eSBpbnN0cnVjdGlvbiBmcm9tIHByb2xvZ3VlCj4rIHRvIHRoZSBwb3NpdGlv biBvZiBtb3ZlIHBhdHRlcm4uCj4rIGlmIGFueSBzTiBpcyB1c2VkLCB0aGVu IHdlIG1hcmsgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbGlzdAo+KyBj YW5kaWRhdGUgYXMgaW52YWxpZC4KPisgZS5nLgo+KyBwdXNoIHtyYSxzMC1z M30sIHt9LCAtMzIKPisgc3cgczAsNDQoc3ApICMgczAgaXMgdXNlZCwgdGhl biBhcmd1bWVudCBsaXN0IGlzIGludmFsaWQKPisgbXYgYTAsYTUgIyBhMCBp cyBkZWZpbmVkLCB0aGVuIGFyZ3VtZW50IGxpc3QgaXMgaW52YWxpZAo+KyAu Li4KPisgbXYgczAsYTAKPisgbXYgczEsYTEKPisgbXYgczIsYTIKPisKPisg NC4gaWYgdGhlcmUgaXMgYSB2YWxpZCBhcmd1bWVudCBsaXN0LCB0aGVuIHJl cGxhY2UgdGhlIHBvcAo+KyBwdXNoIHBhcmFsbGVsIGluc24sIGFuZCBkZWxl dGUgbXYgcGF0dGVybi4KPisgaWYgbm90LCBza2lwLgo+KyovCj4rCj4rc3Rh dGljIHZvaWQKPitlbWl0X3pjbXBfcG9wcmV0IChydHhfaW5zbiAqcG9wX3J0 eCwKPisgcnR4X2luc24gKipjYW5kaWRhdGVzLAo+KyBiYXNpY19ibG9jayBi YikKPit7Cj4rIGJvb2wgZ2VuX3BvcHJldHpfcCA9IGNhbmRpZGF0ZXMgWzBd Owo+KyBib29sIGdlbl9wb3ByZXRfcCA9IGNhbmRpZGF0ZXMgWzJdOwo+Kwo+ KyBpZiAoIShnZW5fcG9wcmV0X3AgfHwgZ2VuX3BvcHJldHpfcCkpCj4rIHJl dHVybjsKPisKPisgZ2NjX2Fzc2VydCAoKGdlbl9wb3ByZXRfcCAmJiAhZ2Vu X3BvcHJldHpfcCkKPisgfHwgKGdlbl9wb3ByZXR6X3AgJiYgZ2VuX3BvcHJl dF9wKSk7Cj4rCj4rIHJ0eCBwb3BfcGF0ID0gUEFUVEVSTiAocG9wX3J0eCk7 Cj4rIHVuc2lnbmVkIHBvcF9pZHggPSAwLCBwb3ByZXRfaWR4ID0gMDsKPisg dW5zaWduZWQgbl9wb3BfcGFyID0gWFZFQ0xFTiAocG9wX3BhdCwgMCk7Cj4r IHVuc2lnbmVkIG5fcG9wcmV0X3BhciA9IG5fcG9wX3Bhcgo+KyArIChnZW5f cG9wcmV0el9wID8gMiA6IDApCj4rICsgKGdlbl9wb3ByZXRfcCA/IDIgOiAw KTsKPisKPisgcnR4IHBvcHJldF9wYXIgPSBnZW5fcnR4X1BBUkFMTEVMIChW T0lEbW9kZSwKPisgcnR2ZWNfYWxsb2MgKG5fcG9wcmV0X3BhcikpOwo+Kwo+ KyAvKiByZXR1cm4gemVybyBwYXR0ZXJuICovCj4rIGlmIChnZW5fcG9wcmV0 el9wKQo+KyB7Cj4rIFhWRUNFWFAgKHBvcHJldF9wYXIsIDAsIDApID0gUEFU VEVSTiAoY2FuZGlkYXRlc1swXSk7Cj4rIFhWRUNFWFAgKHBvcHJldF9wYXIs IDAsIDEpID0gUEFUVEVSTiAoY2FuZGlkYXRlc1sxXSk7Cj4rIHBvcHJldF9p ZHggKz0gMjsKPisgZGVsZXRlX2luc24gKGNhbmRpZGF0ZXNbMF0pOwo+KyBk ZWxldGVfaW5zbiAoY2FuZGlkYXRlc1sxXSk7Cj4rIH0KPisKPisgLyogY29w eSBwb3AgcGFydWVuY2UuICovCj4rIGZvciAoOyBwb3BfaWR4IDwgbl9wb3Bf cGFyOwo+KyBwb3BfaWR4ICsrLCBwb3ByZXRfaWR4ICsrKQo+KyB7Cj4rIFhW RUNFWFAgKHBvcHJldF9wYXIsIDAsIHBvcHJldF9pZHgpID0KPisgWFZFQ0VY UCAocG9wX3BhdCwgMCwgcG9wX2lkeCk7Cj4rIH0KPisKPisgLyogcmV0IHBh dHRlcm4uICovCj4rIHJ0eCByZXRfcGF0ID0gUEFUVEVSTiAoY2FuZGlkYXRl c1syXSk7Cj4rIGdjY19hc3NlcnQgKEdFVF9DT0RFIChyZXRfcGF0KSA9PSBQ QVJBTExFTCk7Cj4rCj4rIGZvciAoaW50IGkgPSAwOyBpIDwgWFZFQ0xFTiAo cmV0X3BhdCwgMCk7Cj4rIGkrKywgcG9wcmV0X2lkeCsrKQo+KyB7Cj4rIFhW RUNFWFAgKHBvcHJldF9wYXIsIDAsIHBvcHJldF9pZHgpID0KPisgWFZFQ0VY UCAocmV0X3BhdCwgMCwgaSk7Cj4rIH0KPisKPisgcnR4X2luc24gKmluc24g PSBlbWl0X2p1bXBfaW5zbl9hZnRlciAoCj4rIHBvcHJldF9wYXIsCj4rIEJC X0VORCAoYmIpKTsKPisgSlVNUF9MQUJFTCAoaW5zbikgPSBzaW1wbGVfcmV0 dXJuX3J0eDsKPisKPisgUkVHX05PVEVTIChpbnNuKSA9IFJFR19OT1RFUyAo cG9wX3J0eCk7Cj4rIFJUWF9GUkFNRV9SRUxBVEVEX1AgKGluc24pID0gMTsK PisKPisgaWYgKGR1bXBfZmlsZSkKPisgewo+KyBmcHJpbnRmKGR1bXBfZmls ZSwgIm5ldyBpbnNuOlxuIik7Cj4rIHByaW50X3J0bCAoZHVtcF9maWxlLCBp bnNuKTsKPisgfQo+Kwo+KyBkZWxldGVfaW5zbiAoY2FuZGlkYXRlcyBbMl0p Owo+KyBkZWxldGVfaW5zbiAocG9wX3J0eCk7Cj4rfQo+Kwo+K3N0YXRpYyB2 b2lkCj4remNtcF9wb3ByZXQgKHZvaWQpCj4rewo+KyBiYXNpY19ibG9jayBi YjsKPisgcnR4X2luc24gKmluc24gPSBOVUxMLCAqcG9wX3J0eCA9IE5VTEw7 Cj4rIHJ0eF9pbnNuICpwb3BfY2FuZGlkYXRlc1szXSA9IHtOVUxMLCB9Owo+ KyAvKgo+KyBmaW5kIE5PVEVfSU5TTl9FUElMT0dVRV9CRUcsIGJ1dCBwb3Bf cnR4IG5vdCBmb3VuZCA9PiByZXR1cm4KPisgZmluZCBOT1RFX0lOU05fRVBJ TE9HVUVfQkVHLCBhbmQgcG9wX3J0eCBpcyBmb3VuZCA9PiBsb29raW5nIGZv ciBhMAo+KyAqLwo+Kwo+KyBGT1JfRUFDSF9CQl9SRVZFUlNFX0ZOIChiYiwg Y2Z1bikKPisgewo+KyBGT1JfQkJfSU5TTlNfUkVWRVJTRSAoYmIsIGluc24p Cj4rIHsKPisgaWYgKCFwb3BfcnR4Cj4rICYmIE5PVEVfUCAoaW5zbikKPisg JiYgTk9URV9LSU5EIChpbnNuKSA9PSBOT1RFX0lOU05fRVBJTE9HVUVfQkVH KQo+KyByZXR1cm47Cj4rCj4rIGlmIChOT1RFX1AgKGluc24pCj4rICYmIE5P VEVfS0lORCAoaW5zbikgPT0gTk9URV9JTlNOX0ZVTkNUSU9OX0JFRykKPisg ewo+KyBpZiAocG9wX3J0eCkKPisgZW1pdF96Y21wX3BvcHJldCAocG9wX3J0 eCwgcG9wX2NhbmRpZGF0ZXMsIGJiKTsKPisgcmV0dXJuOwo+KyB9Owo+Kwo+ KyBpZiAoIShOT05ERUJVR19JTlNOX1AgKGluc24pCj4rIHx8IENBTExfUCAo aW5zbikpKQo+KyBjb250aW51ZTsKPisKPisgcnR4IHBvcF9wYXQgPSBQQVRU RVJOIChpbnNuKTsKPisKPisgaWYgKEdFVF9DT0RFIChwb3BfcGF0KSA9PSBQ QVJBTExFTAo+KyAmJiByaXNjdl92YWxpZF9zdGFja19wdXNoX3BvcF9wIChw b3BfcGF0LCBmYWxzZSkpCj4rIHsKPisgcG9wX3J0eCA9IGluc247Cj4rIGNv bnRpbnVlOwo+KyB9Cj4rCj4rIC8qIHBhdHRlcm4gZm9yIGByZXRgLiAqLwo+ KyBpZiAoSlVNUF9QIChpbnNuKQo+KyAmJiBHRVRfQ09ERSAocG9wX3BhdCkg PT0gUEFSQUxMRUwKPisgJiYgWFZFQ0xFTiAocG9wX3BhdCwgMCkgPT0gMgo+ KyAmJiBHRVRfQ09ERSAoWFZFQ0VYUCAocG9wX3BhdCwgMCwgMCkpID09IFNJ TVBMRV9SRVRVUk4KPisgJiYgR0VUX0NPREUgKFhWRUNFWFAgKHBvcF9wYXQs IDAsIDEpKSA9PSBVU0UpCj4rIHsKPisgcnR4IHVzZV9yZWcgPSBYRVhQIChY VkVDRVhQIChwb3BfcGF0LCAwLCAxKSwgMCk7Cj4rIGlmIChSRUdfUCAodXNl X3JlZykKPisgJiYgUkVHTk8gKHVzZV9yZWcpID09IFJFVFVSTl9BRERSX1JF R05VTSkKPisgewo+KyBwb3BfY2FuZGlkYXRlcyBbMl0gPSBpbnNuOwo+KyBj b250aW51ZTsKPisgfQo+KyB9Cj4rCj4rIGlmICghcG9wX3J0eCkKPisgY29u dGludWU7Cj4rCj4rIC8qIHBhdHRlcm4gZm9yIHJldHVybiB2YWx1ZS4gKi8K PisgaWYgKCFwb3BfY2FuZGlkYXRlcyBbMF0KPisgJiYgR0VUX0NPREUgKHBv cF9wYXQpID09IFVTRSkKPisgewo+KyBydHhfaW5zbiAqc2V0X2luc24gPSBQ UkVWX0lOU04gKGluc24pOwo+KyBydHggcGF0X3NldCA9IFBBVFRFUk4gKHNl dF9pbnNuKTsKPisKPisgaWYgKHJpc2N2X2NoZWNrX3JlZ25vIChYRVhQIChw b3BfcGF0LCAwKSwKPisgUkVUVVJOX1ZBTFVFX1JFR05VTSkKPisgJiYgaW5z bgo+KyAmJiBwYXRfc2V0ICE9IE5VTEwKPisgJiYgR0VUX0NPREUgKHBhdF9z ZXQpID09IFNFVAo+KyAmJiByaXNjdl9jaGVja19yZWdubyAoU0VUX0RFU1Qg KHBhdF9zZXQpLAo+KyBSRVRVUk5fVkFMVUVfUkVHTlVNKQo+KyAmJiBDT05T VF9JTlRfUCAoU0VUX1NSQyAocGF0X3NldCkpCj4rICYmIElOVFZBTCAoU0VU X1NSQyAocGF0X3NldCkpID09IDApCj4rIHsKPisgcG9wX2NhbmRpZGF0ZXMg WzBdID0gc2V0X2luc247Cj4rIHBvcF9jYW5kaWRhdGVzIFsxXSA9IGluc247 Cj4rIGJyZWFrOwo+KyB9Cj4rIH0KPisgfQo+Kwo+KyBpZiAocG9wX3J0eCkK Pisgewo+KyBlbWl0X3pjbXBfcG9wcmV0IChwb3BfcnR4LCBwb3BfY2FuZGlk YXRlcywgYmIpOwo+KyByZXR1cm47Cj4rIH0KPisgfQo+K30KPisKPitjb25z dCBwYXNzX2RhdGEgcGFzc19kYXRhX3pjbXBfcG9wcmV0ID0KPit7Cj4rIFJU TF9QQVNTLCAvKiB0eXBlICovCj4rICJ6Y21wLXBvcHJldCIsIC8qIG5hbWUg Ki8KPisgT1BUR1JPVVBfTk9ORSwgLyogb3B0aW5mb19mbGFncyAqLwo+KyBU Vl9OT05FLCAvKiB0dl9pZCAqLwo+KyAwLCAvKiBwcm9wZXJ0aWVzX3JlcXVp cmVkICovCj4rIDAsIC8qIHByb3BlcnRpZXNfcHJvdmlkZWQgKi8KPisgMCwg LyogcHJvcGVydGllc19kZXN0cm95ZWQgKi8KPisgMCwgLyogdG9kb19mbGFn c19zdGFydCAqLwo+KyAwLCAvKiB0b2RvX2ZsYWdzX2ZpbmlzaCAqLwo+K307 Cj4rCj4rY2xhc3MgcGFzc196Y21wX3BvcHJldCA6IHB1YmxpYyBydGxfb3B0 X3Bhc3MKPit7Cj4rcHVibGljOgo+KyBwYXNzX3pjbXBfcG9wcmV0IChnY2M6 OmNvbnRleHQgKmN0eHQpCj4rIDogcnRsX29wdF9wYXNzIChwYXNzX2RhdGFf emNtcF9wb3ByZXQsIGN0eHQpCj4rIHt9Cj4rCj4rIC8qIG9wdF9wYXNzIG1l dGhvZHM6ICovCj4rIHZpcnR1YWwgYm9vbCBnYXRlIChmdW5jdGlvbiAqKQo+ KyB7IHJldHVybiBUQVJHRVRfWkNNUDsgfQo+KyB2aXJ0dWFsIHVuc2lnbmVk IGludCBleGVjdXRlIChmdW5jdGlvbiAqKQo+KyB7Cj4rIHpjbXBfcG9wcmV0 ICgpOwo+KyByZXR1cm4gMDsKPisgfQo+K307IC8vIGNsYXNzIHBhc3NfemNt cF9wb3ByZXQKPisKPit9IC8vIGFub24gbmFtZXNwYWNlCj4rCj4rcnRsX29w dF9wYXNzICoKPittYWtlX3Bhc3NfemNtcF9wb3ByZXQgKGdjYzo6Y29udGV4 dCAqY3R4dCkKPit7Cj4rIHJldHVybiBuZXcgcGFzc196Y21wX3BvcHJldCAo Y3R4dCk7Cj4rfQo+ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjCj5pbmRleCA1Zjhj YmZjMTVlZC4uMTdkZjJmM2Y4Y2YgMTAwNjQ0Cj4tLS0gYS9nY2MvY29uZmln L3Jpc2N2L3Jpc2N2LmNjCj4rKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2 LmNjCj5AQCAtMTE0LDYgKzExNCw5IEBAIHN0cnVjdCBHVFkoKCkpIHJpc2N2 X2ZyYW1lX2luZm8gewo+IC8qIExpa2V3aXNlIEZQUiBYLiAqLwo+IHVuc2ln bmVkIGludCBmbWFzazsKPiAKPisgLyogSG93IG11Y2ggdGhlIHB1c2gvcG9w IHJvdXRpbmVzIGFkanVzdCBzcCAob3IgMCBpZiB1bnVzZWQpLiAqLwo+KyB1 bnNpZ25lZCBwdXNoX3BvcF9zcF9hZGp1c3Q7Cj4rCj4gLyogSG93IG11Y2gg dGhlIEdQUiBzYXZlL3Jlc3RvcmUgcm91dGluZXMgYWRqdXN0IHNwIChvciAw IGlmIHVudXNlZCkuICovCj4gdW5zaWduZWQgc2F2ZV9saWJjYWxsX2FkanVz dG1lbnQ7Cj4gCj5AQCAtNDAxLDYgKzQwNCwyMCBAQCBzdGF0aWMgY29uc3Qg dW5zaWduZWQgZ3ByX3NhdmVfcmVnX29yZGVyW10gPSB7Cj4gUzEwX1JFR05V TSwgUzExX1JFR05VTQo+IH07Cj4gCj4rLyogT3JkZXIgZm9yIHRoZSBDTE9C QkVScy9VU0VzIG9mIHB1c2gvcG9wLiAqLwo+K3N0YXRpYyBjb25zdCB1bnNp Z25lZCBwdXNoX3NhdmVfcmVnX29yZGVyW10gPSB7Cj4rIElOVkFMSURfUkVH TlVNLCBSRVRVUk5fQUREUl9SRUdOVU0sIFMwX1JFR05VTSwKPisgUzFfUkVH TlVNLCBTMl9SRUdOVU0sIFMzX1JFR05VTSwgUzRfUkVHTlVNLAo+KyBTNV9S RUdOVU0sIFM2X1JFR05VTSwgUzdfUkVHTlVNLCBTOF9SRUdOVU0sCj4rIFM5 X1JFR05VTSwgUzEwX1JFR05VTSwgUzExX1JFR05VTQo+K307Cj4rCj4rLyog T3JkZXIgZm9yIHRoZSBDTE9CQkVScy9VU0VzIG9mIHB1c2gvcG9wIGluIHJ2 ZS4gKi8KPitzdGF0aWMgY29uc3QgdW5zaWduZWQgcHVzaF9zYXZlX3JlZ19v cmRlcl96Y21wZVtdID0gewo+KyBJTlZBTElEX1JFR05VTSwgUkVUVVJOX0FE RFJfUkVHTlVNLCBTMF9SRUdOVU0sCj4rIFMxX1JFR05VTQo+K307Cj4rCj4g LyogQSB0YWJsZSBkZXNjcmliaW5nIGFsbCB0aGUgcHJvY2Vzc29ycyBHQ0Mg a25vd3MgYWJvdXQuICovCj4gc3RhdGljIGNvbnN0IHN0cnVjdCByaXNjdl90 dW5lX2luZm8gcmlzY3ZfdHVuZV9pbmZvX3RhYmxlW10gPSB7Cj4gI2RlZmlu ZSBSSVNDVl9UVU5FKFRVTkVfTkFNRSwgUElQRUxJTkVfTU9ERUwsIFRVTkVf SU5GTykgXAo+QEAgLTI5ODksNiArMzAwNiwxNyBAQCByaXNjdl9vdXRwdXRf cmV0dXJuICgpCj4gcmV0dXJuICJyZXQiOwo+IH0KPiAKPitib29sCj4rcmlz Y3Zfb3V0cHV0X3BvcHJldF9wIChydHggb3ApCj4rewo+KyB1bnNpZ25lZCBu X3J0eCA9IFhWRUNMRU4gKG9wLCAwKTsKPisgcnR4IHVzZSA9IFhWRUNFWFAg KG9wLCAwLCBuX3J0eCAtIDEpOwo+KyBydHggcmV0ID0gWFZFQ0VYUCAob3As IDAsIG5fcnR4IC0gMik7Cj4rCj4rIHJldHVybiBHRVRfQ09ERSAocmV0KSA9 PSBTSU1QTEVfUkVUVVJOCj4rICYmIEdFVF9DT0RFICh1c2UpID09IFVTRTsK Pit9Cj4rCj4gCj4KPiAvKiBSZXR1cm4gdHJ1ZSBpZiBDTVAxIGlzIGEgc3Vp dGFibGUgc2Vjb25kIG9wZXJhbmQgZm9yIGludGVnZXIgb3JkZXJpbmcKPiB0 ZXN0IENPREUuIFNlZSBhbHNvIHRoZSAqc0NDIHBhdHRlcm5zIGluIHJpc2N2 Lm1kLiAqLwo+QEAgLTQzMDYsNiArNDMzNCw3NCBAQCByaXNjdl9tZW1tb2Rl bF9uZWVkc19hbW9fYWNxdWlyZSAoZW51bSBtZW1tb2RlbCBtb2RlbCkKPiB9 Cj4gfQo+IAo+Ky8qIFByaW50IFNwIGFkanVzdG1lbnQgZmllbGQgb2YgcG9w IGluc3RydWN0aW9uLiAqLwo+Kwo+K3N0YXRpYyB2b2lkCj4rcmlzY3ZfcHJp bnRfcG9wX3NpemUgKEZJTEUgKmZpbGUsIHJ0eCBvcCkKPit7Cj4rIHVuc2ln bmVkIHNwX2FkanVzdF9pZHggPSBYVkVDTEVOIChvcCwgMCkgLSAxOwo+KyBy dHggc3BfYWRqdXN0X3J0eCA9IFhWRUNFWFAgKG9wLCAwLCBzcF9hZGp1c3Rf aWR4KTsKPisKPisgLyogU2tpcCByZXQgb3IgcGF0dGVybi4gKi8KPisgd2hp bGUgKEdFVF9DT0RFIChzcF9hZGp1c3RfcnR4KSAhPSBTRVQpCj4rIHNwX2Fk anVzdF9ydHggPSBYVkVDRVhQIChvcCwgMCwgLS1zcF9hZGp1c3RfaWR4KTsK PisKPisgcnR4IGVsdF9wbHVzID0gU0VUX1NSQyAoc3BfYWRqdXN0X3J0eCk7 Cj4rIGZwcmludGYgKGZpbGUsICIlbGQiLCBJTlRWQUwgKFhFWFAgKGVsdF9w bHVzLCAxKSkpOwo+K30KPisKPisvKiBQcmludCBwdXNoL3BvcCByZWdpc3Rl ciBsaXN0LiAqLwo+Kwo+K3N0YXRpYyB2b2lkCj4rcmlzY3ZfcHJpbnRfcmVn bGlzdCAoRklMRSAqZmlsZSwgcnR4IG9wKQo+K3sKPisgLyogd2Ugb25seSBk ZWFsIHdpdGggdGhyZWUgZm9ybWF0czoKPisgcHVzaCB7cmF9Cj4rIHB1c2gg e3JhLCBzMH0KPisgcHVzaCB7cmEsIHMwLXNOfQo+KyBvcgo+KyBwb3Age3Jh fQo+KyBwb3Age3JhLCBzMH0KPisgcG9wIHtyYSwgczAtc059Cj4rIHJlZ2lz dGVycyBleGNlcHQgcmEgaGFzIHRvIGJlIGNvbnRpbnVvdXMgcy1yZWdpc3Rl ciwKPisgYW5kIGl0IGlzIHN1cHBvc2VkIHRvIGJlIGNoZWNrZWQgYmVmb3Jl Lgo+KyByZWdpc3RlciBsaXN0IHBhdHRlcm5zIGluIHB1c2g6Cj4rIChzZXQv ZiAobWVtL2M6U0kKPisgKHBsdXM6U0kgKHJlZy9mOlNJIDIgc3ApCj4rIChj b25zdF9pbnQgMjggWzB4MWNdKSkgWzIgUzQgQTMyXSkKPisgKHJlZzpTSSAx IHJhKSkKPisgcmVnaXN0ZXIgbGlzdCBwYXR0ZXJucyBpbiBwb3A6Cj4rIChz ZXQvZiAocmVnOkRJIDEgcmEpCj4rIChtZW0vYzpESSAocGx1czpESSAocmVn L2Y6REkgMiBzcCkKPisgKGNvbnN0X2ludCA4IFsweDhdKSkgWzIgUzggQTY0 XSkpCj4rICovCj4rIGludCB0b3RhbF9jb3VudCA9IFhWRUNMRU4gKG9wLCAw KTsKPisgaW50IG5fcmVncyA9IDA7Cj4rIGJvb2wgcHVzaF9wID0gR0VUX0NP REUgKFhWRUNFWFAgKG9wLCAwLCAwKSkgPT0gU0VUCj4rICYmIEdFVF9DT0RF IChTRVRfU1JDIChYVkVDRVhQIChvcCwgMCwgMCkpKSA9PSBQTFVTOwo+Kwo+ KyBmb3IgKGludCBpZHggPSAwOyBpZHggPCB0b3RhbF9jb3VudDsgKytpZHgp Cj4rIHsKPisgcnR4IGVsZSA9IFhWRUNFWFAgKG9wLCAwLCBpZHgpOwo+KyBp ZiAoR0VUX0NPREUgKGVsZSkgIT0gU0VUKQo+KyBjb250aW51ZTsKPisKPisg Ym9vbCByZXN0b3JlX3NhdmVfcCA9IHB1c2hfcCA/Cj4rIE1FTV9QIChTRVRf REVTVCAoZWxlKSkgOgo+KyBNRU1fUCAoU0VUX1NSQyAoZWxlKSk7Cj4rCj4r IGlmIChyZXN0b3JlX3NhdmVfcCkKPisgbl9yZWdzICsrOwo+KyB9Cj4rCj4r IGlmIChuX3JlZ3MgPiAyKQo+KyBmcHJpbnRmIChmaWxlLCAicmEsczAtcyV1 Iiwgbl9yZWdzIC0gMik7Cj4rIGVsc2UgaWYgKG5fcmVncyA+IDEpCj4rIGZw cmludGYgKGZpbGUsICJyYSxzMCIpOwo+KyBlbHNlCj4rIGZwdXRzKCJyYSIs IGZpbGUpOwo+K30KPisKPiAvKiBSZXR1cm4gdHJ1ZSBpZiBhIEZFTkNFIHNo b3VsZCBiZSBlbWl0dGVkIHRvIGJlZm9yZSBhIG1lbW9yeSBhY2Nlc3MgdG8K PiBpbXBsZW1lbnQgdGhlIHJlbGVhc2UgcG9ydGlvbiBvZiBtZW1vcnkgbW9k ZWwgTU9ERUwuICovCj4gCj5AQCAtNDUxNyw2ICs0NjEzLDE0IEBAIHJpc2N2 X3ByaW50X29wZXJhbmQgKEZJTEUgKmZpbGUsIHJ0eCBvcCwgaW50IGxldHRl cikKPiBmcHV0cyAoR0VUX1JUWF9OQU1FIChjb2RlKSwgZmlsZSk7Cj4gYnJl YWs7Cj4gCj4rIGNhc2UgJ0wnOgo+KyByaXNjdl9wcmludF9yZWdsaXN0IChm aWxlLCBvcCk7Cj4rIGJyZWFrOwo+Kwo+KyBjYXNlICdzJzoKPisgcmlzY3Zf cHJpbnRfcG9wX3NpemUgKGZpbGUsIG9wKTsKPisgYnJlYWs7Cj4rCj4gY2Fz ZSAnUyc6Cj4gewo+IHJ0eCBuZXdvcCA9IEdFTl9JTlQgKGN0el9od2kgKElO VFZBTCAob3ApKSk7Cj5AQCAtNDc3Nyw2ICs0ODgxLDY2IEBAIHJpc2N2X3Vz ZV9zYXZlX2xpYmNhbGwgKGNvbnN0IHN0cnVjdCByaXNjdl9mcmFtZV9pbmZv IAo+KmZyYW1lKQo+IHJldHVybiBmcmFtZS0+c2F2ZV9saWJjYWxsX2FkanVz dG1lbnQgIT0gMDsKPiB9Cj4gCj4rLyogRGV0ZXJtaW5lIGhvdyBtYW55IGlu c3RydWN0aW9ucyByZWxhdGVkIHRvIHB1c2gvcG9wIGluc3RydWN0aW9ucy4g Ki8KPisKPitzdGF0aWMgdW5zaWduZWQKPityaXNjdl9zYXZlX3B1c2hfcG9w X2NvdW50ICh1bnNpZ25lZCBtYXNrKQo+K3sKPisgaWYgKCFCSVRTRVRfUCAo bWFzaywgR1BfUkVHX0ZJUlNUICsgUkVUVVJOX0FERFJfUkVHTlVNKSkKPisg cmV0dXJuIDA7Cj4rIGZvciAodW5zaWduZWQgbiA9IEdQX1JFR19MQVNUOyBu ID4gR1BfUkVHX0ZJUlNUOyBuLS0pCj4rIGlmIChCSVRTRVRfUCAobWFzaywg bikKPisgJiYgIWNhbGxfdXNlZF9yZWdzIFtuXSkKPisgLyogYWRkIHJhIHNh dmluZyBhbmQgc3AgYWRqdXN0LiAqLwo+KyByZXR1cm4gQ0FMTEVFX1NBVkVE X1JFR19OVU1CRVIgKG4pICsgMSArIDI7Cj4rIGFib3J0ICgpOwo+K30KPisK PisvKiBDYWxjdWxhdGUgdGhlIG1heGltdW0gc3AgYWRqdXN0bWVudCBvZiBw dXNoL3BvcCBpbnN0cnVjdGlvbi4gKi8KPisKPitzdGF0aWMgdW5zaWduZWQK PityaXNjdl9wdXNoX3BvcF9iYXNlX3NwX2FkanVzdCAodW5zaWduZWQgbWFz aykKPit7Cj4rIHVuc2lnbmVkIG5fcmVncyA9IHJpc2N2X3NhdmVfcHVzaF9w b3BfY291bnQgKG1hc2spIC0gMTsKPisgcmV0dXJuIChuX3JlZ3MgKiBVTklU U19QRVJfV09SRCArIDE1KSAmICh+MHhmKTsKPit9Cj4rCj4rLyogRGV0ZXJt aW5lIHdoZXRoZXIgdG8gY2FsbCBwdXNoL3BvcCByb3V0aW5lcy4gKi8KPisK PitzdGF0aWMgYm9vbAo+K3Jpc2N2X3VzZV9wdXNoX3BvcCAoY29uc3Qgc3Ry dWN0IHJpc2N2X2ZyYW1lX2luZm8gKmZyYW1lLCBjb25zdCBIT1NUX1dJREVf SU5UIAo+ZnJhbWVfc2l6ZSkKPit7Cj4rIGlmICghVEFSR0VUX1pDTVApCj4r IHJldHVybiBmYWxzZTsKPisKPisgLyogV2UgZG8gbm90IGhhbmRsZXIgdmFy aWFibGUgYXJndW1lbnQgY2FzZXMgY3VycmVudGx5LiAqLwo+KyBpZiAoY2Z1 bi0+bWFjaGluZS0+dmFyYXJnc19zaXplICE9IDApCj4rIHJldHVybiBmYWxz ZTsKPisKPisgSE9TVF9XSURFX0lOVCBiYXNlX3NpemUgPSByaXNjdl9wdXNo X3BvcF9iYXNlX3NwX2FkanVzdCAoZnJhbWUtPm1hc2spOwo+KyAvKgo+KyBQ ciA5NjAyMTUtMS5jIGluIHJ2NjQgb3VwdXRzCj4rCj4rIGFkZGkgc3Asc3As LTMyCj4rIHNkIHJhLDI0KHNwKQo+KyBzZCBzMCwxNihzcCkKPisgc2QgczIs OChzcCkKPisgc2QgczMsMChzcCkKPisgaXQgaXMgYSByYXJlIGNhc2UgdGhh dCBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXJzIGFyZSBub3Qgbm9uLWNvbnRpbm91 cywKPisgd2hpY2ggYnJlYWtzIHRoZSBvbGQgcHVzaCBpbXBsZW1lbnRhdGlv biwgYW5kIHdlIGp1c3QgcmVqZWN0IHRoaXMgY2FzZQo+KyBsaWtlIHNhdmUt cmVzdG9yZSBkb2VzIG5vdy4KPisgKi8KPisgaWYgKGJhc2Vfc2l6ZSA+IGZy YW1lX3NpemUpCj4rIHJldHVybiBmYWxzZTsKPisKPisgLyoge3JhLHMwLXMx MH0gaXMgaW52YWxpZC4gKi8KPisgaWYgKGZyYW1lLT5tYXNrICYgKDEgPDwg KFMxMF9SRUdOVU0gLSBHUF9SRUdfRklSU1QpKQo+KyAmJiAhKGZyYW1lLT5t YXNrICYgKDEgPDwgKFMxMV9SRUdOVU0gLSBHUF9SRUdfRklSU1QpKSkpCj4r IHJldHVybiBmYWxzZTsKPisKPisgcmV0dXJuIGZyYW1lLT5tYXNrICYgKDEg PDwgKFJFVFVSTl9BRERSX1JFR05VTSAtIEdQX1JFR19GSVJTVCkpOwo+K30K PisKPiAvKiBEZXRlcm1pbmUgd2hpY2ggR1BSIHNhdmUvcmVzdG9yZSByb3V0 aW5lIHRvIGNhbGwuICovCj4gCj4gc3RhdGljIHVuc2lnbmVkCj5AQCAtNDkz NCw2ICs1MDk4LDggQEAgcmlzY3ZfY29tcHV0ZV9mcmFtZV9pbmZvICh2b2lk KQo+IC8qIE9ubHkgdXNlIHNhdmUvcmVzdG9yZSByb3V0aW5lcyB3aGVuIHRo ZSBHUFJzIGFyZSBhdG9wIHRoZSBmcmFtZS4gKi8KPiBpZiAoa25vd25fbmUg KGZyYW1lLT5oYXJkX2ZyYW1lX3BvaW50ZXJfb2Zmc2V0LCBmcmFtZS0+dG90 YWxfc2l6ZSkpCj4gZnJhbWUtPnNhdmVfbGliY2FsbF9hZGp1c3RtZW50ID0g MDsKPisKPisgZnJhbWUtPnB1c2hfcG9wX3NwX2FkanVzdCA9IDA7Cj4gfQo+ IAo+IC8qIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIG5vdCB0cnlpbmcgdG8gZWxp bWluYXRlIHRvIHRoZSB3cm9uZyBoYXJkIGZyYW1lCj5AQCAtNTE3MSw2ICs1 MzM3LDg2IEBAIHJpc2N2X2Zvcl9lYWNoX3NhdmVkX3JlZyAocG9seV9pbnQ2 NCBzcF9vZmZzZXQsIAo+cmlzY3Zfc2F2ZV9yZXN0b3JlX2ZuIGZuLAo+IH0K PiB9Cj4gCj4rc3RhdGljIHZvaWQKPityaXNjdl9lbWl0X3BvcF9pbnNuIChz dHJ1Y3QgcmlzY3ZfZnJhbWVfaW5mbyAqZnJhbWUsIEhPU1RfV0lERV9JTlQg b2Zmc2V0LCAKPkhPU1RfV0lERV9JTlQgc2l6ZSkKPit7Cj4rIHVuc2lnbmVk IGludCB2ZWNsZW4gPSByaXNjdl9zYXZlX3B1c2hfcG9wX2NvdW50IChmcmFt ZS0+bWFzayk7Cj4rIHVuc2lnbmVkIGludCBuX3JlZyA9IHZlY2xlbiAtIDE7 Cj4rIHJ0dmVjIHZlYyA9IHJ0dmVjX2FsbG9jICh2ZWNsZW4pOwo+KyBIT1NU X1dJREVfSU5UIHNwX2FkanVzdDsKPisgcnR4IGR3YXJmID0gTlVMTF9SVFg7 Cj4rCj4rIGNvbnN0IHVuc2lnbmVkICpyZWdfb3JkZXIgPSAoVEFSR0VUX1pD TVAgJiYgVEFSR0VUX1JWRSkKPisgPyBwdXNoX3NhdmVfcmVnX29yZGVyX3pj bXBlCj4rIDogcHVzaF9zYXZlX3JlZ19vcmRlcjsKPisKPisgZ2NjX2Fzc2Vy dCAobl9yZWcgPj0gMQo+KyAmJiBUQVJHRVRfWkNNUAo+KyAmJiAoKFRBUkdF VF9SVkUgJiYgKG5fcmVnIDw9IEFSUkFZX1NJWkUgKHB1c2hfc2F2ZV9yZWdf b3JkZXJfemNtcGUpKSkKPisgfHwgKFRBUkdFVF9aQ01QICYmIChuX3JlZyA8 PSBBUlJBWV9TSVpFIChwdXNoX3NhdmVfcmVnX29yZGVyKSkpKSk7Cj4rCj4r IC8qIHNwIGFkanVzdCBwYXR0ZXJuICovCj4rIGludCBtYXhfYWxsb3dfc3Bf YWRqdXN0ID0gcmlzY3ZfcHVzaF9wb3BfYmFzZV9zcF9hZGp1c3QgKGZyYW1l LT5tYXNrKSArIDQ4Owo+KyBpbnQgYWxpZ25lZF9zaXplID0gc2l6ZTsKPisK PisgLyogaWYgc3AgYWRqdXN0bWVudCBpcyB0b28gbGFyZ2UsIHdlIHNob3Vs ZCBzcGxpdCBpdCBmaXJzdC4gKi8KPisgaWYgKGFsaWduZWRfc2l6ZSA+IG1h eF9hbGxvd19zcF9hZGp1c3QpCj4rIHsKPisgcnR4IGR3YXJmX3ByZV9zcF9h ZGp1c3QgPSBOVUxMX1JUWDsKPisgcnR4IHByZV9hZGp1c3RfcnR4ID0gZ2Vu X2FkZDNfaW5zbiAoc3RhY2tfcG9pbnRlcl9ydHgsCj4rIHN0YWNrX3BvaW50 ZXJfcnR4LAo+KyBHRU5fSU5UIChhbGlnbmVkX3NpemUgLSBtYXhfYWxsb3df c3BfYWRqdXN0KSk7Cj4rIHJ0eCBpbnNuID0gZW1pdF9pbnNuIChwcmVfYWRq dXN0X3J0eCk7Cj4rCj4rIHJ0eCBjZmFfcHJlX2FkanVzdF9ydHggPSBnZW5f cnR4X1BMVVMgKFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwKPisgR0VOX0lO VCAoYWxpZ25lZF9zaXplIC0gbWF4X2FsbG93X3NwX2FkanVzdCkpOwo+KyBk d2FyZl9wcmVfc3BfYWRqdXN0ID0gYWxsb2NfcmVnX25vdGUgKFJFR19DRkFf REVGX0NGQSwKPisgY2ZhX3ByZV9hZGp1c3RfcnR4LAo+KyBkd2FyZl9wcmVf c3BfYWRqdXN0KTsKPisKPisgUlRYX0ZSQU1FX1JFTEFURURfUCAoaW5zbikg PSAxOwo+KyBSRUdfTk9URVMgKGluc24pID0gZHdhcmZfcHJlX3NwX2FkanVz dDsKPisKPisgc3BfYWRqdXN0ID0gbWF4X2FsbG93X3NwX2FkanVzdDsKPisg fQo+KyBlbHNlCj4rIHNwX2FkanVzdCA9IChhbGlnbmVkX3NpemUgKyAxNSkg JiAofjB4Zik7Cj4rCj4rIC8qIHJlZ2lzdGVyIHNhdmUgc2VxdWVuY2UuICov Cj4rIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCB2ZWNsZW47ICsraSkKPisg ewo+KyBvZmZzZXQgLT0gVU5JVFNfUEVSX1dPUkQ7Cj4rIHVuc2lnbmVkIHJl Z25vID0gcmVnX29yZGVyW2ldOwo+KyBydHggcmVnID0gZ2VuX3J0eF9SRUcg KFBtb2RlLCByZWdubyk7Cj4rIHJ0eCBtZW0gPSBnZW5fZnJhbWVfbWVtIChQ bW9kZSwgcGx1c19jb25zdGFudCAoUG1vZGUsCj4rIHN0YWNrX3BvaW50ZXJf cnR4LAo+KyBvZmZzZXQpKTsKPisgcnR4IHNldCA9IGdlbl9ydHhfU0VUIChy ZWcsIG1lbSk7Cj4rIFJUVkVDX0VMVCAodmVjLCBpIC0gMSkgPSBzZXQ7Cj4r IFJUWF9GUkFNRV9SRUxBVEVEX1AgKHNldCkgPSAxOwo+KyBkd2FyZiA9IGFs bG9jX3JlZ19ub3RlIChSRUdfQ0ZBX1JFU1RPUkUsIHJlZywgZHdhcmYpOwo+ KyB9Cj4rCj4rIC8qIHNwIGFkanVzdCBwYXR0ZXJuICovCj4rIHJ0eCBhZGp1 c3Rfc3BfcnR4Cj4rID0gZ2VuX3J0eF9TRVQgKHN0YWNrX3BvaW50ZXJfcnR4 LAo+KyBwbHVzX2NvbnN0YW50IChQbW9kZSwKPisgc3RhY2tfcG9pbnRlcl9y dHgsCj4rIHNwX2FkanVzdCkpOwo+KyBSVFZFQ19FTFQgKHZlYywgdmVjbGVu IC0gMSkgPSBhZGp1c3Rfc3BfcnR4Owo+Kwo+KyBydHggY2ZhX2FkanVzdF9y dHggPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwK PisgY29uc3QwX3J0eCk7Cj4rIGR3YXJmID0gYWxsb2NfcmVnX25vdGUgKFJF R19DRkFfREVGX0NGQSwgY2ZhX2FkanVzdF9ydHgsIGR3YXJmKTsKPisKPisg ZnJhbWUtPmdwX3NwX29mZnNldCAtPSAodmVjbGVuIC0gMSkgKiBVTklUU19Q RVJfV09SRDsKPisgZnJhbWUtPnB1c2hfcG9wX3NwX2FkanVzdCA9IHNwX2Fk anVzdDsKPisKPisgcnR4IGluc24gPSBlbWl0X2luc24gKGdlbl9ydHhfUEFS QUxMRUwgKFZPSURtb2RlLCB2ZWMpKTsKPisgUlRYX0ZSQU1FX1JFTEFURURf UCAoaW5zbikgPSAxOwo+KyBSRUdfTk9URVMgKGluc24pID0gZHdhcmY7Cj4r fQo+Kwo+IC8qIEZvciBzdGFjayBmcmFtZXMgdGhhdCBjYW4ndCBiZSBhbGxv Y2F0ZWQgd2l0aCBhIHNpbmdsZSBBRERJIGluc3RydWN0aW9uLAo+IGNvbXB1 dGUgdGhlIGJlc3QgdmFsdWUgdG8gaW5pdGlhbGx5IGFsbG9jYXRlLiBJdCBt dXN0IGF0IGEgbWluaW11bQo+IGFsbG9jYXRlIGVub3VnaCBzcGFjZSB0byBz cGlsbCB0aGUgY2FsbGVlLXNhdmVkIHJlZ2lzdGVycy4gSWYgVEFSR0VUX1JW QywKPkBAIC01MjcwLDYgKzU1MTYsMTQ2IEBAIHJpc2N2X2VtaXRfc3RhY2tf dGllICh2b2lkKQo+IGVtaXRfaW5zbiAoZ2VuX3N0YWNrX3RpZWRpIChzdGFj a19wb2ludGVyX3J0eCwgaGFyZF9mcmFtZV9wb2ludGVyX3J0eCkpOwo+IH0K PiAKPitib29sCj4rcmlzY3ZfY2hlY2tfcmVnbm8ocnR4IHBhdCwgdW5zaWdu ZWQgcmVnbm8pCj4rewo+KyByZXR1cm4gUkVHX1AgKHBhdCkKPisgJiYgUkVH Tk8gKHBhdCkgPT0gcmVnbm87Cj4rfQo+Kwo+Ky8qIEZ1bmN0aW9uIHRvIGNo ZWNrIHdoZXRoZXIgdGhlIE9QIGlzIGEgdmFsaWQgc3RhY2sgcHVzaC9wb3Ag b3BlcmF0aW9uLgo+KyBUaGlzIHBhcnQgaXMgYm9ycm93ZWQgZnJvbSBuZHMz MiBuZHMzMl92YWxpZF9zdGFja19wdXNoX3BvcF9wICovCj4rCj4rYm9vbAo+ K3Jpc2N2X3ZhbGlkX3N0YWNrX3B1c2hfcG9wX3AgKHJ0eCBvcCwgYm9vbCBw dXNoX3ApCj4rewo+KyBpbnQgaW5kZXg7Cj4rIGludCB0b3RhbF9jb3VudDsK PisgaW50IHNwX2FkanVzdF9ydHhfaW5kZXg7Cj4rIHJ0eCBlbHQ7Cj4rIHJ0 eCBlbHRfcmVnOwo+KyBydHggZWx0X3BsdXM7Cj4rCj4rIGlmICghVEFSR0VU X1pDTVApCj4rIHJldHVybiBmYWxzZTsKPisKPisgdG90YWxfY291bnQgPSBY VkVDTEVOIChvcCwgMCk7Cj4rIHNwX2FkanVzdF9ydHhfaW5kZXggPSBwdXNo X3AgPyAwIDogdG90YWxfY291bnQgLSAxOwo+Kwo+KyAvKiBBdCBsZWFzdCBz cCArIG9uZSBjYWxsZWUgc2F2ZS9yZXN0b3JlIHJlZ2lzdGVyIHJ0eCAqLwo+ KyBpZiAodG90YWxfY291bnQgPCAyKQo+KyByZXR1cm4gZmFsc2U7Cj4rCj4r IC8qIFBlcmZvcm0gc29tZSBxdWljayBjaGVjayBmb3IgdGhhdCBldmVyeSBl bGVtZW50IHNob3VsZCBiZSAnc2V0JywKPisgZm9yIHBvcCwgaXQgbWlnaHQg Y29udGFpbiBgcmV0YCBhbmQgYHJldCB2YWx1ZWAgcGF0dGVybi4gKi8KPisg Zm9yIChpbmRleCA9IDA7IGluZGV4IDwgdG90YWxfY291bnQ7IGluZGV4Kysp Cj4rIHsKPisgZWx0ID0gWFZFQ0VYUCAob3AsIDAsIGluZGV4KTsKPisKPisg Lyogc2tpcCBwb3AgcmV0dXJuIHZhbHVlIHJ0eCAqLwo+KyBpZiAoIXB1c2hf cCAmJiBHRVRfQ09ERSAoZWx0KSA9PSBTRVQKPisgJiYgcmlzY3ZfY2hlY2tf cmVnbm8gKFNFVF9ERVNUIChlbHQpLCBSRVRVUk5fVkFMVUVfUkVHTlVNKQo+ KyAmJiB0b3RhbF9jb3VudCA+PSA0Cj4rICYmIGluZGV4ICsgMSA8IHRvdGFs X2NvdW50Cj4rICYmIEdFVF9DT0RFIChYVkVDRVhQIChvcCwgMCwgaW5kZXgg KyAxKSkgPT0gVVNFKQo+KyB7Cj4rIHJ0eCB1c2VfcmVnID0gWEVYUCAoWFZF Q0VYUCAob3AsIDAsIGluZGV4ICsgMSksIDApOwo+Kwo+KyBpZiAoIXJpc2N2 X2NoZWNrX3JlZ25vICh1c2VfcmVnLCBSRVRVUk5fVkFMVUVfUkVHTlVNKSkK PisgcmV0dXJuIGZhbHNlOwo+Kwo+KyBpbmRleCArPSAxOwo+KyBjb250aW51 ZTsKPisgfQo+Kwo+KyAvKiBza2lwIHJldCBydHggKi8KPisgaWYgKCFwdXNo X3AgJiYgR0VUX0NPREUgKGVsdCkgPT0gU0lNUExFX1JFVFVSTgo+KyAmJiB0 b3RhbF9jb3VudCA+PSA0Cj4rICYmIGluZGV4ICsgMSA8IHRvdGFsX2NvdW50 Cj4rICYmIEdFVF9DT0RFIChYVkVDRVhQIChvcCwgMCwgaW5kZXggKyAxKSkg PT0gVVNFKQo+KyB7Cj4rIHJ0eCB1c2VfcmVnID0gWEVYUCAoWFZFQ0VYUCAo b3AsIDAsIGluZGV4ICsgMSksIDApOwo+Kwo+KyBpZiAoIXJpc2N2X2NoZWNr X3JlZ25vICh1c2VfcmVnLCBSRVRVUk5fQUREUl9SRUdOVU0pKQo+KyByZXR1 cm4gZmFsc2U7Cj4rCj4rIGluZGV4ICs9IDE7Cj4rIHNwX2FkanVzdF9ydHhf aW5kZXggLT0gMjsKPisgY29udGludWU7Cj4rIH0KPisKPisgaWYgKEdFVF9D T0RFIChlbHQpICE9IFNFVCkKPisgcmV0dXJuIGZhbHNlOwo+KyB9Cj4rCj4r IGVsdCA9IFhWRUNFWFAgKG9wLCAwLCBzcF9hZGp1c3RfcnR4X2luZGV4KTsK PisgZWx0X3JlZyA9IFNFVF9ERVNUIChlbHQpOwo+KyBlbHRfcGx1cyA9IFNF VF9TUkMgKGVsdCk7Cj4rCj4rIC8qIENoZWNrIHRoaXMgaXMgKHNldCAoc3Rh Y2tfcmVnKSAocGx1cyBzdGFja19yZWcgY29uc3QpKSBwYXR0ZXJuLiAqLwo+ KyBpZiAoR0VUX0NPREUgKGVsdF9wbHVzKSAhPSBQTFVTCj4rIHx8ICFyaXNj dl9jaGVja19yZWdubyAoZWx0X3JlZywgU1RBQ0tfUE9JTlRFUl9SRUdOVU0p KQo+KyByZXR1cm4gZmFsc2U7Cj4rCj4rIC8qIFBhc3MgYWxsIHRlc3QsIHRo aXMgaXMgYSB2YWxpZCBydHguICovCj4rIHJldHVybiB0cnVlOwo+K30KPisK PisvKiBHZW5lcmF0ZSBwdXNoL3BvcCBydHggKi8KPisKPitzdGF0aWMgdm9p ZAo+K3Jpc2N2X2VtaXRfcHVzaF9pbnNuIChzdHJ1Y3QgcmlzY3ZfZnJhbWVf aW5mbyAqZnJhbWUsIEhPU1RfV0lERV9JTlQgc2l6ZSkKPit7Cj4rIHVuc2ln bmVkIGludCB2ZWNsZW4gPSByaXNjdl9zYXZlX3B1c2hfcG9wX2NvdW50IChm cmFtZS0+bWFzayk7Cj4rIHVuc2lnbmVkIGludCBuX3JlZyA9IHZlY2xlbiAt IDE7Cj4rIHJ0dmVjIHZlYyA9IHJ0dmVjX2FsbG9jICh2ZWNsZW4pOwo+Kwo+ KyBjb25zdCB1bnNpZ25lZCAqcmVnX29yZGVyID0gKFRBUkdFVF9aQ01QICYm IFRBUkdFVF9SVkUpCj4rID8gcHVzaF9zYXZlX3JlZ19vcmRlcl96Y21wZQo+ KyA6IHB1c2hfc2F2ZV9yZWdfb3JkZXI7Cj4rCj4rIGludCBhbGlnbmVkX3Np emUgPSAoc2l6ZSArIDE1KSAmICh+MHhmKTsKPisKPisgZ2NjX2Fzc2VydCAo bl9yZWcgPj0gMQo+KyAmJiBUQVJHRVRfWkNNUAo+KyAmJiAoKFRBUkdFVF9S VkUgJiYgKG5fcmVnIDw9IEFSUkFZX1NJWkUgKHB1c2hfc2F2ZV9yZWdfb3Jk ZXJfemNtcGUpKSkKPisgfHwgKFRBUkdFVF9aQ01QICYmIChuX3JlZyA8PSBB UlJBWV9TSVpFIChwdXNoX3NhdmVfcmVnX29yZGVyKSkpKSk7Cj4rCj4rIC8q IHNwIGFkanVzdCBwYXR0ZXJuICovCj4rIGludCBtYXhfYWxsb3dfc3BfYWRq dXN0ID0gcmlzY3ZfcHVzaF9wb3BfYmFzZV9zcF9hZGp1c3QgKGZyYW1lLT5t YXNrKSArIDQ4Owo+KyBpbnQgc3BfYWRqdXN0ID0gYWxpZ25lZF9zaXplID4g bWF4X2FsbG93X3NwX2FkanVzdCA/Cj4rIG1heF9hbGxvd19zcF9hZGp1c3QK PisgOiBhbGlnbmVkX3NpemU7Cj4rCj4rIC8qVE9ETzogbW92ZSB0aGlzIHBh cnQgdG8gZnJhbWUgY29tcHV0YXRpb24gZnVuY3Rpb24uICovCj4rIGZyYW1l LT5ncF9zcF9vZmZzZXQgPSAodmVjbGVuIC0gMSkgKiBVTklUU19QRVJfV09S RDsKPisgZnJhbWUtPnB1c2hfcG9wX3NwX2FkanVzdCA9IHNwX2FkanVzdDsK PisKPisgcnR4IGFkanVzdF9zcF9ydHgKPisgPSBnZW5fcnR4X1NFVCAoc3Rh Y2tfcG9pbnRlcl9ydHgsCj4rIHBsdXNfY29uc3RhbnQgKFBtb2RlLAo+KyBz dGFja19wb2ludGVyX3J0eCwKPisgLXNwX2FkanVzdCkpOwo+KyBSVFZFQ19F TFQgKHZlYywgMCkgPSBhZGp1c3Rfc3BfcnR4Owo+Kwo+KyAvKiBSZWdpc3Rl ciBzYXZlIHNlcXVlbmNlLiAqLwo+KyBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp IDwgdmVjbGVuOyArK2kpCj4rIHsKPisgc3BfYWRqdXN0IC09IFVOSVRTX1BF Ul9XT1JEOwo+KyB1bnNpZ25lZCByZWdubyA9IHJlZ19vcmRlcltpXTsKPisg cnR4IHJlZyA9IGdlbl9ydHhfUkVHIChQbW9kZSwgcmVnbm8pOwo+KyBydHgg bWVtID0gZ2VuX2ZyYW1lX21lbSAoUG1vZGUsIHBsdXNfY29uc3RhbnQgKFBt b2RlLAo+KyBzdGFja19wb2ludGVyX3J0eCwKPisgc3BfYWRqdXN0KSk7Cj4r IHJ0eCBzZXQgPSBnZW5fcnR4X1NFVCAobWVtLCByZWcpOwo+KyBSVFZFQ19F TFQgKHZlYywgaSkgPSBzZXQ7Cj4rIFJUWF9GUkFNRV9SRUxBVEVEX1AgKHNl dCkgPSAxOwo+KyB9Cj4rCj4rIHJ0eCBpbnNuID0gZW1pdF9pbnNuIChnZW5f cnR4X1BBUkFMTEVMIChWT0lEbW9kZSwgdmVjKSk7Cj4rIFJUWF9GUkFNRV9S RUxBVEVEX1AgKGluc24pID0gMTsKPit9Cj4rCj4gLyogRXhwYW5kIHRoZSAi cHJvbG9ndWUiIHBhdHRlcm4uICovCj4gCj4gdm9pZAo+QEAgLTUyNzgsNiAr NTY2NCw3IEBAIHJpc2N2X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKPiBzdHJ1 Y3QgcmlzY3ZfZnJhbWVfaW5mbyAqZnJhbWUgPSAmY2Z1bi0+bWFjaGluZS0+ ZnJhbWU7Cj4gcG9seV9pbnQ2NCBzaXplID0gZnJhbWUtPnRvdGFsX3NpemU7 Cj4gdW5zaWduZWQgbWFzayA9IGZyYW1lLT5tYXNrOwo+KyBIT1NUX1dJREVf SU5UIHN0ZXAxID0gcmlzY3ZfZmlyc3Rfc3RhY2tfc3RlcCAoZnJhbWUpOwo+ IHJ0eCBpbnNuOwo+IAo+IGlmIChmbGFnX3N0YWNrX3VzYWdlX2luZm8pCj5A QCAtNTMwMCwxOSArNTY4NywzMiBAQCByaXNjdl9leHBhbmRfcHJvbG9ndWUg KHZvaWQpCj4gUkVHX05PVEVTIChpbnNuKSA9IGR3YXJmOwo+IH0KPiAKPisg aWYgKHNpemUuaXNfY29uc3RhbnQgKCkpCj4rIHN0ZXAxID0gTUlOIChzaXpl LnRvX2NvbnN0YW50KCksIHN0ZXAxKTsKPisgaWYgKHJpc2N2X3VzZV9wdXNo X3BvcCAoZnJhbWUsIHN0ZXAxKSkKPisgewo+KyByaXNjdl9lbWl0X3B1c2hf aW5zbiAoZnJhbWUsIHN0ZXAxKTsKPisKPisgc3RlcDEgPSBNQVggKHN0ZXAx IC0gZnJhbWUtPnB1c2hfcG9wX3NwX2FkanVzdCwgMCk7Cj4rIHNpemUgPSBN QVggKHNpemUudG9fY29uc3RhbnQoKSAtIGZyYW1lLT5wdXNoX3BvcF9zcF9h ZGp1c3QsIDApOwo+KyBmcmFtZS0+bWFzayAmPSB+ICgoVEFSR0VUX1pDTVAg JiYgVEFSR0VUX1JWRSkgPwo+KyBSSVNDVl9aQ01QRV9QVVNIX1BPUF9NQVNL Cj4rIDogUklTQ1ZfWkNFX1BVU0hfUE9QX01BU0spOwo+KyB9Cj4rCj4gLyog U2F2ZSB0aGUgcmVnaXN0ZXJzLiAqLwo+IGlmICgoZnJhbWUtPm1hc2sgfCBm cmFtZS0+Zm1hc2spICE9IDApCj4gewo+LSBIT1NUX1dJREVfSU5UIHN0ZXAx ID0gcmlzY3ZfZmlyc3Rfc3RhY2tfc3RlcCAoZnJhbWUpOwo+LSBpZiAoc2l6 ZS5pc19jb25zdGFudCAoKSkKPi0gc3RlcDEgPSBNSU4gKHNpemUudG9fY29u c3RhbnQoKSwgc3RlcDEpOwo+LQo+LSBpbnNuID0gZ2VuX2FkZDNfaW5zbiAo c3RhY2tfcG9pbnRlcl9ydHgsCj4tIHN0YWNrX3BvaW50ZXJfcnR4LAo+LSBH RU5fSU5UICgtc3RlcDEpKTsKPi0gUlRYX0ZSQU1FX1JFTEFURURfUCAoZW1p dF9pbnNuIChpbnNuKSkgPSAxOwo+LSBzaXplIC09IHN0ZXAxOwo+LSByaXNj dl9mb3JfZWFjaF9zYXZlZF9yZWcgKHNpemUsIHJpc2N2X3NhdmVfcmVnLCBm YWxzZSwgZmFsc2UpOwo+KyBpZiAoc3RlcDEgPiAwKQo+KyB7Cj4rIGluc24g PSBnZW5fYWRkM19pbnNuIChzdGFja19wb2ludGVyX3J0eCwKPisgc3RhY2tf cG9pbnRlcl9ydHgsCj4rIEdFTl9JTlQgKC1zdGVwMSkpOwo+KyBSVFhfRlJB TUVfUkVMQVRFRF9QIChlbWl0X2luc24gKGluc24pKSA9IDE7Cj4rIHNpemUg LT0gc3RlcDE7Cj4rIH0KPisgcmlzY3ZfZm9yX2VhY2hfc2F2ZWRfcmVnIChz aXplLCByaXNjdl9zYXZlX3JlZywKPisgZmFsc2UgLyogYm9vbCBlcGlsb2d1 ZSAqLywgZmFsc2UgLyogYm9vbCBtYXliZV9laF9yZXR1cm4gKi8pOwo+IH0K PiAKPiBmcmFtZS0+bWFzayA9IG1hc2s7IC8qIFVuZG8gdGhlIGFib3ZlIGZp Yi4gKi8KPkBAIC01NDEyLDYgKzU4MTIsOCBAQCByaXNjdl9leHBhbmRfZXBp bG9ndWUgKGludCBzdHlsZSkKPiBydHggcmEgPSBnZW5fcnR4X1JFRyAoUG1v ZGUsIFJFVFVSTl9BRERSX1JFR05VTSk7Cj4gcnR4IGluc247Cj4gCj4rIGJv b2wgdXNlX3pjbXBfcG9wID0gIXVzZV9yZXN0b3JlX2xpYmNhbGwgJiYgIShj cnRsLT5jYWxsc19laF9yZXR1cm4pOwo+Kwo+IC8qIFdlIG5lZWQgdG8gYWRk IG1lbW9yeSBiYXJyaWVyIHRvIHByZXZlbnQgcmVhZCBmcm9tIGRlYWxsb2Nh dGVkIHN0YWNrLiAqLwo+IGJvb2wgbmVlZF9iYXJyaWVyX3AgPSBrbm93bl9u ZSAoZ2V0X2ZyYW1lX3NpemUgKCkKPiArIGNmdW4tPm1hY2hpbmUtPmZyYW1l LmFyZ19wb2ludGVyX29mZnNldCwgMCk7Cj5AQCAtNTUzOCw2ICs1OTQwLDE4 IEBAIHJpc2N2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQo+IGlmICh1 c2VfcmVzdG9yZV9saWJjYWxsKQo+IGZyYW1lLT5tYXNrID0gMDsgLyogVGVt cG9yYXJpbHkgZmliIHRoYXQgd2UgbmVlZCBub3Qgc2F2ZSBHUFJzLiAqLwo+ IAo+KyBpZiAodXNlX3pjbXBfcG9wICYmIHJpc2N2X3VzZV9wdXNoX3BvcCAo ZnJhbWUsIHN0ZXAyKSkKPisgewo+KyAvKiBFbWl0IGEgYmFycmllciB0byBw cmV2ZW50IGxvYWRzIGZyb20gYSBkZWFsbG9jYXRlZCBzdGFjay4gKi8KPisg cmlzY3ZfZW1pdF9zdGFja190aWUgKCk7Cj4rIG5lZWRfYmFycmllcl9wID0g ZmFsc2U7Cj4rIHJpc2N2X2VtaXRfcG9wX2luc24gKGZyYW1lLCBmcmFtZS0+ dG90YWxfc2l6ZS50b19jb25zdGFudCgpLCBzdGVwMik7Cj4rIGZyYW1lLT5t YXNrICY9IH4gKChUQVJHRVRfWkNNUCAmJiBUQVJHRVRfUlZFKSA/Cj4rIFJJ U0NWX1pDTVBFX1BVU0hfUE9QX01BU0sKPisgOiBSSVNDVl9aQ0VfUFVTSF9Q T1BfTUFTSyk7Cj4rIHN0ZXAyID0gMDsKPisgfQo+Kwo+IC8qIFJlc3RvcmUg dGhlIHJlZ2lzdGVycy4gKi8KPiByaXNjdl9mb3JfZWFjaF9zYXZlZF9yZWcg KGZyYW1lLT50b3RhbF9zaXplIC0gc3RlcDIsIHJpc2N2X3Jlc3RvcmVfcmVn LAo+IHRydWUsIHN0eWxlID09IEVYQ0VQVElPTl9SRVRVUk4pOwo+QEAgLTU1 NTIsNiArNTk2Niw5IEBAIHJpc2N2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0 eWxlKQo+IGlmIChuZWVkX2JhcnJpZXJfcCkKPiByaXNjdl9lbWl0X3N0YWNr X3RpZSAoKTsKPiAKPisgaWYgKHVzZV96Y21wX3BvcCkKPisgZnJhbWUtPm1h c2sgPSBtYXNrOwo+Kwo+IC8qIERlYWxsb2NhdGUgdGhlIGZpbmFsIGJpdCBv ZiB0aGUgZnJhbWUuICovCj4gaWYgKHN0ZXAyID4gMCkKPiB7Cj5kaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5oIGIvZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi5oCj5pbmRleCBkMDViMWQ1OTg1My4uNmU2ZTNlZTJjMjUg MTAwNjQ0Cj4tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmgKPisrKyBi L2djYy9jb25maWcvcmlzY3YvcmlzY3YuaAo+QEAgLTM4Myw2ICszODMsNyBA QCBBU01fTUlTQV9TUEVDCj4gI2RlZmluZSBIQVJEX0ZSQU1FX1BPSU5URVJf UkVHTlVNIDgKPiAjZGVmaW5lIFNUQUNLX1BPSU5URVJfUkVHTlVNIDIKPiAj ZGVmaW5lIFRIUkVBRF9QT0lOVEVSX1JFR05VTSA0Cj4rI2RlZmluZSBSRVRV Uk5fVkFMVUVfUkVHTlVNIDEwCj4gCj4gLyogVGhlc2UgdHdvIHJlZ2lzdGVy cyBkb24ndCByZWFsbHkgZXhpc3Q6IHRoZXkgZ2V0IGVsaW1pbmF0ZWQgdG8g ZWl0aGVyCj4gdGhlIHN0YWNrIG9yIGhhcmQgZnJhbWUgcG9pbnRlci4gKi8K PkBAIC0xMDk3LDQgKzEwOTgsNyBAQCBleHRlcm4gdm9pZCByaXNjdl9yZW1v dmVfdW5uZWVkZWRfc2F2ZV9yZXN0b3JlX2NhbGxzIAo+KHZvaWQpOwo+ICNk ZWZpbmUgRFdBUkZfUkVHX1RPX1VOV0lORF9DT0xVTU4oUkVHTk8pIFwKPiAo KFJFR05PID09IFJJU0NWX0RXQVJGX1ZMRU5CKSA/IChGSVJTVF9QU0VVRE9f UkVHSVNURVIgKyAxKSA6IFJFR05PKQo+IAo+KyNkZWZpbmUgUklTQ1ZfWkNF X1BVU0hfUE9QX01BU0sgMHgwZmZjMDMwMnUKPisjZGVmaW5lIFJJU0NWX1pD TVBFX1BVU0hfUE9QX01BU0sgMHgzMDJ1Cj4rCj4gI2VuZGlmIC8qICEgR0ND X1JJU0NWX0ggKi8KPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2Lm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAo+aW5kZXggYmMz ODRkOWFlZGYuLmI5ZjJhNDI2ZTQ4IDEwMDY0NAo+LS0tIGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi5tZAo+KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di5tZAo+QEAgLTEwOCwxMiArMTA4LDE0IEBACj4gCj4gKGRlZmluZV9jb25z dGFudHMKPiBbKFJFVFVSTl9BRERSX1JFR05VTSAxKQo+KyAoU1BfUkVHTlVN IDIpCj4gKEdQX1JFR05VTSAzKQo+IChUUF9SRUdOVU0gNCkKPiAoVDBfUkVH TlVNIDUpCj4gKFQxX1JFR05VTSA2KQo+IChTMF9SRUdOVU0gOCkKPiAoUzFf UkVHTlVNIDkpCj4rIChBMF9SRUdOVU0gMTApCj4gKFMyX1JFR05VTSAxOCkK PiAoUzNfUkVHTlVNIDE5KQo+IChTNF9SRUdOVU0gMjApCj5AQCAtMzE0Nywz ICszMTQ5LDQgQEAKPiAoaW5jbHVkZSAic2lmaXZlLTcubWQiKQo+IChpbmNs dWRlICJ0aGVhZC5tZCIpCj4gKGluY2x1ZGUgInZlY3Rvci5tZCIpCj4rKGlu Y2x1ZGUgInpjLm1kIikKPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2 L3QtcmlzY3YgYi9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YKPmluZGV4IDZl MzI2ZmM3ZTAyLi45ZWY1MjIzMDZhNSAxMDA2NDQKPi0tLSBhL2djYy9jb25m aWcvcmlzY3YvdC1yaXNjdgo+KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90LXJp c2N2Cj5AQCAtOTAsNiArOTAsMTAgQEAgcmlzY3Ytdi5vOiAkKHNyY2Rpcikv Y29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MgXAo+ICQoQ09NUElMRSkgJDwKPiAk KFBPU1RDT01QSUxFKQo+IAo+K3Jpc2N2LXpjbXAtcG9wcmV0Lm86ICQoc3Jj ZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtemNtcC1wb3ByZXQuY2MKPisgJChD T01QSUxFKSAkPAo+KyAkKFBPU1RDT01QSUxFKQo+Kwo+IHRoZWFkLm86ICQo c3JjZGlyKS9jb25maWcvcmlzY3YvdGhlYWQuY2MgXAo+ICQoQ09ORklHX0gp ICQoU1lTVEVNX0gpIGNvcmV0eXBlcy5oICQoVEFSR0VUX0gpIGJhY2tlbmQu aCAkKFJUTF9IKSBcCj4gbWVtbW9kZWwuaCAkKEVNSVRfUlRMX0gpIHBvbHkt aW50Lmggb3V0cHV0LmgKPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2 L3pjLm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi96Yy5tZAo+bmV3IGZpbGUgbW9k ZSAxMDA2NDQKPmluZGV4IDAwMDAwMDAwMDAwLi4zYWQzNGRhY2Q0OQo+LS0t IC9kZXYvbnVsbAo+KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi96Yy5tZAo+QEAg LTAsMCArMSw0NyBAQAo+Kzs7IE1hY2hpbmUgZGVzY3JpcHRpb24gZm9yIFpD RSBleHRlbnNpb24uCj4rOzsgQ29weXJpZ2h0IChDKSAyMDIxIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgo+Kwo+Kzs7IFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdDQy4KPisKPis7OyBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+Kzs7IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cj4rOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9u KQo+Kzs7IGFueSBsYXRlciB2ZXJzaW9uLgo+Kwo+Kzs7IEdDQyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ Kzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4rOzsgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCj4r OzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KPisKPis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+Kzs7IGFsb25nIHdp dGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuIElmIG5vdCBzZWUKPis7 OyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4rCj4rKGRlZmlu ZV9pbnNuICIqc3RhY2tfcHVzaDxtb2RlPiIKPisgWyhtYXRjaF9wYXJhbGxl bCAwICJyaXNjdl9zdGFja19wdXNoX29wZXJhdGlvbiIKPisgWyhzZXQgKHJl ZzpYIFNQX1JFR05VTSkgKHBsdXM6WCAocmVnOlggU1BfUkVHTlVNKQo+KyAo bWF0Y2hfb3BlcmFuZDpYIDEgImNvbnN0X2ludF9vcGVyYW5kIiAiIikpKV0p XQo+KyAiVEFSR0VUX1pDTVAiCj4rICJjbS5wdXNoXHR7JUwwfSwlMSIpCj4r Cj4rKGRlZmluZV9pbnNuICIqc3RhY2tfcG9wPG1vZGU+Igo+KyBbKG1hdGNo X3BhcmFsbGVsIDAgInJpc2N2X3N0YWNrX3BvcF9vcGVyYXRpb24iCj4rIFso c2V0IChtYXRjaF9vcGVyYW5kOlggMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIp Cj4rIChtZW06WCAocGx1czpYIChyZWc6WCBTUF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOlggMiAiY29uc3RfaW50X29wZXJhbmQiICIiKSkpKV0pXQo+ KyAiVEFSR0VUX1pDTVAiCj4rIHsKPisgcmV0dXJuIHJpc2N2X291dHB1dF9w b3ByZXRfcCAob3BlcmFuZHNbMF0pID8KPisgImNtLnBvcHJldFx0eyVMMH0s JXMwIiA6Cj4rICJjbS5wb3BcdHslTDB9LCVzMCI7Cj4rIH0pCj4rCj4rKGRl ZmluZV9pbnNuICIqc3RhY2tfcG9wX3dpdGhfcmV0dXJuX3ZhbHVlPG1vZGU+ Igo+KyBbKG1hdGNoX3BhcmFsbGVsIDAgInJpc2N2X3N0YWNrX3BvcF9vcGVy YXRpb24iCj4rIFsoc2V0IChyZWc6QU5ZSSBBMF9SRUdOVU0pCj4rIChtYXRj aF9vcGVyYW5kOkFOWUkgMSAicG9wX3JldHVybl92YWx1ZV9jb25zdGFudCIg IiIpKV0pXQo+KyAiVEFSR0VUX1pDTVAiCj4rIHsKPisgZ2NjX2Fzc2VydCAo cmlzY3Zfb3V0cHV0X3BvcHJldF9wIChvcGVyYW5kc1swXSkpOwo+KyByZXR1 cm4gImNtLnBvcHJldHpcdHslTDB9LCVzMCI7Cj4rIH0pCj4tLSAKPjIuMjUu MQo= ------=ALIBOUNDARY_44548_7f0370adb700_64552756_3e794--