From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by sourceware.org (Postfix) with ESMTPS id 7762A385B52B; Tue, 14 Mar 2023 02:06:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7762A385B52B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pl1-x631.google.com with SMTP id h8so15032567plf.10; Mon, 13 Mar 2023 19:06:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678759582; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=91lG1e+v3LpX9RcODVx2MySAPQq2eHSw6bUnYntMsIs=; b=MGNo13lxQLJWKs2BaW+0VRCwSPY/wbcHi1hpOTI+feSAy/dYNMzZkWDlY6VGoMWFO7 YR0JKnhuIUPtboL61wLO9lHRKXTUWOsOMVne0+OOgMyzDZGPsjNIGbrsDodavfeRN9pm benUKSKQWD0RZGDMvGILeYp/GbhvUo7cQH9Lpq5dOzZVdxS36qk4T/LRy4bLwdECaBjd CstwOKQ4Ye+/mkbLEK5QV7DVaREh0eCT8O7//VEW3p4r4i+HTH8VDCNSS9+jzvpgow3w 2bWKWqp5Rv3+zNTSTnalZcHZ4PxxqudgvCSjBb/ZYvSst0msRz3AcOdtQDIaq+Yyu6xa vJsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678759582; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=91lG1e+v3LpX9RcODVx2MySAPQq2eHSw6bUnYntMsIs=; b=AiZlgAaVqnh7BxVnkb7ht7QRTb69dVMjFNzFNi/CMvZEBilzMuXPOUxqqViBurKqng RWS71mRozbU/SkZHdeum165sE9wpx0ujzYrrpmtzCD7syvAIsH+Brd6C9P1Fy6v3c3bk EJCkfdcSzBNd3Ep1dX85z0eBuGDzNLH47AT1Bp2o38j10aB34W5Ey564X4lVSgRsEXw/ fjh3nQYqnJNVMat8ql8AzRWvfNuAxI3pvXVpGGvc1/5krf51swmCpIRMgUKCyiNXbmWi IUOjQf05uvDU4YLBmBKu9zl0PBYBLbUHN9ogiWxom1TwPKwstqbcgqRbBrdAIkrYRdeT UKbQ== X-Gm-Message-State: AO0yUKW0uYALUvpPGMTURJTlLR5LiUmQ+ehNaqBm6DYr7RY3dFgUE7kk cwefuV1YIuYEYWShhu68Bgk= X-Google-Smtp-Source: AK7set9cmHR5zn7nf7Ro+8VqBdk0UTQlU+Z/BCSdYfen/rTX9oVg4MNLJl39AHVz6N5K+mrpnz8Dow== X-Received: by 2002:a05:6a20:3d88:b0:d4:6190:582 with SMTP id s8-20020a056a203d8800b000d461900582mr5990590pzi.34.1678759582113; Mon, 13 Mar 2023 19:06:22 -0700 (PDT) Received: from [192.168.255.10] ([103.7.29.32]) by smtp.gmail.com with ESMTPSA id g9-20020a655949000000b004f1cb6ffe81sm364931pgu.64.2023.03.13.19.06.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Mar 2023 19:06:21 -0700 (PDT) Message-ID: <76665ef8-d6c9-e7f9-2253-d58490e3f681@gmail.com> Date: Tue, 14 Mar 2023 10:06:13 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v4] gcov: Fix "do-while" structure in case statement leads to incorrect code coverage [PR93680] To: Richard Biener Cc: Richard Biener , gcc-patches@gcc.gnu.org, luoxhu@gcc.gnu.org, hubicka@ucw.cz References: <20230302022921.4055291-1-xionghuluo@tencent.com> <00510a56-1fe5-a556-21cf-fa869f70800b@gmail.com> <8011e540-119f-f155-a32c-a3e739a64ac7@gmail.com> <79726845-749b-8e49-6c10-1f7930074ddf@gmail.com> From: Xionghu Luo In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: DQoNCk9uIDIwMjMvMy85IDIwOjAyLCBSaWNoYXJkIEJpZW5lciB3cm90ZToNCj4gT24gV2Vk LCA4IE1hciAyMDIzLCBYaW9uZ2h1IEx1byB3cm90ZToNCj4gDQo+Pg0KPj4NCj4+IE9uIDIw MjMvMy83IDE5OjI1LCBSaWNoYXJkIEJpZW5lciB3cm90ZToNCj4+Pj4+IEl0IHdvdWxkIGJl IG5pY2UgdG8gYXZvaWQgY3JlYXRpbmcgYmxvY2tzIC8gcHJlc2VydmluZyBsYWJlbHMgd2Un bGwNCj4+Pj4+IGltbWVkaWF0ZWx5IHJlbW92ZSBhZ2Fpbi4gIEZvciB0aGF0IHdlIGRvIG5l ZWQgc29tZSBhbmFseXNpcw0KPj4+Pj4gYmVmb3JlIGNyZWF0aW5nIGJhc2ljLWJsb2NrcyB0 aGF0IGRldGVybWluZXMgd2hldGhlciBhIGxhYmVsIGlzDQo+Pj4+PiBwb3NzaWJseSByZWFj aGVkIGJ5IGEgbm9uLWZhbGx0cnUgZWRnZS4NCj4+Pj4+DQo+Pj4+DQo+Pj4+IDxiYiAyPiA6 DQo+Pj4+IHAgPSAwOw0KPj4+PiBzd2l0Y2ggKHMpIDxkZWZhdWx0OiA8RC4yNzU2PiwgY2Fz ZSAwOiA8TDA+LCBjYXNlIDE6IDxELjI3NDQ+Pg0KPj4+Pg0KPj4+PiA8YmIgMz4gOg0KPj4+ PiA8TDA+OiAgICAgICAgICAgPD0gcHJldl9zdG10DQo+Pj4+IDxELjI3NDg+OiAgICAgICA8 PSBzdG10DQo+Pj4+IHAgPSBwICsgMTsNCj4+Pj4gbiA9IG4gKyAtMTsNCj4+Pj4gaWYgKG4g IT0gMCkgZ290byA8RC4yNzQ4PjsgZWxzZSBnb3RvIDxELjI3NDY+Ow0KPj4+Pg0KPj4+PiBD aGVjayBpZiA8TDA+IGlzIGEgY2FzZSBsYWJlbCBhbmQgPEQuMjc0OD4gaXMgYSBnb3RvIHRh cmdldCB0aGVuIHJldHVybg0KPj4+PiB0cnVlDQo+Pj4+IGluIHN0bXRfc3RhcnRzX2JiX3Ag dG8gc3RhcnQgYSBuZXcgYmFzaWMgYmxvY2s/ICBUaGlzIHdvdWxkIGF2b2lkIGNyZWF0aW5n DQo+Pj4+IGFuZA0KPj4+PiByZW1vdmluZyBibG9ja3MsIGJ1dCBjbGVhbnVwX2RlYWRfbGFi ZWxzIGhhcyBhbGwgYmJzIHNldHVwIHdoaWxlDQo+Pj4+IHN0bXRfc3RhcnRzX2JiX3ANCj4+ Pj4gZG9lcyd0IHlldCB0byBpdGVyYXRlIGJicy9sYWJlbHMgdG8gZXN0YWJsaXNoIGxhYmVs X2Zvcl9iYltdIG1hcD8NCj4+DQo+Pj4gWWVzLiAgSSB0aGluayB3ZSdkIG5lZWQgc29tZXRo aW5nIG1vcmUgcHJhZ21hdGljIGJlZm9yZSBtYWtlX2Jsb2NrcyAoKSwNCj4+PiBsaWtlIHJl LWNvbXB1dGluZyBUUkVFX1VTRUQgb2YgdGhlIGxhYmVsIGRlY2xzIG9yIGNvbXB1dGluZyBh IGJpdG1hcA0KPj4+IG9mIHRhcmdldGVkIGxhYmVscyAodGFyZ2V0ZWQgYnkgZ290bywgc3dp dGNoIG9yIGFueSBvdGhlciBtZWFucykuDQo+Pj4NCj4+PiBJJ2xsIG5vdGUgdGhhdCBkb2lu ZyBhIGNsZWFudXBfZGVhZF9sYWJlbHMgKCkgbGlrZSBvcHRpbWl6YXRpb24gYmVmb3JlDQo+ Pj4gd2UgY3JlYXRlIGJsb2NrcyB3aWxsIGhlbHAga2VlcGluZyBMQUJFTF9ERUNMX1VJRCBh bmQgdGh1cw0KPj4+IGxhYmVsX3RvX2Jsb2NrX21hcCBkZW5zZS4gIEJ1dCBpdCBkb2VzIGxv b2sgbGlrZSBhIGJpdCBvZg0KPj4+IGFuIGNoaWNrZW4tYW5kLWVnZyBwcm9ibGVtIGFuZCB0 aGUgcXVlc3Rpb24gaXMgaG93IGVmZmVjdGl2ZSB0aGUNCj4+PiBkZWFkIGxhYmVsIHJlbW92 YWwgaXMgaW4gcHJhY3RpY2UuDQo+Pg0KPj4gVHJpZWQgdG8gYWRkIGZ1bmN0aW9uIGNvbXB1 dGVfdGFyZ2V0X2xhYmVscyhub3Qgc3VyZSB3aGV0aGVyIHRoZSBmdW5jdGlvbg0KPj4gbmFt ZSBpcyBzdWl0YWJsZSkgaW4gdGhlIGZyb250IG9mIG1ha2VfYmxvY2tzXzEsIG5vdyB0aGUg Zm9ydHJhbiBjYXNlIGRvZXNuJ3QNCj4+IGNyZWF0ZS9yZW1vdmluZyBibG9ja3Mgbm93LCBi dXQgSSBzdGlsbCBoYXZlIHNldmVyYWwgcXVlc3Rpb25zOg0KPj4NCj4+ICAgMS4gSSB1c2Vk IGhhc2hfc2V0PHRyZWU+IHRvIHNhdmUgdGhlIHRhcmdldCBsYWJlbHMgaW5zdGVhZCBvZiBi aXRtYXAsIGFzDQo+PiBsYWJlbHMNCj4+IGFyZSB0cmVlIHR5cGUgdmFsdWUgaW5zdGVhZCBv ZiBibG9jayBpbmRleCBzbyBiaXRtYXAgaXMgbm90IGdvb2QgZm9yIGl0IHNpbmNlDQo+PiB3 ZSBkb24ndCBoYXZlIExBQkVMX0RFQ0xfVUlEIG5vdz8NCj4gDQo+IFdlIGRvbid0IGhhdmUg TEFCRUxfREVDTF9VSUQsIHdlIGhhdmUgREVDTF9VSUQgdGhvdWdoLCBidXQgdGhlIGNob2lj ZSBvZg0KPiBoYXNoX3NldDx0cmVlPiB2cy4gYml0bWFwIGlzIHNvbWV3aGF0IGFyYml0cmFy eSBoZXJlLiAgVGhlIHJlYWwgY29zdCBpcw0KPiB0aGUgZXh0cmEgd2FsayBvdmVyIGFsbCBz dG10cy4NCj4gDQo+PiAgIDIuIElzIHRoZSBjb21wdXRlX3RhcmdldF9sYWJlbHMgc3RpbGwg b25seSBmb3IgIW9wdGltaXplPyAgQW5kIGlmIHdlIGNvbXB1dGUNCj4+IHRoZSB0YXJnZXQg bGFiZWxzIGJlZm9yZSBjcmVhdGUgYmJzLCBpdCBpcyB1bm5lc3NhcnkgdG8gZ3VhcmQgdGhl IGZpcnN0DQo+PiBjbGVhbnVwX2RlYWRfbGFiZWxzIHVuZGVyICFvcHRpbWl6ZSBub3csIGJl Y2F1c2UgdGhlIHN3aXRjaC1jYXNlLWRvLXdoaWxlDQo+PiBjYXNlIGFscmVhZHkgY3JlYXRl IG5ldyBibG9jayBmb3IgQ0FTRV9MQUJFTCBhbHJlYWR5Lg0KPiANCj4gT0suDQo+IA0KPj4g ICAzLiBJIG9ubHkgYWRkZWQgR0lNUExFX1NXSVRDSC9HSU1QTEVfQ09ORCBpbiBjb21wdXRl X3RhcmdldF9sYWJlbHMNCj4+IHNvIGZhciwgaXMgaXQgbmVlZGVkIHRvIGFsc28gaGFuZGxl IEdJTVBMRV9BU00vR0lNUExFX1RSQU5TQUNUSU9OIGFuZCBldmVuDQo+PiBsYWJlbHNfZWg/ DQo+IA0KPiBJJ2QgYWRkIEdJTVBMRV9BU00gaGFuZGxpbmcsIHRoZSByZXN0IHNob3VsZCBi ZSBPSyB3cnQgZGVidWdnaW5nIGFuZA0KPiBjb3ZlcmFnZSBhbHJlYWR5Pw0KDQpBZGRlZCBp biBwYXRjaCB2NC4NCg0KPiANCj4+IFBTMTogVGhlIHYzIHBhdGNoIHdpbGwgY2F1c2Ugb25l IHRlc3QgY2FzZSBmYWlsOg0KPj4NCj4+IE51bWJlciBvZiByZWdyZXNzaW9ucyBpbiB0b3Rh bDogMQ0KPj4+IEZBSUw6IGdjYy5jLXRvcnR1cmUvY29tcGlsZS9saW1pdHMtY2FzZWxhYmVs cy5jICAgLU8wICAodGVzdCBmb3IgZXhjZXNzDQo+Pj4gZXJyb3JzKQ0KPj4NCj4+IGR1ZSB0 byB0aGlzIGV4YXVzdGluZyBjYXNlIGhhcyBsYWJlbHMgZnJvbSBMMCB0byBMMTAwMDAxLCB0 aGV5IHdvbid0IGJlDQo+PiBvcHRpbWl6ZWQNCj4+IHRvIGEgc2ltcGxlIGlmLWVsc2UgZXhw cmVzc2lvbiBsaWtlIGJlZm9yZS4uLg0KPiANCj4gSG1tLCB0aGF0J3Mgc29tZXdoYXQgdW5l eHBlY3RlZC4NCg0KSXQgY291bGQgYmUgZml4ZWQgYnkgbm90IHN0YXJ0IGEgbmV3IGJsb2Nr IGlmIHR3byBsb2N1cyBhcmUgb24gc2FtZSBsaW5lIGFzIHRoZQ0KbGFiZWxzIGFyZSBleHBh bmRlZCBieSBNQUNSTyB3aXRoIHNhbWUgbG9jYXRpb24gaW5mby4gIEJUVywgSSBmb3VuZCB0 aGF0IHR3bw0KVU5LT1dOX0xPQ0FUSU9OIHZhcmlhYmxlIG1heSBoYXZlIGRpZmZlcmVudCB2 YWx1ZSBidXQgcmV0dXJuIHRydWUgaW4gc2FtZV9saW5lX3A/DQoNCjI6IGxvY3VzMSA9IDIx NDc0ODM2NzANCjM6IGxvY3VzMiA9IDIxNDc0ODM2NTINCihnZGIpIHBlbCBsb2N1czENCntm aWxlID0gMHgwLCBsaW5lID0gMCwgY29sdW1uID0gMCwgZGF0YSA9IDB4N2ZmZmY2YmRjMzAw LCBzeXNwID0gZmFsc2V9DQooZ2RiKSBwZWwgbG9jdXMyDQp7ZmlsZSA9IDB4MCwgbGluZSA9 IDAsIGNvbHVtbiA9IDAsIGRhdGEgPSAweDdmZmZmNmJkYzRlMCwgc3lzcCA9IGZhbHNlfQ0K KGdkYikgcCBMT0NBVElPTl9MT0NVUyAobG9jdXMxKQ0KJDE2ID0gMA0KKGdkYikgcCBMT0NB VElPTl9MT0NVUyAobG9jdXMyKQ0KJDE3ID0gMA0KDQpTbyBmaXggdGhlIGZ1bmN0aW9uIGxp a2UgdGhpcz8NCg0KQEAgLTExNTIsNiArMTIxOCwxMCBAQCBzYW1lX2xpbmVfcCAobG9jYXRp b25fdCBsb2N1czEsIGV4cGFuZGVkX2xvY2F0aW9uICpmcm9tLCBsb2NhdGlvbl90IGxvY3Vz MikNCiAgew0KICAgIGV4cGFuZGVkX2xvY2F0aW9uIHRvOw0KDQorICBpZiAoTE9DQVRJT05f TE9DVVMgKGxvY3VzMSkgPT0gVU5LTk9XTl9MT0NBVElPTg0KKyAgICAgICYmIExPQ0FUSU9O X0xPQ1VTIChsb2N1czIpID09IFVOS05PV05fTE9DQVRJT04pDQorICAgIHJldHVybiBmYWxz ZTsNCisNCiAgICBpZiAobG9jdXMxID09IGxvY3VzMikNCiAgICAgIHJldHVybiB0cnVlOw0K DQo+IA0KPj4NCj4+IFBTMjogVGhlIEdJTVBMRV9HT1RPIHBpZWNlIG9mIGNvZGUgd291bGQg Y2F1c2Ugc29tZSBmb3J0cmFuIGNhc2VzIHJ1biBmYWlsIGR1ZQ0KPj4gdG8gX19idWlsdGlu X3VucmVhY2hhYmxlIHRyYXAgZ2VuZXJhdGVkIGluIC5maXh1cF9jZmcxLCBJIGRpZG4ndCBk aWcgaW50byBpdA0KPj4gc28NCj4+IGp1c3Qgc2tpcCB0aGVzZSBsYWJlbC4uLg0KPiANCj4g UGxlYXNlIGludmVzdGlnYXRlLCB3ZSBtaWdodCBiZSBtaXNzaW5nIGEgY29ybmVyIGNhc2Ug aGVyZS4NCg0KWWVzLiAgVGFrZSB0aGUgY2FzZSBwb2ludGVyX2FycmF5XzEuZjkwIGFzIGV4 YW1wbGUsIGl0IGhhcyBhbiBVTlVTRUQgbGFiZWwgIkwuNyINCndpdGggbG9jdXMgaW5mbyBp biBpdCwgbm90IHN1cmUgd2h5IGl0IGV4aXN0cyBldmVuIHNpbmNlIC5vcmlnaW5hbC4NCg0K DQogICBbcG9pbnRlcl9hcnJheV8xLmY5MDozOToxMF0gaWYgKHRlc3QuMTQgIT0gMCkgZ290 byA8RC40NTk5PjsgZWxzDQplIGdvdG8gPEQuNDYwMD47DQogICA8RC40NTk5PjoNCiAgIFtw b2ludGVyX2FycmF5XzEuZjkwOjM5OjUyXSBfZ2ZvcnRyYW5fc3RvcF9udW1lcmljICgzLCAw KTsNCiAgIDxELjQ2MDA+Og0KICAgcGFybS4xNiA9IHtDTE9CQkVSKGVvbCl9Ow0KICAgW3Bv aW50ZXJfYXJyYXlfMS5mOTA6Mzk6NTJdIEwuNzogICAgICAgICA8PSBVTlVTRUQgbGFiZWwN CiAgIDxELjQ1OTQ+Og0KICAgW3BvaW50ZXJfYXJyYXlfMS5mOTA6Mzk6NTJdIEwuMzoNCiAg IGF0bXAuMCA9IHtDTE9CQkVSKGVvbCl9Ow0KICAgQS4xID0ge0NMT0JCRVIoZW9sKX07DQog ICBhdG1wLjUgPSB7Q0xPQkJFUihlb2wpfTsNCiAgIEEuNiA9IHtDTE9CQkVSKGVvbCl9Ow0K ICAgZCA9IHtDTE9CQkVSKGVvbCl9Ow0KICAgW3BvaW50ZXJfYXJyYXlfMS5mOTA6NDE6MTRd IHJldHVybjsNCg0Kc3RtdF9zdGFydHNfYmJfcCB3aWxsIHJldHVybiB0cnVlIGZvciBMLjcg YXMgdGhlIHByZXZfc3RtdCAicGFybS4xNiA9IHtDTE9CQkVSKGVvbCl9OyINCmlzIG5vdCBh IGxhYmVsIHN0YXRlbWVudCwgdGhlbiA8RC40NTk0PiB3aWxsIGFsc28gcmV0dXJuIHRydWUg aW4gc3RtdF9zdGFydHNfYmJfcCBhcw0KdGhlIGxhYmVsX3N0bXQgYW5kIHByZXZfc3RtdCBh cmUgTk9UIG9uIHNhbWUgbGluZS4NCg0KPGJiIDM4PiA6DQpMLjk6DQpMLjg6DQppZiAodGVz dC4xNCAhPSAwKSBnb3RvIDxMMzk+OyBlbHNlIGdvdG8gPEw0MD47DQoNCjxiYiAzOT4gOg0K PEwzOT46DQpfZ2ZvcnRyYW5fc3RvcF9udW1lcmljICgzLCAwKTsNCg0KPGJiIDQwPiA6DQo8 TDQwPjoNCnBhcm0uMTYgPSB7Q0xPQkJFUihlb2wpfTsNCg0KPGJiIDQxPiA6ICAgICAgICAg ICA8PSBlbXB0eSBibG9jaw0KTC43Og0KDQo8YmIgNDI+IDoNCjxMNDI+Og0KTC4zOg0KYXRt cC4wID0ge0NMT0JCRVIoZW9sKX07DQpBLjEgPSB7Q0xPQkJFUihlb2wpfTsNCmF0bXAuNSA9 IHtDTE9CQkVSKGVvbCl9Ow0KQS42ID0ge0NMT0JCRVIoZW9sKX07DQpkID0ge0NMT0JCRVIo ZW9sKX07DQpyZXR1cm47DQoNCg0KU28gSSBoYXZlIHRvIGZpeCBpdCB3aXRoIHRoaXM6IFJl dHVybiBmYWxzZSB0byBub3Qgc3RhcnQgYSBuZXcgYmxvY2sgd2hlbiBwcmV2X3N0bXQNCmlz IG5vdCBhIGxhYmVsX3N0YXRlbWVudCBhbmQgdGFyZ2V0X2xhYmVscyBub3QgY29udGFpbmlu ZyB0aGUgY3VycmVudCBsYWJlbDoNCg0Kc3RhdGljIGlubGluZSBib29sIHN0bXRfc3RhcnRz X2JiX3AoZ2ltcGxlICpzdG10LCBnaW1wbGUgKnByZXZfc3RtdCwgaGFzaF9zZXQ8dHJlZT4g KnRhcmdldF9sYWJlbHMpDQp7DQouLi4NCiAgICAgICAgaWYgKGdsYWJlbCAqcGxhYmVsID0g c2FmZV9keW5fY2FzdCA8Z2xhYmVsICo+IChwcmV2X3N0bXQpKQ0KICAgICAgICAgew0KICAg ICAgICAgICAuLi4NCiAgICAgICAgICAgY2ZnX3N0YXRzLm51bV9tZXJnZWRfbGFiZWxzKys7 DQogICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgIH0NCisgICAgICBlbHNlIGlm ICghb3B0aW1pemUNCisgICAgICAgICAgICAgICYmICF0YXJnZXRfbGFiZWxzLT5jb250YWlu cyAoZ2ltcGxlX2xhYmVsX2xhYmVsIChsYWJlbF9zdG10KSkpICA8PSBGaXggZ2ZvcnRyYW4u ZGcgZmFpbHVyZQ0KKyAgICAgICAgICAgICAgJiYgc3RtdC0+bmV4dCAmJiBnaW1wbGVfY29k ZSAoc3RtdC0+bmV4dCkgPT0gR0lNUExFX0xBQkVMKSAgICAgIDw9IEZpeCBib290c3RyYXAg ZmFpbHVyZSBvZiBvcGVuYWNjLmY5MA0KKyAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg IGVsc2UNCiAgICAgICAgIHJldHVybiB0cnVlOw0KLi4uDQp9DQoNClRob3VnaCB0aGlzIGZp eCB3b3VsZCBjYXVzZWQgc3RhZ2UzIGJvb3RzdHJhcCBmYWlsdXJlIHF1aXRlIGxpa2UgdGhl IGZvcnRyYW4gZmFsdXJlOjoNCg0KL2RhdGEvc3JjL2djYy9saWJnb21wL29wZW5hY2MuZjkw OjEwNTg6MzY6DQoNCiAgMTA1OCB8IHN1YnJvdXRpbmUgYWNjX2dldF9wcm9wZXJ0eV9zdHJp bmdfaCAoZGV2aWNlbnVtLCBkZXZpY2V0eXBlLCBwcm9wZXJ0eSwgc3RyaW5nKQ0KICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeDQpFcnJvcjogbGFiZWwg 4oCYTC4z4oCZIGluIHRoZSBtaWRkbGUgb2YgYmFzaWMgYmxvY2sgMTMNCg0KDQo8YmIgMTI+ IDoNCkQuNDM3NyA9IGkgPiBELjQzNzQ7DQppZiAoRC40Mzc3ICE9IDApDQogICBnb3RvIDxi YiAxND47IFtJTlZdDQplbHNlDQogICBnb3RvIDxiYiAxMz47IFtJTlZdDQoNCjxiYiAxMz4g Og0KXzEwID0gc3B0ci5kYXRhOw0KXzExID0gc3B0ci5vZmZzZXQ7DQpfMTIgPSBpICsgXzEx Ow0KXzEzID0gc3B0ci5zcGFuOw0KXzE0ID0gXzEyICogXzEzOw0KXzE1ID0gKHNpemV0eXBl KSBfMTQ7DQpfMTYgPSBfMTAgKyBfMTU7DQpfMTcgPSBNRU1bKGNoYXJhY3RlcihraW5kPTEp ICopXzE2XTsNCigqc3RyaW5nKVtpXXtsYjogMSBzejogMX0gPSBfMTc7DQpMLjM6ICAgICAg ICAgICAgICAgICAgPD0gVU5VU0VEIGxhYmVsLg0KaSA9IGkgKyAxOw0KZ290byA8YmIgMTI+ OyBbSU5WXQ0KDQo8YmIgMTQ+IDoNCnNwdHIgPSB7Q0xPQkJFUihlb2wpfTsNCg0KPGJiIDE1 PiA6DQo8TDE4PjoNCnJldHVybjsNCg0KPGJiIDE+IDoNCg0KPiANCj4+DQo+PiArICAgICAg IGNhc2UgR0lNUExFX0dPVE86DQo+PiArI2lmIDANCj4+ICsgICAgICAgICBpZiAoIWNvbXB1 dGVkX2dvdG9fcCAoc3RtdCkpDQo+PiArICAgICAgICAgICB7DQo+PiArICAgICAgICAgICAg IHRyZWUgZGVzdCA9IGdpbXBsZV9nb3RvX2Rlc3QgKHN0bXQpOw0KPj4gKyAgICAgICAgICAg ICB0YXJnZXRfbGFiZWxzLT5hZGQgKGRlc3QpOw0KPj4gKyAgICAgICAgICAgfQ0KPj4gKyNl bmRpZg0KPj4gKyAgICAgICAgIGJyZWFrOw0KPj4NCj4+IENoYW5nZSB0aGUgI2lmIDAgdG8g I2lmIDEgcmVzdWx0IGluOg0KPj4NCj4+IE51bWJlciBvZiByZWdyZXNzaW9ucyBpbiB0b3Rh bDogOA0KPj4+IEZBSUw6IGdjYy5jLXRvcnR1cmUvY29tcGlsZS9saW1pdHMtY2FzZWxhYmVs cy5jICAgLU8wICAodGVzdCBmb3IgZXhjZXNzDQo+Pj4gRkFJTDogZXJyb3JzKQ0KPj4+IEZB SUw6IGdjYy5kZy9hbmFseXplci9leHBsb2RlLTJhLmMgKHRlc3QgZm9yIGV4Y2VzcyBlcnJv cnMpDQo+Pj4gRkFJTDogZ2NjLmRnL2FuYWx5emVyL3ByYWdtYS0yLmMgKHRlc3QgZm9yIGV4 Y2VzcyBlcnJvcnMpDQo+Pj4gRkFJTDogZ2ZvcnRyYW4uZGcvYm91bmRfMi5mOTAgICAtTzAg IGV4ZWN1dGlvbiB0ZXN0DQo+Pj4gRkFJTDogZ2ZvcnRyYW4uZGcvYm91bmRfNy5mOTAgICAt TzAgIGV4ZWN1dGlvbiB0ZXN0DQo+Pj4gRkFJTDogZ2ZvcnRyYW4uZGcvY2hhcl9yZXN1bHRf MTQuZjkwICAgLU8wICBleGVjdXRpb24gdGVzdA0KPj4+IEZBSUw6IGdmb3J0cmFuLmRnL3Bv aW50ZXJfYXJyYXlfMS5mOTAgICAtTzAgIGV4ZWN1dGlvbiB0ZXN0DQo+Pj4gRkFJTDogZ2Zv cnRyYW4uZGcvc2VsZWN0X3R5cGVfMTUuZjAzICAgLU8wICBleGVjdXRpb24gdGVzdA0KPj4N Cj4+DQo+Pg0KPj4gUGFzdGUgdGhlIHVwZGF0ZWQgcGF0Y2ggdjM6DQo+IA0KPiBUaGUgZ2Nv diB0ZXN0Y2FzZSBhZGp1c3RtZW50cyBsb29rIGdvb2QsIGRvZXMgdGhlIGFuYWx5emVyIHRl c3RjYXNlDQo+IChtaXNzaW5nIGluIHRoZSBjaGFuZ2Vsb2cpIGdldCBkaWZmZXJlbnQgQ0ZH IGlucHV0Pw0KPiANCg0KWWVzLCBpdCB3YXMgZGlmZmVyZW50LiAgQnV0IHRoZSBhbmFseXpl ciBjYXNlIHJlY292ZXJlZCB3aXRoIHRoZSBzYW1lX2xpbmVfcCBjaGVjay4NCg0KDQpPbmUg dGhpbmcgdG8gbm90ZSBpcyB0aGF0IGdpbXBsZV9zZXRfYmIgd291bGQgcmVmcmVzaCBMYWJl bCB1aWQgaW4gaXQsDQpzbyB0YXJnZXRfbGFiZWxzIG5lZWQgYWxzbyB1cGRhdGUgYWZ0ZXIg aXQgdG8gZm9sbG93IHRoYXQgY2hhbmdlPw0KDQoNCkBAIC01NjYsNiArNjMyLDkgQEAgbWFr ZV9ibG9ja3NfMSAoZ2ltcGxlX3NlcSBzZXEsIGJhc2ljX2Jsb2NrIGJiKQ0KICAgICAgICAg IGNvZGVzLiAgKi8NCiAgICAgICAgZ2ltcGxlX3NldF9iYiAoc3RtdCwgYmIpOw0KDQorICAg ICAgaWYgKCFvcHRpbWl6ZSAmJiBnaW1wbGVfY29kZSAoc3RtdCkgPT0gR0lNUExFX0xBQkVM KQ0KKyAgICAgICB0YXJnZXRfbGFiZWxzLmFkZCAoZ2ltcGxlX2xhYmVsX2xhYmVsIChhc19h PGdsYWJlbCAqPiAoc3RtdCkpKTsNCg0KDQpBbm90aGVyIHRoaW5nIGlzIHRoZSB2NCBwYXRj aCB3aWxsIGNhdXNlZCBzdHJhbmdlIGZhaWx1cmVzIG9uIGxpYmdvbXAuZm9ydHJhbiB0ZXN0 c3VpdGVzLg0KSXQgb25seSBoYXBwZW5zIHdoZW4gcnVubmluZyAibWFrZSBjaGVjayIgYnV0 IGRvZXNuJ3QgZmFpbCBvbiBzaW5nbGUgcnVuLCBhbmQgbW9yZSBzdHJhbmdlbHksDQp0aGUg UlVOVEVTVEZMQUdTIGRvZXNuJ3Qgd29yayB3aGVuIHJ1bm5pbmcsIGl0IHJ1bnMgYWxsIGNh c2VzIHVuZGVyIGxpYmdvbXAuZm9ydHJhbiBpbnN0ZWFkDQpvZiB2bGExLmY5MCwgd2hpY2gg bWFrZXMgaXQgZGlmZmljdWx0IHRvIGFuYWx5emUgdGhlIGZhaWx1cmVzLi4uDQoNCm1ha2Ug Y2hlY2stZm9ydHJhbiBSVU5URVNURkxBR1M9ImZvcnRyYW4uZXhwPXZsYTEuZjkwIC12IC12 IiAtajgNCg0Kc2luZ2xlIHJ1biBzdWNjZXNzOg0KL2RhdGEvLi9nY2MveGdjYyAtQi9kYXRh Ly4vZ2NjLyAtQi9kYXRhL2luc3RhbGwveDg2XzY0LWxpbnV4LWdudS9iaW4vIC1CL2RhdGEv aW5zdGFsbC94ODZfNjQtbGludXgtZ251L2xpYi8gLWlzeXN0ZW0gL2RhdGEvaW5zdGFsbC94 ODZfNjQtbGludXgtZ251L2luY2x1ZGUgLWlzeXN0ZW0gL2RhdGEvaW5zdGFsbC94ODZfNjQt bGludXgtZ251L3N5cy1pbmNsdWRlICAgIC9kYXRhL1JvY2tzREJfRG9ja2VyL3RnY2MtbWFz dGVyL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi92bGExLmY5MCAgIC1CL2Rh dGEvUm9ja3NEQl9Eb2NrZXIvZGVidWdfbWFzdGVyL3g4Nl82NC1saW51eC1nbnUvLi9saWJn b21wLyAtQi9kYXRhL3g4Nl82NC1saW51eC1nbnUvLi9saWJnb21wLy5saWJzIC1JL2RhdGEv eDg2XzY0LWxpbnV4LWdudS8uL2xpYmdvbXAgLUkvZGF0YS9Sb2Nrc0RCX0RvY2tlci90Z2Nj LW1hc3Rlci9saWJnb21wL3Rlc3RzdWl0ZS8uLi8uLi9pbmNsdWRlIC1JL2RhdGEvUm9ja3NE Ql9Eb2NrZXIvdGdjYy1tYXN0ZXIvbGliZ29tcC90ZXN0c3VpdGUvLi4gLWZtZXNzYWdlLWxl bmd0aD0wIC1mbm8tZGlhZ25vc3RpY3Mtc2hvdy1jYXJldCAtZmRpYWdub3N0aWNzLWNvbG9y PW5ldmVyIC1mb3Blbm1wIC1CL2RhdGEveDg2XzY0LWxpbnV4LWdudS8uL2xpYmdvbXAvLi4v bGlicXVhZG1hdGgvLmxpYnMvICAgLU8wICAgLUIvZGF0YS94ODZfNjQtbGludXgtZ251Ly4v bGliZ29tcC8uLi9saWJnZm9ydHJhbi8ubGlicyAtZmludHJpbnNpYy1tb2R1bGVzLXBhdGg9 L2RhdGEveDg2XzY0LWxpbnV4LWdudS8uL2xpYmdvbXAgICAtTC9kYXRhL3g4Nl82NC1saW51 eC1nbnUvLi9saWJnb21wLy5saWJzIC1ML2RhdGEveDg2XzY0LWxpbnV4LWdudS8uL2xpYmdv bXAvLi4vbGlicXVhZG1hdGgvLmxpYnMvIC1ML2RhdGEveDg2XzY0LWxpbnV4LWdudS8uL2xp YmdvbXAvLi4vbGliZ2ZvcnRyYW4vLmxpYnMgLWxnZm9ydHJhbiAtZm9mZmxvYWQ9LWxnZm9y dHJhbiAtbHF1YWRtYXRoIC1sbSAgLW8gLi92bGExLmV4ZQ0KDQpGQUlMOiBsaWJnb21wLmZv cnRyYW4vYXBwZW5kaXgtYS9hLjQuMS5mOTAgICAtTzAgICh0ZXN0IGZvciBleGNlc3MgZXJy b3JzKQ0KRkFJTDogbGliZ29tcC5mb3J0cmFuL2NvbGxhcHNlMi5mOTAgICAtTzAgICh0ZXN0 IGZvciBleGNlc3MgZXJyb3JzKQ0KRkFJTDogbGliZ29tcC5mb3J0cmFuL3Rhc2syLmY5MCAg IC1PMCAgKHRlc3QgZm9yIGV4Y2VzcyBlcnJvcnMpDQpGQUlMOiBsaWJnb21wLmZvcnRyYW4v dWRyMTMuZjkwICAgLU8wICAodGVzdCBmb3IgZXhjZXNzIGVycm9ycykNCkZBSUw6IGxpYmdv bXAuZm9ydHJhbi91ZHIzLmY5MCAgIC1PMCAgKHRlc3QgZm9yIGV4Y2VzcyBlcnJvcnMpDQpG QUlMOiBsaWJnb21wLmZvcnRyYW4vdWRyNC5mOTAgICAtTzAgICh0ZXN0IGZvciBleGNlc3Mg ZXJyb3JzKQ0KRkFJTDogbGliZ29tcC5mb3J0cmFuL3ZsYTEuZjkwICAgLU8wICAodGVzdCBm b3IgZXhjZXNzIGVycm9ycykNCkZBSUw6IGxpYmdvbXAuZm9ydHJhbi92bGEyLmY5MCAgIC1P MCAgKHRlc3QgZm9yIGV4Y2VzcyBlcnJvcnMpDQpGQUlMOiBsaWJnb21wLmZvcnRyYW4vdmxh My5mOTAgICAtTzAgICh0ZXN0IGZvciBleGNlc3MgZXJyb3JzKQ0KRkFJTDogbGliZ29tcC5m b3J0cmFuL3ZsYTQuZjkwICAgLU8wICAodGVzdCBmb3IgZXhjZXNzIGVycm9ycykNCkZBSUw6 IGxpYmdvbXAuZm9ydHJhbi92bGE1LmY5MCAgIC1PMCAgKHRlc3QgZm9yIGV4Y2VzcyBlcnJv cnMpDQpGQUlMOiBsaWJnb21wLmZvcnRyYW4vdmxhNi5mOTAgICAtTzAgICh0ZXN0IGZvciBl eGNlc3MgZXJyb3JzKQ0KRkFJTDogbGliZ29tcC5mb3J0cmFuL3ZsYTguZjkwICAgLU8wICAo dGVzdCBmb3IgZXhjZXNzIGVycm9ycykNCkZBSUw6IGxpYmdvbXAub2FjYy1mb3J0cmFuL2Nv bGxhcHNlLTIuZjkwIC1EQUNDX0RFVklDRV9UWVBFX2hvc3Q9MSAtREFDQ19NRU1fU0hBUkVE PTEgLWZvZmZsb2FkPWRpc2FibGUgIC1PMCAgKHRlc3QgZm9yIGV4Y2VzcyBlcnJvcnMpDQpG QUlMOiBsaWJnb21wLm9hY2MtZm9ydHJhbi9uZXN0ZWQtZnVuY3Rpb24tMS5mOTAgLURBQ0Nf REVWSUNFX1RZUEVfaG9zdD0xIC1EQUNDX01FTV9TSEFSRUQ9MSAtZm9mZmxvYWQ9ZGlzYWJs ZSAgLU8wICAodGVzdCBmb3IgZXhjZXNzIGVycm9ycykNClVOUkVTT0xWRUQ6IGxpYmdvbXAu Zm9ydHJhbi9hcHBlbmRpeC1hL2EuNC4xLmY5MCAgIC1PMCAgY29tcGlsYXRpb24gZmFpbGVk IHRvIHByb2R1Y2UgZXhlY3V0YWJsZQ0KVU5SRVNPTFZFRDogbGliZ29tcC5mb3J0cmFuL2Nv bGxhcHNlMi5mOTAgICAtTzAgIGNvbXBpbGF0aW9uIGZhaWxlZCB0byBwcm9kdWNlIGV4ZWN1 dGFibGUNClVOUkVTT0xWRUQ6IGxpYmdvbXAuZm9ydHJhbi90YXNrMi5mOTAgICAtTzAgIGNv bXBpbGF0aW9uIGZhaWxlZCB0byBwcm9kdWNlIGV4ZWN1dGFibGUNClVOUkVTT0xWRUQ6IGxp YmdvbXAuZm9ydHJhbi91ZHIxMy5mOTAgICAtTzAgIGNvbXBpbGF0aW9uIGZhaWxlZCB0byBw cm9kdWNlIGV4ZWN1dGFibGUNClVOUkVTT0xWRUQ6IGxpYmdvbXAuZm9ydHJhbi91ZHIzLmY5 MCAgIC1PMCAgY29tcGlsYXRpb24gZmFpbGVkIHRvIHByb2R1Y2UgZXhlY3V0YWJsZQ0KVU5S RVNPTFZFRDogbGliZ29tcC5mb3J0cmFuL3VkcjQuZjkwICAgLU8wICBjb21waWxhdGlvbiBm YWlsZWQgdG8gcHJvZHVjZSBleGVjdXRhYmxlDQpVTlJFU09MVkVEOiBsaWJnb21wLmZvcnRy YW4vdmxhMS5mOTAgICAtTzAgIGNvbXBpbGF0aW9uIGZhaWxlZCB0byBwcm9kdWNlIGV4ZWN1 dGFibGUNClVOUkVTT0xWRUQ6IGxpYmdvbXAuZm9ydHJhbi92bGEyLmY5MCAgIC1PMCAgY29t cGlsYXRpb24gZmFpbGVkIHRvIHByb2R1Y2UgZXhlY3V0YWJsZQ0KVU5SRVNPTFZFRDogbGli Z29tcC5mb3J0cmFuL3ZsYTMuZjkwICAgLU8wICBjb21waWxhdGlvbiBmYWlsZWQgdG8gcHJv ZHVjZSBleGVjdXRhYmxlDQpVTlJFU09MVkVEOiBsaWJnb21wLmZvcnRyYW4vdmxhNC5mOTAg ICAtTzAgIGNvbXBpbGF0aW9uIGZhaWxlZCB0byBwcm9kdWNlIGV4ZWN1dGFibGUNClVOUkVT T0xWRUQ6IGxpYmdvbXAuZm9ydHJhbi92bGE1LmY5MCAgIC1PMCAgY29tcGlsYXRpb24gZmFp bGVkIHRvIHByb2R1Y2UgZXhlY3V0YWJsZQ0KVU5SRVNPTFZFRDogbGliZ29tcC5mb3J0cmFu L3ZsYTYuZjkwICAgLU8wICBjb21waWxhdGlvbiBmYWlsZWQgdG8gcHJvZHVjZSBleGVjdXRh YmxlDQpVTlJFU09MVkVEOiBsaWJnb21wLmZvcnRyYW4vdmxhOC5mOTAgICAtTzAgIGNvbXBp bGF0aW9uIGZhaWxlZCB0byBwcm9kdWNlIGV4ZWN1dGFibGUNClVOUkVTT0xWRUQ6IGxpYmdv bXAub2FjYy1mb3J0cmFuL2NvbGxhcHNlLTIuZjkwIC1EQUNDX0RFVklDRV9UWVBFX2hvc3Q9 MSAtREFDQ19NRU1fU0hBUkVEPTEgLWZvZmZsb2FkPWRpc2FibGUgIC1PMCAgY29tcGlsYXRp b24gZmFpbGVkIHRvIHByb2R1Y2UNCiAgZXhlY3V0YWJsZQ0KVU5SRVNPTFZFRDogbGliZ29t cC5vYWNjLWZvcnRyYW4vbmVzdGVkLWZ1bmN0aW9uLTEuZjkwIC1EQUNDX0RFVklDRV9UWVBF X2hvc3Q9MSAtREFDQ19NRU1fU0hBUkVEPTEgLWZvZmZsb2FkPWRpc2FibGUgIC1PMCAgY29t cGlsYXRpb24gZmFpbGVkIHRvDQpwcm9kdWNlIGV4ZWN1dGFibGUNCg0KDQp2NDogQWRkcmVz cyBjb21tZW50cy4NCiAgNC4xLiBIYW5kbGUgR0lNUExFX0dPVE8gYW5kIEdJTVBMRV9BU00u DQogIDQuMi4gRml4IGZhaWx1cmUgb2YgbGltaXQtY2FzZWxhYmVscy5jIChsYWJlbHMgb24g c2FtZSBsaW5lKSwNCiAgcG9pbnRlcl9hcnJheV8xLmY5MCAodW51c2VkIGxhYmVscykgZXRj Lg0KDQp2MzogQWRkIGNvbXB1dGVfdGFyZ2V0X2xhYmVscyBhbmQgY2FsbCBpdCBpbiB0aGUg ZnJvbnQgb2YgbWFrZV9ibG9ja3NfMS4NCnYyOiBDaGVjayB3aGV0aGVyIHR3byBsb2N1cyBh cmUgb24gc2FtZSBsaW5lLg0KDQpTdGFydCBhIG5ldyBiYXNpYyBibG9jayBpZiB0d28gbGFi ZWxzIGhhdmUgZGlmZmVyZW50IGxvY2F0aW9uIHdoZW4NCnRlc3QtY292ZXJhZ2UuDQoNClJl Z3Jlc3Npb24gdGVzdGVkIHBhc3Mgb24geDg2XzY0LWxpbnV4LWdudSBhbmQgYWFyY2g2NC1s aW51eC1nbnUsIE9LIGZvcg0KbWFzdGVyPw0KDQpnY2MvQ2hhbmdlTG9nOg0KDQoJUFIgZ2Nv di85MzY4MA0KCSogdHJlZS1jZmcuY2MgKHN0bXRfc3RhcnRzX2JiX3ApOiBDaGVjayB3aGV0 aGVyIHRoZSBsYWJlbCBpcyBpbg0KCXRhcmdldF9sYWJlbHMuDQoJKGNvbXB1dGVfdGFyZ2V0 X2xhYmVscyk6IE5ldyBmdW5jdGlvbi4NCgkobWFrZV9ibG9ja3NfMSk6IENhbGwgY29tcHV0 ZV90YXJnZXRfbGFiZWxzLg0KCShzYW1lX2xpbmVfcCk6IFJldHVybiBmYWxzZSBpZiB0d28g bG9jdXMgYXJlIGJvdGgNCglVTktPV05fTE9DQVRJT04uDQoNCmdjYy90ZXN0c3VpdGUvQ2hh bmdlTG9nOg0KDQoJUFIgZ2Nvdi85MzY4MA0KCSogZysrLmRnL2djb3YvZ2Nvdi0xLkM6IENv cnJlY3QgY291bnRzLg0KCSogZ2NjLm1pc2MtdGVzdHMvZ2Nvdi00LmM6IExpa2V3aXNlLg0K CSogZ2NjLm1pc2MtdGVzdHMvZ2Nvdi1wcjg1MzMyLmM6IExpa2V3aXNlLg0KCSogbGliL2dj b3YuZXhwOiBBbHNvIGNsZWFuIGdjZGEgaWYgZmFpbC4NCgkqIGdjYy5taXNjLXRlc3RzL2dj b3YtcHI5MzY4MC5jOiBOZXcgdGVzdC4NCg0KU2lnbmVkLW9mZi1ieTogWGlvbmdodSBMdW8g PHhpb25naHVsdW9AdGVuY2VudC5jb20+DQotLS0NCiAgZ2NjL3RyZWUtY2ZnLmNjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDkxICsrKysrKysrKysrKysrKysrKysrLQ0KICBn Y2MvdGVzdHN1aXRlL2crKy5kZy9nY292L2djb3YtMS5DICAgICAgICAgIHwgIDIgKy0NCiAg Z2NjL3Rlc3RzdWl0ZS9nY2MubWlzYy10ZXN0cy9nY292LTQuYyAgICAgICB8ICAyICstDQog IGdjYy90ZXN0c3VpdGUvZ2NjLm1pc2MtdGVzdHMvZ2Nvdi1wcjg1MzMyLmMgfCAgMiArLQ0K ICBnY2MvdGVzdHN1aXRlL2djYy5taXNjLXRlc3RzL2djb3YtcHI5MzY4MC5jIHwgMjQgKysr KysrDQogIGdjYy90ZXN0c3VpdGUvbGliL2djb3YuZXhwICAgICAgICAgICAgICAgICAgfCAg NCArLQ0KICA2IGZpbGVzIGNoYW5nZWQsIDExNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9u cygtKQ0KICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MubWlzYy10ZXN0 cy9nY292LXByOTM2ODAuYw0KDQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY2ZnLmNjIGIvZ2Nj L3RyZWUtY2ZnLmNjDQppbmRleCBhOWZjYzdmZDA1MC4uZDdjZTEyMTcxM2UgMTAwNjQ0DQot LS0gYS9nY2MvdHJlZS1jZmcuY2MNCisrKyBiL2djYy90cmVlLWNmZy5jYw0KQEAgLTE2NCw3 ICsxNjQsNyBAQCBzdGF0aWMgZWRnZSBnaW1wbGVfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNo IChlZGdlLCBiYXNpY19ibG9jayk7DQogIHN0YXRpYyBlZGdlIGdpbXBsZV90cnlfcmVkaXJl Y3RfYnlfcmVwbGFjaW5nX2p1bXAgKGVkZ2UsIGJhc2ljX2Jsb2NrKTsNCiAgDQogIC8qIFZh cmlvdXMgaGVscGVycy4gICovDQotc3RhdGljIGlubGluZSBib29sIHN0bXRfc3RhcnRzX2Ji X3AgKGdpbXBsZSAqLCBnaW1wbGUgKik7DQorc3RhdGljIGlubGluZSBib29sIHN0bXRfc3Rh cnRzX2JiX3AgKGdpbXBsZSAqLCBnaW1wbGUgKiwgaGFzaF9zZXQ8dHJlZT4gKik7DQogIHN0 YXRpYyBpbnQgZ2ltcGxlX3ZlcmlmeV9mbG93X2luZm8gKHZvaWQpOw0KICBzdGF0aWMgdm9p ZCBnaW1wbGVfbWFrZV9mb3J3YXJkZXJfYmxvY2sgKGVkZ2UpOw0KICBzdGF0aWMgZ2ltcGxl ICpmaXJzdF9ub25fbGFiZWxfc3RtdCAoYmFzaWNfYmxvY2spOw0KQEAgLTUyMSw2ICs1MjEs NjggQEAgZ2ltcGxlX2NhbGxfaW5pdGlhbGl6ZV9jdHJsX2FsdGVyaW5nIChnaW1wbGUgKnN0 bXQpDQogICAgICBnaW1wbGVfY2FsbF9zZXRfY3RybF9hbHRlcmluZyAoc3RtdCwgZmFsc2Up Ow0KICB9DQogIA0KKy8qIENvbXB1dGUgdGFyZ2V0IGxhYmVscyB0byBzYXZlIHVzZWZ1bCBs YWJlbHMuICAqLw0KK3N0YXRpYyB2b2lkDQorY29tcHV0ZV90YXJnZXRfbGFiZWxzIChnaW1w bGVfc2VxIHNlcSwgaGFzaF9zZXQ8dHJlZT4gKnRhcmdldF9sYWJlbHMpDQorew0KKyAgZ2lt cGxlICpzdG10ID0gTlVMTDsNCisgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGogPSBnc2lfc3Rh cnQgKHNlcSk7DQorDQorICB3aGlsZSAoIWdzaV9lbmRfcCAoaikpDQorICB7DQorICAgICAg c3RtdCA9IGdzaV9zdG10IChqKTsNCisNCisgICAgICBzd2l0Y2ggKGdpbXBsZV9jb2RlIChz dG10KSkNCisgICAgICB7DQorCWNhc2UgR0lNUExFX0NPTkQ6DQorCSAgew0KKwkgICAgZ2Nv bmQgKmNzdG10ID0gYXNfYSA8Z2NvbmQgKj4gKHN0bXQpOw0KKwkgICAgdHJlZSB0cnVlX2xh YmVsID0gZ2ltcGxlX2NvbmRfdHJ1ZV9sYWJlbCAoY3N0bXQpOw0KKwkgICAgdHJlZSBmYWxz ZV9sYWJlbCA9IGdpbXBsZV9jb25kX2ZhbHNlX2xhYmVsIChjc3RtdCk7DQorCSAgICB0YXJn ZXRfbGFiZWxzLT5hZGQgKHRydWVfbGFiZWwpOw0KKwkgICAgdGFyZ2V0X2xhYmVscy0+YWRk IChmYWxzZV9sYWJlbCk7DQorCSAgfQ0KKwkgIGJyZWFrOw0KKwljYXNlIEdJTVBMRV9TV0lU Q0g6DQorCSAgew0KKwkgICAgZ3N3aXRjaCAqZ3N0bXQgPSBhc19hIDxnc3dpdGNoICo+IChz dG10KTsNCisJICAgIHNpemVfdCBpLCBuID0gZ2ltcGxlX3N3aXRjaF9udW1fbGFiZWxzIChn c3RtdCk7DQorCSAgICB0cmVlIGVsdCwgbGFiZWw7DQorCSAgICBmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKQ0KKwkgICAgew0KKwkgICAgICBlbHQgPSBnaW1wbGVfc3dpdGNoX2xhYmVsIChn c3RtdCwgaSk7DQorCSAgICAgIGxhYmVsID0gQ0FTRV9MQUJFTCAoZWx0KTsNCisJICAgICAg dGFyZ2V0X2xhYmVscy0+YWRkIChsYWJlbCk7DQorCSAgICB9DQorCSAgfQ0KKwkgIGJyZWFr Ow0KKwljYXNlIEdJTVBMRV9HT1RPOg0KKwkgIGlmICghY29tcHV0ZWRfZ290b19wIChzdG10 KSkNCisJICAgIHsNCisJICAgICAgdHJlZSBkZXN0ID0gZ2ltcGxlX2dvdG9fZGVzdCAoc3Rt dCk7DQorCSAgICAgIHRhcmdldF9sYWJlbHMtPmFkZCAoZGVzdCk7DQorCSAgICB9DQorCSAg YnJlYWs7DQorCWNhc2UgR0lNUExFX0FTTToNCisJICB7DQorCSAgICBnYXNtICphc21fc3Rt dCA9IGFzX2EgPGdhc20gKj4gKHN0bXQpOw0KKwkgICAgaW50IGksIG4gPSBnaW1wbGVfYXNt X25sYWJlbHMgKGFzbV9zdG10KTsNCisJICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpDQor CSAgICB7DQorCSAgICAgIHRyZWUgY29ucyA9IGdpbXBsZV9hc21fbGFiZWxfb3AgKGFzbV9z dG10LCBpKTsNCisJICAgICAgdGFyZ2V0X2xhYmVscy0+YWRkIChjb25zKTsNCisJICAgIH0N CisJICB9DQorCSAgYnJlYWs7DQorDQorCWRlZmF1bHQ6DQorCSAgYnJlYWs7DQorICAgICAg fQ0KKw0KKyAgICAgIGdzaV9uZXh0ICgmaik7DQorICB9DQorfQ0KKw0KICANCiAgLyogSW5z ZXJ0IFNFUSBhZnRlciBCQiBhbmQgYnVpbGQgYSBmbG93Z3JhcGguICAqLw0KICANCkBAIC01 MzIsNiArNTk0LDEwIEBAIG1ha2VfYmxvY2tzXzEgKGdpbXBsZV9zZXEgc2VxLCBiYXNpY19i bG9jayBiYikNCiAgICBnaW1wbGUgKnByZXZfc3RtdCA9IE5VTEw7DQogICAgYm9vbCBzdGFy dF9uZXdfYmxvY2sgPSB0cnVlOw0KICAgIGJvb2wgZmlyc3Rfc3RtdF9vZl9zZXEgPSB0cnVl Ow0KKyAgaGFzaF9zZXQ8dHJlZT4gdGFyZ2V0X2xhYmVsczsNCisNCisgIGlmICghb3B0aW1p emUpDQorICAgIGNvbXB1dGVfdGFyZ2V0X2xhYmVscyAoc2VxLCAmdGFyZ2V0X2xhYmVscyk7 DQogIA0KICAgIHdoaWxlICghZ3NpX2VuZF9wIChpKSkNCiAgICAgIHsNCkBAIC01NTMsNyAr NjE5LDcgQEAgbWFrZV9ibG9ja3NfMSAoZ2ltcGxlX3NlcSBzZXEsIGJhc2ljX2Jsb2NrIGJi KQ0KICAgICAgICAvKiBJZiB0aGUgc3RhdGVtZW50IHN0YXJ0cyBhIG5ldyBiYXNpYyBibG9j ayBvciBpZiB3ZSBoYXZlIGRldGVybWluZWQNCiAgCSBpbiBhIHByZXZpb3VzIHBhc3MgdGhh dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBibG9jayBmb3IgU1RNVCwgZG8NCiAgCSBzbyBu b3cuICAqLw0KLSAgICAgIGlmIChzdGFydF9uZXdfYmxvY2sgfHwgc3RtdF9zdGFydHNfYmJf cCAoc3RtdCwgcHJldl9zdG10KSkNCisgICAgICBpZiAoc3RhcnRfbmV3X2Jsb2NrIHx8IHN0 bXRfc3RhcnRzX2JiX3AgKHN0bXQsIHByZXZfc3RtdCwgJnRhcmdldF9sYWJlbHMpKQ0KICAJ ew0KICAJICBpZiAoIWZpcnN0X3N0bXRfb2Zfc2VxKQ0KICAJICAgIGdzaV9zcGxpdF9zZXFf YmVmb3JlICgmaSwgJnNlcSk7DQpAQCAtNTY2LDYgKzYzMiw5IEBAIG1ha2VfYmxvY2tzXzEg KGdpbXBsZV9zZXEgc2VxLCBiYXNpY19ibG9jayBiYikNCiAgCSBjb2Rlcy4gICovDQogICAg ICAgIGdpbXBsZV9zZXRfYmIgKHN0bXQsIGJiKTsNCiAgDQorICAgICAgaWYgKCFvcHRpbWl6 ZSAmJiBnaW1wbGVfY29kZSAoc3RtdCkgPT0gR0lNUExFX0xBQkVMKQ0KKwl0YXJnZXRfbGFi ZWxzLmFkZCAoZ2ltcGxlX2xhYmVsX2xhYmVsIChhc19hPGdsYWJlbCAqPiAoc3RtdCkpKTsN CisNCiAgICAgICAgLyogSWYgU1RNVCBpcyBhIGJhc2ljIGJsb2NrIHRlcm1pbmF0b3IsIHNl dCBTVEFSVF9ORVdfQkxPQ0sgZm9yIHRoZQ0KICAJIG5leHQgaXRlcmF0aW9uLiAgKi8NCiAg ICAgICAgaWYgKHN0bXRfZW5kc19iYl9wIChzdG10KSkNCkBAIC0yODMyLDcgKzI5MDEsOCBA QCBzaW1wbGVfZ290b19wIChnaW1wbGUgKnQpDQogICAgIGxhYmVsLiAgKi8NCiAgDQogIHN0 YXRpYyBpbmxpbmUgYm9vbA0KLXN0bXRfc3RhcnRzX2JiX3AgKGdpbXBsZSAqc3RtdCwgZ2lt cGxlICpwcmV2X3N0bXQpDQorc3RtdF9zdGFydHNfYmJfcCAoZ2ltcGxlICpzdG10LCBnaW1w bGUgKnByZXZfc3RtdCwNCisJCSAgaGFzaF9zZXQ8dHJlZT4gKnRhcmdldF9sYWJlbHMpDQog IHsNCiAgICBpZiAoc3RtdCA9PSBOVUxMKQ0KICAgICAgcmV0dXJuIGZhbHNlOw0KQEAgLTI4 NjAsOSArMjkzMCwyNCBAQCBzdG10X3N0YXJ0c19iYl9wIChnaW1wbGUgKnN0bXQsIGdpbXBs ZSAqcHJldl9zdG10KQ0KICAJICAgICAgfHwgIURFQ0xfQVJUSUZJQ0lBTCAoZ2ltcGxlX2xh YmVsX2xhYmVsIChwbGFiZWwpKSkNCiAgCSAgICByZXR1cm4gdHJ1ZTsNCiAgDQorCSAgbG9j YXRpb25fdCBwcmV2X2xvY3VzID0gZ2ltcGxlX2xvY2F0aW9uIChwbGFiZWwpOw0KKwkgIGxv Y2F0aW9uX3QgbG9jdXMgPSBnaW1wbGVfbG9jYXRpb24gKGxhYmVsX3N0bXQpOw0KKwkgIGV4 cGFuZGVkX2xvY2F0aW9uIGxvY3VzX2UgPSBleHBhbmRfbG9jYXRpb24gKGxvY3VzKTsNCisN CisJICBpZiAoIW9wdGltaXplDQorCSAgICAgICYmIHRhcmdldF9sYWJlbHMtPmNvbnRhaW5z IChnaW1wbGVfbGFiZWxfbGFiZWwgKGxhYmVsX3N0bXQpKQ0KKwkgICAgICAmJiAoTE9DQVRJ T05fTE9DVVMgKGxvY3VzKSAhPSBVTktOT1dOX0xPQ0FUSU9ODQorCQl8fCBMT0NBVElPTl9M T0NVUyAocHJldl9sb2N1cykgIT0gVU5LTk9XTl9MT0NBVElPTikNCisJICAgICAgJiYgIXNh bWVfbGluZV9wIChsb2N1cywgJmxvY3VzX2UsIHByZXZfbG9jdXMpKQ0KKwkgICAgcmV0dXJu IHRydWU7DQorDQogIAkgIGNmZ19zdGF0cy5udW1fbWVyZ2VkX2xhYmVscysrOw0KICAJICBy ZXR1cm4gZmFsc2U7DQogIAl9DQorICAgICAgZWxzZSBpZiAoIW9wdGltaXplDQorCSAgICAg ICAmJiAhdGFyZ2V0X2xhYmVscy0+Y29udGFpbnMgKGdpbXBsZV9sYWJlbF9sYWJlbCAobGFi ZWxfc3RtdCkpDQorCSAgICAgICAmJiBzdG10LT5uZXh0ICYmIGdpbXBsZV9jb2RlIChzdG10 LT5uZXh0KSA9PSBHSU1QTEVfTEFCRUwpDQorCXJldHVybiBmYWxzZTsNCiAgICAgICAgZWxz ZQ0KICAJcmV0dXJuIHRydWU7DQogICAgICB9DQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvZ2Nvdi9nY292LTEuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2djb3YvZ2Nv di0xLkMNCmluZGV4IGVlMzgzYjQ4MGE4Li4wMWU3MDg0ZmIwMyAxMDA2NDQNCi0tLSBhL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2djb3YvZ2Nvdi0xLkMNCisrKyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2djb3YvZ2Nvdi0xLkMNCkBAIC0yNjMsNyArMjYzLDcgQEAgdGVzdF9zd2l0Y2gg KGludCBpLCBpbnQgaikNCiAgICAgICAgY2FzZSAyOg0KICAgICAgICAgIHJlc3VsdCA9IGRv X3NvbWV0aGluZyAoMTAyNCk7DQogICAgICAgICAgYnJlYWs7DQotICAgICAgY2FzZSAzOgkJ CQkvKiBjb3VudCgzKSAqLw0KKyAgICAgIGNhc2UgMzoJCQkJLyogY291bnQoMikgKi8NCiAg ICAgICAgY2FzZSA0Og0KICAJCQkJCS8qIGJyYW5jaCg2NykgKi8NCiAgICAgICAgICBpZiAo aiA9PSAyKQkJCS8qIGNvdW50KDMpICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MubWlzYy10ZXN0cy9nY292LTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLm1pc2MtdGVzdHMv Z2Nvdi00LmMNCmluZGV4IGRhNzkyOWVmN2ZjLi43OTJjZGE4Y2ZjZSAxMDA2NDQNCi0tLSBh L2djYy90ZXN0c3VpdGUvZ2NjLm1pc2MtdGVzdHMvZ2Nvdi00LmMNCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLm1pc2MtdGVzdHMvZ2Nvdi00LmMNCkBAIC0xMjIsNyArMTIyLDcgQEAgdG9w Og0KICAgICAgICB9DQogICAgICBlbHNlDQogICAgICAgIHsNCi1lbHNlXzoJCQkJLyogY291 bnQoMSkgKi8NCitlbHNlXzoJCQkJLyogY291bnQoMikgKi8NCiAgCWogPSBkb19zb21ldGhp bmcgKGopOwkvKiBjb3VudCgyKSAqLw0KICAJaWYgKGopCQkJLyogY291bnQoMikgKi8NCiAg CSAgew0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLm1pc2MtdGVzdHMvZ2Nvdi1w cjg1MzMyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5taXNjLXRlc3RzL2djb3YtcHI4NTMzMi5j DQppbmRleCA3M2U1MGIxOWZjNy4uYjM3ZTc2MDkxMGMgMTAwNjQ0DQotLS0gYS9nY2MvdGVz dHN1aXRlL2djYy5taXNjLXRlc3RzL2djb3YtcHI4NTMzMi5jDQorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5taXNjLXRlc3RzL2djb3YtcHI4NTMzMi5jDQpAQCAtNyw3ICs3LDcgQEAgaW50 IGRvaXQoaW50IHNlbCwgaW50IG4sIHZvaWQgKnApDQogIA0KICAgIHN3aXRjaCAoc2VsKQ0K ICAgIHsNCi0gICAgY2FzZSAwOiAvKiBjb3VudCgzKSAqLw0KKyAgICBjYXNlIDA6IC8qIGNv dW50KDEpICovDQogICAgICAgIGRvIHsqcDAgKz0gKnAwO30gd2hpbGUgKC0tbik7IC8qIGNv dW50KDMpICovDQogICAgICAgIHJldHVybiAqcDAgPT0gMDsgLyogY291bnQoMSkgKi8NCiAg DQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MubWlzYy10ZXN0cy9nY292LXByOTM2 ODAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLm1pc2MtdGVzdHMvZ2Nvdi1wcjkzNjgwLmMNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uMmZlMzQwYzQwMTENCi0t LSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLm1pc2MtdGVzdHMvZ2Nvdi1w cjkzNjgwLmMNCkBAIC0wLDAgKzEsMjQgQEANCisvKiB7IGRnLW9wdGlvbnMgIi1mcHJvZmls ZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSIgfSAqLw0KKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0 IG5hdGl2ZSB9IH0gKi8NCisNCitpbnQgZihpbnQgcywgaW50IG4pDQorew0KKyAgaW50IHAg PSAwOw0KKw0KKyAgc3dpdGNoIChzKQ0KKyAgew0KKyAgICBjYXNlIDA6IC8qIGNvdW50KDEp ICovDQorICAgICAgZG8geyBwKys7IH0gd2hpbGUgKC0tbik7IC8qIGNvdW50KDUpICovDQor ICAgICAgcmV0dXJuIHA7IC8qIGNvdW50KDEpICovDQorDQorICAgIGNhc2UgMTogLyogY291 bnQoMSkgKi8NCisgICAgICBkbyB7IHArKzsgfSB3aGlsZSAoLS1uKTsgLyogY291bnQoNSkg Ki8NCisgICAgICByZXR1cm4gcDsgLyogY291bnQoMSkgKi8NCisgIH0NCisNCisgIHJldHVy biAwOw0KK30NCisNCitpbnQgbWFpbigpIHsgZigwLCA1KTsgZigxLCA1KTsgcmV0dXJuIDA7 IH0NCisNCisvKiB7IGRnLWZpbmFsIHsgcnVuLWdjb3YgZ2Nvdi1wcjkzNjgwLmMgfSB9ICov DQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9saWIvZ2Nvdi5leHAgYi9nY2MvdGVzdHN1 aXRlL2xpYi9nY292LmV4cA0KaW5kZXggODBlNzRhZWIyMjAuLjA3ZTE5NzhkMjVkIDEwMDY0 NA0KLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9saWIvZ2Nvdi5leHANCisrKyBiL2djYy90ZXN0c3Vp dGUvbGliL2djb3YuZXhwDQpAQCAtNDI0LDkgKzQyNCw3IEBAIHByb2MgcnVuLWdjb3YgeyBh cmdzIH0gew0KICAgICAgfQ0KICAgICAgaWYgeyAkdGZhaWxlZCA+IDAgfSB7DQogIAlmYWls ICIkdGVzdG5hbWUgZ2NvdjogJGxmYWlsZWQgZmFpbHVyZXMgaW4gbGluZSBjb3VudHMsICRi ZmFpbGVkIGluIGJyYW5jaCBwZXJjZW50YWdlcywgJGNmYWlsZWQgaW4gcmV0dXJuIHBlcmNl bnRhZ2VzLCAkaWZhaWxlZCBpbiBpbnRlcm1lZGlhdGUgZm9ybWF0Ig0KLQlpZiB7ICR4ZmFp bGVkIH0gew0KLQkgICAgY2xlYW4tZ2NvdiAkdGVzdGNhc2UNCi0JfQ0KKwljbGVhbi1nY292 ICR0ZXN0Y2FzZQ0KICAgICAgfSBlbHNlIHsNCiAgCXBhc3MgIiR0ZXN0bmFtZSBnY292Ig0K ICAJY2xlYW4tZ2NvdiAkdGVzdGNhc2UNCi0tIA0KMi4yNy4wDQoNCg0K