From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 17881 invoked from network); 14 Apr 2021 05:52:59 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 14 Apr 2021 05:52:59 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1618379579; b=W0GCnnAhqPLwLkBgR6vrop4fz1SXQLj/fsYEJxInMaJpLSQ/yUwZ72/EVv09qBifSzzDqn/rkA cGmRXbpTq7sPuOLeaQquI9DYAyuFmNC5IWcZIEyPBh3Z2oTVUzDDNsBZEHOVgR+ujUhnmGmzOV 3GaCnaqG5jDLKKpjg9t9mKXgGSKcS4IKY8lWFg5r7vh19JWTmBged40Ov4xAOU1Xh6r1GZmdlo np+HdW/nVwHEiwUS5WxaLo7EoPRqCnDMFcmhr6Csa7w+6X8vJsuXDV/yAG9BXobb+aMSrzr4FG 2W4Tr2+6+bfm93SNwmGlgHxREEdQdV/SmGowBCqZaFHDbA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-oo1-f49.google.com) smtp.remote-ip=209.85.161.49; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1618379579; bh=M+sgK1lfbUDk+7wzswfqG/bJYrqOFcL5uwq14paSr7I=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=o1GFUoCB5LbGpDAvjCBpOTecCiPwz1jx8gpumpM+M6Oxa9e91SYkIj0XOR2Olf17DMkPtY6qXr 61Pcg8WspGuAq7w8dd64bMSfbcqwENzGI+W9vKDMzPRc6oCmn4RQs/mQxShu3vtCSWQgfw0I4r 2JL7eQso864FkeW6AUqpBr+RAM73az14GhAlFg2wtYgmGDryvVxai3rTBo+EKPMqxFCMcCmpnb y+GfVhNARsSijmaq0qHSCx/Wk6cIy1YNr3raSXGCvfQaKET2FK5QHENUL6H7qFxJ9sR2iluiod K8nOJ5hscWou1T8Qjq1OhMyDd8U3O6LFxof4KcdAy+VjUg==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=b2bgVlvBzmbvMhfZ0/2G7G/BzhY7FqG/bT62GSxbep8=; b=cfpBsgG3HbMcvZkOP4nmnZ1dDx mhct4xQ+aMrOiwNb95CG8CSXLN2xBORL0HqT9YivjHS2f7LnSB8IwVSJt9coqBtfaTT3rPKlPdhKm FEGUajPLtBjTe8imVDV58149No1DWvfvXERr3furBfeZ6yO0az9qMOsQ85nV2ZSRm/+nHdTY0B5bS hMK+oktnpWmrmVhxW2DsloD07++FmfWJkQTZ/75oekoQ88DqhLmX7VQR86lF/yhutFw8m52VxrsuR DR5p5RLb65wvdd317w2/JkjUBoPcsgJAKnucp1qeeY0Y0ngjRCeeBOlg4T4BpOEMp/3vghn2377uZ EdLOD3yg==; Received: from authenticated user by zero.zsh.org with local id 1lWYSO-000Cjb-Ts; Wed, 14 Apr 2021 05:52:56 +0000 Authentication-Results: zsh.org; iprev=pass (mail-oo1-f49.google.com) smtp.remote-ip=209.85.161.49; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-oo1-f49.google.com ([209.85.161.49]:41766) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1lWYS7-000CTG-9k; Wed, 14 Apr 2021 05:52:40 +0000 Received: by mail-oo1-f49.google.com with SMTP id h2-20020a4ad7420000b02901e5901169a5so4137618oot.8 for ; Tue, 13 Apr 2021 22:52:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=b2bgVlvBzmbvMhfZ0/2G7G/BzhY7FqG/bT62GSxbep8=; b=bVOWFbTIqPmVYcYrEVOsJNdVo78X9a+01bhYtDAoybf93SIo/v9W5NJdlHZXxPEOXW EJuGlABdX4ODKfgP+FJwXAgv8/EceRAZTDzif1gx94LX7N30x5J6/XZTElFVMKIeJgtz evY+2oNvuINOvWUMhxsLOwlmryMNTL5DyboYru3pj+ou/+OmLeK3ZVphHd1N7spRqkWo 2q4ZRFBQ15HMXmoFLTUWiZhii1vN8ecHIbJy4zsdh6804J/kPKUEBwUq4RUSmbIodnt3 sirdFrAjfaaRwcgKAc+G5AbFoD1Iitvfujqa2aMMQtX5j9WqUf07yY6Qmm7ZJO7Q3OY8 Dp+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=b2bgVlvBzmbvMhfZ0/2G7G/BzhY7FqG/bT62GSxbep8=; b=MIItb2ZCHJ7jBY/g33YIHTl1y3ojh1XbKLauU3yrSCF4M92J3vwXp05kICsYcAfgUw syQqfN2B6DakaZUrals/YC0SzVBXi+7y+Uu1SbAmgHCxgkNmnBDYnCFQj77FTQMeLbLi kHJyAqP9X47ldGqChO+XN2U/cOz//XQULCXjRutjHLaOtsAf3Ig9nXnv2TYrKwVToAUP CAQKWs6b77Io3rdEO0jtoMQbM4jjWi3eM45MuwQGatV2VJD9aInPcheNtBFDgJPjzcR/ lt51+SSFm7vGjldNVxyZoXK88+G7FWIuYR3maWr1SC8Qgg9ovHG0B+6Yxm5SLvKEVUWo dMNw== X-Gm-Message-State: AOAM532Q6Hv6bRvtIqKXGHnnsaFwe/VVYSD216rXKkh0uQWJy8GZRFvR uApqRif+OCkSxfa1Q2flAqVM9bQYUgkVIq7gXeckvdC4nZsMzw== X-Google-Smtp-Source: ABdhPJyOM5//z/IlDMfpTjQ04v7xuKdo7rwjNkZTO2/CBS9PYq3zbOomoxvwNRvuYgN3g7lRu2pTNTJxdzlmAqWPsFU= X-Received: by 2002:a4a:be14:: with SMTP id l20mr5771921oop.82.1618379558009; Tue, 13 Apr 2021 22:52:38 -0700 (PDT) MIME-Version: 1.0 From: Bart Schaefer Date: Tue, 13 Apr 2021 22:52:27 -0700 Message-ID: Subject: [PATCH] TYPESET_TO_UNSET + misc. To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000aae9fa05bfe85a5d" X-Seq: 48560 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: --000000000000aae9fa05bfe85a5d Content-Type: text/plain; charset="UTF-8" Attached is the final (I hope) version of the changes I've been pushing to the "declarednull" branch in git. tl;dr with this option set "typeset foo" leaves foo unset, in contrast to the default behavior which assigns foo="". For those who've lost track, this originated from the thread "Bug with unset variables" in workers/47351 and the first pass at this approach appeared in workers/47697. The doc update includes mention of the problems with searching for (or in) empty strings, from the thread at workers/47729, and the new test file E03posix.ztst has "xfail" tests for nine incompatibilities that were recently enumerated in a number of messages on the list. I considered making a couple of patches but one would have been very small and the other would patch a newly-created file, so it didn't seem worthwhile. I chose TYPESET_TO_UNSET as the option to control this, to go along with TYPESET_SILENT and because it works a bit better when negated as NO_TYPESET_TO_UNSET. E03posix.ztst runs with this option set to avoid having to duplicate all the tests; that can be fixed later if necessary. I documented the default initialization behavior to contrast it with the TYPESET_TO_UNSET behavior, rather than try to explain the latter in isolation. --000000000000aae9fa05bfe85a5d Content-Type: text/plain; charset="UTF-8"; name="typesettounset-patch.txt" Content-Disposition: attachment; filename="typesettounset-patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kngzc25f0 ZGlmZiAtLWdpdCBhL0NvbXBsZXRpb24vY29tcGluaXQgYi9Db21wbGV0aW9uL2NvbXBpbml0Cmlu ZGV4IGU4MWNkMTYwNC4uMWYyZTdjNjM0IDEwMDY0NAotLS0gYS9Db21wbGV0aW9uL2NvbXBpbml0 CisrKyBiL0NvbXBsZXRpb24vY29tcGluaXQKQEAgLTE2NSw2ICsxNjUsNyBAQCBfY29tcF9vcHRp b25zPSgKICAgICBOT19wb3NpeGlkZW50aWZpZXJzCiAgICAgTk9fc2h3b3Jkc3BsaXQKICAgICBO T19zaGdsb2IKKyAgICBOT190eXBlc2V0dG91bnNldAogICAgIE5PX3dhcm5uZXN0ZWR2YXIKICAg ICBOT193YXJuY3JlYXRlZ2xvYmFsCiApCmRpZmYgLS1naXQgYS9Eb2MvWnNoL2J1aWx0aW5zLnlv IGIvRG9jL1pzaC9idWlsdGlucy55bwppbmRleCBhN2FmZTQyY2YuLjYxZGM2OTg2ZiAxMDA2NDQK LS0tIGEvRG9jL1pzaC9idWlsdGlucy55bworKysgYi9Eb2MvWnNoL2J1aWx0aW5zLnlvCkBAIC0x ODcyLDcgKzE4NzIsMTEgQEAgaWZuem1hbihub2RlcmVmKExvY2FsIFBhcmFtZXRlcnMpKVwKIHJl dGFpbiB0aGVpciBzcGVjaWFsIGF0dHJpYnV0ZXMgd2hlbiBtYWRlIGxvY2FsLgogCiBGb3IgZWFj aCB2YXIobmFtZSl0dCg9KXZhcih2YWx1ZSkgYXNzaWdubWVudCwgdGhlIHBhcmFtZXRlcgotdmFy KG5hbWUpIGlzIHNldCB0byB2YXIodmFsdWUpLgordmFyKG5hbWUpIGlzIHNldCB0byB2YXIodmFs dWUpLiAgSWYgdGhlIGFzc2lnbm1lbnQgaXMgb21pdHRlZCBhbmQgdmFyKG5hbWUpCitkb2VzIGVt KG5vdCkgcmVmZXIgdG8gYW4gZXhpc3RpbmcgcGFyYW1ldGVyLCBhIG5ldyBwYXJhbWV0ZXIgaXMg aW50aWFsaXplZAordG8gZW1wdHkgc3RyaW5nLCB6ZXJvLCBvciBlbXB0eSBhcnJheSAoYXMgYXBw cm9wcmlhdGUpLCBlbSh1bmxlc3MpIHRoZQorc2hlbGwgb3B0aW9uIHR0KFRZUEVTRVRfVE9fVU5T RVQpIGlzIHNldC4gIFdoZW4gdGhhdCBvcHRpb24gaXMgc2V0LAordGhlIHBhcmFtZXRlciBhdHRy aWJ1dGVzIGFyZSByZWNvcmRlZCBidXQgdGhlIHBhcmFtZXRlciByZW1haW5zIHVuc2V0LgogCiBJ ZiB0aGUgc2hlbGwgb3B0aW9uIHR0KFRZUEVTRVRfU0lMRU5UKSBpcyBub3Qgc2V0LCBmb3IgZWFj aCByZW1haW5pbmcKIHZhcihuYW1lKSB0aGF0IHJlZmVycyB0byBhIHBhcmFtZXRlciB0aGF0IGlz IGFscmVhZHkgc2V0LCB0aGUgbmFtZSBhbmQKZGlmZiAtLWdpdCBhL0RvYy9ac2gvb3B0aW9ucy55 byBiL0RvYy9ac2gvb3B0aW9ucy55bwppbmRleCA3MTRlOGExYTEuLjZlODYyZmFlOCAxMDA2NDQK LS0tIGEvRG9jL1pzaC9vcHRpb25zLnlvCisrKyBiL0RvYy9ac2gvb3B0aW9ucy55bwpAQCAtMTk0 Miw2ICsxOTQyLDE2IEBAIElmIHRoZSBvcHRpb24gaXMgc2V0LCB0aGV5IHdpbGwgb25seSBiZSBz aG93biB3aGVuIHBhcmFtZXRlcnMgYXJlIHNlbGVjdGVkCiB3aXRoIHRoZSBgdHQoLW0pJyBvcHRp b24uICBUaGUgb3B0aW9uIGB0dCgtcCknIGlzIGF2YWlsYWJsZSB3aGV0aGVyIG9yIG5vdAogdGhl IG9wdGlvbiBpcyBzZXQuCiApCitwaW5kZXgoVFlQRVNFVF9UT19VTlNFVCkKK3BpbmRleChOT19U WVBFU0VUX1RPX1VOU0VUKQorcGluZGV4KFRZUEVTRVRUT1VOU0VUKQorcGluZGV4KE5PVFlQRVNF VFRPVU5TRVQpCitpdGVtKHR0KFRZUEVTRVRfVE9fVU5TRVQpIDxLPiA8Uz4pKAorV2hlbiBkZWNs YXJpbmcgYSBuZXcgcGFyYW1ldGVyIHdpdGggYW55IG9mIHRoZSBgdHQodHlwZXNldCknIGZhbWls eSBvZgorcmVsYXRlZCBjb21tYW5kcywgdGhlIHBhcmFtZXRlciByZW1haW5zIHVuc2V0IHVubGVz cyBhbmQgdW50aWwgYQordmFsdWUgaXMgZXhwbGljaXR5IGFzc2lnbmVkIHRvIGl0LCBlaXRoZXIg aW4gdGhlIGB0dCh0eXBlc2V0KScgY29tbWFuZAoraXRzZWxmIG9yIGFzIGEgbGF0ZXIgYXNzaWdu bWVudCBzdGF0ZW1lbnQuCispCiBwaW5kZXgoVkVSQk9TRSkKIHBpbmRleChOT19WRVJCT1NFKQog cGluZGV4KE5PVkVSQk9TRSkKZGlmZiAtLWdpdCBhL0RvYy9ac2gvcGFyYW1zLnlvIGIvRG9jL1pz aC9wYXJhbXMueW8KaW5kZXggMzZjMWFlNGMyLi5hOTA0NDMzNmYgMTAwNjQ0Ci0tLSBhL0RvYy9a c2gvcGFyYW1zLnlvCisrKyBiL0RvYy9ac2gvcGFyYW1zLnlvCkBAIC0zOTMsNiArMzkzLDExIEBA IGlzIGNvbXBhcmVkIHRvIHRoZSBwYXR0ZXJuLCBhbmQgdGhlIGZpcnN0IG1hdGNoaW5nIGtleSBm b3VuZCBpcyB0aGUKIHJlc3VsdC4gIE9uIGZhaWx1cmUgc3Vic3RpdHV0ZXMgdGhlIGxlbmd0aCBv ZiB0aGUgYXJyYXkgcGx1cyBvbmUsIGFzCiBkaXNjdXNzZWQgdW5kZXIgdGhlIGRlc2NyaXB0aW9u IG9mIGB0dChyKScsIG9yIHRoZSBlbXB0eSBzdHJpbmcgZm9yIGFuCiBhc3NvY2lhdGl2ZSBhcnJh eS4KKworTm90ZTogQWx0aG91Z2ggYHR0KGkpJyBtYXkgYmUgYXBwbGllZCB0byBhIHNjYWxhciBz dWJzdGl0dXRpb24gdG8gZmluZAordGhlIG9mZnNldCBvZiBhIHN1YnN0cmluZywgdGhlIHJlc3Vs dHMgYXJlIGxpa2VseSB0byBiZSBtaXNsZWFkaW5nIHdoZW4KK3NlYXJjaGluZyB3aXRoaW4gc3Vi c3RpdHV0aW9ucyB0aGF0IHlpZWxkIGFuIGVtcHR5IHN0cmluZywgb3Igd2hlbgorc2VhcmNoaW5n IGZvciB0aGUgZW1wdHkgc3Vic3RyaW5nLgogKQogaXRlbSh0dChJKSkoCiBMaWtlIGB0dChpKScs IGJ1dCBnaXZlcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgbWF0Y2gsIG9yIGFsbCBwb3NzaWJsZQpk aWZmIC0tZ2l0IGEvU3JjL2J1aWx0aW4uYyBiL1NyYy9idWlsdGluLmMKaW5kZXggMjYzMzVhMmU4 Li42ZDExOWY3YTUgMTAwNjQ0Ci0tLSBhL1NyYy9idWlsdGluLmMKKysrIGIvU3JjL2J1aWx0aW4u YwpAQCAtMjQ5MSw2ICsyNDkxLDggQEAgdHlwZXNldF9zaW5nbGUoY2hhciAqY25hbWUsIGNoYXIg KnBuYW1lLCBQYXJhbSBwbSwgVU5VU0VEKGludCBmdW5jKSwKIAkJcmV0dXJuIE5VTEw7CiAJICAg IH0KIAl9CisJaWYgKGlzc2V0KFRZUEVTRVRUT1VOU0VUKSkKKwkgICAgcG0tPm5vZGUuZmxhZ3Mg fD0gUE1fREVGQVVMVEVEOwogICAgIH0gZWxzZSB7CiAJaWYgKGlkaWdpdCgqcG5hbWUpKQogCSAg ICB6ZXJybmFtKGNuYW1lLCAibm90IGFuIGlkZW50aWZpZXI6ICVzIiwgcG5hbWUpOwpAQCAtMjgz Niw3ICsyODM4LDcgQEAgYmluX3R5cGVzZXQoY2hhciAqbmFtZSwgY2hhciAqKmFyZ3YsIExpbmtM aXN0IGFzc2lnbnMsIE9wdGlvbnMgb3BzLCBpbnQgZnVuYykKIAkgICAgdW5xdWV1ZV9zaWduYWxz KCk7CiAJICAgIHJldHVybiAxOwogCX0gZWxzZSBpZiAocG0pIHsKLQkgICAgaWYgKCEocG0tPm5v ZGUuZmxhZ3MgJiBQTV9VTlNFVCkKKwkgICAgaWYgKCghKHBtLT5ub2RlLmZsYWdzICYgUE1fVU5T RVQpIHx8IHBtLT5ub2RlLmZsYWdzICYgUE1fREVDTEFSRUQpCiAJCSYmIChsb2NhbGxldmVsID09 IHBtLT5sZXZlbCB8fCAhKG9uICYgUE1fTE9DQUwpKSkgewogCQlpZiAocG0tPm5vZGUuZmxhZ3Mg JiBQTV9USUVEKSB7CiAJCSAgICBpZiAoUE1fVFlQRShwbS0+bm9kZS5mbGFncykgIT0gUE1fU0NB TEFSKSB7CkBAIC0yODg5LDYgKzI4OTEsOCBAQCBiaW5fdHlwZXNldChjaGFyICpuYW1lLCBjaGFy ICoqYXJndiwgTGlua0xpc3QgYXNzaWducywgT3B0aW9ucyBvcHMsIGludCBmdW5jKQogCSAqCiAJ ICogRG9uJ3QgYXR0ZW1wdCB0byBzZXQgaXQgeWV0LCBpdCdzIHRvbyBlYXJseQogCSAqIHRvIGJl IGV4cG9ydGVkIHByb3Blcmx5LgorCSAqCisJICogVGhpcyBtYXkgY3JlYXRlIHRoZSBhcnJheSB3 aXRoIFBNX0RFRkFVTFRFRC4KIAkgKi8KIAlhc2cyLm5hbWUgPSBhc2ctPm5hbWU7CiAJYXNnMi5m bGFncyA9IDA7CkBAIC0yOTMwLDggKzI5MzQsMTIgQEAgYmluX3R5cGVzZXQoY2hhciAqbmFtZSwg Y2hhciAqKmFyZ3YsIExpbmtMaXN0IGFzc2lnbnMsIE9wdGlvbnMgb3BzLCBpbnQgZnVuYykKIAlp ZiAoYXNnLT52YWx1ZS5hcnJheSkgewogCSAgICBpbnQgZmxhZ3MgPSAoYXNnLT5mbGFncyAmIEFT R19LRVlfVkFMVUUpID8gQVNTUE1fS0VZX1ZBTFVFIDogMDsKIAkgICAgYXNzaWduYXBhcmFtKGFz Zy0+bmFtZSwgemxpbmtsaXN0MmFycmF5KGFzZy0+dmFsdWUuYXJyYXksIDEpLCBmbGFncyk7Ci0J fSBlbHNlIGlmIChvbGR2YWwpCi0JICAgIGFzc2lnbnNwYXJhbShhc2cwLm5hbWUsIG9sZHZhbCwg MCk7CisJfSBlbHNlIGlmIChhc2cwLnZhbHVlLnNjYWxhciB8fCBvbGR2YWwpIHsKKwkgICAgLyog V2UgaGF2ZSB0byB1bmRvIHdoYXQgd2UgZGlkIHdyb25nIHdpdGggYXNnMiAqLworCSAgICBhcG0t Pm5vZGUuZmxhZ3MgJj0gflBNX0RFRkFVTFRFRDsKKwkgICAgaWYgKG9sZHZhbCkKKwkJYXNzaWdu c3BhcmFtKGFzZzAubmFtZSwgb2xkdmFsLCAwKTsKKwl9CiAJdW5xdWV1ZV9zaWduYWxzKCk7CiAK IAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NyYy9vcHRpb25zLmMgYi9TcmMvb3B0aW9ucy5jCmlu ZGV4IDZlYTYyOTBlNS4uNzgzMDIyNTkxIDEwMDY0NAotLS0gYS9TcmMvb3B0aW9ucy5jCisrKyBi L1NyYy9vcHRpb25zLmMKQEAgLTI1OSw2ICsyNTksNyBAQCBzdGF0aWMgc3RydWN0IG9wdG5hbWUg b3B0bnNbXSA9IHsKIHt7TlVMTCwgInRyYW5zaWVudHJwcm9tcHQiLCAgIDB9LAkJCSBUUkFOU0lF TlRSUFJPTVBUfSwKIHt7TlVMTCwgInRyYXBzYXN5bmMiLAkgICAgICAwfSwJCQkgVFJBUFNBU1lO Q30sCiB7e05VTEwsICJ0eXBlc2V0c2lsZW50IiwgICAgICBPUFRfRU1VTEFURXxPUFRfQk9VUk5F fSwJIFRZUEVTRVRTSUxFTlR9LAore3tOVUxMLCAidHlwZXNldHRvdW5zZXQiLCAgICAgT1BUX0VN VUxBVEV8T1BUX0JPVVJORX0sCSBUWVBFU0VUVE9VTlNFVH0sCiB7e05VTEwsICJ1bnNldCIsCSAg ICAgIE9QVF9FTVVMQVRFfE9QVF9CU0hFTEx9LAkgVU5TRVR9LAoge3tOVUxMLCAidmVyYm9zZSIs CSAgICAgIDB9LAkJCSBWRVJCT1NFfSwKIHt7TlVMTCwgInZpIiwJCSAgICAgIDB9LAkJCSBWSU1P REV9LApkaWZmIC0tZ2l0IGEvU3JjL3BhcmFtcy5jIGIvU3JjL3BhcmFtcy5jCmluZGV4IDEyMmY1 ZGE3ZC4uMzNiYmM1NGY2IDEwMDY0NAotLS0gYS9TcmMvcGFyYW1zLmMKKysrIGIvU3JjL3BhcmFt cy5jCkBAIC0yMDkzLDcgKzIwOTMsOCBAQCBmZXRjaHZhbHVlKFZhbHVlIHYsIGNoYXIgKipwcHRy LCBpbnQgYnJhY2tzLCBpbnQgZmxhZ3MpCiAJaWYgKHNhdikKIAkgICAgKnMgPSBzYXY7CiAJKnBw dHIgPSBzOwotCWlmICghcG0gfHwgKHBtLT5ub2RlLmZsYWdzICYgUE1fVU5TRVQpKQorCWlmICgh cG0gfHwgKChwbS0+bm9kZS5mbGFncyAmIFBNX1VOU0VUKSAmJgorCQkgICAgIShwbS0+bm9kZS5m bGFncyAmIFBNX0RFQ0xBUkVEKSkpCiAJICAgIHJldHVybiBOVUxMOwogCWlmICh2KQogCSAgICBt ZW1zZXQodiwgMCwgc2l6ZW9mKCp2KSk7CkBAIC0zMDU1LDYgKzMwNTYsNyBAQCBhc3NpZ25zcGFy YW0oY2hhciAqcywgY2hhciAqdmFsLCBpbnQgZmxhZ3MpCiAJICAgICAqIERvbid0IHdhcm4gYWJv dXQgYW55dGhpbmcuCiAJICAgICAqLwogCSAgICBmbGFncyAmPSB+QVNTUE1fV0FSTjsKKwkgICAg di0+cG0tPm5vZGUuZmxhZ3MgJj0gflBNX0RFRkFVTFRFRDsKIAl9CiAJKnNzID0gJ1snOwogCXYg PSBOVUxMOwpAQCAtMzA4MCw2ICszMDgyLDcgQEAgYXNzaWduc3BhcmFtKGNoYXIgKnMsIGNoYXIg KnZhbCwgaW50IGZsYWdzKQogICAgIH0KICAgICBpZiAoZmxhZ3MgJiBBU1NQTV9XQVJOKQogCWNo ZWNrX3dhcm5fcG0odi0+cG0sICJzY2FsYXIiLCBjcmVhdGVkLCAxKTsKKyAgICB2LT5wbS0+bm9k ZS5mbGFncyAmPSB+UE1fREVGQVVMVEVEOwogICAgIGlmIChmbGFncyAmIEFTU1BNX0FVR01FTlQp IHsKIAlpZiAodi0+c3RhcnQgPT0gMCAmJiB2LT5lbmQgPT0gLTEpIHsKIAkgICAgc3dpdGNoIChQ TV9UWVBFKHYtPnBtLT5ub2RlLmZsYWdzKSkgewpAQCAtMzIzMiw2ICszMjM1LDcgQEAgYXNzaWdu YXBhcmFtKGNoYXIgKnMsIGNoYXIgKip2YWwsIGludCBmbGFncykKIAogICAgIGlmIChmbGFncyAm IEFTU1BNX1dBUk4pCiAJY2hlY2tfd2Fybl9wbSh2LT5wbSwgImFycmF5IiwgY3JlYXRlZCwgbWF5 X3dhcm5fYWJvdXRfbmVzdGVkX3ZhcnMpOworICAgIHYtPnBtLT5ub2RlLmZsYWdzICY9IH5QTV9E RUZBVUxURUQ7CiAKICAgICAvKgogICAgICAqIEF0IHRoaXMgcG9pbnQsIHdlIG1heSBoYXZlIGFy cmF5IGVudHJpZXMgY29uc2lzdGluZyBvZgpAQCAtMzQ0NCw2ICszNDQ4LDcgQEAgc2V0aHBhcmFt KGNoYXIgKnMsIGNoYXIgKip2YWwpCiAJICAgIHJldHVybiBOVUxMOwogCX0KICAgICBjaGVja193 YXJuX3BtKHYtPnBtLCAiYXNzb2NpYXRpdmUgYXJyYXkiLCBjaGVja2NyZWF0ZSwgMSk7CisgICAg di0+cG0tPm5vZGUuZmxhZ3MgJj0gflBNX0RFRkFVTFRFRDsKICAgICBzZXRhcnJ2YWx1ZSh2LCB2 YWwpOwogICAgIHVucXVldWVfc2lnbmFscygpOwogICAgIHJldHVybiB2LT5wbTsKQEAgLTM1MTUs NiArMzUyMCw3IEBAIGFzc2lnbm5wYXJhbShjaGFyICpzLCBtbnVtYmVyIHZhbCwgaW50IGZsYWdz KQogCWlmIChmbGFncyAmIEFTU1BNX1dBUk4pCiAJICAgIGNoZWNrX3dhcm5fcG0odi0+cG0sICJu dW1lcmljIiwgMCwgMSk7CiAgICAgfQorICAgIHYtPnBtLT5ub2RlLmZsYWdzICY9IH5QTV9ERUZB VUxURUQ7CiAgICAgc2V0bnVtdmFsdWUodiwgdmFsKTsKICAgICB1bnF1ZXVlX3NpZ25hbHMoKTsK ICAgICByZXR1cm4gdi0+cG07CkBAIC0zNjE5LDYgKzM2MjUsNyBAQCB1bnNldHBhcmFtX3BtKFBh cmFtIHBtLCBpbnQgYWx0ZmxhZywgaW50IGV4cCkKICAgICBlbHNlCiAJYWx0cmVtb3ZlID0gTlVM TDsKIAorICAgIHBtLT5ub2RlLmZsYWdzICY9IH5QTV9ERUNMQVJFRDsJLyogbGlrZSBrc2gsIG5v dCBsaWtlIGJhc2ggKi8KICAgICBpZiAoIShwbS0+bm9kZS5mbGFncyAmIFBNX1VOU0VUKSkKIAlw bS0+Z3N1LnMtPnVuc2V0Zm4ocG0sIGV4cCk7CiAgICAgaWYgKHBtLT5lbnYpCkBAIC0zNjUyLDYg KzM2NTksOCBAQCB1bnNldHBhcmFtX3BtKFBhcmFtIHBtLCBpbnQgYWx0ZmxhZywgaW50IGV4cCkK IAl9CiAKIAl6c2ZyZWUoYWx0cmVtb3ZlKTsKKwlpZiAoIShwbS0+bm9kZS5mbGFncyAmIFBNX1NQ RUNJQUwpKQorCSAgICBwbS0+Z3N1LnMgPSAmc3Rkc2NhbGFyX2dzdTsKICAgICB9CiAKICAgICAv KgpAQCAtNDExNiw2ICs0MTI1LDExIEBAIHRpZWRhcnJzZXRmbihQYXJhbSBwbSwgY2hhciAqeCkK IAogICAgIGlmICgqZHB0ci0+YXJycHRyKQogCWZyZWVhcnJheSgqZHB0ci0+YXJycHRyKTsKKyAg ICBlbHNlIGlmIChwbS0+ZW5hbWUpIHsKKwlQYXJhbSBhbHRwbSA9IChQYXJhbSkgcGFyYW10YWIt PmdldG5vZGUocGFyYW10YWIsIHBtLT5lbmFtZSk7CisJaWYgKGFsdHBtKQorCSAgICBhbHRwbS0+ bm9kZS5mbGFncyAmPSB+UE1fREVGQVVMVEVEOworICAgIH0KICAgICBpZiAoeCkgewogCWNoYXIg c2VwYnVmWzNdOwogCWlmIChpbWV0YShkcHRyLT5qb2luY2hhcikpCkBAIC01MDM1LDYgKzUwNDks NyBAQCBhcnJmaXhlbnYoY2hhciAqcywgY2hhciAqKnQpCiAKICAgICBpZiAoaXNzZXQoQUxMRVhQ T1JUKSkKIAlwbS0+bm9kZS5mbGFncyB8PSBQTV9FWFBPUlRFRDsKKyAgICBwbS0+bm9kZS5mbGFn cyAmPSB+UE1fREVGQVVMVEVEOwogCiAgICAgLyoKICAgICAgKiBEbyBub3QgImZpeCIgcGFyYW1l dGVycyB0aGF0IHdlcmUgbm90IGV4cG9ydGVkCkBAIC01ODM5LDggKzU4NTQsOSBAQCBwcmludHBh cmFtbm9kZShIYXNoTm9kZSBobiwgaW50IHByaW50ZmxhZ3MpCiAgICAgUGFyYW0gcGVlciA9IE5V TEw7CiAKICAgICBpZiAocC0+bm9kZS5mbGFncyAmIFBNX1VOU0VUKSB7Ci0JaWYgKHByaW50Zmxh Z3MgJiAoUFJJTlRfUE9TSVhfUkVBRE9OTFl8UFJJTlRfUE9TSVhfRVhQT1JUKSAmJgotCSAgICBw LT5ub2RlLmZsYWdzICYgKFBNX1JFQURPTkxZfFBNX0VYUE9SVEVEKSkgeworCWlmICgocHJpbnRm bGFncyAmIChQUklOVF9QT1NJWF9SRUFET05MWXxQUklOVF9QT1NJWF9FWFBPUlQpICYmCisJICAg ICBwLT5ub2RlLmZsYWdzICYgKFBNX1JFQURPTkxZfFBNX0VYUE9SVEVEKSkgfHwKKwkgICAgKHAt Pm5vZGUuZmxhZ3MgJiBQTV9ERUZBVUxURUQpID09IFBNX0RFRkFVTFRFRCkgewogCSAgICAvKgog CSAgICAgKiBTcGVjaWFsIFBPU0lYIHJ1bGVzOiBzaG93IHRoZSBwYXJhbWV0ZXIgYXMgcmVhZG9u bHkvZXhwb3J0ZWQKIAkgICAgICogZXZlbiB0aG91Z2ggaXQncyB1bnNldCwgYnV0IHdpdGggbm8g dmFsdWUuCmRpZmYgLS1naXQgYS9TcmMvc3Vic3QuYyBiL1NyYy9zdWJzdC5jCmluZGV4IDk2ZTA5 MTRlYi4uOTkyOGJlMGU5IDEwMDY0NAotLS0gYS9TcmMvc3Vic3QuYworKysgYi9TcmMvc3Vic3Qu YwpAQCAtMjU2Myw3ICsyNTYzLDggQEAgcGFyYW1zdWJzdChMaW5rTGlzdCBsLCBMaW5rTm9kZSBu LCBjaGFyICoqc3RyLCBpbnQgcXQsIGludCBwZl9mbGFncywKIAkgICAgICogSGFuZGxlIHRoZSAo dCkgZmxhZzogdmFsdWUgbm93IGJlY29tZXMgdGhlIHR5cGUKIAkgICAgICogaW5mb3JtYXRpb24g Zm9yIHRoZSBwYXJhbWV0ZXIuCiAJICAgICAqLwotCSAgICBpZiAodiAmJiB2LT5wbSAmJiAhKHYt PnBtLT5ub2RlLmZsYWdzICYgUE1fVU5TRVQpKSB7CisJICAgIGlmICh2ICYmIHYtPnBtICYmICgo di0+cG0tPm5vZGUuZmxhZ3MgJiBQTV9ERUNMQVJFRCkgfHwKKwkJCSAgICAgICAhKHYtPnBtLT5u b2RlLmZsYWdzICYgUE1fVU5TRVQpKSkgewogCQlpbnQgZiA9IHYtPnBtLT5ub2RlLmZsYWdzOwog CiAJCXN3aXRjaCAoUE1fVFlQRShmKSkgewpkaWZmIC0tZ2l0IGEvU3JjL3pzaC5oIGIvU3JjL3pz aC5oCmluZGV4IGQ3MGE0MDE3Yy4uYWY5YjRmYjY3IDEwMDY0NAotLS0gYS9TcmMvenNoLmgKKysr IGIvU3JjL3pzaC5oCkBAIC0xOTI5LDggKzE5MjksMTAgQEAgc3RydWN0IHRpZWRkYXRhIHsKIAkJ CQkgICBtYWRlIHJlYWQtb25seSBieSB0aGUgdXNlciAgICAgICAgICAgICAgICovCiAjZGVmaW5l IFBNX1JFQURPTkxZX1NQRUNJQUwgKFBNX1NQRUNJQUx8UE1fUkVBRE9OTFl8UE1fUk9fQllfREVT SUdOKQogI2RlZmluZSBQTV9ET05USU1QT1JUCSgxPDwyMikJLyogZG8gbm90IGltcG9ydCB0aGlz IHZhcmlhYmxlICAgICAgICAgICAgICAqLworI2RlZmluZSBQTV9ERUNMQVJFRAkoMTw8MjIpIC8q IGV4cGxpY2l0bHkgbmFtZWQgd2l0aCB0eXBlc2V0ICAgICAgICAgICAgKi8KICNkZWZpbmUgUE1f UkVTVFJJQ1RFRAkoMTw8MjMpIC8qIGNhbm5vdCBiZSBjaGFuZ2VkIGluIHJlc3RyaWN0ZWQgbW9k ZSAgICAgKi8KICNkZWZpbmUgUE1fVU5TRVQJKDE8PDI0KQkvKiBoYXMgbnVsbCB2YWx1ZSAgICAg ICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBNX0RFRkFVTFRFRAkoUE1fREVDTEFS RUR8UE1fVU5TRVQpCiAjZGVmaW5lIFBNX1JFTU9WQUJMRQkoMTw8MjUpCS8qIHNwZWNpYWwgY2Fu IGJlIHJlbW92ZWQgZnJvbSBwYXJhbXRhYiAgICAgKi8KICNkZWZpbmUgUE1fQVVUT0xPQUQJKDE8 PDI2KSAvKiBhdXRvbG9hZGVkIGZyb20gbW9kdWxlICAgICAgICAgICAgICAgICAgICovCiAjZGVm aW5lIFBNX05PUkVTVE9SRQkoMTw8MjcpCS8qIGRvIG5vdCByZXN0b3JlIHZhbHVlIG9mIGxvY2Fs IHNwZWNpYWwgICAgKi8KQEAgLTI1MzYsNiArMjUzOCw3IEBAIGVudW0gewogICAgIFRSQU5TSUVO VFJQUk9NUFQsCiAgICAgVFJBUFNBU1lOQywKICAgICBUWVBFU0VUU0lMRU5ULAorICAgIFRZUEVT RVRUT1VOU0VULAogICAgIFVOU0VULAogICAgIFZFUkJPU0UsCiAgICAgVklNT0RFLApkaWZmIC0t Z2l0IGEvVGVzdC9EMDZzdWJzY3JpcHQuenRzdCBiL1Rlc3QvRDA2c3Vic2NyaXB0Lnp0c3QKaW5k ZXggYzFhOGQ3OWNmLi5hZGJkMzk4YzQgMTAwNjQ0Ci0tLSBhL1Rlc3QvRDA2c3Vic2NyaXB0Lnp0 c3QKKysrIGIvVGVzdC9EMDZzdWJzY3JpcHQuenRzdApAQCAtMjg5LDMgKzI4OSw4IEBAIEY6UmVn cmVzc2lvbiB0ZXN0IGZvciB3b3JrZXJzLzQyMjk3CiA+MTQgMjQKID5iIGIKID5iP3JiYXogZm9v Yj9yCisKKyAgaT0xLDMKKyAgW1sgJHthWyRpXX0gPSAke2FbaV19IF1dCiswZjpNYXRoIGV2YWx1 YXRpb24gb2YgY29tbWFzIGluIGFycmF5IHN1YnNjcmlwdHMKK0Y6SW4gbWF0aCwgKCgkaSkpIHNo b3VsZCBiZSB0aGUgc2FtZSBhcyAoKGkpKSwgc2VlIHdvcmtlcnMvNDc3NDguCmRpZmYgLS1naXQg YS9UZXN0L0UwMW9wdGlvbnMuenRzdCBiL1Rlc3QvRTAxb3B0aW9ucy56dHN0CmluZGV4IDQxNWY0 NmNkNy4uNzI3NDllNmFiIDEwMDY0NAotLS0gYS9UZXN0L0UwMW9wdGlvbnMuenRzdAorKysgYi9U ZXN0L0UwMW9wdGlvbnMuenRzdApAQCAtMTQ1MSwzICsxNDUxLDE4IEBAIEY6SWYgdGhpcyB0ZXN0 IGZhaWxzIGF0IHRoZSBmaXJzdCB1bnNldG9wdCwgcmVmZXIgdG8gUDAxcHJpdmlsZWdlZC56dHN0 LgogMHE6Uk1fU1RBUl9TSUxFTlQKICo+enNoOiBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBhbGwg MTUgZmlsZXMgaW4gJHtQV0Q6aH0vb3B0aW9ucy50bXAgXFt5blxdXD8gJHtCRUx9KHxuKQogKj56 c2g6IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIChhbGwgPC0+fG1vcmUgdGhhbiA8LT4pIGZpbGVz IGluIC8gXFt5blxdXD8gJHtCRUx9KHxuKQorCisgICgpIHsKKyAgICBsb2NhbCB2YXIKKyAgICBw cmludCAkeyh0KXZhcn0KKyAgfQorMDoodCkgcmV0dXJucyBjb3JyZWN0IHR5cGUKKz5zY2FsYXIt bG9jYWwKKworICAoKSB7CisgICAgcmVhZG9ubHkgdmFyCisgICAgdHlwZXNldCAtcCB2YXIKKyAg fQorMDpyZWFkb25seSB3aXRoIHR5cGVzZXQgLXAKK0Y6Y29tcGFyZSBFMDNwb3NpeC56dHN0Cis+ dHlwZXNldCAtciB2YXI9JycKZGlmZiAtLWdpdCBhL1Rlc3QvRTAzcG9zaXguenRzdCBiL1Rlc3Qv RTAzcG9zaXguenRzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjdkYjRj MGM4NAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3QvRTAzcG9zaXguenRzdApAQCAtMCwwICsxLDE2 MyBAQAorIyBUZXN0IFBPU0lYLXNwZWNpZmljIGJlaGF2aW9yCisjIEN1cnJlbnRseSB0aGlzIGNv dmVycyBvbmx5IFBPU0lYQlVJTFRJTlMsIG90aGVyIGJlaGF2aW9ycyBhcmUgaW4gdGhlaXIKKyMg bW9yZSBkaXJlY3RseSByZWxhdGVkIHNlY3Rpb25zCisjCisKKyVwcmVwCisgc2V0b3B0IFBPU0lY X0JVSUxUSU5TIFRZUEVTRVRfVE9fVU5TRVQKKworJXRlc3QKKworIGxvY2FsIHBhcmVudGVudj1w cmVzZXJ2ZWQKKyBmbigpIHsKKyAgdHlwZXNldCAtaCArZyAtbSBcKgorICB1bnNldCAtbSBcKgor ICBpbnRlZ2VyIGk9OQorICBmbG9hdCAtSCBmPTkKKyAgZGVjbGFyZSAtdCBzY2FsYXIKKyAgZGVj bGFyZSAtSCAtYSBhcnJheQorICB0eXBlc2V0CisgIHR5cGVzZXQgKworIH0KKyBmbgorIGVjaG8g JHBhcmVudGVudgorMDpQYXJhbWV0ZXIgaGlkaW5nIGFuZCB0YWdnaW5nLCBwcmludGluZyB0eXBl cyBhbmQgdmFsdWVzCis+YXJyYXkgbG9jYWwgYXJyYXkKKz5mbG9hdCBsb2NhbCBmCis+aW50ZWdl ciBsb2NhbCBpPTkKKz5sb2NhbCB0YWdnZWQgc2NhbGFyCis+YXJyYXkgbG9jYWwgYXJyYXkKKz5m bG9hdCBsb2NhbCBmCis+aW50ZWdlciBsb2NhbCBpCis+bG9jYWwgdGFnZ2VkIHNjYWxhcgorPnBy ZXNlcnZlZAorCisgIHJlYWRvbmx5IGZvbz1iYXIgbm92YWx1ZQorICByZWFkb25seSAtcAorMDpy ZWFkb25seSAtcCBvdXRwdXQgKG5vIHJlYWRvbmx5IHNwZWNpYWxzKQorPnJlYWRvbmx5IGZvbz1i YXIKKz5yZWFkb25seSBub3ZhbHVlCisKKyAgbG9jYWwgLWEgbXlhcnJheQorICB0eXBlc2V0IC1w MSBteWFycmF5CisgIG15YXJyYXk9KCImIiBzYW5kICciIicgIiIgcGx1Z2gpCisgIHR5cGVzZXQg LXAxIG15YXJyYXkKKzA6dHlwZXNldCAtcDEgb3V0cHV0IGZvciBhcnJheQorPnR5cGVzZXQgLWEg bXlhcnJheQorPnR5cGVzZXQgLWEgbXlhcnJheT0oCis+ICAnJicKKz4gIHNhbmQKKz4gICciIicK Kz4gICcnCis+ICBwbHVnaAorPikKKworICBsb2NhbCAtQSBteWhhc2gKKyAgdHlwZXNldCAtcDEg bXloYXNoCisgIG15aGFzaD0oW29uZV09dHdvIFt0aHJlZV09IFtmb3VyXT0iW10iKQorICB0eXBl c2V0IC1wMSBteWhhc2gKKzA6dHlwZXNldCAtcDEgb3V0cHV0IGZvciBhc3NvY2lhdGl2ZSBhcnJh eQorPnR5cGVzZXQgLUEgbXloYXNoCis+dHlwZXNldCAtQSBteWhhc2g9KAorPiAgW2ZvdXJdPSdb XScKKz4gIFtvbmVdPXR3bworPiAgW3RocmVlXT0nJworPikKKworICBzdHI9cworICBhcnI9KGEp CisgIHR5cGVzZXQgLUEgYXNzCisgIGFzcz0oYSBhKQorICBpbnRlZ2VyIGk9MAorICBmbG9hdCBm PTAKKyAgcHJpbnQgJHsodClzdHJ9ICR7KHQpYXJyfSAkeyh0KWFzc30gJHsodClpfSAkeyh0KWZ9 CiswOiR7KHQpLi4ufQorPnNjYWxhciBhcnJheSBhc3NvY2lhdGlvbi1sb2NhbCBpbnRlZ2VyLWxv Y2FsIGZsb2F0LWxvY2FsCisKKyAgcHJpbnQgJGVtcHR5WyhpKV0gJGVtcHR5WyhJKV0KKzA6KGkp IGFuZCAoSSkgcmV0dXJuIG5vdGhpbmcgZm9yIGVtcHR5IGFycmF5Cis+CisKKyAgKAorICAjIHJl c2VydmVkIHdvcmRzIGFyZSBoYW5kbGVkIGR1cmluZyBwYXJzaW5nLAorICAjIGhlbmNlIGV2YWwu Li4KKyAgZGlzYWJsZSAtciB0eXBlc2V0CisgIGV2YWwgJworICBzZXRvcHQga3NodHlwZXNldAor ICBrdHZhcnM9KGt0djEga3R2MikKKyAgdHlwZXNldCBrdGZvbz1gZWNobyBhcmcxIGFyZzJgICRr dHZhcnMKKyAgKCkgeworICAgIGxvY2FsIGt0Zm9vCisgICAgcHJpbnQgJCtrdHYxICQra3R2MiAk K2t0djMgJCtrdGZvbworICB9CisgIHByaW50ICRrdGZvbworICB1bnNldG9wdCBrc2h0eXBlc2V0 CisgIHR5cGVzZXQgbm9rdGZvbz1gZWNobyBub2t0YXJnMSBub2t0YXJnMmAKKyAgcHJpbnQgJG5v a3Rmb28KKyAgcHJpbnQgJCtub2t0YXJnMSAkK25va3RhcmcyCisgIHVuc2V0IGt0Zm9vIGt0djEg a3R2MiBub2t0Zm9vIG5va3RhcmcyCisgICcKKyAgKQorMDpLU0hfVFlQRVNFVCBvcHRpb24KKz4w IDAgMCAwCis+YXJnMSBhcmcyCis+bm9rdGFyZzEKKz4wIDAKKworICAoKSB7CisgICAgbG9jYWwg dmFyCisgICAgcHJpbnQgJHsodCl2YXJ9CisgIH0KKzA6KHQpIHJldHVybnMgY29ycmVjdCB0eXBl Cis+c2NhbGFyLWxvY2FsCisKKyAgKCkgeworICAgIHJlYWRvbmx5IHZhcgorICAgIHR5cGVzZXQg LXAgdmFyCisgIH0KKzA6cmVhZG9ubHkgd2l0aCB0eXBlc2V0IC1wCis+dHlwZXNldCAtZyAtciB2 YXIKKworIyBUZXN0cyBleHBlY3RlZCB0byBmYWlsCisKKyAgZWNobyAtCiswZjpBIHNpbmdsZSAi LSIgZm9yIGVjaG8gZG9lcyBub3QgZW5kIHRoZSBhcmd1bWVudHMKK0Y6UE9TSVggcmVxdWlyZXMg YSBzb2xpdGFyeSAiLSIgdG8gYmUgYSBwbGFpbiBhcmd1bWVudAorPi0KKworICBBUkdWMD1zaCAk WlRTVF90ZXN0ZGlyLy4uL1NyYy96c2ggLWMgJ2ZvcmVhY2goKSB7IHRydWU7IH0nCistZjoiZm9y ZWFjaCIgaXMgbm90IGEgcmVzZXJ2ZWQgd29yZAorCisgIEFSR1YwPXNoICRaVFNUX3Rlc3RkaXIv Li4vU3JjL3pzaCAtYyAnZW5kKCkgeyB0cnVlOyB9CistZjoiZW5kIiBpcyBub3QgYSByZXNlcnZl ZCB3b3JkCisKKyAgYT0nYTpiOicgQVJHVjA9c2ggJFpUU1RfdGVzdGRpci8uLi9TcmMvenNoIC1j ICdJRlM9OjsgcHJpbnRmICI8JXM+XG4iICRhJworMGY6SUZTIGlzIGEgc2VwYXJhdG9yLCBub3Qg YSBkZWxpbWl0ZXIKKz48YT4KKz48Yj4KKworICBhPSQnXHJhXHJccmInIEFSR1YwPXNoICRaVFNU X3Rlc3RkaXIvLi4vU3JjL3pzaCAtYyAnSUZTPTo7IHByaW50ZiAiPCVzPlxuIiAkYScKKzBmOkFs bCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYXJlICJJRlMgd2hpdGVzcGFjZSIKK0Y6aXNzcGFjZSgn XHInKSBpcyB0cnVlIHNvIFxyIHNob3VsZCBiZWhhdmUgbGlrZSBzcGFjZSwgXHQsIFxuCitGOlRo aXMgbWF5IGFsc28gbmVlZCB0byBhcHBseSB0byBtdWx0aWJ5dGUgd2hpdGVzcGFjZQorPjxhPgor PjxiPgorCisgIEFSR1YwPXNoICRaVFNUX3Rlc3RkaXIvLi4vU3JjL3pzaCAtYyAnSUZTPTI7IHBy aW50ZiAiPCVzPlxuIiAkKCgxMSoxMSkpJworMGY6SUZTIGFwcGxpZXMgdG8gbWF0aCByZXN1bHRz IChudW1iZXJzIHRyZWF0ZWQgYXMgc3RyaW5ncykKKz48MT4KKz48MT4KKworICBBUkdWMD1zaCAk WlRTVF90ZXN0ZGlyLy4uL1NyYy96c2ggLWMgJ2luZj00MjsgZWNobyAkKChpbmYpKScKKzBmOkFs bCBpZGVudGlmaWVycyBhcmUgdmFyaWFibGUgcmVmZXJlbmNlcyBpbiBQT1NJWCBhcml0aG1ldGlj CitGOlBPU0lYIGhhcyBuZWl0aGVyIG1hdGggZnVuY3Rpb25zIG5vciBmbG9hdGluZyBwb2ludAor PjQyCisKKyAgQVJHVjA9c2ggJFpUU1RfdGVzdGRpci8uLi9TcmMvenNoIC1jICdFVUlEPTEwOyBl Y2hvICIkRVVJRCInCistZjpFVUlEIGlzIG5vdCBhIHNwZWNpYWwgdmFyaWFibGUKKz4xMAorCisg IEFSR1YwPXNoICRaVFNUX3Rlc3RkaXIvLi4vU3JjL3pzaCAtYyAicHJpbnRmICc8JTEwcz5cbicg U3QkJ1xNLUNcTS0pJ3BoYW5lIgorMGY6V2lkdGggb2YgJXMgaXMgY29tcHV0ZWQgaW4gYnl0ZXMg bm90IGNoYXJhY3RlcnMKK0Y6VGhpcyBpcyBjb25zaWRlcmVkIGEgYnVnZml4IGluIHpzaAorPjwg IFN0w6lwaGFuZT4KZGlmZiAtLWdpdCBhL1Rlc3QvVjEwcHJpdmF0ZS56dHN0IGIvVGVzdC9WMTBw cml2YXRlLnp0c3QKaW5kZXggYTNhNjM4NjdiLi4wM2U4MjU5ZDUgMTAwNjQ0Ci0tLSBhL1Rlc3Qv VjEwcHJpdmF0ZS56dHN0CisrKyBiL1Rlc3QvVjEwcHJpdmF0ZS56dHN0CkBAIC0xOSwxNCArMTks MTQgQEAKICAoKSB7CiAgIHByaW50ICRzY2FsYXJfdGVzdAogICBwcml2YXRlIHNjYWxhcl90ZXN0 Ci0gIHByaW50ICQrc2NhbGFyX3Rlc3QKKyAgdHlwZXNldCArbSBzY2FsYXJfdGVzdAogICB1bnNl dCBzY2FsYXJfdGVzdAogICBwcmludCAkK3NjYWxhcl90ZXN0CiAgfQogIHByaW50ICRzY2FsYXJf dGVzdAogMDpiYXNpYyBzY29wZSBoaWRpbmcKID50b3BsZXZlbAotPjEKKz5sb2NhbCBzY2FsYXJf dGVzdAogPjAKID50b3BsZXZlbAogCkBAIC00NSwxNCArNDUsMTQgQEAKICBwcmludCAkK3Vuc2V0 X3Rlc3QKICAoKSB7CiAgIHByaXZhdGUgdW5zZXRfdGVzdAotICBwcmludCAkK3Vuc2V0X3Rlc3QK KyAgdHlwZXNldCArbSB1bnNldF90ZXN0CiAgIHVuc2V0X3Rlc3Q9c2V0bWUKICAgcHJpbnQgJHVu c2V0X3Rlc3QKICB9CiAgcHJpbnQgJCt1bnNldF90ZXN0CiAwOnZhcmlhYmxlIGRlZmluZWQgb25s eSBpbiBzY29wZQogPjAKLT4xCis+bG9jYWwgdW5zZXRfdGVzdAogPnNldG1lCiA+MAogCkBAIC02 MiwxMyArNjIsMTMgQEAKICAgbG9jYWwgLVBhIGFycmF5X3Rlc3Q9KGluIGZ1bmN0aW9uKQogICAo KSB7CiAgICBwcml2YXRlIGFycmF5X3Rlc3QKLSAgIHByaW50ICQrYXJyYXlfdGVzdAorICAgdHlw ZXNldCArbSBhcnJheV90ZXN0CiAgIH0KICAgcHJpbnQgJGFycmF5X3Rlc3QKICB9CiAgcHJpbnQg JGFycmF5X3Rlc3QKIDA6bmVzdGVkIHNjb3BlIHdpdGggZGlmZmVyZW50IHR5cGUsIGNvcnJlY3Rs eSByZXN0b3JlZAotPjEKKz5sb2NhbCBhcnJheV90ZXN0CiA+aW4gZnVuY3Rpb24KID50b3AgbGV2 ZWwKIApkaWZmIC0tZ2l0IGEvVGVzdC9ydW50ZXN0cy56c2ggYi9UZXN0L3J1bnRlc3RzLnpzaApp bmRleCA1NjIyMzRkOTEuLmI2NmQ1NzliNiAxMDA2NDQKLS0tIGEvVGVzdC9ydW50ZXN0cy56c2gK KysrIGIvVGVzdC9ydW50ZXN0cy56c2gKQEAgLTcsNyArNyw3IEBAIGVtdWxhdGUgenNoCiAjIHBy b3RlY3QgZnJvbSBjYXRhc3Ryb3BoaWMgZmFpbHVyZSBvZiBhbiBpbmRpdmlkdWFsIHRlc3QuCiAj IFdlIGNvdWxkIHByb2JhYmx5IGRvIHRoYXQgd2l0aCBzdWJzaGVsbHMgaW5zdGVhZC4KIAotaW50 ZWdlciBzdWNjZXNzIGZhaWx1cmUgc2tpcHBlZCByZXR2YWwKK2ludGVnZXIgc3VjY2Vzcz0wIGZh aWx1cmU9MCBza2lwcGVkPTAgcmV0dmFsCiBmb3IgZmlsZSBpbiAiJHsoZilaVFNUX3Rlc3RsaXN0 fSI7IGRvCiAgICRaVFNUX2V4ZSArWiAtZiAkWlRTVF9zcmNkaXIvenRzdC56c2ggJGZpbGUKICAg cmV0dmFsPSQ/CmRpZmYgLS1naXQgYS9UZXN0L3p0c3QuenNoIGIvVGVzdC96dHN0LnpzaAppbmRl eCBlNjY4YWU5NDIuLmE1OWMwNmRjZiAxMDA3NTUKLS0tIGEvVGVzdC96dHN0LnpzaAorKysgYi9U ZXN0L3p0c3QuenNoCkBAIC02MCw3ICs2MCw3IEBAIFpUU1RfbWFpbm9wdHM9KCR7KGt2KW9wdGlv bnN9KQogWlRTVF90ZXN0ZGlyPSRQV0QKIFpUU1RfdGVzdG5hbWU9JDEKIAotaW50ZWdlciBaVFNU X3Rlc3RmYWlsZWQKK2ludGVnZXIgWlRTVF90ZXN0ZmFpbGVkPTAKIAogIyBUaGlzIGlzIFBPU0lY IG5vbnNlbnNlLiAgQmVjYXVzZSBvZiB0aGUgdmFndWUgZmVlbGluZyBzb21lb25lLCBzb21ld2hl cmUKICMgbWF5IG9uZSBkYXkgbmVlZCB0byBleGFtaW5lIHRoZSBhcmd1bWVudHMgb2YgInRhaWwi IHVzaW5nIGEgc3RhbmRhcmQK --000000000000aae9fa05bfe85a5d--