From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 49654 invoked by alias); 25 Jan 2016 17:01:48 -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 49643 invoked by uid 89); 25 Jan 2016 17:01:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=ij, 2897, ji, voidmode X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 25 Jan 2016 17:01:45 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id 301688E247 for ; Mon, 25 Jan 2016 17:01:44 +0000 (UTC) Received: from anchor.twiddle.net (vpn-225-210.phx2.redhat.com [10.3.225.210]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u0PH1hhb016084 for ; Mon, 25 Jan 2016 12:01:43 -0500 To: GCC Patches From: Richard Henderson Subject: [PATCH, gcc7, aarch64] Add arithmetic overflow patterns X-Enigmail-Draft-Status: N1110 Message-ID: <56A654F6.70909@redhat.com> Date: Mon, 25 Jan 2016 17:01:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020601000804070005010709" X-IsSubscribed: yes X-SW-Source: 2016-01/txt/msg01903.txt.bz2 This is a multi-part message in MIME format. --------------020601000804070005010709 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-length: 275 After having just spent a few days looking through dumps of builtin-overflow-*.c for regressions while testing the patch for the TImode arithmetic PR, I thought I'd go ahead and post a patch to make use of the overflow bit on aarch64. Consider this queued for stage1. r~ --------------020601000804070005010709 Content-Type: text/plain; charset=UTF-8; name="z" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="z" Content-length: 36446 CSogY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1tb2Rlcy5kZWYgKENDX1YpOiBO ZXcuCgkqIGNvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYyAoYWFyY2g2NF96ZXJv X2V4dGVuZF9jb25zdF9lcSk6IE5ldy4KCShhYXJjaDY0X3NlbGVjdF9jY19t b2RlKTogVGVzdCBmb3Igc2lnbmVkIG92ZXJmbG93IHVzaW5nIENDX1Ztb2Rl LgoJKGFhcmNoNjRfZ2V0X2NvbmRpdGlvbl9jb2RlXzEpOiBIYW5kbGUgQ0Nf Vm1vZGUuCgkqIGNvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmg6IFVw ZGF0ZS4KCSogY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZCAoYWRkdjxHUEk+ NCwgdWFkZHY8R1BJPjQpOiBOZXcuCgkoYWRkdGkzKTogQ3JlYXRlIHNpbXBs ZXIgY29kZSBpZiBsb3cgcGFydCBpcyBhbHJlYWR5IGtub3duIHRvIGJlIDAu CgkoYWRkdnRpNCwgdWFkZHZ0aTQpOiBOZXcuCgkoKmFkZDxHUEk+M19jb21w YXJlQ19jY29ubHlfaW1tKTogTmV3LgoJKCphZGQ8R1BJPjNfY29tcGFyZUNf Y2Nvbmx5KTogTmV3LgoJKCphZGQ8R1BJPjNfY29tcGFyZUNfaW1tKTogTmV3 LgoJKCphZGQ8R1BJPjNfY29tcGFyZUMpOiBSZW5hbWUgZnJvbSBhZGQ8R1BJ PjNfY29tcGFyZTE7IGRvIG5vdAoJaGFuZGxlIGNvbnN0YW50cyB3aXRoaW4g dGhpcyBwYXR0ZXJuLgoJKCphZGQ8R1BJPjNfY29tcGFyZVZfY2Nvbmx5X2lt bSk6IE5ldy4KCSgqYWRkPEdQST4zX2NvbXBhcmVWX2Njb25seSk6IE5ldy4K CSgqYWRkPEdQST4zX2NvbXBhcmVWX2ltbSk6IE5ldy4KCShhZGQ8R1BJPjNf Y29tcGFyZVYpOiBOZXcuCgkoYWRkPEdQST4zX2NhcnJ5aW5DLCBhZGQ8R1BJ PjNfY2FycnlpblYpOiBOZXcuCgkoKmFkZDxHUEk+M19jYXJyeWluQ196ZXJv LCAqYWRkPEdQST4zX2NhcnJ5aW5WX3plcm8pOiBOZXcuCgkoKmFkZDxHUEk+ M19jYXJyeWluQywgKmFkZDxHUEk+M19jYXJyeWluVik6IE5ldy4KCShzdWJ2 PEdQST40LCB1c3VidjxHUEk+NCk6IE5ldy4KCShzdWJ0aSk6IEhhbmRsZSBv cDEgemVyby4KCShzdWJ2dGk0LCB1c3ViNHRpNCk6IE5ldy4KCSgqc3ViPEdQ ST4zX2NvbXBhcmUxX2ltbSk6IE5ldy4KCShzdWI8R1BJPjNfY2FycnlpbkNW KTogTmV3LgoJKCpzdWI8R1BJPjNfY2FycnlpbkNWX3oxX3oyLCAqc3ViPEdQ ST4zX2NhcnJ5aW5DVl96MSk6IE5ldy4KCSgqc3ViPEdQST4zX2NhcnJ5aW5D Vl96MiwgKnN1YjxHUEk+M19jYXJyeWluQ1YpOiBOZXcuCgoKZGlmZiAtLWdp dCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LW1vZGVzLmRlZiBiL2dj Yy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LW1vZGVzLmRlZgppbmRleCA3ZGUw YjNmLi5mMzQzNDVhIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC1tb2Rlcy5kZWYKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2Fh cmNoNjQtbW9kZXMuZGVmCkBAIC0yNiw2ICsyNiw3IEBAIENDX01PREUgKEND X1NFU1dQKTsgLyogc2lnbi1leHRlbmQgTEhTIChidXQgc3dhcCB0byBtYWtl IGl0IFJIUykuICAqLwogQ0NfTU9ERSAoQ0NfTlopOyAgICAvKiBPbmx5IE4g YW5kIFogYml0cyBvZiBjb25kaXRpb24gZmxhZ3MgYXJlIHZhbGlkLiAgKi8K IENDX01PREUgKENDX1opOyAgICAgLyogT25seSBaIGJpdCBvZiBjb25kaXRp b24gZmxhZ3MgaXMgdmFsaWQuICAqLwogQ0NfTU9ERSAoQ0NfQyk7ICAgICAv KiBPbmx5IEMgYml0IG9mIGNvbmRpdGlvbiBmbGFncyBpcyB2YWxpZC4gICov CitDQ19NT0RFIChDQ19WKTsgICAgIC8qIE9ubHkgViBiaXQgb2YgY29uZGl0 aW9uIGZsYWdzIGlzIHZhbGlkLiAgKi8KIAogLyogSGFsZi1wcmVjaXNpb24g ZmxvYXRpbmcgcG9pbnQgZm9yIF9fZnAxNi4gICovCiBGTE9BVF9NT0RFIChI RiwgMiwgMCk7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFy Y2g2NC1wcm90b3MuaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXBy b3Rvcy5oCmluZGV4IDE1ZmMzN2QuLjMyY2YyNDUgMTAwNjQ0Ci0tLSBhL2dj Yy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oCisrKyBiL2djYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oCkBAIC0yODksNiArMjg5 LDcgQEAgdm9pZCBhYXJjaDY0X2RlY2xhcmVfZnVuY3Rpb25fbmFtZSAoRklM RSAqLCBjb25zdCBjaGFyKiwgdHJlZSk7CiBib29sIGFhcmNoNjRfbGVnaXRp bWF0ZV9waWNfb3BlcmFuZF9wIChydHgpOwogYm9vbCBhYXJjaDY0X21vZGVz X3RpZWFibGVfcCAobWFjaGluZV9tb2RlIG1vZGUxLAogCQkJICAgICAgbWFj aGluZV9tb2RlIG1vZGUyKTsKK2Jvb2wgYWFyY2g2NF96ZXJvX2V4dGVuZF9j b25zdF9lcSAobWFjaGluZV9tb2RlLCBydHgsIG1hY2hpbmVfbW9kZSwgcnR4 KTsKIGJvb2wgYWFyY2g2NF9tb3ZlX2ltbSAoSE9TVF9XSURFX0lOVCwgbWFj aGluZV9tb2RlKTsKIGJvb2wgYWFyY2g2NF9tb3Zfb3BlcmFuZF9wIChydHgs IG1hY2hpbmVfbW9kZSk7CiBpbnQgYWFyY2g2NF9zaW1kX2F0dHJfbGVuZ3Ro X3JnbGlzdCAoZW51bSBtYWNoaW5lX21vZGUpOwpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYyBiL2djYy9jb25maWcvYWFyY2g2 NC9hYXJjaDY0LmMKaW5kZXggMGMxOGFiMi4uMTkxZDA4MSAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYworKysgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC5jCkBAIC0xNDg5LDYgKzE0ODksMTYgQEAg YWFyY2g2NF9zcGxpdF9zaW1kX21vdmUgKHJ0eCBkc3QsIHJ0eCBzcmMpCiAg ICAgfQogfQogCitib29sCithYXJjaDY0X3plcm9fZXh0ZW5kX2NvbnN0X2Vx IChtYWNoaW5lX21vZGUgeG1vZGUsIHJ0eCB4LAorCQkJICAgICAgbWFjaGlu ZV9tb2RlIHltb2RlLCBydHggeSkKK3sKKyAgcnR4IHIgPSBzaW1wbGlmeV9j b25zdF91bmFyeV9vcGVyYXRpb24gKFpFUk9fRVhURU5ELCB4bW9kZSwgeSwg eW1vZGUpOworICBnY2NfYXNzZXJ0IChyICE9IE5VTEwpOworICByZXR1cm4g cnR4X2VxdWFsX3AgKHgsIHIpOworfQorCQkJICAgICAgCisKIHN0YXRpYyBy dHgKIGFhcmNoNjRfZm9yY2VfdGVtcG9yYXJ5IChtYWNoaW5lX21vZGUgbW9k ZSwgcnR4IHgsIHJ0eCB2YWx1ZSkKIHsKQEAgLTQxOTIsNiArNDIwMiwxMyBA QCBhYXJjaDY0X3NlbGVjdF9jY19tb2RlIChSVFhfQ09ERSBjb2RlLCBydHgg eCwgcnR4IHkpCiAgICAgICAmJiBHRVRfQ09ERSAoeSkgPT0gWkVST19FWFRF TkQpCiAgICAgcmV0dXJuIENDX0Ntb2RlOwogCisgIC8qIEEgdGVzdCBmb3Ig c2lnbmVkIG92ZXJmbG93LiAgKi8KKyAgaWYgKChHRVRfTU9ERSAoeCkgPT0g REltb2RlIHx8IEdFVF9NT0RFICh4KSA9PSBUSW1vZGUpCisgICAgICAmJiBj b2RlID09IE5FCisgICAgICAmJiBHRVRfQ09ERSAoeCkgPT0gUExVUworICAg ICAgJiYgR0VUX0NPREUgKHkpID09IFNJR05fRVhURU5EKQorICAgIHJldHVy biBDQ19WbW9kZTsKKwogICAvKiBGb3IgZXZlcnl0aGluZyBlbHNlLCByZXR1 cm4gQ0Ntb2RlLiAgKi8KICAgcmV0dXJuIENDbW9kZTsKIH0KQEAgLTQzMDAs NiArNDMxNywxNSBAQCBhYXJjaDY0X2dldF9jb25kaXRpb25fY29kZV8xIChl bnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBlbnVtIHJ0eF9jb2RlIGNvbXBfY29k ZSkKIAl9CiAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ0NfVm1vZGU6Cisg ICAgICBzd2l0Y2ggKGNvbXBfY29kZSkKKwl7CisJY2FzZSBORTogcmV0dXJu IEFBUkNINjRfVlM7CisJY2FzZSBFUTogcmV0dXJuIEFBUkNINjRfVkM7CisJ ZGVmYXVsdDogcmV0dXJuIC0xOworCX0KKyAgICAgIGJyZWFrOworCiAgICAg ZGVmYXVsdDoKICAgICAgIHJldHVybiAtMTsKICAgICAgIGJyZWFrOwpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZAppbmRleCAzNjM3ODVlLi40NjA1 NmYyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5t ZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZApAQCAtMTcw MywyMiArMTcwMywxNTAgQEAKICAgfQogKQogCisoZGVmaW5lX2V4cGFuZCAi YWRkdjxtb2RlPjQiCisgIFsobWF0Y2hfb3BlcmFuZDpHUEkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIpCisgICAobWF0Y2hfb3BlcmFuZDpHUEkgMSAicmVnaXN0 ZXJfb3BlcmFuZCIpCisgICAobWF0Y2hfb3BlcmFuZDpHUEkgMiAicmVnaXN0 ZXJfb3BlcmFuZCIpCisgICAobWF0Y2hfb3BlcmFuZCAzICIiKV0KKyAgIiIK K3sKKyAgZW1pdF9pbnNuIChnZW5fYWRkPG1vZGU+M19jb21wYXJlViAob3Bl cmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSkpOworCisgIHJ0 eCB4OworICB4ID0gZ2VuX3J0eF9ORSAoVk9JRG1vZGUsIGdlbl9ydHhfUkVH IChDQ19WbW9kZSwgQ0NfUkVHTlVNKSwgY29uc3QwX3J0eCk7CisgIHggPSBn ZW5fcnR4X0lGX1RIRU5fRUxTRSAoVk9JRG1vZGUsIHgsCisJCQkgICAgZ2Vu X3J0eF9MQUJFTF9SRUYgKFZPSURtb2RlLCBvcGVyYW5kc1szXSksCisJCQkg ICAgcGNfcnR4KTsKKyAgZW1pdF9qdW1wX2luc24gKGdlbl9ydHhfU0VUIChw Y19ydHgsIHgpKTsKKyAgRE9ORTsKK30pCisKKyhkZWZpbmVfZXhwYW5kICJ1 YWRkdjxtb2RlPjQiCisgIFsobWF0Y2hfb3BlcmFuZDpHUEkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIpCisgICAobWF0Y2hfb3BlcmFuZDpHUEkgMSAicmVnaXN0 ZXJfb3BlcmFuZCIpCisgICAobWF0Y2hfb3BlcmFuZDpHUEkgMiAicmVnaXN0 ZXJfb3BlcmFuZCIpCisgICAobWF0Y2hfb3BlcmFuZCAzICIiKV0KKyAgIiIK K3sKKyAgZW1pdF9pbnNuIChnZW5fYWRkPG1vZGU+M19jb21wYXJlQyAob3Bl cmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSkpOworCisgIHJ0 eCB4OworICB4ID0gZ2VuX3J0eF9ORSAoVk9JRG1vZGUsIGdlbl9ydHhfUkVH IChDQ19DbW9kZSwgQ0NfUkVHTlVNKSwgY29uc3QwX3J0eCk7CisgIHggPSBn ZW5fcnR4X0lGX1RIRU5fRUxTRSAoVk9JRG1vZGUsIHgsCisJCQkgICAgZ2Vu X3J0eF9MQUJFTF9SRUYgKFZPSURtb2RlLCBvcGVyYW5kc1szXSksCisJCQkg ICAgcGNfcnR4KTsKKyAgZW1pdF9qdW1wX2luc24gKGdlbl9ydHhfU0VUIChw Y19ydHgsIHgpKTsKKyAgRE9ORTsKK30pCisKIChkZWZpbmVfZXhwYW5kICJh ZGR0aTMiCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlRJIDAgInJlZ2lzdGVy X29wZXJhbmQiICIiKQogCShwbHVzOlRJIChtYXRjaF9vcGVyYW5kOlRJIDEg InJlZ2lzdGVyX29wZXJhbmQiICIiKQotCQkgKG1hdGNoX29wZXJhbmQ6VEkg MiAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpKSldCisJCSAobWF0Y2hfb3BlcmFu ZDpUSSAyICJhYXJjaDY0X3JlZ19vcl9pbW0iICIiKSkpXQogICAiIgogewot ICBydHggbG93ID0gZ2VuX3JlZ19ydHggKERJbW9kZSk7Ci0gIGVtaXRfaW5z biAoZ2VuX2FkZGRpM19jb21wYXJlMSAobG93LCBnZW5fbG93cGFydCAoRElt b2RlLCBvcGVyYW5kc1sxXSksCi0JCQkJICBnZW5fbG93cGFydCAoREltb2Rl LCBvcGVyYW5kc1syXSkpKTsKKyAgcnR4IGwwID0gZ2VuX3JlZ19ydHggKERJ bW9kZSk7CisgIHJ0eCBsMSA9IGdlbl9sb3dwYXJ0IChESW1vZGUsIG9wZXJh bmRzWzFdKTsKKyAgcnR4IGwyID0gc2ltcGxpZnlfZ2VuX3N1YnJlZyAoRElt b2RlLCBvcGVyYW5kc1syXSwgVEltb2RlLAorCQkJCXN1YnJlZ19sb3dwYXJ0 X29mZnNldCAoREltb2RlLCBUSW1vZGUpKTsKKyAgcnR4IGgwID0gZ2VuX3Jl Z19ydHggKERJbW9kZSk7CisgIHJ0eCBoMSA9IGdlbl9oaWdocGFydCAoRElt b2RlLCBvcGVyYW5kc1sxXSk7CisgIHJ0eCBoMiA9IHNpbXBsaWZ5X2dlbl9z dWJyZWcgKERJbW9kZSwgb3BlcmFuZHNbMl0sIFRJbW9kZSwKKwkJCQlzdWJy ZWdfaGlnaHBhcnRfb2Zmc2V0IChESW1vZGUsIFRJbW9kZSkpOwogCi0gIHJ0 eCBoaWdoID0gZ2VuX3JlZ19ydHggKERJbW9kZSk7Ci0gIGVtaXRfaW5zbiAo Z2VuX2FkZGRpM19jYXJyeWluIChoaWdoLCBnZW5faGlnaHBhcnQgKERJbW9k ZSwgb3BlcmFuZHNbMV0pLAotCQkJCSBnZW5faGlnaHBhcnQgKERJbW9kZSwg b3BlcmFuZHNbMl0pKSk7CisgIGlmIChsMiA9PSBjb25zdDBfcnR4KQorICAg IHsKKyAgICAgIGwwID0gbDE7CisgICAgICBpZiAoIWFhcmNoNjRfcGx1c2xv bmdfb3BlcmFuZCAoaDIsIERJbW9kZSkpCisJaDIgPSBmb3JjZV9yZWcgKERJ bW9kZSwgaDIpOworICAgICAgZW1pdF9pbnNuIChnZW5fYWRkZGkzIChoMCwg aDEsIGgyKSk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgZW1pdF9p bnNuIChnZW5fYWRkZGkzX2NvbXBhcmVDIChsMCwgbDEsIGZvcmNlX3JlZyAo REltb2RlLCBsMikpKTsKKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FkZGRpM19j YXJyeWluIChoMCwgaDEsIGZvcmNlX3JlZyAoREltb2RlLCBoMikpKTsKKyAg ICB9CiAKLSAgZW1pdF9tb3ZlX2luc24gKGdlbl9sb3dwYXJ0IChESW1vZGUs IG9wZXJhbmRzWzBdKSwgbG93KTsKLSAgZW1pdF9tb3ZlX2luc24gKGdlbl9o aWdocGFydCAoREltb2RlLCBvcGVyYW5kc1swXSksIGhpZ2gpOworICBlbWl0 X21vdmVfaW5zbiAoZ2VuX2xvd3BhcnQgKERJbW9kZSwgb3BlcmFuZHNbMF0p LCBsMCk7CisgIGVtaXRfbW92ZV9pbnNuIChnZW5faGlnaHBhcnQgKERJbW9k ZSwgb3BlcmFuZHNbMF0pLCBoMCk7CisgIERPTkU7Cit9KQorCisoZGVmaW5l X2V4cGFuZCAiYWRkdnRpNCIKKyAgWyhtYXRjaF9vcGVyYW5kOlRJIDAgInJl Z2lzdGVyX29wZXJhbmQiICIiKQorICAgKG1hdGNoX29wZXJhbmQ6VEkgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgIiIpCisgICAobWF0Y2hfb3BlcmFuZDpUSSAy ICJhYXJjaDY0X3JlZ19vcl9pbW0iICIiKQorICAgKG1hdGNoX29wZXJhbmQg MyAiIildCisgICIiCit7CisgIHJ0eCBsMCA9IGdlbl9yZWdfcnR4IChESW1v ZGUpOworICBydHggbDEgPSBnZW5fbG93cGFydCAoREltb2RlLCBvcGVyYW5k c1sxXSk7CisgIHJ0eCBsMiA9IHNpbXBsaWZ5X2dlbl9zdWJyZWcgKERJbW9k ZSwgb3BlcmFuZHNbMl0sIFRJbW9kZSwKKwkJCQlzdWJyZWdfbG93cGFydF9v ZmZzZXQgKERJbW9kZSwgVEltb2RlKSk7CisgIHJ0eCBoMCA9IGdlbl9yZWdf cnR4IChESW1vZGUpOworICBydHggaDEgPSBnZW5faGlnaHBhcnQgKERJbW9k ZSwgb3BlcmFuZHNbMV0pOworICBydHggaDIgPSBzaW1wbGlmeV9nZW5fc3Vi cmVnIChESW1vZGUsIG9wZXJhbmRzWzJdLCBUSW1vZGUsCisJCQkJc3VicmVn X2hpZ2hwYXJ0X29mZnNldCAoREltb2RlLCBUSW1vZGUpKTsKKworICBpZiAo bDIgPT0gY29uc3QwX3J0eCkKKyAgICB7CisgICAgICBsMCA9IGwxOworICAg ICAgZW1pdF9pbnNuIChnZW5fYWRkZGkzX2NvbXBhcmVWIChoMCwgaDEsIGZv cmNlX3JlZyAoREltb2RlLCBoMikpKTsKKyAgICB9CisgIGVsc2UKKyAgICB7 CisgICAgICBlbWl0X2luc24gKGdlbl9hZGRkaTNfY29tcGFyZUMgKGwwLCBs MSwgZm9yY2VfcmVnIChESW1vZGUsIGwyKSkpOworICAgICAgZW1pdF9pbnNu IChnZW5fYWRkZGkzX2NhcnJ5aW5WIChoMCwgaDEsIGZvcmNlX3JlZyAoRElt b2RlLCBoMikpKTsKKyAgICB9CisKKyAgZW1pdF9tb3ZlX2luc24gKGdlbl9s b3dwYXJ0IChESW1vZGUsIG9wZXJhbmRzWzBdKSwgbDApOworICBlbWl0X21v dmVfaW5zbiAoZ2VuX2hpZ2hwYXJ0IChESW1vZGUsIG9wZXJhbmRzWzBdKSwg aDApOworCisgIHJ0eCB4OworICB4ID0gZ2VuX3J0eF9ORSAoVk9JRG1vZGUs IGdlbl9ydHhfUkVHIChDQ19WbW9kZSwgQ0NfUkVHTlVNKSwgY29uc3QwX3J0 eCk7CisgIHggPSBnZW5fcnR4X0lGX1RIRU5fRUxTRSAoVk9JRG1vZGUsIHgs CisJCQkgICAgZ2VuX3J0eF9MQUJFTF9SRUYgKFZPSURtb2RlLCBvcGVyYW5k c1szXSksCisJCQkgICAgcGNfcnR4KTsKKyAgZW1pdF9qdW1wX2luc24gKGdl bl9ydHhfU0VUIChwY19ydHgsIHgpKTsKKyAgRE9ORTsKK30pCisKKyhkZWZp bmVfZXhwYW5kICJ1YWRkdnRpNCIKKyAgWyhtYXRjaF9vcGVyYW5kOlRJIDAg InJlZ2lzdGVyX29wZXJhbmQiICIiKQorICAgKG1hdGNoX29wZXJhbmQ6VEkg MSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCisgICAobWF0Y2hfb3BlcmFuZDpU SSAyICJhYXJjaDY0X3JlZ19vcl9pbW0iICIiKQorICAgKG1hdGNoX29wZXJh bmQgMyAiIildCisgICIiCit7CisgIHJ0eCBsMCA9IGdlbl9yZWdfcnR4IChE SW1vZGUpOworICBydHggbDEgPSBnZW5fbG93cGFydCAoREltb2RlLCBvcGVy YW5kc1sxXSk7CisgIHJ0eCBsMiA9IHNpbXBsaWZ5X2dlbl9zdWJyZWcgKERJ bW9kZSwgb3BlcmFuZHNbMl0sIFRJbW9kZSwKKwkJCQlzdWJyZWdfbG93cGFy dF9vZmZzZXQgKERJbW9kZSwgVEltb2RlKSk7CisgIHJ0eCBoMCA9IGdlbl9y ZWdfcnR4IChESW1vZGUpOworICBydHggaDEgPSBnZW5faGlnaHBhcnQgKERJ bW9kZSwgb3BlcmFuZHNbMV0pOworICBydHggaDIgPSBzaW1wbGlmeV9nZW5f c3VicmVnIChESW1vZGUsIG9wZXJhbmRzWzJdLCBUSW1vZGUsCisJCQkJc3Vi cmVnX2hpZ2hwYXJ0X29mZnNldCAoREltb2RlLCBUSW1vZGUpKTsKKworICBp ZiAobDIgPT0gY29uc3QwX3J0eCkKKyAgICB7CisgICAgICBsMCA9IGwxOwor ICAgICAgZW1pdF9pbnNuIChnZW5fYWRkZGkzX2NvbXBhcmVDIChoMCwgaDEs IGZvcmNlX3JlZyAoREltb2RlLCBoMikpKTsKKyAgICB9CisgIGVsc2UKKyAg ICB7CisgICAgICBlbWl0X2luc24gKGdlbl9hZGRkaTNfY29tcGFyZUMgKGww LCBsMSwgZm9yY2VfcmVnIChESW1vZGUsIGwyKSkpOworICAgICAgZW1pdF9p bnNuIChnZW5fYWRkZGkzX2NhcnJ5aW5DIChoMCwgaDEsIGZvcmNlX3JlZyAo REltb2RlLCBoMikpKTsKKyAgICB9CisKKyAgZW1pdF9tb3ZlX2luc24gKGdl bl9sb3dwYXJ0IChESW1vZGUsIG9wZXJhbmRzWzBdKSwgbDApOworICBlbWl0 X21vdmVfaW5zbiAoZ2VuX2hpZ2hwYXJ0IChESW1vZGUsIG9wZXJhbmRzWzBd KSwgaDApOworCisgIHJ0eCB4OworICB4ID0gZ2VuX3J0eF9ORSAoVk9JRG1v ZGUsIGdlbl9ydHhfUkVHIChDQ19DbW9kZSwgQ0NfUkVHTlVNKSwgY29uc3Qw X3J0eCk7CisgIHggPSBnZW5fcnR4X0lGX1RIRU5fRUxTRSAoVk9JRG1vZGUs IHgsCisJCQkgICAgZ2VuX3J0eF9MQUJFTF9SRUYgKFZPSURtb2RlLCBvcGVy YW5kc1szXSksCisJCQkgICAgcGNfcnR4KTsKKyAgZW1pdF9qdW1wX2luc24g KGdlbl9ydHhfU0VUIChwY19ydHgsIHgpKTsKICAgRE9ORTsKIH0pCiAKQEAg LTE3NTUsNDIgKzE4ODMsMTI5IEBACiAgIFsoc2V0X2F0dHIgInR5cGUiICJh bHVzX3NyZWcsYWx1c19pbW0sYWx1c19pbW0iKV0KICkKIAotKGRlZmluZV9p bnNuICIqYWRkPG1vZGU+M19jb21wYXJlMV9jY29ubHkiCisoZGVmaW5lX2lu c24gIiphZGQ8bW9kZT4zX2NvbXBhcmVDX2Njb25seV9pbW0iCiAgIFsoc2V0 IChyZWc6Q0NfQyBDQ19SRUdOVU0pCiAJKG5lOkNDX0MKIAkgIChwbHVzOjxE V0k+Ci0JICAgICh6ZXJvX2V4dGVuZDo8RFdJPgotCSAgICAgIChtYXRjaF9v cGVyYW5kOkdQSSAwICJhYXJjaDY0X3JlZ19vcl96ZXJvIiAiJXJaLHJaLHJa IikpCi0JICAgICh6ZXJvX2V4dGVuZDo8RFdJPgotCSAgICAgIChtYXRjaF9v cGVyYW5kOkdQSSAxICJhYXJjaDY0X3BsdXNfb3BlcmFuZCIgInIsSSxKIikp KQorCSAgICAoemVyb19leHRlbmQ6PERXST4gKG1hdGNoX29wZXJhbmQ6R1BJ IDAgInJlZ2lzdGVyX29wZXJhbmQiICJyLHIiKSkKKwkgICAgKG1hdGNoX29w ZXJhbmQ6PERXST4gMiAiY29uc3Rfc2NhbGFyX2ludF9vcGVyYW5kIiAiIikp CiAJICAoemVyb19leHRlbmQ6PERXST4KLQkgICAgKHBsdXM6R1BJIChtYXRj aF9kdXAgMCkgKG1hdGNoX2R1cCAxKSkpKSldCi0gICIiCisJICAgIChwbHVz OkdQSQorCSAgICAgIChtYXRjaF9kdXAgMCkKKwkgICAgICAobWF0Y2hfb3Bl cmFuZDpHUEkgMSAiYWFyY2g2NF9wbHVzX2ltbWVkaWF0ZSIgIkksSiIpKSkp KV0KKyAgImFhcmNoNjRfemVyb19leHRlbmRfY29uc3RfZXEgKDxEV0k+bW9k ZSwgb3BlcmFuZHNbMl0sCisJCQkJIDxNT0RFPm1vZGUsIG9wZXJhbmRzWzFd KSIKICAgIkAKICAgY21uXFx0JTx3PjAsICU8dz4xCi0gIGNtblxcdCU8dz4w LCAlPHc+MQogICBjbXBcXHQlPHc+MCwgIyVuMSIKLSAgWyhzZXRfYXR0ciAi dHlwZSIgImFsdXNfc3JlZyxhbHVzX2ltbSxhbHVzX2ltbSIpXQorICBbKHNl dF9hdHRyICJ0eXBlIiAiYWx1c19pbW0iKV0KKykKKworKGRlZmluZV9pbnNu ICIqYWRkPG1vZGU+M19jb21wYXJlQ19jY29ubHkiCisgIFsoc2V0IChyZWc6 Q0NfQyBDQ19SRUdOVU0pCisJKG5lOkNDX0MKKwkgIChwbHVzOjxEV0k+CisJ ICAgICh6ZXJvX2V4dGVuZDo8RFdJPiAobWF0Y2hfb3BlcmFuZDpHUEkgMCAi cmVnaXN0ZXJfb3BlcmFuZCIgInIiKSkKKwkgICAgKHplcm9fZXh0ZW5kOjxE V0k+IChtYXRjaF9vcGVyYW5kOkdQSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAi ciIpKSkKKwkgICh6ZXJvX2V4dGVuZDo8RFdJPiAocGx1czpHUEkgKG1hdGNo X2R1cCAwKSAobWF0Y2hfZHVwIDEpKSkpKV0KKyAgIiIKKyAgImNtblxcdCU8 dz4wLCAlPHc+MSIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImFsdXNfc3JlZyIp XQorKQorCisoZGVmaW5lX2luc24gIiphZGQ8bW9kZT4zX2NvbXBhcmVDX2lt bSIKKyAgWyhzZXQgKHJlZzpDQ19DIENDX1JFR05VTSkKKwkobmU6Q0NfQwor CSAgKHBsdXM6PERXST4KKwkgICAgKHplcm9fZXh0ZW5kOjxEV0k+IChtYXRj aF9vcGVyYW5kOkdQSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAicixyIikpCisJ ICAgIChtYXRjaF9vcGVyYW5kOjxEV0k+IDMgImNvbnN0X3NjYWxhcl9pbnRf b3BlcmFuZCIgIiIpKQorCSAgKHplcm9fZXh0ZW5kOjxEV0k+CisJICAgIChw bHVzOkdQSQorCSAgICAgIChtYXRjaF9kdXAgMSkKKwkgICAgICAobWF0Y2hf b3BlcmFuZDpHUEkgMiAiYWFyY2g2NF9wbHVzX2ltbWVkaWF0ZSIgIkksSiIp KSkpKQorICAgKHNldCAobWF0Y2hfb3BlcmFuZDpHUEkgMCAicmVnaXN0ZXJf b3BlcmFuZCIgIj1yLHIiKQorCShwbHVzOkdQSSAobWF0Y2hfZHVwIDEpICht YXRjaF9kdXAgMikpKV0KKyAgImFhcmNoNjRfemVyb19leHRlbmRfY29uc3Rf ZXEgKDxEV0k+bW9kZSwgb3BlcmFuZHNbM10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8TU9ERT5tb2RlLCBvcGVyYW5kc1syXSkiCisg ICJACisgIGFkZHNcXHQlPHc+MCwgJTx3PjEsICU8dz4yCisgIHN1YnNcXHQl PHc+MCwgJTx3PjEsICMlbjIiCisgIFsoc2V0X2F0dHIgInR5cGUiICJhbHVz X2ltbSIpXQogKQogCi0oZGVmaW5lX2luc24gImFkZDxtb2RlPjNfY29tcGFy ZTEiCisoZGVmaW5lX2luc24gImFkZDxtb2RlPjNfY29tcGFyZUMiCiAgIFso c2V0IChyZWc6Q0NfQyBDQ19SRUdOVU0pCiAJKG5lOkNDX0MKIAkgIChwbHVz OjxEV0k+Ci0JICAgICh6ZXJvX2V4dGVuZDo8RFdJPgotCSAgICAgIChtYXRj aF9vcGVyYW5kOkdQSSAxICJhYXJjaDY0X3JlZ19vcl96ZXJvIiAiJXJaLHJa LHJaIikpCi0JICAgICh6ZXJvX2V4dGVuZDo8RFdJPgotCSAgICAgIChtYXRj aF9vcGVyYW5kOkdQSSAyICJhYXJjaDY0X3BsdXNfb3BlcmFuZCIgInIsSSxK IikpKQorCSAgICAoemVyb19leHRlbmQ6PERXST4gKG1hdGNoX29wZXJhbmQ6 R1BJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJyIikpCisJICAgICh6ZXJvX2V4 dGVuZDo8RFdJPiAobWF0Y2hfb3BlcmFuZDpHUEkgMiAicmVnaXN0ZXJfb3Bl cmFuZCIgInIiKSkpCiAJICAoemVyb19leHRlbmQ6PERXST4KIAkgICAgKHBs dXM6R1BJIChtYXRjaF9kdXAgMSkgKG1hdGNoX2R1cCAyKSkpKSkKLSAgIChz ZXQgKG1hdGNoX29wZXJhbmQ6R1BJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9 cixyLHIiKQorICAgKHNldCAobWF0Y2hfb3BlcmFuZDpHUEkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIj1yIikKKwkocGx1czpHUEkgKG1hdGNoX2R1cCAxKSAo bWF0Y2hfZHVwIDIpKSldCisgICIiCisgICJhZGRzXFx0JTx3PjAsICU8dz4x LCAlPHc+MiIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImFsdXNfc3JlZyIpXQor KQorCis7OyBOb3RlIHRoYXQgc2luY2Ugd2UncmUgc2lnbi1leHRlbmRpbmcs IG1hdGNoIHRoZSBpbW1lZGlhdGUgaW4gR1BJCis7OyByYXRoZXIgdGhhbiBp biBEV0kuICBTaW5jZSBDT05TVF9JTlQgaXMgbW9kZWxlc3MsIHRoaXMgd29y a3MgZmluZS4KKyhkZWZpbmVfaW5zbiAiKmFkZDxtb2RlPjNfY29tcGFyZVZf Y2Nvbmx5X2ltbSIKKyAgWyhzZXQgKHJlZzpDQ19WIENDX1JFR05VTSkKKwko bmU6Q0NfVgorCSAgKHBsdXM6PERXST4KKwkgICAgKHNpZ25fZXh0ZW5kOjxE V0k+IChtYXRjaF9vcGVyYW5kOkdQSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi cixyIikpCisJICAgIChtYXRjaF9vcGVyYW5kOkdQSSAxICJhYXJjaDY0X3Bs dXNfaW1tZWRpYXRlIiAiSSxKIikpCisJICAoc2lnbl9leHRlbmQ6PERXST4g KHBsdXM6R1BJIChtYXRjaF9kdXAgMCkgKG1hdGNoX2R1cCAxKSkpKSldCisg ICIiCisgICJACisgIGNtblxcdCU8dz4wLCAlPHc+MQorICBjbXBcXHQlPHc+ MCwgIyVuMSIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImFsdXNfaW1tIildCisp CisKKyhkZWZpbmVfaW5zbiAiKmFkZDxtb2RlPjNfY29tcGFyZVZfY2Nvbmx5 IgorICBbKHNldCAocmVnOkNDX1YgQ0NfUkVHTlVNKQorCShuZTpDQ19WCisJ ICAocGx1czo8RFdJPgorCSAgICAoc2lnbl9leHRlbmQ6PERXST4gKG1hdGNo X29wZXJhbmQ6R1BJIDAgInJlZ2lzdGVyX29wZXJhbmQiICJyIikpCisJICAg IChzaWduX2V4dGVuZDo8RFdJPiAobWF0Y2hfb3BlcmFuZDpHUEkgMSAicmVn aXN0ZXJfb3BlcmFuZCIgInIiKSkpCisJICAoc2lnbl9leHRlbmQ6PERXST4g KHBsdXM6R1BJIChtYXRjaF9kdXAgMCkgKG1hdGNoX2R1cCAxKSkpKSldCisg ICIiCisgICJjbW5cXHQlPHc+MCwgJTx3PjEiCisgIFsoc2V0X2F0dHIgInR5 cGUiICJhbHVzX3NyZWciKV0KKykKKworKGRlZmluZV9pbnNuICIqYWRkPG1v ZGU+M19jb21wYXJlVl9pbW0iCisgIFsoc2V0IChyZWc6Q0NfViBDQ19SRUdO VU0pCisJKG5lOkNDX1YKKwkgIChwbHVzOjxEV0k+CisJICAgIChzaWduX2V4 dGVuZDo8RFdJPgorCSAgICAgIChtYXRjaF9vcGVyYW5kOkdQSSAxICJyZWdp c3Rlcl9vcGVyYW5kIiAicixyIikpCisJICAgIChtYXRjaF9vcGVyYW5kOkdQ SSAyICJhYXJjaDY0X3BsdXNfaW1tZWRpYXRlIiAiSSxKIikpCisJICAoc2ln bl9leHRlbmQ6PERXST4KKwkgICAgKHBsdXM6R1BJIChtYXRjaF9kdXAgMSkg KG1hdGNoX2R1cCAyKSkpKSkKKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6R1BJ IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9cixyIikKIAkocGx1czpHUEkgKG1h dGNoX2R1cCAxKSAobWF0Y2hfZHVwIDIpKSldCiAgICIiCiAgICJACi0gIGFk ZHNcXHQlPHc+MCwgJTx3PjEsICU8dz4yCiAgIGFkZHNcXHQlPHc+MCwgJTx3 PjEsICU8dz4yCiAgIHN1YnNcXHQlPHc+MCwgJTx3PjEsICMlbjIiCi0gIFso c2V0X2F0dHIgInR5cGUiICJhbHVzX3NyZWcsYWx1c19pbW0sYWx1c19pbW0i KV0KKyAgWyhzZXRfYXR0ciAidHlwZSIgImFsdXNfaW1tLGFsdXNfaW1tIild CispCisKKyhkZWZpbmVfaW5zbiAiYWRkPG1vZGU+M19jb21wYXJlViIKKyAg WyhzZXQgKHJlZzpDQ19WIENDX1JFR05VTSkKKwkobmU6Q0NfVgorCSAgKHBs dXM6PERXST4KKwkgICAgKHNpZ25fZXh0ZW5kOjxEV0k+IChtYXRjaF9vcGVy YW5kOkdQSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKQorCSAgICAoc2ln bl9leHRlbmQ6PERXST4gKG1hdGNoX29wZXJhbmQ6R1BJIDIgInJlZ2lzdGVy X29wZXJhbmQiICJyIikpKQorCSAgKHNpZ25fZXh0ZW5kOjxEV0k+IChwbHVz OkdQSSAobWF0Y2hfZHVwIDEpIChtYXRjaF9kdXAgMikpKSkpCisgICAoc2V0 IChtYXRjaF9vcGVyYW5kOkdQSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIi KQorCShwbHVzOkdQSSAobWF0Y2hfZHVwIDEpIChtYXRjaF9kdXAgMikpKV0K KyAgIiIKKyAgImFkZHNcXHQlPHc+MCwgJTx3PjEsICU8dz4yIgorICBbKHNl dF9hdHRyICJ0eXBlIiAiYWx1c19zcmVnIildCiApCiAKIChkZWZpbmVfaW5z biAiKmFkZHNfc2hpZnRfaW1tXzxtb2RlPiIKQEAgLTIxNTMsNiArMjM2OCwx MzggQEAKICAgWyhzZXRfYXR0ciAidHlwZSIgImFkY19yZWciKV0KICkKIAor KGRlZmluZV9leHBhbmQgImFkZDxtb2RlPjNfY2FycnlpbkMiCisgIFsocGFy YWxsZWwKKyAgICAgWyhzZXQgKG1hdGNoX2R1cCAzKQorCSAgIChuZTpDQ19D CisJICAgICAocGx1czo8RFdJPgorCSAgICAgICAocGx1czo8RFdJPgorCQkg KG1hdGNoX2R1cCA0KQorCQkgKHplcm9fZXh0ZW5kOjxEV0k+CisJCSAgICht YXRjaF9vcGVyYW5kOkdQSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKSkK KwkgICAgICAgKHplcm9fZXh0ZW5kOjxEV0k+CisJCSAobWF0Y2hfb3BlcmFu ZDpHUEkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKSkpCisJICAgKHplcm9f ZXh0ZW5kOjxEV0k+CisJICAgICAocGx1czpHUEkKKwkgICAgICAgKHBsdXM6 R1BJIChtYXRjaF9kdXAgNSkgKG1hdGNoX2R1cCAxKSkKKwkgICAgICAgKG1h dGNoX2R1cCAyKSkpKSkKKyAgICAgIChzZXQgKG1hdGNoX29wZXJhbmQ6R1BJ IDAgInJlZ2lzdGVyX29wZXJhbmQiKQorCSAgIChwbHVzOkdQSQorCSAgICAg KHBsdXM6R1BJIChtYXRjaF9kdXAgNSkgKG1hdGNoX2R1cCAxKSkKKwkgICAg IChtYXRjaF9kdXAgMikpKV0pXQorICAgIiIKK3sKKyAgb3BlcmFuZHNbM10g PSBnZW5fcnR4X1JFRyAoQ0NfQ21vZGUsIENDX1JFR05VTSk7CisgIG9wZXJh bmRzWzRdID0gZ2VuX3J0eF9ORSAoPERXST5tb2RlLCBvcGVyYW5kc1szXSwg Y29uc3QwX3J0eCk7CisgIG9wZXJhbmRzWzVdID0gZ2VuX3J0eF9ORSAoPE1P REU+bW9kZSwgb3BlcmFuZHNbM10sIGNvbnN0MF9ydHgpOworfSkKKworKGRl ZmluZV9pbnNuICIqYWRkPG1vZGU+M19jYXJyeWluQ196ZXJvIgorICBbKHNl dCAocmVnOkNDX0MgQ0NfUkVHTlVNKQorCShuZTpDQ19DCisJICAocGx1czo8 RFdJPgorCSAgICAobWF0Y2hfb3BlcmFuZDo8RFdJPiAyICJhYXJjaDY0X2Nh cnJ5X29wZXJhdGlvbiIgIiIpCisJICAgICh6ZXJvX2V4dGVuZDo8RFdJPiAo bWF0Y2hfb3BlcmFuZDpHUEkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKSkp CisJICAoemVyb19leHRlbmQ6PERXST4KKwkgICAgKHBsdXM6R1BJCisJICAg ICAgKG1hdGNoX29wZXJhbmQ6R1BJIDMgImFhcmNoNjRfY2Fycnlfb3BlcmF0 aW9uIiAiIikKKwkgICAgICAobWF0Y2hfZHVwIDEpKSkpKQorICAgKHNldCAo bWF0Y2hfb3BlcmFuZDpHUEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisJKHBs dXM6R1BJIChtYXRjaF9kdXAgMykgKG1hdGNoX2R1cCAxKSkpXQorICAgIiIK KyAgICJhZGNzXFx0JTx3PjAsICU8dz4xLCA8dz56ciIKKyAgWyhzZXRfYXR0 ciAidHlwZSIgImFkY19yZWciKV0KKykKKworKGRlZmluZV9pbnNuICIqYWRk PG1vZGU+M19jYXJyeWluQyIKKyAgWyhzZXQgKHJlZzpDQ19DIENDX1JFR05V TSkKKwkobmU6Q0NfQworCSAgKHBsdXM6PERXST4KKwkgICAgKHBsdXM6PERX ST4KKwkgICAgICAobWF0Y2hfb3BlcmFuZDo8RFdJPiAzICJhYXJjaDY0X2Nh cnJ5X29wZXJhdGlvbiIgIiIpCisJICAgICAgKHplcm9fZXh0ZW5kOjxEV0k+ IChtYXRjaF9vcGVyYW5kOkdQSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIp KSkKKwkgICAgKHplcm9fZXh0ZW5kOjxEV0k+IChtYXRjaF9vcGVyYW5kOkdQ SSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKSkKKwkgICh6ZXJvX2V4dGVu ZDo8RFdJPgorCSAgICAocGx1czpHUEkKKwkgICAgICAocGx1czpHUEkKKwkJ KG1hdGNoX29wZXJhbmQ6R1BJIDQgImFhcmNoNjRfY2Fycnlfb3BlcmF0aW9u IiAiIikKKwkJKG1hdGNoX2R1cCAxKSkKKwkgICAgICAobWF0Y2hfZHVwIDIp KSkpKQorICAgKHNldCAobWF0Y2hfb3BlcmFuZDpHUEkgMCAicmVnaXN0ZXJf b3BlcmFuZCIpCisJKHBsdXM6R1BJCisJICAocGx1czpHUEkgKG1hdGNoX2R1 cCA0KSAobWF0Y2hfZHVwIDEpKQorCSAgKG1hdGNoX2R1cCAyKSkpXQorICAg IiIKKyAgICJhZGNzXFx0JTx3PjAsICU8dz4xLCAlPHc+MiIKKyAgWyhzZXRf YXR0ciAidHlwZSIgImFkY19yZWciKV0KKykKKworKGRlZmluZV9leHBhbmQg ImFkZDxtb2RlPjNfY2FycnlpblYiCisgIFsocGFyYWxsZWwKKyAgICAgWyhz ZXQgKHJlZzpDQ19WIENDX1JFR05VTSkKKwkgICAobmU6Q0NfVgorCSAgICAg KHBsdXM6PERXST4KKwkgICAgICAgKHBsdXM6PERXST4KKwkJIChtYXRjaF9k dXAgMykKKwkJIChzaWduX2V4dGVuZDo8RFdJPgorCQkgICAobWF0Y2hfb3Bl cmFuZDpHUEkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKSkpCisJICAgICAg IChzaWduX2V4dGVuZDo8RFdJPgorCQkgKG1hdGNoX29wZXJhbmQ6R1BJIDIg InJlZ2lzdGVyX29wZXJhbmQiICJyIikpKQorCSAgIChzaWduX2V4dGVuZDo8 RFdJPgorCSAgICAgKHBsdXM6R1BJCisJICAgICAgIChwbHVzOkdQSSAobWF0 Y2hfZHVwIDQpIChtYXRjaF9kdXAgMSkpCisJICAgICAgIChtYXRjaF9kdXAg MikpKSkpCisgICAgICAoc2V0IChtYXRjaF9vcGVyYW5kOkdQSSAwICJyZWdp c3Rlcl9vcGVyYW5kIikKKwkgICAocGx1czpHUEkKKwkgICAgIChwbHVzOkdQ SSAobWF0Y2hfZHVwIDQpIChtYXRjaF9kdXAgMSkpCisJICAgICAobWF0Y2hf ZHVwIDIpKSldKV0KKyAgICIiCit7CisgIHJ0eCBjYyA9IGdlbl9ydHhfUkVH IChDQ19DbW9kZSwgQ0NfUkVHTlVNKTsKKyAgb3BlcmFuZHNbM10gPSBnZW5f cnR4X05FICg8RFdJPm1vZGUsIGNjLCBjb25zdDBfcnR4KTsKKyAgb3BlcmFu ZHNbNF0gPSBnZW5fcnR4X05FICg8TU9ERT5tb2RlLCBjYywgY29uc3QwX3J0 eCk7Cit9KQorCisoZGVmaW5lX2luc24gIiphZGQ8bW9kZT4zX2NhcnJ5aW5W X3plcm8iCisgIFsoc2V0IChyZWc6Q0NfViBDQ19SRUdOVU0pCisJKG5lOkND X1YKKwkgIChwbHVzOjxEV0k+CisJICAgIChtYXRjaF9vcGVyYW5kOjxEV0k+ IDIgImFhcmNoNjRfY2Fycnlfb3BlcmF0aW9uIiAiIikKKwkgICAgKHNpZ25f ZXh0ZW5kOjxEV0k+IChtYXRjaF9vcGVyYW5kOkdQSSAxICJyZWdpc3Rlcl9v cGVyYW5kIiAiciIpKSkKKwkgIChzaWduX2V4dGVuZDo8RFdJPgorCSAgICAo cGx1czpHUEkKKwkgICAgICAobWF0Y2hfb3BlcmFuZDpHUEkgMyAiYWFyY2g2 NF9jYXJyeV9vcGVyYXRpb24iICIiKQorCSAgICAgIChtYXRjaF9kdXAgMSkp KSkpCisgICAoc2V0IChtYXRjaF9vcGVyYW5kOkdQSSAwICJyZWdpc3Rlcl9v cGVyYW5kIikKKwkocGx1czpHUEkgKG1hdGNoX2R1cCAzKSAobWF0Y2hfZHVw IDEpKSldCisgICAiIgorICAgImFkY3NcXHQlPHc+MCwgJTx3PjEsIDx3Pnpy IgorICBbKHNldF9hdHRyICJ0eXBlIiAiYWRjX3JlZyIpXQorKQorCisoZGVm aW5lX2luc24gIiphZGQ8bW9kZT4zX2NhcnJ5aW5WIgorICBbKHNldCAocmVn OkNDX1YgQ0NfUkVHTlVNKQorCShuZTpDQ19WCisJICAocGx1czo8RFdJPgor CSAgICAocGx1czo8RFdJPgorCSAgICAgIChtYXRjaF9vcGVyYW5kOjxEV0k+ IDMgImFhcmNoNjRfY2Fycnlfb3BlcmF0aW9uIiAiIikKKwkgICAgICAoc2ln bl9leHRlbmQ6PERXST4gKG1hdGNoX29wZXJhbmQ6R1BJIDEgInJlZ2lzdGVy X29wZXJhbmQiICJyIikpKQorCSAgICAoc2lnbl9leHRlbmQ6PERXST4gKG1h dGNoX29wZXJhbmQ6R1BJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJyIikpKQor CSAgKHNpZ25fZXh0ZW5kOjxEV0k+CisJICAgIChwbHVzOkdQSQorCSAgICAg IChwbHVzOkdQSQorCQkobWF0Y2hfb3BlcmFuZDpHUEkgNCAiYWFyY2g2NF9j YXJyeV9vcGVyYXRpb24iICIiKQorCQkobWF0Y2hfZHVwIDEpKQorCSAgICAg IChtYXRjaF9kdXAgMikpKSkpCisgICAoc2V0IChtYXRjaF9vcGVyYW5kOkdQ SSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkocGx1czpHUEkKKwkgIChwbHVz OkdQSSAobWF0Y2hfZHVwIDQpIChtYXRjaF9kdXAgMSkpCisJICAobWF0Y2hf ZHVwIDIpKSldCisgICAiIgorICAgImFkY3NcXHQlPHc+MCwgJTx3PjEsICU8 dz4yIgorICBbKHNldF9hdHRyICJ0eXBlIiAiYWRjX3JlZyIpXQorKQorCiAo ZGVmaW5lX2luc24gIiphZGRfdXh0PG1vZGU+X3NoaWZ0MiIKICAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6R1BJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9cmsi KQogCShwbHVzOkdQSSAoYW5kOkdQSQpAQCAtMjI0OSwyMiArMjU5NiwxNTgg QEAKICAgIChzZXRfYXR0ciAic2ltZCIgIioseWVzIildCiApCiAKKyhkZWZp bmVfZXhwYW5kICJzdWJ2PG1vZGU+NCIKKyAgWyhtYXRjaF9vcGVyYW5kOkdQ SSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAgIChtYXRjaF9vcGVyYW5kOkdQ SSAxICJhYXJjaDY0X3JlZ19vcl96ZXJvIikKKyAgIChtYXRjaF9vcGVyYW5k OkdQSSAyICJhYXJjaDY0X3JlZ19vcl96ZXJvIikKKyAgIChtYXRjaF9vcGVy YW5kIDMgIiIpXQorICAiIgoreworICBlbWl0X2luc24gKGdlbl9zdWI8bW9k ZT4zX2NvbXBhcmUxIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJh bmRzWzJdKSk7CisKKyAgcnR4IHg7CisgIHggPSBnZW5fcnR4X05FIChWT0lE bW9kZSwgZ2VuX3J0eF9SRUcgKENDX1Ztb2RlLCBDQ19SRUdOVU0pLCBjb25z dDBfcnR4KTsKKyAgeCA9IGdlbl9ydHhfSUZfVEhFTl9FTFNFIChWT0lEbW9k ZSwgeCwKKwkJCSAgICBnZW5fcnR4X0xBQkVMX1JFRiAoVk9JRG1vZGUsIG9w ZXJhbmRzWzNdKSwKKwkJCSAgICBwY19ydHgpOworICBlbWl0X2p1bXBfaW5z biAoZ2VuX3J0eF9TRVQgKHBjX3J0eCwgeCkpOworICBET05FOworfSkKKwor KGRlZmluZV9leHBhbmQgInVzdWJ2PG1vZGU+NCIKKyAgWyhtYXRjaF9vcGVy YW5kOkdQSSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAgIChtYXRjaF9vcGVy YW5kOkdQSSAxICJhYXJjaDY0X3JlZ19vcl96ZXJvIikKKyAgIChtYXRjaF9v cGVyYW5kOkdQSSAyICJhYXJjaDY0X3JlZ19vcl96ZXJvIikKKyAgIChtYXRj aF9vcGVyYW5kIDMgIiIpXQorICAiIgoreworICBlbWl0X2luc24gKGdlbl9z dWI8bW9kZT4zX2NvbXBhcmUxIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0s IG9wZXJhbmRzWzJdKSk7CisKKyAgcnR4IHg7CisgIHggPSBnZW5fcnR4X0xU VSAoVk9JRG1vZGUsIGdlbl9ydHhfUkVHIChDQ21vZGUsIENDX1JFR05VTSks IGNvbnN0MF9ydHgpOworICB4ID0gZ2VuX3J0eF9JRl9USEVOX0VMU0UgKFZP SURtb2RlLCB4LAorCQkJICAgIGdlbl9ydHhfTEFCRUxfUkVGIChWT0lEbW9k ZSwgb3BlcmFuZHNbM10pLAorCQkJICAgIHBjX3J0eCk7CisgIGVtaXRfanVt cF9pbnNuIChnZW5fcnR4X1NFVCAocGNfcnR4LCB4KSk7CisgIERPTkU7Cit9 KQorCiAoZGVmaW5lX2V4cGFuZCAic3VidGkzIgogICBbKHNldCAobWF0Y2hf b3BlcmFuZDpUSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLQkobWludXM6 VEkgKG1hdGNoX29wZXJhbmQ6VEkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIp CisJKG1pbnVzOlRJIChtYXRjaF9vcGVyYW5kOlRJIDEgImFhcmNoNjRfcmVn X29yX3plcm8iICIiKQogCQkgIChtYXRjaF9vcGVyYW5kOlRJIDIgInJlZ2lz dGVyX29wZXJhbmQiICIiKSkpXQogICAiIgogewotICBydHggbG93ID0gZ2Vu X3JlZ19ydHggKERJbW9kZSk7Ci0gIGVtaXRfaW5zbiAoZ2VuX3N1YmRpM19j b21wYXJlMSAobG93LCBnZW5fbG93cGFydCAoREltb2RlLCBvcGVyYW5kc1sx XSksCi0JCQkJICBnZW5fbG93cGFydCAoREltb2RlLCBvcGVyYW5kc1syXSkp KTsKKyAgcnR4IGwwID0gZ2VuX3JlZ19ydHggKERJbW9kZSk7CisgIHJ0eCBs MSA9IHNpbXBsaWZ5X2dlbl9zdWJyZWcgKERJbW9kZSwgb3BlcmFuZHNbMV0s IFRJbW9kZSwKKwkJCQlzdWJyZWdfbG93cGFydF9vZmZzZXQgKERJbW9kZSwg VEltb2RlKSk7CisgIHJ0eCBsMiA9IGdlbl9sb3dwYXJ0IChESW1vZGUsIG9w ZXJhbmRzWzJdKTsKKyAgcnR4IGgwID0gZ2VuX3JlZ19ydHggKERJbW9kZSk7 CisgIHJ0eCBoMSA9IHNpbXBsaWZ5X2dlbl9zdWJyZWcgKERJbW9kZSwgb3Bl cmFuZHNbMV0sIFRJbW9kZSwKKwkJCQlzdWJyZWdfaGlnaHBhcnRfb2Zmc2V0 IChESW1vZGUsIFRJbW9kZSkpOworICBydHggaDIgPSBnZW5faGlnaHBhcnQg KERJbW9kZSwgb3BlcmFuZHNbMl0pOwogCi0gIHJ0eCBoaWdoID0gZ2VuX3Jl Z19ydHggKERJbW9kZSk7Ci0gIGVtaXRfaW5zbiAoZ2VuX3N1YmRpM19jYXJy eWluIChoaWdoLCBnZW5faGlnaHBhcnQgKERJbW9kZSwgb3BlcmFuZHNbMV0p LAotCQkJCSBnZW5faGlnaHBhcnQgKERJbW9kZSwgb3BlcmFuZHNbMl0pKSk7 CisgIGVtaXRfaW5zbiAoZ2VuX3N1YmRpM19jb21wYXJlMSAobDAsIGwxLCBs MikpOworICBlbWl0X2luc24gKGdlbl9zdWJkaTNfY2FycnlpbiAoaDAsIGgx LCBoMikpOwogCi0gIGVtaXRfbW92ZV9pbnNuIChnZW5fbG93cGFydCAoRElt b2RlLCBvcGVyYW5kc1swXSksIGxvdyk7Ci0gIGVtaXRfbW92ZV9pbnNuIChn ZW5faGlnaHBhcnQgKERJbW9kZSwgb3BlcmFuZHNbMF0pLCBoaWdoKTsKKyAg ZW1pdF9tb3ZlX2luc24gKGdlbl9sb3dwYXJ0IChESW1vZGUsIG9wZXJhbmRz WzBdKSwgbDApOworICBlbWl0X21vdmVfaW5zbiAoZ2VuX2hpZ2hwYXJ0IChE SW1vZGUsIG9wZXJhbmRzWzBdKSwgaDApOworICBET05FOworfSkKKworKGRl ZmluZV9leHBhbmQgInN1YnZ0aTQiCisgIFsobWF0Y2hfb3BlcmFuZDpUSSAw ICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAgIChtYXRjaF9vcGVyYW5kOlRJIDEg ImFhcmNoNjRfcmVnX29yX3plcm8iKQorICAgKG1hdGNoX29wZXJhbmQ6VEkg MiAiYWFyY2g2NF9yZWdfb3JfaW1tIikKKyAgIChtYXRjaF9vcGVyYW5kIDMg IiIpXQorICAiIgoreworICBydHggbDAgPSBnZW5fcmVnX3J0eCAoREltb2Rl KTsKKyAgcnR4IGwxID0gc2ltcGxpZnlfZ2VuX3N1YnJlZyAoREltb2RlLCBv cGVyYW5kc1sxXSwgVEltb2RlLAorCQkJCXN1YnJlZ19sb3dwYXJ0X29mZnNl dCAoREltb2RlLCBUSW1vZGUpKTsKKyAgcnR4IGwyID0gc2ltcGxpZnlfZ2Vu X3N1YnJlZyAoREltb2RlLCBvcGVyYW5kc1syXSwgVEltb2RlLAorCQkJCXN1 YnJlZ19sb3dwYXJ0X29mZnNldCAoREltb2RlLCBUSW1vZGUpKTsKKyAgcnR4 IGgwID0gZ2VuX3JlZ19ydHggKERJbW9kZSk7CisgIHJ0eCBoMSA9IHNpbXBs aWZ5X2dlbl9zdWJyZWcgKERJbW9kZSwgb3BlcmFuZHNbMV0sIFRJbW9kZSwK KwkJCQlzdWJyZWdfaGlnaHBhcnRfb2Zmc2V0IChESW1vZGUsIFRJbW9kZSkp OworICBydHggaDIgPSBzaW1wbGlmeV9nZW5fc3VicmVnIChESW1vZGUsIG9w ZXJhbmRzWzJdLCBUSW1vZGUsCisJCQkJc3VicmVnX2hpZ2hwYXJ0X29mZnNl dCAoREltb2RlLCBUSW1vZGUpKTsKKworICBpZiAobDIgPT0gY29uc3QwX3J0 eCkKKyAgICB7CisgICAgICBsMCA9IGwxOworICAgICAgZW1pdF9pbnNuIChn ZW5fc3ViZGkzX2NvbXBhcmUxIChoMCwgaDEsIGZvcmNlX3JlZyAoREltb2Rl LCBoMikpKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAoQ09O U1RfSU5UX1AgKGwyKSkKKwl7CisJICBsMiA9IGZvcmNlX3JlZyAoREltb2Rl LCBHRU5fSU5UICgtVUlOVFZBTCAobDIpKSk7CisJICBoMiA9IGZvcmNlX3Jl ZyAoREltb2RlLCBoMik7CisJICBlbWl0X2luc24gKGdlbl9hZGRkaTNfY29t cGFyZUMgKGwwLCBsMSwgbDIpKTsKKwl9CisgICAgICBlbHNlCisJZW1pdF9p bnNuIChnZW5fc3ViZGkzX2NvbXBhcmUxIChsMCwgbDEsIGwyKSk7CisgICAg ICBlbWl0X2luc24gKGdlbl9zdWJkaTNfY2FycnlpbkNWIChoMCwgZm9yY2Vf cmVnIChESW1vZGUsIGgxKSwgaDIpKTsKKyAgICB9CisKKyAgZW1pdF9tb3Zl X2luc24gKGdlbl9sb3dwYXJ0IChESW1vZGUsIG9wZXJhbmRzWzBdKSwgbDAp OworICBlbWl0X21vdmVfaW5zbiAoZ2VuX2hpZ2hwYXJ0IChESW1vZGUsIG9w ZXJhbmRzWzBdKSwgaDApOworCisgIHJ0eCB4OworICB4ID0gZ2VuX3J0eF9O RSAoVk9JRG1vZGUsIGdlbl9ydHhfUkVHIChDQ19WbW9kZSwgQ0NfUkVHTlVN KSwgY29uc3QwX3J0eCk7CisgIHggPSBnZW5fcnR4X0lGX1RIRU5fRUxTRSAo Vk9JRG1vZGUsIHgsCisJCQkgICAgZ2VuX3J0eF9MQUJFTF9SRUYgKFZPSURt b2RlLCBvcGVyYW5kc1szXSksCisJCQkgICAgcGNfcnR4KTsKKyAgZW1pdF9q dW1wX2luc24gKGdlbl9ydHhfU0VUIChwY19ydHgsIHgpKTsKKyAgRE9ORTsK K30pCisKKyhkZWZpbmVfZXhwYW5kICJ1c3VidnRpNCIKKyAgWyhtYXRjaF9v cGVyYW5kOlRJIDAgInJlZ2lzdGVyX29wZXJhbmQiKQorICAgKG1hdGNoX29w ZXJhbmQ6VEkgMSAiYWFyY2g2NF9yZWdfb3JfemVybyIpCisgICAobWF0Y2hf b3BlcmFuZDpUSSAyICJhYXJjaDY0X3JlZ19vcl9pbW0iKQorICAgKG1hdGNo X29wZXJhbmQgMyAiIildCisgICIiCit7CisgIHJ0eCBsMCA9IGdlbl9yZWdf cnR4IChESW1vZGUpOworICBydHggbDEgPSBzaW1wbGlmeV9nZW5fc3VicmVn IChESW1vZGUsIG9wZXJhbmRzWzFdLCBUSW1vZGUsCisJCQkJc3VicmVnX2xv d3BhcnRfb2Zmc2V0IChESW1vZGUsIFRJbW9kZSkpOworICBydHggbDIgPSBz aW1wbGlmeV9nZW5fc3VicmVnIChESW1vZGUsIG9wZXJhbmRzWzJdLCBUSW1v ZGUsCisJCQkJc3VicmVnX2xvd3BhcnRfb2Zmc2V0IChESW1vZGUsIFRJbW9k ZSkpOworICBydHggaDAgPSBnZW5fcmVnX3J0eCAoREltb2RlKTsKKyAgcnR4 IGgxID0gc2ltcGxpZnlfZ2VuX3N1YnJlZyAoREltb2RlLCBvcGVyYW5kc1sx XSwgVEltb2RlLAorCQkJCXN1YnJlZ19oaWdocGFydF9vZmZzZXQgKERJbW9k ZSwgVEltb2RlKSk7CisgIHJ0eCBoMiA9IHNpbXBsaWZ5X2dlbl9zdWJyZWcg KERJbW9kZSwgb3BlcmFuZHNbMl0sIFRJbW9kZSwKKwkJCQlzdWJyZWdfaGln aHBhcnRfb2Zmc2V0IChESW1vZGUsIFRJbW9kZSkpOworCisgIGlmIChsMiA9 PSBjb25zdDBfcnR4KQorICAgIHsKKyAgICAgIGwwID0gbDE7CisgICAgICBl bWl0X2luc24gKGdlbl9zdWJkaTNfY29tcGFyZTEgKGgwLCBoMSwgZm9yY2Vf cmVnIChESW1vZGUsIGgyKSkpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgIGlmIChDT05TVF9JTlRfUCAobDIpKQorCXsKKwkgIGwyID0gZm9yY2Vf cmVnIChESW1vZGUsIEdFTl9JTlQgKC1VSU5UVkFMIChsMikpKTsKKwkgIGgy ID0gZm9yY2VfcmVnIChESW1vZGUsIGgyKTsKKwkgIGVtaXRfaW5zbiAoZ2Vu X2FkZGRpM19jb21wYXJlQyAobDAsIGwxLCBsMikpOworCX0KKyAgICAgIGVs c2UKKwllbWl0X2luc24gKGdlbl9zdWJkaTNfY29tcGFyZTEgKGwwLCBsMSwg bDIpKTsKKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3N1YmRpM19jYXJyeWluQ1Yg KGgwLCBmb3JjZV9yZWcgKERJbW9kZSwgaDEpLCBoMikpOworICAgIH0KKwor ICBlbWl0X21vdmVfaW5zbiAoZ2VuX2xvd3BhcnQgKERJbW9kZSwgb3BlcmFu ZHNbMF0pLCBsMCk7CisgIGVtaXRfbW92ZV9pbnNuIChnZW5faGlnaHBhcnQg KERJbW9kZSwgb3BlcmFuZHNbMF0pLCBoMCk7CisKKyAgcnR4IHg7CisgIHgg PSBnZW5fcnR4X0xUVShWT0lEbW9kZSwgZ2VuX3J0eF9SRUcgKENDbW9kZSwg Q0NfUkVHTlVNKSwgY29uc3QwX3J0eCk7CisgIHggPSBnZW5fcnR4X0lGX1RI RU5fRUxTRSAoVk9JRG1vZGUsIHgsCisJCQkgICAgZ2VuX3J0eF9MQUJFTF9S RUYgKFZPSURtb2RlLCBvcGVyYW5kc1szXSksCisJCQkgICAgcGNfcnR4KTsK KyAgZW1pdF9qdW1wX2luc24gKGdlbl9ydHhfU0VUIChwY19ydHgsIHgpKTsK ICAgRE9ORTsKIH0pCiAKQEAgLTIyOTMsNiArMjc3NiwyMiBAQAogICBbKHNl dF9hdHRyICJ0eXBlIiAiYWx1c19zcmVnIildCiApCiAKKyhkZWZpbmVfaW5z biAiKnN1Yjxtb2RlPjNfY29tcGFyZTFfaW1tIgorICBbKHNldCAocmVnOkND IENDX1JFR05VTSkKKwkoY29tcGFyZTpDQworCSAgKG1hdGNoX29wZXJhbmQ6 R1BJIDEgImFhcmNoNjRfcmVnX29yX3plcm8iICJyWixyWiIpCisJICAobWF0 Y2hfb3BlcmFuZDpHUEkgMiAiYWFyY2g2NF9wbHVzX2ltbWVkaWF0ZSIgIkks SiIpKSkKKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6R1BJIDAgInJlZ2lzdGVy X29wZXJhbmQiICI9cixyIikKKwkocGx1czpHUEkKKwkgIChtYXRjaF9kdXAg MSkKKwkgIChtYXRjaF9vcGVyYW5kOkdQSSAzICJhYXJjaDY0X3BsdXNfaW1t ZWRpYXRlIiAiSixJIikpKV0KKyAgIlVJTlRWQUwgKG9wZXJhbmRzWzJdKSA9 PSAtVUlOVFZBTCAob3BlcmFuZHNbM10pIgorICAiQAorICBzdWJzXFx0JTx3 PjAsICU8dz4xLCAlPHc+MgorICBhZGRzXFx0JTx3PjAsICU8dz4xLCAlPHc+ MyIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImFsdXNfaW1tIildCispCisKIChk ZWZpbmVfaW5zbiAic3ViPG1vZGU+M19jb21wYXJlMSIKICAgWyhzZXQgKHJl ZzpDQyBDQ19SRUdOVU0pCiAJKGNvbXBhcmU6Q0MKQEAgLTI1MjAsNiArMzAx OSw4NSBAQAogICBbKHNldF9hdHRyICJ0eXBlIiAiYWRjX3JlZyIpXQogKQog CisoZGVmaW5lX2V4cGFuZCAic3ViPG1vZGU+M19jYXJyeWluQ1YiCisgIFso cGFyYWxsZWwKKyAgICAgWyhzZXQgKHJlZzpDQyBDQ19SRUdOVU0pCisJICAg KGNvbXBhcmU6Q0MKKwkgICAgIChzaWduX2V4dGVuZDo8RFdJPgorCSAgICAg ICAobWF0Y2hfb3BlcmFuZDpHUEkgMSAiYWFyY2g2NF9yZWdfb3JfemVybyIg InJaIikpCisJICAgICAocGx1czo8RFdJPgorCSAgICAgICAoc2lnbl9leHRl bmQ6PERXST4KKwkJIChtYXRjaF9vcGVyYW5kOkdQSSAyICJyZWdpc3Rlcl9v cGVyYW5kIiAiciIpKQorCSAgICAgICAobHR1OjxEV0k+IChyZWc6Q0MgQ0Nf UkVHTlVNKSAoY29uc3RfaW50IDApKSkpKQorICAgICAgKHNldCAobWF0Y2hf b3BlcmFuZDpHUEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKKwkgICAo bWludXM6R1BJCisJICAgICAobWludXM6R1BJIChtYXRjaF9kdXAgMSkgKG1h dGNoX2R1cCAyKSkKKwkgICAgIChsdHU6R1BJIChyZWc6Q0MgQ0NfUkVHTlVN KSAoY29uc3RfaW50IDApKSkpXSldCisgICAiIgorKQorCisoZGVmaW5lX2lu c24gIipzdWI8bW9kZT4zX2NhcnJ5aW5DVl96MV96MiIKKyAgWyhzZXQgKHJl ZzpDQyBDQ19SRUdOVU0pCisJKGNvbXBhcmU6Q0MKKwkgIChjb25zdF9pbnQg MCkKKwkgIChtYXRjaF9vcGVyYW5kOjxEV0k+IDIgImFhcmNoNjRfYm9ycm93 X29wZXJhdGlvbiIgIiIpKSkKKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6R1BJ IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCisJKG5lZzpHUEkgKG1hdGNo X29wZXJhbmQ6R1BJIDEgImFhcmNoNjRfYm9ycm93X29wZXJhdGlvbiIgIiIp KSldCisgICAiIgorICAgInNiY3NcXHQlPHc+MCwgPHc+enIsIDx3PnpyIgor ICBbKHNldF9hdHRyICJ0eXBlIiAiYWRjX3JlZyIpXQorKQorCisoZGVmaW5l X2luc24gIipzdWI8bW9kZT4zX2NhcnJ5aW5DVl96MSIKKyAgWyhzZXQgKHJl ZzpDQyBDQ19SRUdOVU0pCisJKGNvbXBhcmU6Q0MKKwkgIChjb25zdF9pbnQg MCkKKwkgIChwbHVzOjxEV0k+CisJICAgIChzaWduX2V4dGVuZDo8RFdJPgor CSAgICAgIChtYXRjaF9vcGVyYW5kOkdQSSAxICJyZWdpc3Rlcl9vcGVyYW5k IiAiciIpKQorCSAgICAobWF0Y2hfb3BlcmFuZDo8RFdJPiAyICJhYXJjaDY0 X2JvcnJvd19vcGVyYXRpb24iICIiKSkpKQorICAgKHNldCAobWF0Y2hfb3Bl cmFuZDpHUEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKKwkobWludXM6 R1BJCisJICAobmVnOkdQSSAobWF0Y2hfZHVwIDEpKQorCSAgKG1hdGNoX29w ZXJhbmQ6R1BJIDMgImFhcmNoNjRfYm9ycm93X29wZXJhdGlvbiIgIiIpKSld CisgICAiIgorICAgInNiY3NcXHQlPHc+MCwgPHc+enIsICU8dz4xIgorICBb KHNldF9hdHRyICJ0eXBlIiAiYWRjX3JlZyIpXQorKQorCisoZGVmaW5lX2lu c24gIipzdWI8bW9kZT4zX2NhcnJ5aW5DVl96MiIKKyAgWyhzZXQgKHJlZzpD QyBDQ19SRUdOVU0pCisJKGNvbXBhcmU6Q0MKKwkgIChzaWduX2V4dGVuZDo8 RFdJPgorCSAgICAobWF0Y2hfb3BlcmFuZDpHUEkgMSAicmVnaXN0ZXJfb3Bl cmFuZCIgInIiKSkKKwkgIChtYXRjaF9vcGVyYW5kOjxEV0k+IDIgImFhcmNo NjRfYm9ycm93X29wZXJhdGlvbiIgIiIpKSkKKyAgIChzZXQgKG1hdGNoX29w ZXJhbmQ6R1BJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCisJKG1pbnVz OkdQSQorCSAgKG1hdGNoX2R1cCAxKQorCSAgKG1hdGNoX29wZXJhbmQ6R1BJ IDMgImFhcmNoNjRfYm9ycm93X29wZXJhdGlvbiIgIiIpKSldCisgICAiIgor ICAgInNiY3NcXHQlPHc+MCwgJTx3PjEsIDx3PnpyIgorICBbKHNldF9hdHRy ICJ0eXBlIiAiYWRjX3JlZyIpXQorKQorCisoZGVmaW5lX2luc24gIipzdWI8 bW9kZT4zX2NhcnJ5aW5DViIKKyAgWyhzZXQgKHJlZzpDQyBDQ19SRUdOVU0p CisJKGNvbXBhcmU6Q0MKKwkgIChzaWduX2V4dGVuZDo8RFdJPgorCSAgICAo bWF0Y2hfb3BlcmFuZDpHUEkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKSkK KwkgIChwbHVzOjxEV0k+CisJICAgIChzaWduX2V4dGVuZDo8RFdJPgorCSAg ICAgIChtYXRjaF9vcGVyYW5kOkdQSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAi ciIpKQorCSAgICAobWF0Y2hfb3BlcmFuZDo8RFdJPiAzICJhYXJjaDY0X2Jv cnJvd19vcGVyYXRpb24iICIiKSkpKQorICAgKHNldCAobWF0Y2hfb3BlcmFu ZDpHUEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKKwkobWludXM6R1BJ CisJICAobWludXM6R1BJIChtYXRjaF9kdXAgMSkgKG1hdGNoX2R1cCAyKSkK KwkgIChtYXRjaF9vcGVyYW5kOkdQSSA0ICJhYXJjaDY0X2JvcnJvd19vcGVy YXRpb24iICIiKSkpXQorICAgIiIKKyAgICJzYmNzXFx0JTx3PjAsICU8dz4x LCAlPHc+MiIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImFkY19yZWciKV0KKykK KwogKGRlZmluZV9pbnNuICIqc3ViX3V4dDxtb2RlPl9zaGlmdDIiCiAgIFso c2V0IChtYXRjaF9vcGVyYW5kOkdQSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXJrIikKIAkobWludXM6R1BJIChtYXRjaF9vcGVyYW5kOkdQSSA0ICJyZWdp c3Rlcl9vcGVyYW5kIiAicmsiKQo= --------------020601000804070005010709--