From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.4.1-7 Date: Mon, 29 Jun 2026 12:24:31 GMT Message-ID: <178273587190.1.13572658659151409246.rpms-gcc-cb4e33ae41a7@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: cb4e33ae41a79c310a248f59cd2be13225395d90 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogY2I0ZTMzYWU0MWE3OWMzMTBhMjQ4ZjU5Y2QyYmUxMzIy NTM5NWQ5MApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOS0wOS0wMVQxNDoyMzoxMiswMDowMApTdGF0cyAgOiArMTgvLTE1MjUwIGlu IDYgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dj Yy9jL2NiNGUzM2FlNDFhNzljMzEwYTI0OGY1OWNkMmJlMTMyMjUzOTVkOTA/YnJhbmNoPXJoZWwt ZjQxLWJhc2UKCkxvZzoKNC40LjEtNwoKLS0tCmRpZmYgLS1naXQgYS8uY3ZzaWdub3JlIGIvLmN2 c2lnbm9yZQppbmRleCBhOGI2YzFjLi44OGQzNjVhIDEwMDY0NAotLS0gYS8uY3ZzaWdub3JlCisr KyBiLy5jdnNpZ25vcmUKQEAgLTEsMiArMSwyIEBACiBmYXN0amFyLTAuOTcudGFyLmd6Ci1nY2Mt NC40LjEtMjAwOTA4MTgudGFyLmJ6MgorZ2NjLTQuNC4xLTIwMDkwOTAxLnRhci5iejIKCmRpZmYg LS1naXQgYS9nY2Muc3BlYyBiL2djYy5zcGVjCmluZGV4IDVhMDg4ZDQuLmVjZWQ5MDEgMTAwNjQ0 Ci0tLSBhL2djYy5zcGVjCisrKyBiL2djYy5zcGVjCkBAIC0xLDkgKzEsOSBAQAotJWdsb2JhbCBE QVRFIDIwMDkwODE4Ci0lZ2xvYmFsIFNWTlJFViAxNTA4NzMKKyVnbG9iYWwgREFURSAyMDA5MDkw MQorJWdsb2JhbCBTVk5SRVYgMTUxMjcyCiAlZ2xvYmFsIGdjY192ZXJzaW9uIDQuNC4xCiAjIE5v dGUsIGdjY19yZWxlYXNlIG11c3QgYmUgaW50ZWdlciwgaWYgeW91IHdhbnQgdG8gYWRkIHN1ZmZp eGVzIHRvCiAjICV7cmVsZWFzZX0sIGFwcGVuZCB0aGVtIGFmdGVyICV7Z2NjX3JlbGVhc2V9IG9u IFJlbGVhc2U6IGxpbmUuCi0lZ2xvYmFsIGdjY19yZWxlYXNlIDYKKyVnbG9iYWwgZ2NjX3JlbGVh c2UgNwogJWdsb2JhbCBfdW5wYWNrYWdlZF9maWxlc190ZXJtaW5hdGVfYnVpbGQgMAogJWdsb2Jh bCBtdWx0aWxpYl82NF9hcmNocyBzcGFyYzY0IHBwYzY0IHMzOTB4IHg4Nl82NAogJWdsb2JhbCBp bmNsdWRlX2dhcHBsZXR2aWV3ZXIgMQpAQCAtNDMsNyArNDMsNyBAQCBWZXJzaW9uOiAle2djY192 ZXJzaW9ufQogUmVsZWFzZTogJXtnY2NfcmVsZWFzZX0KICMgbGliZ2NjLCBsaWJnZm9ydHJhbiwg bGlibXVkZmxhcCwgbGliZ29tcCwgbGlic3RkYysrIGFuZCBjcnRzdHVmZiBoYXZlCiAjIEdDQyBS dW50aW1lIEV4Y2VwdGlvbi4KLUxpY2Vuc2U6IEdQTHYzKywgR1BMdjMrIHdpdGggZXhjZXB0aW9u cyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucworTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysg d2l0aCBleGNlcHRpb25zIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zCiBHcm91cDogRGV2ZWxv cG1lbnQvTGFuZ3VhZ2VzCiAjIFRoZSBzb3VyY2UgZm9yIHRoaXMgcGFja2FnZSB3YXMgcHVsbGVk IGZyb20gdXBzdHJlYW0ncyB2Y3MuICBVc2UgdGhlCiAjIGZvbGxvd2luZyBjb21tYW5kcyB0byBn ZW5lcmF0ZSB0aGUgdGFyYmFsbDoKQEAgLTE1NSw5ICsxNTUsNiBAQCBQYXRjaDIwOiBnY2M0NC1s aWJ0b29sLW5vLXJwYXRoLnBhdGNoCiBQYXRjaDIxOiBnY2M0NC1jbG9vZy1kbC5wYXRjaAogUGF0 Y2gyMjogZ2NjNDQtcmF3LXN0cmluZy5wYXRjaAogUGF0Y2gyNDogZ2NjNDQtdW53aW5kLWRlYnVn LWhvb2sucGF0Y2gKLVBhdGNoMjU6IGdjYzQ0LXBvd2VyNy5wYXRjaAotUGF0Y2gyNjogZ2NjNDQt cG93ZXI3LTIucGF0Y2gKLVBhdGNoMjc6IGdjYzQ0LXBvd2VyNy0zLnBhdGNoCiBQYXRjaDI4OiBn Y2M0NC1wcjM4NzU3LnBhdGNoCiBQYXRjaDI5OiBnY2M0NC1saWJzdGRjKystZG9jcy5wYXRjaAog UGF0Y2gzMDogZ2NjNDQtcmg1MDM4MTYtMS5wYXRjaApAQCAtNDY0LDkgKzQ2MSw2IEBAIHdoaWNo IGFyZSByZXF1aXJlZCB0byBjb21waWxlIHdpdGggdGhlIEdOQVQuCiAlZW5kaWYKICVwYXRjaDIy IC1wMCAtYiAucmF3LXN0cmluZ34KICVwYXRjaDI0IC1wMCAtYiAudW53aW5kLWRlYnVnLWhvb2t+ Ci0lcGF0Y2gyNSAtcDAgLWIgLnBvd2VyN34KLSVwYXRjaDI2IC1wMCAtYiAucG93ZXI3LTJ+Ci0l cGF0Y2gyNyAtcDAgLWIgLnBvd2VyNy0zfgogJXBhdGNoMjggLXAwIC1iIC5wcjM4NzU3fgogJWlm ICV7YnVpbGRfbGlic3RkY3h4X2RvY3N9CiAlcGF0Y2gyOSAtcDAgLWIgLmxpYnN0ZGMrKy1kb2Nz fgpAQCAtMTgxMiw2ICsxODA2LDE4IEBAIGZpCiAlZG9jIHJwbS5kb2MvY2hhbmdlbG9ncy9saWJt dWRmbGFwL0NoYW5nZUxvZyoKIAogJWNoYW5nZWxvZworKiBUdWUgU2VwICAxIDIwMDkgSmFrdWIg SmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC40LjEtNworLSB1cGRhdGUgZnJvbSBnY2MtNF80 LWJyYW5jaAorICAtIFBScyBjKysvNDExMjAsIGMrKy80MTEyNywgYysrLzQxMTMxLCBmb3J0cmFu LzQxMDYyLCBmb3J0cmFuLzQxMTAyLAorCWZvcnRyYW4vNDExMjEsIGZvcnRyYW4vNDExMjYsIGZv cnRyYW4vNDExMzksIGZvcnRyYW4vNDExNTcsCisJZm9ydHJhbi80MTE2MiwgbGliZm9ydHJhbi80 MDk2MiwgbGlic3RkYysrLzQxMDA1LCBtaWRkbGUtZW5kLzQxMDk0LAorCW1pZGRsZS1lbmQvNDEx MjMsIG1pZGRsZS1lbmQvNDExNjMsIHRhcmdldC8zNDQxMiwgdGFyZ2V0LzQwNzE4CistIGZpeCBw cjIyMDMzLkMgb24gcHBjKi9pYTY0L3NwYXJjKgorLSBlbWl0IG5hbWVzcGFjZSBESUUgZXZlbiBp ZiBpdCBjb250YWlucyBqdXN0IHNvbWUgdXNlZCB0eXBlIChQUiBkZWJ1Zy80MTE3MCkKKy0gZml4 IGR5bmFtaWNfY2FzdCAoIzUxOTUxNykKKy0gYmFja3BvcnQgcG93ZXI3IGNoYW5nZXMgZnJvbSB0 aGUgdHJ1bmssIGluc3RlYWQgb2YgdXNpbmcgdGhlIG9sZCBpbmNvbXBsZXRlCisgIGJhY2twb3J0 IGZyb20gaWJtL3Bvd2VyNy1tZWlzc25lcgorCiAqIFR1ZSBBdWcgMTggMjAwOSBKYWt1YiBKZWxp bmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjQuMS02CiAtIHVwZGF0ZSBmcm9tIGdjYy00XzQtYnJh bmNoCiAgIC0gUFJzIGJvb3RzdHJhcC80MTAxOCwgYy80MTA0NiwgZGVidWcvMzc4MDEsIGRlYnVn LzQwOTkwLCBmb3J0cmFuLzQwODQ3LAoKZGlmZiAtLWdpdCBhL2djYzQ0LXBvd2VyNy0yLnBhdGNo IGIvZ2NjNDQtcG93ZXI3LTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEy OTYyMTcuLjAwMDAwMDAKLS0tIGEvZ2NjNDQtcG93ZXI3LTIucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyNjcgKzAsMCBAQAotMjAwOS0wNC0xNCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVy QGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAw X3NlY29uZGFyeV9yZWxvYWRfaW5uZXIpOiBIYW5kbGUKLQltb3JlIHBvc3NpYmxlIGNvbWJpbmF0 aW9ucyBvZiBhZGRyZXNzZXMuCi0KLQkqIGNvbmZpZy9yczYwMDAvdmVjdG9yLm1kICh2ZWNfcmVs b2FkX2FuZF9wbHVzXzxtcHRyc2l6ZT4pOiBBbGxvdwotCXJlZ2lzdGVyK3NtYWxsIGNvbnN0YW50 IGluIGFkZGl0aW9uIHRvIHJlZ2lzdGVyK3JlZ2lzdGVyLCBhbmQKLQlyZXN0cmljdCB0aGUgaW5z biB0byBvbmx5IG1hdGNoIGR1cmluZyByZWxvYWQgYW5kIGFmdGVyd2FyZHMuCi0JKHZlY19yZWxv YWRfYW5kX3JlZ188bXB0cnNpemU+KTogQWxsb3cgZm9yIGFuZCBvZiByZWdpc3RlcgotCWluZGly ZWN0IHRvIG5vdCBnZW5lcmF0ZSBpbnNuIG5vdCBmb3VuZCBtZXNzYWdlLgotCi0tLS0gZ2NjL2Nv bmZpZy9yczYwMDAvdmVjdG9yLm1kCShyZXZpc2lvbiAxNDYwNjkpCi0rKysgZ2NjL2NvbmZpZy9y czYwMDAvdmVjdG9yLm1kCShyZXZpc2lvbiAxNDYxMTgpCi1AQCAtMTI5LDE0ICsxMjksMTUgQEAg KGRlZmluZV9leHBhbmQgInJlbG9hZF88VkVDX1I6bW9kZT5fPFA6bQotIH0pCi0gCi0gOzsgUmVs b2FkIHNvbWV0aW1lcyB0cmllcyB0byBtb3ZlIHRoZSBhZGRyZXNzIHRvIGEgR1BSLCBhbmQgY2Fu IGdlbmVyYXRlCi0tOzsgaW52YWxpZCBSVEwgZm9yIGFkZHJlc3NlcyBpbnZvbHZpbmcgQU5EIC0x Ni4KLSs7OyBpbnZhbGlkIFJUTCBmb3IgYWRkcmVzc2VzIGludm9sdmluZyBBTkQgLTE2LiAgQWxs b3cgYWRkcmVzc2VzIGludm9sdmluZwotKzs7IHJlZytyZWcsIHJlZytzbWFsbCBjb25zdGFudCwg b3IganVzdCByZWcsIGFsbCB3cmFwcGVkIGluIGFuIEFORCAtMTYuCi0gCi0gKGRlZmluZV9pbnNu X2FuZF9zcGxpdCAiKnZlY19yZWxvYWRfYW5kX3BsdXNfPG1wdHJzaXplPiIKLSAgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlAgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWIiKQotIAkoYW5kOlAgKHBsdXM6 UCAobWF0Y2hfb3BlcmFuZDpQIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotLQkJICAgICAgICht YXRjaF9vcGVyYW5kOlAgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpKQotKwkJICAgICAgIChtYXRj aF9vcGVyYW5kOlAgMiAicmVnX29yX2NpbnRfb3BlcmFuZCIgInJJIikpCi0gCSAgICAgICAoY29u c3RfaW50IC0xNikpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfVlNYIgotKyAgIihU QVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfVlNYKSAmJiAocmVsb2FkX2luX3Byb2dyZXNzIHx8IHJl bG9hZF9jb21wbGV0ZWQpIgotICAgIiMiCi0gICAiJiYgcmVsb2FkX2NvbXBsZXRlZCIKLSAgIFso c2V0IChtYXRjaF9kdXAgMCkKLUBAIC0xNDYsNiArMTQ3LDIxIEBAIChkZWZpbmVfaW5zbl9hbmRf c3BsaXQgIip2ZWNfcmVsb2FkX2FuZF8KLSAJCSAgIChhbmQ6UCAobWF0Y2hfZHVwIDApCi0gCQkJ ICAoY29uc3RfaW50IC0xNikpKQotIAkgICAgICAoY2xvYmJlcjpDQyAoc2NyYXRjaDpDQykpXSld KQotKwotKzs7IFRoZSBub3JtYWwgQU5EU0kzL0FORERJMyB3b24ndCBtYXRjaCBpZiByZWxvYWQg ZGVjaWRlcyB0byBtb3ZlIGFuIEFORCAtMTYKLSs7OyBhZGRyZXNzIHRvIGEgcmVnaXN0ZXIgYmVj YXVzZSB0aGVyZSBpcyBubyBjbG9iYmVyIG9mIGEgKHNjcmF0Y2gpLCBzbyB3ZSBhZGQKLSs7OyBp dCBoZXJlLgotKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIip2ZWNfcmVsb2FkX2FuZF9yZWdfPG1w dHJzaXplPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlAgMCAiZ3BjX3JlZ19vcGVyYW5kIiAi PWIiKQotKwkoYW5kOlAgKG1hdGNoX29wZXJhbmQ6UCAxICJncGNfcmVnX29wZXJhbmQiICJyIikK LSsJICAgICAgIChjb25zdF9pbnQgLTE2KSkpXQotKyAgIihUQVJHRVRfQUxUSVZFQyB8fCBUQVJH RVRfVlNYKSAmJiAocmVsb2FkX2luX3Byb2dyZXNzIHx8IHJlbG9hZF9jb21wbGV0ZWQpIgotKyAg IiMiCi0rICAiJiYgcmVsb2FkX2NvbXBsZXRlZCIKLSsgIFsocGFyYWxsZWwgWyhzZXQgKG1hdGNo X2R1cCAwKQotKwkJICAgKGFuZDpQIChtYXRjaF9kdXAgMSkKLSsJCQkgIChjb25zdF9pbnQgLTE2 KSkpCi0rCSAgICAgIChjbG9iYmVyOkNDIChzY3JhdGNoOkNDKSldKV0pCi0gDAotIDs7IEdlbmVy aWMgZmxvYXRpbmcgcG9pbnQgdmVjdG9yIGFyaXRobWV0aWMgc3VwcG9ydAotIChkZWZpbmVfZXhw YW5kICJhZGQ8bW9kZT4zIgotLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jCShyZXZpc2lv biAxNDYwNjkpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMJKHJldmlzaW9uIDE0NjEx OCkKLUBAIC0xMjU3NCw2ICsxMjU3NCwxMSBAQCByczYwMDBfc2Vjb25kYXJ5X3JlbG9hZF9pbm5l ciAocnR4IHJlZywgCi0gICBlbnVtIHJlZ19jbGFzcyByY2xhc3M7Ci0gICBydHggYWRkcjsKLSAg IHJ0eCBhbmRfb3AyID0gTlVMTF9SVFg7Ci0rICBydHggYWRkcl9vcDE7Ci0rICBydHggYWRkcl9v cDI7Ci0rICBydHggc2NyYXRjaF9vcl9wcmVtb2RpZnkgPSBzY3JhdGNoOwotKyAgcnR4IGFuZF9y dHg7Ci0rICBydHggY2NfY2xvYmJlcjsKLSAKLSAgIGlmIChUQVJHRVRfREVCVUdfQUREUikKLSAg ICAgewotQEAgLTEyNTk1LDcgKzEyNjAwLDggQEAgcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5u ZXIgKHJ0eCByZWcsIAotIAotICAgc3dpdGNoIChyY2xhc3MpCi0gICAgIHsKLS0gICAgICAvKiBN b3ZlIHJlZytyZWcgYWRkcmVzc2VzIGludG8gYSBzY3JhdGNoIHJlZ2lzdGVyIGZvciBHUFJzLiAg Ki8KLSsgICAgICAvKiBHUFJzIGNhbiBoYW5kbGUgcmVnICsgc21hbGwgY29uc3RhbnQsIGFsbCBv dGhlciBhZGRyZXNzZXMgbmVlZCB0byB1c2UKLSsJIHRoZSBzY3JhdGNoIHJlZ2lzdGVyLiAgKi8K LSAgICAgY2FzZSBHRU5FUkFMX1JFR1M6Ci0gICAgIGNhc2UgQkFTRV9SRUdTOgotICAgICAgIGlm IChHRVRfQ09ERSAoYWRkcikgPT0gQU5EKQotQEAgLTEyNjAzLDcwICsxMjYwOSwxNTIgQEAgcnM2 MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIgKHJ0eCByZWcsIAotIAkgIGFuZF9vcDIgPSBYRVhQ IChhZGRyLCAxKTsKLSAJICBhZGRyID0gWEVYUCAoYWRkciwgMCk7Ci0gCX0KLSsKLSsgICAgICBp ZiAoR0VUX0NPREUgKGFkZHIpID09IFBSRV9NT0RJRlkpCi0rCXsKLSsJICBzY3JhdGNoX29yX3By ZW1vZGlmeSA9IFhFWFAgKGFkZHIsIDApOwotKwkgIGdjY19hc3NlcnQgKFJFR19QIChzY3JhdGNo X29yX3ByZW1vZGlmeSkpOwotKwkgIGdjY19hc3NlcnQgKEdFVF9DT0RFIChYRVhQIChhZGRyLCAx KSkgPT0gUExVUyk7Ci0rCSAgYWRkciA9IFhFWFAgKGFkZHIsIDEpOwotKwl9Ci0rCi0gICAgICAg aWYgKEdFVF9DT0RFIChhZGRyKSA9PSBQTFVTCi0gCSAgJiYgKCFyczYwMDBfbGVnaXRpbWF0ZV9v ZmZzZXRfYWRkcmVzc19wIChUSW1vZGUsIGFkZHIsIHRydWUpCi0gCSAgICAgIHx8IGFuZF9vcDIg IT0gTlVMTF9SVFgpKQotIAl7Ci0tCSAgaWYgKEdFVF9DT0RFIChhZGRyKSA9PSBTWU1CT0xfUkVG IHx8IEdFVF9DT0RFIChhZGRyKSA9PSBDT05TVAotLQkgICAgICB8fCBHRVRfQ09ERSAoYWRkcikg PT0gQ09OU1RfSU5UKQotLQkgICAgcnM2MDAwX2VtaXRfbW92ZSAoc2NyYXRjaCwgYWRkciwgR0VU X01PREUgKGFkZHIpKTsKLS0JICBlbHNlCi0tCSAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChW T0lEbW9kZSwgc2NyYXRjaCwgYWRkcikpOwotLQkgIGFkZHIgPSBzY3JhdGNoOwotKwkgIGFkZHJf b3AxID0gWEVYUCAoYWRkciwgMCk7Ci0rCSAgYWRkcl9vcDIgPSBYRVhQIChhZGRyLCAxKTsKLSsJ ICBnY2NfYXNzZXJ0IChsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3NfcCAoYWRkcl9vcDEsIHRy dWUpKTsKLSsKLSsJICBpZiAoIVJFR19QIChhZGRyX29wMikKLSsJICAgICAgJiYgKEdFVF9DT0RF IChhZGRyX29wMikgIT0gQ09OU1RfSU5UCi0rCQkgIHx8ICFzYXRpc2ZpZXNfY29uc3RyYWludF9J IChhZGRyX29wMikpKQotKwkgICAgewotKwkgICAgICByczYwMDBfZW1pdF9tb3ZlIChzY3JhdGNo LCBhZGRyX29wMiwgUG1vZGUpOwotKwkgICAgICBhZGRyX29wMiA9IHNjcmF0Y2g7Ci0rCSAgICB9 Ci0rCi0rCSAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsCi0rCQkJCSAgc2NyYXRj aF9vcl9wcmVtb2RpZnksCi0rCQkJCSAgZ2VuX3J0eF9QTFVTIChQbW9kZSwKLSsJCQkJCQlhZGRy X29wMSwKLSsJCQkJCQlhZGRyX29wMikpKTsKLSsKLSsJICBhZGRyID0gc2NyYXRjaF9vcl9wcmVt b2RpZnk7Ci0rCSAgc2NyYXRjaF9vcl9wcmVtb2RpZnkgPSBzY3JhdGNoOwotIAl9Ci0tICAgICAg ZWxzZSBpZiAoR0VUX0NPREUgKGFkZHIpID09IFBSRV9NT0RJRlkKLS0JICAgICAgICYmIFJFR19Q IChYRVhQIChhZGRyLCAwKSkKLS0JICAgICAgICYmIEdFVF9DT0RFIChYRVhQIChhZGRyLCAxKSkg PT0gUExVUykKLSsgICAgICBlbHNlIGlmICghbGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3Ag KGFkZHIsIHRydWUpCi0rCSAgICAgICAmJiAhcnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJl c3NfcCAoVEltb2RlLCBhZGRyLCB0cnVlKSkKLSAJewotLQkgIGVtaXRfaW5zbiAoZ2VuX3J0eF9T RVQgKFZPSURtb2RlLCBYRVhQIChhZGRyLCAwKSwgWEVYUCAoYWRkciwgMSkpKTsKLS0JICBhZGRy ID0gWEVYUCAoYWRkciwgMCk7Ci0rCSAgcnM2MDAwX2VtaXRfbW92ZSAoc2NyYXRjaF9vcl9wcmVt b2RpZnksIGFkZHIsIFBtb2RlKTsKLSsJICBhZGRyID0gc2NyYXRjaF9vcl9wcmVtb2RpZnk7Ci0r CSAgc2NyYXRjaF9vcl9wcmVtb2RpZnkgPSBzY3JhdGNoOwotIAl9Ci0gICAgICAgYnJlYWs7Ci0g Ci0rICAgICAgLyogRmxvYXQvQWx0aXZlYyByZWdpc3RlcnMgY2FuIG9ubHkgaGFuZGxlIHJlZyty ZWcgYWRkcmVzc2luZy4gIE1vdmUKLSsJIG90aGVyIGFkZHJlc3NlcyBpbnRvIGEgc2NyYXRjaCBy ZWdpc3Rlci4gICovCi0rICAgIGNhc2UgRkxPQVRfUkVHUzoKLSsgICAgY2FzZSBWU1hfUkVHUzoK LSsgICAgY2FzZSBBTFRJVkVDX1JFR1M6Ci0rCi0gICAgICAgLyogV2l0aCBmbG9hdCByZWdzLCB3 ZSBuZWVkIHRvIGhhbmRsZSB0aGUgQU5EIG91cnNlbHZlcywgc2luY2Ugd2UgY2FuJ3QKLSAJIHVz ZSB0aGUgQWx0aXZlYyBpbnN0cnVjdGlvbiB3aXRoIGFuIGltcGxpY2l0IEFORCAtMTYuICBBbGxv dyBzY2FsYXIKLSAJIGxvYWRzIHRvIGZsb2F0IHJlZ2lzdGVycyB0byB1c2UgcmVnK29mZnNldCBl dmVuIGlmIFZTWC4gICovCi0tICAgIGNhc2UgRkxPQVRfUkVHUzoKLS0gICAgY2FzZSBWU1hfUkVH UzoKLS0gICAgICBpZiAoR0VUX0NPREUgKGFkZHIpID09IEFORCkKLSsgICAgICBpZiAoR0VUX0NP REUgKGFkZHIpID09IEFORAotKwkgICYmIChyY2xhc3MgIT0gQUxUSVZFQ19SRUdTIHx8IEdFVF9N T0RFX1NJWkUgKG1vZGUpICE9IDE2KSkKLSAJewotIAkgIGFuZF9vcDIgPSBYRVhQIChhZGRyLCAx KTsKLSAJICBhZGRyID0gWEVYUCAoYWRkciwgMCk7Ci0gCX0KLS0gICAgICAvKiBmYWxsIHRocm91 Z2ggKi8KLSAKLS0gICAgICAvKiBNb3ZlIHJlZytvZmZzZXQgYWRkcmVzc2VzIGludG8gYSBzY3Jh dGNoIHJlZ2lzdGVyLiAgKi8KLS0gICAgY2FzZSBBTFRJVkVDX1JFR1M6Ci0tICAgICAgaWYgKCFs ZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3NfcCAoYWRkciwgdHJ1ZSkKLS0JICAmJiAhbGVnaXRp bWF0ZV9pbmRleGVkX2FkZHJlc3NfcCAoYWRkciwgdHJ1ZSkKLS0JICAmJiAoR0VUX0NPREUgKGFk ZHIpICE9IFBSRV9NT0RJRlkKLS0JICAgICAgfHwgIWxlZ2l0aW1hdGVfaW5kZXhlZF9hZGRyZXNz X3AgKFhFWFAgKGFkZHIsIDEpLCB0cnVlKSkKLS0JICAmJiAocmNsYXNzICE9IEZMT0FUX1JFR1MK LS0JICAgICAgfHwgR0VUX01PREVfU0laRSAobW9kZSkgIT0gOAotKyAgICAgIC8qIElmIHdlIGFy ZW4ndCB1c2luZyBhIFZTWCBsb2FkLCBzYXZlIHRoZSBQUkVfTU9ESUZZIHJlZ2lzdGVyIGFuZCB1 c2UgaXQKLSsJIGFzIHRoZSBhZGRyZXNzIGxhdGVyLiAgKi8KLSsgICAgICBpZiAoR0VUX0NPREUg KGFkZHIpID09IFBSRV9NT0RJRlkKLSsJICAmJiAoIVZFQ1RPUl9NRU1fVlNYX1AgKG1vZGUpCi0g CSAgICAgIHx8IGFuZF9vcDIgIT0gTlVMTF9SVFgKLS0JICAgICAgfHwgIXJzNjAwMF9sZWdpdGlt YXRlX29mZnNldF9hZGRyZXNzX3AgKG1vZGUsIGFkZHIsIHRydWUpKSkKLSsJICAgICAgfHwgIWxl Z2l0aW1hdGVfaW5kZXhlZF9hZGRyZXNzX3AgKFhFWFAgKGFkZHIsIDEpLCB0cnVlKSkpCi0gCXsK LS0JICBpZiAoR0VUX0NPREUgKGFkZHIpID09IFNZTUJPTF9SRUYgfHwgR0VUX0NPREUgKGFkZHIp ID09IENPTlNUCi0tCSAgICAgIHx8IEdFVF9DT0RFIChhZGRyKSA9PSBDT05TVF9JTlQpCi0tCSAg ICByczYwMDBfZW1pdF9tb3ZlIChzY3JhdGNoLCBhZGRyLCBHRVRfTU9ERSAoYWRkcikpOwotLQkg IGVsc2UKLS0JICAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBzY3JhdGNoLCBh ZGRyKSk7Ci0tCSAgYWRkciA9IHNjcmF0Y2g7Ci0rCSAgc2NyYXRjaF9vcl9wcmVtb2RpZnkgPSBY RVhQIChhZGRyLCAwKTsKLSsJICBnY2NfYXNzZXJ0IChsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJl c3NfcCAoc2NyYXRjaF9vcl9wcmVtb2RpZnksCi0rCQkJCQkJICAgICB0cnVlKSk7Ci0rCSAgZ2Nj X2Fzc2VydCAoR0VUX0NPREUgKFhFWFAgKGFkZHIsIDEpKSA9PSBQTFVTKTsKLSsJICBhZGRyID0g WEVYUCAoYWRkciwgMSk7Ci0rCX0KLSsKLSsgICAgICBpZiAobGVnaXRpbWF0ZV9pbmRpcmVjdF9h ZGRyZXNzX3AgKGFkZHIsIHRydWUpCS8qIHJlZyAqLwotKwkgIHx8IGxlZ2l0aW1hdGVfaW5kZXhl ZF9hZGRyZXNzX3AgKGFkZHIsIHRydWUpCS8qIHJlZytyZWcgKi8KLSsJICB8fCBHRVRfQ09ERSAo YWRkcikgPT0gUFJFX01PRElGWQkJLyogVlNYIHByZS1tb2RpZnkgKi8KLSsJICB8fCBHRVRfQ09E RSAoYWRkcikgPT0gQU5ECQkJLyogQWx0aXZlYyBtZW1vcnkgKi8KLSsJICB8fCAocmNsYXNzID09 IEZMT0FUX1JFR1MJCQkvKiBsZWdhY3kgZmxvYXQgbWVtICovCi0rCSAgICAgICYmIEdFVF9NT0RF X1NJWkUgKG1vZGUpID09IDgKLSsJICAgICAgJiYgYW5kX29wMiA9PSBOVUxMX1JUWAotKwkgICAg ICAmJiBzY3JhdGNoX29yX3ByZW1vZGlmeSA9PSBzY3JhdGNoCi0rCSAgICAgICYmIHJzNjAwMF9s ZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AgKG1vZGUsIGFkZHIsIHRydWUpKSkKLSsJOwotKwot KyAgICAgIGVsc2UgaWYgKEdFVF9DT0RFIChhZGRyKSA9PSBQTFVTKQotKwl7Ci0rCSAgYWRkcl9v cDEgPSBYRVhQIChhZGRyLCAwKTsKLSsJICBhZGRyX29wMiA9IFhFWFAgKGFkZHIsIDEpOwotKwkg IGdjY19hc3NlcnQgKFJFR19QIChhZGRyX29wMSkpOwotKwotKwkgIHJzNjAwMF9lbWl0X21vdmUg KHNjcmF0Y2gsIGFkZHJfb3AyLCBQbW9kZSk7Ci0rCSAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAo Vk9JRG1vZGUsCi0rCQkJCSAgc2NyYXRjaF9vcl9wcmVtb2RpZnksCi0rCQkJCSAgZ2VuX3J0eF9Q TFVTIChQbW9kZSwKLSsJCQkJCQlhZGRyX29wMSwKLSsJCQkJCQlzY3JhdGNoKSkpOwotKwkgIGFk ZHIgPSBzY3JhdGNoX29yX3ByZW1vZGlmeTsKLSsJICBzY3JhdGNoX29yX3ByZW1vZGlmeSA9IHNj cmF0Y2g7Ci0gCX0KLSsKLSsgICAgICBlbHNlIGlmIChHRVRfQ09ERSAoYWRkcikgPT0gU1lNQk9M X1JFRiB8fCBHRVRfQ09ERSAoYWRkcikgPT0gQ09OU1QKLSsJICAgICAgIHx8IEdFVF9DT0RFIChh ZGRyKSA9PSBDT05TVF9JTlQpCi0rCXsKLSsJICByczYwMDBfZW1pdF9tb3ZlIChzY3JhdGNoX29y X3ByZW1vZGlmeSwgYWRkciwgUG1vZGUpOwotKwkgIGFkZHIgPSBzY3JhdGNoX29yX3ByZW1vZGlm eTsKLSsJICBzY3JhdGNoX29yX3ByZW1vZGlmeSA9IHNjcmF0Y2g7Ci0rCX0KLSsKLSsgICAgICBl bHNlCi0rCWdjY191bnJlYWNoYWJsZSAoKTsKLSsKLSAgICAgICBicmVhazsKLSAKLSAgICAgZGVm YXVsdDoKLSAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0gICAgIH0KLSAKLS0gIC8qIElmIHRo ZSBvcmlnaW5hbCBhZGRyZXNzIGludm9sdmVkIGFuIEFORCAtMTYgdGhhdCBpcyBwYXJ0IG9mIHRo ZSBBbHRpdmVjCi0tICAgICBhZGRyZXNzZXMsIHJlY3JlYXRlIHRoZSBhbmQgbm93LiAgKi8KLSsg IC8qIElmIHRoZSBvcmlnaW5hbCBhZGRyZXNzIGludm9sdmVkIGEgcHJlLW1vZGlmeSB0aGF0IHdl IGNvdWxkbid0IHVzZSB0aGUgVlNYCi0rICAgICBtZW1vcnkgaW5zdHJ1Y3Rpb24gd2l0aCB1cGRh dGUsIGFuZCB3ZSBoYXZlbid0IHRha2VuIGNhcmUgb2YgYWxyZWFkeSwKLSsgICAgIHN0b3JlIHRo ZSBhZGRyZXNzIGluIHRoZSBwcmUtbW9kaWZ5IHJlZ2lzdGVyIGFuZCB1c2UgdGhhdCBhcyB0aGUK LSsgICAgIGFkZHJlc3MuICAqLwotKyAgaWYgKHNjcmF0Y2hfb3JfcHJlbW9kaWZ5ICE9IHNjcmF0 Y2ggJiYgc2NyYXRjaF9vcl9wcmVtb2RpZnkgIT0gYWRkcikKLSsgICAgewotKyAgICAgIGVtaXRf aW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBzY3JhdGNoX29yX3ByZW1vZGlmeSwgYWRkcikp OwotKyAgICAgIGFkZHIgPSBzY3JhdGNoX29yX3ByZW1vZGlmeTsKLSsgICAgfQotKwotKyAgLyog SWYgdGhlIG9yaWdpbmFsIGFkZHJlc3MgaW52b2x2ZWQgYW4gQU5EIC0xNiBhbmQgd2UgY291bGRu J3QgdXNlIGFuIEFMVElWRUMKLSsgICAgIG1lbW9yeSBpbnN0cnVjdGlvbiwgcmVjcmVhdGUgdGhl IEFORCBub3csIGluY2x1ZGluZyB0aGUgY2xvYmJlciB3aGljaCBpcwotKyAgICAgZ2VuZXJhdGVk IGJ5IHRoZSBnZW5lcmFsIEFORFNJMy9BTkRESTMgcGF0dGVybnMgZm9yIHRoZQotKyAgICAgYW5k aS4gaW5zdHJ1Y3Rpb24uICAqLwotICAgaWYgKGFuZF9vcDIgIT0gTlVMTF9SVFgpCi0gICAgIHsK LS0gICAgICBydHggYW5kX3J0eCA9IGdlbl9ydHhfU0VUIChWT0lEbW9kZSwKLS0JCQkJIHNjcmF0 Y2gsCi0tCQkJCSBnZW5fcnR4X0FORCAoUG1vZGUsIGFkZHIsIGFuZF9vcDIpKTsKLS0gICAgICBy dHggY2NfY2xvYmJlciA9IGdlbl9ydHhfQ0xPQkJFUiAoQ0Ntb2RlLCBnZW5fcnR4X1NDUkFUQ0gg KENDbW9kZSkpOwotKyAgICAgIGlmICghIGxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wIChh ZGRyLCB0cnVlKSkKLSsJewotKwkgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBz Y3JhdGNoLCBhZGRyKSk7Ci0rCSAgYWRkciA9IHNjcmF0Y2g7Ci0rCX0KLSsKLSsgICAgICBhbmRf cnR4ID0gZ2VuX3J0eF9TRVQgKFZPSURtb2RlLAotKwkJCSAgICAgc2NyYXRjaCwKLSsJCQkgICAg IGdlbl9ydHhfQU5EIChQbW9kZSwKLSsJCQkJCSAgYWRkciwKLSsJCQkJCSAgYW5kX29wMikpOwot KwotKyAgICAgIGNjX2Nsb2JiZXIgPSBnZW5fcnR4X0NMT0JCRVIgKENDbW9kZSwgZ2VuX3J0eF9T Q1JBVENIIChDQ21vZGUpKTsKLSAgICAgICBlbWl0X2luc24gKGdlbl9ydHhfUEFSQUxMRUwgKFZP SURtb2RlLAotIAkJCQkgICBnZW5fcnR2ZWMgKDIsIGFuZF9ydHgsIGNjX2Nsb2JiZXIpKSk7Ci0g ICAgICAgYWRkciA9IHNjcmF0Y2g7CgpkaWZmIC0tZ2l0IGEvZ2NjNDQtcG93ZXI3LTMucGF0Y2gg Yi9nY2M0NC1wb3dlcjctMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Rk OGFmZS4uMDAwMDAwMAotLS0gYS9nY2M0NC1wb3dlcjctMy5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDM1MjMgKzAsMCBAQAotMjAwOS0wNC0yNiAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVy QGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQgKHZlY3Rv cl92c2VsPG1vZGU+KTogR2VuZXJhdGUgdGhlIGluc25zCi0JZGlyZWN0bHkgaW5zdGVhZCBvZiBj YWxsaW5nIFZTWC9BbHRpdmVjIGV4cGFuZGVycy4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAt Yy5jIChyczYwMDBfY3B1X2NwcF9idWlsdGlucyk6IE1hcCBWU1gKLQlidWlsdGlucyB0aGF0IGFy ZSBpZGVudGljYWwgdG8gQWx0aXZlYywgdG8gdGhlIEFsdGl2ZWMgdmVzaW9uLgotCShhbHRpdmVj X292ZXJsb2FkZWRfYnVpbHRpbnMpOiBBZGQgVjJERi9WMkRJIHNlbCwgcGVybSBzdXBwb3J0Lgot CShhbHRpdmVjX3Jlc29sdmVfb3ZlcmxvYWRlZF9idWlsdGluKTogQWRkIFYyREYvVjJESSBzdXBw b3J0LgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZXhwYW5kX3ZlY3Rvcl9p bml0KTogUmVuYW1lIFZTWAotCXNwbGF0IGZ1bmN0aW9ucy4KLQkoZXhwYW5kX3ZlY3Rvcl9zZXQp OiBNZXJnZSBWMkRGL1YyREkgY29kZS4KLQkoZXhwYW5kX3ZlY3Rvcl9leHRyYWN0KTogRGl0dG8u Ci0JKGJkZXNjXzNhcmcpOiBBZGQgbW9yZSBWU1ggYnVpbHRpbnMuCi0JKGJkZXNjXzJhcmcpOiBE aXR0by4KLQkoYmRlc2NfMWFyZyk6IERpdHRvLgotCShyczYwMDBfZXhwYW5kX3Rlcm5vcF9idWls dGluKTogUmVxdWlyZSB4eHBlcm1kaSAzcmQgYXJndW1lbnQgdG8KLQliZSAyIGJpdC1jb25zdGFu dCwgYW5kIFYyREYvVjJESSBzZXQgdG8gYmUgYSAxIGJpdC1jb25zdGFudC4KLQkoYWx0aXZlY19l eHBhbmRfYnVpbHRpbik6IEFkZCBzdXBwb3J0IGZvciBWU1ggb3ZlcmxvYWRlZCBidWlsdGlucy4K LQkoYWx0aXZlY19pbml0X2J1aWx0aW5zKTogRGl0dG8uCi0JKHJzNjAwMF9jb21tb25faW5pdF9i dWlsdGlucyk6IERpdHRvLgotCShyczYwMDBfaW5pdF9idWlsdGlucyk6IEFkZCBWMkRJIHR5cGVz IGFuZCB2ZWN0b3IgbG9uZyBzdXBwb3J0LgotCShyczYwMDBfaGFuZGxlX2FsdGl2ZWNfYXR0cmli dXRlKTogRGl0dG8uCi0JKHJzNjAwMF9tYW5nZV90eXBlKTogRGl0dG8uCi0KLQkqIGNvbmZpZy9y czYwMDAvdnN4Lm1kIChVTlNQRUNfKik6IEFkZCBuZXcgVU5TUEVDIGNvbnN0YW50cy4KLQkodnN4 X3ZzZWw8bW9kZT4pOiBBZGQgc3VwcG9ydCBmb3IgYWxsIHZlY3RvciB0eXBlcywgaW5jbHVkaW5n Ci0JQWx0aXZlYyB0eXBlcy4KLQkodnN4X2Z0cnVuYzxtb2RlPjIpOiBFbWl0IHRoZSBjb3JyZWN0 IGluc3RydWN0aW9uLgotCSh2c3hfeDxWU3Y+cjxWU3M+aSk6IE5ldyBidWlsdGluIHJvdW5kaW5n IG1vZGUgaW5zbnMuCi0JKHZzeF94PFZTdj5yPFZTcz5pYyk6IERpdHRvLgotCSh2c3hfY29uY2F0 Xzxtb2RlPik6IEtleSBvZmYgb2YgVlNYIG1lbW9yeSBpbnN0cnVjdGlvbnMgYmVpbmcKLQlnZW5l cmF0ZWQgaW5zdGVhZCBvZiB0aGUgdmVjdG9yIGFyaXRobWV0aWMgdW5pdCB0byBlbmFibGUgVjJE SQotCW1vZGUuCi0JKHZzeF9leHRyYWN0Xzxtb2RlPik6IERpdHRvLgotCSh2c3hfc2V0Xzxtb2Rl Pik6IFJld3JpdGUgYXMgYW4gdW5zcGVjLgotCSh2c3hfeHhwZXJtZGkyXzxtb2RlPik6IFJlbmFt ZSBvbGQgdnN4X3h4cGVybWRpXzxtb2RlPiBoZXJlLiAgS2V5Ci0Jb2ZmIG9mIFZTWCBtZW1vcnkg aW5zdHJ1Y3Rpb25zIGluc3RlYWQgb2YgYXJpdGhtZXRpYyB1bml0LgotCSh2c3hfeHhwZXJtZGlf PG1vZGU+KTogTmV3IGluc24gZm9yIF9fYnVpbHRpbl92c3hfeHhwZXJtZGkuCi0JKHZzeF9zcGxh dF88bW9kZT4pOiBSZW5hbWUgZnJvbSB2c3hfc3BsYXQ8bW9kZT4uCi0JKHZzeF94eHNwbHR3Xzxt b2RlPik6IENoYW5nZSBmcm9tIFY0U0Ygb25seSB0byBWNFNGL1Y0U0kgbW9kZXMuCi0JRml4IHVw IGNvbnN0cmFpbnRzLiAgS2V5IG9mZiBvZiBtZW1vcnkgaW5zdHJ1Y3Rpb25zIGluc3RlYWQgb2YK LQlhcml0aG1ldGljIGluc3RydWN0aW9ucyB0byBhbGxvdyB1c2Ugd2l0aCBWNFNJLgotCSh2c3hf eHhtcmdod188bW9kZT4pOiBEaXR0by4KLQkodnN4X3h4bXJnbHdfPG1vZGU+KTogRGl0dG8uCi0J KHZzeF94eHNsZHdpXzxtb2RlPik6IEltcGxlbWVudCB2ZWN0b3Igc2hpZnQgZG91YmxlIGJ5IHdv cmQKLQlpbW1lZGlhdGUuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFZTWF9CVUlMVElO XyopOiBVcGRhdGUgZm9yIGN1cnJlbnQKLQlidWlsdGlucyBiZWluZyBnZW5lcmF0ZWQuCi0JKFJT NjAwMF9CVElfdW5zaWduZWRfVjJESSk6IEFkZCB2ZWN0b3IgbG9uZyBzdXBwb3J0LgotCShSUzYw MDBfQlRJX2Jvb2xfbG9uZyk6IERpdHRvLgotCShSUzYwMDBfQlRJX2Jvb2xfVjJESSk6IERpdHRv LgotCSh1bnNpZ25lZF9WMkRJX3R5cGVfbm9kZSk6IERpdHRvLgotCShib29sX2xvbmdfdHlwZV9u b2RlKTogRGl0dG8uCi0JKGJvb2xfVjJESV90eXBlX25vZGUpOiBEaXR0by4KLQotCSogY29uZmln L3JzNjAwMC9hbHRpdmVjLm1kIChhbHRpdmVjX3ZzZWw8bW9kZT4pOiBBZGQgJyonIHNpbmNlIHdl Ci0JZG9uJ3QgbmVlZCB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIG5vdy4gIFVzZSBWU1ggaW5zdHJ1 Y3Rpb24gaWYKLQktbXZzeC4KLQkoYWx0aXZlY192bXJnaHcpOiBVc2UgVlNYIGluc3RydWN0aW9u IGlmIC1tdnN4LgotCShhbHRpdmVjX3Ztcmdoc2YpOiBEaXR0by4KLQkoYWx0aXZlY192bXJnbHcp OiBEaXR0by4KLQkoYWx0aXZlY192bXJnbHNmKTogRGl0dG8uCi0KLQkqIGRvYy9leHRlbmQudGV4 aSAoUG93ZXJQQyBBbHRpVmVjL1ZTWCBCdWlsdC1pbiBGdW5jdGlvbnMpOgotCURvY3VtZW50IHRo YXQgdW5kZXIgVlNYLCB2ZWN0b3IgZG91YmxlL2xvbmcgYXJlIGF2YWlsYWJsZS4KLQotdGVzdHN1 aXRlLwotCSogZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC1idWlsdGluLTMuYzogTmV3IHRlc3QgZm9y IFZTWCBidWlsdGlucy4KLQotMjAwOS0wNC0yMyAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVy QGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQgKFZFQ19F KTogTmV3IGl0ZXJhdG9yIHRvIGFkZCBWMkRJbW9kZS4KLQkodmVjX2luaXQ8bW9kZT4pOiBVc2Ug VkVDX0UgaW5zdGVhZCBvZiBWRUNfQyBpdGVyYXRvciwgdG8gYWRkCi0JVjJESW1vZGUgc3VwcG9y dC4KLQkodmVjX3NldDxtb2RlPik6IERpdHRvLgotCSh2ZWNfZXh0cmFjdDxtb2RlPik6IERpdHRv LgotCi0JKiBjb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQgKGVhc3lfdmVjdG9yX2NvbnN0YW50 KTogQWRkIHN1cHBvcnQKLQlmb3Igc2V0dGluZyBUSW1vZGUgdG8gMC4KLQotCSogY29uZmlnL3Jz NjAwMC9yczYwMDAub3B0ICgtbXZzeC12ZWN0b3ItbWVtb3J5KTogRGVsZXRlIG9sZCBkZWJ1Zwot CXN3aXRjaCB0aGF0IGlzIG5vIGxvbmdlciB1c2VkLgotCSgtbXZzeC12ZWN0b3ItZmxvYXQpOiBE aXR0by4KLQkoLW12c3gtdmVjdG9yLWRvdWJsZSk6IERpdHRvLgotCSgtbXZzeC12NHNmLWFsdGl2 ZWMtcmVncyk6IERpdHRvLgotCSgtbXJlbG9hZC1mdW5jdGlvbnMpOiBEaXR0by4KLQkoLW1hbGxv dy10aW1vZGUpOiBOZXcgZGVidWcgc3dpdGNoLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5j IChyczYwMDBfaXJhX2NvdmVyX2NsYXNzZXMpOiBOZXcgdGFyZ2V0Ci0JaG9vayBmb3IgSVJBIGNv dmVyIGNsYXNzZXMsIHRvIGtub3cgdGhhdCB1bmRlciBWU1ggdGhlIGZsb2F0IGFuZAotCWFsdGl2 ZWMgcmVnaXN0ZXJzIGFyZSBwYXJ0IG9mIHRoZSBzYW1lIHJlZ2lzdGVyIGNsYXNzLCBidXQgYmVm b3JlCi0JdGhleSB3ZXJlbid0LgotCShUQVJHRVRfSVJBX0NPVkVSX0NMQVNTRVMpOiBTZXQgaXJh IGNvdmVyIGNsYXNzZXMgdGFyZ2V0IGhvb2tkLgotCShyczYwMDBfaGFyZF9yZWdub19ucmVncyk6 IEtleSBvZmYgb2Ygd2hldGhlciBWU1gvQWx0aXZlYyBtZW1vcnkKLQlpbnN0cnVjdGlvbnMgYXJl IHN1cHBvcnRlZCwgYW5kIG5vdCB3aGV0aGVyIHRoZSB2ZWN0b3IgdW5pdCBoYXMKLQlhcml0aG1l dGljIHN1cHBvcnQgdG8gZW5hYmxlIFYyREkvVEkgbW9kZS4KLQkocnM2MDAwX2hhcmRfcmVnbm9f bW9kZV9vayk6IERpdHRvLgotCShyczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2spOiBBZGQg VjJESW1vZGUsIFRJbW9kZSBzdXBwb3J0LgotCURyb3Agc2V2ZXJhbCBvZiB0aGUgZGVidWcgc3dp dGNoZXMuCi0JKHJzNjAwMF9lbWl0X21vdmUpOiBGb3JjZSBUSW1vZGUgY29uc3RhbnRzIHRvIG1l bW9yeSBpZiB3ZSBoYXZlCi0JZWl0aGVyIEFsdGl2ZWMgb3IgVlNYLgotCShyczYwMDBfYnVpbHRp bl9jb252ZXJzaW9uKTogVXNlIGNvcnJlY3QgaW5zbnMgZm9yIFYyREk8LT5WMkRGCi0JY29udmVy c2lvbnMuCi0JKHJzNjAwMF9leHBhbmRfdmVjdG9yX2luaXQpOiBBZGQgVjJESSBzdXBwb3J0Lgot CShyczYwMDBfZXhwYW5kX3ZlY3Rvcl9zZXQpOiBEaXR0by4KLQkoYXZvaWRpbmdfaW5kZXhlZF9h ZGRyZXNzX3ApOiBTaW1wbGlmeSB0ZXN0cyB0byBzYXkgaWYgdGhlIG1vZGUKLQl1c2VzIFZTWC9B bHRpdmVjIG1lbW9yeSBpbnN0cnVjdGlvbnMgd2UgY2FuJ3QgZWxpbWluYXRlIHJlZytyZWcKLQlh ZGRyZXNzaW5nLgotCShyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogTW92ZSBWU1gvQWx0aXZl YyBSRUcrUkVHIHN1cHBvcnQKLQliZWZvcmUgdGhlIGxhcmdlIGludGVnZXIgc3VwcG9ydC4KLQko cnM2MDAwX2xlZ2l0aW1hdGVfYWRkcmVzcyk6IEFkZCBzdXBwb3J0IGZvciBUSW1vZGUgaW4gVlNY L0FsdGl2ZWMKLQlyZWdpc3RlcnMuCi0JKHJzNjAwMF9lbWl0X21vdmUpOiBEaXR0by4KLQkoZGVm X2J1aWx0aW4pOiBDaGFuZ2UgaW50ZXJuYWwgZXJyb3IgbWVzc2FnZSB0byBwcm92aWRlIG1vcmUK LQlpbmZvcm1hdGlvbi4KLQkoYmRlc2NfMmFyZyk6IEFkZCBjb252ZXJzaW9uIGJ1aWx0aW5zLgot CShidWlsdGluX2hhc2hfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24gZm9yIGhhc2hpbmcgYWxsIG9m IHRoZSB0eXBlcwotCWZvciBidWlsdGluIGZ1bmN0aW9ucy4KLQkoYnVpbHRpbl9oYXNoX2VxKTog RGl0dG8uCi0JKGJ1aWx0aW5fZnVuY3Rpb25fdHlwZSk6IERpdHRvLgotCShidWlsdGluX21vZGVf dG9fdHlwZSk6IE5ldyBzdGF0aWMgZm9yIGJ1aWx0aW4gYXJndW1lbnQgaGFzaGluZy4KLQkoYnVp bHRpbl9oYXNoX3RhYmxlKTogRGl0dG8uCi0JKHJzNjAwMF9jb21tb25faW5pdF9idWlsdGlucyk6 IFJld3JpdGUgc28gdGhhdCB0eXBlcyBmb3IgYnVpbHRpbgotCWZ1bmN0aW9ucyBhcmUgb25seSBj cmVhdGVkIHdoZW4gd2UgbmVlZCB0aGVtLCBhbmQgdXNlIGEgaGFzaCB0YWJsZQotCXRvIHN0b3Jl IGFsbCBvZiB0aGUgZGlmZmVyZW50IGFyZ3VtZW50IGNvbWJpbmF0aW9ucyB0aGF0IGFyZQotCWNy ZWF0ZWQuICBBZGQgc3VwcG9ydCBmb3IgVlNYIGNvbnZlcnNpb24gYnVpbHRpbnMuCi0JKHJzNjAw MF9wcmVmZXJyZWRfcmVsb2FkX2NsYXNzKTogQWRkIFRJbW9kZSBzdXBwb3J0LgotCShyZWdfY2xh c3Nlc19jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MpOiBCZSBzdHJpY3RlciBhYm91dCBWU1ggYW5k Ci0JQWx0aXZlYyB2ZWN0b3IgdHlwZXMuCi0JKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIp OiBVc2UgVlNYX01PVkVfTU9ERSwgbm90Ci0JVlNYX1ZFQ1RPUl9NT1ZFX01PREUuCi0JKHJzNjAw MF9oYW5kbGVfYWx0aXZlY19hdHRyaWJ1dGUpOiBBbGxvdyBfX3ZlY3RvciBsb25nIG9uIFZTWC4K LQotCSogY29uZmlnL3JzNjAwMC92c3gubWQgKFZTWF9EKTogTmV3IGl0ZXJhdG9yIGZvciB2ZWN0 b3JzIHdpdGgKLQk2NC1iaXQgZWxlbWVudHMuCi0JKFZTWF9NKTogTmV3IGl0ZXJhdG9yIGZvciAx MjggYml0IHR5cGVzIGZvciBtb3ZlcywgZXhjZXB0IGZvcgotCVRJbW9kZS4KLQkoVlNtLCBWU3Ms IFZTcik6IEFkZCBUSW1vZGUuCi0JKFZTcjQsIFZTcjUpOiBOZXcgbW9kZSBhdHRyaWJ1dGVzIGZv ciBmbG9hdDwtPmRvdWJsZSBjb252ZXJzaW9uLgotCShWU1hfU1BEUCk6IE5ldyBpdGVyYXRvciBm b3IgZmxvYXQ8LT5kb3VibGUgY29udmVyc2lvbi4KLQkoVlNfc3BkcF8qKTogTmV3IG1vZGUgYXR0 cmlidXRlcyBmb3IgZmxvYXQ8LT5kb3VibGUgY29udmVyc2lvbi4KLQkoVU5TUEVDX1ZTWF8qKTog UmVuYW1lIHVuc3BlYyBjb25zdGFudHMgdG8gcmVtb3ZlIFhWIGZyb20gdGhlCi0JbmFtZXMuICBD aGFuZ2UgYWxsIHVzZXJzLgotCSh2c3hfbW92PG1vZGU+KTogRHJvcCBUSW1vZGUgc3VwcG9ydCBo ZXJlLgotCSh2c3hfbW92dGkpOiBOZXcgVEltb2RlIHN1cHBvcnQsIGFsbG93IEdQUnMsIGJ1dCBm YXZvciBWU1gKLQlyZWdpc3RlcnMuCi0JKHZzeF88VlNfc3BkcF9pbnNuPik6IE5ldyBzdXBwb3J0 IGZvciBmbG9hdDwtPmRvdWJsZSBjb252ZXJzaW9ucy4KLQkodnN4X3h2Y3ZkcHNwKTogRGVsZXRl LCBtb3ZlIGludG8gdnN4XzxWU19zcGRwX2luc24+LgotCSh2c3hfeHZjdnNwZHApOiBEaXR0by4K LQkodnN4X3h2Y3Z1eGRzcCk6IE5ldyBjb252ZXJzaW9uIGluc24uCi0JKHZzeF94dmN2c3BzeGRz KTogRGl0dG8uCi0JKHZzeF94dmN2c3B1eGRzKTogRGl0dG8uCi0JKHZzeF9jb25jYXRfPG1vZGU+ KTogR2VuZXJhbGl6ZSBWMkRGIHBlcm11dGUvc3BsYXQgb3BlcmF0aW9ucyB0bwotCWluY2x1ZGUg VjJESS4KLQkodnN4X3NldF88bW9kZT4pOiBEaXR0by4KLQkodnN4X2V4dHJhY3RfPG1vZGU+KTog RGl0dG8uCi0JKHZzeF94eHBlcm1kaV88bW9kZT4pOiBEaXR0by4KLQkodnN4X3NwbGF0PG1vZGU+ KTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFZTWF9WRUNUT1JfTU9WRV9N T0RFKTogRGVsZXRlLgotCShWU1hfTU9WRV9NT0RFKTogQWRkIFRJbW9kZS4KLQkoSVJBX0NPVkVS X0NMQVNTRVMpOiBEZWxldGUuCi0JKElSQV9DT1ZFUl9DTEFTU0VTX1BSRV9WU1gpOiBOZXcgY292 ZXIgY2xhc3NlcyBmb3IgbWFjaGluZXMKLQl3aXRob3V0IFZTWCB3aGVyZSBmbG9hdCBhbmQgYWx0 aXZlYyBhcmUgZGlmZmVyZW50IHJlZ2lzdGVycy4KLQkoSVJBX0NPVkVSX0NMQVNTX1ZTWCk6IE5l dyBjb3ZlciBjbGFzc2VzIGZvciBtYWNoaW5lcyB3aXRoIFZTWAotCXdoZXJlIGZsb2F0IGFuZCBh bHRpdmVjIGFyZSBwYXJ0IG9mIHRoZSBzYW1lIHJlZ2lzdGVyIGNsYXNzLgotCi0JKiBjb25maWcv cnM2MDAwL2FsdGl2ZWMubWQgKFZNMik6IE5ldyBpdGVyYXRvciBmb3IgMTI4LWJpdCB0eXBlcywK LQlleGNlcHQgVEltb2RlLgotCShhbHRpdmVjX21vdjxtb2RlPik6IERyb3AgbW92dGkgbW9kZSBo ZXJlLgotCShhbHRpdmVjX21vdnRpKTogQWRkIG1vdnRpIGluc24sIGFuZCBhbGxvdyBHUFJzLCBi dXQgZmF2b3IgYWx0aXZlYwotCXJlZ2lzdGVycy4KLQotMjAwOS0wNC0xNiAgTWljaGFlbCBNZWlz c25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29uZmlnL3JzNjAwMC9y czYwMDAtcHJvdG9zLmggKHJzNjAwMF9oYXNfaW5kaXJlY3RfanVtcF9wKTogTmV3Ci0JZGVjbGFy YXRpb24uCi0JKHJzNjAwMF9zZXRfaW5kaXJlY3RfanVtcCk6IERpdHRvLgotCi0JKiBjb25maWcv cnM2MDAwL3JzNjAwMC5jIChzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IEFkZAotCWluZGlyZWN0 X2p1bXBfcCBmaWVsZC4KLQkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBXcmFwIHdhcm5pbmcg bWVzc2FnZXMgaW4gTl8oKS4gIElmCi0JLW12c3ggd2FzIGltcGxpY2l0bHkgc2V0LCBkb24ndCBn aXZlIGEgd2FybmluZyBmb3IgLW1zb2Z0LWZsb2F0LAotCWp1c3Qgc2lsZW50bHkgdHVybiBvZmYg dnN4LgotCShyczYwMDBfc2Vjb25kYXJ5X3JlbG9hZF9pbm5lcik6IERvbid0IHVzZSBzdHJpY3Qg cmVnaXN0ZXIKLQljaGVja2luZywgc2luY2UgcHNldWRvcyBtYXkgc3RpbGwgYmUgcHJlc2VudC4K LQkocmVnaXN0ZXJfbW92ZV9jb3N0KTogSWYgLW1kZWJ1Zz1jb3N0LCBwcmludCBvdXQgY29zdCBp bmZvcm1hdGlvbi4KLQkocnM2MDAwX21lbW9yeV9tb3ZlX2Nvc3QpOiBEaXR0by4KLQkocnM2MDAw X2hhc19pbmRpcmVjdF9qdW1wX3ApOiBOZXcgZnVuY3Rpb24sIHJldHVybiB0cnVlIGlmCi0JY3Vy cmVudCBmdW5jdGlvbiBoYXMgYW4gaW5kaXJlY3QganVtcC4KLQkocnM2MDAwX3NldF9pbmRpcmVj dF9qdW1wKTogTmV3IGZ1bmN0aW9uLCBub3RlIHRoYXQgYW4gaW5kaXJlY3QKLQlqdW1wIGhhcyBi ZWVuIGdlbmVyYXRlZC4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGluZGlyZWN0X2p1 bXApOiBOb3RlIHRoYXQgd2UndmUKLQlnZW5lcmF0ZWQgYW4gaW5kaXJlY3QganVtcC4KLQkodGFi bGVqdW1wKTogRGl0dG8uCi0JKGRvbG9vcF9lbmQpOiBEbyBub3QgZ2VuZXJhdGUgZGVjcmVtZW50 IGN0ciBhbmQgYnJhbmNoCi0JaW5zdHJ1Y3Rpb25zIGlmIGFuIGluZGlyZWN0IGp1bXAgaGFzIGJl ZW4gZ2VuZXJhdGVkLgotCi0tLS0gZ2NjL2RvYy9leHRlbmQudGV4aQkocmV2aXNpb24gMTQ2MTE5 KQotKysrIGdjYy9kb2MvZXh0ZW5kLnRleGkJKHJldmlzaW9uIDE0Njc5OCkKLUBAIC03MDk0LDcg KzcwOTQsNyBAQCBpbnN0cnVjdGlvbnMsIGJ1dCBhbGxvdyB0aGUgY29tcGlsZXIgdG8gCi0gKiBN SVBTIExvb25nc29uIEJ1aWx0LWluIEZ1bmN0aW9uczo6Ci0gKiBPdGhlciBNSVBTIEJ1aWx0LWlu IEZ1bmN0aW9uczo6Ci0gKiBwaWNvQ2hpcCBCdWlsdC1pbiBGdW5jdGlvbnM6OgotLSogUG93ZXJQ QyBBbHRpVmVjIEJ1aWx0LWluIEZ1bmN0aW9uczo6Ci0rKiBQb3dlclBDIEFsdGlWZWMvVlNYIEJ1 aWx0LWluIEZ1bmN0aW9uczo6Ci0gKiBTUEFSQyBWSVMgQnVpbHQtaW4gRnVuY3Rpb25zOjoKLSAq IFNQVSBCdWlsdC1pbiBGdW5jdGlvbnM6OgotIEBlbmQgbWVudQotQEAgLTk1NzEsNyArOTU3MSw3 IEBAIEdDQyBkZWZpbmVzIHRoZSBwcmVwcm9jZXNzb3IgbWFjcm8gQGNvZGUKLSB3aGVuIHRoaXMg ZnVuY3Rpb24gaXMgYXZhaWxhYmxlLgotIEBlbmQgdGFibGUKLSAKLS1Abm9kZSBQb3dlclBDIEFs dGlWZWMgQnVpbHQtaW4gRnVuY3Rpb25zCi0rQG5vZGUgUG93ZXJQQyBBbHRpVmVjL1ZTWCBCdWls dC1pbiBGdW5jdGlvbnMKLSBAc3Vic2VjdGlvbiBQb3dlclBDIEFsdGlWZWMgQnVpbHQtaW4gRnVu Y3Rpb25zCi0gCi0gR0NDIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgdGhlIFBvd2VyUEMgZmFt aWx5IG9mIHByb2Nlc3NvcnMgdG8gYWNjZXNzCi1AQCAtOTU5Nyw2ICs5NTk3LDE5IEBAIHZlY3Rv ciBib29sIGludAotIHZlY3RvciBmbG9hdAotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0rSWYgQG9w dGlvbnstbXZzeH0gaXMgdXNlZCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgdmVjdG9yIHR5cGVz IGFyZQotK2ltcGxlbWVudGVkLgotKwotK0BzbWFsbGV4YW1wbGUKLSt2ZWN0b3IgdW5zaWduZWQg bG9uZwotK3ZlY3RvciBzaWduZWQgbG9uZwotK3ZlY3RvciBkb3VibGUKLStAZW5kIHNtYWxsZXhh bXBsZQotKwotK1RoZSBsb25nIHR5cGVzIGFyZSBvbmx5IGltcGxlbWVudGVkIGZvciA2NC1iaXQg Y29kZSBnZW5lcmF0aW9uLCBhbmQKLSt0aGUgbG9uZyB0eXBlIGlzIG9ubHkgdXNlZCBpbiB0aGUg ZmxvYXRpbmcgcG9pbnQvaW50ZWdlciBjb252ZXJzaW9uCi0raW5zdHJ1Y3Rpb25zLgotKwotIEdD QydzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoaWdoLWxldmVsIGxhbmd1YWdlIGludGVyZmFjZSBh dmFpbGFibGUgZnJvbQotIEMgYW5kIEMrKyBjb2RlIGRpZmZlcnMgZnJvbSBNb3Rvcm9sYSdzIGRv Y3VtZW50YXRpb24gaW4gc2V2ZXJhbCB3YXlzLgotIAotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9wb3dlcnBjL3ZzeC1idWlsdGluLTMuYwkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcG93ZXJwYy92c3gtYnVpbHRpbi0zLmMJKHJldmlzaW9uIDE0Njc5OCkK LUBAIC0wLDAgKzEsMjEyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgcG93ZXJw YyotKi0qICYmIGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLXNraXAtaWYgIiIgeyBwb3dlcnBjKi0q LWRhcndpbiogfSB7ICIqIiB9IHsgIiIgfSB9ICovCi0rLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2 ZS10YXJnZXQgcG93ZXJwY192c3hfb2sgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tY3B1 PXBvd2VyNyIgfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHhzZWwiIH0g fSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidnBlcm0iIH0gfSAqLwotKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZyZHBpIiB9IH0gKi8KLSsvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2cmRwaWMiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAieHZyZHBpbSIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJ4dnJkcGlwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg Inh2cmRwaXoiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZyc3Bp IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2cnNwaWMiIH0gfSAq LwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZyc3BpbSIgfSB9ICovCi0rLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dnJzcGlwIiB9IH0gKi8KLSsvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2cnNwaXoiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAieHNyZHBpIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgInhzcmRwaWMiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi eHNyZHBpbSIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4c3JkcGlw IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInhzcmRwaXoiIH0gfSAq LwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHNtYXhkcCIgfSB9ICovCi0rLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4c21pbmRwIiB9IH0gKi8KLSsvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh4bGFuZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJ4eGxhbmRjIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgInh4bG5vciIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4 eGxvciIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4eGx4b3IiIH0g fSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZjbXBlcWRwIiB9IH0gKi8K LSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2Y21wZ3RkcCIgfSB9ICovCi0rLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmNtcGdlZHAiIH0gfSAqLwotKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZjbXBlcXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgInh2Y21wZ3RzcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJ4dmNtcGdlc3AiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAieHhzbGR3aSIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCAiY2FsbCIgfSB9ICovCi0rCi0rZXh0ZXJuIF9fdmVjdG9yIGludCBzaVtdWzRdOwotK2V4 dGVybiBfX3ZlY3RvciBzaG9ydCBzc1tdWzRdOwotK2V4dGVybiBfX3ZlY3RvciBzaWduZWQgY2hh ciBzY1tdWzRdOwotK2V4dGVybiBfX3ZlY3RvciBmbG9hdCBmW11bNF07Ci0rZXh0ZXJuIF9fdmVj dG9yIHVuc2lnbmVkIGludCB1aVtdWzRdOwotK2V4dGVybiBfX3ZlY3RvciB1bnNpZ25lZCBzaG9y dCB1c1tdWzRdOwotK2V4dGVybiBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyIHVjW11bNF07Ci0rZXh0 ZXJuIF9fdmVjdG9yIF9fYm9vbCBpbnQgYmlbXVs0XTsKLStleHRlcm4gX192ZWN0b3IgX19ib29s IHNob3J0IGJzW11bNF07Ci0rZXh0ZXJuIF9fdmVjdG9yIF9fYm9vbCBjaGFyIGJjW11bNF07Ci0r ZXh0ZXJuIF9fdmVjdG9yIF9fcGl4ZWwgcFtdWzRdOwotKyNpZmRlZiBfX1ZTWF9fCi0rZXh0ZXJu IF9fdmVjdG9yIGRvdWJsZSBkW11bNF07Ci0rZXh0ZXJuIF9fdmVjdG9yIGxvbmcgc2xbXVs0XTsK LStleHRlcm4gX192ZWN0b3IgdW5zaWduZWQgbG9uZyB1bFtdWzRdOwotK2V4dGVybiBfX3ZlY3Rv ciBfX2Jvb2wgbG9uZyBibFtdWzRdOwotKyNlbmRpZgotKwotK2ludCBkb19zZWwodm9pZCkKLSt7 Ci0rICBpbnQgaSA9IDA7Ci0rCi0rICBzaVtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWxfNHNp IChzaVtpXVsxXSwgc2lbaV1bMl0sIHNpW2ldWzNdKTsgaSsrOwotKyAgc3NbaV1bMF0gPSBfX2J1 aWx0aW5fdnN4X3h4c2VsXzhoaSAoc3NbaV1bMV0sIHNzW2ldWzJdLCBzc1tpXVszXSk7IGkrKzsK LSsgIHNjW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNlbF8xNnFpIChzY1tpXVsxXSwgc2NbaV1b Ml0sIHNjW2ldWzNdKTsgaSsrOwotKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWxfNHNm IChmW2ldWzFdLCBmW2ldWzJdLCBmW2ldWzNdKTsgaSsrOwotKyAgZFtpXVswXSA9IF9fYnVpbHRp bl92c3hfeHhzZWxfMmRmIChkW2ldWzFdLCBkW2ldWzJdLCBkW2ldWzNdKTsgaSsrOwotKwotKyAg c2lbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4c2VsIChzaVtpXVsxXSwgc2lbaV1bMl0sIGJpW2ld WzNdKTsgaSsrOwotKyAgc3NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4c2VsIChzc1tpXVsxXSwg c3NbaV1bMl0sIGJzW2ldWzNdKTsgaSsrOwotKyAgc2NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4 c2VsIChzY1tpXVsxXSwgc2NbaV1bMl0sIGJjW2ldWzNdKTsgaSsrOwotKyAgZltpXVswXSA9IF9f YnVpbHRpbl92c3hfeHhzZWwgKGZbaV1bMV0sIGZbaV1bMl0sIGJpW2ldWzNdKTsgaSsrOwotKyAg ZFtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWwgKGRbaV1bMV0sIGRbaV1bMl0sIGJsW2ldWzNd KTsgaSsrOwotKwotKyAgc2lbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4c2VsIChzaVtpXVsxXSwg c2lbaV1bMl0sIHVpW2ldWzNdKTsgaSsrOwotKyAgc3NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4 c2VsIChzc1tpXVsxXSwgc3NbaV1bMl0sIHVzW2ldWzNdKTsgaSsrOwotKyAgc2NbaV1bMF0gPSBf X2J1aWx0aW5fdnN4X3h4c2VsIChzY1tpXVsxXSwgc2NbaV1bMl0sIHVjW2ldWzNdKTsgaSsrOwot KyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWwgKGZbaV1bMV0sIGZbaV1bMl0sIHVpW2ld WzNdKTsgaSsrOwotKyAgZFtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWwgKGRbaV1bMV0sIGRb aV1bMl0sIHVsW2ldWzNdKTsgaSsrOwotKwotKyAgcmV0dXJuIGk7Ci0rfQotKwotK2ludCBkb19w ZXJtKHZvaWQpCi0rewotKyAgaW50IGkgPSAwOwotKwotKyAgc2lbaV1bMF0gPSBfX2J1aWx0aW5f dnN4X3ZwZXJtXzRzaSAoc2lbaV1bMV0sIHNpW2ldWzJdLCBzY1tpXVszXSk7IGkrKzsKLSsgIHNz W2ldWzBdID0gX19idWlsdGluX3ZzeF92cGVybV84aGkgKHNzW2ldWzFdLCBzc1tpXVsyXSwgc2Nb aV1bM10pOyBpKys7Ci0rICBzY1tpXVswXSA9IF9fYnVpbHRpbl92c3hfdnBlcm1fMTZxaSAoc2Nb aV1bMV0sIHNjW2ldWzJdLCBzY1tpXVszXSk7IGkrKzsKLSsgIGZbaV1bMF0gPSBfX2J1aWx0aW5f dnN4X3ZwZXJtXzRzZiAoZltpXVsxXSwgZltpXVsyXSwgc2NbaV1bM10pOyBpKys7Ci0rICBkW2ld WzBdID0gX19idWlsdGluX3ZzeF92cGVybV8yZGYgKGRbaV1bMV0sIGRbaV1bMl0sIHNjW2ldWzNd KTsgaSsrOwotKwotKyAgc2lbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3ZwZXJtIChzaVtpXVsxXSwg c2lbaV1bMl0sIHVjW2ldWzNdKTsgaSsrOwotKyAgc3NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3Zw ZXJtIChzc1tpXVsxXSwgc3NbaV1bMl0sIHVjW2ldWzNdKTsgaSsrOwotKyAgc2NbaV1bMF0gPSBf X2J1aWx0aW5fdnN4X3ZwZXJtIChzY1tpXVsxXSwgc2NbaV1bMl0sIHVjW2ldWzNdKTsgaSsrOwot KyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfdnBlcm0gKGZbaV1bMV0sIGZbaV1bMl0sIHVjW2ld WzNdKTsgaSsrOwotKyAgZFtpXVswXSA9IF9fYnVpbHRpbl92c3hfdnBlcm0gKGRbaV1bMV0sIGRb aV1bMl0sIHVjW2ldWzNdKTsgaSsrOwotKwotKyAgcmV0dXJuIGk7Ci0rfQotKwotK2ludCBkb194 eHBlcm0gKHZvaWQpCi0rewotKyAgaW50IGkgPSAwOwotKwotKyAgZFtpXVswXSA9IF9fYnVpbHRp bl92c3hfeHhwZXJtZGlfMmRmIChkW2ldWzFdLCBkW2ldWzJdLCAwKTsgaSsrOwotKyAgZFtpXVsw XSA9IF9fYnVpbHRpbl92c3hfeHhwZXJtZGkgKGRbaV1bMV0sIGRbaV1bMl0sIDEpOyBpKys7Ci0r ICByZXR1cm4gaTsKLSt9Ci0rCi0rZG91YmxlIHgsIHk7Ci0rdm9pZCBkb19jb25jYXQgKHZvaWQp Ci0rewotKyAgZFswXVswXSA9IF9fYnVpbHRpbl92c3hfY29uY2F0XzJkZiAoeCwgeSk7Ci0rfQot KwotK3ZvaWQgZG9fc2V0ICh2b2lkKQotK3sKLSsgIGRbMF1bMF0gPSBfX2J1aWx0aW5fdnN4X3Nl dF8yZGYgKGRbMF1bMV0sIHgsIDApOwotKyAgZFsxXVswXSA9IF9fYnVpbHRpbl92c3hfc2V0XzJk ZiAoZFsxXVsxXSwgeSwgMSk7Ci0rfQotKwotK2V4dGVybiBkb3VibGUgeltdWzRdOwotKwotK2lu dCBkb19tYXRoICh2b2lkKQotK3sKLSsgIGludCBpID0gMDsKLSsKLSsgIGRbaV1bMF0gPSBfX2J1 aWx0aW5fdnN4X3h2cmRwaSAgKGRbaV1bMV0pOyBpKys7Ci0rICBkW2ldWzBdID0gX19idWlsdGlu X3ZzeF94dnJkcGljIChkW2ldWzFdKTsgaSsrOwotKyAgZFtpXVswXSA9IF9fYnVpbHRpbl92c3hf eHZyZHBpbSAoZFtpXVsxXSk7IGkrKzsKLSsgIGRbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h2cmRw aXAgKGRbaV1bMV0pOyBpKys7Ci0rICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94dnJkcGl6IChk W2ldWzFdKTsgaSsrOwotKwotKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHZyc3BpICAoZltp XVsxXSk7IGkrKzsKLSsgIGZbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h2cnNwaWMgKGZbaV1bMV0p OyBpKys7Ci0rICBmW2ldWzBdID0gX19idWlsdGluX3ZzeF94dnJzcGltIChmW2ldWzFdKTsgaSsr OwotKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHZyc3BpcCAoZltpXVsxXSk7IGkrKzsKLSsg IGZbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h2cnNwaXogKGZbaV1bMV0pOyBpKys7Ci0rCi0rICB6 W2ldWzBdID0gX19idWlsdGluX3ZzeF94c3JkcGkgICh6W2ldWzFdKTsgaSsrOwotKyAgeltpXVsw XSA9IF9fYnVpbHRpbl92c3hfeHNyZHBpYyAoeltpXVsxXSk7IGkrKzsKLSsgIHpbaV1bMF0gPSBf X2J1aWx0aW5fdnN4X3hzcmRwaW0gKHpbaV1bMV0pOyBpKys7Ci0rICB6W2ldWzBdID0gX19idWls dGluX3ZzeF94c3JkcGlwICh6W2ldWzFdKTsgaSsrOwotKyAgeltpXVswXSA9IF9fYnVpbHRpbl92 c3hfeHNyZHBpeiAoeltpXVsxXSk7IGkrKzsKLSsgIHpbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3hz bWF4ZHAgKHpbaV1bMV0sIHpbaV1bMF0pOyBpKys7Ci0rICB6W2ldWzBdID0gX19idWlsdGluX3Zz eF94c21pbmRwICh6W2ldWzFdLCB6W2ldWzBdKTsgaSsrOwotKyAgcmV0dXJuIGk7Ci0rfQotKwot K2ludCBkb19jbXAgKHZvaWQpCi0rewotKyAgaW50IGkgPSAwOwotKwotKyAgZFtpXVswXSA9IF9f YnVpbHRpbl92c3hfeHZjbXBlcWRwIChkW2ldWzFdLCBkW2ldWzJdKTsgaSsrOwotKyAgZFtpXVsw XSA9IF9fYnVpbHRpbl92c3hfeHZjbXBndGRwIChkW2ldWzFdLCBkW2ldWzJdKTsgaSsrOwotKyAg ZFtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHZjbXBnZWRwIChkW2ldWzFdLCBkW2ldWzJdKTsgaSsr OwotKwotKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHZjbXBlcXNwIChmW2ldWzFdLCBmW2ld WzJdKTsgaSsrOwotKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHZjbXBndHNwIChmW2ldWzFd LCBmW2ldWzJdKTsgaSsrOwotKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHZjbXBnZXNwIChm W2ldWzFdLCBmW2ldWzJdKTsgaSsrOwotKyAgcmV0dXJuIGk7Ci0rfQotKwotK2ludCBkb19sb2dp Y2FsICh2b2lkKQotK3sKLSsgIGludCBpID0gMDsKLSsKLSsgIHNpW2ldWzBdID0gX19idWlsdGlu X3ZzeF94eGxhbmQgKHNpW2ldWzFdLCBzaVtpXVsyXSk7IGkrKzsKLSsgIHNpW2ldWzBdID0gX19i dWlsdGluX3ZzeF94eGxhbmRjIChzaVtpXVsxXSwgc2lbaV1bMl0pOyBpKys7Ci0rICBzaVtpXVsw XSA9IF9fYnVpbHRpbl92c3hfeHhsbm9yIChzaVtpXVsxXSwgc2lbaV1bMl0pOyBpKys7Ci0rICBz aVtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhsb3IgKHNpW2ldWzFdLCBzaVtpXVsyXSk7IGkrKzsK LSsgIHNpW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGx4b3IgKHNpW2ldWzFdLCBzaVtpXVsyXSk7 IGkrKzsKLSsKLSsgIHNzW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGxhbmQgKHNzW2ldWzFdLCBz c1tpXVsyXSk7IGkrKzsKLSsgIHNzW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGxhbmRjIChzc1tp XVsxXSwgc3NbaV1bMl0pOyBpKys7Ci0rICBzc1tpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhsbm9y IChzc1tpXVsxXSwgc3NbaV1bMl0pOyBpKys7Ci0rICBzc1tpXVswXSA9IF9fYnVpbHRpbl92c3hf eHhsb3IgKHNzW2ldWzFdLCBzc1tpXVsyXSk7IGkrKzsKLSsgIHNzW2ldWzBdID0gX19idWlsdGlu X3ZzeF94eGx4b3IgKHNzW2ldWzFdLCBzc1tpXVsyXSk7IGkrKzsKLSsKLSsgIHNjW2ldWzBdID0g X19idWlsdGluX3ZzeF94eGxhbmQgKHNjW2ldWzFdLCBzY1tpXVsyXSk7IGkrKzsKLSsgIHNjW2ld WzBdID0gX19idWlsdGluX3ZzeF94eGxhbmRjIChzY1tpXVsxXSwgc2NbaV1bMl0pOyBpKys7Ci0r ICBzY1tpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhsbm9yIChzY1tpXVsxXSwgc2NbaV1bMl0pOyBp Kys7Ci0rICBzY1tpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhsb3IgKHNjW2ldWzFdLCBzY1tpXVsy XSk7IGkrKzsKLSsgIHNjW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGx4b3IgKHNjW2ldWzFdLCBz Y1tpXVsyXSk7IGkrKzsKLSsKLSsgIGRbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bGFuZCAoZFtp XVsxXSwgZFtpXVsyXSk7IGkrKzsKLSsgIGRbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bGFuZGMg KGRbaV1bMV0sIGRbaV1bMl0pOyBpKys7Ci0rICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGxu b3IgKGRbaV1bMV0sIGRbaV1bMl0pOyBpKys7Ci0rICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94 eGxvciAoZFtpXVsxXSwgZFtpXVsyXSk7IGkrKzsKLSsgIGRbaV1bMF0gPSBfX2J1aWx0aW5fdnN4 X3h4bHhvciAoZFtpXVsxXSwgZFtpXVsyXSk7IGkrKzsKLSsKLSsgIGZbaV1bMF0gPSBfX2J1aWx0 aW5fdnN4X3h4bGFuZCAoZltpXVsxXSwgZltpXVsyXSk7IGkrKzsKLSsgIGZbaV1bMF0gPSBfX2J1 aWx0aW5fdnN4X3h4bGFuZGMgKGZbaV1bMV0sIGZbaV1bMl0pOyBpKys7Ci0rICBmW2ldWzBdID0g X19idWlsdGluX3ZzeF94eGxub3IgKGZbaV1bMV0sIGZbaV1bMl0pOyBpKys7Ci0rICBmW2ldWzBd ID0gX19idWlsdGluX3ZzeF94eGxvciAoZltpXVsxXSwgZltpXVsyXSk7IGkrKzsKLSsgIGZbaV1b MF0gPSBfX2J1aWx0aW5fdnN4X3h4bHhvciAoZltpXVsxXSwgZltpXVsyXSk7IGkrKzsKLSsgIHJl dHVybiBpOwotK30KLSsKLStpbnQgZG9feHhzbGR3aSAodm9pZCkKLSt7Ci0rICBpbnQgaSA9IDA7 Ci0rCi0rICBzaVtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzbGR3aSAoc2lbaV1bMV0sIHNpW2ld WzJdLCAwKTsgaSsrOwotKyAgc3NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4c2xkd2kgKHNzW2ld WzFdLCBzc1tpXVsyXSwgMSk7IGkrKzsKLSsgIHNjW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNs ZHdpIChzY1tpXVsxXSwgc2NbaV1bMl0sIDIpOyBpKys7Ci0rICB1aVtpXVswXSA9IF9fYnVpbHRp bl92c3hfeHhzbGR3aSAodWlbaV1bMV0sIHVpW2ldWzJdLCAzKTsgaSsrOwotKyAgdXNbaV1bMF0g PSBfX2J1aWx0aW5fdnN4X3h4c2xkd2kgKHVzW2ldWzFdLCB1c1tpXVsyXSwgMCk7IGkrKzsKLSsg IHVjW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNsZHdpICh1Y1tpXVsxXSwgdWNbaV1bMl0sIDEp OyBpKys7Ci0rICBmW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNsZHdpIChmW2ldWzFdLCBmW2ld WzJdLCAyKTsgaSsrOwotKyAgZFtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzbGR3aSAoZFtpXVsx XSwgZFtpXVsyXSwgMyk7IGkrKzsKLSsgIHJldHVybiBpOwotK30KLS0tLSBnY2MvY29uZmlnL3Jz NjAwMC92ZWN0b3IubWQJKHJldmlzaW9uIDE0NjExOSkKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC92 ZWN0b3IubWQJKHJldmlzaW9uIDE0Njc5OCkKLUBAIC0zOSw2ICszOSw5IEBAIChkZWZpbmVfbW9k ZV9pdGVyYXRvciBWRUNfTSBbVjE2UUkgVjhISSAKLSA7OyBWZWN0b3IgY29tcGFyaXNvbiBtb2Rl cwotIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWRUNfQyBbVjE2UUkgVjhISSBWNFNJIFY0U0YgVjJE Rl0pCi0gCi0rOzsgVmVjdG9yIGluaXQvZXh0cmFjdCBtb2RlcwotKyhkZWZpbmVfbW9kZV9pdGVy YXRvciBWRUNfRSBbVjE2UUkgVjhISSBWNFNJIFYyREkgVjRTRiBWMkRGXSkKLSsKLSA7OyBWZWN0 b3IgcmVsb2FkIGl0ZXJhdG9yCi0gKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZFQ19SIFtWMTZRSSBW OEhJIFY0U0kgVjJESSBWNFNGIFYyREYgREYgVEldKQotIAotQEAgLTM0NywzNCArMzUwLDEzIEBA IChkZWZpbmVfZXhwYW5kICJ2ZWN0b3JfZ2V1PG1vZGU+IgotIDs7IE5vdGUgdGhlIGFyZ3VtZW50 cyBmb3IgX19idWlsdGluX2FsdGl2ZWNfdnNlbCBhcmUgb3AyLCBvcDEsIG1hc2sKLSA7OyB3aGlj aCBpcyBpbiB0aGUgcmV2ZXJzZSBvcmRlciB0aGF0IHdlIHdhbnQKLSAoZGVmaW5lX2V4cGFuZCAi dmVjdG9yX3ZzZWw8bW9kZT4iCi0tICBbKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmxvZ2ljYWxf b3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmxvZ2ljYWxfb3BlcmFu ZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIp Ci0tICAgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMyAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpXQotKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rCShp Zl90aGVuX2Vsc2U6VkVDX0wgKG5lIChtYXRjaF9vcGVyYW5kOlZFQ19MIDMgInZsb2dpY2FsX29w ZXJhbmQiICIiKQotKwkJCQkoY29uc3RfaW50IDApKQotKwkJCSAgICAobWF0Y2hfb3BlcmFuZDpW RUNfTCAyICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsJCQkgICAgKG1hdGNoX29wZXJhbmQ6VkVD X0wgMSAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSldCi0gICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19P Ul9WU1hfUCAoPE1PREU+bW9kZSkiCi0tICAiCi0tewotLSAgaWYgKFZFQ1RPUl9VTklUX1ZTWF9Q ICg8TU9ERT5tb2RlKSkKLS0gICAgZW1pdF9pbnNuIChnZW5fdnN4X3ZzZWw8bW9kZT4gKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1szXSwKLS0JCQkJICAgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzFdKSk7 Ci0tICBlbHNlCi0tICAgIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNfdnNlbDxtb2RlPiAob3BlcmFu ZHNbMF0sIG9wZXJhbmRzWzNdLAotLQkJCQkgICAgICAgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzFd KSk7Ci0tICBET05FOwotLX0iKQotLQotLShkZWZpbmVfZXhwYW5kICJ2ZWN0b3JfdnNlbDxtb2Rl PiIKLS0gIFsobWF0Y2hfb3BlcmFuZDpWRUNfSSAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLS0g ICAobWF0Y2hfb3BlcmFuZDpWRUNfSSAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLS0gICAobWF0 Y2hfb3BlcmFuZDpWRUNfSSAyICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLS0gICAobWF0Y2hfb3Bl cmFuZDpWRUNfSSAzICJ2bG9naWNhbF9vcGVyYW5kIiAiIildCi0tICAiVkVDVE9SX1VOSVRfQUxU SVZFQ19QICg8TU9ERT5tb2RlKSIKLS0gICIKLS17Ci0tICBlbWl0X2luc24gKGdlbl9hbHRpdmVj X3ZzZWw8bW9kZT4gKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1szXSwKLS0JCQkJICAgICBvcGVyYW5k c1syXSwgb3BlcmFuZHNbMV0pKTsKLS0gIERPTkU7Ci0tfSIpCi0rICAiIikKLSAKLSAMCi0gOzsg VmVjdG9yIGxvZ2ljYWwgaW5zdHJ1Y3Rpb25zCi1AQCAtNDc1LDE5ICs0NTcsMjMgQEAgKGRlZmlu ZV9leHBhbmQgImZpeHVuc190cnVuYzxtb2RlPjxWRUNfaQotIAwKLSA7OyBWZWN0b3IgaW5pdGlh bGl6YXRpb24sIHNldCwgZXh0cmFjdAotIChkZWZpbmVfZXhwYW5kICJ2ZWNfaW5pdDxtb2RlPiIK LS0gIFsobWF0Y2hfb3BlcmFuZDpWRUNfQyAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLS0gICAo bWF0Y2hfb3BlcmFuZDpWRUNfQyAxICJ2ZWNfaW5pdF9vcGVyYW5kIiAiIildCi0tICAiVkVDVE9S X1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICBbKG1hdGNoX29wZXJhbmQ6 VkVDX0UgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6VkVDX0Ug MSAidmVjX2luaXRfb3BlcmFuZCIgIiIpXQotKyAgIig8TU9ERT5tb2RlID09IFYyREltb2RlCi0r ICAgID8gVkVDVE9SX01FTV9WU1hfUCAoVjJESW1vZGUpCi0rICAgIDogVkVDVE9SX1VOSVRfQUxU SVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkpIgotIHsKLSAgIHJzNjAwMF9leHBhbmRfdmVjdG9y X2luaXQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7Ci0gICBET05FOwotIH0pCi0gCi0gKGRl ZmluZV9leHBhbmQgInZlY19zZXQ8bW9kZT4iCi0tICBbKG1hdGNoX29wZXJhbmQ6VkVDX0MgMCAi dmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rICBbKG1hdGNoX29wZXJhbmQ6VkVDX0UgMCAidmxvZ2lj YWxfb3BlcmFuZCIgIiIpCi0gICAgKG1hdGNoX29wZXJhbmQ6PFZFQ19iYXNlPiAxICJyZWdpc3Rl cl9vcGVyYW5kIiAiIikKLSAgICAobWF0Y2hfb3BlcmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIg IiIpXQotLSAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAg Iig8TU9ERT5tb2RlID09IFYyREltb2RlCi0rICAgID8gVkVDVE9SX01FTV9WU1hfUCAoVjJESW1v ZGUpCi0rICAgIDogVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkpIgot IHsKLSAgIHJzNjAwMF9leHBhbmRfdmVjdG9yX3NldCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd LCBJTlRWQUwgKG9wZXJhbmRzWzJdKSk7Ci0gICBET05FOwotQEAgLTQ5NSw5ICs0ODEsMTEgQEAg KGRlZmluZV9leHBhbmQgInZlY19zZXQ8bW9kZT4iCi0gCi0gKGRlZmluZV9leHBhbmQgInZlY19l eHRyYWN0PG1vZGU+IgotICAgWyhtYXRjaF9vcGVyYW5kOjxWRUNfYmFzZT4gMCAicmVnaXN0ZXJf b3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMSAidmxvZ2ljYWxfb3BlcmFu ZCIgIiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6VkVDX0UgMSAidmxvZ2ljYWxfb3BlcmFuZCIgIiIp Ci0gICAgKG1hdGNoX29wZXJhbmQgMiAiY29uc3RfaW50X29wZXJhbmQiICIiKV0KLS0gICJWRUNU T1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIoPE1PREU+bW9kZSA9 PSBWMkRJbW9kZQotKyAgICA/IFZFQ1RPUl9NRU1fVlNYX1AgKFYyREltb2RlKQotKyAgICA6IFZF Q1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpKSIKLSB7Ci0gICByczYwMDBf ZXhwYW5kX3ZlY3Rvcl9leHRyYWN0IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCi0gCQkJCUlO VFZBTCAob3BlcmFuZHNbMl0pKTsKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1k CShyZXZpc2lvbiAxNDYxMTkpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZAko cmV2aXNpb24gMTQ2Nzk4KQotQEAgLTMyNyw2ICszMjcsOSBAQCAoZGVmaW5lX3ByZWRpY2F0ZSAi ZWFzeV92ZWN0b3JfY29uc3RhbnQiCi0gICBpZiAoVEFSR0VUX1BBSVJFRF9GTE9BVCkKLSAgICAg cmV0dXJuIGZhbHNlOwotIAotKyAgaWYgKChWU1hfVkVDVE9SX01PREUgKG1vZGUpIHx8IG1vZGUg PT0gVEltb2RlKSAmJiB6ZXJvX2NvbnN0YW50IChvcCwgbW9kZSkpCi0rICAgIHJldHVybiB0cnVl OwotKwotICAgaWYgKEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpKQotICAgICB7Ci0gICAgICAg aWYgKHplcm9fY29uc3RhbnQgKG9wLCBtb2RlKSkKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYw MDAtcHJvdG9zLmgJKHJldmlzaW9uIDE0NjExOSkKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYw MDAtcHJvdG9zLmgJKHJldmlzaW9uIDE0Njc5OCkKLUBAIC0xNzYsNiArMTc2LDggQEAgZXh0ZXJu IGludCByczYwMDBfcmVnaXN0ZXJfbW92ZV9jb3N0IChlbgotIAkJCQkgICAgICBlbnVtIHJlZ19j bGFzcywgZW51bSByZWdfY2xhc3MpOwotIGV4dGVybiBpbnQgcnM2MDAwX21lbW9yeV9tb3ZlX2Nv c3QgKGVudW0gbWFjaGluZV9tb2RlLCBlbnVtIHJlZ19jbGFzcywgaW50KTsKLSBleHRlcm4gYm9v bCByczYwMDBfdGxzX3JlZmVyZW5jZWRfcCAocnR4KTsKLStleHRlcm4gYm9vbCByczYwMDBfaGFz X2luZGlyZWN0X2p1bXBfcCAodm9pZCk7Ci0rZXh0ZXJuIHZvaWQgcnM2MDAwX3NldF9pbmRpcmVj dF9qdW1wICh2b2lkKTsKLSBleHRlcm4gdm9pZCByczYwMDBfY29uZGl0aW9uYWxfcmVnaXN0ZXJf dXNhZ2UgKHZvaWQpOwotIAotIC8qIERlY2xhcmUgZnVuY3Rpb25zIGluIHJzNjAwMC1jLmMgKi8K LS0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAtYy5jCShyZXZpc2lvbiAxNDYxMTkpCi0rKysg Z2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLWMuYwkocmV2aXNpb24gMTQ2Nzk4KQotQEAgLTMzNiw3 ICszMzYsMjAgQEAgcnM2MDAwX2NwdV9jcHBfYnVpbHRpbnMgKGNwcF9yZWFkZXIgKnBmaQotICAg aWYgKFRBUkdFVF9OT19MV1NZTkMpCi0gICAgIGJ1aWx0aW5fZGVmaW5lICgiX19OT19MV1NZTkNf XyIpOwotICAgaWYgKFRBUkdFVF9WU1gpCi0tICAgIGJ1aWx0aW5fZGVmaW5lICgiX19WU1hfXyIp OwotKyAgICB7Ci0rICAgICAgYnVpbHRpbl9kZWZpbmUgKCJfX1ZTWF9fIik7Ci0rCi0rICAgICAg LyogRm9yIHRoZSBWU1ggYnVpbHRpbiBmdW5jdGlvbnMgaWRlbnRpY2FsIHRvIEFsdGl2ZWMgZnVu Y3Rpb25zLCBqdXN0IG1hcAotKwkgdGhlIGFsdGl2ZWMgYnVpbHRpbiBpbnRvIHRoZSB2c3ggdmVy c2lvbiAodGhlIGFsdGl2ZWMgZnVuY3Rpb25zCi0rCSBnZW5lcmF0ZSBWU1ggY29kZSBpZiAtbXZz eCkuICAqLwotKyAgICAgIGJ1aWx0aW5fZGVmaW5lICgiX19idWlsdGluX3ZzeF94eGxhbmQ9X19i dWlsdGluX3ZlY19hbmQiKTsKLSsgICAgICBidWlsdGluX2RlZmluZSAoIl9fYnVpbHRpbl92c3hf eHhsYW5kYz1fX2J1aWx0aW5fdmVjX2FuZGMiKTsKLSsgICAgICBidWlsdGluX2RlZmluZSAoIl9f YnVpbHRpbl92c3hfeHhsbm9yPV9fYnVpbHRpbl92ZWNfbm9yIik7Ci0rICAgICAgYnVpbHRpbl9k ZWZpbmUgKCJfX2J1aWx0aW5fdnN4X3h4bG9yPV9fYnVpbHRpbl92ZWNfb3IiKTsKLSsgICAgICBi dWlsdGluX2RlZmluZSAoIl9fYnVpbHRpbl92c3hfeHhseG9yPV9fYnVpbHRpbl92ZWNfeG9yIik7 Ci0rICAgICAgYnVpbHRpbl9kZWZpbmUgKCJfX2J1aWx0aW5fdnN4X3h4c2VsPV9fYnVpbHRpbl92 ZWNfc2VsIik7Ci0rICAgICAgYnVpbHRpbl9kZWZpbmUgKCJfX2J1aWx0aW5fdnN4X3ZwZXJtPV9f YnVpbHRpbl92ZWNfcGVybSIpOwotKyAgICB9Ci0gCi0gICAvKiBNYXkgYmUgb3ZlcnJpZGRlbiBi eSB0YXJnZXQgY29uZmlndXJhdGlvbi4gICovCi0gICBSUzYwMDBfQ1BVX0NQUF9FTkRJQU5fQlVJ TFRJTlMoKTsKLUBAIC00MDAsNyArNDEzLDcgQEAgc3RydWN0IGFsdGl2ZWNfYnVpbHRpbl90eXBl cwotIH07Ci0gCi0gY29uc3Qgc3RydWN0IGFsdGl2ZWNfYnVpbHRpbl90eXBlcyBhbHRpdmVjX292 ZXJsb2FkZWRfYnVpbHRpbnNbXSA9IHsKLS0gIC8qIFVuYXJ5IEFsdGlWZWMgYnVpbHRpbnMuICAq LwotKyAgLyogVW5hcnkgQWx0aVZlYy9WU1ggYnVpbHRpbnMuICAqLwotICAgeyBBTFRJVkVDX0JV SUxUSU5fVkVDX0FCUywgQUxUSVZFQ19CVUlMVElOX0FCU19WMTZRSSwKLSAgICAgUlM2MDAwX0JU SV9WMTZRSSwgUlM2MDAwX0JUSV9WMTZRSSwgMCwgMCB9LAotICAgeyBBTFRJVkVDX0JVSUxUSU5f VkVDX0FCUywgQUxUSVZFQ19CVUlMVElOX0FCU19WOEhJLAotQEAgLTQ5Niw3ICs1MDksNyBAQCBj b25zdCBzdHJ1Y3QgYWx0aXZlY19idWlsdGluX3R5cGVzIGFsdGl2Ci0gICB7IEFMVElWRUNfQlVJ TFRJTl9WRUNfVlVQS0xTQiwgQUxUSVZFQ19CVUlMVElOX1ZVUEtMU0IsCi0gICAgIFJTNjAwMF9C VElfYm9vbF9WOEhJLCBSUzYwMDBfQlRJX2Jvb2xfVjE2UUksIDAsIDAgfSwKLSAKLS0gIC8qIEJp bmFyeSBBbHRpVmVjIGJ1aWx0aW5zLiAgKi8KLSsgIC8qIEJpbmFyeSBBbHRpVmVjL1ZTWCBidWls dGlucy4gICovCi0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfQURELCBBTFRJVkVDX0JVSUxUSU5f VkFERFVCTSwKLSAgICAgUlM2MDAwX0JUSV9WMTZRSSwgUlM2MDAwX0JUSV9ib29sX1YxNlFJLCBS UzYwMDBfQlRJX1YxNlFJLCAwIH0sCi0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfQURELCBBTFRJ VkVDX0JVSUxUSU5fVkFERFVCTSwKLUBAIC0yMjA2LDcgKzIyMTksNyBAQCBjb25zdCBzdHJ1Y3Qg YWx0aXZlY19idWlsdGluX3R5cGVzIGFsdGl2Ci0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfWE9S LCBBTFRJVkVDX0JVSUxUSU5fVlhPUiwKLSAgICAgUlM2MDAwX0JUSV91bnNpZ25lZF9WMTZRSSwg UlM2MDAwX0JUSV91bnNpZ25lZF9WMTZRSSwgUlM2MDAwX0JUSV91bnNpZ25lZF9WMTZRSSwgMCB9 LAotIAotLSAgLyogVGVybmFyeSBBbHRpVmVjIGJ1aWx0aW5zLiAgKi8KLSsgIC8qIFRlcm5hcnkg QWx0aVZlYy9WU1ggYnVpbHRpbnMuICAqLwotICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX0RTVCwg QUxUSVZFQ19CVUlMVElOX0RTVCwKLSAgICAgUlM2MDAwX0JUSV92b2lkLCB+UlM2MDAwX0JUSV91 bnNpZ25lZF9WMTZRSSwgUlM2MDAwX0JUSV9JTlRTSSwgUlM2MDAwX0JUSV9JTlRTSSB9LAotICAg eyBBTFRJVkVDX0JVSUxUSU5fVkVDX0RTVCwgQUxUSVZFQ19CVUlMVElOX0RTVCwKLUBAIC0yNDA3 LDYgKzI0MjAsMTAgQEAgY29uc3Qgc3RydWN0IGFsdGl2ZWNfYnVpbHRpbl90eXBlcyBhbHRpdgot ICAgICBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0ksIFJTNjAwMF9CVElfdW5zaWduZWRfVjhISSwg UlM2MDAwX0JUSV91bnNpZ25lZF9WOEhJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0kgfSwKLSAg IHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19OTVNVQiwgQUxUSVZFQ19CVUlMVElOX1ZOTVNVQkZQLAot ICAgICBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBS UzYwMDBfQlRJX1Y0U0YgfSwKLSsgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19QRVJNLCBBTFRJVkVD X0JVSUxUSU5fVlBFUk1fMkRGLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJE RiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJIH0sCi0rICB7IEFM VElWRUNfQlVJTFRJTl9WRUNfUEVSTSwgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzJESSwKLSsgICAg UlM2MDAwX0JUSV9WMkRJLCBSUzYwMDBfQlRJX1YyREksIFJTNjAwMF9CVElfVjJESSwgUlM2MDAw X0JUSV91bnNpZ25lZF9WMTZRSSB9LAotICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1BFUk0sIEFM VElWRUNfQlVJTFRJTl9WUEVSTV80U0YsCi0gICAgIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JU SV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfdW5zaWduZWRfVjE2UUkgfSwKLSAg IHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19QRVJNLCBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fNFNJLAot QEAgLTI0MzMsMTEgKzI0NTAsMjkgQEAgY29uc3Qgc3RydWN0IGFsdGl2ZWNfYnVpbHRpbl90eXBl cyBhbHRpdgotICAgICBSUzYwMDBfQlRJX2Jvb2xfVjE2UUksIFJTNjAwMF9CVElfYm9vbF9WMTZR SSwgUlM2MDAwX0JUSV9ib29sX1YxNlFJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJIH0sCi0g ICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfUEVSTSwgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzE2UUks Ci0gICAgIFJTNjAwMF9CVElfYm9vbF9WMTZRSSwgUlM2MDAwX0JUSV9ib29sX1YxNlFJLCBSUzYw MDBfQlRJX2Jvb2xfVjE2UUksIFJTNjAwMF9CVElfYm9vbF9WMTZRSSB9LAotKyAgeyBBTFRJVkVD X0JVSUxUSU5fVkVDX1NFTCwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfMkRGLAotKyAgICBSUzYwMDBf QlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX2Jv b2xfVjJESSB9LAotKyAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1NFTCwgQUxUSVZFQ19CVUlMVElO X1ZTRUxfMkRGLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAw X0JUSV9WMkRGLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YyREkgfSwKLSsgIHsgQUxUSVZFQ19CVUlM VElOX1ZFQ19TRUwsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzJERiwKLSsgICAgUlM2MDAwX0JUSV9W MkRGLCBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRJIH0s Ci0rICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfU0VMLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF8yREYs Ci0rICAgIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX1YyREYs IFJTNjAwMF9CVElfVjJERiB9LAotKyAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1NFTCwgQUxUSVZF Q19CVUlMVElOX1ZTRUxfMkRJLAotKyAgICBSUzYwMDBfQlRJX1YyREksIFJTNjAwMF9CVElfVjJE SSwgUlM2MDAwX0JUSV9WMkRJLCBSUzYwMDBfQlRJX2Jvb2xfVjJESSB9LAotKyAgeyBBTFRJVkVD X0JVSUxUSU5fVkVDX1NFTCwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfMkRJLAotKyAgICBSUzYwMDBf QlRJX1YyREksIFJTNjAwMF9CVElfVjJESSwgUlM2MDAwX0JUSV9WMkRJLCBSUzYwMDBfQlRJX3Vu c2lnbmVkX1YyREkgfSwKLSsgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19TRUwsIEFMVElWRUNfQlVJ TFRJTl9WU0VMXzJESSwKLSsgICAgUlM2MDAwX0JUSV9WMkRJLCBSUzYwMDBfQlRJX1YyREksIFJT NjAwMF9CVElfVjJESSwgUlM2MDAwX0JUSV9WMkRJIH0sCi0gICB7IEFMVElWRUNfQlVJTFRJTl9W RUNfU0VMLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF80U0YsCi0gICAgIFJTNjAwMF9CVElfVjRTRiwg UlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfYm9vbF9WNFNJIH0s Ci0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfU0VMLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF80U0Ys Ci0gICAgIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0Ys IFJTNjAwMF9CVElfdW5zaWduZWRfVjRTSSB9LAotICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1NF TCwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfNFNJLAotKyAgICBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAw MF9CVElfVjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YgfSwKLSsgIHsgQUxU SVZFQ19CVUlMVElOX1ZFQ19TRUwsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzRTSSwKLSsgICAgUlM2 MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JU SV9WNFNJIH0sCi0rICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfU0VMLCBBTFRJVkVDX0JVSUxUSU5f VlNFTF80U0ksCi0gICAgIFJTNjAwMF9CVElfVjRTSSwgUlM2MDAwX0JUSV9WNFNJLCBSUzYwMDBf QlRJX1Y0U0ksIFJTNjAwMF9CVElfYm9vbF9WNFNJIH0sCi0gICB7IEFMVElWRUNfQlVJTFRJTl9W RUNfU0VMLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF80U0ksCi0gICAgIFJTNjAwMF9CVElfVjRTSSwg UlM2MDAwX0JUSV9WNFNJLCBSUzYwMDBfQlRJX1Y0U0ksIFJTNjAwMF9CVElfdW5zaWduZWRfVjRT SSB9LAotQEAgLTI4MDUsNiArMjg0MCwzNyBAQCBjb25zdCBzdHJ1Y3QgYWx0aXZlY19idWlsdGlu X3R5cGVzIGFsdGl2Ci0gICAgIFJTNjAwMF9CVElfdm9pZCwgUlM2MDAwX0JUSV91bnNpZ25lZF9W MTZRSSwgUlM2MDAwX0JUSV9JTlRTSSwgflJTNjAwMF9CVElfdW5zaWduZWRfVjE2UUkgfSwKLSAg IHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19TVFZSWEwsIEFMVElWRUNfQlVJTFRJTl9TVFZSWEwsCi0g ICAgIFJTNjAwMF9CVElfdm9pZCwgUlM2MDAwX0JUSV91bnNpZ25lZF9WMTZRSSwgUlM2MDAwX0JU SV9JTlRTSSwgflJTNjAwMF9CVElfVUlOVFFJIH0sCi0rICB7IFZTWF9CVUlMVElOX1ZFQ19YWFNM RFdJLCBWU1hfQlVJTFRJTl9YWFNMRFdJXzE2UUksCi0rICAgIFJTNjAwMF9CVElfVjE2UUksIFJT NjAwMF9CVElfVjE2UUksIFJTNjAwMF9CVElfVjE2UUksIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9 LAotKyAgeyBWU1hfQlVJTFRJTl9WRUNfWFhTTERXSSwgVlNYX0JVSUxUSU5fWFhTTERXSV8xNlFJ LAotKyAgICBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Yx NlFJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJLAotKyAgICBSUzYwMDBfQlRJX05PVF9PUEFR VUUgfSwKLSsgIHsgVlNYX0JVSUxUSU5fVkVDX1hYU0xEV0ksIFZTWF9CVUlMVElOX1hYU0xEV0lf OEhJLAotKyAgICBSUzYwMDBfQlRJX1Y4SEksIFJTNjAwMF9CVElfVjhISSwgUlM2MDAwX0JUSV9W OEhJLCBSUzYwMDBfQlRJX05PVF9PUEFRVUUgfSwKLSsgIHsgVlNYX0JVSUxUSU5fVkVDX1hYU0xE V0ksIFZTWF9CVUlMVElOX1hYU0xEV0lfOEhJLAotKyAgICBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y4 SEksIFJTNjAwMF9CVElfdW5zaWduZWRfVjhISSwgUlM2MDAwX0JUSV91bnNpZ25lZF9WOEhJLAot KyAgICBSUzYwMDBfQlRJX05PVF9PUEFRVUUgfSwKLSsgIHsgVlNYX0JVSUxUSU5fVkVDX1hYU0xE V0ksIFZTWF9CVUlMVElOX1hYU0xEV0lfNFNJLAotKyAgICBSUzYwMDBfQlRJX1Y0U0ksIFJTNjAw MF9CVElfVjRTSSwgUlM2MDAwX0JUSV9WNFNJLCBSUzYwMDBfQlRJX05PVF9PUEFRVUUgfSwKLSsg IHsgVlNYX0JVSUxUSU5fVkVDX1hYU0xEV0ksIFZTWF9CVUlMVElOX1hYU0xEV0lfNFNJLAotKyAg ICBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0ksIFJTNjAwMF9CVElfdW5zaWduZWRfVjRTSSwgUlM2 MDAwX0JUSV91bnNpZ25lZF9WNFNJLAotKyAgICBSUzYwMDBfQlRJX05PVF9PUEFRVUUgfSwKLSsg IHsgVlNYX0JVSUxUSU5fVkVDX1hYU0xEV0ksIFZTWF9CVUlMVElOX1hYU0xEV0lfMkRJLAotKyAg ICBSUzYwMDBfQlRJX1YyREksIFJTNjAwMF9CVElfVjJESSwgUlM2MDAwX0JUSV9WMkRJLCBSUzYw MDBfQlRJX05PVF9PUEFRVUUgfSwKLSsgIHsgVlNYX0JVSUxUSU5fVkVDX1hYU0xEV0ksIFZTWF9C VUlMVElOX1hYU0xEV0lfMkRJLAotKyAgICBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YyREksIFJTNjAw MF9CVElfdW5zaWduZWRfVjJESSwgUlM2MDAwX0JUSV91bnNpZ25lZF9WMkRJLAotKyAgICBSUzYw MDBfQlRJX05PVF9PUEFRVUUgfSwKLSsgIHsgVlNYX0JVSUxUSU5fVkVDX1hYU0xEV0ksIFZTWF9C VUlMVElOX1hYU0xEV0lfNFNGLAotKyAgICBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRT RiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX05PVF9PUEFRVUUgfSwKLSsgIHsgVlNYX0JV SUxUSU5fVkVDX1hYU0xEV0ksIFZTWF9CVUlMVElOX1hYU0xEV0lfMkRGLAotKyAgICBSUzYwMDBf QlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX05P VF9PUEFRVUUgfSwKLSsgIHsgVlNYX0JVSUxUSU5fVkVDX1hYUEVSTURJLCBWU1hfQlVJTFRJTl9Y WFBFUk1ESV8yREYsCi0rICAgIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYw MDBfQlRJX1YyREYsIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9LAotKyAgeyBWU1hfQlVJTFRJTl9W RUNfWFhQRVJNREksIFZTWF9CVUlMVElOX1hYUEVSTURJXzJESSwKLSsgICAgUlM2MDAwX0JUSV9W MkRJLCBSUzYwMDBfQlRJX1YyREksIFJTNjAwMF9CVElfVjJESSwgUlM2MDAwX0JUSV9OT1RfT1BB UVVFIH0sCi0rICB7IFZTWF9CVUlMVElOX1ZFQ19YWFBFUk1ESSwgVlNYX0JVSUxUSU5fWFhQRVJN RElfMkRJLAotKyAgICBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YyREksIFJTNjAwMF9CVElfdW5zaWdu ZWRfVjJESSwgUlM2MDAwX0JUSV91bnNpZ25lZF9WMkRJLAotKyAgICBSUzYwMDBfQlRJX05PVF9P UEFRVUUgfSwKLSAKLSAgIC8qIFByZWRpY2F0ZXMuICAqLwotICAgeyBBTFRJVkVDX0JVSUxUSU5f VkNNUEdUX1AsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVQl9QLAotQEAgLTMxMDgsNiArMzE3NCwx MCBAQCBhbHRpdmVjX3Jlc29sdmVfb3ZlcmxvYWRlZF9idWlsdGluICh0cmVlCi0gCWdvdG8gYmFk OwotICAgICAgIHN3aXRjaCAoVFlQRV9NT0RFICh0eXBlKSkKLSAJewotKwkgIGNhc2UgREltb2Rl OgotKwkgICAgdHlwZSA9ICh1bnNpZ25lZF9wID8gdW5zaWduZWRfVjJESV90eXBlX25vZGUgOiBW MkRJX3R5cGVfbm9kZSk7Ci0rCSAgICBzaXplID0gMjsKLSsJICAgIGJyZWFrOwotIAkgIGNhc2Ug U0ltb2RlOgotIAkgICAgdHlwZSA9ICh1bnNpZ25lZF9wID8gdW5zaWduZWRfVjRTSV90eXBlX25v ZGUgOiBWNFNJX3R5cGVfbm9kZSk7Ci0gCSAgICBzaXplID0gNDsKLUBAIC0zMTIxLDYgKzMxOTEs NyBAQCBhbHRpdmVjX3Jlc29sdmVfb3ZlcmxvYWRlZF9idWlsdGluICh0cmVlCi0gCSAgICBzaXpl ID0gMTY7Ci0gCSAgICBicmVhazsKLSAJICBjYXNlIFNGbW9kZTogdHlwZSA9IFY0U0ZfdHlwZV9u b2RlOyBzaXplID0gNDsgYnJlYWs7Ci0rCSAgY2FzZSBERm1vZGU6IHR5cGUgPSBWMkRGX3R5cGVf bm9kZTsgc2l6ZSA9IDI7IGJyZWFrOwotIAkgIGRlZmF1bHQ6Ci0gCSAgICBnb3RvIGJhZDsKLSAJ fQotLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQJKHJldmlzaW9uIDE0NjExOSkKLSsr KyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0CShyZXZpc2lvbiAxNDY3OTgpCi1AQCAtMTE5 LDE4ICsxMTksNiBAQCBtdnN4Ci0gVGFyZ2V0IFJlcG9ydCBNYXNrKFZTWCkKLSBVc2UgdmVjdG9y L3NjYWxhciAoVlNYKSBpbnN0cnVjdGlvbnMKLSAKLS1tdnN4LXZlY3Rvci1tZW1vcnkKLS1UYXJn ZXQgVW5kb2N1bWVudGVkIFJlcG9ydCBWYXIoVEFSR0VUX1ZTWF9WRUNUT1JfTUVNT1JZKSBJbml0 KC0xKQotLTsgSWYgLW12c3gsIHVzZSBWU1ggdmVjdG9yIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25z IGluc3RlYWQgb2YgQWx0aXZlYyBpbnN0cnVjdGlvbnMKLS0KLS1tdnN4LXZlY3Rvci1mbG9hdAot LVRhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihUQVJHRVRfVlNYX1ZFQ1RPUl9GTE9BVCkg SW5pdCgtMSkKLS07IElmIC1tdnN4LCB1c2UgVlNYIGFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25zIGZv ciBmbG9hdCB2ZWN0b3JzIChvbiBieSBkZWZhdWx0KQotLQotLW12c3gtdmVjdG9yLWRvdWJsZQot LVRhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihUQVJHRVRfVlNYX1ZFQ1RPUl9ET1VCTEUp IEluaXQoLTEpCi0tOyBJZiAtbXZzeCwgdXNlIFZTWCBhcml0aG1ldGljIGluc3RydWN0aW9ucyBm b3IgZG91YmxlIHZlY3RvcnMgKG9uIGJ5IGRlZmF1bHQpCi0tCi0gbXZzeC1zY2FsYXItZG91Ymxl Ci0gVGFyZ2V0IFVuZG9jdW1lbnRlZCBSZXBvcnQgVmFyKFRBUkdFVF9WU1hfU0NBTEFSX0RPVUJM RSkgSW5pdCgtMSkKLSA7IElmIC1tdnN4LCB1c2UgVlNYIGFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25z IGZvciBzY2FsYXIgZG91YmxlIChvbiBieSBkZWZhdWx0KQotQEAgLTEzOSwxOCArMTI3LDE0IEBA IG12c3gtc2NhbGFyLW1lbW9yeQotIFRhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihUQVJH RVRfVlNYX1NDQUxBUl9NRU1PUlkpCi0gOyBJZiAtbXZzeCwgdXNlIFZTWCBzY2FsYXIgbWVtb3J5 IHJlZmVyZW5jZSBpbnN0cnVjdGlvbnMgZm9yIHNjYWxhciBkb3VibGUgKG9mZiBieSBkZWZhdWx0 KQotIAotLW12c3gtdjRzZi1hbHRpdmVjLXJlZ3MKLS1UYXJnZXQgVW5kb2N1bWVudGVkIFJlcG9y dCBWYXIoVEFSR0VUX1Y0U0ZfQUxUSVZFQ19SRUdTKSBJbml0KC0xKQotLTsgSWYgLW12c3gsIHBy ZWZlciBWNFNGIHR5cGVzIHRvIHVzZSBBbHRpdmVjIHJlZ3MgYW5kIG5vdCB0aGUgZmxvYXRpbmcg cmVnaXN0ZXJzCi0tCi0tbXJlbG9hZC1mdW5jdGlvbnMKLS1UYXJnZXQgVW5kb2N1bWVudGVkIFJl cG9ydCBWYXIoVEFSR0VUX1JFTE9BRF9GVU5DVElPTlMpIEluaXQoLTEpCi0tOyBJZiAtbXZzeCBv ciAtbWFsdGl2ZWMsIGVuYWJsZSByZWxvYWQgZnVuY3Rpb25zCi0tCi0gbXBvd2VyNy1hZGp1c3Qt Y29zdAotIFRhcmdldCBVbmRvY3VtZW50ZWQgVmFyKFRBUkdFVF9QT1dFUjdfQURKVVNUX0NPU1Qp Ci0gOyBBZGQgZXh0cmEgY29zdCBmb3Igc2V0dGluZyBDUiByZWdpc3RlcnMgYmVmb3JlIGEgYnJh bmNoIGxpa2UgaXMgZG9uZSBmb3IgUG93ZXI1Ci0gCi0rbWFsbG93LXRpbW9kZQotK1RhcmdldCBV bmRvY3VtZW50ZWQgVmFyKFRBUkdFVF9BTExPV19USU1PREUpCi0rOyBBbGxvdyBWU1gvQWx0aXZl YyB0byB0YXJnZXQgbG9hZGluZyBUSW1vZGUgdmFyaWFibGVzLgotKwotIG1kaXNhbGxvdy1mbG9h dC1pbi1sci1jdHIKLSBUYXJnZXQgVW5kb2N1bWVudGVkIFZhcihUQVJHRVRfRElTQUxMT1dfRkxP QVRfSU5fTFJfQ1RSKSBJbml0KC0xKQotIDsgRGlzYWxsb3cgZmxvYXRpbmcgcG9pbnQgaW4gTFIg b3IgQ1RSLCBjYXVzZXMgc29tZSByZWxvYWQgYnVncwotLS0tIGdjYy9jb25maWcvcnM2MDAwL3Jz NjAwMC5jCShyZXZpc2lvbiAxNDYxMTkpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMJ KHJldmlzaW9uIDE0Njc5OCkKLUBAIC0xMzAsNiArMTMwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgbWFj aGluZV9mdW5jdGlvbiBHVFkoKCkpCi0gICAgICA2NC1iaXRzIHdpZGUgYW5kIGlzIGFsbG9jYXRl ZCBlYXJseSBlbm91Z2ggc28gdGhhdCB0aGUgb2Zmc2V0Ci0gICAgICBkb2VzIG5vdCBvdmVyZmxv dyB0aGUgMTYtYml0IGxvYWQvc3RvcmUgb2Zmc2V0IGZpZWxkLiAgKi8KLSAgIHJ0eCBzZG1vZGVf c3RhY2tfc2xvdDsKLSsgIC8qIFdoZXRoZXIgYW4gaW5kaXJlY3QganVtcCBvciB0YWJsZSBqdW1w IHdhcyBnZW5lcmF0ZWQuICAqLwotKyAgYm9vbCBpbmRpcmVjdF9qdW1wX3A7Ci0gfSBtYWNoaW5l X2Z1bmN0aW9uOwotIAotIC8qIFRhcmdldCBjcHUgdHlwZSAqLwotQEAgLTkxNyw2ICs5MTksMTEg QEAgc3RhdGljIHJ0eCByczYwMDBfZXhwYW5kX2Jpbm9wX2J1aWx0aW4gKAotIHN0YXRpYyBydHgg cnM2MDAwX2V4cGFuZF90ZXJub3BfYnVpbHRpbiAoZW51bSBpbnNuX2NvZGUsIHRyZWUsIHJ0eCk7 Ci0gc3RhdGljIHJ0eCByczYwMDBfZXhwYW5kX2J1aWx0aW4gKHRyZWUsIHJ0eCwgcnR4LCBlbnVt IG1hY2hpbmVfbW9kZSwgaW50KTsKLSBzdGF0aWMgdm9pZCBhbHRpdmVjX2luaXRfYnVpbHRpbnMg KHZvaWQpOwotK3N0YXRpYyB1bnNpZ25lZCBidWlsdGluX2hhc2hfZnVuY3Rpb24gKGNvbnN0IHZv aWQgKik7Ci0rc3RhdGljIGludCBidWlsdGluX2hhc2hfZXEgKGNvbnN0IHZvaWQgKiwgY29uc3Qg dm9pZCAqKTsKLStzdGF0aWMgdHJlZSBidWlsdGluX2Z1bmN0aW9uX3R5cGUgKGVudW0gbWFjaGlu ZV9tb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSwKLSsJCQkJICAgZW51bSBtYWNoaW5lX21vZGUsIGVu dW0gbWFjaGluZV9tb2RlLAotKwkJCQkgICBjb25zdCBjaGFyICpuYW1lKTsKLSBzdGF0aWMgdm9p ZCByczYwMDBfY29tbW9uX2luaXRfYnVpbHRpbnMgKHZvaWQpOwotIHN0YXRpYyB2b2lkIHJzNjAw MF9pbml0X2xpYmZ1bmNzICh2b2lkKTsKLSAKLUBAIC0xMDE4LDYgKzEwMjUsOCBAQCBzdGF0aWMg ZW51bSByZWdfY2xhc3MgcnM2MDAwX3NlY29uZGFyeV9yCi0gCQkJCQkgICAgICAgZW51bSBtYWNo aW5lX21vZGUsCi0gCQkJCQkgICAgICAgc3RydWN0IHNlY29uZGFyeV9yZWxvYWRfaW5mbyAqKTsK LSAKLStzdGF0aWMgY29uc3QgZW51bSByZWdfY2xhc3MgKnJzNjAwMF9pcmFfY292ZXJfY2xhc3Nl cyAodm9pZCk7Ci0rCi0gY29uc3QgaW50IElOU05fTk9UX0FWQUlMQUJMRSA9IC0xOwotIHN0YXRp YyBlbnVtIG1hY2hpbmVfbW9kZSByczYwMDBfZWhfcmV0dXJuX2ZpbHRlcl9tb2RlICh2b2lkKTsK LSAKLUBAIC0xMDMzLDYgKzEwNDIsMTYgQEAgc3RydWN0IHRvY19oYXNoX3N0cnVjdCBHVFkoKCkp Ci0gfTsKLSAKLSBzdGF0aWMgR1RZICgocGFyYW1faXMgKHN0cnVjdCB0b2NfaGFzaF9zdHJ1Y3Qp KSkgaHRhYl90IHRvY19oYXNoX3RhYmxlOwotKwotKy8qIEhhc2ggdGFibGUgdG8ga2VlcCB0cmFj ayBvZiB0aGUgYXJndW1lbnQgdHlwZXMgZm9yIGJ1aWx0aW4gZnVuY3Rpb25zLiAgKi8KLSsKLStz dHJ1Y3QgYnVpbHRpbl9oYXNoX3N0cnVjdCBHVFkoKCkpCi0rewotKyAgdHJlZSB0eXBlOwotKyAg ZW51bSBtYWNoaW5lX21vZGUgbW9kZVs0XTsJLyogcmV0dXJuIHZhbHVlICsgMyBhcmd1bWVudHMg Ki8KLSt9OwotKwotK3N0YXRpYyBHVFkgKChwYXJhbV9pcyAoc3RydWN0IGJ1aWx0aW5faGFzaF9z dHJ1Y3QpKSkgaHRhYl90IGJ1aWx0aW5faGFzaF90YWJsZTsKLSAMCi0gLyogRGVmYXVsdCByZWdp c3RlciBuYW1lcy4gICovCi0gY2hhciByczYwMDBfcmVnX25hbWVzW11bOF0gPQotQEAgLTEzNTAs NiArMTM2OSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGFsdF9yZWdfbmFtZXNbXVs4XSA9Ci0gI3Vu ZGVmIFRBUkdFVF9TRUNPTkRBUllfUkVMT0FECi0gI2RlZmluZSBUQVJHRVRfU0VDT05EQVJZX1JF TE9BRCByczYwMDBfc2Vjb25kYXJ5X3JlbG9hZAotIAotKyN1bmRlZiBUQVJHRVRfSVJBX0NPVkVS X0NMQVNTRVMKLSsjZGVmaW5lIFRBUkdFVF9JUkFfQ09WRVJfQ0xBU1NFUyByczYwMDBfaXJhX2Nv dmVyX2NsYXNzZXMKLSsKLSBzdHJ1Y3QgZ2NjX3RhcmdldCB0YXJnZXRtID0gVEFSR0VUX0lOSVRJ QUxJWkVSOwotIAwKLSAvKiBSZXR1cm4gbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGhhcmQgcmVncyBu ZWVkZWQgc3RhcnRpbmcgYXQgcmVnIFJFR05PCi1AQCAtMTM3MCw3ICsxMzkyLDcgQEAgcnM2MDAw X2hhcmRfcmVnbm9fbnJlZ3NfaW50ZXJuYWwgKGludCByZQotICAgdW5zaWduZWQgSE9TVF9XSURF X0lOVCByZWdfc2l6ZTsKLSAKLSAgIGlmIChGUF9SRUdOT19QIChyZWdubykpCi0tICAgIHJlZ19z aXplID0gKFZFQ1RPUl9VTklUX1ZTWF9QIChtb2RlKQotKyAgICByZWdfc2l6ZSA9IChWRUNUT1Jf TUVNX1ZTWF9QIChtb2RlKQotIAkJPyBVTklUU19QRVJfVlNYX1dPUkQKLSAJCTogVU5JVFNfUEVS X0ZQX1dPUkQpOwotIAotQEAgLTE0NTIsNyArMTQ3NCw3IEBAIHJzNjAwMF9oYXJkX3JlZ25vX21v ZGVfb2sgKGludCByZWdubywgZW4KLSAKLSAgIC8qIEFsdGlWZWMgb25seSBpbiBBbGR5VmVjIHJl Z2lzdGVycy4gICovCi0gICBpZiAoQUxUSVZFQ19SRUdOT19QIChyZWdubykpCi0tICAgIHJldHVy biBWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChtb2RlKTsKLSsgICAgcmV0dXJuIFZFQ1RP Ul9NRU1fQUxUSVZFQ19PUl9WU1hfUCAobW9kZSk7Ci0gCi0gICAvKiAuLi5idXQgR1BScyBjYW4g aG9sZCBTSU1EIGRhdGEgb24gdGhlIFNQRSBpbiBvbmUgcmVnaXN0ZXIuICAqLwotICAgaWYgKFNQ RV9TSU1EX1JFR05PX1AgKHJlZ25vKSAmJiBUQVJHRVRfU1BFICYmIFNQRV9WRUNUT1JfTU9ERSAo bW9kZSkpCi1AQCAtMTYxMywxMCArMTYzNSw4IEBAIHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9k ZV9vayAodm9pZCkKLSAgICAgICByczYwMDBfdmVjdG9yX3JlbG9hZFttXVsxXSA9IENPREVfRk9S X25vdGhpbmc7Ci0gICAgIH0KLSAKLS0gIC8qIFRPRE8sIGFkZCBUSS9WMkRJIG1vZGUgZm9yIG1v dmluZyBkYXRhIGlmIEFsdGl2ZWMgb3IgVlNYLiAgKi8KLS0KLSAgIC8qIFYyREYgbW9kZSwgVlNY IG9ubHkuICAqLwotLSAgaWYgKGZsb2F0X3AgJiYgVEFSR0VUX1ZTWCAmJiBUQVJHRVRfVlNYX1ZF Q1RPUl9ET1VCTEUpCi0rICBpZiAoZmxvYXRfcCAmJiBUQVJHRVRfVlNYKQotICAgICB7Ci0gICAg ICAgcnM2MDAwX3ZlY3Rvcl91bml0W1YyREZtb2RlXSA9IFZFQ1RPUl9WU1g7Ci0gICAgICAgcnM2 MDAwX3ZlY3Rvcl9tZW1bVjJERm1vZGVdID0gVkVDVE9SX1ZTWDsKLUBAIC0xNjI0LDE3ICsxNjQ0 LDExIEBAIHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayAodm9pZCkKLSAgICAgfQotIAot ICAgLyogVjRTRiBtb2RlLCBlaXRoZXIgVlNYIG9yIEFsdGl2ZWMuICAqLwotLSAgaWYgKGZsb2F0 X3AgJiYgVEFSR0VUX1ZTWCAmJiBUQVJHRVRfVlNYX1ZFQ1RPUl9GTE9BVCkKLSsgIGlmIChmbG9h dF9wICYmIFRBUkdFVF9WU1gpCi0gICAgIHsKLSAgICAgICByczYwMDBfdmVjdG9yX3VuaXRbVjRT Rm1vZGVdID0gVkVDVE9SX1ZTWDsKLS0gICAgICBpZiAoVEFSR0VUX1ZTWF9WRUNUT1JfTUVNT1JZ IHx8ICFUQVJHRVRfQUxUSVZFQykKLS0JewotLQkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjRTRm1v ZGVdID0gMzI7Ci0tCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjRTRm1vZGVdID0gVkVDVE9SX1ZTWDsK LS0JfSBlbHNlIHsKLS0JICByczYwMDBfdmVjdG9yX2FsaWduW1Y0U0Ztb2RlXSA9IDEyODsKLS0J ICByczYwMDBfdmVjdG9yX21lbVtWNFNGbW9kZV0gPSBWRUNUT1JfQUxUSVZFQzsKLS0gICAgICB9 Ci0rICAgICAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWNFNGbW9kZV0gPSAzMjsKLSsgICAgICByczYw MDBfdmVjdG9yX21lbVtWNFNGbW9kZV0gPSBWRUNUT1JfVlNYOwotICAgICB9Ci0gICBlbHNlIGlm IChmbG9hdF9wICYmIFRBUkdFVF9BTFRJVkVDKQotICAgICB7Ci1AQCAtMTY1NSw3ICsxNjY5LDcg QEAgcnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rICh2b2lkKQotICAgICAgIHJzNjAwMF92 ZWN0b3JfcmVnX2NsYXNzW1Y4SEltb2RlXSA9IEFMVElWRUNfUkVHUzsKLSAgICAgICByczYwMDBf dmVjdG9yX3JlZ19jbGFzc1tWNFNJbW9kZV0gPSBBTFRJVkVDX1JFR1M7Ci0gCi0tICAgICAgaWYg KFRBUkdFVF9WU1ggJiYgVEFSR0VUX1ZTWF9WRUNUT1JfTUVNT1JZKQotKyAgICAgIGlmIChUQVJH RVRfVlNYKQotIAl7Ci0gCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjRTSW1vZGVdID0gVkVDVE9SX1ZT WDsKLSAJICByczYwMDBfdmVjdG9yX21lbVtWOEhJbW9kZV0gPSBWRUNUT1JfVlNYOwotQEAgLTE2 NzUsNiArMTY4OSwyMyBAQCByczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2sgKHZvaWQpCi0g CX0KLSAgICAgfQotIAotKyAgLyogVjJESW1vZGUsIHByZWZlciB2c3ggb3ZlciBhbHRpdmVjLCBz aW5jZSB0aGUgbWFpbiB1c2Ugd2lsbCBiZSBmb3IKLSsgICAgIHZlY3Rvcml6ZWQgZmxvYXRpbmcg cG9pbnQgY29udmVyc2lvbnMuICAqLwotKyAgaWYgKGZsb2F0X3AgJiYgVEFSR0VUX1ZTWCkKLSsg ICAgewotKyAgICAgIHJzNjAwMF92ZWN0b3JfbWVtW1YyREltb2RlXSA9IFZFQ1RPUl9WU1g7Ci0r ICAgICAgcnM2MDAwX3ZlY3Rvcl91bml0W1YyREltb2RlXSA9IFZFQ1RPUl9OT05FOwotKyAgICAg IHJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzW1YyREltb2RlXSA9IHZzeF9yYzsKLSsgICAgICByczYw MDBfdmVjdG9yX2FsaWduW1YyREltb2RlXSA9IDY0OwotKyAgICB9Ci0rICBlbHNlIGlmIChUQVJH RVRfQUxUSVZFQykKLSsgICAgewotKyAgICAgIHJzNjAwMF92ZWN0b3JfbWVtW1YyREltb2RlXSA9 IFZFQ1RPUl9BTFRJVkVDOwotKyAgICAgIHJzNjAwMF92ZWN0b3JfdW5pdFtWMkRJbW9kZV0gPSBW RUNUT1JfTk9ORTsKLSsgICAgICByczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWMkRJbW9kZV0gPSBB TFRJVkVDX1JFR1M7Ci0rICAgICAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWMkRJbW9kZV0gPSAxMjg7 Ci0rICAgIH0KLSsKLSAgIC8qIERGbW9kZSwgc2VlIGlmIHdlIHdhbnQgdG8gdXNlIHRoZSBWU1gg dW5pdC4gICovCi0gICBpZiAoZmxvYXRfcCAmJiBUQVJHRVRfVlNYICYmIFRBUkdFVF9WU1hfU0NB TEFSX0RPVUJMRSkKLSAgICAgewotQEAgLTE2ODQsMTYgKzE3MTUsMzAgQEAgcnM2MDAwX2luaXRf aGFyZF9yZWdub19tb2RlX29rICh2b2lkKQotIAk9IChUQVJHRVRfVlNYX1NDQUxBUl9NRU1PUlkg PyBWRUNUT1JfVlNYIDogVkVDVE9SX05PTkUpOwotICAgICB9Ci0gCi0tICAvKiBUT0RPLCBhZGQg U1BFIGFuZCBwYWlyZWQgZmxvYXRpbmcgcG9pbnQgdmVjdG9yIHN1cHBvcnQuICAqLwotKyAgLyog VEltb2RlLiAgVW50aWwgdGhpcyBpcyBkZWJ1Z2dlZCwgb25seSBhZGQgaXQgdW5kZXIgc3dpdGNo IGNvbnRyb2wuICAqLwotKyAgaWYgKFRBUkdFVF9BTExPV19USU1PREUpCi0rICAgIHsKLSsgICAg ICBpZiAoZmxvYXRfcCAmJiBUQVJHRVRfVlNYKQotKwl7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9tZW1b VEltb2RlXSA9IFZFQ1RPUl9WU1g7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl91bml0W1RJbW9kZV0gPSBW RUNUT1JfTk9ORTsKLSsJICByczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tUSW1vZGVdID0gdnN4X3Jj OwotKwkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVEltb2RlXSA9IDY0OwotKwl9Ci0rICAgICAgZWxz ZSBpZiAoVEFSR0VUX0FMVElWRUMpCi0rCXsKLSsJICByczYwMDBfdmVjdG9yX21lbVtUSW1vZGVd ID0gVkVDVE9SX0FMVElWRUM7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl91bml0W1RJbW9kZV0gPSBWRUNU T1JfTk9ORTsKLSsJICByczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tUSW1vZGVdID0gQUxUSVZFQ19S RUdTOwotKwkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVEltb2RlXSA9IDEyODsKLSsJfQotKyAgICB9 Ci0rCi0rICAvKiBUT0RPIGFkZCBTUEUgYW5kIHBhaXJlZCBmbG9hdGluZyBwb2ludCB2ZWN0b3Ig c3VwcG9ydC4gICovCi0gCi0gICAvKiBTZXQgdGhlIFZTWCByZWdpc3RlciBjbGFzc2VzLiAgKi8K LS0KLS0gIC8qIEZvciBWNFNGLCBwcmVmZXIgdGhlIEFsdGl2ZWMgcmVnaXN0ZXJzLCBiZWNhdXNl IHRoZXJlIGFyZSBhIGZldyBvcGVyYXRpb25zCi0tICAgICB0aGF0IHdhbnQgdG8gdXNlIEFsdGl2 ZWMgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIFZTWC4gICovCi0gICByczYwMDBfdmVjdG9yX3JlZ19j bGFzc1tWNFNGbW9kZV0KLS0gICAgPSAoKFZFQ1RPUl9VTklUX1ZTWF9QIChWNFNGbW9kZSkKLS0J JiYgVkVDVE9SX01FTV9WU1hfUCAoVjRTRm1vZGUpCi0tCSYmICFUQVJHRVRfVjRTRl9BTFRJVkVD X1JFR1MpCi0rICAgID0gKChWRUNUT1JfVU5JVF9WU1hfUCAoVjRTRm1vZGUpICYmIFZFQ1RPUl9N RU1fVlNYX1AgKFY0U0Ztb2RlKSkKLSAgICAgICAgPyB2c3hfcmMKLSAgICAgICAgOiAoVkVDVE9S X1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoVjRTRm1vZGUpCi0gCSAgPyBBTFRJVkVDX1JFR1MKLUBA IC0xNzEyLDcgKzE3NTcsNyBAQCByczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2sgKHZvaWQp Ci0gICByczYwMDBfdnN4X3JlZ19jbGFzcyA9IChmbG9hdF9wICYmIFRBUkdFVF9WU1gpID8gdnN4 X3JjIDogTk9fUkVHUzsKLSAKLSAgIC8qIFNldCB1cCB0aGUgcmVsb2FkIGhlbHBlciBmdW5jdGlv bnMuICAqLwotLSAgaWYgKFRBUkdFVF9SRUxPQURfRlVOQ1RJT05TICYmIChUQVJHRVRfVlNYIHx8 IFRBUkdFVF9BTFRJVkVDKSkKLSsgIGlmIChUQVJHRVRfVlNYIHx8IFRBUkdFVF9BTFRJVkVDKQot ICAgICB7Ci0gICAgICAgaWYgKFRBUkdFVF82NEJJVCkKLSAJewotQEAgLTE3MjgsNiArMTc3Mywx MSBAQCByczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2sgKHZvaWQpCi0gCSAgcnM2MDAwX3Zl Y3Rvcl9yZWxvYWRbVjRTRm1vZGVdWzFdICA9IENPREVfRk9SX3JlbG9hZF92NHNmX2RpX2xvYWQ7 Ci0gCSAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVjJERm1vZGVdWzBdICA9IENPREVfRk9SX3JlbG9h ZF92MmRmX2RpX3N0b3JlOwotIAkgIHJzNjAwMF92ZWN0b3JfcmVsb2FkW1YyREZtb2RlXVsxXSAg PSBDT0RFX0ZPUl9yZWxvYWRfdjJkZl9kaV9sb2FkOwotKwkgIGlmIChUQVJHRVRfQUxMT1dfVElN T0RFKQotKwkgICAgewotKwkgICAgICByczYwMDBfdmVjdG9yX3JlbG9hZFtUSW1vZGVdWzBdID0g Q09ERV9GT1JfcmVsb2FkX3RpX2RpX3N0b3JlOwotKwkgICAgICByczYwMDBfdmVjdG9yX3JlbG9h ZFtUSW1vZGVdWzFdID0gQ09ERV9GT1JfcmVsb2FkX3RpX2RpX2xvYWQ7Ci0rCSAgICB9Ci0gCX0K LSAgICAgICBlbHNlCi0gCXsKLUBAIC0xNzQzLDYgKzE3OTMsMTEgQEAgcnM2MDAwX2luaXRfaGFy ZF9yZWdub19tb2RlX29rICh2b2lkKQotIAkgIHJzNjAwMF92ZWN0b3JfcmVsb2FkW1Y0U0Ztb2Rl XVsxXSAgPSBDT0RFX0ZPUl9yZWxvYWRfdjRzZl9zaV9sb2FkOwotIAkgIHJzNjAwMF92ZWN0b3Jf cmVsb2FkW1YyREZtb2RlXVswXSAgPSBDT0RFX0ZPUl9yZWxvYWRfdjJkZl9zaV9zdG9yZTsKLSAJ ICByczYwMDBfdmVjdG9yX3JlbG9hZFtWMkRGbW9kZV1bMV0gID0gQ09ERV9GT1JfcmVsb2FkX3Yy ZGZfc2lfbG9hZDsKLSsJICBpZiAoVEFSR0VUX0FMTE9XX1RJTU9ERSkKLSsJICAgIHsKLSsJICAg ICAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVEltb2RlXVswXSA9IENPREVfRk9SX3JlbG9hZF90aV9z aV9zdG9yZTsKLSsJICAgICAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVEltb2RlXVsxXSA9IENPREVf Rk9SX3JlbG9hZF90aV9zaV9sb2FkOwotKwkgICAgfQotIAl9Ci0gICAgIH0KLSAKLUBAIC0yMTMy LDIzICsyMTg3LDI5IEBAIHJzNjAwMF9vdmVycmlkZV9vcHRpb25zIChjb25zdCBjaGFyICpkZWYK LSAgICAgICBjb25zdCBjaGFyICptc2cgPSBOVUxMOwotICAgICAgIGlmICghVEFSR0VUX0hBUkRf RkxPQVQgfHwgIVRBUkdFVF9GUFJTCi0gCSAgfHwgIVRBUkdFVF9TSU5HTEVfRkxPQVQgfHwgIVRB UkdFVF9ET1VCTEVfRkxPQVQpCi0tCW1zZyA9ICItbXZzeCByZXF1aXJlcyBoYXJkd2FyZSBmbG9h dGluZyBwb2ludCI7Ci0rCXsKLSsJICBpZiAodGFyZ2V0X2ZsYWdzX2V4cGxpY2l0ICYgTUFTS19W U1gpCi0rCSAgICBtc2cgPSBOXygiLW12c3ggcmVxdWlyZXMgaGFyZHdhcmUgZmxvYXRpbmcgcG9p bnQiKTsKLSsJICBlbHNlCi0rCSAgICB0YXJnZXRfZmxhZ3MgJj0gfiBNQVNLX1ZTWDsKLSsJfQot ICAgICAgIGVsc2UgaWYgKFRBUkdFVF9QQUlSRURfRkxPQVQpCi0tCW1zZyA9ICItbXZzeCBhbmQg LW1wYWlyZWQgYXJlIGluY29tcGF0aWJsZSI7Ci0rCW1zZyA9IE5fKCItbXZzeCBhbmQgLW1wYWly ZWQgYXJlIGluY29tcGF0aWJsZSIpOwotICAgICAgIC8qIFRoZSBoYXJkd2FyZSB3aWxsIGFsbG93 IFZTWCBhbmQgbGl0dGxlIGVuZGlhbiwgYnV0IHVudGlsIHdlIG1ha2Ugc3VyZQotIAkgdGhpbmdz IGxpa2UgdmVjdG9yIHNlbGVjdCwgZXRjLiB3b3JrIGRvbid0IGFsbG93IFZTWCBvbiBsaXR0bGUg ZW5kaWFuCi0gCSBzeXN0ZW1zIGF0IHRoaXMgcG9pbnQuICAqLwotICAgICAgIGVsc2UgaWYgKCFC WVRFU19CSUdfRU5ESUFOKQotLQltc2cgPSAiLW12c3ggdXNlZCB3aXRoIGxpdHRsZSBlbmRpYW4g Y29kZSI7Ci0rCW1zZyA9IE5fKCItbXZzeCB1c2VkIHdpdGggbGl0dGxlIGVuZGlhbiBjb2RlIik7 Ci0gICAgICAgZWxzZSBpZiAoVEFSR0VUX0FWT0lEX1hGT1JNID4gMCkKLS0JbXNnID0gIi1tdnN4 IG5lZWRzIGluZGV4ZWQgYWRkcmVzc2luZyI7Ci0rCW1zZyA9IE5fKCItbXZzeCBuZWVkcyBpbmRl eGVkIGFkZHJlc3NpbmciKTsKLSAKLSAgICAgICBpZiAobXNnKQotIAl7Ci0gCSAgd2FybmluZyAo MCwgbXNnKTsKLS0JICB0YXJnZXRfZmxhZ3MgJj0gTUFTS19WU1g7Ci0rCSAgdGFyZ2V0X2ZsYWdz ICY9IH4gTUFTS19WU1g7Ci0gCX0KLS0gICAgICBlbHNlIGlmICghVEFSR0VUX0FMVElWRUMgJiYg KHRhcmdldF9mbGFnc19leHBsaWNpdCAmIE1BU0tfQUxUSVZFQykgPT0gMCkKLSsgICAgICBlbHNl IGlmIChUQVJHRVRfVlNYICYmICFUQVJHRVRfQUxUSVZFQwotKwkgICAgICAgJiYgKHRhcmdldF9m bGFnc19leHBsaWNpdCAmIE1BU0tfQUxUSVZFQykgPT0gMCkKLSAJdGFyZ2V0X2ZsYWdzIHw9IE1B U0tfQUxUSVZFQzsKLSAgICAgfQotIAotQEAgLTI1ODEsOCArMjY0Miw4IEBAIHJzNjAwMF9idWls dGluX2NvbnZlcnNpb24gKGVudW0gdHJlZV9jb2QKLSAJICAgIHJldHVybiBOVUxMX1RSRUU7Ci0g Ci0gCSAgcmV0dXJuIFRZUEVfVU5TSUdORUQgKHR5cGUpCi0tCSAgICA/IHJzNjAwMF9idWlsdGlu X2RlY2xzW1ZTWF9CVUlMVElOX1hWQ1ZVWERTUF0KLS0JICAgIDogcnM2MDAwX2J1aWx0aW5fZGVj bHNbVlNYX0JVSUxUSU5fWFZDVlNYRFNQXTsKLSsJICAgID8gcnM2MDAwX2J1aWx0aW5fZGVjbHNb VlNYX0JVSUxUSU5fWFZDVlVYRERQXQotKwkgICAgOiByczYwMDBfYnVpbHRpbl9kZWNsc1tWU1hf QlVJTFRJTl9YVkNWU1hERFBdOwotIAotIAljYXNlIFY0U0ltb2RlOgotIAkgIGlmIChWRUNUT1Jf VU5JVF9OT05FX1AgKFY0U0ltb2RlKSB8fCBWRUNUT1JfVU5JVF9OT05FX1AgKFY0U0Ztb2RlKSkK LUBAIC0zNzgwLDE1ICszODQxLDI4IEBAIHJzNjAwMF9leHBhbmRfdmVjdG9yX2luaXQgKHJ0eCB0 YXJnZXQsIHIKLSAJfQotICAgICB9Ci0gCi0tICBpZiAobW9kZSA9PSBWMkRGbW9kZSkKLSsgIGlm IChWRUNUT1JfTUVNX1ZTWF9QIChtb2RlKSAmJiAobW9kZSA9PSBWMkRGbW9kZSB8fCBtb2RlID09 IFYyREltb2RlKSkKLSAgICAgewotLSAgICAgIGdjY19hc3NlcnQgKFRBUkdFVF9WU1gpOwotKyAg ICAgIHJ0eCAoKnNwbGF0KSAocnR4LCBydHgpOwotKyAgICAgIHJ0eCAoKmNvbmNhdCkgKHJ0eCwg cnR4LCBydHgpOwotKwotKyAgICAgIGlmIChtb2RlID09IFYyREZtb2RlKQotKwl7Ci0rCSAgc3Bs YXQgPSBnZW5fdnN4X3NwbGF0X3YyZGY7Ci0rCSAgY29uY2F0ID0gZ2VuX3ZzeF9jb25jYXRfdjJk ZjsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIHNwbGF0ID0gZ2VuX3ZzeF9zcGxhdF92MmRp OwotKwkgIGNvbmNhdCA9IGdlbl92c3hfY29uY2F0X3YyZGk7Ci0rCX0KLSsKLSAgICAgICBpZiAo YWxsX3NhbWUpCi0tCWVtaXRfaW5zbiAoZ2VuX3ZzeF9zcGxhdHYyZGYgKHRhcmdldCwgWFZFQ0VY UCAodmFscywgMCwgMCkpKTsKLSsJZW1pdF9pbnNuIChzcGxhdCAodGFyZ2V0LCBYVkVDRVhQICh2 YWxzLCAwLCAwKSkpOwotICAgICAgIGVsc2UKLS0JZW1pdF9pbnNuIChnZW5fdnN4X2NvbmNhdF92 MmRmICh0YXJnZXQsCi0tCQkJCQljb3B5X3RvX3JlZyAoWFZFQ0VYUCAodmFscywgMCwgMCkpLAot LQkJCQkJY29weV90b19yZWcgKFhWRUNFWFAgKHZhbHMsIDAsIDEpKSkpOwotKwllbWl0X2luc24g KGNvbmNhdCAodGFyZ2V0LAotKwkJCSAgIGNvcHlfdG9fcmVnIChYVkVDRVhQICh2YWxzLCAwLCAw KSksCi0rCQkJICAgY29weV90b19yZWcgKFhWRUNFWFAgKHZhbHMsIDAsIDEpKSkpOwotICAgICAg IHJldHVybjsKLSAgICAgfQotIAotQEAgLTM4NTEsMTAgKzM5MjUsMTIgQEAgcnM2MDAwX2V4cGFu ZF92ZWN0b3Jfc2V0IChydHggdGFyZ2V0LCBydAotICAgaW50IHdpZHRoID0gR0VUX01PREVfU0la RSAoaW5uZXJfbW9kZSk7Ci0gICBpbnQgaTsKLSAKLS0gIGlmIChtb2RlID09IFYyREZtb2RlKQot KyAgaWYgKG1vZGUgPT0gVjJERm1vZGUgfHwgbW9kZSA9PSBWMkRJbW9kZSkKLSAgICAgewotKyAg ICAgIHJ0eCAoKnNldF9mdW5jKSAocnR4LCBydHgsIHJ0eCwgcnR4KQotKwk9ICgobW9kZSA9PSBW MkRGbW9kZSkgPyBnZW5fdnN4X3NldF92MmRmIDogZ2VuX3ZzeF9zZXRfdjJkaSk7Ci0gICAgICAg Z2NjX2Fzc2VydCAoVEFSR0VUX1ZTWCk7Ci0tICAgICAgZW1pdF9pbnNuIChnZW5fdnN4X3NldF92 MmRmICh0YXJnZXQsIHZhbCwgdGFyZ2V0LCBHRU5fSU5UIChlbHQpKSk7Ci0rICAgICAgZW1pdF9p bnNuIChzZXRfZnVuYyAodGFyZ2V0LCB2YWwsIHRhcmdldCwgR0VOX0lOVCAoZWx0KSkpOwotICAg ICAgIHJldHVybjsKLSAgICAgfQotIAotQEAgLTM4OTUsMTAgKzM5NzEsMTIgQEAgcnM2MDAwX2V4 cGFuZF92ZWN0b3JfZXh0cmFjdCAocnR4IHRhcmdldAotICAgZW51bSBtYWNoaW5lX21vZGUgaW5u ZXJfbW9kZSA9IEdFVF9NT0RFX0lOTkVSIChtb2RlKTsKLSAgIHJ0eCBtZW0sIHg7Ci0gCi0tICBp ZiAobW9kZSA9PSBWMkRGbW9kZSkKLSsgIGlmIChtb2RlID09IFYyREZtb2RlIHx8IG1vZGUgPT0g VjJESW1vZGUpCi0gICAgIHsKLSsgICAgICBydHggKCpleHRyYWN0X2Z1bmMpIChydHgsIHJ0eCwg cnR4KQotKwk9ICgobW9kZSA9PSBWMkRGbW9kZSkgPyBnZW5fdnN4X2V4dHJhY3RfdjJkZiA6IGdl bl92c3hfZXh0cmFjdF92MmRpKTsKLSAgICAgICBnY2NfYXNzZXJ0IChUQVJHRVRfVlNYKTsKLS0g ICAgICBlbWl0X2luc24gKGdlbl92c3hfZXh0cmFjdF92MmRmICh0YXJnZXQsIHZlYywgR0VOX0lO VCAoZWx0KSkpOwotKyAgICAgIGVtaXRfaW5zbiAoZXh0cmFjdF9mdW5jICh0YXJnZXQsIHZlYywg R0VOX0lOVCAoZWx0KSkpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotQEAgLTQzMTgsOSAr NDM5Niw3IEBAIGF2b2lkaW5nX2luZGV4ZWRfYWRkcmVzc19wIChlbnVtIG1hY2hpbmUKLSB7Ci0g ICAvKiBBdm9pZCBpbmRleGVkIGFkZHJlc3NpbmcgZm9yIG1vZGVzIHRoYXQgaGF2ZSBub24taW5k ZXhlZAotICAgICAgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbiBmb3Jtcy4gICovCi0tICByZXR1cm4g KFRBUkdFVF9BVk9JRF9YRk9STQotLQkgICYmICghVEFSR0VUX0FMVElWRUMgfHwgIUFMVElWRUNf VkVDVE9SX01PREUgKG1vZGUpKQotLQkgICYmICghVEFSR0VUX1ZTWCB8fCAhVlNYX1ZFQ1RPUl9N T0RFIChtb2RlKSkpOwotKyAgcmV0dXJuIChUQVJHRVRfQVZPSURfWEZPUk0gJiYgVkVDVE9SX01F TV9OT05FX1AgKG1vZGUpKTsKLSB9Ci0gCi0gaW5saW5lIGJvb2wKLUBAIC00NDQzLDYgKzQ1MTks MTYgQEAgcnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVzcyAocnR4IHgsIHJ0eCBvbAotICAgICAgIHJl dCA9IHJzNjAwMF9sZWdpdGltaXplX3Rsc19hZGRyZXNzICh4LCBtb2RlbCk7Ci0gICAgIH0KLSAK LSsgIGVsc2UgaWYgKFZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAobW9kZSkpCi0rICAgIHsK LSsgICAgICAvKiBNYWtlIHN1cmUgYm90aCBvcGVyYW5kcyBhcmUgcmVnaXN0ZXJzLiAgKi8KLSsg ICAgICBpZiAoR0VUX0NPREUgKHgpID09IFBMVVMpCi0rCXJldCA9IGdlbl9ydHhfUExVUyAoUG1v ZGUsCi0rCQkJICAgIGZvcmNlX3JlZyAoUG1vZGUsIFhFWFAgKHgsIDApKSwKLSsJCQkgICAgZm9y Y2VfcmVnIChQbW9kZSwgWEVYUCAoeCwgMSkpKTsKLSsgICAgICBlbHNlCi0rCXJldCA9IGZvcmNl X3JlZyAoUG1vZGUsIHgpOwotKyAgICB9Ci0gICBlbHNlIGlmIChHRVRfQ09ERSAoeCkgPT0gUExV UwotIAkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09IFJFRwotIAkgICAmJiBHRVRfQ09E RSAoWEVYUCAoeCwgMSkpID09IENPTlNUX0lOVAotQEAgLTQ0NTIsOCArNDUzOCw2IEBAIHJzNjAw MF9sZWdpdGltaXplX2FkZHJlc3MgKHJ0eCB4LCBydHggb2wKLSAJCSAmJiAobW9kZSA9PSBESW1v ZGUgfHwgbW9kZSA9PSBUSW1vZGUpCi0gCQkgJiYgKElOVFZBTCAoWEVYUCAoeCwgMSkpICYgMykg IT0gMCkKLSAJCXx8IChUQVJHRVRfU1BFICYmIFNQRV9WRUNUT1JfTU9ERSAobW9kZSkpCi0tCQl8 fCAoVEFSR0VUX0FMVElWRUMgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkpCi0tCQl8fCAo VEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9SX01PREUgKG1vZGUpKQotIAkJfHwgKFRBUkdFVF9FNTAw X0RPVUJMRSAmJiAobW9kZSA9PSBERm1vZGUgfHwgbW9kZSA9PSBURm1vZGUKLSAJCQkJCSAgIHx8 IG1vZGUgPT0gREltb2RlIHx8IG1vZGUgPT0gRERtb2RlCi0gCQkJCQkgICB8fCBtb2RlID09IFRE bW9kZSkpKSkKLUBAIC00NDg1LDE1ICs0NTY5LDYgQEAgcnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVz cyAocnR4IHgsIHJ0eCBvbAotICAgICAgIHJldCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIFhFWFAg KHgsIDApLAotIAkJCSAgZm9yY2VfcmVnIChQbW9kZSwgZm9yY2Vfb3BlcmFuZCAoWEVYUCAoeCwg MSksIDApKSk7Ci0gICAgIH0KLS0gIGVsc2UgaWYgKFZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hf UCAobW9kZSkpCi0tICAgIHsKLS0gICAgICAvKiBNYWtlIHN1cmUgYm90aCBvcGVyYW5kcyBhcmUg cmVnaXN0ZXJzLiAgKi8KLS0gICAgICBpZiAoR0VUX0NPREUgKHgpID09IFBMVVMpCi0tCXJldCA9 IGdlbl9ydHhfUExVUyAoUG1vZGUsIGZvcmNlX3JlZyAoUG1vZGUsIFhFWFAgKHgsIDApKSwKLS0J CQkgICAgZm9yY2VfcmVnIChQbW9kZSwgWEVYUCAoeCwgMSkpKTsKLS0gICAgICBlbHNlCi0tCXJl dCA9IGZvcmNlX3JlZyAoUG1vZGUsIHgpOwotLSAgICB9Ci0gICBlbHNlIGlmICgoVEFSR0VUX1NQ RSAmJiBTUEVfVkVDVE9SX01PREUgKG1vZGUpKQotIAkgICB8fCAoVEFSR0VUX0U1MDBfRE9VQkxF ICYmIChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IFRGbW9kZQotIAkJCQkgICAgICB8fCBtb2Rl ID09IEREbW9kZSB8fCBtb2RlID09IFREbW9kZQotQEAgLTUxMzEsNyArNTIwNiw3IEBAIHJzNjAw MF9sZWdpdGltYXRlX2FkZHJlc3MgKGVudW0gbWFjaGluZV8KLSAgICAgcmV0ID0gMTsKLSAgIGVs c2UgaWYgKHJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AgKG1vZGUsIHgsIHJlZ19v a19zdHJpY3QpKQotICAgICByZXQgPSAxOwotLSAgZWxzZSBpZiAobW9kZSAhPSBUSW1vZGUKLSsg IGVsc2UgaWYgKChtb2RlICE9IFRJbW9kZSB8fCAhVkVDVE9SX01FTV9OT05FX1AgKFRJbW9kZSkp Ci0gCSAgICYmIG1vZGUgIT0gVEZtb2RlCi0gCSAgICYmIG1vZGUgIT0gVERtb2RlCi0gCSAgICYm ICgoVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMpCi1AQCAtNTk3MSw3ICs2MDQ2LDEz IEBAIHJzNjAwMF9lbWl0X21vdmUgKHJ0eCBkZXN0LCBydHggc291cmNlLCAKLSAKLSAgICAgY2Fz ZSBUSW1vZGU6Ci0gICAgICAgaWYgKFZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAoVEltb2Rl KSkKLS0JYnJlYWs7Ci0rCXsKLSsJICBpZiAoQ09OU1RBTlRfUCAob3BlcmFuZHNbMV0pCi0rCSAg ICAgICYmICFlYXN5X3ZlY3Rvcl9jb25zdGFudCAob3BlcmFuZHNbMV0sIG1vZGUpKQotKwkgICAg b3BlcmFuZHNbMV0gPSBmb3JjZV9jb25zdF9tZW0gKG1vZGUsIG9wZXJhbmRzWzFdKTsKLSsKLSsJ ICBicmVhazsKLSsJfQotIAotICAgICAgIHJzNjAwMF9lbGltaW5hdGVfaW5kZXhlZF9tZW1yZWZz IChvcGVyYW5kcyk7Ci0gCi1AQCAtNzg4OCw3ICs3OTY5LDggQEAgZGVmX2J1aWx0aW4gKGludCBt YXNrLCBjb25zdCBjaGFyICpuYW1lLAotICAgaWYgKChtYXNrICYgdGFyZ2V0X2ZsYWdzKSB8fCBU QVJHRVRfUEFJUkVEX0ZMT0FUKQotICAgICB7Ci0gICAgICAgaWYgKHJzNjAwMF9idWlsdGluX2Rl Y2xzW2NvZGVdKQotLQlhYm9ydCAoKTsKLSsJZmF0YWxfZXJyb3IgKCJpbnRlcm5hbCBlcnJvcjog YnVpbHRpbiBmdW5jdGlvbiB0byAlcyBhbHJlYWR5IHByb2Nlc3NlZC4iLAotKwkJICAgICBuYW1l KTsKLSAKLSAgICAgICByczYwMDBfYnVpbHRpbl9kZWNsc1tjb2RlXSA9Ci0gICAgICAgICBhZGRf YnVpbHRpbl9mdW5jdGlvbiAobmFtZSwgdHlwZSwgY29kZSwgQlVJTFRfSU5fTUQsCi1AQCAtNzk1 Myw2ICs4MDM1LDM0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiAK LSAgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9mbm1hZGR2NHNmNCwgIl9fYnVpbHRpbl92c3hf eHZubWFkZHNwIiwgVlNYX0JVSUxUSU5fWFZOTUFERFNQIH0sCi0gICB7IE1BU0tfVlNYLCBDT0RF X0ZPUl92c3hfZm5tc3VidjRzZjQsICJfX2J1aWx0aW5fdnN4X3h2bm1zdWJzcCIsIFZTWF9CVUlM VElOX1hWTk1TVUJTUCB9LAotIAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdmVjdG9yX3ZzZWx2 MmRpLCAiX19idWlsdGluX3ZzeF94eHNlbF8yZGkiLCBWU1hfQlVJTFRJTl9YWFNFTF8yREkgfSwK LSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZlY3Rvcl92c2VsdjJkZiwgIl9fYnVpbHRpbl92c3hf eHhzZWxfMmRmIiwgVlNYX0JVSUxUSU5fWFhTRUxfMkRGIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RF X0ZPUl92ZWN0b3JfdnNlbHY0c2YsICJfX2J1aWx0aW5fdnN4X3h4c2VsXzRzZiIsIFZTWF9CVUlM VElOX1hYU0VMXzRTRiB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdmVjdG9yX3ZzZWx2NHNp LCAiX19idWlsdGluX3ZzeF94eHNlbF80c2kiLCBWU1hfQlVJTFRJTl9YWFNFTF80U0kgfSwKLSsg IHsgTUFTS19WU1gsIENPREVfRk9SX3ZlY3Rvcl92c2VsdjhoaSwgIl9fYnVpbHRpbl92c3hfeHhz ZWxfOGhpIiwgVlNYX0JVSUxUSU5fWFhTRUxfOEhJIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZP Ul92ZWN0b3JfdnNlbHYxNnFpLCAiX19idWlsdGluX3ZzeF94eHNlbF8xNnFpIiwgVlNYX0JVSUxU SU5fWFhTRUxfMTZRSSB9LAotKwotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfYWx0aXZlY192cGVy bV92MmRpLCAiX19idWlsdGluX3ZzeF92cGVybV8yZGkiLCBWU1hfQlVJTFRJTl9WUEVSTV8yREkg fSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX2FsdGl2ZWNfdnBlcm1fdjJkZiwgIl9fYnVpbHRp bl92c3hfdnBlcm1fMmRmIiwgVlNYX0JVSUxUSU5fVlBFUk1fMkRGIH0sCi0rICB7IE1BU0tfVlNY LCBDT0RFX0ZPUl9hbHRpdmVjX3ZwZXJtX3Y0c2YsICJfX2J1aWx0aW5fdnN4X3ZwZXJtXzRzZiIs IFZTWF9CVUlMVElOX1ZQRVJNXzRTRiB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfYWx0aXZl Y192cGVybV92NHNpLCAiX19idWlsdGluX3ZzeF92cGVybV80c2kiLCBWU1hfQlVJTFRJTl9WUEVS TV80U0kgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX2FsdGl2ZWNfdnBlcm1fdjhoaSwgIl9f YnVpbHRpbl92c3hfdnBlcm1fOGhpIiwgVlNYX0JVSUxUSU5fVlBFUk1fOEhJIH0sCi0rICB7IE1B U0tfVlNYLCBDT0RFX0ZPUl9hbHRpdmVjX3ZwZXJtX3YxNnFpLCAiX19idWlsdGluX3ZzeF92cGVy bV8xNnFpIiwgVlNYX0JVSUxUSU5fVlBFUk1fMTZRSSB9LAotKwotKyAgeyBNQVNLX1ZTWCwgQ09E RV9GT1JfdnN4X3h4cGVybWRpX3YyZGYsICJfX2J1aWx0aW5fdnN4X3h4cGVybWRpXzJkZiIsIFZT WF9CVUlMVElOX1hYUEVSTURJXzJERiB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h4 cGVybWRpX3YyZGksICJfX2J1aWx0aW5fdnN4X3h4cGVybWRpXzJkaSIsIFZTWF9CVUlMVElOX1hY UEVSTURJXzJESSB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRp bl92c3hfeHhwZXJtZGkiLCBWU1hfQlVJTFRJTl9WRUNfWFhQRVJNREkgfSwKLSsgIHsgTUFTS19W U1gsIENPREVfRk9SX3ZzeF9zZXRfdjJkZiwgIl9fYnVpbHRpbl92c3hfc2V0XzJkZiIsIFZTWF9C VUlMVElOX1NFVF8yREYgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9zZXRfdjJkaSwg Il9fYnVpbHRpbl92c3hfc2V0XzJkaSIsIFZTWF9CVUlMVElOX1NFVF8yREkgfSwKLSsKLSsgIHsg TUFTS19WU1gsIENPREVfRk9SX3ZzeF94eHNsZHdpX3YyZGksICJfX2J1aWx0aW5fdnN4X3h4c2xk d2lfMmRpIiwgVlNYX0JVSUxUSU5fWFhTTERXSV8yREkgfSwKLSsgIHsgTUFTS19WU1gsIENPREVf Rk9SX3ZzeF94eHNsZHdpX3YyZGYsICJfX2J1aWx0aW5fdnN4X3h4c2xkd2lfMmRmIiwgVlNYX0JV SUxUSU5fWFhTTERXSV8yREYgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94eHNsZHdp X3Y0c2YsICJfX2J1aWx0aW5fdnN4X3h4c2xkd2lfNHNmIiwgVlNYX0JVSUxUSU5fWFhTTERXSV80 U0YgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94eHNsZHdpX3Y0c2ksICJfX2J1aWx0 aW5fdnN4X3h4c2xkd2lfNHNpIiwgVlNYX0JVSUxUSU5fWFhTTERXSV80U0kgfSwKLSsgIHsgTUFT S19WU1gsIENPREVfRk9SX3ZzeF94eHNsZHdpX3Y4aGksICJfX2J1aWx0aW5fdnN4X3h4c2xkd2lf OGhpIiwgVlNYX0JVSUxUSU5fWFhTTERXSV84SEkgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9S X3ZzeF94eHNsZHdpX3YxNnFpLCAiX19idWlsdGluX3ZzeF94eHNsZHdpXzE2cWkiLCBWU1hfQlVJ TFRJTl9YWFNMRFdJXzE2UUkgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX25vdGhpbmcsICJf X2J1aWx0aW5fdnN4X3h4c2xkd2kiLCBWU1hfQlVJTFRJTl9WRUNfWFhTTERXSSB9LAotKwotICAg eyAwLCBDT0RFX0ZPUl9wYWlyZWRfbXN1YiwgIl9fYnVpbHRpbl9wYWlyZWRfbXN1YiIsIFBBSVJF RF9CVUlMVElOX01TVUIgfSwKLSAgIHsgMCwgQ09ERV9GT1JfcGFpcmVkX21hZGQsICJfX2J1aWx0 aW5fcGFpcmVkX21hZGQiLCBQQUlSRURfQlVJTFRJTl9NQUREIH0sCi0gICB7IDAsIENPREVfRk9S X3BhaXJlZF9tYWRkczAsICJfX2J1aWx0aW5fcGFpcmVkX21hZGRzMCIsIFBBSVJFRF9CVUlMVElO X01BRERTMCB9LAotQEAgLTgxMDIsNiArODIxMiw5IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbl9k ZXNjcmlwdGlvbiBiZGVzY18KLSAgIHsgTUFTS19WU1gsIENPREVfRk9SX3NtaW52MmRmMywgIl9f YnVpbHRpbl92c3hfeHZtaW5kcCIsIFZTWF9CVUlMVElOX1hWTUlORFAgfSwKLSAgIHsgTUFTS19W U1gsIENPREVfRk9SX3NtYXh2MmRmMywgIl9fYnVpbHRpbl92c3hfeHZtYXhkcCIsIFZTWF9CVUlM VElOX1hWTUFYRFAgfSwKLSAgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF90ZGl2djJkZjMsICJf X2J1aWx0aW5fdnN4X3h2dGRpdmRwIiwgVlNYX0JVSUxUSU5fWFZURElWRFAgfSwKLSsgIHsgTUFT S19WU1gsIENPREVfRk9SX3ZlY3Rvcl9lcXYyZGYsICJfX2J1aWx0aW5fdnN4X3h2Y21wZXFkcCIs IFZTWF9CVUlMVElOX1hWQ01QRVFEUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdmVjdG9y X2d0djJkZiwgIl9fYnVpbHRpbl92c3hfeHZjbXBndGRwIiwgVlNYX0JVSUxUSU5fWFZDTVBHVERQ IH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92ZWN0b3JfZ2V2MmRmLCAiX19idWlsdGluX3Zz eF94dmNtcGdlZHAiLCBWU1hfQlVJTFRJTl9YVkNNUEdFRFAgfSwKLSAKLSAgIHsgTUFTS19WU1gs IENPREVfRk9SX2FkZHY0c2YzLCAiX19idWlsdGluX3ZzeF94dmFkZHNwIiwgVlNYX0JVSUxUSU5f WFZBRERTUCB9LAotICAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jfc3VidjRzZjMsICJfX2J1aWx0aW5f dnN4X3h2c3Vic3AiLCBWU1hfQlVJTFRJTl9YVlNVQlNQIH0sCi1AQCAtODExMCw2ICs4MjIzLDIx IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiBiZGVzY18KLSAgIHsgTUFTS19W U1gsIENPREVfRk9SX3NtaW52NHNmMywgIl9fYnVpbHRpbl92c3hfeHZtaW5zcCIsIFZTWF9CVUlM VElOX1hWTUlOU1AgfSwKLSAgIHsgTUFTS19WU1gsIENPREVfRk9SX3NtYXh2NHNmMywgIl9fYnVp bHRpbl92c3hfeHZtYXhzcCIsIFZTWF9CVUlMVElOX1hWTUFYU1AgfSwKLSAgIHsgTUFTS19WU1gs IENPREVfRk9SX3ZzeF90ZGl2djRzZjMsICJfX2J1aWx0aW5fdnN4X3h2dGRpdnNwIiwgVlNYX0JV SUxUSU5fWFZURElWU1AgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZlY3Rvcl9lcXY0c2Ys ICJfX2J1aWx0aW5fdnN4X3h2Y21wZXFzcCIsIFZTWF9CVUlMVElOX1hWQ01QRVFTUCB9LAotKyAg eyBNQVNLX1ZTWCwgQ09ERV9GT1JfdmVjdG9yX2d0djRzZiwgIl9fYnVpbHRpbl92c3hfeHZjbXBn dHNwIiwgVlNYX0JVSUxUSU5fWFZDTVBHVFNQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92 ZWN0b3JfZ2V2NHNmLCAiX19idWlsdGluX3ZzeF94dmNtcGdlc3AiLCBWU1hfQlVJTFRJTl9YVkNN UEdFU1AgfSwKLSsKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3NtaW5kZjMsICJfX2J1aWx0aW5f dnN4X3hzbWluZHAiLCBWU1hfQlVJTFRJTl9YU01JTkRQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RF X0ZPUl9zbWF4ZGYzLCAiX19idWlsdGluX3ZzeF94c21heGRwIiwgVlNYX0JVSUxUSU5fWFNNQVhE UCB9LAotKwotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2NvbmNhdF92MmRmLCAiX19idWls dGluX3ZzeF9jb25jYXRfMmRmIiwgVlNYX0JVSUxUSU5fQ09OQ0FUXzJERiB9LAotKyAgeyBNQVNL X1ZTWCwgQ09ERV9GT1JfdnN4X2NvbmNhdF92MmRpLCAiX19idWlsdGluX3ZzeF9jb25jYXRfMmRp IiwgVlNYX0JVSUxUSU5fQ09OQ0FUXzJESSB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4 X3NwbGF0X3YyZGYsICJfX2J1aWx0aW5fdnN4X3NwbGF0XzJkZiIsIFZTWF9CVUlMVElOX1NQTEFU XzJERiB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3NwbGF0X3YyZGksICJfX2J1aWx0 aW5fdnN4X3NwbGF0XzJkaSIsIFZTWF9CVUlMVElOX1NQTEFUXzJESSB9LAotKyAgeyBNQVNLX1ZT WCwgQ09ERV9GT1JfdnN4X3h4bXJnaHdfdjRzZiwgIl9fYnVpbHRpbl92c3hfeHhtcmdodyIsIFZT WF9CVUlMVElOX1hYTVJHSFdfNFNGIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHht cmdod192NHNpLCAiX19idWlsdGluX3ZzeF94eG1yZ2h3XzRzaSIsIFZTWF9CVUlMVElOX1hYTVJH SFdfNFNJIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHhtcmdsd192NHNmLCAiX19i dWlsdGluX3ZzeF94eG1yZ2x3IiwgVlNYX0JVSUxUSU5fWFhNUkdMV180U0YgfSwKLSsgIHsgTUFT S19WU1gsIENPREVfRk9SX3ZzeF94eG1yZ2x3X3Y0c2ksICJfX2J1aWx0aW5fdnN4X3h4bXJnbHdf NHNpIiwgVlNYX0JVSUxUSU5fWFhNUkdMV180U0kgfSwKLSAKLSAgIHsgTUFTS19BTFRJVkVDfE1B U0tfVlNYLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19hZGQiLCBBTFRJVkVDX0JV SUxUSU5fVkVDX0FERCB9LAotICAgeyBNQVNLX0FMVElWRUN8TUFTS19WU1gsIENPREVfRk9SX25v dGhpbmcsICJfX2J1aWx0aW5fdmVjX3ZhZGRmcCIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVkFEREZQ IH0sCi1AQCAtODUyNyw2ICs4NjU1LDQ3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlw dGlvbiBiZGVzY18KLSAgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF90c3FydHY0c2YyLCAiX19i dWlsdGluX3ZzeF94dnRzcXJ0c3AiLCBWU1hfQlVJTFRJTl9YVlRTUVJUU1AgfSwKLSAgIHsgTUFT S19WU1gsIENPREVfRk9SX3ZzeF9mcmV2NHNmMiwgIl9fYnVpbHRpbl92c3hfeHZyZXNwIiwgVlNY X0JVSUxUSU5fWFZSRVNQIH0sCi0gCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHNjdmRw c3AsICJfX2J1aWx0aW5fdnN4X3hzY3ZkcHNwIiwgVlNYX0JVSUxUSU5fWFNDVkRQU1AgfSwKLSsg IHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94c2N2ZHBzcCwgIl9fYnVpbHRpbl92c3hfeHNjdnNw ZHAiLCBWU1hfQlVJTFRJTl9YU0NWU1BEUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4 X3h2Y3ZkcHNwLCAiX19idWlsdGluX3ZzeF94dmN2ZHBzcCIsIFZTWF9CVUlMVElOX1hWQ1ZEUFNQ IH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHZjdnNwZHAsICJfX2J1aWx0aW5fdnN4 X3h2Y3ZzcGRwIiwgVlNYX0JVSUxUSU5fWFZDVlNQRFAgfSwKLSsKLSsgIHsgTUFTS19WU1gsIENP REVfRk9SX3ZzeF9maXhfdHJ1bmN2MmRmdjJkaTIsICJfX2J1aWx0aW5fdnN4X3h2Y3ZkcHN4ZHMi LCBWU1hfQlVJTFRJTl9YVkNWRFBTWERTIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hf Zml4dW5zX3RydW5jdjJkZnYyZGkyLCAiX19idWlsdGluX3ZzeF94dmN2ZHB1eGRzIiwgVlNYX0JV SUxUSU5fWFZDVkRQVVhEUyB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2Zsb2F0djJk aXYyZGYyLCAiX19idWlsdGluX3ZzeF94dmN2c3hkZHAiLCBWU1hfQlVJTFRJTl9YVkNWU1hERFAg fSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9mbG9hdHVuc3YyZGl2MmRmMiwgIl9fYnVp bHRpbl92c3hfeHZjdnV4ZGRwIiwgVlNYX0JVSUxUSU5fWFZDVlVYRERQIH0sCi0rCi0rICB7IE1B U0tfVlNYLCBDT0RFX0ZPUl92c3hfZml4X3RydW5jdjRzZnY0c2kyLCAiX19idWlsdGluX3ZzeF94 dmN2c3BzeHdzIiwgVlNYX0JVSUxUSU5fWFZDVlNQU1hXUyB9LAotKyAgeyBNQVNLX1ZTWCwgQ09E RV9GT1JfdnN4X2ZpeHVuc190cnVuY3Y0c2Z2NHNpMiwgIl9fYnVpbHRpbl92c3hfeHZjdnNwdXh3 cyIsIFZTWF9CVUlMVElOX1hWQ1ZTUFVYV1MgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3Zz eF9mbG9hdHY0c2l2NHNmMiwgIl9fYnVpbHRpbl92c3hfeHZjdnN4d3NwIiwgVlNYX0JVSUxUSU5f WFZDVlNYV1NQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfZmxvYXR1bnN2NHNpdjRz ZjIsICJfX2J1aWx0aW5fdnN4X3h2Y3Z1eHdzcCIsIFZTWF9CVUlMVElOX1hWQ1ZVWFdTUCB9LAot KwotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h2Y3ZkcHN4d3MsICJfX2J1aWx0aW5fdnN4 X3h2Y3ZkcHN4d3MiLCBWU1hfQlVJTFRJTl9YVkNWRFBTWFdTIH0sCi0rICB7IE1BU0tfVlNYLCBD T0RFX0ZPUl92c3hfeHZjdmRwdXh3cywgIl9fYnVpbHRpbl92c3hfeHZjdmRwdXh3cyIsIFZTWF9C VUlMVElOX1hWQ1ZEUFVYV1MgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94dmN2c3h3 ZHAsICJfX2J1aWx0aW5fdnN4X3h2Y3ZzeHdkcCIsIFZTWF9CVUlMVElOX1hWQ1ZTWFdEUCB9LAot KyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h2Y3Z1eHdkcCwgIl9fYnVpbHRpbl92c3hfeHZj dnV4d2RwIiwgVlNYX0JVSUxUSU5fWFZDVlVYV0RQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZP Ul92c3hfeHZyZHBpLCAiX19idWlsdGluX3ZzeF94dnJkcGkiLCBWU1hfQlVJTFRJTl9YVlJEUEkg fSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94dnJkcGljLCAiX19idWlsdGluX3ZzeF94 dnJkcGljIiwgVlNYX0JVSUxUSU5fWFZSRFBJQyB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jf dnN4X2Zsb29ydjJkZjIsICJfX2J1aWx0aW5fdnN4X3h2cmRwaW0iLCBWU1hfQlVJTFRJTl9YVlJE UElNIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfY2VpbHYyZGYyLCAiX19idWlsdGlu X3ZzeF94dnJkcGlwIiwgVlNYX0JVSUxUSU5fWFZSRFBJUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09E RV9GT1JfdnN4X2J0cnVuY3YyZGYyLCAiX19idWlsdGluX3ZzeF94dnJkcGl6IiwgVlNYX0JVSUxU SU5fWFZSRFBJWiB9LAotKwotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h2Y3ZzcHN4ZHMs ICJfX2J1aWx0aW5fdnN4X3h2Y3ZzcHN4ZHMiLCBWU1hfQlVJTFRJTl9YVkNWU1BTWERTIH0sCi0r ICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHZjdnNwdXhkcywgIl9fYnVpbHRpbl92c3hfeHZj dnNwdXhkcyIsIFZTWF9CVUlMVElOX1hWQ1ZTUFVYRFMgfSwKLSsgIHsgTUFTS19WU1gsIENPREVf Rk9SX3ZzeF94dmN2c3hkc3AsICJfX2J1aWx0aW5fdnN4X3h2Y3ZzeGRzcCIsIFZTWF9CVUlMVElO X1hWQ1ZTWERTUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h2Y3Z1eGRzcCwgIl9f YnVpbHRpbl92c3hfeHZjdnV4ZHNwIiwgVlNYX0JVSUxUSU5fWFZDVlVYRFNQIH0sCi0rICB7IE1B U0tfVlNYLCBDT0RFX0ZPUl92c3hfeHZyc3BpLCAiX19idWlsdGluX3ZzeF94dnJzcGkiLCBWU1hf QlVJTFRJTl9YVlJTUEkgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94dnJzcGljLCAi X19idWlsdGluX3ZzeF94dnJzcGljIiwgVlNYX0JVSUxUSU5fWFZSU1BJQyB9LAotKyAgeyBNQVNL X1ZTWCwgQ09ERV9GT1JfdnN4X2Zsb29ydjRzZjIsICJfX2J1aWx0aW5fdnN4X3h2cnNwaW0iLCBW U1hfQlVJTFRJTl9YVlJTUElNIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfY2VpbHY0 c2YyLCAiX19idWlsdGluX3ZzeF94dnJzcGlwIiwgVlNYX0JVSUxUSU5fWFZSU1BJUCB9LAotKyAg eyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2J0cnVuY3Y0c2YyLCAiX19idWlsdGluX3ZzeF94dnJz cGl6IiwgVlNYX0JVSUxUSU5fWFZSU1BJWiB9LAotKwotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jf dnN4X3hzcmRwaSwgIl9fYnVpbHRpbl92c3hfeHNyZHBpIiwgVlNYX0JVSUxUSU5fWFNSRFBJIH0s Ci0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHNyZHBpYywgIl9fYnVpbHRpbl92c3hfeHNy ZHBpYyIsIFZTWF9CVUlMVElOX1hTUkRQSUMgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3Zz eF9mbG9vcmRmMiwgIl9fYnVpbHRpbl92c3hfeHNyZHBpbSIsIFZTWF9CVUlMVElOX1hTUkRQSU0g fSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9jZWlsZGYyLCAiX19idWlsdGluX3ZzeF94 c3JkcGlwIiwgVlNYX0JVSUxUSU5fWFNSRFBJUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jf dnN4X2J0cnVuY2RmMiwgIl9fYnVpbHRpbl92c3hfeHNyZHBpeiIsIFZTWF9CVUlMVElOX1hTUkRQ SVogfSwKLSsKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGlu X3ZlY19hYnMiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX0FCUyB9LAotICAgeyBNQVNLX0FMVElWRUMs IENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX2Fic3MiLCBBTFRJVkVDX0JVSUxUSU5f VkVDX0FCU1MgfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWls dGluX3ZlY19jZWlsIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19DRUlMIH0sCi1AQCAtODU1MiwxNSAr ODcyMSw2IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiBiZGVzY18KLSAgIHsg TUFTS19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl9maXhfdHJ1bmN2NHNmdjRzaTIsICJfX2J1 aWx0aW5fdmVjX2ZpeF9zZnNpIiwgVkVDVE9SX0JVSUxUSU5fRklYX1Y0U0ZfVjRTSSB9LAotICAg eyBNQVNLX0FMVElWRUN8TUFTS19WU1gsIENPREVfRk9SX2ZpeHVuc190cnVuY3Y0c2Z2NHNpMiwg Il9fYnVpbHRpbl92ZWNfZml4dW5zX3Nmc2kiLCBWRUNUT1JfQlVJTFRJTl9GSVhVTlNfVjRTRl9W NFNJIH0sCi0gCi0tICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9mbG9hdHYyZGl2MmRmMiwgIl9fYnVp bHRpbl92c3hfeHZjdnN4ZGRwIiwgVlNYX0JVSUxUSU5fWFZDVlNYRERQIH0sCi0tICB7IE1BU0tf VlNYLCBDT0RFX0ZPUl91bnNpZ25lZF9mbG9hdHYyZGl2MmRmMiwgIl9fYnVpbHRpbl92c3hfeHZj dnV4ZGRwIiwgVlNYX0JVSUxUSU5fWFZDVlVYRERQIH0sCi0tICB7IE1BU0tfVlNYLCBDT0RFX0ZP Ul9maXhfdHJ1bmN2MmRmdjJkaTIsICJfX2J1aWx0aW5fdnN4X3h2ZHBzeGRzIiwgVlNYX0JVSUxU SU5fWFZDVkRQU1hEUyB9LAotLSAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfZml4dW5zX3RydW5jdjJk ZnYyZGkyLCAiX19idWlsdGluX3ZzeF94dmRwdXhkcyIsIFZTWF9CVUlMVElOX1hWQ1ZEUFVYRFMg fSwKLS0gIHsgTUFTS19WU1gsIENPREVfRk9SX2Zsb2F0djRzaXY0c2YyLCAiX19idWlsdGluX3Zz eF94dmN2c3h3c3AiLCBWU1hfQlVJTFRJTl9YVkNWU1hEU1AgfSwKLS0gIHsgTUFTS19WU1gsIENP REVfRk9SX3Vuc2lnbmVkX2Zsb2F0djRzaXY0c2YyLCAiX19idWlsdGluX3ZzeF94dmN2dXh3c3Ai LCBWU1hfQlVJTFRJTl9YVkNWVVhXU1AgfSwKLS0gIHsgTUFTS19WU1gsIENPREVfRk9SX2ZpeF90 cnVuY3Y0c2Z2NHNpMiwgIl9fYnVpbHRpbl92c3hfeHZzcHN4d3MiLCBWU1hfQlVJTFRJTl9YVkNW U1BTWFdTIH0sCi0tICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9maXh1bnNfdHJ1bmN2NHNmdjRzaTIs ICJfX2J1aWx0aW5fdnN4X3h2c3B1eHdzIiwgVlNYX0JVSUxUSU5fWFZDVlNQVVhXUyB9LAotLQot ICAgLyogVGhlIFNQRSB1bmFyeSBidWlsdGlucyBtdXN0IHN0YXJ0IHdpdGggU1BFX0JVSUxUSU5f RVZBQlMgYW5kCi0gICAgICBlbmQgd2l0aCBTUEVfQlVJTFRJTl9FVlNVQkZVU0lBQVcuICAqLwot ICAgeyAwLCBDT0RFX0ZPUl9zcGVfZXZhYnMsICJfX2J1aWx0aW5fc3BlX2V2YWJzIiwgU1BFX0JV SUxUSU5fRVZBQlMgfSwKLUBAIC05MDY1LDExICs5MjI1LDEyIEBAIHJzNjAwMF9leHBhbmRfdGVy bm9wX2J1aWx0aW4gKGVudW0gaW5zbl8KLSAgICAgICB8fCBhcmcyID09IGVycm9yX21hcmtfbm9k ZSkKLSAgICAgcmV0dXJuIGNvbnN0MF9ydHg7Ci0gCi0tICBpZiAoaWNvZGUgPT0gQ09ERV9GT1Jf YWx0aXZlY192c2xkb2lfdjRzZgotLSAgICAgIHx8IGljb2RlID09IENPREVfRk9SX2FsdGl2ZWNf dnNsZG9pX3Y0c2kKLS0gICAgICB8fCBpY29kZSA9PSBDT0RFX0ZPUl9hbHRpdmVjX3ZzbGRvaV92 OGhpCi0tICAgICAgfHwgaWNvZGUgPT0gQ09ERV9GT1JfYWx0aXZlY192c2xkb2lfdjE2cWkpCi0r ICBzd2l0Y2ggKGljb2RlKQotICAgICB7Ci0rICAgIGNhc2UgQ09ERV9GT1JfYWx0aXZlY192c2xk b2lfdjRzZjoKLSsgICAgY2FzZSBDT0RFX0ZPUl9hbHRpdmVjX3ZzbGRvaV92NHNpOgotKyAgICBj YXNlIENPREVfRk9SX2FsdGl2ZWNfdnNsZG9pX3Y4aGk6Ci0rICAgIGNhc2UgQ09ERV9GT1JfYWx0 aXZlY192c2xkb2lfdjE2cWk6Ci0gICAgICAgLyogT25seSBhbGxvdyA0LWJpdCB1bnNpZ25lZCBs aXRlcmFscy4gICovCi0gICAgICAgU1RSSVBfTk9QUyAoYXJnMik7Ci0gICAgICAgaWYgKFRSRUVf Q09ERSAoYXJnMikgIT0gSU5URUdFUl9DU1QKLUBAIC05MDc4LDYgKzkyMzksNDAgQEAgcnM2MDAw X2V4cGFuZF90ZXJub3BfYnVpbHRpbiAoZW51bSBpbnNuXwotIAkgIGVycm9yICgiYXJndW1lbnQg MyBtdXN0IGJlIGEgNC1iaXQgdW5zaWduZWQgbGl0ZXJhbCIpOwotIAkgIHJldHVybiBjb25zdDBf cnR4OwotIAl9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERV9GT1JfdnN4X3h4cGVy bWRpX3YyZGY6Ci0rICAgIGNhc2UgQ09ERV9GT1JfdnN4X3h4cGVybWRpX3YyZGk6Ci0rICAgIGNh c2UgQ09ERV9GT1JfdnN4X3h4c2xkd2lfdjE2cWk6Ci0rICAgIGNhc2UgQ09ERV9GT1JfdnN4X3h4 c2xkd2lfdjhoaToKLSsgICAgY2FzZSBDT0RFX0ZPUl92c3hfeHhzbGR3aV92NHNpOgotKyAgICBj YXNlIENPREVfRk9SX3ZzeF94eHNsZHdpX3Y0c2Y6Ci0rICAgIGNhc2UgQ09ERV9GT1JfdnN4X3h4 c2xkd2lfdjJkaToKLSsgICAgY2FzZSBDT0RFX0ZPUl92c3hfeHhzbGR3aV92MmRmOgotKyAgICAg IC8qIE9ubHkgYWxsb3cgMi1iaXQgdW5zaWduZWQgbGl0ZXJhbHMuICAqLwotKyAgICAgIFNUUklQ X05PUFMgKGFyZzIpOwotKyAgICAgIGlmIChUUkVFX0NPREUgKGFyZzIpICE9IElOVEVHRVJfQ1NU Ci0rCSAgfHwgVFJFRV9JTlRfQ1NUX0xPVyAoYXJnMikgJiB+MHgzKQotKwl7Ci0rCSAgZXJyb3Ig KCJhcmd1bWVudCAzIG11c3QgYmUgYSAyLWJpdCB1bnNpZ25lZCBsaXRlcmFsIik7Ci0rCSAgcmV0 dXJuIGNvbnN0MF9ydHg7Ci0rCX0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFX0ZP Ul92c3hfc2V0X3YyZGY6Ci0rICAgIGNhc2UgQ09ERV9GT1JfdnN4X3NldF92MmRpOgotKyAgICAg IC8qIE9ubHkgYWxsb3cgMS1iaXQgdW5zaWduZWQgbGl0ZXJhbHMuICAqLwotKyAgICAgIFNUUklQ X05PUFMgKGFyZzIpOwotKyAgICAgIGlmIChUUkVFX0NPREUgKGFyZzIpICE9IElOVEVHRVJfQ1NU Ci0rCSAgfHwgVFJFRV9JTlRfQ1NUX0xPVyAoYXJnMikgJiB+MHgxKQotKwl7Ci0rCSAgZXJyb3Ig KCJhcmd1bWVudCAzIG11c3QgYmUgYSAxLWJpdCB1bnNpZ25lZCBsaXRlcmFsIik7Ci0rCSAgcmV0 dXJuIGNvbnN0MF9ydHg7Ci0rCX0KLSsgICAgICBicmVhazsKLSsKLSsgICAgZGVmYXVsdDoKLSsg ICAgICBicmVhazsKLSAgICAgfQotIAotICAgaWYgKHRhcmdldCA9PSAwCi1AQCAtOTM4NSw4ICs5 NTgwLDEwIEBAIGFsdGl2ZWNfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGEKLSAgIGVu dW0gbWFjaGluZV9tb2RlIHRtb2RlLCBtb2RlMDsKLSAgIHVuc2lnbmVkIGludCBmY29kZSA9IERF Q0xfRlVOQ1RJT05fQ09ERSAoZm5kZWNsKTsKLSAKLS0gIGlmIChmY29kZSA+PSBBTFRJVkVDX0JV SUxUSU5fT1ZFUkxPQURFRF9GSVJTVAotLSAgICAgICYmIGZjb2RlIDw9IEFMVElWRUNfQlVJTFRJ Tl9PVkVSTE9BREVEX0xBU1QpCi0rICBpZiAoKGZjb2RlID49IEFMVElWRUNfQlVJTFRJTl9PVkVS TE9BREVEX0ZJUlNUCi0rICAgICAgICYmIGZjb2RlIDw9IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9B REVEX0xBU1QpCi0rICAgICAgfHwgKGZjb2RlID49IFZTWF9CVUlMVElOX09WRVJMT0FERURfRklS U1QKLSsJICAmJiBmY29kZSA8PSBWU1hfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpKQotICAgICB7 Ci0gICAgICAgKmV4cGFuZGVkcCA9IHRydWU7Ci0gICAgICAgZXJyb3IgKCJ1bnJlc29sdmVkIG92 ZXJsb2FkIGZvciBBbHRpdmVjIGJ1aWx0aW4gJXFGIiwgZm5kZWNsKTsKLUBAIC0xMDE3NSw2ICsx MDM3Miw3IEBAIHJzNjAwMF9pbml0X2J1aWx0aW5zICh2b2lkKQotICAgdW5zaWduZWRfVjE2UUlf dHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKHVuc2lnbmVkX2ludFFJX3R5cGVfbm9kZSwg MTYpOwotICAgdW5zaWduZWRfVjhISV90eXBlX25vZGUgPSBidWlsZF92ZWN0b3JfdHlwZSAodW5z aWduZWRfaW50SElfdHlwZV9ub2RlLCA4KTsKLSAgIHVuc2lnbmVkX1Y0U0lfdHlwZV9ub2RlID0g YnVpbGRfdmVjdG9yX3R5cGUgKHVuc2lnbmVkX2ludFNJX3R5cGVfbm9kZSwgNCk7Ci0rICB1bnNp Z25lZF9WMkRJX3R5cGVfbm9kZSA9IGJ1aWxkX3ZlY3Rvcl90eXBlICh1bnNpZ25lZF9pbnRESV90 eXBlX25vZGUsIDIpOwotIAotICAgb3BhcXVlX1YyU0ZfdHlwZV9ub2RlID0gYnVpbGRfb3BhcXVl X3ZlY3Rvcl90eXBlIChmbG9hdF90eXBlX25vZGUsIDIpOwotICAgb3BhcXVlX1YyU0lfdHlwZV9u b2RlID0gYnVpbGRfb3BhcXVlX3ZlY3Rvcl90eXBlIChpbnRTSV90eXBlX25vZGUsIDIpOwotQEAg LTEwMTg4LDYgKzEwMzg2LDcgQEAgcnM2MDAwX2luaXRfYnVpbHRpbnMgKHZvaWQpCi0gICBib29s X2NoYXJfdHlwZV9ub2RlID0gYnVpbGRfZGlzdGluY3RfdHlwZV9jb3B5ICh1bnNpZ25lZF9pbnRR SV90eXBlX25vZGUpOwotICAgYm9vbF9zaG9ydF90eXBlX25vZGUgPSBidWlsZF9kaXN0aW5jdF90 eXBlX2NvcHkgKHVuc2lnbmVkX2ludEhJX3R5cGVfbm9kZSk7Ci0gICBib29sX2ludF90eXBlX25v ZGUgPSBidWlsZF9kaXN0aW5jdF90eXBlX2NvcHkgKHVuc2lnbmVkX2ludFNJX3R5cGVfbm9kZSk7 Ci0rICBib29sX2xvbmdfdHlwZV9ub2RlID0gYnVpbGRfZGlzdGluY3RfdHlwZV9jb3B5ICh1bnNp Z25lZF9pbnRESV90eXBlX25vZGUpOwotICAgcGl4ZWxfdHlwZV9ub2RlID0gYnVpbGRfZGlzdGlu Y3RfdHlwZV9jb3B5ICh1bnNpZ25lZF9pbnRISV90eXBlX25vZGUpOwotIAotICAgbG9uZ19pbnRl Z2VyX3R5cGVfaW50ZXJuYWxfbm9kZSA9IGxvbmdfaW50ZWdlcl90eXBlX25vZGU7Ci1AQCAtMTAy MjAsNiArMTA0MTksNyBAQCByczYwMDBfaW5pdF9idWlsdGlucyAodm9pZCkKLSAgIGJvb2xfVjE2 UUlfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKGJvb2xfY2hhcl90eXBlX25vZGUsIDE2 KTsKLSAgIGJvb2xfVjhISV90eXBlX25vZGUgPSBidWlsZF92ZWN0b3JfdHlwZSAoYm9vbF9zaG9y dF90eXBlX25vZGUsIDgpOwotICAgYm9vbF9WNFNJX3R5cGVfbm9kZSA9IGJ1aWxkX3ZlY3Rvcl90 eXBlIChib29sX2ludF90eXBlX25vZGUsIDQpOwotKyAgYm9vbF9WMkRJX3R5cGVfbm9kZSA9IGJ1 aWxkX3ZlY3Rvcl90eXBlIChib29sX2xvbmdfdHlwZV9ub2RlLCAyKTsKLSAgIHBpeGVsX1Y4SElf dHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKHBpeGVsX3R5cGVfbm9kZSwgOCk7Ci0gCi0g ICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RFQ0wsCi1A QCAtMTAyNjAsOSArMTA0NjAsMTcgQEAgcnM2MDAwX2luaXRfYnVpbHRpbnMgKHZvaWQpCi0gCQkJ CQkgICAgcGl4ZWxfVjhISV90eXBlX25vZGUpKTsKLSAKLSAgIGlmIChUQVJHRVRfVlNYKQotLSAg ICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RFQ0wsCi0t CQkJCQkgICAgICBnZXRfaWRlbnRpZmllciAoIl9fdmVjdG9yIGRvdWJsZSIpLAotLQkJCQkJICAg ICAgVjJERl90eXBlX25vZGUpKTsKLSsgICAgewotKyAgICAgICgqbGFuZ19ob29rcy5kZWNscy5w dXNoZGVjbCkgKGJ1aWxkX2RlY2wgKFRZUEVfREVDTCwKLSsJCQkJCQlnZXRfaWRlbnRpZmllciAo Il9fdmVjdG9yIGRvdWJsZSIpLAotKwkJCQkJCVYyREZfdHlwZV9ub2RlKSk7Ci0rICAgICAgKCps YW5nX2hvb2tzLmRlY2xzLnB1c2hkZWNsKSAoYnVpbGRfZGVjbCAoVFlQRV9ERUNMLAotKwkJCQkJ CWdldF9pZGVudGlmaWVyICgiX192ZWN0b3IgbG9uZyIpLAotKwkJCQkJCVYyRElfdHlwZV9ub2Rl KSk7Ci0rICAgICAgKCpsYW5nX2hvb2tzLmRlY2xzLnB1c2hkZWNsKSAoYnVpbGRfZGVjbCAoVFlQ RV9ERUNMLAotKwkJCQkJCWdldF9pZGVudGlmaWVyICgiX192ZWN0b3IgX19ib29sIGxvbmciKSwK LSsJCQkJCQlib29sX1YyRElfdHlwZV9ub2RlKSk7Ci0rICAgIH0KLSAKLSAgIGlmIChUQVJHRVRf UEFJUkVEX0ZMT0FUKQotICAgICBwYWlyZWRfaW5pdF9idWlsdGlucyAoKTsKLUBAIC0xMDgzNyw4 ICsxMTA0NSwxMCBAQCBhbHRpdmVjX2luaXRfYnVpbHRpbnMgKHZvaWQpCi0gICAgIHsKLSAgICAg ICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlMTsKLSAgICAgICB0cmVlIHR5cGU7Ci0tICAgICAgYm9v bCBpc19vdmVybG9hZGVkID0gZHAtPmNvZGUgPj0gQUxUSVZFQ19CVUlMVElOX09WRVJMT0FERURf RklSU1QKLS0JCQkgICAmJiBkcC0+Y29kZSA8PSBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9M QVNUOwotKyAgICAgIGJvb2wgaXNfb3ZlcmxvYWRlZCA9ICgoZHAtPmNvZGUgPj0gQUxUSVZFQ19C VUlMVElOX09WRVJMT0FERURfRklSU1QKLSsJCQkgICAgICYmIGRwLT5jb2RlIDw9IEFMVElWRUNf QlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpCi0rCQkJICAgIHx8IChkcC0+Y29kZSA+PSBWU1hfQlVJ TFRJTl9PVkVSTE9BREVEX0ZJUlNUCi0rCQkJCSYmIGRwLT5jb2RlIDw9IFZTWF9CVUlMVElOX09W RVJMT0FERURfTEFTVCkpOwotIAotICAgICAgIGlmIChpc19vdmVybG9hZGVkKQotIAltb2RlMSA9 IFZPSURtb2RlOwotQEAgLTExMDAxLDU5MiArMTEyMTEsMzAyIEBAIGFsdGl2ZWNfaW5pdF9idWls dGlucyAodm9pZCkKLSAJICAgICAgIEFMVElWRUNfQlVJTFRJTl9WRUNfRVhUX1Y0U0YpOwotIH0K LSAKLS1zdGF0aWMgdm9pZAotLXJzNjAwMF9jb21tb25faW5pdF9idWlsdGlucyAodm9pZCkKLSsv KiBIYXNoIGZ1bmN0aW9uIGZvciBidWlsdGluIGZ1bmN0aW9ucyB3aXRoIHVwIHRvIDMgYXJndW1l bnRzIGFuZCBhIHJldHVybgotKyAgIHR5cGUuICAqLwotK3N0YXRpYyB1bnNpZ25lZAotK2J1aWx0 aW5faGFzaF9mdW5jdGlvbiAoY29uc3Qgdm9pZCAqaGFzaF9lbnRyeSkKLSB7Ci0tICBjb25zdCBz dHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiAqZDsKLS0gIHNpemVfdCBpOwotKyAgdW5zaWduZWQg cmV0ID0gMDsKLSsgIGludCBpOwotKyAgY29uc3Qgc3RydWN0IGJ1aWx0aW5faGFzaF9zdHJ1Y3Qg KmJoID0KLSsgICAgKGNvbnN0IHN0cnVjdCBidWlsdGluX2hhc2hfc3RydWN0ICopIGhhc2hfZW50 cnk7Ci0gCi0tICB0cmVlIHYyc2ZfZnR5cGVfdjJzZl92MnNmX3Yyc2YKLS0gICAgPSBidWlsZF9m dW5jdGlvbl90eXBlX2xpc3QgKFYyU0ZfdHlwZV9ub2RlLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVjJTRl90eXBlX25vZGUsIFYyU0ZfdHlwZV9ub2RlLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVjJTRl90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tCi0tICB0 cmVlIHY0c2ZfZnR5cGVfdjRzZl92NHNmX3YxNnFpCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlw ZV9saXN0IChWNFNGX3R5cGVfbm9kZSwKLS0JCQkJVjRTRl90eXBlX25vZGUsIFY0U0ZfdHlwZV9u b2RlLAotLQkJCQlWMTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIHY0c2lfZnR5 cGVfdjRzaV92NHNpX3YxNnFpCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJ X3R5cGVfbm9kZSwKLS0JCQkJVjRTSV90eXBlX25vZGUsIFY0U0lfdHlwZV9ub2RlLAotLQkJCQlW MTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIHY4aGlfZnR5cGVfdjhoaV92OGhp X3YxNnFpCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwK LS0JCQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLAotLQkJCQlWMTZRSV90eXBlX25v ZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIHYxNnFpX2Z0eXBlX3YxNnFpX3YxNnFpX3YxNnFpCi0t ICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMTZRSV90eXBlX25vZGUsCi0tCQkJCVYx NlFJX3R5cGVfbm9kZSwgVjE2UUlfdHlwZV9ub2RlLAotLQkJCQlWMTZRSV90eXBlX25vZGUsIE5V TExfVFJFRSk7Ci0tICB0cmVlIHY0c2lfZnR5cGVfaW50Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25f dHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwgaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7 Ci0tICB0cmVlIHY4aGlfZnR5cGVfaW50Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0 IChWOEhJX3R5cGVfbm9kZSwgaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVl IHYxNnFpX2Z0eXBlX2ludAotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjE2UUlf dHlwZV9ub2RlLCBpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjhoaV9m dHlwZV92MTZxaQotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjhISV90eXBlX25v ZGUsIFYxNlFJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjRzZl9mdHlwZV92NHNm Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNGX3R5cGVfbm9kZSwgVjRTRl90 eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQotKyAgICBy ZXQgPSAocmV0ICogKHVuc2lnbmVkKU1BWF9NQUNISU5FX01PREUpICsgKCh1bnNpZ25lZCliaC0+ bW9kZVtpXSk7Ci0gCi0tICB0cmVlIHYyc2lfZnR5cGVfdjJzaV92MnNpCi0tICAgID0gYnVpbGRf ZnVuY3Rpb25fdHlwZV9saXN0IChvcGFxdWVfVjJTSV90eXBlX25vZGUsCi0tCQkJCW9wYXF1ZV9W MlNJX3R5cGVfbm9kZSwKLS0JCQkJb3BhcXVlX1YyU0lfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwot LQotLSAgdHJlZSB2MnNmX2Z0eXBlX3Yyc2ZfdjJzZl9zcGUKLS0gICAgPSBidWlsZF9mdW5jdGlv bl90eXBlX2xpc3QgKG9wYXF1ZV9WMlNGX3R5cGVfbm9kZSwKLS0JCQkJb3BhcXVlX1YyU0ZfdHlw ZV9ub2RlLAotLQkJCQlvcGFxdWVfVjJTRl90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tCi0tICB0 cmVlIHYyc2ZfZnR5cGVfdjJzZl92MnNmCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0 IChWMlNGX3R5cGVfbm9kZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYyU0Zf dHlwZV9ub2RlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjJTRl90eXBlX25v ZGUsIE5VTExfVFJFRSk7Ci0tCi0tCi0tICB0cmVlIHYyc2lfZnR5cGVfaW50X2ludAotLSAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1YyU0lfdHlwZV9ub2RlLAotLQkJCQlp bnRlZ2VyX3R5cGVfbm9kZSwgaW50ZWdlcl90eXBlX25vZGUsCi0tCQkJCU5VTExfVFJFRSk7Ci0r ICByZXR1cm4gcmV0OwotK30KLSAKLS0gIHRyZWUgb3BhcXVlX2Z0eXBlX29wYXF1ZQotLSAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1Y0U0lfdHlwZV9ub2RlLAotLQkJCQlv cGFxdWVfVjRTSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0rLyogQ29tcGFyZSBidWlsdGluIGhh c2ggZW50cmllcyBIMSBhbmQgSDIgZm9yIGVxdWl2YWxlbmNlLiAgKi8KLStzdGF0aWMgaW50Ci0r YnVpbHRpbl9oYXNoX2VxIChjb25zdCB2b2lkICpoMSwgY29uc3Qgdm9pZCAqaDIpCi0rewotKyAg Y29uc3Qgc3RydWN0IGJ1aWx0aW5faGFzaF9zdHJ1Y3QgKnAxID0gKGNvbnN0IHN0cnVjdCBidWls dGluX2hhc2hfc3RydWN0ICopIGgxOwotKyAgY29uc3Qgc3RydWN0IGJ1aWx0aW5faGFzaF9zdHJ1 Y3QgKnAyID0gKGNvbnN0IHN0cnVjdCBidWlsdGluX2hhc2hfc3RydWN0ICopIGgyOwotIAotLSAg dHJlZSB2MnNpX2Z0eXBlX3Yyc2kKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKG9w YXF1ZV9WMlNJX3R5cGVfbm9kZSwKLS0JCQkJb3BhcXVlX1YyU0lfdHlwZV9ub2RlLCBOVUxMX1RS RUUpOwotLQotLSAgdHJlZSB2MnNmX2Z0eXBlX3Yyc2Zfc3BlCi0tICAgID0gYnVpbGRfZnVuY3Rp b25fdHlwZV9saXN0IChvcGFxdWVfVjJTRl90eXBlX25vZGUsCi0tCQkJCW9wYXF1ZV9WMlNGX3R5 cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0KLS0gIHRyZWUgdjJzZl9mdHlwZV92MnNmCi0tICAgID0g YnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMlNGX3R5cGVfbm9kZSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFYyU0ZfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLQotLSAgdHJl ZSB2MnNmX2Z0eXBlX3Yyc2kKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKG9wYXF1 ZV9WMlNGX3R5cGVfbm9kZSwKLS0JCQkJb3BhcXVlX1YyU0lfdHlwZV9ub2RlLCBOVUxMX1RSRUUp OwotLQotLSAgdHJlZSB2MnNpX2Z0eXBlX3Yyc2YKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBl X2xpc3QgKG9wYXF1ZV9WMlNJX3R5cGVfbm9kZSwKLS0JCQkJb3BhcXVlX1YyU0ZfdHlwZV9ub2Rl LCBOVUxMX1RSRUUpOwotLQotLSAgdHJlZSB2MnNpX2Z0eXBlX3Yyc2lfY2hhcgotLSAgICA9IGJ1 aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1YyU0lfdHlwZV9ub2RlLAotLQkJCQlvcGFx dWVfVjJTSV90eXBlX25vZGUsCi0tCQkJCWNoYXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLQot LSAgdHJlZSB2MnNpX2Z0eXBlX2ludF9jaGFyCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9s aXN0IChvcGFxdWVfVjJTSV90eXBlX25vZGUsCi0tCQkJCWludGVnZXJfdHlwZV9ub2RlLCBjaGFy X3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0KLS0gIHRyZWUgdjJzaV9mdHlwZV9jaGFyCi0tICAg ID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChvcGFxdWVfVjJTSV90eXBlX25vZGUsCi0tCQkJ CWNoYXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotKyAgcmV0dXJuICgocDEtPm1vZGVbMF0gPT0g cDItPm1vZGVbMF0pCi0rCSAgJiYgKHAxLT5tb2RlWzFdID09IHAyLT5tb2RlWzFdKQotKwkgICYm IChwMS0+bW9kZVsyXSA9PSBwMi0+bW9kZVsyXSkKLSsJICAmJiAocDEtPm1vZGVbM10gPT0gcDIt Pm1vZGVbM10pKTsKLSt9Ci0gCi0tICB0cmVlIGludF9mdHlwZV9pbnRfaW50Ci0tICAgID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVfbm9kZSwKLS0JCQkJaW50ZWdlcl90 eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlLAotLQkJCQlOVUxMX1RSRUUpOwotKy8qIE1hcCBz ZWxlY3RlZCBtb2RlcyB0byB0eXBlcyBmb3IgYnVpbHRpbnMuICAqLwotK3N0YXRpYyB0cmVlIGJ1 aWx0aW5fbW9kZV90b190eXBlW01BWF9NQUNISU5FX01PREVdOwotIAotLSAgdHJlZSBvcGFxdWVf ZnR5cGVfb3BhcXVlX29wYXF1ZQotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3Bh cXVlX1Y0U0lfdHlwZV9ub2RlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bh cXVlX1Y0U0lfdHlwZV9ub2RlLCBvcGFxdWVfVjRTSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0t ICB0cmVlIHY0c2lfZnR5cGVfdjRzaV92NHNpCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9s aXN0IChWNFNJX3R5cGVfbm9kZSwKLS0JCQkJVjRTSV90eXBlX25vZGUsIFY0U0lfdHlwZV9ub2Rl LCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2NHNmX2Z0eXBlX3Y0c2lfaW50Ci0tICAgID0gYnVpbGRf ZnVuY3Rpb25fdHlwZV9saXN0IChWNFNGX3R5cGVfbm9kZSwKLS0JCQkJVjRTSV90eXBlX25vZGUs IGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2NHNpX2Z0eXBlX3Y0c2Zf aW50Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwKLS0J CQkJVjRTRl90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJl ZSB2NHNpX2Z0eXBlX3Y0c2lfaW50Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChW NFNJX3R5cGVfbm9kZSwKLS0JCQkJVjRTSV90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlLCBO VUxMX1RSRUUpOwotLSAgdHJlZSB2OGhpX2Z0eXBlX3Y4aGlfaW50Ci0tICAgID0gYnVpbGRfZnVu Y3Rpb25fdHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwKLS0JCQkJVjhISV90eXBlX25vZGUsIGlu dGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2MTZxaV9mdHlwZV92MTZxaV9p bnQKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYxNlFJX3R5cGVfbm9kZSwKLS0J CQkJVjE2UUlfdHlwZV9ub2RlLCBpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRy ZWUgdjE2cWlfZnR5cGVfdjE2cWlfdjE2cWlfaW50Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlw ZV9saXN0IChWMTZRSV90eXBlX25vZGUsCi0tCQkJCVYxNlFJX3R5cGVfbm9kZSwgVjE2UUlfdHlw ZV9ub2RlLAotLQkJCQlpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjho aV9mdHlwZV92OGhpX3Y4aGlfaW50Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChW OEhJX3R5cGVfbm9kZSwKLS0JCQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLAotLQkJ CQlpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjRzaV9mdHlwZV92NHNp X3Y0c2lfaW50Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9k ZSwKLS0JCQkJVjRTSV90eXBlX25vZGUsIFY0U0lfdHlwZV9ub2RlLAotLQkJCQlpbnRlZ2VyX3R5 cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjRzZl9mdHlwZV92NHNmX3Y0c2ZfaW50Ci0t ICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNGX3R5cGVfbm9kZSwKLS0JCQkJVjRT Rl90eXBlX25vZGUsIFY0U0ZfdHlwZV9ub2RlLAotLQkJCQlpbnRlZ2VyX3R5cGVfbm9kZSwgTlVM TF9UUkVFKTsKLS0gIHRyZWUgdjRzZl9mdHlwZV92NHNmX3Y0c2YKLS0gICAgPSBidWlsZF9mdW5j dGlvbl90eXBlX2xpc3QgKFY0U0ZfdHlwZV9ub2RlLAotLQkJCQlWNFNGX3R5cGVfbm9kZSwgVjRT Rl90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIG9wYXF1ZV9mdHlwZV9vcGFxdWVfb3Bh cXVlX29wYXF1ZQotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1Y0U0lf dHlwZV9ub2RlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhcXVlX1Y0U0lf dHlwZV9ub2RlLCBvcGFxdWVfVjRTSV90eXBlX25vZGUsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvcGFxdWVfVjRTSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIHY0 c2ZfZnR5cGVfdjRzZl92NHNmX3Y0c2kKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3Qg KFY0U0ZfdHlwZV9ub2RlLAotLQkJCQlWNFNGX3R5cGVfbm9kZSwgVjRTRl90eXBlX25vZGUsCi0t CQkJCVY0U0lfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2NHNmX2Z0eXBlX3Y0c2Zf djRzZl92NHNmCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNGX3R5cGVfbm9k ZSwKLS0JCQkJVjRTRl90eXBlX25vZGUsIFY0U0ZfdHlwZV9ub2RlLAotLQkJCQlWNFNGX3R5cGVf bm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjRzaV9mdHlwZV92NHNpX3Y0c2lfdjRzaQotLSAg ICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTSV90eXBlX25vZGUsCi0tCQkJCVY0U0lf dHlwZV9ub2RlLCBWNFNJX3R5cGVfbm9kZSwKLS0JCQkJVjRTSV90eXBlX25vZGUsIE5VTExfVFJF RSk7Ci0tICB0cmVlIHY4aGlfZnR5cGVfdjhoaV92OGhpCi0tICAgID0gYnVpbGRfZnVuY3Rpb25f dHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwKLS0JCQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2OGhpX2Z0eXBlX3Y4aGlfdjhoaV92OGhpCi0t ICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwKLS0JCQkJVjhI SV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLAotLQkJCQlWOEhJX3R5cGVfbm9kZSwgTlVMTF9U UkVFKTsKLS0gIHRyZWUgdjRzaV9mdHlwZV92OGhpX3Y4aGlfdjRzaQotLSAgICA9IGJ1aWxkX2Z1 bmN0aW9uX3R5cGVfbGlzdCAoVjRTSV90eXBlX25vZGUsCi0tCQkJCVY4SElfdHlwZV9ub2RlLCBW OEhJX3R5cGVfbm9kZSwKLS0JCQkJVjRTSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVl IHY0c2lfZnR5cGVfdjE2cWlfdjE2cWlfdjRzaQotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVf bGlzdCAoVjRTSV90eXBlX25vZGUsCi0tCQkJCVYxNlFJX3R5cGVfbm9kZSwgVjE2UUlfdHlwZV9u b2RlLAotLQkJCQlWNFNJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjE2cWlfZnR5 cGVfdjE2cWlfdjE2cWkKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYxNlFJX3R5 cGVfbm9kZSwKLS0JCQkJVjE2UUlfdHlwZV9ub2RlLCBWMTZRSV90eXBlX25vZGUsIE5VTExfVFJF RSk7Ci0tICB0cmVlIHY0c2lfZnR5cGVfdjRzZl92NHNmCi0tICAgID0gYnVpbGRfZnVuY3Rpb25f dHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwKLS0JCQkJVjRTRl90eXBlX25vZGUsIFY0U0ZfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2OGhpX2Z0eXBlX3YxNnFpX3YxNnFpCi0tICAg ID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwKLS0JCQkJVjE2UUlf dHlwZV9ub2RlLCBWMTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIHY0c2lfZnR5 cGVfdjhoaV92OGhpCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVf bm9kZSwKLS0JCQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwot LSAgdHJlZSB2OGhpX2Z0eXBlX3Y0c2lfdjRzaQotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVf bGlzdCAoVjhISV90eXBlX25vZGUsCi0tCQkJCVY0U0lfdHlwZV9ub2RlLCBWNFNJX3R5cGVfbm9k ZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjE2cWlfZnR5cGVfdjhoaV92OGhpCi0tICAgID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMTZRSV90eXBlX25vZGUsCi0tCQkJCVY4SElfdHlwZV9u b2RlLCBWOEhJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjRzaV9mdHlwZV92MTZx aV92NHNpCi0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwK LS0JCQkJVjE2UUlfdHlwZV9ub2RlLCBWNFNJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRy ZWUgdjRzaV9mdHlwZV92MTZxaV92MTZxaQotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlz dCAoVjRTSV90eXBlX25vZGUsCi0tCQkJCVYxNlFJX3R5cGVfbm9kZSwgVjE2UUlfdHlwZV9ub2Rl LCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2NHNpX2Z0eXBlX3Y4aGlfdjRzaQotLSAgICA9IGJ1aWxk X2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTSV90eXBlX25vZGUsCi0tCQkJCVY4SElfdHlwZV9ub2Rl LCBWNFNJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjRzaV9mdHlwZV92OGhpCi0t ICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwgVjhISV90eXBl X25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIGludF9mdHlwZV92NHNpX3Y0c2kKLS0gICAgPSBi dWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGludGVnZXJfdHlwZV9ub2RlLAotLQkJCQlWNFNJX3R5 cGVfbm9kZSwgVjRTSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIGludF9mdHlwZV92 NHNmX3Y0c2YKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGludGVnZXJfdHlwZV9u b2RlLAotLQkJCQlWNFNGX3R5cGVfbm9kZSwgVjRTRl90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0t ICB0cmVlIGludF9mdHlwZV92MTZxaV92MTZxaQotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVf bGlzdCAoaW50ZWdlcl90eXBlX25vZGUsCi0tCQkJCVYxNlFJX3R5cGVfbm9kZSwgVjE2UUlfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSBpbnRfZnR5cGVfdjhoaV92OGhpCi0tICAgID0g YnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVfbm9kZSwKLS0JCQkJVjhISV90 eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2MmRpX2Z0eXBl X3YyZGYKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYyRElfdHlwZV9ub2RlLAot LQkJCQlWMkRGX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjJkZl9mdHlwZV92MmRm Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMkRGX3R5cGVfbm9kZSwKLS0JCQkJ VjJERl90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIHYyZGZfZnR5cGVfdjJkaQotLSAg ICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJERl90eXBlX25vZGUsCi0tCQkJCVYyRElf dHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2MmRmX2Z0eXBlX3YyZGZfdjJkZgotLSAg ICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJERl90eXBlX25vZGUsCi0tCQkJCVYyREZf dHlwZV9ub2RlLCBWMkRGX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjJkZl9mdHlw ZV92MmRmX3YyZGZfdjJkZgotLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJERl90 eXBlX25vZGUsCi0tCQkJCVYyREZfdHlwZV9ub2RlLCBWMkRGX3R5cGVfbm9kZSwKLS0JCQkJVjJE Rl90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0tICB0cmVlIHYyZGlfZnR5cGVfdjJkaV92MmRpX3Yy ZGkKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYyRElfdHlwZV9ub2RlLAotLQkJ CQlWMkRJX3R5cGVfbm9kZSwgVjJESV90eXBlX25vZGUsCi0tCQkJCVYyRElfdHlwZV9ub2RlLCBO VUxMX1RSRUUpOwotLSAgdHJlZSB2MmRmX2Z0eXBlX3YyZGZfdjJkZl92MTZxaQotLSAgICA9IGJ1 aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJERl90eXBlX25vZGUsCi0tCQkJCVYyREZfdHlwZV9u b2RlLCBWMkRGX3R5cGVfbm9kZSwKLS0JCQkJVjE2UUlfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwot LSAgdHJlZSB2MmRpX2Z0eXBlX3YyZGlfdjJkaV92MTZxaQotLSAgICA9IGJ1aWxkX2Z1bmN0aW9u X3R5cGVfbGlzdCAoVjJESV90eXBlX25vZGUsCi0tCQkJCVYyRElfdHlwZV9ub2RlLCBWMkRJX3R5 cGVfbm9kZSwKLS0JCQkJVjE2UUlfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotLSAgdHJlZSB2NHNm X2Z0eXBlX3Y0c2kKLS0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFY0U0ZfdHlwZV9u b2RlLCBWNFNJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLS0gIHRyZWUgdjRzaV9mdHlwZV92NHNm Ci0tICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwgVjRTRl90 eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0rLyogTWFwIHR5cGVzIGZvciBidWlsdGluIGZ1bmN0aW9u cyB3aXRoIGFuIGV4cGxpY2l0IHJldHVybiB0eXBlIGFuZCB1cCB0byAzCi0rICAgYXJndW1lbnRz LiAgRnVuY3Rpb25zIHdpdGggZmV3ZXIgdGhhbiAzIGFyZ3VtZW50cyB1c2UgVk9JRG1vZGUgYXMg dGhlIHR5cGUKLSsgICBvZiB0aGUgYXJndW1lbnQuICAqLwotK3N0YXRpYyB0cmVlCi0rYnVpbHRp bl9mdW5jdGlvbl90eXBlIChlbnVtIG1hY2hpbmVfbW9kZSBtb2RlX3JldCwgZW51bSBtYWNoaW5l X21vZGUgbW9kZV9hcmcwLAotKwkJICAgICAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGVfYXJnMSwg ZW51bSBtYWNoaW5lX21vZGUgbW9kZV9hcmcyLAotKwkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUp Ci0rewotKyAgc3RydWN0IGJ1aWx0aW5faGFzaF9zdHJ1Y3QgaDsKLSsgIHN0cnVjdCBidWlsdGlu X2hhc2hfc3RydWN0ICpoMjsKLSsgIHZvaWQgKipmb3VuZDsKLSsgIGludCBudW1fYXJncyA9IDM7 Ci0rICBpbnQgaTsKLSAKLS0gIC8qIEFkZCB0aGUgc2ltcGxlIHRlcm5hcnkgb3BlcmF0b3JzLiAg Ki8KLSsgIC8qIENyZWF0ZSBidWlsdGluX2hhc2hfdGFibGUuICAqLwotKyAgaWYgKGJ1aWx0aW5f aGFzaF90YWJsZSA9PSBOVUxMKQotKyAgICBidWlsdGluX2hhc2hfdGFibGUgPSBodGFiX2NyZWF0 ZV9nZ2MgKDE1MDAsIGJ1aWx0aW5faGFzaF9mdW5jdGlvbiwKLSsJCQkJCSAgYnVpbHRpbl9oYXNo X2VxLCBOVUxMKTsKLSsKLSsgIGgudHlwZSA9IE5VTExfVFJFRTsKLSsgIGgubW9kZVswXSA9IG1v ZGVfcmV0OwotKyAgaC5tb2RlWzFdID0gbW9kZV9hcmcwOwotKyAgaC5tb2RlWzJdID0gbW9kZV9h cmcxOwotKyAgaC5tb2RlWzNdID0gbW9kZV9hcmcyOwotKwotKyAgLyogRmlndXJlIG91dCBob3cg bWFueSBhcmdzIGFyZSBwcmVzZW50LiAgKi8KLSsgIHdoaWxlIChudW1fYXJncyA+IDAgJiYgaC5t b2RlW251bV9hcmdzXSA9PSBWT0lEbW9kZSkKLSsgICAgbnVtX2FyZ3MtLTsKLSsKLSsgIGlmIChu dW1fYXJncyA9PSAwKQotKyAgICBmYXRhbF9lcnJvciAoImludGVybmFsIGVycm9yOiBidWlsdGlu IGZ1bmN0aW9uICVzIGhhZCBubyB0eXBlIiwgbmFtZSk7Ci0rCi0rICBpZiAoIWJ1aWx0aW5fbW9k ZV90b190eXBlW2gubW9kZVswXV0pCi0rICAgIGZhdGFsX2Vycm9yICgiaW50ZXJuYWwgZXJyb3I6 IGJ1aWx0aW4gZnVuY3Rpb24gJXMgaGFkIGFuIHVuZXhwZWN0ZWQgIgotKwkJICJyZXR1cm4gdHlw ZSAlcyIsIG5hbWUsIEdFVF9NT0RFX05BTUUgKGgubW9kZVswXSkpOwotKwotKyAgZm9yIChpID0g MDsgaSA8IG51bV9hcmdzOyBpKyspCi0rICAgIGlmICghYnVpbHRpbl9tb2RlX3RvX3R5cGVbaC5t b2RlW2krMV1dKQotKyAgICAgIGZhdGFsX2Vycm9yICgiaW50ZXJuYWwgZXJyb3I6IGJ1aWx0aW4g ZnVuY3Rpb24gJXMsIGFyZ3VtZW50ICVkICIKLSsJCSAgICJoYWQgdW5leHBlY3RlZCBhcmd1bWVu dCB0eXBlICVzIiwgbmFtZSwgaSwKLSsJCSAgIEdFVF9NT0RFX05BTUUgKGgubW9kZVtpKzFdKSk7 Ci0rCi0rICBmb3VuZCA9IGh0YWJfZmluZF9zbG90IChidWlsdGluX2hhc2hfdGFibGUsICZoLCAx KTsKLSsgIGlmICgqZm91bmQgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIGgyID0gR0dDX05FVyAo c3RydWN0IGJ1aWx0aW5faGFzaF9zdHJ1Y3QpOwotKyAgICAgICpoMiA9IGg7Ci0rICAgICAgKmZv dW5kID0gKHZvaWQgKiloMjsKLSsKLSsgICAgICBzd2l0Y2ggKG51bV9hcmdzKQotKwl7Ci0rCWNh c2UgMToKLSsJICBoMi0+dHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoYnVpbHRpbl9t b2RlX3RvX3R5cGVbbW9kZV9yZXRdLAotKwkJCQkJICAgICAgIGJ1aWx0aW5fbW9kZV90b190eXBl W21vZGVfYXJnMF0sCi0rCQkJCQkgICAgICAgTlVMTF9UUkVFKTsKLSsJICBicmVhazsKLSsKLSsJ Y2FzZSAyOgotKwkgIGgyLT50eXBlID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChidWlsdGlu X21vZGVfdG9fdHlwZVttb2RlX3JldF0sCi0rCQkJCQkgICAgICAgYnVpbHRpbl9tb2RlX3RvX3R5 cGVbbW9kZV9hcmcwXSwKLSsJCQkJCSAgICAgICBidWlsdGluX21vZGVfdG9fdHlwZVttb2RlX2Fy ZzFdLAotKwkJCQkJICAgICAgIE5VTExfVFJFRSk7Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgMzoK LSsJICBoMi0+dHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoYnVpbHRpbl9tb2RlX3Rv X3R5cGVbbW9kZV9yZXRdLAotKwkJCQkJICAgICAgIGJ1aWx0aW5fbW9kZV90b190eXBlW21vZGVf YXJnMF0sCi0rCQkJCQkgICAgICAgYnVpbHRpbl9tb2RlX3RvX3R5cGVbbW9kZV9hcmcxXSwKLSsJ CQkJCSAgICAgICBidWlsdGluX21vZGVfdG9fdHlwZVttb2RlX2FyZzJdLAotKwkJCQkJICAgICAg IE5VTExfVFJFRSk7Ci0rCSAgYnJlYWs7Ci0rCi0rCWRlZmF1bHQ6Ci0rCSAgZ2NjX3VucmVhY2hh YmxlICgpOwotKwl9Ci0rICAgIH0KLSsKLSsgIHJldHVybiAoKHN0cnVjdCBidWlsdGluX2hhc2hf c3RydWN0ICopKCpmb3VuZCkpLT50eXBlOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3JzNjAwMF9j b21tb25faW5pdF9idWlsdGlucyAodm9pZCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9k ZXNjcmlwdGlvbiAqZDsKLSsgIHNpemVfdCBpOwotKwotKyAgdHJlZSBvcGFxdWVfZnR5cGVfb3Bh cXVlID0gTlVMTF9UUkVFOwotKyAgdHJlZSBvcGFxdWVfZnR5cGVfb3BhcXVlX29wYXF1ZSA9IE5V TExfVFJFRTsKLSsgIHRyZWUgb3BhcXVlX2Z0eXBlX29wYXF1ZV9vcGFxdWVfb3BhcXVlID0gTlVM TF9UUkVFOwotKyAgdHJlZSB2MnNpX2Z0eXBlX3FpID0gTlVMTF9UUkVFOwotKyAgdHJlZSB2MnNp X2Z0eXBlX3Yyc2lfcWkgPSBOVUxMX1RSRUU7Ci0rICB0cmVlIHYyc2lfZnR5cGVfaW50X3FpID0g TlVMTF9UUkVFOwotKwotKyAgLyogSW5pdGlhbGl6ZSB0aGUgdGFibGVzIGZvciB0aGUgdW5hcnks IGJpbmFyeSwgYW5kIHRlcm5hcnkgb3BzLiAgKi8KLSsgIGJ1aWx0aW5fbW9kZV90b190eXBlW1FJ bW9kZV0gPSBpbnRlZ2VyX3R5cGVfbm9kZTsKLSsgIGJ1aWx0aW5fbW9kZV90b190eXBlW0hJbW9k ZV0gPSBpbnRlZ2VyX3R5cGVfbm9kZTsKLSsgIGJ1aWx0aW5fbW9kZV90b190eXBlW1NJbW9kZV0g PSBpbnRTSV90eXBlX25vZGU7Ci0rICBidWlsdGluX21vZGVfdG9fdHlwZVtESW1vZGVdID0gaW50 RElfdHlwZV9ub2RlOwotKyAgYnVpbHRpbl9tb2RlX3RvX3R5cGVbU0Ztb2RlXSA9IGZsb2F0X3R5 cGVfbm9kZTsKLSsgIGJ1aWx0aW5fbW9kZV90b190eXBlW0RGbW9kZV0gPSBkb3VibGVfdHlwZV9u b2RlOwotKyAgYnVpbHRpbl9tb2RlX3RvX3R5cGVbVjJTSW1vZGVdID0gVjJTSV90eXBlX25vZGU7 Ci0rICBidWlsdGluX21vZGVfdG9fdHlwZVtWMlNGbW9kZV0gPSBWMlNGX3R5cGVfbm9kZTsKLSsg IGJ1aWx0aW5fbW9kZV90b190eXBlW1YyREltb2RlXSA9IFYyRElfdHlwZV9ub2RlOwotKyAgYnVp bHRpbl9tb2RlX3RvX3R5cGVbVjJERm1vZGVdID0gVjJERl90eXBlX25vZGU7Ci0rICBidWlsdGlu X21vZGVfdG9fdHlwZVtWNEhJbW9kZV0gPSBWNEhJX3R5cGVfbm9kZTsKLSsgIGJ1aWx0aW5fbW9k ZV90b190eXBlW1Y0U0ltb2RlXSA9IFY0U0lfdHlwZV9ub2RlOwotKyAgYnVpbHRpbl9tb2RlX3Rv X3R5cGVbVjRTRm1vZGVdID0gVjRTRl90eXBlX25vZGU7Ci0rICBidWlsdGluX21vZGVfdG9fdHlw ZVtWOEhJbW9kZV0gPSBWOEhJX3R5cGVfbm9kZTsKLSsgIGJ1aWx0aW5fbW9kZV90b190eXBlW1Yx NlFJbW9kZV0gPSBWMTZRSV90eXBlX25vZGU7Ci0rCi0rICBpZiAoIVRBUkdFVF9QQUlSRURfRkxP QVQpCi0rICAgIHsKLSsgICAgICBidWlsdGluX21vZGVfdG9fdHlwZVtWMlNJbW9kZV0gPSBvcGFx dWVfVjJTSV90eXBlX25vZGU7Ci0rICAgICAgYnVpbHRpbl9tb2RlX3RvX3R5cGVbVjJTRm1vZGVd ID0gb3BhcXVlX1YyU0ZfdHlwZV9ub2RlOwotKyAgICB9Ci0rCi0rICAvKiBBZGQgdGhlIHRlcm5h cnkgb3BlcmF0b3JzLiAgKi8KLSAgIGQgPSBiZGVzY18zYXJnOwotICAgZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUgKGJkZXNjXzNhcmcpOyBpKyssIGQrKykKLSAgICAgewotLSAgICAgIGVudW0g bWFjaGluZV9tb2RlIG1vZGUwLCBtb2RlMSwgbW9kZTIsIG1vZGUzOwotICAgICAgIHRyZWUgdHlw ZTsKLS0gICAgICBib29sIGlzX292ZXJsb2FkZWQgPSBkLT5jb2RlID49IEFMVElWRUNfQlVJTFRJ Tl9PVkVSTE9BREVEX0ZJUlNUCi0tCQkJICAgJiYgZC0+Y29kZSA8PSBBTFRJVkVDX0JVSUxUSU5f T1ZFUkxPQURFRF9MQVNUOwotKyAgICAgIGludCBtYXNrID0gZC0+bWFzazsKLSAKLS0gICAgICBp ZiAoaXNfb3ZlcmxvYWRlZCkKLS0JewotLSAgICAgICAgICBtb2RlMCA9IFZPSURtb2RlOwotLSAg ICAgICAgICBtb2RlMSA9IFZPSURtb2RlOwotLSAgICAgICAgICBtb2RlMiA9IFZPSURtb2RlOwot LSAgICAgICAgICBtb2RlMyA9IFZPSURtb2RlOwotKyAgICAgIGlmICgobWFzayAhPSAwICYmICht YXNrICYgdGFyZ2V0X2ZsYWdzKSA9PSAwKQotKwkgIHx8IChtYXNrID09IDAgJiYgIVRBUkdFVF9Q QUlSRURfRkxPQVQpKQotKwljb250aW51ZTsKLSsKLSsgICAgICBpZiAoKGQtPmNvZGUgPj0gQUxU SVZFQ19CVUlMVElOX09WRVJMT0FERURfRklSU1QKLSsJICAgJiYgZC0+Y29kZSA8PSBBTFRJVkVD X0JVSUxUSU5fT1ZFUkxPQURFRF9MQVNUKQotKwkgIHx8IChkLT5jb2RlID49IFZTWF9CVUlMVElO X09WRVJMT0FERURfRklSU1QKLSsJICAgICAgJiYgZC0+Y29kZSA8PSBWU1hfQlVJTFRJTl9PVkVS TE9BREVEX0xBU1QpKQotKwl7Ci0rCSAgaWYgKCEgKHR5cGUgPSBvcGFxdWVfZnR5cGVfb3BhcXVl X29wYXF1ZV9vcGFxdWUpKQotKwkgICAgdHlwZSA9IG9wYXF1ZV9mdHlwZV9vcGFxdWVfb3BhcXVl X29wYXF1ZQotKwkgICAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1Y0U0lf dHlwZV9ub2RlLAotKwkJCQkJICBvcGFxdWVfVjRTSV90eXBlX25vZGUsCi0rCQkJCQkgIG9wYXF1 ZV9WNFNJX3R5cGVfbm9kZSwKLSsJCQkJCSAgb3BhcXVlX1Y0U0lfdHlwZV9ub2RlLAotKwkJCQkJ ICBOVUxMX1RSRUUpOwotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0tICAgICAgICAgIGlmIChkLT5u YW1lID09IDAgfHwgZC0+aWNvZGUgPT0gQ09ERV9GT1Jfbm90aGluZykKLSsJICBlbnVtIGluc25f Y29kZSBpY29kZSA9IGQtPmljb2RlOwotKyAgICAgICAgICBpZiAoZC0+bmFtZSA9PSAwIHx8IGlj b2RlID09IENPREVfRk9SX25vdGhpbmcpCi0gCSAgICBjb250aW51ZTsKLSAKLS0gICAgICAgICAg bW9kZTAgPSBpbnNuX2RhdGFbZC0+aWNvZGVdLm9wZXJhbmRbMF0ubW9kZTsKLS0gICAgICAgICAg bW9kZTEgPSBpbnNuX2RhdGFbZC0+aWNvZGVdLm9wZXJhbmRbMV0ubW9kZTsKLS0gICAgICAgICAg bW9kZTIgPSBpbnNuX2RhdGFbZC0+aWNvZGVdLm9wZXJhbmRbMl0ubW9kZTsKLS0gICAgICAgICAg bW9kZTMgPSBpbnNuX2RhdGFbZC0+aWNvZGVdLm9wZXJhbmRbM10ubW9kZTsKLSsJICB0eXBlID0g YnVpbHRpbl9mdW5jdGlvbl90eXBlIChpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMF0ubW9kZSwK LSsJCQkJCWluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsxXS5tb2RlLAotKwkJCQkJaW5zbl9kYXRh W2ljb2RlXS5vcGVyYW5kWzJdLm1vZGUsCi0rCQkJCQlpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRb M10ubW9kZSwKLSsJCQkJCWQtPm5hbWUpOwotIAl9Ci0gCi0tICAgICAgLyogV2hlbiBhbGwgZm91 ciBhcmUgb2YgdGhlIHNhbWUgbW9kZS4gICovCi0tICAgICAgaWYgKG1vZGUwID09IG1vZGUxICYm IG1vZGUxID09IG1vZGUyICYmIG1vZGUyID09IG1vZGUzKQotLQl7Ci0tCSAgc3dpdGNoIChtb2Rl MCkKLS0JICAgIHsKLS0JICAgIGNhc2UgVk9JRG1vZGU6Ci0tCSAgICAgIHR5cGUgPSBvcGFxdWVf ZnR5cGVfb3BhcXVlX29wYXF1ZV9vcGFxdWU7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAgY2FzZSBW MkRJbW9kZToKLS0JICAgICAgdHlwZSA9IHYyZGlfZnR5cGVfdjJkaV92MmRpX3YyZGk7Ci0tCSAg ICAgIGJyZWFrOwotLQkgICAgY2FzZSBWMkRGbW9kZToKLS0JICAgICAgdHlwZSA9IHYyZGZfZnR5 cGVfdjJkZl92MmRmX3YyZGY7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAgY2FzZSBWNFNJbW9kZToK LS0JICAgICAgdHlwZSA9IHY0c2lfZnR5cGVfdjRzaV92NHNpX3Y0c2k7Ci0tCSAgICAgIGJyZWFr OwotLQkgICAgY2FzZSBWNFNGbW9kZToKLS0JICAgICAgdHlwZSA9IHY0c2ZfZnR5cGVfdjRzZl92 NHNmX3Y0c2Y7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAgY2FzZSBWOEhJbW9kZToKLS0JICAgICAg dHlwZSA9IHY4aGlfZnR5cGVfdjhoaV92OGhpX3Y4aGk7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAg Y2FzZSBWMTZRSW1vZGU6Ci0tCSAgICAgIHR5cGUgPSB2MTZxaV9mdHlwZV92MTZxaV92MTZxaV92 MTZxaTsKLS0JICAgICAgYnJlYWs7Ci0tICAgICAgICAgICAgY2FzZSBWMlNGbW9kZToKLS0gICAg ICAgICAgICAgICAgdHlwZSA9IHYyc2ZfZnR5cGVfdjJzZl92MnNmX3Yyc2Y7Ci0tICAgICAgICAg ICAgICBicmVhazsKLS0JICAgIGRlZmF1bHQ6Ci0tCSAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsK LS0JICAgIH0KLS0JfQotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IG1vZGUxICYmIG1vZGUxID09 IG1vZGUyICYmIG1vZGUzID09IFYxNlFJbW9kZSkKLS0JewotLQkgIHN3aXRjaCAobW9kZTApCi0t CSAgICB7Ci0tCSAgICBjYXNlIFYyREltb2RlOgotLQkgICAgICB0eXBlID0gdjJkaV9mdHlwZV92 MmRpX3YyZGlfdjE2cWk7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAgY2FzZSBWMkRGbW9kZToKLS0J ICAgICAgdHlwZSA9IHYyZGZfZnR5cGVfdjJkZl92MmRmX3YxNnFpOwotLQkgICAgICBicmVhazsK LS0JICAgIGNhc2UgVjRTSW1vZGU6Ci0tCSAgICAgIHR5cGUgPSB2NHNpX2Z0eXBlX3Y0c2lfdjRz aV92MTZxaTsKLS0JICAgICAgYnJlYWs7Ci0tCSAgICBjYXNlIFY0U0Ztb2RlOgotLQkgICAgICB0 eXBlID0gdjRzZl9mdHlwZV92NHNmX3Y0c2ZfdjE2cWk7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAg Y2FzZSBWOEhJbW9kZToKLS0JICAgICAgdHlwZSA9IHY4aGlfZnR5cGVfdjhoaV92OGhpX3YxNnFp OwotLQkgICAgICBicmVhazsKLS0JICAgIGNhc2UgVjE2UUltb2RlOgotLQkgICAgICB0eXBlID0g djE2cWlfZnR5cGVfdjE2cWlfdjE2cWlfdjE2cWk7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAgZGVm YXVsdDoKLS0JICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotLQkgICAgfQotLQl9Ci0tICAgICAg ZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEgPT0gVjE2UUltb2RlICYmIG1vZGUy ID09IFYxNlFJbW9kZQotLQkgICAgICAgJiYgbW9kZTMgPT0gVjRTSW1vZGUpCi0tCXR5cGUgPSB2 NHNpX2Z0eXBlX3YxNnFpX3YxNnFpX3Y0c2k7Ci0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRT SW1vZGUgJiYgbW9kZTEgPT0gVjhISW1vZGUgJiYgbW9kZTIgPT0gVjhISW1vZGUKLS0JICAgICAg ICYmIG1vZGUzID09IFY0U0ltb2RlKQotLQl0eXBlID0gdjRzaV9mdHlwZV92OGhpX3Y4aGlfdjRz aTsKLS0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWNFNGbW9kZSAmJiBtb2RlMSA9PSBWNFNGbW9k ZSAmJiBtb2RlMiA9PSBWNFNGbW9kZQotLQkgICAgICAgJiYgbW9kZTMgPT0gVjRTSW1vZGUpCi0t CXR5cGUgPSB2NHNmX2Z0eXBlX3Y0c2ZfdjRzZl92NHNpOwotLQotLSAgICAgIC8qIHZjaGFyLCB2 Y2hhciwgdmNoYXIsIDQtYml0IGxpdGVyYWwuICAqLwotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09 IFYxNlFJbW9kZSAmJiBtb2RlMSA9PSBtb2RlMCAmJiBtb2RlMiA9PSBtb2RlMAotLQkgICAgICAg JiYgbW9kZTMgPT0gUUltb2RlKQotLQl0eXBlID0gdjE2cWlfZnR5cGVfdjE2cWlfdjE2cWlfaW50 OwotLQotLSAgICAgIC8qIHZzaG9ydCwgdnNob3J0LCB2c2hvcnQsIDQtYml0IGxpdGVyYWwuICAq LwotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY4SEltb2RlICYmIG1vZGUxID09IG1vZGUwICYm IG1vZGUyID09IG1vZGUwCi0tCSAgICAgICAmJiBtb2RlMyA9PSBRSW1vZGUpCi0tCXR5cGUgPSB2 OGhpX2Z0eXBlX3Y4aGlfdjhoaV9pbnQ7Ci0tCi0tICAgICAgLyogdmludCwgdmludCwgdmludCwg NC1iaXQgbGl0ZXJhbC4gICovCi0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYg bW9kZTEgPT0gbW9kZTAgJiYgbW9kZTIgPT0gbW9kZTAKLS0JICAgICAgICYmIG1vZGUzID09IFFJ bW9kZSkKLS0JdHlwZSA9IHY0c2lfZnR5cGVfdjRzaV92NHNpX2ludDsKLS0KLS0gICAgICAvKiB2 ZmxvYXQsIHZmbG9hdCwgdmZsb2F0LCA0LWJpdCBsaXRlcmFsLiAgKi8KLS0gICAgICBlbHNlIGlm IChtb2RlMCA9PSBWNFNGbW9kZSAmJiBtb2RlMSA9PSBtb2RlMCAmJiBtb2RlMiA9PSBtb2RlMAot LQkgICAgICAgJiYgbW9kZTMgPT0gUUltb2RlKQotLQl0eXBlID0gdjRzZl9mdHlwZV92NHNmX3Y0 c2ZfaW50OwotLQotLSAgICAgIGVsc2UKLS0JZ2NjX3VucmVhY2hhYmxlICgpOwotLQotICAgICAg IGRlZl9idWlsdGluIChkLT5tYXNrLCBkLT5uYW1lLCB0eXBlLCBkLT5jb2RlKTsKLSAgICAgfQot IAotLSAgLyogQWRkIHRoZSBzaW1wbGUgYmluYXJ5IG9wZXJhdG9ycy4gICovCi0rICAvKiBBZGQg dGhlIGJpbmFyeSBvcGVyYXRvcnMuICAqLwotICAgZCA9IChzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlw dGlvbiAqKSBiZGVzY18yYXJnOwotICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUgKGJkZXNj XzJhcmcpOyBpKyssIGQrKykKLSAgICAgewotICAgICAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUw LCBtb2RlMSwgbW9kZTI7Ci0gICAgICAgdHJlZSB0eXBlOwotLSAgICAgIGJvb2wgaXNfb3Zlcmxv YWRlZCA9IGQtPmNvZGUgPj0gQUxUSVZFQ19CVUlMVElOX09WRVJMT0FERURfRklSU1QKLS0JCQkg ICAmJiBkLT5jb2RlIDw9IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1Q7Ci0rICAgICAg aW50IG1hc2sgPSBkLT5tYXNrOwotIAotLSAgICAgIGlmIChpc19vdmVybG9hZGVkKQotLQl7Ci0t CSAgbW9kZTAgPSBWT0lEbW9kZTsKLS0JICBtb2RlMSA9IFZPSURtb2RlOwotLQkgIG1vZGUyID0g Vk9JRG1vZGU7Ci0rICAgICAgaWYgKChtYXNrICE9IDAgJiYgKG1hc2sgJiB0YXJnZXRfZmxhZ3Mp ID09IDApCi0rCSAgfHwgKG1hc2sgPT0gMCAmJiAhVEFSR0VUX1BBSVJFRF9GTE9BVCkpCi0rCWNv bnRpbnVlOwotKwotKyAgICAgIGlmICgoZC0+Y29kZSA+PSBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxP QURFRF9GSVJTVAotKwkgICAmJiBkLT5jb2RlIDw9IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVE X0xBU1QpCi0rCSAgfHwgKGQtPmNvZGUgPj0gVlNYX0JVSUxUSU5fT1ZFUkxPQURFRF9GSVJTVAot KwkgICAgICAmJiBkLT5jb2RlIDw9IFZTWF9CVUlMVElOX09WRVJMT0FERURfTEFTVCkpCi0rCXsK LSsJICBpZiAoISAodHlwZSA9IG9wYXF1ZV9mdHlwZV9vcGFxdWVfb3BhcXVlKSkKLSsJICAgIHR5 cGUgPSBvcGFxdWVfZnR5cGVfb3BhcXVlX29wYXF1ZQotKwkgICAgICA9IGJ1aWxkX2Z1bmN0aW9u X3R5cGVfbGlzdCAob3BhcXVlX1Y0U0lfdHlwZV9ub2RlLAotKwkJCQkJICBvcGFxdWVfVjRTSV90 eXBlX25vZGUsCi0rCQkJCQkgIG9wYXF1ZV9WNFNJX3R5cGVfbm9kZSwKLSsJCQkJCSAgTlVMTF9U UkVFKTsKLSAJfQotICAgICAgIGVsc2UKLSAJewotLSAgICAgICAgICBpZiAoZC0+bmFtZSA9PSAw IHx8IGQtPmljb2RlID09IENPREVfRk9SX25vdGhpbmcpCi0rCSAgZW51bSBpbnNuX2NvZGUgaWNv ZGUgPSBkLT5pY29kZTsKLSsgICAgICAgICAgaWYgKGQtPm5hbWUgPT0gMCB8fCBpY29kZSA9PSBD T0RFX0ZPUl9ub3RoaW5nKQotIAkgICAgY29udGludWU7Ci0gCi0tICAgICAgICAgIG1vZGUwID0g aW5zbl9kYXRhW2QtPmljb2RlXS5vcGVyYW5kWzBdLm1vZGU7Ci0tICAgICAgICAgIG1vZGUxID0g aW5zbl9kYXRhW2QtPmljb2RlXS5vcGVyYW5kWzFdLm1vZGU7Ci0tICAgICAgICAgIG1vZGUyID0g aW5zbl9kYXRhW2QtPmljb2RlXS5vcGVyYW5kWzJdLm1vZGU7Ci0tCX0KLSsgICAgICAgICAgbW9k ZTAgPSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMF0ubW9kZTsKLSsgICAgICAgICAgbW9kZTEg PSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMV0ubW9kZTsKLSsgICAgICAgICAgbW9kZTIgPSBp bnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMl0ubW9kZTsKLSAKLS0gICAgICAvKiBXaGVuIGFsbCB0 aHJlZSBvcGVyYW5kcyBhcmUgb2YgdGhlIHNhbWUgbW9kZS4gICovCi0tICAgICAgaWYgKG1vZGUw ID09IG1vZGUxICYmIG1vZGUxID09IG1vZGUyKQotLQl7Ci0tCSAgc3dpdGNoIChtb2RlMCkKLSsJ ICBpZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYgbW9kZTEgPT0gVjJTSW1vZGUgJiYgbW9kZTIgPT0g UUltb2RlKQotIAkgICAgewotLQkgICAgY2FzZSBWT0lEbW9kZToKLS0JICAgICAgdHlwZSA9IG9w YXF1ZV9mdHlwZV9vcGFxdWVfb3BhcXVlOwotLQkgICAgICBicmVhazsKLS0JICAgIGNhc2UgVjJE Rm1vZGU6Ci0tCSAgICAgIHR5cGUgPSB2MmRmX2Z0eXBlX3YyZGZfdjJkZjsKLS0JICAgICAgYnJl YWs7Ci0tCSAgICBjYXNlIFY0U0Ztb2RlOgotLQkgICAgICB0eXBlID0gdjRzZl9mdHlwZV92NHNm X3Y0c2Y7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAgY2FzZSBWNFNJbW9kZToKLS0JICAgICAgdHlw ZSA9IHY0c2lfZnR5cGVfdjRzaV92NHNpOwotLQkgICAgICBicmVhazsKLS0JICAgIGNhc2UgVjE2 UUltb2RlOgotLQkgICAgICB0eXBlID0gdjE2cWlfZnR5cGVfdjE2cWlfdjE2cWk7Ci0tCSAgICAg IGJyZWFrOwotLQkgICAgY2FzZSBWOEhJbW9kZToKLS0JICAgICAgdHlwZSA9IHY4aGlfZnR5cGVf djhoaV92OGhpOwotLQkgICAgICBicmVhazsKLS0JICAgIGNhc2UgVjJTSW1vZGU6Ci0tCSAgICAg IHR5cGUgPSB2MnNpX2Z0eXBlX3Yyc2lfdjJzaTsKLS0JICAgICAgYnJlYWs7Ci0tICAgICAgICAg ICAgY2FzZSBWMlNGbW9kZToKLS0gICAgICAgICAgICAgIGlmIChUQVJHRVRfUEFJUkVEX0ZMT0FU KQotLSAgICAgICAgICAgICAgICB0eXBlID0gdjJzZl9mdHlwZV92MnNmX3Yyc2Y7Ci0tICAgICAg ICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgIHR5cGUgPSB2MnNmX2Z0eXBlX3Yyc2ZfdjJz Zl9zcGU7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAgY2FzZSBTSW1vZGU6Ci0tCSAgICAgIHR5cGUg PSBpbnRfZnR5cGVfaW50X2ludDsKLS0JICAgICAgYnJlYWs7Ci0tCSAgICBkZWZhdWx0OgotLQkg ICAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0rCSAgICAgIGlmICghICh0eXBlID0gdjJzaV9mdHlw ZV92MnNpX3FpKSkKLSsJCXR5cGUgPSB2MnNpX2Z0eXBlX3Yyc2lfcWkKLSsJCSAgPSBidWlsZF9m dW5jdGlvbl90eXBlX2xpc3QgKG9wYXF1ZV9WMlNJX3R5cGVfbm9kZSwKLSsJCQkJCSAgICAgIG9w YXF1ZV9WMlNJX3R5cGVfbm9kZSwKLSsJCQkJCSAgICAgIGNoYXJfdHlwZV9ub2RlLAotKwkJCQkJ ICAgICAgTlVMTF9UUkVFKTsKLSAJICAgIH0KLS0JfQotLQotLSAgICAgIC8qIEEgZmV3IG90aGVy IGNvbWJvcyB3ZSByZWFsbHkgZG9uJ3Qgd2FudCB0byBkbyBtYW51YWxseS4gICovCi0tCi0tICAg ICAgLyogdmludCwgdmZsb2F0LCB2ZmxvYXQuICAqLwotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09 IFY0U0ltb2RlICYmIG1vZGUxID09IFY0U0Ztb2RlICYmIG1vZGUyID09IFY0U0Ztb2RlKQotLQl0 eXBlID0gdjRzaV9mdHlwZV92NHNmX3Y0c2Y7Ci0tCi0tICAgICAgLyogdnNob3J0LCB2Y2hhciwg dmNoYXIuICAqLwotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY4SEltb2RlICYmIG1vZGUxID09 IFYxNlFJbW9kZSAmJiBtb2RlMiA9PSBWMTZRSW1vZGUpCi0tCXR5cGUgPSB2OGhpX2Z0eXBlX3Yx NnFpX3YxNnFpOwotLQotLSAgICAgIC8qIHZpbnQsIHZzaG9ydCwgdnNob3J0LiAgKi8KLS0gICAg ICBlbHNlIGlmIChtb2RlMCA9PSBWNFNJbW9kZSAmJiBtb2RlMSA9PSBWOEhJbW9kZSAmJiBtb2Rl MiA9PSBWOEhJbW9kZSkKLS0JdHlwZSA9IHY0c2lfZnR5cGVfdjhoaV92OGhpOwotLQotLSAgICAg IC8qIHZzaG9ydCwgdmludCwgdmludC4gICovCi0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjhI SW1vZGUgJiYgbW9kZTEgPT0gVjRTSW1vZGUgJiYgbW9kZTIgPT0gVjRTSW1vZGUpCi0tCXR5cGUg PSB2OGhpX2Z0eXBlX3Y0c2lfdjRzaTsKLS0KLS0gICAgICAvKiB2Y2hhciwgdnNob3J0LCB2c2hv cnQuICAqLwotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFYxNlFJbW9kZSAmJiBtb2RlMSA9PSBW OEhJbW9kZSAmJiBtb2RlMiA9PSBWOEhJbW9kZSkKLS0JdHlwZSA9IHYxNnFpX2Z0eXBlX3Y4aGlf djhoaTsKLS0KLS0gICAgICAvKiB2aW50LCB2Y2hhciwgdmludC4gICovCi0tICAgICAgZWxzZSBp ZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEgPT0gVjE2UUltb2RlICYmIG1vZGUyID09IFY0 U0ltb2RlKQotLQl0eXBlID0gdjRzaV9mdHlwZV92MTZxaV92NHNpOwotLQotLSAgICAgIC8qIHZp bnQsIHZjaGFyLCB2Y2hhci4gICovCi0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUg JiYgbW9kZTEgPT0gVjE2UUltb2RlICYmIG1vZGUyID09IFYxNlFJbW9kZSkKLS0JdHlwZSA9IHY0 c2lfZnR5cGVfdjE2cWlfdjE2cWk7Ci0tCi0tICAgICAgLyogdmludCwgdnNob3J0LCB2aW50LiAg Ki8KLS0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWNFNJbW9kZSAmJiBtb2RlMSA9PSBWOEhJbW9k ZSAmJiBtb2RlMiA9PSBWNFNJbW9kZSkKLS0JdHlwZSA9IHY0c2lfZnR5cGVfdjhoaV92NHNpOwot IAotLSAgICAgIC8qIHZpbnQsIHZpbnQsIDUtYml0IGxpdGVyYWwuICAqLwotLSAgICAgIGVsc2Ug aWYgKG1vZGUwID09IFY0U0ltb2RlICYmIG1vZGUxID09IFY0U0ltb2RlICYmIG1vZGUyID09IFFJ bW9kZSkKLS0JdHlwZSA9IHY0c2lfZnR5cGVfdjRzaV9pbnQ7Ci0tCi0tICAgICAgLyogdnNob3J0 LCB2c2hvcnQsIDUtYml0IGxpdGVyYWwuICAqLwotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY4 SEltb2RlICYmIG1vZGUxID09IFY4SEltb2RlICYmIG1vZGUyID09IFFJbW9kZSkKLS0JdHlwZSA9 IHY4aGlfZnR5cGVfdjhoaV9pbnQ7Ci0tCi0tICAgICAgLyogdmNoYXIsIHZjaGFyLCA1LWJpdCBs aXRlcmFsLiAgKi8KLS0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWMTZRSW1vZGUgJiYgbW9kZTEg PT0gVjE2UUltb2RlICYmIG1vZGUyID09IFFJbW9kZSkKLS0JdHlwZSA9IHYxNnFpX2Z0eXBlX3Yx NnFpX2ludDsKLS0KLS0gICAgICAvKiB2ZmxvYXQsIHZpbnQsIDUtYml0IGxpdGVyYWwuICAqLwot LSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY0U0Ztb2RlICYmIG1vZGUxID09IFY0U0ltb2RlICYm IG1vZGUyID09IFFJbW9kZSkKLS0JdHlwZSA9IHY0c2ZfZnR5cGVfdjRzaV9pbnQ7Ci0tCi0tICAg ICAgLyogdmludCwgdmZsb2F0LCA1LWJpdCBsaXRlcmFsLiAgKi8KLS0gICAgICBlbHNlIGlmICht b2RlMCA9PSBWNFNJbW9kZSAmJiBtb2RlMSA9PSBWNFNGbW9kZSAmJiBtb2RlMiA9PSBRSW1vZGUp Ci0tCXR5cGUgPSB2NHNpX2Z0eXBlX3Y0c2ZfaW50OwotLQotLSAgICAgIGVsc2UgaWYgKG1vZGUw ID09IFYyU0ltb2RlICYmIG1vZGUxID09IFNJbW9kZSAmJiBtb2RlMiA9PSBTSW1vZGUpCi0tCXR5 cGUgPSB2MnNpX2Z0eXBlX2ludF9pbnQ7Ci0tCi0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjJT SW1vZGUgJiYgbW9kZTEgPT0gVjJTSW1vZGUgJiYgbW9kZTIgPT0gUUltb2RlKQotLQl0eXBlID0g djJzaV9mdHlwZV92MnNpX2NoYXI7Ci0tCi0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjJTSW1v ZGUgJiYgbW9kZTEgPT0gU0ltb2RlICYmIG1vZGUyID09IFFJbW9kZSkKLS0JdHlwZSA9IHYyc2lf ZnR5cGVfaW50X2NoYXI7Ci0tCi0tICAgICAgZWxzZQotLQl7Ci0tCSAgLyogaW50LCB4LCB4LiAg Ki8KLS0JICBnY2NfYXNzZXJ0IChtb2RlMCA9PSBTSW1vZGUpOwotLQkgIHN3aXRjaCAobW9kZTEp Ci0rCSAgZWxzZSBpZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYgR0VUX01PREVfQ0xBU1MgKG1vZGUx KSA9PSBNT0RFX0lOVAotKwkJICAgJiYgbW9kZTIgPT0gUUltb2RlKQotIAkgICAgewotLQkgICAg Y2FzZSBWNFNJbW9kZToKLS0JICAgICAgdHlwZSA9IGludF9mdHlwZV92NHNpX3Y0c2k7Ci0tCSAg ICAgIGJyZWFrOwotLQkgICAgY2FzZSBWNFNGbW9kZToKLS0JICAgICAgdHlwZSA9IGludF9mdHlw ZV92NHNmX3Y0c2Y7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAgY2FzZSBWMTZRSW1vZGU6Ci0tCSAg ICAgIHR5cGUgPSBpbnRfZnR5cGVfdjE2cWlfdjE2cWk7Ci0tCSAgICAgIGJyZWFrOwotLQkgICAg Y2FzZSBWOEhJbW9kZToKLS0JICAgICAgdHlwZSA9IGludF9mdHlwZV92OGhpX3Y4aGk7Ci0tCSAg ICAgIGJyZWFrOwotLQkgICAgZGVmYXVsdDoKLS0JICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwot KwkgICAgICBpZiAoISAodHlwZSA9IHYyc2lfZnR5cGVfaW50X3FpKSkKLSsJCXR5cGUgPSB2MnNp X2Z0eXBlX2ludF9xaQotKwkJICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1Yy U0lfdHlwZV9ub2RlLAotKwkJCQkJICAgICAgaW50ZWdlcl90eXBlX25vZGUsCi0rCQkJCQkgICAg ICBjaGFyX3R5cGVfbm9kZSwKLSsJCQkJCSAgICAgIE5VTExfVFJFRSk7Ci0gCSAgICB9Ci0rCi0r CSAgZWxzZQotKwkgICAgdHlwZSA9IGJ1aWx0aW5fZnVuY3Rpb25fdHlwZSAobW9kZTAsIG1vZGUx LCBtb2RlMiwgVk9JRG1vZGUsCi0rCQkJCQkgIGQtPm5hbWUpOwotIAl9Ci0gCi0gICAgICAgZGVm X2J1aWx0aW4gKGQtPm1hc2ssIGQtPm5hbWUsIHR5cGUsIGQtPmNvZGUpOwotICAgICB9Ci0gCi0t ICAvKiBBZGQgdGhlIHNpbXBsZSB1bmFyeSBvcGVyYXRvcnMuICAqLwotKyAgLyogQWRkIHRoZSB1 bmFyeSBvcGVyYXRvcnMuICAqLwotICAgZCA9IChzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiAq KSBiZGVzY18xYXJnOwotICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUgKGJkZXNjXzFhcmcp OyBpKyssIGQrKykKLSAgICAgewotICAgICAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUwLCBtb2Rl MTsKLSAgICAgICB0cmVlIHR5cGU7Ci0tICAgICAgYm9vbCBpc19vdmVybG9hZGVkID0gZC0+Y29k ZSA+PSBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9GSVJTVAotLQkJCSAgICYmIGQtPmNvZGUg PD0gQUxUSVZFQ19CVUlMVElOX09WRVJMT0FERURfTEFTVDsKLSsgICAgICBpbnQgbWFzayA9IGQt Pm1hc2s7Ci0gCi0tICAgICAgaWYgKGlzX292ZXJsb2FkZWQpCi0tICAgICAgICB7Ci0tICAgICAg ICAgIG1vZGUwID0gVk9JRG1vZGU7Ci0tICAgICAgICAgIG1vZGUxID0gVk9JRG1vZGU7Ci0tICAg ICAgICB9Ci0rICAgICAgaWYgKChtYXNrICE9IDAgJiYgKG1hc2sgJiB0YXJnZXRfZmxhZ3MpID09 IDApCi0rCSAgfHwgKG1hc2sgPT0gMCAmJiAhVEFSR0VUX1BBSVJFRF9GTE9BVCkpCi0rCWNvbnRp bnVlOwotKwotKyAgICAgIGlmICgoZC0+Y29kZSA+PSBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURF RF9GSVJTVAotKwkgICAmJiBkLT5jb2RlIDw9IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0xB U1QpCi0rCSAgfHwgKGQtPmNvZGUgPj0gVlNYX0JVSUxUSU5fT1ZFUkxPQURFRF9GSVJTVAotKwkg ICAgICAmJiBkLT5jb2RlIDw9IFZTWF9CVUlMVElOX09WRVJMT0FERURfTEFTVCkpCi0rCXsKLSsJ ICBpZiAoISAodHlwZSA9IG9wYXF1ZV9mdHlwZV9vcGFxdWUpKQotKwkgICAgdHlwZSA9IG9wYXF1 ZV9mdHlwZV9vcGFxdWUKLSsJICAgICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKG9wYXF1 ZV9WNFNJX3R5cGVfbm9kZSwKLSsJCQkJCSAgb3BhcXVlX1Y0U0lfdHlwZV9ub2RlLAotKwkJCQkJ ICBOVUxMX1RSRUUpOwotKwl9Ci0gICAgICAgZWxzZQotICAgICAgICAgewotLSAgICAgICAgICBp ZiAoZC0+bmFtZSA9PSAwIHx8IGQtPmljb2RlID09IENPREVfRk9SX25vdGhpbmcpCi0rCSAgZW51 bSBpbnNuX2NvZGUgaWNvZGUgPSBkLT5pY29kZTsKLSsgICAgICAgICAgaWYgKGQtPm5hbWUgPT0g MCB8fCBpY29kZSA9PSBDT0RFX0ZPUl9ub3RoaW5nKQotIAkgICAgY29udGludWU7Ci0gCi0tICAg ICAgICAgIG1vZGUwID0gaW5zbl9kYXRhW2QtPmljb2RlXS5vcGVyYW5kWzBdLm1vZGU7Ci0tICAg ICAgICAgIG1vZGUxID0gaW5zbl9kYXRhW2QtPmljb2RlXS5vcGVyYW5kWzFdLm1vZGU7Ci0tICAg ICAgICB9Ci0rICAgICAgICAgIG1vZGUwID0gaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzBdLm1v ZGU7Ci0rICAgICAgICAgIG1vZGUxID0gaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzFdLm1vZGU7 Ci0gCi0tICAgICAgaWYgKG1vZGUwID09IFY0U0ltb2RlICYmIG1vZGUxID09IFFJbW9kZSkKLS0J dHlwZSA9IHY0c2lfZnR5cGVfaW50OwotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY4SEltb2Rl ICYmIG1vZGUxID09IFFJbW9kZSkKLS0JdHlwZSA9IHY4aGlfZnR5cGVfaW50OwotLSAgICAgIGVs c2UgaWYgKG1vZGUwID09IFYxNlFJbW9kZSAmJiBtb2RlMSA9PSBRSW1vZGUpCi0tCXR5cGUgPSB2 MTZxaV9mdHlwZV9pbnQ7Ci0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVk9JRG1vZGUgJiYgbW9k ZTEgPT0gVk9JRG1vZGUpCi0tCXR5cGUgPSBvcGFxdWVfZnR5cGVfb3BhcXVlOwotLSAgICAgIGVs c2UgaWYgKG1vZGUwID09IFYyREZtb2RlICYmIG1vZGUxID09IFYyREZtb2RlKQotLQl0eXBlID0g djJkZl9mdHlwZV92MmRmOwotLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY0U0Ztb2RlICYmIG1v ZGUxID09IFY0U0Ztb2RlKQotLQl0eXBlID0gdjRzZl9mdHlwZV92NHNmOwotLSAgICAgIGVsc2Ug aWYgKG1vZGUwID09IFY4SEltb2RlICYmIG1vZGUxID09IFYxNlFJbW9kZSkKLS0JdHlwZSA9IHY4 aGlfZnR5cGVfdjE2cWk7Ci0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9k ZTEgPT0gVjhISW1vZGUpCi0tCXR5cGUgPSB2NHNpX2Z0eXBlX3Y4aGk7Ci0tICAgICAgZWxzZSBp ZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYgbW9kZTEgPT0gVjJTSW1vZGUpCi0tCXR5cGUgPSB2MnNp X2Z0eXBlX3Yyc2k7Ci0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjJTRm1vZGUgJiYgbW9kZTEg PT0gVjJTRm1vZGUpCi0tICAgICAgICB7Ci0tICAgICAgICAgIGlmIChUQVJHRVRfUEFJUkVEX0ZM T0FUKQotLSAgICAgICAgICAgIHR5cGUgPSB2MnNmX2Z0eXBlX3Yyc2Y7Ci0tICAgICAgICAgIGVs c2UKLS0gICAgICAgICAgICB0eXBlID0gdjJzZl9mdHlwZV92MnNmX3NwZTsKLS0gICAgICAgIH0K LS0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWMlNGbW9kZSAmJiBtb2RlMSA9PSBWMlNJbW9kZSkK LS0JdHlwZSA9IHYyc2ZfZnR5cGVfdjJzaTsKLS0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWMlNJ bW9kZSAmJiBtb2RlMSA9PSBWMlNGbW9kZSkKLS0JdHlwZSA9IHYyc2lfZnR5cGVfdjJzZjsKLS0g ICAgICBlbHNlIGlmIChtb2RlMCA9PSBWMlNJbW9kZSAmJiBtb2RlMSA9PSBRSW1vZGUpCi0tCXR5 cGUgPSB2MnNpX2Z0eXBlX2NoYXI7Ci0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUg JiYgbW9kZTEgPT0gVjRTRm1vZGUpCi0tCXR5cGUgPSB2NHNpX2Z0eXBlX3Y0c2Y7Ci0tICAgICAg ZWxzZSBpZiAobW9kZTAgPT0gVjRTRm1vZGUgJiYgbW9kZTEgPT0gVjRTSW1vZGUpCi0tCXR5cGUg PSB2NHNmX2Z0eXBlX3Y0c2k7Ci0tICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjJESW1vZGUgJiYg bW9kZTEgPT0gVjJERm1vZGUpCi0tCXR5cGUgPSB2MmRpX2Z0eXBlX3YyZGY7Ci0tICAgICAgZWxz ZSBpZiAobW9kZTAgPT0gVjJERm1vZGUgJiYgbW9kZTEgPT0gVjJESW1vZGUpCi0tCXR5cGUgPSB2 MmRmX2Z0eXBlX3YyZGk7Ci0tICAgICAgZWxzZQotLQlnY2NfdW5yZWFjaGFibGUgKCk7Ci0rCSAg aWYgKG1vZGUwID09IFYyU0ltb2RlICYmIG1vZGUxID09IFFJbW9kZSkKLSsJICAgIHsKLSsJICAg ICAgaWYgKCEgKHR5cGUgPSB2MnNpX2Z0eXBlX3FpKSkKLSsJCXR5cGUgPSB2MnNpX2Z0eXBlX3Fp Ci0rCQkgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChvcGFxdWVfVjJTSV90eXBlX25vZGUs Ci0rCQkJCQkgICAgICBjaGFyX3R5cGVfbm9kZSwKLSsJCQkJCSAgICAgIE5VTExfVFJFRSk7Ci0r CSAgICB9Ci0rCi0rCSAgZWxzZQotKwkgICAgdHlwZSA9IGJ1aWx0aW5fZnVuY3Rpb25fdHlwZSAo bW9kZTAsIG1vZGUxLCBWT0lEbW9kZSwgVk9JRG1vZGUsCi0rCQkJCQkgIGQtPm5hbWUpOwotKwl9 Ci0gCi0gICAgICAgZGVmX2J1aWx0aW4gKGQtPm1hc2ssIGQtPm5hbWUsIHR5cGUsIGQtPmNvZGUp OwotICAgICB9Ci1AQCAtMTI2MzcsMTIgKzEyNTU3LDEyIEBAIHJzNjAwMF9zZWNvbmRhcnlfcmVs b2FkX2lubmVyIChydHggcmVnLCAKLSAJfQotIAotICAgICAgIGlmIChHRVRfQ09ERSAoYWRkcikg PT0gUExVUwotLQkgICYmICghcnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAoVElt b2RlLCBhZGRyLCB0cnVlKQotKwkgICYmICghcnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJl c3NfcCAoVEltb2RlLCBhZGRyLCBmYWxzZSkKLSAJICAgICAgfHwgYW5kX29wMiAhPSBOVUxMX1JU WCkpCi0gCXsKLSAJICBhZGRyX29wMSA9IFhFWFAgKGFkZHIsIDApOwotIAkgIGFkZHJfb3AyID0g WEVYUCAoYWRkciwgMSk7Ci0tCSAgZ2NjX2Fzc2VydCAobGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRy ZXNzX3AgKGFkZHJfb3AxLCB0cnVlKSk7Ci0rCSAgZ2NjX2Fzc2VydCAobGVnaXRpbWF0ZV9pbmRp cmVjdF9hZGRyZXNzX3AgKGFkZHJfb3AxLCBmYWxzZSkpOwotIAotIAkgIGlmICghUkVHX1AgKGFk ZHJfb3AyKQotIAkgICAgICAmJiAoR0VUX0NPREUgKGFkZHJfb3AyKSAhPSBDT05TVF9JTlQKLUBA IC0xMjY2MSw4ICsxMjU4MSw4IEBAIHJzNjAwMF9zZWNvbmRhcnlfcmVsb2FkX2lubmVyIChydHgg cmVnLCAKLSAJICBhZGRyID0gc2NyYXRjaF9vcl9wcmVtb2RpZnk7Ci0gCSAgc2NyYXRjaF9vcl9w cmVtb2RpZnkgPSBzY3JhdGNoOwotIAl9Ci0tICAgICAgZWxzZSBpZiAoIWxlZ2l0aW1hdGVfaW5k aXJlY3RfYWRkcmVzc19wIChhZGRyLCB0cnVlKQotLQkgICAgICAgJiYgIXJzNjAwMF9sZWdpdGlt YXRlX29mZnNldF9hZGRyZXNzX3AgKFRJbW9kZSwgYWRkciwgdHJ1ZSkpCi0rICAgICAgZWxzZSBp ZiAoIWxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wIChhZGRyLCBmYWxzZSkKLSsJICAgICAg ICYmICFyczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChUSW1vZGUsIGFkZHIsIGZh bHNlKSkKLSAJewotIAkgIHJzNjAwMF9lbWl0X21vdmUgKHNjcmF0Y2hfb3JfcHJlbW9kaWZ5LCBh ZGRyLCBQbW9kZSk7Ci0gCSAgYWRkciA9IHNjcmF0Y2hfb3JfcHJlbW9kaWZ5OwotQEAgLTEyNjkx LDI0ICsxMjYxMSwyNCBAQCByczYwMDBfc2Vjb25kYXJ5X3JlbG9hZF9pbm5lciAocnR4IHJlZywg Ci0gICAgICAgaWYgKEdFVF9DT0RFIChhZGRyKSA9PSBQUkVfTU9ESUZZCi0gCSAgJiYgKCFWRUNU T1JfTUVNX1ZTWF9QIChtb2RlKQotIAkgICAgICB8fCBhbmRfb3AyICE9IE5VTExfUlRYCi0tCSAg ICAgIHx8ICFsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wIChYRVhQIChhZGRyLCAxKSwgdHJ1 ZSkpKQotKwkgICAgICB8fCAhbGVnaXRpbWF0ZV9pbmRleGVkX2FkZHJlc3NfcCAoWEVYUCAoYWRk ciwgMSksIGZhbHNlKSkpCi0gCXsKLSAJICBzY3JhdGNoX29yX3ByZW1vZGlmeSA9IFhFWFAgKGFk ZHIsIDApOwotIAkgIGdjY19hc3NlcnQgKGxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wIChz Y3JhdGNoX29yX3ByZW1vZGlmeSwKLS0JCQkJCQkgICAgIHRydWUpKTsKLSsJCQkJCQkgICAgIGZh bHNlKSk7Ci0gCSAgZ2NjX2Fzc2VydCAoR0VUX0NPREUgKFhFWFAgKGFkZHIsIDEpKSA9PSBQTFVT KTsKLSAJICBhZGRyID0gWEVYUCAoYWRkciwgMSk7Ci0gCX0KLSAKLS0gICAgICBpZiAobGVnaXRp bWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHIsIHRydWUpCS8qIHJlZyAqLwotLQkgIHx8IGxl Z2l0aW1hdGVfaW5kZXhlZF9hZGRyZXNzX3AgKGFkZHIsIHRydWUpCS8qIHJlZytyZWcgKi8KLSsg ICAgICBpZiAobGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHIsIGZhbHNlKQkvKiBy ZWcgKi8KLSsJICB8fCBsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wIChhZGRyLCBmYWxzZSkJ LyogcmVnK3JlZyAqLwotIAkgIHx8IEdFVF9DT0RFIChhZGRyKSA9PSBQUkVfTU9ESUZZCQkvKiBW U1ggcHJlLW1vZGlmeSAqLwotIAkgIHx8IEdFVF9DT0RFIChhZGRyKSA9PSBBTkQJCQkvKiBBbHRp dmVjIG1lbW9yeSAqLwotIAkgIHx8IChyY2xhc3MgPT0gRkxPQVRfUkVHUwkJCS8qIGxlZ2FjeSBm bG9hdCBtZW0gKi8KLSAJICAgICAgJiYgR0VUX01PREVfU0laRSAobW9kZSkgPT0gOAotIAkgICAg ICAmJiBhbmRfb3AyID09IE5VTExfUlRYCi0gCSAgICAgICYmIHNjcmF0Y2hfb3JfcHJlbW9kaWZ5 ID09IHNjcmF0Y2gKLS0JICAgICAgJiYgcnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3Nf cCAobW9kZSwgYWRkciwgdHJ1ZSkpKQotKwkgICAgICAmJiByczYwMDBfbGVnaXRpbWF0ZV9vZmZz ZXRfYWRkcmVzc19wIChtb2RlLCBhZGRyLCBmYWxzZSkpKQotIAk7Ci0gCi0gICAgICAgZWxzZSBp ZiAoR0VUX0NPREUgKGFkZHIpID09IFBMVVMpCi1AQCAtMTI3MjgsNyArMTI2NDgsNyBAQCByczYw MDBfc2Vjb25kYXJ5X3JlbG9hZF9pbm5lciAocnR4IHJlZywgCi0gCX0KLSAKLSAgICAgICBlbHNl IGlmIChHRVRfQ09ERSAoYWRkcikgPT0gU1lNQk9MX1JFRiB8fCBHRVRfQ09ERSAoYWRkcikgPT0g Q09OU1QKLS0JICAgICAgIHx8IEdFVF9DT0RFIChhZGRyKSA9PSBDT05TVF9JTlQpCi0rCSAgICAg ICB8fCBHRVRfQ09ERSAoYWRkcikgPT0gQ09OU1RfSU5UIHx8IFJFR19QIChhZGRyKSkKLSAJewot IAkgIHJzNjAwMF9lbWl0X21vdmUgKHNjcmF0Y2hfb3JfcHJlbW9kaWZ5LCBhZGRyLCBQbW9kZSk7 Ci0gCSAgYWRkciA9IHNjcmF0Y2hfb3JfcHJlbW9kaWZ5OwotQEAgLTEyNzYwLDcgKzEyNjgwLDcg QEAgcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIgKHJ0eCByZWcsIAotICAgICAgYW5kaS4g aW5zdHJ1Y3Rpb24uICAqLwotICAgaWYgKGFuZF9vcDIgIT0gTlVMTF9SVFgpCi0gICAgIHsKLS0g ICAgICBpZiAoISBsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3NfcCAoYWRkciwgdHJ1ZSkpCi0r ICAgICAgaWYgKCEgbGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHIsIGZhbHNlKSkK LSAJewotIAkgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBzY3JhdGNoLCBhZGRy KSk7Ci0gCSAgYWRkciA9IHNjcmF0Y2g7Ci1AQCAtMTI3OTUsNiArMTI3MTUsMjYgQEAgcnM2MDAw X3NlY29uZGFyeV9yZWxvYWRfaW5uZXIgKHJ0eCByZWcsIAotICAgcmV0dXJuOwotIH0KLSAKLSsv KiBUYXJnZXQgaG9vayB0byByZXR1cm4gdGhlIGNvdmVyIGNsYXNzZXMgZm9yIEludGVncmF0ZWQg UmVnaXN0ZXIgQWxsb2NhdG9yLgotKyAgIENvdmVyIGNsYXNzZXMgaXMgYSBzZXQgb2Ygbm9uLWlu dGVyc2VjdGVkIHJlZ2lzdGVyIGNsYXNzZXMgY292ZXJpbmcgYWxsIGhhcmQKLSsgICByZWdpc3Rl cnMgdXNlZCBmb3IgcmVnaXN0ZXIgYWxsb2NhdGlvbiBwdXJwb3NlLiAgQW55IG1vdmUgYmV0d2Vl biB0d28KLSsgICByZWdpc3RlcnMgb2YgYSBjb3ZlciBjbGFzcyBzaG91bGQgYmUgY2hlYXBlciB0 aGFuIGxvYWQgb3Igc3RvcmUgb2YgdGhlCi0rICAgcmVnaXN0ZXJzLiAgVGhlIHZhbHVlIGlzIGFy cmF5IG9mIHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBMSU1fUkVHX0NMQVNTRVMgdXNlZAotKyAgIGFz IHRoZSBlbmQgbWFya2VyLgotKwotKyAgIFdlIG5lZWQgdHdvIElSQV9DT1ZFUl9DTEFTU0VTLCBv bmUgZm9yIHByZS1WU1gsIGFuZCB0aGUgb3RoZXIgZm9yIFZTWCB0bwotKyAgIGFjY291bnQgZm9y IHRoZSBBbHRpdmVjIGFuZCBGbG9hdGluZyByZWdpc3RlcnMgYmVpbmcgc3Vic2V0cyBvZiB0aGUg VlNYCi0rICAgcmVnaXN0ZXIgc2V0IHVuZGVyIFZTWCwgYnV0IGRpc3RpbmN0IHJlZ2lzdGVyIHNl dHMgb24gcHJlLVZTWCBtYWNoaW5lcy4gICovCi0rCi0rc3RhdGljIGNvbnN0IGVudW0gcmVnX2Ns YXNzICoKLStyczYwMDBfaXJhX2NvdmVyX2NsYXNzZXMgKHZvaWQpCi0rewotKyAgc3RhdGljIGNv bnN0IGVudW0gcmVnX2NsYXNzIGNvdmVyX3ByZV92c3hbXSA9IElSQV9DT1ZFUl9DTEFTU0VTX1BS RV9WU1g7Ci0rICBzdGF0aWMgY29uc3QgZW51bSByZWdfY2xhc3MgY292ZXJfdnN4W10gICAgID0g SVJBX0NPVkVSX0NMQVNTRVNfVlNYOwotKwotKyAgcmV0dXJuIChUQVJHRVRfVlNYKSA/IGNvdmVy X3ZzeCA6IGNvdmVyX3ByZV92c3g7Ci0rfQotKwotIC8qIEFsbG9jYXRlIGEgNjQtYml0IHN0YWNr IHNsb3QgdG8gYmUgdXNlZCBmb3IgY29weWluZyBTRG1vZGUKLSAgICB2YWx1ZXMgdGhyb3VnaCBp ZiB0aGlzIGZ1bmN0aW9uIGhhcyBhbnkgU0Rtb2RlIHJlZmVyZW5jZXMuICAqLwotIAotQEAgLTEy ODY4LDEzICsxMjgwOCwxNSBAQCByczYwMDBfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyAocnR4IHgs IGVuCi0gICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlID0gR0VUX01PREUgKHgpOwotICAgZW51bSBy ZWdfY2xhc3MgcmV0OwotIAotLSAgaWYgKFRBUkdFVF9WU1ggJiYgVlNYX1ZFQ1RPUl9NT0RFICht b2RlKSAmJiB4ID09IENPTlNUMF9SVFggKG1vZGUpCi0tICAgICAgJiYgVlNYX1JFR19DTEFTU19Q IChyY2xhc3MpKQotKyAgaWYgKFRBUkdFVF9WU1gKLSsgICAgICAmJiAoVlNYX1ZFQ1RPUl9NT0RF IChtb2RlKSB8fCBtb2RlID09IFRJbW9kZSkKLSsgICAgICAmJiB4ID09IENPTlNUMF9SVFggKG1v ZGUpICYmIFZTWF9SRUdfQ0xBU1NfUCAocmNsYXNzKSkKLSAgICAgcmV0ID0gcmNsYXNzOwotIAot LSAgZWxzZSBpZiAoVEFSR0VUX0FMVElWRUMgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkK LS0JICAgJiYgcmNsYXNzID09IEFMVElWRUNfUkVHUyAmJiBlYXN5X3ZlY3Rvcl9jb25zdGFudCAo eCwgbW9kZSkpCi0tICAgIHJldCA9IHJjbGFzczsKLSsgIGVsc2UgaWYgKFRBUkdFVF9BTFRJVkVD ICYmIChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSB8fCBtb2RlID09IFRJbW9kZSkKLSsJICAg JiYgKHJjbGFzcyA9PSBBTFRJVkVDX1JFR1MgfHwgcmNsYXNzID09IFZTWF9SRUdTKQotKwkgICAm JiBlYXN5X3ZlY3Rvcl9jb25zdGFudCAoeCwgbW9kZSkpCi0rICAgIHJldCA9IEFMVElWRUNfUkVH UzsKLSAKLSAgIGVsc2UgaWYgKENPTlNUQU5UX1AgKHgpICYmIHJlZ19jbGFzc2VzX2ludGVyc2Vj dF9wIChyY2xhc3MsIEZMT0FUX1JFR1MpKQotICAgICByZXQgPSBOT19SRUdTOwotQEAgLTEzMDkz LDggKzEzMDM1LDEwIEBAIHJzNjAwMF9jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MgKGVudW0gbWEK LSAJCSAgICAgICB8fCAoKCh0bykgPT0gVERtb2RlKSArICgoZnJvbSkgPT0gVERtb2RlKSkgPT0g MQotIAkJICAgICAgIHx8ICgoKHRvKSA9PSBESW1vZGUpICsgKChmcm9tKSA9PSBESW1vZGUpKSA9 PSAxKSkKLSAJCSAgfHwgKFRBUkdFVF9WU1gKLS0JCSAgICAgICYmIChWU1hfVkVDVE9SX01PREUg KGZyb20pICsgVlNYX1ZFQ1RPUl9NT0RFICh0bykpID09IDEpCi0rCQkgICAgICAmJiAoVlNYX01P VkVfTU9ERSAoZnJvbSkgKyBWU1hfTU9WRV9NT0RFICh0bykpID09IDEKLSsJCSAgICAgICYmIFZT WF9SRUdfQ0xBU1NfUCAocmNsYXNzKSkKLSAJCSAgfHwgKFRBUkdFVF9BTFRJVkVDCi0rCQkgICAg ICAmJiByY2xhc3MgPT0gQUxUSVZFQ19SRUdTCi0gCQkgICAgICAmJiAoQUxUSVZFQ19WRUNUT1Jf TU9ERSAoZnJvbSkKLSAJCQkgICsgQUxUSVZFQ19WRUNUT1JfTU9ERSAodG8pKSA9PSAxKQotIAkJ ICB8fCAoVEFSR0VUX1NQRQotQEAgLTE0OTcyLDcgKzE0OTE2LDcgQEAgcnM2MDAwX2VtaXRfdmVj dG9yX2NvbmRfZXhwciAocnR4IGRlc3QsIAotICAgaWYgKCFtYXNrKQotICAgICByZXR1cm4gMDsK LSAKLS0gIGlmICgoVEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9SX01PVkVfTU9ERSAoZGVzdF9tb2Rl KSkKLSsgIGlmICgoVEFSR0VUX1ZTWCAmJiBWU1hfTU9WRV9NT0RFIChkZXN0X21vZGUpKQotICAg ICAgIHx8IChUQVJHRVRfQUxUSVZFQyAmJiBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChkZXN0X21vZGUp KSkKLSAgICAgewotICAgICAgIHJ0eCBjb25kMiA9IGdlbl9ydHhfZm10X2VlIChORSwgVk9JRG1v ZGUsIG1hc2ssIGNvbnN0MF9ydHgpOwotQEAgLTIyMTYxLDcgKzIyMTA1LDggQEAgcnM2MDAwX2hh bmRsZV9hbHRpdmVjX2F0dHJpYnV0ZSAodHJlZSAqbgotICAgbW9kZSA9IFRZUEVfTU9ERSAodHlw ZSk7Ci0gCi0gICAvKiBDaGVjayBmb3IgaW52YWxpZCBBbHRpVmVjIHR5cGUgcXVhbGlmaWVycy4g ICovCi0tICBpZiAodHlwZSA9PSBsb25nX3Vuc2lnbmVkX3R5cGVfbm9kZSB8fCB0eXBlID09IGxv bmdfaW50ZWdlcl90eXBlX25vZGUpCi0rICBpZiAoKHR5cGUgPT0gbG9uZ191bnNpZ25lZF90eXBl X25vZGUgfHwgdHlwZSA9PSBsb25nX2ludGVnZXJfdHlwZV9ub2RlKQotKyAgICAgICYmICFUQVJH RVRfVlNYKQotICAgICB7Ci0gICAgIGlmIChUQVJHRVRfNjRCSVQpCi0gICAgICAgZXJyb3IgKCJ1 c2Ugb2YgJTxsb25nJT4gaW4gQWx0aVZlYyB0eXBlcyBpcyBpbnZhbGlkIGZvciA2NC1iaXQgY29k ZSIpOwotQEAgLTIyMTk5LDYgKzIyMTQ0LDcgQEAgcnM2MDAwX2hhbmRsZV9hbHRpdmVjX2F0dHJp YnV0ZSAodHJlZSAqbgotIAkgIGJyZWFrOwotIAljYXNlIFNGbW9kZTogcmVzdWx0ID0gVjRTRl90 eXBlX25vZGU7IGJyZWFrOwotIAljYXNlIERGbW9kZTogcmVzdWx0ID0gVjJERl90eXBlX25vZGU7 IGJyZWFrOwotKwljYXNlIERJbW9kZTogcmVzdWx0ID0gVjJESV90eXBlX25vZGU7IGJyZWFrOwot IAkgIC8qIElmIHRoZSB1c2VyIHNheXMgJ3ZlY3RvciBpbnQgYm9vbCcsIHdlIG1heSBiZSBoYW5k ZWQgdGhlICdib29sJwotIAkgICAgIGF0dHJpYnV0ZSBfYmVmb3JlXyB0aGUgJ3ZlY3RvcicgYXR0 cmlidXRlLCBhbmQgc28gc2VsZWN0IHRoZQotIAkgICAgIHByb3BlciB0eXBlIGluIHRoZSAnYicg Y2FzZSBiZWxvdy4gICovCi1AQCAtMjIyMTAsNiArMjIxNTYsNyBAQCByczYwMDBfaGFuZGxlX2Fs dGl2ZWNfYXR0cmlidXRlICh0cmVlICpuCi0gICAgIGNhc2UgJ2InOgotICAgICAgIHN3aXRjaCAo bW9kZSkKLSAJewotKwljYXNlIERJbW9kZTogY2FzZSBWMkRJbW9kZTogcmVzdWx0ID0gYm9vbF9W MkRJX3R5cGVfbm9kZTsgYnJlYWs7Ci0gCWNhc2UgU0ltb2RlOiBjYXNlIFY0U0ltb2RlOiByZXN1 bHQgPSBib29sX1Y0U0lfdHlwZV9ub2RlOyBicmVhazsKLSAJY2FzZSBISW1vZGU6IGNhc2UgVjhI SW1vZGU6IHJlc3VsdCA9IGJvb2xfVjhISV90eXBlX25vZGU7IGJyZWFrOwotIAljYXNlIFFJbW9k ZTogY2FzZSBWMTZRSW1vZGU6IHJlc3VsdCA9IGJvb2xfVjE2UUlfdHlwZV9ub2RlOwotQEAgLTIy MjU0LDYgKzIyMjAxLDcgQEAgcnM2MDAwX21hbmdsZV90eXBlIChjb25zdF90cmVlIHR5cGUpCi0g ICBpZiAodHlwZSA9PSBib29sX3Nob3J0X3R5cGVfbm9kZSkgcmV0dXJuICJVNl9fYm9vbHMiOwot ICAgaWYgKHR5cGUgPT0gcGl4ZWxfdHlwZV9ub2RlKSByZXR1cm4gInU3X19waXhlbCI7Ci0gICBp ZiAodHlwZSA9PSBib29sX2ludF90eXBlX25vZGUpIHJldHVybiAiVTZfX2Jvb2xpIjsKLSsgIGlm ICh0eXBlID09IGJvb2xfbG9uZ190eXBlX25vZGUpIHJldHVybiAiVTZfX2Jvb2xsIjsKLSAKLSAg IC8qIE1hbmdsZSBJQk0gZXh0ZW5kZWQgZmxvYXQgbG9uZyBkb3VibGUgYXMgYGcnIChfX2Zsb2F0 MTI4KSBvbgotICAgICAgcG93ZXJwYyotbGludXggd2hlcmUgbG9uZy1kb3VibGUtNjQgcHJldmlv dXNseSB3YXMgdGhlIGRlZmF1bHQuICAqLwotQEAgLTIzNzgxLDYgKzIzNzI5LDggQEAgaW50Ci0g cnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdCAoZW51bSBtYWNoaW5lX21vZGUgbW9kZSwKLSAJCQkg ICBlbnVtIHJlZ19jbGFzcyBmcm9tLCBlbnVtIHJlZ19jbGFzcyB0bykKLSB7Ci0rICBpbnQgcmV0 OwotKwotICAgLyogIE1vdmVzIGZyb20vdG8gR0VORVJBTF9SRUdTLiAgKi8KLSAgIGlmIChyZWdf Y2xhc3Nlc19pbnRlcnNlY3RfcCAodG8sIEdFTkVSQUxfUkVHUykKLSAgICAgICB8fCByZWdfY2xh c3Nlc19pbnRlcnNlY3RfcCAoZnJvbSwgR0VORVJBTF9SRUdTKSkKLUBAIC0yMzc4OSwzOSArMjM3 MzksNDcgQEAgcnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdCAoZW51bSBtYWNoaW5lXwotIAlmcm9t ID0gdG87Ci0gCi0gICAgICAgaWYgKGZyb20gPT0gRkxPQVRfUkVHUyB8fCBmcm9tID09IEFMVElW RUNfUkVHUyB8fCBmcm9tID09IFZTWF9SRUdTKQotLQlyZXR1cm4gKHJzNjAwMF9tZW1vcnlfbW92 ZV9jb3N0IChtb2RlLCBmcm9tLCAwKQotLQkJKyByczYwMDBfbWVtb3J5X21vdmVfY29zdCAobW9k ZSwgR0VORVJBTF9SRUdTLCAwKSk7Ci0rCXJldCA9IChyczYwMDBfbWVtb3J5X21vdmVfY29zdCAo bW9kZSwgZnJvbSwgMCkKLSsJICAgICAgICsgcnM2MDAwX21lbW9yeV9tb3ZlX2Nvc3QgKG1vZGUs IEdFTkVSQUxfUkVHUywgMCkpOwotIAotICAgICAgIC8qIEl0J3MgbW9yZSBleHBlbnNpdmUgdG8g bW92ZSBDUl9SRUdTIHRoYW4gQ1IwX1JFR1MgYmVjYXVzZSBvZiB0aGUKLSAJIHNoaWZ0LiAgKi8K LSAgICAgICBlbHNlIGlmIChmcm9tID09IENSX1JFR1MpCi0tCXJldHVybiA0OwotKwlyZXQgPSA0 OwotIAotICAgICAgIC8qIFBvd2VyNiBoYXMgc2xvd2VyIExSL0NUUiBtb3ZlcyBzbyBtYWtlIHRo ZW0gbW9yZSBleHBlbnNpdmUgdGhhbgotIAkgbWVtb3J5IGluIG9yZGVyIHRvIGJpYXMgc3BpbGxz IHRvIG1lbW9yeSAuKi8KLSAgICAgICBlbHNlIGlmIChyczYwMDBfY3B1ID09IFBST0NFU1NPUl9Q T1dFUjYKLSAJICAgICAgICYmIHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChmcm9tLCBMSU5LX09S X0NUUl9SRUdTKSkKLS0gICAgICAgIHJldHVybiA2ICogaGFyZF9yZWdub19ucmVnc1swXVttb2Rl XTsKLSsgICAgICAgIHJldCA9IDYgKiBoYXJkX3JlZ25vX25yZWdzWzBdW21vZGVdOwotIAotICAg ICAgIGVsc2UKLSAJLyogQSBtb3ZlIHdpbGwgY29zdCBvbmUgaW5zdHJ1Y3Rpb24gcGVyIEdQUiBt b3ZlZC4gICovCi0tCXJldHVybiAyICogaGFyZF9yZWdub19ucmVnc1swXVttb2RlXTsKLSsJcmV0 ID0gMiAqIGhhcmRfcmVnbm9fbnJlZ3NbMF1bbW9kZV07Ci0gICAgIH0KLSAKLSAgIC8qIElmIHdl IGhhdmUgVlNYLCB3ZSBjYW4gZWFzaWx5IG1vdmUgYmV0d2VlbiBGUFIgb3IgQWx0aXZlYyByZWdp c3RlcnMuICAqLwotLSAgZWxzZSBpZiAoVEFSR0VUX1ZTWAotLQkgICAmJiAoKGZyb20gPT0gVlNY X1JFR1MgfHwgZnJvbSA9PSBGTE9BVF9SRUdTIHx8IGZyb20gPT0gQUxUSVZFQ19SRUdTKQotLQkg ICAgICAgfHwgKHRvID09IFZTWF9SRUdTIHx8IHRvID09IEZMT0FUX1JFR1MgfHwgdG8gPT0gQUxU SVZFQ19SRUdTKSkpCi0tICAgIHJldHVybiAyOwotKyAgZWxzZSBpZiAoVkVDVE9SX1VOSVRfVlNY X1AgKG1vZGUpCi0rCSAgICYmIHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wICh0bywgVlNYX1JFR1Mp Ci0rCSAgICYmIHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChmcm9tLCBWU1hfUkVHUykpCi0rICAg IHJldCA9IDIgKiBoYXJkX3JlZ25vX25yZWdzWzMyXVttb2RlXTsKLSAKLSAgIC8qIE1vdmluZyBi ZXR3ZWVuIHR3byBzaW1pbGFyIHJlZ2lzdGVycyBpcyBqdXN0IG9uZSBpbnN0cnVjdGlvbi4gICov Ci0gICBlbHNlIGlmIChyZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAodG8sIGZyb20pKQotLSAgICBy ZXR1cm4gKG1vZGUgPT0gVEZtb2RlIHx8IG1vZGUgPT0gVERtb2RlKSA/IDQgOiAyOwotKyAgICBy ZXQgPSAobW9kZSA9PSBURm1vZGUgfHwgbW9kZSA9PSBURG1vZGUpID8gNCA6IDI7Ci0gCi0gICAv KiBFdmVyeXRoaW5nIGVsc2UgaGFzIHRvIGdvIHRocm91Z2ggR0VORVJBTF9SRUdTLiAgKi8KLSAg IGVsc2UKLS0gICAgcmV0dXJuIChyczYwMDBfcmVnaXN0ZXJfbW92ZV9jb3N0IChtb2RlLCBHRU5F UkFMX1JFR1MsIHRvKQotLQkgICAgKyByczYwMDBfcmVnaXN0ZXJfbW92ZV9jb3N0IChtb2RlLCBm cm9tLCBHRU5FUkFMX1JFR1MpKTsKLSsgICAgcmV0ID0gKHJzNjAwMF9yZWdpc3Rlcl9tb3ZlX2Nv c3QgKG1vZGUsIEdFTkVSQUxfUkVHUywgdG8pCi0rCSAgICsgcnM2MDAwX3JlZ2lzdGVyX21vdmVf Y29zdCAobW9kZSwgZnJvbSwgR0VORVJBTF9SRUdTKSk7Ci0rCi0rICBpZiAoVEFSR0VUX0RFQlVH X0NPU1QpCi0rICAgIGZwcmludGYgKHN0ZGVyciwKLSsJICAgICAicnM2MDAwX3JlZ2lzdGVyX21v dmVfY29zdDosIHJldD0lZCwgbW9kZT0lcywgZnJvbT0lcywgdG89JXNcbiIsCi0rCSAgICAgcmV0 LCBHRVRfTU9ERV9OQU1FIChtb2RlKSwgcmVnX2NsYXNzX25hbWVzW2Zyb21dLAotKwkgICAgIHJl Z19jbGFzc19uYW1lc1t0b10pOwotKwotKyAgcmV0dXJuIHJldDsKLSB9Ci0gCi0gLyogQSBDIGV4 cHJlc3Npb25zIHJldHVybmluZyB0aGUgY29zdCBvZiBtb3ZpbmcgZGF0YSBvZiBNT0RFIGZyb20g YSByZWdpc3RlciB0bwotQEAgLTIzODMxLDE0ICsyMzc4OSwyMyBAQCBpbnQKLSByczYwMDBfbWVt b3J5X21vdmVfY29zdCAoZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgZW51bSByZWdfY2xhc3MgcmNs YXNzLAotIAkJCSBpbnQgaW4gQVRUUklCVVRFX1VOVVNFRCkKLSB7Ci0rICBpbnQgcmV0OwotKwot ICAgaWYgKHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChyY2xhc3MsIEdFTkVSQUxfUkVHUykpCi0t ICAgIHJldHVybiA0ICogaGFyZF9yZWdub19ucmVnc1swXVttb2RlXTsKLSsgICAgcmV0ID0gNCAq IGhhcmRfcmVnbm9fbnJlZ3NbMF1bbW9kZV07Ci0gICBlbHNlIGlmIChyZWdfY2xhc3Nlc19pbnRl cnNlY3RfcCAocmNsYXNzLCBGTE9BVF9SRUdTKSkKLS0gICAgcmV0dXJuIDQgKiBoYXJkX3JlZ25v X25yZWdzWzMyXVttb2RlXTsKLSsgICAgcmV0ID0gNCAqIGhhcmRfcmVnbm9fbnJlZ3NbMzJdW21v ZGVdOwotICAgZWxzZSBpZiAocmVnX2NsYXNzZXNfaW50ZXJzZWN0X3AgKHJjbGFzcywgQUxUSVZF Q19SRUdTKSkKLS0gICAgcmV0dXJuIDQgKiBoYXJkX3JlZ25vX25yZWdzW0ZJUlNUX0FMVElWRUNf UkVHTk9dW21vZGVdOwotKyAgICByZXQgPSA0ICogaGFyZF9yZWdub19ucmVnc1tGSVJTVF9BTFRJ VkVDX1JFR05PXVttb2RlXTsKLSAgIGVsc2UKLS0gICAgcmV0dXJuIDQgKyByczYwMDBfcmVnaXN0 ZXJfbW92ZV9jb3N0IChtb2RlLCByY2xhc3MsIEdFTkVSQUxfUkVHUyk7Ci0rICAgIHJldCA9IDQg KyByczYwMDBfcmVnaXN0ZXJfbW92ZV9jb3N0IChtb2RlLCByY2xhc3MsIEdFTkVSQUxfUkVHUyk7 Ci0rCi0rICBpZiAoVEFSR0VUX0RFQlVHX0NPU1QpCi0rICAgIGZwcmludGYgKHN0ZGVyciwKLSsJ ICAgICAicnM2MDAwX21lbW9yeV9tb3ZlX2Nvc3Q6IHJldD0lZCwgbW9kZT0lcywgcmNsYXNzPSVz LCBpbj0lZFxuIiwKLSsJICAgICByZXQsIEdFVF9NT0RFX05BTUUgKG1vZGUpLCByZWdfY2xhc3Nf bmFtZXNbcmNsYXNzXSwgaW4pOwotKwotKyAgcmV0dXJuIHJldDsKLSB9Ci0gCi0gLyogUmV0dXJu cyBhIGNvZGUgZm9yIGEgdGFyZ2V0LXNwZWNpZmljIGJ1aWx0aW4gdGhhdCBpbXBsZW1lbnRzCi1A QCAtMjQ1NDYsNCArMjQ1MTMsMjQgQEAgcnM2MDAwX2ZpbmFsX3ByZXNjYW5faW5zbiAocnR4IGlu c24sIHJ0eAotICAgICB9Ci0gfQotIAotKy8qIFJldHVybiB0cnVlIGlmIHRoZSBmdW5jdGlvbiBo YXMgYW4gaW5kaXJlY3QganVtcCBvciBhIHRhYmxlIGp1bXAuICBUaGUgY29tcGlsZXIKLSsgICBw cmVmZXJzIHRoZSBjdHIgcmVnaXN0ZXIgZm9yIHN1Y2gganVtcHMsIHdoaWNoIGludGVyZmVyZXMg d2l0aCB1c2luZyB0aGUgZGVjcmVtZW50Ci0rICAgY3RyIHJlZ2lzdGVyIGFuZCBicmFuY2guICAq LwotKwotK2Jvb2wKLStyczYwMDBfaGFzX2luZGlyZWN0X2p1bXBfcCAodm9pZCkKLSt7Ci0rICBn Y2NfYXNzZXJ0IChjZnVuICYmIGNmdW4tPm1hY2hpbmUpOwotKyAgcmV0dXJuIGNmdW4tPm1hY2hp bmUtPmluZGlyZWN0X2p1bXBfcDsKLSt9Ci0rCi0rLyogUmVtZW1iZXIgd2hlbiB3ZSd2ZSBnZW5l cmF0ZWQgYW4gaW5kaXJlY3QganVtcC4gICovCi0rCi0rdm9pZAotK3JzNjAwMF9zZXRfaW5kaXJl Y3RfanVtcCAodm9pZCkKLSt7Ci0rICBnY2NfYXNzZXJ0IChjZnVuICYmIGNmdW4tPm1hY2hpbmUp OwotKyAgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfanVtcF9wID0gdHJ1ZTsKLSt9Ci0rCi0gI2lu Y2x1ZGUgImd0LXJzNjAwMC5oIgotLS0tIGdjYy9jb25maWcvcnM2MDAwL3ZzeC5tZAkocmV2aXNp b24gMTQ2MTE5KQotKysrIGdjYy9jb25maWcvcnM2MDAwL3ZzeC5tZAkocmV2aXNpb24gMTQ2Nzk4 KQotQEAgLTIyLDEyICsyMiwyMiBAQAotIDs7IEl0ZXJhdG9yIGZvciBib3RoIHNjYWxhciBhbmQg dmVjdG9yIGZsb2F0aW5nIHBvaW50IHR5cGVzIHN1cHBvcnRlZCBieSBWU1gKLSAoZGVmaW5lX21v ZGVfaXRlcmF0b3IgVlNYX0IgW0RGIFY0U0YgVjJERl0pCi0gCi0rOzsgSXRlcmF0b3IgZm9yIHRo ZSAyIDY0LWJpdCB2ZWN0b3IgdHlwZXMKLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVlNYX0QgW1Yy REYgVjJESV0pCi0rCi0rOzsgSXRlcmF0b3IgZm9yIHRoZSAyIDMyLWJpdCB2ZWN0b3IgdHlwZXMK LSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVlNYX1cgW1Y0U0YgVjRTSV0pCi0rCi0gOzsgSXRlcmF0 b3IgZm9yIHZlY3RvciBmbG9hdGluZyBwb2ludCB0eXBlcyBzdXBwb3J0ZWQgYnkgVlNYCi0gKGRl ZmluZV9tb2RlX2l0ZXJhdG9yIFZTWF9GIFtWNFNGIFYyREZdKQotIAotIDs7IEl0ZXJhdG9yIGZv ciBsb2dpY2FsIHR5cGVzIHN1cHBvcnRlZCBieSBWU1gKLSAoZGVmaW5lX21vZGVfaXRlcmF0b3Ig VlNYX0wgW1YxNlFJIFY4SEkgVjRTSSBWMkRJIFY0U0YgVjJERiBUSV0pCi0gCi0rOzsgSXRlcmF0 b3IgZm9yIG1lbW9yeSBtb3ZlLiAgSGFuZGxlIFRJbW9kZSBzcGVjaWFsbHkgdG8gYWxsb3cKLSs7 OyBpdCB0byB1c2UgZ3BycyBhcyB3ZWxsIGFzIHZzeCByZWdpc3RlcnMuCi0rKGRlZmluZV9tb2Rl X2l0ZXJhdG9yIFZTWF9NIFtWMTZRSSBWOEhJIFY0U0kgVjJESSBWNFNGIFYyREZdKQotKwotIDs7 IEl0ZXJhdG9yIGZvciB0eXBlcyBmb3IgbG9hZC9zdG9yZSB3aXRoIHVwZGF0ZQotIChkZWZpbmVf bW9kZV9pdGVyYXRvciBWU1hfVSBbVjE2UUkgVjhISSBWNFNJIFYyREkgVjRTRiBWMkRGIFRJIERG XSkKLSAKLUBAIC00OSw5ICs1OSwxMCBAQCAoZGVmaW5lX21vZGVfYXR0ciBWU3MJWyhWMTZRSSAi c3AiKQotIAkJCSAoVjJERiAgImRwIikKLSAJCQkgKFYyREkgICJkcCIpCi0gCQkJIChERiAgICAi ZHAiKQotKwkJCSAoU0YJInNwIikKLSAJCQkgKFRJICAgICJzcCIpXSkKLSAKLS07OyBNYXAgaW50 byB0aGUgcmVnaXN0ZXIgY2xhc3MgdXNlZAotKzs7IE1hcCB0aGUgcmVnaXN0ZXIgY2xhc3MgdXNl ZAotIChkZWZpbmVfbW9kZV9hdHRyIFZTcglbKFYxNlFJICJ2IikKLSAJCQkgKFY4SEkgICJ2IikK LSAJCQkgKFY0U0kgICJ2IikKLUBAIC01OSw5ICs3MCwxMCBAQCAoZGVmaW5lX21vZGVfYXR0ciBW U3IJWyhWMTZRSSAidiIpCi0gCQkJIChWMkRJICAid2QiKQotIAkJCSAoVjJERiAgIndkIikKLSAJ CQkgKERGICAgICJ3cyIpCi0rCQkJIChTRgkiZiIpCi0gCQkJIChUSSAgICAid2QiKV0pCi0gCi0t OzsgTWFwIGludG8gdGhlIHJlZ2lzdGVyIGNsYXNzIHVzZWQgZm9yIGZsb2F0PC0+aW50IGNvbnZl cnNpb25zCi0rOzsgTWFwIHRoZSByZWdpc3RlciBjbGFzcyB1c2VkIGZvciBmbG9hdDwtPmludCBj b252ZXJzaW9ucwotIChkZWZpbmVfbW9kZV9hdHRyIFZTcjIJWyhWMkRGICAid2QiKQotIAkJCSAo VjRTRiAgIndmIikKLSAJCQkgKERGICAgICIhZiNyIildKQotQEAgLTcwLDYgKzgyLDE4IEBAIChk ZWZpbmVfbW9kZV9hdHRyIFZTcjMJWyhWMkRGICAid2EiKQotIAkJCSAoVjRTRiAgIndhIikKLSAJ CQkgKERGICAgICIhZiNyIildKQotIAotKzs7IE1hcCB0aGUgcmVnaXN0ZXIgY2xhc3MgZm9yIHNw PC0+ZHAgZmxvYXQgY29udmVyc2lvbnMsIGRlc3RpbmF0aW9uCi0rKGRlZmluZV9tb2RlX2F0dHIg VlNyNAlbKFNGCSJ3cyIpCi0rCQkJIChERgkiZiIpCi0rCQkJIChWMkRGICAid2QiKQotKwkJCSAo VjRTRgkidiIpXSkKLSsKLSs7OyBNYXAgdGhlIHJlZ2lzdGVyIGNsYXNzIGZvciBzcDwtPmRwIGZs b2F0IGNvbnZlcnNpb25zLCBkZXN0aW5hdGlvbgotKyhkZWZpbmVfbW9kZV9hdHRyIFZTcjUJWyhT Rgkid3MiKQotKwkJCSAoREYJImYiKQotKwkJCSAoVjJERiAgInYiKQotKwkJCSAoVjRTRgkid2Qi KV0pCi0rCi0gOzsgU2FtZSBzaXplIGludGVnZXIgdHlwZSBmb3IgZmxvYXRpbmcgcG9pbnQgZGF0 YQotIChkZWZpbmVfbW9kZV9hdHRyIFZTaSBbKFY0U0YgICJ2NHNpIikKLSAJCSAgICAgICAoVjJE RiAgInYyZGkiKQotQEAgLTEzNyw2ICsxNjEsMzIgQEAgKGRlZmluZV9tb2RlX2F0dHIgVlNmcHR5 cGVfc3FydAlbKFYyREYgIgotIAkJCQkgKFY0U0YgImZwX3NxcnRfcyIpCi0gCQkJCSAoREYgICAi ZnBfc3FydF9kIildKQotIAotKzs7IEl0ZXJhdG9yIGFuZCBtb2RlcyBmb3Igc3A8LT5kcCBjb252 ZXJzaW9ucwotKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBWU1hfU1BEUCBbU0YgREYgVjRTRiBWMkRG XSkKLSsKLSsoZGVmaW5lX21vZGVfYXR0ciBWU19zcGRwX3JlcyBbKFNGCSJERiIpCi0rCQkJICAg ICAgIChERgkiU0YiKQotKwkJCSAgICAgICAoVjRTRgkiVjJERiIpCi0rCQkJICAgICAgIChWMkRG CSJWNFNGIildKQotKwotKyhkZWZpbmVfbW9kZV9hdHRyIFZTX3NwZHBfaW5zbiBbKFNGCSJ4c2N2 c3BkcCIpCi0rCQkJCShERgkieHNjdmRwc3AiKQotKwkJCQkoVjRTRgkieHZjdnNwZHAiKQotKwkJ CQkoVjJERgkieHZjdmRwc3AiKV0pCi0rCi0rKGRlZmluZV9tb2RlX2F0dHIgVlNfc3BkcF90eXBl IFsoU0YJImZwIikKLSsJCQkJKERGCSJmcCIpCi0rCQkJCShWNFNGCSJ2ZWNmbG9hdCIpCi0rCQkJ CShWMkRGCSJ2ZWNmbG9hdCIpXSkKLSsKLSs7OyBNYXAgdGhlIHNjYWxhciBtb2RlIGZvciBhIHZl Y3RvciB0eXBlCi0rKGRlZmluZV9tb2RlX2F0dHIgVlNfc2NhbGFyIFsoVjJERgkiREYiKQotKwkJ CSAgICAgKFYyREkJIkRJIikKLSsJCQkgICAgIChWNFNGCSJTRiIpCi0rCQkJICAgICAoVjRTSQki U0kiKQotKwkJCSAgICAgKFY4SEkJIkhJIikKLSsJCQkgICAgIChWMTZRSQkiUUkiKV0pCi0rCQkJ ICAgICAKLSA7OyBBcHByb3ByaWF0ZSB0eXBlIGZvciBsb2FkICsgdXBkYXRlCi0gKGRlZmluZV9t b2RlX2F0dHIgVlN0eXBlX2xvYWRfdXBkYXRlIFsoVjE2UUkgInZlY2xvYWQiKQotIAkJCQkgICAg ICAoVjhISSAgInZlY2xvYWQiKQotQEAgLTE1OSwyNSArMjA5LDMzIEBAIChkZWZpbmVfbW9kZV9h dHRyIFZTdHlwZV9zdG9yZV91cGRhdGUgWygKLSAKLSA7OyBDb25zdGFudHMgZm9yIGNyZWF0aW5n IHVuc3BlY3MKLSAoZGVmaW5lX2NvbnN0YW50cwotLSAgWyhVTlNQRUNfVlNYX0NPTkNBVF9WMkRG CTUwMCkKLS0gICAoVU5TUEVDX1ZTWF9YVkNWRFBTUAkJNTAxKQotLSAgIChVTlNQRUNfVlNYX1hW Q1ZEUFNYV1MJNTAyKQotLSAgIChVTlNQRUNfVlNYX1hWQ1ZEUFVYV1MJNTAzKQotLSAgIChVTlNQ RUNfVlNYX1hWQ1ZTUERQCQk1MDQpCi0tICAgKFVOU1BFQ19WU1hfWFZDVlNYV0RQCTUwNSkKLS0g ICAoVU5TUEVDX1ZTWF9YVkNWVVhXRFAJNTA2KQotLSAgIChVTlNQRUNfVlNYX1hWTUFERAkJNTA3 KQotLSAgIChVTlNQRUNfVlNYX1hWTVNVQgkJNTA4KQotLSAgIChVTlNQRUNfVlNYX1hWTk1BREQJ CTUwOSkKLS0gICAoVU5TUEVDX1ZTWF9YVk5NU1VCCQk1MTApCi0tICAgKFVOU1BFQ19WU1hfWFZS U1FSVEUJCTUxMSkKLS0gICAoVU5TUEVDX1ZTWF9YVlRESVYJCTUxMikKLS0gICAoVU5TUEVDX1ZT WF9YVlRTUVJUCQk1MTMpXSkKLSsgIFsoVU5TUEVDX1ZTWF9DT05DQVQJCTUwMCkKLSsgICAoVU5T UEVDX1ZTWF9DVkRQU1hXUwkJNTAxKQotKyAgIChVTlNQRUNfVlNYX0NWRFBVWFdTCQk1MDIpCi0r ICAgKFVOU1BFQ19WU1hfQ1ZTUERQCQk1MDMpCi0rICAgKFVOU1BFQ19WU1hfQ1ZTWFdEUAkJNTA0 KQotKyAgIChVTlNQRUNfVlNYX0NWVVhXRFAJCTUwNSkKLSsgICAoVU5TUEVDX1ZTWF9DVlNYRFNQ CQk1MDYpCi0rICAgKFVOU1BFQ19WU1hfQ1ZVWERTUAkJNTA3KQotKyAgIChVTlNQRUNfVlNYX0NW U1BTWERTCQk1MDgpCi0rICAgKFVOU1BFQ19WU1hfQ1ZTUFVYRFMJCTUwOSkKLSsgICAoVU5TUEVD X1ZTWF9NQURECQk1MTApCi0rICAgKFVOU1BFQ19WU1hfTVNVQgkJNTExKQotKyAgIChVTlNQRUNf VlNYX05NQURECQk1MTIpCi0rICAgKFVOU1BFQ19WU1hfTk1TVUIJCTUxMykKLSsgICAoVU5TUEVD X1ZTWF9SU1FSVEUJCTUxNCkKLSsgICAoVU5TUEVDX1ZTWF9URElWCQk1MTUpCi0rICAgKFVOU1BF Q19WU1hfVFNRUlQJCTUxNikKLSsgICAoVU5TUEVDX1ZTWF9YWFBFUk1ESQkJNTE3KQotKyAgIChV TlNQRUNfVlNYX1NFVAkJNTE4KQotKyAgIChVTlNQRUNfVlNYX1JPVU5EX0kJCTUxOSkKLSsgICAo VU5TUEVDX1ZTWF9ST1VORF9JQwkJNTIwKQotKyAgIChVTlNQRUNfVlNYX1NMRFdJCQk1MjEpXSkK LSAKLSA7OyBWU1ggbW92ZXMKLSAoZGVmaW5lX2luc24gIip2c3hfbW92PG1vZGU+IgotLSAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9Wiw8VlNy Piw8VlNyPiw/Wiw/d2EsP3dhLCpvLCpyLCpyLDxWU3I+LD93YSx2LHdaLHYiKQotLQkobWF0Y2hf b3BlcmFuZDpWU1hfTCAxICJpbnB1dF9vcGVyYW5kIiAiPFZTcj4sWiw8VlNyPix3YSxaLHdhLHIs byxyLGosaixXLHYsd1oiKSldCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfTSAwICJub25p bW1lZGlhdGVfb3BlcmFuZCIgIj1aLDxWU3I+LDxWU3I+LD9aLD93YSw/d2EsKm8sKnIsKnIsPFZT cj4sP3dhLHYsd1osdiIpCi0rCShtYXRjaF9vcGVyYW5kOlZTWF9NIDEgImlucHV0X29wZXJhbmQi ICI8VlNyPixaLDxWU3I+LHdhLFosd2EscixvLHIsaixqLFcsdix3WiIpKV0KLSAgICJWRUNUT1Jf TUVNX1ZTWF9QICg8TU9ERT5tb2RlKQotICAgICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5k c1swXSwgPE1PREU+bW9kZSkgCi0gICAgICAgIHx8IHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRz WzFdLCA8TU9ERT5tb2RlKSkiCi1AQCAtMjIwLDYgKzI3OCw0OSBAQCAoZGVmaW5lX2luc24gIip2 c3hfbW92PG1vZGU+IgotIH0KLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzdG9yZSx2ZWNsb2Fk LHZlY3NpbXBsZSx2ZWNzdG9yZSx2ZWNsb2FkLHZlY3NpbXBsZSwqLCosKix2ZWNzaW1wbGUsdmVj c2ltcGxlLCosdmVjc3RvcmUsdmVjbG9hZCIpXSkKLSAKLSs7OyBVbmxpa2Ugb3RoZXIgVlNYIG1v dmVzLCBhbGxvdyB0aGUgR1BScywgc2luY2UgYSBub3JtYWwgdXNlIG9mIFRJbW9kZSBpcyBmb3IK LSs7OyB1bmlvbnMuICBIb3dldmVyIGZvciBwbGFpbiBkYXRhIG1vdmVtZW50LCBzbGlnaHRseSBm YXZvciB0aGUgdmVjdG9yIGxvYWRzCi0rKGRlZmluZV9pbnNuICIqdnN4X21vdnRpIgotKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VEkgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9Wix3YSx3YSw/ byw/ciw/cix3YSx2LHYsd1oiKQotKwkobWF0Y2hfb3BlcmFuZDpUSSAxICJpbnB1dF9vcGVyYW5k IiAid2EsWix3YSxyLG8scixqLFcsd1osdiIpKV0KLSsgICJWRUNUT1JfTUVNX1ZTWF9QIChUSW1v ZGUpCi0rICAgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCBUSW1vZGUpIAotKyAg ICAgICB8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sxXSwgVEltb2RlKSkiCi0rewotKyAg c3dpdGNoICh3aGljaF9hbHRlcm5hdGl2ZSkKLSsgICAgewotKyAgICBjYXNlIDA6Ci0rICAgICAg cmV0dXJuICJzdHh2ZDIlVTB4ICV4MSwleTAiOwotKwotKyAgICBjYXNlIDE6Ci0rICAgICAgcmV0 dXJuICJseHZkMiVVMHggJXgwLCV5MSI7Ci0rCi0rICAgIGNhc2UgMjoKLSsgICAgICByZXR1cm4g Inh4bG9yICV4MCwleDEsJXgxIjsKLSsKLSsgICAgY2FzZSAzOgotKyAgICBjYXNlIDQ6Ci0rICAg IGNhc2UgNToKLSsgICAgICByZXR1cm4gIiMiOwotKwotKyAgICBjYXNlIDY6Ci0rICAgICAgcmV0 dXJuICJ4eGx4b3IgJXgwLCV4MCwleDAiOwotKwotKyAgICBjYXNlIDc6Ci0rICAgICAgcmV0dXJu IG91dHB1dF92ZWNfY29uc3RfbW92ZSAob3BlcmFuZHMpOwotKwotKyAgICBjYXNlIDg6Ci0rICAg ICAgcmV0dXJuICJzdHZ4ICUxLCV5MCI7Ci0rCi0rICAgIGNhc2UgOToKLSsgICAgICByZXR1cm4g Imx2eCAlMCwleTEiOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIGdjY191bnJlYWNoYWJsZSAo KTsKLSsgICAgfQotK30KLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzdG9yZSx2ZWNsb2FkLHZl Y3NpbXBsZSwqLCosKix2ZWNzaW1wbGUsKix2ZWNzdG9yZSx2ZWNsb2FkIildKQotKwotIDs7IExv YWQvc3RvcmUgd2l0aCB1cGRhdGUKLSA7OyBEZWZpbmUgaW5zbnMgdGhhdCBkbyBsb2FkIG9yIHN0 b3JlIHdpdGggdXBkYXRlLiAgQmVjYXVzZSBWU1ggb25seSBoYXMKLSA7OyByZWcrcmVnIGFkZHJl c3NpbmcsIHByZS1kZWNyZW1lbnQgb3IgcHJlLWlucmVtZW50IGlzIHVubGlrZWx5IHRvIGJlCi1A QCAtMjk3LDcgKzM5OCw3IEBAIChkZWZpbmVfaW5zbiAidnN4X3RkaXY8bW9kZT4zIgotICAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4s P3dhIikKLSAJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI8VlNyPix3YSIpCi0gCQkgICAgICAgKG1hdGNoX29wZXJhbmQ6VlNYX0Ig MiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpXQotLQkJICAgICAgVU5TUEVDX1ZT WF9YVlRESVYpKV0KLSsJCSAgICAgIFVOU1BFQ19WU1hfVERJVikpXQotICAgIlZFQ1RPUl9VTklU X1ZTWF9QICg8TU9ERT5tb2RlKSIKLSAgICJ4PFZTdj50ZGl2PFZTcz4gJXgwLCV4MSwleDIiCi0g ICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9zaW1wbGU+IikKLUBAIC0zNjcsNyArNDY4LDcg QEAgKGRlZmluZV9pbnNuICIqdnN4X3NxcnQ8bW9kZT4yIgotIChkZWZpbmVfaW5zbiAidnN4X3Jz cXJ0ZTxtb2RlPjIiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQotIAkodW5zcGVjOlZTWF9CIFsobWF0Y2hfb3BlcmFu ZDpWU1hfQiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIildCi0tCQkgICAgICBV TlNQRUNfVlNYX1hWUlNRUlRFKSldCi0rCQkgICAgICBVTlNQRUNfVlNYX1JTUVJURSkpXQotICAg IlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSAgICJ4PFZTdj5yc3FydGU8VlNzPiAl eDAsJXgxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIpCi1AQCAtMzc2 LDcgKzQ3Nyw3IEBAIChkZWZpbmVfaW5zbiAidnN4X3JzcXJ0ZTxtb2RlPjIiCi0gKGRlZmluZV9p bnNuICJ2c3hfdHNxcnQ8bW9kZT4yIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSAJKHVuc3BlYzpWU1hfQiBbKG1h dGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpXQot LQkJICAgICAgVU5TUEVDX1ZTWF9YVlRTUVJUKSldCi0rCQkgICAgICBVTlNQRUNfVlNYX1RTUVJU KSldCi0gICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotICAgIng8VlN2PnRzcXJ0 PFZTcz4gJXgwLCV4MSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX3NpbXBsZT4iKQot QEAgLTQyNiw3ICs1MjcsNyBAQCAoZGVmaW5lX2luc24gInZzeF9mbWFkZDxtb2RlPjRfMiIKLSAJ KHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICIlPFZTcj4sPFZTcj4sd2Esd2EiKQotIAkJICAgICAgIChtYXRjaF9vcGVyYW5kOlZTWF9C IDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3YSwwIikKLSAJCSAgICAgICAobWF0 Y2hfb3BlcmFuZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsPFZTcj4sMCx3YSIp XQotLQkJICAgICAgVU5TUEVDX1ZTWF9YVk1BREQpKV0KLSsJCSAgICAgIFVOU1BFQ19WU1hfTUFE RCkpXQotICAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSAgICJACi0gICAgeDxW U3Y+bWFkZGE8VlNzPiAleDAsJXgxLCV4MgotQEAgLTQ3NCw3ICs1NzUsNyBAQCAoZGVmaW5lX2lu c24gInZzeF9mbXN1Yjxtb2RlPjRfMiIKLSAJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6 VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIlPFZTcj4sPFZTcj4sd2Esd2EiKQotIAkJ ICAgICAgIChtYXRjaF9vcGVyYW5kOlZTWF9CIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZT cj4sMCx3YSwwIikKLSAJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAzICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIjAsPFZTcj4sMCx3YSIpXQotLQkJICAgICAgVU5TUEVDX1ZTWF9YVk1TVUIp KV0KLSsJCSAgICAgIFVOU1BFQ19WU1hfTVNVQikpXQotICAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8 TU9ERT5tb2RlKSIKLSAgICJACi0gICAgeDxWU3Y+bXN1YmE8VlNzPiAleDAsJXgxLCV4MgotQEAg LTU1Miw3ICs2NTMsNyBAQCAoZGVmaW5lX2luc24gInZzeF9mbm1hZGQ8bW9kZT40XzMiCi0gCSh1 bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAiPFZTcj4sPFZTcj4sd2Esd2EiKQotIAkJICAgICAgIChtYXRjaF9vcGVyYW5kOlZTWF9CIDIg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3YSwwIikKLSAJCSAgICAgICAobWF0Y2hf b3BlcmFuZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsPFZTcj4sMCx3YSIpXQot LQkJICAgICAgVU5TUEVDX1ZTWF9YVk5NQUREKSldCi0rCQkgICAgICBVTlNQRUNfVlNYX05NQURE KSldCi0gICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotICAgIkAKLSAgICB4PFZT dj5ubWFkZGE8VlNzPiAleDAsJXgxLCV4MgotQEAgLTYyOSw3ICs3MzAsNyBAQCAoZGVmaW5lX2lu c24gInZzeF9mbm1zdWI8bW9kZT40XzMiCi0gCSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5k OlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJTxWU3I+LDxWU3I+LHdhLHdhIikKLSAJ CSAgICAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxW U3I+LDAsd2EsMCIpCi0gCQkgICAgICAgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMyAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICIwLDxWU3I+LDAsd2EiKV0KLS0JCSAgICAgIFVOU1BFQ19WU1hfWFZOTVNV QikpXQotKwkJICAgICAgVU5TUEVDX1ZTWF9OTVNVQikpXQotICAgIlZFQ1RPUl9VTklUX1ZTWF9Q ICg8TU9ERT5tb2RlKSIKLSAgICJACi0gICAgeDxWU3Y+bm1zdWJhPFZTcz4gJXgwLCV4MSwleDIK LUBAIC02NjcsMTMgKzc2OCwxMyBAQCAoZGVmaW5lX2luc24gIip2c3hfZ2U8bW9kZT4iCi0gICBb KHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9zaW1wbGU+IikKLSAgICAoc2V0X2F0dHIgImZwX3R5 cGUiICI8VlNmcHR5cGVfc2ltcGxlPiIpXSkKLSAKLS0oZGVmaW5lX2luc24gInZzeF92c2VsPG1v ZGU+IgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICI9PFZTcj4sP3dhIikKLS0JKGlmX3RoZW5fZWxzZTpWU1hfRiAobmUgKG1hdGNoX29wZXJh bmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpCi0rKGRlZmluZV9p bnNuICIqdnN4X3ZzZWw8bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfTCAwICJ2 c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQotKwkoaWZfdGhlbl9lbHNlOlZTWF9M IChuZSAobWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+ LHdhIikKLSAJCQkJKGNvbnN0X2ludCAwKSkKLS0JCQkgICAgKG1hdGNoX29wZXJhbmQ6VlNYX0Yg MiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpCi0tCQkJICAgIChtYXRjaF9vcGVy YW5kOlZTWF9GIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKSkpXQotLSAgIlZF Q1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsJCQkgICAgKG1hdGNoX29wZXJhbmQ6VlNY X0wgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpCi0rCQkJICAgIChtYXRjaF9v cGVyYW5kOlZTWF9MIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKSkpXQotKyAg IlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgotICAgInh4c2VsICV4MCwleDMsJXgyLCV4 MSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQotIAotQEAgLTY5OCw3ICs3OTks NyBAQCAoZGVmaW5lX2luc24gInZzeF9mdHJ1bmM8bW9kZT4yIgotICAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSAgIAko Zml4OlZTWF9CIChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi PFZTcj4sd2EiKSkpXQotICAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLS0gICJ4 PFZTdj5yPFZTcz5waXogJXgwLCV4MSIKLSsgICJ4PFZTdj5yPFZTcz5peiAleDAsJXgxIgotICAg WyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIpCi0gICAgKHNldF9hdHRyICJmcF90 eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCi0gCi1AQCAtNzM1LDYgKzgzNiwyNCBAQCAoZGVm aW5lX2luc24gInZzeF9maXh1bnNfdHJ1bmM8bW9kZT48VlNpCi0gICAgKHNldF9hdHRyICJmcF90 eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCi0gCi0gOzsgTWF0aCByb3VuZGluZyBmdW5jdGlv bnMKLSsoZGVmaW5lX2luc24gInZzeF94PFZTdj5yPFZTcz5pIgotKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSsJKHVu c3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI8VlNyPix3YSIpXQotKwkJICAgICAgVU5TUEVDX1ZTWF9ST1VORF9JKSldCi0rICAiVkVDVE9S X1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIng8VlN2PnI8VlNzPmkgJXgwLCV4MSIKLSsg IFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX3NpbXBsZT4iKQotKyAgIChzZXRfYXR0ciAiZnBf dHlwZSIgIjxWU2ZwdHlwZV9zaW1wbGU+IildKQotKwotKyhkZWZpbmVfaW5zbiAidnN4X3g8VlN2 PnI8VlNzPmljIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSsJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6 VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpXQotKwkJICAgICAgVU5T UEVDX1ZTWF9ST1VORF9JQykpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIK LSsgICJ4PFZTdj5yPFZTcz5pYyAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5 cGVfc2ltcGxlPiIpCi0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4i KV0pCi0rCi0gKGRlZmluZV9pbnNuICJ2c3hfYnRydW5jPG1vZGU+MiIKLSAgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0g CSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAiPFZTcj4sd2EiKV0KLUBAIC03NjUsMjIgKzg4NCwyNiBAQCAoZGVmaW5lX2luc24gInZz eF9jZWlsPG1vZGU+MiIKLSAMCi0gOzsgVlNYIGNvbnZlcnQgdG8vZnJvbSBkb3VibGUgdmVjdG9y Ci0gCi0rOzsgQ29udmVydCBiZXR3ZWVuIHNpbmdsZSBhbmQgZG91YmxlIHByZWNpc2lvbgotKzs7 IERvbid0IHVzZSB4c2N2c3BkcCBhbmQgeHNjdmRwc3AgZm9yIHNjYWxhciBjb252ZXJzaW9ucywg c2luY2UgdGhlIG5vcm1hbAotKzs7IHNjYWxhciBzaW5nbGUgcHJlY2lzaW9uIGluc3RydWN0aW9u cyBpbnRlcm5hbGx5IHVzZSB0aGUgZG91YmxlIGZvcm1hdC4KLSs7OyBQcmVmZXIgdGhlIGFsdGl2 ZWMgcmVnaXN0ZXJzLCBzaW5jZSB3ZSBsaWtlbHkgd2lsbCBuZWVkIHRvIGRvIGEgdnBlcm0KLSso ZGVmaW5lX2luc24gInZzeF88VlNfc3BkcF9pbnNuPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5k OjxWU19zcGRwX3Jlcz4gMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcjQ+LD93YSIpCi0r CSh1bnNwZWM6PFZTX3NwZHBfcmVzPiBbKG1hdGNoX29wZXJhbmQ6VlNYX1NQRFAgMSAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICI8VlNyNT4sd2EiKV0KLSsJCQkgICAgICBVTlNQRUNfVlNYX0NWU1BE UCkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICI8VlNfc3BkcF9p bnNuPiAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU19zcGRwX3R5cGU+IildKQot KwotIDs7IENvbnZlcnQgZnJvbSA2NC1iaXQgdG8gMzItYml0IHR5cGVzCi0gOzsgTm90ZSwgZmF2 b3IgdGhlIEFsdGl2ZWMgcmVnaXN0ZXJzIHNpbmNlIHRoZSB1c3VhbCB1c2Ugb2YgdGhlc2UgaW5z dHJ1Y3Rpb25zCi0gOzsgaXMgaW4gdmVjdG9yIGNvbnZlcnRzIGFuZCB3ZSBuZWVkIHRvIHVzZSB0 aGUgQWx0aXZlYyB2cGVybSBpbnN0cnVjdGlvbi4KLSAKLS0oZGVmaW5lX2luc24gInZzeF94dmN2 ZHBzcCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICI9diw/d2EiKQotLQkodW5zcGVjOlY0U0YgWyhtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3YSIpXQotLQkJICAgICBVTlNQRUNfVlNYX1hWQ1ZEUFNQ KSldCi0tICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSIKLS0gICJ4dmN2ZHBzcCAleDAs JXgxIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotLQotIChkZWZpbmVfaW5z biAidnN4X3h2Y3ZkcHN4d3MiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAgInZzeF9y ZWdpc3Rlcl9vcGVyYW5kIiAiPXYsP3dhIikKLSAJKHVuc3BlYzpWNFNJIFsobWF0Y2hfb3BlcmFu ZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qsd2EiKV0KLS0JCSAgICAgVU5TUEVD X1ZTWF9YVkNWRFBTWFdTKSldCi0rCQkgICAgIFVOU1BFQ19WU1hfQ1ZEUFNYV1MpKV0KLSAgICJW RUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotICAgInh2Y3ZkcHN4d3MgJXgwLCV4MSIKLSAg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLUBAIC03ODgsMjQgKzkxMSwzMiBAQCAo ZGVmaW5lX2luc24gInZzeF94dmN2ZHBzeHdzIgotIChkZWZpbmVfaW5zbiAidnN4X3h2Y3ZkcHV4 d3MiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAiPXYsP3dhIikKLSAJKHVuc3BlYzpWNFNJIFsobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZzeF9y ZWdpc3Rlcl9vcGVyYW5kIiAid2Qsd2EiKV0KLS0JCSAgICAgVU5TUEVDX1ZTWF9YVkNWRFBVWFdT KSldCi0rCQkgICAgIFVOU1BFQ19WU1hfQ1ZEUFVYV1MpKV0KLSAgICJWRUNUT1JfVU5JVF9WU1hf UCAoVjJERm1vZGUpIgotICAgInh2Y3ZkcHV4d3MgJXgwLCV4MSIKLSAgIFsoc2V0X2F0dHIgInR5 cGUiICJ2ZWNmbG9hdCIpXSkKLSAKLS07OyBDb252ZXJ0IGZyb20gMzItYml0IHRvIDY0LWJpdCB0 eXBlcwotLShkZWZpbmVfaW5zbiAidnN4X3h2Y3ZzcGRwIgotLSAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQotLQkodW5zcGVjOlYy REYgWyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3Zix3YSIp XQotLQkJICAgICBVTlNQRUNfVlNYX1hWQ1ZTUERQKSldCi0rKGRlZmluZV9pbnNuICJ2c3hfeHZj dnN4ZHNwIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTSSAwICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIj13ZCw/d2EiKQotKwkodW5zcGVjOlY0U0kgWyhtYXRjaF9vcGVyYW5kOlYyREYgMSAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3Zix3YSIpXQotKwkJICAgICBVTlNQRUNfVlNYX0NWU1hE U1ApKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotKyAgInh2Y3ZzeGRzcCAl eDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZpbmVf aW5zbiAidnN4X3h2Y3Z1eGRzcCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICI9d2QsP3dhIikKLSsJKHVuc3BlYzpWNFNJIFsobWF0Y2hfb3Bl cmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Ysd2EiKV0KLSsJCSAgICAgVU5T UEVDX1ZTWF9DVlVYRFNQKSldCi0gICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSIKLS0g ICJ4dmN2c3BkcCAleDAsJXgxIgotKyAgInh2Y3Z1eHdkcCAleDAsJXgxIgotICAgWyhzZXRfYXR0 ciAidHlwZSIgInZlY2Zsb2F0IildKQotIAotKzs7IENvbnZlcnQgZnJvbSAzMi1iaXQgdG8gNjQt Yml0IHR5cGVzCi0gKGRlZmluZV9pbnNuICJ2c3hfeHZjdnN4d2RwIgotICAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQotIAkodW5z cGVjOlYyREYgWyhtYXRjaF9vcGVyYW5kOlY0U0kgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3 Zix3YSIpXQotLQkJICAgICBVTlNQRUNfVlNYX1hWQ1ZTWFdEUCkpXQotKwkJICAgICBVTlNQRUNf VlNYX0NWU1hXRFApKV0KLSAgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotICAgInh2 Y3ZzeHdkcCAleDAsJXgxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotQEAg LTgxMywxMSArOTQ0LDI2IEBAIChkZWZpbmVfaW5zbiAidnN4X3h2Y3ZzeHdkcCIKLSAoZGVmaW5l X2luc24gInZzeF94dmN2dXh3ZHAiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkLD93YSIpCi0gCSh1bnNwZWM6VjJERiBbKG1hdGNoX29w ZXJhbmQ6VjRTSSAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndmLHdhIildCi0tCQkgICAgIFVO U1BFQ19WU1hfWFZDVlVYV0RQKSldCi0rCQkgICAgIFVOU1BFQ19WU1hfQ1ZVWFdEUCkpXQotICAg IlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCi0gICAieHZjdnV4d2RwICV4MCwleDEiCi0g ICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0gCi0rKGRlZmluZV9pbnNuICJ2c3hf eHZjdnNwc3hkcyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREkgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9diw/d2EiKQotKwkodW5zcGVjOlYyREkgWyhtYXRjaF9vcGVyYW5kOlY0U0Yg MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3YSIpXQotKwkJICAgICBVTlNQRUNfVlNYX0NW U1BTWERTKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSIKLSsgICJ4dmN2c3Bz eGRzICV4MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0rCi0rKGRl ZmluZV9pbnNuICJ2c3hfeHZjdnNwdXhkcyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREkg MCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9diw/d2EiKQotKwkodW5zcGVjOlYyREkgWyhtYXRj aF9vcGVyYW5kOlY0U0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3YSIpXQotKwkJICAg ICBVTlNQRUNfVlNYX0NWU1BVWERTKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2Rl KSIKLSsgICJ4dmN2c3B1eGRzICV4MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxv YXQiKV0pCi0gDAotIDs7IExvZ2ljYWwgYW5kIHBlcm11dGUgb3BlcmF0aW9ucwotIChkZWZpbmVf aW5zbiAiKnZzeF9hbmQ8bW9kZT4zIgotQEAgLTg3NywyNCArMTAyMywyNSBAQCAoZGVmaW5lX2lu c24gIip2c3hfYW5kYzxtb2RlPjMiCi0gDAotIDs7IFBlcm11dGUgb3BlcmF0aW9ucwotIAotLShk ZWZpbmVfaW5zbiAidnN4X2NvbmNhdF92MmRmIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJE RiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQotLQkodW5zcGVjOlYyREYKLS0J IFsobWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzLHdhIikKLS0J ICAobWF0Y2hfb3BlcmFuZDpERiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzLHdhIildCi0t CSBVTlNQRUNfVlNYX0NPTkNBVF9WMkRGKSldCi0tICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZt b2RlKSIKLSs7OyBCdWlsZCBhIFYyREYvVjJESSB2ZWN0b3IgZnJvbSB0d28gc2NhbGFycwotKyhk ZWZpbmVfaW5zbiAidnN4X2NvbmNhdF88bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW U1hfRCAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQotKwkodW5zcGVjOlZTWF9E Ci0rCSBbKG1hdGNoX29wZXJhbmQ6PFZTX3NjYWxhcj4gMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICJ3cyx3YSIpCi0rCSAgKG1hdGNoX29wZXJhbmQ6PFZTX3NjYWxhcj4gMiAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICJ3cyx3YSIpXQotKwkgVU5TUEVDX1ZTWF9DT05DQVQpKV0KLSsgICJWRUNUT1Jf TUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSAgICJ4eHBlcm1kaSAleDAsJXgxLCV4MiwwIgotICAg WyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0gCi0tOzsgU2V0IGEgZG91YmxlIGludG8g b25lIGVsZW1lbnQKLS0oZGVmaW5lX2luc24gInZzeF9zZXRfdjJkZiIKLS0gIFsoc2V0IChtYXRj aF9vcGVyYW5kOlYyREYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2QsP3dhIikKLS0JKHZl Y19tZXJnZTpWMkRGCi0tCSAobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAid2Qsd2EiKQotLQkgKHZlY19kdXBsaWNhdGU6VjJERiAobWF0Y2hfb3BlcmFuZDpERiAy ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzLGYiKSkKLS0JIChtYXRjaF9vcGVyYW5kOlFJIDMg InU1Yml0X2NpbnRfb3BlcmFuZCIgImksaSIpKSldCi0tICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYy REZtb2RlKSIKLSs7OyBTZXQgdGhlIGVsZW1lbnQgb2YgYSBWMkRJL1ZEMkYgbW9kZQotKyhkZWZp bmVfaW5zbiAidnN4X3NldF88bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRCAw ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQotKwkodW5zcGVjOlZTWF9EIFsobWF0 Y2hfb3BlcmFuZDpWU1hfRCAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndkLHdhIikKLSsJCSAg ICAgICAobWF0Y2hfb3BlcmFuZDo8VlNfc2NhbGFyPiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIg IndzLHdhIikKLSsJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpRSSAzICJ1NWJpdF9jaW50X29wZXJh bmQiICJpLGkiKV0KLSsJCSAgICAgIFVOU1BFQ19WU1hfU0VUKSldCi0rICAiVkVDVE9SX01FTV9W U1hfUCAoPE1PREU+bW9kZSkiCi0gewotICAgaWYgKElOVFZBTCAob3BlcmFuZHNbM10pID09IDAp Ci0gICAgIHJldHVybiBcInh4cGVybWRpICV4MCwleDEsJXgyLDFcIjsKLUBAIC05MDYsMTIgKzEw NTMsMTIgQEAgKGRlZmluZV9pbnNuICJ2c3hfc2V0X3YyZGYiCi0gICBbKHNldF9hdHRyICJ0eXBl IiAidmVjcGVybSIpXSkKLSAKLSA7OyBFeHRyYWN0IGEgREYgZWxlbWVudCBmcm9tIFYyREYKLS0o ZGVmaW5lX2luc24gInZzeF9leHRyYWN0X3YyZGYiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpE RiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyxmLD93YSIpCi0tCSh2ZWNfc2VsZWN0OkRG IChtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3ZCx3YSIp Ci0rKGRlZmluZV9pbnNuICJ2c3hfZXh0cmFjdF88bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3Bl cmFuZDo8VlNfc2NhbGFyPiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyxmLD93YSIpCi0r CSh2ZWNfc2VsZWN0OjxWU19zY2FsYXI+IChtYXRjaF9vcGVyYW5kOlZTWF9EIDEgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAid2Qsd2Qsd2EiKQotIAkJICAgICAgIChwYXJhbGxlbAotIAkJCVsobWF0 Y2hfb3BlcmFuZDpRSSAyICJ1NWJpdF9jaW50X29wZXJhbmQiICJpLGksaSIpXSkpKV0KLS0gICJW RUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RF Pm1vZGUpIgotIHsKLSAgIGdjY19hc3NlcnQgKFVJTlRWQUwgKG9wZXJhbmRzWzJdKSA8PSAxKTsK LSAgIG9wZXJhbmRzWzNdID0gR0VOX0lOVCAoSU5UVkFMIChvcGVyYW5kc1syXSkgPDwgMSk7Ci1A QCAtOTE5LDE3ICsxMDY2LDMwIEBAIChkZWZpbmVfaW5zbiAidnN4X2V4dHJhY3RfdjJkZiIKLSB9 Ci0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSAKLS07OyBHZW5lcmFsIFYyREYg cGVybXV0ZSwgZXh0cmFjdF97aGlnaCxsb3csZXZlbixvZGR9Ci0tKGRlZmluZV9pbnNuICJ2c3hf eHhwZXJtZGkiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAiPXdkIikKLS0JKHZlY19jb25jYXQ6VjJERgotLQkgKHZlY19zZWxlY3Q6REYgKG1h dGNoX29wZXJhbmQ6VjJERiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndkIikKLS0JCQkocGFy YWxsZWwKLS0JCQkgWyhtYXRjaF9vcGVyYW5kOlFJIDIgInU1Yml0X2NpbnRfb3BlcmFuZCIgImki KV0pKQotLQkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29wZXJhbmQ6VjJERiAzICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIndkIikKLS0JCQkocGFyYWxsZWwKLS0JCQkgWyhtYXRjaF9vcGVyYW5kOlFJ IDQgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0pKSkpXQotLSAgIlZFQ1RPUl9VTklUX1ZTWF9Q IChWMkRGbW9kZSkiCi0rOzsgR2VuZXJhbCBWMkRGL1YyREkgcGVybXV0ZQotKyhkZWZpbmVfaW5z biAidnN4X3h4cGVybWRpXzxtb2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9EIDAg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkLD93YSIpCi0rCSh1bnNwZWM6VlNYX0QgWyhtYXRj aF9vcGVyYW5kOlZTWF9EIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qsd2EiKQotKwkJICAg ICAgIChtYXRjaF9vcGVyYW5kOlZTWF9EIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qsd2Ei KQotKwkJICAgICAgIChtYXRjaF9vcGVyYW5kOlFJIDMgInU1Yml0X2NpbnRfb3BlcmFuZCIgImks aSIpXQotKwkJICAgICAgVU5TUEVDX1ZTWF9YWFBFUk1ESSkpXQotKyAgIlZFQ1RPUl9NRU1fVlNY X1AgKDxNT0RFPm1vZGUpIgotKyAgInh4cGVybWRpICV4MCwleDEsJXgyLCUzIgotKyAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0rCi0rOzsgVmFyaWVudCBvZiB4eHBlcm1kaSB0aGF0 IGlzIGVtaXR0ZWQgYnkgdGhlIHZlY19pbnRlcmxlYXZlIGZ1bmN0aW9ucwotKyhkZWZpbmVfaW5z biAiKnZzeF94eHBlcm1kaTJfPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0Qg MCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2QiKQotKwkodmVjX2NvbmNhdDpWU1hfRAotKwkg KHZlY19zZWxlY3Q6PFZTX3NjYWxhcj4KLSsJICAobWF0Y2hfb3BlcmFuZDpWU1hfRCAxICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIndkIikKLSsJICAocGFyYWxsZWwKLSsJICAgWyhtYXRjaF9vcGVy YW5kOlFJIDIgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0pKQotKwkgKHZlY19zZWxlY3Q6PFZT X3NjYWxhcj4KLSsJICAobWF0Y2hfb3BlcmFuZDpWU1hfRCAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIndkIikKLSsJICAocGFyYWxsZWwKLSsJICAgWyhtYXRjaF9vcGVyYW5kOlFJIDQgInU1Yml0 X2NpbnRfb3BlcmFuZCIgImkiKV0pKSkpXQotKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1v ZGUpIgotIHsKLSAgIGdjY19hc3NlcnQgKChVSU5UVkFMIChvcGVyYW5kc1syXSkgPD0gMSkgJiYg KFVJTlRWQUwgKG9wZXJhbmRzWzRdKSA8PSAxKSk7Ci0gICBvcGVyYW5kc1s1XSA9IEdFTl9JTlQg KCgoSU5UVkFMIChvcGVyYW5kc1syXSkgJiAxKSA8PCAxKQotQEAgLTkzOSwxMSArMTA5OSwxMSBA QCAoZGVmaW5lX2luc24gInZzeF94eHBlcm1kaSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNw ZXJtIildKQotIAotIDs7IFYyREYgc3BsYXQKLS0oZGVmaW5lX2luc24gInZzeF9zcGxhdHYyZGYi Ci0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi PXdkLHdkLHdkLD93YSw/d2EsP3dhIikKLS0JKHZlY19kdXBsaWNhdGU6VjJERgotLQkgKG1hdGNo X29wZXJhbmQ6REYgMSAiaW5wdXRfb3BlcmFuZCIgIndzLGYsWix3YSx3YSxaIikpKV0KLS0gICJW RUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotKyhkZWZpbmVfaW5zbiAidnN4X3NwbGF0Xzxt b2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9EIDAgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAiPXdkLHdkLHdkLD93YSw/d2EsP3dhIikKLSsJKHZlY19kdXBsaWNhdGU6VlNYX0QKLSsJ IChtYXRjaF9vcGVyYW5kOjxWU19zY2FsYXI+IDEgImlucHV0X29wZXJhbmQiICJ3cyxmLFosd2Es d2EsWiIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotICAgIkAKLSAg ICB4eHBlcm1kaSAleDAsJXgxLCV4MSwwCi0gICAgeHhwZXJtZGkgJXgwLCV4MSwleDEsMAotQEAg LTk1Myw1MiArMTExMyw2NiBAQCAoZGVmaW5lX2luc24gInZzeF9zcGxhdHYyZGYiCi0gICAgbHh2 ZHN4ICV4MCwleTEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSx2ZWNwZXJtLHZlY2xv YWQsdmVjcGVybSx2ZWNwZXJtLHZlY2xvYWQiKV0pCi0gCi0tOzsgVjRTRiBzcGxhdAotLShkZWZp bmVfaW5zbiAiKnZzeF94eHNwbHR3IgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJ2 c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13Ziw/d2EiKQotLQkodmVjX2R1cGxpY2F0ZTpWNFNGCi0t CSAodmVjX3NlbGVjdDpTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAid2Ysd2EiKQotLQkJCShwYXJhbGxlbAotLQkJCSBbKG1hdGNoX29wZXJhbmQ6UUkgMiAi dTViaXRfY2ludF9vcGVyYW5kIiAiaSxpIildKSkpKV0KLS0gICJWRUNUT1JfVU5JVF9WU1hfUCAo VjRTRm1vZGUpIgotKzs7IFY0U0YvVjRTSSBzcGxhdAotKyhkZWZpbmVfaW5zbiAidnN4X3h4c3Bs dHdfPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX1cgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9d2YsP3dhIikKLSsJKHZlY19kdXBsaWNhdGU6VlNYX1cKLSsJICh2ZWNfc2Vs ZWN0OjxWU19zY2FsYXI+Ci0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX1cgMSAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICJ3Zix3YSIpCi0rCSAgKHBhcmFsbGVsCi0rCSAgIFsobWF0Y2hfb3BlcmFuZDpR SSAyICJ1NWJpdF9jaW50X29wZXJhbmQiICJpLGkiKV0pKSkpXQotKyAgIlZFQ1RPUl9NRU1fVlNY X1AgKDxNT0RFPm1vZGUpIgotICAgInh4c3BsdHcgJXgwLCV4MSwlMiIKLSAgIFsoc2V0X2F0dHIg InR5cGUiICJ2ZWNwZXJtIildKQotIAotLTs7IFY0U0YgaW50ZXJsZWF2ZQotLShkZWZpbmVfaW5z biAidnN4X3h4bXJnaHciCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVy X29wZXJhbmQiICI9d2YsP3dhIikKLS0gICAgICAgICh2ZWNfbWVyZ2U6VjRTRgotLQkgKHZlY19z ZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi d2Ysd2EiKQotLQkJCSAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApCi0tCQkJCSAgICAgKGNvbnN0 X2ludCAyKQotLQkJCQkgICAgIChjb25zdF9pbnQgMSkKLS0JCQkJICAgICAoY29uc3RfaW50IDMp XSkpCi0tCSAodmVjX3NlbGVjdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICJ3Zix3YSIpCi0tCQkJICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMikKLS0J CQkJICAgICAoY29uc3RfaW50IDApCi0tCQkJCSAgICAgKGNvbnN0X2ludCAzKQotLQkJCQkgICAg IChjb25zdF9pbnQgMSldKSkKLSs7OyBWNFNGL1Y0U0kgaW50ZXJsZWF2ZQotKyhkZWZpbmVfaW5z biAidnN4X3h4bXJnaHdfPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX1cgMCAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2YsP3dhIikKLSsgICAgICAgICh2ZWNfbWVyZ2U6VlNY X1cKLSsJICh2ZWNfc2VsZWN0OlZTWF9XCi0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX1cgMSAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICJ3Zix3YSIpCi0rCSAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDAp Ci0rCQkgICAgIChjb25zdF9pbnQgMikKLSsJCSAgICAgKGNvbnN0X2ludCAxKQotKwkJICAgICAo Y29uc3RfaW50IDMpXSkpCi0rCSAodmVjX3NlbGVjdDpWU1hfVwotKwkgIChtYXRjaF9vcGVyYW5k OlZTWF9XIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Ysd2EiKQotKwkgIChwYXJhbGxlbCBb KGNvbnN0X2ludCAyKQotKwkJICAgICAoY29uc3RfaW50IDApCi0rCQkgICAgIChjb25zdF9pbnQg MykKLSsJCSAgICAgKGNvbnN0X2ludCAxKV0pKQotIAkgKGNvbnN0X2ludCA1KSkpXQotLSAgIlZF Q1RPUl9VTklUX1ZTWF9QIChWNFNGbW9kZSkiCi0rICAiVkVDVE9SX01FTV9WU1hfUCAoPE1PREU+ bW9kZSkiCi0gICAieHhtcmdodyAleDAsJXgxLCV4MiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2 ZWNwZXJtIildKQotIAotLShkZWZpbmVfaW5zbiAidnN4X3h4bXJnbHciCi0tICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9d2YsP3dhIikKLS0gICAgICAg ICh2ZWNfbWVyZ2U6VjRTRgotLQkgKHZlY19zZWxlY3Q6VjRTRgotLQkgIChtYXRjaF9vcGVyYW5k OlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIndmLHdhIikKLSsoZGVmaW5lX2luc24gInZzeF94 eG1yZ2x3Xzxtb2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9XIDAgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPXdmLD93YSIpCi0rICAgICAgICAodmVjX21lcmdlOlZTWF9XCi0rCSAo dmVjX3NlbGVjdDpWU1hfVwotKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9XIDEgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAid2Ysd2EiKQotIAkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQotIAkJICAg ICAoY29uc3RfaW50IDApCi0gCQkgICAgIChjb25zdF9pbnQgMykKLSAJCSAgICAgKGNvbnN0X2lu dCAxKV0pKQotLQkgKHZlY19zZWxlY3Q6VjRTRgotLQkgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAi cmVnaXN0ZXJfb3BlcmFuZCIgIndmLD93YSIpCi0rCSAodmVjX3NlbGVjdDpWU1hfVwotKwkgICht YXRjaF9vcGVyYW5kOlZTWF9XIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2YsP3dhIikKLSAJ ICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKLSAJCSAgICAgKGNvbnN0X2ludCAyKQotIAkJICAg ICAoY29uc3RfaW50IDEpCi0gCQkgICAgIChjb25zdF9pbnQgMyldKSkKLSAJIChjb25zdF9pbnQg NSkpKV0KLS0gICJWRUNUT1JfVU5JVF9WU1hfUCAoVjRTRm1vZGUpIgotKyAgIlZFQ1RPUl9NRU1f VlNYX1AgKDxNT0RFPm1vZGUpIgotICAgInh4bXJnbHcgJXgwLCV4MSwleDIiCi0gICBbKHNldF9h dHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSsKLSs7OyBTaGlmdCBsZWZ0IGRvdWJsZSBieSB3b3Jk IGltbWVkaWF0ZQotKyhkZWZpbmVfaW5zbiAidnN4X3h4c2xkd2lfPG1vZGU+IgotKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VlNYX0wgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2EiKQotKwko dW5zcGVjOlZTWF9MIFsobWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIndhIikKLSsJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWU1hfTCAyICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIndhIikKLSsJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpRSSAzICJ1NWJpdF9jaW50 X29wZXJhbmQiICJpIildCi0rCQkgICAgICBVTlNQRUNfVlNYX1NMRFdJKSldCi0rICAiVkVDVE9S X01FTV9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHhzbGR3aSAleDAsJXgxLCV4MiwlMyIKLSsg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQotLS0tIGdjYy9jb25maWcvcnM2MDAwL3Jz NjAwMC5oCShyZXZpc2lvbiAxNDYxMTkpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgJ KHJldmlzaW9uIDE0Njc5OCkKLUBAIC0xMDMzLDE0ICsxMDMzLDYgQEAgZXh0ZXJuIGludCByczYw MDBfdmVjdG9yX2FsaWduW107Ci0gCSAoKE1PREUpID09IFY0U0Ztb2RlCQlcCi0gCSAgfHwgKE1P REUpID09IFYyREZtb2RlKQlcCi0gCi0tI2RlZmluZSBWU1hfVkVDVE9SX01PVkVfTU9ERShNT0RF KQlcCi0tCSAoKE1PREUpID09IFYxNlFJbW9kZQkJXAotLQkgIHx8IChNT0RFKSA9PSBWOEhJbW9k ZQkJXAotLQkgIHx8IChNT0RFKSA9PSBWNFNJbW9kZQkJXAotLQkgIHx8IChNT0RFKSA9PSBWMkRJ bW9kZQkJXAotLQkgIHx8IChNT0RFKSA9PSBWNFNGbW9kZQkJXAotLQkgIHx8IChNT0RFKSA9PSBW MkRGbW9kZSkJXAotLQotICNkZWZpbmUgVlNYX1NDQUxBUl9NT0RFKE1PREUpCQlcCi0gCSgoTU9E RSkgPT0gREZtb2RlKQotIAotQEAgLTEwNDksMTIgKzEwNDEsOSBAQCBleHRlcm4gaW50IHJzNjAw MF92ZWN0b3JfYWxpZ25bXTsKLSAJIHx8IFZTWF9TQ0FMQVJfTU9ERSAoTU9ERSkpCi0gCi0gI2Rl ZmluZSBWU1hfTU9WRV9NT0RFKE1PREUpCQlcCi0tCShWU1hfVkVDVE9SX01PVkVfTU9ERSAoTU9E RSkJXAotLQkgfHwgVlNYX1NDQUxBUl9NT0RFKE1PREUpCVwKLS0JIHx8IChNT0RFKSA9PSBWMTZR SW1vZGUJCVwKLS0JIHx8IChNT0RFKSA9PSBWOEhJbW9kZQkJXAotLQkgfHwgKE1PREUpID09IFY0 U0ltb2RlCQlcCi0tCSB8fCAoTU9ERSkgPT0gVjJESW1vZGUJCVwKLSsJKFZTWF9WRUNUT1JfTU9E RSAoTU9ERSkJCVwKLSsJIHx8IFZTWF9TQ0FMQVJfTU9ERSAoTU9ERSkJXAotKwkgfHwgQUxUSVZF Q19WRUNUT1JfTU9ERSAoTU9ERSkJXAotIAkgfHwgKE1PREUpID09IFRJbW9kZSkKLSAKLSAjZGVm aW5lIEFMVElWRUNfVkVDVE9SX01PREUoTU9ERSkJXAotQEAgLTEzMDQsMTIgKzEyOTMsMjQgQEAg ZW51bSByZWdfY2xhc3MKLSAgICBwdXJwb3NlLiAgQW55IG1vdmUgYmV0d2VlbiB0d28gcmVnaXN0 ZXJzIG9mIGEgY292ZXIgY2xhc3Mgc2hvdWxkIGJlCi0gICAgY2hlYXBlciB0aGFuIGxvYWQgb3Ig c3RvcmUgb2YgdGhlIHJlZ2lzdGVycy4gIFRoZSBtYWNybyB2YWx1ZSBpcwotICAgIGFycmF5IG9m IHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBMSU1fUkVHX0NMQVNTRVMgdXNlZCBhcyB0aGUgZW5kCi0t ICAgbWFya2VyLiAgKi8KLSsgICBtYXJrZXIuCi0rCi0rICAgV2UgbmVlZCB0d28gSVJBX0NPVkVS X0NMQVNTRVMsIG9uZSBmb3IgcHJlLVZTWCwgYW5kIHRoZSBvdGhlciBmb3IgVlNYIHRvCi0rICAg YWNjb3VudCBmb3IgdGhlIEFsdGl2ZWMgYW5kIEZsb2F0aW5nIHJlZ2lzdGVycyBiZWluZyBzdWJz ZXRzIG9mIHRoZSBWU1gKLSsgICByZWdpc3RlciBzZXQuICAqLwotKwotKyNkZWZpbmUgSVJBX0NP VkVSX0NMQVNTRVNfUFJFX1ZTWAkJCQkJICAgICBcCi0rewkJCQkJCQkJCSAgICAgXAotKyAgR0VO RVJBTF9SRUdTLCBTUEVDSUFMX1JFR1MsIEZMT0FUX1JFR1MsIEFMVElWRUNfUkVHUywgLyogVlNY X1JFR1MsICovCSAgICAgXAotKyAgLyogVlJTQVZFX1JFR1MsKi8gVlNDUl9SRUdTLCBTUEVfQUND X1JFR1MsIFNQRUZTQ1JfUkVHUywJCSAgICAgXAotKyAgLyogTVFfUkVHUywgTElOS19SRUdTLCBD VFJfUkVHUywgKi8JCQkJCSAgICAgXAotKyAgQ1JfUkVHUywgWEVSX1JFR1MsIExJTV9SRUdfQ0xB U1NFUwkJCQkJICAgICBcCi0rfQotIAotLSNkZWZpbmUgSVJBX0NPVkVSX0NMQVNTRVMJCQkJCQkg ICAgIFwKLSsjZGVmaW5lIElSQV9DT1ZFUl9DTEFTU0VTX1ZTWAkJCQkJCSAgICAgXAotIHsJCQkJ CQkJCQkgICAgIFwKLS0gIEdFTkVSQUxfUkVHUywgU1BFQ0lBTF9SRUdTLCBGTE9BVF9SRUdTLCBB TFRJVkVDX1JFR1MsCQkJICAgICBcCi0tICAvKlZSU0FWRV9SRUdTLCovIFZTQ1JfUkVHUywgU1BF X0FDQ19SRUdTLCBTUEVGU0NSX1JFR1MsCQkgICAgIFwKLSsgIEdFTkVSQUxfUkVHUywgU1BFQ0lB TF9SRUdTLCAvKiBGTE9BVF9SRUdTLCBBTFRJVkVDX1JFR1MsICovIFZTWF9SRUdTLAkgICAgIFwK LSsgIC8qIFZSU0FWRV9SRUdTLCovIFZTQ1JfUkVHUywgU1BFX0FDQ19SRUdTLCBTUEVGU0NSX1JF R1MsCQkgICAgIFwKLSAgIC8qIE1RX1JFR1MsIExJTktfUkVHUywgQ1RSX1JFR1MsICovCQkJCQkg ICAgIFwKLSAgIENSX1JFR1MsIFhFUl9SRUdTLCBMSU1fUkVHX0NMQVNTRVMJCQkJCSAgICAgXAot IH0KLUBAIC0zMzcxLDIxICszMzcyLDM2IEBAIGVudW0gcnM2MDAwX2J1aWx0aW5zCi0gICBWU1hf QlVJTFRJTl9YVlRESVZTUCwKLSAgIFZTWF9CVUlMVElOX1hWVFNRUlREUCwKLSAgIFZTWF9CVUlM VElOX1hWVFNRUlRTUCwKLS0gIFZTWF9CVUlMVElOX1hYTEFORCwKLS0gIFZTWF9CVUlMVElOX1hY TEFOREMsCi0tICBWU1hfQlVJTFRJTl9YWExOT1IsCi0tICBWU1hfQlVJTFRJTl9YWExPUiwKLS0g IFZTWF9CVUlMVElOX1hYTFhPUiwKLS0gIFZTWF9CVUlMVElOX1hYTVJHSEQsCi0tICBWU1hfQlVJ TFRJTl9YWE1SR0hXLAotLSAgVlNYX0JVSUxUSU5fWFhNUkdMRCwKLS0gIFZTWF9CVUlMVElOX1hY TVJHTFcsCi0tICBWU1hfQlVJTFRJTl9YWFBFUk1ESSwKLS0gIFZTWF9CVUlMVElOX1hYU0VMLAot LSAgVlNYX0JVSUxUSU5fWFhTTERXSSwKLS0gIFZTWF9CVUlMVElOX1hYU1BMVEQsCi0tICBWU1hf QlVJTFRJTl9YWFNQTFRXLAotLSAgVlNYX0JVSUxUSU5fWFhTV0FQRCwKLSsgIFZTWF9CVUlMVElO X1hYU0VMXzJESSwKLSsgIFZTWF9CVUlMVElOX1hYU0VMXzJERiwKLSsgIFZTWF9CVUlMVElOX1hY U0VMXzRTSSwKLSsgIFZTWF9CVUlMVElOX1hYU0VMXzRTRiwKLSsgIFZTWF9CVUlMVElOX1hYU0VM XzhISSwKLSsgIFZTWF9CVUlMVElOX1hYU0VMXzE2UUksCi0rICBWU1hfQlVJTFRJTl9WUEVSTV8y REksCi0rICBWU1hfQlVJTFRJTl9WUEVSTV8yREYsCi0rICBWU1hfQlVJTFRJTl9WUEVSTV80U0ks Ci0rICBWU1hfQlVJTFRJTl9WUEVSTV80U0YsCi0rICBWU1hfQlVJTFRJTl9WUEVSTV84SEksCi0r ICBWU1hfQlVJTFRJTl9WUEVSTV8xNlFJLAotKyAgVlNYX0JVSUxUSU5fWFhQRVJNRElfMkRGLAot KyAgVlNYX0JVSUxUSU5fWFhQRVJNRElfMkRJLAotKyAgVlNYX0JVSUxUSU5fQ09OQ0FUXzJERiwK LSsgIFZTWF9CVUlMVElOX0NPTkNBVF8yREksCi0rICBWU1hfQlVJTFRJTl9TRVRfMkRGLAotKyAg VlNYX0JVSUxUSU5fU0VUXzJESSwKLSsgIFZTWF9CVUlMVElOX1NQTEFUXzJERiwKLSsgIFZTWF9C VUlMVElOX1NQTEFUXzJESSwKLSsgIFZTWF9CVUlMVElOX1hYTVJHSFdfNFNGLAotKyAgVlNYX0JV SUxUSU5fWFhNUkdIV180U0ksCi0rICBWU1hfQlVJTFRJTl9YWE1SR0xXXzRTRiwKLSsgIFZTWF9C VUlMVElOX1hYTVJHTFdfNFNJLAotKyAgVlNYX0JVSUxUSU5fWFhTTERXSV8xNlFJLAotKyAgVlNY X0JVSUxUSU5fWFhTTERXSV84SEksCi0rICBWU1hfQlVJTFRJTl9YWFNMRFdJXzRTSSwKLSsgIFZT WF9CVUlMVElOX1hYU0xEV0lfNFNGLAotKyAgVlNYX0JVSUxUSU5fWFhTTERXSV8yREksCi0rICBW U1hfQlVJTFRJTl9YWFNMRFdJXzJERiwKLSAKLSAgIC8qIFZTWCBvdmVybG9hZGVkIGJ1aWx0aW5z LCBhZGQgdGhlIG92ZXJsb2FkZWQgZnVuY3Rpb25zIG5vdCBwcmVzZW50IGluCi0gICAgICBBbHRp dmVjLiAgKi8KLUBAIC0zMzk1LDcgKzM0MTEsMTMgQEAgZW51bSByczYwMDBfYnVpbHRpbnMKLSAg IFZTWF9CVUlMVElOX1ZFQ19OTUFERCwKLSAgIFZTWF9CVUlUTElOX1ZFQ19OTVNVQiwKLSAgIFZT WF9CVUlMVElOX1ZFQ19ESVYsCi0tICBWU1hfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QgPSBWU1hf QlVJTFRJTl9WRUNfRElWLAotKyAgVlNYX0JVSUxUSU5fVkVDX1hYTVJHSFcsCi0rICBWU1hfQlVJ TFRJTl9WRUNfWFhNUkdMVywKLSsgIFZTWF9CVUlMVElOX1ZFQ19YWFBFUk1ESSwKLSsgIFZTWF9C VUlMVElOX1ZFQ19YWFNMRFdJLAotKyAgVlNYX0JVSUxUSU5fVkVDX1hYU1BMVEQsCi0rICBWU1hf QlVJTFRJTl9WRUNfWFhTUExUVywKLSsgIFZTWF9CVUlMVElOX09WRVJMT0FERURfTEFTVCA9IFZT WF9CVUlMVElOX1ZFQ19YWFNQTFRXLAotIAotICAgLyogQ29tYmluZWQgVlNYL0FsdGl2ZWMgYnVp bHRpbnMuICAqLwotICAgVkVDVE9SX0JVSUxUSU5fRkxPQVRfVjRTSV9WNFNGLAotQEAgLTM0MjUs MTMgKzM0NDcsMTYgQEAgZW51bSByczYwMDBfYnVpbHRpbl90eXBlX2luZGV4Ci0gICBSUzYwMDBf QlRJX3Vuc2lnbmVkX1YxNlFJLAotICAgUlM2MDAwX0JUSV91bnNpZ25lZF9WOEhJLAotICAgUlM2 MDAwX0JUSV91bnNpZ25lZF9WNFNJLAotKyAgUlM2MDAwX0JUSV91bnNpZ25lZF9WMkRJLAotICAg UlM2MDAwX0JUSV9ib29sX2NoYXIsICAgICAgICAgIC8qIF9fYm9vbCBjaGFyICovCi0gICBSUzYw MDBfQlRJX2Jvb2xfc2hvcnQsICAgICAgICAgLyogX19ib29sIHNob3J0ICovCi0gICBSUzYwMDBf QlRJX2Jvb2xfaW50LCAgICAgICAgICAgLyogX19ib29sIGludCAqLwotKyAgUlM2MDAwX0JUSV9i b29sX2xvbmcsCQkgLyogX19ib29sIGxvbmcgKi8KLSAgIFJTNjAwMF9CVElfcGl4ZWwsICAgICAg ICAgICAgICAvKiBfX3BpeGVsICovCi0gICBSUzYwMDBfQlRJX2Jvb2xfVjE2UUksICAgICAgICAg LyogX192ZWN0b3IgX19ib29sIGNoYXIgKi8KLSAgIFJTNjAwMF9CVElfYm9vbF9WOEhJLCAgICAg ICAgICAvKiBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgKi8KLSAgIFJTNjAwMF9CVElfYm9vbF9WNFNJ LCAgICAgICAgICAvKiBfX3ZlY3RvciBfX2Jvb2wgaW50ICovCi0rICBSUzYwMDBfQlRJX2Jvb2xf VjJESSwgICAgICAgICAgLyogX192ZWN0b3IgX19ib29sIGxvbmcgKi8KLSAgIFJTNjAwMF9CVElf cGl4ZWxfVjhISSwgICAgICAgICAvKiBfX3ZlY3RvciBfX3BpeGVsICovCi0gICBSUzYwMDBfQlRJ X2xvbmcsCSAgICAgICAgIC8qIGxvbmdfaW50ZWdlcl90eXBlX25vZGUgKi8KLSAgIFJTNjAwMF9C VElfdW5zaWduZWRfbG9uZywgICAgICAvKiBsb25nX3Vuc2lnbmVkX3R5cGVfbm9kZSAqLwotQEAg LTM0NjYsMTMgKzM0OTEsMTYgQEAgZW51bSByczYwMDBfYnVpbHRpbl90eXBlX2luZGV4Ci0gI2Rl ZmluZSB1bnNpZ25lZF9WMTZRSV90eXBlX25vZGUgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNb UlM2MDAwX0JUSV91bnNpZ25lZF9WMTZRSV0pCi0gI2RlZmluZSB1bnNpZ25lZF9WOEhJX3R5cGVf bm9kZSAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV91bnNpZ25lZF9WOEhJ XSkKLSAjZGVmaW5lIHVuc2lnbmVkX1Y0U0lfdHlwZV9ub2RlICAgICAgIChyczYwMDBfYnVpbHRp bl90eXBlc1tSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0ldKQotKyNkZWZpbmUgdW5zaWduZWRfVjJE SV90eXBlX25vZGUgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfdW5zaWdu ZWRfVjJESV0pCi0gI2RlZmluZSBib29sX2NoYXJfdHlwZV9ub2RlICAgICAgICAgICAocnM2MDAw X2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9ib29sX2NoYXJdKQotICNkZWZpbmUgYm9vbF9zaG9y dF90eXBlX25vZGUgICAgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfYm9v bF9zaG9ydF0pCi0gI2RlZmluZSBib29sX2ludF90eXBlX25vZGUgICAgICAgICAgICAocnM2MDAw X2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9ib29sX2ludF0pCi0rI2RlZmluZSBib29sX2xvbmdf dHlwZV9ub2RlICAgICAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9ib29s X2xvbmddKQotICNkZWZpbmUgcGl4ZWxfdHlwZV9ub2RlICAgICAgICAgICAgICAgKHJzNjAwMF9i dWlsdGluX3R5cGVzW1JTNjAwMF9CVElfcGl4ZWxdKQotICNkZWZpbmUgYm9vbF9WMTZRSV90eXBl X25vZGUJICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfYm9vbF9WMTZRSV0p Ci0gI2RlZmluZSBib29sX1Y4SElfdHlwZV9ub2RlCSAgICAgIChyczYwMDBfYnVpbHRpbl90eXBl c1tSUzYwMDBfQlRJX2Jvb2xfVjhISV0pCi0gI2RlZmluZSBib29sX1Y0U0lfdHlwZV9ub2RlCSAg ICAgIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX2Jvb2xfVjRTSV0pCi0rI2RlZmlu ZSBib29sX1YyRElfdHlwZV9ub2RlCSAgICAgIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBf QlRJX2Jvb2xfVjJESV0pCi0gI2RlZmluZSBwaXhlbF9WOEhJX3R5cGVfbm9kZQkgICAgICAocnM2 MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9waXhlbF9WOEhJXSkKLSAKLSAjZGVmaW5lIGxv bmdfaW50ZWdlcl90eXBlX2ludGVybmFsX25vZGUgIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYw MDBfQlRJX2xvbmddKQotLS0tIGdjYy9jb25maWcvcnM2MDAwL2FsdGl2ZWMubWQJKHJldmlzaW9u IDE0NjExOSkKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kCShyZXZpc2lvbiAxNDY3 OTgpCi1AQCAtMTY2LDEyICsxNjYsMTUgQEAgKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFYgW1Y0U0kg VjhISSBWMTZRSQotIDs7IG90aGVyd2lzZSBoYW5kbGVkIGJ5IGFsdGl2ZWMgKHYyZGYsIHYyZGks IHRpKQotIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWTSBbVjRTSSBWOEhJIFYxNlFJIFY0U0YgVjJE RiBWMkRJIFRJXSkKLSAKLSs7OyBMaWtlIFZNLCBleGNlcHQgZG9uJ3QgZG8gVEltb2RlCi0rKGRl ZmluZV9tb2RlX2l0ZXJhdG9yIFZNMiBbVjRTSSBWOEhJIFYxNlFJIFY0U0YgVjJERiBWMkRJXSkK LSsKLSAoZGVmaW5lX21vZGVfYXR0ciBWSV9jaGFyIFsoVjRTSSAidyIpIChWOEhJICJoIikgKFYx NlFJICJiIildKQotIAotIDs7IFZlY3RvciBtb3ZlIGluc3RydWN0aW9ucy4KLSAoZGVmaW5lX2lu c24gIiphbHRpdmVjX21vdjxtb2RlPiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYgMCAibm9u aW1tZWRpYXRlX29wZXJhbmQiICI9Wix2LHYsKm8sKnIsKnIsdix2IikKLS0JKG1hdGNoX29wZXJh bmQ6ViAxICJpbnB1dF9vcGVyYW5kIiAidixaLHYscixvLHIsaixXIikpXQotKyAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6Vk0yIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPVosdix2LCpvLCpyLCpy LHYsdiIpCi0rCShtYXRjaF9vcGVyYW5kOlZNMiAxICJpbnB1dF9vcGVyYW5kIiAidixaLHYscixv LHIsaixXIikpXQotICAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKQotICAgICYm IChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgPE1PREU+bW9kZSkgCi0gICAgICAgIHx8 IHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzFdLCA8TU9ERT5tb2RlKSkiCi1AQCAtMTkxLDYg KzE5NCwzMSBAQCAoZGVmaW5lX2luc24gIiphbHRpdmVjX21vdjxtb2RlPiIKLSB9Ci0gICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjc3RvcmUsdmVjbG9hZCx2ZWNzaW1wbGUsc3RvcmUsbG9hZCwqLHZl Y3NpbXBsZSwqIildKQotIAotKzs7IFVubGlrZSBvdGhlciBhbHRpdmVjIG1vdmVzLCBhbGxvdyB0 aGUgR1BScywgc2luY2UgYSBub3JtYWwgdXNlIG9mIFRJbW9kZQotKzs7IGlzIGZvciB1bmlvbnMu ICBIb3dldmVyIGZvciBwbGFpbiBkYXRhIG1vdmVtZW50LCBzbGlnaHRseSBmYXZvciB0aGUgdmVj dG9yCi0rOzsgbG9hZHMKLSsoZGVmaW5lX2luc24gIiphbHRpdmVjX21vdnRpIgotKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VEkgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9Wix2LHYsP28sP3Is P3Isdix2IikKLSsJKG1hdGNoX29wZXJhbmQ6VEkgMSAiaW5wdXRfb3BlcmFuZCIgInYsWix2LHIs byxyLGosVyIpKV0KLSsgICJWRUNUT1JfTUVNX0FMVElWRUNfUCAoVEltb2RlKQotKyAgICYmIChy ZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgVEltb2RlKSAKLSsgICAgICAgfHwgcmVnaXN0 ZXJfb3BlcmFuZCAob3BlcmFuZHNbMV0sIFRJbW9kZSkpIgotK3sKLSsgIHN3aXRjaCAod2hpY2hf YWx0ZXJuYXRpdmUpCi0rICAgIHsKLSsgICAgY2FzZSAwOiByZXR1cm4gInN0dnggJTEsJXkwIjsK LSsgICAgY2FzZSAxOiByZXR1cm4gImx2eCAlMCwleTEiOwotKyAgICBjYXNlIDI6IHJldHVybiAi dm9yICUwLCUxLCUxIjsKLSsgICAgY2FzZSAzOiByZXR1cm4gIiMiOwotKyAgICBjYXNlIDQ6IHJl dHVybiAiIyI7Ci0rICAgIGNhc2UgNTogcmV0dXJuICIjIjsKLSsgICAgY2FzZSA2OiByZXR1cm4g InZ4b3IgJTAsJTAsJTAiOwotKyAgICBjYXNlIDc6IHJldHVybiBvdXRwdXRfdmVjX2NvbnN0X21v dmUgKG9wZXJhbmRzKTsKLSsgICAgZGVmYXVsdDogZ2NjX3VucmVhY2hhYmxlICgpOwotKyAgICB9 Ci0rfQotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3N0b3JlLHZlY2xvYWQsdmVjc2ltcGxlLHN0 b3JlLGxvYWQsKix2ZWNzaW1wbGUsKiIpXSkKLSsKLSAoZGVmaW5lX3NwbGl0Ci0gICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWTSAwICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICIiKQotIAkobWF0 Y2hfb3BlcmFuZDpWTSAxICJlYXN5X3ZlY3Rvcl9jb25zdGFudF9hZGRfc2VsZiIgIiIpKV0KLUBA IC00MzQsMTMgKzQ2MiwxMyBAQCAoZGVmaW5lX2luc24gIiphbHRpdmVjX2dldjRzZiIKLSAgICJ2 Y21wZ2VmcCAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0pCi0gCi0t KGRlZmluZV9pbnNuICJhbHRpdmVjX3ZzZWw8bW9kZT4iCi0rKGRlZmluZV9pbnNuICIqYWx0aXZl Y192c2VsPG1vZGU+IgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAiYWx0aXZlY19yZWdp c3Rlcl9vcGVyYW5kIiAiPXYiKQotIAkoaWZfdGhlbl9lbHNlOlZNIChuZSAobWF0Y2hfb3BlcmFu ZDpWTSAxICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSAJCQkgICAgIChjb25zdF9p bnQgMCkpCi0gCQkJIChtYXRjaF9vcGVyYW5kOlZNIDIgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFu ZCIgInYiKQotIAkJCSAobWF0Y2hfb3BlcmFuZDpWTSAzICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJh bmQiICJ2IikpKV0KLS0gICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpIgotKyAg IlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKLSAgICJ2c2VsICUwLCUzLCUyLCUx IgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0gCi1AQCAtNzgwLDcgKzgwOCw3 IEBAIChkZWZpbmVfaW5zbiAiYWx0aXZlY192bXJnaHciCi0gCQkJCQkJICAgIChjb25zdF9pbnQg MykKLSAJCQkJCQkgICAgKGNvbnN0X2ludCAxKV0pKQotIAkJICAgICAgKGNvbnN0X2ludCA1KSkp XQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QIChWNFNJbW9k ZSkiCi0gICAidm1yZ2h3ICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0i KV0pCi0gCi1AQCAtNzk3LDcgKzgyNSw3IEBAIChkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfdm1yZ2hz ZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNvbnN0X2ludCAzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29uc3RfaW50IDEpXSkpCi0gICAgICAgICAgICAgICAgICAgICAgIChjb25z dF9pbnQgNSkpKV0KLS0gICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSsgICJW RUNUT1JfTUVNX0FMVElWRUNfUCAoVjRTRm1vZGUpIgotICAgInZtcmdodyAlMCwlMSwlMiIKLSAg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQotIAotQEAgLTg4MSw3ICs5MDksNyBAQCAo ZGVmaW5lX2luc24gImFsdGl2ZWNfdm1yZ2x3IgotIAkJCQkgICAgIChjb25zdF9pbnQgMSkKLSAJ CQkJICAgICAoY29uc3RfaW50IDMpXSkpCi0gCSAoY29uc3RfaW50IDUpKSldCi0tICAiVEFSR0VU X0FMVElWRUMiCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX1AgKFY0U0ltb2RlKSIKLSAgICJ2bXJn bHcgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSAKLUBAIC04 OTksNyArOTI3LDcgQEAgKGRlZmluZV9pbnNuICIqYWx0aXZlY192bXJnbHNmIgotIAkJCQkgICAg IChjb25zdF9pbnQgMSkKLSAJCQkJICAgICAoY29uc3RfaW50IDMpXSkpCi0gCSAoY29uc3RfaW50 IDUpKSldCi0tICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QIChWNFNGbW9kZSkiCi0rICAiVkVDVE9S X01FTV9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSAgICJ2bXJnbHcgJTAsJTEsJTIiCi0gICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSAKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYw MDAubWQJKHJldmlzaW9uIDE0NjExOSkKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQJ KHJldmlzaW9uIDE0Njc5OCkKLUBAIC0xNDY2Nyw3ICsxNDY2NywxMSBAQCAoZGVmaW5lX2luc24g InJldHVybiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJqbXByZWciKV0pCi0gCi0gKGRlZmluZV9l eHBhbmQgImluZGlyZWN0X2p1bXAiCi0tICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kIDAgInJl Z2lzdGVyX29wZXJhbmQiICIiKSldKQotKyAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZCAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiIikpXQotKyAgIiIKLSt7Ci0rICByczYwMDBfc2V0X2luZGlyZWN0 X2p1bXAgKCk7Ci0rfSkKLSAKLSAoZGVmaW5lX2luc24gIippbmRpcmVjdF9qdW1wPG1vZGU+Igot ICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpQIDAgInJlZ2lzdGVyX29wZXJhbmQiICJjLCps IikpXQotQEAgLTE0NjgyLDE0ICsxNDY4NiwxNCBAQCAoZGVmaW5lX2V4cGFuZCAidGFibGVqdW1w IgotICAgWyh1c2UgKG1hdGNoX29wZXJhbmQgMCAiIiAiIikpCi0gICAgKHVzZSAobGFiZWxfcmVm IChtYXRjaF9vcGVyYW5kIDEgIiIgIiIpKSldCi0gICAiIgotLSAgIgotIHsKLSsgIHJzNjAwMF9z ZXRfaW5kaXJlY3RfanVtcCAoKTsKLSAgIGlmIChUQVJHRVRfMzJCSVQpCi0gICAgIGVtaXRfanVt cF9pbnNuIChnZW5fdGFibGVqdW1wc2kgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkpOwotICAg ZWxzZQotICAgICBlbWl0X2p1bXBfaW5zbiAoZ2VuX3RhYmxlanVtcGRpIChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMV0pKTsKLSAgIERPTkU7Ci0tfSIpCi0rfSkKLSAKLSAoZGVmaW5lX2V4cGFuZCAi dGFibGVqdW1wc2kiCi0gICBbKHNldCAobWF0Y2hfZHVwIDMpCi1AQCAtMTQ3NDksNiArMTQ3NTMs MTEgQEAgKGRlZmluZV9leHBhbmQgImRvbG9vcF9lbmQiCi0gICAvKiBPbmx5IHVzZSB0aGlzIG9u IGlubmVybW9zdCBsb29wcy4gICovCi0gICBpZiAoSU5UVkFMIChvcGVyYW5kc1szXSkgPiAxKQot ICAgICBGQUlMOwotKyAgLyogRG8gbm90IHRyeSB0byB1c2UgZGVjcmVtZW50IGFuZCBjb3VudCBv biBjb2RlIHRoYXQgaGFzIGFuIGluZGlyZWN0Ci0rICAgICBqdW1wIG9yIGEgdGFibGUganVtcCwg YmVjYXVzZSB0aGUgY3RyIHJlZ2lzdGVyIGlzIHByZWZlcnJlZCBvdmVyIHRoZQotKyAgICAgbHIg cmVnaXN0ZXIuICAqLwotKyAgaWYgKHJzNjAwMF9oYXNfaW5kaXJlY3RfanVtcF9wICgpKQotKyAg ICBGQUlMOwotICAgaWYgKFRBUkdFVF82NEJJVCkKLSAgICAgewotICAgICAgIGlmIChHRVRfTU9E RSAob3BlcmFuZHNbMF0pICE9IERJbW9kZSkKCmRpZmYgLS1naXQgYS9nY2M0NC1wb3dlcjcucGF0 Y2ggYi9nY2M0NC1wb3dlcjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0 YzNkOWMuLjAwMDAwMDAKLS0tIGEvZ2NjNDQtcG93ZXI3LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTE0NDggKzAsMCBAQAotMjAwOS0wNC0wOCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVy QGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogZG9jL2ludm9rZS50ZXhpICgtbXZzeC12ZWN0b3It bWVtb3J5KTogTWFrZSBkZWJ1ZyBzd2l0Y2hlcwotCXVuZG91Y21lbnRlZC4KLQkoLW12c3gtdmVj dG9yLWZsb2F0KTogRGl0dG8uCi0JKC1tdnN4LXZlY3Rvci1kb3VibGUpOiBEaXR0by4KLQkoLW12 c3gtc2NhbGFyLWRvdWJsZSk6IERpdHRvLgotCSgtbXZzeC1zY2FsYXItbWVtb3J5KTogRGl0dG8u Ci0KLQkqIGNvbmZpZy9yczYwMDAvdmVjdG9yLm1kIChWRUNfUik6IE5ldyBpdGVyYXRvciBmb3Ig cmVsb2FkCi0JcGF0dGVybnMuCi0JKG1vdjxtb2RlPik6IERvbid0IGNhbGwgcnM2MDAwX2VtaXRf bW92ZS4KLQkocmVsb2FkXzxWRUNfUjptb2RlPl88UDptcHRyc2l6ZT5fKik6IE5ldyBpbnNucyBm b3IKLQlzZWNvbmRhcnlfcmVsb2FkIHN1cHBvcnQuCi0JKHZlY19yZWxvYWRfYW5kX3BsdXNfPG1w dHJzaXplPik6IE5ldyBpbnNucyBpbiBjYXNlIHJlbG9hZCBuZWVkcwotCXRvIG1vdmUgYSBWU1gv QWx0aXZlYyAoYW5kIChwbHVzIHJlZyByZWcpIC0xNikgdHlwZSBhZGRyZXNzIHRvIGEKLQliYXNl IHJlZ2lzdGVyLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocnM2MDAwX3Nl Y29uZGFyeV9yZWxvYWRfaW5uZXIpOgotCVJlbmFtZSBmcm9tIHJzNjAwMF92ZWN0b3Jfc2Vjb25k YXJ5X3JlbG9hZC4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0ICgtbXZzeC12ZWN0b3It bWVtb3J5KTogTWFrZSBkZWJ1ZwotCXN3aXRjaGVzIHVuZG91Y21lbnRlZC4KLQkoLW12c3gtdmVj dG9yLWZsb2F0KTogRGl0dG8uCi0JKC1tdnN4LXZlY3Rvci1kb3VibGUpOiBEaXR0by4KLQkoLW12 c3gtc2NhbGFyLWRvdWJsZSk6IERpdHRvLgotCSgtbXZzeC1zY2FsYXItbWVtb3J5KTogRGl0dG8u Ci0JKC1tdnN4LXY0c2YtYWx0aXZlYy1yZWdzKTogTmV3IHVuZG9jdW1lbnRlZCBkZWJ1ZyBzd2l0 Y2ggdG8KLQljb250cm9sIHdoZXRoZXIgVjRTRiB0eXBlcyBwcmVmZXIgdGhlIEFsdGl2ZWMgcmVn aXN0ZXJzIG9yIGFsbCBvZgotCXRoZSBWU1ggcmVnaXN0ZXJzLgotCSgtbXJlbG9hZC1mdW5jdGlv bnMpOiBOZXcgdW5kb2N1bWVudGVkIGRlYnVnIHN3aXRjaCB0bwotCWVuYWJsZS9kaXNhYmxlIHRo ZSBzZWNvbmRhcnkgcmVsb2FkIHN1cHBvcnQuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMg KHJzNjAwMF9yZWdub19yZWdjbGFzcyk6IE5ldyBnbG9iYWwgdG8KLQltYXAgcmVnaXN0ZXIgbnVt YmVyIHRvIHJlZ2NsYXNzLgotCShyczYwMDBfdmVjdG9yX3JlbG9hZCk6IE5ldyBhcnJheSB0byBo b2xkIHRoZSBzZWNvbmRhcnkgcmVsb2FkCi0JaW5zbiBjb2RlcyBmb3IgdGhlIHZlY3RvciB0eXBl cy4KLQkocnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rKTogRmlsbCBpbiByczYwMDBfcmVn bm9fcmVnY2xhc3MKLQlhbmQgcnM2MDAwX3ZlY3Rvcl9yZWxvYWQuCi0JKHJzNjAwMF9tb2RlX2Rl cGVuZGVudF9hZGRyZXNzKTogVXNpbmcgQU5EIGluIGFkZHJlc3NlcyBpcyBtb2RlCi0JZGVwZW5k ZW50LgotCShyczYwMDBfZW1pdF9tb3ZlKTogQWRkIGRlYnVnIGluZm9ybWF0aW9uIGlmIC1tZGVi dWc9YWRkci4KLQkocnM2MDAwX3JlbG9hZF9yZWdpc3Rlcl90eXBlKTogQ2xhc3NpZnkgcmVnaXN0 ZXIgY2xhc3NlcyBmb3IKLQlzZWNvbmRhcnkgcmVsb2FkLgotCShyczYwMDBfc2Vjb25kYXJ5X3Jl bG9hZCk6IEZvciB0aGUgdmVjdG9yIHR5cGVzLCBhZGQgcmVsb2FkCi0Jc3VwcG9ydCB0byBzdXBw b3J0IHJlZytyZWcgYWRkcmVzc2luZyBmb3IgZ3BycywgYW5kIHJlZytvZmZzZXQKLQlhZGRyZXNz aW5nIGZvciB2ZWN0b3IgcmVnaXN0ZXJzLgotCShyczYwMDBfc2Vjb25kYXJ5X3JlbG9hZF9pbm5l cik6IFJlbmFtZSBmcm9tCi0JcnM2MDAwX3ZlY3Rvcl9zZWNvbmRhcnlfcmVsb2FkLiAgRml4dXAg Z3ByIGFkZHJlc3NpbmcgdG8ganVzdCByZWcKLQlvciByZWcrb2Zmc2V0LCBhbmQgdmVjdG9yIGFk ZHJlc3NpbmcgdG8ganVzdCByZWcgb3IgcmVnK3JlZy4KLQkocnM2MDAwX3ByZWZlcnJlZF9yZWxv YWRfY2xhc3MpOiBNYWtlIHN1cmUgYWxsIGNhc2VzIHNldCB0aGUKLQlyZXR1cm4gdmFsdWUuICBJ ZiBWU1gvQWx0aXZlYyBhZGRyZXNzIHdpdGggQU5EIC0xNiwgcHJlZmVyIHVzaW5nCi0JYW4gQWx0 aXZlYyByZWdpc3Rlci4KLQkocnM2MDAwX3NlY29uZGFyeV9tZW1vcnlfbmVlZGVkKTogSGFuZGxl IHRoaW5ncyBsaWtlIFNGbW9kZSB0aGF0Ci0JY2FuIGdvIGluIGZsb2F0aW5nIHJlZ2lzdGVycywg YnV0IG5vdCBhbHRpdmVjIHJlZ2lzdGVycyB1bmRlcgotCS1tdnN4LgotCi0JKiBjb25maWcvcnM2 MDAwL3ZzeC5tZCAoVlNYX1UpOiBOZXcgaXRlcmF0b3IgZm9yIGxvYWQvc3RvcmUgd2l0aAotCXVw ZGF0ZS4KLQkoVlNpLCBWU0kpOiBSZW9yZGVyIGZpZWxkcy4KLQkoVlNkKTogQWRkIHN1cHBvcnQg Zm9yIGxvYWQvc3RvcmUgd2l0aCB1cGRhdGUgcmV3cml0ZS4KLQkoVlN2KTogRGl0dG8uCi0JKFZT dHlwZV9sb2FkX3VwZGF0ZSk6IE5ldyBtb2RlIGF0dHJpYnV0ZSBmb3IgbG9hZC9zdG9yZSB3aXRo Ci0JdXBkYXRlLgotCShWU3R5cGVfc3RvcmVfdXBkYXRlKTogRGl0dG8uCi0JKHZzeF9tb3Y8dHlw ZT4pOiBVc2UgKiBpbnN0ZWFkIG9mIHN0b3JlL2xvYWQgYXR0cmlidXRlcyBmb3IKLQltdWx0aS1p bnN0cnVjdGlvbiBncHIgbG9hZHMvc3RvcmVzLgotCSh2c3hfcmVsb2FkKiopOiBEZWxldGUgdW51 c2VkIHJlbG9hZCBwYXR0ZXJucy4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUkVHTk9f UkVHX0NMQVNTKTogQ2hhbmdlIGZyb20gYSBidW5jaCBvZgotCWlmIHN0YXRlbWVudHMgdG8gdXNp bmcgYSBsb29rdXAgdGFibGUuCi0JKHJzNjAwMF9yZWdub19yZWdjbGFzcyk6IExvb2t1cCB0YWJs ZSBmb3IgUkVHTk9fUkVHX0NMQVNTLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFs dGl2ZWNfcmVsb2FkKik6IERlbGV0ZSB1bnVzZWQgcmVsb2FkCi0JcGF0dGVybnMuCi0KLQkqIGNv bmZpZy9yczYwMDAvcnM2MDAwLm1kICh0cHRyc2l6ZSwgbXB0cnNpemUpOiBOZXcgbW9kZQotCWF0 dHJpYnV0ZXMgZm9yIC1tMzIvLW02NCBzdXBwb3J0LgotCi0yMDA5LTAzLTI3ICBKYWt1YiBKZWxp bmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRhcmdldC8zOTU1OAotCSogbWFjcm8uYyAo Y3BwX2dldF90b2tlbik6IElmIG1hY3JvX3RvX2V4cGFuZCByZXR1cm5zIE5VTEwKLQlhbmQgdXNl ZCBzb21lIHRva2VucywgYWRkIENQUF9QQURESU5HIGJlZm9yZSBuZXh0IHRva2VuLgotCi0JKiBn Y2MudGFyZ2V0L3Bvd2VycGMvYWx0aXZlYy0yOS5jOiBOZXcgdGVzdC4KLQotMjAwOS0wMy0yNyAg TWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29u ZmlnL3JzNjAwMC9jb25zdHJhaW50cy5tZCAoIndaIiBjb25zdHJhaW50KTogTmV3IGNvbnN0cmFp bnQKLQlmb3IgdXNpbmcgQWx0aXZlYyBsb2Fkcy9zdG9yZXMgdW5kZXIgVlNYIGZvciB2ZWN0b3Ig cmVhbGlnbm1lbnQuCi0KLQkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZAotCShhbHRpdmVj X2luZGV4ZWRfb3JfaW5kaXJlY3Rfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUgdG8gcmVjb2duaXpl Ci0JQWx0aXZlYyBsb2FkL3N0b3JlcyB3aXRoIGFuIGV4cGxpY2l0IEFORCAtMTYuCi0KLQkqIGNv bmZpZy9yczYwMDAvcG93ZXI3Lm1kOiBXaGl0ZXNwYWNlIGNoYW5nZS4KLQotCSogY29uZmlnL3Jz NjAwMC9yczYwMDAub3B0ICgtbXBvd2VyNy1hZGp1c3QtY29zdCk6IE5ldyBkZWJ1ZwotCXN3aXRj aC4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAtYy5jIChhbHRpdmVjX2NhdGVnb3JpemVfa2V5 d29yZCk6IElmIC1tdnN4Ci0JYW5kIC1tbm8tYWx0aXZlYywgcmVjb2duaXplIHRoZSAndmVjdG9y JyBrZXl3b3JkLCBidXQgZG8gbm90Ci0JcmVjb2duaXplICdib29sJyBvciAncGl4ZWwnLiAgUmVj b2duaXplIHZlY3RvciBkb3VibGUgdW5kZXIgVlNYLgotCShpbml0X3ZlY3Rvcl9rZXl3b3Jkcyk6 IERpdHRvLgotCShyczYwMDBfbWFjcm9fdG9fZXhwYW5kKTogRGl0dG8uCi0JKGFsdGl2ZWNfb3Zl cmxvYWRlZF9idWlsdGlucyk6IEFkZCBWU1ggb3ZlcmxvYWRlZCBidWlsdGlucy4KLQkoYWx0aXZl Y19yZXNvbHZlX292ZXJsb2FkZWRfYnVpbHRpbik6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAw L3JzNjAwMC5jIChyczYwMDBfZGVidWdfY29zdCk6IE5ldyBnbG9iYWwgZm9yCi0JLW1kZWJ1Zz1j b3N0LgotCShyczYwMDBfZGVidWdfYWRkcmVzc19jb3N0KTogTmV3IGZ1bmN0aW9uIGZvciBwcmlu dGluZyBjb3N0cyBpZgotCS1tZGVidWc9Y29zdC4KLQkocnM2MDAwX2RlYnVnX3J0eF9jb3N0cyk6 IERpdHRvLgotCShyczYwMDBfZGVidWdfYWRqdXN0X2Nvc3QpOiBEaXR0by4KLQkocnM2MDAwX292 ZXJyaWRlX29wdGlvbnMpOiBBZGQgLW1kZWJ1Zz1jb3N0IHN1cHBvcnQuCi0JKHJzNjAwMF9sZWdp dGltaXplX3JlbG9hZF9hZGRyZXNzKTogQWxsb3cgQWx0aXZlYyBsb2FkcyBhbmQgc3RvcmVzCi0J d2l0aCBhbiBleHBsaWNpdCBBTkQgLTE2LCBpbiBWU1ggZm9yIHZlY3RvciByZWFsaWdubWVudC4K LQkocnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MpOiBEaXR0by4KLQkocnM2MDAwX2xl Z2l0aW1hdGVfYWRkcmVzcyk6IERpdHRvLgotCShwcmludF9vcGVyYW5kKTogRGl0dG8uCi0JKGJk ZXNjXzNhcmcpOiBBZGQgVlNYIGJ1aWx0aW5zLgotCShiZGVzY18yYXJnKTogRGl0dG8uCi0JKGJk ZXNjXzFhcmcpOiBEaXR0by4KLQkoYmRlc2NfYWJzKTogRGl0dG8uCi0JKHZzeF9leHBhbmRfYnVp bHRpbik6IFN0dWIgZnVuY3Rpb24gZm9yIGV4cGFuZGluZyBWU1ggYnVpbHRpbnMuCi0JKHJzNjAw MF9leHBhbmRfYnVpbHRpbik6IENhbGwgdnN4X2V4cGFuZF9idWlsdGluLgotCi0JKiBjb25maWcv cnM2MDAwL3ZzeC5tZCAobW9zdCBERiBpbnNucyk6IE1lcmdlIERGIGluc25zIGluIHdpdGgKLQlW MkRGIGFuZCBWNFNGIGluc25zLCByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyBtdWNoIG9mIHRoZSBj b2RlLgotCShhbGwgaW5zbnMpOiBHbyB0aHJvdWdoIGFsbCBpbnNucywgYW5kIGFsdGVybmF0aXZl cyB0byBhZGRyZXNzIHRoZQotCWZ1bGwgVlNYIHJlZ2lzdGVyIHNldCwgYXMgYSBub24tcHJlZmVy cmVkIG9wdGlvbi4KLQkodnN4X21vZDxtb2RlPik6IEFkZCBzdXBwb3J0IGZvciB1c2luZyBBbHRp dmVjIGxvYWQvc3RvcmUgd2l0aAotCWV4cGxpY2l0IEFORCAtMTYuICBVc2UgeHhsb3IgdG8gY29w eSByZWdpc3RlcnMsIG5vdCBjb3B5IHNpZ24uCi0JKG11bHRpcGx5L2FkZCBpbnNucyk6IEFkZCBh biBleHBhbmRlciBhbmQgdW5zcGVjIHNvIHRoZSBpbnNuIGNhbgotCWJlIHVzZWQgZGlyZWN0bHkg ZXZlbiBpZiAtbW5vLWZ1c2VkLW1hZGQuCi0JKHZzeF90ZGl2PG1vZGU+Myk6IE5ldyBpbnNuIGZv ciB1c2UgYXMgYSBidWlsdGluIGZ1bmN0aW9uLgotCSh2c3hfdHNxcnQ8bW9kZT4yKTogRGl0dG8u Ci0JKHZzeF9yc3FydGU8bW9kZT4yKTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAw LmggKHJzNjAwMF9kZWJ1Z19jb3N0KTogTmV3IGZvcgotCS1tZGVidWc9Y29zdC4KLQkoVEFSR0VU X0RFQlVHX0NPU1QpOiBEaXR0by4KLQkoVlNYX0JVSUxUSU5fKik6IE1lcmdlIHRoZSB0d28gZm9y bXMgb2YgbXVsdGlwbHkvYWRkIGluc3RydWN0aW9ucwotCWludG8gYSBzaW5nbGUgaW5zbi4gIFN0 YXJ0IHRvIGFkZCBvdmVybG9hZGVkIFZTWCBidWlsdGlucy4KLQotCSogY29uZmlnL3JzNjAwMC9h bHRpdmVjLm1kIChidWlsZF92ZWN0b3JfbWFza19mb3JfbG9hZCk6IERlbGV0ZQotCVZTWCBjb2Rl LgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoYnRydW5jc2YyKTogRGVsZXRlIGV4dHJh IHNwYWNlLgotCShtb3ZkZl9oYXJkZmxvYXQzMik6IFVzZSB4eGxvciBpbnN0ZWFkIG9mIHhzY3Bz Z25kcCB0byBjb3B5IGRhdGEuCi0JKG1vdmRmX2hhcmRmbG9hdDY0X21mcGdwcik6IERpdHRvLgot CShtb3ZkZl9oYXJkZmxvYXQ2NCk6IERpdHRvLgotCi0yMDA5LTAzLTEzICBNaWNoYWVsIE1laXNz bmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgotCi0JUFIgdGFyZ2V0LzM5NDU3Ci0J KiBjb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgKC1tZGlzYWxsb3ctZmxvYXQtaW4tbHItY3RyKTog QWRkCi0JdGVtcG9yYXJ5IGRlYnVnIHN3aXRjaC4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAu YyAocnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayk6IFJldmVydAotCWJlaGF2aW9yIG9mIGRpc2Fs bG93aW5nIAotCi0yMDA5LTAzLTEzICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgu dm5ldC5pYm0uY29tPgotCi0JKiBjb25maWcvcnM2MDAwL3ZlY3Rvci5tZCAodmVjX2V4dHJhY3Rf ZXZlbnYyZGYpOiBEZWxldGUsIGluc24KLQljYXVzZXMgcHJvYmxlbXMgaW4gYnVpbGRpbmcgc3Bl YyAyMDA2LgotCSh2ZWNfZXh0cmFjdF9vZGR2MmRmKTogRGl0dG8uCi0JKHZlY19wYWNrX3RydW5j X3YyZGYpOiBOZXcgZXhwYW5kZXJzIGZvciBWU1ggdmVjdG9yaXplZAotCWNvbnZlcnNpb25zLgot CSh2ZWNfcGFja19zZml4X3RydW5jX3YyZGYpOiBEaXR0by4KLQkodmVjX3BhY2tfdWZpeF90cnVu Y192MmRmKTogRGl0dG8uCi0JKHZlY191bnBhY2tzX2hpX3Y0c2YpOiBEaXR0by4KLQkodmVjX3Vu cGFja3NfbG9fdjRzZik6IERpdHRvLgotCSh2ZWNfdW5wYWNrc19mbG9hdF9oaV92NHNpKTogRGl0 dG8uCi0JKHZlY191bnBhY2tzX2Zsb2F0X2xvX3Y0c2kpOiBEaXR0by4KLQkodmVjX3VucGFja3Vf ZmxvYXRfaGlfdjRzaSk6IERpdHRvLgotCSh2ZWNfdW5wYWNrdV9mbG9hdF9sb192NHNpKTogRGl0 dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfdmVjdG9yX3Nl Y29uZGFyeV9yZWxvYWQpOgotCURlY2xhcmF0aW9uIGZvciBuZXcgdGFyZ2V0IGhvb2suCi0KLQkq IGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKFRBUkdFVF9TRUNPTkRBUllfUkVMT0FEKTogQWRkIG5l dyB0YXJnZXQKLQlob29rIGZvciBldmVudHVhbGx5IGZpeGluZyB1cCB0aGUgbWVtb3J5IHJlZmVy ZW5jZXMgZm9yIEFsdGl2ZWMKLQlhbmQgVlNYIHJlbG9hZHMgdG8gYmUgcmVnK3JlZyBpbnN0ZWFk IG9mIHJlZytvZmZzZXQuICBSaWdodCBub3csCi0JdGhpcyBpcyBhIHN0dWIgZnVuY3Rpb24gdGhh dCBwcmludHMgZGVidWcgaW5mb3JtYXRpb24gaWYKLQktbWRlYnVnPWFkZHIgYW5kIHRoZW4gY2Fs bHMgZGVmYXVsdF9zZWNvbmRhcnlfcmVsb2FkLgotCShyczYwMDBfc2Vjb25kYXJ5X3JlbG9hZCk6 IERpdHRvLgotCShyczYwMDBfdmVjdG9yX3NlY29uZGFyeV9yZWxvYWQpOiBEaXR0by4KLQkocnM2 MDAwX2J1aWx0aW5fY29udmVyc2lvbik6IEFkZCBzdXBwb3J0IGZvciBWMkRJL1YyREYKLQljb252 ZXJzaW9ucy4KLQkocnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCk6IFRlc3QgZm9y IHRoZSB2ZWN0b3IgdW5pdAotCWRvaW5nIHRoZSBtZW1vcnkgcmVmZXJlbmNlcy4KLQkocnM2MDAw X2xlZ2ltaXplX3JlbG9hZF9hZGRyZXNzKTogRGl0dG8uCi0JKHJzNjAwMF9sZWdpdGltaXplX2Fk ZHJlc3MpOiBQcmludCBleHRyYSBcbiBpZiAtbWRlYnVnPWFkZHIuCi0JKHJzNjAwMF9sZWdpdGlt aXplX3JlbG9hZF9hZGRyZXNzKTogRGl0dG8uCi0JKHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3Mp OiBEaXR0by4KLQkocnM2MDAwX21vZGVfZGVwZW5kZW50X2FkZHJlc3MpOiBEaXR0by4KLQkoYmRl c2NfMmFyZyk6IEFkZCBWU1ggYnVpbHRpbnMuCi0JKGJkZXNjX2Ficyk6IERpdHRvLgotCShiZGVz Y18xYXJnKTogRGl0dG8uCi0JKGFsdGl2ZWNfaW5pdF9idWlsdGlucyk6IERpdHRvLgotCShyczYw MDBfc2Vjb25kYXJ5X21lbW9yeV9uZWVkZWRfcnR4KTogQWRkIGRlYnVnIHN1cHBvcnQgaWYKLQkt bWRlYnVnPWFkZHIuCi0JKHJzNjAwMF9wcmVmZXJyZWRfcmVsb2FkX2NsYXNzKTogRGl0dG8uCi0J KHJzNjAwMF9zZWNvbmRhcnlfbWVtb3J5X25lZWRlZCk6IERpdHRvLgotCShyczYwMDBfc2Vjb25k YXJ5X3JlbG9hZF9jbGFzcyk6IERpdHRvLgotCShyczYwMDBfY2Fubm90X2NoYW5nZV9tb2RlX2Ns YXNzKTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvdnN4Lm1kIChVTlNQRUNfVlNYXyopOiBB ZGQgdW5zcGVjcyBmb3IgVlNYCi0JY29udmVyc2lvbnMuCi0JKHZzeF9uYWJzPG1vZGU+KTogQWRk IGdlbmVyYXRvciBmdW5jdGlvbi4KLQkodnN4X2Zsb2F0PFZTaT48bW9kZT4yKTogRGl0dG8uCi0J KHZzeF9mbG9hdHVuczxWU2k+PG1vZGU+Mik6IERpdHRvLgotCSh2c3hfeHhtcmdodyk6IERpdHRv LgotCSh2c3hfeHhtcmdsdyk6IERpdHRvLgotCSh2c3hfeHZjdmRwc3ApOiBOZXcgVlNYIHZlY3Rv ciBjb252ZXJzaW9uIGluc24uCi0JKHZzeF94dmN2ZHBzeHdzKTogRGl0dG8uCi0JKHZzeF94dmN2 ZHB1eHdzKTogRGl0dG8uCi0JKHZzeF94dmN2c3BkcCk6IERpdHRvLgotCSh2c3hfeHZjdnN4d2Rw KTogRGl0dG8uCi0JKHZzeF94dmN2dXh3ZHApOiBEaXR0by4KLQkodnN4X3JlbG9hZF8qKTogTmV3 IGluc25zIGZvciByZWxvYWQgc3VwcG9ydC4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDog Rml4IGEgY29tbWVudC4KLQotCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChhbHRpdmVjX3Jl bG9hZF8qKTogTmV3IGluc25zIGZvcgotCXJlbG9hZCBzdXBwb3J0LgotCi0JKiBjb25maWcvcnM2 MDAwL3JzNjAwMC5tZCAocHRyc2l6ZSk6IE5ldyBtb2RlIGF0dHJpYnV0ZSBmb3IgdGhlCi0JcG9p bnRlciBzaXplLgotCi0yMDA5LTAzLTEwICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGlu dXgudm5ldC5pYm0uY29tPgotCi0JKiBjb25maWcvcnM2MDAwL3ZzeC5tZCAodnN4X2NvbmNhdF92 MmRmKTogQWRkIGV4cGxpY2l0ICdmJwotCXJlZ2lzdGVyIGNsYXNzIGZvciBzY2FsYXIgZGF0YSwg Y29ycmVjdCB1c2VzIG9mIHRoZSB4eHBlcm1kaQotCWluc3RydWN0aW9uLgotCSh2c3hfc2V0X3Yy ZGYpOiBEaXR0by4KLQkodnN4X2V4dHJhY3RfdjJkZik6IERpdHRvLgotCSh2c3hfeHhwZXJtZGkp OiBEaXR0by4KLQkodnN4X3NwbGF0djJkZik6IERpdHRvLgotCSh2c3hfeHhtcmdodyk6IFVzZSB3 ZiBpbnN0ZWFkIG9mIHYgY29uc3RyYWludHMuCi0JKHZzeF94eG1yZ2x3KTogRGl0dG8uCi0KLTIw MDktMDMtMDkgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+ Ci0KLQkqIGNvbmZpZy9yczYwMDAvdnN4Lm1kICh2c3hfc3RvcmU8bW9kZT5fdXBkYXRlNjQpOiBV c2UgY29ycmVjdAotCXJlZ2lzdGVycyBmb3Igc3RvcmUgd2l0aCB1cGRhdGUuCi0JKHZzeF9zdG9y ZTxtb2RlPl91cGRhdGUzMik6IERpdHRvLgotCSh2c3hfc3RvcmVkZl91cGRhdGU8VlNiaXQ+KTog RGl0dG8uCi0KLTIwMDktMDMtMDYgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52 bmV0LmlibS5jb20+Ci0KLQkqIGRvYy9pbnZva2UudGV4aSAoLW12c3gtc2NhbGFyLW1lbW9yeSk6 IE5ldyBzd2l0Y2gsIHRvIHN3aXRjaCB0bwotCXVzZSBWU1ggcmVnK3JlZyBhZGRyZXNzaW5nIGZv ciBhbGwgc2NhbGFyIGRvdWJsZSBwcmVjaXNpb24KLQlmbG9hdGluZyBwb2ludC4KLQkqIGNvbmZp Zy9yczYwMDAvcnM2MDAwLm9wdCAoLXZzeC1zY2FsYXItbWVtb3J5KTogRGl0dG8uCi0JCi0JKiBj b25maWd1cmUuYWMgKGdjY19jdl9hc19wb3dlcnBjX21mcGdwcik6IFNldCBiaW51dGlscyB2ZXJz aW9uIHRvCi0JMi4xOS4yLgotCShnY2NfY3ZfYXNfcG93ZXJwY19jbXBiKTogRGl0dG8uCi0JKGdj Y19jdl9hc19wb3dlcnBjX2RmcCk6IERpdHRvLgotCShnY2NfY3ZfYXNfcG93ZXJwY192c3gpOiBE aXR0by4KLQkoZ2NjX2N2X2FzX3Bvd2VycGNfcG9wY250ZCk6IERpdHRvLgotCSogY29uZmlndXJl OiBSZWdlbmVyYXRlLgotCi0JKiBjb25maWcvcnM2MDAwL3ZlY3Rvci5tZCAoVkVDX2ludCk6IE5l dyBtb2RlIGF0dHJpYnV0ZSBmb3IgdmVjdG9yCi0JY29udmVyc2lvbnMuCi0JKFZFQ19JTlQpOiBE aXR0by4KLQkoZnRydW5jPG1vZGU+Mik6IE1ha2UgdGhpcyBhIGRlZmluZV9leHBhbmQuCi0JKGZs b2F0PFZFQ19pbnQ+PG1vZGU+Mik6IE5ldyB2ZWN0b3IgY29udmVyc2lvbiBzdXBwb3J0IHRvIGFk ZCBWU1gKLQkzMiBiaXQgaW50LzMyIGJpdCBmbG9hdGluZyBwb2ludCBjb252ZXJ0IGFuZCA2NCBi aXQgaW50LzY0IGJpdAotCWZsb2F0aW5nIHBvaW50IHZlY3RvciBpbnN0cnVjdGlvbnMuCi0JKHVu c2lnbmVkX2Zsb2F0PFZFQ19pbnQ+PG1vZGU+Mik6IERpdHRvLgotCShmaXhfdHJ1bmM8bW9kZT48 VkVDX2ludD4yKTogRGl0dG8uCi0JKGZpeHVuc190cnVuYzxtb2RlPjxWRUNfaW50PjIpOiBEaXR0 by4KLQotCSogY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kIChlYXN5X2ZwX2NvbnN0YW50KTog MC4wIGlzIGFuIGVhc3kKLQljb25zdGFudCB1bmRlciBWU1guCi0JKGluZGV4ZWRfb3JfaW5kaXJl Y3Rfb3BlcmFuZCk6IEFkZCBWU1ggbG9hZC9zdG9yZSB3aXRoIHVwZGF0ZQotCXN1cHBvcnQuCi0K LQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9kZWJ1Z19hZGRyKTogTmV3IGdsb2Jh bCBmb3IKLQktbWRlYnVnPWFkZHIuCi0JKHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayk6 IEFkZCAtbXZzeC1zY2FsYXItbWVtb3J5Ci0Jc3VwcG9ydC4KLQkocnM2MDAwX292ZXJyaWRlX29w dGlvbnMpOiBBZGQgLW1kZWJ1Zz1hZGRyIHN1cHBvcnQuCi0JKHJzNjAwMF9idWlsdGluX2NvbnZl cnNpb24pOiBBZGQgVlNYIHNhbWUgc2l6ZSBjb252ZXJzaW9ucy4KLQkocnM2MDAwX2xlZ2l0aW1p emVfYWRkcmVzcyk6IEFkZCAtbWRlYnVnPWFkZHIgc3VwcG9ydC4gIEFkZAotCXN1cHBvcnQgZm9y IFZTWCBsb2FkL3N0b3JlIHdpdGggdXBkYXRlIGluc3RydWN0aW9ucy4KLQkocnM2MDAwX2xlZ2l0 aW1pemVfcmVsb2FkX2FkZHJlc3MpOiBEaXR0by4KLQkocnM2MDAwX2xlZ2l0aW1hdGVfYWRkcmVz cyk6IERpdHRvLgotCShyczYwMDBfbW9kZV9kZXBlbmRlbnRfYWRkcmVzcyk6IERpdHRvLgotCShw cmludF9vcGVyYW5kKTogRGl0dG8uCi0JKGJkZXNjXzFhcmcpOiBBZGQgYnVpbHRpbnMgZm9yIGNv bnZlcnNpb24gdGhhdCBjYWxscyBlaXRoZXIgdGhlCi0JVlNYIG9yIEFsdGl2ZWMgaW5zbiBwYXR0 ZXJuLgotCShyczYwMDBfY29tbW9uX2luaXRfYnVpbHRpbnMpOiBEaXR0by4KLQotCSogY29uZmln L3JzNjAwMC92c3gubWQgKFZTWF9JKTogRGVsZXRlLCBubyBsb25nZXIgdXNlZC4KLQkoVlNpKTog TmV3IG1vZGUgYXR0cmlidXRlIGZvciBjb252ZXJzaW9ucy4KLQkoVlNJKTogRGl0dG8uCi0JKFZT Yyk6IERpdHRvLgotCSh2c3hfbW92PG1vZGU+KTogQWRkIGxvYWQvc3RvcmUgd2l0aCB1cGRhdGUg c3VwcG9ydC4KLQkodnN4X2xvYWQ8bW9kZT5fdXBkYXRlKik6IE5ldyBpbnNucyBmb3IgbG9hZC9z dG9yZSB3aXRoIHVwZGF0ZQotCXN1cHBvcnQuCi0JKHZzeF9zdG9yZTxtb2RlPl91cGRhdGUqKTog RGl0dG8uCi0JKHZzeF9mbWFkZDxtb2RlPjQpOiBHZW5lcmF0ZSBjb3JyZWN0IGNvZGUgZm9yIFY0 U0YuCi0JKHZzeF9mbXN1Yjxtb2RlPjQpOiBEaXR0by4KLQkodnN4X2ZubWFkZDxtb2RlPjRfKik6 IERpdHRvLgotCSh2c3hfZm5tc3ViPG1vZGU+NF8qKTogRGl0dG8uCi0JKHZzeF9mbG9hdDxWU2k+ PG1vZGU+Mik6IE5ldyBpbnNuIGZvciB2ZWN0b3IgY29udmVyc2lvbi4KLQkodnN4X2Zsb2F0dW5z PFZTaT48bW9kZT4yKTogRGl0dG8uCi0JKHZzeF9maXhfdHJ1bmM8bW9kZT48VlNpPjIpOiBEaXR0 by4KLQkodnN4X2ZpeHVuc190cnVuYzxtb2RlPjxWU2k+Mik6IERpdHRvLgotCSh2c3hfeHhtcmdo dyk6IE5ldyBpbnNuIGZvciBWNFNGIGludGVybGVhdmUuCi0JKHZzeF94eG1yZ2x3KTogRGl0dG8u Ci0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKHJzNjAwMF9kZWJ1Z19hZGRyKTogLW1kZWJ1 Zz1hZGRyCi0Jc3VwcG9ydC4KLQkoVEFSR0VUX0RFQlVHX0FERFIpOiBEaXR0by4KLQkocnM2MDAw X2J1aWx0aW5zKTogQWRkIFZTWCBpbnN0cnVjdGlvbnMgZm9yIGV2ZW50dWFsIFZTWAotCWJ1aWx0 aW5zLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2ZWNfdm1yZ2hzZik6IERv bid0IGRvIHRoZSBhbHRpdmVjCi0JaW5zdHJ1Y3Rpb24gaWYgVlNYLgotCShhbHRpdmVjX3Ztcmds c2YpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdmRmX2hhcmRmbG9h dDMyKTogQWRkIHN1cHBvcnQgZm9yCi0JdXNpbmcgeHhseG9yIHRvIHplcm8gYSBmbG9hdGluZyBy ZWdpc3RlciBpZiBWU1guCi0JKG1vdmRmX2hhcmRmbG9hdDY0X21mcGdwcik6IERpdHRvLgotCSht b3ZkZl9oYXJkZmxvYXQ2NCk6IERpdHRvLgotCi0yMDA5LTAzLTAzICBNaWNoYWVsIE1laXNzbmVy ICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgotCi0JKiBjb25maWcvcnM2MDAwL3ZzeC5t ZCAodnN4X3h4bXJnbHcpOiBEZWxldGUgZm9yIG5vdywgdXNlIEFsdGl2ZWMuCi0JKHZzeF94eG1y Z2h3KTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoYWx0aXZlY192bXJn aHNmKTogVXNlIHRoaXMgaW5zbiBldmVuCi0Jb24gVlNYIHN5c3RlbXMuCi0JKGFsdGl2ZWNfdm1y Z2xzZik6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBU01fQ1BVX05BVElW RV9TUEVDKTogVXNlICUoYXNtX2RlZmF1bHQpCi0JaWYgd2UgYXJlIHJ1bm5pbmcgYXMgYSBjcm9z cyBjb21waWxlci4KLQotCSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQgKHZlY19pbnRlcmxlYXZl X2hpZ2h2NHNmKTogVXNlIGNvcnJlY3QKLQljb25zdGFudHMgZm9yIHRoZSBleHRyYWN0aW9uLgot CSh2ZWNfaW50ZXJsZWF2ZV9sb3d2NHNmKTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2 MDAwLm1kIChmbG9vcmRmMik6IEZpeCB0eXBvLCBtYWtlIHRoaXMgYQotCWRlZmluZV9leHBhbmQs IG5vdCBkZWZpbmVfaW5zbi4KLQotCSogY29uZmlnL3JzNjAwMC9haXg1My5oIChBU01fQ1BVX1NQ RUMpOiBJZiAtbWNwdT1uYXRpdmUsIGNhbGwKLQklOmxvY2FsX2NwdV9kZXRlY3QoYXNtKSB0byBn ZXQgdGhlIGFwcHJvcHJpYXRlIGFzc2VtYmxlciBmbGFncyBmb3IKLQl0aGUgbWFjaGluZS4KLQkq IGNvbmZpZy9yczYwMDAvYWl4NjEuaCAoQVNNX0NQVV9TUEVDKTogRGl0dG8uCi0JKiBjb25maWcv cnM2MDAwL3JzNjAwMC5oIChBU01fQ1BVX1NQRUMpOiBEaXR0by4KLQkoQVNNX0NQVV9OQVRJVkVf U1BFQyk6IE5ldyBzcGVjIHRvIGdldCBhc20gb3B0aW9ucyBpZgotCS1tY3B1PW5hdGl2ZS4KLQko RVhUUkFfU1BFQ1MpOiBBZGQgQVNNX0NQVV9OQVRJVkVfU1BFQy4KLQotCSogY29uZmlnL3JzNjAw MC9kcml2ZXItcnM2MDAwLmMgKGFzbV9uYW1lcyk6IE5ldyBzdGF0aWMgYXJyYXkgdG8KLQlnaXZl IHRoZSBhcHByb3ByaWF0ZSBhc20gc3dpdGNoZXMgaWYgLW1jcHU9bmF0aXZlLgotCShob3N0X2Rl dGVjdF9sb2NhbF9jcHUpOiBBZGQgc3VwcG9ydCBmb3IgImFzbSIuCi0KLQkqIGNvbmZpZy9yczYw MDAvcnM2MDAwLmMgKHByb2Nlc3Nvcl90YXJnZXRfdGFibGUpOiBEb24ndCB0dXJuIG9uCi0JLW1p c2VsIGJ5IGRlZmF1bHQgZm9yIHBvd2VyNy4KLQotMjAwOS0wMy0wMiAgTWljaGFlbCBNZWlzc25l ciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29uZmlnL3JzNjAwMC9yczYw MDAuYyAocnM2MDAwX2VtaXRfc3dkaXZkZik6IFJldmVydCBsYXN0Ci0JY2hhbmdlLCBzaW5jZSB3 ZSByZXZlcnRlZCB0aGUgZmxvYXRpbmcgbXVsdGlwbHkvYWRkIGNoYW5nZXMuCi0KLQkqIGRvYy9t ZC50ZXhpIChNYWNoaW5lIENvbnN0cmFpbnRzKTogVXBkYXRlIHJzNjAwMCBjb25zdHJhaW50cy4K LQotCSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQgKG5lZzxtb2RlPjIpOiBGaXggdHlwbyB0byBl bmFibGUKLQl2ZWN0b3JpemVkIG5lZ2F0aW9uLgotCShmdHJ1bmM8bW9kZT4yKTogTW92ZSBmdHJ1 bmMgZXhwYW5kZXIgaGVyZSBmcm9tIGFsdGl2ZWMubWQsIGFuZAotCWFkZCBWMkRGIGNhc2UuCi0J KHZlY19pbnRlcmxlYXZlX2hpZ2h2NHNmKTogQ29ycmVjdCB0eXBlIHRvIGJlIFY0U0YsIG5vdCBW NFNJLgotCSh2ZWNfZXh0cmFjdF9ldmVudjJkZik6IEFkZCBleHBhbmRlci4KLQkodmVjX2V4dHJh Y3Rfb2RkdjJkZik6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3ZzeC5tZCAodnN4X2Z0cnVu Yzxtb2RlPjIpOiBOZXcgVlNYIHBhdHRlcm4gZm9yCi0JdHJ1bmNhdGUuCi0JKHZzeF9mdHJ1bmNk ZjIpOiBEaXR0by4KLQkodnN4X3h4c3BsdHcpOiBOZXcgaW5zdHJ1Y3Rpb24gZm9yIHdvcmQgc3Bs YXQuCi0JKHZzeF94eG1yZ2x3KTogV2hpdGVzcGFjZSBjaGFuZ2VzLiAgRml4IHR5cG8gZnJvbSBW NFNJIHRvIHY0U0YuCi0JKHZzeF94eG1yZ2h3KTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAv YWx0aXZlYy5tZCAoYWx0aXZlY192bXJnaHNmKTogV2hpdGVzcGFjZSBjaGFuZ2VzLgotCShhbHRp dmVjX3Ztcmdsc2YpOiBEaXR0by4KLQkoYWx0aXZlY192c3BsdHNmKTogRGlzYWJsZSBpZiB3ZSBo YXZlIFZTWC4KLQkoYWx0aXZlY19mdHJ1bmN2NHNmMik6IE1vdmUgZXhwYW5kZXIgdG8gdmVjdG9y Lm1kLCByZW5hbWUgaW5zbi4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGZ0cnVuY2Rm Mik6IEFkZCBleHBhbmRlciBmb3IgVlNYLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChy czYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2spOgotCVJlZW5hYmxlIHZlY3Rvcml6aW5nIFY0 U0YgdW5kZXIgYWx0aXZlYy4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayk6IERvbid0IGFs bG93IGZsb2F0aW5nIHZhbHVlcyBpbiBMUiwKLQlDVFIsIE1RLiAgQWxzbywgVlJTQVZFL1ZTQ1Ig YXJlIGJvdGggMzItYml0cy4KLQkocnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rKTogUHJp bnQgc29tZSBvZiB0aGUgc3BlY2lhbAotCXJlZ2lzdGVycyBpZiAtbWRlYnVnPXJlZy4KLQotCSog Y29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGZsb2F0aW5nIG11bHRpcGx5L2FkZCBpbnNucyk6IEdv IGJhY2sKLQl0byB0aGUgb3JpZ2luYWwgc2VtYW50aWNzIGZvciBtdWx0aXBseSBhZGQvc3VidHJh Y3QsIHBhcnRpY3VsYXJseQotCXdpdGggLWZmYXN0LW1hdGguCi0KLQkqIGNvbmZpZy9yczYwMDAv dnN4Lm1kIChmbG9hdGluZyBtdWx0aXBseS9hZGQgaW5zbnMpOiBNaXJyb3IgdGhlCi0JcnM2MDAw IGZsb2F0aW5nIHBvaW50IG11bHRpcGx5L2FkZCBpbnNucyBpbiBWU1guCi0KLTIwMDktMDMtMDEg IE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGNv bmZpZy9yczYwMDAvdmVjdG9yLm1kIChWRUNfTCk6IEF0IFRJbW9kZS4KLQkoVkVDX00pOiBMaWtl IFZFQ19MLCBleGNlcHQgbm8gVEltb2RlLgotCShWRUNfYmFzZSk6IEFkZCBUSW1vZGUgc3VwcG9y dC4KLQkobW92PG1vZGU+KTogVXNlIFZFQ19NLCBub3QgVkVDX0wuICBJZiB0aGVyZSBpcyBubyBl eHRyYQotCW9wdGltaXphdGlvbiBmb3IgdGhlIG1vdmUsIGp1c3QgZ2VuZXJhdGUgdGhlIHN0YW5k YXJkIG1vdmUuCi0JKHZlY3Rvcl9zdG9yZV88bW9kZT4pOiBEaXR0by4KLQkodmVjdG9yX2xvYWRf PG1vZGU+KTogRGl0dG8uCi0JKHZlY19pbml0PG1vZGU+KTogVXNlIHZlY19pbml0X29wZXJhbmQg cHJlZGljYXRlLgotCi0JKiBjb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQgKHZlY19pbml0X29w ZXJhbmQpOiBOZXcgcHJlZGljYXRlLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYw MDBfaGFyZF9yZWdub19tb2RlX29rKTogQWxsb3cgbW9kZQotCWluIGEgVlNYIHJlZ2lzdGVyIGlm IHRoZXJlIGlzIGEgbW92ZSBvcGVyYXRpb24uCi0JKHJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzKTog QWRkIGludGVybmFsIHJlZ2lzdGVyIG51bWJlciB0byB0aGUKLQlkZWJ1ZyBvdXRwdXQuCi0JKHJz NjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayk6IFJlb3JnYW5pemUgc28gYWxsIG9mIHRoZSBj b2RlCi0JZm9yIGEgZ2l2ZW4gdHlwZSBpcyBsb2NhdGVkIHRvZ2V0aGVyLiAgSWYgbm90IC1tdnN4 LCBtYWtlICJ3cyIKLQljb25zdHJhaW50IGJlY29tZSBOT19SRUdTLCBub3QgRkxPQVRfUkVHUy4g IENoYW5nZSAtbWRlYnVnPXJlZwotCW91dHB1dC4KLQkocnM2MDAwX2V4cGFuZF92ZWN0b3JfaW5p dCk6IEJlZm9yZSBjYWxsaW5nIGdlbl92c3hfY29uY2F0X3YyZGYsCi0JbWFrZSBzdXJlIHRoZSB0 d28gZmxvYXQgYXJndW1lbnRzIGFyZSBjb3BpZWQgaW50byByZWdpc3RlcnMuCi0JKHJzNjAwMF9s ZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3ApOiBJZiBubyB2c3ggb3IgYWx0aXZlYywgZG9uJ3QK LQlkaXNhbGxvdyBvZmZzZXQgYWRkcmVzc2luZy4gIEFkZCBWMkRJbW9kZS4gIElmIFRJbW9kZSBp cyBoYW5kbGVkCi0JYnkgdGhlIHZlY3RvciB1bml0LCBhbGxvdyBpbmRleGVkIGFkZHJlc3Npbmcu ICBDaGFuZ2UgZGVmYXVsdCBjYXNlCi0JdG8gYmUgYSBmYXRhbF9pbnNuIGluc3RlYWQgb2YgZ2Nj X3VucmVhY2hhYmxlLgotCShyczYwMDBfaGFuZGxlX2FsdGl2ZWNfYXR0cmlidXRlKTogQWRkIHN1 cHBvcnQgZm9yIHZlY3RvciBkb3VibGUKLQlpZiAtbXZzeC4KLQkocnM2MDAwX3JlZ2lzdGVyX21v dmVfY29zdCk6IEFkZCBzdXBwb3J0IGZvciBWU1hfUkVHUy4gIEtub3cgdGhhdAotCXVuZGVyIFZT WCwgeW91IGNhbiBtb3ZlIGJldHdlZW4gZmxvYXQgYW5kIGFsdGl2ZWMgcmVnaXN0ZXJzCi0JY2hl YXBseS4KLQkocnM2MDAwX2VtaXRfc3dkaXZkZik6IENoYW5nZSB0aGUgcGF0dGVybiBvZiB0aGUg bmVnYXRlIG11bHRpcGx5Ci0JYW5kIHN1YnRyYWN0IG9wZXJhdGlvbi4KLQotCSogY29uZmlnL3Jz NjAwMC92c3gubWQgKFZTWF9JKTogQWRkIFRJbW9kZS4KLQkoVlNYX0wpOiBBZGQgVEltb2RlLgot CShWU20pOiBEaXR0by4KLQkoVlNzKTogRGl0dG8uCi0JKFZTcik6IERpdHRvLgotCShVTlNQRUNf VlNYX0NPTkNBVF9WMkRGKTogTmV3IGNvbnN0YW50LgotCSh2c3hfZnJlPG1vZGU+Mik6IEFkZCBy ZWNpcHJvY2FsIGVzdGltYXRlLgotCSh2c3hfZnJlREYyKTogRGl0dG8uCi0JKHZzeF9mbm1hZGQ8 bW9kZT40KTogUmV3b3JrIHBhdHRlcm4gc28gaXQgbWF0Y2hlcyB0aGUKLQljYW5vbmljYWxpemF0 aW9uIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXMuCi0JKHZzeF9mbm1zdWI8bW9kZT40KTogRGl0dG8u Ci0JKHZzeF9mbm1hZGRERjQpOiBEaXR0by4KLQkodnN4X2ZubXN1YkRGNCk6IERpdHRvLgotCSh2 c3hfdnNlbDxtb2RlPik6IFVzZSB2c3hfcmVnaXN0ZXJfb3BlcmFuZCwgbm90IHJlZ2lzdGVyX29w ZXJhbmQuCi0JKHZzeF9hZGRkZjMpOiBEaXR0by4KLQkodnN4X3N1YmRmMyk6IERpdHRvLgotCSh2 c3hfbXVsZGYzKTogRGl0dG8uCi0JKHZzeF9kaXZkZjMpOiBEaXR0by4KLQkodnN4X25lZ2RmMyk6 IERpdHRvLgotCSh2c3hfYWJzZGYyKTogRGl0dG8uCi0JKHZzeF9uYWJzZGYyKTogRGl0dG8uCi0J KHZzeF9jb3B5c2lnbjxtb2RlPjMpOiBBZGQgY29weXNpZ24gc3VwcG9ydC4KLQkodnN4X2NvcHlz aWduREYzKTogRGl0dG8uCi0JKHZzeF9jb25jYXRfdjJkZik6IFJld3JpdGUgdG8gdXNlIGFuIFVO U1BFQy4KLQkodnN4X3NldF92MmRmKTogVXNlICJ3cyIgY29uc3RyYWludCBmb3Igc2NhbGFyIGZs b2F0LgotCSh2c3hfc3BsYXR2MmRmKTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAw LmggKFZFQ1RPUl9VTklUX05PTkVfUCk6IE5ldyBtYWNybyB0byBzYXkgbm8KLQl2ZWN0b3Igc3Vw cG9ydC4KLQkoVkVDVE9SX01FTV9OT05FX1ApOiBEaXR0by4KLQkoVlNYX01PVkVfTU9ERSk6IEFk ZCBWMkRJbW9kZSwgVEltb2RlLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKFZNKTog QWRkIFYyREksIFRJLgotCShidWlsZF92ZWN0b3JfbWFza19mb3JfbG9hZCk6IEZpeCB0aGlua28g aW4gVlNYIGNhc2UuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChmbWFkZHNmNF9wb3dl cnBjKTogTmFtZSBwcmV2aW91c2x5Ci0JdW5uYW1lZCBwYXR0ZXJuLiAgRml4IGluc25zIHNvIGNv bWJpbmUgd2lsbCBnZW5lcmF0ZSB0aGUgbmVnYXRpdmUKLQltdWx0aXBseSBhbmQgc3VidHJhY3Qg b3BlcmF0aW9ucy4KLQkoZm1hZGRzZjRfcG93ZXIpOiBEaXR0by4KLQkoZm1zdWJzZjRfcG93ZXJw Yyk6IERpdHRvLgotCShmbXN1YnNmNF9wb3dlcik6IERpdHRvLgotCShmbm1hZGRzZjRfcG93ZXJw Yyk6IERpdHRvLgotCShmbm1hZGRzZjRfcG93ZXIpOiBEaXR0by4KLQkoZm5tc3Vic2Y0X3Bvd2Vy cGMpOiBEaXR0by4KLQkoZm5tc3Vic2Y0X3Bvd2VyKTogRGl0dG8uCi0JKGZuc3Vic2Y0X3Bvd2Vy cGMyKTogRGl0dG8uCi0JKGZuc3Vic2Y0X3Bvd2VyMik6IERpdHRvLgotCShmbWFkZGRmNF9wb3dl cnBjKTogRGl0dG8uCi0JKGZtYWRkZGY0X3Bvd2VyKTogRGl0dG8uCi0JKGZtc3ViZGY0X3Bvd2Vy cGMpOiBEaXR0by4KLQkoZm1zdWJkZjRfcG93ZXIpOiBEaXR0by4KLQkoZm5tYWRkZGY0X3Bvd2Vy cGMpOiBEaXR0by4KLQkoZm5tYWRkZGY0X3Bvd2VyKTogRGl0dG8uCi0JKGZubXN1YmRmNF9wb3dl cnBjKTogRGl0dG8uCi0JKGZubXN1YmRmNF9wb3dlcik6IERpdHRvLgotCShjb3B5c2lnbmRmMyk6 IElmIFZTWCwgY2FsbCB0aGUgVlNYIGNvcHlzaWduLgotCShmcmVkKTogU3BsaXQgaW50byBhbiBl eHBhbmRlciBhbmQgaW5zbi4gIE9uIGluc24sIGRpc2FibGUgaWYKLQlWU1guCi0JKG1vdmRmX2hh cmRmbG9hdDMyKTogUmV3b3JrIFZTWCBzdXBwb3J0LgotCShtb3ZkZl9oYXJkZmxvYXQ2NF9tZnBn cHIpOiBEaXR0by4KLQkobW92ZGZfaGFyZGZsb2F0NjQpOiBEaXR0by4KLQkobW92dGlfcHBjNjQp OiBJZiB2ZWN0b3IgdW5pdCBpcyBoYW5kbGluZyBUSW1vZGUsIGRpc2FibGUgdGhpcwotCXBhdHRl cm4uCi0KLTIwMDktMDItMjggIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0 LmlibS5jb20+Ci0KLQkqIGNvbmZpZy9yczYwMDAvcHBjLWFzbS5oOiBJZiBfX1ZTWF9fIGRlZmlu ZSB0aGUgYWRkaXRpb25hbCBzY2FsYXIKLQlmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgdGhhdCBv dmVybGFwIHdpdGggdGggQWx0aXZlYyByZWdpc3RlcnMuCi0KLTIwMDktMDItMjcgIE1pY2hhZWwg TWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGNvbmZpZy9yczYw MDAvc3BlLm1kIChzcGVfZml4dW5zX3RydW5jZGZzaTIpOiBSZW5hbWUgZnJvbQotCWZpeHVuc190 cnVuY2Rmc2kyLCBhbmQgbW92ZSBmaXh1bnNfdHJ1bmNkZnNpMiBpbnRvIHJzNjAwMC5tZC4KLQot CSogY29uZmlnL3JzNjAwMC9wcGMtYXNtLmg6IElmIF9fQUxUSVZFQ19fIGlzIGRlZmluZWQsIGRl ZmluZSB0aGUKLQlBbHRpdmVjIHJlZ2lzdGVycy4gIElmIF9fVlNYX18gaXMgZGVmaW5lZCwgZGVm aW5lIHRoZSBWU1gKLQlyZWdpc3RlcnMuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCAo LW12c3gtc2NhbGFyLWRvdWJsZSk6IE1ha2UgdGhpcyBvbiBieQotCWRlZmF1bHQuCi0JKC1taXNl bCk6IE1ha2UgdGhpcyBhIHRhcmdldCBtYXNrIGluc3RlYWQgb2YgYSB2YXJpYWJsZS4KLQotCSog Y29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2lzZWwpOiBEZWxldGUgZ2xvYmFsIHZhcmlh YmxlLgotCShyczYwMDBfZXhwbGljaXRfb3B0aW9ucyk6IERlbGV0ZSBpc2VsIGZpZWxkLgotCShQ T1dFUlBDX01BU0tTKTogQWRkIE1BU0tfSVNFTC4KLQkocHJvY2Vzc29yX3RhcmdldF90YWJsZSk6 IEFkZCBNQVNLX0lTRUwgdG8gODU0MCwgODU0OCwgZTUwMG1jLCBhbmQKLQlwb3dlcjcgcHJvY2Vz c29ycy4KLQkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBNb3ZlIC1taXNlbCB0byBhIHRhcmdl dCBtYXNrLgotCShyczYwMDBfaGFuZGxlX29wdGlvbik6IERpdHRvLgotCShyczYwMDBfZW1pdF9p bnRfY21vdmUpOiBBZGQgc3VwcG9ydCBmb3IgNjQtYml0IGlzZWwuCi0KLQkqIGNvbmZpZy9yczYw MDAvdnN4Lm1kICh2c3hfZmxvYXRkaWRmMik6IE5ldyBzY2FsYXIgZmxvYXRpbmcgcG9pbnQKLQlw YXR0ZXJuIHRvIHN1cHBvcnQgVlNYIGNvbnZlcnNpb24gYW5kIHJvdW5kaW5nIGluc3RydWN0aW9u cy4KLQkodnN4X2Zsb2F0dW5zZGlkZjIpOiBEaXR0by4KLQkodnN4X2ZpeF90cnVuZGZkaTIpOiBE aXR0by4KLQkodnN4X2ZpeHVuc190cnVuZGZkaTIpOiBEaXR0by4KLQkodnN4X2J0cnVuZGYyKTog RGl0dG8uCi0JKHZzeF9mbG9vcmRmMik6IERpdHRvLgotCSh2c3hfY2VpbGRmMik6IERpdHRvLgot Ci0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChyczYwMDBfaXNlbCk6IERlbGV0ZSBnbG9iYWwu Ci0JKFRBUkdFVF9JU0VMKTogRGVsZXRlLCBzaW5jZSAtbWlzZWwgaXMgbm93IGEgdGFyZ2V0IG1h c2suCi0JKFRBUkdFVF9JU0VMNjQpOiBOZXcgdGFyZ2V0IG9wdGlvbiBmb3IgLW1pc2VsIG9uIDY0 LWJpdCBzeXN0ZW1zLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2ZWNfZ3R1 PG1vZGU+KTogVXNlIGd0dSwgbm90IGdldS4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQg KHNlbCk6IE5ldyBtb2RlIGF0dHJpYnV0ZSBmb3IgNjQtYml0Ci0JSVNFTCBzdXBwb3J0LgotCSht b3Y8bW9kZT5jYyk6IEFkZCA2NC1iaXQgSVNFTCBzdXBwb3J0LgotCShpc2VsX3NpZ25lZF88bW9k ZT4pOiBEaXR0by4KLQkoaXNlbF91bnNpZ25lZF88bW9kZT4pOiBEaXR0by4KLQkoZml4dW5zX3Ry dW5jZGZzaTIpOiBNb3ZlIGV4cGFuZGVyIGhlcmUgZnJvbSBzcGUubWQuCi0JKGZpeHVuc190cnVu Y2RmZGkyKTogTmV3IGV4cGFuZGVyIGZvciB1bnNpZ25lZCBmbG9hdGluZyBwb2ludAotCWNvbnZl cnNpb24gb24gcG93ZXI3LgotCShidHJ1bmNkZjIpOiBTcGxpdCBpbnRvIGV4cGFuZGVyIGFuZCBp bnNuLiAgT24gdGhlIGluc24sIGRpc2FsbG93Ci0Jb24gVlNYLCBzbyB0aGUgVlNYIGluc3RydWN0 aW9uIHdpbGwgYmUgZ2VuZXJhdGVkLgotCShjZWlsZGYyKTogRGl0dG8uCi0JKGZsb29yZGYyKTog RGl0dG8uCi0JKGZsb2F0ZGlkZjIpOiBEaXR0by4KLQkoZml4X3RydW5jZGZkaTIpOiBEaXR0by4K LQkoc21pbmRpMyk6IERlZmluZSBpZiB3ZSBoYXZlIC1taXNlbCBvbiA2NC1iaXQgc3lzdGVtcy4K LQkoc21heGRpMyk6IERpdHRvLgotCSh1bWluZGkzKTogRGl0dG8uCi0JKHVtYXhkaTMpOiBEaXR0 by4KLQotCSogY29uZmlnL3JzNjAwMC9lNTAwLmggKENIRUNLX0U1MDBfT1BUSU9OUyk6IERpc2Fi bGUgLW12c3ggb24KLQlFNTAwLgotCi0yMDA5LTAyLTI2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVp c3NuZXJAbGludXgudm5ldC5pYm0uY29tPgotCi0JKiBjb25maWcvcnM2MDAwL2NvbnN0cmFpbnRz Lm1kICgid2QiIGNvbnN0cmFpbnQpOiAgQ2hhbmdlIHRoZQotCXZhcmlhYmxlIHRoYXQgaG9sZHMg dGhlIHJlZ2lzdGVyIGNsYXNzIHRvIHVzZS4KLQkoIndmIiBjb25zdHJhaW50KTogRGl0dG8uCi0J KCJ3cyIgY29uc3RyYWludCk6IERpdHRvLgotCSgid2EiIGNvbnN0cmFpbnQpOiBEaXR0by4KLQot CSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0ICgtbXZzeC12ZWN0b3ItbWVtb3J5KTogTWFrZSB0 aGlzIG9uIGJ5Ci0JZGVmYXVsdC4KLQkoLW12c3gtdmVjdG9yLWZsb2F0KTogRGl0dG8uCi0KLQkq IGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzKTogTmV3IGds b2JhbCB0bwotCWhvbGQgdGhlIHJlZ2lzdGVyIGNsYXNzZXMgZm9yIHRoZSB2ZWN0b3IgbW9kZXMu Ci0JKHJzNjAwMF92c3hfdjRzZl9yZWdjbGFzcyk6IERlbGV0ZSwgbW92ZSBpbnRvCi0JcnM2MDAw X3ZlY3Rvcl9yZWdfY2xhc3MuCi0JKHJzNjAwMF92c3hfdjJkZl9yZWdjbGFzcyk6IERpdHRvLgot CShyczYwMDBfdnN4X2RmX3JlZ2NsYXNzKTogRGl0dG8uCi0JKHJzNjAwMF92c3hfcmVnX2NsYXNz KTogUmVuYW1lIGZyb20gcnM2MDAwX3ZzeF9hbnlfcmVnY2xhc3MuCi0JKHJzNjAwMF9oYXJkX3Jl Z25vX21vZGVfb2spOiBSZXdvcmsgVlNYLCBBbHRpdmVjIHJlZ2lzdGVycy4KLQkocnM2MDAwX2lu aXRfaGFyZF9yZWdub19tb2RlX29rKTogU2V0dXAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3MuCi0J RHJvcCByczYwMDBfdnN4XypfcmVnY2xhc3MuICBCeSBkZWZhdWx0LCB1c2UgYWxsIDY0IHJlZ2lz dGVycyBmb3IKLQlWNFNGIGFuZCBWMkRGLiAgVXNlIFZTWF9SRUdfQ0xBU1NfUCBtYWNybyBpbnN0 ZWFkIG9mIHNlcGFyYXRlCi0JdGVzdHMuICBVcGRhdGUgLW1kZWJ1Zz1yZWcgcHJpbnRvdXQuCi0J KHJzNjAwMF9wcmVmZXJyZWRfcmVsb2FkX2NsYXNzKTogSWYgVlNYLCBwcmVmZXIgRkxPQVRfUkVH UyBmb3IKLQlzY2FsYXIgZmxvYXRpbmcgcG9pbnQgYW5kIEFMVElWRUNfUkVHUyBmb3IgdGhlIHR5 cGVzIHRoYXQgaGF2ZQotCWFsdGl2ZWMgaW5zdHJ1Y3Rpb25zLgotCShyczYwMDBfc2Vjb25kYXJ5 X21lbW9yeV9uZWVkZWQpOiBJZiBWU1gsIHdlIGNhbiBjb3B5IGJldHdlZW4gRlBSCi0JYW5kIEFs dGl2ZWMgcmVnaXN0ZXJzIHdpdGhvdXQgbmVlZGVkIG1lbW9yeS4KLQkocnM2MDAwX3NlY29uZGFy eV9yZWxvYWRfY2xhc3MpOiBEZWxldGUgQVRUUklCVVRFX1VOVVNFRCBmcm9tIGFuCi0JYXJndW1l bnQgdGhhdCBpcyB1c2VkLiAgSWYgVlNYLCB3ZSBjYW4gY29weSBiZXR3ZWVuIEZQUiBhbmQKLQlB bHRpdmVjIHJlZ2lzdGVycyBkaXJlY3RseS4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAo VlNYX01PVkVfTU9ERSk6IEFkZCBpbiB0aGUgQWx0aXZlYwotCXR5cGVzLgotCShyczYwMDBfdnN4 X3Y0c2ZfcmVnY2xhc3MpOiBEZWxldGUuCi0JKHJzNjAwMF92c3hfdjJkZl9yZWdjbGFzcyk6IERp dHRvLgotCShyczYwMDBfdnN4X2RmX3JlZ2NsYXNzKTogRGl0dG8uCi0JKHJzNjAwMF92c3hfcmVn X2NsYXNzKTogUmVuYW1lIGZyb20gcnM2MDAwX3ZzeF9hbnlfcmVnX2NsYXNzLgotCShyczYwMDBf dmVjdG9yX3JlZ19jbGFzcyk6IE5ldyBnbG9iYWwgdG8gbWFwIG1hY2hpbmUgbW9kZSB0byB0aGUK LQlwcmVmZXJyZWQgcmVnaXN0ZXIgY2xhc3MgdG8gdXNlIGZvciB0aGF0IG1vZGUuCi0JKFZTWF9S RUdfQ0xBU1NfUCk6IE5ldyBtYWNybyB0byByZXR1cm4gdHJ1ZSBmb3IgYWxsIG9mIHRoZQotCXJl Z2lzdGVyIGNsYXNzZXMgVlNYIGl0ZW1zIGNhbiBiZSBpbi4KLQotMjAwOS0wMi0yNSAgTWljaGFl bCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogZG9jL2ludm9r ZS50ZXhpICgtbXZzeC12ZWN0b3ItbWVtb3J5KTogUmVuYW1lIGZyb20KLQktbXZzeC12ZWN0b3It bW92ZS4KLQkoLW12c3gtdmVjdG9yLWxvZ2ljYWwpOiBEZWxldGUuCi0KLQkqIGNvbmZpZy9yczYw MDAvYWl4NTMuaCAoQVNNX0NQVV9TUEVDKTogQWRkIHBvd2VyNyBzdXBwb3J0LgotCSogY29uZmln L3JzNjAwMC9haXg2MS5oIChBU01fQ1BVX1NQRUMpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAw MC92ZWN0b3IubWQgKGFsbCBpbnNucyk7IENoYW5nZSBmcm9tIHVzaW5nCi0JcnM2MDAwX3ZlY3Rv cl9pbmZvIHRvIFZFQ1RPUl9NRU1fKiBvciBWRUNUT1JfVU5JVF8qIG1hY3Jvcy4KLQotCSogY29u ZmlnL3JzNjAwMC9jb25zdHJhaW50cy5tZCAoIndpIiBjb25zdHJhaW50KTogRGVsZXRlLgotCSgi d2wiIGNvbnN0cmFpbnQpOiBEaXR0by4KLQkoIndzIiBjb25zdHJhaW50KTogQ2hhbmdlIHRvIHVz ZSByczYwMDBfdnN4X2RmX3JlZ2NsYXNzLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5vcHQg KC1tdnN4LXZlY3Rvci1tZW1vcnkpOiBSZW5hbWUgZnJvbQotCS1tdnN4LXZlY3Rvci1tb3ZlLgot CSgtbXZzeC12ZWN0b3ItZmxvYXQpOiBNYWtlIGRlZmF1bHQgMCwgbm90IDEuCi0JKC1tdnN4LXZl Y3Rvci1kb3VibGUpOiBNYWtlIGRlZmF1bHQgLTEsIG5vdCAxLgotCSgtbXZzeC12ZWN0b3ItbG9n aWNhbCk6IERlbGV0ZS4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3ZlY3Rv cl9pbmZvKTogRGVsZXRlLgotCShyczYwMDBfdmVjdG9yX3VuaXQpOiBOZXcgZ2xvYmFsIGFycmF5 IHRvIHNheSB3aGF0IHZlY3RvciB1bml0IGlzCi0JdXNlZCBmb3IgYXJpdGhtZXRpYyBpbnN0cnVj dGlvbnMuCi0JKHJzNjAwMF92ZWN0b3JfbW92ZSk6IE5ldyBnbG9iYWwgYXJyYXkgdG8gc2F5IHdo YXQgdmVjdG9yIHVuaXQgaXMKLQl1c2VkIGZvciBtZW1vcnkgcmVmZXJlbmNlcy4KLQkocnM2MDAw X3ZzeF9pbnRfcmVnY2xhc3MpOiBEZWxldGUuCi0JKHJzNjAwMF92c3hfbG9naWNhbF9yZWdjbGFz cyk6IERlbGV0ZS4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3NfaW50ZXJuYWwpOiBTd2l0Y2gg ZnJvbSB1c2luZwotCXJzNjAwMF92ZWN0b3JfaW5mbyB0byByczYwMDBfdmVjdG9yX3VuaXQsIHJz NjAwMF92ZWN0b3JfbW92ZS4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayk6IERpdHRvLiAg UmVmb3JtYXQgY29kZSBzb21ld2hhdC4KLQkocnM2MDAwX2RlYnVnX3ZlY3Rvcl91bml0KTogTmV3 IGFycmF5IHRvIHByaW50IHZlY3RvciB1bml0Ci0JaW5mb3JtYXRpb24gaWYgLW1kZWJ1Zz1yZWcu Ci0JKHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayk6IFJld29yayB0byBiZXR0ZXIgZGVz Y3JpYmUgVlNYCi0JYW5kIEFsdGl2ZWMgcmVnaXN0ZXIgc2V0cy4KLQkoYnVpbHRpbl9tYXNrX2Zv cl9sb2FkKTogUmV0dXJuIDAgaWYgLW12c3guCi0JKHJzNjAwMF9sZWdpdGltaXplX3JlbG9hZF9h ZGRyZXNzKTogQWxsb3cgQU5EIGluIFZTWCBhZGRyZXNzZXMuCi0JKHJzNjAwMF9sZWdpdGltYXRl X2FkZHJlc3MpOiBEaXR0by4KLQkoYmRlc2NfM2FyZyk6IERlbGV0ZSB2c2VsdjJkaSBidWlsdGlu LgotCShyczYwMDBfZW1pdF9taW5tYXgpOiBVc2UgcnM2MDAwX3ZlY3Rvcl91bml0IGluc3RlYWQg b2YKLQlyczYwMDBfdmVjdG9yX2luZm8uCi0JKHJzNjAwMF92ZWN0b3JfbW9kZV9zdXBwb3J0ZWRf cCk6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3ZzeC5tZCAoYWxsIGluc25zKTogQ2hhbmdl IGZyb20gdXNpbmcKLQlyczYwMDBfdmVjdG9yX2luZm8gdG8gVkVDVE9SX01FTV8qIGFuZCBWRUNU T1JfVU5JVF8qIG1hY3Jvcy4KLQkoVlNyKTogQ2hhbmdlIHRvIHVzZSAidiIgcmVnaXN0ZXIgY2xh c3MsIG5vdCAid2kiLgotCSh2c3hfbW92PG1vZGU+KTogQ29tYmluZSBmbG9hdGluZyBhbmQgaW50 ZWdlci4gIEFsbG93IHByZWZlcmVkCi0JcmVnaXN0ZXIgY2xhc3MsIGFuZCB0aGVuIHVzZSA/d2Eg Zm9yIGFsbCBWU1ggcmVnaXN0ZXJzLgotCSh2c3hfZm1hZGRkZjQpOiBVc2Ugd3MgY29uc3RyYWlu dCwgbm90IGYuCi0JKHZzeF9mbXN1YmRmNCk6IERpdHRvLgotCSh2c3hfZm5tYWRkZGY0KTogRGl0 dG8uCi0JKHZzeF9mbm1zdWJkZjQpOiBEaXR0by4KLQkodnN4X2FuZDxtb2RlPjMpOiBVc2UgcHJl ZmVycmVkIHJlZ2lzdGVyIGNsYXNzLCBhbmQgdGhlbiA/d2EgdG8KLQljYXRjaCBhbGwgVlNYIHJl Z2lzdGVycy4KLQkodnN4X2lvcjxtb2RlPjMpOiBEaXR0by4KLQkodnN4X3hvcjxtb2RlPjMpOiBE aXR0by4KLQkodnN4X29uZV9jbXBsPG1vZGU+Mik6IERpdHRvLgotCSh2c3hfbm9yPG1vZGU+Myk6 IERpdHRvLgotCSh2c3hfYW5kYzxtb2RlPjMpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9y czYwMDAuaCAocnM2MDAwX3ZlY3Rvcl9zdHJ1Y3QpOiBEZWxldGUuCi0JKHJzNjAwMF92ZWN0b3Jf aW5mbyk6IERpdHRvLgotCShyczYwMDBfdmVjdG9yX3VuaXQpOiBOZXcgZ2xvYmFsIGFycmF5IHRv IHNheSB3aGV0aGVyIGEgbWFjaGluZQotCW1vZGUgYXJpdGhtZXRpYyBpcyBoYW5kbGVkIGJ5IGEg cGFydGljdWxhciB2ZWN0b3IgdW5pdC4KLQkocnM2MDAwX3ZlY3Rvcl9tZW0pOiBOZXcgZ2xvYmFs IGFycmF5IHRvIHNheSB3aGljaCB2ZWN0b3IgdW5pdCB0bwotCXVzZSBmb3IgbW92ZXMuCi0JKFZF Q1RPUl9VTklUXyopOiBOZXcgbWFjcm9zIHRvIHNheSB3aGljaCB2ZWN0b3IgdW5pdCB0byB1c2Uu Ci0JKFZFQ1RPUl9NRU1fKik6IERpdHRvLgotCShyczYwMDBfdnN4X2ludF9yZWdjbGFzcyk6IERl bGV0ZS4KLQkocnM2MDAwX3ZzeF9sb2dpY2FsX3JlZ2NsYXNzKTogRGVsZXRlLgotCi0JKiBjb25m aWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsbCBpbnNucyk6IENoYW5nZSBmcm9tIHVzaW5nCi0JcnM2 MDAwX3ZlY3Rvcl9pbmZvIHRvIFZFQ1RPUl9NRU1fKiBhbmQgVkVDVE9SX1VOSVRfKiBtYWNyb3Mu Ci0JKGJ1aWxkX3ZlY3Rvcl9tYXNrX2Zvcl9sb2FkKTogRGlzYWJsZSBpZiBWU1guCi0KLQkqIGNv bmZpZy9yczYwMDAvcnM2MDAwLm1kIChhbGwgREYgaW5zbnMpOiBDaGFuZ2UgaG93IHRoZSBWU1gK LQlleGNsdXNpb24gaXMgZG9uZS4KLQotMjAwOS0wMi0yNCAgTWljaGFlbCBNZWlzc25lciAgPG1l aXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAo cnM2MDAwX2RlYnVnX3JlZyk6IE5ldyBnbG9iYWwuCi0JKHJzNjAwMF9kZWJ1Z19yZWdfcHJpbnQp OiBOZXcgZnVuY3Rpb24gdG8gcHJpbnQgcmVnaXN0ZXIgY2xhc3NlcwotCWZvciBhIGdpdmVuIHJl Z2lzdGVyIHJhbmdlLgotCShyczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2spOiBJZiAtbWRl YnVnPXJlZywgcHJpbnQgb3V0IHRoZQotCXJlZ2lzdGVyIGNsYXNzLCBjYWxsIHVzZWQsIGZpeGVk IGluZm9ybWF0aW9uIGZvciBtb3N0IG9mIHRoZQotCXJlZ2lzdGVycy4gIFByaW50IHRoZSB2c3gg cmVnaXN0ZXIgY2xhc3MgdmFyaWFibGVzLgotCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEFk ZCAtbWRlYnVnPXJlZyBzdXBwb3J0LgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChyczYw MDBfZGVidWdfcmVnKTogTmV3IGdsb2JhbC4KLQkoVEFSR0VUX0RFQlVHX1JFRyk6IE5ldyB0YXJn ZXQgc3dpdGNoIGZvciAtbWRlYnVnPXJlZy4KLQotMjAwOS0wMi0yMyAgTWljaGFlbCBNZWlzc25l ciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogcmVsb2FkLmMgKHN1YnN0X3Jl bG9hZHMpOiBDaGFuZ2UgZ2NjX2Fzc2VydCBpbnRvIGEgZmF0YWxfaW5zbi4KLQotCSogY29uZmln L3JzNjAwMC92ZWN0b3IubWQgKFZFQ19JKTogUmVvcmRlciBpdGVyYXRvci4KLQkoVkVDX0wpOiBE aXR0by4KLQkoVkVDX0MpOiBOZXcgaXRlcmF0b3IgZmllbGQgZm9yIHZlY3RvciBjb21wYXJpc29u cy4KLQkoVkVDX2Jhc2UpOiBOZXcgbW9kZSBhdHRyaWJ1dGUgdGhhdCBtYXBlcyB0aGUgdmVjdG9y IHR5cGUgdG8gdGhlCi0JYmFzZSB0eXBlLgotCShhbGwgaW5zbnMpOiBTd2l0Y2ggdG8gdXNlIHJz NjAwMF92ZWN0b3JfaW5mbyB0byBkZXRlcm1pbmUgd2hldGhlcgotCXRoZSBpbnNuIGlzIHZhbGlk IGluc3RlYWQgb2YgdXNpbmcgVEFSR0VUX1ZTWCBvciBUQVJHRVRfQUxUSVZFQy4KLQkodmNvbmQ8 bW9kZT4pOiBNb3ZlIGhlcmUgZnJvbSBhbHRpdmVjLCBhbmQgYWRkIFZTWCBzdXBwb3J0LgotCSh2 Y29uZHU8bW9kZT4pOiBEaXR0by4KLQkodmVjdG9yX2VxPG1vZGU+KTogTmV3IGV4cGFuZGVyIGZv ciB2ZWN0b3IgY29tcGFyaXNvbnMuCi0JKHZlY3Rvcl9ndDxtb2RlPik6IERpdHRvLgotCSh2ZWN0 b3JfZ2U8bW9kZT4pOiBEaXR0by4KLQkodmVjdG9yX2d0dTxtb2RlPik6IERpdHRvLgotCSh2ZWN0 b3JfZ2V1PG1vZGU+KTogRGl0dG8uCi0JKHZlY3Rvcl92c2VsPG1vZGU+KTogTmV3IGV4cGFuZGVy IGZvciB2ZWN0b3Igc2VsZWN0LgotCSh2ZWNfaW5pdDxtb2RlPik6IE1vdmUgZXhwYW5kZXIgZnJv bSBhbHRpdmVjLm1kIGFuZCBnZW5lcmFsaXplIGZvcgotCVZTWC4KLQkodmVjX3NldDxtb2RlPik6 IERpdHRvLgotCSh2ZWNfZXh0cmFjdDxtb2RlPik6IERpdHRvLgotCSh2ZWNfaW50ZXJsZWF2ZV9o aWdodjRzZik6IERpdHRvLgotCSh2ZWNfaW50ZXJsZWF2ZV9sb3d2NHNmKTogRGl0dG8uCi0JKHZl Y19pbnRlcmxlYXZlX2hpZ2h2MmRmKTogTmV3IGV4cGFuZGVyIGZvciBWU1guCi0JKHZlY19pbnRl cmxlYXZlX2xvd3YyZGYpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9jb250cmFpbnRzLm1k ICh0b3BsZXZlbCk6IEFkZCBjb21tZW50IG9uIHRoZQotCWF2YWlsYWJsZSBjb25zdHJhaW50IGxl dHRlcnMuCi0JKCJ3IiBjb25zdHJhaW50KTogRGVsZXRlLCBpbiBmYXZvciBvZiB1c2luZyAidyIg YXMgYSB0d28gbGV0dGVyCi0JY29uc3RyYWludC4KLQkoIndkIiBjb25zdHJhaW50KTogTmV3IFZT WCBjb25zdHJhaW50LgotCSgid2YiIGNvbnN0cmFpbnQpOiBEaXR0by4KLQkoIndpIiBjb25zdHJh aW50KTogRGl0dG8uCi0JKCJ3bCIgY29uc3RyYWludCk6IERpdHRvLgotCSgid3MiIGNvbnN0cmFp bnQpOiBEaXR0by4KLQkoIndhIiBjb25zdHJhaW50KTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYw MDAvcHJlZGljYXRlcy5tZCAoaW5kZXhlZF9vcl9pbmRpcmVjdF9vcGVyYW5kKToKLQlEaXNhYmxl IGFsdGl2ZWMgc3VwcG9ydCBhbGxvd2luZyBBTkQgb2YgbWVtb3J5IGFkZHJlc3MgaWYgLW12c3gu Ci0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCAoLW12c3gtdmVjdG9yLW1vdmUpOiBOZXcg c3dpdGNoZXMgdG8KLQlhbGxvdyBmaW5lciBjb250cm9sIG92ZXIgd2hldGhlciBWU1gsIEFsdGl2 ZWMsIG9yIHRoZSB0cmFkaXRpb25hbAotCWluc3RydWN0aW9ucyBhcmUgdXNlZC4KLQkoLW12c3gt c2NhbGFyLW1vdmUpOiBEaXR0by4KLQkoLW12c3gtdmVjdG9yLWZsb2F0KTogRGl0dG8uCi0JKC1t dnN4LXZlY3Rvci1kb3VibGUpOiBEaXR0by4KLQkoLW12c3gtdmVjdG9yLWxvZ2ljYWwpOiBEaXR0 by4KLQkoLW12c3gtc2NhbGFyLWRvdWJsZSk6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3Jz NjAwMC5jIChyczYwMDBfdmVjdG9yX2luZm8pOiBOZXcgZ2xvYmFsIHRvIGhvbGQKLQl2YXJpb3Vz IGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHZlY3RvciBpbnN0cnVjdGlvbiBzZXQgdG8gdXNlLCBh bmQKLQl0aGUgYWxpZ25tZW50IG9mIGRhdGEuCi0JKHJzNjAwMF92c3hfdjRzZl9yZWdjbGFzcyk6 IE5ldyBnbG9iYWwgdG8gaG9sZCBWU1ggcmVnaXN0ZXIKLQljbGFzcy4KLQkocnM2MDAwX3ZzeF92 MmRmX3JlZ2NsYXNzKTogRGl0dG8uCi0JKHJzNjAwMF92c3hfZGZfcmVnY2xhc3MpOiBEaXR0by4K LQkocnM2MDAwX3ZzeF9pbnRfcmVnY2xhc3MpOiBEaXR0by4KLQkocnM2MDAwX3ZzeF9sb2dpY2Fs X3JlZ2NsYXNzKTogRGl0dG8uCi0JKHJzNjAwMF92c3hfYW55X3JlZ2NsYXNzKTogRGl0dG8uCi0J KHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzX2ludGVybmFsKTogUmV3cml0ZSB0byBmaW5lIHR1bmUK LQlWU1gvQWx0aXZlYyByZWdpc3RlciBzZWxlY3Rpb24uCi0JKHJzNjAwMF9oYXJkX3JlZ25vX21v ZGVfb2spOiBEaXR0by4KLQkocnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rKTogU2V0IHVw IHRoZSB2ZWN0b3IgaW5mb3JtYXRpb24KLQlnbG9iYWxzIGJhc2VkIG9uIHRoZSAtbXZzeC0qIHN3 aXRjaGVzLgotCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCB3YXJuaW5ncyBmb3IgLW12 c3ggYW5kCi0JLW1saXR0bGUtZW5kaWFuIG9yIC1tYXZvaWQtaW5kZXhlZC1hZGRyZXNzZXMuCi0J KHJzNjAwMF9idWlsdGluX3ZlY19wZXJtKTogQWRkIFYyREYvVjJESSBzdXBwb3J0LgotCShyczYw MDBfZXhwYW5kX3ZlY3Rvcl9pbml0KTogQWRkIFYyREYgc3VwcG9ydC4KLQkocnM2MDAwX2V4cGFu ZF92ZWN0b3Jfc2V0KTogRGl0dG8uCi0JKHJzNjAwMF9leHBhbmRfdmVjdG9yX2V4dHJhY3QpOiBE aXR0by4KLQkoYXZvaWRpbmdfaW5kZXhlZF9hZGRyZXNzX3ApOiBBZGQgVlNYIHN1cHBvcnQuCi0J KHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBEaXR0by4KLQkocnM2MDAwX2xlZ2l0aW1pemVf cmVsb2FkX2FkZHJlc3MpOiBEaXR0by4KLQkocnM2MDAwX2xlZ2l0aW1pdGVfYWRkcmVzcyk6IERp dHRvLgotCShVU0VfQUxUSVZFQ19GT1JfQVJHX1ApOiBEaXR0by4KLQkoZnVuY3Rpb25fYXJnX2Jv dW5kYXJ5KTogRGl0dG8uCi0JKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogRGl0dG8uCi0JKGZ1bmN0 aW9uX2FyZyk6IERpdHRvLgotCShnZXRfdmVjX2NtcF9pbnNuKTogRGVsZXRlLgotCShyczYwMDBf ZW1pdF92ZWN0b3JfdnN4KTogTmV3IGZ1bmN0aW9uIGZvciBWU1ggdmVjdG9yIGNvbXBhcmUuCi0J KHJzNjAwMF9lbWl0X3ZlY3Rvcl9hbHRpdmVjKTogTmV3IGZ1bmN0aW9uIGZvciBBbHRpdmVjIHZl Y3RvcgotCWNvbXBhcmUuCi0JKGdldF92c2VsX2luc24pOiBEZWxldGUuCi0JKHJzNjAwMF9lbWl0 X3ZlY3Rvcl9zZWxlY3QpOiBEaXR0by4KLQkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBJZiAt bXZzeCwgdHVybiBvbiAtbWFsdGl2ZWMgYnkKLQlkZWZhdWx0LgotCShyczYwMDBfYnVpbHRpbl92 ZWNfcGVybSk6IEFkZCBzdXBwb3J0IGZvciBWMkRJLCBWMkRGIG1vZGVzLgotCShiZGVzY18zYXJn KTogQWRkIHZlY3RvciBzZWxlY3QgYW5kIHZlY3RvciBwZXJtdXRlIGJ1aWx0aW5zIGZvcgotCVYy REkgYW5kIFYyREYgdHlwZXMuICBTd2l0Y2ggdG8gdXNpbmcgdGhlIHZlY3Rvcl8qIGV4cGFuZGVy Ci0JaW5zdGVhZCBvZiBhbHRpdmVjXyouCi0JKHJzNjAwMF9pbml0X2J1aWx0aW5zKTogSW5pdGlh bGl6ZSBuZXcgdHlwZSBub2RlcyBmb3IgVlNYLgotCUluaXRpYWxpemUgX192ZWN0b3IgZG91Ymxl IHR5cGUuICBJbml0aWFsaXplIGNvbW1vbiBidWlsdGlucyBmb3IKLQlWU1guCi0JKHJzNjAwMF9l bWl0X3ZlY3Rvcl9jb21wYXJlKTogQWRkIFZTWCBzdXBwb3J0LgotCShyczYwMDBfdmVjdG9yX21v ZGVfc3VwcG9ydGVkX3ApOiBJZiBWU1gsIHN1cHBvcnQgVjJERi4KLQotCSogY29uZmlnL3JzNjAw MC92c3gubWQgKFZTWF9JKTogTmV3IGl0ZXJhdG9yIGZvciBpbnRlZ2VyIG1vZGVzLgotCShWU1hf TCk6IFJlb3JkZXIgaXRlcmF0b3IuCi0JKGx4Xzxtb2RlPl92c3gpOiBEZWxldGUsIG5vIGxvbmdl ciBuZWVkZWQuCi0JKHN0eF88bW9kZT5fdnN4KTogRGl0dG8uCi0JKGFsbCBpbnNucyk6IENoYW5n ZSB0byB1c2UgdnN4XzxuYW1lPiBpbnN0ZWFkIG9mIDxuYW1lPl92c3ggZm9yCi0JY29uc2lzdGFu Y3kgd2l0aCB0aGUgb3RoZXIgcnM2MDAwIG1kIGZpbGVzLiAgQ2hhbmdlIHRvIHVzZSB0aGUgbmV3 Ci0JInciIGNvbnN0cmFpbnRzIGZvciBhbGwgaW5zbnMuICBDaGFuZ2UgdG8gdXNlIHJzNjAwMF92 ZWN0b3JfaW5mbwotCWRlY2lkaW5nIHdoZXRoZXIgdG8gZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24g b3Igbm90LgotCSh2c3hfbW92PG1vZGU+KTogUmV3cml0ZSBjb25zdHJhaW50cyBzbyBHUFIgcmVn aXN0ZXJzIGFyZSBub3QKLQljaG9zZW4gYXMgcmVsb2FkIHRhcmdldHMuICBTcGxpdCBpbnRlZ2Vy IHZlY3RvciBsb2FkcyBpbnRvIGEKLQlzZXBhcmF0ZSBpbnNuLCBhbmQgZmF2b3IgdGhlIGFsdGl2 ZWMgcmVnaXN0ZXIgb3ZlciB0aGUgVlNYIGZwCi0JcmVnaXN0ZXJzLgotCSh2c3hfZm1hZGQ8bW9k ZT40KTogVXNlIDxtb2RlPiwgbm90IDx0eXBlPi4KLQkodnN4X2Ztc3ViPG1vZGU+NCk6IERpdHRv LgotCSh2c3hfZXE8bW9kZT4pOiBOZXcgaW5zbnMgZm9yIFYyREYvVjRTRiB2ZWN0b3IgY29tcGFy ZS4KLQkodnN4X2d0PG1vZGU+KTogRGl0dG8uCi0JKHZzeF9nZTxtb2RlPik6IERpdHRvLgotCSh2 c3hfdnNlbDxtb2RlPik6IE5ldyBpbnNucyBmb3IgVlNYIHZlY3RvciBzZWxlY3QuCi0JKHZzeF94 eHBlcm1kaSk6IE5ldyBpbnNuIGZvciBERiBwZXJtdXRlLgotCSh2c3hfc3BsYXR2MmRmKTogTmV3 IGluc24gZm9yIERGIHNwbGF0IHN1cHBvcnQuCi0JKHZzeF94eG1yZ2x3KTogTmV3IGluc25zIGZv ciBERiBpbnRlcmxlYXZlLgotCSh2c3hfeHhtcmdodyk6IERpdHRvLgotCi0JKiBjb25maWcvcnM2 MDAwL3JzMDAwLmggKGVudW0gcnM2MDAwX3ZlY3Rvcik6IE5ldyBlbnVtIHRvCi0JZGVzY3JpYmUg d2hpY2ggdmVjdG9yIHVuaXQgaXMgYmVpbmcgdXNlZC4KLQkoc3RydWN0IHJzNjAwMF92ZWN0b3Jf c3RydWN0KTogTmV3IHN0cnVjdCB0byBkZXNjcmliZSB0aGUgdmFyaW91cwotCWFzcGVjdHMgYWJv dXQgdGhlIGN1cnJlbnQgdmVjdG9yIGluc3RydWN0aW9uIHNldC4KLQkocnM2MDAwX3ZlY3Rvcl9p bmZvKTogTmV3IGdsb2JhbCB0byBkZXNjcmliZSB0aGUgY3VycmVudCB2ZWN0b3IKLQlpbnN0cnVj dGlvbiBzZXQuCi0JKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IElmIHJzNjAwMF92ZWN0b3JfaW5m byBoYXMgYWxpZ25tZW50Ci0JaW5mb3JtYXRpb24gZm9yIGEgdHlwZSwgdXNlIHRoYXQuCi0JKFZT WF9WRUNUT1JfTU9WRV9NT0RFKTogTmV3IG1hY3JvIGZvciBhbGwgVlNYIHZlY3RvcnMgdGhhdCBh cmUKLQlzdXBwb3J0ZWQgYnkgbW92ZSBpbnN0cnVjdGlvbnMuCi0JKFZTWF9NT1ZFX01PREUpOiBO ZXcgbWFjcm8gZm9yIGFsbCBWU1ggbW92ZXMuCi0JKGVudW0gcnM2MDAwX2J1aWx0aW5zKTogQWRk IFYyREkvVjJERiB2ZWN0b3Igc2VsZWN0IGFuZCBwZXJtdXRlCi0JYnVpbHRpbnMuCi0JKHJzNjAw MF9idWlsdGluX3R5cGVfaW5kZXgpOiBBZGQgbmV3IHR5cGVzIGZvciBWU1ggdmVjdG9ycy4KLQko cnM2MDAwX3ZzeF92NHNmX3JlZ2NsYXNzKTogTmV3IGdsb2JhbCB0byBob2xkIFZTWCByZWdpc3Rl cgotCWNsYXNzLgotCShyczYwMDBfdnN4X3YyZGZfcmVnY2xhc3MpOiBEaXR0by4KLQkocnM2MDAw X3ZzeF9kZl9yZWdjbGFzcyk6IERpdHRvLgotCShyczYwMDBfdnN4X2ludF9yZWdjbGFzcyk6IERp dHRvLgotCShyczYwMDBfdnN4X2xvZ2ljYWxfcmVnY2xhc3MpOiBEaXR0by4KLQkocnM2MDAwX3Zz eF9hbnlfcmVnY2xhc3MpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChV TlNQRUNfVkNNUCopOiBEZWxldGUgdW5zcGVjCi0JY29uc3RhbnRzIG5vIGxvbmdlciBuZWVkZWQu Ci0JKFVOU1BFQ19WU0VMKik6IERpdHRvLgotCShhbHRpdmVjX2x2eF88bW9kZT4pOiBEZWxldGUs IG5vIGxvbmdlciBuZWVkZWQuCi0JKGFsdGl2ZWNfc3R2eF88bW9kZT4pOiBEaXR0by4KLQkoYWxs IGluc25zKTogUmV3cml0ZSB0byBiZSBjb25zaXN0YW50IG9mIGFsdGl2ZWNfPGluc24+LiAgU3dp dGNoCi0JdG8gdXNlIHJzNjAwMF92ZWN0b3JfaW5mbyB0byBkZXRlcm1pbmUgd2hldGhlciB0byBp c3N1ZSB0byB0aGUKLQlhbHRpdmVjIGZvcm0gb2YgdGhlIGluc3RydWN0aW9ucy4KLQkobW92PG1v ZGU+X2FsdGl2ZWMpOiBSZXdyaXRlIGNvbnN0cmFpbnRzIHNvIEdQUiByZWdpc3RlcnMgYXJlIG5v dAotCWNob3NlbiBhcyByZWxvYWQgdGFyZ2V0cy4KLQkoYWx0aXZlY19lcTxtb2RlPik6IFJld3Jp dGUgdmVjdG9yIGNvbmRpdGlvbmFscywgcGVybXV0ZSwgc2VsZWN0Ci0JdG8gdXNlIGl0ZXJhdG9y cywgYW5kIHdvcmsgd2l0aCBWU1guCi0JKGFsdGl2ZWNfZ3Q8bW9kZT4pOiBEaXR0by4KLQkoYWx0 aXZlY19nZTxtb2RlPik6IERpdHRvLgotCShhbHRpdmVjX2d0dTxtb2RlPik6IERpdHRvLgotCShh bHRpdmVjX2dldTxtb2RlPik6IERpdHRvLgotCShhbHRpdmVjX3ZzZWw8bW9kZT4pOiBEaXR0by4K LQkoYWx0aXZlY192cGVybV88bW9kZT4pOiBEaXR0by4KLQkoYWx0aXZlY192Y21wKik6IFJld3Jp dGUgdG8gbm90IHVzZSB1bnNwZWNzIGFueSBtb3JlLCBhbmQgdXNlIG1vZGUKLQlpdGVyYXRvcnMs IGFkZCBWU1ggc3VwcG9ydC4KLQkodmNvbmR2NHNpKTogTW92ZSB0byB2ZWN0b3IubWQuCi0JKHZj b25kdXY0c2kpOiBEaXR0by4KLQkodmNvbmR2OGhpKTogRGl0dG8uCi0JKHZjb25kdXY4aGkpOiBE aXR0by4KLQkodmNvbmR2MTZxaSk6IERpdHRvLgotCSh2Y29uZHV2MTZxaSk6IERpdHRvLgotCi0J KiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobmVnZGYyX2Zwcik6IEFkZCBzdXBwb3J0IGZvcgot CS1tdnN4LXNjYWxhci1kb3VibGUuCi0JKGFic2RmMl9mcHIpOiBEaXR0by4KLQkobmFic2RmMl9m cHIpOiBEaXR0by4KLQkoYWRkZGYzX2Zwcik6IERpdHRvLgotCShzdWJkZjNfZnByKTogRGl0dG8u Ci0JKG11bGRmM19mcHIpOiBEaXR0by4KLQkoZGl2ZGYzX2Zwcik6IERpdHRvLgotCShERiBtdWx0 aXBseS9hZGQgcGF0dGVybnMpOiBEaXR0by4KLQkoc3FydGRmMik6IERpdHRvLgotCShtb3ZkZl9o YXJkZmxvYXQzMik6IEFkZCBWU1ggc3VwcG9ydC4KLQkobW92ZGZfaGFyZGZsb2F0NjRfbWZwZ3By KTogRGl0dG8uCi0JKG1vdmRmX2hhcmRmbG9hdDY0KTogRGl0dG8uCi0KLQkqIGRvYy9pbnZva2Uu dGV4aSAoLW12c3gtKik6IEFkZCBuZXcgdnN4IHN3aXRjaGVzLgotCi0yMDA5LTAyLTEzICBNaWNo YWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgotCi0JKiBjb25maWcu aW46IFVwZGF0ZSB0d28gY29tbWVudHMuCi0KLQkqIGNvbmZpZy9yczYwMDAvdmVjdG9yLm1kIChW RUNfTCk6IEFkZCBWMkRJIHR5cGUuCi0JKG1vdmU8bW9kZT4pOiBVc2UgVkVDX0wgdG8gZ2V0IGFs bCB2ZWN0b3IgdHlwZXMsIGFuZCBkZWxldGUgdGhlCi0Jc2VwYXJhdGUgaW50ZWdlciBtb2RlIG1v dmUgZGVmaW5pdGlvbnMuCi0JKHZlY3Rvcl9sb2FkXzxtb2RlPik6IERpdHRvLgotCSh2ZWN0b3Jf c3RvcmVfPG1vZGU+KTogRGl0dG8uCi0JKHZlY3RvciBtb3ZlIHNwbGl0dGVycyk6IE1vdmUgR1BS IHJlZ2lzdGVyIHNwbGl0dGVycyBoZXJlIGZyb20KLQlhbHRpdmVjLm1kLgotCi0JKiBjb25maWcv cnM2MDAwL2NvbnN0cmFpbnRzLm1kICgiaiIpOiBBZGQgImoiIGNvbnN0cmFpbnQgdG8gbWF0Y2gK LQl0aGUgbW9kZSdzIDAgdmFsdWUuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAw MF9oYXJkX3JlZ25vX25yZWdzX2ludGVybmFsKTogT25seQotCWNvdW50IHRoZSBGUFJzIGFzIGJl aW5nIDEyOCBiaXRzIGlmIHRoZSBtb2RlIGlzIGEgVlNYIHR5cGUuCi0JKHJzNjAwMF9oYXJkX3Jl Z25vX21vZGVfb2spOiBEaXR0by4KLQkocnM2MDAwX2VtaXRfbWlubWF4KTogVXNlIG5ldyBWU1hf TU9ERSBpbnN0ZWFkIG9mIHNlcGFyYXRlIHRlc3RzLgotCi0JKiBjb25maWcvcnM2MDAwL3ZzeC5t ZCAoVlNYX0wpOiBBZGQgVjJESW1vZGUuCi0JKFZTbSk6IFJlbmFtZSBmcm9tIFZTWF9tZW0sIGFk ZCBtb2RlcyBmb3IgaW50ZWdlciB2ZWN0b3JzLiAgQ2hhbmdlCi0JYWxsIHVzZXMuCi0JKFZTcyk6 IFJlbmFtZSBmcm9tIFZTWF9vcCwgYWRkIG1vZGVzIGZvciBpbnRlZ2VyIHZlY3RvcnMuICBDaGFu Z2UKLQlhbGwgdXNlcy4KLQkoVlNyKTogTmV3IG1vZGUgYWRkcmVzcyB0byBnaXZlIHRoZSByZWdp c3RlciBjbGFzcy4KLQkobW92PG1vZGU+X3ZzeCk6IFVzZSBWU3IgdG8gZ2V0IHRoZSByZWdpc3Rl ciBwcmVmZXJlbmNlcy4gIEFkZAotCWV4cGxpY2l0IDAgb3B0aW9uLgotCShzY2FsYXIgZG91Ymxl IHByZWNpc2lvbiBwYXR0ZXJucyk6IERvIG5vdCB1c2UgdiByZWdpc3RlcgotCWNvbnN0cmFpbnQg cmlnaHQgbm93LgotCShsb2dpY2FsIHBhdHRlcm5zKTogVXNlIFZTciBtb2RlIGF0dHJpYnV0ZSBm b3IgcmVnaXN0ZXIKLQlwcmVmZXJlbmNlcy4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAo VlNYX1NDQUxBUl9NT0RFKTogTmV3IG1hY3JvLgotCShWU1hfTU9ERSk6IERpdHRvLgotCi0JKiBj b25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKFZNKTogTmV3IG1vZGUgaXRlcmF0b3IgZm9yIG1lbW9y eQotCW9wZXJhdGlvbnMuICBBZGQgVjJESSBtb2RlLgotCShtb3ZfYWx0aXZlY188bW9kZT4pOiBE aXNhYmxlIGlmIC1tdnN4IGZvciBhbGwgbW9kZXMsIG5vdCBqdXN0Ci0JVjRTRm1vZGUuCi0JKGdw ciBtb3ZlIHNwbGl0dGVycyk6IE1vdmUgdG8gdmVjdG9yLm1kLgotCShhbmQ8bW9kZT4zX2FsdGl2 ZWMpOiBVc2UgVk0gbW9kZSBpdGVyYXRvciwgbm90IFYuCi0JKGlvcjxtb2RlPjNfYWx0aXZlYyk6 IERpdHRvLgotCSh4b3I8bW9kZT4zX2FsdGl2ZWMpOiBEaXR0by4KLQkob25lX2NtcGw8bW9kZT4y X2FsdGl2ZWMpOiBEaXR0by4KLQkobm9yPG1vZGU+M19hbHRpdmVjKTogRGl0dG8uCi0JKGFuZGM8 bW9kZT4zX2FsdGl2ZWMpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1v dmRmX2hhcmRmbG9hdCk6IEJhY2sgb3V0IHZzeCBjaGFuZ2VzLgotCShtb3ZkZl9oYXJkZmxvYXQ2 NF92c3gpOiBEZWxldGUuCi0KLTIwMDktMDItMTIgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25l ckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGNvbmZpZy9yczYwMDAvdmVjdG9yLm1kOiBOZXcg ZmlsZSB0byBhYnN0cmFjdCBvdXQgdGhlIGV4cGFuZGVycwotCWZvciB2ZWN0b3Igb3BlcmF0aW9u cyBmcm9tIGFsaXR2ZWMubWQuCi0KLQkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZCAodnN4 X3JlZ2lzdGVyX29wZXJhbmQpOiBOZXcKLQlwcmVkaWNhdGUgdG8gbWF0Y2ggVlNYIHJlZ2lzdGVy cy4KLQkodmZsb2F0X29wZXJhbmQpOiBOZXcgcHJlZGljYXRlIHRvIG1hdGNoIHJlZ2lzdGVycyB1 c2VkIGZvciB2ZWN0b3IKLQlmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zLgotCSh2aW50X29wZXJh bmQpOiBOZXcgcHJlZGljYXRlIHRvIG1hdGNoIHJlZ2lzdGVycyB1c2VkIGZvciB2ZWN0b3IKLQlp bnRlZ2VyIG9wZXJhdGlvbnMuCi0JKHZsb2dpY2FsX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlIHRv IG1hdGNoIHJlZ2lzdGVycyB1c2VkIGZvcgotCXZlY3RvciBsb2dpY2FsIG9wZXJhdGlvbnMuCi0K LQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfaGFyZF9yZWdub19ucmVn cyk6IENoYW5nZQotCWZyb20gYSBmdW5jdGlvbiB0byBhbiBhcnJheS4KLQkocnM2MDAwX2NsYXNz X21heF9ucmVncyk6IEFkZCBkZWNsYXJhdGlvbi4KLQotCSogY29uZmlnL3JzNjAwMC90LXJzNjAw MCAoTURfSU5DTFVERVMpOiBEZWZpbmUgdG8gaW5jbHVkZSBhbGwgb2YKLQl0aGUgLm1kIGZpbGVz IGluY2x1ZGVkIGJ5IHJzNjAwMC5tZC4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2 MDAwX2NsYXNzX21heF9ucmVncyk6IE5ldyBnbG9iYWwKLQlhcnJheSB0byBwcmUtY2FsY3VsYXRl IENMQVNTX01BWF9OUkVHUy4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3MpOiBDaGFuZ2UgZnJv bSBhIGZ1bmN0aW9uIHRvIGFuIGFycmF5IHRvCi0JcHJlLWNhbGN1bGF0ZSBIQVJEX1JFR05PX05S RUdTLgotCShyczYwMDBfaGFyZF9yZWdub19ucmVnc19pbnRlcm5hbCk6IFJlbmFtZSBmcm9tCi0J cnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3MgYW5kIGFkZCBWU1ggc3VwcG9ydC4KLQkocnM2MDAwX2hh cmRfcmVnbm9fbW9kZV9vayk6IEFkZCBWU1ggc3VwcG9ydCwgYW5kIHN3aXRjaCB0byB1c2UKLQls b29rdXAgdGFibGUgcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3MuCi0JKHJzNjAwMF9pbml0X2hhcmRf cmVnbm9fbW9kZV9vayk6IEFkZCBpbml0aWFsaXphdGlvbiBvZgotCXJzNjAwMF9oYXJkX3JlZ25v X25yZWdzLCBhbmQgcnM2MDAwX2NsYXNzX21heF9ucmVncyBnbG9iYWwKLQlhcnJheXMuCi0JKHJz NjAwMF9vdmVycmlkZV9vcHRpb25zKTogQWRkIHNvbWUgd2FybmluZ3MgZm9yIHRoaW5ncyB0aGF0 IGFyZQotCWluY29tcGF0aWJsZSB3aXRoIC1tdnN4LgotCShyczYwMDBfbGVnaXRpbWF0ZV9vZmZz ZXRfYWRkcmVzc19wKTogQWRkIFYyREZtb2RlLgotCShyczYwMDBfY29uZGl0aW9uYWxfcmVnaXN0 ZXJfdXNhZ2UpOiBFbmFibGUgYWx0aXZlYyByZWdpc3RlcnMgaWYKLQktbXZzeC4KLQkoYmRlc2Nf MmFyZyk6IENoYW5nZSB0aGUgbmFtZSBvZiB0aGUgbm9yIHBhdHRlcm4uCi0JKGFsdGl2ZWNfZXhw YW5kX2xkX2J1aWx0aW4pOiBDaGFuZ2UgdGhlIG5hbWVzIG9mIHRoZSBsb2FkCi0JcGF0dGVybnMg dG8gYmUgdGhlIGdlbmVyaWMgdmVjdG9yIGxvYWRzLgotCShhbHRpdmVjX2V4cGFuZF9zdF9idWls dGluKTogQ2hhbmdlIHRoZSBuYW1lcyBvZiB0aGUgc3RvcmUKLQlwYXR0ZXJucyB0byBiZSB0aGUg Z2VuZXJpYyB2ZWN0b3Igc3RvcmVzLgotCShwcmludF9vcGVyYW5kKTogQWRkICd4JyB0byBwcmlu dCBvdXQgYSBWU1ggcmVnaXN0ZXIgcHJvcGVybHkuCi0JKHJzNjAwMF9lbWl0X21pbm1heCk6IERp cmVjdGx5IGVtaXQgdGhlIG1pbi9tYXggcGF0dGVybnMgZm9yIFZTWAotCWFuZCBBbHRpdmVjLgot Ci0JKiBjb25maWcvcnM2MDAwL3ZzeC5tZDogTmV3IGZpbGUgdG8gYWRkIGFsbCBvZiB0aGUgVlNY IHNwZWNpZmljCi0JaW5zdHJ1Y3Rpb25zLiAgQWRkIHN1cHBvcnQgZm9yIGxvYWQsIHN0b3JlLCBt b3ZlLCBhZGQsIHN1YnRyYWN0LAotCW11bHRpcGx5LCBtdWx0aXBseS9hZGQsIGRpdmlkZSwgbmVn YXRlLCBhYnNvbHV0ZSB2YWx1ZSwgbWF4aW11bSwKLQltaW5pbXVtLCBzcXJ0LCBhbmQsIG9yLCB4 b3IsIGFuZCBjb21wbGVudCwgeG9yLCBvbmUncyBjb21wbGVtZW50LAotCWFuZCBub3IgaW5zdHJ1 Y3Rpb25zLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChVTklUU19QRVJfVlNYX1dPUkQp OiBEZWZpbmUuCi0JKFZTWF9SRUdOT19QKTogTmV3IG1hY3JvIGZvciBWU1ggcmVnaXN0ZXJzLgot CShWRkxPQVRfUkVHTk8pOiBOZXcgbWFjcm8gZm9yIHZlY3RvciBmbG9hdGluZyBwb2ludCByZWdp c3RlcnMuCi0JKFZJTlRfUkVHTk8pOiBOZXcgbWFjcm8gZm9yIHZlY3RvciBpbnRlZ2VyIHJlZ2lz dGVycy4KLQkoVkxPR0lDQUxfUkVHTk8pOiBOZXcgbWFjcm8gZm9yIHZlY3RvciBsb2dpY2FsIHJl Z2lzdGVycy4KLQkoVlNYX1ZFQ1RPUl9NT0RFKTogTmV3IG1hY3JvIGZvciB2ZWN0b3IgbW9kZXMg c3VwcG9ydGVkIGJ5IFZTWC4KLQkoSEFSRF9SRUdOT19OUkVHUyk6IFN3aXRjaCB0byB1c2luZyBw cmUtY29tcHV0ZWQgdGFibGUuCi0JKENMQVNTX01BWF9OUkVHUyk6IERpdHRvLgotCi0JKiBjb25m aWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2ZWNfbHZ4Xzxtb2RlPik6IERlbGV0ZSwgcmVwYWxj ZWQKLQlieSBleHBhbmRlcnMgaW4gdmVjdG9yLm1kLgotCShhbHRpdmVjX3N0dnhfPG1vZGU+KTog RGl0dG8uCi0JKG1vdjxtb2RlPik6IERpdHRvLgotCShtb3ZfYWx0aXZlY188bW9kZT4pOiBSZW5h bWUgZnJvbSBtb3Y8bW9kZT5faW50ZXJuYWwsIGFuZCBwcmVmZXIKLQl1c2luZyBWU1ggaWYgYXZh aWxhYmxlLgotCShhZGR2NHNmM19hbHRpdmVjKTogUmVuYW1lIGZyb20gc3RhbmRhcmQgbmFtZSwg YW5kIHByZWZlciB1c2luZwotCVZTWCBpZiBhdmFpbGFibGUuCi0JKHN1YnY0c2YzX2FsdGl2ZWMp OiBEaXR0by4KLQkobXVsdjRzZjNfYWx0aXZlYyk6IERpdHRvLgotCShzbWF4djRzZjNfYWx0aXZl Yyk6IERpdHRvLgotCShzbWludjRzZjNfYWx0aXZlYyk6IERpdHRvLgotCShhbmQ8bW9kZT4zX2Fs dGl2ZWMpOiBEaXR0by4KLQkoaW9yPG1vZGU+M19hbHRpdmVjKTogRGl0dG8uCi0JKHhvcjxtb2Rl PjNfYWx0aXZlYyk6IERpdHRvLgotCShvbmVfY21wbDxtb2RlPjIpOiBEaXR0by4KLQkobm9yPG1v ZGU+M19hbHRpdmVjKTogRGl0dG8uCi0JKGFuZGM8bW9kZT4zX2FsdGl2ZWMpOiBEaXR0by4KLQko YWJzdjRzZjJfYWx0aXZlYyk6IERpdHRvLgotCSh2Y29uZHY0c2YpOiBNb3ZlIHRvIHZlY3Rvci5t ZC4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG5lZ2RmMl9mcHIpOiBBZGQgIVRBUkdF VF9WU1ggdG8gcHJlZmVyCi0JdGhlIHZlcnNpb24gaW4gdnN4Lm1kIGlmIC1tdnN4IGlzIGF2YWls YWJsZS4KLQkoYWJzZGYyX2Zwcik6IERpdHRvLgotCShuYWJzZGYyX2Zwcik6IERpdHRvLgotCShh ZGRkZjNfZnByKTogRGl0dG8uCi0JKHN1YmRmM19mcHIpOiBEaXR0by4KLQkobXVsZGYzX2Zwcik6 IERpdHRvLgotCShtdWx0aXBseS9hZGQgcGF0dGVybnMpOiBEaXR0by4KLQkobW92ZGZfaGFyZGZs b2F0NjQpOiBEaXNhYmxlIGlmIC1tdnN4LgotCShtb3ZkZl9oYXJkZmxvYXQ2NF92c3gpOiBDbG9u ZSBmcm9tIG1vdmRmX2hhcmRmbG9hdDY0IGFuZCBhZGQgVlNYCi0Jc3VwcG9ydC4KLQkodmVjdG9y Lm1kKTogSW5jbHVkZSBuZXcgLm1kIGZpbGUuCi0JKHZzeC5tZCk6IERpdHRvLgotCi0yMDA5LTAy LTExICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgotCi0J KiBkb2MvaW52b2tlLnRleGkgKC1tdnN4LCAtbW5vLXZzeCk6IERvY3VtZW50IG5ldyBzd2l0Y2hl cy4KLQotCSogY29uZmlnL3JzNjAwMC9saW51eDY0Lm9wdCAoLW1wcm9maWxlLWtlcm5lbCk6IE1v dmUgdG8gYmVpbmcgYQotCXZhcmlhYmxlIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHRhcmdldCBm bGFnIGJpdHMuCi0JKiBjb25maWcvcnM2MDAwL3N5c3Y0Lm9wdCAoLW1iaXQtYWxpZ24pOiBEaXR0 by4KLQkoLW1iaXQtd29yZCk6IERpdHRvLgotCSgtbXJlZ25hbWVzKTogRGl0dG8uCi0JKiBjb25m aWcvcnM2MDAwL3JzNjAwMC5vcHQgKC1tdXBkYXRlLCAtbW5vLXVwZGF0ZSk6IERpdHRvLgotCSgt bXZzeCk6IE5ldyBzd2l0Y2gsIGVuYWJsZSBWU1ggc3VwcG9ydC4KLQotCSogY29uZmlnL3JzNjAw MC9yczYwMDAtYy5jIChyczYwMDBfY3B1X2NwcF9idWlsdGlucyk6IERlZmluZQotCV9fVlNYX18g aWYgdGhlIHZlY3Rvci9zY2FsYXIgaW5zdHJ1Y3Rpb24gc2V0IGlzIGF2YWlsYWJsZS4KLQotCSog Y29uZmlnL3JzNjAwMC9saW51eDY0LmggKFNVQlNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTog Q2hhbmdlCi0JdG8gYWxsb3cgLW1wcm9maWxlLWtlcm5lbCB0byBiZSBhIHZhcmlhYmxlLgotCi0J KiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlKTogU2V0IC1t dnN4IGZvcgotCXBvd2VyNyBjcHVzLgotCShQT1dFUlBDX01BU0tTKTogQWRkIC1tdnN4LgotCi0J KiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBRERJVElPTkFMX1JFR0lTVEVSX05BTUVTKTogQWRk IFZTWAotCXJlZ2lzdGVyIG5hbWVzIGZvciB0aGUgcmVnaXN0ZXJzIHRoYXQgb3ZlcmxhcCB3aXRo IHRoZSBmbG9hdGluZwotCXBvaW50IGFuZCBhbHRpdmVjIHJlZ2lzdGVycy4KLQotCSogY29uZmln L3JzNjAwMC9zeXN2NC5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6Ci0JVEFSR0VUX05P X0JJVEZJRUxEX1dPUkQgaXMgbm93IGEgdmFyaWFibGUsIG5vdCBhIHRhcmdldCBtYXNrLgotCi0y MDA5LTAyLTExICBQYXQgSGF1Z2VuICA8cHRoYXVnZW5AdXMuaWJtLmNvbT4KLQkgICAgTWljaGFl bCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogZG9jL2ludm9r ZS50ZXhpICgtbXBvcGNudGQsIC1tbm8tcG9wY250ZCk6IERvY3VtZW50IG5ldwotCXN3aXRjaGVz LgotCi0JKiBjb25maWd1cmUuYWMgKHBvd2VycGMqLSotKik6IFRlc3QgZm9yIHRoZSBhc3NlbWJs ZXIgaGF2aW5nIHRoZQotCXBvcGNudGQgaW5zdHJ1Y3Rpb24uCi0JKiBjb25maWd1cmU6IFJlZ2Vu ZXJhdGUuCi0JKiBjb25maWcuaW4gKEhBVkVfQVNfUE9QQ05URCk6IEFkZCBkZWZhdWx0IHZhbHVl IGZvciBjb25maWd1cmUKLQl0ZXN0LgotCi0JKiBjb25maWcvcnM2MDAwL3Bvd2VyNy5tZDogTmV3 IGZpbGUuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYyAocnM2MDAwX2NwdV9jcHBfYnVp bHRpbnMpOiBEZWZpbmUKLQlfQVJDSF9QV1I3IGlmIHRoZSBwb3BjbnRkIGluc3RydWN0aW9uIGlz IGF2YWlsYWJsZS4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0ICgtbXBvcGNudGQpOiBO ZXcgc3dpdGNoIHRvCi0JZW5hYmxlL2Rpc2FibGUgdGhlIHVzZSBvZiB0aGUgcG9wY250ZCBhbmQg cG9wY250dyBpbnN0cnVjdGlvbnMuCi0JKC1tZnVzZWQtbWFkZCwgLW1uby1mdXNlZC1tYWRkKTog TW92ZSB0byBiZWluZyBhIHNlcGFyYXRlIHZhcmlhYmxlCi0JYmVjYXVzZSB3ZSBhcmUgb3V0IG9m IG1hc2sgYml0cy4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocG93ZXI3X2Nvc3QpOiBE ZWZpbmUuCi0JKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogQWRkIFBvd2VyNyBzdXBwb3J0Lgot CShyczYwMDBfaXNzdWVfcmF0ZSk6IERpdHRvLgotCShpbnNuX211c3RfYmVfZmlyc3RfaW5fZ3Jv dXApOiBEaXR0by4KLQkoaW5zbl9tdXN0X2JlX2xhc3RfaW5fZ3JvdXApOiBEaXR0by4KLQkocnM2 MDAwX2VtaXRfcG9wY291bnQpOiBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgdGhlIHBvcGNudHcgYW5k Ci0JcG9wY250ZCBpbnN0cnVjdGlvbnMuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEFT TV9DUFVfUE9XRVI3X1NQRUMpOiBTd2l0Y2ggdG8gdXNpbmcKLQlwb3BjbnRkIGFzIHRoZSB0ZXN0 IGZvciBhIHBvd2VyNyBhc3NlbWJsZXIgaW5zdGVhZCBvZiB2ZWN0b3IKLQlzY2FsYXIgaW5zdHJ1 Y3Rpb25zLgotCSogKFRBUkdFVF9QT1BDTlREKTogSWYgYXNzZW1ibGVyIGRvZXMgbm90IHN1cHBv cnQgdGhlIHBvcGNudGQKLQlpbnN0cnVjdGlvbiwgZGlzYWJsZSB1c2luZyBpdC4KLQkocHJvY2Vz c29yX3R5cGUpOiBBZGQgUG93ZXI3IGVudHJ5LgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5t ZCAoZGVmaW5lX2F0dHIgImNwdSIpOiAgQWRkIHBvd2VyNy4KLQkocG93ZXI3Lm1kKTogSW5jbHVk ZSBpdC4KLQkoYW5kaS4vYW5kaXMuL25vci4gcGF0dGVybnMpOiBDaGFuZ2UgaW5zbiB0eXBlIHRv IGZhc3RfY29tcGFyZS4KLQkocG9wY250d3NpMik6IEFkZCBwb3BjbnR3IHN1cHBvcnQuCi0JKHBv cGNudGRkaTIpOiBBZGQgcG9wY250ZCBzdXBwb3J0LgotCi0yMDA5LTAzLTI3ICBKYWt1YiBKZWxp bmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRhcmdldC8zOTU1OAotCSogZ2NjLnRhcmdl dC9wb3dlcnBjL2FsdGl2ZWMtMjkuYzogTmV3IHRlc3QuCi0KLTIwMDktMDMtMjcgIE1pY2hhZWwg TWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGdjYy50YXJnZXQv cG93ZXJwYy92c3gtYnVpbHRpbi0xLmM6IEFkZCBtb3JlIFZTWCBidWlsdGlucy4KLQlQcmV2ZW50 IHRoZSBvcHRpbWl6ZXIgZnJvbSBjb21iaW5pbmcgdGhlIHZhcmlvdXMgbXVsdGlwbGllcy4KLQkq IGdjYy50YXJnZXQvcG93ZXJwYy92c3gtYnVpbHRpbi0yLmM6IERpdHRvLgotCi0yMDA5LTAzLTEz ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgotCi0JUFIg dGFyZ2V0LzM5NDU3Ci0JKiBnY2MudGFyZ2V0L3Bvd2VycGMvcHIzOTQ1Ny5jOiBOZXcgdGVzdCBm b3IgUFIzOTQ1Ny4KLQotMjAwOS0wMy0xMyAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxp bnV4LnZuZXQuaWJtLmNvbT4KLQotCSogZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC1idWlsdGluLTEu YzogTmV3IHRlc3QgZm9yIGJ1aWx0aW5zLgotCSogZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC1idWls dGluLTIuYzogRGl0dG8uCi0KLTIwMDktMDMtMDEgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25l ckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGdjYy50YXJnZXQvcG93ZXJwYy92c3gtdmVjdG9y LTEuYzogRml4IHR5cG9zLgotCSogZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC12ZWN0b3ItMi5jOiBE aXR0by4KLQotCSogZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC12ZWN0b3ItMy5jOiBOZXcgZmlsZSwg dGVzdCBfX3ZlY3RvcgotCWRvdWJsZS4KLQotCSogZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC12ZWN0 b3ItNC5jOiBOZXcgZmlsZSwgdGVzdCBfX3ZlY3RvciBmbG9hdAotCXVzZXMgVlNYIGluc3RydWN0 aW9ucyBpZiAtbXZzeC4KLQotCSogZ2NjLmRnL3ZteC92bXguZXhwIChERUZBVUxUX1ZNWENMRkFH Uyk6IEFkZCAtbW5vLXZzeC4KLQotCSogbGliL3RhcmdldC1zdXBwb3J0cy5leHAgKGNoZWNrX3Zz eF9od19hdmFpbGFibGUpOiBOZXcgZnVuY3Rpb24KLQl0byB0ZXN0IGZvciBWU1guCi0JKGNoZWNr X3ZteF9od19hdmFpbGFibGUpOiBBZGQgLW1uby12c3ggdG8gb3B0aW9ucy4KLQkoY2hlY2tfZWZm ZWN0aXZlX3RhcmdldF9wb3dlcnBjX3ZzeF9vayk6IE5ldyBmdW5jdGlvbiB0byBjaGVjayBpZgot CXRoZSBwb3dlcnBjIGNvbXBpbGVyIGNhbiBzdXBwb3J0IFZTWC4KLQotMjAwOS0wMi0yNyAgTWlj aGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogZ2NjLnRh cmdldC9wb3dlcnBjL3ZzeC12ZWN0b3ItMS5jOiBOZXcgZmlsZSB0byB0ZXN0IFZTWCBjb2RlCi0J Z2VuZXJhdGlvbi4KLQkqIGdjYy50YXJnZXQvcG93ZXJwYy92c3gtdmVjdG9yLTIuYzogRGl0dG8u Ci0KLTIwMDktMDItMDEgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJt LmNvbT4KLQotCSogZ2NjLnRhcmdldC9wb3dlcnBjL3BvcGNvdW50LTIuYzogTmV3IGZpbGUgZm9y IHBvd2VyNyBzdXBwb3J0LgotCSogZ2NjLnRhcmdldC9wb3dlcnBjL3BvcGNvdW50LTMuYzogRGl0 dG8uCi0KLS0tLSBnY2MvZG9jL2ludm9rZS50ZXhpCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3 NzcpCi0rKysgZ2NjL2RvYy9pbnZva2UudGV4aQkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVp c3NuZXIpCShyZXZpc2lvbiAxNDYwMjcpCi1AQCAtNzE1LDcgKzcxNSw4IEBAIFNlZSBSUy82MDAw IGFuZCBQb3dlclBDIE9wdGlvbnMuCi0gLW1hbHRpdmVjICAtbW5vLWFsdGl2ZWMgQGdvbAotIC1t cG93ZXJwYy1ncG9wdCAgLW1uby1wb3dlcnBjLWdwb3B0IEBnb2wKLSAtbXBvd2VycGMtZ2Z4b3B0 ICAtbW5vLXBvd2VycGMtZ2Z4b3B0IEBnb2wKLS0tbW1mY3JmICAtbW5vLW1mY3JmICAtbXBvcGNu dGIgIC1tbm8tcG9wY250YiAgLW1mcHJuZCAgLW1uby1mcHJuZCBAZ29sCi0rLW1tZmNyZiAgLW1u by1tZmNyZiAgLW1wb3BjbnRiICAtbW5vLXBvcGNudGIgLW1wb3BjbnRkIC1tbm8tcG9wY250ZCBA Z29sCi0rLW1mcHJuZCAgLW1uby1mcHJuZCBAZ29sCi0gLW1jbXBiIC1tbm8tY21wYiAtbW1mcGdw ciAtbW5vLW1mcGdwciAtbWhhcmQtZGZwIC1tbm8taGFyZC1kZnAgQGdvbAotIC1tbmV3LW1uZW1v bmljcyAgLW1vbGQtbW5lbW9uaWNzIEBnb2wKLSAtbWZ1bGwtdG9jICAgLW1taW5pbWFsLXRvYyAg LW1uby1mcC1pbi10b2MgIC1tbm8tc3VtLWluLXRvYyBAZ29sCi1AQCAtNzI5LDcgKzczMCw3IEBA IFNlZSBSUy82MDAwIGFuZCBQb3dlclBDIE9wdGlvbnMuCi0gLW1zdHJpY3QtYWxpZ24gIC1tbm8t c3RyaWN0LWFsaWduICAtbXJlbG9jYXRhYmxlIEBnb2wKLSAtbW5vLXJlbG9jYXRhYmxlICAtbXJl bG9jYXRhYmxlLWxpYiAgLW1uby1yZWxvY2F0YWJsZS1saWIgQGdvbAotIC1tdG9jICAtbW5vLXRv YyAgLW1saXR0bGUgIC1tbGl0dGxlLWVuZGlhbiAgLW1iaWcgIC1tYmlnLWVuZGlhbiBAZ29sCi0t LW1keW5hbWljLW5vLXBpYyAgLW1hbHRpdmVjICAtbXN3ZGl2IEBnb2wKLSstbWR5bmFtaWMtbm8t cGljICAtbWFsdGl2ZWMgLW1zd2RpdiBAZ29sCi0gLW1wcmlvcml0aXplLXJlc3RyaWN0ZWQtaW5z bnM9QHZhcntwcmlvcml0eX0gQGdvbAotIC1tc2NoZWQtY29zdGx5LWRlcD1AdmFye2RlcGVuZGVu Y2VfdHlwZX0gQGdvbAotIC1taW5zZXJ0LXNjaGVkLW5vcHM9QHZhcntzY2hlbWV9IEBnb2wKLUBA IC0xMzYxNCw2ICsxMzYxNSw4IEBAIFRoZXNlIEBzYW1wey1tfSBvcHRpb25zIGFyZSBkZWZpbmVk IGZvciAKLSBAaXRlbXggLW1uby1tZmNyZgotIEBpdGVteCAtbXBvcGNudGIKLSBAaXRlbXggLW1u by1wb3BjbnRiCi0rQGl0ZW14IC1tcG9wY250ZAotK0BpdGVteCAtbW5vLXBvcGNudGQKLSBAaXRl bXggLW1mcHJuZAotIEBpdGVteCAtbW5vLWZwcm5kCi0gQGl0ZW14IC1tY21wYgotQEAgLTEzNjM4 LDYgKzEzNjQxLDggQEAgVGhlc2UgQHNhbXB7LW19IG9wdGlvbnMgYXJlIGRlZmluZWQgZm9yIAot IEBvcGluZGV4IG1uby1tZmNyZgotIEBvcGluZGV4IG1wb3BjbnRiCi0gQG9waW5kZXggbW5vLXBv cGNudGIKLStAb3BpbmRleCBtcG9wY250ZAotK0BvcGluZGV4IG1uby1wb3BjbnRkCi0gQG9waW5k ZXggbWZwcm5kCi0gQG9waW5kZXggbW5vLWZwcm5kCi0gQG9waW5kZXggbWNtcGIKLUBAIC0xMzY4 Nyw2ICsxMzY5Miw5IEBAIFRoZSBAb3B0aW9uey1tcG9wY250Yn0gb3B0aW9uIGFsbG93cyBHQ0MK LSBkb3VibGUgcHJlY2lzaW9uIEZQIHJlY2lwcm9jYWwgZXN0aW1hdGUgaW5zdHJ1Y3Rpb24gaW1w bGVtZW50ZWQgb24gdGhlCi0gUE9XRVI1IHByb2Nlc3NvciBhbmQgb3RoZXIgcHJvY2Vzc29ycyB0 aGF0IHN1cHBvcnQgdGhlIFBvd2VyUEMgVjIuMDIKLSBhcmNoaXRlY3R1cmUuCi0rVGhlIEBvcHRp b257LW1wb3BjbnRkfSBvcHRpb24gYWxsb3dzIEdDQyB0byBnZW5lcmF0ZSB0aGUgcG9wY291bnQK LStpbnN0cnVjdGlvbiBpbXBsZW1lbnRlZCBvbiB0aGUgUE9XRVI3IHByb2Nlc3NvciBhbmQgb3Ro ZXIgcHJvY2Vzc29ycwotK3RoYXQgc3VwcG9ydCB0aGUgUG93ZXJQQyBWMi4wNiBhcmNoaXRlY3R1 cmUuCi0gVGhlIEBvcHRpb257LW1mcHJuZH0gb3B0aW9uIGFsbG93cyBHQ0MgdG8gZ2VuZXJhdGUg dGhlIEZQIHJvdW5kIHRvCi0gaW50ZWdlciBpbnN0cnVjdGlvbnMgaW1wbGVtZW50ZWQgb24gdGhl IFBPV0VSNSsgcHJvY2Vzc29yIGFuZCBvdGhlcgotIHByb2Nlc3NvcnMgdGhhdCBzdXBwb3J0IHRo ZSBQb3dlclBDIFYyLjAzIGFyY2hpdGVjdHVyZS4KLUBAIC0xMzc2NSw5ICsxMzc3Myw5IEBAIFRo ZSBAb3B0aW9uey1tY3B1fSBvcHRpb25zIGF1dG9tYXRpY2FsbHkKLSBmb2xsb3dpbmcgb3B0aW9u czoKLSAKLSBAZ2Njb3B0bGlzdHstbWFsdGl2ZWMgIC1tZnBybmQgIC1taGFyZC1mbG9hdCAgLW1t ZmNyZiAgLW1tdWx0aXBsZSBAZ29sCi0tLW1uZXctbW5lbW9uaWNzICAtbXBvcGNudGIgIC1tcG93 ZXIgIC1tcG93ZXIyICAtbXBvd2VycGM2NCBAZ29sCi0rLW1uZXctbW5lbW9uaWNzICAtbXBvcGNu dGIgLW1wb3BjbnRkICAtbXBvd2VyICAtbXBvd2VyMiAgLW1wb3dlcnBjNjQgQGdvbAotIC1tcG93 ZXJwYy1ncG9wdCAgLW1wb3dlcnBjLWdmeG9wdCAgLW1zaW5nbGUtZmxvYXQgLW1kb3VibGUtZmxv YXQgQGdvbAotLS1tc2ltcGxlLWZwdSAtbXN0cmluZyAgLW1tdWxodyAgLW1kbG16YiAgLW1tZnBn cHJ9Ci0rLW1zaW1wbGUtZnB1IC1tc3RyaW5nICAtbW11bGh3ICAtbWRsbXpiICAtbW1mcGdwciAt bXZzeH0KLSAKLSBUaGUgcGFydGljdWxhciBvcHRpb25zIHNldCBmb3IgYW55IHBhcnRpY3VsYXIg Q1BVIHdpbGwgdmFyeSBiZXR3ZWVuCi0gY29tcGlsZXIgdmVyc2lvbnMsIGRlcGVuZGluZyBvbiB3 aGF0IHNldHRpbmcgc2VlbXMgdG8gcHJvZHVjZSBvcHRpbWFsCi1AQCAtMTM4NjgsNiArMTM4NzYs MTQgQEAgaW5zdHJ1Y3Rpb25zLgotIFRoaXMgb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQuICBV c2UgQG9wdGlvbnstbXNwZX0gYW5kCi0gQG9wdGlvbnstbW5vLXNwZX0gaW5zdGVhZC4KLSAKLStA aXRlbSAtbXZzeAotK0BpdGVteCAtbW5vLXZzeAotK0BvcGluZGV4IG12c3gKLStAb3BpbmRleCBt bm8tdnN4Ci0rR2VuZXJhdGUgY29kZSB0aGF0IHVzZXMgKGRvZXMgbm90IHVzZSkgdmVjdG9yL3Nj YWxhciAoVlNYKQotK2luc3RydWN0aW9ucywgYW5kIGFsc28gZW5hYmxlIHRoZSB1c2Ugb2YgYnVp bHQtaW4gZnVuY3Rpb25zIHRoYXQgYWxsb3cKLSttb3JlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFZT WCBpbnN0cnVjdGlvbiBzZXQuCi0rCi0gQGl0ZW0gLW1mbG9hdC1ncHJzPUB2YXJ7eWVzL3Npbmds ZS9kb3VibGUvbm99Ci0gQGl0ZW14IC1tZmxvYXQtZ3BycwotIEBvcGluZGV4IG1mbG9hdC1ncHJz Ci0tLS0gZ2NjL2RvYy9tZC50ZXhpCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3NzcpCi0rKysg Z2NjL2RvYy9tZC50ZXhpCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlz aW9uIDE0NjAyNykKLUBAIC0xOTEzLDcgKzE5MTMsMTkgQEAgQWRkcmVzcyBiYXNlIHJlZ2lzdGVy Ci0gRmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIKLSAKLSBAaXRlbSB2Ci0tVmVjdG9yIHJlZ2lzdGVy Ci0rQWx0aXZlYyB2ZWN0b3IgcmVnaXN0ZXIKLSsKLStAaXRlbSB3ZAotK1ZTWCB2ZWN0b3IgcmVn aXN0ZXIgdG8gaG9sZCB2ZWN0b3IgZG91YmxlIGRhdGEKLSsKLStAaXRlbSB3ZgotK1ZTWCB2ZWN0 b3IgcmVnaXN0ZXIgdG8gaG9sZCB2ZWN0b3IgZmxvYXQgZGF0YQotKwotK0BpdGVtIHdzCi0rVlNY IHZlY3RvciByZWdpc3RlciB0byBob2xkIHNjYWxhciBmbG9hdCBkYXRhCi0rCi0rQGl0ZW0gd2EK LStBbnkgVlNYIHJlZ2lzdGVyCi0gCi0gQGl0ZW0gaAotIEBzYW1we01RfSwgQHNhbXB7Q1RSfSwg b3IgQHNhbXB7TElOS30gcmVnaXN0ZXIKLUBAIC0xOTk5LDYgKzIwMTEsOSBAQCBBTkQgbWFza3Mg dGhhdCBjYW4gYmUgcGVyZm9ybWVkIGJ5IHR3byByCi0gQGl0ZW0gVwotIFZlY3RvciBjb25zdGFu dCB0aGF0IGRvZXMgbm90IHJlcXVpcmUgbWVtb3J5Ci0gCi0rQGl0ZW0gagotK1ZlY3RvciBjb25z dGFudCB0aGF0IGlzIGFsbCB6ZXJvcy4KLSsKLSBAZW5kIHRhYmxlCi0gCi0gQGl0ZW0gSW50ZWwg Mzg2LS0tQGZpbGV7Y29uZmlnL2kzODYvY29uc3RyYWludHMubWR9Ci0tLS0gZ2NjL3JlbG9hZC5j CSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3NzcpCi0rKysgZ2NjL3JlbG9hZC5jCSguLi4vYnJh bmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NjAyNykKLUBAIC02MjU1LDgg KzYyNTUsMTQgQEAgc3Vic3RfcmVsb2FkcyAocnR4IGluc24pCi0gCSAgICAqci0+d2hlcmUgPSBy ZWxvYWRyZWc7Ci0gCX0KLSAgICAgICAvKiBJZiByZWxvYWQgZ290IG5vIHJlZyBhbmQgaXNuJ3Qg b3B0aW9uYWwsIHNvbWV0aGluZydzIHdyb25nLiAgKi8KLS0gICAgICBlbHNlCi0tCWdjY19hc3Nl cnQgKHJsZFtyLT53aGF0XS5vcHRpb25hbCk7Ci0rICAgICAgZWxzZSBpZiAoIXJsZFtyLT53aGF0 XS5vcHRpb25hbCkKLSsJewotKwkgIGNoYXIgYnVmZmVyWzEwMF07Ci0rCSAgc3ByaW50ZiAoYnVm ZmVyLAotKwkJICAgInVuYWJsZSB0byBmaW5kIHJlZ2lzdGVyIGZvciByZWxvYWQsIHJlcGxhY2Vt ZW50ICMlZCIsCi0rCQkgICBpKTsKLSsJICBmYXRhbF9pbnNuIChidWZmZXIsIGluc24pOwotKwl9 Ci0gICAgIH0KLSB9Ci0gDAotLS0tIGdjYy9jb25maWd1cmUJKC4uLi90cnVuaykJKHJldmlzaW9u IDE0NTc3NykKLSsrKyBnY2MvY29uZmlndXJlCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlz c25lcikJKHJldmlzaW9uIDE0NjAyNykKLUBAIC0yMzA3NSw3ICsyMzA3NSw3IEBAIGlmIHRlc3Qg IiR7Z2NjX2N2X2FzX3Bvd2VycGNfbWZwZ3ByK3NldH0KLSBlbHNlCi0gICBnY2NfY3ZfYXNfcG93 ZXJwY19tZnBncHI9bm8KLSAgICAgaWYgdGVzdCAkaW5fdHJlZV9nYXMgPSB5ZXM7IHRoZW4KLS0g ICAgaWYgdGVzdCAkZ2NjX2N2X2dhc192ZXJzIC1nZSBgZXhwciBcKCBcKCA5IFwqIDEwMDAgXCkg KyA5OSBcKSBcKiAxMDAwICsgMGAKLSsgICAgaWYgdGVzdCAkZ2NjX2N2X2dhc192ZXJzIC1nZSBg ZXhwciBcKCBcKCAyIFwqIDEwMDAgXCkgKyAxOSBcKSBcKiAxMDAwICsgMmAKLSAgIHRoZW4gZ2Nj X2N2X2FzX3Bvd2VycGNfbWZwZ3ByPXllcwotIGZpCi0gICBlbGlmIHRlc3QgeCRnY2NfY3ZfYXMg IT0geDsgdGhlbgotQEAgLTIzMTcxLDcgKzIzMTcxLDcgQEAgaWYgdGVzdCAiJHtnY2NfY3ZfYXNf cG93ZXJwY19jbXBiK3NldH0iIAotIGVsc2UKLSAgIGdjY19jdl9hc19wb3dlcnBjX2NtcGI9bm8K LSAgICAgaWYgdGVzdCAkaW5fdHJlZV9nYXMgPSB5ZXM7IHRoZW4KLS0gICAgaWYgdGVzdCAkZ2Nj X2N2X2dhc192ZXJzIC1nZSBgZXhwciBcKCBcKCA5IFwqIDEwMDAgXCkgKyA5OSBcKSBcKiAxMDAw ICsgMGAKLSsgICAgaWYgdGVzdCAkZ2NjX2N2X2dhc192ZXJzIC1nZSBgZXhwciBcKCBcKCAyIFwq IDEwMDAgXCkgKyAxOSBcKSBcKiAxMDAwICsgMmAKLSAgIHRoZW4gZ2NjX2N2X2FzX3Bvd2VycGNf Y21wYj15ZXMKLSBmaQotICAgZWxpZiB0ZXN0IHgkZ2NjX2N2X2FzICE9IHg7IHRoZW4KLUBAIC0y MzIxNyw3ICsyMzIxNyw3IEBAIGlmIHRlc3QgIiR7Z2NjX2N2X2FzX3Bvd2VycGNfZGZwK3NldH0i ID0KLSBlbHNlCi0gICBnY2NfY3ZfYXNfcG93ZXJwY19kZnA9bm8KLSAgICAgaWYgdGVzdCAkaW5f dHJlZV9nYXMgPSB5ZXM7IHRoZW4KLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2dhc192ZXJzIC1nZSBg ZXhwciBcKCBcKCA5IFwqIDEwMDAgXCkgKyA5OSBcKSBcKiAxMDAwICsgMGAKLSsgICAgaWYgdGVz dCAkZ2NjX2N2X2dhc192ZXJzIC1nZSBgZXhwciBcKCBcKCAyIFwqIDEwMDAgXCkgKyAxOSBcKSBc KiAxMDAwICsgMmAKLSAgIHRoZW4gZ2NjX2N2X2FzX3Bvd2VycGNfZGZwPXllcwotIGZpCi0gICBl bGlmIHRlc3QgeCRnY2NfY3ZfYXMgIT0geDsgdGhlbgotQEAgLTIzMjYzLDcgKzIzMjYzLDcgQEAg aWYgdGVzdCAiJHtnY2NfY3ZfYXNfcG93ZXJwY192c3grc2V0fSIgPQotIGVsc2UKLSAgIGdjY19j dl9hc19wb3dlcnBjX3ZzeD1ubwotICAgICBpZiB0ZXN0ICRpbl90cmVlX2dhcyA9IHllczsgdGhl bgotLSAgICBpZiB0ZXN0ICRnY2NfY3ZfZ2FzX3ZlcnMgLWdlIGBleHByIFwoIFwoIDkgXCogMTAw MCBcKSArIDk5IFwpIFwqIDEwMDAgKyAwYAotKyAgICBpZiB0ZXN0ICRnY2NfY3ZfZ2FzX3ZlcnMg LWdlIGBleHByIFwoIFwoIDIgXCogMTAwMCBcKSArIDE5IFwpIFwqIDEwMDAgKyAyYAotICAgdGhl biBnY2NfY3ZfYXNfcG93ZXJwY192c3g9eWVzCi0gZmkKLSAgIGVsaWYgdGVzdCB4JGdjY19jdl9h cyAhPSB4OyB0aGVuCi1AQCAtMjMyOTMsNiArMjMyOTMsNTIgQEAgX0FDRU9GCi0gCi0gZmkKLSAK LSsgICAgY2FzZSAkdGFyZ2V0IGluCi0rICAgICAgKi0qLWFpeCopIGNvbmZ0ZXN0X3M9JwkubWFj aGluZSAicHdyNyIKLSsJLmNzZWN0IC50ZXh0W1BSXQotKwlwb3BjbnRkIDMsMyc7OwotKyAgICAg ICopIGNvbmZ0ZXN0X3M9JwkubWFjaGluZSBwb3dlcjcKLSsJLnRleHQKLSsJcG9wY250ZCAzLDMn OzsKLSsgICAgZXNhYwotKwotKyAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgYXNz ZW1ibGVyIGZvciBwb3BjbnRkIHN1cHBvcnQiID4mNQotK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcg YXNzZW1ibGVyIGZvciBwb3BjbnRkIHN1cHBvcnQuLi4gJEVDSE9fQyIgPiY2Ci0raWYgdGVzdCAi JHtnY2NfY3ZfYXNfcG93ZXJwY19wb3BjbnRkK3NldH0iID0gc2V0OyB0aGVuCi0rICBlY2hvICRF Q0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2Vsc2UKLSsgIGdjY19jdl9hc19wb3dlcnBj X3BvcGNudGQ9bm8KLSsgICAgaWYgdGVzdCAkaW5fdHJlZV9nYXMgPSB5ZXM7IHRoZW4KLSsgICAg aWYgdGVzdCAkZ2NjX2N2X2dhc192ZXJzIC1nZSBgZXhwciBcKCBcKCAyIFwqIDEwMDAgXCkgKyAx OSBcKSBcKiAxMDAwICsgMmAKLSsgIHRoZW4gZ2NjX2N2X2FzX3Bvd2VycGNfcG9wY250ZD15ZXMK LStmaQotKyAgZWxpZiB0ZXN0IHgkZ2NjX2N2X2FzICE9IHg7IHRoZW4KLSsgICAgZWNobyAiJGNv bmZ0ZXN0X3MiID4gY29uZnRlc3QucwotKyAgICBpZiB7IGFjX3RyeT0nJGdjY19jdl9hcyAtYTMy IC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QucyA+JjUnCi0rICB7IChldmFsIGVjaG8gIiRhc19tZTok TElORU5POiBcIiRhY190cnlcIiIpID4mNQotKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNf c3RhdHVzPSQ/Ci0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1 Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfQotKyAgICB0aGVuCi0rCWdjY19jdl9hc19wb3dl cnBjX3BvcGNudGQ9eWVzCi0rICAgIGVsc2UKLSsgICAgICBlY2hvICJjb25maWd1cmU6IGZhaWxl ZCBwcm9ncmFtIHdhcyIgPiY1Ci0rICAgICAgY2F0IGNvbmZ0ZXN0LnMgPiY1Ci0rICAgIGZpCi0r ICAgIHJtIC1mIGNvbmZ0ZXN0Lm8gY29uZnRlc3QucwotKyAgZmkKLStmaQotK2VjaG8gIiRhc19t ZTokTElORU5POiByZXN1bHQ6ICRnY2NfY3ZfYXNfcG93ZXJwY19wb3BjbnRkIiA+JjUKLStlY2hv ICIke0VDSE9fVH0kZ2NjX2N2X2FzX3Bvd2VycGNfcG9wY250ZCIgPiY2Ci0raWYgdGVzdCAkZ2Nj X2N2X2FzX3Bvd2VycGNfcG9wY250ZCA9IHllczsgdGhlbgotKwotK2NhdCA+PmNvbmZkZWZzLmgg PDxcX0FDRU9GCi0rI2RlZmluZSBIQVZFX0FTX1BPUENOVEQgMQotK19BQ0VPRgotKwotK2ZpCi0r Ci0gICAgIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBhc3NlbWJsZXIgZm9yIC5nbnVf YXR0cmlidXRlIHN1cHBvcnQiID4mNQotIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgYXNzZW1ibGVy IGZvciAuZ251X2F0dHJpYnV0ZSBzdXBwb3J0Li4uICRFQ0hPX0MiID4mNgotIGlmIHRlc3QgIiR7 Z2NjX2N2X2FzX3Bvd2VycGNfZ251X2F0dHJpYnV0ZStzZXR9IiA9IHNldDsgdGhlbgotLS0tIGdj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC1idWlsdGluLTIuYwkoLi4uL3RydW5r KQkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy92c3gt YnVpbHRpbi0yLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24g MTQ2MDI3KQotQEAgLTAsMCArMSw0MiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7 IHBvd2VycGMqLSotKiB9IH0gfSAqLwotKy8qIHsgZGctc2tpcC1pZiAiIiB7IHBvd2VycGMqLSot ZGFyd2luKiB9IHsgIioiIH0geyAiIiB9IH0gKi8KLSsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZl LXRhcmdldCBwb3dlcnBjX3ZzeF9vayB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1jcHU9 cG93ZXI3IiB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFkZHNwIiB9 IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2c3Vic3AiIH0gfSAqLwot Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZtdWxzcCIgfSB9ICovCi0rLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1hZGQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAieHZtc3ViIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgInh2bm1hZGQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAieHZubXN1YiIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmRp dnNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2bWF4c3AiIH0g fSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZtaW5zcCIgfSB9ICovCi0r LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dnNxcnRzcCIgfSB9ICovCi0rLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFic3NwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgInh2bmFic3NwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgInh2cmVzcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ4dnJzcXJ0ZXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg Inh2dHNxcnRzcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dnRk aXZzcCIgfSB9ICovCi0rCi0rdm9pZCB1c2VfYnVpbHRpbnMgKF9fdmVjdG9yIGZsb2F0ICpwLCBf X3ZlY3RvciBmbG9hdCAqcSwgX192ZWN0b3IgZmxvYXQgKnIsIF9fdmVjdG9yIGZsb2F0ICpzKQot K3sKLSsgIHBbMF0gPSBfX2J1aWx0aW5fdnN4X3h2YWRkc3AgKHFbMF0sIHJbMF0pOwotKyAgcFsx XSA9IF9fYnVpbHRpbl92c3hfeHZzdWJzcCAocVsxXSwgclsxXSk7Ci0rICBwWzJdID0gX19idWls dGluX3ZzeF94dm11bHNwIChxWzJdLCByWzJdKTsKLSsgIHBbM10gPSBfX2J1aWx0aW5fdnN4X3h2 ZGl2c3AgKHFbM10sIHJbM10pOwotKyAgcFs0XSA9IF9fYnVpbHRpbl92c3hfeHZtYXhzcCAocVs0 XSwgcls0XSk7Ci0rICBwWzVdID0gX19idWlsdGluX3ZzeF94dm1pbnNwIChxWzVdLCByWzVdKTsK LSsgIHBbNl0gPSBfX2J1aWx0aW5fdnN4X3h2YWJzc3AgKHFbNl0pOwotKyAgcFs3XSA9IF9fYnVp bHRpbl92c3hfeHZuYWJzc3AgKHFbN10pOwotKyAgcFs4XSA9IF9fYnVpbHRpbl92c3hfeHZzcXJ0 c3AgKHFbOF0pOwotKyAgcFs5XSA9IF9fYnVpbHRpbl92c3hfeHZtYWRkc3AgKHFbOV0sIHJbOV0s IHNbOV0pOwotKyAgcFsxMF0gPSBfX2J1aWx0aW5fdnN4X3h2bXN1YnNwIChxWzEwXSwgclsxMF0s IHNbMTBdKTsKLSsgIHBbMTFdID0gX19idWlsdGluX3ZzeF94dm5tYWRkc3AgKHFbMTFdLCByWzEx XSwgc1sxMV0pOwotKyAgcFsxMl0gPSBfX2J1aWx0aW5fdnN4X3h2bm1zdWJzcCAocVsxMl0sIHJb MTJdLCBzWzEyXSk7Ci0rICBwWzEzXSA9IF9fYnVpbHRpbl92c3hfeHZyZXNwIChxWzEzXSk7Ci0r ICBwWzE0XSA9IF9fYnVpbHRpbl92c3hfeHZyc3FydGVzcCAocVsxNF0pOwotKyAgcFsxNV0gPSBf X2J1aWx0aW5fdnN4X3h2dHNxcnRzcCAocVsxNV0pOwotKyAgcFsxNl0gPSBfX2J1aWx0aW5fdnN4 X3h2dGRpdnNwIChxWzE2XSwgclsxNl0pOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcG93ZXJwYy9wb3Bjb3VudC0zLmMJKC4uLi90cnVuaykJKHJldmlzaW9uIDApCi0rKysgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcG9wY291bnQtMy5jCSguLi4vYnJhbmNoZXMv aWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NjAyNykKLUBAIC0wLDAgKzEsOSBAQAot Ky8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IHBvd2VycGMqLSotKiAmJiBscDY0IH0gfSB9 ICovCi0rLyogeyBkZy1za2lwLWlmICIiIHsgcG93ZXJwYyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7 ICIiIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tY3B1PXBvd2VyNyAtbTY0IiB9ICov Ci0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwb3BjbnRkIiB9IH0gKi8KLSsKLSts b25nIGZvbyhpbnQgeCkKLSt7Ci0rICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50bCh4KTsKLSt9 Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0xLmMJKC4u Li90cnVuaykJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2Vy cGMvdnN4LXZlY3Rvci0xLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2 aXNpb24gMTQ2MDI3KQotQEAgLTAsMCArMSw3NCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRh cmdldCB7IHBvd2VycGMqLSotKiAmJiBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1za2lwLWlmICIi IHsgcG93ZXJwYyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7ICIiIH0gfSAqLwotKy8qIHsgZGctcmVx dWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHBvd2VycGNfdnN4X29rIH0gKi8KLSsvKiB7IGRnLW9wdGlv bnMgIi1PMiAtZnRyZWUtdmVjdG9yaXplIC1tY3B1PXBvd2VyNyAtbTY0IiB9ICovCi0rLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFkZGRwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgInh2c3ViZHAiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAieHZtdWxkcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ4dmRpdmRwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2 bWFkZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1zdWIiIH0g fSAqLwotKwotKyNpZm5kZWYgU0laRQotKyNkZWZpbmUgU0laRSAxMDI0Ci0rI2VuZGlmCi0rCi0r ZG91YmxlIGFbU0laRV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Ci0rZG91Ymxl IGJbU0laRV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Ci0rZG91YmxlIGNbU0la RV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Ci0rZG91YmxlIGRbU0laRV0gX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Ci0rZG91YmxlIGVbU0laRV0gX19hdHRyaWJ1 dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Ci0rCi0rdm9pZAotK3ZlY3Rvcl9hZGQgKHZvaWQpCi0r ewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQotKyAgICBhW2ld ID0gYltpXSArIGNbaV07Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3Jfc3VidHJhY3QgKHZvaWQpCi0r ewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQotKyAgICBhW2ld ID0gYltpXSAtIGNbaV07Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3JfbXVsdGlwbHkgKHZvaWQpCi0r ewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQotKyAgICBhW2ld ID0gYltpXSAqIGNbaV07Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3JfbXVsdGlwbHlfYWRkICh2b2lk KQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKLSsgICAg YVtpXSA9IChiW2ldICogY1tpXSkgKyBkW2ldOwotK30KLSsKLSt2b2lkCi0rdmVjdG9yX211bHRp cGx5X3N1YnRyYWN0ICh2b2lkKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8 IFNJWkU7IGkrKykKLSsgICAgYVtpXSA9IChiW2ldICogY1tpXSkgLSBkW2ldOwotK30KLSsKLSt2 b2lkCi0rdmVjdG9yX2RpdmlkZSAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9 IDA7IGkgPCBTSVpFOyBpKyspCi0rICAgIGFbaV0gPSBiW2ldIC8gY1tpXTsKLSt9Ci0tLS0gZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0yLmMJKC4uLi90cnVuaykJ KHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZl Y3Rvci0yLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2 MDI3KQotQEAgLTAsMCArMSw3NCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IHBv d2VycGMqLSotKiAmJiBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1za2lwLWlmICIiIHsgcG93ZXJw YyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7ICIiIH0gfSAqLwotKy8qIHsgZGctcmVxdWlyZS1lZmZl Y3RpdmUtdGFyZ2V0IHBvd2VycGNfdnN4X29rIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAt ZnRyZWUtdmVjdG9yaXplIC1tY3B1PXBvd2VyNyAtbTY0IiB9ICovCi0rLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJ4dmFkZHNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgInh2c3Vic3AiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAieHZtdWxzcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmRp dnNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2bWFkZCIgfSB9 ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1zdWIiIH0gfSAqLwotKwot KyNpZm5kZWYgU0laRQotKyNkZWZpbmUgU0laRSAxMDI0Ci0rI2VuZGlmCi0rCi0rZmxvYXQgYVtT SVpFXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygzMikpKTsKLStmbG9hdCBiW1NJWkVdIF9f YXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDMyKSkpOwotK2Zsb2F0IGNbU0laRV0gX19hdHRyaWJ1 dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Ci0rZmxvYXQgZFtTSVpFXSBfX2F0dHJpYnV0ZV9fKChf X2FsaWduZWRfXygzMikpKTsKLStmbG9hdCBlW1NJWkVdIF9fYXR0cmlidXRlX18oKF9fYWxpZ25l ZF9fKDMyKSkpOwotKwotK3ZvaWQKLSt2ZWN0b3JfYWRkICh2b2lkKQotK3sKLSsgIGludCBpOwot KwotKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKLSsgICAgYVtpXSA9IGJbaV0gKyBjW2ld OwotK30KLSsKLSt2b2lkCi0rdmVjdG9yX3N1YnRyYWN0ICh2b2lkKQotK3sKLSsgIGludCBpOwot KwotKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKLSsgICAgYVtpXSA9IGJbaV0gLSBjW2ld OwotK30KLSsKLSt2b2lkCi0rdmVjdG9yX211bHRpcGx5ICh2b2lkKQotK3sKLSsgIGludCBpOwot KwotKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKLSsgICAgYVtpXSA9IGJbaV0gKiBjW2ld OwotK30KLSsKLSt2b2lkCi0rdmVjdG9yX211bHRpcGx5X2FkZCAodm9pZCkKLSt7Ci0rICBpbnQg aTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyBpKyspCi0rICAgIGFbaV0gPSAoYltpXSAq IGNbaV0pICsgZFtpXTsKLSt9Ci0rCi0rdm9pZAotK3ZlY3Rvcl9tdWx0aXBseV9zdWJ0cmFjdCAo dm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyBpKyspCi0r ICAgIGFbaV0gPSAoYltpXSAqIGNbaV0pIC0gZFtpXTsKLSt9Ci0rCi0rdm9pZAotK3ZlY3Rvcl9k aXZpZGUgKHZvaWQpCi0rewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgU0laRTsg aSsrKQotKyAgICBhW2ldID0gYltpXSAvIGNbaV07Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9wb3dlcnBjL3ByMzk0NTcuYwkoLi4uL3RydW5rKQkocmV2aXNpb24gMCkKLSsrKyBn Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wcjM5NDU3LmMJKC4uLi9icmFuY2hlcy9p Ym0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTAsMCArMSw1NiBAQAot Ky8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IHBvd2VycGMqLSotKiAmJiBscDY0IH0gfSB9 ICovCi0rLyogeyBkZy1vcHRpb25zICItbTY0IC1PMiAtbW1pbmltYWwtdG9jIiB9ICovCi0rCi0r LyogUFIgMzk0NTcgLS0gZml4IGJyZWFrYWdlIGJlY2F1c2UgdGhlIGNvbXBpbGVyIHJhbiBvdXQg b2YgcmVnaXN0ZXJzIGFuZAotKyAgIHdhbnRlZCB0byBzdGFzaCBhIGZsb2F0aW5nIHBvaW50IHZh bHVlIHRvIHRoZSBMUi9DVFIgcmVnaXN0ZXIuICAqLwotKwotKy8qIC1PMiAtbTY0IC1tbWluaW1h bC10b2MgKi8KLSt0eXBlZGVmIHN0cnVjdCB7IHZvaWQgKnM7IH0gUzsKLSt0eXBlZGVmIHZvaWQg KCpUMSkgKHZvaWQpOwotK3R5cGVkZWYgdm9pZCAoKlQyKSAodm9pZCAqLCB2b2lkICosIGludCwg dm9pZCAqKTsKLStjaGFyICpmbjEgKGNvbnN0IGNoYXIgKiwgLi4uKTsKLSt2b2lkICpmbjIgKHZv aWQpOwotK2ludCBmbjMgKGNoYXIgKiwgaW50KTsKLStpbnQgZm40IChjb25zdCB2b2lkICopOwot K2ludCBmbjUgKGNvbnN0IHZvaWQgKik7Ci0rbG9uZyBmbjYgKHZvaWQpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsKLStpbnQgZm43ICh2b2lkICosIHZvaWQgKiwgdm9pZCAqKTsKLSt2b2lk ICpmbjggKHZvaWQgKiwgbG9uZyk7Ci0rdm9pZCAqZm45ICh2b2lkICosIGxvbmcsIGNvbnN0IGNo YXIgKiwgLi4uKTsKLSt2b2lkICpmbjEwICh2b2lkICopOwotK2xvbmcgZm4xMSAodm9pZCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwotK2xvbmcgZm4xMiAodm9pZCAqLCBjb25zdCBjaGFy ICosIFQxLCBUMiwgdm9pZCAqKTsKLSt2b2lkICpmbjEzICh2b2lkICopOwotK2xvbmcgZm4xNCAo dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwotK2V4dGVybiB2b2lkICp2MTsKLStl eHRlcm4gY2hhciAqdjI7Ci0rZXh0ZXJuIGludCB2MzsKLSsKLSt2b2lkCi0rZm9vICh2b2lkICp4 LCBjaGFyICp6KQotK3sKLSsgIHZvaWQgKmkxLCAqaTI7Ci0rICBpbnQgeTsKLSsgIGlmICh2MSkK LSsgICAgcmV0dXJuOwotKyAgdjEgPSBmbjkgKGZuMTAgKGZuMiAoKSksIGZuNiAoKSwgIngiLCAw LiwgInkiLCAwLiwgMCk7Ci0rICB5ID0gNTIwIC0gKDUyMCAtIGZuNCAoeCkpIC8gMjsKLSsgIGZu OSAoZm44ICh2MSwgZm42ICgpKSwgZm42ICgpLCAid2lnIiwgZm44ICh2MSwgZm4xNCAoKSksICJ4 IiwgMTguMCwKLSsgICAgICAgInkiLCAxNi4wLCAid2lkIiwgODAuMCwgImhpIiwgNTAwLjAsIDAp OwotKyAgZm45IChmbjEwICh2MSksIGZuNiAoKSwgIngxIiwgMC4sICJ5MSIsIDAuLCAieDIiLCA4 MC4wLCAieTIiLAotKyAgICAgICA1MDAuMCwgImYiLCBmbjMgKCJmZmYiLCAweDBEMERGQTAwKSwg MCk7Ci0rICBmbjEzICgoKFMgKikgZm44ICh2MSwgZm42ICgpKSktPnMpOwotKyAgZm4xMiAoZm44 ICh2MSwgZm4xMSAoKSksICJldiIsIChUMSkgZm43LCAwLCBmbjggKHYxLCBmbjYgKCkpKTsKLSsg IGZuOSAoZm44ICh2MSwgZm42ICgpKSwgZm42ICgpLCAid2lnIiwKLSsgICAgICAgZm44ICh2MSwg Zm4xNCAoKSksICJ4IiwgMTExLjAsICJ5IiwgMTQuMCwgIndpZCIsIDc3NC4wLCAiaGkiLAotKyAg ICAgICA1MDAuMCwgMCk7Ci0rICB2MSA9IGZuOSAoZm4xMCAodjEpLCBmbjYgKCksICJ4MSIsIDAu LCAieTEiLCAwLiwgIngyIiwgNzc0LjAsICJ5MiIsCi0rICAgICAgICAgICAgNTAwLjAsICJmIiwg Zm4zICgiZ2MiLCAweDBEMERGQTAwKSwgMCk7Ci0rICBmbjEgKHosIDApOwotKyAgaTEgPSBmbjkg KGZuOCAodjEsIGZuNiAoKSksIGZuNiAoKSwgInBpeGJ1ZiIsIHgsICJ4IiwKLSsgICAgICAgICAg ICA4MDAgLSBmbjUgKHgpIC8gMiwgInkiLCB5IC0gZm40ICh4KSwgMCk7Ci0rICBmbjEyIChmbjgg KGkxLCBmbjExICgpKSwgImV2IiwgKFQxKSBmbjcsIDAsICIvb2svIik7Ci0rICBmbjEyIChmbjgg KGkxLCBmbjExICgpKSwgImV2IiwgKFQxKSBmbjcsIDAsIDApOwotKyAgaTIgPSBmbjkgKGZuOCAo djEsIGZuNiAoKSksIGZuNiAoKSwgInR4dCIsICJPSyIsICJmbnQiLCB2MiwgIngiLAotKyAgICAg ICAgICAgIDgwMCwgInkiLCB5IC0gZm40ICh4KSArIDE1LCAiYXIiLCAwLCAiZiIsIHYzLCAwKTsK LSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0zLmMJ KC4uLi90cnVuaykJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bv d2VycGMvdnN4LXZlY3Rvci0zLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQko cmV2aXNpb24gMTQ2MDI3KQotQEAgLTAsMCArMSw0OCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7 IHRhcmdldCB7IHBvd2VycGMqLSotKiAmJiBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1za2lwLWlm ICIiIHsgcG93ZXJwYyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7ICIiIH0gfSAqLwotKy8qIHsgZGct cmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHBvd2VycGNfdnN4X29rIH0gKi8KLSsvKiB7IGRnLW9w dGlvbnMgIi1PMiAtZnRyZWUtdmVjdG9yaXplIC1tY3B1PXBvd2VyNyAtbTY0IiB9ICovCi0rLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFkZGRwIiB9IH0gKi8KLSsvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2c3ViZHAiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAieHZtdWxkcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJ4dmRpdmRwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg Inh2bWFkZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1zdWIi IH0gfSAqLwotKwotK19fdmVjdG9yIGRvdWJsZSBhLCBiLCBjLCBkOwotKwotK3ZvaWQKLSt2ZWN0 b3JfYWRkICh2b2lkKQotK3sKLSsgIGEgPSBiICsgYzsKLSt9Ci0rCi0rdm9pZAotK3ZlY3Rvcl9z dWJ0cmFjdCAodm9pZCkKLSt7Ci0rICBhID0gYiAtIGM7Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3Jf bXVsdGlwbHkgKHZvaWQpCi0rewotKyAgYSA9IGIgKiBjOwotK30KLSsKLSt2b2lkCi0rdmVjdG9y X211bHRpcGx5X2FkZCAodm9pZCkKLSt7Ci0rICBhID0gKGIgKiBjKSArIGQ7Ci0rfQotKwotK3Zv aWQKLSt2ZWN0b3JfbXVsdGlwbHlfc3VidHJhY3QgKHZvaWQpCi0rewotKyAgYSA9IChiICogYykg LSBkOwotK30KLSsKLSt2b2lkCi0rdmVjdG9yX2RpdmlkZSAodm9pZCkKLSt7Ci0rICBhID0gYiAv IGM7Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC1idWlsdGlu LTEuYwkoLi4uL3RydW5rKQkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcG93ZXJwYy92c3gtYnVpbHRpbi0xLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNz bmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTAsMCArMSw0MiBAQAotKy8qIHsgZGctZG8gY29t cGlsZSB7IHRhcmdldCB7IHBvd2VycGMqLSotKiB9IH0gfSAqLwotKy8qIHsgZGctc2tpcC1pZiAi IiB7IHBvd2VycGMqLSotZGFyd2luKiB9IHsgIioiIH0geyAiIiB9IH0gKi8KLSsvKiB7IGRnLXJl cXVpcmUtZWZmZWN0aXZlLXRhcmdldCBwb3dlcnBjX3ZzeF9vayB9ICovCi0rLyogeyBkZy1vcHRp b25zICItTzIgLW1jcHU9cG93ZXI3IiB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ4dmFkZGRwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2 c3ViZHAiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZtdWxkcCIg fSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1hZGQiIH0gfSAqLwot Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZtc3ViIiB9IH0gKi8KLSsvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2bm1hZGQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAieHZubXN1YiIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJ4dmRpdmRwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgInh2bWF4ZHAiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZt aW5kcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dnNxcnRkcCIg fSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dnJzcXJ0ZWRwIiB9IH0g Ki8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2dHNxcnRkcCIgfSB9ICovCi0r LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFic2RwIiB9IH0gKi8KLSsvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2bmFic2RwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgInh2cmVkcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJ4dnRkaXZkcCIgfSB9ICovCi0rCi0rdm9pZCB1c2VfYnVpbHRpbnMgKF9fdmVj dG9yIGRvdWJsZSAqcCwgX192ZWN0b3IgZG91YmxlICpxLCBfX3ZlY3RvciBkb3VibGUgKnIsIF9f dmVjdG9yIGRvdWJsZSAqcykKLSt7Ci0rICBwWzBdID0gX19idWlsdGluX3ZzeF94dmFkZGRwIChx WzBdLCByWzBdKTsKLSsgIHBbMV0gPSBfX2J1aWx0aW5fdnN4X3h2c3ViZHAgKHFbMV0sIHJbMV0p OwotKyAgcFsyXSA9IF9fYnVpbHRpbl92c3hfeHZtdWxkcCAocVsyXSwgclsyXSk7Ci0rICBwWzNd ID0gX19idWlsdGluX3ZzeF94dmRpdmRwIChxWzNdLCByWzNdKTsKLSsgIHBbNF0gPSBfX2J1aWx0 aW5fdnN4X3h2bWF4ZHAgKHFbNF0sIHJbNF0pOwotKyAgcFs1XSA9IF9fYnVpbHRpbl92c3hfeHZt aW5kcCAocVs1XSwgcls1XSk7Ci0rICBwWzZdID0gX19idWlsdGluX3ZzeF94dmFic2RwIChxWzZd KTsKLSsgIHBbN10gPSBfX2J1aWx0aW5fdnN4X3h2bmFic2RwIChxWzddKTsKLSsgIHBbOF0gPSBf X2J1aWx0aW5fdnN4X3h2c3FydGRwIChxWzhdKTsKLSsgIHBbOV0gPSBfX2J1aWx0aW5fdnN4X3h2 bWFkZGRwIChxWzldLCByWzldLCBzWzldKTsKLSsgIHBbMTBdID0gX19idWlsdGluX3ZzeF94dm1z dWJkcCAocVsxMF0sIHJbMTBdLCBzWzEwXSk7Ci0rICBwWzExXSA9IF9fYnVpbHRpbl92c3hfeHZu bWFkZGRwIChxWzExXSwgclsxMV0sIHNbMTFdKTsKLSsgIHBbMTJdID0gX19idWlsdGluX3ZzeF94 dm5tc3ViZHAgKHFbMTJdLCByWzEyXSwgc1sxMl0pOwotKyAgcFsxM10gPSBfX2J1aWx0aW5fdnN4 X3h2cmVkcCAocVsxM10pOwotKyAgcFsxNF0gPSBfX2J1aWx0aW5fdnN4X3h2cnNxcnRlZHAgKHFb MTRdKTsKLSsgIHBbMTVdID0gX19idWlsdGluX3ZzeF94dnRzcXJ0ZHAgKHFbMTVdKTsKLSsgIHBb MTZdID0gX19idWlsdGluX3ZzeF94dnRkaXZkcCAocVsxNl0sIHJbMTZdKTsKLSt9Ci0tLS0gZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcG9wY291bnQtMi5jCSguLi4vdHJ1bmspCShy ZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3BvcGNvdW50 LTIuYwkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDYwMjcp Ci1AQCAtMCwwICsxLDkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBpbHAzMiB9 IH0gfSAqLwotKy8qIHsgZGctc2tpcC1pZiAiIiB7IHBvd2VycGMqLSotZGFyd2luKiB9IHsgIioi IH0geyAiIiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWNwdT1wb3dlcjcgLW0zMiIg fSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicG9wY250dyIgfSB9ICovCi0r Ci0raW50IGZvbyhpbnQgeCkKLSt7Ci0rICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50KHgpOwot K30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy92c3gtdmVjdG9yLTQuYwko Li4uL3RydW5rKQkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93 ZXJwYy92c3gtdmVjdG9yLTQuYwkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShy ZXZpc2lvbiAxNDYwMjcpCi1AQCAtMCwwICsxLDQ4IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsg dGFyZ2V0IHsgcG93ZXJwYyotKi0qICYmIGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLXNraXAtaWYg IiIgeyBwb3dlcnBjKi0qLWRhcndpbiogfSB7ICIqIiB9IHsgIiIgfSB9ICovCi0rLyogeyBkZy1y ZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgcG93ZXJwY192c3hfb2sgfSAqLwotKy8qIHsgZGctb3B0 aW9ucyAiLU8yIC1mdHJlZS12ZWN0b3JpemUgLW1jcHU9cG93ZXI3IC1tNjQiIH0gKi8KLSsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2YWRkc3AiIH0gfSAqLwotKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAieHZzdWJzcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJ4dm11bHNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgInh2ZGl2c3AiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi eHZtYWRkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2bXN1YiIg fSB9ICovCi0rCi0rX192ZWN0b3IgZmxvYXQgYSwgYiwgYywgZDsKLSsKLSt2b2lkCi0rdmVjdG9y X2FkZCAodm9pZCkKLSt7Ci0rICBhID0gYiArIGM7Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3Jfc3Vi dHJhY3QgKHZvaWQpCi0rewotKyAgYSA9IGIgLSBjOwotK30KLSsKLSt2b2lkCi0rdmVjdG9yX211 bHRpcGx5ICh2b2lkKQotK3sKLSsgIGEgPSBiICogYzsKLSt9Ci0rCi0rdm9pZAotK3ZlY3Rvcl9t dWx0aXBseV9hZGQgKHZvaWQpCi0rewotKyAgYSA9IChiICogYykgKyBkOwotK30KLSsKLSt2b2lk Ci0rdmVjdG9yX211bHRpcGx5X3N1YnRyYWN0ICh2b2lkKQotK3sKLSsgIGEgPSAoYiAqIGMpIC0g ZDsKLSt9Ci0rCi0rdm9pZAotK3ZlY3Rvcl9kaXZpZGUgKHZvaWQpCi0rewotKyAgYSA9IGIgLyBj OwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy92bXgvdm14LmV4cAkoLi4uL3RydW5rKQko cmV2aXNpb24gMTQ1Nzc3KQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ZteC92bXguZXhwCSgu Li4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NjAyNykKLUBAIC0z MSw3ICszMSw3IEBAIGlmIHshW2lzdGFyZ2V0IHBvd2VycGMqLSotKl0KLSAjIG5vdGhpbmcgYnV0 IGV4dGVuc2lvbnMuCi0gZ2xvYmFsIERFRkFVTFRfVk1YQ0ZMQUdTCi0gaWYgIVtpbmZvIGV4aXN0 cyBERUZBVUxUX1ZNWENGTEFHU10gdGhlbiB7Ci0tICAgIHNldCBERUZBVUxUX1ZNWENGTEFHUyAi LW1hbHRpdmVjIC1tYWJpPWFsdGl2ZWMgLXN0ZD1nbnU5OSIKLSsgICAgc2V0IERFRkFVTFRfVk1Y Q0ZMQUdTICItbWFsdGl2ZWMgLW1hYmk9YWx0aXZlYyAtc3RkPWdudTk5IC1tbm8tdnN4IgotIH0K LSAKLSAjIElmIHRoZSB0YXJnZXQgc3lzdGVtIHN1cHBvcnRzIEFsdGlWZWMgaW5zdHJ1Y3Rpb25z LCB0aGUgZGVmYXVsdCBhY3Rpb24KLS0tLSBnY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQtc3VwcG9y dHMuZXhwCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3NzcpCi0rKysgZ2NjL3Rlc3RzdWl0ZS9s aWIvdGFyZ2V0LXN1cHBvcnRzLmV4cAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIp CShyZXZpc2lvbiAxNDYwMjcpCi1AQCAtODczLDYgKzg3MywzMiBAQCBwcm9jIGNoZWNrX3NzZTJf aHdfYXZhaWxhYmxlIHsgfSB7Ci0gICAgIH1dCi0gfQotIAotKyMgUmV0dXJuIDEgaWYgdGhlIHRh cmdldCBzdXBwb3J0cyBleGVjdXRpbmcgVlNYIGluc3RydWN0aW9ucywgMAotKyMgb3RoZXJ3aXNl LiAgQ2FjaGUgdGhlIHJlc3VsdC4KLSsKLStwcm9jIGNoZWNrX3ZzeF9od19hdmFpbGFibGUgeyB9 IHsKLSsgICAgcmV0dXJuIFtjaGVja19jYWNoZWRfZWZmZWN0aXZlX3RhcmdldCB2c3hfaHdfYXZh aWxhYmxlIHsKLSsJIyBTb21lIHNpbXVsYXRvcnMgYXJlIGtub3duIHRvIG5vdCBzdXBwb3J0IFZT WCBpbnN0cnVjdGlvbnMuCi0rCSMgRm9yIG5vdywgZGlzYWJsZSBvbiBEYXJ3aW4KLSsJaWYgeyBb aXN0YXJnZXQgcG93ZXJwYy0qLWVhYmldIHx8IFtpc3RhcmdldCBwb3dlcnBjKi0qLWVhYmlzcGVd IHx8IFtpc3RhcmdldCAqLSotZGFyd2luKl19IHsKLSsJICAgIGV4cHIgMAotKwl9IGVsc2Ugewot KwkgICAgc2V0IG9wdGlvbnMgIi1tdnN4IgotKwkgICAgY2hlY2tfcnVudGltZV9ub2NhY2hlIHZz eF9od19hdmFpbGFibGUgewotKwkJaW50IG1haW4oKQotKwkJewotKwkJI2lmZGVmIF9fTUFDSF9f Ci0rCQkgIGFzbSB2b2xhdGlsZSAoInh4bG9yIHZzMCx2czAsdnMwIik7Ci0rCQkjZWxzZQotKwkJ ICBhc20gdm9sYXRpbGUgKCJ4eGxvciAwLDAsMCIpOwotKwkgICAgICAgICNlbmRpZgotKwkJICBy ZXR1cm4gMDsKLSsJCX0KLSsJICAgIH0gJG9wdGlvbnMKLSsJfQotKyAgICB9XQotK30KLSsKLSAj IFJldHVybiAxIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgZXhlY3V0aW5nIEFsdGlWZWMgaW5zdHJ1 Y3Rpb25zLCAwCi0gIyBvdGhlcndpc2UuICBDYWNoZSB0aGUgcmVzdWx0LgotIAotQEAgLTg4Mywx MiArOTA5LDEzIEBAIHByb2MgY2hlY2tfdm14X2h3X2F2YWlsYWJsZSB7IH0gewotIAkgICAgZXhw ciAwCi0gCX0gZWxzZSB7Ci0gCSAgICAjIE1vc3QgdGFyZ2V0cyBkb24ndCByZXF1aXJlIHNwZWNp YWwgZmxhZ3MgZm9yIHRoaXMgdGVzdCBjYXNlLCBidXQKLS0JICAgICMgRGFyd2luIGRvZXMuCi0r CSAgICAjIERhcndpbiBkb2VzLiAgSnVzdCB0byBiZSBzdXJlLCBtYWtlIHN1cmUgVlNYIGlzIG5v dCBlbmFibGVkIGZvcgotKwkgICAgIyB0aGUgYWx0aXZlYyB0ZXN0cy4KLSAJICAgIGlmIHsgW2lz dGFyZ2V0ICotKi1kYXJ3aW4qXQotIAkJIHx8IFtpc3RhcmdldCAqLSotYWl4Kl0gfSB7Ci0tCQlz ZXQgb3B0aW9ucyAiLW1hbHRpdmVjIgotKwkJc2V0IG9wdGlvbnMgIi1tYWx0aXZlYyAtbW5vLXZz eCIKLSAJICAgIH0gZWxzZSB7Ci0tCQlzZXQgb3B0aW9ucyAiIgotKwkJc2V0IG9wdGlvbnMgIi1t bm8tdnN4IgotIAkgICAgfQotIAkgICAgY2hlY2tfcnVudGltZV9ub2NhY2hlIHZteF9od19hdmFp bGFibGUgewotIAkJaW50IG1haW4oKQotQEAgLTE1MTksNiArMTU0NiwzMyBAQCBwcm9jIGNoZWNr X2VmZmVjdGl2ZV90YXJnZXRfcG93ZXJwY19hbHRpCi0gICAgIH0KLSB9Ci0gCi0rIyBSZXR1cm4g MSBpZiB0aGlzIGlzIGEgUG93ZXJQQyB0YXJnZXQgc3VwcG9ydGluZyAtbXZzeAotKwotK3Byb2Mg Y2hlY2tfZWZmZWN0aXZlX3RhcmdldF9wb3dlcnBjX3ZzeF9vayB7IH0gewotKyAgICBpZiB7IChb aXN0YXJnZXQgcG93ZXJwYyotKi0qXQotKyAgICAgICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0q LWxpbnV4KnBhaXJlZCpdKQotKwkgfHwgW2lzdGFyZ2V0IHJzNjAwMC0qLSpdIH0gewotKwkjIEFs dGlWZWMgaXMgbm90IHN1cHBvcnRlZCBvbiBBSVggYmVmb3JlIDUuMy4KLSsJaWYgeyBbaXN0YXJn ZXQgcG93ZXJwYyotKi1haXg0Kl0KLSsJICAgICB8fCBbaXN0YXJnZXQgcG93ZXJwYyotKi1haXg1 LjEqXSAKLSsJICAgICB8fCBbaXN0YXJnZXQgcG93ZXJwYyotKi1haXg1LjIqXSB9IHsKLSsJICAg IHJldHVybiAwCi0rCX0KLSsJcmV0dXJuIFtjaGVja19ub19jb21waWxlcl9tZXNzYWdlcyBwb3dl cnBjX3ZzeF9vayBvYmplY3QgewotKwkgICAgaW50IG1haW4gKHZvaWQpIHsKLSsjaWZkZWYgX19N QUNIX18KLSsJCWFzbSB2b2xhdGlsZSAoInh4bG9yIHZzMCx2czAsdnMwIik7Ci0rI2Vsc2UKLSsJ CWFzbSB2b2xhdGlsZSAoInh4bG9yIDAsMCwwIik7Ci0rI2VuZGlmCi0rCQlyZXR1cm4gMDsKLSsJ ICAgIH0KLSsJfSAiLW12c3giXQotKyAgICB9IGVsc2UgewotKwlyZXR1cm4gMAotKyAgICB9Ci0r fQotKwotICMgUmV0dXJuIDEgaWYgdGhpcyBpcyBhIFBvd2VyUEMgdGFyZ2V0IHN1cHBvcnRpbmcg LW1jcHU9Y2VsbC4KLSAKLSBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfcG93ZXJwY19wcHVf b2sgeyB9IHsKLS0tLSBnY2MvY29uZmlnLmluCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3Nzcp Ci0rKysgZ2NjL2NvbmZpZy5pbgkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShy ZXZpc2lvbiAxNDYwMjcpCi1AQCAtMzI3LDEyICszMjcsMTggQEAKLSAjZW5kaWYKLSAKLSAKLS0v KiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgcG9wY250YiBmaWVsZC4gKi8KLSsv KiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgcG9wY250YiBpbnN0cnVjdGlvbi4g Ki8KLSAjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAotICN1bmRlZiBIQVZFX0FTX1BPUENOVEIKLSAj ZW5kaWYKLSAKLSAKLSsvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgcG9wY250 ZCBpbnN0cnVjdGlvbi4gKi8KLSsjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAotKyN1bmRlZiBIQVZF X0FTX1BPUENOVEQKLSsjZW5kaWYKLSsKLSsKLSAvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIg c3VwcG9ydHMgLnJlZ2lzdGVyLiAqLwotICNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCi0gI3VuZGVm IEhBVkVfQVNfUkVHSVNURVJfUFNFVURPX09QCi0tLS0gZ2NjL2NvbmZpZ3VyZS5hYwkoLi4uL3Ry dW5rKQkocmV2aXNpb24gMTQ1Nzc3KQotKysrIGdjYy9jb25maWd1cmUuYWMJKC4uLi9icmFuY2hl cy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTMwNTQsNyArMzA1 NCw3IEBAIGZvbzoJbm9wCi0gICAgIGVzYWMKLSAKLSAgICAgZ2NjX0dBU19DSEVDS19GRUFUVVJF KFttb3ZlIGZwIGdwciBzdXBwb3J0XSwKLS0gICAgICBnY2NfY3ZfYXNfcG93ZXJwY19tZnBncHIs IFs5LDk5LDBdLCwKLSsgICAgICBnY2NfY3ZfYXNfcG93ZXJwY19tZnBncHIsIFsyLDE5LDJdLCwK LSAgICAgICBbJGNvbmZ0ZXN0X3NdLCwKLSAgICAgICBbQUNfREVGSU5FKEhBVkVfQVNfTUZQR1BS LCAxLAotIAkgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgbWZmZ3ByIGFuZCBt ZnRncHIuXSldKQotQEAgLTMwODgsNyArMzA4OCw3IEBAIExDRjA6Ci0gICAgIGVzYWMKLSAKLSAg ICAgZ2NjX0dBU19DSEVDS19GRUFUVVJFKFtjb21wYXJlIGJ5dGVzIHN1cHBvcnRdLAotLSAgICAg IGdjY19jdl9hc19wb3dlcnBjX2NtcGIsIFs5LDk5LDBdLCAtYTMyLAotKyAgICAgIGdjY19jdl9h c19wb3dlcnBjX2NtcGIsIFsyLDE5LDJdLCAtYTMyLAotICAgICAgIFskY29uZnRlc3Rfc10sLAot ICAgICAgIFtBQ19ERUZJTkUoSEFWRV9BU19DTVBCLCAxLAotIAkgIFtEZWZpbmUgaWYgeW91ciBh c3NlbWJsZXIgc3VwcG9ydHMgY21wYi5dKV0pCi1AQCAtMzEwMyw3ICszMTAzLDcgQEAgTENGMDoK LSAgICAgZXNhYwotIAotICAgICBnY2NfR0FTX0NIRUNLX0ZFQVRVUkUoW2RlY2ltYWwgZmxvYXQg c3VwcG9ydF0sCi0tICAgICAgZ2NjX2N2X2FzX3Bvd2VycGNfZGZwLCBbOSw5OSwwXSwgLWEzMiwK LSsgICAgICBnY2NfY3ZfYXNfcG93ZXJwY19kZnAsIFsyLDE5LDJdLCAtYTMyLAotICAgICAgIFsk Y29uZnRlc3Rfc10sLAotICAgICAgIFtBQ19ERUZJTkUoSEFWRV9BU19ERlAsIDEsCi0gCSAgW0Rl ZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyBERlAgaW5zdHJ1Y3Rpb25zLl0pXSkKLUBA IC0zMTE4LDExICszMTE4LDI2IEBAIExDRjA6Ci0gICAgIGVzYWMKLSAKLSAgICAgZ2NjX0dBU19D SEVDS19GRUFUVVJFKFt2ZWN0b3Itc2NhbGFyIHN1cHBvcnRdLAotLSAgICAgIGdjY19jdl9hc19w b3dlcnBjX3ZzeCwgWzksOTksMF0sIC1hMzIsCi0rICAgICAgZ2NjX2N2X2FzX3Bvd2VycGNfdnN4 LCBbMiwxOSwyXSwgLWEzMiwKLSAgICAgICBbJGNvbmZ0ZXN0X3NdLCwKLSAgICAgICBbQUNfREVG SU5FKEhBVkVfQVNfVlNYLCAxLAotIAkgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9y dHMgVlNYIGluc3RydWN0aW9ucy5dKV0pCi0gCi0rICAgIGNhc2UgJHRhcmdldCBpbgotKyAgICAg ICotKi1haXgqKSBjb25mdGVzdF9zPScJLm1hY2hpbmUgInB3cjciCi0rCS5jc2VjdCAudGV4dFtb UFJdXQotKwlwb3BjbnRkIDMsMyc7OwotKyAgICAgICopIGNvbmZ0ZXN0X3M9JwkubWFjaGluZSBw b3dlcjcKLSsJLnRleHQKLSsJcG9wY250ZCAzLDMnOzsKLSsgICAgZXNhYwotKwotKyAgICBnY2Nf R0FTX0NIRUNLX0ZFQVRVUkUoW3BvcGNudGQgc3VwcG9ydF0sCi0rICAgICAgZ2NjX2N2X2FzX3Bv d2VycGNfcG9wY250ZCwgWzIsMTksMl0sIC1hMzIsCi0rICAgICAgWyRjb25mdGVzdF9zXSwsCi0r ICAgICAgW0FDX0RFRklORShIQVZFX0FTX1BPUENOVEQsIDEsCi0rCSAgW0RlZmluZSBpZiB5b3Vy IGFzc2VtYmxlciBzdXBwb3J0cyBQT1BDTlREIGluc3RydWN0aW9ucy5dKV0pCi0rCi0gICAgIGdj Y19HQVNfQ0hFQ0tfRkVBVFVSRShbLmdudV9hdHRyaWJ1dGUgc3VwcG9ydF0sCi0gICAgICAgZ2Nj X2N2X2FzX3Bvd2VycGNfZ251X2F0dHJpYnV0ZSwgWzIsMTgsMF0sLAotICAgICAgIFsuZ251X2F0 dHJpYnV0ZSA0LDFdLCwKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9haXg1My5oCSguLi4vdHJ1bmsp CShyZXZpc2lvbiAxNDU3NzcpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvYWl4NTMuaAkoLi4uL2Jy YW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDYwMjcpCi1AQCAtNTcsMjAg KzU3LDI0IEBAIGRvIHsJCQkJCQkJCQlcCi0gI3VuZGVmIEFTTV9TUEVDCi0gI2RlZmluZSBBU01f U1BFQyAiLXUgJXttYWl4NjQ6LWE2NCAleyFtY3B1KjotbXBwYzY0fX0gJShhc21fY3B1KSIKLSAK LS0vKiBDb21tb24gQVNNIGRlZmluaXRpb25zIHVzZWQgYnkgQVNNX1NQRUMgYW1vbmdzdCB0aGUg dmFyaW91cyB0YXJnZXRzCi0tICAgZm9yIGhhbmRsaW5nIC1tY3B1PXh4eCBzd2l0Y2hlcy4gICov Ci0rLyogQ29tbW9uIEFTTSBkZWZpbml0aW9ucyB1c2VkIGJ5IEFTTV9TUEVDIGFtb25nc3QgdGhl IHZhcmlvdXMgdGFyZ2V0cyBmb3IKLSsgICBoYW5kbGluZyAtbWNwdT14eHggc3dpdGNoZXMuICBU aGVyZSBpcyBhIHBhcmFsbGVsIGxpc3QgaW4gZHJpdmVyLXJzNjAwMC5jIHRvCi0rICAgcHJvdmlk ZSB0aGUgZGVmYXVsdCBhc3NlbWJsZXIgb3B0aW9ucyBpZiB0aGUgdXNlciB1c2VzIC1tY3B1PW5h dGl2ZSwgc28gaWYKLSsgICB5b3UgbWFrZSBjaGFuZ2VzIGhlcmUsIG1ha2UgdGhlbSB0aGVyZSBh bHNvLiAgKi8KLSAjdW5kZWYgQVNNX0NQVV9TUEVDCi0gI2RlZmluZSBBU01fQ1BVX1NQRUMgXAot ICIleyFtY3B1KjogJXshbWFpeDY0OiBcCi0gICAle21wb3dlcnBjNjQ6IC1tcHBjNjR9IFwKLSAg ICV7bWFsdGl2ZWM6IC1tOTcwfSBcCi0gICAleyFtYWx0aXZlYzogJXshbXBvd2VyNjQ6ICUoYXNt X2RlZmF1bHQpfX19fSBcCi0rJXttY3B1PW5hdGl2ZTogJShhc21fY3B1X25hdGl2ZSl9IFwKLSAl e21jcHU9cG93ZXIzOiAtbTYyMH0gXAotICV7bWNwdT1wb3dlcjQ6IC1tcHdyNH0gXAotICV7bWNw dT1wb3dlcjU6IC1tcHdyNX0gXAotICV7bWNwdT1wb3dlcjUrOiAtbXB3cjV4fSBcCi0gJXttY3B1 PXBvd2VyNjogLW1wd3I2fSBcCi0gJXttY3B1PXBvd2VyNng6IC1tcHdyNn0gXAotKyV7bWNwdT1w b3dlcjc6IC1tcHdyN30gXAotICV7bWNwdT1wb3dlcnBjOiAtbXBwY30gXAotICV7bWNwdT1yczY0 YTogLW1wcGN9IFwKLSAle21jcHU9NjAzOiAtbTYwM30gXAotLS0tIGdjYy9jb25maWcvcnM2MDAw L3ZlY3Rvci5tZAkoLi4uL3RydW5rKQkocmV2aXNpb24gMCkKLSsrKyBnY2MvY29uZmlnL3JzNjAw MC92ZWN0b3IubWQJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24g MTQ2MDI3KQotQEAgLTAsMCArMSw2NjQgQEAKLSs7OyBFeHBhbmRlciBkZWZpbml0aW9ucyBmb3Ig dmVjdG9yIHN1cHBvcnQgYmV0d2VlbiBhbHRpdmVjICYgdnN4LiAgTm8KLSs7OyBpbnN0cnVjdGlv bnMgYXJlIGluIHRoaXMgZmlsZSwgdGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBnZW5lcmljIHZlY3Rv cgotKzs7IGV4cGFuZGVyLCBhbmQgdGhlIGFjdHVhbCB2ZWN0b3IgaW5zdHJ1Y3Rpb25zIHdpbGwg YmUgaW4gYWx0aXZlYy5tZCBhbmQKLSs7OyB2c3gubWQKLSsKLSs7OyBDb3B5cmlnaHQgKEMpIDIw MDkKLSs7OyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSs7OyBDb250cmlidXRlZCBi eSBNaWNoYWVsIE1laXNzbmVyIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0rCi0rOzsg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgotKwotKzs7IEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rOzsgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSs7OyBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQg eW91cgotKzs7IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rOzsgR0NDIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi0r OzsgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS Q0hBTlRBQklMSVRZCi0rOzsgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotKzs7IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKzs7IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCi0rOzsgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot KwotKzs7IFZlY3RvciBpbnQgbW9kZXMKLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVkVDX0kgW1Yx NlFJIFY4SEkgVjRTSV0pCi0rCi0rOzsgVmVjdG9yIGZsb2F0IG1vZGVzCi0rKGRlZmluZV9tb2Rl X2l0ZXJhdG9yIFZFQ19GIFtWNFNGIFYyREZdKQotKwotKzs7IFZlY3RvciBsb2dpY2FsIG1vZGVz Ci0rKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZFQ19MIFtWMTZRSSBWOEhJIFY0U0kgVjJESSBWNFNG IFYyREYgVEldKQotKwotKzs7IFZlY3RvciBtb2RlcyBmb3IgbW92ZXMuICBEb24ndCBkbyBUSW1v ZGUgaGVyZS4KLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVkVDX00gW1YxNlFJIFY4SEkgVjRTSSBW MkRJIFY0U0YgVjJERl0pCi0rCi0rOzsgVmVjdG9yIGNvbXBhcmlzb24gbW9kZXMKLSsoZGVmaW5l X21vZGVfaXRlcmF0b3IgVkVDX0MgW1YxNlFJIFY4SEkgVjRTSSBWNFNGIFYyREZdKQotKwotKzs7 IFZlY3RvciByZWxvYWQgaXRlcmF0b3IKLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVkVDX1IgW1Yx NlFJIFY4SEkgVjRTSSBWMkRJIFY0U0YgVjJERiBERiBUSV0pCi0rCi0rOzsgQmFzZSB0eXBlIGZy b20gdmVjdG9yIG1vZGUKLSsoZGVmaW5lX21vZGVfYXR0ciBWRUNfYmFzZSBbKFYxNlFJICJRSSIp Ci0rCQkJICAgIChWOEhJICAiSEkiKQotKwkJCSAgICAoVjRTSSAgIlNJIikKLSsJCQkgICAgKFYy REkgICJESSIpCi0rCQkJICAgIChWNFNGICAiU0YiKQotKwkJCSAgICAoVjJERiAgIkRGIikKLSsJ CQkgICAgKFRJICAgICJUSSIpXSkKLSsKLSs7OyBTYW1lIHNpemUgaW50ZWdlciB0eXBlIGZvciBm bG9hdGluZyBwb2ludCBkYXRhCi0rKGRlZmluZV9tb2RlX2F0dHIgVkVDX2ludCBbKFY0U0YgICJ2 NHNpIikKLSsJCQkgICAoVjJERiAgInYyZGkiKV0pCi0rCi0rKGRlZmluZV9tb2RlX2F0dHIgVkVD X0lOVCBbKFY0U0YgICJWNFNJIikKLSsJCQkgICAoVjJERiAgIlYyREkiKV0pCi0rCi0rOzsgVmVj dG9yIG1vdmUgaW5zdHJ1Y3Rpb25zLgotKyhkZWZpbmVfZXhwYW5kICJtb3Y8bW9kZT4iCi0rICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfTSAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIiIpCi0r CShtYXRjaF9vcGVyYW5kOlZFQ19NIDEgImFueV9vcGVyYW5kIiAiIikpXQotKyAgIlZFQ1RPUl9N RU1fQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rewotKyAgaWYgKGNhbl9jcmVhdGVf cHNldWRvX3AgKCkpCi0rICAgIHsKLSsgICAgICBpZiAoQ09OU1RBTlRfUCAob3BlcmFuZHNbMV0p Ci0rCSAgJiYgIWVhc3lfdmVjdG9yX2NvbnN0YW50IChvcGVyYW5kc1sxXSwgPE1PREU+bW9kZSkp Ci0rCW9wZXJhbmRzWzFdID0gZm9yY2VfY29uc3RfbWVtICg8TU9ERT5tb2RlLCBvcGVyYW5kc1sx XSk7Ci0rCi0rICAgICAgZWxzZSBpZiAoIXZsb2dpY2FsX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8 TU9ERT5tb2RlKQotKwkgICAgICAgJiYgIXZsb2dpY2FsX29wZXJhbmQgKG9wZXJhbmRzWzFdLCA8 TU9ERT5tb2RlKSkKLSsJb3BlcmFuZHNbMV0gPSBmb3JjZV9yZWcgKDxNT0RFPm1vZGUsIG9wZXJh bmRzWzFdKTsKLSsgICAgfQotK30pCi0rCi0rOzsgR2VuZXJpYyB2ZWN0b3IgZmxvYXRpbmcgcG9p bnQgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMuICBUaGVzZSB3aWxsIG1hdGNoCi0rOzsgaW5zbnMg ZGVmaW5lZCBpbiB2c3gubWQgb3IgYWx0aXZlYy5tZCBkZXBlbmRpbmcgb24gdGhlIHN3aXRjaGVz LgotKyhkZWZpbmVfZXhwYW5kICJ2ZWN0b3JfbG9hZF88bW9kZT4iCi0rICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWRUNfTSAwICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0rCShtYXRjaF9vcGVyYW5kOlZF Q19NIDEgIm1lbW9yeV9vcGVyYW5kIiAiIikpXQotKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9W U1hfUCAoPE1PREU+bW9kZSkiCi0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjdG9yX3N0 b3JlXzxtb2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19NIDAgIm1lbW9yeV9vcGVy YW5kIiAiIikKLSsJKG1hdGNoX29wZXJhbmQ6VkVDX00gMSAidmZsb2F0X29wZXJhbmQiICIiKSld Ci0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQot KwotKzs7IFNwbGl0cyBpZiBhIEdQUiByZWdpc3RlciB3YXMgY2hvc2VuIGZvciB0aGUgbW92ZQot KyhkZWZpbmVfc3BsaXQKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19MIDAgIm5vbmltbWVk aWF0ZV9vcGVyYW5kIiAiIikKLSsgICAgICAgIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEgImlucHV0 X29wZXJhbmQiICIiKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5t b2RlKQotKyAgICYmIHJlbG9hZF9jb21wbGV0ZWQKLSsgICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSkiCi0rICBbKHBjKV0KLSt7Ci0rICByczYwMDBfc3BsaXRfbXVs dGlyZWdfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKLSsgIERPTkU7Ci0rfSkKLSsK LSsMCi0rOzsgUmVsb2FkIHBhdHRlcm5zIGZvciB2ZWN0b3Igb3BlcmF0aW9ucy4gIFdlIG1heSBu ZWVkIGFuIGFkZHRpb25hbCBiYXNlCi0rOzsgcmVnaXN0ZXIgdG8gY29udmVydCB0aGUgcmVnK29m ZnNldCBhZGRyZXNzaW5nIHRvIHJlZytyZWcgZm9yIHZlY3RvcgotKzs7IHJlZ2lzdGVycyBhbmQg cmVnK3JlZyBvciAocmVnK3JlZykmKC0xNikgYWRkcmVzc2luZyB0byBqdXN0IGFuIGluZGV4Ci0r OzsgcmVnaXN0ZXIgZm9yIGdwciByZWdpc3RlcnMuCi0rKGRlZmluZV9leHBhbmQgInJlbG9hZF88 VkVDX1I6bW9kZT5fPFA6bXB0cnNpemU+X3N0b3JlIgotKyAgWyhwYXJhbGxlbCBbKG1hdGNoX29w ZXJhbmQ6VkVDX1IgMCAibWVtb3J5X29wZXJhbmQiICJtIikKLSsgICAgICAgICAgICAgIChtYXRj aF9vcGVyYW5kOlZFQ19SIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotKyAgICAgICAgICAgICAg KG1hdGNoX29wZXJhbmQ6UCAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSZiIildKV0KLSsgICI8UDp0 cHRyc2l6ZT4iCi0rewotKyAgcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIgKG9wZXJhbmRz WzFdLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl0sIHRydWUpOwotKyAgRE9ORTsKLSt9KQotKwot KyhkZWZpbmVfZXhwYW5kICJyZWxvYWRfPFZFQ19SOm1vZGU+XzxQOm1wdHJzaXplPl9sb2FkIgot KyAgWyhwYXJhbGxlbCBbKG1hdGNoX29wZXJhbmQ6VkVDX1IgMCAiZ3BjX3JlZ19vcGVyYW5kIiAi PSZyIikKLSsgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlZFQ19SIDEgIm1lbW9yeV9vcGVy YW5kIiAibSIpCi0rICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpQIDIgInJlZ2lzdGVyX29w ZXJhbmQiICI9JmIiKV0pXQotKyAgIjxQOnRwdHJzaXplPiIKLSt7Ci0rICByczYwMDBfc2Vjb25k YXJ5X3JlbG9hZF9pbm5lciAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwg ZmFsc2UpOwotKyAgRE9ORTsKLSt9KQotKwotKzs7IFJlbG9hZCBzb21ldGltZXMgdHJpZXMgdG8g bW92ZSB0aGUgYWRkcmVzcyB0byBhIEdQUiwgYW5kIGNhbiBnZW5lcmF0ZQotKzs7IGludmFsaWQg UlRMIGZvciBhZGRyZXNzZXMgaW52b2x2aW5nIEFORCAtMTYuCi0rCi0rKGRlZmluZV9pbnNuX2Fu ZF9zcGxpdCAiKnZlY19yZWxvYWRfYW5kX3BsdXNfPG1wdHJzaXplPiIKLSsgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlAgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWIiKQotKwkoYW5kOlAgKHBsdXM6UCAo bWF0Y2hfb3BlcmFuZDpQIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotKwkJICAgICAgIChtYXRj aF9vcGVyYW5kOlAgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpKQotKwkgICAgICAgKGNvbnN0X2lu dCAtMTYpKSldCi0rICAiVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VUX1ZTWCIKLSsgICIjIgotKyAg IiYmIHJlbG9hZF9jb21wbGV0ZWQiCi0rICBbKHNldCAobWF0Y2hfZHVwIDApCi0rCShwbHVzOlAg KG1hdGNoX2R1cCAxKQotKwkJKG1hdGNoX2R1cCAyKSkpCi0rICAgKHBhcmFsbGVsIFsoc2V0ICht YXRjaF9kdXAgMCkKLSsJCSAgIChhbmQ6UCAobWF0Y2hfZHVwIDApCi0rCQkJICAoY29uc3RfaW50 IC0xNikpKQotKwkgICAgICAoY2xvYmJlcjpDQyAoc2NyYXRjaDpDQykpXSldKQotKwwKLSs7OyBH ZW5lcmljIGZsb2F0aW5nIHBvaW50IHZlY3RvciBhcml0aG1ldGljIHN1cHBvcnQKLSsoZGVmaW5l X2V4cGFuZCAiYWRkPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19GIDAgInZm bG9hdF9vcGVyYW5kIiAiIikKLSsJKHBsdXM6VkVDX0YgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAi dmZsb2F0X29wZXJhbmQiICIiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlZFQ19GIDIgInZmbG9h dF9vcGVyYW5kIiAiIikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9E RT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJzdWI8bW9kZT4zIgotKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkobWludXM6 VkVDX0YgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIiKQotKwkJICAg ICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAyICJ2ZmxvYXRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVD VE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiIikKLSsKLSsoZGVm aW5lX2V4cGFuZCAibXVsPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19GIDAg InZmbG9hdF9vcGVyYW5kIiAiIikKLSsJKG11bHQ6VkVDX0YgKG1hdGNoX29wZXJhbmQ6VkVDX0Yg MSAidmZsb2F0X29wZXJhbmQiICIiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlZFQ19GIDIgInZm bG9hdF9vcGVyYW5kIiAiIikpKV0KLSsgICIoVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUp Ci0rICAgIHx8IChWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpICYmIFRBUkdFVF9G VVNFRF9NQUREKSkiCi0rICAiCi0rewotKyAgaWYgKDxNT0RFPm1vZGUgPT0gVjRTRm1vZGUgJiYg VkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSkKLSsgICAgewotKyAgICAgIGVtaXRf aW5zbiAoZ2VuX2FsdGl2ZWNfbXVsdjRzZjMgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3Bl cmFuZHNbMl0pKTsKLSsgICAgICBET05FOwotKyAgICB9Ci0rfSIpCi0rCi0rKGRlZmluZV9leHBh bmQgImRpdjxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfRiAwICJ2ZmxvYXRf b3BlcmFuZCIgIiIpCi0rCShkaXY6VkVDX0YgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0 X29wZXJhbmQiICIiKQotKwkJICAgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMiAidmZsb2F0X29wZXJh bmQiICIiKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQot KwotKyhkZWZpbmVfZXhwYW5kICJuZWc8bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkobmVnOlZFQ19GIChtYXRjaF9vcGVyYW5k OlZFQ19GIDEgInZmbG9hdF9vcGVyYW5kIiAiIikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVD X09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIKLSt7Ci0rICBpZiAoPE1PREU+bW9kZSA9PSBW NFNGbW9kZSAmJiBWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpKQotKyAgICB7Ci0r ICAgICAgZW1pdF9pbnNuIChnZW5fYWx0aXZlY19uZWd2NHNmMiAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzFdKSk7Ci0rICAgICAgRE9ORTsKLSsgICAgfQotK30iKQotKwotKyhkZWZpbmVfZXhwYW5k ICJhYnM8bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29w ZXJhbmQiICIiKQotKwkoYWJzOlZFQ19GIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEgInZmbG9hdF9v cGVyYW5kIiAiIikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5t b2RlKSIKLSsgICIKLSt7Ci0rICBpZiAoPE1PREU+bW9kZSA9PSBWNFNGbW9kZSAmJiBWRUNUT1Jf VU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpKQotKyAgICB7Ci0rICAgICAgZW1pdF9pbnNuIChn ZW5fYWx0aXZlY19hYnN2NHNmMiAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSk7Ci0rICAgICAg RE9ORTsKLSsgICAgfQotK30iKQotKwotKyhkZWZpbmVfZXhwYW5kICJzbWluPG1vZGU+MyIKLSsg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19GIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotKyAg ICAgICAgKHNtaW46VkVDX0YgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAicmVnaXN0ZXJfb3BlcmFu ZCIgIiIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIg IiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0r ICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAic21heDxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWRUNfRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLSsgICAgICAgIChzbWF4OlZF Q19GIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotKwkJICAg IChtYXRjaF9vcGVyYW5kOlZFQ19GIDIgInJlZ2lzdGVyX29wZXJhbmQiICIiKSkpXQotKyAgIlZF Q1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIiIpCi0rCi0rCi0r KGRlZmluZV9leHBhbmQgInNxcnQ8bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVD X0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkoc3FydDpWRUNfRiAobWF0Y2hfb3BlcmFuZDpW RUNfRiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxN T0RFPm1vZGUpIgotKyAgIiIpCi0rCi0rKGRlZmluZV9leHBhbmQgImZ0cnVuYzxtb2RlPjIiCi0r ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfRiAwICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0rICAJ KGZpeDpWRUNfRiAobWF0Y2hfb3BlcmFuZDpWRUNfRiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpKSld Ci0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiIikK LSsKLSsMCi0rOzsgVmVjdG9yIGNvbXBhcmlzb25zCi0rKGRlZmluZV9leHBhbmQgInZjb25kPG1v ZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIi KQotKwkoaWZfdGhlbl9lbHNlOlZFQ19GCi0rCSAobWF0Y2hfb3BlcmF0b3IgMyAiY29tcGFyaXNv bl9vcGVyYXRvciIKLSsJCQkgWyhtYXRjaF9vcGVyYW5kOlZFQ19GIDQgInZmbG9hdF9vcGVyYW5k IiAiIikKLSsJCQkgIChtYXRjaF9vcGVyYW5kOlZFQ19GIDUgInZmbG9hdF9vcGVyYW5kIiAiIild KQotKwkgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIiKQotKwkgKG1h dGNoX29wZXJhbmQ6VkVDX0YgMiAidmZsb2F0X29wZXJhbmQiICIiKSkpXQotKyAgIlZFQ1RPUl9V TklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIgotK3sKLSsgIGlmIChyczYw MDBfZW1pdF92ZWN0b3JfY29uZF9leHByIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJh bmRzWzJdLAotKwkJCQkgICAgb3BlcmFuZHNbM10sIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkp Ci0rICAgIERPTkU7Ci0rICBlbHNlCi0rICAgIEZBSUw7Ci0rfSIpCi0rCi0rKGRlZmluZV9leHBh bmQgInZjb25kPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0kgMCAidmludF9v cGVyYW5kIiAiIikKLSsJKGlmX3RoZW5fZWxzZTpWRUNfSQotKwkgKG1hdGNoX29wZXJhdG9yIDMg ImNvbXBhcmlzb25fb3BlcmF0b3IiCi0rCQkJIFsobWF0Y2hfb3BlcmFuZDpWRUNfSSA0ICJ2aW50 X29wZXJhbmQiICIiKQotKwkJCSAgKG1hdGNoX29wZXJhbmQ6VkVDX0kgNSAidmludF9vcGVyYW5k IiAiIildKQotKwkgKG1hdGNoX29wZXJhbmQ6VkVDX0kgMSAidmludF9vcGVyYW5kIiAiIikKLSsJ IChtYXRjaF9vcGVyYW5kOlZFQ19JIDIgInZpbnRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9S X1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKLSsgICIKLSt7Ci0rICBpZiAocnM2MDAwX2Vt aXRfdmVjdG9yX2NvbmRfZXhwciAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1sy XSwKLSsJCQkJICAgIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0pKQotKyAg ICBET05FOwotKyAgZWxzZQotKyAgICBGQUlMOwotK30iKQotKwotKyhkZWZpbmVfZXhwYW5kICJ2 Y29uZHU8bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfSSAwICJ2aW50X29wZXJh bmQiICI9diIpCi0rCShpZl90aGVuX2Vsc2U6VkVDX0kKLSsJIChtYXRjaF9vcGVyYXRvciAzICJj b21wYXJpc29uX29wZXJhdG9yIgotKwkJCSBbKG1hdGNoX29wZXJhbmQ6VkVDX0kgNCAidmludF9v cGVyYW5kIiAiIikKLSsJCQkgIChtYXRjaF9vcGVyYW5kOlZFQ19JIDUgInZpbnRfb3BlcmFuZCIg IiIpXSkKLSsJIChtYXRjaF9vcGVyYW5kOlZFQ19JIDEgInZpbnRfb3BlcmFuZCIgIiIpCi0rCSAo bWF0Y2hfb3BlcmFuZDpWRUNfSSAyICJ2aW50X29wZXJhbmQiICIiKSkpXQotKyAgIlZFQ1RPUl9V TklUX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCi0rICAiCi0rewotKyAgaWYgKHJzNjAwMF9lbWl0 X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0s Ci0rCQkJCSAgICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVdKSkKLSsgICAg RE9ORTsKLSsgIGVsc2UKLSsgICAgRkFJTDsKLSt9IikKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVj dG9yX2VxPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMCAidmxvZ2ljYWxf b3BlcmFuZCIgIiIpCi0rCShlcTpWRUNfQyAobWF0Y2hfb3BlcmFuZDpWRUNfQyAxICJ2bG9naWNh bF9vcGVyYW5kIiAiIikKLSsJCSAgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMiAidmxvZ2ljYWxfb3Bl cmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9k ZSkiCi0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjdG9yX2d0PG1vZGU+IgotKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rCShndDpW RUNfQyAobWF0Y2hfb3BlcmFuZDpWRUNfQyAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsJCSAg KG1hdGNoX29wZXJhbmQ6VkVDX0MgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVD VE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiIikKLSsKLSsoZGVm aW5lX2V4cGFuZCAidmVjdG9yX2dlPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVD X0MgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rCShnZTpWRUNfQyAobWF0Y2hfb3BlcmFuZDpW RUNfQyAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsJCSAgKG1hdGNoX29wZXJhbmQ6VkVDX0Mg MiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9W U1hfUCAoPE1PREU+bW9kZSkiCi0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjdG9yX2d0 dTxtb2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19JIDAgInZpbnRfb3BlcmFuZCIg IiIpCi0rCShndHU6VkVDX0kgKG1hdGNoX29wZXJhbmQ6VkVDX0kgMSAidmludF9vcGVyYW5kIiAi IikKLSsJCSAgIChtYXRjaF9vcGVyYW5kOlZFQ19JIDIgInZpbnRfb3BlcmFuZCIgIiIpKSldCi0r ICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZp bmVfZXhwYW5kICJ2ZWN0b3JfZ2V1PG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVD X0kgMCAidmludF9vcGVyYW5kIiAiIikKLSsJKGdldTpWRUNfSSAobWF0Y2hfb3BlcmFuZDpWRUNf SSAxICJ2aW50X29wZXJhbmQiICIiKQotKwkJICAgKG1hdGNoX29wZXJhbmQ6VkVDX0kgMiAidmlu dF9vcGVyYW5kIiAiIikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUp IgotKyAgIiIpCi0rCi0rOzsgTm90ZSB0aGUgYXJndW1lbnRzIGZvciBfX2J1aWx0aW5fYWx0aXZl Y192c2VsIGFyZSBvcDIsIG9wMSwgbWFzawotKzs7IHdoaWNoIGlzIGluIHRoZSByZXZlcnNlIG9y ZGVyIHRoYXQgd2Ugd2FudAotKyhkZWZpbmVfZXhwYW5kICJ2ZWN0b3JfdnNlbDxtb2RlPiIKLSsg IFsobWF0Y2hfb3BlcmFuZDpWRUNfRiAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAobWF0 Y2hfb3BlcmFuZDpWRUNfRiAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hfb3Bl cmFuZDpWRUNfRiAyICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hfb3BlcmFuZDpW RUNfRiAzICJ2bG9naWNhbF9vcGVyYW5kIiAiIildCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19P Ul9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiCi0rewotKyAgaWYgKFZFQ1RPUl9VTklUX1ZTWF9Q ICg8TU9ERT5tb2RlKSkKLSsgICAgZW1pdF9pbnNuIChnZW5fdnN4X3ZzZWw8bW9kZT4gKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1szXSwKLSsJCQkJICAgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzFdKSk7 Ci0rICBlbHNlCi0rICAgIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNfdnNlbDxtb2RlPiAob3BlcmFu ZHNbMF0sIG9wZXJhbmRzWzNdLAotKwkJCQkgICAgICAgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzFd KSk7Ci0rICBET05FOwotK30iKQotKwotKyhkZWZpbmVfZXhwYW5kICJ2ZWN0b3JfdnNlbDxtb2Rl PiIKLSsgIFsobWF0Y2hfb3BlcmFuZDpWRUNfSSAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsg ICAobWF0Y2hfb3BlcmFuZDpWRUNfSSAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAobWF0 Y2hfb3BlcmFuZDpWRUNfSSAyICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hfb3Bl cmFuZDpWRUNfSSAzICJ2bG9naWNhbF9vcGVyYW5kIiAiIildCi0rICAiVkVDVE9SX1VOSVRfQUxU SVZFQ19QICg8TU9ERT5tb2RlKSIKLSsgICIKLSt7Ci0rICBlbWl0X2luc24gKGdlbl9hbHRpdmVj X3ZzZWw8bW9kZT4gKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1szXSwKLSsJCQkJICAgICBvcGVyYW5k c1syXSwgb3BlcmFuZHNbMV0pKTsKLSsgIERPTkU7Ci0rfSIpCi0rCi0rDAotKzs7IFZlY3RvciBs b2dpY2FsIGluc3RydWN0aW9ucwotKyhkZWZpbmVfZXhwYW5kICJ4b3I8bW9kZT4zIgotKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rICAgICAg ICAoeG9yOlZFQ19MIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEgInZsb2dpY2FsX29wZXJhbmQiICIi KQotKwkJICAgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSld Ci0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQot KwotKyhkZWZpbmVfZXhwYW5kICJpb3I8bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VkVDX0wgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rICAgICAgICAoaW9yOlZFQ19MIChtYXRj aF9vcGVyYW5kOlZFQ19MIDEgInZsb2dpY2FsX29wZXJhbmQiICIiKQotKwkJICAgKG1hdGNoX29w ZXJhbmQ6VkVDX0wgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX01FTV9B TFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5k ICJhbmQ8bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMCAidmxvZ2ljYWxf b3BlcmFuZCIgIiIpCi0rICAgICAgICAoYW5kOlZFQ19MIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEg InZsb2dpY2FsX29wZXJhbmQiICIiKQotKwkJICAgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMiAidmxv Z2ljYWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8 TU9ERT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJvbmVfY21wbDxtb2RlPjIi Ci0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfTCAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikK LSsgICAgICAgIChub3Q6VkVDX0wgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMSAidmxvZ2ljYWxfb3Bl cmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2Rl KSIKLSsgICIiKQotKyAgCi0rKGRlZmluZV9leHBhbmQgIm5vcjxtb2RlPjMiCi0rICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWRUNfTCAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAgICAgIChu b3Q6VkVDX0wgKGlvcjpWRUNfTCAobWF0Y2hfb3BlcmFuZDpWRUNfTCAxICJ2bG9naWNhbF9vcGVy YW5kIiAiIikKLSsJCQkgICAgICAobWF0Y2hfb3BlcmFuZDpWRUNfTCAyICJ2bG9naWNhbF9vcGVy YW5kIiAiIikpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2Rl KSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJhbmRjPG1vZGU+MyIKLSsgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZFQ19MIDAgInZsb2dpY2FsX29wZXJhbmQiICIiKQotKyAgICAgICAgKGFu ZDpWRUNfTCAobm90OlZFQ19MIChtYXRjaF9vcGVyYW5kOlZFQ19MIDIgInZsb2dpY2FsX29wZXJh bmQiICIiKSkKLSsJCSAgIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEgInZsb2dpY2FsX29wZXJhbmQi ICIiKSkpXQotKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0r ICAiIikKLSsKLSs7OyBTYW1lIHNpemUgY29udmVyc2lvbnMKLSsoZGVmaW5lX2V4cGFuZCAiZmxv YXQ8VkVDX2ludD48bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZs b2F0X29wZXJhbmQiICIiKQotKwkoZmxvYXQ6VkVDX0YgKG1hdGNoX29wZXJhbmQ6PFZFQ19JTlQ+ IDEgInZpbnRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hf UCAoPE1PREU+bW9kZSkiCi0rICAiCi0rewotKyAgaWYgKDxNT0RFPm1vZGUgPT0gVjRTRm1vZGUg JiYgVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSkKLSsgICAgewotKyAgICAgIGVt aXRfaW5zbiAoZ2VuX2FsdGl2ZWNfdmNmc3ggKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgY29u c3QwX3J0eCkpOwotKyAgICAgIERPTkU7Ci0rICAgIH0KLSt9IikKLSsKLSsoZGVmaW5lX2V4cGFu ZCAidW5zaWduZWRfZmxvYXQ8VkVDX2ludD48bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkodW5zaWduZWRfZmxvYXQ6VkVDX0Yg KG1hdGNoX29wZXJhbmQ6PFZFQ19JTlQ+IDEgInZpbnRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVD VE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiCi0rewotKyAgaWYg KDxNT0RFPm1vZGUgPT0gVjRTRm1vZGUgJiYgVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5t b2RlKSkKLSsgICAgewotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNfdmNmdXggKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSwgY29uc3QwX3J0eCkpOwotKyAgICAgIERPTkU7Ci0rICAgIH0K LSt9IikKLSsKLSsoZGVmaW5lX2V4cGFuZCAiZml4X3RydW5jPG1vZGU+PFZFQ19pbnQ+MiIKLSsg IFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWRUNfSU5UPiAwICJ2aW50X29wZXJhbmQiICIiKQotKwko Zml4OjxWRUNfSU5UPiAobWF0Y2hfb3BlcmFuZDpWRUNfRiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIp KSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAi Ci0rewotKyAgaWYgKDxNT0RFPm1vZGUgPT0gVjRTRm1vZGUgJiYgVkVDVE9SX1VOSVRfQUxUSVZF Q19QICg8TU9ERT5tb2RlKSkKLSsgICAgewotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNf dmN0c3hzIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIGNvbnN0MF9ydHgpKTsKLSsgICAgICBE T05FOwotKyAgICB9Ci0rfSIpCi0rCi0rKGRlZmluZV9leHBhbmQgImZpeHVuc190cnVuYzxtb2Rl PjxWRUNfaW50PjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8VkVDX0lOVD4gMCAidmludF9v cGVyYW5kIiAiIikKLSsJKHVuc2lnbmVkX2ZpeDo8VkVDX0lOVD4gKG1hdGNoX29wZXJhbmQ6VkVD X0YgMSAidmZsb2F0X29wZXJhbmQiICIiKSkpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1Jf VlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIgotK3sKLSsgIGlmICg8TU9ERT5tb2RlID09IFY0U0Zt b2RlICYmIFZFQ1RPUl9VTklUX0FMVElWRUNfUCAoPE1PREU+bW9kZSkpCi0rICAgIHsKLSsgICAg ICBlbWl0X2luc24gKGdlbl9hbHRpdmVjX3ZjdHV4cyAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd LCBjb25zdDBfcnR4KSk7Ci0rICAgICAgRE9ORTsKLSsgICAgfQotK30iKQotKwotKwwKLSs7OyBW ZWN0b3IgaW5pdGlhbGl6YXRpb24sIHNldCwgZXh0cmFjdAotKyhkZWZpbmVfZXhwYW5kICJ2ZWNf aW5pdDxtb2RlPiIKLSsgIFsobWF0Y2hfb3BlcmFuZDpWRUNfQyAwICJ2bG9naWNhbF9vcGVyYW5k IiAiIikKLSsgICAobWF0Y2hfb3BlcmFuZDpWRUNfQyAxICJ2ZWNfaW5pdF9vcGVyYW5kIiAiIild Ci0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rewotKyAg cnM2MDAwX2V4cGFuZF92ZWN0b3JfaW5pdCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKLSsg IERPTkU7Ci0rfSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX3NldDxtb2RlPiIKLSsgIFsobWF0 Y2hfb3BlcmFuZDpWRUNfQyAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hfb3Bl cmFuZDo8VkVDX2Jhc2U+IDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotKyAgIChtYXRjaF9vcGVy YW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19P Ul9WU1hfUCAoPE1PREU+bW9kZSkiCi0rewotKyAgcnM2MDAwX2V4cGFuZF92ZWN0b3Jfc2V0IChv cGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIElOVFZBTCAob3BlcmFuZHNbMl0pKTsKLSsgIERPTkU7 Ci0rfSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3Q8bW9kZT4iCi0rICBbKG1hdGNo X29wZXJhbmQ6PFZFQ19iYXNlPiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hf b3BlcmFuZDpWRUNfQyAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hfb3BlcmFu ZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1Jf VlNYX1AgKDxNT0RFPm1vZGUpIgotK3sKLSsgIHJzNjAwMF9leHBhbmRfdmVjdG9yX2V4dHJhY3Qg KG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwKLSsJCQkJSU5UVkFMIChvcGVyYW5kc1syXSkpOwot KyAgRE9ORTsKLSt9KQotKwotKzs7IEludGVybGVhdmUgcGF0dGVybnMKLSsoZGVmaW5lX2V4cGFu ZCAidmVjX2ludGVybGVhdmVfaGlnaHY0c2YiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNG IDAgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsgICAgICAgICh2ZWNfbWVyZ2U6VjRTRgotKwkgKHZl Y19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInZmbG9hdF9vcGVyYW5kIiAiIikK LSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKQotKwkJCQkgICAgIChjb25zdF9pbnQgMikK LSsJCQkJICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAzKV0pKQotKwkg KHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInZmbG9hdF9vcGVyYW5kIiAi IikKLSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQotKwkJCQkgICAgIChjb25zdF9pbnQg MCkKLSsJCQkJICAgICAoY29uc3RfaW50IDMpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAxKV0pKQot KwkgKGNvbnN0X2ludCA1KSkpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKFY0 U0Ztb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJ2ZWNfaW50ZXJsZWF2ZV9sb3d2 NHNmIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJ2ZmxvYXRfb3BlcmFuZCIgIiIp Ci0rICAgICAgICAodmVjX21lcmdlOlY0U0YKLSsJICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29w ZXJhbmQ6VjRTRiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0rCQkJICAocGFyYWxsZWwgWyhjb25z dF9pbnQgMikKLSsJCQkJICAgICAoY29uc3RfaW50IDApCi0rCQkJCSAgICAgKGNvbnN0X2ludCAz KQotKwkJCQkgICAgIChjb25zdF9pbnQgMSldKSkKLSsJICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNo X29wZXJhbmQ6VjRTRiAyICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0rCQkJICAocGFyYWxsZWwgWyhj b25zdF9pbnQgMCkKLSsJCQkJICAgICAoY29uc3RfaW50IDIpCi0rCQkJCSAgICAgKGNvbnN0X2lu dCAxKQotKwkJCQkgICAgIChjb25zdF9pbnQgMyldKSkKLSsJIChjb25zdF9pbnQgNSkpKV0KLSsg ICJWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChWNFNGbW9kZSkiCi0rICAiIikKLSsKLSso ZGVmaW5lX2V4cGFuZCAidmVjX2ludGVybGVhdmVfaGlnaHYyZGYiCi0rICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWMkRGIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJKHZlY19jb25jYXQ6VjJERgot KwkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29wZXJhbmQ6VjJERiAxICJ2ZmxvYXRfb3BlcmFuZCIg IiIpCi0rCQkJKHBhcmFsbGVsIFsoY29uc3RfaW50IDApXSkpCi0rCSAodmVjX3NlbGVjdDpERiAo bWF0Y2hfb3BlcmFuZDpWMkRGIDIgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJCQkocGFyYWxsZWwg Wyhjb25zdF9pbnQgMCldKSkpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgot KyAgIiIpCi0rCi0rKGRlZmluZV9leHBhbmQgInZlY19pbnRlcmxlYXZlX2xvd3YyZGYiCi0rICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJKHZlY19j b25jYXQ6VjJERgotKwkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29wZXJhbmQ6VjJERiAxICJ2Zmxv YXRfb3BlcmFuZCIgIiIpCi0rCQkJKHBhcmFsbGVsIFsoY29uc3RfaW50IDEpXSkpCi0rCSAodmVj X3NlbGVjdDpERiAobWF0Y2hfb3BlcmFuZDpWMkRGIDIgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJ CQkocGFyYWxsZWwgWyhjb25zdF9pbnQgMSldKSkpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAo VjJERm1vZGUpIgotKyAgIiIpCi0rCi0rDAotKzs7IENvbnZlcnQgZG91YmxlIHdvcmQgdHlwZXMg dG8gc2luZ2xlIHdvcmQgdHlwZXMKLSsoZGVmaW5lX2V4cGFuZCAidmVjX3BhY2tfdHJ1bmNfdjJk ZiIKLSsgIFsobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikK LSsgICAobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikKLSsg ICAobWF0Y2hfb3BlcmFuZDpWMkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIildCi0rICAi VkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSAmJiBUQVJHRVRfQUxUSVZFQyIKLSt7Ci0rICBy dHggcjEgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwotKyAgcnR4IHIyID0gZ2VuX3JlZ19ydHgg KFY0U0Ztb2RlKTsKLSsKLSsgIGVtaXRfaW5zbiAoZ2VuX3ZzeF94dmN2ZHBzcCAocjEsIG9wZXJh bmRzWzFdKSk7Ci0rICBlbWl0X2luc24gKGdlbl92c3hfeHZjdmRwc3AgKHIyLCBvcGVyYW5kc1sy XSkpOwotKyAgZW1pdF9pbnNuIChnZW5fdmVjX2V4dHJhY3RfZXZlbnY0c2YgKG9wZXJhbmRzWzBd LCByMSwgcjIpKTsKLSsgIERPTkU7Ci0rfSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX3BhY2tf c2ZpeF90cnVuY192MmRmIgotKyAgWyhtYXRjaF9vcGVyYW5kOlY0U0kgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICIiKQotKyAgIChtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICIiKQotKyAgIChtYXRjaF9vcGVyYW5kOlYyREYgMiAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICIiKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpICYmIFRBUkdFVF9BTFRJ VkVDIgotK3sKLSsgIHJ0eCByMSA9IGdlbl9yZWdfcnR4IChWNFNJbW9kZSk7Ci0rICBydHggcjIg PSBnZW5fcmVnX3J0eCAoVjRTSW1vZGUpOwotKwotKyAgZW1pdF9pbnNuIChnZW5fdnN4X3h2Y3Zk cHN4d3MgKHIxLCBvcGVyYW5kc1sxXSkpOwotKyAgZW1pdF9pbnNuIChnZW5fdnN4X3h2Y3ZkcHN4 d3MgKHIyLCBvcGVyYW5kc1syXSkpOwotKyAgZW1pdF9pbnNuIChnZW5fdmVjX2V4dHJhY3RfZXZl bnY0c2kgKG9wZXJhbmRzWzBdLCByMSwgcjIpKTsKLSsgIERPTkU7Ci0rfSkKLSsKLSsoZGVmaW5l X2V4cGFuZCAidmVjX3BhY2tfdWZpeF90cnVuY192MmRmIgotKyAgWyhtYXRjaF9vcGVyYW5kOlY0 U0kgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIiKQotKyAgIChtYXRjaF9vcGVyYW5kOlYyREYg MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIiKQotKyAgIChtYXRjaF9vcGVyYW5kOlYyREYgMiAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICIiKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1v ZGUpICYmIFRBUkdFVF9BTFRJVkVDIgotK3sKLSsgIHJ0eCByMSA9IGdlbl9yZWdfcnR4IChWNFNJ bW9kZSk7Ci0rICBydHggcjIgPSBnZW5fcmVnX3J0eCAoVjRTSW1vZGUpOwotKwotKyAgZW1pdF9p bnNuIChnZW5fdnN4X3h2Y3ZkcHV4d3MgKHIxLCBvcGVyYW5kc1sxXSkpOwotKyAgZW1pdF9pbnNu IChnZW5fdnN4X3h2Y3ZkcHV4d3MgKHIyLCBvcGVyYW5kc1syXSkpOwotKyAgZW1pdF9pbnNuIChn ZW5fdmVjX2V4dHJhY3RfZXZlbnY0c2kgKG9wZXJhbmRzWzBdLCByMSwgcjIpKTsKLSsgIERPTkU7 Ci0rfSkKLSsKLSs7OyBDb252ZXJ0IHNpbmdsZSB3b3JkIHR5cGVzIHRvIGRvdWJsZSB3b3JkCi0r KGRlZmluZV9leHBhbmQgInZlY191bnBhY2tzX2hpX3Y0c2YiCi0rICBbKG1hdGNoX29wZXJhbmQ6 VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6VjRT RiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChW MkRGbW9kZSkgJiYgVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoVjRTRm1vZGUpIgotK3sK LSsgIHJ0eCByZWcgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwotKwotKyAgZW1pdF9pbnNuIChn ZW5fdmVjX2ludGVybGVhdmVfaGlnaHY0c2YgKHJlZywgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzFd KSk7Ci0rICBlbWl0X2luc24gKGdlbl92c3hfeHZjdnNwZHAgKG9wZXJhbmRzWzBdLCByZWcpKTsK LSsgIERPTkU7Ci0rfSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX3VucGFja3NfbG9fdjRzZiIK LSsgIFsobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikKLSsg ICAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIildCi0rICAi VkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSAmJiBWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZT WF9QIChWNFNGbW9kZSkiCi0rewotKyAgcnR4IHJlZyA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7 Ci0rCi0rICBlbWl0X2luc24gKGdlbl92ZWNfaW50ZXJsZWF2ZV9sb3d2NHNmIChyZWcsIG9wZXJh bmRzWzFdLCBvcGVyYW5kc1sxXSkpOwotKyAgZW1pdF9pbnNuIChnZW5fdnN4X3h2Y3ZzcGRwIChv cGVyYW5kc1swXSwgcmVnKSk7Ci0rICBET05FOwotK30pCi0rCi0rKGRlZmluZV9leHBhbmQgInZl Y191bnBhY2tzX2Zsb2F0X2hpX3Y0c2kiCi0rICBbKG1hdGNoX29wZXJhbmQ6VjJERiAwICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIiIpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkgJiYg VkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoVjRTSW1vZGUpIgotK3sKLSsgIHJ0eCByZWcg PSBnZW5fcmVnX3J0eCAoVjRTSW1vZGUpOwotKwotKyAgZW1pdF9pbnNuIChnZW5fdmVjX2ludGVy bGVhdmVfaGlnaHY0c2kgKHJlZywgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzFdKSk7Ci0rICBlbWl0 X2luc24gKGdlbl92c3hfeHZjdnN4d2RwIChvcGVyYW5kc1swXSwgcmVnKSk7Ci0rICBET05FOwot K30pCi0rCi0rKGRlZmluZV9leHBhbmQgInZlY191bnBhY2tzX2Zsb2F0X2xvX3Y0c2kiCi0rICBb KG1hdGNoX29wZXJhbmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rICAgKG1h dGNoX29wZXJhbmQ6VjRTSSAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpXQotKyAgIlZFQ1RP Ul9VTklUX1ZTWF9QIChWMkRGbW9kZSkgJiYgVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAo VjRTSW1vZGUpIgotK3sKLSsgIHJ0eCByZWcgPSBnZW5fcmVnX3J0eCAoVjRTSW1vZGUpOwotKwot KyAgZW1pdF9pbnNuIChnZW5fdmVjX2ludGVybGVhdmVfbG93djRzaSAocmVnLCBvcGVyYW5kc1sx XSwgb3BlcmFuZHNbMV0pKTsKLSsgIGVtaXRfaW5zbiAoZ2VuX3ZzeF94dmN2c3h3ZHAgKG9wZXJh bmRzWzBdLCByZWcpKTsKLSsgIERPTkU7Ci0rfSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX3Vu cGFja3VfZmxvYXRfaGlfdjRzaSIKLSsgIFsobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hfb3BlcmFuZDpWNFNJIDEgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiIildCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSAmJiBWRUNU T1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChWNFNJbW9kZSkiCi0rewotKyAgcnR4IHJlZyA9IGdl bl9yZWdfcnR4IChWNFNJbW9kZSk7Ci0rCi0rICBlbWl0X2luc24gKGdlbl92ZWNfaW50ZXJsZWF2 ZV9oaWdodjRzaSAocmVnLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMV0pKTsKLSsgIGVtaXRfaW5z biAoZ2VuX3ZzeF94dmN2dXh3ZHAgKG9wZXJhbmRzWzBdLCByZWcpKTsKLSsgIERPTkU7Ci0rfSkK LSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX3VucGFja3VfZmxvYXRfbG9fdjRzaSIKLSsgIFsobWF0 Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hf b3BlcmFuZDpWNFNJIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIildCi0rICAiVkVDVE9SX1VO SVRfVlNYX1AgKFYyREZtb2RlKSAmJiBWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChWNFNJ bW9kZSkiCi0rewotKyAgcnR4IHJlZyA9IGdlbl9yZWdfcnR4IChWNFNJbW9kZSk7Ci0rCi0rICBl bWl0X2luc24gKGdlbl92ZWNfaW50ZXJsZWF2ZV9sb3d2NHNpIChyZWcsIG9wZXJhbmRzWzFdLCBv cGVyYW5kc1sxXSkpOwotKyAgZW1pdF9pbnNuIChnZW5fdnN4X3h2Y3Z1eHdkcCAob3BlcmFuZHNb MF0sIHJlZykpOwotKyAgRE9ORTsKLSt9KQotLS0tIGdjYy9jb25maWcvcnM2MDAwL3NwZS5tZAko Li4uL3RydW5rKQkocmV2aXNpb24gMTQ1Nzc3KQotKysrIGdjYy9jb25maWcvcnM2MDAwL3NwZS5t ZAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDYwMjcpCi1A QCAtOTksNyArOTksNyBAQCAoZGVmaW5lX2luc24gIipkaXZzZjNfZ3ByIgotIAotIDs7IEZsb2F0 aW5nIHBvaW50IGNvbnZlcnNpb24gaW5zdHJ1Y3Rpb25zLgotIAotLShkZWZpbmVfaW5zbiAiZml4 dW5zX3RydW5jZGZzaTIiCi0rKGRlZmluZV9pbnNuICJzcGVfZml4dW5zX3RydW5jZGZzaTIiCi0g ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0gCSh1 bnNpZ25lZF9maXg6U0kgKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIp KSldCi0gICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0U1MDBfRE9VQkxFIgotLS0tIGdj Yy9jb25maWcvcnM2MDAwL2NvbnN0cmFpbnRzLm1kCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3 NzcpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvY29uc3RyYWludHMubWQJKC4uLi9icmFuY2hlcy9p Ym0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTE3LDYgKzE3LDggQEAK LSA7OyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQot IDs7IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLSs7OyBBdmFpbGFibGUgY29u c3RyYWludCBsZXR0ZXJzOiAiZSIsICJrIiwgInUiLCAiQSIsICJCIiwgIkMiLCAiRCIKLSsKLSA7 OyBSZWdpc3RlciBjb25zdHJhaW50cwotIAotIChkZWZpbmVfcmVnaXN0ZXJfY29uc3RyYWludCAi ZiIgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTCi1AQCAtNTAsNiArNTIsMjggQEAg KGRlZmluZV9yZWdpc3Rlcl9jb25zdHJhaW50ICJ5IiAiQ1JfUkVHUwotIChkZWZpbmVfcmVnaXN0 ZXJfY29uc3RyYWludCAieiIgIlhFUl9SRUdTIgotICAgIkBpbnRlcm5hbCIpCi0gCi0rOzsgVXNl IHcgYXMgYSBwcmVmaXggdG8gYWRkIFZTWCBtb2RlcwotKzs7IHZlY3RvciBkb3VibGUgKFYyREYp Ci0rKGRlZmluZV9yZWdpc3Rlcl9jb25zdHJhaW50ICJ3ZCIgInJzNjAwMF92ZWN0b3JfcmVnX2Ns YXNzW1YyREZtb2RlXSIKLSsgICJAaW50ZXJuYWwiKQotKwotKzs7IHZlY3RvciBmbG9hdCAoVjRT RikKLSsoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQgIndmIiAicnM2MDAwX3ZlY3Rvcl9yZWdf Y2xhc3NbVjRTRm1vZGVdIgotKyAgIkBpbnRlcm5hbCIpCi0rCi0rOzsgc2NhbGFyIGRvdWJsZSAo REYpCi0rKGRlZmluZV9yZWdpc3Rlcl9jb25zdHJhaW50ICJ3cyIgInJzNjAwMF92ZWN0b3JfcmVn X2NsYXNzW0RGbW9kZV0iCi0rICAiQGludGVybmFsIikKLSsKLSs7OyBhbnkgVlNYIHJlZ2lzdGVy Ci0rKGRlZmluZV9yZWdpc3Rlcl9jb25zdHJhaW50ICJ3YSIgInJzNjAwMF92c3hfcmVnX2NsYXNz IgotKyAgIkBpbnRlcm5hbCIpCi0rCi0rOzsgQWx0aXZlYyBzdHlsZSBsb2FkL3N0b3JlIHRoYXQg aWdub3JlcyB0aGUgYm90dG9tIGJpdHMgb2YgdGhlIGFkZHJlc3MKLSsoZGVmaW5lX21lbW9yeV9j b25zdHJhaW50ICJ3WiIKLSsgICJJbmRleGVkIG9yIGluZGlyZWN0IG1lbW9yeSBvcGVyYW5kLCBp Z25vcmluZyB0aGUgYm90dG9tIDQgYml0cyIKLSsgIChtYXRjaF9vcGVyYW5kIDAgImFsdGl2ZWNf aW5kZXhlZF9vcl9pbmRpcmVjdF9vcGVyYW5kIikpCi0rCi0gOzsgSW50ZWdlciBjb25zdHJhaW50 cwotIAotIChkZWZpbmVfY29uc3RyYWludCAiSSIKLUBAIC0xNTksMyArMTgzLDcgQEAgKGRlZmlu ZV9jb25zdHJhaW50ICJ0IgotIChkZWZpbmVfY29uc3RyYWludCAiVyIKLSAgICJ2ZWN0b3IgY29u c3RhbnQgdGhhdCBkb2VzIG5vdCByZXF1aXJlIG1lbW9yeSIKLSAgIChtYXRjaF9vcGVyYW5kIDAg ImVhc3lfdmVjdG9yX2NvbnN0YW50IikpCi0rCi0rKGRlZmluZV9jb25zdHJhaW50ICJqIgotKyAg Ilplcm8gdmVjdG9yIGNvbnN0YW50IgotKyAgKG1hdGNoX3Rlc3QgIihvcCA9PSBjb25zdDBfcnR4 IHx8IG9wID09IENPTlNUMF9SVFggKEdFVF9NT0RFIChvcCkpKSIpKQotLS0tIGdjYy9jb25maWcv cnM2MDAwL3ByZWRpY2F0ZXMubWQJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NTc3NykKLSsrKyBn Y2MvY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1t ZWlzc25lcikJKHJldmlzaW9uIDE0NjAyNykKLUBAIC0zOCw2ICszOCwzNyBAQCAoZGVmaW5lX3By ZWRpY2F0ZSAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyCi0gCQkgICAgIHx8IEFMVElWRUNfUkVHTk9f UCAoUkVHTk8gKG9wKSkKLSAJCSAgICAgfHwgUkVHTk8gKG9wKSA+IExBU1RfVklSVFVBTF9SRUdJ U1RFUiIpKSkKLSAKLSs7OyBSZXR1cm4gMSBpZiBvcCBpcyBhIFZTWCByZWdpc3Rlci4KLSsoZGVm aW5lX3ByZWRpY2F0ZSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiCi0rICAgKGFuZCAobWF0Y2hfb3Bl cmFuZCAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLSsJKG1hdGNoX3Rlc3QgIkdFVF9DT0RFIChvcCkg IT0gUkVHCi0rCQkgICAgIHx8IFZTWF9SRUdOT19QIChSRUdOTyAob3ApKQotKwkJICAgICB8fCBS RUdOTyAob3ApID4gTEFTVF9WSVJUVUFMX1JFR0lTVEVSIikpKQotKwotKzs7IFJldHVybiAxIGlm IG9wIGlzIGEgdmVjdG9yIHJlZ2lzdGVyIHRoYXQgb3BlcmF0ZXMgb24gZmxvYXRpbmcgcG9pbnQg dmVjdG9ycwotKzs7IChlaXRoZXIgYWx0aXZlYyBvciBWU1gpLgotKyhkZWZpbmVfcHJlZGljYXRl ICJ2ZmxvYXRfb3BlcmFuZCIKLSsgICAoYW5kIChtYXRjaF9vcGVyYW5kIDAgInJlZ2lzdGVyX29w ZXJhbmQiKQotKwkobWF0Y2hfdGVzdCAiR0VUX0NPREUgKG9wKSAhPSBSRUcKLSsJCSAgICAgfHwg VkZMT0FUX1JFR05PX1AgKFJFR05PIChvcCkpCi0rCQkgICAgIHx8IFJFR05PIChvcCkgPiBMQVNU X1ZJUlRVQUxfUkVHSVNURVIiKSkpCi0rCi0rOzsgUmV0dXJuIDEgaWYgb3AgaXMgYSB2ZWN0b3Ig cmVnaXN0ZXIgdGhhdCBvcGVyYXRlcyBvbiBpbnRlZ2VyIHZlY3RvcnMKLSs7OyAob25seSBhbHRp dmVjLCBWU1ggZG9lc24ndCBzdXBwb3J0IGludGVnZXIgdmVjdG9ycykKLSsoZGVmaW5lX3ByZWRp Y2F0ZSAidmludF9vcGVyYW5kIgotKyAgIChhbmQgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0ZXJf b3BlcmFuZCIpCi0rCShtYXRjaF90ZXN0ICJHRVRfQ09ERSAob3ApICE9IFJFRwotKwkJICAgICB8 fCBWSU5UX1JFR05PX1AgKFJFR05PIChvcCkpCi0rCQkgICAgIHx8IFJFR05PIChvcCkgPiBMQVNU X1ZJUlRVQUxfUkVHSVNURVIiKSkpCi0rCi0rOzsgUmV0dXJuIDEgaWYgb3AgaXMgYSB2ZWN0b3Ig cmVnaXN0ZXIgdG8gZG8gbG9naWNhbCBvcGVyYXRpb25zIG9uIChhbmQsIG9yLAotKzs7IHhvciwg ZXRjLikKLSsoZGVmaW5lX3ByZWRpY2F0ZSAidmxvZ2ljYWxfb3BlcmFuZCIKLSsgICAoYW5kICht YXRjaF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotKwkobWF0Y2hfdGVzdCAiR0VUX0NP REUgKG9wKSAhPSBSRUcKLSsJCSAgICAgfHwgVkxPR0lDQUxfUkVHTk9fUCAoUkVHTk8gKG9wKSkK LSsJCSAgICAgfHwgUkVHTk8gKG9wKSA+IExBU1RfVklSVFVBTF9SRUdJU1RFUiIpKSkKLSsKLSA7 OyBSZXR1cm4gMSBpZiBvcCBpcyBYRVIgcmVnaXN0ZXIuCi0gKGRlZmluZV9wcmVkaWNhdGUgInhl cl9vcGVyYW5kIgotICAgKGFuZCAobWF0Y2hfY29kZSAicmVnIikKLUBAIC0yMzQsNiArMjY1LDEw IEBAIChkZWZpbmVfcHJlZGljYXRlICJlYXN5X2ZwX2NvbnN0YW50IgotIAkgICAgICAmJiBudW1f aW5zbnNfY29uc3RhbnRfd2lkZSAoKEhPU1RfV0lERV9JTlQpIGtbM10pID09IDEpOwotIAotICAg ICBjYXNlIERGbW9kZToKLSsgICAgICAvKiBUaGUgY29uc3RhbnQgMC5mIGlzIGVhc3kgdW5kZXIg VlNYLiAgKi8KLSsgICAgICBpZiAob3AgPT0gQ09OU1QwX1JUWCAoREZtb2RlKSAmJiBWRUNUT1Jf VU5JVF9WU1hfUCAoREZtb2RlKSkKLSsJcmV0dXJuIDE7Ci0rCi0gICAgICAgLyogRm9yY2UgY29u c3RhbnRzIHRvIG1lbW9yeSBiZWZvcmUgcmVsb2FkIHRvIHV0aWxpemUKLSAJIGNvbXByZXNzX2Zs b2F0X2NvbnN0YW50LgotIAkgQXZvaWQgdGhpcyB3aGVuIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1p emF0aW9ucyBpcyBlbmFibGVkCi1AQCAtMzk2LDE2ICs0MzEsMzYgQEAgKGRlZmluZV9wcmVkaWNh dGUgImluZGV4ZWRfb3JfaW5kaXJlY3RfbwotICAgKG1hdGNoX2NvZGUgIm1lbSIpCi0gewotICAg b3AgPSBYRVhQIChvcCwgMCk7Ci0tICBpZiAoVEFSR0VUX0FMVElWRUMKLS0gICAgICAmJiBBTFRJ VkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQotKyAgaWYgKFZFQ1RPUl9NRU1fQUxUSVZFQ19QIChtb2Rl KQotICAgICAgICYmIEdFVF9DT0RFIChvcCkgPT0gQU5ECi0gICAgICAgJiYgR0VUX0NPREUgKFhF WFAgKG9wLCAxKSkgPT0gQ09OU1RfSU5UCi0gICAgICAgJiYgSU5UVkFMIChYRVhQIChvcCwgMSkp ID09IC0xNikKLSAgICAgb3AgPSBYRVhQIChvcCwgMCk7Ci0gCi0rICBlbHNlIGlmIChWRUNUT1Jf TUVNX1ZTWF9QIChtb2RlKQotKwkgICAmJiBHRVRfQ09ERSAob3ApID09IFBSRV9NT0RJRlkpCi0r ICAgIG9wID0gWEVYUCAob3AsIDEpOwotKwotICAgcmV0dXJuIGluZGV4ZWRfb3JfaW5kaXJlY3Rf YWRkcmVzcyAob3AsIG1vZGUpOwotIH0pCi0gCi0rOzsgUmV0dXJuIDEgaWYgdGhlIG9wZXJhbmQg aXMgYW4gaW5kZXhlZCBvciBpbmRpcmVjdCBtZW1vcnkgb3BlcmFuZCB3aXRoIGFuCi0rOzsgQU5E IC0xNiBpbiBpdCwgdXNlZCB0byByZWNvZ25pemUgd2hlbiB3ZSBuZWVkIHRvIHN3aXRjaCB0byBB bHRpdmVjIGxvYWRzCi0rOzsgdG8gcmVhbGlnbiBsb29wcyBpbnN0ZWFkIG9mIFZTWCAoYWx0aXZl YyBzaWxlbnRseSBpZ25vcmVzIHRoZSBib3R0b20gYml0cywKLSs7OyB3aGlsZSBWU1ggdXNlcyB0 aGUgZnVsbCBhZGRyZXNzIGFuZCB0cmFwcykKLSsoZGVmaW5lX3ByZWRpY2F0ZSAiYWx0aXZlY19p bmRleGVkX29yX2luZGlyZWN0X29wZXJhbmQiCi0rICAobWF0Y2hfY29kZSAibWVtIikKLSt7Ci0r ICBvcCA9IFhFWFAgKG9wLCAwKTsKLSsgIGlmIChWRUNUT1JfTUVNX0FMVElWRUNfT1JfVlNYX1Ag KG1vZGUpCi0rICAgICAgJiYgR0VUX0NPREUgKG9wKSA9PSBBTkQKLSsgICAgICAmJiBHRVRfQ09E RSAoWEVYUCAob3AsIDEpKSA9PSBDT05TVF9JTlQKLSsgICAgICAmJiBJTlRWQUwgKFhFWFAgKG9w LCAxKSkgPT0gLTE2KQotKyAgICByZXR1cm4gaW5kZXhlZF9vcl9pbmRpcmVjdF9hZGRyZXNzIChY RVhQIChvcCwgMCksIG1vZGUpOwotKwotKyAgcmV0dXJuIDA7Ci0rfSkKLSsKLSA7OyBSZXR1cm4g MSBpZiB0aGUgb3BlcmFuZCBpcyBhbiBpbmRleGVkIG9yIGluZGlyZWN0IGFkZHJlc3MuCi0gKGRl ZmluZV9zcGVjaWFsX3ByZWRpY2F0ZSAiaW5kZXhlZF9vcl9pbmRpcmVjdF9hZGRyZXNzIgotICAg KGFuZCAobWF0Y2hfdGVzdCAiUkVHX1AgKG9wKQotQEAgLTEzMzYsMyArMTM5MSwxOSBAQCAoZGVm aW5lX3ByZWRpY2F0ZSAic3Rtd19vcGVyYXRpb24iCi0gCi0gICByZXR1cm4gMTsKLSB9KQotKwot Kzs7IFJldHVybiB0cnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgbGVnaXRpbWF0ZSBwYXJhbGxlbCBm b3IgdmVjX2luaXQKLSsoZGVmaW5lX3ByZWRpY2F0ZSAidmVjX2luaXRfb3BlcmFuZCIKLSsgICht YXRjaF9jb2RlICJwYXJhbGxlbCIpCi0rewotKyAgLyogRGlzYWxsb3cgVjJERiBtb2RlIHdpdGgg TUVNJ3MgdW5sZXNzIGJvdGggYXJlIHRoZSBzYW1lIHVuZGVyIFZTWC4gICovCi0rICBpZiAobW9k ZSA9PSBWMkRGbW9kZSAmJiBWRUNUT1JfVU5JVF9WU1hfUCAobW9kZSkpCi0rICAgIHsKLSsgICAg ICBydHggb3AwID0gWFZFQ0VYUCAob3AsIDAsIDApOwotKyAgICAgIHJ0eCBvcDEgPSBYVkVDRVhQ IChvcCwgMCwgMSk7Ci0rICAgICAgaWYgKChNRU1fUCAob3AwKSB8fCBNRU1fUCAob3AxKSkgJiYg IXJ0eF9lcXVhbF9wIChvcDAsIG9wMSkpCi0rCXJldHVybiAwOwotKyAgICB9Ci0rCi0rICByZXR1 cm4gMTsKLSt9KQotLS0tIGdjYy9jb25maWcvcnM2MDAwL3BwYy1hc20uaAkoLi4uL3RydW5rKQko cmV2aXNpb24gMTQ1Nzc3KQotKysrIGdjYy9jb25maWcvcnM2MDAwL3BwYy1hc20uaAkoLi4uL2Jy YW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDYwMjcpCi1AQCAtNjMsNyAr NjMsNyBAQAotICNkZWZpbmUgZjE2CTE2Ci0gI2RlZmluZSBmMTcJMTcKLSAjZGVmaW5lIGYxOAkx OAotLSNkZWZpbmUgZjE5ICAgICAxOQotKyNkZWZpbmUgZjE5CTE5Ci0gI2RlZmluZSBmMjAJMjAK LSAjZGVmaW5lIGYyMQkyMQotICNkZWZpbmUgZjIyCTIyCi1AQCAtNzcsNiArNzcsMTQzIEBACi0g I2RlZmluZSBmMzAJMzAKLSAjZGVmaW5lIGYzMQkzMQotIAotKyNpZmRlZiBfX1ZTWF9fCi0rI2Rl ZmluZSBmMzIJMzIKLSsjZGVmaW5lIGYzMwkzMwotKyNkZWZpbmUgZjM0CTM0Ci0rI2RlZmluZSBm MzUJMzUKLSsjZGVmaW5lIGYzNgkzNgotKyNkZWZpbmUgZjM3CTM3Ci0rI2RlZmluZSBmMzgJMzgK LSsjZGVmaW5lIGYzOQkzOQotKyNkZWZpbmUgZjQwCTQwCi0rI2RlZmluZSBmNDEJNDEKLSsjZGVm aW5lIGY0Mgk0MgotKyNkZWZpbmUgZjQzCTQzCi0rI2RlZmluZSBmNDQJNDQKLSsjZGVmaW5lIGY0 NQk0NQotKyNkZWZpbmUgZjQ2CTQ2Ci0rI2RlZmluZSBmNDcJNDcKLSsjZGVmaW5lIGY0OAk0OAot KyNkZWZpbmUgZjQ5CTQ5Ci0rI2RlZmluZSBmNTAJMzAKLSsjZGVmaW5lIGY1MQk1MQotKyNkZWZp bmUgZjUyCTUyCi0rI2RlZmluZSBmNTMJNTMKLSsjZGVmaW5lIGY1NAk1NAotKyNkZWZpbmUgZjU1 CTU1Ci0rI2RlZmluZSBmNTYJNTYKLSsjZGVmaW5lIGY1Nwk1NwotKyNkZWZpbmUgZjU4CTU4Ci0r I2RlZmluZSBmNTkJNTkKLSsjZGVmaW5lIGY2MAk2MAotKyNkZWZpbmUgZjYxCTYxCi0rI2RlZmlu ZSBmNjIJNjIKLSsjZGVmaW5lIGY2Mwk2MwotKyNlbmRpZgotKwotKyNpZmRlZiBfX0FMVElWRUNf XwotKyNkZWZpbmUgdjAJMAotKyNkZWZpbmUgdjEJMQotKyNkZWZpbmUgdjIJMgotKyNkZWZpbmUg djMJMwotKyNkZWZpbmUgdjQJNAotKyNkZWZpbmUgdjUJNQotKyNkZWZpbmUgdjYJNgotKyNkZWZp bmUgdjcJNwotKyNkZWZpbmUgdjgJOAotKyNkZWZpbmUgdjkJOQotKyNkZWZpbmUgdjEwCTEwCi0r I2RlZmluZSB2MTEJMTEKLSsjZGVmaW5lIHYxMgkxMgotKyNkZWZpbmUgdjEzCTEzCi0rI2RlZmlu ZSB2MTQJMTQKLSsjZGVmaW5lIHYxNQkxNQotKyNkZWZpbmUgdjE2CTE2Ci0rI2RlZmluZSB2MTcJ MTcKLSsjZGVmaW5lIHYxOAkxOAotKyNkZWZpbmUgdjE5CTE5Ci0rI2RlZmluZSB2MjAJMjAKLSsj ZGVmaW5lIHYyMQkyMQotKyNkZWZpbmUgdjIyCTIyCi0rI2RlZmluZSB2MjMJMjMKLSsjZGVmaW5l IHYyNAkyNAotKyNkZWZpbmUgdjI1CTI1Ci0rI2RlZmluZSB2MjYJMjYKLSsjZGVmaW5lIHYyNwky NwotKyNkZWZpbmUgdjI4CTI4Ci0rI2RlZmluZSB2MjkJMjkKLSsjZGVmaW5lIHYzMAkzMAotKyNk ZWZpbmUgdjMxCTMxCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVlNYX18KLSsjZGVmaW5lIHZzMAkw Ci0rI2RlZmluZSB2czEJMQotKyNkZWZpbmUgdnMyCTIKLSsjZGVmaW5lIHZzMwkzCi0rI2RlZmlu ZSB2czQJNAotKyNkZWZpbmUgdnM1CTUKLSsjZGVmaW5lIHZzNgk2Ci0rI2RlZmluZSB2czcJNwot KyNkZWZpbmUgdnM4CTgKLSsjZGVmaW5lIHZzOQk5Ci0rI2RlZmluZSB2czEwCTEwCi0rI2RlZmlu ZSB2czExCTExCi0rI2RlZmluZSB2czEyCTEyCi0rI2RlZmluZSB2czEzCTEzCi0rI2RlZmluZSB2 czE0CTE0Ci0rI2RlZmluZSB2czE1CTE1Ci0rI2RlZmluZSB2czE2CTE2Ci0rI2RlZmluZSB2czE3 CTE3Ci0rI2RlZmluZSB2czE4CTE4Ci0rI2RlZmluZSB2czE5CTE5Ci0rI2RlZmluZSB2czIwCTIw Ci0rI2RlZmluZSB2czIxCTIxCi0rI2RlZmluZSB2czIyCTIyCi0rI2RlZmluZSB2czIzCTIzCi0r I2RlZmluZSB2czI0CTI0Ci0rI2RlZmluZSB2czI1CTI1Ci0rI2RlZmluZSB2czI2CTI2Ci0rI2Rl ZmluZSB2czI3CTI3Ci0rI2RlZmluZSB2czI4CTI4Ci0rI2RlZmluZSB2czI5CTI5Ci0rI2RlZmlu ZSB2czMwCTMwCi0rI2RlZmluZSB2czMxCTMxCi0rI2RlZmluZSB2czMyCTMyCi0rI2RlZmluZSB2 czMzCTMzCi0rI2RlZmluZSB2czM0CTM0Ci0rI2RlZmluZSB2czM1CTM1Ci0rI2RlZmluZSB2czM2 CTM2Ci0rI2RlZmluZSB2czM3CTM3Ci0rI2RlZmluZSB2czM4CTM4Ci0rI2RlZmluZSB2czM5CTM5 Ci0rI2RlZmluZSB2czQwCTQwCi0rI2RlZmluZSB2czQxCTQxCi0rI2RlZmluZSB2czQyCTQyCi0r I2RlZmluZSB2czQzCTQzCi0rI2RlZmluZSB2czQ0CTQ0Ci0rI2RlZmluZSB2czQ1CTQ1Ci0rI2Rl ZmluZSB2czQ2CTQ2Ci0rI2RlZmluZSB2czQ3CTQ3Ci0rI2RlZmluZSB2czQ4CTQ4Ci0rI2RlZmlu ZSB2czQ5CTQ5Ci0rI2RlZmluZSB2czUwCTMwCi0rI2RlZmluZSB2czUxCTUxCi0rI2RlZmluZSB2 czUyCTUyCi0rI2RlZmluZSB2czUzCTUzCi0rI2RlZmluZSB2czU0CTU0Ci0rI2RlZmluZSB2czU1 CTU1Ci0rI2RlZmluZSB2czU2CTU2Ci0rI2RlZmluZSB2czU3CTU3Ci0rI2RlZmluZSB2czU4CTU4 Ci0rI2RlZmluZSB2czU5CTU5Ci0rI2RlZmluZSB2czYwCTYwCi0rI2RlZmluZSB2czYxCTYxCi0r I2RlZmluZSB2czYyCTYyCi0rI2RlZmluZSB2czYzCTYzCi0rI2VuZGlmCi0rCi0gLyoKLSAgKiBN YWNyb3MgdG8gZ2x1ZSB0b2dldGhlciB0d28gdG9rZW5zLgotICAqLwotLS0tIGdjYy9jb25maWcv cnM2MDAwL2xpbnV4NjQub3B0CSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3NzcpCi0rKysgZ2Nj L2NvbmZpZy9yczYwMDAvbGludXg2NC5vcHQJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNz bmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTIwLDUgKzIwLDUgQEAKLSA7IDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLSBtcHJvZmlsZS1rZXJuZWwKLS1UYXJnZXQgUmVwb3J0 IE1hc2soUFJPRklMRV9LRVJORUwpCi0rVGFyZ2V0IFJlcG9ydCBWYXIoVEFSR0VUX1BST0ZJTEVf S0VSTkVMKQotIENhbGwgbWNvdW50IGZvciBwcm9maWxpbmcgYmVmb3JlIGEgZnVuY3Rpb24gcHJv bG9ndWUKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5vcHQJKC4uLi90cnVuaykJKHJldmlz aW9uIDE0NTc3NykKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5vcHQJKC4uLi9icmFuY2hl cy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTMyLDcgKzMyLDcg QEAgVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZAotIFNwZWNpZnkgYml0IHNpemUgb2YgaW1t ZWRpYXRlIFRMUyBvZmZzZXRzCi0gCi0gbWJpdC1hbGlnbgotLVRhcmdldCBSZXBvcnQgTWFzayhO T19CSVRGSUVMRF9UWVBFKQotK1RhcmdldCBSZXBvcnQgVmFyKFRBUkdFVF9OT19CSVRGSUVMRF9U WVBFKQotIEFsaWduIHRvIHRoZSBiYXNlIHR5cGUgb2YgdGhlIGJpdC1maWVsZAotIAotIG1zdHJp Y3QtYWxpZ24KLUBAIC04NywxMSArODcsMTEgQEAgVGFyZ2V0IFJlcG9ydCBNYXNrKEVBQkkpCi0g VXNlIEVBQkkKLSAKLSBtYml0LXdvcmQKLS1UYXJnZXQgUmVwb3J0IE1hc2soTk9fQklURklFTERf V09SRCkKLStUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfTk9fQklURklFTERfV09SRCkKLSBBbGxv dyBiaXQtZmllbGRzIHRvIGNyb3NzIHdvcmQgYm91bmRhcmllcwotIAotIG1yZWduYW1lcwotLVRh cmdldCBNYXNrKFJFR05BTUVTKQotK1RhcmdldCBWYXIoVEFSR0VUX1JFR05BTUVTKQotIFVzZSBh bHRlcm5hdGUgcmVnaXN0ZXIgbmFtZXMKLSAKLSA7OyBGSVhNRTogRG9lcyBub3RoaW5nLgotLS0t IGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaAkoLi4uL3RydW5rKQkocmV2aXNpb24g MTQ1Nzc3KQotKysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaAkoLi4uL2JyYW5j aGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDYwMjcpCi1AQCAtNjQsOSArNjQs MTUgQEAgZXh0ZXJuIGludCBpbnN2ZGlfcnNoaWZ0X3Jsd2ltaV9wIChydHgsIAotIGV4dGVybiBp bnQgcmVnaXN0ZXJzX29rX2Zvcl9xdWFkX3BlZXAgKHJ0eCwgcnR4KTsKLSBleHRlcm4gaW50IG1l bXNfb2tfZm9yX3F1YWRfcGVlcCAocnR4LCBydHgpOwotIGV4dGVybiBib29sIGdwcl9vcl9ncHJf cCAocnR4LCBydHgpOwotK2V4dGVybiBlbnVtIHJlZ19jbGFzcyByczYwMDBfcHJlZmVycmVkX3Jl bG9hZF9jbGFzcyhydHgsIGVudW0gcmVnX2NsYXNzKTsKLSBleHRlcm4gZW51bSByZWdfY2xhc3Mg cnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MgKGVudW0gcmVnX2NsYXNzLAotIAkJCQkJCSAg ICAgZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7Ci0tCi0rZXh0ZXJuIGJvb2wgcnM2MDAwX3NlY29u ZGFyeV9tZW1vcnlfbmVlZGVkIChlbnVtIHJlZ19jbGFzcywgZW51bSByZWdfY2xhc3MsCi0rCQkJ CQkgICAgZW51bSBtYWNoaW5lX21vZGUpOwotK2V4dGVybiBib29sIHJzNjAwMF9jYW5ub3RfY2hh bmdlX21vZGVfY2xhc3MgKGVudW0gbWFjaGluZV9tb2RlLAotKwkJCQkJICAgICBlbnVtIG1hY2hp bmVfbW9kZSwKLSsJCQkJCSAgICAgZW51bSByZWdfY2xhc3MpOwotK2V4dGVybiB2b2lkIHJzNjAw MF9zZWNvbmRhcnlfcmVsb2FkX2lubmVyIChydHgsIHJ0eCwgcnR4LCBib29sKTsKLSBleHRlcm4g aW50IHBhaXJlZF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKHJ0eCwgcnR4LCBydHgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHgsIHJ0eCwgcnR4KTsKLSBleHRl cm4gdm9pZCBwYWlyZWRfZXhwYW5kX3ZlY3Rvcl9tb3ZlIChydHggb3BlcmFuZHNbXSk7Ci1AQCAt MTcwLDcgKzE3Niw2IEBAIGV4dGVybiBpbnQgcnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdCAoZW4K LSAJCQkJICAgICAgZW51bSByZWdfY2xhc3MsIGVudW0gcmVnX2NsYXNzKTsKLSBleHRlcm4gaW50 IHJzNjAwMF9tZW1vcnlfbW92ZV9jb3N0IChlbnVtIG1hY2hpbmVfbW9kZSwgZW51bSByZWdfY2xh c3MsIGludCk7Ci0gZXh0ZXJuIGJvb2wgcnM2MDAwX3Rsc19yZWZlcmVuY2VkX3AgKHJ0eCk7Ci0t ZXh0ZXJuIGludCByczYwMDBfaGFyZF9yZWdub19ucmVncyAoaW50LCBlbnVtIG1hY2hpbmVfbW9k ZSk7Ci0gZXh0ZXJuIHZvaWQgcnM2MDAwX2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlICh2b2lk KTsKLSAKLSAvKiBEZWNsYXJlIGZ1bmN0aW9ucyBpbiByczYwMDAtYy5jICovCi1AQCAtMTg5LDQg KzE5NCw2IEBAIGNvbnN0IGNoYXIgKiByczYwMDBfeGNvZmZfc3RyaXBfZG9sbGFyICgKLSB2b2lk IHJzNjAwMF9maW5hbF9wcmVzY2FuX2luc24gKHJ0eCwgcnR4ICpvcGVyYW5kLCBpbnQgbnVtX29w ZXJhbmRzKTsKLSAKLSBleHRlcm4gYm9vbCByczYwMDBfaGFyZF9yZWdub19tb2RlX29rX3BbXVtG SVJTVF9QU0VVRE9fUkVHSVNURVJdOwotK2V4dGVybiB1bnNpZ25lZCBjaGFyIHJzNjAwMF9jbGFz c19tYXhfbnJlZ3NbXVtMSU1fUkVHX0NMQVNTRVNdOwotK2V4dGVybiB1bnNpZ25lZCBjaGFyIHJz NjAwMF9oYXJkX3JlZ25vX25yZWdzW11bRklSU1RfUFNFVURPX1JFR0lTVEVSXTsKLSAjZW5kaWYg IC8qIHJzNjAwMC1wcm90b3MuaCAqLwotLS0tIGdjYy9jb25maWcvcnM2MDAwL3QtcnM2MDAwCSgu Li4vdHJ1bmspCShyZXZpc2lvbiAxNDU3NzcpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvdC1yczYw MDAJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQot QEAgLTE2LDMgKzE2LDMzIEBAIHJzNjAwMC1jLm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3Jz NjAKLSAKLSAjIFRoZSByczYwMDAgYmFja2VuZCBkb2Vzbid0IGNhdXNlIHdhcm5pbmdzIGluIHRo ZXNlIGZpbGVzLgotIGluc24tY29uZGl0aW9ucy5vLXdhcm4gPQotKwotK01EX0lOQ0xVREVTID0g JChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcmlvczEubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3Jz NjAwMC9yaW9zMi5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjQubWQgXAotKwkk KHNyY2RpcikvY29uZmlnL3JzNjAwMC9tcGMubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAw MC80MHgubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC80NDAubWQgXAotKwkkKHNyY2Rp cikvY29uZmlnL3JzNjAwMC82MDMubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC82eHgu bWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC83eHgubWQgXAotKwkkKHNyY2RpcikvY29u ZmlnL3JzNjAwMC83NDUwLm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvODU0MC5tZCBc Ci0rCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2UzMDBjMmMzLm1kIFwKLSsJJChzcmNkaXIpL2Nv bmZpZy9yczYwMDAvZTUwMG1jLm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcG93ZXI0 Lm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcG93ZXI1Lm1kIFwKLSsJJChzcmNkaXIp L2NvbmZpZy9yczYwMDAvcG93ZXI2Lm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcG93 ZXI3Lm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvY2VsbC5tZCBcCi0rCSQoc3JjZGly KS9jb25maWcvcnM2MDAwL3hmcHUubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9wcmVk aWNhdGVzLm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvY29uc3RyYWludHMubWQgXAot KwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9kYXJ3aW4ubWQgXAotKwkkKHNyY2RpcikvY29uZmln L3JzNjAwMC9zeW5jLm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvdmVjdG9yLm1kIFwK LSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvdnN4Lm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9y czYwMDAvYWx0aXZlYy5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3NwZS5tZCBcCi0r CSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2RmcC5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcvcnM2 MDAwL3BhaXJlZC5tZAotLS0tIGdjYy9jb25maWcvcnM2MDAwL3Bvd2VyNy5tZAkoLi4uL3RydW5r KQkocmV2aXNpb24gMCkKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9wb3dlcjcubWQJKC4uLi9icmFu Y2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTAsMCArMSwz MTggQEAKLSs7OyBTY2hlZHVsaW5nIGRlc2NyaXB0aW9uIGZvciBJQk0gUE9XRVI3IHByb2Nlc3Nv ci4KLSs7OyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rOzsKLSs7OyBDb250cmlidXRlZCBieSBQYXQgSGF1Z2VuIChwdGhhdWdlbkB1cy5pYm0uY29t KS4KLSsKLSs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCi0rOzsKLSs7OyBHQ0MgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKzs7 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkCi0rOzsgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMywgb3IgKGF0IHlvdXIKLSs7OyBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKzs7Ci0r OzsgR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCBXSVRIT1VUCi0rOzsgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCi0rOzsgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotKzs7IExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSs7OwotKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rOzsgYWxvbmcgd2l0aCBHQ0M7IHNl ZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSs7OyA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0rCi0rKGRlZmluZV9hdXRvbWF0b24gInBvd2VyN2l1LHBvd2VyN2xzdSxw b3dlcjd2c3UscG93ZXI3bWlzYyIpCi0rCi0rKGRlZmluZV9jcHVfdW5pdCAiaXUxX3Bvd2VyNyxp dTJfcG93ZXI3IiAicG93ZXI3aXUiKQotKyhkZWZpbmVfY3B1X3VuaXQgImxzdTFfcG93ZXI3LGxz dTJfcG93ZXI3IiAicG93ZXI3bHN1IikKLSsoZGVmaW5lX2NwdV91bml0ICJ2c3UxX3Bvd2VyNyx2 c3UyX3Bvd2VyNyIgInBvd2VyN3ZzdSIpCi0rKGRlZmluZV9jcHVfdW5pdCAiYnB1X3Bvd2VyNyxj cnVfcG93ZXI3IiAicG93ZXI3bWlzYyIpCi0rKGRlZmluZV9jcHVfdW5pdCAiZHUxX3Bvd2VyNyxk dTJfcG93ZXI3LGR1M19wb3dlcjcsZHU0X3Bvd2VyNyxkdTVfcG93ZXI3IgotKyAgICAgICAgICAg ICAgICAgInBvd2VyN21pc2MiKQotKwotKwotKyhkZWZpbmVfcmVzZXJ2YXRpb24gIkRVX3Bvd2Vy NyIKLSsJCSAgICAiZHUxX3Bvd2VyN3xkdTJfcG93ZXI3fGR1M19wb3dlcjd8ZHU0X3Bvd2VyNyIp Ci0rCi0rKGRlZmluZV9yZXNlcnZhdGlvbiAiRFUyRl9wb3dlcjciCi0rCQkgICAgImR1MV9wb3dl cjcrZHUyX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9yZXNlcnZhdGlvbiAiRFU0X3Bvd2VyNyIKLSsJ CSAgICAiZHUxX3Bvd2VyNytkdTJfcG93ZXI3K2R1M19wb3dlcjcrZHU0X3Bvd2VyNyIpCi0rCi0r KGRlZmluZV9yZXNlcnZhdGlvbiAiRlhVX3Bvd2VyNyIKLSsgICAgICAgICAgICAgICAgICAgICJp dTFfcG93ZXI3fGl1Ml9wb3dlcjciKQotKwotKyhkZWZpbmVfcmVzZXJ2YXRpb24gIlZTVV9wb3dl cjciCi0rICAgICAgICAgICAgICAgICAgICAidnN1MV9wb3dlcjd8dnN1Ml9wb3dlcjciKQotKwot KyhkZWZpbmVfcmVzZXJ2YXRpb24gIkxTVV9wb3dlcjciCi0rICAgICAgICAgICAgICAgICAgICAi bHN1MV9wb3dlcjd8bHN1Ml9wb3dlcjciKQotKwotKwotKzsgRGlzcGF0Y2ggc2xvdHMgYXJlIGFs bG9jYXRlZCBpbiBvcmRlciBjb25mb3JtaW5nIHRvIHByb2dyYW0gb3JkZXIuCi0rKGFic2VuY2Vf c2V0ICJkdTFfcG93ZXI3IiAiZHUyX3Bvd2VyNyxkdTNfcG93ZXI3LGR1NF9wb3dlcjcsZHU1X3Bv d2VyNyIpCi0rKGFic2VuY2Vfc2V0ICJkdTJfcG93ZXI3IiAiZHUzX3Bvd2VyNyxkdTRfcG93ZXI3 LGR1NV9wb3dlcjciKQotKyhhYnNlbmNlX3NldCAiZHUzX3Bvd2VyNyIgImR1NF9wb3dlcjcsZHU1 X3Bvd2VyNyIpCi0rKGFic2VuY2Vfc2V0ICJkdTRfcG93ZXI3IiAiZHU1X3Bvd2VyNyIpCi0rCi0r Ci0rOyBMUyBVbml0Ci0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbG9hZCIgMgot KyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImxvYWQiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAi cG93ZXI3IikpCi0rICAiRFVfcG93ZXI3LExTVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAicG93ZXI3LWxvYWQtZXh0IiAzCi0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi bG9hZF9leHQiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFUyRl9w b3dlcjcsTFNVX3Bvd2VyNyxGWFVfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRp b24gInBvd2VyNy1sb2FkLXVwZGF0ZSIgMgotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImxvYWRf dSIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVTJGX3Bvd2VyNyxM U1VfcG93ZXI3K0ZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93 ZXI3LWxvYWQtdXBkYXRlLWluZGV4ZWQiIDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJsb2Fk X3V4IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVNF9wb3dlcjcs RlhVX3Bvd2VyNyxMU1VfcG93ZXI3K0ZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAicG93ZXI3LWxvYWQtZXh0LXVwZGF0ZSIgNAotKyAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgImxvYWRfZXh0X3UiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAi RFUyRl9wb3dlcjcsTFNVX3Bvd2VyNytGWFVfcG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LWxvYWQtZXh0LXVwZGF0ZS1pbmRleGVkIiA0Ci0r ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibG9hZF9leHRfdXgiKQotKyAgICAgICAoZXFfYXR0ciAi Y3B1IiAicG93ZXI3IikpCi0rICAiRFU0X3Bvd2VyNyxGWFVfcG93ZXI3LExTVV9wb3dlcjcrRlhV X3Bvd2VyNyxGWFVfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2Vy Ny1mcGxvYWQiIDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJmcGxvYWQiKQotKyAgICAgICAo ZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3LExTVV9wb3dlcjciKQotKwot KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LWZwbG9hZC11cGRhdGUiIDMKLSsgIChh bmQgKGVxX2F0dHIgInR5cGUiICJmcGxvYWRfdSxmcGxvYWRfdXgiKQotKyAgICAgICAoZXFfYXR0 ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFUyRl9wb3dlcjcsTFNVX3Bvd2VyNytGWFVfcG93ZXI3 IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1zdG9yZSIgNiA7IHN0b3Jl LWZvcndhcmRpbmcgbGF0ZW5jeQotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInN0b3JlIikKLSsg ICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVX3Bvd2VyNyxMU1VfcG93ZXI3 K0ZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXN0b3Jl LXVwZGF0ZSIgNgotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInN0b3JlX3UiKQotKyAgICAgICAo ZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFUyRl9wb3dlcjcsTFNVX3Bvd2VyNytGWFVf cG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3 LXN0b3JlLXVwZGF0ZS1pbmRleGVkIiA2Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3RvcmVf dXgiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFU0X3Bvd2VyNyxM U1VfcG93ZXI3K0ZYVV9wb3dlcjcsRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJwb3dlcjctZnBzdG9yZSIgNgotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZwc3Rv cmUiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3LExT VV9wb3dlcjcrVlNVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dl cjctZnBzdG9yZS11cGRhdGUiIDYKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJmcHN0b3JlX3Us ZnBzdG9yZV91eCIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVV9w b3dlcjcsTFNVX3Bvd2VyNytWU1VfcG93ZXI3K0ZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5z bl9yZXNlcnZhdGlvbiAicG93ZXI3LWxhcngiIDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJs b2FkX2wiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFU0X3Bvd2Vy NyxMU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1zdGN4 IiAxMAotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInN0b3JlX2MiKQotKyAgICAgICAoZXFfYXR0 ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFU0X3Bvd2VyNyxMU1VfcG93ZXI3IikKLSsKLSsoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy12ZWNsb2FkIiAzCi0rICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAidmVjbG9hZCIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsg ICJEVV9wb3dlcjcsTFNVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJw b3dlcjctdmVjc3RvcmUiIDYKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJ2ZWNzdG9yZSIpCi0r ICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVV9wb3dlcjcsTFNVX3Bvd2Vy NytWU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1zeW5j IiAxMQotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInN5bmMiKQotKyAgICAgICAoZXFfYXR0ciAi Y3B1IiAicG93ZXI3IikpCi0rICAiRFU0X3Bvd2VyNyxMU1VfcG93ZXI3IikKLSsKLSsKLSs7IEZY IFVuaXQKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1pbnRlZ2VyIiAxCi0rICAo YW5kIChlcV9hdHRyICJ0eXBlIiAiaW50ZWdlcixpbnNlcnRfd29yZCxpbnNlcnRfZHdvcmQsc2hp ZnQsdHJhcCxcCi0rICAgICAgICAgICAgICAgICAgICAgICAgdmFyX3NoaWZ0X3JvdGF0ZSxleHRz IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVX3Bvd2VyNyxGWFVf cG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1jbnRseiIgMgot KyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImNudGx6IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIg InBvd2VyNyIpKQotKyAgIkRVX3Bvd2VyNyxGWFVfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25f cmVzZXJ2YXRpb24gInBvd2VyNy10d28iIDIKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJ0d28i KQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3K0RVX3Bv d2VyNyxGWFVfcG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAicG93ZXI3LXRocmVlIiAzCi0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAidGhyZWUiKQotKyAg ICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3K0RVX3Bvd2VyNytE VV9wb3dlcjcsRlhVX3Bvd2VyNyxGWFVfcG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVf aW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LWNtcCIgMQotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIg ImNtcCxmYXN0X2NvbXBhcmUiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0r ICAiRFVfcG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi cG93ZXI3LWNvbXBhcmUiIDIKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJjb21wYXJlLGRlbGF5 ZWRfY29tcGFyZSx2YXJfZGVsYXllZF9jb21wYXJlIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIg InBvd2VyNyIpKQotKyAgIkRVMkZfcG93ZXI3LEZYVV9wb3dlcjcsRlhVX3Bvd2VyNyIpCi0rCi0r KGRlZmluZV9ieXBhc3MgMyAicG93ZXI3LWNtcCxwb3dlcjctY29tcGFyZSIgInBvd2VyNy1jcmxv Z2ljYWwscG93ZXI3LWRlbGF5ZWRjciIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJw b3dlcjctbXVsIiA0Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW11bCxpbXVsMixpbXVsMyxs bXVsIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVX3Bvd2VyNyxG WFVfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1tdWwtY29t cGFyZSIgNQotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImltdWxfY29tcGFyZSxsbXVsX2NvbXBh cmUiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFUyRl9wb3dlcjcs RlhVX3Bvd2VyNyxub3RoaW5nKjMsRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJwb3dlcjctaWRpdiIgMzYKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpZGl2IikK LSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVMkZfcG93ZXI3LGl1MV9w b3dlcjcqMzZ8aXUyX3Bvd2VyNyozNiIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJw b3dlcjctbGRpdiIgNjgKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJsZGl2IikKLSsgICAgICAg KGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVMkZfcG93ZXI3LGl1MV9wb3dlcjcqNjh8 aXUyX3Bvd2VyNyo2OCIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctaXN5 bmMiIDEgOwotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImlzeW5jIikKLSsgICAgICAgKGVxX2F0 dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVNF9wb3dlcjcsRlhVX3Bvd2VyNyIpCi0rCi0rCi0r OyBDUiBVbml0Ci0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbXRqbXByIiA0Ci0r ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibXRqbXByIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIg InBvd2VyNyIpKQotKyAgImR1MV9wb3dlcjcsRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJwb3dlcjctbWZqbXByIiA1Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi bWZqbXByIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgImR1MV9wb3dl cjcsY3J1X3Bvd2VyNytGWFVfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24g InBvd2VyNy1jcmxvZ2ljYWwiIDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJjcl9sb2dpY2Fs IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgImR1MV9wb3dlcjcsY3J1 X3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctZGVsYXllZGNy IiAzCi0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiZGVsYXllZF9jciIpCi0rICAgICAgIChlcV9h dHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJkdTFfcG93ZXI3LGNydV9wb3dlcjciKQotKwotKyhk ZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LW1mY3IiIDYKLSsgIChhbmQgKGVxX2F0dHIg InR5cGUiICJtZmNyIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgImR1 MV9wb3dlcjcsY3J1X3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dl cjctbWZjcmYiIDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJtZmNyZiIpCi0rICAgICAgIChl cV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJkdTFfcG93ZXI3LGNydV9wb3dlcjciKQotKwot KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LW10Y3IiIDMKLSsgIChhbmQgKGVxX2F0 dHIgInR5cGUiICJtdGNyIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAg IkRVNF9wb3dlcjcsY3J1X3Bvd2VyNytGWFVfcG93ZXI3IikKLSsKLSsKLSs7IEJSIFVuaXQKLSs7 IEJyYW5jaGVzIHRha2UgZGlzcGF0Y2ggU2xvdCA0LiAgVGhlIHByZXNlbmNlX3NldHMgcHJldmVu dCBvdGhlciBpbnNuIGZyb20KLSs7IGdyYWJiaW5nIHByZXZpb3VzIGRpc3BhdGNoIHNsb3RzIG9u Y2UgdGhpcyBpcyBhc3NpZ25lZC4KLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1i cmFuY2giIDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJqbXByZWcsYnJhbmNoIikKLSsgICAg ICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIihkdTVfcG93ZXI3XAotKyAgIHxkdTRf cG93ZXI3K2R1NV9wb3dlcjdcCi0rICAgfGR1M19wb3dlcjcrZHU0X3Bvd2VyNytkdTVfcG93ZXI3 XAotKyAgIHxkdTJfcG93ZXI3K2R1M19wb3dlcjcrZHU0X3Bvd2VyNytkdTVfcG93ZXI3XAotKyAg IHxkdTFfcG93ZXI3K2R1Ml9wb3dlcjcrZHUzX3Bvd2VyNytkdTRfcG93ZXI3K2R1NV9wb3dlcjcp LGJwdV9wb3dlcjciKQotKwotKwotKzsgVlMgVW5pdCAoaW5jbHVkZXMgRlAvVlNYL1ZNWC9ERlAp Ci0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctZnAiIDYKLSsgIChhbmQgKGVxX2F0 dHIgInR5cGUiICJmcCxkbXVsIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQot KyAgIkRVX3Bvd2VyNyxWU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2J5cGFzcyA4ICJwb3dlcjct ZnAiICJwb3dlcjctYnJhbmNoIikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2Vy Ny1mcGNvbXBhcmUiIDQKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJmcGNvbXBhcmUiKQotKyAg ICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3LFZTVV9wb3dlcjci KQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXNkaXYiIDI2Ci0rICAoYW5k IChlcV9hdHRyICJ0eXBlIiAic2RpdiIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjci KSkKLSsgICJEVV9wb3dlcjcsVlNVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0 aW9uICJwb3dlcjctZGRpdiIgMzIKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJkZGl2IikKLSsg ICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVX3Bvd2VyNyxWU1VfcG93ZXI3 IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1zcXJ0IiAzMQotKyAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgInNzcXJ0IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2Vy NyIpKQotKyAgIkRVX3Bvd2VyNyxWU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2 YXRpb24gInBvd2VyNy1kc3FydCIgNDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJkc3FydCIp Ci0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVV9wb3dlcjcsVlNVX3Bv d2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctdmVjc2ltcGxlIiAy Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIikKLSsgICAgICAgKGVxX2F0dHIg ImNwdSIgInBvd2VyNyIpKQotKyAgImR1MV9wb3dlcjcsVlNVX3Bvd2VyNyIpCi0rCi0rKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctdmVjY21wIiA3Ci0rICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAidmVjY21wIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgImR1 MV9wb3dlcjcsVlNVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dl cjctdmVjZmxvYXQiIDcKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpCi0rICAg ICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJkdTFfcG93ZXI3LFZTVV9wb3dlcjci KQotKwotKyhkZWZpbmVfYnlwYXNzIDYgInBvd2VyNy12ZWNmbG9hdCIgInBvd2VyNy12ZWNmbG9h dCIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctdmVjY29tcGxleCIgNwot KyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInZlY2NvbXBsZXgiKQotKyAgICAgICAoZXFfYXR0ciAi Y3B1IiAicG93ZXI3IikpCi0rICAiZHUxX3Bvd2VyNyxWU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy12ZWNwZXJtIiAzCi0rICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAidmVjcGVybSIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJk dTJfcG93ZXI3LFZTVV9wb3dlcjciKQotLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC1jLmMJ KC4uLi90cnVuaykJKHJldmlzaW9uIDE0NTc3NykKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYw MDAtYy5jCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NjAy NykKLUBAIC0xMDYsMTQgKzEwNiwxNyBAQCBhbHRpdmVjX2NhdGVnb3JpemVfa2V5d29yZCAoY29u c3QgY3BwX3RvCi0gICAgICAgaWYgKGlkZW50ID09IENfQ1BQX0hBU0hOT0RFICh2ZWN0b3Jfa2V5 d29yZCkpCi0gCXJldHVybiBDX0NQUF9IQVNITk9ERSAoX192ZWN0b3Jfa2V5d29yZCk7Ci0gCi0t ICAgICAgaWYgKGlkZW50ID09IENfQ1BQX0hBU0hOT0RFIChwaXhlbF9rZXl3b3JkKSkKLS0JcmV0 dXJuIENfQ1BQX0hBU0hOT0RFIChfX3BpeGVsX2tleXdvcmQpOwotKyAgICAgIGlmIChUQVJHRVRf QUxUSVZFQykKLSsJewotKwkgIGlmIChpZGVudCA9PSBDX0NQUF9IQVNITk9ERSAocGl4ZWxfa2V5 d29yZCkpCi0rCSAgICByZXR1cm4gQ19DUFBfSEFTSE5PREUgKF9fcGl4ZWxfa2V5d29yZCk7Ci0g Ci0tICAgICAgaWYgKGlkZW50ID09IENfQ1BQX0hBU0hOT0RFIChib29sX2tleXdvcmQpKQotLQly ZXR1cm4gQ19DUFBfSEFTSE5PREUgKF9fYm9vbF9rZXl3b3JkKTsKLSsJICBpZiAoaWRlbnQgPT0g Q19DUFBfSEFTSE5PREUgKGJvb2xfa2V5d29yZCkpCi0rCSAgICByZXR1cm4gQ19DUFBfSEFTSE5P REUgKF9fYm9vbF9rZXl3b3JkKTsKLSAKLS0gICAgICBpZiAoaWRlbnQgPT0gQ19DUFBfSEFTSE5P REUgKF9Cb29sX2tleXdvcmQpKQotLQlyZXR1cm4gQ19DUFBfSEFTSE5PREUgKF9fYm9vbF9rZXl3 b3JkKTsKLSsJICBpZiAoaWRlbnQgPT0gQ19DUFBfSEFTSE5PREUgKF9Cb29sX2tleXdvcmQpKQot KwkgICAgcmV0dXJuIENfQ1BQX0hBU0hOT0RFIChfX2Jvb2xfa2V5d29yZCk7Ci0rCX0KLSAKLSAg ICAgICByZXR1cm4gaWRlbnQ7Ci0gICAgIH0KLUBAIC0xMzEsMjMgKzEzNCwyNiBAQCBpbml0X3Zl Y3Rvcl9rZXl3b3JkcyAodm9pZCkKLSAgIF9fdmVjdG9yX2tleXdvcmQgPSBnZXRfaWRlbnRpZmll ciAoIl9fdmVjdG9yIik7Ci0gICBDX0NQUF9IQVNITk9ERSAoX192ZWN0b3Jfa2V5d29yZCktPmZs YWdzIHw9IE5PREVfQ09ORElUSU9OQUw7Ci0gCi0tICBfX3BpeGVsX2tleXdvcmQgPSBnZXRfaWRl bnRpZmllciAoIl9fcGl4ZWwiKTsKLS0gIENfQ1BQX0hBU0hOT0RFIChfX3BpeGVsX2tleXdvcmQp LT5mbGFncyB8PSBOT0RFX0NPTkRJVElPTkFMOwotLQotLSAgX19ib29sX2tleXdvcmQgPSBnZXRf aWRlbnRpZmllciAoIl9fYm9vbCIpOwotLSAgQ19DUFBfSEFTSE5PREUgKF9fYm9vbF9rZXl3b3Jk KS0+ZmxhZ3MgfD0gTk9ERV9DT05ESVRJT05BTDsKLS0KLSAgIHZlY3Rvcl9rZXl3b3JkID0gZ2V0 X2lkZW50aWZpZXIgKCJ2ZWN0b3IiKTsKLSAgIENfQ1BQX0hBU0hOT0RFICh2ZWN0b3Jfa2V5d29y ZCktPmZsYWdzIHw9IE5PREVfQ09ORElUSU9OQUw7Ci0gCi0tICBwaXhlbF9rZXl3b3JkID0gZ2V0 X2lkZW50aWZpZXIgKCJwaXhlbCIpOwotLSAgQ19DUFBfSEFTSE5PREUgKHBpeGVsX2tleXdvcmQp LT5mbGFncyB8PSBOT0RFX0NPTkRJVElPTkFMOwotKyAgaWYgKFRBUkdFVF9BTFRJVkVDKQotKyAg ICB7Ci0rICAgICAgX19waXhlbF9rZXl3b3JkID0gZ2V0X2lkZW50aWZpZXIgKCJfX3BpeGVsIik7 Ci0rICAgICAgQ19DUFBfSEFTSE5PREUgKF9fcGl4ZWxfa2V5d29yZCktPmZsYWdzIHw9IE5PREVf Q09ORElUSU9OQUw7Ci0rCi0rICAgICAgX19ib29sX2tleXdvcmQgPSBnZXRfaWRlbnRpZmllciAo Il9fYm9vbCIpOwotKyAgICAgIENfQ1BQX0hBU0hOT0RFIChfX2Jvb2xfa2V5d29yZCktPmZsYWdz IHw9IE5PREVfQ09ORElUSU9OQUw7Ci0gCi0tICBib29sX2tleXdvcmQgPSBnZXRfaWRlbnRpZmll ciAoImJvb2wiKTsKLS0gIENfQ1BQX0hBU0hOT0RFIChib29sX2tleXdvcmQpLT5mbGFncyB8PSBO T0RFX0NPTkRJVElPTkFMOwotKyAgICAgIHBpeGVsX2tleXdvcmQgPSBnZXRfaWRlbnRpZmllciAo InBpeGVsIik7Ci0rICAgICAgQ19DUFBfSEFTSE5PREUgKHBpeGVsX2tleXdvcmQpLT5mbGFncyB8 PSBOT0RFX0NPTkRJVElPTkFMOwotIAotLSAgX0Jvb2xfa2V5d29yZCA9IGdldF9pZGVudGlmaWVy ICgiX0Jvb2wiKTsKLS0gIENfQ1BQX0hBU0hOT0RFIChfQm9vbF9rZXl3b3JkKS0+ZmxhZ3MgfD0g Tk9ERV9DT05ESVRJT05BTDsKLSsgICAgICBib29sX2tleXdvcmQgPSBnZXRfaWRlbnRpZmllciAo ImJvb2wiKTsKLSsgICAgICBDX0NQUF9IQVNITk9ERSAoYm9vbF9rZXl3b3JkKS0+ZmxhZ3MgfD0g Tk9ERV9DT05ESVRJT05BTDsKLSsKLSsgICAgICBfQm9vbF9rZXl3b3JkID0gZ2V0X2lkZW50aWZp ZXIgKCJfQm9vbCIpOwotKyAgICAgIENfQ1BQX0hBU0hOT0RFIChfQm9vbF9rZXl3b3JkKS0+Zmxh Z3MgfD0gTk9ERV9DT05ESVRJT05BTDsKLSsgICAgfQotIH0KLSAKLSAvKiBDYWxsZWQgdG8gZGVj aWRlIHdoZXRoZXIgYSBjb25kaXRpb25hbCBtYWNybyBzaG91bGQgYmUgZXhwYW5kZWQuCi1AQCAt MjE0LDcgKzIyMCw4IEBAIHJzNjAwMF9tYWNyb190b19leHBhbmQgKGNwcF9yZWFkZXIgKnBmaWwK LSAJICBpZiAocmlkX2NvZGUgPT0gUklEX1VOU0lHTkVEIHx8IHJpZF9jb2RlID09IFJJRF9MT05H Ci0gCSAgICAgIHx8IHJpZF9jb2RlID09IFJJRF9TSE9SVCB8fCByaWRfY29kZSA9PSBSSURfU0lH TkVECi0gCSAgICAgIHx8IHJpZF9jb2RlID09IFJJRF9JTlQgfHwgcmlkX2NvZGUgPT0gUklEX0NI QVIKLS0JICAgICAgfHwgcmlkX2NvZGUgPT0gUklEX0ZMT0FUKQotKwkgICAgICB8fCByaWRfY29k ZSA9PSBSSURfRkxPQVQKLSsJICAgICAgfHwgKHJpZF9jb2RlID09IFJJRF9ET1VCTEUgJiYgVEFS R0VUX1ZTWCkpCi0gCSAgICB7Ci0gCSAgICAgIGV4cGFuZF90aGlzID0gQ19DUFBfSEFTSE5PREUg KF9fdmVjdG9yX2tleXdvcmQpOwotIAkgICAgICAvKiBJZiB0aGUgbmV4dCBrZXl3b3JkIGlzIGJv b2wgb3IgcGl4ZWwsIGl0Ci1AQCAtMjg0LDEzICsyOTEsMTQgQEAgcnM2MDAwX2NwdV9jcHBfYnVp bHRpbnMgKGNwcF9yZWFkZXIgKnBmaQotICAgICBidWlsdGluX2RlZmluZSAoIl9BUkNIX1BXUjZY Iik7Ci0gICBpZiAoISBUQVJHRVRfUE9XRVIgJiYgISBUQVJHRVRfUE9XRVIyICYmICEgVEFSR0VU X1BPV0VSUEMpCi0gICAgIGJ1aWx0aW5fZGVmaW5lICgiX0FSQ0hfQ09NIik7Ci0rICBpZiAoVEFS R0VUX1BPUENOVEQpCi0rICAgIGJ1aWx0aW5fZGVmaW5lICgiX0FSQ0hfUFdSNyIpOwotICAgaWYg KFRBUkdFVF9BTFRJVkVDKQotICAgICB7Ci0gICAgICAgYnVpbHRpbl9kZWZpbmUgKCJfX0FMVElW RUNfXyIpOwotICAgICAgIGJ1aWx0aW5fZGVmaW5lICgiX19WRUNfXz0xMDIwNiIpOwotIAotICAg ICAgIC8qIERlZmluZSB0aGUgQWx0aVZlYyBzeW50YWN0aWMgZWxlbWVudHMuICAqLwotLSAgICAg IGJ1aWx0aW5fZGVmaW5lICgiX192ZWN0b3I9X19hdHRyaWJ1dGVfXygoYWx0aXZlYyh2ZWN0b3Jf XykpKSIpOwotICAgICAgIGJ1aWx0aW5fZGVmaW5lICgiX19waXhlbD1fX2F0dHJpYnV0ZV9fKChh bHRpdmVjKHBpeGVsX18pKSkgdW5zaWduZWQgc2hvcnQiKTsKLSAgICAgICBidWlsdGluX2RlZmlu ZSAoIl9fYm9vbD1fX2F0dHJpYnV0ZV9fKChhbHRpdmVjKGJvb2xfXykpKSB1bnNpZ25lZCIpOwot IAotQEAgLTI5OCwxMSArMzA2LDIwIEBAIHJzNjAwMF9jcHVfY3BwX2J1aWx0aW5zIChjcHBfcmVh ZGVyICpwZmkKLSAJewotIAkgIC8qIERlZmluZSB0aGlzIHdoZW4gc3VwcG9ydGluZyBjb250ZXh0 LXNlbnNpdGl2ZSBrZXl3b3Jkcy4gICovCi0gCSAgYnVpbHRpbl9kZWZpbmUgKCJfX0FQUExFX0FM VElWRUNfXyIpOwotLQkgIAotLQkgIGJ1aWx0aW5fZGVmaW5lICgidmVjdG9yPXZlY3RvciIpOwot KwotIAkgIGJ1aWx0aW5fZGVmaW5lICgicGl4ZWw9cGl4ZWwiKTsKLSAJICBidWlsdGluX2RlZmlu ZSAoImJvb2w9Ym9vbCIpOwotIAkgIGJ1aWx0aW5fZGVmaW5lICgiX0Jvb2w9X0Jvb2wiKTsKLSsJ fQotKyAgICB9Ci0rICBpZiAoVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VUX1ZTWCkKLSsgICAgewot KyAgICAgIC8qIERlZmluZSB0aGUgQWx0aVZlYy9WU1ggc3ludGFjdGljIGVsZW1lbnRzLiAgKi8K LSsgICAgICBidWlsdGluX2RlZmluZSAoIl9fdmVjdG9yPV9fYXR0cmlidXRlX18oKGFsdGl2ZWMo dmVjdG9yX18pKSkiKTsKLSsKLSsgICAgICBpZiAoIWZsYWdfaXNvKQotKwl7Ci0rCSAgYnVpbHRp bl9kZWZpbmUgKCJ2ZWN0b3I9dmVjdG9yIik7Ci0gCSAgaW5pdF92ZWN0b3Jfa2V5d29yZHMgKCk7 Ci0gCi0gCSAgLyogRW5hYmxlIGNvbnRleHQtc2Vuc2l0aXZlIG1hY3Jvcy4gICovCi1AQCAtMzI2 LDYgKzM0Myw4IEBAIHJzNjAwMF9jcHVfY3BwX2J1aWx0aW5zIChjcHBfcmVhZGVyICpwZmkKLSAg IC8qIFVzZWQgYnkgbGlic3RkYysrLiAgKi8KLSAgIGlmIChUQVJHRVRfTk9fTFdTWU5DKQotICAg ICBidWlsdGluX2RlZmluZSAoIl9fTk9fTFdTWU5DX18iKTsKLSsgIGlmIChUQVJHRVRfVlNYKQot KyAgICBidWlsdGluX2RlZmluZSAoIl9fVlNYX18iKTsKLSAKLSAgIC8qIE1heSBiZSBvdmVycmlk ZGVuIGJ5IHRhcmdldCBjb25maWd1cmF0aW9uLiAgKi8KLSAgIFJTNjAwMF9DUFVfQ1BQX0VORElB Tl9CVUlMVElOUygpOwotQEAgLTUwNCw2ICs1MjMsOCBAQCBjb25zdCBzdHJ1Y3QgYWx0aXZlY19i dWlsdGluX3R5cGVzIGFsdGl2Ci0gICAgIFJTNjAwMF9CVElfdW5zaWduZWRfVjRTSSwgUlM2MDAw X0JUSV91bnNpZ25lZF9WNFNJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0ksIDAgfSwKLSAgIHsg QUxUSVZFQ19CVUlMVElOX1ZFQ19BREQsIEFMVElWRUNfQlVJTFRJTl9WQURERlAsCi0gICAgIFJT NjAwMF9CVElfVjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIDAgfSwKLSsg IHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19BREQsIFZTWF9CVUlMVElOX1hWQURERFAsCi0rICAgIFJT NjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX1YyREYsIDAgfSwKLSAg IHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19WQURERlAsIEFMVElWRUNfQlVJTFRJTl9WQURERlAsCi0g ICAgIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIDAg fSwKLSAgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19WQUREVVdNLCBBTFRJVkVDX0JVSUxUSU5fVkFE RFVXTSwKLUBAIC02NDcsNiArNjY4LDEyIEBAIGNvbnN0IHN0cnVjdCBhbHRpdmVjX2J1aWx0aW5f dHlwZXMgYWx0aXYKLSAgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19BTkQsIEFMVElWRUNfQlVJTFRJ Tl9WQU5ELAotICAgICBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfYm9vbF9WNFNJLCBSUzYw MDBfQlRJX1Y0U0YsIDAgfSwKLSAgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19BTkQsIEFMVElWRUNf QlVJTFRJTl9WQU5ELAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2 MDAwX0JUSV9WMkRGLCAwIH0sCi0rICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfQU5ELCBBTFRJVkVD X0JVSUxUSU5fVkFORCwKLSsgICAgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX1YyREYsIFJT NjAwMF9CVElfYm9vbF9WNFNJLCAwIH0sCi0rICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfQU5ELCBB TFRJVkVDX0JVSUxUSU5fVkFORCwKLSsgICAgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX2Jv b2xfVjRTSSwgUlM2MDAwX0JUSV9WMkRGLCAwIH0sCi0rICB7IEFMVElWRUNfQlVJTFRJTl9WRUNf QU5ELCBBTFRJVkVDX0JVSUxUSU5fVkFORCwKLSAgICAgUlM2MDAwX0JUSV9ib29sX1Y0U0ksIFJT NjAwMF9CVElfYm9vbF9WNFNJLCBSUzYwMDBfQlRJX2Jvb2xfVjRTSSwgMCB9LAotICAgeyBBTFRJ VkVDX0JVSUxUSU5fVkVDX0FORCwgQUxUSVZFQ19CVUlMVElOX1ZBTkQsCi0gICAgIFJTNjAwMF9C VElfVjRTSSwgUlM2MDAwX0JUSV9ib29sX1Y0U0ksIFJTNjAwMF9CVElfVjRTSSwgMCB9LAotQEAg LTY5NSw2ICs3MjIsMTIgQEAgY29uc3Qgc3RydWN0IGFsdGl2ZWNfYnVpbHRpbl90eXBlcyBhbHRp dgotICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX0FOREMsIEFMVElWRUNfQlVJTFRJTl9WQU5EQywK LSAgICAgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX2Jvb2xfVjRTSSwgUlM2MDAwX0JUSV9W NFNGLCAwIH0sCi0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfQU5EQywgQUxUSVZFQ19CVUlMVElO X1ZBTkRDLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JU SV9WMkRGLCAwIH0sCi0rICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfQU5EQywgQUxUSVZFQ19CVUlM VElOX1ZBTkRDLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAw X0JUSV9ib29sX1Y0U0ksIDAgfSwKLSsgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19BTkRDLCBBTFRJ VkVDX0JVSUxUSU5fVkFOREMsCi0rICAgIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9ib29s X1Y0U0ksIFJTNjAwMF9CVElfVjJERiwgMCB9LAotKyAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX0FO REMsIEFMVElWRUNfQlVJTFRJTl9WQU5EQywKLSAgICAgUlM2MDAwX0JUSV9ib29sX1Y0U0ksIFJT NjAwMF9CVElfYm9vbF9WNFNJLCBSUzYwMDBfQlRJX2Jvb2xfVjRTSSwgMCB9LAotICAgeyBBTFRJ VkVDX0JVSUxUSU5fVkVDX0FOREMsIEFMVElWRUNfQlVJTFRJTl9WQU5EQywKLSAgICAgUlM2MDAw X0JUSV9WNFNJLCBSUzYwMDBfQlRJX2Jvb2xfVjRTSSwgUlM2MDAwX0JUSV9WNFNJLCAwIH0sCi1A QCAtMTE5OCw2ICsxMjMxLDggQEAgY29uc3Qgc3RydWN0IGFsdGl2ZWNfYnVpbHRpbl90eXBlcyBh bHRpdgotICAgICBSUzYwMDBfQlRJX1Y0U0ksIFJTNjAwMF9CVElfVjRTSSwgUlM2MDAwX0JUSV9W NFNJLCAwIH0sCi0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfTUFYLCBBTFRJVkVDX0JVSUxUSU5f Vk1BWEZQLAotICAgICBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JU SV9WNFNGLCAwIH0sCi0rICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfTUFYLCBWU1hfQlVJTFRJTl9Y Vk1BWERQLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JU SV9WMkRGLCAwIH0sCi0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfVk1BWEZQLCBBTFRJVkVDX0JV SUxUSU5fVk1BWEZQLAotICAgICBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgUlM2 MDAwX0JUSV9WNFNGLCAwIH0sCi0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfVk1BWFNXLCBBTFRJ VkVDX0JVSUxUSU5fVk1BWFNXLAotQEAgLTEzNzQsNiArMTQwOSw4IEBAIGNvbnN0IHN0cnVjdCBh bHRpdmVjX2J1aWx0aW5fdHlwZXMgYWx0aXYKLSAgICAgUlM2MDAwX0JUSV9WNFNJLCBSUzYwMDBf QlRJX1Y0U0ksIFJTNjAwMF9CVElfVjRTSSwgMCB9LAotICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVD X01JTiwgQUxUSVZFQ19CVUlMVElOX1ZNSU5GUCwKLSAgICAgUlM2MDAwX0JUSV9WNFNGLCBSUzYw MDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgMCB9LAotKyAgeyBBTFRJVkVDX0JVSUxUSU5f VkVDX01JTiwgVlNYX0JVSUxUSU5fWFZNSU5EUCwKLSsgICAgUlM2MDAwX0JUSV9WMkRGLCBSUzYw MDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgMCB9LAotICAgeyBBTFRJVkVDX0JVSUxUSU5f VkVDX1ZNSU5GUCwgQUxUSVZFQ19CVUlMVElOX1ZNSU5GUCwKLSAgICAgUlM2MDAwX0JUSV9WNFNG LCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgMCB9LAotICAgeyBBTFRJVkVDX0JV SUxUSU5fVkVDX1ZNSU5TVywgQUxUSVZFQ19CVUlMVElOX1ZNSU5TVywKLUBAIC0xNDU5LDYgKzE0 OTYsOCBAQCBjb25zdCBzdHJ1Y3QgYWx0aXZlY19idWlsdGluX3R5cGVzIGFsdGl2Ci0gICB7IEFM VElWRUNfQlVJTFRJTl9WRUNfTk9SLCBBTFRJVkVDX0JVSUxUSU5fVk5PUiwKLSAgICAgUlM2MDAw X0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgMCB9LAotICAgeyBB TFRJVkVDX0JVSUxUSU5fVkVDX05PUiwgQUxUSVZFQ19CVUlMVElOX1ZOT1IsCi0rICAgIFJTNjAw MF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX1YyREYsIDAgfSwKLSsgIHsg QUxUSVZFQ19CVUlMVElOX1ZFQ19OT1IsIEFMVElWRUNfQlVJTFRJTl9WTk9SLAotICAgICBSUzYw MDBfQlRJX1Y0U0ksIFJTNjAwMF9CVElfVjRTSSwgUlM2MDAwX0JUSV9WNFNJLCAwIH0sCi0gICB7 IEFMVElWRUNfQlVJTFRJTl9WRUNfTk9SLCBBTFRJVkVDX0JVSUxUSU5fVk5PUiwKLSAgICAgUlM2 MDAwX0JUSV91bnNpZ25lZF9WNFNJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0ksIFJTNjAwMF9C VElfdW5zaWduZWRfVjRTSSwgMCB9LAotQEAgLTE0ODMsNiArMTUyMiwxMiBAQCBjb25zdCBzdHJ1 Y3QgYWx0aXZlY19idWlsdGluX3R5cGVzIGFsdGl2Ci0gICB7IEFMVElWRUNfQlVJTFRJTl9WRUNf T1IsIEFMVElWRUNfQlVJTFRJTl9WT1IsCi0gICAgIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JU SV9ib29sX1Y0U0ksIFJTNjAwMF9CVElfVjRTRiwgMCB9LAotICAgeyBBTFRJVkVDX0JVSUxUSU5f VkVDX09SLCBBTFRJVkVDX0JVSUxUSU5fVk9SLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAw MF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCAwIH0sCi0rICB7IEFMVElWRUNfQlVJTFRJTl9W RUNfT1IsIEFMVElWRUNfQlVJTFRJTl9WT1IsCi0rICAgIFJTNjAwMF9CVElfVjJERiwgUlM2MDAw X0JUSV9WMkRGLCBSUzYwMDBfQlRJX2Jvb2xfVjRTSSwgMCB9LAotKyAgeyBBTFRJVkVDX0JVSUxU SU5fVkVDX09SLCBBTFRJVkVDX0JVSUxUSU5fVk9SLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJT NjAwMF9CVElfYm9vbF9WNFNJLCBSUzYwMDBfQlRJX1YyREYsIDAgfSwKLSsgIHsgQUxUSVZFQ19C VUlMVElOX1ZFQ19PUiwgQUxUSVZFQ19CVUlMVElOX1ZPUiwKLSAgICAgUlM2MDAwX0JUSV9ib29s X1Y0U0ksIFJTNjAwMF9CVElfYm9vbF9WNFNJLCBSUzYwMDBfQlRJX2Jvb2xfVjRTSSwgMCB9LAot ICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX09SLCBBTFRJVkVDX0JVSUxUSU5fVk9SLAotICAgICBS UzYwMDBfQlRJX1Y0U0ksIFJTNjAwMF9CVElfYm9vbF9WNFNJLCBSUzYwMDBfQlRJX1Y0U0ksIDAg fSwKLUBAIC0xOTQwLDYgKzE5ODUsOCBAQCBjb25zdCBzdHJ1Y3QgYWx0aXZlY19idWlsdGluX3R5 cGVzIGFsdGl2Ci0gICAgIFJTNjAwMF9CVElfdW5zaWduZWRfVjRTSSwgUlM2MDAwX0JUSV91bnNp Z25lZF9WNFNJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0ksIDAgfSwKLSAgIHsgQUxUSVZFQ19C VUlMVElOX1ZFQ19TVUIsIEFMVElWRUNfQlVJTFRJTl9WU1VCRlAsCi0gICAgIFJTNjAwMF9CVElf VjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIDAgfSwKLSsgIHsgQUxUSVZF Q19CVUlMVElOX1ZFQ19TVUIsIFZTWF9CVUlMVElOX1hWU1VCRFAsCi0rICAgIFJTNjAwMF9CVElf VjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX1YyREYsIDAgfSwKLSAgIHsgQUxUSVZF Q19CVUlMVElOX1ZFQ19WU1VCRlAsIEFMVElWRUNfQlVJTFRJTl9WU1VCRlAsCi0gICAgIFJTNjAw MF9CVElfVjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIDAgfSwKLSAgIHsg QUxUSVZFQ19CVUlMVElOX1ZFQ19WU1VCVVdNLCBBTFRJVkVDX0JVSUxUSU5fVlNVQlVXTSwKLUBA IC0yMDk5LDYgKzIxNDYsMTIgQEAgY29uc3Qgc3RydWN0IGFsdGl2ZWNfYnVpbHRpbl90eXBlcyBh bHRpdgotICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1hPUiwgQUxUSVZFQ19CVUlMVElOX1ZYT1Is Ci0gICAgIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JUSV9ib29sX1Y0U0ksIFJTNjAwMF9CVElf VjRTRiwgMCB9LAotICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1hPUiwgQUxUSVZFQ19CVUlMVElO X1ZYT1IsCi0rICAgIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJ X1YyREYsIDAgfSwKLSsgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19YT1IsIEFMVElWRUNfQlVJTFRJ Tl9WWE9SLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JU SV9ib29sX1Y0U0ksIDAgfSwKLSsgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19YT1IsIEFMVElWRUNf QlVJTFRJTl9WWE9SLAotKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfYm9vbF9WNFNJ LCBSUzYwMDBfQlRJX1YyREYsIDAgfSwKLSsgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19YT1IsIEFM VElWRUNfQlVJTFRJTl9WWE9SLAotICAgICBSUzYwMDBfQlRJX2Jvb2xfVjRTSSwgUlM2MDAwX0JU SV9ib29sX1Y0U0ksIFJTNjAwMF9CVElfYm9vbF9WNFNJLCAwIH0sCi0gICB7IEFMVElWRUNfQlVJ TFRJTl9WRUNfWE9SLCBBTFRJVkVDX0JVSUxUSU5fVlhPUiwKLSAgICAgUlM2MDAwX0JUSV9WNFNJ LCBSUzYwMDBfQlRJX2Jvb2xfVjRTSSwgUlM2MDAwX0JUSV9WNFNJLCAwIH0sCi1AQCAtMjk4OSw4 ICszMDQyLDEwIEBAIGFsdGl2ZWNfcmVzb2x2ZV9vdmVybG9hZGVkX2J1aWx0aW4gKHRyZWUKLSAg IGNvbnN0IHN0cnVjdCBhbHRpdmVjX2J1aWx0aW5fdHlwZXMgKmRlc2M7Ci0gICBpbnQgbjsKLSAK LS0gIGlmIChmY29kZSA8IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0ZJUlNUCi0tICAgICAg fHwgZmNvZGUgPiBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9MQVNUKQotKyAgaWYgKChmY29k ZSA8IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0ZJUlNUCi0rICAgICAgIHx8IGZjb2RlID4g QUxUSVZFQ19CVUlMVElOX09WRVJMT0FERURfTEFTVCkKLSsgICAgICAmJiAoZmNvZGUgPCBWU1hf QlVJTFRJTl9PVkVSTE9BREVEX0ZJUlNUCi0rCSAgfHwgZmNvZGUgPiBWU1hfQlVJTFRJTl9PVkVS TE9BREVEX0xBU1QpKQotICAgICByZXR1cm4gTlVMTF9UUkVFOwotIAotICAgLyogRm9yIG5vdyB0 cmVhdCB2ZWNfc3BsYXRzIGFuZCB2ZWNfcHJvbW90ZSBhcyB0aGUgc2FtZS4gICovCi0tLS0gZ2Nj L2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ1Nzc3KQot KysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3 LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTExMSwyNCArMTExLDYwIEBAIG1oYXJk LWZsb2F0Ci0gVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBJbnZlcnNlTWFzayhTT0ZUX0ZM T0FULCBIQVJEX0ZMT0FUKQotIFVzZSBoYXJkd2FyZSBmbG9hdGluZyBwb2ludAotIAotLW1uby11 cGRhdGUKLS1UYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIE1hc2soTk9fVVBEQVRFKQotLURv IG5vdCBnZW5lcmF0ZSBsb2FkL3N0b3JlIHdpdGggdXBkYXRlIGluc3RydWN0aW9ucwotK21wb3Bj bnRkCi0rVGFyZ2V0IFJlcG9ydCBNYXNrKFBPUENOVEQpCi0rVXNlIFBvd2VyUEMgVjIuMDYgcG9w Y250ZCBpbnN0cnVjdGlvbgotKwotK212c3gKLStUYXJnZXQgUmVwb3J0IE1hc2soVlNYKQotK1Vz ZSB2ZWN0b3Ivc2NhbGFyIChWU1gpIGluc3RydWN0aW9ucwotKwotK212c3gtdmVjdG9yLW1lbW9y eQotK1RhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihUQVJHRVRfVlNYX1ZFQ1RPUl9NRU1P UlkpIEluaXQoLTEpCi0rOyBJZiAtbXZzeCwgdXNlIFZTWCB2ZWN0b3IgbG9hZC9zdG9yZSBpbnN0 cnVjdGlvbnMgaW5zdGVhZCBvZiBBbHRpdmVjIGluc3RydWN0aW9ucwotKwotK212c3gtdmVjdG9y LWZsb2F0Ci0rVGFyZ2V0IFVuZG9jdW1lbnRlZCBSZXBvcnQgVmFyKFRBUkdFVF9WU1hfVkVDVE9S X0ZMT0FUKSBJbml0KC0xKQotKzsgSWYgLW12c3gsIHVzZSBWU1ggYXJpdGhtZXRpYyBpbnN0cnVj dGlvbnMgZm9yIGZsb2F0IHZlY3RvcnMgKG9uIGJ5IGRlZmF1bHQpCi0rCi0rbXZzeC12ZWN0b3It ZG91YmxlCi0rVGFyZ2V0IFVuZG9jdW1lbnRlZCBSZXBvcnQgVmFyKFRBUkdFVF9WU1hfVkVDVE9S X0RPVUJMRSkgSW5pdCgtMSkKLSs7IElmIC1tdnN4LCB1c2UgVlNYIGFyaXRobWV0aWMgaW5zdHJ1 Y3Rpb25zIGZvciBkb3VibGUgdmVjdG9ycyAob24gYnkgZGVmYXVsdCkKLSsKLSttdnN4LXNjYWxh ci1kb3VibGUKLStUYXJnZXQgVW5kb2N1bWVudGVkIFJlcG9ydCBWYXIoVEFSR0VUX1ZTWF9TQ0FM QVJfRE9VQkxFKSBJbml0KC0xKQotKzsgSWYgLW12c3gsIHVzZSBWU1ggYXJpdGhtZXRpYyBpbnN0 cnVjdGlvbnMgZm9yIHNjYWxhciBkb3VibGUgKG9uIGJ5IGRlZmF1bHQpCi0rCi0rbXZzeC1zY2Fs YXItbWVtb3J5Ci0rVGFyZ2V0IFVuZG9jdW1lbnRlZCBSZXBvcnQgVmFyKFRBUkdFVF9WU1hfU0NB TEFSX01FTU9SWSkKLSs7IElmIC1tdnN4LCB1c2UgVlNYIHNjYWxhciBtZW1vcnkgcmVmZXJlbmNl IGluc3RydWN0aW9ucyBmb3Igc2NhbGFyIGRvdWJsZSAob2ZmIGJ5IGRlZmF1bHQpCi0rCi0rbXZz eC12NHNmLWFsdGl2ZWMtcmVncwotK1RhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihUQVJH RVRfVjRTRl9BTFRJVkVDX1JFR1MpIEluaXQoLTEpCi0rOyBJZiAtbXZzeCwgcHJlZmVyIFY0U0Yg dHlwZXMgdG8gdXNlIEFsdGl2ZWMgcmVncyBhbmQgbm90IHRoZSBmbG9hdGluZyByZWdpc3RlcnMK LSsKLSttcmVsb2FkLWZ1bmN0aW9ucwotK1RhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihU QVJHRVRfUkVMT0FEX0ZVTkNUSU9OUykgSW5pdCgtMSkKLSs7IElmIC1tdnN4IG9yIC1tYWx0aXZl YywgZW5hYmxlIHJlbG9hZCBmdW5jdGlvbnMKLSsKLSttcG93ZXI3LWFkanVzdC1jb3N0Ci0rVGFy Z2V0IFVuZG9jdW1lbnRlZCBWYXIoVEFSR0VUX1BPV0VSN19BREpVU1RfQ09TVCkKLSs7IEFkZCBl eHRyYSBjb3N0IGZvciBzZXR0aW5nIENSIHJlZ2lzdGVycyBiZWZvcmUgYSBicmFuY2ggbGlrZSBp cyBkb25lIGZvciBQb3dlcjUKLSsKLSttZGlzYWxsb3ctZmxvYXQtaW4tbHItY3RyCi0rVGFyZ2V0 IFVuZG9jdW1lbnRlZCBWYXIoVEFSR0VUX0RJU0FMTE9XX0ZMT0FUX0lOX0xSX0NUUikgSW5pdCgt MSkKLSs7IERpc2FsbG93IGZsb2F0aW5nIHBvaW50IGluIExSIG9yIENUUiwgY2F1c2VzIHNvbWUg cmVsb2FkIGJ1Z3MKLSAKLSBtdXBkYXRlCi0tVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBJ bnZlcnNlTWFzayhOT19VUERBVEUsIFVQREFURSkKLStUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRf VVBEQVRFKSBJbml0KDEpCi0gR2VuZXJhdGUgbG9hZC9zdG9yZSB3aXRoIHVwZGF0ZSBpbnN0cnVj dGlvbnMKLSAKLSBtYXZvaWQtaW5kZXhlZC1hZGRyZXNzZXMKLSBUYXJnZXQgUmVwb3J0IFZhcihU QVJHRVRfQVZPSURfWEZPUk0pIEluaXQoLTEpCi0gQXZvaWQgZ2VuZXJhdGlvbiBvZiBpbmRleGVk IGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIHdoZW4gcG9zc2libGUKLSAKLS1tbm8tZnVzZWQtbWFk ZAotLVRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgTWFzayhOT19GVVNFRF9NQUREKQotLURv IG5vdCBnZW5lcmF0ZSBmdXNlZCBtdWx0aXBseS9hZGQgaW5zdHJ1Y3Rpb25zCi0tCi0gbWZ1c2Vk LW1hZGQKLS1UYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIEludmVyc2VNYXNrKE5PX0ZVU0VE X01BREQsIEZVU0VEX01BREQpCi0rVGFyZ2V0IFJlcG9ydCBWYXIoVEFSR0VUX0ZVU0VEX01BREQp IEluaXQoMSkKLSBHZW5lcmF0ZSBmdXNlZCBtdWx0aXBseS9hZGQgaW5zdHJ1Y3Rpb25zCi0gCi0g bXNjaGVkLXByb2xvZwotQEAgLTE5NCw3ICsyMzAsNyBAQCBUYXJnZXQgUmVqZWN0TmVnYXRpdmUg Sm9pbmVkCi0gLW12cnNhdmU9eWVzL25vCURlcHJlY2F0ZWQgb3B0aW9uLiAgVXNlIC1tdnJzYXZl Ly1tbm8tdnJzYXZlIGluc3RlYWQKLSAKLSBtaXNlbAotLVRhcmdldAotK1RhcmdldCBSZXBvcnQg TWFzayhJU0VMKQotIEdlbmVyYXRlIGlzZWwgaW5zdHJ1Y3Rpb25zCi0gCi0gbWlzZWw9Ci0tLS0g Z2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3Nzcp Ci0rKysgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2Vy Ny1tZWlzc25lcikJKHJldmlzaW9uIDE0NjAyNykKLUBAIC0xMTQsNyArMTE0LDcgQEAgZXh0ZXJu IGludCBkb3Rfc3ltYm9sczsKLSAJICAgIGVycm9yIChJTlZBTElEXzMyQklULCAiMzIiKTsJCQlc Ci0gCSAgaWYgKFRBUkdFVF9QUk9GSUxFX0tFUk5FTCkJCQkJXAotIAkgICAgewkJCQkJCQlcCi0t CSAgICAgIHRhcmdldF9mbGFncyAmPSB+TUFTS19QUk9GSUxFX0tFUk5FTDsJCVwKLSsJICAgICAg U0VUX1BST0ZJTEVfS0VSTkVMICgwKTsJCQkJXAotIAkgICAgICBlcnJvciAoSU5WQUxJRF8zMkJJ VCwgInByb2ZpbGUta2VybmVsIik7CQlcCi0gCSAgICB9CQkJCQkJCVwKLSAJfQkJCQkJCQlcCi0t LS0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NTc3 NykKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYwkoLi4uL2JyYW5jaGVzL2libS9wb3dl cjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDYwMjcpCi1AQCAtMTc4LDkgKzE3OCw2IEBAIGludCBy czYwMDBfc3BlOwotIC8qIE5vbnplcm8gaWYgd2Ugd2FudCBTUEUgQUJJIGV4dGVuc2lvbnMuICAq LwotIGludCByczYwMDBfc3BlX2FiaTsKLSAKLS0vKiBOb256ZXJvIHRvIHVzZSBpc2VsIGluc3Ry dWN0aW9ucy4gICovCi0taW50IHJzNjAwMF9pc2VsOwotLQotIC8qIE5vbnplcm8gaWYgZmxvYXRp bmcgcG9pbnQgb3BlcmF0aW9ucyBhcmUgZG9uZSBpbiB0aGUgR1BScy4gICovCi0gaW50IHJzNjAw MF9mbG9hdF9ncHJzID0gMDsKLSAKLUBAIC0yMjcsMTIgKzIyNCwyNiBAQCBpbnQgZG90X3N5bWJv bHM7Ci0gY29uc3QgY2hhciAqcnM2MDAwX2RlYnVnX25hbWU7Ci0gaW50IHJzNjAwMF9kZWJ1Z19z dGFjazsJCS8qIGRlYnVnIHN0YWNrIGFwcGxpY2F0aW9ucyAqLwotIGludCByczYwMDBfZGVidWdf YXJnOwkJLyogZGVidWcgYXJndW1lbnQgaGFuZGxpbmcgKi8KLStpbnQgcnM2MDAwX2RlYnVnX3Jl ZzsJCS8qIGRlYnVnIHJlZ2lzdGVyIGNsYXNzZXMgKi8KLStpbnQgcnM2MDAwX2RlYnVnX2FkZHI7 CQkvKiBkZWJ1ZyBtZW1vcnkgYWRkcmVzc2luZyAqLwotK2ludCByczYwMDBfZGVidWdfY29zdDsJ CS8qIGRlYnVnIHJ0eF9jb3N0cyAqLwotIAotIC8qIFZhbHVlIGlzIFRSVUUgaWYgcmVnaXN0ZXIv bW9kZSBwYWlyIGlzIGFjY2VwdGFibGUuICAqLwotIGJvb2wgcnM2MDAwX2hhcmRfcmVnbm9fbW9k ZV9va19wW05VTV9NQUNISU5FX01PREVTXVtGSVJTVF9QU0VVRE9fUkVHSVNURVJdOwotIAotLS8q IEJ1aWx0IGluIHR5cGVzLiAgKi8KLSsvKiBNYXhpbXVtIG51bWJlciBvZiByZWdpc3RlcnMgbmVl ZGVkIGZvciBhIGdpdmVuIHJlZ2lzdGVyIGNsYXNzIGFuZCBtb2RlLiAgKi8KLSt1bnNpZ25lZCBj aGFyIHJzNjAwMF9jbGFzc19tYXhfbnJlZ3NbTlVNX01BQ0hJTkVfTU9ERVNdW0xJTV9SRUdfQ0xB U1NFU107Ci0rCi0rLyogSG93IG1hbnkgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgZm9yIGEgZ2l2ZW4g cmVnaXN0ZXIgYW5kIG1vZGUuICAqLwotK3Vuc2lnbmVkIGNoYXIgcnM2MDAwX2hhcmRfcmVnbm9f bnJlZ3NbTlVNX01BQ0hJTkVfTU9ERVNdW0ZJUlNUX1BTRVVET19SRUdJU1RFUl07Ci0rCi0rLyog TWFwIHJlZ2lzdGVyIG51bWJlciB0byByZWdpc3RlciBjbGFzcy4gICovCi0rZW51bSByZWdfY2xh c3MgcnM2MDAwX3JlZ25vX3JlZ2NsYXNzW0ZJUlNUX1BTRVVET19SRUdJU1RFUl07Ci0gCi0rLyog UmVsb2FkIGZ1bmN0aW9ucyBiYXNlZCBvbiB0aGUgdHlwZSBhbmQgdGhlIHZlY3RvciB1bml0LiAg Ki8KLStzdGF0aWMgZW51bSBpbnNuX2NvZGUgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbTlVNX01BQ0hJ TkVfTU9ERVNdWzJdOwotKwotKy8qIEJ1aWx0IGluIHR5cGVzLiAgKi8KLSB0cmVlIHJzNjAwMF9i dWlsdGluX3R5cGVzW1JTNjAwMF9CVElfTUFYXTsKLSB0cmVlIHJzNjAwMF9idWlsdGluX2RlY2xz W1JTNjAwMF9CVUlMVElOX0NPVU5UXTsKLSAKLUBAIC0yNzAsNyArMjgxLDYgQEAgc3RydWN0IHsK LSAgIGJvb2wgYWx0aXZlY19hYmk7CQkvKiBUcnVlIGlmIC1tYWJpPWFsdGl2ZWMvbm8tYWx0aXZl YyB1c2VkLiAgKi8KLSAgIGJvb2wgc3BlOwkJCS8qIFRydWUgaWYgLW1zcGU9IHdhcyB1c2VkLiAg Ki8KLSAgIGJvb2wgZmxvYXRfZ3ByczsJCS8qIFRydWUgaWYgLW1mbG9hdC1ncHJzPSB3YXMgdXNl ZC4gICovCi0tICBib29sIGlzZWw7CQkJLyogVHJ1ZSBpZiAtbWlzZWwgd2FzIHVzZWQuICovCi0g ICBib29sIGxvbmdfZG91YmxlOwkgICAgICAgIC8qIFRydWUgaWYgLW1sb25nLWRvdWJsZS0gd2Fz IHVzZWQuICAqLwotICAgYm9vbCBpZWVlOwkJCS8qIFRydWUgaWYgLW1hYmk9aWVlZS9pYm1sb25n ZG91YmxlIHVzZWQuICAqLwotICAgYm9vbCB2cnNhdmU7CQkJLyogVHJ1ZSBpZiAtbXZyc2F2ZSB3 YXMgdXNlZC4gICovCi1AQCAtMjg2LDYgKzI5NiwxOCBAQCBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlw dGlvbgotICAgY29uc3QgY2hhciAqY29uc3QgbmFtZTsKLSAgIGNvbnN0IGVudW0gcnM2MDAwX2J1 aWx0aW5zIGNvZGU7Ci0gfTsKLSsKLSsvKiBEZXNjcmliZSB0aGUgdmVjdG9yIHVuaXQgdXNlZCBm b3IgbW9kZXMuICAqLwotK2VudW0gcnM2MDAwX3ZlY3RvciByczYwMDBfdmVjdG9yX3VuaXRbTlVN X01BQ0hJTkVfTU9ERVNdOwotK2VudW0gcnM2MDAwX3ZlY3RvciByczYwMDBfdmVjdG9yX21lbVtO VU1fTUFDSElORV9NT0RFU107Ci0rZW51bSByZWdfY2xhc3MgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xh c3NbTlVNX01BQ0hJTkVfTU9ERVNdOwotKwotKy8qIERlc2NyaWJlIHRoZSBhbGlnbm1lbnQgb2Yg YSB2ZWN0b3IuICAqLwotK2ludCByczYwMDBfdmVjdG9yX2FsaWduW05VTV9NQUNISU5FX01PREVT XTsKLSsKLSsvKiBEZXNjcmliZSB0aGUgcmVnaXN0ZXIgY2xhc3NlcyB1c2VkIGJ5IFZTWCBpbnN0 cnVjdGlvbnMuICAqLwotK2VudW0gcmVnX2NsYXNzIHJzNjAwMF92c3hfcmVnX2NsYXNzID0gTk9f UkVHUzsKLSsKLSAMCi0gLyogVGFyZ2V0IGNwdSBjb3N0cy4gICovCi0gCi1AQCAtNzQ5LDYgKzc3 MSwyNSBAQCBzdHJ1Y3QgcHJvY2Vzc29yX2Nvc3RzIHBvd2VyNl9jb3N0ID0gewotICAgMTYsCQkJ LyogcHJlZmV0Y2ggc3RyZWFtcyAqLwotIH07Ci0gCi0rLyogSW5zdHJ1Y3Rpb24gY29zdHMgb24g UE9XRVI3IHByb2Nlc3NvcnMuICAqLwotK3N0YXRpYyBjb25zdAotK3N0cnVjdCBwcm9jZXNzb3Jf Y29zdHMgcG93ZXI3X2Nvc3QgPSB7Ci0rICBDT1NUU19OX0lOU05TICgyKSwJLyogbXVsc2kgKi8K LSsgIENPU1RTX05fSU5TTlMgKDIpLAkvKiBtdWxzaV9jb25zdCAqLwotKyAgQ09TVFNfTl9JTlNO UyAoMiksCS8qIG11bHNpX2NvbnN0OSAqLwotKyAgQ09TVFNfTl9JTlNOUyAoMiksCS8qIG11bGRp ICovCi0rICBDT1NUU19OX0lOU05TICgxOCksCS8qIGRpdnNpICovCi0rICBDT1NUU19OX0lOU05T ICgzNCksCS8qIGRpdmRpICovCi0rICBDT1NUU19OX0lOU05TICgzKSwJLyogZnAgKi8KLSsgIENP U1RTX05fSU5TTlMgKDMpLAkvKiBkbXVsICovCi0rICBDT1NUU19OX0lOU05TICgxMyksCS8qIHNk aXYgKi8KLSsgIENPU1RTX05fSU5TTlMgKDE2KSwJLyogZGRpdiAqLwotKyAgMTI4LAkJCS8qIGNh Y2hlIGxpbmUgc2l6ZSAqLwotKyAgMzIsCQkJLyogbDEgY2FjaGUgKi8KLSsgIDI1NiwJCQkvKiBs MiBjYWNoZSAqLwotKyAgMTIsCQkJLyogcHJlZmV0Y2ggc3RyZWFtcyAqLwotK307Ci0rCi0gDAot IHN0YXRpYyBib29sIHJzNjAwMF9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCAodHJlZSwgdHJlZSk7 Ci0gc3RhdGljIGNvbnN0IGNoYXIgKnJzNjAwMF9pbnZhbGlkX3dpdGhpbl9kb2xvb3AgKGNvbnN0 X3J0eCk7Ci1AQCAtODI3LDcgKzg2OCwxMCBAQCBzdGF0aWMgdm9pZCByczYwMDBfeGNvZmZfZmls ZV9lbmQgKHZvaWQpCi0gI2VuZGlmCi0gc3RhdGljIGludCByczYwMDBfdmFyaWFibGVfaXNzdWUg KEZJTEUgKiwgaW50LCBydHgsIGludCk7Ci0gc3RhdGljIGJvb2wgcnM2MDAwX3J0eF9jb3N0cyAo cnR4LCBpbnQsIGludCwgaW50ICosIGJvb2wpOwotK3N0YXRpYyBib29sIHJzNjAwMF9kZWJ1Z19y dHhfY29zdHMgKHJ0eCwgaW50LCBpbnQsIGludCAqLCBib29sKTsKLStzdGF0aWMgaW50IHJzNjAw MF9kZWJ1Z19hZGRyZXNzX2Nvc3QgKHJ0eCwgYm9vbCk7Ci0gc3RhdGljIGludCByczYwMDBfYWRq dXN0X2Nvc3QgKHJ0eCwgcnR4LCBydHgsIGludCk7Ci0rc3RhdGljIGludCByczYwMDBfZGVidWdf YWRqdXN0X2Nvc3QgKHJ0eCwgcnR4LCBydHgsIGludCk7Ci0gc3RhdGljIHZvaWQgcnM2MDAwX3Nj aGVkX2luaXQgKEZJTEUgKiwgaW50LCBpbnQpOwotIHN0YXRpYyBib29sIGlzX21pY3JvY29kZWRf aW5zbiAocnR4KTsKLSBzdGF0aWMgYm9vbCBpc19ub25waXBlbGluZV9pbnNuIChydHgpOwotQEAg LTkwNiw2ICs5NTAsNyBAQCBzdGF0aWMgcnR4IGFsdGl2ZWNfZXhwYW5kX3N0dl9idWlsdGluIChl Ci0gc3RhdGljIHJ0eCBhbHRpdmVjX2V4cGFuZF92ZWNfaW5pdF9idWlsdGluICh0cmVlLCB0cmVl LCBydHgpOwotIHN0YXRpYyBydHggYWx0aXZlY19leHBhbmRfdmVjX3NldF9idWlsdGluICh0cmVl KTsKLSBzdGF0aWMgcnR4IGFsdGl2ZWNfZXhwYW5kX3ZlY19leHRfYnVpbHRpbiAodHJlZSwgcnR4 KTsKLStzdGF0aWMgcnR4IHZzeF9leHBhbmRfYnVpbHRpbiAodHJlZSwgcnR4LCBib29sICopOwot IHN0YXRpYyBpbnQgZ2V0X2VsZW1lbnRfbnVtYmVyICh0cmVlLCB0cmVlKTsKLSBzdGF0aWMgYm9v bCByczYwMDBfaGFuZGxlX29wdGlvbiAoc2l6ZV90LCBjb25zdCBjaGFyICosIGludCk7Ci0gc3Rh dGljIHZvaWQgcnM2MDAwX3BhcnNlX3Rsc19zaXplX29wdGlvbiAodm9pZCk7Ci1AQCAtOTYzLDE0 ICsxMDA4LDE2IEBAIHN0YXRpYyB0cmVlIHJzNjAwMF9naW1wbGlmeV92YV9hcmcgKHRyZWUKLSBz dGF0aWMgYm9vbCByczYwMDBfbXVzdF9wYXNzX2luX3N0YWNrIChlbnVtIG1hY2hpbmVfbW9kZSwg Y29uc3RfdHJlZSk7Ci0gc3RhdGljIGJvb2wgcnM2MDAwX3NjYWxhcl9tb2RlX3N1cHBvcnRlZF9w IChlbnVtIG1hY2hpbmVfbW9kZSk7Ci0gc3RhdGljIGJvb2wgcnM2MDAwX3ZlY3Rvcl9tb2RlX3N1 cHBvcnRlZF9wIChlbnVtIG1hY2hpbmVfbW9kZSk7Ci0tc3RhdGljIGludCBnZXRfdmVjX2NtcF9p bnNuIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSwKLS0JCQkgICAgIGVudW0gbWFj aGluZV9tb2RlKTsKLStzdGF0aWMgcnR4IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlX3ZzeCAo ZW51bSBydHhfY29kZSwgcnR4LCBydHgsIHJ0eCk7Ci0rc3RhdGljIHJ0eCByczYwMDBfZW1pdF92 ZWN0b3JfY29tcGFyZV9hbHRpdmVjIChlbnVtIHJ0eF9jb2RlLCBydHgsIHJ0eCwgcnR4KTsKLSBz dGF0aWMgcnR4IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlIChlbnVtIHJ0eF9jb2RlLCBydHgs IHJ0eCwKLSAJCQkJICAgICAgIGVudW0gbWFjaGluZV9tb2RlKTsKLS1zdGF0aWMgaW50IGdldF92 c2VsX2luc24gKGVudW0gbWFjaGluZV9tb2RlKTsKLS1zdGF0aWMgdm9pZCByczYwMDBfZW1pdF92 ZWN0b3Jfc2VsZWN0IChydHgsIHJ0eCwgcnR4LCBydHgpOwotIHN0YXRpYyB0cmVlIHJzNjAwMF9z dGFja19wcm90ZWN0X2ZhaWwgKHZvaWQpOwotIAotK3N0YXRpYyBlbnVtIHJlZ19jbGFzcyByczYw MDBfc2Vjb25kYXJ5X3JlbG9hZCAoYm9vbCwgcnR4LCBlbnVtIHJlZ19jbGFzcywKLSsJCQkJCSAg ICAgICBlbnVtIG1hY2hpbmVfbW9kZSwKLSsJCQkJCSAgICAgICBzdHJ1Y3Qgc2Vjb25kYXJ5X3Jl bG9hZF9pbmZvICopOwotKwotIGNvbnN0IGludCBJTlNOX05PVF9BVkFJTEFCTEUgPSAtMTsKLSBz dGF0aWMgZW51bSBtYWNoaW5lX21vZGUgcnM2MDAwX2VoX3JldHVybl9maWx0ZXJfbW9kZSAodm9p ZCk7Ci0gCi1AQCAtMTA0NSw2ICsxMDkyLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgYWx0X3JlZ19u YW1lc1tdWzhdID0KLSAjZW5kaWYKLSAjaWZuZGVmIFRBUkdFVF9QUk9GSUxFX0tFUk5FTAotICNk ZWZpbmUgVEFSR0VUX1BST0ZJTEVfS0VSTkVMIDAKLSsjZGVmaW5lIFNFVF9QUk9GSUxFX0tFUk5F TChOKQotKyNlbHNlCi0rI2RlZmluZSBTRVRfUFJPRklMRV9LRVJORUwoTikgVEFSR0VUX1BST0ZJ TEVfS0VSTkVMID0gKE4pCi0gI2VuZGlmCi0gCi0gLyogVGhlIFZSU0FWRSBiaXRtYXNrIHB1dHMg Yml0ICV2MCBhcyB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQuICAqLwotQEAgLTEyOTcsMzAgKzEz NDcsMTAxIEBAIHN0YXRpYyBjb25zdCBjaGFyIGFsdF9yZWdfbmFtZXNbXVs4XSA9Ci0gI3VuZGVm IFRBUkdFVF9JTlNUQU5USUFURV9ERUNMUwotICNkZWZpbmUgVEFSR0VUX0lOU1RBTlRJQVRFX0RF Q0xTIHJzNjAwMF9pbnN0YW50aWF0ZV9kZWNscwotIAotKyN1bmRlZiBUQVJHRVRfU0VDT05EQVJZ X1JFTE9BRAotKyNkZWZpbmUgVEFSR0VUX1NFQ09OREFSWV9SRUxPQUQgcnM2MDAwX3NlY29uZGFy eV9yZWxvYWQKLSsKLSBzdHJ1Y3QgZ2NjX3RhcmdldCB0YXJnZXRtID0gVEFSR0VUX0lOSVRJQUxJ WkVSOwotIAwKLSsvKiBSZXR1cm4gbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGhhcmQgcmVncyBuZWVk ZWQgc3RhcnRpbmcgYXQgcmVnIFJFR05PCi0rICAgdG8gaG9sZCBzb21ldGhpbmcgb2YgbW9kZSBN T0RFLgotKyAgIFRoaXMgaXMgb3JkaW5hcmlseSB0aGUgbGVuZ3RoIGluIHdvcmRzIG9mIGEgdmFs dWUgb2YgbW9kZSBNT0RFCi0rICAgYnV0IGNhbiBiZSBsZXNzIGZvciBjZXJ0YWluIG1vZGVzIGlu IHNwZWNpYWwgbG9uZyByZWdpc3RlcnMuCi0rCi0rICAgRm9yIHRoZSBTUEUsIEdQUnMgYXJlIDY0 IGJpdHMgYnV0IG9ubHkgMzIgYml0cyBhcmUgdmlzaWJsZSBpbgotKyAgIHNjYWxhciBpbnN0cnVj dGlvbnMuICBUaGUgdXBwZXIgMzIgYml0cyBhcmUgb25seSBhdmFpbGFibGUgdG8gdGhlCi0rICAg U0lNRCBpbnN0cnVjdGlvbnMuCi0rCi0rICAgUE9XRVIgYW5kIFBvd2VyUEMgR1BScyBob2xkIDMy IGJpdHMgd29ydGg7Ci0rICAgUG93ZXJQQzY0IEdQUnMgYW5kIEZQUnMgcG9pbnQgcmVnaXN0ZXIg aG9sZHMgNjQgYml0cyB3b3J0aC4gICovCi0rCi0rc3RhdGljIGludAotK3JzNjAwMF9oYXJkX3Jl Z25vX25yZWdzX2ludGVybmFsIChpbnQgcmVnbm8sIGVudW0gbWFjaGluZV9tb2RlIG1vZGUpCi0r ewotKyAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCByZWdfc2l6ZTsKLSsKLSsgIGlmIChGUF9SRUdO T19QIChyZWdubykpCi0rICAgIHJlZ19zaXplID0gKFZFQ1RPUl9VTklUX1ZTWF9QIChtb2RlKQot KwkJPyBVTklUU19QRVJfVlNYX1dPUkQKLSsJCTogVU5JVFNfUEVSX0ZQX1dPUkQpOwotKwotKyAg ZWxzZSBpZiAoU1BFX1NJTURfUkVHTk9fUCAocmVnbm8pICYmIFRBUkdFVF9TUEUgJiYgU1BFX1ZF Q1RPUl9NT0RFIChtb2RlKSkKLSsgICAgcmVnX3NpemUgPSBVTklUU19QRVJfU1BFX1dPUkQ7Ci0r Ci0rICBlbHNlIGlmIChBTFRJVkVDX1JFR05PX1AgKHJlZ25vKSkKLSsgICAgcmVnX3NpemUgPSBV TklUU19QRVJfQUxUSVZFQ19XT1JEOwotKwotKyAgLyogVGhlIHZhbHVlIHJldHVybmVkIGZvciBT Q21vZGUgaW4gdGhlIEU1MDAgZG91YmxlIGNhc2UgaXMgMiBmb3IKLSsgICAgIEFCSSBjb21wYXRp YmlsaXR5OyBzdG9yaW5nIGFuIFNDbW9kZSB2YWx1ZSBpbiBhIHNpbmdsZSByZWdpc3RlcgotKyAg ICAgd291bGQgcmVxdWlyZSBmdW5jdGlvbl9hcmcgYW5kIHJzNjAwMF9zcGVfZnVuY3Rpb25fYXJn IHRvIGhhbmRsZQotKyAgICAgU0Ntb2RlIHNvIGFzIHRvIHBhc3MgdGhlIHZhbHVlIGNvcnJlY3Rs eSBpbiBhIHBhaXIgb2YKLSsgICAgIHJlZ2lzdGVycy4gICovCi0rICBlbHNlIGlmIChUQVJHRVRf RTUwMF9ET1VCTEUgJiYgRkxPQVRfTU9ERV9QIChtb2RlKSAmJiBtb2RlICE9IFNDbW9kZQotKwkg ICAmJiAhREVDSU1BTF9GTE9BVF9NT0RFX1AgKG1vZGUpKQotKyAgICByZWdfc2l6ZSA9IFVOSVRT X1BFUl9GUF9XT1JEOwotKwotKyAgZWxzZQotKyAgICByZWdfc2l6ZSA9IFVOSVRTX1BFUl9XT1JE OwotKwotKyAgcmV0dXJuIChHRVRfTU9ERV9TSVpFIChtb2RlKSArIHJlZ19zaXplIC0gMSkgLyBy ZWdfc2l6ZTsKLSt9Ci0gCi0gLyogVmFsdWUgaXMgMSBpZiBoYXJkIHJlZ2lzdGVyIFJFR05PIGNh biBob2xkIGEgdmFsdWUgb2YgbWFjaGluZS1tb2RlCi0gICAgTU9ERS4gICovCi0gc3RhdGljIGlu dAotIHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2sgKGludCByZWdubywgZW51bSBtYWNoaW5lX21v ZGUgbW9kZSkKLSB7Ci0rICBpbnQgbGFzdF9yZWdubyA9IHJlZ25vICsgcnM2MDAwX2hhcmRfcmVn bm9fbnJlZ3NbbW9kZV1bcmVnbm9dIC0gMTsKLSsKLSsgIC8qIFZTWCByZWdpc3RlcnMgdGhhdCBv dmVybGFwIHRoZSBGUFIgcmVnaXN0ZXJzIGFyZSBsYXJnZXIgdGhhbiBmb3Igbm9uLVZTWAotKyAg ICAgaW1wbGVtZW50YXRpb25zLiAgRG9uJ3QgYWxsb3cgYW4gaXRlbSB0byBiZSBzcGxpdCBiZXR3 ZWVuIGEgRlAgcmVnaXN0ZXIKLSsgICAgIGFuZCBhbiBBbHRpdmVjIHJlZ2lzdGVyLiAgKi8KLSsg IGlmIChWRUNUT1JfVU5JVF9WU1hfUCAobW9kZSkgfHwgVkVDVE9SX01FTV9WU1hfUCAobW9kZSkp Ci0rICAgIHsKLSsgICAgICBlbnVtIHJlZ19jbGFzcyByY2xhc3MgPSByczYwMDBfdmVjdG9yX3Jl Z19jbGFzc1ttb2RlXTsKLSsgICAgICBpZiAoRlBfUkVHTk9fUCAocmVnbm8pKQotKwlyZXR1cm4g KChyY2xhc3MgPT0gRkxPQVRfUkVHUyB8fCByY2xhc3MgPT0gVlNYX1JFR1MpCi0rCQkmJiBGUF9S RUdOT19QIChsYXN0X3JlZ25vKSk7Ci0rCi0rICAgICAgaWYgKEFMVElWRUNfUkVHTk9fUCAocmVn bm8pKQotKwlyZXR1cm4gKChyY2xhc3MgPT0gQUxUSVZFQ19SRUdTIHx8IHJjbGFzcyA9PSBWU1hf UkVHUykKLSsJCSYmIEFMVElWRUNfUkVHTk9fUCAobGFzdF9yZWdubykpOwotKyAgICB9Ci0rCi0g ICAvKiBUaGUgR1BScyBjYW4gaG9sZCBhbnkgbW9kZSwgYnV0IHZhbHVlcyBiaWdnZXIgdGhhbiBv bmUgcmVnaXN0ZXIKLSAgICAgIGNhbm5vdCBnbyBwYXN0IFIzMS4gICovCi0gICBpZiAoSU5UX1JF R05PX1AgKHJlZ25vKSkKLS0gICAgcmV0dXJuIElOVF9SRUdOT19QIChyZWdubyArIEhBUkRfUkVH Tk9fTlJFR1MgKHJlZ25vLCBtb2RlKSAtIDEpOwotKyAgICByZXR1cm4gSU5UX1JFR05PX1AgKGxh c3RfcmVnbm8pOwotIAotLSAgLyogVGhlIGZsb2F0IHJlZ2lzdGVycyBjYW4gb25seSBob2xkIGZs b2F0aW5nIG1vZGVzIGFuZCBESW1vZGUuCi0tICAgICBUaGlzIGV4Y2x1ZGVzIHRoZSAzMi1iaXQg ZGVjaW1hbCBmbG9hdCBtb2RlIGZvciBub3cuICAqLwotKyAgLyogVGhlIGZsb2F0IHJlZ2lzdGVy cyAoZXhjZXB0IGZvciBWU1ggdmVjdG9yIG1vZGVzKSBjYW4gb25seSBob2xkIGZsb2F0aW5nCi0r ICAgICBtb2RlcyBhbmQgREltb2RlLiAgVGhpcyBleGNsdWRlcyB0aGUgMzItYml0IGRlY2ltYWwg ZmxvYXQgbW9kZSBmb3IKLSsgICAgIG5vdy4gICovCi0gICBpZiAoRlBfUkVHTk9fUCAocmVnbm8p KQotLSAgICByZXR1cm4KLS0gICAgICAoKFNDQUxBUl9GTE9BVF9NT0RFX1AgKG1vZGUpCi0tICAg ICAgICYmIChtb2RlICE9IFREbW9kZSB8fCAocmVnbm8gJSAyKSA9PSAwKQotLSAgICAgICAmJiBG UF9SRUdOT19QIChyZWdubyArIEhBUkRfUkVHTk9fTlJFR1MgKHJlZ25vLCBtb2RlKSAtIDEpKQot LSAgICAgIHx8IChHRVRfTU9ERV9DTEFTUyAobW9kZSkgPT0gTU9ERV9JTlQKLSsgICAgewotKyAg ICAgIGlmIChTQ0FMQVJfRkxPQVRfTU9ERV9QIChtb2RlKQotKwkgICYmIChtb2RlICE9IFREbW9k ZSB8fCAocmVnbm8gJSAyKSA9PSAwKQotKwkgICYmIEZQX1JFR05PX1AgKGxhc3RfcmVnbm8pKQot KwlyZXR1cm4gMTsKLSsKLSsgICAgICBpZiAoR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVf SU5UCi0gCSAgJiYgR0VUX01PREVfU0laRSAobW9kZSkgPT0gVU5JVFNfUEVSX0ZQX1dPUkQpCi0t ICAgICAgfHwgKFBBSVJFRF9TSU1EX1JFR05PX1AgKHJlZ25vKSAmJiBUQVJHRVRfUEFJUkVEX0ZM T0FUCi0tICAgICAgICAgICAmJiBQQUlSRURfVkVDVE9SX01PREUgKG1vZGUpKSk7Ci0rCXJldHVy biAxOwotKwotKyAgICAgIGlmIChQQUlSRURfU0lNRF9SRUdOT19QIChyZWdubykgJiYgVEFSR0VU X1BBSVJFRF9GTE9BVAotKwkgICYmIFBBSVJFRF9WRUNUT1JfTU9ERSAobW9kZSkpCi0rCXJldHVy biAxOwotKwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0gCi0gICAvKiBUaGUgQ1IgcmVnaXN0 ZXIgY2FuIG9ubHkgaG9sZCBDQyBtb2Rlcy4gICovCi0gICBpZiAoQ1JfUkVHTk9fUCAocmVnbm8p KQotQEAgLTEzMzEsMjggKzE0NTIsMzg5IEBAIHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2sgKGlu dCByZWdubywgZW4KLSAKLSAgIC8qIEFsdGlWZWMgb25seSBpbiBBbGR5VmVjIHJlZ2lzdGVycy4g ICovCi0gICBpZiAoQUxUSVZFQ19SRUdOT19QIChyZWdubykpCi0tICAgIHJldHVybiBBTFRJVkVD X1ZFQ1RPUl9NT0RFIChtb2RlKTsKLSsgICAgcmV0dXJuIFZFQ1RPUl9VTklUX0FMVElWRUNfT1Jf VlNYX1AgKG1vZGUpOwotIAotICAgLyogLi4uYnV0IEdQUnMgY2FuIGhvbGQgU0lNRCBkYXRhIG9u IHRoZSBTUEUgaW4gb25lIHJlZ2lzdGVyLiAgKi8KLSAgIGlmIChTUEVfU0lNRF9SRUdOT19QIChy ZWdubykgJiYgVEFSR0VUX1NQRSAmJiBTUEVfVkVDVE9SX01PREUgKG1vZGUpKQotICAgICByZXR1 cm4gMTsKLSAKLS0gIC8qIFdlIGNhbm5vdCBwdXQgVEltb2RlIGFueXdoZXJlIGV4Y2VwdCBnZW5l cmFsIHJlZ2lzdGVyIGFuZCBpdCBtdXN0IGJlCi0tICAgICBhYmxlIHRvIGZpdCB3aXRoaW4gdGhl IHJlZ2lzdGVyIHNldC4gICovCi0rICAvKiBEb24ndCBhbGxvdyBhbnl0aGluZyBidXQgd29yZCBz aXplZCBpbnRlZ2VycyAoYWthIHBvaW50ZXJzKSBpbiBDVFIvTFIuCi0rICAgICBZb3UgcmVhbGx5 IGRvbid0IHdhbnQgdG8gc3BpbGwgeW91ciBmbG9hdGluZyBwb2ludCB2YWx1ZXMgdG8gdGhvc2UK LSsgICAgIHJlZ2lzdGVycy4gIEFsc28gZG8gaXQgZm9yIHRoZSBvbGQgTVEgcmVnaXN0ZXIgaW4g dGhlIHBvd2VyLgotKwotKyAgICAgV2hpbGUgdGhpcyBpcyBkZXNpcmFibGUgaW4gdGhlb3J5LCBk aXNhYmxpbmcgZmxvYXQgdG8gZ28gaW4gTFIvQ1RSIGRvZXMKLSsgICAgIGNhdXNlIHNvbWUgcmVn cmVzc2lvbnMsIHNvIHVudGlsIHRoZXkgYXJlIHRha2VuIGNhcmUgb2YsIHJldmVydCB0byB0aGUg b2xkCi0rICAgICBiZWhhdmlvciBieSBkZWZhdWx0IGZvciBtb3N0IHBvd2VyIHN5c3RlbXMsIGJ1 dCBlbmFibGUgaXQgZm9yIHBvd2VyNy4gICovCi0rICBpZiAoKFRBUkdFVF9ESVNBTExPV19GTE9B VF9JTl9MUl9DVFIgPiAwCi0rICAgICAgIHx8IChUQVJHRVRfRElTQUxMT1dfRkxPQVRfSU5fTFJf Q1RSIDwgMCAmJiBUQVJHRVRfVlNYKSkKLSsgICAgICAmJiAocmVnbm8gPT0gQ1RSX1JFR05PIHx8 IHJlZ25vID09IExSX1JFR05PIHx8IHJlZ25vID09IE1RX1JFR05PKSkKLSsgICAgcmV0dXJuIChH RVRfTU9ERV9DTEFTUyAobW9kZSkgPT0gTU9ERV9JTlQKLSsJICAgICYmIEdFVF9NT0RFX1NJWkUg KG1vZGUpIDw9IFVOSVRTX1BFUl9XT1JEKTsKLSsKLSsgIC8qIFRoZSBWUlNBVkUvVlNDUiByZWdp c3RlcnMgYXJlIDMyLWJpdHMgKHRoZXkgYXJlIGZpeGVkLCBidXQgYWRkIHRoaXMgZm9yCi0rICAg ICBjb21wbGV0ZW5lc3MpLiAgKi8KLSsgIGlmIChyZWdubyA9PSBWUlNBVkVfUkVHTk8gfHwgcmVn bm8gPT0gVlNDUl9SRUdOTykKLSsgICAgcmV0dXJuIChtb2RlID09IFNJbW9kZSk7Ci0rCi0rICAv KiBXZSBjYW5ub3QgcHV0IFRJbW9kZSBhbnl3aGVyZSBleGNlcHQgZ2VuZXJhbCByZWdpc3RlciBh bmQgaXQgbXVzdCBiZSBhYmxlCi0rICAgICB0byBmaXQgd2l0aGluIHRoZSByZWdpc3RlciBzZXQu ICBJbiB0aGUgZnV0dXJlLCBhbGxvdyBUSW1vZGUgaW4gdGhlCi0rICAgICBBbHRpdmVjIG9yIFZT WCByZWdpc3RlcnMuICAqLwotIAotICAgcmV0dXJuIEdFVF9NT0RFX1NJWkUgKG1vZGUpIDw9IFVO SVRTX1BFUl9XT1JEOwotIH0KLSAKLS0vKiBJbml0aWFsaXplIHJzNjAwMF9oYXJkX3JlZ25vX21v ZGVfb2tfcCB0YWJsZS4gICovCi0rLyogUHJpbnQgaW50ZXJlc3RpbmcgZmFjdHMgYWJvdXQgcmVn aXN0ZXJzLiAgKi8KLSBzdGF0aWMgdm9pZAotLXJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9v ayAodm9pZCkKLStyczYwMDBfZGVidWdfcmVnX3ByaW50IChpbnQgZmlyc3RfcmVnbm8sIGludCBs YXN0X3JlZ25vLCBjb25zdCBjaGFyICpyZWdfbmFtZSkKLSB7Ci0gICBpbnQgciwgbTsKLSAKLSsg IGZvciAociA9IGZpcnN0X3JlZ25vOyByIDw9IGxhc3RfcmVnbm87ICsrcikKLSsgICAgewotKyAg ICAgIGNvbnN0IGNoYXIgKmNvbW1hID0gIiI7Ci0rICAgICAgaW50IGxlbjsKLSsKLSsgICAgICBp ZiAoZmlyc3RfcmVnbm8gPT0gbGFzdF9yZWdubykKLSsJZnByaW50ZiAoc3RkZXJyLCAiJXM6XHQi LCByZWdfbmFtZSk7Ci0rICAgICAgZWxzZQotKwlmcHJpbnRmIChzdGRlcnIsICIlcyVkOlx0Iiwg cmVnX25hbWUsIHIgLSBmaXJzdF9yZWdubyk7Ci0rCi0rICAgICAgbGVuID0gODsKLSsgICAgICBm b3IgKG0gPSAwOyBtIDwgTlVNX01BQ0hJTkVfTU9ERVM7ICsrbSkKLSsJaWYgKHJzNjAwMF9oYXJk X3JlZ25vX21vZGVfb2tfcFttXVtyXSAmJiByczYwMDBfaGFyZF9yZWdub19ucmVnc1ttXVtyXSkK LSsJICB7Ci0rCSAgICBpZiAobGVuID4gNzApCi0rCSAgICAgIHsKLSsJCWZwcmludGYgKHN0ZGVy ciwgIixcblx0Iik7Ci0rCQlsZW4gPSA4OwotKwkJY29tbWEgPSAiIjsKLSsJICAgICAgfQotKwot KwkgICAgaWYgKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzW21dW3JdID4gMSkKLSsJICAgICAgbGVu ICs9IGZwcmludGYgKHN0ZGVyciwgIiVzJXMvJWQiLCBjb21tYSwgR0VUX01PREVfTkFNRSAobSks Ci0rCQkJICAgICByczYwMDBfaGFyZF9yZWdub19ucmVnc1ttXVtyXSk7Ci0rCSAgICBlbHNlCi0r CSAgICAgIGxlbiArPSBmcHJpbnRmIChzdGRlcnIsICIlcyVzIiwgY29tbWEsIEdFVF9NT0RFX05B TUUgKG0pKTsKLSsKLSsJICAgIGNvbW1hID0gIiwgIjsKLSsJICB9Ci0rCi0rICAgICAgaWYgKGNh bGxfdXNlZF9yZWdzW3JdKQotKwl7Ci0rCSAgaWYgKGxlbiA+IDcwKQotKwkgICAgewotKwkgICAg ICBmcHJpbnRmIChzdGRlcnIsICIsXG5cdCIpOwotKwkgICAgICBsZW4gPSA4OwotKwkgICAgICBj b21tYSA9ICIiOwotKwkgICAgfQotKwotKwkgIGxlbiArPSBmcHJpbnRmIChzdGRlcnIsICIlcyVz IiwgY29tbWEsICJjYWxsLXVzZWQiKTsKLSsJICBjb21tYSA9ICIsICI7Ci0rCX0KLSsKLSsgICAg ICBpZiAoZml4ZWRfcmVnc1tyXSkKLSsJewotKwkgIGlmIChsZW4gPiA3MCkKLSsJICAgIHsKLSsJ ICAgICAgZnByaW50ZiAoc3RkZXJyLCAiLFxuXHQiKTsKLSsJICAgICAgbGVuID0gODsKLSsJICAg ICAgY29tbWEgPSAiIjsKLSsJICAgIH0KLSsKLSsJICBsZW4gKz0gZnByaW50ZiAoc3RkZXJyLCAi JXMlcyIsIGNvbW1hLCAiZml4ZWQiKTsKLSsJICBjb21tYSA9ICIsICI7Ci0rCX0KLSsKLSsgICAg ICBpZiAobGVuID4gNzApCi0rCXsKLSsJICBmcHJpbnRmIChzdGRlcnIsICIsXG5cdCIpOwotKwkg IGNvbW1hID0gIiI7Ci0rCX0KLSsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICIlc3JlZ25vID0g JWRcbiIsIGNvbW1hLCByKTsKLSsgICAgfQotK30KLSsKLSsvKiBNYXAgZW51bSByczYwMDBfdmVj dG9yIHRvIHN0cmluZy4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK3JzNjAwMF9kZWJ1Z192 ZWN0b3JfdW5pdFtdID0gewotKyAgIm5vbmUiLAotKyAgImFsdGl2ZWMiLAotKyAgInZzeCIsCi0r ICAicGFpcmVkIiwKLSsgICJzcGUiLAotKyAgIm90aGVyIgotK307Ci0rCi0rLyogSW5pdGlhbGl6 ZSB0aGUgdmFyaW91cyBnbG9iYWwgdGFibGVzIHRoYXQgYXJlIGJhc2VkIG9uIHJlZ2lzdGVyIHNp emUuICAqLwotK3N0YXRpYyB2b2lkCi0rcnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rICh2 b2lkKQotK3sKLSsgIGludCByLCBtLCBjOwotKyAgZW51bSByZWdfY2xhc3MgdnN4X3JjID0gKFRB UkdFVF9BTFRJVkVDID8gVlNYX1JFR1MgOiBGTE9BVF9SRUdTKTsKLSsgIGJvb2wgZmxvYXRfcCA9 IChUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyk7Ci0rCi0rICAvKiBQcmVjYWxjdWxh dGUgUkVHTk9fUkVHX0NMQVNTLiAgKi8KLSsgIHJzNjAwMF9yZWdub19yZWdjbGFzc1swXSA9IEdF TkVSQUxfUkVHUzsKLSsgIGZvciAociA9IDE7IHIgPCAzMjsgKytyKQotKyAgICByczYwMDBfcmVn bm9fcmVnY2xhc3Nbcl0gPSBCQVNFX1JFR1M7Ci0rCi0rICBmb3IgKHIgPSAzMjsgciA8IDY0OyAr K3IpCi0rICAgIHJzNjAwMF9yZWdub19yZWdjbGFzc1tyXSA9IEZMT0FUX1JFR1M7Ci0rCi0rICBm b3IgKHIgPSA2NDsgciA8IEZJUlNUX1BTRVVET19SRUdJU1RFUjsgKytyKQotKyAgICByczYwMDBf cmVnbm9fcmVnY2xhc3Nbcl0gPSBOT19SRUdTOwotKwotKyAgZm9yIChyID0gRklSU1RfQUxUSVZF Q19SRUdOTzsgciA8PSBMQVNUX0FMVElWRUNfUkVHTk87ICsrcikKLSsgICAgcnM2MDAwX3JlZ25v X3JlZ2NsYXNzW3JdID0gQUxUSVZFQ19SRUdTOwotKwotKyAgcnM2MDAwX3JlZ25vX3JlZ2NsYXNz W0NSMF9SRUdOT10gPSBDUjBfUkVHUzsKLSsgIGZvciAociA9IENSMV9SRUdOTzsgciA8PSBDUjdf UkVHTk87ICsrcikKLSsgICAgcnM2MDAwX3JlZ25vX3JlZ2NsYXNzW3JdID0gQ1JfUkVHUzsKLSsK LSsgIHJzNjAwMF9yZWdub19yZWdjbGFzc1tNUV9SRUdOT10gPSBNUV9SRUdTOwotKyAgcnM2MDAw X3JlZ25vX3JlZ2NsYXNzW0xSX1JFR05PXSA9IExJTktfUkVHUzsKLSsgIHJzNjAwMF9yZWdub19y ZWdjbGFzc1tDVFJfUkVHTk9dID0gQ1RSX1JFR1M7Ci0rICByczYwMDBfcmVnbm9fcmVnY2xhc3Nb WEVSX1JFR05PXSA9IFhFUl9SRUdTOwotKyAgcnM2MDAwX3JlZ25vX3JlZ2NsYXNzW1ZSU0FWRV9S RUdOT10gPSBWUlNBVkVfUkVHUzsKLSsgIHJzNjAwMF9yZWdub19yZWdjbGFzc1tWU0NSX1JFR05P XSA9IFZSU0FWRV9SRUdTOwotKyAgcnM2MDAwX3JlZ25vX3JlZ2NsYXNzW1NQRV9BQ0NfUkVHTk9d ID0gU1BFX0FDQ19SRUdTOwotKyAgcnM2MDAwX3JlZ25vX3JlZ2NsYXNzW1NQRUZTQ1JfUkVHTk9d ID0gU1BFRlNDUl9SRUdTOwotKyAgcnM2MDAwX3JlZ25vX3JlZ2NsYXNzW0FSR19QT0lOVEVSX1JF R05VTV0gPSBCQVNFX1JFR1M7Ci0rICByczYwMDBfcmVnbm9fcmVnY2xhc3NbRlJBTUVfUE9JTlRF Ul9SRUdOVU1dID0gQkFTRV9SRUdTOwotKwotKyAgLyogUHJlY2FsY3VsYXRlIHZlY3RvciBpbmZv cm1hdGlvbiwgdGhpcyBtdXN0IGJlIHNldCB1cCBiZWZvcmUgdGhlCi0rICAgICByczYwMDBfaGFy ZF9yZWdub19ucmVnc19pbnRlcm5hbCBiZWxvdy4gICovCi0rICBmb3IgKG0gPSAwOyBtIDwgTlVN X01BQ0hJTkVfTU9ERVM7ICsrbSkKLSsgICAgewotKyAgICAgIHJzNjAwMF92ZWN0b3JfdW5pdFtt XSA9IHJzNjAwMF92ZWN0b3JfbWVtW21dID0gVkVDVE9SX05PTkU7Ci0rICAgICAgcnM2MDAwX3Zl Y3Rvcl9yZWdfY2xhc3NbbV0gPSBOT19SRUdTOwotKyAgICAgIHJzNjAwMF92ZWN0b3JfcmVsb2Fk W21dWzBdID0gQ09ERV9GT1Jfbm90aGluZzsKLSsgICAgICByczYwMDBfdmVjdG9yX3JlbG9hZFtt XVsxXSA9IENPREVfRk9SX25vdGhpbmc7Ci0rICAgIH0KLSsKLSsgIC8qIFRPRE8sIGFkZCBUSS9W MkRJIG1vZGUgZm9yIG1vdmluZyBkYXRhIGlmIEFsdGl2ZWMgb3IgVlNYLiAgKi8KLSsKLSsgIC8q IFYyREYgbW9kZSwgVlNYIG9ubHkuICAqLwotKyAgaWYgKGZsb2F0X3AgJiYgVEFSR0VUX1ZTWCAm JiBUQVJHRVRfVlNYX1ZFQ1RPUl9ET1VCTEUpCi0rICAgIHsKLSsgICAgICByczYwMDBfdmVjdG9y X3VuaXRbVjJERm1vZGVdID0gVkVDVE9SX1ZTWDsKLSsgICAgICByczYwMDBfdmVjdG9yX21lbVtW MkRGbW9kZV0gPSBWRUNUT1JfVlNYOwotKyAgICAgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjJERm1v ZGVdID0gNjQ7Ci0rICAgIH0KLSsKLSsgIC8qIFY0U0YgbW9kZSwgZWl0aGVyIFZTWCBvciBBbHRp dmVjLiAgKi8KLSsgIGlmIChmbG9hdF9wICYmIFRBUkdFVF9WU1ggJiYgVEFSR0VUX1ZTWF9WRUNU T1JfRkxPQVQpCi0rICAgIHsKLSsgICAgICByczYwMDBfdmVjdG9yX3VuaXRbVjRTRm1vZGVdID0g VkVDVE9SX1ZTWDsKLSsgICAgICBpZiAoVEFSR0VUX1ZTWF9WRUNUT1JfTUVNT1JZIHx8ICFUQVJH RVRfQUxUSVZFQykKLSsJewotKwkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjRTRm1vZGVdID0gMzI7 Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjRTRm1vZGVdID0gVkVDVE9SX1ZTWDsKLSsJfSBlbHNl IHsKLSsJICByczYwMDBfdmVjdG9yX2FsaWduW1Y0U0Ztb2RlXSA9IDEyODsKLSsJICByczYwMDBf dmVjdG9yX21lbVtWNFNGbW9kZV0gPSBWRUNUT1JfQUxUSVZFQzsKLSsgICAgICB9Ci0rICAgIH0K LSsgIGVsc2UgaWYgKGZsb2F0X3AgJiYgVEFSR0VUX0FMVElWRUMpCi0rICAgIHsKLSsgICAgICBy czYwMDBfdmVjdG9yX3VuaXRbVjRTRm1vZGVdID0gVkVDVE9SX0FMVElWRUM7Ci0rICAgICAgcnM2 MDAwX3ZlY3Rvcl9tZW1bVjRTRm1vZGVdID0gVkVDVE9SX0FMVElWRUM7Ci0rICAgICAgcnM2MDAw X3ZlY3Rvcl9hbGlnbltWNFNGbW9kZV0gPSAxMjg7Ci0rICAgIH0KLSsKLSsgIC8qIFYxNlFJbW9k ZSwgVjhISW1vZGUsIFY0U0ltb2RlIGFyZSBBbHRpdmVjIG9ubHksIGJ1dCBwb3NzaWJseSBkbyBW U1ggbG9hZHMKLSsgICAgIGFuZCBzdG9yZXMuICovCi0rICBpZiAoVEFSR0VUX0FMVElWRUMpCi0r ICAgIHsKLSsgICAgICByczYwMDBfdmVjdG9yX3VuaXRbVjRTSW1vZGVdID0gVkVDVE9SX0FMVElW RUM7Ci0rICAgICAgcnM2MDAwX3ZlY3Rvcl91bml0W1Y4SEltb2RlXSA9IFZFQ1RPUl9BTFRJVkVD OwotKyAgICAgIHJzNjAwMF92ZWN0b3JfdW5pdFtWMTZRSW1vZGVdID0gVkVDVE9SX0FMVElWRUM7 Ci0rCi0rICAgICAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjE2UUltb2RlXSA9IEFMVElWRUNf UkVHUzsKLSsgICAgICByczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWOEhJbW9kZV0gPSBBTFRJVkVD X1JFR1M7Ci0rICAgICAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjRTSW1vZGVdID0gQUxUSVZF Q19SRUdTOwotKwotKyAgICAgIGlmIChUQVJHRVRfVlNYICYmIFRBUkdFVF9WU1hfVkVDVE9SX01F TU9SWSkKLSsJewotKwkgIHJzNjAwMF92ZWN0b3JfbWVtW1Y0U0ltb2RlXSA9IFZFQ1RPUl9WU1g7 Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjhISW1vZGVdID0gVkVDVE9SX1ZTWDsKLSsJICByczYw MDBfdmVjdG9yX21lbVtWMTZRSW1vZGVdID0gVkVDVE9SX1ZTWDsKLSsJICByczYwMDBfdmVjdG9y X2FsaWduW1Y0U0ltb2RlXSA9IDMyOwotKwkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjhISW1vZGVd ID0gMzI7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWMTZRSW1vZGVdID0gMzI7Ci0rCX0KLSsg ICAgICBlbHNlCi0rCXsKLSsJICByczYwMDBfdmVjdG9yX21lbVtWNFNJbW9kZV0gPSBWRUNUT1Jf QUxUSVZFQzsKLSsJICByczYwMDBfdmVjdG9yX21lbVtWOEhJbW9kZV0gPSBWRUNUT1JfQUxUSVZF QzsKLSsJICByczYwMDBfdmVjdG9yX21lbVtWMTZRSW1vZGVdID0gVkVDVE9SX0FMVElWRUM7Ci0r CSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWNFNJbW9kZV0gPSAxMjg7Ci0rCSAgcnM2MDAwX3ZlY3Rv cl9hbGlnbltWOEhJbW9kZV0gPSAxMjg7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWMTZRSW1v ZGVdID0gMTI4OwotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIERGbW9kZSwgc2VlIGlmIHdlIHdhbnQg dG8gdXNlIHRoZSBWU1ggdW5pdC4gICovCi0rICBpZiAoZmxvYXRfcCAmJiBUQVJHRVRfVlNYICYm IFRBUkdFVF9WU1hfU0NBTEFSX0RPVUJMRSkKLSsgICAgewotKyAgICAgIHJzNjAwMF92ZWN0b3Jf dW5pdFtERm1vZGVdID0gVkVDVE9SX1ZTWDsKLSsgICAgICByczYwMDBfdmVjdG9yX2FsaWduW0RG bW9kZV0gPSA2NDsKLSsgICAgICByczYwMDBfdmVjdG9yX21lbVtERm1vZGVdCi0rCT0gKFRBUkdF VF9WU1hfU0NBTEFSX01FTU9SWSA/IFZFQ1RPUl9WU1ggOiBWRUNUT1JfTk9ORSk7Ci0rICAgIH0K LSsKLSsgIC8qIFRPRE8sIGFkZCBTUEUgYW5kIHBhaXJlZCBmbG9hdGluZyBwb2ludCB2ZWN0b3Ig c3VwcG9ydC4gICovCi0rCi0rICAvKiBTZXQgdGhlIFZTWCByZWdpc3RlciBjbGFzc2VzLiAgKi8K LSsKLSsgIC8qIEZvciBWNFNGLCBwcmVmZXIgdGhlIEFsdGl2ZWMgcmVnaXN0ZXJzLCBiZWNhdXNl IHRoZXJlIGFyZSBhIGZldyBvcGVyYXRpb25zCi0rICAgICB0aGF0IHdhbnQgdG8gdXNlIEFsdGl2 ZWMgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIFZTWC4gICovCi0rICByczYwMDBfdmVjdG9yX3JlZ19j bGFzc1tWNFNGbW9kZV0KLSsgICAgPSAoKFZFQ1RPUl9VTklUX1ZTWF9QIChWNFNGbW9kZSkKLSsJ JiYgVkVDVE9SX01FTV9WU1hfUCAoVjRTRm1vZGUpCi0rCSYmICFUQVJHRVRfVjRTRl9BTFRJVkVD X1JFR1MpCi0rICAgICAgID8gdnN4X3JjCi0rICAgICAgIDogKFZFQ1RPUl9VTklUX0FMVElWRUNf T1JfVlNYX1AgKFY0U0Ztb2RlKQotKwkgID8gQUxUSVZFQ19SRUdTCi0rCSAgOiBOT19SRUdTKSk7 Ci0rCi0rICByczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWMkRGbW9kZV0KLSsgICAgPSAoVkVDVE9S X1VOSVRfVlNYX1AgKFYyREZtb2RlKSA/IHZzeF9yYyA6IE5PX1JFR1MpOwotKwotKyAgcnM2MDAw X3ZlY3Rvcl9yZWdfY2xhc3NbREZtb2RlXQotKyAgICA9ICgoIWZsb2F0X3AgfHwgIVZFQ1RPUl9V TklUX1ZTWF9QIChERm1vZGUpKQotKyAgICAgICA/IE5PX1JFR1MKLSsgICAgICAgOiAoKFRBUkdF VF9WU1hfU0NBTEFSX01FTU9SWSkKLSsJICA/IHZzeF9yYwotKwkgIDogRkxPQVRfUkVHUykpOwot KwotKyAgcnM2MDAwX3ZzeF9yZWdfY2xhc3MgPSAoZmxvYXRfcCAmJiBUQVJHRVRfVlNYKSA/IHZz eF9yYyA6IE5PX1JFR1M7Ci0rCi0rICAvKiBTZXQgdXAgdGhlIHJlbG9hZCBoZWxwZXIgZnVuY3Rp b25zLiAgKi8KLSsgIGlmIChUQVJHRVRfUkVMT0FEX0ZVTkNUSU9OUyAmJiAoVEFSR0VUX1ZTWCB8 fCBUQVJHRVRfQUxUSVZFQykpCi0rICAgIHsKLSsgICAgICBpZiAoVEFSR0VUXzY0QklUKQotKwl7 Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVjE2UUltb2RlXVswXSA9IENPREVfRk9SX3JlbG9h ZF92MTZxaV9kaV9zdG9yZTsKLSsJICByczYwMDBfdmVjdG9yX3JlbG9hZFtWMTZRSW1vZGVdWzFd ID0gQ09ERV9GT1JfcmVsb2FkX3YxNnFpX2RpX2xvYWQ7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9yZWxv YWRbVjhISW1vZGVdWzBdICA9IENPREVfRk9SX3JlbG9hZF92OGhpX2RpX3N0b3JlOwotKwkgIHJz NjAwMF92ZWN0b3JfcmVsb2FkW1Y4SEltb2RlXVsxXSAgPSBDT0RFX0ZPUl9yZWxvYWRfdjhoaV9k aV9sb2FkOwotKwkgIHJzNjAwMF92ZWN0b3JfcmVsb2FkW1Y0U0ltb2RlXVswXSAgPSBDT0RFX0ZP Ul9yZWxvYWRfdjRzaV9kaV9zdG9yZTsKLSsJICByczYwMDBfdmVjdG9yX3JlbG9hZFtWNFNJbW9k ZV1bMV0gID0gQ09ERV9GT1JfcmVsb2FkX3Y0c2lfZGlfbG9hZDsKLSsJICByczYwMDBfdmVjdG9y X3JlbG9hZFtWMkRJbW9kZV1bMF0gID0gQ09ERV9GT1JfcmVsb2FkX3YyZGlfZGlfc3RvcmU7Ci0r CSAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVjJESW1vZGVdWzFdICA9IENPREVfRk9SX3JlbG9hZF92 MmRpX2RpX2xvYWQ7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVjRTRm1vZGVdWzBdICA9IENP REVfRk9SX3JlbG9hZF92NHNmX2RpX3N0b3JlOwotKwkgIHJzNjAwMF92ZWN0b3JfcmVsb2FkW1Y0 U0Ztb2RlXVsxXSAgPSBDT0RFX0ZPUl9yZWxvYWRfdjRzZl9kaV9sb2FkOwotKwkgIHJzNjAwMF92 ZWN0b3JfcmVsb2FkW1YyREZtb2RlXVswXSAgPSBDT0RFX0ZPUl9yZWxvYWRfdjJkZl9kaV9zdG9y ZTsKLSsJICByczYwMDBfdmVjdG9yX3JlbG9hZFtWMkRGbW9kZV1bMV0gID0gQ09ERV9GT1JfcmVs b2FkX3YyZGZfZGlfbG9hZDsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIHJzNjAwMF92ZWN0 b3JfcmVsb2FkW1YxNlFJbW9kZV1bMF0gPSBDT0RFX0ZPUl9yZWxvYWRfdjE2cWlfc2lfc3RvcmU7 Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVjE2UUltb2RlXVsxXSA9IENPREVfRk9SX3JlbG9h ZF92MTZxaV9zaV9sb2FkOwotKwkgIHJzNjAwMF92ZWN0b3JfcmVsb2FkW1Y4SEltb2RlXVswXSAg PSBDT0RFX0ZPUl9yZWxvYWRfdjhoaV9zaV9zdG9yZTsKLSsJICByczYwMDBfdmVjdG9yX3JlbG9h ZFtWOEhJbW9kZV1bMV0gID0gQ09ERV9GT1JfcmVsb2FkX3Y4aGlfc2lfbG9hZDsKLSsJICByczYw MDBfdmVjdG9yX3JlbG9hZFtWNFNJbW9kZV1bMF0gID0gQ09ERV9GT1JfcmVsb2FkX3Y0c2lfc2lf c3RvcmU7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVjRTSW1vZGVdWzFdICA9IENPREVfRk9S X3JlbG9hZF92NHNpX3NpX2xvYWQ7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVjJESW1vZGVd WzBdICA9IENPREVfRk9SX3JlbG9hZF92MmRpX3NpX3N0b3JlOwotKwkgIHJzNjAwMF92ZWN0b3Jf cmVsb2FkW1YyREltb2RlXVsxXSAgPSBDT0RFX0ZPUl9yZWxvYWRfdjJkaV9zaV9sb2FkOwotKwkg IHJzNjAwMF92ZWN0b3JfcmVsb2FkW1Y0U0Ztb2RlXVswXSAgPSBDT0RFX0ZPUl9yZWxvYWRfdjRz Zl9zaV9zdG9yZTsKLSsJICByczYwMDBfdmVjdG9yX3JlbG9hZFtWNFNGbW9kZV1bMV0gID0gQ09E RV9GT1JfcmVsb2FkX3Y0c2Zfc2lfbG9hZDsKLSsJICByczYwMDBfdmVjdG9yX3JlbG9hZFtWMkRG bW9kZV1bMF0gID0gQ09ERV9GT1JfcmVsb2FkX3YyZGZfc2lfc3RvcmU7Ci0rCSAgcnM2MDAwX3Zl Y3Rvcl9yZWxvYWRbVjJERm1vZGVdWzFdICA9IENPREVfRk9SX3JlbG9hZF92MmRmX3NpX2xvYWQ7 Ci0rCX0KLSsgICAgfQotKwotKyAgLyogUHJlY2FsY3VsYXRlIEhBUkRfUkVHTk9fTlJFR1MuICAq LwotKyAgZm9yIChyID0gMDsgciA8IEZJUlNUX1BTRVVET19SRUdJU1RFUjsgKytyKQotKyAgICBm b3IgKG0gPSAwOyBtIDwgTlVNX01BQ0hJTkVfTU9ERVM7ICsrbSkKLSsgICAgICByczYwMDBfaGFy ZF9yZWdub19ucmVnc1ttXVtyXSA9IHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzX2ludGVybmFsIChy LCBtKTsKLSsKLSsgIC8qIFByZWNhbGN1bGF0ZSBIQVJEX1JFR05PX01PREVfT0suICAqLwotICAg Zm9yIChyID0gMDsgciA8IEZJUlNUX1BTRVVET19SRUdJU1RFUjsgKytyKQotICAgICBmb3IgKG0g PSAwOyBtIDwgTlVNX01BQ0hJTkVfTU9ERVM7ICsrbSkKLSAgICAgICBpZiAocnM2MDAwX2hhcmRf cmVnbm9fbW9kZV9vayAociwgbSkpCi0gCXJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2tfcFttXVty XSA9IHRydWU7Ci0rCi0rICAvKiBQcmVjYWxjdWxhdGUgQ0xBU1NTX01BWF9OUkVHUyBzaXplcy4g ICovCi0rICBmb3IgKGMgPSAwOyBjIDwgTElNX1JFR19DTEFTU0VTOyArK2MpCi0rICAgIHsKLSsg ICAgICBpbnQgcmVnX3NpemU7Ci0rCi0rICAgICAgaWYgKFRBUkdFVF9WU1ggJiYgVlNYX1JFR19D TEFTU19QIChjKSkKLSsJcmVnX3NpemUgPSBVTklUU19QRVJfVlNYX1dPUkQ7Ci0rCi0rICAgICAg ZWxzZSBpZiAoYyA9PSBBTFRJVkVDX1JFR1MpCi0rCXJlZ19zaXplID0gVU5JVFNfUEVSX0FMVElW RUNfV09SRDsKLSsKLSsgICAgICBlbHNlIGlmIChjID09IEZMT0FUX1JFR1MpCi0rCXJlZ19zaXpl ID0gVU5JVFNfUEVSX0ZQX1dPUkQ7Ci0rCi0rICAgICAgZWxzZQotKwlyZWdfc2l6ZSA9IFVOSVRT X1BFUl9XT1JEOwotKwotKyAgICAgIGZvciAobSA9IDA7IG0gPCBOVU1fTUFDSElORV9NT0RFUzsg KyttKQotKwlyczYwMDBfY2xhc3NfbWF4X25yZWdzW21dW2NdCi0rCSAgPSAoR0VUX01PREVfU0la RSAobSkgKyByZWdfc2l6ZSAtIDEpIC8gcmVnX3NpemU7Ci0rICAgIH0KLSsKLSsgIGlmIChUQVJH RVRfRTUwMF9ET1VCTEUpCi0rICAgIHJzNjAwMF9jbGFzc19tYXhfbnJlZ3NbREZtb2RlXVtHRU5F UkFMX1JFR1NdID0gMTsKLSsKLSsgIGlmIChUQVJHRVRfREVCVUdfUkVHKQotKyAgICB7Ci0rICAg ICAgY29uc3QgY2hhciAqbmwgPSAoY29uc3QgY2hhciAqKTA7Ci0rCi0rICAgICAgZnByaW50ZiAo c3RkZXJyLCAiUmVnaXN0ZXIgaW5mb3JtYXRpb246IChsYXN0IHZpcnR1YWwgcmVnID0gJWQpXG4i LAotKwkgICAgICAgTEFTVF9WSVJUVUFMX1JFR0lTVEVSKTsKLSsgICAgICByczYwMDBfZGVidWdf cmVnX3ByaW50ICgwLCAzMSwgImdyIik7Ci0rICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmludCAo MzIsIDYzLCAiZnAiKTsKLSsgICAgICByczYwMDBfZGVidWdfcmVnX3ByaW50IChGSVJTVF9BTFRJ VkVDX1JFR05PLAotKwkJCSAgICAgIExBU1RfQUxUSVZFQ19SRUdOTywKLSsJCQkgICAgICAidnMi KTsKLSsgICAgICByczYwMDBfZGVidWdfcmVnX3ByaW50IChMUl9SRUdOTywgTFJfUkVHTk8sICJs ciIpOwotKyAgICAgIHJzNjAwMF9kZWJ1Z19yZWdfcHJpbnQgKENUUl9SRUdOTywgQ1RSX1JFR05P LCAiY3RyIik7Ci0rICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmludCAoQ1IwX1JFR05PLCBDUjdf UkVHTk8sICJjciIpOwotKyAgICAgIHJzNjAwMF9kZWJ1Z19yZWdfcHJpbnQgKE1RX1JFR05PLCBN UV9SRUdOTywgIm1xIik7Ci0rICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmludCAoWEVSX1JFR05P LCBYRVJfUkVHTk8sICJ4ZXIiKTsKLSsgICAgICByczYwMDBfZGVidWdfcmVnX3ByaW50IChWUlNB VkVfUkVHTk8sIFZSU0FWRV9SRUdOTywgInZyc2F2ZSIpOwotKyAgICAgIHJzNjAwMF9kZWJ1Z19y ZWdfcHJpbnQgKFZTQ1JfUkVHTk8sIFZTQ1JfUkVHTk8sICJ2c2NyIik7Ci0rICAgICAgcnM2MDAw X2RlYnVnX3JlZ19wcmludCAoU1BFX0FDQ19SRUdOTywgU1BFX0FDQ19SRUdOTywgInNwZV9hIik7 Ci0rICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmludCAoU1BFRlNDUl9SRUdOTywgU1BFRlNDUl9S RUdOTywgInNwZV9mIik7Ci0rCi0rICAgICAgZnByaW50ZiAoc3RkZXJyLAotKwkgICAgICAgIlxu IgotKwkgICAgICAgIlYxNlFJIHJlZ19jbGFzcyA9ICVzXG4iCi0rCSAgICAgICAiVjhISSAgcmVn X2NsYXNzID0gJXNcbiIKLSsJICAgICAgICJWNFNJICByZWdfY2xhc3MgPSAlc1xuIgotKwkgICAg ICAgIlYyREkgIHJlZ19jbGFzcyA9ICVzXG4iCi0rCSAgICAgICAiVjRTRiAgcmVnX2NsYXNzID0g JXNcbiIKLSsJICAgICAgICJWMkRGICByZWdfY2xhc3MgPSAlc1xuIgotKwkgICAgICAgIkRGICAg IHJlZ19jbGFzcyA9ICVzXG4iCi0rCSAgICAgICAidnN4ICAgcmVnX2NsYXNzID0gJXNcblxuIiwK LSsJICAgICAgIHJlZ19jbGFzc19uYW1lc1tyczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWMTZRSW1v ZGVdXSwKLSsJICAgICAgIHJlZ19jbGFzc19uYW1lc1tyczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tW OEhJbW9kZV1dLAotKwkgICAgICAgcmVnX2NsYXNzX25hbWVzW3JzNjAwMF92ZWN0b3JfcmVnX2Ns YXNzW1Y0U0ltb2RlXV0sCi0rCSAgICAgICByZWdfY2xhc3NfbmFtZXNbcnM2MDAwX3ZlY3Rvcl9y ZWdfY2xhc3NbVjJESW1vZGVdXSwKLSsJICAgICAgIHJlZ19jbGFzc19uYW1lc1tyczYwMDBfdmVj dG9yX3JlZ19jbGFzc1tWNFNGbW9kZV1dLAotKwkgICAgICAgcmVnX2NsYXNzX25hbWVzW3JzNjAw MF92ZWN0b3JfcmVnX2NsYXNzW1YyREZtb2RlXV0sCi0rCSAgICAgICByZWdfY2xhc3NfbmFtZXNb cnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbREZtb2RlXV0sCi0rCSAgICAgICByZWdfY2xhc3NfbmFt ZXNbcnM2MDAwX3ZzeF9yZWdfY2xhc3NdKTsKLSsKLSsgICAgICBmb3IgKG0gPSAwOyBtIDwgTlVN X01BQ0hJTkVfTU9ERVM7ICsrbSkKLSsJaWYgKHJzNjAwMF92ZWN0b3JfdW5pdFttXSB8fCByczYw MDBfdmVjdG9yX21lbVttXSkKLSsJICB7Ci0rCSAgICBubCA9ICJcbiI7Ci0rCSAgICBmcHJpbnRm IChzdGRlcnIsICJWZWN0b3IgbW9kZTogJS01cyBhcml0aG1ldGljOiAlLThzIG1vdmU6ICUtOHNc biIsCi0rCQkgICAgIEdFVF9NT0RFX05BTUUgKG0pLAotKwkJICAgICByczYwMDBfZGVidWdfdmVj dG9yX3VuaXRbIHJzNjAwMF92ZWN0b3JfdW5pdFttXSBdLAotKwkJICAgICByczYwMDBfZGVidWdf dmVjdG9yX3VuaXRbIHJzNjAwMF92ZWN0b3JfbWVtW21dIF0pOwotKwkgIH0KLSsKLSsgICAgICBp ZiAobmwpCi0rCWZwdXRzIChubCwgc3RkZXJyKTsKLSsgICAgfQotIH0KLSAKLSAjaWYgVEFSR0VU X01BQ0hPCi1AQCAtMTQ4MiwxMiArMTk2NCwxNSBAQCByczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyAo Y29uc3QgY2hhciAqZGVmCi0gCSB7IjgwMSIsIFBST0NFU1NPUl9NUENDT1JFLCBQT1dFUlBDX0JB U0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0sCi0gCSB7IjgyMSIsIFBST0NFU1NPUl9NUENDT1JF LCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0sCi0gCSB7IjgyMyIsIFBST0NF U1NPUl9NUENDT1JFLCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0sCi0tCSB7 Ijg1NDAiLCBQUk9DRVNTT1JfUFBDODU0MCwgUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1NUUklD VF9BTElHTn0sCi0rCSB7Ijg1NDAiLCBQUk9DRVNTT1JfUFBDODU0MCwgUE9XRVJQQ19CQVNFX01B U0sgfCBNQVNLX1NUUklDVF9BTElHTgotKwkgIHwgTUFTS19JU0VMfSwKLSAJIC8qIDg1NDggaGFz IGEgZHVtbXkgZW50cnkgZm9yIG5vdy4gICovCi0tCSB7Ijg1NDgiLCBQUk9DRVNTT1JfUFBDODU0 MCwgUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1NUUklDVF9BTElHTn0sCi0rCSB7Ijg1NDgiLCBQ Uk9DRVNTT1JfUFBDODU0MCwgUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1NUUklDVF9BTElHTgot KwkgIHwgTUFTS19JU0VMfSwKLSAJIHsiZTMwMGMyIiwgUFJPQ0VTU09SX1BQQ0UzMDBDMiwgUE9X RVJQQ19CQVNFX01BU0sgfCBNQVNLX1NPRlRfRkxPQVR9LAotIAkgeyJlMzAwYzMiLCBQUk9DRVNT T1JfUFBDRTMwMEMzLCBQT1dFUlBDX0JBU0VfTUFTS30sCi0tCSB7ImU1MDBtYyIsIFBST0NFU1NP Ul9QUENFNTAwTUMsIFBPV0VSUENfQkFTRV9NQVNLIHwgTUFTS19QUENfR0ZYT1BUfSwKLSsJIHsi ZTUwMG1jIiwgUFJPQ0VTU09SX1BQQ0U1MDBNQywgUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1BQ Q19HRlhPUFQKLSsJICB8IE1BU0tfSVNFTH0sCi0gCSB7Ijg2MCIsIFBST0NFU1NPUl9NUENDT1JF LCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0sCi0gCSB7Ijk3MCIsIFBST0NF U1NPUl9QT1dFUjQsCi0gCSAgUE9XRVJQQ183NDAwX01BU0sgfCBNQVNLX1BQQ19HUE9QVCB8IE1B U0tfTUZDUkYgfCBNQVNLX1BPV0VSUEM2NH0sCi1AQCAtMTUyMCw5ICsyMDA1LDEwIEBAIHJzNjAw MF9vdmVycmlkZV9vcHRpb25zIChjb25zdCBjaGFyICpkZWYKLSAJICBQT1dFUlBDX0JBU0VfTUFT SyB8IE1BU0tfUE9XRVJQQzY0IHwgTUFTS19QUENfR1BPUFQgfCBNQVNLX1BQQ19HRlhPUFQKLSAJ ICB8IE1BU0tfTUZDUkYgfCBNQVNLX1BPUENOVEIgfCBNQVNLX0ZQUk5EIHwgTUFTS19DTVBCIHwg TUFTS19ERlAKLSAJICB8IE1BU0tfTUZQR1BSfSwKLS0JIHsicG93ZXI3IiwgUFJPQ0VTU09SX1BP V0VSNSwKLSsJIHsicG93ZXI3IiwgUFJPQ0VTU09SX1BPV0VSNywKLSAJICBQT1dFUlBDXzc0MDBf TUFTSyB8IE1BU0tfUE9XRVJQQzY0IHwgTUFTS19QUENfR1BPUFQgfCBNQVNLX01GQ1JGCi0tCSAg fCBNQVNLX1BPUENOVEIgfCBNQVNLX0ZQUk5EIHwgTUFTS19DTVBCIHwgTUFTS19ERlB9LAotKwkg IHwgTUFTS19QT1BDTlRCIHwgTUFTS19GUFJORCB8IE1BU0tfQ01QQiB8IE1BU0tfREZQIHwgTUFT S19QT1BDTlRECi0rCSAgfCBNQVNLX1ZTWH0sCS8qIERvbid0IGFkZCBNQVNLX0lTRUwgYnkgZGVm YXVsdCAqLwotIAkgeyJwb3dlcnBjIiwgUFJPQ0VTU09SX1BPV0VSUEMsIFBPV0VSUENfQkFTRV9N QVNLfSwKLSAJIHsicG93ZXJwYzY0IiwgUFJPQ0VTU09SX1BPV0VSUEM2NCwKLSAJICBQT1dFUlBD X0JBU0VfTUFTSyB8IE1BU0tfUFBDX0dGWE9QVCB8IE1BU0tfUE9XRVJQQzY0fSwKLUBAIC0xNTQ5 LDcgKzIwMzUsOCBAQCByczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyAoY29uc3QgY2hhciAqZGVmCi0g ICAgIFBPV0VSUENfTUFTS1MgPSAoUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1BQQ19HUE9QVCB8 IE1BU0tfU1RSSUNUX0FMSUdOCi0gCQkgICAgIHwgTUFTS19QUENfR0ZYT1BUIHwgTUFTS19QT1dF UlBDNjQgfCBNQVNLX0FMVElWRUMKLSAJCSAgICAgfCBNQVNLX01GQ1JGIHwgTUFTS19QT1BDTlRC IHwgTUFTS19GUFJORCB8IE1BU0tfTVVMSFcKLS0JCSAgICAgfCBNQVNLX0RMTVpCIHwgTUFTS19D TVBCIHwgTUFTS19NRlBHUFIgfCBNQVNLX0RGUCkKLSsJCSAgICAgfCBNQVNLX0RMTVpCIHwgTUFT S19DTVBCIHwgTUFTS19NRlBHUFIgfCBNQVNLX0RGUAotKwkJICAgICB8IE1BU0tfUE9QQ05URCB8 IE1BU0tfVlNYIHwgTUFTS19JU0VMKQotICAgfTsKLSAKLSAgIHNldF9tYXNrcyA9IFBPV0VSX01B U0tTIHwgUE9XRVJQQ19NQVNLUyB8IE1BU0tfU09GVF9GTE9BVDsKLUBAIC0xNTk0LDEwICsyMDgx LDYgQEAgcnM2MDAwX292ZXJyaWRlX29wdGlvbnMgKGNvbnN0IGNoYXIgKmRlZgotIAl9Ci0gICAg IH0KLSAKLS0gIGlmICgoVEFSR0VUX0U1MDAgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUFBD RTUwME1DKQotLSAgICAgICYmICFyczYwMDBfZXhwbGljaXRfb3B0aW9ucy5pc2VsKQotLSAgICBy czYwMDBfaXNlbCA9IDE7Ci0tCi0gICBpZiAocnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUFBDRTMw MEMyIHx8IHJzNjAwMF9jcHUgPT0gUFJPQ0VTU09SX1BQQ0UzMDBDMwotICAgICAgIHx8IHJzNjAw MF9jcHUgPT0gUFJPQ0VTU09SX1BQQ0U1MDBNQykKLSAgICAgewotQEAgLTE2NDIsMTcgKzIxMjUs NjEgQEAgcnM2MDAwX292ZXJyaWRlX29wdGlvbnMgKGNvbnN0IGNoYXIgKmRlZgotIAl9Ci0gICAg IH0KLSAKLSsgIC8qIEFkZCBzb21lIHdhcm5pbmdzIGZvciBWU1guICBFbmFibGUgLW1hbHRpdmVj IHVubGVzcyB0aGUgdXNlciBleHBsaWNpdGx5Ci0rICAgICB1c2VkIC1tbm8tYWx0aXZlYyAgKi8K LSsgIGlmIChUQVJHRVRfVlNYKQotKyAgICB7Ci0rICAgICAgY29uc3QgY2hhciAqbXNnID0gTlVM TDsKLSsgICAgICBpZiAoIVRBUkdFVF9IQVJEX0ZMT0FUIHx8ICFUQVJHRVRfRlBSUwotKwkgIHx8 ICFUQVJHRVRfU0lOR0xFX0ZMT0FUIHx8ICFUQVJHRVRfRE9VQkxFX0ZMT0FUKQotKwltc2cgPSAi LW12c3ggcmVxdWlyZXMgaGFyZHdhcmUgZmxvYXRpbmcgcG9pbnQiOwotKyAgICAgIGVsc2UgaWYg KFRBUkdFVF9QQUlSRURfRkxPQVQpCi0rCW1zZyA9ICItbXZzeCBhbmQgLW1wYWlyZWQgYXJlIGlu Y29tcGF0aWJsZSI7Ci0rICAgICAgLyogVGhlIGhhcmR3YXJlIHdpbGwgYWxsb3cgVlNYIGFuZCBs aXR0bGUgZW5kaWFuLCBidXQgdW50aWwgd2UgbWFrZSBzdXJlCi0rCSB0aGluZ3MgbGlrZSB2ZWN0 b3Igc2VsZWN0LCBldGMuIHdvcmsgZG9uJ3QgYWxsb3cgVlNYIG9uIGxpdHRsZSBlbmRpYW4KLSsJ IHN5c3RlbXMgYXQgdGhpcyBwb2ludC4gICovCi0rICAgICAgZWxzZSBpZiAoIUJZVEVTX0JJR19F TkRJQU4pCi0rCW1zZyA9ICItbXZzeCB1c2VkIHdpdGggbGl0dGxlIGVuZGlhbiBjb2RlIjsKLSsg ICAgICBlbHNlIGlmIChUQVJHRVRfQVZPSURfWEZPUk0gPiAwKQotKwltc2cgPSAiLW12c3ggbmVl ZHMgaW5kZXhlZCBhZGRyZXNzaW5nIjsKLSsKLSsgICAgICBpZiAobXNnKQotKwl7Ci0rCSAgd2Fy bmluZyAoMCwgbXNnKTsKLSsJICB0YXJnZXRfZmxhZ3MgJj0gTUFTS19WU1g7Ci0rCX0KLSsgICAg ICBlbHNlIGlmICghVEFSR0VUX0FMVElWRUMgJiYgKHRhcmdldF9mbGFnc19leHBsaWNpdCAmIE1B U0tfQUxUSVZFQykgPT0gMCkKLSsJdGFyZ2V0X2ZsYWdzIHw9IE1BU0tfQUxUSVZFQzsKLSsgICAg fQotKwotICAgLyogU2V0IGRlYnVnIGZsYWdzICovCi0gICBpZiAocnM2MDAwX2RlYnVnX25hbWUp Ci0gICAgIHsKLSAgICAgICBpZiAoISBzdHJjbXAgKHJzNjAwMF9kZWJ1Z19uYW1lLCAiYWxsIikp Ci0tCXJzNjAwMF9kZWJ1Z19zdGFjayA9IHJzNjAwMF9kZWJ1Z19hcmcgPSAxOwotKwlyczYwMDBf ZGVidWdfc3RhY2sgPSByczYwMDBfZGVidWdfYXJnID0gcnM2MDAwX2RlYnVnX3JlZwotKwkgID0g cnM2MDAwX2RlYnVnX2FkZHIgPSByczYwMDBfZGVidWdfY29zdCA9IDE7Ci0gICAgICAgZWxzZSBp ZiAoISBzdHJjbXAgKHJzNjAwMF9kZWJ1Z19uYW1lLCAic3RhY2siKSkKLSAJcnM2MDAwX2RlYnVn X3N0YWNrID0gMTsKLSAgICAgICBlbHNlIGlmICghIHN0cmNtcCAocnM2MDAwX2RlYnVnX25hbWUs ICJhcmciKSkKLSAJcnM2MDAwX2RlYnVnX2FyZyA9IDE7Ci0rICAgICAgZWxzZSBpZiAoISBzdHJj bXAgKHJzNjAwMF9kZWJ1Z19uYW1lLCAicmVnIikpCi0rCXJzNjAwMF9kZWJ1Z19yZWcgPSAxOwot KyAgICAgIGVsc2UgaWYgKCEgc3RyY21wIChyczYwMDBfZGVidWdfbmFtZSwgImFkZHIiKSkKLSsJ cnM2MDAwX2RlYnVnX2FkZHIgPSAxOwotKyAgICAgIGVsc2UgaWYgKCEgc3RyY21wIChyczYwMDBf ZGVidWdfbmFtZSwgImNvc3QiKSkKLSsJcnM2MDAwX2RlYnVnX2Nvc3QgPSAxOwotICAgICAgIGVs c2UKLSAJZXJyb3IgKCJ1bmtub3duIC1tZGVidWctJXMgc3dpdGNoIiwgcnM2MDAwX2RlYnVnX25h bWUpOwotKwotKyAgICAgIC8qIElmIC1tZGVidWc9Y29zdCBvciAtbWRlYnVnPWFsbCwgcmVwbGFj ZSB0aGUgY29zdCB0YXJnZXQgaG9va3Mgd2l0aAotKwkgZGVidWcgdmVyc2lvbnMgdGhhdCBjYWxs IHRoZSByZWFsIHZlcnNpb24gYW5kIHRoZW4gcHJpbnRzIGRlYnVnZ2luZwotKwkgaW5mb3JtYXRp b24uICAqLwotKyAgICAgIGlmIChUQVJHRVRfREVCVUdfQ09TVCkKLSsJewotKwkgIHRhcmdldG0u cnR4X2Nvc3RzID0gcnM2MDAwX2RlYnVnX3J0eF9jb3N0czsKLSsJICB0YXJnZXRtLmFkZHJlc3Nf Y29zdCA9IHJzNjAwMF9kZWJ1Z19hZGRyZXNzX2Nvc3Q7Ci0rCSAgdGFyZ2V0bS5zY2hlZC5hZGp1 c3RfY29zdCA9IHJzNjAwMF9kZWJ1Z19hZGp1c3RfY29zdDsKLSsJfQotICAgICB9Ci0gCi0gICBp ZiAocnM2MDAwX3RyYWNlYmFja19uYW1lKQotQEAgLTE3NDEsOCArMjI2OCw4IEBAIHJzNjAwMF9v dmVycmlkZV9vcHRpb25zIChjb25zdCBjaGFyICpkZWYKLSAJcnM2MDAwX3NwZSA9IDA7Ci0gICAg ICAgaWYgKCFyczYwMDBfZXhwbGljaXRfb3B0aW9ucy5mbG9hdF9ncHJzKQotIAlyczYwMDBfZmxv YXRfZ3BycyA9IDA7Ci0tICAgICAgaWYgKCFyczYwMDBfZXhwbGljaXRfb3B0aW9ucy5pc2VsKQot LQlyczYwMDBfaXNlbCA9IDA7Ci0rICAgICAgaWYgKCEodGFyZ2V0X2ZsYWdzX2V4cGxpY2l0ICYg TUFTS19JU0VMKSkKLSsJdGFyZ2V0X2ZsYWdzICY9IH5NQVNLX0lTRUw7Ci0gICAgIH0KLSAKLSAg IC8qIERldGVjdCBpbnZhbGlkIG9wdGlvbiBjb21iaW5hdGlvbnMgd2l0aCBFNTAwLiAgKi8KLUBA IC0xNzUxLDEyICsyMjc4LDE0IEBAIHJzNjAwMF9vdmVycmlkZV9vcHRpb25zIChjb25zdCBjaGFy ICpkZWYKLSAgIHJzNjAwMF9hbHdheXNfaGludCA9IChyczYwMDBfY3B1ICE9IFBST0NFU1NPUl9Q T1dFUjQKLSAJCQkmJiByczYwMDBfY3B1ICE9IFBST0NFU1NPUl9QT1dFUjUKLSAgICAgICAgICAg ICAgICAgICAgICAgICAmJiByczYwMDBfY3B1ICE9IFBST0NFU1NPUl9QT1dFUjYKLSsgICAgICAg ICAgICAgICAgICAgICAgICAmJiByczYwMDBfY3B1ICE9IFBST0NFU1NPUl9QT1dFUjcKLSAJCQkm JiByczYwMDBfY3B1ICE9IFBST0NFU1NPUl9DRUxMKTsKLSAgIHJzNjAwMF9zY2hlZF9ncm91cHMg PSAocnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI0Ci0gCQkJIHx8IHJzNjAwMF9jcHUgPT0g UFJPQ0VTU09SX1BPV0VSNSk7Ci0gICByczYwMDBfYWxpZ25fYnJhbmNoX3RhcmdldHMgPSAocnM2 MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI1Ci0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI2KTsKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByczYwMDBfY3B1ID09IFBST0NFU1NP Ul9QT1dFUjYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByczYwMDBfY3B1 ID09IFBST0NFU1NPUl9QT1dFUjcpOwotIAotICAgcnM2MDAwX3NjaGVkX3Jlc3RyaWN0ZWRfaW5z bnNfcHJpb3JpdHkKLSAgICAgPSAocnM2MDAwX3NjaGVkX2dyb3VwcyA/IDEgOiAwKTsKLUBAIC0x OTUxLDYgKzI0ODAsMTAgQEAgcnM2MDAwX292ZXJyaWRlX29wdGlvbnMgKGNvbnN0IGNoYXIgKmRl ZgotIAlyczYwMDBfY29zdCA9ICZwb3dlcjZfY29zdDsKLSAJYnJlYWs7Ci0gCi0rICAgICAgY2Fz ZSBQUk9DRVNTT1JfUE9XRVI3OgotKwlyczYwMDBfY29zdCA9ICZwb3dlcjdfY29zdDsKLSsJYnJl YWs7Ci0rCi0gICAgICAgZGVmYXVsdDoKLSAJZ2NjX3VucmVhY2hhYmxlICgpOwotICAgICAgIH0K LUBAIC0yMDAxLDcgKzI1MzQsNyBAQCByczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyAoY29uc3QgY2hh ciAqZGVmCi0gc3RhdGljIHRyZWUKLSByczYwMDBfYnVpbHRpbl9tYXNrX2Zvcl9sb2FkICh2b2lk KQotIHsKLS0gIGlmIChUQVJHRVRfQUxUSVZFQykKLSsgIGlmIChUQVJHRVRfQUxUSVZFQyAmJiAh VEFSR0VUX1ZTWCkKLSAgICAgcmV0dXJuIGFsdGl2ZWNfYnVpbHRpbl9tYXNrX2Zvcl9sb2FkOwot ICAgZWxzZQotICAgICByZXR1cm4gMDsKLUBAIC0yMDE1LDE4ICsyNTQ4LDI3IEBAIHJzNjAwMF9i dWlsdGluX21hc2tfZm9yX2xvYWQgKHZvaWQpCi0gc3RhdGljIHRyZWUKLSByczYwMDBfYnVpbHRp bl9jb252ZXJzaW9uIChlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIHR5cGUpCi0gewotLSAgaWYg KCFUQVJHRVRfQUxUSVZFQykKLS0gICAgcmV0dXJuIE5VTExfVFJFRTsKLS0KLSAgIHN3aXRjaCAo Y29kZSkKLSAgICAgewotICAgICBjYXNlIEZJWF9UUlVOQ19FWFBSOgotICAgICAgIHN3aXRjaCAo VFlQRV9NT0RFICh0eXBlKSkKLSAJewotKwljYXNlIFYyREltb2RlOgotKwkgIGlmICghVkVDVE9S X1VOSVRfVlNYX1AgKFYyREZtb2RlKSkKLSsJICAgIHJldHVybiBOVUxMX1RSRUU7Ci0rCi0rCSAg cmV0dXJuIFRZUEVfVU5TSUdORUQgKHR5cGUpCi0rCSAgICA/IHJzNjAwMF9idWlsdGluX2RlY2xz W1ZTWF9CVUlMVElOX1hWQ1ZEUFVYRFNdCi0rCSAgICA6IHJzNjAwMF9idWlsdGluX2RlY2xzW1ZT WF9CVUlMVElOX1hWQ1ZEUFNYRFNdOwotKwotIAljYXNlIFY0U0ltb2RlOgotKwkgIGlmIChWRUNU T1JfVU5JVF9OT05FX1AgKFY0U0ltb2RlKSB8fCBWRUNUT1JfVU5JVF9OT05FX1AgKFY0U0Ztb2Rl KSkKLSsJICAgIHJldHVybiBOVUxMX1RSRUU7Ci0rCi0gCSAgcmV0dXJuIFRZUEVfVU5TSUdORUQg KHR5cGUpCi0tCSAgICA/IHJzNjAwMF9idWlsdGluX2RlY2xzW0FMVElWRUNfQlVJTFRJTl9WQ1RV WFNdCi0tCSAgICA6IHJzNjAwMF9idWlsdGluX2RlY2xzW0FMVElWRUNfQlVJTFRJTl9WQ1RTWFNd OwotKwkgICAgPyByczYwMDBfYnVpbHRpbl9kZWNsc1tWRUNUT1JfQlVJTFRJTl9GSVhVTlNfVjRT Rl9WNFNJXQotKwkgICAgOiByczYwMDBfYnVpbHRpbl9kZWNsc1tWRUNUT1JfQlVJTFRJTl9GSVhf VjRTRl9WNFNJXTsKLSsKLSAJZGVmYXVsdDoKLSAJICByZXR1cm4gTlVMTF9UUkVFOwotIAl9Ci1A QCAtMjAzNCwxMCArMjU3NiwyMiBAQCByczYwMDBfYnVpbHRpbl9jb252ZXJzaW9uIChlbnVtIHRy ZWVfY29kCi0gICAgIGNhc2UgRkxPQVRfRVhQUjoKLSAgICAgICBzd2l0Y2ggKFRZUEVfTU9ERSAo dHlwZSkpCi0gCXsKLSsJY2FzZSBWMkRJbW9kZToKLSsJICBpZiAoIVZFQ1RPUl9VTklUX1ZTWF9Q IChWMkRGbW9kZSkpCi0rCSAgICByZXR1cm4gTlVMTF9UUkVFOwotKwotKwkgIHJldHVybiBUWVBF X1VOU0lHTkVEICh0eXBlKQotKwkgICAgPyByczYwMDBfYnVpbHRpbl9kZWNsc1tWU1hfQlVJTFRJ Tl9YVkNWVVhEU1BdCi0rCSAgICA6IHJzNjAwMF9idWlsdGluX2RlY2xzW1ZTWF9CVUlMVElOX1hW Q1ZTWERTUF07Ci0rCi0gCWNhc2UgVjRTSW1vZGU6Ci0rCSAgaWYgKFZFQ1RPUl9VTklUX05PTkVf UCAoVjRTSW1vZGUpIHx8IFZFQ1RPUl9VTklUX05PTkVfUCAoVjRTRm1vZGUpKQotKwkgICAgcmV0 dXJuIE5VTExfVFJFRTsKLSsKLSAJICByZXR1cm4gVFlQRV9VTlNJR05FRCAodHlwZSkKLS0JICAg ID8gcnM2MDAwX2J1aWx0aW5fZGVjbHNbQUxUSVZFQ19CVUlMVElOX1ZDRlVYXQotLQkgICAgOiBy czYwMDBfYnVpbHRpbl9kZWNsc1tBTFRJVkVDX0JVSUxUSU5fVkNGU1hdOwotKwkgICAgPyByczYw MDBfYnVpbHRpbl9kZWNsc1tWRUNUT1JfQlVJTFRJTl9VTlNGTE9BVF9WNFNJX1Y0U0ZdCi0rCSAg ICA6IHJzNjAwMF9idWlsdGluX2RlY2xzW1ZFQ1RPUl9CVUlMVElOX0ZMT0FUX1Y0U0lfVjRTRl07 Ci0rCi0gCWRlZmF1bHQ6Ci0gCSAgcmV0dXJuIE5VTExfVFJFRTsKLSAJfQotQEAgLTIxNTAsNiAr MjcwNCwxNCBAQCByczYwMDBfYnVpbHRpbl92ZWNfcGVybSAodHJlZSB0eXBlLCB0cmVlCi0gICAg ICAgZCA9IHJzNjAwMF9idWlsdGluX2RlY2xzW0FMVElWRUNfQlVJTFRJTl9WUEVSTV80U0ZdOwot ICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIFYyREZtb2RlOgotKyAgICAgIGQgPSByczYwMDBf YnVpbHRpbl9kZWNsc1tBTFRJVkVDX0JVSUxUSU5fVlBFUk1fMkRGXTsKLSsgICAgICBicmVhazsK LSsKLSsgICAgY2FzZSBWMkRJbW9kZToKLSsgICAgICBkID0gcnM2MDAwX2J1aWx0aW5fZGVjbHNb QUxUSVZFQ19CVUlMVElOX1ZQRVJNXzJESV07Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGRlZmF1 bHQ6Ci0gICAgICAgcmV0dXJuIE5VTExfVFJFRTsKLSAgICAgfQotQEAgLTIyMjksNiArMjc5MSw3 IEBAIHN0YXRpYyBib29sCi0gcnM2MDAwX2hhbmRsZV9vcHRpb24gKHNpemVfdCBjb2RlLCBjb25z dCBjaGFyICphcmcsIGludCB2YWx1ZSkKLSB7Ci0gICBlbnVtIGZwdV90eXBlX3QgZnB1X3R5cGUg PSBGUFVfTk9ORTsKLSsgIGludCBpc2VsOwotIAotICAgc3dpdGNoIChjb2RlKQotICAgICB7Ci1A QCAtMjMzMSwxNCArMjg5NCwxNCBAQCByczYwMDBfaGFuZGxlX29wdGlvbiAoc2l6ZV90IGNvZGUs IGNvbnN0Ci0gICAgICAgcnM2MDAwX3BhcnNlX3llc19ub19vcHRpb24gKCJ2cnNhdmUiLCBhcmcs ICYoVEFSR0VUX0FMVElWRUNfVlJTQVZFKSk7Ci0gICAgICAgYnJlYWs7Ci0gCi0tICAgIGNhc2Ug T1BUX21pc2VsOgotLSAgICAgIHJzNjAwMF9leHBsaWNpdF9vcHRpb25zLmlzZWwgPSB0cnVlOwot LSAgICAgIHJzNjAwMF9pc2VsID0gdmFsdWU7Ci0tICAgICAgYnJlYWs7Ci0tCi0gICAgIGNhc2Ug T1BUX21pc2VsXzoKLS0gICAgICByczYwMDBfZXhwbGljaXRfb3B0aW9ucy5pc2VsID0gdHJ1ZTsK LS0gICAgICByczYwMDBfcGFyc2VfeWVzX25vX29wdGlvbiAoImlzZWwiLCBhcmcsICYocnM2MDAw X2lzZWwpKTsKLSsgICAgICB0YXJnZXRfZmxhZ3NfZXhwbGljaXQgfD0gTUFTS19JU0VMOwotKyAg ICAgIGlzZWwgPSAwOwotKyAgICAgIHJzNjAwMF9wYXJzZV95ZXNfbm9fb3B0aW9uICgiaXNlbCIs IGFyZywgJmlzZWwpOwotKyAgICAgIGlmIChpc2VsKQotKwl0YXJnZXRfZmxhZ3MgfD0gTUFTS19J U0VMOwotKyAgICAgIGVsc2UKLSsJdGFyZ2V0X2ZsYWdzICY9IH5NQVNLX0lTRUw7Ci0gICAgICAg YnJlYWs7Ci0gCi0gICAgIGNhc2UgT1BUX21zcGU6Ci1AQCAtMjk2Nyw2ICszNTMwLDkgQEAgb3V0 cHV0X3ZlY19jb25zdF9tb3ZlIChydHggKm9wZXJhbmRzKQotICAgdmVjID0gb3BlcmFuZHNbMV07 Ci0gICBtb2RlID0gR0VUX01PREUgKGRlc3QpOwotIAotKyAgaWYgKFRBUkdFVF9WU1ggJiYgemVy b19jb25zdGFudCAodmVjLCBtb2RlKSkKLSsgICAgcmV0dXJuICJ4eGx4b3IgJXgwLCV4MCwleDAi OwotKwotICAgaWYgKFRBUkdFVF9BTFRJVkVDKQotICAgICB7Ci0gICAgICAgcnR4IHNwbGF0X3Zl YzsKLUBAIC0zMTkwLDIwICszNzU2LDIxIEBAIHJzNjAwMF9leHBhbmRfdmVjdG9yX2luaXQgKHJ0 eCB0YXJnZXQsIHIKLSAgIGlmIChuX3ZhciA9PSAwKQotICAgICB7Ci0gICAgICAgcnR4IGNvbnN0 X3ZlYyA9IGdlbl9ydHhfQ09OU1RfVkVDVE9SIChtb2RlLCBYVkVDICh2YWxzLCAwKSk7Ci0tICAg ICAgaWYgKG1vZGUgIT0gVjRTRm1vZGUgJiYgYWxsX2NvbnN0X3plcm8pCi0rICAgICAgYm9vbCBp bnRfdmVjdG9yX3AgPSAoR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfVkVDVE9SX0lOVCk7 Ci0rICAgICAgaWYgKChpbnRfdmVjdG9yX3AgfHwgVEFSR0VUX1ZTWCkgJiYgYWxsX2NvbnN0X3pl cm8pCi0gCXsKLSAJICAvKiBaZXJvIHJlZ2lzdGVyLiAgKi8KLSAJICBlbWl0X2luc24gKGdlbl9y dHhfU0VUIChWT0lEbW9kZSwgdGFyZ2V0LAotIAkJCQkgIGdlbl9ydHhfWE9SIChtb2RlLCB0YXJn ZXQsIHRhcmdldCkpKTsKLSAJICByZXR1cm47Ci0gCX0KLS0gICAgICBlbHNlIGlmIChtb2RlICE9 IFY0U0Ztb2RlICYmIGVhc3lfdmVjdG9yX2NvbnN0YW50IChjb25zdF92ZWMsIG1vZGUpKQotKyAg ICAgIGVsc2UgaWYgKGludF92ZWN0b3JfcCAmJiBlYXN5X3ZlY3Rvcl9jb25zdGFudCAoY29uc3Rf dmVjLCBtb2RlKSkKLSAJewotIAkgIC8qIFNwbGF0IGltbWVkaWF0ZS4gICovCi0gCSAgZW1pdF9p bnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsIHRhcmdldCwgY29uc3RfdmVjKSk7Ci0gCSAgcmV0 dXJuOwotIAl9Ci0tICAgICAgZWxzZSBpZiAoYWxsX3NhbWUpCi0rICAgICAgZWxzZSBpZiAoYWxs X3NhbWUgJiYgaW50X3ZlY3Rvcl9wKQotIAk7CS8qIFNwbGF0IHZlY3RvciBlbGVtZW50LiAgKi8K LSAgICAgICBlbHNlCi0gCXsKLUBAIC0zMjEzLDYgKzM3ODAsMTggQEAgcnM2MDAwX2V4cGFuZF92 ZWN0b3JfaW5pdCAocnR4IHRhcmdldCwgcgotIAl9Ci0gICAgIH0KLSAKLSsgIGlmIChtb2RlID09 IFYyREZtb2RlKQotKyAgICB7Ci0rICAgICAgZ2NjX2Fzc2VydCAoVEFSR0VUX1ZTWCk7Ci0rICAg ICAgaWYgKGFsbF9zYW1lKQotKwllbWl0X2luc24gKGdlbl92c3hfc3BsYXR2MmRmICh0YXJnZXQs IFhWRUNFWFAgKHZhbHMsIDAsIDApKSk7Ci0rICAgICAgZWxzZQotKwllbWl0X2luc24gKGdlbl92 c3hfY29uY2F0X3YyZGYgKHRhcmdldCwKLSsJCQkJCWNvcHlfdG9fcmVnIChYVkVDRVhQICh2YWxz LCAwLCAwKSksCi0rCQkJCQljb3B5X3RvX3JlZyAoWFZFQ0VYUCAodmFscywgMCwgMSkpKSk7Ci0r ICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICAvKiBTdG9yZSB2YWx1ZSB0byBzdGFjayB0ZW1w LiAgTG9hZCB2ZWN0b3IgZWxlbWVudC4gIFNwbGF0LiAgKi8KLSAgIGlmIChhbGxfc2FtZSkKLSAg ICAgewotQEAgLTMyNzIsNiArMzg1MSwxMyBAQCByczYwMDBfZXhwYW5kX3ZlY3Rvcl9zZXQgKHJ0 eCB0YXJnZXQsIHJ0Ci0gICBpbnQgd2lkdGggPSBHRVRfTU9ERV9TSVpFIChpbm5lcl9tb2RlKTsK LSAgIGludCBpOwotIAotKyAgaWYgKG1vZGUgPT0gVjJERm1vZGUpCi0rICAgIHsKLSsgICAgICBn Y2NfYXNzZXJ0IChUQVJHRVRfVlNYKTsKLSsgICAgICBlbWl0X2luc24gKGdlbl92c3hfc2V0X3Yy ZGYgKHRhcmdldCwgdmFsLCB0YXJnZXQsIEdFTl9JTlQgKGVsdCkpKTsKLSsgICAgICByZXR1cm47 Ci0rICAgIH0KLSsKLSAgIC8qIExvYWQgc2luZ2xlIHZhcmlhYmxlIHZhbHVlLiAgKi8KLSAgIG1l bSA9IGFzc2lnbl9zdGFja190ZW1wIChtb2RlLCBHRVRfTU9ERV9TSVpFIChpbm5lcl9tb2RlKSwg MCk7Ci0gICBlbWl0X21vdmVfaW5zbiAoYWRqdXN0X2FkZHJlc3NfbnYgKG1lbSwgaW5uZXJfbW9k ZSwgMCksIHZhbCk7Ci1AQCAtMzMwOSw2ICszODk1LDEzIEBAIHJzNjAwMF9leHBhbmRfdmVjdG9y X2V4dHJhY3QgKHJ0eCB0YXJnZXQKLSAgIGVudW0gbWFjaGluZV9tb2RlIGlubmVyX21vZGUgPSBH RVRfTU9ERV9JTk5FUiAobW9kZSk7Ci0gICBydHggbWVtLCB4OwotIAotKyAgaWYgKG1vZGUgPT0g VjJERm1vZGUpCi0rICAgIHsKLSsgICAgICBnY2NfYXNzZXJ0IChUQVJHRVRfVlNYKTsKLSsgICAg ICBlbWl0X2luc24gKGdlbl92c3hfZXh0cmFjdF92MmRmICh0YXJnZXQsIHZlYywgR0VOX0lOVCAo ZWx0KSkpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotICAgLyogQWxsb2NhdGUgbW9kZS1z aXplZCBidWZmZXIuICAqLwotICAgbWVtID0gYXNzaWduX3N0YWNrX3RlbXAgKG1vZGUsIEdFVF9N T0RFX1NJWkUgKG1vZGUpLCAwKTsKLSAKLUBAIC0zNjI3LDkgKzQyMjAsMTMgQEAgcnM2MDAwX2xl Z2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAoZW51bQotICAgICBjYXNlIFY4SEltb2RlOgotICAg ICBjYXNlIFY0U0Ztb2RlOgotICAgICBjYXNlIFY0U0ltb2RlOgotLSAgICAgIC8qIEFsdGlWZWMg dmVjdG9yIG1vZGVzLiAgT25seSByZWcrcmVnIGFkZHJlc3NpbmcgaXMgdmFsaWQgYW5kCi0rICAg IGNhc2UgVjJERm1vZGU6Ci0rICAgIGNhc2UgVjJESW1vZGU6Ci0rICAgICAgLyogQWx0aVZlYy9W U1ggdmVjdG9yIG1vZGVzLiAgT25seSByZWcrcmVnIGFkZHJlc3NpbmcgaXMgdmFsaWQgYW5kCi0g CSBjb25zdGFudCBvZmZzZXQgemVybyBzaG91bGQgbm90IG9jY3VyIGR1ZSB0byBjYW5vbmljYWxp emF0aW9uLiAgKi8KLS0gICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgaWYgKFZFQ1RPUl9NRU1f QUxUSVZFQ19PUl9WU1hfUCAobW9kZSkpCi0rCXJldHVybiBmYWxzZTsKLSsgICAgICBicmVhazsK LSAKLSAgICAgY2FzZSBWNEhJbW9kZToKLSAgICAgY2FzZSBWMlNJbW9kZToKLUBAIC0zNjQ2LDYg KzQyNDMsMTEgQEAgcnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAoZW51bQotICAg ICAgIGlmIChUQVJHRVRfRTUwMF9ET1VCTEUpCi0gCXJldHVybiBTUEVfQ09OU1RfT0ZGU0VUX09L IChvZmZzZXQpOwotIAotKyAgICAgIC8qIElmIHdlIGFyZSB1c2luZyBWU1ggc2NhbGFyIGxvYWRz LCByZXN0cmljdCBvdXJzZWx2ZXMgdG8gcmVnK3JlZwotKwkgYWRkcmVzc2luZy4gICovCi0rICAg ICAgaWYgKFZFQ1RPUl9NRU1fVlNYX1AgKERGbW9kZSkpCi0rCXJldHVybiBmYWxzZTsKLSsKLSAg ICAgY2FzZSBERG1vZGU6Ci0gICAgIGNhc2UgREltb2RlOgotICAgICAgIC8qIE9uIGU1MDB2Miwg d2UgbWF5IGhhdmU6Ci1AQCAtMzcxNiw3ICs0MzE4LDkgQEAgYXZvaWRpbmdfaW5kZXhlZF9hZGRy ZXNzX3AgKGVudW0gbWFjaGluZQotIHsKLSAgIC8qIEF2b2lkIGluZGV4ZWQgYWRkcmVzc2luZyBm b3IgbW9kZXMgdGhhdCBoYXZlIG5vbi1pbmRleGVkCi0gICAgICBsb2FkL3N0b3JlIGluc3RydWN0 aW9uIGZvcm1zLiAgKi8KLS0gIHJldHVybiBUQVJHRVRfQVZPSURfWEZPUk0gJiYgIUFMVElWRUNf VkVDVE9SX01PREUgKG1vZGUpOwotKyAgcmV0dXJuIChUQVJHRVRfQVZPSURfWEZPUk0KLSsJICAm JiAoIVRBUkdFVF9BTFRJVkVDIHx8ICFBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSsJICAm JiAoIVRBUkdFVF9WU1ggfHwgIVZTWF9WRUNUT1JfTU9ERSAobW9kZSkpKTsKLSB9Ci0gCi0gaW5s aW5lIGJvb2wKLUBAIC0zODA4LDE1ICs0NDEyLDEwIEBAIHJ0eAotIHJzNjAwMF9sZWdpdGltaXpl X2FkZHJlc3MgKHJ0eCB4LCBydHggb2xkeCBBVFRSSUJVVEVfVU5VU0VELAotIAkJCSAgIGVudW0g bWFjaGluZV9tb2RlIG1vZGUpCi0gewotKyAgcnR4IHJldCA9IE5VTExfUlRYOwotKyAgcnR4IG9y aWdfeCA9IHg7Ci0gICB1bnNpZ25lZCBpbnQgZXh0cmEgPSAwOwotIAotLSAgaWYgKEdFVF9DT0RF ICh4KSA9PSBTWU1CT0xfUkVGKQotLSAgICB7Ci0tICAgICAgZW51bSB0bHNfbW9kZWwgbW9kZWwg PSBTWU1CT0xfUkVGX1RMU19NT0RFTCAoeCk7Ci0tICAgICAgaWYgKG1vZGVsICE9IDApCi0tCXJl dHVybiByczYwMDBfbGVnaXRpbWl6ZV90bHNfYWRkcmVzcyAoeCwgbW9kZWwpOwotLSAgICB9Ci0t Ci0gICBzd2l0Y2ggKG1vZGUpCi0gICAgIHsKLSAgICAgY2FzZSBERm1vZGU6Ci1AQCAtMzgzOCwx OSArNDQzNywyNiBAQCByczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzIChydHggeCwgcnR4IG9sCi0g ICAgICAgYnJlYWs7Ci0gICAgIH0KLSAKLS0gIGlmIChHRVRfQ09ERSAoeCkgPT0gUExVUwotLSAg ICAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUkVHCi0tICAgICAgJiYgR0VUX0NPREUg KFhFWFAgKHgsIDEpKSA9PSBDT05TVF9JTlQKLS0gICAgICAmJiAoKHVuc2lnbmVkIEhPU1RfV0lE RV9JTlQpIChJTlRWQUwgKFhFWFAgKHgsIDEpKSArIDB4ODAwMCkKLS0JICA+PSAweDEwMDAwIC0g ZXh0cmEpCi0tICAgICAgJiYgISgoVEFSR0VUX1BPV0VSUEM2NAotLQkgICAgJiYgKG1vZGUgPT0g REltb2RlIHx8IG1vZGUgPT0gVEltb2RlKQotLQkgICAgJiYgKElOVFZBTCAoWEVYUCAoeCwgMSkp ICYgMykgIT0gMCkKLS0JICAgfHwgU1BFX1ZFQ1RPUl9NT0RFIChtb2RlKQotLQkgICB8fCBBTFRJ VkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQotLQkgICB8fCAoVEFSR0VUX0U1MDBfRE9VQkxFICYmICht b2RlID09IERGbW9kZSB8fCBtb2RlID09IFRGbW9kZQotLQkJCQkgICAgICB8fCBtb2RlID09IERJ bW9kZSB8fCBtb2RlID09IEREbW9kZQotLQkJCQkgICAgICB8fCBtb2RlID09IFREbW9kZSkpKSkK LSsgIGlmIChHRVRfQ09ERSAoeCkgPT0gU1lNQk9MX1JFRiAmJiBTWU1CT0xfUkVGX1RMU19NT0RF TCAoeCkpCi0rICAgIHsKLSsgICAgICBlbnVtIHRsc19tb2RlbCBtb2RlbCA9IFNZTUJPTF9SRUZf VExTX01PREVMICh4KTsKLSsgICAgICByZXQgPSByczYwMDBfbGVnaXRpbWl6ZV90bHNfYWRkcmVz cyAoeCwgbW9kZWwpOwotKyAgICB9Ci0rCi0rICBlbHNlIGlmIChHRVRfQ09ERSAoeCkgPT0gUExV UwotKwkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09IFJFRwotKwkgICAmJiBHRVRfQ09E RSAoWEVYUCAoeCwgMSkpID09IENPTlNUX0lOVAotKwkgICAmJiAoKHVuc2lnbmVkIEhPU1RfV0lE RV9JTlQpIChJTlRWQUwgKFhFWFAgKHgsIDEpKSArIDB4ODAwMCkKLSsJICAgICAgID49IDB4MTAw MDAgLSBleHRyYSkKLSsJICAgJiYgISgoVEFSR0VUX1BPV0VSUEM2NAotKwkJICYmIChtb2RlID09 IERJbW9kZSB8fCBtb2RlID09IFRJbW9kZSkKLSsJCSAmJiAoSU5UVkFMIChYRVhQICh4LCAxKSkg JiAzKSAhPSAwKQotKwkJfHwgKFRBUkdFVF9TUEUgJiYgU1BFX1ZFQ1RPUl9NT0RFIChtb2RlKSkK LSsJCXx8IChUQVJHRVRfQUxUSVZFQyAmJiBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSsJ CXx8IChUQVJHRVRfVlNYICYmIFZTWF9WRUNUT1JfTU9ERSAobW9kZSkpCi0rCQl8fCAoVEFSR0VU X0U1MDBfRE9VQkxFICYmIChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IFRGbW9kZQotKwkJCQkJ ICAgfHwgbW9kZSA9PSBESW1vZGUgfHwgbW9kZSA9PSBERG1vZGUKLSsJCQkJCSAgIHx8IG1vZGUg PT0gVERtb2RlKSkpKQotICAgICB7Ci0gICAgICAgSE9TVF9XSURFX0lOVCBoaWdoX2ludCwgbG93 X2ludDsKLSAgICAgICBydHggc3VtOwotQEAgLTM4NjAsNyArNDQ2Niw3IEBAIHJzNjAwMF9sZWdp dGltaXplX2FkZHJlc3MgKHJ0eCB4LCBydHggb2wKLSAgICAgICBoaWdoX2ludCA9IElOVFZBTCAo WEVYUCAoeCwgMSkpIC0gbG93X2ludDsKLSAgICAgICBzdW0gPSBmb3JjZV9vcGVyYW5kIChnZW5f cnR4X1BMVVMgKFBtb2RlLCBYRVhQICh4LCAwKSwKLSAJCQkJCSBHRU5fSU5UIChoaWdoX2ludCkp LCAwKTsKLS0gICAgICByZXR1cm4gcGx1c19jb25zdGFudCAoc3VtLCBsb3dfaW50KTsKLSsgICAg ICByZXQgPSBwbHVzX2NvbnN0YW50IChzdW0sIGxvd19pbnQpOwotICAgICB9Ci0gICBlbHNlIGlm IChHRVRfQ09ERSAoeCkgPT0gUExVUwotIAkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09 IFJFRwotQEAgLTM4NzYsMzIgKzQ0ODIsMjkgQEAgcnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVzcyAo cnR4IHgsIHJ0eCBvbAotIAkgICAmJiBtb2RlICE9IFRGbW9kZQotIAkgICAmJiBtb2RlICE9IFRE bW9kZSkKLSAgICAgewotLSAgICAgIHJldHVybiBnZW5fcnR4X1BMVVMgKFBtb2RlLCBYRVhQICh4 LCAwKSwKLS0JCQkgICBmb3JjZV9yZWcgKFBtb2RlLCBmb3JjZV9vcGVyYW5kIChYRVhQICh4LCAx KSwgMCkpKTsKLSsgICAgICByZXQgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBYRVhQICh4LCAwKSwK LSsJCQkgIGZvcmNlX3JlZyAoUG1vZGUsIGZvcmNlX29wZXJhbmQgKFhFWFAgKHgsIDEpLCAwKSkp OwotICAgICB9Ci0tICBlbHNlIGlmIChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSsgIGVs c2UgaWYgKFZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAobW9kZSkpCi0gICAgIHsKLS0gICAg ICBydHggcmVnOwotLQotICAgICAgIC8qIE1ha2Ugc3VyZSBib3RoIG9wZXJhbmRzIGFyZSByZWdp c3RlcnMuICAqLwotICAgICAgIGlmIChHRVRfQ09ERSAoeCkgPT0gUExVUykKLS0JcmV0dXJuIGdl bl9ydHhfUExVUyAoUG1vZGUsIGZvcmNlX3JlZyAoUG1vZGUsIFhFWFAgKHgsIDApKSwKLS0JCQkg ICAgIGZvcmNlX3JlZyAoUG1vZGUsIFhFWFAgKHgsIDEpKSk7Ci0tCi0tICAgICAgcmVnID0gZm9y Y2VfcmVnIChQbW9kZSwgeCk7Ci0tICAgICAgcmV0dXJuIHJlZzsKLSsJcmV0ID0gZ2VuX3J0eF9Q TFVTIChQbW9kZSwgZm9yY2VfcmVnIChQbW9kZSwgWEVYUCAoeCwgMCkpLAotKwkJCSAgICBmb3Jj ZV9yZWcgKFBtb2RlLCBYRVhQICh4LCAxKSkpOwotKyAgICAgIGVsc2UKLSsJcmV0ID0gZm9yY2Vf cmVnIChQbW9kZSwgeCk7Ci0gICAgIH0KLS0gIGVsc2UgaWYgKFNQRV9WRUNUT1JfTU9ERSAobW9k ZSkKLSsgIGVsc2UgaWYgKChUQVJHRVRfU1BFICYmIFNQRV9WRUNUT1JfTU9ERSAobW9kZSkpCi0g CSAgIHx8IChUQVJHRVRfRTUwMF9ET1VCTEUgJiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0g VEZtb2RlCi0gCQkJCSAgICAgIHx8IG1vZGUgPT0gRERtb2RlIHx8IG1vZGUgPT0gVERtb2RlCi0g CQkJCSAgICAgIHx8IG1vZGUgPT0gREltb2RlKSkpCi0gICAgIHsKLSAgICAgICBpZiAobW9kZSA9 PSBESW1vZGUpCi0tCXJldHVybiBOVUxMX1JUWDsKLS0gICAgICAvKiBXZSBhY2NlcHQgW3JlZyAr IHJlZ10gYW5kIFtyZWcgKyBPRkZTRVRdLiAgKi8KLSsJcmV0ID0gTlVMTF9SVFg7Ci0gCi0tICAg ICAgaWYgKEdFVF9DT0RFICh4KSA9PSBQTFVTKQotLSAgICAgICB7Ci0rICAgICAgLyogV2UgYWNj ZXB0IFtyZWcgKyByZWddIGFuZCBbcmVnICsgT0ZGU0VUXS4gICovCi0rICAgICAgZWxzZSBpZiAo R0VUX0NPREUgKHgpID09IFBMVVMpCi0rCXsKLSAgICAgICAgICBydHggb3AxID0gWEVYUCAoeCwg MCk7Ci0gICAgICAgICAgcnR4IG9wMiA9IFhFWFAgKHgsIDEpOwotICAgICAgICAgIHJ0eCB5Owot QEAgLTM5MjAsMTIgKzQ1MjMsMTIgQEAgcnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVzcyAocnR4IHgs IHJ0eCBvbAotICAgICAgICAgIHkgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBvcDEsIG9wMik7Ci0g Ci0gICAgICAgICAgaWYgKChHRVRfTU9ERV9TSVpFIChtb2RlKSA+IDggfHwgbW9kZSA9PSBERG1v ZGUpICYmIFJFR19QIChvcDIpKQotLSAgICAgICAgICAgcmV0dXJuIGZvcmNlX3JlZyAoUG1vZGUs IHkpOwotKyAgICAgICAgICAgcmV0ID0gZm9yY2VfcmVnIChQbW9kZSwgeSk7Ci0gICAgICAgICAg ZWxzZQotLSAgICAgICAgICAgcmV0dXJuIHk7Ci0rICAgICAgICAgICByZXQgPSB5OwotICAgICAg ICB9Ci0tCi0tICAgICAgcmV0dXJuIGZvcmNlX3JlZyAoUG1vZGUsIHgpOwotKyAgICAgIGVsc2UK LSsJcmV0ID0gZm9yY2VfcmVnIChQbW9kZSwgeCk7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKFRBUkdF VF9FTEYKLSAJICAgJiYgVEFSR0VUXzMyQklUCi1AQCAtMzk0MSw3ICs0NTQ0LDcgQEAgcnM2MDAw X2xlZ2l0aW1pemVfYWRkcmVzcyAocnR4IHgsIHJ0eCBvbAotICAgICB7Ci0gICAgICAgcnR4IHJl ZyA9IGdlbl9yZWdfcnR4IChQbW9kZSk7Ci0gICAgICAgZW1pdF9pbnNuIChnZW5fZWxmX2hpZ2gg KHJlZywgeCkpOwotLSAgICAgIHJldHVybiBnZW5fcnR4X0xPX1NVTSAoUG1vZGUsIHJlZywgeCk7 Ci0rICAgICAgcmV0ID0gZ2VuX3J0eF9MT19TVU0gKFBtb2RlLCByZWcsIHgpOwotICAgICB9Ci0g ICBlbHNlIGlmIChUQVJHRVRfTUFDSE8gJiYgVEFSR0VUXzMyQklUICYmIFRBUkdFVF9OT19UT0MK LSAJICAgJiYgISBmbGFnX3BpYwotQEAgLTM5NTksMTcgKzQ1NjIsMzUgQEAgcnM2MDAwX2xlZ2l0 aW1pemVfYWRkcmVzcyAocnR4IHgsIHJ0eCBvbAotICAgICB7Ci0gICAgICAgcnR4IHJlZyA9IGdl bl9yZWdfcnR4IChQbW9kZSk7Ci0gICAgICAgZW1pdF9pbnNuIChnZW5fbWFjaG9faGlnaCAocmVn LCB4KSk7Ci0tICAgICAgcmV0dXJuIGdlbl9ydHhfTE9fU1VNIChQbW9kZSwgcmVnLCB4KTsKLSsg ICAgICByZXQgPSBnZW5fcnR4X0xPX1NVTSAoUG1vZGUsIHJlZywgeCk7Ci0gICAgIH0KLSAgIGVs c2UgaWYgKFRBUkdFVF9UT0MKLSAJICAgJiYgR0VUX0NPREUgKHgpID09IFNZTUJPTF9SRUYKLSAJ ICAgJiYgY29uc3RhbnRfcG9vbF9leHByX3AgKHgpCi0gCSAgICYmIEFTTV9PVVRQVVRfU1BFQ0lB TF9QT09MX0VOVFJZX1AgKGdldF9wb29sX2NvbnN0YW50ICh4KSwgUG1vZGUpKQotICAgICB7Ci0t ICAgICAgcmV0dXJuIGNyZWF0ZV9UT0NfcmVmZXJlbmNlICh4KTsKLSsgICAgICByZXQgPSBjcmVh dGVfVE9DX3JlZmVyZW5jZSAoeCk7Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgcmV0dXJuIE5VTExf UlRYOwotKyAgICByZXQgPSBOVUxMX1JUWDsKLSsKLSsgIGlmIChUQVJHRVRfREVCVUdfQUREUikK LSsgICAgewotKyAgICAgIGZwcmludGYgKHN0ZGVyciwKLSsJICAgICAgICJcbnJzNjAwMF9sZWdp dGltaXplX2FkZHJlc3M6IG1vZGUgJXMsIG9yaWdpbmFsIGFkZHI6XG4iLAotKwkgICAgICAgR0VU X01PREVfTkFNRSAobW9kZSkpOwotKyAgICAgIGRlYnVnX3J0eCAob3JpZ194KTsKLSsgICAgICBp ZiAocmV0KQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAiTmV3IGFkZHI6XG4iKTsKLSsJICBk ZWJ1Z19ydHggKHJldCk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWZwcmludGYgKHN0ZGVyciwgIk5V TEwgcmV0dXJuZWRcbiIpOwotKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7Ci0rICAgIH0K LSsKLSsgIHJldHVybiByZXQ7Ci0gfQotIAotIC8qIFRoaXMgaXMgY2FsbGVkIGZyb20gZHdhcmYy b3V0LmMgdmlhIFRBUkdFVF9BU01fT1VUUFVUX0RXQVJGX0RUUFJFTC4KLUBAIC00MjU4LDYgKzQ4 NzksOSBAQCByczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyAocnR4IHgsCi0gCQkJCSAg aW50IG9wbnVtLCBpbnQgdHlwZSwKLSAJCQkJICBpbnQgaW5kX2xldmVscyBBVFRSSUJVVEVfVU5V U0VELCBpbnQgKndpbikKLSB7Ci0rICBydHggb3JpZ194ID0geDsKLSsgIHJ0eCByZXQgPSBOVUxM X1JUWDsKLSsKLSAgIC8qIFdlIG11c3QgcmVjb2duaXplIG91dHB1dCB0aGF0IHdlIGhhdmUgYWxy ZWFkeSBnZW5lcmF0ZWQgb3Vyc2VsdmVzLiAgKi8KLSAgIGlmIChHRVRfQ09ERSAoeCkgPT0gUExV UwotICAgICAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUExVUwotQEAgLTQyNjksMTcg KzQ4OTMsMTcgQEAgcnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MgKHJ0eCB4LAotIAkJ ICAgQkFTRV9SRUdfQ0xBU1MsIEdFVF9NT0RFICh4KSwgVk9JRG1vZGUsIDAsIDAsCi0gCQkgICBv cG51bSwgKGVudW0gcmVsb2FkX3R5cGUpdHlwZSk7Ci0gICAgICAgKndpbiA9IDE7Ci0tICAgICAg cmV0dXJuIHg7Ci0rICAgICAgcmV0ID0geDsKLSAgICAgfQotIAotICNpZiBUQVJHRVRfTUFDSE8K LS0gIGlmIChERUZBVUxUX0FCSSA9PSBBQklfREFSV0lOICYmIGZsYWdfcGljCi0tICAgICAgJiYg R0VUX0NPREUgKHgpID09IExPX1NVTQotLSAgICAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkg PT0gUExVUwotLSAgICAgICYmIFhFWFAgKFhFWFAgKHgsIDApLCAwKSA9PSBwaWNfb2Zmc2V0X3Rh YmxlX3J0eAotLSAgICAgICYmIEdFVF9DT0RFIChYRVhQIChYRVhQICh4LCAwKSwgMSkpID09IEhJ R0gKLS0gICAgICAmJiBYRVhQIChYRVhQIChYRVhQICh4LCAwKSwgMSksIDApID09IFhFWFAgKHgs IDEpCi0tICAgICAgJiYgbWFjaG9waWNfb3BlcmFuZF9wIChYRVhQICh4LCAxKSkpCi0rICBlbHNl IGlmIChERUZBVUxUX0FCSSA9PSBBQklfREFSV0lOICYmIGZsYWdfcGljCi0rCSAgICYmIEdFVF9D T0RFICh4KSA9PSBMT19TVU0KLSsJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBQTFVT Ci0rCSAgICYmIFhFWFAgKFhFWFAgKHgsIDApLCAwKSA9PSBwaWNfb2Zmc2V0X3RhYmxlX3J0eAot KwkgICAmJiBHRVRfQ09ERSAoWEVYUCAoWEVYUCAoeCwgMCksIDEpKSA9PSBISUdICi0rCSAgICYm IFhFWFAgKFhFWFAgKFhFWFAgKHgsIDApLCAxKSwgMCkgPT0gWEVYUCAoeCwgMSkKLSsJICAgJiYg bWFjaG9waWNfb3BlcmFuZF9wIChYRVhQICh4LCAxKSkpCi0gICAgIHsKLSAgICAgICAvKiBSZXN1 bHQgb2YgcHJldmlvdXMgaW52b2NhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIG9uIERhcndpbgotIAkg ZmxvYXRpbmcgcG9pbnQgY29uc3RhbnQuICAqLwotQEAgLTQyODcsNDAgKzQ5MTEsNDAgQEAgcnM2 MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MgKHJ0eCB4LAotIAkJICAgQkFTRV9SRUdfQ0xB U1MsIFBtb2RlLCBWT0lEbW9kZSwgMCwgMCwKLSAJCSAgIG9wbnVtLCAoZW51bSByZWxvYWRfdHlw ZSl0eXBlKTsKLSAgICAgICAqd2luID0gMTsKLS0gICAgICByZXR1cm4geDsKLSsgICAgICByZXQg PSB4OwotICAgICB9Ci0gI2VuZGlmCi0gCi0gICAvKiBGb3JjZSBsZC9zdGQgbm9uLXdvcmQgYWxp Z25lZCBvZmZzZXQgaW50byBiYXNlIHJlZ2lzdGVyIGJ5IHdyYXBwaW5nCi0gICAgICBpbiBvZmZz ZXQgMC4gICovCi0tICBpZiAoR0VUX0NPREUgKHgpID09IFBMVVMKLS0gICAgICAmJiBHRVRfQ09E RSAoWEVYUCAoeCwgMCkpID09IFJFRwotLSAgICAgICYmIFJFR05PIChYRVhQICh4LCAwKSkgPCAz MgotLSAgICAgICYmIFJFR19NT0RFX09LX0ZPUl9CQVNFX1AgKFhFWFAgKHgsIDApLCBtb2RlKQot LSAgICAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAxKSkgPT0gQ09OU1RfSU5UCi0tICAgICAgJiYg KElOVFZBTCAoWEVYUCAoeCwgMSkpICYgMykgIT0gMAotLSAgICAgICYmICFBTFRJVkVDX1ZFQ1RP Ul9NT0RFIChtb2RlKQotLSAgICAgICYmIEdFVF9NT0RFX1NJWkUgKG1vZGUpID49IFVOSVRTX1BF Ul9XT1JECi0tICAgICAgJiYgVEFSR0VUX1BPV0VSUEM2NCkKLSsgIGVsc2UgaWYgKEdFVF9DT0RF ICh4KSA9PSBQTFVTCi0rCSAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUkVHCi0rCSAg ICYmIFJFR05PIChYRVhQICh4LCAwKSkgPCAzMgotKwkgICAmJiBSRUdfTU9ERV9PS19GT1JfQkFT RV9QIChYRVhQICh4LCAwKSwgbW9kZSkKLSsJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9 PSBDT05TVF9JTlQKLSsJICAgJiYgKElOVFZBTCAoWEVYUCAoeCwgMSkpICYgMykgIT0gMAotKwkg ICAmJiBWRUNUT1JfTUVNX05PTkVfUCAobW9kZSkKLSsJICAgJiYgR0VUX01PREVfU0laRSAobW9k ZSkgPj0gVU5JVFNfUEVSX1dPUkQKLSsJICAgJiYgVEFSR0VUX1BPV0VSUEM2NCkKLSAgICAgewot ICAgICAgIHggPSBnZW5fcnR4X1BMVVMgKEdFVF9NT0RFICh4KSwgeCwgR0VOX0lOVCAoMCkpOwot ICAgICAgIHB1c2hfcmVsb2FkIChYRVhQICh4LCAwKSwgTlVMTF9SVFgsICZYRVhQICh4LCAwKSwg TlVMTCwKLSAJCSAgIEJBU0VfUkVHX0NMQVNTLCBHRVRfTU9ERSAoeCksIFZPSURtb2RlLCAwLCAw LAotIAkJICAgb3BudW0sIChlbnVtIHJlbG9hZF90eXBlKSB0eXBlKTsKLSAgICAgICAqd2luID0g MTsKLS0gICAgICByZXR1cm4geDsKLSsgICAgICByZXQgPSB4OwotICAgICB9Ci0gCi0tICBpZiAo R0VUX0NPREUgKHgpID09IFBMVVMKLS0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09 IFJFRwotLSAgICAgICYmIFJFR05PIChYRVhQICh4LCAwKSkgPCBGSVJTVF9QU0VVRE9fUkVHSVNU RVIKLS0gICAgICAmJiBSRUdfTU9ERV9PS19GT1JfQkFTRV9QIChYRVhQICh4LCAwKSwgbW9kZSkK LS0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkpID09IENPTlNUX0lOVAotLSAgICAgICYm ICFTUEVfVkVDVE9SX01PREUgKG1vZGUpCi0tICAgICAgJiYgIShUQVJHRVRfRTUwMF9ET1VCTEUg JiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gVEZtb2RlCi0tCQkJCSAgfHwgbW9kZSA9PSBE RG1vZGUgfHwgbW9kZSA9PSBURG1vZGUKLS0JCQkJICB8fCBtb2RlID09IERJbW9kZSkpCi0tICAg ICAgJiYgIUFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpKQotKyAgZWxzZSBpZiAoR0VUX0NPREUg KHgpID09IFBMVVMKLSsJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBSRUcKLSsJICAg JiYgUkVHTk8gKFhFWFAgKHgsIDApKSA8IEZJUlNUX1BTRVVET19SRUdJU1RFUgotKwkgICAmJiBS RUdfTU9ERV9PS19GT1JfQkFTRV9QIChYRVhQICh4LCAwKSwgbW9kZSkKLSsJICAgJiYgR0VUX0NP REUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9JTlQKLSsJICAgJiYgIVNQRV9WRUNUT1JfTU9ERSAo bW9kZSkKLSsJICAgJiYgIShUQVJHRVRfRTUwMF9ET1VCTEUgJiYgKG1vZGUgPT0gREZtb2RlIHx8 IG1vZGUgPT0gVEZtb2RlCi0rCQkJCSAgICAgICB8fCBtb2RlID09IEREbW9kZSB8fCBtb2RlID09 IFREbW9kZQotKwkJCQkgICAgICAgfHwgbW9kZSA9PSBESW1vZGUpKQotKwkgICAmJiBWRUNUT1Jf TUVNX05PTkVfUCAobW9kZSkpCi0gICAgIHsKLSAgICAgICBIT1NUX1dJREVfSU5UIHZhbCA9IElO VFZBTCAoWEVYUCAoeCwgMSkpOwotICAgICAgIEhPU1RfV0lERV9JTlQgbG93ID0gKCh2YWwgJiAw eGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKLUBAIC00MzMxLDQyICs0OTU1LDQ1IEBAIHJzNjAw MF9sZWdpdGltaXplX3JlbG9hZF9hZGRyZXNzIChydHggeCwKLSAgICAgICBpZiAoaGlnaCArIGxv dyAhPSB2YWwpCi0gCXsKLSAJICAqd2luID0gMDsKLS0JICByZXR1cm4geDsKLSsJICByZXQgPSB4 OwotIAl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyogUmVsb2FkIHRoZSBoaWdoIHBhcnQgaW50 byBhIGJhc2UgcmVnOyBsZWF2ZSB0aGUgbG93IHBhcnQKLSsJICAgICBpbiB0aGUgbWVtIGRpcmVj dGx5LiAgKi8KLSAKLS0gICAgICAvKiBSZWxvYWQgdGhlIGhpZ2ggcGFydCBpbnRvIGEgYmFzZSBy ZWc7IGxlYXZlIHRoZSBsb3cgcGFydAotLQkgaW4gdGhlIG1lbSBkaXJlY3RseS4gICovCi0tCi0t ICAgICAgeCA9IGdlbl9ydHhfUExVUyAoR0VUX01PREUgKHgpLAotLQkJCWdlbl9ydHhfUExVUyAo R0VUX01PREUgKHgpLCBYRVhQICh4LCAwKSwKLS0JCQkJICAgICAgR0VOX0lOVCAoaGlnaCkpLAot LQkJCUdFTl9JTlQgKGxvdykpOwotKwkgIHggPSBnZW5fcnR4X1BMVVMgKEdFVF9NT0RFICh4KSwK LSsJCQkgICAgZ2VuX3J0eF9QTFVTIChHRVRfTU9ERSAoeCksIFhFWFAgKHgsIDApLAotKwkJCQkJ ICBHRU5fSU5UIChoaWdoKSksCi0rCQkJICAgIEdFTl9JTlQgKGxvdykpOwotIAotLSAgICAgIHB1 c2hfcmVsb2FkIChYRVhQICh4LCAwKSwgTlVMTF9SVFgsICZYRVhQICh4LCAwKSwgTlVMTCwKLS0J CSAgIEJBU0VfUkVHX0NMQVNTLCBHRVRfTU9ERSAoeCksIFZPSURtb2RlLCAwLCAwLAotLQkJICAg b3BudW0sIChlbnVtIHJlbG9hZF90eXBlKXR5cGUpOwotLSAgICAgICp3aW4gPSAxOwotLSAgICAg IHJldHVybiB4OwotKwkgIHB1c2hfcmVsb2FkIChYRVhQICh4LCAwKSwgTlVMTF9SVFgsICZYRVhQ ICh4LCAwKSwgTlVMTCwKLSsJCSAgICAgICBCQVNFX1JFR19DTEFTUywgR0VUX01PREUgKHgpLCBW T0lEbW9kZSwgMCwgMCwKLSsJCSAgICAgICBvcG51bSwgKGVudW0gcmVsb2FkX3R5cGUpdHlwZSk7 Ci0rCSAgKndpbiA9IDE7Ci0rCSAgcmV0dXJuIHg7Ci0rCX0KLSAgICAgfQotIAotLSAgaWYgKEdF VF9DT0RFICh4KSA9PSBTWU1CT0xfUkVGCi0tICAgICAgJiYgIUFMVElWRUNfVkVDVE9SX01PREUg KG1vZGUpCi0tICAgICAgJiYgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkKLSsgIGVsc2UgaWYgKEdF VF9DT0RFICh4KSA9PSBTWU1CT0xfUkVGCi0rCSAgICYmIFZFQ1RPUl9NRU1fTk9ORV9QIChtb2Rl KQotKwkgICAmJiAoIVRBUkdFVF9TUEUgfHwgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkpCi0gI2lm IFRBUkdFVF9NQUNITwotLSAgICAgICYmIERFRkFVTFRfQUJJID09IEFCSV9EQVJXSU4KLS0gICAg ICAmJiAoZmxhZ19waWMgfHwgTUFDSE9fRFlOQU1JQ19OT19QSUNfUCkKLSsJICAgJiYgREVGQVVM VF9BQkkgPT0gQUJJX0RBUldJTgotKwkgICAmJiAoZmxhZ19waWMgfHwgTUFDSE9fRFlOQU1JQ19O T19QSUNfUCkKLSAjZWxzZQotLSAgICAgICYmIERFRkFVTFRfQUJJID09IEFCSV9WNAotLSAgICAg ICYmICFmbGFnX3BpYwotKwkgICAmJiBERUZBVUxUX0FCSSA9PSBBQklfVjQKLSsJICAgJiYgIWZs YWdfcGljCi0gI2VuZGlmCi0tICAgICAgLyogRG9uJ3QgZG8gdGhpcyBmb3IgVEZtb2RlIG9yIFRE bW9kZSwgc2luY2UgdGhlIHJlc3VsdCBpc24ndCBvZmZzZXR0YWJsZS4KLS0JIFRoZSBzYW1lIGdv ZXMgZm9yIERJbW9kZSB3aXRob3V0IDY0LWJpdCBncHJzIGFuZCBERm1vZGUgYW5kIEREbW9kZQot LQkgd2l0aG91dCBmcHJzLiAgKi8KLS0gICAgICAmJiBtb2RlICE9IFRGbW9kZQotLSAgICAgICYm IG1vZGUgIT0gVERtb2RlCi0tICAgICAgJiYgKG1vZGUgIT0gREltb2RlIHx8IFRBUkdFVF9QT1dF UlBDNjQpCi0tICAgICAgJiYgKChtb2RlICE9IERGbW9kZSAmJiBtb2RlICE9IEREbW9kZSkgfHwg VEFSR0VUX1BPV0VSUEM2NAotLQkgIHx8IChUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBS UyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUKSkpCi0rCSAgIC8qIERvbid0IGRvIHRoaXMgZm9yIFRG bW9kZSBvciBURG1vZGUsIHNpbmNlIHRoZSByZXN1bHQgaXNuJ3QKLSsJICAgICAgb2Zmc2V0dGFi bGUuICBUaGUgc2FtZSBnb2VzIGZvciBESW1vZGUgd2l0aG91dCA2NC1iaXQgZ3BycyBhbmQKLSsJ ICAgICAgREZtb2RlIGFuZCBERG1vZGUgd2l0aG91dCBmcHJzLiAgKi8KLSsJICAgJiYgVkVDVE9S X01FTV9OT05FX1AgKG1vZGUpCi0rCSAgICYmIG1vZGUgIT0gVEZtb2RlCi0rCSAgICYmIG1vZGUg IT0gVERtb2RlCi0rCSAgICYmIChtb2RlICE9IERJbW9kZSB8fCBUQVJHRVRfUE9XRVJQQzY0KQot KwkgICAmJiAoKG1vZGUgIT0gREZtb2RlICYmIG1vZGUgIT0gRERtb2RlKSB8fCBUQVJHRVRfUE9X RVJQQzY0Ci0rCSAgICAgICB8fCAoVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYg VEFSR0VUX0RPVUJMRV9GTE9BVCkpKQotICAgICB7Ci0gI2lmIFRBUkdFVF9NQUNITwotICAgICAg IGlmIChmbGFnX3BpYykKLUBAIC00Mzg1LDM3ICs1MDEyLDYzIEBAIHJzNjAwMF9sZWdpdGltaXpl X3JlbG9hZF9hZGRyZXNzIChydHggeCwKLSAJCSAgIEJBU0VfUkVHX0NMQVNTLCBQbW9kZSwgVk9J RG1vZGUsIDAsIDAsCi0gCQkgICBvcG51bSwgKGVudW0gcmVsb2FkX3R5cGUpdHlwZSk7Ci0gICAg ICAgKndpbiA9IDE7Ci0tICAgICAgcmV0dXJuIHg7Ci0rICAgICAgcmV0ID0geDsKLSAgICAgfQot IAotICAgLyogUmVsb2FkIGFuIG9mZnNldCBhZGRyZXNzIHdyYXBwZWQgYnkgYW4gQU5EIHRoYXQg cmVwcmVzZW50cyB0aGUKLSAgICAgIG1hc2tpbmcgb2YgdGhlIGxvd2VyIGJpdHMuICBTdHJpcCB0 aGUgb3V0ZXIgQU5EIGFuZCBsZXQgcmVsb2FkCi0gICAgICBjb252ZXJ0IHRoZSBvZmZzZXQgYWRk cmVzcyBpbnRvIGFuIGluZGlyZWN0IGFkZHJlc3MuICAqLwotLSAgaWYgKFRBUkdFVF9BTFRJVkVD Ci0tICAgICAgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkKLS0gICAgICAmJiBHRVRfQ09E RSAoeCkgPT0gQU5ECi0tICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBQTFVTCi0t ICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKFhFWFAgKHgsIDApLCAwKSkgPT0gUkVHCi0tICAgICAg JiYgR0VUX0NPREUgKFhFWFAgKFhFWFAgKHgsIDApLCAxKSkgPT0gQ09OU1RfSU5UCi0tICAgICAg JiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9JTlQKLS0gICAgICAmJiBJTlRWQUwg KFhFWFAgKHgsIDEpKSA9PSAtMTYpCi0rICBlbHNlIGlmIChWRUNUT1JfTUVNX0FMVElWRUNfT1Jf VlNYX1AgKG1vZGUpCi0rCSAgICYmIEdFVF9DT0RFICh4KSA9PSBBTkQKLSsJICAgJiYgR0VUX0NP REUgKFhFWFAgKHgsIDApKSA9PSBQTFVTCi0rCSAgICYmIEdFVF9DT0RFIChYRVhQIChYRVhQICh4 LCAwKSwgMCkpID09IFJFRwotKwkgICAmJiBHRVRfQ09ERSAoWEVYUCAoWEVYUCAoeCwgMCksIDEp KSA9PSBDT05TVF9JTlQKLSsJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9J TlQKLSsJICAgJiYgSU5UVkFMIChYRVhQICh4LCAxKSkgPT0gLTE2KQotICAgICB7Ci0gICAgICAg eCA9IFhFWFAgKHgsIDApOwotICAgICAgICp3aW4gPSAxOwotLSAgICAgIHJldHVybiB4OwotKyAg ICAgIHJldCA9IHg7Ci0gICAgIH0KLSAKLS0gIGlmIChUQVJHRVRfVE9DCi0tICAgICAgJiYgR0VU X0NPREUgKHgpID09IFNZTUJPTF9SRUYKLS0gICAgICAmJiBjb25zdGFudF9wb29sX2V4cHJfcCAo eCkKLS0gICAgICAmJiBBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWV9QIChnZXRfcG9vbF9j b25zdGFudCAoeCksIG1vZGUpKQotKyAgZWxzZSBpZiAoVEFSR0VUX1RPQwotKwkgICAmJiBHRVRf Q09ERSAoeCkgPT0gU1lNQk9MX1JFRgotKwkgICAmJiBjb25zdGFudF9wb29sX2V4cHJfcCAoeCkK LSsJICAgJiYgQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUCAoZ2V0X3Bvb2xfY29uc3Rh bnQgKHgpLCBtb2RlKSkKLSAgICAgewotICAgICAgIHggPSBjcmVhdGVfVE9DX3JlZmVyZW5jZSAo eCk7Ci0gICAgICAgKndpbiA9IDE7Ci0tICAgICAgcmV0dXJuIHg7Ci0rICAgICAgcmV0ID0geDsK LSsgICAgfQotKwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgKndpbiA9IDA7Ci0rICAgICAgcmV0 ID0geDsKLSsgICAgfQotKwotKyAgaWYgKFRBUkdFVF9ERUJVR19BRERSKQotKyAgICB7Ci0rICAg ICAgZnByaW50ZiAoc3RkZXJyLAotKwkgICAgICAgIlxucnM2MDAwX2xlZ2l0aW1pemVfcmVsb2Fk X2FkZHJlc3M6IG1vZGUgPSAlcywgb3BudW0gPSAlZCwgIgotKwkgICAgICAgInR5cGUgPSAlZCwg aW5kX2xldmVscyA9ICVkLCB3aW4gPSAlZCwgb3JpZ2luYWwgYWRkcjpcbiIsCi0rCSAgICAgICBH RVRfTU9ERV9OQU1FIChtb2RlKSwgb3BudW0sIHR5cGUsIGluZF9sZXZlbHMsICp3aW4pOwotKyAg ICAgIGRlYnVnX3J0eCAob3JpZ194KTsKLSsKLSsgICAgICBpZiAob3JpZ194ID09IHJldCkKLSsJ ZnByaW50ZiAoc3RkZXJyLCAiU2FtZSBhZGRyZXNzIHJldHVybmVkXG4iKTsKLSsgICAgICBlbHNl IGlmICghcmV0KQotKwlmcHJpbnRmIChzdGRlcnIsICJOVUxMIHJldHVybmVkXG4iKTsKLSsgICAg ICBlbHNlCi0rCXsKLSsJICBmcHJpbnRmIChzdGRlcnIsICJOZXcgYWRkcmVzczpcbiIpOwotKwkg IGRlYnVnX3J0eCAocmV0KTsKLSsJfQotKwotKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7 Ci0gICAgIH0KLS0gICp3aW4gPSAwOwotLSAgcmV0dXJuIHg7Ci0rCi0rICByZXR1cm4gcmV0Owot IH0KLSAKLSAvKiBHT19JRl9MRUdJVElNQVRFX0FERFJFU1MgcmVjb2duaXplcyBhbiBSVEwgZXhw cmVzc2lvbgotQEAgLTQ0MzgsNzcgKzUwOTEsMTAxIEBAIHJzNjAwMF9sZWdpdGltaXplX3JlbG9h ZF9hZGRyZXNzIChydHggeCwKLSBpbnQKLSByczYwMDBfbGVnaXRpbWF0ZV9hZGRyZXNzIChlbnVt IG1hY2hpbmVfbW9kZSBtb2RlLCBydHggeCwgaW50IHJlZ19va19zdHJpY3QpCi0gewotKyAgaW50 IHJldDsKLSsgIHJ0eCBvcmlnX3ggPSB4OwotKwotICAgLyogSWYgdGhpcyBpcyBhbiB1bmFsaWdu ZWQgc3R2eC9sZHZ4IHR5cGUgYWRkcmVzcywgZGlzY2FyZCB0aGUgb3V0ZXIgQU5ELiAgKi8KLS0g IGlmIChUQVJHRVRfQUxUSVZFQwotLSAgICAgICYmIEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUp Ci0rICBpZiAoKFRBUkdFVF9BTFRJVkVDIHx8IFRBUkdFVF9WU1gpCi0rICAgICAgJiYgVkVDVE9S X01FTV9BTFRJVkVDX09SX1ZTWF9QIChtb2RlKQotICAgICAgICYmIEdFVF9DT0RFICh4KSA9PSBB TkQKLSAgICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkpID09IENPTlNUX0lOVAotICAgICAg ICYmIElOVFZBTCAoWEVYUCAoeCwgMSkpID09IC0xNikKLSAgICAgeCA9IFhFWFAgKHgsIDApOwot IAotICAgaWYgKFJTNjAwMF9TWU1CT0xfUkVGX1RMU19QICh4KSkKLS0gICAgcmV0dXJuIDA7Ci0t ICBpZiAobGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKHgsIHJlZ19va19zdHJpY3QpKQot LSAgICByZXR1cm4gMTsKLS0gIGlmICgoR0VUX0NPREUgKHgpID09IFBSRV9JTkMgfHwgR0VUX0NP REUgKHgpID09IFBSRV9ERUMpCi0tICAgICAgJiYgIUFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUp Ci0tICAgICAgJiYgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkKLS0gICAgICAmJiBtb2RlICE9IFRG bW9kZQotLSAgICAgICYmIG1vZGUgIT0gVERtb2RlCi0tICAgICAgLyogUmVzdHJpY3QgYWRkcmVz c2luZyBmb3IgREkgYmVjYXVzZSBvZiBvdXIgU1VCUkVHIGhhY2tlcnkuICAqLwotLSAgICAgICYm ICEoVEFSR0VUX0U1MDBfRE9VQkxFCi0tCSAgICYmIChtb2RlID09IERGbW9kZSB8fCBtb2RlID09 IEREbW9kZSB8fCBtb2RlID09IERJbW9kZSkpCi0tICAgICAgJiYgVEFSR0VUX1VQREFURQotLSAg ICAgICYmIGxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wIChYRVhQICh4LCAwKSwgcmVnX29r X3N0cmljdCkpCi0tICAgIHJldHVybiAxOwotLSAgaWYgKGxlZ2l0aW1hdGVfc21hbGxfZGF0YV9w IChtb2RlLCB4KSkKLS0gICAgcmV0dXJuIDE7Ci0tICBpZiAobGVnaXRpbWF0ZV9jb25zdGFudF9w b29sX2FkZHJlc3NfcCAoeCkpCi0tICAgIHJldHVybiAxOwotKyAgICByZXQgPSAwOwotKyAgZWxz ZSBpZiAobGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKHgsIHJlZ19va19zdHJpY3QpKQot KyAgICByZXQgPSAxOwotKyAgZWxzZSBpZiAoKEdFVF9DT0RFICh4KSA9PSBQUkVfSU5DIHx8IEdF VF9DT0RFICh4KSA9PSBQUkVfREVDKQotKwkgICAmJiAhVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZT WF9QIChtb2RlKQotKwkgICAmJiAoVEFSR0VUX1NQRSAmJiAhU1BFX1ZFQ1RPUl9NT0RFIChtb2Rl KSkKLSsJICAgJiYgbW9kZSAhPSBURm1vZGUKLSsJICAgJiYgbW9kZSAhPSBURG1vZGUKLSsJICAg LyogUmVzdHJpY3QgYWRkcmVzc2luZyBmb3IgREkgYmVjYXVzZSBvZiBvdXIgU1VCUkVHIGhhY2tl cnkuICAqLwotKwkgICAmJiAhKFRBUkdFVF9FNTAwX0RPVUJMRQotKwkJJiYgKG1vZGUgPT0gREZt b2RlIHx8IG1vZGUgPT0gRERtb2RlIHx8IG1vZGUgPT0gREltb2RlKSkKLSsJICAgJiYgVEFSR0VU X1VQREFURQotKwkgICAmJiBsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3NfcCAoWEVYUCAoeCwg MCksIHJlZ19va19zdHJpY3QpKQotKyAgICByZXQgPSAxOwotKyAgZWxzZSBpZiAobGVnaXRpbWF0 ZV9zbWFsbF9kYXRhX3AgKG1vZGUsIHgpKQotKyAgICByZXQgPSAxOwotKyAgZWxzZSBpZiAobGVn aXRpbWF0ZV9jb25zdGFudF9wb29sX2FkZHJlc3NfcCAoeCkpCi0rICAgIHJldCA9IDE7Ci0gICAv KiBJZiBub3QgUkVHX09LX1NUUklDVCAoYmVmb3JlIHJlbG9hZCkgbGV0IHBhc3MgYW55IHN0YWNr IG9mZnNldC4gICovCi0tICBpZiAoISByZWdfb2tfc3RyaWN0Ci0tICAgICAgJiYgR0VUX0NPREUg KHgpID09IFBMVVMKLS0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09IFJFRwotLSAg ICAgICYmIChYRVhQICh4LCAwKSA9PSB2aXJ0dWFsX3N0YWNrX3ZhcnNfcnR4Ci0tCSAgfHwgWEVY UCAoeCwgMCkgPT0gYXJnX3BvaW50ZXJfcnR4KQotLSAgICAgICYmIEdFVF9DT0RFIChYRVhQICh4 LCAxKSkgPT0gQ09OU1RfSU5UKQotLSAgICByZXR1cm4gMTsKLS0gIGlmIChyczYwMDBfbGVnaXRp bWF0ZV9vZmZzZXRfYWRkcmVzc19wIChtb2RlLCB4LCByZWdfb2tfc3RyaWN0KSkKLS0gICAgcmV0 dXJuIDE7Ci0tICBpZiAobW9kZSAhPSBUSW1vZGUKLS0gICAgICAmJiBtb2RlICE9IFRGbW9kZQot LSAgICAgICYmIG1vZGUgIT0gVERtb2RlCi0tICAgICAgJiYgKChUQVJHRVRfSEFSRF9GTE9BVCAm JiBUQVJHRVRfRlBSUykKLS0JICB8fCBUQVJHRVRfUE9XRVJQQzY0Ci0tCSAgfHwgKG1vZGUgIT0g REZtb2RlICYmIG1vZGUgIT0gRERtb2RlKQotLQkgIHx8IChUQVJHRVRfRTUwMF9ET1VCTEUgJiYg bW9kZSAhPSBERG1vZGUpKQotLSAgICAgICYmIChUQVJHRVRfUE9XRVJQQzY0IHx8IG1vZGUgIT0g REltb2RlKQotLSAgICAgICYmICFhdm9pZGluZ19pbmRleGVkX2FkZHJlc3NfcCAobW9kZSkKLS0g ICAgICAmJiBsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wICh4LCByZWdfb2tfc3RyaWN0KSkK LS0gICAgcmV0dXJuIDE7Ci0tICBpZiAoR0VUX0NPREUgKHgpID09IFBSRV9NT0RJRlkKLS0gICAg ICAmJiBtb2RlICE9IFRJbW9kZQotLSAgICAgICYmIG1vZGUgIT0gVEZtb2RlCi0tICAgICAgJiYg bW9kZSAhPSBURG1vZGUKLS0gICAgICAmJiAoKFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9G UFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQpCi0tCSAgfHwgVEFSR0VUX1BPV0VSUEM2NAotLQkg IHx8ICgobW9kZSAhPSBERm1vZGUgJiYgbW9kZSAhPSBERG1vZGUpIHx8IFRBUkdFVF9FNTAwX0RP VUJMRSkpCi0tICAgICAgJiYgKFRBUkdFVF9QT1dFUlBDNjQgfHwgbW9kZSAhPSBESW1vZGUpCi0t ICAgICAgJiYgIUFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpCi0tICAgICAgJiYgIVNQRV9WRUNU T1JfTU9ERSAobW9kZSkKLS0gICAgICAvKiBSZXN0cmljdCBhZGRyZXNzaW5nIGZvciBESSBiZWNh dXNlIG9mIG91ciBTVUJSRUcgaGFja2VyeS4gICovCi0tICAgICAgJiYgIShUQVJHRVRfRTUwMF9E T1VCTEUKLS0JICAgJiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gRERtb2RlIHx8IG1vZGUg PT0gREltb2RlKSkKLS0gICAgICAmJiBUQVJHRVRfVVBEQVRFCi0tICAgICAgJiYgbGVnaXRpbWF0 ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKFhFWFAgKHgsIDApLCByZWdfb2tfc3RyaWN0KQotLSAgICAg ICYmIChyczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChtb2RlLCBYRVhQICh4LCAx KSwgcmVnX29rX3N0cmljdCkKLS0JICB8fCAoIWF2b2lkaW5nX2luZGV4ZWRfYWRkcmVzc19wICht b2RlKQotLQkgICAgICAmJiBsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wIChYRVhQICh4LCAx KSwgcmVnX29rX3N0cmljdCkpKQotLSAgICAgICYmIHJ0eF9lcXVhbF9wIChYRVhQIChYRVhQICh4 LCAxKSwgMCksIFhFWFAgKHgsIDApKSkKLS0gICAgcmV0dXJuIDE7Ci0tICBpZiAobGVnaXRpbWF0 ZV9sb19zdW1fYWRkcmVzc19wIChtb2RlLCB4LCByZWdfb2tfc3RyaWN0KSkKLS0gICAgcmV0dXJu IDE7Ci0tICByZXR1cm4gMDsKLSsgIGVsc2UgaWYgKCEgcmVnX29rX3N0cmljdAotKwkgICAmJiBH RVRfQ09ERSAoeCkgPT0gUExVUwotKwkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09IFJF RwotKwkgICAmJiAoWEVYUCAoeCwgMCkgPT0gdmlydHVhbF9zdGFja192YXJzX3J0eAotKwkgICAg ICAgfHwgWEVYUCAoeCwgMCkgPT0gYXJnX3BvaW50ZXJfcnR4KQotKwkgICAmJiBHRVRfQ09ERSAo WEVYUCAoeCwgMSkpID09IENPTlNUX0lOVCkKLSsgICAgcmV0ID0gMTsKLSsgIGVsc2UgaWYgKHJz NjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AgKG1vZGUsIHgsIHJlZ19va19zdHJpY3Qp KQotKyAgICByZXQgPSAxOwotKyAgZWxzZSBpZiAobW9kZSAhPSBUSW1vZGUKLSsJICAgJiYgbW9k ZSAhPSBURm1vZGUKLSsJICAgJiYgbW9kZSAhPSBURG1vZGUKLSsJICAgJiYgKChUQVJHRVRfSEFS RF9GTE9BVCAmJiBUQVJHRVRfRlBSUykKLSsJICAgICAgIHx8IFRBUkdFVF9QT1dFUlBDNjQKLSsJ ICAgICAgIHx8IChtb2RlICE9IERGbW9kZSAmJiBtb2RlICE9IEREbW9kZSkKLSsJICAgICAgIHx8 IChUQVJHRVRfRTUwMF9ET1VCTEUgJiYgbW9kZSAhPSBERG1vZGUpKQotKwkgICAmJiAoVEFSR0VU X1BPV0VSUEM2NCB8fCBtb2RlICE9IERJbW9kZSkKLSsJICAgJiYgIWF2b2lkaW5nX2luZGV4ZWRf YWRkcmVzc19wIChtb2RlKQotKwkgICAmJiBsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wICh4 LCByZWdfb2tfc3RyaWN0KSkKLSsgICAgcmV0ID0gMTsKLSsgIGVsc2UgaWYgKEdFVF9DT0RFICh4 KSA9PSBQUkVfTU9ESUZZCi0rCSAgICYmIFZFQ1RPUl9NRU1fVlNYX1AgKG1vZGUpCi0rCSAgICYm IFRBUkdFVF9VUERBVEUKLSsJICAgJiYgbGVnaXRpbWF0ZV9pbmRleGVkX2FkZHJlc3NfcCAoWEVY UCAoeCwgMSksIHJlZ19va19zdHJpY3QpCi0rCSAgICYmIHJ0eF9lcXVhbF9wIChYRVhQIChYRVhQ ICh4LCAxKSwgMCksIFhFWFAgKHgsIDApKSkKLSsgICAgcmV0ID0gMTsKLSsgIGVsc2UgaWYgKEdF VF9DT0RFICh4KSA9PSBQUkVfTU9ESUZZCi0rCSAgICYmIG1vZGUgIT0gVEltb2RlCi0rCSAgICYm IG1vZGUgIT0gVEZtb2RlCi0rCSAgICYmIG1vZGUgIT0gVERtb2RlCi0rCSAgICYmICgoVEFSR0VU X0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCkKLSsJICAg ICAgIHx8IFRBUkdFVF9QT1dFUlBDNjQKLSsJICAgICAgIHx8ICgobW9kZSAhPSBERm1vZGUgJiYg bW9kZSAhPSBERG1vZGUpIHx8IFRBUkdFVF9FNTAwX0RPVUJMRSkpCi0rCSAgICYmIChUQVJHRVRf UE9XRVJQQzY0IHx8IG1vZGUgIT0gREltb2RlKQotKwkgICAmJiAhVkVDVE9SX01FTV9BTFRJVkVD X1AgKG1vZGUpCi0rCSAgICYmICghVEFSR0VUX1NQRSB8fCAhU1BFX1ZFQ1RPUl9NT0RFIChtb2Rl KSkKLSsJICAgLyogUmVzdHJpY3QgYWRkcmVzc2luZyBmb3IgREkgYmVjYXVzZSBvZiBvdXIgU1VC UkVHIGhhY2tlcnkuICAqLwotKwkgICAmJiAhKFRBUkdFVF9FNTAwX0RPVUJMRQotKwkJJiYgKG1v ZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gRERtb2RlIHx8IG1vZGUgPT0gREltb2RlKSkKLSsJICAg JiYgVEFSR0VUX1VQREFURQotKwkgICAmJiBsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3NfcCAo WEVYUCAoeCwgMCksIHJlZ19va19zdHJpY3QpCi0rCSAgICYmIChyczYwMDBfbGVnaXRpbWF0ZV9v ZmZzZXRfYWRkcmVzc19wIChtb2RlLCBYRVhQICh4LCAxKSwgcmVnX29rX3N0cmljdCkKLSsJICAg ICAgIHx8ICghYXZvaWRpbmdfaW5kZXhlZF9hZGRyZXNzX3AgKG1vZGUpCi0rCQkgICAmJiBsZWdp dGltYXRlX2luZGV4ZWRfYWRkcmVzc19wIChYRVhQICh4LCAxKSwgcmVnX29rX3N0cmljdCkpKQot KwkgICAmJiBydHhfZXF1YWxfcCAoWEVYUCAoWEVYUCAoeCwgMSksIDApLCBYRVhQICh4LCAwKSkp Ci0rICAgIHJldCA9IDE7Ci0rICBlbHNlIGlmIChsZWdpdGltYXRlX2xvX3N1bV9hZGRyZXNzX3Ag KG1vZGUsIHgsIHJlZ19va19zdHJpY3QpKQotKyAgICByZXQgPSAxOwotKyAgZWxzZQotKyAgICBy ZXQgPSAwOwotKwotKyAgaWYgKFRBUkdFVF9ERUJVR19BRERSKQotKyAgICB7Ci0rICAgICAgZnBy aW50ZiAoc3RkZXJyLAotKwkgICAgICAgIlxucnM2MDAwX2xlZ2l0aW1hdGVfYWRkcmVzczogcmV0 dXJuID0gJWQsIG1vZGUgPSAlcywgIgotKwkgICAgICAgInN0cmljdCA9ICVkXG4iLAotKwkgICAg ICAgcmV0LAotKwkgICAgICAgR0VUX01PREVfTkFNRSAobW9kZSksCi0rCSAgICAgICByZWdfb2tf c3RyaWN0KTsKLSsgICAgICBkZWJ1Z19ydHggKG9yaWdfeCk7Ci0rICAgICAgZnByaW50ZiAoc3Rk ZXJyLCAiXG4iKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJldDsKLSB9Ci0gCi0gLyogR28gdG8g TEFCRUwgaWYgQUREUiAoYSBsZWdpdGltYXRlIGFkZHJlc3MgZXhwcmVzc2lvbikKLUBAIC00NTI1 LDI4ICs1MjAyLDQ2IEBAIHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3MgKGVudW0gbWFjaGluZV8K LSBib29sCi0gcnM2MDAwX21vZGVfZGVwZW5kZW50X2FkZHJlc3MgKHJ0eCBhZGRyKQotIHsKLSsg IGJvb2wgcmV0ID0gZmFsc2U7Ci0rCi0gICBzd2l0Y2ggKEdFVF9DT0RFIChhZGRyKSkKLSAgICAg ewotICAgICBjYXNlIFBMVVM6Ci0gICAgICAgaWYgKEdFVF9DT0RFIChYRVhQIChhZGRyLCAxKSkg PT0gQ09OU1RfSU5UKQotIAl7Ci0gCSAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCB2YWwgPSBJTlRW QUwgKFhFWFAgKGFkZHIsIDEpKTsKLS0JICByZXR1cm4gdmFsICsgMTIgKyAweDgwMDAgPj0gMHgx MDAwMDsKLSsJICByZXQgPSAodmFsICsgMTIgKyAweDgwMDAgPj0gMHgxMDAwMCk7Ci0gCX0KLSAg ICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBMT19TVU06Ci0tICAgICAgcmV0dXJuIHRydWU7Ci0r ICAgICAgcmV0ID0gdHJ1ZTsKLSsgICAgICBicmVhazsKLSAKLSAgICAgLyogQXV0by1pbmNyZW1l bnQgY2FzZXMgYXJlIG5vdyB0cmVhdGVkIGdlbmVyaWNhbGx5IGluIHJlY29nLmMuICAqLwotICAg ICBjYXNlIFBSRV9NT0RJRlk6Ci0tICAgICAgcmV0dXJuIFRBUkdFVF9VUERBVEU7Ci0rICAgICAg cmV0ID0gKFRBUkdFVF9VUERBVEUgIT0gMCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgICAgLyog QU5EIGlzIG9ubHkgYWxsb3dlZCBpbiBBbHRpdmVjIGxvYWRzLiAgKi8KLSsgICAgY2FzZSBBTkQ6 Ci0rICAgICAgcmV0ID0gdHJ1ZTsKLSsgICAgICBicmVhazsKLSAKLSAgICAgZGVmYXVsdDoKLSAg ICAgICBicmVhazsKLSAgICAgfQotIAotLSAgcmV0dXJuIGZhbHNlOwotKyAgaWYgKFRBUkdFVF9E RUJVR19BRERSKQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLAotKwkgICAgICAgIlxu cnM2MDAwX21vZGVfZGVwZW5kZW50X2FkZHJlc3M6IHJldCA9ICVzXG4iLAotKwkgICAgICAgcmV0 ID8gInRydWUiIDogImZhbHNlIik7Ci0rICAgICAgZGVidWdfcnR4IChhZGRyKTsKLSsgICAgICBm cHJpbnRmIChzdGRlcnIsICJcbiIpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmV0OwotIH0KLSAK LSAvKiBJbXBsZW1lbnQgRklORF9CQVNFX1RFUk0uICAqLwotQEAgLTQ1OTcsNDMgKzUyOTIsNiBA QCByczYwMDBfb2Zmc2V0dGFibGVfbWVtcmVmX3AgKHJ0eCBvcCkKLSAgIHJldHVybiByczYwMDBf bGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChHRVRfTU9ERSAob3ApLCBYRVhQIChvcCwgMCks IDEpOwotIH0KLSAKLS0vKiBSZXR1cm4gbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGhhcmQgcmVncyBu ZWVkZWQgc3RhcnRpbmcgYXQgcmVnIFJFR05PCi0tICAgdG8gaG9sZCBzb21ldGhpbmcgb2YgbW9k ZSBNT0RFLgotLSAgIFRoaXMgaXMgb3JkaW5hcmlseSB0aGUgbGVuZ3RoIGluIHdvcmRzIG9mIGEg dmFsdWUgb2YgbW9kZSBNT0RFCi0tICAgYnV0IGNhbiBiZSBsZXNzIGZvciBjZXJ0YWluIG1vZGVz IGluIHNwZWNpYWwgbG9uZyByZWdpc3RlcnMuCi0tCi0tICAgRm9yIHRoZSBTUEUsIEdQUnMgYXJl IDY0IGJpdHMgYnV0IG9ubHkgMzIgYml0cyBhcmUgdmlzaWJsZSBpbgotLSAgIHNjYWxhciBpbnN0 cnVjdGlvbnMuICBUaGUgdXBwZXIgMzIgYml0cyBhcmUgb25seSBhdmFpbGFibGUgdG8gdGhlCi0t ICAgU0lNRCBpbnN0cnVjdGlvbnMuCi0tCi0tICAgUE9XRVIgYW5kIFBvd2VyUEMgR1BScyBob2xk IDMyIGJpdHMgd29ydGg7Ci0tICAgUG93ZXJQQzY0IEdQUnMgYW5kIEZQUnMgcG9pbnQgcmVnaXN0 ZXIgaG9sZHMgNjQgYml0cyB3b3J0aC4gICovCi0tCi0taW50Ci0tcnM2MDAwX2hhcmRfcmVnbm9f bnJlZ3MgKGludCByZWdubywgZW51bSBtYWNoaW5lX21vZGUgbW9kZSkKLS17Ci0tICBpZiAoRlBf UkVHTk9fUCAocmVnbm8pKQotLSAgICByZXR1cm4gKEdFVF9NT0RFX1NJWkUgKG1vZGUpICsgVU5J VFNfUEVSX0ZQX1dPUkQgLSAxKSAvIFVOSVRTX1BFUl9GUF9XT1JEOwotLQotLSAgaWYgKFNQRV9T SU1EX1JFR05PX1AgKHJlZ25vKSAmJiBUQVJHRVRfU1BFICYmIFNQRV9WRUNUT1JfTU9ERSAobW9k ZSkpCi0tICAgIHJldHVybiAoR0VUX01PREVfU0laRSAobW9kZSkgKyBVTklUU19QRVJfU1BFX1dP UkQgLSAxKSAvIFVOSVRTX1BFUl9TUEVfV09SRDsKLS0KLS0gIGlmIChBTFRJVkVDX1JFR05PX1Ag KHJlZ25vKSkKLS0gICAgcmV0dXJuCi0tICAgICAgKEdFVF9NT0RFX1NJWkUgKG1vZGUpICsgVU5J VFNfUEVSX0FMVElWRUNfV09SRCAtIDEpIC8gVU5JVFNfUEVSX0FMVElWRUNfV09SRDsKLS0KLS0g IC8qIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgU0Ntb2RlIGluIHRoZSBFNTAwIGRvdWJsZSBjYXNl IGlzIDIgZm9yCi0tICAgICBBQkkgY29tcGF0aWJpbGl0eTsgc3RvcmluZyBhbiBTQ21vZGUgdmFs dWUgaW4gYSBzaW5nbGUgcmVnaXN0ZXIKLS0gICAgIHdvdWxkIHJlcXVpcmUgZnVuY3Rpb25fYXJn IGFuZCByczYwMDBfc3BlX2Z1bmN0aW9uX2FyZyB0byBoYW5kbGUKLS0gICAgIFNDbW9kZSBzbyBh cyB0byBwYXNzIHRoZSB2YWx1ZSBjb3JyZWN0bHkgaW4gYSBwYWlyIG9mCi0tICAgICByZWdpc3Rl cnMuICAqLwotLSAgaWYgKFRBUkdFVF9FNTAwX0RPVUJMRSAmJiBGTE9BVF9NT0RFX1AgKG1vZGUp ICYmIG1vZGUgIT0gU0Ntb2RlCi0tICAgICAgJiYgIURFQ0lNQUxfRkxPQVRfTU9ERV9QIChtb2Rl KSkKLS0gICAgcmV0dXJuIChHRVRfTU9ERV9TSVpFIChtb2RlKSArIFVOSVRTX1BFUl9GUF9XT1JE IC0gMSkgLyBVTklUU19QRVJfRlBfV09SRDsKLS0KLS0gIHJldHVybiAoR0VUX01PREVfU0laRSAo bW9kZSkgKyBVTklUU19QRVJfV09SRCAtIDEpIC8gVU5JVFNfUEVSX1dPUkQ7Ci0tfQotLQotIC8q IENoYW5nZSByZWdpc3RlciB1c2FnZSBjb25kaXRpb25hbCBvbiB0YXJnZXQgZmxhZ3MuICAqLwot IHZvaWQKLSByczYwMDBfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UgKHZvaWQpCi1AQCAtNDY5 OCwxNCArNTM1NiwxNCBAQCByczYwMDBfY29uZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UgKHZvaWQp Ci0gCT0gY2FsbF9yZWFsbHlfdXNlZF9yZWdzWzE0XSA9IDE7Ci0gICAgIH0KLSAKLS0gIGlmICgh VEFSR0VUX0FMVElWRUMpCi0rICBpZiAoIVRBUkdFVF9BTFRJVkVDICYmICFUQVJHRVRfVlNYKQot ICAgICB7Ci0gICAgICAgZm9yIChpID0gRklSU1RfQUxUSVZFQ19SRUdOTzsgaSA8PSBMQVNUX0FM VElWRUNfUkVHTk87ICsraSkKLSAJZml4ZWRfcmVnc1tpXSA9IGNhbGxfdXNlZF9yZWdzW2ldID0g Y2FsbF9yZWFsbHlfdXNlZF9yZWdzW2ldID0gMTsKLSAgICAgICBjYWxsX3JlYWxseV91c2VkX3Jl Z3NbVlJTQVZFX1JFR05PXSA9IDE7Ci0gICAgIH0KLSAKLS0gIGlmIChUQVJHRVRfQUxUSVZFQykK LSsgIGlmIChUQVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfVlNYKQotICAgICBnbG9iYWxfcmVnc1tW U0NSX1JFR05PXSA9IDE7Ci0gCi0gICBpZiAoVEFSR0VUX0FMVElWRUNfQUJJKQotQEAgLTQ5MjMs NiArNTU4MSwyMCBAQCByczYwMDBfZW1pdF9tb3ZlIChydHggZGVzdCwgcnR4IHNvdXJjZSwgCi0g ICBvcGVyYW5kc1swXSA9IGRlc3Q7Ci0gICBvcGVyYW5kc1sxXSA9IHNvdXJjZTsKLSAKLSsgIGlm IChUQVJHRVRfREVCVUdfQUREUikKLSsgICAgewotKyAgICAgIGZwcmludGYgKHN0ZGVyciwKLSsJ ICAgICAgICJcbnJzNjAwMF9lbWl0X21vdmU6IG1vZGUgPSAlcywgcmVsb2FkX2luX3Byb2dyZXNz ID0gJWQsICIKLSsJICAgICAgICJyZWxvYWRfY29tcGxldGVkID0gJWQsIGNhbl9jcmVhdGVfcHNl dWRvcyA9ICVkLlxuZGVzdDpcbiIsCi0rCSAgICAgICBHRVRfTU9ERV9OQU1FIChtb2RlKSwKLSsJ ICAgICAgIHJlbG9hZF9pbl9wcm9ncmVzcywKLSsJICAgICAgIHJlbG9hZF9jb21wbGV0ZWQsCi0r CSAgICAgICBjYW5fY3JlYXRlX3BzZXVkb19wICgpKTsKLSsgICAgICBkZWJ1Z19ydHggKGRlc3Qp OwotKyAgICAgIGZwcmludGYgKHN0ZGVyciwgInNvdXJjZTpcbiIpOwotKyAgICAgIGRlYnVnX3J0 eCAoc291cmNlKTsKLSsgICAgfQotKwotICAgLyogU2FuaXR5IGNoZWNrcy4gIENoZWNrIHRoYXQg d2UgZ2V0IENPTlNUX0RPVUJMRSBvbmx5IHdoZW4gd2Ugc2hvdWxkLiAgKi8KLSAgIGlmIChHRVRf Q09ERSAob3BlcmFuZHNbMV0pID09IENPTlNUX0RPVUJMRQotICAgICAgICYmICEgRkxPQVRfTU9E RV9QIChtb2RlKQotQEAgLTUxMjcsNiArNTc5OSw4IEBAIHJzNjAwMF9lbWl0X21vdmUgKHJ0eCBk ZXN0LCBydHggc291cmNlLCAKLSAgICAgY2FzZSBWMlNGbW9kZToKLSAgICAgY2FzZSBWMlNJbW9k ZToKLSAgICAgY2FzZSBWMURJbW9kZToKLSsgICAgY2FzZSBWMkRGbW9kZToKLSsgICAgY2FzZSBW MkRJbW9kZToKLSAgICAgICBpZiAoQ09OU1RBTlRfUCAob3BlcmFuZHNbMV0pCi0gCSAgJiYgIWVh c3lfdmVjdG9yX2NvbnN0YW50IChvcGVyYW5kc1sxXSwgbW9kZSkpCi0gCW9wZXJhbmRzWzFdID0g Zm9yY2VfY29uc3RfbWVtIChtb2RlLCBvcGVyYW5kc1sxXSk7Ci1AQCAtNTI5Niw2ICs1OTcwLDkg QEAgcnM2MDAwX2VtaXRfbW92ZSAocnR4IGRlc3QsIHJ0eCBzb3VyY2UsIAotICAgICAgIGJyZWFr OwotIAotICAgICBjYXNlIFRJbW9kZToKLSsgICAgICBpZiAoVkVDVE9SX01FTV9BTFRJVkVDX09S X1ZTWF9QIChUSW1vZGUpKQotKwlicmVhazsKLSsKLSAgICAgICByczYwMDBfZWxpbWluYXRlX2lu ZGV4ZWRfbWVtcmVmcyAob3BlcmFuZHMpOwotIAotICAgICAgIGlmIChUQVJHRVRfUE9XRVIpCi1A QCAtNTMxMSw3ICs1OTg4LDcgQEAgcnM2MDAwX2VtaXRfbW92ZSAocnR4IGRlc3QsIHJ0eCBzb3Vy Y2UsIAotICAgICAgIGJyZWFrOwotIAotICAgICBkZWZhdWx0OgotLSAgICAgIGdjY191bnJlYWNo YWJsZSAoKTsKLSsgICAgICBmYXRhbF9pbnNuICgiYmFkIG1vdmUiLCBnZW5fcnR4X1NFVCAoVk9J RG1vZGUsIGRlc3QsIHNvdXJjZSkpOwotICAgICB9Ci0gCi0gICAvKiBBYm92ZSwgd2UgbWF5IGhh dmUgY2FsbGVkIGZvcmNlX2NvbnN0X21lbSB3aGljaCBtYXkgaGF2ZSByZXR1cm5lZAotQEAgLTUz MzEsMTAgKzYwMDgsMTAgQEAgcnM2MDAwX2VtaXRfbW92ZSAocnR4IGRlc3QsIHJ0eCBzb3VyY2Us IAotICAgICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTKQotIAotIC8qIE5vbnpl cm8gaWYgd2UgY2FuIHVzZSBhbiBBbHRpVmVjIHJlZ2lzdGVyIHRvIHBhc3MgdGhpcyBhcmcuICAq LwotLSNkZWZpbmUgVVNFX0FMVElWRUNfRk9SX0FSR19QKENVTSxNT0RFLFRZUEUsTkFNRUQpCVwK LS0gIChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChNT0RFKQkJCQlcCi0tICAgJiYgKENVTSktPnZyZWdu byA8PSBBTFRJVkVDX0FSR19NQVhfUkVHCQlcCi0tICAgJiYgVEFSR0VUX0FMVElWRUNfQUJJCQkJ CVwKLSsjZGVmaW5lIFVTRV9BTFRJVkVDX0ZPUl9BUkdfUChDVU0sTU9ERSxUWVBFLE5BTUVEKQkJ XAotKyAgKChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChNT0RFKSB8fCBWU1hfVkVDVE9SX01PREUgKE1P REUpKQlcCi0rICAgJiYgKENVTSktPnZyZWdubyA8PSBBTFRJVkVDX0FSR19NQVhfUkVHCQkJXAot KyAgICYmIFRBUkdFVF9BTFRJVkVDX0FCSQkJCQkJXAotICAgICYmIChOQU1FRCkpCi0gCi0gLyog UmV0dXJuIGEgbm9uemVybyB2YWx1ZSB0byBzYXkgdG8gcmV0dXJuIHRoZSBmdW5jdGlvbiB2YWx1 ZSBpbgotQEAgLTU1NzUsNyArNjI1Miw3IEBAIGZ1bmN0aW9uX2FyZ19ib3VuZGFyeSAoZW51bSBt YWNoaW5lX21vZGUKLSAJICAgICAgICYmIGludF9zaXplX2luX2J5dGVzICh0eXBlKSA+PSA4Ci0g CSAgICAgICAmJiBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSkgPCAxNikpCi0gICAgIHJldHVybiA2 NDsKLS0gIGVsc2UgaWYgKEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpCi0rICBlbHNlIGlmICgo QUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkgfHwgVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSAJ ICAgfHwgKHR5cGUgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBWRUNUT1JfVFlQRQotIAkgICAgICAg JiYgaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpID49IDE2KSkKLSAgICAgcmV0dXJuIDEyODsKLUBA IC01NzIwLDcgKzYzOTcsNyBAQCBmdW5jdGlvbl9hcmdfYWR2YW5jZSAoQ1VNVUxBVElWRV9BUkdT ICpjCi0gICAgIGN1bS0+bmFyZ3NfcHJvdG90eXBlLS07Ci0gCi0gICBpZiAoVEFSR0VUX0FMVElW RUNfQUJJCi0tICAgICAgJiYgKEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpCi0rICAgICAgJiYg KChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSB8fCBWU1hfVkVDVE9SX01PREUgKG1vZGUpKQot IAkgIHx8ICh0eXBlICYmIFRSRUVfQ09ERSAodHlwZSkgPT0gVkVDVE9SX1RZUEUKLSAJICAgICAg JiYgaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpID09IDE2KSkpCi0gICAgIHsKLUBAIC02MzE0LDcg KzY5OTEsNyBAQCBmdW5jdGlvbl9hcmcgKENVTVVMQVRJVkVfQVJHUyAqY3VtLCBlbnVtCi0gICAg IGVsc2UKLSAgICAgICByZXR1cm4gZ2VuX3J0eF9SRUcgKG1vZGUsIGN1bS0+dnJlZ25vKTsKLSAg IGVsc2UgaWYgKFRBUkdFVF9BTFRJVkVDX0FCSQotLQkgICAmJiAoQUxUSVZFQ19WRUNUT1JfTU9E RSAobW9kZSkKLSsJICAgJiYgKChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSB8fCBWU1hfVkVD VE9SX01PREUgKG1vZGUpKQotIAkgICAgICAgfHwgKHR5cGUgJiYgVFJFRV9DT0RFICh0eXBlKSA9 PSBWRUNUT1JfVFlQRQotIAkJICAgJiYgaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpID09IDE2KSkp Ci0gICAgIHsKLUBAIC03MjM4LDEwICs3OTE1LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVp bHRpbl9kZXNjcmlwdGlvbiAKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3Zw ZXJtX3Y0c2ksICJfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2kiLCBBTFRJVkVDX0JVSUxUSU5f VlBFUk1fNFNJIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192cGVybV92 OGhpLCAiX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fOGhpIiwgQUxUSVZFQ19CVUlMVElOX1ZQRVJN XzhISSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdnBlcm1fdjE2cWks ICJfX2J1aWx0aW5fYWx0aXZlY192cGVybV8xNnFpIiwgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzE2 UUkgfSwKLS0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZzZWxfdjRzZiwgIl9f YnVpbHRpbl9hbHRpdmVjX3ZzZWxfNHNmIiwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfNFNGIH0sCi0t ICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192c2VsX3Y0c2ksICJfX2J1aWx0aW5f YWx0aXZlY192c2VsXzRzaSIsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzRTSSB9LAotLSAgeyBNQVNL X0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdnNlbF92OGhpLCAiX19idWlsdGluX2FsdGl2ZWNf dnNlbF84aGkiLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF84SEkgfSwKLS0gIHsgTUFTS19BTFRJVkVD LCBDT0RFX0ZPUl9hbHRpdmVjX3ZzZWxfdjE2cWksICJfX2J1aWx0aW5fYWx0aXZlY192c2VsXzE2 cWkiLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF8xNlFJIH0sCi0rICB7IE1BU0tfQUxUSVZFQywgQ09E RV9GT1JfYWx0aXZlY192cGVybV92MmRmLCAiX19idWlsdGluX2FsdGl2ZWNfdnBlcm1fMmRmIiwg QUxUSVZFQ19CVUlMVElOX1ZQRVJNXzJERiB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9S X2FsdGl2ZWNfdnBlcm1fdjJkaSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzJkaSIsIEFMVElW RUNfQlVJTFRJTl9WUEVSTV8yREkgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0 b3JfdnNlbHY0c2YsICJfX2J1aWx0aW5fYWx0aXZlY192c2VsXzRzZiIsIEFMVElWRUNfQlVJTFRJ Tl9WU0VMXzRTRiB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX3ZlY3Rvcl92c2VsdjRz aSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZzZWxfNHNpIiwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfNFNJ IH0sCi0rICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX3ZzZWx2OGhpLCAiX19idWls dGluX2FsdGl2ZWNfdnNlbF84aGkiLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF84SEkgfSwKLSsgIHsg TUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfdnNlbHYxNnFpLCAiX19idWlsdGluX2FsdGl2 ZWNfdnNlbF8xNnFpIiwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfMTZRSSB9LAotKyAgeyBNQVNLX0FM VElWRUMsIENPREVfRk9SX3ZlY3Rvcl92c2VsdjJkZiwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZzZWxf MmRmIiwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfMkRGIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09E RV9GT1JfYWx0aXZlY192c2xkb2lfdjE2cWksICJfX2J1aWx0aW5fYWx0aXZlY192c2xkb2lfMTZx aSIsIEFMVElWRUNfQlVJTFRJTl9WU0xET0lfMTZRSSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENP REVfRk9SX2FsdGl2ZWNfdnNsZG9pX3Y4aGksICJfX2J1aWx0aW5fYWx0aXZlY192c2xkb2lfOGhp IiwgQUxUSVZFQ19CVUlMVElOX1ZTTERPSV84SEkgfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RF X0ZPUl9hbHRpdmVjX3ZzbGRvaV92NHNpLCAiX19idWlsdGluX2FsdGl2ZWNfdnNsZG9pXzRzaSIs IEFMVElWRUNfQlVJTFRJTl9WU0xET0lfNFNJIH0sCi1AQCAtNzI2Myw2ICs3OTQzLDE2IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiAKLSAgIHsgTUFTS19BTFRJVkVD LCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19wZXJtIiwgQUxUSVZFQ19CVUlMVElO X1ZFQ19QRVJNIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVp bHRpbl92ZWNfc2VsIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19TRUwgfSwKLSAKLSsgIHsgTUFTS19W U1gsIENPREVfRk9SX3ZzeF9mbWFkZHYyZGY0LCAiX19idWlsdGluX3ZzeF94dm1hZGRkcCIsIFZT WF9CVUlMVElOX1hWTUFERERQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfZm1zdWJ2 MmRmNCwgIl9fYnVpbHRpbl92c3hfeHZtc3ViZHAiLCBWU1hfQlVJTFRJTl9YVk1TVUJEUCB9LAot KyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2ZubWFkZHYyZGY0LCAiX19idWlsdGluX3ZzeF94 dm5tYWRkZHAiLCBWU1hfQlVJTFRJTl9YVk5NQURERFAgfSwKLSsgIHsgTUFTS19WU1gsIENPREVf Rk9SX3ZzeF9mbm1zdWJ2MmRmNCwgIl9fYnVpbHRpbl92c3hfeHZubXN1YmRwIiwgVlNYX0JVSUxU SU5fWFZOTVNVQkRQIH0sCi0rCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfZm1hZGR2NHNm NCwgIl9fYnVpbHRpbl92c3hfeHZtYWRkc3AiLCBWU1hfQlVJTFRJTl9YVk1BRERTUCB9LAotKyAg eyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2Ztc3VidjRzZjQsICJfX2J1aWx0aW5fdnN4X3h2bXN1 YnNwIiwgVlNYX0JVSUxUSU5fWFZNU1VCU1AgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3Zz eF9mbm1hZGR2NHNmNCwgIl9fYnVpbHRpbl92c3hfeHZubWFkZHNwIiwgVlNYX0JVSUxUSU5fWFZO TUFERFNQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfZm5tc3VidjRzZjQsICJfX2J1 aWx0aW5fdnN4X3h2bm1zdWJzcCIsIFZTWF9CVUlMVElOX1hWTk1TVUJTUCB9LAotKwotICAgeyAw LCBDT0RFX0ZPUl9wYWlyZWRfbXN1YiwgIl9fYnVpbHRpbl9wYWlyZWRfbXN1YiIsIFBBSVJFRF9C VUlMVElOX01TVUIgfSwKLSAgIHsgMCwgQ09ERV9GT1JfcGFpcmVkX21hZGQsICJfX2J1aWx0aW5f cGFpcmVkX21hZGQiLCBQQUlSRURfQlVJTFRJTl9NQUREIH0sCi0gICB7IDAsIENPREVfRk9SX3Bh aXJlZF9tYWRkczAsICJfX2J1aWx0aW5fcGFpcmVkX21hZGRzMCIsIFBBSVJFRF9CVUlMVElOX01B RERTMCB9LAotQEAgLTczMTUsMTggKzgwMDUsMTggQEAgc3RhdGljIHN0cnVjdCBidWlsdGluX2Rl c2NyaXB0aW9uIGJkZXNjXwotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNm dXgsICJfX2J1aWx0aW5fYWx0aXZlY192Y2Z1eCIsIEFMVElWRUNfQlVJTFRJTl9WQ0ZVWCB9LAot ICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNmc3gsICJfX2J1aWx0aW5fYWx0 aXZlY192Y2ZzeCIsIEFMVElWRUNfQlVJTFRJTl9WQ0ZTWCB9LAotICAgeyBNQVNLX0FMVElWRUMs IENPREVfRk9SX2FsdGl2ZWNfdmNtcGJmcCwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBiZnAiLCBB TFRJVkVDX0JVSUxUSU5fVkNNUEJGUCB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2Fs dGl2ZWNfdmNtcGVxdWIsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1YiIsIEFMVElWRUNfQlVJ TFRJTl9WQ01QRVFVQiB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNt cGVxdWgsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aCIsIEFMVElWRUNfQlVJTFRJTl9WQ01Q RVFVSCB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGVxdXcsICJf X2J1aWx0aW5fYWx0aXZlY192Y21wZXF1dyIsIEFMVElWRUNfQlVJTFRJTl9WQ01QRVFVVyB9LAot LSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGVxZnAsICJfX2J1aWx0aW5f YWx0aXZlY192Y21wZXFmcCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QRVFGUCB9LAotLSAgeyBNQVNL X0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGdlZnAsICJfX2J1aWx0aW5fYWx0aXZlY192 Y21wZ2VmcCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR0VGUCB9LAotLSAgeyBNQVNLX0FMVElWRUMs IENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0dWIsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1YiIs IEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVQiB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9S X2FsdGl2ZWNfdmNtcGd0c2IsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYiIsIEFMVElWRUNf QlVJTFRJTl9WQ01QR1RTQiB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNf dmNtcGd0dWgsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aCIsIEFMVElWRUNfQlVJTFRJTl9W Q01QR1RVSCB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0c2gs ICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RTSCB9 LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0dXcsICJfX2J1aWx0 aW5fYWx0aXZlY192Y21wZ3R1dyIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVVyB9LAotLSAgeyBN QVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0c3csICJfX2J1aWx0aW5fYWx0aXZl Y192Y21wZ3RzdyIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RTVyB9LAotLSAgeyBNQVNLX0FMVElW RUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0ZnAsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rm cCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RGUCB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVf Rk9SX3ZlY3Rvcl9lcXYxNnFpLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWIiLCBBTFRJVkVD X0JVSUxUSU5fVkNNUEVRVUIgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3Jf ZXF2OGhpLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWgiLCBBTFRJVkVDX0JVSUxUSU5fVkNN UEVRVUggfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZXF2NHNpLCAiX19i dWlsdGluX2FsdGl2ZWNfdmNtcGVxdXciLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVVcgfSwKLSsg IHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZXF2NHNmLCAiX19idWlsdGluX2FsdGl2 ZWNfdmNtcGVxZnAiLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRRlAgfSwKLSsgIHsgTUFTS19BTFRJ VkVDLCBDT0RFX0ZPUl92ZWN0b3JfZ2V2NHNmLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGdlZnAi LCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdFRlAgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZP Ul92ZWN0b3JfZ3R1djE2cWksICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1YiIsIEFMVElWRUNf QlVJTFRJTl9WQ01QR1RVQiB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX3ZlY3Rvcl9n dHV2OGhpLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2IiLCBBTFRJVkVDX0JVSUxUSU5fVkNN UEdUU0IgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZ3R1djRzaSwgIl9f YnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoIiwgQUxUSVZFQ19CVUlMVElOX1ZDTVBHVFVIIH0sCi0r ICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX2d0djE2cWksICJfX2J1aWx0aW5fYWx0 aXZlY192Y21wZ3RzaCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RTSCB9LAotKyAgeyBNQVNLX0FM VElWRUMsIENPREVfRk9SX3ZlY3Rvcl9ndHY4aGksICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1 dyIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVVyB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVf Rk9SX3ZlY3Rvcl9ndHY0c2ksICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzdyIsIEFMVElWRUNf QlVJTFRJTl9WQ01QR1RTVyB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX3ZlY3Rvcl9n dHY0c2YsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RmcCIsIEFMVElWRUNfQlVJTFRJTl9WQ01Q R1RGUCB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmN0c3hzLCAiX19i dWlsdGluX2FsdGl2ZWNfdmN0c3hzIiwgQUxUSVZFQ19CVUlMVElOX1ZDVFNYUyB9LAotICAgeyBN QVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmN0dXhzLCAiX19idWlsdGluX2FsdGl2ZWNf dmN0dXhzIiwgQUxUSVZFQ19CVUlMVElOX1ZDVFVYUyB9LAotICAgeyBNQVNLX0FMVElWRUMsIENP REVfRk9SX3VtYXh2MTZxaTMsICJfX2J1aWx0aW5fYWx0aXZlY192bWF4dWIiLCBBTFRJVkVDX0JV SUxUSU5fVk1BWFVCIH0sCi1AQCAtNzM1Nyw3ICs4MDQ3LDcgQEAgc3RhdGljIHN0cnVjdCBidWls dGluX2Rlc2NyaXB0aW9uIGJkZXNjXwotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2 ZWNfdm11bG9zYiwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvc2IiLCBBTFRJVkVDX0JVSUxUSU5f Vk1VTE9TQiB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdm11bG91aCwg Il9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvdWgiLCBBTFRJVkVDX0JVSUxUSU5fVk1VTE9VSCB9LAot ICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdm11bG9zaCwgIl9fYnVpbHRpbl9h bHRpdmVjX3ZtdWxvc2giLCBBTFRJVkVDX0JVSUxUSU5fVk1VTE9TSCB9LAotLSAgeyBNQVNLX0FM VElWRUMsIENPREVfRk9SX2FsdGl2ZWNfbm9ydjRzaTMsICJfX2J1aWx0aW5fYWx0aXZlY192bm9y IiwgQUxUSVZFQ19CVUlMVElOX1ZOT1IgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9u b3J2NHNpMywgIl9fYnVpbHRpbl9hbHRpdmVjX3Zub3IiLCBBTFRJVkVDX0JVSUxUSU5fVk5PUiB9 LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2lvcnY0c2kzLCAiX19idWlsdGluX2FsdGl2 ZWNfdm9yIiwgQUxUSVZFQ19CVUlMVElOX1ZPUiB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVf Rk9SX2FsdGl2ZWNfdnBrdWh1bSwgIl9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VodW0iLCBBTFRJVkVD X0JVSUxUSU5fVlBLVUhVTSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNf dnBrdXd1bSwgIl9fYnVpbHRpbl9hbHRpdmVjX3Zwa3V3dW0iLCBBTFRJVkVDX0JVSUxUSU5fVlBL VVdVTSB9LAotQEAgLTc0MDUsOCArODA5NSwyNCBAQCBzdGF0aWMgc3RydWN0IGJ1aWx0aW5fZGVz Y3JpcHRpb24gYmRlc2NfCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192c3Vt c3dzLCAiX19idWlsdGluX2FsdGl2ZWNfdnN1bXN3cyIsIEFMVElWRUNfQlVJTFRJTl9WU1VNU1dT IH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfeG9ydjRzaTMsICJfX2J1aWx0aW5fYWx0 aXZlY192eG9yIiwgQUxUSVZFQ19CVUlMVElOX1ZYT1IgfSwKLSAKLS0gIHsgTUFTS19BTFRJVkVD LCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19hZGQiLCBBTFRJVkVDX0JVSUxUSU5f VkVDX0FERCB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0 aW5fdmVjX3ZhZGRmcCIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVkFEREZQIH0sCi0rICB7IE1BU0tf VlNYLCBDT0RFX0ZPUl9hZGR2MmRmMywgIl9fYnVpbHRpbl92c3hfeHZhZGRkcCIsIFZTWF9CVUlM VElOX1hWQURERFAgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3N1YnYyZGYzLCAiX19idWls dGluX3ZzeF94dnN1YmRwIiwgVlNYX0JVSUxUSU5fWFZTVUJEUCB9LAotKyAgeyBNQVNLX1ZTWCwg Q09ERV9GT1JfbXVsdjJkZjMsICJfX2J1aWx0aW5fdnN4X3h2bXVsZHAiLCBWU1hfQlVJTFRJTl9Y Vk1VTERQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9kaXZ2MmRmMywgIl9fYnVpbHRpbl92 c3hfeHZkaXZkcCIsIFZTWF9CVUlMVElOX1hWRElWRFAgfSwKLSsgIHsgTUFTS19WU1gsIENPREVf Rk9SX3NtaW52MmRmMywgIl9fYnVpbHRpbl92c3hfeHZtaW5kcCIsIFZTWF9CVUlMVElOX1hWTUlO RFAgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3NtYXh2MmRmMywgIl9fYnVpbHRpbl92c3hf eHZtYXhkcCIsIFZTWF9CVUlMVElOX1hWTUFYRFAgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9S X3ZzeF90ZGl2djJkZjMsICJfX2J1aWx0aW5fdnN4X3h2dGRpdmRwIiwgVlNYX0JVSUxUSU5fWFZU RElWRFAgfSwKLSsKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX2FkZHY0c2YzLCAiX19idWlsdGlu X3ZzeF94dmFkZHNwIiwgVlNYX0JVSUxUSU5fWFZBRERTUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09E RV9GT1Jfc3VidjRzZjMsICJfX2J1aWx0aW5fdnN4X3h2c3Vic3AiLCBWU1hfQlVJTFRJTl9YVlNV QlNQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9tdWx2NHNmMywgIl9fYnVpbHRpbl92c3hf eHZtdWxzcCIsIFZTWF9CVUlMVElOX1hWTVVMU1AgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9S X2RpdnY0c2YzLCAiX19idWlsdGluX3ZzeF94dmRpdnNwIiwgVlNYX0JVSUxUSU5fWFZESVZTUCB9 LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jfc21pbnY0c2YzLCAiX19idWlsdGluX3ZzeF94dm1p bnNwIiwgVlNYX0JVSUxUSU5fWFZNSU5TUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jfc21h eHY0c2YzLCAiX19idWlsdGluX3ZzeF94dm1heHNwIiwgVlNYX0JVSUxUSU5fWFZNQVhTUCB9LAot KyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3RkaXZ2NHNmMywgIl9fYnVpbHRpbl92c3hfeHZ0 ZGl2c3AiLCBWU1hfQlVJTFRJTl9YVlRESVZTUCB9LAotKwotKyAgeyBNQVNLX0FMVElWRUN8TUFT S19WU1gsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX2FkZCIsIEFMVElWRUNfQlVJ TFRJTl9WRUNfQUREIH0sCi0rICB7IE1BU0tfQUxUSVZFQ3xNQVNLX1ZTWCwgQ09ERV9GT1Jfbm90 aGluZywgIl9fYnVpbHRpbl92ZWNfdmFkZGZwIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WQURERlAg fSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY192 YWRkdXdtIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WQUREVVdNIH0sCi0gICB7IE1BU0tfQUxUSVZF QywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNfdmFkZHVobSIsIEFMVElWRUNfQlVJ TFRJTl9WRUNfVkFERFVITSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcs ICJfX2J1aWx0aW5fdmVjX3ZhZGR1Ym0iLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZBRERVQk0gfSwK LUBAIC03NDE4LDggKzgxMjQsOCBAQCBzdGF0aWMgc3RydWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24g YmRlc2NfCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92 ZWNfdmFkZHVocyIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVkFERFVIUyB9LAotICAgeyBNQVNLX0FM VElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3ZhZGRzYnMiLCBBTFRJVkVD X0JVSUxUSU5fVkVDX1ZBRERTQlMgfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3Ro aW5nLCAiX19idWlsdGluX3ZlY192YWRkdWJzIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WQUREVUJT IH0sCi0tICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNf YW5kIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19BTkQgfSwKLS0gIHsgTUFTS19BTFRJVkVDLCBDT0RF X0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19hbmRjIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19B TkRDIH0sCi0rICB7IE1BU0tfQUxUSVZFQ3xNQVNLX1ZTWCwgQ09ERV9GT1Jfbm90aGluZywgIl9f YnVpbHRpbl92ZWNfYW5kIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19BTkQgfSwKLSsgIHsgTUFTS19B TFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19hbmRjIiwg QUxUSVZFQ19CVUlMVElOX1ZFQ19BTkRDIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jf bm90aGluZywgIl9fYnVpbHRpbl92ZWNfYXZnIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19BVkcgfSwK LSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY192YXZn c3ciLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZBVkdTVyB9LAotICAgeyBNQVNLX0FMVElWRUMsIENP REVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3Zhdmd1dyIsIEFMVElWRUNfQlVJTFRJTl9W RUNfVkFWR1VXIH0sCi1AQCAtNzQ0NCw4ICs4MTUwLDggQEAgc3RhdGljIHN0cnVjdCBidWlsdGlu X2Rlc2NyaXB0aW9uIGJkZXNjXwotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcs ICJfX2J1aWx0aW5fdmVjX3ZjbXBndHViIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WQ01QR1RVQiB9 LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX2Nt cGxlIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19DTVBMRSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENP REVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX2NtcGx0IiwgQUxUSVZFQ19CVUlMVElOX1ZF Q19DTVBMVCB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0 aW5fdmVjX21heCIsIEFMVElWRUNfQlVJTFRJTl9WRUNfTUFYIH0sCi0tICB7IE1BU0tfQUxUSVZF QywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNfdm1heGZwIiwgQUxUSVZFQ19CVUlM VElOX1ZFQ19WTUFYRlAgfSwKLSsgIHsgTUFTS19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl9u b3RoaW5nLCAiX19idWlsdGluX3ZlY19tYXgiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX01BWCB9LAot KyAgeyBNQVNLX0FMVElWRUN8TUFTS19WU1gsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5f dmVjX3ZtYXhmcCIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVk1BWEZQIH0sCi0gICB7IE1BU0tfQUxU SVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNfdm1heHN3IiwgQUxUSVZFQ19C VUlMVElOX1ZFQ19WTUFYU1cgfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5n LCAiX19idWlsdGluX3ZlY192bWF4dXciLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZNQVhVVyB9LAot ICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3ZtYXhz aCIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVk1BWFNIIH0sCi1AQCAtNzQ2MCw4ICs4MTY2LDggQEAg c3RhdGljIHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uIGJkZXNjXwotICAgeyBNQVNLX0FMVElW RUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3ZtcmdsdyIsIEFMVElWRUNfQlVJ TFRJTl9WRUNfVk1SR0xXIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywg Il9fYnVpbHRpbl92ZWNfdm1yZ2xoIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WTVJHTEggfSwKLSAg IHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY192bXJnbGIi LCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZNUkdMQiB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVf Rk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX21pbiIsIEFMVElWRUNfQlVJTFRJTl9WRUNfTUlO IH0sCi0tICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNf dm1pbmZwIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WTUlORlAgfSwKLSsgIHsgTUFTS19BTFRJVkVD fE1BU0tfVlNYLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19taW4iLCBBTFRJVkVD X0JVSUxUSU5fVkVDX01JTiB9LAotKyAgeyBNQVNLX0FMVElWRUN8TUFTS19WU1gsIENPREVfRk9S X25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3ZtaW5mcCIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVk1J TkZQIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92 ZWNfdm1pbnN3IiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WTUlOU1cgfSwKLSAgIHsgTUFTS19BTFRJ VkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY192bWludXciLCBBTFRJVkVDX0JV SUxUSU5fVkVDX1ZNSU5VVyB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcs ICJfX2J1aWx0aW5fdmVjX3ZtaW5zaCIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVk1JTlNIIH0sCi1A QCAtNzQ3OCw4ICs4MTg0LDggQEAgc3RhdGljIHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uIGJk ZXNjXwotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVj X3ZtdWxvdWgiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZNVUxPVUggfSwKLSAgIHsgTUFTS19BTFRJ VkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY192bXVsb3NiIiwgQUxUSVZFQ19C VUlMVElOX1ZFQ19WTVVMT1NCIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGlu ZywgIl9fYnVpbHRpbl92ZWNfdm11bG91YiIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVk1VTE9VQiB9 LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX25v ciIsIEFMVElWRUNfQlVJTFRJTl9WRUNfTk9SIH0sCi0tICB7IE1BU0tfQUxUSVZFQywgQ09ERV9G T1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNfb3IiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX09SIH0s Ci0rICB7IE1BU0tfQUxUSVZFQ3xNQVNLX1ZTWCwgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRp bl92ZWNfbm9yIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19OT1IgfSwKLSsgIHsgTUFTS19BTFRJVkVD fE1BU0tfVlNYLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19vciIsIEFMVElWRUNf QlVJTFRJTl9WRUNfT1IgfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAi X19idWlsdGluX3ZlY19wYWNrIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19QQUNLIH0sCi0gICB7IE1B U0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNfdnBrdXd1bSIsIEFM VElWRUNfQlVJTFRJTl9WRUNfVlBLVVdVTSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9S X25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3Zwa3VodW0iLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZQ S1VIVU0gfSwKLUBAIC03NTEyLDggKzgyMTgsOCBAQCBzdGF0aWMgc3RydWN0IGJ1aWx0aW5fZGVz Y3JpcHRpb24gYmRlc2NfCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9f YnVpbHRpbl92ZWNfdnNyYWIiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZTUkFCIH0sCi0gICB7IE1B U0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNfc3JsIiwgQUxUSVZF Q19CVUlMVElOX1ZFQ19TUkwgfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5n LCAiX19idWlsdGluX3ZlY19zcm8iLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1NSTyB9LAotLSAgeyBN QVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3N1YiIsIEFMVElW RUNfQlVJTFRJTl9WRUNfU1VCIH0sCi0tICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGlu ZywgIl9fYnVpbHRpbl92ZWNfdnN1YmZwIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WU1VCRlAgfSwK LSsgIHsgTUFTS19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGlu X3ZlY19zdWIiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1NVQiB9LAotKyAgeyBNQVNLX0FMVElWRUN8 TUFTS19WU1gsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3ZzdWJmcCIsIEFMVElW RUNfQlVJTFRJTl9WRUNfVlNVQkZQIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90 aGluZywgIl9fYnVpbHRpbl92ZWNfdnN1YnV3bSIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVlNVQlVX TSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVj X3ZzdWJ1aG0iLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZTVUJVSE0gfSwKLSAgIHsgTUFTS19BTFRJ VkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY192c3VidWJtIiwgQUxUSVZFQ19C VUlMVElOX1ZFQ19WU1VCVUJNIH0sCi1AQCAtNzUzMSw3ICs4MjM3LDEwIEBAIHN0YXRpYyBzdHJ1 Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiBiZGVzY18KLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZP Ul9ub3RoaW5nLCAiX19idWlsdGluX3ZlY192c3VtNHVicyIsIEFMVElWRUNfQlVJTFRJTl9WRUNf VlNVTTRVQlMgfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWls dGluX3ZlY19zdW0ycyIsIEFMVElWRUNfQlVJTFRJTl9WRUNfU1VNMlMgfSwKLSAgIHsgTUFTS19B TFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19zdW1zIiwgQUxUSVZFQ19C VUlMVElOX1ZFQ19TVU1TIH0sCi0tICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywg Il9fYnVpbHRpbl92ZWNfeG9yIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19YT1IgfSwKLSsgIHsgTUFT S19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY194b3Ii LCBBTFRJVkVDX0JVSUxUSU5fVkVDX1hPUiB9LAotKwotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jf bm90aGluZywgIl9fYnVpbHRpbl92ZWNfbXVsIiwgVlNYX0JVSUxUSU5fVkVDX01VTCB9LAotKyAg eyBNQVNLX1ZTWCwgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVpbHRpbl92ZWNfZGl2IiwgVlNYX0JV SUxUSU5fVkVDX0RJViB9LAotIAotICAgeyAwLCBDT0RFX0ZPUl9kaXZ2MnNmMywgIl9fYnVpbHRp bl9wYWlyZWRfZGl2djJzZjMiLCBQQUlSRURfQlVJTFRJTl9ESVZWMlNGMyB9LAotICAgeyAwLCBD T0RFX0ZPUl9hZGR2MnNmMywgIl9fYnVpbHRpbl9wYWlyZWRfYWRkdjJzZjMiLCBQQUlSRURfQlVJ TFRJTl9BRERWMlNGMyB9LAotQEAgLTc3NzYsNyArODQ4NSwxMSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24gCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWJz djE2cWkyLCAiX19idWlsdGluX2FsdGl2ZWNfYWJzX3YxNnFpIiwgQUxUSVZFQ19CVUlMVElOX0FC U19WMTZRSSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfYWJzc192NHNp LCAiX19idWlsdGluX2FsdGl2ZWNfYWJzc192NHNpIiwgQUxUSVZFQ19CVUlMVElOX0FCU1NfVjRT SSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfYWJzc192OGhpLCAiX19i dWlsdGluX2FsdGl2ZWNfYWJzc192OGhpIiwgQUxUSVZFQ19CVUlMVElOX0FCU1NfVjhISSB9LAot LSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfYWJzc192MTZxaSwgIl9fYnVpbHRp bl9hbHRpdmVjX2Fic3NfdjE2cWkiLCBBTFRJVkVDX0JVSUxUSU5fQUJTU19WMTZRSSB9Ci0rICB7 IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY19hYnNzX3YxNnFpLCAiX19idWlsdGluX2Fs dGl2ZWNfYWJzc192MTZxaSIsIEFMVElWRUNfQlVJTFRJTl9BQlNTX1YxNlFJIH0sCi0rICB7IE1B U0tfVlNYLCBDT0RFX0ZPUl9hYnN2MmRmMiwgIl9fYnVpbHRpbl92c3hfeHZhYnNkcCIsIFZTWF9C VUlMVElOX1hWQUJTRFAgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9uYWJzdjJkZjIs ICJfX2J1aWx0aW5fdnN4X3h2bmFic2RwIiwgVlNYX0JVSUxUSU5fWFZOQUJTRFAgfSwKLSsgIHsg TUFTS19WU1gsIENPREVfRk9SX2Fic3Y0c2YyLCAiX19idWlsdGluX3ZzeF94dmFic3NwIiwgVlNY X0JVSUxUSU5fWFZBQlNTUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X25hYnN2NHNm MiwgIl9fYnVpbHRpbl92c3hfeHZuYWJzc3AiLCBWU1hfQlVJTFRJTl9YVk5BQlNTUCB9LAotIH07 Ci0gCi0gLyogU2ltcGxlIHVuYXJ5IG9wZXJhdGlvbnM6IFZFQ2IgPSBmb28gKHVuc2lnbmVkIGxp dGVyYWwpIG9yIFZFQ2IgPQotQEAgLTc4MDIsNiArODUxNSwxOCBAQCBzdGF0aWMgc3RydWN0IGJ1 aWx0aW5fZGVzY3JpcHRpb24gYmRlc2NfCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0 aXZlY192dXBrbHB4LCAiX19idWlsdGluX2FsdGl2ZWNfdnVwa2xweCIsIEFMVElWRUNfQlVJTFRJ Tl9WVVBLTFBYIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192dXBrbHNo LCAiX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzaCIsIEFMVElWRUNfQlVJTFRJTl9WVVBLTFNIIH0s Ci0gCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9uZWd2MmRmMiwgIl9fYnVpbHRpbl92c3hfeHZu ZWdkcCIsIFZTWF9CVUlMVElOX1hWTkVHRFAgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX3Nx cnR2MmRmMiwgIl9fYnVpbHRpbl92c3hfeHZzcXJ0ZHAiLCBWU1hfQlVJTFRJTl9YVlNRUlREUCB9 LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3JzcXJ0ZXYyZGYyLCAiX19idWlsdGluX3Zz eF94dnJzcXJ0ZWRwIiwgVlNYX0JVSUxUSU5fWFZSU1FSVEVEUCB9LAotKyAgeyBNQVNLX1ZTWCwg Q09ERV9GT1JfdnN4X3RzcXJ0djJkZjIsICJfX2J1aWx0aW5fdnN4X3h2dHNxcnRkcCIsIFZTWF9C VUlMVElOX1hWVFNRUlREUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2ZyZXYyZGYy LCAiX19idWlsdGluX3ZzeF94dnJlZHAiLCBWU1hfQlVJTFRJTl9YVlJFRFAgfSwKLSsKLSsgIHsg TUFTS19WU1gsIENPREVfRk9SX25lZ3Y0c2YyLCAiX19idWlsdGluX3ZzeF94dm5lZ3NwIiwgVlNY X0JVSUxUSU5fWFZORUdTUCB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jfc3FydHY0c2YyLCAi X19idWlsdGluX3ZzeF94dnNxcnRzcCIsIFZTWF9CVUlMVElOX1hWU1FSVFNQIH0sCi0rICB7IE1B U0tfVlNYLCBDT0RFX0ZPUl92c3hfcnNxcnRldjRzZjIsICJfX2J1aWx0aW5fdnN4X3h2cnNxcnRl c3AiLCBWU1hfQlVJTFRJTl9YVlJTUVJURVNQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92 c3hfdHNxcnR2NHNmMiwgIl9fYnVpbHRpbl92c3hfeHZ0c3FydHNwIiwgVlNYX0JVSUxUSU5fWFZU U1FSVFNQIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfZnJldjRzZjIsICJfX2J1aWx0 aW5fdnN4X3h2cmVzcCIsIFZTWF9CVUlMVElOX1hWUkVTUCB9LAotKwotICAgeyBNQVNLX0FMVElW RUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX2FicyIsIEFMVElWRUNfQlVJTFRJ Tl9WRUNfQUJTIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9fYnVp bHRpbl92ZWNfYWJzcyIsIEFMVElWRUNfQlVJTFRJTl9WRUNfQUJTUyB9LAotICAgeyBNQVNLX0FM VElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX2NlaWwiLCBBTFRJVkVDX0JV SUxUSU5fVkVDX0NFSUwgfSwKLUBAIC03ODIyLDYgKzg1NDcsMjAgQEAgc3RhdGljIHN0cnVjdCBi dWlsdGluX2Rlc2NyaXB0aW9uIGJkZXNjXwotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25v dGhpbmcsICJfX2J1aWx0aW5fdmVjX3Z1cGtsc2giLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZVUEtM U0ggfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3Zl Y192dXBrbHNiIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19WVVBLTFNCIH0sCi0gCi0rICB7IE1BU0tf QUxUSVZFQ3xNQVNLX1ZTWCwgQ09ERV9GT1JfZmxvYXR2NHNpdjRzZjIsICJfX2J1aWx0aW5fdmVj X2Zsb2F0X3Npc2YiLCBWRUNUT1JfQlVJTFRJTl9GTE9BVF9WNFNJX1Y0U0YgfSwKLSsgIHsgTUFT S19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl91bnNpZ25lZF9mbG9hdHY0c2l2NHNmMiwgIl9f YnVpbHRpbl92ZWNfdW5zX2Zsb2F0X3Npc2YiLCBWRUNUT1JfQlVJTFRJTl9VTlNGTE9BVF9WNFNJ X1Y0U0YgfSwKLSsgIHsgTUFTS19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl9maXhfdHJ1bmN2 NHNmdjRzaTIsICJfX2J1aWx0aW5fdmVjX2ZpeF9zZnNpIiwgVkVDVE9SX0JVSUxUSU5fRklYX1Y0 U0ZfVjRTSSB9LAotKyAgeyBNQVNLX0FMVElWRUN8TUFTS19WU1gsIENPREVfRk9SX2ZpeHVuc190 cnVuY3Y0c2Z2NHNpMiwgIl9fYnVpbHRpbl92ZWNfZml4dW5zX3Nmc2kiLCBWRUNUT1JfQlVJTFRJ Tl9GSVhVTlNfVjRTRl9WNFNJIH0sCi0rCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9mbG9hdHYy ZGl2MmRmMiwgIl9fYnVpbHRpbl92c3hfeHZjdnN4ZGRwIiwgVlNYX0JVSUxUSU5fWFZDVlNYRERQ IH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl91bnNpZ25lZF9mbG9hdHYyZGl2MmRmMiwgIl9f YnVpbHRpbl92c3hfeHZjdnV4ZGRwIiwgVlNYX0JVSUxUSU5fWFZDVlVYRERQIH0sCi0rICB7IE1B U0tfVlNYLCBDT0RFX0ZPUl9maXhfdHJ1bmN2MmRmdjJkaTIsICJfX2J1aWx0aW5fdnN4X3h2ZHBz eGRzIiwgVlNYX0JVSUxUSU5fWFZDVkRQU1hEUyB9LAotKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jf Zml4dW5zX3RydW5jdjJkZnYyZGkyLCAiX19idWlsdGluX3ZzeF94dmRwdXhkcyIsIFZTWF9CVUlM VElOX1hWQ1ZEUFVYRFMgfSwKLSsgIHsgTUFTS19WU1gsIENPREVfRk9SX2Zsb2F0djRzaXY0c2Yy LCAiX19idWlsdGluX3ZzeF94dmN2c3h3c3AiLCBWU1hfQlVJTFRJTl9YVkNWU1hEU1AgfSwKLSsg IHsgTUFTS19WU1gsIENPREVfRk9SX3Vuc2lnbmVkX2Zsb2F0djRzaXY0c2YyLCAiX19idWlsdGlu X3ZzeF94dmN2dXh3c3AiLCBWU1hfQlVJTFRJTl9YVkNWVVhXU1AgfSwKLSsgIHsgTUFTS19WU1gs IENPREVfRk9SX2ZpeF90cnVuY3Y0c2Z2NHNpMiwgIl9fYnVpbHRpbl92c3hfeHZzcHN4d3MiLCBW U1hfQlVJTFRJTl9YVkNWU1BTWFdTIH0sCi0rICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9maXh1bnNf dHJ1bmN2NHNmdjRzaTIsICJfX2J1aWx0aW5fdnN4X3h2c3B1eHdzIiwgVlNYX0JVSUxUSU5fWFZD VlNQVVhXUyB9LAotKwotICAgLyogVGhlIFNQRSB1bmFyeSBidWlsdGlucyBtdXN0IHN0YXJ0IHdp dGggU1BFX0JVSUxUSU5fRVZBQlMgYW5kCi0gICAgICBlbmQgd2l0aCBTUEVfQlVJTFRJTl9FVlNV QkZVU0lBQVcuICAqLwotICAgeyAwLCBDT0RFX0ZPUl9zcGVfZXZhYnMsICJfX2J1aWx0aW5fc3Bl X2V2YWJzIiwgU1BFX0JVSUxUSU5fRVZBQlMgfSwKLUBAIC04Mzc4LDE2ICs5MTE3LDE2IEBAIGFs dGl2ZWNfZXhwYW5kX2xkX2J1aWx0aW4gKHRyZWUgZXhwLCBydHgKLSAgIHN3aXRjaCAoZmNvZGUp Ci0gICAgIHsKLSAgICAgY2FzZSBBTFRJVkVDX0JVSUxUSU5fTERfSU5URVJOQUxfMTZxaToKLS0g ICAgICBpY29kZSA9IENPREVfRk9SX2FsdGl2ZWNfbHZ4X3YxNnFpOwotKyAgICAgIGljb2RlID0g Q09ERV9GT1JfdmVjdG9yX2xvYWRfdjE2cWk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgQUxU SVZFQ19CVUlMVElOX0xEX0lOVEVSTkFMXzhoaToKLS0gICAgICBpY29kZSA9IENPREVfRk9SX2Fs dGl2ZWNfbHZ4X3Y4aGk7Ci0rICAgICAgaWNvZGUgPSBDT0RFX0ZPUl92ZWN0b3JfbG9hZF92OGhp OwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIEFMVElWRUNfQlVJTFRJTl9MRF9JTlRFUk5BTF80 c2k6Ci0tICAgICAgaWNvZGUgPSBDT0RFX0ZPUl9hbHRpdmVjX2x2eF92NHNpOwotKyAgICAgIGlj b2RlID0gQ09ERV9GT1JfdmVjdG9yX2xvYWRfdjRzaTsKLSAgICAgICBicmVhazsKLSAgICAgY2Fz ZSBBTFRJVkVDX0JVSUxUSU5fTERfSU5URVJOQUxfNHNmOgotLSAgICAgIGljb2RlID0gQ09ERV9G T1JfYWx0aXZlY19sdnhfdjRzZjsKLSsgICAgICBpY29kZSA9IENPREVfRk9SX3ZlY3Rvcl9sb2Fk X3Y0c2Y7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgKmV4cGFuZGVkcCA9 IGZhbHNlOwotQEAgLTg0MzEsMTYgKzkxNzAsMTYgQEAgYWx0aXZlY19leHBhbmRfc3RfYnVpbHRp biAodHJlZSBleHAsIHJ0eAotICAgc3dpdGNoIChmY29kZSkKLSAgICAgewotICAgICBjYXNlIEFM VElWRUNfQlVJTFRJTl9TVF9JTlRFUk5BTF8xNnFpOgotLSAgICAgIGljb2RlID0gQ09ERV9GT1Jf YWx0aXZlY19zdHZ4X3YxNnFpOwotKyAgICAgIGljb2RlID0gQ09ERV9GT1JfdmVjdG9yX3N0b3Jl X3YxNnFpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIEFMVElWRUNfQlVJTFRJTl9TVF9JTlRF Uk5BTF84aGk6Ci0tICAgICAgaWNvZGUgPSBDT0RFX0ZPUl9hbHRpdmVjX3N0dnhfdjhoaTsKLSsg ICAgICBpY29kZSA9IENPREVfRk9SX3ZlY3Rvcl9zdG9yZV92OGhpOwotICAgICAgIGJyZWFrOwot ICAgICBjYXNlIEFMVElWRUNfQlVJTFRJTl9TVF9JTlRFUk5BTF80c2k6Ci0tICAgICAgaWNvZGUg PSBDT0RFX0ZPUl9hbHRpdmVjX3N0dnhfdjRzaTsKLSsgICAgICBpY29kZSA9IENPREVfRk9SX3Zl Y3Rvcl9zdG9yZV92NHNpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIEFMVElWRUNfQlVJTFRJ Tl9TVF9JTlRFUk5BTF80c2Y6Ci0tICAgICAgaWNvZGUgPSBDT0RFX0ZPUl9hbHRpdmVjX3N0dnhf djRzZjsKLSsgICAgICBpY29kZSA9IENPREVfRk9SX3ZlY3Rvcl9zdG9yZV92NHNmOwotICAgICAg IGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAgICpleHBhbmRlZHAgPSBmYWxzZTsKLUBAIC04 ODM1LDYgKzk1NzQsMjYgQEAgYWx0aXZlY19leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0 YQotIC8qIEV4cGFuZCB0aGUgYnVpbHRpbiBpbiBFWFAgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4g VEFSR0VULiAgU3RvcmUKLSAgICB0cnVlIGluICpFWFBBTkRFRFAgaWYgd2UgZm91bmQgYSBidWls dGluIHRvIGV4cGFuZC4gICovCi0gc3RhdGljIHJ0eAotK3ZzeF9leHBhbmRfYnVpbHRpbiAodHJl ZSBleHAsIHJ0eCB0YXJnZXQgQVRUUklCVVRFX1VOVVNFRCwgYm9vbCAqZXhwYW5kZWRwKQotK3sK LSsgIHRyZWUgZm5kZWNsID0gVFJFRV9PUEVSQU5EIChDQUxMX0VYUFJfRk4gKGV4cCksIDApOwot KyAgdW5zaWduZWQgaW50IGZjb2RlID0gREVDTF9GVU5DVElPTl9DT0RFIChmbmRlY2wpOwotKwot KyAgaWYgKGZjb2RlID49IFZTWF9CVUlMVElOX09WRVJMT0FERURfRklSU1QKLSsgICAgICAmJiBm Y29kZSA8PSBWU1hfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpCi0rICAgIHsKLSsgICAgICAqZXhw YW5kZWRwID0gdHJ1ZTsKLSsgICAgICBlcnJvciAoInVucmVzb2x2ZWQgb3ZlcmxvYWQgZm9yIHZz eCBidWlsdGluICVxRiIsIGZuZGVjbCk7Ci0rICAgICAgcmV0dXJuIGNvbnN0MF9ydHg7Ci0rICAg IH0KLSsKLSsgICpleHBhbmRlZHAgPSBmYWxzZTsKLSsgIHJldHVybiBOVUxMX1JUWDsKLSt9Ci0r Ci0rLyogRXhwYW5kIHRoZSBidWlsdGluIGluIEVYUCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiBU QVJHRVQuICBTdG9yZQotKyAgIHRydWUgaW4gKkVYUEFOREVEUCBpZiB3ZSBmb3VuZCBhIGJ1aWx0 aW4gdG8gZXhwYW5kLiAgKi8KLStzdGF0aWMgcnR4Ci0gcGFpcmVkX2V4cGFuZF9idWlsdGluICh0 cmVlIGV4cCwgcnR4IHRhcmdldCwgYm9vbCAqIGV4cGFuZGVkcCkKLSB7Ci0gICB0cmVlIGZuZGVj bCA9IFRSRUVfT1BFUkFORCAoQ0FMTF9FWFBSX0ZOIChleHApLCAwKTsKLUBAIC05MzQ2LDYgKzEw MTA1LDEzIEBAIHJzNjAwMF9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0YXIKLSAgICAg ICBpZiAoc3VjY2VzcykKLSAJcmV0dXJuIHJldDsKLSAgICAgfQotKyAgaWYgKFRBUkdFVF9WU1gp Ci0rICAgIHsKLSsgICAgICByZXQgPSB2c3hfZXhwYW5kX2J1aWx0aW4gKGV4cCwgdGFyZ2V0LCAm c3VjY2Vzcyk7Ci0rCi0rICAgICAgaWYgKHN1Y2Nlc3MpCi0rCXJldHVybiByZXQ7Ci0rICAgIH0K LSAgIGlmIChUQVJHRVRfU1BFKQotICAgICB7Ci0gICAgICAgcmV0ID0gc3BlX2V4cGFuZF9idWls dGluIChleHAsIHRhcmdldCwgJnN1Y2Nlc3MpOwotQEAgLTkzNjEsNyArMTAxMjcsNyBAQCByczYw MDBfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyCi0gCXJldHVybiByZXQ7Ci0gICAg IH0gIAotIAotLSAgZ2NjX2Fzc2VydCAoVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VUX1NQRSB8fCBU QVJHRVRfUEFJUkVEX0ZMT0FUKTsKLSsgIGdjY19hc3NlcnQgKFRBUkdFVF9BTFRJVkVDIHx8IFRB UkdFVF9WU1ggfHwgVEFSR0VUX1NQRSB8fCBUQVJHRVRfUEFJUkVEX0ZMT0FUKTsKLSAKLSAgIC8q IEhhbmRsZSBzaW1wbGUgdW5hcnkgb3BlcmF0aW9ucy4gICovCi0gICBkID0gKHN0cnVjdCBidWls dGluX2Rlc2NyaXB0aW9uICopIGJkZXNjXzFhcmc7Ci1AQCAtOTM5OCw2ICsxMDE2NCw4IEBAIHJz NjAwMF9pbml0X2J1aWx0aW5zICh2b2lkKQotIHsKLSAgIFYyU0lfdHlwZV9ub2RlID0gYnVpbGRf dmVjdG9yX3R5cGUgKGludFNJX3R5cGVfbm9kZSwgMik7Ci0gICBWMlNGX3R5cGVfbm9kZSA9IGJ1 aWxkX3ZlY3Rvcl90eXBlIChmbG9hdF90eXBlX25vZGUsIDIpOwotKyAgVjJESV90eXBlX25vZGUg PSBidWlsZF92ZWN0b3JfdHlwZSAoaW50RElfdHlwZV9ub2RlLCAyKTsKLSsgIFYyREZfdHlwZV9u b2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKGRvdWJsZV90eXBlX25vZGUsIDIpOwotICAgVjRISV90 eXBlX25vZGUgPSBidWlsZF92ZWN0b3JfdHlwZSAoaW50SElfdHlwZV9ub2RlLCA0KTsKLSAgIFY0 U0lfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKGludFNJX3R5cGVfbm9kZSwgNCk7Ci0g ICBWNFNGX3R5cGVfbm9kZSA9IGJ1aWxkX3ZlY3Rvcl90eXBlIChmbG9hdF90eXBlX25vZGUsIDQp OwotQEAgLTk0MzAsNyArMTAxOTgsMTAgQEAgcnM2MDAwX2luaXRfYnVpbHRpbnMgKHZvaWQpCi0g ICB1aW50SElfdHlwZV9pbnRlcm5hbF9ub2RlID0gdW5zaWduZWRfaW50SElfdHlwZV9ub2RlOwot ICAgaW50U0lfdHlwZV9pbnRlcm5hbF9ub2RlID0gaW50U0lfdHlwZV9ub2RlOwotICAgdWludFNJ X3R5cGVfaW50ZXJuYWxfbm9kZSA9IHVuc2lnbmVkX2ludFNJX3R5cGVfbm9kZTsKLSsgIGludERJ X3R5cGVfaW50ZXJuYWxfbm9kZSA9IGludERJX3R5cGVfbm9kZTsKLSsgIHVpbnRESV90eXBlX2lu dGVybmFsX25vZGUgPSB1bnNpZ25lZF9pbnRESV90eXBlX25vZGU7Ci0gICBmbG9hdF90eXBlX2lu dGVybmFsX25vZGUgPSBmbG9hdF90eXBlX25vZGU7Ci0rICBkb3VibGVfdHlwZV9pbnRlcm5hbF9u b2RlID0gZmxvYXRfdHlwZV9ub2RlOwotICAgdm9pZF90eXBlX2ludGVybmFsX25vZGUgPSB2b2lk X3R5cGVfbm9kZTsKLSAKLSAgICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVjbCkgKGJ1aWxkX2Rl Y2wgKFRZUEVfREVDTCwKLUBAIC05NDg4LDEzICsxMDI1OSwxOCBAQCByczYwMDBfaW5pdF9idWls dGlucyAodm9pZCkKLSAJCQkJCSAgICBnZXRfaWRlbnRpZmllciAoIl9fdmVjdG9yIF9fcGl4ZWwi KSwKLSAJCQkJCSAgICBwaXhlbF9WOEhJX3R5cGVfbm9kZSkpOwotIAotKyAgaWYgKFRBUkdFVF9W U1gpCi0rICAgICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVjbCkgKGJ1aWxkX2RlY2wgKFRZUEVf REVDTCwKLSsJCQkJCSAgICAgIGdldF9pZGVudGlmaWVyICgiX192ZWN0b3IgZG91YmxlIiksCi0r CQkJCQkgICAgICBWMkRGX3R5cGVfbm9kZSkpOwotKwotICAgaWYgKFRBUkdFVF9QQUlSRURfRkxP QVQpCi0gICAgIHBhaXJlZF9pbml0X2J1aWx0aW5zICgpOwotICAgaWYgKFRBUkdFVF9TUEUpCi0g ICAgIHNwZV9pbml0X2J1aWx0aW5zICgpOwotICAgaWYgKFRBUkdFVF9BTFRJVkVDKQotICAgICBh bHRpdmVjX2luaXRfYnVpbHRpbnMgKCk7Ci0tICBpZiAoVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VU X1NQRSB8fCBUQVJHRVRfUEFJUkVEX0ZMT0FUKQotKyAgaWYgKFRBUkdFVF9BTFRJVkVDIHx8IFRB UkdFVF9TUEUgfHwgVEFSR0VUX1BBSVJFRF9GTE9BVCB8fCBUQVJHRVRfVlNYKQotICAgICByczYw MDBfY29tbW9uX2luaXRfYnVpbHRpbnMgKCk7Ci0gICBpZiAoVEFSR0VUX1BQQ19HRlhPUFQpCi0g ICAgIHsKLUBAIC05OTU3LDYgKzEwNzMzLDggQEAgYWx0aXZlY19pbml0X2J1aWx0aW5zICh2b2lk KQotICAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjE2UUlfdHlwZV9ub2RlLCBWMTZR SV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0gICB0cmVlIHY0c2ZfZnR5cGVfdjRzZgotICAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTRl90eXBlX25vZGUsIFY0U0ZfdHlwZV9ub2Rl LCBOVUxMX1RSRUUpOwotKyAgdHJlZSB2MmRmX2Z0eXBlX3YyZGYKLSsgICAgPSBidWlsZF9mdW5j dGlvbl90eXBlX2xpc3QgKFYyREZfdHlwZV9ub2RlLCBWMkRGX3R5cGVfbm9kZSwgTlVMTF9UUkVF KTsKLSAgIHRyZWUgdm9pZF9mdHlwZV9wY3ZvaWRfaW50X2ludAotICAgICA9IGJ1aWxkX2Z1bmN0 aW9uX3R5cGVfbGlzdCAodm9pZF90eXBlX25vZGUsCi0gCQkJCXBjdm9pZF90eXBlX25vZGUsIGlu dGVnZXJfdHlwZV9ub2RlLAotQEAgLTEwMTE0LDYgKzEwODkyLDkgQEAgYWx0aXZlY19pbml0X2J1 aWx0aW5zICh2b2lkKQotIAljYXNlIFY0U0Ztb2RlOgotIAkgIHR5cGUgPSB2NHNmX2Z0eXBlX3Y0 c2Y7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgVjJERm1vZGU6Ci0rCSAgdHlwZSA9IHYyZGZfZnR5cGVf djJkZjsKLSsJICBicmVhazsKLSAJZGVmYXVsdDoKLSAJICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0g CX0KLUBAIC0xMDQzMyw2ICsxMTIxNCwzOCBAQCByczYwMDBfY29tbW9uX2luaXRfYnVpbHRpbnMg KHZvaWQpCi0gICB0cmVlIGludF9mdHlwZV92OGhpX3Y4aGkKLSAgICAgPSBidWlsZF9mdW5jdGlv bl90eXBlX2xpc3QgKGludGVnZXJfdHlwZV9ub2RlLAotIAkJCQlWOEhJX3R5cGVfbm9kZSwgVjhI SV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0rICB0cmVlIHYyZGlfZnR5cGVfdjJkZgotKyAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJESV90eXBlX25vZGUsCi0rCQkJCVYyREZfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOwotKyAgdHJlZSB2MmRmX2Z0eXBlX3YyZGYKLSsgICAgPSBidWls ZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYyREZfdHlwZV9ub2RlLAotKwkJCQlWMkRGX3R5cGVfbm9k ZSwgTlVMTF9UUkVFKTsKLSsgIHRyZWUgdjJkZl9mdHlwZV92MmRpCi0rICAgID0gYnVpbGRfZnVu Y3Rpb25fdHlwZV9saXN0IChWMkRGX3R5cGVfbm9kZSwKLSsJCQkJVjJESV90eXBlX25vZGUsIE5V TExfVFJFRSk7Ci0rICB0cmVlIHYyZGZfZnR5cGVfdjJkZl92MmRmCi0rICAgID0gYnVpbGRfZnVu Y3Rpb25fdHlwZV9saXN0IChWMkRGX3R5cGVfbm9kZSwKLSsJCQkJVjJERl90eXBlX25vZGUsIFYy REZfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotKyAgdHJlZSB2MmRmX2Z0eXBlX3YyZGZfdjJkZl92 MmRmCi0rICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMkRGX3R5cGVfbm9kZSwKLSsJ CQkJVjJERl90eXBlX25vZGUsIFYyREZfdHlwZV9ub2RlLAotKwkJCQlWMkRGX3R5cGVfbm9kZSwg TlVMTF9UUkVFKTsKLSsgIHRyZWUgdjJkaV9mdHlwZV92MmRpX3YyZGlfdjJkaQotKyAgICA9IGJ1 aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJESV90eXBlX25vZGUsCi0rCQkJCVYyRElfdHlwZV9u b2RlLCBWMkRJX3R5cGVfbm9kZSwKLSsJCQkJVjJESV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0r ICB0cmVlIHYyZGZfZnR5cGVfdjJkZl92MmRmX3YxNnFpCi0rICAgID0gYnVpbGRfZnVuY3Rpb25f dHlwZV9saXN0IChWMkRGX3R5cGVfbm9kZSwKLSsJCQkJVjJERl90eXBlX25vZGUsIFYyREZfdHlw ZV9ub2RlLAotKwkJCQlWMTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0rICB0cmVlIHYyZGlf ZnR5cGVfdjJkaV92MmRpX3YxNnFpCi0rICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChW MkRJX3R5cGVfbm9kZSwKLSsJCQkJVjJESV90eXBlX25vZGUsIFYyRElfdHlwZV9ub2RlLAotKwkJ CQlWMTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0rICB0cmVlIHY0c2ZfZnR5cGVfdjRzaQot KyAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTRl90eXBlX25vZGUsIFY0U0lfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOwotKyAgdHJlZSB2NHNpX2Z0eXBlX3Y0c2YKLSsgICAgPSBidWls ZF9mdW5jdGlvbl90eXBlX2xpc3QgKFY0U0lfdHlwZV9ub2RlLCBWNFNGX3R5cGVfbm9kZSwgTlVM TF9UUkVFKTsKLSAKLSAgIC8qIEFkZCB0aGUgc2ltcGxlIHRlcm5hcnkgb3BlcmF0b3JzLiAgKi8K LSAgIGQgPSBiZGVzY18zYXJnOwotQEAgLTEwNDY5LDYgKzExMjgyLDEyIEBAIHJzNjAwMF9jb21t b25faW5pdF9idWlsdGlucyAodm9pZCkKLSAJICAgIGNhc2UgVk9JRG1vZGU6Ci0gCSAgICAgIHR5 cGUgPSBvcGFxdWVfZnR5cGVfb3BhcXVlX29wYXF1ZV9vcGFxdWU7Ci0gCSAgICAgIGJyZWFrOwot KwkgICAgY2FzZSBWMkRJbW9kZToKLSsJICAgICAgdHlwZSA9IHYyZGlfZnR5cGVfdjJkaV92MmRp X3YyZGk7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgY2FzZSBWMkRGbW9kZToKLSsJICAgICAgdHlw ZSA9IHYyZGZfZnR5cGVfdjJkZl92MmRmX3YyZGY7Ci0rCSAgICAgIGJyZWFrOwotIAkgICAgY2Fz ZSBWNFNJbW9kZToKLSAJICAgICAgdHlwZSA9IHY0c2lfZnR5cGVfdjRzaV92NHNpX3Y0c2k7Ci0g CSAgICAgIGJyZWFrOwotQEAgLTEwNDkyLDYgKzExMzExLDEyIEBAIHJzNjAwMF9jb21tb25faW5p dF9idWlsdGlucyAodm9pZCkKLSAJewotIAkgIHN3aXRjaCAobW9kZTApCi0gCSAgICB7Ci0rCSAg ICBjYXNlIFYyREltb2RlOgotKwkgICAgICB0eXBlID0gdjJkaV9mdHlwZV92MmRpX3YyZGlfdjE2 cWk7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgY2FzZSBWMkRGbW9kZToKLSsJICAgICAgdHlwZSA9 IHYyZGZfZnR5cGVfdjJkZl92MmRmX3YxNnFpOwotKwkgICAgICBicmVhazsKLSAJICAgIGNhc2Ug VjRTSW1vZGU6Ci0gCSAgICAgIHR5cGUgPSB2NHNpX2Z0eXBlX3Y0c2lfdjRzaV92MTZxaTsKLSAJ ICAgICAgYnJlYWs7Ci1AQCAtMTA1NzcsNiArMTE0MDIsOSBAQCByczYwMDBfY29tbW9uX2luaXRf YnVpbHRpbnMgKHZvaWQpCi0gCSAgICBjYXNlIFZPSURtb2RlOgotIAkgICAgICB0eXBlID0gb3Bh cXVlX2Z0eXBlX29wYXF1ZV9vcGFxdWU7Ci0gCSAgICAgIGJyZWFrOwotKwkgICAgY2FzZSBWMkRG bW9kZToKLSsJICAgICAgdHlwZSA9IHYyZGZfZnR5cGVfdjJkZl92MmRmOwotKwkgICAgICBicmVh azsKLSAJICAgIGNhc2UgVjRTRm1vZGU6Ci0gCSAgICAgIHR5cGUgPSB2NHNmX2Z0eXBlX3Y0c2Zf djRzZjsKLSAJICAgICAgYnJlYWs7Ci1AQCAtMTA3MjYsNiArMTE1NTQsOCBAQCByczYwMDBfY29t bW9uX2luaXRfYnVpbHRpbnMgKHZvaWQpCi0gCXR5cGUgPSB2MTZxaV9mdHlwZV9pbnQ7Ci0gICAg ICAgZWxzZSBpZiAobW9kZTAgPT0gVk9JRG1vZGUgJiYgbW9kZTEgPT0gVk9JRG1vZGUpCi0gCXR5 cGUgPSBvcGFxdWVfZnR5cGVfb3BhcXVlOwotKyAgICAgIGVsc2UgaWYgKG1vZGUwID09IFYyREZt b2RlICYmIG1vZGUxID09IFYyREZtb2RlKQotKwl0eXBlID0gdjJkZl9mdHlwZV92MmRmOwotICAg ICAgIGVsc2UgaWYgKG1vZGUwID09IFY0U0Ztb2RlICYmIG1vZGUxID09IFY0U0Ztb2RlKQotIAl0 eXBlID0gdjRzZl9mdHlwZV92NHNmOwotICAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY4SEltb2Rl ICYmIG1vZGUxID09IFYxNlFJbW9kZSkKLUBAIC0xMDc0Nyw2ICsxMTU3NywxNCBAQCByczYwMDBf Y29tbW9uX2luaXRfYnVpbHRpbnMgKHZvaWQpCi0gCXR5cGUgPSB2MnNpX2Z0eXBlX3Yyc2Y7Ci0g ICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYgbW9kZTEgPT0gUUltb2RlKQotIAl0 eXBlID0gdjJzaV9mdHlwZV9jaGFyOwotKyAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY0U0ltb2Rl ICYmIG1vZGUxID09IFY0U0Ztb2RlKQotKwl0eXBlID0gdjRzaV9mdHlwZV92NHNmOwotKyAgICAg IGVsc2UgaWYgKG1vZGUwID09IFY0U0Ztb2RlICYmIG1vZGUxID09IFY0U0ltb2RlKQotKwl0eXBl ID0gdjRzZl9mdHlwZV92NHNpOwotKyAgICAgIGVsc2UgaWYgKG1vZGUwID09IFYyREltb2RlICYm IG1vZGUxID09IFYyREZtb2RlKQotKwl0eXBlID0gdjJkaV9mdHlwZV92MmRmOwotKyAgICAgIGVs c2UgaWYgKG1vZGUwID09IFYyREZtb2RlICYmIG1vZGUxID09IFYyREltb2RlKQotKwl0eXBlID0g djJkZl9mdHlwZV92MmRpOwotICAgICAgIGVsc2UKLSAJZ2NjX3VucmVhY2hhYmxlICgpOwotIAot QEAgLTExNTI5LDggKzEyMzY3LDEwIEBAIHJ0eAotIHJzNjAwMF9zZWNvbmRhcnlfbWVtb3J5X25l ZWRlZF9ydHggKGVudW0gbWFjaGluZV9tb2RlIG1vZGUpCi0gewotICAgc3RhdGljIGJvb2wgZWxp bWluYXRlZCA9IGZhbHNlOwotKyAgcnR4IHJldDsKLSsKLSAgIGlmIChtb2RlICE9IFNEbW9kZSkK LS0gICAgcmV0dXJuIGFzc2lnbl9zdGFja19sb2NhbCAobW9kZSwgR0VUX01PREVfU0laRSAobW9k ZSksIDApOwotKyAgICByZXQgPSBhc3NpZ25fc3RhY2tfbG9jYWwgKG1vZGUsIEdFVF9NT0RFX1NJ WkUgKG1vZGUpLCAwKTsKLSAgIGVsc2UKLSAgICAgewotICAgICAgIHJ0eCBtZW0gPSBjZnVuLT5t YWNoaW5lLT5zZG1vZGVfc3RhY2tfc2xvdDsKLUBAIC0xMTU0Miw4ICsxMjM4MiwyMSBAQCByczYw MDBfc2Vjb25kYXJ5X21lbW9yeV9uZWVkZWRfcnR4IChlbnVtCi0gCSAgY2Z1bi0+bWFjaGluZS0+ c2Rtb2RlX3N0YWNrX3Nsb3QgPSBtZW07Ci0gCSAgZWxpbWluYXRlZCA9IHRydWU7Ci0gCX0KLS0g ICAgICByZXR1cm4gbWVtOwotKyAgICAgIHJldCA9IG1lbTsKLSsgICAgfQotKwotKyAgaWYgKFRB UkdFVF9ERUJVR19BRERSKQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAicnM2MDAw X3NlY29uZGFyeV9tZW1vcnlfbmVlZGVkX3J0eCwgbW9kZSAlcywgcnR4OlxuIiwKLSsJICAgICAg IEdFVF9NT0RFX05BTUUgKG1vZGUpKTsKLSsgICAgICBpZiAoIXJldCkKLSsJZnByaW50ZiAoc3Rk ZXJyLCAiXHROVUxMX1JUWFxuIik7Ci0rICAgICAgZWxzZQotKwlkZWJ1Z19ydHggKHJldCk7Ci0r ICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKLSAgICAgfQotKwotKyAgcmV0dXJuIHJldDsK LSB9Ci0gCi0gc3RhdGljIHRyZWUKLUBAIC0xMTU3Nyw2ICsxMjQzMCwyODIgQEAgcnM2MDAwX2No ZWNrX3NkbW9kZSAodHJlZSAqdHAsIGludCAqd2FsawotICAgcmV0dXJuIE5VTExfVFJFRTsKLSB9 Ci0gCi0rZW51bSByZWxvYWRfcmVnX3R5cGUgewotKyAgR1BSX1JFR0lTVEVSX1RZUEUsCi0rICBW RUNUT1JfUkVHSVNURVJfVFlQRSwKLSsgIE9USEVSX1JFR0lTVEVSX1RZUEUKLSt9OwotKwotK3N0 YXRpYyBlbnVtIHJlbG9hZF9yZWdfdHlwZQotK3JzNjAwMF9yZWxvYWRfcmVnaXN0ZXJfdHlwZSAo ZW51bSByZWdfY2xhc3MgcmNsYXNzKQotK3sKLSsgIHN3aXRjaCAocmNsYXNzKQotKyAgICB7Ci0r ICAgIGNhc2UgR0VORVJBTF9SRUdTOgotKyAgICBjYXNlIEJBU0VfUkVHUzoKLSsgICAgICByZXR1 cm4gR1BSX1JFR0lTVEVSX1RZUEU7Ci0rCi0rICAgIGNhc2UgRkxPQVRfUkVHUzoKLSsgICAgY2Fz ZSBBTFRJVkVDX1JFR1M6Ci0rICAgIGNhc2UgVlNYX1JFR1M6Ci0rICAgICAgcmV0dXJuIFZFQ1RP Ul9SRUdJU1RFUl9UWVBFOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVybiBPVEhFUl9S RUdJU1RFUl9UWVBFOwotKyAgICB9Ci0rfQotKwotKy8qIEluZm9ybSByZWxvYWQgYWJvdXQgY2Fz ZXMgd2hlcmUgbW92aW5nIFggd2l0aCBhIG1vZGUgTU9ERSB0byBhIHJlZ2lzdGVyIGluCi0rICAg UkNMQVNTIHJlcXVpcmVzIGFuIGV4dHJhIHNjcmF0Y2ggb3IgaW1tZWRpYXRlIHJlZ2lzdGVyLiAg UmV0dXJuIHRoZSBjbGFzcwotKyAgIG5lZWRlZCBmb3IgdGhlIGltbWVkaWF0ZSByZWdpc3Rlci4K LSsKLSsgICBGb3IgVlNYIGFuZCBBbHRpdmVjLCB3ZSBtYXkgbmVlZCBhIHJlZ2lzdGVyIHRvIGNv bnZlcnQgc3Arb2Zmc2V0IGludG8KLSsgICByZWcrc3AuICAqLwotKwotK3N0YXRpYyBlbnVtIHJl Z19jbGFzcwotK3JzNjAwMF9zZWNvbmRhcnlfcmVsb2FkIChib29sIGluX3AsCi0rCQkJIHJ0eCB4 LAotKwkJCSBlbnVtIHJlZ19jbGFzcyByY2xhc3MsCi0rCQkJIGVudW0gbWFjaGluZV9tb2RlIG1v ZGUsCi0rCQkJIHNlY29uZGFyeV9yZWxvYWRfaW5mbyAqc3JpKQotK3sKLSsgIGVudW0gcmVnX2Ns YXNzIHJldDsKLSsgIGVudW0gaW5zbl9jb2RlIGljb2RlOwotKwotKyAgLyogQ29udmVydCB2ZWN0 b3IgbG9hZHMgYW5kIHN0b3JlcyBpbnRvIGdwcnMgdG8gdXNlIGFuIGFkZGl0aW9uYWwgYmFzZQot KyAgICAgcmVnaXN0ZXIuICAqLwotKyAgaWNvZGUgPSByczYwMDBfdmVjdG9yX3JlbG9hZFttb2Rl XVtpbl9wICE9IGZhbHNlXTsKLSsgIGlmIChpY29kZSAhPSBDT0RFX0ZPUl9ub3RoaW5nKQotKyAg ICB7Ci0rICAgICAgcmV0ID0gTk9fUkVHUzsKLSsgICAgICBzcmktPmljb2RlID0gQ09ERV9GT1Jf bm90aGluZzsKLSsgICAgICBzcmktPmV4dHJhX2Nvc3QgPSAwOwotKwotKyAgICAgIGlmIChHRVRf Q09ERSAoeCkgPT0gTUVNKQotKwl7Ci0rCSAgcnR4IGFkZHIgPSBYRVhQICh4LCAwKTsKLSsKLSsJ ICAvKiBMb2FkcyB0byBhbmQgc3RvcmVzIGZyb20gZ3BycyBjYW4gZG8gcmVnK29mZnNldCwgYW5k IHdvdWxkbid0IG5lZWQKLSsJICAgICBhbiBleHRyYSByZWdpc3RlciBpbiB0aGF0IGNhc2UsIGJ1 dCBpdCB3b3VsZCBuZWVkIGFuIGV4dHJhCi0rCSAgICAgcmVnaXN0ZXIgaWYgdGhlIGFkZHJlc3Np bmcgaXMgcmVnK3JlZyBvciAocmVnK3JlZykmKC0xNikuICAqLwotKwkgIGlmIChyY2xhc3MgPT0g R0VORVJBTF9SRUdTIHx8IHJjbGFzcyA9PSBCQVNFX1JFR1MpCi0rCSAgICB7Ci0rCSAgICAgIGlm ICghIHJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AgKFRJbW9kZSwgYWRkciwgdHJ1 ZSkpCi0rCQl7Ci0rCQkgIHNyaS0+aWNvZGUgPSBpY29kZTsKLSsJCSAgLyogYWNjb3VudCBmb3Ig c3BsaXR0aW5nIHRoZSBsb2FkcywgYW5kIGNvbnZlcnRpbmcgdGhlCi0rCQkgICAgIGFkZHJlc3Mg ZnJvbSByZWcrcmVnIHRvIHJlZy4gICovCi0rCQkgIHNyaS0+ZXh0cmFfY29zdCA9ICgoKFRBUkdF VF82NEJJVCkgPyAzIDogNSkKLSsJCQkJICAgICArICgoR0VUX0NPREUgKGFkZHIpID09IEFORCkg PyAxIDogMCkpOwotKwkJfQotKwkgICAgfQotKwkgIC8qIExvYWRzIHRvIGFuZCBzdG9yZXMgZnJv bSB2ZWN0b3IgcmVnaXN0ZXJzIGNhbiBvbmx5IGRvIHJlZytyZWcKLSsJICAgICBhZGRyZXNzaW5n LiAgQWx0aXZlYyByZWdpc3RlcnMgY2FuIGFsc28gZG8gKHJlZytyZWcpJigtMTYpLiAgKi8KLSsJ ICBlbHNlIGlmIChyY2xhc3MgPT0gVlNYX1JFR1MgfHwgcmNsYXNzID09IEFMVElWRUNfUkVHUwot KwkJICAgfHwgcmNsYXNzID09IEZMT0FUX1JFR1MpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChyY2xh c3MgIT0gQUxUSVZFQ19SRUdTCi0rCQkgICYmIEdFVF9DT0RFIChhZGRyKSA9PSBBTkQKLSsJCSAg JiYgR0VUX0NPREUgKFhFWFAgKGFkZHIsIDEpKSA9PSBDT05TVF9JTlQKLSsJCSAgJiYgSU5UVkFM IChYRVhQIChhZGRyLCAxKSkgPT0gLTE2Ci0rCQkgICYmIChsZWdpdGltYXRlX2luZGlyZWN0X2Fk ZHJlc3NfcCAoWEVYUCAoYWRkciwgMCksIHRydWUpCi0rCQkgICAgICB8fCBsZWdpdGltYXRlX2lu ZGV4ZWRfYWRkcmVzc19wIChYRVhQIChhZGRyLCAwKSwgdHJ1ZSkpKQotKwkJewotKwkJICBzcmkt Pmljb2RlID0gaWNvZGU7Ci0rCQkgIHNyaS0+ZXh0cmFfY29zdCA9ICgoR0VUX0NPREUgKFhFWFAg KGFkZHIsIDApKSA9PSBQTFVTKQotKwkJCQkgICAgID8gMiA6IDEpOwotKwkJfQotKwkgICAgICBl bHNlIGlmICghbGVnaXRpbWF0ZV9pbmRleGVkX2FkZHJlc3NfcCAoYWRkciwgdHJ1ZSkKLSsJCSAg ICAgICAmJiAhbGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHIsIHRydWUpKQotKwkJ ewotKwkJICBzcmktPmljb2RlID0gaWNvZGU7Ci0rCQkgIHNyaS0+ZXh0cmFfY29zdCA9IDE7Ci0r CQl9Ci0rCSAgICAgIGVsc2UKLSsJCWljb2RlID0gQ09ERV9GT1Jfbm90aGluZzsKLSsJICAgIH0K LSsJICAvKiBBbnkgb3RoZXIgbG9hZHMsIGluY2x1ZGluZyB0byBwc2V1ZG8gcmVnaXN0ZXJzIHdo aWNoIGhhdmVuJ3QgYmVlbgotKwkgICAgIGFzc2lnbmVkIHRvIGEgcmVnaXN0ZXIgeWV0LCBkZWZh dWx0IHRvIHJlcXVpcmUgYSBzY3JhdGNoCi0rCSAgICAgcmVnaXN0ZXIuICAqLwotKwkgIGVsc2UK LSsJICAgIHsKLSsJICAgICAgc3JpLT5pY29kZSA9IGljb2RlOwotKwkgICAgICBzcmktPmV4dHJh X2Nvc3QgPSAyOwotKwkgICAgfQotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaW50IHJlZ25v ID0gdHJ1ZV9yZWdudW0gKHgpOwotKwotKwkgIGljb2RlID0gQ09ERV9GT1Jfbm90aGluZzsKLSsJ ICBpZiAocmVnbm8gPCAwIHx8IHJlZ25vID49IEZJUlNUX1BTRVVET19SRUdJU1RFUikKLSsJICAg IHJldCA9IGRlZmF1bHRfc2Vjb25kYXJ5X3JlbG9hZCAoaW5fcCwgeCwgcmNsYXNzLCBtb2RlLCBz cmkpOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgZW51bSByZWdfY2xhc3MgeGNsYXNzID0g UkVHTk9fUkVHX0NMQVNTIChyZWdubyk7Ci0rCSAgICAgIGVudW0gcmVsb2FkX3JlZ190eXBlIHJ0 eXBlMSA9IHJzNjAwMF9yZWxvYWRfcmVnaXN0ZXJfdHlwZSAocmNsYXNzKTsKLSsJICAgICAgZW51 bSByZWxvYWRfcmVnX3R5cGUgcnR5cGUyID0gcnM2MDAwX3JlbG9hZF9yZWdpc3Rlcl90eXBlICh4 Y2xhc3MpOwotKwotKwkgICAgICAvKiBJZiBtZW1vcnkgaXMgbmVlZGVkLCB1c2UgZGVmYXVsdF9z ZWNvbmRhcnlfcmVsb2FkIHRvIGNyZWF0ZSB0aGUKLSsJCSBzdGFjayBzbG90LiAgKi8KLSsJICAg ICAgaWYgKHJ0eXBlMSAhPSBydHlwZTIgfHwgcnR5cGUxID09IE9USEVSX1JFR0lTVEVSX1RZUEUp Ci0rCQlyZXQgPSBkZWZhdWx0X3NlY29uZGFyeV9yZWxvYWQgKGluX3AsIHgsIHJjbGFzcywgbW9k ZSwgc3JpKTsKLSsJICAgICAgZWxzZQotKwkJcmV0ID0gTk9fUkVHUzsKLSsJICAgIH0KLSsJfQot KyAgICB9Ci0rICBlbHNlCi0rICAgIHJldCA9IGRlZmF1bHRfc2Vjb25kYXJ5X3JlbG9hZCAoaW5f cCwgeCwgcmNsYXNzLCBtb2RlLCBzcmkpOwotKwotKyAgaWYgKFRBUkdFVF9ERUJVR19BRERSKQot KyAgICB7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLAotKwkgICAgICAgInJzNjAwMF9zZWNvbmRh cnlfcmVsb2FkLCByZXR1cm4gJXMsIGluX3AgPSAlcywgcmNsYXNzID0gJXMsICIKLSsJICAgICAg ICJtb2RlID0gJXMiLAotKwkgICAgICAgcmVnX2NsYXNzX25hbWVzW3JldF0sCi0rCSAgICAgICBp bl9wID8gInRydWUiIDogImZhbHNlIiwKLSsJICAgICAgIHJlZ19jbGFzc19uYW1lc1tyY2xhc3Nd LAotKwkgICAgICAgR0VUX01PREVfTkFNRSAobW9kZSkpOwotKwotKyAgICAgIGlmIChpY29kZSAh PSBDT0RFX0ZPUl9ub3RoaW5nKQotKwlmcHJpbnRmIChzdGRlcnIsICIsIHJlbG9hZCBmdW5jID0g JXMsIGV4dHJhIGNvc3QgPSAlZFxuIiwKLSsJCSBpbnNuX2RhdGFbaWNvZGVdLm5hbWUsIHNyaS0+ ZXh0cmFfY29zdCk7Ci0rICAgICAgZWxzZQotKwlmcHJpbnRmIChzdGRlcnIsICJcbiIpOwotKwot KyAgICAgIGRlYnVnX3J0eCAoeCk7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKLSsg ICAgfQotKwotKyAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyogRml4dXAgcmVsb2FkIGFkZHJlc3Nl cyBmb3IgQWx0aXZlYyBvciBWU1ggbG9hZHMvc3RvcmVzIHRvIGNoYW5nZSBTUCtvZmZzZXQKLSsg ICB0byBTUCtyZWcgYWRkcmVzc2luZy4gICovCi0rCi0rdm9pZAotK3JzNjAwMF9zZWNvbmRhcnlf cmVsb2FkX2lubmVyIChydHggcmVnLCBydHggbWVtLCBydHggc2NyYXRjaCwgYm9vbCBzdG9yZV9w KQotK3sKLSsgIGludCByZWdubyA9IHRydWVfcmVnbnVtIChyZWcpOwotKyAgZW51bSBtYWNoaW5l X21vZGUgbW9kZSA9IEdFVF9NT0RFIChyZWcpOwotKyAgZW51bSByZWdfY2xhc3MgcmNsYXNzOwot KyAgcnR4IGFkZHI7Ci0rICBydHggYW5kX29wMiA9IE5VTExfUlRYOwotKwotKyAgaWYgKFRBUkdF VF9ERUJVR19BRERSKQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAicnM2MDAwX3Nl Y29uZGFyeV9yZWxvYWRfaW5uZXIsIHR5cGUgPSAlc1xuIiwKLSsJICAgICAgIHN0b3JlX3AgPyAi c3RvcmUiIDogImxvYWQiKTsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJyZWc6XG4iKTsKLSsg ICAgICBkZWJ1Z19ydHggKHJlZyk7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAibWVtOlxuIik7 Ci0rICAgICAgZGVidWdfcnR4IChtZW0pOwotKyAgICAgIGZwcmludGYgKHN0ZGVyciwgInNjcmF0 Y2g6XG4iKTsKLSsgICAgICBkZWJ1Z19ydHggKHNjcmF0Y2gpOwotKyAgICAgIGZwcmludGYgKHN0 ZGVyciwgIlxuIik7Ci0rICAgIH0KLSsKLSsgIGdjY19hc3NlcnQgKHJlZ25vID49IDAgJiYgcmVn bm8gPCBGSVJTVF9QU0VVRE9fUkVHSVNURVIpOwotKyAgZ2NjX2Fzc2VydCAoR0VUX0NPREUgKG1l bSkgPT0gTUVNKTsKLSsgIHJjbGFzcyA9IFJFR05PX1JFR19DTEFTUyAocmVnbm8pOwotKyAgYWRk ciA9IFhFWFAgKG1lbSwgMCk7Ci0rCi0rICBzd2l0Y2ggKHJjbGFzcykKLSsgICAgewotKyAgICAg IC8qIE1vdmUgcmVnK3JlZyBhZGRyZXNzZXMgaW50byBhIHNjcmF0Y2ggcmVnaXN0ZXIgZm9yIEdQ UnMuICAqLwotKyAgICBjYXNlIEdFTkVSQUxfUkVHUzoKLSsgICAgY2FzZSBCQVNFX1JFR1M6Ci0r ICAgICAgaWYgKEdFVF9DT0RFIChhZGRyKSA9PSBBTkQpCi0rCXsKLSsJICBhbmRfb3AyID0gWEVY UCAoYWRkciwgMSk7Ci0rCSAgYWRkciA9IFhFWFAgKGFkZHIsIDApOwotKwl9Ci0rICAgICAgaWYg KEdFVF9DT0RFIChhZGRyKSA9PSBQTFVTCi0rCSAgJiYgKCFyczYwMDBfbGVnaXRpbWF0ZV9vZmZz ZXRfYWRkcmVzc19wIChUSW1vZGUsIGFkZHIsIHRydWUpCi0rCSAgICAgIHx8IGFuZF9vcDIgIT0g TlVMTF9SVFgpKQotKwl7Ci0rCSAgaWYgKEdFVF9DT0RFIChhZGRyKSA9PSBTWU1CT0xfUkVGIHx8 IEdFVF9DT0RFIChhZGRyKSA9PSBDT05TVAotKwkgICAgICB8fCBHRVRfQ09ERSAoYWRkcikgPT0g Q09OU1RfSU5UKQotKwkgICAgcnM2MDAwX2VtaXRfbW92ZSAoc2NyYXRjaCwgYWRkciwgR0VUX01P REUgKGFkZHIpKTsKLSsJICBlbHNlCi0rCSAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChWT0lE bW9kZSwgc2NyYXRjaCwgYWRkcikpOwotKwkgIGFkZHIgPSBzY3JhdGNoOwotKwl9Ci0rICAgICAg ZWxzZSBpZiAoR0VUX0NPREUgKGFkZHIpID09IFBSRV9NT0RJRlkKLSsJICAgICAgICYmIFJFR19Q IChYRVhQIChhZGRyLCAwKSkKLSsJICAgICAgICYmIEdFVF9DT0RFIChYRVhQIChhZGRyLCAxKSkg PT0gUExVUykKLSsJewotKwkgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBYRVhQ IChhZGRyLCAwKSwgWEVYUCAoYWRkciwgMSkpKTsKLSsJICBhZGRyID0gWEVYUCAoYWRkciwgMCk7 Ci0rCX0KLSsgICAgICBicmVhazsKLSsKLSsgICAgICAvKiBXaXRoIGZsb2F0IHJlZ3MsIHdlIG5l ZWQgdG8gaGFuZGxlIHRoZSBBTkQgb3Vyc2VsdmVzLCBzaW5jZSB3ZSBjYW4ndAotKwkgdXNlIHRo ZSBBbHRpdmVjIGluc3RydWN0aW9uIHdpdGggYW4gaW1wbGljaXQgQU5EIC0xNi4gIEFsbG93IHNj YWxhcgotKwkgbG9hZHMgdG8gZmxvYXQgcmVnaXN0ZXJzIHRvIHVzZSByZWcrb2Zmc2V0IGV2ZW4g aWYgVlNYLiAgKi8KLSsgICAgY2FzZSBGTE9BVF9SRUdTOgotKyAgICBjYXNlIFZTWF9SRUdTOgot KyAgICAgIGlmIChHRVRfQ09ERSAoYWRkcikgPT0gQU5EKQotKwl7Ci0rCSAgYW5kX29wMiA9IFhF WFAgKGFkZHIsIDEpOwotKwkgIGFkZHIgPSBYRVhQIChhZGRyLCAwKTsKLSsJfQotKyAgICAgIC8q IGZhbGwgdGhyb3VnaCAqLwotKwotKyAgICAgIC8qIE1vdmUgcmVnK29mZnNldCBhZGRyZXNzZXMg aW50byBhIHNjcmF0Y2ggcmVnaXN0ZXIuICAqLwotKyAgICBjYXNlIEFMVElWRUNfUkVHUzoKLSsg ICAgICBpZiAoIWxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wIChhZGRyLCB0cnVlKQotKwkg ICYmICFsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wIChhZGRyLCB0cnVlKQotKwkgICYmIChH RVRfQ09ERSAoYWRkcikgIT0gUFJFX01PRElGWQotKwkgICAgICB8fCAhbGVnaXRpbWF0ZV9pbmRl eGVkX2FkZHJlc3NfcCAoWEVYUCAoYWRkciwgMSksIHRydWUpKQotKwkgICYmIChyY2xhc3MgIT0g RkxPQVRfUkVHUwotKwkgICAgICB8fCBHRVRfTU9ERV9TSVpFIChtb2RlKSAhPSA4Ci0rCSAgICAg IHx8IGFuZF9vcDIgIT0gTlVMTF9SVFgKLSsJICAgICAgfHwgIXJzNjAwMF9sZWdpdGltYXRlX29m ZnNldF9hZGRyZXNzX3AgKG1vZGUsIGFkZHIsIHRydWUpKSkKLSsJewotKwkgIGlmIChHRVRfQ09E RSAoYWRkcikgPT0gU1lNQk9MX1JFRiB8fCBHRVRfQ09ERSAoYWRkcikgPT0gQ09OU1QKLSsJICAg ICAgfHwgR0VUX0NPREUgKGFkZHIpID09IENPTlNUX0lOVCkKLSsJICAgIHJzNjAwMF9lbWl0X21v dmUgKHNjcmF0Y2gsIGFkZHIsIEdFVF9NT0RFIChhZGRyKSk7Ci0rCSAgZWxzZQotKwkgICAgZW1p dF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsIHNjcmF0Y2gsIGFkZHIpKTsKLSsJICBhZGRy ID0gc2NyYXRjaDsKLSsJfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAg IGdjY191bnJlYWNoYWJsZSAoKTsKLSsgICAgfQotKwotKyAgLyogSWYgdGhlIG9yaWdpbmFsIGFk ZHJlc3MgaW52b2x2ZWQgYW4gQU5EIC0xNiB0aGF0IGlzIHBhcnQgb2YgdGhlIEFsdGl2ZWMKLSsg ICAgIGFkZHJlc3NlcywgcmVjcmVhdGUgdGhlIGFuZCBub3cuICAqLwotKyAgaWYgKGFuZF9vcDIg IT0gTlVMTF9SVFgpCi0rICAgIHsKLSsgICAgICBydHggYW5kX3J0eCA9IGdlbl9ydHhfU0VUIChW T0lEbW9kZSwKLSsJCQkJIHNjcmF0Y2gsCi0rCQkJCSBnZW5fcnR4X0FORCAoUG1vZGUsIGFkZHIs IGFuZF9vcDIpKTsKLSsgICAgICBydHggY2NfY2xvYmJlciA9IGdlbl9ydHhfQ0xPQkJFUiAoQ0Nt b2RlLCBnZW5fcnR4X1NDUkFUQ0ggKENDbW9kZSkpOwotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3J0 eF9QQVJBTExFTCAoVk9JRG1vZGUsCi0rCQkJCSAgIGdlbl9ydHZlYyAoMiwgYW5kX3J0eCwgY2Nf Y2xvYmJlcikpKTsKLSsgICAgICBhZGRyID0gc2NyYXRjaDsKLSsgICAgfQotKwotKyAgLyogQWRq dXN0IHRoZSBhZGRyZXNzIGlmIGl0IGNoYW5nZWQuICAqLwotKyAgaWYgKGFkZHIgIT0gWEVYUCAo bWVtLCAwKSkKLSsgICAgewotKyAgICAgIG1lbSA9IGNoYW5nZV9hZGRyZXNzIChtZW0sIG1vZGUs IGFkZHIpOwotKyAgICAgIGlmIChUQVJHRVRfREVCVUdfQUREUikKLSsJZnByaW50ZiAoc3RkZXJy LCAicnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIsIG1lbSBhZGp1c3RlZC5cbiIpOwotKyAg ICB9Ci0rCi0rICAvKiBOb3cgY3JlYXRlIHRoZSBtb3ZlLiAgKi8KLSsgIGlmIChzdG9yZV9wKQot KyAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChWT0lEbW9kZSwgbWVtLCByZWcpKTsKLSsgIGVs c2UKLSsgICAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsIHJlZywgbWVtKSk7Ci0r Ci0rICByZXR1cm47Ci0rfQotIAotIC8qIEFsbG9jYXRlIGEgNjQtYml0IHN0YWNrIHNsb3QgdG8g YmUgdXNlZCBmb3IgY29weWluZyBTRG1vZGUKLSAgICB2YWx1ZXMgdGhyb3VnaCBpZiB0aGlzIGZ1 bmN0aW9uIGhhcyBhbnkgU0Rtb2RlIHJlZmVyZW5jZXMuICAqLwotQEAgLTExNjI3LDE1ICsxMjc1 NiwxNDYgQEAgcnM2MDAwX2luc3RhbnRpYXRlX2RlY2xzICh2b2lkKQotICAgICBpbnN0YW50aWF0 ZV9kZWNsX3J0bCAoY2Z1bi0+bWFjaGluZS0+c2Rtb2RlX3N0YWNrX3Nsb3QpOwotIH0KLSAKLSsv KiBHaXZlbiBhbiBydHggWCBiZWluZyByZWxvYWRlZCBpbnRvIGEgcmVnIHJlcXVpcmVkIHRvIGJl Ci0rICAgaW4gY2xhc3MgQ0xBU1MsIHJldHVybiB0aGUgY2xhc3Mgb2YgcmVnIHRvIGFjdHVhbGx5 IHVzZS4KLSsgICBJbiBnZW5lcmFsIHRoaXMgaXMganVzdCBDTEFTUzsgYnV0IG9uIHNvbWUgbWFj aGluZXMKLSsgICBpbiBzb21lIGNhc2VzIGl0IGlzIHByZWZlcmFibGUgdG8gdXNlIGEgbW9yZSBy ZXN0cmljdGl2ZSBjbGFzcy4KLSsKLSsgICBPbiB0aGUgUlMvNjAwMCwgd2UgaGF2ZSB0byByZXR1 cm4gTk9fUkVHUyB3aGVuIHdlIHdhbnQgdG8gcmVsb2FkIGEKLSsgICBmbG9hdGluZy1wb2ludCBD T05TVF9ET1VCTEUgdG8gZm9yY2UgaXQgdG8gYmUgY29waWVkIHRvIG1lbW9yeS4KLSsKLSsgICBX ZSBhbHNvIGRvbid0IHdhbnQgdG8gcmVsb2FkIGludGVnZXIgdmFsdWVzIGludG8gZmxvYXRpbmct cG9pbnQKLSsgICByZWdpc3RlcnMgaWYgd2UgY2FuIGF0IGFsbCBoZWxwIGl0LiAgSW4gZmFjdCwg dGhpcyBjYW4KLSsgICBjYXVzZSByZWxvYWQgdG8gZGllLCBpZiBpdCB0cmllcyB0byBnZW5lcmF0 ZSBhIHJlbG9hZCBvZiBDVFIKLSsgICBpbnRvIGEgRlAgcmVnaXN0ZXIgYW5kIGRpc2NvdmVycyBp dCBkb2Vzbid0IGhhdmUgdGhlIG1lbW9yeSBsb2NhdGlvbgotKyAgIHJlcXVpcmVkLgotKwotKyAg ID8/PyBXb3VsZCBpdCBiZSBhIGdvb2QgaWRlYSB0byBoYXZlIHJlbG9hZCBkbyB0aGUgY29udmVy c2UsIHRoYXQgaXMKLSsgICB0cnkgdG8gcmVsb2FkIGZsb2F0aW5nIG1vZGVzIGludG8gRlAgcmVn aXN0ZXJzIGlmIHBvc3NpYmxlPwotKyAqLwotKwotK2VudW0gcmVnX2NsYXNzCi0rcnM2MDAwX3By ZWZlcnJlZF9yZWxvYWRfY2xhc3MgKHJ0eCB4LCBlbnVtIHJlZ19jbGFzcyByY2xhc3MpCi0rewot KyAgZW51bSBtYWNoaW5lX21vZGUgbW9kZSA9IEdFVF9NT0RFICh4KTsKLSsgIGVudW0gcmVnX2Ns YXNzIHJldDsKLSsKLSsgIGlmIChUQVJHRVRfVlNYICYmIFZTWF9WRUNUT1JfTU9ERSAobW9kZSkg JiYgeCA9PSBDT05TVDBfUlRYIChtb2RlKQotKyAgICAgICYmIFZTWF9SRUdfQ0xBU1NfUCAocmNs YXNzKSkKLSsgICAgcmV0ID0gcmNsYXNzOwotKwotKyAgZWxzZSBpZiAoVEFSR0VUX0FMVElWRUMg JiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkKLSsJICAgJiYgcmNsYXNzID09IEFMVElWRUNf UkVHUyAmJiBlYXN5X3ZlY3Rvcl9jb25zdGFudCAoeCwgbW9kZSkpCi0rICAgIHJldCA9IHJjbGFz czsKLSsKLSsgIGVsc2UgaWYgKENPTlNUQU5UX1AgKHgpICYmIHJlZ19jbGFzc2VzX2ludGVyc2Vj dF9wIChyY2xhc3MsIEZMT0FUX1JFR1MpKQotKyAgICByZXQgPSBOT19SRUdTOwotKwotKyAgZWxz ZSBpZiAoR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfSU5UICYmIHJjbGFzcyA9PSBOT05f U1BFQ0lBTF9SRUdTKQotKyAgICByZXQgPSBHRU5FUkFMX1JFR1M7Ci0rCi0rICAvKiBGb3IgVlNY LCBwcmVmZXIgdGhlIHRyYWRpdGlvbmFsIHJlZ2lzdGVycyB1bmxlc3MgdGhlIGFkZHJlc3MgaW52 b2x2ZXMgQU5ECi0rICAgICAtMTYsIHdoZXJlIHdlIHByZWZlciB0byB1c2UgdGhlIEFsdGl2ZWMg cmVnaXN0ZXIgc28gd2UgZG9uJ3QgaGF2ZSB0byBicmVhawotKyAgICAgZG93biB0aGUgQU5ELiAg Ki8KLSsgIGVsc2UgaWYgKHJjbGFzcyA9PSBWU1hfUkVHUykKLSsgICAgewotKyAgICAgIGlmICht b2RlID09IERGbW9kZSkKLSsJcmV0ID0gRkxPQVRfUkVHUzsKLSsKLSsgICAgICBlbHNlIGlmIChh bHRpdmVjX2luZGV4ZWRfb3JfaW5kaXJlY3Rfb3BlcmFuZCAoeCwgbW9kZSkpCi0rCXJldCA9IEFM VElWRUNfUkVHUzsKLSsKLSsgICAgICBlbHNlIGlmIChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2Rl KSkKLSsJcmV0ID0gQUxUSVZFQ19SRUdTOwotKwotKyAgICAgIGVsc2UKLSsJcmV0ID0gcmNsYXNz OwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHJldCA9IHJjbGFzczsKLSsKLSsgIGlmIChUQVJHRVRf REVCVUdfQUREUikKLSsgICAgewotKyAgICAgIGZwcmludGYgKHN0ZGVyciwKLSsJICAgICAgICJy czYwMDBfcHJlZmVycmVkX3JlbG9hZF9jbGFzcywgcmV0dXJuICVzLCByY2xhc3MgPSAlcywgeDpc biIsCi0rCSAgICAgICByZWdfY2xhc3NfbmFtZXNbcmV0XSwgcmVnX2NsYXNzX25hbWVzW3JjbGFz c10pOwotKyAgICAgIGRlYnVnX3J0eCAoeCk7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXG4i KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyogSWYgd2UgYXJlIGNvcHlp bmcgYmV0d2VlbiBGUCBvciBBbHRpVmVjIHJlZ2lzdGVycyBhbmQgYW55dGhpbmcgZWxzZSwgd2Ug bmVlZAotKyAgIGEgbWVtb3J5IGxvY2F0aW9uLiAgVGhlIGV4Y2VwdGlvbiBpcyB3aGVuIHdlIGFy ZSB0YXJnZXRpbmcgcHBjNjQgYW5kIHRoZQotKyAgIG1vdmUgdG8vZnJvbSBmcHIgdG8gZ3ByIGlu c3RydWN0aW9ucyBhcmUgYXZhaWxhYmxlLiAgQWxzbywgdW5kZXIgVlNYLCB5b3UKLSsgICBjYW4g Y29weSB2ZWN0b3IgcmVnaXN0ZXJzIGZyb20gdGhlIEZQIHJlZ2lzdGVyIHNldCB0byB0aGUgQWx0 aXZlYyByZWdpc3RlcgotKyAgIHNldCBhbmQgdmljZSB2ZXJzYS4gICovCi0rCi0rYm9vbAotK3Jz NjAwMF9zZWNvbmRhcnlfbWVtb3J5X25lZWRlZCAoZW51bSByZWdfY2xhc3MgY2xhc3MxLAotKwkJ CQllbnVtIHJlZ19jbGFzcyBjbGFzczIsCi0rCQkJCWVudW0gbWFjaGluZV9tb2RlIG1vZGUpCi0r ewotKyAgYm9vbCByZXQ7Ci0rCi0rICBpZiAoY2xhc3MxID09IGNsYXNzMikKLSsgICAgcmV0ID0g ZmFsc2U7Ci0rCi0rICAvKiBVbmRlciBWU1gsIHRoZXJlIGFyZSAzIHJlZ2lzdGVyIGNsYXNzZXMg dGhhdCB2YWx1ZXMgY291bGQgYmUgaW4gKFZTWF9SRUdTLAotKyAgICAgQUxUSVZFQ19SRUdTLCBh bmQgRkxPQVRfUkVHUykuICBXZSBkb24ndCBuZWVkIHRvIHVzZSBtZW1vcnkgdG8gY29weQotKyAg ICAgYmV0d2VlbiB0aGVzZSBjbGFzc2VzLiAgQnV0IHdlIG5lZWQgbWVtb3J5IGZvciBvdGhlciB0 aGluZ3MgdGhhdCBjYW4gZ28gaW4KLSsgICAgIEZMT0FUX1JFR1MgbGlrZSBTRm1vZGUuICAqLwot KyAgZWxzZSBpZiAoVEFSR0VUX1ZTWAotKwkgICAmJiAoVkVDVE9SX01FTV9WU1hfUCAobW9kZSkg fHwgVkVDVE9SX1VOSVRfVlNYX1AgKG1vZGUpKQotKwkgICAmJiAoY2xhc3MxID09IFZTWF9SRUdT IHx8IGNsYXNzMSA9PSBBTFRJVkVDX1JFR1MKLSsJICAgICAgIHx8IGNsYXNzMSA9PSBGTE9BVF9S RUdTKSkKLSsgICAgcmV0ID0gKGNsYXNzMiAhPSBWU1hfUkVHUyAmJiBjbGFzczIgIT0gQUxUSVZF Q19SRUdTCi0rCSAgICYmIGNsYXNzMiAhPSBGTE9BVF9SRUdTKTsKLSsKLSsgIGVsc2UgaWYgKGNs YXNzMSA9PSBWU1hfUkVHUyB8fCBjbGFzczIgPT0gVlNYX1JFR1MpCi0rICAgIHJldCA9IHRydWU7 Ci0rCi0rICBlbHNlIGlmIChjbGFzczEgPT0gRkxPQVRfUkVHUwotKwkgICAmJiAoIVRBUkdFVF9N RlBHUFIgfHwgIVRBUkdFVF9QT1dFUlBDNjQKLSsJICAgICAgIHx8ICgobW9kZSAhPSBERm1vZGUp Ci0rCQkgICAmJiAobW9kZSAhPSBERG1vZGUpCi0rCQkgICAmJiAobW9kZSAhPSBESW1vZGUpKSkp Ci0rICAgIHJldCA9IHRydWU7Ci0rCi0rICBlbHNlIGlmIChjbGFzczIgPT0gRkxPQVRfUkVHUwot KwkgICAmJiAoIVRBUkdFVF9NRlBHUFIgfHwgIVRBUkdFVF9QT1dFUlBDNjQKLSsJICAgICAgIHx8 ICgobW9kZSAhPSBERm1vZGUpCi0rCQkgICAmJiAobW9kZSAhPSBERG1vZGUpCi0rCQkgICAmJiAo bW9kZSAhPSBESW1vZGUpKSkpCi0rICAgIHJldCA9IHRydWU7Ci0rCi0rICBlbHNlIGlmIChjbGFz czEgPT0gQUxUSVZFQ19SRUdTIHx8IGNsYXNzMiA9PSBBTFRJVkVDX1JFR1MpCi0rICAgIHJldCA9 IHRydWU7Ci0rCi0rICBlbHNlCi0rICAgIHJldCA9IGZhbHNlOwotKwotKyAgaWYgKFRBUkdFVF9E RUJVR19BRERSKQotKyAgICBmcHJpbnRmIChzdGRlcnIsCi0rCSAgICAgInJzNjAwMF9zZWNvbmRh cnlfbWVtb3J5X25lZWRlZCwgcmV0dXJuOiAlcywgY2xhc3MxID0gJXMsICIKLSsJICAgICAiY2xh c3MyID0gJXMsIG1vZGUgPSAlc1xuIiwKLSsJICAgICByZXQgPyAidHJ1ZSIgOiAiZmFsc2UiLCBy ZWdfY2xhc3NfbmFtZXNbY2xhc3MxXSwKLSsJICAgICByZWdfY2xhc3NfbmFtZXNbY2xhc3MyXSwg R0VUX01PREVfTkFNRSAobW9kZSkpOwotKwotKyAgcmV0dXJuIHJldDsKLSt9Ci0rCi0gLyogUmV0 dXJuIHRoZSByZWdpc3RlciBjbGFzcyBvZiBhIHNjcmF0Y2ggcmVnaXN0ZXIgbmVlZGVkIHRvIGNv cHkgSU4gaW50bwotICAgIG9yIG91dCBvZiBhIHJlZ2lzdGVyIGluIFJDTEFTUyBpbiBNT0RFLiAg SWYgaXQgY2FuIGJlIGRvbmUgZGlyZWN0bHksCi0gICAgTk9fUkVHUyBpcyByZXR1cm5lZC4gICov Ci0gCi0gZW51bSByZWdfY2xhc3MKLSByczYwMDBfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyAoZW51 bSByZWdfY2xhc3MgcmNsYXNzLAotLQkJCSAgICAgICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlIEFU VFJJQlVURV9VTlVTRUQsCi0rCQkJICAgICAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsCi0gCQkJ ICAgICAgIHJ0eCBpbikKLSB7Ci0rICBlbnVtIHJlZ19jbGFzcyByZXQgPSBOT19SRUdTOwotICAg aW50IHJlZ25vOwotIAotICAgaWYgKFRBUkdFVF9FTEYgfHwgKERFRkFVTFRfQUJJID09IEFCSV9E QVJXSU4KLUBAIC0xMTY1Niw1MSArMTI5MTYsMTEyIEBAIHJzNjAwMF9zZWNvbmRhcnlfcmVsb2Fk X2NsYXNzIChlbnVtIHJlZ18KLSAJICAgICAgfHwgR0VUX0NPREUgKGluKSA9PSBISUdICi0gCSAg ICAgIHx8IEdFVF9DT0RFIChpbikgPT0gTEFCRUxfUkVGCi0gCSAgICAgIHx8IEdFVF9DT0RFIChp bikgPT0gQ09OU1QpKQotLQlyZXR1cm4gQkFTRV9SRUdTOwotKwlyZXQgPSBCQVNFX1JFR1M7Ci0g ICAgIH0KLSAKLS0gIGlmIChHRVRfQ09ERSAoaW4pID09IFJFRykKLSsgIGlmIChyZXQgPT0gTk9f UkVHUykKLSAgICAgewotLSAgICAgIHJlZ25vID0gUkVHTk8gKGluKTsKLS0gICAgICBpZiAocmVn bm8gPj0gRklSU1RfUFNFVURPX1JFR0lTVEVSKQotKyAgICAgIGlmIChHRVRfQ09ERSAoaW4pID09 IFJFRykKLSsJewotKwkgIHJlZ25vID0gUkVHTk8gKGluKTsKLSsJICBpZiAocmVnbm8gPj0gRklS U1RfUFNFVURPX1JFR0lTVEVSKQotKwkgICAgewotKwkgICAgICByZWdubyA9IHRydWVfcmVnbnVt IChpbik7Ci0rCSAgICAgIGlmIChyZWdubyA+PSBGSVJTVF9QU0VVRE9fUkVHSVNURVIpCi0rCQly ZWdubyA9IC0xOwotKwkgICAgfQotKwl9Ci0rICAgICAgZWxzZSBpZiAoR0VUX0NPREUgKGluKSA9 PSBTVUJSRUcpCi0gCXsKLSAJICByZWdubyA9IHRydWVfcmVnbnVtIChpbik7Ci0gCSAgaWYgKHJl Z25vID49IEZJUlNUX1BTRVVET19SRUdJU1RFUikKLSAJICAgIHJlZ25vID0gLTE7Ci0gCX0KLS0g ICAgfQotLSAgZWxzZSBpZiAoR0VUX0NPREUgKGluKSA9PSBTVUJSRUcpCi0tICAgIHsKLS0gICAg ICByZWdubyA9IHRydWVfcmVnbnVtIChpbik7Ci0tICAgICAgaWYgKHJlZ25vID49IEZJUlNUX1BT RVVET19SRUdJU1RFUikKLSsgICAgICBlbHNlCi0gCXJlZ25vID0gLTE7Ci0rCi0rICAgICAgLyog V2UgY2FuIHBsYWNlIGFueXRoaW5nIGludG8gR0VORVJBTF9SRUdTIGFuZCBjYW4gcHV0IEdFTkVS QUxfUkVHUwotKwkgaW50byBhbnl0aGluZy4gICovCi0rICAgICAgaWYgKHJjbGFzcyA9PSBHRU5F UkFMX1JFR1MgfHwgcmNsYXNzID09IEJBU0VfUkVHUwotKwkgIHx8IChyZWdubyA+PSAwICYmIElO VF9SRUdOT19QIChyZWdubykpKQotKwlyZXQgPSBOT19SRUdTOwotKwotKyAgICAgIC8qIENvbnN0 YW50cywgbWVtb3J5LCBhbmQgRlAgcmVnaXN0ZXJzIGNhbiBnbyBpbnRvIEZQIHJlZ2lzdGVycy4g ICovCi0rICAgICAgZWxzZSBpZiAoKHJlZ25vID09IC0xIHx8IEZQX1JFR05PX1AgKHJlZ25vKSkK LSsJICAgICAgICYmIChyY2xhc3MgPT0gRkxPQVRfUkVHUyB8fCByY2xhc3MgPT0gTk9OX1NQRUNJ QUxfUkVHUykpCi0rCXJldCA9IChtb2RlICE9IFNEbW9kZSkgPyBOT19SRUdTIDogR0VORVJBTF9S RUdTOwotKwotKyAgICAgIC8qIE1lbW9yeSwgYW5kIEZQL2FsdGl2ZWMgcmVnaXN0ZXJzIGNhbiBn byBpbnRvIGZwL2FsdGl2ZWMgcmVnaXN0ZXJzIHVuZGVyCi0rCSBWU1guICAqLwotKyAgICAgIGVs c2UgaWYgKFRBUkdFVF9WU1gKLSsJICAgICAgICYmIChyZWdubyA9PSAtMSB8fCBWU1hfUkVHTk9f UCAocmVnbm8pKQotKwkgICAgICAgJiYgVlNYX1JFR19DTEFTU19QIChyY2xhc3MpKQotKwlyZXQg PSBOT19SRUdTOwotKwotKyAgICAgIC8qIE1lbW9yeSwgYW5kIEFsdGlWZWMgcmVnaXN0ZXJzIGNh biBnbyBpbnRvIEFsdGlWZWMgcmVnaXN0ZXJzLiAgKi8KLSsgICAgICBlbHNlIGlmICgocmVnbm8g PT0gLTEgfHwgQUxUSVZFQ19SRUdOT19QIChyZWdubykpCi0rCSAgICAgICAmJiByY2xhc3MgPT0g QUxUSVZFQ19SRUdTKQotKwlyZXQgPSBOT19SRUdTOwotKwotKyAgICAgIC8qIFdlIGNhbiBjb3B5 IGFtb25nIHRoZSBDUiByZWdpc3RlcnMuICAqLwotKyAgICAgIGVsc2UgaWYgKChyY2xhc3MgPT0g Q1JfUkVHUyB8fCByY2xhc3MgPT0gQ1IwX1JFR1MpCi0rCSAgICAgICAmJiByZWdubyA+PSAwICYm IENSX1JFR05PX1AgKHJlZ25vKSkKLSsJcmV0ID0gTk9fUkVHUzsKLSsKLSsgICAgICAvKiBPdGhl cndpc2UsIHdlIG5lZWQgR0VORVJBTF9SRUdTLiAgKi8KLSsgICAgICBlbHNlCi0rCXJldCA9IEdF TkVSQUxfUkVHUzsKLSsgICAgfQotKwotKyAgaWYgKFRBUkdFVF9ERUJVR19BRERSKQotKyAgICB7 Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLAotKwkgICAgICAgInJzNjAwMF9zZWNvbmRhcnlfcmVs b2FkX2NsYXNzLCByZXR1cm4gJXMsIHJjbGFzcyA9ICVzLCAiCi0rCSAgICAgICAibW9kZSA9ICVz LCBpbnB1dCBydHg6XG4iLAotKwkgICAgICAgcmVnX2NsYXNzX25hbWVzW3JldF0sIHJlZ19jbGFz c19uYW1lc1tyY2xhc3NdLAotKwkgICAgICAgR0VUX01PREVfTkFNRSAobW9kZSkpOwotKyAgICAg IGRlYnVnX3J0eCAoaW4pOwotKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7Ci0gICAgIH0K LS0gIGVsc2UKLS0gICAgcmVnbm8gPSAtMTsKLSAKLS0gIC8qIFdlIGNhbiBwbGFjZSBhbnl0aGlu ZyBpbnRvIEdFTkVSQUxfUkVHUyBhbmQgY2FuIHB1dCBHRU5FUkFMX1JFR1MKLS0gICAgIGludG8g YW55dGhpbmcuICAqLwotLSAgaWYgKHJjbGFzcyA9PSBHRU5FUkFMX1JFR1MgfHwgcmNsYXNzID09 IEJBU0VfUkVHUwotLSAgICAgIHx8IChyZWdubyA+PSAwICYmIElOVF9SRUdOT19QIChyZWdubykp KQotLSAgICByZXR1cm4gTk9fUkVHUzsKLS0KLS0gIC8qIENvbnN0YW50cywgbWVtb3J5LCBhbmQg RlAgcmVnaXN0ZXJzIGNhbiBnbyBpbnRvIEZQIHJlZ2lzdGVycy4gICovCi0tICBpZiAoKHJlZ25v ID09IC0xIHx8IEZQX1JFR05PX1AgKHJlZ25vKSkKLS0gICAgICAmJiAocmNsYXNzID09IEZMT0FU X1JFR1MgfHwgcmNsYXNzID09IE5PTl9TUEVDSUFMX1JFR1MpKQotLSAgICByZXR1cm4gKG1vZGUg IT0gU0Rtb2RlKSA/IE5PX1JFR1MgOiBHRU5FUkFMX1JFR1M7Ci0tCi0tICAvKiBNZW1vcnksIGFu ZCBBbHRpVmVjIHJlZ2lzdGVycyBjYW4gZ28gaW50byBBbHRpVmVjIHJlZ2lzdGVycy4gICovCi0t ICBpZiAoKHJlZ25vID09IC0xIHx8IEFMVElWRUNfUkVHTk9fUCAocmVnbm8pKQotLSAgICAgICYm IHJjbGFzcyA9PSBBTFRJVkVDX1JFR1MpCi0tICAgIHJldHVybiBOT19SRUdTOwotLQotLSAgLyog V2UgY2FuIGNvcHkgYW1vbmcgdGhlIENSIHJlZ2lzdGVycy4gICovCi0tICBpZiAoKHJjbGFzcyA9 PSBDUl9SRUdTIHx8IHJjbGFzcyA9PSBDUjBfUkVHUykKLS0gICAgICAmJiByZWdubyA+PSAwICYm IENSX1JFR05PX1AgKHJlZ25vKSkKLS0gICAgcmV0dXJuIE5PX1JFR1M7Ci0rICByZXR1cm4gcmV0 OwotK30KLSsKLSsvKiBSZXR1cm4gbm9uemVybyBpZiBmb3IgQ0xBU1MgYSBtb2RlIGNoYW5nZSBm cm9tIEZST00gdG8gVE8gaXMgaW52YWxpZC4gICovCi0gCi0tICAvKiBPdGhlcndpc2UsIHdlIG5l ZWQgR0VORVJBTF9SRUdTLiAgKi8KLS0gIHJldHVybiBHRU5FUkFMX1JFR1M7Ci0rYm9vbAotK3Jz NjAwMF9jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MgKGVudW0gbWFjaGluZV9tb2RlIGZyb20sCi0r CQkJCSBlbnVtIG1hY2hpbmVfbW9kZSB0bywKLSsJCQkJIGVudW0gcmVnX2NsYXNzIHJjbGFzcykK LSt7Ci0rICBib29sIHJldCA9IChHRVRfTU9ERV9TSVpFIChmcm9tKSAhPSBHRVRfTU9ERV9TSVpF ICh0bykKLSsJICAgICAgPyAoKEdFVF9NT0RFX1NJWkUgKGZyb20pIDwgOCB8fCBHRVRfTU9ERV9T SVpFICh0bykgPCA4Ci0rCQkgIHx8IFRBUkdFVF9JRUVFUVVBRCkKLSsJCSAmJiByZWdfY2xhc3Nl c19pbnRlcnNlY3RfcCAoRkxPQVRfUkVHUywgcmNsYXNzKSkKLSsJICAgICAgOiAoKChUQVJHRVRf RTUwMF9ET1VCTEUKLSsJCSAgICYmICgoKCh0bykgPT0gREZtb2RlKSArICgoZnJvbSkgPT0gREZt b2RlKSkgPT0gMQotKwkJICAgICAgIHx8ICgoKHRvKSA9PSBURm1vZGUpICsgKChmcm9tKSA9PSBU Rm1vZGUpKSA9PSAxCi0rCQkgICAgICAgfHwgKCgodG8pID09IEREbW9kZSkgKyAoKGZyb20pID09 IEREbW9kZSkpID09IDEKLSsJCSAgICAgICB8fCAoKCh0bykgPT0gVERtb2RlKSArICgoZnJvbSkg PT0gVERtb2RlKSkgPT0gMQotKwkJICAgICAgIHx8ICgoKHRvKSA9PSBESW1vZGUpICsgKChmcm9t KSA9PSBESW1vZGUpKSA9PSAxKSkKLSsJCSAgfHwgKFRBUkdFVF9WU1gKLSsJCSAgICAgICYmIChW U1hfVkVDVE9SX01PREUgKGZyb20pICsgVlNYX1ZFQ1RPUl9NT0RFICh0bykpID09IDEpCi0rCQkg IHx8IChUQVJHRVRfQUxUSVZFQwotKwkJICAgICAgJiYgKEFMVElWRUNfVkVDVE9SX01PREUgKGZy b20pCi0rCQkJICArIEFMVElWRUNfVkVDVE9SX01PREUgKHRvKSkgPT0gMSkKLSsJCSAgfHwgKFRB UkdFVF9TUEUKLSsJCSAgICAgICYmIChTUEVfVkVDVE9SX01PREUgKGZyb20pICsgU1BFX1ZFQ1RP Ul9NT0RFICh0bykpID09IDEpKQotKwkJICYmIHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChHRU5F UkFMX1JFR1MsIHJjbGFzcykpKTsKLSsKLSsgIGlmIChUQVJHRVRfREVCVUdfQUREUikKLSsgICAg ZnByaW50ZiAoc3RkZXJyLAotKwkgICAgICJyczYwMDBfY2Fubm90X2NoYW5nZV9tb2RlX2NsYXNz LCByZXR1cm4gJXMsIGZyb20gPSAlcywgIgotKwkgICAgICJ0byA9ICVzLCByY2xhc3MgPSAlc1xu IiwKLSsJICAgICByZXQgPyAidHJ1ZSIgOiAiZmFsc2UiLAotKwkgICAgIEdFVF9NT0RFX05BTUUg KGZyb20pLCBHRVRfTU9ERV9OQU1FICh0byksCi0rCSAgICAgcmVnX2NsYXNzX25hbWVzW3JjbGFz c10pOwotKwotKyAgcmV0dXJuIHJldDsKLSB9Ci0gDAotIC8qIEdpdmVuIGEgY29tcGFyaXNvbiBv cGVyYXRpb24sIHJldHVybiB0aGUgYml0IG51bWJlciBpbiBDQ1IgdG8gdGVzdC4gIFdlCi1AQCAt MTI0MzIsNiArMTM3NTMsMjYgQEAgcHJpbnRfb3BlcmFuZCAoRklMRSAqZmlsZSwgcnR4IHgsIGlu dCBjbwotICAgICAgIGZwcmludGYgKGZpbGUsICIlZCIsIGkgKyAxKTsKLSAgICAgICByZXR1cm47 Ci0gCi0rICAgIGNhc2UgJ3gnOgotKyAgICAgIC8qIFggaXMgYSBGUFIgb3IgQWx0aXZlYyByZWdp c3RlciB1c2VkIGluIGEgVlNYIGNvbnRleHQuICAqLwotKyAgICAgIGlmIChHRVRfQ09ERSAoeCkg IT0gUkVHIHx8ICFWU1hfUkVHTk9fUCAoUkVHTk8gKHgpKSkKLSsJb3V0cHV0X29wZXJhbmRfbG9z c2FnZSAoImludmFsaWQgJSV4IHZhbHVlIik7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaW50IHJl ZyA9IFJFR05PICh4KTsKLSsJICBpbnQgdnN4X3JlZyA9IChGUF9SRUdOT19QIChyZWcpCi0rCQkJ ID8gcmVnIC0gMzIKLSsJCQkgOiByZWcgLSBGSVJTVF9BTFRJVkVDX1JFR05PICsgMzIpOwotKwot KyNpZmRlZiBUQVJHRVRfUkVHTkFNRVMgICAgICAKLSsJICBpZiAoVEFSR0VUX1JFR05BTUVTKQot KwkgICAgZnByaW50ZiAoZmlsZSwgIiUldnMlZCIsIHZzeF9yZWcpOwotKwkgIGVsc2UKLSsjZW5k aWYKLSsJICAgIGZwcmludGYgKGZpbGUsICIlZCIsIHZzeF9yZWcpOwotKwl9Ci0rICAgICAgcmV0 dXJuOwotKwotICAgICBjYXNlICdYJzoKLSAgICAgICBpZiAoR0VUX0NPREUgKHgpID09IE1FTQot IAkgICYmIChsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wIChYRVhQICh4LCAwKSwgMCkKLUBA IC0xMjU0NCwxMyArMTM4ODUsMTYgQEAgcHJpbnRfb3BlcmFuZCAoRklMRSAqZmlsZSwgcnR4IHgs IGludCBjbwotIAotIAkgICAgLyogRmFsbCB0aHJvdWdoLiAgTXVzdCBiZSBbcmVnK3JlZ10uICAq LwotIAkgIH0KLS0JaWYgKFRBUkdFVF9BTFRJVkVDCi0rCWlmIChWRUNUT1JfTUVNX0FMVElWRUNf T1JfVlNYX1AgKEdFVF9NT0RFICh4KSkKLSAJICAgICYmIEdFVF9DT0RFICh0bXApID09IEFORAot IAkgICAgJiYgR0VUX0NPREUgKFhFWFAgKHRtcCwgMSkpID09IENPTlNUX0lOVAotIAkgICAgJiYg SU5UVkFMIChYRVhQICh0bXAsIDEpKSA9PSAtMTYpCi0gCSAgdG1wID0gWEVYUCAodG1wLCAwKTsK LSsJZWxzZSBpZiAoVkVDVE9SX01FTV9WU1hfUCAoR0VUX01PREUgKHgpKQotKwkJICYmIEdFVF9D T0RFICh0bXApID09IFBSRV9NT0RJRlkpCi0rCSAgdG1wID0gWEVYUCAodG1wLCAxKTsKLSAJaWYg KEdFVF9DT0RFICh0bXApID09IFJFRykKLS0JICBmcHJpbnRmIChmaWxlLCAiMCwlcyIsIHJlZ19u YW1lc1tSRUdOTyAodG1wKV0pOwotKwkgIGZwcmludGYgKGZpbGUsICIlcywlcyIsIHJlZ19uYW1l c1swXSwgcmVnX25hbWVzW1JFR05PICh0bXApXSk7Ci0gCWVsc2UKLSAJICB7Ci0gCSAgICBpZiAo IUdFVF9DT0RFICh0bXApID09IFBMVVMKLUBAIC0xMzMyMiw1NSArMTQ2NjYsNjIgQEAgb3V0cHV0 X2U1MDBfZmxpcF9ndF9iaXQgKHJ0eCBkc3QsIHJ0eCBzcgotICAgcmV0dXJuIHN0cmluZzsKLSB9 Ci0gCi0tLyogUmV0dXJuIGluc24gaW5kZXggZm9yIHRoZSB2ZWN0b3IgY29tcGFyZSBpbnN0cnVj dGlvbiBmb3IgZ2l2ZW4gQ09ERSwKLS0gICBhbmQgREVTVF9NT0RFLCBPUF9NT0RFLiBSZXR1cm4g SU5TTl9OT1RfQVZBSUxBQkxFIGlmIHZhbGlkIGluc24gaXMKLS0gICBub3QgYXZhaWxhYmxlLiAg Ki8KLSsvKiBSZXR1cm4gaW5zbiBmb3IgVlNYIGNvbXBhcmlzb25zLiAgKi8KLSAKLS1zdGF0aWMg aW50Ci0tZ2V0X3ZlY19jbXBfaW5zbiAoZW51bSBydHhfY29kZSBjb2RlLAotLQkJICBlbnVtIG1h Y2hpbmVfbW9kZSBkZXN0X21vZGUsCi0tCQkgIGVudW0gbWFjaGluZV9tb2RlIG9wX21vZGUpCi0r c3RhdGljIHJ0eAotK3JzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlX3ZzeCAoZW51bSBydHhfY29k ZSBjb2RlLAotKwkJCQlydHggbWFzaywKLSsJCQkJcnR4IG9wMCwKLSsJCQkJcnR4IG9wMSkKLSB7 Ci0tICBpZiAoIVRBUkdFVF9BTFRJVkVDKQotLSAgICByZXR1cm4gSU5TTl9OT1RfQVZBSUxBQkxF OwotLQotICAgc3dpdGNoIChjb2RlKQotICAgICB7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJl YWs7Ci0rCi0gICAgIGNhc2UgRVE6Ci0tICAgICAgaWYgKGRlc3RfbW9kZSA9PSBWMTZRSW1vZGUg JiYgb3BfbW9kZSA9PSBWMTZRSW1vZGUpCi0tCXJldHVybiBVTlNQRUNfVkNNUEVRVUI7Ci0tICAg ICAgaWYgKGRlc3RfbW9kZSA9PSBWOEhJbW9kZSAmJiBvcF9tb2RlID09IFY4SEltb2RlKQotLQly ZXR1cm4gVU5TUEVDX1ZDTVBFUVVIOwotLSAgICAgIGlmIChkZXN0X21vZGUgPT0gVjRTSW1vZGUg JiYgb3BfbW9kZSA9PSBWNFNJbW9kZSkKLS0JcmV0dXJuIFVOU1BFQ19WQ01QRVFVVzsKLS0gICAg ICBpZiAoZGVzdF9tb2RlID09IFY0U0ltb2RlICYmIG9wX21vZGUgPT0gVjRTRm1vZGUpCi0tCXJl dHVybiBVTlNQRUNfVkNNUEVRRlA7Ci0rICAgIGNhc2UgR1Q6Ci0rICAgIGNhc2UgR0U6Ci0rICAg ICAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsCi0rCQkJICAgICAgbWFzaywKLSsJ CQkgICAgICBnZW5fcnR4X2ZtdF9lZSAoY29kZSwgR0VUX01PREUgKG1hc2spLAotKwkJCQkJICAg ICAgb3AwLAotKwkJCQkJICAgICAgb3AxKSkpOwotKyAgICAgIHJldHVybiBtYXNrOwotKyAgICB9 Ci0rCi0rICByZXR1cm4gTlVMTF9SVFg7Ci0rfQotKwotKy8qIFJldHVybiBpbnNuIGZvciBBbHRp dmVjIGNvbXBhcmlzb25zLiAgKi8KLSsKLStzdGF0aWMgcnR4Ci0rcnM2MDAwX2VtaXRfdmVjdG9y X2NvbXBhcmVfYWx0aXZlYyAoZW51bSBydHhfY29kZSBjb2RlLAotKwkJCQkgICAgcnR4IG1hc2ss Ci0rCQkJCSAgICBydHggb3AwLAotKwkJCQkgICAgcnR4IG9wMSkKLSt7Ci0rICBzd2l0Y2ggKGNv ZGUpCi0rICAgIHsKLSsgICAgZGVmYXVsdDoKLSAgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSBH RToKLS0gICAgICBpZiAoZGVzdF9tb2RlID09IFY0U0ltb2RlICYmIG9wX21vZGUgPT0gVjRTRm1v ZGUpCi0tCXJldHVybiBVTlNQRUNfVkNNUEdFRlA7Ci0rICAgICAgaWYgKEdFVF9NT0RFIChtYXNr KSAhPSBWNFNGbW9kZSkKLSsJcmV0dXJuIE5VTExfUlRYOwotKyAgICAgIC8qIGZhbGwgdGhyb3Vn aCAqLwotKyAgICBjYXNlIEVROgotICAgICBjYXNlIEdUOgotLSAgICAgIGlmIChkZXN0X21vZGUg PT0gVjE2UUltb2RlICYmIG9wX21vZGUgPT0gVjE2UUltb2RlKQotLQlyZXR1cm4gVU5TUEVDX1ZD TVBHVFNCOwotLSAgICAgIGlmIChkZXN0X21vZGUgPT0gVjhISW1vZGUgJiYgb3BfbW9kZSA9PSBW OEhJbW9kZSkKLS0JcmV0dXJuIFVOU1BFQ19WQ01QR1RTSDsKLS0gICAgICBpZiAoZGVzdF9tb2Rl ID09IFY0U0ltb2RlICYmIG9wX21vZGUgPT0gVjRTSW1vZGUpCi0tCXJldHVybiBVTlNQRUNfVkNN UEdUU1c7Ci0tICAgICAgaWYgKGRlc3RfbW9kZSA9PSBWNFNJbW9kZSAmJiBvcF9tb2RlID09IFY0 U0Ztb2RlKQotLQlyZXR1cm4gVU5TUEVDX1ZDTVBHVEZQOwotLSAgICAgIGJyZWFrOwotICAgICBj YXNlIEdUVToKLS0gICAgICBpZiAoZGVzdF9tb2RlID09IFYxNlFJbW9kZSAmJiBvcF9tb2RlID09 IFYxNlFJbW9kZSkKLS0JcmV0dXJuIFVOU1BFQ19WQ01QR1RVQjsKLS0gICAgICBpZiAoZGVzdF9t b2RlID09IFY4SEltb2RlICYmIG9wX21vZGUgPT0gVjhISW1vZGUpCi0tCXJldHVybiBVTlNQRUNf VkNNUEdUVUg7Ci0tICAgICAgaWYgKGRlc3RfbW9kZSA9PSBWNFNJbW9kZSAmJiBvcF9tb2RlID09 IFY0U0ltb2RlKQotLQlyZXR1cm4gVU5TUEVDX1ZDTVBHVFVXOwotLSAgICAgIGJyZWFrOwotLSAg ICBkZWZhdWx0OgotLSAgICAgIGJyZWFrOwotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQg KFZPSURtb2RlLAotKwkJCSAgICAgIG1hc2ssCi0rCQkJICAgICAgZ2VuX3J0eF9mbXRfZWUgKGNv ZGUsIEdFVF9NT0RFIChtYXNrKSwKLSsJCQkJCSAgICAgIG9wMCwKLSsJCQkJCSAgICAgIG9wMSkp KTsKLSsgICAgICByZXR1cm4gbWFzazsKLSAgICAgfQotLSAgcmV0dXJuIElOU05fTk9UX0FWQUlM QUJMRTsKLSsKLSsgIHJldHVybiBOVUxMX1JUWDsKLSB9Ci0gCi0gLyogRW1pdCB2ZWN0b3IgY29t cGFyZSBmb3Igb3BlcmFuZHMgT1AwIGFuZCBPUDEgdXNpbmcgY29kZSBSQ09ERS4KLUBAIC0xMzM4 MSwxMjkgKzE0NzMyLDExMSBAQCByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSAoZW51bSBydHhf Y29kCi0gCQkJICAgIHJ0eCBvcDAsIHJ0eCBvcDEsCi0gCQkJICAgIGVudW0gbWFjaGluZV9tb2Rl IGRtb2RlKQotIHsKLS0gIGludCB2ZWNfY21wX2luc247Ci0gICBydHggbWFzazsKLS0gIGVudW0g bWFjaGluZV9tb2RlIGRlc3RfbW9kZTsKLS0gIGVudW0gbWFjaGluZV9tb2RlIG9wX21vZGUgPSBH RVRfTU9ERSAob3AxKTsKLSsgIGJvb2wgc3dhcF9vcGVyYW5kcyA9IGZhbHNlOwotKyAgYm9vbCB0 cnlfYWdhaW4gPSBmYWxzZTsKLSAKLS0gIGdjY19hc3NlcnQgKFRBUkdFVF9BTFRJVkVDKTsKLSsg IGdjY19hc3NlcnQgKFRBUkdFVF9BTFRJVkVDIHx8IFRBUkdFVF9WU1gpOwotICAgZ2NjX2Fzc2Vy dCAoR0VUX01PREUgKG9wMCkgPT0gR0VUX01PREUgKG9wMSkpOwotIAotLSAgLyogRmxvYXRpbmcg cG9pbnQgdmVjdG9yIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zIHVzZXMgZGVzdGluYXRpb24gVjRTSW1v ZGUuCi0tICAgICBNb3ZlIGRlc3RpbmF0aW9uIHRvIGFwcHJvcHJpYXRlIG1vZGUgbGF0ZXIuICAq LwotLSAgaWYgKGRtb2RlID09IFY0U0Ztb2RlKQotLSAgICBkZXN0X21vZGUgPSBWNFNJbW9kZTsK LS0gIGVsc2UKLS0gICAgZGVzdF9tb2RlID0gZG1vZGU7Ci0rICBtYXNrID0gZ2VuX3JlZ19ydHgg KGRtb2RlKTsKLSAKLS0gIG1hc2sgPSBnZW5fcmVnX3J0eCAoZGVzdF9tb2RlKTsKLS0gIHZlY19j bXBfaW5zbiA9IGdldF92ZWNfY21wX2luc24gKHJjb2RlLCBkZXN0X21vZGUsIG9wX21vZGUpOwot KyAgLyogVHJ5IGZvciBWU1ggYmVmb3JlIEFsdGl2ZWMuICAqLwotKyAgaWYgKFRBUkdFVF9WU1gg JiYgVlNYX1ZFQ1RPUl9NT0RFIChkbW9kZSkpCi0rICAgIHsKLSsgICAgICBydHggdnN4ID0gcnM2 MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmVfdnN4IChyY29kZSwgbWFzaywgb3AwLCBvcDEpOwotKyAg ICAgIGlmICh2c3gpCi0rCXJldHVybiB2c3g7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKFRBUkdFVF9B TFRJVkVDICYmIEFMVElWRUNfVkVDVE9SX01PREUgKGRtb2RlKSkKLSsgICAgewotKyAgICAgIHJ0 eCBhdiA9IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlX2FsdGl2ZWMgKHJjb2RlLCBtYXNrLCBv cDAsIG9wMSk7Ci0rICAgICAgaWYgKGF2KQotKwlyZXR1cm4gYXY7Ci0rICAgIH0KLSAKLS0gIGlm ICh2ZWNfY21wX2luc24gPT0gSU5TTl9OT1RfQVZBSUxBQkxFKQotKyAgc3dpdGNoIChyY29kZSkK LSAgICAgewotLSAgICAgIGJvb2wgc3dhcF9vcGVyYW5kcyA9IGZhbHNlOwotLSAgICAgIGJvb2wg dHJ5X2FnYWluID0gZmFsc2U7Ci0tICAgICAgc3dpdGNoIChyY29kZSkKLS0JewotLQljYXNlIExU OgotLQkgIHJjb2RlID0gR1Q7Ci0tCSAgc3dhcF9vcGVyYW5kcyA9IHRydWU7Ci0tCSAgdHJ5X2Fn YWluID0gdHJ1ZTsKLS0JICBicmVhazsKLS0JY2FzZSBMVFU6Ci0tCSAgcmNvZGUgPSBHVFU7Ci0t CSAgc3dhcF9vcGVyYW5kcyA9IHRydWU7Ci0tCSAgdHJ5X2FnYWluID0gdHJ1ZTsKLS0JICBicmVh azsKLS0JY2FzZSBORToKLS0JY2FzZSBVTkxFOgotLQljYXNlIFVOTFQ6Ci0tCWNhc2UgVU5HRToK LS0JY2FzZSBVTkdUOgotLQkgIC8qIEludmVydCBjb25kaXRpb24gYW5kIHRyeSBhZ2Fpbi4KLS0J ICAgICBlLmcuLCBBICE9IEIgYmVjb21lcyB+KEE9PUIpLiAgKi8KLS0JICB7Ci0tCSAgICBlbnVt IHJ0eF9jb2RlIHJldl9jb2RlOwotLQkgICAgZW51bSBpbnNuX2NvZGUgbm9yX2NvZGU7Ci0tCSAg ICBydHggZXFfcnR4OwotLQotLQkgICAgcmV2X2NvZGUgPSByZXZlcnNlX2NvbmRpdGlvbl9tYXli ZV91bm9yZGVyZWQgKHJjb2RlKTsKLS0JICAgIGVxX3J0eCA9IHJzNjAwMF9lbWl0X3ZlY3Rvcl9j b21wYXJlIChyZXZfY29kZSwgb3AwLCBvcDEsCi0tCQkJCQkJIGRlc3RfbW9kZSk7Ci0tCi0tCSAg ICBub3JfY29kZSA9IG9wdGFiX2hhbmRsZXIgKG9uZV9jbXBsX29wdGFiLCAoaW50KWRlc3RfbW9k ZSktPmluc25fY29kZTsKLS0JICAgIGdjY19hc3NlcnQgKG5vcl9jb2RlICE9IENPREVfRk9SX25v dGhpbmcpOwotLQkgICAgZW1pdF9pbnNuIChHRU5fRkNOIChub3JfY29kZSkgKG1hc2ssIGVxX3J0 eCkpOwotKyAgICBjYXNlIExUOgotKyAgICAgIHJjb2RlID0gR1Q7Ci0rICAgICAgc3dhcF9vcGVy YW5kcyA9IHRydWU7Ci0rICAgICAgdHJ5X2FnYWluID0gdHJ1ZTsKLSsgICAgICBicmVhazsKLSsg ICAgY2FzZSBMVFU6Ci0rICAgICAgcmNvZGUgPSBHVFU7Ci0rICAgICAgc3dhcF9vcGVyYW5kcyA9 IHRydWU7Ci0rICAgICAgdHJ5X2FnYWluID0gdHJ1ZTsKLSsgICAgICBicmVhazsKLSsgICAgY2Fz ZSBORToKLSsgICAgY2FzZSBVTkxFOgotKyAgICBjYXNlIFVOTFQ6Ci0rICAgIGNhc2UgVU5HRToK LSsgICAgY2FzZSBVTkdUOgotKyAgICAgIC8qIEludmVydCBjb25kaXRpb24gYW5kIHRyeSBhZ2Fp bi4KLSsJIGUuZy4sIEEgIT0gQiBiZWNvbWVzIH4oQT09QikuICAqLwotKyAgICAgIHsKLSsJZW51 bSBydHhfY29kZSByZXZfY29kZTsKLSsJZW51bSBpbnNuX2NvZGUgbm9yX2NvZGU7Ci0rCXJ0eCBl cV9ydHg7Ci0rCi0rCXJldl9jb2RlID0gcmV2ZXJzZV9jb25kaXRpb25fbWF5YmVfdW5vcmRlcmVk IChyY29kZSk7Ci0rCWVxX3J0eCA9IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlIChyZXZfY29k ZSwgb3AwLCBvcDEsIGRtb2RlKTsKLSsKLSsJbm9yX2NvZGUgPSBvcHRhYl9oYW5kbGVyIChvbmVf Y21wbF9vcHRhYiwgKGludClkbW9kZSktPmluc25fY29kZTsKLSsJZ2NjX2Fzc2VydCAobm9yX2Nv ZGUgIT0gQ09ERV9GT1Jfbm90aGluZyk7Ci0rCWVtaXRfaW5zbiAoR0VOX0ZDTiAobm9yX2NvZGUp IChtYXNrLCBlcV9ydHgpKTsKLSsJcmV0dXJuIG1hc2s7Ci0rICAgICAgfQotKyAgICAgIGJyZWFr OwotKyAgICBjYXNlIEdFOgotKyAgICBjYXNlIEdFVToKLSsgICAgY2FzZSBMRToKLSsgICAgY2Fz ZSBMRVU6Ci0rICAgICAgLyogVHJ5IEdUL0dUVS9MVC9MVFUgT1IgRVEgKi8KLSsgICAgICB7Ci0r CXJ0eCBjX3J0eCwgZXFfcnR4OwotKwllbnVtIGluc25fY29kZSBpb3JfY29kZTsKLSsJZW51bSBy dHhfY29kZSBuZXdfY29kZTsKLSAKLS0JICAgIGlmIChkbW9kZSAhPSBkZXN0X21vZGUpCi0tCSAg ICAgIHsKLS0JCXJ0eCB0ZW1wID0gZ2VuX3JlZ19ydHggKGRlc3RfbW9kZSk7Ci0tCQljb252ZXJ0 X21vdmUgKHRlbXAsIG1hc2ssIDApOwotLQkJcmV0dXJuIHRlbXA7Ci0tCSAgICAgIH0KLS0JICAg IHJldHVybiBtYXNrOwotLQkgIH0KLS0JICBicmVhazsKLS0JY2FzZSBHRToKLS0JY2FzZSBHRVU6 Ci0tCWNhc2UgTEU6Ci0tCWNhc2UgTEVVOgotLQkgIC8qIFRyeSBHVC9HVFUvTFQvTFRVIE9SIEVR ICovCi0rCXN3aXRjaCAocmNvZGUpCi0gCSAgewotLQkgICAgcnR4IGNfcnR4LCBlcV9ydHg7Ci0t CSAgICBlbnVtIGluc25fY29kZSBpb3JfY29kZTsKLS0JICAgIGVudW0gcnR4X2NvZGUgbmV3X2Nv ZGU7Ci0tCi0tCSAgICBzd2l0Y2ggKHJjb2RlKQotLQkgICAgICB7Ci0tCSAgICAgIGNhc2UgIEdF OgotLQkJbmV3X2NvZGUgPSBHVDsKLS0JCWJyZWFrOwotLQotLQkgICAgICBjYXNlIEdFVToKLS0J CW5ld19jb2RlID0gR1RVOwotLQkJYnJlYWs7Ci0rCSAgY2FzZSAgR0U6Ci0rCSAgICBuZXdfY29k ZSA9IEdUOwotKwkgICAgYnJlYWs7Ci0gCi0tCSAgICAgIGNhc2UgTEU6Ci0tCQluZXdfY29kZSA9 IExUOwotLQkJYnJlYWs7Ci0rCSAgY2FzZSBHRVU6Ci0rCSAgICBuZXdfY29kZSA9IEdUVTsKLSsJ ICAgIGJyZWFrOwotIAotLQkgICAgICBjYXNlIExFVToKLS0JCW5ld19jb2RlID0gTFRVOwotLQkJ YnJlYWs7Ci0rCSAgY2FzZSBMRToKLSsJICAgIG5ld19jb2RlID0gTFQ7Ci0rCSAgICBicmVhazsK LSAKLS0JICAgICAgZGVmYXVsdDoKLS0JCWdjY191bnJlYWNoYWJsZSAoKTsKLS0JICAgICAgfQot KwkgIGNhc2UgTEVVOgotKwkgICAgbmV3X2NvZGUgPSBMVFU7Ci0rCSAgICBicmVhazsKLSAKLS0J ICAgIGNfcnR4ID0gcnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmUgKG5ld19jb2RlLAotLQkJCQkJ CW9wMCwgb3AxLCBkZXN0X21vZGUpOwotLQkgICAgZXFfcnR4ID0gcnM2MDAwX2VtaXRfdmVjdG9y X2NvbXBhcmUgKEVRLCBvcDAsIG9wMSwKLS0JCQkJCQkgZGVzdF9tb2RlKTsKLS0KLS0JICAgIGlv cl9jb2RlID0gb3B0YWJfaGFuZGxlciAoaW9yX29wdGFiLCAoaW50KWRlc3RfbW9kZSktPmluc25f Y29kZTsKLS0JICAgIGdjY19hc3NlcnQgKGlvcl9jb2RlICE9IENPREVfRk9SX25vdGhpbmcpOwot LQkgICAgZW1pdF9pbnNuIChHRU5fRkNOIChpb3JfY29kZSkgKG1hc2ssIGNfcnR4LCBlcV9ydHgp KTsKLS0JICAgIGlmIChkbW9kZSAhPSBkZXN0X21vZGUpCi0tCSAgICAgIHsKLS0JCXJ0eCB0ZW1w ID0gZ2VuX3JlZ19ydHggKGRlc3RfbW9kZSk7Ci0tCQljb252ZXJ0X21vdmUgKHRlbXAsIG1hc2ss IDApOwotLQkJcmV0dXJuIHRlbXA7Ci0tCSAgICAgIH0KLS0JICAgIHJldHVybiBtYXNrOwotKwkg IGRlZmF1bHQ6Ci0rCSAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0gCSAgfQotLQkgIGJyZWFrOwot LQlkZWZhdWx0OgotLQkgIGdjY191bnJlYWNoYWJsZSAoKTsKLS0JfQotIAotLSAgICAgIGlmICh0 cnlfYWdhaW4pCi0tCXsKLS0JICB2ZWNfY21wX2luc24gPSBnZXRfdmVjX2NtcF9pbnNuIChyY29k ZSwgZGVzdF9tb2RlLCBvcF9tb2RlKTsKLS0JICAvKiBZb3Ugb25seSBnZXQgdHdvIGNoYW5jZXMu ICAqLwotLQkgIGdjY19hc3NlcnQgKHZlY19jbXBfaW5zbiAhPSBJTlNOX05PVF9BVkFJTEFCTEUp OwotLQl9Ci0rCWNfcnR4ID0gcnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmUgKG5ld19jb2RlLAot KwkJCQkJICAgIG9wMCwgb3AxLCBkbW9kZSk7Ci0rCWVxX3J0eCA9IHJzNjAwMF9lbWl0X3ZlY3Rv cl9jb21wYXJlIChFUSwgb3AwLCBvcDEsCi0rCQkJCQkgICAgIGRtb2RlKTsKLSsKLSsJaW9yX2Nv ZGUgPSBvcHRhYl9oYW5kbGVyIChpb3Jfb3B0YWIsIChpbnQpZG1vZGUpLT5pbnNuX2NvZGU7Ci0r CWdjY19hc3NlcnQgKGlvcl9jb2RlICE9IENPREVfRk9SX25vdGhpbmcpOwotKwllbWl0X2luc24g KEdFTl9GQ04gKGlvcl9jb2RlKSAobWFzaywgY19ydHgsIGVxX3J0eCkpOwotKwlyZXR1cm4gbWFz azsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgZ2NjX3Vu cmVhY2hhYmxlICgpOwotKyAgICB9Ci0gCi0rICBpZiAodHJ5X2FnYWluKQotKyAgICB7Ci0gICAg ICAgaWYgKHN3YXBfb3BlcmFuZHMpCi0gCXsKLSAJICBydHggdG1wOwotQEAgLTEzNTExLDY5ICsx NDg0NCwyMyBAQCByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSAoZW51bSBydHhfY29kCi0gCSAg b3AwID0gb3AxOwotIAkgIG9wMSA9IHRtcDsKLSAJfQotLSAgICB9Ci0tCi0tICBlbWl0X2luc24g KGdlbl9ydHhfU0VUIChWT0lEbW9kZSwgbWFzaywKLS0JCQkgIGdlbl9ydHhfVU5TUEVDIChkZXN0 X21vZGUsCi0tCQkJCQkgIGdlbl9ydHZlYyAoMiwgb3AwLCBvcDEpLAotLQkJCQkJICB2ZWNfY21w X2luc24pKSk7Ci0tICBpZiAoZG1vZGUgIT0gZGVzdF9tb2RlKQotLSAgICB7Ci0tICAgICAgcnR4 IHRlbXAgPSBnZW5fcmVnX3J0eCAoZGVzdF9tb2RlKTsKLS0gICAgICBjb252ZXJ0X21vdmUgKHRl bXAsIG1hc2ssIDApOwotLSAgICAgIHJldHVybiB0ZW1wOwotLSAgICB9Ci0tICByZXR1cm4gbWFz azsKLS19Ci0gCi0tLyogUmV0dXJuIHZlY3RvciBzZWxlY3QgaW5zdHJ1Y3Rpb24gZm9yIE1PREUu IFJldHVybiBJTlNOX05PVF9BVkFJTEFCTEUsIGlmCi0tICAgdmFsaWQgaW5zbiBkb2VzbiBleGlz dCBmb3IgZ2l2ZW4gbW9kZS4gICovCi0tCi0tc3RhdGljIGludAotLWdldF92c2VsX2luc24gKGVu dW0gbWFjaGluZV9tb2RlIG1vZGUpCi0tewotLSAgc3dpdGNoIChtb2RlKQotLSAgICB7Ci0tICAg IGNhc2UgVjRTSW1vZGU6Ci0tICAgICAgcmV0dXJuIFVOU1BFQ19WU0VMNFNJOwotLSAgICAgIGJy ZWFrOwotLSAgICBjYXNlIFY0U0Ztb2RlOgotLSAgICAgIHJldHVybiBVTlNQRUNfVlNFTDRTRjsK LS0gICAgICBicmVhazsKLS0gICAgY2FzZSBWOEhJbW9kZToKLS0gICAgICByZXR1cm4gVU5TUEVD X1ZTRUw4SEk7Ci0tICAgICAgYnJlYWs7Ci0tICAgIGNhc2UgVjE2UUltb2RlOgotLSAgICAgIHJl dHVybiBVTlNQRUNfVlNFTDE2UUk7Ci0tICAgICAgYnJlYWs7Ci0tICAgIGRlZmF1bHQ6Ci0tICAg ICAgcmV0dXJuIElOU05fTk9UX0FWQUlMQUJMRTsKLS0gICAgICBicmVhazsKLSsgICAgICBpZiAo VEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9SX01PREUgKGRtb2RlKSkKLSsJewotKwkgIHJ0eCB2c3gg PSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZV92c3ggKHJjb2RlLCBtYXNrLCBvcDAsIG9wMSk7 Ci0rCSAgaWYgKHZzeCkKLSsJICAgIHJldHVybiB2c3g7Ci0rCX0KLSsgICAgICBlbHNlIGlmIChU QVJHRVRfQUxUSVZFQyAmJiBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChkbW9kZSkpCi0rCXsKLSsJICBy dHggYXYgPSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZV9hbHRpdmVjIChyY29kZSwgbWFzaywg b3AwLCBvcDEpOwotKwkgIGlmIChhdikKLSsJICAgIHJldHVybiBhdjsKLSsJfQotICAgICB9Ci0t ICByZXR1cm4gSU5TTl9OT1RfQVZBSUxBQkxFOwotLX0KLS0KLS0vKiBFbWl0IHZlY3RvciBzZWxl Y3QgaW5zbiB3aGVyZSBERVNUIGlzIGRlc3RpbmF0aW9uIHVzaW5nCi0tICAgb3BlcmFuZHMgT1Ax LCBPUDIgYW5kIE1BU0suICAqLwotLQotLXN0YXRpYyB2b2lkCi0tcnM2MDAwX2VtaXRfdmVjdG9y X3NlbGVjdCAocnR4IGRlc3QsIHJ0eCBvcDEsIHJ0eCBvcDIsIHJ0eCBtYXNrKQotLXsKLS0gIHJ0 eCB0LCB0ZW1wOwotLSAgZW51bSBtYWNoaW5lX21vZGUgZGVzdF9tb2RlID0gR0VUX01PREUgKGRl c3QpOwotLSAgaW50IHZzZWxfaW5zbl9pbmRleCAgPSBnZXRfdnNlbF9pbnNuIChHRVRfTU9ERSAo ZGVzdCkpOwotLQotLSAgdGVtcCA9IGdlbl9yZWdfcnR4IChkZXN0X21vZGUpOwotIAotLSAgLyog Rm9yIGVhY2ggdmVjdG9yIGVsZW1lbnQsIHNlbGVjdCBvcDEgd2hlbiBtYXNrIGlzIDEgb3RoZXJ3 aXNlCi0tICAgICBzZWxlY3Qgb3AyLiAgKi8KLS0gIHQgPSBnZW5fcnR4X1NFVCAoVk9JRG1vZGUs IHRlbXAsCi0tCQkgICBnZW5fcnR4X1VOU1BFQyAoZGVzdF9tb2RlLAotLQkJCQkgICBnZW5fcnR2 ZWMgKDMsIG9wMiwgb3AxLCBtYXNrKSwKLS0JCQkJICAgdnNlbF9pbnNuX2luZGV4KSk7Ci0tICBl bWl0X2luc24gKHQpOwotLSAgZW1pdF9tb3ZlX2luc24gKGRlc3QsIHRlbXApOwotLSAgcmV0dXJu OwotKyAgLyogWW91IG9ubHkgZ2V0IHR3byBjaGFuY2VzLiAgKi8KLSsgIGdjY191bnJlYWNoYWJs ZSAoKTsKLSB9Ci0gCi0gLyogRW1pdCB2ZWN0b3IgY29uZGl0aW9uYWwgZXhwcmVzc2lvbi4KLUBA IC0xMzU4OCwxNSArMTQ4NzUsMjkgQEAgcnM2MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAocnR4 IGRlc3QsIAotICAgZW51bSBydHhfY29kZSByY29kZSA9IEdFVF9DT0RFIChjb25kKTsKLSAgIHJ0 eCBtYXNrOwotIAotLSAgaWYgKCFUQVJHRVRfQUxUSVZFQykKLSsgIGlmICghVEFSR0VUX0FMVElW RUMgJiYgIVRBUkdFVF9WU1gpCi0gICAgIHJldHVybiAwOwotIAotICAgLyogR2V0IHRoZSB2ZWN0 b3IgbWFzayBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uYWwgb3BlcmF0aW9ucy4gICovCi0gICBtYXNr ID0gcnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmUgKHJjb2RlLCBjY19vcDAsIGNjX29wMSwgZGVz dF9tb2RlKTsKLSAKLS0gIHJzNjAwMF9lbWl0X3ZlY3Rvcl9zZWxlY3QgKGRlc3QsIG9wMSwgb3Ay LCBtYXNrKTsKLSsgIGlmICghbWFzaykKLSsgICAgcmV0dXJuIDA7Ci0gCi0tICByZXR1cm4gMTsK LSsgIGlmICgoVEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9SX01PVkVfTU9ERSAoZGVzdF9tb2RlKSkK LSsgICAgICB8fCAoVEFSR0VUX0FMVElWRUMgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAoZGVzdF9t b2RlKSkpCi0rICAgIHsKLSsgICAgICBydHggY29uZDIgPSBnZW5fcnR4X2ZtdF9lZSAoTkUsIFZP SURtb2RlLCBtYXNrLCBjb25zdDBfcnR4KTsKLSsgICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VU IChWT0lEbW9kZSwKLSsJCQkgICAgICBkZXN0LAotKwkJCSAgICAgIGdlbl9ydHhfSUZfVEhFTl9F TFNFIChkZXN0X21vZGUsCi0rCQkJCQkJICAgIGNvbmQyLAotKwkJCQkJCSAgICBvcDEsCi0rCQkJ CQkJICAgIG9wMikpKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDA7 Ci0gfQotIAotIC8qIEVtaXQgYSBjb25kaXRpb25hbCBtb3ZlOiBtb3ZlIFRSVUVfQ09ORCB0byBE RVNUIGlmIE9QIG9mIHRoZQotQEAgLTEzNzkyLDggKzE1MDkzLDggQEAgcnM2MDAwX2VtaXRfaW50 X2Ntb3ZlIChydHggZGVzdCwgcnR4IG9wLAotIHsKLSAgIHJ0eCBjb25kaXRpb25fcnR4LCBjcjsK LSAKLS0gIC8qIEFsbCBpc2VsIGltcGxlbWVudGF0aW9ucyB0aHVzIGZhciBhcmUgMzItYml0cy4g ICovCi0tICBpZiAoR0VUX01PREUgKHJzNjAwMF9jb21wYXJlX29wMCkgIT0gU0ltb2RlKQotKyAg aWYgKEdFVF9NT0RFIChyczYwMDBfY29tcGFyZV9vcDApICE9IFNJbW9kZQotKyAgICAgICYmICgh VEFSR0VUX1BPV0VSUEM2NCB8fCBHRVRfTU9ERSAocnM2MDAwX2NvbXBhcmVfb3AwKSAhPSBESW1v ZGUpKQotICAgICByZXR1cm4gMDsKLSAKLSAgIC8qIFdlIHN0aWxsIGhhdmUgdG8gZG8gdGhlIGNv bXBhcmUsIGJlY2F1c2UgaXNlbCBkb2Vzbid0IGRvIGEKLUBAIC0xMzgwMiwxMiArMTUxMDMsMjQg QEAgcnM2MDAwX2VtaXRfaW50X2Ntb3ZlIChydHggZGVzdCwgcnR4IG9wLAotICAgY29uZGl0aW9u X3J0eCA9IHJzNjAwMF9nZW5lcmF0ZV9jb21wYXJlIChHRVRfQ09ERSAob3ApKTsKLSAgIGNyID0g WEVYUCAoY29uZGl0aW9uX3J0eCwgMCk7Ci0gCi0tICBpZiAoR0VUX01PREUgKGNyKSA9PSBDQ21v ZGUpCi0tICAgIGVtaXRfaW5zbiAoZ2VuX2lzZWxfc2lnbmVkIChkZXN0LCBjb25kaXRpb25fcnR4 LAotLQkJCQl0cnVlX2NvbmQsIGZhbHNlX2NvbmQsIGNyKSk7Ci0rICBpZiAoR0VUX01PREUgKHJz NjAwMF9jb21wYXJlX29wMCkgPT0gU0ltb2RlKQotKyAgICB7Ci0rICAgICAgaWYgKEdFVF9NT0RF IChjcikgPT0gQ0Ntb2RlKQotKwllbWl0X2luc24gKGdlbl9pc2VsX3NpZ25lZF9zaSAoZGVzdCwg Y29uZGl0aW9uX3J0eCwKLSsJCQkJICAgICAgIHRydWVfY29uZCwgZmFsc2VfY29uZCwgY3IpKTsK LSsgICAgICBlbHNlCi0rCWVtaXRfaW5zbiAoZ2VuX2lzZWxfdW5zaWduZWRfc2kgKGRlc3QsIGNv bmRpdGlvbl9ydHgsCi0rCQkJCQkgdHJ1ZV9jb25kLCBmYWxzZV9jb25kLCBjcikpOwotKyAgICB9 Ci0gICBlbHNlCi0tICAgIGVtaXRfaW5zbiAoZ2VuX2lzZWxfdW5zaWduZWQgKGRlc3QsIGNvbmRp dGlvbl9ydHgsCi0tCQkJCSAgdHJ1ZV9jb25kLCBmYWxzZV9jb25kLCBjcikpOwotKyAgICB7Ci0r ICAgICAgaWYgKEdFVF9NT0RFIChjcikgPT0gQ0Ntb2RlKQotKwllbWl0X2luc24gKGdlbl9pc2Vs X3NpZ25lZF9kaSAoZGVzdCwgY29uZGl0aW9uX3J0eCwKLSsJCQkJICAgICAgIHRydWVfY29uZCwg ZmFsc2VfY29uZCwgY3IpKTsKLSsgICAgICBlbHNlCi0rCWVtaXRfaW5zbiAoZ2VuX2lzZWxfdW5z aWduZWRfZGkgKGRlc3QsIGNvbmRpdGlvbl9ydHgsCi0rCQkJCQkgdHJ1ZV9jb25kLCBmYWxzZV9j b25kLCBjcikpOwotKyAgICB9Ci0gCi0gICByZXR1cm4gMTsKLSB9Ci1AQCAtMTM4MzQsNiArMTUx NDcsMTUgQEAgcnM2MDAwX2VtaXRfbWlubWF4IChydHggZGVzdCwgZW51bSBydHhfYwotICAgZW51 bSBydHhfY29kZSBjOwotICAgcnR4IHRhcmdldDsKLSAKLSsgIC8qIFZTWC9hbHRpdmVjIGhhdmUg ZGlyZWN0IG1pbi9tYXggaW5zbnMuICAqLwotKyAgaWYgKChjb2RlID09IFNNQVggfHwgY29kZSA9 PSBTTUlOKSAmJiBWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChtb2RlKSkKLSsgICAgewot KyAgICAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLAotKwkJCSAgICAgIGRlc3Qs Ci0rCQkJICAgICAgZ2VuX3J0eF9mbXRfZWUgKGNvZGUsIG1vZGUsIG9wMCwgb3AxKSkpOwotKyAg ICAgIHJldHVybjsKLSsgICAgfQotKwotICAgaWYgKGNvZGUgPT0gU01BWCB8fCBjb2RlID09IFNN SU4pCi0gICAgIGMgPSBHRTsKLSAgIGVsc2UKLUBAIC0xNTgxMSw2ICsxNzEzMyw3IEBAIGVtaXRf ZnJhbWVfc2F2ZSAocnR4IGZyYW1lX3JlZywgcnR4IGZyYW0KLSAKLSAgIC8qIFNvbWUgY2FzZXMg dGhhdCBuZWVkIHJlZ2lzdGVyIGluZGV4ZWQgYWRkcmVzc2luZy4gICovCi0gICBpZiAoKFRBUkdF VF9BTFRJVkVDX0FCSSAmJiBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSsgICAgICB8fCAo VEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9SX01PREUgKG1vZGUpKQotICAgICAgIHx8IChUQVJHRVRf RTUwMF9ET1VCTEUgJiYgbW9kZSA9PSBERm1vZGUpCi0gICAgICAgfHwgKFRBUkdFVF9TUEVfQUJJ Ci0gCSAgJiYgU1BFX1ZFQ1RPUl9NT0RFIChtb2RlKQotQEAgLTE4OTIzLDYgKzIwMjQ2LDcgQEAg cnM2MDAwX2FkanVzdF9jb3N0IChydHggaW5zbiwgcnR4IGxpbmssIAotICAgICAgICAgICAgICAg ICAgfHwgcnM2MDAwX2NwdV9hdHRyID09IENQVV9QUEM3NDUwCi0gICAgICAgICAgICAgICAgICB8 fCByczYwMDBfY3B1X2F0dHIgPT0gQ1BVX1BPV0VSNAotICAgICAgICAgICAgICAgICAgfHwgcnM2 MDAwX2NwdV9hdHRyID09IENQVV9QT1dFUjUKLSsJCSB8fCAocnM2MDAwX2NwdV9hdHRyID09IENQ VV9QT1dFUjcgJiYgVEFSR0VUX1BPV0VSN19BREpVU1RfQ09TVCkKLSAgICAgICAgICAgICAgICAg IHx8IHJzNjAwMF9jcHVfYXR0ciA9PSBDUFVfQ0VMTCkKLSAgICAgICAgICAgICAgICAgJiYgcmVj b2dfbWVtb2l6ZWQgKGRlcF9pbnNuKQotICAgICAgICAgICAgICAgICAmJiAoSU5TTl9DT0RFIChk ZXBfaW5zbikgPj0gMCkpCi1AQCAtMTkxNjIsNiArMjA0ODYsMzUgQEAgcnM2MDAwX2FkanVzdF9j b3N0IChydHggaW5zbiwgcnR4IGxpbmssIAotICAgcmV0dXJuIGNvc3Q7Ci0gfQotIAotKy8qIERl YnVnIHZlcnNpb24gb2YgcnM2MDAwX2FkanVzdF9jb3N0LiAgKi8KLSsKLStzdGF0aWMgaW50Ci0r cnM2MDAwX2RlYnVnX2FkanVzdF9jb3N0IChydHggaW5zbiwgcnR4IGxpbmssIHJ0eCBkZXBfaW5z biwgaW50IGNvc3QpCi0rewotKyAgaW50IHJldCA9IHJzNjAwMF9hZGp1c3RfY29zdCAoaW5zbiwg bGluaywgZGVwX2luc24sIGNvc3QpOwotKwotKyAgaWYgKHJldCAhPSBjb3N0KQotKyAgICB7Ci0r ICAgICAgY29uc3QgY2hhciAqZGVwOwotKwotKyAgICAgIHN3aXRjaCAoUkVHX05PVEVfS0lORCAo bGluaykpCi0rCXsKLSsJZGVmYXVsdDoJICAgICBkZXAgPSAidW5rbm93biBkZXBlbmNlbmN5Ijsg YnJlYWs7Ci0rCWNhc2UgUkVHX0RFUF9UUlVFOiAgIGRlcCA9ICJkYXRhIGRlcGVuZGVuY3kiOwkg YnJlYWs7Ci0rCWNhc2UgUkVHX0RFUF9PVVRQVVQ6IGRlcCA9ICJvdXRwdXQgZGVwZW5kZW5jeSI7 ICBicmVhazsKLSsJY2FzZSBSRUdfREVQX0FOVEk6ICAgZGVwID0gImFudGkgZGVwZW5jZW5jeSI7 CSBicmVhazsKLSsJfQotKwotKyAgICAgIGZwcmludGYgKHN0ZGVyciwKLSsJICAgICAgICJcbnJz NjAwMF9hZGp1c3RfY29zdCwgZmluYWwgY29zdCA9ICVkLCBvcmlnIGNvc3QgPSAlZCwgIgotKwkg ICAgICAgIiVzLCBpbnNuOlxuIiwgcmV0LCBjb3N0LCBkZXApOwotKwotKyAgICAgIGRlYnVnX3J0 eCAoaW5zbik7Ci0rICAgIH0KLSsKLSsgIHJldHVybiByZXQ7Ci0rfQotKwotIC8qIFRoZSBmdW5j dGlvbiByZXR1cm5zIGEgdHJ1ZSBpZiBJTlNOIGlzIG1pY3JvY29kZWQuCi0gICAgUmV0dXJuIGZh bHNlIG90aGVyd2lzZS4gICovCi0gCi1AQCAtMTk0NDMsNiArMjA3OTYsNyBAQCByczYwMDBfaXNz dWVfcmF0ZSAodm9pZCkKLSAgIGNhc2UgQ1BVX1BPV0VSNDoKLSAgIGNhc2UgQ1BVX1BPV0VSNToK LSAgIGNhc2UgQ1BVX1BPV0VSNjoKLSsgIGNhc2UgQ1BVX1BPV0VSNzoKLSAgICAgcmV0dXJuIDU7 Ci0gICBkZWZhdWx0OgotICAgICByZXR1cm4gMTsKLUBAIC0yMDA0NCw2ICsyMTM5OCw0MSBAQCBp bnNuX211c3RfYmVfZmlyc3RfaW5fZ3JvdXAgKHJ0eCBpbnNuKQotICAgICAgICAgICBicmVhazsK LSAgICAgICAgIH0KLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9DRVNTT1JfUE9XRVI3Ogot KyAgICAgIHR5cGUgPSBnZXRfYXR0cl90eXBlIChpbnNuKTsKLSsKLSsgICAgICBzd2l0Y2ggKHR5 cGUpCi0rICAgICAgICB7Ci0rICAgICAgICBjYXNlIFRZUEVfQ1JfTE9HSUNBTDoKLSsgICAgICAg IGNhc2UgVFlQRV9NRkNSOgotKyAgICAgICAgY2FzZSBUWVBFX01GQ1JGOgotKyAgICAgICAgY2Fz ZSBUWVBFX01UQ1I6Ci0rICAgICAgICBjYXNlIFRZUEVfSURJVjoKLSsgICAgICAgIGNhc2UgVFlQ RV9MRElWOgotKyAgICAgICAgY2FzZSBUWVBFX0NPTVBBUkU6Ci0rICAgICAgICBjYXNlIFRZUEVf REVMQVlFRF9DT01QQVJFOgotKyAgICAgICAgY2FzZSBUWVBFX1ZBUl9ERUxBWUVEX0NPTVBBUkU6 Ci0rICAgICAgICBjYXNlIFRZUEVfSVNZTkM6Ci0rICAgICAgICBjYXNlIFRZUEVfTE9BRF9MOgot KyAgICAgICAgY2FzZSBUWVBFX1NUT1JFX0M6Ci0rICAgICAgICBjYXNlIFRZUEVfTE9BRF9VOgot KyAgICAgICAgY2FzZSBUWVBFX0xPQURfVVg6Ci0rICAgICAgICBjYXNlIFRZUEVfTE9BRF9FWFQ6 Ci0rICAgICAgICBjYXNlIFRZUEVfTE9BRF9FWFRfVToKLSsgICAgICAgIGNhc2UgVFlQRV9MT0FE X0VYVF9VWDoKLSsgICAgICAgIGNhc2UgVFlQRV9TVE9SRV9VOgotKyAgICAgICAgY2FzZSBUWVBF X1NUT1JFX1VYOgotKyAgICAgICAgY2FzZSBUWVBFX0ZQTE9BRF9VOgotKyAgICAgICAgY2FzZSBU WVBFX0ZQTE9BRF9VWDoKLSsgICAgICAgIGNhc2UgVFlQRV9GUFNUT1JFX1U6Ci0rICAgICAgICBj YXNlIFRZUEVfRlBTVE9SRV9VWDoKLSsgICAgICAgIGNhc2UgVFlQRV9NRkpNUFI6Ci0rICAgICAg ICBjYXNlIFRZUEVfTVRKTVBSOgotKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgIGRl ZmF1bHQ6Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICAgIGJyZWFrOwotICAg ICBkZWZhdWx0OgotICAgICAgIGJyZWFrOwotICAgICB9Ci1AQCAtMjAxMDUsNiArMjE0OTQsMjMg QEAgaW5zbl9tdXN0X2JlX2xhc3RfaW5fZ3JvdXAgKHJ0eCBpbnNuKQotICAgICAgICAgYnJlYWs7 Ci0gICAgIH0KLSAgICAgYnJlYWs7Ci0rICBjYXNlIFBST0NFU1NPUl9QT1dFUjc6Ci0rICAgIHR5 cGUgPSBnZXRfYXR0cl90eXBlIChpbnNuKTsKLSsKLSsgICAgc3dpdGNoICh0eXBlKQotKyAgICAg IHsKLSsgICAgICBjYXNlIFRZUEVfSVNZTkM6Ci0rICAgICAgY2FzZSBUWVBFX1NZTkM6Ci0rICAg ICAgY2FzZSBUWVBFX0xPQURfTDoKLSsgICAgICBjYXNlIFRZUEVfU1RPUkVfQzoKLSsgICAgICBj YXNlIFRZUEVfTE9BRF9FWFRfVToKLSsgICAgICBjYXNlIFRZUEVfTE9BRF9FWFRfVVg6Ci0rICAg ICAgY2FzZSBUWVBFX1NUT1JFX1VYOgotKyAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgZGVm YXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGJyZWFrOwotICAgZGVmYXVsdDoK LSAgICAgYnJlYWs7Ci0gICB9Ci1AQCAtMjA2NzcsOCArMjIwODMsOCBAQCByczYwMDBfaGFuZGxl X2FsdGl2ZWNfYXR0cmlidXRlICh0cmVlICpuCi0gICBlbHNlIGlmICh0eXBlID09IGxvbmdfbG9u Z191bnNpZ25lZF90eXBlX25vZGUKLSAgICAgICAgICAgIHx8IHR5cGUgPT0gbG9uZ19sb25nX2lu dGVnZXJfdHlwZV9ub2RlKQotICAgICBlcnJvciAoInVzZSBvZiAlPGxvbmcgbG9uZyU+IGluIEFs dGlWZWMgdHlwZXMgaXMgaW52YWxpZCIpOwotLSAgZWxzZSBpZiAodHlwZSA9PSBkb3VibGVfdHlw ZV9ub2RlKQotLSAgICBlcnJvciAoInVzZSBvZiAlPGRvdWJsZSU+IGluIEFsdGlWZWMgdHlwZXMg aXMgaW52YWxpZCIpOwotKyAgZWxzZSBpZiAodHlwZSA9PSBkb3VibGVfdHlwZV9ub2RlICYmICFU QVJHRVRfVlNYKQotKyAgICBlcnJvciAoInVzZSBvZiAlPGRvdWJsZSU+IGluIEFsdGlWZWMgdHlw ZXMgaXMgaW52YWxpZCB3aXRob3V0IC1tdnN4Iik7Ci0gICBlbHNlIGlmICh0eXBlID09IGxvbmdf ZG91YmxlX3R5cGVfbm9kZSkKLSAgICAgZXJyb3IgKCJ1c2Ugb2YgJTxsb25nIGRvdWJsZSU+IGlu IEFsdGlWZWMgdHlwZXMgaXMgaW52YWxpZCIpOwotICAgZWxzZSBpZiAodHlwZSA9PSBib29sZWFu X3R5cGVfbm9kZSkKLUBAIC0yMDcwNCw2ICsyMjExMCw3IEBAIHJzNjAwMF9oYW5kbGVfYWx0aXZl Y19hdHRyaWJ1dGUgKHRyZWUgKm4KLSAJICByZXN1bHQgPSAodW5zaWduZWRfcCA/IHVuc2lnbmVk X1YxNlFJX3R5cGVfbm9kZSA6IFYxNlFJX3R5cGVfbm9kZSk7Ci0gCSAgYnJlYWs7Ci0gCWNhc2Ug U0Ztb2RlOiByZXN1bHQgPSBWNFNGX3R5cGVfbm9kZTsgYnJlYWs7Ci0rCWNhc2UgREZtb2RlOiBy ZXN1bHQgPSBWMkRGX3R5cGVfbm9kZTsgYnJlYWs7Ci0gCSAgLyogSWYgdGhlIHVzZXIgc2F5cyAn dmVjdG9yIGludCBib29sJywgd2UgbWF5IGJlIGhhbmRlZCB0aGUgJ2Jvb2wnCi0gCSAgICAgYXR0 cmlidXRlIF9iZWZvcmVfIHRoZSAndmVjdG9yJyBhdHRyaWJ1dGUsIGFuZCBzbyBzZWxlY3QgdGhl Ci0gCSAgICAgcHJvcGVyIHR5cGUgaW4gdGhlICdiJyBjYXNlIGJlbG93LiAgKi8KLUBAIC0yMjI0 Miw2ICsyMzY0OSw0MyBAQCByczYwMDBfcnR4X2Nvc3RzIChydHggeCwgaW50IGNvZGUsIGludCBv Ci0gICByZXR1cm4gZmFsc2U7Ci0gfQotIAotKy8qIERlYnVnIGZvcm0gb2YgcjYwMDBfcnR4X2Nv c3RzIHRoYXQgaXMgc2VsZWN0ZWQgaWYgLW1kZWJ1Zz1jb3N0LiAgKi8KLSsKLStzdGF0aWMgYm9v bAotK3JzNjAwMF9kZWJ1Z19ydHhfY29zdHMgKHJ0eCB4LCBpbnQgY29kZSwgaW50IG91dGVyX2Nv ZGUsIGludCAqdG90YWwsCi0rCQkJYm9vbCBzcGVlZCkKLSt7Ci0rICBib29sIHJldCA9IHJzNjAw MF9ydHhfY29zdHMgKHgsIGNvZGUsIG91dGVyX2NvZGUsIHRvdGFsLCBzcGVlZCk7Ci0rCi0rICBm cHJpbnRmIChzdGRlcnIsCi0rCSAgICJcbnJzNjAwMF9ydHhfY29zdHMsIHJldHVybiA9ICVzLCBj b2RlID0gJXMsIG91dGVyX2NvZGUgPSAlcywgIgotKwkgICAidG90YWwgPSAlZCwgc3BlZWQgPSAl cywgeDpcbiIsCi0rCSAgIHJldCA/ICJjb21wbGV0ZSIgOiAic2NhbiBpbm5lciIsCi0rCSAgIEdF VF9SVFhfTkFNRSAoY29kZSksCi0rCSAgIEdFVF9SVFhfTkFNRSAob3V0ZXJfY29kZSksCi0rCSAg ICp0b3RhbCwKLSsJICAgc3BlZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSsKLSsgIGRlYnVnX3J0 eCAoeCk7Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLSsKLSsvKiBEZWJ1ZyBmb3JtIG9mIEFERFJF U1NfQ09TVCB0aGF0IGlzIHNlbGVjdGVkIGlmIC1tZGVidWc9Y29zdC4gICovCi0rCi0rc3RhdGlj IGludAotK3JzNjAwMF9kZWJ1Z19hZGRyZXNzX2Nvc3QgKHJ0eCB4LCBib29sIHNwZWVkKQotK3sK LSsgIGludCByZXQgPSBUQVJHRVRfQUREUkVTU19DT1NUICh4LCBzcGVlZCk7Ci0rCi0rICBmcHJp bnRmIChzdGRlcnIsICJcbnJzNjAwMF9hZGRyZXNzX2Nvc3QsIHJldHVybiA9ICVkLCBzcGVlZCA9 ICVzLCB4OlxuIiwKLSsJICAgcmV0LCBzcGVlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotKyAgZGVi dWdfcnR4ICh4KTsKLSsKLSsgIHJldHVybiByZXQ7Ci0rfQotKwotKwotIC8qIEEgQyBleHByZXNz aW9uIHJldHVybmluZyB0aGUgY29zdCBvZiBtb3ZpbmcgZGF0YSBmcm9tIGEgcmVnaXN0ZXIgb2Yg Y2xhc3MKLSAgICBDTEFTUzEgdG8gb25lIG9mIENMQVNTMi4gICovCi0gCi1AQCAtMjIyNTYsNyAr MjM3MDAsNyBAQCByczYwMDBfcmVnaXN0ZXJfbW92ZV9jb3N0IChlbnVtIG1hY2hpbmVfCi0gICAg ICAgaWYgKCEgcmVnX2NsYXNzZXNfaW50ZXJzZWN0X3AgKHRvLCBHRU5FUkFMX1JFR1MpKQotIAlm cm9tID0gdG87Ci0gCi0tICAgICAgaWYgKGZyb20gPT0gRkxPQVRfUkVHUyB8fCBmcm9tID09IEFM VElWRUNfUkVHUykKLSsgICAgICBpZiAoZnJvbSA9PSBGTE9BVF9SRUdTIHx8IGZyb20gPT0gQUxU SVZFQ19SRUdTIHx8IGZyb20gPT0gVlNYX1JFR1MpCi0gCXJldHVybiAocnM2MDAwX21lbW9yeV9t b3ZlX2Nvc3QgKG1vZGUsIGZyb20sIDApCi0gCQkrIHJzNjAwMF9tZW1vcnlfbW92ZV9jb3N0ICht b2RlLCBHRU5FUkFMX1JFR1MsIDApKTsKLSAKLUBAIC0yMjI3Niw2ICsyMzcyMCwxMiBAQCByczYw MDBfcmVnaXN0ZXJfbW92ZV9jb3N0IChlbnVtIG1hY2hpbmVfCi0gCXJldHVybiAyICogaGFyZF9y ZWdub19ucmVnc1swXVttb2RlXTsKLSAgICAgfQotIAotKyAgLyogSWYgd2UgaGF2ZSBWU1gsIHdl IGNhbiBlYXNpbHkgbW92ZSBiZXR3ZWVuIEZQUiBvciBBbHRpdmVjIHJlZ2lzdGVycy4gICovCi0r ICBlbHNlIGlmIChUQVJHRVRfVlNYCi0rCSAgICYmICgoZnJvbSA9PSBWU1hfUkVHUyB8fCBmcm9t ID09IEZMT0FUX1JFR1MgfHwgZnJvbSA9PSBBTFRJVkVDX1JFR1MpCi0rCSAgICAgICB8fCAodG8g PT0gVlNYX1JFR1MgfHwgdG8gPT0gRkxPQVRfUkVHUyB8fCB0byA9PSBBTFRJVkVDX1JFR1MpKSkK LSsgICAgcmV0dXJuIDI7Ci0rCi0gICAvKiBNb3ZpbmcgYmV0d2VlbiB0d28gc2ltaWxhciByZWdp c3RlcnMgaXMganVzdCBvbmUgaW5zdHJ1Y3Rpb24uICAqLwotICAgZWxzZSBpZiAocmVnX2NsYXNz ZXNfaW50ZXJzZWN0X3AgKHRvLCBmcm9tKSkKLSAgICAgcmV0dXJuIChtb2RlID09IFRGbW9kZSB8 fCBtb2RlID09IFREbW9kZSkgPyA0IDogMjsKLUBAIC0yMjUxNiw4ICsyMzk2Niw4IEBAIHJzNjAw MF9lbWl0X3N3cnNxcnRzZiAocnR4IGRzdCwgcnR4IHNyYykKLSAgIGVtaXRfbGFiZWwgKFhFWFAg KGxhYmVsLCAwKSk7Ci0gfQotIAotLS8qIEVtaXQgcG9wY291bnQgaW50cmluc2ljIG9uIFRBUkdF VF9QT1BDTlRCIHRhcmdldHMuICBEU1QgaXMgdGhlCi0tICAgdGFyZ2V0LCBhbmQgU1JDIGlzIHRo ZSBhcmd1bWVudCBvcGVyYW5kLiAgKi8KLSsvKiBFbWl0IHBvcGNvdW50IGludHJpbnNpYyBvbiBU QVJHRVRfUE9QQ05UQiAoUG93ZXI1KSBhbmQgVEFSR0VUX1BPUENOVEQKLSsgICAoUG93ZXI3KSB0 YXJnZXRzLiAgRFNUIGlzIHRoZSB0YXJnZXQsIGFuZCBTUkMgaXMgdGhlIGFyZ3VtZW50IG9wZXJh bmQuICAqLwotIAotIHZvaWQKLSByczYwMDBfZW1pdF9wb3Bjb3VudCAocnR4IGRzdCwgcnR4IHNy YykKLUBAIC0yMjUyNSw2ICsyMzk3NSwxNiBAQCByczYwMDBfZW1pdF9wb3Bjb3VudCAocnR4IGRz dCwgcnR4IHNyYykKLSAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUgPSBHRVRfTU9ERSAoZHN0KTsK LSAgIHJ0eCB0bXAxLCB0bXAyOwotIAotKyAgLyogVXNlIHRoZSBQUEMgSVNBIDIuMDYgcG9wY250 e3csZH0gaW5zdHJ1Y3Rpb24gaWYgd2UgY2FuLiAgKi8KLSsgIGlmIChUQVJHRVRfUE9QQ05URCkK LSsgICAgewotKyAgICAgIGlmIChtb2RlID09IFNJbW9kZSkKLSsJZW1pdF9pbnNuIChnZW5fcG9w Y250d3NpMiAoZHN0LCBzcmMpKTsKLSsgICAgICBlbHNlCi0rCWVtaXRfaW5zbiAoZ2VuX3BvcGNu dGRkaTIgKGRzdCwgc3JjKSk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICB0bXAxID0g Z2VuX3JlZ19ydHggKG1vZGUpOwotIAotICAgaWYgKG1vZGUgPT0gU0ltb2RlKQotQEAgLTIyOTM3 LDcgKzI0Mzk3LDcgQEAgcnM2MDAwX3ZlY3Rvcl9tb2RlX3N1cHBvcnRlZF9wIChlbnVtIG1hYwot ICAgaWYgKFRBUkdFVF9TUEUgJiYgU1BFX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSAgICAgcmV0dXJu IHRydWU7Ci0gCi0tICBlbHNlIGlmIChUQVJHRVRfQUxUSVZFQyAmJiBBTFRJVkVDX1ZFQ1RPUl9N T0RFIChtb2RlKSkKLSsgIGVsc2UgaWYgKFZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKG1v ZGUpKQotICAgICByZXR1cm4gdHJ1ZTsKLSAKLSAgIGVsc2UKLS0tLSBnY2MvY29uZmlnL3JzNjAw MC92c3gubWQJKC4uLi90cnVuaykJKHJldmlzaW9uIDApCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAv dnN4Lm1kCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NjAy NykKLUBAIC0wLDAgKzEsMTAwNCBAQAotKzs7IFZTWCBwYXR0ZXJucy4KLSs7OyBDb3B5cmlnaHQg KEMpIDIwMDkKLSs7OyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSs7OyBDb250cmli dXRlZCBieSBNaWNoYWVsIE1laXNzbmVyIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0r Ci0rOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgotKwotKzs7IEdDQyBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rOzsgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQK LSs7OyBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBv ciAoYXQgeW91cgotKzs7IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rOzsgR0NDIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI T1VUCi0rOzsgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZCi0rOzsgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotKzs7IExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKzs7IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUg Q09QWUlORzMuICBJZiBub3Qgc2VlCi0rOzsgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotKzs7IEl0ZXJhdG9yIGZvciBib3RoIHNjYWxhciBhbmQgdmVjdG9yIGZsb2F0aW5nIHBv aW50IHR5cGVzIHN1cHBvcnRlZCBieSBWU1gKLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVlNYX0Ig W0RGIFY0U0YgVjJERl0pCi0rCi0rOzsgSXRlcmF0b3IgZm9yIHZlY3RvciBmbG9hdGluZyBwb2lu dCB0eXBlcyBzdXBwb3J0ZWQgYnkgVlNYCi0rKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZTWF9GIFtW NFNGIFYyREZdKQotKwotKzs7IEl0ZXJhdG9yIGZvciBsb2dpY2FsIHR5cGVzIHN1cHBvcnRlZCBi eSBWU1gKLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVlNYX0wgW1YxNlFJIFY4SEkgVjRTSSBWMkRJ IFY0U0YgVjJERiBUSV0pCi0rCi0rOzsgSXRlcmF0b3IgZm9yIHR5cGVzIGZvciBsb2FkL3N0b3Jl IHdpdGggdXBkYXRlCi0rKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZTWF9VIFtWMTZRSSBWOEhJIFY0 U0kgVjJESSBWNFNGIFYyREYgVEkgREZdKQotKwotKzs7IE1hcCBpbnRvIHRoZSBhcHByb3ByaWF0 ZSBsb2FkL3N0b3JlIG5hbWUgYmFzZWQgb24gdGhlIHR5cGUKLSsoZGVmaW5lX21vZGVfYXR0ciBW U20gIFsoVjE2UUkgInZ3NCIpCi0rCQkJKFY4SEkgICJ2dzQiKQotKwkJCShWNFNJICAidnc0IikK LSsJCQkoVjRTRiAgInZ3NCIpCi0rCQkJKFYyREYgICJ2ZDIiKQotKwkJCShWMkRJICAidmQyIikK LSsJCQkoREYgICAgImQiKQotKwkJCShUSSAgICAidnc0IildKQotKwotKzs7IE1hcCBpbnRvIHRo ZSBhcHByb3ByaWF0ZSBzdWZmaXggYmFzZWQgb24gdGhlIHR5cGUKLSsoZGVmaW5lX21vZGVfYXR0 ciBWU3MJWyhWMTZRSSAic3AiKQotKwkJCSAoVjhISSAgInNwIikKLSsJCQkgKFY0U0kgICJzcCIp Ci0rCQkJIChWNFNGICAic3AiKQotKwkJCSAoVjJERiAgImRwIikKLSsJCQkgKFYyREkgICJkcCIp Ci0rCQkJIChERiAgICAiZHAiKQotKwkJCSAoVEkgICAgInNwIildKQotKwotKzs7IE1hcCBpbnRv IHRoZSByZWdpc3RlciBjbGFzcyB1c2VkCi0rKGRlZmluZV9tb2RlX2F0dHIgVlNyCVsoVjE2UUkg InYiKQotKwkJCSAoVjhISSAgInYiKQotKwkJCSAoVjRTSSAgInYiKQotKwkJCSAoVjRTRiAgIndm IikKLSsJCQkgKFYyREkgICJ3ZCIpCi0rCQkJIChWMkRGICAid2QiKQotKwkJCSAoREYgICAgIndz IikKLSsJCQkgKFRJICAgICJ3ZCIpXSkKLSsKLSs7OyBNYXAgaW50byB0aGUgcmVnaXN0ZXIgY2xh c3MgdXNlZCBmb3IgZmxvYXQ8LT5pbnQgY29udmVyc2lvbnMKLSsoZGVmaW5lX21vZGVfYXR0ciBW U3IyCVsoVjJERiAgIndkIikKLSsJCQkgKFY0U0YgICJ3ZiIpCi0rCQkJIChERiAgICAiIWYjciIp XSkKLSsKLSsoZGVmaW5lX21vZGVfYXR0ciBWU3IzCVsoVjJERiAgIndhIikKLSsJCQkgKFY0U0Yg ICJ3YSIpCi0rCQkJIChERiAgICAiIWYjciIpXSkKLSsKLSs7OyBTYW1lIHNpemUgaW50ZWdlciB0 eXBlIGZvciBmbG9hdGluZyBwb2ludCBkYXRhCi0rKGRlZmluZV9tb2RlX2F0dHIgVlNpIFsoVjRT RiAgInY0c2kiKQotKwkJICAgICAgIChWMkRGICAidjJkaSIpCi0rCQkgICAgICAgKERGICAgICJk aSIpXSkKLSsKLSsoZGVmaW5lX21vZGVfYXR0ciBWU0kgWyhWNFNGICAiVjRTSSIpCi0rCQkgICAg ICAgKFYyREYgICJWMkRJIikKLSsJCSAgICAgICAoREYgICAgIkRJIildKQotKwotKzs7IFdvcmQg c2l6ZSBmb3Igc2FtZSBzaXplIGNvbnZlcnNpb24KLSsoZGVmaW5lX21vZGVfYXR0ciBWU2MgWyhW NFNGICJ3IikKLSsJCSAgICAgICAoVjJERiAiZCIpCi0rCQkgICAgICAgKERGICAgImQiKV0pCi0r Ci0rOzsgQml0c2l6ZSBmb3IgREYgbG9hZCB3aXRoIHVwZGF0ZQotKyhkZWZpbmVfbW9kZV9hdHRy IFZTYml0IFsoU0kgIjMyIikKLSsJCQkgKERJICI2NCIpXSkKLSsKLSs7OyBNYXAgaW50byBlaXRo ZXIgcyBvciB2LCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGlzIGlzIGEgc2NhbGFyIG9yIHZlY3Rv cgotKzs7IG9wZXJhdGlvbgotKyhkZWZpbmVfbW9kZV9hdHRyIFZTdglbKFYxNlFJICJ2IikKLSsJ CQkgKFY4SEkgICJ2IikKLSsJCQkgKFY0U0kgICJ2IikKLSsJCQkgKFY0U0YgICJ2IikKLSsJCQkg KFYyREkgICJ2IikKLSsJCQkgKFYyREYgICJ2IikKLSsJCQkgKFRJICAgICJ2IikKLSsJCQkgKERG ICAgICJzIildKQotKwotKzs7IEFwcHJvcHJpYXRlIHR5cGUgZm9yIGFkZCBvcHMgKGFuZCBvdGhl ciBzaW1wbGUgRlAgb3BzKQotKyhkZWZpbmVfbW9kZV9hdHRyIFZTdHlwZV9zaW1wbGUJWyhWMkRG ICJ2ZWNmbG9hdCIpCi0rCQkJCSAoVjRTRiAidmVjZmxvYXQiKQotKwkJCQkgKERGICAgImZwIild KQotKwotKyhkZWZpbmVfbW9kZV9hdHRyIFZTZnB0eXBlX3NpbXBsZSBbKFYyREYgImZwX2FkZHN1 Yl9kIikKLSsJCQkJICAgKFY0U0YgImZwX2FkZHN1Yl9zIikKLSsJCQkJICAgKERGICAgImZwX2Fk ZHN1Yl9kIildKQotKwotKzs7IEFwcHJvcHJpYXRlIHR5cGUgZm9yIG11bHRpcGx5IG9wcwotKyhk ZWZpbmVfbW9kZV9hdHRyIFZTdHlwZV9tdWwJWyhWMkRGICJ2ZWNmbG9hdCIpCi0rCQkJCSAoVjRT RiAidmVjZmxvYXQiKQotKwkJCQkgKERGICAgImRtdWwiKV0pCi0rCi0rKGRlZmluZV9tb2RlX2F0 dHIgVlNmcHR5cGVfbXVsCVsoVjJERiAiZnBfbXVsX2QiKQotKwkJCQkgKFY0U0YgImZwX211bF9z IikKLSsJCQkJIChERiAgICJmcF9tdWxfZCIpXSkKLSsKLSs7OyBBcHByb3ByaWF0ZSB0eXBlIGZv ciBkaXZpZGUgb3BzLiAgRm9yIG5vdywganVzdCBsdW1wIHRoZSB2ZWN0b3IgZGl2aWRlIHdpdGgK LSs7OyB0aGUgc2NhbGFyIGRpdmlkZXMKLSsoZGVmaW5lX21vZGVfYXR0ciBWU3R5cGVfZGl2CVso VjJERiAiZGRpdiIpCi0rCQkJCSAoVjRTRiAic2RpdiIpCi0rCQkJCSAoREYgICAiZGRpdiIpXSkK LSsKLSsoZGVmaW5lX21vZGVfYXR0ciBWU2ZwdHlwZV9kaXYJWyhWMkRGICJmcF9kaXZfZCIpCi0r CQkJCSAoVjRTRiAiZnBfZGl2X3MiKQotKwkJCQkgKERGICAgImZwX2Rpdl9kIildKQotKwotKzs7 IEFwcHJvcHJpYXRlIHR5cGUgZm9yIHNxcnQgb3BzLiAgRm9yIG5vdywganVzdCBsdW1wIHRoZSB2 ZWN0b3Igc3FydCB3aXRoCi0rOzsgdGhlIHNjYWxhciBzcXJ0Ci0rKGRlZmluZV9tb2RlX2F0dHIg VlN0eXBlX3NxcnQJWyhWMkRGICJkc3FydCIpCi0rCQkJCSAoVjRTRiAic2RpdiIpCi0rCQkJCSAo REYgICAiZGRpdiIpXSkKLSsKLSsoZGVmaW5lX21vZGVfYXR0ciBWU2ZwdHlwZV9zcXJ0CVsoVjJE RiAiZnBfc3FydF9kIikKLSsJCQkJIChWNFNGICJmcF9zcXJ0X3MiKQotKwkJCQkgKERGICAgImZw X3NxcnRfZCIpXSkKLSsKLSs7OyBBcHByb3ByaWF0ZSB0eXBlIGZvciBsb2FkICsgdXBkYXRlCi0r KGRlZmluZV9tb2RlX2F0dHIgVlN0eXBlX2xvYWRfdXBkYXRlIFsoVjE2UUkgInZlY2xvYWQiKQot KwkJCQkgICAgICAoVjhISSAgInZlY2xvYWQiKQotKwkJCQkgICAgICAoVjRTSSAgInZlY2xvYWQi KQotKwkJCQkgICAgICAoVjRTRiAgInZlY2xvYWQiKQotKwkJCQkgICAgICAoVjJESSAgInZlY2xv YWQiKQotKwkJCQkgICAgICAoVjJERiAgInZlY2xvYWQiKQotKwkJCQkgICAgICAoVEkgICAgInZl Y2xvYWQiKQotKwkJCQkgICAgICAoREYgICAgImZwbG9hZCIpXSkKLSsKLSs7OyBBcHByb3ByaWF0 ZSB0eXBlIGZvciBzdG9yZSArIHVwZGF0ZQotKyhkZWZpbmVfbW9kZV9hdHRyIFZTdHlwZV9zdG9y ZV91cGRhdGUgWyhWMTZRSSAidmVjc3RvcmUiKQotKwkJCQkgICAgICAgKFY4SEkgICJ2ZWNzdG9y ZSIpCi0rCQkJCSAgICAgICAoVjRTSSAgInZlY3N0b3JlIikKLSsJCQkJICAgICAgIChWNFNGICAi dmVjc3RvcmUiKQotKwkJCQkgICAgICAgKFYyREkgICJ2ZWNzdG9yZSIpCi0rCQkJCSAgICAgICAo VjJERiAgInZlY3N0b3JlIikKLSsJCQkJICAgICAgIChUSSAgICAidmVjc3RvcmUiKQotKwkJCQkg ICAgICAgKERGICAgICJmcHN0b3JlIildKQotKwotKzs7IENvbnN0YW50cyBmb3IgY3JlYXRpbmcg dW5zcGVjcwotKyhkZWZpbmVfY29uc3RhbnRzCi0rICBbKFVOU1BFQ19WU1hfQ09OQ0FUX1YyREYJ NTAwKQotKyAgIChVTlNQRUNfVlNYX1hWQ1ZEUFNQCQk1MDEpCi0rICAgKFVOU1BFQ19WU1hfWFZD VkRQU1hXUwk1MDIpCi0rICAgKFVOU1BFQ19WU1hfWFZDVkRQVVhXUwk1MDMpCi0rICAgKFVOU1BF Q19WU1hfWFZDVlNQRFAJCTUwNCkKLSsgICAoVU5TUEVDX1ZTWF9YVkNWU1hXRFAJNTA1KQotKyAg IChVTlNQRUNfVlNYX1hWQ1ZVWFdEUAk1MDYpCi0rICAgKFVOU1BFQ19WU1hfWFZNQURECQk1MDcp Ci0rICAgKFVOU1BFQ19WU1hfWFZNU1VCCQk1MDgpCi0rICAgKFVOU1BFQ19WU1hfWFZOTUFERAkJ NTA5KQotKyAgIChVTlNQRUNfVlNYX1hWTk1TVUIJCTUxMCkKLSsgICAoVU5TUEVDX1ZTWF9YVlJT UVJURQkJNTExKQotKyAgIChVTlNQRUNfVlNYX1hWVERJVgkJNTEyKQotKyAgIChVTlNQRUNfVlNY X1hWVFNRUlQJCTUxMyldKQotKwotKzs7IFZTWCBtb3ZlcwotKyhkZWZpbmVfaW5zbiAiKnZzeF9t b3Y8bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfTCAwICJub25pbW1lZGlhdGVf b3BlcmFuZCIgIj1aLDxWU3I+LDxWU3I+LD9aLD93YSw/d2EsKm8sKnIsKnIsPFZTcj4sP3dhLHYs d1osdiIpCi0rCShtYXRjaF9vcGVyYW5kOlZTWF9MIDEgImlucHV0X29wZXJhbmQiICI8VlNyPixa LDxWU3I+LHdhLFosd2EscixvLHIsaixqLFcsdix3WiIpKV0KLSsgICJWRUNUT1JfTUVNX1ZTWF9Q ICg8TU9ERT5tb2RlKQotKyAgICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgPE1P REU+bW9kZSkgCi0rICAgICAgIHx8IHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzFdLCA8TU9E RT5tb2RlKSkiCi0rewotKyAgc3dpdGNoICh3aGljaF9hbHRlcm5hdGl2ZSkKLSsgICAgewotKyAg ICBjYXNlIDA6Ci0rICAgIGNhc2UgMzoKLSsgICAgICByZXR1cm4gInN0eDxWU20+JVUweCAleDEs JXkwIjsKLSsKLSsgICAgY2FzZSAxOgotKyAgICBjYXNlIDQ6Ci0rICAgICAgcmV0dXJuICJseDxW U20+JVUweCAleDAsJXkxIjsKLSsKLSsgICAgY2FzZSAyOgotKyAgICBjYXNlIDU6Ci0rICAgICAg cmV0dXJuICJ4eGxvciAleDAsJXgxLCV4MSI7Ci0rCi0rICAgIGNhc2UgNjoKLSsgICAgY2FzZSA3 OgotKyAgICBjYXNlIDg6Ci0rICAgICAgcmV0dXJuICIjIjsKLSsKLSsgICAgY2FzZSA5OgotKyAg ICBjYXNlIDEwOgotKyAgICAgIHJldHVybiAieHhseG9yICV4MCwleDAsJXgwIjsKLSsKLSsgICAg Y2FzZSAxMToKLSsgICAgICByZXR1cm4gb3V0cHV0X3ZlY19jb25zdF9tb3ZlIChvcGVyYW5kcyk7 Ci0rCi0rICAgIGNhc2UgMTI6Ci0rICAgICAgcmV0dXJuICJzdHZ4ICUxLCV5MCI7Ci0rCi0rICAg IGNhc2UgMTM6Ci0rICAgICAgcmV0dXJuICJsdnggJTAsJXkxIjsKLSsKLSsgICAgZGVmYXVsdDoK LSsgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0rICAgIH0KLSt9Ci0rICBbKHNldF9hdHRyICJ0 eXBlIiAidmVjc3RvcmUsdmVjbG9hZCx2ZWNzaW1wbGUsdmVjc3RvcmUsdmVjbG9hZCx2ZWNzaW1w bGUsKiwqLCosdmVjc2ltcGxlLHZlY3NpbXBsZSwqLHZlY3N0b3JlLHZlY2xvYWQiKV0pCi0rCi0r OzsgTG9hZC9zdG9yZSB3aXRoIHVwZGF0ZQotKzs7IERlZmluZSBpbnNucyB0aGF0IGRvIGxvYWQg b3Igc3RvcmUgd2l0aCB1cGRhdGUuICBCZWNhdXNlIFZTWCBvbmx5IGhhcwotKzs7IHJlZytyZWcg YWRkcmVzc2luZywgcHJlLWRlY3JlbWVudCBvciBwcmUtaW5yZW1lbnQgaXMgdW5saWtlbHkgdG8g YmUKLSs7OyBnZW5lcmF0ZWQuCi0rOzsKLSs7OyBJbiBhbGwgdGhlc2UgY2FzZXMsIHdlIHVzZSBv cGVyYW5kcyAwIGFuZCAxIGZvciB0aGUgcmVnaXN0ZXIgYmVpbmcKLSs7OyBpbmNyZW1lbnRlZCBi ZWNhdXNlIHRob3NlIGFyZSB0aGUgb3BlcmFuZHMgdGhhdCBsb2NhbC1hbGxvYyB3aWxsCi0rOzsg dGllIGFuZCB0aGVzZSBhcmUgdGhlIHBhaXIgbW9zdCBsaWtlbHkgdG8gYmUgdGllYWJsZSAoYW5k IHRoZSBvbmVzCi0rOzsgdGhhdCB3aWxsIGJlbmVmaXQgdGhlIG1vc3QpLgotKwotKyhkZWZpbmVf aW5zbiAiKnZzeF9sb2FkPFZTWF9VOm1vZGU+X3VwZGF0ZV88UDptcHRyc2l6ZT4iCi0rICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWU1hfVSAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/ d2EiKQotKwkobWVtOlZTWF9VIChwbHVzOlAgKG1hdGNoX29wZXJhbmQ6UCAxICJncGNfcmVnX29w ZXJhbmQiICIwLDAiKQotKwkJCSAgIChtYXRjaF9vcGVyYW5kOlAgMiAiZ3BjX3JlZ19vcGVyYW5k IiAicixyIikpKSkKLSsgICAoc2V0IChtYXRjaF9vcGVyYW5kOlAgMCAiZ3BjX3JlZ19vcGVyYW5k IiAiPWIsYiIpCi0rCShwbHVzOlAgKG1hdGNoX2R1cCAxKQotKwkJKG1hdGNoX2R1cCAyKSkpXQot KyAgIjxQOnRwdHJzaXplPiAmJiBUQVJHRVRfVVBEQVRFICYmIFZFQ1RPUl9NRU1fVlNYX1AgKDxN T0RFPm1vZGUpIgotKyAgImx4PFZTbT51eCAleDMsJTAsJTIiCi0rICBbKHNldF9hdHRyICJ0eXBl IiAiPFZTWF9VOlZTdHlwZV9sb2FkX3VwZGF0ZT4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4 X3N0b3JlPG1vZGU+X3VwZGF0ZV88UDptcHRyc2l6ZT4iCi0rICBbKHNldCAobWVtOlZTWF9VIChw bHVzOlAgKG1hdGNoX29wZXJhbmQ6UCAxICJncGNfcmVnX29wZXJhbmQiICIwLDAiKQotKwkJCSAg IChtYXRjaF9vcGVyYW5kOlAgMiAiZ3BjX3JlZ19vcGVyYW5kIiAicixyIikpKQotKwkobWF0Y2hf b3BlcmFuZDpWU1hfVSAzICJncGNfcmVnX29wZXJhbmQiICI8VlNyPiw/d2EiKSkKLSsgICAoc2V0 IChtYXRjaF9vcGVyYW5kOlAgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWIsYiIpCi0rCShwbHVzOlAg KG1hdGNoX2R1cCAxKQotKwkJKG1hdGNoX2R1cCAyKSkpXQotKyAgIjxQOnRwdHJzaXplPiAmJiBU QVJHRVRfVVBEQVRFICYmIFZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInN0eDxW U20+dXggJXgzLCUwLCUyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU1hfVTpWU3R5cGVfc3Rv cmVfdXBkYXRlPiIpXSkKLSsKLSs7OyBXZSBtYXkgbmVlZCB0byBoYXZlIGEgdmFyaWVudCBvbiB0 aGUgcGF0dGVybiBmb3IgdXNlIGluIHRoZSBwcm9sb2d1ZQotKzs7IHRoYXQgZG9lc24ndCBkZXBl bmQgb24gVEFSR0VUX1VQREFURS4KLSsKLSsMCi0rOzsgVlNYIHNjYWxhciBhbmQgdmVjdG9yIGZs b2F0aW5nIHBvaW50IGFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25zCi0rKGRlZmluZV9pbnNuICIqdnN4 X2FkZDxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQotKyAgICAgICAgKHBsdXM6VlNYX0IgKG1hdGNoX29w ZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpCi0rCQkgICAg KG1hdGNoX29wZXJhbmQ6VlNYX0IgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIp KSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIng8VlN2PmFkZDxW U3M+ICV4MCwleDEsJXgyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIp Ci0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCi0rCi0rKGRl ZmluZV9pbnNuICIqdnN4X3N1Yjxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hf QiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQotKyAgICAgICAgKG1pbnVz OlZTWF9CIChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZT cj4sd2EiKQotKwkJICAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIjxWU3I+LHdhIikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSki Ci0rICAieDxWU3Y+c3ViPFZTcz4gJXgwLCV4MSwleDIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAi PFZTdHlwZV9zaW1wbGU+IikKLSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8VlNmcHR5cGVfc2lt cGxlPiIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfbXVsPG1vZGU+MyIKLSsgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIp Ci0rICAgICAgICAobXVsdDpWU1hfQiAobWF0Y2hfb3BlcmFuZDpWU1hfQiAxICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2 c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hf UCAoPE1PREU+bW9kZSkiCi0rICAieDxWU3Y+bXVsPFZTcz4gJXgwLCV4MSwleDIiCi0rICBbKHNl dF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9tdWw+IikKLSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8 VlNmcHR5cGVfbXVsPiIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfZGl2PG1vZGU+MyIKLSsg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxW U3I+LD93YSIpCi0rICAgICAgICAoZGl2OlZTWF9CIChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKQotKwkgCSAgIChtYXRjaF9vcGVyYW5kOlZT WF9CIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKSkpXQotKyAgIlZFQ1RPUl9V TklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4PFZTdj5kaXY8VlNzPiAleDAsJXgxLCV4MiIK LSsgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX2Rpdj4iKQotKyAgIChzZXRfYXR0ciAiZnBf dHlwZSIgIjxWU2ZwdHlwZV9kaXY+IildKQotKwotKyhkZWZpbmVfaW5zbiAidnN4X3RkaXY8bW9k ZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICI9PFZTcj4sP3dhIikKLSsJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0Ig MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpCi0rCQkgICAgICAgKG1hdGNoX29w ZXJhbmQ6VlNYX0IgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpXQotKwkJICAg ICAgVU5TUEVDX1ZTWF9YVlRESVYpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9k ZSkiCi0rICAieDxWU3Y+dGRpdjxWU3M+ICV4MCwleDEsJXgyIgotKyAgWyhzZXRfYXR0ciAidHlw ZSIgIjxWU3R5cGVfc2ltcGxlPiIpCi0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBl X3NpbXBsZT4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hfZnJlPG1vZGU+MiIKLSsgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93 YSIpCi0rCSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPFZTcj4sd2EiKV0KLSsJCSAgICAgIFVOU1BFQ19GUkVTKSldCi0rICAiVkVD VE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIng8VlN2PnJlPFZTcz4gJXgwLCV4MSIK LSsgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX3NpbXBsZT4iKQotKyAgIChzZXRfYXR0ciAi ZnBfdHlwZSIgIjxWU2ZwdHlwZV9zaW1wbGU+IildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9u ZWc8bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSsgICAgICAgIChuZWc6VlNYX0IgKG1hdGNoX29wZXJh bmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpKSldCi0rICAiVkVD VE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIng8VlN2Pm5lZzxWU3M+ICV4MCwleDEi Ci0rICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9zaW1wbGU+IikKLSsgICAoc2V0X2F0dHIg ImZwX3R5cGUiICI8VlNmcHR5cGVfc2ltcGxlPiIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hf YWJzPG1vZGU+MiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rICAgICAgICAoYWJzOlZTWF9CIChtYXRjaF9vcGVy YW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKSkpXQotKyAgIlZF Q1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4PFZTdj5hYnM8VlNzPiAleDAsJXgx IgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIpCi0rICAgKHNldF9hdHRy ICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hf bmFiczxtb2RlPjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQotKyAgICAgICAgKG5lZzpWU1hfQgotKwkgKGFiczpW U1hfQgotKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi PFZTcj4sd2EiKSkpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAi eDxWU3Y+bmFiczxWU3M+ICV4MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9z aW1wbGU+IikKLSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8VlNmcHR5cGVfc2ltcGxlPiIpXSkK LSsKLSsoZGVmaW5lX2luc24gInZzeF9zbWF4PG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rICAgICAg ICAoc21heDpWU1hfQiAobWF0Y2hfb3BlcmFuZDpWU1hfQiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIjxWU3I+LHdhIikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+ bW9kZSkiCi0rICAieDxWU3Y+bWF4PFZTcz4gJXgwLCV4MSwleDIiCi0rICBbKHNldF9hdHRyICJ0 eXBlIiAiPFZTdHlwZV9zaW1wbGU+IikKLSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8VlNmcHR5 cGVfc2ltcGxlPiIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfc21pbjxtb2RlPjMiCi0rICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNy Piw/d2EiKQotKyAgICAgICAgKHNtaW46VlNYX0IgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6VlNY X0IgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpKSldCi0rICAiVkVDVE9SX1VO SVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIng8VlN2Pm1pbjxWU3M+ICV4MCwleDEsJXgyIgot KyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIpCi0rICAgKHNldF9hdHRyICJm cF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4X3Nx cnQ8bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSsgICAgICAgIChzcXJ0OlZTWF9CIChtYXRjaF9vcGVy YW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKSkpXQotKyAgIlZF Q1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4PFZTdj5zcXJ0PFZTcz4gJXgwLCV4 MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX3NxcnQ+IikKLSsgICAoc2V0X2F0dHIg ImZwX3R5cGUiICI8VlNmcHR5cGVfc3FydD4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hfcnNx cnRlPG1vZGU+MiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rCSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5k OlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKV0KLSsJCSAgICAgIFVO U1BFQ19WU1hfWFZSU1FSVEUpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSki Ci0rICAieDxWU3Y+cnNxcnRlPFZTcz4gJXgwLCV4MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICI8 VlN0eXBlX3NpbXBsZT4iKQotKyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgIjxWU2ZwdHlwZV9zaW1w bGU+IildKQotKwotKyhkZWZpbmVfaW5zbiAidnN4X3RzcXJ0PG1vZGU+MiIKLSsgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIp Ci0rCSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAiPFZTcj4sd2EiKV0KLSsJCSAgICAgIFVOU1BFQ19WU1hfWFZUU1FSVCkpXQotKyAg IlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4PFZTdj50c3FydDxWU3M+ICV4 MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9zaW1wbGU+IikKLSsgICAoc2V0 X2F0dHIgImZwX3R5cGUiICI8VlNmcHR5cGVfc2ltcGxlPiIpXSkKLSsKLSs7OyBGdXNlZCB2ZWN0 b3IgbXVsdGlwbHkvYWRkIGluc3RydWN0aW9ucwotKwotKzs7IE5vdGUgd2UgaGF2ZSBhIHBhdHRl cm4gZm9yIHRoZSBtdWx0aXBseS9hZGQgb3BlcmF0aW9ucyB0aGF0IHVzZXMgdW5zcGVjIGFuZAot Kzs7IGRvZXMgbm90IGNoZWNrIC1tZnVzZWQtbWFkZCB0byBhbGxvdyB1c2VycyB0byB1c2UgdGhl c2Ugb3BzIHdoZW4gdGhleSBrbm93Ci0rOzsgdGhleSB3YW50IHRoZSBmdXNlZCBtdWx0aXBseS9h ZGQuCi0rCi0rKGRlZmluZV9leHBhbmQgInZzeF9mbWFkZDxtb2RlPjQiCi0rICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rCShwbHVzOlZT WF9CCi0rCSAobXVsdDpWU1hfQgotKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiIikKLSsJICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIiIpKQotKwkgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMyAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICIiKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSt7 Ci0rICBpZiAoIVRBUkdFVF9GVVNFRF9NQUREKQotKyAgICB7Ci0rICAgICAgZW1pdF9pbnNuIChn ZW5fdnN4X2ZtYWRkPG1vZGU+NF8yIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRz WzJdLAotKwkJCQkJIG9wZXJhbmRzWzNdKSk7Ci0rICAgICAgRE9ORTsKLSsgICAgfQotK30pCi0r Ci0rKGRlZmluZV9pbnNuICIqdnN4X2ZtYWRkPG1vZGU+NF8xIgotKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sPFZTcj4sP3dhLD93 YSIpCi0rCShwbHVzOlZTWF9CCi0rCSAobXVsdDpWU1hfQgotKwkgIChtYXRjaF9vcGVyYW5kOlZT WF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJTxWU3I+LDxWU3I+LHdhLHdhIikKLSsJICAo bWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LDAsd2Es MCIpKQotKwkgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIw LDxWU3I+LDAsd2EiKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSAmJiBU QVJHRVRfRlVTRURfTUFERCIKLSsgICJACi0rICAgeDxWU3Y+bWFkZGE8VlNzPiAleDAsJXgxLCV4 MgotKyAgIHg8VlN2Pm1hZGRtPFZTcz4gJXgwLCV4MSwleDMKLSsgICB4PFZTdj5tYWRkYTxWU3M+ ICV4MCwleDEsJXgyCi0rICAgeDxWU3Y+bWFkZG08VlNzPiAleDAsJXgxLCV4MyIKLSsgIFsoc2V0 X2F0dHIgInR5cGUiICI8VlN0eXBlX211bD4iKQotKyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgIjxW U2ZwdHlwZV9tdWw+IildKQotKwotKyhkZWZpbmVfaW5zbiAidnN4X2ZtYWRkPG1vZGU+NF8yIgot KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9 PFZTcj4sPFZTcj4sP3dhLD93YSIpCi0rCSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZT WF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJTxWU3I+LDxWU3I+LHdhLHdhIikKLSsJCSAg ICAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+ LDAsd2EsMCIpCi0rCQkgICAgICAgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMyAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICIwLDxWU3I+LDAsd2EiKV0KLSsJCSAgICAgIFVOU1BFQ19WU1hfWFZNQUREKSld Ci0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIkAKLSsgICB4PFZTdj5t YWRkYTxWU3M+ICV4MCwleDEsJXgyCi0rICAgeDxWU3Y+bWFkZG08VlNzPiAleDAsJXgxLCV4Mwot KyAgIHg8VlN2Pm1hZGRhPFZTcz4gJXgwLCV4MSwleDIKLSsgICB4PFZTdj5tYWRkbTxWU3M+ICV4 MCwleDEsJXgzIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfbXVsPiIpCi0rICAgKHNl dF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX211bD4iKV0pCi0rCi0rKGRlZmluZV9leHBhbmQg InZzeF9mbXN1Yjxtb2RlPjQiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rCShtaW51czpWU1hfQgotKwkgKG11bHQ6VlNYX0IKLSsJ ICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rCSAg KG1hdGNoX29wZXJhbmQ6VlNYX0IgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIiKSkKLSsJICht YXRjaF9vcGVyYW5kOlZTWF9CIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikpKV0KLSsgICJW RUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rewotKyAgaWYgKCFUQVJHRVRfRlVTRURf TUFERCkKLSsgICAgewotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3ZzeF9mbXN1Yjxtb2RlPjRfMiAo b3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwKLSsJCQkJCSBvcGVyYW5kc1sz XSkpOwotKyAgICAgIERPTkU7Ci0rICAgIH0KLSt9KQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9m bXN1Yjxtb2RlPjRfMSIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPTxWU3I+LDxWU3I+LD93YSw/d2EiKQotKwkobWludXM6VlNYX0IKLSsJ IChtdWx0OlZTWF9CCi0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICIlPFZTcj4sPFZTcj4sd2Esd2EiKQotKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9CIDIg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3YSwwIikpCi0rCSAobWF0Y2hfb3BlcmFu ZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsPFZTcj4sMCx3YSIpKSldCi0rICAi VkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpICYmIFRBUkdFVF9GVVNFRF9NQUREIgotKyAg IkAKLSsgICB4PFZTdj5tc3ViYTxWU3M+ICV4MCwleDEsJXgyCi0rICAgeDxWU3Y+bXN1Ym08VlNz PiAleDAsJXgxLCV4MwotKyAgIHg8VlN2Pm1zdWJhPFZTcz4gJXgwLCV4MSwleDIKLSsgICB4PFZT dj5tc3VibTxWU3M+ICV4MCwleDEsJXgzIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVf bXVsPiIpCi0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX211bD4iKV0pCi0rCi0r KGRlZmluZV9pbnNuICJ2c3hfZm1zdWI8bW9kZT40XzIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw8VlNyPiw/d2EsP3dhIikK LSsJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICIlPFZTcj4sPFZTcj4sd2Esd2EiKQotKwkJICAgICAgIChtYXRjaF9vcGVyYW5kOlZT WF9CIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3YSwwIikKLSsJCSAgICAgICAo bWF0Y2hfb3BlcmFuZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsPFZTcj4sMCx3 YSIpXQotKwkJICAgICAgVU5TUEVDX1ZTWF9YVk1TVUIpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hf UCAoPE1PREU+bW9kZSkiCi0rICAiQAotKyAgIHg8VlN2Pm1zdWJhPFZTcz4gJXgwLCV4MSwleDIK LSsgICB4PFZTdj5tc3VibTxWU3M+ICV4MCwleDEsJXgzCi0rICAgeDxWU3Y+bXN1YmE8VlNzPiAl eDAsJXgxLCV4MgotKyAgIHg8VlN2Pm1zdWJtPFZTcz4gJXgwLCV4MSwleDMiCi0rICBbKHNldF9h dHRyICJ0eXBlIiAiPFZTdHlwZV9tdWw+IikKLSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8VlNm cHR5cGVfbXVsPiIpXSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidnN4X2ZubWFkZDxtb2RlPjQiCi0r ICBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIiKQotKyAg IChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikKLSsgICAo bWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rICAgKG1h dGNoX29wZXJhbmQ6VlNYX0IgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIiKV0KLSsgICJWRUNU T1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rewotKyAgaWYgKFRBUkdFVF9GVVNFRF9NQURE ICYmIEhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSkKLSsgICAgewotKyAgICAgICBlbWl0X2lu c24gKGdlbl92c3hfZm5tYWRkPG1vZGU+NF8xIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCi0r CQkJCQkgICBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pKTsKLSsgICAgICAgRE9ORTsKLSsgICAg fQotKyAgZWxzZSBpZiAoVEFSR0VUX0ZVU0VEX01BREQgJiYgIUhPTk9SX1NJR05FRF9aRVJPUyAo REZtb2RlKSkKLSsgICAgewotKyAgICAgICBlbWl0X2luc24gKGdlbl92c3hfZm5tYWRkPG1vZGU+ NF8yIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCi0rCQkJCQkgICBvcGVyYW5kc1syXSwgb3Bl cmFuZHNbM10pKTsKLSsgICAgICAgRE9ORTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAg ICAgIGVtaXRfaW5zbiAoZ2VuX3ZzeF9mbm1hZGQ8bW9kZT40XzMgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSwKLSsJCQkJCSAgIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1szXSkpOwotKyAgICAgICBE T05FOwotKyAgICB9Ci0rfSkKLSsKLSsoZGVmaW5lX2luc24gInZzeF9mbm1hZGQ8bW9kZT40XzEi Ci0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIg Ij08VlNyPiw8VlNyPiw/d2EsP3dhIikKLSsJKG5lZzpWU1hfQgotKwkgKHBsdXM6VlNYX0IKLSsJ ICAobXVsdDpWU1hfQgotKwkgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAxICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIjxWU3I+LDxWU3I+LHdhLHdhIikKLSsJICAgKG1hdGNoX29wZXJhbmQ6VlNYX0Ig MiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiwwLHdhLDAiKSkKLSsJICAobWF0Y2hfb3Bl cmFuZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsPFZTcj4sMCx3YSIpKSkpXQot KyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSAmJiBUQVJHRVRfRlVTRURfTUFERAot KyAgICYmIEhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSIKLSsgICJACi0rICAgeDxWU3Y+bm1h ZGRhPFZTcz4gJXgwLCV4MSwleDIKLSsgICB4PFZTdj5ubWFkZG08VlNzPiAleDAsJXgxLCV4Mwot KyAgIHg8VlN2Pm5tYWRkYTxWU3M+ICV4MCwleDEsJXgyCi0rICAgeDxWU3Y+bm1hZGRtPFZTcz4g JXgwLCV4MSwleDMiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9tdWw+IikKLSsgICAo c2V0X2F0dHIgImZwX3R5cGUiICI8VlNmcHR5cGVfbXVsPiIpXSkKLSsKLSsoZGVmaW5lX2luc24g InZzeF9mbm1hZGQ8bW9kZT40XzIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2 c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw8VlNyPiw/d2EsP3dhIikKLSsJKG1pbnVzOlZT WF9CCi0rCSAobXVsdDpWU1hfQgotKwkgIChuZWc6VlNYX0IKLSsJICAgKG1hdGNoX29wZXJhbmQ6 VlNYX0IgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiPFZTcj4sPFZTcj4sd2Esd2EiKSkKLSsJICAobWF0 Y2hfb3BlcmFuZDpWU1hfQiAyICJncGNfcmVnX29wZXJhbmQiICI8VlNyPiwwLHdhLDAiKSkKLSsJ IChtYXRjaF9vcGVyYW5kOlZTWF9CIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiMCw8VlNyPiww LHdhIikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkgJiYgVEFSR0VUX0ZV U0VEX01BREQKLSsgICAmJiAhSE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUpIgotKyAgIkAKLSsg ICB4PFZTdj5ubWFkZGE8VlNzPiAleDAsJXgxLCV4MgotKyAgIHg8VlN2Pm5tYWRkbTxWU3M+ICV4 MCwleDEsJXgzCi0rICAgeDxWU3Y+bm1hZGRhPFZTcz4gJXgwLCV4MSwleDIKLSsgICB4PFZTdj5u bWFkZG08VlNzPiAleDAsJXgxLCV4MyIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX211 bD4iKQotKyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgIjxWU2ZwdHlwZV9tdWw+IildKQotKwotKyhk ZWZpbmVfaW5zbiAidnN4X2ZubWFkZDxtb2RlPjRfMyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LDxWU3I+LD93YSw/d2EiKQot KwkodW5zcGVjOlZTWF9CIFsobWF0Y2hfb3BlcmFuZDpWU1hfQiAxICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIjxWU3I+LDxWU3I+LHdhLHdhIikKLSsJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWU1hf QiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LDAsd2EsMCIpCi0rCQkgICAgICAgKG1h dGNoX29wZXJhbmQ6VlNYX0IgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIwLDxWU3I+LDAsd2Ei KV0KLSsJCSAgICAgIFVOU1BFQ19WU1hfWFZOTUFERCkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9Q ICg8TU9ERT5tb2RlKSIKLSsgICJACi0rICAgeDxWU3Y+bm1hZGRhPFZTcz4gJXgwLCV4MSwleDIK LSsgICB4PFZTdj5ubWFkZG08VlNzPiAleDAsJXgxLCV4MwotKyAgIHg8VlN2Pm5tYWRkYTxWU3M+ ICV4MCwleDEsJXgyCi0rICAgeDxWU3Y+bm1hZGRtPFZTcz4gJXgwLCV4MSwleDMiCi0rICBbKHNl dF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9tdWw+IikKLSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8 VlNmcHR5cGVfbXVsPiIpXSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidnN4X2ZubXN1Yjxtb2RlPjQi Ci0rICBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIiKQot KyAgIChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIikKLSsg ICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rICAg KG1hdGNoX29wZXJhbmQ6VlNYX0IgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIiKV0KLSsgICJW RUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rewotKyAgaWYgKFRBUkdFVF9GVVNFRF9N QUREICYmIEhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSkKLSsgICAgewotKyAgICAgICBlbWl0 X2luc24gKGdlbl92c3hfZm5tc3ViPG1vZGU+NF8xIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0s Ci0rCQkJCQkgICBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pKTsKLSsgICAgICAgRE9ORTsKLSsg ICAgfQotKyAgZWxzZSBpZiAoVEFSR0VUX0ZVU0VEX01BREQgJiYgIUhPTk9SX1NJR05FRF9aRVJP UyAoREZtb2RlKSkKLSsgICAgewotKyAgICAgICBlbWl0X2luc24gKGdlbl92c3hfZm5tc3ViPG1v ZGU+NF8yIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCi0rCQkJCQkgICBvcGVyYW5kc1syXSwg b3BlcmFuZHNbM10pKTsKLSsgICAgICAgRE9ORTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0r ICAgICAgIGVtaXRfaW5zbiAoZ2VuX3ZzeF9mbm1zdWI8bW9kZT40XzMgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSwKLSsJCQkJCSAgIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1szXSkpOwotKyAgICAg ICBET05FOwotKyAgICB9Ci0rfSkKLSsKLSsoZGVmaW5lX2luc24gInZzeF9mbm1zdWI8bW9kZT40 XzEiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIj08VlNyPiw8VlNyPiw/d2EsP3dhIikKLSsJKG5lZzpWU1hfQgotKwkgKG1pbnVzOlZTWF9C Ci0rCSAgKG11bHQ6VlNYX0IKLSsJICAgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICIlPFZTcj4sPFZTcj4sd2Esd2EiKQotKwkgICAobWF0Y2hfb3BlcmFuZDpW U1hfQiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LDAsd2EsMCIpKQotKwkgIChtYXRj aF9vcGVyYW5kOlZTWF9CIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiMCw8VlNyPiwwLHdhIikp KSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpICYmIFRBUkdFVF9GVVNFRF9N QURECi0rICAgJiYgSE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUpIgotKyAgIkAKLSsgICB4PFZT dj5ubXN1YmE8VlNzPiAleDAsJXgxLCV4MgotKyAgIHg8VlN2Pm5tc3VibTxWU3M+ICV4MCwleDEs JXgzCi0rICAgeDxWU3Y+bm1zdWJhPFZTcz4gJXgwLCV4MSwleDIKLSsgICB4PFZTdj5ubXN1Ym08 VlNzPiAleDAsJXgxLCV4MyIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX211bD4iKQot KyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgIjxWU2ZwdHlwZV9tdWw+IildKQotKwotKyhkZWZpbmVf aW5zbiAidnN4X2ZubXN1Yjxtb2RlPjRfMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9C IDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LDxWU3I+LD93YSw/d2EiKQotKwkobWlu dXM6VlNYX0IKLSsJIChtYXRjaF9vcGVyYW5kOlZTWF9CIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAiMCw8VlNyPiwwLHdhIikKLSsJIChtdWx0OlZTWF9CCi0rCSAgKG1hdGNoX29wZXJhbmQ6VlNY X0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIlPFZTcj4sPFZTcj4sd2Esd2EiKQotKwkgICht YXRjaF9vcGVyYW5kOlZTWF9CIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3YSww IikpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpICYmIFRBUkdFVF9GVVNF RF9NQURECi0rICAgJiYgIUhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSIKLSsgICJACi0rICAg eDxWU3Y+bm1zdWJhPFZTcz4gJXgwLCV4MSwleDIKLSsgICB4PFZTdj5ubXN1Ym08VlNzPiAleDAs JXgxLCV4MwotKyAgIHg8VlN2Pm5tc3ViYTxWU3M+ICV4MCwleDEsJXgyCi0rICAgeDxWU3Y+bm1z dWJtPFZTcz4gJXgwLCV4MSwleDMiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9tdWw+ IikKLSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8VlNmcHR5cGVfbXVsPiIpXSkKLSsKLSsoZGVm aW5lX2luc24gInZzeF9mbm1zdWI8bW9kZT40XzMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW U1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw8VlNyPiw/d2EsP3dhIikKLSsJ KHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICIlPFZTcj4sPFZTcj4sd2Esd2EiKQotKwkJICAgICAgIChtYXRjaF9vcGVyYW5kOlZTWF9C IDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3YSwwIikKLSsJCSAgICAgICAobWF0 Y2hfb3BlcmFuZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsPFZTcj4sMCx3YSIp XQotKwkJICAgICAgVU5TUEVDX1ZTWF9YVk5NU1VCKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1Ag KDxNT0RFPm1vZGUpIgotKyAgIkAKLSsgICB4PFZTdj5ubXN1YmE8VlNzPiAleDAsJXgxLCV4Mgot KyAgIHg8VlN2Pm5tc3VibTxWU3M+ICV4MCwleDEsJXgzCi0rICAgeDxWU3Y+bm1zdWJhPFZTcz4g JXgwLCV4MSwleDIKLSsgICB4PFZTdj5ubXN1Ym08VlNzPiAleDAsJXgxLCV4MyIKLSsgIFsoc2V0 X2F0dHIgInR5cGUiICI8VlN0eXBlX211bD4iKQotKyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgIjxW U2ZwdHlwZV9tdWw+IildKQotKwotKzs7IFZlY3RvciBjb25kaXRpb25hbCBleHByZXNzaW9ucyAo bm8gc2NhbGFyIHZlcnNpb24gZm9yIHRoZXNlIGluc3RydWN0aW9ucykKLSsoZGVmaW5lX2luc24g InZzeF9lcTxtb2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rCShlcTpWU1hfRiAobWF0Y2hfb3BlcmFuZDpW U1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIikKLSsJCSAgKG1hdGNoX29w ZXJhbmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpKSldCi0rICAi VkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh2Y21wZXE8VlNzPiAleDAsJXgx LCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX3NpbXBsZT4iKQotKyAgIChzZXRf YXR0ciAiZnBfdHlwZSIgIjxWU2ZwdHlwZV9zaW1wbGU+IildKQotKwotKyhkZWZpbmVfaW5zbiAi dnN4X2d0PG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSsJKGd0OlZTWF9GIChtYXRjaF9vcGVyYW5kOlZT WF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKQotKwkJICAobWF0Y2hfb3Bl cmFuZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIikpKV0KLSsgICJW RUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHZjbXBndDxWU3M+ICV4MCwleDEs JXgyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIpCi0rICAgKHNldF9h dHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICIq dnN4X2dlPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSsJKGdlOlZTWF9GIChtYXRjaF9vcGVyYW5kOlZT WF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKQotKwkJICAobWF0Y2hfb3Bl cmFuZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIikpKV0KLSsgICJW RUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHZjbXBnZTxWU3M+ICV4MCwleDEs JXgyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIpCi0rICAgKHNldF9h dHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2 c3hfdnNlbDxtb2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rCShpZl90aGVuX2Vsc2U6VlNYX0YgKG5lICht YXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKQot KwkJCQkoY29uc3RfaW50IDApKQotKwkJCSAgICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAyICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIikKLSsJCQkgICAgKG1hdGNoX29wZXJhbmQ6VlNY X0YgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpKSldCi0rICAiVkVDVE9SX1VO SVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh4c2VsICV4MCwleDMsJXgyLCV4MSIKLSsgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQotKwotKzs7IENvcHkgc2lnbgotKyhkZWZpbmVf aW5zbiAidnN4X2NvcHlzaWduPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9C IDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rCShpZl90aGVuX2Vsc2U6 VlNYX0IKLSsJIChnZTpWU1hfQiAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIjxWU3I+LHdhIikKLSsJCSAgIChjb25zdF9pbnQgMCkpCi0rCSAoYWJzOlZTWF9C IChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2Ei KSkKLSsJIChuZWc6VlNYX0IgKGFiczpWU1hfQiAobWF0Y2hfZHVwIDEpKSkpKV0KLSsgICJWRUNU T1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieDxWU3Y+Y3BzZ248VlNzPiAleDAsJXgy LCV4MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX3NpbXBsZT4iKQotKyAgIChzZXRf YXR0ciAiZnBfdHlwZSIgIjxWU2ZwdHlwZV9zaW1wbGU+IildKQotKwotKzs7IEZvciB0aGUgY29u dmVyc2lvbnMsIGxpbWl0IHRoZSByZWdpc3RlciBjbGFzcyBmb3IgdGhlIGludGVnZXIgdmFsdWUg dG8gYmUKLSs7OyB0aGUgZnBycyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYWRkIHRoZSBhbHRp dmVjIHJlZ2lzdGVycyB0byBtb3ZkaS9tb3ZzaS4KLSs7OyBGb3IgdGhlIHVuc2lnbmVkIHRlc3Rz LCB0aGVyZSBpc24ndCBhIGdlbmVyaWMgZG91YmxlIC0+IHVuc2lnbmVkIGNvbnZlcnNpb24KLSs7 OyBpbiByczYwMDAubWQgc28gZG9uJ3QgdGVzdCBWRUNUT1JfVU5JVF9WU1hfUCwganVzdCB0ZXN0 IGFnYWluc3QgVlNYLgotKyhkZWZpbmVfaW5zbiAidnN4X2Z0cnVuYzxtb2RlPjIiCi0rICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/ d2EiKQotKyAgCShmaXg6VlNYX0IgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI8VlNyPix3YSIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1v ZGUpIgotKyAgIng8VlN2PnI8VlNzPnBpeiAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIg IjxWU3R5cGVfc2ltcGxlPiIpCi0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3Np bXBsZT4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hfZmxvYXQ8VlNpPjxtb2RlPjIiCi0rICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNy Piw/d2EiKQotKwkoZmxvYXQ6VlNYX0IgKG1hdGNoX29wZXJhbmQ6PFZTST4gMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI8VlNyMj4sPFZTcjM+IikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAo PE1PREU+bW9kZSkiCi0rICAieDxWU3Y+Y3ZzeDxWU2M+PFZTcz4gJXgwLCV4MSIKLSsgIFsoc2V0 X2F0dHIgInR5cGUiICI8VlN0eXBlX3NpbXBsZT4iKQotKyAgIChzZXRfYXR0ciAiZnBfdHlwZSIg IjxWU2ZwdHlwZV9zaW1wbGU+IildKQotKwotKyhkZWZpbmVfaW5zbiAidnN4X2Zsb2F0dW5zPFZT aT48bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSsJKHVuc2lnbmVkX2Zsb2F0OlZTWF9CIChtYXRjaF9v cGVyYW5kOjxWU0k+IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcjI+LDxWU3IzPiIpKSld Ci0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIng8VlN2PmN2dXg8VlNj PjxWU3M+ICV4MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9zaW1wbGU+IikK LSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8VlNmcHR5cGVfc2ltcGxlPiIpXSkKLSsKLSsoZGVm aW5lX2luc24gInZzeF9maXhfdHJ1bmM8bW9kZT48VlNpPjIiCi0rICBbKHNldCAobWF0Y2hfb3Bl cmFuZDo8VlNJPiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyMj4sPzxWU3IzPiIpCi0r CShmaXg6PFZTST4gKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI8VlNyPix3YSIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAg Ing8VlN2PmN2PFZTcz5zeDxWU2M+cyAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxW U3R5cGVfc2ltcGxlPiIpCi0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBs ZT4iKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hfZml4dW5zX3RydW5jPG1vZGU+PFZTaT4yIgot KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZTST4gMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9 PFZTcjI+LD88VlNyMz4iKQotKwkodW5zaWduZWRfZml4OjxWU0k+IChtYXRjaF9vcGVyYW5kOlZT WF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKSkpXQotKyAgIlZFQ1RPUl9V TklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4PFZTdj5jdjxWU3M+dXg8VlNjPnMgJXgwLCV4 MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX3NpbXBsZT4iKQotKyAgIChzZXRfYXR0 ciAiZnBfdHlwZSIgIjxWU2ZwdHlwZV9zaW1wbGU+IildKQotKwotKzs7IE1hdGggcm91bmRpbmcg ZnVuY3Rpb25zCi0rKGRlZmluZV9pbnNuICJ2c3hfYnRydW5jPG1vZGU+MiIKLSsgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIp Ci0rCSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAiPFZTcj4sd2EiKV0KLSsJCSAgICAgIFVOU1BFQ19GUklaKSldCi0rICAiVkVDVE9S X1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIng8VlN2PnI8VlNzPml6ICV4MCwleDEiCi0r ICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9zaW1wbGU+IikKLSsgICAoc2V0X2F0dHIgImZw X3R5cGUiICI8VlNmcHR5cGVfc2ltcGxlPiIpXSkKLSsKLSsoZGVmaW5lX2luc24gInZzeF9mbG9v cjxtb2RlPjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIj08VlNyPiw/d2EiKQotKwkodW5zcGVjOlZTWF9CIFsobWF0Y2hfb3BlcmFuZDpW U1hfQiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIildCi0rCQkgICAgICBVTlNQ RUNfRlJJTSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4PFZT dj5yPFZTcz5pbSAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxl PiIpCi0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCi0rCi0r KGRlZmluZV9pbnNuICJ2c3hfY2VpbDxtb2RlPjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW U1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQotKwkodW5zcGVjOlZT WF9CIFsobWF0Y2hfb3BlcmFuZDpWU1hfQiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+ LHdhIildCi0rCQkgICAgICBVTlNQRUNfRlJJUCkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8 TU9ERT5tb2RlKSIKLSsgICJ4PFZTdj5yPFZTcz5pcCAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAi dHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIpCi0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0 eXBlX3NpbXBsZT4iKV0pCi0rCi0rDAotKzs7IFZTWCBjb252ZXJ0IHRvL2Zyb20gZG91YmxlIHZl Y3RvcgotKwotKzs7IENvbnZlcnQgZnJvbSA2NC1iaXQgdG8gMzItYml0IHR5cGVzCi0rOzsgTm90 ZSwgZmF2b3IgdGhlIEFsdGl2ZWMgcmVnaXN0ZXJzIHNpbmNlIHRoZSB1c3VhbCB1c2Ugb2YgdGhl c2UgaW5zdHJ1Y3Rpb25zCi0rOzsgaXMgaW4gdmVjdG9yIGNvbnZlcnRzIGFuZCB3ZSBuZWVkIHRv IHVzZSB0aGUgQWx0aXZlYyB2cGVybSBpbnN0cnVjdGlvbi4KLSsKLSsoZGVmaW5lX2luc24gInZz eF94dmN2ZHBzcCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9diw/d2EiKQotKwkodW5zcGVjOlY0U0YgWyhtYXRjaF9vcGVyYW5kOlYyREYg MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3YSIpXQotKwkJICAgICBVTlNQRUNfVlNYX1hW Q1ZEUFNQKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSIKLSsgICJ4dmN2ZHBz cCAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZp bmVfaW5zbiAidnN4X3h2Y3ZkcHN4d3MiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXYsP3dhIikKLSsJKHVuc3BlYzpWNFNJIFsobWF0Y2hf b3BlcmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qsd2EiKV0KLSsJCSAgICAg VU5TUEVDX1ZTWF9YVkNWRFBTWFdTKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2Rl KSIKLSsgICJ4dmN2ZHBzeHdzICV4MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxv YXQiKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hfeHZjdmRwdXh3cyIKLSsgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlY0U0kgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9diw/d2EiKQotKwkodW5z cGVjOlY0U0kgWyhtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3 ZCx3YSIpXQotKwkJICAgICBVTlNQRUNfVlNYX1hWQ1ZEUFVYV1MpKV0KLSsgICJWRUNUT1JfVU5J VF9WU1hfUCAoVjJERm1vZGUpIgotKyAgInh2Y3ZkcHV4d3MgJXgwLCV4MSIKLSsgIFsoc2V0X2F0 dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLSsKLSs7OyBDb252ZXJ0IGZyb20gMzItYml0IHRvIDY0 LWJpdCB0eXBlcwotKyhkZWZpbmVfaW5zbiAidnN4X3h2Y3ZzcGRwIgotKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQotKwkodW5z cGVjOlYyREYgWyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3 Zix3YSIpXQotKwkJICAgICBVTlNQRUNfVlNYX1hWQ1ZTUERQKSldCi0rICAiVkVDVE9SX1VOSVRf VlNYX1AgKFYyREZtb2RlKSIKLSsgICJ4dmN2c3BkcCAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAi dHlwZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZpbmVfaW5zbiAidnN4X3h2Y3ZzeHdkcCIKLSsg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2Qs P3dhIikKLSsJKHVuc3BlYzpWMkRGIFsobWF0Y2hfb3BlcmFuZDpWNFNJIDEgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAid2Ysd2EiKV0KLSsJCSAgICAgVU5TUEVDX1ZTWF9YVkNWU1hXRFApKV0KLSsg ICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotKyAgInh2Y3ZzeHdkcCAleDAsJXgxIgot KyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZpbmVfaW5zbiAidnN4 X3h2Y3Z1eHdkcCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREYgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9d2QsP3dhIikKLSsJKHVuc3BlYzpWMkRGIFsobWF0Y2hfb3BlcmFuZDpWNFNJ IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Ysd2EiKV0KLSsJCSAgICAgVU5TUEVDX1ZTWF9Y VkNWVVhXRFApKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotKyAgInh2Y3Z1 eHdkcCAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKwwK LSs7OyBMb2dpY2FsIGFuZCBwZXJtdXRlIG9wZXJhdGlvbnMKLSsoZGVmaW5lX2luc24gIip2c3hf YW5kPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDAgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rICAgICAgICAoYW5kOlZTWF9MCi0rCSAobWF0Y2hf b3BlcmFuZDpWU1hfTCAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIpCi0rCSAo bWF0Y2hfb3BlcmFuZDpWU1hfTCAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIp KSldCi0rICAiVkVDVE9SX01FTV9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHhsYW5kICV4MCwl eDEsJXgyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSsKLSsoZGVmaW5l X2luc24gIip2c3hfaW9yPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDAg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rICAgICAgICAoaW9yOlZTWF9M IChtYXRjaF9vcGVyYW5kOlZTWF9MIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sP3dh IikKLSsJCSAgIChtYXRjaF9vcGVyYW5kOlZTWF9MIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi PFZTcj4sP3dhIikpKV0KLSsgICJWRUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4 eGxvciAleDAsJXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0r Ci0rKGRlZmluZV9pbnNuICIqdnN4X3hvcjxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWU1hfTCAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQotKyAgICAgICAg KHhvcjpWU1hfTAotKwkgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMSAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICI8VlNyPiw/d2EiKQotKwkgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMiAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI8VlNyPiw/d2EiKSkpXQotKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1v ZGUpIgotKyAgInh4bHhvciAleDAsJXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNz aW1wbGUiKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4X29uZV9jbXBsPG1vZGU+MiIKLSsgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+ LD93YSIpCi0rICAgICAgICAobm90OlZTWF9MCi0rCSAobWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2 c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIpKSldCi0rICAiVkVDVE9SX01FTV9WU1hf UCAoPE1PREU+bW9kZSkiCi0rICAieHhsbm9yICV4MCwleDEsJXgxIgotKyAgWyhzZXRfYXR0ciAi dHlwZSIgInZlY3NpbXBsZSIpXSkKLSsgIAotKyhkZWZpbmVfaW5zbiAiKnZzeF9ub3I8bW9kZT4z IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI9PFZTcj4sP3dhIikKLSsgICAgICAgIChub3Q6VlNYX0wKLSsJIChpb3I6VlNYX0wKLSsJICAo bWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIp Ci0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNy Piw/d2EiKSkpKV0KLSsgICJWRUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4eGxu b3IgJXgwLCV4MSwleDIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotKwot KyhkZWZpbmVfaW5zbiAiKnZzeF9hbmRjPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlZTWF9MIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rICAgICAgICAo YW5kOlZTWF9MCi0rCSAobm90OlZTWF9MCi0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMiAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiw/d2EiKSkKLSsJIChtYXRjaF9vcGVyYW5kOlZTWF9M IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sP3dhIikpKV0KLSsgICJWRUNUT1JfTUVN X1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4eGxhbmRjICV4MCwleDEsJXgyIgotKyAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSsKLSsMCi0rOzsgUGVybXV0ZSBvcGVyYXRpb25z Ci0rCi0rKGRlZmluZV9pbnNuICJ2c3hfY29uY2F0X3YyZGYiCi0rICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkLD93YSIpCi0rCSh1bnNwZWM6 VjJERgotKwkgWyhtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3Ms d2EiKQotKwkgIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3Ms d2EiKV0KLSsJIFVOU1BFQ19WU1hfQ09OQ0FUX1YyREYpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hf UCAoVjJERm1vZGUpIgotKyAgInh4cGVybWRpICV4MCwleDEsJXgyLDAiCi0rICBbKHNldF9hdHRy ICJ0eXBlIiAidmVjcGVybSIpXSkKLSsKLSs7OyBTZXQgYSBkb3VibGUgaW50byBvbmUgZWxlbWVu dAotKyhkZWZpbmVfaW5zbiAidnN4X3NldF92MmRmIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQotKwkodmVjX21lcmdlOlYy REYKLSsJIChtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3 YSIpCi0rCSAodmVjX2R1cGxpY2F0ZTpWMkRGIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAid3MsZiIpKQotKwkgKG1hdGNoX29wZXJhbmQ6UUkgMyAidTViaXRfY2lu dF9vcGVyYW5kIiAiaSxpIikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgot K3sKLSsgIGlmIChJTlRWQUwgKG9wZXJhbmRzWzNdKSA9PSAwKQotKyAgICByZXR1cm4gXCJ4eHBl cm1kaSAleDAsJXgxLCV4MiwxXCI7Ci0rICBlbHNlIGlmIChJTlRWQUwgKG9wZXJhbmRzWzNdKSA9 PSAxKQotKyAgICByZXR1cm4gXCJ4eHBlcm1kaSAleDAsJXgyLCV4MSwwXCI7Ci0rICBlbHNlCi0r ICAgIGdjY191bnJlYWNoYWJsZSAoKTsKLSt9Ci0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVy bSIpXSkKLSsKLSs7OyBFeHRyYWN0IGEgREYgZWxlbWVudCBmcm9tIFYyREYKLSsoZGVmaW5lX2lu c24gInZzeF9leHRyYWN0X3YyZGYiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIj13cyxmLD93YSIpCi0rCSh2ZWNfc2VsZWN0OkRGIChtYXRjaF9v cGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3ZCx3YSIpCi0rCQkgICAg ICAgKHBhcmFsbGVsCi0rCQkJWyhtYXRjaF9vcGVyYW5kOlFJIDIgInU1Yml0X2NpbnRfb3BlcmFu ZCIgImksaSxpIildKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCi0rewot KyAgZ2NjX2Fzc2VydCAoVUlOVFZBTCAob3BlcmFuZHNbMl0pIDw9IDEpOwotKyAgb3BlcmFuZHNb M10gPSBHRU5fSU5UIChJTlRWQUwgKG9wZXJhbmRzWzJdKSA8PCAxKTsKLSsgIHJldHVybiBcInh4 cGVybWRpICV4MCwleDEsJXgxLCUzXCI7Ci0rfQotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Bl cm0iKV0pCi0rCi0rOzsgR2VuZXJhbCBWMkRGIHBlcm11dGUsIGV4dHJhY3Rfe2hpZ2gsbG93LGV2 ZW4sb2RkfQotKyhkZWZpbmVfaW5zbiAidnN4X3h4cGVybWRpIgotKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCIpCi0rCSh2ZWNfY29uY2F0 OlYyREYKLSsJICh2ZWNfc2VsZWN0OkRGIChtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICJ3ZCIpCi0rCQkJKHBhcmFsbGVsCi0rCQkJIFsobWF0Y2hfb3BlcmFuZDpR SSAyICJ1NWJpdF9jaW50X29wZXJhbmQiICJpIildKSkKLSsJICh2ZWNfc2VsZWN0OkRGIChtYXRj aF9vcGVyYW5kOlYyREYgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCIpCi0rCQkJKHBhcmFs bGVsCi0rCQkJIFsobWF0Y2hfb3BlcmFuZDpRSSA0ICJ1NWJpdF9jaW50X29wZXJhbmQiICJpIild KSkpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotK3sKLSsgIGdjY19hc3Nl cnQgKChVSU5UVkFMIChvcGVyYW5kc1syXSkgPD0gMSkgJiYgKFVJTlRWQUwgKG9wZXJhbmRzWzRd KSA8PSAxKSk7Ci0rICBvcGVyYW5kc1s1XSA9IEdFTl9JTlQgKCgoSU5UVkFMIChvcGVyYW5kc1sy XSkgJiAxKSA8PCAxKQotKwkJCSB8IChJTlRWQUwgKG9wZXJhbmRzWzRdKSAmIDEpKTsKLSsgIHJl dHVybiBcInh4cGVybWRpICV4MCwleDEsJXgzLCU1XCI7Ci0rfQotKyAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY3Blcm0iKV0pCi0rCi0rOzsgVjJERiBzcGxhdAotKyhkZWZpbmVfaW5zbiAidnN4X3Nw bGF0djJkZiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREYgMCAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICI9d2Qsd2Qsd2QsP3dhLD93YSw/d2EiKQotKwkodmVjX2R1cGxpY2F0ZTpWMkRGCi0r CSAobWF0Y2hfb3BlcmFuZDpERiAxICJpbnB1dF9vcGVyYW5kIiAid3MsZixaLHdhLHdhLFoiKSkp XQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCi0rICAiQAotKyAgIHh4cGVybWRp ICV4MCwleDEsJXgxLDAKLSsgICB4eHBlcm1kaSAleDAsJXgxLCV4MSwwCi0rICAgbHh2ZHN4ICV4 MCwleTEKLSsgICB4eHBlcm1kaSAleDAsJXgxLCV4MSwwCi0rICAgeHhwZXJtZGkgJXgwLCV4MSwl eDEsMAotKyAgIGx4dmRzeCAleDAsJXkxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0s dmVjcGVybSx2ZWNsb2FkLHZlY3Blcm0sdmVjcGVybSx2ZWNsb2FkIildKQotKwotKzs7IFY0U0Yg c3BsYXQKLSsoZGVmaW5lX2luc24gIip2c3hfeHhzcGx0dyIKLSsgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlY0U0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2YsP3dhIikKLSsJKHZlY19kdXBs aWNhdGU6VjRTRgotKwkgKHZlY19zZWxlY3Q6U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIndmLHdhIikKLSsJCQkocGFyYWxsZWwKLSsJCQkgWyhtYXRjaF9v cGVyYW5kOlFJIDIgInU1Yml0X2NpbnRfb3BlcmFuZCIgImksaSIpXSkpKSldCi0rICAiVkVDVE9S X1VOSVRfVlNYX1AgKFY0U0Ztb2RlKSIKLSsgICJ4eHNwbHR3ICV4MCwleDEsJTIiCi0rICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSsKLSs7OyBWNFNGIGludGVybGVhdmUKLSsoZGVm aW5lX2luc24gInZzeF94eG1yZ2h3IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXdmLD93YSIpCi0rICAgICAgICAodmVjX21lcmdlOlY0U0YKLSsJ ICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIndmLHdhIikKLSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKQotKwkJCQkgICAg IChjb25zdF9pbnQgMikKLSsJCQkJICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgKGNvbnN0 X2ludCAzKV0pKQotKwkgKHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Ysd2EiKQotKwkJCSAgKHBhcmFsbGVsIFsoY29uc3RfaW50 IDIpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAwKQotKwkJCQkgICAgIChjb25zdF9pbnQgMykKLSsJ CQkJICAgICAoY29uc3RfaW50IDEpXSkpCi0rCSAoY29uc3RfaW50IDUpKSldCi0rICAiVkVDVE9S X1VOSVRfVlNYX1AgKFY0U0Ztb2RlKSIKLSsgICJ4eG1yZ2h3ICV4MCwleDEsJXgyIgotKyAgWyhz ZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hfeHhtcmds dyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13 Ziw/d2EiKQotKyAgICAgICAgKHZlY19tZXJnZTpWNFNGCi0rCSAodmVjX3NlbGVjdDpWNFNGCi0r CSAgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAid2Ysd2EiKQotKwkg IChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQotKwkJICAgICAoY29uc3RfaW50IDApCi0rCQkgICAg IChjb25zdF9pbnQgMykKLSsJCSAgICAgKGNvbnN0X2ludCAxKV0pKQotKwkgKHZlY19zZWxlY3Q6 VjRTRgotKwkgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgIndmLD93 YSIpCi0rCSAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApCi0rCQkgICAgIChjb25zdF9pbnQgMikK LSsJCSAgICAgKGNvbnN0X2ludCAxKQotKwkJICAgICAoY29uc3RfaW50IDMpXSkpCi0rCSAoY29u c3RfaW50IDUpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKFY0U0Ztb2RlKSIKLSsgICJ4eG1y Z2x3ICV4MCwleDEsJXgyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0tLS0g Z2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NTc3NykK LSsrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjct bWVpc3NuZXIpCShyZXZpc2lvbiAxNDYwMjcpCi1AQCAtNzIsMTQgKzcyLDE2IEBACi0gI2RlZmlu ZSBBU01fQ1BVX1BPV0VSNl9TUEVDICItbXBvd2VyNCAtbWFsdGl2ZWMiCi0gI2VuZGlmCi0gCi0t I2lmZGVmIEhBVkVfQVNfVlNYCi0rI2lmZGVmIEhBVkVfQVNfUE9QQ05URAotICNkZWZpbmUgQVNN X0NQVV9QT1dFUjdfU1BFQyAiLW1wb3dlcjciCi0gI2Vsc2UKLSAjZGVmaW5lIEFTTV9DUFVfUE9X RVI3X1NQRUMgIi1tcG93ZXI0IC1tYWx0aXZlYyIKLSAjZW5kaWYKLSAKLS0vKiBDb21tb24gQVNN IGRlZmluaXRpb25zIHVzZWQgYnkgQVNNX1NQRUMgYW1vbmcgdGhlIHZhcmlvdXMgdGFyZ2V0cwot LSAgIGZvciBoYW5kbGluZyAtbWNwdT14eHggc3dpdGNoZXMuICAqLwotKy8qIENvbW1vbiBBU00g ZGVmaW5pdGlvbnMgdXNlZCBieSBBU01fU1BFQyBhbW9uZyB0aGUgdmFyaW91cyB0YXJnZXRzIGZv cgotKyAgIGhhbmRsaW5nIC1tY3B1PXh4eCBzd2l0Y2hlcy4gIFRoZXJlIGlzIGEgcGFyYWxsZWwg bGlzdCBpbiBkcml2ZXItcnM2MDAwLmMgdG8KLSsgICBwcm92aWRlIHRoZSBkZWZhdWx0IGFzc2Vt YmxlciBvcHRpb25zIGlmIHRoZSB1c2VyIHVzZXMgLW1jcHU9bmF0aXZlLCBzbyBpZgotKyAgIHlv dSBtYWtlIGNoYW5nZXMgaGVyZSwgbWFrZSB0aGVtIGFsc28gdGhlcmUuICAqLwotICNkZWZpbmUg QVNNX0NQVV9TUEVDIFwKLSAiJXshbWNwdSo6IFwKLSAgICV7bXBvd2VyOiAleyFtcG93ZXIyOiAt bXB3cn19IFwKLUBAIC04OCw2ICs5MCw3IEBACi0gICAleyFtcG93ZXJwYzY0KjogJXttcG93ZXJw Yyo6IC1tcHBjfX0gXAotICAgJXttbm8tcG93ZXI6ICV7IW1wb3dlcnBjKjogLW1jb219fSBcCi0g ICAleyFtbm8tcG93ZXI6ICV7IW1wb3dlcio6ICUoYXNtX2RlZmF1bHQpfX19IFwKLSsle21jcHU9 bmF0aXZlOiAlKGFzbV9jcHVfbmF0aXZlKX0gXAotICV7bWNwdT1jb21tb246IC1tY29tfSBcCi0g JXttY3B1PWNlbGw6IC1tY2VsbH0gXAotICV7bWNwdT1wb3dlcjogLW1wd3J9IFwKLUBAIC0xNjMs NiArMTY2LDcgQEAKLSAjZGVmaW5lIEVYVFJBX1NQRUNTCQkJCQkJCVwKLSAgIHsgImNwcF9kZWZh dWx0IiwJCUNQUF9ERUZBVUxUX1NQRUMgfSwJCQlcCi0gICB7ICJhc21fY3B1IiwJCQlBU01fQ1BV X1NQRUMgfSwJCQkJXAotKyAgeyAiYXNtX2NwdV9uYXRpdmUiLAkJQVNNX0NQVV9OQVRJVkVfU1BF QyB9LAkJCVwKLSAgIHsgImFzbV9kZWZhdWx0IiwJCUFTTV9ERUZBVUxUX1NQRUMgfSwJCQlcCi0g ICB7ICJjYzFfY3B1IiwJCQlDQzFfQ1BVX1NQRUMgfSwJCQkJXAotICAgeyAiYXNtX2NwdV9wb3dl cjUiLAkJQVNNX0NQVV9QT1dFUjVfU1BFQyB9LAkJCVwKLUBAIC0xNzksNiArMTgzLDEwIEBAIGV4 dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUKLSAjZGVmaW5lIEVYVFJBX1NQ RUNfRlVOQ1RJT05TIFwKLSAgIHsgImxvY2FsX2NwdV9kZXRlY3QiLCBob3N0X2RldGVjdF9sb2Nh bF9jcHUgfSwKLSAjZGVmaW5lIEhBVkVfTE9DQUxfQ1BVX0RFVEVDVAotKyNkZWZpbmUgQVNNX0NQ VV9OQVRJVkVfU1BFQyAiJTpsb2NhbF9jcHVfZGV0ZWN0KGFzbSkiCi0rCi0rI2Vsc2UKLSsjZGVm aW5lIEFTTV9DUFVfTkFUSVZFX1NQRUMgIiUoYXNtX2RlZmF1bHQpIgotICNlbmRpZgotIAotICNp Zm5kZWYgQ0MxX0NQVV9TUEVDCi1AQCAtMjMzLDExICsyNDEsMTIgQEAgZXh0ZXJuIGNvbnN0IGNo YXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdQotICNkZWZpbmUgVEFSR0VUX01GUEdQUiAwCi0gI2Vu ZGlmCi0gCi0tLyogRGVmaW5lIFRBUkdFVF9ERlAgaWYgdGhlIHRhcmdldCBhc3NlbWJsZXIgZG9l cyBub3Qgc3VwcG9ydCBkZWNpbWFsCi0tICAgZmxvYXRpbmcgcG9pbnQgaW5zdHJ1Y3Rpb25zLiAg Ki8KLS0jaWZuZGVmIEhBVkVfQVNfREZQCi0tI3VuZGVmICBUQVJHRVRfREZQCi0tI2RlZmluZSBU QVJHRVRfREZQIDAKLSsvKiBEZWZpbmUgVEFSR0VUX1BPUENOVEQgaWYgdGhlIHRhcmdldCBhc3Nl bWJsZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUKLSsgICBwb3Bjb3VudCB3b3JkIGFuZCBkb3VibGUg d29yZCBpbnN0cnVjdGlvbnMuICAqLwotKwotKyNpZm5kZWYgSEFWRV9BU19QT1BDTlRECi0rI3Vu ZGVmICBUQVJHRVRfUE9QQ05URAotKyNkZWZpbmUgVEFSR0VUX1BPUENOVEQgMAotICNlbmRpZgot IAotICNpZm5kZWYgVEFSR0VUX1NFQ1VSRV9QTFQKLUBAIC0yOTUsNiArMzA0LDcgQEAgZW51bSBw cm9jZXNzb3JfdHlwZQotICAgIFBST0NFU1NPUl9QT1dFUjQsCi0gICAgUFJPQ0VTU09SX1BPV0VS NSwKLSAgICBQUk9DRVNTT1JfUE9XRVI2LAotKyAgIFBST0NFU1NPUl9QT1dFUjcsCi0gICAgUFJP Q0VTU09SX0NFTEwKLSB9OwotIAotQEAgLTM4OCw5ICszOTgsMTUgQEAgZXh0ZXJuIHN0cnVjdCBy czYwMDBfY3B1X3NlbGVjdCByczYwMDBfcwotIGV4dGVybiBjb25zdCBjaGFyICpyczYwMDBfZGVi dWdfbmFtZTsJLyogTmFtZSBmb3IgLW1kZWJ1Zy14eHh4IG9wdGlvbiAqLwotIGV4dGVybiBpbnQg cnM2MDAwX2RlYnVnX3N0YWNrOwkJLyogZGVidWcgc3RhY2sgYXBwbGljYXRpb25zICovCi0gZXh0 ZXJuIGludCByczYwMDBfZGVidWdfYXJnOwkJLyogZGVidWcgYXJndW1lbnQgaGFuZGxpbmcgKi8K LStleHRlcm4gaW50IHJzNjAwMF9kZWJ1Z19yZWc7CQkvKiBkZWJ1ZyByZWdpc3RlciBoYW5kbGlu ZyAqLwotK2V4dGVybiBpbnQgcnM2MDAwX2RlYnVnX2FkZHI7CQkvKiBkZWJ1ZyBtZW1vcnkgYWRk cmVzc2luZyAqLwotK2V4dGVybiBpbnQgcnM2MDAwX2RlYnVnX2Nvc3Q7CQkvKiBkZWJ1ZyBydHhf Y29zdHMgKi8KLSAKLSAjZGVmaW5lCVRBUkdFVF9ERUJVR19TVEFDSwlyczYwMDBfZGVidWdfc3Rh Y2sKLSAjZGVmaW5lCVRBUkdFVF9ERUJVR19BUkcJcnM2MDAwX2RlYnVnX2FyZwotKyNkZWZpbmUg VEFSR0VUX0RFQlVHX1JFRwlyczYwMDBfZGVidWdfcmVnCi0rI2RlZmluZSBUQVJHRVRfREVCVUdf QUREUglyczYwMDBfZGVidWdfYWRkcgotKyNkZWZpbmUgVEFSR0VUX0RFQlVHX0NPU1QJcnM2MDAw X2RlYnVnX2Nvc3QKLSAKLSBleHRlcm4gY29uc3QgY2hhciAqcnM2MDAwX3RyYWNlYmFja19uYW1l OyAvKiBUeXBlIG9mIHRyYWNlYmFjayB0YWJsZS4gICovCi0gCi1AQCAtNDAxLDEzICs0MTcsNjUg QEAgZXh0ZXJuIGludCByczYwMDBfaWVlZXF1YWQ7Ci0gZXh0ZXJuIGludCByczYwMDBfYWx0aXZl Y19hYmk7Ci0gZXh0ZXJuIGludCByczYwMDBfc3BlX2FiaTsKLSBleHRlcm4gaW50IHJzNjAwMF9z cGU7Ci0tZXh0ZXJuIGludCByczYwMDBfaXNlbDsKLSBleHRlcm4gaW50IHJzNjAwMF9mbG9hdF9n cHJzOwotIGV4dGVybiBpbnQgcnM2MDAwX2FsaWdubWVudF9mbGFnczsKLSBleHRlcm4gY29uc3Qg Y2hhciAqcnM2MDAwX3NjaGVkX2luc2VydF9ub3BzX3N0cjsKLSBleHRlcm4gZW51bSByczYwMDBf bm9wX2luc2VydGlvbiByczYwMDBfc2NoZWRfaW5zZXJ0X25vcHM7Ci0gZXh0ZXJuIGludCByczYw MDBfeGlsaW54X2ZwdTsKLSAKLSsvKiBEZXNjcmliZSB3aGljaCB2ZWN0b3IgdW5pdCB0byB1c2Ug Zm9yIGEgZ2l2ZW4gbWFjaGluZSBtb2RlLiAgKi8KLStlbnVtIHJzNjAwMF92ZWN0b3IgewotKyAg VkVDVE9SX05PTkUsCQkJLyogVHlwZSBpcyBub3QgIGEgdmVjdG9yIG9yIG5vdCBzdXBwb3J0ZWQg Ki8KLSsgIFZFQ1RPUl9BTFRJVkVDLAkJLyogVXNlIGFsdGl2ZWMgZm9yIHZlY3RvciBwcm9jZXNz aW5nICovCi0rICBWRUNUT1JfVlNYLAkJCS8qIFVzZSBWU1ggZm9yIHZlY3RvciBwcm9jZXNzaW5n ICovCi0rICBWRUNUT1JfUEFJUkVELAkJLyogVXNlIHBhaXJlZCBmbG9hdGluZyBwb2ludCBmb3Ig dmVjdG9ycyAqLwotKyAgVkVDVE9SX1NQRSwJCQkvKiBVc2UgU1BFIGZvciB2ZWN0b3IgcHJvY2Vz c2luZyAqLwotKyAgVkVDVE9SX09USEVSCQkJLyogU29tZSBvdGhlciB2ZWN0b3IgdW5pdCAqLwot K307Ci0rCi0rZXh0ZXJuIGVudW0gcnM2MDAwX3ZlY3RvciByczYwMDBfdmVjdG9yX3VuaXRbXTsK LSsKLSsjZGVmaW5lIFZFQ1RPUl9VTklUX05PTkVfUChNT0RFKQkJCVwKLSsgIChyczYwMDBfdmVj dG9yX3VuaXRbKE1PREUpXSA9PSBWRUNUT1JfTk9ORSkKLSsKLSsjZGVmaW5lIFZFQ1RPUl9VTklU X1ZTWF9QKE1PREUpCQkJCVwKLSsgIChyczYwMDBfdmVjdG9yX3VuaXRbKE1PREUpXSA9PSBWRUNU T1JfVlNYKQotKwotKyNkZWZpbmUgVkVDVE9SX1VOSVRfQUxUSVZFQ19QKE1PREUpCQkJXAotKyAg KHJzNjAwMF92ZWN0b3JfdW5pdFsoTU9ERSldID09IFZFQ1RPUl9BTFRJVkVDKQotKwotKyNkZWZp bmUgVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUChNT0RFKQkJXAotKyAgKHJzNjAwMF92ZWN0 b3JfdW5pdFsoTU9ERSldID09IFZFQ1RPUl9BTFRJVkVDIAlcCi0rICAgfHwgcnM2MDAwX3ZlY3Rv cl91bml0WyhNT0RFKV0gPT0gVkVDVE9SX1ZTWCkKLSsKLSsvKiBEZXNjcmliZSB3aGV0aGVyIHRv IHVzZSBWU1ggbG9hZHMgb3IgQWx0aXZlYyBsb2Fkcy4gIEZvciBub3csIGp1c3QgdXNlIHRoZQot KyAgIHNhbWUgdW5pdCBhcyB0aGUgdmVjdG9yIHVuaXQgd2UgYXJlIHVzaW5nLCBidXQgd2UgbWF5 IHdhbnQgdG8gbWlncmF0ZSB0bwotKyAgIHVzaW5nIFZTWCBzdHlsZSBsb2FkcyBldmVuIGZvciB0 eXBlcyBoYW5kbGVkIGJ5IGFsdGl2ZWMuICAqLwotK2V4dGVybiBlbnVtIHJzNjAwMF92ZWN0b3Ig cnM2MDAwX3ZlY3Rvcl9tZW1bXTsKLSsKLSsjZGVmaW5lIFZFQ1RPUl9NRU1fTk9ORV9QKE1PREUp CQkJCVwKLSsgIChyczYwMDBfdmVjdG9yX21lbVsoTU9ERSldID09IFZFQ1RPUl9OT05FKQotKwot KyNkZWZpbmUgVkVDVE9SX01FTV9WU1hfUChNT0RFKQkJCQlcCi0rICAocnM2MDAwX3ZlY3Rvcl9t ZW1bKE1PREUpXSA9PSBWRUNUT1JfVlNYKQotKwotKyNkZWZpbmUgVkVDVE9SX01FTV9BTFRJVkVD X1AoTU9ERSkJCQlcCi0rICAocnM2MDAwX3ZlY3Rvcl9tZW1bKE1PREUpXSA9PSBWRUNUT1JfQUxU SVZFQykKLSsKLSsjZGVmaW5lIFZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUChNT0RFKQkJXAot KyAgKHJzNjAwMF92ZWN0b3JfbWVtWyhNT0RFKV0gPT0gVkVDVE9SX0FMVElWRUMgCVwKLSsgICB8 fCByczYwMDBfdmVjdG9yX21lbVsoTU9ERSldID09IFZFQ1RPUl9WU1gpCi0rCi0rLyogUmV0dXJu IHRoZSBhbGlnbm1lbnQgb2YgYSBnaXZlbiB2ZWN0b3IgdHlwZSwgd2hpY2ggaXMgc2V0IGJhc2Vk IG9uIHRoZQotKyAgIHZlY3RvciB1bml0IHVzZS4gIFZTWCBmb3IgaW5zdGFuY2UgY2FuIGxvYWQg MzIgb3IgNjQgYml0IGFsaWduZWQgd29yZHMKLSsgICB3aXRob3V0IHByb2JsZW1zLCB3aGlsZSBB bHRpdmVjIHJlcXVpcmVzIDEyOC1iaXQgYWxpZ25lZCB2ZWN0b3JzLiAgKi8KLStleHRlcm4gaW50 IHJzNjAwMF92ZWN0b3JfYWxpZ25bXTsKLSsKLSsjZGVmaW5lIFZFQ1RPUl9BTElHTihNT0RFKQkJ CQkJCVwKLSsgICgocnM2MDAwX3ZlY3Rvcl9hbGlnblsoTU9ERSldICE9IDApCQkJCQlcCi0rICAg PyByczYwMDBfdmVjdG9yX2FsaWduWyhNT0RFKV0JCQkJCVwKLSsgICA6IChpbnQpR0VUX01PREVf QklUU0laRSAoKE1PREUpKSkKLSsKLSAvKiBBbGlnbm1lbnQgb3B0aW9ucyBmb3IgZmllbGRzIGlu IHN0cnVjdHVyZXMgZm9yIHN1Yi10YXJnZXRzIGZvbGxvd2luZwotICAgIEFJWC1saWtlIEFCSS4K LSAgICBBTElHTl9QT1dFUiB3b3JkLWFsaWducyBGUCBkb3VibGVzIChkZWZhdWx0IEFJWCBBQkkp LgotQEAgLTQzMiw3ICs1MDAsNyBAQCBleHRlcm4gaW50IHJzNjAwMF94aWxpbnhfZnB1OwotICNk ZWZpbmUgVEFSR0VUX1NQRV9BQkkgMAotICNkZWZpbmUgVEFSR0VUX1NQRSAwCi0gI2RlZmluZSBU QVJHRVRfRTUwMCAwCi0tI2RlZmluZSBUQVJHRVRfSVNFTCByczYwMDBfaXNlbAotKyNkZWZpbmUg VEFSR0VUX0lTRUw2NCAoVEFSR0VUX0lTRUwgJiYgVEFSR0VUX1BPV0VSUEM2NCkKLSAjZGVmaW5l IFRBUkdFVF9GUFJTIDEKLSAjZGVmaW5lIFRBUkdFVF9FNTAwX1NJTkdMRSAwCi0gI2RlZmluZSBU QVJHRVRfRTUwMF9ET1VCTEUgMAotQEAgLTUzMCw2ICs1OTgsNyBAQCBleHRlcm4gaW50IHJzNjAw MF94aWxpbnhfZnB1OwotICNlbmRpZgotICNkZWZpbmUgVU5JVFNfUEVSX0ZQX1dPUkQgOAotICNk ZWZpbmUgVU5JVFNfUEVSX0FMVElWRUNfV09SRCAxNgotKyNkZWZpbmUgVU5JVFNfUEVSX1ZTWF9X T1JEIDE2Ci0gI2RlZmluZSBVTklUU19QRVJfU1BFX1dPUkQgOAotICNkZWZpbmUgVU5JVFNfUEVS X1BBSVJFRF9XT1JEIDgKLSAKLUBAIC02MDAsOCArNjY5LDkgQEAgZXh0ZXJuIGludCByczYwMDBf eGlsaW54X2ZwdTsKLSAjZGVmaW5lIFBBUk1fQk9VTkRBUlkgKFRBUkdFVF8zMkJJVCA/IDMyIDog NjQpCi0gCi0gLyogQm91bmRhcnkgKGluICpiaXRzKikgb24gd2hpY2ggc3RhY2sgcG9pbnRlciBz aG91bGQgYmUgYWxpZ25lZC4gICovCi0tI2RlZmluZSBTVEFDS19CT1VOREFSWSBcCi0tICAoKFRB UkdFVF8zMkJJVCAmJiAhVEFSR0VUX0FMVElWRUMgJiYgIVRBUkdFVF9BTFRJVkVDX0FCSSkgPyA2 NCA6IDEyOCkKLSsjZGVmaW5lIFNUQUNLX0JPVU5EQVJZCVwKLSsgICgoVEFSR0VUXzMyQklUICYm ICFUQVJHRVRfQUxUSVZFQyAmJiAhVEFSR0VUX0FMVElWRUNfQUJJICYmICFUQVJHRVRfVlNYKSBc Ci0rICAgID8gNjQgOiAxMjgpCi0gCi0gLyogQWxsb2NhdGlvbiBib3VuZGFyeSAoaW4gKmJpdHMq KSBmb3IgdGhlIGNvZGUgb2YgYSBmdW5jdGlvbi4gICovCi0gI2RlZmluZSBGVU5DVElPTl9CT1VO REFSWSAzMgotQEAgLTYxMywxMCArNjgzLDExIEBAIGV4dGVybiBpbnQgcnM2MDAwX3hpbGlueF9m cHU7Ci0gICAgbG9jYWwgc3RvcmUuICBUWVBFIGlzIHRoZSBkYXRhIHR5cGUsIGFuZCBBTElHTiBp cyB0aGUgYWxpZ25tZW50Ci0gICAgdGhhdCB0aGUgb2JqZWN0IHdvdWxkIG9yZGluYXJpbHkgaGF2 ZS4gICovCi0gI2RlZmluZSBMT0NBTF9BTElHTk1FTlQoVFlQRSwgQUxJR04pCQkJCVwKLS0gICgo VEFSR0VUX0FMVElWRUMgJiYgVFJFRV9DT0RFIChUWVBFKSA9PSBWRUNUT1JfVFlQRSkgPyAxMjgg OglcCi0rICAoKChUQVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfVlNYKQkJCQlcCi0rICAgICYmIFRS RUVfQ09ERSAoVFlQRSkgPT0gVkVDVE9SX1RZUEUpID8gMTI4IDoJCQlcCi0gICAgIChUQVJHRVRf RTUwMF9ET1VCTEUJCQkJCQlcCi0tICAgICAmJiBUWVBFX01PREUgKFRZUEUpID09IERGbW9kZSkg PyA2NCA6IFwKLS0gICAgKChUQVJHRVRfU1BFICYmIFRSRUVfQ09ERSAoVFlQRSkgPT0gVkVDVE9S X1RZUEUgXAotKyAgICAgJiYgVFlQRV9NT0RFIChUWVBFKSA9PSBERm1vZGUpID8gNjQgOgkJCVwK LSsgICAgKChUQVJHRVRfU1BFICYmIFRSRUVfQ09ERSAoVFlQRSkgPT0gVkVDVE9SX1RZUEUJCVwK LSAgICAgICYmIFNQRV9WRUNUT1JfTU9ERSAoVFlQRV9NT0RFIChUWVBFKSkpIHx8IChUQVJHRVRf UEFJUkVEX0ZMT0FUIFwKLSAgICAgICAgICYmIFRSRUVfQ09ERSAoVFlQRSkgPT0gVkVDVE9SX1RZ UEUgXAotICAgICAgICAgJiYgUEFJUkVEX1ZFQ1RPUl9NT0RFIChUWVBFX01PREUgKFRZUEUpKSkp ID8gNjQgOiBBTElHTikKLUBAIC02NzQsMTUgKzc0NSwxNyBAQCBleHRlcm4gaW50IHJzNjAwMF94 aWxpbnhfZnB1OwotIC8qIERlZmluZSB0aGlzIG1hY3JvIHRvIGJlIHRoZSB2YWx1ZSAxIGlmIHVu YWxpZ25lZCBhY2Nlc3NlcyBoYXZlIGEgY29zdAotICAgIG1hbnkgdGltZXMgZ3JlYXRlciB0aGFu IGFsaWduZWQgYWNjZXNzZXMsIGZvciBleGFtcGxlIGlmIHRoZXkgYXJlCi0gICAgZW11bGF0ZWQg aW4gYSB0cmFwIGhhbmRsZXIuICAqLwotLS8qIEFsdGl2ZWMgdmVjdG9yIG1lbW9yeSBpbnN0cnVj dGlvbnMgc2ltcGx5IGlnbm9yZSB0aGUgbG93IGJpdHM7IFNQRQotLSAgIHZlY3RvciBtZW1vcnkg aW5zdHJ1Y3Rpb25zIHRyYXAgb24gdW5hbGlnbmVkIGFjY2Vzc2VzLiAgKi8KLSsvKiBBbHRpdmVj IHZlY3RvciBtZW1vcnkgaW5zdHJ1Y3Rpb25zIHNpbXBseSBpZ25vcmUgdGhlIGxvdyBiaXRzOyBT UEUgdmVjdG9yCi0rICAgbWVtb3J5IGluc3RydWN0aW9ucyB0cmFwIG9uIHVuYWxpZ25lZCBhY2Nl c3NlczsgVlNYIG1lbW9yeSBpbnN0cnVjdGlvbnMgYXJlCi0rICAgYWxpZ25lZCB0byA0IG9yIDgg Ynl0ZXMuICAqLwotICNkZWZpbmUgU0xPV19VTkFMSUdORURfQUNDRVNTKE1PREUsIEFMSUdOKQkJ CQlcCi0gICAoU1RSSUNUX0FMSUdOTUVOVAkJCQkJCQlcCi0gICAgfHwgKCgoTU9ERSkgPT0gU0Zt b2RlIHx8IChNT0RFKSA9PSBERm1vZGUgfHwgKE1PREUpID09IFRGbW9kZQlcCi0gCXx8IChNT0RF KSA9PSBTRG1vZGUgfHwgKE1PREUpID09IEREbW9kZSB8fCAoTU9ERSkgPT0gVERtb2RlCVwKLSAJ fHwgKE1PREUpID09IERJbW9kZSkJCQkJCQlcCi0gICAgICAgICYmIChBTElHTikgPCAzMikJCQkJ CQkJXAotLSAgIHx8IChWRUNUT1JfTU9ERV9QICgoTU9ERSkpICYmIChBTElHTikgPCBHRVRfTU9E RV9CSVRTSVpFICgoTU9ERSkpKSkKLSsgICB8fCAoVkVDVE9SX01PREVfUCAoKE1PREUpKSAmJiAo KChpbnQpKEFMSUdOKSkgPCBWRUNUT1JfQUxJR04gKE1PREUpKSkpCi0rCi0gDAotIC8qIFN0YW5k YXJkIHJlZ2lzdGVyIHVzYWdlLiAgKi8KLSAKLUBAIC05MDksMTYgKzk4Miw2MCBAQCBleHRlcm4g aW50IHJzNjAwMF94aWxpbnhfZnB1OwotIC8qIFRydWUgaWYgcmVnaXN0ZXIgaXMgYW4gQWx0aVZl YyByZWdpc3Rlci4gICovCi0gI2RlZmluZSBBTFRJVkVDX1JFR05PX1AoTikgKChOKSA+PSBGSVJT VF9BTFRJVkVDX1JFR05PICYmIChOKSA8PSBMQVNUX0FMVElWRUNfUkVHTk8pCi0gCi0rLyogVHJ1 ZSBpZiByZWdpc3RlciBpcyBhIFZTWCByZWdpc3Rlci4gICovCi0rI2RlZmluZSBWU1hfUkVHTk9f UChOKSAoRlBfUkVHTk9fUCAoTikgfHwgQUxUSVZFQ19SRUdOT19QIChOKSkKLSsKLSsvKiBBbHRl cm5hdGUgbmFtZSBmb3IgYW55IHZlY3RvciByZWdpc3RlciBzdXBwb3J0aW5nIGZsb2F0aW5nIHBv aW50LCBubyBtYXR0ZXIKLSsgICB3aGljaCBpbnN0cnVjdGlvbiBzZXQocykgYXJlIGF2YWlsYWJs ZS4gICovCi0rI2RlZmluZSBWRkxPQVRfUkVHTk9fUChOKSBcCi0rICAoQUxUSVZFQ19SRUdOT19Q IChOKSB8fCAoVEFSR0VUX1ZTWCAmJiBGUF9SRUdOT19QIChOKSkpCi0rCi0rLyogQWx0ZXJuYXRl IG5hbWUgZm9yIGFueSB2ZWN0b3IgcmVnaXN0ZXIgc3VwcG9ydGluZyBpbnRlZ2VyLCBubyBtYXR0 ZXIgd2hpY2gKLSsgICBpbnN0cnVjdGlvbiBzZXQocykgYXJlIGF2YWlsYWJsZS4gICovCi0rI2Rl ZmluZSBWSU5UX1JFR05PX1AoTikgQUxUSVZFQ19SRUdOT19QIChOKQotKwotKy8qIEFsdGVybmF0 ZSBuYW1lIGZvciBhbnkgdmVjdG9yIHJlZ2lzdGVyIHN1cHBvcnRpbmcgbG9naWNhbCBvcGVyYXRp b25zLCBubwotKyAgIG1hdHRlciB3aGljaCBpbnN0cnVjdGlvbiBzZXQocykgYXJlIGF2YWlsYWJs ZS4gICovCi0rI2RlZmluZSBWTE9HSUNBTF9SRUdOT19QKE4pIFZGTE9BVF9SRUdOT19QIChOKQot KwotIC8qIFJldHVybiBudW1iZXIgb2YgY29uc2VjdXRpdmUgaGFyZCByZWdzIG5lZWRlZCBzdGFy dGluZyBhdCByZWcgUkVHTk8KLSAgICB0byBob2xkIHNvbWV0aGluZyBvZiBtb2RlIE1PREUuICAq LwotIAotLSNkZWZpbmUgSEFSRF9SRUdOT19OUkVHUyhSRUdOTywgTU9ERSkgcnM2MDAwX2hhcmRf cmVnbm9fbnJlZ3MgKChSRUdOTyksIChNT0RFKSkKLSsjZGVmaW5lIEhBUkRfUkVHTk9fTlJFR1Mo UkVHTk8sIE1PREUpIHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzWyhNT0RFKV1bKFJFR05PKV0KLSAK LSAjZGVmaW5lIEhBUkRfUkVHTk9fQ0FMTF9QQVJUX0NMT0JCRVJFRChSRUdOTywgTU9ERSkJXAot ICAgKChUQVJHRVRfMzJCSVQgJiYgVEFSR0VUX1BPV0VSUEM2NAkJCVwKLSAgICAgJiYgKEdFVF9N T0RFX1NJWkUgKE1PREUpID4gNCkgIFwKLSAgICAgJiYgSU5UX1JFR05PX1AgKFJFR05PKSkgPyAx IDogMCkKLSAKLSsjZGVmaW5lIFZTWF9WRUNUT1JfTU9ERShNT0RFKQkJXAotKwkgKChNT0RFKSA9 PSBWNFNGbW9kZQkJXAotKwkgIHx8IChNT0RFKSA9PSBWMkRGbW9kZSkJXAotKwotKyNkZWZpbmUg VlNYX1ZFQ1RPUl9NT1ZFX01PREUoTU9ERSkJXAotKwkgKChNT0RFKSA9PSBWMTZRSW1vZGUJCVwK LSsJICB8fCAoTU9ERSkgPT0gVjhISW1vZGUJCVwKLSsJICB8fCAoTU9ERSkgPT0gVjRTSW1vZGUJ CVwKLSsJICB8fCAoTU9ERSkgPT0gVjJESW1vZGUJCVwKLSsJICB8fCAoTU9ERSkgPT0gVjRTRm1v ZGUJCVwKLSsJICB8fCAoTU9ERSkgPT0gVjJERm1vZGUpCVwKLSsKLSsjZGVmaW5lIFZTWF9TQ0FM QVJfTU9ERShNT0RFKQkJXAotKwkoKE1PREUpID09IERGbW9kZSkKLSsKLSsjZGVmaW5lIFZTWF9N T0RFKE1PREUpCQkJXAotKwkoVlNYX1ZFQ1RPUl9NT0RFIChNT0RFKQkJXAotKwkgfHwgVlNYX1ND QUxBUl9NT0RFIChNT0RFKSkKLSsKLSsjZGVmaW5lIFZTWF9NT1ZFX01PREUoTU9ERSkJCVwKLSsJ KFZTWF9WRUNUT1JfTU9WRV9NT0RFIChNT0RFKQlcCi0rCSB8fCBWU1hfU0NBTEFSX01PREUoTU9E RSkJXAotKwkgfHwgKE1PREUpID09IFYxNlFJbW9kZQkJXAotKwkgfHwgKE1PREUpID09IFY4SElt b2RlCQlcCi0rCSB8fCAoTU9ERSkgPT0gVjRTSW1vZGUJCVwKLSsJIHx8IChNT0RFKSA9PSBWMkRJ bW9kZQkJXAotKwkgfHwgKE1PREUpID09IFRJbW9kZSkKLSsKLSAjZGVmaW5lIEFMVElWRUNfVkVD VE9SX01PREUoTU9ERSkJXAotIAkgKChNT0RFKSA9PSBWMTZRSW1vZGUJCVwKLSAJICB8fCAoTU9E RSkgPT0gVjhISW1vZGUJCVwKLUBAIC05MzQsMTAgKzEwNTEsMTIgQEAgZXh0ZXJuIGludCByczYw MDBfeGlsaW54X2ZwdTsKLSAjZGVmaW5lIFBBSVJFRF9WRUNUT1JfTU9ERShNT0RFKSAgICAgICAg XAotICAgICAgICAgICgoTU9ERSkgPT0gVjJTRm1vZGUpICAgICAgICAgICAgCi0gCi0tI2RlZmlu ZSBVTklUU19QRVJfU0lNRF9XT1JEKE1PREUpCQkJCSAgICAgXAotLQkoVEFSR0VUX0FMVElWRUMg PyBVTklUU19QRVJfQUxUSVZFQ19XT1JECQkgICAgIFwKLS0JIDogKFRBUkdFVF9TUEUgPyBVTklU U19QRVJfU1BFX1dPUkQgOiAoVEFSR0VUX1BBSVJFRF9GTE9BVCA/IFwKLS0JIFVOSVRTX1BFUl9Q QUlSRURfV09SRCA6IFVOSVRTX1BFUl9XT1JEKSkpCi0rI2RlZmluZSBVTklUU19QRVJfU0lNRF9X T1JEKE1PREUpCQkJCQlcCi0rCShUQVJHRVRfVlNYID8gVU5JVFNfUEVSX1ZTWF9XT1JECQkJCVwK LSsJIDogKFRBUkdFVF9BTFRJVkVDID8gVU5JVFNfUEVSX0FMVElWRUNfV09SRAkJCVwKLSsJIDog KFRBUkdFVF9TUEUgPyBVTklUU19QRVJfU1BFX1dPUkQJCQkJXAotKwkgOiAoVEFSR0VUX1BBSVJF RF9GTE9BVCA/IFVOSVRTX1BFUl9QQUlSRURfV09SRAkJCVwKLSsJIDogVU5JVFNfUEVSX1dPUkQp KSkpCi0gCi0gLyogVmFsdWUgaXMgVFJVRSBpZiBoYXJkIHJlZ2lzdGVyIFJFR05PIGNhbiBob2xk IGEgdmFsdWUgb2YKLSAgICBtYWNoaW5lLW1vZGUgTU9ERS4gICovCi1AQCAtOTY1LDYgKzEwODQs MTAgQEAgZXh0ZXJuIGludCByczYwMDBfeGlsaW54X2ZwdTsKLSAgICA/IEFMVElWRUNfVkVDVE9S X01PREUgKE1PREUyKQkJXAotICAgIDogQUxUSVZFQ19WRUNUT1JfTU9ERSAoTU9ERTIpCQlcCi0g ICAgPyBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChNT0RFMSkJCVwKLSsgICA6IFZTWF9WRUNUT1JfTU9E RSAoTU9ERTEpCQkJXAotKyAgID8gVlNYX1ZFQ1RPUl9NT0RFIChNT0RFMikJCQlcCi0rICAgOiBW U1hfVkVDVE9SX01PREUgKE1PREUyKQkJCVwKLSsgICA/IFZTWF9WRUNUT1JfTU9ERSAoTU9ERTEp CQkJXAotICAgIDogMSkKLSAKLSAvKiBQb3N0LXJlbG9hZCwgd2UgY2FuJ3QgdXNlIGFueSBuZXcg QWx0aVZlYyByZWdpc3RlcnMsIGFzIHdlIGFscmVhZHkKLUBAIC0xMDU2LDkgKzExNzksMTAgQEAg ZXh0ZXJuIGludCByczYwMDBfeGlsaW54X2ZwdTsKLSAgICBGb3IgYW55IHR3byBjbGFzc2VzLCBp dCBpcyB2ZXJ5IGRlc2lyYWJsZSB0aGF0IHRoZXJlIGJlIGFub3RoZXIKLSAgICBjbGFzcyB0aGF0 IHJlcHJlc2VudHMgdGhlaXIgdW5pb24uICAqLwotIAotLS8qIFRoZSBSUy82MDAwIGhhcyB0aHJl ZSB0eXBlcyBvZiByZWdpc3RlcnMsIGZpeGVkLXBvaW50LCBmbG9hdGluZy1wb2ludCwKLS0gICBh bmQgY29uZGl0aW9uIHJlZ2lzdGVycywgcGx1cyB0aHJlZSBzcGVjaWFsIHJlZ2lzdGVycywgTVEs IENUUiwgYW5kIHRoZQotLSAgIGxpbmsgcmVnaXN0ZXIuICBBbHRpVmVjIGFkZHMgYSB2ZWN0b3Ig cmVnaXN0ZXIgY2xhc3MuCi0rLyogVGhlIFJTLzYwMDAgaGFzIHRocmVlIHR5cGVzIG9mIHJlZ2lz dGVycywgZml4ZWQtcG9pbnQsIGZsb2F0aW5nLXBvaW50LCBhbmQKLSsgICBjb25kaXRpb24gcmVn aXN0ZXJzLCBwbHVzIHRocmVlIHNwZWNpYWwgcmVnaXN0ZXJzLCBNUSwgQ1RSLCBhbmQgdGhlIGxp bmsKLSsgICByZWdpc3Rlci4gIEFsdGlWZWMgYWRkcyBhIHZlY3RvciByZWdpc3RlciBjbGFzcy4g IFZTWCByZWdpc3RlcnMgb3ZlcmxhcCB0aGUKLSsgICBGUFIgcmVnaXN0ZXJzIGFuZCB0aGUgQWx0 aXZlYyByZWdpc3RlcnMuCi0gCi0gICAgSG93ZXZlciwgcjAgaXMgc3BlY2lhbCBpbiB0aGF0IGl0 IGNhbm5vdCBiZSB1c2VkIGFzIGEgYmFzZSByZWdpc3Rlci4KLSAgICBTbyBtYWtlIGEgY2xhc3Mg Zm9yIHJlZ2lzdGVycyB2YWxpZCBhcyBiYXNlIHJlZ2lzdGVycy4KLUBAIC0xMDczLDYgKzExOTcs NyBAQCBlbnVtIHJlZ19jbGFzcwotICAgR0VORVJBTF9SRUdTLAotICAgRkxPQVRfUkVHUywKLSAg IEFMVElWRUNfUkVHUywKLSsgIFZTWF9SRUdTLAotICAgVlJTQVZFX1JFR1MsCi0gICBWU0NSX1JF R1MsCi0gICBTUEVfQUNDX1JFR1MsCi1AQCAtMTEwMyw2ICsxMjI4LDcgQEAgZW51bSByZWdfY2xh c3MKLSAgICJHRU5FUkFMX1JFR1MiLAkJCQkJCQlcCi0gICAiRkxPQVRfUkVHUyIsCQkJCQkJCQlc Ci0gICAiQUxUSVZFQ19SRUdTIiwJCQkJCQkJXAotKyAgIlZTWF9SRUdTIiwJCQkJCQkJCVwKLSAg ICJWUlNBVkVfUkVHUyIsCQkJCQkJCVwKLSAgICJWU0NSX1JFR1MiLAkJCQkJCQkJXAotICAgIlNQ RV9BQ0NfUkVHUyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLUBAIC0xMTMyLDYgKzEyNTgsNyBAQCBlbnVtIHJlZ19jbGFzcwotICAgeyAw eGZmZmZmZmZmLCAweDAwMDAwMDAwLCAweDAwMDAwMDA4LCAweDAwMDIwMDAwIH0sIC8qIEdFTkVS QUxfUkVHUyAqLyAgICAgXAotICAgeyAweDAwMDAwMDAwLCAweGZmZmZmZmZmLCAweDAwMDAwMDAw LCAweDAwMDAwMDAwIH0sIC8qIEZMT0FUX1JFR1MgKi8gICAgICAgXAotICAgeyAweDAwMDAwMDAw LCAweDAwMDAwMDAwLCAweGZmZmZlMDAwLCAweDAwMDAxZmZmIH0sIC8qIEFMVElWRUNfUkVHUyAq LyAgICAgXAotKyAgeyAweDAwMDAwMDAwLCAweGZmZmZmZmZmLCAweGZmZmZlMDAwLCAweDAwMDAx ZmZmIH0sIC8qIFZTWF9SRUdTICovCSAgICAgXAotICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAw LCAweDAwMDAwMDAwLCAweDAwMDAyMDAwIH0sIC8qIFZSU0FWRV9SRUdTICovCSAgICAgXAotICAg eyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDA0MDAwIH0sIC8qIFZT Q1JfUkVHUyAqLwkgICAgIFwKLSAgIHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw MCwgMHgwMDAwODAwMCB9LCAvKiBTUEVfQUNDX1JFR1MgKi8gICAgIFwKLUBAIC0xMTcxLDI5ICsx Mjk4LDI5IEBAIGVudW0gcmVnX2NsYXNzCi0gICAgcmVnIG51bWJlciBSRUdOTy4gIFRoaXMgY291 bGQgYmUgYSBjb25kaXRpb25hbCBleHByZXNzaW9uCi0gICAgb3IgY291bGQgaW5kZXggYW4gYXJy YXkuICAqLwotIAotLSNkZWZpbmUgUkVHTk9fUkVHX0NMQVNTKFJFR05PKQkJCVwKLS0gKChSRUdO TykgPT0gMCA/IEdFTkVSQUxfUkVHUwkJCVwKLS0gIDogKFJFR05PKSA8IDMyID8gQkFTRV9SRUdT CQkJXAotLSAgOiBGUF9SRUdOT19QIChSRUdOTykgPyBGTE9BVF9SRUdTCQlcCi0tICA6IEFMVElW RUNfUkVHTk9fUCAoUkVHTk8pID8gQUxUSVZFQ19SRUdTCVwKLS0gIDogKFJFR05PKSA9PSBDUjBf UkVHTk8gPyBDUjBfUkVHUwkJXAotLSAgOiBDUl9SRUdOT19QIChSRUdOTykgPyBDUl9SRUdTCQlc Ci0tICA6IChSRUdOTykgPT0gTVFfUkVHTk8gPyBNUV9SRUdTCQlcCi0tICA6IChSRUdOTykgPT0g TFJfUkVHTk8gPyBMSU5LX1JFR1MJXAotLSAgOiAoUkVHTk8pID09IENUUl9SRUdOTyA/IENUUl9S RUdTCVwKLS0gIDogKFJFR05PKSA9PSBBUkdfUE9JTlRFUl9SRUdOVU0gPyBCQVNFX1JFR1MJXAot LSAgOiAoUkVHTk8pID09IFhFUl9SRUdOTyA/IFhFUl9SRUdTCQlcCi0tICA6IChSRUdOTykgPT0g VlJTQVZFX1JFR05PID8gVlJTQVZFX1JFR1MJXAotLSAgOiAoUkVHTk8pID09IFZTQ1JfUkVHTk8g PyBWUlNBVkVfUkVHUwkJXAotLSAgOiAoUkVHTk8pID09IFNQRV9BQ0NfUkVHTk8gPyBTUEVfQUND X1JFR1MJXAotLSAgOiAoUkVHTk8pID09IFNQRUZTQ1JfUkVHTk8gPyBTUEVGU0NSX1JFR1MJXAot LSAgOiAoUkVHTk8pID09IEZSQU1FX1BPSU5URVJfUkVHTlVNID8gQkFTRV9SRUdTCVwKLS0gIDog Tk9fUkVHUykKLStleHRlcm4gZW51bSByZWdfY2xhc3MgcnM2MDAwX3JlZ25vX3JlZ2NsYXNzW0ZJ UlNUX1BTRVVET19SRUdJU1RFUl07Ci0rCi0rI2lmIEVOQUJMRV9DSEVDS0lORwotKyNkZWZpbmUg UkVHTk9fUkVHX0NMQVNTKFJFR05PKSAJCQkJCQlcCi0rICAoZ2NjX2Fzc2VydCAoSU5fUkFOR0Ug KChSRUdOTyksIDAsIEZJUlNUX1BTRVVET19SRUdJU1RFUi0xKSksCQlcCi0rICAgcnM2MDAwX3Jl Z25vX3JlZ2NsYXNzWyhSRUdOTyldKQotKwotKyNlbHNlCi0rI2RlZmluZSBSRUdOT19SRUdfQ0xB U1MoUkVHTk8pIHJzNjAwMF9yZWdub19yZWdjbGFzc1soUkVHTk8pXQotKyNlbmRpZgotKwotKy8q IFZTWCByZWdpc3RlciBjbGFzc2VzLiAgKi8KLStleHRlcm4gZW51bSByZWdfY2xhc3MgcnM2MDAw X3ZlY3Rvcl9yZWdfY2xhc3NbXTsKLStleHRlcm4gZW51bSByZWdfY2xhc3MgcnM2MDAwX3ZzeF9y ZWdfY2xhc3M7Ci0gCi0gLyogVGhlIGNsYXNzIHZhbHVlIGZvciBpbmRleCByZWdpc3RlcnMsIGFu ZCB0aGUgb25lIGZvciBiYXNlIHJlZ3MuICAqLwotICNkZWZpbmUgSU5ERVhfUkVHX0NMQVNTIEdF TkVSQUxfUkVHUwotICNkZWZpbmUgQkFTRV9SRUdfQ0xBU1MgQkFTRV9SRUdTCi0gCi0rLyogUmV0 dXJuIHdoZXRoZXIgYSBnaXZlbiByZWdpc3RlciBjbGFzcyBjYW4gaG9sZCBWU1ggb2JqZWN0cy4g ICovCi0rI2RlZmluZSBWU1hfUkVHX0NMQVNTX1AoQ0xBU1MpCQkJXAotKyAgKChDTEFTUykgPT0g VlNYX1JFR1MgfHwgKENMQVNTKSA9PSBGTE9BVF9SRUdTIHx8IChDTEFTUykgPT0gQUxUSVZFQ19S RUdTKQotKwotIC8qIEdpdmVuIGFuIHJ0eCBYIGJlaW5nIHJlbG9hZGVkIGludG8gYSByZWcgcmVx dWlyZWQgdG8gYmUKLSAgICBpbiBjbGFzcyBDTEFTUywgcmV0dXJuIHRoZSBjbGFzcyBvZiByZWcg dG8gYWN0dWFsbHkgdXNlLgotICAgIEluIGdlbmVyYWwgdGhpcyBpcyBqdXN0IENMQVNTOyBidXQg b24gc29tZSBtYWNoaW5lcwotQEAgLTEyMTMsMTMgKzEzNDAsNyBAQCBlbnVtIHJlZ19jbGFzcwot ICAqLwotIAotICNkZWZpbmUgUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyhYLENMQVNTKQkJCVwKLS0g ICgoQ09OU1RBTlRfUCAoWCkJCQkJCVwKLS0gICAgJiYgcmVnX2NsYXNzZXNfaW50ZXJzZWN0X3Ag KChDTEFTUyksIEZMT0FUX1JFR1MpKQlcCi0tICAgPyBOT19SRUdTIAkJCQkJCVwKLS0gICA6IChH RVRfTU9ERV9DTEFTUyAoR0VUX01PREUgKFgpKSA9PSBNT0RFX0lOVCAJXAotLSAgICAgICYmIChD TEFTUykgPT0gTk9OX1NQRUNJQUxfUkVHUykJCQlcCi0tICAgPyBHRU5FUkFMX1JFR1MJCQkJCVwK LS0gICA6IChDTEFTUykpCi0rICByczYwMDBfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyAoWCwgQ0xB U1MpCi0gCi0gLyogUmV0dXJuIHRoZSByZWdpc3RlciBjbGFzcyBvZiBhIHNjcmF0Y2ggcmVnaXN0 ZXIgbmVlZGVkIHRvIGNvcHkgSU4gaW50bwotICAgIG9yIG91dCBvZiBhIHJlZ2lzdGVyIGluIENM QVNTIGluIE1PREUuICBJZiBpdCBjYW4gYmUgZG9uZSBkaXJlY3RseSwKLUBAIC0xMjM0LDE4ICsx MzU1LDcgQEAgZW51bSByZWdfY2xhc3MKLSAgICBhcmUgYXZhaWxhYmxlLiovCi0gCi0gI2RlZmlu ZSBTRUNPTkRBUllfTUVNT1JZX05FRURFRChDTEFTUzEsQ0xBU1MyLE1PREUpCQkJXAotLSAoKENM QVNTMSkgIT0gKENMQVNTMikgJiYgKCgoQ0xBU1MxKSA9PSBGTE9BVF9SRUdTCQkJXAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmJiAoIVRBUkdFVF9NRlBHUFIgfHwgIVRBUkdFVF9QT1dF UlBDNjQJXAotLQkJCQl8fCAoKE1PREUgIT0gREZtb2RlKQkJCVwKLS0JCQkJICAgICYmIChNT0RF ICE9IEREbW9kZSkJCQlcCi0tCQkJCSAgICAmJiAoTU9ERSAhPSBESW1vZGUpKSkpCQlcCi0tCQkJ ICAgfHwgKChDTEFTUzIpID09IEZMT0FUX1JFR1MJCQlcCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICYmICghVEFSR0VUX01GUEdQUiB8fCAhVEFSR0VUX1BPV0VSUEM2NAlcCi0tCQkJ CSAgIHx8ICgoTU9ERSAhPSBERm1vZGUpCQkJXAotLQkJCQkgICAgICAgJiYgKE1PREUgIT0gRERt b2RlKQkJXAotLQkJCQkgICAgICAgJiYgKE1PREUgIT0gREltb2RlKSkpKQkJXAotLQkJCSAgIHx8 IChDTEFTUzEpID09IEFMVElWRUNfUkVHUwkJCVwKLS0JCQkgICB8fCAoQ0xBU1MyKSA9PSBBTFRJ VkVDX1JFR1MpKQotKyAgcnM2MDAwX3NlY29uZGFyeV9tZW1vcnlfbmVlZGVkIChDTEFTUzEsIENM QVNTMiwgTU9ERSkKLSAKLSAvKiBGb3IgY3B1cyB0aGF0IGNhbm5vdCBsb2FkL3N0b3JlIFNEbW9k ZSB2YWx1ZXMgZnJvbSB0aGUgNjQtYml0Ci0gICAgRlAgcmVnaXN0ZXJzIHdpdGhvdXQgdXNpbmcg YSBmdWxsIDY0LWJpdCBsb2FkL3N0b3JlLCB3ZSBuZWVkCi1AQCAtMTI1NywzMiArMTM2NywxNSBA QCBlbnVtIHJlZ19jbGFzcwotIC8qIFJldHVybiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc2Vj dXRpdmUgcmVnaXN0ZXJzCi0gICAgbmVlZGVkIHRvIHJlcHJlc2VudCBtb2RlIE1PREUgaW4gYSBy ZWdpc3RlciBvZiBjbGFzcyBDTEFTUy4KLSAKLS0gICBPbiBSUy82MDAwLCB0aGlzIGlzIHRoZSBz aXplIG9mIE1PREUgaW4gd29yZHMsCi0tICAgZXhjZXB0IGluIHRoZSBGUCByZWdzLCB3aGVyZSBh IHNpbmdsZSByZWcgaXMgZW5vdWdoIGZvciB0d28gd29yZHMuICAqLwotLSNkZWZpbmUgQ0xBU1Nf TUFYX05SRUdTKENMQVNTLCBNT0RFKQkJCQkJXAotLSAoKChDTEFTUykgPT0gRkxPQVRfUkVHUykg CQkJCQkJXAotLSAgPyAoKEdFVF9NT0RFX1NJWkUgKE1PREUpICsgVU5JVFNfUEVSX0ZQX1dPUkQg LSAxKSAvIFVOSVRTX1BFUl9GUF9XT1JEKSBcCi0tICA6IChUQVJHRVRfRTUwMF9ET1VCTEUgJiYg KENMQVNTKSA9PSBHRU5FUkFMX1JFR1MJCQlcCi0tICAgICAmJiAoTU9ERSkgPT0gREZtb2RlKQkJ CQlcCi0tICA/IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotLSAgOiAoKEdFVF9NT0RFX1NJWkUgKE1PREUpICsgVU5J VFNfUEVSX1dPUkQgLSAxKSAvIFVOSVRTX1BFUl9XT1JEKSkKLSsgICBPbiBSUy82MDAwLCB0aGlz IGlzIHRoZSBzaXplIG9mIE1PREUgaW4gd29yZHMsIGV4Y2VwdCBpbiB0aGUgRlAgcmVncywgd2hl cmUKLSsgICBhIHNpbmdsZSByZWcgaXMgZW5vdWdoIGZvciB0d28gd29yZHMsIHVubGVzcyB3ZSBo YXZlIFZTWCwgd2hlcmUgdGhlIEZQCi0rICAgcmVnaXN0ZXJzIGNhbiBob2xkIDEyOCBiaXRzLiAg Ki8KLSsjZGVmaW5lIENMQVNTX01BWF9OUkVHUyhDTEFTUywgTU9ERSkgcnM2MDAwX2NsYXNzX21h eF9ucmVnc1soTU9ERSldWyhDTEFTUyldCi0gCi0gLyogUmV0dXJuIG5vbnplcm8gaWYgZm9yIENM QVNTIGEgbW9kZSBjaGFuZ2UgZnJvbSBGUk9NIHRvIFRPIGlzIGludmFsaWQuICAqLwotIAotICNk ZWZpbmUgQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKEZST00sIFRPLCBDTEFTUykJCQlcCi0tICAo R0VUX01PREVfU0laRSAoRlJPTSkgIT0gR0VUX01PREVfU0laRSAoVE8pCQkJCVwKLS0gICA/ICgo R0VUX01PREVfU0laRSAoRlJPTSkgPCA4IHx8IEdFVF9NT0RFX1NJWkUgKFRPKSA8IDgJCVwKLS0g ICAgICAgfHwgVEFSR0VUX0lFRUVRVUFEKQkJCQkJCVwKLS0gICAgICAmJiByZWdfY2xhc3Nlc19p bnRlcnNlY3RfcCAoRkxPQVRfUkVHUywgQ0xBU1MpKQkJCVwKLS0gICA6ICgoKFRBUkdFVF9FNTAw X0RPVUJMRQkJCQkJCVwKLS0JJiYgKCgoKFRPKSA9PSBERm1vZGUpICsgKChGUk9NKSA9PSBERm1v ZGUpKSA9PSAxCQlcCi0tCSAgICB8fCAoKChUTykgPT0gVEZtb2RlKSArICgoRlJPTSkgPT0gVEZt b2RlKSkgPT0gMQkJXAotLQkgICAgfHwgKCgoVE8pID09IEREbW9kZSkgKyAoKEZST00pID09IERE bW9kZSkpID09IDEJCVwKLS0JICAgIHx8ICgoKFRPKSA9PSBURG1vZGUpICsgKChGUk9NKSA9PSBU RG1vZGUpKSA9PSAxCQlcCi0tCSAgICB8fCAoKChUTykgPT0gREltb2RlKSArICgoRlJPTSkgPT0g REltb2RlKSkgPT0gMSkpCQlcCi0tICAgICAgIHx8IChUQVJHRVRfU1BFCQkJCQkJCVwKLS0JICAg JiYgKFNQRV9WRUNUT1JfTU9ERSAoRlJPTSkgKyBTUEVfVkVDVE9SX01PREUgKFRPKSkgPT0gMSkp CVwKLS0gICAgICAmJiByZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAoR0VORVJBTF9SRUdTLCBDTEFT UykpKQotKyAgcnM2MDAwX2Nhbm5vdF9jaGFuZ2VfbW9kZV9jbGFzcyAoRlJPTSwgVE8sIENMQVNT KQotIAotIC8qIFN0YWNrIGxheW91dDsgZnVuY3Rpb24gZW50cnksIGV4aXQgYW5kIGNhbGxpbmcu ICAqLwotIAotQEAgLTEzNDMsOCArMTQzNiw4IEBAIGV4dGVybiBlbnVtIHJzNjAwMF9hYmkgcnM2 MDAwX2N1cnJlbnRfYWIKLSAjZGVmaW5lIFNUQVJUSU5HX0ZSQU1FX09GRlNFVAkJCQkJCVwKLSAg IChGUkFNRV9HUk9XU19ET1dOV0FSRAkJCQkJCQlcCi0gICAgPyAwCQkJCQkJCQkJXAotLSAgIDog KFJTNjAwMF9BTElHTiAoY3J0bC0+b3V0Z29pbmdfYXJnc19zaXplLAkJXAotLQkJICAgIFRBUkdF VF9BTFRJVkVDID8gMTYgOiA4KQkJCQlcCi0rICAgOiAoUlM2MDAwX0FMSUdOIChjcnRsLT5vdXRn b2luZ19hcmdzX3NpemUsCQkJCVwKLSsJCSAgICAoVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VUX1ZT WCkgPyAxNiA6IDgpCQlcCi0gICAgICAgKyBSUzYwMDBfU0FWRV9BUkVBKSkKLSAKLSAvKiBPZmZz ZXQgZnJvbSB0aGUgc3RhY2sgcG9pbnRlciByZWdpc3RlciB0byBhbiBpdGVtIGR5bmFtaWNhbGx5 Ci1AQCAtMTM1NCw4ICsxNDQ3LDggQEAgZXh0ZXJuIGVudW0gcnM2MDAwX2FiaSByczYwMDBfY3Vy cmVudF9hYgotICAgIGxlbmd0aCBvZiB0aGUgb3V0Z29pbmcgYXJndW1lbnRzLiAgVGhlIGRlZmF1 bHQgaXMgY29ycmVjdCBmb3IgbW9zdAotICAgIG1hY2hpbmVzLiAgU2VlIGBmdW5jdGlvbi5jJyBm b3IgZGV0YWlscy4gICovCi0gI2RlZmluZSBTVEFDS19EWU5BTUlDX09GRlNFVChGVU5ERUNMKQkJ CQkJXAotLSAgKFJTNjAwMF9BTElHTiAoY3J0bC0+b3V0Z29pbmdfYXJnc19zaXplLAkJCVwKLS0J CSBUQVJHRVRfQUxUSVZFQyA/IDE2IDogOCkJCQkJXAotKyAgKFJTNjAwMF9BTElHTiAoY3J0bC0+ b3V0Z29pbmdfYXJnc19zaXplLAkJCQlcCi0rCQkgKFRBUkdFVF9BTFRJVkVDIHx8IFRBUkdFVF9W U1gpID8gMTYgOiA4KQkJXAotICAgICsgKFNUQUNLX1BPSU5URVJfT0ZGU0VUKSkKLSAKLSAvKiBJ ZiB3ZSBnZW5lcmF0ZSBhbiBpbnNuIHRvIHB1c2ggQllURVMgYnl0ZXMsCi1AQCAtMTYwNSw3ICsx Njk4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgcnM2MDAwX2FyZ3MKLSAjZGVmaW5lCUVQSUxPR1VFX1VT RVMoUkVHTk8pCQkJCQlcCi0gICAoKHJlbG9hZF9jb21wbGV0ZWQgJiYgKFJFR05PKSA9PSBMUl9S RUdOTykJCQlcCi0gICAgfHwgKFRBUkdFVF9BTFRJVkVDICYmIChSRUdOTykgPT0gVlJTQVZFX1JF R05PKQkJXAotLSAgIHx8IChjcnRsLT5jYWxsc19laF9yZXR1cm4JCQkJXAotKyAgIHx8IChjcnRs LT5jYWxsc19laF9yZXR1cm4JCQkJCVwKLSAgICAgICAgJiYgVEFSR0VUX0FJWAkJCQkJCVwKLSAg ICAgICAgJiYgKFJFR05PKSA9PSAyKSkKLSAKLUBAIC0yMzE2LDcgKzI0MDksMjQgQEAgZXh0ZXJu IGNoYXIgcnM2MDAwX3JlZ19uYW1lc1tdWzhdOwkvKiByZQotICAgLyogbm8gYWRkaXRpb25hbCBu YW1lcyBmb3I6IG1xLCBsciwgY3RyLCBhcCAqLwkJXAotICAgeyJjcjAiLCAgNjh9LCB7ImNyMSIs ICA2OX0sIHsiY3IyIiwgIDcwfSwgeyJjcjMiLCAgNzF9LAlcCi0gICB7ImNyNCIsICA3Mn0sIHsi Y3I1IiwgIDczfSwgeyJjcjYiLCAgNzR9LCB7ImNyNyIsICA3NX0sCVwKLS0gIHsiY2MiLCAgIDY4 fSwgeyJzcCIsICAgIDF9LCB7InRvYyIsICAgMn0gfQotKyAgeyJjYyIsICAgNjh9LCB7InNwIiwg ICAgMX0sIHsidG9jIiwgICAyfSwJCQlcCi0rICAvKiBWU1ggcmVnaXN0ZXJzIG92ZXJsYWlkIG9u IHRvcCBvZiBGUiwgQWx0aXZlYyByZWdpc3RlcnMgKi8JXAotKyAgeyJ2czAiLCAgMzJ9LCB7InZz MSIsICAzM30sIHsidnMyIiwgIDM0fSwgeyJ2czMiLCAgMzV9LAlcCi0rICB7InZzNCIsICAzNn0s IHsidnM1IiwgIDM3fSwgeyJ2czYiLCAgMzh9LCB7InZzNyIsICAzOX0sCVwKLSsgIHsidnM4Iiwg IDQwfSwgeyJ2czkiLCAgNDF9LCB7InZzMTAiLCA0Mn0sIHsidnMxMSIsIDQzfSwJXAotKyAgeyJ2 czEyIiwgNDR9LCB7InZzMTMiLCA0NX0sIHsidnMxNCIsIDQ2fSwgeyJ2czE1IiwgNDd9LAlcCi0r ICB7InZzMTYiLCA0OH0sIHsidnMxNyIsIDQ5fSwgeyJ2czE4IiwgNTB9LCB7InZzMTkiLCA1MX0s CVwKLSsgIHsidnMyMCIsIDUyfSwgeyJ2czIxIiwgNTN9LCB7InZzMjIiLCA1NH0sIHsidnMyMyIs IDU1fSwJXAotKyAgeyJ2czI0IiwgNTZ9LCB7InZzMjUiLCA1N30sIHsidnMyNiIsIDU4fSwgeyJ2 czI3IiwgNTl9LAlcCi0rICB7InZzMjgiLCA2MH0sIHsidnMyOSIsIDYxfSwgeyJ2czMwIiwgNjJ9 LCB7InZzMzEiLCA2M30sCVwKLSsgIHsidnMzMiIsIDc3fSwgeyJ2czMzIiwgNzh9LCB7InZzMzQi LCA3OX0sIHsidnMzNSIsIDgwfSwgICAgICAgXAotKyAgeyJ2czM2IiwgODF9LCB7InZzMzciLCA4 Mn0sIHsidnMzOCIsIDgzfSwgeyJ2czM5IiwgODR9LCAgICAgICBcCi0rICB7InZzNDAiLCA4NX0s IHsidnM0MSIsIDg2fSwgeyJ2czQyIiwgODd9LCB7InZzNDMiLCA4OH0sICAgICAgIFwKLSsgIHsi dnM0NCIsIDg5fSwgeyJ2czQ1IiwgOTB9LCB7InZzNDYiLCA5MX0sIHsidnM0NyIsIDkyfSwgICAg ICAgXAotKyAgeyJ2czQ4IiwgOTN9LCB7InZzNDkiLCA5NH0sIHsidnM1MCIsIDk1fSwgeyJ2czUx IiwgOTZ9LCAgICAgICBcCi0rICB7InZzNTIiLCA5N30sIHsidnM1MyIsIDk4fSwgeyJ2czU0Iiwg OTl9LCB7InZzNTUiLCAxMDB9LAlcCi0rICB7InZzNTYiLCAxMDF9LHsidnM1NyIsIDEwMn0seyJ2 czU4IiwgMTAzfSx7InZzNTkiLCAxMDR9LCAgICAgIFwKLSsgIHsidnM2MCIsIDEwNX0seyJ2czYx IiwgMTA2fSx7InZzNjIiLCAxMDd9LHsidnM2MyIsIDEwOH0gfQotIAotIC8qIFRleHQgdG8gd3Jp dGUgb3V0IGFmdGVyIGEgQ0FMTCB0aGF0IG1heSBiZSByZXBsYWNlZCBieSBnbHVlIGNvZGUgYnkK LSAgICB0aGUgbG9hZGVyLiAgVGhpcyBkZXBlbmRzIG9uIHRoZSBBSVggdmVyc2lvbi4gICovCi1A QCAtMjQ4MCwxMCArMjU5MCwxNCBAQCBlbnVtIHJzNjAwMF9idWlsdGlucwotICAgQUxUSVZFQ19C VUlMVElOX1ZTRUxfNFNGLAotICAgQUxUSVZFQ19CVUlMVElOX1ZTRUxfOEhJLAotICAgQUxUSVZF Q19CVUlMVElOX1ZTRUxfMTZRSSwKLSsgIEFMVElWRUNfQlVJTFRJTl9WU0VMXzJERiwJCS8qIG5l ZWRlZCBmb3IgVlNYICovCi0rICBBTFRJVkVDX0JVSUxUSU5fVlNFTF8yREksCQkvKiBuZWVkZWQg Zm9yIFZTWCAqLwotICAgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzRTSSwKLSAgIEFMVElWRUNfQlVJ TFRJTl9WUEVSTV80U0YsCi0gICBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fOEhJLAotICAgQUxUSVZF Q19CVUlMVElOX1ZQRVJNXzE2UUksCi0rICBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fMkRGLAkJLyog bmVlZGVkIGZvciBWU1ggKi8KLSsgIEFMVElWRUNfQlVJTFRJTl9WUEVSTV8yREksCQkvKiBuZWVk ZWQgZm9yIFZTWCAqLwotICAgQUxUSVZFQ19CVUlMVElOX1ZQS1VIVU0sCi0gICBBTFRJVkVDX0JV SUxUSU5fVlBLVVdVTSwKLSAgIEFMVElWRUNfQlVJTFRJTl9WUEtQWCwKLUBAIC0yODM5LDYgKzI5 NTMsNyBAQCBlbnVtIHJzNjAwMF9idWlsdGlucwotICAgQUxUSVZFQ19CVUlMVElOX1ZFQ19QUk9N T1RFLAotICAgQUxUSVZFQ19CVUlMVElOX1ZFQ19JTlNFUlQsCi0gICBBTFRJVkVDX0JVSUxUSU5f VkVDX1NQTEFUUywKLSsKLSAgIEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QgPSBBTFRJ VkVDX0JVSUxUSU5fVkVDX1NQTEFUUywKLSAKLSAgIC8qIFNQRSBidWlsdGlucy4gICovCi1AQCAt MzExMCw2ICszMjI1LDE2MyBAQCBlbnVtIHJzNjAwMF9idWlsdGlucwotICAgUlM2MDAwX0JVSUxU SU5fUkVDSVBGLAotICAgUlM2MDAwX0JVSUxUSU5fUlNRUlRGLAotIAotKyAgLyogVlNYIGJ1aWx0 aW5zLiAgKi8KLSsgIFZTWF9CVUlMVElOX0xYU0RVWCwKLSsgIFZTWF9CVUlMVElOX0xYU0RYLAot KyAgVlNYX0JVSUxUSU5fTFhWRDJVWCwKLSsgIFZTWF9CVUlMVElOX0xYVkQyWCwKLSsgIFZTWF9C VUlMVElOX0xYVkRTWCwKLSsgIFZTWF9CVUlMVElOX0xYVlc0VVgsCi0rICBWU1hfQlVJTFRJTl9M WFZXNFgsCi0rICBWU1hfQlVJTFRJTl9TVFhTRFVYLAotKyAgVlNYX0JVSUxUSU5fU1RYU0RYLAot KyAgVlNYX0JVSUxUSU5fU1RYVkQyVVgsCi0rICBWU1hfQlVJTFRJTl9TVFhWRDJYLAotKyAgVlNY X0JVSUxUSU5fU1RYVlc0VVgsCi0rICBWU1hfQlVJTFRJTl9TVFhWVzRYLAotKyAgVlNYX0JVSUxU SU5fWFNBQlNEUCwKLSsgIFZTWF9CVUlMVElOX1hTQURERFAsCi0rICBWU1hfQlVJTFRJTl9YU0NN UE9EUCwKLSsgIFZTWF9CVUlMVElOX1hTQ01QVURQLAotKyAgVlNYX0JVSUxUSU5fWFNDUFNHTkRQ LAotKyAgVlNYX0JVSUxUSU5fWFNDVkRQU1AsCi0rICBWU1hfQlVJTFRJTl9YU0NWRFBTWERTLAot KyAgVlNYX0JVSUxUSU5fWFNDVkRQU1hXUywKLSsgIFZTWF9CVUlMVElOX1hTQ1ZEUFVYRFMsCi0r ICBWU1hfQlVJTFRJTl9YU0NWRFBVWFdTLAotKyAgVlNYX0JVSUxUSU5fWFNDVlNQRFAsCi0rICBW U1hfQlVJTFRJTl9YU0NWU1hERFAsCi0rICBWU1hfQlVJTFRJTl9YU0NWVVhERFAsCi0rICBWU1hf QlVJTFRJTl9YU0RJVkRQLAotKyAgVlNYX0JVSUxUSU5fWFNNQUREQURQLAotKyAgVlNYX0JVSUxU SU5fWFNNQURETURQLAotKyAgVlNYX0JVSUxUSU5fWFNNQVhEUCwKLSsgIFZTWF9CVUlMVElOX1hT TUlORFAsCi0rICBWU1hfQlVJTFRJTl9YU01PVkRQLAotKyAgVlNYX0JVSUxUSU5fWFNNU1VCQURQ LAotKyAgVlNYX0JVSUxUSU5fWFNNU1VCTURQLAotKyAgVlNYX0JVSUxUSU5fWFNNVUxEUCwKLSsg IFZTWF9CVUlMVElOX1hTTkFCU0RQLAotKyAgVlNYX0JVSUxUSU5fWFNORUdEUCwKLSsgIFZTWF9C VUlMVElOX1hTTk1BRERBRFAsCi0rICBWU1hfQlVJTFRJTl9YU05NQURETURQLAotKyAgVlNYX0JV SUxUSU5fWFNOTVNVQkFEUCwKLSsgIFZTWF9CVUlMVElOX1hTTk1TVUJNRFAsCi0rICBWU1hfQlVJ TFRJTl9YU1JEUEksCi0rICBWU1hfQlVJTFRJTl9YU1JEUElDLAotKyAgVlNYX0JVSUxUSU5fWFNS RFBJTSwKLSsgIFZTWF9CVUlMVElOX1hTUkRQSVAsCi0rICBWU1hfQlVJTFRJTl9YU1JEUElaLAot KyAgVlNYX0JVSUxUSU5fWFNSRURQLAotKyAgVlNYX0JVSUxUSU5fWFNSU1FSVEVEUCwKLSsgIFZT WF9CVUlMVElOX1hTU1FSVERQLAotKyAgVlNYX0JVSUxUSU5fWFNTVUJEUCwKLSsgIFZTWF9CVUlM VElOX1hTVERJVkRQLAotKyAgVlNYX0JVSUxUSU5fWFNUU1FSVERQLAotKyAgVlNYX0JVSUxUSU5f WFZBQlNEUCwKLSsgIFZTWF9CVUlMVElOX1hWQUJTU1AsCi0rICBWU1hfQlVJTFRJTl9YVkFERERQ LAotKyAgVlNYX0JVSUxUSU5fWFZBRERTUCwKLSsgIFZTWF9CVUlMVElOX1hWQ01QRVFEUCwKLSsg IFZTWF9CVUlMVElOX1hWQ01QRVFTUCwKLSsgIFZTWF9CVUlMVElOX1hWQ01QR0VEUCwKLSsgIFZT WF9CVUlMVElOX1hWQ01QR0VTUCwKLSsgIFZTWF9CVUlMVElOX1hWQ01QR1REUCwKLSsgIFZTWF9C VUlMVElOX1hWQ01QR1RTUCwKLSsgIFZTWF9CVUlMVElOX1hWQ1BTR05EUCwKLSsgIFZTWF9CVUlM VElOX1hWQ1BTR05TUCwKLSsgIFZTWF9CVUlMVElOX1hWQ1ZEUFNQLAotKyAgVlNYX0JVSUxUSU5f WFZDVkRQU1hEUywKLSsgIFZTWF9CVUlMVElOX1hWQ1ZEUFNYV1MsCi0rICBWU1hfQlVJTFRJTl9Y VkNWRFBVWERTLAotKyAgVlNYX0JVSUxUSU5fWFZDVkRQVVhXUywKLSsgIFZTWF9CVUlMVElOX1hW Q1ZTUERQLAotKyAgVlNYX0JVSUxUSU5fWFZDVlNQU1hEUywKLSsgIFZTWF9CVUlMVElOX1hWQ1ZT UFNYV1MsCi0rICBWU1hfQlVJTFRJTl9YVkNWU1BVWERTLAotKyAgVlNYX0JVSUxUSU5fWFZDVlNQ VVhXUywKLSsgIFZTWF9CVUlMVElOX1hWQ1ZTWEREUCwKLSsgIFZTWF9CVUlMVElOX1hWQ1ZTWERT UCwKLSsgIFZTWF9CVUlMVElOX1hWQ1ZTWFdEUCwKLSsgIFZTWF9CVUlMVElOX1hWQ1ZTWFdTUCwK LSsgIFZTWF9CVUlMVElOX1hWQ1ZVWEREUCwKLSsgIFZTWF9CVUlMVElOX1hWQ1ZVWERTUCwKLSsg IFZTWF9CVUlMVElOX1hWQ1ZVWFdEUCwKLSsgIFZTWF9CVUlMVElOX1hWQ1ZVWFdTUCwKLSsgIFZT WF9CVUlMVElOX1hWRElWRFAsCi0rICBWU1hfQlVJTFRJTl9YVkRJVlNQLAotKyAgVlNYX0JVSUxU SU5fWFZNQURERFAsCi0rICBWU1hfQlVJTFRJTl9YVk1BRERTUCwKLSsgIFZTWF9CVUlMVElOX1hW TUFYRFAsCi0rICBWU1hfQlVJTFRJTl9YVk1BWFNQLAotKyAgVlNYX0JVSUxUSU5fWFZNSU5EUCwK LSsgIFZTWF9CVUlMVElOX1hWTUlOU1AsCi0rICBWU1hfQlVJTFRJTl9YVk1TVUJEUCwKLSsgIFZT WF9CVUlMVElOX1hWTVNVQlNQLAotKyAgVlNYX0JVSUxUSU5fWFZNVUxEUCwKLSsgIFZTWF9CVUlM VElOX1hWTVVMU1AsCi0rICBWU1hfQlVJTFRJTl9YVk5BQlNEUCwKLSsgIFZTWF9CVUlMVElOX1hW TkFCU1NQLAotKyAgVlNYX0JVSUxUSU5fWFZORUdEUCwKLSsgIFZTWF9CVUlMVElOX1hWTkVHU1As Ci0rICBWU1hfQlVJTFRJTl9YVk5NQURERFAsCi0rICBWU1hfQlVJTFRJTl9YVk5NQUREU1AsCi0r ICBWU1hfQlVJTFRJTl9YVk5NU1VCRFAsCi0rICBWU1hfQlVJTFRJTl9YVk5NU1VCU1AsCi0rICBW U1hfQlVJTFRJTl9YVlJEUEksCi0rICBWU1hfQlVJTFRJTl9YVlJEUElDLAotKyAgVlNYX0JVSUxU SU5fWFZSRFBJTSwKLSsgIFZTWF9CVUlMVElOX1hWUkRQSVAsCi0rICBWU1hfQlVJTFRJTl9YVlJE UElaLAotKyAgVlNYX0JVSUxUSU5fWFZSRURQLAotKyAgVlNYX0JVSUxUSU5fWFZSRVNQLAotKyAg VlNYX0JVSUxUSU5fWFZSU1BJLAotKyAgVlNYX0JVSUxUSU5fWFZSU1BJQywKLSsgIFZTWF9CVUlM VElOX1hWUlNQSU0sCi0rICBWU1hfQlVJTFRJTl9YVlJTUElQLAotKyAgVlNYX0JVSUxUSU5fWFZS U1BJWiwKLSsgIFZTWF9CVUlMVElOX1hWUlNRUlRFRFAsCi0rICBWU1hfQlVJTFRJTl9YVlJTUVJU RVNQLAotKyAgVlNYX0JVSUxUSU5fWFZTUVJURFAsCi0rICBWU1hfQlVJTFRJTl9YVlNRUlRTUCwK LSsgIFZTWF9CVUlMVElOX1hWU1VCRFAsCi0rICBWU1hfQlVJTFRJTl9YVlNVQlNQLAotKyAgVlNY X0JVSUxUSU5fWFZURElWRFAsCi0rICBWU1hfQlVJTFRJTl9YVlRESVZTUCwKLSsgIFZTWF9CVUlM VElOX1hWVFNRUlREUCwKLSsgIFZTWF9CVUlMVElOX1hWVFNRUlRTUCwKLSsgIFZTWF9CVUlMVElO X1hYTEFORCwKLSsgIFZTWF9CVUlMVElOX1hYTEFOREMsCi0rICBWU1hfQlVJTFRJTl9YWExOT1Is Ci0rICBWU1hfQlVJTFRJTl9YWExPUiwKLSsgIFZTWF9CVUlMVElOX1hYTFhPUiwKLSsgIFZTWF9C VUlMVElOX1hYTVJHSEQsCi0rICBWU1hfQlVJTFRJTl9YWE1SR0hXLAotKyAgVlNYX0JVSUxUSU5f WFhNUkdMRCwKLSsgIFZTWF9CVUlMVElOX1hYTVJHTFcsCi0rICBWU1hfQlVJTFRJTl9YWFBFUk1E SSwKLSsgIFZTWF9CVUlMVElOX1hYU0VMLAotKyAgVlNYX0JVSUxUSU5fWFhTTERXSSwKLSsgIFZT WF9CVUlMVElOX1hYU1BMVEQsCi0rICBWU1hfQlVJTFRJTl9YWFNQTFRXLAotKyAgVlNYX0JVSUxU SU5fWFhTV0FQRCwKLSsKLSsgIC8qIFZTWCBvdmVybG9hZGVkIGJ1aWx0aW5zLCBhZGQgdGhlIG92 ZXJsb2FkZWQgZnVuY3Rpb25zIG5vdCBwcmVzZW50IGluCi0rICAgICBBbHRpdmVjLiAgKi8KLSsg IFZTWF9CVUlMVElOX1ZFQ19NVUwsCi0rICBWU1hfQlVJTFRJTl9PVkVSTE9BREVEX0ZJUlNUID0g VlNYX0JVSUxUSU5fVkVDX01VTCwKLSsgIFZTWF9CVUlMVElOX1ZFQ19NU1VCLAotKyAgVlNYX0JV SUxUSU5fVkVDX05NQURELAotKyAgVlNYX0JVSVRMSU5fVkVDX05NU1VCLAotKyAgVlNYX0JVSUxU SU5fVkVDX0RJViwKLSsgIFZTWF9CVUlMVElOX09WRVJMT0FERURfTEFTVCA9IFZTWF9CVUlMVElO X1ZFQ19ESVYsCi0rCi0rICAvKiBDb21iaW5lZCBWU1gvQWx0aXZlYyBidWlsdGlucy4gICovCi0r ICBWRUNUT1JfQlVJTFRJTl9GTE9BVF9WNFNJX1Y0U0YsCi0rICBWRUNUT1JfQlVJTFRJTl9VTlNG TE9BVF9WNFNJX1Y0U0YsCi0rICBWRUNUT1JfQlVJTFRJTl9GSVhfVjRTRl9WNFNJLAotKyAgVkVD VE9SX0JVSUxUSU5fRklYVU5TX1Y0U0ZfVjRTSSwKLSsKLSAgIFJTNjAwMF9CVUlMVElOX0NPVU5U Ci0gfTsKLSAKLUBAIC0zMTIzLDYgKzMzOTUsOCBAQCBlbnVtIHJzNjAwMF9idWlsdGluX3R5cGVf aW5kZXgKLSAgIFJTNjAwMF9CVElfVjE2UUksCi0gICBSUzYwMDBfQlRJX1YyU0ksCi0gICBSUzYw MDBfQlRJX1YyU0YsCi0rICBSUzYwMDBfQlRJX1YyREksCi0rICBSUzYwMDBfQlRJX1YyREYsCi0g ICBSUzYwMDBfQlRJX1Y0SEksCi0gICBSUzYwMDBfQlRJX1Y0U0ksCi0gICBSUzYwMDBfQlRJX1Y0 U0YsCi1AQCAtMzE0Niw3ICszNDIwLDEwIEBAIGVudW0gcnM2MDAwX2J1aWx0aW5fdHlwZV9pbmRl eAotICAgUlM2MDAwX0JUSV9VSU5USEksCQkgLyogdW5zaWduZWRfaW50SElfdHlwZV9ub2RlICov Ci0gICBSUzYwMDBfQlRJX0lOVFNJLAkJIC8qIGludFNJX3R5cGVfbm9kZSAqLwotICAgUlM2MDAw X0JUSV9VSU5UU0ksCQkgLyogdW5zaWduZWRfaW50U0lfdHlwZV9ub2RlICovCi0rICBSUzYwMDBf QlRJX0lOVERJLAkJIC8qIGludERJX3R5cGVfbm9kZSAqLwotKyAgUlM2MDAwX0JUSV9VSU5UREks CQkgLyogdW5zaWduZWRfaW50RElfdHlwZV9ub2RlICovCi0gICBSUzYwMDBfQlRJX2Zsb2F0LAkg ICAgICAgICAvKiBmbG9hdF90eXBlX25vZGUgKi8KLSsgIFJTNjAwMF9CVElfZG91YmxlLAkgICAg ICAgICAvKiBkb3VibGVfdHlwZV9ub2RlICovCi0gICBSUzYwMDBfQlRJX3ZvaWQsCSAgICAgICAg IC8qIHZvaWRfdHlwZV9ub2RlICovCi0gICBSUzYwMDBfQlRJX01BWAotIH07Ci1AQCAtMzE1Nyw2 ICszNDM0LDggQEAgZW51bSByczYwMDBfYnVpbHRpbl90eXBlX2luZGV4Ci0gI2RlZmluZSBvcGFx dWVfcF9WMlNJX3R5cGVfbm9kZSAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JU SV9vcGFxdWVfcF9WMlNJXSkKLSAjZGVmaW5lIG9wYXF1ZV9WNFNJX3R5cGVfbm9kZSAgICAgICAg IChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX29wYXF1ZV9WNFNJXSkKLSAjZGVmaW5l IFYxNlFJX3R5cGVfbm9kZSAgICAgICAgICAgICAgIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYw MDBfQlRJX1YxNlFJXSkKLSsjZGVmaW5lIFYyRElfdHlwZV9ub2RlICAgICAgICAgICAgICAgIChy czYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX1YyREldKQotKyNkZWZpbmUgVjJERl90eXBl X25vZGUgICAgICAgICAgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfVjJE Rl0pCi0gI2RlZmluZSBWMlNJX3R5cGVfbm9kZSAgICAgICAgICAgICAgICAocnM2MDAwX2J1aWx0 aW5fdHlwZXNbUlM2MDAwX0JUSV9WMlNJXSkKLSAjZGVmaW5lIFYyU0ZfdHlwZV9ub2RlICAgICAg ICAgICAgICAgIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX1YyU0ZdKQotICNkZWZp bmUgVjRISV90eXBlX25vZGUgICAgICAgICAgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JT NjAwMF9CVElfVjRISV0pCi1AQCAtMzE4Myw3ICszNDYyLDEwIEBAIGVudW0gcnM2MDAwX2J1aWx0 aW5fdHlwZV9pbmRleAotICNkZWZpbmUgdWludEhJX3R5cGVfaW50ZXJuYWxfbm9kZQkgKHJzNjAw MF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfVUlOVEhJXSkKLSAjZGVmaW5lIGludFNJX3R5cGVf aW50ZXJuYWxfbm9kZQkgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfSU5UU0ldKQot ICNkZWZpbmUgdWludFNJX3R5cGVfaW50ZXJuYWxfbm9kZQkgKHJzNjAwMF9idWlsdGluX3R5cGVz W1JTNjAwMF9CVElfVUlOVFNJXSkKLSsjZGVmaW5lIGludERJX3R5cGVfaW50ZXJuYWxfbm9kZQkg KHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfSU5UREldKQotKyNkZWZpbmUgdWludERJ X3R5cGVfaW50ZXJuYWxfbm9kZQkgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfVUlO VERJXSkKLSAjZGVmaW5lIGZsb2F0X3R5cGVfaW50ZXJuYWxfbm9kZQkgKHJzNjAwMF9idWlsdGlu X3R5cGVzW1JTNjAwMF9CVElfZmxvYXRdKQotKyNkZWZpbmUgZG91YmxlX3R5cGVfaW50ZXJuYWxf bm9kZQkgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfZG91YmxlXSkKLSAjZGVmaW5l IHZvaWRfdHlwZV9pbnRlcm5hbF9ub2RlCQkgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9C VElfdm9pZF0pCi0gCi0gZXh0ZXJuIEdUWSgoKSkgdHJlZSByczYwMDBfYnVpbHRpbl90eXBlc1tS UzYwMDBfQlRJX01BWF07Ci0tLS0gZ2NjL2NvbmZpZy9yczYwMDAvYWx0aXZlYy5tZAkoLi4uL3Ry dW5rKQkocmV2aXNpb24gMTQ1Nzc3KQotKysrIGdjYy9jb25maWcvcnM2MDAwL2FsdGl2ZWMubWQJ KC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAg LTIxLDE4ICsyMSw3IEBACi0gCi0gKGRlZmluZV9jb25zdGFudHMKLSAgIFsoVU5TUEVDX1ZDTVBC RlAgICAgICAgNTApCi0tICAgKFVOU1BFQ19WQ01QRVFVQiAgICAgIDUxKQotLSAgIChVTlNQRUNf VkNNUEVRVUggICAgICA1MikKLS0gICAoVU5TUEVDX1ZDTVBFUVVXICAgICAgNTMpCi0tICAgKFVO U1BFQ19WQ01QRVFGUCAgICAgIDU0KQotLSAgIChVTlNQRUNfVkNNUEdFRlAgICAgICA1NSkKLS0g ICAoVU5TUEVDX1ZDTVBHVFVCICAgICAgNTYpCi0tICAgKFVOU1BFQ19WQ01QR1RTQiAgICAgIDU3 KQotLSAgIChVTlNQRUNfVkNNUEdUVUggICAgICA1OCkKLS0gICAoVU5TUEVDX1ZDTVBHVFNIICAg ICAgNTkpCi0tICAgKFVOU1BFQ19WQ01QR1RVVyAgICAgIDYwKQotLSAgIChVTlNQRUNfVkNNUEdU U1cgICAgICA2MSkKLS0gICAoVU5TUEVDX1ZDTVBHVEZQICAgICAgNjIpCi0rICAgOzsgNTEtNjIg ZGVsZXRlZAotICAgIChVTlNQRUNfVk1TVU1VICAgICAgICA2NSkKLSAgICAoVU5TUEVDX1ZNU1VN TSAgICAgICAgNjYpCi0gICAgKFVOU1BFQ19WTVNVTVNITSAgICAgIDY4KQotQEAgLTg3LDEwICs3 Niw3IEBAIChkZWZpbmVfY29uc3RhbnRzCi0gICAgKFVOU1BFQ19WRVhQVEVGUCAgICAgMTU2KQot ICAgIChVTlNQRUNfVlJTUVJURUZQICAgIDE1NykKLSAgICAoVU5TUEVDX1ZSRUZQICAgICAgICAx NTgpCi0tICAgKFVOU1BFQ19WU0VMNFNJICAgICAgMTU5KQotLSAgIChVTlNQRUNfVlNFTDRTRiAg ICAgIDE2MCkKLS0gICAoVU5TUEVDX1ZTRUw4SEkgICAgICAxNjEpCi0tICAgKFVOU1BFQ19WU0VM MTZRSSAgICAgMTYyKQotKyAgIDs7IDE1OS0xNjIgZGVsZXRlZAotICAgIChVTlNQRUNfVkxTRE9J ICAgICAgIDE2MykKLSAgICAoVU5TUEVDX1ZVUEtIU0IgICAgICAxNjcpCi0gICAgKFVOU1BFQ19W VVBLSFBYICAgICAgMTY4KQotQEAgLTEyNSwxMSArMTExLDExIEBAIChkZWZpbmVfY29uc3RhbnRz Ci0gICAgKFVOU1BFQ19JTlRFUkhJX1Y0U0kgMjI4KQotICAgIChVTlNQRUNfSU5URVJISV9WOEhJ IDIyOSkKLSAgICAoVU5TUEVDX0lOVEVSSElfVjE2UUkgMjMwKQotLSAgIChVTlNQRUNfSU5URVJI SV9WNFNGIDIzMSkKLSsgICA7OyBkZWxldGUgMjMxCi0gICAgKFVOU1BFQ19JTlRFUkxPX1Y0U0kg MjMyKQotICAgIChVTlNQRUNfSU5URVJMT19WOEhJIDIzMykKLSAgICAoVU5TUEVDX0lOVEVSTE9f VjE2UUkgMjM0KQotLSAgIChVTlNQRUNfSU5URVJMT19WNFNGIDIzNSkKLSsgICA7OyBkZWxldGUg MjM1Ci0gICAgKFVOU1BFQ19MVkxYICAgICAgICAgMjM2KQotICAgIChVTlNQRUNfTFZMWEwgICAg ICAgIDIzNykKLSAgICAoVU5TUEVDX0xWUlggICAgICAgICAyMzgpCi1AQCAtMTc2LDM5ICsxNjIs MTcgQEAgKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZJc2hvcnQgW1Y4SEkgVjE2UQotIChkZWZpbmVf bW9kZV9pdGVyYXRvciBWRiBbVjRTRl0pCi0gOzsgVmVjIG1vZGVzLCBwaXR5IG1vZGUgaXRlcmF0 b3JzIGFyZSBub3QgY29tcG9zYWJsZQotIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWIFtWNFNJIFY4 SEkgVjE2UUkgVjRTRl0pCi0rOzsgVmVjIG1vZGVzIGZvciBtb3ZlL2xvZ2ljYWwvcGVybXV0ZSBv cHMsIGluY2x1ZGUgdmVjdG9yIHR5cGVzIGZvciBtb3ZlIG5vdAotKzs7IG90aGVyd2lzZSBoYW5k bGVkIGJ5IGFsdGl2ZWMgKHYyZGYsIHYyZGksIHRpKQotKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBW TSBbVjRTSSBWOEhJIFYxNlFJIFY0U0YgVjJERiBWMkRJIFRJXSkKLSAKLSAoZGVmaW5lX21vZGVf YXR0ciBWSV9jaGFyIFsoVjRTSSAidyIpIChWOEhJICJoIikgKFYxNlFJICJiIildKQotIAotLTs7 IEdlbmVyaWMgTFZYIGxvYWQgaW5zdHJ1Y3Rpb24uCi0tKGRlZmluZV9pbnNuICJhbHRpdmVjX2x2 eF88bW9kZT4iCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWIDAgImFsdGl2ZWNfcmVnaXN0ZXJf b3BlcmFuZCIgIj12IikKLS0JKG1hdGNoX29wZXJhbmQ6ViAxICJtZW1vcnlfb3BlcmFuZCIgIloi KSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0tICAibHZ4ICUwLCV5MSIKLS0gIFsoc2V0X2F0dHIg InR5cGUiICJ2ZWNsb2FkIildKQotLQotLTs7IEdlbmVyaWMgU1RWWCBzdG9yZSBpbnN0cnVjdGlv bi4KLS0oZGVmaW5lX2luc24gImFsdGl2ZWNfc3R2eF88bW9kZT4iCi0tICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWIDAgIm1lbW9yeV9vcGVyYW5kIiAiPVoiKQotLQkobWF0Y2hfb3BlcmFuZDpWIDEg ImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0t ICAic3R2eCAlMSwleTAiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc3RvcmUiKV0pCi0tCi0g OzsgVmVjdG9yIG1vdmUgaW5zdHJ1Y3Rpb25zLgotLShkZWZpbmVfZXhwYW5kICJtb3Y8bW9kZT4i Ci0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiIikK LS0JKG1hdGNoX29wZXJhbmQ6ViAxICJhbnlfb3BlcmFuZCIgIiIpKV0KLS0gICJUQVJHRVRfQUxU SVZFQyIKLS17Ci0tICByczYwMDBfZW1pdF9tb3ZlIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0s IDxNT0RFPm1vZGUpOwotLSAgRE9ORTsKLS19KQotLQotLShkZWZpbmVfaW5zbiAiKm1vdjxtb2Rl Pl9pbnRlcm5hbCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYgMCAibm9uaW1tZWRpYXRlX29w ZXJhbmQiICI9Wix2LHYsbyxyLHIsdiIpCi0tCShtYXRjaF9vcGVyYW5kOlYgMSAiaW5wdXRfb3Bl cmFuZCIgInYsWix2LHIsbyxyLFciKSldCi0tICAiVEFSR0VUX0FMVElWRUMgCi0rKGRlZmluZV9p bnNuICIqYWx0aXZlY19tb3Y8bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWIDAgIm5v bmltbWVkaWF0ZV9vcGVyYW5kIiAiPVosdix2LCpvLCpyLCpyLHYsdiIpCi0rCShtYXRjaF9vcGVy YW5kOlYgMSAiaW5wdXRfb3BlcmFuZCIgInYsWix2LHIsbyxyLGosVyIpKV0KLSsgICJWRUNUT1Jf TUVNX0FMVElWRUNfUCAoPE1PREU+bW9kZSkKLSAgICAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3Bl cmFuZHNbMF0sIDxNT0RFPm1vZGUpIAotICAgICAgICB8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVy YW5kc1sxXSwgPE1PREU+bW9kZSkpIgotIHsKLUBAIC0yMjAsNTIgKzE4NCwxNyBAQCAoZGVmaW5l X2luc24gIiptb3Y8bW9kZT5faW50ZXJuYWwiCi0gICAgIGNhc2UgMzogcmV0dXJuICIjIjsKLSAg ICAgY2FzZSA0OiByZXR1cm4gIiMiOwotICAgICBjYXNlIDU6IHJldHVybiAiIyI7Ci0tICAgIGNh c2UgNjogcmV0dXJuIG91dHB1dF92ZWNfY29uc3RfbW92ZSAob3BlcmFuZHMpOwotKyAgICBjYXNl IDY6IHJldHVybiAidnhvciAlMCwlMCwlMCI7Ci0rICAgIGNhc2UgNzogcmV0dXJuIG91dHB1dF92 ZWNfY29uc3RfbW92ZSAob3BlcmFuZHMpOwotICAgICBkZWZhdWx0OiBnY2NfdW5yZWFjaGFibGUg KCk7Ci0gICAgIH0KLSB9Ci0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc3RvcmUsdmVjbG9hZCx2 ZWNzaW1wbGUsc3RvcmUsbG9hZCwqLCoiKV0pCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc3Rv cmUsdmVjbG9hZCx2ZWNzaW1wbGUsc3RvcmUsbG9hZCwqLHZlY3NpbXBsZSwqIildKQotIAotIChk ZWZpbmVfc3BsaXQKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAibm9uaW1tZWRpYXRl X29wZXJhbmQiICIiKQotLSAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJpbnB1dF9vcGVy YW5kIiAiIikpXQotLSAgIlRBUkdFVF9BTFRJVkVDICYmIHJlbG9hZF9jb21wbGV0ZWQKLS0gICAm JiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkiCi0tICBbKHBjKV0KLS17 Ci0tICByczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd KTsgRE9ORTsKLS19KQotLQotLShkZWZpbmVfc3BsaXQKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5k OlY4SEkgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIiKQotLSAgICAgICAgKG1hdGNoX29wZXJh bmQ6VjhISSAxICJpbnB1dF9vcGVyYW5kIiAiIikpXQotLSAgIlRBUkdFVF9BTFRJVkVDICYmIHJl bG9hZF9jb21wbGV0ZWQKLS0gICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5k c1sxXSkiCi0tICBbKHBjKV0KLS17IHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlIChvcGVyYW5k c1swXSwgb3BlcmFuZHNbMV0pOyBET05FOyB9KQotLQotLShkZWZpbmVfc3BsaXQKLS0gIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlYxNlFJIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiIikKLS0gICAg ICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDEgImlucHV0X29wZXJhbmQiICIiKSldCi0tICAiVEFS R0VUX0FMVElWRUMgJiYgcmVsb2FkX2NvbXBsZXRlZAotLSAgICYmIGdwcl9vcl9ncHJfcCAob3Bl cmFuZHNbMF0sIG9wZXJhbmRzWzFdKSIKLS0gIFsocGMpXQotLXsgcnM2MDAwX3NwbGl0X211bHRp cmVnX21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7IERPTkU7IH0pCi0tCi0tKGRlZmlu ZV9zcGxpdAotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJub25pbW1lZGlhdGVfb3Bl cmFuZCIgIiIpCi0tICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgImlucHV0X29wZXJhbmQi ICIiKSldCi0tICAiVEFSR0VUX0FMVElWRUMgJiYgcmVsb2FkX2NvbXBsZXRlZAotLSAgICYmIGdw cl9vcl9ncHJfcCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSIKLS0gIFsocGMpXQotLXsKLS0g IHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOyBE T05FOwotLX0pCi0tCi0tKGRlZmluZV9zcGxpdAotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6ViAw ICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICIiKQotLQkobWF0Y2hfb3BlcmFuZDpWIDEgImVh c3lfdmVjdG9yX2NvbnN0YW50X2FkZF9zZWxmIiAiIikpXQotLSAgIlRBUkdFVF9BTFRJVkVDICYm IHJlbG9hZF9jb21wbGV0ZWQiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWTSAwICJhbHRpdmVj X3JlZ2lzdGVyX29wZXJhbmQiICIiKQotKwkobWF0Y2hfb3BlcmFuZDpWTSAxICJlYXN5X3ZlY3Rv cl9jb25zdGFudF9hZGRfc2VsZiIgIiIpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxN T0RFPm1vZGUpICYmIHJlbG9hZF9jb21wbGV0ZWQiCi0gICBbKHNldCAobWF0Y2hfZHVwIDApICht YXRjaF9kdXAgMykpCi0gICAgKHNldCAobWF0Y2hfZHVwIDApIChtYXRjaF9kdXAgNCkpXQotIHsK LUBAIC0zNDYsMTEgKzI3NSwxMSBAQCAoZGVmaW5lX2luc24gImFkZDxtb2RlPjMiCi0gICAidmFk ZHU8VklfY2hhcj5tICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIp XSkKLSAKLS0oZGVmaW5lX2luc24gImFkZHY0c2YzIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNf YWRkdjRzZjMiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJh bmQiICI9diIpCi0gICAgICAgICAocGx1czpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKQotIAkgCSAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0 ZXJfb3BlcmFuZCIgInYiKSkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAgIlZFQ1RPUl9VTklU X0FMVElWRUNfUCAoVjRTRm1vZGUpIgotICAgInZhZGRmcCAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0 dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLSAKLUBAIC0zOTIsMTEgKzMyMSwxMSBAQCAoZGVmaW5l X2luc24gInN1Yjxtb2RlPjMiCi0gICAidnN1YnU8VklfY2hhcj5tICUwLCUxLCUyIgotICAgWyhz ZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSAKLS0oZGVmaW5lX2luc24gInN1YnY0c2Yz IgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfc3VidjRzZjMiCi0gICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0gICAgICAgICAobWludXM6VjRT RiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSAgICAgICAg ICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYi KSkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoVjRT Rm1vZGUpIgotICAgInZzdWJmcCAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNm bG9hdCIpXSkKLSAKLUBAIC00NTcsMTMxICszODYsODEgQEAgKGRlZmluZV9pbnNuICJhbHRpdmVj X3ZjbXBiZnAiCi0gICAidmNtcGJmcCAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2 ZWNjbXAiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZjbXBlcXViIgotLSAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VjE2UUkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAg ICh1bnNwZWM6VjE2UUkgWyhtYXRjaF9vcGVyYW5kOlYxNlFJIDEgInJlZ2lzdGVyX29wZXJhbmQi ICJ2IikKLS0gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDIgInJl Z2lzdGVyX29wZXJhbmQiICJ2IildIAotLSAgICAgICAgICAgICAgICAgICAgICAgVU5TUEVDX1ZD TVBFUVVCKSldCi0rKGRlZmluZV9pbnNuICIqYWx0aXZlY19lcTxtb2RlPiIKLSsgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZJIDAgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLSsJKGVx OlZJIChtYXRjaF9vcGVyYW5kOlZJIDEgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKQot KwkgICAgICAgKG1hdGNoX29wZXJhbmQ6VkkgMiAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAi diIpKSldCi0gICAiVEFSR0VUX0FMVElWRUMiCi0tICAidmNtcGVxdWIgJTAsJTEsJTIiCi0tICBb KHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotKyAgInZjbXBlcXU8VklfY2hhcj4gJTAs JTEsJTIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjY21wIildKQotIAotLShkZWZpbmVfaW5z biAiYWx0aXZlY192Y21wZXF1aCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY4SEkgMCAicmVn aXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgICh1bnNwZWM6VjhISSBbKG1hdGNoX29wZXJh bmQ6VjhISSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAgICAg IChtYXRjaF9vcGVyYW5kOlY4SEkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCi0tICAgICAg ICAgICAgICAgICAgICAgIFVOU1BFQ19WQ01QRVFVSCkpXQotKyhkZWZpbmVfaW5zbiAiKmFsdGl2 ZWNfZ3Q8bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJhbHRpdmVjX3JlZ2lz dGVyX29wZXJhbmQiICI9diIpCi0rCShndDpWSSAobWF0Y2hfb3BlcmFuZDpWSSAxICJhbHRpdmVj X3JlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJICAgICAgIChtYXRjaF9vcGVyYW5kOlZJIDIgImFs dGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotICAgIlRBUkdFVF9BTFRJVkVDIgotLSAg InZjbXBlcXVoICUwLCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkK LSsgICJ2Y21wZ3RzPFZJX2NoYXI+ICUwLCUxLCUyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZl Y2NtcCIpXSkKLSAKLS0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNtcGVxdXciCi0tICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAo dW5zcGVjOlY0U0kgWyhtYXRjaF9vcGVyYW5kOlY0U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYi KQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNJIDIgInJlZ2lzdGVy X29wZXJhbmQiICJ2IildIAotLQkgICAgICAgICAgICAgIFVOU1BFQ19WQ01QRVFVVykpXQotKyhk ZWZpbmVfaW5zbiAiKmFsdGl2ZWNfZ3R1PG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VkkgMCAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotKwkoZ3R1OlZJIChtYXRjaF9v cGVyYW5kOlZJIDEgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotKwkJKG1hdGNoX29w ZXJhbmQ6VkkgMiAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0gICAiVEFSR0VU X0FMVElWRUMiCi0tICAidmNtcGVxdXcgJTAsJTEsJTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAi dmVjc2ltcGxlIildKQotKyAgInZjbXBndHU8VklfY2hhcj4gJTAsJTEsJTIiCi0rICBbKHNldF9h dHRyICJ0eXBlIiAidmVjY21wIildKQotIAotLShkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21wZXFm cCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12 IikKLS0gICAgICAgICh1bnNwZWM6VjRTSSBbKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0 U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCi0tCSAgICAgICAgICAgICAgVU5TUEVDX1ZD TVBFUUZQKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0rKGRlZmluZV9pbnNuICIqYWx0aXZlY19l cXY0c2YiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgImFsdGl2ZWNfcmVnaXN0ZXJf b3BlcmFuZCIgIj12IikKLSsJKGVxOlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJhbHRpdmVj X3JlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJCSAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgImFsdGl2 ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAo VjRTRm1vZGUpIgotICAgInZjbXBlcWZwICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIg InZlY2NtcCIpXSkKLSAKLS0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNtcGdlZnAiCi0tICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAg ICAodW5zcGVjOlY0U0kgWyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIg InYiKQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lz dGVyX29wZXJhbmQiICJ2IildIAotLQkJICAgICBVTlNQRUNfVkNNUEdFRlApKV0KLS0gICJUQVJH RVRfQUxUSVZFQyIKLS0gICJ2Y21wZ2VmcCAlMCwlMSwlMiIKLSsoZGVmaW5lX2luc24gIiphbHRp dmVjX2d0djRzZiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAiYWx0aXZlY19yZWdp c3Rlcl9vcGVyYW5kIiAiPXYiKQotKwkoZ3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgImFs dGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotKwkJIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAi YWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZF Q19QIChWNFNGbW9kZSkiCi0rICAidmNtcGd0ZnAgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0 eXBlIiAidmVjY21wIildKQotIAotLShkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21wZ3R1YiIKLS0g IFsoc2V0IChtYXRjaF9vcGVyYW5kOlYxNlFJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0t ICAgICAgICAodW5zcGVjOlYxNlFJIFsobWF0Y2hfb3BlcmFuZDpWMTZRSSAxICJyZWdpc3Rlcl9v cGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWMTZR SSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0JCSAgICAgIFVOU1BFQ19WQ01QR1RVQikp XQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLSAgInZjbXBndHViICUwLCUxLCUyIgotLSAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLS0KLS0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNt cGd0c2IiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMTZRSSAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiPXYiKQotLSAgICAgICAgKHVuc3BlYzpWMTZRSSBbKG1hdGNoX29wZXJhbmQ6VjE2UUkgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29w ZXJhbmQ6VjE2UUkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCi0tCQkgICAgICBVTlNQRUNf VkNNUEdUU0IpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2Y21wZ3RzYiAlMCwlMSwlMiIK LS0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0tCi0tKGRlZmluZV9pbnNuICJh bHRpdmVjX3ZjbXBndHVoIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjhISSAwICJyZWdpc3Rl cl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHVuc3BlYzpWOEhJIFsobWF0Y2hfb3BlcmFuZDpW OEhJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgICAgKG1h dGNoX29wZXJhbmQ6VjhISSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0JCSAgICAgVU5T UEVDX1ZDTVBHVFVIKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0tICAidmNtcGd0dWggJTAsJTEs JTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotLQotLShkZWZpbmVfaW5z biAiYWx0aXZlY192Y21wZ3RzaCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY4SEkgMCAicmVn aXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgICh1bnNwZWM6VjhISSBbKG1hdGNoX29wZXJh bmQ6VjhISSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAgICAg IChtYXRjaF9vcGVyYW5kOlY4SEkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCi0tCQkgICAg IFVOU1BFQ19WQ01QR1RTSCkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLSAgInZjbXBndHNoICUw LCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLS0KLS0oZGVmaW5l X2luc24gImFsdGl2ZWNfdmNtcGd0dXciCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAg InJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAodW5zcGVjOlY0U0kgWyhtYXRjaF9v cGVyYW5kOlY0U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAg ICAgICAobWF0Y2hfb3BlcmFuZDpWNFNJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildIAotLQkJ ICAgICBVTlNQRUNfVkNNUEdUVVcpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2Y21wZ3R1 dyAlMCwlMSwlMiIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0tCi0tKGRl ZmluZV9pbnNuICJhbHRpdmVjX3ZjbXBndHN3IgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRT SSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHVuc3BlYzpWNFNJIFsobWF0 Y2hfb3BlcmFuZDpWNFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAg ICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAK LS0JCSAgICAgVU5TUEVDX1ZDTVBHVFNXKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0tICAidmNt cGd0c3cgJTAsJTEsJTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotLQot LShkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21wZ3RmcCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5k OlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgICh1bnNwZWM6VjRTSSBb KG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAg ICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYi KV0gCi0tCQkgICAgIFVOU1BFQ19WQ01QR1RGUCkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLSAg InZjbXBndGZwICUwLCUxLCUyIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfZ2V2NHNmIgotKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICI9 diIpCi0rCShnZTpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAiYWx0aXZlY19yZWdpc3Rlcl9v cGVyYW5kIiAidiIpCi0rCQkgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJhbHRpdmVjX3JlZ2lzdGVy X29wZXJhbmQiICJ2IikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIK LSsgICJ2Y21wZ2VmcCAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0p Ci0gCi0rKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZzZWw8bW9kZT4iCi0rICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWTSAwICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0rCShpZl90aGVu X2Vsc2U6Vk0gKG5lIChtYXRjaF9vcGVyYW5kOlZNIDEgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFu ZCIgInYiKQotKwkJCSAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgKG1hdGNoX29wZXJhbmQ6Vk0g MiAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0rCQkJIChtYXRjaF9vcGVyYW5kOlZN IDMgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotKyAgIlZFQ1RPUl9VTklUX0FM VElWRUNfUCAoPE1PREU+bW9kZSkiCi0rICAidnNlbCAlMCwlMywlMiwlMSIKLSsgIFsoc2V0X2F0 dHIgInR5cGUiICJ2ZWNwZXJtIildKQotKwotIDs7IEZ1c2VkIG11bHRpcGx5IGFkZAotIChkZWZp bmVfaW5zbiAiYWx0aXZlY192bWFkZGZwIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotIAkocGx1czpWNFNGIChtdWx0OlY0U0YgKG1hdGNo X29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0gCQkJICAgICAgKG1hdGNo X29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKQotIAkgIAkgICAobWF0Y2hf b3BlcmFuZDpWNFNGIDMgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLS0gICJUQVJHRVRfQUxU SVZFQyIKLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSAgICJ2bWFkZGZw ICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotIAotIDs7 IFdlIGRvIG11bHRpcGx5IGFzIGEgZnVzZWQgbXVsdGlwbHktYWRkIHdpdGggYW4gYWRkIG9mIGEg LTAuMCB2ZWN0b3IuCi0gCi0tKGRlZmluZV9leHBhbmQgIm11bHY0c2YzIgotKyhkZWZpbmVfZXhw YW5kICJhbHRpdmVjX211bHY0c2YzIgotICAgWyh1c2UgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiIikpCi0gICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJl Z2lzdGVyX29wZXJhbmQiICIiKSkKLSAgICAodXNlIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVn aXN0ZXJfb3BlcmFuZCIgIiIpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyAmJiBUQVJHRVRfRlVTRURf TUFERCIKLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSAmJiBUQVJHRVRfRlVT RURfTUFERCIKLSAgICIKLSB7Ci0gICBydHggbmVnMDsKLUBAIC02ODQsNyArNTYzLDcgQEAgKGRl ZmluZV9pbnNuICJhbHRpdmVjX3ZubXN1YmZwIgotIAkobmVnOlY0U0YgKG1pbnVzOlY0U0YgKG11 bHQ6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSAJ CQkgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKQot IAkgIAkgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAzICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSkp XQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoVjRTRm1v ZGUpIgotICAgInZubXN1YmZwICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZl Y2Zsb2F0IildKQotIAotQEAgLTc1OCwxMSArNjM3LDExIEBAIChkZWZpbmVfaW5zbiAic21heDxt b2RlPjMiCi0gICAidm1heHM8VklfY2hhcj4gJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBl IiAidmVjc2ltcGxlIildKQotIAotLShkZWZpbmVfaW5zbiAic21heHY0c2YzIgotKyhkZWZpbmVf aW5zbiAiKmFsdGl2ZWNfc21heHY0c2YzIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotICAgICAgICAgKHNtYXg6VjRTRiAobWF0Y2hfb3Bl cmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSAgICAgICAgICAgICAgICAgICAg KG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0tICAiVEFS R0VUX0FMVElWRUMiCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QIChWNFNGbW9kZSkiCi0gICAi dm1heGZwICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2NtcCIpXSkKLSAKLUBA IC03ODIsMTEgKzY2MSwxMSBAQCAoZGVmaW5lX2luc24gInNtaW48bW9kZT4zIgotICAgInZtaW5z PFZJX2NoYXI+ICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkK LSAKLS0oZGVmaW5lX2luc24gInNtaW52NHNmMyIKLSsoZGVmaW5lX2luc24gIiphbHRpdmVjX3Nt aW52NHNmMyIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFu ZCIgIj12IikKLSAgICAgICAgIChzbWluOlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdp c3Rlcl9vcGVyYW5kIiAidiIpCi0gICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0 U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAg IlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoVjRTRm1vZGUpIgotICAgInZtaW5mcCAlMCwlMSwlMiIK LSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0pCi0gCi1AQCAtOTA1LDcgKzc4NCw3IEBA IChkZWZpbmVfaW5zbiAiYWx0aXZlY192bXJnaHciCi0gICAidm1yZ2h3ICUwLCUxLCUyIgotICAg WyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0gCi0tKGRlZmluZV9pbnNuICJhbHRpdmVj X3Ztcmdoc2YiCi0rKGRlZmluZV9pbnNuICIqYWx0aXZlY192bXJnaHNmIgotICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotICAgICAgICAgKHZl Y19tZXJnZTpWNFNGICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdp c3Rlcl9vcGVyYW5kIiAidiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKLUBAIC05MTgsNyArNzk3LDcgQEAgKGRlZmlu ZV9pbnNuICJhbHRpdmVjX3Ztcmdoc2YiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMykKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2ludCAxKV0pKQotICAgICAg ICAgICAgICAgICAgICAgICAoY29uc3RfaW50IDUpKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0r ICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QIChWNFNGbW9kZSkiCi0gICAidm1yZ2h3ICUwLCUxLCUy IgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0gCi1AQCAtOTkwLDM1ICs4Njks MzcgQEAgKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZtcmdsaCIKLSAKLSAoZGVmaW5lX2luc24gImFs dGl2ZWNfdm1yZ2x3IgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTSSAwICJyZWdpc3Rlcl9v cGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHZlY19tZXJnZTpWNFNJICh2ZWNfc2VsZWN0OlY0U0kg KG1hdGNoX29wZXJhbmQ6VjRTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tCQkJCQkgKHBh cmFsbGVsIFsoY29uc3RfaW50IDIpCi0tCQkJCQkgCSAgICAoY29uc3RfaW50IDApCi0tCQkJCQkJ ICAgIChjb25zdF9pbnQgMykKLS0JCQkJCQkgICAgKGNvbnN0X2ludCAxKV0pKQotLSAgICAgICAg ICAgICAgICAgICAgICAgICh2ZWNfc2VsZWN0OlY0U0kgKG1hdGNoX29wZXJhbmQ6VjRTSSAyICJy ZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tCQkJCQkgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApCi0t CQkJCQkgCSAgICAoY29uc3RfaW50IDIpCi0tCQkJCQkJICAgIChjb25zdF9pbnQgMSkKLS0JCQkJ CQkgICAgKGNvbnN0X2ludCAzKV0pKQotLQkJICAgICAgKGNvbnN0X2ludCA1KSkpXQotKyAgICAg ICAgKHZlY19tZXJnZTpWNFNJCi0rCSAodmVjX3NlbGVjdDpWNFNJIChtYXRjaF9vcGVyYW5kOlY0 U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotKwkJCSAgKHBhcmFsbGVsIFsoY29uc3RfaW50 IDIpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAwKQotKwkJCQkgICAgIChjb25zdF9pbnQgMykKLSsJ CQkJICAgICAoY29uc3RfaW50IDEpXSkpCi0rCSAodmVjX3NlbGVjdDpWNFNJIChtYXRjaF9vcGVy YW5kOlY0U0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotKwkJCSAgKHBhcmFsbGVsIFsoY29u c3RfaW50IDApCi0rCQkJCSAgICAgKGNvbnN0X2ludCAyKQotKwkJCQkgICAgIChjb25zdF9pbnQg MSkKLSsJCQkJICAgICAoY29uc3RfaW50IDMpXSkpCi0rCSAoY29uc3RfaW50IDUpKSldCi0gICAi VEFSR0VUX0FMVElWRUMiCi0gICAidm1yZ2x3ICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY3Blcm0iKV0pCi0gCi0tKGRlZmluZV9pbnNuICJhbHRpdmVjX3Ztcmdsc2YiCi0rKGRl ZmluZV9pbnNuICIqYWx0aXZlY192bXJnbHNmIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRT RiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHZlY19tZXJnZTpWNFNGICh2 ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAi diIpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYWxsZWwg Wyhjb25zdF9pbnQgMikKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbnN0X2ludCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29uc3RfaW50IDMpCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMSldKSkKLS0gICAg ICAgICAgICAgICAgICAgICAgICAodmVjX3NlbGVjdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0Yg MiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMikKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2ludCAx KQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y29uc3RfaW50IDMpXSkpCi0tICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgNSkpKV0K LS0gICJUQVJHRVRfQUxUSVZFQyIKLSsgICAgICAgICh2ZWNfbWVyZ2U6VjRTRgotKwkgKHZlY19z ZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikK LSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQotKwkJCQkgICAgIChjb25zdF9pbnQgMCkK LSsJCQkJICAgICAoY29uc3RfaW50IDMpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAxKV0pKQotKwkg KHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQi ICJ2IikKLSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKQotKwkJCQkgICAgIChjb25zdF9p bnQgMikKLSsJCQkJICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAzKV0p KQotKwkgKGNvbnN0X2ludCA1KSkpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoVjRTRm1v ZGUpIgotICAgInZtcmdsdyAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJt IildKQotIAotQEAgLTEwOTUsNjggKzk3Niw1MyBAQCAoZGVmaW5lX2luc24gImFsdGl2ZWNfdm11 bG9zaCIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjb21wbGV4IildKQotIAotIAotLTs7IGxv Z2ljYWwgb3BzCi0rOzsgbG9naWNhbCBvcHMuICBIYXZlIHRoZSBsb2dpY2FsIG9wcyBmb2xsb3cg dGhlIG1lbW9yeSBvcHMgaW4KLSs7OyB0ZXJtcyBvZiB3aGV0aGVyIHRvIHByZWZlciBWU1ggb3Ig QWx0aXZlYwotIAotLShkZWZpbmVfaW5zbiAiYW5kPG1vZGU+MyIKLS0gIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAoYW5kOlZJICht YXRjaF9vcGVyYW5kOlZJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAg ICAgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLSAgIlRB UkdFVF9BTFRJVkVDIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfYW5kPG1vZGU+MyIKLSsgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZNIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0rICAgICAg ICAoYW5kOlZNIChtYXRjaF9vcGVyYW5kOlZNIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJ CShtYXRjaF9vcGVyYW5kOlZNIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLSsgICJWRUNU T1JfTUVNX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCi0gICAidmFuZCAlMCwlMSwlMiIKLSAgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJpb3I8bW9k ZT4zIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12 IikKLS0gICAgICAgIChpb3I6VkkgKG1hdGNoX29wZXJhbmQ6VkkgMSAicmVnaXN0ZXJfb3BlcmFu ZCIgInYiKQotLSAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWSSAyICJyZWdpc3Rlcl9v cGVyYW5kIiAidiIpKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0rKGRlZmluZV9pbnNuICIqYWx0 aXZlY19pb3I8bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAicmVnaXN0ZXJf b3BlcmFuZCIgIj12IikKLSsgICAgICAgIChpb3I6Vk0gKG1hdGNoX29wZXJhbmQ6Vk0gMSAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKQotKwkJKG1hdGNoX29wZXJhbmQ6Vk0gMiAicmVnaXN0ZXJfb3Bl cmFuZCIgInYiKSkpXQotKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKLSAg ICJ2b3IgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotIAot LShkZWZpbmVfaW5zbiAieG9yPG1vZGU+MyIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAg InJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAoeG9yOlZJIChtYXRjaF9vcGVyYW5k OlZJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgKG1hdGNoX29w ZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLSAgIlRBUkdFVF9BTFRJVkVD IgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfeG9yPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZNIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0rICAgICAgICAoeG9yOlZNICht YXRjaF9vcGVyYW5kOlZNIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJCShtYXRjaF9vcGVy YW5kOlZNIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLSsgICJWRUNUT1JfTUVNX0FMVElW RUNfUCAoPE1PREU+bW9kZSkiCi0gICAidnhvciAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5 cGUiICJ2ZWNzaW1wbGUiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJ4b3J2NHNmMyIKLS0gIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAg ICh4b3I6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikK LS0gICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJh bmQiICJ2IikpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2eG9yICUwLCUxLCUyIiAKLS0g IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0tCi0tKGRlZmluZV9pbnNuICJvbmVf Y21wbDxtb2RlPjIiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPXYiKQotLSAgICAgICAgKG5vdDpWSSAobWF0Y2hfb3BlcmFuZDpWSSAxICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0rKGRlZmluZV9pbnNuICIq YWx0aXZlY19vbmVfY21wbDxtb2RlPjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWTSAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotKyAgICAgICAgKG5vdDpWTSAobWF0Y2hfb3BlcmFuZDpW TSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX1Ag KDxNT0RFPm1vZGUpIgotICAgInZub3IgJTAsJTEsJTEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAi dmVjc2ltcGxlIildKQotICAgCi0tKGRlZmluZV9pbnNuICJhbHRpdmVjX25vcjxtb2RlPjMiCi0t ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAg ICAgICAgKG5vdDpWSSAoaW9yOlZJIChtYXRjaF9vcGVyYW5kOlZJIDEgInJlZ2lzdGVyX29wZXJh bmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWSSAyICJy ZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyhkZWZpbmVf aW5zbiAiKmFsdGl2ZWNfbm9yPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZNIDAg InJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0rICAgICAgICAobm90OlZNIChpb3I6Vk0gKG1hdGNo X29wZXJhbmQ6Vk0gMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotKwkJCShtYXRjaF9vcGVyYW5k OlZNIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVD X1AgKDxNT0RFPm1vZGUpIgotICAgInZub3IgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBl IiAidmVjc2ltcGxlIildKQotIAotLShkZWZpbmVfaW5zbiAiYW5kYzxtb2RlPjMiCi0tICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAg KGFuZDpWSSAobm90OlZJIChtYXRjaF9vcGVyYW5kOlZJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IikpCi0tICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlZJIDEgInJlZ2lzdGVyX29wZXJh bmQiICJ2IikpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2YW5kYyAlMCwlMSwlMiIKLS0g IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0tCi0tKGRlZmluZV9pbnNuICIqYW5k YzNfdjRzZiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFu ZCIgIj12IikKLS0gICAgICAgIChhbmQ6VjRTRiAobm90OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRT RiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKQotLSAgICAgICAgICAgICAgICAgIChtYXRjaF9v cGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLSAgIlRBUkdFVF9BTFRJ VkVDIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfYW5kYzxtb2RlPjMiCi0rICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWTSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotKyAgICAgICAgKGFuZDpW TSAobm90OlZNIChtYXRjaF9vcGVyYW5kOlZNIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpCi0r CQkobWF0Y2hfb3BlcmFuZDpWTSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0rICAiVkVD VE9SX01FTV9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpIgotICAgInZhbmRjICUwLCUxLCUyIgotICAg WyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSAKLUBAIC0xMzkyLDcgKzEyNTgsNyBA QCAoZGVmaW5lX2luc24gIiphbHRpdmVjX3ZzcGx0c2YiCi0gCSAodmVjX3NlbGVjdDpTRiAobWF0 Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSAJCQkocGFyYWxsZWwK LSAJCQkgWyhtYXRjaF9vcGVyYW5kOlFJIDIgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0pKSkp XQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoVjRTRm1v ZGUpIgotICAgInZzcGx0dyAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJt IildKQotIAotQEAgLTE0MDQsMTkgKzEyNzAsMTkgQEAgKGRlZmluZV9pbnNuICJhbHRpdmVjX3Zz cGx0aXM8VklfY2hhcj4iCi0gICAidnNwbHRpczxWSV9jaGFyPiAlMCwlMSIKLSAgIFsoc2V0X2F0 dHIgInR5cGUiICJ2ZWNwZXJtIildKQotIAotLShkZWZpbmVfaW5zbiAiZnRydW5jdjRzZjIiCi0r KGRlZmluZV9pbnNuICIqYWx0aXZlY19mdHJ1bmN2NHNmMiIKLSAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLSAgIAkoZml4OlY0U0YgKG1hdGNo X29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0tICAiVEFSR0VUX0FM VElWRUMiCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QIChWNFNGbW9kZSkiCi0gICAidnJmaXog JTAsJTEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0gCi0gKGRlZmluZV9p bnNuICJhbHRpdmVjX3ZwZXJtXzxtb2RlPiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYgMCAi cmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0JKHVuc3BlYzpWIFsobWF0Y2hfb3BlcmFuZDpWIDEg InJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0JCSAgIChtYXRjaF9vcGVyYW5kOlYgMiAicmVnaXN0 ZXJfb3BlcmFuZCIgInYiKQotLQkJICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMyAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKV0KLS0JCSAgVU5TUEVDX1ZQRVJNKSldCi0rICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWTSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotKwkodW5zcGVjOlZNIFsobWF0Y2hf b3BlcmFuZDpWTSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0rCQkgICAgKG1hdGNoX29wZXJh bmQ6Vk0gMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlYx NlFJIDMgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildCi0rCQkgICBVTlNQRUNfVlBFUk0pKV0KLSAg ICJUQVJHRVRfQUxUSVZFQyIKLSAgICJ2cGVybSAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0dHIg InR5cGUiICJ2ZWNwZXJtIildKQotQEAgLTE1MTUsMTgwICsxMzgxLDYgQEAgKGRlZmluZV9pbnNu ICJhbHRpdmVjX3ZyZWZwIgotICAgInZyZWZwICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIg InZlY2Zsb2F0IildKQotIAotLShkZWZpbmVfZXhwYW5kICJ2Y29uZHY0c2kiCi0tICAgICAgICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAg ICAgICAgICAgICAoaWZfdGhlbl9lbHNlOlY0U0kKLS0gICAgICAgICAgICAgICAgKG1hdGNoX29w ZXJhdG9yIDMgImNvbXBhcmlzb25fb3BlcmF0b3IiCi0tICAgICAgICAgICAgICAgICAgWyhtYXRj aF9vcGVyYW5kOlY0U0kgNCAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAg ICAgICAobWF0Y2hfb3BlcmFuZDpWNFNJIDUgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildKQotLSAg ICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYi KQotLSAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMiAicmVnaXN0ZXJfb3BlcmFu ZCIgInYiKSkpXQotLQkiVEFSR0VUX0FMVElWRUMiCi0tCSIKLS17Ci0tCWlmIChyczYwMDBfZW1p dF92ZWN0b3JfY29uZF9leHByIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJd LAotLQkJCQkJICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVdKSkKLS0JRE9O RTsKLS0JZWxzZQotLQlGQUlMOwotLX0KLS0JIikKLS0KLS0oZGVmaW5lX2V4cGFuZCAidmNvbmR1 djRzaSIKLS0gICAgICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIj12IikKLS0gICAgICAgICAgICAgIChpZl90aGVuX2Vsc2U6VjRTSQotLSAgICAgICAg ICAgICAgICAobWF0Y2hfb3BlcmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIKLS0gICAgICAg ICAgICAgICAgICBbKG1hdGNoX29wZXJhbmQ6VjRTSSA0ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIp Ci0tICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgNSAicmVnaXN0ZXJfb3Bl cmFuZCIgInYiKV0pCi0tICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJyZWdp c3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAy ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0tCSJUQVJHRVRfQUxUSVZFQyIKLS0JIgotLXsK LS0JaWYgKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJhbmRzWzBdLCBvcGVyYW5k c1sxXSwgb3BlcmFuZHNbMl0sCi0tCQkJCQkgIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0XSwgb3Bl cmFuZHNbNV0pKQotLQlET05FOwotLQllbHNlCi0tCUZBSUw7Ci0tfQotLQkiKQotLQotLShkZWZp bmVfZXhwYW5kICJ2Y29uZHY0c2YiCi0tICAgICAgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNG IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAgICAgICAoaWZfdGhlbl9lbHNl OlY0U0YKLS0gICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhdG9yIDMgImNvbXBhcmlzb25fb3Bl cmF0b3IiCi0tICAgICAgICAgICAgICAgICAgWyhtYXRjaF9vcGVyYW5kOlY0U0YgNCAicmVnaXN0 ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNG IDUgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildKQotLSAgICAgICAgICAgICAgIChtYXRjaF9vcGVy YW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgIChtYXRj aF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLQkiVEFSR0VUX0FM VElWRUMiCi0tCSIKLS17Ci0tCWlmIChyczYwMDBfZW1pdF92ZWN0b3JfY29uZF9leHByIChvcGVy YW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdLAotLQkJCQkJICBvcGVyYW5kc1szXSwg b3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVdKSkKLS0JRE9ORTsKLS0JZWxzZQotLQlGQUlMOwotLX0K LS0JIikKLS0KLS0oZGVmaW5lX2V4cGFuZCAidmNvbmR2OGhpIgotLSAgICAgICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VjhISSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgICAg ICAgKGlmX3RoZW5fZWxzZTpWOEhJCi0tICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYXRvciAz ICJjb21wYXJpc29uX29wZXJhdG9yIgotLSAgICAgICAgICAgICAgICAgIFsobWF0Y2hfb3BlcmFu ZDpWOEhJIDQgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgKG1h dGNoX29wZXJhbmQ6VjhISSA1ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSkKLS0gICAgICAgICAg ICAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAg ICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2Iikp KV0KLS0JIlRBUkdFVF9BTFRJVkVDIgotLQkiCi0tewotLQlpZiAocnM2MDAwX2VtaXRfdmVjdG9y X2NvbmRfZXhwciAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwKLS0JCQkJ CSAgb3BlcmFuZHNbM10sIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpCi0tCURPTkU7Ci0tCWVs c2UKLS0JRkFJTDsKLS19Ci0tCSIpCi0tCi0tKGRlZmluZV9leHBhbmQgInZjb25kdXY4aGkiCi0t ICAgICAgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWOEhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9 diIpCi0tICAgICAgICAgICAgICAoaWZfdGhlbl9lbHNlOlY4SEkKLS0gICAgICAgICAgICAgICAg KG1hdGNoX29wZXJhdG9yIDMgImNvbXBhcmlzb25fb3BlcmF0b3IiCi0tICAgICAgICAgICAgICAg ICAgWyhtYXRjaF9vcGVyYW5kOlY4SEkgNCAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDUgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IildKQotLSAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkgMSAicmVnaXN0ZXJfb3Bl cmFuZCIgInYiKQotLSAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkgMiAicmVnaXN0 ZXJfb3BlcmFuZCIgInYiKSkpXQotLQkiVEFSR0VUX0FMVElWRUMiCi0tCSIKLS17Ci0tCWlmIChy czYwMDBfZW1pdF92ZWN0b3JfY29uZF9leHByIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9w ZXJhbmRzWzJdLAotLQkJCQkJICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVd KSkKLS0JRE9ORTsKLS0JZWxzZQotLQlGQUlMOwotLX0KLS0JIikKLS0KLS0oZGVmaW5lX2V4cGFu ZCAidmNvbmR2MTZxaSIKLS0gICAgICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYxNlFJIDAgInJl Z2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAgICAgICAoaWZfdGhlbl9lbHNlOlYxNlFJ Ci0tICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYXRvciAzICJjb21wYXJpc29uX29wZXJhdG9y IgotLSAgICAgICAgICAgICAgICAgIFsobWF0Y2hfb3BlcmFuZDpWMTZRSSA0ICJyZWdpc3Rlcl9v cGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDUg InJlZ2lzdGVyX29wZXJhbmQiICJ2IildKQotLSAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5k OlYxNlFJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAobWF0Y2hf b3BlcmFuZDpWMTZRSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0tCSJUQVJHRVRfQUxU SVZFQyIKLS0JIgotLXsKLS0JaWYgKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sCi0tCQkJCQkgIG9wZXJhbmRzWzNdLCBv cGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0pKQotLQlET05FOwotLQllbHNlCi0tCUZBSUw7Ci0tfQot LQkiKQotLQotLShkZWZpbmVfZXhwYW5kICJ2Y29uZHV2MTZxaSIKLS0gICAgICAgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlYxNlFJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAg ICAgICAoaWZfdGhlbl9lbHNlOlYxNlFJCi0tICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYXRv ciAzICJjb21wYXJpc29uX29wZXJhdG9yIgotLSAgICAgICAgICAgICAgICAgIFsobWF0Y2hfb3Bl cmFuZDpWMTZRSSA0ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAg IChtYXRjaF9vcGVyYW5kOlYxNlFJIDUgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildKQotLSAgICAg ICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikK LS0gICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAyICJyZWdpc3Rlcl9vcGVyYW5k IiAidiIpKSldCi0tCSJUQVJHRVRfQUxUSVZFQyIKLS0JIgotLXsKLS0JaWYgKHJzNjAwMF9lbWl0 X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0s Ci0tCQkJCQkgIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0pKQotLQlET05F OwotLQllbHNlCi0tCUZBSUw7Ci0tfQotLQkiKQotLQotLQotLShkZWZpbmVfaW5zbiAiYWx0aXZl Y192c2VsX3Y0c2kiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29w ZXJhbmQiICI9diIpCi0tICAgICAgICAodW5zcGVjOlY0U0kgWyhtYXRjaF9vcGVyYW5kOlY0U0kg MSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hf b3BlcmFuZDpWNFNJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAg ICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0J CSAgICAgVU5TUEVDX1ZTRUw0U0kpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2c2VsICUw LCUxLCUyLCUzIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0tCi0tKGRlZmlu ZV9pbnNuICJhbHRpdmVjX3ZzZWxfdjRzZiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0Yg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgICh1bnNwZWM6VjRTRiBbKG1hdGNo X29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAg ICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNJIDMgInJlZ2lzdGVyX29wZXJh bmQiICJ2IildIAotLQkgICAgICAgICAgICAgIFVOU1BFQ19WU0VMNFNGKSldCi0tICAiVEFSR0VU X0FMVElWRUMiCi0tICAidnNlbCAlMCwlMSwlMiwlMyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJ2 ZWNwZXJtIildKQotLQotLShkZWZpbmVfaW5zbiAiYWx0aXZlY192c2VsX3Y4aGkiCi0tICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWOEhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAg ICAodW5zcGVjOlY4SEkgWyhtYXRjaF9vcGVyYW5kOlY4SEkgMSAicmVnaXN0ZXJfb3BlcmFuZCIg InYiKQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDIgInJlZ2lz dGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6 VjhISSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0JCSAgICAgVU5TUEVDX1ZTRUw4SEkp KV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2c2VsICUwLCUxLCUyLCUzIgotLSAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0tCi0tKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZzZWxf djE2cWkiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMTZRSSAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiPXYiKQotLSAgICAgICAgKHVuc3BlYzpWMTZRSSBbKG1hdGNoX29wZXJhbmQ6VjE2UUkgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29w ZXJhbmQ6VjE2UUkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAg ICAgICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMyAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCi0t CQkgICAgICBVTlNQRUNfVlNFTDE2UUkpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2c2Vs ICUwLCUxLCUyLCUzIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0tCi0gKGRl ZmluZV9pbnNuICJhbHRpdmVjX3ZzbGRvaV88bW9kZT4iCi0gICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0gICAgICAgICAodW5zcGVjOlYgWyhtYXRj aF9vcGVyYW5kOlYgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotQEAgLTE5NTksOTUgKzE2NTEs NiBAQCAoZGVmaW5lX2luc24gIiphbHRpdmVjX3N0dmVzZngiCi0gICAic3R2ZXd4ICUxLCV5MCIK LSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzdG9yZSIpXSkKLSAKLS0oZGVmaW5lX2V4cGFuZCAi dmVjX2luaXQ8bW9kZT4iCi0tICBbKG1hdGNoX29wZXJhbmQ6ViAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiIikKLS0gICAobWF0Y2hfb3BlcmFuZCAxICIiICIiKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIK LS17Ci0tICByczYwMDBfZXhwYW5kX3ZlY3Rvcl9pbml0IChvcGVyYW5kc1swXSwgb3BlcmFuZHNb MV0pOwotLSAgRE9ORTsKLS19KQotLQotLShkZWZpbmVfZXhwYW5kICJ2ZWNfc2V0djRzaSIKLS0g IFsobWF0Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLSAgIChtYXRj aF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLSAgIChtYXRjaF9vcGVyYW5k IDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCi0tICAiVEFSR0VUX0FMVElWRUMiCi0tewotLSAg cnM2MDAwX2V4cGFuZF92ZWN0b3Jfc2V0IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIElOVFZB TCAob3BlcmFuZHNbMl0pKTsKLS0gIERPTkU7Ci0tfSkKLS0KLS0oZGVmaW5lX2V4cGFuZCAidmVj X3NldHY4aGkiCi0tICBbKG1hdGNoX29wZXJhbmQ6VjhISSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi IikKLS0gICAobWF0Y2hfb3BlcmFuZDpISSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLS0gICAo bWF0Y2hfb3BlcmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQotLSAgIlRBUkdFVF9BTFRJ VkVDIgotLXsKLS0gIHJzNjAwMF9leHBhbmRfdmVjdG9yX3NldCAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzFdLCBJTlRWQUwgKG9wZXJhbmRzWzJdKSk7Ci0tICBET05FOwotLX0pCi0tCi0tKGRlZmlu ZV9leHBhbmQgInZlY19zZXR2MTZxaSIKLS0gIFsobWF0Y2hfb3BlcmFuZDpWMTZRSSAwICJyZWdp c3Rlcl9vcGVyYW5kIiAiIikKLS0gICAobWF0Y2hfb3BlcmFuZDpRSSAxICJyZWdpc3Rlcl9vcGVy YW5kIiAiIikKLS0gICAobWF0Y2hfb3BlcmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQot LSAgIlRBUkdFVF9BTFRJVkVDIgotLXsKLS0gIHJzNjAwMF9leHBhbmRfdmVjdG9yX3NldCAob3Bl cmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBJTlRWQUwgKG9wZXJhbmRzWzJdKSk7Ci0tICBET05FOwot LX0pCi0tCi0tKGRlZmluZV9leHBhbmQgInZlY19zZXR2NHNmIgotLSAgWyhtYXRjaF9vcGVyYW5k OlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQ6U0YgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQgMiAiY29uc3RfaW50X29w ZXJhbmQiICIiKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS17Ci0tICByczYwMDBfZXhwYW5kX3Zl Y3Rvcl9zZXQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgSU5UVkFMIChvcGVyYW5kc1syXSkp OwotLSAgRE9ORTsKLS19KQotLQotLShkZWZpbmVfZXhwYW5kICJ2ZWNfZXh0cmFjdHY0c2kiCi0t ICBbKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNo X29wZXJhbmQ6VjRTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLS0gICAobWF0Y2hfb3BlcmFu ZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLXsKLS0g IHJzNjAwMF9leHBhbmRfdmVjdG9yX2V4dHJhY3QgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwg SU5UVkFMIChvcGVyYW5kc1syXSkpOwotLSAgRE9ORTsKLS19KQotLQotLShkZWZpbmVfZXhwYW5k ICJ2ZWNfZXh0cmFjdHY4aGkiCi0tICBbKG1hdGNoX29wZXJhbmQ6SEkgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQ6VjhISSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAi IikKLS0gICAobWF0Y2hfb3BlcmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQotLSAgIlRB UkdFVF9BTFRJVkVDIgotLXsKLS0gIHJzNjAwMF9leHBhbmRfdmVjdG9yX2V4dHJhY3QgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSwgSU5UVkFMIChvcGVyYW5kc1syXSkpOwotLSAgRE9ORTsKLS19 KQotLQotLShkZWZpbmVfZXhwYW5kICJ2ZWNfZXh0cmFjdHYxNnFpIgotLSAgWyhtYXRjaF9vcGVy YW5kOlFJIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLSAgIChtYXRjaF9vcGVyYW5kOlYxNlFJ IDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLSAgIChtYXRjaF9vcGVyYW5kIDIgImNvbnN0X2lu dF9vcGVyYW5kIiAiIildCi0tICAiVEFSR0VUX0FMVElWRUMiCi0tewotLSAgcnM2MDAwX2V4cGFu ZF92ZWN0b3JfZXh0cmFjdCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBJTlRWQUwgKG9wZXJh bmRzWzJdKSk7Ci0tICBET05FOwotLX0pCi0tCi0tKGRlZmluZV9leHBhbmQgInZlY19leHRyYWN0 djRzZiIKLS0gIFsobWF0Y2hfb3BlcmFuZDpTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLS0g ICAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLSAgIChtYXRj aF9vcGVyYW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCi0tICAiVEFSR0VUX0FMVElWRUMi Ci0tewotLSAgcnM2MDAwX2V4cGFuZF92ZWN0b3JfZXh0cmFjdCAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzFdLCBJTlRWQUwgKG9wZXJhbmRzWzJdKSk7Ci0tICBET05FOwotLX0pCi0tCi0gOzsgR2Vu ZXJhdGUKLSA7OyAgICB2c3BsdGlzPyBTQ1JBVENIMCwwCi0gOzsgICAgdnN1YnU/bSBTQ1JBVENI MixTQ1JBVENIMSwlMQotQEAgLTIwNjksNyArMTY3Miw3IEBAIChkZWZpbmVfZXhwYW5kICJhYnM8 bW9kZT4yIgotIDs7ICAgIHZzcGx0aXN3IFNDUkFUQ0gxLC0xCi0gOzsgICAgdnNsdyBTQ1JBVENI MixTQ1JBVENIMSxTQ1JBVENIMQotIDs7ICAgIHZhbmRjICUwLCUxLFNDUkFUQ0gyCi0tKGRlZmlu ZV9leHBhbmQgImFic3Y0c2YyIgotKyhkZWZpbmVfZXhwYW5kICJhbHRpdmVjX2Fic3Y0c2YyIgot ICAgWyhzZXQgKG1hdGNoX2R1cCAyKQotIAkodmVjX2R1cGxpY2F0ZTpWNFNJIChjb25zdF9pbnQg LTEpKSkKLSAgICAoc2V0IChtYXRjaF9kdXAgMykKLUBAIC0yMTMyLDcgKzE3MzUsNyBAQCAoZGVm aW5lX2V4cGFuZCAidmVjX3NobF88bW9kZT4iCi0gICBET05FOwotIH0iKQotIAotLTs7IFZlY3Rv ciBzaGlmdCBsZWZ0IGluIGJpdHMuIEN1cnJlbnRseSBzdXBwb3J0ZWQgb255IGZvciBzaGlmdAot Kzs7IFZlY3RvciBzaGlmdCByaWdodCBpbiBiaXRzLiBDdXJyZW50bHkgc3VwcG9ydGVkIG9ueSBm b3Igc2hpZnQKLSA7OyBhbW91bnRzIHRoYXQgY2FuIGJlIGV4cHJlc3NlZCBhcyBieXRlIHNoaWZ0 cyAoZGl2aXNpYmxlIGJ5IDgpLgotIDs7IEdlbmVyYWwgc2hpZnQgYW1vdW50cyBjYW4gYmUgc3Vw cG9ydGVkIHVzaW5nIHZzcm8gKyB2c3IuIFdlJ3JlCi0gOzsgbm90IGV4cGVjdGluZyB0byBzZWUg dGhlc2UgeWV0ICh0aGUgdmVjdG9yaXplciBjdXJyZW50bHkKLUBAIC0yNjY1LDcgKzIyNjgsNyBA QCAoZGVmaW5lX2V4cGFuZCAidmVjX3BhY2tfdHJ1bmNfdjRzaSIKLSAgIERPTkU7Ci0gfSIpCi0g Ci0tKGRlZmluZV9leHBhbmQgIm5lZ3Y0c2YyIgotKyhkZWZpbmVfZXhwYW5kICJhbHRpdmVjX25l Z3Y0c2YyIgotICAgWyh1c2UgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiIikpCi0gICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQi ICIiKSldCi0gICAiVEFSR0VUX0FMVElWRUMiCi1AQCAtMjk5NCwyOSArMjU5Nyw2IEBAIChkZWZp bmVfZXhwYW5kICJ2ZWNfZXh0cmFjdF9vZGR2MTZxaSIKLSAgIGVtaXRfaW5zbiAoZ2VuX3Zwa3Vo dW1fbm9tb2RlIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdKSk7Ci0gICBE T05FOwotIH0iKQotLShkZWZpbmVfZXhwYW5kICJ2ZWNfaW50ZXJsZWF2ZV9oaWdodjRzZiIKLS0g WyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLS0gICAg ICAgICh1bnNwZWM6VjRTRiBbKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5k IiAiIikKLS0gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdp c3Rlcl9vcGVyYW5kIiAiIildCi0tICAgICAgICAgICAgICAgICAgICAgIFVOU1BFQ19JTlRFUkhJ X1Y0U0YpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICIKLS17IAotLSAgZW1pdF9pbnNuIChn ZW5fYWx0aXZlY192bXJnaHNmIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJd KSk7Ci0tICBET05FOwotLX0iKQotLQotLShkZWZpbmVfZXhwYW5kICJ2ZWNfaW50ZXJsZWF2ZV9s b3d2NHNmIgotLSBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQi ICIiKQotLSAgICAgICAgKHVuc3BlYzpWNFNGIFsobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lz dGVyX29wZXJhbmQiICIiKQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpW NFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICIiKV0KLS0gICAgICAgICAgICAgICAgICAgICAgVU5T UEVDX0lOVEVSTE9fVjRTRikpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLSAgIgotLXsKLS0gIGVt aXRfaW5zbiAoZ2VuX2FsdGl2ZWNfdm1yZ2xzZiAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBv cGVyYW5kc1syXSkpOwotLSAgRE9ORTsKLS19IikKLSAKLSAoZGVmaW5lX2V4cGFuZCAidmVjX2lu dGVybGVhdmVfaGlnaDxtb2RlPiIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIiIpCi0tLS0gZ2NjL2NvbmZpZy9yczYwMDAvYWl4NjEuaAkoLi4uL3RydW5r KQkocmV2aXNpb24gMTQ1Nzc3KQotKysrIGdjYy9jb25maWcvcnM2MDAwL2FpeDYxLmgJKC4uLi9i cmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTU3LDIw ICs1NywyNCBAQCBkbyB7CQkJCQkJCQkJXAotICN1bmRlZiBBU01fU1BFQwotICNkZWZpbmUgQVNN X1NQRUMgIi11ICV7bWFpeDY0Oi1hNjQgJXshbWNwdSo6LW1wcGM2NH19ICUoYXNtX2NwdSkiCi0g Ci0tLyogQ29tbW9uIEFTTSBkZWZpbml0aW9ucyB1c2VkIGJ5IEFTTV9TUEVDIGFtb25nc3QgdGhl IHZhcmlvdXMgdGFyZ2V0cwotLSAgIGZvciBoYW5kbGluZyAtbWNwdT14eHggc3dpdGNoZXMuICAq LwotKy8qIENvbW1vbiBBU00gZGVmaW5pdGlvbnMgdXNlZCBieSBBU01fU1BFQyBhbW9uZ3N0IHRo ZSB2YXJpb3VzIHRhcmdldHMgZm9yCi0rICAgaGFuZGxpbmcgLW1jcHU9eHh4IHN3aXRjaGVzLiAg VGhlcmUgaXMgYSBwYXJhbGxlbCBsaXN0IGluIGRyaXZlci1yczYwMDAuYyB0bwotKyAgIHByb3Zp ZGUgdGhlIGRlZmF1bHQgYXNzZW1ibGVyIG9wdGlvbnMgaWYgdGhlIHVzZXIgdXNlcyAtbWNwdT1u YXRpdmUsIHNvIGlmCi0rICAgeW91IG1ha2UgY2hhbmdlcyBoZXJlLCBtYWtlIHRoZW0gdGhlcmUg YWxzby4gICovCi0gI3VuZGVmIEFTTV9DUFVfU1BFQwotICNkZWZpbmUgQVNNX0NQVV9TUEVDIFwK LSAiJXshbWNwdSo6ICV7IW1haXg2NDogXAotICAgJXttcG93ZXJwYzY0OiAtbXBwYzY0fSBcCi0g ICAle21hbHRpdmVjOiAtbTk3MH0gXAotICAgJXshbWFsdGl2ZWM6ICV7IW1wb3dlcjY0OiAlKGFz bV9kZWZhdWx0KX19fX0gXAotKyV7bWNwdT1uYXRpdmU6ICUoYXNtX2NwdV9uYXRpdmUpfSBcCi0g JXttY3B1PXBvd2VyMzogLW02MjB9IFwKLSAle21jcHU9cG93ZXI0OiAtbXB3cjR9IFwKLSAle21j cHU9cG93ZXI1OiAtbXB3cjV9IFwKLSAle21jcHU9cG93ZXI1KzogLW1wd3I1eH0gXAotICV7bWNw dT1wb3dlcjY6IC1tcHdyNn0gXAotICV7bWNwdT1wb3dlcjZ4OiAtbXB3cjZ9IFwKLSsle21jcHU9 cG93ZXI3OiAtbXB3cjd9IFwKLSAle21jcHU9cG93ZXJwYzogLW1wcGN9IFwKLSAle21jcHU9cnM2 NGE6IC1tcHBjfSBcCi0gJXttY3B1PTYwMzogLW02MDN9IFwKLS0tLSBnY2MvY29uZmlnL3JzNjAw MC9yczYwMDAubWQJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NTc3NykKLSsrKyBnY2MvY29uZmln L3JzNjAwMC9yczYwMDAubWQJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2 aXNpb24gMTQ2MDI3KQotQEAgLTEzOCw3ICsxMzgsNyBAQAotIDs7IFByb2Nlc3NvciB0eXBlIC0t IHRoaXMgYXR0cmlidXRlIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgcHJvY2Vzc29yX3R5cGUKLSA7 OyBlbnVtZXJhdGlvbiBpbiByczYwMDAuaC4KLSAKLS0oZGVmaW5lX2F0dHIgImNwdSIgInJpb3Mx LHJpb3MyLHJzNjRhLG1wY2NvcmUscHBjNDAzLHBwYzQwNSxwcGM0NDAscHBjNjAxLHBwYzYwMyxw cGM2MDQscHBjNjA0ZSxwcGM2MjAscHBjNjMwLHBwYzc1MCxwcGM3NDAwLHBwYzc0NTAscHBjODU0 MCxwcGNlMzAwYzIscHBjZTMwMGMzLHBwY2U1MDBtYyxwb3dlcjQscG93ZXI1LHBvd2VyNixjZWxs IgotKyhkZWZpbmVfYXR0ciAiY3B1IiAicmlvczEscmlvczIscnM2NGEsbXBjY29yZSxwcGM0MDMs cHBjNDA1LHBwYzQ0MCxwcGM2MDEscHBjNjAzLHBwYzYwNCxwcGM2MDRlLHBwYzYyMCxwcGM2MzAs cHBjNzUwLHBwYzc0MDAscHBjNzQ1MCxwcGM4NTQwLHBwY2UzMDBjMixwcGNlMzAwYzMscHBjZTUw MG1jLHBvd2VyNCxwb3dlcjUscG93ZXI2LHBvd2VyNyxjZWxsIgotICAgKGNvbnN0IChzeW1ib2xf cmVmICJyczYwMDBfY3B1X2F0dHIiKSkpCi0gCi0gCi1AQCAtMTY3LDYgKzE2Nyw3IEBACi0gKGlu Y2x1ZGUgInBvd2VyNC5tZCIpCi0gKGluY2x1ZGUgInBvd2VyNS5tZCIpCi0gKGluY2x1ZGUgInBv d2VyNi5tZCIpCi0rKGluY2x1ZGUgInBvd2VyNy5tZCIpCi0gKGluY2x1ZGUgImNlbGwubWQiKQot IChpbmNsdWRlICJ4ZnB1Lm1kIikKLSAKLUBAIC0yMTgsNiArMjE5LDE5IEBACi0gOyBESW1vZGUg Yml0cwotIChkZWZpbmVfbW9kZV9hdHRyIGRiaXRzIFsoUUkgIjU2IikgKEhJICI0OCIpIChTSSAi MzIiKV0pCi0gCi0rOzsgSVNFTC9JU0VMNjQgdGFyZ2V0IHNlbGVjdGlvbgotKyhkZWZpbmVfbW9k ZV9hdHRyIHNlbCBbKFNJICIiKSAoREkgIjY0IildKQotKwotKzs7IFN1ZmZpeCBmb3IgcmVsb2Fk IHBhdHRlcm5zCi0rKGRlZmluZV9tb2RlX2F0dHIgcHRyc2l6ZSBbKFNJICIzMmJpdCIpCi0rCQkJ ICAgKERJICI2NGJpdCIpXSkKLSsKLSsoZGVmaW5lX21vZGVfYXR0ciB0cHRyc2l6ZSBbKFNJICJU QVJHRVRfMzJCSVQiKQotKwkJCSAgICAoREkgIlRBUkdFVF82NEJJVCIpXSkKLSsKLSsoZGVmaW5l X21vZGVfYXR0ciBtcHRyc2l6ZSBbKFNJICJzaSIpCi0rCQkJICAgIChESSAiZGkiKV0pCi0rCi0g DAotIDs7IFN0YXJ0IHdpdGggZml4ZWQtcG9pbnQgbG9hZCBhbmQgc3RvcmUgaW5zbnMuICBIZXJl IHdlIHB1dCBvbmx5IHRoZSBtb3JlCi0gOzsgY29tcGxleCBmb3Jtcy4gIEJhc2ljIGRhdGEgdHJh bnNmZXIgaXMgZG9uZSBsYXRlci4KLUBAIC01MjAsNyArNTM0LDcgQEAKLSAgICJACi0gICAge2Fu ZGlsLnxhbmRpLn0gJTIsJTEsMHhmZgotICAgICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiY29t cGFyZSIpCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQotICAg IChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQotIAotIChkZWZpbmVfc3BsaXQKLUBAIC01NDYs NyArNTYwLDcgQEAKLSAgICJACi0gICAge2FuZGlsLnxhbmRpLn0gJTAsJTEsMHhmZgotICAgICMi Ci0tICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIpCi0rICBbKHNldF9hdHRyICJ0eXBlIiAi ZmFzdF9jb21wYXJlLGNvbXBhcmUiKQotICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQot IAotIChkZWZpbmVfc3BsaXQKLUBAIC02ODcsNyArNzAxLDcgQEAKLSAgICJACi0gICAge2FuZGls LnxhbmRpLn0gJTIsJTEsMHhmZgotICAgICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFy ZSIpCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQotICAgIChz ZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQotIAotIChkZWZpbmVfc3BsaXQKLUBAIC03MTMsNyAr NzI3LDcgQEAKLSAgICJACi0gICAge2FuZGlsLnxhbmRpLn0gJTAsJTEsMHhmZgotICAgICMiCi0t ICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIpCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZmFz dF9jb21wYXJlLGNvbXBhcmUiKQotICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQotIAot IChkZWZpbmVfc3BsaXQKLUBAIC04NTYsNyArODcwLDcgQEAKLSAgICJACi0gICAge2FuZGlsLnxh bmRpLn0gJTIsJTEsMHhmZmZmCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJl IikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCi0gICAgKHNl dF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotQEAgLTg4Miw3ICs4 OTYsNyBAQAotICAgIkAKLSAgICB7YW5kaWwufGFuZGkufSAlMCwlMSwweGZmZmYKLSAgICAjIgot LSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZh c3RfY29tcGFyZSxjb21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAK LSAoZGVmaW5lX3NwbGl0Ci1AQCAtMTY3MCw3ICsxNjg0LDcgQEAKLSAgICJACi0gICAgbm9yLiAl MiwlMSwlMQotICAgICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIpCi0rICBbKHNl dF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQotICAgIChzZXRfYXR0ciAibGVu Z3RoIiAiNCw4IildKQotIAotIChkZWZpbmVfc3BsaXQKLUBAIC0xNjk2LDcgKzE3MTAsNyBAQAot ICAgIkAKLSAgICBub3IuICUwLCUxLCUxCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJj b21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCi0g ICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotQEAgLTIy MjEsMTAgKzIyMzUsMjIgQEAKLSAgICJUQVJHRVRfUE9QQ05UQiIKLSAgICJwb3BjbnRiICUwLCUx IikKLSAKLSsoZGVmaW5lX2luc24gInBvcGNudHdzaTIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCShwb3Bjb3VudDpTSSAobWF0Y2hfb3Bl cmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikpKV0KLSsgICJUQVJHRVRfUE9QQ05URCIK LSsgICJwb3BjbnR3ICUwLCUxIikKLSsKLSsoZGVmaW5lX2luc24gInBvcGNudGRkaTIiCi0rICBb KHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCShwb3Bj b3VudDpESSAobWF0Y2hfb3BlcmFuZDpESSAxICJncGNfcmVnX29wZXJhbmQiICJyIikpKV0KLSsg ICJUQVJHRVRfUE9QQ05URCAmJiBUQVJHRVRfUE9XRVJQQzY0IgotKyAgInBvcGNudGQgJTAsJTEi KQotKwotIChkZWZpbmVfZXhwYW5kICJwb3Bjb3VudDxtb2RlPjIiCi0gICBbKHNldCAobWF0Y2hf b3BlcmFuZDpHUFIgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiIikKLSAJKHBvcGNvdW50OkdQUiAobWF0 Y2hfb3BlcmFuZDpHUFIgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiIikpKV0KLS0gICJUQVJHRVRfUE9Q Q05UQiIKLSsgICJUQVJHRVRfUE9QQ05UQiB8fCBUQVJHRVRfUE9QQ05URCIKLSAgIHsKLSAgICAg cnM2MDAwX2VtaXRfcG9wY291bnQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7Ci0gICAgIERP TkU7Ci1AQCAtMjg1Miw3ICsyODc4LDcgQEAKLSAgICB7cmxpbm18cmx3aW5tfSAlMCwlMSwwLCVt MiwlTTIKLSAgICB7YW5kaWwufGFuZGkufSAlMCwlMSwlYjIKLSAgICB7YW5kaXUufGFuZGlzLn0g JTAsJTEsJXUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgIiosKixjb21wYXJlLGNvbXBhcmUiKV0p Ci0rICBbKHNldF9hdHRyICJ0eXBlIiAiKiwqLGZhc3RfY29tcGFyZSxmYXN0X2NvbXBhcmUiKV0p Ci0gCi0gKGRlZmluZV9pbnNuICJhbmRzaTNfbm9tYyIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yLHIiKQotQEAgLTI4OTUsNyArMjkyMSw4IEBACi0g ICAgIwotICAgICMKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUsY29tcGFy ZSxjb21wYXJlLGRlbGF5ZWRfY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJl IikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsZmFzdF9jb21wYXJlLGZhc3Rf Y29tcGFyZSxkZWxheWVkX2NvbXBhcmUsXAotKwkJICAgICBjb21wYXJlLGNvbXBhcmUsY29tcGFy ZSxjb21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCw0LDQsOCw4LDgsOCIpXSkK LSAKLSAoZGVmaW5lX2luc24gIiphbmRzaTNfaW50ZXJuYWwzX21jIgotQEAgLTI5MTUsNyArMjk0 Miw4IEBACi0gICAgIwotICAgICMKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBh cmUsY29tcGFyZSxjb21wYXJlLGRlbGF5ZWRfY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFy ZSxjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlLGZhc3RfY29tcGFyZSxm YXN0X2NvbXBhcmUsZGVsYXllZF9jb21wYXJlLGNvbXBhcmUsXAotKwkJICAgICBjb21wYXJlLGNv bXBhcmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGgiICI4LDQsNCw0LDgsOCw4LDgi KV0pCi0gCi0gKGRlZmluZV9zcGxpdAotQEAgLTI5NzQsNyArMzAwMiw4IEBACi0gICAgIwotICAg ICMKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUsY29tcGFyZSxjb21wYXJl LGRlbGF5ZWRfY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKLSsgIFso c2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsZmFzdF9jb21wYXJlLGZhc3RfY29tcGFyZSxk ZWxheWVkX2NvbXBhcmUsXAotKwkJICAgICBjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJl IikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCw0LDQsOCw4LDgsOCIpXSkKLSAKLSAoZGVm aW5lX2luc24gIiphbmRzaTNfaW50ZXJuYWw1X21jIgotQEAgLTI5OTYsNyArMzAyNSw4IEBACi0g ICAgIwotICAgICMKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUsY29tcGFy ZSxjb21wYXJlLGRlbGF5ZWRfY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJl IikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlLGZhc3RfY29tcGFyZSxmYXN0X2NvbXBh cmUsZGVsYXllZF9jb21wYXJlLGNvbXBhcmUsXAotKwkJICAgICBjb21wYXJlLGNvbXBhcmUsY29t cGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGgiICI4LDQsNCw0LDgsOCw4LDgiKV0pCi0gCi0g KGRlZmluZV9zcGxpdAotQEAgLTMxMjcsNyArMzE1Nyw3IEBACi0gICAiQAotICAgICVxNC4gJTMs JTEsJTIKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRf YXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0 aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci1AQCAtMzE1Niw3ICszMTg2LDcgQEAKLSAg ICJACi0gICAgJXE0LiAlMCwlMSwlMgotICAgICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiY29t cGFyZSIpCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQotICAg IChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQotIAotIChkZWZpbmVfc3BsaXQKLUBAIC0zMjgx LDcgKzMzMTEsNyBAQAotICAgIkAKLSAgICAlcTQuICUzLCUxLCUyCi0gICAgIyIKLS0gIFsoc2V0 X2F0dHIgInR5cGUiICJjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBh cmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmlu ZV9zcGxpdAotQEAgLTMzMTAsNyArMzM0MCw3IEBACi0gICAiQAotICAgICVxNC4gJTAsJTEsJTIK LSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAi dHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQs OCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci1AQCAtNTMwMyw3ICs1MzMzLDcgQEAKLSAgICJmcmVz ICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQotIAotLShkZWZpbmVfaW5zbiAi IgotKyhkZWZpbmVfaW5zbiAiKmZtYWRkc2Y0X3Bvd2VycGMiCi0gICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShwbHVzOlNGIChtdWx0OlNGICht YXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLSAJCQkgIChtYXRjaF9v cGVyYW5kOlNGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkKLUBAIC01MzE0LDcgKzUzNDQsNyBA QAotICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIikKLSAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJm cF9tYWRkc3ViX3MiKV0pCi0gCi0tKGRlZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm1h ZGRzZjRfcG93ZXIiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVnX29wZXJh bmQiICI9ZiIpCi0gCShwbHVzOlNGIChtdWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19y ZWdfb3BlcmFuZCIgIiVmIikKLSAJCQkgIChtYXRjaF9vcGVyYW5kOlNGIDIgImdwY19yZWdfb3Bl cmFuZCIgImYiKSkKLUBAIC01MzIzLDcgKzUzNTMsNyBAQAotICAgIntmbWF8Zm1hZGR9ICUwLCUx LCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwiKV0pCi0gCi0tKGRlZmluZV9pbnNu ICIiCi0rKGRlZmluZV9pbnNuICIqZm1zdWJzZjRfcG93ZXJwYyIKLSAgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlNGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG1pbnVzOlNGIChtdWx0OlNG IChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLSAJCQkgICAobWF0 Y2hfb3BlcmFuZDpTRiAyICJncGNfcmVnX29wZXJhbmQiICJmIikpCi1AQCAtNTMzNCw3ICs1MzY0 LDcgQEAKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpCi0gICAgKHNldF9hdHRyICJmcF90eXBl IiAiZnBfbWFkZHN1Yl9zIildKQotIAotLShkZWZpbmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAi KmZtc3Vic2Y0X3Bvd2VyIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0YgMCAiZ3BjX3JlZ19v cGVyYW5kIiAiPWYiKQotIAkobWludXM6U0YgKG11bHQ6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAi Z3BjX3JlZ19vcGVyYW5kIiAiJWYiKQotIAkJCSAgIChtYXRjaF9vcGVyYW5kOlNGIDIgImdwY19y ZWdfb3BlcmFuZCIgImYiKSkKLUBAIC01MzQzLDcgKzUzNzMsNyBAQAotICAgIntmbXN8Zm1zdWJ9 ICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwiKV0pCi0gCi0tKGRlZmlu ZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm5tYWRkc2Y0X3Bvd2VycGNfMSIKLSAgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlNGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG5lZzpTRiAo cGx1czpTRiAobXVsdDpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIl ZiIpCi0gCQkJCSAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQot QEAgLTUzNTQsNyArNTM4NCw3IEBACi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKQotICAgIChz ZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfcyIpXSkKLSAKLS0oZGVmaW5lX2luc24gIiIK LSsoZGVmaW5lX2luc24gIipmbm1hZGRzZjRfcG93ZXJwY18yIgotICAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobWludXM6U0YgKG11bHQ6U0Yg KG5lZzpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICJmIikpCi0gCQkJ ICAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQotQEAgLTUzNjUs NyArNTM5NSw3IEBACi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKQotICAgIChzZXRfYXR0ciAi ZnBfdHlwZSIgImZwX21hZGRzdWJfcyIpXSkKLSAKLS0oZGVmaW5lX2luc24gIiIKLSsoZGVmaW5l X2luc24gIipmbm1hZGRzZjRfcG93ZXJfMSIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAg ImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG5lZzpTRiAocGx1czpTRiAobXVsdDpTRiAobWF0 Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCi0gCQkJCSAgKG1hdGNoX29w ZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQotQEAgLTUzNzQsNyArNTQwNCw3IEBA Ci0gICAie2ZubWF8Zm5tYWRkfSAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJk bXVsIildKQotIAotLShkZWZpbmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAiKmZubWFkZHNmNF9w b3dlcl8yIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAi PWYiKQotIAkobWludXM6U0YgKG11bHQ6U0YgKG5lZzpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJn cGNfcmVnX29wZXJhbmQiICJmIikpCi0gCQkJICAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3Jl Z19vcGVyYW5kIiAiZiIpKQotQEAgLTUzODQsNyArNTQxNCw3IEBACi0gICAie2ZubWF8Zm5tYWRk fSAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIildKQotIAotLShkZWZp bmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAiKmZubXN1YnNmNF9wb3dlcnBjXzEiCi0gICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShuZWc6U0Yg KG1pbnVzOlNGIChtdWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIg IiVmIikKLSAJCQkJICAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIp KQotQEAgLTUzOTUsNyArNTQyNSw3IEBACi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKQotICAg IChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfcyIpXSkKLSAKLS0oZGVmaW5lX2luc24g IiIKLSsoZGVmaW5lX2luc24gIipmbm1zdWJzZjRfcG93ZXJwY18yIgotICAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobWludXM6U0YgKG1hdGNo X29wZXJhbmQ6U0YgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpCi0gCQkgIChtdWx0OlNGIChtYXRj aF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLUBAIC01NDA2LDcgKzU0MzYs NyBAQAotICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIikKLSAgICAoc2V0X2F0dHIgImZwX3R5cGUi ICJmcF9tYWRkc3ViX3MiKV0pCi0gCi0tKGRlZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIq Zm5tc3Vic2Y0X3Bvd2VyXzEiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVn X29wZXJhbmQiICI9ZiIpCi0gCShuZWc6U0YgKG1pbnVzOlNGIChtdWx0OlNGIChtYXRjaF9vcGVy YW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLSAJCQkJICAgKG1hdGNoX29wZXJhbmQ6 U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQotQEAgLTU0MTUsNyArNTQ0NSw3IEBACi0gICAi e2ZubXN8Zm5tc3VifSAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIild KQotIAotLShkZWZpbmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAiKmZubXN1YnNmNF9wb3dlcl8y IgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQot IAkobWludXM6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpCi0g CQkgIChtdWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikK LUBAIC01NDk2LDkgKzU1MjYsMTggQEAKLSAJICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX2R1 cCA1KSkKLSAJCQkgKG1hdGNoX2R1cCAzKQotIAkJCSAobWF0Y2hfZHVwIDQpKSldCi0tICAiVEFS R0VUX1BQQ19HRlhPUFQgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFS R0VUX0RPVUJMRV9GTE9BVAotLSAgICYmICFIT05PUl9OQU5TIChERm1vZGUpICYmICFIT05PUl9T SUdORURfWkVST1MgKERGbW9kZSkiCi0rICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQ UlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotKyAgICYmICgoVEFSR0VUX1BQQ19HRlhPUFQKLSsg ICAgICAgICYmICFIT05PUl9OQU5TIChERm1vZGUpCi0rICAgICAgICAmJiAhSE9OT1JfU0lHTkVE X1pFUk9TIChERm1vZGUpKQotKyAgICAgICB8fCBWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSki Ci0gICB7Ci0rICAgICBpZiAoVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkpCi0rICAgICAgIHsK LSsJIGVtaXRfaW5zbiAoZ2VuX3ZzeF9jb3B5c2lnbmRmMyAob3BlcmFuZHNbMF0sIG9wZXJhbmRz WzFdLAotKwkJCQkJIG9wZXJhbmRzWzJdKSk7Ci0rCSBET05FOwotKyAgICAgICB9Ci0gICAgICBv cGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChERm1vZGUpOwotICAgICAgb3BlcmFuZHNbNF0gPSBn ZW5fcmVnX3J0eCAoREZtb2RlKTsKLSAgICAgIG9wZXJhbmRzWzVdID0gQ09OU1QwX1JUWCAoREZt b2RlKTsKLUBAIC01NTQyLDEyICs1NTgxLDEyIEBACi0gICBET05FOwotIH0iKQotIAotLShkZWZp bmVfZXhwYW5kICJtb3ZzaWNjIgotLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19y ZWdfb3BlcmFuZCIgIiIpCi0tCSAoaWZfdGhlbl9lbHNlOlNJIChtYXRjaF9vcGVyYW5kIDEgImNv bXBhcmlzb25fb3BlcmF0b3IiICIiKQotLQkJCSAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3Jl Z19vcGVyYW5kIiAiIikKLS0JCQkgIChtYXRjaF9vcGVyYW5kOlNJIDMgImdwY19yZWdfb3BlcmFu ZCIgIiIpKSldCi0tICAiVEFSR0VUX0lTRUwiCi0rKGRlZmluZV9leHBhbmQgIm1vdjxtb2RlPmNj IgotKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkdQUiAwICJncGNfcmVnX29wZXJhbmQiICIiKQot KwkgKGlmX3RoZW5fZWxzZTpHUFIgKG1hdGNoX29wZXJhbmQgMSAiY29tcGFyaXNvbl9vcGVyYXRv ciIgIiIpCi0rCQkJICAgKG1hdGNoX29wZXJhbmQ6R1BSIDIgImdwY19yZWdfb3BlcmFuZCIgIiIp Ci0rCQkJICAgKG1hdGNoX29wZXJhbmQ6R1BSIDMgImdwY19yZWdfb3BlcmFuZCIgIiIpKSldCi0r ICAiVEFSR0VUX0lTRUw8c2VsPiIKLSAgICIKLSB7Ci0gICBpZiAocnM2MDAwX2VtaXRfY21vdmUg KG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdKSkKLUBA IC01NTY0LDI4ICs1NjAzLDI4IEBACi0gOzsgbGVhdmUgb3V0IHRoZSBtb2RlIGluIG9wZXJhbmQg NCBhbmQgdXNlIG9uZSBwYXR0ZXJuLCBidXQgcmVsb2FkIGNhbgotIDs7IGNoYW5nZSB0aGUgbW9k ZSB1bmRlcm5lYXRoIG91ciBmZWV0IGFuZCB0aGVuIGdldHMgY29uZnVzZWQgdHJ5aW5nCi0gOzsg dG8gcmVsb2FkIHRoZSB2YWx1ZS4KLS0oZGVmaW5lX2luc24gImlzZWxfc2lnbmVkIgotLSAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotLQkoaWZfdGhl bl9lbHNlOlNJCi0rKGRlZmluZV9pbnNuICJpc2VsX3NpZ25lZF88bW9kZT4iCi0rICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpHUFIgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotKwkoaWZfdGhlbl9l bHNlOkdQUgotIAkgKG1hdGNoX29wZXJhdG9yIDEgImNvbXBhcmlzb25fb3BlcmF0b3IiCi0gCQkJ IFsobWF0Y2hfb3BlcmFuZDpDQyA0ICJjY19yZWdfb3BlcmFuZCIgInkiKQotIAkJCSAgKGNvbnN0 X2ludCAwKV0pCi0tCSAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJiIikK LS0JIChtYXRjaF9vcGVyYW5kOlNJIDMgImdwY19yZWdfb3BlcmFuZCIgImIiKSkpXQotLSAgIlRB UkdFVF9JU0VMIgotKwkgKG1hdGNoX29wZXJhbmQ6R1BSIDIgImdwY19yZWdfb3BlcmFuZCIgImIi KQotKwkgKG1hdGNoX29wZXJhbmQ6R1BSIDMgImdwY19yZWdfb3BlcmFuZCIgImIiKSkpXQotKyAg IlRBUkdFVF9JU0VMPHNlbD4iCi0gICAiKgotIHsgcmV0dXJuIG91dHB1dF9pc2VsIChvcGVyYW5k cyk7IH0iCi0gICBbKHNldF9hdHRyICJsZW5ndGgiICI0IildKQotIAotLShkZWZpbmVfaW5zbiAi aXNlbF91bnNpZ25lZCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3Bl cmFuZCIgIj1yIikKLS0JKGlmX3RoZW5fZWxzZTpTSQotKyhkZWZpbmVfaW5zbiAiaXNlbF91bnNp Z25lZF88bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpHUFIgMCAiZ3BjX3JlZ19vcGVy YW5kIiAiPXIiKQotKwkoaWZfdGhlbl9lbHNlOkdQUgotIAkgKG1hdGNoX29wZXJhdG9yIDEgImNv bXBhcmlzb25fb3BlcmF0b3IiCi0gCQkJIFsobWF0Y2hfb3BlcmFuZDpDQ1VOUyA0ICJjY19yZWdf b3BlcmFuZCIgInkiKQotIAkJCSAgKGNvbnN0X2ludCAwKV0pCi0tCSAobWF0Y2hfb3BlcmFuZDpT SSAyICJncGNfcmVnX29wZXJhbmQiICJiIikKLS0JIChtYXRjaF9vcGVyYW5kOlNJIDMgImdwY19y ZWdfb3BlcmFuZCIgImIiKSkpXQotLSAgIlRBUkdFVF9JU0VMIgotKwkgKG1hdGNoX29wZXJhbmQ6 R1BSIDIgImdwY19yZWdfb3BlcmFuZCIgImIiKQotKwkgKG1hdGNoX29wZXJhbmQ6R1BSIDMgImdw Y19yZWdfb3BlcmFuZCIgImIiKSkpXQotKyAgIlRBUkdFVF9JU0VMPHNlbD4iCi0gICAiKgotIHsg cmV0dXJuIG91dHB1dF9pc2VsIChvcGVyYW5kcyk7IH0iCi0gICBbKHNldF9hdHRyICJsZW5ndGgi ICI0IildKQotQEAgLTU2MzMsNyArNTY3Miw4IEBACi0gKGRlZmluZV9pbnNuICIqbmVnZGYyX2Zw ciIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikK LSAJKG5lZzpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIikpKV0K LS0gICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZM T0FUIgotKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VC TEVfRkxPQVQKLSsgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0gICAiZm5lZyAl MCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSAKLUBAIC01NjQ2LDE0ICs1Njg2 LDE2IEBACi0gKGRlZmluZV9pbnNuICIqYWJzZGYyX2ZwciIKLSAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKGFiczpERiAobWF0Y2hfb3BlcmFu ZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIikpKV0KLS0gICJUQVJHRVRfSEFSRF9GTE9BVCAm JiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIgotKyAgIlRBUkdFVF9IQVJEX0ZM T0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKLSsgICAmJiAhVkVDVE9S X1VOSVRfVlNYX1AgKERGbW9kZSkiCi0gICAiZmFicyAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5 cGUiICJmcCIpXSkKLSAKLSAoZGVmaW5lX2luc24gIipuYWJzZGYyX2ZwciIKLSAgIFsoc2V0ICht YXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG5lZzpERiAoYWJz OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpKV0KLS0gICJU QVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIgot KyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxP QVQKLSsgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0gICAiZm5hYnMgJTAsJTEi Ci0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCi0gCi1AQCAtNTY2OCw3ICs1NzEwLDggQEAK LSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJ KHBsdXM6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJWYiKQotIAkJ IChtYXRjaF9vcGVyYW5kOkRGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpXQotLSAgIlRBUkdF VF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCi0rICAi VEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAot KyAgICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSAgICJ7ZmF8ZmFkZH0gJTAsJTEs JTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKQotICAgIChzZXRfYXR0ciAiZnBfdHlwZSIg ImZwX2FkZHN1Yl9kIildKQotQEAgLTU2ODQsNyArNTcyNyw4IEBACi0gICBbKHNldCAobWF0Y2hf b3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShtaW51czpERiAobWF0Y2hf b3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIikKLSAJCSAgKG1hdGNoX29wZXJhbmQ6 REYgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSldCi0tICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYg VEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCIKLSsgICJUQVJHRVRfSEFSRF9GTE9B VCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0rICAgJiYgIVZFQ1RPUl9V TklUX1ZTWF9QIChERm1vZGUpIgotICAgIntmc3xmc3VifSAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0 dHIgInR5cGUiICJmcCIpCi0gICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfYWRkc3ViX2QiKV0p Ci1AQCAtNTcwMCw3ICs1NzQ0LDggQEAKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdw Y19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG11bHQ6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3Bj X3JlZ19vcGVyYW5kIiAiJWYiKQotIAkJIChtYXRjaF9vcGVyYW5kOkRGIDIgImdwY19yZWdfb3Bl cmFuZCIgImYiKSkpXQotLSAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRB UkdFVF9ET1VCTEVfRkxPQVQiCi0rICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMg JiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotKyAgICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2Rl KSIKLSAgICJ7Zm18Zm11bH0gJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIp Ci0gICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfbXVsX2QiKV0pCi1AQCAtNTcxOCw3ICs1NzYz LDggQEAKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1m IikKLSAJKGRpdjpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIikK LSAJCShtYXRjaF9vcGVyYW5kOkRGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpXQotLSAgIlRB UkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYg IVRBUkdFVF9TSU1QTEVfRlBVIgotKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJT ICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYgIVRBUkdFVF9TSU1QTEVfRlBVCi0rICAgJiYgIVZF Q1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgotICAgIntmZHxmZGl2fSAlMCwlMSwlMiIKLSAgIFso c2V0X2F0dHIgInR5cGUiICJkZGl2IildKQotIAotQEAgLTU3MzQsNzMgKzU3ODAsODEgQEAKLSAg ICBET05FOwotIH0pCi0gCi0tKGRlZmluZV9pbnNuICJmcmVkIgotKyhkZWZpbmVfZXhwYW5kICJm cmVkIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYi KQotKwkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJm IildIFVOU1BFQ19GUkVTKSldCi0rICAiKFRBUkdFVF9QT1BDTlRCIHx8IFZFQ1RPUl9VTklUX1ZT WF9QIChERm1vZGUpKSAmJiBmbGFnX2Zpbml0ZV9tYXRoX29ubHkiCi0rICAiIikKLSsKLSsoZGVm aW5lX2luc24gIipmcmVkX2ZwciIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19y ZWdfb3BlcmFuZCIgIj1mIikKLSAJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3Bj X3JlZ19vcGVyYW5kIiAiZiIpXSBVTlNQRUNfRlJFUykpXQotLSAgIlRBUkdFVF9QT1BDTlRCICYm IGZsYWdfZmluaXRlX21hdGhfb25seSIKLSsgICJUQVJHRVRfUE9QQ05UQiAmJiBmbGFnX2Zpbml0 ZV9tYXRoX29ubHkgJiYgIVZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgotICAgImZyZSAlMCwl MSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSAKLS0oZGVmaW5lX2luc24gIiIKLSso ZGVmaW5lX2luc24gIipmbWFkZGRmNF9mcHIiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAw ICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShwbHVzOkRGIChtdWx0OkRGIChtYXRjaF9vcGVy YW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLSAJCQkgIChtYXRjaF9vcGVyYW5kOkRG IDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkKLSAJCSAobWF0Y2hfb3BlcmFuZDpERiAzICJncGNf cmVnX29wZXJhbmQiICJmIikpKV0KLS0gICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBS UyAmJiBUQVJHRVRfRlVTRURfTUFERCAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIgotKyAgIlRBUkdF VF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9GVVNFRF9NQUREICYmIFRBUkdF VF9ET1VCTEVfRkxPQVQKLSsgICAmJiBWRUNUT1JfVU5JVF9OT05FX1AgKERGbW9kZSkiCi0gICAi e2ZtYXxmbWFkZH0gJTAsJTEsJTIsJTMiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCi0g ICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfbWFkZHN1Yl9kIildKQotIAotLShkZWZpbmVfaW5z biAiIgotKyhkZWZpbmVfaW5zbiAiKmZtc3ViZGY0X2ZwciIKLSAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG1pbnVzOkRGIChtdWx0OkRGICht YXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLSAJCQkgICAobWF0Y2hf b3BlcmFuZDpERiAyICJncGNfcmVnX29wZXJhbmQiICJmIikpCi0gCQkgIChtYXRjaF9vcGVyYW5k OkRGIDMgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpXQotLSAgIlRBUkdFVF9IQVJEX0ZMT0FUICYm IFRBUkdFVF9GUFJTICYmIFRBUkdFVF9GVVNFRF9NQUREICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQi Ci0rICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0ZVU0VEX01B REQgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotKyAgICYmIFZFQ1RPUl9VTklUX05PTkVfUCAoREZt b2RlKSIKLSAgICJ7Zm1zfGZtc3VifSAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0dHIgInR5cGUi ICJkbXVsIikKLSAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX2QiKV0pCi0gCi0t KGRlZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm5tYWRkZGY0X2Zwcl8xIgotICAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobmVnOkRG IChwbHVzOkRGIChtdWx0OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIg IiVmIikKLSAJCQkJICAobWF0Y2hfb3BlcmFuZDpERiAyICJncGNfcmVnX29wZXJhbmQiICJmIikp Ci0gCQkJIChtYXRjaF9vcGVyYW5kOkRGIDMgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpKV0KLSAg ICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRlVTRURfTUFERCAm JiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0tICAgJiYgSE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUp IgotKyAgICYmIEhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSAmJiBWRUNUT1JfVU5JVF9OT05F X1AgKERGbW9kZSkiCi0gICAie2ZubWF8Zm5tYWRkfSAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0 dHIgInR5cGUiICJkbXVsIikKLSAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX2Qi KV0pCi0gCi0tKGRlZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm5tYWRkZGY0X2Zwcl8y IgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQot IAkobWludXM6REYgKG11bHQ6REYgKG5lZzpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVn X29wZXJhbmQiICJmIikpCi0gCQkJICAgKG1hdGNoX29wZXJhbmQ6REYgMiAiZ3BjX3JlZ19vcGVy YW5kIiAiZiIpKQotIAkJICAobWF0Y2hfb3BlcmFuZDpERiAzICJncGNfcmVnX29wZXJhbmQiICJm IikpKV0KLSAgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRlVT RURfTUFERCAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0tICAgJiYgISBIT05PUl9TSUdORURfWkVS T1MgKERGbW9kZSkiCi0rICAgJiYgISBIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSkgJiYgVkVD VE9SX1VOSVRfTk9ORV9QIChERm1vZGUpIgotICAgIntmbm1hfGZubWFkZH0gJTAsJTEsJTIsJTMi Ci0gICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCi0gICAgKHNldF9hdHRyICJmcF90eXBlIiAi ZnBfbWFkZHN1Yl9kIildKQotIAotLShkZWZpbmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAiKmZu bXN1YmRmNF9mcHJfMSIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3Bl cmFuZCIgIj1mIikKLSAJKG5lZzpERiAobWludXM6REYgKG11bHQ6REYgKG1hdGNoX29wZXJhbmQ6 REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJWYiKQotIAkJCQkgICAobWF0Y2hfb3BlcmFuZDpERiAy ICJncGNfcmVnX29wZXJhbmQiICJmIikpCi0gCQkJICAobWF0Y2hfb3BlcmFuZDpERiAzICJncGNf cmVnX29wZXJhbmQiICJmIikpKSldCi0gICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQ UlMgJiYgVEFSR0VUX0ZVU0VEX01BREQgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotLSAgICYmIEhP Tk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSIKLSsgICAmJiBIT05PUl9TSUdORURfWkVST1MgKERG bW9kZSkgJiYgVkVDVE9SX1VOSVRfTk9ORV9QIChERm1vZGUpIgotICAgIntmbm1zfGZubXN1Yn0g JTAsJTEsJTIsJTMiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCi0gICAgKHNldF9hdHRy ICJmcF90eXBlIiAiZnBfbWFkZHN1Yl9kIildKQotIAotLShkZWZpbmVfaW5zbiAiIgotKyhkZWZp bmVfaW5zbiAiKmZubXN1YmRmNF9mcHJfMiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAg ImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG1pbnVzOkRGIChtYXRjaF9vcGVyYW5kOkRGIDMg ImdwY19yZWdfb3BlcmFuZCIgImYiKQotIAkgICAgICAgICAgKG11bHQ6REYgKG1hdGNoX29wZXJh bmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJWYiKQotIAkJCSAgIChtYXRjaF9vcGVyYW5kOkRG IDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpKV0KLSAgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBU QVJHRVRfRlBSUyAmJiBUQVJHRVRfRlVTRURfTUFERCAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0t ICAgJiYgISBIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSkiCi0rICAgJiYgISBIT05PUl9TSUdO RURfWkVST1MgKERGbW9kZSkgJiYgVkVDVE9SX1VOSVRfTk9ORV9QIChERm1vZGUpIgotICAgIntm bm1zfGZubXN1Yn0gJTAsJTEsJTIsJTMiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCi0g ICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfbWFkZHN1Yl9kIildKQotQEAgLTU4MDksNyArNTg2 Myw4IEBACi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9 ZiIpCi0gCShzcXJ0OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYi KSkpXQotICAgIihUQVJHRVRfUFBDX0dQT1BUIHx8IFRBUkdFVF9QT1dFUjIpICYmIFRBUkdFVF9I QVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTIAotLSAgICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCi0r ICAgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotKyAgICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZt b2RlKSIKLSAgICJmc3FydCAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJkc3FydCIpXSkK LSAKLUBAIC01ODk4LDYgKzU5NTMsMTggQEAKLSAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmICFUQVJH RVRfRlBSUyAmJiBUQVJHRVRfU0lOR0xFX0ZMT0FUIgotICAiIikKLSAKLSsoZGVmaW5lX2V4cGFu ZCAiZml4dW5zX3RydW5jZGZzaTIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNf cmVnX29wZXJhbmQiICIiKQotKwkodW5zaWduZWRfZml4OlNJIChtYXRjaF9vcGVyYW5kOkRGIDEg ImdwY19yZWdfb3BlcmFuZCIgIiIpKSldCi0rICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VU X0U1MDBfRE9VQkxFIgotKyAgIiIpCi0rCi0rKGRlZmluZV9leHBhbmQgImZpeHVuc190cnVuY2Rm ZGkyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIp Ci0rCSh1bnNpZ25lZF9maXg6REkgKG1hdGNoX29wZXJhbmQ6REYgMSAicmVnaXN0ZXJfb3BlcmFu ZCIgIiIpKSldCi0rICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX1ZTWCIKLSsgICIiKQot KwotIDsgRm9yIGVhY2ggb2YgdGhlc2UgY29udmVyc2lvbnMsIHRoZXJlIGlzIGEgZGVmaW5lX2V4 cGFuZCwgYSBkZWZpbmVfaW5zbgotIDsgd2l0aCBhICcjJyB0ZW1wbGF0ZSwgYW5kIGEgZGVmaW5l X3NwbGl0ICh3aXRoIEMgY29kZSkuICBUaGUgaWRlYSBpcwotIDsgdG8gYWxsb3cgY29uc3RhbnQg Zm9sZGluZyB3aXRoIHRoZSB0ZW1wbGF0ZSBvZiB0aGUgZGVmaW5lX2luc24sCi1AQCAtNjEzOSwy NCArNjIwNiwzOCBAQAotICAgIntmY2lyenxmY3Rpd3p9ICUwLCUxIgotICAgWyhzZXRfYXR0ciAi dHlwZSIgImZwIildKQotIAotLShkZWZpbmVfaW5zbiAiYnRydW5jZGYyIgotKyhkZWZpbmVfZXhw YW5kICJidHJ1bmNkZjIiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29w ZXJhbmQiICI9ZiIpCi0gCSh1bnNwZWM6REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdf b3BlcmFuZCIgImYiKV0gVU5TUEVDX0ZSSVopKV0KLSAgICJUQVJHRVRfRlBSTkQgJiYgVEFSR0VU X0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCIKLSsgICIi KQotKwotKyhkZWZpbmVfaW5zbiAiKmJ0cnVuY2RmMl9mcHJzIgotKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotKwkodW5zcGVjOkRGIFsobWF0Y2hf b3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIildIFVOU1BFQ19GUklaKSldCi0rICAi VEFSR0VUX0ZQUk5EICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdF VF9ET1VCTEVfRkxPQVQKLSsgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0gICAi ZnJpeiAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSAKLSAoZGVmaW5lX2lu c24gImJ0cnVuY3NmMiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgImdwY19yZWdfb3Bl cmFuZCIgIj1mIikKLSAJKHVuc3BlYzpTRiBbKG1hdGNoX29wZXJhbmQ6U0YgMSAiZ3BjX3JlZ19v cGVyYW5kIiAiZiIpXSBVTlNQRUNfRlJJWikpXQotLSAgIlRBUkdFVF9GUFJORCAmJiBUQVJHRVRf SEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfU0lOR0xFX0ZMT0FUICIKLSsgICJU QVJHRVRfRlBSTkQgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VU X1NJTkdMRV9GTE9BVCIKLSAgICJmcml6ICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImZw IildKQotIAotLShkZWZpbmVfaW5zbiAiY2VpbGRmMiIKLSsoZGVmaW5lX2V4cGFuZCAiY2VpbGRm MiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0r CSh1bnNwZWM6REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpXSBV TlNQRUNfRlJJUCkpXQotKyAgIlRBUkdFVF9GUFJORCAmJiBUQVJHRVRfSEFSRF9GTE9BVCAmJiBU QVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIgotKyAgIiIpCi0rCi0rKGRlZmluZV9p bnNuICIqY2VpbGRmMl9mcHJzIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3Jl Z19vcGVyYW5kIiAiPWYiKQotIAkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFuZDpERiAxICJncGNf cmVnX29wZXJhbmQiICJmIildIFVOU1BFQ19GUklQKSldCi0tICAiVEFSR0VUX0ZQUk5EICYmIFRB UkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCi0r ICAiVEFSR0VUX0ZQUk5EICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRB UkdFVF9ET1VCTEVfRkxPQVQKLSsgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0g ICAiZnJpcCAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSAKLUBAIC02MTY3 LDEwICs2MjQ4LDE3IEBACi0gICAiZnJpcCAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJm cCIpXSkKLSAKLS0oZGVmaW5lX2luc24gImZsb29yZGYyIgotKyhkZWZpbmVfZXhwYW5kICJmbG9v cmRmMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIiIp Ci0rCSh1bnNwZWM6REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiIp XSBVTlNQRUNfRlJJTSkpXQotKyAgIlRBUkdFVF9GUFJORCAmJiBUQVJHRVRfSEFSRF9GTE9BVCAm JiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIgotKyAgIiIpCi0rCi0rKGRlZmlu ZV9pbnNuICIqZmxvb3JkZjJfZnBycyIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdw Y19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAi Z3BjX3JlZ19vcGVyYW5kIiAiZiIpXSBVTlNQRUNfRlJJTSkpXQotLSAgIlRBUkdFVF9GUFJORCAm JiBUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FU IgotKyAgIlRBUkdFVF9GUFJORCAmJiBUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAm JiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0rICAgJiYgIVZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUp IgotICAgImZyaW0gJTAsJTEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCi0gCi1AQCAt NjE4MSw2ICs2MjY5LDcgQEAKLSAgICJmcmltICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIg ImZwIildKQotIAotKzs7IE5vIFZTWCBlcXVpdmFsZW50IHRvIGZyaW4KLSAoZGVmaW5lX2luc24g InJvdW5kZGYyIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5k IiAiPWYiKQotIAkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJh bmQiICJmIildIFVOU1BFQ19GUklOKSldCi1AQCAtNjE5NSw2ICs2Mjg0LDEyIEBACi0gICAiZnJp biAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSAKLSsoZGVmaW5lX2V4cGFu ZCAiZnRydW5jZGYyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVy YW5kIiAiIikKLSsgIAkoZml4OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFu ZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0rICAiIikKLSsKLSA7 IEFuIFVOU1BFQyBpcyB1c2VkIHNvIHdlIGRvbid0IGhhdmUgdG8gc3VwcG9ydCBTSW1vZGUgaW4g RlAgcmVnaXN0ZXJzLgotIChkZWZpbmVfaW5zbiAic3RmaXd4IgotICAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6U0kgMCAibWVtb3J5X29wZXJhbmQiICI9WiIpCi1AQCAtNjIxMCwxNyArNjMwNSw0MCBA QAotICAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmICFUQVJHRVRfRlBSUyIKLSAgICIiKQotIAotLShk ZWZpbmVfaW5zbiAiZmxvYXRkaWRmMiIKLSsoZGVmaW5lX2V4cGFuZCAiZmxvYXRkaWRmMiIKLSsg IFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rCShmbG9h dDpERiAobWF0Y2hfb3BlcmFuZDpESSAxICJncGNfcmVnX29wZXJhbmQiICIiKSkpXQotKyAgIihU QVJHRVRfUE9XRVJQQzY0IHx8IFRBUkdFVF9YSUxJTlhfRlBVIHx8IFZFQ1RPUl9VTklUX1ZTWF9Q IChERm1vZGUpKQotKyAgICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9ET1VCTEVfRkxP QVQgJiYgVEFSR0VUX0ZQUlMiCi0rICAiIikKLSsKLSsoZGVmaW5lX2luc24gIipmbG9hdGRpZGYy X2ZwciIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1m IikKLSAJKGZsb2F0OkRGIChtYXRjaF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiFm I3IiKSkpXQotLSAgIihUQVJHRVRfUE9XRVJQQzY0IHx8IFRBUkdFVF9YSUxJTlhfRlBVKSAmJiBU QVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUICYmIFRBUkdFVF9GUFJTIgot KyAgIihUQVJHRVRfUE9XRVJQQzY0IHx8IFRBUkdFVF9YSUxJTlhfRlBVKQotKyAgICYmIFRBUkdF VF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYgVEFSR0VUX0ZQUlMKLSsgICAm JiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0gICAiZmNmaWQgJTAsJTEiCi0gICBbKHNl dF9hdHRyICJ0eXBlIiAiZnAiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJmaXhfdHJ1bmNkZmRpMiIK LSsoZGVmaW5lX2V4cGFuZCAiZmxvYXR1bnNkaWRmMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5k OkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rCSh1bnNpZ25lZF9mbG9hdDpERiAobWF0Y2hf b3BlcmFuZDpESSAxICJncGNfcmVnX29wZXJhbmQiICIiKSkpXQotKyAgIlRBUkdFVF9WU1giCi0r ICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAiZml4X3RydW5jZGZkaTIiCi0rICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQotKwkoZml4OkRJIChtYXRjaF9v cGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpKSldCi0rICAiKFRBUkdFVF9QT1dFUlBD NjQgfHwgVEFSR0VUX1hJTElOWF9GUFUgfHwgVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkpCi0r ICAgICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYgVEFSR0VU X0ZQUlMiCi0rICAiIikKLSsKLSsoZGVmaW5lX2luc24gIipmaXhfdHJ1bmNkZmRpMl9mcHIiCi0g ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICI9IWYjciIpCi0g CShmaXg6REkgKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSldCi0t ICAiKFRBUkdFVF9QT1dFUlBDNjQgfHwgVEFSR0VUX1hJTElOWF9GUFUpICYmIFRBUkdFVF9IQVJE X0ZMT0FUICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYgVEFSR0VUX0ZQUlMiCi0rICAiKFRBUkdF VF9QT1dFUlBDNjQgfHwgVEFSR0VUX1hJTElOWF9GUFUpICYmIFRBUkdFVF9IQVJEX0ZMT0FUCi0r ICAgICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgIVZFQ1RPUl9VTklU X1ZTWF9QIChERm1vZGUpIgotICAgImZjdGlkeiAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUi ICJmcCIpXSkKLSAKLUBAIC03NjA5LDcgKzc3MjcsNyBAQAotICAgIGFuZGkuICUwLCUxLCViMgot ICAgIGFuZGlzLiAlMCwlMSwldTIKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgIiosKiwq LGNvbXBhcmUsY29tcGFyZSwqIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICIqLCosKixmYXN0X2Nv bXBhcmUsZmFzdF9jb21wYXJlLCoiKQotICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw0LDQsNCw0 LDgiKV0pCi0gCi0gKGRlZmluZV9pbnNuICJhbmRkaTNfbm9tYyIKLUBAIC03NjY3LDcgKzc3ODUs OSBAQAotICAgICMKLSAgICAjCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJl LGNvbXBhcmUsZGVsYXllZF9jb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUs Y29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIg InR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsZmFzdF9jb21wYXJl LFwKLSsJCSAgICAgZmFzdF9jb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUs Y29tcGFyZSxcCi0rCQkgICAgIGNvbXBhcmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5n dGgiICI0LDQsNCw0LDQsOCw4LDgsOCw4LDgsMTIiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotQEAg LTc3MTgsNyArNzgzOCw5IEBACi0gICAgIwotICAgICMKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAi dHlwZSIgImNvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNv bXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUiKQot KyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJlLGRlbGF5ZWRfY29tcGFy ZSxmYXN0X2NvbXBhcmUsXAotKwkJICAgICBmYXN0X2NvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNv bXBhcmUsY29tcGFyZSxjb21wYXJlLFwKLSsJCSAgICAgY29tcGFyZSxjb21wYXJlIikKLSAgICAo c2V0X2F0dHIgImxlbmd0aCIgIjQsNCw0LDQsNCw4LDgsOCw4LDgsOCwxMiIpXSkKLSAKLSAoZGVm aW5lX3NwbGl0Ci1AQCAtNzg1OCw3ICs3OTgwLDcgQEAKLSAgICJACi0gICAgJXE0LiAlMywlMSwl MgotICAgICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIpCi0rICBbKHNldF9hdHRy ICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQotICAgIChzZXRfYXR0ciAibGVuZ3RoIiAi NCw4IildKQotIAotIChkZWZpbmVfc3BsaXQKLUBAIC03ODg3LDcgKzgwMDksNyBAQAotICAgIkAK LSAgICAlcTQuICUwLCUxLCUyCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJl IikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCi0gICAgKHNl dF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotQEAgLTc5NTgsNyAr ODA4MCw3IEBACi0gICAiQAotICAgICVxNC4gJTMsJTIsJTEKLSAgICAjIgotLSAgWyhzZXRfYXR0 ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxj b21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3Nw bGl0Ci1AQCAtNzk4Nyw3ICs4MTA5LDcgQEAKLSAgICJACi0gICAgJXE0LiAlMCwlMiwlMQotICAg ICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIpCi0rICBbKHNldF9hdHRyICJ0eXBl IiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQotICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4Iild KQotIAotIChkZWZpbmVfc3BsaXQKLUBAIC04MDI0LDcgKzgxNDYsNyBAQAotICAgIkAKLSAgICAl cTQuICUzLCUxLCUyCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlIikKLSsg IFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRy ICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotQEAgLTgwNTMsNyArODE3NSw3 IEBACi0gICAiQAotICAgICVxNC4gJTAsJTEsJTIKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlw ZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJl IikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci1A QCAtODA3MCw2ICs4MTkyLDUxIEBACi0gCShjb21wYXJlOkNDIChtYXRjaF9kdXAgMCkKLSAJCSAg ICAoY29uc3RfaW50IDApKSldCi0gICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAic21pbmRpMyIK LSsgIFsobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQotKyAgIChtYXRj aF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6 REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiIildCi0rICAiVEFSR0VUX0lTRUw2NCIKLSsgICIKLSt7 Ci0rICByczYwMDBfZW1pdF9taW5tYXggKG9wZXJhbmRzWzBdLCBTTUlOLCBvcGVyYW5kc1sxXSwg b3BlcmFuZHNbMl0pOwotKyAgRE9ORTsKLSt9IikKLSsKLSsoZGVmaW5lX2V4cGFuZCAic21heGRp MyIKLSsgIFsobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQotKyAgICht YXRjaF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rICAgKG1hdGNoX29wZXJh bmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiIildCi0rICAiVEFSR0VUX0lTRUw2NCIKLSsgICIK LSt7Ci0rICByczYwMDBfZW1pdF9taW5tYXggKG9wZXJhbmRzWzBdLCBTTUFYLCBvcGVyYW5kc1sx XSwgb3BlcmFuZHNbMl0pOwotKyAgRE9ORTsKLSt9IikKLSsKLSsoZGVmaW5lX2V4cGFuZCAidW1p bmRpMyIKLSsgIFsobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQotKyAg IChtYXRjaF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rICAgKG1hdGNoX29w ZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiIildCi0rICAiVEFSR0VUX0lTRUw2NCIKLSsg ICIKLSt7Ci0rICByczYwMDBfZW1pdF9taW5tYXggKG9wZXJhbmRzWzBdLCBVTUlOLCBvcGVyYW5k c1sxXSwgb3BlcmFuZHNbMl0pOwotKyAgRE9ORTsKLSt9IikKLSsKLSsoZGVmaW5lX2V4cGFuZCAi dW1heGRpMyIKLSsgIFsobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQot KyAgIChtYXRjaF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rICAgKG1hdGNo X29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiIildCi0rICAiVEFSR0VUX0lTRUw2NCIK LSsgICIKLSt7Ci0rICByczYwMDBfZW1pdF9taW5tYXggKG9wZXJhbmRzWzBdLCBVTUFYLCBvcGVy YW5kc1sxXSwgb3BlcmFuZHNbMl0pOwotKyAgRE9ORTsKLSt9IikKLSsKLSAMCi0gOzsgTm93IGRl ZmluZSB3YXlzIG9mIG1vdmluZyBkYXRhIGFyb3VuZC4KLSAKLUBAIC04NDczLDggKzg2NDAsOCBA QAotIDs7IFRoZSAiPz8iIGlzIGEga2x1ZGdlIHVudGlsIHdlIGNhbiBmaWd1cmUgb3V0IGEgbW9y ZSByZWFzb25hYmxlIHdheQotIDs7IG9mIGhhbmRsaW5nIHRoZXNlIG5vbi1vZmZzZXR0YWJsZSB2 YWx1ZXMuCi0gKGRlZmluZV9pbnNuICIqbW92ZGZfaGFyZGZsb2F0MzIiCi0tICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpERiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj0hciw/P3IsbSxmLGYsbSwh ciwhciwhciIpCi0tCShtYXRjaF9vcGVyYW5kOkRGIDEgImlucHV0X29wZXJhbmQiICJyLG0scixm LG0sZixHLEgsRiIpKV0KLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgIm5vbmltbWVkaWF0 ZV9vcGVyYW5kIiAiPSFyLCA/P3IsIG0sIHdzLCA/d2EsIHdzLCA/d2EsICBaLCA/WiwgZiwgZiwg bSwgd2EsICFyLCAhciwgIXIiKQotKwkobWF0Y2hfb3BlcmFuZDpERiAxICJpbnB1dF9vcGVyYW5k IiAgICAgICAgICAiciwgICBtLCByLCB3cywgIHdhLCAgWiwgICBaLCB3cywgd2EsIGYsIG0sIGYs ICBqLCAgRywgIEgsICBGIikpXQotICAgIiEgVEFSR0VUX1BPV0VSUEM2NCAmJiBUQVJHRVRfSEFS RF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIAotICAgICYmIChn cGNfcmVnX29wZXJhbmQgKG9wZXJhbmRzWzBdLCBERm1vZGUpCi0gICAgICAgIHx8IGdwY19yZWdf b3BlcmFuZCAob3BlcmFuZHNbMV0sIERGbW9kZSkpIgotQEAgLTg1NTMsMTkgKzg3MjAsMzAgQEAK LSAJICByZXR1cm4gXCJcIjsKLSAJfQotICAgICBjYXNlIDM6Ci0tICAgICAgcmV0dXJuIFwiZm1y ICUwLCUxXCI7Ci0gICAgIGNhc2UgNDoKLS0gICAgICByZXR1cm4gXCJsZmQlVTElWDEgJTAsJTFc IjsKLSsgICAgICByZXR1cm4gXCJ4eGxvciAleDAsJXgxLCV4MVwiOwotICAgICBjYXNlIDU6Ci0t ICAgICAgcmV0dXJuIFwic3RmZCVVMCVYMCAlMSwlMFwiOwotICAgICBjYXNlIDY6Ci0rICAgICAg cmV0dXJuIFwibHhzZCVVMXggJXgwLCV5MVwiOwotICAgICBjYXNlIDc6Ci0gICAgIGNhc2UgODoK LSsgICAgICByZXR1cm4gXCJzdHhzZCVVMHggJXgxLCV5MFwiOwotKyAgICBjYXNlIDk6Ci0rICAg ICAgcmV0dXJuIFwiZm1yICUwLCUxXCI7Ci0rICAgIGNhc2UgMTA6Ci0rICAgICAgcmV0dXJuIFwi bGZkJVUxJVgxICUwLCUxXCI7Ci0rICAgIGNhc2UgMTE6Ci0rICAgICAgcmV0dXJuIFwic3RmZCVV MCVYMCAlMSwlMFwiOwotKyAgICBjYXNlIDEyOgotKyAgICAgIHJldHVybiBcInh4bHhvciAleDAs JXgwLCV4MFwiOwotKyAgICBjYXNlIDEzOgotKyAgICBjYXNlIDE0OgotKyAgICBjYXNlIDE1Ogot ICAgICAgIHJldHVybiBcIiNcIjsKLSAgICAgfQotIH0iCi0tICBbKHNldF9hdHRyICJ0eXBlIiAi dHdvLGxvYWQsc3RvcmUsZnAsZnBsb2FkLGZwc3RvcmUsKiwqLCoiKQotLSAgIChzZXRfYXR0ciAi bGVuZ3RoIiAiOCwxNiwxNiw0LDQsNCw4LDEyLDE2IildKQotKyAgWyhzZXRfYXR0ciAidHlwZSIg InR3bywgbG9hZCwgc3RvcmUsIGZwLCBmcCwgZnBsb2FkLCBmcGxvYWQsIGZwc3RvcmUsIGZwc3Rv cmUsIGZwLCBmcGxvYWQsIGZwc3RvcmUsIHZlY3NpbXBsZSwgKiwgICosICAqIikKLSsgICAoc2V0 X2F0dHIgImxlbmd0aCIgIjgsICAgMTYsICAgIDE2LCAgNCwgIDQsICAgICAgNCwgICAgICA0LCAg ICAgICA0LCAgICAgICA0LCAgNCwgICAgICA0LCAgICAgICA0LCAgICAgICAgIDQsIDgsIDEyLCAx NiIpXSkKLSAKLSAoZGVmaW5lX2luc24gIiptb3ZkZl9zb2Z0ZmxvYXQzMiIKLSAgIFsoc2V0ICht YXRjaF9vcGVyYW5kOkRGIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPXIscixtLHIscixyIikK LUBAIC04NjEzLDE5ICs4NzkxLDI2IEBACi0gOyBsZC9zdGQgcmVxdWlyZSB3b3JkLWFsaWduZWQg ZGlzcGxhY2VtZW50cyAtPiAnWScgY29uc3RyYWludC4KLSA7IExpc3QgWS0+ciBhbmQgci0+WSBi ZWZvcmUgci0+ciBmb3IgcmVsb2FkLgotIChkZWZpbmVfaW5zbiAiKm1vdmRmX2hhcmRmbG9hdDY0 X21mcGdwciIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgIm5vbmltbWVkaWF0ZV9vcGVy YW5kIiAiPVksciwhcixmLGYsbSwqYypsLCFyLCpoLCFyLCFyLCFyLHIsZiIpCi0tCShtYXRjaF9v cGVyYW5kOkRGIDEgImlucHV0X29wZXJhbmQiICJyLFkscixmLG0sZixyLGgsMCxHLEgsRixmLHIi KSldCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIg Ij1ZLCByLCAhciwgd3MsID93YSwgd3MsID93YSwgIFosID9aLCBmLCBmLCBtLCB3YSwgKmMqbCwg IXIsICpoLCAhciwgIXIsICFyLCByLCBmIikKLSsJKG1hdGNoX29wZXJhbmQ6REYgMSAiaW5wdXRf b3BlcmFuZCIgICAgICAgICAiciwgWSwgIHIsIHdzLCA/d2EsICBaLCAgIFosIHdzLCB3YSwgZiwg bSwgZiwgIGosICAgIHIsICBoLCAgMCwgIEcsICBILCAgRiwgZiwgciIpKV0KLSAgICJUQVJHRVRf UE9XRVJQQzY0ICYmIFRBUkdFVF9NRlBHUFIgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VU X0ZQUlMgCi0tICAgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCAKLSsgICAmJiBUQVJHRVRfRE9VQkxF X0ZMT0FUCi0gICAgJiYgKGdwY19yZWdfb3BlcmFuZCAob3BlcmFuZHNbMF0sIERGbW9kZSkKLSAg ICAgICAgfHwgZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1sxXSwgREZtb2RlKSkiCi0gICAiQAot ICAgIHN0ZCVVMCVYMCAlMSwlMAotICAgIGxkJVUxJVgxICUwLCUxCi0gICAgbXIgJTAsJTEKLSsg ICB4eGxvciAleDAsJXgxLCV4MQotKyAgIHh4bG9yICV4MCwleDEsJXgxCi0rICAgbHhzZCVVMXgg JXgwLCV5MQotKyAgIGx4c2QlVTF4ICV4MCwleTEKLSsgICBzdHhzZCVVMHggJXgxLCV5MAotKyAg IHN0eHNkJVUweCAleDEsJXkwCi0gICAgZm1yICUwLCUxCi0gICAgbGZkJVUxJVgxICUwLCUxCi0g ICAgc3RmZCVVMCVYMCAlMSwlMAotKyAgIHh4bHhvciAleDAsJXgwLCV4MAotICAgIG10JTAgJTEK LSAgICBtZiUxICUwCi0gICAge2Nyb3IgMCwwLDB8bm9wfQotQEAgLTg2MzQsMzMgKzg4MTksNDAg QEAKLSAgICAjCi0gICAgbWZ0Z3ByICUwLCUxCi0gICAgbWZmZ3ByICUwLCUxIgotLSAgWyhzZXRf YXR0ciAidHlwZSIgInN0b3JlLGxvYWQsKixmcCxmcGxvYWQsZnBzdG9yZSxtdGptcHIsbWZqbXBy LCosKiwqLCosbWZ0Z3ByLG1mZmdwciIpCi0tICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDQsNCw0 LDQsNCw0LDQsNCw4LDEyLDE2LDQsNCIpXSkKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJzdG9yZSwg bG9hZCwgKiwgZnAsIGZwLCBmcGxvYWQsIGZwbG9hZCwgZnBzdG9yZSwgZnBzdG9yZSwgZnAsIGZw bG9hZCwgZnBzdG9yZSwgdmVjc2ltcGxlLCBtdGptcHIsIG1mam1wciwgKiwgKiwgICosICAqLCBt ZnRncHIsIG1mZmdwciIpCi0rICAgKHNldF9hdHRyICJsZW5ndGgiICAgIjQsICAgIDQsIDQsICA0 LCAgNCwgICAgICA0LCAgICAgIDQsICAgICAgIDQsICAgICAgIDQsICA0LCAgICAgIDQsICAgICAg IDQsICAgICAgICAgNCwgICAgICA0LCAgICAgIDQsIDQsIDgsIDEyLCAxNiwgICAgICA0LCAgICAg IDQiKV0pCi0gCi0gOyBsZC9zdGQgcmVxdWlyZSB3b3JkLWFsaWduZWQgZGlzcGxhY2VtZW50cyAt PiAnWScgY29uc3RyYWludC4KLSA7IExpc3QgWS0+ciBhbmQgci0+WSBiZWZvcmUgci0+ciBmb3Ig cmVsb2FkLgotIChkZWZpbmVfaW5zbiAiKm1vdmRmX2hhcmRmbG9hdDY0IgotLSAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6REYgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9WSxyLCFyLGYsZixtLCpj KmwsIXIsKmgsIXIsIXIsIXIiKQotLQkobWF0Y2hfb3BlcmFuZDpERiAxICJpbnB1dF9vcGVyYW5k IiAicixZLHIsZixtLGYscixoLDAsRyxILEYiKSldCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpE RiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj1ZLCByLCAhciwgd3MsID93YSwgd3MsID93YSwg IFosID9aLCBmLCBmLCBtLCB3YSwgKmMqbCwgIXIsICpoLCAhciwgIXIsICFyIikKLSsJKG1hdGNo X29wZXJhbmQ6REYgMSAiaW5wdXRfb3BlcmFuZCIgICAgICAgICAiciwgWSwgIHIsIHdzLCAgd2Es ICBaLCAgIFosIHdzLCB3YSwgZiwgbSwgZiwgIGosICAgIHIsICBoLCAgMCwgIEcsICBILCAgRiIp KV0KLSAgICJUQVJHRVRfUE9XRVJQQzY0ICYmICFUQVJHRVRfTUZQR1BSICYmIFRBUkdFVF9IQVJE X0ZMT0FUICYmIFRBUkdFVF9GUFJTIAotLSAgICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgCi0rICAg JiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotICAgICYmIChncGNfcmVnX29wZXJhbmQgKG9wZXJhbmRz WzBdLCBERm1vZGUpCi0gICAgICAgIHx8IGdwY19yZWdfb3BlcmFuZCAob3BlcmFuZHNbMV0sIERG bW9kZSkpIgotICAgIkAKLSAgICBzdGQlVTAlWDAgJTEsJTAKLSAgICBsZCVVMSVYMSAlMCwlMQot ICAgIG1yICUwLCUxCi0rICAgeHhsb3IgJXgwLCV4MSwleDEKLSsgICB4eGxvciAleDAsJXgxLCV4 MQotKyAgIGx4c2QlVTF4ICV4MCwleTEKLSsgICBseHNkJVUxeCAleDAsJXkxCi0rICAgc3R4c2Ql VTB4ICV4MSwleTAKLSsgICBzdHhzZCVVMHggJXgxLCV5MAotICAgIGZtciAlMCwlMQotICAgIGxm ZCVVMSVYMSAlMCwlMQotICAgIHN0ZmQlVTAlWDAgJTEsJTAKLSsgICB4eGx4b3IgJXgwLCV4MCwl eDAKLSAgICBtdCUwICUxCi0gICAgbWYlMSAlMAotICAgIHtjcm9yIDAsMCwwfG5vcH0KLSAgICAj Ci0gICAgIwotICAgICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAic3RvcmUsbG9hZCwqLGZwLGZw bG9hZCxmcHN0b3JlLG10am1wcixtZmptcHIsKiwqLCosKiIpCi0tICAgKHNldF9hdHRyICJsZW5n dGgiICI0LDQsNCw0LDQsNCw0LDQsNCw4LDEyLDE2IildKQotKyAgWyhzZXRfYXR0ciAidHlwZSIg InN0b3JlLCBsb2FkLCAqLCBmcCwgZnAsIGZwbG9hZCwgZnBsb2FkLCBmcHN0b3JlLCBmcHN0b3Jl LCBmcCwgZnBsb2FkLCBmcHN0b3JlLCB2ZWNzaW1wbGUsIG10am1wciwgbWZqbXByLCAgKiwgICos ICAqLCAgKiIpCi0rICAgKHNldF9hdHRyICJsZW5ndGgiICIgIDQsICAgIDQsIDQsICA0LCAgNCwg ICAgICA0LCAgICAgIDQsICAgICAgIDQsICAgICAgIDQsICA0LCAgICAgIDQsICAgICAgIDQsICAg ICAgICAgNCwgICAgICA0LCAgICAgIDQsICA0LCAgOCwgMTIsIDE2IildKQotIAotIChkZWZpbmVf aW5zbiAiKm1vdmRmX3NvZnRmbG9hdDY0IgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAi bm9uaW1tZWRpYXRlX29wZXJhbmQiICI9cixZLHIsY2wscixyLHIsciwqaCIpCi1AQCAtOTIzNywx NSArOTQyOSwxNiBAQAotIChkZWZpbmVfaW5zbiAiKm1vdnRpX3BwYzY0IgotICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VEkgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9cixvPD4sciIpCi0gCSht YXRjaF9vcGVyYW5kOlRJIDEgImlucHV0X29wZXJhbmQiICJyLHIsbSIpKV0KLS0gICJUQVJHRVRf UE9XRVJQQzY0ICYmIChncGNfcmVnX29wZXJhbmQgKG9wZXJhbmRzWzBdLCBUSW1vZGUpCi0tICAg fHwgZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1sxXSwgVEltb2RlKSkiCi0rICAiKFRBUkdFVF9Q T1dFUlBDNjQgJiYgKGdwY19yZWdfb3BlcmFuZCAob3BlcmFuZHNbMF0sIFRJbW9kZSkKLSsgICAg fHwgZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1sxXSwgVEltb2RlKSkpCi0rICAgJiYgVkVDVE9S X01FTV9OT05FX1AgKFRJbW9kZSkiCi0gICAiIyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICIqLGxv YWQsc3RvcmUiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VEkgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiIikKLSAJKG1hdGNoX29wZXJhbmQ6VEkgMSAiY29uc3Rf ZG91YmxlX29wZXJhbmQiICIiKSldCi0tICAiVEFSR0VUX1BPV0VSUEM2NCIKLSsgICJUQVJHRVRf UE9XRVJQQzY0ICYmIFZFQ1RPUl9NRU1fTk9ORV9QIChUSW1vZGUpIgotICAgWyhzZXQgKG1hdGNo X2R1cCAyKSAobWF0Y2hfZHVwIDQpKQotICAgIChzZXQgKG1hdGNoX2R1cCAzKSAobWF0Y2hfZHVw IDUpKV0KLSAgICIKLUBAIC05MjcxLDcgKzk0NjQsNyBAQAotIChkZWZpbmVfc3BsaXQKLSAgIFso c2V0IChtYXRjaF9vcGVyYW5kOlRJIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiIikKLSAgICAg ICAgIChtYXRjaF9vcGVyYW5kOlRJIDEgImlucHV0X29wZXJhbmQiICIiKSldCi0tICAicmVsb2Fk X2NvbXBsZXRlZAotKyAgInJlbG9hZF9jb21wbGV0ZWQgJiYgVkVDVE9SX01FTV9OT05FX1AgKFRJ bW9kZSkKLSAgICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkiCi0g ICBbKHBjKV0KLSB7IHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlIChvcGVyYW5kc1swXSwgb3Bl cmFuZHNbMV0pOyBET05FOyB9KQotQEAgLTE0ODkxLDYgKzE1MDg0LDggQEAKLSAMCi0gCi0gKGlu Y2x1ZGUgInN5bmMubWQiKQotKyhpbmNsdWRlICJ2ZWN0b3IubWQiKQotKyhpbmNsdWRlICJ2c3gu bWQiKQotIChpbmNsdWRlICJhbHRpdmVjLm1kIikKLSAoaW5jbHVkZSAic3BlLm1kIikKLSAoaW5j bHVkZSAiZGZwLm1kIikKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9lNTAwLmgJKC4uLi90cnVuaykJ KHJldmlzaW9uIDE0NTc3NykKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9lNTAwLmgJKC4uLi9icmFu Y2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTM3LDYgKzM3 LDggQEAKLSAgICAgICB7CQkJCQkJCQkJXAotIAlpZiAoVEFSR0VUX0FMVElWRUMpCQkJCQkJXAot IAkgIGVycm9yICgiQWx0aVZlYyBhbmQgRTUwMCBpbnN0cnVjdGlvbnMgY2Fubm90IGNvZXhpc3Qi KTsJXAotKwlpZiAoVEFSR0VUX1ZTWCkJCQkJCQkJXAotKwkgIGVycm9yICgiVlNYIGFuZCBFNTAw IGluc3RydWN0aW9ucyBjYW5ub3QgY29leGlzdCIpOwkJXAotIAlpZiAoVEFSR0VUXzY0QklUKQkJ CQkJCVwKLSAJICBlcnJvciAoIjY0LWJpdCBFNTAwIG5vdCBzdXBwb3J0ZWQiKTsJCQkJXAotIAlp ZiAoVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMpCQkJCVwKLS0tLSBnY2MvY29uZmln L3JzNjAwMC9kcml2ZXItcnM2MDAwLmMJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NTc3NykKLSsr KyBnY2MvY29uZmlnL3JzNjAwMC9kcml2ZXItcnM2MDAwLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93 ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ2MDI3KQotQEAgLTM0MywxMSArMzQzLDExNSBAQCBk ZXRlY3RfcHJvY2Vzc29yX2FpeCAodm9pZCkKLSAjZW5kaWYgLyogX0FJWCAqLwotIAotIAotKy8q Ci0rICogQXJyYXkgdG8gbWFwIC1tY3B1PW5hdGl2ZSBuYW1lcyB0byB0aGUgc3dpdGNoZXMgcGFz c2VkIHRvIHRoZSBhc3NlbWJsZXIuCi0rICogVGhpcyBsaXN0IG1pcnJvcnMgdGhlIHNwZWNzIGlu IEFTTV9DUFVfU1BFQywgYW5kIGFueSBjaGFuZ2VzIG1hZGUgaGVyZQotKyAqIHNob3VsZCBiZSBt YWRlIHRoZXJlIGFzIHdlbGwuCi0rICovCi0rCi0rc3RydWN0IGFzbV9uYW1lIHsKLSsgIGNvbnN0 IGNoYXIgKmNwdTsKLSsgIGNvbnN0IGNoYXIgKmFzbV9zdzsKLSt9OwotKwotK3N0YXRpYyBjb25z dAotK3N0cnVjdCBhc21fbmFtZSBhc21fbmFtZXNbXSA9IHsKLSsjaWYgZGVmaW5lZCAoX0FJWCkK LSsgIHsgInBvd2VyMyIsCSItbTYyMCIgfSwKLSsgIHsgInBvd2VyNCIsCSItbXB3cjQiIH0sCi0r ICB7ICJwb3dlcjUiLAkiLW1wd3I1IiB9LAotKyAgeyAicG93ZXI1KyIsCSItbXB3cjV4IiB9LAot KyAgeyAicG93ZXI2IiwJIi1tcHdyNiIgfSwKLSsgIHsgInBvd2VyNngiLAkiLW1wd3I2IiB9LAot KyAgeyAicG93ZXI3IiwJIi1tcHdyNyIgfSwKLSsgIHsgInBvd2VycGMiLAkiLW1wcGMiIH0sCi0r ICB7ICJyczY0YSIsCSItbXBwYyIgfSwKLSsgIHsgIjYwMyIsCSItbTYwMyIgfSwKLSsgIHsgIjYw M2UiLAkiLW02MDMiIH0sCi0rICB7ICI2MDQiLAkiLW02MDQiIH0sCi0rICB7ICI2MDRlIiwJIi1t NjA0IiB9LAotKyAgeyAiNjIwIiwJIi1tNjIwIiB9LAotKyAgeyAiNjMwIiwJIi1tNjIwIiB9LAot KyAgeyAiOTcwIiwJIi1tOTcwIiB9LAotKyAgeyAiRzUiLAkiLW05NzAiIH0sCi0rICB7IE5VTEws CSJcCi0rJXshbWFpeDY0OiBcCi0rJXttcG93ZXJwYzY0OiAtbXBwYzY0fSBcCi0rJXttYWx0aXZl YzogLW05NzB9IFwKLSsleyFtYWx0aXZlYzogJXshbXBvd2VyNjQ6ICUoYXNtX2RlZmF1bHQpfX19 IiB9LAotKwotKyNlbHNlCi0rICB7ICJjb21tb24iLAkiLW1jb20iIH0sCi0rICB7ICJjZWxsIiwJ Ii1tY2VsbCIgfSwKLSsgIHsgInBvd2VyIiwJIi1tcHdyIiB9LAotKyAgeyAicG93ZXIyIiwJIi1t cHdyeCIgfSwKLSsgIHsgInBvd2VyMyIsCSItbXBwYzY0IiB9LAotKyAgeyAicG93ZXI0IiwJIi1t cG93ZXI0IiB9LAotKyAgeyAicG93ZXI1IiwJIiUoYXNtX2NwdV9wb3dlcjUpIiB9LAotKyAgeyAi cG93ZXI1KyIsCSIlKGFzbV9jcHVfcG93ZXI1KSIgfSwKLSsgIHsgInBvd2VyNiIsCSIlKGFzbV9j cHVfcG93ZXI2KSAtbWFsdGl2ZWMiIH0sCi0rICB7ICJwb3dlcjZ4IiwJIiUoYXNtX2NwdV9wb3dl cjYpIC1tYWx0aXZlYyIgfSwKLSsgIHsgInBvd2VyNyIsCSIlKGFzbV9jcHVfcG93ZXI3KSIgfSwK LSsgIHsgInBvd2VycGMiLAkiLW1wcGMiIH0sCi0rICB7ICJyaW9zIiwJIi1tcHdyIiB9LAotKyAg eyAicmlvczEiLAkiLW1wd3IiIH0sCi0rICB7ICJyaW9zMiIsCSItbXB3cngiIH0sCi0rICB7ICJy c2MiLAkiLW1wd3IiIH0sCi0rICB7ICJyc2MxIiwJIi1tcHdyIiB9LAotKyAgeyAicnM2NGEiLAki LW1wcGM2NCIgfSwKLSsgIHsgIjQwMSIsCSItbXBwYyIgfSwKLSsgIHsgIjQwMyIsCSItbTQwMyIg fSwKLSsgIHsgIjQwNSIsCSItbTQwNSIgfSwKLSsgIHsgIjQwNWZwIiwJIi1tNDA1IiB9LAotKyAg eyAiNDQwIiwJIi1tNDQwIiB9LAotKyAgeyAiNDQwZnAiLAkiLW00NDAiIH0sCi0rICB7ICI0NjQi LAkiLW00NDAiIH0sCi0rICB7ICI0NjRmcCIsCSItbTQ0MCIgfSwKLSsgIHsgIjUwNSIsCSItbXBw YyIgfSwKLSsgIHsgIjYwMSIsCSItbTYwMSIgfSwKLSsgIHsgIjYwMiIsCSItbXBwYyIgfSwKLSsg IHsgIjYwMyIsCSItbXBwYyIgfSwKLSsgIHsgIjYwM2UiLAkiLW1wcGMiIH0sCi0rICB7ICJlYzYw M2UiLAkiLW1wcGMiIH0sCi0rICB7ICI2MDQiLAkiLW1wcGMiIH0sCi0rICB7ICI2MDRlIiwJIi1t cHBjIiB9LAotKyAgeyAiNjIwIiwJIi1tcHBjNjQiIH0sCi0rICB7ICI2MzAiLAkiLW1wcGM2NCIg fSwKLSsgIHsgIjc0MCIsCSItbXBwYyIgfSwKLSsgIHsgIjc1MCIsCSItbXBwYyIgfSwKLSsgIHsg IkczIiwJIi1tcHBjIiB9LAotKyAgeyAiNzQwMCIsCSItbXBwYyAtbWFsdGl2ZWMiIH0sCi0rICB7 ICI3NDUwIiwJIi1tcHBjIC1tYWx0aXZlYyIgfSwKLSsgIHsgIkc0IiwJIi1tcHBjIC1tYWx0aXZl YyIgfSwKLSsgIHsgIjgwMSIsCSItbXBwYyIgfSwKLSsgIHsgIjgyMSIsCSItbXBwYyIgfSwKLSsg IHsgIjgyMyIsCSItbXBwYyIgfSwKLSsgIHsgIjg2MCIsCSItbXBwYyIgfSwKLSsgIHsgIjk3MCIs CSItbXBvd2VyNCAtbWFsdGl2ZWMiIH0sCi0rICB7ICJHNSIsCSItbXBvd2VyNCAtbWFsdGl2ZWMi IH0sCi0rICB7ICI4NTQwIiwJIi1tZTUwMCIgfSwKLSsgIHsgIjg1NDgiLAkiLW1lNTAwIiB9LAot KyAgeyAiZTMwMGMyIiwJIi1tZTMwMCIgfSwKLSsgIHsgImUzMDBjMyIsCSItbWUzMDAiIH0sCi0r ICB7ICJlNTAwbWMiLAkiLW1lNTAwbWMiIH0sCi0rICB7IE5VTEwsCSJcCi0rJXttcG93ZXI6ICV7 IW1wb3dlcjI6IC1tcHdyfX0gXAotKyV7bXBvd2VyMjogLW1wd3J4fSBcCi0rJXttcG93ZXJwYzY0 KjogLW1wcGM2NH0gXAotKyV7IW1wb3dlcnBjNjQqOiAle21wb3dlcnBjKjogLW1wcGN9fSBcCi0r JXttbm8tcG93ZXI6ICV7IW1wb3dlcnBjKjogLW1jb219fSBcCi0rJXshbW5vLXBvd2VyOiAleyFt cG93ZXIqOiAlKGFzbV9kZWZhdWx0KX19IiB9LAotKyNlbmRpZgotK307Ci0rCi0gLyogVGhpcyB3 aWxsIGJlIGNhbGxlZCBieSB0aGUgc3BlYyBwYXJzZXIgaW4gZ2NjLmMgd2hlbiBpdCBzZWVzCi0g ICAgYSAlOmxvY2FsX2NwdV9kZXRlY3QoYXJncykgY29uc3RydWN0LiAgQ3VycmVudGx5IGl0IHdp bGwgYmUgY2FsbGVkCi0gICAgd2l0aCBlaXRoZXIgImFyY2giIG9yICJ0dW5lIiBhcyBhcmd1bWVu dCBkZXBlbmRpbmcgb24gaWYgLW1hcmNoPW5hdGl2ZQotICAgIG9yIC1tdHVuZT1uYXRpdmUgaXMg dG8gYmUgc3Vic3RpdHV0ZWQuCi0gCi0rICAgQWRkaXRpb25hbGx5IGl0IHdpbGwgYmUgY2FsbGVk IHdpdGggImFzbSIgdG8gc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBmbGFncwotKyAgIGZvciB0aGUg YXNzZW1ibGVyLgotKwotICAgIEl0IHJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyBuZXcgY29t bWFuZCBsaW5lIHBhcmFtZXRlcnMgdG8gYmUKLSAgICBwdXQgYXQgdGhlIHBsYWNlIG9mIHRoZSBh Ym92ZSB0d28gb3B0aW9ucywgZGVwZW5kaW5nIG9uIHdoYXQgQ1BVCi0gICAgdGhpcyBpcyBleGVj dXRlZC4KLUBAIC0zNjEsMjkgKzQ2NSwzNSBAQCBjb25zdCBjaGFyCi0gICBjb25zdCBjaGFyICpj YWNoZSA9ICIiOwotICAgY29uc3QgY2hhciAqb3B0aW9ucyA9ICIiOwotICAgYm9vbCBhcmNoOwot KyAgYm9vbCBhc3NlbWJsZXI7Ci0rICBzaXplX3QgaTsKLSAKLSAgIGlmIChhcmdjIDwgMSkKLSAg ICAgcmV0dXJuIE5VTEw7Ci0gCi0gICBhcmNoID0gc3RyY21wIChhcmd2WzBdLCAiY3B1IikgPT0g MDsKLS0gIGlmICghYXJjaCAmJiBzdHJjbXAgKGFyZ3ZbMF0sICJ0dW5lIikpCi0rICBhc3NlbWJs ZXIgPSAoIWFyY2ggJiYgc3RyY21wIChhcmd2WzBdLCAiYXNtIikgPT0gMCk7Ci0rICBpZiAoIWFy Y2ggJiYgIWFzc2VtYmxlciAmJiBzdHJjbXAgKGFyZ3ZbMF0sICJ0dW5lIikpCi0gICAgIHJldHVy biBOVUxMOwotIAotKyAgaWYgKCEgYXNzZW1ibGVyKQotKyAgICB7Ci0gI2lmIGRlZmluZWQgKF9B SVgpCi0tICBjYWNoZSA9IGRldGVjdF9jYWNoZXNfYWl4ICgpOwotKyAgICAgIGNhY2hlID0gZGV0 ZWN0X2NhY2hlc19haXggKCk7Ci0gI2VsaWYgZGVmaW5lZCAoX19BUFBMRV9fKQotLSAgY2FjaGUg PSBkZXRlY3RfY2FjaGVzX2RhcndpbiAoKTsKLSsgICAgICBjYWNoZSA9IGRldGVjdF9jYWNoZXNf ZGFyd2luICgpOwotICNlbGlmIGRlZmluZWQgKF9fRnJlZUJTRF9fKQotLSAgY2FjaGUgPSBkZXRl Y3RfY2FjaGVzX2ZyZWVic2QgKCk7Ci0tICAvKiBGcmVlQlNEIFBQQyBkb2VzIG5vdCBwcm92aWRl IGFueSBjYWNoZSBpbmZvcm1hdGlvbiB5ZXQuICAqLwotLSAgY2FjaGUgPSAiIjsKLSsgICAgICBj YWNoZSA9IGRldGVjdF9jYWNoZXNfZnJlZWJzZCAoKTsKLSsgICAgICAvKiBGcmVlQlNEIFBQQyBk b2VzIG5vdCBwcm92aWRlIGFueSBjYWNoZSBpbmZvcm1hdGlvbiB5ZXQuICAqLwotKyAgICAgIGNh Y2hlID0gIiI7Ci0gI2VsaWYgZGVmaW5lZCAoX19saW51eF9fKQotLSAgY2FjaGUgPSBkZXRlY3Rf Y2FjaGVzX2xpbnV4ICgpOwotLSAgLyogUFBDIExpbnV4IGRvZXMgbm90IHByb3ZpZGUgYW55IGNh Y2hlIGluZm9ybWF0aW9uIHlldC4gICovCi0tICBjYWNoZSA9ICIiOwotKyAgICAgIGNhY2hlID0g ZGV0ZWN0X2NhY2hlc19saW51eCAoKTsKLSsgICAgICAvKiBQUEMgTGludXggZG9lcyBub3QgcHJv dmlkZSBhbnkgY2FjaGUgaW5mb3JtYXRpb24geWV0LiAgKi8KLSsgICAgICBjYWNoZSA9ICIiOwot ICNlbHNlCi0tICBjYWNoZSA9ICIiOwotKyAgICAgIGNhY2hlID0gIiI7Ci0gI2VuZGlmCi0rICAg IH0KLSAKLSAjaWYgZGVmaW5lZCAoX0FJWCkKLSAgIGNwdSA9IGRldGVjdF9wcm9jZXNzb3JfYWl4 ICgpOwotQEAgLTM5Nyw2ICs1MDcsMTcgQEAgY29uc3QgY2hhcgotICAgY3B1ID0gInBvd2VycGMi OwotICNlbmRpZgotIAotKyAgaWYgKGFzc2VtYmxlcikKLSsgICAgewotKyAgICAgIGZvciAoaSA9 IDA7IGkgPCBzaXplb2YgKGFzbV9uYW1lcykgLyBzaXplb2YgKGFzbV9uYW1lc1swXSk7IGkrKykK LSsJewotKwkgIGlmICghYXNtX25hbWVzW2ldLmNwdSB8fCAhc3RyY21wIChhc21fbmFtZXNbaV0u Y3B1LCBjcHUpKQotKwkgICAgcmV0dXJuIGFzbV9uYW1lc1tpXS5hc21fc3c7Ci0rCX0KLSsKLSsg ICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotICAgcmV0dXJuIGNvbmNhdCAoY2FjaGUsICIt bSIsIGFyZ3ZbMF0sICI9IiwgY3B1LCAiICIsIG9wdGlvbnMsIE5VTEwpOwotIH0KLSAKLS0tLSBn Y2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDU3NzcpCi0r KysgZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVp c3NuZXIpCShyZXZpc2lvbiAxNDYwMjcpCi1AQCAtMTIwLDkgKzEyMCw5IEBAIGRvIHsJCQkJCQkJ CQlcCi0gICBlbHNlIGlmICghc3RyY21wIChyczYwMDBfYWJpX25hbWUsICJpOTYwLW9sZCIpKQkJ CVwKLSAgICAgewkJCQkJCQkJCVwKLSAgICAgICByczYwMDBfY3VycmVudF9hYmkgPSBBQklfVjQ7 CQkJCQlcCi0tICAgICAgdGFyZ2V0X2ZsYWdzIHw9IChNQVNLX0xJVFRMRV9FTkRJQU4gfCBNQVNL X0VBQkkJCQlcCi0tCQkgICAgICAgfCBNQVNLX05PX0JJVEZJRUxEX1dPUkQpOwkJCVwKLSsgICAg ICB0YXJnZXRfZmxhZ3MgfD0gKE1BU0tfTElUVExFX0VORElBTiB8IE1BU0tfRUFCSSk7CQkJXAot ICAgICAgIHRhcmdldF9mbGFncyAmPSB+TUFTS19TVFJJQ1RfQUxJR047CQkJCVwKLSsgICAgICBU QVJHRVRfTk9fQklURklFTERfV09SRCA9IDE7CQkJCQlcCi0gICAgIH0JCQkJCQkJCQlcCi0gICBl bHNlCQkJCQkJCQkJXAotICAgICB7CQkJCQkJCQkJXAotCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBi L3NvdXJjZXMKaW5kZXggMjkxNTkyYS4uMzRhNDg4MCAxMDA2NDQKLS0tIGEvc291cmNlcworKysg Yi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAogMjY1OWYwOWMyZTQzZWY4YjdkNDQwNjMyMTc1M2Yx YjIgIGZhc3RqYXItMC45Ny50YXIuZ3oKLWEyODBjODdlN2QwYTQ0YTk5YTZiYzg0YmJlM2ViODZk ICBnY2MtNC40LjEtMjAwOTA4MTgudGFyLmJ6MgorZTY4Yzg1ZTkxMzdhMzkyNzI0NjhmODYyNjhk ODcyNTEgIGdjYy00LjQuMS0yMDA5MDkwMS50YXIuYnoyCg==