From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17936 invoked by alias); 27 Jan 2011 09:28:00 -0000 Received: (qmail 17910 invoked by uid 22791); 27 Jan 2011 09:27:55 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.44.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 27 Jan 2011 09:27:47 +0000 Received: from kpbe17.cbf.corp.google.com (kpbe17.cbf.corp.google.com [172.25.105.81]) by smtp-out.google.com with ESMTP id p0R9Rjoa015844 for ; Thu, 27 Jan 2011 01:27:45 -0800 Received: from yxl31 (yxl31.prod.google.com [10.190.3.223]) by kpbe17.cbf.corp.google.com with ESMTP id p0R9RhIj002319 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT) for ; Thu, 27 Jan 2011 01:27:44 -0800 Received: by yxl31 with SMTP id 31so670258yxl.18 for ; Thu, 27 Jan 2011 01:27:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.150.186.13 with SMTP id j13mr2497377ybf.77.1296120462921; Thu, 27 Jan 2011 01:27:42 -0800 (PST) Received: by 10.151.48.8 with HTTP; Thu, 27 Jan 2011 01:27:42 -0800 (PST) In-Reply-To: <4D40F031.5050809@codesourcery.com> References: <4D2C66FB.9090100@redhat.com> <201101121319.53218.paul@codesourcery.com> <1294844819.15132.1.camel@e102346-lin.cambridge.arm.com> <1294998680.28104.7.camel@e102346-lin.cambridge.arm.com> <4D40F031.5050809@codesourcery.com> Date: Thu, 27 Jan 2011 10:43:00 -0000 Message-ID: Subject: Re: [PATCH: ARM] PR 45335 Use ldrd and strd to access two consecutive words From: Carrot Wei To: Jie Zhang Cc: Richard Earnshaw , Ramana Radhakrishnan , Paul Brook , Nick Clifton , gcc-patches@gcc.gnu.org, ramana.radhakrishnan@arm.com Content-Type: multipart/mixed; boundary=000e0cd40200c7521c049ad08f0a X-System-Of-Record: true 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 X-SW-Source: 2011-01/txt/msg01990.txt.bz2 --000e0cd40200c7521c049ad08f0a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 716 Oops, gmail wrapped some lines automatically. Resend them as attachment. thanks Carrot On Thu, Jan 27, 2011 at 12:10 PM, Jie Zhang wrote: > Hi Carrot, > > I just found your patch is not in a good format. See the following piece = of > it: > > On 01/18/2011 10:59 PM, Carrot Wei wrote: >> >> + =A0 =A0 =A0/* TARGET_ARM =A0*/ >> + =A0 =A0 =A0if (((regno1& =A01) =3D=3D 0)&& =A0((regno1 + 1) =3D=3D reg= no2)) >> /* ldrd =A0*/ >> + =A0 =A0 =A0 return true; >> + > > The "/* ldrd */" line is bad and patch reports an error for it. There are > several other similar cases. So the patch can't be applied easily. Could = you > resend your patch, in a good format? > > > Regards, > -- > Jie Zhang > --000e0cd40200c7521c049ad08f0a Content-Type: text/plain; charset=US-ASCII; name="ldrd.txt" Content-Disposition: attachment; filename="ldrd.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjfgngy50 Content-length: 26409 SW5kZXg6IGFybS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGFybS5j CShyZXZpc2lvbiAxNjg3MzcpCisrKyBhcm0uYwkod29ya2luZyBjb3B5KQpA QCAtMjM1NzQsNCArMjM1NzQsMjM0IEBAIGFybV9wcmVmZXJyZWRfcmVuYW1l X2NsYXNzIChyZWdfY2xhc3NfdAogICAgIHJldHVybiBOT19SRUdTOwogfQoK Ky8qIENoZWNrIHRoZSB2YWxpZGl0eSBvZiBvcGVyYW5kcyBpbiBhbiBsZHJk L3N0cmQgaW5zdHJ1Y3Rpb24uICAqLworYm9vbAorYXJtX2NoZWNrX2xkcmRf b3BlcmFuZHMgKHJ0eCByZWcxLCBydHggcmVnMiwgcnR4IG9mZjEsIHJ0eCBv ZmYyKQoreworICBIT1NUX1dJREVfSU5UIG9mZnNldDEgPSAwOworICBIT1NU X1dJREVfSU5UIG9mZnNldDIgPSAwOworICBpbnQgcmVnbm8xID0gUkVHTk8g KHJlZzEpOworICBpbnQgcmVnbm8yID0gUkVHTk8gKHJlZzIpOworICBIT1NU X1dJREVfSU5UIG1heF9vZmZzZXQgPSAxMDIwOworCisgIGlmIChUQVJHRVRf QVJNKQorICAgIG1heF9vZmZzZXQgPSAyNTU7CisKKyAgaWYgKG9mZjEgIT0g TlVMTF9SVFgpCisgICAgb2Zmc2V0MSA9IElOVFZBTCAob2ZmMSk7CisgIGlm IChvZmYyICE9IE5VTExfUlRYKQorICAgIG9mZnNldDIgPSBJTlRWQUwgKG9m ZjIpOworCisgIC8qIFRoZSBvZmZzZXQgcmFuZ2Ugb2YgTERSRCBpcyBbLW1h eF9vZmZzZXQsIG1heF9vZmZzZXRdLiBIZXJlIHdlIGNoZWNrIGlmCisgICAg IGJvdGggb2Zmc2V0cyBsaWUgaW4gdGhlIHJhbmdlIFstbWF4X29mZnNldCwg bWF4X29mZnNldCs0XS4gSWYgb25lIG9mIHRoZQorICAgICBvZmZzZXRzIGlz IG1heF9vZmZzZXQrNCwgdGhlIGZvbGxvd2luZyBjb25kaXRpb24KKyAgICAg ICAgICgob2Zmc2V0MSArIDQpID09IG9mZnNldDIpCisgICAgIHdpbGwgZW5z dXJlIG9mZnNldDEgdG8gYmUgbWF4X29mZnNldCwgc3VpdGFibGUgZm9yIGlu c3RydWN0aW9uIExEUkQuICAqLworICBpZiAoKG9mZnNldDEgPiAobWF4X29m ZnNldCArIDQpKSB8fCAob2Zmc2V0MSA8IC1tYXhfb2Zmc2V0KQorICAgICAg fHwgKChvZmZzZXQxICYgMykgIT0gMCkpCisgICAgcmV0dXJuIGZhbHNlOwor ICBpZiAoKG9mZnNldDIgPiAobWF4X29mZnNldCArIDQpKSB8fCAob2Zmc2V0 MiA8IC1tYXhfb2Zmc2V0KQorICAgICAgfHwgKChvZmZzZXQyICYgMykgIT0g MCkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGlmICgob2Zmc2V0MSArIDQp ID09IG9mZnNldDIpCisgICAgeworICAgICAgaWYgKFRBUkdFVF9USFVNQjIp CisJcmV0dXJuIHRydWU7CisKKyAgICAgIC8qIFRBUkdFVF9BUk0gICovCisg ICAgICBpZiAoKChyZWdubzEgJiAxKSA9PSAwKSAmJiAoKHJlZ25vMSArIDEp ID09IHJlZ25vMikpICAgICAgICAgICAvKiBsZHJkICAqLworCXJldHVybiB0 cnVlOworCisgICAgICBpZiAoKHJlZ25vMSA8IHJlZ25vMikgJiYgKChvZmZz ZXQxIDw9IDQpICYmIChvZmZzZXQxID49IC04KSkpICAvKiBsZG0gICovCisJ cmV0dXJuIHRydWU7CisgICAgfQorICBpZiAoKG9mZnNldDIgKyA0KSA9PSBv ZmZzZXQxKQorICAgIHsKKyAgICAgIGlmIChUQVJHRVRfVEhVTUIyKQorCXJl dHVybiB0cnVlOworCisgICAgICAvKiBUQVJHRVRfQVJNICAqLworICAgICAg aWYgKCgocmVnbm8yICYgMSkgPT0gMCkgJiYgKChyZWdubzIgKyAxKSA9PSBy ZWdubzEpKSAgICAgICAgICAgLyogbGRyZCAgKi8KKwlyZXR1cm4gdHJ1ZTsK KworICAgICAgaWYgKChyZWdubzIgPCByZWdubzEpICYmICgob2Zmc2V0MiA8 PSA0KSAmJiAob2Zmc2V0MiA+PSAtOCkpKSAgLyogbGRtICAqLworCXJldHVy biB0cnVlOworICAgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIENo ZWNrIGlmIHRoZSB0d28gbWVtb3J5IGFjY2Vzc2VzIGNhbiBiZSBtZXJnZWQg dG8gYW4gbGRyZC9zdHJkIGluc3RydWN0aW9uLgorICAgVGhhdCBpcyB0aGV5 IHVzZSB0aGUgc2FtZSBiYXNlIHJlZ2lzdGVyLCBhbmQgdGhlIGdhcCBiZXR3 ZWVuIGNvbnN0YW50CisgICBvZmZzZXRzIHNob3VsZCBiZSA0LiAgKi8KK2Jv b2wKK2FybV9sZWdpdGltYXRlX2xkcmRfcCAocnR4IHJlZzEsIHJ0eCByZWcy LCBydHggbWVtMSwgcnR4IG1lbTIsIGJvb2wgbGRyZCkKK3sKKyAgcnR4IGJh c2UxLCBiYXNlMjsKKyAgcnR4IG9mZnNldDEgPSBOVUxMX1JUWDsKKyAgcnR4 IG9mZnNldDIgPSBOVUxMX1JUWDsKKyAgcnR4IGFkZHIxID0gWEVYUCAobWVt MSwgMCk7CisgIHJ0eCBhZGRyMiA9IFhFWFAgKG1lbTIsIDApOworCisgIGlm IChNRU1fVk9MQVRJTEVfUCAobWVtMSkgfHwgTUVNX1ZPTEFUSUxFX1AgKG1l bTIpKQorICAgIHJldHVybiBmYWxzZTsKKworICBpZiAoUkVHX1AgKGFkZHIx KSkKKyAgICBiYXNlMSA9IGFkZHIxOworICBlbHNlIGlmIChHRVRfQ09ERSAo YWRkcjEpID09IFBMVVMpCisgICAgeworICAgICAgYmFzZTEgPSBYRVhQIChh ZGRyMSwgMCk7CisgICAgICBvZmZzZXQxID0gWEVYUCAoYWRkcjEsIDEpOwor ICAgICAgaWYgKCFSRUdfUCAoYmFzZTEpIHx8IChHRVRfQ09ERSAob2Zmc2V0 MSkgIT0gQ09OU1RfSU5UKSkKKwlyZXR1cm4gZmFsc2U7CisgICAgfQorICBl bHNlCisgICAgcmV0dXJuIGZhbHNlOworCisgIGlmIChSRUdfUCAoYWRkcjIp KQorICAgIGJhc2UyID0gYWRkcjI7CisgIGVsc2UgaWYgKEdFVF9DT0RFIChh ZGRyMikgPT0gUExVUykKKyAgICB7CisgICAgICBiYXNlMiA9IFhFWFAgKGFk ZHIyLCAwKTsKKyAgICAgIG9mZnNldDIgPSBYRVhQIChhZGRyMiwgMSk7Cisg ICAgICBpZiAoIVJFR19QIChiYXNlMikgfHwgKEdFVF9DT0RFIChvZmZzZXQy KSAhPSBDT05TVF9JTlQpKQorCXJldHVybiBmYWxzZTsKKyAgICB9CisgIGVs c2UKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgaWYgKGJhc2UxICE9IGJhc2Uy KQorICAgIHJldHVybiBmYWxzZTsKKworICBpZiAobGRyZCAmJiAoKHJlZzEg PT0gcmVnMikgfHwgKHJlZzEgPT0gYmFzZTEpKSkKKyAgICByZXR1cm4gZmFs c2U7CisKKyAgcmV0dXJuIGFybV9jaGVja19sZHJkX29wZXJhbmRzIChyZWcx LCByZWcyLCBvZmZzZXQxLCBvZmZzZXQyKTsKK30KKworLyogT3V0cHV0IGlu c3RydWN0aW9ucyBmb3IgbGRyZCBhbmQgY291bnQgdGhlIG51bWJlciBvZiBi eXRlcyBoYXMgYmVlbgorICAgb3V0cHV0dGVkLiBEbyBub3QgYWN0dWFsbHkg b3V0cHV0IGluc3RydWN0aW9ucyBpZiBFTUlUX1AgaXMgZmFsc2UuICAqLwor aW50Cithcm1fb3V0cHV0X2xkcmQgKHJ0eCByZWcxLCBydHggcmVnMiwgcnR4 IGJhc2UsIHJ0eCBvZmYxLCBydHggb2ZmMiwgYm9vbCBlbWl0X3ApCit7Cisg IGludCBsZW5ndGggPSAwOworICBydHggb3BlcmFuZHNbNV07CisgIEhPU1Rf V0lERV9JTlQgb2Zmc2V0MSA9IDA7CisgIEhPU1RfV0lERV9JTlQgb2Zmc2V0 MiA9IDA7CisKKyAgaWYgKG9mZjEgIT0gTlVMTF9SVFgpCisgICAgb2Zmc2V0 MSA9IElOVFZBTCAob2ZmMSk7CisgIGVsc2UKKyAgICBvZmYxID0gR0VOX0lO VCAoMCk7CisgIGlmIChvZmYyICE9IE5VTExfUlRYKQorICAgIG9mZnNldDIg PSBJTlRWQUwgKG9mZjIpOworICBlbHNlCisgICAgb2ZmMiA9IEdFTl9JTlQg KDApOworICBpZiAob2Zmc2V0MSA+IG9mZnNldDIpCisgICAgeworICAgICAg cnR4IHRtcDsKKyAgICAgIEhPU1RfV0lERV9JTlQgdCA9IG9mZnNldDE7ICAg b2Zmc2V0MSA9IG9mZnNldDI7ICAgb2Zmc2V0MiA9IHQ7CisgICAgICB0bXAg PSBvZmYxOyAgIG9mZjEgPSBvZmYyOyAgIG9mZjIgPSB0bXA7CisgICAgICB0 bXAgPSByZWcxOyAgIHJlZzEgPSByZWcyOyAgIHJlZzIgPSB0bXA7CisgICAg fQorCisgIG9wZXJhbmRzWzBdID0gcmVnMTsKKyAgb3BlcmFuZHNbMV0gPSBy ZWcyOworICBvcGVyYW5kc1syXSA9IGJhc2U7CisgIG9wZXJhbmRzWzNdID0g b2ZmMTsKKyAgb3BlcmFuZHNbNF0gPSBvZmYyOworCisgIGlmIChUQVJHRVRf VEhVTUIyKQorICAgIHsKKyAgICAgIGlmIChmaXhfY20zX2xkcmQgJiYgKGJh c2UgPT0gcmVnMSkpCisJeworCSAgaWYgKG9mZnNldDEgPD0gLTI1NikKKwkg ICAgeworCSAgICAgIGlmIChlbWl0X3ApCisJCW91dHB1dF9hc21faW5zbiAo InN1Ylx0JTIsICUyLCAlbjMiLCBvcGVyYW5kcyk7CisJICAgICAgbGVuZ3Ro ID0gNDsKKworCSAgICAgIGlmIChlbWl0X3ApCisJCW91dHB1dF9hc21faW5z biAoImxkclx0JTEsIFslMiwgIzRdIiwgb3BlcmFuZHMpOworCSAgICAgIGlm IChsb3dfcmVnaXN0ZXJfb3BlcmFuZCAocmVnMiwgU0ltb2RlKQorCQkgICYm IGxvd19yZWdpc3Rlcl9vcGVyYW5kIChiYXNlLCBTSW1vZGUpKQorCQlsZW5n dGggKz0gMjsKKwkgICAgICBlbHNlCisJCWxlbmd0aCArPSA0OworCisJICAg ICAgaWYgKGVtaXRfcCkKKwkJb3V0cHV0X2FzbV9pbnNuICgibGRyXHQlMCwg WyUyXSIsIG9wZXJhbmRzKTsKKwkgICAgICBpZiAobG93X3JlZ2lzdGVyX29w ZXJhbmQgKGJhc2UsIFNJbW9kZSkpCisJCWxlbmd0aCArPSAyOworCSAgICAg IGVsc2UKKwkJbGVuZ3RoICs9IDQ7CisJICAgIH0KKwkgIGVsc2UKKwkgICAg eworCSAgICAgIGlmIChlbWl0X3ApCisJCW91dHB1dF9hc21faW5zbiAoImxk clx0JTEsIFslMiwgJTRdIiwgb3BlcmFuZHMpOworCSAgICAgIGlmIChsb3df cmVnaXN0ZXJfb3BlcmFuZCAocmVnMiwgU0ltb2RlKSAmJiAob2Zmc2V0MiA+ PSAwKQorCQkgICYmIGxvd19yZWdpc3Rlcl9vcGVyYW5kIChiYXNlLCBTSW1v ZGUpICYmIChvZmZzZXQyIDwgMTI4KSkKKwkJbGVuZ3RoICs9IDI7CisJICAg ICAgZWxzZQorCQlsZW5ndGggKz0gNDsKKworCSAgICAgIGlmIChlbWl0X3Ap CisJCW91dHB1dF9hc21faW5zbiAoImxkclx0JTAsIFslMiwgJTNdIiwgb3Bl cmFuZHMpOworCSAgICAgIGlmIChsb3dfcmVnaXN0ZXJfb3BlcmFuZCAoYmFz ZSwgU0ltb2RlKQorCQkgICYmIChvZmZzZXQxID49IDApICYmIChvZmZzZXQx IDwgMTI4KSkKKwkJbGVuZ3RoICs9IDI7CisJICAgICAgZWxzZQorCQlsZW5n dGggKz0gNDsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBpZiAo ZW1pdF9wKQorCSAgICBvdXRwdXRfYXNtX2luc24gKCJsZHJkXHQlMCwgJTEs IFslMiwgJTNdIiwgb3BlcmFuZHMpOworCSAgbGVuZ3RoID0gNDsKKwl9Cisg ICAgfQorICBlbHNlICAgIC8qIFRBUkdFVF9BUk0gICovCisgICAgeworICAg ICAgaWYgKChSRUdOTyAocmVnMikgPT0gKFJFR05PIChyZWcxKSArIDEpKSAm JiAoKFJFR05PIChyZWcxKSAmIDEpID09IDApKQorCXsKKwkgIGlmIChlbWl0 X3ApCisJICAgIG91dHB1dF9hc21faW5zbiAoImxkcmRcdCUwLCAlMSwgWyUy LCAlM10iLCBvcGVyYW5kcyk7CisJICBsZW5ndGggPSA0OworCX0KKyAgICAg IGVsc2UKKwl7CisJICBpZiAoZW1pdF9wKQorCSAgICB7CisJICAgICAgc3dp dGNoIChvZmZzZXQxKQorCQl7CisJCWNhc2UgLTg6CisJCSAgb3V0cHV0X2Fz bV9pbnNuICgibGRtJShkYiUpXHQlMiwgeyUwLCAlMX0iLCBvcGVyYW5kcyk7 CisJCSAgYnJlYWs7CisKKwkJY2FzZSAtNDoKKwkJICBvdXRwdXRfYXNtX2lu c24gKCJsZG0lKGRhJSlcdCUyLCB7JTAsICUxfSIsIG9wZXJhbmRzKTsKKwkJ ICBicmVhazsKKworCQljYXNlIDA6CisJCSAgb3V0cHV0X2FzbV9pbnNuICgi bGRtJShpYSUpXHQlMiwgeyUwLCAlMX0iLCBvcGVyYW5kcyk7CisJCSAgYnJl YWs7CisKKwkJY2FzZSA0OgorCQkgIG91dHB1dF9hc21faW5zbiAoImxkbSUo aWIlKVx0JTIsIHslMCwgJTF9Iiwgb3BlcmFuZHMpOworCQkgIGJyZWFrOwor CisJCWRlZmF1bHQ6CisJCSAgZ2NjX3VucmVhY2hhYmxlICgpOworCQl9CisJ ICAgIH0KKwkgIGxlbmd0aCA9IDQ7CisJfQorICAgIH0KKworICByZXR1cm4g bGVuZ3RoOworfQorCiAjaW5jbHVkZSAiZ3QtYXJtLmgiCkluZGV4OiBhcm0t cHJvdG9zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXJtLXByb3Rv cy5oCShyZXZpc2lvbiAxNjg3MzcpCisrKyBhcm0tcHJvdG9zLmgJKHdvcmtp bmcgY29weSkKQEAgLTE1MCw2ICsxNTAsOSBAQCBleHRlcm4gdm9pZCBhcm1f ZXhwYW5kX3N5bmMgKGVudW0gbWFjaGluCiBleHRlcm4gY29uc3QgY2hhciAq YXJtX291dHB1dF9tZW1vcnlfYmFycmllciAocnR4ICopOwogZXh0ZXJuIGNv bnN0IGNoYXIgKmFybV9vdXRwdXRfc3luY19pbnNuIChydHgsIHJ0eCAqKTsK IGV4dGVybiB1bnNpZ25lZCBpbnQgYXJtX3N5bmNfbG9vcF9pbnNucyAocnR4 ICwgcnR4ICopOworZXh0ZXJuIGJvb2wgYXJtX2NoZWNrX2xkcmRfb3BlcmFu ZHMgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CitleHRlcm4gYm9vbCBhcm1fbGVn aXRpbWF0ZV9sZHJkX3AgKHJ0eCwgcnR4LCBydHgsIHJ0eCwgYm9vbCk7Citl eHRlcm4gaW50IGFybV9vdXRwdXRfbGRyZCAocnR4LCBydHgsIHJ0eCwgcnR4 LCBydHgsIGJvb2wpOwoKICNpZiBkZWZpbmVkIFRSRUVfQ09ERQogZXh0ZXJu IHZvaWQgYXJtX2luaXRfY3VtdWxhdGl2ZV9hcmdzIChDVU1VTEFUSVZFX0FS R1MgKiwgdHJlZSwgcnR4LCB0cmVlKTsKSW5kZXg6IGxkbXN0bS5tZAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBsZG1zdG0ubWQJKHJldmlzaW9uIDE2 ODczNykKKysrIGxkbXN0bS5tZAkod29ya2luZyBjb3B5KQpAQCAtODUyLDcg Kzg1Miw3IEBAIChkZWZpbmVfaW5zbiAiKmxkbTJfaWEiCiAgICAgIChzZXQg KG1hdGNoX29wZXJhbmQ6U0kgMiAiYXJtX2hhcmRfcmVnaXN0ZXJfb3BlcmFu ZCIgIiIpCiAgICAgICAgICAgKG1lbTpTSSAocGx1czpTSSAobWF0Y2hfZHVw IDMpCiAgICAgICAgICAgICAgICAgICAoY29uc3RfaW50IDQpKSkpXSldCi0g ICJUQVJHRVRfMzJCSVQgJiYgWFZFQ0xFTiAob3BlcmFuZHNbMF0sIDApID09 IDIiCisgICJUQVJHRVRfMzJCSVQgJiYgIWFybV9hcmNoNyAmJiBYVkVDTEVO IChvcGVyYW5kc1swXSwgMCkgPT0gMiIKICAgImxkbSUoaWElKVx0JTMsIHsl MSwgJTJ9IgogICBbKHNldF9hdHRyICJ0eXBlIiAibG9hZDIiKQogICAgKHNl dF9hdHRyICJwcmVkaWNhYmxlIiAieWVzIildKQpAQCAtOTAxLDcgKzkwMSw3 IEBAIChkZWZpbmVfaW5zbiAiKnN0bTJfaWEiCiAgICAgICAgICAgKG1hdGNo X29wZXJhbmQ6U0kgMSAiYXJtX2hhcmRfcmVnaXN0ZXJfb3BlcmFuZCIgIiIp KQogICAgICAoc2V0IChtZW06U0kgKHBsdXM6U0kgKG1hdGNoX2R1cCAzKSAo Y29uc3RfaW50IDQpKSkKICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpTSSAy ICJhcm1faGFyZF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikpXSldCi0gICJUQVJH RVRfMzJCSVQgJiYgWFZFQ0xFTiAob3BlcmFuZHNbMF0sIDApID09IDIiCisg ICJUQVJHRVRfMzJCSVQgJiYgIWFybV9hcmNoNyAmJiBYVkVDTEVOIChvcGVy YW5kc1swXSwgMCkgPT0gMiIKICAgInN0bSUoaWElKVx0JTMsIHslMSwgJTJ9 IgogICBbKHNldF9hdHRyICJ0eXBlIiAic3RvcmUyIikKICAgIChzZXRfYXR0 ciAicHJlZGljYWJsZSIgInllcyIpXSkKQEAgLTkzOSw3ICs5MzksNyBAQCAo ZGVmaW5lX2luc24gIipsZG0yX2liIgogICAgICAoc2V0IChtYXRjaF9vcGVy YW5kOlNJIDIgImFybV9oYXJkX3JlZ2lzdGVyX29wZXJhbmQiICIiKQogICAg ICAgICAgIChtZW06U0kgKHBsdXM6U0kgKG1hdGNoX2R1cCAzKQogICAgICAg ICAgICAgICAgICAgKGNvbnN0X2ludCA4KSkpKV0pXQotICAiVEFSR0VUX0FS TSAmJiBYVkVDTEVOIChvcGVyYW5kc1swXSwgMCkgPT0gMiIKKyAgIlRBUkdF VF9BUk0gJiYgIWFybV9hcmNoNyAmJiBYVkVDTEVOIChvcGVyYW5kc1swXSwg MCkgPT0gMiIKICAgImxkbSUoaWIlKVx0JTMsIHslMSwgJTJ9IgogICBbKHNl dF9hdHRyICJ0eXBlIiAibG9hZDIiKQogICAgKHNldF9hdHRyICJwcmVkaWNh YmxlIiAieWVzIildKQpAQCAtOTY1LDcgKzk2NSw3IEBAIChkZWZpbmVfaW5z biAiKnN0bTJfaWIiCiAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMSAi YXJtX2hhcmRfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpKQogICAgICAoc2V0ICht ZW06U0kgKHBsdXM6U0kgKG1hdGNoX2R1cCAzKSAoY29uc3RfaW50IDgpKSkK ICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJhcm1faGFyZF9yZWdp c3Rlcl9vcGVyYW5kIiAiIikpXSldCi0gICJUQVJHRVRfQVJNICYmIFhWRUNM RU4gKG9wZXJhbmRzWzBdLCAwKSA9PSAyIgorICAiVEFSR0VUX0FSTSAmJiAh YXJtX2FyY2g3ICYmIFhWRUNMRU4gKG9wZXJhbmRzWzBdLCAwKSA9PSAyIgog ICAic3RtJShpYiUpXHQlMywgeyUxLCAlMn0iCiAgIFsoc2V0X2F0dHIgInR5 cGUiICJzdG9yZTIiKQogICAgKHNldF9hdHRyICJwcmVkaWNhYmxlIiAieWVz IildKQpAQCAtOTkwLDcgKzk5MCw3IEBAIChkZWZpbmVfaW5zbiAiKmxkbTJf ZGEiCiAgICAgICAgICAgICAgICAgICAoY29uc3RfaW50IC00KSkpKQogICAg ICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDIgImFybV9oYXJkX3JlZ2lzdGVy X29wZXJhbmQiICIiKQogICAgICAgICAgIChtZW06U0kgKG1hdGNoX2R1cCAz KSkpXSldCi0gICJUQVJHRVRfQVJNICYmIFhWRUNMRU4gKG9wZXJhbmRzWzBd LCAwKSA9PSAyIgorICAiVEFSR0VUX0FSTSAmJiAhYXJtX2FyY2g3ICYmIFhW RUNMRU4gKG9wZXJhbmRzWzBdLCAwKSA9PSAyIgogICAibGRtJShkYSUpXHQl MywgeyUxLCAlMn0iCiAgIFsoc2V0X2F0dHIgInR5cGUiICJsb2FkMiIpCiAg ICAoc2V0X2F0dHIgInByZWRpY2FibGUiICJ5ZXMiKV0pCkBAIC0xMDE1LDcg KzEwMTUsNyBAQCAoZGVmaW5lX2luc24gIipzdG0yX2RhIgogICAgICAgICAg IChtYXRjaF9vcGVyYW5kOlNJIDEgImFybV9oYXJkX3JlZ2lzdGVyX29wZXJh bmQiICIiKSkKICAgICAgKHNldCAobWVtOlNJIChtYXRjaF9kdXAgMykpCiAg ICAgICAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiYXJtX2hhcmRfcmVnaXN0 ZXJfb3BlcmFuZCIgIiIpKV0pXQotICAiVEFSR0VUX0FSTSAmJiBYVkVDTEVO IChvcGVyYW5kc1swXSwgMCkgPT0gMiIKKyAgIlRBUkdFVF9BUk0gJiYgIWFy bV9hcmNoNyAmJiBYVkVDTEVOIChvcGVyYW5kc1swXSwgMCkgPT0gMiIKICAg InN0bSUoZGElKVx0JTMsIHslMSwgJTJ9IgogICBbKHNldF9hdHRyICJ0eXBl IiAic3RvcmUyIikKICAgIChzZXRfYXR0ciAicHJlZGljYWJsZSIgInllcyIp XSkKQEAgLTEwNDEsNyArMTA0MSw3IEBAIChkZWZpbmVfaW5zbiAiKmxkbTJf ZGIiCiAgICAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMiAiYXJtX2hhcmRf cmVnaXN0ZXJfb3BlcmFuZCIgIiIpCiAgICAgICAgICAgKG1lbTpTSSAocGx1 czpTSSAobWF0Y2hfZHVwIDMpCiAgICAgICAgICAgICAgICAgICAoY29uc3Rf aW50IC00KSkpKV0pXQotICAiVEFSR0VUXzMyQklUICYmIFhWRUNMRU4gKG9w ZXJhbmRzWzBdLCAwKSA9PSAyIgorICAiVEFSR0VUXzMyQklUICYmICFhcm1f YXJjaDcgJiYgWFZFQ0xFTiAob3BlcmFuZHNbMF0sIDApID09IDIiCiAgICJs ZG0lKGRiJSlcdCUzLCB7JTEsICUyfSIKICAgWyhzZXRfYXR0ciAidHlwZSIg ImxvYWQyIikKICAgIChzZXRfYXR0ciAicHJlZGljYWJsZSIgInllcyIpXSkK QEAgLTEwNjcsNyArMTA2Nyw3IEBAIChkZWZpbmVfaW5zbiAiKnN0bTJfZGIi CiAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMSAiYXJtX2hhcmRfcmVn aXN0ZXJfb3BlcmFuZCIgIiIpKQogICAgICAoc2V0IChtZW06U0kgKHBsdXM6 U0kgKG1hdGNoX2R1cCAzKSAoY29uc3RfaW50IC00KSkpCiAgICAgICAgICAg KG1hdGNoX29wZXJhbmQ6U0kgMiAiYXJtX2hhcmRfcmVnaXN0ZXJfb3BlcmFu ZCIgIiIpKV0pXQotICAiVEFSR0VUXzMyQklUICYmIFhWRUNMRU4gKG9wZXJh bmRzWzBdLCAwKSA9PSAyIgorICAiVEFSR0VUXzMyQklUICYmICFhcm1fYXJj aDcgJiYgWFZFQ0xFTiAob3BlcmFuZHNbMF0sIDApID09IDIiCiAgICJzdG0l KGRiJSlcdCUzLCB7JTEsICUyfSIKICAgWyhzZXRfYXR0ciAidHlwZSIgInN0 b3JlMiIpCiAgICAoc2V0X2F0dHIgInByZWRpY2FibGUiICJ5ZXMiKV0pCkBA IC0xMTg5LDMgKzExODksMjExIEBAIChkZWZpbmVfcGVlcGhvbGUyCiAgICAg RkFJTDsKIH0pCgorKGRlZmluZV9pbnNuICIqbGRyZCIKKyAgWyhwYXJhbGxl bCBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJhcm1faGFyZF9yZWdpc3Rl cl9vcGVyYW5kIiAiIikKKwkJICAgKG1lbTpTSSAocGx1czpTSQorCQkJCSht YXRjaF9vcGVyYW5kOlNJIDIgInNfcmVnaXN0ZXJfb3BlcmFuZCIgInJrIikK KwkJCQkobWF0Y2hfb3BlcmFuZDpTSSAzICJjb25zdF9pbnRfb3BlcmFuZCIg IiIpKSkpCisJICAgICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAxICJhcm1f aGFyZF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikKKwkJICAgKG1lbTpTSSAocGx1 czpTSSAobWF0Y2hfZHVwIDIpCisJCQkgICAgIChtYXRjaF9vcGVyYW5kOlNJ IDQgImNvbnN0X2ludF9vcGVyYW5kIiAiIikpKSldKV0KKyAgIlRBUkdFVF8z MkJJVCAmJiBhcm1fYXJjaDcKKyAgICYmIGFybV9jaGVja19sZHJkX29wZXJh bmRzIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCisJCQkgICAgICAgb3Bl cmFuZHNbM10sIG9wZXJhbmRzWzRdKSIKKyAgIioKKyAgYXJtX291dHB1dF9s ZHJkIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCisJCSAgIG9wZXJhbmRz WzJdLCBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIHRydWUpOworICByZXR1 cm4gXCJcIjsKKyAgIgorICBbKHNldCAoYXR0ciAibGVuZ3RoIikKKwkoc3lt Ym9sX3JlZiAoImFybV9vdXRwdXRfbGRyZCAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzFdLCBvcGVyYW5kc1syXSwKKwkJCQkgICAgICAgb3BlcmFuZHNbM10s IG9wZXJhbmRzWzRdLCBmYWxzZSkiKSkpXQorKQorCisoZGVmaW5lX2luc24g IipsZHJkX3JlZzEiCisgIFsocGFyYWxsZWwgWyhzZXQgKG1hdGNoX29wZXJh bmQ6U0kgMCAiYXJtX2hhcmRfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCisJCSAg IChtZW06U0kgKG1hdGNoX29wZXJhbmQ6U0kgMiAic19yZWdpc3Rlcl9vcGVy YW5kIiAicmsiKSkpCisJICAgICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAx ICJhcm1faGFyZF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikKKwkJICAgKG1lbTpT SSAocGx1czpTSSAobWF0Y2hfZHVwIDIpCisJCQkgICAgIChtYXRjaF9vcGVy YW5kOlNJIDMgImNvbnN0X2ludF9vcGVyYW5kIiAiIikpKSldKV0KKyAgIlRB UkdFVF8zMkJJVCAmJiBhcm1fYXJjaDcKKyAgICYmIGFybV9jaGVja19sZHJk X29wZXJhbmRzIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIE5VTExfUlRY LCBvcGVyYW5kc1szXSkiCisgICIqCisgIGFybV9vdXRwdXRfbGRyZCAob3Bl cmFuZHNbMF0sIG9wZXJhbmRzWzFdLAorCQkgICBvcGVyYW5kc1syXSwgTlVM TF9SVFgsIG9wZXJhbmRzWzNdLCB0cnVlKTsKKyAgcmV0dXJuIFwiXCI7Cisg ICIKKyAgWyhzZXQgKGF0dHIgImxlbmd0aCIpCisJKHN5bWJvbF9yZWYgKCJh cm1fb3V0cHV0X2xkcmQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3Bl cmFuZHNbMl0sCisJCQkJICAgICAgIE5VTExfUlRYLCBvcGVyYW5kc1szXSwg ZmFsc2UpIikpKV0KKykKKworKGRlZmluZV9pbnNuICIqbGRyZF9yZWcyIgor ICBbKHBhcmFsbGVsIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImFybV9o YXJkX3JlZ2lzdGVyX29wZXJhbmQiICIiKQorCQkgICAobWVtOlNJIChwbHVz OlNJCisJCQkJKG1hdGNoX29wZXJhbmQ6U0kgMiAic19yZWdpc3Rlcl9vcGVy YW5kIiAicmsiKQorCQkJCShtYXRjaF9vcGVyYW5kOlNJIDMgImNvbnN0X2lu dF9vcGVyYW5kIiAiIikpKSkKKwkgICAgICAoc2V0IChtYXRjaF9vcGVyYW5k OlNJIDEgImFybV9oYXJkX3JlZ2lzdGVyX29wZXJhbmQiICIiKQorCQkgICAo bWVtOlNJIChtYXRjaF9kdXAgMikpKV0pXQorICAiVEFSR0VUXzMyQklUICYm IGFybV9hcmNoNworICAgJiYgYXJtX2NoZWNrX2xkcmRfb3BlcmFuZHMgKG9w ZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbM10sIE5VTExfUlRY KSIKKyAgIioKKyAgYXJtX291dHB1dF9sZHJkIChvcGVyYW5kc1swXSwgb3Bl cmFuZHNbMV0sCisJCSAgIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1szXSwgTlVM TF9SVFgsIHRydWUpOworICByZXR1cm4gXCJcIjsKKyAgIgorICBbKHNldCAo YXR0ciAibGVuZ3RoIikKKwkoc3ltYm9sX3JlZiAoImFybV9vdXRwdXRfbGRy ZCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwKKwkJ CQkgICAgICAgb3BlcmFuZHNbM10sIE5VTExfUlRYLCBmYWxzZSkiKSkpXQor KQorCisoZGVmaW5lX3BlZXBob2xlMgorICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpTSSAwICJzX3JlZ2lzdGVyX29wZXJhbmQiICIiKQorCShtYXRjaF9vcGVy YW5kOlNJIDIgIm1lbW9yeV9vcGVyYW5kIiAiIikpCisgICAoc2V0IChtYXRj aF9vcGVyYW5kOlNJIDEgInNfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCisJKG1h dGNoX29wZXJhbmQ6U0kgMyAibWVtb3J5X29wZXJhbmQiICIiKSldCisgICJU QVJHRVRfMzJCSVQgJiYgYXJtX2FyY2g3CisgICAmJiBhcm1fbGVnaXRpbWF0 ZV9sZHJkX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwKKwkJCQlvcGVy YW5kc1syXSwgb3BlcmFuZHNbM10sIHRydWUpIgorICBbKHBhcmFsbGVsIFso c2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInNfcmVnaXN0ZXJfb3BlcmFuZCIg IiIpCisJCSAgIChtYXRjaF9vcGVyYW5kOlNJIDIgIm1lbW9yeV9vcGVyYW5k IiAiIikpCisJICAgICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAxICJzX3Jl Z2lzdGVyX29wZXJhbmQiICIiKQorCQkgICAobWF0Y2hfb3BlcmFuZDpTSSAz ICJtZW1vcnlfb3BlcmFuZCIgIiIpKV0pXQorICAiIgorKQorCisoZGVmaW5l X2luc24gIipzdHJkIgorICBbKHBhcmFsbGVsIFsoc2V0IChtZW06U0kKKwkJ CShwbHVzOlNJIChtYXRjaF9vcGVyYW5kOlNJIDIgInNfcmVnaXN0ZXJfb3Bl cmFuZCIgInJrIikKKwkJCQkgKG1hdGNoX29wZXJhbmQ6U0kgMyAiY29uc3Rf aW50X29wZXJhbmQiICIiKSkpCisJCSAgIChtYXRjaF9vcGVyYW5kOlNJIDAg ImFybV9oYXJkX3JlZ2lzdGVyX29wZXJhbmQiICIiKSkKKwkgICAgICAoc2V0 IChtZW06U0kgKHBsdXM6U0kgKG1hdGNoX2R1cCAyKQorCQkJCSAobWF0Y2hf b3BlcmFuZDpTSSA0ICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpKSkKKwkJICAg KG1hdGNoX29wZXJhbmQ6U0kgMSAiYXJtX2hhcmRfcmVnaXN0ZXJfb3BlcmFu ZCIgIiIpKV0pXQorICAiVEFSR0VUXzMyQklUICYmIGFybV9hcmNoNworICAg JiYgYXJtX2NoZWNrX2xkcmRfb3BlcmFuZHMgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSwKKwkJCSAgICAgICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0p IgorICAiKgorICB7CisgICAgSE9TVF9XSURFX0lOVCBvZmZzZXQxID0gSU5U VkFMIChvcGVyYW5kc1szXSk7CisgICAgSE9TVF9XSURFX0lOVCBvZmZzZXQy ID0gSU5UVkFMIChvcGVyYW5kc1s0XSk7CisgICAgaWYgKG9mZnNldDEgPiBv ZmZzZXQyKQorICAgICAgeworCXJ0eCB0bXAgPSBvcGVyYW5kc1swXTsgIG9w ZXJhbmRzWzBdID0gb3BlcmFuZHNbMV07ICBvcGVyYW5kc1sxXSA9IHRtcDsK Kwl0bXAgPSBvcGVyYW5kc1szXTsgIG9wZXJhbmRzWzNdID0gb3BlcmFuZHNb NF07ICBvcGVyYW5kc1s0XSA9IHRtcDsKKwlvZmZzZXQxID0gSU5UVkFMIChv cGVyYW5kc1szXSk7CisJb2Zmc2V0MiA9IElOVFZBTCAob3BlcmFuZHNbNF0p OworICAgICAgfQorICAgIGlmIChUQVJHRVRfVEhVTUIyKQorICAgICAgcmV0 dXJuIFwic3RyZFxcdCUwLCAlMSwgWyUyLCAlM11cIjsKKyAgICBlbHNlICAg ICAgICAgIC8qIFRBUkdFVF9BUk0gICovCisgICAgICB7CisJaWYgKChSRUdO TyAob3BlcmFuZHNbMV0pID09IChSRUdOTyAob3BlcmFuZHNbMF0pICsgMSkp CisJICAgICYmICgoUkVHTk8gKG9wZXJhbmRzWzBdKSAmIDEpID09IDApKQor CSAgcmV0dXJuIFwic3RyZFxcdCUwLCAlMSwgWyUyLCAlM11cIjsKKwllbHNl IGlmIChvZmZzZXQxID09IC04KQorCSAgcmV0dXJuIFwic3RtJShkYiUpXFx0 JTIsIHslMCwgJTF9XCI7CisJZWxzZSAgICAgIC8qIG9mZnNldDEgPT0gNCAg Ki8KKwkgIHJldHVybiBcInN0bSUoaWIlKVxcdCUyLCB7JTAsICUxfVwiOwor ICAgICAgfQorICB9IgorICBbKHNldF9hdHRyICJsZW5ndGgiICI0IildCisp CisKKyhkZWZpbmVfaW5zbiAiKnN0cmRfcmVnMSIKKyAgWyhwYXJhbGxlbCBb KHNldCAobWVtOlNJIChtYXRjaF9vcGVyYW5kOlNJIDIgInNfcmVnaXN0ZXJf b3BlcmFuZCIgInJrIikpCisJCSAgIChtYXRjaF9vcGVyYW5kOlNJIDAgImFy bV9oYXJkX3JlZ2lzdGVyX29wZXJhbmQiICIiKSkKKwkgICAgICAoc2V0ICht ZW06U0kgKHBsdXM6U0kgKG1hdGNoX2R1cCAyKQorCQkJCShtYXRjaF9vcGVy YW5kOlNJIDMgImNvbnN0X2ludF9vcGVyYW5kIiAiIikpKQorCQkgICAobWF0 Y2hfb3BlcmFuZDpTSSAxICJhcm1faGFyZF9yZWdpc3Rlcl9vcGVyYW5kIiAi IikpXSldCisgICJUQVJHRVRfMzJCSVQgJiYgYXJtX2FyY2g3CisgICAmJiBh cm1fY2hlY2tfbGRyZF9vcGVyYW5kcyAob3BlcmFuZHNbMF0sIG9wZXJhbmRz WzFdLCBOVUxMX1JUWCwgb3BlcmFuZHNbM10pIgorICAiKgorICB7CisgICAg SE9TVF9XSURFX0lOVCBvZmZzZXQyID0gSU5UVkFMIChvcGVyYW5kc1szXSk7 CisgICAgaWYgKFRBUkdFVF9USFVNQjIpCisgICAgICB7CisJaWYgKG9mZnNl dDIgPT0gNCkKKwkgIHJldHVybiBcInN0cmRcXHQlMCwgJTEsIFslMl1cIjsK KwllbHNlCisJICByZXR1cm4gXCJzdHJkXFx0JTEsICUwLCBbJTIsICUzXVwi OworICAgICAgfQorICAgIGVsc2UgICAgICAgICAgIC8qIFRBUkdFVF9BUk0g ICovCisgICAgICB7CisJaWYgKG9mZnNldDIgPT0gNCkKKwkgIHsKKwkgICAg aWYgKChSRUdOTyAob3BlcmFuZHNbMV0pID09IChSRUdOTyAob3BlcmFuZHNb MF0pICsgMSkpCisJCSYmICgoUkVHTk8gKG9wZXJhbmRzWzBdKSAmIDEpID09 IDApKQorCSAgICAgIHJldHVybiBcInN0cmRcXHQlMCwgJTEsIFslMl1cIjsK KwkgICAgZWxzZQorCSAgICAgIHJldHVybiBcInN0bSUoaWElKVxcdCUyLCB7 JTAsICUxfVwiOworCSAgfQorCWVsc2UgICAgICAvKiBvZmZzZXQyID09IC00 ICAqLworCSAgeworCSAgICBpZiAoKFJFR05PIChvcGVyYW5kc1swXSkgPT0g KFJFR05PIChvcGVyYW5kc1sxXSkgKyAxKSkKKwkJJiYgKChSRUdOTyAob3Bl cmFuZHNbMV0pICYgMSkgPT0gMCkpCisJICAgICAgcmV0dXJuIFwic3RyZFxc dCUxLCAlMCwgWyUyLCAlM11cIjsKKwkgICAgZWxzZQorCSAgICAgIHJldHVy biBcInN0bSUoZGElKVxcdCUyLCB7JTEsICUwfVwiOworCSAgfQorICAgICAg fQorICB9IgorICBbKHNldF9hdHRyICJsZW5ndGgiICI0IildCispCisKKyhk ZWZpbmVfaW5zbiAiKnN0cmRfcmVnMiIKKyAgWyhwYXJhbGxlbCBbKHNldCAo bWVtOlNJIChwbHVzOlNJCisJCQkJKG1hdGNoX29wZXJhbmQ6U0kgMiAic19y ZWdpc3Rlcl9vcGVyYW5kIiAicmsiKQorCQkJCShtYXRjaF9vcGVyYW5kOlNJ IDMgImNvbnN0X2ludF9vcGVyYW5kIiAiIikpKQorCQkgICAobWF0Y2hfb3Bl cmFuZDpTSSAwICJhcm1faGFyZF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikpCisJ ICAgICAgKHNldCAobWVtOlNJIChtYXRjaF9kdXAgMikpCisJCSAgIChtYXRj aF9vcGVyYW5kOlNJIDEgImFybV9oYXJkX3JlZ2lzdGVyX29wZXJhbmQiICIi KSldKV0KKyAgIlRBUkdFVF8zMkJJVCAmJiBhcm1fYXJjaDcKKyAgICYmIGFy bV9jaGVja19sZHJkX29wZXJhbmRzIChvcGVyYW5kc1swXSwgb3BlcmFuZHNb MV0sIG9wZXJhbmRzWzNdLCBOVUxMX1JUWCkiCisgICIqCisgIHsKKyAgICBI T1NUX1dJREVfSU5UIG9mZnNldDEgPSBJTlRWQUwgKG9wZXJhbmRzWzNdKTsK KyAgICBpZiAoVEFSR0VUX1RIVU1CMikKKyAgICAgIHsKKwlpZiAob2Zmc2V0 MSA9PSAtNCkKKwkgIHJldHVybiBcInN0cmRcXHQlMCwgJTEsIFslMiwgJTNd XCI7CisJZWxzZQorCSAgcmV0dXJuIFwic3RyZFxcdCUxLCAlMCwgWyUyXVwi OworICAgICAgfQorICAgIGVsc2UgICAgICAgICAgIC8qIFRBUkdFVF9BUk0g ICovCisgICAgICB7CisJaWYgKG9mZnNldDEgPT0gLTQpCisJICB7CisJICAg IGlmICgoUkVHTk8gKG9wZXJhbmRzWzFdKSA9PSAoUkVHTk8gKG9wZXJhbmRz WzBdKSArIDEpKQorCQkmJiAoKFJFR05PIChvcGVyYW5kc1swXSkgJiAxKSA9 PSAwKSkKKwkgICAgICByZXR1cm4gXCJzdHJkXFx0JTAsICUxLCBbJTIsICUz XVwiOworCSAgICBlbHNlCisJICAgICAgcmV0dXJuIFwic3RtJShkYSUpXFx0 JTIsIHslMCwgJTF9XCI7CisJICB9CisJZWxzZQorCSAgeworCSAgICBpZiAo KFJFR05PIChvcGVyYW5kc1swXSkgPT0gKFJFR05PIChvcGVyYW5kc1sxXSkg KyAxKSkKKwkJJiYgKChSRUdOTyAob3BlcmFuZHNbMV0pICYgMSkgPT0gMCkp CisJICAgICAgcmV0dXJuIFwic3RyZFxcdCUxLCAlMCwgWyUyXVwiOworCSAg ICBlbHNlCisJICAgICAgcmV0dXJuIFwic3RtJShpYSUpXFx0JTIsIHslMSwg JTB9XCI7CisJICB9CisgICAgICB9CisgIH0iCisgIFsoc2V0X2F0dHIgImxl bmd0aCIgIjQiKV0KKykKKworKGRlZmluZV9wZWVwaG9sZTIKKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6U0kgMiAibWVtb3J5X29wZXJhbmQiICIiKQorCSht YXRjaF9vcGVyYW5kOlNJIDAgInNfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpKQor ICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAzICJtZW1vcnlfb3BlcmFuZCIg IiIpCisJKG1hdGNoX29wZXJhbmQ6U0kgMSAic19yZWdpc3Rlcl9vcGVyYW5k IiAiIikpXQorICAiVEFSR0VUXzMyQklUICYmIGFybV9hcmNoNworICAgJiYg YXJtX2xlZ2l0aW1hdGVfbGRyZF9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNb MV0sCisJCQkJb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdLCBmYWxzZSkiCisg IFsocGFyYWxsZWwgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMiAibWVtb3J5 X29wZXJhbmQiICIiKQorCQkgICAobWF0Y2hfb3BlcmFuZDpTSSAwICJzX3Jl Z2lzdGVyX29wZXJhbmQiICIiKSkKKwkgICAgICAoc2V0IChtYXRjaF9vcGVy YW5kOlNJIDMgIm1lbW9yeV9vcGVyYW5kIiAiIikKKwkJICAgKG1hdGNoX29w ZXJhbmQ6U0kgMSAic19yZWdpc3Rlcl9vcGVyYW5kIiAiIikpXSldCisgICIi CispCgoKSW5kZXg6IHByNDA0NTctMy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHByNDA0NTctMy5jCShyZXZpc2lvbiAxNjg3MzcpCisrKyBwcjQw NDU3LTMuYwkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAgdm9pZCBm b28oaW50KiBwKQogewogICBwWzBdID0gMTsKICAgcFsxXSA9IDA7CisgIHBb Ml0gPSAyOwogfQoKIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi c3RtIiB9IH0gKi8KSW5kZXg6IHByNDUzMzUtMi5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHByNDUzMzUtMi5jCShyZXZpc2lvbiAwKQorKysgcHI0 NTMzNS0yLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKy8qIHsg ZGctb3B0aW9ucyAiLU9zIC1tYXJjaD1hcm12Ny1hIiB9ICAqLworLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKwordm9pZCBmb28oaW50IGEsIGludCBiLCBp bnQqIHApCit7CisgIHBbMl0gPSBhOworICBwWzNdID0gYjsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzdHJkIiB9IH0gKi8KSW5k ZXg6IHByNDUzMzUtMy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBy NDUzMzUtMy5jCShyZXZpc2lvbiAwKQorKysgcHI0NTMzNS0zLmMJKHJldmlz aW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKy8qIHsgZGctb3B0aW9ucyAiLU9z IC1tYXJjaD1hcm12Ny1hIiB9ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKworaW50IGZvbyhpbnQgYSwgaW50IGIsIGludCogcCwgaW50ICpxKQor eworICBhID0gcFsyXSArIHBbM107CisgICpxID0gYTsKKyAgKnAgPSBhOwor ICByZXR1cm4gYTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJsZHJkIiB9IH0gKi8KSW5kZXg6IHByNDA0NTctMS5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHByNDA0NTctMS5jCShyZXZpc2lvbiAxNjg3 MzcpCisrKyBwcjQwNDU3LTEuYwkod29ya2luZyBjb3B5KQpAQCAtNyw0ICs3 LDQgQEAgaW50IGJhcihpbnQqIHApCiAgIHJldHVybiB4OwogfQoKLS8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGRtIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGRtfGxkcmQiIH0gfSAqLwpJ bmRleDogcHI0MDQ1Ny0yLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cHI0MDQ1Ny0yLmMJKHJldmlzaW9uIDE2ODczNykKKysrIHByNDA0NTctMi5j CSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQCB2b2lkIGZvbyhpbnQq IHApCiB7CiAgIHBbMF0gPSAxOwogICBwWzFdID0gMDsKKyAgcFsyXSA9IDI7 CiB9CgogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzdG0iIH0g fSAqLwpJbmRleDogcHI0NTMzNS5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHByNDUzMzUuYwkocmV2aXNpb24gMCkKKysrIHByNDUzMzUuYwkocmV2 aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorLyogeyBkZy1vcHRpb25zICIt bXRodW1iIC1PMiIgfSAqLworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10 YXJnZXQgYXJtX3RodW1iMl9vayB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgImxkcmQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJzdHJkIiB9IH0gKi8KKworc3RydWN0IFMKK3sKKyAg ICB2b2lkKiBwMTsKKyAgICB2b2lkKiBwMjsKKyAgICB2b2lkKiBwMzsKKyAg ICB2b2lkKiBwNDsKK307CisKK2V4dGVybiBwcmludGYoY2hhciosIC4uLik7 CisKK3ZvaWQgZm9vMShzdHJ1Y3QgUyogZnAsIHN0cnVjdCBTKiBvdGhlclNh dmVBcmVhKQoreworICAgIHN0cnVjdCBTKiBzYXZlQSA9IGZwIC0gMTsKKyAg ICBwcmludGYoIlN0YWNrU2F2ZUFyZWEgZm9yIGZwICVwIFslcC8lcF06XG4i LCBmcCwgc2F2ZUEsIG90aGVyU2F2ZUFyZWEpOworICAgIHByaW50ZigicHJl dkZyYW1lPSVwIHNhdmVkUGM9JXAgbWV0aD0lcCBjdXJQYz0lcCBmcFswXT0w eCUwOHhcbiIsCisgICAgICAgIHNhdmVBLT5wMSwgc2F2ZUEtPnAyLCBzYXZl QS0+cDMsIHNhdmVBLT5wNCwgKih1bnNpZ25lZCBpbnQqKWZwKTsKK30K --000e0cd40200c7521c049ad08f0a--