From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-40137.protonmail.ch (mail-40137.protonmail.ch [185.70.40.137]) by sourceware.org (Postfix) with ESMTPS id B430E3858D38 for ; Mon, 11 Sep 2023 13:49:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B430E3858D38 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=protonmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=protonmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1694440160; x=1694699360; bh=2dJXj3XnJAlKZ1pe2y/fHh4WP4nimiDh6eGPbbLpw3c=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=hvIefcsWsfz7l9Tx/anqDs1+fdJtAayhMNBUVFeZWPyEHyFGaovFuNatNRdTOgqTP RA1KmVBdZ0fS1g1DneKLfD4tBtDevot53UUJW/YztPkvlUsr11QPYKX/y8scMfb73j L/SUdLN7Euks2U5EdCUnqd8VWnT9IqVXjxBwQyQHWX+j713sP3thPExJPUj271cFRM SgBehOKTCyAat6BTnT2K2A+Xnfz5btgYCquo7rZ5vZNDOybykvnilx8pUepzIdjgNu AMw+e9BsZVv6TbosuGCDW8+51f4dB40U9CJMJ98LIlilRxoju4/l5Fa9XTmRmrtY8D SbHvGOE/dr63w== Date: Mon, 11 Sep 2023 13:49:03 +0000 To: waffl3x From: waffl3x Cc: Jakub Jelinek , "gcc-patches@gcc.gnu.org" Subject: [PATCH v2 1/2] c++: Initial support for P0847R7 (Deducing This) [PR102609] Message-ID: In-Reply-To: References: Feedback-ID: 14591686:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_VISixzjtYMPEX0U1SXlYMAuOfED6NAa1hJGvQ" X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --b1_VISixzjtYMPEX0U1SXlYMAuOfED6NAa1hJGvQ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Bootstrapped and tested on x86_64-linux with no regressions. Hopefully I fixed all the issues. I also took the opportunity to remove the small mistake present in v1, so that is no longer a concern. Thanks again for all the patience. -Alex --b1_VISixzjtYMPEX0U1SXlYMAuOfED6NAa1hJGvQ Content-Type: text/x-patch; name=0001-c-Initial-support-for-C-23-P0847R7-Deducing-This-PR1.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-c-Initial-support-for-C-23-P0847R7-Deducing-This-PR1.patch RnJvbSAwZGI1MjE0Njg4MGZhZjIwZTdhN2I3ODZkYWQ0N2M2ODZhNWYyNmQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXYWZmbDN4IDx3YWZmbDN4QHByb3Rvbm1haWwuY29tPgpEYXRl OiBNb24sIDExIFNlcCAyMDIzIDA0OjIxOjEwIC0wNjAwClN1YmplY3Q6IFtQQVRDSF0gYysrOiBJ bml0aWFsIHN1cHBvcnQgZm9yIEMrKzIzIFAwODQ3UjcgKERlZHVjaW5nIFRoaXMpCiBbUFIxMDI2 MDldCgpUaGlzIHBhdGNoIGltcGxlbWVudHMgaW5pdGlhbCBzdXBwb3J0IGZvciBQMDg0N1I3LCB3 aXRob3V0IGFkZGl0aW9ucyB0bwpkaWFnbm9zdGljcy4gIEFsbW9zdCBldmVyeXRoaW5nIHNob3Vs ZCB3b3JrIGNvcnJlY3RseSwgYmFycmluZyBhIGZldwpsaW1pdGF0aW9ucyB3aGljaCBhcmUgbGlz dGVkIGJlbG93LiAgSSBhdHRlbXB0ZWQgdG8gbWluaW1pemUgY2hhbmdlcyB0byB0aGUKZXhpc3Rp bmcgY29kZSwgdHJlYXRpbmcgZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMgYXMgc3Rh dGljIGZ1bmN0aW9ucywKd2hpbGUgZmxhZ2dpbmcgdGhlbSB0byBnaXZlIHRoZW0gZXh0cmEgcG93 ZXJzIHNlZW1lZCB0byBiZSB0aGUgYmVzdCB3YXkgb2YKYWNoaWV2aW5nIHRoaXMuICBGb3IgdGhp cyBwYXRjaCwgdGhlIGZsYWcgaXMgb25seSB1dGlsaXplZCBpbiBjYWxsLmNjIGZvcgpyZXNvbHZp bmcgb3ZlcmxvYWRzIGFuZCBtYWtpbmcgdGhlIGFjdHVhbCBmdW5jdGlvbiBjYWxsLiAgVG8gYWNo aWV2ZSB0aGlzLApjb252ZXJzaW9uIG9mIGEgRlVOQ19UWVBFIHRvIGEgTUVUSE9EX1RZUEUgaXMg c3VwcHJlc3NlZCB3aGVuIHRoZSBmaXJzdApwYXJhbWV0ZXIgb2YgdGhlIEZVTkNfVFlQRSBpcyBh biBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyLCB0aGlzIGFwcGVhcnMgdG8gYmUKc3VmZmljaWVu dC4gIEkgb3B0ZWQgdG8gY3JlYXRlIGEgbmV3IHZhcmlhYmxlIHRvIGFjaGlldmUgdGhpcyBpbnN0 ZWFkIG9mCnVzaW5nICJzdGF0aWNwIiB0byBhdm9pZCBhbnkgcG9zc2libGUgY29uZnVzaW9uLgoK QXMgZm9yIHRoZSBwcmV2aW91c2x5IG1lbnRpb25lZCBsaW1pdGF0aW9ucywgbGFtYmRhcyBkbyBu b3Qgd29yayBjb3JyZWN0bHkgeWV0LApidXQgSSBzdXNwZWN0IHRoYXQgYSBmZXcgdHdlYWtzIGFy ZSBhbGwgaXQgd2lsbCB0YWtlIHRvIGhhdmUgdGhlbSBmdWxseQpmdW5jdGlvbmFsLiAgVXNlciBk ZWZpbmVkIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIHdoZW4gYW4gZXhwbGlj aXQKb2JqZWN0IG1lbWJlciBmdW5jdGlvbiB3aXRoIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0 ZXIgb2YgYW4gdW5yZWxhdGVkIHR5cGUKaXMgY2FsbGVkLiAgVGhlIGZvbGxvd2luZyBjYXNlIGRv ZXMgbm90IGJlaGF2ZSBjb3JyZWN0bHkgYmVjYXVzZSBvZiB0aGlzLgoKc3RydWN0IFMgewogIG9w ZXJhdG9yIHNpemVfdCgpIHsKICAgIHJldHVybiA0MjsKICB9CiAgc2l6ZV90IGYodGhpcyBzaXpl X3QgbikgewogICAgcmV0dXJuIG47CiAgfQp9OwoKaW50IG1haW4oKQp7CiAgUyBze307CiAgc2l6 ZV90IGEgPSBzLmYoKTsKfQoKQ3VycmVudGx5LCBpdCBhcHBlYXJzIHRoYXQgdGhlIG9iamVjdCBh cmd1bWVudCBpcyBzaW1wbHkgcmVpbnRlcnByZXRlZCBhcwphIHNpemVfdCBpbnN0ZWFkIG9mIHBy b3Blcmx5IGNhbGxpbmcgdGhlIHVzZXIgZGVmaW5lZCBjb252ZXJzaW9uIGZ1bmN0aW9uLgpUaGUg dmFsaWRpdHkgb2Ygc3VjaCBhIGNvbnZlcnNpb24gaXMgc3RpbGwgY29uc2lkZXJlZCBob3dldmVy LCBpZiB0aGVyZSBpcyBubwp3YXkgdG8gY29udmVydCBTIHRvIGEgc2l6ZV90IGFuIGFwcHJvcHJp YXRlIGNvbXBpbGUgZXJyb3Igd2lsbCBiZSBlbWl0dGVkLgpJIGhhdmUgYW4gaWRlYSBvZiB3aGF0 IGNoYW5nZXMgbmVlZCB0byBiZSBtYWRlIHRvIGZpeCB0aGlzLCBidXQgSSBkaWQgbm90CnBlcnN1 ZSB0aGlzIGZvciB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBwYXRjaC4KVGhpcyBidWcgY2Fu IGJlIG9ic2VydmVkIGluIHRoZSBleHBsaWNpdC1vYmplY3QtcGFyYW00LkMgdGVzdCBjYXNlLCB3 aGlsZQpleHBsaWNpdC1vYmplY3QtcGFyYW0zLkMgZGVtb25zdHJhdGVzIHRoZSBub24gZnVuY3Rp b25pbmcgbGFtYmRhcy4KCglQUiBjKysvMTAyNjA5CgpnY2MvY3AvQ2hhbmdlTG9nOgoKCVBSIGMr Ky8xMDI2MDkKCUluaXRpYWwgc3VwcG9ydCBmb3IgQysrMjMgUDA4NDdSNyAtIERlZHVjaW5nIHRo aXMuCgkqIGNhbGwuY2MgKGFkZF9jYW5kaWRhdGVzKTogQ2hlY2sgaWYgZm4gaXMgYW4geG9iaiBt ZW1iZXIgZnVuY3Rpb24uCgkoYnVpbGRfb3Zlcl9jYWxsKTogRGl0dG8uCgkqIGNwLXRyZWUuaCAo c3RydWN0IGxhbmdfZGVjbF9iYXNlOjp4b2JqX2ZsYWcpOiBOZXcgZGF0YSBtZW1iZXIuCgkoREVD TF9GVU5DX1hPQkpfRkxBRyk6IERlZmluZS4KCShERUNMX1BBUk1fWE9CSl9GTEFHKTogRGVmaW5l LgoJKERFQ0xfSVNfWE9CSl9NRU1CRVJfRlVOQyk6IERlZmluZS4KCShlbnVtIGNwX2RlY2xfc3Bl Yyk6IEFkZCBkc190aGlzLgoJKiBkZWNsLmNjIChncm9rZm5kZWNsKTogU2V0IHhvYmpfZmxhZyBp ZiBmaXJzdCBwYXJhbSBpcyBhbiB4b2JqIHBhcmFtLgoJKGdyb2tkZWNsYXJhdG9yKTogRm9yIHhv YmogbWVtYmVyIGZ1bmN0aW9ucywgRG9uJ3QgY2hhbmdlIHR5cGUgdG8KCU1FVEhPRF9UWVBFLCBs ZWF2ZSBpdCBhcyBGVU5DX1RZUEUuIEZvciBQQVJNIGRlY2xfY29udGV4dCwgc2V0CglkZWNsX2Zs YWdfMyBpZiBwYXJhbSBpcyBhbiB4b2JqIHBhcmFtLgoJKiBwYXJzZXIuY2MgKGNwX3BhcnNlcl9k ZWNsX3NwZWNpZmllcl9zZXEpOiBIYW5kbGUgdGhpcyBzcGVjaWZpZXIuCgkoc2V0X2FuZF9jaGVj a19kZWNsX3NwZWNfbG9jKTogQWRkICJ0aGlzIi4KCmdjYy9DaGFuZ2VMb2c6CgoJUFIgYysrLzEw MjYwOQoJSW5pdGlhbCBzdXBwb3J0IGZvciBDKysyMyBQMDg0N1I3IC0gRGVkdWNpbmcgdGhpcy4K CSogdHJlZS1jb3JlLmggKHN0cnVjdCB0cmVlX2RlY2xfY29tbW9uKTogQ29tbWVudCB1c2Ugb2Yg ZGVjbF9mbGFnXzMuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCglQUiBjKysvMTAyNjA5CglJ bml0aWFsIHN1cHBvcnQgZm9yIEMrKzIzIFAwODQ3UjcgLSBEZWR1Y2luZyB0aGlzLgoJKiBnKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMS5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iamVjdC1wYXJhbTIuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmplY3QtcGFyYW0zLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqZWN0LXBhcmFtNC5DOiBOZXcgdGVzdC4KClNpZ25lZC1vZmYtYnk6IFdhZmZsM3ggPHdh ZmZsM3hAcHJvdG9ubWFpbC5jb20+Ci0tLQogZ2NjL2NwL2NhbGwuY2MgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICstCiBnY2MvY3AvY3AtdHJlZS5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMjEgKysrLQogZ2NjL2NwL2RlY2wuY2MgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDI0ICsrKysKIGdjYy9jcC9wYXJzZXIuY2MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNSArKy0KIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq ZWN0LXBhcmFtMS5DICAgICB8IDExNCArKysrKysrKysrKysrKysrKysKIC4uLi9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMi5DICAgICB8ICAyOCArKysrKwogLi4uL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW0zLkMgICAgIHwgIDE1ICsrKwogLi4uL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW00LkMgICAgIHwgIDMzICsrKysrCiBnY2MvdHJlZS1j b3JlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIDkgZmlsZXMgY2hh bmdlZCwgMjU0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMS5DCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq ZWN0LXBhcmFtMi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMy5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtNC5DCgpkaWZmIC0tZ2l0IGEv Z2NjL2NwL2NhbGwuY2MgYi9nY2MvY3AvY2FsbC5jYwppbmRleCAzOTkzNDUzMDdlYS4uMzc2OTBm ZGFlMjUgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jYWxsLmNjCisrKyBiL2djYy9jcC9jYWxsLmNjCkBA IC02NTQ3LDcgKzY1NDcsOCBAQCBhZGRfY2FuZGlkYXRlcyAodHJlZSBmbnMsIHRyZWUgZmlyc3Rf YXJnLCBjb25zdCB2ZWM8dHJlZSwgdmFfZ2M+ICphcmdzLAogICAgICAgdHJlZSBmbl9maXJzdF9h cmcgPSBOVUxMX1RSRUU7CiAgICAgICBjb25zdCB2ZWM8dHJlZSwgdmFfZ2M+ICpmbl9hcmdzID0g YXJnczsKIAotICAgICAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikp CisgICAgICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQorCSAgfHwg REVDTF9JU19YT0JKX01FTUJFUl9GVU5DIChmbikpCiAJewogCSAgLyogRmlndXJlIG91dCB3aGVy ZSB0aGUgb2JqZWN0IGFyZyBjb21lcyBmcm9tLiAgSWYgdGhpcwogCSAgICAgZnVuY3Rpb24gaXMg YSBub24tc3RhdGljIG1lbWJlciBhbmQgd2UgZGlkbid0IGdldCBhbgpAQCAtOTk2OSw3ICs5OTcw LDggQEAgYnVpbGRfb3Zlcl9jYWxsIChzdHJ1Y3Qgel9jYW5kaWRhdGUgKmNhbmQsIGludCBmbGFn cywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAJfQogICAgIH0KICAgLyogQnlwYXNzIGFjY2Vz cyBjb250cm9sIGZvciAndGhpcycgcGFyYW1ldGVyLiAgKi8KLSAgZWxzZSBpZiAoVFJFRV9DT0RF IChUUkVFX1RZUEUgKGZuKSkgPT0gTUVUSE9EX1RZUEUpCisgIGVsc2UgaWYgKFRSRUVfQ09ERSAo VFJFRV9UWVBFIChmbikpID09IE1FVEhPRF9UWVBFCisJICAgfHwgREVDTF9JU19YT0JKX01FTUJF Ul9GVU5DIChmbikpCiAgICAgewogICAgICAgdHJlZSBhcmcgPSBidWlsZF90aGlzIChmaXJzdF9h cmcgIT0gTlVMTF9UUkVFCiAJCQkgICAgID8gZmlyc3RfYXJnCmRpZmYgLS1naXQgYS9nY2MvY3Av Y3AtdHJlZS5oIGIvZ2NjL2NwL2NwLXRyZWUuaAppbmRleCAzY2EwMTFjNjFjOC4uNTIyYWMyZDA2 N2UgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jcC10cmVlLmgKKysrIGIvZ2NjL2NwL2NwLXRyZWUuaApA QCAtMjg3OCw3ICsyODc4LDkgQEAgc3RydWN0IEdUWSgoKSkgbGFuZ19kZWNsX2Jhc2UgewogICAv KiBWQVJfREVDTCBvciBGVU5DVElPTl9ERUNMIGhhcyBrZXllZCBkZWNscy4gICAgICovCiAgIHVu c2lnbmVkIG1vZHVsZV9rZXllZF9kZWNsc19wIDogMTsKIAotICAvKiAxMiBzcGFyZSBiaXRzLiAg Ki8KKyAgLyogRlVOQ1RJT05fREVDTCBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGZs YWcuICAqLworICB1bnNpZ25lZCB4b2JqX2ZsYWcgOiAxOworICAvKiAxMSBzcGFyZSBiaXRzLiAg Ki8KIH07CiAKIC8qIFRydWUgZm9yIERFQ0wgY29kZXMgd2hpY2ggaGF2ZSB0ZW1wbGF0ZSBpbmZv IGFuZCBhY2Nlc3MuICAqLwpAQCAtMzA4Niw2ICszMDg4LDIyIEBAIHN0cnVjdCBHVFkoKCkpIGxh bmdfZGVjbCB7CiAKICNlbmRpZiAvKiBFTkFCTEVfVFJFRV9DSEVDS0lORyAqLwogCisvKiBUaGVz ZSBuZWVkIHRvIG1vdmVkIHRvIHNvbWV3aGVyZSBhcHByb3ByaWF0ZS4gICovCisKKy8qIFRoZSBm bGFnIGlzIGEgbWVtYmVyIG9mIGJhc2UsIGJ1dCB0aGUgdmFsdWUgaXMgbWVhbmluZ2xlc3MgZm9y IG90aGVyCisgICBkZWNsIHR5cGVzIHNvIGNoZWNraW5nIGlzIHN0aWxsIGp1c3RpZmllZCBJIGlt YWdpbmUuICAqLworI2RlZmluZSBERUNMX0ZVTkNfWE9CSl9GTEFHKE5PREUpIFwKKyAgKExBTkdf REVDTF9GTl9DSEVDSyAoTk9ERSktPm1pbi5iYXNlLnhvYmpfZmxhZykKKy8qIE5vdCBhIGxhbmdf ZGVjbCBmaWVsZCwgYnV0IHN0aWxsIHNwZWNpZmljIHRvIGMrKy4gICovCisjZGVmaW5lIERFQ0xf UEFSTV9YT0JKX0ZMQUcoTk9ERSkgXAorICAoUEFSTV9ERUNMX0NIRUNLIChOT0RFKS0+ZGVjbF9j b21tb24uZGVjbF9mbGFnXzMpCisvKiBGaXJzdCBjaGVja3MgaWYgdGhlIG5vZGUgaGFzIGEgbWVh bmluZ2Z1bCB2YWx1ZSBmb3IgeG9ial9mbGFnLAorICAgZXZhbHVhdGVzIGZhbHNlIGlmIG5vdCwg b3RoZXJ3aXNlIGV2YWx1YXRlcyB0byB0aGUgdmFsdWUgb2YgdGhlIGZsYWcuICAqLworI2RlZmlu ZSBERUNMX0lTX1hPQkpfTUVNQkVSX0ZVTkMoTk9ERSkgCQkJXAorICAoVFJFRV9DT0RFIChTVFJJ UF9URU1QTEFURSAoTk9ERSkpID09IEZVTkNUSU9OX0RFQ0wJXAorICAgJiYgREVDTF9MQU5HX1NQ RUNJRklDIChTVFJJUF9URU1QTEFURSAoTk9ERSkpCVwKKyAgICYmIERFQ0xfTEFOR19TUEVDSUZJ QyAoU1RSSVBfVEVNUExBVEUgKE5PREUpKS0+dS5iYXNlLnhvYmpfZmxhZyA9PSAxKQorCiAvKiBG b3IgYSBGVU5DVElPTl9ERUNMIG9yIGEgVkFSX0RFQ0wsIHRoZSBsYW5ndWFnZSBsaW5rYWdlIGZv ciB0aGUKICAgIGRlY2xhcmF0aW9uLiAgU29tZSBlbnRpdGllcyAobGlrZSBhIG1lbWJlciBmdW5j dGlvbiBpbiBhIGxvY2FsCiAgICBjbGFzcywgb3IgYSBsb2NhbCB2YXJpYWJsZSkgZG8gbm90IGhh dmUgbGlua2FnZSBhdCBhbGwsIGFuZCB0aGlzCkBAIC02Mjc1LDYgKzYyOTMsNyBAQCBlbnVtIGNw X2RlY2xfc3BlYyB7CiAgIGRzX2NvbXBsZXgsCiAgIGRzX2NvbnN0aW5pdCwKICAgZHNfY29uc3Rl dmFsLAorICBkc190aGlzLCAvKiBpbnNlcnRpbmcgaGVyZSB0byBtYXRjaCBkZWNsX3NwZWNfbmFt ZXMgaW4gcGFyc2VyLmNjLiAgKi8KICAgZHNfdGhyZWFkLAogICBkc190eXBlX3NwZWMsCiAgIGRz X3JlZGVmaW5lZF9idWlsdGluX3R5cGVfc3BlYywKZGlmZiAtLWdpdCBhL2djYy9jcC9kZWNsLmNj IGIvZ2NjL2NwL2RlY2wuY2MKaW5kZXggMjU1YzQwMjZiZGIuLmQwMDI2MDU5ZjBmIDEwMDY0NAot LS0gYS9nY2MvY3AvZGVjbC5jYworKysgYi9nY2MvY3AvZGVjbC5jYwpAQCAtMTAzNDUsNiArMTAz NDUsOCBAQCBncm9rZm5kZWNsICh0cmVlIGN0eXBlLAogICB0eXBlID0gYnVpbGRfY3BfZm50eXBl X3ZhcmlhbnQgKHR5cGUsIHJxdWFsLCByYWlzZXMsIGxhdGVfcmV0dXJuX3R5cGVfcCk7CiAKICAg ZGVjbCA9IGJ1aWxkX2xhbmdfZGVjbF9sb2MgKGxvY2F0aW9uLCBGVU5DVElPTl9ERUNMLCBkZWNs YXJhdG9yLCB0eXBlKTsKKyAgLyogQWxsIGVycm9yIGNoZWNraW5nIGhhcyBiZWVuIGRvbmUgYnkg bm93LCBqdXN0IGNvcHkgdGhlIGZsYWcgb3Zlci4gICovCisgIERFQ0xfRlVOQ19YT0JKX0ZMQUcg KGRlY2wpID0gcGFybXMgPyBERUNMX1BBUk1fWE9CSl9GTEFHIChwYXJtcykgOiBmYWxzZTsKIAog ICAvKiBTZXQgdGhlIGNvbnN0cmFpbnRzIG9uIHRoZSBkZWNsYXJhdGlvbi4gKi8KICAgaWYgKGZs YWdfY29uY2VwdHMpCkBAIC0xMjk5Nyw2ICsxMjk5OSwxOSBAQCBncm9rZGVjbGFyYXRvciAoY29u c3QgY3BfZGVjbGFyYXRvciAqZGVjbGFyYXRvciwKICAgaWYgKGF0dHJsaXN0KQogICAgIGRpYWdu b3NlX21pc2FwcGxpZWRfY29udHJhY3RzICgqYXR0cmxpc3QpOwogCisgIC8qIE9ubHkgdXNlZCBm b3Igc2tpcHBpbmcgb3ZlciBidWlsZF9tZW1mbl90eXBlLCBncm9rZm5kZWNsIGhhbmRsZXMKKyAg ICAgY29weWluZyB0aGUgZmxhZyB0byB0aGUgY29ycmVjdCBmaWVsZCBmb3IgYSBmdW5jX2RlY2wu CisgICAgIFRoZXJlIG11c3QgYmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBpc24n dCBvYnZpb3VzIGhvdy4gICovCisgIGJvb2wgaXNfeG9ial9tZW1iZXJfZnVuY3Rpb24gPSBmYWxz ZTsKKyAgYXV0byBnZXRfeG9ial9wYXJtID0gW10odHJlZSBwYXJtX2xpc3QpCisgICAgeworICAg ICAgaWYgKCFwYXJtX2xpc3QpCisJcmV0dXJuIE5VTExfVFJFRTsKKyAgICAgIHRyZWUgZmlyc3Rf cGFybSA9IFRSRUVfVkFMVUUgKHBhcm1fbGlzdCk7CisgICAgICBpZiAoZmlyc3RfcGFybSA9PSB2 b2lkX3R5cGVfbm9kZSkKKwlyZXR1cm4gTlVMTF9UUkVFOworICAgICAgcmV0dXJuIERFQ0xfUEFS TV9YT0JKX0ZMQUcgKGZpcnN0X3Bhcm0pID09IDEgPyBmaXJzdF9wYXJtIDogTlVMTF9UUkVFOwor ICAgIH07CiAgIC8qIERldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgZW50aXR5IGRlY2xhcmVkIGJ5 IHJlY3VycmluZyBvbiB0aGUKICAgICAgZGVjbGFyYXRvci4gICovCiAgIGZvciAoOyBkZWNsYXJh dG9yOyBkZWNsYXJhdG9yID0gZGVjbGFyYXRvci0+ZGVjbGFyYXRvcikKQEAgLTEzMDkyLDYgKzEz MTA3LDkgQEAgZ3Jva2RlY2xhcmF0b3IgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3Is CiAKIAljYXNlIGNka19mdW5jdGlvbjoKIAkgIHsKKwkgICAgdHJlZSB4b2JqX3Bhcm0KKwkgICAg ICA9IGdldF94b2JqX3Bhcm0gKGRlY2xhcmF0b3ItPnUuZnVuY3Rpb24ucGFyYW1ldGVycyk7CisJ ICAgIGlzX3hvYmpfbWVtYmVyX2Z1bmN0aW9uID0geG9ial9wYXJtOwogCSAgICB0cmVlIGFyZ190 eXBlczsKIAkgICAgaW50IGZ1bmNkZWNsX3A7CiAKQEAgLTE0MTc2LDYgKzE0MTk0LDggQEAgZ3Jv a2RlY2xhcmF0b3IgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAgICAgfQogCiAg IGlmIChjdHlwZSAmJiBUUkVFX0NPREUgKHR5cGUpID09IEZVTkNUSU9OX1RZUEUgJiYgc3RhdGlj cCA8IDIKKyAgICAgIC8qIGJ5cGFzcyBjb252ZXJzaW9uIHRvIE1FVEhPRF9UWVBFIGlmIGFuIHhv YmogcGFybSBpcyBwcmVzZW50ICovCisgICAgICAmJiAhaXNfeG9ial9tZW1iZXJfZnVuY3Rpb24K ICAgICAgICYmICEodW5xdWFsaWZpZWRfaWQKIAkgICAmJiBpZGVudGlmaWVyX3AgKHVucXVhbGlm aWVkX2lkKQogCSAgICYmIElERU5USUZJRVJfTkVXREVMX09QX1AgKHVucXVhbGlmaWVkX2lkKSkp CkBAIC0xNDE5NCw2ICsxNDIxNCwxMCBAQCBncm9rZGVjbGFyYXRvciAoY29uc3QgY3BfZGVjbGFy YXRvciAqZGVjbGFyYXRvciwKICAgICAgIHsKIAlkZWNsID0gY3BfYnVpbGRfcGFybV9kZWNsIChO VUxMX1RSRUUsIHVucXVhbGlmaWVkX2lkLCB0eXBlKTsKIAlERUNMX0FSUkFZX1BBUkFNRVRFUl9Q IChkZWNsKSA9IGFycmF5X3BhcmFtZXRlcl9wOworCS8qIFNldCB0aGUgeG9iaiBmbGFnIGZvciB0 aGlzIHBhcm0sIHVuZm9ydHVuYXRlbHkKKwkgICBJIGRvbid0IHRoaW5rIHRoZXJlIGlzIGEgYmV0 dGVyIHdheSB0byBkbyB0aGlzLiAgKi8KKwlERUNMX1BBUk1fWE9CSl9GTEFHIChkZWNsKQorCSAg PSBkZWNsX3NwZWNfc2VxX2hhc19zcGVjX3AgKGRlY2xzcGVjcywgZHNfdGhpcyk7CiAKIAliYWRf c3BlY2lmaWVycyAoZGVjbCwgQlNQX1BBUk0sIHZpcnR1YWxwLAogCQkJbWVtZm5fcXVhbHMgIT0g VFlQRV9VTlFVQUxJRklFRCwKZGlmZiAtLWdpdCBhL2djYy9jcC9wYXJzZXIuY2MgYi9nY2MvY3Av cGFyc2VyLmNjCmluZGV4IGVkMDY3NWM5NTk5Li4zNTQyOTdiZmZmOCAxMDA2NDQKLS0tIGEvZ2Nj L2NwL3BhcnNlci5jYworKysgYi9nY2MvY3AvcGFyc2VyLmNjCkBAIC0xNjA0OSw2ICsxNjA0OSwx OCBAQCBjcF9wYXJzZXJfZGVjbF9zcGVjaWZpZXJfc2VxIChjcF9wYXJzZXIqIHBhcnNlciwKIAkg ICAgZGVjbF9zcGVjcy0+bG9jYXRpb25zW2RzX2F0dHJpYnV0ZV0gPSB0b2tlbi0+bG9jYXRpb247 CiAJICBjb250aW51ZTsKIAl9CisgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIHhvYmogcGFybSwg ZG9lc24ndCByZWFsbHkgYmVsb25nIHVwIGhlcmUKKwkgKGl0IGFwcGxpZXMgdG8gcGFybSBkZWNs cyBhbmQgdGhvc2UgYXJlIG1vc3RseSBoYW5kbGVkIGJlbG93CisJIHRoZSBmb2xsb3dpbmcgc3Bl Y2lmaWVycykgYnV0IEkgaW50ZW5kIHRvIHJlZmFjdG9yIHRoaXMgZnVuY3Rpb24KKwkgc28gSSdt IG5vdCB3b3JyeWluZyBhYm91dCBpdCB0b28gbXVjaC4KKwkgVGhlIGVycm9yIGRpYWdub3N0aWNz IG1pZ2h0IGJlIGJldHRlciBlbHNld2hlcmUgdGhvdWdoLiAgKi8KKyAgICAgIGlmICh0b2tlbi0+ a2V5d29yZCA9PSBSSURfVEhJUykKKwl7CisJICBjcF9sZXhlcl9jb25zdW1lX3Rva2VuIChwYXJz ZXItPmxleGVyKTsKKwkgIHNldF9hbmRfY2hlY2tfZGVjbF9zcGVjX2xvYyAoZGVjbF9zcGVjcywg ZHNfdGhpcywgdG9rZW4pOworCSAgY29udGludWU7CisJfQorCiAgICAgICAvKiBBc3N1bWUgd2Ug d2lsbCBmaW5kIGEgZGVjbC1zcGVjaWZpZXIga2V5d29yZC4gICovCiAgICAgICBmb3VuZF9kZWNs X3NwZWMgPSB0cnVlOwogICAgICAgLyogSWYgdGhlIG5leHQgdG9rZW4gaXMgYW4gYXBwcm9wcmlh dGUga2V5d29yZCwgd2UgY2FuIHNpbXBseQpAQCAtMzM4MDksNyArMzM4MjEsOCBAQCBzZXRfYW5k X2NoZWNrX2RlY2xfc3BlY19sb2MgKGNwX2RlY2xfc3BlY2lmaWVyX3NlcSAqZGVjbF9zcGVjcywK IAkgICAgImNvbnN0ZXhwciIsCiAJICAgICJfX2NvbXBsZXgiLAogCSAgICAiY29uc3Rpbml0IiwK LQkgICAgImNvbnN0ZXZhbCIKKwkgICAgImNvbnN0ZXZhbCIsCisJICAgICJ0aGlzIgogCSAgfTsK IAkgIGdjY19yaWNoX2xvY2F0aW9uIHJpY2hsb2MgKGxvY2F0aW9uKTsKIAkgIHJpY2hsb2MuYWRk X2ZpeGl0X3JlbW92ZSAoKTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iamVjdC1wYXJhbTEuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iamVjdC1wYXJhbTEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMTM0MTgyYzc3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW0xLkMKQEAgLTAsMCArMSwxMTQgQEAKKy8vIFAw ODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gYmFzaWMg dXNlIGNhc2VzIGFuZCBjYWxsaW5nCisKKy8vIG5vbi10cmFpbGluZyByZXR1cm4KKy8vIGRlZmlu aXRpb25zCitzdHJ1Y3QgUzAgeworICB2b2lkIGYwKHRoaXMgUzApIHt9CisgIHZvaWQgZjEodGhp cyBTMCYpIHt9CisgIHZvaWQgZjIodGhpcyBTMCYmKSB7fQorICB2b2lkIGYzKHRoaXMgUzAgY29u c3QmKSB7fQorICB2b2lkIGY0KHRoaXMgUzAgY29uc3QmJikge30KKyAgdGVtcGxhdGU8dHlwZW5h bWUgU2VsZj4KKyAgdm9pZCBkMCh0aGlzIFNlbGYmJikge30KKyAgdm9pZCBkMSh0aGlzIGF1dG8m Jikge30KK307CisvLyBkZWNsYXJhdGlvbnMKK3N0cnVjdCBTMSB7CisgIHZvaWQgZjAodGhpcyBT MSk7CisgIHZvaWQgZjEodGhpcyBTMSYpOworICB2b2lkIGYyKHRoaXMgUzEmJik7CisgIHZvaWQg ZjModGhpcyBTMSBjb25zdCYpOworICB2b2lkIGY0KHRoaXMgUzEgY29uc3QmJik7CisgIHRlbXBs YXRlPHR5cGVuYW1lIFNlbGY+CisgIHZvaWQgZDAodGhpcyBTZWxmJiYpOworICB2b2lkIGQxKHRo aXMgYXV0byYmKTsKK307CisvLyBvdXQgb2YgbGluZSBkZWZpbml0aW9ucwordm9pZCBTMTo6ZjAo dGhpcyBTMSkge30KK3ZvaWQgUzE6OmYxKHRoaXMgUzEmKSB7fQordm9pZCBTMTo6ZjIodGhpcyBT MSYmKSB7fQordm9pZCBTMTo6ZjModGhpcyBTMSBjb25zdCYpIHt9Cit2b2lkIFMxOjpmNCh0aGlz IFMxIGNvbnN0JiYpIHt9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgordm9pZCBTMTo6ZDAodGhp cyBTZWxmJiYpIHt9Cit2b2lkIFMxOjpkMSh0aGlzIGF1dG8mJikge30KKworLy8gdHJhaWxpbmcg cmV0dXJuCisvLyBkZWZpbml0aW9ucworc3RydWN0IFMyIHsKKyAgYXV0byBmMCh0aGlzIFMyKSAt PiB2b2lkIHt9CisgIGF1dG8gZjEodGhpcyBTMiYpIC0+IHZvaWQge30KKyAgYXV0byBmMih0aGlz IFMyJiYpIC0+IHZvaWQge30KKyAgYXV0byBmMyh0aGlzIFMyIGNvbnN0JikgLT4gdm9pZCB7fQor ICBhdXRvIGY0KHRoaXMgUzIgY29uc3QmJikgLT4gdm9pZCB7fQorICB0ZW1wbGF0ZTx0eXBlbmFt ZSBTZWxmPgorICBhdXRvIGQwKHRoaXMgU2VsZiYmKSAtPiB2b2lkIHt9CisKKyAgYXV0byBkMSh0 aGlzIGF1dG8mJikgLT4gdm9pZCB7fQorfTsKKy8vIGRlY2xhcmF0aW9ucworc3RydWN0IFMzIHsK KyAgYXV0byBmMCh0aGlzIFMzKSAtPiB2b2lkOworICBhdXRvIGYxKHRoaXMgUzMmKSAtPiB2b2lk OworICBhdXRvIGYyKHRoaXMgUzMmJikgLT4gdm9pZDsKKyAgYXV0byBmMyh0aGlzIFMzIGNvbnN0 JikgLT4gdm9pZDsKKyAgYXV0byBmNCh0aGlzIFMzIGNvbnN0JiYpIC0+IHZvaWQ7CisgIHRlbXBs YXRlPHR5cGVuYW1lIFNlbGY+CisgIGF1dG8gZDAodGhpcyBTZWxmJiYpIC0+IHZvaWQ7CisgIGF1 dG8gZDEodGhpcyBhdXRvJiYpIC0+IHZvaWQ7Cit9OworLy8gb3V0IG9mIGxpbmUgZGVmaW5pdGlv bnMKK2F1dG8gUzM6OmYwKHRoaXMgUzMpIC0+IHZvaWQge30KK2F1dG8gUzM6OmYxKHRoaXMgUzMm KSAtPiB2b2lkIHt9CithdXRvIFMzOjpmMih0aGlzIFMzJiYpIC0+IHZvaWQge30KK2F1dG8gUzM6 OmYzKHRoaXMgUzMgY29uc3QmKSAtPiB2b2lkIHt9CithdXRvIFMzOjpmNCh0aGlzIFMzIGNvbnN0 JiYpIC0+IHZvaWQge30KK3RlbXBsYXRlPHR5cGVuYW1lIFNlbGY+CithdXRvIFMzOjpkMCh0aGlz IFNlbGYmJikgLT4gdm9pZCB7fQorYXV0byBTMzo6ZDEodGhpcyBhdXRvJiYpIC0+IHZvaWQge30K KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgY2FsbF93aXRoX3F1YWxpZmljYXRpb24oKQor eworICBUIG9iant9OworICAvLyBieSB2YWx1ZSBzaG91bGQgdGFrZSBhbnkgcXVhbGlmaWNhdGlv biAoZjApCisgIFR7fS5mMCgpOworICBvYmouZjAoKTsKKyAgc3RhdGljX2Nhc3Q8VCYmPihvYmop LmYwKCk7IAorICBzdGF0aWNfY2FzdDxUIGNvbnN0Jj4ob2JqKS5mMCgpOworICBzdGF0aWNfY2Fz dDxUIGNvbnN0JiY+KG9iaikuZjAoKTsKKyAgLy8gc3BlY2lmaWMgcXVhbGlmaWNhdGlvbiAoZjEg LSBmNCkKKyAgVHt9LmYyKCk7CisgIFR7fS5mMygpOworICBUe30uZjQoKTsKKyAgb2JqLmYxKCk7 CisgIG9iai5mMygpOworICBzdGF0aWNfY2FzdDxUJiY+KG9iaikuZjIoKTsKKyAgc3RhdGljX2Nh c3Q8VCYmPihvYmopLmYzKCk7CisgIHN0YXRpY19jYXN0PFQmJj4ob2JqKS5mNCgpOworICBzdGF0 aWNfY2FzdDxUIGNvbnN0Jj4ob2JqKS5mMygpOworICBzdGF0aWNfY2FzdDxUIGNvbnN0JiY+KG9i aikuZjQoKTsKKyAgLy8gZGVkdWNlZCBzaG91bGQgKG9idmlvdXNseSkgdGFrZSBhbnkgcXVhbGlm aWNhdGlvbiAoZDAsIGQxKQorICBUe30uZDAoKTsKKyAgb2JqLmQwKCk7CisgIHN0YXRpY19jYXN0 PFQmJj4ob2JqKS5kMCgpOworICBzdGF0aWNfY2FzdDxUIGNvbnN0Jj4ob2JqKS5kMCgpOworICBz dGF0aWNfY2FzdDxUIGNvbnN0JiY+KG9iaikuZDAoKTsKKyAgVHt9LmQxKCk7CisgIG9iai5kMSgp OworICBzdGF0aWNfY2FzdDxUJiY+KG9iaikuZDEoKTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCY+ KG9iaikuZDEoKTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCYmPihvYmopLmQxKCk7Cit9CisKK3Zv aWQgcGVyZm9ybV9jYWxscygpCit7CisgIGNhbGxfd2l0aF9xdWFsaWZpY2F0aW9uPFMwPigpOwor ICBjYWxsX3dpdGhfcXVhbGlmaWNhdGlvbjxTMT4oKTsKKyAgY2FsbF93aXRoX3F1YWxpZmljYXRp b248UzI+KCk7CisgIGNhbGxfd2l0aF9xdWFsaWZpY2F0aW9uPFMzPigpOworfQorCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW0yLkMg Yi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW0yLkMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEzMTY0YzI1MzdjCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBh cmFtMi5DCkBAIC0wLDAgKzEsMjggQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gcnVuIHsgdGFy Z2V0IGMrKzIzIH0gfQorCisvLyBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIHBvaW50 ZXIgdHlwZSBkZWR1Y3Rpb24sCisvLyBjb252ZXJzaW9uIHRvIGZ1bmN0aW9uIHBvaW50ZXIsIGFu ZAorLy8gY2FsbGluZyB0aHJvdWdoIHBvaW50ZXIgdG8gZnVuY3Rpb24KKworc3RydWN0IFMgewor ICBpbnQgX247CisgIGludCBmKHRoaXMgUyYgc2VsZikgeyByZXR1cm4gc2VsZi5fbjsgfQorfTsK KwordXNpbmcgZl90eXBlID0gaW50KCopKFMmKTsKKworc3RhdGljX2Fzc2VydCAoX19pc19zYW1l IChmX3R5cGUsIGRlY2x0eXBlICgmUzo6ZikpKTsKKworaW50IG1haW4oKQoreworICBhdXRvIGZw MCA9ICZTOjpmOworICBmX3R5cGUgZnAxID0gJlM6OmY7CisgIHN0YXRpY19hc3NlcnQgKF9faXNf c2FtZSAoZGVjbHR5cGUgKGZwMCksIGRlY2x0eXBlIChmcDEpKSk7CisgIFMgc3s0Mn07CisgIGlm IChmcDAgKHMpICE9IDQyKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKGZwMSAocykg IT0gNDIpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW0zLkMgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW0zLkMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZhOTJlNGNkNDQwCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMy5DCkBAIC0w LDAgKzEsMTUgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysy MyB9IH0KKworLy8gcmVjdXJzaXZlIGxhbWJkYXMKKworLy8geyBkZy1leGNlc3MtZXJyb3JzICJk ZWR1Y2luZyB0aGlzIHdpdGggbGFtYmRhcyBub3QgaW1wbGVtZW50ZWQgeWV0IiB7IHhmYWlsICot Ki0qIH0gfQorCitpbnQgbWFpbigpCit7CisgIGF1dG8gY2wwID0gW10odGhpcyBhdXRvJiYgc2Vs ZiwgaW50IG4peyByZXR1cm4gbiA/IHNlbGYobiAtIDEpIDogNDIgfTsKKyAgYXV0byBjbDEgPSBb XSh0aGlzIGF1dG8gc2VsZiwgaW50IG4peyByZXR1cm4gbiA/IHNlbGYobiAtIDEpIDogNDJ9Owor ICBpbnQgYSA9IGNsMCg1KTsKKyAgaW50IGIgPSBjbDEoNSk7Cit9CisKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iamVjdC1wYXJhbTQuQyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iamVjdC1wYXJhbTQuQwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzQ2ZjZkOTliOTQKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW00LkMK QEAgLTAsMCArMSwzMyBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBydW4geyB0YXJnZXQgYysr MjMgfSB9CisKKy8vIHRlc3QgaW1wbGljaXQgY29udmVyc2lvbiBvZiB0aGUgb2JqZWN0IGFyZ3Vt ZW50CisvLyB0byB0aGUgZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlcgorCisvLyB3ZSBjb21wYXJl ICZzIHRvIHJldCBiZWNhdXNlIGVhcmx5IG9uLCB0aGUKKy8vIG9iamVjdCBwYXJhbWV0ZXIgd291 bGQgbm90IGNvbnZlcnQsIGl0IHdvdWxkIGp1c3QgZ2V0CisvLyByZWludGVycHJldGVkIGFzIHRo ZSB0eXBlIG9mIHRoZSBleHBsaWNpdCBvYmplY3QgcGFyYW0KKworLy8geyBkZy14ZmFpbC1ydW4t aWYgInVzZXIgZGVmaW5lZCBjb252ZXJzaW9ucyBmcm9tIGFuIGltcGxpY2l0IG9iamVjdCBhcmd1 bWVudCB0byBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGFyZSBub3Qgc3VwcG9ydGVkIHll dCIgeyAqLSotKiB9IH0KKwordXNpbmcgdWludHB0cl90ID0gX19VSU5UUFRSX1RZUEVfXzsKKwor c3RydWN0IFMgeworICAgIG9wZXJhdG9yIHVpbnRwdHJfdCgpIGNvbnN0IHsKKwlyZXR1cm4gNDI7 CisgICAgfQorICAgIHVpbnRwdHJfdCBmKHRoaXMgdWludHB0cl90IG4pIHsKKyAgICAgICAgcmV0 dXJuIG47CisgICAgfQorfTsKKworaW50IG1haW4oKSAKK3sKKyAgUyBze307CisgIHVpbnRwdHJf dCByZXQgPSBzLmYoKTsKKyAgaWYgKHJldCA9PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o JnMpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYgKHJldCAhPSA0MikKKyAgICBfX2J1 aWx0aW5fYWJvcnQgKCk7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90cmVlLWNvcmUuaCBiL2djYy90 cmVlLWNvcmUuaAppbmRleCA5MTU1MWZkZTkwMC4uMzM2MDY0ZmIyNzAgMTAwNjQ0Ci0tLSBhL2dj Yy90cmVlLWNvcmUuaAorKysgYi9nY2MvdHJlZS1jb3JlLmgKQEAgLTE4MDgsNyArMTgwOCw4IEBA IHN0cnVjdCBHVFkoKCkpIHRyZWVfZGVjbF9jb21tb24gewogICAgICBERUNMX0hBU19WQUxVRV9F WFBSX1AuICAqLwogICB1bnNpZ25lZCBkZWNsX2ZsYWdfMiA6IDE7CiAgIC8qIEluIEZJRUxEX0RF Q0wsIHRoaXMgaXMgREVDTF9QQURESU5HX1AuCi0gICAgIEluIFZBUl9ERUNMLCB0aGlzIGlzIERF Q0xfTUVSR0VBQkxFLiAgKi8KKyAgICAgSW4gVkFSX0RFQ0wsIHRoaXMgaXMgREVDTF9NRVJHRUFC TEUuCisgICAgIEluIFBBUk1fREVDTCwgdGhpcyBpcyBERUNMX1hPQkpfUEFSTS4gICovCiAgIHVu c2lnbmVkIGRlY2xfZmxhZ18zIDogMTsKICAgLyogTG9naWNhbGx5LCB0aGVzZSB0d28gd291bGQg Z28gaW4gYSB0aGVvcmV0aWNhbCBiYXNlIHNoYXJlZCBieSB2YXIgYW5kCiAgICAgIHBhcm0gZGVj bC4gKi8KLS0gCjIuNDIuMAoK --b1_VISixzjtYMPEX0U1SXlYMAuOfED6NAa1hJGvQ--