From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 52753 invoked by alias); 7 Sep 2016 21:01:37 -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 52652 invoked by uid 89); 7 Sep 2016 21:01:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.2 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=no version=3.3.2 spammy=Morin, 4837, 483,7, rank X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-vk0-f67.google.com Received: from mail-vk0-f67.google.com (HELO mail-vk0-f67.google.com) (209.85.213.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 07 Sep 2016 21:01:26 +0000 Received: by mail-vk0-f67.google.com with SMTP id 16so202740vko.2; Wed, 07 Sep 2016 14:01:26 -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:to:cc; bh=kpq0+AhycYPMkBUylOQ1hgDe3GJN51PURwl707uEEYw=; b=bnUmeMISAZgFaoWnhuawjT/wBmBji0kUS6ZOOjreZAOpH2v8wEkUEnQvAdXromMULh IrQu3BWHphZ58ctU+ZHYTMmH5dpP4uxb+UFGR19xDvWJNfKXY5LuhnVpVv39fyBPG+4z g2ilkrZVmksfWsWOBc61M5xrKiqwDxEyOtmFEeIkTQ2zB9RBBdXECYAfHPpaDUPhmFaK bdnYglODiDZ3UxBoNbERlIPs6IQCH7ZZ0TKfQaJOeNONduJKsiLRi+9YGFt5lSzfDBuw kHOQJ7sNUkCfzRHc/6f95OHEyiDqObEPgawzGgfhRQZEExT8P1IAJ9knCq7EBGwkhV8p xn9g== X-Gm-Message-State: AE9vXwNmxUO0Y+RJMPPAEfQi1DCDJI8SFZQlKmkhPnPar9js5yfMD6k0PNm2J6MY07RwsFa0X+JzR9IHnxI1fQ== X-Received: by 10.31.189.1 with SMTP id n1mr15188536vkf.134.1473282084898; Wed, 07 Sep 2016 14:01:24 -0700 (PDT) MIME-Version: 1.0 Received: by 10.176.4.112 with HTTP; Wed, 7 Sep 2016 14:01:24 -0700 (PDT) In-Reply-To: References: <20160720113913.24e1f404@vepi2> From: Alessandro Fanfarillo Date: Wed, 07 Sep 2016 21:04:00 -0000 Message-ID: Subject: Re: [Fortran, Patch] First patch for coarray FAILED IMAGES (TS 18508) To: Paul Richard Thomas Cc: Mikael Morin , Andre Vehreschild , gfortran , gcc-patches , Tobias Burnus Content-Type: multipart/mixed; boundary=001a114db33654104d053bf13738 X-IsSubscribed: yes X-SW-Source: 2016-09/txt/msg00412.txt.bz2 --001a114db33654104d053bf13738 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 4550 Dear all, the attached patch supports failed images also when -fcoarray=3Dsingle is u= sed. Built and regtested on x86_64-pc-linux-gnu. Cheers, Alessandro 2016-08-09 5:22 GMT-06:00 Paul Richard Thomas : > Hi Sandro, > > As far as I can see, this is OK barring a couple of minor wrinkles and > a question: > > For coarray_failed_images_err.f90 and coarray_image_status_err.f90 you > have used the option -fdump-tree-original without making use of the > tree dump. > > Mikael asked you to provide an executable test with -fcoarray=3Dsingle. > Is this not possible for some reason? > > Otherwise, this is OK for trunk. > > Thanks for the patch. > > Paul > > On 4 August 2016 at 05:07, Alessandro Fanfarillo > wrote: >> * PING * >> >> 2016-07-21 13:05 GMT-06:00 Alessandro Fanfarillo : >>> Dear Mikael and all, >>> >>> in attachment the new patch, built and regtested on x86_64-pc-linux-gnu. >>> >>> Cheers, >>> Alessandro >>> >>> 2016-07-20 13:17 GMT-06:00 Mikael Morin : >>>> Le 20/07/2016 =C3=A0 11:39, Andre Vehreschild a =C3=A9crit : >>>>> >>>>> Hi Mikael, >>>>> >>>>> >>>>>>> + if(st =3D=3D ST_FAIL_IMAGE) >>>>>>> + new_st.op =3D EXEC_FAIL_IMAGE; >>>>>>> + else >>>>>>> + gcc_unreachable(); >>>>>> >>>>>> You can use >>>>>> gcc_assert (st =3D=3D ST_FAIL_IMAGE); >>>>>> foo...; >>>>>> instead of >>>>>> if (st =3D=3D ST_FAIL_IMAGE) >>>>>> foo...; >>>>>> else >>>>>> gcc_unreachable (); >>>>> >>>>> >>>>> Be careful, this is not 100% identical in the general case. For older >>>>> gcc version (gcc < 4008) gcc_assert() is mapped to nothing, esp. not = to >>>>> an abort(), so the behavior can change. But in this case everything is >>>>> fine, because the patch is most likely not backported. >>>>> >>>> Didn't know about this. The difference seems to be very subtle. >>>> I don't mind much anyway. The original version can stay if preferred, = this >>>> was just a suggestion. >>>> >>>> By the way, if the function is inlined in its single caller, the asser= t or >>>> unreachable statement can be removed, which avoids choosing between th= em. >>>> That's another suggestion. >>>> >>>> >>>>>>> + >>>>>>> + return MATCH_YES; >>>>>>> + >>>>>>> + syntax: >>>>>>> + gfc_syntax_error (st); >>>>>>> + >>>>>>> + return MATCH_ERROR; >>>>>>> +} >>>>>>> + >>>>>>> +match >>>>>>> +gfc_match_fail_image (void) >>>>>>> +{ >>>>>>> + /* if (!gfc_notify_std (GFC_STD_F2008_TS, "FAIL IMAGE statement >>>>>>> at %C")) */ >>>>>>> + /* return MATCH_ERROR; */ >>>>>>> + >>>>>> >>>>>> Can this be uncommented? >>>>>> >>>>>>> + return fail_image_statement (ST_FAIL_IMAGE); >>>>>>> +} >>>>>>> >>>>>>> /* Match LOCK/UNLOCK statement. Syntax: >>>>>>> LOCK ( lock-variable [ , lock-stat-list ] ) >>>>>>> diff --git a/gcc/fortran/trans-intrinsic.c >>>>>>> b/gcc/fortran/trans-intrinsic.c index 1aaf4e2..b2f5596 100644 >>>>>>> --- a/gcc/fortran/trans-intrinsic.c >>>>>>> +++ b/gcc/fortran/trans-intrinsic.c >>>>>>> @@ -1647,6 +1647,24 @@ trans_this_image (gfc_se * se, gfc_expr >>>>>>> *expr) m, lbound)); >>>>>>> } >>>>>>> >>>>>>> +static void >>>>>>> +gfc_conv_intrinsic_image_status (gfc_se *se, gfc_expr *expr) >>>>>>> +{ >>>>>>> + unsigned int num_args; >>>>>>> + tree *args,tmp; >>>>>>> + >>>>>>> + num_args =3D gfc_intrinsic_argument_list_length (expr); >>>>>>> + args =3D XALLOCAVEC (tree, num_args); >>>>>>> + >>>>>>> + gfc_conv_intrinsic_function_args (se, expr, args, num_args); >>>>>>> + >>>>>>> + if (flag_coarray =3D=3D GFC_FCOARRAY_LIB) >>>>>>> + { >>>>>> >>>>>> Can everything be put under the if? >>>>>> Does it work with -fcoarray=3Dsingle? >>>>> >>>>> >>>>> IMO coarray=3Dsingle should not generate code here, therefore putting >>>>> everything under the if should to fine. >>>>> >>>> My point was more avoiding generating code for the arguments if they a= re not >>>> used in the end. >>>> Regarding the -fcoarray=3Dsingle case, the function returns a result, = which >>>> can be used in an expression, so I don't think it will work without at= least >>>> hardcoding a fixed value as result in that case. >>>> But even that wouldn't be enough, as the function wouldn't work consis= tently >>>> with the fail image statement. >>>> >>>>> Sorry for the comments ... >>>>> >>>> Comments are welcome here, as far as I know. ;-) >>>> >>>> Mikael > > > > -- > The difference between genius and stupidity is; genius has its limits. > > Albert Einstein --001a114db33654104d053bf13738 Content-Type: text/plain; charset=US-ASCII; name="first_complete_patch_REV2.diff" Content-Disposition: attachment; filename="first_complete_patch_REV2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iste2q6c0 Content-length: 34327 Y29tbWl0IDEzMjEzNjQyNjAzYjQ5NDFhMmU0ZWEwODViMGJmZDk5OTk1Y2Iz N2YKQXV0aG9yOiBBbGVzc2FuZHJvIEZhbmZhcmlsbG8gPGVsZmFuZmFAdWNh ci5lZHU+CkRhdGU6ICAgV2VkIFNlcCA3IDEzOjAwOjE3IDIwMTYgLTA2MDAK CiAgICBTZWNvbmQgUmV2aWV3IG9mIGZhaWxlZCBpbWFnZSBwYXRjaAoKZGlm ZiAtLWdpdCBhL2djYy9mb3J0cmFuL2NoZWNrLmMgYi9nY2MvZm9ydHJhbi9j aGVjay5jCmluZGV4IGZmNWU4MGIuLjExMGJlYzAgMTAwNjQ0Ci0tLSBhL2dj Yy9mb3J0cmFuL2NoZWNrLmMKKysrIGIvZ2NjL2ZvcnRyYW4vY2hlY2suYwpA QCAtMTIxNyw2ICsxMjE3LDgyIEBAIGdmY19jaGVja19ldmVudF9xdWVyeSAo Z2ZjX2V4cHIgKmV2ZW50LCBnZmNfZXhwciAqY291bnQsIGdmY19leHByICpz dGF0KQogICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbAorZ2ZjX2NoZWNrX2lt YWdlX3N0YXR1cyAoZ2ZjX2V4cHIgKmltYWdlLCBnZmNfZXhwciAqdGVhbSkK K3sKKyAgaWYgKCF0eXBlX2NoZWNrIChpbWFnZSwgMSwgQlRfSU5URUdFUikp CisgICAgcmV0dXJuIGZhbHNlOworCisgIGludCBpID0gZ2ZjX3ZhbGlkYXRl X2tpbmQgKEJUX0lOVEVHRVIsIGltYWdlLT50cy5raW5kLCBmYWxzZSk7Cisg IGludCBqID0gZ2ZjX3ZhbGlkYXRlX2tpbmQgKEJUX0lOVEVHRVIsIGdmY19k ZWZhdWx0X2ludGVnZXJfa2luZCwgZmFsc2UpOworCisgIGlmIChnZmNfaW50 ZWdlcl9raW5kc1tpXS5yYW5nZSA8IGdmY19pbnRlZ2VyX2tpbmRzW2pdLnJh bmdlKQorICAgIHsKKyAgICAgIGdmY19lcnJvciAoIklNQUdFIGFyZ3VtZW50 IG9mIHRoZSBJTUFHRV9TVEFUVVMgaW50cmluc2ljIGZ1bmN0aW9uIGF0ICVM ICIKKwkJICJzaGFsbCBoYXZlIGF0IGxlYXN0IHRoZSByYW5nZSBvZiB0aGUg ZGVmYXVsdCBpbnRlZ2VyIiwKKwkJICZpbWFnZS0+d2hlcmUpOworICAgICAg cmV0dXJuIGZhbHNlOworICAgIH0KKworICBqID0gZ2ZjX3ZhbGlkYXRlX2tp bmQgKEJUX0lOVEVHRVIsIGdmY19kZWZhdWx0X2ludGVnZXJfa2luZCoyLCBm YWxzZSk7CisKKyAgaWYgKGdmY19pbnRlZ2VyX2tpbmRzW2ldLnJhbmdlID4g Z2ZjX2ludGVnZXJfa2luZHNbal0ucmFuZ2UpCisgICAgeworICAgICAgZ2Zj X2Vycm9yICgiSU1BR0UgYXJndW1lbnQgb2YgdGhlIElNQUdFX1NUQVRVUyBp bnRyaW5zaWMgZnVuY3Rpb24gYXQgJUwgIgorCQkgInNoYWxsIGhhdmUgYXQg bW9zdCB0aGUgcmFuZ2Ugb2YgdGhlIGRvdWJsZSBwcmVjaXNpb24gaW50ZWdl ciIsCisJCSAmaW1hZ2UtPndoZXJlKTsKKyAgICAgIHJldHVybiBmYWxzZTsK KyAgICB9CisKKyAgaWYgKHRlYW0pCisgICAgeworICAgICAgZ2ZjX2Vycm9y ICgiVEVBTSBhcmd1bWVudCBvZiB0aGUgSU1BR0VfU1RBVFVTIGludHJpbnNp YyBmdW5jdGlvbiBhdCAlTCAiCisJCSAibm90IHlldCBzdXBwb3J0ZWQiLAor CQkgJnRlYW0tPndoZXJlKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9 CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wKK2dmY19jaGVja19mYWls ZWRfaW1hZ2VzIChnZmNfZXhwciAqdGVhbSwgZ2ZjX2V4cHIgKmtpbmQpCit7 CisgIGlmICh0ZWFtKQorICAgIHsKKyAgICAgIGdmY19lcnJvciAoIlRFQU0g YXJndW1lbnQgb2YgdGhlIEZBSUxFRF9JTUFHRVMgaW50cmluc2ljIGZ1bmN0 aW9uICIKKwkJICJhdCAlTCBub3QgeWV0IHN1cHBvcnRlZCIsICZ0ZWFtLT53 aGVyZSk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgIGlmIChr aW5kKQorICAgIHsKKyAgICAgIGludCBpID0gZ2ZjX3ZhbGlkYXRlX2tpbmQg KEJUX0lOVEVHRVIsIGtpbmQtPnRzLmtpbmQsIGZhbHNlKTsKKyAgICAgIGlu dCBqID0gZ2ZjX3ZhbGlkYXRlX2tpbmQgKEJUX0lOVEVHRVIsIGdmY19kZWZh dWx0X2ludGVnZXJfa2luZCwgZmFsc2UpOworCisgICAgICBpZiAoZ2ZjX2lu dGVnZXJfa2luZHNbaV0ucmFuZ2UgPCBnZmNfaW50ZWdlcl9raW5kc1tqXS5y YW5nZSkKKwl7CisJICBnZmNfZXJyb3IgKCJLSU5EIGFyZ3VtZW50IG9mIHRo ZSBGQUlMRURfSU1BR0VTIGludHJpbnNpYyBmdW5jdGlvbiAiCisJCSAgICAg ImF0ICVMIHNoYWxsIGhhdmUgYXQgbGVhc3QgdGhlIHJhbmdlICIKKwkJICAg ICAib2YgdGhlIGRlZmF1bHQgaW50ZWdlciIsICZraW5kLT53aGVyZSk7CisJ ICByZXR1cm4gZmFsc2U7CisJfQorCisgICAgICBqID0gZ2ZjX3ZhbGlkYXRl X2tpbmQgKEJUX0lOVEVHRVIsIGdmY19kZWZhdWx0X2ludGVnZXJfa2luZCoy LCBmYWxzZSk7CisKKyAgICAgIGlmIChnZmNfaW50ZWdlcl9raW5kc1tpXS5y YW5nZSA+IGdmY19pbnRlZ2VyX2tpbmRzW2pdLnJhbmdlKQorCXsKKwkgIGdm Y19lcnJvciAoIktJTkQgYXJndW1lbnQgb2YgdGhlIEZBSUxFRF9JTUFHRVMg IgorCQkgICAgICJpbnRyaW5zaWMgZnVuY3Rpb24gYXQgJUwgc2hhbGwgaGF2 ZSBhdCBtb3N0IHRoZSAiCisJCSAgICAgInJhbmdlIG9mIHRoZSBkb3VibGUg cHJlY2lzaW9uIGludGVnZXIiLAorCQkgICAgICZraW5kLT53aGVyZSk7CisJ ICByZXR1cm4gZmFsc2U7CisJfQorICAgIH0KKworICByZXR1cm4gdHJ1ZTsK K30KKwogCiBib29sCiBnZmNfY2hlY2tfYXRvbWljX2ZldGNoX29wIChnZmNf ZXhwciAqYXRvbSwgZ2ZjX2V4cHIgKnZhbHVlLCBnZmNfZXhwciAqb2xkLApk aWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmMgYi9n Y2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuYwppbmRleCA4YzI0MDc0Li5l NzMxOTE2IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRy ZWUuYworKysgYi9nY2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuYwpAQCAt MTYzNiw2ICsxNjM2LDkgQEAgc2hvd19jb2RlX25vZGUgKGludCBsZXZlbCwg Z2ZjX2NvZGUgKmMpCiAKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBFWEVD X0ZBSUxfSU1BR0U6CisgICAgICBmcHV0cyAoIkZBSUwgSU1BR0UgIiwgZHVt cGZpbGUpOworCiAgICAgY2FzZSBFWEVDX1NZTkNfQUxMOgogICAgICAgZnB1 dHMgKCJTWU5DIEFMTCAiLCBkdW1wZmlsZSk7CiAgICAgICBpZiAoYy0+ZXhw cjIgIT0gTlVMTCkKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2dmb3J0cmFu LmggYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCmluZGV4IDJhY2Y2NGMuLjkz YmQ0M2EgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKKysr IGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaApAQCAtMjU1LDcgKzI1NSw3IEBA IGVudW0gZ2ZjX3N0YXRlbWVudAogICBTVF9PTVBfRU5EX1RBUkdFVF9URUFN U19ESVNUUklCVVRFX1BBUkFMTEVMX0RPX1NJTUQsCiAgIFNUX1BST0NFRFVS RSwgU1RfR0VORVJJQywgU1RfQ1JJVElDQUwsIFNUX0VORF9DUklUSUNBTCwK ICAgU1RfR0VUX0ZDTl9DSEFSQUNURVJJU1RJQ1MsIFNUX0xPQ0ssIFNUX1VO TE9DSywgU1RfRVZFTlRfUE9TVCwKLSAgU1RfRVZFTlRfV0FJVCxTVF9OT05F CisgIFNUX0VWRU5UX1dBSVQsU1RfRkFJTF9JTUFHRSxTVF9OT05FCiB9Owog CiAvKiBUeXBlcyBvZiBpbnRlcmZhY2VzIHRoYXQgd2UgY2FuIGhhdmUuICBB c3NpZ25tZW50IGludGVyZmFjZXMgYXJlCkBAIC00MjAsNiArNDIwLDcgQEAg ZW51bSBnZmNfaXN5bV9pZAogICBHRkNfSVNZTV9FWFAsCiAgIEdGQ19JU1lN X0VYUE9ORU5ULAogICBHRkNfSVNZTV9FWFRFTkRTX1RZUEVfT0YsCisgIEdG Q19JU1lNX0ZBSUxFRF9JTUFHRVMsCiAgIEdGQ19JU1lNX0ZEQVRFLAogICBH RkNfSVNZTV9GRV9SVU5USU1FX0VSUk9SLAogICBHRkNfSVNZTV9GR0VULApA QCAtNDYzLDYgKzQ2NCw3IEBAIGVudW0gZ2ZjX2lzeW1faWQKICAgR0ZDX0lT WU1fSUVPUiwKICAgR0ZDX0lTWU1fSUVSUk5PLAogICBHRkNfSVNZTV9JTUFH RV9JTkRFWCwKKyAgR0ZDX0lTWU1fSU1BR0VfU1RBVFVTLAogICBHRkNfSVNZ TV9JTkRFWCwKICAgR0ZDX0lTWU1fSU5ULAogICBHRkNfSVNZTV9JTlQyLApA QCAtMjM5Myw3ICsyMzk1LDcgQEAgZW51bSBnZmNfZXhlY19vcAogICBFWEVD X09QRU4sIEVYRUNfQ0xPU0UsIEVYRUNfV0FJVCwKICAgRVhFQ19SRUFELCBF WEVDX1dSSVRFLCBFWEVDX0lPTEVOR1RILCBFWEVDX1RSQU5TRkVSLCBFWEVD X0RUX0VORCwKICAgRVhFQ19CQUNLU1BBQ0UsIEVYRUNfRU5ERklMRSwgRVhF Q19JTlFVSVJFLCBFWEVDX1JFV0lORCwgRVhFQ19GTFVTSCwKLSAgRVhFQ19M T0NLLCBFWEVDX1VOTE9DSywgRVhFQ19FVkVOVF9QT1NULCBFWEVDX0VWRU5U X1dBSVQsCisgIEVYRUNfTE9DSywgRVhFQ19VTkxPQ0ssIEVYRUNfRVZFTlRf UE9TVCwgRVhFQ19FVkVOVF9XQUlULCBFWEVDX0ZBSUxfSU1BR0UsCiAgIEVY RUNfT0FDQ19LRVJORUxTX0xPT1AsIEVYRUNfT0FDQ19QQVJBTExFTF9MT09Q LCBFWEVDX09BQ0NfUk9VVElORSwKICAgRVhFQ19PQUNDX1BBUkFMTEVMLCBF WEVDX09BQ0NfS0VSTkVMUywgRVhFQ19PQUNDX0RBVEEsIEVYRUNfT0FDQ19I T1NUX0RBVEEsCiAgIEVYRUNfT0FDQ19MT09QLCBFWEVDX09BQ0NfVVBEQVRF LCBFWEVDX09BQ0NfV0FJVCwgRVhFQ19PQUNDX0NBQ0hFLApkaWZmIC0tZ2l0 IGEvZ2NjL2ZvcnRyYW4vaW50cmluc2ljLmMgYi9nY2MvZm9ydHJhbi9pbnRy aW5zaWMuYwppbmRleCBjYTI4ZWFjLi4yMzExNTQ4IDEwMDY0NAotLS0gYS9n Y2MvZm9ydHJhbi9pbnRyaW5zaWMuYworKysgYi9nY2MvZm9ydHJhbi9pbnRy aW5zaWMuYwpAQCAtMTgzOSw2ICsxODM5LDEwIEBAIGFkZF9mdW5jdGlvbnMg KHZvaWQpCiAJICAgICBhLCBCVF9VTktOT1dOLCAwLCBSRVFVSVJFRCwKIAkg ICAgIG1vLCBCVF9VTktOT1dOLCAwLCBSRVFVSVJFRCk7CiAKKyAgYWRkX3N5 bV8yICgiZmFpbGVkX2ltYWdlcyIsIEdGQ19JU1lNX0ZBSUxFRF9JTUFHRVMs IENMQVNTX1RSQU5TRk9STUFUSU9OQUwsIEFDVFVBTF9OTywgQlRfSU5URUdF UiwKKwkgICAgIGRkLCBHRkNfU1REX0YyMDA4X1RTLCBnZmNfY2hlY2tfZmFp bGVkX2ltYWdlcywgZ2ZjX3NpbXBsaWZ5X2ZhaWxlZF9pbWFnZXMsCisJICAg ICBnZmNfcmVzb2x2ZV9mYWlsZWRfaW1hZ2VzLCAidGVhbSIsIEJUX0lOVEVH RVIsIGRpLCBPUFRJT05BTCwgImtpbmQiLCBCVF9JTlRFR0VSLCBkaSwgT1BU SU9OQUwpOworCiAgIGFkZF9zeW1fMCAoImZkYXRlIiwgIEdGQ19JU1lNX0ZE QVRFLCBDTEFTU19JTVBVUkUsIEFDVFVBTF9OTywgQlRfQ0hBUkFDVEVSLAog CSAgICAgZGMsIEdGQ19TVERfR05VLCBOVUxMLCBOVUxMLCBnZmNfcmVzb2x2 ZV9mZGF0ZSk7CiAKQEAgLTIwODAsNiArMjA4NCwxMCBAQCBhZGRfZnVuY3Rp b25zICh2b2lkKQogCSAgICAgZ2ZjX2NoZWNrX2ltYWdlX2luZGV4LCBnZmNf c2ltcGxpZnlfaW1hZ2VfaW5kZXgsIGdmY19yZXNvbHZlX2ltYWdlX2luZGV4 LAogCSAgICAgY2EsIEJUX1JFQUwsIGRyLCBSRVFVSVJFRCwgc3ViLCBCVF9J TlRFR0VSLCBpaSwgUkVRVUlSRUQpOwogCisgIGFkZF9zeW1fMiAoImltYWdl X3N0YXR1cyIsIEdGQ19JU1lNX0lNQUdFX1NUQVRVUywgQ0xBU1NfRUxFTUVO VEFMLCBBQ1RVQUxfTk8sIEJUX0lOVEVHRVIsCisJICAgICBkaSwgR0ZDX1NU RF9GMjAwOF9UUywgZ2ZjX2NoZWNrX2ltYWdlX3N0YXR1cywgZ2ZjX3NpbXBs aWZ5X2ltYWdlX3N0YXR1cywKKwkgICAgIGdmY19yZXNvbHZlX2ltYWdlX3N0 YXR1cywgImltYWdlIiwgQlRfSU5URUdFUiwgZGksIFJFUVVJUkVELCAidGVh bSIsIEJUX0lOVEVHRVIsIGRpLCBPUFRJT05BTCk7CisKICAgLyogVGhlIHJl c29sdXRpb24gZnVuY3Rpb24gZm9yIElOREVYIGlzIGNhbGxlZCBnZmNfcmVz b2x2ZV9pbmRleF9mdW5jCiAgICAgIGJlY2F1c2UgdGhlIG5hbWUgZ2ZjX3Jl c29sdmVfaW5kZXggaXMgYWxyZWFkeSB1c2VkIGluIHJlc29sdmUuYy4gICov CiAgIGFkZF9zeW1fNCAoImluZGV4IiwgR0ZDX0lTWU1fSU5ERVgsIENMQVNT X0VMRU1FTlRBTCwgQUNUVUFMX1lFUywKZGlmZiAtLWdpdCBhL2djYy9mb3J0 cmFuL2ludHJpbnNpYy5oIGIvZ2NjL2ZvcnRyYW4vaW50cmluc2ljLmgKaW5k ZXggZjIyODk3Ni4uYWU0ODhlOCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4v aW50cmluc2ljLmgKKysrIGIvZ2NjL2ZvcnRyYW4vaW50cmluc2ljLmgKQEAg LTcxLDYgKzcxLDcgQEAgYm9vbCBnZmNfY2hlY2tfZHNoaWZ0IChnZmNfZXhw ciAqLCBnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIGJvb2wgZ2ZjX2NoZWNr X2Vvc2hpZnQgKGdmY19leHByICosIGdmY19leHByICosIGdmY19leHByICos IGdmY19leHByICopOwogYm9vbCBnZmNfY2hlY2tfZHRpbWVfZXRpbWUgKGdm Y19leHByICopOwogYm9vbCBnZmNfY2hlY2tfZXZlbnRfcXVlcnkgKGdmY19l eHByICosIGdmY19leHByICosIGdmY19leHByICopOworYm9vbCBnZmNfY2hl Y2tfZmFpbGVkX2ltYWdlcyAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7CiBi b29sIGdmY19jaGVja19mZ2V0cHV0YyAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIg Kik7CiBib29sIGdmY19jaGVja19mZ2V0cHV0IChnZmNfZXhwciAqKTsKIGJv b2wgZ2ZjX2NoZWNrX2Zsb2F0IChnZmNfZXhwciAqKTsKQEAgLTkyLDYgKzkz LDcgQEAgYm9vbCBnZmNfY2hlY2tfaWJpdHMgKGdmY19leHByICosIGdmY19l eHByICosIGdmY19leHByICopOwogYm9vbCBnZmNfY2hlY2tfaWNoYXJfaWFj aGFyIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIGJvb2wgZ2ZjX2NoZWNr X2lkbmludCAoZ2ZjX2V4cHIgKik7CiBib29sIGdmY19jaGVja19pZW9yIChn ZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKK2Jvb2wgZ2ZjX2NoZWNrX2ltYWdl X3N0YXR1cyAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7CiBib29sIGdmY19j aGVja19pbmRleCAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIg KiwgZ2ZjX2V4cHIgKik7CiBib29sIGdmY19jaGVja19pbnQgKGdmY19leHBy ICosIGdmY19leHByICopOwogYm9vbCBnZmNfY2hlY2tfaW50Y29udiAoZ2Zj X2V4cHIgKik7CkBAIC0yODksNiArMjkxLDcgQEAgZ2ZjX2V4cHIgKmdmY19z aW1wbGlmeV9lcmZjX3NjYWxlZCAoZ2ZjX2V4cHIgKik7CiBnZmNfZXhwciAq Z2ZjX3NpbXBsaWZ5X2V4cCAoZ2ZjX2V4cHIgKik7CiBnZmNfZXhwciAqZ2Zj X3NpbXBsaWZ5X2V4cG9uZW50IChnZmNfZXhwciAqKTsKIGdmY19leHByICpn ZmNfc2ltcGxpZnlfZXh0ZW5kc190eXBlX29mIChnZmNfZXhwciAqLCBnZmNf ZXhwciAqKTsKK2dmY19leHByICpnZmNfc2ltcGxpZnlfZmFpbGVkX2ltYWdl cyAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7CiBnZmNfZXhwciAqZ2ZjX3Np bXBsaWZ5X2Zsb2F0IChnZmNfZXhwciAqKTsKIGdmY19leHByICpnZmNfc2lt cGxpZnlfZmxvb3IgKGdmY19leHByICosIGdmY19leHByICopOwogZ2ZjX2V4 cHIgKmdmY19zaW1wbGlmeV9mcmFjdGlvbiAoZ2ZjX2V4cHIgKik7CkBAIC0z MDUsNiArMzA4LDcgQEAgZ2ZjX2V4cHIgKmdmY19zaW1wbGlmeV9pYnNldCAo Z2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7CiBnZmNfZXhwciAqZ2ZjX3NpbXBs aWZ5X2ljaGFyIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIGdmY19leHBy ICpnZmNfc2ltcGxpZnlfaWVvciAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7 CiBnZmNfZXhwciAqZ2ZjX3NpbXBsaWZ5X2ltYWdlX2luZGV4IChnZmNfZXhw ciAqLCBnZmNfZXhwciAqKTsKK2dmY19leHByICpnZmNfc2ltcGxpZnlfaW1h Z2Vfc3RhdHVzIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIGdmY19leHBy ICpnZmNfc2ltcGxpZnlfaW5kZXggKGdmY19leHByICosIGdmY19leHByICos IGdmY19leHByICosIGdmY19leHByICopOwogZ2ZjX2V4cHIgKmdmY19zaW1w bGlmeV9pbnQgKGdmY19leHByICosIGdmY19leHByICopOwogZ2ZjX2V4cHIg KmdmY19zaW1wbGlmeV9pbnQyIChnZmNfZXhwciAqKTsKQEAgLTQ2Nyw2ICs0 NzEsNyBAQCB2b2lkIGdmY19yZXNvbHZlX2V2ZW50X3F1ZXJ5IChnZmNfY29k ZSAqKTsKIHZvaWQgZ2ZjX3Jlc29sdmVfZXhwIChnZmNfZXhwciAqLCBnZmNf ZXhwciAqKTsKIHZvaWQgZ2ZjX3Jlc29sdmVfZXhwb25lbnQgKGdmY19leHBy ICosIGdmY19leHByICopOwogdm9pZCBnZmNfcmVzb2x2ZV9leHRlbmRzX3R5 cGVfb2YgKGdmY19leHByICosIGdmY19leHByICosIGdmY19leHByICopOwor dm9pZCBnZmNfcmVzb2x2ZV9mYWlsZWRfaW1hZ2VzIChnZmNfZXhwciAqLCBn ZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIHZvaWQgZ2ZjX3Jlc29sdmVfZmRh dGUgKGdmY19leHByICopOwogdm9pZCBnZmNfcmVzb2x2ZV9mbG9vciAoZ2Zj X2V4cHIgKiwgZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7CiB2b2lkIGdmY19y ZXNvbHZlX2ZudW0gKGdmY19leHByICosIGdmY19leHByICopOwpAQCAtNDkw LDYgKzQ5NSw3IEBAIHZvaWQgZ2ZjX3Jlc29sdmVfaWJjbHIgKGdmY19leHBy ICosIGdmY19leHByICosIGdmY19leHByICopOwogdm9pZCBnZmNfcmVzb2x2 ZV9pYml0cyAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKiwg Z2ZjX2V4cHIgKik7CiB2b2lkIGdmY19yZXNvbHZlX2lic2V0IChnZmNfZXhw ciAqLCBnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIHZvaWQgZ2ZjX3Jlc29s dmVfaW1hZ2VfaW5kZXggKGdmY19leHByICosIGdmY19leHByICosIGdmY19l eHByICopOwordm9pZCBnZmNfcmVzb2x2ZV9pbWFnZV9zdGF0dXMgKGdmY19l eHByICosIGdmY19leHByICosIGdmY19leHByICopOwogdm9pZCBnZmNfcmVz b2x2ZV9pbmRleF9mdW5jIChnZmNfZXhwciAqLCBnZmNfZXhwciAqLCBnZmNf ZXhwciAqLCBnZmNfZXhwciAqLAogCQkJICAgICBnZmNfZXhwciAqKTsKIHZv aWQgZ2ZjX3Jlc29sdmVfaWVycm5vIChnZmNfZXhwciAqKTsKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL2lyZXNvbHZlLmMgYi9nY2MvZm9ydHJhbi9pcmVz b2x2ZS5jCmluZGV4IGVjZWExYzMuLjJlYTQzZTcgMTAwNjQ0Ci0tLSBhL2dj Yy9mb3J0cmFuL2lyZXNvbHZlLmMKKysrIGIvZ2NjL2ZvcnRyYW4vaXJlc29s dmUuYwpAQCAtMjU3Nyw2ICsyNTc3LDI5IEBAIGdmY19yZXNvbHZlX3Rhbmgg KGdmY19leHByICpmLCBnZmNfZXhwciAqeCkKICAgICA9IGdmY19nZXRfc3Ry aW5nICgiX190YW5oXyVjJWQiLCBnZmNfdHlwZV9sZXR0ZXIgKHgtPnRzLnR5 cGUpLCB4LT50cy5raW5kKTsKIH0KIAordm9pZAorZ2ZjX3Jlc29sdmVfZmFp bGVkX2ltYWdlcyAoZ2ZjX2V4cHIgKmYsIGdmY19leHByICp0ZWFtIEFUVFJJ QlVURV9VTlVTRUQsCisJCQkgICBnZmNfZXhwciAqa2luZCkKK3sKKyAgc3Rh dGljIGNoYXIgZmFpbGVkX2ltYWdlc1tdID0gIl9nZm9ydHJhbl9jYWZfZmFp bGVkX2ltYWdlcyI7CisgIGYtPnJhbmsgPSAxOworICBmLT50cy50eXBlID0g QlRfSU5URUdFUjsKKyAgaWYoa2luZCA9PSBOVUxMKQorICAgIGYtPnRzLmtp bmQgPSBnZmNfZGVmYXVsdF9pbnRlZ2VyX2tpbmQ7CisgIGVsc2UKKyAgICBm LT50cy5raW5kID0ga2luZC0+dHMua2luZDsKKyAgZi0+dmFsdWUuZnVuY3Rp b24ubmFtZSA9IGZhaWxlZF9pbWFnZXM7Cit9CisKK3ZvaWQKK2dmY19yZXNv bHZlX2ltYWdlX3N0YXR1cyAoZ2ZjX2V4cHIgKmYsIGdmY19leHByICppbWFn ZSwgZ2ZjX2V4cHIgKnRlYW0gQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgc3Rh dGljIGNoYXIgaW1hZ2Vfc3RhdHVzW10gPSAiX2dmb3J0cmFuX2NhZl9pbWFn ZV9zdGF0dXMiOworICBmLT50cy50eXBlID0gQlRfSU5URUdFUjsKKyAgZi0+ dHMua2luZCA9IGdmY19kZWZhdWx0X2ludGVnZXJfa2luZDsKKyAgZi0+dHMg PSBpbWFnZS0+dHM7CisgIGYtPnZhbHVlLmZ1bmN0aW9uLm5hbWUgPSBpbWFn ZV9zdGF0dXM7Cit9CiAKIHZvaWQKIGdmY19yZXNvbHZlX2ltYWdlX2luZGV4 IChnZmNfZXhwciAqZiwgZ2ZjX2V4cHIgKmFycmF5IEFUVFJJQlVURV9VTlVT RUQsCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9saWJnZm9ydHJhbi5oIGIv Z2NjL2ZvcnRyYW4vbGliZ2ZvcnRyYW4uaAppbmRleCBlOTEzMjUwLi5mMDBl ZDgzIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9saWJnZm9ydHJhbi5oCisr KyBiL2djYy9mb3J0cmFuL2xpYmdmb3J0cmFuLmgKQEAgLTEyMyw3ICsxMjMs NyBAQCB0eXBlZGVmIGVudW0KICAgR0ZDX1NUQVRfTE9DS0VELAogICBHRkNf U1RBVF9MT0NLRURfT1RIRVJfSU1BR0UsCiAgIEdGQ19TVEFUX1NUT1BQRURf SU1BR0UgPSA2MDAwLCAvKiBTZWUgTElCRVJST1JfSU5RVUlSRV9JTlRFUk5B TF9VTklUIGFib3ZlLiAqLwotICBHRkNfU1RBVF9GQUlMRURfSU1BR0UKKyAg R0ZDX1NUQVRfRkFJTEVEX0lNQUdFID0gNjAwMQogfQogbGliZ2ZvcnRyYW5f c3RhdF9jb2RlczsKIApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vbWF0Y2gu YyBiL2djYy9mb3J0cmFuL21hdGNoLmMKaW5kZXggOTA1NmNiNy4uODkxNjc2 NyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vbWF0Y2guYworKysgYi9nY2Mv Zm9ydHJhbi9tYXRjaC5jCkBAIC0xNjAwLDYgKzE2MDAsNyBAQCBnZmNfbWF0 Y2hfaWYgKGdmY19zdGF0ZW1lbnQgKmlmX3R5cGUpCiAgIG1hdGNoICgiZXZl bnQgcG9zdCIsIGdmY19tYXRjaF9ldmVudF9wb3N0LCBTVF9FVkVOVF9QT1NU KQogICBtYXRjaCAoImV2ZW50IHdhaXQiLCBnZmNfbWF0Y2hfZXZlbnRfd2Fp dCwgU1RfRVZFTlRfV0FJVCkKICAgbWF0Y2ggKCJleGl0IiwgZ2ZjX21hdGNo X2V4aXQsIFNUX0VYSVQpCisgIG1hdGNoICgiZmFpbCBpbWFnZSIsIGdmY19t YXRjaF9mYWlsX2ltYWdlLCBTVF9GQUlMX0lNQUdFKQogICBtYXRjaCAoImZs dXNoIiwgZ2ZjX21hdGNoX2ZsdXNoLCBTVF9GTFVTSCkKICAgbWF0Y2ggKCJm b3JhbGwiLCBtYXRjaF9zaW1wbGVfZm9yYWxsLCBTVF9GT1JBTEwpCiAgIG1h dGNoICgiZ28gdG8iLCBnZmNfbWF0Y2hfZ290bywgU1RfR09UTykKQEAgLTMw NzksNiArMzA4MCwzNCBAQCBnZmNfbWF0Y2hfZXZlbnRfd2FpdCAodm9pZCkK ICAgcmV0dXJuIGV2ZW50X3N0YXRlbWVudCAoU1RfRVZFTlRfV0FJVCk7CiB9 CiAKKy8qIE1hdGNoIGEgRkFJTCBJTUFHRSBzdGF0ZW1lbnQuICAqLworCitz dGF0aWMgbWF0Y2gKK2ZhaWxfaW1hZ2Vfc3RhdGVtZW50IChnZmNfc3RhdGVt ZW50IHN0KQoreworICBpZiAoZ2ZjX21hdGNoX2NoYXIgKCcoJykgPT0gTUFU Q0hfWUVTKQorICAgIGdvdG8gc3ludGF4OworCisgIGdjY19hc3NlcnQgKHN0 ID09IFNUX0ZBSUxfSU1BR0UpOworCisgIG5ld19zdC5vcCA9IEVYRUNfRkFJ TF9JTUFHRTsKKworICByZXR1cm4gTUFUQ0hfWUVTOworCisgc3ludGF4Ogor ICBnZmNfc3ludGF4X2Vycm9yIChzdCk7CisKKyAgcmV0dXJuIE1BVENIX0VS Uk9SOworfQorCittYXRjaAorZ2ZjX21hdGNoX2ZhaWxfaW1hZ2UgKHZvaWQp Cit7CisgIGlmICghZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDhfVFMs ICJGQUlMIElNQUdFIHN0YXRlbWVudCBhdCAlQyIpKQorICAgIHJldHVybiBN QVRDSF9FUlJPUjsKKworICByZXR1cm4gZmFpbF9pbWFnZV9zdGF0ZW1lbnQg KFNUX0ZBSUxfSU1BR0UpOworfQogCiAvKiBNYXRjaCBMT0NLL1VOTE9DSyBz dGF0ZW1lbnQuIFN5bnRheDoKICAgICAgTE9DSyAoIGxvY2stdmFyaWFibGUg WyAsIGxvY2stc3RhdC1saXN0IF0gKQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRy YW4vbWF0Y2guaCBiL2djYy9mb3J0cmFuL21hdGNoLmgKaW5kZXggMzQ4Y2E3 MC4uNGU0YjgzMyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vbWF0Y2guaAor KysgYi9nY2MvZm9ydHJhbi9tYXRjaC5oCkBAIC03Miw2ICs3Miw3IEBAIG1h dGNoIGdmY19tYXRjaF9lbHNlICh2b2lkKTsKIG1hdGNoIGdmY19tYXRjaF9l bHNlaWYgKHZvaWQpOwogbWF0Y2ggZ2ZjX21hdGNoX2V2ZW50X3Bvc3QgKHZv aWQpOwogbWF0Y2ggZ2ZjX21hdGNoX2V2ZW50X3dhaXQgKHZvaWQpOworbWF0 Y2ggZ2ZjX21hdGNoX2ZhaWxfaW1hZ2UgKHZvaWQpOwogbWF0Y2ggZ2ZjX21h dGNoX2NyaXRpY2FsICh2b2lkKTsKIG1hdGNoIGdmY19tYXRjaF9ibG9jayAo dm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfYXNzb2NpYXRlICh2b2lkKTsKZGlm ZiAtLWdpdCBhL2djYy9mb3J0cmFuL3BhcnNlLmMgYi9nY2MvZm9ydHJhbi9w YXJzZS5jCmluZGV4IDg2ZjJjNDIuLmMwZWQ2OGYgMTAwNjQ0Ci0tLSBhL2dj Yy9mb3J0cmFuL3BhcnNlLmMKKysrIGIvZ2NjL2ZvcnRyYW4vcGFyc2UuYwpA QCAtNDgzLDYgKzQ4Myw3IEBAIGRlY29kZV9zdGF0ZW1lbnQgKHZvaWQpCiAg ICAgICBicmVhazsKIAogICAgIGNhc2UgJ2YnOgorICAgICAgbWF0Y2ggKCJm YWlsIGltYWdlIiwgZ2ZjX21hdGNoX2ZhaWxfaW1hZ2UsIFNUX0ZBSUxfSU1B R0UpOwogICAgICAgbWF0Y2ggKCJmaW5hbCIsIGdmY19tYXRjaF9maW5hbF9k ZWNsLCBTVF9GSU5BTCk7CiAgICAgICBtYXRjaCAoImZsdXNoIiwgZ2ZjX21h dGNoX2ZsdXNoLCBTVF9GTFVTSCk7CiAgICAgICBtYXRjaCAoImZvcm1hdCIs IGdmY19tYXRjaF9mb3JtYXQsIFNUX0ZPUk1BVCk7CkBAIC0xNDE5LDcgKzE0 MjAsNyBAQCBuZXh0X3N0YXRlbWVudCAodm9pZCkKICAgY2FzZSBTVF9PTVBf Q0FOQ0VMOiBjYXNlIFNUX09NUF9DQU5DRUxMQVRJT05fUE9JTlQ6IFwKICAg Y2FzZSBTVF9PTVBfVEFSR0VUX1VQREFURTogY2FzZSBTVF9FUlJPUl9TVE9Q OiBjYXNlIFNUX1NZTkNfQUxMOiBcCiAgIGNhc2UgU1RfU1lOQ19JTUFHRVM6 IGNhc2UgU1RfU1lOQ19NRU1PUlk6IGNhc2UgU1RfTE9DSzogY2FzZSBTVF9V TkxPQ0s6IFwKLSAgY2FzZSBTVF9FVkVOVF9QT1NUOiBjYXNlIFNUX0VWRU5U X1dBSVQ6IFwKKyAgY2FzZSBTVF9FVkVOVF9QT1NUOiBjYXNlIFNUX0VWRU5U X1dBSVQ6IGNhc2UgU1RfRkFJTF9JTUFHRTogXAogICBjYXNlIFNUX09BQ0Nf VVBEQVRFOiBjYXNlIFNUX09BQ0NfV0FJVDogY2FzZSBTVF9PQUNDX0NBQ0hF OiBcCiAgIGNhc2UgU1RfT0FDQ19FTlRFUl9EQVRBOiBjYXNlIFNUX09BQ0Nf RVhJVF9EQVRBCiAKQEAgLTE3NDUsNiArMTc0Niw5IEBAIGdmY19hc2NpaV9z dGF0ZW1lbnQgKGdmY19zdGF0ZW1lbnQgc3QpCiAgICAgY2FzZSBTVF9FVkVO VF9XQUlUOgogICAgICAgcCA9ICJFVkVOVCBXQUlUIjsKICAgICAgIGJyZWFr OworICAgIGNhc2UgU1RfRkFJTF9JTUFHRToKKyAgICAgIHAgPSAiRkFJTCBJ TUFHRSI7CisgICAgICBicmVhazsKICAgICBjYXNlIFNUX0VORF9BU1NPQ0lB VEU6CiAgICAgICBwID0gIkVORCBBU1NPQ0lBVEUiOwogICAgICAgYnJlYWs7 CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9yZXNvbHZlLmMgYi9nY2MvZm9y dHJhbi9yZXNvbHZlLmMKaW5kZXggZjhiYTAwYi4uNDJjYmI5ZiAxMDA2NDQK LS0tIGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jCisrKyBiL2djYy9mb3J0cmFu L3Jlc29sdmUuYwpAQCAtODgzNyw2ICs4ODM3LDE3IEBAIGZpbmRfcmVhY2hh YmxlX2xhYmVscyAoZ2ZjX2NvZGUgKmJsb2NrKQogICAgIH0KIH0KIAorc3Rh dGljIHZvaWQKK3Jlc29sdmVfZmFpbF9pbWFnZSAoZ2ZjX2NvZGUgKmNvZGUg QVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgaWYgKGZsYWdfY29hcnJheSA9PSBH RkNfRkNPQVJSQVlfU0lOR0xFKQorICAgIHsKKyAgICAgIC8vY2FsbCBleGl0 CisgICAgICA7CisgICAgfQorCisgIHJldHVybjsKK30KIAogc3RhdGljIHZv aWQKIHJlc29sdmVfbG9ja191bmxvY2tfZXZlbnQgKGdmY19jb2RlICpjb2Rl KQpAQCAtMTA1ODMsNiArMTA1OTQsMTAgQEAgc3RhcnQ6CiAJICByZXNvbHZl X2xvY2tfdW5sb2NrX2V2ZW50IChjb2RlKTsKIAkgIGJyZWFrOwogCisJY2Fz ZSBFWEVDX0ZBSUxfSU1BR0U6CisJICByZXNvbHZlX2ZhaWxfaW1hZ2UgKGNv ZGUpOworCSAgYnJlYWs7CisKIAljYXNlIEVYRUNfRU5UUlk6CiAJICAvKiBL ZWVwIHRyYWNrIG9mIHdoaWNoIGVudHJ5IHdlIGFyZSB1cCB0by4gICovCiAJ ICBjdXJyZW50X2VudHJ5X2lkID0gY29kZS0+ZXh0LmVudHJ5LT5pZDsKZGlm ZiAtLWdpdCBhL2djYy9mb3J0cmFuL3NpbXBsaWZ5LmMgYi9nY2MvZm9ydHJh bi9zaW1wbGlmeS5jCmluZGV4IGMzOTY2NTMuLjkyZDAwMDYgMTAwNjQ0Ci0t LSBhL2djYy9mb3J0cmFuL3NpbXBsaWZ5LmMKKysrIGIvZ2NjL2ZvcnRyYW4v c2ltcGxpZnkuYwpAQCAtMjMxMiw2ICsyMzEyLDE2IEBAIGdmY19zaW1wbGlm eV9leHBvbmVudCAoZ2ZjX2V4cHIgKngpCiAgIHJldHVybiByYW5nZV9jaGVj ayAocmVzdWx0LCAiRVhQT05FTlQiKTsKIH0KIAorZ2ZjX2V4cHIgKgorZ2Zj X3NpbXBsaWZ5X2ZhaWxlZF9pbWFnZXMoZ2ZjX2V4cHIgKnRlYW0gQVRUUklC VVRFX1VOVVNFRCwgZ2ZjX2V4cHIgKmtpbmQpCit7CisgIGlmIChmbGFnX2Nv YXJyYXkgIT0gR0ZDX0ZDT0FSUkFZX1NJTkdMRSkKKyAgICByZXR1cm4gTlVM TDsKKworICBnZmNfZXhwciAqcmVzdWx0OworICByZXN1bHQgPSB0cmFuc2Zv cm1hdGlvbmFsX3Jlc3VsdCAocmVzdWx0LCAwLCBCVF9JTlRFR0VSLCBraW5k LT50cy5raW5kLCAmZ2ZjX2N1cnJlbnRfbG9jdXMpOworICByZXR1cm4gcmVz dWx0OworfQogCiBnZmNfZXhwciAqCiBnZmNfc2ltcGxpZnlfZmxvYXQgKGdm Y19leHByICphKQpAQCAtNjU3OCw2ICs2NTg4LDE5IEBAIGdmY19zaW1wbGlm eV9pbWFnZV9pbmRleCAoZ2ZjX2V4cHIgKmNvYXJyYXksIGdmY19leHByICpz dWIpCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2dmY19leHByICoKK2dmY19z aW1wbGlmeV9pbWFnZV9zdGF0dXMoZ2ZjX2V4cHIgKmltYWdlIEFUVFJJQlVU RV9VTlVTRUQsIGdmY19leHByICp0ZWFtIEFUVFJJQlVURV9VTlVTRUQpCit7 CisgIGlmIChmbGFnX2NvYXJyYXkgIT0gR0ZDX0ZDT0FSUkFZX1NJTkdMRSkK KyAgICByZXR1cm4gTlVMTDsKKworICBnZmNfZXhwciAqcmVzdWx0OworICAv KiBGSVhNRTogZ2ZjX2N1cnJlbnRfbG9jdXMgaXMgd3JvbmcuICAqLworICBy ZXN1bHQgPSBnZmNfZ2V0X2NvbnN0YW50X2V4cHIgKEJUX0lOVEVHRVIsIGdm Y19kZWZhdWx0X2ludGVnZXJfa2luZCwKKwkJCQkgICZnZmNfY3VycmVudF9s b2N1cyk7CisgIG1wel9zZXRfc2kgKHJlc3VsdC0+dmFsdWUuaW50ZWdlciwg MCk7CisgIHJldHVybiByZXN1bHQ7Cit9CiAKIGdmY19leHByICoKIGdmY19z aW1wbGlmeV90aGlzX2ltYWdlIChnZmNfZXhwciAqY29hcnJheSwgZ2ZjX2V4 cHIgKmRpbSwKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3N0LmMgYi9nY2Mv Zm9ydHJhbi9zdC5jCmluZGV4IDczOTU0OTcuLmIzYTY3MjEgMTAwNjQ0Ci0t LSBhL2djYy9mb3J0cmFuL3N0LmMKKysrIGIvZ2NjL2ZvcnRyYW4vc3QuYwpA QCAtMTIwLDYgKzEyMCw3IEBAIGdmY19mcmVlX3N0YXRlbWVudCAoZ2ZjX2Nv ZGUgKnApCiAgICAgY2FzZSBFWEVDX1VOTE9DSzoKICAgICBjYXNlIEVYRUNf RVZFTlRfUE9TVDoKICAgICBjYXNlIEVYRUNfRVZFTlRfV0FJVDoKKyAgICBj YXNlIEVYRUNfRkFJTF9JTUFHRToKICAgICAgIGJyZWFrOwogCiAgICAgY2Fz ZSBFWEVDX0JMT0NLOgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMt ZGVjbC5jIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCmluZGV4IDViYWU4 Y2EuLjVjNDAwMDUgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLWRl Y2wuYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmMKQEAgLTE1MSw2 ICsxNTEsOSBAQCB0cmVlIGdmb3JfZm5kZWNsX2NhZl91bmxvY2s7CiB0cmVl IGdmb3JfZm5kZWNsX2NhZl9ldmVudF9wb3N0OwogdHJlZSBnZm9yX2ZuZGVj bF9jYWZfZXZlbnRfd2FpdDsKIHRyZWUgZ2Zvcl9mbmRlY2xfY2FmX2V2ZW50 X3F1ZXJ5OwordHJlZSBnZm9yX2ZuZGVjbF9jYWZfZmFpbF9pbWFnZTsKK3Ry ZWUgZ2Zvcl9mbmRlY2xfY2FmX2ZhaWxlZF9pbWFnZXM7Cit0cmVlIGdmb3Jf Zm5kZWNsX2NhZl9pbWFnZV9zdGF0dXM7CiB0cmVlIGdmb3JfZm5kZWNsX2Nv X2Jyb2FkY2FzdDsKIHRyZWUgZ2Zvcl9mbmRlY2xfY29fbWF4OwogdHJlZSBn Zm9yX2ZuZGVjbF9jb19taW47CkBAIC0zNjcxLDYgKzM2NzQsMTggQEAgZ2Zj X2J1aWxkX2J1aWx0aW5fZnVuY3Rpb25fZGVjbHMgKHZvaWQpCiAJdm9pZF90 eXBlX25vZGUsIDUsIHB2b2lkX3R5cGVfbm9kZSwgc2l6ZV90eXBlX25vZGUs IGludGVnZXJfdHlwZV9ub2RlLAogCXBpbnRfdHlwZSwgcGludF90eXBlKTsK IAorICAgICAgZ2Zvcl9mbmRlY2xfY2FmX2ZhaWxfaW1hZ2UgPSBnZmNfYnVp bGRfbGlicmFyeV9mdW5jdGlvbl9kZWNsX3dpdGhfc3BlYyAoCisgICAgICAg IGdldF9pZGVudGlmaWVyIChQUkVGSVgoImNhZl9mYWlsX2ltYWdlIikpLCAi UiIsCisgICAgICAJdm9pZF90eXBlX25vZGUsIDEsIHB2b2lkX3R5cGVfbm9k ZSk7CisKKyAgICAgIGdmb3JfZm5kZWNsX2NhZl9mYWlsZWRfaW1hZ2VzID0g Z2ZjX2J1aWxkX2xpYnJhcnlfZnVuY3Rpb25fZGVjbF93aXRoX3NwZWMgKAor CWdldF9pZGVudGlmaWVyIChQUkVGSVgoImNhZl9mYWlsZWRfaW1hZ2VzIikp LCAiV1JSIiwKKwlwdm9pZF90eXBlX25vZGUsIDMsIHB2b2lkX3R5cGVfbm9k ZSwgaW50ZWdlcl90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlKTsKKwor ICAgICAgZ2Zvcl9mbmRlY2xfY2FmX2ltYWdlX3N0YXR1cyA9IGdmY19idWls ZF9saWJyYXJ5X2Z1bmN0aW9uX2RlY2xfd2l0aF9zcGVjICgKKwlnZXRfaWRl bnRpZmllciAoUFJFRklYKCJjYWZfaW1hZ2Vfc3RhdHVzIikpLCAiUlIiLAor CWludGVnZXJfdHlwZV9ub2RlLCAyLCBpbnRlZ2VyX3R5cGVfbm9kZSwgaW50 ZWdlcl90eXBlX25vZGUpOworCiAgICAgICBnZm9yX2ZuZGVjbF9jb19icm9h ZGNhc3QgPSBnZmNfYnVpbGRfbGlicmFyeV9mdW5jdGlvbl9kZWNsX3dpdGhf c3BlYyAoCiAJZ2V0X2lkZW50aWZpZXIgKFBSRUZJWCgiY2FmX2NvX2Jyb2Fk Y2FzdCIpKSwgIlcuV1ciLAogCXZvaWRfdHlwZV9ub2RlLCA1LCBwdm9pZF90 eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlLApkaWZmIC0tZ2l0IGEvZ2Nj L2ZvcnRyYW4vdHJhbnMtZXhwci5jIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhw ci5jCmluZGV4IDE5MjM5ZmIuLmYxZWQ4MDggMTAwNjQ0Ci0tLSBhL2djYy9m b3J0cmFuL3RyYW5zLWV4cHIuYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1l eHByLmMKQEAgLTYxNDYsMTAgKzYxNDYsMTEgQEAgZ2ZjX2NvbnZfcHJvY2Vk dXJlX2NhbGwgKGdmY19zZSAqIHNlLCBnZmNfc3ltYm9sICogc3ltLAogICAg ICAgICAgY29tcG9uZW50cyBtdXN0IGhhdmUgdGhlIHJlc3VsdCBhbGxvY2F0 YWJsZSBjb21wb25lbnRzIGNvcGllZC4gICovCiAgICAgICBhcmcgPSBleHBy LT52YWx1ZS5mdW5jdGlvbi5hY3R1YWw7CiAgICAgICBpZiAocmVzdWx0ICYm IGFyZyAmJiBleHByLT5yYW5rCi0JICAgICYmIGV4cHItPnZhbHVlLmZ1bmN0 aW9uLmlzeW0KLQkgICAgJiYgZXhwci0+dmFsdWUuZnVuY3Rpb24uaXN5bS0+ dHJhbnNmb3JtYXRpb25hbAotCSAgICAmJiBhcmctPmV4cHItPnRzLnR5cGUg PT0gQlRfREVSSVZFRAotCSAgICAmJiBhcmctPmV4cHItPnRzLnUuZGVyaXZl ZC0+YXR0ci5hbGxvY19jb21wKQorCSAgJiYgZXhwci0+dmFsdWUuZnVuY3Rp b24uaXN5bQorCSAgJiYgZXhwci0+dmFsdWUuZnVuY3Rpb24uaXN5bS0+dHJh bnNmb3JtYXRpb25hbAorCSAgJiYgYXJnLT5leHByCisJICAmJiBhcmctPmV4 cHItPnRzLnR5cGUgPT0gQlRfREVSSVZFRAorCSAgJiYgYXJnLT5leHByLT50 cy51LmRlcml2ZWQtPmF0dHIuYWxsb2NfY29tcCkKIAl7CiAJICB0cmVlIHRt cDI7CiAJICAvKiBDb3B5IHRoZSBhbGxvY2F0YWJsZSBjb21wb25lbnRzLiAg V2UgaGF2ZSB0byB1c2UgYQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJh bnMtaW50cmluc2ljLmMgYi9nY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMu YwppbmRleCA4MTY3ODQyLi5jZDQ0ODZiIDEwMDY0NAotLS0gYS9nY2MvZm9y dHJhbi90cmFucy1pbnRyaW5zaWMuYworKysgYi9nY2MvZm9ydHJhbi90cmFu cy1pbnRyaW5zaWMuYwpAQCAtMTY3Nyw2ICsxNjc3LDE5IEBAIHRyYW5zX3Ro aXNfaW1hZ2UgKGdmY19zZSAqIHNlLCBnZmNfZXhwciAqZXhwcikKIAkJCQkJ ICAgICAgIG0sIGxib3VuZCkpOwogfQogCitzdGF0aWMgdm9pZAorZ2ZjX2Nv bnZfaW50cmluc2ljX2ltYWdlX3N0YXR1cyAoZ2ZjX3NlICpzZSwgZ2ZjX2V4 cHIgKmV4cHIpCit7CisgIHVuc2lnbmVkIGludCBudW1fYXJnczsKKyAgdHJl ZSAqYXJncyx0bXA7CisKKyAgbnVtX2FyZ3MgPSBnZmNfaW50cmluc2ljX2Fy Z3VtZW50X2xpc3RfbGVuZ3RoIChleHByKTsKKyAgYXJncyA9IFhBTExPQ0FW RUMgKHRyZWUsIG51bV9hcmdzKTsKKyAgZ2ZjX2NvbnZfaW50cmluc2ljX2Z1 bmN0aW9uX2FyZ3MgKHNlLCBleHByLCBhcmdzLCBudW1fYXJncyk7CisgIHRt cCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCBnZm9y X2ZuZGVjbF9jYWZfaW1hZ2Vfc3RhdHVzLCAyLAorCQkJICAgICBhcmdzWzBd LCBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwgLTEpKTsKKyAg c2UtPmV4cHIgPSB0bXA7Cit9CiAKIHN0YXRpYyB2b2lkCiB0cmFuc19pbWFn ZV9pbmRleCAoZ2ZjX3NlICogc2UsIGdmY19leHByICpleHByKQpAQCAtODMz Myw2ICs4MzQ2LDEwIEBAIGdmY19jb252X2ludHJpbnNpY19mdW5jdGlvbiAo Z2ZjX3NlICogc2UsIGdmY19leHByICogZXhwcikKICAgICAgIHRyYW5zX2lt YWdlX2luZGV4IChzZSwgZXhwcik7CiAgICAgICBicmVhazsKIAorICAgIGNh c2UgR0ZDX0lTWU1fSU1BR0VfU1RBVFVTOgorICAgICAgZ2ZjX2NvbnZfaW50 cmluc2ljX2ltYWdlX3N0YXR1cyAoc2UsIGV4cHIpOworICAgICAgYnJlYWs7 CisKICAgICBjYXNlIEdGQ19JU1lNX05VTV9JTUFHRVM6CiAgICAgICB0cmFu c19udW1faW1hZ2VzIChzZSwgZXhwcik7CiAgICAgICBicmVhazsKQEAgLTg2 ODMsMTAgKzg3MDAsMTEgQEAgZ2ZjX2lzX2ludHJpbnNpY19saWJjYWxsIChn ZmNfZXhwciAqIGV4cHIpCiAgICAgICAvKiBJZ25vcmUgYWJzZW50IG9wdGlv bmFsIHBhcmFtZXRlcnMuICAqLwogICAgICAgcmV0dXJuIDE7CiAKLSAgICBj YXNlIEdGQ19JU1lNX1JFU0hBUEU6CiAgICAgY2FzZSBHRkNfSVNZTV9DU0hJ RlQ6CiAgICAgY2FzZSBHRkNfSVNZTV9FT1NISUZUOgorICAgIGNhc2UgR0ZD X0lTWU1fRkFJTEVEX0lNQUdFUzoKICAgICBjYXNlIEdGQ19JU1lNX1BBQ0s6 CisgICAgY2FzZSBHRkNfSVNZTV9SRVNIQVBFOgogICAgIGNhc2UgR0ZDX0lT WU1fVU5QQUNLOgogICAgICAgLyogUGFzcyBhYnNlbnQgb3B0aW9uYWwgcGFy YW1ldGVycy4gICovCiAgICAgICByZXR1cm4gMjsKZGlmZiAtLWdpdCBhL2dj Yy9mb3J0cmFuL3RyYW5zLXN0bXQuYyBiL2djYy9mb3J0cmFuL3RyYW5zLXN0 bXQuYwppbmRleCA1ODg0ZTdhLi5hZWZlMWE4IDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi90cmFucy1zdG10LmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMt c3RtdC5jCkBAIC02NzQsNiArNjc0LDMyIEBAIGdmY190cmFuc19zdG9wIChn ZmNfY29kZSAqY29kZSwgYm9vbCBlcnJvcl9zdG9wKQogICByZXR1cm4gZ2Zj X2ZpbmlzaF9ibG9jayAoJnNlLnByZSk7CiB9CiAKKy8qIFRyYW5zbGF0ZSB0 aGUgRkFJTCBJTUFHRSBzdGF0ZW1lbnQuICBXZSBoYXZlIHRvIHRyYW5zbGF0 ZSB0aGlzIHN0YXRlbWVudAorICAgdG8gYSBydW50aW1lIGxpYnJhcnkgY2Fs bC4gICovCisKK3RyZWUKK2dmY190cmFuc19mYWlsX2ltYWdlIChnZmNfY29k ZSAqY29kZSBBVFRSSUJVVEVfVU5VU0VEKQoreworICBnZmNfc2Ugc2U7Cisg IHRyZWUgdG1wOworCisgIC8qIFN0YXJ0IGEgbmV3IGJsb2NrIGZvciB0aGlz IHN0YXRlbWVudC4gICovCisgIGdmY19pbml0X3NlICgmc2UsIE5VTEwpOwor ICBnZmNfc3RhcnRfYmxvY2sgKCZzZS5wcmUpOworCisgIGlmIChmbGFnX2Nv YXJyYXkgPT0gR0ZDX0ZDT0FSUkFZX0xJQikKKyAgICB0bXAgPSBidWlsZF9j YWxsX2V4cHJfbG9jIChpbnB1dF9sb2NhdGlvbiwKKwkJCSAgICAgICBnZm9y X2ZuZGVjbF9jYWZfZmFpbF9pbWFnZSwgMSwKKwkJCSAgICAgICBidWlsZF9p bnRfY3N0IChwY2hhcl90eXBlX25vZGUsIDApKTsKKyAgZWxzZQorICAgIHRt cCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLAorCQkJ ICAgICAgIGdmb3JfZm5kZWNsX3N0b3Bfc3RyaW5nLCAxLAorCQkJICAgICAg IGJ1aWxkX2ludF9jc3QgKHBjaGFyX3R5cGVfbm9kZSwgMSkpOworCisgIGdm Y19hZGRfZXhwcl90b19ibG9jayAoJnNlLnByZSwgdG1wKTsKKyAgZ2ZjX2Fk ZF9ibG9ja190b19ibG9jayAoJnNlLnByZSwgJnNlLnBvc3QpOworICByZXR1 cm4gZ2ZjX2ZpbmlzaF9ibG9jayAoJnNlLnByZSk7Cit9CiAKIHRyZWUKIGdm Y190cmFuc19sb2NrX3VubG9jayAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19leGVj X29wIG9wKQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5o IGIvZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5oCmluZGV4IGY5YzhlNzQuLjRi NWI0ZmMgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuaAor KysgYi9nY2MvZm9ydHJhbi90cmFucy1zdG10LmgKQEAgLTU2LDYgKzU2LDcg QEAgdHJlZSBnZmNfdHJhbnNfc2VsZWN0IChnZmNfY29kZSAqKTsKIHRyZWUg Z2ZjX3RyYW5zX3N5bmMgKGdmY19jb2RlICosIGdmY19leGVjX29wKTsKIHRy ZWUgZ2ZjX3RyYW5zX2xvY2tfdW5sb2NrIChnZmNfY29kZSAqLCBnZmNfZXhl Y19vcCk7CiB0cmVlIGdmY190cmFuc19ldmVudF9wb3N0X3dhaXQgKGdmY19j b2RlICosIGdmY19leGVjX29wKTsKK3RyZWUgZ2ZjX3RyYW5zX2ZhaWxfaW1h Z2UgKGdmY19jb2RlICopOwogdHJlZSBnZmNfdHJhbnNfZm9yYWxsIChnZmNf Y29kZSAqKTsKIHRyZWUgZ2ZjX3RyYW5zX3doZXJlIChnZmNfY29kZSAqKTsK IHRyZWUgZ2ZjX3RyYW5zX2FsbG9jYXRlIChnZmNfY29kZSAqKTsKZGlmZiAt LWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLmMgYi9nY2MvZm9ydHJhbi90cmFu cy5jCmluZGV4IDI4ZDEzNDEuLjFmNWQ3ZjMgMTAwNjQ0Ci0tLSBhL2djYy9m b3J0cmFuL3RyYW5zLmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMuYwpAQCAt MTgyNiw2ICsxODI2LDEwIEBAIHRyYW5zX2NvZGUgKGdmY19jb2RlICogY29k ZSwgdHJlZSBjb25kKQogCSAgcmVzID0gZ2ZjX3RyYW5zX2V2ZW50X3Bvc3Rf d2FpdCAoY29kZSwgY29kZS0+b3ApOwogCSAgYnJlYWs7CiAKKwljYXNlIEVY RUNfRkFJTF9JTUFHRToKKwkgIHJlcyA9IGdmY190cmFuc19mYWlsX2ltYWdl IChjb2RlKTsKKwkgIGJyZWFrOworCiAJY2FzZSBFWEVDX0ZPUkFMTDoKIAkg IHJlcyA9IGdmY190cmFuc19mb3JhbGwgKGNvZGUpOwogCSAgYnJlYWs7CmRp ZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy5oIGIvZ2NjL2ZvcnRyYW4v dHJhbnMuaAppbmRleCA1MTI2MTVhLi5jNmIxNDJmIDEwMDY0NAotLS0gYS9n Y2MvZm9ydHJhbi90cmFucy5oCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLmgK QEAgLTc3Niw2ICs3NzYsOSBAQCBleHRlcm4gR1RZKCgpKSB0cmVlIGdmb3Jf Zm5kZWNsX2NhZl91bmxvY2s7CiBleHRlcm4gR1RZKCgpKSB0cmVlIGdmb3Jf Zm5kZWNsX2NhZl9ldmVudF9wb3N0OwogZXh0ZXJuIEdUWSgoKSkgdHJlZSBn Zm9yX2ZuZGVjbF9jYWZfZXZlbnRfd2FpdDsKIGV4dGVybiBHVFkoKCkpIHRy ZWUgZ2Zvcl9mbmRlY2xfY2FmX2V2ZW50X3F1ZXJ5OworZXh0ZXJuIEdUWSgo KSkgdHJlZSBnZm9yX2ZuZGVjbF9jYWZfZmFpbF9pbWFnZTsKK2V4dGVybiBH VFkoKCkpIHRyZWUgZ2Zvcl9mbmRlY2xfY2FmX2ZhaWxlZF9pbWFnZXM7Citl eHRlcm4gR1RZKCgpKSB0cmVlIGdmb3JfZm5kZWNsX2NhZl9pbWFnZV9zdGF0 dXM7CiBleHRlcm4gR1RZKCgpKSB0cmVlIGdmb3JfZm5kZWNsX2NvX2Jyb2Fk Y2FzdDsKIGV4dGVybiBHVFkoKCkpIHRyZWUgZ2Zvcl9mbmRlY2xfY29fbWF4 OwogZXh0ZXJuIEdUWSgoKSkgdHJlZSBnZm9yX2ZuZGVjbF9jb19taW47CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXlf ZmFpbF9zdC5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJy YXlfZmFpbF9zdC5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZDRlYjhlMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvY29hcnJheV9mYWlsX3N0LmY5MApAQCAtMCwwICsx LDIxIEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAi LWZkdW1wLXRyZWUtb3JpZ2luYWwgLWZjb2FycmF5PWxpYiIgfQorIQorcHJv Z3JhbSBmYWlsX3N0YXRlbWVudAorICBpbXBsaWNpdCBub25lCisKKyAgaW50 ZWdlciA6OiBtZSxucCxzdGF0CisKKyAgbWUgPSB0aGlzX2ltYWdlKCkKKyAg bnAgPSBudW1faW1hZ2VzKCkKKyAgc3RhdCA9IDAKKworICBpZihtZSA9PSAx KSBmYWlsIGltYWdlCisKKyAgc3luYyBhbGwoc3RhdD1zdGF0KQorCisgIGlm KHN0YXQgLz0gMCkgd3JpdGUoKiwqKSAnSW1hZ2UgZmFpbGVkIGR1cmluZyBz eW5jJworCitlbmQgcHJvZ3JhbSBmYWlsX3N0YXRlbWVudAorCishIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX2dmb3J0cmFuX2NhZl9m YWlsX2ltYWdlIFxcXCgwQlxcXCk7IiAxICJvcmlnaW5hbCIgfSB9CmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXlfZmFp bGVkX2ltYWdlcy5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Nv YXJyYXlfZmFpbGVkX2ltYWdlcy5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYjY0ZWQyNQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheV9mYWlsZWRfaW1hZ2Vz LmY5MApAQCAtMCwwICsxLDIxIEBACishIHsgZGctZG8gY29tcGlsZSB9Cish IHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtb3JpZ2luYWwgLWZjb2FycmF5 PWxpYiIgfQorIQorcHJvZ3JhbSB0ZXN0X2ZhaWxlZF9pbWFnZXMKKyAgaW1w bGljaXQgbm9uZQorCisgIGludGVnZXIgOjogbWUsbnAsc3RhdAorICBjaGFy YWN0ZXIobGVuPTEpIDo6IGMKKworICBtZSA9IHRoaXNfaW1hZ2UoKQorICBu cCA9IG51bV9pbWFnZXMoKQorICBzdGF0ID0gMAorCisgIHN5bmMgYWxsKHN0 YXQ9c3RhdCkKKworICBpZihzdGF0IC89IDApIHRoZW4KKyAgICAgd3JpdGUo KiwqKSBmYWlsZWRfaW1hZ2VzKCkKKyAgZW5kaWYKK2VuZCBwcm9ncmFtIHRl c3RfZmFpbGVkX2ltYWdlcworCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiX2dmb3J0cmFuX2NhZl9mYWlsZWRfaW1hZ2VzIFxcXCgm YXRtcC4xLCAwQiwgMEJcXFwpOyIgMSAib3JpZ2luYWwiIH0gfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5X2ZhaWxl ZF9pbWFnZXNfZXJyLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv Y29hcnJheV9mYWlsZWRfaW1hZ2VzX2Vyci5mOTAKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYzNiMWE3OQotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheV9mYWlsZWRf aW1hZ2VzX2Vyci5mOTAKQEAgLTAsMCArMSwxOSBAQAorISB7IGRnLWRvIGNv bXBpbGUgfQorISB7IGRnLW9wdGlvbnMgIi1mY29hcnJheT1saWIiIH0KKyEK K3Byb2dyYW0gdGVzdF9mYWlsZWRfaW1hZ2VzX2VycgorICBpbXBsaWNpdCBu b25lCisKKyAgaW50ZWdlciA6OiBtZSxucCxzdGF0CisgIGNoYXJhY3Rlcihs ZW49MSkgOjogYworCisgIG1lID0gdGhpc19pbWFnZSgpCisgIG5wID0gbnVt X2ltYWdlcygpCisgIHN0YXQgPSAwCisKKyAgc3luYyBhbGwoc3RhdD1zdGF0 KQorCisgIGlmKHN0YXQgLz0gMCkgdGhlbgorICAgICB3cml0ZSgqLCopIGZh aWxlZF9pbWFnZXMobWUpICEgeyBkZy1lcnJvciAiVEVBTSBhcmd1bWVudCBv ZiB0aGUgRkFJTEVEX0lNQUdFUyBpbnRyaW5zaWMgZnVuY3Rpb24gYXQgLjEu IG5vdCB5ZXQgc3VwcG9ydGVkIiB9CisgIGVuZGlmCitlbmQgcHJvZ3JhbSB0 ZXN0X2ZhaWxlZF9pbWFnZXNfZXJyCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXlfaW1hZ2Vfc3RhdHVzLmY5MCBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheV9pbWFnZV9zdGF0dXMu ZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNDVk YTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL2NvYXJyYXlfaW1hZ2Vfc3RhdHVzLmY5MApAQCAtMCwwICsxLDIxIEBA CishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAiLWZkdW1w LXRyZWUtb3JpZ2luYWwgLWZjb2FycmF5PWxpYiIgfQorIQorcHJvZ3JhbSB0 ZXN0X2ltYWdlX3N0YXR1cworICBpbXBsaWNpdCBub25lCisKKyAgaW50ZWdl ciA6OiBtZSxucCxzdGF0CisgIGNoYXJhY3RlcihsZW49MSkgOjogYworCisg IG1lID0gdGhpc19pbWFnZSgpCisgIG5wID0gbnVtX2ltYWdlcygpCisgIHN0 YXQgPSAwCisKKyAgc3luYyBhbGwoc3RhdD1zdGF0KQorCisgIGlmKHN0YXQg Lz0gMCkgdGhlbgorICAgICB3cml0ZSgqLCopIGltYWdlX3N0YXR1cygxKQor ICBlbmRpZgorZW5kIHByb2dyYW0gdGVzdF9pbWFnZV9zdGF0dXMKKworISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9nZm9ydHJhbl9j YWZfaW1hZ2Vfc3RhdHVzIFxcXCgxLCAtMVxcXCk7IiAxICJvcmlnaW5hbCIg fSB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Nv YXJyYXlfaW1hZ2Vfc3RhdHVzX2Vyci5mOTAgYi9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2NvYXJyYXlfaW1hZ2Vfc3RhdHVzX2Vyci5mOTAKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzNmY1OQotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJh eV9pbWFnZV9zdGF0dXNfZXJyLmY5MApAQCAtMCwwICsxLDE5IEBACishIHsg ZGctZG8gY29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAiLWZjb2FycmF5PWxp YiIgfQorIQorcHJvZ3JhbSB0ZXN0X2ltYWdlX3N0YXR1c19lcnIKKyAgaW1w bGljaXQgbm9uZQorCisgIGludGVnZXIgOjogbWUsbnAsc3RhdAorICBjaGFy YWN0ZXIobGVuPTEpIDo6IGMKKworICBtZSA9IHRoaXNfaW1hZ2UoKQorICBu cCA9IG51bV9pbWFnZXMoKQorICBzdGF0ID0gMAorCisgIHN5bmMgYWxsKHN0 YXQ9c3RhdCkKKworICBpZihzdGF0IC89IDApIHRoZW4KKyAgICAgd3JpdGUo KiwqKSBpbWFnZV9zdGF0dXMoMSx0ZWFtPTEpICEgeyBkZy1lcnJvciAiVEVB TSBhcmd1bWVudCBvZiB0aGUgSU1BR0VfU1RBVFVTIGludHJpbnNpYyBmdW5j dGlvbiBhdCAuMS4gbm90IHlldCBzdXBwb3J0ZWQiIH0KKyAgZW5kaWYKK2Vu ZCBwcm9ncmFtIHRlc3RfaW1hZ2Vfc3RhdHVzX2Vycgo= --001a114db33654104d053bf13738--