From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 118241 invoked by alias); 6 Oct 2016 21:26:56 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 118228 invoked by uid 89); 6 Oct 2016 21:26:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,MISSING_HEADERS,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM autolearn=no version=3.3.2 spammy=behave, @opindex, noexcept, opindex X-HELO: mail-oi0-f54.google.com Received: from mail-oi0-f54.google.com (HELO mail-oi0-f54.google.com) (209.85.218.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 06 Oct 2016 21:26:53 +0000 Received: by mail-oi0-f54.google.com with SMTP id n132so36833156oih.1 for ; Thu, 06 Oct 2016 14:26:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:cc; bh=gqkRL+vsXccsG+628LZTFHMHfnKKvWyTaCuWcXP0r0M=; b=bwtGMaC4S4pb46qEEy4yiDj+ORh4yZs5ZsDFYKpZueO7kixwRt/KiK7NbV58goWzFQ RoKNv5T5kSSa2X2DWokifsGjdnb2NTCUxN19elutAmGW1NyJM/Kg58RqlJcjcjT6Rz9r jElpfmJUNQxLrKDWA4JqrberAI8fHfyipzAnIH3seEq3EdATOzmTgbnZmz2s58xgbLbK GaxZ08HIcQ4aJlzDoyDxC5UcBa8zPJPccURayvhBRYd7VbpMshDxZSAkLqAkS4uf5qSR gafsHzjNQNrzm+bmCuLixKEHa5bQt35ykbgx5Y3dPZZKQbTWy3MaIGWFTmd4DzWcFDdn Y8wg== X-Gm-Message-State: AA6/9Rm2lPemLSr8i/Qp6RBSoERjkw20p4SFvXOrG2GBQxvAN4ZKjSC2NB8hIVRYTxUVxuaLwsnf2l0jgIrVN8Ok X-Received: by 10.157.17.5 with SMTP id g5mt10579756ote.42.1475789211871; Thu, 06 Oct 2016 14:26:51 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.105.167 with HTTP; Thu, 6 Oct 2016 14:26:31 -0700 (PDT) In-Reply-To: References: <68323906-2179-82c7-98f9-0fd2ddb40ab5@redhat.com> From: Jason Merrill Date: Thu, 06 Oct 2016 21:26:00 -0000 Message-ID: Subject: Re: C++ PATCH for P0135, C++17 guaranteed copy elision Cc: gcc-patches List , Ville Voutilainen Content-Type: multipart/mixed; boundary=001a1145009ebfc3f0053e38f3ad X-IsSubscribed: yes X-SW-Source: 2016-10/txt/msg00421.txt.bz2 --001a1145009ebfc3f0053e38f3ad Content-Type: text/plain; charset=UTF-8 Content-length: 42 Here's an update that handles more cases. --001a1145009ebfc3f0053e38f3ad Content-Type: text/plain; charset=US-ASCII; name="elision2.diff" Content-Disposition: attachment; filename="elision2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ityuqhdp1 Content-length: 23563 Y29tbWl0IDcyNjQ0N2EyMTBjZjkyYTg1ZThmOWQwMTRiODVkOTU4YTBhZjYy YjUKQXV0aG9yOiBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpE YXRlOiAgIFdlZCBPY3QgNSAxOTozMTowOSAyMDE2IC0wNDAwCgogICAgICAg ICAgICBDKysxNyBjb3B5IGVsaXNpb24gaW1wcm92ZW1lbnRzLgogICAgCiAg ICAgICAgICAgICogY2FsbC5jIChidWlsZF90ZW1wLCBjb252ZXJ0X2xpa2Vf cmVhbCk6IERvbid0IHJlLWNvcHkKICAgICAgICAgICAgVEFSR0VUX0VYUFIu ICBIYW5kbGUgcGFja2VkIGZpZWxkcy4KICAgICAgICAgICAgKGJ1aWxkX3hf dmFfYXJnKTogV3JhcCBpdCBpbiBhIFRBUkdFVF9FWFBSLgogICAgICAgICAg ICAoYnVpbGRfb3Zlcl9jYWxsKTogQWRkIHNhbml0eSBjaGVjay4KICAgICAg ICAgICAgKiBjdnQuYyAoZWFybHlfZWxpZGVfY29weSk6IE5ldy4KICAgICAg ICAgICAgKG9jcF9jb252ZXJ0KTogVXNlIGl0LgogICAgICAgICAgICAqIGV4 Y2VwdC5jIChidWlsZF90aHJvdyk6IFVzZSBpdC4KICAgICAgICAgICAgKiBp bml0LmMgKGdldF9uc2RtaSk6IFB1dCBiYWNrIHRoZSBUQVJHRVRfRVhQUi4K ICAgICAgICAgICAgKGV4cGFuZF9kZWZhdWx0X2luaXQpOiBDYWxsIGVhcmx5 X2VsaWRlX2NvcHkuCiAgICAgICAgICAgICogdHlwZWNrLmMgKGNwX2J1aWxk X21vZGlmeV9leHByKTogQ2FsbCBlYXJseV9lbGlkZV9jb3B5LgoKZGlmZiAt LWdpdCBhL2djYy9jcC9jYWxsLmMgYi9nY2MvY3AvY2FsbC5jCmluZGV4IGRh YzEzMzcuLjZmZWFmN2UgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jYWxsLmMKKysr IGIvZ2NjL2NwL2NhbGwuYwpAQCAtNjM2NSw2ICs2MzY1LDIyIEBAIGJ1aWxk X3RlbXAgKHRyZWUgZXhwciwgdHJlZSB0eXBlLCBpbnQgZmxhZ3MsCiAgIGlu dCBzYXZldywgc2F2ZWU7CiAgIHZlYzx0cmVlLCB2YV9nYz4gKmFyZ3M7CiAK KyAgKmRpYWdub3N0aWNfa2luZCA9IERLX1VOU1BFQ0lGSUVEOworCisgIGlm IChUUkVFX0NPREUgKGV4cHIpID09IENPTlNUUlVDVE9SKQorICAgIGV4cHIg PSBnZXRfdGFyZ2V0X2V4cHJfc2ZpbmFlIChleHByLCBjb21wbGFpbik7Cisg IGlmIChlYXJseV9lbGlkZV9jb3B5ICh0eXBlLCBleHByKSkKKyAgICByZXR1 cm4gZXhwcjsKKworICAvKiBJZiB0aGUgc291cmNlIGlzIGEgcGFja2VkIGZp ZWxkLCBjYWxsaW5nIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHdpbGwgcmVxdWly ZQorICAgICBiaW5kaW5nIHRoZSBmaWVsZCB0byB0aGUgcmVmZXJlbmNlIHBh cmFtZXRlciB0byB0aGUgY29weSBjb25zdHJ1Y3RvciwgYW5kCisgICAgIHdl J2xsIGVuZCB1cCB3aXRoIGFuIGluZmluaXRlIGxvb3AuICBJZiB3ZSBjYW4g dXNlIGEgYml0d2lzZSBjb3B5LCB0aGVuCisgICAgIGRvIHRoYXQgbm93LiAg Ki8KKyAgaWYgKChsdmFsdWVfa2luZCAoZXhwcikgJiBjbGtfcGFja2VkKQor ICAgICAgJiYgQ0xBU1NfVFlQRV9QIChUUkVFX1RZUEUgKGV4cHIpKQorICAg ICAgJiYgIXR5cGVfaGFzX25vbnRyaXZpYWxfY29weV9pbml0IChUUkVFX1RZ UEUgKGV4cHIpKSkKKyAgICByZXR1cm4gZ2V0X3RhcmdldF9leHByX3NmaW5h ZSAoZXhwciwgY29tcGxhaW4pOworCiAgIHNhdmV3ID0gd2FybmluZ2NvdW50 ICsgd2Vycm9yY291bnQsIHNhdmVlID0gZXJyb3Jjb3VudDsKICAgYXJncyA9 IG1ha2VfdHJlZV92ZWN0b3Jfc2luZ2xlIChleHByKTsKICAgZXhwciA9IGJ1 aWxkX3NwZWNpYWxfbWVtYmVyX2NhbGwgKE5VTExfVFJFRSwgY29tcGxldGVf Y3Rvcl9pZGVudGlmaWVyLApAQCAtNjM3NCw4ICs2MzkwLDYgQEAgYnVpbGRf dGVtcCAodHJlZSBleHByLCB0cmVlIHR5cGUsIGludCBmbGFncywKICAgICAq ZGlhZ25vc3RpY19raW5kID0gREtfV0FSTklORzsKICAgZWxzZSBpZiAoZXJy b3Jjb3VudCA+IHNhdmVlKQogICAgICpkaWFnbm9zdGljX2tpbmQgPSBES19F UlJPUjsKLSAgZWxzZQotICAgICpkaWFnbm9zdGljX2tpbmQgPSBES19VTlNQ RUNJRklFRDsKICAgcmV0dXJuIGV4cHI7CiB9CiAKQEAgLTY3NzgsMTAgKzY3 OTIsNiBAQCBjb252ZXJ0X2xpa2VfcmVhbCAoY29udmVyc2lvbiAqY29udnMs IHRyZWUgZXhwciwgdHJlZSBmbiwgaW50IGFyZ251bSwKIAlmbGFncyB8PSBM T09LVVBfT05MWUNPTlZFUlRJTkc7CiAgICAgICBpZiAoY29udnMtPnJ2YWx1 ZWRuZXNzX21hdGNoZXNfcCkKIAlmbGFncyB8PSBMT09LVVBfUFJFRkVSX1JW QUxVRTsKLSAgICAgIGlmIChUUkVFX0NPREUgKGV4cHIpID09IFRBUkdFVF9F WFBSCi0JICAmJiBUQVJHRVRfRVhQUl9MSVNUX0lOSVRfUCAoZXhwcikpCi0J LyogQ29weS1saXN0LWluaXRpYWxpemF0aW9uIGRvZXNuJ3QgYWN0dWFsbHkg aW52b2x2ZSBhIGNvcHkuICAqLwotCXJldHVybiBleHByOwogICAgICAgZXhw ciA9IGJ1aWxkX3RlbXAgKGV4cHIsIHRvdHlwZSwgZmxhZ3MsICZkaWFnX2tp bmQsIGNvbXBsYWluKTsKICAgICAgIGlmIChkaWFnX2tpbmQgJiYgY29tcGxh aW4pCiAJewpAQCAtNzA2OCw3ICs3MDc4LDEyIEBAIGJ1aWxkX3hfdmFfYXJn IChzb3VyY2VfbG9jYXRpb24gbG9jLCB0cmVlIGV4cHIsIHRyZWUgdHlwZSkK ICAgICAgIHJldHVybiBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlIChleHByKTsK ICAgICB9CiAKLSAgcmV0dXJuIGJ1aWxkX3ZhX2FyZyAobG9jLCBleHByLCB0 eXBlKTsKKyAgdHJlZSByZXQgPSBidWlsZF92YV9hcmcgKGxvYywgZXhwciwg dHlwZSk7CisgIGlmIChDTEFTU19UWVBFX1AgKHR5cGUpKQorICAgIC8qIFdy YXAgdGhlIFZBX0FSR19FWFBSIGluIGEgVEFSR0VUX0VYUFIgbm93IHNvIG90 aGVyIGNvZGUgZG9lc24ndCBuZWVkIHRvCisgICAgICAga25vdyBob3cgdG8g aGFuZGxlIGl0LiAgKi8KKyAgICByZXQgPSBnZXRfdGFyZ2V0X2V4cHIgKHJl dCk7CisgIHJldHVybiByZXQ7CiB9CiAKIC8qIFRZUEUgaGFzIGJlZW4gZ2l2 ZW4gdG8gdmFfYXJnLiAgQXBwbHkgdGhlIGRlZmF1bHQgY29udmVyc2lvbnMg d2hpY2gKQEAgLTc4MDYsNiArNzgyMSwxNSBAQCBidWlsZF9vdmVyX2NhbGwg KHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZCwgaW50IGZsYWdzLCB0c3Vic3Rf ZmxhZ3NfdCBjb21wbGFpbikKICAgICAgIGVsc2UKIAlhcmcgPSBjcF9idWls ZF9pbmRpcmVjdF9yZWYgKGFyZywgUk9fTlVMTCwgY29tcGxhaW4pOwogCisg ICAgICAvKiBJbiBDKysxNyB3ZSBzaG91bGRuJ3QgYmUgY29weWluZyBhIFRB UkdFVF9FWFBSIGV4Y2VwdCBpbnRvIGEgYmFzZQorCSBzdWJvYmplY3QuICAq LworICAgICAgaWYgKENIRUNLSU5HX1AgJiYgY3h4X2RpYWxlY3QgPj0gY3h4 MXopCisJZ2NjX2Fzc2VydCAoVFJFRV9DT0RFIChhcmcpICE9IFRBUkdFVF9F WFBSCisJCSAgICAvLyBGSVhNRSB3ZSBzaG91bGRuJ3QgY29weSBmb3IgZGly ZWN0LWluaXQgZWl0aGVyCisJCSAgICB8fCAhKGZsYWdzICYgTE9PS1VQX09O TFlDT05WRVJUSU5HKQorCQkgICAgLyogU2VlIHVuc2FmZV9jb3B5X2VsaXNp b25fcC4gICovCisJCSAgICB8fCBERUNMX0JBU0VfQ09OU1RSVUNUT1JfUCAo Zm4pKTsKKwogICAgICAgLyogW2NsYXNzLmNvcHldOiB0aGUgY29weSBjb25z dHJ1Y3RvciBpcyBpbXBsaWNpdGx5IGRlZmluZWQgZXZlbiBpZgogCSB0aGUg aW1wbGVtZW50YXRpb24gZWxpZGVkIGl0cyB1c2UuICAqLwogICAgICAgaWYg KCF0cml2aWFsIHx8IERFQ0xfREVMRVRFRF9GTiAoZm4pKQpkaWZmIC0tZ2l0 IGEvZ2NjL2NwL2NwLXRyZWUuaCBiL2djYy9jcC9jcC10cmVlLmgKaW5kZXgg NDljYmRmMi4uOTI4MmJiZSAxMDA2NDQKLS0tIGEvZ2NjL2NwL2NwLXRyZWUu aAorKysgYi9nY2MvY3AvY3AtdHJlZS5oCkBAIC01NjkyLDYgKzU2OTIsNyBA QCBleHRlcm4gdHJlZSBjb252ZXJ0X3RvX3JlZmVyZW5jZQkJKHRyZWUsIHRy ZWUsIGludCwgaW50LCB0cmVlLAogCQkJCQkJIHRzdWJzdF9mbGFnc190KTsK IGV4dGVybiB0cmVlIGNvbnZlcnRfZnJvbV9yZWZlcmVuY2UJCSh0cmVlKTsK IGV4dGVybiB0cmVlIGZvcmNlX3J2YWx1ZQkJCSh0cmVlLCB0c3Vic3RfZmxh Z3NfdCk7CitleHRlcm4gYm9vbCBlYXJseV9lbGlkZV9jb3B5CQkJKHRyZWUs IHRyZWUpOwogZXh0ZXJuIHRyZWUgb2NwX2NvbnZlcnQJCQkJKHRyZWUsIHRy ZWUsIGludCwgaW50LAogCQkJCQkJIHRzdWJzdF9mbGFnc190KTsKIGV4dGVy biB0cmVlIGNwX2NvbnZlcnQJCQkJKHRyZWUsIHRyZWUsIHRzdWJzdF9mbGFn c190KTsKZGlmZiAtLWdpdCBhL2djYy9jcC9jdnQuYyBiL2djYy9jcC9jdnQu YwppbmRleCBlY2M4ZWY4Li4wNjM0NTdmIDEwMDY0NAotLS0gYS9nY2MvY3Av Y3Z0LmMKKysrIGIvZ2NjL2NwL2N2dC5jCkBAIC02NTgsNiArNjU4LDI3IEBA IGNwX2NvbnZlcnRfYW5kX2NoZWNrICh0cmVlIHR5cGUsIHRyZWUgZXhwciwg dHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAgIHJldHVybiByZXN1bHQ7CiB9 CiAKKy8qIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXZvaWQgZXZlbiBk b2luZyBvdmVybG9hZCByZXNvbHV0aW9uIGZvciBjb3B5aW5nCisgICBFWFBS IHRvIGluaXRpYWxpemUgYSBUWVBFLiAgKi8KKworYm9vbAorZWFybHlfZWxp ZGVfY29weSAodHJlZSB0eXBlLCB0cmVlIGV4cHIpCit7CisgIGlmIChUUkVF X0NPREUgKGV4cHIpICE9IFRBUkdFVF9FWFBSKQorICAgIHJldHVybiBmYWxz ZTsKKyAgLyogTGlzdC1pbml0aWFsaXphdGlvbiBhbmQgZGlyZWN0LWluaXRp YWxpemF0aW9uIGRvbid0IGludm9sdmUgYSBjb3B5LiAgKi8KKyAgaWYgKFRB UkdFVF9FWFBSX0xJU1RfSU5JVF9QIChleHByKQorICAgICAgfHwgVEFSR0VU X0VYUFJfRElSRUNUX0lOSVRfUCAoZXhwcikpCisgICAgcmV0dXJuIHRydWU7 CisgIC8qIEluIEMrKzE3LCAiSWYgdGhlIGluaXRpYWxpemVyIGV4cHJlc3Np b24gaXMgYSBwcnZhbHVlIGFuZCB0aGUKKyAgICAgY3YtdW5xdWFsaWZpZWQg dmVyc2lvbiBvZiB0aGUgc291cmNlIHR5cGUgaXMgdGhlIHNhbWUgY2xhc3Mg YXMgdGhlIGNsYXNzCisgICAgIG9mIHRoZSBkZXN0aW5hdGlvbiwgdGhlIGlu aXRpYWxpemVyIGV4cHJlc3Npb24gaXMgdXNlZCB0byBpbml0aWFsaXplIHRo ZQorICAgICBkZXN0aW5hdGlvbiBvYmplY3QuIiAgKi8KKyAgcmV0dXJuIChj eHhfZGlhbGVjdCA+PSBjeHgxegorCSAgJiYgKHNhbWVfdHlwZV9pZ25vcmlu Z190b3BfbGV2ZWxfcXVhbGlmaWVyc19wCisJICAgICAgKHR5cGUsIFRSRUVf VFlQRSAoZXhwcikpKSk7Cit9CisKIC8qIENvbnZlcnNpb24uLi4KIAogICAg RkxBR1MgaW5kaWNhdGVzIGhvdyB3ZSBzaG91bGQgYmVoYXZlLiAgKi8KQEAg LTY5NCwxMCArNzE1LDggQEAgb2NwX2NvbnZlcnQgKHRyZWUgdHlwZSwgdHJl ZSBleHByLCBpbnQgY29udnR5cGUsIGludCBmbGFncywKICAgICByZXR1cm4g ZXJyb3JfbWFya19ub2RlOwogCiAgIGlmIChNQVlCRV9DTEFTU19UWVBFX1Ag KHR5cGUpICYmIChjb252dHlwZSAmIENPTlZfRk9SQ0VfVEVNUCkKLSAgICAg ICYmICEoY3h4X2RpYWxlY3QgPj0gY3h4MXoKLQkgICAmJiBUUkVFX0NPREUg KGUpID09IFRBUkdFVF9FWFBSKSkKLSAgICAvKiBXZSBuZWVkIGEgbmV3IHRl bXBvcmFyeTsgZG9uJ3QgdGFrZSB0aGlzIHNob3J0Y3V0LiAgQnV0IGluIEMr KzE3LCBkb24ndAotICAgICAgIGZvcmNlIGEgdGVtcG9yYXJ5IGlmIHdlIGFs cmVhZHkgaGF2ZSBvbmUuICAqLzsKKyAgICAgICYmICFlYXJseV9lbGlkZV9j b3B5ICh0eXBlLCBlKSkKKyAgICAvKiBXZSBuZWVkIGEgbmV3IHRlbXBvcmFy eTsgZG9uJ3QgdGFrZSB0aGlzIHNob3J0Y3V0LiAgKi87CiAgIGVsc2UgaWYg KHNhbWVfdHlwZV9pZ25vcmluZ190b3BfbGV2ZWxfcXVhbGlmaWVyc19wICh0 eXBlLCBUUkVFX1RZUEUgKGUpKSkKICAgICB7CiAgICAgICBpZiAoc2FtZV90 eXBlX3AgKHR5cGUsIFRSRUVfVFlQRSAoZSkpKQpkaWZmIC0tZ2l0IGEvZ2Nj L2NwL2V4Y2VwdC5jIGIvZ2NjL2NwL2V4Y2VwdC5jCmluZGV4IDFjNjBiMDgu LjJmODgwODIgMTAwNjQ0Ci0tLSBhL2djYy9jcC9leGNlcHQuYworKysgYi9n Y2MvY3AvZXhjZXB0LmMKQEAgLTY4Myw3ICs2ODMsNyBAQCBidWlsZF90aHJv dyAodHJlZSBleHApCiAgICAgICBvYmplY3QgPSBjcF9idWlsZF9pbmRpcmVj dF9yZWYgKG9iamVjdCwgUk9fTlVMTCwgdGZfd2FybmluZ19vcl9lcnJvcik7 CiAKICAgICAgIC8qIEFuZCBpbml0aWFsaXplIHRoZSBleGNlcHRpb24gb2Jq ZWN0LiAgKi8KLSAgICAgIGlmIChDTEFTU19UWVBFX1AgKHRlbXBfdHlwZSkp CisgICAgICBpZiAoQ0xBU1NfVFlQRV9QICh0ZW1wX3R5cGUpICYmICFlYXJs eV9lbGlkZV9jb3B5ICh0ZW1wX3R5cGUsIGV4cCkpCiAJewogCSAgaW50IGZs YWdzID0gTE9PS1VQX05PUk1BTCB8IExPT0tVUF9PTkxZQ09OVkVSVElORzsK IAkgIHZlYzx0cmVlLCB2YV9nYz4gKmV4cF92ZWM7CmRpZmYgLS1naXQgYS9n Y2MvY3AvaW5pdC5jIGIvZ2NjL2NwL2luaXQuYwppbmRleCBkMWM4Mjc0Li42 M2MzZGFiIDEwMDY0NAotLS0gYS9nY2MvY3AvaW5pdC5jCisrKyBiL2djYy9j cC9pbml0LmMKQEAgLTU4NCw5ICs1ODQsMTMgQEAgZ2V0X25zZG1pICh0cmVl IG1lbWJlciwgYm9vbCBpbl9jdG9yKQogCX0KICAgICAgIC8qIFN0cmlwIHJl ZHVuZGFudCBUQVJHRVRfRVhQUiBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlbWFw IGl0LCBhbmQKIAkgc28gdGhlIGFnZ3JlZ2F0ZSBpbml0IGNvZGUgYmVsb3cg d2lsbCBzZWUgYSBDT05TVFJVQ1RPUi4gICovCi0gICAgICBpZiAoaW5pdCAm JiBTSU1QTEVfVEFSR0VUX0VYUFJfUCAoaW5pdCkpCisgICAgICBib29sIHNp bXBsZV90YXJnZXQgPSAoaW5pdCAmJiBTSU1QTEVfVEFSR0VUX0VYUFJfUCAo aW5pdCkpOworICAgICAgaWYgKHNpbXBsZV90YXJnZXQpCiAJaW5pdCA9IFRB UkdFVF9FWFBSX0lOSVRJQUwgKGluaXQpOwogICAgICAgaW5pdCA9IGJyZWFr X291dF90YXJnZXRfZXhwcnMgKGluaXQpOworICAgICAgaWYgKHNpbXBsZV90 YXJnZXQgJiYgVFJFRV9DT0RFIChpbml0KSAhPSBDT05TVFJVQ1RPUikKKwkv KiBOb3cgcHV0IGl0IGJhY2sgc28gQysrMTcgY29weSBlbGlzaW9uIHdvcmtz LiAgKi8KKwlpbml0ID0gZ2V0X3RhcmdldF9leHByIChpbml0KTsKICAgICB9 CiAgIGN1cnJlbnRfY2xhc3NfcHRyID0gc2F2ZV9jY3A7CiAgIGN1cnJlbnRf Y2xhc3NfcmVmID0gc2F2ZV9jY3I7CkBAIC0xNjM4LDYgKzE2NDIsMTMgQEAg ZXhwYW5kX2RlZmF1bHRfaW5pdCAodHJlZSBiaW5mbywgdHJlZSB0cnVlX2V4 cCwgdHJlZSBleHAsIHRyZWUgaW5pdCwgaW50IGZsYWdzLAogCWluaXQgPSBy ZXNoYXBlX2luaXQgKHR5cGUsIGluaXQsIGNvbXBsYWluKTsKICAgICB9CiAK KyAgLyogQWxzbyBwdWxsIG91dCBhIFRBUkdFVF9FWFBSIHRoYXQgd2Ugd2Fu dCB0byBhdm9pZCBjb3B5aW5nLiAgKi8KKyAgaWYgKGluaXQgJiYgdHJ1ZV9l eHAgPT0gZXhwCisgICAgICAmJiBUUkVFX0NPREUgKGluaXQpID09IFRSRUVf TElTVAorICAgICAgJiYgbGlzdF9sZW5ndGggKGluaXQpID09IDEKKyAgICAg ICYmIGVhcmx5X2VsaWRlX2NvcHkgKHR5cGUsIFRSRUVfVkFMVUUgKGluaXQp KSkKKyAgICBpbml0ID0gVFJFRV9WQUxVRSAoaW5pdCk7CisKICAgaWYgKGlu aXQgJiYgQlJBQ0VfRU5DTE9TRURfSU5JVElBTElaRVJfUCAoaW5pdCkKICAg ICAgICYmIENQX0FHR1JFR0FURV9UWVBFX1AgKHR5cGUpKQogICAgIC8qIEEg YnJhY2UtZW5jbG9zZWQgaW5pdGlhbGl6ZXIgZm9yIGFuIGFnZ3JlZ2F0ZS4g IEluIEMrKzB4IHRoaXMgY2FuCkBAIC0xNjQ4LDE0ICsxNjU5LDEyIEBAIGV4 cGFuZF9kZWZhdWx0X2luaXQgKHRyZWUgYmluZm8sIHRyZWUgdHJ1ZV9leHAs IHRyZWUgZXhwLCB0cmVlIGluaXQsIGludCBmbGFncywKICAgICAgaW5pdGlh bGl6ZXIsIHdoZXRoZXIgdGhhdCBoYXBwZW5lZCBqdXN0IGFib3ZlIG9yIGlu CiAgICAgIGNwX3BhcnNlcl9sYXRlX3BhcnNpbmdfbnNkbWkuCiAKLSAgICAg QSBUQVJHRVRfRVhQUiB3aXRoIFRBUkdFVF9FWFBSX0RJUkVDVF9JTklUX1Ag b3IgVEFSR0VUX0VYUFJfTElTVF9JTklUX1AKLSAgICAgc2V0IHJlcHJlc2Vu dHMgdGhlIHdob2xlIGluaXRpYWxpemF0aW9uLCBzbyB3ZSBzaG91bGRuJ3Qg YnVpbGQgdXAKLSAgICAgYW5vdGhlciBjdG9yIGNhbGwuICAqLworICAgICBB IFRBUkdFVF9FWFBSIGZvciB3aGljaCBlYXJseV9lbGlkZV9jb3B5IGlzIHRy dWUgcmVwcmVzZW50cyB0aGUgd2hvbGUKKyAgICAgaW5pdGlhbGl6YXRpb24s IHNvIHdlIHNob3VsZG4ndCBidWlsZCB1cCBhbm90aGVyIGN0b3IgY2FsbC4g ICovCisKICAgaWYgKGluaXQKICAgICAgICYmIChUUkVFX0NPREUgKGluaXQp ID09IENPTlNUUlVDVE9SCi0JICB8fCAoVFJFRV9DT0RFIChpbml0KSA9PSBU QVJHRVRfRVhQUgotCSAgICAgICYmIChUQVJHRVRfRVhQUl9ESVJFQ1RfSU5J VF9QIChpbml0KQotCQkgIHx8IFRBUkdFVF9FWFBSX0xJU1RfSU5JVF9QIChp bml0KSkpKQorCSAgfHwgZWFybHlfZWxpZGVfY29weSAodHlwZSwgaW5pdCkp CiAgICAgICAmJiBzYW1lX3R5cGVfaWdub3JpbmdfdG9wX2xldmVsX3F1YWxp ZmllcnNfcCAoVFJFRV9UWVBFIChpbml0KSwgdHlwZSkpCiAgICAgewogICAg ICAgLyogRWFybHkgaW5pdGlhbGl6YXRpb24gdmlhIGEgVEFSR0VUX0VYUFIg b25seSB3b3JrcyBmb3IKZGlmZiAtLWdpdCBhL2djYy9jcC90eXBlY2suYyBi L2djYy9jcC90eXBlY2suYwppbmRleCBjNzBjZmM4Li5mMWFiYjQwIDEwMDY0 NAotLS0gYS9nY2MvY3AvdHlwZWNrLmMKKysrIGIvZ2NjL2NwL3R5cGVjay5j CkBAIC03NjE2LDYgKzc2MTYsOCBAQCBjcF9idWlsZF9tb2RpZnlfZXhwciAo bG9jYXRpb25fdCBsb2MsIHRyZWUgbGhzLCBlbnVtIHRyZWVfY29kZSBtb2Rp Znljb2RlLAogCX0KICAgICAgIGVsc2UgaWYgKCEgTUFZQkVfQ0xBU1NfVFlQ RV9QIChsaHN0eXBlKSkKIAkvKiBEbyB0aGUgZGVmYXVsdCB0aGluZy4gICov OworICAgICAgZWxzZSBpZiAoZWFybHlfZWxpZGVfY29weSAobGhzdHlwZSwg cmhzKSkKKwkvKiBEbyB0aGUgZGVmYXVsdCB0aGluZy4gICovOwogICAgICAg ZWxzZQogCXsKIAkgIHZlYzx0cmVlLCB2YV9nYz4gKnJoc192ZWMgPSBtYWtl X3RyZWVfdmVjdG9yX3NpbmdsZSAocmhzKTsKZGlmZiAtLWdpdCBhL2djYy9k b2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCmluZGV4IGQ5 NjY3ZTcuLjIyYWY2ZTQgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tlLnRl eGkKKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQpAQCAtMjMyNSw3ICsyMzI1 LDExIEBAIHJlbGVhc2Ugb2YgRysrLgogVGhlIEMrKyBzdGFuZGFyZCBhbGxv d3MgYW4gaW1wbGVtZW50YXRpb24gdG8gb21pdCBjcmVhdGluZyBhIHRlbXBv cmFyeQogdGhhdCBpcyBvbmx5IHVzZWQgdG8gaW5pdGlhbGl6ZSBhbm90aGVy IG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlLgogU3BlY2lmeWluZyB0aGlzIG9w dGlvbiBkaXNhYmxlcyB0aGF0IG9wdGltaXphdGlvbiwgYW5kIGZvcmNlcyBH KysgdG8KLWNhbGwgdGhlIGNvcHkgY29uc3RydWN0b3IgaW4gYWxsIGNhc2Vz LgorY2FsbCB0aGUgY29weSBjb25zdHJ1Y3RvciBpbiBhbGwgY2FzZXMuICBU aGlzIG9wdGlvbiBhbHNvIGNhdXNlcyBHKysKK3RvIGNhbGwgdHJpdmlhbCBt ZW1iZXIgZnVuY3Rpb25zIHdoaWNoIG90aGVyd2lzZSB3b3VsZCBiZSBleHBh bmRlZCBpbmxpbmUuCisKK0luIEMrKzE3LCB0aGUgY29tcGlsZXIgaXMgcmVx dWlyZWQgdG8gb21pdCB0aGVzZSB0ZW1wb3JhcmllcywgYnV0IHRoaXMKK29w dGlvbiBzdGlsbCBhZmZlY3RzIHRyaXZpYWwgbWVtYmVyIGZ1bmN0aW9ucy4K IAogQGl0ZW0gLWZuby1lbmZvcmNlLWVoLXNwZWNzCiBAb3BpbmRleCBmbm8t ZW5mb3JjZS1laC1zcGVjcwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMHgvY29uc3RleHByLWN0b3IxNGEuQyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2NwcDB4L2NvbnN0ZXhwci1jdG9yMTRhLkMKaW5kZXggNjQ0 YWU2My4uOGQxZWJjZCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMHgvY29uc3RleHByLWN0b3IxNGEuQworKysgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAweC9jb25zdGV4cHItY3RvcjE0YS5DCkBAIC04LDcg KzgsNyBAQCBzdHJ1Y3QgQQogfTsKIAogY29uc3RleHByIEEgYTsKLWNvbnN0 ZXhwciBBIGIgPSBBKCk7CQkvLyB7IGRnLWVycm9yICIiIH0KK2NvbnN0ZXhw ciBBIGIgPSBBKCk7CQkvLyB7IGRnLWVycm9yICIiICIiIHsgdGFyZ2V0IGMr KzE0X2Rvd24gfSB9CiAKICNkZWZpbmUgU0EoWCkgc3RhdGljX2Fzc2VydCAo KFgpLCAjWCkKIFNBKGEucCA9PSAmYSk7CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAweC9pbml0bGlzdDkuQyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2NwcDB4L2luaXRsaXN0OS5DCmluZGV4IGJiNjQxNGMuLmVm ODA2ZDAgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4 L2luaXRsaXN0OS5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4 L2luaXRsaXN0OS5DCkBAIC04LDcgKzgsNyBAQCBzdHJ1Y3QgYgogICBiKCkg PSBkZWZhdWx0OwogICB+YigpID0gZGVmYXVsdDsKICAgYiYgb3BlcmF0b3I9 KGNvbnN0IGImKSA9IGRlbGV0ZTsKLSAgYihjb25zdCBiJikgPSBkZWxldGU7 CQkvLyB7IGRnLW1lc3NhZ2UgImRlY2xhcmVkIiB9CisgIGIoY29uc3QgYiYp ID0gZGVsZXRlOwkJLy8geyBkZy1tZXNzYWdlICJkZWNsYXJlZCIgIiIgeyB0 YXJnZXQgYysrMTRfZG93biB9IH0KIAogICBiKGJvb2wgX3QpOiB0IChfdCkg eyB9CiB9OwpAQCAtMTksNyArMTksNyBAQCBpbnQgbWFpbigpCiAgIGIgdHN0 MSA9IHsgZmFsc2UgfTsKIAogICAvLyBjb3B5IGluaXRpYWxpemF0aW9uLgot ICBiIHRzdDIgPSBmYWxzZTsJCS8vIHsgZGctZXJyb3IgInVzZSIgfQorICBi IHRzdDIgPSBmYWxzZTsJCS8vIHsgZGctZXJyb3IgInVzZSIgIiIgeyB0YXJn ZXQgYysrMTRfZG93biB9IH0KIAogICAvLyBkaXJlY3QgbGlzdCBpbml0aWFs aXphdGlvbgogICBiIHRzdDMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMHgvbm9leGNlcHQyMy5DIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMHgvbm9leGNlcHQyMy5DCmluZGV4IDVhMDFk ZjQuLmI2MzBiMjMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRn L2NwcDB4L25vZXhjZXB0MjMuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAweC9ub2V4Y2VwdDIzLkMKQEAgLTEwLDUgKzEwLDEwIEBAIHZvaWQg YShBKSBub2V4Y2VwdCB7fQogCiB2b2lkIGYoKQogewotICBzdGF0aWNfYXNz ZXJ0KCFub2V4Y2VwdChhKEF7fSkpLCAiIik7CisjaWYgX19jcGx1c3BsdXMg PD0gMjAxNDAyTAorICBjb25zdCBib29sIHZhbCA9IGZhbHNlOworI2Vsc2UK KyAgY29uc3QgYm9vbCB2YWwgPSB0cnVlOworI2VuZGlmCisgIHN0YXRpY19h c3NlcnQobm9leGNlcHQoYShBe30pKSA9PSB2YWwsICIiKTsKIH0KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4L25vZXhjZXB0MjQu QyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4L25vZXhjZXB0MjQuQwpp bmRleCBjMTdkZGZhLi42MGNhNDQzIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAweC9ub2V4Y2VwdDI0LkMKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMHgvbm9leGNlcHQyNC5DCkBAIC0xMyw3ICsxMywx MiBAQCB2b2lkIGEoQTxUPikgbm9leGNlcHQge30KIHRlbXBsYXRlPHR5cGVu YW1lIFQ+CiB2b2lkIGYoKQogewotICBzdGF0aWNfYXNzZXJ0KCFub2V4Y2Vw dChhKEE8VD57fSkpLCAiIik7CisjaWYgX19jcGx1c3BsdXMgPD0gMjAxNDAy TAorICBjb25zdCBib29sIHZhbCA9IGZhbHNlOworI2Vsc2UKKyAgY29uc3Qg Ym9vbCB2YWwgPSB0cnVlOworI2VuZGlmCisgIHN0YXRpY19hc3NlcnQodmFs ID09IG5vZXhjZXB0KGEoQTxUPnt9KSksICIiKTsKIH0KIAogdm9pZCBnKCkK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2VsaWRl MS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovZWxpZGUxLkMKaW5k ZXggYTA1MzhiYi4uNzE0NzZlMiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMXovZWxpZGUxLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMXovZWxpZGUxLkMKQEAgLTE0LDMgKzE0LDEyIEBAIEEgYTIg PSAoNDIsIEEoKSk7CiBBIGYoKTsKIEEgYTMgPSBmKCk7CiBBIGE0ID0gYiA/ IEEoKSA6IGYoKTsKKwordm9pZCBnKEEpOworQSBmKCkgeworICBnKEEoKSk7 CisgIGlmIChiKQorICAgIHRocm93IEEoKTsKKyAgZWxzZQorICAgIHJldHVy biBBKCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9p bml0L2NvcHkzLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9pbml0L2NvcHkz LkMKaW5kZXggZmE2YTZlYS4uY2ZjNzM5NCAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvaW5pdC9jb3B5My5DCisrKyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2luaXQvY29weTMuQwpAQCAtMSw0ICsxLDQgQEAKLS8vIHsg ZGctZG8gcnVuIH0KKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzE0X2Rv d24gfSB9CiAvLyB7IGRnLW9wdGlvbnMgIi1mbm8tZWxpZGUtY29uc3RydWN0 b3JzIiB9CiAKIGludCBjb3BpZXM7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2crKy5kZy9vdmVybG9hZC9hcmczLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9vdmVybG9hZC9hcmczLkMKaW5kZXggMTY4NGZjYy4uOTUwN2MwMiAx MDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvb3ZlcmxvYWQvYXJn My5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL292ZXJsb2FkL2FyZzMu QwpAQCAtMTEsMTIgKzExLDEyIEBAIHN0cnVjdCBBIHt9Owogc3RydWN0IEIg OiBBCiB7CiAgIEIoaW50KTsKLSAgQihCJik7ICAvLyB7IGRnLW1lc3NhZ2Ug Im5vdGUiICIiIH0KKyAgQihCJik7ICAvLyB7IGRnLW1lc3NhZ2UgIm5vdGUi ICIiIHsgdGFyZ2V0IGMrKzE0X2Rvd24gfSB9CiB9OwogCi12b2lkIGZvbyhC KTsJCQkvLyB7IGRnLW1lc3NhZ2UgImluaXRpYWxpemluZyIgfQordm9pZCBm b28oQik7CQkJLy8geyBkZy1tZXNzYWdlICJpbml0aWFsaXppbmciICIiIHsg dGFyZ2V0IGMrKzE0X2Rvd24gfSB9CiAKIHZvaWQgYmFyKCkKIHsKLSAgZm9v KDApOyAvLyB7IGRnLWVycm9yICIiIH0KKyAgZm9vKDApOyAvLyB7IGRnLWVy cm9yICIiICIiIHsgdGFyZ2V0IGMrKzE0X2Rvd24gfSB9CiB9CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy90ZW1wbGF0ZS9jb3B5MS5DIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVtcGxhdGUvY29weTEuQwppbmRleCBi ZjVhMzdjLi5hMzQyMjFkIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2cr Ky5kZy90ZW1wbGF0ZS9jb3B5MS5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL3RlbXBsYXRlL2NvcHkxLkMKQEAgLTYsOSArNiw5IEBACiAKIHN0cnVj dCBBCiB7Ci0gIEEoQSYpOwkJCS8vIHsgZGctbWVzc2FnZSAiQTo6QSIgfQot ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gQShUKTsgCS8vIHsgZGctbWVzc2FnZSAi QTo6QSIgfQorICBBKEEmKTsJCQkvLyB7IGRnLW1lc3NhZ2UgIkE6OkEiICIi IHsgdGFyZ2V0IGMrKzE0X2Rvd24gfSB9CisgIHRlbXBsYXRlIDxjbGFzcyBU PiBBKFQpOyAJLy8geyBkZy1tZXNzYWdlICJBOjpBIiAiIiB7IHRhcmdldCBj KysxNF9kb3duIH0gfQogfTsKIAotQSBhID0gMDsgLy8geyBkZy1lcnJvciAi IiB9CitBIGEgPSAwOyAvLyB7IGRnLWVycm9yICIiICIiIHsgdGFyZ2V0IGMr KzE0X2Rvd24gfSB9CiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysr Lm9sZC1kZWphL2crKy5laC9jdG9yMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu b2xkLWRlamEvZysrLmVoL2N0b3IxLkMKaW5kZXggOWI0YWRhZi4uMjFiMjdk NyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysub2xkLWRlamEvZysr LmVoL2N0b3IxLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysub2xkLWRlamEv ZysrLmVoL2N0b3IxLkMKQEAgLTIsNyArMiw3IEBACiBzdHJ1Y3QgQQogewog ICBBKCk7Ci0gIEEoQSYpOwkJCS8vIHsgZGctbWVzc2FnZSAiQTo6QXxubyBr bm93biBjb252ZXJzaW9uIiB9IHJlZmVyZW5jZWQgYmVsb3cKKyAgQShBJik7 CQkJLy8geyBkZy1tZXNzYWdlICJBOjpBfG5vIGtub3duIGNvbnZlcnNpb24i ICIiIHsgdGFyZ2V0IGMrKzE0X2Rvd24gfSB9IHJlZmVyZW5jZWQgYmVsb3cK IH07CiAKIGludApAQCAtMTAsOCArMTAsOCBAQCBtYWluICgpCiB7CiAgIHRy eQogICAgIHsKLSAgICAgIHRocm93IEEoKTsJCS8vIHsgZGctZXJyb3IgInJ2 YWx1ZSIgIiIgfSBjYW4ndCBjb3B5Ci0vLyB7IGRnLWVycm9yICJ0aHJvd24g ZXhwcmVzc2lvbiIgImV4cHIiIHsgdGFyZ2V0ICotKi0qIH0gMTMgfQorICAg ICAgdGhyb3cgQSgpOwkJLy8geyBkZy1lcnJvciAicnZhbHVlIiAiIiB7IHRh cmdldCBjKysxNF9kb3duIH0gfSBjYW4ndCBjb3B5CisgICAgICAvLyB7IGRn LWVycm9yICJ0aHJvd24gZXhwcmVzc2lvbiIgImV4cHIiIHsgdGFyZ2V0IGMr KzE0X2Rvd24gfSAxMyB9CiAgICAgfQogICBjYXRjaCAoLi4uKSB7IH0KIH0K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5q YXNvbi90ZW1wb3JhcnkyLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5vbGQtZGVq YS9nKysuamFzb24vdGVtcG9yYXJ5Mi5DCmluZGV4IGU1NTczODQuLmM4NTVm OGYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2cr Ky5qYXNvbi90ZW1wb3JhcnkyLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu b2xkLWRlamEvZysrLmphc29uL3RlbXBvcmFyeTIuQwpAQCAtMyw3ICszLDcg QEAgY2xhc3MgWCAvLyBJbmRlbnRhdGlvbiBoYXMgYmVlbiBkb25lIHNvIHRv IHNlZSB0aGUgc2ltaWxhcml0aWVzLgogewogcHVibGljOgogICBYKCkge30K LSAgICAgICAgIFgoWCYgeCkge3guaT03O30gLy8geyBkZy1tZXNzYWdlICJu b3RlIiB9IEJvdGggZnVuY3Rpb25zIG1vZGlmeSB0aGUKKyAgICAgICAgIFgo WCYgeCkge3guaT03O30gLy8geyBkZy1tZXNzYWdlICJub3RlIiAiIiB7IHRh cmdldCBjKysxNF9kb3duIH0gfSBCb3RoIGZ1bmN0aW9ucyBtb2RpZnkgdGhl CiAgIHZvaWQgYmFyKFgmIHgpIHt4Lmk9Nzt9IC8vIHsgZGctbWVzc2FnZSAi bm90ZSIgfSByZWZlcmVuY2UgcGFyYW1ldGVyIHguCiAgIGludCBpOwogfTsK QEAgLTEyLDYgKzEyLDYgQEAgWCBmb28oKSB7IFggeDsgcmV0dXJuIHg7IH0K IAogaW50IG1haW4oKSAKIHsKLSAgWCAgIHgoZm9vKCkpOyAvLyB7IGRnLWVy cm9yICJydmFsdWUiIH0gQ29tcGlsZXIgZG9lc24ndCB3YXJuIGFib3V0IHRl bXBvcmFyeSByZWZlcmVuY2UuCisgIFggICB4KGZvbygpKTsgLy8geyBkZy1l cnJvciAicnZhbHVlIiAiIiB7IHRhcmdldCBjKysxNF9kb3duIH0gfSBDb21w aWxlciBkb2Vzbid0IHdhcm4gYWJvdXQgdGVtcG9yYXJ5IHJlZmVyZW5jZS4K ICAgeC5iYXIoZm9vKCkpOyAvLyB7IGRnLWVycm9yICJydmFsdWUiIH0gVGhl IHNhbWUgbWlzdGFrZSBpcyB3YXJuZWQgYWJvdXQgaW4gdGhpcyBjYXNlLgog fQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysub2xkLWRlamEvZysr Lm1pa2UvcDI0MzEuQyBiL2djYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2cr Ky5taWtlL3AyNDMxLkMKaW5kZXggOGE3ZWRlNi4uZDk5MGExMCAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysub2xkLWRlamEvZysrLm1pa2UvcDI0 MzEuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5vbGQtZGVqYS9nKysubWlr ZS9wMjQzMS5DCkBAIC0zLDcgKzMsNyBAQAogY2xhc3MgQQogewogCXB1Ymxp YzoKLSAgICAgIEEoQSAmKTsgLy8geyBkZy1tZXNzYWdlICJub3RlIiB9Cisg ICAgICBBKEEgJik7IC8vIHsgZGctbWVzc2FnZSAibm90ZSIgIiIgeyB0YXJn ZXQgYysrMTRfZG93biB9IH0KIH07CiAKIGNsYXNzIEIKQEAgLTE4LDYgKzE4 LDYgQEAgY2xhc3MgQwogCUMoKQogCXsKIAkJQgliOwotCQlBIGEgPSBiOy8v IHsgZGctZXJyb3IgInJ2YWx1ZSIgfQorCQlBIGEgPSBiOy8vIHsgZGctZXJy b3IgInJ2YWx1ZSIgIiIgeyB0YXJnZXQgYysrMTRfZG93biB9IH0KIAl9CiB9 OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysub2xkLWRlamEvZysr LnB0L2F1dG9fcHRyLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5vbGQtZGVqYS9n KysucHQvYXV0b19wdHIuQwppbmRleCA0YTM2M2EyLi4zNWUxY2MyIDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5vbGQtZGVqYS9nKysucHQvYXV0 b19wdHIuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5vbGQtZGVqYS9nKysu cHQvYXV0b19wdHIuQwpAQCAtOSw3ICs5LDcgQEAgdGVtcGxhdGU8dHlwZW5h bWUgWD4gc3RydWN0IGF1dG9fcHRyIHsKICAgIHR5cGVkZWYgWCBlbGVtZW50 X3R5cGU7CiAKICAgIGV4cGxpY2l0IGF1dG9fcHRyKFgqIHAgPTApIHRocm93 KCkgOiBweChwKSB7fQotICAgYXV0b19wdHIoYXV0b19wdHImIHIpIHRocm93 KCkgOiBweChyLnJlbGVhc2UoKSkge30gLy8geyBkZy1tZXNzYWdlICJub3Rl IiB9IGNhbmRpZGF0ZQorICAgYXV0b19wdHIoYXV0b19wdHImIHIpIHRocm93 KCkgOiBweChyLnJlbGVhc2UoKSkge30gLy8geyBkZy1tZXNzYWdlICJub3Rl IiAiIiB7IHRhcmdldCBjKysxNF9kb3duIH0gfSBjYW5kaWRhdGUKICAgIHRl bXBsYXRlPHR5cGVuYW1lIFk+CiAgICAgICBhdXRvX3B0cihhdXRvX3B0cjxZ PiYgcikgdGhyb3coKSA6IHB4KHIucmVsZWFzZSgpKSB7fQogCkBAIC00NCwx MiArNDQsMTIgQEAgc3RydWN0IERlcml2ZWQgOiBCYXNlIHsgRGVyaXZlZCgp IHt9IH07CiAKIGF1dG9fcHRyPERlcml2ZWQ+IGYoKSB7IGF1dG9fcHRyPERl cml2ZWQ+IG51bGwoMCk7IHJldHVybiBudWxsOyB9CiB2b2lkIGcoYXV0b19w dHI8RGVyaXZlZD4pIHsgfQotdm9pZCBoKGF1dG9fcHRyPEJhc2U+KSB7IH0J Ly8geyBkZy1tZXNzYWdlICJpbml0aWFsaXppbmciIH0KK3ZvaWQgaChhdXRv X3B0cjxCYXNlPikgeyB9CS8vIHsgZGctbWVzc2FnZSAiaW5pdGlhbGl6aW5n IiAiIiB7IHRhcmdldCBjKysxNF9kb3duIH0gfQogCiBpbnQgbWFpbigpIHsK ICAgICBhdXRvX3B0cjxCYXNlPiB4KGYoKSk7CiAgICAgYXV0b19wdHI8RGVy aXZlZD4geShmKCkpOwogICAgIHggPSB5OwogICAgIGcoZigpKTsKLSAgICBo KGYoKSk7CQkJLy8geyBkZy1lcnJvciAicnZhbHVlIiAiIiB9IG5vIHVzYWJs ZSBjb3B5IGN0b3IKKyAgICBoKGYoKSk7CQkJLy8geyBkZy1lcnJvciAicnZh bHVlIiAiIiB7IHRhcmdldCBjKysxNF9kb3duIH0gfSBubyB1c2FibGUgY29w eSBjdG9yCiB9Cg== --001a1145009ebfc3f0053e38f3ad--