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: Kevin Buettner To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 10.2. Date: Thu, 23 Jul 2026 18:34:27 GMT Message-ID: <178483166785.1.3955172208122013901.rpms-gdb-ca26ddfa99d8@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: ca26ddfa99d8f2a0e463e2be9f2f2107bcd44a03 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogY2EyNmRkZmE5OWQ4ZjJhMGU0NjNlMmJlOWYyZjIxMDdiY2Q0NGEwMwog ICAgICAgICAgICBBdXRob3IgOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+CiAg ICAgICAgICAgIERhdGUgICA6IDIwMjEtMDYtMDZUMTQ6NTQ6NDctMDc6MDAKICAgICAgICAgICAg U3RhdHMgIDogKzQ4ODcvLTEwNDI1IGluIDQ0IGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDog aHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy9jYTI2ZGRmYTk5ZDhmMmEw ZTQ2M2UyYmU5ZjJmMjEwN2JjZDQ0YTAzP2JyYW5jaD1maXgtZHVwLXBhdGNoCgogICAgICAgICAg ICBMb2c6CiAgICAgICAgICAgIFJlYmFzZSB0byBGU0YgR0RCIDEwLjIuCkRyb3AgZ2RiLTYuMy10 ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaC4KRHJvcCBnZGItNi4zLXRlc3Qtc2VsZi0yMDA1MDExMC5w YXRjaC4KRHJvcCBnZGItNi41LWJ6MjE4Mzc5LXBwYy1zb2xpYi10cmFtcG9saW5lLXRlc3QucGF0 Y2guCkRyb3AgZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaC4KRHJvcCBn ZGItNi44LXF1aXQtbmV2ZXItYWJvcnRzLnBhdGNoLgpEcm9wIGdkYi1hcmNoZXItcGllLWFkZG9u cy1rZWVwLWRpc2FibGVkLnBhdGNoLgpEcm9wIGdkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaC4K RHJvcCBnZGItYXJjaGVyLXZsYS10ZXN0cy5wYXRjaC4KRHJvcCBnZGItYXJjaGVyLnBhdGNoLgpE cm9wIGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2guCkRyb3AgZ2RiLWJ0cm9idXN0 LnBhdGNoLgpEcm9wIGdkYi1iejEyMTk3NDctYXR0YWNoLWtpbGxzLnBhdGNoLgpEcm9wIGdkYi1i ejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoLgpEcm9wIGdkYi1kdHMtcmhlbDYtcHl0aG9u LWNvbXBhdC5wYXRjaC4KRHJvcCBnZGItZ25hdC1kd2FyZi1jcmFzaC0zb2YzLnBhdGNoLgpEcm9w IGdkYi1qaXQtcmVhZGVyLW11bHRpbGliLnBhdGNoLgpEcm9wIGdkYi1tb3JpYnVuZC11dHJhY2Ut d29ya2Fyb3VuZC5wYXRjaC4KRHJvcCBnZGItcmhiejE5MzA1MjgtZml4LWdudWxpYi1idWlsZC1l cnJvci5wYXRjaC4KRHJvcCBnZGItcmhiejE5MzI2NDUtYWFyY2g2NC1wdHJhY2UtaGVhZGVyLW9y ZGVyLnBhdGNoLgpEcm9wIGdkYi12bGEtaW50ZWwtZml4LXByaW50LWNoYXItYXJyYXkucGF0Y2gu CkRyb3AgZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXN0cmlkZXMucGF0Y2guCkRyb3AgZ2RiLXZsYS1p bnRlbC1zdHJpbmdidC1maXgucGF0Y2guCkRyb3AgZ2RiLXZsYS1pbnRlbC10ZXN0cy5wYXRjaC4K RHJvcCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0LXR5cGUtdW5pdC5wYXRjaC4KRHJvcCBnZGIt dGVzdHN1aXRlLXJlYWRsaW5lNjMtc2lnaW50LXJldmVydC5wYXRjaC4KRHJvcCBnZGItY29uZmln LnBhdGNoLgpBZGQgZm9sbG93aW5nIHVwc3RyZWFtIHBhdGNoZXMgZm9yIEZvcnRyYW4gc3RyaWRl IC8gc2xpY2Ugc3VwcG9ydDoKICBnZGItcmhiejE5NjQxNjctY29udmVydC1lbnVtLXJhbmdlX3R5 cGUucGF0Y2gKICBnZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zbGljZXMtYXQtcHJvbXB0 LnBhdGNoCiAgZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc3RyaWRlcy1pbi1leHByZXNz aW9ucy5wYXRjaAogIGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJl c3Npb24tZXZhbHVhdGlvbi5wYXRjaAogIGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXJhbmdlX3R5 cGUtdG8tcmFuZ2VfZmxhZy5wYXRjaAogIGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXdoaXRlc3Bh Y2VfYXJyYXkucGF0Y2gKICBnZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFuLWV4cHItaGFuZGxp bmcucGF0Y2gKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXgg M2EyMWE5YS4uNWY0YTQwYyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3Jl CkBAIC0xLDQgKzEsNCBAQAotL2JpbnV0aWxzLWdkYgorL25ldy1mZWRvcmEtcmVsZWFzZQogL2dk Yi1saWJzdGRjKystdjMtcHl0aG9uLTguMS4xLTIwMTgwNjI2LnRhci54egotL2dkYi0xMC4xLnRh ci54egogL3YyLjAuNC50YXIuZ3oKKy9nZGItMTAuMi50YXIueHoKCmRpZmYgLS1naXQgYS9fZ2Ri LnNwZWMuUGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCmluZGV4IDMwMDIz YWIuLjVhM2U0ZTQgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCisrKyBiL19n ZGIuc3BlYy5QYXRjaC5pbmNsdWRlCkBAIC0yLDM3MCArMiwzMDAgQEAKICM9ZmVkb3JhCiBQYXRj aDAwMTogZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaAogCi0jIFZMQSAoRm9y dHJhbiBkeW5hbWljIGFycmF5cykgZnJvbSBJbnRlbCArIGFyY2hlci1qYW5rcmF0b2NodmlsLXZs YSB0ZXN0cy4KLSM9cHVzaAotUGF0Y2gwMDI6IGdkYi12bGEtaW50ZWwtZm9ydHJhbi1zdHJpZGVz LnBhdGNoCi0KLSM9cHVzaCtqYW4KLVBhdGNoMDAzOiBnZGItdmxhLWludGVsLXN0cmluZ2J0LWZp eC5wYXRjaAotCiAjIEFkZCBhIHdyYXBwZXIgc2NyaXB0IHRvIEdEQiB0aGF0IGltcGxlbWVudHMg cHN0YWNrIHVzaW5nIHRoZQogIyAtLXJlYWRuZXZlciBvcHRpb24uCiAjPXB1c2gKLVBhdGNoMDA0 OiBnZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRjaAotCi0jIFZTWVNDQUxMIGFuZCBQSUUKLSM9 ZmVkb3JhdGVzdAotUGF0Y2gwMDU6IGdkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKLQot IyBHZXQgc2VsZnRlc3Qgd29ya2luZyB3aXRoIHNlcC1kZWJ1Zy1pbmZvCi0jPWZlZG9yYXRlc3QK LVBhdGNoMDA2OiBnZGItNi4zLXRlc3Qtc2VsZi0yMDA1MDExMC5wYXRjaAorUGF0Y2gwMDI6IGdk Yi02LjMtZ3N0YWNrLTIwMDUwNDExLnBhdGNoCiAKICMgVGVzdCBzdXBwb3J0IG9mIG11bHRpcGxl IGRlc3RydWN0b3JzIGp1c3QgbGlrZSBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMKICM9ZmVkb3JhdGVz dAotUGF0Y2gwMDc6IGdkYi02LjMtdGVzdC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoCitQYXRjaDAw MzogZ2RiLTYuMy10ZXN0LWR0b3JmaXgtMjAwNTAxMjEucGF0Y2gKIAogIyBGaXggdG8gc3VwcG9y dCBleGVjdXRhYmxlIG1vdmluZwogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAwODogZ2RiLTYuMy10ZXN0 LW1vdmVkaXItMjAwNTAxMjUucGF0Y2gKK1BhdGNoMDA0OiBnZGItNi4zLXRlc3QtbW92ZWRpci0y MDA1MDEyNS5wYXRjaAogCiAjIFRlc3Qgc2libGluZyB0aHJlYWRzIHRvIHNldCB0aHJlYWRlZCB3 YXRjaHBvaW50cyBmb3IgeDg2IGFuZCB4ODYtNjQKICM9ZmVkb3JhdGVzdAotUGF0Y2gwMDk6IGdk Yi02LjMtdGhyZWFkZWQtd2F0Y2hwb2ludHMyLTIwMDUwMjI1LnBhdGNoCitQYXRjaDAwNTogZ2Ri LTYuMy10aHJlYWRlZC13YXRjaHBvaW50czItMjAwNTAyMjUucGF0Y2gKIAogIyBOb3RpZnkgb2Jz ZXJ2ZXJzIHRoYXQgdGhlIGluZmVyaW9yIGhhcyBiZWVuIGNyZWF0ZWQKICM9ZmVkb3JhdGVzdAot UGF0Y2gwMTA6IGdkYi02LjMtaW5mZXJpb3Itbm90aWZpY2F0aW9uLTIwMDUwNzIxLnBhdGNoCitQ YXRjaDAwNjogZ2RiLTYuMy1pbmZlcmlvci1ub3RpZmljYXRpb24tMjAwNTA3MjEucGF0Y2gKIAog IyBWZXJpZnkgcHJpbnRpbmcgb2YgaW5oZXJpdGVkIG1lbWJlcnMgdGVzdAogIz1mZWRvcmF0ZXN0 Ci1QYXRjaDAxMTogZ2RiLTYuMy1pbmhlcml0YW5jZXRlc3QtMjAwNTA3MjYucGF0Y2gKK1BhdGNo MDA3OiBnZGItNi4zLWluaGVyaXRhbmNldGVzdC0yMDA1MDcyNi5wYXRjaAogCiAjIFN1cHBvcnQg VExTIHN5bWJvbHMgKCtgZXJybm8nIHN1Z2dlc3Rpb24gaWYgbm8gcHRocmVhZCBpcyBmb3VuZCkg KEJaIDE4NTMzNykuCiAjPXB1c2gramFuOiBJdCBzaG91bGQgYmUgcmVwbGFjZWQgYnkgSW5maW5p dHkgcHJvamVjdC4KLVBhdGNoMDEyOiBnZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhv dXQtZGVidWdpbmZvLXYyLnBhdGNoCitQYXRjaDAwODogZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZl LXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaAogCiAjIEZpeCBUTFMgc3ltYm9scyByZXNv bHZpbmcgZm9yIHNoYXJlZCBsaWJyYXJpZXMgd2l0aCBhIHJlbGF0aXZlIHBhdGhuYW1lLgogIyBU aGUgdGVzdHN1aXRlIG5lZWRzIGBnZGItNi41LXRscy1vZi1zZXBhcmF0ZS1kZWJ1Z2luZm8ucGF0 Y2gnLgogIz1mZWRvcmF0ZXN0OiBPbmUgc2hvdWxkIHJlY2hlY2sgaWYgaXQgaXMgcmVhbGx5IGZp eGVkIHVwc3RyZWFtLgotUGF0Y2gwMTM6IGdkYi02LjUtc2hhcmVkbGlicmFyeS1wYXRoLnBhdGNo CitQYXRjaDAwOTogZ2RiLTYuNS1zaGFyZWRsaWJyYXJ5LXBhdGgucGF0Y2gKIAogIyBJbXByb3Zl ZCB0ZXN0c3VpdGUgcmVzdWx0cyBieSB0aGUgdGVzdHN1aXRlIHByb3ZpZGVkIGJ5IHRoZSBjb3Vy dGVzeSBvZiBCRUEuCiAjPWZlZG9yYXRlc3Q6IEZvciB1cHN0cmVhbSBpdCBzaG91bGQgYmUgcmV3 cml0dGVuIGFzIGEgZGVqYWdudSB0ZXN0LCB0aGUgdGVzdCBvZiBubyAiPz8iIHdhcyB1c2VmdWwu Ci1QYXRjaDAxNDogZ2RiLTYuNS1CRUEtdGVzdHN1aXRlLnBhdGNoCitQYXRjaDAxMDogZ2RiLTYu NS1CRUEtdGVzdHN1aXRlLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIGRlYWRsb2NraW5nIG9uIGxh c3QgYWRkcmVzcyBzcGFjZSBieXRlOyBmb3IgY29ycnVwdGVkIGJhY2t0cmFjZXMuCiAjPWZlZG9y YXRlc3QKLVBhdGNoMDE1OiBnZGItNi41LWxhc3QtYWRkcmVzcy1zcGFjZS1ieXRlLXRlc3QucGF0 Y2gKK1BhdGNoMDExOiBnZGItNi41LWxhc3QtYWRkcmVzcy1zcGFjZS1ieXRlLXRlc3QucGF0Y2gK IAogIyBGaXggcmVhZGxpbmUgc2VnZmF1bHQgb24gZXhjZXNzaXZlbHkgbG9uZyBoYW5kLXR5cGVk IGxpbmVzLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAxNjogZ2RiLTYuNS1yZWFkbGluZS1sb25nLWxp bmUtY3Jhc2gtdGVzdC5wYXRjaAorUGF0Y2gwMTI6IGdkYi02LjUtcmVhZGxpbmUtbG9uZy1saW5l LWNyYXNoLXRlc3QucGF0Y2gKIAogIyBUZXN0IHNpZGVlZmZlY3RzIG9mIHNraXBwaW5nIHBwYyAu c28gbGlicyB0cmFtcG9saW5lcyAoQlogMjE4Mzc5KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMTc6 IGdkYi02LjUtYnoyMTgzNzktcHBjLXNvbGliLXRyYW1wb2xpbmUtdGVzdC5wYXRjaAotCi0jIEZp eCBsb2NrdXAgb24gdHJhbXBvbGluZSB2cy4gaXRzIGZ1bmN0aW9uIGxvb2t1cDsgdW5yZXByb2R1 Y2libGUgKEJaIDIxODM3OSkuCi0jPWZlZG9yYQotUGF0Y2gwMTg6IGdkYi02LjUtYnoyMTgzNzkt c29saWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1maXgucGF0Y2gKK1BhdGNoMDEzOiBnZGItNi41 LWJ6MjE4Mzc5LXBwYy1zb2xpYi10cmFtcG9saW5lLXRlc3QucGF0Y2gKIAogIyBGaW5kIHN5bWJv bHMgcHJvcGVybHkgYXQgdGhlaXIgb3JpZ2luYWwgKGluY2x1ZGVkKSBmaWxlIChCWiAxMDk5MjEp LgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAxOTogZ2RiLTYuNS1iejEwOTkyMS1EV19BVF9kZWNsX2Zp bGUtdGVzdC5wYXRjaAorUGF0Y2gwMTQ6IGdkYi02LjUtYnoxMDk5MjEtRFdfQVRfZGVjbF9maWxl LXRlc3QucGF0Y2gKIAogIyBVcGRhdGUgUFBDIHVud2luZGluZyBwYXRjaGVzIHRvIHRoZWlyIHVw c3RyZWFtIHZhcmlhbnRzIChCWiAxNDA1MzIpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAyMDogZ2Ri LTYuMy1iejE0MDUzMi1wcGMtdW53aW5kaW5nLXRlc3QucGF0Y2gKK1BhdGNoMDE1OiBnZGItNi4z LWJ6MTQwNTMyLXBwYy11bndpbmRpbmctdGVzdC5wYXRjaAogCiAjIFRlc3RjYXNlIGZvciBleGVj KCkgZnJvbSB0aHJlYWRlZCBwcm9ncmFtIChCWiAyMDI2ODkpLgogIz1mZWRvcmF0ZXN0Ci1QYXRj aDAyMTogZ2RiLTYuMy1iejIwMjY4OS1leGVjLWZyb20tcHRocmVhZC10ZXN0LnBhdGNoCitQYXRj aDAxNjogZ2RiLTYuMy1iejIwMjY4OS1leGVjLWZyb20tcHRocmVhZC10ZXN0LnBhdGNoCiAKICMg VGVzdGNhc2UgZm9yIFBQQyBQb3dlcjYvREZQIGluc3RydWN0aW9ucyBkaXNhc3NlbWJseSAoQlog MjMwMDAwKS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMjI6IGdkYi02LjYtYnoyMzAwMDAtcG93ZXI2 LWRpc2Fzc2VtYmx5LXRlc3QucGF0Y2gKK1BhdGNoMDE3OiBnZGItNi42LWJ6MjMwMDAwLXBvd2Vy Ni1kaXNhc3NlbWJseS10ZXN0LnBhdGNoCiAKICMgQWxsb3cgcnVubmluZyBgL3Vzci9iaW4vZ2Nv cmUnIHdpdGggcHJvdmlkZWQgYnV0IGluYWNjZXNzaWJsZSB0dHkgKEJaIDIyOTUxNykuCiAjPWZl ZG9yYXRlc3QKLVBhdGNoMDIzOiBnZGItNi42LWJ6MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWlu YWwucGF0Y2gKK1BhdGNoMDE4OiBnZGItNi42LWJ6MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWlu YWwucGF0Y2gKIAogIyBBdm9pZCB0b28gbG9uZyB0aW1lb3V0cyBvbiBmYWlsaW5nIGNhc2VzIG9m ICJhbm5vdGExLmV4cCBhbm5vdGEzLmV4cCIuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDI0OiBnZGIt Ni42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaAorUGF0Y2gwMTk6IGdkYi02LjYtdGVzdHN1aXRl LXRpbWVvdXRzLnBhdGNoCiAKICMgU3VwcG9ydCBmb3Igc3RlcHBpbmcgb3ZlciBQUEMgYXRvbWlj IGluc3RydWN0aW9uIHNlcXVlbmNlcyAoQlogMjM3NTcyKS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gw MjU6IGdkYi02LjYtYnoyMzc1NzItcHBjLWF0b21pYy1zZXF1ZW5jZS10ZXN0LnBhdGNoCitQYXRj aDAyMDogZ2RiLTYuNi1iejIzNzU3Mi1wcGMtYXRvbWljLXNlcXVlbmNlLXRlc3QucGF0Y2gKIAog IyBUZXN0IGtlcm5lbCBWRFNPIGRlY29kaW5nIHdoaWxlIGF0dGFjaGluZyB0byBhbiBpMzg2IHBy b2Nlc3MuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDI2OiBnZGItNi4zLWF0dGFjaC1zZWUtdmRzby10 ZXN0LnBhdGNoCitQYXRjaDAyMTogZ2RiLTYuMy1hdHRhY2gtc2VlLXZkc28tdGVzdC5wYXRjaAog CiAjIFRlc3QgbGVmdG92ZXIgem9tYmllIHByb2Nlc3MgKEJaIDI0Mzg0NSkuCiAjPWZlZG9yYXRl c3QKLVBhdGNoMDI3OiBnZGItNi41LWJ6MjQzODQ1LXN0YWxlLXRlc3Rpbmctem9tYmllLXRlc3Qu cGF0Y2gKK1BhdGNoMDIyOiBnZGItNi41LWJ6MjQzODQ1LXN0YWxlLXRlc3Rpbmctem9tYmllLXRl c3QucGF0Y2gKIAogIyBOZXcgbG9jYXRpbmcgb2YgdGhlIG1hdGNoaW5nIGJpbmFyaWVzIGZyb20g dGhlIHB1cmUgY29yZSBmaWxlIChidWlsZC1pZCkuCiAjPXB1c2gramFuCi1QYXRjaDAyODogZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorUGF0Y2gwMjM6IGdkYi02LjYtYnVpbGRpZC1sb2Nh dGUucGF0Y2gKIAogIyBGaXggbG9hZGluZyBvZiBjb3JlIGZpbGVzIHdpdGhvdXQgYnVpbGQtaWRz IGJ1dCB3aXRoIGJ1aWxkLWlkcyBpbiBleGVjdXRhYmxlcy4KICMgTG9hZCBzdHJpY3RseSBidWls ZC1pZC1jaGVja2VkIGNvcmUgZmlsZXMgb25seSBpZiBubyBleGVjdXRhYmxlIGlzIHNwZWNpZmll ZAogIyAoSmFuIEtyYXRvY2h2aWwsIFJIIEJaIDEzMzk4NjIpLgogIz1wdXNoK2phbgotUGF0Y2gw Mjk6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1pZHMucGF0Y2gKK1BhdGNo MDI0OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXNvbGliLW1pc3NpbmctaWRzLnBhdGNoCiAKICM9 cHVzaCtqYW4KLVBhdGNoMDMwOiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAorUGF0 Y2gwMjU6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCiAKICMgRml4IGRpc3BsYXlp bmcgb2YgbnVtZXJpYyBjaGFyIGFycmF5cyBhcyBzdHJpbmdzIChCWiAyMjQxMjgpLgogIz1mZWRv cmF0ZXN0OiBCdXQgaXQgaXMgZmFpbGluZyBhbnl3YXksIG9uZSBzaG91bGQgY2hlY2sgdGhlIGJl aGF2aW9yIG1vcmUuCi1QYXRjaDAzMTogZ2RiLTYuNy1jaGFyc2lnbi10ZXN0LnBhdGNoCitQYXRj aDAyNjogZ2RiLTYuNy1jaGFyc2lnbi10ZXN0LnBhdGNoCiAKICMgVGVzdCBQUEMgaGlkaW5nIG9m IGNhbGwtdm9sYXRpbGUgcGFyYW1ldGVyIHJlZ2lzdGVyLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAz MjogZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi10ZXN0LnBhdGNoCitQYXRjaDAy NzogZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi10ZXN0LnBhdGNoCiAKICMgVGVz dHN1aXRlIGZpeGVzIGZvciBtb3JlIHN0YWJsZS9jb21wYXJhYmxlIHJlc3VsdHMuCiAjPWZlZG9y YXRlc3QKLVBhdGNoMDMzOiBnZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAor UGF0Y2gwMjg6IGdkYi02LjctdGVzdHN1aXRlLXN0YWJsZS1yZXN1bHRzLnBhdGNoCiAKICMgVGVz dCBpYTY0IG1lbW9yeSBsZWFrcyBvZiB0aGUgY29kZSB1c2luZyBsaWJ1bndpbmQuCiAjPWZlZG9y YXRlc3QKLVBhdGNoMDM0OiBnZGItNi41LWlhNjQtbGlidW53aW5kLWxlYWstdGVzdC5wYXRjaAor UGF0Y2gwMjk6IGdkYi02LjUtaWE2NC1saWJ1bndpbmQtbGVhay10ZXN0LnBhdGNoCiAKICMgVGVz dCBoaWRpbmcgdW5leHBlY3RlZCBicmVha3BvaW50cyBvbiBpbnRlbnRpb25hbCBzdGVwIGNvbW1h bmRzLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAzNTogZ2RiLTYuNS1taXNzZWQtdHJhcC1vbi1zdGVw LXRlc3QucGF0Y2gKK1BhdGNoMDMwOiBnZGItNi41LW1pc3NlZC10cmFwLW9uLXN0ZXAtdGVzdC5w YXRjaAogCiAjIFRlc3QgZ2NvcmUgbWVtb3J5IGFuZCB0aW1lIHJlcXVpcmVtZW50cyBmb3IgbGFy Z2UgaW5mZXJpb3JzLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAzNjogZ2RiLTYuNS1nY29yZS1idWZm ZXItbGltaXQtdGVzdC5wYXRjaAorUGF0Y2gwMzE6IGdkYi02LjUtZ2NvcmUtYnVmZmVyLWxpbWl0 LXRlc3QucGF0Y2gKIAogIyBUZXN0IEdDT1JFIGZvciBzaG1pZCAwIHNoYXJlZCBtZW1vcnkgbWFw cGluZ3MuCiAjPWZlZG9yYXRlc3Q6IEJ1dCBpdCBpcyBicm9rZW4gYW55d2F5LCBzb21ldGltZXMg dGhlIGNhc2UgYmVpbmcgdGVzdGVkIGlzIG5vdCByZXByb2R1Y2libGUuCi1QYXRjaDAzNzogZ2Ri LTYuMy1tYXBwaW5nLXplcm8taW5vZGUtdGVzdC5wYXRjaAorUGF0Y2gwMzI6IGdkYi02LjMtbWFw cGluZy16ZXJvLWlub2RlLXRlc3QucGF0Y2gKIAogIyBUZXN0IGEgY3Jhc2ggb24gYGZvY3VzIGNt ZCcsIGBmb2N1cyBwcmV2JyBjb21tYW5kcy4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMzg6IGdkYi02 LjMtZm9jdXMtY21kLXByZXYtdGVzdC5wYXRjaAorUGF0Y2gwMzM6IGdkYi02LjMtZm9jdXMtY21k LXByZXYtdGVzdC5wYXRjaAogCiAjIFRlc3QgdmFyaW91cyBmb3JtcyBvZiB0aHJlYWRzIHRyYWNr aW5nIGFjcm9zcyBleGVjKCkgKEJaIDQ0Mjc2NSkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDM5OiBn ZGItNi44LWJ6NDQyNzY1LXRocmVhZGVkLWV4ZWMtdGVzdC5wYXRjaAorUGF0Y2gwMzQ6IGdkYi02 LjgtYno0NDI3NjUtdGhyZWFkZWQtZXhlYy10ZXN0LnBhdGNoCiAKICMgVGVzdCBhIGNyYXNoIG9u IGxpYnJhcmllcyBtaXNzaW5nIHRoZSAudGV4dCBzZWN0aW9uLgogIz1mZWRvcmF0ZXN0Ci1QYXRj aDA0MDogZ2RiLTYuNS1zZWN0aW9uLW51bS1maXh1cC10ZXN0LnBhdGNoCitQYXRjaDAzNTogZ2Ri LTYuNS1zZWN0aW9uLW51bS1maXh1cC10ZXN0LnBhdGNoCiAKICMgRml4IHJlc29sdmluZyBvZiB2 YXJpYWJsZXMgYXQgbG9jYXRpb25zIGxpc3RzIGluIHByZWxpbmtlZCBsaWJzIChCWiA0NjY5MDEp LgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA0MTogZ2RiLTYuOC1iejQ2NjkwMS1iYWNrdHJhY2UtZnVs bC1wcmVsaW5rZWQucGF0Y2gKK1BhdGNoMDM2OiBnZGItNi44LWJ6NDY2OTAxLWJhY2t0cmFjZS1m dWxsLXByZWxpbmtlZC5wYXRjaAogCiAjIE5ldyB0ZXN0IGZvciBzdGVwLXJlc3VtZSBicmVha3Bv aW50IHBsYWNlZCBpbiBtdWx0aXBsZSB0aHJlYWRzIGF0IG9uY2UuCiAjPWZlZG9yYXRlc3QKLVBh dGNoMDQyOiBnZGItc2ltdWx0YW5lb3VzLXN0ZXAtcmVzdW1lLWJyZWFrcG9pbnQtdGVzdC5wYXRj aAorUGF0Y2gwMzc6IGdkYi1zaW11bHRhbmVvdXMtc3RlcC1yZXN1bWUtYnJlYWtwb2ludC10ZXN0 LnBhdGNoCiAKICMgRml4IEdOVS9MaW51eCBjb3JlIG9wZW46IENhbid0IHJlYWQgcGF0aG5hbWUg Zm9yIGxvYWQgbWFwOiBJbnB1dC9vdXRwdXQgZXJyb3IuCiAjIEZpeCByZWdyZXNzaW9uIG9mIHVu ZGlzcGxheWVkIG1pc3Npbmcgc2hhcmVkIGxpYnJhcmllcyBjYXVzZWQgYnkgYSBmaXggZm9yLgog Iz1mZWRvcmF0ZXN0OiBJdCBzaG91bGQgYmUgaW4gZ2xpYmM6IGxpYmMtYWxwaGE6IDwyMDA5MTAw NDE2MTcwNi5HQTI3NDUwQC4qPgotUGF0Y2gwNDM6IGdkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5n LnBhdGNoCi0KLSMgRml4IHN0ZXBwaW5nIHdpdGggT01QIHBhcmFsbGVsIEZvcnRyYW4gc2VjdGlv bnMgKEJaIDUzMzE3NikuCi0jPXB1c2gramFuOiBJdCByZXF1aXJlcyBzb21lIGJldHRlciBEV0FS RiBhbm5vdGF0aW9ucy4KLVBhdGNoMDQ0OiBnZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5w YXRjaAorUGF0Y2gwMzg6IGdkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoCiAKICMgV29y a2Fyb3VuZCBjY2FjaGUgbWFraW5nIGxpbmVubyBub24temVybyBmb3IgY29tbWFuZC1saW5lIGRl ZmluaXRpb25zLgogIz1mZWRvcmF0ZXN0OiBjY2FjaGUgaXMgcmFyZWx5IHVzZWQgYW5kIGl0IGlz IGV2ZW4gZml4ZWQgbm93LgotUGF0Y2gwNDU6IGdkYi1jY2FjaGUtd29ya2Fyb3VuZC5wYXRjaAot Ci0jPXB1c2gramFuOiBNYXkgZ2V0IG9ic29sZXRlZCBieSBUb20ncyB1bnJlbG9jYXRlZCBvYmpm aWxlcyBwYXRjaC4KLVBhdGNoMDQ2OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKLQotIz1w dXNoK2phbjogQnJlYWtwb2ludHMgZGlzYWJsaW5nIG1hdGNoaW5nIHNob3VsZCBub3QgYmUgYmFz ZWQgb24gYWRkcmVzcy4KLVBhdGNoMDQ3OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNh YmxlZC5wYXRjaAorUGF0Y2gwMzk6IGdkYi1jY2FjaGUtd29ya2Fyb3VuZC5wYXRjaAogCiAjIFRl c3RjYXNlIGZvciAiRG8gbm90IG1ha2UgdXAgbGluZSBpbmZvcm1hdGlvbiIgZml4IGJ5IERhbmll bCBKYWNvYm93aXR6LgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA0ODogZ2RiLWxpbmVuby1tYWtldXAt dGVzdC5wYXRjaAorUGF0Y2gwNDA6IGdkYi1saW5lbm8tbWFrZXVwLXRlc3QucGF0Y2gKIAogIyBU ZXN0IHBvd2VyNyBwcGMgZGlzYXNzZW1ibHkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDQ5OiBnZGIt cHBjLXBvd2VyNy10ZXN0LnBhdGNoCi0KLSMgV29ya2Fyb3VuZCBub24tc3RvcCBtb3JpYnVuZCBs b2NhdGlvbnMgZXhwbG9pdGVkIGJ5IGtlcm5lbCB1dHJhY2UgKEJaIDU5MDYyMykuCi0jPXB1c2gr amFuOiBDdXJyZW50bHkgaXQgaXMgc3RpbGwgbm90IGZ1bGx5IHNhZmUuCi1QYXRjaDA1MDogZ2Ri LW1vcmlidW5kLXV0cmFjZS13b3JrYXJvdW5kLnBhdGNoCitQYXRjaDA0MTogZ2RiLXBwYy1wb3dl cjctdGVzdC5wYXRjaAogCiAjIEZpeCBmb2xsb3ctZXhlYyBmb3IgQysrIHByb2dyYW1zIChidWdy ZXBvcnRlZCBieSBNYXJ0aW4gU3RyYW5za3kpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA1MTogZ2Ri LWFyY2hlci1uZXh0LW92ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2gKK1BhdGNoMDQyOiBnZGItYXJj aGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAogCiAjIEJhY2twb3J0IERXQVJGLTQg c3VwcG9ydCAoQlogNjAxODg3LCBUb20gVHJvbWV5KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNTI6 IGdkYi1iejYwMTg4Ny1kd2FyZjQtcmgtdGVzdC5wYXRjaAotCi0jPXB1c2gramFuCi1QYXRjaDA1 MzogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAorUGF0Y2gwNDM6IGdk Yi1iejYwMTg4Ny1kd2FyZjQtcmgtdGVzdC5wYXRjaAogCiAjIFdvcmthcm91bmQgbGlicnBtIEJa IDY0MzAzMSBkdWUgdG8gaXRzIHVuZXhwZWN0ZWQgZXhpdCgpIGNhbGxzIChCWiA2NDI4NzkpLgog Iz1wdXNoK2phbgotUGF0Y2gwNTQ6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxpYnJwbS13 b3JrYXJvdW5kLnBhdGNoCitQYXRjaDA0NDogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGli cnBtLXdvcmthcm91bmQucGF0Y2gKIAogIyBbZGVsYXllZC1zeW1maWxlXSBUZXN0IGEgYmFja3Ry YWNlIHJlZ3Jlc3Npb24gb24gQ0ZJcyB3aXRob3V0IERJRSAoQlogNjE0NjA0KS4KICM9ZmVkb3Jh dGVzdAotUGF0Y2gwNTU6IGdkYi10ZXN0LWJ0LWNmaS13aXRob3V0LWRpZS5wYXRjaAorUGF0Y2gw NDU6IGdkYi10ZXN0LWJ0LWNmaS13aXRob3V0LWRpZS5wYXRjaAogCiAjIFZlcmlmeSBHREIgUHl0 aG9uIGJ1aWx0LWluIGZ1bmN0aW9uIGdkYi5zb2xpYl9hZGRyZXNzIGV4aXN0cyAoQlogIyA2MzQx MDgpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA1NjogZ2RiLWJ6NjM0MTA4LXNvbGliX2FkZHJlc3Mu cGF0Y2gKK1BhdGNoMDQ2OiBnZGItYno2MzQxMDgtc29saWJfYWRkcmVzcy5wYXRjaAogCiAjIE5l dyB0ZXN0IGdkYi5hcmNoL3g4Nl82NC1waWQwLWNvcmUuZXhwIGZvciBrZXJuZWwgUElEIDAgY29y ZXMgKEJaIDYxMTQzNSkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDU3OiBnZGItdGVzdC1waWQwLWNv cmUucGF0Y2gKK1BhdGNoMDQ3OiBnZGItdGVzdC1waWQwLWNvcmUucGF0Y2gKIAogIyBbYXJjaGVy LXRyb21leS1kZWxheWVkLXN5bWZpbGVdIE5ldyB0ZXN0IGdkYi5kd2FyZjIvZHcyLWFyYW5nZXMu ZXhwLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA1ODogZ2RiLXRlc3QtZHcyLWFyYW5nZXMucGF0Y2gK K1BhdGNoMDQ4OiBnZGItdGVzdC1kdzItYXJhbmdlcy5wYXRjaAogCiAjIFthcmNoZXIta2VpdGhz LWV4cHItY3VtdWxhdGl2ZSt1cHN0cmVhbV0gSW1wb3J0IEMrKyB0ZXN0Y2FzZXMuCiAjPWZlZG9y YXRlc3QKLVBhdGNoMDU5OiBnZGItdGVzdC1leHByLWN1bXVsYXRpdmUtYXJjaGVyLnBhdGNoCitQ YXRjaDA0OTogZ2RiLXRlc3QtZXhwci1jdW11bGF0aXZlLWFyY2hlci5wYXRjaAogCiAjIEZpeCBy ZWdyZXNzaW9ucyBvbiBDKysgbmFtZXMgcmVzb2x2aW5nIChQUiAxMTczNCwgUFIgMTIyNzMsIEtl aXRoIFNlaXR6KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNjA6IGdkYi1waHlzbmFtZS1wcjExNzM0 LXRlc3QucGF0Y2gKK1BhdGNoMDUwOiBnZGItcGh5c25hbWUtcHIxMTczNC10ZXN0LnBhdGNoCiAK ICMgRml4IHJlZ3Jlc3Npb25zIG9uIEMrKyBuYW1lcyByZXNvbHZpbmcgKFBSIDExNzM0LCBQUiAx MjI3MywgS2VpdGggU2VpdHopLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA2MTogZ2RiLXBoeXNuYW1l LXByMTIyNzMtdGVzdC5wYXRjaAorUGF0Y2gwNTE6IGdkYi1waHlzbmFtZS1wcjEyMjczLXRlc3Qu cGF0Y2gKIAogIyBUZXN0IEdEQiBvcGNvZGVzLyBkaXNhc3NlbWJseSBvZiBJbnRlbCBJdnkgQnJp ZGdlIGluc3RydWN0aW9ucyAoQlogNjk2ODkwKS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNjI6IGdk Yi10ZXN0LWl2eS1icmlkZ2UucGF0Y2gKK1BhdGNoMDUyOiBnZGItdGVzdC1pdnktYnJpZGdlLnBh dGNoCiAKICMgSGFjayBmb3IgcHJvcGVyIFBJRSBydW4gb2YgdGhlIHRlc3RzdWl0ZS4KICM9ZmVk b3JhdGVzdAotUGF0Y2gwNjM6IGdkYi1ydW50ZXN0LXBpZS1vdmVycmlkZS5wYXRjaAotCi0jIFBy aW50IHJlYXNvbnMgZm9yIGZhaWxlZCBhdHRhY2gvc3Bhd24gaW5jbC4gU0VMaW51eCBkZW55X3B0 cmFjZSAoQlogNzg2ODc4KS4KLSM9cHVzaCtqYW4KLVBhdGNoMDY0OiBnZGItYXR0YWNoLWZhaWwt cmVhc29ucy01b2Y1LnBhdGNoCitQYXRjaDA1MzogZ2RiLXJ1bnRlc3QtcGllLW92ZXJyaWRlLnBh dGNoCiAKICMgV29ya2Fyb3VuZCBQUiBsaWJjLzE0MTY2IGZvciBpbmZlcmlvciBjYWxscyBvZiBz dHJzdHIuCiAjPWZlZG9yYXRlc3Q6IENvbXBhdGliaWxpdHkgd2l0aCBSSEVMcyAodW5jaGVja2Vk IHdoaWNoIG9uZXMpLgotUGF0Y2gwNjU6IGdkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRj aAorUGF0Y2gwNTQ6IGdkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaAogCiAjIEluY2x1 ZGUgdGVzdGNhc2UgZm9yIGBVbmFibGUgdG8gc2VlIGEgdmFyaWFibGUgaW5zaWRlIGEgbW9kdWxl IChYTEYpJyAoQlogODIzNzg5KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNjY6IGdkYi1yaGVsNS45 LXRlc3RjYXNlLXhsZi12YXItaW5zaWRlLW1vZC5wYXRjaAorUGF0Y2gwNTU6IGdkYi1yaGVsNS45 LXRlc3RjYXNlLXhsZi12YXItaW5zaWRlLW1vZC5wYXRjaAogCiAjIFRlc3RjYXNlIGZvciBgU2V0 dGluZyBzb2xpYi1hYnNvbHV0ZS1wcmVmaXggYnJlYWtzIHZEU08nIChCWiA4MTgzNDMpLgogIz1m ZWRvcmF0ZXN0Ci1QYXRjaDA2NzogZ2RiLXJoYnotODE4MzQzLXNldC1zb2xpYi1hYnNvbHV0ZS1w cmVmaXgtdGVzdGNhc2UucGF0Y2gKK1BhdGNoMDU2OiBnZGItcmhiei04MTgzNDMtc2V0LXNvbGli LWFic29sdXRlLXByZWZpeC10ZXN0Y2FzZS5wYXRjaAogCiAjIEltcG9ydCByZWdyZXNzaW9uIHRl c3QgZm9yIGBnZGIvZmluZHZhci5jOjQxNzogaW50ZXJuYWwtZXJyb3I6CiAjIHJlYWRfdmFyX3Zh bHVlOiBBc3NlcnRpb24gYGZyYW1lJyBmYWlsZWQuJyAoUkggQlogOTQ3NTY0KSBmcm9tIFJIRUwg Ni41LgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA2ODogZ2RiLXJoYno5NDc1NjQtZmluZHZhci1hc3Nl cnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNlLnBhdGNoCi0KLSMgRml4IGNyYXNoIG9mIC1yZWFk bm93IC91c3IvbGliL2RlYnVnL3Vzci9iaW4vZ25hdGJpbmQuZGVidWcgKEJaIDEwNjkyMTEpLgot Iz1wdXNoK2phbgotUGF0Y2gwNjk6IGdkYi1nbmF0LWR3YXJmLWNyYXNoLTNvZjMucGF0Y2gKK1Bh dGNoMDU3OiBnZGItcmhiejk0NzU2NC1maW5kdmFyLWFzc2VydGlvbi1mcmFtZS1mYWlsZWQtdGVz dGNhc2UucGF0Y2gKIAogIyBGaXggJ21lbW9yeSBsZWFrIGluIGluZnB5X3JlYWRfbWVtb3J5KCkn IChSSCBCWiAxMDA3NjE0KQogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA3MDogZ2RiLXJoYnoxMDA3NjE0 LW1lbWxlYWstaW5mcHlfcmVhZF9tZW1vcnktdGVzdC5wYXRjaAorUGF0Y2gwNTg6IGdkYi1yaGJ6 MTAwNzYxNC1tZW1sZWFrLWluZnB5X3JlYWRfbWVtb3J5LXRlc3QucGF0Y2gKIAogIyBGaXggJ2dk YiBnaXZlcyBoaWdobHkgbWlzbGVhZGluZyBlcnJvciB3aGVuIGRlYnVnaW5mbyBwa2cgaXMgcHJl c2VudCwKICMgYnV0IG5vdCBjb3JyZXNwb25kaW5nIGJpbmFyeSBwa2cnIChSSCBCWiA5ODExNTQp LgogIz1wdXNoK2phbgotUGF0Y2gwNzE6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtbWlzbGVhZGlu Zy13YXJuaW5nLW1pc3NpbmctZGVidWdpbmZvLXJoYno5ODExNTQucGF0Y2gKLQotIz1mZWRvcmF0 ZXN0Ci1QYXRjaDA3MjogZ2RiLWFyY2hlci12bGEtdGVzdHMucGF0Y2gKLQotIz1mZWRvcmF0ZXN0 Ci1QYXRjaDA3MzogZ2RiLXZsYS1pbnRlbC10ZXN0cy5wYXRjaAotCi0jIENvbnRpbnVlIGJhY2t0 cmFjZSBldmVuIGlmIGEgZnJhbWUgZmlsdGVyIHRocm93cyBhbiBleGNlcHRpb24gKFBoaWwgTXVs ZG9vbikuCi0jPXB1c2gKLVBhdGNoMDc0OiBnZGItYnRyb2J1c3QucGF0Y2gKK1BhdGNoMDU5OiBn ZGItNi42LWJ1aWxkaWQtbG9jYXRlLW1pc2xlYWRpbmctd2FybmluZy1taXNzaW5nLWRlYnVnaW5m by1yaGJ6OTgxMTU0LnBhdGNoCiAKICMgRGlzcGxheSBGb3J0cmFuIHN0cmluZ3MgaW4gYmFja3Ry YWNlcy4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNzU6IGdkYi1mb3J0cmFuLWZyYW1lLXN0cmluZy5w YXRjaAorUGF0Y2gwNjA6IGdkYi1mb3J0cmFuLWZyYW1lLXN0cmluZy5wYXRjaAogCiAjIFRlc3Rj YXNlIGZvciAnW1NBUF0gUmVjdXJzaXZlIGRsb3BlbiBjYXVzZXMgU0FQIEhBTkEgaW5zdGFsbGVy IHRvCiAjIGNyYXNoLicgKFJIIEJaIDExNTYxOTIpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA3Njog Z2RiLXJoYnoxMTU2MTkyLXJlY3Vyc2l2ZS1kbG9wZW4tdGVzdC5wYXRjaAotCi0jIEZpeCBqaXQt cmVhZGVyLmggZm9yIG11bHRpLWxpYi4KLSM9cHVzaCtqYW4KLVBhdGNoMDc3OiBnZGItaml0LXJl YWRlci1tdWx0aWxpYi5wYXRjaAorUGF0Y2gwNjE6IGdkYi1yaGJ6MTE1NjE5Mi1yZWN1cnNpdmUt ZGxvcGVuLXRlc3QucGF0Y2gKIAogIyBGaXggJ2BjYXRjaCBzeXNjYWxsJyBkb2Vzbid0IHdvcmsg Zm9yIHBhcmVudCBhZnRlciBgZm9yaycgaXMgY2FsbGVkJwogIyAoUGhpbGlwcGUgV2Fyb3F1aWVy cywgUkggQlogMTE0OTIwNSkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDc4OiBnZGItcmhiejExNDky MDUtY2F0Y2gtc3lzY2FsbC1hZnRlci1mb3JrLXRlc3QucGF0Y2gKK1BhdGNoMDYyOiBnZGItcmhi ejExNDkyMDUtY2F0Y2gtc3lzY2FsbC1hZnRlci1mb3JrLXRlc3QucGF0Y2gKIAogIyBGaXggJ2Jh Y2twb3J0IEdEQiA3LjQgZml4IHRvIFJIRUwgNi42IEdEQicgW09yaWdpbmFsIFNvdXJjZXdhcmUg YnVnCiAjIGRlc2NyaXB0aW9uOiAnQysrIChhbmQgb2JqYyk6IEludGVybmFsIGVycm9yIG9uIHVu cXVhbGlmaWVkIG5hbWUKICMgcmUtc2V0JywgUFIgMTE2NTddIChSSCBCWiAxMTg2NDc2KS4KICM9 ZmVkb3JhdGVzdAotUGF0Y2gwNzk6IGdkYi1yaGJ6MTE4NjQ3Ni1pbnRlcm5hbC1lcnJvci11bnF1 YWxpZmllZC1uYW1lLXJlLXNldC10ZXN0LnBhdGNoCitQYXRjaDA2MzogZ2RiLXJoYnoxMTg2NDc2 LWludGVybmFsLWVycm9yLXVucXVhbGlmaWVkLW5hbWUtcmUtc2V0LXRlc3QucGF0Y2gKIAogIyBU ZXN0ICdpbmZvIHR5cGUtcHJpbnRlcnMnIFB5dGhvbiBlcnJvciAoUkggQlogMTM1MDQzNikuCiAj PWZlZG9yYXRlc3QKLVBhdGNoMDgwOiBnZGItcmhiejEzNTA0MzYtdHlwZS1wcmludGVycy1lcnJv ci5wYXRjaAorUGF0Y2gwNjQ6IGdkYi1yaGJ6MTM1MDQzNi10eXBlLXByaW50ZXJzLWVycm9yLnBh dGNoCiAKICMgRml4ICdbcHBjNjRdIGFuZCBbczM5MHhdIHdyb25nIHByb2xvZ3VlIHNraXAgb24g LU8yIC1nIGNvZGUnIChKYW4KICMgS3JhdG9jaHZpbCwgUkggQlogMTA4NDQwNCkuCiAjPWZlZG9y YXRlc3QKLVBhdGNoMDgxOiBnZGItcmhiejEwODQ0MDQtcHBjNjQtczM5MHgtd3JvbmctcHJvbG9n dWUtc2tpcC1PMi1nLTNvZjMucGF0Y2gKLQotIyBOZXZlciBraWxsIFBJRCBvbjogZ2RiIGV4ZWMg UElEIChKYW4gS3JhdG9jaHZpbCwgUkggQlogMTIxOTc0NykuCi0jPXB1c2gramFuCi1QYXRjaDA4 MjogZ2RiLWJ6MTIxOTc0Ny1hdHRhY2gta2lsbHMucGF0Y2gKK1BhdGNoMDY1OiBnZGItcmhiejEw ODQ0MDQtcHBjNjQtczM5MHgtd3JvbmctcHJvbG9ndWUtc2tpcC1PMi1nLTNvZjMucGF0Y2gKIAog IyBGb3JjZSBsaWJuY3Vyc2VzdyBvdmVyIGxpYm5jdXJzZXMgdG8gbWF0Y2ggdGhlIGluY2x1ZGVz IChSSCBCWiAxMjcwNTM0KS4KICM9cHVzaCtqYW4KLVBhdGNoMDgzOiBnZGItZmVkb3JhLWxpYm5j dXJzZXN3LnBhdGNoCitQYXRjaDA2NjogZ2RiLWZlZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaAogCiAj IFRlc3QgY2xmbHVzaG9wdCBpbnN0cnVjdGlvbiBkZWNvZGUgKGZvciBSSCBCWiAxMjYyNDcxKS4K ICM9ZmVkb3JhdGVzdAotUGF0Y2gwODQ6IGdkYi1vcGNvZGVzLWNsZmx1c2hvcHQtdGVzdC5wYXRj aAotCi0jIFtyaGVsNl0gRFRTIGJhY2t3YXJkIFB5dGhvbiBjb21wYXRpYmlsaXR5IEFQSSAoQlog MTAyMDAwNCwgUGhpbCBNdWxkb29uKS4KLSM9ZmVkb3JhCi1QYXRjaDA4NTogZ2RiLWR0cy1yaGVs Ni1weXRob24tY29tcGF0LnBhdGNoCitQYXRjaDA2NzogZ2RiLW9wY29kZXMtY2xmbHVzaG9wdC10 ZXN0LnBhdGNoCiAKICMgW1NDTF0gU2tpcCBkZXByZWNhdGVkIC5nZGJfaW5kZXggd2FybmluZyBm b3IgUmVkIEhhdCBidWlsdCBmaWxlcyAoQlogOTUzNTg1KS4KICM9cHVzaCtqYW4KLVBhdGNoMDg2 OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS1zY2wucGF0Y2gKLQotIyBNYWtlIHRoZSBHREIg cXVpdCBwcm9jZXNzaW5nIG5vbi1hYm9ydGFibGUgdG8gY2xlYW51cCBldmVyeXRoaW5nIHByb3Bl cmx5LgotIz1mZWRvcmE6IEl0IHdhcyB1c2VmdWwgb25seSBhZnRlciBnZGItNi44LWF0dGFjaC1z aWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2ggLgotUGF0Y2gwODc6IGdkYi02LjgtcXVpdC1u ZXZlci1hYm9ydHMucGF0Y2gKK1BhdGNoMDY4OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS1z Y2wucGF0Y2gKIAogIyBbYWFyY2g2NF0gRml4IGhhcmR3YXJlIHdhdGNocG9pbnRzIChSSCBCWiAx MjYxNTY0KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwODg6IGdkYi1yaGJ6MTI2MTU2NC1hYXJjaDY0 LWh3LXdhdGNocG9pbnQtdGVzdC5wYXRjaAorUGF0Y2gwNjk6IGdkYi1yaGJ6MTI2MTU2NC1hYXJj aDY0LWh3LXdhdGNocG9pbnQtdGVzdC5wYXRjaAogCiAjIEFkZCBtZXNzYWdlcyBzdWdnZXN0aW5n IG1vcmUgcmVjZW50IFJIRUwgZ2Ric2VydmVyIChSSCBCWiAxMzIxMTE0KS4KICM9ZmVkb3JhCi1Q YXRjaDA4OTogZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKK1BhdGNoMDcwOiBnZGItY29udGFp bmVyLXJoLXBrZy5wYXRjaAogCiAjIE5ldyB0ZXN0IGZvciBQeXRob24gIkNhbm5vdCBsb2NhdGUg b2JqZWN0IGZpbGUgZm9yIGJsb2NrIiAoZm9yIFJIIEJaIDEzMjU3OTUpLgogIz1mZWRvcmF0ZXN0 Ci1QYXRjaDA5MDogZ2RiLXJoYnoxMzI1Nzk1LWZyYW1lZmlsdGVycy10ZXN0LnBhdGNoCitQYXRj aDA3MTogZ2RiLXJoYnoxMzI1Nzk1LWZyYW1lZmlsdGVycy10ZXN0LnBhdGNoCiAKICMgW2R0cytl bDddIFt4ODYqXSBCdW5kbGUgbGludXhfcGVyZi5oIGZvciBsaWJpcHQgKFJIIEJaIDEyNTY1MTMp LgogIz1mZWRvcmEKLVBhdGNoMDkxOiBnZGItbGludXhfcGVyZi1idW5kbGUucGF0Y2gKK1BhdGNo MDcyOiBnZGItbGludXhfcGVyZi1idW5kbGUucGF0Y2gKIAogIyBGaXggZ2RiLWhlYWRsZXNzIC91 c3IvYmluLyBleGVjdXRhYmxlcyAoQlogMTM5MDI1MSkuCiAjCkBAIC0zNzQsNTcgKzMwNCw3MSBA QCBQYXRjaDA5MTogZ2RiLWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoCiAjCiAjICAgaHR0cHM6Ly9m ZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0NoYW5nZXMvTWluaW1hbF9HREJfaW5fYnVpbGRyb290CiAj PWZlZG9yYQotUGF0Y2gwOTI6IGdkYi1saWJleGVjLWFkZC1pbmRleC5wYXRjaAorUGF0Y2gwNzM6 IGdkYi1saWJleGVjLWFkZC1pbmRleC5wYXRjaAogCiAjIE5ldyB0ZXN0Y2FzZSBmb3I6IEZpeCA8 dGFiPi1jb21wbGV0aW9uIGNyYXNoIChHYXJ5IEJlbnNvbiwgUkggQlogMTM5ODM4NykuCiAjPWZl ZG9yYXRlc3QKLVBhdGNoMDkzOiBnZGItcmhiejEzOTgzODctdGFiLWNyYXNoLXRlc3QucGF0Y2gK LQotIyBQeXRob24gcGF0Y2hlcyBvZjogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1By b2plY3RBcmNoZXIKLSM9cHVzaAotUGF0Y2gwOTQ6IGdkYi1hcmNoZXIucGF0Y2gKLQotIyBSZXZl cnQgdXBzdHJlYW0gY29tbWl0IDQ2OTQxMmRkOWNjYzRkZTU4NzRmZDMyOTliMTA1ODMzZjM2YjM0 Y2QKLVBhdGNoMDk1OiBnZGItdmxhLWludGVsLWZpeC1wcmludC1jaGFyLWFycmF5LnBhdGNoCitQ YXRjaDA3NDogZ2RiLXJoYnoxMzk4Mzg3LXRhYi1jcmFzaC10ZXN0LnBhdGNoCiAKICMgW3MzOTB4 XSBCYWNrcG9ydCBhcmNoMTIgaW5zdHJ1Y3Rpb25zIGRlY29kaW5nIChSSCBCWiAxNTUzMTA0KS4K ICMgPWZlZG9yYXRlc3QKLVBhdGNoMDk2OiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJjaDEyLXRl c3QucGF0Y2gKK1BhdGNoMDc1OiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJjaDEyLXRlc3QucGF0 Y2gKIAogIyBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBhZGFfZm9sZF9uYW1lLnBhdGNoIChSSCBC WiAxOTA1OTk2KQogIyBVcHN0cmVhbSBwYXRjaCBwcm9wb3NhbDogaHR0cHM6Ly9zb3VyY2V3YXJl Lm9yZy9waXBlcm1haWwvZ2RiLXBhdGNoZXMvMjAyMC1EZWNlbWJlci8xNzM5MzUuaHRtbAogIyA9 ZmVkb3JhdGVzdAotUGF0Y2gwOTc6IGdkYi1yaGJ6MTkwNTk5Ni1maXgtb2ZmLWJ5LW9uZS1lcnJv ci1pbi1hZGFfZm9sZF9uYW1lLnBhdGNoCitQYXRjaDA3NjogZ2RiLXJoYnoxOTA1OTk2LWZpeC1v ZmYtYnktb25lLWVycm9yLWluLWFkYV9mb2xkX25hbWUucGF0Y2gKIAogIyBCYWNrcG9ydCBmaXgg Zm9yIGxpYnN0ZGMrKyBhc3NlcnQgd2hlbiBwZXJmb3JtaW5nIHRhYiBjb21wbGV0aW9uCiAjIChS SCBCWiAxOTEyOTg1KS4KLVBhdGNoMDk4OiBnZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFzc2Vy dC5wYXRjaAotCi0jIEJhY2twb3J0IGZpeCBmb3IgcmF3aGlkZSBidWlsZCBlcnJvciAoUkggQlog MTkzMDUyOCkuCi1QYXRjaDA5OTogZ2RiLXJoYnoxOTMwNTI4LWZpeC1nbnVsaWItYnVpbGQtZXJy b3IucGF0Y2gKLQotIyBbYWFyY2g2NF0gQmFja3BvcnQgZml4IGZvciBhYXJjaDY0LWxpbnV4LWh3 LXBvaW50LmMgYnVpbGQgcHJvYmxlbQotIyAoUkggQlogMTkzMjY0NSkuCi1QYXRjaDEwMDogZ2Ri LXJoYnoxOTMyNjQ1LWFhcmNoNjQtcHRyYWNlLWhlYWRlci1vcmRlci5wYXRjaAorUGF0Y2gwNzc6 IGdkYi1yaGJ6MTkxMjk4NS1saWJzdGRjKystYXNzZXJ0LnBhdGNoCiAKICMgQmFja3BvcnQgZml4 IGZvciBmcmFtZV9pZF9wIGFzc2VydGlvbiBmYWlsdXJlIChSSCBCWiAxOTA5OTAyKS4KLVBhdGNo MTAxOiBnZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMS5wYXRjaAorUGF0Y2gwNzg6 IGdkYi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCiAKICMgQmFja3BvcnQg cGF0Y2ggIzIgd2hpY2ggZml4ZXMgYSBmcmFtZV9pZF9wIGFzc2VydGlvbiBmYWlsdXJlIChSSCBC WiAxOTA5OTAyKS4KLVBhdGNoMTAyOiBnZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQt Mi5wYXRjaAorUGF0Y2gwNzk6IGdkYi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0yLnBh dGNoCiAKICMgQmFja3BvcnQgY2hhbmdlIHdoaWNoIGZpeGVzIGdkYnNlcnZlciB0ZXN0aW5nIGhh bmcgb24gZjM0IGFuZCByYXdoaWRlLgotUGF0Y2gxMDM6IGdkYi1yaGJ6MTk0MTA4MC1maXgtZ2Ri c2VydmVyLWhhbmcucGF0Y2gKK1BhdGNoMDgwOiBnZGItcmhiejE5NDEwODAtZml4LWdkYnNlcnZl ci1oYW5nLnBhdGNoCiAKICMgQmFja3BvcnQgIkRpc2FibGUgYnJhY2tldGVkIHBhc3RlIG1vZGUg aW4gR0RCIHRlc3RzIgogIyAoVG9tIFRyb21leSkKLVBhdGNoMTA0OiB0ZXN0aW5nLWN1c3RvbS1p bnB1dHJjLnBhdGNoCi0KLSMgQmFja3BvcnQgIkhhbmRsZSBEV19UQUdfdHlwZV91bml0IGluIHBy b2Nlc3Nfc3ltdGFiX3VuaXQiCi0jIChUb20gZGUgVnJpZXMpCi1QYXRjaDEwNTogcHJvY2Vzc19w c3ltdGFiX2NvbXBfdW5pdC10eXBlLXVuaXQucGF0Y2gKK1BhdGNoMDgxOiB0ZXN0aW5nLWN1c3Rv bS1pbnB1dHJjLnBhdGNoCiAKICMgQmFja3BvcnQgIlNhdmUvcmVzdG9yZSBmaWxlIG9mZnNldCB3 aGlsZSByZWFkaW5nIG5vdGVzIGluIGNvcmUgZmlsZSIKICMgKEtlaXRoIFNlaXR6LCBSSEJaIDE5 MzEzNDQpCi1QYXRjaDEwNjogZ2RiLXJoYnoxOTMxMzQ0LWJmZF9zZWVrLWVsZl9yZWFkX25vdGVz LnBhdGNoCitQYXRjaDA4MjogZ2RiLXJoYnoxOTMxMzQ0LWJmZF9zZWVrLWVsZl9yZWFkX25vdGVz LnBhdGNoCisKKyMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0IHdo aWNoIGNsZWFucyB1cAorIyBhcnJheS9zdHJpbmcgZXhwcmVzc2lvbiBldmFsdWF0aW9uLgorUGF0 Y2gwODM6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Npb24t ZXZhbHVhdGlvbi5wYXRjaAorCisjIFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2Vzcydz IGNvbW1pdCB3aGljaCBtb3ZlcyBGb3J0cmFuCisjIGV4cHJlc3Npb24gaGFuZGxpbmcgdG8gZi1s YW5nLmMuCitQYXRjaDA4NDogZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9ydHJhbi1leHByLWhhbmRs aW5nLnBhdGNoCisKKyMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0 IHdoaWNoIGVsaW1pbmF0ZXMgdW5kZXNpcmFibGUKKyMgd2hpdGVzcGFjZSB3aGVuIHByaW50aW5n IGFycmF5cy4KK1BhdGNoMDg1OiBnZGItcmhiejE5NjQxNjctZm9ydHJhbi13aGl0ZXNwYWNlX2Fy cmF5LnBhdGNoCisKKyMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0 IHdoaWNoIGNoYW5nZXMgZW51bQorIyByYW5nZV90eXBlIGludG8gYSBiaXQgZmllbGQgZW51bS4K K1BhdGNoMDg2OiBnZGItcmhiejE5NjQxNjctY29udmVydC1lbnVtLXJhbmdlX3R5cGUucGF0Y2gK KworIyBbZm9ydHJhbl0gQmFja3BvcnQgQW5kcmV3IEJ1cmdlc3MncyBjb21taXQgd2hpY2ggcmVu YW1lcyBlbnVtCisjIHJhbmdlX3R5cGUgdG8gZW51bSByYW5nZV9mbGFnLgorUGF0Y2gwODc6IGdk Yi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXJhbmdlX3R5cGUtdG8tcmFuZ2VfZmxhZy5wYXRjaAorCisj IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCBhZGRzIHN1 cHBvcnQKKyMgZm9yIGFycmF5IHN0cmlkZXMgaW4gZXhwcmVzc2lvbnMuCitQYXRjaDA4ODogZ2Ri LXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc3RyaWRlcy1pbi1leHByZXNzaW9ucy5wYXRjaAor CisjIFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCBmb3IgRm9ydHJh biBhcnJheQorIyBzbGljZSBzdXBwb3J0CitQYXRjaDA4OTogZ2RiLXJoYnoxOTY0MTY3LWZvcnRy YW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaAorCisjIFtmb3J0cmFuXSBCYWNrcG9ydCBT aW1vbiBNYXJjaGkncyBjb21taXQgd2hpY2ggZml4ZXMgYSAzMi1iaXQgYnVpbGQKKyMgcHJvYmxl bSBpbiBnZGIvZi1sYW5nLmMuCitQYXRjaDA5MDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tZml4 LXR5cGUtZm9ybWF0LW1pc21hdGNoLWluLWYtbGFuZy5jLnBhdGNoCiAKCmRpZmYgLS1naXQgYS9f Z2RiLnNwZWMucGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCmluZGV4IDFi OTY2ZWYuLjNmNDBiYjUgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCisrKyBi L19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCkBAIC04OCwxOSArODgsMyBAQAogJXBhdGNoMDg4IC1w MQogJXBhdGNoMDg5IC1wMQogJXBhdGNoMDkwIC1wMQotJXBhdGNoMDkxIC1wMQotJXBhdGNoMDky IC1wMQotJXBhdGNoMDkzIC1wMQotJXBhdGNoMDk0IC1wMQotJXBhdGNoMDk1IC1wMQotJXBhdGNo MDk2IC1wMQotJXBhdGNoMDk3IC1wMQotJXBhdGNoMDk4IC1wMQotJXBhdGNoMDk5IC1wMQotJXBh dGNoMTAwIC1wMQotJXBhdGNoMTAxIC1wMQotJXBhdGNoMTAyIC1wMQotJXBhdGNoMTAzIC1wMQot JXBhdGNoMTA0IC1wMQotJXBhdGNoMTA1IC1wMQotJXBhdGNoMTA2IC1wMQoKZGlmZiAtLWdpdCBh L19naXRfdXBzdHJlYW1fY29tbWl0IGIvX2dpdF91cHN0cmVhbV9jb21taXQKaW5kZXggOGYyYjc5 Ny4uMDJjMWEwZiAxMDA2NDQKLS0tIGEvX2dpdF91cHN0cmVhbV9jb21taXQKKysrIGIvX2dpdF91 cHN0cmVhbV9jb21taXQKQEAgLTEgKzEgQEAKLTYwNmUzZmQxNDdlZDlhMDBkZjE2NWU0NmYzMGZl NWM0NmRjZGEzNDUKK2NlMzVkNzE2M2U3NzliMTMyMTA1OGIyMmYwMDVjNzBjZTE1MjRiMjUKCmRp ZmYgLS1naXQgYS9fcGF0Y2hfb3JkZXIgYi9fcGF0Y2hfb3JkZXIKaW5kZXggODVhNGE4MS4uN2I4 MWRmNSAxMDA2NDQKLS0tIGEvX3BhdGNoX29yZGVyCisrKyBiL19wYXRjaF9vcmRlcgpAQCAtMSw5 ICsxLDUgQEAKIGdkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKLWdkYi12bGEt aW50ZWwtZm9ydHJhbi1zdHJpZGVzLnBhdGNoCi1nZGItdmxhLWludGVsLXN0cmluZ2J0LWZpeC5w YXRjaAogZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKLWdkYi02LjMtdGVzdC1waWUtMjAw NTAxMDcucGF0Y2gKLWdkYi02LjMtdGVzdC1zZWxmLTIwMDUwMTEwLnBhdGNoCiBnZGItNi4zLXRl c3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaAogZ2RiLTYuMy10ZXN0LW1vdmVkaXItMjAwNTAxMjUu cGF0Y2gKIGdkYi02LjMtdGhyZWFkZWQtd2F0Y2hwb2ludHMyLTIwMDUwMjI1LnBhdGNoCkBAIC0x NSw3ICsxMSw2IEBAIGdkYi02LjUtQkVBLXRlc3RzdWl0ZS5wYXRjaAogZ2RiLTYuNS1sYXN0LWFk ZHJlc3Mtc3BhY2UtYnl0ZS10ZXN0LnBhdGNoCiBnZGItNi41LXJlYWRsaW5lLWxvbmctbGluZS1j cmFzaC10ZXN0LnBhdGNoCiBnZGItNi41LWJ6MjE4Mzc5LXBwYy1zb2xpYi10cmFtcG9saW5lLXRl c3QucGF0Y2gKLWdkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1m aXgucGF0Y2gKIGdkYi02LjUtYnoxMDk5MjEtRFdfQVRfZGVjbF9maWxlLXRlc3QucGF0Y2gKIGdk Yi02LjMtYnoxNDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNoCiBnZGItNi4zLWJ6MjAyNjg5 LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3QucGF0Y2gKQEAgLTQxLDE2ICszNiwxMSBAQCBnZGItNi41 LXNlY3Rpb24tbnVtLWZpeHVwLXRlc3QucGF0Y2gKIGdkYi02LjgtYno0NjY5MDEtYmFja3RyYWNl LWZ1bGwtcHJlbGlua2VkLnBhdGNoCiBnZGItc2ltdWx0YW5lb3VzLXN0ZXAtcmVzdW1lLWJyZWFr cG9pbnQtdGVzdC5wYXRjaAogZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKLWdkYi1i ejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCiBnZGItY2NhY2hlLXdvcmthcm91bmQucGF0 Y2gKLWdkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaAotZ2RiLWFyY2hlci1waWUtYWRkb25zLWtl ZXAtZGlzYWJsZWQucGF0Y2gKIGdkYi1saW5lbm8tbWFrZXVwLXRlc3QucGF0Y2gKIGdkYi1wcGMt cG93ZXI3LXRlc3QucGF0Y2gKLWdkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fyb3VuZC5wYXRjaAog Z2RiLWFyY2hlci1uZXh0LW92ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2gKIGdkYi1iejYwMTg4Ny1k d2FyZjQtcmgtdGVzdC5wYXRjaAotZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5w YXRjaAogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gK IGdkYi10ZXN0LWJ0LWNmaS13aXRob3V0LWRpZS5wYXRjaAogZ2RiLWJ6NjM0MTA4LXNvbGliX2Fk ZHJlc3MucGF0Y2gKQEAgLTYxLDQ2ICs1MSw0MCBAQCBnZGItcGh5c25hbWUtcHIxMTczNC10ZXN0 LnBhdGNoCiBnZGItcGh5c25hbWUtcHIxMjI3My10ZXN0LnBhdGNoCiBnZGItdGVzdC1pdnktYnJp ZGdlLnBhdGNoCiBnZGItcnVudGVzdC1waWUtb3ZlcnJpZGUucGF0Y2gKLWdkYi1hdHRhY2gtZmFp bC1yZWFzb25zLTVvZjUucGF0Y2gKIGdkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaAog Z2RiLXJoZWw1LjktdGVzdGNhc2UteGxmLXZhci1pbnNpZGUtbW9kLnBhdGNoCiBnZGItcmhiei04 MTgzNDMtc2V0LXNvbGliLWFic29sdXRlLXByZWZpeC10ZXN0Y2FzZS5wYXRjaAogZ2RiLXJoYno5 NDc1NjQtZmluZHZhci1hc3NlcnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNlLnBhdGNoCi1nZGIt Z25hdC1kd2FyZi1jcmFzaC0zb2YzLnBhdGNoCiBnZGItcmhiejEwMDc2MTQtbWVtbGVhay1pbmZw eV9yZWFkX21lbW9yeS10ZXN0LnBhdGNoCiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLW1pc2xlYWRp bmctd2FybmluZy1taXNzaW5nLWRlYnVnaW5mby1yaGJ6OTgxMTU0LnBhdGNoCi1nZGItYXJjaGVy LXZsYS10ZXN0cy5wYXRjaAotZ2RiLXZsYS1pbnRlbC10ZXN0cy5wYXRjaAotZ2RiLWJ0cm9idXN0 LnBhdGNoCiBnZGItZm9ydHJhbi1mcmFtZS1zdHJpbmcucGF0Y2gKIGdkYi1yaGJ6MTE1NjE5Mi1y ZWN1cnNpdmUtZGxvcGVuLXRlc3QucGF0Y2gKLWdkYi1qaXQtcmVhZGVyLW11bHRpbGliLnBhdGNo CiBnZGItcmhiejExNDkyMDUtY2F0Y2gtc3lzY2FsbC1hZnRlci1mb3JrLXRlc3QucGF0Y2gKIGdk Yi1yaGJ6MTE4NjQ3Ni1pbnRlcm5hbC1lcnJvci11bnF1YWxpZmllZC1uYW1lLXJlLXNldC10ZXN0 LnBhdGNoCiBnZGItcmhiejEzNTA0MzYtdHlwZS1wcmludGVycy1lcnJvci5wYXRjaAogZ2RiLXJo YnoxMDg0NDA0LXBwYzY0LXMzOTB4LXdyb25nLXByb2xvZ3VlLXNraXAtTzItZy0zb2YzLnBhdGNo Ci1nZGItYnoxMjE5NzQ3LWF0dGFjaC1raWxscy5wYXRjaAogZ2RiLWZlZG9yYS1saWJuY3Vyc2Vz dy5wYXRjaAogZ2RiLW9wY29kZXMtY2xmbHVzaG9wdC10ZXN0LnBhdGNoCi1nZGItZHRzLXJoZWw2 LXB5dGhvbi1jb21wYXQucGF0Y2gKIGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLXNjbC5wYXRj aAotZ2RiLTYuOC1xdWl0LW5ldmVyLWFib3J0cy5wYXRjaAogZ2RiLXJoYnoxMjYxNTY0LWFhcmNo NjQtaHctd2F0Y2hwb2ludC10ZXN0LnBhdGNoCiBnZGItY29udGFpbmVyLXJoLXBrZy5wYXRjaAog Z2RiLXJoYnoxMzI1Nzk1LWZyYW1lZmlsdGVycy10ZXN0LnBhdGNoCiBnZGItbGludXhfcGVyZi1i dW5kbGUucGF0Y2gKIGdkYi1saWJleGVjLWFkZC1pbmRleC5wYXRjaAogZ2RiLXJoYnoxMzk4Mzg3 LXRhYi1jcmFzaC10ZXN0LnBhdGNoCi1nZGItYXJjaGVyLnBhdGNoCi1nZGItdmxhLWludGVsLWZp eC1wcmludC1jaGFyLWFycmF5LnBhdGNoCiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJjaDEyLXRl c3QucGF0Y2gKIGdkYi1yaGJ6MTkwNTk5Ni1maXgtb2ZmLWJ5LW9uZS1lcnJvci1pbi1hZGFfZm9s ZF9uYW1lLnBhdGNoCiBnZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFzc2VydC5wYXRjaAotZ2Ri LXJoYnoxOTMwNTI4LWZpeC1nbnVsaWItYnVpbGQtZXJyb3IucGF0Y2gKLWdkYi1yaGJ6MTkzMjY0 NS1hYXJjaDY0LXB0cmFjZS1oZWFkZXItb3JkZXIucGF0Y2gKIGdkYi1yaGJ6MTkwOTkwMi1mcmFt ZV9pZF9wLWFzc2VydC0xLnBhdGNoCiBnZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQt Mi5wYXRjaAogZ2RiLXJoYnoxOTQxMDgwLWZpeC1nZGJzZXJ2ZXItaGFuZy5wYXRjaAogdGVzdGlu Zy1jdXN0b20taW5wdXRyYy5wYXRjaAotcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdC10eXBlLXVu aXQucGF0Y2gKIGdkYi1yaGJ6MTkzMTM0NC1iZmRfc2Vlay1lbGZfcmVhZF9ub3Rlcy5wYXRjaAor Z2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXktZXhwcmVzc2lvbi1ldmFsdWF0 aW9uLnBhdGNoCitnZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFuLWV4cHItaGFuZGxpbmcucGF0 Y2gKK2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKK2dkYi1y aGJ6MTk2NDE2Ny1jb252ZXJ0LWVudW0tcmFuZ2VfdHlwZS5wYXRjaAorZ2RiLXJoYnoxOTY0MTY3 LWZvcnRyYW4tcmFuZ2VfdHlwZS10by1yYW5nZV9mbGFnLnBhdGNoCitnZGItcmhiejE5NjQxNjct Zm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Npb25zLnBhdGNoCitnZGItcmhiejE5NjQx NjctZm9ydHJhbi1hcnJheS1zbGljZXMtYXQtcHJvbXB0LnBhdGNoCitnZGItcmhiejE5NjQxNjct Zm9ydHJhbi1maXgtdHlwZS1mb3JtYXQtbWlzbWF0Y2gtaW4tZi1sYW5nLmMucGF0Y2gKCmRpZmYg LS1naXQgYS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoIGIvZ2RiLTYuMy10ZXN0LXBp ZS0yMDA1MDEwNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RmZmE0My4u MDAwMDAwMAotLS0gYS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjAyNSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4K LURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi02LjMt dGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKLQotOzsgVlNZU0NBTEwgYW5kIFBJRQotOzs9ZmVkb3Jh dGVzdAotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCi1AQCAtMCwwICsx LDIwIEBACi0rLyogVGhpcyBwcm9ncmFtIGlzIGludGVuZGVkIHRvIGJlIHN0YXJ0ZWQgb3V0c2lk ZSBvZiBnZGIsIGFuZCB0aGVuCi0rICAgYXR0YWNoZWQgdG8gYnkgZ2RiLiAgVGh1cywgaXQgc2lt cGx5IHNwaW5zIGluIGEgbG9vcC4gIFRoZSBsb29wCi0rICAgaXMgZXhpdGVkIHdoZW4gJiBpZiB0 aGUgdmFyaWFibGUgJ3Nob3VsZF9leGl0JyBpcyBub24temVyby4gIChJdAotKyAgIGlzIGluaXRp YWxpemVkIHRvIHplcm8gaW4gdGhpcyBwcm9ncmFtLCBzbyB0aGUgbG9vcCB3aWxsIG5ldmVyCi0r ICAgZXhpdCB1bmxlc3MvdW50aWwgZ2RiIHNldHMgdGhlIHZhcmlhYmxlIHRvIG5vbi16ZXJvLikK LSsgICAqLwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwotK2ludCAgc2hvdWxkX2V4aXQgPSAwOwot KwotK2ludCBtYWluICgpCi0rewotKyAgaW50ICBsb2NhbF9pID0gMDsKLSsKLSsgIHdoaWxlICgh IHNob3VsZF9leGl0KQotKyAgICB7Ci0rICAgICAgbG9jYWxfaSsrOwotKyAgICB9Ci0rICByZXR1 cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCi1A QCAtMCwwICsxLDQxNiBAQAotKyMgICBDb3B5cmlnaHQgMTk5NywgMTk5OSwgMjAwMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAqLwotKwotKyMgT24gSFAtVVggMTEuMCwgdGhpcyB0ZXN0IGlzIGNhdXNp bmcgYSBwcm9jZXNzIHJ1bm5pbmcgdGhlIHByb2dyYW0KLSsjICJhdHRhY2giIHRvIGJlIGxlZnQg YXJvdW5kIHNwaW5uaW5nLiAgVW50aWwgd2UgZmlndXJlIG91dCB3aHksIEkgYW0KLSsjIGNvbW1l bnRpbmcgb3V0IHRoZSB0ZXN0IHRvIGF2b2lkIHBvbGx1dGluZyB0aWFtYXQgKG91ciAxMS4wIG5p Z2h0bHkKLSsjIHRlc3QgbWFjaGluZSkgd2l0aCB0aGVzZSBwcm9jZXNzZXMuIFJUCi0rIwotKyMg U2V0dGluZyB0aGUgbWFnaWMgYml0IGluIHRoZSB0YXJnZXQgYXBwIHNob3VsZCB3b3JrLiAgSSBh ZGRlZCBhCi0rIyAia2lsbCIsIGFuZCBhbHNvIGEgdGVzdCBmb3IgdGhlIFIzIHJlZ2lzdGVyIHdh cm5pbmcuICBKQgotK2lmIHsgW2lzdGFyZ2V0ICJocHBhKi0qLWhwdXgqIl0gfSB7Ci0rICAgIHJl dHVybiAwCi0rfQotKwotKyMgYXJlIHdlIG9uIGEgdGFyZ2V0IGJvYXJkCi0raWYgW2lzX3JlbW90 ZSB0YXJnZXRdIHRoZW4gewotKyAgICByZXR1cm4gMAotK30KLSsKLStzZXQgdGVzdGZpbGUgImF0 dGFjaCIKLStzZXQgc3JjZmlsZSAgJHt0ZXN0ZmlsZX0uYwotK3NldCBzcmNmaWxlMiAke3Rlc3Rm aWxlfTIuYwotK3NldCBiaW5maWxlICBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1d Ci0rc2V0IGJpbmZpbGUyIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfTJdCi0rc2V0 IGVzY2FwZWRiaW5maWxlICBbc3RyaW5nX3RvX3JlZ2V4cCBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUg JHt0ZXN0ZmlsZX1dXQotK3NldCBjbGVhbnVwZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0 ZXN0ZmlsZX0uYXdrXQotKwotKyNleGVjdXRlX2FueXdoZXJlICJybSAtZiAke2JpbmZpbGV9ICR7 YmluZmlsZTJ9IgotK3JlbW90ZV9leGVjIGJ1aWxkICJybSAtZiAke2JpbmZpbGV9ICR7YmluZmls ZTJ9IgotKyMgRm9yIGRlYnVnZ2luZyB0aGlzIHRlc3QKLSsjCi0rI2xvZ191c2VyIDEKLSsKLSsj IENsZWFuIG91dCBhbnkgb2xkIGZpbGVzIGZyb20gcGFzdCBydW5zLgotKyMKLStyZW1vdGVfZXhl YyBidWlsZCAiJHtjbGVhbnVwZmlsZX0iCi0rCi0rIyBidWlsZCB0aGUgZmlyc3QgdGVzdCBjYXNl Ci0rIwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgImFkZGl0aW9uYWxfZmxhZ3M9IC1mcGll IC1waWUifV0gIT0gIiIgfSB7Ci0rICAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRlc3Rj YXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21h dGljYWxseSBmYWlsLiIKLSt9Ci0rCi0rIyBCdWlsZCB0aGUgaW4tc3lzdGVtLWNhbGwgdGVzdAot KwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUyfSIg IiR7YmluZmlsZTJ9IiBleGVjdXRhYmxlIHtkZWJ1ZyAiYWRkaXRpb25hbF9mbGFncz0gLWZwaWUg LXBpZSJ9XSAhPSAiIiB9IHsKLSsgICAgIGdkYl9zdXBwcmVzc19lbnRpcmVfZmlsZSAiVGVzdGNh c2UgY29tcGlsZSBmYWlsZWQsIHNvIGFsbCB0ZXN0cyBpbiB0aGlzIGZpbGUgd2lsbCBhdXRvbWF0 aWNhbGx5IGZhaWwuIgotK30KLSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0g ewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rcHJvYyBkb19hdHRhY2hfdGVzdHMge30gewotKyAg IGdsb2JhbCBnZGJfcHJvbXB0Ci0rICAgZ2xvYmFsIGJpbmZpbGUKLSsgICBnbG9iYWwgZXNjYXBl ZGJpbmZpbGUKLSsgICBnbG9iYWwgc3JjZmlsZQotKyAgIGdsb2JhbCB0ZXN0ZmlsZQotKyAgIGds b2JhbCBzdWJkaXIKLSsgICBnbG9iYWwgdGltZW91dAotKwotKyAgICMgU3RhcnQgdGhlIHByb2dy YW0gcnVubmluZyBhbmQgdGhlbiB3YWl0IGZvciBhIGJpdCwgdG8gYmUgc3VyZQotKyAgICMgdGhh dCBpdCBjYW4gYmUgYXR0YWNoZWQgdG8uCi0rICAgIwotKyAgIHNldCB0ZXN0cGlkIFtldmFsIGV4 ZWMgJGJpbmZpbGUgJl0KLSsgICBleGVjIHNsZWVwIDIKLSsKLSsgICAjIFZlcmlmeSB0aGF0IHdl IGNhbm5vdCBhdHRhY2ggdG8gbm9uc2Vuc2UuCi0rICAgIwotKyAgIHNlbmRfZ2RiICJhdHRhY2gg YWJjXG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIuKklsbGVnYWwgcHJvY2Vzcy1p ZDogYWJjLiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAge3Bhc3MgImF0 dGFjaCB0byBub25zZW5zZSBpcyBwcm9oaWJpdGVkIn0KLSsgICAgICAtcmUgIkF0dGFjaGluZyB0 by4qLCBwcm9jZXNzIC4qY291bGRuJ3Qgb3BlbiAvcHJvYyBmaWxlLiokZ2RiX3Byb21wdCAkIlwK LSsgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICMgUmVz cG9uc2UgZXhwZWN0ZWQgZnJvbSAvcHJvYy1iYXNlZCBzeXN0ZW1zLgotKyAgICAgICAgICAgICAg ICAgICAgICAgIHBhc3MgImF0dGFjaCB0byBub25zZW5zZSBpcyBwcm9oaWJpdGVkIgotKyAgICAg ICAgICAgICAgICAgICAgICB9Ci0rICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiRnZGJfcHJvbXB0 ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7ZmFpbCAiYXR0YWNoIHRvIG5vbnNlbnNlIGlz IHByb2hpYml0ZWQgKGJvZ3VzIHBpZCBhbGxvd2VkKSJ9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21w dCAkIiB7ZmFpbCAiYXR0YWNoIHRvIG5vbnNlbnNlIGlzIHByb2hpYml0ZWQifQotKyAgICAgIHRp bWVvdXQgICAgICAgICB7ZmFpbCAiKHRpbWVvdXQpIGF0dGFjaCB0byBub25zZW5zZSBpcyBwcm9o aWJpdGVkIn0KLSsgICB9Ci0rCi0rICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW5ub3QgYXR0YWNoIHRv IHdoYXQgYXBwZWFycyB0byBiZSBhIHZhbGlkCi0rICAgIyBwcm9jZXNzIElELCBidXQgaXMgYSBw cm9jZXNzIHRoYXQgZG9lc24ndCBleGlzdC4gIFRyYWRpdGlvbmFsbHksCi0rICAgIyBtb3N0IHN5 c3RlbXMgZGlkbid0IGhhdmUgYSBwcm9jZXNzIHdpdGggSUQgMCwgc28gd2UgdGFrZSB0aGF0IGFz Ci0rICAgIyB0aGUgZGVmYXVsdC4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIGZldyBleGNlcHRpb25z LgotKyAgICMKLSsgICBzZXQgYm9ndXNwaWQgMAotKyAgIGlmIHsgW2lzdGFyZ2V0ICIqLSotKmJz ZCoiXSB9IHsKLSsgICAgICAgIyBJbiBGcmVlQlNEIDUuMCwgUElEIDAgaXMgdXNlZCBmb3IgInN3 YXBwZXIiLiAgVXNlIC0xIGluc3RlYWQKLSsgICAgICAgIyAod2hpY2ggc2hvdWxkIGhhdmUgdGhl IGRlc2lyZWQgZWZmZWN0IG9uIGFueSB2ZXJzaW9uIG9mCi0rICAgICAgICMgRnJlZUJTRCwgYW5k IHByb2JhYmx5IG90aGVyICpCU0QncyB0b28pLgotKyAgICAgICBzZXQgYm9ndXNwaWQgLTEKLSsg ICB9Ci0rICAgc2VuZF9nZGIgImF0dGFjaCAkYm9ndXNwaWRcbiIKLSsgICBnZGJfZXhwZWN0IHsK LSsgICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiwgcHJvY2VzcyAkYm9ndXNwaWQuKk5vIHN1Y2gg cHJvY2Vzcy4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICB7Ci0rCSAgICMgUmVzcG9uc2UgZXhw ZWN0ZWQgb24gcHRyYWNlLWJhc2VkIHN5c3RlbXMgKGkuZS4gSFAtVVggMTAuMjApLgotKwkgICBw YXNzICJhdHRhY2ggdG8gbm9uZXhpc3RlbnQgcHJvY2VzcyBpcyBwcm9oaWJpdGVkIgotKyAgICAg ICB9Ci0rICAgICAgIC1yZSAiQXR0YWNoaW5nIHRvLiosIHByb2Nlc3MgJGJvZ3VzcGlkIGZhaWxl ZC4qSGludC4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICB7Ci0rCSAgICMgUmVzcG9uc2UgZXhw ZWN0ZWQgb24gdHRyYWNlLWJhc2VkIHN5c3RlbXMgKGkuZS4gSFAtVVggMTEuMCkuCi0rCSAgIHBh c3MgImF0dGFjaCB0byBub25leGlzdGVudCBwcm9jZXNzIGlzIHByb2hpYml0ZWQiCi0rICAgICAg IH0KLSsgICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiwgcHJvY2VzcyAkYm9ndXNwaWQuKmRlbmll ZC4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICB7cGFzcyAiYXR0YWNoIHRvIG5vbmV4aXN0ZW50 IHByb2Nlc3MgaXMgcHJvaGliaXRlZCJ9Ci0rICAgICAgIC1yZSAiQXR0YWNoaW5nIHRvLiosIHBy b2Nlc3MgJGJvZ3VzcGlkLipub3QgcGVybWl0dGVkLiokZ2RiX3Byb21wdCAkIlwKLSsJICAgICAg IHtwYXNzICJhdHRhY2ggdG8gbm9uZXhpc3RlbnQgcHJvY2VzcyBpcyBwcm9oaWJpdGVkIn0KLSsg ICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiwgcHJvY2VzcyAuKmNvdWxkbid0IG9wZW4gL3Byb2Mg ZmlsZS4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICB7Ci0rCSAgICMgUmVzcG9uc2UgZXhwZWN0 ZWQgZnJvbSAvcHJvYy1iYXNlZCBzeXN0ZW1zLgotKwkgICBwYXNzICJhdHRhY2ggdG8gbm9uZXhp c3RlbnQgcHJvY2VzcyBpcyBwcm9oaWJpdGVkIgotKyAgICAgICB9Ci0rICAgICAgIC1yZSAiJGdk Yl9wcm9tcHQgJCIge2ZhaWwgImF0dGFjaCB0byBub25leGlzdGVudCBwcm9jZXNzIGlzIHByb2hp Yml0ZWQifQotKyAgICAgICB0aW1lb3V0IHsKLSsJICAgZmFpbCAiKHRpbWVvdXQpIGF0dGFjaCB0 byBub25leGlzdGVudCBwcm9jZXNzIGlzIHByb2hpYml0ZWQiCi0rICAgICAgIH0KLSsgICB9Ci0r Ci0rICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW4gYXR0YWNoIHRvIHRoZSBwcm9jZXNzIGJ5IGZpcnN0 IGdpdmluZyBpdHMKLSsgICAjIGV4ZWN1dGFibGUgbmFtZSB2aWEgdGhlIGZpbGUgY29tbWFuZCwg YW5kIHVzaW5nIGF0dGFjaCB3aXRoCi0rICAgIyB0aGUgcHJvY2VzcyBJRC4KLSsgICAjCi0rICAg IyAoQWN0dWFsbHksIHRoZSB0ZXN0IHN5c3RlbSBhcHBlYXJzIHRvIGRvIHRoaXMgYXV0b21hdGlj YWxseQotKyAgICMgZm9yIHVzLiAgU28sIHdlIG11c3QgYWxzbyBiZSBwcmVwYXJlZCB0byBiZSBh c2tlZCBpZiB3ZSB3YW50Ci0rICAgIyB0byBkaXNjYXJkIGFuIGV4aXN0aW5nIHNldCBvZiBzeW1i b2xzLikKLSsgICAjCi0rICAgc2VuZF9nZGIgImZpbGUgJGJpbmZpbGVcbiIKLSsgICBnZGJfZXhw ZWN0IHsKLSsgICAgICAtcmUgIkxvYWQgbmV3IHN5bWJvbCB0YWJsZSBmcm9tLip5IG9yIG4uKiQi IHsKLSsgICAgICAgICBzZW5kX2dkYiAieVxuIgotKyAgICAgICAgIGdkYl9leHBlY3QgewotKyAg ICAgICAgICAgIC1yZSAiUmVhZGluZyBzeW1ib2xzIGZyb20gJGVzY2FwZWRiaW5maWxlXC5cLlwu KiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFzcyAiKHJl KXNldCBmaWxlLCBiZWZvcmUgYXR0YWNoMSJ9Ci0rICAgICAgICAgICAgLXJlICIkZ2RiX3Byb21w dCAkIiB7ZmFpbCAiKHJlKXNldCBmaWxlLCBiZWZvcmUgYXR0YWNoMSJ9Ci0rICAgICAgICAgICAg dGltZW91dCAgICAgICAgIHtmYWlsICIodGltZW91dCkgKHJlKXNldCBmaWxlLCBiZWZvcmUgYXR0 YWNoMSJ9Ci0rICAgICAgICAgfQotKyAgICAgIH0KLSsgICAgICAtcmUgIlJlYWRpbmcgc3ltYm9s cyBmcm9tICRlc2NhcGVkYmluZmlsZVwuXC5cLiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAg ICAgICAgICAgICAge3Bhc3MgInNldCBmaWxlLCBiZWZvcmUgYXR0YWNoMSJ9Ci0rICAgICAgLXJl ICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAic2V0IGZpbGUsIGJlZm9yZSBhdHRhY2gxIn0KLSsgICAg ICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBzZXQgZmlsZSwgYmVmb3JlIGF0dGFj aDEifQotKyAgIH0KLSsKLSsgICBzZW5kX2dkYiAiYXR0YWNoICR0ZXN0cGlkXG4iCi0rICAgZ2Ri X2V4cGVjdCB7Ci0rICAgICAgLXJlICJBdHRhY2hpbmcgdG8gcHJvZ3JhbS4qYD8kZXNjYXBlZGJp bmZpbGUnPywgcHJvY2VzcyAkdGVzdHBpZC4qbWFpbi4qYXQgLiokc3JjZmlsZTouKiRnZGJfcHJv bXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7cGFzcyAiYXR0YWNoMSwgYWZ0ZXIgc2V0 dGluZyBmaWxlIn0KLSsgICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiIHtmYWlsICJhdHRhY2gxLCBh ZnRlciBzZXR0aW5nIGZpbGUifQotKyAgICAgIHRpbWVvdXQgICAgICAgICB7ZmFpbCAiKHRpbWVv dXQpIGF0dGFjaDEsIGFmdGVyIHNldHRpbmcgZmlsZSJ9Ci0rICAgfQotKwotKyAgICMgVmVyaWZ5 IHRoYXQgd2UgY2FuICJzZWUiIHRoZSB2YXJpYWJsZSAic2hvdWxkX2V4aXQiIGluIHRoZQotKyAg ICMgcHJvZ3JhbSwgYW5kIHRoYXQgaXQgaXMgemVyby4KLSsgICAjCi0rICAgc2VuZF9nZGIgInBy aW50IHNob3VsZF9leGl0XG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIuKiA9IDAu KiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7cGFzcyAiYWZ0ZXIgYXR0 YWNoMSwgcHJpbnQgc2hvdWxkX2V4aXQifQotKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2Zh aWwgImFmdGVyIGF0dGFjaDEsIHByaW50IHNob3VsZF9leGl0In0KLSsgICAgICB0aW1lb3V0ICAg ICAgICAge2ZhaWwgIih0aW1lb3V0KSBhZnRlciBhdHRhY2gxLCBwcmludCBzaG91bGRfZXhpdCJ9 Ci0rICAgfQotKwotKyAgICMgRGV0YWNoIHRoZSBwcm9jZXNzLgotKyAgICMKLSsgICBzZW5kX2dk YiAiZGV0YWNoXG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICJEZXRhY2hpbmcgZnJv bSBwcm9ncmFtOiAuKiRlc2NhcGVkYmluZmlsZS4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAg ICAgICAgICAgICAgIHtwYXNzICJhdHRhY2gxIGRldGFjaCJ9Ci0rICAgICAgLXJlICIkZ2RiX3By b21wdCAkIiB7ZmFpbCAiYXR0YWNoMSBkZXRhY2gifQotKyAgICAgIHRpbWVvdXQgICAgICAgICB7 ZmFpbCAiKHRpbWVvdXQpIGF0dGFjaDEgZGV0YWNoIn0KLSsgICB9Ci0rCi0rICAgIyBXYWl0IGEg Yml0IGZvciBnZGIgdG8gZmluaXNoIGRldGFjaGluZwotKyAgICMKLSsgICBleGVjIHNsZWVwIDUK LSsKLSsgICAjIFB1cmdlIHRoZSBzeW1ib2xzIGZyb20gZ2RiJ3MgYnJhaW4uICAoV2Ugd2FudCB0 byBiZSBjZXJ0YWluCi0rICAgIyB0aGUgbmV4dCBhdHRhY2gsIHdoaWNoIHdvbid0IGJlIHByZWNl ZGVkIGJ5IGEgImZpbGUiIGNvbW1hbmQsCi0rICAgIyBpcyByZWFsbHkgZ2V0dGluZyB0aGUgZXhl Y3V0YWJsZSBmaWxlIHdpdGhvdXQgb3VyIGhlbHAuKQotKyAgICMKLSsgICBzZXQgb2xkX3RpbWVv dXQgJHRpbWVvdXQKLSsgICBzZXQgdGltZW91dCAxNQotKyAgIHNlbmRfZ2RiICJmaWxlXG4iCi0r ICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIuKmdkYiBpbnRlcm5hbCBlcnJvci4qJCIgewot KyAgICAgICAgICBmYWlsICJJbnRlcm5hbCBlcnJvciwgcHJvYi4gTWVtb3J5IGNvcnJ1cHRpb24i Ci0rICAgICAgfQotKyAgICAgIC1yZSAiTm8gZXhlY3V0YWJsZSBmaWxlIG5vdy4qRGlzY2FyZCBz eW1ib2wgdGFibGUuKnkgb3Igbi4qJCIgewotKyAgICAgICAgIHNlbmRfZ2RiICJ5XG4iCi0rICAg ICAgICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgICAgICAgLXJlICJObyBzeW1ib2wgZmlsZSBub3cu KiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFzcyAiYXR0 YWNoMSwgcHVyZ2luZyBzeW1ib2xzIGFmdGVyIGRldGFjaCJ9Ci0rICAgICAgICAgICAgLXJlICIk Z2RiX3Byb21wdCAkIiB7ZmFpbCAiYXR0YWNoMSwgcHVyZ2luZyBzeW1ib2xzIGFmdGVyIGRldGFj aCJ9Ci0rICAgICAgICAgICAgdGltZW91dCAgICAgICAgIHtmYWlsICIodGltZW91dCkgYXR0YWNo MSwgcHVyZ2luZyBzeW1ib2xzIGFmdGVyIGRldGFjaCJ9Ci0rICAgICAgICAgfQotKyAgICAgIH0K LSsgICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiIHtmYWlsICJhdHRhY2gxLCBwdXJnaW5nIGZpbGUg YWZ0ZXIgZGV0YWNoIn0KLSsgICAgICB0aW1lb3V0ICAgICAgICAgewotKyAgICAgICAgICBmYWls ICIodGltZW91dCkgYXR0YWNoMSwgcHVyZ2luZyBmaWxlIGFmdGVyIGRldGFjaCIKLSsgICAgICB9 Ci0rICAgfQotKyAgIHNldCB0aW1lb3V0ICRvbGRfdGltZW91dAotKwotKyAgICMgVmVyaWZ5IHRo YXQgd2UgY2FuIGF0dGFjaCB0byB0aGUgcHJvY2VzcyBqdXN0IGJ5IGdpdmluZyB0aGUKLSsgICAj IHByb2Nlc3MgSUQuCi0rICAgIwotKyAgIHNlbmRfZ2RiICJhdHRhY2ggJHRlc3RwaWRcbiIKLSsg ICBnZGJfZXhwZWN0IHsKLSsgICAgICAtcmUgIkF0dGFjaGluZyB0byBwcm9jZXNzICR0ZXN0cGlk LipSZWFkaW5nIHN5bWJvbHMgZnJvbSAkZXNjYXBlZGJpbmZpbGUuKm1haW4uKmF0IC4qJGdkYl9w cm9tcHQgJCJcCi0rICAgICAgICAgICAgICAgICAgICAgIHtwYXNzICJhdHRhY2gyIn0KLSsgICAg ICAtcmUgIiRnZGJfcHJvbXB0ICQiIHtmYWlsICJhdHRhY2gyIn0KLSsgICAgICB0aW1lb3V0ICAg ICAgICAge2ZhaWwgIih0aW1lb3V0KSBhdHRhY2gyIn0KLSsgICB9Ci0rCi0rICAgIyBWZXJpZnkg dGhhdCB3ZSBjYW4gbW9kaWZ5IHRoZSB2YXJpYWJsZSAic2hvdWxkX2V4aXQiIGluIHRoZQotKyAg ICMgcHJvZ3JhbS4KLSsgICAjCi0rICAgc2VuZF9nZGIgInNldCBzaG91bGRfZXhpdD0xXG4iCi0r ICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7cGFzcyAiYWZ0ZXIg YXR0YWNoMiwgc2V0IHNob3VsZF9leGl0In0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwg Iih0aW1lb3V0KSBhZnRlciBhdHRhY2gyLCBzZXQgc2hvdWxkX2V4aXQifQotKyAgIH0KLSsKLSsg ICAjIFZlcmlmeSB0aGF0IHRoZSBtb2RpZmljYXRpb24gcmVhbGx5IGhhcHBlbmVkLgotKyAgICMK LSsgICBzZW5kX2dkYiAidGJyZWFrIDE5XG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJl ICJyZWFrcG9pbnQgLiphdC4qJHNyY2ZpbGUsIGxpbmUgMTkuKiRnZGJfcHJvbXB0ICQiXAotKyAg ICAgICAgICAgICAgICAgICAgICB7cGFzcyAiYWZ0ZXIgYXR0YWNoMiwgc2V0IHRicmVhayBwb3N0 bG9vcCJ9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiYWZ0ZXIgYXR0YWNoMiwg c2V0IHRicmVhayBwb3N0bG9vcCJ9Ci0rICAgICAgdGltZW91dCAgICAgICAgIHtmYWlsICIodGlt ZW91dCkgYWZ0ZXIgYXR0YWNoMiwgc2V0IHRicmVhayBwb3N0bG9vcCJ9Ci0rICAgfQotKyAgIHNl bmRfZ2RiICJjb250aW51ZVxuIgotKyAgIGdkYl9leHBlY3QgewotKyAgICAgIC1yZSAibWFpbi4q YXQuKiRzcmNmaWxlOjE5LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAg e3Bhc3MgImFmdGVyIGF0dGFjaDIsIHJlYWNoIHRicmVhayBwb3N0bG9vcCJ9Ci0rICAgICAgLXJl ICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiYWZ0ZXIgYXR0YWNoMiwgcmVhY2ggdGJyZWFrIHBvc3Rs b29wIn0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBhZnRlciBhdHRh Y2gyLCByZWFjaCB0YnJlYWsgcG9zdGxvb3AifQotKyAgIH0KLSsKLSsgICAjIEFsbG93IHRoZSB0 ZXN0IHByb2Nlc3MgdG8gZXhpdCwgdG8gY2xlYW51cCBhZnRlciBvdXJzZWx2ZXMuCi0rICAgIwot KyAgIGdkYl90ZXN0ICJjb250aW51ZSIge1xbSW5mZXJpb3IgLiogZXhpdGVkIG5vcm1hbGx5XF19 ICJhZnRlciBhdHRhY2gyLCBleGl0IgotKwotKyAgICMgTWFrZSBzdXJlIHdlIGRvbid0IGxlYXZl IGEgcHJvY2VzcyBhcm91bmQgdG8gY29uZnVzZQotKyAgICMgdGhlIG5leHQgdGVzdCBydW4gKGFu ZCBwcmV2ZW50IHRoZSBjb21waWxlIGJ5IGtlZXBpbmcKLSsgICAjIHRoZSB0ZXh0IGZpbGUgYnVz eSksIGluIGNhc2UgdGhlICJzZXQgc2hvdWxkX2V4aXQiIGRpZG4ndAotKyAgICMgd29yay4KLSsg ICAjCi0rICAgcmVtb3RlX2V4ZWMgYnVpbGQgImtpbGwgLTkgJHt0ZXN0cGlkfSIKLSsgICAjIFN0 YXJ0IHRoZSBwcm9ncmFtIHJ1bm5pbmcgYW5kIHRoZW4gd2FpdCBmb3IgYSBiaXQsIHRvIGJlIHN1 cmUKLSsgICAjIHRoYXQgaXQgY2FuIGJlIGF0dGFjaGVkIHRvLgotKyAgICMKLSsgICBzZXQgdGVz dHBpZCBbZXZhbCBleGVjICRiaW5maWxlICZdCi0rICAgZXhlYyBzbGVlcCAyCi0rCi0rICAgIyBW ZXJpZnkgdGhhdCB3ZSBjYW4gYXR0YWNoIHRvIHRoZSBwcm9jZXNzLCBhbmQgZmluZCBpdHMgYS5v dXQKLSsgICAjIHdoZW4gd2UncmUgY2QnZCB0byBzb21lIGRpcmVjdG9yeSB0aGF0IGRvZXNuJ3Qg Y29udGFpbiB0aGUKLSsgICAjIGEub3V0LiAgKFdlIHVzZSB0aGUgc291cmNlIHBhdGggc2V0IGJ5 IHRoZSAiZGlyIiBjb21tYW5kLikKLSsgICAjCi0rICAgc2VuZF9nZGIgImRpciBbZmlsZSBkaXJu YW1lIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfV1dXG4iCi0rICAgZ2RiX2V4cGVj dCB7Ci0rICAgICAgLXJlICIuKlNvdXJjZSBkaXJlY3RvcmllcyBzZWFyY2hlZDogLiokZ2RiX3By b21wdCAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAge3Bhc3MgInNldCBzb3VyY2UgcGF0aCJ9 Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAic2V0IHNvdXJjZSBwYXRoIn0KLSsg ICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBzZXQgc291cmNlIHBhdGgifQot KyAgIH0KLSsKLSsgICBzZW5kX2dkYiAiY2QgL3RtcFxuIgotKyAgIGdkYl9leHBlY3QgewotKyAg ICAgIC1yZSAiLipXb3JraW5nIGRpcmVjdG9yeSAvdG1wLiokZ2RiX3Byb21wdCAkIlwKLSsgICAg ICAgICAgICAgICAgICAgICAge3Bhc3MgImNkIGF3YXkgZnJvbSBwcm9jZXNzJyBhLm91dCJ9Ci0r ICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiY2QgYXdheSBmcm9tIHByb2Nlc3MnIGEu b3V0In0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBjZCBhd2F5IGZy b20gcHJvY2VzcycgYS5vdXQifQotKyAgIH0KLSsKLSsgICAjIEV4cGxpY2l0bHkgZmx1c2ggb3V0 IGFueSBrbm93bGVkZ2Ugb2YgdGhlIHByZXZpb3VzIGF0dGFjaG1lbnQuCi0rICAgc2VuZF9nZGIg InN5bWJvbFxuIgotKyAgIGdkYl9leHBlY3QgewotKyAgICAgIC1yZSAiLipEaXNjYXJkIHN5bWJv bCB0YWJsZSBmcm9tLip5IG9yIG4uICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7c2VuZF9n ZGIgInlcbiIKLSsgICAgICAgICAgICAgICAgICAgICAgIGdkYl9leHBlY3QgewotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgLXJlICIuKk5vIHN5bWJvbCBmaWxlIG5vdy4qJGdkYl9wcm9tcHQg JCJcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Bhc3MgImJl Zm9yZSBhdHRhY2gzLCBmbHVzaCBzeW1ib2xzIn0KLSsgICAgICAgICAgICAgICAgICAgICAgICAg IC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImJlZm9yZSBhdHRhY2gzLCBmbHVzaCBzeW1ib2xz In0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgICAgICAgICB7ZmFpbCAiKHRp bWVvdXQpIGJlZm9yZSBhdHRhY2gzLCBmbHVzaCBzeW1ib2xzIn0KLSsgICAgICAgICAgICAgICAg ICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgIC1yZSAiLipObyBzeW1i b2wgZmlsZSBub3cuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7cGFz cyAiYmVmb3JlIGF0dGFjaDMsIGZsdXNoIHN5bWJvbHMifQotKyAgICAgIC1yZSAiJGdkYl9wcm9t cHQgJCIge2ZhaWwgImJlZm9yZSBhdHRhY2gzLCBmbHVzaCBzeW1ib2xzIn0KLSsgICAgICB0aW1l b3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBiZWZvcmUgYXR0YWNoMywgZmx1c2ggc3ltYm9s cyJ9Ci0rICAgfQotKyAgIHNlbmRfZ2RiICJleGVjXG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAg ICAgLXJlICIuKk5vIGV4ZWN1dGFibGUgZmlsZSBub3cuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAg ICAgICAgICAgICAgICAgICB7cGFzcyAiYmVmb3JlIGF0dGFjaDMsIGZsdXNoIGV4ZWMifQotKyAg ICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImJlZm9yZSBhdHRhY2gzLCBmbHVzaCBleGVj In0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBiZWZvcmUgYXR0YWNo MywgZmx1c2ggZXhlYyJ9Ci0rICAgfQotKwotKyAgIHNlbmRfZ2RiICJhdHRhY2ggJHRlc3RwaWRc biIKLSsgICBnZGJfZXhwZWN0IHsKLSsgICAgICAtcmUgIkF0dGFjaGluZyB0byBwcm9jZXNzICR0 ZXN0cGlkLipSZWFkaW5nIHN5bWJvbHMgZnJvbSAkZXNjYXBlZGJpbmZpbGUuKm1haW4uKmF0IC4q JGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAgICAgICAgICAgIHtwYXNzICJhdHRhY2ggd2hl biBwcm9jZXNzJyBhLm91dCBub3QgaW4gY3dkIn0KLSsgICAgICAtcmUgIiRnZGJfcHJvbXB0ICQi IHtmYWlsICJhdHRhY2ggd2hlbiBwcm9jZXNzJyBhLm91dCBub3QgaW4gY3dkIn0KLSsgICAgICB0 aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBhdHRhY2ggd2hlbiBwcm9jZXNzJyBhLm91 dCBub3QgaW4gY3dkIn0KLSsgICB9Ci0rCi0rICAgc2VuZF9nZGIgImtpbGxcbiIKLSsgICBnZGJf ZXhwZWN0IHsKLSsgICAgICAtcmUgIi4qS2lsbCB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4q eSBvciBuLiAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAge3NlbmRfZ2RiICJ5XG4iCi0rICAg ICAgICAgICAgICAgICAgICAgICBnZGJfZXhwZWN0IHsKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge3Bhc3MgImFmdGVyIGF0dGFjaDMsIGV4aXQifQotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGFmdGVyIGF0 dGFjaDMsIGV4aXQifQotKyAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAg ICAgICAgICB9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiYWZ0ZXIgYXR0YWNo MywgZXhpdCJ9Ci0rICAgICAgdGltZW91dCAgICAgICAgIHtmYWlsICIodGltZW91dCkgYWZ0ZXIg YXR0YWNoMywgZXhpdCJ9Ci0rICAgfQotKwotKyAgICMgQW5vdGhlciAiZG9uJ3QgbGVhdmUgYSBw cm9jZXNzIGFyb3VuZCIKLSsgICByZW1vdGVfZXhlYyBidWlsZCAia2lsbCAtOSAke3Rlc3RwaWR9 IgotK30KLSsKLStwcm9jIGRvX2NhbGxfYXR0YWNoX3Rlc3RzIHt9IHsKLSsgICBnbG9iYWwgZ2Ri X3Byb21wdAotKyAgIGdsb2JhbCBiaW5maWxlMgotKwotKyAgICMgU3RhcnQgdGhlIHByb2dyYW0g cnVubmluZyBhbmQgdGhlbiB3YWl0IGZvciBhIGJpdCwgdG8gYmUgc3VyZQotKyAgICMgdGhhdCBp dCBjYW4gYmUgYXR0YWNoZWQgdG8uCi0rICAgIwotKyAgIHNldCB0ZXN0cGlkIFtldmFsIGV4ZWMg JGJpbmZpbGUyICZdCi0rICAgZXhlYyBzbGVlcCAyCi0rCi0rICAgIyBBdHRhY2gKLSsgICAjCi0r ICAgZ2RiX3Rlc3QgImZpbGUgJGJpbmZpbGUyIiAiLioiICJmb3JjZSBzd2l0Y2ggdG8gZ2RiNjQs IGlmIG5lY2Vzc2FyeSIKLSsgICBzZW5kX2dkYiAiYXR0YWNoICR0ZXN0cGlkXG4iCi0rICAgZ2Ri X2V4cGVjdCB7Ci0rICAgICAgLXJlICIuKndhcm5pbmc6IHJlYWRpbmcgcmVnaXN0ZXIuKkkuKk8g ZXJyb3IuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgICBmYWlsICJhdHRhY2ggY2FsbCwgcmVh ZCByZWdpc3RlciAzIGVycm9yIgotKyAgICAgfQotKyAgICAgLXJlICJBdHRhY2hpbmcgdG8uKnBy b2Nlc3MgJHRlc3RwaWQuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgICAjIGxpYmMgaXMgcmVs b2NhdGVkLCBub3QgcmVsb2NhdGVkLCB0aGVyZWZvcmUgbm90IHByaW50ZWQuCi0rICAgICAgICAg cGFzcyAiYXR0YWNoIGNhbGwiCi0rICAgICB9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7 ZmFpbCAiYXR0YWNoIGNhbGwifQotKyAgICAgIHRpbWVvdXQgICAgICAgICB7ZmFpbCAiKHRpbWVv dXQpIGF0dGFjaCBjYWxsIn0KLSsgICB9Ci0rCi0rICAgIyBTZWUgaWYgb3RoZXIgcmVnaXN0ZXJz IGFyZSBwcm9ibGVtcwotKyAgICMKLSsgICBzZW5kX2dkYiAiaSByIHIzXG4iCi0rICAgZ2RiX2V4 cGVjdCB7Ci0rICAgICAgIC1yZSAiLip3YXJuaW5nOiByZWFkaW5nIHJlZ2lzdGVyLiokZ2RiX3By b21wdCAkIiB7Ci0rICAgICAgICAgICBwYXNzICJDSEZ0czIzNDkwOiBrbm93biBidWciCi0rICAg ICAgIH0KLSsgICAgICAgLXJlICIuKnIzLiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAgICAgICBw YXNzICJCdWcgZml4ZWQsIFlheXl5ISIKLSsgICAgICAgfQotKyAgICAgICB0aW1lb3V0IHsgZmFp bCAidGltZW91dCBvbiBpbmZvIHJlZyIgfQotKyAgIH0KLSsKLSsgICAjIEdldCByaWQgb2YgdGhl IHByb2Nlc3MKLSsgICAjCi0rICAgZ2RiX3Rlc3QgInAgc2hvdWxkX2V4aXQgPSAxIiAiLioiCi0r ICAgZ2RiX3Rlc3QgImMiIHtcW0luZmVyaW9yIC4qIGV4aXRlZCBub3JtYWxseVxdfQotKwotKyAg ICMgQmUgcGFyYW5vaWQKLSsgICAjCi0rICAgIHJlbW90ZV9leGVjIGJ1aWxkICJraWxsIC05ICR7 dGVzdHBpZH0iCi0rCi0rfQotKwotKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYgotKyMKLStn ZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIFRoaXMgaXMgYSB0ZXN0IG9mIGdkYidzIGFi aWxpdHkgdG8gYXR0YWNoIHRvIGEgcnVubmluZyBwcm9jZXNzLgotKyMKLStkb19hdHRhY2hfdGVz dHMKLSsKLSsjIFRlc3QgYXR0YWNoaW5nIHdoZW4gdGhlIHRhcmdldCBpcyBpbnNpZGUgYSBzeXN0 ZW0gY2FsbAotKyMKLStnZGJfZXhpdAotK2dkYl9zdGFydAotKwotK2dkYl9yZWluaXRpYWxpemVf ZGlyICRzcmNkaXIvJHN1YmRpcgotK2RvX2NhbGxfYXR0YWNoX3Rlc3RzCi0rCi0rcmV0dXJuIDAK LWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoMi5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2F0dGFjaDIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMKLUBAIC0wLDAgKzEsMjQg QEAKLSsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9m IGdkYiwgYW5kIHRoZW4KLSsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkg c3BpbnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKLSsgICBpcyBleGl0ZWQgd2hlbiAmIGlmIHRoZSB2 YXJpYWJsZSAnc2hvdWxkX2V4aXQnIGlzIG5vbi16ZXJvLiAgKEl0Ci0rICAgaXMgaW5pdGlhbGl6 ZWQgdG8gemVybyBpbiB0aGlzIHByb2dyYW0sIHNvIHRoZSBsb29wIHdpbGwgbmV2ZXIKLSsgICBl eGl0IHVubGVzcy91bnRpbCBnZGIgc2V0cyB0aGUgdmFyaWFibGUgdG8gbm9uLXplcm8uKQotKyAg ICovCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRl IDx1bmlzdGQuaD4KLSsKLStpbnQgIHNob3VsZF9leGl0ID0gMDsKLSsKLStpbnQgbWFpbiAoKQot K3sKLSsgIGludCAgbG9jYWxfaSA9IDA7Ci0rCi0rICBzbGVlcCggMTAgKTsgLyogU3lzdGVtIGNh bGwgY2F1c2VzIHJlZ2lzdGVyIGZldGNoIHRvIGZhaWwgKi8KLSsgICAgICAgICAgICAgICAvKiBU aGlzIGlzIGEga25vd24gSFBVWCAiZmVhdHVyZSIgICAgICAgICAgICAqLwotKyAgd2hpbGUgKCEg c2hvdWxkX2V4aXQpCi0rICAgIHsKLSsgICAgICBsb2NhbF9pKys7Ci0rICAgIH0KLSsgIHJldHVy biAoMCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5jIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuYwotQEAgLTAsMCAr MSwxNDYgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgotKwotKyAgIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk5LCAyMDAy LCAyMDAzIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotKyAgIFBsZWFzZSBl bWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRv OgotKyAgIGJ1Zy1nZGJAcHJlcC5haS5taXQuZWR1ICAqLwotKwotKyNpZmRlZiB2eHdvcmtzCi0r Ci0rIyAgaW5jbHVkZSA8c3RkaW8uaD4KLSsKLSsvKiBWeFdvcmtzIGRvZXMgbm90IHN1cHBseSBh dG9pLiAgKi8KLStzdGF0aWMgaW50Ci0rYXRvaSAoeikKLSsgICAgIGNoYXIgKno7Ci0rewotKyAg aW50IGkgPSAwOwotKwotKyAgd2hpbGUgKCp6ID49ICcwJyAmJiAqeiA8PSAnOScpCi0rICAgIGkg PSBpICogMTAgKyAoKnorKyAtICcwJyk7Ci0rICByZXR1cm4gaTsKLSt9Ci0rCi0rLyogSSBkb24n dCBrbm93IG9mIGFueSB3YXkgdG8gcGFzcyBhbiBhcnJheSB0byBWeFdvcmtzLiAgVGhpcyBmdW5j dGlvbgotKyAgIGNhbiBiZSBjYWxsZWQgZGlyZWN0bHkgZnJvbSBnZGIuICAqLwotKwotK3Z4bWFp biAoYXJnKQotK2NoYXIgKmFyZzsKLSt7Ci0rICBjaGFyICphcmd2WzJdOwotKwotKyAgYXJndlsw XSA9ICIiOwotKyAgYXJndlsxXSA9IGFyZzsKLSsgIG1haW4gKDIsIGFyZ3YsIChjaGFyICoqKSAw KTsKLSt9Ci0rCi0rI2Vsc2UgLyogISB2eHdvcmtzICovCi0rIyAgaW5jbHVkZSA8c3RkaW8uaD4K LSsjICBpbmNsdWRlIDxzdGRsaWIuaD4KLSsjZW5kaWYgLyogISB2eHdvcmtzICovCi0rCi0rI2lm ZGVmIFBST1RPVFlQRVMKLStleHRlcm4gaW50IG1hcmtlcjEgKHZvaWQpOwotK2V4dGVybiBpbnQg bWFya2VyMiAoaW50IGEpOwotK2V4dGVybiB2b2lkIG1hcmtlcjMgKGNoYXIgKmEsIGNoYXIgKmIp OwotK2V4dGVybiB2b2lkIG1hcmtlcjQgKGxvbmcgZCk7Ci0rI2Vsc2UKLStleHRlcm4gaW50IG1h cmtlcjEgKCk7Ci0rZXh0ZXJuIGludCBtYXJrZXIyICgpOwotK2V4dGVybiB2b2lkIG1hcmtlcjMg KCk7Ci0rZXh0ZXJuIHZvaWQgbWFya2VyNCAoKTsKLSsjZW5kaWYKLSsKLSsvKgotKyAqCVRoaXMg c2ltcGxlIGNsYXNzaWNhbCBleGFtcGxlIG9mIHJlY3Vyc2lvbiBpcyB1c2VmdWwgZm9yCi0rICoJ dGVzdGluZyBzdGFjayBiYWNrdHJhY2VzIGFuZCBzdWNoLgotKyAqLwotKwotKyNpZmRlZiBQUk9U T1RZUEVTCi0raW50IGZhY3RvcmlhbChpbnQpOwotKwotK2ludAotK21haW4gKGludCBhcmdjLCBj aGFyICoqYXJndiwgY2hhciAqKmVudnApCi0rI2Vsc2UKLStpbnQKLSttYWluIChhcmdjLCBhcmd2 LCBlbnZwKQotK2ludCBhcmdjOwotK2NoYXIgKmFyZ3ZbXSwgKiplbnZwOwotKyNlbmRpZgotK3sK LSsjaWZkZWYgdXNlc3R1YnMKLSsgICAgc2V0X2RlYnVnX3RyYXBzKCk7ICAvKiBzZXQgYnJlYWtw b2ludCA1IGhlcmUgKi8KLSsgICAgYnJlYWtwb2ludCgpOwotKyNlbmRpZgotKyAgICBpZiAoYXJn YyA9PSAxMjM0NSkgeyAgLyogYW4gdW5saWtlbHkgdmFsdWUgPCAyXjE2LCBpbiBjYXNlIHVuaW5p dGVkICovIC8qIHNldCBicmVha3BvaW50IDYgaGVyZSAqLwotKwlmcHJpbnRmIChzdGRlcnIsICJ1 c2FnZTogIGZhY3RvcmlhbCA8bnVtYmVyPlxuIik7Ci0rCXJldHVybiAxOwotKyAgICB9Ci0rICAg IHByaW50ZiAoIiVkXG4iLCBmYWN0b3JpYWwgKGF0b2kgKCI2IikpKTsgIC8qIHNldCBicmVha3Bv aW50IDEgaGVyZSAqLwotKyAgICAvKiBzZXQgYnJlYWtwb2ludCAxMiBoZXJlICovCi0rICAgIG1h cmtlcjEgKCk7ICAvKiBzZXQgYnJlYWtwb2ludCAxMSBoZXJlICovCi0rICAgIG1hcmtlcjIgKDQz KTsgLyogc2V0IGJyZWFrcG9pbnQgMjAgaGVyZSAqLwotKyAgICBtYXJrZXIzICgic3RhY2siLCAi dHJhY2UiKTsgLyogc2V0IGJyZWFrcG9pbnQgMjEgaGVyZSAqLwotKyAgICBtYXJrZXI0ICgxNzc2 MDE5NzZMKTsKLSsgICAgYXJnYyA9IChhcmdjID09IDEyMzQ1KTsgLyogVGhpcyBpcyBzaWxseSwg YnV0IHdlIGNhbiBzdGVwIG9mZiBvZiBpdCAqLyAvKiBzZXQgYnJlYWtwb2ludCAyIGhlcmUgKi8K LSsgICAgcmV0dXJuIGFyZ2M7ICAvKiBzZXQgYnJlYWtwb2ludCAxMCBoZXJlICovCi0rfQotKwot KyNpZmRlZiBQUk9UT1RZUEVTCi0raW50IGZhY3RvcmlhbCAoaW50IHZhbHVlKQotKyNlbHNlCi0r aW50IGZhY3RvcmlhbCAodmFsdWUpCi0raW50IHZhbHVlOwotKyNlbmRpZgotK3sKLSsgIGlmICh2 YWx1ZSA+IDEpIHsgIC8qIHNldCBicmVha3BvaW50IDcgaGVyZSAqLwotKwl2YWx1ZSAqPSBmYWN0 b3JpYWwgKHZhbHVlIC0gMSk7Ci0rICAgIH0KLSsgICAgcmV0dXJuICh2YWx1ZSk7IC8qIHNldCBi cmVha3BvaW50IDE5IGhlcmUgKi8KLSt9Ci0rCi0rI2lmZGVmIFBST1RPVFlQRVMKLStpbnQgbXVs dGlfbGluZV9pZl9jb25kaXRpb25hbCAoaW50IGEsIGludCBiLCBpbnQgYykKLSsjZWxzZQotK2lu dCBtdWx0aV9saW5lX2lmX2NvbmRpdGlvbmFsIChhLCBiLCBjKQotKyAgaW50IGEsIGIsIGM7Ci0r I2VuZGlmCi0rewotKyAgaWYgKGEgICAgLyogc2V0IGJyZWFrcG9pbnQgMyBoZXJlICovCi0rICAg ICAgJiYgYgotKyAgICAgICYmIGMpCi0rICAgIHJldHVybiAwOwotKyAgZWxzZQotKyAgICByZXR1 cm4gMTsKLSt9Ci0rCi0rI2lmZGVmIFBST1RPVFlQRVMKLStpbnQgbXVsdGlfbGluZV93aGlsZV9j b25kaXRpb25hbCAoaW50IGEsIGludCBiLCBpbnQgYykKLSsjZWxzZQotK2ludCBtdWx0aV9saW5l X3doaWxlX2NvbmRpdGlvbmFsIChhLCBiLCBjKQotKyAgaW50IGEsIGIsIGM7Ci0rI2VuZGlmCi0r ewotKyAgd2hpbGUgKGEgLyogc2V0IGJyZWFrcG9pbnQgNCBoZXJlICovCi0rICAgICAgJiYgYgot KyAgICAgICYmIGMpCi0rICAgIHsKLSsgICAgICBhLS0sIGItLSwgYy0tOwotKyAgICB9Ci0rICBy ZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuZXhwCi1A QCAtMCwwICsxLDk1NCBAQAotKyMgICBDb3B5cmlnaHQgMTk4OCwgMTk5MCwgMTk5MSwgMTk5Miwg MTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLSsjICAgMjAwMCwgMjAwMiwgMjAw MywgMjAwNAotKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBQbGVhc2UgZW1haWwgYW55 IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKLSsjIGJ1 Zy1nZGJAcHJlcC5haS5taXQuZWR1Ci0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgUm9i IFNhdm95ZS4gKHJvYkBjeWdudXMuY29tKQotKwotKyMgVGVzdCB0aGUgc2FtZSBzdHVmZiBidXQg d2l0aCBQSUUgZXhlY3V0YWJsZXMKLSsKLStzZXQgdGVzdGZpbGUgImJyZWFrIgotK3NldCBzcmNm aWxlICR7dGVzdGZpbGV9LmMKLStzZXQgc3JjZmlsZTEgJHt0ZXN0ZmlsZX0xLmMKLStzZXQgYmlu ZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0rCi0raWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9MC5vIiBv YmplY3Qge2RlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS13IC1mcGllIC1waWUifV0gIT0gIiIgfSB7 Ci0rICAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVk LCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxseSBmYWlsLiIKLSt9 Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZTF9 IiAiJHtiaW5maWxlfTEubyIgb2JqZWN0IHtkZWJ1ZyAiYWRkaXRpb25hbF9mbGFncz0tdyAtZnBp ZSAtcGllIn1dICE9ICIiIH0gewotKyAgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0 Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9t YXRpY2FsbHkgZmFpbC4iCi0rfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtiaW5maWxlfTAu byAke2JpbmZpbGV9MS5vIiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgImFkZGl0aW9u YWxfZmxhZ3M9LXcgLWZwaWUgLXBpZSJ9XSAhPSAiIiB9IHsKLSsgICAgIGdkYl9zdXBwcmVzc19l bnRpcmVfZmlsZSAiVGVzdGNhc2UgY29tcGlsZSBmYWlsZWQsIHNvIGFsbCB0ZXN0cyBpbiB0aGlz IGZpbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGZhaWwuIgotK30KLSsKLStpZiBbZ2V0X2NvbXBpbGVy X2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4aXQKLStn ZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9h ZCAke2JpbmZpbGV9Ci0rCi0raWYgW3RhcmdldF9pbmZvIGV4aXN0cyBnZGJfc3R1Yl0gewotKyAg ICBnZGJfc3RlcF9mb3Jfc3R1YjsKLSt9Ci0rIwotKyMgdGVzdCBzaW1wbGUgYnJlYWtwb2ludCBz ZXR0aW5nIGNvbW1hbmRzCi0rIwotKwotKyMgVGVzdCBkZWxldGluZyBhbGwgYnJlYWtwb2ludHMg d2hlbiB0aGVyZSBhcmUgbm9uZSBpbnN0YWxsZWQsCi0rIyBHREIgc2hvdWxkIG5vdCBwcm9tcHQg Zm9yIGNvbmZpcm1hdGlvbi4KLSsjIE5vdGUgdGhhdCBnZGItaW5pdC5leHAgcHJvdmlkZXMgYSAi ZGVsZXRlX2JyZWFrcG9pbnRzIiBwcm9jCi0rIyBmb3IgZ2VuZXJhbCB1c2UgZWxzZXdoZXJlLgot KwotK3NlbmRfZ2RiICJkZWxldGUgYnJlYWtwb2ludHNcbiIKLStnZGJfZXhwZWN0IHsKLSsgICAg IC1yZSAiRGVsZXRlIGFsbCBicmVha3BvaW50cy4qJCIgewotKwkgICAgc2VuZF9nZGIgInlcbiIK LSsJICAgIGdkYl9leHBlY3QgewotKwkJLXJlICIkZ2RiX3Byb21wdCAkIiB7Ci0rCQkgICAgZmFp bCAiRGVsZXRlIGFsbCBicmVha3BvaW50cyB3aGVuIG5vbmUgKHVuZXhwZWN0ZWQgcHJvbXB0KSIK LSsJCX0KLSsJCXRpbWVvdXQJeyBmYWlsICJEZWxldGUgYWxsIGJyZWFrcG9pbnRzIHdoZW4gbm9u ZSAodGltZW91dCBhZnRlciB1bmV4cGVjdGVkIHByb21wdCkiIH0KLSsJICAgIH0KLSsJfQotKyAg ICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiICAgICAgIHsgcGFzcyAiRGVsZXRlIGFsbCBicmVha3Bv aW50cyB3aGVuIG5vbmUiIH0KLSsgICAgdGltZW91dAkgICAgICAgICAgICB7IGZhaWwgIkRlbGV0 ZSBhbGwgYnJlYWtwb2ludHMgd2hlbiBub25lICh0aW1lb3V0KSIgfQotK30KLSsKLSsjCi0rIyB0 ZXN0IGJyZWFrIGF0IGZ1bmN0aW9uCi0rIwotK2dkYl90ZXN0ICJicmVhayBtYWluIiBcCi0rICAg ICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZS4qIiBcCi0rICAgICJicmVh a3BvaW50IGZ1bmN0aW9uIgotKwotKyMKLSsjIHRlc3QgYnJlYWsgYXQgcXVvdGVkIGZ1bmN0aW9u Ci0rIwotK2dkYl90ZXN0ICJicmVhayBcIm1hcmtlcjJcIiIgXAotKyAgICAiQnJlYWtwb2ludC4q YXQuKiBmaWxlIC4qJHNyY2ZpbGUxLCBsaW5lLioiIFwKLSsgICAgImJyZWFrcG9pbnQgcXVvdGVk IGZ1bmN0aW9uIgotKwotKyMKLSsjIHRlc3QgYnJlYWsgYXQgZnVuY3Rpb24gaW4gZmlsZQotKyMK LStnZGJfdGVzdCAiYnJlYWsgJHNyY2ZpbGU6ZmFjdG9yaWFsIiBcCi0rICAgICJCcmVha3BvaW50 LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZS4qIiBcCi0rICAgICJicmVha3BvaW50IGZ1bmN0 aW9uIGluIGZpbGUiCi0rCi0rc2V0IGJwX2xvY2F0aW9uMSBbZ2RiX2dldF9saW5lX251bWJlciAi c2V0IGJyZWFrcG9pbnQgMSBoZXJlIl0KLSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGxpbmUgbnVt YmVyCi0rIwotKyMgTm90ZSB0aGF0IHRoZSBkZWZhdWx0IHNvdXJjZSBmaWxlIGlzIHRoZSBsYXN0 IG9uZSB3aG9zZSBzb3VyY2UgdGV4dAotKyMgd2FzIHByaW50ZWQuICBGb3IgbmF0aXZlIGRlYnVn Z2luZywgYmVmb3JlIHdlJ3ZlIGV4ZWN1dGVkIHRoZQotKyMgcHJvZ3JhbSwgdGhpcyBpcyB0aGUg ZmlsZSBjb250YWluaW5nIG1haW4sIGJ1dCBmb3IgcmVtb3RlIGRlYnVnZ2luZywKLSsjIGl0J3Mg d2hlcmV2ZXIgdGhlIHByb2Nlc3NvciB3YXMgc3RvcHBlZCB3aGVuIHdlIGNvbm5lY3RlZCB0byB0 aGUKLSsjIGJvYXJkLiAgU28sIHRvIGJlIHN1cmUsIHdlIGRvIGEgbGlzdCBjb21tYW5kLgotKyMK LStnZGJfdGVzdCAibGlzdCBtYWluIiBcCi0rICAgICIuKm1haW4gXFwoYXJnYywgYXJndiwgZW52 cFxcKS4qIiBcCi0rICAgICJ1c2UgYGxpc3QnIHRvIGVzdGFibGlzaCBkZWZhdWx0IHNvdXJjZSBm aWxlIgotK2dkYl90ZXN0ICJicmVhayAkYnBfbG9jYXRpb24xIiBcCi0rICAgICJCcmVha3BvaW50 LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBfbG9jYXRpb24xXFwuIiBcCi0rICAgICJi cmVha3BvaW50IGxpbmUgbnVtYmVyIgotKwotKyMKLSsjIHRlc3QgZHVwbGljYXRlIGJyZWFrcG9p bnQKLSsjCi0rZ2RiX3Rlc3QgImJyZWFrICRicF9sb2NhdGlvbjEiIFwKLSsgICAgIk5vdGU6IGJy ZWFrcG9pbnQgXFswLTlcXSsgYWxzbyBzZXQgYXQgcGMuKkJyZWFrcG9pbnQgXFswLTlcXSsgYXQu KiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUgJGJwX2xvY2F0aW9uMVxcLiIgXAotKyAgICAiYnJlYWtw b2ludCBkdXBsaWNhdGUiCi0rCi0rc2V0IGJwX2xvY2F0aW9uMiBbZ2RiX2dldF9saW5lX251bWJl ciAic2V0IGJyZWFrcG9pbnQgMiBoZXJlIl0KLSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGxpbmUg bnVtYmVyIGluIGZpbGUKLSsjCi0rZ2RiX3Rlc3QgImJyZWFrICRzcmNmaWxlOiRicF9sb2NhdGlv bjIiIFwKLSsgICAgIkJyZWFrcG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxlLCBsaW5lICRicF9s b2NhdGlvbjJcXC4iIFwKLSsgICAgImJyZWFrcG9pbnQgbGluZSBudW1iZXIgaW4gZmlsZSIKLSsK LStzZXQgYnBfbG9jYXRpb24zIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAz IGhlcmUiXQotK3NldCBicF9sb2NhdGlvbjQgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVh a3BvaW50IDQgaGVyZSJdCi0rCi0rIwotKyMgVGVzdCBwdXR0aW5nIGEgYnJlYWsgYXQgdGhlIHN0 YXJ0IG9mIGEgbXVsdGktbGluZSBpZiBjb25kaXRpb25hbC4KLSsjIFZlcmlmeSB0aGUgYnJlYWtw b2ludCB3YXMgcHV0IGF0IHRoZSBzdGFydCBvZiB0aGUgY29uZGl0aW9uYWwuCi0rIwotK2dkYl90 ZXN0ICJicmVhayBtdWx0aV9saW5lX2lmX2NvbmRpdGlvbmFsIiBcCi0rICAgICJCcmVha3BvaW50 LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBfbG9jYXRpb24zXFwuIiBcCi0rICAgICJi cmVha3BvaW50IGF0IHN0YXJ0IG9mIG11bHRpIGxpbmUgaWYgY29uZGl0aW9uYWwiCi0rCi0rZ2Ri X3Rlc3QgImJyZWFrIG11bHRpX2xpbmVfd2hpbGVfY29uZGl0aW9uYWwiIFwKLSsgICAgIkJyZWFr cG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxlLCBsaW5lICRicF9sb2NhdGlvbjRcXC4iIFwKLSsg ICAgImJyZWFrcG9pbnQgYXQgc3RhcnQgb2YgbXVsdGkgbGluZSB3aGlsZSBjb25kaXRpb25hbCIK LSsKLStzZXQgYnBfbG9jYXRpb241IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2lu dCA1IGhlcmUiXQotK3NldCBicF9sb2NhdGlvbjYgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBi cmVha3BvaW50IDYgaGVyZSJdCi0rCi0rIwotKyMgY2hlY2sgdG8gc2VlIHdoYXQgYnJlYWtwb2lu dHMgYXJlIHNldAotKyMKLStpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYl9zdHViXSB7Ci0rICAg IHNldCBtYWluX2xpbmUgJGJwX2xvY2F0aW9uNQotK30gZWxzZSB7Ci0rICAgIHNldCBtYWluX2xp bmUgJGJwX2xvY2F0aW9uNgotK30KLSsKLStzZXQgcHJvdG8gIiIKLSsKLStzZXQgYnBfbG9jYXRp b243IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCA3IGhlcmUiXQotK3NldCBi cF9sb2NhdGlvbjggW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDggaGVyZSIg JHNyY2ZpbGUxXQotK3NldCBicF9sb2NhdGlvbjkgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBi cmVha3BvaW50IDkgaGVyZSIgJHNyY2ZpbGUxXQotKwotKyMgVGVzdCBhIHBlbmRpbmcgYnJlYWtw b2ludCBpbiBQSUUgZXhlY3V0YWJsZSBkb2VzIG5vdCBjcmFzaCBsYXRlciBHREIuCi0rZ2RiX2Jy ZWFrcG9pbnQgIm5vbl9leGlzdGVudF9mdW5jdGlvbiIgYWxsb3ctcGVuZGluZwotKwotK2dkYl90 ZXN0ICJpbmZvIGJyZWFrIiBcCi0rICAgICJOdW1cWyBcXStUeXBlXFsgXF0rRGlzcCBFbmIgQWRk cmVzc1xbIFxdK1doYXQuKgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHku KiBpbiBtYWluIGF0IC4qJHNyY2ZpbGU6JG1haW5fbGluZS4qCi0rXFswLTlcXStcW1x0IFxdK2Jy ZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1hcmtlcjIgYXQgLiokc3JjZmlsZTE6KCRicF9sb2Nh dGlvbjh8JGJwX2xvY2F0aW9uOSkuKgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBr ZWVwIHkuKiBpbiBmYWN0b3JpYWwkcHJvdG8gYXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb243LioK LStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5LiogaW4gbWFpbiBhdCAuKiRz cmNmaWxlOiRicF9sb2NhdGlvbjEuKgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBr ZWVwIHkuKiBpbiBtYWluIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9uMS4qCi0rXFswLTlcXStc W1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1haW4gYXQgLiokc3JjZmlsZTokYnBf bG9jYXRpb24yLioKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5LiogaW4g bXVsdGlfbGluZV9pZl9jb25kaXRpb25hbCBhdCAuKiRzcmNmaWxlOiRicF9sb2NhdGlvbjMuKgot K1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHkuKiBpbiBtdWx0aV9saW5lX3do aWxlX2NvbmRpdGlvbmFsIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9uNC4qCi0rXFswLTlcXStc W1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIDxQRU5ESU5HPiAqbm9uX2V4aXN0ZW50X2Z1 bmN0aW9uIiBcCi0rICAgICJicmVha3BvaW50IGluZm8iCi0rCi0rIyBGSVhNRTogVGhlIHJlc3Qg b2YgdGhpcyB0ZXN0IGRvZXNuJ3Qgd29yayB3aXRoIGFueXRoaW5nIHRoYXQgY2FuJ3QKLSsjIGhh bmRsZSBhcmd1bWVudHMuCi0rIyBIdWg/IFRoZXJlIGRvZXNuJ3QgKmFwcGVhciogdG8gYmUgYW55 dGhpbmcgdGhhdCBwYXNzZXMgYXJndW1lbnRzCi0rIyBiZWxvdy4KLStpZiBbaXN0YXJnZXQgIm1p cHMtaWR0LSoiXSB0aGVuIHsKLSsgICAgcmV0dXJuCi0rfQotKwotKyMKLSsjIHJ1biB1bnRpbCB0 aGUgYnJlYWtwb2ludCBhdCBtYWluIGlzIGhpdC4gRm9yIG5vbi1zdHVicy11c2luZyB0YXJnZXRz LgotKyMKLStpZiAhW3RhcmdldF9pbmZvIGV4aXN0cyB1c2VfZ2RiX3N0dWJdIHsKLSsgIGlmIFtp c3RhcmdldCAiKi0qLXZ4d29ya3MqIl0gdGhlbiB7Ci0rICAgIHNlbmRfZ2RiICJydW4gdnhtYWlu IFwiMlwiXG4iCi0rICAgIHNldCB0aW1lb3V0IDEyMAotKyAgICB2ZXJib3NlICJUaW1lb3V0IGlz IG5vdyAkdGltZW91dCBzZWNvbmRzIiAyCi0rICB9IGVsc2UgewotKwlzZW5kX2dkYiAicnVuXG4i Ci0rICB9Ci0rICBnZGJfZXhwZWN0IHsKLSsgICAgLXJlICJUaGUgcHJvZ3JhbSAuKiBoYXMgYmVl biBzdGFydGVkIGFscmVhZHkuKnkgb3Igbi4gJCIgewotKwlzZW5kX2dkYiAieVxuIgotKwlleHBf Y29udGludWUKLSsgICAgfQotKyAgICAtcmUgIlN0YXJ0aW5nIHByb2dyYW0uKkJyZWFrcG9pbnQg XFswLTlcXSssLiptYWluIC4qYXJnYy4qYXJndi4qIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9u Ni4qJGJwX2xvY2F0aW9uNlxbXHQgXF0raWYgLmFyZ2MuKiBcey4qJGdkYl9wcm9tcHQgJCJcCi0r CSAgICAgICAgICAgICAgICAgICAgeyBwYXNzICJydW4gdW50aWwgZnVuY3Rpb24gYnJlYWtwb2lu dCIgfQotKyAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIgICAgICAgeyBmYWlsICJydW4gdW50aWwg ZnVuY3Rpb24gYnJlYWtwb2ludCIgfQotKyAgICB0aW1lb3V0CSAgICAgICAgICAgIHsgZmFpbCAi cnVuIHVudGlsIGZ1bmN0aW9uIGJyZWFrcG9pbnQgKHRpbWVvdXQpIiB9Ci0rICB9Ci0rfSBlbHNl IHsKLSsgICAgaWYgIVt0YXJnZXRfaW5mbyBleGlzdHMgZ2RiX3N0dWJdIHsKLSsJZ2RiX3Rlc3Qg Y29udGludWUgIi4qQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgbWFpbiBcXChh cmdjPS4qLCBhcmd2PS4qLCBlbnZwPS4qXFwpIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9uNi4q JGJwX2xvY2F0aW9uNlxbXHQgXF0raWYgLmFyZ2MuKlx7LioiICJzdHViIGNvbnRpbnVlIgotKyAg ICB9Ci0rfQotKwotKyMKLSsjIHJ1biB1bnRpbCB0aGUgYnJlYWtwb2ludCBhdCBhIGxpbmUgbnVt YmVyCi0rIwotK2dkYl90ZXN0IGNvbnRpbnVlICJDb250aW51aW5nXFwuLipCcmVha3BvaW50IFxb MC05XF0rLCBtYWluIFxcKGFyZ2M9LiosIGFyZ3Y9LiosIGVudnA9LipcXCkgYXQgLiokc3JjZmls ZTokYnBfbG9jYXRpb24xLiokYnBfbG9jYXRpb24xXFtcdCBcXStwcmludGYuKmZhY3RvcmlhbC4q IiBcCi0rCQkJInJ1biB1bnRpbCBicmVha3BvaW50IHNldCBhdCBhIGxpbmUgbnVtYmVyIgotKwot KyMKLSsjIFJ1biB1bnRpbCB0aGUgYnJlYWtwb2ludCBzZXQgaW4gYSBmdW5jdGlvbiBpbiBhIGZp bGUKLSsjCi0rZm9yIHtzZXQgaSA2fSB7JGkgPj0gMX0ge2luY3IgaSAtMX0gewotKwlnZGJfdGVz dCBjb250aW51ZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgZmFjdG9yaWFs IFxcKHZhbHVlPSRpXFwpIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9uNy4qJGJwX2xvY2F0aW9u N1xbXHQgXF0rLippZiAudmFsdWUgPiAxLiBcey4qIiBcCi0rCQkJInJ1biB1bnRpbCBmaWxlOmZ1 bmN0aW9uKCRpKSBicmVha3BvaW50IgotK30KLSsKLSsjCi0rIyBSdW4gdW50aWwgdGhlIGJyZWFr cG9pbnQgc2V0IGF0IGEgcXVvdGVkIGZ1bmN0aW9uCi0rIwotK2dkYl90ZXN0IGNvbnRpbnVlICJD b250aW51aW5nXFwuLipCcmVha3BvaW50IFxbMC05XF0rLCAoMHhcWzAtOWEtZlxdKyBpbiApP21h cmtlcjIgXFwoYT00M1xcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRp b245KS4qIiBcCi0rCQkicnVuIHVudGlsIHF1b3RlZCBicmVha3BvaW50IgotKyMKLSsjIHJ1biB1 bnRpbCB0aGUgZmlsZTpmdW5jdGlvbiBicmVha3BvaW50IGF0IGEgbGluZSBudW1iZXIgaW4gYSBm aWxlCi0rIwotK2dkYl90ZXN0IGNvbnRpbnVlICJDb250aW51aW5nXFwuLipCcmVha3BvaW50IFxb MC05XF0rLCBtYWluIFxcKGFyZ2M9LiosIGFyZ3Y9LiosIGVudnA9LipcXCkgYXQgLiokc3JjZmls ZTokYnBfbG9jYXRpb24yLiokYnBfbG9jYXRpb24yXFtcdCBcXSthcmdjID0gXFwoYXJnYyA9PSAx MjM0NVxcKTsuKiIgXAotKwkJInJ1biB1bnRpbCBmaWxlOmxpbmVudW0gYnJlYWtwb2ludCIKLSsK LSsjIFRlc3QgYnJlYWsgYXQgb2Zmc2V0ICsxCi0rc2V0IGJwX2xvY2F0aW9uMTAgW2dkYl9nZXRf bGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDEwIGhlcmUiXQotKwotK2dkYl90ZXN0ICJicmVh ayArMSIgXAotKyAgICAiQnJlYWtwb2ludC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUgJGJw X2xvY2F0aW9uMTBcXC4iIFwKLSsgICAgImJyZWFrcG9pbnQgb2Zmc2V0ICsxIgotKwotKyMgQ2hl Y2sgdG8gc2VlIGlmIGJyZWFrcG9pbnQgaXMgaGl0IHdoZW4gc3RlcHBlZCBvbnRvCi0rCi0rZ2Ri X3Rlc3QgInN0ZXAiIFwKLSsgICAgIi4qQnJlYWtwb2ludCBcWzAtOVxdKywgbWFpbiBcXChhcmdj PS4qLCBhcmd2PS4qLCBlbnZwPS4qXFwpIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9uMTAuKiRi cF9sb2NhdGlvbjEwXFtcdCBcXStyZXR1cm4gYXJnYzsuKmJyZWFrcG9pbnQgMTAgaGVyZS4qIiBc Ci0rICAgICJzdGVwIG9udG8gYnJlYWtwb2ludCIKLSsKLSsjCi0rIyBkZWxldGUgYWxsIGJyZWFr cG9pbnRzIHNvIHdlIGNhbiBzdGFydCBvdmVyLCBjb3Vyc2UgdGhpcyBjYW4gYmUgYSB0ZXN0IHRv bwotKyMKLStkZWxldGVfYnJlYWtwb2ludHMKLSsKLSsjCi0rIyB0ZXN0IHRlbXBvcmFyeSBicmVh a3BvaW50IGF0IGZ1bmN0aW9uCi0rIwotKwotK2dkYl90ZXN0ICJ0YnJlYWsgbWFpbiIgInJlYWtw b2ludC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUuKiIgIlRlbXBvcmFyeSBicmVha3BvaW50 IGZ1bmN0aW9uIgotKwotKyMKLSsjIHRlc3QgYnJlYWsgYXQgZnVuY3Rpb24gaW4gZmlsZQotKyMK LSsKLStnZGJfdGVzdCAidGJyZWFrICRzcmNmaWxlOmZhY3RvcmlhbCIgInJlYWtwb2ludC4qYXQu KiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUuKiIgXAotKwkiVGVtcG9yYXJ5IGJyZWFrcG9pbnQgZnVu Y3Rpb24gaW4gZmlsZSIKLSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGxpbmUgbnVtYmVyCi0rIwot K3NlbmRfZ2RiICJ0YnJlYWsgJGJwX2xvY2F0aW9uMVxuIgotK2dkYl9leHBlY3QgewotKyAgICAt cmUgInJlYWtwb2ludC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUgJGJwX2xvY2F0aW9uMS4q JGdkYl9wcm9tcHQgJCIgeyBwYXNzICJUZW1wb3JhcnkgYnJlYWtwb2ludCBsaW5lIG51bWJlciAj MSIgfQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgICB7IHBhc3MgIlRlbXBvcmFyeSBicmVha3Bv aW50IGxpbmUgbnVtYmVyICMxIiB9Ci0rCXRpbWVvdXQJICAgIHsgZmFpbCAiYnJlYWtwb2ludCBs aW5lIG51bWJlciAjMSAodGltZW91dCkiIH0KLSt9Ci0rCi0rZ2RiX3Rlc3QgInRicmVhayAkYnBf bG9jYXRpb242IiAicmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBfbG9j YXRpb242LioiICJUZW1wb3JhcnkgYnJlYWtwb2ludCBsaW5lIG51bWJlciAjMiIKLSsKLSsjCi0r IyB0ZXN0IGJyZWFrIGF0IGxpbmUgbnVtYmVyIGluIGZpbGUKLSsjCi0rc2VuZF9nZGIgInRicmVh ayAkc3JjZmlsZTokYnBfbG9jYXRpb24yXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAgIC1yZSAicmVh a3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBfbG9jYXRpb24yLiokZ2RiX3By b21wdCAkIiB7IHBhc3MgIlRlbXBvcmFyeSBicmVha3BvaW50IGxpbmUgbnVtYmVyIGluIGZpbGUg IzEiIH0KLSsJLXJlICIuKiRnZGJfcHJvbXB0ICQiICAgeyBwYXNzICJUZW1wb3JhcnkgYnJlYWtw b2ludCBsaW5lIG51bWJlciBpbiBmaWxlICMxIiB9Ci0rCXRpbWVvdXQJICAgIHsgZmFpbCAiVGVt cG9yYXJ5IGJyZWFrcG9pbnQgbGluZSBudW1iZXIgaW4gZmlsZSAjMSAodGltZW91dCkiIH0KLSt9 Ci0rCi0rc2V0IGJwX2xvY2F0aW9uMTEgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3Bv aW50IDExIGhlcmUiXQotK2dkYl90ZXN0ICAidGJyZWFrICRzcmNmaWxlOiRicF9sb2NhdGlvbjEx IiAicmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBfbG9jYXRpb24xMS4q IiAiVGVtcG9yYXJ5IGJyZWFrcG9pbnQgbGluZSBudW1iZXIgaW4gZmlsZSAjMiIKLSsKLSsjCi0r IyBjaGVjayB0byBzZWUgd2hhdCBicmVha3BvaW50cyBhcmUgc2V0ICh0ZW1wb3JhcnkgdGhpcyB0 aW1lKQotKyMKLStnZGJfdGVzdCAiaW5mbyBicmVhayIgIk51bS4qVHlwZS4qRGlzcCBFbmIgQWRk cmVzcy4qV2hhdC4qXFtcclxuXF0KLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAgZGVs Lip5LippbiBtYWluIGF0IC4qJHNyY2ZpbGU6JG1haW5fbGluZS4qXFtcclxuXF0KLStcWzAtOVxd K1xbXHQgXF0rYnJlYWtwb2ludCAgICAgZGVsLip5LippbiBmYWN0b3JpYWwkcHJvdG8gYXQgLiok c3JjZmlsZTokYnBfbG9jYXRpb243LipcW1xyXG5cXQotK1xbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBkZWwuKnkuKmluIG1haW4gYXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb24xLipcW1xy XG5cXQotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBkZWwuKnkuKmluIG1haW4gYXQg Liokc3JjZmlsZTokYnBfbG9jYXRpb242LipcW1xyXG5cXQotK1xbMC05XF0rXFtcdCBcXSticmVh a3BvaW50ICAgICBkZWwuKnkuKmluIG1haW4gYXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb24yLipc W1xyXG5cXQotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBkZWwuKnkuKmluIG1haW4g YXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb24xMS4qIiBcCi0rICAgICJUZW1wb3JhcnkgYnJlYWtw b2ludCBpbmZvIgotKwotKwotKyMqKioqKioqKioqKgotKwotKyMgVmVyaWZ5IHRoYXQgY2F0Y2hw b2ludHMgZm9yIGZvcmssIHZmb3JrIGFuZCBleGVjIGRvbid0IHRyaWdnZXIKLSsjIGluYXBwcm9w cmlhdGVseS4gIChUaGVyZSBhcmUgbm8gY2FsbHMgdG8gdGhvc2Ugc3lzdGVtIGZ1bmN0aW9ucwot KyMgaW4gdGhpcyB0ZXN0IHByb2dyYW0uKQotKyMKLStpZiAhW3J1bnRvX21haW5dIHRoZW4geyBm YWlsICJicmVhayB0ZXN0cyBzdXBwcmVzc2VkIiB9Ci0rCi0rc2VuZF9nZGIgImNhdGNoXG4iCi0r Z2RiX2V4cGVjdCB7Ci0rICAtcmUgIkxpc3Qgb2YgY2F0Y2ggc3ViY29tbWFuZHM6LiokZ2RiX3By b21wdCAkIlwKLSsgICAgICAgICAge3Bhc3MgImNhdGNoIHJlcXVpcmVzIGFuIGV2ZW50IG5hbWUi fQotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwgImNhdGNoIHJlcXVp cmVzIGFuIGV2ZW50IG5hbWUifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGNhdGNoIHJl cXVpcmVzIGFuIGV2ZW50IG5hbWUifQotK30KLSsKLSsKLStzZXQgbmFtZSAic2V0IGNhdGNoIGZv cmssIG5ldmVyIGV4cGVjdGVkIHRvIHRyaWdnZXIiCi0rc2VuZF9nZGIgImNhdGNoIGZvcmtcbiIK LStnZGJfZXhwZWN0IHsKLSsgIC1yZSAiQ2F0Y2hwb2ludCBcWzAtOVxdKiAuZm9yay4uKiRnZGJf cHJvbXB0ICQiCi0rICAgICAgICAgIHtwYXNzICRuYW1lfQotKyAgLXJlICJDYXRjaCBvZiBmb3Jr IG5vdCB5ZXQgaW1wbGVtZW50ZWQuKiRnZGJfcHJvbXB0ICQiCi0rCSAge3Bhc3MgJG5hbWV9Ci0r ICAtcmUgIiRnZGJfcHJvbXB0ICQiCi0rICAgICAgICAgIHtmYWlsICRuYW1lfQotKyAgdGltZW91 dCB7ZmFpbCAiKHRpbWVvdXQpICRuYW1lIn0KLSt9Ci0rCi0rCi0rc2V0IG5hbWUgInNldCBjYXRj aCB2Zm9yaywgbmV2ZXIgZXhwZWN0ZWQgdG8gdHJpZ2dlciIKLStzZW5kX2dkYiAiY2F0Y2ggdmZv cmtcbiIKLSsKLSsjIElmIHdlIGFyZSBvbiBIUC1VWCAxMC4yMCwgd2UgZXhwZWN0IGFuIGVycm9y IG1lc3NhZ2UgdG8gYmUKLSsjIHByaW50ZWQgaWYgd2UgdHlwZSAiY2F0Y2ggdmZvcmsiIGF0IHRo ZSBnZGIgZ2RiX3Byb21wdC4gIFRoaXMgaXMKLSsjIGJlY2F1c2Ugb24gSFAtVVggMTAuMjAsIHdl IGNhbm5vdCBjYXRjaCB2Zm9yayBldmVudHMuCi0rCi0raWYgW2lzdGFyZ2V0ICJocHBhKi1ocC1o cHV4MTAuMjAiXSB0aGVuIHsKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiQ2F0Y2ggb2YgdmZv cmsgZXZlbnRzIG5vdCBzdXBwb3J0ZWQgb24gSFAtVVggMTAuMjAuLiokZ2RiX3Byb21wdCAkIgot KwkJe3Bhc3MgJG5hbWV9Ci0rCS1yZSAiJGdkYl9wcm9tcHQgJCIKLSsJCXtmYWlsICRuYW1lfQot Kwl0aW1lb3V0IHtmYWlsICIodGltZW91dCkgJG5hbWUifQotKyAgICB9Ci0rfSBlbHNlIHsKLSsg ICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiQ2F0Y2hwb2ludCBcWzAtOVxdKiAudmZvcmsuLiokZ2Ri X3Byb21wdCAkIgotKwkJe3Bhc3MgJG5hbWV9Ci0rCS1yZSAiQ2F0Y2ggb2YgdmZvcmsgbm90IHll dCBpbXBsZW1lbnRlZC4qJGdkYl9wcm9tcHQgJCIKLSsJCXtwYXNzICRuYW1lfQotKwktcmUgIiRn ZGJfcHJvbXB0ICQiCi0rCQl7ZmFpbCAkbmFtZX0KLSsJdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQp ICRuYW1lIn0KLSsgICAgfQotK30KLSsKLStzZXQgbmFtZSAic2V0IGNhdGNoIGV4ZWMsIG5ldmVy IGV4cGVjdGVkIHRvIHRyaWdnZXIiCi0rc2VuZF9nZGIgImNhdGNoIGV4ZWNcbiIKLStnZGJfZXhw ZWN0IHsKLSsgIC1yZSAiQ2F0Y2hwb2ludCBcWzAtOVxdKiAuZXhlYy4uKiRnZGJfcHJvbXB0ICQi Ci0rICAgICAgICAgIHtwYXNzICRuYW1lfQotKyAgLXJlICJDYXRjaCBvZiBleGVjIG5vdCB5ZXQg aW1wbGVtZW50ZWQuKiRnZGJfcHJvbXB0ICQiCi0rCSAge3Bhc3MgJG5hbWV9Ci0rICAtcmUgIiRn ZGJfcHJvbXB0ICQiIHtmYWlsICRuYW1lfQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpICRu YW1lIn0KLSt9Ci0rCi0rIyBWZXJpZnkgdGhhdCBHREIgcmVzcG9uZHMgZ3JhY2VmdWxseSB3aGVu IGFza2VkIHRvIHNldCBhIGJyZWFrcG9pbnQKLSsjIG9uIGEgbm9uZXhpc3RlbnQgc291cmNlIGxp bmUuCi0rIwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGJyZWFrcG9pbnQgcGVuZGluZyBvZmYi Ci0rZ2RiX3Rlc3QgImJyZWFrIDk5OSIgXAotKyAgICAiTm8gbGluZSA5OTkgaW4gdGhlIGN1cnJl bnQgZmlsZS4iIFwKLSsgICAgImJyZWFrIG9uIG5vbi1leGlzdGVudCBzb3VyY2UgbGluZSIKLSsK LSsjIFJ1biB0byB0aGUgZGVzaXJlZCBkZWZhdWx0IGxvY2F0aW9uLiBJZiBub3QgcG9zaXRpb25l ZCBoZXJlLCB0aGUKLSsjIHRlc3RzIGJlbG93IGRvbid0IHdvcmsuCi0rIwotK2dkYl90ZXN0ICJ1 bnRpbCAkYnBfbG9jYXRpb24xIiAibWFpbiAuKiBhdCAuKjokYnBfbG9jYXRpb24xLioiICJ1bnRp bCBicF9sb2NhdGlvbjEiCi0rCi0rCi0rIyBWZXJpZnkgdGhhdCBHREIgYWxsb3dzIG9uZSB0byBq dXN0IHNheSAiYnJlYWsiLCB3aGljaCBpcyB0cmVhdGVkCi0rIyBhcyB0aGUgImRlZmF1bHQiIGJy ZWFrcG9pbnQuICBOb3RlIHRoYXQgR0RCIGdldHMgY3V0ZSB3aGVuIHByaW50aW5nCi0rIyB0aGUg aW5mb3JtYXRpb25hbCBtZXNzYWdlIGFib3V0IG90aGVyIGJyZWFrcG9pbnRzIGF0IHRoZSBzYW1l Ci0rIyBsb2NhdGlvbi4gIFdlJ2xsIGhpdCB0aGF0IGJpcmQgd2l0aCB0aGlzIHN0b25lIHRvby4K LSsjCi0rc2VuZF9nZGIgImJyZWFrXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIkJyZWFrcG9p bnQgXFswLTlcXSouKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAiYnJlYWsgb24g ZGVmYXVsdCBsb2NhdGlvbiwgMXN0IHRpbWUifQotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsg ICAgICAgICAge2ZhaWwgImJyZWFrIG9uIGRlZmF1bHQgbG9jYXRpb24sIDFzdCB0aW1lIn0KLSsg IHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBicmVhayBvbiBkZWZhdWx0IGxvY2F0aW9uLCAxc3Qg dGltZSJ9Ci0rfQotKwotK3NlbmRfZ2RiICJicmVha1xuIgotK2dkYl9leHBlY3QgewotKyAgLXJl ICJOb3RlOiBicmVha3BvaW50IFxbMC05XF0qIGFsc28gc2V0IGF0IC4qQnJlYWtwb2ludCBcWzAt OVxdKi4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJicmVhayBvbiBkZWZhdWx0 IGxvY2F0aW9uLCAybmQgdGltZSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAg ICB7ZmFpbCAiYnJlYWsgb24gZGVmYXVsdCBsb2NhdGlvbiwgMm5kIHRpbWUifQotKyAgdGltZW91 dCB7ZmFpbCAiKHRpbWVvdXQpIGJyZWFrIG9uIGRlZmF1bHQgbG9jYXRpb24sIDJuZCB0aW1lIn0K LSt9Ci0rCi0rc2VuZF9nZGIgImJyZWFrXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIk5vdGU6 IGJyZWFrcG9pbnRzIFxbMC05XF0qIGFuZCBcWzAtOVxdKiBhbHNvIHNldCBhdCAuKkJyZWFrcG9p bnQgXFswLTlcXSouKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAiYnJlYWsgb24g ZGVmYXVsdCBsb2NhdGlvbiwgM3JkIHRpbWUifQotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsg ICAgICAgICAge2ZhaWwgImJyZWFrIG9uIGRlZmF1bHQgbG9jYXRpb24sIDNyZCB0aW1lIn0KLSsg IHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBicmVhayBvbiBkZWZhdWx0IGxvY2F0aW9uLCAzcmQg dGltZSJ9Ci0rfQotKwotK3NlbmRfZ2RiICJicmVha1xuIgotK2dkYl9leHBlY3QgewotKyAgLXJl ICJOb3RlOiBicmVha3BvaW50cyBcWzAtOVxdKiwgXFswLTlcXSogYW5kIFxbMC05XF0qIGFsc28g c2V0IGF0IC4qQnJlYWtwb2ludCBcWzAtOVxdKi4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAg IHtwYXNzICJicmVhayBvbiBkZWZhdWx0IGxvY2F0aW9uLCA0dGggdGltZSJ9Ci0rICAtcmUgIiRn ZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAiYnJlYWsgb24gZGVmYXVsdCBsb2NhdGlv biwgNHRoIHRpbWUifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGJyZWFrIG9uIGRlZmF1 bHQgbG9jYXRpb24sIDR0aCB0aW1lIn0KLSt9Ci0rCi0rIyBWZXJpZnkgdGhhdCBhICJzaWxlbnQi IGJyZWFrcG9pbnQgY2FuIGJlIHNldCwgYW5kIHRoYXQgR0RCIGlzIGluZGVlZAotKyMgInNpbGVu dCIgYWJvdXQgaXRzIHRyaWdnZXJpbmcuCi0rIwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7IGZh aWwgImJyZWFrIHRlc3RzIHN1cHByZXNzZWQiIH0KLSsKLStzZW5kX2dkYiAiYnJlYWsgJGJwX2xv Y2F0aW9uMVxuIgotK2dkYl9leHBlY3QgewotKyAgLXJlICJCcmVha3BvaW50IChcWzAtOVxdKikg YXQgLiosIGxpbmUgJGJwX2xvY2F0aW9uMS4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtw YXNzICJzZXQgdG8tYmUtc2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0rICAtcmUgIiRnZGJf cHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAic2V0IHRvLWJlLXNpbGVudCBicmVhayBicF9s b2NhdGlvbjEifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIHNldCB0by1iZS1zaWxlbnQg YnJlYWsgYnBfbG9jYXRpb24xIn0KLSt9Ci0rCi0rc2VuZF9nZGIgImNvbW1hbmRzICRleHBlY3Rf b3V0KDEsc3RyaW5nKVxuIgotK3NlbmRfZ2RiICJzaWxlbnRcbiIKLStzZW5kX2dkYiAiZW5kXG4i Ci0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIi4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtw YXNzICJzZXQgc2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0rICB0aW1lb3V0IHtmYWlsICIo dGltZW91dCkgc2V0IHNpbGVudCBicmVhayBicF9sb2NhdGlvbjEifQotK30KLSsKLStzZW5kX2dk YiAiaW5mbyBicmVhayAkZXhwZWN0X291dCgxLHN0cmluZylcbiIKLStnZGJfZXhwZWN0IHsKLSsg IC1yZSAiXFswLTlcXSpcWyBcdFxdKmJyZWFrcG9pbnQuKjokYnBfbG9jYXRpb24xXHJcblxbIFx0 XF0qc2lsZW50LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bhc3MgImluZm8gc2lsZW50 IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAg ICB7ZmFpbCAiaW5mbyBzaWxlbnQgYnJlYWsgYnBfbG9jYXRpb24xIn0KLSsgIHRpbWVvdXQge2Zh aWwgIih0aW1lb3V0KSBpbmZvIHNpbGVudCBicmVhayBicF9sb2NhdGlvbjEifQotK30KLStzZW5k X2dkYiAiY29udGludWVcbiIKLStnZGJfZXhwZWN0IHsKLSsgIC1yZSAiQ29udGludWluZy5cclxu JGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJoaXQgc2lsZW50IGJyZWFrIGJwX2xv Y2F0aW9uMSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAiaGl0 IHNpbGVudCBicmVhayBicF9sb2NhdGlvbjEifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQp IGhpdCBzaWxlbnQgYnJlYWsgYnBfbG9jYXRpb24xIn0KLSt9Ci0rc2VuZF9nZGIgImJ0XG4iCi0r Z2RiX2V4cGVjdCB7Ci0rICAtcmUgIiMwICBtYWluIC4qIGF0IC4qOiRicF9sb2NhdGlvbjEuKiRn ZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAic3RvcHBlZCBmb3Igc2lsZW50IGJyZWFr IGJwX2xvY2F0aW9uMSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFp bCAic3RvcHBlZCBmb3Igc2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0rICB0aW1lb3V0IHtm YWlsICIodGltZW91dCkgc3RvcHBlZCBmb3Igc2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0r fQotKwotKyMgVmVyaWZ5IHRoYXQgR0RCIGNhbiBhdCBsZWFzdCBwYXJzZSBhIGJyZWFrcG9pbnQg d2l0aCB0aGUKLSsjICJ0aHJlYWQiIGtleXdvcmQuICAoV2Ugd29uJ3QgYXR0ZW1wdCB0byB0ZXN0 IGhlcmUgdGhhdCBhCi0rIyB0aHJlYWQtc3BlY2lmaWMgYnJlYWtwb2ludCByZWFsbHkgdHJpZ2dl cnMgYXBwcm9wcmlhdGVseS4KLSsjIFRoZSBnZGIudGhyZWFkcyBzdWJkaXJlY3RvcnkgY29udGFp bnMgdGVzdHMgZm9yIHRoYXQuKQotKyMKLStzZXQgYnBfbG9jYXRpb24xMiBbZ2RiX2dldF9saW5l X251bWJlciAic2V0IGJyZWFrcG9pbnQgMTIgaGVyZSJdCi0rc2VuZF9nZGIgImJyZWFrICRicF9s b2NhdGlvbjEyIHRocmVhZCA5OTlcbiIKLStnZGJfZXhwZWN0IHsKLSsgIC1yZSAiVW5rbm93biB0 aHJlYWQgOTk5LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bhc3MgInRocmVhZC1zcGVj aWZpYyBicmVha3BvaW50IG9uIG5vbi1leGlzdGVudCB0aHJlYWQgZGlzYWxsb3dlZCJ9Ci0rICAt cmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAidGhyZWFkLXNwZWNpZmljIGJy ZWFrcG9pbnQgb24gbm9uLWV4aXN0ZW50IHRocmVhZCBkaXNhbGxvd2VkIn0KLSsgIHRpbWVvdXQg e2ZhaWwgIih0aW1lb3V0KSB0aHJlYWQtc3BlY2lmaWMgYnJlYWtwb2ludCBvbiBub24tZXhpc3Rl bnQgdGhyZWFkIGRpc2FsbG93ZWQifQotK30KLSsKLStnZGJfdGVzdCAiYnJlYWsgJGJwX2xvY2F0 aW9uMTIgdGhyZWFkIGZvbyIgXAotKyAgICAiSW52YWxpZCB0aHJlYWQgSUQ6IGZvbyIgXAotKyAg ICAidGhyZWFkLXNwZWNpZmljIGJyZWFrcG9pbnQgb24gYm9ndXMgdGhyZWFkIElEIGRpc2FsbG93 ZWQiCi0rCi0rIyBWZXJpZnkgdGhhdCBHREIgcmVzcG9uZHMgZ3JhY2VmdWxseSB0byBhIGJyZWFr cG9pbnQgY29tbWFuZCB3aXRoCi0rIyB0cmFpbGluZyBnYXJiYWdlLgotKyMKLStzZW5kX2dkYiAi YnJlYWsgJGJwX2xvY2F0aW9uMTIgZm9vXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIm1hbGZv cm1lZCBsaW5lc3BlYyBlcnJvcjogdW5leHBlY3RlZCBzdHJpbmcsIFwiZm9vXCJcclxuJGdkYl9w cm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJicmVha3BvaW50IHdpdGggdHJhaWxpbmcgZ2Fy YmFnZSBkaXNhbGxvd2VkIn0KLSsgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtm YWlsICJicmVha3BvaW50IHdpdGggdHJhaWxpbmcgZ2FyYmFnZSBkaXNhbGxvd2VkIn0KLSsgIHRp bWVvdXQge2ZhaWwgIih0aW1lb3V0KSBicmVha3BvaW50IHdpdGggdHJhaWxpbmcgZ2FyYmFnZSBk aXNhbGxvd2VkIn0KLSt9Ci0rCi0rIyBWZXJpZnkgdGhhdCBHREIgcmVzcG9uZHMgZ3JhY2VmdWxs eSB0byBhICJjbGVhciIgY29tbWFuZCB0aGF0IGhhcwotKyMgbm8gbWF0Y2hpbmcgYnJlYWtwb2lu dC4gIChGaXJzdCwgZ2V0IHVzIG9mZiB0aGUgY3VycmVudCBzb3VyY2UgbGluZSwKLSsjIHdoaWNo IHdlIGtub3cgaGFzIGEgYnJlYWtwb2ludC4pCi0rIwotK3NlbmRfZ2RiICJuZXh0XG4iCi0rZ2Ri X2V4cGVjdCB7Ci0rICAtcmUgIi4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJz dGVwIG92ZXIgYnJlYWtwb2ludCJ9Ci0rICB0aW1lb3V0IHtmYWlsICIodGltZW91dCkgc3RlcCBv dmVyIGJyZWFrcG9pbnQifQotK30KLStzZW5kX2dkYiAiY2xlYXIgODFcbiIKLStnZGJfZXhwZWN0 IHsKLSsgIC1yZSAiTm8gYnJlYWtwb2ludCBhdCA4MS4uKiRnZGJfcHJvbXB0ICQiXAotKyAgICAg ICAgICB7cGFzcyAiY2xlYXIgbGluZSBoYXMgbm8gYnJlYWtwb2ludCBkaXNhbGxvd2VkIn0KLSsg IC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtmYWlsICJjbGVhciBsaW5lIGhhcyBu byBicmVha3BvaW50IGRpc2FsbG93ZWQifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGNs ZWFyIGxpbmUgaGFzIG5vIGJyZWFrcG9pbnQgZGlzYWxsb3dlZCJ9Ci0rfQotK3NlbmRfZ2RiICJj bGVhclxuIgotK2dkYl9leHBlY3QgewotKyAgLXJlICJObyBicmVha3BvaW50IGF0IHRoaXMgbGlu ZS4uKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAiY2xlYXIgY3VycmVudCBsaW5l IGhhcyBubyBicmVha3BvaW50IGRpc2FsbG93ZWQifQotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwK LSsgICAgICAgICAge2ZhaWwgImNsZWFyIGN1cnJlbnQgbGluZSBoYXMgbm8gYnJlYWtwb2ludCBk aXNhbGxvd2VkIn0KLSsgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBjbGVhciBjdXJyZW50IGxp bmUgaGFzIG5vIGJyZWFrcG9pbnQgZGlzYWxsb3dlZCJ9Ci0rfQotKwotKyMgVmVyaWZ5IHRoYXQg d2UgY2FuIHNldCBhbmQgY2xlYXIgbXVsdGlwbGUgYnJlYWtwb2ludHMuCi0rIwotKyMgV2UgZG9u J3QgdGVzdCB0aGF0IGl0IGRlbGV0ZXMgdGhlIGNvcnJlY3QgYnJlYWtwb2ludHMuICBXZSBkbyBh dAotKyMgbGVhc3QgdGVzdCB0aGF0IGl0IGRlbGV0ZXMgbW9yZSB0aGFuIG9uZSBicmVha3BvaW50 LgotKyMKLStnZGJfdGVzdCAiYnJlYWsgbWFya2VyMyIgIkJyZWFrcG9pbnQuKmF0LioiICJicmVh ayBtYXJrZXIzICMxIgotK2dkYl90ZXN0ICJicmVhayBtYXJrZXIzIiAiQnJlYWtwb2ludC4qYXQu KiIgImJyZWFrIG1hcmtlcjMgIzIiCi0rZ2RiX3Rlc3QgImNsZWFyIG1hcmtlcjMiIHtEZWxldGVk IGJyZWFrcG9pbnRzIFswLTldKyBbMC05XSsuKn0KLSsKLSsjIFZlcmlmeSB0aGF0IGEgYnJlYWtw b2ludCBjYW4gYmUgc2V0IHZpYSBhIGNvbnZlbmllbmNlIHZhcmlhYmxlLgotKyMKLStzZW5kX2dk YiAic2V0IFwkZm9vPSRicF9sb2NhdGlvbjExXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIiRn ZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAic2V0IGNvbnZlbmllbmNlIHZhcmlhYmxl IFwkZm9vIHRvIGJwX2xvY2F0aW9uMTEifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIHNl dCBjb252ZW5pZW5jZSB2YXJpYWJsZSBcJGZvbyB0byBicF9sb2NhdGlvbjExIn0KLSt9Ci0rc2Vu ZF9nZGIgImJyZWFrIFwkZm9vXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIkJyZWFrcG9pbnQg KFxbMC05XF0qKSBhdCAuKiwgbGluZSAkYnBfbG9jYXRpb24xMS4qJGdkYl9wcm9tcHQgJCJcCi0r ICAgICAgICAgIHtwYXNzICJzZXQgYnJlYWtwb2ludCB2aWEgY29udmVuaWVuY2UgdmFyaWFibGUi fQotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwgInNldCBicmVha3Bv aW50IHZpYSBjb252ZW5pZW5jZSB2YXJpYWJsZSJ9Ci0rICB0aW1lb3V0IHtmYWlsICIodGltZW91 dCkgc2V0IGJyZWFrcG9pbnQgdmlhIGNvbnZlbmllbmNlIHZhcmlhYmxlIn0KLSt9Ci0rCi0rIyBW ZXJpZnkgdGhhdCBHREIgcmVzcG9uZHMgZ3JhY2VmdWxseSB0byBhbiBhdHRlbXB0IHRvIHNldCBh Ci0rIyBicmVha3BvaW50IHZpYSBhIGNvbnZlbmllbmNlIHZhcmlhYmxlIHdob3NlIHR5cGUgaXMg bm90IGludGVnZXIuCi0rIwotK3NlbmRfZ2RiICJzZXQgXCRmb289ODEuNVxuIgotK2dkYl9leHBl Y3QgewotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bhc3MgInNldCBjb252 ZW5pZW5jZSB2YXJpYWJsZSBcJGZvbyB0byA4MS41In0KLSsgIHRpbWVvdXQge2ZhaWwgIih0aW1l b3V0KSBzZXQgY29udmVuaWVuY2UgdmFyaWFibGUgXCRmb28gdG8gODEuNSJ9Ci0rfQotK3NlbmRf Z2RiICJicmVhayBcJGZvb1xuIgotK2dkYl9leHBlY3QgewotKyAgLXJlICJDb252ZW5pZW5jZSB2 YXJpYWJsZXMgdXNlZCBpbiBsaW5lIHNwZWNzIG11c3QgaGF2ZSBpbnRlZ2VyIHZhbHVlcy4uKiRn ZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAic2V0IGJyZWFrcG9pbnQgdmlhIG5vbi1p bnRlZ2VyIGNvbnZlbmllbmNlIHZhcmlhYmxlIGRpc2FsbG93ZWQifQotKyAgLXJlICIkZ2RiX3By b21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwgInNldCBicmVha3BvaW50IHZpYSBub24taW50ZWdl ciBjb252ZW5pZW5jZSB2YXJpYWJsZSBkaXNhbGxvd2VkIn0KLSsgIHRpbWVvdXQge2ZhaWwgIih0 aW1lb3V0KSBzZXQgYnJlYWtwb2ludCB2aWEgbm9uLWludGVnZXIgY29udmVuaWVuY2UgdmFyaWFi bGUgZGlzYWxsb3dlZCJ9Ci0rfQotKwotKyMgVmVyaWZ5IHRoYXQgd2UgY2FuIHNldCBhbmQgdHJp Z2dlciBhIGJyZWFrcG9pbnQgaW4gYSB1c2VyLWNhbGxlZCBmdW5jdGlvbi4KLSsjCi0rc2VuZF9n ZGIgImJyZWFrIG1hcmtlcjJcbiIKLStnZGJfZXhwZWN0IHsKLSsgICAgLXJlICJCcmVha3BvaW50 IChcWzAtOVxdKikgYXQgLiosIGxpbmUgKCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSkuKiRn ZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAic2V0IGJyZWFrcG9pbnQgb24gdG8tYmUt Y2FsbGVkIGZ1bmN0aW9uIn0KLSsgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtm YWlsICJzZXQgYnJlYWtwb2ludCBvbiB0by1iZS1jYWxsZWQgZnVuY3Rpb24ifQotKyAgdGltZW91 dCB7ZmFpbCAiKHRpbWVvdXQpIHNldCBicmVha3BvaW50IG9uIHRvLWJlLWNhbGxlZCBmdW5jdGlv biJ9Ci0rfQotK3NlbmRfZ2RiICJwcmludCBtYXJrZXIyKDk5KVxuIgotK2dkYl9leHBlY3Qgewot KyAgLXJlICJUaGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBzdG9wcGVkIHdoaWxlIGluIGEgZnVu Y3Rpb24gY2FsbGVkIGZyb20gR0RCLlxyXG5FdmFsdWF0aW9uIG9mIHRoZSBleHByZXNzaW9uIGNv bnRhaW5pbmcgdGhlIGZ1bmN0aW9uXHJcbi5tYXJrZXIyJHByb3RvLiB3aWxsIGJlIGFiYW5kb25l ZC5cclxuV2hlbiB0aGUgZnVuY3Rpb24gaXMgZG9uZSBleGVjdXRpbmcsIEdEQiB3aWxsIHNpbGVu dGx5IHN0b3AuXHJcbiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAiaGl0IGJyZWFr cG9pbnQgb24gY2FsbGVkIGZ1bmN0aW9uIn0KLSsgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAg ICAgICAgIHtmYWlsICJoaXQgYnJlYWtwb2ludCBvbiBjYWxsZWQgZnVuY3Rpb24ifQotKyAgdGlt ZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGhpdCBicmVha3BvaW50IG9uIGNhbGxlZCBmdW5jdGlvbiJ9 Ci0rfQotKwotKyMgQXMgbG9uZyBhcyB3ZSdyZSBzdG9wcGVkIChicmVha3BvaW50ZWQpIGluIGEg Y2FsbGVkIGZ1bmN0aW9uLAotKyMgdmVyaWZ5IHRoYXQgd2UgY2FuIHN1Y2Nlc3NmdWxseSBiYWNr dHJhY2UgJiBzdWNoIGZyb20gaGVyZS4KLSsjCi0rIyBJbiB0aGlzIGFuZCB0aGUgZm9sbG93aW5n IHRlc3QsIHRoZSBfc3I0ZXhwb3J0IGNoZWNrIGFwcGFyZW50bHkgaXMgbmVlZGVkCi0rIyBmb3Ig aHBwYSotKi1ocHV4LgotKyMKLStzZW5kX2dkYiAiYnRcbiIKLStnZGJfZXhwZWN0IHsKLSsgICAg LXJlICIjMFxbIFx0XF0qKCRoZXggaW4gKT9tYXJrZXIyLio6KCRicF9sb2NhdGlvbjh8JGJwX2xv Y2F0aW9uOSlcclxuIzEuKl9zcjRleHBvcnQuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAg IHtwYXNzICJiYWNrdHJhY2Ugd2hpbGUgaW4gY2FsbGVkIGZ1bmN0aW9uIn0KLSsgICAgLXJlICIj MFxbIFx0XF0qKCRoZXggaW4gKT9tYXJrZXIyLio6KCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9u OSlcclxuIzEuKmZ1bmN0aW9uIGNhbGxlZCBmcm9tIGdkYi4qJGdkYl9wcm9tcHQgJCJcCi0rCSAg ICB7cGFzcyAiYmFja3RyYWNlIHdoaWxlIGluIGNhbGxlZCBmdW5jdGlvbiJ9Ci0rICAgIC1yZSAi JGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAge2ZhaWwgImJhY2t0cmFjZSB3aGlsZSBpbiBj YWxsZWQgZnVuY3Rpb24ifQotKyAgICB0aW1lb3V0IHtmYWlsICIodGltZW91dCkgYmFja3RyYWNl IHdoaWxlIGluIGNhbGxlZCBmdW5jdGlvbiJ9Ci0rfQotKwotKyMgUmV0dXJuIGZyb20gdGhlIGNh bGxlZCBmdW5jdGlvbi4gIEZvciByZW1vdGUgdGFyZ2V0cywgaXQncyBpbXBvcnRhbnQgdG8gZG8K LSsjIHRoaXMgYmVmb3JlIHJ1bnRvX21haW4sIHdoaWNoIG90aGVyd2lzZSBtYXkgc2lsZW50bHkg c3RvcCBvbiB0aGUgZHVtbXkKLSsjIGJyZWFrcG9pbnQgaW5zZXJ0ZWQgYnkgR0RCIGF0IHRoZSBw cm9ncmFtJ3MgZW50cnkgcG9pbnQuCi0rIwotK3NlbmRfZ2RiICJmaW5pc2hcbiIKLStnZGJfZXhw ZWN0IHsKLSsgICAgLXJlICJSdW4gdGlsbCBleGl0IGZyb20gLiptYXJrZXIyLiogYXQgLiooJGJw X2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KVxyXG4uKiBpbiBfc3I0ZXhwb3J0LiokZ2RiX3Byb21w dCAkIlwKLSsgICAgICAgICAgICB7cGFzcyAiZmluaXNoIGZyb20gY2FsbGVkIGZ1bmN0aW9uIn0K LSsgICAgLXJlICJSdW4gdGlsbCBleGl0IGZyb20gLiptYXJrZXIyLiogYXQgLiooJGJwX2xvY2F0 aW9uOHwkYnBfbG9jYXRpb245KVxyXG4uKmZ1bmN0aW9uIGNhbGxlZCBmcm9tIGdkYi4qJGdkYl9w cm9tcHQgJCJcCi0rICAgICAgICAgICAge3Bhc3MgImZpbmlzaCBmcm9tIGNhbGxlZCBmdW5jdGlv biJ9Ci0rICAgIC1yZSAiUnVuIHRpbGwgZXhpdCBmcm9tIC4qbWFya2VyMi4qIGF0IC4qKCRicF9s b2NhdGlvbjh8JGJwX2xvY2F0aW9uOSlcclxuLipWYWx1ZSByZXR1cm5lZC4qJGdkYl9wcm9tcHQg JCJcCi0rICAgICAgICAgICAge3Bhc3MgImZpbmlzaCBmcm9tIGNhbGxlZCBmdW5jdGlvbiJ9Ci0r ICAgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAge2ZhaWwgImZpbmlzaCBmcm9t IGNhbGxlZCBmdW5jdGlvbiJ9Ci0rICAgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBmaW5pc2gg ZnJvbSBjYWxsZWQgZnVuY3Rpb24ifQotK30KLSsKLSsjIFZlcmlmeSB0aGF0IEdEQiByZXNwb25k cyBncmFjZWZ1bGx5IHRvIGEgImZpbmlzaCIgY29tbWFuZCB3aXRoCi0rIyBhcmd1bWVudHMuCi0r IwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7IGZhaWwgImJyZWFrIHRlc3RzIHN1cHByZXNzZWQi IH0KLSsKLStzZW5kX2dkYiAiZmluaXNoIDEyM1xuIgotK2dkYl9leHBlY3QgewotKyAgLXJlICJU aGUgXCJmaW5pc2hcIiBjb21tYW5kIGRvZXMgbm90IHRha2UgYW55IGFyZ3VtZW50cy5cclxuJGdk Yl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJmaW5pc2ggd2l0aCBhcmd1bWVudHMgZGlz YWxsb3dlZCJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAiZmlu aXNoIHdpdGggYXJndW1lbnRzIGRpc2FsbG93ZWQifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVv dXQpIGZpbmlzaCB3aXRoIGFyZ3VtZW50cyBkaXNhbGxvd2VkIn0KLSt9Ci0rCi0rIyBWZXJpZnkg dGhhdCBHREIgcmVzcG9uZHMgZ3JhY2VmdWxseSB0byBhIHJlcXVlc3QgdG8gImZpbmlzaCIgZnJv bQotKyMgdGhlIG91dGVybW9zdCBmcmFtZS4gIE9uIGEgc3R1YiB0aGF0IG5ldmVyIGV4aXRzLCB0 aGlzIHdpbGwganVzdAotKyMgcnVuIHRvIHRoZSBzdHVicyByb3V0aW5lLCBzbyB3ZSBkb24ndCBn ZXQgdGhpcyBlcnJvci4uLiAgVGh1cyB0aGUKLSsjIHNlY29uZCBjb25kaXRpb24uCi0rIwotKwot K3NlbmRfZ2RiICJmaW5pc2hcbiIKLStnZGJfZXhwZWN0IHsKLSsgIC1yZSAiXCJmaW5pc2hcIiBu b3QgbWVhbmluZ2Z1bCBpbiB0aGUgb3V0ZXJtb3N0IGZyYW1lLlxyXG4kZ2RiX3Byb21wdCAkIlwK LSsgICAgICAgICAge3Bhc3MgImZpbmlzaCBmcm9tIG91dGVybW9zdCBmcmFtZSBkaXNhbGxvd2Vk In0KLSsgIC1yZSAiUnVuIHRpbGwgZXhpdCBmcm9tLipcclxuJGdkYl9wcm9tcHQgJCIgewotKyAg ICAgcGFzcyAiZmluaXNoIGZyb20gb3V0ZXJtb3N0IGZyYW1lIGRpc2FsbG93ZWQiCi0rICB9Ci0r ICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAiZmluaXNoIGZyb20gb3V0 ZXJtb3N0IGZyYW1lIGRpc2FsbG93ZWQifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGZp bmlzaCBmcm9tIG91dGVybW9zdCBmcmFtZSBkaXNhbGxvd2VkIn0KLSt9Ci0rCi0rIyBWZXJpZnkg dGhhdCB3ZSBjYW4gZXhwbGljaXRseSBhc2sgR0RCIHRvIHN0b3Agb24gYWxsIHNoYXJlZCBsaWJy YXJ5Ci0rIyBldmVudHMsIGFuZCB0aGF0IGl0IGRvZXMgc28uCi0rIwotK2lmIFtpc3RhcmdldCAi aHBwYSotKi1ocHV4KiJdIHRoZW4gewotKyAgaWYgIVtydW50b19tYWluXSB0aGVuIHsgZmFpbCAi YnJlYWsgdGVzdHMgc3VwcHJlc3NlZCIgfQotKwotKyAgc2VuZF9nZGIgInNldCBzdG9wLW9uLXNv bGliLWV2ZW50cyAxXG4iCi0rICBnZGJfZXhwZWN0IHsKLSsgICAgLXJlICIkZ2RiX3Byb21wdCAk IlwKLSsgICAgICAgICAgICB7cGFzcyAic2V0IHN0b3Atb24tc29saWItZXZlbnRzIn0KLSsgICAg dGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIHNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyJ9Ci0rICB9 Ci0rCi0rICBzZW5kX2dkYiAicnVuXG4iCi0rICBnZGJfZXhwZWN0IHsKLSsgICAgLXJlICIuKlN0 YXJ0IGl0IGZyb20gdGhlIGJlZ2lubmluZy4qeSBvciBuLiAkIlwKLSsgICAgICAgICAgICB7c2Vu ZF9nZGIgInlcbiIKLSsgICAgICAgICAgICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgICAgICAgICAg LXJlICIuKlN0b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5IGV2ZW50LiokZ2RiX3Byb21wdCAk IlwKLSsgICAgICAgICAgICAgICAgICAgICAgIHtwYXNzICJ0cmlnZ2VyZWQgc3RvcC1vbi1zb2xp Yi1ldmVudHMifQotKyAgICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAgICAg ICAgICAgICAgICAgICAgICB7ZmFpbCAidHJpZ2dlcmVkIHN0b3Atb24tc29saWItZXZlbnRzIn0K LSsgICAgICAgICAgICAgICB0aW1lb3V0IHtmYWlsICIodGltZW91dCkgdHJpZ2dlcmVkIHN0b3At b24tc29saWItZXZlbnRzIn0KLSsgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAg LXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICB7ZmFpbCAicmVydW4gZm9yIHN0b3At b24tc29saWItZXZlbnRzIn0KLSsgICAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIHJlcnVuIGZv ciBzdG9wLW9uLXNvbGliLWV2ZW50cyJ9Ci0rICB9Ci0rCi0rICBzZW5kX2dkYiAic2V0IHN0b3At b24tc29saWItZXZlbnRzIDBcbiIKLSsgIGdkYl9leHBlY3QgewotKyAgICAtcmUgIiRnZGJfcHJv bXB0ICQiXAotKyAgICAgICAgICAgIHtwYXNzICJyZXNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyJ9 Ci0rICAgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSByZXNldCBzdG9wLW9uLXNvbGliLWV2ZW50 cyJ9Ci0rICB9Ci0rfQotKwotKyMgSGFyZHdhcmUgYnJlYWtwb2ludHMgYXJlIHVuc3VwcG9ydGVk IG9uIEhQLVVYLiAgVmVyaWZ5IHRoYXQgR0RCCi0rIyBncmFjZWZ1bGx5IHJlc3BvbmRzIHRvIHJl cXVlc3RzIHRvIGNyZWF0ZSB0aGVtLgotKyMKLStpZiBbaXN0YXJnZXQgImhwcGEqLSotaHB1eCoi XSB0aGVuIHsKLSsgIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7IGZhaWwgImJyZWFrIHRlc3RzIHN1 cHByZXNzZWQiIH0KLSsKLSsgIHNlbmRfZ2RiICJoYnJlYWtcbiIKLSsgIGdkYl9leHBlY3Qgewot KyAgICAtcmUgIk5vIGhhcmR3YXJlIGJyZWFrcG9pbnQgc3VwcG9ydCBpbiB0aGUgdGFyZ2V0Liok Z2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICB7cGFzcyAiaHcgYnJlYWtzIGRpc2FsbG93ZWQi fQotKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgIHtmYWlsICJodyBicmVh a3MgZGlzYWxsb3dlZCJ9Ci0rICAgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBodyBicmVha3Mg ZGlzYWxsb3dlZCJ9Ci0rICB9Ci0rCi0rICBzZW5kX2dkYiAidGhicmVha1xuIgotKyAgZ2RiX2V4 cGVjdCB7Ci0rICAgIC1yZSAiTm8gaGFyZHdhcmUgYnJlYWtwb2ludCBzdXBwb3J0IGluIHRoZSB0 YXJnZXQuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgIHtwYXNzICJ0ZW1wb3JhcnkgaHcg YnJlYWtzIGRpc2FsbG93ZWQifQotKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAg ICAgIHtmYWlsICJ0ZW1wb3JhcnkgaHcgYnJlYWtzIGRpc2FsbG93ZWQifQotKyAgICB0aW1lb3V0 IHtmYWlsICIodGltZW91dCkgdGVtcG9yYXJ5IGh3IGJyZWFrcyBkaXNhbGxvd2VkIn0KLSsgIH0K LSt9Ci0rCi0rIyoqKioqKioqCi0rCi0rCi0rIwotKyMgVGVzdCAibmV4dCIgb3ZlciByZWN1cnNp dmUgZnVuY3Rpb24gY2FsbC4KLSsjCi0rCi0rcHJvYyB0ZXN0X25leHRfd2l0aF9yZWN1cnNpb24g e30gewotKyAgICBnbG9iYWwgZ2RiX3Byb21wdAotKyAgICBnbG9iYWwgZGVjaW1hbAotKyAgICBn bG9iYWwgYmluZmlsZQotKwotKyAgICBpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIHVzZV9nZGJfc3R1 Yl0gewotKwkjIFJlbG9hZCB0aGUgcHJvZ3JhbS4KLSsJZGVsZXRlX2JyZWFrcG9pbnRzCi0rCWdk Yl9sb2FkICR7YmluZmlsZX07Ci0rICAgIH0gZWxzZSB7Ci0rCSMgRklYTUU6IHNob3VsZCBiZSB1 c2luZyBydW50bwotKwlnZGJfdGVzdCAia2lsbCIgIiIgImtpbGwgcHJvZ3JhbSIgIktpbGwgdGhl IHByb2dyYW0gYmVpbmcgZGVidWdnZWQuKnkgb3Igbi4gJCIgInkiCi0rCi0rCWRlbGV0ZV9icmVh a3BvaW50cwotKyAgICB9Ci0rCi0rICAgIGdkYl90ZXN0ICJicmVhayBmYWN0b3JpYWwiICJCcmVh a3BvaW50ICRkZWNpbWFsIGF0IC4qIiAiYnJlYWsgYXQgZmFjdG9yaWFsIgotKwotKyAgICAjIFJ1 biB1bnRpbCB3ZSBjYWxsIGZhY3RvcmlhbCB3aXRoIDYKLSsKLSsgICAgaWYgW2lzdGFyZ2V0ICIq LSotdnh3b3JrcyoiXSB0aGVuIHsKLSsJc2VuZF9nZGIgInJ1biB2eG1haW4gXCI2XCJcbiIKLSsg ICAgfSBlbHNlIHsKLSsJZ2RiX3J1bl9jbWQKLSsgICAgfQotKyAgICBnZGJfZXhwZWN0IHsKLSsJ LXJlICJCcmVhay4qIGZhY3RvcmlhbCAudmFsdWU9Ni4gLiokZ2RiX3Byb21wdCAkIiB7fQotKwkt cmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAicnVuIHRvIGZhY3RvcmlhbCg2KSI7 Ci0rCSAgICBnZGJfc3VwcHJlc3NfdGVzdHM7Ci0rCX0KLSsJdGltZW91dCB7IGZhaWwgInJ1biB0 byBmYWN0b3JpYWwoNikgKHRpbWVvdXQpIiA7IGdkYl9zdXBwcmVzc190ZXN0cyB9Ci0rICAgIH0K LSsKLSsgICAgIyBDb250aW51ZSB1bnRpbCB3ZSBjYWxsIGZhY3RvcmlhbCByZWN1cnNpdmVseSB3 aXRoIDUuCi0rCi0rICAgIGlmIFtnZGJfdGVzdCAiY29udGludWUiIFwKLSsJIkNvbnRpbnVpbmcu KkJyZWFrLiogZmFjdG9yaWFsIC52YWx1ZT01LiAuKiIgXAotKwkiY29udGludWUgdG8gZmFjdG9y aWFsKDUpIl0gdGhlbiB7IGdkYl9zdXBwcmVzc190ZXN0cyB9Ci0rCi0rICAgICMgRG8gYSBiYWNr dHJhY2UganVzdCB0byBjb25maXJtIGhvdyBtYW55IGxldmVscyBkZWVwIHdlIGFyZS4KLSsKLSsg ICAgaWYgW2dkYl90ZXN0ICJiYWNrdHJhY2UiIFwKLSsJIiMwXFsgXHRcXSsgZmFjdG9yaWFsIC52 YWx1ZT01Li4qIiBcCi0rCSJiYWNrdHJhY2UgZnJvbSBmYWN0b3JpYWwoNSkiXSB0aGVuIHsgZ2Ri X3N1cHByZXNzX3Rlc3RzIH0KLSsKLSsgICAgIyBOb3cgYSAibmV4dCIgc2hvdWxkIHBvc2l0aW9u IHVzIGF0IHRoZSByZWN1cnNpdmUgY2FsbCwgd2hpY2gKLSsgICAgIyB3ZSB3aWxsIGJlIHBlcmZv cm1pbmcgd2l0aCA0LgotKwotKyAgICBpZiBbZ2RiX3Rlc3QgIm5leHQiIFwKLSsJIi4qIGZhY3Rv cmlhbCAudmFsdWUgLSAxLjsuKiIgXAotKwkibmV4dCB0byByZWN1cnNpdmUgY2FsbCJdIHRoZW4g eyBnZGJfc3VwcHJlc3NfdGVzdHMgfQotKwotKyAgICAjIERpc2FibGUgdGhlIGJyZWFrcG9pbnQg YXQgdGhlIGVudHJ5IHRvIGZhY3RvcmlhbCBieSBkZWxldGluZyB0aGVtIGFsbC4KLSsgICAgIyBU aGUgIm5leHQiIHNob3VsZCBydW4gdW50aWwgd2UgcmV0dXJuIHRvIHRoZSBuZXh0IGxpbmUgZnJv bSB0aGlzCi0rICAgICMgcmVjdXJzaXZlIGNhbGwgdG8gZmFjdG9yaWFsIHdpdGggNC4KLSsgICAg IyBCdWdneSB2ZXJzaW9ucyBvZiBnZGIgd2lsbCBzdG9wIGluc3RlYWQgYXQgdGhlIGlubmVybW9z dCBmcmFtZSBvbgotKyAgICAjIHRoZSBsaW5lIHdoZXJlIHdlIGFyZSB0cnlpbmcgdG8gIm5leHQi IHRvLgotKwotKyAgICBkZWxldGVfYnJlYWtwb2ludHMKLSsKLSsgICAgaWYgW2lzdGFyZ2V0ICJt aXBzKnR4MzktKiJdIHsKLSsJc2V0IHRpbWVvdXQgNjAKLSsgICAgfQotKyAgICAjIFdlIHVzZWQg dG8gc2V0IHRpbWVvdXQgaGVyZSBmb3IgYWxsIG90aGVyIHRhcmdldHMgYXMgd2VsbC4gIFRoaXMK LSsgICAgIyBpcyBhbG1vc3QgY2VydGFpbmx5IHdyb25nLiAgVGhlIHByb3BlciB0aW1lb3V0IGRl cGVuZHMgb24gdGhlCi0rICAgICMgdGFyZ2V0IHN5c3RlbSBpbiB1c2UsIGFuZCBob3cgd2UgY29t bXVuaWNhdGUgd2l0aCBpdCwgc28gdGhlcmUKLSsgICAgIyBpcyBubyBzaW5nbGUgdmFsdWUgYXBw cm9wcmlhdGUgZm9yIGFsbCB0YXJnZXRzLiAgVGhlIHRpbWVvdXQKLSsgICAgIyBzaG91bGQgYmUg ZXN0YWJsaXNoZWQgYnkgdGhlIERlamFnbnUgY29uZmlnIGZpbGUocykgZm9yIHRoZQotKyAgICAj IGJvYXJkLCBhbmQgcmVzcGVjdGVkIGJ5IHRoZSB0ZXN0IHN1aXRlLgotKyAgICAjCi0rICAgICMg Rm9yIGV4YW1wbGUsIGlmIEknbSBydW5uaW5nIEdEQiBvdmVyIGFuIFNTSCB0dW5uZWwgdGFsa2lu ZyB0byBhCi0rICAgICMgcG9ydG1hc3RlciBpbiBDYWxpZm9ybmlhIHRhbGtpbmcgdG8gYW4gYW5j aWVudCA2OGsgYm9hcmQgcnVubmluZwotKyAgICAjIGEgY3J1bW15IFJPTSBtb25pdG9yIChhIHNp dHVhdGlvbiBJIGNhbiBvbmx5IHdpc2ggd2VyZQotKyAgICAjIGh5cG90aGV0aWNhbCksIHRoZW4g SSBuZWVkIGEgbGFyZ2UgdGltZW91dC4gIEJ1dCB0aGF0J3Mgbm90IHRoZQotKyAgICAjIGtpbmQg b2Yga25vd2xlZGdlIHRoYXQgYmVsb25ncyBpbiB0aGlzIGZpbGUuCi0rCi0rICAgIGdkYl90ZXN0 IG5leHQgIlxbMC05XF0qXFtcdCBcXStyZXR1cm4gXFwodmFsdWVcXCk7LioiIFwKLSsJICAgICJu ZXh0IG92ZXIgcmVjdXJzaXZlIGNhbGwiCi0rCi0rICAgICMgT0ssIHdlIHNob3VsZCBiZSBiYWNr IGluIHRoZSBzYW1lIHN0YWNrIGZyYW1lIHdlIHN0YXJ0ZWQgZnJvbS4KLSsgICAgIyBEbyBhIGJh Y2t0cmFjZSBqdXN0IHRvIGNvbmZpcm0uCi0rCi0rICAgIHNldCByZXN1bHQgW2dkYl90ZXN0ICJi YWNrdHJhY2UiIFwKLSsJICAgICIjMFxbIFx0XF0rIGZhY3RvcmlhbCAudmFsdWU9MTIwLipcclxu IzFcWyBcdFxdKyBcWzAtOWEtZnhcXSsgaW4gZmFjdG9yaWFsIC52YWx1ZT02Li4qIiBcCi0rCSAg ICAiYmFja3RyYWNlIGZyb20gZmFjdG9yaWFsKDUuMSkiXQotKyAgICBpZiB7ICRyZXN1bHQgIT0g MCB9IHsgZ2RiX3N1cHByZXNzX3Rlc3RzIH0KLSsKLSsgICAgaWYgW3RhcmdldF9pbmZvIGV4aXN0 cyBnZGIsbm9yZXN1bHRzXSB7IGdkYl9zdXBwcmVzc190ZXN0cyB9Ci0rICBnZGJfY29udGludWVf dG9fZW5kICJyZWN1cnNpdmUgbmV4dCB0ZXN0IgotKyAgIGdkYl9zdG9wX3N1cHByZXNzaW5nX3Rl c3RzOwotK30KLSsKLSt0ZXN0X25leHRfd2l0aF9yZWN1cnNpb24KLSsKLSsKLSsjKioqKioqKioK LSsKLSsjIGJ1aWxkIGEgbmV3IGZpbGUgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBzbyB0aGF0 IHdlIGNhbiB0cnkgYnJlYWtwb2ludHMKLSsjIG9uIHRhcmdldHMgd2l0aCBvcHRpbWl6ZWQgcHJv bG9ndWVzCi0rCi0rc2V0IGJpbmZpbGVvMiBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0Zmls ZX1vMl0KLSsKLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX1PMC5vIiBvYmplY3Qge2RlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS13 IC1PMiAtZnBpZSAtcGllIn1dICE9ICIiIH0gewotKyAgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9m aWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3 aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0rfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUxfSIgIiR7YmluZmlsZX1PMS5vIiBvYmplY3Qge2Rl YnVnICJhZGRpdGlvbmFsX2ZsYWdzPS13IC1PMiAtZnBpZSAtcGllIn1dICE9ICIiIH0gewotKyAg ICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28g YWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0rfQotKwot K2lmICB7IFtnZGJfY29tcGlsZSAiJHtiaW5maWxlfU8wLm8gJHtiaW5maWxlfU8xLm8iICIke2Jp bmZpbGVvMn0iIGV4ZWN1dGFibGUge2RlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS13IC1mcGllIC1w aWUifV0gIT0gIiIgfSB7Ci0rICAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNl IGNvbXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21hdGlj YWxseSBmYWlsLiIKLSt9Ci0rCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZW8yfV0g ewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGVvMn0KLSsK LStpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYl9zdHViXSB7Ci0rICAgIGdkYl9zdGVwX2Zvcl9z dHViOwotK30KLSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGZ1bmN0aW9uCi0rIwotK2dkYl90ZXN0 ICJicmVhayBtYWluIiBcCi0rICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwg bGluZS4qIiBcCi0rICAgICJicmVha3BvaW50IGZ1bmN0aW9uLCBvcHRpbWl6ZWQgZmlsZSIKLSsK LSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGZ1bmN0aW9uCi0rIwotK2dkYl90ZXN0ICJicmVhayBtYXJr ZXI0IiBcCi0rICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZTEsIGxpbmUuKiIg XAotKyAgICAiYnJlYWtwb2ludCBzbWFsbCBmdW5jdGlvbiwgb3B0aW1pemVkIGZpbGUiCi0rCi0r IwotKyMgcnVuIHVudGlsIHRoZSBicmVha3BvaW50IGF0IG1haW4gaXMgaGl0LiBGb3Igbm9uLXN0 dWJzLXVzaW5nIHRhcmdldHMuCi0rIwotK2lmICFbdGFyZ2V0X2luZm8gZXhpc3RzIHVzZV9nZGJf c3R1Yl0gewotKyAgaWYgW2lzdGFyZ2V0ICIqLSotdnh3b3JrcyoiXSB0aGVuIHsKLSsgICAgc2Vu ZF9nZGIgInJ1biB2eG1haW4gXCIyXCJcbiIKLSsgICAgc2V0IHRpbWVvdXQgMTIwCi0rICAgIHZl cmJvc2UgIlRpbWVvdXQgaXMgbm93ICR0aW1lb3V0IHNlY29uZHMiIDIKLSsgIH0gZWxzZSB7Ci0r CXNlbmRfZ2RiICJydW5cbiIKLSsgIH0KLSsgIGdkYl9leHBlY3QgewotKyAgICAtcmUgIlRoZSBw cm9ncmFtIC4qIGhhcyBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS4qeSBvciBuLiAkIiB7Ci0rCXNlbmRf Z2RiICJ5XG4iCi0rCWV4cF9jb250aW51ZQotKyAgICB9Ci0rICAgIC1yZSAiU3RhcnRpbmcgcHJv Z3JhbS4qQnJlYWtwb2ludCBcWzAtOVxdKywuKm1haW4gLiphcmdjLiphcmd2LiogYXQgLiokc3Jj ZmlsZTokYnBfbG9jYXRpb242LiokYnBfbG9jYXRpb242XFtcdCBcXStpZiAuYXJnYy4qIFx7Liok Z2RiX3Byb21wdCAkIlwKLSsJICAgICAgICAgICAgICAgICAgICB7IHBhc3MgInJ1biB1bnRpbCBm dW5jdGlvbiBicmVha3BvaW50LCBvcHRpbWl6ZWQgZmlsZSIgfQotKyAgICAtcmUgIlN0YXJ0aW5n IHByb2dyYW0uKkJyZWFrcG9pbnQgXFswLTlcXSssLiptYWluIC4qYXJnYy4qYXJndi4qIGF0IC4q JGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICAgICAgICAgICAgICAgeyBwYXNzICJydW4gdW50aWwg ZnVuY3Rpb24gYnJlYWtwb2ludCwgb3B0aW1pemVkIGZpbGUgKGNvZGUgbW90aW9uKSIgfQotKyAg ICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIgICAgICAgeyBmYWlsICJydW4gdW50aWwgZnVuY3Rpb24g YnJlYWtwb2ludCwgb3B0aW1pemVkIGZpbGUiIH0KLSsgICAgdGltZW91dAkgICAgICAgICAgICB7 IGZhaWwgInJ1biB1bnRpbCBmdW5jdGlvbiBicmVha3BvaW50LCBvcHRpbWl6ZWQgZmlsZSAodGlt ZW91dCkiIH0KLSsgIH0KLSt9IGVsc2UgewotKyAgICBpZiAhW3RhcmdldF9pbmZvIGV4aXN0cyBn ZGJfc3R1Yl0gewotKwlnZGJfdGVzdCBjb250aW51ZSAiLipDb250aW51aW5nXFwuLipCcmVha3Bv aW50IFxbMC05XF0rLCBtYWluIFxcKGFyZ2M9LiosIGFyZ3Y9LiosIGVudnA9LipcXCkgYXQgLiok c3JjZmlsZTokYnBfbG9jYXRpb242LiokYnBfbG9jYXRpb242XFtcdCBcXStpZiAuYXJnYy4qXHsu KiIgInN0dWIgY29udGludWUsIG9wdGltaXplZCBmaWxlIgotKyAgICB9Ci0rfQotKwotKyMKLSsj IHJ1biB1bnRpbCB0aGUgYnJlYWtwb2ludCBhdCBhIHNtYWxsIGZ1bmN0aW9uCi0rIwotKwotKyMK LSsjIEFkZCBhIHNlY29uZCBwYXNzIHBhdHRlcm4uICBUaGUgYmVoYXZpb3IgZGlmZmVycyBoZXJl IGJldHdlZW4gc3RhYnMKLSsjIGFuZCBkd2FyZiBmb3Igb25lLWxpbmUgZnVuY3Rpb25zLiAgU3Rh YnMgcHJlc2VydmVzIHR3byBsaW5lIHN5bWJvbHMKLSsjIChvbmUgYmVmb3JlIHRoZSBwcm9sb2d1 ZSBhbmQgb25lIGFmdGVyKSB3aXRoIHRoZSBzYW1lIGxpbmUgbnVtYmVyLAotKyMgYnV0IGR3YXJm IHJlZ2FyZHMgdGhlc2UgYXMgZHVwbGljYXRlcyBhbmQgZGlzY2FyZHMgb25lIG9mIHRoZW0uCi0r IyBUaGVyZWZvcmUgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHByb2xvZ3VlICh3aGVyZSB0aGUgYnJl YWtwb2ludCBpcykKLSsjIGhhcyBubyBleGFjdGx5IG1hdGNoaW5nIGxpbmUgc3ltYm9sLCBhbmQg R0RCIHJlcG9ydHMgdGhlIGJyZWFrcG9pbnQKLSsjIGFzIGlmIGl0IHdlcmUgaW4gdGhlIG1pZGRs ZSBvZiBhIGxpbmUgcmF0aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZy4KLSsKLStzZXQgYnBfbG9j YXRpb24xMyBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMTMgaGVyZSIgJHNy Y2ZpbGUxXQotK3NldCBicF9sb2NhdGlvbjE0IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJl YWtwb2ludCAxNCBoZXJlIiAkc3JjZmlsZTFdCi0rc2VuZF9nZGIgImNvbnRpbnVlXG4iCi0rZ2Ri X2V4cGVjdCB7Ci0rICAgIC1yZSAiQnJlYWtwb2ludCAkZGVjaW1hbCwgbWFya2VyNCBcXChkPTE3 NzYwMTk3NlxcKSBhdCAuKiRzcmNmaWxlMTokYnBfbG9jYXRpb24xM1xbXHJcblxdKyRicF9sb2Nh dGlvbjEzXFtcdCBcXSt2b2lkIG1hcmtlcjQuKiIgewotKwlwYXNzICJydW4gdW50aWwgYnJlYWtw b2ludCBzZXQgYXQgc21hbGwgZnVuY3Rpb24sIG9wdGltaXplZCBmaWxlIgotKyAgICB9Ci0rICAg IC1yZSAiQnJlYWtwb2ludCAkZGVjaW1hbCwgJGhleCBpbiBtYXJrZXI0IFxcKGQ9MTc3NjAxOTc2 XFwpIGF0IC4qJHNyY2ZpbGUxOiRicF9sb2NhdGlvbjEzXFtcclxuXF0rJGJwX2xvY2F0aW9uMTNc W1x0IFxdK3ZvaWQgbWFya2VyNC4qIiB7Ci0rCXBhc3MgInJ1biB1bnRpbCBicmVha3BvaW50IHNl dCBhdCBzbWFsbCBmdW5jdGlvbiwgb3B0aW1pemVkIGZpbGUiCi0rICAgIH0KLSsgICAgLXJlICJC cmVha3BvaW50ICRkZWNpbWFsLCBtYXJrZXI0IFxcKGQ9MTc3NjAxOTc2XFwpIGF0IC4qJHNyY2Zp bGUxOiRicF9sb2NhdGlvbjE0XFtcclxuXF0rJGJwX2xvY2F0aW9uMTRcW1x0IFxdK3ZvaWQgbWFy a2VyNC4qIiB7Ci0rICAgICAgICAjIG1hcmtlcjQoKSBpcyBkZWZpbmVkIGF0IGxpbmUgNDYgd2hl biBjb21waWxlZCB3aXRoIC1EUFJPVE9UWVBFUwotKwlwYXNzICJydW4gdW50aWwgYnJlYWtwb2lu dCBzZXQgYXQgc21hbGwgZnVuY3Rpb24sIG9wdGltaXplZCBmaWxlIChsaW5lIGJwX2xvY2F0aW9u MTQpIgotKyAgICB9Ci0rICAgIC1yZSAiLiokZ2RiX3Byb21wdCAiIHsKLSsJZmFpbCAicnVuIHVu dGlsIGJyZWFrcG9pbnQgc2V0IGF0IHNtYWxsIGZ1bmN0aW9uLCBvcHRpbWl6ZWQgZmlsZSIKLSsg ICAgfQotKyAgICB0aW1lb3V0IHsKLSsJZmFpbCAicnVuIHVudGlsIGJyZWFrcG9pbnQgc2V0IGF0 IHNtYWxsIGZ1bmN0aW9uLCBvcHRpbWl6ZWQgZmlsZSAodGltZW91dCkiCi0rICAgIH0KLSt9Ci0r Ci0rCi0rIyBSZXNldCB0aGUgZGVmYXVsdCBhcmd1bWVudHMgZm9yIFZ4V29ya3MKLStpZiBbaXN0 YXJnZXQgIiotKi12eHdvcmtzKiJdIHsKLSsgICAgc2V0IHRpbWVvdXQgMTAKLSsgICAgdmVyYm9z ZSAiVGltZW91dCBpcyBub3cgJHRpbWVvdXQgc2Vjb25kcyIgMgotKyAgICBzZW5kX2dkYiAic2V0 IGFyZ3MgbWFpblxuIgotKyAgICBnZGJfZXhwZWN0IC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7fQot K30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKLUBAIC0wLDAgKzEsNDQg QEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgot KwotKyAgIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk5LCAyMDAyLCAyMDAz IEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotKyAgIFBsZWFzZSBlbWFpbCBh bnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyAg IGJ1Zy1nZGJAcHJlcC5haS5taXQuZWR1ICAqLwotKwotKy8qIFRoZSBjb2RlIGZvciB0aGlzIGZp bGUgd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBnZGIgdGVzdHN1aXRlCi0rICAgdGVzdGNhc2UgImJy ZWFrLmMiLiAqLwotKwotKy8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGRvIG5vdGhpbmcgdXNl ZnVsLiAgVGhleSBhcmUgaW5jbHVkZWQKLSsgICBzaW1wbHkgYXMgcGxhY2VzIHRvIHRyeSBzZXR0 aW5nIGJyZWFrcG9pbnRzIGF0LiAgVGhleSBhcmUKLSsgICBleHBsaWNpdGx5ICJvbmUtbGluZSBm dW5jdGlvbnMiIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2FzZSB3b3JrcwotKyAgIChzb21lIHZlcnNp b25zIG9mIGdjYyBoYXZlIG9yIGhhdmUgaGFkIHByb2JsZW1zIHdpdGggdGhpcykuCi0rCi0rICAg VGhlc2UgZnVuY3Rpb25zIGFyZSBpbiBhIHNlcGFyYXRlIHNvdXJjZSBmaWxlIHRvIHByZXZlbnQg YW4KLSsgICBvcHRpbWl6aW5nIGNvbXBpbGVyIGZyb20gaW5saW5pbmcgdGhlbSBhbmQgb3B0aW1p emluZyB0aGVtIGF3YXkuICovCi0rCi0rI2lmZGVmIFBST1RPVFlQRVMKLStpbnQgbWFya2VyMSAo dm9pZCkgeyByZXR1cm4gKDApOyB9CS8qIHNldCBicmVha3BvaW50IDE1IGhlcmUgKi8KLStpbnQg bWFya2VyMiAoaW50IGEpIHsgcmV0dXJuICgxKTsgfQkvKiBzZXQgYnJlYWtwb2ludCA4IGhlcmUg Ki8KLSt2b2lkIG1hcmtlcjMgKGNoYXIgKmEsIGNoYXIgKmIpIHt9CS8qIHNldCBicmVha3BvaW50 IDE3IGhlcmUgKi8KLSt2b2lkIG1hcmtlcjQgKGxvbmcgZCkge30JCS8qIHNldCBicmVha3BvaW50 IDE0IGhlcmUgKi8KLSsjZWxzZQotK2ludCBtYXJrZXIxICgpIHsgcmV0dXJuICgwKTsgfQkJLyog c2V0IGJyZWFrcG9pbnQgMTYgaGVyZSAqLwotK2ludCBtYXJrZXIyIChhKSBpbnQgYTsgeyByZXR1 cm4gKDEpOyB9CS8qIHNldCBicmVha3BvaW50IDkgaGVyZSAqLwotK3ZvaWQgbWFya2VyMyAoYSwg YikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhlcmUgKi8KLSt2b2lkIG1h cmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNldCBicmVha3BvaW50IDEzIGhlcmUgKi8KLSsjZW5k aWYKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVmaWxlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAKLUBA IC0wLDAgKzEsMjMyIEBACi0rIyBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5 NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMAotKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotKyMg VGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEZyZWQgRmlzaC4gKGZuZkBjeWdudXMuY29tKQotKwot KyMgYXJlIHdlIG9uIGEgdGFyZ2V0IGJvYXJkCi0raWYgIVtpc25hdGl2ZV0gdGhlbiB7Ci0rICAg IHJldHVybgotK30KLSsKLStzZXQgdGVzdGZpbGUgImNvcmVtYWtlciIKLStzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZp bGV9XQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgImFkZGl0aW9uYWxfZmxhZ3M9LWZwaWUg LXBpZSJ9XSAhPSAiIiB9IHsKLSsgICAgIGdkYl9zdXBwcmVzc19lbnRpcmVfZmlsZSAiVGVzdGNh c2UgY29tcGlsZSBmYWlsZWQsIHNvIGFsbCB0ZXN0cyBpbiB0aGlzIGZpbGUgd2lsbCBhdXRvbWF0 aWNhbGx5IGZhaWwuIgotK30KLSsKLSsjIENyZWF0ZSBhbmQgc291cmNlIHRoZSBmaWxlIHRoYXQg cHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyCi0rIyB1c2VkIHRvIGNvbXBp bGUgdGhlIHRlc3QgY2FzZS4KLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewot KyAgICByZXR1cm4gLTE7Ci0rfQotKwotKyMgQ3JlYXRlIGEgY29yZSBmaWxlIG5hbWVkICJjb3Jl ZmlsZSIgcmF0aGVyIHRoYW4ganVzdCAiY29yZSIsIHRvCi0rIyBhdm9pZCBwcm9ibGVtcyB3aXRo IHN5cyBhZG1pbiB0eXBlcyB0aGF0IGxpa2UgdG8gcmVndWxhcmx5IHBydW5lIGFsbAotKyMgZmls ZXMgbmFtZWQgImNvcmUiIGZyb20gdGhlIHN5c3RlbS4KLSsjCi0rIyBBcmJpdHJhcmlseSB0cnkg c2V0dGluZyB0aGUgY29yZSBzaXplIGxpbWl0IHRvICJ1bmxpbWl0ZWQiIHNpbmNlCi0rIyB0aGlz IGRvZXMgbm90IGh1cnQgb24gc3lzdGVtcyB3aGVyZSB0aGUgY29tbWFuZCBkb2VzIG5vdCB3b3Jr IGFuZAotKyMgYWxsb3dzIHVzIHRvIGdlbmVyYXRlIGEgY29yZSBvbiBzeXN0ZW1zIHdoZXJlIGl0 IGRvZXMuCi0rIwotKyMgU29tZSBzeXN0ZW1zIGFwcGVuZCAiY29yZSIgdG8gdGhlIG5hbWUgb2Yg dGhlIHByb2dyYW07IG90aGVycyBhcHBlbmQKLSsjIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRv ICJjb3JlIjsgc3RpbGwgb3RoZXJzIChsaWtlIExpbnV4LCBhcyBvZgotKyMgTWF5IDIwMDMpIGNy ZWF0ZSBjb3JlcyBuYW1lZCAiY29yZS5QSUQiLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB3ZQotKyMg Y291bGQgaGF2ZSBtYW55IGNvcmUgZmlsZXMgbHlpbmcgYXJvdW5kLCBhbmQgaXQgbWF5IGJlIGRp ZmZpY3VsdCB0bwotKyMgdGVsbCB3aGljaCBvbmUgaXMgb3Vycywgc28gbGV0J3MgcnVuIHRoZSBw cm9ncmFtIGluIGEgc3ViZGlyZWN0b3J5LgotK3NldCBmb3VuZCAwCi0rc2V0IGNvcmVkaXIgW3N0 YW5kYXJkX291dHB1dF9maWxlIGNvcmVkaXIuW2dldHBpZF1dCi0rZmlsZSBta2RpciAkY29yZWRp cgotK2NhdGNoICJzeXN0ZW0gXCIoY2QgJHtjb3JlZGlyfTsgdWxpbWl0IC1jIHVubGltaXRlZDsg JHtiaW5maWxlfTsgdHJ1ZSkgPi9kZXYvbnVsbCAyPiYxXCIiCi0rIyAgICAgIHJlbW90ZV9leGVj IGhvc3QgIiR7YmluZmlsZX0iCi0rZm9yZWFjaCBpICIke2NvcmVkaXJ9L2NvcmUgJHtjb3JlZGly fS9jb3JlLmNvcmVtYWtlci5jICR7YmluZmlsZX0uY29yZSIgewotKyAgICBpZiBbcmVtb3RlX2Zp bGUgYnVpbGQgZXhpc3RzICRpXSB7Ci0rCXJlbW90ZV9leGVjIGJ1aWxkICJtdiAkaSBbc3RhbmRh cmRfb3V0cHV0X2ZpbGUgY29yZWZpbGVdIgotKwlzZXQgZm91bmQgMQotKyAgICB9Ci0rfQotKyMg Q2hlY2sgZm9yICJjb3JlLlBJRCIuCi0raWYgeyAkZm91bmQgPT0gMCB9IHsKLSsgICAgc2V0IG5h bWVzIFtnbG9iIC1ub2NvbXBsYWluIC1kaXJlY3RvcnkgJGNvcmVkaXIgY29yZS4qXQotKyAgICBp ZiB7W2xsZW5ndGggJG5hbWVzXSA9PSAxfSB7Ci0rICAgICAgICBzZXQgY29yZWZpbGUgW2ZpbGUg am9pbiAkY29yZWRpciBbbGluZGV4ICRuYW1lcyAwXV0KLSsgICAgICAgIHJlbW90ZV9leGVjIGJ1 aWxkICJtdiAkY29yZWZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlIGNvcmVmaWxlXSIKLSsgICAg ICAgIHNldCBmb3VuZCAxCi0rICAgIH0KLSt9Ci0raWYgeyAkZm91bmQgPT0gMCB9IHsKLSsgICAg IyBUaGUgYnJhaW5kYW1hZ2VkIEhQVVggc2hlbGwgcXVpdHMgYWZ0ZXIgdGhlIHVsaW1pdCAtYyBh Ym92ZQotKyAgICAjIHdpdGhvdXQgZXhlY3V0aW5nICR7YmluZmlsZX0uICBTbyB3ZSB0cnkgYWdh aW4gd2l0aG91dCB0aGUKLSsgICAgIyB1bGltaXQgaGVyZSBpZiB3ZSBkaWRuJ3QgZmluZCBhIGNv cmUgZmlsZSBhYm92ZS4KLSsgICAgIyBPaCwgSSBzaG91bGQgbWVudGlvbiB0aGF0IGFueSAiYnJh aW5kYW1hZ2VkIiBub24tVW5peCBzeXN0ZW0gaGFzCi0rICAgICMgdGhlIHNhbWUgcHJvYmxlbS4g SSBsaWtlIHRoZSBjZCBiaXQgdG9vLCBpdCdzIHJlYWxseSBuZWF0J24gc3R1ZmYuCi0rICAgIGNh dGNoICJzeXN0ZW0gXCIoY2QgW2ZpbGUgZGlybmFtZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHti aW5maWxlfV1dOyAke2JpbmZpbGV9OyB0cnVlKSA+L2Rldi9udWxsIDI+JjFcIiIKLSsgICAgZm9y ZWFjaCBpICJbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgY29yZV0gW3N0YW5kYXJkX291dHB1dF9maWxl IGNvcmUuY29yZW1ha2VyLmNdICR7YmluZmlsZX0uY29yZSIgewotKwlpZiBbcmVtb3RlX2ZpbGUg YnVpbGQgZXhpc3RzICRpXSB7Ci0rCSAgICByZW1vdGVfZXhlYyBidWlsZCAibXYgJGkgW3N0YW5k YXJkX291dHB1dF9maWxlIGNvcmVmaWxlXSIKLSsJICAgIHNldCBmb3VuZCAxCi0rCX0KLSsgICAg fQotK30KLSsKLStpZiB7ICRmb3VuZCA9PSAwICB9IHsKLSsgICAgIyBUcnkgdG8gY2xlYW4gdXAg YWZ0ZXIgb3Vyc2VsdmVzLgotKyAgICByZW1vdGVfZmlsZSBidWlsZCBkZWxldGUgW2ZpbGUgam9p biAkY29yZWRpciBjb3JlbW1hcC5kYXRhXQotKyAgICByZW1vdGVfZXhlYyBidWlsZCAicm1kaXIg JGNvcmVkaXIiCi0rICAgIHdhcm5pbmcgImNhbid0IGdlbmVyYXRlIGEgY29yZSBmaWxlIC0gY29y ZSB0ZXN0cyBzdXBwcmVzc2VkIC0gY2hlY2sgdWxpbWl0IC1jIgotKyAgICByZXR1cm4gMAotK30K LSsKLSsjCi0rIyBUZXN0IHRoYXQgd2UgY2FuIHNpbXBseSBzdGFydHVwIHdpdGggYSAiLWNvcmU9 Y29yZWZpbGUiIGNvbW1hbmQgbGluZSBhcmcKLSsjIGFuZCByZWNvZ25pemUgdGhhdCB0aGUgY29y ZSBmaWxlIGlzIGEgdmFsaWQsIHVzYWJsZSBjb3JlIGZpbGUuCi0rIyBUbyBkbyB0aGlzLCB3ZSBt dXN0IHNodXRkb3duIHRoZSBjdXJyZW50bHkgcnVubmluZyBnZGIgYW5kIHJlc3RhcnQKLSsjIHdp dGggdGhlIC1jb3JlIGFyZ3MuICBXZSBjYW4ndCB1c2UgZ2RiX3N0YXJ0IGJlY2F1c2UgaXQgbG9v a3MgZm9yCi0rIyB0aGUgZmlyc3QgZ2RiIHByb21wdCwgYW5kIHRoZSBtZXNzYWdlIHdlIGFyZSBs b29raW5nIGZvciBvY2N1cnMKLSsjIGJlZm9yZSB0aGUgZmlyc3QgcHJvbXB0LiAgQWxzbywgd2Ug Y2FuJ3QgaW5jbHVkZSBHREJGTEFHUyBiZWNhdXNlCi0rIyBpZiBpdCBpcyBlbXB0eSwgdGhpcyBj b25mdXNlcyBnZGIgd2l0aCBhbiBlbXB0eSBhcmd1bWVudCB0aGF0IGl0Ci0rIyBncnVtYmxlcyBh Ym91dCAoc2FpZCBncnVtYmxpbmcgY3VycmVudGx5IGJlaW5nIGlnbm9yZWQgaW4gZ2RiX3N0YXJ0 KS4KLSsjICoqRklYTUUqKgotKyMKLSsjIEFub3RoZXIgcHJvYmxlbSBpcyB0aGF0IG9uIHNvbWUg c3lzdGVtcyAoc29sYXJpcyBmb3IgZXhhbXBsZSksIHRoZXJlCi0rIyBpcyBhcHBhcmVudGx5IGEg bGltaXQgb24gdGhlIGxlbmd0aCBvZiBhIGZ1bGx5IHNwZWNpZmllZCBwYXRoIHRvCi0rIyB0aGUg Y29yZW1ha2VyIGV4ZWN1dGFibGUsIGF0IGFib3V0IDgwIGNoYXJzLiAgRm9yIHRoaXMgY2FzZSwg Y29uc2lkZXIKLSsjIGl0IGEgcGFzcywgYnV0IG5vdGUgdGhhdCB0aGUgcHJvZ3JhbSBuYW1lIGlz IGJhZC4KLSsKLStnZGJfZXhpdAotK2lmICR2ZXJib3NlPjEgdGhlbiB7Ci0rICAgIHNlbmRfdXNl ciAiU3Bhd25pbmcgJEdEQiAtbncgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAtY29yZT1b c3RhbmRhcmRfb3V0cHV0X2ZpbGUgY29yZWZpbGVdXG4iCi0rfQotKwotK3NldCBvbGR0aW1lb3V0 ICR0aW1lb3V0Ci0rc2V0IHRpbWVvdXQgW2V4cHIgIiR0aW1lb3V0ICsgNjAiXQotK3ZlcmJvc2Ug IlRpbWVvdXQgaXMgbm93ICR0aW1lb3V0IHNlY29uZHMiIDIKLStldmFsICJzcGF3biAkR0RCIC1u dyAkSU5URVJOQUxfR0RCRkxBR1MgJEdEQkZMQUdTIC1jb3JlPVtzdGFuZGFyZF9vdXRwdXRfZmls ZSBjb3JlZmlsZV0iCi0rZXhwZWN0IHsKLSsgICAgLXJlICJDb3VsZG4ndCBmaW5kIC4qIHJlZ2lz dGVycyBpbiBjb3JlIGZpbGUuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgIGZhaWwgImFyZ3M6 IC1jb3JlPWNvcmVmaWxlIChjb3VsZG4ndCBmaW5kIHJlZ3MpIgotKyAgICB9Ci0rICAgIC1yZSAi Q29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qY29yZW1ha2VyLipcclxuXCMwICAuKlwoXCkuKlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgImFyZ3M6IC1jb3JlPWNvcmVmaWxlIgotKyAgICB9Ci0r ICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qXHJcblwjMCAgLipcKFwpLipcclxuJGdk Yl9wcm9tcHQgJCIgewotKwlwYXNzICJhcmdzOiAtY29yZT1jb3JlZmlsZSAod2l0aCBiYWQgcHJv Z3JhbSBuYW1lKSIKLSsgICAgfQotKyAgICAtcmUgIi4qcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxl OiBGaWxlIGluIHdyb25nIGZvcm1hdC4qICQiIHsKLSsJZmFpbCAiYXJnczogLWNvcmU9Y29yZWZp bGUgKGNvdWxkIG5vdCByZWFkIHJlZ2lzdGVycyBmcm9tIGNvcmUgZmlsZSkiCi0rICAgIH0KLSsg ICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiCXsgZmFpbCAiYXJnczogLWNvcmU9Y29yZWZpbGUiIH0K LSsgICAgdGltZW91dCAJCXsgZmFpbCAiKHRpbWVvdXQpIHN0YXJ0aW5nIHdpdGggLWNvcmUiIH0K LSt9Ci0rCi0rCi0rIwotKyMgVGVzdCB0aGF0IHN0YXJ0dXAgd2l0aCBib3RoIGFuIGV4ZWN1dGFi bGUgZmlsZSBhbmQgLWNvcmUgYXJndW1lbnQuCi0rIyBTZWUgcHJldmlvdXMgY29tbWVudHMgYWJv dmUsIHRoZXkgYXJlIHN0aWxsIGFwcGxpY2FibGUuCi0rIwotKwotK2Nsb3NlOwotKwotK2lmICR2 ZXJib3NlPjEgdGhlbiB7Ci0rICAgIHNlbmRfdXNlciAiU3Bhd25pbmcgJEdEQiAtbncgJElOVEVS TkFMX0dEQkZMQUdTICRHREJGTEFHUyAkYmluZmlsZSAtY29yZT1bc3RhbmRhcmRfb3V0cHV0X2Zp bGUgY29yZWZpbGVdXG4iCi0rfQotKwotKwotK2V2YWwgInNwYXduICRHREIgLW53ICRJTlRFUk5B TF9HREJGTEFHUyAkR0RCRkxBR1MgJGJpbmZpbGUgLWNvcmU9W3N0YW5kYXJkX291dHB1dF9maWxl IGNvcmVmaWxlXSI7Ci0rZXhwZWN0IHsKLSsgICAgLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkg Lipjb3JlbWFrZXIuKlxyXG5cIzAgIC4qXChcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFz cyAiYXJnczogZXhlY2ZpbGUgLWNvcmU9Y29yZWZpbGUiCi0rICAgIH0KLSsgICAgLXJlICJDb3Jl IHdhcyBnZW5lcmF0ZWQgYnkgLipcclxuXCMwICAuKlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIgkg ewotKwlwYXNzICJhcmdzOiBleGVjZmlsZSAtY29yZT1jb3JlZmlsZSAod2l0aCBiYWQgcHJvZ3Jh bSBuYW1lKSIKLSsgICAgfQotKyAgICAtcmUgIi4qcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlOiBG aWxlIGluIHdyb25nIGZvcm1hdC4qICQiIHsKLSsJZmFpbCAiYXJnczogZXhlY2ZpbGUgLWNvcmU9 Y29yZWZpbGUgKGNvdWxkIG5vdCByZWFkIHJlZ2lzdGVycyBmcm9tIGNvcmUgZmlsZSkiCi0rICAg IH0KLSsgICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiCXsgZmFpbCAiYXJnczogZXhlY2ZpbGUgLWNv cmU9Y29yZWZpbGUiIH0KLSsgICAgdGltZW91dCAJCXsgZmFpbCAiKHRpbWVvdXQpIHN0YXJ0aW5n IHdpdGggLWNvcmUiIH0KLSt9Ci0rc2V0IHRpbWVvdXQgJG9sZHRpbWVvdXQKLSt2ZXJib3NlICJU aW1lb3V0IGlzIG5vdyAkdGltZW91dCBzZWNvbmRzIiAyCi0rCi0rY2xvc2U7Ci0rCi0rIyBOb3cg cmVzdGFydCBub3JtYWxseS4KLSsKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rIyBUZXN0IGJhc2ljIGNv cmVmaWxlIHJlY29nbml0aW9uIHZpYSBjb3JlLWZpbGUgY29tbWFuZC4KLSsKLStzZW5kX2dkYiAi Y29yZS1maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSBjb3JlZmlsZV1cbiIKLStnZGJfZXhwZWN0 IHsKLSsgICAgLXJlICIuKiBwcm9ncmFtIGlzIGJlaW5nIGRlYnVnZ2VkIGFscmVhZHkuKnkgb3Ig bi4gJCIgewotKwkjIGdkYl9sb2FkIG1heSBjb25uZWN0IHVzIHRvIGEgZ2Ric2VydmVyLgotKwlz ZW5kX2dkYiAieVxuIgotKwlleHBfY29udGludWU7Ci0rICAgIH0KLSsgICAgLXJlICJDb3JlIHdh cyBnZW5lcmF0ZWQgYnkgLipjb3JlbWFrZXIuKlxyXG5cIzAgIC4qXChcKS4qXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJcGFzcyAiY29yZS1maWxlIGNvbW1hbmQiCi0rICAgIH0KLSsgICAgLXJlICJD b3JlIHdhcyBnZW5lcmF0ZWQgYnkgLipcclxuXCMwICAuKlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAk IiB7Ci0rCXBhc3MgImNvcmUtZmlsZSBjb21tYW5kICh3aXRoIGJhZCBwcm9ncmFtIG5hbWUpIgot KyAgICB9Ci0rICAgIC1yZSAiLipyZWdpc3RlcnMgZnJvbSBjb3JlIGZpbGU6IEZpbGUgaW4gd3Jv bmcgZm9ybWF0LiogJCIgewotKwlmYWlsICJjb3JlLWZpbGUgY29tbWFuZCAoY291bGQgbm90IHJl YWQgcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlKSIKLSsgICAgfQotKyAgICAtcmUgIi4qJGdkYl9w cm9tcHQgJCIJeyBmYWlsICJjb3JlLWZpbGUgY29tbWFuZCIgfQotKyAgICB0aW1lb3V0IAkJeyBm YWlsICIodGltZW91dCkgY29yZS1maWxlIGNvbW1hbmQiIH0KLSt9Ci0rCi0rIyBUZXN0IGNvcnJl Y3QgbWFwcGluZyBvZiBjb3JlZmlsZSBzZWN0aW9ucyBieSBwcmludGluZyBzb21lIHZhcmlhYmxl cy4KLSsKLStnZGJfdGVzdCAicHJpbnQgY29yZW1ha2VyX2RhdGEiICJcXFwkJGRlY2ltYWwgPSAy MDIiCi0rZ2RiX3Rlc3QgInByaW50IGNvcmVtYWtlcl9ic3MiICJcXFwkJGRlY2ltYWwgPSAxMCIK LStnZGJfdGVzdCAicHJpbnQgY29yZW1ha2VyX3JvIiAiXFxcJCRkZWNpbWFsID0gMjAxIgotKwot K2dkYl90ZXN0ICJwcmludCBmdW5jMjo6Y29yZW1ha2VyX2xvY2FsIiAiXFxcJCRkZWNpbWFsID0g XFx7MCwgMSwgMiwgMywgNFxcfSIKLSsKLSsjIFNvbWVob3cgd2UgYmV0dGVyIHRlc3QgdGhlIGFi aWxpdHkgdG8gcmVhZCB0aGUgcmVnaXN0ZXJzIG91dCBvZiB0aGUgY29yZQotKyMgZmlsZSBjb3Jy ZWN0bHkuICBJIGRvbid0IHRoaW5rIHRoZSBvdGhlciB0ZXN0cyBkbyB0aGlzLgotKwotK2dkYl90 ZXN0ICJidCIgImFib3J0LipmdW5jMi4qZnVuYzEuKm1haW4uKiIgImJhY2t0cmFjZSBpbiBjb3Jl ZmlsZS5leHAiCi0rZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZIJ1xdKiBpbiAu KiBcXCguKlxcKS4qIiAidXAgaW4gY29yZWZpbGUuZXhwIgotKwotKyMgVGVzdCBhYmlsaXR5IHRv IHJlYWQgbW1hcCdkIGRhdGEKLSsKLStnZGJfdGVzdCAieC84YmQgYnVmMSIgIi4qOi4qMC4qMS4q Mi4qMy4qNC4qNS4qNi4qNyIgImFjY2Vzc2luZyBvcmlnaW5hbCBtbWFwIGRhdGEgaW4gY29yZSBm aWxlIgotK3NldHVwX3hmYWlsICIqLSotc3Vub3MqIiAiKi0qLXVsdHJpeCoiICIqLSotYWl4KiIK LStzZXQgdGVzdCAiYWNjZXNzaW5nIG1tYXBwZWQgZGF0YSBpbiBjb3JlIGZpbGUiCi0rZ2RiX3Rl c3RfbXVsdGlwbGUgIngvOGJkIGJ1ZjIiICIkdGVzdCIgewotKyAgICAtcmUgIi4qOi4qMC4qMS4q Mi4qMy4qNC4qNS4qNi4qNy4qJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICIkdGVzdCIKLSsgICAg fQotKyAgICAtcmUgIjB4XFtmXF0qOi4qQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAw eFxbZlxdKi4qJGdkYl9wcm9tcHQgJCIgewotKwlmYWlsICIkdGVzdCAobWFwcGluZyBmYWlsZWQg YXQgcnVudGltZSkiCi0rICAgIH0KLSsgICAgLXJlICIweC4qOi4qQ2Fubm90IGFjY2VzcyBtZW1v cnkgYXQgYWRkcmVzcyAweC4qJGdkYl9wcm9tcHQgJCIgewotKwlmYWlsICIkdGVzdCAobWFwcGlu ZyBhZGRyZXNzIG5vdCBmb3VuZCBpbiBjb3JlIGZpbGUpIgotKyAgICB9Ci0rfQotKwotKyMgdGVz dCByZWluaXRfZnJhbWVfY2FjaGUKLSsKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rZ2RiX3Rlc3Qg InVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZIJ1xdKiBpbiAuKiBcXCguKlxcKS4qIiAidXAgaW4g Y29yZWZpbGUuZXhwIChyZWluaXQpIgotKwotK2dkYl90ZXN0ICJjb3JlIiAiTm8gY29yZSBmaWxl IG5vdy4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCi1A QCAtMCwwICsxLDE0MSBAQAotKy8qIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAx OTk2LCAxOTk5Ci0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQKLSsgICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0r ICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAgIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsKLSsvKiBTaW1wbGUgbGl0dGxlIHByb2dy YW0gdGhhdCBqdXN0IGdlbmVyYXRlcyBhIGNvcmUgZHVtcCBmcm9tIGluc2lkZSBzb21lCi0rICAg bmVzdGVkIGZ1bmN0aW9uIGNhbGxzLiAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNs dWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8c3lzL21t YW4uaD4KLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNs dWRlIDx1bmlzdGQuaD4KLSsKLSsjaWZuZGVmIF9fU1REQ19fCi0rI2RlZmluZQljb25zdAkvKiov Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSBNQVBTSVpFICg4ICogMTAyNCkKLSsKLSsvKiBEb24ndCBt YWtlIHRoZXNlIGF1dG9tYXRpYyB2YXJzIG9yIHdlIHdpbGwgaGF2ZSB0byB3YWxrIGJhY2sgdXAg dGhlCi0rICAgc3RhY2sgdG8gYWNjZXNzIHRoZW0uICovCi0rCi0rY2hhciAqYnVmMTsKLStjaGFy ICpidWYyOwotKwotK2ludCBjb3JlbWFrZXJfZGF0YSA9IDE7CS8qIEluIERhdGEgc2VjdGlvbiAq LwotK2ludCBjb3JlbWFrZXJfYnNzOwkvKiBJbiBCU1Mgc2VjdGlvbiAqLwotKwotK2NvbnN0IGlu dCBjb3JlbWFrZXJfcm8gPSAyMDE7CS8qIEluIFJlYWQtT25seSBEYXRhIHNlY3Rpb24gKi8KLSsK LSsvKiBOb3RlIHRoYXQgaWYgdGhlIG1hcHBpbmcgZmFpbHMgZm9yIGFueSByZWFzb24sIHdlIHNl dCBidWYyCi0rICAgdG8gLTEgYW5kIHRoZSB0ZXN0c3VpdGUgbm90aWNlcyB0aGlzIGFuZCByZXBv cnRzIGl0IGFzCi0rICAgYSBmYWlsdXJlIGR1ZSB0byBhIG1hcHBpbmcgZXJyb3IuICBUaGlzIHdh eSB3ZSBkb24ndCBoYXZlCi0rICAgdG8gdGVzdCBmb3Igc3BlY2lmaWMgZXJyb3JzIHdoZW4gcnVu bmluZyB0aGUgY29yZSBtYWtlci4gKi8KLSsKLSt2b2lkCi0rbW1hcGRhdGEgKCkKLSt7Ci0rICBp bnQgaiwgZmQ7Ci0rCi0rICAvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIGJ1ZmZlciB0aGF0 IHdpbGwgYmUgdXNlZCB0byB3cml0ZQotKyAgICAgdGhlIGZpbGUgdGhhdCBpcyBsYXRlciBtYXBw ZWQgaW4uICovCi0rCi0rICBidWYxID0gKGNoYXIgKikgbWFsbG9jIChNQVBTSVpFKTsKLSsgIGZv ciAoaiA9IDA7IGogPCBNQVBTSVpFOyArK2opCi0rICAgIHsKLSsgICAgICBidWYxW2pdID0gajsK LSsgICAgfQotKwotKyAgLyogV3JpdGUgdGhlIGZpbGUgdG8gbWFwIGluICovCi0rCi0rICBmZCA9 IG9wZW4gKCJjb3JlbW1hcC5kYXRhIiwgT19DUkVBVCB8IE9fUkRXUiwgMDY2Nik7Ci0rICBpZiAo ZmQgPT0gLTEpCi0rICAgIHsKLSsgICAgICBwZXJyb3IgKCJjb3JlbW1hcC5kYXRhIG9wZW4gZmFp bGVkIik7Ci0rICAgICAgYnVmMiA9IChjaGFyICopIC0xOwotKyAgICAgIHJldHVybjsKLSsgICAg fQotKyAgd3JpdGUgKGZkLCBidWYxLCBNQVBTSVpFKTsKLSsKLSsgIC8qIE5vdyBtYXAgdGhlIGZp bGUgaW50byBvdXIgYWRkcmVzcyBzcGFjZSBhcyBidWYyICovCi0rCi0rICBidWYyID0gKGNoYXIg KikgbW1hcCAoMCwgTUFQU0laRSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUs IGZkLCAwKTsKLSsgIGlmIChidWYyID09IChjaGFyICopIC0xKQotKyAgICB7Ci0rICAgICAgcGVy cm9yICgibW1hcCBmYWlsZWQiKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIC8qIFZl cmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBkYXRhIGFuZCB0aGUgbWFwcGVkIGRhdGEgYXJlIGlkZW50 aWNhbC4KLSsgICAgIElmIG5vdCwgd2UnZCByYXRoZXIgZmFpbCBub3cgdGhhbiB3aGVuIHRyeWlu ZyB0byBhY2Nlc3MgdGhlIG1hcHBlZAotKyAgICAgZGF0YSBmcm9tIHRoZSBjb3JlIGZpbGUuICov Ci0rCi0rICBmb3IgKGogPSAwOyBqIDwgTUFQU0laRTsgKytqKQotKyAgICB7Ci0rICAgICAgaWYg KGJ1ZjFbal0gIT0gYnVmMltqXSkKLSsJewotKwkgIGZwcmludGYgKHN0ZGVyciwgIm1hcHBlZCBk YXRhIGlzIGluY29ycmVjdCIpOwotKwkgIGJ1ZjIgPSAoY2hhciAqKSAtMTsKLSsJICByZXR1cm47 Ci0rCX0KLSsgICAgfQotK30KLSsKLSt2b2lkCi0rZnVuYzIgKCkKLSt7Ci0rICBpbnQgY29yZW1h a2VyX2xvY2FsWzVdOwotKyAgaW50IGk7Ci0rCi0rI2lmZGVmIFNBX0ZVTExEVU1QCi0rICAvKiBG b3JjZSBhIGNvcmVmaWxlIHRoYXQgaW5jbHVkZXMgdGhlIGRhdGEgc2VjdGlvbiBmb3IgQUlYLiAg Ki8KLSsgIHsKLSsgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKLSsKLSsgICAgc2lnYWN0aW9uIChT SUdBQlJULCAoc3RydWN0IHNpZ2FjdGlvbiAqKTAsICZzYSk7Ci0rICAgIHNhLnNhX2ZsYWdzIHw9 IFNBX0ZVTExEVU1QOwotKyAgICBzaWdhY3Rpb24gKFNJR0FCUlQsICZzYSwgKHN0cnVjdCBzaWdh Y3Rpb24gKikwKTsKLSsgIH0KLSsjZW5kaWYKLSsKLSsgIC8qIE1ha2Ugc3VyZSB0aGF0IGNvcmVt YWtlcl9sb2NhbCBkb2Vzbid0IGdldCBvcHRpbWl6ZWQgYXdheS4gKi8KLSsgIGZvciAoaSA9IDA7 IGkgPCA1OyBpKyspCi0rICAgIGNvcmVtYWtlcl9sb2NhbFtpXSA9IGk7Ci0rICBjb3JlbWFrZXJf YnNzID0gMDsKLSsgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspCi0rICAgIGNvcmVtYWtlcl9ic3Mg Kz0gY29yZW1ha2VyX2xvY2FsW2ldOwotKyAgY29yZW1ha2VyX2RhdGEgPSBjb3JlbWFrZXJfcm8g KyAxOwotKyAgYWJvcnQgKCk7Ci0rfQotKwotK3ZvaWQKLStmdW5jMSAoKQotK3sKLSsgIGZ1bmMy ICgpOwotK30KLSsKLStpbnQgbWFpbiAoKQotK3sKLSsgIG1tYXBkYXRhICgpOwotKyAgZnVuYzEg KCk7Ci0rICByZXR1cm4gMDsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10ZXN0LXNlbGYtMjAw NTAxMTAucGF0Y2ggYi9nZGItNi4zLXRlc3Qtc2VsZi0yMDA1MDExMC5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMjcwOTA5My4uMDAwMDAwMAotLS0gYS9nZGItNi4zLXRlc3Qt c2VsZi0yMDA1MDExMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20g RkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFbGVuYSBaYW5u b25pIDxlemFubm9uaUByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAyMTowNzo1 MCArMDIwMAotU3ViamVjdDogZ2RiLTYuMy10ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2gKLQotOzsg R2V0IHNlbGZ0ZXN0IHdvcmtpbmcgd2l0aCBzZXAtZGVidWctaW5mbwotOzs9ZmVkb3JhdGVzdAot Ci0yMDA0LTAyLTIzICBFbGVuYSBaYW5ub25pICA8ZXphbm5vbmlAcmVkaGF0LmNvbT4KLQotICAg ICAgICAqIGdkYi5nZGIvc2VsZnRlc3QuZXhwOiBNYWtlIHN1cmUgdGhhdCB0aGUgZGVidWcgZGly ZWN0b3J5IGlzCi0gICAgICAgIHNldCB1cCBwcm9wZXJseS4KLSAgICAgICAgKiBnZGIuZ2RiL2Nv bXBsYWludHMuZXhwOiBEaXR0by4KLSAgICAgICAgKiBnZGIuZ2RiL3hmdWxscGF0aC5leHA6IERp dHRvLgotICAgICAgICAqIGdkYi5nZGIvb2JzZXJ2ZXIuZXhwOiBEaXR0by4KLQotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvbGliL3NlbGZ0ZXN0LXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9saWIvc2VsZnRlc3Qtc3VwcG9ydC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3NlbGZ0 ZXN0LXN1cHBvcnQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9zZWxmdGVzdC1zdXBwb3J0 LmV4cAotQEAgLTE1MiwxOCArMTUyLDE4IEBAIHByb2MgZG9fc2VsZl90ZXN0cyB7ZnVuY3Rpb24g Ym9keX0gewotICAgICB9Ci0gCi0gICAgICMgUmVtb3ZlIGFueSBvbGQgY29weSBseWluZyBhcm91 bmQuCi0tICAgIHJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICR4Z2RiCi0rICAgICNyZW1vdGVfZmls ZSBob3N0IGRlbGV0ZSAkeGdkYgotIAotICAgICBnZGJfc3RhcnQKLS0gICAgc2V0IGZpbGUgW3Jl bW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBBVEggJHhnZGJdCi0rICAgICNzZXQgZmlsZSBb cmVtb3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCAkeGdkYl0KLSAKLS0gICAgc2V0IHJl c3VsdCBbc2VsZnRlc3Rfc2V0dXAgJGZpbGUgJGZ1bmN0aW9uXQotKyAgICBzZXQgcmVzdWx0IFtz ZWxmdGVzdF9zZXR1cCAkR0RCX0ZVTExQQVRIICRmdW5jdGlvbl0KLSAgICAgaWYgeyRyZXN1bHQg PT0gMH0gdGhlbiB7Ci0gCXNldCByZXN1bHQgW3VwbGV2ZWwgJGJvZHldCi0gICAgIH0KLSAKLSAg ICAgZ2RiX2V4aXQKLS0gICAgY2F0Y2ggInJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICRmaWxlIgot KyAgICAjY2F0Y2ggInJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICRmaWxlIgotIAotICAgICBpZiB7 JHJlc3VsdCA8IDB9IHRoZW4gewotIAl3YXJuaW5nICJDb3VsZG4ndCB0ZXN0IHNlbGYiCgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFtcG9saW5lLWxvb2t1cC1sb2NrLWZp eC5wYXRjaCBiL2dkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1m aXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YzFhMWUuLjAwMDAwMDAK LS0tIGEvZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFtcG9saW5lLWxvb2t1cC1sb2NrLWZpeC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWRvcmEgR0RCIHBhdGNoZXMgPGludmFs aWRAZW1haWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAyMTowNzo1MCArMDIwMAotU3Vi amVjdDogZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFtcG9saW5lLWxvb2t1cC1sb2NrLWZpeC5w YXRjaAotCi07OyBGaXggbG9ja3VwIG9uIHRyYW1wb2xpbmUgdnMuIGl0cyBmdW5jdGlvbiBsb29r dXA7IHVucmVwcm9kdWNpYmxlIChCWiAyMTgzNzkpLgotOzs9ZmVkb3JhCi0KLWh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mzc5Ci0KLWRpZmYg LS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLS0tLSBhL2dkYi9zeW10YWIuYwot KysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtMzE2OSw2ICszMTY5LDEzIEBAIGZpbmRfcGNfc2VjdF9s aW5lIChDT1JFX0FERFIgcGMsIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2VjdGlvbiwgaW50IG5vdGN1 cnJlbnQpCi0gCSAgICAgbXN5bWJvbC0+bGlua2FnZV9uYW1lICgpKTsgKi8KLSAJICA7Ci0gCS8q IGZhbGwgdGhyb3VnaCAqLwotKwkvKiBgbXN5bWJvbCcgdHJhbXBvbGluZSBtYXkgYmUgbG9jYXRl ZCBiZWZvcmUgaXRzIC50ZXh0IHN5bWJvbAotKwkgICBidXQgdGhpcyB0ZXh0IHN5bWJvbCBtYXkg YmUgdGhlIGFkZHJlc3Mgd2Ugd2VyZSBsb29raW5nIGZvci4KLSsJICAgQXZvaWQgYGZpbmRfcGNf c2VjdF9saW5lJzwtPmBmaW5kX3BjX2xpbmUnIGluZmluaXRlIGxvb3AuCi0rCSAgIFJlZCBIYXQg QnVnIDIxODM3OS4gICovCi0rCWVsc2UgaWYgKEJNU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1mdW5z eW0pID09IHBjKQotKwkgIHdhcm5pbmcgKCJJbiBzdHViIGZvciAlcyAoMHglcyk7IGludGVybG9j a2VkLCBwbGVhc2Ugc3VibWl0IHRoZSBiaW5hcnkgdG8gaHR0cDovL2J1Z3ppbGxhLnJlZGhhdC5j b20iLCBtc3ltYm9sLm1pbnN5bS0+bGlua2FnZV9uYW1lICgpLCBwYWRkcmVzcyAodGFyZ2V0X2dk YmFyY2ggKCksIHBjKSk7Ci0rCS8qIGZhbGwgdGhyb3VnaCAqLwotIAllbHNlCi0gCSAgewotIAkg ICAgLyogRGV0ZWN0IGFuIG9idmlvdXMgY2FzZSBvZiBpbmZpbml0ZSByZWN1cnNpb24uICBJZiB0 aGlzCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRj aCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDQ1YjkxNWQuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuNi1idWlsZGlk LWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCwwIEBA Ci1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVk b3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIw MTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1h cy1hcmcucGF0Y2gKLQotOzs9cHVzaCtqYW4KLQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTAtMDEvbXNnMDA1NTguaHRtbAotCi1bIEZpeGVkIHVwIHNpbmNlIHRoZSBt YWlsLiAgXQotCi1PbiBUaHUsIDIxIEphbiAyMDEwIDE4OjE3OjE1ICswMTAwLCBEb3VnIEV2YW5z IHdyb3RlOgotPiBOb3QgYW4gZXhoYXVzdGl2ZSBsaXN0LCBidXQgaWYgd2UgZ28gZG93biB0aGUg cGF0aCBvZiBjb252ZXJ0aW5nICJnZGIKLT4gY29yZWZpbGUiIHRvICJnZGIgLWMgY29yZWZpbGUi LCB0aGVuIHdlIGFsc28gbmVlZCB0byB0aGluayBhYm91dCAiZmlsZQotPiBjb3JlZmlsZSIgYmVp bmcgY29udmVydGVkIHRvICJjb3JlIGNvcmVmaWxlIiBbb3IgInRhcmdldCBjb3JlCi0+IGNvcmVm aWxlIiwgImNvcmUiIGlzIGFwcGFyZW50bHkgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAidGFyZ2V0 IGNvcmUiXQotPiBhbmQgInRhcmdldCBleGVjIGNvcmVmaWxlIiAtPiAidGFyZ2V0IGNvcmUgY29y ZWZpbGUiLiAgUHJlc3VtYWJseQotPiAiZmlsZSBjb3JlZmlsZSIgKGFuZCAidGFyZ2V0IGV4ZWMg Y29yZWZpbGUiKSB3b3VsZCBkaXNjYXJkIHRoZQotPiBjdXJyZW50bHkgc2VsZWN0ZWQgZXhlY3V0 YWJsZS4gIEJ1dCBtYXliZSBub3QuICBXaWxsIHRoYXQgYmUgY29uZnVzaW5nCi0+IGZvciB1c2Vy cz8gIEkgZG9uJ3Qga25vdy4KLQotV2hpbGUgdGhpbmtpbmcgYWJvdXQgaXQgb3ZlcnJpZGluZyBz b21lIEdEQiBfY29tbWFuZHNfIHdhcyBub3QgbXkgaW50ZW50aW9uLgotCi1UaGVyZSBpcyBhIGdl bmVyYWwgYXNzdW1wdGlvbiBpZiBJIGhhdmUgYSBzaGVsbCBDT01NQU5EIGFuZCBzb21lIEZJTEUg SSBjYW4gZG8KLSQgQ09NTUFORCBGSUxFCi1hbmQgQ09NTUFORCB3aWxsIGFwcHJvcHJpYXRlbHkg bG9hZCB0aGUgRklMRS4KLQotRlNGIEdEQiBjdXJyZW50bHkgbmVlZHMgdG8gc3BlY2lmeSBhbHNv IHRoZSBleGVjdXRhYmxlIGZpbGUgZm9yIGNvcmUgZmlsZXMKLXdoaWNoIGFscmVhZHkgaW5oaWJp dHMgdGhpcyBpbnR1aXRpdmUgZXhwZWN0YXRpb24uICBPVE9IIHdpdGggdGhlIGJ1aWxkLWlkCi1s b2NhdGluZyBwYXRjaCB3aGljaCBjb3VsZCBhbGxvdyBzdWNoIGludHVpdGl2ZSBzdGFydCAgbm90 bmVlZGluZyB0aGUKLWV4ZWN1dGFibGUgZmlsZS4gIFN0aWxsIGl0IGN1cnJlbnRseSBkaWQgbm90 IHdvcmsgZHVlIHRvIHRoZSByZXF1aXJlZCAiLWMiOgotJCBDT01NQU5EIC1jIENPUkVGSUxFCi0K LUVudGVyaW5nICJmaWxlIiwgImNvcmUtZmlsZSIgb3IgImF0dGFjaCIgY29tbWFuZHMgaXMgYWxy ZWFkeSBleHBsaWNpdCBlbm91Z2gKLXNvIHRoYXQgaXQgSU1PIHNob3VsZCBkbyB3aGF0IHRoZSBj b21tYW5kIG5hbWUgc2F5cyB3aXRob3V0IGFueQotYXV0b2RldGVjdGlvbnMuICBUaGUgc2Vjb25k IGNvbW1hbmQgbGluZSBhcmd1bWVudAotKGNhcHR1cmVkX21haW4tPnBpZF9vcl9jb3JlX2FyZykg aXMgYWxzbyBhdXRvZGV0ZWN0ZWQgKGZvciBQSUQgb3IgQ09SRSkgYnV0Ci1uZWl0aGVyICJhdHRh Y2giIGFjY2VwdHMgYSBjb3JlIGZpbGUgbm9yICJjb3JlLWZpbGUiIGFjY2VwdHMgYSBQSUQuCi0K LVRoZSBwYXRjaCBtYWtlcyBzZW5zZSBvbmx5IHdpdGggdGhlIGJ1aWxkLWlkIHBhdGNoc2V0IHNv IHRoaXMgaXMgbm90IHN1Ym1pdAotZm9yIEZTRiBHREIgaW5jbHVzaW9uIHlldC4gIEkgYW0gZmlu ZSB3aXRoIHlvdXIgcGF0Y2ggKCsvLSBIdWkgWmh1J3MgcGVuZGluZwotYmZkX2NoZWNrX2Zvcm1h dF9tYXRjaGVzKSBhcyB0aGUgcGF0Y2ggYmVsb3cgaXMgaXRzIG5hdHVyYWwgZXh0ZW5zaW9uLgot Ci1Tb3JyeSBmb3IgdGhlIGRlbGF5LAotSmFuCi0KLTIwMTAtMDEtMjUgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZXhjZXB0aW9ucy5oIChlbnVtIGVy cm9ycyA8SVNfQ09SRV9FUlJPUj4pOiBOZXcuCi0JKiBleGVjLmM6IEluY2x1ZGUgZXhjZXB0aW9u cy5oLgotCShleGVjX2ZpbGVfYXR0YWNoIDxiZmRfY29yZT4pOiBDYWxsIHRocm93X2Vycm9yIChJ U19DT1JFX0VSUk9SLCAuLi4pLgotCSogbWFpbi5jIChleGVjX29yX2NvcmVfZmlsZV9hdHRhY2gp OiBOZXcuCi0JKGNhcHR1cmVkX21haW4gPG9wdGluZCA8IGFyZ2M+KTogU2V0IGFsc28gY29yZWFy Zy4KLQkoY2FwdHVyZWRfbWFpbiA8c3RyY21wIChleGVjYXJnLCBzeW1hcmcpID09IDA+KTogTmV3 IHZhcmlhYmxlIGZ1bmMuCi0JQ2FsbCBleGVjX29yX2NvcmVfZmlsZV9hdHRhY2ggaWYgQ09SRUFS RyBtYXRjaGVzIEVYRUNBUkcuICBDYWxsCi0Jc3ltYm9sX2ZpbGVfYWRkX21haW4gb25seSBpZiBD T1JFX0JGRCByZW1haW5lZCBOVUxMLgotCi1IdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBh dGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCi0yMDEwLTAxLTIwICBEb3VnIEV2YW5zICA8ZGpl QGdvb2dsZS5jb20+Ci0KLQkqIGV4ZWMuYyAoZXhlY19maWxlX2F0dGFjaCk6IFByaW50IGEgbW9y ZSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBpZiB0aGUKLQl1c2VyIGRpZCAiZ2RiIGNvcmUiLgotCi1k aWZmIC0tZ2l0IGEvZ2RiL2V4ZWMuYyBiL2dkYi9leGVjLmMKLS0tLSBhL2dkYi9leGVjLmMKLSsr KyBiL2dkYi9leGVjLmMKLUBAIC0xOCw2ICsxOCw4IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot IAotICNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVk ZSAiZXhjZXB0aW9ucy5oIgotICNpbmNsdWRlICJmcmFtZS5oIgotICNpbmNsdWRlICJpbmZlcmlv ci5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLUBAIC00OTUsMTIgKzQ5NywyNyBAQCBleGVjX2Zp bGVfYXR0YWNoIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQotIAotICAgICAg IGlmICghYmZkX2NoZWNrX2Zvcm1hdF9tYXRjaGVzIChleGVjX2JmZCwgYmZkX29iamVjdCwgJm1h dGNoaW5nKSkKLSAJewotKwkgIGludCBpc19jb3JlOwotKwotKwkgIC8qIElmIHRoZSB1c2VyIGFj Y2lkZW50YWxseSBkaWQgImdkYiBjb3JlIiwgcHJpbnQgYSB1c2VmdWwKLSsJICAgICBlcnJvciBt ZXNzYWdlLiAgQ2hlY2sgaXQgb25seSBhZnRlciBiZmRfb2JqZWN0IGhhcyBiZWVuIGNoZWNrZWQg YXMKLSsJICAgICBhIHZhbGlkIGV4ZWN1dGFibGUgbWF5IGdldCByZWNvZ25pemVkIGZvciBleGFt cGxlIGFsc28gYXMKLSsJICAgICAidHJhZC1jb3JlIi4gICovCi0rCSAgaXNfY29yZSA9IGJmZF9j aGVja19mb3JtYXQgKGV4ZWNfYmZkLCBiZmRfY29yZSk7Ci0rCi0gCSAgLyogTWFrZSBzdXJlIHRv IGNsb3NlIGV4ZWNfYmZkLCBvciBlbHNlICJydW4iIG1pZ2h0IHRyeSB0byB1c2UKLSAJICAgICBp dC4gICovCi0gCSAgZXhlY19jbG9zZSAoKTsKLS0JICBlcnJvciAoXygiXCIlcHNcIjogbm90IGlu IGV4ZWN1dGFibGUgZm9ybWF0OiAlcyIpLAotLQkJIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9z dHlsZS5zdHlsZSAoKSwgc2NyYXRjaF9wYXRobmFtZSksCi0tCQkgZ2RiX2JmZF9lcnJtc2cgKGJm ZF9nZXRfZXJyb3IgKCksIG1hdGNoaW5nKS5jX3N0ciAoKSk7Ci0rCi0rCSAgaWYgKGlzX2NvcmUg IT0gMCkKLSsJICAgIHRocm93X2Vycm9yIChJU19DT1JFX0VSUk9SLAotKwkJCSBfKCJcIiVzXCIg aXMgYSBjb3JlIGZpbGUuXG4iCi0rCQkJICAgIlBsZWFzZSBzcGVjaWZ5IGFuIGV4ZWN1dGFibGUg dG8gZGVidWcuIiksCi0rCQkJIHNjcmF0Y2hfcGF0aG5hbWUpOwotKwkgIGVsc2UKLSsJICAgIGVy cm9yIChfKCJcIiVwc1wiOiBub3QgaW4gZXhlY3V0YWJsZSBmb3JtYXQ6ICVzIiksCi0rCQkgICBz dHlsZWRfc3RyaW5nIChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksIHNjcmF0Y2hfcGF0aG5hbWUp LAotKwkJICAgZ2RiX2JmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCksIG1hdGNoaW5nKS5jX3N0 ciAoKSk7Ci0gCX0KLSAKLSAgICAgICBpZiAoYnVpbGRfc2VjdGlvbl90YWJsZSAoZXhlY19iZmQs ICZzZWN0aW9ucywgJnNlY3Rpb25zX2VuZCkpCi1kaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dk Yi9tYWluLmMKLS0tLSBhL2dkYi9tYWluLmMKLSsrKyBiL2dkYi9tYWluLmMKLUBAIC01MjQsNiAr NTI0LDM0IEBAIHN0cnVjdCBjbWRhcmcKLSAgIGNoYXIgKnN0cmluZzsKLSB9OwotIAotKy8qIENh bGwgZXhlY19maWxlX2F0dGFjaC4gIElmIGl0IGRldGVjdGVkIEZJTEVOQU1FIGlzIGEgY29yZSBm aWxlIGNhbGwKLSsgICBjb3JlX2ZpbGVfY29tbWFuZC4gIFByaW50IHRoZSBvcmlnaW5hbCBleGVj X2ZpbGVfYXR0YWNoIGVycm9yIG9ubHkgaWYKLSsgICBjb3JlX2ZpbGVfY29tbWFuZCBmYWlsZWQg dG8gZmluZCBhIG1hdGNoaW5nIGV4ZWN1dGFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZXhl Y19vcl9jb3JlX2ZpbGVfYXR0YWNoIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5 KQotK3sKLSsgIGdkYl9hc3NlcnQgKGV4ZWNfYmZkID09IE5VTEwpOwotKwotKyAgdHJ5Ci0rICAg IHsKLSsgICAgICBleGVjX2ZpbGVfYXR0YWNoIChmaWxlbmFtZSwgZnJvbV90dHkpOwotKyAgICB9 Ci0rICBjYXRjaCAoZ2RiX2V4Y2VwdGlvbl9lcnJvciAmZSkKLSsgICAgewotKyAgICAgIGlmIChl LmVycm9yID09IElTX0NPUkVfRVJST1IpCi0rCXsKLSsJICBjb3JlX2ZpbGVfY29tbWFuZCAoKGNo YXIgKikgZmlsZW5hbWUsIGZyb21fdHR5KTsKLSsKLSsJICAvKiBJZmYgdGhlIGNvcmUgZmlsZSBm b3VuZCBpdHMgZXhlY3V0YWJsZSBzdXBwcmVzcyB0aGUgZXJyb3IgbWVzc2FnZQotKwkgICAgIGZy b20gZXhlY19maWxlX2F0dGFjaC4gICovCi0rCSAgaWYgKGV4ZWNfYmZkICE9IE5VTEwpCi0rCSAg ICByZXR1cm47Ci0rCX0KLSsgICAgICB0aHJvd19leGNlcHRpb24gKHN0ZDo6bW92ZSAoZSkpOwot KyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gY2FwdHVyZWRfbWFpbl8xIChzdHJ1Y3QgY2Fw dHVyZWRfbWFpbl9hcmdzICpjb250ZXh0KQotIHsKLUBAIC05NTksNiArOTg3LDggQEAgY2FwdHVy ZWRfbWFpbl8xIChzdHJ1Y3QgY2FwdHVyZWRfbWFpbl9hcmdzICpjb250ZXh0KQotIAl7Ci0gCSAg c3ltYXJnID0gYXJndltvcHRpbmRdOwotIAkgIGV4ZWNhcmcgPSBhcmd2W29wdGluZF07Ci0rCSAg aWYgKG9wdGluZCArIDEgPT0gYXJnYyAmJiBjb3JlYXJnID09IE5VTEwpCi0rCSAgICBjb3JlYXJn ID0gYXJndltvcHRpbmRdOwotIAkgIG9wdGluZCsrOwotIAl9Ci0gCi1AQCAtMTExNCwxMiArMTE0 NCwyNSBAQCBjYXB0dXJlZF9tYWluXzEgKHN0cnVjdCBjYXB0dXJlZF9tYWluX2FyZ3MgKmNvbnRl eHQpCi0gICAgICAgJiYgc3ltYXJnICE9IE5VTEwKLSAgICAgICAmJiBzdHJjbXAgKGV4ZWNhcmcs IHN5bWFyZykgPT0gMCkKLSAgICAgewotKyAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzX2NvbnN0 X2Z0eXBlICpmdW5jOwotKwotKyAgICAgIC8qIENhbGwgZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNo IG9ubHkgaWYgdGhlIGZpbGUgd2FzIHNwZWNpZmllZCBhcwotKwkgYSBjb21tYW5kIGxpbmUgYXJn dW1lbnQgKGFuZCBub3QgYW4gYSBjb21tYW5kIGxpbmUgb3B0aW9uKS4gICovCi0rICAgICAgaWYg KGNvcmVhcmcgIT0gTlVMTCAmJiBzdHJjbXAgKGNvcmVhcmcsIGV4ZWNhcmcpID09IDApCi0rCXsK LSsJICBmdW5jID0gZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNoOwotKwkgIGNvcmVhcmcgPSBOVUxM OwotKwl9Ci0rICAgICAgZWxzZQotKwlmdW5jID0gZXhlY19maWxlX2F0dGFjaDsKLSsKLSAgICAg ICAvKiBUaGUgZXhlYyBmaWxlIGFuZCB0aGUgc3ltYm9sLWZpbGUgYXJlIHRoZSBzYW1lLiAgSWYg d2UgY2FuJ3QKLSAgICAgICAgICBvcGVuIGl0LCBiZXR0ZXIgb25seSBwcmludCBvbmUgZXJyb3Ig bWVzc2FnZS4KLS0gICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyByZXR1cm5zIG5vbi16ZXJv IG9uIHN1Y2Nlc3MhICAqLwotLSAgICAgIHJldCA9IGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVj X2ZpbGVfYXR0YWNoLCBleGVjYXJnLAotLQkJCQkgICFiYXRjaF9mbGFnKTsKLS0gICAgICBpZiAo cmV0ICE9IDApCi0rICAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgcmV0dXJucyBub24temVy byBvbiBzdWNjZXNzIQotKwkgRG8gbm90IGxvYWQgRVhFQ0FSRyBhcyBhIHN5bWJvbCBmaWxlIGlm IGl0IGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkCi0rCSBhcyBhIGNvcmUgZmlsZS4gICovCi0r ICAgICAgcmV0ID0gY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGZ1bmMsIGV4ZWNhcmcsICFiYXRjaF9m bGFnKTsKLSsgICAgICBpZiAocmV0ICE9IDAgJiYgY29yZV9iZmQgPT0gTlVMTCkKLSAJcmV0ID0g Y2F0Y2hfY29tbWFuZF9lcnJvcnMgKHN5bWJvbF9maWxlX2FkZF9tYWluX2FkYXB0ZXIsCi0gCQkJ CSAgICBzeW1hcmcsICFiYXRjaF9mbGFnKTsKLSAgICAgfQotZGlmZiAtLWdpdCBhL2dkYnN1cHBv cnQvY29tbW9uLWV4Y2VwdGlvbnMuaCBiL2dkYnN1cHBvcnQvY29tbW9uLWV4Y2VwdGlvbnMuaAot LS0tIGEvZ2Ric3VwcG9ydC9jb21tb24tZXhjZXB0aW9ucy5oCi0rKysgYi9nZGJzdXBwb3J0L2Nv bW1vbi1leGNlcHRpb25zLmgKLUBAIC0xMDYsNiArMTA2LDkgQEAgZW51bSBlcnJvcnMgewotICAg ICAgIl9FUlJPUiIgaXMgYXBwZW5kZWQgdG8gdGhlIG5hbWUuICAqLwotICAgTUFYX0NPTVBMRVRJ T05TX1JFQUNIRURfRVJST1IsCi0gCi0rICAvKiBBdHRlbXB0IHRvIGxvYWQgYSBjb3JlIGZpbGUg YXMgZXhlY3V0YWJsZS4gICovCi0rICBJU19DT1JFX0VSUk9SLAotKwotICAgLyogQWRkIG1vcmUg ZXJyb3JzIGhlcmUuICAqLwotICAgTlJfRVJST1JTCi0gfTsKCmRpZmYgLS1naXQgYS9nZGItNi42 LWJ1aWxkaWQtbG9jYXRlLXJwbS1zY2wucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJw bS1zY2wucGF0Y2gKaW5kZXggOTQ3Yjg1NS4uODEwNTZjYyAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUt cnBtLXNjbC5wYXRjaApAQCAtOTgsNyArOTgsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlk LmMgYi9nZGIvYnVpbGQtaWQuYwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2Ri L2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCiArKysgYi9nZGIvZHdhcmYy L3JlYWQuYwotQEAgLTMwMjIsNiArMzAyMiwxNiBAQCByZWFkX2dkYl9pbmRleF9mcm9tX2J1ZmZl ciAoY29uc3QgY2hhciAqZmlsZW5hbWUsCitAQCAtMzAzNCw2ICszMDM0LDE2IEBAIHJlYWRfZ2Ri X2luZGV4X2Zyb21fYnVmZmVyIChjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICAgICJzZXQgdXNl LWRlcHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMgb24iLiAgKi8KICAgIGlmICh2ZXJzaW9uIDwgNiAm JiAhZGVwcmVjYXRlZF9vaykKICAgICAgewpAQCAtMTE1LDcgKzExNSw3IEBAIGRpZmYgLS1naXQg YS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAgICAgICAgc3RhdGljIGlu dCB3YXJuaW5nX3ByaW50ZWQgPSAwOwogICAgICAgIGlmICghd2FybmluZ19wcmludGVkKQogIAl7 Ci1AQCAtMzAzMyw2ICszMDQzLDEwIEBAIHRvIHVzZSB0aGUgc2VjdGlvbiBhbnl3YXkuIiksCitA QCAtMzA0NSw2ICszMDU1LDEwIEBAIHRvIHVzZSB0aGUgc2VjdGlvbiBhbnl3YXkuIiksCiAgCSAg d2FybmluZ19wcmludGVkID0gMTsKICAJfQogICAgICAgIHJldHVybiAwOwoKZGlmZiAtLWdpdCBh L2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBh dGNoCmluZGV4IDkwZjcxNGIuLmY2MDY3OTMgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaApAQCAtMTEwNyw3 ICsxMTA3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYyBiL2dkYi9k d2FyZjIvaW5kZXgtY2FjaGUuYwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2Ri L2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCiArKysgYi9nZGIvZHdhcmYy L3JlYWQuYwotQEAgLTIyMTUsNyArMjIxNSw3IEBAIGR3YXJmMl9nZXRfZHd6X2ZpbGUgKGR3YXJm Ml9wZXJfYmZkICpwZXJfYmZkKQorQEAgLTIyMjUsNyArMjIyNSw3IEBAIGR3YXJmMl9nZXRfZHd6 X2ZpbGUgKGR3YXJmMl9wZXJfYmZkICpwZXJfYmZkKQogICAgICB9CiAgCiAgICBpZiAoZHd6X2Jm ZCA9PSBOVUxMKQpAQCAtMTExNiw3ICsxMTE2LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIv cmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAKICAgIGlmIChkd3pfYmZkID09IG51bGxwdHIp CiAgICAgIHsKLUBAIC01OTc3LDcgKzU5NzcsNyBAQCBnZXRfZ2RiX2luZGV4X2NvbnRlbnRzX2Zy b21fc2VjdGlvbiAob2JqZmlsZSAqb2JqLCBUICpzZWN0aW9uX293bmVyKQorQEAgLTU5ODksNyAr NTk4OSw3IEBAIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9zZWN0aW9uIChvYmpmaWxlICpv YmosIFQgKnNlY3Rpb25fb3duZXIpCiAgc3RhdGljIGdkYjo6YXJyYXlfdmlldzxjb25zdCBnZGJf Ynl0ZT4KICBnZXRfZ2RiX2luZGV4X2NvbnRlbnRzX2Zyb21fY2FjaGUgKG9iamZpbGUgKm9iaiwg ZHdhcmYyX3Blcl9iZmQgKmR3YXJmMl9wZXJfYmZkKQogIHsKQEAgLTExMjUsNyArMTEyNSw3IEBA IGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAgICBp ZiAoYnVpbGRfaWQgPT0gbnVsbHB0cikKICAgICAgcmV0dXJuIHt9OwogIAotQEAgLTU5OTAsNyAr NTk5MCw3IEBAIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9jYWNoZSAob2JqZmlsZSAqb2Jq LCBkd2FyZjJfcGVyX2JmZCAqZHdhcmYyX3Blcl9iZmQpCitAQCAtNjAwMiw3ICs2MDAyLDcgQEAg Z2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9tX2NhY2hlIChvYmpmaWxlICpvYmosIGR3YXJmMl9w ZXJfYmZkICpkd2FyZjJfcGVyX2JmZCkKICBzdGF0aWMgZ2RiOjphcnJheV92aWV3PGNvbnN0IGdk Yl9ieXRlPgogIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9jYWNoZV9kd3ogKG9iamZpbGUg Km9iaiwgZHd6X2ZpbGUgKmR3eikKICB7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1xdWl0LW5ldmVy LWFib3J0cy5wYXRjaCBiL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ODI0NjkuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuOC1xdWl0 LW5ldmVyLWFib3J0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20g RkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWRvcmEgR0RC IHBhdGNoZXMgPGludmFsaWRAZW1haWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAyMTow Nzo1MCArMDIwMAotU3ViamVjdDogZ2RiLTYuOC1xdWl0LW5ldmVyLWFib3J0cy5wYXRjaAotCi07 OyBNYWtlIHRoZSBHREIgcXVpdCBwcm9jZXNzaW5nIG5vbi1hYm9ydGFibGUgdG8gY2xlYW51cCBl dmVyeXRoaW5nIHByb3Blcmx5LgotOzs9ZmVkb3JhOiBJdCB3YXMgdXNlZnVsIG9ubHkgYWZ0ZXIg Z2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNoIC4KLQotV2UgbWF5 IGFib3J0IHRoZSBwcm9jZXNzIG9mIGRldGFjaGluZyB0aHJlYWRzIHdpdGggbXVsdGlwbGUgU0lH SU5UcyAtIHdoaWNoIGFyZQotYmVpbmcgc2VudCBkdXJpbmcgYSB0ZXN0Y2FzZSB0ZXJtaW5hdGlu ZyBpdHMgY2hpbGQgR0RCLgotCi1Tb21lIG9mIHRoZSB0aHJlYWRzIG1heSBub3QgYmUgcHJvcGVy bHkgUFRSQUNFX0RFVEFDSGVkIHdoaWNoIGh1cnRzIGlmIHRoZXkKLXNob3VsZCBoYXZlIGJlZW4g ZGV0YWNoZWQgd2l0aCBTSUdTVE9QIChhcyB0aGV5IGFyZSBhY2NpZGVudGFsbHkgbGVmdCBydW5u aW5nCi1vbiB0aGUgZGVidWdnZXIgdGVybWluYXRpb24pLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2Rl ZnMuaCBiL2dkYi9kZWZzLmgKLS0tLSBhL2dkYi9kZWZzLmgKLSsrKyBiL2dkYi9kZWZzLmgKLUBA IC0xNzcsNiArMTc3LDEwIEBAIGV4dGVybiB2b2lkIGRlZmF1bHRfcXVpdF9oYW5kbGVyICh2b2lk KTsKLSAvKiBGbGFnIHRoYXQgZnVuY3Rpb24gcXVpdCBzaG91bGQgY2FsbCBxdWl0X2ZvcmNlLiAg Ki8KLSBleHRlcm4gdm9sYXRpbGUgaW50IHN5bmNfcXVpdF9mb3JjZV9ydW47Ci0gCi0rI2lmZGVm IE5FRURfREVUQUNIX1NJR1NUT1AKLStleHRlcm4gaW50IHF1aXRfZmxhZ19jbGVhbnVwOwotKyNl bmRpZgotKwotIGV4dGVybiB2b2lkIHF1aXQgKHZvaWQpOwotIAotIC8qIEhlbHBlciBmb3IgdGhl IFFVSVQgbWFjcm8uICAqLwotZGlmZiAtLWdpdCBhL2dkYi9leHRlbnNpb24uYyBiL2dkYi9leHRl bnNpb24uYwotLS0tIGEvZ2RiL2V4dGVuc2lvbi5jCi0rKysgYi9nZGIvZXh0ZW5zaW9uLmMKLUBA IC03NjksNiArNzY5LDExIEBAIGNoZWNrX3F1aXRfZmxhZyAodm9pZCkKLSB7Ci0gICBpbnQgcmVz dWx0ID0gMDsKLSAKLSsjaWZkZWYgTkVFRF9ERVRBQ0hfU0lHU1RPUAotKyAgaWYgKHF1aXRfZmxh Z19jbGVhbnVwKQotKyAgICByZXR1cm4gMDsKLSsjZW5kaWYKLSsKLSAgIGZvciAoY29uc3Qgc3Ry dWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpleHRsYW5nIDogZXh0ZW5zaW9uX2xhbmd1YWdl cykKLSAgICAgewotICAgICAgIGlmIChleHRsYW5nLT5vcHMgIT0gbnVsbHB0cgotZGlmZiAtLWdp dCBhL2dkYi90b3AuYyBiL2dkYi90b3AuYwotLS0tIGEvZ2RiL3RvcC5jCi0rKysgYi9nZGIvdG9w LmMKLUBAIC0xNzcwLDcgKzE3NzAsMTMgQEAgcXVpdF9mb3JjZSAoaW50ICpleGl0X2FyZywgaW50 IGZyb21fdHR5KQotICAgZWxzZSBpZiAocmV0dXJuX2NoaWxkX3Jlc3VsdCkKLSAgICAgZXhpdF9j b2RlID0gcmV0dXJuX2NoaWxkX3Jlc3VsdF92YWx1ZTsKLSAKLSsjaWZuZGVmIE5FRURfREVUQUNI X1NJR1NUT1AKLSAgIC8qIFdlIHdhbnQgdG8gaGFuZGxlIGFueSBxdWl0IGVycm9ycyBhbmQgZXhp dCByZWdhcmRsZXNzLiAgKi8KLSsjZWxzZQotKyAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55IHF1 aXQgZXJyb3JzIGFuZCBleGl0IHJlZ2FyZGxlc3MgYnV0IHdlIHNob3VsZCBuZXZlcgotKyAgICAg Z2V0IHVzZXItaW50ZXJydXB0ZWQgdG8gcHJvcGVybHkgZGV0YWNoIHRoZSBpbmZlcmlvci4gICov Ci0rICBxdWl0X2ZsYWdfY2xlYW51cCA9IDE7Ci0rI2VuZGlmCi0gCi0gICAvKiBHZXQgb3V0IG9m IHRmaW5kIG1vZGUsIGFuZCBraWxsIG9yIGRldGFjaCBhbGwgaW5mZXJpb3JzLiAgKi8KLSAgIHRy eQotZGlmZiAtLWdpdCBhL2dkYi91dGlscy5jIGIvZ2RiL3V0aWxzLmMKLS0tLSBhL2dkYi91dGls cy5jCi0rKysgYi9nZGIvdXRpbHMuYwotQEAgLTEwMyw2ICsxMDMsMTMgQEAgc3RhdGljIHN0ZDo6 Y2hyb25vOjpzdGVhZHlfY2xvY2s6OmR1cmF0aW9uIHByb21wdF9mb3JfY29udGludWVfd2FpdF90 aW1lOwotIAotIHN0YXRpYyBib29sIGRlYnVnX3RpbWVzdGFtcCA9IGZhbHNlOwotIAotKyNpZmRl ZiBORUVEX0RFVEFDSF9TSUdTVE9QCi0rLyogTm9uemVybyBtZWFucyB3ZSBhcmUgYWxyZWFkeSBw cm9jZXNzaW5nIHRoZSBxdWl0dGluZyBjbGVhbnVwcyBhbmQgd2Ugc2hvdWxkCi0rICAgbm8gbG9u Z2VyIGdldCBhYm9ydGVkLiAgKi8KLSsKLStpbnQgcXVpdF9mbGFnX2NsZWFudXA7Ci0rI2VuZGlm Ci0rCi0gLyogVHJ1ZSBtZWFucyB0aGF0IHN0cmluZ3Mgd2l0aCBjaGFyYWN0ZXIgdmFsdWVzID4w eDdGIHNob3VsZCBiZSBwcmludGVkCi0gICAgYXMgb2N0YWwgZXNjYXBlcy4gIEZhbHNlIG1lYW5z IGp1c3QgcHJpbnQgdGhlIHZhbHVlIChlLmcuIGl0J3MgYW4KLSAgICBpbnRlcm5hdGlvbmFsIGNo YXJhY3RlciwgYW5kIHRoZSB0ZXJtaW5hbCBvciB3aW5kb3cgY2FuIGNvcGUuKSAgKi8KCmRpZmYg LS1naXQgYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1h cmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBlZDAyZjJjLi4wMDAwMDAwCi0tLSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1r ZWVwLWRpc2FibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotRnJvbSBG RURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlZG9yYSBHREIg cGF0Y2hlcyA8aW52YWxpZEBlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3 OjUwICswMjAwCi1TdWJqZWN0OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5w YXRjaAotCi07Oz1wdXNoK2phbjogQnJlYWtwb2ludHMgZGlzYWJsaW5nIG1hdGNoaW5nIHNob3Vs ZCBub3QgYmUgYmFzZWQgb24gYWRkcmVzcy4KLQotZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50 LmMgYi9nZGIvYnJlYWtwb2ludC5jCi0tLS0gYS9nZGIvYnJlYWtwb2ludC5jCi0rKysgYi9nZGIv YnJlYWtwb2ludC5jCi1AQCAtMTU0MzEsNiArMTU0MzEsNTAgQEAgc3RhdGljIHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICplbmFibGVicmVha2xpc3QgPSBOVUxMOwotIAotIGNtZF9saXN0X2VsZW1l bnQgKmNvbW1hbmRzX2NtZF9lbGVtZW50ID0gbnVsbHB0cjsKLSAKLSt2b2lkCi0rYnJlYWtwb2lu dHNfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzZWN0aW9uX29mZnNldHMgJmRl bHRhKQotK3sKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsICoqYmxwX3RtcDsKLSsgIGludCBj aGFuZ2VkID0gMDsKLSsKLSsgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29i amZpbGVfYmFja2xpbmsgPT0gTlVMTCk7Ci0rCi0rICBBTExfQlBfTE9DQVRJT05TIChibCwgYmxw X3RtcCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqb3NlY3Q7Ci0rCi0rICAg ICAgLyogQkwtPlNFQ1RJT04gY2FuIGJlIGNvcnJlY3RseSBOVUxMIGZvciBicmVha3BvaW50cyB3 aXRoIG11bHRpcGxlCi0rICAgICAgICAgbG9jYXRpb25zIGV4cGFuZGVkIHRocm91Z2ggc3ltdGFi LiAgKi8KLSsKLSsgICAgICBBTExfT0JKRklMRV9PU0VDVElPTlMgKG9iamZpbGUsIG9zZWN0KQot Kwl7Ci0rCSAgQ09SRV9BRERSIHJlbG9jYXRlZF9hZGRyZXNzOwotKwkgIENPUkVfQUREUiBkZWx0 YV9vZmZzZXQ7Ci0rCi0rCSAgZGVsdGFfb2Zmc2V0ID0gZGVsdGFbb3NlY3QtPnRoZV9iZmRfc2Vj dGlvbi0+aW5kZXhdOwotKwkgIGlmIChkZWx0YV9vZmZzZXQgPT0gMCkKLSsJICAgIGNvbnRpbnVl OwotKwkgIHJlbG9jYXRlZF9hZGRyZXNzID0gYmwtPmFkZHJlc3MgKyBkZWx0YV9vZmZzZXQ7Ci0r Ci0rCSAgaWYgKG9ial9zZWN0aW9uX2FkZHIgKG9zZWN0KSA8PSByZWxvY2F0ZWRfYWRkcmVzcwot KwkgICAgICAmJiByZWxvY2F0ZWRfYWRkcmVzcyA8IG9ial9zZWN0aW9uX2VuZGFkZHIgKG9zZWN0 KSkKLSsJICAgIHsKLSsJICAgICAgaWYgKGJsLT5pbnNlcnRlZCkKLSsJCXJlbW92ZV9icmVha3Bv aW50IChibCk7Ci0rCi0rCSAgICAgIGJsLT5hZGRyZXNzICs9IGRlbHRhX29mZnNldDsKLSsJICAg ICAgYmwtPnJlcXVlc3RlZF9hZGRyZXNzICs9IGRlbHRhX29mZnNldDsKLSsKLSsJICAgICAgY2hh bmdlZCA9IDE7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKGNoYW5nZWQpCi0rICAg IHN0ZDo6c29ydCAoYnBfbG9jYXRpb25zLCBicF9sb2NhdGlvbnMgKyBicF9sb2NhdGlvbnNfY291 bnQsCi0rCSAgICAgICBicF9sb2NhdGlvbl9pc19sZXNzX3RoYW4pOwotK30KLSsKLSB2b2lkIF9p bml0aWFsaXplX2JyZWFrcG9pbnQgKCk7Ci0gdm9pZAotIF9pbml0aWFsaXplX2JyZWFrcG9pbnQg KCkKLWRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIvZ2RiL2JyZWFrcG9pbnQuaAotLS0t IGEvZ2RiL2JyZWFrcG9pbnQuaAotKysrIGIvZ2RiL2JyZWFrcG9pbnQuaAotQEAgLTE2OTEsNiAr MTY5MSw5IEBAIGV4dGVybiBjb25zdCBjaGFyICplcF9wYXJzZV9vcHRpb25hbF9pZl9jbGF1c2Ug KGNvbnN0IGNoYXIgKiphcmcpOwotICAgIFVJT1VUIGlmZiBkZWJ1Z2dpbmcgbXVsdGlwbGUgdGhy ZWFkcy4gICovCi0gZXh0ZXJuIHZvaWQgbWF5YmVfcHJpbnRfdGhyZWFkX2hpdF9icmVha3BvaW50 IChzdHJ1Y3QgdWlfb3V0ICp1aW91dCk7Ci0gCi0rZXh0ZXJuIHZvaWQgYnJlYWtwb2ludHNfcmVs b2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkgIHNlY3Rpb25fb2Zmc2V0cyAm ZGVsdGEpOwotKwotIC8qIFByaW50IHRoZSBzcGVjaWZpZWQgYnJlYWtwb2ludC4gICovCi0gZXh0 ZXJuIHZvaWQgcHJpbnRfYnJlYWtwb2ludCAoYnJlYWtwb2ludCAqYnApOwotIAotZGlmZiAtLWdp dCBhL2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29iamZpbGVzLmMKLS0tLSBhL2dkYi9vYmpmaWxlcy5j Ci0rKysgYi9nZGIvb2JqZmlsZXMuYwotQEAgLTc0Miw2ICs3NDIsMTEgQEAgb2JqZmlsZV9yZWxv Y2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQlvYmpfc2VjdGlvbl9hZGRyIChz KSk7Ci0gICAgIH0KLSAKLSsgIC8qIEZpbmFsIGNhbGwgb2YgYnJlYWtwb2ludF9yZV9zZXQgY2Fu IGtlZXAgYnJlYWtwb2ludCBsb2NhdGlvbnMgZGlzYWJsZWQgaWYKLSsgICAgIHRoZWlyIGFkZHJl c3NlcyBtYXRjaC4gICovCi0rICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9i YWNrbGluayA9PSBOVUxMKQotKyAgICBicmVha3BvaW50c19yZWxvY2F0ZSAob2JqZmlsZSwgZGVs dGEpOwotKwotICAgLyogRGF0YSBjaGFuZ2VkLiAgKi8KLSAgIHJldHVybiAxOwotIH0KCmRpZmYg LS1naXQgYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRv bnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYzY4ZGIuLjAwMDAwMDAK LS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkg KzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IEZlZG9yYSBHREIgcGF0Y2hlcyA8aW52YWxpZEBlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI3 IE9jdCAyMDE3IDIxOjA3OjUwICswMjAwCi1TdWJqZWN0OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMu cGF0Y2gKLQotOzs9cHVzaCtqYW46IE1heSBnZXQgb2Jzb2xldGVkIGJ5IFRvbSdzIHVucmVsb2Nh dGVkIG9iamZpbGVzIHBhdGNoLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIv Z2RidHlwZXMuaAotLS0tIGEvZ2RiL2dkYnR5cGVzLmgKLSsrKyBiL2dkYi9nZGJ0eXBlcy5oCi1A QCAtNjQ5LDYgKzY0OSw3IEBAIGVudW0gZmllbGRfbG9jX2tpbmQKLSAgIHsKLSAgICAgRklFTERf TE9DX0tJTkRfQklUUE9TLAkvKio8IGJpdHBvcyAqLwotICAgICBGSUVMRF9MT0NfS0lORF9FTlVN VkFMLAkvKio8IGVudW12YWwgKi8KLSsgICAgLyogVGhpcyBhZGRyZXNzIGlzIHVucmVsb2NhdGVk IGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwotICAgICBGSUVMRF9MT0NfS0lORF9QSFlT QUREUiwJLyoqPCBwaHlzYWRkciAqLwotICAgICBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJLyoq PCBwaHlzbmFtZSAqLwotICAgICBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSwkvKio8IGR3YXJm X2Jsb2NrICovCi1AQCAtNjk5LDYgKzcwMCw3IEBAIHVuaW9uIGZpZWxkX2xvY2F0aW9uCi0gICAg ICBmaWVsZC4gIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmdsZWQgbGFiZWwgb2YgdGhl Ci0gICAgICBzdGF0aWMgZmllbGQuICAqLwotIAotKyAgLyogVGhpcyBhZGRyZXNzIGlzIHVucmVs b2NhdGVkIGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwotICAgQ09SRV9BRERSIHBoeXNh ZGRyOwotICAgY29uc3QgY2hhciAqcGh5c25hbWU7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVl LmMgYi9nZGIvdmFsdWUuYwotLS0tIGEvZ2RiL3ZhbHVlLmMKLSsrKyBiL2dkYi92YWx1ZS5jCi1A QCAtMjg1MCw3ICsyODUwLDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgaW50IGZpZWxkbm8pCi0gICAgIHsKLSAgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9QSFlTQURE UjoKLSAgICAgICByZXR2YWwgPSB2YWx1ZV9hdF9sYXp5ICh0eXBlLT5maWVsZCAoZmllbGRubyku dHlwZSAoKSwKLS0JCQkgICAgICBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUiAodHlwZSwgZmll bGRubykpOwotKwkJCSAgICAgIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSICh0eXBlLCBmaWVs ZG5vKQotKwkJCSAgICAgICsgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCA/IDAgOiBUWVBF X09CSkZJTEUgKHR5cGUpLT5zZWN0aW9uX29mZnNldHNbU0VDVF9PRkZfVEVYVCAoVFlQRV9PQkpG SUxFICh0eXBlKSldKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRklFTERfTE9DX0tJTkRf UEhZU05BTUU6Ci0gICAgIHsKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLXZsYS10ZXN0cy5wYXRj aCBiL2dkYi1hcmNoZXItdmxhLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBmMDcxODNjLi4wMDAwMDAwCi0tLSBhL2dkYi1hcmNoZXItdmxhLXRlc3RzLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMzc3MSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVt YWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6 IGdkYi1hcmNoZXItdmxhLXRlc3RzLnBhdGNoCi0KLTs7PWZlZG9yYXRlc3QKLQotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9w YWNrZWRfYXJyYXkuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2VkX2FycmF5 LmV4cAotQEAgLTUzLDUgKzUzLDExIEBAIGdkYl90ZXN0X211bHRpcGxlICIkdGVzdCIgIiR0ZXN0 IiB7Ci0gICAgICAgICAjIGFyZS4gIE9ic2VydmVkIHdpdGggKEZTRiBHTlUgQWRhIDQuNS4zIDIw MTEwMTI0KS4KLSAgICAgICAgIHhmYWlsICR0ZXN0Ci0gICAgIH0KLSsgICAgLXJlICI9IFxcKFxc KVxbXHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKLSsJIyBhcmNoZXItamFua3JhdG9jaHZpbC12bGEg cmVzb2x2ZXMgaXQgYXMgYSBkeW5hbWljIHR5cGUgcmVzb2x2ZWQgYXMgYW4KLSsJIyBlbXB0eSBh cnJheSBbMC4uLTFdLgotKwkjIERXX0FUX3VwcGVyX2JvdW5kIDogKERXX09QX2ZicmVnOiAtNDg7 IERXX09QX2RlcmVmKQotKyAgICAgICAgeGZhaWwgJHRlc3QKLSsgICAgfQotIH0KLSAKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKLUBAIC0wLDAgKzEsMzU4IEBACi0rCS5maWxlCSJ4 ODZfNjQtdmxhLXBvaW50ZXIuYyIKLSsJLnRleHQKLSsuTHRleHQwOgotKwkuZ2xvYmwJZm9vCi0r CS50eXBlCWZvbywgQGZ1bmN0aW9uCi0rZm9vOgotKy5MRkIwOgotKwkuZmlsZSAxICJnZGIuYXJj aC94ODZfNjQtdmxhLXBvaW50ZXIuYyIKLSsJIyBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIu YzoyMgotKwkubG9jIDEgMjIgMAotKwkuY2ZpX3N0YXJ0cHJvYwotKyMgQkxPQ0sgMiBzZXE6MAot KyMgUFJFRDogRU5UUlkgKEZBTExUSFJVKQotKwlwdXNocQklcmJwCi0rCS5jZmlfZGVmX2NmYV9v ZmZzZXQgMTYKLSsJLmNmaV9vZmZzZXQgNiwgLTE2Ci0rCW1vdnEJJXJzcCwgJXJicAotKwkuY2Zp X2RlZl9jZmFfcmVnaXN0ZXIgNgotKwlwdXNocQklcmJ4Ci0rCXN1YnEJJDU2LCAlcnNwCi0rCS5j Zmlfb2Zmc2V0IDMsIC0yNAotKwltb3ZsCSVlZGksIC01MiglcmJwKQotKwkjIGdkYi5hcmNoL3g4 Nl82NC12bGEtcG9pbnRlci5jOjIyCi0rCS5sb2MgMSAyMiAwCi0rCW1vdnEJJXJzcCwgJXJheAot Kwltb3ZxCSVyYXgsICVyc2kKLSsJIyBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYzoyMwot KwkubG9jIDEgMjMgMAotKwltb3ZsCS01MiglcmJwKSwgJWVheAotKwltb3ZzbHEJJWVheCwgJXJk eAotKwlzdWJxCSQxLCAlcmR4Ci0rCW1vdnEJJXJkeCwgLTMyKCVyYnApCi0rCW1vdnNscQklZWF4 LCAlcmR4Ci0rCW1vdnEJJXJkeCwgJXI4Ci0rCW1vdmwJJDAsICVyOWQKLSsJIyBnZGIuYXJjaC94 ODZfNjQtdmxhLXBvaW50ZXIuYzoyNAotKwkubG9jIDEgMjQgMAotKwltb3ZzbHEJJWVheCwgJXJk eAotKwltb3ZxCSVyZHgsICVyY3gKLSsJbW92bAkkMCwgJWVieAotKwljbHRxCi0rCW1vdmwJJDE2 LCAlZWR4Ci0rCXN1YnEJJDEsICVyZHgKLSsJYWRkcQklcmR4LCAlcmF4Ci0rCW1vdmwJJDE2LCAl ZWJ4Ci0rCW1vdmwJJDAsICVlZHgKLSsJZGl2cQklcmJ4Ci0rCWltdWxxCSQxNiwgJXJheCwgJXJh eAotKwlzdWJxCSVyYXgsICVyc3AKLSsJbW92cQklcnNwLCAlcmF4Ci0rCWFkZHEJJDAsICVyYXgK LSsJbW92cQklcmF4LCAtNDAoJXJicCkKLSsJIyBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIu YzoyNwotKwkubG9jIDEgMjcgMAotKwltb3ZsCSQwLCAtMjAoJXJicCkKLSsjIFNVQ0M6IDQgWzEw MC4wJV0KLSsJam1wCS5MMgotKyMgQkxPQ0sgMyBzZXE6MQotKyMgUFJFRDogNAotKy5MMzoKLSsJ IyBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYzoyOAotKwkubG9jIDEgMjggMCBkaXNjcmlt aW5hdG9yIDMKLSsJbW92bAktMjAoJXJicCksICVlYXgKLSsJbW92bAklZWF4LCAlZWN4Ci0rCW1v dnEJLTQwKCVyYnApLCAlcmR4Ci0rCW1vdmwJLTIwKCVyYnApLCAlZWF4Ci0rCWNsdHEKLSsJbW92 YgklY2wsICglcmR4LCVyYXgpCi0rIyBTVUNDOiA0IChGQUxMVEhSVSxERlNfQkFDSykKLSsJIyBn ZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYzoyNwotKwkubG9jIDEgMjcgMCBkaXNjcmltaW5h dG9yIDMKLSsJYWRkbAkkMSwgLTIwKCVyYnApCi0rIyBCTE9DSyA0IHNlcToyCi0rIyBQUkVEOiAz IChGQUxMVEhSVSxERlNfQkFDSykgMiBbMTAwLjAlXQotKy5MMjoKLSsJIyBnZGIuYXJjaC94ODZf NjQtdmxhLXBvaW50ZXIuYzoyNwotKwkubG9jIDEgMjcgMCBpc19zdG10IDAgZGlzY3JpbWluYXRv ciAxCi0rCW1vdmwJLTIwKCVyYnApLCAlZWF4Ci0rCWNtcGwJLTUyKCVyYnApLCAlZWF4Ci0rIyBT VUNDOiAzIDUgKEZBTExUSFJVKQotKwlqbAkuTDMKLSsjIEJMT0NLIDUgc2VxOjMKLSsjIFBSRUQ6 IDQgKEZBTExUSFJVKQotKwkjIGdkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jOjMwCi0rCS5s b2MgMSAzMCAwIGlzX3N0bXQgMQotKwltb3ZxCS00MCglcmJwKSwgJXJheAotKwltb3ZiCSQwLCAo JXJheCkKLSsJbW92cQklcnNpLCAlcnNwCi0rCSMgZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LmM6MzEKLSsJLmxvYyAxIDMxIDAKLSsJbm9wCi0rCW1vdnEJLTgoJXJicCksICVyYngKLSsJbGVh dmUKLSsJLmNmaV9kZWZfY2ZhIDcsIDgKLSsjIFNVQ0M6IEVYSVQgWzEwMC4wJV0KLSsJcmV0Ci0r CS5jZmlfZW5kcHJvYwotKy5MRkUwOgotKwkuc2l6ZQlmb28sIC4tZm9vCi0rLkxldGV4dDA6Ci0r CS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cwotKy5MZGVidWdfaW5mbzA6Ci0rCS5s b25nCTB4YTUJIyBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0rCS52YWx1ZQkweDQJ IyBEV0FSRiB2ZXJzaW9uIG51bWJlcgotKwkubG9uZwkuTGRlYnVnX2FiYnJldjAJIyBPZmZzZXQg SW50byBBYmJyZXYuIFNlY3Rpb24KLSsJLmJ5dGUJMHg4CSMgUG9pbnRlciBTaXplIChpbiBieXRl cykKLSsJLnVsZWIxMjggMHgxCSMgKERJRSAoMHhiKSBEV19UQUdfY29tcGlsZV91bml0KQotKwku bG9uZwkuTEFTRjMJIyBEV19BVF9wcm9kdWNlcjogIkdOVSBDMTEgNi4yLjEgMjAxNjA5MTYgKFJl ZCBIYXQgNi4yLjEtMikgLW10dW5lPWdlbmVyaWMgLW1hcmNoPXg4Ni02NCAtZyIKLSsJLmJ5dGUJ MHhjCSMgRFdfQVRfbGFuZ3VhZ2UKLSsJLmxvbmcJLkxBU0Y0CSMgRFdfQVRfbmFtZTogImdkYi5h cmNoL3g4Nl82NC12bGEtcG9pbnRlci5jIgotKwkubG9uZwkuTEFTRjUJIyBEV19BVF9jb21wX2Rp cjogIi9ob21lL2prcmF0b2NoL3JlZGhhdC9mZWRvcmEvZ2RiL21hc3Rlci9nZGItNy4xMi9nZGIv dGVzdHN1aXRlIgotKwkucXVhZAkuTHRleHQwCSMgRFdfQVRfbG93X3BjCi0rCS5xdWFkCS5MZXRl eHQwLS5MdGV4dDAJIyBEV19BVF9oaWdoX3BjCi0rCS5sb25nCS5MZGVidWdfbGluZTAJIyBEV19B VF9zdG10X2xpc3QKLSsJLnVsZWIxMjggMHgyCSMgKERJRSAoMHgyZCkgRFdfVEFHX3N1YnByb2dy YW0pCi0rCQkJIyBEV19BVF9leHRlcm5hbAotKwkuYXNjaWkgImZvb1wwIgkjIERXX0FUX25hbWUK LSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50 ZXIuYykKLSsJLmJ5dGUJMHgxNQkjIERXX0FUX2RlY2xfbGluZQotKwkJCSMgRFdfQVRfcHJvdG90 eXBlZAotKwkucXVhZAkuTEZCMAkjIERXX0FUX2xvd19wYwotKwkucXVhZAkuTEZFMC0uTEZCMAkj IERXX0FUX2hpZ2hfcGMKLSsJLnVsZWIxMjggMHgxCSMgRFdfQVRfZnJhbWVfYmFzZQotKwkuYnl0 ZQkweDljCSMgRFdfT1BfY2FsbF9mcmFtZV9jZmEKLSsJCQkjIERXX0FUX0dOVV9hbGxfY2FsbF9z aXRlcwotKwkubG9uZwkweDgwCSMgRFdfQVRfc2libGluZwotKwkudWxlYjEyOCAweDMJIyAoRElF ICgweDRhKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmxvbmcJLkxBU0Y2CSMgRFdfQVRf bmFtZTogInNpemUiCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gveDg2 XzY0LXZsYS1wb2ludGVyLmMpCi0rCS5ieXRlCTB4MTUJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxv bmcJMHg4MAkjIERXX0FUX3R5cGUKLSsJLnVsZWIxMjggMHgzCSMgRFdfQVRfbG9jYXRpb24KLSsJ LmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IC02OAotKwkudWxlYjEyOCAweDQJ IyAoRElFICgweDU5KSBEV19UQUdfdHlwZWRlZikKLSsJLmxvbmcJLkxBU0Y3CSMgRFdfQVRfbmFt ZTogImFycmF5X3QiCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gveDg2 XzY0LXZsYS1wb2ludGVyLmMpCi0rCS5ieXRlCTB4MTcJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxv bmcJMHg4NwkjIERXX0FUX3R5cGUKLSsJLnVsZWIxMjggMHg1CSMgKERJRSAoMHg2NCkgRFdfVEFH X3ZhcmlhYmxlKQotKwkubG9uZwkuTEFTRjAJIyBEV19BVF9uYW1lOiAiYXJyYXkiCi0rCS5ieXRl CTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMpCi0r CS5ieXRlCTB4MTgJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg1OQkjIERXX0FUX3R5cGUK LSsJLnVsZWIxMjggMHgzCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2Zi cmVnCi0rCS5zbGViMTI4IC01NgotKwkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotKwkudWxlYjEy OCAweDYJIyAoRElFICgweDczKSBEV19UQUdfdmFyaWFibGUpCi0rCS5hc2NpaSAiaVwwIgkjIERX X0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXIuYykKLSsJLmJ5dGUJMHgxOQkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkw eDgwCSMgRFdfQVRfdHlwZQotKwkudWxlYjEyOCAweDIJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0 ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNsZWIxMjggLTM2Ci0rCS5ieXRlCTAJIyBlbmQgb2Yg Y2hpbGRyZW4gb2YgRElFIDB4MmQKLSsJLnVsZWIxMjggMHg3CSMgKERJRSAoMHg4MCkgRFdfVEFH X2Jhc2VfdHlwZSkKLSsJLmJ5dGUJMHg0CSMgRFdfQVRfYnl0ZV9zaXplCi0rCS5ieXRlCTB4NQkj IERXX0FUX2VuY29kaW5nCi0rCS5hc2NpaSAiaW50XDAiCSMgRFdfQVRfbmFtZQotKwkudWxlYjEy OCAweDgJIyAoRElFICgweDg3KSBEV19UQUdfYXJyYXlfdHlwZSkKLSsJLmxvbmcJMHhhMQkjIERX X0FUX3R5cGUKLSsJLmxvbmcJMHg5YQkjIERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHg5CSMg KERJRSAoMHg5MCkgRFdfVEFHX3N1YnJhbmdlX3R5cGUpCi0rCS5sb25nCTB4OWEJIyBEV19BVF90 eXBlCi0rCS51bGViMTI4IDB4MwkjIERXX0FUX3VwcGVyX2JvdW5kCi0rCS5ieXRlCTB4OTEJIyBE V19PUF9mYnJlZwotKwkuc2xlYjEyOCAtNDgKLSsJLmJ5dGUJMHg2CSMgRFdfT1BfZGVyZWYKLSsJ LmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg4NwotKwkudWxlYjEyOCAweGEJIyAo RElFICgweDlhKSBEV19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkweDgJIyBEV19BVF9ieXRlX3Np emUKLSsJLmJ5dGUJMHg3CSMgRFdfQVRfZW5jb2RpbmcKLSsJLmxvbmcJLkxBU0YxCSMgRFdfQVRf bmFtZTogInNpemV0eXBlIgotKwkudWxlYjEyOCAweGEJIyAoRElFICgweGExKSBEV19UQUdfYmFz ZV90eXBlKQotKwkuYnl0ZQkweDEJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHg2CSMgRFdf QVRfZW5jb2RpbmcKLSsJLmxvbmcJLkxBU0YyCSMgRFdfQVRfbmFtZTogImNoYXIiCi0rCS5ieXRl CTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YgotKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2 LCIiLEBwcm9nYml0cwotKy5MZGVidWdfYWJicmV2MDoKLSsJLnVsZWIxMjggMHgxCSMgKGFiYnJl diBjb2RlKQotKwkudWxlYjEyOCAweDExCSMgKFRBRzogRFdfVEFHX2NvbXBpbGVfdW5pdCkKLSsJ LmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MjUJIyAoRFdfQVRfcHJv ZHVjZXIpCi0rCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0rCS51bGViMTI4IDB4MTMJ IyAoRFdfQVRfbGFuZ3VhZ2UpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwku dWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3Ry cCkKLSsJLnVsZWIxMjggMHgxYgkjIChEV19BVF9jb21wX2RpcikKLSsJLnVsZWIxMjggMHhlCSMg KERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGVi MTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9w YykKLSsJLnVsZWIxMjggMHg3CSMgKERXX0ZPUk1fZGF0YTgpCi0rCS51bGViMTI4IDB4MTAJIyAo RFdfQVRfc3RtdF9saXN0KQotKwkudWxlYjEyOCAweDE3CSMgKERXX0ZPUk1fc2VjX29mZnNldCkK LSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4MgkjIChhYmJyZXYgY29kZSkKLSsJ LnVsZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0ZQkweDEJIyBE V19jaGlsZHJlbl95ZXMKLSsJLnVsZWIxMjggMHgzZgkjIChEV19BVF9leHRlcm5hbCkKLSsJLnVs ZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjggMHgzCSMgKERX X0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykKLSsJLnVsZWIxMjgg MHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGEx KQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhiCSMg KERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJvdG90eXBlZCkKLSsJ LnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjggMHgxMQkj IChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGVi MTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHg3CSMgKERXX0ZPUk1fZGF0 YTgpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKLSsJLnVsZWIxMjggMHgx OAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS51bGViMTI4IDB4MjExNwkjIChEV19BVF9HTlVfYWxs X2NhbGxfc2l0ZXMpCi0rCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCi0r CS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZP Uk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4MwkjIChhYmJyZXYg Y29kZSkKLSsJLnVsZWIxMjggMHg1CSMgKFRBRzogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0r CS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkK LSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjggMHgzYQkjIChEV19B VF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEy OCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0 YTEpCi0rCS51bGViMTI4IDB4NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChE V19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MgkjIChEV19BVF9sb2NhdGlvbikKLSsJLnVsZWIx MjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxl YjEyOCAweDQJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MTYJIyAoVEFHOiBEV19UQUdf dHlwZWRlZikKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChE V19BVF9uYW1lKQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAw eDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEp Ci0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAo RFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEy OCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4 IDB4NQkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJp YWJsZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChEV19B VF9uYW1lKQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDNh CSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0r CS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdf Rk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAw eDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQot KwkudWxlYjEyOCAweDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKLSsJLmJ5dGUJMAotKwkuYnl0ZQkw Ci0rCS51bGViMTI4IDB4NgkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgzNAkjIChUQUc6 IERXX1RBR192YXJpYWJsZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4 IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0r CS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdf Rk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGVi MTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUp Ci0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIJIyAoRFdf QVRfbG9jYXRpb24pCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotKwkuYnl0 ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHg3CSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEy OCAweDI0CSMgKFRBRzogRFdfVEFHX2Jhc2VfdHlwZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVu X25vCi0rCS51bGViMTI4IDB4YgkjIChEV19BVF9ieXRlX3NpemUpCi0rCS51bGViMTI4IDB4Ygkj IChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNlCSMgKERXX0FUX2VuY29kaW5nKQotKwku dWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25h bWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykKLSsJLmJ5dGUJMAotKwkuYnl0 ZQkwCi0rCS51bGViMTI4IDB4OAkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgxCSMgKFRB RzogRFdfVEFHX2FycmF5X3R5cGUpCi0rCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcwotKwku dWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9y ZWY0KQotKwkudWxlYjEyOCAweDEJIyAoRFdfQVRfc2libGluZykKLSsJLnVsZWIxMjggMHgxMwkj IChEV19GT1JNX3JlZjQpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDkJIyAo YWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MjEJIyAoVEFHOiBEV19UQUdfc3VicmFuZ2VfdHlw ZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4NDkJIyAoRFdfQVRf dHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MmYJ IyAoRFdfQVRfdXBwZXJfYm91bmQpCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9j KQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhhCSMgKGFiYnJldiBjb2RlKQot KwkudWxlYjEyOCAweDI0CSMgKFRBRzogRFdfVEFHX2Jhc2VfdHlwZSkKLSsJLmJ5dGUJMAkjIERX X2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4YgkjIChEV19BVF9ieXRlX3NpemUpCi0rCS51bGVi MTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNlCSMgKERXX0FUX2VuY29k aW5nKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzCSMg KERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0rCS5ieXRlCTAK LSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9n Yml0cwotKwkubG9uZwkweDJjCSMgTGVuZ3RoIG9mIEFkZHJlc3MgUmFuZ2VzIEluZm8KLSsJLnZh bHVlCTB4MgkjIERXQVJGIFZlcnNpb24KLSsJLmxvbmcJLkxkZWJ1Z19pbmZvMAkjIE9mZnNldCBv ZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLmJ5dGUJMHg4CSMgU2l6ZSBvZiBBZGRyZXNzCi0r CS5ieXRlCTAJIyBTaXplIG9mIFNlZ21lbnQgRGVzY3JpcHRvcgotKwkudmFsdWUJMAkjIFBhZCB0 byAxNiBieXRlIGJvdW5kYXJ5Ci0rCS52YWx1ZQkwCi0rCS5xdWFkCS5MdGV4dDAJIyBBZGRyZXNz Ci0rCS5xdWFkCS5MZXRleHQwLS5MdGV4dDAJIyBMZW5ndGgKLSsJLnF1YWQJMAotKwkucXVhZAkw Ci0rCS5zZWN0aW9uCS5kZWJ1Z19saW5lLCIiLEBwcm9nYml0cwotKy5MZGVidWdfbGluZTA6Ci0r CS5zZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQotKy5MQVNGNDoKLSsJLnN0cmlu ZwkiZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMiCi0rLkxBU0Y3OgotKwkuc3RyaW5nCSJh cnJheV90IgotKy5MQVNGMzoKLSsJLnN0cmluZwkiR05VIEMxMSA2LjIuMSAyMDE2MDkxNiAoUmVk IEhhdCA2LjIuMS0yKSAtbXR1bmU9Z2VuZXJpYyAtbWFyY2g9eDg2LTY0IC1nIgotKy5MQVNGMjoK LSsJLnN0cmluZwkiY2hhciIKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJInNpemV0eXBlIgotKy5MQVNG NToKLSsJLnN0cmluZwkiL2hvbWUvamtyYXRvY2gvcmVkaGF0L2ZlZG9yYS9nZGIvbWFzdGVyL2dk Yi03LjEyL2dkYi90ZXN0c3VpdGUiCi0rLkxBU0Y2OgotKwkuc3RyaW5nCSJzaXplIgotKy5MQVNG MDoKLSsJLnN0cmluZwkiYXJyYXkiCi0rCS5pZGVudAkiR0NDOiAoR05VKSA2LjIuMSAyMDE2MDkx NiAoUmVkIEhhdCA2LjIuMS0yKSIKLSsJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9n Yml0cwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2lu dGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwotQEAgLTAsMCArMSw0NSBAQAotKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpZiAwCi0rCi0rdm9pZAotK2ZvbyAoaW50 IHNpemUpCi0rewotKyAgdHlwZWRlZiBjaGFyIGFycmF5X3Rbc2l6ZV07Ci0rICBhcnJheV90IGFy cmF5OwotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotKyAgICBh cnJheVtpXSA9IGk7Ci0rCi0rICBhcnJheVswXSA9IDA7CS8qIGJyZWFrLWhlcmUgKi8KLSt9Ci0r Ci0rI2Vsc2UKLSsKLSt2b2lkIGZvbyAoaW50IHNpemUpOwotKwotK2ludAotK21haW4gKHZvaWQp Ci0rewotKyAgZm9vICgyNik7Ci0rICBmb28gKDc4KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsj ZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9p bnRlci5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAKLUBAIC0wLDAgKzEsNjUgQEAKLSsjIENv cHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi0qIl0gdGhl biB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2lu dGVyLmV4cCB0ZXN0IG1hZGUgb25seSBmb3IgeDg2XzY0LiIKLSsgICAgcmV0dXJuCi0rfQotKwot K3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXBvaW50ZXIKLStzZXQgc3JjYXNtZmlsZSAke3Rlc3Rm aWxlfS1mb28uUwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSBbc3Rh bmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0rc2V0IGJpbm9iamZpbGUgW3N0YW5kYXJk X291dHB1dF9maWxlICR7dGVzdGZpbGV9LWZvby5vXQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpmaWxlfSIgb2JqZWN0IHt9 XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFt IgotKyAgICByZXR1cm4gLTEKLSt9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dy YW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsK LStpZiAhW3J1bnRvX21haW5dIHsKLSsgICAgdW50ZXN0ZWQgeDg2XzY0LXZsYS1wb2ludGVyCi0r ICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJlYWtwb2ludCAkc3JjZmlsZTpbZ2RiX2dldF9s aW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrLWhlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90 IiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAid2hhdGlzIGFycmF5X3QiICJ0eXBl ID0gY2hhciBcXFxbdmFyaWFibGUgbGVuZ3RoXFxcXSIgImZpcnN0OiB3aGF0aXMgYXJyYXlfdCIK LStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6 IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIi ICJmaXJzdDogd2hhdGlzICphcnJheSIKLStnZGJfdGVzdCAicHR5cGUgKmFycmF5IiAidHlwZSA9 IGNoYXIiICJmaXJzdDogcHR5cGUgKmFycmF5IgotKwotK2dkYl90ZXN0ICJwIGFycmF5XFsxXF0i ICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgYXJyYXlcWzJcXSIgIlxc JFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCBhcnJheVxbM1xdIiAiXFwkXFsw LTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJcXCRcWzAtOVxd ID0gNCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hl cmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAic2Vjb25k OiB3aGF0aXMgYXJyYXkiCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheV90IiAidHlwZSA9IGNoYXIg XFxcW3ZhcmlhYmxlIGxlbmd0aFxcXF0iICJzZWNvbmQ6IHdoYXRpcyBhcnJheV90IgotK2dkYl90 ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBl IGFycmF5IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10 eXBlZGVmLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYt Zm9vLlMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwotQEAgLTAsMCArMSw0NTUg QEAKLSsJLmZpbGUJIng4Nl82NC12bGEtdHlwZWRlZi5jIgotKwkuc2VjdGlvbgkuZGVidWdfYWJi cmV2LCIiLEBwcm9nYml0cwotKy5MZGVidWdfYWJicmV2MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2lu Zm8sIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19pbmZvMDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xpbmUs IiIsQHByb2diaXRzCi0rLkxkZWJ1Z19saW5lMDoKLSsJLnRleHQKLSsuTHRleHQwOgotKy5nbG9i bCBmb28KLSsJLnR5cGUJZm9vLCBAZnVuY3Rpb24KLStmb286Ci0rLkxGQjI6Ci0rCS5maWxlIDEg Ing4Nl82NC12bGEtdHlwZWRlZi5jIgotKwkubG9jIDEgMjIgMAotKwlwdXNocQklcmJwCi0rLkxD RkkwOgotKwltb3ZxCSVyc3AsICVyYnAKLSsuTENGSTE6Ci0rCXN1YnEJJDY0LCAlcnNwCi0rLkxD RkkyOgotKwltb3ZsCSVlZGksIC0zNiglcmJwKQotKwkubG9jIDEgMjIgMAotKwltb3ZxCSVyc3As ICVyYXgKLSsJbW92cQklcmF4LCAtNDgoJXJicCkKLSsJLmxvYyAxIDIzIDAKLSsJbW92bAktMzYo JXJicCksICVlZHgKLSsJbW92c2xxCSVlZHgsJXJheAotKwlzdWJxCSQxLCAlcmF4Ci0rCW1vdnEJ JXJheCwgLTI0KCVyYnApCi0rCS5sb2MgMSAyNCAwCi0rCW1vdnNscQklZWR4LCVyYXgKLSsJYWRk cQkkMTUsICVyYXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJc2hycQkkNCwgJXJheAotKwlzYWxxCSQ0 LCAlcmF4Ci0rCXN1YnEJJXJheCwgJXJzcAotKwltb3ZxCSVyc3AsIC01NiglcmJwKQotKwltb3Zx CS01NiglcmJwKSwgJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNh bHEJJDQsICVyYXgKLSsJbW92cQklcmF4LCAtNTYoJXJicCkKLSsJbW92cQktNTYoJXJicCksICVy YXgKLSsJbW92cQklcmF4LCAtMTYoJXJicCkKLSsJLmxvYyAxIDI3IDAKLSsJbW92bAkkMCwgLTQo JXJicCkKLSsJam1wCS5MMgotKy5MMzoKLSsJLmxvYyAxIDI4IDAKLSsJbW92bAktNCglcmJwKSwg JWVzaQotKwltb3ZsCS00KCVyYnApLCAlZWF4Ci0rCW1vdmwJJWVheCwgJWVjeAotKwltb3ZxCS0x NiglcmJwKSwgJXJkeAotKwltb3ZzbHEJJWVzaSwlcmF4Ci0rCW1vdmIJJWNsLCAoJXJkeCwlcmF4 KQotKwkubG9jIDEgMjcgMAotKwlhZGRsCSQxLCAtNCglcmJwKQotKy5MMjoKLSsJbW92bAktNCgl cmJwKSwgJWVheAotKwljbXBsCS0zNiglcmJwKSwgJWVheAotKwlqbAkuTDMKLSsJLmxvYyAxIDMw IDAKLSsJLmdsb2JsCWJyZWFrX2hlcmUKLSticmVha19oZXJlOgotKwltb3ZxCS0xNiglcmJwKSwg JXJheAotKwltb3ZiCSQwLCAoJXJheCkKLSsJbW92cQktNDgoJXJicCksICVyc3AKLSsJLmxvYyAx IDMxIDAKLSsJbGVhdmUKLSsJcmV0Ci0rLkxGRTI6Ci0rCS5zaXplCWZvbywgLi1mb28KLSsJLnNl Y3Rpb24JLmRlYnVnX2ZyYW1lLCIiLEBwcm9nYml0cwotKy5MZnJhbWUwOgotKwkubG9uZwkuTEVD SUUwLS5MU0NJRTAKLSsuTFNDSUUwOgotKwkubG9uZwkweGZmZmZmZmZmCi0rCS5ieXRlCTB4MQot Kwkuc3RyaW5nCSIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xlYjEyOCAtOAotKwkuYnl0ZQkweDEw Ci0rCS5ieXRlCTB4YwotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4 OTAKLSsJLnVsZWIxMjggMHgxCi0rCS5hbGlnbiA4Ci0rLkxFQ0lFMDoKLSsuTFNGREUwOgotKwku bG9uZwkuTEVGREUwLS5MQVNGREUwCi0rLkxBU0ZERTA6Ci0rCS5sb25nCS5MZnJhbWUwCi0rCS5x dWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyLS5MRkIyCi0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENG STAtLkxGQjIKLSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4MTAKLSsJLmJ5dGUJMHg4NgotKwku dWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENGSTAKLSsJLmJ5dGUJ MHhkCi0rCS51bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5MRUZERTA6Ci0rCS5zZWN0aW9uCS5l aF9mcmFtZSwiYSIsQHByb2diaXRzCi0rLkxmcmFtZTE6Ci0rCS5sb25nCS5MRUNJRTEtLkxTQ0lF MQotKy5MU0NJRTE6Ci0rCS5sb25nCTB4MAotKwkuYnl0ZQkweDEKLSsJLnN0cmluZwkielIiCi0r CS51bGViMTI4IDB4MQotKwkuc2xlYjEyOCAtOAotKwkuYnl0ZQkweDEwCi0rCS51bGViMTI4IDB4 MQotKwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAw eDgKLSsJLmJ5dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVDSUUxOgot Ky5MU0ZERTE6Ci0rCS5sb25nCS5MRUZERTEtLkxBU0ZERTEKLSsuTEFTRkRFMToKLSsJLmxvbmcJ LkxBU0ZERTEtLkxmcmFtZTEKLSsJLmxvbmcJLkxGQjIKLSsJLmxvbmcJLkxGRTItLkxGQjIKLSsJ LnVsZWIxMjggMHgwCi0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENGSTAtLkxGQjIKLSsJLmJ5dGUJ MHhlCi0rCS51bGViMTI4IDB4MTAKLSsJLmJ5dGUJMHg4NgotKwkudWxlYjEyOCAweDIKLSsJLmJ5 dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENGSTAKLSsJLmJ5dGUJMHhkCi0rCS51bGViMTI4IDB4 NgotKwkuYWxpZ24gOAotKy5MRUZERTE6Ci0rCS50ZXh0Ci0rLkxldGV4dDA6Ci0rCS5zZWN0aW9u CS5kZWJ1Z19sb2MsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19sb2MwOgotKy5MTFNUMDoKLSsJLnF1 YWQJLkxGQjItLkx0ZXh0MAotKwkucXVhZAkuTENGSTAtLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0r CS5ieXRlCTB4NzcKLSsJLnNsZWIxMjggOAotKwkucXVhZAkuTENGSTAtLkx0ZXh0MAotKwkucXVh ZAkuTENGSTEtLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzcKLSsJLnNsZWIxMjgg MTYKLSsJLnF1YWQJLkxDRkkxLS5MdGV4dDAKLSsJLnF1YWQJLkxGRTItLkx0ZXh0MAotKwkudmFs dWUJMHgyCi0rCS5ieXRlCTB4NzYKLSsJLnNsZWIxMjggMTYKLSsJLnF1YWQJMHgwCi0rCS5xdWFk CTB4MAotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotKwkubG9uZwkuTGRlYnVnX2VuZCAtIC5MZGVi dWdfc3RhcnQKLSsuTGRlYnVnX3N0YXJ0OgotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdf YWJicmV2MAotKwkuYnl0ZQkweDgKLSsJLnVsZWIxMjggMHgxCi0rCS5sb25nCS5MQVNGMgotKwku Ynl0ZQkweDEKLSsJLmxvbmcJLkxBU0YzCi0rCS5sb25nCS5MQVNGNAotKwkucXVhZAkuTHRleHQw Ci0rCS5xdWFkCS5MZXRleHQwCi0rCS5sb25nCS5MZGVidWdfbGluZTAKLSsJLnVsZWIxMjggMHgy Ci0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSJmb28iCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE2 Ci0rCS5ieXRlCTB4MQotKwkucXVhZAkuTEZCMgotKwkucXVhZAkuTEZFMgotKwkubG9uZwkuTExT VDAKLSsJLmxvbmcJMHg4MwotKwkudWxlYjEyOCAweDMKLSsJLmxvbmcJLkxBU0Y1Ci0rCS5ieXRl CTB4MQotKwkuYnl0ZQkweDE1Ci0rCS5sb25nCTB4ODMKLSsJLmJ5dGUJMHgyCi0rCS5ieXRlCTB4 OTEKLSsJLnNsZWIxMjggLTUyCi0rLkx0YWdfdHlwZWRlZjoKLSsJLnVsZWIxMjggMHg0Ci0rCS5s b25nCS5MQVNGNgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxNwotKwkubG9uZwkuTHRhZ19hcnJh eV90eXBlIC0gLmRlYnVnX2luZm8KLSsJLnVsZWIxMjggMHg1CS8qIEFiYnJldiBOdW1iZXI6IDUg KERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmxvbmcJLkxBU0YwCi0rCS5ieXRlCTB4MQotKwkuYnl0 ZQkweDE4Ci0rI2lmIDEKLSsJLmxvbmcJLkx0YWdfdHlwZWRlZiAtIC5kZWJ1Z19pbmZvCi0rI2Vs c2UKLSsJLyogRGVidWdnaW5nIG9ubHk6IFNraXAgdGhlIHR5cGVkZWYgaW5kaXJlY3Rpb24uICAq LwotKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KLSsjZW5kaWYKLSsJLyog RFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLwotKwkuYnl0ZQkweDMKLSsJ LmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtMzIKLSsjaWYgMAotKwkuYnl0ZQkweDYJLyogRFdfT1Bf ZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAqLwotKyNlbmRpZgot KwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLwotKwkudWxlYjEyOCAw eDYKLSsJLnN0cmluZwkiaSIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTkKLSsJLmxvbmcJMHg4 MwotKwkuYnl0ZQkweDIKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtMjAKLSsJLmJ5dGUJMHgw Ci0rCS51bGViMTI4IDB4NwotKwkuYnl0ZQkweDQKLSsJLmJ5dGUJMHg1Ci0rCS5zdHJpbmcJImlu dCIKLSsuTHRhZ19hcnJheV90eXBlOgotKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjog OCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS5sb25nCTB4YTAgKyAoMmYgLSAxZikJLyogRFdf QVRfdHlwZTogRFdfRk9STV9yZWY0ICovCi0rCS5sb25nCTB4OWQgKyAoMmYgLSAxZikJLyogRFdf QVRfc2libGluZzogRFdfRk9STV9yZWY0ICovCi0rMToJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjog RFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCi0rCS5ieXRlCTJmIC0gM2YJLyogbGVuZ3RoICovCi0r MzoKLSsJLmJ5dGUJMHg5NwkvKiBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzICovCi0rCS5ieXRl CTB4NgkvKiBEV19PUF9kZXJlZiAqLwotKzI6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZP Uk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjggMHg5Ci0rCS5sb25nCTB4OWQgKyAoMmIgLSAx YikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICovCi0rCS5ieXRlCTB4MwotKwkuYnl0ZQkw eDkxCi0rCS5zbGViMTI4IC00MAotKwkuYnl0ZQkweDYKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4 IDB4YQotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHg3Ci0rCS51bGViMTI4IDB4YgotKwkuYnl0ZQkw eDEKLSsJLmJ5dGUJMHg2Ci0rCS5sb25nCS5MQVNGMQotKwkuYnl0ZQkweDAKLSsuTGRlYnVnX2Vu ZDoKLSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjgg MHgxMQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHgyNQotKwkudWxlYjEyOCAweGUKLSsJLnVs ZWIxMjggMHgxMwotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4 ZQotKwkudWxlYjEyOCAweDFiCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDExCi0rCS51 bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEyCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAw eDEwCi0rCS51bGViMTI4IDB4NgotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4 IDB4MgotKwkudWxlYjEyOCAweDJlCi0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDNmCi0rCS51 bGViMTI4IDB4YwotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0rCS51bGViMTI4IDB4 M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51 bGViMTI4IDB4MjcKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjgg MHgxCi0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4NDAKLSsJ LnVsZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEzCi0rCS5ieXRlCTB4 MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4NQotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDNhCi0rCS51 bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAw eDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4YQotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NAotKwkudWxlYjEyOCAweDE2Ci0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4 M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51 bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0r CS51bGViMTI4IDB4NQotKwkudWxlYjEyOCAweDM0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAw eDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51 bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjgg MHgxMwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0 ZQkweDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5dGUJMHgwCi0rCS51 bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAw eGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwku dWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgw Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51 bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4MAot KwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19h cnJheV90eXBlKSAqLwotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4 NDkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwot KwkudWxlYjEyOCAweDEJLyogRFdfQVRfc2libGluZyAqLwotKwkudWxlYjEyOCAweDEzCS8qIERX X0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDUwCS8qIERXX0FUX2RhdGFfbG9jYXRpb24gKi8K LSsJLnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCTB4MAotKwkuYnl0 ZQkweDAKLSsJLnVsZWIxMjggMHg5Ci0rCS51bGViMTI4IDB4MjEKLSsJLmJ5dGUJMHgwCi0rCS51 bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1f cmVmNCAqLwotKwkudWxlYjEyOCAweDJmCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YQotKwkudWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIx MjggMHhiCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweGIKLSsJ LnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4 IDB4ZQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkuc2VjdGlvbgku ZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCi0rCS5sb25nCTB4MTYKLSsJLnZhbHVlCTB4Mgot KwkubG9uZwkuTGRlYnVnX2luZm8wCi0rCS5sb25nCTB4YTgKLSsJLmxvbmcJMHgyZAotKwkuc3Ry aW5nCSJmb28iCi0rCS5sb25nCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfYXJhbmdlcywiIixAcHJv Z2JpdHMKLSsJLmxvbmcJMHgyYwotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAK LSsJLmJ5dGUJMHg4Ci0rCS5ieXRlCTB4MAotKwkudmFsdWUJMHgwCi0rCS52YWx1ZQkweDAKLSsJ LnF1YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MC0uTHRleHQwCi0rCS5xdWFkCTB4MAotKwku cXVhZAkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMiLEBwcm9nYml0cywxCi0rLkxBU0Yw OgotKwkuc3RyaW5nCSJhcnJheSIKLSsuTEFTRjU6Ci0rCS5zdHJpbmcJInNpemUiCi0rLkxBU0Yz OgotKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIKLSsuTEFTRjY6Ci0rCS5zdHJpbmcJ ImFycmF5X3QiCi0rLkxBU0YxOgotKwkuc3RyaW5nCSJjaGFyIgotKy5MQVNGNDoKLSsJLnN0cmlu ZwkiZ2RiLmFyY2giCi0rLkxBU0YyOgotKwkuc3RyaW5nCSJHTlUgQyA0LjMuMiAyMDA4MTEwNSAo UmVkIEhhdCA0LjMuMi03KSIKLSsJLmlkZW50CSJHQ0M6IChHTlUpIDQuMy4yIDIwMDgxMTA1IChS ZWQgSGF0IDQuMy4yLTcpIgotKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRz Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYu YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L3g4Nl82NC12bGEtdHlwZWRlZi5jCi1AQCAtMCwwICsxLDQ1IEBACi0rLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAw OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmIDAKLSsKLSt2b2lkCi0rZm9vIChpbnQgc2l6 ZSkKLSt7Ci0rICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXplXTsKLSsgIGFycmF5X3QgYXJyYXk7 Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCi0rICAgIGFycmF5 W2ldID0gaTsKLSsKLSsgIGFycmF5WzBdID0gMDsJLyogYnJlYWstaGVyZSAqLwotK30KLSsKLSsj ZWxzZQotKwotK3ZvaWQgZm9vIChpbnQgc2l6ZSk7Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7 Ci0rICBmb28gKDI2KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNlbmRp ZgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVm LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAotQEAgLTAsMCArMSw2NCBAQAotKyMgQ29weXJp Z2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBEV19BVF9kYXRhX2xvY2F0aW9uIGFjY2Vzc2Vk IHRocm91Z2ggRFdfVEFHX3R5cGVkZWYgaW50ZXJtZWRpYXRlLgotKwotK2lmICFbaXN0YXJnZXQg Ing4Nl82NC0qLSoiXSB0aGVuIHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcgb3ZlciBnZGIuYXJj aC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIHRlc3QgbWFkZSBvbmx5IGZvciB4ODZfNjQuIgotKyAg ICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtdHlwZWRlZgotK3NldCBz cmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwot K3NldCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfV0KLStzZXQgYmlu b2JqZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0tZm9vLm9dCi0raWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9i amZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLStpZiAgeyBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxk bid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4 aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStn ZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHVudGVzdGVk IHg4Nl82NC12bGEtdHlwZWRlZgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9p bnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hl cmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAiZmlyc3Q6 IHdoYXRpcyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBc XFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJwIGFycmF5XFsx XF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgYXJyYXlcWzJcXSIg IlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCBhcnJheVxbM1xdIiAiXFwk XFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJcXCRcWzAt OVxdID0gNCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFr X2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAic2Vj b25kOiB3aGF0aXMgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNo YXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJh eWlkeC5jCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwotQEAgLTE3LDYgKzE3LDEzIEBACi0gCi0g aW50IGFycmF5W10gPSB7MSwgMiwgMywgNH07Ci0gCi0rI2lmZGVmIF9fR05VQ19fCi0rc3RydWN0 Ci0rICB7Ci0rICAgIGludCBhWzBdOwotKyAgfSB1bmJvdW5kOwotKyNlbmRpZgotKwotIGludAot IG1haW4gKHZvaWQpCi0gewotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJy YXlpZHguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLS0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2FycmF5aWR4LmV4cAotQEAgLTQ5LDQgKzQ5LDEyIEBAIGdkYl90ZXN0ICJwcmludCBh cnJheSIgXAotICAgICAgICAgICJcXHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBcXFxb MlxcXF0gPSAzLCBcXFxbM1xcXF0gPSA0XFx9IiBcCi0gICAgICAgICAgInByaW50IGFycmF5IHdp dGggYXJyYXktaW5kZXhlcyBvbiIKLSAKLS0KLStzZXQgdGVzdCAicCB1bmJvdW5kLmEgPT0gJnVu Ym91bmQuYVxbMFxdIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJl ICIgPSAxXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1y ZSAiTm8gc3ltYm9sIFwidW5ib3VuZFwiIGluIGN1cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9t cHQgJCIgewotKwl1bnN1cHBvcnRlZCAiJHRlc3QgKG5vIEdDQykiCi0rICAgIH0KLSt9Ci1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVz cy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5j Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi1AQCAtMCwwICsxLDIwIEBA Ci0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsK LSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rc3RydWN0IHsKLSsg IGludCBmaWVsZDsKLSt9IHN0YXRpY3N0cnVjdCA9IHsgMSB9OwotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAotQEAgLTAsMCArMSwyNiBAQAotKyMgQ29w eXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0IGludGVybmFsLXZhci1maWVsZC1hZGRy ZXNzCi0rc2V0IGJpbmZpbGUgJHt0ZXN0fS54Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7dGVzdH0uYyIgIltzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2JpbmZpbGV9 XSIgb2JqZWN0IHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStjbGVhbl9yZXN0YXJ0 ICRiaW5maWxlCi0rCi0rZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGljc3RydWN0fQot K2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS1mcmFtZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYwotQEAgLTAsMCArMSwzMSBAQAotKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29w eXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4K LSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgY2hhciBzWzIg KyBhcmdjXTsKLSsgIHZvaWQgKCpmKSAoY2hhciAqKSA9IDA7Ci0rCi0rICBtZW1zZXQgKHMsIDAs IHNpemVvZiAocykpOwotKyAgc1swXSA9ICdYJzsKLSsKLSsgIGYgKHMpOwotKyAgcmV0dXJuIDA7 Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1l LmV4cAotQEAgLTAsMCArMSwzOCBAQAotKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStz ZXQgdGVzdGZpbGUgdmxhLWZyYW1lCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KLSsKLStp ZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke2V4ZWN1dGFibGV9XSB9 IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1 cm4gLTEKLSt9Ci0rCi0rc2V0IHRlc3QgImNvbnRpbnVlIgotK2dkYl90ZXN0X211bHRpcGxlICR0 ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJDb250aW51aW5nXFwuXHJcblxyXG5Qcm9ncmFtIHJlY2Vp dmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHRcXC5cclxuMHgwKyBpbiBcXD9c XD8gXFwoXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rICAg IC1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCi0r CXJldHVybgotKyAgICB9Ci0rfQotKwotK2dkYl90ZXN0ICJidCBmdWxsIiAiXHJcbiArcyA9IFwi WFxcXFwwMDBcIlxyXG4uKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLW92ZXJmbG93LmMKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0raW50Ci0r bWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsgIGludCBhcnJheVthcmdjXTsKLSsK LSsgIGFycmF5WzBdID0gYXJyYXlbMF07Ci0rCi0rICBhYm9ydCAoKTsKLSsKLSsgIHJldHVybiAw OwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS1vdmVyZmxvdy5leHAKLUBAIC0wLDAgKzEsMTA5IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0rIyBXZSBjb3VsZCBjcmFzaCBpbjoKLSsjICMwICBibG9ja19saW5rYWdlX2Z1bmN0 aW9uIChibD0weDApIGF0IC4uLy4uL2dkYi9ibG9jay5jOjY5Ci0rIyAjMSAgaW4gZHdhcmZfYmxv Y2tfZ2V0X2ZyYW1lX2Jhc2UgKC4uLikgYXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6OTcKLSsj ICAgOTcJICBmcmFtZWZ1bmMgPSBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChnZXRfZnJhbWVfYmxv Y2sgKGZyYW1lLCBOVUxMKSk7Ci0rIyAjMiAgaW4gZXhlY3V0ZV9zdGFja19vcCAoLi4uKSBhdCAu Li8uLi9nZGIvZHdhcmYyZXhwci5jOjQ5NgotKyMgIzMgIGluIGR3YXJmX2Jsb2NrX2V4ZWNfY29y ZSAoKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoxNTYKLSsjICM0ICBkd2FyZl9ibG9ja19l eGVjICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjIwNgotKyMgIzUgIGluIHJhbmdl X3R5cGVfY291bnRfYm91bmRfaW50ZXJuYWwgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6 MTQzMAotKyMgIzYgIGluIGNyZWF0ZV9hcnJheV90eXBlICguLi4pIGF0IC4uLy4uL2dkYi9nZGJ0 eXBlcy5jOjg0MAotKyMgLi4uCi0rIyAjMjEgaW4gcHN5bXRhYl90b19zeW10YWIgKC4uLikgYXQg Li4vLi4vZ2RiL3N5bWZpbGUuYzoyOTIKLSsjIC4uLgotKyMgIzI5IGluIGJhY2t0cmFjZV9jb21t YW5kXzEgKCkgYXQgLi4vLi4vZ2RiL3N0YWNrLmM6MTI3MwotKwotK3NldCB0ZXN0ZmlsZSB2bGEt b3ZlcmZsb3cKLStzZXQgc2hmaWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfS1n ZGIuc2hdCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlIFtzdGFuZGFy ZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfV0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0g IT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCBmIFtvcGVuICJ8Z2V0Y29uZiBQQUdFU0laRSIg InIiXQotK2dldHMgJGYgcGFnZXNpemUKLStjbG9zZSAkZgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0 YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHti aW5maWxlfQotKwotK3NldCBwaWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3Qg ZmlsZWlkXV0KLSsKLStpZiB7IFtydW50b19tYWluXSA8IDAgfSB7Ci0rICAgIHVudGVzdGVkIHZs YS1vdmVyZmxvdwotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBHZXQgdGhlIEdEQiBtZW1vcnkg c2l6ZSB3aGVuIHdlIHN0YXkgYXQgbWFpbi4KLSsKLStwcm9jIG1lbW9yeV92X3BhZ2VzX2dldCB7 fSB7Ci0rICAgIGdsb2JhbCBwaWRfb2ZfZ2RiIHBhZ2VzaXplCi0rICAgIHNldCBmZCBbb3BlbiAi L3Byb2MvJHBpZF9vZl9nZGIvc3RhdG0iXQotKyAgICBnZXRzICRmZCBsaW5lCi0rICAgIGNsb3Nl ICRmZAotKyAgICAjIG51bWJlciBvZiBwYWdlcyBvZiB2aXJ0dWFsIG1lbW9yeQotKyAgICBzY2Fu ICRsaW5lICIlZCIgZHJzCi0rICAgIHJldHVybiAkZHJzCi0rfQotKwotK3NldCBwYWdlc19mb3Vu ZCBbbWVtb3J5X3ZfcGFnZXNfZ2V0XQotKwotKyMgczM5MHggd2l0aCBnbGliYy1kZWJ1Z2luZm8u czM5MHggaW5zdGFsbGVkIHVzZWQgYXBwcm94LiAxNk1CLgotK3NldCBtYl9yZXNlcnZlIDQwCi0r dmVyYm9zZSAtbG9nICJwYWdlc19mb3VuZCA9ICRwYWdlc19mb3VuZCwgbWJfcmVzZXJ2ZSA9ICRt Yl9yZXNlcnZlIgotK3NldCBrYl9mb3VuZCBbZXhwciAkcGFnZXNfZm91bmQgKiAkcGFnZXNpemUg LyAxMDI0XQotK3NldCBrYl9wZXJtaXQgW2V4cHIgJGtiX2ZvdW5kICsgMSAqIDEwMjQgKyAkbWJf cmVzZXJ2ZSAqIDEwMjRdCi0rdmVyYm9zZSAtbG9nICJrYl9mb3VuZCA9ICRrYl9mb3VuZCwga2Jf cGVybWl0ID0gJGtiX3Blcm1pdCIKLSsKLSsjIENyZWF0ZSB0aGUgdWxpbWl0IHdyYXBwZXIuCi0r c2V0IGYgW29wZW4gJHNoZmlsZSAidyJdCi0rcHV0cyAkZiAiIyEgL2Jpbi9zaCIKLStwdXRzICRm ICJ1bGltaXQgLXYgJGtiX3Blcm1pdCIKLStwdXRzICRmICJleGVjICRHREIgXCJcJEBcIiIKLStj bG9zZSAkZgotK3JlbW90ZV9leGVjIGhvc3QgImNobW9kICt4ICRzaGZpbGUiCi0rCi0rZ2RiX2V4 aXQKLStzZXQgR0RCb2xkICRHREIKLStzZXQgR0RCICIkc2hmaWxlIgotK2dkYl9zdGFydAotK3Nl dCBHREIgJEdEQm9sZAotKwotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgot K2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStzZXQgcGlkX29mX2dkYiBbZXhwX3BpZCAtaSBbYm9h cmRfaW5mbyBob3N0IGZpbGVpZF1dCi0rCi0rIyBDaGVjayB0aGUgc2l6ZSBhZ2FpbiBhZnRlciB0 aGUgc2Vjb25kIHJ1bi4KLSsjIFdlIG11c3Qgbm90IHN0b3AgaW4gbWFpbiBhcyBpdCB3b3VsZCBj YWNoZSBgYXJyYXknIGFuZCBuZXZlciBjcmFzaCBsYXRlci4KLSsKLStnZGJfcnVuX2NtZAotKwot K3ZlcmJvc2UgLWxvZyAia2JfZm91bmQgYmVmb3JlIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3Zf cGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgotKwotK2dkYl90ZXN0ICIiICJQcm9ncmFt IHJlY2VpdmVkIHNpZ25hbCBTSUdBQlJULCBBYm9ydGVkLi4qIiAiRW50ZXIgYWJvcnQoKSIKLSsK LSt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFn ZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgotKwotKyMgYGFib3J0JyBjYW4gZ2V0IGV4cHJl c3NlZCBhcyBgKl9fR0lfYWJvcnQnLgotK2dkYl90ZXN0ICJidCIgImluIFxbXiBcXSphYm9ydCBc XCguKiBpbiBtYWluIFxcKC4qIiAiQmFja3RyYWNlIGFmdGVyIGFib3J0KCkiCi0rCi0rdmVyYm9z ZSAtbG9nICJrYl9mb3VuZCBpbiBidCBhZnRlciBhYm9ydCgpID0gW2V4cHIgW21lbW9yeV92X3Bh Z2VzX2dldF0gKiAkcGFnZXNpemUgLyAxMDI0XSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYwotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLmMKLUBAIC0wLDAgKzEsNTUgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rdm9pZAotK21hcmtlciAodm9pZCkK LSt7Ci0rfQotKwotK3ZvaWQKLStiYXIgKGNoYXIgKmEsIGNoYXIgKmIsIGNoYXIgKmMsIGludCBz aXplKQotK3sKLSsgIG1lbXNldCAoYSwgJzEnLCBzaXplKTsKLSsgIG1lbXNldCAoYiwgJzInLCBz aXplKTsKLSsgIG1lbXNldCAoYywgJzMnLCA0OCk7Ci0rfQotKwotK3ZvaWQKLStmb28gKGludCBz aXplKQotK3sKLSsgIGNoYXIgdGVtcDFbc2l6ZV07Ci0rICBjaGFyIHRlbXAzWzQ4XTsKLSsKLSsg IHRlbXAxW3NpemUgLSAxXSA9ICdcMCc7Ci0rICB7Ci0rICAgIGNoYXIgdGVtcDJbc2l6ZV07Ci0r Ci0rICAgIGJhciAodGVtcDEsIHRlbXAyLCB0ZW1wMywgc2l6ZSk7Ci0rCi0rICAgIG1hcmtlciAo KTsJLyogYnJlYWstaGVyZSAqLwotKyAgfQotK30KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sK LSsgIGZvbyAoMjYpOwotKyAgZm9vICg3OCk7Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCi1AQCAtMCwwICsxLDYyIEBACi0rIyBDb3B5cmln aHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxlIHZsYQotK3NldCBzcmNmaWxlICR7dGVz dGZpbGV9LmMKLStzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1d Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStn ZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHsKLSsgICAgdW50 ZXN0ZWQgdmxhCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImJyZWFrLWhlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIgInR5cGUgPSBjaGFy IFxcXFsyNlxcXF0iICJmaXJzdDogd2hhdGlzIHRlbXAxIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVt cDIiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMiIKLStnZGJf dGVzdCAid2hhdGlzIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgImZpcnN0OiB3aGF0 aXMgdGVtcDMiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzI2 XFxcXSIgImZpcnN0OiBwdHlwZSB0ZW1wMSIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBl ID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAyIgotK2dkYl90ZXN0ICJwdHlw ZSB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDMiCi0r Ci0rZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6 IHByaW50IHRlbXAxIgotK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDI2IHRp bWVzPiIgImZpcnN0OiBwcmludCB0ZW1wMiIKLStnZGJfdGVzdCAicCB0ZW1wMyIgIiA9ICczJyA8 cmVwZWF0cyA0OCB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDMiCi0rCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIg InR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMSIKLStnZGJfdGVz dCAid2hhdGlzIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogd2hhdGlz IHRlbXAyIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxd IiAic2Vjb25kOiB3aGF0aXMgdGVtcDMiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlw ZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDEiCi0rZ2RiX3Rlc3QgInB0 eXBlIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDIi Ci0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgInNlY29u ZDogcHR5cGUgdGVtcDMiCi0rCi0rZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMg NzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKLStnZGJfdGVzdCAicCB0ZW1wMiIgIiA9 ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAyIgotK2dkYl90ZXN0 ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVt cDMiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmNjCi1AQCAtMCwwICsx LDE3OSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdn ZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rICAgKi8K LSsjaW5jbHVkZSA8aW9zdHJlYW0+Ci0rCi0rdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSsKLStjbGFz cyBOZXh0T3ZlclRocm93RGVyaXZhdGVzCi0rewotKwotK3B1YmxpYzoKLSsKLSsKLSsgIC8vIFNp bmdsZSB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhpcyBmdW5jdGlvbi4KLSsgIHZvaWQgZnVuY3Rp b24xKCkKLSsgIHsKLSsgICAgdGhyb3cgMjA7Ci0rICB9Ci0rCi0rICAvLyBUaHJvdyBhbiBleGNl cHRpb24gaW4gYW5vdGhlciBmdW5jdGlvbi4KLSsgIHZvaWQgZnVuY3Rpb24yKCkKLSsgIHsKLSsg ICAgZnVuY3Rpb24xKCk7Ci0rICB9Ci0rCi0rICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaW4gYW5v dGhlciBmdW5jdGlvbiwgYnV0IGhhbmRsZSBpdAotKyAgLy8gbG9jYWxseS4KLSsgIHZvaWQgZnVu Y3Rpb24zICgpCi0rICB7Ci0rICAgIHsKLSsgICAgICB0cnkKLSsJewotKwkgIGZ1bmN0aW9uMSAo KTsKLSsJfQotKyAgICAgIGNhdGNoICguLi4pCi0rCXsKLSsJICBjb3V0IDw8ICJDYXVnaHQgYW5k IGhhbmRsZWQgZnVuY3Rpb24xIGV4Y2VwdGlvbiIgPDwgZW5kbDsKLSsJfQotKyAgICB9Ci0rICB9 Ci0rCi0rICB2b2lkIHJldGhyb3cgKCkKLSsgIHsKLSsgICAgdHJ5Ci0rICAgICAgewotKwlmdW5j dGlvbjEgKCk7Ci0rICAgICAgfQotKyAgICBjYXRjaCAoLi4uKQotKyAgICAgIHsKLSsJdGhyb3c7 Ci0rICAgICAgfQotKyAgfQotKwotKyAgdm9pZCBmaW5pc2ggKCkKLSsgIHsKLSsgICAgLy8gV2Ug dXNlIHRoaXMgdG8gdGVzdCB0aGF0IGEgImZpbmlzaCIgaGVyZSBkb2VzIG5vdCBlbmQgdXAgaW4K LSsgICAgLy8gdGhpcyBmcmFtZSwgYnV0IGluIHRoZSBvbmUgYWJvdmUuCi0rICAgIHRyeQotKyAg ICAgIHsKLSsJZnVuY3Rpb24xICgpOwotKyAgICAgIH0KLSsgICAgY2F0Y2ggKGludCB4KQotKyAg ICAgIHsKLSsgICAgICB9Ci0rICAgIGZ1bmN0aW9uMSAoKTsJCS8vIG1hcmtlciBmb3IgdW50aWwK LSsgIH0KLSsKLSsgIHZvaWQgdW50aWwgKCkKLSsgIHsKLSsgICAgZnVuY3Rpb24xICgpOwotKyAg ICBmdW5jdGlvbjEgKCk7CQkvLyB1bnRpbCBoZXJlCi0rICB9Ci0rCi0rfTsKLStOZXh0T3ZlclRo cm93RGVyaXZhdGVzIG5leHRfY2FzZXM7Ci0rCi0rCi0raW50IG1haW4gKCkKLSt7Ci0rICB0cnkK LSsgICAgewotKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24xICgpOwotKyAgICB9Ci0rICBjYXRj aCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICB0cnkKLSsg ICAgewotKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24yICgpOwotKyAgICB9Ci0rICBjYXRjaCAo Li4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICB0cnkKLSsgICAg ewotKyAgICAgIC8vIFRoaXMgaXMgZHVwbGljYXRlZCBzbyB3ZSBjYW4gbmV4dCBvdmVyIG9uZSBi dXQgc3RlcCBpbnRvCi0rICAgICAgLy8gYW5vdGhlci4KLSsgICAgICBuZXh0X2Nhc2VzLmZ1bmN0 aW9uMiAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICAgIC8vIERpc2Nh cmQKLSsgICAgfQotKwotKyAgbmV4dF9jYXNlcy5mdW5jdGlvbjMgKCk7Ci0rCi0rICB0cnkKLSsg ICAgewotKyAgICAgIG5leHRfY2FzZXMucmV0aHJvdyAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4u LikKLSsgICAgewotKyAgICAgIC8vIERpc2NhcmQKLSsgICAgfQotKwotKyAgdHJ5Ci0rICAgIHsK LSsgICAgICAvLyBBbm90aGVyIGR1cGxpY2F0ZSBzbyB3ZSBjYW4gdGVzdCAiZmluaXNoIi4KLSsg ICAgICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMiAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsg ICAgewotKyAgICAgIC8vIERpc2NhcmQKLSsgICAgfQotKwotKyAgLy8gQW5vdGhlciB0ZXN0IGZv ciAiZmluaXNoIi4KLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5maW5pc2ggKCk7 Ci0rICAgIH0KLSsgIGNhdGNoICguLi4pCi0rICAgIHsKLSsgICAgfQotKwotKyAgLy8gVGVzdCBv ZiAidW50aWwiLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0X2Nhc2VzLmZpbmlzaCAoKTsK LSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0rCi0rICAvLyBUZXN0IG9m ICJ1bnRpbCIgd2l0aCBhbiBhcmd1bWVudC4KLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9j YXNlcy51bnRpbCAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0r Ci0rICAvLyBUZXN0IG9mICJhZHZhbmNlIi4KLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9j YXNlcy51bnRpbCAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0r fQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAotQEAgLTAsMCAr MSwxODkgQEAKLSsjIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsKLStpZiAkdHJh Y2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK2lmIHsgW3Nr aXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IHRlc3RmaWxlICJnZGI5NTkz IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCi0rc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291 dHB1dF9maWxlICR0ZXN0ZmlsZV0KLSsKLSsjIENyZWF0ZSBhbmQgc291cmNlIHRoZSBmaWxlIHRo YXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyCi0rIyB1c2VkIHRvIGNv bXBpbGUgdGhlIHRlc3QgY2FzZS4KLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gImMrKyJdIHsKLSsg ICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgZ2RiOTU5My5l eHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgU29tZSB0YXJnZXRzIGNhbid0IGRvIGZ1bmN0 aW9uIGNhbGxzLCBzbyBkb24ndCBldmVuIGJvdGhlciB3aXRoIHRoaXMKLSsjIHRlc3QuCi0raWYg W3RhcmdldF9pbmZvIGV4aXN0cyBnZGIsY2Fubm90X2NhbGxfZnVuY3Rpb25zXSB7Ci0rICAgIHNl dHVwX3hmYWlsICIqLSotKiIgOTU5MwotKyAgICBmYWlsICJUaGlzIHRhcmdldCBjYW4gbm90IGNh bGwgZnVuY3Rpb25zIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFy dAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7Ymlu ZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0 IHJ1biB0byBtYWluIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIFNlZSB3aGV0aGVyIHdlIGhh dmUgdGhlIG5lZWRlZCB1bndpbmRlciBob29rcy4KLStzZXQgb2sgMQotK2dkYl90ZXN0X211bHRp cGxlICJwcmludCBfVW53aW5kX0RlYnVnSG9vayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIiB7 Ci0rICAgIC1yZSAiPSAuKl9VbndpbmRfRGVidWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgewot KwlwYXNzICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayIKLSsgICAgfQotKyAgICAtcmUgIk5vIHN5 bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJIyBQYXNz IHRoZSB0ZXN0IHNvIHdlIGRvbid0IGdldCBib2d1cyBmYWlscyBpbiB0aGUgcmVzdWx0cy4KLSsJ cGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2siCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0r aWYgeyEkb2t9IHsKLSsgICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotKyMgU2VlIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/ aWQ9OTU5MwotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAgICIuKmNhdGNoICguLi4pLioiIFwK LSsgICAgIm5leHQgb3ZlciBhIHRocm93IDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIu Km5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggMSIKLSsKLStn ZGJfdGVzdCAibmV4dCIgXAotKyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAgICJuZXh0IG92 ZXIgYSB0aHJvdyAyIgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZ1 bmN0aW9uMi4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDIiCi0rCi0rZ2RiX3Rlc3QgInN0ZXAi IFwKLSsgICIuKmZ1bmN0aW9uMSgpLioiIFwKLSsgICJzdGVwIGludG8gZnVuY3Rpb24yIDEiCi0r Ci0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgICAibmV4 dCBvdmVyIGEgdGhyb3cgMyIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNl cy5mdW5jdGlvbjMuKiIgXAotKyAgIm5leHQgcGFzdCBjYXRjaCAzIgotKwotK2dkYl90ZXN0ICJu ZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnJldGhyb3cuKiIgXAotKyAgICAibmV4dCBvdmVyIGEg dGhyb3cgNCIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAot KyAgIm5leHQgb3ZlciBhIHJldGhyb3ciCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5l eHRfY2FzZXMuZnVuY3Rpb24yLioiIFwKLSsgICJuZXh0IGFmdGVyIGEgcmV0aHJvdyIKLSsKLStn ZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xKCkuKiIgXAotKyAgInN0ZXAgaW50byBm dW5jdGlvbjIgMiIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipjYXRjaCAoLi4uKS4q IiBcCi0rICAiZmluaXNoIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2Fz ZXMuZmluaXNoICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNCIKLSsKLStnZGJfdGVzdCAi c3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVwIGludG8gZmluaXNoIG1l dGhvZCIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipjYXRjaCAoLi4uKS4qIiBcCi0r ICAiZmluaXNoIDIiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZmlu aXNoICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNSIKLSsKLStnZGJfdGVzdCAic3RlcCIg XAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVwIGludG8gZmluaXNoLCBmb3IgdW50 aWwiCi0rCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInVudGlsIiAidW50aWwgd2l0aCBubyBhcmd1bWVu dCAxIiB7Ci0rICAgIC1yZSAtd3JhcCAiLipmdW5jdGlvbjEgKCkuKiIgewotKwlwYXNzICRnZGJf dGVzdF9uYW1lCi0rICAgIH0KLSsgICAgLXJlIC13cmFwICIuKiRoZXhcdDgwXHQgIFx9IiB7Ci0r CSMgUFIgZ2NjLzk3Nzc0IC0gIkluY29ycmVjdCBsaW5lIGluZm8gZm9yIHRyeS9jYXRjaCIKLSsJ IyBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD05Nzc3NAotKwl4 ZmFpbCAkZ2RiX3Rlc3RfbmFtZQotKyAgICB9Ci0rfQotKwotK3NldCBsaW5lIFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJtYXJrZXIgZm9yIHVudGlsIiAkdGVzdGZpbGUuY2NdCi0rCi0rZ2RiX3Rlc3Qg InVudGlsICRsaW5lIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIgXAotKyAgIm5leHQgcGFzdCBj YXRjaCA2IgotKwotK2dkYl90ZXN0ICJ1bnRpbCIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAot KyAgInVudGlsIHdpdGggbm8gYXJndW1lbnQgMiIKLSsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5l X251bWJlciAidW50aWwgaGVyZSIgJHRlc3RmaWxlLmNjXQotKwotK2dkYl90ZXN0ICJuZXh0IiBc Ci0rICAiLipuZXh0X2Nhc2VzLnVudGlsICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNiIK LSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVw IGludG8gdW50aWwiCi0rCi0rZ2RiX3Rlc3QgInVudGlsICRsaW5lIiBcCi0rICAiLipjYXRjaCAo Li4uKS4qIiBcCi0rICAidW50aWwtb3Zlci10aHJvdyIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAot KyAgIi4qbmV4dF9jYXNlcy51bnRpbCAoKS4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDciCi0r Ci0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCi0rICAic3RlcCBp bnRvIHVudGlsLCBmb3IgYWR2YW5jZSIKLSsKLStnZGJfdGVzdCAiYWR2YW5jZSAkbGluZSIgXAot KyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgImFkdmFuY2Utb3Zlci10aHJvdyIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1i b3VuZC1sb2NsaXN0LlMKLUBAIC0wLDAgKzEsMjQ2IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsKLSsvKiBXZSB3 aWxsIGBicmVhayAqbWFpbicgYXQgdGhlIHZlcnkgZmlyc3QgaW5zdHJ1Y3Rpb24uICAqLwotKyNk ZWZpbmUgbWFpbl9sZW5ndGggMQotKwotKwkuc2VjdGlvbgkuZGF0YQotK3ZhcmRhdGE6Ci0rCS8q IFNlZSBEV19PUF9saXQzICsgMSAoMC1iYXNlZCkuICAqLwotKwkuc3RyaW5nCQkic2Vlbm5vdHNl ZW4iCi0rCi0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvCi0rLkxjdTFfYmVnaW46Ci0rCS40Ynl0ZQkJ LkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8K LSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCQkyCQkJLyogRFdBUkYgdmVyc2lvbiBudW1iZXIgKi8K LSsJLjRieXRlCQkuTGRlYnVnX2FiYnJldjAJCS8qIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlv biAqLwotKwkuYnl0ZQkJNAkJCS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCi0rCi0rCS8q IENVIGRpZSAqLwotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0 ICovCi0rCS40Ynl0ZQkJLkxwcm9kdWNlcgkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLyogVXNl IEMrKyB0byBleHBsb2l0IGEgYnVnIGluIHBhcnNpbmcgRFdfQVRfbmFtZSAiIi4gICovCi0rCS5i eXRlCQk0CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMrKykgLSAgKi8KLSsJLjRieXRlCQltYWluCQkJ LyogRFdfQVRfbG93X3BjICovCi0rCS5ieXRlCQltYWluX2xlbmd0aAkJLyogRFdfQVRfaGlnaF9w YyAqLwotKwotKy5MYXJyYXlfdHlwZToKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFH X2FycmF5X3R5cGUgKi8KLSsJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19B VF90eXBlICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJyYW5nZV90 eXBlICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAq LwotKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS40Ynl0ZQkJLkxsZW5f dmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS5ieXRlCQkwCQkJLyog RW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyBy ZWZlcmVuY2luZyBhbiBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8KLSsuTGFycmF5Yl90eXBl OgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5 dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIx MjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVp bnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkwCQkJLyogRFdf QVRfbG93ZXJfYm91bmQgKi8KLSsJLjRieXRlCQkuTGxlbmJfdmFyLS5MY3UxX2JlZ2luCS8qIERX X0FUX3VwcGVyX2JvdW5kICovCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRp ZSAqLwotKwotKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyByZWdpc3Rlci4g ICovCi0rLkxhcnJheXJlZ190eXBlOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdf YXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FU X3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5 cGUgd2l0aCBibG9jayAqLwotKwkuNGJ5dGUJCS5MdWludF90eXBlLS5MY3UxX2JlZ2luCS8qIERX X0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkuYnl0 ZQkJMmYgLSAxZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rMToJLmJ5dGUJCTB4NTAJCQkv KiBEV19PUF9yZWcwICovCi0rMjoKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2Yg ZGllICovCi0rCi0rLkx1aW50X3R5cGU6Ci0rCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RB R19iYXNlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19BVF9uYW1lICovCi0r CS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCQk3CQkJLyogRFdfQVRf ZW5jb2RpbmcgKi8KLSsKLSsuTGNoYXJfdHlwZToKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldjog RFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl9zdHIJCS8qIERXX0FUX25hbWUg Ki8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTYJCQkvKiBE V19BVF9lbmNvZGluZyAqLwotKwotKy5MbGVuX3ZhcjoKLSsJLnVsZWIxMjgJNQkJCS8qIEFiYnJl djogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9h cnRpZmljaWFsICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRf dHlwZSAqLwotKwkuNGJ5dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2NsaXN0CS8qIERXX0FUX2xvY2F0 aW9uICovCi0rCi0rCS8qIG9wdGltaXplZC1vdXQgdmFyaWFibGUgZm9yIGJfc3RyaW5nLiAgKi8K LSsuTGxlbmJfdmFyOgotKwkudWxlYjEyOAk3CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUg YXJ0aWZpY2lhbCBubyBEV19BVF9sb2NhdGlvbiAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2Fy dGlmaWNpYWwgKi8KLSsJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90 eXBlICovCi0rCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19G T1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYV9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCi0r CS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5 dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5ieXRlCQkzCQkJLyogICBE V19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCi0rMjoKLSsK LSsJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgYW4gb3B0aW1pemVkLW91dCB2 YXJpYWJsZS4gICovCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBE V19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYl9zdHJpbmciCQkvKiBEV19BVF9uYW1lICov Ci0rCS40Ynl0ZQkJLkxhcnJheWJfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCi0r CS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJCS8q ICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLwotKzI6 Ci0rCi0rCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5nIHJlZ2lzdGVyLiAgKi8K LSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5n ICovCi0rCS5zdHJpbmcJCSJyZWdfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJ CS5MYXJyYXlyZWdfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQky ZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1Bf YWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLwotKzI6Ci0rCi0rCS5i eXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rLkxjdTFfZW5kOgotKwotKwku c2VjdGlvbgkuZGVidWdfbG9jCi0rLkxsb2NsaXN0OgotKy5MbGVuX2xvY2xpc3Q6Ci0rCS40Ynl0 ZQkwCQkJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MKLSsJLjRieXRlCW1haW5fbGVuZ3Ro CQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MKLSsJLnZhbHVlCTJmLTFmCSMgTG9jYXRpb24g ZXhwcmVzc2lvbiBzaXplCi0rMToJLmJ5dGUJMHgzMwkjIERXX09QX2xpdDMKLSsJLmJ5dGUJMHg5 ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rMjoKLSsJLnF1YWQJMHgwCSMgTG9jYXRpb24gbGlzdCB0 ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QyKQotKwkucXVhZAkweDAJIyBMb2NhdGlvbiBsaXN0IHRl cm1pbmF0b3IgZW5kICgqLkxMU1QyKQotKwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxk ZWJ1Z19hYmJyZXYwOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIx MjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIGhh c19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJ LnVsZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJwICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBE V19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0r CS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyog RFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCi0r CS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIx MjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MQkJCS8qIFRBRzogRFdfVEFH X2FycmF5X3R5cGUgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwku dWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdf Rk9STV9yZWY0ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweDIxCQkJLyogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBl ICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgy MgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1f ZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS51 bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1p bmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJ NAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90 eXBlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4ZQkJCS8qIERXX0ZPUk1fc3RycCAqLwot KwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjgJMHhiCQkJ LyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2Rpbmcg Ki8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwku dWxlYjEyOAk1CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgzNAkJCS8qIERXX1RB R192YXJpYWJsZSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hpbGRyZW4gKi8KLSsJLnVsZWIx MjgJMHgzNAkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJLnVsZWIxMjgJMHgwYwkJCS8qIERX X0ZPUk1fZmxhZyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxl YjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4CTB4MDIJCQkvKiBEV19B VF9sb2NhdGlvbiAqLwotKwkudWxlYjEyOAkweDA2CQkJLyogRFdfRk9STV9kYXRhNCAqLwotKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLwotKwotKwkudWxlYjEyOAk2CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgz NAkJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hpbGRyZW4g Ki8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkv KiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwot KwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4CTB4MgkJCS8q IERXX0FUX2xvY2F0aW9uICovCi0rCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCi0rCS51bGViMTI4CTcJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEy OAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGls ZHJlbiAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAqLwotKwkudWxl YjEyOAkweDBjCQkJLyogRFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19B VF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjEJCQkv KiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRoIGJsb2NrICovCi0rCS5ieXRlCQkweDAJCQkvKiBu byBjaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxl YjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4CTB4MjIJCQkvKiBEV19B VF9sb3dlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0r CS51bGViMTI4CTB4MmYJCQkvKiBEV19BVF91cHBlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGEJ CQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwot KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwotKwotKy8qIFN0cmluZyB0YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVidWdfc3Ry Ci0rLkxwcm9kdWNlcjoKLSsJLnN0cmluZwkJIkdOVSBDIDMuMy4zIgotKy5MY2hhcl9zdHI6Ci0r CS5zdHJpbmcJCSJjaGFyIgotKy5MdWludF9zdHI6Ci0rCS5zdHJpbmcJCSJ1bnNpZ25lZCBpbnQi Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0 LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCi1AQCAtMCwwICsxLDY2IEBACi0rIyBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUZXN0IHByaW50aW5nIHZhcmlhYmxlIHdpdGggZHlu YW1pYyBib3VuZHMgd2hpY2ggcmVmZXJlbmNlIGEgZGlmZmVyZW50Ci0rIyAoYXJ0aWZpY2lhbCBp biB0aGUgR0NDIGNhc2UpIHZhcmlhYmxlIGNvbnRhaW5pbmcgbG9jbGlzdCBhcyBpdHMgbG9jYXRp b24uCi0rIyBUaGlzIHRlc3RjYXNlIHVzZXMgdmFsdWUgKG5vdCBhZGRyZXNzKSBvZiB0aGUgcmVm ZXJlbmNlZCB2YXJpYWJsZToKLSsjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1 Zy5jZ2k/aWQ9NDM3NjIKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0 cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBz YW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQot KyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYq XQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBh cm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAg IHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSBkdzItYm91bmQtbG9jbGlzdAotK2lmIHsg W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9IFtsaXN0ICR7 dGVzdGZpbGV9LlMgbWFpbi5jXSB7fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFZl cmlmeSBpdCBiZWhhdmVzIGF0IGxlYXN0IGFzIGFuIHVuYm91bmQgYXJyYXkgd2l0aG91dCBpbmZl cmlvci4KLSsKLSsjIEZJWE1FOiBGU0YgR0RCIGNyYXNoZXMgZHVlIHRvICFoYXNfc3RhY2tfZnJh bWVzICgpLgotKyMgQnV0IGluIHByYWN0aWNlIHRoYXQgc2hvdWxkIG5vdCBoYXBwZW4uCi0rIyBo dHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00Mzc2MgotKyNzZXQg dGVzdCAicCBhX3N0cmluZyIKLSsjZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyMg ICAgLXJlICIgPSAweFxbMC05YS1mXF0rIFwic2Vlbm5vdHNlZW5cIlxyXG4kZ2RiX3Byb21wdCAk IiB7Ci0rIwlwYXNzICR0ZXN0Ci0rIyAgICB9Ci0rIyAgICAtcmUgIk5vIHJlZ2lzdGVyc1xcLlxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rIwlrZmFpbCAidmxhcmVncmVzc2lvbiIgJHRlc3QKLSsjICAg IH0KLSsjfQotKyMKLSsjZ2RiX3Rlc3QgInB0eXBlIGFfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFt2 YXJpYWJsZSBsZW5ndGhcXX0KLSsKLSsjIE5vdCBydW50b19tYWluIGFzIGR3Mi1ib3VuZC1sb2Ns aXN0LlMgaGFuZGxlcyBvbmx5IHRoZSBmaXJzdCBieXRlIG9mIG1haW4uCi0raWYgIVtydW50byAi Km1haW4iXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfdGVzdCAicCBhX3N0cmluZyIg eyA9ICJzZWVuIn0KLStnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcWzRc XX0KLSsKLStnZGJfdGVzdCAicCBiX3N0cmluZyIgeyA9ICgweFswLTlhLWZdKyApPyJzZWVubm90 c2VlbiJ9Ci0rZ2RiX3Rlc3QgInB0eXBlIGJfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFtcXX0KLSsK LSsjIFRoZSByZWdpc3RlciBjb250YWlucyB1bnByZWRpY3RhYmxlIHZhbHVlIC0gdGhlIGFycmF5 IHNpemUuCi0rZ2RiX3Rlc3QgInB0eXBlIHJlZ19zdHJpbmciIHt0eXBlID0gY2hhciBcWy0/WzAt OV0rXF19Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBl ZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1zdHJpcHBlZC5jCi1AQCAtMCwwICsxLDQyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rCi0rLyogVGhlIGZ1bmN0aW9u IGBmdW5jMScgdHJhY2VkIGludG8gbXVzdCBoYXZlIGRlYnVnIGluZm8gb24gb2Zmc2V0ID4gMDsK LSsgICAoRFdfVU5TTkQgKGF0dHIpKS4gIFRoaXMgaXMgdGhlIHJlYXNvbiBvZiBgZnVuYzAnIGV4 aXN0ZW5jZS4gICovCi0rCi0rdm9pZAotK2Z1bmMwKGludCBhLCBpbnQgYikKLSt7Ci0rfQotKwot Ky8qIGBmdW5jMScgYmVpbmcgdHJhY2VkIGludG8gbXVzdCBoYXZlIHNvbWUgYXJndW1lbnRzIHRv IGR1bXAuICAqLwotKwotK3ZvaWQKLStmdW5jMShpbnQgYSwgaW50IGIpCi0rewotKyAgZnVuYzAg KGEsYik7Ci0rfQotKwotK2ludAotK21haW4odm9pZCkKLSt7Ci0rICBmdW5jMSAoMSwgMik7Ci0r ICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1zdHJpcHBlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4 cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwCi1AQCAtMCwwICsxLDg0IEBACi0rIyBDb3B5 cmlnaHQgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBNaW5pbWFsIERXQVJGLTIgdW5p dCB0ZXN0Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2gg c3VwcG9ydCBEV0FSRi0yLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRh cmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAq LSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAgJiYgIVtpc3Rhcmdl dCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCi0rICAgICYm ICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4gMAotK30KLSsKLStp ZiB7W3VzZV9nZGJfc3R1Yl19IHsKLSsgICAgdW50ZXN0ZWQgInNraXBwaW5nIHRlc3QgYmVjYXVz ZSBvZiB1c2VfZ2RiX3N0dWIiCi0rICAgIHJldHVybiAtMQotK30KLSsKLStzZXQgdGVzdGZpbGUg ImR3Mi1zdHJpcHBlZCIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUg W3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9LnhdCi0rCi0rcmVtb3RlX2V4ZWMgYnVp bGQgInJtIC1mICR7YmluZmlsZX0iCi0rCi0rIyBnZXQgdGhlIHZhbHVlIG9mIGdjY19jb21waWxl ZAotK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7Ci0rICAgIHJldHVybiAtMQot K30KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gZ2NjIGFzIHdlIHVzZSBhZGRp dGlvbmFsX2ZsYWdzPUZJWE1FCi0raWYgeyRnY2NfY29tcGlsZWQgPT0gMH0gewotKyAgICByZXR1 cm4gMAotK30KLSsKLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9 LWdnZGIzfV0gIT0gIiIgfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStyZW1vdGVfZXhlYyBi dWlsZCAib2JqY29weSAtUiAuZGVidWdfbG9jICR7YmluZmlsZX0iCi0rc2V0IHN0cmlwX291dHB1 dCBbcmVtb3RlX2V4ZWMgYnVpbGQgIm9iamR1bXAgLWggJHtiaW5maWxlfSJdCi0rCi0rc2V0IHRl c3QgInN0cmlwcGluZyB0ZXN0IGZpbGUgcHJlc2VydmF0aW9uIgotK2lmIFsgcmVnZXhwICIuZGVi dWdfaW5mbyAiICRzdHJpcF9vdXRwdXRdICB7Ci0rICAgIHBhc3MgIiR0ZXN0ICguZGVidWdfaW5m byBwcmVzZXJ2ZWQpIgotK30gZWxzZSB7Ci0rICAgIGZhaWwgIiR0ZXN0ICguZGVidWdfaW5mbyBn b3QgYWxzbyBzdHJpcHBlZCkiCi0rfQotKwotK3NldCB0ZXN0ICJzdHJpcHBpbmcgdGVzdCBmaWxl IGZ1bmN0aW9uYWxpdHkiCi0raWYgWyByZWdleHAgIi5kZWJ1Z19sb2MgIiAkc3RyaXBfb3V0cHV0 XSAgewotKyAgICBmYWlsICIkdGVzdCAoLmRlYnVnX2xvYyBzdGlsbCBwcmVzZW50KSIKLSt9IGVs c2UgewotKyAgICBwYXNzICIkdGVzdCAoLmRlYnVnX2xvYyBzdHJpcHBlZCkiCi0rfQotKwotK2dk Yl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly Ci0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotKyMgRm9yIEMgcHJvZ3JhbXMsICJzdGFydCIgc2hv dWxkIHN0b3AgaW4gbWFpbigpLgotKwotK2dkYl90ZXN0ICJzdGFydCIgXAotKyAgICAgICAgICIu Km1haW4gXFwoXFwpIGF0IC4qIiBcCi0rICAgICAgICAgInN0YXJ0IgotK2dkYl90ZXN0ICJzdGVw IiBcCi0rICAgICAgICAgImZ1bmMuKiBcXCguKlxcKSBhdCAuKiIgXAotKyAgICAgICAgICJzdGVw IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJl ci1kYXRhLWxvY2F0aW9uLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1t ZW1iZXItZGF0YS1sb2NhdGlvbi5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEt bG9jYXRpb24uUwotQEAgLTAsMCArMSw4MyBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwotKwotKy8qIERlYnVnIGluZm9ybWF0aW9uICovCi0rCi0rCS5zZWN0aW9uIC5k ZWJ1Z19pbmZvCi0rLkxjdTFfYmVnaW46Ci0rCS8qIENVIGhlYWRlciAqLwotKwkuNGJ5dGUJLkxj dTFfZW5kIC0gLkxjdTFfc3RhcnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCi0r LkxjdTFfc3RhcnQ6Ci0rCS4yYnl0ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KLSsJLjRieXRl CS5MYWJicmV2MV9iZWdpbgkJCS8qIE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCi0rCS5i eXRlCTQJCQkJLyogUG9pbnRlciBzaXplICovCi0rCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEy OCAxCQkJCS8qIEFiYnJldjogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYXNjaWkJImR3Mi1z dHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uY1wwIgkvKiBEV19BVF9uYW1lICovCi0rCS5hc2Np aQkiR05VIEMgNC4zLjJcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkuYnl0ZQkxCQkJCS8q IERXX0FUX2xhbmd1YWdlIChDKSAqLwotKwotKy5MdHlwZV91Y2hhcjoKLSsJLnVsZWIxMjgJMgkJ CS8qIEFiYnJldjogRFdfVEFHX3N0cnVjdHVyZV90eXBlICovCi0rCS5hc2NpaQkJInNvbWVfc3Ry dWN0XDAiCQkvKiBEV19BVF9uYW1lICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERX X1RBR19tZW1iZXIgKi8KLSsJLmFzY2lpCQkiZmllbGRcMCIJCS8qIERXX0FUX25hbWUgKi8KLSsJ LmJ5dGUJCTAJCQkvKiBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiAqLwotKwotKwkuYnl0ZQkJ MAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBzb21lX3N0cnVjdCAqLwotKwotKwkuYnl0ZQkJMAkJ CS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKwotKy5MY3UxX2VuZDoKLSsKLSsvKiBBYmJy ZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgotKy5MYWJicmV2MV9iZWdpbjoK LSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBE V19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCi0r CS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdf Rk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0r CS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MTMJCQkv KiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEy OAkweDEzCQkJLyogRFdfVEFHX3N0cnVjdHVyZV90eXBlICovCi0rCS5ieXRlCQkxCQkJLyogaGFz X2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIx MjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJMwkJ CS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MGQJCQkvKiBEV19UQUdfbWVtYmVyICov Ci0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERX X0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVs ZWIxMjgJMHgzOAkJCS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCi0rCS51bGViMTI4 CTB4MGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9j YXRpb24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRh dGEtbG9jYXRpb24uZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRp b24uZXhwCi1AQCAtMCwwICsxLDM3IEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0r IyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FS Ri0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRh cmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAq LSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAgJiYgIVtpc3Rhcmdl dCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCi0rICAgICYm ICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4gMAotK30KLSsKLStz ZXQgdGVzdGZpbGUgImR3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24iCi0rc2V0IHNyY2Zp bGUgJHt0ZXN0ZmlsZX0uUwotK3NldCBiaW5maWxlICR7dGVzdGZpbGV9LngKLSsKLStpZiAgeyBb Z2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIltzdGFuZGFyZF9v dXRwdXRfZmlsZSAke2JpbmZpbGV9XSIgb2JqZWN0IHtub2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAg IHJldHVybiAtMQotK30KLSsKLStjbGVhbl9yZXN0YXJ0ICRiaW5maWxlCi0rCi0rZ2RiX3Rlc3Qg InB0eXBlIHN0cnVjdCBzb21lX3N0cnVjdCIgInR5cGUgPSBzdHJ1Y3Qgc29tZV9zdHJ1Y3Qge1xb XHJcbiBcdFxdKnZvaWQgZmllbGQ7XFtcclxuIFx0XF0qfSIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuUyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5n ZS1uby10eXBlLlMKLUBAIC0wLDAgKzEsMTIxIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsKLSsJLnNlY3Rpb24J LmRhdGEKLSt2YXJkYXRhOgotKwkucmVwdAkJMTI5Ci0rCS5hc2NpaQkJIngiCi0rCS5lbmRyCi0r CS5hc2NpaQkJIlVOU0VFTlwwIgotKwotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotKy5MY3UxX2Jl Z2luOgotKwkuNGJ5dGUJCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CS8qIExlbmd0aCBvZiBDb21w aWxhdGlvbiBVbml0ICovCi0rLkxjdTFfc3RhcnQ6Ci0rCS4yYnl0ZQkJMgkJCS8qIERXQVJGIHZl cnNpb24gbnVtYmVyICovCi0rCS40Ynl0ZQkJLkxkZWJ1Z19hYmJyZXYwCQkvKiBPZmZzZXQgSW50 byBBYmJyZXYuIFNlY3Rpb24gKi8KLSsJLmJ5dGUJCTQJCQkvKiBQb2ludGVyIFNpemUgKGluIGJ5 dGVzKSAqLwotKwotKwkvKiBDVSBkaWUgKi8KLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldjogRFdf VEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYXNjaWkJCSJHTlUgQyAzLjMuM1wwIgkJLyogRFdfQVRf cHJvZHVjZXIgKi8KLSsJLmJ5dGUJCTIJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgLSAgKi8KLSsK LSsuTGFycmF5X3R5cGU6Ci0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19hcnJheV90 eXBlICovCi0rCS40Ynl0ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAq LwotKwotKwkudWxlYjEyOAk4CQkJLyogQWJicmV2OiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRo b3V0IERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwot KwkuYnl0ZQkJMTI4CQkJLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KLSsKLSsJLmJ5dGUJCTAJCQkv KiBFbmQgb2YgY2hpbGRyZW4gb2YgZGllICovCi0rCi0rLkxjaGFyX3R5cGU6Ci0rCS51bGViMTI4 CTQJCQkvKiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmFzY2lpCQkiY2hhclwwIgkJ LyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwku Ynl0ZQkJNgkJCS8qIERXX0FUX2VuY29kaW5nICovCi0rCi0rCS51bGViMTI4CTYJCQkvKiBBYmJy ZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuYXNjaWkJCSJub3R5cGVf c3RyaW5nXDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLjRieXRlCQkuTGFycmF5X3R5cGUtLkxjdTFf YmVnaW4gLyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0 aW9uICovCi0rMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KLSsJLjRieXRlCQl2YXJk YXRhCQkJLyogICA8YWRkcj4gKi8KLSsyOgotKwotKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGls ZHJlbiBvZiBDVSAqLwotKy5MY3UxX2VuZDoKLSsKLSsJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgot Ky5MZGVidWdfYWJicmV2MDoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51 bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRlCQkweDEJCQkv KiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1Y2VyICov Ci0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MTMJ CQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGEx ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxl YjEyOAkweDEJCQkvKiBUQUc6IERXX1RBR19hcnJheV90eXBlICovCi0rCS5ieXRlCQkweDEJCQkv KiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8K LSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxl YjEyOAk0CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19i YXNlX3R5cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCi0rCS51bGViMTI4 CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJp bmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS51bGViMTI4 CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgzZQkJCS8qIERXX0FUX2Vu Y29kaW5nICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsKLSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MzQJCQkv KiBEV19UQUdfdmFyaWFibGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCi0r CS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdf Rk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVs ZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOAkweDIJCQkvKiBEV19B VF9sb2NhdGlvbiAqLwotKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLwotKwotKwkudWxlYjEyOAk4CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgy MQkJCS8qIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGhvdXQgRFdfQVRfdHlwZSAqLwotKwkuYnl0 ZQkJMHgwCQkJLyogbm8gY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgyMgkJCS8qIERXX0FUX2xv d2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVs ZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJCS8q IERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdl LW5vLXR5cGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5nZS1uby10 eXBlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5leHAKLUBAIC0wLDAgKzEs MzkgQEAKLSsjIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLStsb2FkX2xpYiBkd2FyZi5leHAKLSsK LSsjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODA2OTIwCi0r IyByZWFkX3N1YnJhbmdlX3R5cGUgPFRZUEVfQ09ERSAoYmFzZV90eXBlKSA9PSBUWVBFX0NPREVf Vk9JRD4gcmVpbml0aWFsaXphdGlvbgotKyMgb2YgQkFTRV9UWVBFIHdhcyBkb25lIHRvbyBsYXRl LCBpdCBhZmZlY3RzIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGhvdXQKLSsjIHNwZWNpZmllZCBE V19BVF90eXBlLCBwcmVzZW50IG9ubHkgaW4gWExGIHByb2R1Y2VkIGNvZGUuCi0rCi0rIyBUaGlz IHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFu ZCB1c2UgZ2FzLgotK2lmIHshW2R3YXJmMl9zdXBwb3J0XX0gewotKyAgICByZXR1cm4gMAotK30K LSsKLStzZXQgdGVzdGZpbGUgZHcyLXN1YnJhbmdlLW5vLXR5cGUKLStzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3NldCBiaW5maWxlIFtz dGFuZGFyZF9vdXRwdXRfZmlsZSAke2V4ZWN1dGFibGV9XQotKwotK2lmIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBvYmplY3Qge31d ICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkZXhlY3V0 YWJsZQotKwotK2dkYl90ZXN0ICJwdHlwZSBub3R5cGVfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFsx MjlcXX0KLStnZGJfdGVzdCAicCBub3R5cGVfc3RyaW5nIiAiID0gJ3gnIDxyZXBlYXRzIDEyOSB0 aW1lcz4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJp ZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCi1AQCAtMCwwICsxLDQyIEBACi0rIyBDb3B5cmlnaHQg MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotKyMgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBBcnJheSBlbGVtZW50IHN0cmlkZSBt dXN0IG5vdCBiZQotKyMgc3BlY2lmaWVkIGluIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgYnV0IGlu IGEgbnVtYmVyIG9mIGJ5dGVzIGluc3RlYWQuCi0rIyBPcmlnaW5hbCBwcm9ibGVtOgotKyMgKGdk YikgcCBjNDBwdCgxKQotKyMgJDEgPSAnMC1oZWxsbycsICcgJyA8cmVwZWF0cyAzMyB0aW1lcz4K LSsjIChnZGIpIHAgYzQwcHQoMikKLSsjIHdhcm5pbmc6IEZvcnRyYW4gYXJyYXkgc3RyaWRlIG5v dCBkaXZpc2libGUgYnkgdGhlIGVsZW1lbnQgc2l6ZQotKwotK3NldCB0ZXN0ZmlsZSBkd2FyZi1z dHJpZGUKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLSsKLStpZiB7IFtwcmVwYXJlX2Zv cl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBm OTB9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVu IHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAg IGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJi cmVhay1oZXJlIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIgIi4q YnJlYWstaGVyZS4qIgotK2dkYl90ZXN0ICJwIGM0MHB0KDEpIiAiID0gJzAtaGVsbG8uKiIKLStn ZGJfdGVzdCAicCBjNDBwdCgyKSIgIiA9ICcxLWhlbGxvLioiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCi1A QCAtMCwwICsxLDQwIEBACi0rISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgot KyEKLSshIEZpbGUgd3JpdHRlbiBieSBBbGFuIE1hdHN1b2thLgotKwotK3Byb2dyYW0gcmVwcm8K LSsKLSsgIHR5cGUgc21hbGxfc3RyaWRlCi0rICAgICBjaGFyYWN0ZXIqNDAgbG9uZ19zdHJpbmcK LSsgICAgIGludGVnZXIgICAgICBzbWFsbF9wYWQKLSsgIGVuZCB0eXBlIHNtYWxsX3N0cmlkZQot KwotKyAgdHlwZShzbWFsbF9zdHJpZGUpLCBkaW1lbnNpb24gKDIwKSwgdGFyZ2V0IDo6IHVucGxl YXNhbnQKLSsgIGNoYXJhY3Rlcio0MCwgcG9pbnRlciwgZGltZW5zaW9uKDopOjogYzQwcHQKLSsK LSsgIGludGVnZXIgaQotKwotKyAgZG8gaSA9IDAsMTkKLSsgICAgIHVucGxlYXNhbnQoaSsxKSVz bWFsbF9wYWQgPSBpKzEKLSsgICAgIHVucGxlYXNhbnQoaSsxKSVsb25nX3N0cmluZyA9IGNoYXIg KGljaGFyKCcwJykgKyBpKSAvLyAnLWhlbGxvJwotKyAgZW5kIGRvCi0rCi0rICBjNDBwdCA9PiB1 bnBsZWFzYW50JWxvbmdfc3RyaW5nCi0rCi0rICBwcmludCAqLCBjNDBwdCAgISBicmVhay1oZXJl Ci0rCi0rZW5kIHByb2dyYW0gcmVwcm8KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4 cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKLUBAIC0wLDAgKzEsMTU0IEBACi0rIyBDb3B5cmln aHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4g YnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotKyMgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBJdCBjb250YWlucyB0ZXN0cyBm b3IgZHluYW1pY2FsbHkKLSsjIGFsbG9jYXRlZCBGb3J0cmFuIGFycmF5cy4KLSsjIEl0IGRlcGVu ZHMgb24gdGhlIEdDQyBkeW5hbWljIEZvcnRyYW4gYXJyYXlzIERXQVJGIHN1cHBvcnQ6Ci0rIyAJ aHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjI0NAotKwotK3Nl dCB0ZXN0ZmlsZSAiZHluYW1pYyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQg YmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0rCi0raWYgIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9l eGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0r Z2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAg cGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVl Ci0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ4LWluaXQi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWluaXQiCi0rCi0rIyBodHRwOi8v d3d3LmNzLnJwaS5lZHUvfnN6eW1hbnNrL09PRjkwL2J1Z3MuaHRtbCM1Ci0rIyBEbyBub3Q6IGdk Yl90ZXN0ICJwIHZhcngiICJcXCRcWzAtOVxdKiA9IDxub3QgYWxsb2NhdGVkPiIgInAgdmFyeCB1 bmFsbG9jYXRlZCIKLSsjIERvIG5vdDogZ2RiX3Rlc3QgInB0eXBlIHZhcngiIHt0eXBlID0gcmVh bFwoa2luZD00XCkgXCg6LDosOlwpfSAicHR5cGUgdmFyeCB1bmFsbG9jYXRlZCIKLSsjIERvIG5v dDogZ2RiX3Rlc3QgInAgdmFyeCgxLDUsMTcpIiB7bm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcKHZl Y3RvciBub3QgYWxsb2NhdGVkXCl9ICJwIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKLSsjIERv IG5vdDogZ2RiX3Rlc3QgInAgdmFyeCgxLDUsMTcpPTEiIHtubyBzdWNoIHZlY3RvciBlbGVtZW50 IFwodmVjdG9yIG5vdCBhbGxvY2F0ZWRcKX0gInAgdmFyeCgxLDUsMTcpPTEgdW5hbGxvY2F0ZWQi Ci0rIyBEbyBub3Q6IGdkYl90ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNykiIHtubyBzdWNoIHZlY3Rv ciBlbGVtZW50IFwodmVjdG9yIG5vdCBhbGxvY2F0ZWRcKX0gInB0eXBlIHZhcngoMSw1LDE3KSB1 bmFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFy eC1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRl ZCIKLSsjICQxID0gKCggKCAwLCAwLCAwLCAwLCAwLCAwKSAoIDAsIDAsIDAsIDAsIDAsIDApIC0t LSAsIDApICkgKCAoIDAsIDAsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngi ICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCksIGFsbG9jYXRhYmxlIFxcKDYsNToxNSwx NzoyOFxcKSIgInB0eXBlIHZhcnggYWxsb2NhdGVkIgotKyMgSW50ZWwgRm9ydHJhbiBDb21waWxl ciAxMC4xLjAwOCB1c2VzIC0xIHRoZXJlLCBHQ0MgdXNlcyAxLgotK2dkYl90ZXN0ICJwIGwiICJc XCRcWzAtOVxdKiA9IChcXC5UUlVFXFwufDQyOTQ5NjcyOTUpIiAicCBsIGlmIHZhcnggYWxsb2Nh dGVkIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ4LWZpbGxl ZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZmlsbGVkIgotK2dkYl90ZXN0 ICJwIHZhcngoMiwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA2IgotK2dkYl90ZXN0ICJwIHZhcngo MSwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA3IgotK2dkYl90ZXN0ICJwIHZhcngoMiwgNiwgMTgp IiAiXFwkXFswLTlcXSogPSA4IgotK2dkYl90ZXN0ICJwIHZhcngoNiwgMTUsIDI4KSIgIlxcJFxb MC05XF0qID0gOSIKLSsjIGh0dHA6Ly93d3cuY3MucnBpLmVkdS9+c3p5bWFuc2svT09GOTAvYnVn cy5odG1sIzUKLSsjIERvIG5vdDogZ2RiX3Rlc3QgInAgdmFydiIgIlxcJFxbMC05XF0qID0gPG5v dCBhc3NvY2lhdGVkPiIgInAgdmFydiB1bmFzc29jaWF0ZWQiCi0rIyBEbyBub3Q6IGdkYl90ZXN0 ICJwdHlwZSB2YXJ2IiB7dHlwZSA9IHJlYWxcKGtpbmQ9NFwpIFwoOiw6LDpcKX0gInB0eXBlIHZh cnYgdW5hc3NvY2lhdGVkIgotKwotK3NldCB0ZXN0ICJvdXRwdXQgdmFyeCIKLStnZGJfdGVzdF9t dWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiXm91dHB1dCB2YXJ4XHJcblxbKCkgLDY3 ODkuXF0qJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtYXNzb2NpYXRlZCJdCi0rZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicCB2 YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIgInAgdmFyeCgzLCA3LCAxOSkgd2l0aCB2 YXJ2IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSkiICJcXCRcWzAtOVxd KiA9IDYiICJwIHZhcnYoMywgNywgMTkpIGFzc29jaWF0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENv bXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0rZ2RiX3Rlc3QgInAg bCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYgdmFydiBh c3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IHJlYWwoXFwoa2luZD00 XFwpfFxcKjQpLCBhbGxvY2F0YWJsZSBcXCg2LDU6MTUsMTc6MjhcXCkiICJwdHlwZSB2YXJ4IHdp dGggdmFydiBhc3NvY2lhdGVkIgotKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCB1 c2VzIHRoZSBwb2ludGVyIHR5cGUuCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnYiICJ0eXBlID0gKFBU UiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg2LDU6MTUsMTc6MjhcXClc XCk/IiAicHR5cGUgdmFydiBhc3NvY2lhdGVkIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ2YXJ2LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZhcnYtZmlsbGVkIgotK2dkYl90ZXN0ICJwIHZhcngoMywgNywgMTkpIiAiXFwkXFswLTlcXSog PSAxMCIgInAgdmFyeCgzLCA3LCAxOSkgd2l0aCB2YXJ2IGZpbGxlZCIKLStnZGJfdGVzdCAicCB2 YXJ2KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAiICJwIHZhcnYoMywgNywgMTkpIGZpbGxl ZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydi1kZWFzc29j aWF0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWRlYXNzb2NpYXRlZCIK LSsjIFRoZSBsYXR0ZXIgb25lIGlzIGZvciB0aGUgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4x LjAwOCBwb2ludGVyIHR5cGUuCi0rZ2RiX3Rlc3QgInAgdmFydiIgIlxcJFxbMC05XF0qID0gKDxu b3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBv YmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IGRl YXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIge3R5cGUgPSByZWFsXChraW5kPTRc KSBcKDosOiw6XCl9ICJwdHlwZSB2YXJ2IGRlYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicCBsIiAi XFwkXFswLTlcXSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ2IGRlYXNzb2NpYXRlZCIKLStn ZGJfdGVzdCAicCB2YXJ2KDEsNSwxNykiIHtubyBzdWNoIHZlY3RvciBlbGVtZW50IFwodmVjdG9y IG5vdCBhc3NvY2lhdGVkXCl9Ci0rZ2RiX3Rlc3QgInB0eXBlIHZhcnYoMSw1LDE3KSIge25vIHN1 Y2ggdmVjdG9yIGVsZW1lbnQgXCh2ZWN0b3Igbm90IGFzc29jaWF0ZWRcKX0KLSsKLStnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1kZWFsbG9jYXRlZCJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFy eCIgIlxcJFxbMC05XF0qID0gPG5vdCBhbGxvY2F0ZWQ+IiAicCB2YXJ4IGRlYWxsb2NhdGVkIgot K2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiB7dHlwZSA9IHJlYWxcKGtpbmQ9NFwpLCBhbGxvY2F0YWJs ZSBcKDosOiw6XCl9ICJwdHlwZSB2YXJ4IGRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwIGwiICJc XCRcWzAtOVxdKiA9IFxcLkZBTFNFXFwuIiAicCBsIGlmIHZhcnggZGVhbGxvY2F0ZWQiCi0rZ2Ri X3Rlc3QgInAgdmFyeCgxLDUsMTcpIiB7bm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcKHZlY3RvciBu b3QgYWxsb2NhdGVkXCl9ICJwIHZhcngoMSw1LDE3KSBkZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAi cHR5cGUgdmFyeCgxLDUsMTcpIiB7bm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcKHZlY3RvciBub3Qg YWxsb2NhdGVkXCl9ICJwdHlwZSB2YXJ4KDEsNSwxNykgZGVhbGxvY2F0ZWQiCi0rCi0rZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnktcGFzc2VkIl0KLStnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAidmFyeS1wYXNzZWQiCi0rIyAkMSA9ICgoICggMSwgMSwgMSwgMSwg MSwgMSkgKCAxLCAxLCAxLCAxLCAxLCAxKSAtLS0gLCAxKSApICggKCAxLCAxLCAuLi4pIC4uLikg Li4uKQotK2dkYl90ZXN0ICJwIHZhcnkiICJcXCRcWzAtOVxdKiA9IFxcKFxbKCkxLCAuXF0qXFwp IgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ5LWZpbGxlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnktZmlsbGVkIgotK2dkYl90ZXN0ICJw dHlwZSB2YXJ5IiAidHlwZSA9IHJlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDEwLDEwXFwpIgot K2dkYl90ZXN0ICJwIHZhcnkoMSwgMSkiICJcXCRcWzAtOVxdKiA9IDgiCi0rZ2RiX3Rlc3QgInAg dmFyeSgyLCAyKSIgIlxcJFxbMC05XF0qID0gOSIKLStnZGJfdGVzdCAicCB2YXJ5KDEsIDMpIiAi XFwkXFswLTlcXSogPSAxMCIKLSsjICQxID0gKCggKCAzLCAzLCAzLCAzLCAzLCAzKSAoIDMsIDMs IDMsIDMsIDMsIDMpIC0tLSAsIDMpICkgKCAoIDMsIDMsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rl c3QgInAgdmFydyIgIlxcJFxbMC05XF0qID0gXFwoXFsoKTMsIC5cXSpcXCkiCi0rCi0rZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnctYWxtb3N0ZmlsbGVkIl0KLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAidmFydy1hbG1vc3RmaWxsZWQiCi0rZ2RiX3Rlc3QgInB0 eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNSw0LDNcXCkiCi0r Z2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIgIlxcJFxbMC05XF0qID0gMSIKLSsjICQxID0gKCgg KCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUsIDUsIDUsIDUsIDUpIC0tLSAsIDUpICkgKCAoIDUs IDUsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFydyIgIlxcJFxbMC05XF0qID0gXFwo ICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1LCAuXF0qXFwpIiAicCB2YXJ3IGZpbGxlZCIKLSsj ICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRyYW4gY29tcGlsZXJzIG1heSBjb3B5 IHRoZSB2YWx1ZXMgaW50byB0aGUKLSsjIG91dGVyIGZ1bmN0aW9uIG9ubHkgb24gdGhlIGV4aXQg b2YgdGhlIGlubmVyIGZ1bmN0aW9uLgotKyMgV2UgbmVlZCBib3RoIHZhcmlhbnRzIGFzIGRlcGVu ZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25hbGx5IG1heSBzdGlsbCBiZQotKyMgZXhlY3V0aW5n IHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0ZXIgYGZpbmlzaCcuCi0rZ2RiX3Rlc3QgImZpbmlz aCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8Y2FsbCBmb28gXFwoeCwgelxcKDI6NiwgNDo3LCA2 OjhcXClcXCkpIgotK2dkYl90ZXN0ICJwIHooMiw0LDUpIiAiXFwkXFswLTlcXSogPSAzIgotK2dk Yl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFswLTlcXSogPSA2IgotK2dkYl90ZXN0ICJwIHooMiw0 LDcpIiAiXFwkXFswLTlcXSogPSA1IgotK2dkYl90ZXN0ICJwIHooNCw0LDYpIiAiXFwkXFswLTlc XSogPSAxIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ6LWFs bW9zdGZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnotYWxtb3N0Zmls bGVkIgotKyMgR0NDIHVzZXMgdGhlIHBvaW50ZXIgdHlwZSBoZXJlLCBJbnRlbCBGb3J0cmFuIENv bXBpbGVyIDEwLjEuMDA4IGRvZXMgbm90LgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ6IiAidHlwZSA9 IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoXFwqXFwpXFwpPyIK LSsjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggaGFzIGEgYnVnIGhlcmUgLSAoMjox MSw3OjcpCi0rIyBhcyBpdCBwcm9kdWNlcyBEV19BVF9sb3dlcl9ib3VuZCA9PSBEV19BVF91cHBl cl9ib3VuZCA9PSA3LgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ0IiAidHlwZSA9IChQVFIgVE8gLT4g XFwoICk/cmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoMjoxMSw3OlxcKlxcKVxcKT8iCi0rZ2Ri X3Rlc3QgInAgdmFyeiIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgotK2dkYl90ZXN0ICJwIHZhcnQi ICJcXCRcWzAtOVxdKiA9IFxcKFxcKSIKLStnZGJfdGVzdCAicCB2YXJ6KDMpIiAiXFwkXFswLTlc XSogPSA0IgotKyMgbWFwcyB0byBmb286OnZhcnkoMSwxKQotK2dkYl90ZXN0ICJwIHZhcnQoMiw3 KSIgIlxcJFxbMC05XF0qID0gOCIKLSsjIG1hcHMgdG8gZm9vOjp2YXJ5KDIsMikKLStnZGJfdGVz dCAicCB2YXJ0KDMsOCkiICJcXCRcWzAtOVxdKiA9IDkiCi0rIyBtYXBzIHRvIGZvbzo6dmFyeSgx LDMpCi0rZ2RiX3Rlc3QgInAgdmFydCgyLDkpIiAiXFwkXFswLTlcXSogPSAxMCIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5mOTAKLUBAIC0w LDAgKzEsOTggQEAKLSshIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsh IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQot KyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4K LSshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQu Y29tPi4KLSshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2Nodmls IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5lIGJhegotKyAgcmVh bCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2YXJ4ICg6LCA6LCA6KQotKyAgcmVhbCwgcG9pbnRl ciA6OiB2YXJ2ICg6LCA6LCA6KQotKyAgcmVhbCwgdGFyZ2V0IDo6IHZhcnUgKDEsIDIsIDMpCi0r ICBsb2dpY2FsIDo6IGwKLSsgIGFsbG9jYXRlICh2YXJ4ICgxOjYsIDU6MTUsIDE3OjI4KSkgICAg ICAgICAgICAhIHZhcngtaW5pdAotKyAgbCA9IGFsbG9jYXRlZCAodmFyeCkKLSsgIHZhcngoOiwg OiwgOikgPSA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcngtYWxsb2NhdGVkCi0r ICB2YXJ4KDEsIDUsIDE3KSA9IDcKLSsgIHZhcngoMiwgNiwgMTgpID0gOAotKyAgdmFyeCg2LCAx NSwgMjgpID0gOQotKyAgdmFydiA9PiB2YXJ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICEgdmFyeC1maWxsZWQKLSsgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQotKyAgdmFydigzLCA3 LCAxOSkgPSAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydi1hc3NvY2lhdGVkCi0r ICB2YXJ2ID0+IG51bGwgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWZp bGxlZAotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICBkZWFsbG9jYXRlICh2YXJ4KSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWRlYXNzb2NpYXRlZAotKyAgbCA9IGFsbG9j YXRlZCAodmFyeCkKLSsgIHZhcnUoOiwgOiwgOikgPSAxMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIHZhcngtZGVhbGxvY2F0ZWQKLSsgIGFsbG9jYXRlICh2YXJ2ICgxOjYsIDU6MTUsIDE3 OjI4KSkKLSsgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQotKyAgdmFydig6LCA6LCA6KSA9IDYKLSsg IHZhcnYoMSwgNSwgMTcpID0gNwotKyAgdmFydigyLCA2LCAxOCkgPSA4Ci0rICB2YXJ2KDYsIDE1 LCAyOCkgPSA5Ci0rICBkZWFsbG9jYXRlICh2YXJ2KQotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYp Ci0rICB2YXJ2ID0+IHZhcnUKLSsgIHZhcnYoMSwgMSwgMSkgPSA2Ci0rICB2YXJ2KDEsIDIsIDMp ID0gNwotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rZW5kIHN1YnJvdXRpbmUgYmF6Ci0rc3Vi cm91dGluZSBmb28gKHZhcnksIHZhcncpCi0rICByZWFsIDo6IHZhcnkgKDosIDopCi0rICByZWFs IDo6IHZhcncgKDosIDosIDopCi0rICB2YXJ5KDosIDopID0gNCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJ5LXBhc3NlZAotKyAgdmFyeSgxLCAxKSA9IDgKLSsgIHZhcnkoMiwg MikgPSA5Ci0rICB2YXJ5KDEsIDMpID0gMTAKLSsgIHZhcncoOiwgOiwgOikgPSA1ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhIHZhcnktZmlsbGVkCi0rICB2YXJ3KDEsIDEsIDEpID0gNgot KyAgdmFydygyLCAyLCAyKSA9IDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydy1h bG1vc3RmaWxsZWQKLStlbmQgc3Vicm91dGluZSBmb28KLStzdWJyb3V0aW5lIGJhciAodmFyeiwg dmFydCkKLSsgIHJlYWwgOjogdmFyeiAoKikKLSsgIHJlYWwgOjogdmFydCAoMjoxMSwgNzoqKQot KyAgdmFyeigxOjMpID0gNAotKyAgdmFyeigyKSA9IDUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICEgdmFyei1hbG1vc3RmaWxsZWQKLSsgIHZhcnQoMiw3KSA9IHZhcnQoMiw3KQot K2VuZCBzdWJyb3V0aW5lIGJhcgotK3Byb2dyYW0gdGVzdAotKyAgaW50ZXJmYWNlCi0rICAgIHN1 YnJvdXRpbmUgZm9vICh2YXJ5LCB2YXJ3KQotKyAgICByZWFsIDo6IHZhcnkgKDosIDopCi0rICAg IHJlYWwgOjogdmFydyAoOiwgOiwgOikKLSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRl cmZhY2UKLSsgIGludGVyZmFjZQotKyAgICBzdWJyb3V0aW5lIGJhciAodmFyeiwgdmFydCkKLSsg ICAgcmVhbCA6OiB2YXJ6ICgqKQotKyAgICByZWFsIDo6IHZhcnQgKDI6MTEsIDc6KikKLSsgICAg ZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIHJlYWwgOjogeCAoMTAsIDEwKSwg eSAoNSksIHooOCwgOCwgOCkKLSsgIHgoOiw6KSA9IDEKLSsgIHkoOikgPSAyCi0rICB6KDosOiw6 KSA9IDMKLSsgIGNhbGwgYmF6Ci0rICBjYWxsIGZvbyAoeCwgeigyOjYsIDQ6NywgNjo4KSkKLSsg IGNhbGwgYmFyICh5LCB4KQotKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3IuIHggKDIsIDIpIC5u ZS4gOSAub3IuIHggKDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAotKyAgaWYgKHggKDEsIDMpIC5u ZS4gMTApIGNhbGwgYWJvcnQKLSsgIGlmICh6ICgyLCA0LCA2KSAubmUuIDYgLm9yLiB6ICgzLCA1 LCA3KSAubmUuIDcgLm9yLiB6ICgyLCA0LCA3KSAubmUuIDUpIGNhbGwgYWJvcnQKLSsgIGlmIChh bnkgKHkgLm5lLiAoLzQsIDUsIDQsIDIsIDIvKSkpIGNhbGwgYWJvcnQKLSsgIGNhbGwgZm9vICh0 cmFuc3Bvc2UgKHgpLCB6KQotKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3IuIHggKDIsIDIpIC5u ZS4gOSAub3IuIHggKDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAotKyAgaWYgKHggKDMsIDEpIC5u ZS4gMTApIGNhbGwgYWJvcnQKLStlbmQKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N0cmluZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N0cmluZy5leHAKLUBAIC0wLDAgKzEsNzEgQEAKLSsjIENvcHlyaWdodCAy MDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsKLSsjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rIyBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEl0IGNvbnRhaW5zIHRlc3RzIGZvciBG b3J0cmFuCi0rIyBzdHJpbmdzIHdpdGggZHluYW1pYyBsZW5ndGguCi0rCi0rc2V0IHRlc3RmaWxl ICJzdHJpbmciCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCi0rc2V0IGJpbmZpbGUgW3N0 YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9XQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgZjkwIHF1aWV0fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21w aWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9z dGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7 YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291 bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLStn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyLWluaXQiXQotK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJ2YXItaW5pdCIKLStnZGJfdGVzdCAicHR5cGUgYyIgInR5cGUg PSBjaGFyYWN0ZXIoXFwoa2luZD0xXFwpfFxcKjEpIgotK2dkYl90ZXN0ICJwdHlwZSBkIiAidHlw ZSA9IGNoYXJhY3RlcihcXChraW5kPThcXCl8XFwqOCkiCi0rIyBGb3J0cmFuOiBTdXBwb3J0IHBv aW50ZXJzIHRvIGR5bmFtaWMgdHlwZXMuCi0rc2V0dXBfa2ZhaWwgZ2RiL25ubm5uICIqLSotKiIK LStnZGJfdGVzdCAicHR5cGUgZSIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQp IgotKyMgRm9ydHJhbjogU3VwcG9ydCBwb2ludGVycyB0byBkeW5hbWljIHR5cGVzLgotK3NldHVw X2tmYWlsIGdkYi9ubm5ubiAiKi0qLSoiCi0rZ2RiX3Rlc3QgInB0eXBlIGYiICJ0eXBlID0gY2hh cmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg3LDg6MTBcXCkiCi0rIyBGb3J0cmFuOiBTdXBw b3J0IHBvaW50ZXJzIHRvIGR5bmFtaWMgdHlwZXMuCi0rc2V0dXBfa2ZhaWwgZ2RiL25ubm5uICIq LSotKiIKLStnZGJfdGVzdCAicHR5cGUgKmUiICJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2Yg YSBub24tcG9pbnRlciB2YWx1ZS4iCi0rIyBGb3J0cmFuOiBTdXBwb3J0IHBvaW50ZXJzIHRvIGR5 bmFtaWMgdHlwZXMuCi0rc2V0dXBfa2ZhaWwgZ2RiL25ubm5uICIqLSotKiIKLStnZGJfdGVzdCAi cHR5cGUgKmYiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg3XFwpIgot K2dkYl90ZXN0ICJwIGMiICJcXCRcWzAtOVxdKiA9ICdjJyIKLStnZGJfdGVzdCAicCBkIiAiXFwk XFswLTlcXSogPSAnZCAgICAgICAnIgotK2dkYl90ZXN0ICJwIGUiICJcXCRcWzAtOVxdKiA9ICdn ICAgJyIKLSsjIEZvcnRyYW46IFN1cHBvcnQgcG9pbnRlcnMgdG8gZHluYW1pYyB0eXBlcy4KLStz ZXR1cF9rZmFpbCBnZGIvbm5ubm4gIiotKi0qIgotK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxd KiA9IFxcKFxcKCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAn LCAnaCAgICdcXCkgXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAn aCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAg ICcsICdoICAgJywgJ2ggICAnXFwpIFxcKSIKLStnZGJfdGVzdCAicCAqZSIgIkF0dGVtcHQgdG8g dGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKLStnZGJfdGVzdCAicCAqZiIg IkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKLSsKLStn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyLWZpbmlzaCJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5pc2giCi0rZ2RiX3Rlc3QgInAgZSIgIlxcJFxb MC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIKLSsjIEZvcnRyYW46IFN1cHBvcnQgcG9pbnRl cnMgdG8gZHluYW1pYyB0eXBlcy4KLStzZXR1cF9rZmFpbCBnZGIvbm5ubm4gIiotKi0qIgotK2dk Yl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcsICdmICAgJywgJ2YgICAn LCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmMiAgJywgJ2YgICAnLCAn ZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCggJ2YgICAnLCAnZiAg ICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKSIgInAgKmYg cmUtc2V0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5 MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmY5MAotQEAgLTAsMCArMSwzNyBAQAotKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r ISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0r ISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9y IGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsg PGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3N1YnJvdXRp bmUgZm9vIChlLCBmKQotKyAgY2hhcmFjdGVyIChsZW49MSkgOjogYwotKyAgY2hhcmFjdGVyIChs ZW49OCkgOjogZAotKyAgY2hhcmFjdGVyIChsZW49KikgOjogZQotKyAgY2hhcmFjdGVyIChsZW49 KikgOjogZiAoMTo3LCA4OjEwKQotKyAgYyA9ICdjJwotKyAgZCA9ICdkJwotKyAgZSA9ICdlJyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyLWluaXQKLSsgIGYgPSAn ZicKLSsgIGYoMSw5KSA9ICdmMicKLSsgIGMgPSAnYycgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAhIHZhci1maW5pc2gKLStlbmQgc3Vicm91dGluZSBmb28KLSsgIGNoYXJh Y3RlciAobGVuPTQpIDo6IGcsIGggKDE6NywgODoxMCkKLSsgIGcgPSAnZycKLSsgIGggPSAnaCcK LSsgIGNhbGwgZm9vIChnLCBoKQotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3VicmFuZ2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5n ZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAotQEAgLTAsMCArMSw3MiBAQAotKyMgQ29w eXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmIHsgW3NraXBfZm9ydHJhbl90ZXN0c10gfSB7IHJl dHVybiAtMSB9Ci0rCi0rc2V0IHRlc3RmaWxlICJzdWJyYW5nZSIKLStzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmOTB9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB7Ci0rICAgIHBlcnJvciAiQ291bGRuJ3QgcnVuIHRv IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rIyBEZXBlbmRpbmcgb24gdGhlIGNvbXBp bGVyIHZlcnNpb24gYmVpbmcgdXNlZCwgdGhlIG5hbWUgb2YgdGhlIDQtYnl0ZSBpbnRlZ2VyCi0r IyBhbmQgcmVhbCB0eXBlcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4gIEZvciBpbnN0YW5j ZSwgZ2ZvcnRyYW4tNC4xIHVzZXMKLSsjICJpbnQ0IiB3aGVyZWFzIGdmb3J0cmFuLTQuMyB1c2Vz ICJpbnQoa2luZD00KSIuCi0rc2V0IGludDQgIihpbnQ0fGludGVnZXJcXChraW5kPTRcXCkpIgot KwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1zdGF0aWMiXQot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1zdGF0aWMiICIuKmJyZWFrLXN0YXRp Yy4qIgotKwotK2ZvcmVhY2ggdmFyIHthIGFsbG9jIHB0cn0gewotKyAgICBnbG9iYWwgcGZfcHJl Zml4Ci0rICAgIHNldCBvbGRfcHJlZml4ICRwZl9wcmVmaXgKLSsgICAgbGFwcGVuZCBwZl9wcmVm aXggIiR2YXI6IgotKwotKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5 OTkiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDIsIDI6MykiIHsgPSBcKDIyLCAzMlwpfQotKyAg ICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCi0rICAgIGdkYl90ZXN0 ICJwICR2YXIgKDI6MywgMykiIHsgPSBcKDMyLCAzM1wpfQotKyAgICBzZXR1cF9rZmFpbCAiKi0q LSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDEsIDI6KSIg eyA9IFwoMjEsIDMxXCl9Ci0rICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24v OTk5OSIKLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoMiwgOjIpIiB7ID0gXCgxMiwgMjJcKX0KLSsg ICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgotKyAgICBnZGJfdGVz dCAicCAkdmFyICgzLCAyOjIpIiB7ID0gXCgyM1wpfQotKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoi ICJ2bGFyZWdyZXNzaW9uLzk5OTkiCi0rICAgIGdkYl90ZXN0ICJwdHlwZSAkdmFyICgzLCAyOjIp IiAiID0gJGludDQgXFwoMjoyXFwpIgotKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdy ZXNzaW9uLzk5OTkiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDQsIDopIiB7ID0gXCgxNCwgMjQs IDM0XCl9Ci0rICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKLSsg ICAgZ2RiX3Rlc3QgInAgJHZhciAoOiwgOikiIHsgPSBcKFwoICoxMSwgMTIsIDEzLCAxNFwpIFwo ICoyMSwgMjIsIDIzLCAyNFwpIFwoICozMSwgMzIsIDMzLCAzNFwpICpcKX0KLSsgICAgc2V0dXBf a2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgotKyAgICBnZGJfdGVzdCAicHR5cGUg JHZhciAoOiwgOikiICIgPSAkaW50NCBcXCg0LDNcXCkiCi0rICAgIHNldHVwX2tmYWlsICIqLSot KiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoOikiICJXcm9u ZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIKLSsgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVn cmVzc2lvbi85OTk5IgotKyAgICBnZGJfdGVzdCAicCAkdmFyICg6LCA6LCA6KSIgIldyb25nIG51 bWJlciBvZiBzdWJzY3JpcHRzIgotKwotKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfcHJlZml4Ci0r fQotKwotK2dkYl90ZXN0X25vX291dHB1dCB7c2V0ICRhPWF9Ci0rZGVsZXRlX2JyZWFrcG9pbnRz Ci0rZ2RiX3VubG9hZAotK3NldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIK LStnZGJfdGVzdCB7cCAkYSAoMywgMjoyKX0geyA9IFwoMjNcKX0KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vc3VicmFuZ2UuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAKLUBAIC0wLDAgKzEs MjggQEAKLSshIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rcHJvZ3JhbSB0ZXN0Ci0rICBp bnRlZ2VyLCB0YXJnZXQgOjogYSAoNCwgMykKLSsgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGFs bG9jICg6LCA6KQotKyAgaW50ZWdlciwgcG9pbnRlciA6OiBwdHIgKDosIDopCi0rICBkbyAxIGkg PSAxLCA0Ci0rICBkbyAxIGogPSAxLCAzCi0rICAgIGEgKGksIGopID0gaiAqIDEwICsgaQotKzEg Y29udGludWUKLSsgIGFsbG9jYXRlIChhbGxvYyAoNCwgMykpCi0rICBhbGxvYyA9IGEKLSsgIHB0 ciA9PiBhCi0rICB3cml0ZSAoKiwqKSBhICAgICAgICAgICAgICAgICAhIGJyZWFrLXN0YXRpYwot K2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlw ZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmMKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aTItdmFyLXN0YWxlLXR5cGUuYwotQEAgLTAsMCArMSwyNiBAQAotKy8qIENvcHlyaWdodCAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0r Ci0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsgIGNoYXIgdmxhW2Fy Z2NdOwotKwotKyAgdmxhWzBdID0gMDsJLyogYnJlYWstaGVyZSAqLwotKwotKyAgcmV0dXJuIDA7 Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlw ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuZXhwCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu bWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAotQEAgLTAsMCArMSw1NyBAQAotKyMgQ29weXJpZ2h0 IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KLSsKLStsb2FkX2xpYiBtaS1zdXBwb3J0LmV4cAotK3NldCBNSUZMQUdT ICItaT1taTIiCi0rCi0rZ2RiX2V4aXQKLStpZiBbbWlfZ2RiX3N0YXJ0XSB7Ci0rICAgIGNvbnRp bnVlCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAibWkyLXZhci1zdGFsZS10eXBlIgotK3NldCBzcmNm aWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0 ZXN0ZmlsZX1dCi0raWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZp bGUgJHNyY2ZpbGVdID09IC0xfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSttaV9kZWxldGVf YnJlYWtwb2ludHMKLSttaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStt aV9nZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rbWlfZ2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVj IGNvbnNvbGUgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBxdWl0IHllcyJ9IFwKLSsg IHtcXmRvbmV9IFwKLSsgICJtYWludGVuYW5jZSBzZXQgaW50ZXJuYWwtZXJyb3IgcXVpdCB5ZXMi Ci0rCi0rbWlfZ2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNl IHNldCBpbnRlcm5hbC1lcnJvciBjb3JlZmlsZSB5ZXMifSBcCi0rICB7XF5kb25lfSBcCi0rICAi bWFpbnRlbmFuY2Ugc2V0IGludGVybmFsLWVycm9yIGNvcmVmaWxlIHllcyIKLSsKLStzZXQgbGlu ZSBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rc2V0IGZ1bmMgIm1haW4iCi0r Ci0rbWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgLXQgJHNyY2ZpbGU6JGxpbmUiIFwKLSsgICJc XF5kb25lLGJrcHQ9XHtudW1iZXI9XCJcWzAtOVxdK1wiLHR5cGU9XCJicmVha3BvaW50XCIsZGlz cD1cImRlbFwiLGVuYWJsZWQ9XCJ5XCIsYWRkcj1cIiRoZXhcIixmdW5jPVwiJGZ1bmNcKFxcXCgu KlxcXClcKT9cIixmaWxlPVwiLipcIixmdWxsbmFtZT1cIi4qXCIsbGluZT1cIiRsaW5lXCIsXFte XHJcblxdKixvcmlnaW5hbC1sb2NhdGlvbj1cIi4qXCJcfSIgXAotKyAgImJyZWFrcG9pbnQgYXQg JGZ1bmMiCi0rCi0raWYgeyBbbWlfcnVuX2NtZF0gPCAwIH0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAkZnVuYyAiLioiICIuKiIgIlxbMC05 XF0rIiB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInN0b3AgYWZ0ZXIgaW5pdGlhbGl6aW5nIHZsYSIK LSsKLSttaV9jcmVhdGVfdmFyb2JqICJ2bGEiICJ2bGEiICJjcmVhdGUgbG9jYWwgdmFyaWFibGUg dmxhIgotKwotK21pX2dkYl90ZXN0ICItdmFyLXVwZGF0ZSAqIiAiXFxeZG9uZSxjaGFuZ2VsaXN0 PS4qIiAiLXZhci11cGRhdGUgKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQv YXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXkt ZnJvbS1yZWdpc3Rlci1mdW5jLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMK LUBAIC0wLDAgKzEsMjIgQEAKLSsvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwot K2ludAotK2Z1bmMgKGludCAqYXJyKQotK3sKLSsgIHJldHVybiBhcnJbMF07Ci0rfQotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZy b20tcmVnaXN0ZXIuYwotQEAgLTAsMCArMSwyOCBAQAotKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCi0rCi0rZXh0ZXJuIGludCBmdW5jIChpbnQgKmFycik7Ci0rCi0raW50Ci0rbWFp biAodm9pZCkKLSt7Ci0rICBpbnQgYXJyW10gPSB7IDQyIH07Ci0rCi0rICBmdW5jIChhcnIpOwot KwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9h cnJheS1mcm9tLXJlZ2lzdGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9t LXJlZ2lzdGVyLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAotQEAgLTAsMCAr MSwzMyBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsjCi0rIyBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KLSsKLStpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nIGFycmF5LWZyb20tcmVnaXN0ZXIuZXhwICJhcnJheS1mcm9tLXJlZ2lzdGVy IiAgICAgIFwKLSsJCQkgIHthcnJheS1mcm9tLXJlZ2lzdGVyLmMgYXJyYXktZnJvbS1yZWdpc3Rl ci1mdW5jLmN9IFwKLSsJCQkgIHtkZWJ1ZyBvcHRpbWl6ZT0tTzJ9XSB9IHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotK2lmICFbcnVudG8gZnVuY10gdGhlbiB7Ci0rICAgIHJldHVybiAtMQotK30K LSsKLStnZGJfdGVzdCAicCBhcnIiICJcXCRcWzAtOVxdKyA9IFxcKGludCBcXCpcXCkgKjB4XFsw LTlhLWZcXSsiCi0rCi0rIyBTZWVuIHJlZ3Jlc3Npb246Ci0rIyBBZGRyZXNzIHJlcXVlc3RlZCBm b3IgaWRlbnRpZmllciAiYXJyIiB3aGljaCBpcyBpbiByZWdpc3RlciAkcmRpCi0rZ2RiX3Rlc3Qg InAgYXJyXFswXF0iICJcXCRcWzAtOVxdKyA9IDQyIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmluZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvZm9y dHJhbi1zdHJpbmcuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmV4cAotQEAgLTAsMCArMSw0 NiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotKyMgVGhpcyBm aWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPi4KLSsKLSsjIFRlc3QgR0RCIGNhbiBjb3BlIHdpdGggRm9ydHJhbiBzdHJpbmdzIGhhdmlu ZyB0aGVpciBsZW5ndGggcHJlc2VudCBpbiBhIENQVQotKyMgcmVnaXN0ZXIuICBXaXRoIC1PMCB0 aGUgc3RyaW5nIGxlbmd0aCBpcyBwYXNzZWQgb24gdGhlIHN0YWNrLiAgVG8gbWFrZSB0aGlzCi0r IyB0ZXN0IG1lYW5pbmdmdWwgdGhlIGZvbGxvdyBhc3NlcnRpb24gc2hvdWxkIHBhc3MuICBJdCBp cyBub3QgYmVpbmcgY2hlY2tlZAotKyMgaGVyZSBhcyB0aGUgIl9zIiBzeW1ib2wgaXMgY29tcGls ZXIgZGVwZW5kZW50OgotKyMgICAoZ2RiKSBpbmZvIGFkZHJlc3MgX3MKLSsjICAgU3ltYm9sICJf cyIgaXMgYSB2YXJpYWJsZSBpbiByZWdpc3RlciBYWC4KLSsKLStzZXQgdGVzdCBmb3J0cmFuLXN0 cmluZwotK3NldCBzcmNmaWxlICR7dGVzdH0uZjkwCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGlu ZyAke3Rlc3R9LmV4cCAke3Rlc3R9ICR7c3JjZmlsZX0ge2RlYnVnIGY5MCBhZGRpdGlvbmFsX2Zs YWdzPS1PMn1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50byAkc3JjZmls ZTpbZ2RiX2dldF9saW5lX251bWJlciAicyA9IHMiXV0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291 bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLStn ZGJfdGVzdCAiaW5mbyBhcmdzIiAiLipzID0gJ2ZvbycuKiIKLStnZGJfdGVzdF9tdWx0aXBsZSAi cHR5cGUgcyIgIiIgewotKyAgICAtcmUgLXdyYXAgInR5cGUgPSBjaGFyYWN0ZXIgXFwoM1xcKSIg ewotKwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAgIH0KLSsgICAgLXJlIC13cmFwICJ0eXBlID0g Y2hhcmFjdGVyXFwqMyIgewotKwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAgIH0KLSt9Ci0rZ2Ri X3Rlc3QgInAgcyIgIlxcJFxbMC05XF0qID0gJ2ZvbyciCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9m b3J0cmFuLXN0cmluZy5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvZm9ydHJhbi1zdHJpbmcuZjkwCi1AQCAtMCwwICsx LDI5IEBACi0rISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyEKLSshIElo aXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHluYW1pYy5leHAuCi0rISBP cmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4u Ci0rISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4gS3JhdG9jaHZpbCA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rICBzdWJyb3V0aW5lIGYocykKLSsgIGNoYXJh Y3RlciooKikgcwotKyAgcyA9IHMKLSsgIHByaW50ICosIHMKLSsgIGVuZAotKwotKyAgcHJvZ3Jh bSBtYWluCi0rICBjYWxsIGYgKCdmb28nKQotKyAgZW5kCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJy YXlzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCi1AQCAtMCwwICsxLDEwNyBAQAotKyMgQ29w eXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsg ICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK2xvYWRfbGliICJwYXNjYWwuZXhwIgotKwot K3NldCB0ZXN0ZmlsZSAiYXJyYXlzIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LnBhcwotK3Nl dCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfSRFWEVFWFRdCi0rCi0r IyBUaGVzZSB0ZXN0cyBvbmx5IHdvcmsgd2l0aCBmcGMsIHVzaW5nIHRoZSAtZ3czIGNvbXBpbGUt b3B0aW9uCi0rcGFzY2FsX2luaXQKLStpZiB7ICRwYXNjYWxfY29tcGlsZXJfaXNfZnBjICE9IDEg fSB7Ci0rICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBEZXRlY3QgaWYgdGhlIGZwYyB2ZXJzaW9uIGlz IGJlbG93IDIuMy4wCi0rc2V0IGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlz IDEKLStpZiB7ICgkZnBjdmVyc2lvbl9tYWpvciA8IDIpIHx8ICggKCRmcGN2ZXJzaW9uX21ham9y ID09IDIpICYmICgkZnBjdmVyc2lvbl9taW5vciA8IDMpKX0gIHsKLSsgIHNldCBmcGNfZ2VuZXJh dGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyAwCi0rfQotKwotKwotK2lmIHtbZ2RiX2NvbXBp bGVfcGFzY2FsICItZ3czICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUgW2xpc3QgZGVidWcgXV0gIT0gIiIgfSB7Ci0rICByZXR1cm4gLTEKLSt9 Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rc2V0IGJwX2xvY2F0aW9uMSBbZ2RiX2dl dF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMSBoZXJlIl0KLStzZXQgYnBfbG9jYXRpb24y IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAyIGhlcmUiXQotKwotKwotK2lm IHsgW2dkYl9icmVha3BvaW50ICR7c3JjZmlsZX06JHticF9sb2NhdGlvbjF9XSB9IHsKLSsgICAg cGFzcyAic2V0dGluZyBicmVha3BvaW50IDEiCi0rfQotK2lmIHsgW2dkYl9icmVha3BvaW50ICR7 c3JjZmlsZX06JHticF9sb2NhdGlvbjJ9XSB9IHsKLSsgICAgcGFzcyAic2V0dGluZyBicmVha3Bv aW50IDIiCi0rfQotKwotKyMgVmVyaWZ5IHRoYXQgInN0YXJ0IiBsYW5kcyBpbnNpZGUgdGhlIHJp Z2h0IHByb2NlZHVyZS4KLStpZiB7IFtnZGJfc3RhcnRfY21kXSA8IDAgfSB7Ci0rICAgIHVudGVz dGVkIHN0YXJ0Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfdGVzdCAiIiAiLiogYXQgLiok e3NyY2ZpbGV9LioiICJzdGFydCIKLSsKLStnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6 JHticF9sb2NhdGlvbjF9LioiICJHb2luZyB0byBmaXJzdCBicmVha3BvaW50IgotKwotK2dkYl90 ZXN0ICJwcmludCBTdGF0QXJySW50IiAiLiogPSBcXHs1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1 NiwgNTcsIDU4LCA1OSwgNjAsIDYxXFx9IiAiUHJpbnQgc3RhdGljIGFycmF5IG9mIGludGVnZXIg dHlwZSIKLStnZGJfdGVzdCAicHJpbnQgU3RhdEFyckludF8iICIuKiA9IFxcezUwLCA1MSwgNTIs IDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFcXH0iICJQcmludCBzdGF0aWMgYXJy YXkgb2YgaW50ZWdlciIKLSsKLStnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6JHticF9s b2NhdGlvbjJ9LioiICJHb2luZyB0byBzZWNvbmQgYnJlYWtwb2ludCIKLSsKLStnZGJfdGVzdCAi cHJpbnQgU3RhdEFyckNoYXIiICIuKiA9ICdhYmNkZWZnaGlqa2wnIiAiUHJpbnQgc3RhdGljIGFy cmF5IG9mIGNoYXIiCi0rZ2RiX3Rlc3QgInByaW50IFN0YXQyZEFyckludCIgIi4qID0gXFx7XFx7 MCwgMSwgMiwgMywgNFxcfSwgXFx7MSwgMiwgMywgNCwgNVxcfSwgXFx7MiwgMywgNCwgNSwgNlxc fSwgXFx7MywgNCwgNSwgNiwgN1xcfSwgXFx7NCwgNSwgNiwgNywgOFxcfSwgXFx7NSwgNiwgNywg OCwgOVxcfSwgXFx7NiwgNywgOCwgOSwgMTBcXH0sIFxcezcsIDgsIDksIDEwLCAxMVxcfSwgXFx7 OCwgOSwgMTAsIDExLCAxMlxcfSwgXFx7OSwgMTAsIDExLCAxMiwgMTNcXH0sIFxcezEwLCAxMSwg MTIsIDEzLCAxNFxcfSwgXFx7MTEsIDEyLCAxMywgMTQsIDE1XFx9XFx9IiAiUHJpbnQgc3RhdGlj IDItZGltZW5zaW9uYWwgYXJyYXkgb2YgaW50ZWdlciIKLSsKLStpZiB7ICRmcGNfZ2VuZXJhdGVz X2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94ZmFpbCAiKi0qLSoi Ci0rfQotK2dkYl90ZXN0ICJwcmludCBEeW5BcnJJbnQiICIuKiA9IFxcezUwLCA1MSwgNTIsIDUz LCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyXFx9IiAiUHJpbnQgZHluYW1pYyBh cnJheSBvZiBpbnRlZ2VyIHR5cGUiCi0raWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHlu YW1pY19hcnJheXMgPT0gMH0gewotKyAgc2V0dXBfeGZhaWwgIiotKi0qIgotK30KLStnZGJfdGVz dCAicHJpbnQgRHluQXJySW50XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYs IDU3LCA1OCwgNTksIDYwLCA2MSwgNjJcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIGludGVn ZXIiCi0rCi0raWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0g MH0gewotKyAgc2V0dXBfeGZhaWwgIiotKi0qIgotK30KLStnZGJfdGVzdCAicHJpbnQgcyIgIi4q ID0gJ3Rlc3QnIzAnc3RyaW5nJyIgIlByaW50IHN0cmluZyBjb250YWluaW5nIG51bGwtY2hhciIK LSsKLStpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7 Ci0rICBzZXR1cF94ZmFpbCAiKi0qLSoiCi0rfSBlbHNlIHsKLSsgIHNldHVwX2tmYWlsICIqLSot KiIgcGFzY2FsLzI2MTA2Ci0rfQotK2dkYl90ZXN0ICJwcmludCBEeW5BcnJTdHIiICIuKiA9IFxc eydkc3RyMCcsICdkc3RyMScsICdkc3RyMicsICdkc3RyMycsICdkc3RyNCcsICdkc3RyNScsICdk c3RyNicsICdkc3RyNycsICdkc3RyOCcsICdkc3RyOScsICdkc3RyMTAnLCAnZHN0cjExJywgJ2Rz dHIxMidcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIHN0cmluZyIKLSsKLStpZiB7ICRmcGNf Z2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94ZmFp bCAiKi0qLSoiCi0rfSBlbHNlIHsKLSsgIHNldHVwX2tmYWlsICIqLSotKiIgcGFzY2FsLzI2ODU1 Ci0rfQotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyU3RyIiAiLiogPSBcXHsnc3RyMCcsICdzdHIx JywgJ3N0cjInLCAnc3RyMycsICdzdHI0JywgJ3N0cjUnLCAnc3RyNicsICdzdHI3JywgJ3N0cjgn LCAnc3RyOScsICdzdHIxMCcsICdzdHIxMScsICdzdHIxMidcXH0iICJQcmludCBzdGF0aWMgYXJy YXkgb2Ygc3RyaW5nIgotKwotK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNf YXJyYXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWlsICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3QgInBy aW50IER5bkFyckNoYXIiICIuKiA9ICdhYmNkZWZnaGlqa2xtJyIgIlByaW50IGR5bmFtaWMgYXJy YXkgb2YgY2hhciIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlz LnBhcyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2Fy cmF5cy5wYXMKLUBAIC0wLDAgKzEsODIgQEAKLSt7Ci0rIENvcHlyaWdodCAyMDA4LCAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSt9Ci0r Ci0rcHJvZ3JhbSBhcnJheXM7Ci0rCi0reyRtb2RlIG9iamZwY317JGgrfQotKwotK3VzZXMgc3lz dXRpbHM7Ci0rCi0rdHlwZSBUU3RhdEFyckludD0gYXJyYXlbMC4uMTFdIG9mIGludGVnZXI7Ci0r ICAgICBURHluQXJySW50PSBhcnJheSBvZiBpbnRlZ2VyOwotKyAgICAgVFN0YXRBcnJTdHI9IGFy cmF5WzAuLjEyXSBvZiBzdHJpbmc7Ci0rICAgICBURHluQXJyU3RyPSBhcnJheSBvZiBzdHJpbmc7 Ci0rICAgICBURHluQXJyQ2hhciA9IGFycmF5IG9mIGNoYXI7Ci0rICAgICBUU3RhdEFyckNoYXIg PSBhcnJheSBbMC4uMTFdIG9mIGNoYXI7Ci0rCi0rICAgICBUU3RhdDJkQXJySW50ID0gYXJyYXlb MC4uMTEsMC4uNF0gb2YgaW50ZWdlcjsKLSsKLSt2YXIgU3RhdEFyckludDogVFN0YXRBcnJJbnQ7 Ci0rICAgIFN0YXRBcnJJbnRfOiBBcnJheVswLi4xMV0gb2YgaW50ZWdlcjsKLSsgICAgRHluQXJy SW50OiAgVER5bkFyckludDsKLSsgICAgRHluQXJySW50XzogQXJyYXkgb2YgaW50ZWdlcjsKLSsg ICAgU3RhdEFyclN0cjogVFN0YXRBcnJTdHI7Ci0rICAgIER5bkFyclN0cjogVER5bkFyclN0cjsK LSsgICAgU3RhdEFyckNoYXI6IFRTdGF0QXJyQ2hhcjsKLSsgICAgRHluQXJyQ2hhcjogVER5bkFy ckNoYXI7Ci0rCi0rICAgIFN0YXQyZEFyckludDogVFN0YXQyZEFyckludDsKLSsKLSsgICAgczog c3RyaW5nOwotKwotKyAgICBpLGogOiBpbnRlZ2VyOwotKwotK2JlZ2luCi0rICBmb3IgaSA6PSAw IHRvIDExIGRvCi0rICAgIGJlZ2luCi0rICAgIFN0YXRBcnJJbnRbaV06PSBpKzUwOwotKyAgICBT dGF0QXJySW50X1tpXTo9IGkrNTA7Ci0rICAgIFN0YXRBcnJDaGFyW2ldOj0gY2hyKG9yZCgnYScp K2kpOwotKyAgICBmb3IgaiA6PSAwIHRvIDQgZG8KLSsgICAgICBTdGF0MmRBcnJJbnRbaSxqXTo9 aStqOwotKyAgICBlbmQ7Ci0rICB3cml0ZWxuKFN0YXRBcnJJbnRfWzBdKTsKLSsgIHdyaXRlbG4o U3RhdEFyckludFswXSk7IHsgc2V0IGJyZWFrcG9pbnQgMSBoZXJlIH0KLSsgIHdyaXRlbG4oU3Rh dEFyckNoYXJbMF0pOwotKyAgd3JpdGVsbihTdGF0MmRBcnJJbnRbMCwwXSk7Ci0rCi0rICBzZXRs ZW5ndGgoRHluQXJySW50LDEzKTsKLSsgIHNldGxlbmd0aChEeW5BcnJJbnRfLDEzKTsKLSsgIHNl dGxlbmd0aChEeW5BcnJTdHIsMTMpOwotKyAgc2V0bGVuZ3RoKER5bkFyckNoYXIsMTMpOwotKyAg Zm9yIGkgOj0gMCB0byAxMiBkbwotKyAgICBiZWdpbgotKyAgICBEeW5BcnJJbnRbaV06PSBpKzUw OwotKyAgICBEeW5BcnJJbnRfW2ldOj0gaSs1MDsKLSsgICAgRHluQXJyQ2hhcltpXTo9IGNocihv cmQoJ2EnKStpKTsKLSsgICAgU3RhdEFyclN0cltpXTo9J3N0cicraW50dG9zdHIoaSk7Ci0rICAg IER5bkFyclN0cltpXTo9J2RzdHInK2ludHRvc3RyKGkpOwotKyAgICBlbmQ7Ci0rICB3cml0ZWxu KER5bkFyckludF9bMV0pOwotKyAgd3JpdGVsbihEeW5BcnJJbnRbMV0pOwotKyAgd3JpdGVsbihE eW5BcnJTdHJbMV0pOwotKyAgd3JpdGVsbihTdGF0QXJyU3RyWzFdKTsKLSsgIHdyaXRlbG4oRHlu QXJyQ2hhclsxXSk7Ci0rCi0rICBzIDo9ICd0ZXN0JyMwJ3N0cmluZyc7Ci0rICB3cml0ZWxuKHMp OyB7IHNldCBicmVha3BvaW50IDIgaGVyZSB9Ci0rZW5kLgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0tLS0gYS9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1A QCAtMjI0LDYgKzIyNCwxMSBAQCBwcm9jIGdkYl91bmxvYWQge30gewotIAkgICAgc2VuZF9nZGIg InlcbiIgYW5zd2VyCi0gCSAgICBleHBfY29udGludWUKLSAJfQotKwktcmUgIkEgcHJvZ3JhbSBp cyBiZWluZyBkZWJ1Z2dlZCBhbHJlYWR5Li4qQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNoYW5n ZSB0aGUgZmlsZS4qeSBvciBuLiAkIlwKLSsJICAgIHsgc2VuZF9nZGIgInlcbiIKLSsJCXZlcmJv c2UgIlx0XHRVbmxvYWRpbmcgc3ltYm9scyBmb3IgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCIKLSsJ ICAgIGV4cF9jb250aW51ZQotKwl9Ci0gCS1yZSAiRGlzY2FyZCBzeW1ib2wgdGFibGUgZnJvbSAu Knkgb3Igbi4qJCIgewotIAkgICAgc2VuZF9nZGIgInlcbiIgYW5zd2VyCi0gCSAgICBleHBfY29u dGludWUKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9saWIvcGFzY2FsLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4 cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAotQEAgLTM3LDYgKzM3LDkgQEAg cHJvYyBwYXNjYWxfaW5pdCB7fSB7Ci0gICAgIGdkYl9wZXJzaXN0ZW50X2dsb2JhbCBwYXNjYWxf Y29tcGlsZXJfaXNfZnBjCi0gICAgIGdkYl9wZXJzaXN0ZW50X2dsb2JhbCBncGNfY29tcGlsZXIK LSAgICAgZ2RiX3BlcnNpc3RlbnRfZ2xvYmFsIGZwY19jb21waWxlcgotKyAgICBnZGJfcGVyc2lz dGVudF9nbG9iYWwgZnBjdmVyc2lvbl9tYWpvcgotKyAgICBnZGJfcGVyc2lzdGVudF9nbG9iYWwg ZnBjdmVyc2lvbl9taW5vcgotKyAgICBnZGJfcGVyc2lzdGVudF9nbG9iYWwgZnBjdmVyc2lvbl9y ZWxlYXNlCi0gICAgIGdsb2JhbCBlbnYKLSAgCi0gICAgIGlmIHsgJHBhc2NhbF9pbml0X2RvbmUg PT0gMSB9IHsKLUBAIC02NCw2ICs2NywyMCBAQCBwcm9jIHBhc2NhbF9pbml0IHt9IHsKLSAJICAg IHNldCBwYXNjYWxfY29tcGlsZXJfaXNfZnBjIDEKLSAJICAgIHZlcmJvc2UgLWxvZyAiRnJlZSBQ YXNjYWwgY29tcGlsZXIgZm91bmQiCi0gCX0KLSsKLSsJIyBEZXRlY3QgdGhlIGZwYy12ZXJzaW9u Ci0rCWlmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgPT0gMSB9IHsKLSsJICAgIHNldCBmcGN2 ZXJzaW9uX21ham9yIDEKLSsJICAgIHNldCBmcGN2ZXJzaW9uX21pbm9yIDAKLSsJICAgIHNldCBm cGN2ZXJzaW9uX3JlbGVhc2UgMAotKwkgICAgc2V0IGZwY3ZlcnNpb24gWyByZW1vdGVfZXhlYyBo b3N0ICRmcGNfY29tcGlsZXIgIi1pViIgXQotKwkgICAgaWYgW3JlZ2V4cCB7LiooWzAtOV0rKVwu KFswLTldKylcLihbMC05XSspLj99ICRmcGN2ZXJzaW9uXSB7Ci0rICAgICAgICAgICAgICByZWdz dWIgey4qKFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKS4/XG4/Lj99ICRmcGN2ZXJzaW9uIHtc MX0gZnBjdmVyc2lvbl9tYWpvcgotKyAgICAgICAgICAgICAgcmVnc3ViIHsuKihbMC05XSspXC4o WzAtOV0rKVwuKFswLTldKykuP1xuPy4/fSAkZnBjdmVyc2lvbiB7XDJ9IGZwY3ZlcnNpb25fbWlu b3IKLSsgICAgICAgICAgICAgIHJlZ3N1YiB7LiooWzAtOV0rKVwuKFswLTldKylcLihbMC05XSsp Lj9cbj8uP30gJGZwY3ZlcnNpb24ge1wzfSBmcGN2ZXJzaW9uX3JlbGVhc2UKLSsJICAgIH0KLSsg ICAgICAgICAgICB2ZXJib3NlIC1sb2cgIkZyZWVwYXNjYWwgdmVyc2lvbjogJGZwY3ZlcnNpb25f bWFqb3IuJGZwY3ZlcnNpb25fbWlub3IuJGZwY3ZlcnNpb25fcmVsZWFzZSIKLSsJfQotICAgICB9 Ci0gICAgIHNldCBwYXNjYWxfaW5pdF9kb25lIDEKLSB9ICAgCgpkaWZmIC0tZ2l0IGEvZ2RiLWFy Y2hlci5wYXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDNkNTlmNGYuLjAwMDAwMDAKLS0tIGEvZ2RiLWFyY2hlci5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE4NyArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURh dGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi1hcmNoZXIu cGF0Y2gKLQotOzsgUHl0aG9uIHBhdGNoZXMgb2Y6IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIv d2lraS9Qcm9qZWN0QXJjaGVyCi07Oz1wdXNoCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIv d2lraS9Qcm9qZWN0QXJjaGVyCi1odHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvQXJjaGVy QnJhbmNoTWFuYWdlbWVudAotCi1HSVQgc25hcHNob3Q6Ci1jb21taXQgNzE4YTE2MThiMmY2OTFh N2Y0MDcyMTNiYjUwZjEwMGFjNTlmOTFjMwotCi10cm9tZXkvcHl0aG9uCi0KLWRpZmYgLS1naXQg YS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFr ZWZpbGUuaW4KLS0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgotKysrIGIvZ2Ri L2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCi1AQCAtODAsNiArODAsNyBAQCBQWVRIT05fRklM RV9MSVNUID0gXAotIAlnZGIvdW53aW5kZXIucHkgXAotIAlnZGIveG1ldGhvZC5weSBcCi0gCWdk Yi9jb21tYW5kL19faW5pdF9fLnB5IFwKLSsJZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weSBc Ci0gCWdkYi9jb21tYW5kL2V4cGxvcmUucHkgXAotIAlnZGIvY29tbWFuZC9iYWNrdHJhY2UucHkg XAotIAlnZGIvY29tbWFuZC9mcmFtZV9maWx0ZXJzLnB5IFwKLUBAIC05Miw2ICs5Myw3IEBAIFBZ VEhPTl9GSUxFX0xJU1QgPSBcCi0gCWdkYi9mdW5jdGlvbi9hc19zdHJpbmcucHkgXAotIAlnZGIv ZnVuY3Rpb24vY2FsbGVyX2lzLnB5IFwKLSAJZ2RiL2Z1bmN0aW9uL3N0cmZucy5weSBcCi0rCWdk Yi9mdW5jdGlvbi9pbl9zY29wZS5weSBcCi0gCWdkYi9wcmludGVyL19faW5pdF9fLnB5IFwKLSAJ Z2RiL3ByaW50ZXIvYm91bmRfcmVnaXN0ZXJzLnB5Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYi1n ZGIuZ2RiLmluIGIvZ2RiL2dkYi1nZGIuZ2RiLmluCi0tLS0gYS9nZGIvZ2RiLWdkYi5nZGIuaW4K LSsrKyBiL2dkYi9nZGItZ2RiLmdkYi5pbgotQEAgLTEsNSArMSwxNSBAQAotIGVjaG8gU2V0dGlu ZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KLSAKLSsjIFNldCB1cCB0 aGUgUHl0aG9uIGxpYnJhcnkgYW5kICJyZXF1aXJlIiBjb21tYW5kLgotK3B5dGhvbgotK2Zyb20g b3MucGF0aCBpbXBvcnQgYWJzcGF0aAotK2dkYi5kYXRhZGlyID0gYWJzcGF0aCAoJ0BzcmNkaXJA L3B5dGhvbi9saWInKQotK2dkYi5weXRob25saWJkaXIgPSBnZGIuZGF0YWRpcgotK2dkYi5fX3Bh dGhfXyA9IFtnZGIuZGF0YWRpciArICcvZ2RiJ10KLStzeXMucGF0aC5pbnNlcnQoMCwgZ2RiLmRh dGFkaXIpCi0rZW5kCi0rc291cmNlIEBzcmNkaXJAL3B5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5 Ci0rCi0gaWYgISRnZGJfaW5pdF9kb25lCi0gICBzZXQgdmFyaWFibGUgJGdkYl9pbml0X2RvbmUg PSAxCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vy cm9ycy5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5Ci1AQCAtMCwwICsxLDM3IEBACi0rIyBJZ25vcmUg ZXJyb3JzIGluIHVzZXIgY29tbWFuZHMuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotK2ltcG9ydCBnZGIKLSsKLStjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29t bWFuZCk6Ci0rICAgICIiIkV4ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVy cm9ycy4KLStPbmx5IG9uZS1saW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCi0rVGhpcyBpcyBw cmltYXJpbHkgdXNlZnVsIGluIHNjcmlwdHMuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2Vs Zik6Ci0rICAgICAgICBzdXBlciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19pbml0X18g KCJpZ25vcmUtZXJyb3JzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRS4uLgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09N TUFORCkKLSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAg ICB0cnk6Ci0rICAgICAgICAgICAgZ2RiLmV4ZWN1dGUgKGFyZywgZnJvbV90dHkpCi0rICAgICAg ICBleGNlcHQ6Ci0rICAgICAgICAgICAgcGFzcwotKwotK0lnbm9yZUVycm9yc0NvbW1hbmQgKCkK LWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5f c2NvcGUucHkKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIEluLXNjb3BlIGZ1bmN0aW9uLgotKwotKyMg Q29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgSW5T Y29wZSAoZ2RiLkZ1bmN0aW9uKToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZl biB2YXJpYWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBzY29wZS4KLStUYWtlcyBvbmUgYXJndW1lbnQg Zm9yIGVhY2ggdmFyaWFibGUgbmFtZSB0byBiZSBjaGVja2VkLiIiIgotKwotKyAgICBkZWYgX19p bml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKEluU2NvcGUsIHNlbGYpLl9faW5pdF9fICgi aW5fc2NvcGUiKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCAqdmFycyk6Ci0rICAgICAgICBp ZiBsZW4gKHZhcnMpID09IDA6Ci0rICAgICAgICAgICAgcmFpc2UgKFR5cGVFcnJvciwgImluX3Nj b3BlIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpCi0rCi0rICAgICAgICAjIGdkYi5WYWx1 ZSBpc24ndCBoYXNoYWJsZSBzbyBpdCBjYW4ndCBiZSBwdXQgaW4gYSBtYXAuCi0rICAgICAgICAj IENvbnZlcnQgdG8gc3RyaW5nIGZpcnN0LgotKyAgICAgICAgd2FudGVkID0gc2V0IChtYXAgKGxh bWJkYSB4OiB4LnN0cmluZyAoKSwgdmFycykpCi0rICAgICAgICBmb3VuZCA9IHNldCAoKQotKyAg ICAgICAgYmxvY2sgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkuYmxvY2sgKCkKLSsgICAgICAgIHdo aWxlIGJsb2NrOgotKyAgICAgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6Ci0rICAgICAgICAgICAg ICAgIGlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2NvbnN0YW50Ci0rICAgICAgICAgICAg ICAgICAgICAgIG9yIHN5bS5pc19mdW5jdGlvbiBvciBzeW0uaXNfdmFyaWFibGUpOgotKyAgICAg ICAgICAgICAgICAgICAgaWYgc3ltLm5hbWUgaW4gd2FudGVkOgotKyAgICAgICAgICAgICAgICAg ICAgICAgIGZvdW5kLmFkZCAoc3ltLm5hbWUpCi0rCi0rICAgICAgICAgICAgYmxvY2sgPSBibG9j ay5zdXBlcmJsb2NrCi0rCi0rICAgICAgICByZXR1cm4gd2FudGVkID09IGZvdW5kCi0rCi0rSW5T Y29wZSAoKQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCi0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktZnJhbWUuZXhwCi1AQCAtOTUsNiArOTUsOCBAQCBnZGJfdGVzdCAicHl0aG9uIHBy aW50ICgncmVzdWx0ID0gJXMnICUgZjAucmVhZF92YXIgKCdhJykpIiAiID0gMSIgInRlc3QgRnJh bWUucgotIAotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgKCdyZXN1bHQgPSAlcycgJSAoZ2RiLnNl bGVjdGVkX2ZyYW1lICgpID09IGYxKSkiICIgPSBUcnVlIiAidGVzdCBnZGIuc2VsZWN0ZWRfZnJh bWUiCi0gCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAoJ3Jlc3VsdCA9ICVzJyAlIChmMC5ibG9j ayAoKSkpIiAiPGdkYi5CbG9jayBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4iICJ0ZXN0 IEZyYW1lLmJsb2NrIgotKwotICMgQ2FuIHJlYWQgU1AgcmVnaXN0ZXIuCi0gZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCAoJ3Jlc3VsdCA9ICVzJyAlIChnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF9y ZWdpc3RlciAoJ3NwJykgPT0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnXCRzcCcpKSkiIFwKLSAgICIg PSBUcnVlIiBcCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVl LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS12YWx1ZS5leHAKLUBAIC00MTksNiArNDE5LDE1IEBAIHByb2MgdGVzdF92YWx1 ZV9hZnRlcl9kZWF0aCB7fSB7Ci0gICAgICJwcmludCB2YWx1ZSdzIHR5cGUiCi0gfQotIAotKyMg UmVncmVzc2lvbiB0ZXN0IGZvciBhIGNhc3QgZmFpbHVyZS4gIFRoZSBidWcgd2FzIHRoYXQgaWYg d2UgY2FzdCBhCi0rIyB2YWx1ZSB0byBpdHMgb3duIHR5cGUsIGdkYiBjb3VsZCBjcmFzaC4gIFRo aXMgaGFwcGVuZWQgYmVjYXVzZSB3ZQotKyMgY291bGQgZW5kIHVwIGRvdWJsZS1mcmVlaW5nIGEg c3RydWN0IHZhbHVlLgotK3Byb2MgdGVzdF9jYXN0X3JlZ3Jlc3Npb24ge30gewotKyAgZ2RiX3Rl c3QgInB5dGhvbiB2ID0gZ2RiLlZhbHVlKDUpIiAiIiAiY3JlYXRlIHZhbHVlIGZvciBjYXN0IHRl c3QiCi0rICBnZGJfdGVzdCAicHl0aG9uIHYgPSB2LmNhc3Qodi50eXBlKSIgIiIgImNhc3QgdmFs dWUgZm9yIGNhc3QgdGVzdCIKLSsgIGdkYl90ZXN0ICJweXRob24gcHJpbnQodikiICI1IiAicHJp bnQgdmFsdWUgZm9yIGNhc3QgdGVzdCIKLSt9Ci0rCi0gIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlu dmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0Ci0gIyB0aGUgdHlw ZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2luZyBhCi0g IyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtNjA2LDYgKzYxNSw3IEBAIHRl c3RfdmFsdWVfaW5faW5mZXJpb3IKLSB0ZXN0X3ZhbHVlX2Zyb21fYnVmZmVyCi0gdGVzdF9pbmZl cmlvcl9mdW5jdGlvbl9jYWxsCi0gdGVzdF92YWx1ZV9hZnRlcl9kZWF0aAotK3Rlc3RfY2FzdF9y ZWdyZXNzaW9uCi0gCi0gIyBUZXN0IGVpdGhlciBDIG9yIEMrKyB2YWx1ZXMuIAotIAoKZGlmZiAt LWdpdCBhL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2ggYi9nZGItYXR0YWNoLWZh aWwtcmVhc29ucy01b2Y1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODMw YmUzLi4wMDAwMDAwCi0tLSBhL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzNTYgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlZG9yYSBHREIgcGF0Y2hlcyA8aW52YWxpZEBlbWFp bC5jb20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3OjUwICswMjAwCi1TdWJqZWN0OiBn ZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCi0KLTs7IFByaW50IHJlYXNvbnMgZm9y IGZhaWxlZCBhdHRhY2gvc3Bhd24gaW5jbC4gU0VMaW51eCBkZW55X3B0cmFjZSAoQlogNzg2ODc4 KS4KLTs7PXB1c2gramFuCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTAzL21zZzAwMTcxLmh0bWwKLQotSGksCi0KLWFuZCBoZXJlIGlzIHRoZSBsYXN0IGJpdCBm b3IgbmV3IFNFTGludXggJ2RlbnlfcHRyYWNlJzoKLQlodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5j b20vc2hvd19idWcuY2dpP2lkPTc4Njg3OAotCi1BcyBldmVuIFBUUkFDRV9UUkFDRU1FIGZhaWxz IGluIHN1Y2ggY2FzZSBpdCBuZWVkcyB0byBpbnN0YWxsIGhvb2sgZm9yIGV2ZW4KLXRoYXQgZXZl bnQuCi0KLVRoYW5rcywKLUphbgotCi1nZGIvCi0yMDEyLTAzLTA2ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGNvbW1vbi9saW51eC1wdHJhY2UuYyBb SEFWRV9TRUxJTlVYX1NFTElOVVhfSF06IGluY2x1ZGUKLQlzZWxpbnV4L3NlbGludXguaC4KLQko bGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncyk6IENhbGwgbGludXhfcHRyYWNlX2NyZWF0ZV93 YXJuaW5ncy4KLQkobGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyk6IE5ldy4KLQkqIGNvbW1v bi9saW51eC1wdHJhY2UuaCAobGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyk6IE5ldyBkZWNs YXJhdGlvbi4KLQkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLQkqIGNvbmZpZ3VyZTogUmVnZW5l cmF0ZS4KLQkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgc2VsaW51eC9zZWxpbnV4LmggYW5kIHRoZSBz ZWxpbnV4IGxpYnJhcnkuCi0JKiBpbmYtcHRyYWNlLmMgKGluZl9wdHJhY2VfbWUpOiBDaGVjayB0 aGUgcHRyYWNlIHJlc3VsdC4KLQkqIGxpbnV4LW5hdC5jIChsaW51eF9uYXRfY3JlYXRlX2luZmVy aW9yKTogTmV3IHZhcmlhYmxlIGV4LiAgV3JhcAotCXRvX2NyZWF0ZV9pbmZlcmlvciBpbnRvIFRS WV9DQVRDSCwgY2FsbCBsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzLgotCi1nZGIvZ2Ric2Vy dmVyLwotCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotCSogY29uZmlndXJlOiBSZWdlbmVyYXRl LgotCSogY29uZmlndXJlLmFjOiBDaGVjayBzZWxpbnV4L3NlbGludXguaCBhbmQgdGhlIHNlbGlu dXggbGlicmFyeS4KLQkqIGxpbnV4LWxvdy5jIChsaW51eF90cmFjZW1lKTogTmV3IGZ1bmN0aW9u LgotCShsaW51eF9jcmVhdGVfaW5mZXJpb3IsIGxpbnV4X3RyYWNlZm9ya19jaGlsZCk6IENhbGwg aXQgaW5zdGVhZCBvZgotCWRpcmVjdCBwdHJhY2UuCi0KLWRpZmYgLS1naXQgYS9nZGIvY29uZmln LmluIGIvZ2RiL2NvbmZpZy5pbgotLS0tIGEvZ2RiL2NvbmZpZy5pbgotKysrIGIvZ2RiL2NvbmZp Zy5pbgotQEAgLTI1Myw2ICsyNTMsOSBAQAotIC8qIERlZmluZSBpZiBsaWJycG0gbGlicmFyeSBp cyBiZWluZyB1c2VkLiAqLwotICN1bmRlZiBIQVZFX0xJQlJQTQotIAotKy8qIERlZmluZSB0byAx IGlmIHlvdSBoYXZlIHRoZSBgc2VsaW51eCcgbGlicmFyeSAoLWxzZWxpbnV4KS4gKi8KLSsjdW5k ZWYgSEFWRV9MSUJTRUxJTlVYCi0rCi0gLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxs aWJ1bndpbmQtaWE2NC5oPiBoZWFkZXIgZmlsZS4gKi8KLSAjdW5kZWYgSEFWRV9MSUJVTldJTkRf SUE2NF9ICi0gCi1AQCAtMzg4LDYgKzM5MSw5IEBACi0gLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh dmUgdGhlIGBzY21fbmV3X3Ntb2InIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1NDTV9ORVdf U01PQgotIAotKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2VsaW51eC9zZWxpbnV4 Lmg+IGhlYWRlciBmaWxlLiAqLwotKyN1bmRlZiBIQVZFX1NFTElOVVhfU0VMSU5VWF9ICi0rCi0g LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRsb2NhbGUnIGZ1bmN0aW9uLiAqLwot ICN1bmRlZiBIQVZFX1NFVExPQ0FMRQotIAotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9n ZGIvY29uZmlndXJlCi0tLS0gYS9nZGIvY29uZmlndXJlCi0rKysgYi9nZGIvY29uZmlndXJlCi1A QCAtMTY4NjEsNiArMTY4NjEsNjQgQEAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotIF9BQ0VP RgotIAotIAotK2ZvciBhY19oZWFkZXIgaW4gc2VsaW51eC9zZWxpbnV4LmgKLStkbyA6Ci0rICBh Y19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic2VsaW51eC9zZWxpbnV4Lmgi ICJhY19jdl9oZWFkZXJfc2VsaW51eF9zZWxpbnV4X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIK LStpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIgPSB4IiJ5ZXM7IHRo ZW4gOgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgSEFWRV9TRUxJTlVY X1NFTElOVVhfSCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsKLStkb25lCi0rCi0reyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jv b2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSBpbiAtbHNlbGludXguLi4gIiA+JjY7IH0KLStp ZiB0ZXN0ICIke2FjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZStz ZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UK LSsgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLStMSUJTPSItbHNlbGludXggICRMSUJT IgotK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQg Y29uZmRlZnMuaC4gICovCi0rCi0rLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5 cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0rICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0 Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0rICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJn dW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSsjaWZkZWYgX19jcGx1c3Bs dXMKLStleHRlcm4gIkMiCi0rI2VuZGlmCi0rY2hhciBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3Rp dmUgKCk7Ci0raW50Ci0rbWFpbiAoKQotK3sKLStyZXR1cm4gc2VjdXJpdHlfZ2V0X2Jvb2xlYW5f YWN0aXZlICgpOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2Nf dHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5 X2dldF9ib29sZWFuX2FjdGl2ZT15ZXMKLStlbHNlCi0rICBhY19jdl9saWJfc2VsaW51eF9zZWN1 cml0eV9nZXRfYm9vbGVhbl9hY3RpdmU9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3Qu JGFjX2V4dAotK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLStmaQotK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3NlbGludXhf c2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X2xpYl9z ZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPiY2OyB9Ci0raWYgdGVzdCAieCRh Y19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUiID0geCIieWVzOyB0 aGVuIDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfTElCU0VM SU5VWCAxCi0rX0FDRU9GCi0rCi0rICBMSUJTPSItbHNlbGludXggJExJQlMiCi0rCi0rZmkKLSsK LSsKLSAKLSAjIFN1cHBvcnQgZm9yIC0td2l0aC1zeXNyb290IGlzIGEgY29weSBvZiBHREJfQUNf V0lUSF9ESVIsCi0gIyBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnQgdG8gLS13aXRoLXN5c3Jvb3Qg aXMgb3B0aW9uYWwuCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1 cmUuYWMKLS0tLSBhL2dkYi9jb25maWd1cmUuYWMKLSsrKyBiL2dkYi9jb25maWd1cmUuYWMKLUBA IC0xOTAwLDYgKzE5MDAsMTAgQEAgY2FzZSAkaG9zdF9vcyBpbgotIGVzYWMKLSBBQ19ERUZJTkVf VU5RVU9URUQoR0RCSU5JVCwiJGdkYmluaXQiLFtUaGUgLmdkYmluaXQgZmlsZW5hbWUuXSkKLSAK LStkbmwgQ2hlY2sgc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGF2YWlsYWJpbGl0eS4KLStB Q19DSEVDS19IRUFERVJTKHNlbGludXgvc2VsaW51eC5oKQotK0FDX0NIRUNLX0xJQihzZWxpbnV4 LCBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUpCi0rCi0gZG5sIEhhbmRsZSBvcHRpb25hbCBm ZWF0dXJlcyB0aGF0IGNhbiBiZSBlbmFibGVkLgotIAotICMgU3VwcG9ydCBmb3IgLS13aXRoLXN5 c3Jvb3QgaXMgYSBjb3B5IG9mIEdEQl9BQ19XSVRIX0RJUiwKLWRpZmYgLS1naXQgYS9nZGIvbGlu dXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLS0tLSBhL2dkYi9saW51eC1uYXQuYwotKysrIGIv Z2RiL2xpbnV4LW5hdC5jCi1AQCAtMTEwMyw3ICsxMTAzLDE2IEBAIGxpbnV4X25hdF90YXJnZXQ6 OmNyZWF0ZV9pbmZlcmlvciAoY29uc3QgY2hhciAqZXhlY19maWxlLAotICAgLyogTWFrZSBzdXJl IHdlIHJlcG9ydCBhbGwgc2lnbmFscyBkdXJpbmcgc3RhcnR1cC4gICovCi0gICBwYXNzX3NpZ25h bHMgKHt9KTsKLSAKLS0gIGluZl9wdHJhY2VfdGFyZ2V0OjpjcmVhdGVfaW5mZXJpb3IgKGV4ZWNf ZmlsZSwgYWxsYXJncywgZW52LCBmcm9tX3R0eSk7Ci0rICB0cnkKLSsgICAgewotKyAgICAgIGlu Zl9wdHJhY2VfdGFyZ2V0OjpjcmVhdGVfaW5mZXJpb3IgKGV4ZWNfZmlsZSwgYWxsYXJncywgZW52 LCBmcm9tX3R0eSk7Ci0rICAgIH0KLSsgIGNhdGNoIChjb25zdCBnZGJfZXhjZXB0aW9uX2Vycm9y ICZleCkKLSsgICAgewotKyAgICAgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9ICBsaW51eF9wdHJhY2Vf Y3JlYXRlX3dhcm5pbmdzICgpOwotKwotKyAgICAgIHRocm93X2Vycm9yIChleC5lcnJvciwgIiVz JXMiLCByZXN1bHQuY19zdHIgKCksIGV4Lm1lc3NhZ2UtPmNfc3RyICgpKTsKLSsgICAgfQotIH0K LSAKLSAvKiBDYWxsYmFjayBmb3IgbGludXhfcHJvY19hdHRhY2hfdGdpZF90aHJlYWRzLiAgQXR0 YWNoIHRvIFBUSUQgaWYgbm90Ci1kaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1wdHJhY2UuYyBi L2dkYi9uYXQvbGludXgtcHRyYWNlLmMKLS0tLSBhL2dkYi9uYXQvbGludXgtcHRyYWNlLmMKLSsr KyBiL2dkYi9uYXQvbGludXgtcHRyYWNlLmMKLUBAIC0yNSw2ICsyNSwxMCBAQAotICNpbmNsdWRl IDxzeXMvcHJvY2ZzLmg+Ci0gI2VuZGlmCi0gCi0rI2lmZGVmIEhBVkVfU0VMSU5VWF9TRUxJTlVY X0gKLSsjIGluY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgotKyNlbmRpZiAvKiBIQVZFX1NFTElO VVhfU0VMSU5VWF9IICovCi0rCi0gLyogU3RvcmVzIHRoZSBwdHJhY2Ugb3B0aW9ucyBzdXBwb3J0 ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsLgotICAgIEEgdmFsdWUgb2YgLTEgbWVhbnMgd2UgZGlk IG5vdCBjaGVjayBmb3IgZmVhdHVyZXMgeWV0LiAgQSB2YWx1ZQotICAgIG9mIDAgbWVhbnMgdGhl cmUgYXJlIG5vIHN1cHBvcnRlZCBmZWF0dXJlcy4gICovCi1AQCAtNTAsNiArNTQsOCBAQCBsaW51 eF9wdHJhY2VfYXR0YWNoX2ZhaWxfcmVhc29uIChwaWRfdCBwaWQpCi0gCQkgICAgICAidGVybWlu YXRlZCIpLAotIAkJICAgIChpbnQpIHBpZCk7Ci0gCi0rICByZXN1bHQgKz0gbGludXhfcHRyYWNl X2NyZWF0ZV93YXJuaW5ncyAoKTsKLSsKLSAgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotQEAgLTU4 Niw2ICs1OTIsMjUgQEAgbGludXhfcHRyYWNlX2luaXRfd2FybmluZ3MgKHZvaWQpCi0gICBsaW51 eF9wdHJhY2VfdGVzdF9yZXRfdG9fbnggKCk7Ci0gfQotIAotKy8qIFByaW50IGFsbCBwb3NzaWJs ZSByZWFzb25zIHdlIGNvdWxkIGZhaWwgdG8gY3JlYXRlIGEgdHJhY2VkIHByb2Nlc3MuICAqLwot KwotK3N0ZDo6c3RyaW5nCi0rbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoKQotK3sKLSsg IHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSsKLSsjaWZkZWYgSEFWRV9MSUJTRUxJTlVYCi0rICAvKiAt MSBpcyByZXR1cm5lZCBmb3IgZXJyb3JzLCAwIGlmIGl0IGhhcyBubyBlZmZlY3QsIDEgaWYgUFRS QUNFX0FUVEFDSCBpcwotKyAgICAgZm9yYmlkZGVuLiAgKi8KLSsgIGlmIChzZWN1cml0eV9nZXRf Ym9vbGVhbl9hY3RpdmUgKCJkZW55X3B0cmFjZSIpID09IDEpCi0rICAgIHN0cmluZ19hcHBlbmRm IChyZXN1bHQsCi0rCQkgICAgXygidGhlIFNFTGludXggYm9vbGVhbiAnZGVueV9wdHJhY2UnIGlz IGVuYWJsZWQsICIKLSsJCSAgICAgICJ5b3UgY2FuIGRpc2FibGUgdGhpcyBwcm9jZXNzIGF0dGFj aCBwcm90ZWN0aW9uIGJ5OiAiCi0rCQkgICAgICAiKGdkYikgc2hlbGwgc3VkbyBzZXRzZWJvb2wg ZGVueV9wdHJhY2U9MFxuIikpOwotKyNlbmRpZiAvKiBIQVZFX0xJQlNFTElOVVggKi8KLSsgIHJl dHVybiByZXN1bHQ7Ci0rfQotKwotIC8qIEV4dHJhY3QgZXh0ZW5kZWQgcHRyYWNlIGV2ZW50IGZy b20gd2FpdCBzdGF0dXMuICAqLwotIAotIGludAotZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgt cHRyYWNlLmggYi9nZGIvbmF0L2xpbnV4LXB0cmFjZS5oCi0tLS0gYS9nZGIvbmF0L2xpbnV4LXB0 cmFjZS5oCi0rKysgYi9nZGIvbmF0L2xpbnV4LXB0cmFjZS5oCi1AQCAtMTg0LDYgKzE4NCw3IEBA IGV4dGVybiBzdGQ6OnN0cmluZyBsaW51eF9wdHJhY2VfYXR0YWNoX2ZhaWxfcmVhc29uIChwaWRf dCBwaWQpOwotIGV4dGVybiBzdGQ6OnN0cmluZyBsaW51eF9wdHJhY2VfYXR0YWNoX2ZhaWxfcmVh c29uX3N0cmluZyAocHRpZF90IHB0aWQsIGludCBlcnIpOwotIAotIGV4dGVybiB2b2lkIGxpbnV4 X3B0cmFjZV9pbml0X3dhcm5pbmdzICh2b2lkKTsKLStleHRlcm4gc3RkOjpzdHJpbmcgbGludXhf cHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoKTsKLSBleHRlcm4gdm9pZCBsaW51eF9jaGVja19wdHJh Y2VfZmVhdHVyZXMgKHZvaWQpOwotIGV4dGVybiB2b2lkIGxpbnV4X2VuYWJsZV9ldmVudF9yZXBv cnRpbmcgKHBpZF90IHBpZCwgaW50IGF0dGFjaGVkKTsKLSBleHRlcm4gdm9pZCBsaW51eF9kaXNh YmxlX2V2ZW50X3JlcG9ydGluZyAocGlkX3QgcGlkKTsKLWRpZmYgLS1naXQgYS9nZGJzZXJ2ZXIv Y29uZmlnLmluIGIvZ2Ric2VydmVyL2NvbmZpZy5pbgotLS0tIGEvZ2Ric2VydmVyL2NvbmZpZy5p bgotKysrIGIvZ2Ric2VydmVyL2NvbmZpZy5pbgotQEAgLTE0Myw2ICsxNDMsOSBAQAotIC8qIERl ZmluZSBpZiB5b3UgaGF2ZSB0aGUgaXB0IGxpYnJhcnkuICovCi0gI3VuZGVmIEhBVkVfTElCSVBU Ci0gCi0rLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxpbnV4JyBsaWJyYXJ5ICgt bHNlbGludXgpLiAqLwotKyN1bmRlZiBIQVZFX0xJQlNFTElOVVgKLSsKLSAvKiBEZWZpbmUgaWYg dGhlIHRhcmdldCBzdXBwb3J0cyBicmFuY2ggdHJhY2luZy4gKi8KLSAjdW5kZWYgSEFWRV9MSU5V WF9CVFJBQ0UKLSAKLUBAIC0yNDksNiArMjUyLDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug aGF2ZSB0aGUgYHNicmsnIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1NCUksKLSAKLSsvKiBE ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNlbGludXgvc2VsaW51eC5oPiBoZWFkZXIgZmls ZS4gKi8KLSsjdW5kZWYgSEFWRV9TRUxJTlVYX1NFTElOVVhfSAotKwotIC8qIERlZmluZSB0byAx IGlmIHlvdSBoYXZlIHRoZSBgc2V0bnMnIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1NFVE5T Ci0gCi1kaWZmIC0tZ2l0IGEvZ2Ric2VydmVyL2NvbmZpZ3VyZSBiL2dkYnNlcnZlci9jb25maWd1 cmUKLS0tLSBhL2dkYnNlcnZlci9jb25maWd1cmUKLSsrKyBiL2dkYnNlcnZlci9jb25maWd1cmUK LUBAIC0xMDY4Myw2ICsxMDY4Myw2NCBAQCBpZiAkd2FudF9pcGEgOyB0aGVuCi0gICAgZmkKLSBm aQotIAotK2ZvciBhY19oZWFkZXIgaW4gc2VsaW51eC9zZWxpbnV4LmgKLStkbyA6Ci0rICBhY19m bl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic2VsaW51eC9zZWxpbnV4LmgiICJh Y19jdl9oZWFkZXJfc2VsaW51eF9zZWxpbnV4X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLStp ZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIgPSB4IiJ5ZXM7IHRoZW4g OgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgSEFWRV9TRUxJTlVYX1NF TElOVVhfSCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsKLStkb25lCi0rCi0reyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jvb2xl YW5fYWN0aXZlIGluIC1sc2VsaW51eCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNl Y3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSBpbiAtbHNlbGludXguLi4gIiA+JjY7IH0KLStpZiB0 ZXN0ICIke2FjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZStzZXR9 IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsg IGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLStMSUJTPSItbHNlbGludXggICRMSUJTIgot K2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29u ZmRlZnMuaC4gICovCi0rCi0rLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUg dG8gYXZvaWQgYW4gZXJyb3IuCi0rICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2gg dGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0rICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1l bnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMK LStleHRlcm4gIkMiCi0rI2VuZGlmCi0rY2hhciBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUg KCk7Ci0raW50Ci0rbWFpbiAoKQotK3sKLStyZXR1cm4gc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0 aXZlICgpOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5 X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dl dF9ib29sZWFuX2FjdGl2ZT15ZXMKLStlbHNlCi0rICBhY19jdl9saWJfc2VsaW51eF9zZWN1cml0 eV9nZXRfYm9vbGVhbl9hY3RpdmU9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFj X2V4dAotK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLStmaQotK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3NlbGludXhfc2Vj dXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X2xpYl9zZWxp bnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPiY2OyB9Ci0raWYgdGVzdCAieCRhY19j dl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUiID0geCIieWVzOyB0aGVu IDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfTElCU0VMSU5V WCAxCi0rX0FDRU9GCi0rCi0rICBMSUJTPSItbHNlbGludXggJExJQlMiCi0rCi0rZmkKLSsKLSsK LSAKLSAKLSAKLWRpZmYgLS1naXQgYS9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjIGIvZ2Ric2VydmVy L2NvbmZpZ3VyZS5hYwotLS0tIGEvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2Ric2Vy dmVyL2NvbmZpZ3VyZS5hYwotQEAgLTQwMSw2ICs0MDEsMTAgQEAgaWYgJHdhbnRfaXBhIDsgdGhl bgotICAgIGZpCi0gZmkKLSAKLStkbmwgQ2hlY2sgc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZl IGF2YWlsYWJpbGl0eS4KLStBQ19DSEVDS19IRUFERVJTKHNlbGludXgvc2VsaW51eC5oKQotK0FD X0NIRUNLX0xJQihzZWxpbnV4LCBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUpCi0rCi0gQUNf U1VCU1QoR0RCU0VSVkVSX0RFUEZJTEVTKQotIEFDX1NVQlNUKEdEQlNFUlZFUl9MSUJTKQotIEFD X1NVQlNUKHNydl94bWxidWlsdGluKQotZGlmZiAtLWdpdCBhL2dkYnNlcnZlci9saW51eC1sb3cu Y2MgYi9nZGJzZXJ2ZXIvbGludXgtbG93LmNjCi0tLS0gYS9nZGJzZXJ2ZXIvbGludXgtbG93LmNj Ci0rKysgYi9nZGJzZXJ2ZXIvbGludXgtbG93LmNjCi1AQCAtOTMyLDcgKzkzMiwxNiBAQCBsaW51 eF9wdHJhY2VfZnVuICgpCi0gewotICAgaWYgKHB0cmFjZSAoUFRSQUNFX1RSQUNFTUUsIDAsIChQ VFJBQ0VfVFlQRV9BUkczKSAwLAotIAkgICAgICAoUFRSQUNFX1RZUEVfQVJHNCkgMCkgPCAwKQot LSAgICB0cmFjZV9zdGFydF9lcnJvcl93aXRoX25hbWUgKCJwdHJhY2UiKTsKLSsgICAgewotKyAg ICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87Ci0rCi0rICAgICAgc3RkOjpzdHJpbmcgbXNnIChs aW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzICgpKTsKLSsKLSsgICAgICBtc2cgKz0gXygiQ2Fu bm90IHRyYWNlIGNyZWF0ZWQgcHJvY2VzcyIpOwotKwotKyAgICAgIGVycm5vID0gc2F2ZV9lcnJu bzsKLSsgICAgICB0cmFjZV9zdGFydF9lcnJvcl93aXRoX25hbWUgKG1zZy5jX3N0ciAoKSk7Ci0r ICAgIH0KLSAKLSAgIGlmIChzZXRwZ2lkICgwLCAwKSA8IDApCi0gICAgIHRyYWNlX3N0YXJ0X2Vy cm9yX3dpdGhfbmFtZSAoInNldHBnaWQiKTsKCmRpZmYgLS1naXQgYS9nZGItYnRyb2J1c3QucGF0 Y2ggYi9nZGItYnRyb2J1c3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3 ZWQyMWEuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ0cm9idXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNzIgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IEZlZG9yYSBHREIgcGF0Y2hlcyA8aW52YWxpZEBlbWFpbC5jb20+Ci1EYXRlOiBG cmksIDI3IE9jdCAyMDE3IDIxOjA3OjUwICswMjAwCi1TdWJqZWN0OiBnZGItYnRyb2J1c3QucGF0 Y2gKLQotOzsgQ29udGludWUgYmFja3RyYWNlIGV2ZW4gaWYgYSBmcmFtZSBmaWx0ZXIgdGhyb3dz IGFuIGV4Y2VwdGlvbiAoUGhpbCBNdWxkb29uKS4KLTs7PXB1c2gKLQotVGhpcyBzaG91bGQgZml4 IHRoZSBlcnJvciAgd2l0aCBnbGliLiAgQW4gZXJyb3IgbWVzc2FnZSB3aWxsIHN0aWxsIGJlCi1w cmludGVkLCBidXQgYSBkZWZhdWx0IGJhY2t0cmFjZSB3aWxsIG9jY3VyIGluIHRoaXMgY2FzZS4K LQotLS0KLQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktZnJhbWVmaWx0ZXIuYyBiL2dkYi9w eXRob24vcHktZnJhbWVmaWx0ZXIuYwotLS0tIGEvZ2RiL3B5dGhvbi9weS1mcmFtZWZpbHRlci5j Ci0rKysgYi9nZGIvcHl0aG9uL3B5LWZyYW1lZmlsdGVyLmMKLUBAIC0xMjA0LDYgKzEyMDQsNyBA QCBnZGJweV9hcHBseV9mcmFtZV9maWx0ZXIgKGNvbnN0IHN0cnVjdCBleHRlbnNpb25fbGFuZ3Vh Z2VfZGVmbiAqZXh0bGFuZywKLSAJCQkJICAgICAgIGh0YWJfZXFfcG9pbnRlciwKLSAJCQkJICAg ICAgIE5VTEwpKTsKLSAKLSsgIGludCBjb3VudF9wcmludGVkID0gMDsKLSAgIHdoaWxlICh0cnVl KQotICAgICB7Ci0gICAgICAgZ2RicHlfcmVmPD4gaXRlbSAoUHlJdGVyX05leHQgKGl0ZXJhYmxl LmdldCAoKSkpOwotQEAgLTEyMTIsOCArMTIxMyw4IEBAIGdkYnB5X2FwcGx5X2ZyYW1lX2ZpbHRl ciAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpleHRsYW5nLAotIAl7Ci0g CSAgaWYgKFB5RXJyX09jY3VycmVkICgpKQotIAkgICAgewotLQkgICAgICBnZGJweV9wcmludF9z dGFja19vcl9xdWl0ICgpOwotLQkgICAgICByZXR1cm4gRVhUX0xBTkdfQlRfRVJST1I7Ci0rCSAg ICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwotKwkgICAgICByZXR1cm4gY291bnRfcHJpbnRlZCA+ IDAgPyBFWFRfTEFOR19CVF9FUlJPUiA6IEVYVF9MQU5HX0JUX05PX0ZJTFRFUlM7Ci0gCSAgICB9 Ci0gCSAgYnJlYWs7Ci0gCX0KLUBAIC0xMjQ1LDcgKzEyNDYsOCBAQCBnZGJweV9hcHBseV9mcmFt ZV9maWx0ZXIgKGNvbnN0IHN0cnVjdCBleHRlbnNpb25fbGFuZ3VhZ2VfZGVmbiAqZXh0bGFuZywK LSAgICAgICAvKiBEbyBub3QgZXhpdCBvbiBlcnJvciBwcmludGluZyBhIHNpbmdsZSBmcmFtZS4g IFByaW50IHRoZQotIAkgZXJyb3IgYW5kIGNvbnRpbnVlIHdpdGggb3RoZXIgZnJhbWVzLiAgKi8K LSAgICAgICBpZiAoc3VjY2VzcyA9PSBFWFRfTEFOR19CVF9FUlJPUikKLS0JZ2RicHlfcHJpbnRf c3RhY2tfb3JfcXVpdCAoKTsKLSsJZ2RicHlfcHJpbnRfc3RhY2sgKCk7Ci0rICAgICAgY291bnRf cHJpbnRlZCsrOwotICAgICB9Ci0gCi0gICByZXR1cm4gc3VjY2VzczsKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVyLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWZyYW1lZmlsdGVyLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWZyYW1lZmlsdGVyLmV4cAotQEAgLTI3Nyw5ICsyNzcsMjAgQEAgZ2RiX3Rlc3RfbXVsdGlw bGUgImJ0IDEiICR0ZXN0IHsKLSAjIE5vdyB2ZXJpZnkgdGhhdCB3ZSBjYW4gc2VlIGEgcXVpdC4K LSBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBuYW1lX2Vycm9yID0gS2V5Ym9hcmRJbnRlcnJ1 cHQiIFwKLSAgICAgIkNoYW5nZSBFcnJvckZpbHRlciB0byB0aHJvdyBLZXlib2FyZEludGVycnVw dCIKLS1nZGJfdGVzdCAiYnQgMSIgIlF1aXQiICJidCAxIHdpdGggS2V5Ym9hcmRJbnRlcnJ1cHQi Ci0tCi0tCi0rc2V0IHJlMSBbbXVsdGlfbGluZSBcCi0rCSAgICAgIlB5dGhvbiBFeGNlcHRpb24g PGNsYXNzICdLZXlib2FyZEludGVycnVwdCc+IHdob29wczogIiBcCi0rCSAgICAgIlxcKE1vcmUg c3RhY2sgZnJhbWVzIGZvbGxvd1wuXC5cLlxcKSJdCi0rc2V0IHJlMiBbbXVsdGlfbGluZSBcCi0r CSAgICAgIlB5dGhvbiBFeGNlcHRpb24gPHR5cGUgJ2V4Y2VwdGlvbnMuS2V5Ym9hcmRJbnRlcnJ1 cHQnPiB3aG9vcHM6ICIgXAotKwkgICAgICJcXChNb3JlIHN0YWNrIGZyYW1lcyBmb2xsb3dcLlwu XC5cXCkiXQotK2dkYl90ZXN0X211bHRpcGxlICJidCAxIiAiIiB7Ci0rICAgIC1yZSAtd3JhcCAk cmUxIHsKLSsJcGFzcyAkZ2RiX3Rlc3RfbmFtZQotKyAgICB9Ci0rICAgIC1yZSAtd3JhcCAkcmUy IHsKLSsJcGFzcyAkZ2RiX3Rlc3RfbmFtZQotKyAgICB9Ci0rfQotICMgVGVzdCB3aXRoIG5vIGRl YnVnaW5mbwotIAotICMgV2UgY2Fubm90IHVzZSBwcmVwYXJlX2Zvcl90ZXN0aW5nIGFzIHdlIGhh dmUgdG8gc2V0IHRoZSBzYWZlLXBhdGNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6MTIxOTc0Ny1hdHRh Y2gta2lsbHMucGF0Y2ggYi9nZGItYnoxMjE5NzQ3LWF0dGFjaC1raWxscy5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIzYTM0OS4uMDAwMDAwMAotLS0gYS9nZGItYnoxMjE5 NzQ3LWF0dGFjaC1raWxscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi1G cm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3Jh IEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcg MjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi1iejEyMTk3NDctYXR0YWNoLWtpbGxzLnBhdGNo Ci0KLTs7IE5ldmVyIGtpbGwgUElEIG9uOiBnZGIgZXhlYyBQSUQgKEphbiBLcmF0b2NodmlsLCBS SCBCWiAxMjE5NzQ3KS4KLTs7PXB1c2gramFuCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDE1LTEwL21zZzAwMzAxLmh0bWwKLQotSGksCi0KLWluIHNvbWUgY2FzZXMg d2l0aCBkZWxldGVkIG1haW4gZXhlY3V0YWJsZSBHREIgd2lsbCB3YW50IHRvIGtpbGwgdGhlIGlu ZmVyaW9yLgotCi0kIGNwIC9iaW4vc2xlZXAgL3RtcC9zbGVlcDsvdG1wL3NsZWVwIDFoJnA9JCEK LSQgcm0gL3RtcC9zbGVlcAotJCBnZGIgL3RtcC9zbGVlcCAkcAotR05VIGdkYiAoR0RCKSA3LjEw LjUwLjIwMTUxMDE2LWN2cwotL3RtcC9zbGVlcDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeS4K LUF0dGFjaGluZyB0byBwcm9jZXNzIDk2OTQKLS90bXAvc2xlZXAgKGRlbGV0ZWQpOiBObyBzdWNo IGZpbGUgb3IgZGlyZWN0b3J5LgotQSBwcm9ncmFtIGlzIGJlaW5nIGRlYnVnZ2VkIGFscmVhZHku ICBLaWxsIGl0PyAoeSBvciBuKSBfCi0KLVRoZSBmaXJzdCBhdHRhY2htZW50IG9mICIvdG1wL3Ns ZWVwIiBjb21tYW5kbGluZSBhcmd1bWVudCBlcnJvcnMgYXQ6Ci0KLTI2NyAgICAgICAgICAgICAg IGlmIChzY3JhdGNoX2NoYW4gPCAwKQotMjY4ICAgICAgICAgICAgICAgICBwZXJyb3Jfd2l0aF9u YW1lIChmaWxlbmFtZSk7Ci0xMDUxICAgICAgICAgIGlmIChjYXRjaF9jb21tYW5kX2Vycm9yc19j b25zdCAoZXhlY19maWxlX2F0dGFjaCwgZXhlY2FyZywKLTEwNTIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAhYmF0Y2hfZmxhZykpCi0KLVRoZW4gR0RCIHRyaWVzIHRv IGF0dGFjaCB0byB0aGUgcHJvY2VzcyAkcDoKLQotMTA4MiAgICAgICAgICAgICAgaWYgKGNhdGNo X2NvbW1hbmRfZXJyb3JzIChhdHRhY2hfY29tbWFuZCwgcGlkX29yX2NvcmVfYXJnLAotMTA4MyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhYmF0Y2hfZmxhZykgPT0gMCkK LQotVGhpcyBzdWNjZWVkcyBhbmQgc2luY2UgdGhpcyBtb21lbnQgR0RCIGhhcyBhIHZhbGlkIGlu ZmVyaW9yLiAgQnV0IGRlc3BpdGUgdGhhdAotdGhlIGxpbmVzCi0xMDgyICAgICAgICAgICAgICBp ZiAoY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGF0dGFjaF9jb21tYW5kLCBwaWRfb3JfY29yZV9hcmcs Ci0xMDgzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFiYXRjaF9mbGFn KSA9PSAwKQotc3RpbGwgZmFpbCBiZWNhdXNlIGNvbnNlcXVlbnRseSBhdHRhY2hfY29tbWFuZCgp IGZhaWxzIHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQKLWV4ZWN1dGFibGUgZmlsZToKLQotMjY3ICAg ICAgICAgICAgICAgaWYgKHNjcmF0Y2hfY2hhbiA8IDApCi0yNjggICAgICAgICAgICAgICAgIHBl cnJvcl93aXRoX25hbWUgKGZpbGVuYW1lKTsKLTEwODIgICAgICAgICAgICAgIGlmIChjYXRjaF9j b21tYW5kX2Vycm9ycyAoYXR0YWNoX2NvbW1hbmQsIHBpZF9vcl9jb3JlX2FyZywKLTEwODMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWJhdGNoX2ZsYWcpID09IDApCi0K LWFuZCB0aGVyZWZvcmUgR0RCIGV4ZWN1dGVzIHRoZSBmb2xsb3dpbmc6Ci0KLShnZGIpIGJ0Ci0y MTc5CSAgaWYgKGhhdmVfaW5mZXJpb3JzICgpKQotMjE4MAkgICAgewotMjE4MQkgICAgICBpZiAo IWZyb21fdHR5Ci0yMTgyCQkgIHx8ICFoYXZlX2xpdmVfaW5mZXJpb3JzICgpCi0yMTgzCQkgIHx8 IHF1ZXJ5IChfKCJBIHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQgYWxyZWFkeS4gIEtpbGwgaXQ/ ICIpKSkKLTIxODQJCWl0ZXJhdGVfb3Zlcl9pbmZlcmlvcnMgKGRpc3Bvc2VfaW5mZXJpb3IsIE5V TEwpOwotMjE4NQkgICAgICBlbHNlCi0yMTg2CQllcnJvciAoXygiUHJvZ3JhbSBub3Qga2lsbGVk LiIpKTsKLTIxODcJICAgIH0KLTEwODQJCSAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoY29yZV9m aWxlX2NvbW1hbmQsIHBpZF9vcl9jb3JlX2FyZywKLTEwODUJCQkJCSAgIWJhdGNoX2ZsYWcpOwot Ci1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMjRwcmUt bGludXgtZ251LgotCi1UaGFua3MsCi1KYW4KLQotZ2RiL0NoYW5nZUxvZwotMjAxNS0xMC0xNiAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBtYWluLmMg KGNhcHR1cmVkX21haW4pOiBSdW4gY29yZV9maWxlX2NvbW1hbmQgZm9yIHBpZF9vcl9jb3JlX2Fy ZwotCW9ubHkgaWYgbm90IGhhdmVfaW5mZXJpb3JzICgpLgotCi1nZGIvdGVzdHN1aXRlL0NoYW5n ZUxvZwotMjAxNS0xMC0xNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotCi0JKiBnZGIuYmFzZS9hdHRhY2gta2lsbHMuYzogTmV3LgotCSogZ2RiLmJhc2UvYXR0 YWNoLWtpbGxzLmV4cDogTmV3LgotCi1kaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWlu LmMKLS0tLSBhL2dkYi9tYWluLmMKLSsrKyBiL2dkYi9tYWluLmMKLUBAIC0xMTk5LDcgKzExOTks MTAgQEAgY2FwdHVyZWRfbWFpbl8xIChzdHJ1Y3QgY2FwdHVyZWRfbWFpbl9hcmdzICpjb250ZXh0 KQotIAl7Ci0gCSAgcmV0ID0gY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGF0dGFjaF9jb21tYW5kLCBw aWRfb3JfY29yZV9hcmcsCi0gCQkJCSAgICAgICFiYXRjaF9mbGFnKTsKLS0JICBpZiAocmV0ID09 IDApCi0rCSAgaWYgKHJldCA9PSAwCi0rCSAgICAgIC8qIGF0dGFjaF9jb21tYW5kIGNvdWxkIHN1 Y2NlZWQgcGFydGlhbGx5IGFuZCBjb3JlX2ZpbGVfY29tbWFuZAotKwkJIHdvdWxkIHRyeSB0byBr aWxsIGl0LiAgKi8KLSsJICAgICAgJiYgIWhhdmVfaW5mZXJpb3JzICgpKQotIAkgICAgcmV0ID0g Y2F0Y2hfY29tbWFuZF9lcnJvcnMgKGNvcmVfZmlsZV9jb21tYW5kLAotIAkJCQkJcGlkX29yX2Nv cmVfYXJnLAotIAkJCQkJIWJhdGNoX2ZsYWcpOwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXR0YWNoLWtpbGxzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC1r aWxscy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9hdHRhY2gta2lsbHMuYwotQEAgLTAsMCArMSwyNSBAQAotKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29w eXJpZ2h0IDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDx1bmlzdGQuaD4K LSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHNsZWVwICg2MDApOwotKyAgcmV0dXJuIDA7 Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLWtpbGxzLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLWtpbGxzLmV4cAotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0 YWNoLWtpbGxzLmV4cAotQEAgLTAsMCArMSw0OSBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDE1IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rCi0raWYgeyAhW2Nhbl9zcGF3bl9mb3JfYXR0YWNoXSB9IHsKLSsgICAgcmV0dXJu IDAKLSt9Ci0rCi0rc3RhbmRhcmRfdGVzdGZpbGUKLSsKLStpZiB7IFtidWlsZF9leGVjdXRhYmxl ICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGVdID09IC0xIH0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rIyBTdGFydCB0aGUgcHJvZ3JhbSBydW5uaW5nIGFuZCB0aGVuIHdhaXQgZm9yIGEgYml0 LCB0byBiZSBzdXJlCi0rIyB0aGF0IGl0IGNhbiBiZSBhdHRhY2hlZCB0by4KLSsKLStzZXQgdGVz dF9zcGF3bl9pZCBbc3Bhd25fd2FpdF9mb3JfYXR0YWNoICRiaW5maWxlXQotK3NldCB0ZXN0cGlk IFtzcGF3bl9pZF9nZXRfcGlkICR0ZXN0X3NwYXduX2lkXQotKwotK3JlbW90ZV9leGVjIHRhcmdl dCAiY3AgLXBmIC0tICRiaW5maWxlICRiaW5maWxlLWNvcHkiCi0rcmVtb3RlX2V4ZWMgdGFyZ2V0 ICJybSAtZiAtLSAkYmluZmlsZSIKLSsKLStzZXQgdGVzdCAic3RhcnQgZ2RiIgotK3NldCByZXMg W2dkYl9zcGF3bl93aXRoX2NtZGxpbmVfb3B0cyBcCi0rCSAiLWlleCBcInNldCBoZWlnaHQgMFwi IC1pZXggXCJzZXQgd2lkdGggMFwiIC9Eb0VzTm9UZVh5U3QgJHRlc3RwaWQiXQotK2lmIHsgJHJl cyAhPSAwfSB7Ci0rICAgIGZhaWwgIiR0ZXN0IChzcGF3bikiCi0rICAgIGtpbGxfd2FpdF9zcGF3 bmVkX3Byb2Nlc3MgJHRlc3Rfc3Bhd25faWQKLSsgICAgcmV0dXJuIC0xCi0rfQotK2dkYl90ZXN0 X211bHRpcGxlICIiICR0ZXN0IHsKLSsgICAgLXJlICJcclxuQXR0YWNoaW5nIHRvIC4qXHJcbiRn ZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotKwotK2tpbGxfd2FpdF9z cGF3bmVkX3Byb2Nlc3MgJHRlc3Rfc3Bhd25faWQKCmRpZmYgLS1naXQgYS9nZGItYno1MzMxNzYt Zm9ydHJhbi1vbXAtc3RlcC5wYXRjaCBiL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjY0MTE1Li4wMDAwMDAwCi0tLSBh L2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTMwICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBGZWRvcmEgR0RCIHBhdGNoZXMgPGludmFsaWRAZW1haWwuY29tPgotRGF0ZTogRnJp LCAyNyBPY3QgMjAxNyAyMTowNzo1MCArMDIwMAotU3ViamVjdDogZ2RiLWJ6NTMzMTc2LWZvcnRy YW4tb21wLXN0ZXAucGF0Y2gKLQotOzsgRml4IHN0ZXBwaW5nIHdpdGggT01QIHBhcmFsbGVsIEZv cnRyYW4gc2VjdGlvbnMgKEJaIDUzMzE3NikuCi07Oz1wdXNoK2phbjogSXQgcmVxdWlyZXMgc29t ZSBiZXR0ZXIgRFdBUkYgYW5ub3RhdGlvbnMuCi0KLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9zaG93X2J1Zy5jZ2k/aWQ9NTMzMTc2I2M0Ci0KLUkgZmluZCBpdCBhIGJ1ZyBpbiBEV0FSRiBh bmQgZ2RiIGJlaGF2ZXMgY29ycmVjdGx5IGFjY29yZGluZyB0byBpdC4gIEZyb20gdGhlCi1jdXJy ZW50IERXQVJGJ3MgcG9pbnQgb2YgdmlldyB0aGUgaXMgYSBmdW5jdGlvbiBjYWxsIHdoaWNoIHlv dSBza2lwIGJ5ICJuZXh0Ii4KLQotSWYgeW91IGhpZGUgYW55IC91c3IvbGliL2RlYnVnIHN1Y2gg YXMgdXNpbmc6Ci1nZGIgLW54IC1leCAnc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IC9xd2UnIC1l eCAnZmlsZSAuL3RwY29tbW9uX2dmb3J0cmFuNDQnCi1hbmQgdXNlICJzdGVwIiBjb21tYW5kIGlu c3RlYWQgb2YgIm5leHQiIHRoZXJlIGl0IHdpbGwgd29yay4KLShZb3UgbmVlZCB0byBoaWRlIGRl YnVnaW5mbyBmcm9tIGxpYmdvbXAgYXMgeW91IHdvdWxkIHN0ZXAgaW50byBsaWJnb21wIHNvdXJj ZXMKLXRvIG1haW50YWluIHRoZSB0aHJlYWRzIGZvciBleGVjdXRpb24uKQotCi1UaGVyZSBzaG91 bGQgYmUgc29tZSBEV0FSRiBleHRlbnNpb24gZm9yIGl0LCBjdXJyZW50bHkgdHJpZWQgdG8gZGV0 ZWN0Ci1zdWJzdHJpbmcgIi5vbXBfZm4uIiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCAiTUFJ Tl9fLm9tcF9mbi4wIiBhbmQgZG8gbm90Ci1jb25zaWRlciBzdWNoIHN1Yi1mdW5jdGlvbiBhcyBh IHNraXBwYWJsZSBieSAibmV4dCIuCi0KLUFub3RoZXIgcHJvYmxlbSBpcyB0aGF0IHdpdGggInNl dCBzY2hlZHVsZXItbG9ja2luZyIgYmVpbmcgIm9mZiIgKGRlZmF1bHQKLXVwc3RyZWFtKSBvciAi c3RlcCIgKGRlZmF1bHQgaW4gRi9SSEVMKSB0aGUgc2ltdWx0YW5lb3VzIGV4ZWN1dGlvbiBvZiB0 aGUKLXRocmVhZHMgaXMgaW5jb252ZW5pZW50LiAgU2V0dGluZyBpdCB0byAib24iIHdpbGwgbG9j a3VwIHRoZSBkZWJ1Z2dpbmcgYXMgdGhlCi10aHJlYWRzIG5lZWQgdG8gZ2V0IHN5bmNocm9uaXpl ZCBhdCBzb21lIHBvaW50LiAgVGhpcyBpcyBhIG1vcmUgZ2VuZXJhbAotZGVidWdnaW5nIHByb2Js ZW0gb2YgR09NUCBvdXRzaWRlIG9mIHRoZSBzY29wZSBvZiB0aGlzIEJ1Zy4KLQotZGlmZiAtLWdp dCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwotLS0tIGEvZ2RiL2luZnJ1bi5jCi0rKysg Yi9nZGIvaW5mcnVuLmMKLUBAIC02Nzg4LDYgKzY3ODgsMTYgQEAgcHJvY2Vzc19ldmVudF9zdG9w X3Rlc3QgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQotIAotICAgICAgIGlm IChlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX292ZXJfY2FsbHMgPT0gU1RFUF9PVkVS X0FMTCkKLSAJewotKwkgIHN0cnVjdCBzeW1ib2wgKnN0b3BfZm4gPSBmaW5kX3BjX2Z1bmN0aW9u IChzdG9wX3BjKTsKLSsJICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnN0b3BmID0gbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjIChzdG9wX3BjKS5taW5zeW07Ci0rCi0rCSAgaWYgKChzdG9wX2Zu ID09IE5VTEwKLSsJICAgICAgIHx8IHN0cnN0ciAoc3RvcF9mbi0+bGlua2FnZV9uYW1lICgpLCAi Lm9tcF9mbi4iKSA9PSBOVUxMKQotKwkgICAgICAvKiBnY2MtNC43LjItOS5mYzE5Lng4Nl82NCB1 c2VzIGEgbmV3IGZvcm1hdC4gICovCi0rCSAgICAgICYmIChzdG9wZiA9PSBOVUxMCi0rCQkgIHx8 IHN0cnN0ciAoc3RvcGYtPmxpbmthZ2VfbmFtZSAoKSwgIi5fb21wX2ZuLiIpID09IE5VTEwpKQot K3sJLyogIi5vbXBfZm4uIiAqLwotKwotIAkgIC8qIFdlJ3JlIGRvaW5nIGEgIm5leHQiLgotIAot IAkgICAgIE5vcm1hbCAoZm9yd2FyZCkgZXhlY3V0aW9uOiBzZXQgYSBicmVha3BvaW50IGF0IHRo ZQotQEAgLTY4MjEsNiArNjgzMSw3IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0IChzdHJ1Y3Qg ZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKLSAKLSAJICBrZWVwX2dvaW5nIChlY3MpOwot IAkgIHJldHVybjsKLSt9CS8qICIub21wX2ZuLiIgKi8KLSAJfQotIAotICAgICAgIC8qIElmIHdl IGFyZSBpbiBhIGZ1bmN0aW9uIGNhbGwgdHJhbXBvbGluZSAoYSBzdHViIGJldHdlZW4gdGhlCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAu ZXhwCi1AQCAtMCwwICsxLDMxIEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0 IHRlc3RmaWxlICJvbXAtc3RlcCIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtk ZWJ1ZyBmOTAgYWRkaXRpb25hbF9mbGFncz0tZm9wZW5tcH1dIH0gewotKyAgICByZXR1cm4gLTEK LSt9Ci0rCi0raWYgIVtydW50byBbZ2RiX2dldF9saW5lX251bWJlciAic3RhcnQtaGVyZSJdXSB7 Ci0rICAgIHBlcnJvciAiQ291bGRuJ3QgcnVuIHRvIHN0YXJ0LWhlcmUiCi0rICAgIHJldHVybiAw Ci0rfQotKwotK2dkYl90ZXN0ICJuZXh0IiB7IVwkb21wIHBhcmFsbGVsfSAic3RlcCBjbG9zZXIi Ci0rZ2RiX3Rlc3QgIm5leHQiIHthXChvbXBfZ2V0X3RocmVhZF9udW1cKFwpIFwrIDFcKSA9IDF9 ICJzdGVwIGludG8gb21wIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJzdWNjZXNzIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic3VjY2VzcyIgIi4qc3Vj Y2Vzcy4qIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAu ZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L29tcC1zdGVwLmY5MAotQEAgLTAsMCArMSwzMiBAQAotKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotKyAgICAgIHVzZSBvbXBfbGliCi0rICAgICAgaW50ZWdlciBudGhyZWFkcywgaSwgYSgx MDAwKQotKyAgICAgIG50aHJlYWRzID0gb21wX2dldF9udW1fdGhyZWFkcygpCi0rICAgICAgaWYg KG50aHJlYWRzIC5ndC4gMTAwMCkgY2FsbCBhYm9ydAotKwotKyAgICAgIGRvIGkgPSAxLCBudGhy ZWFkcwotKyAgICAgICAgICBhKGkpID0gMAotKyAgICAgIGVuZCBkbwotKyAgICAgIHByaW50ICos ICJzdGFydC1oZXJlIgotKyEkb21wIHBhcmFsbGVsCi0rICAgICAgYShvbXBfZ2V0X3RocmVhZF9u dW0oKSArIDEpID0gMQotKyEkb21wIGVuZCBwYXJhbGxlbAotKyAgICAgIGRvIGkgPSAxLCBudGhy ZWFkcwotKyAgICAgICAgICBpZiAoYShpKSAubmUuIDEpIGNhbGwgYWJvcnQKLSsgICAgICBlbmQg ZG8KLSsgICAgICBwcmludCAqLCAic3VjY2VzcyIKLSsgICAgICBlbmQKCmRpZmYgLS1naXQgYS9n ZGItZHRzLXJoZWw2LXB5dGhvbi1jb21wYXQucGF0Y2ggYi9nZGItZHRzLXJoZWw2LXB5dGhvbi1j b21wYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NGU3ZTcuLjAwMDAw MDAKLS0tIGEvZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMzM0ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBGZWRvcmEgR0RCIHBhdGNoZXMgPGludmFsaWRAZW1haWwuY29tPgotRGF0 ZTogRnJpLCAyNyBPY3QgMjAxNyAyMTowNzo1MCArMDIwMAotU3ViamVjdDogZ2RiLWR0cy1yaGVs Ni1weXRob24tY29tcGF0LnBhdGNoCi0KLTs7IFtyaGVsNl0gRFRTIGJhY2t3YXJkIFB5dGhvbiBj b21wYXRpYmlsaXR5IEFQSSAoQlogMTAyMDAwNCwgUGhpbCBNdWxkb29uKS4KLTs7PWZlZG9yYQot Ci1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEwMjAwMDQKLQot ZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRp cmVjdG9yeS9NYWtlZmlsZS5pbgotLS0tIGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmlu Ci0rKysgYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KLUBAIC03MSw2ICs3MSw4IEBA IFBZVEhPTl9GSUxFX0xJU1QgPSBcCi0gCWdkYi9fX2luaXRfXy5weSBcCi0gCWdkYi9GcmFtZURl Y29yYXRvci5weSBcCi0gCWdkYi9GcmFtZUl0ZXJhdG9yLnB5IFwKLSsJZ2RiL0ZyYW1lV3JhcHBl ci5weSBcCi0rCWdkYi9iYWNrdHJhY2UucHkgXAotIAlnZGIvZnJhbWVzLnB5IFwKLSAJZ2RiL3By aW50aW5nLnB5IFwKLSAJZ2RiL3Byb21wdC5weSBcCi1AQCAtNzksNiArODEsNyBAQCBQWVRIT05f RklMRV9MSVNUID0gXAotIAlnZGIveG1ldGhvZC5weSBcCi0gCWdkYi9jb21tYW5kL19faW5pdF9f LnB5IFwKLSAJZ2RiL2NvbW1hbmQvZXhwbG9yZS5weSBcCi0rCWdkYi9jb21tYW5kL2JhY2t0cmFj ZS5weSBcCi0gCWdkYi9jb21tYW5kL2ZyYW1lX2ZpbHRlcnMucHkgXAotIAlnZGIvY29tbWFuZC9w cmV0dHlfcHJpbnRlcnMucHkgXAotIAlnZGIvY29tbWFuZC9wcm9tcHQucHkgXAotZGlmZiAtLWdp dCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvRnJhbWVXcmFwcGVyLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQotQEAgLTAsMCArMSwxMjIg QEAKLSsjIFdyYXBwZXIgQVBJIGZvciBmcmFtZXMuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDgs IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLSsKLSsjIEZJWE1FOiBhcmd1YWJseSBhbGwg dGhpcyBzaG91bGQgYmUgb24gRnJhbWUgc29tZWhvdy4KLStjbGFzcyBGcmFtZVdyYXBwZXI6Ci0r ICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAgc2VsZi5mcmFtZSA9IGZy YW1lOwotKwotKyAgICBkZWYgd3JpdGVfc3ltYm9sIChzZWxmLCBzdHJlYW0sIHN5bSwgYmxvY2sp OgotKyAgICAgICAgaWYgbGVuIChzeW0ubGlua2FnZV9uYW1lKToKLSsgICAgICAgICAgICBuc3lt LCBpc19maWVsZF9vZl90aGlzID0gZ2RiLmxvb2t1cF9zeW1ib2wgKHN5bS5saW5rYWdlX25hbWUs IGJsb2NrKQotKyAgICAgICAgICAgIGlmIG5zeW0uYWRkcl9jbGFzcyAhPSBnZGIuU1lNQk9MX0xP Q19SRUdJU1RFUjoKLSsgICAgICAgICAgICAgICAgc3ltID0gbnN5bQotKwotKyAgICAgICAgc3Ry ZWFtLndyaXRlIChzeW0ucHJpbnRfbmFtZSArICI9IikKLSsgICAgICAgIHRyeToKLSsgICAgICAg ICAgICB2YWwgPSBzZWxmLnJlYWRfdmFyIChzeW0pCi0rICAgICAgICAgICAgaWYgdmFsICE9IE5v bmU6Ci0rICAgICAgICAgICAgICAgIHZhbCA9IHN0ciAodmFsKQotKyAgICAgICAgIyBGSVhNRTog d291bGQgYmUgbmljZSB0byBoYXZlIGEgbW9yZSBwcmVjaXNlIGV4Y2VwdGlvbiBoZXJlLgotKyAg ICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyB0ZXh0OgotKyAgICAgICAgICAgIHZhbCA9IHRl eHQKLSsgICAgICAgIGlmIHZhbCA9PSBOb25lOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAo Ij8/PyIpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoc3RyICh2 YWwpKQotKwotKyAgICBkZWYgcHJpbnRfZnJhbWVfbG9jYWxzIChzZWxmLCBzdHJlYW0sIGZ1bmMp OgotKwotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGJsb2NrID0gc2VsZi5mcmFtZS5ibG9j aygpCi0rICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgotKyAgICAgICAgICAgIGJsb2NrID0g Tm9uZQotKwotKyAgICAgICAgd2hpbGUgYmxvY2sgIT0gTm9uZToKLSsgICAgICAgICAgICBpZiBi bG9jay5pc19nbG9iYWwgb3IgYmxvY2suaXNfc3RhdGljOgotKyAgICAgICAgICAgICAgICBicmVh awotKwotKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAgICAgICBpZiBzeW0uaXNf YXJndW1lbnQ6Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgICAgIHNl bGYud3JpdGVfc3ltYm9sIChzdHJlYW0sIHN5bSwgYmxvY2spCi0rICAgICAgICAgICAgc3RyZWFt LndyaXRlICgnXG4nKQotKwotKyAgICBkZWYgcHJpbnRfZnJhbWVfYXJncyAoc2VsZiwgc3RyZWFt LCBmdW5jKToKLSsKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBibG9jayA9IHNlbGYuZnJh bWUuYmxvY2soKQotKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKLSsgICAgICAgICAgICBi bG9jayA9IE5vbmUKLSsKLSsgICAgICAgIHdoaWxlIGJsb2NrICE9IE5vbmU6Ci0rICAgICAgICAg ICAgaWYgYmxvY2suZnVuY3Rpb24gIT0gTm9uZToKLSsgICAgICAgICAgICAgICAgYnJlYWsKLSsg ICAgICAgICAgICBibG9jayA9IGJsb2NrLnN1cGVyYmxvY2sKLSsKLSsgICAgICAgIGZpcnN0ID0g VHJ1ZQotKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAgICAgICBpZiBub3Qgc3lt LmlzX2FyZ3VtZW50OgotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICAgICAg ICBpZiBub3QgZmlyc3Q6Ci0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiwgIikKLSsK LSsgICAgICAgICAgICBzZWxmLndyaXRlX3N5bWJvbCAoc3RyZWFtLCBzeW0sIGJsb2NrKQotKyAg ICAgICAgICAgIGZpcnN0ID0gRmFsc2UKLSsKLSsgICAgIyBGSVhNRTogdGhpcyBzaG91bGQgcHJv YmFibHkganVzdCBiZSBhIG1ldGhvZCBvbiBnZGIuRnJhbWUuCi0rICAgICMgQnV0IHRoZW4gd2Ug bmVlZCBzdHJlYW0gd3JhcHBlcnMuCi0rICAgIGRlZiBkZXNjcmliZSAoc2VsZiwgc3RyZWFtLCBm dWxsKToKLSsgICAgICAgIGlmIHNlbGYudHlwZSAoKSA9PSBnZGIuRFVNTVlfRlJBTUU6Ci0rICAg ICAgICAgICAgc3RyZWFtLndyaXRlICgiIDxmdW5jdGlvbiBjYWxsZWQgZnJvbSBnZGI+XG4iKQot KyAgICAgICAgZWxpZiBzZWxmLnR5cGUgKCkgPT0gZ2RiLlNJR1RSQU1QX0ZSQU1FOgotKyAgICAg ICAgICAgIHN0cmVhbS53cml0ZSAoIiA8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPlxuIikKLSsgICAg ICAgIGVsc2U6Ci0rICAgICAgICAgICAgc2FsID0gc2VsZi5maW5kX3NhbCAoKQotKyAgICAgICAg ICAgIHBjID0gc2VsZi5wYyAoKQotKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgKCkKLSsg ICAgICAgICAgICBpZiBub3QgbmFtZToKLSsgICAgICAgICAgICAgICAgbmFtZSA9ICI/PyIKLSsg ICAgICAgICAgICBpZiBwYyAhPSBzYWwucGMgb3Igbm90IHNhbC5zeW10YWI6Ci0rICAgICAgICAg ICAgICAgIHN0cmVhbS53cml0ZSAoIiAweCUwOHggaW4iICUgcGMpCi0rICAgICAgICAgICAgc3Ry ZWFtLndyaXRlICgiICIgKyBuYW1lICsgIiAoIikKLSsKLSsgICAgICAgICAgICBmdW5jID0gc2Vs Zi5mdW5jdGlvbiAoKQotKyAgICAgICAgICAgIHNlbGYucHJpbnRfZnJhbWVfYXJncyAoc3RyZWFt LCBmdW5jKQotKwotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIikiKQotKwotKyAgICAgICAg ICAgIGlmIHNhbC5zeW10YWIgYW5kIHNhbC5zeW10YWIuZmlsZW5hbWU6Ci0rICAgICAgICAgICAg ICAgIHN0cmVhbS53cml0ZSAoIiBhdCAiICsgc2FsLnN5bXRhYi5maWxlbmFtZSkKLSsgICAgICAg ICAgICAgICAgc3RyZWFtLndyaXRlICgiOiIgKyBzdHIgKHNhbC5saW5lKSkKLSsKLSsgICAgICAg ICAgICBpZiBub3Qgc2VsZi5uYW1lICgpIG9yIChub3Qgc2FsLnN5bXRhYiBvciBub3Qgc2FsLnN5 bXRhYi5maWxlbmFtZSk6Ci0rICAgICAgICAgICAgICAgIGxpYiA9IGdkYi5zb2xpYl9uYW1lIChw YykKLSsgICAgICAgICAgICAgICAgaWYgbGliOgotKyAgICAgICAgICAgICAgICAgICAgc3RyZWFt LndyaXRlICgiIGZyb20gIiArIGxpYikKLSsKLSsgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCJc biIpCi0rCi0rICAgICAgICAgICAgaWYgZnVsbDoKLSsgICAgICAgICAgICAgICAgc2VsZi5wcmlu dF9mcmFtZV9sb2NhbHMgKHN0cmVhbSwgZnVuYykKLSsKLSsgICAgZGVmIF9fZ2V0YXR0cl9fIChz ZWxmLCBuYW1lKToKLSsgICAgICAgIHJldHVybiBnZXRhdHRyIChzZWxmLmZyYW1lLCBuYW1lKQot ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9u L2xpYi9nZGIvYmFja3RyYWNlLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQotQEAgLTAsMCArMSw0MSBA QAotKyMgRmlsdGVyaW5nIGJhY2t0cmFjZS4KLSsKLSsjIENvcHlyaWdodCAoQykgMjAwOCwgMjAx MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotK2ltcG9ydCBpdGVydG9vbHMKLSsKLSsjIE91ciBv bmx5IGV4cG9ydHMuCi0rX19hbGxfXyA9IFsncHVzaF9mcmFtZV9maWx0ZXInLCAnY3JlYXRlX2Zy YW1lX2ZpbHRlciddCi0rCi0rb2xkX2ZyYW1lX2ZpbHRlciA9IE5vbmUKLSsKLStkZWYgcHVzaF9m cmFtZV9maWx0ZXIgKGNvbnN0cnVjdG9yKToKLSsgICAgIiIiUmVnaXN0ZXIgYSBuZXcgYmFja3Ry YWNlIGZpbHRlciBjbGFzcyB3aXRoIHRoZSAnYmFja3RyYWNlJyBjb21tYW5kLgotK1RoZSBmaWx0 ZXIgd2lsbCBiZSBwYXNzZWQgYW4gaXRlcmF0b3IgYXMgYW4gYXJndW1lbnQuICBUaGUgaXRlcmF0 b3IKLSt3aWxsIHJldHVybiBnZGIuRnJhbWUtbGlrZSBvYmplY3RzLiAgVGhlIGZpbHRlciBzaG91 bGQgaW4gdHVybiBhY3QgYXMKLSthbiBpdGVyYXRvciByZXR1cm5pbmcgc3VjaCBvYmplY3RzLiIi IgotKyAgICBnbG9iYWwgb2xkX2ZyYW1lX2ZpbHRlcgotKyAgICBpZiBvbGRfZnJhbWVfZmlsdGVy ID09IE5vbmU6Ci0rICAgICAgICBvbGRfZnJhbWVfZmlsdGVyID0gY29uc3RydWN0b3IKLSsgICAg ZWxzZToKLSsgICAgICAgIG9sZF9mcmFtZV9maWx0ZXIgPSBsYW1iZGEgaXRlcmF0b3IsIGZpbHRl ciA9IGZyYW1lX2ZpbHRlcjogY29uc3RydWN0b3IgKGZpbHRlcihpdGVyYXRvcikpCi0rCi0rZGVm IGNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpOgotKyAgICBnbG9iYWwgb2xkX2ZyYW1lX2ZpbHRl cgotKyAgICBpZiBvbGRfZnJhbWVfZmlsdGVyIGlzIE5vbmU6Ci0rICAgICAgICByZXR1cm4gaXRl cgotKyAgICByZXR1cm4gb2xkX2ZyYW1lX2ZpbHRlciAoaXRlcikKLWRpZmYgLS1naXQgYS9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC9iYWNrdHJhY2UucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKLUBAIC0wLDAg KzEsMTEyIEBACi0rIyBOZXcgYmFja3RyYWNlIGNvbW1hbmQuCi0rCi0rIyBDb3B5cmlnaHQgKEMp IDIwMDgsIDIwMDksIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLStpbXBvcnQgZ2RiLmJh Y2t0cmFjZQotK2ltcG9ydCBpdGVydG9vbHMKLStmcm9tIGdkYi5GcmFtZUl0ZXJhdG9yIGltcG9y dCBGcmFtZUl0ZXJhdG9yCi0rZnJvbSBnZGIuRnJhbWVXcmFwcGVyIGltcG9ydCBGcmFtZVdyYXBw ZXIKLStpbXBvcnQgc3lzCi0rCi0rY2xhc3MgUmV2ZXJzZUJhY2t0cmFjZVBhcmFtZXRlciAoZ2Ri LlBhcmFtZXRlcik6Ci0rICAgICIiIlRoZSBuZXctYmFja3RyYWNlIGNvbW1hbmQgY2FuIHNob3cg YmFja3RyYWNlcyBpbiAncmV2ZXJzZScgb3JkZXIuCi0rVGhpcyBtZWFucyB0aGF0IHRoZSBpbm5l cm1vc3QgZnJhbWUgd2lsbCBiZSBwcmludGVkIGxhc3QuCi0rTm90ZSB0aGF0IHJldmVyc2UgYmFj a3RyYWNlcyBhcmUgbW9yZSBleHBlbnNpdmUgdG8gY29tcHV0ZS4iIiIKLSsKLSsgICAgc2V0X2Rv YyA9ICJFbmFibGUgb3IgZGlzYWJsZSByZXZlcnNlIGJhY2t0cmFjZXMuIgotKyAgICBzaG93X2Rv YyA9ICJTaG93IHdoZXRoZXIgYmFja3RyYWNlcyB3aWxsIGJlIHByaW50ZWQgaW4gcmV2ZXJzZSBv cmRlci4iCi0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIGdkYi5QYXJhbWV0 ZXIuX19pbml0X18gKHNlbGYsICJyZXZlcnNlLWJhY2t0cmFjZSIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFDSywgZ2RiLlBBUkFNX0JPT0xFQU4pCi0r ICAgICAgICAjIERlZmF1bHQgdG8gY29tcGF0aWJpbGl0eSB3aXRoIGdkYi4KLSsgICAgICAgIHNl bGYudmFsdWUgPSBGYWxzZQotKwotK2NsYXNzIEZpbHRlcmluZ0JhY2t0cmFjZSAoZ2RiLkNvbW1h bmQpOgotKyAgICAiIiJQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5u ZXJtb3N0IENPVU5UIGZyYW1lcy4KLStXaXRoIGEgbmVnYXRpdmUgYXJndW1lbnQsIHByaW50IG91 dGVybW9zdCAtQ09VTlQgZnJhbWVzLgotK1VzZSBvZiB0aGUgJ2Z1bGwnIHF1YWxpZmllciBhbHNv IHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuCi0rVXNlIG9mIHRoZSAn cmF3JyBxdWFsaWZpZXIgYXZvaWRzIGFueSBmaWx0ZXJpbmcgYnkgbG9hZGFibGUgbW9kdWxlcy4K LSsiIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgICMgRklYTUU6IHRo aXMgaXMgbm90IHdvcmtpbmcgcXVpdGUgd2VsbCBlbm91Z2ggdG8gcmVwbGFjZQotKyAgICAgICAg IyAiYmFja3RyYWNlIiB5ZXQuCi0rICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyAoc2VsZiwg Im5ldy1iYWNrdHJhY2UiLCBnZGIuQ09NTUFORF9TVEFDSykKLSsgICAgICAgIHNlbGYucmV2ZXJz ZSA9IFJldmVyc2VCYWNrdHJhY2VQYXJhbWV0ZXIoKQotKwotKyAgICBkZWYgcmV2ZXJzZV9pdGVy IChzZWxmLCBpdGVyKToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAgICBmb3IgaXRlbSBp biBpdGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0rICAgICAgICByZXN1 bHQucmV2ZXJzZSgpCi0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0rCi0rICAgIGRlZiBmaW5hbF9u IChzZWxmLCBpdGVyLCB4KToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAgICBmb3IgaXRl bSBpbiBpdGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0rICAgICAgICBy ZXR1cm4gcmVzdWx0W3g6XQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5 KToKLSsgICAgICAgIGkgPSAwCi0rICAgICAgICBjb3VudCA9IDAKLSsgICAgICAgIGZpbHRlciA9 IFRydWUKLSsgICAgICAgIGZ1bGwgPSBGYWxzZQotKwotKyAgICAgICAgZm9yIHdvcmQgaW4gYXJn LnNwbGl0ICgiICIpOgotKyAgICAgICAgICAgIGlmIHdvcmQgPT0gJyc6Ci0rICAgICAgICAgICAg ICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgZWxpZiB3b3JkID09ICdyYXcnOgotKyAgICAgICAg ICAgICAgICBmaWx0ZXIgPSBGYWxzZQotKyAgICAgICAgICAgIGVsaWYgd29yZCA9PSAnZnVsbCc6 Ci0rICAgICAgICAgICAgICAgIGZ1bGwgPSBUcnVlCi0rICAgICAgICAgICAgZWxzZToKLSsgICAg ICAgICAgICAgICAgY291bnQgPSBpbnQgKHdvcmQpCi0rCi0rICAgICAgICAjIEZJWE1FOiBwcm92 aWRlIG9wdGlvbiB0byBzdGFydCBhdCBzZWxlY3RlZCBmcmFtZQotKyAgICAgICAgIyBIb3dldmVy LCBzaG91bGQgc3RpbGwgbnVtYmVyIGFzIGlmIHN0YXJ0aW5nIGZyb20gbmV3ZXN0Ci0rICAgICAg ICBuZXdlc3RfZnJhbWUgPSBnZGIubmV3ZXN0X2ZyYW1lKCkKLSsgICAgICAgIGlmIHN5cy52ZXJz aW9uX2luZm8ubWFqb3IgPj0gMzoKLSsgICAgICAgICAgICBpdGVyID0gbWFwIChGcmFtZVdyYXBw ZXIsIEZyYW1lSXRlcmF0b3IgKG5ld2VzdF9mcmFtZSkpCi0rICAgICAgICBlbHNlOgotKyAgICAg ICAgICAgIGl0ZXIgPSBpdGVydG9vbHMuaW1hcCAoRnJhbWVXcmFwcGVyLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVJdGVyYXRvciAobmV3ZXN0X2ZyYW1lKSkKLSsg ICAgICAgIGlmIGZpbHRlcjoKLSsgICAgICAgICAgICBpdGVyID0gZ2RiLmJhY2t0cmFjZS5jcmVh dGVfZnJhbWVfZmlsdGVyIChpdGVyKQotKwotKyAgICAgICAgIyBOb3cgd3JhcCBpbiBhbiBpdGVy YXRvciB0aGF0IG51bWJlcnMgdGhlIGZyYW1lcy4KLSsgICAgICAgIGlmIHN5cy52ZXJzaW9uX2lu Zm8ubWFqb3IgPj0gMzoKLSsgICAgICAgICAgICBpdGVyID0gemlwIChpdGVydG9vbHMuY291bnQg KDApLCBpdGVyKQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBpdGVyID0gaXRlcnRvb2xz Lml6aXAgKGl0ZXJ0b29scy5jb3VudCAoMCksIGl0ZXIpCi0rCi0rICAgICAgICAjIFJldmVyc2Ug aWYgdGhlIHVzZXIgd2FudGVkIHRoYXQuCi0rICAgICAgICBpZiBzZWxmLnJldmVyc2UudmFsdWU6 Ci0rICAgICAgICAgICAgaXRlciA9IHNlbGYucmV2ZXJzZV9pdGVyIChpdGVyKQotKwotKyAgICAg ICAgIyBFeHRyYWN0IHN1Yi1yYW5nZSB1c2VyIHdhbnRzLgotKyAgICAgICAgaWYgY291bnQgPCAw OgotKyAgICAgICAgICAgIGl0ZXIgPSBzZWxmLmZpbmFsX24gKGl0ZXIsIGNvdW50KQotKyAgICAg ICAgZWxpZiBjb3VudCA+IDA6Ci0rICAgICAgICAgICAgaXRlciA9IGl0ZXJ0b29scy5pc2xpY2Ug KGl0ZXIsIDAsIGNvdW50KQotKwotKyAgICAgICAgZm9yIHBhaXIgaW4gaXRlcjoKLSsgICAgICAg ICAgICBzeXMuc3Rkb3V0LndyaXRlICgiIyUtMmQiICUgcGFpclswXSkKLSsgICAgICAgICAgICBw YWlyWzFdLmRlc2NyaWJlIChzeXMuc3Rkb3V0LCBmdWxsKQotKwotK0ZpbHRlcmluZ0JhY2t0cmFj ZSgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv aGVscC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKLUBAIC0xMjks NyArMTI5LDkgQEAgZ2RiX3Rlc3QgImFwcm9wb3MgYXByb3BvcyIgImFwcm9wb3MgLS0gU2VhcmNo IGZvciBjb21tYW5kcyBtYXRjaGluZyBhIFJFR0VYUC4qIgotIAotICMgVGVzdCBhcHJvcG9zIGZv ciBjb21tYW5kcyBoYXZpbmcgYWxpYXNlcy4KLSBnZGJfdGVzdCAiYXByb3BvcyBQcmludCBiYWNr dHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5uZXJtb3N0IENPVU5UIGZyYW1lc1wuIiBc Ci0tICAgICJiYWNrdHJhY2UsIHdoZXJlLCBidCAtLSBQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0 YWNrIGZyYW1lcywgb3IgaW5uZXJtb3N0IENPVU5UIGZyYW1lc1wuIgotKyAgICBbbXVsdGlfbGlu ZSBcCi0rCSAiYmFja3RyYWNlLCB3aGVyZSwgYnQgLS0gUHJpbnQgYmFja3RyYWNlIG9mIGFsbCBz dGFjayBmcmFtZXMsIG9yIGlubmVybW9zdCBDT1VOVCBmcmFtZXNcLiIgXAotKwkgIm5ldy1iYWNr dHJhY2UgLS0gUHJpbnQgYmFja3RyYWNlIG9mIGFsbCBzdGFjayBmcmFtZXMsIG9yIGlubmVybW9z dCBDT1VOVCBmcmFtZXNcLiJdCi0gCi0gIyBUZXN0IGhlbHAgZm9yIGNvbW1hbmRzIGhhdmluZyBh bGlhc2VzLgotIGdkYl90ZXN0ICJoZWxwIGJ0IiAiYmFja3RyYWNlLCB3aGVyZSwgYnRcW1xyXG5c XStQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5uZXJtb3N0IENPVU5U IGZyYW1lc1wuLioiCgpkaWZmIC0tZ2l0IGEvZ2RiLWduYXQtZHdhcmYtY3Jhc2gtM29mMy5wYXRj aCBiL2dkYi1nbmF0LWR3YXJmLWNyYXNoLTNvZjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDhlMWZjN2IuLjAwMDAwMDAKLS0tIGEvZ2RiLWduYXQtZHdhcmYtY3Jhc2gtM29m My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxp bnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAK LVN1YmplY3Q6IGdkYi1nbmF0LWR3YXJmLWNyYXNoLTNvZjMucGF0Y2gKLQotOzsgRml4IGNyYXNo IG9mIC1yZWFkbm93IC91c3IvbGliL2RlYnVnL3Vzci9iaW4vZ25hdGJpbmQuZGVidWcgKEJaIDEw NjkyMTEpLgotOzs9cHVzaCtqYW4KLQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTQtMDIvbXNnMDA3MzEuaHRtbAotCi0tLTZUcm5sdFN0WFc0aXdtaTAKLUNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjog aW5saW5lCi0KLUhpLAotCi1QUiAxNjU4MToKLQlHREIgY3Jhc2ggb24gaW5oZXJpdF9hYnN0cmFj dF9kaWVzIGluZmluaXRlIHJlY3Vyc2lvbgotCWh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemls bGEvc2hvd19idWcuY2dpP2lkPTE2NTgxCi0KLWZpeGVkIGNyYXNoIGZyb20gYW4gaW5maW5pdGUg cmVjdXJzaW9uLiAgQnV0IGluIHJhcmUgY2FzZXMgdGhlIG5ldyBjb2RlIGNhbgotbm93IGdkYl9h c3NlcnQoKSBkdWUgdG8gd2VpcmQgRFdBUkYgZmlsZS4KLQotSSBkbyBub3QgeWV0IGZ1bGx5IHVu ZGVyc3RhbmQgd2h5IHRoZSBEV0FSRiBpcyBhcyBpdCBpcyBidXQganVzdCBHREIgc2hvdWxkCi1u ZXZlciBjcmFzaCBkdWUgdG8gaW52YWxpZCBEV0FSRiBhbnl3YXkuICBUaGUgImludmFsaWQiIERX QVJGIEkgc2VlIG9ubHkgaW4KLUZlZG9yYSBHQ0MgYnVpbGQsIG5vdCBpbiBGU0YgR0NDIGJ1aWxk LCBtb3JlIGluZm8gYXQ6Ci0JaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNn aT9pZD0xMDY5MzgyCi0JaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL2prcmF0b2NoL2djYy1kZWJ1 Z2luZm8tNC44LjItNy5mYzIwLng4Nl82NC1nbmF0YmluZC5kZWJ1ZwotCi1UaGFua3MsCi1KYW4K LQotLS02VHJubHRTdFhXNGl3bWkwCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsgZmlsZW5hbWU9ImNvbXBsYWlu dC5wYXRjaCIKLQotZ2RiLwotMjAxNC0wMi0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJyZWFkLmMgKHByb2Nlc3NfZGllKTogQ2hhbmdl IGdkYl9hc3NlcnQgdG8gY29tcGxhaW50LgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFk LmMgYi9nZGIvZHdhcmYyL3JlYWQuYwotLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLmMKLSsrKyBiL2dk Yi9kd2FyZjIvcmVhZC5jCi1AQCAtMTAxNTksNiArMTAxNTksMTMgQEAgY2xhc3MgcHJvY2Vzc19k aWVfc2NvcGUKLSBzdGF0aWMgdm9pZAotIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gewotKyAgaWYgKGRpZS0+aW5fcHJvY2VzcykKLSsg ICAgewotKyAgICAgIGNvbXBsYWludCAoXygiRElFIGF0IDB4JXMgYXR0ZW1wdGVkIHRvIGJlIHBy b2Nlc3NlZCB0d2ljZSIpLAotKwkJIHNlY3Rfb2Zmc2V0X3N0ciAoZGllLT5zZWN0X29mZikpOwot KyAgICAgIHJldHVybjsKLSsgICAgfQotKwotICAgcHJvY2Vzc19kaWVfc2NvcGUgc2NvcGUgKGRp ZSwgY3UpOwotIAotICAgc3dpdGNoIChkaWUtPnRhZykKLWRpZmYgLS1naXQgYS9nZGIvbGludXgt bmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLS0tLSBhL2dkYi9saW51eC1uYXQuYwotKysrIGIvZ2Ri L2xpbnV4LW5hdC5jCi1AQCAtMTkwLDYgKzE5MCwxMiBAQCBzdHJ1Y3QgbGludXhfbmF0X3Rhcmdl dCAqbGludXhfdGFyZ2V0OwotIC8qIERvZXMgdGhlIGN1cnJlbnQgaG9zdCBzdXBwb3J0IFBUUkFD RV9HRVRSRUdTRVQ/ICAqLwotIGVudW0gdHJpYm9vbCBoYXZlX3B0cmFjZV9nZXRyZWdzZXQgPSBU UklCT09MX1VOS05PV047Ci0gCi0rI2lmZGVmIE5FRURfREVUQUNIX1NJR1NUT1AKLSsvKiBQSUQg b2YgdGhlIGluZmVyaW9yIHN0b3BwZWQgYnkgU0lHU1RPUCBiZWZvcmUgYXR0YWNoaW5nIChvciB6 ZXJvKS4gICovCi0rc3RhdGljIHBpZF90IHBpZF93YXNfc3RvcHBlZDsKLSsKLSsjZW5kaWYKLSsK LSBzdGF0aWMgdW5zaWduZWQgaW50IGRlYnVnX2xpbnV4X25hdDsKLSBzdGF0aWMgdm9pZAotIHNo b3dfZGVidWdfbGludXhfbmF0IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAot QEAgLTEwNDQsNiArMTA1MCw5IEBAIGxpbnV4X25hdF9wb3N0X2F0dGFjaF93YWl0IChwdGlkX3Qg cHRpZCwgaW50ICpzaWduYWxsZWQpCi0gICBpZiAobGludXhfcHJvY19waWRfaXNfc3RvcHBlZCAo cGlkKSkKLSAgICAgewotICAgICAgIGxpbnV4X25hdF9kZWJ1Z19wcmludGYgKCJBdHRhY2hpbmcg dG8gYSBzdG9wcGVkIHByb2Nlc3MiKTsKLSsjaWZkZWYgTkVFRF9ERVRBQ0hfU0lHU1RPUAotKyAg ICAgIHBpZF93YXNfc3RvcHBlZCA9IHB0aWQucGlkICgpOwotKyNlbmRpZgotIAotICAgICAgIC8q IFRoZSBwcm9jZXNzIGlzIGRlZmluaXRlbHkgc3RvcHBlZC4gIEl0IGlzIGluIGEgam9iIGNvbnRy b2wKLSAJIHN0b3AsIHVubGVzcyB0aGUga2VybmVsIHByZWRhdGVzIHRoZSBUQVNLX1NUT1BQRUQg LwotQEAgLTEzNTksNiArMTM2OCwyNSBAQCBnZXRfZGV0YWNoX3NpZ25hbCAoc3RydWN0IGx3cF9p bmZvICpscCkKLSAgICAgICByZXR1cm4gZ2RiX3NpZ25hbF90b19ob3N0IChzaWdubyk7Ci0gICAg IH0KLSAKLSsjaWZkZWYgTkVFRF9ERVRBQ0hfU0lHU1RPUAotKyAgLyogV29ya2Fyb3VuZCBSSEVM LTUga2VybmVsIHdoaWNoIGhhcyB1bnJlbGlhYmxlIFBUUkFDRV9ERVRBQ0gsIFNJR1NUT1AgKHRo YXQKLSsgICAgIG1hbnkgVElEcyBhcmUgbGVmdCB1bnN0b3BwZWQpLiAgU2VlIFJIIEJ1ZyA0OTY3 MzIuICAqLwotKyAgaWYgKGxwLT5wdGlkLnBpZCAoKSA9PSBwaWRfd2FzX3N0b3BwZWQpCi0rICAg IHsKLSsgICAgICBpbnQgZXJyOwotKwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBlcnIgPSBr aWxsX2x3cCAobHAtPnB0aWQubHdwICgpLCBTSUdTVE9QKTsKLSsgICAgICBpZiAoZGVidWdfbGlu dXhfbmF0KQotKwl7Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSAg ICAgICJTQzogIGx3cCBraWxsICVkICVzXG4iLAotKwkJCSAgICAgIGVyciwKLSsJCQkgICAgICBl cnJubyA/IHNhZmVfc3RyZXJyb3IgKGVycm5vKSA6ICJFUlJOTy1PSyIpOwotKwl9Ci0rICAgIH0K LSsKLSsjZW5kaWYKLSAgIHJldHVybiAwOwotIH0KLSAKLUBAIC0xNTAyLDYgKzE1MzAsMTAgQEAg bGludXhfbmF0X3RhcmdldDo6ZGV0YWNoIChpbmZlcmlvciAqaW5mLCBpbnQgZnJvbV90dHkpCi0g ICAgICAgZGV0YWNoX29uZV9sd3AgKG1haW5fbHdwLCAmc2lnbm8pOwotIAotICAgICAgIGRldGFj aF9zdWNjZXNzIChpbmYpOwotKwotKyNpZmRlZiBORUVEX0RFVEFDSF9TSUdTVE9QCi0rICAgICAg cGlkX3dhc19zdG9wcGVkID0gMDsKLSsjZW5kaWYKLSAgICAgfQotIH0KLSAKLUBAIC0xNzQ0LDYg KzE3NzYsMTYgQEAgbGludXhfbmF0X3RhcmdldDo6cmVzdW1lIChwdGlkX3QgcHRpZCwgaW50IHN0 ZXAsIGVudW0gZ2RiX3NpZ25hbCBzaWdubykKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSsj aWZkZWYgTkVFRF9ERVRBQ0hfU0lHU1RPUAotKyAgLyogQXQgdGhpcyBwb2ludCwgd2UgYXJlIGdv aW5nIHRvIHJlc3VtZSB0aGUgaW5mZXJpb3IgYW5kIGlmIHdlCi0rICAgICBoYXZlIGF0dGFjaGVk IHRvIGEgc3RvcHBlZCBwcm9jZXNzLCB3ZSBubyBsb25nZXIgc2hvdWxkIGxlYXZlCi0rICAgICBp dCBhcyBzdG9wcGVkIGlmIHRoZSB1c2VyIGRldGFjaGVzLiAgUFRJRCB2YXJpYWJsZSBoYXMgUElE IHNldCB0byBMV1AKLSsgICAgIHdoaWxlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIHJlYWwgUElEIGhl cmUuICAqLwotKwotKyAgaWYgKCFzdGVwICYmIGxwICYmIHBpZF93YXNfc3RvcHBlZCA9PSBscC0+ cHRpZC5waWQgKCkpCi0rICAgIHBpZF93YXNfc3RvcHBlZCA9IDA7Ci0rCi0rI2VuZGlmCi0gICBp ZiAocmVzdW1lX21hbnkpCi0gICAgIGl0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkLCBbPV0gKHN0cnVj dCBsd3BfaW5mbyAqaW5mbykKLSAJCQkgICAgIHsKLUBAIC0zNjE3LDYgKzM2NTksMTAgQEAgbGlu dXhfbmF0X3RhcmdldDo6bW91cm5faW5mZXJpb3IgKCkKLSAKLSAgIC8qIExldCB0aGUgYXJjaC1z cGVjaWZpYyBuYXRpdmUgY29kZSBrbm93IHRoaXMgcHJvY2VzcyBpcyBnb25lLiAgKi8KLSAgIGxp bnV4X3RhcmdldC0+bG93X2ZvcmdldF9wcm9jZXNzIChwaWQpOwotKyNpZmRlZiBORUVEX0RFVEFD SF9TSUdTVE9QCi0rCi0rICBwaWRfd2FzX3N0b3BwZWQgPSAwOwotKyNlbmRpZgotIH0KLSAKLSAv KiBDb252ZXJ0IGEgbmF0aXZlL2hvc3Qgc2lnaW5mbyBvYmplY3QsIGludG8vZnJvbSB0aGUgc2ln aW5mbyBpbiB0aGUKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFj aC1zdG9wcGVkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQu ZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAKLUBAIC01 Niw3ICs1Niw3MyBAQCBwcm9jIGNvcmVmdW5jIHsgdGhyZWFkdHlwZSB9IHsKLSAgICAgZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gICAgIGdkYl9sb2FkICR7YmluZmlsZX0K LSAKLS0gICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW4gYXR0YWNoIHRvIHRoZSBzdG9wcGVkIHByb2Nl c3MuCi0rICAgICMgVmVyaWZ5IHRoYXQgd2UgY2FuIGF0dGFjaCB0byB0aGUgcHJvY2VzcyBieSBm aXJzdCBnaXZpbmcgaXRzCi0rICAgICMgZXhlY3V0YWJsZSBuYW1lIHZpYSB0aGUgZmlsZSBjb21t YW5kLCBhbmQgdXNpbmcgYXR0YWNoIHdpdGggdGhlCi0rICAgICMgcHJvY2VzcyBJRC4KLSsKLSsg ICAgc2V0IHRlc3QgIiR0aHJlYWR0eXBlOiBzZXQgZmlsZSwgYmVmb3JlIGF0dGFjaDEgdG8gc3Rv cHBlZCBwcm9jZXNzIgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiZmlsZSAkYmluZmlsZSIgIiR0 ZXN0IiB7Ci0rICAgICAgIC1yZSAiTG9hZCBuZXcgc3ltYm9sIHRhYmxlIGZyb20uKnkgb3Igbi4g JCIgewotKwkgICAgZ2RiX3Rlc3QgInkiICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAkZXNjYXBlZGJp bmZpbGVcLlwuXC4qIiBcCi0rCQkgICAgIiR0ZXN0IChyZS1yZWFkKSIKLSsJfQotKwktcmUgIlJl YWRpbmcgc3ltYm9scyBmcm9tICRlc2NhcGVkYmluZmlsZVwuXC5cLiokZ2RiX3Byb21wdCAkIiB7 Ci0rCSAgICBwYXNzICIkdGVzdCIKLSsJfQotKyAgICB9Ci0rCi0rICAgIHNldCB0ZXN0ICIkdGhy ZWFkdHlwZTogYXR0YWNoMSB0byBzdG9wcGVkLCBhZnRlciBzZXR0aW5nIGZpbGUiCi0rICAgIGdk Yl90ZXN0X211bHRpcGxlICJhdHRhY2ggJHRlc3RwaWQiICIkdGVzdCIgewotKwktcmUgIkF0dGFj aGluZyB0byBwcm9ncmFtLipgPyRlc2NhcGVkYmluZmlsZSc/LCBwcm9jZXNzICR0ZXN0cGlkLiok Z2RiX3Byb21wdCAkIiB7Ci0rCSAgICBwYXNzICIkdGVzdCIKLSsJfQotKyAgICB9Ci0rCi0rICAg ICMgIi4qc2xlZXAuKmNsb25lLioiIHdvdWxkIGZhaWwgb24gczM5MHggYXMgYnQgc3RvcHMgYXQg U1RBUlRfVEhSRUFEIHRoZXJlLgotKyAgICBpZiB7W3N0cmluZyBlcXVhbCAkdGhyZWFkdHlwZSB0 aHJlYWRlZF19IHsKLSsJZ2RiX3Rlc3QgInRocmVhZCBhcHBseSBhbGwgYnQiICIuKnNsZWVwLipz dGFydF90aHJlYWQuKiIgIiR0aHJlYWR0eXBlOiBhdHRhY2gxIHRvIHN0b3BwZWQgYnQiCi0rICAg IH0gZWxzZSB7Ci0rCWdkYl90ZXN0ICJidCIgIi4qc2xlZXAuKm1haW4uKiIgIiR0aHJlYWR0eXBl OiBhdHRhY2gxIHRvIHN0b3BwZWQgYnQiCi0rICAgIH0KLSsKLSsgICAgIyBFeGl0IGFuZCBkZXRh Y2ggdGhlIHByb2Nlc3MuCi0rCi0rICAgIGdkYl9leGl0Ci0rCi0rICAgICMgQXZvaWQgc29tZSBy YWNlOgotKyAgICBzbGVlcCAyCi0rCi0rICAgIGlmIFtjYXRjaCB7b3BlbiAvcHJvYy8ke3Rlc3Rw aWR9L3N0YXR1cyByfSBmaWxlaWRdIHsKLSsJc2V0IGxpbmUgIk5PVEZPVU5EIgotKyAgICB9IGVs c2UgewotKwl3aGlsZSB7IDEgfSB7Ci0rCSAgICBpZiB7IFtnZXRzICRmaWxlaWQgbGluZV0gPCAw IH0gewotKwkJc2V0IGxpbmUgIkVPRiIKLSsJCWJyZWFrCi0rCSAgICB9Ci0rCSAgICBpZiB7W3N0 cmluZyBtYXRjaCAiU3RhdGU6KiIgJGxpbmVdfSB7Ci0rCQlicmVhawotKwkgICAgfQotKwl9Ci0r CWNsb3NlICRmaWxlaWQ7Ci0rICAgIH0KLSsKLSsgICAgc2V0IHRlc3QgIiR0aHJlYWR0eXBlOiBh dHRhY2gxLCBleGl0IGxlYXZlcyBwcm9jZXNzIHN0b3BwZWQiCi0rICAgIHZlcmJvc2UgLWxvZyAi bGluZTogJGxpbmUiCi0rICAgIGlmIHtbc3RyaW5nIG1hdGNoICIqKHN0b3BwZWQpKiIgJGxpbmVd fSB7Ci0rICAgICAgcGFzcyAkdGVzdAotKyAgICB9IGVsc2UgewotKyAgICAgIGZhaWwgJHRlc3QK LSsgICAgfQotKwotKyAgICAjIEF0IHRoaXMgcG9pbnQsIHRoZSBwcm9jZXNzIHNob3VsZCBzdGls bCBiZSBzdG9wcGVkCi0rCi0rICAgIGdkYl9zdGFydAotKyAgICBnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKLSsgICAgZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotKyAgICAjIFZl cmlmeSB0aGF0IHdlIGNhbiBhdHRhY2ggdG8gdGhlIHByb2Nlc3MganVzdCBieSBnaXZpbmcgdGhl Ci0rICAgICMgcHJvY2VzcyBJRC4KLSAgICAgICAgCi0gICAgIHNldCB0ZXN0ICIkdGhyZWFkdHlw ZTogYXR0YWNoMiB0byBzdG9wcGVkLCBhZnRlciBzZXR0aW5nIGZpbGUiCi0gICAgIGdkYl90ZXN0 X211bHRpcGxlICJhdHRhY2ggJHRlc3RwaWQiICIkdGVzdCIgewoKZGlmZiAtLWdpdCBhL2dkYi1q aXQtcmVhZGVyLW11bHRpbGliLnBhdGNoIGIvZ2RiLWppdC1yZWFkZXItbXVsdGlsaWIucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiY2U1ZmMuLjAwMDAwMDAKLS0tIGEvZ2Ri LWppdC1yZWFkZXItbXVsdGlsaWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA Ci1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVk b3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIw MTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi1qaXQtcmVhZGVyLW11bHRpbGliLnBhdGNo Ci0KLTs7IEZpeCBqaXQtcmVhZGVyLmggZm9yIG11bHRpLWxpYi4KLTs7PXB1c2gramFuCi0KLWRp ZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQotLS0tIGEvZ2RiL2NvbmZp Z3VyZQotKysrIGIvZ2RiL2NvbmZpZ3VyZQotQEAgLTk5NjgsMTAgKzk5NjgsMTIgQEAgX0FDRU9G Ci0gCi0gCi0gCi0taWYgdGVzdCAieCR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmd9IiA9ICJ4 OCI7IHRoZW4KLS0gIFRBUkdFVF9QVFI9InVuc2lnbmVkIGxvbmciCi0tZWxpZiB0ZXN0ICJ4JHth Y19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZ19sb25nfSIgPSAieDgiOyB0aGVuCi0rIyBUcnkgdG8g a2VlcCBUQVJHRVRfUFRSIHRoZSBzYW1lIGFjcm9zcyBhcmNocyBzbyB0aGF0IGppdC1yZWFkZXIu aCBmaWxlCi0rIyBjb250ZW50IGlzIHRoZSBzYW1lIGZvciBtdWx0aWxpYiBkaXN0cmlidXRpb25z LgotK2lmIHRlc3QgIngke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nX2xvbmd9IiA9ICJ4OCI7 IHRoZW4KLSAgIFRBUkdFVF9QVFI9InVuc2lnbmVkIGxvbmcgbG9uZyIKLStlbGlmIHRlc3QgIngk e2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nfSIgPSAieDgiOyB0aGVuCi0rICBUQVJHRVRfUFRS PSJ1bnNpZ25lZCBsb25nIgotIGVsaWYgdGVzdCAieCR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX19f aW50MTI4fSIgPSAieDE2IjsgdGhlbgotICAgVEFSR0VUX1BUUj0idW5zaWduZWQgX19pbnQxMjgi Ci0gZWxzZQotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuYWMgYi9nZGIvY29uZmlndXJlLmFj Ci0tLS0gYS9nZGIvY29uZmlndXJlLmFjCi0rKysgYi9nZGIvY29uZmlndXJlLmFjCi1AQCAtODAz LDEwICs4MDMsMTIgQEAgQUNfQ0hFQ0tfU0laRU9GKHVuc2lnbmVkIGxvbmcgbG9uZykKLSBBQ19D SEVDS19TSVpFT0YodW5zaWduZWQgbG9uZykKLSBBQ19DSEVDS19TSVpFT0YodW5zaWduZWQgX19p bnQxMjgpCi0gCi0taWYgdGVzdCAieCR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmd9IiA9ICJ4 OCI7IHRoZW4KLS0gIFRBUkdFVF9QVFI9InVuc2lnbmVkIGxvbmciCi0tZWxpZiB0ZXN0ICJ4JHth Y19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZ19sb25nfSIgPSAieDgiOyB0aGVuCi0rIyBUcnkgdG8g a2VlcCBUQVJHRVRfUFRSIHRoZSBzYW1lIGFjcm9zcyBhcmNocyBzbyB0aGF0IGppdC1yZWFkZXIu aCBmaWxlCi0rIyBjb250ZW50IGlzIHRoZSBzYW1lIGZvciBtdWx0aWxpYiBkaXN0cmlidXRpb25z LgotK2lmIHRlc3QgIngke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nX2xvbmd9IiA9ICJ4OCI7 IHRoZW4KLSAgIFRBUkdFVF9QVFI9InVuc2lnbmVkIGxvbmcgbG9uZyIKLStlbGlmIHRlc3QgIngk e2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nfSIgPSAieDgiOyB0aGVuCi0rICBUQVJHRVRfUFRS PSJ1bnNpZ25lZCBsb25nIgotIGVsaWYgdGVzdCAieCR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX19f aW50MTI4fSIgPSAieDE2IjsgdGhlbgotICAgVEFSR0VUX1BUUj0idW5zaWduZWQgX19pbnQxMjgi Ci0gZWxzZQoKZGlmZiAtLWdpdCBhL2dkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fyb3VuZC5wYXRj aCBiL2dkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fyb3VuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggODY5ZmM3NS4uMDAwMDAwMAotLS0gYS9nZGItbW9yaWJ1bmQtdXRyYWNl LXdvcmthcm91bmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1Gcm9tIEZF RE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBw YXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6 NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fyb3VuZC5wYXRjaAot Ci07OyBXb3JrYXJvdW5kIG5vbi1zdG9wIG1vcmlidW5kIGxvY2F0aW9ucyBleHBsb2l0ZWQgYnkg a2VybmVsIHV0cmFjZSAoQlogNTkwNjIzKS4KLTs7PXB1c2gramFuOiBDdXJyZW50bHkgaXQgaXMg c3RpbGwgbm90IGZ1bGx5IHNhZmUuCi0KLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93 X2J1Zy5jZ2k/aWQ9NTkwNjIzCi1odHRwOi8vc291cmNlcy5yZWRoYXQuY29tL2J1Z3ppbGxhL3No b3dfYnVnLmNnaT9pZD0xMTU5MwotCi1CdWcgaW4gRlNGIEdEQiBleHBsb2l0ZWQgYnkgdGhlIHB0 cmFjZS1vbi11dHJhY2UgaW50ZXJhY3Rpb24uCi0KLWRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2lu dC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwotKysrIGIvZ2Ri L2JyZWFrcG9pbnQuYwotQEAgLTExOTQ4LDYgKzExOTQ4LDggQEAgdXBkYXRlX2dsb2JhbF9sb2Nh dGlvbl9saXN0IChlbnVtIHVnbGxfaW5zZXJ0X21vZGUgaW5zZXJ0X21vZGUpCi0gCQkgID0gMyAq ICh0aHJlYWRfY291bnQgKHByb2NfdGFyZ2V0KSArIDEpOwotIAkgICAgICBlbHNlCi0gCQlvbGRf bG9jLT5ldmVudHNfdGlsbF9yZXRpcmVtZW50ID0gMTsKLSsJICAgICAgLyogUmVkIEhhdCBCdWcg NTkwNjIzLiAgKi8KLSsJICAgICAgb2xkX2xvYy0+ZXZlbnRzX3RpbGxfcmV0aXJlbWVudCAqPSAx MDsKLSAJICAgICAgb2xkX2xvYy0+b3duZXIgPSBOVUxMOwotIAotIAkgICAgICBtb3JpYnVuZF9s b2NhdGlvbnMucHVzaF9iYWNrIChvbGRfbG9jKTsKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5MDk5 MDItZnJhbWVfaWRfcC1hc3NlcnQtMS5wYXRjaCBiL2dkYi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9w LWFzc2VydC0xLnBhdGNoCmluZGV4IDdiY2VkNjYuLjhkZDk5YTUgMTAwNjQ0Ci0tLSBhL2dkYi1y aGJ6MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCisrKyBiL2dkYi1yaGJ6MTkwOTkw Mi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCkBAIC0zOTEsNyArMzkxLDcgQEAgZGlmZiAtLWdp dCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0aHJlYWQuaAogZGlmZiAtLWdpdCBhL2dkYi9p bmZydW4uYyBiL2dkYi9pbmZydW4uYwogLS0tIGEvZ2RiL2luZnJ1bi5jCiArKysgYi9nZGIvaW5m cnVuLmMKLUBAIC05MDE3LDggKzkwMTcsMTAgQEAgc3RydWN0IGluZmNhbGxfY29udHJvbF9zdGF0 ZQorQEAgLTkwMDYsOCArOTAwNiwxMCBAQCBzdHJ1Y3QgaW5mY2FsbF9jb250cm9sX3N0YXRlCiAg ICBlbnVtIHN0b3Bfc3RhY2tfa2luZCBzdG9wX3N0YWNrX2R1bW15ID0gU1RPUF9OT05FOwogICAg aW50IHN0b3BwZWRfYnlfcmFuZG9tX3NpZ25hbCA9IDA7CiAgCkBAIC00MDMsNyArNDAzLDcgQEAg ZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwogIH07CiAgCiAgLyogU2F2 ZSBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5mZXJpb3I8PT0+ Z2RiCi1AQCAtOTA0NywyNyArOTA0OSwxMiBAQCBzYXZlX2luZmNhbGxfY29udHJvbF9zdGF0ZSAo KQorQEAgLTkwMzYsMjcgKzkwMzgsMTIgQEAgc2F2ZV9pbmZjYWxsX2NvbnRyb2xfc3RhdGUgKCkK ICAgIGluZl9zdGF0dXMtPnN0b3Bfc3RhY2tfZHVtbXkgPSBzdG9wX3N0YWNrX2R1bW15OwogICAg aW5mX3N0YXR1cy0+c3RvcHBlZF9ieV9yYW5kb21fc2lnbmFsID0gc3RvcHBlZF9ieV9yYW5kb21f c2lnbmFsOwogIApAQCAtNDMzLDcgKzQzMyw3IEBAIGRpZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMg Yi9nZGIvaW5mcnVuLmMKICAvKiBSZXN0b3JlIGluZmVyaW9yIHNlc3Npb24gc3RhdGUgdG8gSU5G X1NUQVRVUy4gICovCiAgCiAgdm9pZAotQEAgLTkwOTUsMjEgKzkwODIsOCBAQCByZXN0b3JlX2lu ZmNhbGxfY29udHJvbF9zdGF0ZSAoc3RydWN0IGluZmNhbGxfY29udHJvbF9zdGF0ZSAqaW5mX3N0 YXR1cykKK0BAIC05MDg0LDIxICs5MDcxLDggQEAgcmVzdG9yZV9pbmZjYWxsX2NvbnRyb2xfc3Rh dGUgKHN0cnVjdCBpbmZjYWxsX2NvbnRyb2xfc3RhdGUgKmluZl9zdGF0dXMpCiAgCiAgICBpZiAo dGFyZ2V0X2hhc19zdGFjaykKICAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTkxMjk4NS1s aWJzdGRjKystYXNzZXJ0LnBhdGNoIGIvZ2RiLXJoYnoxOTEyOTg1LWxpYnN0ZGMrKy1hc3NlcnQu cGF0Y2gKaW5kZXggNWZhNWY0ZS4uMTk2ZTMwOSAxMDA2NDQKLS0tIGEvZ2RiLXJoYnoxOTEyOTg1 LWxpYnN0ZGMrKy1hc3NlcnQucGF0Y2gKKysrIGIvZ2RiLXJoYnoxOTEyOTg1LWxpYnN0ZGMrKy1h c3NlcnQucGF0Y2gKQEAgLTUzLDcgKzUzLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9hZGEtbGFuZy5j IGIvZ2RiL2FkYS1sYW5nLmMKICAgICAgewogICAgICAgIHN0cm5jcHkgKGZvbGRfYnVmZmVyLCBu YW1lLmRhdGEgKCkgKyAxLCBsZW4gLSAyKTsKICAgICAgICBmb2xkX2J1ZmZlcltsZW4gLSAyXSA9 ICdcMDAwJzsKLUBAIC0xMzU5Miw3ICsxMzU5Miw3IEBAIGFkYV9sb29rdXBfbmFtZV9pbmZvOjph ZGFfbG9va3VwX25hbWVfaW5mbyAoY29uc3QgbG9va3VwX25hbWVfaW5mbyAmbG9va3VwX25hbWUp CitAQCAtMTM1OTcsNyArMTM1OTcsNyBAQCBhZGFfbG9va3VwX25hbWVfaW5mbzo6YWRhX2xvb2t1 cF9uYW1lX2luZm8gKGNvbnN0IGxvb2t1cF9uYW1lX2luZm8gJmxvb2t1cF9uYW1lKQogIHsKICAg IGdkYjo6c3RyaW5nX3ZpZXcgdXNlcl9uYW1lID0gbG9va3VwX25hbWUubmFtZSAoKTsKICAKCmRp ZmYgLS1naXQgYS9nZGItcmhiejE5MzA1MjgtZml4LWdudWxpYi1idWlsZC1lcnJvci5wYXRjaCBi L2dkYi1yaGJ6MTkzMDUyOC1maXgtZ251bGliLWJ1aWxkLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBlZDkyOTBkLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTkzMDUy OC1maXgtZ251bGliLWJ1aWxkLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAs MCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMTggRmViIDIw MjEgMjM6MDQ6MjkgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTkzMDUyOC1maXgtZ251bGliLWJ1 aWxkLWVycm9yLnBhdGNoCi0KLTs7IEJhY2twb3J0IGZpeCBmb3IgcmF3aGlkZSBidWlsZCBlcnJv ciAoUkggQlogMTkzMDUyOCkuCi0KLWFtZDY0LWxpbnV4LXNpZ2luZm8uYzogQWRqdXN0IGluY2x1 ZGUgb3JkZXIgdG8gYXZvaWQgZ251bGliIGVycm9yCi0KLU9uIEZlZG9yYSByYXdoaWRlLCBhZnRl ciB1cGRhdGluZyB0byBnbGliYy0yLjMzLCBJJ20gc2VlaW5nIHRoZQotZm9sbG93aW5nIGJ1aWxk IGZhaWx1cmU6Ci0KLSAgQ1hYICAgIG5hdC9hbWQ2NC1saW51eC1zaWdpbmZvLm8KLUluIGZpbGUg aW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvYml0cy9zaWdzdGtzei5oOjI0LAotICAgICAgICAg ICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9zaWduYWwuaDozMTUsCi0gICAgICAgICAgICAgICAg IGZyb20gLi4vZ251bGliL2ltcG9ydC9zaWduYWwuaDo1MiwKLSAgICAgICAgICAgICAgICAgZnJv bSAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L3Jhd2hpZGUtZ251bGliL2JsZC8uLi8uLi93b3Jr dHJlZS1nbnVsaWIvZ2Ric2VydmVyLy4uL2dkYi9uYXQvYW1kNjQtbGludXgtc2lnaW5mby5jOjIw OgotLi4vZ251bGliL2ltcG9ydC91bmlzdGQuaDo2NjM6MzogZXJyb3I6ICNlcnJvciAiUGxlYXNl IGluY2x1ZGUgY29uZmlnLmggZmlyc3QuIgotICA2NjMgfCAgI2Vycm9yICJQbGVhc2UgaW5jbHVk ZSBjb25maWcuaCBmaXJzdC4iCi0gICAgICB8ICAgXn5+fn4KLQotZ2xpYmMtMi4zMyBoYXMgY2hh bmdlZCBzaWduYWwuaCB0byBub3cgaW5jbHVkZSA8Yml0cy9zaWdzdGtzei5oPiB3aGljaCwKLWlu IHR1cm4sIGluY2x1ZGVzIDx1bmlzdGQuaD4uIEZvciBhIGdkYiBidWlsZCwgdGhpcyBjYXVzZXMg dGhlIGdudWxpYgotdmVyc2lvbiBvZiB1bmlzdGQuaCB0byBiZSBwdWxsZWQgaW4gZmlyc3QuICBU aGUgYnVpbGQgZmFpbHVyZSBzaG93bgotYWJvdmUgaGFwcGVucyBiZWNhdXNlIGdudWxpYidzIGNv bmZpZy5oIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBiZWZvcmUKLXRoZSBpbmNsdWRlIG9mIDxzaWdu YWwuaD4uCi0KLVRoZSBmaXggaXMgc2ltcGxlIC0gd2UganVzdCByZWFycmFuZ2UgdGhlIG9yZGVy IG9mIHRoZSBoZWFkZXIgZmlsZQotaW5jbHVkZXMgdG8gbWFrZSBzdXJlIHRoYXQgZ2Ric3VwcG9y dC9jb21tb25kZWZzLmggaXMgaW5jbHVkZWQgYmVmb3JlCi1hdHRlbXB0aW5nIHRvIGluY2x1ZGUg c2lnbmFsLmguICBOb3RlIHRoYXQgZ2Ric3VwcG9ydC9jb21tb25kZWZzLmgKLWluY2x1ZGVzIDxn bnVsaWIvY29uZmlnLmg+LgotCi1CdWlsZCBhbmQgcmVncmVzc2lvbiB0ZXN0ZWQgb24gRmVkb3Jh IDMzLiAgT24gRmVkb3JhIHJhd2hpZGUsIEdEQgotYnVpbGRzIGFnYWluLgotCi1nZGIvQ2hhbmdl TG9nOgotCi0JKiBuYXQvYW1kNjQtbGludXgtc2lnaW5mby5jOiBJbmNsdWRlICJnZGJzdXBwb3J0 L2NvbW1vbi1kZWZzLmgiCi0JKHdoaWNoIGluIHR1cm4gaW5jbHVkZXMgPGdudWxpYi9jb25maWcu aD4pIGJlZm9yZSBpbmNsdWRlCi0Jb2YgPHNpZ25hbC5oPi4KLQotZGlmZiAtLWdpdCBhL2dkYi9u YXQvYW1kNjQtbGludXgtc2lnaW5mby5jIGIvZ2RiL25hdC9hbWQ2NC1saW51eC1zaWdpbmZvLmMK LS0tLSBhL2dkYi9uYXQvYW1kNjQtbGludXgtc2lnaW5mby5jCi0rKysgYi9nZGIvbmF0L2FtZDY0 LWxpbnV4LXNpZ2luZm8uYwotQEAgLTE3LDggKzE3LDggQEAKLSAgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KLSAKLS0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgImdkYnN1 cHBvcnQvY29tbW9uLWRlZnMuaCIKLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgImFt ZDY0LWxpbnV4LXNpZ2luZm8uaCIKLSAKLSAjZGVmaW5lIEdEQl9TSV9TSVpFIDEyOAoKZGlmZiAt LWdpdCBhL2dkYi1yaGJ6MTkzMjY0NS1hYXJjaDY0LXB0cmFjZS1oZWFkZXItb3JkZXIucGF0Y2gg Yi9nZGItcmhiejE5MzI2NDUtYWFyY2g2NC1wdHJhY2UtaGVhZGVyLW9yZGVyLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Zjk2MWE2Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6 MTkzMjY0NS1hYXJjaDY0LXB0cmFjZS1oZWFkZXItb3JkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw2OSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogV2Vk LCAyNCBGZWIgMjAyMSAxMzoxOTowOCAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoxOTMyNjQ1LWFh cmNoNjQtcHRyYWNlLWhlYWRlci1vcmRlci5wYXRjaAotCi07OyBbYWFyY2g2NF0gQmFja3BvcnQg Zml4IGZvciBhYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMgYnVpbGQgcHJvYmxlbQotOzsgKFJIIEJa IDE5MzI2NDUpLgotCi1GaXggYWFyY2g2NC1saW51eC1ody1wb2ludC5jIGJ1aWxkIHByb2JsZW0K LQotRHVlIHRvIGEgcmVjZW50IGdsaWJjIGhlYWRlciBmaWxlIGNoYW5nZSwgdGhlIGZpbGUKLW5h dC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMgbm8gbG9uZ2VyIGJ1aWxkcyBvbiBGZWRvcmEgcmF3 aGlkZS4KLQotQW4gZW51bSBmb3IgUFRSQUNFX1NZU0VNVSBpcyBub3cgcHJvdmlkZWQgYnkgPHN5 cy9wdHJhY2UuaD4uICBJbiB0aGUKLXBhc3QsIFBUUkFDRV9TWVNFTVUgd2FzIGRlZmluZWQgb25s eSBpbiA8YXNtL3B0cmFjZS5oPi4gIFRoaXMgaXMKLXdoYXQgaXQgbG9va3MgbGlrZS4uLgotCi1J biA8YXNtL3B0cmFjZS5oPjoKLQotICNkZWZpbmUgUFRSQUNFX1NZU0VNVQkJICAzMQotCi1JbiA8 c3lzL3B0cmFjZS5oPjoKLQotZW51bSBfX3B0cmFjZV9yZXF1ZXN0Ci17Ci0gIC4uLgotICBQVFJB Q0VfU1lTRU1VID0gMzEsCi0gI2RlZmluZSBQVF9TWVNFTVUgUFRSQUNFX1NZU0VNVQotCi0gIC4u LgotfQotCi1XaGVuIDxhc20vcHRyYWNlLmg+IGFuZCA8c3lzL3B0cmFjZS5oPiBhcmUgYm90aCBp bmNsdWRlZCBpbiBhIHNvdXJjZQotZmlsZSwgd2UgcnVuIGludG8gdGhlIGZvbGxvd2luZyBidWls ZCBwcm9ibGVtIHdoZW4gdGhlIGZvcm1lciBpcwotaW5jbHVkZWQgYmVmb3JlIHRoZSBsYXR0ZXI6 Ci0KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSBuYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jOjI2 OgotL3Vzci9pbmNsdWRlL3N5cy9wdHJhY2UuaDo4NjozOiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRp ZmllciBiZWZvcmUgbnVtZXJpYyBjb25zdGFudAotICAgODYgfCAgIFBUUkFDRV9TWVNFTVUgPSAz MSwKLSAgICAgIHwgICBefn5+fn5+fn5+fn5+Ci0KLShUaGVyZSBhcmUgbW9yZSBlcnJvcnMgYWZ0 ZXIgdGhpcyBvbmUgdG9vLikKLQotVGhlIGZpbGUgYnVpbGRzIHdpdGhvdXQgZXJyb3Igd2hlbiA8 YXNtL3B0cmFjZS5oPiBpcyBpbmNsdWRlZCBhZnRlcgotPHN5cy9wdHJhY2UuaD4uICBJIGZvdW5k IHRoYXQgdGhpcyBpcyBhbHJlYWR5IGRvbmUgaW4KLW5hdC9hYXJjaDY0LXN2ZS1saW51eC1wdHJh Y2UuaCAod2hpY2ggaXMgaW5jbHVkZWQgYnkKLW5hdC9hYXJjaDY0LWxpbnV4LXB0cmFjZS5jKS4K LQotSSd2ZSB0ZXN0ZWQgdGhpcyBjaGFuZ2Ugb24gRmVkb3JhIHJhd2hpZGUgYW5kIEZlZG9yYSAz MywgYm90aAotcnVubmluZyBvbiBhbiBhYXJjaDY0IG1hY2hpbmUuCi0KLWdkYi9DaGFuZ2VMb2c6 Ci0KLQkqIG5hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmM6IEluY2x1ZGUgPGFzbS9wdHJhY2Uu aD4gYWZ0ZXIKLQk8c3lzL3B0cmFjZS5oPi4KLQotZGlmZiAtLWdpdCBhL2dkYi9uYXQvYWFyY2g2 NC1saW51eC1ody1wb2ludC5jIGIvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMKLS0t LSBhL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jCi0rKysgYi9nZGIvbmF0L2FhcmNo NjQtbGludXgtaHctcG9pbnQuYwotQEAgLTIzLDggKzIzLDggQEAKLSAjaW5jbHVkZSAiYWFyY2g2 NC1saW51eC1ody1wb2ludC5oIgotIAotICNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0tI2luY2x1ZGUg PGFzbS9wdHJhY2UuaD4KLSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxhc20v cHRyYWNlLmg+Ci0gI2luY2x1ZGUgPGVsZi5oPgotIAotIC8qIE51bWJlciBvZiBoYXJkd2FyZSBi cmVha3BvaW50cy93YXRjaHBvaW50cyB0aGUgdGFyZ2V0IHN1cHBvcnRzLgoKZGlmZiAtLWdpdCBh L2dkYi1yaGJ6MTk2NDE2Ny1jb252ZXJ0LWVudW0tcmFuZ2VfdHlwZS5wYXRjaCBiL2dkYi1yaGJ6 MTk2NDE2Ny1jb252ZXJ0LWVudW0tcmFuZ2VfdHlwZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5lY2Y4MDQyCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYnoxOTY0 MTY3LWNvbnZlcnQtZW51bS1yYW5nZV90eXBlLnBhdGNoCkBAIC0wLDAgKzEsMzc1IEBACitGcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4gQnVl dHRuZXIgPGtldmluYkByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNzoxMDoy OCAtMDcwMAorU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWNvbnZlcnQtZW51bS1yYW5nZV90eXBl LnBhdGNoCisKKzs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3 aGljaCBjaGFuZ2VzIGVudW0KKzs7IHJhbmdlX3R5cGUgaW50byBhIGJpdCBmaWVsZCBlbnVtLgor CitnZGI6IENvbnZlcnQgZW51bSByYW5nZV90eXBlIHRvIGEgYml0IGZpZWxkIGVudW0KKworVGhl IGV4cHJlc3Npb24gcmFuZ2VfdHlwZSBlbnVtIHJlcHJlc2VudHMgdGhlIGZvbGxvd2luZyBpZGVh czoKKworICAtIExvd2VyIGJvdW5kIGlzIHNldCB0byBkZWZhdWx0LAorICAtIFVwcGVyIGJvdW5k IGlzIHNldCB0byBkZWZhdWx0LAorICAtIFVwcGVyIGJvdW5kIGlzIGV4Y2x1c2l2ZS4KKworVGhl cmUgYXJlIGN1cnJlbnRseSA2IGVudHJpZXMgaW4gdGhlIGVudW0gdG8gcmVwcmVzZW50IHRoZSBj b21iaW5hdGlvbgorb2YgYWxsIHRob3NlIGlkZWFzLgorCitJbiBhIGZ1dHVyZSBjb21taXQgSSdk IGxpa2UgdG8gYWRkIHN0cmlkZSBpbmZvcm1hdGlvbiB0byB0aGUgcmFuZ2UsCit0aGlzIGNvdWxk IGluIHRoZW9yeSBhcHBlYXIgd2l0aCBhbnkgb2YgdGhlIGV4aXN0aW5nIGVudW0gZW50cmllcywg c28KK3RoaXMgd291bGQgdGFrZSB1cyB0byAxMiBlbnVtIGVudHJpZXMuCisKK1RoaXMgZmVlbHMg bGlrZSBpdHMgZ2V0dGluZyBhIGxpdHRsZSBvdXQgb2YgaGFuZCwgc28gaW4gdGhpcyBjb21taXQg SQorc3dpdGNoIHRoZSByYW5nZV90eXBlIGVudW0gb3ZlciB0byBiZWluZyBhIGZsYWdzIHN0eWxl IGVudW0uICBUaGVyZSdzCitvbmUgZW50cnkgdG8gcmVwcmVzZW50IG5vIGZsYWdzIGJlaW5nIHNl dCwgdGhlbiAzIGZsYWdzIHRvIHJlcHJlc2VudAordGhlIDMgaWRlYXMgYWJvdmUuICBBZGRpbmcg c3RyaWRlIGluZm9ybWF0aW9uIHdpbGwgcmVxdWlyZSBhZGRpbmcgb25seQorb25lIG1vcmUgZW51 bSBmbGFnLgorCitJJ3ZlIHRoZW4gZ29uZSB0aHJvdWdoIGFuZCB1cGRhdGVkIHRoZSBjb2RlIHRv IGhhbmRsZSB0aGlzIGNoYW5nZS4KKworVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIgdmlzaWJsZSBj aGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgorCitnZGIvQ2hhbmdlTG9nOgorCisJKiBleHBwcmlu dC5jIChwcmludF9zdWJleHBfc3RhbmRhcmQpOiBVcGRhdGUgdG8gcmVmbGVjdCBjaGFuZ2VzIHRv CisJZW51bSByYW5nZV90eXBlLgorCShkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkKTogTGlrZXdp c2UuCisJKiBleHByZXNzaW9uLmggKGVudW0gcmFuZ2VfdHlwZSk6IENvbnZlcnQgdG8gYSBiaXQg ZmllbGQgZW51bSwgYW5kCisJbWFrZSB0aGUgZW51bSB1bnNpZ25lZC4KKwkqIGYtZXhwLnkgKHN1 YnJhbmdlKTogVXBkYXRlIHRvIHJlZmxlY3QgY2hhbmdlcyB0byBlbnVtCisJcmFuZ2VfdHlwZS4K KwkqIGYtbGFuZy5jICh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBMaWtld2lzZS4KKwkqIHBhcnNlLmMg KG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCk6IExpa2V3aXNlLgorCSogcnVzdC1leHAueSAocnVz dF9wYXJzZXI6OmNvbnZlcnRfYXN0X3RvX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KKwkqIHJ1c3Qt bGFuZy5jIChydXN0X3JhbmdlKTogTGlrZXdpc2UuCisJKHJ1c3RfY29tcHV0ZV9yYW5nZSk6IExp a2V3aXNlLgorCShydXN0X3N1YnNjcmlwdCk6IExpa2V3aXNlLgorCitkaWZmIC0tZ2l0IGEvZ2Ri L2V4cHByaW50LmMgYi9nZGIvZXhwcHJpbnQuYworLS0tIGEvZ2RiL2V4cHByaW50LmMKKysrKyBi L2dkYi9leHBwcmludC5jCitAQCAtNTg0LDE3ICs1ODQsMTMgQEAgcHJpbnRfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAJICBsb25nZXN0X3RvX2lu dCAoZXhwLT5lbHRzW3BjICsgMV0ubG9uZ2NvbnN0KTsKKyAJKnBvcyArPSAyOworIAorLQlpZiAo cmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFCistCSAgICB8fCByYW5n ZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKKysJaWYgKHJhbmdlX3R5cGUg JiBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSkKKyAJICBmcHV0c19maWx0ZXJlZCAoIkVYQ0xV U0lWRV8iLCBzdHJlYW0pOworIAlmcHV0c19maWx0ZXJlZCAoIlJBTkdFKCIsIHN0cmVhbSk7Cist CWlmIChyYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVAorLQkgICAgfHwgcmFuZ2VfdHlw ZSA9PSBOT05FX0JPVU5EX0RFRkFVTFQKKy0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VO RF9ERUZBVUxUX0VYQ0xVU0lWRSkKKysJaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VO RF9ERUZBVUxUKSkKKyAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJP VkVfQ09NTUEpOworIAlmcHV0c19maWx0ZXJlZCAoIi4uIiwgc3RyZWFtKTsKKy0JaWYgKHJhbmdl X3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQKKy0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9C T1VORF9ERUZBVUxUKQorKwlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9ERUZB VUxUKSkKKyAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09N TUEpOworIAlmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOworIAlyZXR1cm47CitAQCAtMTEx NCwzNiArMTExMCwxOSBAQCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLAorIAkgIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbZWx0XS5sb25nY29uc3Qp OworIAllbHQgKz0gMjsKKyAKKy0Jc3dpdGNoIChyYW5nZV90eXBlKQorLQkgIHsKKy0JICBjYXNl IEJPVEhfQk9VTkRfREVGQVVMVDoKKy0JICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uJyIs IHN0cmVhbSk7CistCSAgICBicmVhazsKKy0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUOgorLQkg ICAgZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAnLi5FWFAnIiwgc3RyZWFtKTsKKy0JICAgIGJyZWFr OworLQkgIGNhc2UgTE9XX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFOgorLQkgICAgZnB1dHNfZmls dGVyZWQgKCJFeGNsdXNpdmVSYW5nZSAnLi5FWFAnIiwgc3RyZWFtKTsKKy0JICAgIGJyZWFrOwor LQkgIGNhc2UgSElHSF9CT1VORF9ERUZBVUxUOgorLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJSYW5n ZSAnRVhQLi4nIiwgc3RyZWFtKTsKKy0JICAgIGJyZWFrOworLQkgIGNhc2UgTk9ORV9CT1VORF9E RUZBVUxUOgorLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAnRVhQLi5FWFAnIiwgc3RyZWFt KTsKKy0JICAgIGJyZWFrOworLQkgIGNhc2UgTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRToK Ky0JICAgIGZwdXRzX2ZpbHRlcmVkICgiRXhjbHVzaXZlUmFuZ2UgJ0VYUC4uRVhQJyIsIHN0cmVh bSk7CistCSAgICBicmVhazsKKy0JICBkZWZhdWx0OgorLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJJ bnZhbGlkIFJhbmdlISIsIHN0cmVhbSk7CistCSAgICBicmVhazsKKy0JICB9CisrCWlmIChyYW5n ZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUpCisrCSAgZnB1dHNfZmlsdGVyZWQg KCJFeGNsdXNpdmUiLCBzdHJlYW0pOworKwlmcHV0c19maWx0ZXJlZCAoIlJhbmdlICciLCBzdHJl YW0pOworKwlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQorKwkg IGZwdXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKKysJZnB1dHNfZmlsdGVyZWQgKCIuLiIs IHN0cmVhbSk7CisrCWlmICghKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQp KQorKwkgIGZwdXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKKysJZnB1dHNfZmlsdGVyZWQg KCInIiwgc3RyZWFtKTsKKyAKKy0JaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxU CistCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKKysJaWYgKCEocmFu Z2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKSkKKyAJICBlbHQgPSBkdW1wX3N1YmV4 cCAoZXhwLCBzdHJlYW0sIGVsdCk7CistCWlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZB VUxUCistCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKKysJaWYgKCEo cmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCisgCSAgZWx0ID0gZHVtcF9z dWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworICAgICAgIH0KKyAgICAgICBicmVhazsKK2RpZmYg LS1naXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24uaAorLS0tIGEvZ2RiL2V4 cHJlc3Npb24uaAorKysrIGIvZ2RiL2V4cHJlc3Npb24uaAorQEAgLTE4NSwyMiArMTg1LDIyIEBA IGV4dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICos IHN0cnVjdCB1aV9maWxlICopOworICAgIG9yIGluY2x1c2l2ZS4gIFNvIHdlIGhhdmUgc2l4IHNv cnRzIG9mIHN1YnJhbmdlLiAgVGhpcyBlbnVtZXJhdGlvbgorICAgIHR5cGUgaXMgdG8gaWRlbnRp ZnkgdGhpcy4gICovCisgCistZW51bSByYW5nZV90eXBlCisrZW51bSByYW5nZV90eXBlIDogdW5z aWduZWQKKyB7CistICAvKiBOZWl0aGVyIHRoZSBsb3cgbm9yIHRoZSBoaWdoIGJvdW5kIHdhcyBn aXZlbiAtLSBzbyB0aGlzIHJlZmVycyB0bworLSAgICAgdGhlIGVudGlyZSBhdmFpbGFibGUgcmFu Z2UuICAqLworLSAgQk9USF9CT1VORF9ERUZBVUxULAorLSAgLyogVGhlIGxvdyBib3VuZCB3YXMg bm90IGdpdmVuIGFuZCB0aGUgaGlnaCBib3VuZCBpcyBpbmNsdXNpdmUuICAqLworLSAgTE9XX0JP VU5EX0RFRkFVTFQsCistICAvKiBUaGUgaGlnaCBib3VuZCB3YXMgbm90IGdpdmVuIGFuZCB0aGUg bG93IGJvdW5kIGluIGluY2x1c2l2ZS4gICovCistICBISUdIX0JPVU5EX0RFRkFVTFQsCistICAv KiBCb3RoIGJvdW5kcyB3ZXJlIGdpdmVuIGFuZCBib3RoIGFyZSBpbmNsdXNpdmUuICAqLworLSAg Tk9ORV9CT1VORF9ERUZBVUxULAorLSAgLyogVGhlIGxvdyBib3VuZCB3YXMgbm90IGdpdmVuIGFu ZCB0aGUgaGlnaCBib3VuZCBpcyBleGNsdXNpdmUuICAqLworLSAgTk9ORV9CT1VORF9ERUZBVUxU X0VYQ0xVU0lWRSwKKy0gIC8qIEJvdGggYm91bmRzIHdlcmUgZ2l2ZW4uICBUaGUgbG93IGJvdW5k IGlzIGluY2x1c2l2ZSBhbmQgdGhlIGhpZ2gKKy0gICAgIGJvdW5kIGlzIGV4Y2x1c2l2ZS4gICov CistICBMT1dfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUsCisrICAvKiBUaGlzIGlzIGEgc3RhbmRh cmQgcmFuZ2UuICBCb3RoIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmRzIGFyZQorKyAgICAgZGVm aW5lZCwgYW5kIHRoZSBib3VuZHMgYXJlIGluY2x1c2l2ZS4gICovCisrICBSQU5HRV9TVEFOREFS RCA9IDAsCisrCisrICAvKiBUaGUgbG93IGJvdW5kIHdhcyBub3QgZ2l2ZW4uICAqLworKyAgUkFO R0VfTE9XX0JPVU5EX0RFRkFVTFQgPSAxIDw8IDAsCisrCisrICAvKiBUaGUgaGlnaCBib3VuZCB3 YXMgbm90IGdpdmVuLiAgKi8KKysgIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCA9IDEgPDwgMSwK KysKKysgIC8qIFRoZSBoaWdoIGJvdW5kIG9mIHRoaXMgcmFuZ2UgaXMgZXhjbHVzaXZlLiAgKi8K KysgIFJBTkdFX0hJR0hfQk9VTkRfRVhDTFVTSVZFID0gMSA8PCAyLAorIH07CisgCisrREVGX0VO VU1fRkxBR1NfVFlQRSAoZW51bSByYW5nZV90eXBlLCByYW5nZV90eXBlcyk7CisrCisgI2VuZGlm IC8qICFkZWZpbmVkIChFWFBSRVNTSU9OX0gpICovCitkaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkg Yi9nZGIvZi1leHAueQorLS0tIGEvZ2RiL2YtZXhwLnkKKysrKyBiL2dkYi9mLWV4cC55CitAQCAt Mjg3LDI2ICsyODcsMzAgQEAgYXJnbGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAgICVwcmVjIEFCT1ZF X0NPTU1BCisgLyogVGhlcmUgYXJlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UgdHlwZXMgaW4gRjkw LiAgKi8KKyAKKyBzdWJyYW5nZToJZXhwICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKKy0JCQl7 IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgCistCQkJICB3cml0ZV9l eHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgTk9ORV9CT1VORF9ERUZBVUxUKTsKKysJCQl7IHdyaXRl X2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRf bG9uZ2NzdCAocHN0YXRlLCBSQU5HRV9TVEFOREFSRCk7CisgCQkJICB3cml0ZV9leHBfZWx0X29w Y29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KKyAJOworIAorIHN1YnJhbmdlOglleHAgJzonCSVw cmVjIEFCT1ZFX0NPTU1BCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9S QU5HRSk7CistCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgSElHSF9CT1VORF9E RUZBVUxUKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAorKwkJCQkJCSBS QU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpOworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBz dGF0ZSwgT1BfUkFOR0UpOyB9CisgCTsKKyAKKyBzdWJyYW5nZToJJzonIGV4cAklcHJlYyBBQk9W RV9DT01NQQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwor LQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIExPV19CT1VORF9ERUZBVUxUKTsK KysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAorKwkJCQkJCSBSQU5HRV9MT1df Qk9VTkRfREVGQVVMVCk7CisgCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9S QU5HRSk7IH0KKyAJOworIAorIHN1YnJhbmdlOgknOicJJXByZWMgQUJPVkVfQ09NTUEKKyAJCQl7 IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKKy0JCQkgIHdyaXRlX2V4 cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBCT1RIX0JPVU5EX0RFRkFVTFQpOworKwkJCSAgd3JpdGVf ZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsCisrCQkJCQkJIChSQU5HRV9MT1dfQk9VTkRfREVGQVVM VAorKwkJCQkJCSAgfCBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKTsKKyAJCQkgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQorIAk7CisgCitkaWZmIC0tZ2l0IGEv Z2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCistLS0gYS9nZGIvZi1sYW5nLmMKKysrKyBiL2dk Yi9mLWxhbmcuYworQEAgLTEzMSwxMiArMTMxLDEyIEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3Ry dWN0IHZhbHVlICphcnJheSwKKyAKKyAgICpwb3MgKz0gMzsKKyAKKy0gIGlmIChyYW5nZV90eXBl ID09IExPV19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxU KQorKyAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkKKyAgICAgbG93 X2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKTsKKyAgIGVsc2UKKyAg ICAgbG93X2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBl eHAsIHBvcywgbm9zaWRlKSk7CisgCistICBpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RF RkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCisrICBpZiAocmFuZ2Vf dHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkKKyAgICAgaGlnaF9ib3VuZCA9IHJhbmdl LT5ib3VuZHMgKCktPmhpZ2guY29uc3RfdmFsICgpOworICAgZWxzZQorICAgICBoaWdoX2JvdW5k ID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9z aWRlKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYworLS0tIGEvZ2Ri L3BhcnNlLmMKKysrKyBiL2dkYi9wYXJzZS5jCitAQCAtOTIxLDIxICs5MjEsMTMgQEAgb3BlcmF0 b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwciwgaW50IGVu ZHBvcywKKyAgICAgICByYW5nZV90eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkKKyAJbG9uZ2VzdF90 b19pbnQgKGV4cHItPmVsdHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKKyAKKy0gICAgICBzd2l0 Y2ggKHJhbmdlX3R5cGUpCistCXsKKy0JY2FzZSBMT1dfQk9VTkRfREVGQVVMVDoKKy0JY2FzZSBM T1dfQk9VTkRfREVGQVVMVF9FWENMVVNJVkU6CistCWNhc2UgSElHSF9CT1VORF9ERUZBVUxUOgor LQkgIGFyZ3MgPSAxOworLQkgIGJyZWFrOworLQljYXNlIEJPVEhfQk9VTkRfREVGQVVMVDoKKy0J ICBhcmdzID0gMDsKKy0JICBicmVhazsKKy0JY2FzZSBOT05FX0JPVU5EX0RFRkFVTFQ6CistCWNh c2UgTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRToKKy0JICBhcmdzID0gMjsKKy0JICBicmVh azsKKy0JfQorKyAgICAgIC8qIEFzc3VtZSB0aGUgcmFuZ2UgaGFzIDIgYXJndW1lbnRzIChsb3cg Ym91bmQgYW5kIGhpZ2ggYm91bmQpLCB0aGVuCisrCSByZWR1Y2UgdGhlIGFyZ3VtZW50IGNvdW50 IGlmIGFueSBib3VuZHMgYXJlIHNldCB0byBkZWZhdWx0LiAgKi8KKysgICAgICBhcmdzID0gMjsK KysgICAgICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKQorKwktLWFy Z3M7CisrICAgICAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpCisr CS0tYXJnczsKKyAKKyAgICAgICBicmVhazsKKyAKK2RpZmYgLS1naXQgYS9nZGIvcnVzdC1leHAu eSBiL2dkYi9ydXN0LWV4cC55CistLS0gYS9nZGIvcnVzdC1leHAueQorKysrIGIvZ2RiL3J1c3Qt ZXhwLnkKK0BAIC0yNDkyLDI0ICsyNDkyLDI5IEBAIHJ1c3RfcGFyc2VyOjpjb252ZXJ0X2FzdF90 b19leHByZXNzaW9uIChjb25zdCBzdHJ1Y3QgcnVzdF9vcCAqb3BlcmF0aW9uLAorIAorICAgICBj YXNlIE9QX1JBTkdFOgorICAgICAgIHsKKy0JZW51bSByYW5nZV90eXBlIGtpbmQgPSBCT1RIX0JP VU5EX0RFRkFVTFQ7CisrCWVudW0gcmFuZ2VfdHlwZSBraW5kID0gKFJBTkdFX0hJR0hfQk9VTkRf REVGQVVMVAorKwkJCQl8IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKTsKKyAKKyAJaWYgKG9wZXJh dGlvbi0+bGVmdC5vcCAhPSBOVUxMKQorIAkgIHsKKyAJICAgIGNvbnZlcnRfYXN0X3RvX2V4cHJl c3Npb24gKG9wZXJhdGlvbi0+bGVmdC5vcCwgdG9wKTsKKy0JICAgIGtpbmQgPSBISUdIX0JPVU5E X0RFRkFVTFQ7CisrCSAgICBraW5kICY9IH5SQU5HRV9MT1dfQk9VTkRfREVGQVVMVDsKKyAJICB9 CisgCWlmIChvcGVyYXRpb24tPnJpZ2h0Lm9wICE9IE5VTEwpCisgCSAgeworIAkgICAgY29udmVy dF9hc3RfdG9fZXhwcmVzc2lvbiAob3BlcmF0aW9uLT5yaWdodC5vcCwgdG9wKTsKKy0JICAgIGlm IChraW5kID09IEJPVEhfQk9VTkRfREVGQVVMVCkKKy0JICAgICAga2luZCA9IChvcGVyYXRpb24t PmluY2x1c2l2ZQorLQkJICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IExPV19CT1VORF9ERUZB VUxUX0VYQ0xVU0lWRSk7CisrCSAgICBpZiAoa2luZCA9PSAoUkFOR0VfSElHSF9CT1VORF9ERUZB VUxUIHwgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQorKwkgICAgICB7CisrCQlraW5kID0gUkFO R0VfTE9XX0JPVU5EX0RFRkFVTFQ7CisrCQlpZiAoIW9wZXJhdGlvbi0+aW5jbHVzaXZlKQorKwkJ ICBraW5kIHw9IFJBTkdFX0hJR0hfQk9VTkRfRVhDTFVTSVZFOworKwkgICAgICB9CisgCSAgICBl bHNlCisgCSAgICAgIHsKKy0JCWdkYl9hc3NlcnQgKGtpbmQgPT0gSElHSF9CT1VORF9ERUZBVUxU KTsKKy0JCWtpbmQgPSAob3BlcmF0aW9uLT5pbmNsdXNpdmUKKy0JCQk/IE5PTkVfQk9VTkRfREVG QVVMVCA6IE5PTkVfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUpOworKwkJZ2RiX2Fzc2VydCAoa2lu ZCA9PSBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpOworKwkJa2luZCA9IFJBTkdFX1NUQU5EQVJE OworKwkJaWYgKCFvcGVyYXRpb24tPmluY2x1c2l2ZSkKKysJCSAga2luZCB8PSBSQU5HRV9ISUdI X0JPVU5EX0VYQ0xVU0lWRTsKKyAJICAgICAgfQorIAkgIH0KKyAJZWxzZQorZGlmZiAtLWdpdCBh L2dkYi9ydXN0LWxhbmcuYyBiL2dkYi9ydXN0LWxhbmcuYworLS0tIGEvZ2RiL3J1c3QtbGFuZy5j CisrKysgYi9nZGIvcnVzdC1sYW5nLmMKK0BAIC0xMDgyLDEzICsxMDgyLDExIEBAIHJ1c3RfcmFu Z2UgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUp CisgICBraW5kID0gKGVudW0gcmFuZ2VfdHlwZSkgbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1sq cG9zICsgMV0ubG9uZ2NvbnN0KTsKKyAgICpwb3MgKz0gMzsKKyAKKy0gIGlmIChraW5kID09IEhJ R0hfQk9VTkRfREVGQVVMVCB8fCBraW5kID09IE5PTkVfQk9VTkRfREVGQVVMVAorLSAgICAgIHx8 IGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKKysgIGlmICghKGtpbmQgJiBS QU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCisgICAgIGxvdyA9IGV2YWx1YXRlX3N1YmV4cCAobnVs bHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7CistICBpZiAoa2luZCA9PSBMT1dfQk9VTkRfREVGQVVM VCB8fCBraW5kID09IExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRQorLSAgICAgIHx8IGtpbmQg PT0gTk9ORV9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xV U0lWRSkKKysgIGlmICghKGtpbmQgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQorICAgICBo aWdoID0gZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKKy0gIGJv b2wgaW5jbHVzaXZlID0gKGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9X X0JPVU5EX0RFRkFVTFQpOworKyAgYm9vbCBpbmNsdXNpdmUgPSAhKGtpbmQgJiBSQU5HRV9ISUdI X0JPVU5EX0VYQ0xVU0lWRSk7CisgCisgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKKyAgICAg cmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5i dWlsdGluX2ludCwgMSk7CitAQCAtMTE3MSwxMyArMTE2OSwxMyBAQCBydXN0X3JhbmdlIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorIHN0YXRp YyB2b2lkCisgcnVzdF9jb21wdXRlX3JhbmdlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHZh bHVlICpyYW5nZSwKKyAJCSAgICBMT05HRVNUICpsb3csIExPTkdFU1QgKmhpZ2gsCistCQkgICAg ZW51bSByYW5nZV90eXBlICpraW5kKQorKwkJICAgIHJhbmdlX3R5cGVzICpraW5kKQorIHsKKyAg IGludCBpOworIAorICAgKmxvdyA9IDA7CisgICAqaGlnaCA9IDA7CistICAqa2luZCA9IEJPVEhf Qk9VTkRfREVGQVVMVDsKKysgICpraW5kID0gUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQgfCBSQU5H RV9ISUdIX0JPVU5EX0RFRkFVTFQ7CisgCisgICBpZiAodHlwZS0+bnVtX2ZpZWxkcyAoKSA9PSAw KQorICAgICByZXR1cm47CitAQCAtMTE4NSwxNSArMTE4MywxNSBAQCBydXN0X2NvbXB1dGVfcmFu Z2UgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAorICAgaSA9IDA7Cisg ICBpZiAoc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIDApLCAic3RhcnQiKSA9PSAwKQor ICAgICB7CistICAgICAgKmtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7CisrICAgICAgKmtpbmQg PSBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQ7CisgICAgICAgKmxvdyA9IHZhbHVlX2FzX2xvbmcg KHZhbHVlX2ZpZWxkIChyYW5nZSwgMCkpOworICAgICAgICsraTsKKyAgICAgfQorICAgaWYgKHR5 cGUtPm51bV9maWVsZHMgKCkgPiBpCisgICAgICAgJiYgc3RyY21wIChUWVBFX0ZJRUxEX05BTUUg KHR5cGUsIGkpLCAiZW5kIikgPT0gMCkKKyAgICAgeworLSAgICAgICpraW5kID0gKCpraW5kID09 IEJPVEhfQk9VTkRfREVGQVVMVAorLQkgICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IE5PTkVf Qk9VTkRfREVGQVVMVCk7CisrICAgICAgKmtpbmQgPSAoKmtpbmQgPT0gKFJBTkdFX0xPV19CT1VO RF9ERUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKQorKwkgICAgICAgPyBSQU5HRV9M T1dfQk9VTkRfREVGQVVMVCA6IFJBTkdFX1NUQU5EQVJEKTsKKyAgICAgICAqaGlnaCA9IHZhbHVl X2FzX2xvbmcgKHZhbHVlX2ZpZWxkIChyYW5nZSwgaSkpOworIAorICAgICAgIGlmIChydXN0X2lu Y2x1c2l2ZV9yYW5nZV90eXBlX3AgKHR5cGUpKQorQEAgLTEyMTEsNyArMTIwOSw3IEBAIHJ1c3Rf c3Vic2NyaXB0IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUg bm9zaWRlLAorICAgc3RydWN0IHR5cGUgKnJoc3R5cGU7CisgICBMT05HRVNUIGxvdywgaGlnaF9i b3VuZDsKKyAgIC8qIEluaXRpYWxpemVkIHRvIGFwcGVhc2UgdGhlIGNvbXBpbGVyLiAgKi8KKy0g IGVudW0gcmFuZ2VfdHlwZSBraW5kID0gQk9USF9CT1VORF9ERUZBVUxUOworKyAgcmFuZ2VfdHlw ZXMga2luZCA9IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZB VUxUOworICAgTE9OR0VTVCBoaWdoID0gMDsKKyAgIGludCB3YW50X3NsaWNlID0gMDsKKyAKK0BA IC0xMzA4LDggKzEzMDYsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKKyAgICAgICBlbHNlCisgCWVycm9yIChf KCJDYW5ub3Qgc3Vic2NyaXB0IG5vbi1hcnJheSB0eXBlIikpOworIAorLSAgICAgIGlmICh3YW50 X3NsaWNlCistCSAgJiYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9X X0JPVU5EX0RFRkFVTFQpKQorKyAgICAgIGlmICh3YW50X3NsaWNlICYmIChraW5kICYgUkFOR0Vf TE9XX0JPVU5EX0RFRkFVTFQpKQorIAlsb3cgPSBsb3dfYm91bmQ7CisgICAgICAgaWYgKGxvdyA8 IDApCisgCWVycm9yIChfKCJJbmRleCBsZXNzIHRoYW4gemVybyIpKTsKK0BAIC0xMzI3LDcgKzEz MjQsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3Ms IGVudW0gbm9zaWRlIG5vc2lkZSwKKyAJICBDT1JFX0FERFIgYWRkcjsKKyAJICBzdHJ1Y3QgdmFs dWUgKmFkZHJ2YWwsICp0ZW07CisgCistCSAgaWYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxU IHx8IGtpbmQgPT0gSElHSF9CT1VORF9ERUZBVUxUKQorKwkgIGlmIChraW5kICYgUkFOR0VfSElH SF9CT1VORF9ERUZBVUxUKQorIAkgICAgaGlnaCA9IGhpZ2hfYm91bmQ7CisgCSAgaWYgKGhpZ2gg PCAwKQorIAkgICAgZXJyb3IgKF8oIkhpZ2ggaW5kZXggbGVzcyB0aGFuIHplcm8iKSk7CgpkaWZm IC0tZ2l0IGEvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5w YXRjaCBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXNsaWNlcy1hdC1wcm9tcHQucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlNTg5MAotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXNsaWNlcy1hdC1wcm9tcHQu cGF0Y2gKQEAgLTAsMCArMSwyNjYwIEBACitGcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgor RGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAyMjo0NjoyMSAtMDcwMAorU3ViamVjdDogZ2RiLXJoYnox OTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaAorCis7OyBbZm9ydHJh bl0gQmFja3BvcnQgQW5kcmV3IEJ1cmdlc3MncyBjb21taXQgZm9yIEZvcnRyYW4gYXJyYXkKKzs7 IHNsaWNlIHN1cHBvcnQKKworZ2RiL2ZvcnRyYW46IEFkZCBzdXBwb3J0IGZvciBGb3J0cmFuIGFy cmF5IHNsaWNlcyBhdCB0aGUgR0RCIHByb21wdAorCitUaGlzIGNvbW1pdCBicmluZ3MgYXJyYXkg c2xpY2Ugc3VwcG9ydCB0byBHREIuCisKK1dBUk5JTkc6IFRoaXMgcGF0Y2ggY29udGFpbnMgYSBy YXRoZXIgYmlnIGhhY2sgd2hpY2ggaXMgbGltaXRlZCB0bworRm9ydHJhbiBhcnJheXMsIHRoaXMg Y2FuIGJlIHNlZW4gaW4gZ2RidHlwZXMuYyBhbmQgZi1sYW5nLmMuICBNb3JlCitkZXRhaWxzIG9u IHRoaXMgYmVsb3cuCisKK1RoaXMgcGF0Y2ggcmV3cml0ZXMgdHdvIGFyZWFzIG9mIEdEQidzIEZv cnRyYW4gc3VwcG9ydCwgdGhlIGNvZGUgdG8KK2V4dHJhY3QgYW4gYXJyYXkgc2xpY2UsIGFuZCB0 aGUgY29kZSB0byBwcmludCBhbiBhcnJheS4KKworQWZ0ZXIgdGhpcyBjb21taXQgYSB1c2VyIGNh biwgZnJvbSB0aGUgR0RCIHByb21wdCwgYXNrIGZvciBhIHNsaWNlIG9mCithIEZvcnRyYW4gYXJy YXkgYW5kIHNob3VsZCBnZXQgdGhlIGNvcnJlY3QgcmVzdWx0IGJhY2suICBTbGljZXMgY2FuCiso b3B0aW9uYWxseSkgaGF2ZSB0aGUgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kLCBhbmQgYSBzdHJp ZGUKK3NwZWNpZmllZC4gIFNsaWNlcyBjYW4gYWxzbyBoYXZlIGEgbmVnYXRpdmUgc3RyaWRlLgor CitGb3J0cmFuIGhhcyB0aGUgY29uY2VwdCBvZiByZXBhY2tpbmcgYXJyYXkgc2xpY2VzLiAgV2l0 aGluIGEgY29tcGlsZWQKK0ZvcnRyYW4gcHJvZ3JhbSBpZiBhIHVzZXIgcGFzc2VzIGEgbm9uLWNv bnRpZ3VvdXMgYXJyYXkgc2xpY2UgdG8gYQorZnVuY3Rpb24gdGhlbiB0aGUgY29tcGlsZXIgbWF5 IGhhdmUgdG8gcmVwYWNrIHRoZSBzbGljZSwgdGhpcyBpbnZvbHZlcworY29weWluZyB0aGUgZWxl bWVudHMgb2YgdGhlIHNsaWNlIHRvIGEgbmV3IGFyZWEgb2YgbWVtb3J5IGJlZm9yZSB0aGUKK2Nh bGwsIGFuZCBjb3B5aW5nIHRoZSBlbGVtZW50cyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBhcnJheSBh ZnRlciB0aGUKK2NhbGwuICBXaGV0aGVyIHJlcGFja2luZyBvY2N1cnMgd2lsbCBkZXBlbmQgb24g d2hpY2ggdmVyc2lvbiBvZgorRm9ydHJhbiBpcyBiZWluZyB1c2VkLCBhbmQgd2hhdCB0eXBlIG9m IGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4KKworVGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IGZv ciBib3RoIHBhY2tlZCwgYW5kIHVucGFja2VkIGFycmF5IHNsaWNpbmcsCit3aXRoIHRoZSBkZWZh dWx0IGJlaW5nIHVucGFja2VkLgorCitXaXRoIGFuIHVucGFja2VkIGFycmF5IHNsaWNlLCB3aGVu IHRoZSB1c2VyIGFza3MgZm9yIGEgc2xpY2Ugb2YgYW4KK2FycmF5IEdEQiBjcmVhdGVzIGEgbmV3 IHR5cGUgdGhhdCBhY2N1cmF0ZWx5IGRlc2NyaWJlcyB3aGVyZSB0aGUKK2VsZW1lbnRzIG9mIHRo ZSBzbGljZSBjYW4gYmUgZm91bmQgd2l0aGluIHRoZSBvcmlnaW5hbCBhcnJheSwgYQordmFsdWUg b2YgdGhpcyB0eXBlIGlzIHRoZW4gcmV0dXJuZWQgdG8gdGhlIHVzZXIuICBUaGUgYWRkcmVzcyBv ZiBhbgorZWxlbWVudCB3aXRoaW4gdGhlIHNsaWNlIHdpbGwgYmUgZXF1YWwgdG8gdGhlIGFkZHJl c3Mgb2YgYW4gZWxlbWVudAord2l0aGluIHRoZSBvcmlnaW5hbCBhcnJheS4KKworQSB1c2VyIGNh biBjaG9vc2UgdG8gc2VsZWN0IHBhY2tlZCBhcnJheSBzbGljZXMgaW5zdGVhZCB1c2luZzoKKwor ICAoZ2RiKSBzZXQgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzIG9ufG9mZgorICAoZ2RiKSBz aG93IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcworCitXaXRoIHBhY2tlZCBhcnJheSBzbGlj ZXMgR0RCIGNyZWF0ZXMgYSBuZXcgdHlwZSB0aGF0IHJlZmxlY3RzIGhvdyB0aGUKK2VsZW1lbnRz IG9mIHRoZSBzbGljZSB3b3VsZCBsb29rIGlmIHRoZXkgd2VyZSBsYWlkIG91dCBpbiBjb250aWd1 b3VzCittZW1vcnksIGFsbG9jYXRlcyBhIHZhbHVlIG9mIHRoaXMgdHlwZSwgYW5kIHRoZW4gZmV0 Y2hlcyB0aGUgZWxlbWVudHMKK2Zyb20gdGhlIG9yaWdpbmFsIGFycmF5IGFuZCBwbGFjZXMgdGhl biBpbnRvIHRoZSBjb250ZW50cyBidWZmZXIgb2YKK3RoZSBuZXcgdmFsdWUuCisKK09uZSBiZW5l Zml0IG9mIHVzaW5nIHBhY2tlZCBzbGljZXMgb3ZlciB1bnBhY2tlZCBzbGljZXMgaXMgdGhlIG1l bW9yeQordXNhZ2UsIHRha2luZyBhIHNtYWxsIHNsaWNlIG9mIE4gZWxlbWVudHMgZnJvbSBhIGxh cmdlIGFycmF5IHdpbGwKK3JlcXVpcmUgKGluIEdEQikgTiAqIEVMRU1FTlRfU0laRSBieXRlcyBv ZiBtZW1vcnksIHdoaWxlIGFuIHVucGFja2VkCithcnJheSB3aWxsIGFsc28gaW5jbHVkZSBhbGwg b2YgdGhlICJwYWRkaW5nIiBiZXR3ZWVuIHRoZQorbm9uLWNvbnRpZ3VvdXMgZWxlbWVudHMuICBU aGVyZSBhcmUgbmV3IHRlc3RzIGFkZGVkIHRoYXQgaGlnaGxpZ2h0Cit0aGlzIGRpZmZlcmVuY2Uu CisKK1RoZXJlIGlzIGFsc28gYSBuZXcgZGVidWdnaW5nIGZsYWcgYWRkZWQgd2l0aCB0aGlzIGNv bW1pdCB0aGF0CitpbnRyb2R1Y2VzIHRoZXNlIGNvbW1hbmRzOgorCisgIChnZGIpIHNldCBkZWJ1 ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcgb258b2ZmCisgIChnZGIpIHNob3cgZGVidWcgZm9ydHJh bi1hcnJheS1zbGljaW5nCisKK1RoaXMgcHJpbnRzIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUg YXJyYXkgc2xpY2VzIGFyZSBiZWluZyBidWlsdC4KKworQXMgYm90aCB0aGUgcmVwYWNraW5nLCBh bmQgdGhlIGFycmF5IHByaW50aW5nIHJlcXVpcmVzIEdEQiB0byB3YWxrCit0aHJvdWdoIGEgbXVs dGktZGltZW5zaW9uYWwgRm9ydHJhbiBhcnJheSB2aXNpdGluZyBlYWNoIGVsZW1lbnQsIHRoaXMK K2NvbW1pdCBhZGRzIHRoZSBmaWxlIGYtYXJyYXktd2Fsay5oLCB3aGljaCBpbnRyb2R1Y2VzIHNv bWUKK2luZnJhc3RydWN0dXJlIHRvIHN1cHBvcnQgdGhpcyBwcm9jZXNzLiAgVGhpcyBtZWFucyB0 aGUgYXJyYXkgcHJpbnRpbmcKK2NvZGUgaW4gZi12YWxwcmludC5jIGlzIHNpZ25pZmljYW50bHkg cmVkdWNlZC4KKworVGhlIG9ubHkgc2xpZ2h0IGlzc3VlIHdpdGggdGhpcyBjb21taXQgaXMgdGhl ICJyYXRoZXIgYmlnIGhhY2siIHRoYXQgSQorbWVudGlvbmVkIGFib3ZlLiAgVGhpcyBoYWNrIGFs bG93cyB1cyB0byBoYW5kbGUgb25lIHNwZWNpZmljIGNhc2UsCithcnJheSBzbGljZXMgd2l0aCBu ZWdhdGl2ZSBzdHJpZGVzLiAgVGhpcyBpcyBzb21ldGhpbmcgdGhhdCBJIGRvbid0CitiZWxpZXZl IHRoZSBjdXJyZW50IEdEQiB2YWx1ZSBjb250ZW50cyBtb2RlbCB3aWxsIGFsbG93IHVzIHRvCitj b3JyZWN0bHkgaGFuZGxlLCBhbmQgcmF0aGVyIHRoYW4gcmV3cml0ZSB0aGUgdmFsdWUgY29udGVu dHMgY29kZQorcmlnaHQgbm93LCBJJ20gaG9waW5nIHRvIHNsaXAgdGhpcyBoYWNrIGluIGFzIGEg d29yayBhcm91bmQuCisKK1RoZSBwcm9ibGVtIGlzIHRoYXQsIGFzIEkgc2VlIGl0LCB0aGUgY3Vy cmVudCB2YWx1ZSBjb250ZW50cyBtb2RlbAorYXNzdW1lcyB0aGF0IGFuIG9iamVjdCBiYXNlIGFk ZHJlc3Mgd2lsbCBiZSB0aGUgbG93ZXN0IGFkZHJlc3Mgd2l0aGluCit0aGF0IG9iamVjdCwgYW5k IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3Qgc3RhcnQgYXQgdGhpcyBiYXNlCithZGRy ZXNzIGFuZCBvY2N1cHkgdGhlIFRZUEVfTEVOR1RIIGJ5dGVzIGFmdGVyIHRoYXQuCisKKyggV2Ug ZG8gaGF2ZSB0aGUgZW1iZWRkZWRfb2Zmc2V0LCB3aGljaCBpcyB1c2VkIGZvciBDKysgc3ViLWNs YXNzZXMsCitzdWNoIHRoYXQgYW4gb2JqZWN0IGNhbiBzdGFydCBhdCBzb21lIG9mZnNldCBmcm9t IHRoZSBjb250ZW50IGJ1ZmZlciwKK2hvd2V2ZXIsIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIG9i amVjdCB0aGVuIG9jY3VwaWVzIHRoZSBuZXh0CitUWVBFX0xFTkdUSCBieXRlcyBpcyBzdGlsbCB0 cnVlIHdpdGhpbiBHREIuICkKKworVGhlIHByb2JsZW0gaXMgdGhhdCBGb3J0cmFuIGFycmF5cyB3 aXRoIGEgbmVnYXRpdmUgc3RyaWRlIGRvbid0IGZvbGxvdwordGhpcyBwYXR0ZXJuLiAgSW4gdGhp cyBjYXNlIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBwb2ludHMgdG8KK3RoZSBlbGVt ZW50IHdpdGggdGhlIGhpZ2hlc3QgYWRkcmVzcywgdGhlIGNvbnRlbnRzIG9mIHRoZSBhcnJheSB0 aGVuCitzdGFydCBhdCBzb21lIG9mZnNldCBfYmVmb3JlXyB0aGUgYmFzZSBhZGRyZXNzLCBhbmQg cHJvY2VlZCBmb3Igb25lCitlbGVtZW50IF9wYXN0XyB0aGUgYmFzZSBhZGRyZXNzLgorCitBcyB0 aGUgc3RyaWRlIGZvciBzdWNoIGFuIGFycmF5IHdvdWxkIGJlIG5lZ2F0aXZlIHRoZW4sIGluIHRo ZW9yeSB0aGUKK1RZUEVfTEVOR1RIIGZvciB0aGlzIHR5cGUgd291bGQgYWxzbyBiZSBuZWdhdGl2 ZS4gIEhvd2V2ZXIsIGluIG1hbnkKK3BsYWNlcyBhIHZhbHVlIGluIEdEQiB3aWxsIGRlZ3JhZGUg dG8gYSBwb2ludGVyICsgbGVuZ3RoLCBhbmQgdGhlCitsZW5ndGggYWxtb3N0IGFsd2F5cyBjb21l cyBmcm9tIHRoZSBUWVBFX0xFTkdUSC4KKworSXQgaXMgbXkgYmVsaWVmIHRoYXQgaW4gb3JkZXIg dG8gY29ycmVjdGx5IG1vZGVsIHRoaXMgY2FzZSB0aGUgdmFsdWUKK2NvbnRlbnQgaGFuZGxpbmcg b2YgR0RCIHdpbGwgbmVlZCB0byBiZSByZXdvcmtlZCB0byBzcGxpdCBhcGFydCB0aGUKK3ZhbHVl J3MgY29udGVudCBidWZmZXIgKHdoaWNoIGlzIGEgYmxvY2sgb2YgbWVtb3J5IHdpdGggYSBsZW5n dGgpLCBhbmQKK3RoZSBvYmplY3QncyBpbiBtZW1vcnkgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGgs IHdoaWNoIGNvdWxkIGJlCituZWdhdGl2ZS4KKworVGhpbmdzIGFyZSBmdXJ0aGVyIGNvbXBsaWNh dGVkIGJlY2F1c2UgYXJyYXlzIHdpdGggbmVnYXRpdmUgc3RyaWRlcworbGlrZSB0aGlzIGFyZSBh bHdheXMgZHluYW1pYyB0eXBlcy4gIFdoZW4gYSB2YWx1ZSBoYXMgYSBkeW5hbWljIHR5cGUKK2Fu ZCBpdHMgYmFzZSBhZGRyZXNzIG5lZWRzIHJlc29sdmluZyB3ZSBhY3R1YWxseSBzdG9yZSB0aGUg YWRkcmVzcyBvZgordGhlIG9iamVjdCB3aXRoaW4gdGhlIHJlc29sdmVkIGR5bmFtaWMgdHlwZSwg bm90IHdpdGhpbiB0aGUgdmFsdWUKK29iamVjdCBpdHNlbGYuCisKK0luIHNob3J0IEkgZG9uJ3Qg Y3VycmVudGx5IHNlZSBhbiBlYXN5IHBhdGggdG8gY2xlYW5seSBzdXBwb3J0IHRoaXMKK3NpdHVh dGlvbiB3aXRoaW4gR0RCLiAgQW5kIHNvIEkgYmVsaWV2ZSB0aGF0IGxlYXZlcyB0d28gb3B0aW9u cywKK2VpdGhlciBhZGQgYSB3b3JrIGFyb3VuZCwgb3IgY2F0Y2ggY2FzZXMgd2hlcmUgdGhlIHVz ZXIgdHJpZXMgdG8gbWFrZQordXNlIG9mIGEgbmVnYXRpdmUgc3RyaWRlLCBvciBhY2Nlc3MgYW4g YXJyYXkgd2l0aCBhIG5lZ2F0aXZlIHN0cmlkZSwKK2FuZCB0aHJvdyBhbiBlcnJvci4KKworVGhp cyBwYXRjaCBjdXJyZW50bHkgZ29lcyB3aXRoIGFkZGluZyBhIHdvcmsgYXJvdW5kLCB3aGljaCBp cyB0aGF0Cit3aGVuIHdlIHJlc29sdmUgYSBkeW5hbWljIEZvcnRyYW4gYXJyYXkgdHlwZSwgaWYg dGhlIHN0cmlkZSBpcworbmVnYXRpdmUsIHRoZW4gd2UgYWRqdXN0IHRoZSBiYXNlIGFkZHJlc3Mg dG8gcG9pbnQgdG8gdGhlIGxvd2VzdAorYWRkcmVzcyByZXF1aXJlZCBieSB0aGUgYXJyYXkuICBU aGUgcHJpbnRpbmcgYW5kIHNsaWNpbmcgY29kZSBpcyBhd2FyZQorb2YgdGhpcyBhZGp1c3RtZW50 IGFuZCB3aWxsIGNvcnJlY3RseSBzbGljZSBhbmQgcHJpbnQgRm9ydHJhbiBhcnJheXMuCisKK1do ZXJlIHRoaXMgaGFjayB3aWxsIHNob3cgdGhyb3VnaCB0byB0aGUgdXNlciBpcyBpZiB0aGV5IGFz ayBmb3IgdGhlCithZGRyZXNzIG9mIGFuIGFycmF5IGluIHRoZWlyIHByb2dyYW0gd2l0aCBhIG5l Z2F0aXZlIGFycmF5IHN0cmlkZSwgdGhlCithZGRyZXNzIHRoZXkgZ2V0IGZyb20gR0RCIHdpbGwg bm90IG1hdGNoIHRoZSBhZGRyZXNzIHRoYXQgd291bGQgYmUKK2NvbXB1dGVkIHdpdGhpbiB0aGUg Rm9ydHJhbiBwcm9ncmFtLgorCitnZGIvQ2hhbmdlTG9nOgorCisJKiBNYWtlZmlsZS5pbiAoSEZJ TEVTX05PX1NSQ0RJUik6IEFkZCBmLWFycmF5LXdhbGtlci5oLgorCSogTkVXUzogTWVudGlvbiBu ZXcgb3B0aW9ucy4KKwkqIGYtYXJyYXktd2Fsa2VyLmg6IE5ldyBmaWxlLgorCSogZi1sYW5nLmM6 IEluY2x1ZGUgJ2dkYmNtZC5oJyBhbmQgJ2YtYXJyYXktd2Fsa2VyLmgnLgorCShyZXBhY2tfYXJy YXlfc2xpY2VzKTogTmV3IHN0YXRpYyBnbG9iYWwuCisJKHNob3dfcmVwYWNrX2FycmF5X3NsaWNl cyk6IE5ldyBmdW5jdGlvbi4KKwkoZm9ydHJhbl9hcnJheV9zbGljaW5nX2RlYnVnKTogTmV3IHN0 YXRpYyBnbG9iYWwuCisJKHNob3dfZm9ydHJhbl9hcnJheV9zbGljaW5nX2RlYnVnKTogTmV3IGZ1 bmN0aW9uLgorCSh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBEZWxldGUuCisJKHNraXBfdW5kZXRlcm1p bmVkX2FyZ2xpc3QpOiBEZWxldGUuCisJKGNsYXNzIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfYmFz ZV9pbXBsKTogTmV3IGNsYXNzLgorCShjbGFzcyBmb3J0cmFuX2xhenlfYXJyYXlfcmVwYWNrZXJf aW1wbCk6IE5ldyBjbGFzcy4KKwkoY2xhc3MgZm9ydHJhbl9hcnJheV9yZXBhY2tlcl9pbXBsKTog TmV3IGNsYXNzLgorCShmb3J0cmFuX3ZhbHVlX3N1YmFycmF5KTogQ29tcGxldGUgcmV3cml0ZS4K Kwkoc2V0X2ZvcnRyYW5fbGlzdCk6IE5ldyBzdGF0aWMgZ2xvYmFsLgorCShzaG93X2ZvcnRyYW5f bGlzdCk6IExpa2V3aXNlLgorCShfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlKTogUmVnaXN0ZXIgbmV3 IGNvbW1hbmRzLgorCShmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jhc2VfYWRkcmVzc19o YWNrKTogTmV3IGZ1bmN0aW9uLgorCSogZi1sYW5nLmggKGZvcnRyYW5fYWRqdXN0X2R5bmFtaWNf YXJyYXlfYmFzZV9hZGRyZXNzX2hhY2spOgorCURlY2xhcmUuCisJKiBmLXZhbHByaW50LmM6IElu Y2x1ZGUgJ2YtYXJyYXktd2Fsa2VyLmgnLgorCShjbGFzcyBmb3J0cmFuX2FycmF5X3ByaW50ZXJf aW1wbCk6IE5ldyBjbGFzcy4KKwkoZjc3X3ByaW50X2FycmF5XzEpOiBEZWxldGUuCisJKGY3N19w cmludF9hcnJheSk6IERlbGV0ZS4KKwkoZm9ydHJhbl9wcmludF9hcnJheSk6IE5ldy4KKwkoZl92 YWx1ZV9wcmludF9pbm5lcik6IFVwZGF0ZSB0byBjYWxsIGZvcnRyYW5fcHJpbnRfYXJyYXkuCisJ KiBnZGJ0eXBlcy5jOiBJbmNsdWRlICdmLWxhbmcuaCcuCisJKHJlc29sdmVfZHluYW1pY190eXBl X2ludGVybmFsKTogQ2FsbAorCWZvcnRyYW5fYWRqdXN0X2R5bmFtaWNfYXJyYXlfYmFzZV9hZGRy ZXNzX2hhY2suCisKK2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgorCisgICAgICAgICogZ2RiLmZv cnRyYW4vYXJyYXktc2xpY2VzLWJhZC5leHA6IE5ldyBmaWxlLgorICAgICAgICAqIGdkYi5mb3J0 cmFuL2FycmF5LXNsaWNlcy1iYWQuZjkwOiBOZXcgZmlsZS4KKyAgICAgICAgKiBnZGIuZm9ydHJh bi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5leHA6IE5ldyBmaWxlLgorICAgICAgICAqIGdkYi5m b3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmY5MDogTmV3IGZpbGUuCisgICAgICAgICog Z2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cDogUmV3cml0ZSB0ZXN0cy4KKyAgICAgICAgKiBn ZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZjkwOiBSZXdyaXRlIHRlc3RzLgorICAgICAgICAqIGdk Yi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwOiBDb3JyZWN0IGV4cGVjdGVkIHJlc3VsdHMuCisKK2dk Yi9kb2MvQ2hhbmdlTG9nOgorCisgICAgICAgICogZ2RiLnRleGluZm8gKERlYnVnZ2luZyBPdXRw dXQpOiBEb2N1bWVudCAnc2V0L3Nob3cgZGVidWcKKyAgICAgICAgZm9ydHJhbi1hcnJheS1zbGlj aW5nJy4KKyAgICAgICAgKFNwZWNpYWwgRm9ydHJhbiBDb21tYW5kcyk6IERvY3VtZW50ICdzZXQv c2hvdyBmb3J0cmFuCisgICAgICAgIHJlcGFjay1hcnJheS1zbGljZXMnLgorCitkaWZmIC0tZ2l0 IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCistLS0gYS9nZGIvTWFrZWZpbGUu aW4KKysrKyBiL2dkYi9NYWtlZmlsZS5pbgorQEAgLTEyNjgsNiArMTI2OCw3IEBAIEhGSUxFU19O T19TUkNESVIgPSBcCisgCWV4cHJlc3Npb24uaCBcCisgCWV4dGVuc2lvbi5oIFwKKyAJZXh0ZW5z aW9uLXByaXYuaCBcCisrCWYtYXJyYXktd2Fsa2VyLmggXAorIAlmLWxhbmcuaCBcCisgCWZic2Qt bmF0LmggXAorIAlmYnNkLXRkZXAuaCBcCitkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVX UworLS0tIGEvZ2RiL05FV1MKKysrKyBiL2dkYi9ORVdTCitAQCAtMTExLDYgKzExMSwxOSBAQCBt YWludGVuYW5jZSBwcmludCBjb3JlLWZpbGUtYmFja2VkLW1hcHBpbmdzCisgICBQcmludHMgZmls ZS1iYWNrZWQgbWFwcGluZ3MgbG9hZGVkIGZyb20gYSBjb3JlIGZpbGUncyBub3RlIHNlY3Rpb24u CisgICBPdXRwdXQgaXMgZXhwZWN0ZWQgdG8gYmUgc2ltaWxhciB0byB0aGF0IG9mICJpbmZvIHBy b2MgbWFwcGluZ3MiLgorIAorK3NldCBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcgb258b2Zm Cisrc2hvdyBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcKKysgIFByaW50IGRlYnVnZ2luZyB3 aGVuIHRha2luZyBzbGljZXMgb2YgRm9ydHJhbiBhcnJheXMuCisrCisrc2V0IGZvcnRyYW4gcmVw YWNrLWFycmF5LXNsaWNlcyBvbnxvZmYKKytzaG93IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNl cworKyAgV2hlbiB0YWtpbmcgc2xpY2VzIGZyb20gRm9ydHJhbiBhcnJheXMgYW5kIHN0cmluZ3Ms IGlmIHRoZSBzbGljZSBpcworKyAgbm9uLWNvbnRpZ3VvdXMgd2l0aGluIHRoZSBvcmlnaW5hbCB2 YWx1ZSB0aGVuLCB3aGVuIHRoaXMgb3B0aW9uIGlzCisrICBvbiwgdGhlIG5ldyB2YWx1ZSB3aWxs IGJlIHJlcGFja2VkIGludG8gYSBzaW5nbGUgY29udGlndW91cyB2YWx1ZS4KKysgIFdoZW4gdGhp cyBvcHRpb24gaXMgb2ZmLCB0aGVuIHRoZSB2YWx1ZSByZXR1cm5lZCB3aWxsIGNvbnNpc3Qgb2Yg YQorKyAgZGVzY3JpcHRvciB0aGF0IGRlc2NyaWJlcyB0aGUgc2xpY2Ugd2l0aGluIHRoZSBtZW1v cnkgb2YgdGhlCisrICBvcmlnaW5hbCBwYXJlbnQgdmFsdWUuCisrCisgKiBDaGFuZ2VkIGNvbW1h bmRzCisgCisgYWxpYXMgWy1hXSBbLS1dIEFMSUFTID0gQ09NTUFORCBbREVGQVVMVC1BUkdTLi4u XQorZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZv CistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitA QCAtMTY5MTksNiArMTY5MTksMjkgQEAgVGhpcyBjb21tYW5kIHByaW50cyB0aGUgdmFsdWVzIGNv bnRhaW5lZCBpbiB0aGUgRm9ydHJhbiBAY29kZXtDT01NT059CisgYmxvY2sgd2hvc2UgbmFtZSBp cyBAdmFye2NvbW1vbi1uYW1lfS4gIFdpdGggbm8gYXJndW1lbnQsIHRoZSBuYW1lcyBvZgorIGFs bCBAY29kZXtDT01NT059IGJsb2NrcyB2aXNpYmxlIGF0IHRoZSBjdXJyZW50IHByb2dyYW0gbG9j YXRpb24gYXJlCisgcHJpbnRlZC4KKytAY2luZGV4IGFycmF5cyBzbGljZXMgKEZvcnRyYW4pCisr QGtpbmRleCBzZXQgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzCisrQGtpbmRleCBzaG93IGZv cnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcworK0BpdGVtIHNldCBmb3J0cmFuIHJlcGFjay1hcnJh eS1zbGljZXMgW29ufG9mZl0KKytAaXRlbSBzaG93IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNl cworK1doZW4gdGFraW5nIGEgc2xpY2UgZnJvbSBhbiBhcnJheSwgYSBGb3J0cmFuIGNvbXBpbGVy IGNhbiBjaG9vc2UgdG8KKytlaXRoZXIgcHJvZHVjZSBhbiBhcnJheSBkZXNjcmlwdG9yIHRoYXQg ZGVzY3JpYmVzIHRoZSBzbGljZSBpbiBwbGFjZSwKKytvciBpdCBtYXkgcmVwYWNrIHRoZSBzbGlj ZSwgY29weWluZyB0aGUgZWxlbWVudHMgb2YgdGhlIHNsaWNlIGludG8gYQorK25ldyByZWdpb24g b2YgbWVtb3J5LgorKworK1doZW4gdGhpcyBzZXR0aW5nIGlzIG9uLCB0aGVuIEB2YWx1ZXtHREJO fSB3aWxsIGFsc28gcmVwYWNrIGFycmF5Cisrc2xpY2VzIGluIHNvbWUgc2l0dWF0aW9ucy4gIFdo ZW4gdGhpcyBzZXR0aW5nIGlzIG9mZiwgdGhlbgorK0B2YWx1ZXtHREJOfSB3aWxsIGNyZWF0ZSBh cnJheSBkZXNjcmlwdG9ycyBmb3Igc2xpY2VzIHRoYXQgcmVmZXJlbmNlCisrdGhlIG9yaWdpbmFs IGRhdGEgaW4gcGxhY2UuCisrCisrQHZhbHVle0dEQk59IHdpbGwgbmV2ZXIgcmVwYWNrIGFuIGFy cmF5IHNsaWNlIGlmIHRoZSBkYXRhIGZvciB0aGUKKytzbGljZSBpcyBjb250aWd1b3VzIHdpdGhp biB0aGUgb3JpZ2luYWwgYXJyYXkuCisrCisrQHZhbHVle0dEQk59IHdpbGwgYWx3YXlzIHJlcGFj ayBzdHJpbmcgc2xpY2VzIGlmIHRoZSBkYXRhIGZvciB0aGUKKytzbGljZSBpcyBub24tY29udGln dW91cyB3aXRoaW4gdGhlIG9yaWdpbmFsIHN0cmluZyBhcyBAdmFsdWV7R0RCTn0KKytkb2VzIG5v dCBzdXBwb3J0IHByaW50aW5nIG5vbi1jb250aWd1b3VzIHN0cmluZ3MuCisrCisrVGhlIGRlZmF1 bHQgZm9yIHRoaXMgc2V0dGluZyBpcyBAY29kZXtvZmZ9LgorIEBlbmQgdGFibGUKKyAKKyBAbm9k ZSBQYXNjYWwKK0BAIC0yNjUwNyw2ICsyNjUzMCwxNiBAQCBTaG93IHRoZSBjdXJyZW50IHN0YXRl IG9mIEZyZWVCU0QgTFdQIGRlYnVnZ2luZyBtZXNzYWdlcy4KKyBUdXJucyBvbiBvciBvZmYgZGVi dWdnaW5nIG1lc3NhZ2VzIGZyb20gdGhlIEZyZWVCU0QgbmF0aXZlIHRhcmdldC4KKyBAaXRlbSBz aG93IGRlYnVnIGZic2QtbmF0CisgU2hvdyB0aGUgY3VycmVudCBzdGF0ZSBvZiBGcmVlQlNEIG5h dGl2ZSB0YXJnZXQgZGVidWdnaW5nIG1lc3NhZ2VzLgorKworK0BpdGVtIHNldCBkZWJ1ZyBmb3J0 cmFuLWFycmF5LXNsaWNpbmcKKytAY2luZGV4IGZvcnRyYW4gYXJyYXkgc2xpY2luZyBkZWJ1Z2dp bmcgaW5mbworK1R1cm5zIG9uIG9yIG9mZiBkaXNwbGF5IG9mIEB2YWx1ZXtHREJOfSBGb3J0cmFu IGFycmF5IHNsaWNpbmcKKytkZWJ1Z2dpbmcgaW5mby4gIFRoZSBkZWZhdWx0IGlzIG9mZi4KKysK KytAaXRlbSBzaG93IGRlYnVnIGZvcnRyYW4tYXJyYXktc2xpY2luZworK0Rpc3BsYXlzIHRoZSBj dXJyZW50IHN0YXRlIG9mIGRpc3BsYXlpbmcgQHZhbHVle0dEQk59IEZvcnRyYW4gYXJyYXkKKytz bGljaW5nIGRlYnVnZ2luZyBpbmZvLgorKworIEBpdGVtIHNldCBkZWJ1ZyBmcmFtZQorIEBjaW5k ZXggZnJhbWUgZGVidWdnaW5nIGluZm8KKyBUdXJucyBvbiBvciBvZmYgZGlzcGxheSBvZiBAdmFs dWV7R0RCTn0gZnJhbWUgZGVidWdnaW5nIGluZm8uICBUaGUKK2RpZmYgLS1naXQgYS9nZGIvZi1h cnJheS13YWxrZXIuaCBiL2dkYi9mLWFycmF5LXdhbGtlci5oCituZXcgZmlsZSBtb2RlIDEwMDY0 NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL2YtYXJyYXktd2Fsa2VyLmgKK0BAIC0wLDAgKzEs MjY1IEBACisrLyogQ29weXJpZ2h0IChDKSAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrLyogU3VwcG9ydCBjbGFzc2VzIHRvIHdy YXAgdXAgdGhlIHByb2Nlc3Mgb2YgaXRlcmF0aW5nIG92ZXIgYQorKyAgIG11bHRpLWRpbWVuc2lv bmFsIEZvcnRyYW4gYXJyYXkuICAqLworKworKyNpZm5kZWYgRl9BUlJBWV9XQUxLRVJfSAorKyNk ZWZpbmUgRl9BUlJBWV9XQUxLRVJfSAorKworKyNpbmNsdWRlICJkZWZzLmgiCisrI2luY2x1ZGUg ImdkYnR5cGVzLmgiCisrI2luY2x1ZGUgImYtbGFuZy5oIgorKworKy8qIENsYXNzIGZvciBjYWxj dWxhdGluZyB0aGUgYnl0ZSBvZmZzZXQgZm9yIGVsZW1lbnRzIHdpdGhpbiBhIHNpbmdsZQorKyAg IGRpbWVuc2lvbiBvZiBhIEZvcnRyYW4gYXJyYXkuICAqLworK2NsYXNzIGZvcnRyYW5fYXJyYXlf b2Zmc2V0X2NhbGN1bGF0b3IKKyt7CisrcHVibGljOgorKyAgLyogQ3JlYXRlIGEgbmV3IG9mZnNl dCBjYWxjdWxhdG9yIGZvciBUWVBFLCB3aGljaCBpcyBlaXRoZXIgYW4gYXJyYXkgb3IgYQorKyAg ICAgc3RyaW5nLiAgKi8KKysgIGV4cGxpY2l0IGZvcnRyYW5fYXJyYXlfb2Zmc2V0X2NhbGN1bGF0 b3IgKHN0cnVjdCB0eXBlICp0eXBlKQorKyAgeworKyAgICAvKiBWYWxpZGF0ZSB0aGUgdHlwZS4g ICovCisrICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKKysgICAgaWYgKHR5cGUtPmNv ZGUgKCkgIT0gVFlQRV9DT0RFX0FSUkFZCisrCSYmICh0eXBlLT5jb2RlICgpICE9IFRZUEVfQ09E RV9TVFJJTkcpKQorKyAgICAgIGVycm9yIChfKCJjYW4gb25seSBjb21wdXRlIG9mZnNldHMgZm9y IGFycmF5cyBhbmQgc3RyaW5ncyIpKTsKKysKKysgICAgLyogR2V0IHRoZSByYW5nZSwgYW5kIGV4 dHJhY3QgdGhlIGJvdW5kcy4gICovCisrICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gdHlw ZS0+aW5kZXhfdHlwZSAoKTsKKysgICAgaWYgKCFnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90 eXBlLCAmbV9sb3dlcmJvdW5kLCAmbV91cHBlcmJvdW5kKSkKKysgICAgICBlcnJvciAoInVuYWJs ZSB0byByZWFkIGFycmF5IGJvdW5kcyIpOworKworKyAgICAvKiBGaWd1cmUgb3V0IHRoZSBzdHJp ZGUgZm9yIHRoaXMgYXJyYXkuICAqLworKyAgICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVj a190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICAgIG1fc3RyaWRlID0gdHlw ZS0+aW5kZXhfdHlwZSAoKS0+Ym91bmRzICgpLT5iaXRfc3RyaWRlICgpOworKyAgICBpZiAobV9z dHJpZGUgPT0gMCkKKysgICAgICBtX3N0cmlkZSA9IHR5cGVfbGVuZ3RoX3VuaXRzIChlbHRfdHlw ZSk7CisrICAgIGVsc2UKKysgICAgICB7CisrCXN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X3R5 cGVfYXJjaCAoZWx0X3R5cGUpOworKwlpbnQgdW5pdF9zaXplID0gZ2RiYXJjaF9hZGRyZXNzYWJs ZV9tZW1vcnlfdW5pdF9zaXplIChhcmNoKTsKKysJbV9zdHJpZGUgLz0gKHVuaXRfc2l6ZSAqIDgp OworKyAgICAgIH0KKysgIH07CisrCisrICAvKiBHZXQgdGhlIGJ5dGUgb2Zmc2V0IGZvciBlbGVt ZW50IElOREVYIHdpdGhpbiB0aGUgdHlwZSB3ZSBhcmUgd29ya2luZworKyAgICAgb24uICBUaGVy ZSBpcyBubyBib3VuZHMgY2hlY2tpbmcgZG9uZSBvbiBJTkRFWC4gIElmIHRoZSBzdHJpZGUgaXMK KysgICAgIG5lZ2F0aXZlIHRoZW4gd2Ugc3RpbGwgYXNzdW1lIHRoYXQgdGhlIGJhc2UgYWRkcmVz cyAoZm9yIHRoZSBhcnJheQorKyAgICAgb2JqZWN0KSBwb2ludHMgdG8gdGhlIGVsZW1lbnQgd2l0 aCB0aGUgbG93ZXN0IG1lbW9yeSBhZGRyZXNzLCB3ZSB0aGVuCisrICAgICBjYWxjdWxhdGUgYW4g b2Zmc2V0IGFzc3VtaW5nIHRoYXQgaW5kZXggMCB3aWxsIGJlIHRoZSBlbGVtZW50IGF0IHRoZQor KyAgICAgaGlnaGVzdCBhZGRyZXNzLCBpbmRleCAxIHRoZSBuZXh0IGhpZ2hlc3QsIGFuZCBzbyBv bi4gIFRoaXMgaXMgbm90CisrICAgICBxdWl0ZSBob3cgRm9ydHJhbiB3b3JrcyBpbiByZWFsaXR5 OyBpbiByZWFsaXR5IHRoZSBiYXNlIGFkZHJlc3Mgb2YKKysgICAgIHRoZSBvYmplY3Qgd291bGQg cG9pbnQgYXQgdGhlIGVsZW1lbnQgd2l0aCB0aGUgaGlnaGVzdCBhZGRyZXNzLCBhbmQKKysgICAg IHdlIHdvdWxkIGluZGV4IGJhY2t3YXJkcyBmcm9tIHRoZXJlIGluIHRoZSAibm9ybWFsIiB3YXks IGhvd2V2ZXIsCisrICAgICBHREIncyBjdXJyZW50IHZhbHVlIGNvbnRlbnRzIG1vZGVsIGRvZXNu J3Qgc3VwcG9ydCBoYXZpbmcgdGhlIGJhc2UKKysgICAgIGFkZHJlc3MgYmUgbmVhciB0byB0aGUg ZW5kIG9mIHRoZSB2YWx1ZSBjb250ZW50cywgc28gd2UgY3VycmVudGx5CisrICAgICBhZGp1c3Qg dGhlIGJhc2UgYWRkcmVzcyBvZiBGb3J0cmFuIGFycmF5cyB3aXRoIG5lZ2F0aXZlIHN0cmlkZXMg c28KKysgICAgIHRoZWlyIGJhc2UgYWRkcmVzcyBwb2ludHMgYXQgdGhlIGxvd2VzdCBtZW1vcnkg YWRkcmVzcy4gIFRoaXMgY29kZQorKyAgICAgaGVyZSBpcyBwYXJ0IG9mIHdvcmtpbmcgYXJvdW5k IHRoaXMgd2VpcmRuZXNzLiAgKi8KKysgIExPTkdFU1QgaW5kZXhfb2Zmc2V0IChMT05HRVNUIGlu ZGV4KQorKyAgeworKyAgICBMT05HRVNUIG9mZnNldDsKKysgICAgaWYgKG1fc3RyaWRlIDwgMCkK KysgICAgICBvZmZzZXQgPSBzdGQ6OmFicyAobV9zdHJpZGUpICogKG1fdXBwZXJib3VuZCAtIGlu ZGV4KTsKKysgICAgZWxzZQorKyAgICAgIG9mZnNldCA9IHN0ZDo6YWJzIChtX3N0cmlkZSkgKiAo aW5kZXggLSBtX2xvd2VyYm91bmQpOworKyAgICByZXR1cm4gb2Zmc2V0OworKyAgfQorKworK3By aXZhdGU6CisrCisrICAvKiBUaGUgc3RyaWRlIGZvciB0aGUgdHlwZSB3ZSBhcmUgd29ya2luZyB3 aXRoLiAgKi8KKysgIExPTkdFU1QgbV9zdHJpZGU7CisrCisrICAvKiBUaGUgdXBwZXIgYm91bmQg Zm9yIHRoZSB0eXBlIHdlIGFyZSB3b3JraW5nIHdpdGguICAqLworKyAgTE9OR0VTVCBtX3VwcGVy Ym91bmQ7CisrCisrICAvKiBUaGUgbG93ZXIgYm91bmQgZm9yIHRoZSB0eXBlIHdlIGFyZSB3b3Jr aW5nIHdpdGguICAqLworKyAgTE9OR0VTVCBtX2xvd2VyYm91bmQ7CisrfTsKKysKKysvKiBBIGJh c2UgY2xhc3MgdXNlZCBieSBmb3J0cmFuX2FycmF5X3dhbGtlci4gIFRoZXJlJ3Mgbm8gdmlydHVh bCBtZXRob2RzCisrICAgaGVyZSwgc3ViLWNsYXNzZXMgc2hvdWxkIGp1c3Qgb3ZlcnJpZGUgdGhl IGZ1bmN0aW9ucyB0aGV5IHdhbnQgaW4gb3JkZXIKKysgICB0byBzcGVjaWFsaXNlIHRoZSBiZWhh dmlvdXIgdG8gdGhlaXIgbmVlZHMuICBUaGUgZnVuY3Rpb25hbGl0eQorKyAgIHByb3ZpZGVkIGlu IHRoZXNlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIHdpbGwgdmlzaXQgZXZlcnkgYXJyYXkKKysg ICBlbGVtZW50LCBidXQgZG8gbm90aGluZyBmb3IgZWFjaCBlbGVtZW50LiAgKi8KKysKKytzdHJ1 Y3QgZm9ydHJhbl9hcnJheV93YWxrZXJfYmFzZV9pbXBsCisreworKyAgLyogQ2FsbGVkIHdoZW4g aXRlcmF0aW5nIGJldHdlZW4gdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2YgZWFjaAorKyAg ICAgZGltZW5zaW9uIG9mIHRoZSBhcnJheS4gIFJldHVybiB0cnVlIGlmIEdEQiBzaG91bGQgY29u dGludWUgaXRlcmF0aW5nLAorKyAgICAgb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuCisrCisrICAg ICBTSE9VTERfQ09OVElOVUUgaW5kaWNhdGVzIGlmIEdEQiBpcyBnb2luZyB0byBzdG9wIGFueXdh eSwgYW5kIHNob3VsZAorKyAgICAgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uIHdoZW4gZGVj aWRpbmcgd2hhdCB0byByZXR1cm4uICBJZgorKyAgICAgU0hPVUxEX0NPTlRJTlVFIGlzIGZhbHNl IHRoZW4gdGhpcyBmdW5jdGlvbiBtdXN0IGFsc28gcmV0dXJuIGZhbHNlLAorKyAgICAgdGhlIGZ1 bmN0aW9uIGlzIHN0aWxsIGNhbGxlZCB0aG91Z2ggaW4gY2FzZSBleHRyYSB3b3JrIG5lZWRzIHRv IGJlCisrICAgICBkb25lIGFzIHBhcnQgb2YgdGhlIHN0b3BwaW5nIHByb2Nlc3MuICAqLworKyAg Ym9vbCBjb250aW51ZV93YWxraW5nIChib29sIHNob3VsZF9jb250aW51ZSkKKysgIHsgcmV0dXJu IHNob3VsZF9jb250aW51ZTsgfQorKworKyAgLyogQ2FsbGVkIHdoZW4gR0RCIHN0YXJ0cyBpdGVy YXRpbmcgb3ZlciBhIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuICBUaGUKKysgICAgIGFyZ3VtZW50 IElOTkVSX1AgaXMgdHJ1ZSBmb3IgdGhlIGlubmVyIG1vc3QgZGltZW5zaW9uICh0aGUgZGltZW5z aW9uCisrICAgICBjb250YWluaW5nIHRoZSBhY3R1YWwgZWxlbWVudHMgb2YgdGhlIGFycmF5KSwg YW5kIGZhbHNlIGZvciBtb3JlIG91dGVyCisrICAgICBkaW1lbnNpb25zLiAgRm9yIGEgY29uY3Jl dGUgZXhhbXBsZSBvZiBob3cgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKysgICAgIHNlZSB0aGUg Y29tbWVudCBvbiBwcm9jZXNzX2VsZW1lbnQgYmVsb3cuICAqLworKyAgdm9pZCBzdGFydF9kaW1l bnNpb24gKGJvb2wgaW5uZXJfcCkKKysgIHsgLyogTm90aGluZy4gICovIH0KKysKKysgIC8qIENh bGxlZCB3aGVuIEdEQiBmaW5pc2hlcyBpdGVyYXRpbmcgb3ZlciBhIGRpbWVuc2lvbiBvZiB0aGUg YXJyYXkuICBUaGUKKysgICAgIGFyZ3VtZW50IElOTkVSX1AgaXMgdHJ1ZSBmb3IgdGhlIGlubmVy IG1vc3QgZGltZW5zaW9uICh0aGUgZGltZW5zaW9uCisrICAgICBjb250YWluaW5nIHRoZSBhY3R1 YWwgZWxlbWVudHMgb2YgdGhlIGFycmF5KSwgYW5kIGZhbHNlIGZvciBtb3JlIG91dGVyCisrICAg ICBkaW1lbnNpb25zLiAgTEFTVF9QIGlzIHRydWUgZm9yIHRoZSBsYXN0IGNhbGwgYXQgYSBwYXJ0 aWN1bGFyCisrICAgICBkaW1lbnNpb24uICBGb3IgYSBjb25jcmV0ZSBleGFtcGxlIG9mIGhvdyB0 aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAorKyAgICAgc2VlIHRoZSBjb21tZW50IG9uIHByb2Nlc3Nf ZWxlbWVudCBiZWxvdy4gICovCisrICB2b2lkIGZpbmlzaF9kaW1lbnNpb24gKGJvb2wgaW5uZXJf cCwgYm9vbCBsYXN0X3ApCisrICB7IC8qIE5vdGhpbmcuICAqLyB9CisrCisrICAvKiBDYWxsZWQg d2hlbiBwcm9jZXNzaW5nIHRoZSBpbm5lciBtb3N0IGRpbWVuc2lvbiBvZiB0aGUgYXJyYXksIGZv cgorKyAgICAgZXZlcnkgZWxlbWVudCBpbiB0aGUgYXJyYXkuICBFTFRfVFlQRSBpcyB0aGUgdHlw ZSBvZiB0aGUgZWxlbWVudCBiZWluZworKyAgICAgZXh0cmFjdGVkLCBhbmQgRUxUX09GRiBpcyB0 aGUgb2Zmc2V0IG9mIHRoZSBlbGVtZW50IGZyb20gdGhlIHN0YXJ0IG9mCisrICAgICBhcnJheSBi ZWluZyB3YWxrZWQsIGFuZCBMQVNUX1AgaXMgdHJ1ZSBvbmx5IHdoZW4gdGhpcyBpcyB0aGUgbGFz dAorKyAgICAgZWxlbWVudCB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIGluIHRoaXMgZGltZW5zaW9u LgorKworKyAgICAgR2l2ZW4gdGhpcyB0d28gZGltZW5zaW9uYWwgYXJyYXkgKCgxLCAyKSAoMywg NCkpLCB0aGUgY2FsbHMgdG8KKysgICAgIHN0YXJ0X2RpbWVuc2lvbiwgcHJvY2Vzc19lbGVtZW50 LCBhbmQgZmluaXNoX2RpbWVuc2lvbiBsb29rIGxpa2UgdGhpczoKKysKKysgICAgIHN0YXJ0X2Rp bWVuc2lvbiAoZmFsc2UpOworKyAgICAgICBzdGFydF9kaW1lbnNpb24gKHRydWUpOworKyAgICAg ICAgIHByb2Nlc3NfZWxlbWVudCAoVFlQRSwgT0ZGU0VULCBmYWxzZSk7CisrICAgICAgICAgcHJv Y2Vzc19lbGVtZW50IChUWVBFLCBPRkZTRVQsIHRydWUpOworKyAgICAgICBmaW5pc2hfZGltZW5z aW9uICh0cnVlLCBmYWxzZSk7CisrICAgICAgIHN0YXJ0X2RpbWVuc2lvbiAodHJ1ZSk7CisrICAg ICAgICAgcHJvY2Vzc19lbGVtZW50IChUWVBFLCBPRkZTRVQsIGZhbHNlKTsKKysgICAgICAgICBw cm9jZXNzX2VsZW1lbnQgKFRZUEUsIE9GRlNFVCwgdHJ1ZSk7CisrICAgICAgIGZpbmlzaF9kaW1l bnNpb24gKHRydWUsIHRydWUpOworKyAgICAgZmluaXNoX2RpbWVuc2lvbiAoZmFsc2UsIHRydWUp OyAgKi8KKysgIHZvaWQgcHJvY2Vzc19lbGVtZW50IChzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUsIExP TkdFU1QgZWx0X29mZiwgYm9vbCBsYXN0X3ApCisrICB7IC8qIE5vdGhpbmcuICAqLyB9CisrfTsK KysKKysvKiBBIGNsYXNzIHRvIHdyYXAgdXAgdGhlIHByb2Nlc3Mgb2YgaXRlcmF0aW5nIG92ZXIg YSBtdWx0aS1kaW1lbnNpb25hbAorKyAgIEZvcnRyYW4gYXJyYXkuICBJTVBMIGlzIHVzZWQgdG8g c3BlY2lhbGlzZSB3aGF0IGhhcHBlbnMgYXMgd2Ugd2FsayBvdmVyCisrICAgdGhlIGFycmF5LiAg U2VlIGNsYXNzIEZPUlRSQU5fQVJSQVlfV0FMS0VSX0JBU0VfSU1QTCAoYWJvdmUpIGZvciB0aGUK KysgICBtZXRob2RzIHRoYW4gY2FuIGJlIHVzZWQgdG8gY3VzdG9taXNlIHRoZSBhcnJheSB3YWxr LiAgKi8KKyt0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsPgorK2NsYXNzIGZvcnRyYW5fYXJyYXlfd2Fs a2VyCisreworKyAgLyogRW5zdXJlIHRoYXQgSW1wbCBpcyBkZXJpdmVkIGZyb20gdGhlIHJlcXVp cmVkIGJhc2UgY2xhc3MuICBUaGlzIGp1c3QKKysgICAgIGVuc3VyZXMgdGhhdCBhbGwgb2YgdGhl IHJlcXVpcmVkIEFQSSBtZXRob2RzIGFyZSBhdmFpbGFibGUgYW5kIGhhdmUgYQorKyAgICAgc2Vu c2libGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4gICovCisrICBnZGJfc3RhdGljX2Fzc2VydCAo KHN0ZDo6aXNfYmFzZV9vZjxmb3J0cmFuX2FycmF5X3dhbGtlcl9iYXNlX2ltcGwsSW1wbD46OnZh bHVlKSk7CisrCisrcHVibGljOgorKyAgLyogQ3JlYXRlIGEgbmV3IGFycmF5IHdhbGtlci4gIFRZ UEUgaXMgdGhlIHR5cGUgb2YgdGhlIGFycmF5IGJlaW5nIHdhbGtlZAorKyAgICAgb3ZlciwgYW5k IEFERFJFU1MgaXMgdGhlIGJhc2UgYWRkcmVzcyBmb3IgdGhlIG9iamVjdCBvZiBUWVBFIGluCisr ICAgICBtZW1vcnkuICBBbGwgb3RoZXIgYXJndW1lbnRzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGNv bnN0cnVjdG9yIG9mIHRoZQorKyAgICAgdGVtcGxhdGUgcGFyYW1ldGVyIGNsYXNzIElNUEwuICAq LworKyAgdGVtcGxhdGUgPHR5cGVuYW1lIC4uLkFyZ3M+CisrICBmb3J0cmFuX2FycmF5X3dhbGtl ciAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyZXNzLAorKwkJCUFyZ3MuLi4gYXJn cykKKysgICAgOiBtX3R5cGUgKHR5cGUpLAorKyAgICAgIG1fYWRkcmVzcyAoYWRkcmVzcyksCisr ICAgICAgbV9pbXBsICh0eXBlLCBhZGRyZXNzLCBhcmdzLi4uKQorKyAgeworKyAgICBtX25kaW1l bnNpb25zID0gIGNhbGNfZjc3X2FycmF5X2RpbXMgKG1fdHlwZSk7CisrICB9CisrCisrICAvKiBX YWxrIHRoZSBhcnJheS4gICovCisrICB2b2lkCisrICB3YWxrICgpCisrICB7CisrICAgIHdhbGtf MSAoMSwgbV90eXBlLCAwLCBmYWxzZSk7CisrICB9CisrCisrcHJpdmF0ZToKKysgIC8qIFRoZSBj b3JlIG9mIHRoZSBhcnJheSB3YWxraW5nIGFsZ29yaXRobS4gIE5TUyBpcyB0aGUgY3VycmVudAor KyAgICAgZGltZW5zaW9uIG51bWJlciBiZWluZyBwcm9jZXNzZWQsIFRZUEUgaXMgdGhlIHR5cGUg b2YgdGhpcyBkaW1lbnNpb24sCisrICAgICBhbmQgT0ZGU0VUIGlzIHRoZSBvZmZzZXQgKGluIGJ5 dGVzKSBmb3IgdGhlIHN0YXJ0IG9mIHRoaXMgZGltZW5zaW9uLiAgKi8KKysgIHZvaWQKKysgIHdh bGtfMSAoaW50IG5zcywgc3RydWN0IHR5cGUgKnR5cGUsIGludCBvZmZzZXQsIGJvb2wgbGFzdF9w KQorKyAgeworKyAgICAvKiBFeHRyYWN0IHRoZSByYW5nZSwgYW5kIGdldCBsb3dlciBhbmQgdXBw ZXIgYm91bmRzLiAgKi8KKysgICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBjaGVja190eXBl ZGVmICh0eXBlKS0+aW5kZXhfdHlwZSAoKTsKKysgICAgTE9OR0VTVCBsb3dlcmJvdW5kLCB1cHBl cmJvdW5kOworKyAgICBpZiAoIWdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dl cmJvdW5kLCAmdXBwZXJib3VuZCkpCisrICAgICAgZXJyb3IgKCJmYWlsZWQgdG8gZ2V0IHJhbmdl IGJvdW5kcyIpOworKworKyAgICAvKiBDQUxDIGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBvZmZz ZXRzIGZvciBlYWNoIGVsZW1lbnQgaW4gdGhpcworKyAgICAgICBkaW1lbnNpb24uICAqLworKyAg ICBmb3J0cmFuX2FycmF5X29mZnNldF9jYWxjdWxhdG9yIGNhbGMgKHR5cGUpOworKworKyAgICBt X2ltcGwuc3RhcnRfZGltZW5zaW9uIChuc3MgPT0gbV9uZGltZW5zaW9ucyk7CisrCisrICAgIGlm IChuc3MgIT0gbV9uZGltZW5zaW9ucykKKysgICAgICB7CisrCS8qIEZvciBkaW1lbnNpb25zIG90 aGVyIHRoYW4gdGhlIGlubmVyIG1vc3QsIHdhbGsgZWFjaCBlbGVtZW50IGFuZAorKwkgICByZWN1 cnNlIHdoaWxlIHBlZWxpbmcgb2ZmIG9uZSBtb3JlIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuICAq LworKwlmb3IgKExPTkdFU1QgaSA9IGxvd2VyYm91bmQ7CisrCSAgICAgbV9pbXBsLmNvbnRpbnVl X3dhbGtpbmcgKGkgPCB1cHBlcmJvdW5kICsgMSk7CisrCSAgICAgaSsrKQorKwkgIHsKKysJICAg IC8qIFVzZSB0aGUgaW5kZXggYW5kIHRoZSBzdHJpZGUgdG8gd29yayBvdXQgYSBuZXcgb2Zmc2V0 LiAgKi8KKysJICAgIExPTkdFU1QgbmV3X29mZnNldCA9IG9mZnNldCArIGNhbGMuaW5kZXhfb2Zm c2V0IChpKTsKKysKKysJICAgIC8qIE5vdyBwcmludCB0aGUgbG93ZXIgZGltZW5zaW9uLiAgKi8K KysJICAgIHN0cnVjdCB0eXBlICpzdWJhcnJheV90eXBlCisrCSAgICAgID0gVFlQRV9UQVJHRVRf VFlQRSAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOworKwkgICAgd2Fsa18xIChuc3MgKyAxLCBzdWJh cnJheV90eXBlLCBuZXdfb2Zmc2V0LCAoaSA9PSB1cHBlcmJvdW5kKSk7CisrCSAgfQorKyAgICAg IH0KKysgICAgZWxzZQorKyAgICAgIHsKKysJLyogRm9yIHRoZSBpbm5lciBtb3N0IGRpbWVuc2lv biBvZiB0aGUgYXJyYXksIHByb2Nlc3MgZWFjaCBlbGVtZW50CisrCSAgIHdpdGhpbiB0aGlzIGRp bWVuc2lvbi4gICovCisrCWZvciAoTE9OR0VTVCBpID0gbG93ZXJib3VuZDsKKysJICAgICBtX2lt cGwuY29udGludWVfd2Fsa2luZyAoaSA8IHVwcGVyYm91bmQgKyAxKTsKKysJICAgICBpKyspCisr CSAgeworKwkgICAgTE9OR0VTVCBlbHRfb2ZmID0gb2Zmc2V0ICsgY2FsYy5pbmRleF9vZmZzZXQg KGkpOworKworKwkgICAgc3RydWN0IHR5cGUgKmVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSkpOworKwkgICAgaWYgKGlzX2R5bmFtaWNfdHlwZSAoZWx0X3R5 cGUpKQorKwkgICAgICB7CisrCQlDT1JFX0FERFIgZV9hZGRyZXNzID0gbV9hZGRyZXNzICsgZWx0 X29mZjsKKysJCWVsdF90eXBlID0gcmVzb2x2ZV9keW5hbWljX3R5cGUgKGVsdF90eXBlLCB7fSwg ZV9hZGRyZXNzKTsKKysJICAgICAgfQorKworKwkgICAgbV9pbXBsLnByb2Nlc3NfZWxlbWVudCAo ZWx0X3R5cGUsIGVsdF9vZmYsIChpID09IHVwcGVyYm91bmQpKTsKKysJICB9CisrICAgICAgfQor KworKyAgICBtX2ltcGwuZmluaXNoX2RpbWVuc2lvbiAobnNzID09IG1fbmRpbWVuc2lvbnMsIGxh c3RfcCB8fCBuc3MgPT0gMSk7CisrICB9CisrCisrICAvKiBUaGUgYXJyYXkgdHlwZSBiZWluZyBw cm9jZXNzZWQuICAqLworKyAgc3RydWN0IHR5cGUgKm1fdHlwZTsKKysKKysgIC8qIFRoZSBhZGRy ZXNzIGluIHRhcmdldCBtZW1vcnkgZm9yIHRoZSBvYmplY3Qgb2YgTV9UWVBFIGJlaW5nCisrICAg ICBwcm9jZXNzZWQuICBUaGlzIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIHJlc29sdmUgZHluYW1p YyB0eXBlcy4gICovCisrICBDT1JFX0FERFIgbV9hZGRyZXNzOworKworKyAgLyogQW4gaW5zdGFu Y2Ugb2YgdGhlIHRlbXBsYXRlIHNwZWNpYWxpc2F0aW9uIGNsYXNzLiAgKi8KKysgIEltcGwgbV9p bXBsOworKworKyAgLyogVGhlIHRvdGFsIG51bWJlciBvZiBkaW1lbnNpb25zIGluIE1fVFlQRS4g ICovCisrICBpbnQgbV9uZGltZW5zaW9uczsKKyt9OworKworKyNlbmRpZiAvKiBGX0FSUkFZX1dB TEtFUl9IICovCitkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCistLS0g YS9nZGIvZi1sYW5nLmMKKysrKyBiL2dkYi9mLWxhbmcuYworQEAgLTM2LDkgKzM2LDM2IEBACisg I2luY2x1ZGUgImMtbGFuZy5oIgorICNpbmNsdWRlICJ0YXJnZXQtZmxvYXQuaCIKKyAjaW5jbHVk ZSAiZ2RiYXJjaC5oIgorKyNpbmNsdWRlICJnZGJjbWQuaCIKKysjaW5jbHVkZSAiZi1hcnJheS13 YWxrZXIuaCIKKyAKKyAjaW5jbHVkZSA8bWF0aC5oPgorIAorKy8qIFdoZXRoZXIgR0RCIHNob3Vs ZCByZXBhY2sgYXJyYXkgc2xpY2VzIGNyZWF0ZWQgYnkgdGhlIHVzZXIuICAqLworK3N0YXRpYyBi b29sIHJlcGFja19hcnJheV9zbGljZXMgPSBmYWxzZTsKKysKKysvKiBJbXBsZW1lbnQgJ3Nob3cg Zm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzJy4gICovCisrc3RhdGljIHZvaWQKKytzaG93X3Jl cGFja19hcnJheV9zbGljZXMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisr CQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisrewor KyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiUmVwYWNraW5nIG9mIEZvcnRyYW4gYXJyYXkg c2xpY2VzIGlzICVzLlxuIiksCisrCQkgICAgdmFsdWUpOworK30KKysKKysvKiBEZWJ1Z2dpbmcg b2YgRm9ydHJhbidzIGFycmF5IHNsaWNpbmcuICAqLworK3N0YXRpYyBib29sIGZvcnRyYW5fYXJy YXlfc2xpY2luZ19kZWJ1ZyA9IGZhbHNlOworKworKy8qIEltcGxlbWVudCAnc2hvdyBkZWJ1ZyBm b3J0cmFuLWFycmF5LXNsaWNpbmcnLiAgKi8KKytzdGF0aWMgdm9pZAorK3Nob3dfZm9ydHJhbl9h cnJheV9zbGljaW5nX2RlYnVnIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAor KwkJCQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLAorKwkJCQkgIGNvbnN0IGNoYXIgKnZh bHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkRlYnVnZ2luZyBvZiBGb3J0 cmFuIGFycmF5IHNsaWNpbmcgaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7CisrfQorKworIC8q IExvY2FsIGZ1bmN0aW9ucyAqLworIAorIC8qIFJldHVybiB0aGUgZW5jb2RpbmcgdGhhdCBzaG91 bGQgYmUgdXNlZCBmb3IgdGhlIGNoYXJhY3RlciB0eXBlCitAQCAtMTE0LDU3ICsxNDEsNiBAQCBl bnVtIGZfcHJpbWl0aXZlX3R5cGVzIHsKKyAgIG5yX2ZfcHJpbWl0aXZlX3R5cGVzCisgfTsKKyAK Ky0vKiBDYWxsZWQgZnJvbSBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IHRvIHRha2UgYSBzbGljZSBv ZiBhbiBhcnJheSBvciBhCistICAgc3RyaW5nLiAgQVJSQVkgaXMgdGhlIGFycmF5IG9yIHN0cmlu ZyB0byBiZSBhY2Nlc3NlZC4gIEVYUCwgUE9TLCBhbmQKKy0gICBOT1NJREUgYXJlIGFzIGZvciBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQuICBSZXR1cm4gYSB2YWx1ZSB0aGF0IGlzIGEKKy0gICBz bGljZSBvZiB0aGUgYXJyYXkuICAqLworLQorLXN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorLXZhbHVl X2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKKy0JCSAgICBzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorLXsKKy0gIGludCBwYyA9 ICgqcG9zKSArIDE7CistICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgc3RyaWRlOwor LSAgc3RydWN0IHR5cGUgKnJhbmdlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkp LT5pbmRleF90eXBlICgpKTsKKy0gIGVudW0gcmFuZ2VfZmxhZyByYW5nZV9mbGFnCistICAgID0g KGVudW0gcmFuZ2VfZmxhZykgbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1twY10ubG9uZ2NvbnN0 KTsKKy0KKy0gICpwb3MgKz0gMzsKKy0KKy0gIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfTE9XX0JP VU5EX0RFRkFVTFQpCistICAgIGxvd19ib3VuZCA9IHJhbmdlLT5ib3VuZHMgKCktPmxvdy5jb25z dF92YWwgKCk7CistICBlbHNlCistICAgIGxvd19ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1 YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOworLQorLSAgaWYgKHJhbmdl X2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpCistICAgIGhpZ2hfYm91bmQgPSByYW5n ZS0+Ym91bmRzICgpLT5oaWdoLmNvbnN0X3ZhbCAoKTsKKy0gIGVsc2UKKy0gICAgaGlnaF9ib3Vu ZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5v c2lkZSkpOworLQorLSAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9IQVNfU1RSSURFKQorLSAgICBz dHJpZGUgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9z LCBub3NpZGUpKTsKKy0gIGVsc2UKKy0gICAgc3RyaWRlID0gMTsKKy0KKy0gIGlmIChzdHJpZGUg IT0gMSkKKy0gICAgZXJyb3IgKF8oIkZvcnRyYW4gYXJyYXkgc3RyaWRlcyBhcmUgbm90IGN1cnJl bnRseSBzdXBwb3J0ZWQiKSk7CistCistICByZXR1cm4gdmFsdWVfc2xpY2UgKGFycmF5LCBsb3df Ym91bmQsIGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKy19CistCistLyogSGVscGVyIGZv ciBza2lwcGluZyBhbGwgdGhlIGFyZ3VtZW50cyBpbiBhbiB1bmRldGVybWluZWQgYXJndW1lbnQg bGlzdC4KKy0gICBUaGlzIGZ1bmN0aW9uIHdhcyBkZXNpZ25lZCBmb3IgdXNlIGluIHRoZSBPUF9G NzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QKKy0gICBjYXNlIG9mIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCBhcyBtdWx0aXBsZSwgYnV0IG5vdCBhbGwsIGNvZGUgcGF0aHMKKy0gICByZXF1aXJlIGEg Z2VuZXJpYyBza2lwLiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLXNraXBfdW5kZXRlcm1pbmVkX2Fy Z2xpc3QgKGludCBuYXJncywgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCistCQkJ ICAgZW51bSBub3NpZGUgbm9zaWRlKQorLXsKKy0gIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7 ICsraSkKKy0gICAgZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsK Ky19CistCisgLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyBmb3IgYSBGb3J0cmFu IGFycmF5IG9yIHN0cmluZy4gICovCisgCisgaW50CitAQCAtMTg5LDYgKzE2NSwxNDUgQEAgY2Fs Y19mNzdfYXJyYXlfZGltcyAoc3RydWN0IHR5cGUgKmFycmF5X3R5cGUpCisgICByZXR1cm4gbmRp bWVuOworIH0KKyAKKysvKiBBIGNsYXNzIHVzZWQgYnkgRk9SVFJBTl9WQUxVRV9TVUJBUlJBWSB3 aGVuIHJlcGFja2luZyBGb3J0cmFuIGFycmF5CisrICAgc2xpY2VzLiAgVGhpcyBpcyBhIGJhc2Ug Y2xhc3MgZm9yIHR3byBhbHRlcm5hdGl2ZSByZXBhY2tpbmcgbWVjaGFuaXNtcywKKysgICBvbmUg Zm9yIHdoZW4gcmVwYWNraW5nIGZyb20gYSBsYXp5IHZhbHVlLCBhbmQgb25lIGZvciByZXBhY2tp bmcgZnJvbSBhCisrICAgbm9uLWxhenkgKGFscmVhZHkgbG9hZGVkKSB2YWx1ZS4gICovCisrY2xh c3MgZm9ydHJhbl9hcnJheV9yZXBhY2tlcl9iYXNlX2ltcGwKKysgIDogcHVibGljIGZvcnRyYW5f YXJyYXlfd2Fsa2VyX2Jhc2VfaW1wbAorK3sKKytwdWJsaWM6CisrICAvKiBDb25zdHJ1Y3Rvciwg REVTVCBpcyB0aGUgdmFsdWUgd2UgYXJlIHJlcGFja2luZyBpbnRvLiAgKi8KKysgIGZvcnRyYW5f YXJyYXlfcmVwYWNrZXJfYmFzZV9pbXBsIChzdHJ1Y3QgdmFsdWUgKmRlc3QpCisrICAgIDogbV9k ZXN0IChkZXN0KSwKKysgICAgICBtX2Rlc3Rfb2Zmc2V0ICgwKQorKyAgeyAvKiBOb3RoaW5nLiAg Ki8gfQorKworKyAgLyogV2hlbiB3ZSBzdGFydCBwcm9jZXNzaW5nIHRoZSBpbm5lciBtb3N0IGRp bWVuc2lvbiwgdGhpcyBpcyB3aGVyZSB3ZQorKyAgICAgd2lsbCBiZSBjcmVhdGluZyB2YWx1ZXMg Zm9yIGVhY2ggZWxlbWVudCBhcyB3ZSBsb2FkIHRoZW0gYW5kIHRoZW4gY29weQorKyAgICAgdGhl bSBpbnRvIHRoZSBNX0RFU1QgdmFsdWUuICBTZXQgYSB2YWx1ZSBtYXJrIHNvIHdlIGNhbiBmcmVl IHRoZXNlCisrICAgICB0ZW1wb3JhcnkgdmFsdWVzLiAgKi8KKysgIHZvaWQgc3RhcnRfZGltZW5z aW9uIChib29sIGlubmVyX3ApCisrICB7CisrICAgIGlmIChpbm5lcl9wKQorKyAgICAgIHsKKysJ Z2RiX2Fzc2VydCAobV9tYXJrID09IG51bGxwdHIpOworKwltX21hcmsgPSB2YWx1ZV9tYXJrICgp OworKyAgICAgIH0KKysgIH0KKysKKysgIC8qIFdoZW4gd2UgZmluaXNoIHByb2Nlc3NpbmcgdGhl IGlubmVyIG1vc3QgZGltZW5zaW9uIGZyZWUgYWxsIHRlbXBvcmFyeQorKyAgICAgdmFsdWUgdGhh dCB3ZXJlIGNyZWF0ZWQuICAqLworKyAgdm9pZCBmaW5pc2hfZGltZW5zaW9uIChib29sIGlubmVy X3AsIGJvb2wgbGFzdF9wKQorKyAgeworKyAgICBpZiAoaW5uZXJfcCkKKysgICAgICB7CisrCWdk Yl9hc3NlcnQgKG1fbWFyayAhPSBudWxscHRyKTsKKysJdmFsdWVfZnJlZV90b19tYXJrIChtX21h cmspOworKwltX21hcmsgPSBudWxscHRyOworKyAgICAgIH0KKysgIH0KKysKKytwcm90ZWN0ZWQ6 CisrICAvKiBDb3B5IHRoZSBjb250ZW50cyBvZiBhcnJheSBlbGVtZW50IEVMVCBpbnRvIE1fREVT VCBhdCB0aGUgbmV4dAorKyAgICAgYXZhaWxhYmxlIG9mZnNldC4gICovCisrICB2b2lkIGNvcHlf ZWxlbWVudF90b19kZXN0IChzdHJ1Y3QgdmFsdWUgKmVsdCkKKysgIHsKKysgICAgdmFsdWVfY29u dGVudHNfY29weSAobV9kZXN0LCBtX2Rlc3Rfb2Zmc2V0LCBlbHQsIDAsCisrCQkJIFRZUEVfTEVO R1RIICh2YWx1ZV90eXBlIChlbHQpKSk7CisrICAgIG1fZGVzdF9vZmZzZXQgKz0gVFlQRV9MRU5H VEggKHZhbHVlX3R5cGUgKGVsdCkpOworKyAgfQorKworKyAgLyogVGhlIHZhbHVlIGJlaW5nIHdy aXR0ZW4gdG8uICAqLworKyAgc3RydWN0IHZhbHVlICptX2Rlc3Q7CisrCisrICAvKiBUaGUgYnl0 ZSBvZmZzZXQgaW4gTV9ERVNUIGF0IHdoaWNoIHRoZSBuZXh0IGVsZW1lbnQgc2hvdWxkIGJlCisr ICAgICB3cml0dGVuLiAgKi8KKysgIExPTkdFU1QgbV9kZXN0X29mZnNldDsKKysKKysgIC8qIFNl dCB3aXRoIGEgY2FsbCB0byBWQUxVRV9NQVJLLCBhbmQgdGhlbiByZXNldCBhZnRlciBjYWxsaW5n CisrICAgICBWQUxVRV9GUkVFX1RPX01BUksuICAqLworKyAgc3RydWN0IHZhbHVlICptX21hcmsg PSBudWxscHRyOworK307CisrCisrLyogQSBjbGFzcyB1c2VkIGJ5IEZPUlRSQU5fVkFMVUVfU1VC QVJSQVkgd2hlbiByZXBhY2tpbmcgRm9ydHJhbiBhcnJheQorKyAgIHNsaWNlcy4gIFRoaXMgY2xh c3MgaXMgc3BlY2lhbGlzZWQgZm9yIHJlcGFja2luZyBhbiBhcnJheSBzbGljZSBmcm9tIGEKKysg ICBsYXp5IGFycmF5IHZhbHVlLCBhcyBzdWNoIGl0IGRvZXMgbm90IHJlcXVpcmUgdGhlIHBhcmVu dCBhcnJheSB2YWx1ZSB0bworKyAgIGJlIGxvYWRlZCBpbnRvIEdEQidzIG1lbW9yeTsgdGhlIHBh cmVudCB2YWx1ZSBjb3VsZCBiZSBodWdlLCB3aGlsZSB0aGUKKysgICBzbGljZSBjb3VsZCBiZSB0 aW55LiAgKi8KKytjbGFzcyBmb3J0cmFuX2xhenlfYXJyYXlfcmVwYWNrZXJfaW1wbAorKyAgOiBw dWJsaWMgZm9ydHJhbl9hcnJheV9yZXBhY2tlcl9iYXNlX2ltcGwKKyt7CisrcHVibGljOgorKyAg LyogQ29uc3RydWN0b3IuICBUWVBFIGlzIHRoZSB0eXBlIG9mIHRoZSBzbGljZSBiZWluZyBsb2Fk ZWQgZnJvbSB0aGUKKysgICAgIHBhcmVudCB2YWx1ZSwgc28gdGhpcyB0eXBlIHdpbGwgY29ycmVj dGx5IHJlZmxlY3QgdGhlIHN0cmlkZXMgcmVxdWlyZWQKKysgICAgIHRvIGZpbmQgYWxsIG9mIHRo ZSBlbGVtZW50cyBmcm9tIHRoZSBwYXJlbnQgdmFsdWUuICBBRERSRVNTIGlzIHRoZQorKyAgICAg YWRkcmVzcyBpbiB0YXJnZXQgbWVtb3J5IG9mIHZhbHVlIG1hdGNoaW5nIFRZUEUsIGFuZCBERVNU IGlzIHRoZSB2YWx1ZQorKyAgICAgd2UgYXJlIHJlcGFja2luZyBpbnRvLiAgKi8KKysgIGV4cGxp Y2l0IGZvcnRyYW5fbGF6eV9hcnJheV9yZXBhY2tlcl9pbXBsIChzdHJ1Y3QgdHlwZSAqdHlwZSwK KysJCQkJCSAgICAgQ09SRV9BRERSIGFkZHJlc3MsCisrCQkJCQkgICAgIHN0cnVjdCB2YWx1ZSAq ZGVzdCkKKysgICAgOiBmb3J0cmFuX2FycmF5X3JlcGFja2VyX2Jhc2VfaW1wbCAoZGVzdCksCisr ICAgICAgbV9hZGRyIChhZGRyZXNzKQorKyAgeyAvKiBOb3RoaW5nLiAgKi8gfQorKworKyAgLyog Q3JlYXRlIGEgbGF6eSB2YWx1ZSBpbiB0YXJnZXQgbWVtb3J5IHJlcHJlc2VudGluZyBhIHNpbmds ZSBlbGVtZW50LAorKyAgICAgdGhlbiBsb2FkIHRoZSBlbGVtZW50IGludG8gR0RCJ3MgbWVtb3J5 IGFuZCBjb3B5IHRoZSBjb250ZW50cyBpbnRvIHRoZQorKyAgICAgZGVzdGluYXRpb24gdmFsdWUu ICAqLworKyAgdm9pZCBwcm9jZXNzX2VsZW1lbnQgKHN0cnVjdCB0eXBlICplbHRfdHlwZSwgTE9O R0VTVCBlbHRfb2ZmLCBib29sIGxhc3RfcCkKKysgIHsKKysgICAgY29weV9lbGVtZW50X3RvX2Rl c3QgKHZhbHVlX2F0X2xhenkgKGVsdF90eXBlLCBtX2FkZHIgKyBlbHRfb2ZmKSk7CisrICB9Cisr CisrcHJpdmF0ZToKKysgIC8qIFRoZSBhZGRyZXNzIGluIHRhcmdldCBtZW1vcnkgd2hlcmUgdGhl IHBhcmVudCB2YWx1ZSBzdGFydHMuICAqLworKyAgQ09SRV9BRERSIG1fYWRkcjsKKyt9OworKwor Ky8qIEEgY2xhc3MgdXNlZCBieSBGT1JUUkFOX1ZBTFVFX1NVQkFSUkFZIHdoZW4gcmVwYWNraW5n IEZvcnRyYW4gYXJyYXkKKysgICBzbGljZXMuICBUaGlzIGNsYXNzIGlzIHNwZWNpYWxpc2VkIGZv ciByZXBhY2tpbmcgYW4gYXJyYXkgc2xpY2UgZnJvbSBhCisrICAgcHJldmlvdXNseSBsb2FkZWQg KG5vbi1sYXp5KSBhcnJheSB2YWx1ZSwgYXMgc3VjaCBpdCBmZXRjaGVzIHRoZQorKyAgIGVsZW1l bnQgdmFsdWVzIGZyb20gdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXJlbnQgdmFsdWUuICAqLworK2Ns YXNzIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfaW1wbAorKyAgOiBwdWJsaWMgZm9ydHJhbl9hcnJh eV9yZXBhY2tlcl9iYXNlX2ltcGwKKyt7CisrcHVibGljOgorKyAgLyogQ29uc3RydWN0b3IuICBU WVBFIGlzIHRoZSB0eXBlIGZvciB0aGUgYXJyYXkgc2xpY2Ugd2l0aGluIHRoZSBwYXJlbnQKKysg ICAgIHZhbHVlLCBhcyBzdWNoIGl0IGhhcyBzdHJpZGUgdmFsdWVzIGFzIHJlcXVpcmVkIHRvIGZp bmQgdGhlIGVsZW1lbnRzCisrICAgICB3aXRoaW4gdGhlIG9yaWdpbmFsIHBhcmVudCB2YWx1ZS4g IEFERFJFU1MgaXMgdGhlIGFkZHJlc3MgaW4gdGFyZ2V0CisrICAgICBtZW1vcnkgb2YgdGhlIHZh bHVlIG1hdGNoaW5nIFRZUEUuICBCQVNFX09GRlNFVCBpcyB0aGUgb2Zmc2V0IGZyb20KKysgICAg IHRoZSBzdGFydCBvZiBWQUwncyBjb250ZW50IGJ1ZmZlciB0byB0aGUgc3RhcnQgb2YgdGhlIG9i amVjdCBvZiBUWVBFLAorKyAgICAgVkFMIGlzIHRoZSBwYXJlbnQgb2JqZWN0IGZyb20gd2hpY2gg d2UgYXJlIGxvYWRpbmcgdGhlIHZhbHVlLCBhbmQKKysgICAgIERFU1QgaXMgdGhlIHZhbHVlIGlu dG8gd2hpY2ggd2UgYXJlIHJlcGFja2luZy4gICovCisrICBleHBsaWNpdCBmb3J0cmFuX2FycmF5 X3JlcGFja2VyX2ltcGwgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcmVzcywKKysJ CQkJCUxPTkdFU1QgYmFzZV9vZmZzZXQsCisrCQkJCQlzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0 IHZhbHVlICpkZXN0KQorKyAgICA6IGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfYmFzZV9pbXBsIChk ZXN0KSwKKysgICAgICBtX2Jhc2Vfb2Zmc2V0IChiYXNlX29mZnNldCksCisrICAgICAgbV92YWwg KHZhbCkKKysgIHsKKysgICAgZ2RiX2Fzc2VydCAoIXZhbHVlX2xhenkgKHZhbCkpOworKyAgfQor KworKyAgLyogRXh0cmFjdCBhbiBlbGVtZW50IG9mIEVMVF9UWVBFIGF0IG9mZnNldCAoTV9CQVNF X09GRlNFVCArIEVMVF9PRkYpCisrICAgICBmcm9tIHRoZSBjb250ZW50IGJ1ZmZlciBvZiBNX1ZB TCB0aGVuIGNvcHkgdGhpcyBleHRyYWN0ZWQgdmFsdWUgaW50bworKyAgICAgdGhlIHJlcGFja2Vk IGRlc3RpbmF0aW9uIHZhbHVlLiAgKi8KKysgIHZvaWQgcHJvY2Vzc19lbGVtZW50IChzdHJ1Y3Qg dHlwZSAqZWx0X3R5cGUsIExPTkdFU1QgZWx0X29mZiwgYm9vbCBsYXN0X3ApCisrICB7CisrICAg IHN0cnVjdCB2YWx1ZSAqZWx0CisrICAgICAgPSB2YWx1ZV9mcm9tX2NvbXBvbmVudCAobV92YWws IGVsdF90eXBlLCAoZWx0X29mZiArIG1fYmFzZV9vZmZzZXQpKTsKKysgICAgY29weV9lbGVtZW50 X3RvX2Rlc3QgKGVsdCk7CisrICB9CisrCisrcHJpdmF0ZToKKysgIC8qIFRoZSBvZmZzZXQgaW50 byB0aGUgY29udGVudCBidWZmZXIgb2YgTV9WQUwgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzbGljZQor KyAgICAgYmVpbmcgZXh0cmFjdGVkLiAgKi8KKysgIExPTkdFU1QgbV9iYXNlX29mZnNldDsKKysK KysgIC8qIFRoZSBwYXJlbnQgdmFsdWUgZnJvbSB3aGljaCB3ZSBhcmUgZXh0cmFjdGluZyBhIHNs aWNlLiAgKi8KKysgIHN0cnVjdCB2YWx1ZSAqbV92YWw7CisrfTsKKysKKyAvKiBDYWxsZWQgZnJv bSBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgdG8gcGVyZm9ybSBhcnJheSBpbmRleGluZywgYW5k CisgICAgc3ViLXJhbmdlIGV4dHJhY3Rpb24sIGZvciBGb3J0cmFuLiAgQXMgd2VsbCBhcyBhcnJh eXMgdGhpcyBmdW5jdGlvbgorICAgIGFsc28gaGFuZGxlcyBzdHJpbmdzIGFzIHRoZXkgY2FuIGJl IHRyZWF0ZWQgbGlrZSBhcnJheXMgb2YgY2hhcmFjdGVycy4KK0BAIC0yMDAsNTEgKzMxNSwzOTQg QEAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisgZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoc3RydWN0 IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKyAJCQlpbnQgKnBvcywgaW50 IG5hcmdzLCBlbnVtIG5vc2lkZSBub3NpZGUpCisgeworLSAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5v cGNvZGUgPT0gT1BfUkFOR0UpCistICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFycmF5 LCBleHAsIHBvcywgbm9zaWRlKTsKKy0KKy0gIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQorKyAg dHlwZSAqb3JpZ2luYWxfYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy cmF5KSk7CisrICBib29sIGlzX3N0cmluZ19wID0gb3JpZ2luYWxfYXJyYXlfdHlwZS0+Y29kZSAo KSA9PSBUWVBFX0NPREVfU1RSSU5HOworKworKyAgLyogUGVyZm9ybSBjaGVja3MgZm9yIEFSUkFZ IG5vdCBiZWluZyBhdmFpbGFibGUuICBUaGUgc29tZXdoYXQgb3Zlcmx5CisrICAgICBjb21wbGV4 IGxvZ2ljIGhlcmUgaXMganVzdCB0byBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0 aGUKKysgICAgIGVycm9ycyB0aGF0IHdlIHVzZWQgdG8gZ2V0IGJlZm9yZSBGT1JUUkFOX1ZBTFVF X1NVQkFSUkFZIHdhcworKyAgICAgcmV3cml0dGVuLiAgTWF5YmUgYSBmdXR1cmUgdGFzayB3b3Vs ZCBzdHJlYW1saW5lIHRoZSBlcnJvciBtZXNzYWdlcyB3ZQorKyAgICAgZ2V0IGhlcmUsIGFuZCB1 cGRhdGUgYWxsIHRoZSBleHBlY3RlZCB0ZXN0IHJlc3VsdHMuICAqLworKyAgaWYgKGV4cC0+ZWx0 c1sqcG9zXS5vcGNvZGUgIT0gT1BfUkFOR0UpCisgICAgIHsKKy0gICAgICBza2lwX3VuZGV0ZXJt aW5lZF9hcmdsaXN0IChuYXJncywgZXhwLCBwb3MsIG5vc2lkZSk7CistICAgICAgLyogUmV0dXJu IHRoZSBkdW1teSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLworLSAgICAgIHJldHVy biBhcnJheTsKKysgICAgICBpZiAodHlwZV9ub3RfYXNzb2NpYXRlZCAob3JpZ2luYWxfYXJyYXlf dHlwZSkpCisrCWVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50ICh2ZWN0b3Igbm90IGFz c29jaWF0ZWQpIikpOworKyAgICAgIGVsc2UgaWYgKHR5cGVfbm90X2FsbG9jYXRlZCAob3JpZ2lu YWxfYXJyYXlfdHlwZSkpCisrCWVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50ICh2ZWN0 b3Igbm90IGFsbG9jYXRlZCkiKSk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIGlm ICh0eXBlX25vdF9hc3NvY2lhdGVkIChvcmlnaW5hbF9hcnJheV90eXBlKSkKKysJZXJyb3IgKF8o ImFycmF5IG5vdCBhc3NvY2lhdGVkIikpOworKyAgICAgIGVsc2UgaWYgKHR5cGVfbm90X2FsbG9j YXRlZCAob3JpZ2luYWxfYXJyYXlfdHlwZSkpCisrCWVycm9yIChfKCJhcnJheSBub3QgYWxsb2Nh dGVkIikpOworICAgICB9CisgCistICBMT05HRVNUIHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJB Tl9ESU1TXTsKKy0gIGludCBuZGltZW5zaW9ucyA9IDE7CistICBzdHJ1Y3QgdHlwZSAqdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisrICAvKiBGaXJzdCBjaGVjayB0 aGF0IHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyBpbiB0aGUgdHlwZSB3ZSBhcmUgc2xpY2luZwor KyAgICAgbWF0Y2hlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSB3ZXJlIHBhc3NlZC4gICov CisrICBpbnQgbmRpbWVuc2lvbnMgPSBjYWxjX2Y3N19hcnJheV9kaW1zIChvcmlnaW5hbF9hcnJh eV90eXBlKTsKKysgIGlmIChuYXJncyAhPSBuZGltZW5zaW9ucykKKysgICAgZXJyb3IgKF8oIldy b25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOworIAorLSAgaWYgKG5hcmdzID4gTUFYX0ZPUlRS QU5fRElNUykKKy0gICAgZXJyb3IgKF8oIlRvbyBtYW55IHN1YnNjcmlwdHMgZm9yIEY3NyAoJWQg TWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsKKysgIC8qIFRoaXMgd2lsbCBiZSBpbml0aWFsaXNl ZCBiZWxvdyB3aXRoIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cyBoZWxkIGluCisrICAgICBBUlJB WS4gICovCisrICBzdHJ1Y3QgdHlwZSAqaW5uZXJfZWxlbWVudF90eXBlOworIAorLSAgbmRpbWVu c2lvbnMgPSBjYWxjX2Y3N19hcnJheV9kaW1zICh0eXBlKTsKKysgIC8qIEV4dHJhY3QgdGhlIHR5 cGVzIG9mIGVhY2ggYXJyYXkgZGltZW5zaW9uIGZyb20gdGhlIG9yaWdpbmFsIGFycmF5CisrICAg ICB0eXBlLiAgV2UgbmVlZCB0aGVzZSBhdmFpbGFibGUgc28gd2UgY2FuIGZpbGwgaW4gdGhlIGRl ZmF1bHQgdXBwZXIgYW5kCisrICAgICBsb3dlciBib3VuZHMgaWYgdGhlIHVzZXIgcmVxdWVzdGVk IHNsaWNlIGRvZXNuJ3QgcHJvdmlkZSB0aGF0CisrICAgICBpbmZvcm1hdGlvbi4gIEFkZGl0aW9u YWxseSB1bnBhY2tpbmcgdGhlIGRpbWVuc2lvbnMgbGlrZSB0aGlzIGdpdmVzIHVzCisrICAgICB0 aGUgaW5uZXIgZWxlbWVudCB0eXBlLiAgKi8KKysgIHN0ZDo6dmVjdG9yPHN0cnVjdCB0eXBlICo+ IGRpbV90eXBlczsKKysgIHsKKysgICAgZGltX3R5cGVzLnJlc2VydmUgKG5kaW1lbnNpb25zKTsK KysgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBvcmlnaW5hbF9hcnJheV90eXBlOworKyAgICBmb3Ig KGludCBpID0gMDsgaSA8IG5kaW1lbnNpb25zOyArK2kpCisrICAgICAgeworKwlkaW1fdHlwZXMu cHVzaF9iYWNrICh0eXBlKTsKKysJdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOworKyAg ICAgIH0KKysgICAgLyogVFlQRSBpcyBub3cgdGhlIGlubmVyIGVsZW1lbnQgdHlwZSBvZiB0aGUg YXJyYXksIHdlIHN0YXJ0IHRoZSBuZXcKKysgICAgICAgYXJyYXkgc2xpY2Ugb2ZmIGFzIHRoaXMg dHlwZSwgdGhlbiBhcyB3ZSBwcm9jZXNzIHRoZSByZXF1ZXN0ZWQgc2xpY2UKKysgICAgICAgKGZy b20gdGhlIHVzZXIpIHdlIHdyYXAgbmV3IHR5cGVzIGFyb3VuZCB0aGlzIHRvIGJ1aWxkIHVwIHRo ZSBmaW5hbAorKyAgICAgICBzbGljZSB0eXBlLiAgKi8KKysgICAgaW5uZXJfZWxlbWVudF90eXBl ID0gdHlwZTsKKysgIH0KKyAKKy0gIGlmIChuYXJncyAhPSBuZGltZW5zaW9ucykKKy0gICAgZXJy b3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOworKyAgLyogQXMgd2UgYW5hbHlz ZSB0aGUgbmV3IHNsaWNlIHR5cGUgd2UgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBkYXRhCisr ICAgICBiZWluZyByZWZlcmVuY2VkIGlzIGNvbnRpZ3VvdXMuICBEbyBkZWNpZGUgdGhpcyB3ZSBt dXN0IHRyYWNrIHRoZSBzaXplCisrICAgICBvZiBhbiBlbGVtZW50IGF0IGVhY2ggZGltZW5zaW9u IG9mIHRoZSBuZXcgc2xpY2UgYXJyYXkuICBJbml0aWFsbHkgdGhlCisrICAgICBlbGVtZW50cyBv ZiB0aGUgaW5uZXIgbW9zdCBkaW1lbnNpb24gb2YgdGhlIGFycmF5IGFyZSB0aGUgc2FtZSBpbm5l cgorKyAgICAgbW9zdCBlbGVtZW50cyBhcyB0aGUgb3JpZ2luYWwgQVJSQVkuICAqLworKyAgTE9O R0VTVCBzbGljZV9lbGVtZW50X3NpemUgPSBUWVBFX0xFTkdUSCAoaW5uZXJfZWxlbWVudF90eXBl KTsKKysKKysgIC8qIFN0YXJ0IG9mZiBhc3N1bWluZyBhbGwgZGF0YSBpcyBjb250aWd1b3VzLCB0 aGlzIHdpbGwgYmUgc2V0IHRvIGZhbHNlCisrICAgICBpZiBhY2Nlc3MgdG8gYW55IGRpbWVuc2lv biByZXN1bHRzIGluIG5vbi1jb250aWd1b3VzIGRhdGEuICAqLworKyAgYm9vbCBpc19hbGxfY29u dGlndW91cyA9IHRydWU7CisrCisrICAvKiBUaGUgVE9UQUxfT0ZGU0VUIGlzIHRoZSBkaXN0YW5j ZSBpbiBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKysgICAgIG9yaWdpbmFsIEFSUkFZIHRv IHRoZSBzdGFydCBvZiB0aGUgbmV3IHNsaWNlLiAgVGhpcyBpcyBjYWxjdWxhdGVkIGFzCisrICAg ICB3ZSBwcm9jZXNzIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB1c2VyLiAgKi8KKysgIExPTkdF U1QgdG90YWxfb2Zmc2V0ID0gMDsKKysKKysgIC8qIEEgc3RydWN0dXJlIHJlcHJlc2VudGluZyBp bmZvcm1hdGlvbiBhYm91dCBlYWNoIGRpbWVuc2lvbiBvZiB0aGUKKysgICAgIHJlc3VsdGluZyBz bGljZS4gICovCisrICBzdHJ1Y3Qgc2xpY2VfZGltCisrICB7CisrICAgIC8qIENvbnN0cnVjdG9y LiAgKi8KKysgICAgc2xpY2VfZGltIChMT05HRVNUIGwsIExPTkdFU1QgaCwgTE9OR0VTVCBzLCBz dHJ1Y3QgdHlwZSAqaWR4KQorKyAgICAgIDogbG93IChsKSwKKysJaGlnaCAoaCksCisrCXN0cmlk ZSAocyksCisrCWluZGV4IChpZHgpCisrICAgIHsgLyogTm90aGluZy4gICovIH0KKysKKysgICAg LyogVGhlIGxvdyBib3VuZCBmb3IgdGhpcyBkaW1lbnNpb24gb2YgdGhlIHNsaWNlLiAgKi8KKysg ICAgTE9OR0VTVCBsb3c7CisrCisrICAgIC8qIFRoZSBoaWdoIGJvdW5kIGZvciB0aGlzIGRpbWVu c2lvbiBvZiB0aGUgc2xpY2UuICAqLworKyAgICBMT05HRVNUIGhpZ2g7CisrCisrICAgIC8qIFRo ZSBieXRlIHN0cmlkZSBmb3IgdGhpcyBkaW1lbnNpb24gb2YgdGhlIHNsaWNlLiAgKi8KKysgICAg TE9OR0VTVCBzdHJpZGU7CisrCisrICAgIHN0cnVjdCB0eXBlICppbmRleDsKKysgIH07CisrCisr ICAvKiBUaGUgZGltZW5zaW9ucyBvZiB0aGUgcmVzdWx0aW5nIHNsaWNlLiAgKi8KKysgIHN0ZDo6 dmVjdG9yPHNsaWNlX2RpbT4gc2xpY2VfZGltczsKKysKKysgIC8qIFByb2Nlc3MgdGhlIGluY29t aW5nIGFyZ3VtZW50cy4gICBUaGVzZSBhcmd1bWVudHMgYXJlIGluIHRoZSByZXZlcnNlCisrICAg ICBvcmRlciB0byB0aGUgYXJyYXkgZGltZW5zaW9ucywgdGhhdCBpcyB0aGUgZmlyc3QgYXJndW1l bnQgcmVmZXJzIHRvCisrICAgICB0aGUgbGFzdCBhcnJheSBkaW1lbnNpb24uICAqLworKyAgaWYg KGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1ZykKKysgICAgZGVidWdfcHJpbnRmICgiUHJvY2Vz c2luZyBhcnJheSBhY2Nlc3M6XG4iKTsKKysgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7ICsr aSkKKysgICAgeworKyAgICAgIC8qIEZvciBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkgdGhl IHVzZXIgd2lsbCBoYXZlIGVpdGhlciBwcm92aWRlZAorKwkgYSByYW5nZWQgYWNjZXNzIHdpdGgg b3B0aW9uYWwgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kLCBhbmQKKysJIHN0cmlkZSwgb3IgdGhl IHVzZXIgd2lsbCBoYXZlIHN1cHBsaWVkIGEgc2luZ2xlIGluZGV4LiAgKi8KKysgICAgICBzdHJ1 Y3QgdHlwZSAqZGltX3R5cGUgPSBkaW1fdHlwZXNbbmRpbWVuc2lvbnMgLSAoaSArIDEpXTsKKysg ICAgICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5HRSkKKysJeworKwkgIGlu dCBwYyA9ICgqcG9zKSArIDE7CisrCSAgZW51bSByYW5nZV9mbGFnIHJhbmdlX2ZsYWcgPSAoZW51 bSByYW5nZV9mbGFnKSBleHAtPmVsdHNbcGNdLmxvbmdjb25zdDsKKysJICAqcG9zICs9IDM7Cisr CisrCSAgTE9OR0VTVCBsb3csIGhpZ2gsIHN0cmlkZTsKKysJICBsb3cgPSBoaWdoID0gc3RyaWRl ID0gMDsKKysKKysJICBpZiAoKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkg PT0gMCkKKysJICAgIGxvdyA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0 ciwgZXhwLCBwb3MsIG5vc2lkZSkpOworKwkgIGVsc2UKKysJICAgIGxvdyA9IGY3N19nZXRfbG93 ZXJib3VuZCAoZGltX3R5cGUpOworKwkgIGlmICgocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9V TkRfREVGQVVMVCkgPT0gMCkKKysJICAgIGhpZ2ggPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9z dWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKKysJICBlbHNlCisrCSAgICBoaWdo ID0gZjc3X2dldF91cHBlcmJvdW5kIChkaW1fdHlwZSk7CisrCSAgaWYgKChyYW5nZV9mbGFnICYg UkFOR0VfSEFTX1NUUklERSkgPT0gUkFOR0VfSEFTX1NUUklERSkKKysJICAgIHN0cmlkZSA9IHZh bHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkp OworKwkgIGVsc2UKKysJICAgIHN0cmlkZSA9IDE7CisrCisrCSAgaWYgKHN0cmlkZSA9PSAwKQor KwkgICAgZXJyb3IgKF8oInN0cmlkZSBtdXN0IG5vdCBiZSAwIikpOworKworKwkgIC8qIEdldCBp bmZvcm1hdGlvbiBhYm91dCB0aGlzIGRpbWVuc2lvbiBpbiB0aGUgb3JpZ2luYWwgQVJSQVkuICAq LworKwkgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGRpbV90 eXBlKTsKKysJICBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSA9IGRpbV90eXBlLT5pbmRleF90eXBl ICgpOworKwkgIExPTkdFU1QgbGIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKGRpbV90eXBlKTsKKysJ ICBMT05HRVNUIHViID0gZjc3X2dldF91cHBlcmJvdW5kIChkaW1fdHlwZSk7CisrCSAgTE9OR0VT VCBzZCA9IGluZGV4X3R5cGUtPmJpdF9zdHJpZGUgKCk7CisrCSAgaWYgKHNkID09IDApCisrCSAg ICBzZCA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSkgKiA4OworKworKwkgIGlmIChmb3J0cmFu X2FycmF5X3NsaWNpbmdfZGVidWcpCisrCSAgICB7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwt PiBSYW5nZSBhY2Nlc3NcbiIpOworKwkgICAgICBzdGQ6OnN0cmluZyBzdHIgPSB0eXBlX3RvX3N0 cmluZyAoZGltX3R5cGUpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfC0+IFR5cGU6ICVz XG4iLCBzdHIuY19zdHIgKCkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfC0+IEFycmF5 OlxuIik7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IExvdyBib3VuZDogJWxk XG4iLCBsYik7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEhpZ2ggYm91bmQ6 ICVsZFxuIiwgdWIpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBCaXQgc3Ry aWRlOiAlbGRcbiIsIHNkKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQnl0 ZSBzdHJpZGU6ICVsZFxuIiwgc2QgLyA4KTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwg ICB8LT4gVHlwZSBzaXplOiAlbGRcbiIsCisrCQkJICAgIFRZUEVfTEVOR1RIIChkaW1fdHlwZSkp OworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgICctPiBUYXJnZXQgdHlwZSBzaXplOiAl bGRcbiIsCisrCQkJICAgIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSkpOworKwkgICAgICBkZWJ1 Z19wcmludGYgKCJ8ICAgfC0+IEFjY2Vzc2luZzpcbiIpOworKwkgICAgICBkZWJ1Z19wcmludGYg KCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVsZFxuIiwKKysJCQkgICAgbG93KTsKKysJICAgICAg ZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gSGlnaCBib3VuZDogJWxkXG4iLAorKwkJCSAgICBo aWdoKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICAnLT4gRWxlbWVudCBzdHJpZGU6 ICVsZFxuIiwKKysJCQkgICAgc3RyaWRlKTsKKysJICAgIH0KKysKKysJICAvKiBDaGVjayB0aGUg dXNlciBoYXNuJ3QgYXNrZWQgZm9yIHNvbWV0aGluZyBpbnZhbGlkLiAgKi8KKysJICBpZiAoaGln aCA+IHViIHx8IGxvdyA8IGxiKQorKwkgICAgZXJyb3IgKF8oImFycmF5IHN1YnNjcmlwdCBvdXQg b2YgYm91bmRzIikpOworKworKwkgIC8qIENhbGN1bGF0ZSB3aGF0IHRoaXMgZGltZW5zaW9uIG9m IHRoZSBuZXcgc2xpY2UgYXJyYXkgd2lsbCBsb29rCisrCSAgICAgbGlrZS4gIE9GRlNFVCBpcyB0 aGUgYnl0ZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisrCSAgICAgcHJldmlvdXMgKG1v cmUgb3V0ZXIpIGRpbWVuc2lvbiB0byB0aGUgc3RhcnQgb2YgdGhpcworKwkgICAgIGRpbWVuc2lv bi4gIEVfQ09VTlQgaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGlzCisrCSAgICAgZGlt ZW5zaW9uLiAgUkVNQUlOREVSIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcmVtYWluaW5nCisr CSAgICAgYmV0d2VlbiB0aGUgbGFzdCBpbmNsdWRlZCBlbGVtZW50IGFuZCB0aGUgdXBwZXIgYm91 bmQuICBGb3IKKysJICAgICBleGFtcGxlIGFuIGFjY2VzcyAnMTo2OjInIHdpbGwgaW5jbHVkZSBl bGVtZW50cyAxLCAzLCA1IGFuZAorKwkgICAgIGhhdmUgYSByZW1haW5kZXIgb2YgMSAoZWxlbWVu dCAjNikuICAqLworKwkgIExPTkdFU1QgbG93ZXN0ID0gc3RkOjptaW4gKGxvdywgaGlnaCk7Cisr CSAgTE9OR0VTVCBvZmZzZXQgPSAoc2QgLyA4KSAqIChsb3dlc3QgLSBsYik7CisrCSAgTE9OR0VT VCBlX2NvdW50ID0gc3RkOjphYnMgKGhpZ2ggLSBsb3cpICsgMTsKKysJICBlX2NvdW50ID0gKGVf Y291bnQgKyAoc3RkOjphYnMgKHN0cmlkZSkgLSAxKSkgLyBzdGQ6OmFicyAoc3RyaWRlKTsKKysJ ICBMT05HRVNUIG5ld19sb3cgPSAxOworKwkgIExPTkdFU1QgbmV3X2hpZ2ggPSBuZXdfbG93ICsg ZV9jb3VudCAtIDE7CisrCSAgTE9OR0VTVCBuZXdfc3RyaWRlID0gKHNkICogc3RyaWRlKSAvIDg7 CisrCSAgTE9OR0VTVCBsYXN0X2VsZW0gPSBsb3cgKyAoKGVfY291bnQgLSAxKSAqIHN0cmlkZSk7 CisrCSAgTE9OR0VTVCByZW1haW5kZXIgPSBoaWdoIC0gbGFzdF9lbGVtOworKwkgIGlmIChsb3cg PiBoaWdoKQorKwkgICAgeworKwkgICAgICBvZmZzZXQgKz0gc3RkOjphYnMgKHJlbWFpbmRlcikg KiBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpOworKwkgICAgICBpZiAoc3RyaWRlID4gMCkKKysJ CWVycm9yIChfKCJpbmNvcnJlY3Qgc3RyaWRlIGFuZCBib3VuZGFyeSBjb21iaW5hdGlvbiIpKTsK KysJICAgIH0KKysJICBlbHNlIGlmIChzdHJpZGUgPCAwKQorKwkgICAgZXJyb3IgKF8oImluY29y cmVjdCBzdHJpZGUgYW5kIGJvdW5kYXJ5IGNvbWJpbmF0aW9uIikpOworKworKwkgIC8qIElzIHRo ZSBkYXRhIHdpdGhpbiB0aGlzIGRpbWVuc2lvbiBjb250aWd1b3VzPyAgSXQgaXMgaWYgdGhlCisr CSAgICAgbmV3bHkgY29tcHV0ZWQgc3RyaWRlIGlzIHRoZSBzYW1lIHNpemUgYXMgYSBzaW5nbGUg ZWxlbWVudCBvZgorKwkgICAgIHRoaXMgZGltZW5zaW9uLiAgKi8KKysJICBib29sIGlzX2RpbV9j b250aWd1b3VzID0gKG5ld19zdHJpZGUgPT0gc2xpY2VfZWxlbWVudF9zaXplKTsKKysJICBpc19h bGxfY29udGlndW91cyAmPSBpc19kaW1fY29udGlndW91czsKKysKKysJICBpZiAoZm9ydHJhbl9h cnJheV9zbGljaW5nX2RlYnVnKQorKwkgICAgeworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAg Jy0+IFJlc3VsdHM6XG4iKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gT2Zm c2V0ID0gJWxkXG4iLCBvZmZzZXQpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwt PiBFbGVtZW50cyA9ICVsZFxuIiwgZV9jb3VudCk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwg ICAgICAgfC0+IExvdyBib3VuZCA9ICVsZFxuIiwgbmV3X2xvdyk7CisrCSAgICAgIGRlYnVnX3By aW50ZiAoInwgICAgICAgfC0+IEhpZ2ggYm91bmQgPSAlbGRcbiIsIG5ld19oaWdoKTsKKysJICAg ICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gQnl0ZSBzdHJpZGUgPSAlbGRcbiIsIG5ld19z dHJpZGUpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBMYXN0IGVsZW1lbnQg PSAlbGRcbiIsIGxhc3RfZWxlbSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+ IFJlbWFpbmRlciA9ICVsZFxuIiwgcmVtYWluZGVyKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgi fCAgICAgICAnLT4gQ29udGlndW91cyA9ICVzXG4iLAorKwkJCSAgICAoaXNfZGltX2NvbnRpZ3Vv dXMgPyAiWWVzIiA6ICJObyIpKTsKKysJICAgIH0KKysKKysJICAvKiBGaWd1cmUgb3V0IGhvdyBi aWcgKGluIGJ5dGVzKSBhbiBlbGVtZW50IG9mIHRoaXMgZGltZW5zaW9uIG9mCisrCSAgICAgdGhl IG5ldyBhcnJheSBzbGljZSB3aWxsIGJlLiAgKi8KKysJICBzbGljZV9lbGVtZW50X3NpemUgPSBz dGQ6OmFicyAobmV3X3N0cmlkZSAqIGVfY291bnQpOworKworKwkgIHNsaWNlX2RpbXMuZW1wbGFj ZV9iYWNrIChuZXdfbG93LCBuZXdfaGlnaCwgbmV3X3N0cmlkZSwKKysJCQkJICAgaW5kZXhfdHlw ZSk7CisrCisrCSAgLyogVXBkYXRlIHRoZSB0b3RhbCBvZmZzZXQuICAqLworKwkgIHRvdGFsX29m ZnNldCArPSBvZmZzZXQ7CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICAvKiBUaGVyZSBpcyBh IHNpbmdsZSBpbmRleCBmb3IgdGhpcyBkaW1lbnNpb24uICAqLworKwkgIExPTkdFU1QgaW5kZXgK KysJICAgID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4 cCwgcG9zLCBub3NpZGUpKTsKKysKKysJICAvKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBk aW1lbnNpb24gaW4gdGhlIG9yaWdpbmFsIEFSUkFZLiAgKi8KKysJICBzdHJ1Y3QgdHlwZSAqdGFy Z2V0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChkaW1fdHlwZSk7CisrCSAgc3RydWN0IHR5cGUg KmluZGV4X3R5cGUgPSBkaW1fdHlwZS0+aW5kZXhfdHlwZSAoKTsKKysJICBMT05HRVNUIGxiID0g Zjc3X2dldF9sb3dlcmJvdW5kIChkaW1fdHlwZSk7CisrCSAgTE9OR0VTVCB1YiA9IGY3N19nZXRf dXBwZXJib3VuZCAoZGltX3R5cGUpOworKwkgIExPTkdFU1Qgc2QgPSBpbmRleF90eXBlLT5iaXRf c3RyaWRlICgpIC8gODsKKysJICBpZiAoc2QgPT0gMCkKKysJICAgIHNkID0gVFlQRV9MRU5HVEgg KHRhcmdldF90eXBlKTsKKysKKysJICBpZiAoZm9ydHJhbl9hcnJheV9zbGljaW5nX2RlYnVnKQor KwkgICAgeworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8LT4gSW5kZXggYWNjZXNzXG4iKTsKKysJ ICAgICAgc3RkOjpzdHJpbmcgc3RyID0gdHlwZV90b19zdHJpbmcgKGRpbV90eXBlKTsKKysJICAg ICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBUeXBlOiAlc1xuIiwgc3RyLmNfc3RyICgpKTsKKysJ ICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBBcnJheTpcbiIpOworKwkgICAgICBkZWJ1Z19w cmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVsZFxuIiwgbGIpOworKwkgICAgICBkZWJ1 Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBIaWdoIGJvdW5kOiAlbGRcbiIsIHViKTsKKysJICAgICAg ZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQnl0ZSBzdHJpZGU6ICVsZFxuIiwgc2QpOworKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBUeXBlIHNpemU6ICVsZFxuIiwgVFlQRV9M RU5HVEggKGRpbV90eXBlKSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgJy0+IFRh cmdldCB0eXBlIHNpemU6ICVsZFxuIiwKKysJCQkgICAgVFlQRV9MRU5HVEggKHRhcmdldF90eXBl KSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAnLT4gQWNjZXNzaW5nOlxuIik7CisrCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgJy0+IEluZGV4OiAlbGRcbiIsIGluZGV4KTsKKysJ ICAgIH0KKysKKysJICAvKiBJZiB0aGUgYXJyYXkgaGFzIGFjdHVhbCBjb250ZW50IHRoZW4gY2hl Y2sgdGhlIGluZGV4IGlzIGluCisrCSAgICAgYm91bmRzLiAgQW4gYXJyYXkgd2l0aG91dCBjb250 ZW50IChhbiB1bmJvdW5kIGFycmF5KSBkb2Vzbid0CisrCSAgICAgaGF2ZSBhIGtub3duIHVwcGVy IGJvdW5kLCBzbyBkb24ndCBlcnJvciBjaGVjayBpbiB0aGF0CisrCSAgICAgc2l0dWF0aW9uLiAg Ki8KKysJICBpZiAoaW5kZXggPCBsYgorKwkgICAgICB8fCAoZGltX3R5cGUtPmluZGV4X3R5cGUg KCktPmJvdW5kcyAoKS0+aGlnaC5raW5kICgpICE9IFBST1BfVU5ERUZJTkVECisrCQkgICYmIGlu ZGV4ID4gdWIpCisrCSAgICAgIHx8IChWQUxVRV9MVkFMIChhcnJheSkgIT0gbHZhbF9tZW1vcnkK KysJCSAgJiYgZGltX3R5cGUtPmluZGV4X3R5cGUgKCktPmJvdW5kcyAoKS0+aGlnaC5raW5kICgp ID09IFBST1BfVU5ERUZJTkVEKSkKKysJICAgIHsKKysJICAgICAgaWYgKHR5cGVfbm90X2Fzc29j aWF0ZWQgKGRpbV90eXBlKSkKKysJCWVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50ICh2 ZWN0b3Igbm90IGFzc29jaWF0ZWQpIikpOworKwkgICAgICBlbHNlIGlmICh0eXBlX25vdF9hbGxv Y2F0ZWQgKGRpbV90eXBlKSkKKysJCWVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50ICh2 ZWN0b3Igbm90IGFsbG9jYXRlZCkiKSk7CisrCSAgICAgIGVsc2UKKysJCWVycm9yIChfKCJubyBz dWNoIHZlY3RvciBlbGVtZW50IikpOworKwkgICAgfQorIAorLSAgZ2RiX2Fzc2VydCAobmFyZ3Mg PiAwKTsKKysJICAvKiBDYWxjdWxhdGUgdXNpbmcgdGhlIHR5cGUgc3RyaWRlLCBub3QgdGhlIHRh cmdldCB0eXBlIHNpemUuICAqLworKwkgIExPTkdFU1Qgb2Zmc2V0ID0gc2QgKiAoaW5kZXggLSBs Yik7CisrCSAgdG90YWxfb2Zmc2V0ICs9IG9mZnNldDsKKysJfQorKyAgICB9CisgCistICAvKiBO b3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhwcmVzc2lv biBsZXQgdXMKKy0gICAgIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMgZWxlbWVudCBleGlz dHMgaW4gdGhlIGFycmF5LiAgKi8KKysgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQorKyAgICBy ZXR1cm4gYXJyYXk7CisgCistICAvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4g ICovCistICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyBpKyspCisrICAvKiBCdWlsZCBhIHR5 cGUgdGhhdCByZXByZXNlbnRzIHRoZSBuZXcgYXJyYXkgc2xpY2UgaW4gdGhlIHRhcmdldCBtZW1v cnkKKysgICAgIG9mIHRoZSBvcmlnaW5hbCBBUlJBWSwgdGhpcyB0eXBlIG1ha2VzIHVzZSBvZiBz dHJpZGVzIHRvIGNvcnJlY3RseQorKyAgICAgZmluZCBvbmx5IHRob3NlIGVsZW1lbnRzIHRoYXQg YXJlIHBhcnQgb2YgdGhlIG5ldyBzbGljZS4gICovCisrICBzdHJ1Y3QgdHlwZSAqYXJyYXlfc2xp Y2VfdHlwZSA9IGlubmVyX2VsZW1lbnRfdHlwZTsKKysgIGZvciAoY29uc3QgYXV0byAmZCA6IHNs aWNlX2RpbXMpCisgICAgIHsKKy0gICAgICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQg bXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3LiAgKi8KKy0gICAgICB2YWx1ZSAqYXJnMiA9 IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKKysgICAg ICAvKiBDcmVhdGUgdGhlIHJhbmdlLiAgKi8KKysgICAgICBkeW5hbWljX3Byb3AgcF9sb3csIHBf aGlnaCwgcF9zdHJpZGU7CisrCisrICAgICAgcF9sb3cuc2V0X2NvbnN0X3ZhbCAoZC5sb3cpOwor KyAgICAgIHBfaGlnaC5zZXRfY29uc3RfdmFsIChkLmhpZ2gpOworKyAgICAgIHBfc3RyaWRlLnNl dF9jb25zdF92YWwgKGQuc3RyaWRlKTsKKysKKysgICAgICBzdHJ1Y3QgdHlwZSAqbmV3X3Jhbmdl CisrCT0gY3JlYXRlX3JhbmdlX3R5cGVfd2l0aF9zdHJpZGUgKChzdHJ1Y3QgdHlwZSAqKSBOVUxM LAorKwkJCQkJIFRZUEVfVEFSR0VUX1RZUEUgKGQuaW5kZXgpLAorKwkJCQkJICZwX2xvdywgJnBf aGlnaCwgMCwgJnBfc3RyaWRlLAorKwkJCQkJIHRydWUpOworKyAgICAgIGFycmF5X3NsaWNlX3R5 cGUKKysJPSBjcmVhdGVfYXJyYXlfdHlwZSAobnVsbHB0ciwgYXJyYXlfc2xpY2VfdHlwZSwgbmV3 X3JhbmdlKTsKKysgICAgfQorIAorLSAgICAgIC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJh eS4gICovCistICAgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNfbG9uZyAoYXJnMik7 CisrICBpZiAoZm9ydHJhbl9hcnJheV9zbGljaW5nX2RlYnVnKQorKyAgICB7CisrICAgICAgZGVi dWdfcHJpbnRmICgiJy0+IEZpbmFsIHJlc3VsdDpcbiIpOworKyAgICAgIGRlYnVnX3ByaW50ZiAo IiAgICB8LT4gVHlwZTogJXNcbiIsCisrCQkgICAgdHlwZV90b19zdHJpbmcgKGFycmF5X3NsaWNl X3R5cGUpLmNfc3RyICgpKTsKKysgICAgICBkZWJ1Z19wcmludGYgKCIgICAgfC0+IFRvdGFsIG9m ZnNldDogJWxkXG4iLCB0b3RhbF9vZmZzZXQpOworKyAgICAgIGRlYnVnX3ByaW50ZiAoIiAgICB8 LT4gQmFzZSBhZGRyZXNzOiAlc1xuIiwKKysJCSAgICBjb3JlX2FkZHJfdG9fc3RyaW5nICh2YWx1 ZV9hZGRyZXNzIChhcnJheSkpKTsKKysgICAgICBkZWJ1Z19wcmludGYgKCIgICAgJy0+IENvbnRp Z3VvdXMgPSAlc1xuIiwKKysJCSAgICAoaXNfYWxsX2NvbnRpZ3VvdXMgPyAiWWVzIiA6ICJObyIp KTsKKyAgICAgfQorIAorLSAgLyogSW50ZXJuYWwgdHlwZSBvZiBhcnJheSBpcyBhcnJhbmdlZCBy aWdodCB0byBsZWZ0LiAgKi8KKy0gIGZvciAoaW50IGkgPSBuYXJnczsgaSA+IDA7IGktLSkKKysg IC8qIFNob3VsZCB3ZSByZXBhY2sgdGhpcyBhcnJheSBzbGljZT8gICovCisrICBpZiAoIWlzX2Fs bF9jb250aWd1b3VzICYmIChyZXBhY2tfYXJyYXlfc2xpY2VzIHx8IGlzX3N0cmluZ19wKSkKKyAg ICAgeworLSAgICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFs dWVfdHlwZSAoYXJyYXkpKTsKKy0gICAgICBMT05HRVNUIGluZGV4ID0gc3Vic2NyaXB0X2FycmF5 W2kgLSAxXTsKKysgICAgICAvKiBCdWlsZCBhIHR5cGUgZm9yIHRoZSByZXBhY2tlZCBzbGljZS4g ICovCisrICAgICAgc3RydWN0IHR5cGUgKnJlcGFja2VkX2FycmF5X3R5cGUgPSBpbm5lcl9lbGVt ZW50X3R5cGU7CisrICAgICAgZm9yIChjb25zdCBhdXRvICZkIDogc2xpY2VfZGltcykKKysJewor KwkgIC8qIENyZWF0ZSB0aGUgcmFuZ2UuICAqLworKwkgIGR5bmFtaWNfcHJvcCBwX2xvdywgcF9o aWdoLCBwX3N0cmlkZTsKKysKKysJICBwX2xvdy5zZXRfY29uc3RfdmFsIChkLmxvdyk7CisrCSAg cF9oaWdoLnNldF9jb25zdF92YWwgKGQuaGlnaCk7CisrCSAgcF9zdHJpZGUuc2V0X2NvbnN0X3Zh bCAoVFlQRV9MRU5HVEggKHJlcGFja2VkX2FycmF5X3R5cGUpKTsKKysKKysJICBzdHJ1Y3QgdHlw ZSAqbmV3X3JhbmdlCisrCSAgICA9IGNyZWF0ZV9yYW5nZV90eXBlX3dpdGhfc3RyaWRlICgoc3Ry dWN0IHR5cGUgKikgTlVMTCwKKysJCQkJCSAgICAgVFlQRV9UQVJHRVRfVFlQRSAoZC5pbmRleCks CisrCQkJCQkgICAgICZwX2xvdywgJnBfaGlnaCwgMCwgJnBfc3RyaWRlLAorKwkJCQkJICAgICB0 cnVlKTsKKysJICByZXBhY2tlZF9hcnJheV90eXBlCisrCSAgICA9IGNyZWF0ZV9hcnJheV90eXBl IChudWxscHRyLCByZXBhY2tlZF9hcnJheV90eXBlLCBuZXdfcmFuZ2UpOworKwl9CisgCistICAg ICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKKy0JCQkJ CWY3N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOworKyAgICAgIC8qIE5vdyBjb3B5IHRo ZSBlbGVtZW50cyBmcm9tIHRoZSBvcmlnaW5hbCBBUlJBWSBpbnRvIHRoZSBwYWNrZWQKKysJIGFy cmF5IHZhbHVlIERFU1QuICAqLworKyAgICAgIHN0cnVjdCB2YWx1ZSAqZGVzdCA9IGFsbG9jYXRl X3ZhbHVlIChyZXBhY2tlZF9hcnJheV90eXBlKTsKKysgICAgICBpZiAodmFsdWVfbGF6eSAoYXJy YXkpCisrCSAgfHwgKHRvdGFsX29mZnNldCArIFRZUEVfTEVOR1RIIChhcnJheV9zbGljZV90eXBl KQorKwkgICAgICA+IFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJh eSkpKSkpCisrCXsKKysJICBmb3J0cmFuX2FycmF5X3dhbGtlcjxmb3J0cmFuX2xhenlfYXJyYXlf cmVwYWNrZXJfaW1wbD4gcAorKwkgICAgKGFycmF5X3NsaWNlX3R5cGUsIHZhbHVlX2FkZHJlc3Mg KGFycmF5KSArIHRvdGFsX29mZnNldCwgZGVzdCk7CisrCSAgcC53YWxrICgpOworKwl9CisrICAg ICAgZWxzZQorKwl7CisrCSAgZm9ydHJhbl9hcnJheV93YWxrZXI8Zm9ydHJhbl9hcnJheV9yZXBh Y2tlcl9pbXBsPiBwCisrCSAgICAoYXJyYXlfc2xpY2VfdHlwZSwgdmFsdWVfYWRkcmVzcyAoYXJy YXkpICsgdG90YWxfb2Zmc2V0LAorKwkgICAgIHRvdGFsX29mZnNldCwgYXJyYXksIGRlc3QpOwor KwkgIHAud2FsayAoKTsKKysJfQorKyAgICAgIGFycmF5ID0gZGVzdDsKKysgICAgfQorKyAgZWxz ZQorKyAgICB7CisrICAgICAgaWYgKFZBTFVFX0xWQUwgKGFycmF5KSA9PSBsdmFsX21lbW9yeSkK KysJeworKwkgIC8qIElmIHRoZSB2YWx1ZSB3ZSdyZSB0YWtpbmcgYSBzbGljZSBmcm9tIGlzIG5v dCB5ZXQgbG9hZGVkLCBvcgorKwkgICAgIHRoZSByZXF1ZXN0ZWQgc2xpY2UgaXMgb3V0c2lkZSB0 aGUgdmFsdWVzIGNvbnRlbnQgcmFuZ2UgdGhlbgorKwkgICAgIGp1c3QgY3JlYXRlIGEgbmV3IGxh enkgdmFsdWUgcG9pbnRpbmcgYXQgdGhlIG1lbW9yeSB3aGVyZSB0aGUKKysJICAgICBjb250ZW50 cyB3ZSdyZSBsb29raW5nIGZvciBleGlzdC4gICovCisrCSAgaWYgKHZhbHVlX2xhenkgKGFycmF5 KQorKwkgICAgICB8fCAodG90YWxfb2Zmc2V0ICsgVFlQRV9MRU5HVEggKGFycmF5X3NsaWNlX3R5 cGUpCisrCQkgID4gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5 KSkpKSkKKysJICAgIGFycmF5ID0gdmFsdWVfYXRfbGF6eSAoYXJyYXlfc2xpY2VfdHlwZSwKKysJ CQkJICAgdmFsdWVfYWRkcmVzcyAoYXJyYXkpICsgdG90YWxfb2Zmc2V0KTsKKysJICBlbHNlCisr CSAgICBhcnJheSA9IHZhbHVlX2Zyb21fY29udGVudHNfYW5kX2FkZHJlc3MgKGFycmF5X3NsaWNl X3R5cGUsCisrCQkJCQkJICAgICAodmFsdWVfY29udGVudHMgKGFycmF5KQorKwkJCQkJCSAgICAg ICsgdG90YWxfb2Zmc2V0KSwKKysJCQkJCQkgICAgICh2YWx1ZV9hZGRyZXNzIChhcnJheSkKKysJ CQkJCQkgICAgICArIHRvdGFsX29mZnNldCkpOworKwl9CisrICAgICAgZWxzZSBpZiAoIXZhbHVl X2xhenkgKGFycmF5KSkKKysJeworKwkgIGNvbnN0IHZvaWQgKnZhbGFkZHIgPSB2YWx1ZV9jb250 ZW50cyAoYXJyYXkpICsgdG90YWxfb2Zmc2V0OworKwkgIGFycmF5ID0gYWxsb2NhdGVfdmFsdWUg KGFycmF5X3NsaWNlX3R5cGUpOworKwkgIG1lbWNweSAodmFsdWVfY29udGVudHNfcmF3IChhcnJh eSksIHZhbGFkZHIsIFRZUEVfTEVOR1RIIChhcnJheV9zbGljZV90eXBlKSk7CisrCX0KKysgICAg ICBlbHNlCisrCWVycm9yIChfKCJjYW5ub3Qgc3Vic2NyaXB0IGFycmF5cyB0aGF0IGFyZSBub3Qg aW4gbWVtb3J5IikpOworICAgICB9CisgCisgICByZXR1cm4gYXJyYXk7CitAQCAtMTAzMSwxMSAr MTQ4OSw1MCBAQCBidWlsdGluX2ZfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgICBy ZXR1cm4gKGNvbnN0IHN0cnVjdCBidWlsdGluX2ZfdHlwZSAqKSBnZGJhcmNoX2RhdGEgKGdkYmFy Y2gsIGZfdHlwZV9kYXRhKTsKKyB9CisgCisrLyogQ29tbWFuZC1saXN0IGZvciB0aGUgInNldC9z aG93IGZvcnRyYW4iIHByZWZpeCBjb21tYW5kLiAgKi8KKytzdGF0aWMgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKnNldF9mb3J0cmFuX2xpc3Q7Cisrc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICpzaG93X2ZvcnRyYW5fbGlzdDsKKysKKyB2b2lkIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2Ug KCk7Cisgdm9pZAorIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2UgKCkKKyB7CisgICBmX3R5cGVfZGF0 YSA9IGdkYmFyY2hfZGF0YV9yZWdpc3Rlcl9wb3N0X2luaXQgKGJ1aWxkX2ZvcnRyYW5fdHlwZXMp OworKworKyAgYWRkX2Jhc2ljX3ByZWZpeF9jbWQgKCJmb3J0cmFuIiwgbm9fY2xhc3MsCisrCQkJ XygiUHJlZml4IGNvbW1hbmQgZm9yIGNoYW5naW5nIEZvcnRyYW4tc3BlY2lmaWMgc2V0dGluZ3Mu IiksCisrCQkJJnNldF9mb3J0cmFuX2xpc3QsICJzZXQgZm9ydHJhbiAiLCAwLCAmc2V0bGlzdCk7 CisrCisrICBhZGRfc2hvd19wcmVmaXhfY21kICgiZm9ydHJhbiIsIG5vX2NsYXNzLAorKwkJICAg ICAgIF8oIkdlbmVyaWMgY29tbWFuZCBmb3Igc2hvd2luZyBGb3J0cmFuLXNwZWNpZmljIHNldHRp bmdzLiIpLAorKwkJICAgICAgICZzaG93X2ZvcnRyYW5fbGlzdCwgInNob3cgZm9ydHJhbiAiLCAw LCAmc2hvd2xpc3QpOworKworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJyZXBhY2stYXJy YXktc2xpY2VzIiwgY2xhc3NfdmFycywKKysJCQkgICAmcmVwYWNrX2FycmF5X3NsaWNlcywgXygi XAorK0VuYWJsZSBvciBkaXNhYmxlIHJlcGFja2luZyBvZiBub24tY29udGlndW91cyBhcnJheSBz bGljZXMuIiksIF8oIlwKKytTaG93IHdoZXRoZXIgbm9uLWNvbnRpZ3VvdXMgYXJyYXkgc2xpY2Vz IGFyZSByZXBhY2tlZC4iKSwgXygiXAorK1doZW4gdGhlIHVzZXIgcmVxdWVzdHMgYSBzbGljZSBv ZiBhIEZvcnRyYW4gYXJyYXkgdGhlbiB3ZSBjYW4gZWl0aGVyIHJldHVyblxuXAorK2EgZGVzY3Jp cHRvciB0aGF0IGRlc2NyaWJlcyB0aGUgYXJyYXkgaW4gcGxhY2UgKHVzaW5nIHRoZSBvcmlnaW5h bCBhcnJheSBkYXRhXG5cCisraW4gaXRzIGV4aXN0aW5nIGxvY2F0aW9uKSBvciB0aGUgb3JpZ2lu YWwgZGF0YSBjYW4gYmUgcmVwYWNrZWQgKGNvcGllZCkgdG8gYVxuXAorK25ldyBsb2NhdGlvbi5c blwKKytcblwKKytXaGVuIHRoZSBjb250ZW50IG9mIHRoZSBhcnJheSBzbGljZSBpcyBjb250aWd1 b3VzIHdpdGhpbiB0aGUgb3JpZ2luYWwgYXJyYXlcblwKKyt0aGVuIHRoZSByZXN1bHQgd2lsbCBu ZXZlciBiZSByZXBhY2tlZCwgYnV0IHdoZW4gdGhlIGRhdGEgZm9yIHRoZSBuZXcgYXJyYXlcblwK KytpcyBub24tY29udGlndW91cyB3aXRoaW4gdGhlIG9yaWdpbmFsIGFycmF5IHJlcGFja2luZyB3 aWxsIG9ubHkgYmUgcGVyZm9ybWVkXG5cCisrd2hlbiB0aGlzIHNldHRpbmcgaXMgb24uIiksCisr CQkJICAgTlVMTCwKKysJCQkgICBzaG93X3JlcGFja19hcnJheV9zbGljZXMsCisrCQkJICAgJnNl dF9mb3J0cmFuX2xpc3QsICZzaG93X2ZvcnRyYW5fbGlzdCk7CisrCisrICAvKiBEZWJ1ZyBGb3J0 cmFuJ3MgYXJyYXkgc2xpY2luZyBsb2dpYy4gICovCisrICBhZGRfc2V0c2hvd19ib29sZWFuX2Nt ZCAoImZvcnRyYW4tYXJyYXktc2xpY2luZyIsIGNsYXNzX21haW50ZW5hbmNlLAorKwkJCSAgICZm b3J0cmFuX2FycmF5X3NsaWNpbmdfZGVidWcsIF8oIlwKKytTZXQgZGVidWdnaW5nIG9mIEZvcnRy YW4gYXJyYXkgc2xpY2luZy4iKSwgXygiXAorK1Nob3cgZGVidWdnaW5nIG9mIEZvcnRyYW4gYXJy YXkgc2xpY2luZy4iKSwgXygiXAorK1doZW4gb24sIGRlYnVnZ2luZyBvZiBGb3J0cmFuIGFycmF5 IHNsaWNpbmcgaXMgZW5hYmxlZC4iKSwKKysJCQkgICAgTlVMTCwKKysJCQkgICAgc2hvd19mb3J0 cmFuX2FycmF5X3NsaWNpbmdfZGVidWcsCisrCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVi dWdsaXN0KTsKKyB9CisgCisgLyogU2VlIGYtbGFuZy5oLiAgKi8KK0BAIC0xMDc0LDMgKzE1NzEs NTYgQEAgZm9ydHJhbl9wcmVzZXJ2ZV9hcmdfcG9pbnRlciAoc3RydWN0IHZhbHVlICphcmcsIHN0 cnVjdCB0eXBlICp0eXBlKQorICAgICByZXR1cm4gdmFsdWVfdHlwZSAoYXJnKTsKKyAgIHJldHVy biB0eXBlOworIH0KKysKKysvKiBTZWUgZi1sYW5nLmguICAqLworKworK0NPUkVfQUREUgorK2Zv cnRyYW5fYWRqdXN0X2R5bmFtaWNfYXJyYXlfYmFzZV9hZGRyZXNzX2hhY2sgKHN0cnVjdCB0eXBl ICp0eXBlLAorKwkJCQkJCUNPUkVfQUREUiBhZGRyZXNzKQorK3sKKysgIGdkYl9hc3NlcnQgKHR5 cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0FSUkFZKTsKKysKKysgIGludCBuZGltZW5zaW9ucyA9 IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOworKyAgTE9OR0VTVCB0b3RhbF9vZmZzZXQgPSAw OworKworKyAgLyogV2FsayB0aHJvdWdoIGVhY2ggb2YgdGhlIGRpbWVuc2lvbnMgb2YgdGhpcyBh cnJheSB0eXBlIGFuZCBmaWd1cmUgb3V0CisrICAgICBpZiBhbnkgb2YgdGhlIGRpbWVuc2lvbnMg YXJlICJiYWNrd2FyZHMiLCB0aGF0IGlzIHRoZSBiYXNlIGFkZHJlc3MKKysgICAgIGZvciB0aGlz IGRpbWVuc2lvbiBwb2ludHMgdG8gdGhlIGVsZW1lbnQgYXQgdGhlIGhpZ2hlc3QgbWVtb3J5Cisr ICAgICBhZGRyZXNzIGFuZCB0aGUgc3RyaWRlIGlzIG5lZ2F0aXZlLiAgKi8KKysgIHN0cnVjdCB0 eXBlICp0bXBfdHlwZSA9IHR5cGU7CisrICBmb3IgKGludCBpID0gMCA7IGkgPCBuZGltZW5zaW9u czsgKytpKQorKyAgICB7CisrICAgICAgLyogR3JhYiB0aGUgcmFuZ2UgZm9yIHRoaXMgZGltZW5z aW9uIGFuZCBleHRyYWN0IHRoZSBsb3dlciBhbmQgdXBwZXIKKysJIGJvdW5kcy4gICovCisrICAg ICAgdG1wX3R5cGUgPSBjaGVja190eXBlZGVmICh0bXBfdHlwZSk7CisrICAgICAgc3RydWN0IHR5 cGUgKnJhbmdlX3R5cGUgPSB0bXBfdHlwZS0+aW5kZXhfdHlwZSAoKTsKKysgICAgICBMT05HRVNU IGxvd2VyYm91bmQsIHVwcGVyYm91bmQsIHN0cmlkZTsKKysgICAgICBpZiAoIWdldF9kaXNjcmV0 ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dlcmJvdW5kLCAmdXBwZXJib3VuZCkpCisrCWVycm9y ICgiZmFpbGVkIHRvIGdldCByYW5nZSBib3VuZHMiKTsKKysKKysgICAgICAvKiBGaWd1cmUgb3V0 IHRoZSBzdHJpZGUgZm9yIHRoaXMgZGltZW5zaW9uLiAgKi8KKysgICAgICBzdHJ1Y3QgdHlwZSAq ZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSkpOwor KyAgICAgIHN0cmlkZSA9IHRtcF90eXBlLT5pbmRleF90eXBlICgpLT5ib3VuZHMgKCktPmJpdF9z dHJpZGUgKCk7CisrICAgICAgaWYgKHN0cmlkZSA9PSAwKQorKwlzdHJpZGUgPSB0eXBlX2xlbmd0 aF91bml0cyAoZWx0X3R5cGUpOworKyAgICAgIGVsc2UKKysJeworKwkgIHN0cnVjdCBnZGJhcmNo ICphcmNoID0gZ2V0X3R5cGVfYXJjaCAoZWx0X3R5cGUpOworKwkgIGludCB1bml0X3NpemUgPSBn ZGJhcmNoX2FkZHJlc3NhYmxlX21lbW9yeV91bml0X3NpemUgKGFyY2gpOworKwkgIHN0cmlkZSAv PSAodW5pdF9zaXplICogOCk7CisrCX0KKysKKysgICAgICAvKiBJZiB0aGlzIGRpbWVuc2lvbiBp cyAiYmFja3dhcmQiIHRoZW4gZmlndXJlIG91dCB0aGUgb2Zmc2V0CisrCSBhZGp1c3RtZW50IHJl cXVpcmVkIHRvIHBvaW50IHRvIHRoZSBlbGVtZW50IGF0IHRoZSBsb3dlc3QgbWVtb3J5CisrCSBh ZGRyZXNzLCBhbmQgYWRkIHRoaXMgdG8gdGhlIHRvdGFsIG9mZnNldC4gICovCisrICAgICAgTE9O R0VTVCBvZmZzZXQgPSAwOworKyAgICAgIGlmIChzdHJpZGUgPCAwICYmIGxvd2VyYm91bmQgPCB1 cHBlcmJvdW5kKQorKwlvZmZzZXQgPSAodXBwZXJib3VuZCAtIGxvd2VyYm91bmQpICogc3RyaWRl OworKyAgICAgIHRvdGFsX29mZnNldCArPSBvZmZzZXQ7CisrICAgICAgdG1wX3R5cGUgPSBUWVBF X1RBUkdFVF9UWVBFICh0bXBfdHlwZSk7CisrICAgIH0KKysKKysgIC8qIEFkanVzdCB0aGUgYWRk cmVzcyBvZiB0aGlzIG9iamVjdCBhbmQgcmV0dXJuIGl0LiAgKi8KKysgIGFkZHJlc3MgKz0gdG90 YWxfb2Zmc2V0OworKyAgcmV0dXJuIGFkZHJlc3M7CisrfQorZGlmZiAtLWdpdCBhL2dkYi9mLWxh bmcuaCBiL2dkYi9mLWxhbmcuaAorLS0tIGEvZ2RiL2YtbGFuZy5oCisrKysgYi9nZGIvZi1sYW5n LmgKK0BAIC02NCw3ICs2NCw2IEBAIGV4dGVybiB2b2lkIGY3N19nZXRfZHluYW1pY19hcnJheV9s ZW5ndGggKHN0cnVjdCB0eXBlICopOworIAorIGV4dGVybiBpbnQgY2FsY19mNzdfYXJyYXlfZGlt cyAoc3RydWN0IHR5cGUgKik7CisgCistCisgLyogRm9ydHJhbiAoRjc3KSB0eXBlcyAqLworIAor IHN0cnVjdCBidWlsdGluX2ZfdHlwZQorQEAgLTEyMiw0ICsxMjEsMjIgQEAgZXh0ZXJuIHN0cnVj dCB2YWx1ZSAqZm9ydHJhbl9hcmd1bWVudF9jb252ZXJ0IChzdHJ1Y3QgdmFsdWUgKnZhbHVlLAor IGV4dGVybiBzdHJ1Y3QgdHlwZSAqZm9ydHJhbl9wcmVzZXJ2ZV9hcmdfcG9pbnRlciAoc3RydWN0 IHZhbHVlICphcmcsCisgCQkJCQkJICBzdHJ1Y3QgdHlwZSAqdHlwZSk7CisgCisrLyogRm9ydHJh biBhcnJheXMgY2FuIGhhdmUgYSBuZWdhdGl2ZSBzdHJpZGUuICBXaGVuIHRoaXMgaGFwcGVucyBp dCBpcworKyAgIG9mdGVuIHRoZSBjYXNlIHRoYXQgdGhlIGJhc2UgYWRkcmVzcyBmb3IgYW4gb2Jq ZWN0IGlzIG5vdCB0aGUgbG93ZXN0CisrICAgYWRkcmVzcyBvY2N1cGllZCBieSB0aGF0IG9iamVj dC4gIEZvciBleGFtcGxlLCBhbiBhcnJheSBzbGljZSAoMTA6MTotMSkKKysgICB3aWxsIGJlIGVu Y29kZWQgd2l0aCBsb3dlciBib3VuZCAxLCB1cHBlciBib3VuZCAxMCwgYSBzdHJpZGUgb2YKKysg ICAtRUxFTUVOVF9TSVpFLCBhbmQgaGF2ZSBhIGJhc2UgYWRkcmVzcyBwb2ludGVyIHRoYXQgcG9p bnRzIGF0IHRoZQorKyAgIGVsZW1lbnQgd2l0aCB0aGUgaGlnaGVzdCBhZGRyZXNzIGluIG1lbW9y eS4KKysKKysgICBUaGlzIHJlYWxseSBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIG91ciBjdXJyZW50 IG1vZGVsIG9mIHZhbHVlIGNvbnRlbnRzLAorKyAgIGJ1dCBjb3VsZCBlYXNpbHkgcmVxdWlyZSBh IHNpZ25pZmljYW50IHVwZGF0ZSBpbiBvcmRlciB0byBiZSBzdXBwb3J0ZWQKKysgICAiY29ycmVj dGx5Ii4KKysKKysgICBGb3Igbm93LCB3ZSBtYW51YWxseSBmb3JjZSB0aGUgYmFzZSBhZGRyZXNz IHRvIGJlIHRoZSBsb3dlc3QgYWRkcmVzc2VkCisrICAgZWxlbWVudCBoZXJlLiAgWWVzLCB0aGlz IHdpbGwgYnJlYWsgc29tZSB0aGluZ3MsIGJ1dCBpdCBmaXhlcyBvdGhlcgorKyAgIHRoaW5ncy4g IFRoZSBob3BlIGlzIHRoYXQgaXQgZml4ZXMgbW9yZSB0aGFuIGl0IGJyZWFrcy4gICovCisrCisr ZXh0ZXJuIENPUkVfQUREUiBmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jhc2VfYWRkcmVz c19oYWNrCisrCShzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHJlc3MpOworKworICNl bmRpZiAvKiBGX0xBTkdfSCAqLworZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIv Zi12YWxwcmludC5jCistLS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9nZGIvZi12YWxwcmlu dC5jCitAQCAtMzUsNiArMzUsNyBAQAorICNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCisgI2luY2x1 ZGUgImNsaS9jbGktc3R5bGUuaCIKKyAjaW5jbHVkZSAiZ2RiYXJjaC5oIgorKyNpbmNsdWRlICJm LWFycmF5LXdhbGtlci5oIgorIAorIHN0YXRpYyB2b2lkIGY3N19nZXRfZHluYW1pY19sZW5ndGhf b2ZfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAqKTsKKyAKK0BAIC0xMDAsMTAwICsxMDEsMTAzIEBA IGY3N19nZXRfZHluYW1pY19sZW5ndGhfb2ZfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAqdHlwZSkK KyAgICAgKiBUWVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpKTsKKyB9CisgCistLyogQWN0dWFsIGZ1bmN0aW9uIHdoaWNoIHByaW50cyBvdXQgRjc3IGFy cmF5cywgVmFsYWRkciA9PSBhZGRyZXNzIGluIAorLSAgIHRoZSBzdXBlcmlvci4gIEFkZHJlc3Mg PT0gdGhlIGFkZHJlc3MgaW4gdGhlIGluZmVyaW9yLiAgKi8KKysvKiBBIGNsYXNzIHVzZWQgYnkg Rk9SVFJBTl9QUklOVF9BUlJBWSBhcyBhIHNwZWNpYWxpc2F0aW9uIG9mIHRoZSBhcnJheQorKyAg IHdhbGtpbmcgdGVtcGxhdGUuICBUaGlzIHNwZWNpYWxpc2F0aW9uIHByaW50cyBGb3J0cmFuIGFy cmF5cy4gICovCisgCistc3RhdGljIHZvaWQKKy1mNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywg aW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKy0JCSAgIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAorLQkJICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3Ms CistCQkgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKKy0JCSAgIGNvbnN0 IHN0cnVjdCB2YWx1ZSAqdmFsLAorLQkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKm9wdGlvbnMsCistCQkgICBpbnQgKmVsdHMpCisrY2xhc3MgZm9ydHJhbl9hcnJheV9wcmlu dGVyX2ltcGwgOiBwdWJsaWMgZm9ydHJhbl9hcnJheV93YWxrZXJfYmFzZV9pbXBsCisgeworLSAg c3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKS0+aW5kZXhfdHlw ZSAoKTsKKy0gIENPUkVfQUREUiBhZGRyID0gYWRkcmVzcyArIGVtYmVkZGVkX29mZnNldDsKKy0g IExPTkdFU1QgbG93ZXJib3VuZCwgdXBwZXJib3VuZDsKKy0gIExPTkdFU1QgaTsKKy0KKy0gIGdl dF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dlcmJvdW5kLCAmdXBwZXJib3VuZCk7 CistCistICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQorLSAgICB7CistICAgICAgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKKy0gICAgICBzaXplX3QgZGlt X3NpemUgPSB0eXBlX2xlbmd0aF91bml0cyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworLSAg ICAgIGludCB1bml0X3NpemUgPSBnZGJhcmNoX2FkZHJlc3NhYmxlX21lbW9yeV91bml0X3NpemUg KGdkYmFyY2gpOworLSAgICAgIHNpemVfdCBieXRlX3N0cmlkZSA9IHR5cGUtPmJpdF9zdHJpZGUg KCkgLyAodW5pdF9zaXplICogOCk7CistICAgICAgaWYgKGJ5dGVfc3RyaWRlID09IDApCistCWJ5 dGVfc3RyaWRlID0gZGltX3NpemU7CistICAgICAgc2l6ZV90IG9mZnMgPSAwOworLQorLSAgICAg IGZvciAoaSA9IGxvd2VyYm91bmQ7CistCSAgIChpIDwgdXBwZXJib3VuZCArIDEgJiYgKCplbHRz KSA8IG9wdGlvbnMtPnByaW50X21heCk7CistCSAgIGkrKykKKy0JeworLQkgIHN0cnVjdCB2YWx1 ZSAqc3ViYXJyYXkgPSB2YWx1ZV9mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNzCistCSAgICAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSksIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZ19jb25zdCAo dmFsKQorLQkgICAgICsgb2ZmcywgYWRkciArIG9mZnMpOworLQorLQkgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIigiKTsKKy0JICBmNzdfcHJpbnRfYXJyYXlfMSAobnNzICsgMSwgbmRpbWVu c2lvbnMsIHZhbHVlX3R5cGUgKHN1YmFycmF5KSwKKy0JCQkgICAgIHZhbHVlX2NvbnRlbnRzX2Zv cl9wcmludGluZyAoc3ViYXJyYXkpLAorLQkJCSAgICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChz dWJhcnJheSksCistCQkJICAgICB2YWx1ZV9hZGRyZXNzIChzdWJhcnJheSksCistCQkJICAgICBz dHJlYW0sIHJlY3Vyc2UsIHN1YmFycmF5LCBvcHRpb25zLCBlbHRzKTsKKy0JICBvZmZzICs9IGJ5 dGVfc3RyaWRlOworLQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKKy0KKy0JICBp ZiAoaSA8IHVwcGVyYm91bmQpCistCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgIik7 CistCX0KKy0gICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCB1cHBl cmJvdW5kKQorLQlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKy0gICAgfQorLSAg ZWxzZQorLSAgICB7CistICAgICAgZm9yIChpID0gbG93ZXJib3VuZDsgaSA8IHVwcGVyYm91bmQg KyAxICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7CistCSAgIGkrKywgKCplbHRzKSsr KQorLQl7CistCSAgc3RydWN0IHZhbHVlICplbHQgPSB2YWx1ZV9zdWJzY3JpcHQgKChzdHJ1Y3Qg dmFsdWUgKil2YWwsIGkpOworLQorLQkgIGNvbW1vbl92YWxfcHJpbnQgKGVsdCwgc3RyZWFtLCBy ZWN1cnNlLCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKKy0KKy0JICBpZiAoaSAhPSB1cHBl cmJvdW5kKQorLQkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLCAiKTsKKy0KKy0JICBp ZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCistCSAgICAgICYmIChpICE9IHVw cGVyYm91bmQpKQorLQkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CistCX0K Ky0gICAgfQorLX0KKytwdWJsaWM6CisrICAvKiBDb25zdHJ1Y3Rvci4gIFRZUEUgaXMgdGhlIGFy cmF5IHR5cGUgYmVpbmcgcHJpbnRlZCwgQUREUkVTUyBpcyB0aGUKKysgICAgIGFkZHJlc3MgaW4g dGFyZ2V0IG1lbW9yeSBmb3IgdGhlIG9iamVjdCBvZiBUWVBFIGJlaW5nIHByaW50ZWQuICBWQUwg aXMKKysgICAgIHRoZSBHREIgdmFsdWUgKG9mIFRZUEUpIGJlaW5nIHByaW50ZWQuICBTVFJFQU0g aXMgd2hlcmUgdG8gcHJpbnQgdG8sCisrICAgICBSRUNPVVJTRSBpcyBwYXNzZWQgdGhyb3VnaCAo YW5kIHByZXZlbnRzIGluZmluaXRlIHJlY3Vyc2lvbiksIGFuZAorKyAgICAgT1BUSU9OUyBhcmUg dGhlIHByaW50aW5nIGNvbnRyb2wgb3B0aW9ucy4gICovCisrICBleHBsaWNpdCBmb3J0cmFuX2Fy cmF5X3ByaW50ZXJfaW1wbCAoc3RydWN0IHR5cGUgKnR5cGUsCisrCQkJCSAgICAgICBDT1JFX0FE RFIgYWRkcmVzcywKKysJCQkJICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsLAorKwkJCQkgICAgICAg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKysJCQkJICAgICAgIGludCByZWN1cnNlLAorKwkJCQkg ICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCisrICAgIDog bV9lbHRzICgwKSwKKysgICAgICBtX3ZhbCAodmFsKSwKKysgICAgICBtX3N0cmVhbSAoc3RyZWFt KSwKKysgICAgICBtX3JlY3Vyc2UgKHJlY3Vyc2UpLAorKyAgICAgIG1fb3B0aW9ucyAob3B0aW9u cykKKysgIHsgLyogTm90aGluZy4gICovIH0KKysKKysgIC8qIENhbGxlZCB3aGlsZSBpdGVyYXRp bmcgb3ZlciB0aGUgYXJyYXkgYm91bmRzLiAgV2hlbiBTSE9VTERfQ09OVElOVUUgaXMKKysgICAg IGZhbHNlIHRoZW4gd2UgbXVzdCByZXR1cm4gZmFsc2UsIGFzIHdlIGhhdmUgcmVhY2hlZCB0aGUg ZW5kIG9mIHRoZQorKyAgICAgYXJyYXkgYm91bmRzIGZvciB0aGlzIGRpbWVuc2lvbi4gIEhvd2V2 ZXIsIHdlIGFsc28gcmV0dXJuIGZhbHNlIGlmIHdlCisrICAgICBoYXZlIHByaW50ZWQgdG9vIG1h bnkgZWxlbWVudHMgKGFmdGVyIHByaW50aW5nICcuLi4nKS4gIEluIGFsbCBvdGhlcgorKyAgICAg Y2FzZXMsIHJldHVybiB0cnVlLiAgKi8KKysgIGJvb2wgY29udGludWVfd2Fsa2luZyAoYm9vbCBz aG91bGRfY29udGludWUpCisrICB7CisrICAgIGJvb2wgY29udCA9IHNob3VsZF9jb250aW51ZSAm JiAobV9lbHRzIDwgbV9vcHRpb25zLT5wcmludF9tYXgpOworKyAgICBpZiAoIWNvbnQgJiYgc2hv dWxkX2NvbnRpbnVlKQorKyAgICAgIGZwdXRzX2ZpbHRlcmVkICgiLi4uIiwgbV9zdHJlYW0pOwor KyAgICByZXR1cm4gY29udDsKKysgIH0KKysKKysgIC8qIENhbGxlZCB3aGVuIHdlIHN0YXJ0IGl0 ZXJhdGluZyBvdmVyIGEgZGltZW5zaW9uLiAgSWYgaXQncyBub3QgdGhlCisrICAgICBpbm5lciBt b3N0IGRpbWVuc2lvbiB0aGVuIHByaW50IGFuIG9wZW5pbmcgJygnIGNoYXJhY3Rlci4gICovCisr ICB2b2lkIHN0YXJ0X2RpbWVuc2lvbiAoYm9vbCBpbm5lcl9wKQorKyAgeworKyAgICBmcHV0c19m aWx0ZXJlZCAoIigiLCBtX3N0cmVhbSk7CisrICB9CisrCisrICAvKiBDYWxsZWQgd2hlbiB3ZSBm aW5pc2ggcHJvY2Vzc2luZyBhIGJhdGNoIG9mIGl0ZW1zIHdpdGhpbiBhIGRpbWVuc2lvbgorKyAg ICAgb2YgdGhlIGFycmF5LiAgRGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyBpcyB0aGUgaW5uZXIg bW9zdCBkaW1lbnNpb24KKysgICAgIG9yIG5vdCB3ZSBwcmludCBkaWZmZXJlbnQgdGhpbmdzLCBi dXQgdGhpcyBpcyBhbGwgYWJvdXQgYWRkaW5nCisrICAgICBzZXBhcmF0b3JzIGJldHdlZW4gZWxl bWVudHMsIGFuZCBkaW1lbnNpb25zIG9mIHRoZSBhcnJheS4gICovCisrICB2b2lkIGZpbmlzaF9k aW1lbnNpb24gKGJvb2wgaW5uZXJfcCwgYm9vbCBsYXN0X3ApCisrICB7CisrICAgIGZwdXRzX2Zp bHRlcmVkICgiKSIsIG1fc3RyZWFtKTsKKysgICAgaWYgKCFsYXN0X3ApCisrICAgICAgZnB1dHNf ZmlsdGVyZWQgKCIgIiwgbV9zdHJlYW0pOworKyAgfQorKworKyAgLyogQ2FsbGVkIHRvIHByb2Nl c3MgYW4gZWxlbWVudCBvZiBFTFRfVFlQRSBhdCBvZmZzZXQgRUxUX09GRiBmcm9tIHRoZQorKyAg ICAgc3RhcnQgb2YgdGhlIHBhcmVudCBvYmplY3QuICAqLworKyAgdm9pZCBwcm9jZXNzX2VsZW1l bnQgKHN0cnVjdCB0eXBlICplbHRfdHlwZSwgTE9OR0VTVCBlbHRfb2ZmLCBib29sIGxhc3RfcCkK KysgIHsKKysgICAgLyogRXh0cmFjdCB0aGUgZWxlbWVudCB2YWx1ZSBmcm9tIHRoZSBwYXJlbnQg dmFsdWUuICAqLworKyAgICBzdHJ1Y3QgdmFsdWUgKmVfdmFsCisrICAgICAgPSB2YWx1ZV9mcm9t X2NvbXBvbmVudCAobV92YWwsIGVsdF90eXBlLCBlbHRfb2ZmKTsKKysgICAgY29tbW9uX3ZhbF9w cmludCAoZV92YWwsIG1fc3RyZWFtLCBtX3JlY3Vyc2UsIG1fb3B0aW9ucywgY3VycmVudF9sYW5n dWFnZSk7CisrICAgIGlmICghbGFzdF9wKQorKyAgICAgIGZwdXRzX2ZpbHRlcmVkICgiLCAiLCBt X3N0cmVhbSk7CisrICAgICsrbV9lbHRzOworKyAgfQorKworK3ByaXZhdGU6CisrICAvKiBUaGUg bnVtYmVyIG9mIGVsZW1lbnRzIHByaW50ZWQgc28gZmFyLiAgKi8KKysgIGludCBtX2VsdHM7Cisr CisrICAvKiBUaGUgdmFsdWUgZnJvbSB3aGljaCB3ZSBhcmUgcHJpbnRpbmcgZWxlbWVudHMuICAq LworKyAgc3RydWN0IHZhbHVlICptX3ZhbDsKKysKKysgIC8qIFRoZSBzdHJlYW0gd2Ugc2hvdWxk IHByaW50IHRvby4gICovCisrICBzdHJ1Y3QgdWlfZmlsZSAqbV9zdHJlYW07CisrCisrICAvKiBU aGUgcmVjdXJzaW9uIGNvdW50ZXIsIHBhc3NlZCB0aHJvdWdoIHdoZW4gd2UgcHJpbnQgZWFjaCBl bGVtZW50LiAgKi8KKysgIGludCBtX3JlY3Vyc2U7CisrCisrICAvKiBUaGUgcHJpbnQgY29udHJv bCBvcHRpb25zLiAgR2l2ZXMgdXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIHRvCisr ICAgICBwcmludCwgYW5kIGlzIHBhc3NlZCB0aHJvdWdoIHRvIGVhY2ggZWxlbWVudCB0aGF0IHdl IHByaW50LiAgKi8KKysgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICptX29wdGlv bnMgPSBudWxscHRyOworK307CisgCistLyogVGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCB0byBw cmludCBhbiBGNzcgYXJyYXksIHdlIHNldCB1cCBzb21lIAorLSAgIHN0dWZmIGFuZCB0aGVuIGlt bWVkaWF0ZWx5IGNhbGwgZjc3X3ByaW50X2FycmF5XzEoKS4gICovCisrLyogVGhpcyBmdW5jdGlv biBnZXRzIGNhbGxlZCB0byBwcmludCBhIEZvcnRyYW4gYXJyYXkuICAqLworIAorIHN0YXRpYyB2 b2lkCistZjc3X3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCistCQkgaW50IGVtYmVkZGVkX29mZnNldCwKKy0JCSBDT1JFX0FERFIgYWRkcmVz cywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKy0JCSBpbnQgcmVjdXJzZSwKKy0JCSBjb25zdCBz dHJ1Y3QgdmFsdWUgKnZhbCwKKy0JCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq b3B0aW9ucykKKytmb3J0cmFuX3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9B RERSIGFkZHJlc3MsCisrCQkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNl LAorKwkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKKysJCSAgICAgY29uc3Qgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCisgeworLSAgaW50IG5kaW1lbnNpb25zOwor LSAgaW50IGVsdHMgPSAwOworLQorLSAgbmRpbWVuc2lvbnMgPSBjYWxjX2Y3N19hcnJheV9kaW1z ICh0eXBlKTsKKy0KKy0gIGlmIChuZGltZW5zaW9ucyA+IE1BWF9GT1JUUkFOX0RJTVMgfHwgbmRp bWVuc2lvbnMgPCAwKQorLSAgICBlcnJvciAoXygiXAorLVR5cGUgbm9kZSBjb3JydXB0ISBGNzcg YXJyYXlzIGNhbm5vdCBoYXZlICVkIHN1YnNjcmlwdHMgKCVkIE1heCkiKSwKKy0JICAgbmRpbWVu c2lvbnMsIE1BWF9GT1JUUkFOX0RJTVMpOworLQorLSAgZjc3X3ByaW50X2FycmF5XzEgKDEsIG5k aW1lbnNpb25zLCB0eXBlLCB2YWxhZGRyLCBlbWJlZGRlZF9vZmZzZXQsCistCQkgICAgIGFkZHJl c3MsIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25zLCAmZWx0cyk7CisrICBmb3J0cmFuX2Fy cmF5X3dhbGtlcjxmb3J0cmFuX2FycmF5X3ByaW50ZXJfaW1wbD4gcAorKyAgICAodHlwZSwgYWRk cmVzcywgKHN0cnVjdCB2YWx1ZSAqKSB2YWwsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucyk7Cisr ICBwLndhbGsgKCk7CisgfQorIAwKKyAKK0BAIC0yMzYsMTIgKzI0MCw3IEBAIGZfdmFsdWVfcHJp bnRfaW5uZXIgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQg cmVjdXJzZSwKKyAKKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CisgICAgICAgaWYgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpLT5jb2RlICgpICE9IFRZUEVfQ09ERV9DSEFSKQorLQl7CistCSAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCIpOworLQkgIGY3N19wcmludF9hcnJheSAodHlw ZSwgdmFsYWRkciwgMCwKKy0JCQkgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIHZhbCwgb3B0 aW9ucyk7CistCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOworLQl9CisrCWZvcnRy YW5fcHJpbnRfYXJyYXkgKHR5cGUsIGFkZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRp b25zKTsKKyAgICAgICBlbHNlCisgCXsKKyAJICBzdHJ1Y3QgdHlwZSAqY2hfdHlwZSA9IFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpOworZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5jIGIvZ2RiL2dk YnR5cGVzLmMKKy0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIvZ2RidHlwZXMuYworQEAg LTM5LDYgKzM5LDcgQEAKKyAjaW5jbHVkZSAiZHdhcmYyL2xvYy5oIgorICNpbmNsdWRlICJnZGJj b3JlLmgiCisgI2luY2x1ZGUgImZsb2F0Zm9ybWF0LmgiCisrI2luY2x1ZGUgImYtbGFuZy5oIgor ICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgLyogSW5pdGlhbGl6ZSBCQURORVNTIGNvbnN0YW50 cy4gICovCitAQCAtMjY5NSw3ICsyNjk2LDE2IEBAIHJlc29sdmVfZHluYW1pY190eXBlX2ludGVy bmFsIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgIHByb3AgPSBUWVBFX0RBVEFfTE9DQVRJT04gKHJl c29sdmVkX3R5cGUpOworICAgaWYgKHByb3AgIT0gTlVMTAorICAgICAgICYmIGR3YXJmMl9ldmFs dWF0ZV9wcm9wZXJ0eSAocHJvcCwgTlVMTCwgYWRkcl9zdGFjaywgJnZhbHVlKSkKKy0gICAgcHJv cC0+c2V0X2NvbnN0X3ZhbCAodmFsdWUpOworKyAgICB7CisrICAgICAgLyogU3RhcnQgb2YgRm9y dHJhbiBoYWNrLiAgU2VlIGNvbW1lbnQgaW4gZi1sYW5nLmggZm9yIHdoYXQgaXMgZ29pbmcKKysJ IG9uIGhlcmUuKi8KKysgICAgICBpZiAoY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0g bGFuZ3VhZ2VfZm9ydHJhbgorKwkgICYmIHJlc29sdmVkX3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9D T0RFX0FSUkFZKQorKwl2YWx1ZSA9IGZvcnRyYW5fYWRqdXN0X2R5bmFtaWNfYXJyYXlfYmFzZV9h ZGRyZXNzX2hhY2sgKHJlc29sdmVkX3R5cGUsCisrCQkJCQkJCQl2YWx1ZSk7CisrICAgICAgLyog RW5kIG9mIEZvcnRyYW4gaGFjay4gICovCisrICAgICAgcHJvcC0+c2V0X2NvbnN0X3ZhbCAodmFs dWUpOworKyAgICB9CisgCisgICByZXR1cm4gcmVzb2x2ZWRfdHlwZTsKKyB9CitAQCAtMzYwMCw5 ICszNjEwLDExIEBAIGlzX3NjYWxhcl90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IHR5cGUgKnQpCisg ICAgICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CisgICAgICAgc3RydWN0IHR5cGUg KmVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodCkpOworIAorLSAg ICAgIGdldF9kaXNjcmV0ZV9ib3VuZHMgKHQtPmluZGV4X3R5cGUgKCksICZsb3dfYm91bmQsICZo aWdoX2JvdW5kKTsKKy0KKy0gICAgICByZXR1cm4gaGlnaF9ib3VuZCA9PSBsb3dfYm91bmQgJiYg aXNfc2NhbGFyX3R5cGVfcmVjdXJzaXZlIChlbHRfdHlwZSk7CisrICAgICAgaWYgKGdldF9kaXNj cmV0ZV9ib3VuZHMgKHQtPmluZGV4X3R5cGUgKCksICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSkK KysJcmV0dXJuIChoaWdoX2JvdW5kID09IGxvd19ib3VuZAorKwkgICAgICAgICYmIGlzX3NjYWxh cl90eXBlX3JlY3Vyc2l2ZSAoZWx0X3R5cGUpKTsKKysgICAgICBlbHNlCisrCXJldHVybiAwOwor ICAgICB9CisgICAvKiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3RydWN0IHdpdGggb25lIGVsZW1l bnQ/ICAqLworICAgZWxzZSBpZiAodC0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSVUNUICYmIHQt Pm51bV9maWVsZHMgKCkgPT0gMSkKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJh eS1zbGljZXMtYmFkLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5leHAKK0BAIC0w LDAgKzEsNjkgQEAKKysjIENvcHlyaWdodCAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPiAuCisrCisrIyBUZXN0IGludmFs aWQgZWxlbWVudCBhbmQgc2xpY2UgYXJyYXkgYWNjZXNzZXMuCisrCisraWYge1tza2lwX2ZvcnRy YW5fdGVzdHNdfSB7IHJldHVybiAtMSB9CisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisr bG9hZF9saWIgZm9ydHJhbi5leHAKKysKKytpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKwkge2RlYnVnIGY5MH1dfSB7Cisr ICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0geworKyAgICB1 bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisr IyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBNZXNzYWdlIEJy ZWFrcG9pbnQiXQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaXJzdCBC cmVha3BvaW50Il0KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiU2Vjb25k IEJyZWFrcG9pbnQiXQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5h bCBCcmVha3BvaW50Il0KKysKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiRmlyc3QgQnJl YWtwb2ludCIKKysKKysjIEFjY2VzcyBub3QgeWV0IGFsbG9jYXRlZCBhcnJheS4KKytnZGJfdGVz dCAicHJpbnQgb3RoZXIiICIgPSA8bm90IGFsbG9jYXRlZD4iCisrZ2RiX3Rlc3QgInByaW50IG90 aGVyKDA6NCwyOjMpIiAiYXJyYXkgbm90IGFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgb3Ro ZXIoMSwxKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFwodmVjdG9yIG5vdCBhbGxvY2F0ZWRc XCkiCisrCisrIyBBY2Nlc3Mgbm90IHlldCBhc3NvY2lhdGVkIHBvaW50ZXIuCisrZ2RiX3Rlc3Qg InByaW50IHBvaW50ZXIyZCIgIiA9IDxub3QgYXNzb2NpYXRlZD4iCisrZ2RiX3Rlc3QgInByaW50 IHBvaW50ZXIyZCgxOjIsMToyKSIgImFycmF5IG5vdCBhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJw cmludCBwb2ludGVyMmQoMSwxKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFwodmVjdG9yIG5v dCBhc3NvY2lhdGVkXFwpIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJTZWNvbmQg QnJlYWtwb2ludCIKKysKKysjIEFjY2Vzc2luZyBqdXN0IG91dHNpZGUgdGhlIGFycmF5cy4KKytm b3JlYWNoIG5hbWUge2FycmF5IHBvaW50ZXIyZCBvdGhlcn0geworKyAgICBnZGJfdGVzdCAicHJp bnQgJG5hbWUgKDA6LDopIiAiYXJyYXkgc3Vic2NyaXB0IG91dCBvZiBib3VuZHMiCisrICAgIGdk Yl90ZXN0ICJwcmludCAkbmFtZSAoOjExLDopIiAiYXJyYXkgc3Vic2NyaXB0IG91dCBvZiBib3Vu ZHMiCisrICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSAoOiwwOikiICJhcnJheSBzdWJzY3JpcHQg b3V0IG9mIGJvdW5kcyIKKysgICAgZ2RiX3Rlc3QgInByaW50ICRuYW1lICg6LDoxMSkiICJhcnJh eSBzdWJzY3JpcHQgb3V0IG9mIGJvdW5kcyIKKysKKysgICAgZ2RiX3Rlc3QgInByaW50ICRuYW1l ICgwLDopIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIKKysgICAgZ2RiX3Rlc3QgInByaW50ICRu YW1lICgxMSw6KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiCisrICAgIGdkYl90ZXN0ICJwcmlu dCAkbmFtZSAoOiwwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiCisrICAgIGdkYl90ZXN0ICJw cmludCAkbmFtZSAoOiwxMSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IgorK30KKysKKysjIFN0 cmlkZSBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uLgorK2dkYl90ZXN0ICJwcmludCBhcnJheSAoMTox MDotMSw6KSIgImluY29ycmVjdCBzdHJpZGUgYW5kIGJvdW5kYXJ5IGNvbWJpbmF0aW9uIgorK2dk Yl90ZXN0ICJwcmludCBhcnJheSAoOiwxOjEwOi0xKSIgImluY29ycmVjdCBzdHJpZGUgYW5kIGJv dW5kYXJ5IGNvbWJpbmF0aW9uIgorK2dkYl90ZXN0ICJwcmludCBhcnJheSAoMTA6MToxLDopIiAi aW5jb3JyZWN0IHN0cmlkZSBhbmQgYm91bmRhcnkgY29tYmluYXRpb24iCisrZ2RiX3Rlc3QgInBy aW50IGFycmF5ICg6LDEwOjE6MSkiICJpbmNvcnJlY3Qgc3RyaWRlIGFuZCBib3VuZGFyeSBjb21i aW5hdGlvbiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNs aWNlcy1iYWQuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtYmFk LmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5mOTAKK0BAIC0wLDAgKzEsNDIgQEAK KyshIENvcHlyaWdodCAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKysh IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisr ISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIQorKyEgU3RhcnQgb2YgdGVzdCBwcm9n cmFtLgorKyEKKytwcm9ncmFtIHRlc3QKKysKKysgICEgRGVjbGFyZSB2YXJpYWJsZXMgdXNlZCBp biB0aGlzIHRlc3QuCisrICBpbnRlZ2VyLCBkaW1lbnNpb24gKDE6MTAsMToxMCkgOjogYXJyYXkK KysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IG90aGVyICg6LCA6KQorKyAgaW50ZWdlciwgZGlt ZW5zaW9uKDosOiksIHBvaW50ZXIgOjogcG9pbnRlcjJkID0+IG51bGwoKQorKyAgaW50ZWdlciwg ZGltZW5zaW9uKDE6MTAsMToxMCksIHRhcmdldCA6OiB0YXJyYXkKKysKKysgIHByaW50ICosICIi ICEgRmlyc3QgQnJlYWtwb2ludC4KKysKKysgICEgQWxsb2NhdGUgb3IgYXNzb2NpYXRlIGFueSB2 YXJpYWJsZXMgYXMgbmVlZGVkLgorKyAgYWxsb2NhdGUgKG90aGVyICgxOjEwLCAxOjEwKSkKKysg IHBvaW50ZXIyZCA9PiB0YXJyYXkKKysgIGFycmF5ID0gMAorKworKyAgcHJpbnQgKiwgIiIgISBT ZWNvbmQgQnJlYWtwb2ludC4KKysKKysgICEgQWxsIGRvbmUuICBEZWFsbG9jYXRlLgorKyAgZGVh bGxvY2F0ZSAob3RoZXIpCisrCisrICAhIEdEQiBjYXRjaGVzIHRoaXMgZmluYWwgYnJlYWtwb2lu dCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSB0ZXN0LgorKyAgcHJpbnQgKiwgIiIgISBGaW5h bCBCcmVha3BvaW50LgorKworK2VuZCBwcm9ncmFtIHRlc3QKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZXhwCituZXcgZmlsZSBt b2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5leHAKK0BAIC0wLDAgKzEsMTExIEBACisrIyBDb3B5 cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4gLgorKworKyMgQ3JlYXRlIGEgc2xpY2Ugb2YgYW4gYXJyYXksIHRo ZW4gdGFrZSBhIHNsaWNlIG9mIHRoYXQgc2xpY2UuCisrCisraWYge1tza2lwX2ZvcnRyYW5fdGVz dHNdfSB7IHJldHVybiAtMSB9CisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisrbG9hZF9s aWIgZm9ydHJhbi5leHAKKysKKytpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0u ZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKwkge2RlYnVnIGY5MH1dfSB7CisrICAgIHJl dHVybiAtMQorK30KKysKKytpZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0geworKyAgICB1bnRlc3Rl ZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBNZXNzYWdlIEJyZWFrcG9p bnQiXQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJTdG9wIEhlcmUiXQor K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0K KysKKysjIFdlJ3JlIGdvaW5nIHRvIHByaW50IHNvbWUgcmVhc29uYWJseSBsYXJnZSBhcnJheXMu CisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgcHJpbnQgZWxlbWVudHMgdW5saW1pdGVkIgorKwor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJTdG9wIEhlcmUiCisrCisrIyBQcmludCBhIHNs aWNlLCBjYXB0dXJlIHRoZSBjb252ZW5pZW5jZSB2YXJpYWJsZSBuYW1lIGNyZWF0ZWQuCisrc2V0 IGNtZCAicHJpbnQgYXJyYXkgKDE6MTA6MiwgMToxMDoyKSIKKytnZGJfdGVzdF9tdWx0aXBsZSAk Y21kICRjbWQgeworKyAgICAtcmUgIlxyXG5cXFwkKFxcZCspID0gLipcclxuJGdkYl9wcm9tcHQg JCIgeworKwlzZXQgdmFybmFtZSAiXCQkZXhwZWN0X291dCgxLHN0cmluZykiCisrICAgIH0KKyt9 CisrCisrIyBOb3cgY2hlY2sgdGhhdCB3ZSBjYW4gY29ycmVjdGx5IGV4dHJhY3QgYWxsIHRoZSBl bGVtZW50cyBmcm9tIHRoaXMKKysjIHNsaWNlLgorK2ZvciB7IHNldCBqIDEgfSB7ICRqIDwgNiB9 IHsgaW5jciBqIH0geworKyAgICBmb3IgeyBzZXQgaSAxIH0geyAkaSA8IDYgfSB7IGluY3IgaSB9 IHsKKysJc2V0IHZhbCBbZXhwciAoKCgkaSAtIDEpICogMikgKyAoKCRqIC0gMSkgKiAyMCkpICsg MV0KKysJZ2RiX3Rlc3QgInByaW50ICR7dmFybmFtZX0gKCRpLCRqKSIgIiA9ICR2YWwiCisrICAg IH0KKyt9CisrCisrIyBOb3cgdGFrZSBhIHNsaWNlIG9mIHRoZSBzbGljZS4KKytnZGJfdGVzdCAi cHJpbnQgJHt2YXJuYW1lfSAoMzo1LCAzOjUpIiBcCisrICAgICIgPSBcXChcXCg0NSwgNDcsIDQ5 XFwpIFxcKDY1LCA2NywgNjlcXCkgXFwoODUsIDg3LCA4OVxcKVxcKSIKKysKKysjIE5vdyB0YWtl IGEgZGlmZmVyZW50IHNsaWNlIG9mIGEgc2xpY2UuCisrc2V0IGNtZCAicHJpbnQgJHt2YXJuYW1l fSAoMTo1OjIsIDE6NToyKSIKKytnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRjbWQgeworKyAgICAt cmUgIlxyXG5cXFwkKFxcZCspID0gXFwoXFwoMSwgNSwgOVxcKSBcXCg0MSwgNDUsIDQ5XFwpIFxc KDgxLCA4NSwgODlcXClcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXQgdmFybmFtZSAiXCQk ZXhwZWN0X291dCgxLHN0cmluZykiCisrCXBhc3MgJGdkYl90ZXN0X25hbWUKKysgICAgfQorK30K KysKKysjIE5vdyB0YWtlIGEgc2xpY2UgZnJvbSB0aGUgc2xpY2UsIG9mIGEgc2xpY2UhCisrc2V0 IGNtZCAicHJpbnQgJHt2YXJuYW1lfSAoMTozOjIsIDE6MzoyKSIKKytnZGJfdGVzdF9tdWx0aXBs ZSAkY21kICRjbWQgeworKyAgICAtcmUgIlxyXG5cXFwkKFxcZCspID0gXFwoXFwoMSwgOVxcKSBc XCg4MSwgODlcXClcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXQgdmFybmFtZSAiXCQkZXhw ZWN0X291dCgxLHN0cmluZykiCisrCXBhc3MgJGdkYl90ZXN0X25hbWUKKysgICAgfQorK30KKysK KysjIEFuZCBhZ2FpbiEKKytzZXQgY21kICJwcmludCAke3Zhcm5hbWV9ICgxOjI6MiwgMToyOjIp IgorK2dkYl90ZXN0X211bHRpcGxlICRjbWQgJGNtZCB7CisrICAgIC1yZSAiXHJcblxcXCQoXFxk KykgPSBcXChcXCgxXFwpXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJc2V0IHZhcm5hbWUgIlwk JGV4cGVjdF9vdXQoMSxzdHJpbmcpIgorKwlwYXNzICRnZGJfdGVzdF9uYW1lCisrICAgIH0KKyt9 CisrCisrIyBUZXN0IHRha2luZyBhIHNsaWNlIHdpdGggc3RyaWRlIG9mIGEgc3RyaW5nLiAgVGhp cyBpc24ndCBhY3R1YWxseQorKyMgc3VwcG9ydGVkIHdpdGhpbiBnZm9ydHJhbiAoYXQgbGVhc3Qp LCBidXQgbmF0dXJhbGx5IGRyb3BzIG91dCBvZiBob3cKKysjIEdEQiBtb2RlbHMgYXJyYXlzIGFu ZCBzdHJpbmdzIGluIGEgc2ltaWxhciB3YXksIHNvIHdlIG1heSBhcyB3ZWxsCisrIyB0ZXN0IHRo YXQgdGhpcyBpcyBzdGlsbCB3b3JraW5nLgorK2dkYl90ZXN0ICJwcmludCBzdHIgKDE6MjY6Miki ICIgPSAnYWNlZ2lrbW9xc3V3eSciCisrZ2RiX3Rlc3QgInByaW50IHN0ciAoMjY6MTotMSkiICIg PSAnenl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmEnIgorK2dkYl90ZXN0ICJwcmludCBzdHIgKDI2 OjE6LTIpIiAiID0gJ3p4dnRycG5samhmZGInIgorKworKyMgTm93IHRlc3QgdGhlIG1lbW9yeSBy ZXF1aXJlbWVudHMgb2YgdGFraW5nIGEgc2xpY2UgZnJvbSBhbiBhcnJheS4KKysjIFRoZSBpZGVh IGlzIHRoYXQgd2Ugc2hvdWxkbid0IHJlcXVpcmUgbW9yZSBtZW1vcnkgdG8gZXh0cmFjdCBhIHNs aWNlCisrIyB0aGFuIHRoZSBzaXplIG9mIHRoZSBzbGljZS4KKysjCisrIyBUaGlzIHdpbGwgb25s eSB3b3JrIGlmIGFycmF5IHJlcGFja2luZyBpcyB0dXJuZWQgb24sIG90aGVyd2lzZSBHREIKKysj IHdpbGwgY3JlYXRlIHRoZSBzbGljZSBieSBnZW5lcmF0aW5nIGEgbmV3IHR5cGUgdGhhdCBzaXRz IG92ZXIgdGhlCisrIyBleGlzdGluZyB2YWx1ZSBpbiBtZW1vcnkuCisrZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzIG9uIgorK3NldCBlbGVtZW50X3Np emUgW2dldF9pbnRlZ2VyX3ZhbHVlb2YgInNpemVvZiAoYXJyYXkgKDEsMSkpIiAidW5rbm93biJd Cisrc2V0IHNsaWNlX3NpemUgW2V4cHIgJGVsZW1lbnRfc2l6ZSAqIDRdCisrZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJzZXQgbWF4LXZhbHVlLXNpemUgJHNsaWNlX3NpemUiCisrZ2RiX3Rlc3QgInByaW50 IGFycmF5ICgxOjIsIDE6MikiICI9IFxcKFxcKDEsIDJcXCkgXFwoMTEsIDEyXFwpXFwpIgorK2dk Yl90ZXN0ICJwcmludCBhcnJheSAoMjozLCAyOjMpIiAiPSBcXChcXCgxMiwgMTNcXCkgXFwoMjIs IDIzXFwpXFwpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheSAoMjo1OjIsIDI6NToyKSIgIj0gXFwo XFwoMTIsIDE0XFwpIFxcKDMyLCAzNFxcKVxcKSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmY5MCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZjkwCituZXcgZmlsZSBtb2RlIDEw MDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJh eS1zbGljZXMtc3ViLXNsaWNlcy5mOTAKK0BAIC0wLDAgKzEsOTYgQEAKKyshIENvcHlyaWdodCAy MDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrCisrIQorKyEgU3RhcnQgb2YgdGVzdCBwcm9ncmFtLgorKyEKKytwcm9n cmFtIHRlc3QKKysgIGludGVnZXIsIGRpbWVuc2lvbiAoMToxMCwxOjExKSA6OiBhcnJheQorKyAg Y2hhcmFjdGVyIChsZW49MjYpIDo6IHN0ciA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIK KysKKysgIGNhbGwgZmlsbF9hcnJheV8yZCAoYXJyYXkpCisrCisrICAhIEdEQiBjYXRjaGVzIHRo aXMgZmluYWwgYnJlYWtwb2ludCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSB0ZXN0LgorKyAg cHJpbnQgKiwgIiIgISBTdG9wIEhlcmUKKysKKysgIHByaW50ICosIGFycmF5CisrICBwcmludCAq LCBzdHIKKysKKysgICEgR0RCIGNhdGNoZXMgdGhpcyBmaW5hbCBicmVha3BvaW50IHRvIGluZGlj YXRlIHRoZSBlbmQgb2YgdGhlIHRlc3QuCisrICBwcmludCAqLCAiIiAhIEZpbmFsIEJyZWFrcG9p bnQuCisrCisrY29udGFpbnMKKysKKysgICEgRmlsbCBhIDFEIGFycmF5IHdpdGggYSB1bmlxdWUg cG9zaXRpdmUgaW50ZWdlciBpbiBlYWNoIGVsZW1lbnQuCisrICBzdWJyb3V0aW5lIGZpbGxfYXJy YXlfMWQgKGFycmF5KQorKyAgICBpbnRlZ2VyLCBkaW1lbnNpb24gKDopIDo6IGFycmF5CisrICAg IGludGVnZXIgOjogY291bnRlcgorKworKyAgICBjb3VudGVyID0gMQorKyAgICBkbyBqPUxCT1VO RCAoYXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwgMQorKyAgICAgICBhcnJheSAoaikgPSBj b3VudGVyCisrICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMQorKyAgICBlbmQgZG8KKysgIGVu ZCBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfMWQKKysKKysgICEgRmlsbCBhIDJEIGFycmF5IHdpdGgg YSB1bmlxdWUgcG9zaXRpdmUgaW50ZWdlciBpbiBlYWNoIGVsZW1lbnQuCisrICBzdWJyb3V0aW5l IGZpbGxfYXJyYXlfMmQgKGFycmF5KQorKyAgICBpbnRlZ2VyLCBkaW1lbnNpb24gKDosOikgOjog YXJyYXkKKysgICAgaW50ZWdlciA6OiBjb3VudGVyCisrCisrICAgIGNvdW50ZXIgPSAxCisrICAg IGRvIGk9TEJPVU5EIChhcnJheSwgMiksIFVCT1VORCAoYXJyYXksIDIpLCAxCisrICAgICAgIGRv IGo9TEJPVU5EIChhcnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCisrICAgICAgICAgIGFy cmF5IChqLGkpID0gY291bnRlcgorKyAgICAgICAgICBjb3VudGVyID0gY291bnRlciArIDEKKysg ICAgICAgZW5kIGRvCisrICAgIGVuZCBkbworKyAgZW5kIHN1YnJvdXRpbmUgZmlsbF9hcnJheV8y ZAorKworKyAgISBGaWxsIGEgM0QgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3NpdGl2ZSBpbnRlZ2Vy IGluIGVhY2ggZWxlbWVudC4KKysgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV8zZCAoYXJyYXkpCisr ICAgIGludGVnZXIsIGRpbWVuc2lvbiAoOiw6LDopIDo6IGFycmF5CisrICAgIGludGVnZXIgOjog Y291bnRlcgorKworKyAgICBjb3VudGVyID0gMQorKyAgICBkbyBpPUxCT1VORCAoYXJyYXksIDMp LCBVQk9VTkQgKGFycmF5LCAzKSwgMQorKyAgICAgICBkbyBqPUxCT1VORCAoYXJyYXksIDIpLCBV Qk9VTkQgKGFycmF5LCAyKSwgMQorKyAgICAgICAgICBkbyBrPUxCT1VORCAoYXJyYXksIDEpLCBV Qk9VTkQgKGFycmF5LCAxKSwgMQorKyAgICAgICAgICAgICBhcnJheSAoaywgaixpKSA9IGNvdW50 ZXIKKysgICAgICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxCisrICAgICAgICAgIGVuZCBk bworKyAgICAgICBlbmQgZG8KKysgICAgZW5kIGRvCisrICBlbmQgc3Vicm91dGluZSBmaWxsX2Fy cmF5XzNkCisrCisrICAhIEZpbGwgYSA0RCBhcnJheSB3aXRoIGEgdW5pcXVlIHBvc2l0aXZlIGlu dGVnZXIgaW4gZWFjaCBlbGVtZW50LgorKyAgc3Vicm91dGluZSBmaWxsX2FycmF5XzRkIChhcnJh eSkKKysgICAgaW50ZWdlciwgZGltZW5zaW9uICg6LDosOiw6KSA6OiBhcnJheQorKyAgICBpbnRl Z2VyIDo6IGNvdW50ZXIKKysKKysgICAgY291bnRlciA9IDEKKysgICAgZG8gaT1MQk9VTkQgKGFy cmF5LCA0KSwgVUJPVU5EIChhcnJheSwgNCksIDEKKysgICAgICAgZG8gaj1MQk9VTkQgKGFycmF5 LCAzKSwgVUJPVU5EIChhcnJheSwgMyksIDEKKysgICAgICAgICAgZG8gaz1MQk9VTkQgKGFycmF5 LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKKysgICAgICAgICAgICAgZG8gbD1MQk9VTkQgKGFy cmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKysgICAgICAgICAgICAgICAgYXJyYXkgKGws IGssIGosaSkgPSBjb3VudGVyCisrICAgICAgICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsg MQorKyAgICAgICAgICAgICBlbmQgZG8KKysgICAgICAgICAgZW5kIGRvCisrICAgICAgIGVuZCBk bworKyAgICBlbmQgZG8KKysgICAgcHJpbnQgKiwgIiIKKysgIGVuZCBzdWJyb3V0aW5lIGZpbGxf YXJyYXlfNGQKKytlbmQgcHJvZ3JhbSB0ZXN0CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9h cnJheS1zbGljZXMuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNs aWNlcy5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4 cAorQEAgLTE4LDYgKzE4LDIxIEBACisgIyB0aGUgc3Vicm91dGluZS4gIFRoaXMgc2hvdWxkIGV4 ZXJjaXNlIEdEQidzIGFiaWxpdHkgdG8gaGFuZGxlCisgIyBkaWZmZXJlbnQgc3RyaWRlcyBmb3Ig dGhlIGRpZmZlcmVudCBkaW1lbnNpb25zLgorIAorKyMgVGVzdGluZyBHREIncyBhYmlsaXR5IHRv IHByaW50IGFycmF5IChhbmQgc3RyaW5nKSBzbGljZXMsIGluY2x1ZGluZworKyMgc2xpY2VzIHRo YXQgbWFrZSB1c2Ugb2YgYXJyYXkgc3RyaWRlcy4KKysjCisrIyBJbiB0aGUgRm9ydHJhbiBjb2Rl IHZhcmlvdXMgYXJyYXlzIG9mIGRpZmZlcmVudCByYW5rcyBhcmUgZmlsbGVkCisrIyB3aXRoIGRh dGEsIGFuZCBzbGljZXMgYXJlIHBhc3NlZCB0byBhIHNlcmllcyBvZiBzaG93IGZ1bmN0aW9ucy4K KysjCisrIyBJbiB0aGlzIHRlc3Qgc2NyaXB0IHdlIGJyZWFrIGluIGVhY2ggb2YgdGhlIHNob3cg ZnVuY3Rpb25zLCBwcmludAorKyMgdGhlIGFycmF5IHNsaWNlIHRoYXQgd2FzIHBhc3NlZCBpbiwg YW5kIHRoZW4gbW92ZSB1cCB0aGUgc3RhY2sgdG8KKysjIHRoZSBwYXJlbnQgZnJhbWUgYW5kIGNo ZWNrIEdEQiBjYW4gbWFudWFsbHkgZXh0cmFjdCB0aGUgc2FtZSBzbGljZS4KKysjCisrIyBUaGlz IHRlc3QgYWxzbyBjaGVja3MgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgc2xpY2UgcGFzc2Vk IHRvIHRoZQorKyMgZnVuY3Rpb24gKHNvIGFzIGV4dHJhY3RlZCBhbmQgZGVzY3JpYmVkIGJ5IHRo ZSBjb21waWxlciBhbmQgdGhlCisrIyBkZWJ1ZyBpbmZvcm1hdGlvbikgbWF0Y2hlcyB0aGUgc2l6 ZSBvZiB0aGUgc2xpY2UgbWFudWFsbHkgZXh0cmFjdGVkCisrIyBieSBHREIuCisrCisgaWYge1tz a2lwX2ZvcnRyYW5fdGVzdHNdfSB7IHJldHVybiAtMSB9CisgCisgc3RhbmRhcmRfdGVzdGZpbGUg Ii5mOTAiCitAQCAtMjgsNTcgKzQzLDIyNCBAQCBpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0 ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorICAgICByZXR1cm4gLTEKKyB9 CisgCistaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKKy0gICAgdW50ZXN0ZWQgImNvdWxkIG5v dCBydW4gdG8gbWFpbiIKKy0gICAgcmV0dXJuIC0xCisrIyBUYWtlcyB0aGUgbmFtZSBvZiBhbiBh cnJheSBzbGljZSBhcyB1c2VkIGluIHRoZSB0ZXN0IHNvdXJjZSwgYW5kIGV4dHJhY3RzCisrIyB0 aGUgYmFzZSBhcnJheSBuYW1lLiAgRm9yIGV4YW1wbGU6ICdhcnJheSAoMSwyKScgYmVjb21lcyAn YXJyYXknLgorK3Byb2MgYXJyYXlfc2xpY2VfdG9fdmFyIHsgc2xpY2Vfc3RyIH0geworKyAgICBy ZWdleHAgIl4oPzpcXHMqXFwoKSooXFteKCBcdFxdKykiICRzbGljZV9zdHIgbWF0Y2h2YXIgdmFy bmFtZQorKyAgICByZXR1cm4gJHZhcm5hbWUKKyB9CisgCistZ2RiX2JyZWFrcG9pbnQgInNob3ci CistZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkZpbmFsIEJyZWFrcG9pbnQi XQorLQorLXNldCBhcnJheV9jb250ZW50cyBcCistICAgIFtsaXN0IFwKKy0JICIgPSBcXChcXCgx LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcKSBcXCgxMSwgMTIsIDEzLCAxNCwgMTUsIDE2 LCAxNywgMTgsIDE5LCAyMFxcKSBcXCgyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5 LCAzMFxcKSBcXCgzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MFxcKSBcXCg0 MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MFxcKSBcXCg1MSwgNTIsIDUzLCA1 NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MFxcKSBcXCg2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2 NywgNjgsIDY5LCA3MFxcKSBcXCg3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4 MFxcKSBcXCg4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MFxcKSBcXCg5MSwg OTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDBcXClcXCkiIFwKKy0JICIgPSBcXChc XCgxLCAyLCAzLCA0LCA1XFwpIFxcKDExLCAxMiwgMTMsIDE0LCAxNVxcKSBcXCgyMSwgMjIsIDIz LCAyNCwgMjVcXCkgXFwoMzEsIDMyLCAzMywgMzQsIDM1XFwpIFxcKDQxLCA0MiwgNDMsIDQ0LCA0 NVxcKVxcKSIgXAorLQkgIiA9IFxcKFxcKDEsIDMsIDUsIDcsIDlcXCkgXFwoMjEsIDIzLCAyNSwg MjcsIDI5XFwpIFxcKDQxLCA0MywgNDUsIDQ3LCA0OVxcKSBcXCg2MSwgNjMsIDY1LCA2NywgNjlc XCkgXFwoODEsIDgzLCA4NSwgODcsIDg5XFwpXFwpIiBcCistCSAiID0gXFwoXFwoMSwgNCwgNywg MTBcXCkgXFwoMjEsIDI0LCAyNywgMzBcXCkgXFwoNDEsIDQ0LCA0NywgNTBcXCkgXFwoNjEsIDY0 LCA2NywgNzBcXCkgXFwoODEsIDg0LCA4NywgOTBcXClcXCkiIFwKKy0JICIgPSBcXChcXCgxLCA1 LCA5XFwpIFxcKDMxLCAzNSwgMzlcXCkgXFwoNjEsIDY1LCA2OVxcKSBcXCg5MSwgOTUsIDk5XFwp XFwpIiBcCistCSAiID0gXFwoXFwoLTI2LCAtMjUsIC0yNCwgLTIzLCAtMjIsIC0yMSwgLTIwLCAt MTksIC0xOCwgLTE3XFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0xNiwgLTE1LCAtMTQsIC0xMywgLTEy LCAtMTEsIC0xMFxcKSBcXCgtMTIsIC0xMSwgLTEwLCAtOSwgLTgsIC03LCAtNiwgLTUsIC00LCAt M1xcKSBcXCgtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIsIDMsIDRcXCkgXFwoMiwgMywgNCwg NSwgNiwgNywgOCwgOSwgMTAsIDExXFwpIFxcKDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2 LCAxNywgMThcXCkgXFwoMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVcXCkg XFwoMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzJcXCkgXFwoMzAsIDMxLCAz MiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzlcXCkgXFwoMzcsIDM4LCAzOSwgNDAsIDQxLCA0 MiwgNDMsIDQ0LCA0NSwgNDZcXClcXCkiIFwKKy0JICIgPSBcXChcXCgtMjYsIC0yNSwgLTI0LCAt MjMsIC0yMiwgLTIxXFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0xNiwgLTE1LCAtMTRcXCkgXFwoLTEy LCAtMTEsIC0xMCwgLTksIC04LCAtN1xcKVxcKSIgXAorLQkgIiA9IFxcKFxcKC0yNiwgLTI0LCAt MjIsIC0yMCwgLTE4XFwpIFxcKC01LCAtMywgLTEsIDEsIDNcXCkgXFwoMTYsIDE4LCAyMCwgMjIs IDI0XFwpIFxcKDM3LCAzOSwgNDEsIDQzLCA0NVxcKVxcKSIgXQorLQorLXNldCBtZXNzYWdlX3N0 cmluZ3MgXAorLSAgICBbbGlzdCBcCistCSAiID0gJ2FycmF5JyIgXAorLQkgIiA9ICdhcnJheSBc XCgxOjUsMTo1XFwpJyIgXAorLQkgIiA9ICdhcnJheSBcXCgxOjEwOjIsMToxMDoyXFwpJyIgXAor LQkgIiA9ICdhcnJheSBcXCgxOjEwOjMsMToxMDoyXFwpJyIgXAorLQkgIiA9ICdhcnJheSBcXCgx OjEwOjUsMToxMDozXFwpJyIgXQorLQorLXNldCBpIDAKKy1mb3JlYWNoIHJlc3VsdCAkYXJyYXlf Y29udGVudHMgbXNnICRtZXNzYWdlX3N0cmluZ3MgeworLSAgICBpbmNyIGkKKy0gICAgd2l0aF90 ZXN0X3ByZWZpeCAidGVzdCAkaSIgeworLQlnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic2hv dyIKKy0JZ2RiX3Rlc3QgInAgYXJyYXkiICRyZXN1bHQKKy0JZ2RiX3Rlc3QgInAgbWVzc2FnZSIg IiRtc2ciCisrcHJvYyBydW5fdGVzdCB7IHJlcGFjayB9IHsKKysgICAgZ2xvYmFsIGJpbmZpbGUg Z2RiX3Byb21wdAorKworKyAgICBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KKysKKysgICAgaWYg IVtmb3J0cmFuX3J1bnRvX21haW5dIHsKKysJdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFp biIKKysJcmV0dXJuIC0xCisgICAgIH0KKy19CisgCistZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImNvbnRpbnVlIHRvIEZpbmFsIEJyZWFrcG9pbnQiCisrICAgIGdkYl90ZXN0X25vX291dHB1 dCAic2V0IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyAkcmVwYWNrIgorKworKyAgICAjIGdk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5IE1lc3NhZ2UgQnJlYWtw b2ludCJdCisrICAgIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5 IEVsZW1lbnQiXQorKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlz cGxheSBTdHJpbmciXQorKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi RGlzcGxheSBBcnJheSBTbGljZSAxRCJdCisrICAgIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJEaXNwbGF5IEFycmF5IFNsaWNlIDJEIl0KKysgICAgZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgQXJyYXkgU2xpY2UgM0QiXQorKyAgICBnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBBcnJheSBTbGljZSA0RCJd CisrICAgIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVha3Bv aW50Il0KKysKKysgICAgIyBXZSdyZSBnb2luZyB0byBwcmludCBzb21lIHJlYXNvbmFibHkgbGFy Z2UgYXJyYXlzLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBwcmludCBlbGVtZW50cyB1 bmxpbWl0ZWQiCisrCisrICAgIHNldCBmb3VuZF9maW5hbF9icmVha3BvaW50IGZhbHNlCisrCisr ICAgICMgV2UgcGxhY2UgYSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgY2FuIGJl IHJ1biwganVzdCBpbgorKyAgICAjIGNhc2Ugc29tZXRoaW5nIGdvZXMgd3JvbmcsIGFuZCBHREIg Z2V0cyBzdHVjayBpbiBhbiBsb29wIGhlcmUuCisrICAgIHNldCB0ZXN0X2NvdW50IDAKKysgICAg d2hpbGUgeyAkdGVzdF9jb3VudCA8IDUwMCB9IHsKKysJd2l0aF90ZXN0X3ByZWZpeCAidGVzdCAk dGVzdF9jb3VudCIgeworKwkgICAgaW5jciB0ZXN0X2NvdW50CisrCisrCSAgICBzZXQgZm91bmRf ZmluYWxfYnJlYWtwb2ludCBmYWxzZQorKwkgICAgc2V0IGV4cGVjdGVkX3Jlc3VsdCAiIgorKwkg ICAgc2V0IGZ1bmNfbmFtZSAiIgorKwkgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAi Y29udGludWUiIHsKKysJCS1yZSAiLipHREIgPSAoXFteXHJcblxdKylcclxuIiB7CisrCQkgICAg c2V0IGV4cGVjdGVkX3Jlc3VsdCAkZXhwZWN0X291dCgxLHN0cmluZykKKysJCSAgICBleHBfY29u dGludWUKKysJCX0KKysJCS1yZSAiISBEaXNwbGF5IEVsZW1lbnQiIHsKKysJCSAgICBzZXQgZnVu Y19uYW1lICJzaG93X2VsZW0iCisrCQkgICAgZXhwX2NvbnRpbnVlCisrCQl9CisrCQktcmUgIiEg RGlzcGxheSBTdHJpbmciIHsKKysJCSAgICBzZXQgZnVuY19uYW1lICJzaG93X3N0ciIKKysJCSAg ICBleHBfY29udGludWUKKysJCX0KKysJCS1yZSAiISBEaXNwbGF5IEFycmF5IFNsaWNlICguKUQi IHsKKysJCSAgICBzZXQgZnVuY19uYW1lICJzaG93XyRleHBlY3Rfb3V0KDEsc3RyaW5nKWQiCisr CQkgICAgZXhwX2NvbnRpbnVlCisrCQl9CisrCQktcmUgIiEgRmluYWwgQnJlYWtwb2ludCIgewor KwkJICAgIHNldCBmb3VuZF9maW5hbF9icmVha3BvaW50IHRydWUKKysJCSAgICBleHBfY29udGlu dWUKKysJCX0KKysJCS1yZSAiJGdkYl9wcm9tcHQgJCIgeworKwkJICAgICMgV2UncmUgZG9uZS4K KysJCX0KKysJICAgIH0KKyAKKy0jIE5leHQgdGVzdCB0aGF0IGFza2luZyBmb3IgYW4gYXJyYXkg d2l0aCBzdHJpZGUgYXQgdGhlIENMSSBnaXZlcyBhbgorLSMgZXJyb3IuCistY2xlYW5fcmVzdGFy dCAke3Rlc3RmaWxlfQorKwkgICAgaWYgKCRmb3VuZF9maW5hbF9icmVha3BvaW50KSB7CisrCQli cmVhaworKwkgICAgfQorIAorLWlmICFbZm9ydHJhbl9ydW50b19tYWluXSB0aGVuIHsKKy0gICAg cGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKKy0gICAgY29udGludWUKKysJICAgICMgV2Ug d2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgbGluZSBpbiB0aGUgcHJldmlvdXMgZnJhbWUgdGhh dAorKwkgICAgIyBjYWxsZWQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uICBJIGNvdWxkbid0IGZpbmQg YSBiZXR0ZXIgd2F5IG9mCisrCSAgICAjIGRvaW5nIHRoaXMgdGhhbiAndXAnLCB3aGljaCB3aWxs IHByaW50IHRoZSBsaW5lLCB0aGVuICdkb3duJworKwkgICAgIyBhZ2Fpbi4KKysJICAgICMKKysJ ICAgICMgSSBkb24ndCB3YW50IHRvIGZpbGwgdGhlIGxvZyB3aXRoIHBhc3NlcyBmb3IgdGhlc2Ug dXAvZG93bgorKwkgICAgIyBjb21tYW5kcywgc28gd2UgZG9uJ3QgcmVwb3J0IGFueS4gIElmIHNv bWV0aGluZyBnb2VzIHdyb25nIHRoZW4gd2UKKysJICAgICMgc2hvdWxkIGdldCBhIGZhaWwgZnJv bSBnZGJfdGVzdF9tdWx0aXBsZS4KKysJICAgIHNldCBhcnJheV9zbGljZV9uYW1lICIiCisrCSAg ICBzZXQgdW5pcXVlX2lkICIiCisrCSAgICBhcnJheSB1bnNldCByZXBsYWNlbWVudF92YXJzCisr CSAgICBhcnJheSBzZXQgcmVwbGFjZW1lbnRfdmFycyB7fQorKwkgICAgZ2RiX3Rlc3RfbXVsdGlw bGUgInVwIiAidXAiIHsKKysJCS1yZSAiXHJcblxbMC05XF0rXFsgXHRcXStjYWxsICR7ZnVuY19u YW1lfSBcXCgoXFteXHJcblxdKylcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKwkJICAgIHNldCBh cnJheV9zbGljZV9uYW1lICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKwkJfQorKwkJLXJlICJcclxu XFswLTlcXStcWyBcdFxdK2NhbGwgJHtmdW5jX25hbWV9IFxcKChcW15cclxuXF0rKVxcKVxbIFx0 XF0rISBWQVJTPShcW14gXHRcclxuXF0rKVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCQkgICAgc2V0 IGFycmF5X3NsaWNlX25hbWUgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCisrCQkgICAgc2V0IHVuaXF1 ZV9pZCAkZXhwZWN0X291dCgyLHN0cmluZykKKysJCX0KKysJICAgIH0KKysJICAgIGlmIHskdW5p cXVlX2lkICE9ICIifSB7CisrCQlzZXQgc3RyICIiCisrCQlmb3JlYWNoIHYgW3NwbGl0ICR1bmlx dWVfaWQgLF0geworKwkJICAgIHNldCB2YWwgW2dldF9pbnRlZ2VyX3ZhbHVlb2YgIiR7dn0iICI/ PyJcCisrCQkJCSAiZ2V0IHZhcmlhYmxlICckdicgZm9yICckYXJyYXlfc2xpY2VfbmFtZSciXQor KwkJICAgIHNldCByZXBsYWNlbWVudF92YXJzKCR2KSAkdmFsCisrCQkgICAgaWYgeyRzdHIgIT0g IiJ9IHsKKysJCQlzZXQgc3RyICJTdHIsIgorKwkJICAgIH0KKysJCSAgICBzZXQgc3RyICIkc3Ry JHY9JHZhbCIKKysJCX0KKysJCXNldCB1bmlxdWVfaWQgIiAkc3RyIgorKwkgICAgfQorKwkgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgImRvd24iICJkb3duIiB7CisrCQktcmUgIlxyXG4kZ2RiX3Byb21w dCAkIiB7CisrCQkgICAgIyBEb24ndCBpc3N1ZSBhIHBhc3MgaGVyZS4KKysJCX0KKysJICAgIH0K KysKKysJICAgICMgQ2hlY2sgd2UgaGF2ZSBhbGwgdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdG8g c3VjY2Vzc2Z1bGx5IHJ1biBvbmUKKysJICAgICMgb2YgdGhlc2UgdGVzdHMuCisrCSAgICBpZiB7 ICRleHBlY3RlZF9yZXN1bHQgPT0gIiIgfSB7CisrCQlwZXJyb3IgImZhaWxlZCB0byBleHRyYWN0 IGV4cGVjdGVkIHJlc3VsdHMiCisrCQlyZXR1cm4gMAorKwkgICAgfQorKwkgICAgaWYgeyAkYXJy YXlfc2xpY2VfbmFtZSA9PSAiIiB9IHsKKysJCXBlcnJvciAiZmFpbGVkIHRvIGV4dHJhY3QgYXJy YXkgc2xpY2UgbmFtZSIKKysJCXJldHVybiAwCisrCSAgICB9CisrCisrCSAgICAjIENoZWNrIEdE QiBjYW4gY29ycmVjdGx5IHByaW50IHRoZSBhcnJheSBzbGljZSB0aGF0IHdhcyBwYXNzZWQgaW50 bworKwkgICAgIyB0aGUgY3VycmVudCBmcmFtZS4KKysJICAgIHNldCBwYXR0ZXJuIFtzdHJpbmdf dG9fcmVnZXhwICIgPSAkZXhwZWN0ZWRfcmVzdWx0Il0KKysJICAgIGdkYl90ZXN0ICJwIGFycmF5 IiAiJHBhdHRlcm4iIFwKKysJCSJjaGVjayB2YWx1ZSBvZiAnJGFycmF5X3NsaWNlX25hbWUnJHVu aXF1ZV9pZCIKKysKKysJICAgICMgR2V0IHRoZSBzaXplIG9mIHRoZSBzbGljZS4KKysJICAgIHNl dCBzaXplX2luX3Nob3cgXAorKwkJW2dldF9pbnRlZ2VyX3ZhbHVlb2YgInNpemVvZiAoYXJyYXkp IiAic2hvd191bmtub3duIiBcCisrCQkgICAgICJnZXQgc2l6ZW9mICckYXJyYXlfc2xpY2VfbmFt ZSckdW5pcXVlX2lkIGluIHNob3ciXQorKwkgICAgc2V0IGFkZHJfaW5fc2hvdyBcCisrCQlbZ2V0 X2hleGFkZWNpbWFsX3ZhbHVlb2YgIiZhcnJheSIgInNob3dfdW5rbm93biIgXAorKwkJICAgICAi Z2V0IGFkZHJlc3MgJyRhcnJheV9zbGljZV9uYW1lJyR1bmlxdWVfaWQgaW4gc2hvdyJdCisrCisr CSAgICAjIE5vdyBtb3ZlIGludG8gdGhlIHByZXZpb3VzIGZyYW1lLCBhbmQgc2VlIGlmIEdEQiBj YW4gZXh0cmFjdCB0aGUKKysJICAgICMgYXJyYXkgc2xpY2UgZnJvbSB0aGUgb3JpZ2luYWwgcGFy ZW50IG9iamVjdC4gIEFnYWluLCB1c2Ugb2YKKysJICAgICMgZ2RiX3Rlc3RfbXVsdGlwbGUgdG8g YXZvaWQgZmlsbGluZyB0aGUgbG9ncyB3aXRoIHVubmVjZXNzYXJ5CisrCSAgICAjIHBhc3Nlcy4K KysJICAgIGdkYl90ZXN0X211bHRpcGxlICJ1cCIgInVwIiB7CisrCQktcmUgIlxyXG4kZ2RiX3By b21wdCAkIiB7CisrCQkgICAgIyBEbyBub3RoaW5nLgorKwkJfQorKwkgICAgfQorKworKwkgICAg IyBQcmludCB0aGUgYXJyYXkgc2xpY2UsIHRoaXMgd2lsbCBmb3JjZSBHREIgdG8gbWFudWFsbHkg ZXh0cmFjdCB0aGUKKysJICAgICMgc2xpY2UgZnJvbSB0aGUgcGFyZW50IGFycmF5LgorKwkgICAg Z2RiX3Rlc3QgInAgJGFycmF5X3NsaWNlX25hbWUiICIkcGF0dGVybiIgXAorKwkJImNoZWNrIGFy cmF5IHNsaWNlICckYXJyYXlfc2xpY2VfbmFtZSckdW5pcXVlX2lkIGNhbiBiZSBleHRyYWN0ZWQi CisrCisrCSAgICAjIEdldCB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UgaW4gdGhlIGNhbGxpbmcgZnJh bWUuCisrCSAgICBzZXQgc2l6ZV9pbl9wYXJlbnQgXAorKwkJW2dldF9pbnRlZ2VyX3ZhbHVlb2Yg InNpemVvZiAoJGFycmF5X3NsaWNlX25hbWUpIiBcCisrCQkgICAgICJwYXJlbnRfdW5rbm93biIg XAorKwkJICAgICAiZ2V0IHNpemVvZiAnJGFycmF5X3NsaWNlX25hbWUnJHVuaXF1ZV9pZCBpbiBw YXJlbnQiXQorKworKwkgICAgIyBGaWd1cmUgb3V0IHRoZSBzdGFydCBhbmQgZW5kIGFkZHJlc3Nl cyBvZiB0aGUgZnVsbCBhcnJheSBpbiB0aGUKKysJICAgICMgcGFyZW50IGZyYW1lLgorKwkgICAg c2V0IGZ1bGxfdmFyX25hbWUgW2FycmF5X3NsaWNlX3RvX3ZhciAkYXJyYXlfc2xpY2VfbmFtZV0K KysJICAgIHNldCBzdGFydF9hZGRyIFtnZXRfaGV4YWRlY2ltYWxfdmFsdWVvZiAiJiR7ZnVsbF92 YXJfbmFtZX0iIFwKKysJCQkJInN0YXJ0IHVua25vd24iXQorKwkgICAgc2V0IGVuZF9hZGRyIFtn ZXRfaGV4YWRlY2ltYWxfdmFsdWVvZiBcCisrCQkJICAgICAgIigmJHtmdWxsX3Zhcl9uYW1lfSkg KyBzaXplb2YgKCR7ZnVsbF92YXJfbmFtZX0pIiBcCisrCQkJICAgICAgImVuZCB1bmtub3duIl0K KysKKysJICAgICMgVGhlIEZvcnRyYW4gY29tcGlsZXIgY2FuIGNob29zZSB0byBlaXRoZXIgc2Vu ZCBhIGRlc2NyaXB0b3IgdGhhdAorKwkgICAgIyBkZXNjcmliZXMgdGhlIGFycmF5IHNsaWNlIHRv IHRoZSBzdWJyb3V0aW5lLCBvciBpdCBjYW4gcmVwYWNrIHRoZQorKwkgICAgIyBzbGljZSBpbnRv IGFuIGFycmF5IHNlY3Rpb24gYW5kIHNlbmQgdGhhdC4KKysJICAgICMKKysJICAgICMgV2UgZmlu ZCB0aGUgYWRkcmVzcyByYW5nZSBvZiB0aGUgb3JpZ2luYWwgYXJyYXkgaW4gdGhlIHBhcmVudCwK KysJICAgICMgYW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBzbGljZSBpbiB0aGUgc2hvdyBmdW5jdGlv biwgaWYgdGhlCisrCSAgICAjIGFkZHJlc3Mgb2YgdGhlIHNsaWNlIChmcm9tIHNob3cpIGlzIGlu IHRoZSByYW5nZSBvZiB0aGUgb3JpZ2luYWwKKysJICAgICMgYXJyYXkgdGhlbiByZXBhY2tpbmcg aGFzIG5vdCBvY2N1cnJlZCwgb3RoZXJ3aXNlLCB0aGUgc2xpY2UgaXMKKysJICAgICMgb3V0c2lk ZSBvZiB0aGUgcGFyZW50LCBhbmQgcmVwYWNraW5nIG11c3QgaGF2ZSBvY2N1cnJlZC4KKysJICAg ICMKKysJICAgICMgVGhlIGdvYWwgaGVyZSBpcyB0byBjb21wYXJlIHRoZSBzaXplcyBvZiB0aGUg c2xpY2UgaW4gc2hvdyB3aXRoCisrCSAgICAjIHRoZSBzaXplIG9mIHRoZSBzbGljZSBleHRyYWN0 ZWQgYnkgR0RCLiAgU28gd2UgY2FuIG9ubHkgY29tcGFyZQorKwkgICAgIyBzaXplcyB3aGVuIEdE QidzIHJlcGFja2luZyBzZXR0aW5nIG1hdGNoZXMgdGhlIHJlcGFja2luZworKwkgICAgIyBiZWhh dmlvdXIgd2UgZ290IGZyb20gdGhlIGNvbXBpbGVyLgorKwkgICAgaWYgeyAoJGFkZHJfaW5fc2hv dyA8ICRzdGFydF9hZGRyIHx8ICRhZGRyX2luX3Nob3cgPj0gJGVuZF9hZGRyKSBcCisrCQkgPT0g KCRyZXBhY2sgPT0gIm9uIikgfSB7CisrCQlnZGJfYXNzZXJ0IHskc2l6ZV9pbl9zaG93ID09ICRz aXplX2luX3BhcmVudH0gXAorKwkJICAgICJjaGVjayBzaXplcyBtYXRjaCIKKysJICAgIH0gZWxz ZWlmIHsgJHJlcGFjayA9PSAib2ZmIiB9IHsKKysJCSMgR0RCJ3MgcmVwYWNraW5nIGlzIG9mZiAo c28gc2xpY2VzIGFyZSBsZWZ0IHVucGFja2VkKSwgYnV0CisrCQkjIHRoZSBjb21waWxlciBkaWQg cGFjayB0aGlzIG9uZS4gIEFzIGEgcmVzdWx0IHdlIGNhbid0CisrCQkjIGNvbXBhcmUgdGhlIHNp emVzIGJldHdlZW4gdGhlIGNvbXBpbGVyJ3Mgc2xpY2UgYW5kIEdEQidzCisrCQkjIHNsaWNlLgor KwkJdmVyYm9zZSAtbG9nICJzbGljZSAnJGFycmF5X3NsaWNlX25hbWUnIHdhcyByZXBhY2tlZCwg c2l6ZXMgY2FuJ3QgYmUgY29tcGFyZWQiCisrCSAgICB9IGVsc2UgeworKwkJIyBMaWtlIHRoZSBh Ym92ZSwgYnV0IHRoZSByZXZlcnNlLCBHREIncyByZXBhY2tpbmcgaXMgb24sIGJ1dAorKwkJIyB0 aGUgY29tcGlsZXIgZGlkbid0IHJlcGFjayB0aGlzIHNsaWNlLgorKwkJdmVyYm9zZSAtbG9nICJz bGljZSAnJGFycmF5X3NsaWNlX25hbWUnIHdhcyBub3QgcmVwYWNrZWQsIHNpemVzIGNhbid0IGJl IGNvbXBhcmVkIgorKwkgICAgfQorKworKwkgICAgIyBJZiB0aGUgYXJyYXkgbmFtZSB3ZSBqdXN0 IHRlc3RlZCBpbmNsdWRlZCB2YXJpYWJsZSBuYW1lcywgdGhlbgorKwkgICAgIyB0ZXN0IGFnYWlu IHdpdGggYWxsIHRoZSB2YXJpYWJsZXMgZXhwYW5kZWQuCisrCSAgICBpZiB7JHVuaXF1ZV9pZCAh PSAiIn0geworKwkJZm9yZWFjaCB2IFthcnJheSBuYW1lcyByZXBsYWNlbWVudF92YXJzXSB7Cisr CQkgICAgc2V0IHZhbCAkcmVwbGFjZW1lbnRfdmFycygkdikKKysJCSAgICBzZXQgYXJyYXlfc2xp Y2VfbmFtZSBcCisrCQkJW3JlZ3N1YiAiXFx5JHt2fVxceSIgJGFycmF5X3NsaWNlX25hbWUgJHZh bF0KKysJCX0KKysJCWdkYl90ZXN0ICJwICRhcnJheV9zbGljZV9uYW1lIiAiJHBhdHRlcm4iIFwK KysJCSAgICAiY2hlY2sgYXJyYXkgc2xpY2UgJyRhcnJheV9zbGljZV9uYW1lJyR1bmlxdWVfaWQg Y2FuIGJlIGV4dHJhY3RlZCwgd2l0aCB2YXJpYWJsZXMgZXhwYW5kZWQiCisrCSAgICB9CisrCX0K KysgICAgfQorKworKyAgICAjIEVuc3VyZSB3ZSByZWFjaGVkIHRoZSBmaW5hbCBicmVha3BvaW50 LiAgSWYgbW9yZSB0ZXN0cyBoYXZlIGJlZW4gYWRkZWQKKysgICAgIyB0byB0aGUgdGVzdCBzY3Jp cHQsIGFuZCB0aGlzIHN0YXJ0cyBmYWlsaW5nLCB0aGVuIHRoZSBzYWZldHkgJ3doaWxlJworKyAg ICAjIGxvb3AgYWJvdmUgbWlnaHQgbmVlZCB0byBiZSBpbmNyZWFzZWQuCisrICAgIGdkYl9hc3Nl cnQgeyRmb3VuZF9maW5hbF9icmVha3BvaW50fSAicmFuIGFsbCB0ZXN0cyIKKyB9CisgCistZ2Ri X2JyZWFrcG9pbnQgInNob3ciCistZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInNob3ciCist Z2RiX3Rlc3QgInVwIiAiLioiCistZ2RiX3Rlc3QgInAgYXJyYXkgKDE6MTA6MiwgMToxMDoyKSIg XAorLSAgICAiRm9ydHJhbiBhcnJheSBzdHJpZGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRl ZCIgXAorLSAgICAidXNpbmcgYXJyYXkgc3RyaWRlIGdpdmVzIGFuIGVycm9yIgorK2ZvcmVhY2hf d2l0aF9wcmVmaXggcmVwYWNrIHsgb24gb2ZmIH0geworKyAgICBydW5fdGVzdCAkcmVwYWNrCisr fQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmY5 MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmY5MAorLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZjkwCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5mOTAKK0BAIC0xMyw1OCArMTMsMzY4IEBACisg ISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCistc3Vicm91dGluZSBzaG93IChtZXNzYWdl LCBhcnJheSkKKy0gIGNoYXJhY3RlciAobGVuPSopIDo6IG1lc3NhZ2UKKytzdWJyb3V0aW5lIHNo b3dfZWxlbSAoYXJyYXkpCisrICBpbnRlZ2VyIDo6IGFycmF5CisrCisrICBwcmludCAqLCAiIgor KyAgcHJpbnQgKiwgIkV4cGVjdGVkIEdEQiBPdXRwdXQ6IgorKyAgcHJpbnQgKiwgIiIKKysKKysg IHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiR0RCID0gIgorKyAgd3JpdGUoKiwg Zm10PSIoSTApIiwgYWR2YW5jZT0ibm8iKSBhcnJheQorKyAgd3JpdGUoKiwgZm10PSIoQSkiLCBh ZHZhbmNlPSJ5ZXMiKSAiIgorKworKyAgcHJpbnQgKiwgIiIJISBEaXNwbGF5IEVsZW1lbnQKKytl bmQgc3Vicm91dGluZSBzaG93X2VsZW0KKysKKytzdWJyb3V0aW5lIHNob3dfc3RyIChhcnJheSkK KysgIGNoYXJhY3RlciAobGVuPSopIDo6IGFycmF5CisrCisrICBwcmludCAqLCAiIgorKyAgcHJp bnQgKiwgIkV4cGVjdGVkIEdEQiBPdXRwdXQ6IgorKyAgcHJpbnQgKiwgIiIKKysgIHdyaXRlICgq LCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9ICciCisrICB3cml0ZSAoKiwgZm10PSIo QSkiLCBhZHZhbmNlPSJubyIpIGFycmF5CisrICB3cml0ZSAoKiwgZm10PSIoQSkiLCBhZHZhbmNl PSJ5ZXMiKSAiJyIKKysKKysgIHByaW50ICosICIiCSEgRGlzcGxheSBTdHJpbmcKKytlbmQgc3Vi cm91dGluZSBzaG93X3N0cgorKworK3N1YnJvdXRpbmUgc2hvd18xZCAoYXJyYXkpCisrICBpbnRl Z2VyLCBkaW1lbnNpb24gKDopIDo6IGFycmF5CisrCisrICBwcmludCAqLCAiQXJyYXkgQ29udGVu dHM6IgorKyAgcHJpbnQgKiwgIiIKKysKKysgIGRvIGk9TEJPVU5EIChhcnJheSwgMSksIFVCT1VO RCAoYXJyYXksIDEpLCAxCisrICAgICB3cml0ZSgqLCBmbXQ9IihpNCkiLCBhZHZhbmNlPSJubyIp IGFycmF5IChpKQorKyAgZW5kIGRvCisrCisrICBwcmludCAqLCAiIgorKyAgcHJpbnQgKiwgIkV4 cGVjdGVkIEdEQiBPdXRwdXQ6IgorKyAgcHJpbnQgKiwgIiIKKysKKysgIHdyaXRlKCosIGZtdD0i KEEpIiwgYWR2YW5jZT0ibm8iKSAiR0RCID0gKCIKKysgIGRvIGk9TEJPVU5EIChhcnJheSwgMSks IFVCT1VORCAoYXJyYXksIDEpLCAxCisrICAgICBpZiAoaSA+IExCT1VORCAoYXJyYXksIDEpKSB0 aGVuCisrICAgICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiwgIgorKyAg ICAgZW5kIGlmCisrICAgICB3cml0ZSgqLCBmbXQ9IihJMCkiLCBhZHZhbmNlPSJubyIpIGFycmF5 IChpKQorKyAgZW5kIGRvCisrICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiki CisrCisrICBwcmludCAqLCAiIgkhIERpc3BsYXkgQXJyYXkgU2xpY2UgMUQKKytlbmQgc3Vicm91 dGluZSBzaG93XzFkCisrCisrc3Vicm91dGluZSBzaG93XzJkIChhcnJheSkKKyAgIGludGVnZXIs IGRpbWVuc2lvbiAoOiw6KSA6OiBhcnJheQorIAorLSAgcHJpbnQgKiwgbWVzc2FnZQorKyAgcHJp bnQgKiwgIkFycmF5IENvbnRlbnRzOiIKKysgIHByaW50ICosICIiCisrCisgICBkbyBpPUxCT1VO RCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorICAgICAgZG8gaj1MQk9VTkQgKGFy cmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKyAgICAgICAgIHdyaXRlKCosIGZtdD0iKGk0 KSIsIGFkdmFuY2U9Im5vIikgYXJyYXkgKGosIGkpCisgICAgICBlbmQgZG8KKyAgICAgIHByaW50 ICosICIiCistIGVuZCBkbworLSBwcmludCAqLCBhcnJheQorLSBwcmludCAqLCAiIgorKyAgZW5k IGRvCisgCistZW5kIHN1YnJvdXRpbmUgc2hvdworKyAgcHJpbnQgKiwgIiIKKysgIHByaW50ICos ICJFeHBlY3RlZCBHREIgT3V0cHV0OiIKKysgIHByaW50ICosICIiCisgCistcHJvZ3JhbSB0ZXN0 CisrICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9ICgiCisrICBkbyBp PUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorKyAgICAgaWYgKGkgPiBM Qk9VTkQgKGFycmF5LCAyKSkgdGhlbgorKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZh bmNlPSJubyIpICIgIgorKyAgICAgZW5kIGlmCisrICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFk dmFuY2U9Im5vIikgIigiCisrICAgICBkbyBqPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFy cmF5LCAxKSwgMQorKyAgICAgICAgaWYgKGogPiBMQk9VTkQgKGFycmF5LCAxKSkgdGhlbgorKyAg ICAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIsICIKKysgICAgICAg IGVuZCBpZgorKyAgICAgICAgd3JpdGUoKiwgZm10PSIoSTApIiwgYWR2YW5jZT0ibm8iKSBhcnJh eSAoaiwgaSkKKysgICAgIGVuZCBkbworKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNl PSJubyIpICIpIgorKyAgZW5kIGRvCisrICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Inll cyIpICIpIgorKworKyAgcHJpbnQgKiwgIiIJISBEaXNwbGF5IEFycmF5IFNsaWNlIDJECisrZW5k IHN1YnJvdXRpbmUgc2hvd18yZAorKworK3N1YnJvdXRpbmUgc2hvd18zZCAoYXJyYXkpCisrICBp bnRlZ2VyLCBkaW1lbnNpb24gKDosOiw6KSA6OiBhcnJheQorKworKyAgcHJpbnQgKiwgIiIKKysg IHByaW50ICosICJFeHBlY3RlZCBHREIgT3V0cHV0OiIKKysgIHByaW50ICosICIiCisrCisrICB3 cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9ICgiCisrICBkbyBpPUxCT1VO RCAoYXJyYXksIDMpLCBVQk9VTkQgKGFycmF5LCAzKSwgMQorKyAgICAgaWYgKGkgPiBMQk9VTkQg KGFycmF5LCAzKSkgdGhlbgorKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJu byIpICIgIgorKyAgICAgZW5kIGlmCisrICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9 Im5vIikgIigiCisrICAgICBkbyBqPUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAy KSwgMQorKyAgICAgICAgaWYgKGogPiBMQk9VTkQgKGFycmF5LCAyKSkgdGhlbgorKyAgICAgICAg ICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIgIgorKyAgICAgICAgZW5kIGlm CisrICAgICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIigiCisrICAgICAg ICBkbyBrPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwgMQorKyAgICAgICAg ICAgaWYgKGsgPiBMQk9VTkQgKGFycmF5LCAxKSkgdGhlbgorKyAgICAgICAgICAgICAgd3JpdGUo KiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIsICIKKysgICAgICAgICAgIGVuZCBpZgorKyAg ICAgICAgICAgd3JpdGUoKiwgZm10PSIoSTApIiwgYWR2YW5jZT0ibm8iKSBhcnJheSAoaywgaiwg aSkKKysgICAgICAgIGVuZCBkbworKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNl PSJubyIpICIpIgorKyAgICAgZW5kIGRvCisrICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFu Y2U9Im5vIikgIikiCisrICBlbmQgZG8KKysgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0i eWVzIikgIikiCisrCisrICBwcmludCAqLCAiIgkhIERpc3BsYXkgQXJyYXkgU2xpY2UgM0QKKytl bmQgc3Vicm91dGluZSBzaG93XzNkCisrCisrc3Vicm91dGluZSBzaG93XzRkIChhcnJheSkKKysg IGludGVnZXIsIGRpbWVuc2lvbiAoOiw6LDosOikgOjogYXJyYXkKKysKKysgIHByaW50ICosICIi CisrICBwcmludCAqLCAiRXhwZWN0ZWQgR0RCIE91dHB1dDoiCisrICBwcmludCAqLCAiIgorKwor KyAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICJHREIgPSAoIgorKyAgZG8gaT1M Qk9VTkQgKGFycmF5LCA0KSwgVUJPVU5EIChhcnJheSwgNCksIDEKKysgICAgIGlmIChpID4gTEJP VU5EIChhcnJheSwgNCkpIHRoZW4KKysgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5j ZT0ibm8iKSAiICIKKysgICAgIGVuZCBpZgorKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZh bmNlPSJubyIpICIoIgorKyAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAzKSwgVUJPVU5EIChhcnJh eSwgMyksIDEKKysgICAgICAgIGlmIChqID4gTEJPVU5EIChhcnJheSwgMykpIHRoZW4KKysgICAg ICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiICIKKysgICAgICAgIGVu ZCBpZgorKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIoIgorKwor KyAgICAgICAgZG8gaz1MQk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKKysg ICAgICAgICAgIGlmIChrID4gTEJPVU5EIChhcnJheSwgMikpIHRoZW4KKysgICAgICAgICAgICAg IHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiICIKKysgICAgICAgICAgIGVuZCBp ZgorKyAgICAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIoIgorKyAg ICAgICAgICAgZG8gbD1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKysg ICAgICAgICAgICAgIGlmIChsID4gTEJPVU5EIChhcnJheSwgMSkpIHRoZW4KKysgICAgICAgICAg ICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiLCAiCisrICAgICAgICAg ICAgICBlbmQgaWYKKysgICAgICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEkwKSIsIGFkdmFuY2U9 Im5vIikgYXJyYXkgKGwsIGssIGosIGkpCisrICAgICAgICAgICBlbmQgZG8KKysgICAgICAgICAg IHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKSIKKysgICAgICAgIGVuZCBkbwor KyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIpIgorKyAgICAgZW5k IGRvCisrICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIikiCisrICBlbmQg ZG8KKysgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ieWVzIikgIikiCisrCisrICBwcmlu dCAqLCAiIgkhIERpc3BsYXkgQXJyYXkgU2xpY2UgNEQKKytlbmQgc3Vicm91dGluZSBzaG93XzRk CisgCisrIQorKyEgU3RhcnQgb2YgdGVzdCBwcm9ncmFtLgorKyEKKytwcm9ncmFtIHRlc3QKKyAg IGludGVyZmFjZQorLSAgICAgc3Vicm91dGluZSBzaG93IChtZXNzYWdlLCBhcnJheSkKKy0gICAg ICAgY2hhcmFjdGVyIChsZW49KikgOjogbWVzc2FnZQorKyAgICAgc3Vicm91dGluZSBzaG93X3N0 ciAoYXJyYXkpCisrICAgICAgIGNoYXJhY3RlciAobGVuPSopIDo6IGFycmF5CisrICAgICBlbmQg c3Vicm91dGluZSBzaG93X3N0cgorKworKyAgICAgc3Vicm91dGluZSBzaG93XzFkIChhcnJheSkK KysgICAgICAgaW50ZWdlciwgZGltZW5zaW9uICg6KSA6OiBhcnJheQorKyAgICAgZW5kIHN1YnJv dXRpbmUgc2hvd18xZAorKworKyAgICAgc3Vicm91dGluZSBzaG93XzJkIChhcnJheSkKKyAgICAg ICAgaW50ZWdlciwgZGltZW5zaW9uKDosOikgOjogYXJyYXkKKy0gICAgIGVuZCBzdWJyb3V0aW5l IHNob3cKKysgICAgIGVuZCBzdWJyb3V0aW5lIHNob3dfMmQKKysKKysgICAgIHN1YnJvdXRpbmUg c2hvd18zZCAoYXJyYXkpCisrICAgICAgIGludGVnZXIsIGRpbWVuc2lvbig6LDosOikgOjogYXJy YXkKKysgICAgIGVuZCBzdWJyb3V0aW5lIHNob3dfM2QKKysKKysgICAgIHN1YnJvdXRpbmUgc2hv d180ZCAoYXJyYXkpCisrICAgICAgIGludGVnZXIsIGRpbWVuc2lvbig6LDosOiw6KSA6OiBhcnJh eQorKyAgICAgZW5kIHN1YnJvdXRpbmUgc2hvd180ZAorICAgZW5kIGludGVyZmFjZQorIAorKyAg ISBEZWNsYXJlIHZhcmlhYmxlcyB1c2VkIGluIHRoaXMgdGVzdC4KKysgIGludGVnZXIsIGRpbWVu c2lvbiAoLTEwOi0xLC0xMDotMikgOjogbmVnX2FycmF5CisgICBpbnRlZ2VyLCBkaW1lbnNpb24g KDE6MTAsMToxMCkgOjogYXJyYXkKKyAgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IG90aGVyICg6 LCA6KQorKyAgY2hhcmFjdGVyIChsZW49MjYpIDo6IHN0cl8xID0gImFiY2RlZmdoaWprbG1ub3Bx cnN0dXZ3eHl6IgorKyAgaW50ZWdlciwgZGltZW5zaW9uICgtMjoyLC0yOjIsLTI6MikgOjogYXJy YXkzZAorKyAgaW50ZWdlciwgZGltZW5zaW9uICgtMzozLDc6MTAsLTM6MywtMTA6LTcpIDo6IGFy cmF5NGQKKysgIGludGVnZXIsIGRpbWVuc2lvbiAoMTA6MjApIDo6IGFycmF5MWQKKysgIGludGVn ZXIsIGRpbWVuc2lvbig6LDopLCBwb2ludGVyIDo6IHBvaW50ZXIyZCA9PiBudWxsKCkKKysgIGlu dGVnZXIsIGRpbWVuc2lvbigtMTo5LC0xOjkpLCB0YXJnZXQgOjogdGFycmF5CisgCisrICAhIEFs bG9jYXRlIG9yIGFzc29jaWF0ZSBhbnkgdmFyaWFibGVzIGFzIG5lZWRlZC4KKyAgIGFsbG9jYXRl IChvdGhlciAoLTU6NCwgLTI6NykpCisrICBwb2ludGVyMmQgPT4gdGFycmF5CisgCistICBkbyBp PUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorLSAgICAgZG8gaj1MQk9V TkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKy0gICAgICAgIGFycmF5IChqLGkp ID0gKChpIC0gMSkgKiBVQk9VTkQgKGFycmF5LCAyKSkgKyBqCistICAgICBlbmQgZG8KKy0gIGVu ZCBkbworKyAgISBGaWxsIGFycmF5cyB3aXRoIGNvbnRlbnRzIHJlYWR5IGZvciB0ZXN0aW5nLgor KyAgY2FsbCBmaWxsX2FycmF5XzFkIChhcnJheTFkKQorKworKyAgY2FsbCBmaWxsX2FycmF5XzJk IChuZWdfYXJyYXkpCisrICBjYWxsIGZpbGxfYXJyYXlfMmQgKGFycmF5KQorKyAgY2FsbCBmaWxs X2FycmF5XzJkIChvdGhlcikKKysgIGNhbGwgZmlsbF9hcnJheV8yZCAodGFycmF5KQorKworKyAg Y2FsbCBmaWxsX2FycmF5XzNkIChhcnJheTNkKQorKyAgY2FsbCBmaWxsX2FycmF5XzRkIChhcnJh eTRkKQorKworKyAgISBUaGUgdGVzdHMuICBFYWNoIGNhbGwgdG8gYSBzaG93XyogZnVuY3Rpb24g bXVzdCBoYXZlIGEgdW5pcXVlIHNldAorKyAgISBvZiBhcmd1bWVudHMgYXMgR0RCIHVzZXMgdGhl IGFyZ3VtZW50cyBhcmUgcGFydCBvZiB0aGUgdGVzdCBuYW1lCisrICAhIHN0cmluZywgc28gZHVw bGljYXRlIGFyZ3VtZW50cyB3aWxsIHJlc3VsdCBpbiBkdXBsaWNhdGUgdGVzdAorKyAgISBuYW1l cy4KKysgICEKKysgICEgSWYgYSBzaG93XyogbGluZSBlbmRzIHdpdGggVkFSUz0uLi4gd2hlcmUg Jy4uLicgaXMgYSBjb21tYQorKyAgISBzZXBhcmF0ZWQgbGlzdCBvZiB2YXJpYWJsZSBuYW1lcywg dGhlc2UgdmFyaWFibGVzIGFyZSBhc3N1bWVkIHRvCisrICAhIGJlIHBhcnQgb2YgdGhlIGNhbGwg bGluZSwgYW5kIHdpbGwgYmUgZXhwYW5kZWQgYnkgdGhlIHRlc3Qgc2NyaXB0LAorKyAgISBmb3Ig ZXhhbXBsZToKKysgICEKKysgICEgICAgIGRvIHg9MSw5LDEKKysgICEgICAgICAgZG8geT14LDEw LDEKKysgICEgICAgICAgICBjYWxsIHNob3dfMWQgKHNvbWVfYXJyYXkgKHgseSkpCSEgVkFSUz14 LHkKKysgICEgICAgICAgZW5kIGRvCisrICAhICAgICBlbmQgZG8KKysgICEKKysgICEgSW4gdGhp cyBleGFtcGxlIHRoZSB0ZXN0IHNjcmlwdCB3aWxsIGF1dG9tYXRpY2FsbHkgZXhwYW5kICd4JyBh bmQKKysgICEgJ3knIGluIG9yZGVyIHRvIGJldHRlciB0ZXN0IGRpZmZlcmVudCBhc3BlY3RzIG9m IEdEQi4gIERvIHRha2UKKysgICEgY2FyZSwgdGhlIGV4cGFuc2lvbiBpcyBub3QgdmVyeSAic21h cnQiLCBzbyB0cnkgdG8gYXZvaWQgY2xhc2hpbmcKKysgICEgd2l0aCBvdGhlciB0ZXh0IG9uIHRo ZSBsaW5lLCBpbiB0aGUgZXhhbXBsZSBhYm92ZSwgYXZvaWQgdmFyaWFibGVzCisrICAhIG5hbWVk ICdzb21lJyBvciAnYXJyYXknLCBhcyB0aGVzZSB3aWxsIGxpa2VseSBjbGFzaCB3aXRoCisrICAh ICdzb21lX2FycmF5Jy4KKysgIGNhbGwgc2hvd19zdHIgKHN0cl8xKQorKyAgY2FsbCBzaG93X3N0 ciAoc3RyXzEgKDE6MjApKQorKyAgY2FsbCBzaG93X3N0ciAoc3RyXzEgKDEwOjIwKSkKKyAKKy0g IGRvIGk9TEJPVU5EIChvdGhlciwgMiksIFVCT1VORCAob3RoZXIsIDIpLCAxCistICAgICBkbyBq PUxCT1VORCAob3RoZXIsIDEpLCBVQk9VTkQgKG90aGVyLCAxKSwgMQorLSAgICAgICAgb3RoZXIg KGosaSkgPSAoKGkgLSAxKSAqIFVCT1VORCAob3RoZXIsIDIpKSArIGoKKysgIGNhbGwgc2hvd19l bGVtIChhcnJheTFkICgxMSkpCisrICBjYWxsIHNob3dfZWxlbSAocG9pbnRlcjJkICgyLDMpKQor KworKyAgY2FsbCBzaG93XzFkIChhcnJheTFkKQorKyAgY2FsbCBzaG93XzFkIChhcnJheTFkICgx MzoxNykpCisrICBjYWxsIHNob3dfMWQgKGFycmF5MWQgKDE3OjEzOi0xKSkKKysgIGNhbGwgc2hv d18xZCAoYXJyYXkgKDE6NSwxKSkKKysgIGNhbGwgc2hvd18xZCAoYXJyYXk0ZCAoMSw3LDMsOikp CisrICBjYWxsIHNob3dfMWQgKHBvaW50ZXIyZCAoLTE6MywgMikpCisrICBjYWxsIHNob3dfMWQg KHBvaW50ZXIyZCAoLTEsIDI6NCkpCisrCisrICAhIEVuY2xvc2luZyB0aGUgYXJyYXkgc2xpY2Ug YXJndW1lbnQgaW4gKC4uLikgY2F1c2VzcyBnZm9ydHJhbiB0bworKyAgISByZXBhY2sgdGhlIGFy cmF5LgorKyAgY2FsbCBzaG93XzFkICgoYXJyYXkgKDE6NSwxKSkpCisrCisrICBjYWxsIHNob3df MmQgKHBvaW50ZXIyZCkKKysgIGNhbGwgc2hvd18yZCAoYXJyYXkpCisrICBjYWxsIHNob3dfMmQg KGFycmF5ICgxOjUsMTo1KSkKKysgIGRvIGk9MSwxMCwyCisrICAgICBkbyBqPTEsMTAsMworKyAg ICAgICAgY2FsbCBzaG93XzJkIChhcnJheSAoMToxMDppLDE6MTA6aikpCSEgVkFSUz1pLGoKKysg ICAgICAgIGNhbGwgc2hvd18yZCAoYXJyYXkgKDEwOjE6LWksMToxMDpqKSkJISBWQVJTPWksagor KyAgICAgICAgY2FsbCBzaG93XzJkIChhcnJheSAoMTA6MTotaSwxMDoxOi1qKSkJISBWQVJTPWks agorKyAgICAgICAgY2FsbCBzaG93XzJkIChhcnJheSAoMToxMDppLDEwOjE6LWopKQkhIFZBUlM9 aSxqCisgICAgICBlbmQgZG8KKyAgIGVuZCBkbworKyAgY2FsbCBzaG93XzJkIChhcnJheSAoNjoy Oi0xLDM6OSkpCisrICBjYWxsIHNob3dfMmQgKGFycmF5ICgxOjEwOjIsIDE6MTA6MikpCisrICBj YWxsIHNob3dfMmQgKG90aGVyKQorKyAgY2FsbCBzaG93XzJkIChvdGhlciAoLTU6MCwgLTI6MCkp CisrICBjYWxsIHNob3dfMmQgKG90aGVyICgtNTo0OjIsIC0yOjc6MykpCisrICBjYWxsIHNob3df MmQgKG5lZ19hcnJheSkKKysgIGNhbGwgc2hvd18yZCAobmVnX2FycmF5ICgtMTA6LTMsLTg6LTQ6 MikpCisrCisrICAhIEVuY2xvc2luZyB0aGUgYXJyYXkgc2xpY2UgYXJndW1lbnQgaW4gKC4uLikg Y2F1c2VzcyBnZm9ydHJhbiB0bworKyAgISByZXBhY2sgdGhlIGFycmF5LgorKyAgY2FsbCBzaG93 XzJkICgoYXJyYXkgKDE6MTA6MywgMToxMDoyKSkpCisrICBjYWxsIHNob3dfMmQgKChuZWdfYXJy YXkgKC0xMDotMywtODotNDoyKSkpCisgCistICBjYWxsIHNob3cgKCJhcnJheSIsIGFycmF5KQor LSAgY2FsbCBzaG93ICgiYXJyYXkgKDE6NSwxOjUpIiwgYXJyYXkgKDE6NSwxOjUpKQorLSAgY2Fs bCBzaG93ICgiYXJyYXkgKDE6MTA6MiwxOjEwOjIpIiwgYXJyYXkgKDE6MTA6MiwxOjEwOjIpKQor LSAgY2FsbCBzaG93ICgiYXJyYXkgKDE6MTA6MywxOjEwOjIpIiwgYXJyYXkgKDE6MTA6MywxOjEw OjIpKQorLSAgY2FsbCBzaG93ICgiYXJyYXkgKDE6MTA6NSwxOjEwOjMpIiwgYXJyYXkgKDE6MTA6 NCwxOjEwOjMpKQorKyAgY2FsbCBzaG93XzNkIChhcnJheTNkKQorKyAgY2FsbCBzaG93XzNkIChh cnJheTNkKC0xOjEsLTE6MSwtMToxKSkKKysgIGNhbGwgc2hvd18zZCAoYXJyYXkzZCgxOi0xOi0x LDE6LTE6LTEsMTotMTotMSkpCisgCistICBjYWxsIHNob3cgKCJvdGhlciIsIG90aGVyKQorLSAg Y2FsbCBzaG93ICgib3RoZXIgKC01OjAsIC0yOjApIiwgb3RoZXIgKC01OjAsIC0yOjApKQorLSAg Y2FsbCBzaG93ICgib3RoZXIgKC01OjQ6MiwgLTI6NzozKSIsIG90aGVyICgtNTo0OjIsIC0yOjc6 MykpCisrICAhIEVuY2xvc2luZyB0aGUgYXJyYXkgc2xpY2UgYXJndW1lbnQgaW4gKC4uLikgY2F1 c2VzcyBnZm9ydHJhbiB0bworKyAgISByZXBhY2sgdGhlIGFycmF5LgorKyAgY2FsbCBzaG93XzNk ICgoYXJyYXkzZCgxOi0xOi0xLDE6LTE6LTEsMTotMTotMSkpKQorIAorKyAgY2FsbCBzaG93XzRk IChhcnJheTRkKQorKyAgY2FsbCBzaG93XzRkIChhcnJheTRkICgtMzowLDEwOjc6LTEsMDozLC03 Oi0xMDotMSkpCisrICBjYWxsIHNob3dfNGQgKGFycmF5NGQgKDM6MDotMSwgMTA6NzotMSwgOiwg LTc6LTEwOi0xKSkKKysKKysgICEgRW5jbG9zaW5nIHRoZSBhcnJheSBzbGljZSBhcmd1bWVudCBp biAoLi4uKSBjYXVzZXNzIGdmb3J0cmFuIHRvCisrICAhIHJlcGFjayB0aGUgYXJyYXkuCisrICBj YWxsIHNob3dfNGQgKChhcnJheTRkICgzOi0yOi0yLCAxMDo3Oi0yLCA6LCAtNzotMTA6LTEpKSkK KysKKysgICEgQWxsIGRvbmUuICBEZWFsbG9jYXRlLgorICAgZGVhbGxvY2F0ZSAob3RoZXIpCisr CisrICAhIEdEQiBjYXRjaGVzIHRoaXMgZmluYWwgYnJlYWtwb2ludCB0byBpbmRpY2F0ZSB0aGUg ZW5kIG9mIHRoZSB0ZXN0LgorICAgcHJpbnQgKiwgIiIgISBGaW5hbCBCcmVha3BvaW50LgorKwor K2NvbnRhaW5zCisrCisrICAhIEZpbGwgYSAxRCBhcnJheSB3aXRoIGEgdW5pcXVlIHBvc2l0aXZl IGludGVnZXIgaW4gZWFjaCBlbGVtZW50LgorKyAgc3Vicm91dGluZSBmaWxsX2FycmF5XzFkIChh cnJheSkKKysgICAgaW50ZWdlciwgZGltZW5zaW9uICg6KSA6OiBhcnJheQorKyAgICBpbnRlZ2Vy IDo6IGNvdW50ZXIKKysKKysgICAgY291bnRlciA9IDEKKysgICAgZG8gaj1MQk9VTkQgKGFycmF5 LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKysgICAgICAgYXJyYXkgKGopID0gY291bnRlcgor KyAgICAgICBjb3VudGVyID0gY291bnRlciArIDEKKysgICAgZW5kIGRvCisrICBlbmQgc3Vicm91 dGluZSBmaWxsX2FycmF5XzFkCisrCisrICAhIEZpbGwgYSAyRCBhcnJheSB3aXRoIGEgdW5pcXVl IHBvc2l0aXZlIGludGVnZXIgaW4gZWFjaCBlbGVtZW50LgorKyAgc3Vicm91dGluZSBmaWxsX2Fy cmF5XzJkIChhcnJheSkKKysgICAgaW50ZWdlciwgZGltZW5zaW9uICg6LDopIDo6IGFycmF5Cisr ICAgIGludGVnZXIgOjogY291bnRlcgorKworKyAgICBjb3VudGVyID0gMQorKyAgICBkbyBpPUxC T1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorKyAgICAgICBkbyBqPUxCT1VO RCAoYXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwgMQorKyAgICAgICAgICBhcnJheSAoaixp KSA9IGNvdW50ZXIKKysgICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxCisrICAgICAgIGVu ZCBkbworKyAgICBlbmQgZG8KKysgIGVuZCBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfMmQKKysKKysg ICEgRmlsbCBhIDNEIGFycmF5IHdpdGggYSB1bmlxdWUgcG9zaXRpdmUgaW50ZWdlciBpbiBlYWNo IGVsZW1lbnQuCisrICBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfM2QgKGFycmF5KQorKyAgICBpbnRl Z2VyLCBkaW1lbnNpb24gKDosOiw6KSA6OiBhcnJheQorKyAgICBpbnRlZ2VyIDo6IGNvdW50ZXIK KysKKysgICAgY291bnRlciA9IDEKKysgICAgZG8gaT1MQk9VTkQgKGFycmF5LCAzKSwgVUJPVU5E IChhcnJheSwgMyksIDEKKysgICAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChh cnJheSwgMiksIDEKKysgICAgICAgICAgZG8gaz1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChh cnJheSwgMSksIDEKKysgICAgICAgICAgICAgYXJyYXkgKGssIGosaSkgPSBjb3VudGVyCisrICAg ICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMQorKyAgICAgICAgICBlbmQgZG8KKysgICAg ICAgZW5kIGRvCisrICAgIGVuZCBkbworKyAgZW5kIHN1YnJvdXRpbmUgZmlsbF9hcnJheV8zZAor KworKyAgISBGaWxsIGEgNEQgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3NpdGl2ZSBpbnRlZ2VyIGlu IGVhY2ggZWxlbWVudC4KKysgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV80ZCAoYXJyYXkpCisrICAg IGludGVnZXIsIGRpbWVuc2lvbiAoOiw6LDosOikgOjogYXJyYXkKKysgICAgaW50ZWdlciA6OiBj b3VudGVyCisrCisrICAgIGNvdW50ZXIgPSAxCisrICAgIGRvIGk9TEJPVU5EIChhcnJheSwgNCks IFVCT1VORCAoYXJyYXksIDQpLCAxCisrICAgICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMyksIFVC T1VORCAoYXJyYXksIDMpLCAxCisrICAgICAgICAgIGRvIGs9TEJPVU5EIChhcnJheSwgMiksIFVC T1VORCAoYXJyYXksIDIpLCAxCisrICAgICAgICAgICAgIGRvIGw9TEJPVU5EIChhcnJheSwgMSks IFVCT1VORCAoYXJyYXksIDEpLCAxCisrICAgICAgICAgICAgICAgIGFycmF5IChsLCBrLCBqLGkp ID0gY291bnRlcgorKyAgICAgICAgICAgICAgICBjb3VudGVyID0gY291bnRlciArIDEKKysgICAg ICAgICAgICAgZW5kIGRvCisrICAgICAgICAgIGVuZCBkbworKyAgICAgICBlbmQgZG8KKysgICAg ZW5kIGRvCisrICAgIHByaW50ICosICIiCisrICBlbmQgc3Vicm91dGluZSBmaWxsX2FycmF5XzRk CisgZW5kIHByb2dyYW0gdGVzdAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXNpemVvZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2Yu ZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCitAQCAtNDQsNyArNDQs NyBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1hbGxvY2F0ZWQiCisgZ2RiX3Rl c3QgInByaW50IHNpemVvZih2bGExKSIgIiA9IDQwMDAiICJwcmludCBzaXplb2YgYWxsb2NhdGVk IHZsYTEiCisgZ2RiX3Rlc3QgInByaW50IHNpemVvZih2bGExKDMsMiwxKSkiICI0IiBcCisgICAg ICJwcmludCBzaXplb2YgZWxlbWVudCBmcm9tIGFsbG9jYXRlZCB2bGExIgorLWdkYl90ZXN0ICJw cmludCBzaXplb2YodmxhMSgzOjQsMiwxKSkiICI4MDAiIFwKKytnZGJfdGVzdCAicHJpbnQgc2l6 ZW9mKHZsYTEoMzo0LDIsMSkpIiAiOCIgXAorICAgICAicHJpbnQgc2l6ZW9mIHNsaWNlZCB2bGEx IgorIAorICMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gdW5kZWZpbmVkIHBvaW50ZXIgdG8gVkxB IChkYW5nbGluZykKK0BAIC02MSw3ICs2MSw3IEBAIGdkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJwdmxhLWFzc29jaWF0ZWQiCisgZ2RiX3Rlc3QgInByaW50IHNpemVvZihwdmxhKSIgIiA9IDQw MDAiICJwcmludCBzaXplb2YgYXNzb2NpYXRlZCBwdmxhIgorIGdkYl90ZXN0ICJwcmludCBzaXpl b2YocHZsYSgzLDIsMSkpIiAiNCIgXAorICAgICAicHJpbnQgc2l6ZW9mIGVsZW1lbnQgZnJvbSBh c3NvY2lhdGVkIHB2bGEiCistZ2RiX3Rlc3QgInByaW50IHNpemVvZihwdmxhKDM6NCwyLDEpKSIg IjgwMCIgInByaW50IHNpemVvZiBzbGljZWQgcHZsYSIKKytnZGJfdGVzdCAicHJpbnQgc2l6ZW9m KHB2bGEoMzo0LDIsMSkpIiAiOCIgInByaW50IHNpemVvZiBzbGljZWQgcHZsYSIKKyAKKyBnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1uZWctYm91bmRzLXYxIl0KKyBn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1uZWctYm91bmRzLXYxIgoKZGlmZiAtLWdp dCBhL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXN0cmlkZXMtaW4tZXhwcmVzc2lvbnMu cGF0Y2ggYi9nZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Np b25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyM2VjMzQKLS0t IC9kZXYvbnVsbAorKysgYi9nZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWlu LWV4cHJlc3Npb25zLnBhdGNoCkBAIC0wLDAgKzEsMTkzIEBACitGcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkBy ZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAyMjozMDozMiAtMDcwMAorU3ViamVj dDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc3RyaWRlcy1pbi1leHByZXNzaW9ucy5w YXRjaAorCis7OyBbZm9ydHJhbl0gQmFja3BvcnQgQW5kcmV3IEJ1cmdlc3MncyBjb21taXQgd2hp Y2ggYWRkcyBzdXBwb3J0Cis7OyBmb3IgYXJyYXkgc3RyaWRlcyBpbiBleHByZXNzaW9ucy4KKwor Z2RiL2ZvcnRyYW46IGFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGFycmF5IHN0cmlkZXMgaW4gZXhw cmVzc2lvbnMKKworV2l0aCB0aGlzIGNvbW1pdCBHREIgbm93IHVuZGVyc3RhbmRzIHRoZSBzeW50 YXggb2YgRm9ydHJhbiBhcnJheQorc3RyaWRlcywgYSB1c2VyIGNhbiB0eXBlIGFuIGV4cHJlc3Np b24gaW5jbHVkaW5nIGFuIGFycmF5IHN0cmlkZSwgYnV0Cit0aGV5IHdpbGwgb25seSBnZXQgYW4g ZXJyb3IgaW5mb3JtaW5nIHRoZW0gdGhhdCBhcnJheSBzdHJpZGVzIGFyZSBub3QKK3N1cHBvcnRl ZC4KKworVGhpcyBhbG9uZSBpcyBhbiBpbXByb3ZlbWVudCBvbiB3aGF0IHdlIGhhZCBiZWZvcmUg aW4gR0RCLCBiZXR0ZXIgdG8KK2dpdmUgdGhlIHVzZXIgYSBoZWxwZnVsIG1lc3NhZ2UgdGhhdCBh IHBhcnRpY3VsYXIgZmVhdHVyZSBpcyBub3QKK3N1cHBvcnRlZCB0aGFuIHRvIGp1c3QgY2xhaW0g YSBzeW50YXggZXJyb3IuCisKK0JlZm9yZToKKworICAoZ2RiKSBwIGFycmF5ICgxOjEwOjIsIDI6 MTA6MikKKyAgQSBzeW50YXggZXJyb3IgaW4gZXhwcmVzc2lvbiwgbmVhciBgOjIsIDI6MTA6Mikn LgorCitOb3c6CisKKyAgKGdkYikgcCBhcnJheSAoMToxMDoyLCAyOjEwOjIpCisgIEZvcnRyYW4g YXJyYXkgc3RyaWRlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQKKworTGF0ZXIgY29tbWl0 cyB3aWxsIGFsbG93IEdEQiB0byBoYW5kbGUgYXJyYXkgc3RyaWRlcyBjb3JyZWN0bHkuCisKK2dk Yi9DaGFuZ2VMb2c6CisKKwkqIGV4cHByaW50LmMgKGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQp OiBQcmludCBSQU5HRV9IQVNfU1RSSURFLgorCSogZXhwcmVzc2lvbi5oIChlbnVtIHJhbmdlX3R5 cGUpOiBBZGQgUkFOR0VfSEFTX1NUUklERS4KKwkqIGYtZXhwLnkgKGFyZ2xpc3QpOiBBbGxvdyBm b3IgYSBzZXJpZXMgb2Ygc3VicmFuZ2VzLgorCShzdWJyYW5nZSk6IEFkZCBjYXNlcyBmb3Igc3Vi cmFuZ2VzIHdpdGggc3RyaWRlcy4KKwkqIGYtbGFuZy5jICh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBD YXRjaCB1c2Ugb2YgYXJyYXkgc3RyaWRlcyBhbmQKKwl0aHJvdyBhbiBlcnJvci4KKwkqIHBhcnNl LmMgKG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCk6IEhhbmRsZSBSQU5HRV9IQVNfU1RSSURFLgor CitnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKKworCSogZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2Vz LmV4cDogQWRkIGEgbmV3IHRlc3QuCisKK2RpZmYgLS1naXQgYS9nZGIvZXhwcHJpbnQuYyBiL2dk Yi9leHBwcmludC5jCistLS0gYS9nZGIvZXhwcHJpbnQuYworKysrIGIvZ2RiL2V4cHByaW50LmMK K0BAIC0xMTE4LDEyICsxMTE4LDE2IEBAIGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQgKHN0cnVj dCBleHByZXNzaW9uICpleHAsCisgCWZwdXRzX2ZpbHRlcmVkICgiLi4iLCBzdHJlYW0pOworIAlp ZiAoIShyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkKKyAJICBmcHV0c19m aWx0ZXJlZCAoIkVYUCIsIHN0cmVhbSk7CisrCWlmIChyYW5nZV9mbGFnICYgUkFOR0VfSEFTX1NU UklERSkKKysJICBmcHV0c19maWx0ZXJlZCAoIjpFWFAiLCBzdHJlYW0pOworIAlmcHV0c19maWx0 ZXJlZCAoIiciLCBzdHJlYW0pOworIAorIAlpZiAoIShyYW5nZV9mbGFnICYgUkFOR0VfTE9XX0JP VU5EX0RFRkFVTFQpKQorIAkgIGVsdCA9IGR1bXBfc3ViZXhwIChleHAsIHN0cmVhbSwgZWx0KTsK KyAJaWYgKCEocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCisgCSAgZWx0 ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworKwlpZiAocmFuZ2VfZmxhZyAmIFJB TkdFX0hBU19TVFJJREUpCisrCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQp OworICAgICAgIH0KKyAgICAgICBicmVhazsKKyAKK2RpZmYgLS1naXQgYS9nZGIvZXhwcmVzc2lv bi5oIGIvZ2RiL2V4cHJlc3Npb24uaAorLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAorKysrIGIvZ2Ri L2V4cHJlc3Npb24uaAorQEAgLTE5OSw2ICsxOTksOSBAQCBlbnVtIHJhbmdlX2ZsYWcgOiB1bnNp Z25lZAorIAorICAgLyogVGhlIGhpZ2ggYm91bmQgb2YgdGhpcyByYW5nZSBpcyBleGNsdXNpdmUu ICAqLworICAgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUgPSAxIDw8IDIsCisrCisrICAvKiBU aGUgcmFuZ2UgaGFzIGEgc3RyaWRlLiAgKi8KKysgIFJBTkdFX0hBU19TVFJJREUgPSAxIDw8IDMs CisgfTsKKyAKKyBERUZfRU5VTV9GTEFHU19UWVBFIChlbnVtIHJhbmdlX2ZsYWcsIHJhbmdlX2Zs YWdzKTsKK2RpZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55CistLS0gYS9nZGIv Zi1leHAueQorKysrIGIvZ2RiL2YtZXhwLnkKK0BAIC0yODQsNiArMjg0LDEwIEBAIGFyZ2xpc3QJ OglhcmdsaXN0ICcsJyBleHAgICAlcHJlYyBBQk9WRV9DT01NQQorIAkJCXsgcHN0YXRlLT5hcmds aXN0X2xlbisrOyB9CisgCTsKKyAKKythcmdsaXN0CToJYXJnbGlzdCAnLCcgc3VicmFuZ2UgICAl cHJlYyBBQk9WRV9DT01NQQorKwkJCXsgcHN0YXRlLT5hcmdsaXN0X2xlbisrOyB9CisrCTsKKysK KyAvKiBUaGVyZSBhcmUgZm91ciBzb3J0cyBvZiBzdWJyYW5nZSB0eXBlcyBpbiBGOTAuICAqLwor IAorIHN1YnJhbmdlOglleHAgJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQorQEAgLTMxNCw2ICsz MTgsMzggQEAgc3VicmFuZ2U6CSc6JwklcHJlYyBBQk9WRV9DT01NQQorIAkJCSAgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9CisgCTsKKyAKKysvKiBBbmQgZWFjaCBv ZiB0aGUgZm91ciBzdWJyYW5nZSB0eXBlcyBjYW4gYWxzbyBoYXZlIGEgc3RyaWRlLiAgKi8KKytz dWJyYW5nZToJZXhwICc6JyBleHAgJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQorKwkJCXsgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOworKwkJCSAgd3JpdGVfZXhwX2Vs dF9sb25nY3N0IChwc3RhdGUsIFJBTkdFX0hBU19TVFJJREUpOworKwkJCSAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9CisrCTsKKysKKytzdWJyYW5nZToJZXhwICc6 JyAnOicgZXhwCSVwcmVjIEFCT1ZFX0NPTU1BCisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAo cHN0YXRlLCBPUF9SQU5HRSk7CisrCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwK KysJCQkJCQkgKFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVAorKwkJCQkJCSAgfCBSQU5HRV9IQVNf U1RSSURFKSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7 IH0KKysJOworKworK3N1YnJhbmdlOgknOicgZXhwICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEK KysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKKysJCQkgIHdy aXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAorKwkJCQkJCSAoUkFOR0VfTE9XX0JPVU5EX0RF RkFVTFQKKysJCQkJCQkgIHwgUkFOR0VfSEFTX1NUUklERSkpOworKwkJCSAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9CisrCTsKKysKKytzdWJyYW5nZToJJzonICc6 JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKKysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3Rh dGUsIE9QX1JBTkdFKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAorKwkJ CQkJCSAoUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQKKysJCQkJCQkgIHwgUkFOR0VfSElHSF9CT1VO RF9ERUZBVUxUCisrCQkJCQkJICB8IFJBTkdFX0hBU19TVFJJREUpKTsKKysJCQkgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQorKwk7CisrCisgY29tcGxleG51bTog ICAgIGV4cCAnLCcgZXhwIAorICAgICAgICAgICAgICAgICAJeyB9ICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgIDsKK2RpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmMgYi9nZGIvZi1s YW5nLmMKKy0tLSBhL2dkYi9mLWxhbmcuYworKysrIGIvZ2RiL2YtbGFuZy5jCitAQCAtMTI0LDcg KzEyNCw3IEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKKyAJCSAg ICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQor IHsKKyAgIGludCBwYyA9ICgqcG9zKSArIDE7CistICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9i b3VuZDsKKysgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kLCBzdHJpZGU7CisgICBzdHJ1 Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSktPmluZGV4 X3R5cGUgKCkpOworICAgZW51bSByYW5nZV9mbGFnIHJhbmdlX2ZsYWcKKyAgICAgPSAoZW51bSBy YW5nZV9mbGFnKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOworQEAg LTE0MSw2ICsxNDEsMTQgQEAgdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5 LAorICAgZWxzZQorICAgICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3Vi ZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7CisgCisrICBpZiAocmFuZ2VfZmxhZyAm IFJBTkdFX0hBU19TVFJJREUpCisrICAgIHN0cmlkZSA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRl X3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOworKyAgZWxzZQorKyAgICBzdHJp ZGUgPSAxOworKworKyAgaWYgKHN0cmlkZSAhPSAxKQorKyAgICBlcnJvciAoXygiRm9ydHJhbiBh cnJheSBzdHJpZGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCIpKTsKKysKKyAgIHJldHVy biB2YWx1ZV9zbGljZSAoYXJyYXksIGxvd19ib3VuZCwgaGlnaF9ib3VuZCAtIGxvd19ib3VuZCAr IDEpOworIH0KKyAKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCistLS0g YS9nZGIvcGFyc2UuYworKysrIGIvZ2RiL3BhcnNlLmMKK0BAIC05MjQsNiArOTI0LDggQEAgb3Bl cmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwciwgaW50 IGVuZHBvcywKKyAgICAgICAvKiBBc3N1bWUgdGhlIHJhbmdlIGhhcyAyIGFyZ3VtZW50cyAobG93 IGJvdW5kIGFuZCBoaWdoIGJvdW5kKSwgdGhlbgorIAkgcmVkdWNlIHRoZSBhcmd1bWVudCBjb3Vu dCBpZiBhbnkgYm91bmRzIGFyZSBzZXQgdG8gZGVmYXVsdC4gICovCisgICAgICAgYXJncyA9IDI7 CisrICAgICAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9IQVNfU1RSSURFKQorKwkrK2FyZ3M7Cisg ICAgICAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkKKyAJLS1hcmdz OworICAgICAgIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKQorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cAorLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAKK0BAIC02NiwzICs2NiwxOSBAQCBmb3JlYWNoIHJl c3VsdCAkYXJyYXlfY29udGVudHMgbXNnICRtZXNzYWdlX3N0cmluZ3MgeworIH0KKyAKKyBnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gRmluYWwgQnJlYWtwb2ludCIKKysK KysjIE5leHQgdGVzdCB0aGF0IGFza2luZyBmb3IgYW4gYXJyYXkgd2l0aCBzdHJpZGUgYXQgdGhl IENMSSBnaXZlcyBhbgorKyMgZXJyb3IuCisrY2xlYW5fcmVzdGFydCAke3Rlc3RmaWxlfQorKwor K2lmICFbZm9ydHJhbl9ydW50b19tYWluXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gbWFpbiIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQgInNob3ci CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInNob3ciCisrZ2RiX3Rlc3QgInVwIiAiLioi CisrZ2RiX3Rlc3QgInAgYXJyYXkgKDE6MTA6MiwgMToxMDoyKSIgXAorKyAgICAiRm9ydHJhbiBh cnJheSBzdHJpZGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCIgXAorKyAgICAidXNpbmcg YXJyYXkgc3RyaWRlIGdpdmVzIGFuIGVycm9yIgoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk2NDE2 Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Npb24tZXZhbHVhdGlvbi5wYXRjaCBiL2dk Yi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Npb24tZXZhbHVhdGlv bi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjYyMDIyCi0tLSAv ZGV2L251bGwKKysrIGIvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXktZXhw cmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjA5IEBACitGcm9tIEZFRE9SQV9Q QVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4gQnVldHRuZXIgPGtl dmluYkByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNjo1MzoyMiAtMDcwMAor U3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXktZXhwcmVzc2lv bi1ldmFsdWF0aW9uLnBhdGNoCisKKzs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2Vz cydzIGNvbW1pdCB3aGljaCBjbGVhbnMgdXAKKzs7IGFycmF5L3N0cmluZyBleHByZXNzaW9uIGV2 YWx1YXRpb24uCisKK2dkYi9mb3J0cmFuOiBDbGVhbiB1cCBhcnJheS9zdHJpbmcgZXhwcmVzc2lv biBldmFsdWF0aW9uCisKK1RoaXMgY29tbWl0IGlzIGEgcmVmYWN0b3Igb2YgcGFydCBvZiB0aGUg Rm9ydHJhbiBhcnJheSBhbmQgc3RyaW5nCitoYW5kbGluZyBjb2RlLgorCitUaGUgY3VycmVudCBj b2RlIGlzIHNwbGl0IGludG8gdHdvIGJsb2NrcywgbGlua2VkLCB3ZWlyZGx5LCB3aXRoIGEKK2dv dG8uICBBZnRlciB0aGlzIGNvbW1pdCBhbGwgdGhlIGNvZGUgaXMgbW92ZWQgdG8gaXRzIG93biBm dW5jdGlvbiwKK2FuZCBhcnJheXMgYW5kIHN0cmluZ3MgYXJlIG5vdyBoYW5kbGVkIHVzaW5nIHRo ZSBzYW1lIGNvZGU7IHRoaXMgd2lsbAorYmUgdXNlZnVsIGxhdGVyIHdoZW4gSSB3YW50IHRvIGFk ZCBhcnJheSBzdHJpZGUgc3VwcG9ydCB3aGVyZSBzdHJpbmdzCit3aWxsIHdhbnQgdG8gYmUgdHJl YXRlZCBqdXN0IGxpa2UgYXJyYXlzLCBidXQgaXMgYSBnb29kIGNsZWFuIHVwIGV2ZW4KK3dpdGhv dXQgdGhlIGFycmF5IHN0cmlkZSB3b3JrLCB3aGljaCBpcyB3aHkgSSdtIG1lcmdpbmcgaXQgbm93 LgorCitGb3Igbm93IHRoZSBuZXcgZnVuY3Rpb24gaXMgYWRkZWQgYXMgYSBzdGF0aWMgd2l0aGlu IGV2YWwuYywgZXZlbgordGhvdWdoIHRoZSBmdW5jdGlvbiBpcyBGb3J0cmFuIG9ubHkuICBBIGZv bGxvd2luZyBjb21taXQgd2lsbCByZW1vdmUKK3NvbWUgb2YgdGhlIEZvcnRyYW4gc3BlY2lmaWMg Y29kZSBmcm9tIGV2YWwuYyBpbnRvIG9uZSBvZiB0aGUgRm9ydHJhbgorc3BlY2lmaWMgZmlsZXMs IGluY2x1ZGluZyB0aGlzIG5ldyBmdW5jdGlvbi4KKworVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIg dmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgorCitnZGIvQ2hhbmdlTG9nOgorCisJ KiBldmFsLmMgKGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBOZXcgZnVuY3Rpb24sIGNvbnRlbnQg aXMgdGFrZW4KKwlmcm9tLi4uCisJKGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCk6IC4uLmhlcmUs IGluIHR3byBwbGFjZXMuICBOb3cgYXJyYXlzCisJYW5kIHN0cmluZ3MgYm90aCBjYWxsIHRoZSBu ZXcgZnVuY3Rpb24uCisJKGNhbGNfZjc3X2FycmF5X2RpbXMpOiBBZGQgaGVhZGVyIGNvbW1lbnQs IGhhbmRsZSBzdHJpbmdzLgorCitkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMK Ky0tLSBhL2dkYi9ldmFsLmMKKysrKyBiL2dkYi9ldmFsLmMKK0BAIC0xMjYwLDYgKzEyNjAsNjcg QEAgaXNfaW50ZWdyYWxfb3JfaW50ZWdyYWxfcmVmZXJlbmNlIChzdHJ1Y3QgdHlwZSAqdHlwZSkK KyAJICAmJiBpc19pbnRlZ3JhbF90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpOworIH0K KyAKKysvKiBDYWxsZWQgZnJvbSBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgdG8gcGVyZm9ybSBh cnJheSBpbmRleGluZywgYW5kCisrICAgc3ViLXJhbmdlIGV4dHJhY3Rpb24sIGZvciBGb3J0cmFu LiAgQXMgd2VsbCBhcyBhcnJheXMgdGhpcyBmdW5jdGlvbgorKyAgIGFsc28gaGFuZGxlcyBzdHJp bmdzIGFzIHRoZXkgY2FuIGJlIHRyZWF0ZWQgbGlrZSBhcnJheXMgb2YgY2hhcmFjdGVycy4KKysg ICBBUlJBWSBpcyB0aGUgYXJyYXkgb3Igc3RyaW5nIGJlaW5nIGFjY2Vzc2VkLiAgRVhQLCBQT1Ms IGFuZCBOT1NJREUgYXJlCisrICAgYXMgZm9yIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCwgYW5k IE5BUkdTIGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCisrICAgaW4gdGhpcyBhY2Nlc3MgKGUu Zy4gJ2FycmF5ICgxLDIsMyknIHdvdWxkIGJlIE5BUkdTIDMpLiAgKi8KKysKKytzdGF0aWMgc3Ry dWN0IHZhbHVlICoKKytmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5 LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorKwkJCWludCAqcG9zLCBpbnQgbmFyZ3MsIGVudW0g bm9zaWRlIG5vc2lkZSkKKyt7CisrICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9S QU5HRSkKKysgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJyYXksIGV4cCwgcG9zLCBu b3NpZGUpOworKworKyAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCisrICAgIHsKKysgICAgICBz a2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChuYXJncywgZXhwLCBwb3MsIG5vc2lkZSk7CisrICAg ICAgLyogUmV0dXJuIHRoZSBkdW1teSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLwor KyAgICAgIHJldHVybiBhcnJheTsKKysgICAgfQorKworKyAgTE9OR0VTVCBzdWJzY3JpcHRfYXJy YXlbTUFYX0ZPUlRSQU5fRElNU107CisrICBpbnQgbmRpbWVuc2lvbnMgPSAxOworKyAgc3RydWN0 IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOworKworKyAg aWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKKysgICAgZXJyb3IgKF8oIlRvbyBtYW55IHN1 YnNjcmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsKKysKKysgIG5k aW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7CisrCisrICBpZiAobmFyZ3Mg IT0gbmRpbWVuc2lvbnMpCisrICAgIGVycm9yIChfKCJXcm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0 cyIpKTsKKysKKysgIGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7CisrCisrICAvKiBOb3cgdGhhdCB3 ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBsZXQgdXMK KysgICAgIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMgZWxlbWVudCBleGlzdHMgaW4gdGhl IGFycmF5LiAgKi8KKysKKysgIC8qIFRha2UgYXJyYXkgaW5kaWNlcyBsZWZ0IHRvIHJpZ2h0LiAg Ki8KKysgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKKysgICAgeworKyAgICAgIC8q IEV2YWx1YXRlIGVhY2ggc3Vic2NyaXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBG NzcuICAqLworKyAgICAgIHZhbHVlICphcmcyID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNp b24gKGV4cCwgcG9zLCBub3NpZGUpOworKworKyAgICAgIC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlw dCBhcnJheS4gICovCisrICAgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNfbG9uZyAo YXJnMik7CisrICAgIH0KKysKKysgIC8qIEludGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5n ZWQgcmlnaHQgdG8gbGVmdC4gICovCisrICBmb3IgKGludCBpID0gbmFyZ3M7IGkgPiAwOyBpLS0p CisrICAgIHsKKysgICAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHZhbHVlX3R5cGUgKGFycmF5KSk7CisrICAgICAgTE9OR0VTVCBpbmRleCA9IHN1YnNjcmlwdF9h cnJheVtpIC0gMV07CisrCisrICAgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUg KGFycmF5LCBpbmRleCwKKysJCQkJCWY3N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOwor KyAgICB9CisrCisrICByZXR1cm4gYXJyYXk7CisrfQorKworIHN0cnVjdCB2YWx1ZSAqCisgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCQkJICBz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKK0BAIC0xOTUzLDMzICsyMDE0LDggQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgICAg ICAgc3dpdGNoIChjb2RlKQorIAl7CisgCWNhc2UgVFlQRV9DT0RFX0FSUkFZOgorLQkgIGlmIChl eHAtPmVsdHNbKnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQorLQkgICAgcmV0dXJuIHZhbHVlX2Y5 MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7CistCSAgZWxzZQorLQkgICAgewor LQkgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKKy0JCXsKKy0JCSAgc2tpcF91bmRldGVy bWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOworLQkJICAvKiBSZXR1cm4g dGhlIGR1bW15IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4gICovCistCQkgIHJldHVybiBh cmcxOworLQkJfQorLQkgICAgICBnb3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7CistCSAgICB9Cist CisgCWNhc2UgVFlQRV9DT0RFX1NUUklORzoKKy0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29k ZSA9PSBPUF9SQU5HRSkKKy0JICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFyZzEsIGV4 cCwgcG9zLCBub3NpZGUpOworLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAgaWYgKG5vc2lkZSA9 PSBFVkFMX1NLSVApCistCQl7CistCQkgIHNraXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3QgKG5hcmdz LCBleHAsIHBvcywgbm9zaWRlKTsKKy0JCSAgLyogUmV0dXJuIHRoZSBkdW1teSB2YWx1ZSB3aXRo IHRoZSBjb3JyZWN0IHR5cGUuICAqLworLQkJICByZXR1cm4gYXJnMTsKKy0JCX0KKy0JICAgICAg YXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsK Ky0JICAgICAgcmV0dXJuIHZhbHVlX3N1YnNjcmlwdCAoYXJnMSwgdmFsdWVfYXNfbG9uZyAoYXJn MikpOworLQkgICAgfQorKwkgIHJldHVybiBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChhcmcxLCBl eHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7CisgCisgCWNhc2UgVFlQRV9DT0RFX1BUUjoKKyAJY2Fz ZSBUWVBFX0NPREVfRlVOQzoKK0BAIC0yNDAwLDQ5ICsyNDM2LDYgQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCX0KKyAgICAgICByZXR1cm4g KGFyZzEpOworIAorLSAgICBtdWx0aV9mNzdfc3Vic2NyaXB0OgorLSAgICAgIHsKKy0JTE9OR0VT VCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CistCWludCBuZGltZW5zaW9ucyA9 IDEsIGk7CistCXN0cnVjdCB2YWx1ZSAqYXJyYXkgPSBhcmcxOworLQorLQlpZiAobmFyZ3MgPiBN QVhfRk9SVFJBTl9ESU1TKQorLQkgIGVycm9yIChfKCJUb28gbWFueSBzdWJzY3JpcHRzIGZvciBG NzcgKCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7CistCistCW5kaW1lbnNpb25zID0gY2Fs Y19mNzdfYXJyYXlfZGltcyAodHlwZSk7CistCistCWlmIChuYXJncyAhPSBuZGltZW5zaW9ucykK Ky0JICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMiKSk7CistCistCWdkYl9h c3NlcnQgKG5hcmdzID4gMCk7CistCistCS8qIE5vdyB0aGF0IHdlIGtub3cgd2UgaGF2ZSBhIGxl Z2FsIGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9uIAorLQkgICBsZXQgdXMgYWN0dWFsbHkgZmlu ZCBvdXQgd2hlcmUgdGhpcyBlbGVtZW50IGV4aXN0cyBpbiB0aGUgYXJyYXkuICAqLworLQorLQkv KiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4gICovCistCWZvciAoaSA9IDA7IGkg PCBuYXJnczsgaSsrKQorLQkgIHsKKy0JICAgIC8qIEV2YWx1YXRlIGVhY2ggc3Vic2NyaXB0OyBp dCBtdXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBGNzcuICAqLworLQkgICAgYXJnMiA9IGV2YWx1 YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKKy0KKy0JICAgIC8q IEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJheS4gICovCistCistCSAgICBzdWJzY3JpcHRfYXJy YXlbaV0gPSB2YWx1ZV9hc19sb25nIChhcmcyKTsKKy0JICB9CistCistCS8qIEludGVybmFsIHR5 cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICovCistCWZvciAoaSA9IG5h cmdzOyBpID4gMDsgaS0tKQorLQkgIHsKKy0JICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKKy0JICAgIExPTkdFU1QgaW5kZXgg PSBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOworLQorLQkgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3Jp cHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKKy0JCQkJCSAgICAgIGY3N19nZXRfbG93ZXJib3Vu ZCAoYXJyYXlfdHlwZSkpOworLQkgIH0KKy0KKy0JcmV0dXJuIGFycmF5OworLSAgICAgIH0KKy0K KyAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKKyAgICAgICBhcmcxID0gZXZhbHVhdGVfc3Vi ZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKKyAgICAgICBpZiAobm9zaWRlID09IEVW QUxfU0tJUCkKK0BAIC0zMzU0LDEyICszMzQ3LDE3IEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNo YXIgKnAsIGludCBsZW5ndGgpCisgICByZXR1cm4gZXhwci0+ZWx0c1sxXS50eXBlOworIH0KKyAK KysvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGZvciBhIEZvcnRyYW4gYXJyYXkg b3Igc3RyaW5nLiAgKi8KKysKKyBpbnQKKyBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlw ZSAqYXJyYXlfdHlwZSkKKyB7CisgICBpbnQgbmRpbWVuID0gMTsKKyAgIHN0cnVjdCB0eXBlICp0 bXBfdHlwZTsKKyAKKysgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RS SU5HKSkKKysgICAgcmV0dXJuIDE7CisrCisgICBpZiAoKGFycmF5X3R5cGUtPmNvZGUgKCkgIT0g VFlQRV9DT0RFX0FSUkFZKSkKKyAgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZv ciBhIG5vbi1hcnJheSB0eXBlIikpOworIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk2NDE2Ny1m b3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1pbi1mLWxhbmcuYy5wYXRjaCBiL2dkYi1y aGJ6MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1pbi1mLWxhbmcuYy5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2RiODI4Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tZml4LXR5cGUtZm9ybWF0LW1pc21h dGNoLWluLWYtbGFuZy5jLnBhdGNoCkBAIC0wLDAgKzEsMTI4IEBACitGcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmlu YkByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyNSBNYXkgMjAyMSAxNzozNDo1NyAtMDcwMAorU3Vi amVjdDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tZml4LXR5cGUtZm9ybWF0LW1pc21hdGNoLWlu LWYtbGFuZy5jLnBhdGNoCisKKzs7IFtmb3J0cmFuXSBCYWNrcG9ydCBTaW1vbiBNYXJjaGkncyBj b21taXQgd2hpY2ggZml4ZXMgYSAzMi1iaXQgYnVpbGQKKzs7IHByb2JsZW0gaW4gZ2RiL2YtbGFu Zy5jLgorCitnZGI6IGZpeCBmb3JtYXQgc3RyaW5nIHdhcm5pbmdzIGluIGYtbGFuZy5jCisKK0kg Z2V0IGEgYnVuY2ggb2YgdGhlc2Ugd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgZm9yIGkzODYgKDMy LWJpdCk6CisKKyAgICAgIENYWCAgICBmLWxhbmcubworICAgIC9ob21lL3NpbWFyay9zcmMvYmlu dXRpbHMtZ2RiL2dkYi9mLWxhbmcuYzogSW4gZnVuY3Rpb24gJ3ZhbHVlKiBmb3J0cmFuX3ZhbHVl X3N1YmFycmF5KHZhbHVlKiwgZXhwcmVzc2lvbiosIGludCosIGludCwgbm9zaWRlKSc6CisgICAg L2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2YtbGFuZy5jOjQ1Mzo0ODogZXJyb3I6 IGZvcm1hdCAnJWxkJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcgaW50JywgYnV0IGFy Z3VtZW50IDIgaGFzIHR5cGUgJ0xPTkdFU1QnIHtha2EgJ2xvbmcgbG9uZyBpbnQnfSBbLVdlcnJv cj1mb3JtYXQ9XQorICAgICAgNDUzIHwgICAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+ IExvdyBib3VuZDogJWxkXG4iLCBsYik7CisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB+fl4gICAgIH5+CisgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwKKyAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg TE9OR0VTVCB7YWthIGxvbmcgbG9uZyBpbnR9CisgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50CisgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlbGxkCisKK0ZpeCB0aGVt IGJ5IHVzaW5nIHBsb25nZXN0L3B1bG9uZ2VzdC4KKworZ2RiL0NoYW5nZUxvZzoKKworCSogZi1s YW5nLmMgKGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBVc2UgcGxvbmdlc3QvcHVsb25nZXN0Lgor CitDaGFuZ2UtSWQ6IEk2NjZlYWQ1NTkzNjUzZDVhMWEzZGFiMmZmZGM3Mjk0MmM5MjhjN2QyCisK K2RpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmMgYi9nZGIvZi1sYW5nLmMKKy0tLSBhL2dkYi9mLWxh bmcuYworKysrIGIvZ2RiL2YtbGFuZy5jCitAQCAtNDYzLDIxICs0NjMsMjEgQEAgZm9ydHJhbl92 YWx1ZV9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwKKyAJICAgICAgc3RkOjpzdHJpbmcgc3RyID0gdHlwZV90b19zdHJpbmcgKGRpbV90eXBlKTsK KyAJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBUeXBlOiAlc1xuIiwgc3RyLmNfc3RyICgp KTsKKyAJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBBcnJheTpcbiIpOworLQkgICAgICBk ZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVsZFxuIiwgbGIpOworLQkgICAg ICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBIaWdoIGJvdW5kOiAlbGRcbiIsIHViKTsKKy0J ICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQml0IHN0cmlkZTogJWxkXG4iLCBzZCk7 CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJ5dGUgc3RyaWRlOiAlbGRcbiIs IHNkIC8gOCk7CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IFR5cGUgc2l6ZTog JWxkXG4iLAorLQkJCSAgICBUWVBFX0xFTkdUSCAoZGltX3R5cGUpKTsKKy0JICAgICAgZGVidWdf cHJpbnRmICgifCAgIHwgICAnLT4gVGFyZ2V0IHR5cGUgc2l6ZTogJWxkXG4iLAorLQkJCSAgICBU WVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwg ICB8LT4gTG93IGJvdW5kOiAlc1xuIiwgcGxvbmdlc3QgKGxiKSk7CisrCSAgICAgIGRlYnVnX3By aW50ZiAoInwgICB8ICAgfC0+IEhpZ2ggYm91bmQ6ICVzXG4iLCBwbG9uZ2VzdCAodWIpKTsKKysJ ICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQml0IHN0cmlkZTogJXNcbiIsIHBsb25n ZXN0IChzZCkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBCeXRlIHN0cmlk ZTogJXNcbiIsIHBsb25nZXN0IChzZCAvIDgpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAg IHwgICB8LT4gVHlwZSBzaXplOiAlc1xuIiwKKysJCQkgICAgcHVsb25nZXN0IChUWVBFX0xFTkdU SCAoZGltX3R5cGUpKSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgJy0+IFRhcmdl dCB0eXBlIHNpemU6ICVzXG4iLAorKwkJCSAgICBwdWxvbmdlc3QgKFRZUEVfTEVOR1RIICh0YXJn ZXRfdHlwZSkpKTsKKyAJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBBY2Nlc3Npbmc6XG4i KTsKKy0JICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAlbGRcbiIs CistCQkJICAgIGxvdyk7CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEhpZ2gg Ym91bmQ6ICVsZFxuIiwKKy0JCQkgICAgaGlnaCk7CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwg ICB8ICAgJy0+IEVsZW1lbnQgc3RyaWRlOiAlbGRcbiIsCistCQkJICAgIHN0cmlkZSk7CisrCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IExvdyBib3VuZDogJXNcbiIsCisrCQkJICAg IHBsb25nZXN0IChsb3cpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gSGln aCBib3VuZDogJXNcbiIsCisrCQkJICAgIHBsb25nZXN0IChoaWdoKSk7CisrCSAgICAgIGRlYnVn X3ByaW50ZiAoInwgICB8ICAgJy0+IEVsZW1lbnQgc3RyaWRlOiAlc1xuIiwKKysJCQkgICAgcGxv bmdlc3QgKHN0cmlkZSkpOworIAkgICAgfQorIAorIAkgIC8qIENoZWNrIHRoZSB1c2VyIGhhc24n dCBhc2tlZCBmb3Igc29tZXRoaW5nIGludmFsaWQuICAqLworQEAgLTUxOSwxMyArNTE5LDE3IEBA IGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHBy ZXNzaW9uICpleHAsCisgCSAgaWYgKGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1ZykKKyAJICAg IHsKKyAJICAgICAgZGVidWdfcHJpbnRmICgifCAgICctPiBSZXN1bHRzOlxuIik7CistCSAgICAg IGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IE9mZnNldCA9ICVsZFxuIiwgb2Zmc2V0KTsKKy0J ICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gRWxlbWVudHMgPSAlbGRcbiIsIGVfY291 bnQpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBMb3cgYm91bmQgPSAlbGRc biIsIG5ld19sb3cpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBIaWdoIGJv dW5kID0gJWxkXG4iLCBuZXdfaGlnaCk7CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAg fC0+IEJ5dGUgc3RyaWRlID0gJWxkXG4iLCBuZXdfc3RyaWRlKTsKKy0JICAgICAgZGVidWdfcHJp bnRmICgifCAgICAgICB8LT4gTGFzdCBlbGVtZW50ID0gJWxkXG4iLCBsYXN0X2VsZW0pOworLQkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBSZW1haW5kZXIgPSAlbGRcbiIsIHJlbWFp bmRlcik7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IE9mZnNldCA9ICVzXG4i LCBwbG9uZ2VzdCAob2Zmc2V0KSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+ IEVsZW1lbnRzID0gJXNcbiIsIHBsb25nZXN0IChlX2NvdW50KSk7CisrCSAgICAgIGRlYnVnX3By aW50ZiAoInwgICAgICAgfC0+IExvdyBib3VuZCA9ICVzXG4iLCBwbG9uZ2VzdCAobmV3X2xvdykp OworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBIaWdoIGJvdW5kID0gJXNcbiIs CisrCQkJICAgIHBsb25nZXN0IChuZXdfaGlnaCkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8 ICAgICAgIHwtPiBCeXRlIHN0cmlkZSA9ICVzXG4iLAorKwkJCSAgICBwbG9uZ2VzdCAobmV3X3N0 cmlkZSkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBMYXN0IGVsZW1lbnQg PSAlc1xuIiwKKysJCQkgICAgcGxvbmdlc3QgKGxhc3RfZWxlbSkpOworKwkgICAgICBkZWJ1Z19w cmludGYgKCJ8ICAgICAgIHwtPiBSZW1haW5kZXIgPSAlc1xuIiwKKysJCQkgICAgcGxvbmdlc3Qg KHJlbWFpbmRlcikpOworIAkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgICctPiBDb250aWd1 b3VzID0gJXNcbiIsCisgCQkJICAgIChpc19kaW1fY29udGlndW91cyA/ICJZZXMiIDogIk5vIikp OworIAkgICAgfQorQEAgLTU2MSwxNCArNTY1LDE2IEBAIGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkg KHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCSAgICAgIHN0 ZDo6c3RyaW5nIHN0ciA9IHR5cGVfdG9fc3RyaW5nIChkaW1fdHlwZSk7CisgCSAgICAgIGRlYnVn X3ByaW50ZiAoInwgICB8LT4gVHlwZTogJXNcbiIsIHN0ci5jX3N0ciAoKSk7CisgCSAgICAgIGRl YnVnX3ByaW50ZiAoInwgICB8LT4gQXJyYXk6XG4iKTsKKy0JICAgICAgZGVidWdfcHJpbnRmICgi fCAgIHwgICB8LT4gTG93IGJvdW5kOiAlbGRcbiIsIGxiKTsKKy0JICAgICAgZGVidWdfcHJpbnRm ICgifCAgIHwgICB8LT4gSGlnaCBib3VuZDogJWxkXG4iLCB1Yik7CistCSAgICAgIGRlYnVnX3By aW50ZiAoInwgICB8ICAgfC0+IEJ5dGUgc3RyaWRlOiAlbGRcbiIsIHNkKTsKKy0JICAgICAgZGVi dWdfcHJpbnRmICgifCAgIHwgICB8LT4gVHlwZSBzaXplOiAlbGRcbiIsIFRZUEVfTEVOR1RIIChk aW1fdHlwZSkpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgICctPiBUYXJnZXQgdHlw ZSBzaXplOiAlbGRcbiIsCistCQkJICAgIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSkpOworKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVzXG4iLCBwbG9uZ2Vz dCAobGIpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gSGlnaCBib3VuZDog JXNcbiIsIHBsb25nZXN0ICh1YikpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwt PiBCeXRlIHN0cmlkZTogJXNcbiIsIHBsb25nZXN0IChzZCkpOworKwkgICAgICBkZWJ1Z19wcmlu dGYgKCJ8ICAgfCAgIHwtPiBUeXBlIHNpemU6ICVzXG4iLAorKwkJCSAgICBwdWxvbmdlc3QgKFRZ UEVfTEVOR1RIIChkaW1fdHlwZSkpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICAn LT4gVGFyZ2V0IHR5cGUgc2l6ZTogJXNcbiIsCisrCQkJICAgIHB1bG9uZ2VzdCAoVFlQRV9MRU5H VEggKHRhcmdldF90eXBlKSkpOworIAkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgJy0+IEFjY2Vz c2luZzpcbiIpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgICctPiBJbmRleDogJWxk XG4iLCBpbmRleCk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgJy0+IEluZGV4OiAl c1xuIiwKKysJCQkgICAgcGxvbmdlc3QgKGluZGV4KSk7CisgCSAgICB9CisgCisgCSAgLyogSWYg dGhlIGFycmF5IGhhcyBhY3R1YWwgY29udGVudCB0aGVuIGNoZWNrIHRoZSBpbmRleCBpcyBpbgor QEAgLTYyNSw3ICs2MzEsOCBAQCBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUg KmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorICAgICAgIGRlYnVnX3ByaW50ZiAoIict PiBGaW5hbCByZXN1bHQ6XG4iKTsKKyAgICAgICBkZWJ1Z19wcmludGYgKCIgICAgfC0+IFR5cGU6 ICVzXG4iLAorIAkJICAgIHR5cGVfdG9fc3RyaW5nIChhcnJheV9zbGljZV90eXBlKS5jX3N0ciAo KSk7CistICAgICAgZGVidWdfcHJpbnRmICgiICAgIHwtPiBUb3RhbCBvZmZzZXQ6ICVsZFxuIiwg dG90YWxfb2Zmc2V0KTsKKysgICAgICBkZWJ1Z19wcmludGYgKCIgICAgfC0+IFRvdGFsIG9mZnNl dDogJXNcbiIsCisrCQkgICAgcGxvbmdlc3QgKHRvdGFsX29mZnNldCkpOworICAgICAgIGRlYnVn X3ByaW50ZiAoIiAgICB8LT4gQmFzZSBhZGRyZXNzOiAlc1xuIiwKKyAJCSAgICBjb3JlX2FkZHJf dG9fc3RyaW5nICh2YWx1ZV9hZGRyZXNzIChhcnJheSkpKTsKKyAgICAgICBkZWJ1Z19wcmludGYg KCIgICAgJy0+IENvbnRpZ3VvdXMgPSAlc1xuIiwKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NjQx NjctZm9ydHJhbi1yYW5nZV90eXBlLXRvLXJhbmdlX2ZsYWcucGF0Y2ggYi9nZGItcmhiejE5NjQx NjctZm9ydHJhbi1yYW5nZV90eXBlLXRvLXJhbmdlX2ZsYWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZmVkMjM5YQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1yaGJ6 MTk2NDE2Ny1mb3J0cmFuLXJhbmdlX3R5cGUtdG8tcmFuZ2VfZmxhZy5wYXRjaApAQCAtMCwwICsx LDIyNCBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjQgTWF5 IDIwMjEgMTc6MTU6MjcgLTA3MDAKK1N1YmplY3Q6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXJh bmdlX3R5cGUtdG8tcmFuZ2VfZmxhZy5wYXRjaAorCis7OyBbZm9ydHJhbl0gQmFja3BvcnQgQW5k cmV3IEJ1cmdlc3MncyBjb21taXQgd2hpY2ggcmVuYW1lcyBlbnVtCis7OyByYW5nZV90eXBlIHRv IGVudW0gcmFuZ2VfZmxhZy4KKworZ2RiOiByZW5hbWUgJ2VudW0gcmFuZ2VfdHlwZScgdG8gJ2Vu dW0gcmFuZ2VfZmxhZycKKworVG8gYXZvaWQgY29uZnVzaW9uIHdpdGggb3RoZXIgcGFydHMgb2Yg R0RCIHJlbGF0aW5nIHRvIHR5cGVzIGFuZAorcmFuZ2VzLCByZW5hbWUgdGhpcyBlbnVtIHRvIG1h a2UgaXQgY2xlYXJlciB0aGF0IGl0IGlzIGEgc2V0IG9mCitpbmRpdmlkdWFsIGZsYWdzIHJhdGhl ciB0aGFuIGFuIGVudW1lcmF0aW9uIG9mIGRpZmZlcmVudCB0eXBlcyBvZgorcmFuZ2UuCisKK1Ro ZXJlIHNob3VsZCBiZSBubyB1c2VyIHZpc2libGUgY2hhbmdlcyBhZnRlciB0aGlzIGNvbW1pdC4K KworZ2RiL0NoYW5nZUxvZzoKKworCSogZXhwcHJpbnQuYyAocHJpbnRfc3ViZXhwX3N0YW5kYXJk KTogQ2hhbmdlIGVudW0gcmFuZ2VfdHlwZSB0bworCXJhbmdlX2ZsYWcgYW5kIHJlbmFtZSB2YXJp YWJsZXMgdG8gbWF0Y2guCisJKGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQpOiBMaWtld2lzZS4K KwkqIGV4cHJlc3Npb24uaCAoZW51bSByYW5nZV90eXBlKTogUmVuYW1lIHRvLi4uCisJKGVudW0g cmFuZ2VfZmxhZyk6IC4uLnRoaXMuCisJKHJhbmdlX3R5cGVzKTogUmVuYW1lIHRvLi4uCisJKHJh bmdlX2ZsYWdzKTogLi4udGhpcy4KKwkqIGYtbGFuZy5jICh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBD aGFuZ2UgZW51bSByYW5nZV90eXBlIHRvCisJcmFuZ2VfZmxhZyBhbmQgcmVuYW1lIHZhcmlhYmxl cyB0byBtYXRjaC4KKwkqIHBhcnNlLmMgKG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCk6IExpa2V3 aXNlLgorCSogcnVzdC1leHAueSAocnVzdF9wYXJzZXI6OmNvbnZlcnRfYXN0X3RvX2V4cHJlc3Np b24pOiBDaGFuZ2UgZW51bQorCXJhbmdlX3R5cGUgdG8gcmFuZ2VfZmxhZy4KKwkqIHJ1c3QtbGFu Zy5jIChydXN0X2V2YWx1YXRlX2Z1bmNhbGwpOiBMaWtld2lzZS4KKwkocnVzdF9yYW5nZSk6IExp a2V3aXNlLgorCShydXN0X2NvbXB1dGVfcmFuZ2UpOiBMaWtld2lzZS4KKwkocnVzdF9zdWJzY3Jp cHQpOiBMaWtld2lzZS4KKworZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5jIGIvZ2RiL2V4cHBy aW50LmMKKy0tLSBhL2dkYi9leHBwcmludC5jCisrKysgYi9nZGIvZXhwcHJpbnQuYworQEAgLTU3 OCwxOSArNTc4LDE5IEBAIHByaW50X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgaW50ICpwb3MsCisgCisgICAgIGNhc2UgT1BfUkFOR0U6CisgICAgICAgeworLQllbnVt IHJhbmdlX3R5cGUgcmFuZ2VfdHlwZTsKKysJZW51bSByYW5nZV9mbGFnIHJhbmdlX2ZsYWc7Cisg CistCXJhbmdlX3R5cGUgPSAoZW51bSByYW5nZV90eXBlKQorKwlyYW5nZV9mbGFnID0gKGVudW0g cmFuZ2VfZmxhZykKKyAJICBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjICsgMV0ubG9uZ2Nv bnN0KTsKKyAJKnBvcyArPSAyOworIAorLQlpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9V TkRfRVhDTFVTSVZFKQorKwlpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfRVhDTFVT SVZFKQorIAkgIGZwdXRzX2ZpbHRlcmVkICgiRVhDTFVTSVZFXyIsIHN0cmVhbSk7CisgCWZwdXRz X2ZpbHRlcmVkICgiUkFOR0UoIiwgc3RyZWFtKTsKKy0JaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdF X0xPV19CT1VORF9ERUZBVUxUKSkKKysJaWYgKCEocmFuZ2VfZmxhZyAmIFJBTkdFX0xPV19CT1VO RF9ERUZBVUxUKSkKKyAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJP VkVfQ09NTUEpOworIAlmcHV0c19maWx0ZXJlZCAoIi4uIiwgc3RyZWFtKTsKKy0JaWYgKCEocmFu Z2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCisrCWlmICghKHJhbmdlX2ZsYWcg JiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQorIAkgIHByaW50X3N1YmV4cCAoZXhwLCBwb3Ms IHN0cmVhbSwgUFJFQ19BQk9WRV9DT01NQSk7CisgCWZwdXRzX2ZpbHRlcmVkICgiKSIsIHN0cmVh bSk7CisgCXJldHVybjsKK0BAIC0xMTA0LDI1ICsxMTA0LDI1IEBAIGR1bXBfc3ViZXhwX2JvZHlf c3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgICAgICAgYnJlYWs7CisgICAgIGNh c2UgT1BfUkFOR0U6CisgICAgICAgeworLQllbnVtIHJhbmdlX3R5cGUgcmFuZ2VfdHlwZTsKKysJ ZW51bSByYW5nZV9mbGFnIHJhbmdlX2ZsYWc7CisgCistCXJhbmdlX3R5cGUgPSAoZW51bSByYW5n ZV90eXBlKQorKwlyYW5nZV9mbGFnID0gKGVudW0gcmFuZ2VfZmxhZykKKyAJICBsb25nZXN0X3Rv X2ludCAoZXhwLT5lbHRzW2VsdF0ubG9uZ2NvbnN0KTsKKyAJZWx0ICs9IDI7CisgCistCWlmIChy YW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUpCisrCWlmIChyYW5nZV9mbGFn ICYgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUpCisgCSAgZnB1dHNfZmlsdGVyZWQgKCJFeGNs dXNpdmUiLCBzdHJlYW0pOworIAlmcHV0c19maWx0ZXJlZCAoIlJhbmdlICciLCBzdHJlYW0pOwor LQlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQorKwlpZiAoIShy YW5nZV9mbGFnICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQorIAkgIGZwdXRzX2ZpbHRlcmVk ICgiRVhQIiwgc3RyZWFtKTsKKyAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7CistCWlm ICghKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQorKwlpZiAoIShyYW5n ZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkKKyAJICBmcHV0c19maWx0ZXJlZCAo IkVYUCIsIHN0cmVhbSk7CisgCWZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0cmVhbSk7CisgCistCWlm ICghKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCisrCWlmICghKHJhbmdl X2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCisgCSAgZWx0ID0gZHVtcF9zdWJleHAg KGV4cCwgc3RyZWFtLCBlbHQpOworLQlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VO RF9ERUZBVUxUKSkKKysJaWYgKCEocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVM VCkpCisgCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworICAgICAgIH0K KyAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4cHJl c3Npb24uaAorLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAorKysrIGIvZ2RiL2V4cHJlc3Npb24uaAor QEAgLTE4NSw3ICsxODUsNyBAQCBleHRlcm4gdm9pZCBkdW1wX3ByZWZpeF9leHByZXNzaW9uIChz dHJ1Y3QgZXhwcmVzc2lvbiAqLCBzdHJ1Y3QgdWlfZmlsZSAqKTsKKyAgICBvciBpbmNsdXNpdmUu ICBTbyB3ZSBoYXZlIHNpeCBzb3J0cyBvZiBzdWJyYW5nZS4gIFRoaXMgZW51bWVyYXRpb24KKyAg ICB0eXBlIGlzIHRvIGlkZW50aWZ5IHRoaXMuICAqLworIAorLWVudW0gcmFuZ2VfdHlwZSA6IHVu c2lnbmVkCisrZW51bSByYW5nZV9mbGFnIDogdW5zaWduZWQKKyB7CisgICAvKiBUaGlzIGlzIGEg c3RhbmRhcmQgcmFuZ2UuICBCb3RoIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmRzIGFyZQorICAg ICAgZGVmaW5lZCwgYW5kIHRoZSBib3VuZHMgYXJlIGluY2x1c2l2ZS4gICovCitAQCAtMjAxLDYg KzIwMSw2IEBAIGVudW0gcmFuZ2VfdHlwZSA6IHVuc2lnbmVkCisgICBSQU5HRV9ISUdIX0JPVU5E X0VYQ0xVU0lWRSA9IDEgPDwgMiwKKyB9OworIAorLURFRl9FTlVNX0ZMQUdTX1RZUEUgKGVudW0g cmFuZ2VfdHlwZSwgcmFuZ2VfdHlwZXMpOworK0RFRl9FTlVNX0ZMQUdTX1RZUEUgKGVudW0gcmFu Z2VfZmxhZywgcmFuZ2VfZmxhZ3MpOworIAorICNlbmRpZiAvKiAhZGVmaW5lZCAoRVhQUkVTU0lP Tl9IKSAqLworZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxhbmcuYworLS0tIGEv Z2RiL2YtbGFuZy5jCisrKysgYi9nZGIvZi1sYW5nLmMKK0BAIC0xMjYsMTcgKzEyNiwxNyBAQCB2 YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCisgICBpbnQgcGMgPSAoKnBv cykgKyAxOworICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CisgICBzdHJ1Y3QgdHlw ZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSktPmluZGV4X3R5cGUg KCkpOworLSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUKKy0gICAgPSAoZW51bSByYW5nZV90 eXBlKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOworKyAgZW51bSBy YW5nZV9mbGFnIHJhbmdlX2ZsYWcKKysgICAgPSAoZW51bSByYW5nZV9mbGFnKSBsb25nZXN0X3Rv X2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOworIAorICAgKnBvcyArPSAzOworIAorLSAg aWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkKKysgIGlmIChyYW5nZV9m bGFnICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpCisgICAgIGxvd19ib3VuZCA9IHJhbmdlLT5i b3VuZHMgKCktPmxvdy5jb25zdF92YWwgKCk7CisgICBlbHNlCisgICAgIGxvd19ib3VuZCA9IHZh bHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkp OworIAorLSAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpCisrICBp ZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkKKyAgICAgaGlnaF9ib3Vu ZCA9IHJhbmdlLT5ib3VuZHMgKCktPmhpZ2guY29uc3RfdmFsICgpOworICAgZWxzZQorICAgICBo aWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAs IHBvcywgbm9zaWRlKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYwor LS0tIGEvZ2RiL3BhcnNlLmMKKysrKyBiL2dkYi9wYXJzZS5jCitAQCAtNzc0LDcgKzc3NCw3IEBA IG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKmV4cHIs IGludCBlbmRwb3MsCisgeworICAgaW50IG9wbGVuID0gMTsKKyAgIGludCBhcmdzID0gMDsKKy0g IGVudW0gcmFuZ2VfdHlwZSByYW5nZV90eXBlOworKyAgZW51bSByYW5nZV9mbGFnIHJhbmdlX2Zs YWc7CisgICBpbnQgaTsKKyAKKyAgIGlmIChlbmRwb3MgPCAxKQorQEAgLTkxOCwxNSArOTE4LDE1 IEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKmV4 cHIsIGludCBlbmRwb3MsCisgCisgICAgIGNhc2UgT1BfUkFOR0U6CisgICAgICAgb3BsZW4gPSAz OworLSAgICAgIHJhbmdlX3R5cGUgPSAoZW51bSByYW5nZV90eXBlKQorKyAgICAgIHJhbmdlX2Zs YWcgPSAoZW51bSByYW5nZV9mbGFnKQorIAlsb25nZXN0X3RvX2ludCAoZXhwci0+ZWx0c1tlbmRw b3MgLSAyXS5sb25nY29uc3QpOworIAorICAgICAgIC8qIEFzc3VtZSB0aGUgcmFuZ2UgaGFzIDIg YXJndW1lbnRzIChsb3cgYm91bmQgYW5kIGhpZ2ggYm91bmQpLCB0aGVuCisgCSByZWR1Y2UgdGhl IGFyZ3VtZW50IGNvdW50IGlmIGFueSBib3VuZHMgYXJlIHNldCB0byBkZWZhdWx0LiAgKi8KKyAg ICAgICBhcmdzID0gMjsKKy0gICAgICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9E RUZBVUxUKQorKyAgICAgIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQp CisgCS0tYXJnczsKKy0gICAgICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVG QVVMVCkKKysgICAgICBpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkK KyAJLS1hcmdzOworIAorICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2dkYi9ydXN0LWV4cC55 IGIvZ2RiL3J1c3QtZXhwLnkKKy0tLSBhL2dkYi9ydXN0LWV4cC55CisrKysgYi9nZGIvcnVzdC1l eHAueQorQEAgLTI0OTIsNyArMjQ5Miw3IEBAIHJ1c3RfcGFyc2VyOjpjb252ZXJ0X2FzdF90b19l eHByZXNzaW9uIChjb25zdCBzdHJ1Y3QgcnVzdF9vcCAqb3BlcmF0aW9uLAorIAorICAgICBjYXNl IE9QX1JBTkdFOgorICAgICAgIHsKKy0JZW51bSByYW5nZV90eXBlIGtpbmQgPSAoUkFOR0VfSElH SF9CT1VORF9ERUZBVUxUCisrCXVuc2lnbmVkIGludCBraW5kID0gKFJBTkdFX0hJR0hfQk9VTkRf REVGQVVMVAorIAkJCQl8IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKTsKKyAKKyAJaWYgKG9wZXJh dGlvbi0+bGVmdC5vcCAhPSBOVUxMKQorZGlmZiAtLWdpdCBhL2dkYi9ydXN0LWxhbmcuYyBiL2dk Yi9ydXN0LWxhbmcuYworLS0tIGEvZ2RiL3J1c3QtbGFuZy5jCisrKysgYi9nZGIvcnVzdC1sYW5n LmMKK0BAIC0xMDcwLDcgKzEwNzAsNiBAQCBydXN0X2V2YWx1YXRlX2Z1bmNhbGwgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUpCisgc3RhdGljIHN0 cnVjdCB2YWx1ZSAqCisgcnVzdF9yYW5nZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpw b3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKKyB7CistICBlbnVtIHJhbmdlX3R5cGUga2luZDsKKyAg IHN0cnVjdCB2YWx1ZSAqbG93ID0gTlVMTCwgKmhpZ2ggPSBOVUxMOworICAgc3RydWN0IHZhbHVl ICphZGRydmFsLCAqcmVzdWx0OworICAgQ09SRV9BRERSIGFkZHI7CitAQCAtMTA3OSw3ICsxMDc4 LDggQEAgcnVzdF9yYW5nZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0g bm9zaWRlIG5vc2lkZSkKKyAgIHN0cnVjdCB0eXBlICp0ZW1wX3R5cGU7CisgICBjb25zdCBjaGFy ICpuYW1lOworIAorLSAga2luZCA9IChlbnVtIHJhbmdlX3R5cGUpIGxvbmdlc3RfdG9faW50IChl eHAtPmVsdHNbKnBvcyArIDFdLmxvbmdjb25zdCk7CisrICBhdXRvIGtpbmQKKysgICAgPSAoZW51 bSByYW5nZV9mbGFnKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzWypwb3MgKyAxXS5sb25nY29u c3QpOworICAgKnBvcyArPSAzOworIAorICAgaWYgKCEoa2luZCAmIFJBTkdFX0xPV19CT1VORF9E RUZBVUxUKSkKK0BAIC0xMTY5LDcgKzExNjksNyBAQCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorIHN0YXRpYyB2b2lkCisg cnVzdF9jb21wdXRlX3JhbmdlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHZhbHVlICpyYW5n ZSwKKyAJCSAgICBMT05HRVNUICpsb3csIExPTkdFU1QgKmhpZ2gsCistCQkgICAgcmFuZ2VfdHlw ZXMgKmtpbmQpCisrCQkgICAgcmFuZ2VfZmxhZ3MgKmtpbmQpCisgeworICAgaW50IGk7CisgCitA QCAtMTIwOSw3ICsxMjA5LDcgQEAgcnVzdF9zdWJzY3JpcHQgKHN0cnVjdCBleHByZXNzaW9uICpl eHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUsCisgICBzdHJ1Y3QgdHlwZSAqcmhzdHlw ZTsKKyAgIExPTkdFU1QgbG93LCBoaWdoX2JvdW5kOworICAgLyogSW5pdGlhbGl6ZWQgdG8gYXBw ZWFzZSB0aGUgY29tcGlsZXIuICAqLworLSAgcmFuZ2VfdHlwZXMga2luZCA9IFJBTkdFX0xPV19C T1VORF9ERUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUOworKyAgcmFuZ2VfZmxhZ3Mg a2luZCA9IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxU OworICAgTE9OR0VTVCBoaWdoID0gMDsKKyAgIGludCB3YW50X3NsaWNlID0gMDsKKyAKCmRpZmYg LS1naXQgYS9nZGItcmhiejE5NjQxNjctZm9ydHJhbi13aGl0ZXNwYWNlX2FycmF5LnBhdGNoIGIv Z2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4td2hpdGVzcGFjZV9hcnJheS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDIxNTU5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LXJoYnoxOTY0MTY3LWZvcnRyYW4td2hpdGVzcGFjZV9hcnJheS5wYXRjaApAQCAtMCwwICsxLDEz NyBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjQgTWF5IDIw MjEgMTc6MDc6MzYgLTA3MDAKK1N1YmplY3Q6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXdoaXRl c3BhY2VfYXJyYXkucGF0Y2gKKworOzsgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNz J3MgY29tbWl0IHdoaWNoIGVsaW1pbmF0ZXMgdW5kZXNpcmFibGUKKzs7IHdoaXRlc3BhY2Ugd2hl biBwcmludGluZyBhcnJheXMuCisKK2dkYi9mb3J0cmFuOiBDaGFuZ2Ugd2hpdGVzcGFjZSB3aGVu IHByaW50aW5nIGFycmF5cworCitUaGlzIGNvbW1pdCBtYWtlcyB0aGUgd2hpdGVzcGFjZSB1c2Fn ZSB3aGVuIHByaW50aW5nIEZvcnRyYW4gYXJyYXlzCittb3JlIGNvbnNpc3RlbnQsIGFuZCBtb3Jl IGlubGluZSB3aXRoIGhvdyB3ZSBwcmludCBDIGFycmF5cy4KKworQ3VycmVudGx5IGEgMiBkaW1l bnNpb25hbCBGb3RyYW4gYXJyYXkgaXMgcHJpbnRlZCBsaWtlIHRoaXMsIEkgZmluZAordGhlIG1h cmtlZCB3aGl0ZXNwYWNlIHVucGxlYXNhbnQ6CisKKyAgKCggMSwgMiwgMykgKCA0LCA1LCA2KSAp CisgICAgXiAgICAgICAgICBeICAgICAgICBeCisKK0FmdGVyIHRoaXMgY29tbWl0IHRoZSBzYW1l IGFycmF5IGlzIHByaW50ZWQgbGlrZSB0aGlzOgorCisgICgoMSwgMiwgMykgKDQsIDUsIDYpKQor CitXaGljaCBzZWVtcyBtb3JlIGlubGluZSB3aXRoIGhvdyB3ZSBwcmludCBDIGFycmF5cywgaW4g dGhlIGNhc2Ugb2YgQworYXJyYXlzIHdlIGRvbid0IGFkZCBleHRyYSB3aGl0ZXNwYWNlIGJlZm9y ZSB0aGUgZmlyc3QgZWxlbWVudC4KKworZ2RiL0NoYW5nZUxvZzoKKworCSogZi12YWxwcmludC5j IChmNzdfcHJpbnRfYXJyYXlfMSk6IEFkanVzdCBwcmludGluZyBvZiB3aGl0ZXNwYWNlCisJZm9y IGFycmF5cy4KKworZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisKKwkqIGdkYi5mb3J0cmFuL2Fy cmF5LXNsaWNlcy5leHA6IFVwZGF0ZSBleHBlY3RlZCByZXN1bHRzLgorCSogZ2RiLmZvcnRyYW4v Y2xhc3MtYWxsb2NhdGFibGUtYXJyYXkuZXhwOiBMaWtld2lzZS4KKwkqIGdkYi5mb3J0cmFuL211 bHRpLWRpbS5leHA6IExpa2V3aXNlLgorCSogZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZXhwOiBMaWtl d2lzZS4KKwkqIGdkYi5taS9taS12bGEtZm9ydHJhbi5leHA6IExpa2V3aXNlLgorCitkaWZmIC0t Z2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKKy0tLSBhL2dkYi9mLXZh bHByaW50LmMKKysrKyBiL2dkYi9mLXZhbHByaW50LmMKK0BAIC0xMzcsMTQgKzEzNywxNyBAQCBm NzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAq dHlwZSwKKyAJICAgIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgdmFsdWVfY29udGVudHNfZm9y X3ByaW50aW5nX2NvbnN0ICh2YWwpCisgCSAgICAgKyBvZmZzLCBhZGRyICsgb2Zmcyk7CisgCist CSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCAiKTsKKysJICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICIoIik7CisgCSAgZjc3X3ByaW50X2FycmF5XzEgKG5zcyArIDEsIG5kaW1lbnNp b25zLCB2YWx1ZV90eXBlIChzdWJhcnJheSksCisgCQkJICAgICB2YWx1ZV9jb250ZW50c19mb3Jf cHJpbnRpbmcgKHN1YmFycmF5KSwKKyAJCQkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoc3Vi YXJyYXkpLAorIAkJCSAgICAgdmFsdWVfYWRkcmVzcyAoc3ViYXJyYXkpLAorIAkJCSAgICAgc3Ry ZWFtLCByZWN1cnNlLCBzdWJhcnJheSwgb3B0aW9ucywgZWx0cyk7CisgCSAgb2ZmcyArPSBieXRl X3N0cmlkZTsKKy0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOworKwkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKKysKKysJICBpZiAoaSA8IHVwcGVyYm91bmQpCisr CSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgIik7CisgCX0KKyAgICAgICBpZiAoKmVs dHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCB1cHBlcmJvdW5kKQorIAlmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIuLi4iKTsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2FycmF5LXNsaWNlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5 LXNsaWNlcy5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2Vz LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCitA QCAtMzgsMTQgKzM4LDE0IEBAIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJG aW5hbCBCcmVha3BvaW50Il0KKyAKKyBzZXQgYXJyYXlfY29udGVudHMgXAorICAgICBbbGlzdCBc CistCSAiID0gXFwoXFwoIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXFwpIFxcKCAxMSwg MTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxcKSBcXCggMjEsIDIyLCAyMywgMjQs IDI1LCAyNiwgMjcsIDI4LCAyOSwgMzBcXCkgXFwoIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3 LCAzOCwgMzksIDQwXFwpIFxcKCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1 MFxcKSBcXCggNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjBcXCkgXFwoIDYx LCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwXFwpIFxcKCA3MSwgNzIsIDczLCA3 NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MFxcKSBcXCggODEsIDgyLCA4MywgODQsIDg1LCA4Niwg ODcsIDg4LCA4OSwgOTBcXCkgXFwoIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTks IDEwMFxcKSBcXCkiIFwKKy0JICIgPSBcXChcXCggMSwgMiwgMywgNCwgNVxcKSBcXCggMTEsIDEy LCAxMywgMTQsIDE1XFwpIFxcKCAyMSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoIDMxLCAzMiwgMzMs IDM0LCAzNVxcKSBcXCggNDEsIDQyLCA0MywgNDQsIDQ1XFwpIFxcKSIgXAorLQkgIiA9IFxcKFxc KCAxLCAzLCA1LCA3LCA5XFwpIFxcKCAyMSwgMjMsIDI1LCAyNywgMjlcXCkgXFwoIDQxLCA0Mywg NDUsIDQ3LCA0OVxcKSBcXCggNjEsIDYzLCA2NSwgNjcsIDY5XFwpIFxcKCA4MSwgODMsIDg1LCA4 NywgODlcXCkgXFwpIiBcCistCSAiID0gXFwoXFwoIDEsIDQsIDcsIDEwXFwpIFxcKCAyMSwgMjQs IDI3LCAzMFxcKSBcXCggNDEsIDQ0LCA0NywgNTBcXCkgXFwoIDYxLCA2NCwgNjcsIDcwXFwpIFxc KCA4MSwgODQsIDg3LCA5MFxcKSBcXCkiIFwKKy0JICIgPSBcXChcXCggMSwgNSwgOVxcKSBcXCgg MzEsIDM1LCAzOVxcKSBcXCggNjEsIDY1LCA2OVxcKSBcXCggOTEsIDk1LCA5OVxcKSBcXCkiIFwK Ky0JICIgPSBcXChcXCggLTI2LCAtMjUsIC0yNCwgLTIzLCAtMjIsIC0yMSwgLTIwLCAtMTksIC0x OCwgLTE3XFwpIFxcKCAtMTksIC0xOCwgLTE3LCAtMTYsIC0xNSwgLTE0LCAtMTMsIC0xMiwgLTEx LCAtMTBcXCkgXFwoIC0xMiwgLTExLCAtMTAsIC05LCAtOCwgLTcsIC02LCAtNSwgLTQsIC0zXFwp IFxcKCAtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIsIDMsIDRcXCkgXFwoIDIsIDMsIDQsIDUs IDYsIDcsIDgsIDksIDEwLCAxMVxcKSBcXCggOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYs IDE3LCAxOFxcKSBcXCggMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVcXCkg XFwoIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyXFwpIFxcKCAzMCwgMzEs IDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOVxcKSBcXCggMzcsIDM4LCAzOSwgNDAsIDQx LCA0MiwgNDMsIDQ0LCA0NSwgNDZcXCkgXFwpIiBcCistCSAiID0gXFwoXFwoIC0yNiwgLTI1LCAt MjQsIC0yMywgLTIyLCAtMjFcXCkgXFwoIC0xOSwgLTE4LCAtMTcsIC0xNiwgLTE1LCAtMTRcXCkg XFwoIC0xMiwgLTExLCAtMTAsIC05LCAtOCwgLTdcXCkgXFwpIiBcCistCSAiID0gXFwoXFwoIC0y NiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKCAtNSwgLTMsIC0xLCAxLCAzXFwpIFxcKCAxNiwg MTgsIDIwLCAyMiwgMjRcXCkgXFwoIDM3LCAzOSwgNDEsIDQzLCA0NVxcKSBcXCkiIF0KKysJICIg PSBcXChcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcKSBcXCgxMSwgMTIsIDEzLCAx NCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxcKSBcXCgyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAy NywgMjgsIDI5LCAzMFxcKSBcXCgzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0 MFxcKSBcXCg0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MFxcKSBcXCg1MSwg NTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MFxcKSBcXCg2MSwgNjIsIDYzLCA2NCwg NjUsIDY2LCA2NywgNjgsIDY5LCA3MFxcKSBcXCg3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3Nywg NzgsIDc5LCA4MFxcKSBcXCg4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MFxc KSBcXCg5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDBcXClcXCkiIFwKKysJ ICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1XFwpIFxcKDExLCAxMiwgMTMsIDE0LCAxNVxcKSBcXCgy MSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoMzEsIDMyLCAzMywgMzQsIDM1XFwpIFxcKDQxLCA0Miwg NDMsIDQ0LCA0NVxcKVxcKSIgXAorKwkgIiA9IFxcKFxcKDEsIDMsIDUsIDcsIDlcXCkgXFwoMjEs IDIzLCAyNSwgMjcsIDI5XFwpIFxcKDQxLCA0MywgNDUsIDQ3LCA0OVxcKSBcXCg2MSwgNjMsIDY1 LCA2NywgNjlcXCkgXFwoODEsIDgzLCA4NSwgODcsIDg5XFwpXFwpIiBcCisrCSAiID0gXFwoXFwo MSwgNCwgNywgMTBcXCkgXFwoMjEsIDI0LCAyNywgMzBcXCkgXFwoNDEsIDQ0LCA0NywgNTBcXCkg XFwoNjEsIDY0LCA2NywgNzBcXCkgXFwoODEsIDg0LCA4NywgOTBcXClcXCkiIFwKKysJICIgPSBc XChcXCgxLCA1LCA5XFwpIFxcKDMxLCAzNSwgMzlcXCkgXFwoNjEsIDY1LCA2OVxcKSBcXCg5MSwg OTUsIDk5XFwpXFwpIiBcCisrCSAiID0gXFwoXFwoLTI2LCAtMjUsIC0yNCwgLTIzLCAtMjIsIC0y MSwgLTIwLCAtMTksIC0xOCwgLTE3XFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0xNiwgLTE1LCAtMTQs IC0xMywgLTEyLCAtMTEsIC0xMFxcKSBcXCgtMTIsIC0xMSwgLTEwLCAtOSwgLTgsIC03LCAtNiwg LTUsIC00LCAtM1xcKSBcXCgtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIsIDMsIDRcXCkgXFwo MiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExXFwpIFxcKDksIDEwLCAxMSwgMTIsIDEzLCAx NCwgMTUsIDE2LCAxNywgMThcXCkgXFwoMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAy NCwgMjVcXCkgXFwoMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzJcXCkgXFwo MzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzlcXCkgXFwoMzcsIDM4LCAzOSwg NDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDZcXClcXCkiIFwKKysJICIgPSBcXChcXCgtMjYsIC0y NSwgLTI0LCAtMjMsIC0yMiwgLTIxXFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0xNiwgLTE1LCAtMTRc XCkgXFwoLTEyLCAtMTEsIC0xMCwgLTksIC04LCAtN1xcKVxcKSIgXAorKwkgIiA9IFxcKFxcKC0y NiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKC01LCAtMywgLTEsIDEsIDNcXCkgXFwoMTYsIDE4 LCAyMCwgMjIsIDI0XFwpIFxcKDM3LCAzOSwgNDEsIDQzLCA0NVxcKVxcKSIgXQorIAorIHNldCBt ZXNzYWdlX3N0cmluZ3MgXAorICAgICBbbGlzdCBcCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9jbGFzcy1hbGxvY2F0YWJsZS1hcnJheS5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2NsYXNzLWFsbG9jYXRhYmxlLWFycmF5LmV4cAorLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9jbGFzcy1hbGxvY2F0YWJsZS1hcnJheS5leHAKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY2xhc3MtYWxsb2NhdGFibGUtYXJyYXkuZXhwCitAQCAtNDAs NCArNDAsNCBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQnJlYWsgSGVyZSIKKyAjIGNl dGFpbmx5IGdvaW5nIHRvIGZhaWwuCisgZ2RiX3Rlc3QgInByaW50IHRoaXMiICIgPSBcXCggX2Rh dGEgPSBcW15cclxuXF0rLCBfdnB0ciA9IFxbXlxyXG5cXStcXCkiCisgZ2RiX3Rlc3QgInByaW50 IHRoaXMlX2RhdGEiICIgPSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdGVzdF90eXBlIFxcKVxcKSBc W15cclxuXF0rIgorLWdkYl90ZXN0ICJwcmludCB0aGlzJV9kYXRhJWIiICIgPSBcXChcXCggMSwg MiwgM1xcKSBcXCggNCwgNSwgNlxcKSBcXCkiCisrZ2RiX3Rlc3QgInByaW50IHRoaXMlX2RhdGEl YiIgIiA9IFxcKFxcKDEsIDIsIDNcXCkgXFwoNCwgNSwgNlxcKVxcKSIKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL211bHRpLWRpbS5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL211bHRpLWRpbS5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bXVsdGktZGltLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tdWx0aS1kaW0u ZXhwCitAQCAtNTcsNyArNTcsNyBAQCBnZGJfdGVzdCAicHJpbnQgZm9vKDMsMyw0KSIgXAorICAg ICAicHJpbnQgYW4gaW52YWxpZCBhcnJheSBpbmRleCAoMywzLDQpIgorIAorIGdkYl90ZXN0ICJw cmludCBmb28iIFwKKy0gICAgeyA9IFwoXCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAs IDEwXCkgXCkgXCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCkgXCggXCgg MTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCkgXCggXCggMTAsIDEwXCkgXCggMTAs IDEwXCkgXCggMTAsIDIwXCkgXCkgXCl9IFwKKysgICAgeyA9IFwoXChcKDEwLCAxMFwpIFwoMTAs IDEwXCkgXCgxMCwgMTBcKVwpIFwoXCgxMCwgMTBcKSBcKDEwLCAxMFwpIFwoMTAsIDEwXClcKSBc KFwoMTAsIDEwXCkgXCgxMCwgMTBcKSBcKDEwLCAxMFwpXCkgXChcKDEwLCAxMFwpIFwoMTAsIDEw XCkgXCgxMCwgMjBcKVwpXCl9IFwKKyAgICAgInByaW50IGZ1bGwgY29udGVudHMgb2YgdGhlIGFy cmF5IgorIAorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay12YXJp YWJsZSJdCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAorLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXR5cGUuZXhwCitAQCAtNjYsOSArNjYsOSBAQCBnZGJfdGVzdCAicHR5cGUg dHdvdiIgXAorICAgICAgICAgICAgICAgICAgICAgICJcXHMrJGludCwgYWxsb2NhdGFibGUgOjog aXZsYTFcXFwoNSwxMiw5OVxcXCkiIFwKKyAgICAgICAgICAgICAgICAgICAgICAiXFxzKyRpbnQs IGFsbG9jYXRhYmxlIDo6IGl2bGEyXFxcKDksMTJcXFwpIiBcCisgICAgICAgICAgICAgICAgICAg ICAgIkVuZCBUeXBlIHR3byIgXQorLWdkYl90ZXN0ICJwcmludCB0d292IiAiID0gXFxcKCBpdmxh MSA9IFxcXChcXFwoIFxcXCggMSwgMSwgMSwgMSwgMVxcXClcCistIFxcXCggMSwgMSwgMzIxLCAx LCAxXFxcKVwKKy0gXFxcKCAxLCAxLCAxLCAxLCAxXFxcKSAuKiIKKytnZGJfdGVzdCAicHJpbnQg dHdvdiIgIiA9IFxcXCggaXZsYTEgPSBcXFwoXFxcKFxcXCgxLCAxLCAxLCAxLCAxXFxcKVwKKysg XFxcKDEsIDEsIDMyMSwgMSwgMVxcXClcCisrIFxcXCgxLCAxLCAxLCAxLCAxXFxcKSAuKiIKKyAK KyAjIENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgYmVnaW5uIG9mIHR5cGUKKyBnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidGhyZWV2LWZpbGxlZCJdCitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aS12bGEtZm9ydHJhbi5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0 cmFuLmV4cAorQEAgLTE4MCw3ICsxODAsNyBAQCBtaV9ydW5fY21kCisgbWlfZXhwZWN0X3N0b3Ag ImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAorICAg eyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5l bm8iCisgbWlfZ2RiX3Rlc3QgIjU5MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gcHZsYTIiIFwK Ky0gICI1OTBcXF5kb25lLHZhbHVlPVwiXFwoXFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwoIDIsIDIs IDIsIDIsIDJcXCkgXFwpXCIiIFwKKysgICI1OTBcXF5kb25lLHZhbHVlPVwiXFwoXFwoMiwgMiwg MiwgMiwgMlxcKSBcXCgyLCAyLCAyLCAyLCAyXFwpXFwpXCIiIFwKKyAgICJldmFsdWF0ZSBhc3Nv Y2lhdGVkIHZsYSIKKyAKKyBtaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJfYXNzb2NpYXRl ZCBwdmxhMiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9ydHJhbi1leHBy LWhhbmRsaW5nLnBhdGNoIGIvZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9ydHJhbi1leHByLWhhbmRs aW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MjE2ODQKLS0t IC9kZXYvbnVsbAorKysgYi9nZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFuLWV4cHItaGFuZGxp bmcucGF0Y2gKQEAgLTAsMCArMSw3ODcgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCitGcm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+ CitEYXRlOiBNb24sIDI0IE1heSAyMDIxIDE3OjAwOjE3IC0wNzAwCitTdWJqZWN0OiBnZGItcmhi ejE5NjQxNjctbW92ZS1mb3J0cmFuLWV4cHItaGFuZGxpbmcucGF0Y2gKKworOzsgW2ZvcnRyYW5d IEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0IHdoaWNoIG1vdmVzIEZvcnRyYW4KKzs7 IGV4cHJlc3Npb24gaGFuZGxpbmcgdG8gZi1sYW5nLmMuCisKK2dkYi9mb3J0cmFuOiBNb3ZlIEZv cnRyYW4gZXhwcmVzc2lvbiBoYW5kbGluZyBpbnRvIGYtbGFuZy5jCisKK1RoZSBGb3J0cmFuIHNw ZWNpZmljIE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCBpcyBjdXJyZW50bHkgaGFuZGxlZAor aW4gdGhlIGdlbmVyaWMgZXhwcmVzc2lvbiBoYW5kbGluZyBjb2RlLiAgVGhlcmUncyBubyByZWFz b24gd2h5IHRoaXMKK3Nob3VsZCBiZSB0aGUgY2FzZSwgc28gdGhpcyBjb21taXQgbW92ZXMgaGFu ZGxpbmcgb2YgdGhpcyBpbnRvIEZvcnRyYW4KK3NwZWNpZmljIGZpbGVzLgorCitUaGVyZSBzaG91 bGQgYmUgbm8gdXNlciB2aXNpYmxlIGNoYW5nZXMgYWZ0ZXIgdGhpcyBjb21taXQuCisKK2dkYi9D aGFuZ2VMb2c6CisKKwkqIGV2YWwuYzogUmVtb3ZlICdmLWxhbmcuaCcgaW5jbHVkZS4KKwkodmFs dWVfZjkwX3N1YmFycmF5KTogTW92ZWQgdG8gZi1sYW5nLmMuCisJKGV2YWxfY2FsbCk6IFJlbmFt ZWQgdG8uLi4KKwkoZXZhbHVhdGVfc3ViZXhwX2RvX2NhbGwpOiAuLi50aGlzLCBpcyBubyBsb25n ZXIgc3RhdGljLCBoZWFkZXIKKwljb21tZW50IG1vdmVkIGludG8gaGVhZGVyIGZpbGUuCisJKGV2 YWx1YXRlX2Z1bmNhbGwpOiBVcGRhdGUgY2FsbCB0byBldmFsX2NhbGwuCisJKHNraXBfdW5kZXRl cm1pbmVkX2FyZ2xpc3QpOiBNb3ZlZCB0byBmLWxhbmcuYy4KKwkoZm9ydHJhbl92YWx1ZV9zdWJh cnJheSk6IExpa2V3aXNlLgorCShldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQpOiBPUF9GNzdfVU5E RVRFUk1JTkVEX0FSR0xJU1QgaGFuZGxpbmcKKwltb3ZlZCB0byBldmFsdWF0ZV9zdWJleHBfZi4K KwkoY2FsY19mNzdfYXJyYXlfZGltcyk6IE1vdmVkIHRvIGYtbGFuZy5jCisJKiBleHBwcmludC5j IChwcmludF9zdWJleHBfZnVuY2FsbCk6IE5ldyBmdW5jdGlvbi4KKwkocHJpbnRfc3ViZXhwX3N0 YW5kYXJkKTogT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUIGhhbmRsaW5nCisJbW92ZWQgdG8g cHJpbnRfc3ViZXhwX2YsIE9QX0ZVTkNBTEwgdXNlcyBuZXcgZnVuY3Rpb24uCisJKGR1bXBfc3Vi ZXhwX2JvZHlfZnVuY2FsbCk6IE5ldyBmdW5jdGlvbi4KKwkoZHVtcF9zdWJleHBfYm9keV9zdGFu ZGFyZCk6IE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCBoYW5kbGluZworCW1vdmVkIHRvIGR1 bXBfc3ViZXhwX2YsIE9QX0ZVTkNBTEwgdXNlcyBuZXcgZnVuY3Rpb24uCisJKiBleHByZXNzaW9u LmggKGV2YWx1YXRlX3N1YmV4cF9kb19jYWxsKTogRGVjbGFyZS4KKwkqIGYtbGFuZy5jICh2YWx1 ZV9mOTBfc3ViYXJyYXkpOiBNb3ZlZCBmcm9tIGV2YWwuYy4KKwkoc2tpcF91bmRldGVybWluZWRf YXJnbGlzdCk6IExpa2V3aXNlLgorCShjYWxjX2Y3N19hcnJheV9kaW1zKTogTGlrZXdpc2UuCisJ KGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBMaWtld2lzZS4KKwkoZXZhbHVhdGVfc3ViZXhwX2Yp OiBBZGQgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUIHN1cHBvcnQuCisJKG9wZXJhdG9yX2xl bmd0aF9mKTogTGlrZXdpc2UuCisJKHByaW50X3N1YmV4cF9mKTogTGlrZXdpc2UuCisJKGR1bXBf c3ViZXhwX2JvZHlfZik6IExpa2V3aXNlLgorCSogZm9ydHJhbi1vcGVyYXRvci5kZWYgKE9QX0Y3 N19VTkRFVEVSTUlORURfQVJHTElTVCk6IE1vdmUKKwlkZWNsYXJhdGlvbiBvZiB0aGlzIG9wZXJh dGlvbiB0byBoZXJlLgorCSogcGFyc2UuYyAob3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkKTogT1Bf Rjc3X1VOREVURVJNSU5FRF9BUkdMSVNUCisJc3VwcG9ydCBtb3ZlZCB0byBvcGVyYXRvcl9sZW5n dGhfZi4KKwkqIHBhcnNlci1kZWZzLmggKGR1bXBfc3ViZXhwX2JvZHlfZnVuY2FsbCk6IERlY2xh cmUuCisJKHByaW50X3N1YmV4cF9mdW5jYWxsKTogRGVjbGFyZS4KKwkqIHN0ZC1vcGVyYXRvci5k ZWYgKE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCk6IE1vdmVkIHRvCisJZm9ydHJhbi1vcGVy YXRvci5kZWYuCisKK2RpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYworLS0tIGEv Z2RiL2V2YWwuYworKysrIGIvZ2RiL2V2YWwuYworQEAgLTI2LDcgKzI2LDYgQEAKKyAjaW5jbHVk ZSAiZnJhbWUuaCIKKyAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCisgI2luY2x1ZGUgImxhbmd1YWdl LmgiCQkvKiBGb3IgQ0FTVF9JU19DT05WRVJTSU9OLiAgKi8KKy0jaW5jbHVkZSAiZi1sYW5nLmgi CQkvKiBGb3IgYXJyYXkgYm91bmQgc3R1ZmYuICAqLworICNpbmNsdWRlICJjcC1hYmkuaCIKKyAj aW5jbHVkZSAiaW5mY2FsbC5oIgorICNpbmNsdWRlICJvYmpjLWxhbmcuaCIKK0BAIC0zNzEsMzIg KzM3MCw2IEBAIGluaXRfYXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0 IHZhbHVlICplbGVtZW50LAorICAgcmV0dXJuIGluZGV4OworIH0KKyAKKy1zdGF0aWMgc3RydWN0 IHZhbHVlICoKKy12YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCistCQkg ICAgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkK Ky17CistICBpbnQgcGMgPSAoKnBvcykgKyAxOworLSAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hf Ym91bmQ7CistICBzdHJ1Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBl IChhcnJheSktPmluZGV4X3R5cGUgKCkpOworLSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUK Ky0gICAgPSAoZW51bSByYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5s b25nY29uc3QpOworLSAKKy0gICpwb3MgKz0gMzsKKy0KKy0gIGlmIChyYW5nZV90eXBlID09IExP V19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQorLSAg ICBsb3dfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5sb3cuY29uc3RfdmFsICgpOworLSAgZWxz ZQorLSAgICBsb3dfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxw dHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKKy0KKy0gIGlmIChyYW5nZV90eXBlID09IEhJR0hfQk9V TkRfREVGQVVMVCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKKy0gICAgaGln aF9ib3VuZCA9IHJhbmdlLT5ib3VuZHMgKCktPmhpZ2guY29uc3RfdmFsICgpOworLSAgZWxzZQor LSAgICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRy LCBleHAsIHBvcywgbm9zaWRlKSk7CistCistICByZXR1cm4gdmFsdWVfc2xpY2UgKGFycmF5LCBs b3dfYm91bmQsIGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKy19CistCistCisgLyogUHJv bW90ZSB2YWx1ZSBBUkcxIGFzIGFwcHJvcHJpYXRlIGJlZm9yZSBwZXJmb3JtaW5nIGEgdW5hcnkg b3BlcmF0aW9uCisgICAgb24gdGhpcyBhcmd1bWVudC4KKyAgICBJZiB0aGUgcmVzdWx0IGlzIG5v dCBhcHByb3ByaWF0ZSBmb3IgYW55IHBhcnRpY3VsYXIgbGFuZ3VhZ2UgdGhlbiBpdAorQEAgLTc0 OSwxNyArNzIyLDEzIEBAIGV2YWxfc2tpcF92YWx1ZSAoZXhwcmVzc2lvbiAqZXhwKQorICAgcmV0 dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWls dGluX2ludCwgMSk7CisgfQorIAorLS8qIEV2YWx1YXRlIGEgZnVuY3Rpb24gY2FsbC4gIFRoZSBm dW5jdGlvbiB0byBiZSBjYWxsZWQgaXMgaW4KKy0gICBBUkdWRUNbMF0gYW5kIHRoZSBhcmd1bWVu dHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBhcmUgaW4KKy0gICBBUkdWRUNbMS4uTkFSR1NdLiAg RlVOQ1RJT05fTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24sIGlmCistICAga25vd24u ICBERUZBVUxUX1JFVFVSTl9UWVBFIGlzIHVzZWQgYXMgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5 cGUKKy0gICBpZiB0aGUgcmV0dXJuIHR5cGUgaXMgdW5rbm93bi4gICovCisrLyogU2VlIGV4cHJl c3Npb24uaC4gICovCisgCistc3RhdGljIHZhbHVlICoKKy1ldmFsX2NhbGwgKGV4cHJlc3Npb24g KmV4cCwgZW51bSBub3NpZGUgbm9zaWRlLAorLQkgICBpbnQgbmFyZ3MsIHZhbHVlICoqYXJndmVj LAorLQkgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLAorLQkgICB0eXBlICpkZWZhdWx0X3Jl dHVybl90eXBlKQorK3ZhbHVlICoKKytldmFsdWF0ZV9zdWJleHBfZG9fY2FsbCAoZXhwcmVzc2lv biAqZXhwLCBlbnVtIG5vc2lkZSBub3NpZGUsCisrCQkJIGludCBuYXJncywgdmFsdWUgKiphcmd2 ZWMsCisrCQkJIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCisrCQkJIHR5cGUgKmRlZmF1bHRf cmV0dXJuX3R5cGUpCisgeworICAgaWYgKGFyZ3ZlY1swXSA9PSBOVUxMKQorICAgICBlcnJvciAo XygiQ2Fubm90IGV2YWx1YXRlIGZ1bmN0aW9uIC0tIG1heSBiZSBpbmxpbmVkIikpOworQEAgLTEy MzAsMjAgKzExOTksOCBAQCBldmFsdWF0ZV9mdW5jYWxsICh0eXBlICpleHBlY3RfdHlwZSwgZXhw cmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAgICAgICAvKiBOb3RoaW5nIHRvIGJlIGRvbmU7IGFy Z3ZlYyBhbHJlYWR5IGNvcnJlY3RseSBzZXQgdXAuICAqLworICAgICB9CisgCistICByZXR1cm4g ZXZhbF9jYWxsIChleHAsIG5vc2lkZSwgbmFyZ3MsIGFyZ3ZlYywgdmFyX2Z1bmNfbmFtZSwgZXhw ZWN0X3R5cGUpOworLX0KKy0KKy0vKiBIZWxwZXIgZm9yIHNraXBwaW5nIGFsbCB0aGUgYXJndW1l bnRzIGluIGFuIHVuZGV0ZXJtaW5lZCBhcmd1bWVudCBsaXN0LgorLSAgIFRoaXMgZnVuY3Rpb24g d2FzIGRlc2lnbmVkIGZvciB1c2UgaW4gdGhlIE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVAor LSAgIGNhc2Ugb2YgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIGFzIG11bHRpcGxlLCBidXQgbm90 IGFsbCwgY29kZSBwYXRocworLSAgIHJlcXVpcmUgYSBnZW5lcmljIHNraXAuICAqLworLQorLXN0 YXRpYyB2b2lkCistc2tpcF91bmRldGVybWluZWRfYXJnbGlzdCAoaW50IG5hcmdzLCBzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKy0JCQkgICBlbnVtIG5vc2lkZSBub3NpZGUpCist eworLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgKytpKQorLSAgICBldmFsdWF0ZV9zdWJl eHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpOworKyAgcmV0dXJuIGV2YWx1YXRlX3N1YmV4 cF9kb19jYWxsIChleHAsIG5vc2lkZSwgbmFyZ3MsIGFyZ3ZlYywKKysJCQkJICB2YXJfZnVuY19u YW1lLCBleHBlY3RfdHlwZSk7CisgfQorIAorIC8qIFJldHVybiB0cnVlIGlmIHR5cGUgaXMgaW50 ZWdyYWwgb3IgcmVmZXJlbmNlIHRvIGludGVncmFsICovCitAQCAtMTI2MCw2NyArMTIxNyw2IEBA IGlzX2ludGVncmFsX29yX2ludGVncmFsX3JlZmVyZW5jZSAoc3RydWN0IHR5cGUgKnR5cGUpCisg CSAgJiYgaXNfaW50ZWdyYWxfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpKTsKKyB9Cisg CistLyogQ2FsbGVkIGZyb20gZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIHRvIHBlcmZvcm0gYXJy YXkgaW5kZXhpbmcsIGFuZAorLSAgIHN1Yi1yYW5nZSBleHRyYWN0aW9uLCBmb3IgRm9ydHJhbi4g IEFzIHdlbGwgYXMgYXJyYXlzIHRoaXMgZnVuY3Rpb24KKy0gICBhbHNvIGhhbmRsZXMgc3RyaW5n cyBhcyB0aGV5IGNhbiBiZSB0cmVhdGVkIGxpa2UgYXJyYXlzIG9mIGNoYXJhY3RlcnMuCistICAg QVJSQVkgaXMgdGhlIGFycmF5IG9yIHN0cmluZyBiZWluZyBhY2Nlc3NlZC4gIEVYUCwgUE9TLCBh bmQgTk9TSURFIGFyZQorLSAgIGFzIGZvciBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQsIGFuZCBO QVJHUyBpcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cworLSAgIGluIHRoaXMgYWNjZXNzIChlLmcu ICdhcnJheSAoMSwyLDMpJyB3b3VsZCBiZSBOQVJHUyAzKS4gICovCistCistc3RhdGljIHN0cnVj dCB2YWx1ZSAqCistZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwg c3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKy0JCQlpbnQgKnBvcywgaW50IG5hcmdzLCBlbnVtIG5v c2lkZSBub3NpZGUpCisteworLSAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFO R0UpCistICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFycmF5LCBleHAsIHBvcywgbm9z aWRlKTsKKy0KKy0gIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQorLSAgICB7CistICAgICAgc2tp cF91bmRldGVybWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOworLSAgICAg IC8qIFJldHVybiB0aGUgZHVtbXkgdmFsdWUgd2l0aCB0aGUgY29ycmVjdCB0eXBlLiAgKi8KKy0g ICAgICByZXR1cm4gYXJyYXk7CistICAgIH0KKy0KKy0gIExPTkdFU1Qgc3Vic2NyaXB0X2FycmF5 W01BWF9GT1JUUkFOX0RJTVNdOworLSAgaW50IG5kaW1lbnNpb25zID0gMTsKKy0gIHN0cnVjdCB0 eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKKy0KKy0gIGlm IChuYXJncyA+IE1BWF9GT1JUUkFOX0RJTVMpCistICAgIGVycm9yIChfKCJUb28gbWFueSBzdWJz Y3JpcHRzIGZvciBGNzcgKCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7CistCistICBuZGlt ZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOworLQorLSAgaWYgKG5hcmdzICE9 IG5kaW1lbnNpb25zKQorLSAgICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMi KSk7CistCistICBnZGJfYXNzZXJ0IChuYXJncyA+IDApOworLQorLSAgLyogTm93IHRoYXQgd2Ug a25vdyB3ZSBoYXZlIGEgbGVnYWwgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Npb24gbGV0IHVzCist ICAgICBhY3R1YWxseSBmaW5kIG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhpc3RzIGluIHRoZSBh cnJheS4gICovCistCistICAvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4gICov CistICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyBpKyspCistICAgIHsKKy0gICAgICAvKiBF dmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3 LiAgKi8KKy0gICAgICB2YWx1ZSAqYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9u IChleHAsIHBvcywgbm9zaWRlKTsKKy0KKy0gICAgICAvKiBGaWxsIGluIHRoZSBzdWJzY3JpcHQg YXJyYXkuICAqLworLSAgICAgIHN1YnNjcmlwdF9hcnJheVtpXSA9IHZhbHVlX2FzX2xvbmcgKGFy ZzIpOworLSAgICB9CistCistICAvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5IGlzIGFycmFuZ2Vk IHJpZ2h0IHRvIGxlZnQuICAqLworLSAgZm9yIChpbnQgaSA9IG5hcmdzOyBpID4gMDsgaS0tKQor LSAgICB7CistICAgICAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2 YWx1ZV90eXBlIChhcnJheSkpOworLSAgICAgIExPTkdFU1QgaW5kZXggPSBzdWJzY3JpcHRfYXJy YXlbaSAtIDFdOworLQorLSAgICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChh cnJheSwgaW5kZXgsCistCQkJCQlmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsKKy0g ICAgfQorLQorLSAgcmV0dXJuIGFycmF5OworLX0KKy0KKyBzdHJ1Y3QgdmFsdWUgKgorIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkJCSAgc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCitAQCAtMTMzNSw3ICsxMjMxLDYgQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgICBzdHJ1 Y3QgdHlwZSAqdHlwZTsKKyAgIGludCBuYXJnczsKKyAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3ZlYzsK Ky0gIGludCBjb2RlOworICAgaW50IGl4OworICAgbG9uZyBtZW1fb2Zmc2V0OworICAgc3RydWN0 IHR5cGUgKiphcmdfdHlwZXM7CitAQCAtMTk3Niw4NCArMTg3MSw2IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICBjYXNlIE9QX0ZVTkNB TEw6CisgICAgICAgcmV0dXJuIGV2YWx1YXRlX2Z1bmNhbGwgKGV4cGVjdF90eXBlLCBleHAsIHBv cywgbm9zaWRlKTsKKyAKKy0gICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1Q6Cist CistICAgICAgLyogUmVtZW1iZXIgdGhhdCBpbiBGNzcsIGZ1bmN0aW9ucywgc3Vic3RyaW5nIG9w cyBhbmQgCistICAgICAgICAgYXJyYXkgc3Vic2NyaXB0IG9wZXJhdGlvbnMgY2Fubm90IGJlIGRp c2FtYmlndWF0ZWQgCistICAgICAgICAgYXQgcGFyc2UgdGltZS4gIFdlIGhhdmUgbWFkZSBhbGwg YXJyYXkgc3Vic2NyaXB0IG9wZXJhdGlvbnMsIAorLSAgICAgICAgIHN1YnN0cmluZyBvcGVyYXRp b25zIGFzIHdlbGwgYXMgZnVuY3Rpb24gY2FsbHMgIGNvbWUgaGVyZSAKKy0gICAgICAgICBhbmQg d2Ugbm93IGhhdmUgdG8gZGlzY292ZXIgd2hhdCB0aGUgaGVjayB0aGlzIHRoaW5nIGFjdHVhbGx5 IHdhcy4KKy0gICAgICAgICBJZiBpdCBpcyBhIGZ1bmN0aW9uLCB3ZSBwcm9jZXNzIGp1c3QgYXMg aWYgd2UgZ290IGFuIE9QX0ZVTkNBTEwuICAqLworLQorLSAgICAgIG5hcmdzID0gbG9uZ2VzdF90 b19pbnQgKGV4cC0+ZWx0c1twYyArIDFdLmxvbmdjb25zdCk7CistICAgICAgKCpwb3MpICs9IDI7 CistCistICAgICAgLyogRmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxp bmcgd2l0aC4gICovCistICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhw LCBwb3MsIG5vc2lkZSk7CistICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGFyZzEpKTsKKy0gICAgICBjb2RlID0gdHlwZS0+Y29kZSAoKTsKKy0KKy0gICAgICBpZiAoY29k ZSA9PSBUWVBFX0NPREVfUFRSKQorLQl7CistCSAgLyogRm9ydHJhbiBhbHdheXMgcGFzc2VzIHZh cmlhYmxlIHRvIHN1YnJvdXRpbmVzIGFzIHBvaW50ZXIuCistCSAgICAgU28gd2UgbmVlZCB0byBs b29rIGludG8gaXRzIHRhcmdldCB0eXBlIHRvIHNlZSBpZiBpdCBpcworLQkgICAgIGFycmF5LCBz dHJpbmcgb3IgZnVuY3Rpb24uICBJZiBpdCBpcywgd2UgbmVlZCB0byBzd2l0Y2gKKy0JICAgICB0 byB0aGUgdGFyZ2V0IHZhbHVlIHRoZSBvcmlnaW5hbCBvbmUgcG9pbnRzIHRvLiAgKi8gCistCSAg c3RydWN0IHR5cGUgKnRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSkpOworLQorLQkgIGlmICh0YXJnZXRfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVf QVJSQVkKKy0JICAgICAgfHwgdGFyZ2V0X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX1NUUklO RworLQkgICAgICB8fCB0YXJnZXRfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfRlVOQykKKy0J ICAgIHsKKy0JICAgICAgYXJnMSA9IHZhbHVlX2luZCAoYXJnMSk7CistCSAgICAgIHR5cGUgPSBj aGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CistCSAgICAgIGNvZGUgPSB0eXBlLT5j b2RlICgpOworLQkgICAgfQorLQl9IAorLQorLSAgICAgIHN3aXRjaCAoY29kZSkKKy0JeworLQlj YXNlIFRZUEVfQ09ERV9BUlJBWToKKy0JY2FzZSBUWVBFX0NPREVfU1RSSU5HOgorLQkgIHJldHVy biBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7 CistCistCWNhc2UgVFlQRV9DT0RFX1BUUjoKKy0JY2FzZSBUWVBFX0NPREVfRlVOQzoKKy0JY2Fz ZSBUWVBFX0NPREVfSU5URVJOQUxfRlVOQ1RJT046CistCSAgLyogSXQncyBhIGZ1bmN0aW9uIGNh bGwuICAqLworLQkgIC8qIEFsbG9jYXRlIGFyZyB2ZWN0b3IsIGluY2x1ZGluZyBzcGFjZSBmb3Ig dGhlIGZ1bmN0aW9uIHRvIGJlCistCSAgICAgY2FsbGVkIGluIGFyZ3ZlY1swXSBhbmQgYSB0ZXJt aW5hdGluZyBOVUxMLiAgKi8KKy0JICBhcmd2ZWMgPSAoc3RydWN0IHZhbHVlICoqKQorLQkgICAg YWxsb2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZSAqKSAqIChuYXJncyArIDIpKTsKKy0JICBhcmd2 ZWNbMF0gPSBhcmcxOworLQkgIHRlbSA9IDE7CistCSAgZm9yICg7IHRlbSA8PSBuYXJnczsgdGVt KyspCistCSAgICB7CistCSAgICAgIGFyZ3ZlY1t0ZW1dID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhf Y29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOworLQkgICAgICAvKiBBcmd1bWVudHMgaW4gRm9y dHJhbiBhcmUgcGFzc2VkIGJ5IGFkZHJlc3MuICBDb2VyY2UgdGhlCistCQkgYXJndW1lbnRzIGhl cmUgcmF0aGVyIHRoYW4gaW4gdmFsdWVfYXJnX2NvZXJjZSBhcyBvdGhlcndpc2UKKy0JCSB0aGUg Y2FsbCB0byBtYWxsb2MgdG8gcGxhY2UgdGhlIG5vbi1sdmFsdWUgcGFyYW1ldGVycyBpbgorLQkJ IHRhcmdldCBtZW1vcnkgaXMgaGl0IGJ5IHRoaXMgRm9ydHJhbiBzcGVjaWZpYyBsb2dpYy4gIFRo aXMKKy0JCSByZXN1bHRzIGluIG1hbGxvYyBiZWluZyBjYWxsZWQgd2l0aCBhIHBvaW50ZXIgdG8g YW4gaW50ZWdlcgorLQkJIGZvbGxvd2VkIGJ5IGFuIGF0dGVtcHQgdG8gbWFsbG9jIHRoZSBhcmd1 bWVudHMgdG8gbWFsbG9jIGluCistCQkgdGFyZ2V0IG1lbW9yeS4gIEluZmluaXRlIHJlY3Vyc2lv biBlbnN1ZXMuICAqLworLQkgICAgICBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSIHx8IGNvZGUg PT0gVFlQRV9DT0RFX0ZVTkMpCistCQl7CistCQkgIGJvb2wgaXNfYXJ0aWZpY2lhbAorLQkJICAg ID0gVFlQRV9GSUVMRF9BUlRJRklDSUFMICh2YWx1ZV90eXBlIChhcmcxKSwgdGVtIC0gMSk7Cist CQkgIGFyZ3ZlY1t0ZW1dID0gZm9ydHJhbl9hcmd1bWVudF9jb252ZXJ0IChhcmd2ZWNbdGVtXSwK Ky0JCQkJCQkJICBpc19hcnRpZmljaWFsKTsKKy0JCX0KKy0JICAgIH0KKy0JICBhcmd2ZWNbdGVt XSA9IDA7CS8qIHNpZ25hbCBlbmQgb2YgYXJnbGlzdCAqLworLQkgIGlmIChub3NpZGUgPT0gRVZB TF9TS0lQKQorLQkgICAgcmV0dXJuIGV2YWxfc2tpcF92YWx1ZSAoZXhwKTsKKy0JICByZXR1cm4g ZXZhbF9jYWxsIChleHAsIG5vc2lkZSwgbmFyZ3MsIGFyZ3ZlYywgTlVMTCwgZXhwZWN0X3R5cGUp OworLQorLQlkZWZhdWx0OgorLQkgIGVycm9yIChfKCJDYW5ub3QgcGVyZm9ybSBzdWJzdHJpbmcg b24gdGhpcyB0eXBlIikpOworLQl9CistCisgICAgIGNhc2UgT1BfQ09NUExFWDoKKyAgICAgICAv KiBXZSBoYXZlIGEgY29tcGxleCBudW1iZXIsIFRoZXJlIHNob3VsZCBiZSAyIGZsb2F0aW5nIAor ICAgICAgICAgIHBvaW50IG51bWJlcnMgdGhhdCBjb21wb3NlIGl0LiAgKi8KK0BAIC0zMzQ2LDI3 ICszMTYzLDMgQEAgcGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKKyAg ICAgZXJyb3IgKF8oIkludGVybmFsIGVycm9yIGluIGV2YWxfdHlwZS4iKSk7CisgICByZXR1cm4g ZXhwci0+ZWx0c1sxXS50eXBlOworIH0KKy0KKy0vKiBSZXR1cm4gdGhlIG51bWJlciBvZiBkaW1l bnNpb25zIGZvciBhIEZvcnRyYW4gYXJyYXkgb3Igc3RyaW5nLiAgKi8KKy0KKy1pbnQKKy1jYWxj X2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKKy17CistICBpbnQgbmRp bWVuID0gMTsKKy0gIHN0cnVjdCB0eXBlICp0bXBfdHlwZTsKKy0KKy0gIGlmICgoYXJyYXlfdHlw ZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSSU5HKSkKKy0gICAgcmV0dXJuIDE7CistCistICBp ZiAoKGFycmF5X3R5cGUtPmNvZGUgKCkgIT0gVFlQRV9DT0RFX0FSUkFZKSkKKy0gICAgZXJyb3Ig KF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBhIG5vbi1hcnJheSB0eXBlIikpOworLQorLSAg dG1wX3R5cGUgPSBhcnJheV90eXBlOworLQorLSAgd2hpbGUgKCh0bXBfdHlwZSA9IFRZUEVfVEFS R0VUX1RZUEUgKHRtcF90eXBlKSkpCistICAgIHsKKy0gICAgICBpZiAodG1wX3R5cGUtPmNvZGUg KCkgPT0gVFlQRV9DT0RFX0FSUkFZKQorLQkrK25kaW1lbjsKKy0gICAgfQorLSAgcmV0dXJuIG5k aW1lbjsKKy19CitkaWZmIC0tZ2l0IGEvZ2RiL2V4cHByaW50LmMgYi9nZGIvZXhwcHJpbnQuYwor LS0tIGEvZ2RiL2V4cHByaW50LmMKKysrKyBiL2dkYi9leHBwcmludC5jCitAQCAtNTMsNiArNTMs MjUgQEAgcHJpbnRfc3ViZXhwIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAg IGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfZXhwX2Rlc2MtPnByaW50X3N1YmV4cCAoZXhwLCBwb3Ms IHN0cmVhbSwgcHJlYyk7CisgfQorIAorKy8qIFNlZSBwYXJzZXItZGVmcy5oLiAgKi8KKysKKyt2 b2lkCisrcHJpbnRfc3ViZXhwX2Z1bmNhbGwgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAq cG9zLAorKwkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKKyt7CisrICAoKnBvcykgKz0g MjsKKysgIHVuc2lnbmVkIG5hcmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1sqcG9zXS5s b25nY29uc3QpOworKyAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVDX1NVRkZJ WCk7CisrICBmcHV0c19maWx0ZXJlZCAoIiAoIiwgc3RyZWFtKTsKKysgIGZvciAodW5zaWduZWQg dGVtID0gMDsgdGVtIDwgbmFyZ3M7IHRlbSsrKQorKyAgICB7CisrICAgICAgaWYgKHRlbSAhPSAw KQorKwlmcHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsKKysgICAgICBwcmludF9zdWJleHAg KGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEpOworKyAgICB9CisrICBmcHV0c19m aWx0ZXJlZCAoIikiLCBzdHJlYW0pOworK30KKysKKyAvKiBTdGFuZGFyZCBpbXBsZW1lbnRhdGlv biBvZiBwcmludF9zdWJleHAgZm9yIHVzZSBpbiBsYW5ndWFnZV9kZWZuCisgICAgdmVjdG9ycy4g ICovCisgdm9pZAorQEAgLTE4NywxOCArMjA2LDcgQEAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAgICAgICByZXR1cm47CisgCisgICAg IGNhc2UgT1BfRlVOQ0FMTDoKKy0gICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1Q6 CistICAgICAgKCpwb3MpICs9IDI7CistICAgICAgbmFyZ3MgPSBsb25nZXN0X3RvX2ludCAoZXhw LT5lbHRzW3BjICsgMV0ubG9uZ2NvbnN0KTsKKy0gICAgICBwcmludF9zdWJleHAgKGV4cCwgcG9z LCBzdHJlYW0sIFBSRUNfU1VGRklYKTsKKy0gICAgICBmcHV0c19maWx0ZXJlZCAoIiAoIiwgc3Ry ZWFtKTsKKy0gICAgICBmb3IgKHRlbSA9IDA7IHRlbSA8IG5hcmdzOyB0ZW0rKykKKy0JeworLQkg IGlmICh0ZW0gIT0gMCkKKy0JICAgIGZwdXRzX2ZpbHRlcmVkICgiLCAiLCBzdHJlYW0pOworLQkg IHByaW50X3N1YmV4cCAoZXhwLCBwb3MsIHN0cmVhbSwgUFJFQ19BQk9WRV9DT01NQSk7CistCX0K Ky0gICAgICBmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOworKyAgICAgIHByaW50X3N1YmV4 cF9mdW5jYWxsIChleHAsIHBvcywgc3RyZWFtKTsKKyAgICAgICByZXR1cm47CisgCisgICAgIGNh c2UgT1BfTkFNRToKK0BAIC03OTYsNiArODA0LDIyIEBAIGR1bXBfc3ViZXhwX2JvZHkgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBlbHQpCisgICBy ZXR1cm4gZXhwLT5sYW5ndWFnZV9kZWZuLT5sYV9leHBfZGVzYy0+ZHVtcF9zdWJleHBfYm9keSAo ZXhwLCBzdHJlYW0sIGVsdCk7CisgfQorIAorKy8qIFNlZSBwYXJzZXItZGVmcy5oLiAgKi8KKysK KytpbnQKKytkdW1wX3N1YmV4cF9ib2R5X2Z1bmNhbGwgKHN0cnVjdCBleHByZXNzaW9uICpleHAs CisrCQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZWx0KQorK3sKKysgIGludCBuYXJn cyA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbZWx0XS5sb25nY29uc3QpOworKyAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiTnVtYmVyIG9mIGFyZ3M6ICVkIiwgbmFyZ3MpOworKyAgZWx0 ICs9IDI7CisrCisrICBmb3IgKGludCBpID0gMTsgaSA8PSBuYXJncyArIDE7IGkrKykKKysgICAg ZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworKworKyAgcmV0dXJuIGVsdDsK Kyt9CisrCisgLyogRGVmYXVsdCB2YWx1ZSBmb3Igc3ViZXhwX2JvZHkgaW4gZXhwX2Rlc2NyaXB0 b3IgdmVjdG9yLiAgKi8KKyAKKyBpbnQKK0BAIC05MzEsMTggKzk1NSw3IEBAIGR1bXBfc3ViZXhw X2JvZHlfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgICAgICAgZWx0ICs9IDI7 CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgT1BfRlVOQ0FMTDoKKy0gICAgY2FzZSBPUF9GNzdf VU5ERVRFUk1JTkVEX0FSR0xJU1Q6CistICAgICAgeworLQlpbnQgaSwgbmFyZ3M7CistCistCW5h cmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1tlbHRdLmxvbmdjb25zdCk7CistCistCWZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIk51bWJlciBvZiBhcmdzOiAlZCIsIG5hcmdzKTsKKy0J ZWx0ICs9IDI7CistCistCWZvciAoaSA9IDE7IGkgPD0gbmFyZ3MgKyAxOyBpKyspCistCSAgZWx0 ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworLSAgICAgIH0KKysgICAgICBlbHQg PSBkdW1wX3N1YmV4cF9ib2R5X2Z1bmNhbGwgKGV4cCwgc3RyZWFtLCBlbHQpOworICAgICAgIGJy ZWFrOworICAgICBjYXNlIE9QX0FSUkFZOgorICAgICAgIHsKK2RpZmYgLS1naXQgYS9nZGIvZXhw cmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24uaAorLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAorKysr IGIvZ2RiL2V4cHJlc3Npb24uaAorQEAgLTE1NSw2ICsxNTUsMTggQEAgZW51bSBub3NpZGUKKyBl eHRlcm4gc3RydWN0IHZhbHVlICpldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQKKyAgIChzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQgKiwgZW51bSBub3NpZGUpOworIAorKy8q IEV2YWx1YXRlIGEgZnVuY3Rpb24gY2FsbC4gIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgaXMg aW4gQVJHVkVDWzBdIGFuZAorKyAgIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlv biBhcmUgaW4gQVJHVkVDWzEuLk5BUkdTXS4KKysgICBGVU5DVElPTl9OQU1FIGlzIHRoZSBuYW1l IG9mIHRoZSBmdW5jdGlvbiwgaWYga25vd24uCisrICAgREVGQVVMVF9SRVRVUk5fVFlQRSBpcyB1 c2VkIGFzIHRoZSBmdW5jdGlvbidzIHJldHVybiB0eXBlIGlmIHRoZSByZXR1cm4KKysgICB0eXBl IGlzIHVua25vd24uICAqLworKworK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKmV2YWx1YXRlX3N1YmV4 cF9kb19jYWxsIChleHByZXNzaW9uICpleHAsCisrCQkJCQkgICAgICBlbnVtIG5vc2lkZSBub3Np ZGUsCisrCQkJCQkgICAgICBpbnQgbmFyZ3MsIHZhbHVlICoqYXJndmVjLAorKwkJCQkJICAgICAg Y29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKKysJCQkJCSAgICAgIHR5cGUgKmRlZmF1bHRfcmV0 dXJuX3R5cGUpOworKworIC8qIEZyb20gZXhwcHJpbnQuYyAqLworIAorIGV4dGVybiB2b2lkIHBy aW50X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICopOwor ZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxhbmcuYworLS0tIGEvZ2RiL2YtbGFu Zy5jCisrKysgYi9nZGIvZi1sYW5nLmMKK0BAIC0xMTQsNiArMTE0LDEzNCBAQCBlbnVtIGZfcHJp bWl0aXZlX3R5cGVzIHsKKyAgIG5yX2ZfcHJpbWl0aXZlX3R5cGVzCisgfTsKKyAKKysvKiBDYWxs ZWQgZnJvbSBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IHRvIHRha2UgYSBzbGljZSBvZiBhbiBhcnJh eSBvciBhCisrICAgc3RyaW5nLiAgQVJSQVkgaXMgdGhlIGFycmF5IG9yIHN0cmluZyB0byBiZSBh Y2Nlc3NlZC4gIEVYUCwgUE9TLCBhbmQKKysgICBOT1NJREUgYXJlIGFzIGZvciBldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQuICBSZXR1cm4gYSB2YWx1ZSB0aGF0IGlzIGEKKysgICBzbGljZSBvZiB0 aGUgYXJyYXkuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK3ZhbHVlX2Y5MF9zdWJh cnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKKysJCSAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorK3sKKysgIGludCBwYyA9ICgqcG9zKSAr IDE7CisrICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgIHN0cnVjdCB0eXBlICpy YW5nZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KS0+aW5kZXhfdHlwZSAoKSk7 CisrICBlbnVtIHJhbmdlX3R5cGUgcmFuZ2VfdHlwZQorKyAgICA9IChlbnVtIHJhbmdlX3R5cGUp IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7CisrCisrICAqcG9zICs9 IDM7CisrCisrICBpZiAocmFuZ2VfdHlwZSA9PSBMT1dfQk9VTkRfREVGQVVMVCB8fCByYW5nZV90 eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKKysgICAgbG93X2JvdW5kID0gcmFuZ2UtPmJvdW5k cyAoKS0+bG93LmNvbnN0X3ZhbCAoKTsKKysgIGVsc2UKKysgICAgbG93X2JvdW5kID0gdmFsdWVf YXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7Cisr CisrICBpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9 PSBCT1RIX0JPVU5EX0RFRkFVTFQpCisrICAgIGhpZ2hfYm91bmQgPSByYW5nZS0+Ym91bmRzICgp LT5oaWdoLmNvbnN0X3ZhbCAoKTsKKysgIGVsc2UKKysgICAgaGlnaF9ib3VuZCA9IHZhbHVlX2Fz X2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOworKwor KyAgcmV0dXJuIHZhbHVlX3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93 X2JvdW5kICsgMSk7CisrfQorKworKy8qIEhlbHBlciBmb3Igc2tpcHBpbmcgYWxsIHRoZSBhcmd1 bWVudHMgaW4gYW4gdW5kZXRlcm1pbmVkIGFyZ3VtZW50IGxpc3QuCisrICAgVGhpcyBmdW5jdGlv biB3YXMgZGVzaWduZWQgZm9yIHVzZSBpbiB0aGUgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNU CisrICAgY2FzZSBvZiBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgYXMgbXVsdGlwbGUsIGJ1dCBu b3QgYWxsLCBjb2RlIHBhdGhzCisrICAgcmVxdWlyZSBhIGdlbmVyaWMgc2tpcC4gICovCisrCisr c3RhdGljIHZvaWQKKytza2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChpbnQgbmFyZ3MsIHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAorKwkJCSAgIGVudW0gbm9zaWRlIG5vc2lkZSkK Kyt7CisrICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyArK2kpCisrICAgIGV2YWx1YXRlX3N1 YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7CisrfQorKworKy8qIFJldHVybiB0aGUg bnVtYmVyIG9mIGRpbWVuc2lvbnMgZm9yIGEgRm9ydHJhbiBhcnJheSBvciBzdHJpbmcuICAqLwor KworK2ludAorK2NhbGNfZjc3X2FycmF5X2RpbXMgKHN0cnVjdCB0eXBlICphcnJheV90eXBlKQor K3sKKysgIGludCBuZGltZW4gPSAxOworKyAgc3RydWN0IHR5cGUgKnRtcF90eXBlOworKworKyAg aWYgKChhcnJheV90eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9TVFJJTkcpKQorKyAgICByZXR1 cm4gMTsKKysKKysgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSAhPSBUWVBFX0NPREVfQVJSQVkp KQorKyAgICBlcnJvciAoXygiQ2FuJ3QgZ2V0IGRpbWVuc2lvbnMgZm9yIGEgbm9uLWFycmF5IHR5 cGUiKSk7CisrCisrICB0bXBfdHlwZSA9IGFycmF5X3R5cGU7CisrCisrICB3aGlsZSAoKHRtcF90 eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKSkKKysgICAgeworKyAgICAgIGlmICh0 bXBfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfQVJSQVkpCisrCSsrbmRpbWVuOworKyAgICB9 CisrICByZXR1cm4gbmRpbWVuOworK30KKysKKysvKiBDYWxsZWQgZnJvbSBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgdG8gcGVyZm9ybSBhcnJheSBpbmRleGluZywgYW5kCisrICAgc3ViLXJhbmdl IGV4dHJhY3Rpb24sIGZvciBGb3J0cmFuLiAgQXMgd2VsbCBhcyBhcnJheXMgdGhpcyBmdW5jdGlv bgorKyAgIGFsc28gaGFuZGxlcyBzdHJpbmdzIGFzIHRoZXkgY2FuIGJlIHRyZWF0ZWQgbGlrZSBh cnJheXMgb2YgY2hhcmFjdGVycy4KKysgICBBUlJBWSBpcyB0aGUgYXJyYXkgb3Igc3RyaW5nIGJl aW5nIGFjY2Vzc2VkLiAgRVhQLCBQT1MsIGFuZCBOT1NJREUgYXJlCisrICAgYXMgZm9yIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCwgYW5kIE5BUkdTIGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRz CisrICAgaW4gdGhpcyBhY2Nlc3MgKGUuZy4gJ2FycmF5ICgxLDIsMyknIHdvdWxkIGJlIE5BUkdT IDMpLiAgKi8KKysKKytzdGF0aWMgc3RydWN0IHZhbHVlICoKKytmb3J0cmFuX3ZhbHVlX3N1YmFy cmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorKwkJCWlu dCAqcG9zLCBpbnQgbmFyZ3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKKyt7CisrICBpZiAoZXhwLT5l bHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5HRSkKKysgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJh cnJheSAoYXJyYXksIGV4cCwgcG9zLCBub3NpZGUpOworKworKyAgaWYgKG5vc2lkZSA9PSBFVkFM X1NLSVApCisrICAgIHsKKysgICAgICBza2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChuYXJncywg ZXhwLCBwb3MsIG5vc2lkZSk7CisrICAgICAgLyogUmV0dXJuIHRoZSBkdW1teSB2YWx1ZSB3aXRo IHRoZSBjb3JyZWN0IHR5cGUuICAqLworKyAgICAgIHJldHVybiBhcnJheTsKKysgICAgfQorKwor KyAgTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CisrICBpbnQgbmRp bWVuc2lvbnMgPSAxOworKyAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1 ZV90eXBlIChhcnJheSkpOworKworKyAgaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKKysg ICAgZXJyb3IgKF8oIlRvbyBtYW55IHN1YnNjcmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhf Rk9SVFJBTl9ESU1TKTsKKysKKysgIG5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAo dHlwZSk7CisrCisrICBpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCisrICAgIGVycm9yIChfKCJX cm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIpKTsKKysKKysgIGdkYl9hc3NlcnQgKG5hcmdzID4g MCk7CisrCisrICAvKiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJz Y3JpcHQgZXhwcmVzc2lvbiBsZXQgdXMKKysgICAgIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRo aXMgZWxlbWVudCBleGlzdHMgaW4gdGhlIGFycmF5LiAgKi8KKysKKysgIC8qIFRha2UgYXJyYXkg aW5kaWNlcyBsZWZ0IHRvIHJpZ2h0LiAgKi8KKysgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7 IGkrKykKKysgICAgeworKyAgICAgIC8qIEV2YWx1YXRlIGVhY2ggc3Vic2NyaXB0OyBpdCBtdXN0 IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBGNzcuICAqLworKyAgICAgIHZhbHVlICphcmcyID0gZXZh bHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOworKworKyAgICAg IC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJheS4gICovCisrICAgICAgc3Vic2NyaXB0X2Fy cmF5W2ldID0gdmFsdWVfYXNfbG9uZyAoYXJnMik7CisrICAgIH0KKysKKysgIC8qIEludGVybmFs IHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICovCisrICBmb3IgKGlu dCBpID0gbmFyZ3M7IGkgPiAwOyBpLS0pCisrICAgIHsKKysgICAgICBzdHJ1Y3QgdHlwZSAqYXJy YXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisrICAgICAgTE9O R0VTVCBpbmRleCA9IHN1YnNjcmlwdF9hcnJheVtpIC0gMV07CisrCisrICAgICAgYXJyYXkgPSB2 YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKKysJCQkJCWY3N19nZXRfbG93 ZXJib3VuZCAoYXJyYXlfdHlwZSkpOworKyAgICB9CisrCisrICByZXR1cm4gYXJyYXk7CisrfQor KworIC8qIFNwZWNpYWwgZXhwcmVzc2lvbiBldmFsdWF0aW9uIGNhc2VzIGZvciBGb3J0cmFuLiAg Ki8KKyAKKyBzdGF0aWMgc3RydWN0IHZhbHVlICoKK0BAIC0yODUsNiArNDEzLDg3IEBAIGV2YWx1 YXRlX3N1YmV4cF9mIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsIHN0cnVjdCBleHByZXNzaW9u ICpleHAsCisgCQkJCSAgIFRZUEVfTEVOR1RIICh0eXBlKSk7CisgICAgICAgcmV0dXJuIHZhbHVl X2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwK KyAJCQkJIFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpOworKworKworKyAg ICBjYXNlIE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVDoKKysgICAgICAvKiBSZW1lbWJlciB0 aGF0IGluIEY3NywgZnVuY3Rpb25zLCBzdWJzdHJpbmcgb3BzIGFuZCBhcnJheSBzdWJzY3JpcHQK KysgICAgICAgICBvcGVyYXRpb25zIGNhbm5vdCBiZSBkaXNhbWJpZ3VhdGVkIGF0IHBhcnNlIHRp bWUuICBXZSBoYXZlIG1hZGUKKysgICAgICAgICBhbGwgYXJyYXkgc3Vic2NyaXB0IG9wZXJhdGlv bnMsIHN1YnN0cmluZyBvcGVyYXRpb25zIGFzIHdlbGwgYXMKKysgICAgICAgICBmdW5jdGlvbiBj YWxscyBjb21lIGhlcmUgYW5kIHdlIG5vdyBoYXZlIHRvIGRpc2NvdmVyIHdoYXQgdGhlIGhlY2sK KysgICAgICAgICB0aGlzIHRoaW5nIGFjdHVhbGx5IHdhcy4gIElmIGl0IGlzIGEgZnVuY3Rpb24s IHdlIHByb2Nlc3MganVzdCBhcworKyAgICAgICAgIGlmIHdlIGdvdCBhbiBPUF9GVU5DQUxMLiAg Ki8KKysgICAgICBpbnQgbmFyZ3MgPSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjICsgMV0u bG9uZ2NvbnN0KTsKKysgICAgICAoKnBvcykgKz0gMjsKKysKKysgICAgICAvKiBGaXJzdCBkZXRl cm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8KKysgICAgICBhcmcx ID0gZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKKysgICAgICB0 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworKyAgICAgIGVudW0gdHlw ZV9jb2RlIGNvZGUgPSB0eXBlLT5jb2RlICgpOworKworKyAgICAgIGlmIChjb2RlID09IFRZUEVf Q09ERV9QVFIpCisrCXsKKysJICAvKiBGb3J0cmFuIGFsd2F5cyBwYXNzZXMgdmFyaWFibGUgdG8g c3Vicm91dGluZXMgYXMgcG9pbnRlci4KKysJICAgICBTbyB3ZSBuZWVkIHRvIGxvb2sgaW50byBp dHMgdGFyZ2V0IHR5cGUgdG8gc2VlIGlmIGl0IGlzCisrCSAgICAgYXJyYXksIHN0cmluZyBvciBm dW5jdGlvbi4gIElmIGl0IGlzLCB3ZSBuZWVkIHRvIHN3aXRjaAorKwkgICAgIHRvIHRoZSB0YXJn ZXQgdmFsdWUgdGhlIG9yaWdpbmFsIG9uZSBwb2ludHMgdG8uICAqLworKwkgIHN0cnVjdCB0eXBl ICp0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsK KysKKysJICBpZiAodGFyZ2V0X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0FSUkFZCisrCSAg ICAgIHx8IHRhcmdldF90eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9TVFJJTkcKKysJICAgICAg fHwgdGFyZ2V0X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0ZVTkMpCisrCSAgICB7CisrCSAg ICAgIGFyZzEgPSB2YWx1ZV9pbmQgKGFyZzEpOworKwkgICAgICB0eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJnMSkpOworKwkgICAgICBjb2RlID0gdHlwZS0+Y29kZSAoKTsKKysJ ICAgIH0KKysJfQorKworKyAgICAgIHN3aXRjaCAoY29kZSkKKysJeworKwljYXNlIFRZUEVfQ09E RV9BUlJBWToKKysJY2FzZSBUWVBFX0NPREVfU1RSSU5HOgorKwkgIHJldHVybiBmb3J0cmFuX3Zh bHVlX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7CisrCisrCWNhc2Ug VFlQRV9DT0RFX1BUUjoKKysJY2FzZSBUWVBFX0NPREVfRlVOQzoKKysJY2FzZSBUWVBFX0NPREVf SU5URVJOQUxfRlVOQ1RJT046CisrCSAgeworKwkgICAgLyogSXQncyBhIGZ1bmN0aW9uIGNhbGwu ICBBbGxvY2F0ZSBhcmcgdmVjdG9yLCBpbmNsdWRpbmcKKysJICAgIHNwYWNlIGZvciB0aGUgZnVu Y3Rpb24gdG8gYmUgY2FsbGVkIGluIGFyZ3ZlY1swXSBhbmQgYQorKwkgICAgdGVybWluYXRpb24g TlVMTC4gICovCisrCSAgICBzdHJ1Y3QgdmFsdWUgKiphcmd2ZWMgPSAoc3RydWN0IHZhbHVlICoq KQorKwkgICAgICBhbGxvY2EgKHNpemVvZiAoc3RydWN0IHZhbHVlICopICogKG5hcmdzICsgMikp OworKwkgICAgYXJndmVjWzBdID0gYXJnMTsKKysJICAgIGludCB0ZW0gPSAxOworKwkgICAgZm9y ICg7IHRlbSA8PSBuYXJnczsgdGVtKyspCisrCSAgICAgIHsKKysJCWFyZ3ZlY1t0ZW1dID0gZXZh bHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOworKwkJLyogQXJn dW1lbnRzIGluIEZvcnRyYW4gYXJlIHBhc3NlZCBieSBhZGRyZXNzLiAgQ29lcmNlIHRoZQorKwkJ ICAgYXJndW1lbnRzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdmFsdWVfYXJnX2NvZXJjZSBhcworKwkJ ICAgb3RoZXJ3aXNlIHRoZSBjYWxsIHRvIG1hbGxvYyB0byBwbGFjZSB0aGUgbm9uLWx2YWx1ZQor KwkJICAgcGFyYW1ldGVycyBpbiB0YXJnZXQgbWVtb3J5IGlzIGhpdCBieSB0aGlzIEZvcnRyYW4K KysJCSAgIHNwZWNpZmljIGxvZ2ljLiAgVGhpcyByZXN1bHRzIGluIG1hbGxvYyBiZWluZyBjYWxs ZWQKKysJCSAgIHdpdGggYSBwb2ludGVyIHRvIGFuIGludGVnZXIgZm9sbG93ZWQgYnkgYW4gYXR0 ZW1wdCB0bworKwkJICAgbWFsbG9jIHRoZSBhcmd1bWVudHMgdG8gbWFsbG9jIGluIHRhcmdldCBt ZW1vcnkuCisrCQkgICBJbmZpbml0ZSByZWN1cnNpb24gZW5zdWVzLiAgKi8KKysJCWlmIChjb2Rl ID09IFRZUEVfQ09ERV9QVFIgfHwgY29kZSA9PSBUWVBFX0NPREVfRlVOQykKKysJCSAgeworKwkJ ICAgIGJvb2wgaXNfYXJ0aWZpY2lhbAorKwkJICAgICAgPSBUWVBFX0ZJRUxEX0FSVElGSUNJQUwg KHZhbHVlX3R5cGUgKGFyZzEpLCB0ZW0gLSAxKTsKKysJCSAgICBhcmd2ZWNbdGVtXSA9IGZvcnRy YW5fYXJndW1lbnRfY29udmVydCAoYXJndmVjW3RlbV0sCisrCQkJCQkJCSAgICBpc19hcnRpZmlj aWFsKTsKKysJCSAgfQorKwkgICAgICB9CisrCSAgICBhcmd2ZWNbdGVtXSA9IDA7CS8qIHNpZ25h bCBlbmQgb2YgYXJnbGlzdCAqLworKwkgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCisrCSAg ICAgIHJldHVybiBldmFsX3NraXBfdmFsdWUgKGV4cCk7CisrCSAgICByZXR1cm4gZXZhbHVhdGVf c3ViZXhwX2RvX2NhbGwgKGV4cCwgbm9zaWRlLCBuYXJncywgYXJndmVjLCBOVUxMLAorKwkJCQkJ ICAgIGV4cGVjdF90eXBlKTsKKysJICB9CisrCisrCWRlZmF1bHQ6CisrCSAgZXJyb3IgKF8oIkNh bm5vdCBwZXJmb3JtIHN1YnN0cmluZyBvbiB0aGlzIHR5cGUiKSk7CisrCX0KKyAgICAgfQorIAor ICAgLyogU2hvdWxkIGJlIHVucmVhY2hhYmxlLiAgKi8KK0BAIC0zMTgsNiArNTI3LDExIEBAIG9w ZXJhdG9yX2xlbmd0aF9mIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGlu dCAqb3BsZW5wLAorICAgICAgIG9wbGVuID0gMTsKKyAgICAgICBhcmdzID0gMjsKKyAgICAgICBi cmVhazsKKysKKysgICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1Q6CisrICAgICAg b3BsZW4gPSAzOworKyAgICAgIGFyZ3MgPSAxICsgbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1tw YyAtIDJdLmxvbmdjb25zdCk7CisrICAgICAgYnJlYWs7CisgICAgIH0KKyAKKyAgICpvcGxlbnAg PSBvcGxlbjsKK0BAIC0zOTAsNiArNjA0LDEwIEBAIHByaW50X3N1YmV4cF9mIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAgICAgY2FzZSBCSU5PUF9GT1JUUkFOX01PRFVMTzoK KyAgICAgICBwcmludF9iaW5vcF9zdWJleHBfZiAoZXhwLCBwb3MsIHN0cmVhbSwgcHJlYywgIk1P RFVMTyIpOworICAgICAgIHJldHVybjsKKysKKysgICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVE X0FSR0xJU1Q6CisrICAgICAgcHJpbnRfc3ViZXhwX2Z1bmNhbGwgKGV4cCwgcG9zLCBzdHJlYW0p OworKyAgICAgIHJldHVybjsKKyAgICAgfQorIH0KKyAKK0BAIC00MzIsNiArNjUwLDkgQEAgZHVt cF9zdWJleHBfYm9keV9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorICAgICBjYXNlIEJJTk9Q X0ZPUlRSQU5fTU9EVUxPOgorICAgICAgIG9wZXJhdG9yX2xlbmd0aF9mIChleHAsIChlbHQgKyAx KSwgJm9wbGVuLCAmbmFyZ3MpOworICAgICAgIGJyZWFrOworKworKyAgICBjYXNlIE9QX0Y3N19V TkRFVEVSTUlORURfQVJHTElTVDoKKysgICAgICByZXR1cm4gZHVtcF9zdWJleHBfYm9keV9mdW5j YWxsIChleHAsIHN0cmVhbSwgZWx0KTsKKyAgICAgfQorIAorICAgZWx0ICs9IG9wbGVuOworZGlm ZiAtLWdpdCBhL2dkYi9mb3J0cmFuLW9wZXJhdG9yLmRlZiBiL2dkYi9mb3J0cmFuLW9wZXJhdG9y LmRlZgorLS0tIGEvZ2RiL2ZvcnRyYW4tb3BlcmF0b3IuZGVmCisrKysgYi9nZGIvZm9ydHJhbi1v cGVyYXRvci5kZWYKK0BAIC0xNyw2ICsxNywxNCBAQAorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworIAorKy8qIFRoaXMgaXMgRVhBQ1RMWSBsaWtlIE9QX0ZVTkNBTEwgYnV0IGlz IHNlbWFudGljYWxseSBkaWZmZXJlbnQuCisrICAgSW4gRjc3LCBhcnJheSBzdWJzY3JpcHQgZXhw cmVzc2lvbnMsIHN1YnN0cmluZyBleHByZXNzaW9ucyBhbmQKKysgICBmdW5jdGlvbiBjYWxscyBh cmUgYWxsIGV4YWN0bHkgdGhlIHNhbWUgc3ludGFjdGljYWxseS4gIFRoZXkKKysgICBtYXkgb25s eSBiZSBkaXNhbWJpZ3VhdGVkIGF0IHJ1bnRpbWUuICBUaHVzIHRoaXMgb3BlcmF0b3IsCisrICAg d2hpY2ggaW5kaWNhdGVzIHRoYXQgd2UgaGF2ZSBmb3VuZCBzb21ldGhpbmcgb2YgdGhlIGZvcm0K KysgICA8bmFtZT4gKCA8c3R1ZmY+ICkuICAqLworK09QIChPUF9GNzdfVU5ERVRFUk1JTkVEX0FS R0xJU1QpCisrCisgLyogU2luZ2xlIG9wZXJhbmQgYnVpbHRpbnMuICAqLworIE9QIChVTk9QX0ZP UlRSQU5fS0lORCkKKyBPUCAoVU5PUF9GT1JUUkFOX0ZMT09SKQorZGlmZiAtLWdpdCBhL2dkYi9w YXJzZS5jIGIvZ2RiL3BhcnNlLmMKKy0tLSBhL2dkYi9wYXJzZS5jCisrKysgYi9nZGIvcGFyc2Uu YworQEAgLTgxNyw3ICs4MTcsNiBAQCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0 cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9zLAorICAgICAgIGJyZWFrOworIAorICAg ICBjYXNlIE9QX0ZVTkNBTEw6CistICAgIGNhc2UgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNU OgorICAgICAgIG9wbGVuID0gMzsKKyAgICAgICBhcmdzID0gMSArIGxvbmdlc3RfdG9faW50IChl eHByLT5lbHRzW2VuZHBvcyAtIDJdLmxvbmdjb25zdCk7CisgICAgICAgYnJlYWs7CitkaWZmIC0t Z2l0IGEvZ2RiL3BhcnNlci1kZWZzLmggYi9nZGIvcGFyc2VyLWRlZnMuaAorLS0tIGEvZ2RiL3Bh cnNlci1kZWZzLmgKKysrKyBiL2dkYi9wYXJzZXItZGVmcy5oCitAQCAtMzM4LDYgKzMzOCwxMyBA QCBleHRlcm4gaW50IGR1bXBfc3ViZXhwIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBzdHJ1Y3QgdWlf ZmlsZSAqLCBpbnQpOworIGV4dGVybiBpbnQgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCAoc3Ry dWN0IGV4cHJlc3Npb24gKiwgCisgCQkJCSAgICAgIHN0cnVjdCB1aV9maWxlICosIGludCk7Cisg CisrLyogRHVtcCAodG8gU1RSRUFNKSBhIGZ1bmN0aW9uIGNhbGwgbGlrZSBleHByZXNzaW9uIGF0 IHBvc2l0aW9uIEVMVCBpbiB0aGUKKysgICBleHByZXNzaW9uIGFycmF5IEVYUC4gIFJldHVybiBh IG5ldyB2YWx1ZSBmb3IgRUxUIGp1c3QgYWZ0ZXIgdGhlCisrICAgZnVuY3Rpb24gY2FsbCBleHBy ZXNzaW9uLiAgKi8KKysKKytleHRlcm4gaW50IGR1bXBfc3ViZXhwX2JvZHlfZnVuY2FsbCAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwKKysJCQkJICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBp bnQgZWx0KTsKKysKKyBleHRlcm4gdm9pZCBvcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBl eHByZXNzaW9uICosIGludCwgaW50ICosIGludCAqKTsKKyAKKyBleHRlcm4gdm9pZCBvcGVyYXRv cl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICos CitAQCAtNDQwLDYgKzQ0NywxNSBAQCBleHRlcm4gdm9pZCBwcmludF9zdWJleHAgKHN0cnVjdCBl eHByZXNzaW9uICosIGludCAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAorIGV4dGVybiB2b2lkIHByaW50 X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgaW50ICosIAorIAkJCQkgICBz dHJ1Y3QgdWlfZmlsZSAqLCBlbnVtIHByZWNlZGVuY2UpOworIAorKy8qIFByaW50IGEgZnVuY3Rp b24gY2FsbCBsaWtlIGV4cHJlc3Npb24gdG8gU1RSRUFNLiAgVGhpcyBpcyBjYWxsZWQgYXMgYQor KyAgIGhlbHBlciBmdW5jdGlvbiBieSB3aGljaCBwb2ludCB0aGUgZXhwcmVzc2lvbiBub2RlIGlk ZW50aWZ5aW5nIHRoaXMgYXMgYQorKyAgIGZ1bmN0aW9uIGNhbGwgaGFzIGFscmVhZHkgYmVlbiBz dHJpcHBlZCBvZmYgYW5kIFBPUyBzaG91bGQgcG9pbnQgdG8gdGhlCisrICAgbnVtYmVyIG9mIGZ1 bmN0aW9uIGNhbGwgYXJndW1lbnRzLiAgRVhQIGlzIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUK KysgICBsaXN0IG9mIGV4cHJlc3Npb24gZWxlbWVudHMuICAqLworKworK2V4dGVybiB2b2lkIHBy aW50X3N1YmV4cF9mdW5jYWxsIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKysJ CQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKKysKKyAvKiBGdW5jdGlvbiB1c2VkIHRvIGF2 b2lkIGRpcmVjdCBjYWxscyB0byBmcHJpbnRmCisgICAgaW4gdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5 IHRoZSBiaXNvbiBwYXJzZXIuICAqLworIAorZGlmZiAtLWdpdCBhL2dkYi9zdGQtb3BlcmF0b3Iu ZGVmIGIvZ2RiL3N0ZC1vcGVyYXRvci5kZWYKKy0tLSBhL2dkYi9zdGQtb3BlcmF0b3IuZGVmCisr KysgYi9nZGIvc3RkLW9wZXJhdG9yLmRlZgorQEAgLTE2OCwxNCArMTY4LDYgQEAgT1AgKE9QX0ZV TkNBTEwpCisgICAgcG9pbnRlci4gIFRoaXMgaXMgYW4gT2JqZWN0aXZlIEMgbWVzc2FnZS4gICov CisgT1AgKE9QX09CSkNfTVNHQ0FMTCkKKyAKKy0vKiBUaGlzIGlzIEVYQUNUTFkgbGlrZSBPUF9G VU5DQUxMIGJ1dCBpcyBzZW1hbnRpY2FsbHkgZGlmZmVyZW50LgorLSAgIEluIEY3NywgYXJyYXkg c3Vic2NyaXB0IGV4cHJlc3Npb25zLCBzdWJzdHJpbmcgZXhwcmVzc2lvbnMgYW5kCistICAgZnVu Y3Rpb24gY2FsbHMgYXJlIGFsbCBleGFjdGx5IHRoZSBzYW1lIHN5bnRhY3RpY2FsbHkuICBUaGV5 CistICAgbWF5IG9ubHkgYmUgZGlzYW1iaWd1YXRlZCBhdCBydW50aW1lLiAgVGh1cyB0aGlzIG9w ZXJhdG9yLAorLSAgIHdoaWNoIGluZGljYXRlcyB0aGF0IHdlIGhhdmUgZm91bmQgc29tZXRoaW5n IG9mIHRoZSBmb3JtCistICAgPG5hbWU+ICggPHN0dWZmPiApLiAgKi8KKy1PUCAoT1BfRjc3X1VO REVURVJNSU5FRF9BUkdMSVNUKQorLQorIC8qIE9QX0NPTVBMRVggdGFrZXMgYSB0eXBlIGluIHRo ZSBmb2xsb3dpbmcgZWxlbWVudCwgZm9sbG93ZWQgYnkgYW5vdGhlcgorICAgIE9QX0NPTVBMRVgs IG1ha2luZyB0aHJlZSBleHBfZWxlbWVudHMuICBJdCBpcyBmb2xsb3dlZCBieSB0d28gZG91Ymxl CisgICAgYXJncywgYW5kIGNvbnZlcnRzIHRoZW0gaW50byBhIGNvbXBsZXggbnVtYmVyIG9mIHRo ZSBnaXZlbiB0eXBlLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLWZpeC1wcmludC1j aGFyLWFycmF5LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC1maXgtcHJpbnQtY2hhci1hcnJheS5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA1MDhkYS4uMDAwMDAwMAotLS0gYS9n ZGItdmxhLWludGVsLWZpeC1wcmludC1jaGFyLWFycmF5LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNTkgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IFNlcmdpbyBEdXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLURh dGU6IFRodSwgNyBEZWMgMjAxNyAxNjoyMDozMSAtMDUwMAotU3ViamVjdDogZ2RiLXZsYS1pbnRl bC1maXgtcHJpbnQtY2hhci1hcnJheS5wYXRjaAotCi07OyBSZXZlcnQgdXBzdHJlYW0gY29tbWl0 IDQ2OTQxMmRkOWNjYzRkZTU4NzRmZDMyOTliMTA1ODMzZjM2YjM0Y2QKLQotUmV2ZXJ0IGNvbW1p dCAob25seSB0aGUgcGFydCB0b3VjaGluZyBnZGIvZi12YWxwcmludC5jKToKLQotICBjb21taXQg NDY5NDEyZGQ5Y2NjNGRlNTg3NGZkMzI5OWIxMDU4MzNmMzZiMzRjZAotICBBdXRob3I6IENocmlz dG9waCBXZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgotICBEYXRlOiAg IEZyaSBTZXAgOCAxNToxMTo0NyAyMDE3ICswMjAwCi0KLSAgICAgIFJlbW92ZSBDL0MrKyByZWxl dmFudCBjb2RlIGluIEZvcnRyYW4gc3BlY2lmaWMgZmlsZS4KLQotICAgICAgUmVtb3ZlIGNvZGUg cmVsZXZhbnQgZm9yIHByaW50aW5nIEMvQysrIEludGVnZXIgdmFsdWVzIGluIGEKLSAgICAgIEZv cnRyYW4gc3BlY2lmaWMgZmlsZSB0byB1bmlmeSBwcmludGluZyBvZiBGb3J0cmFuIHZhbHVlcy4K LSAgICAgIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBvdXRwdXQuCi0KLUFuZCBhZGp1c3QgaXRz IHRlc3RjYXNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHBy aW50LmMKLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBA IC0zMTAsNyArMzEwLDIxIEBAIGZfdmFsdWVfcHJpbnRfaW5uZXIgKHN0cnVjdCB2YWx1ZSAqdmFs LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKLSAJICB2YWx1ZV9wcmludF9z Y2FsYXJfZm9ybWF0dGVkICh2YWwsICZvcHRzLCAwLCBzdHJlYW0pOwotIAl9Ci0gICAgICAgZWxz ZQotLQl2YWx1ZV9wcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWwsIG9wdGlvbnMsIDAsIHN0cmVh bSk7Ci0rCXsKLSsJICB2YWx1ZV9wcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWwsIG9wdGlvbnMs IDAsIHN0cmVhbSk7Ci0rCSAgLyogQyBhbmQgQysrIGhhcyBubyBzaW5nbGUgYnl0ZSBpbnQgdHlw ZSwgY2hhciBpcyB1c2VkIGluc3RlYWQuCi0rCSAgICAgU2luY2Ugd2UgZG9uJ3Qga25vdyB3aGV0 aGVyIHRoZSB2YWx1ZSBpcyByZWFsbHkgaW50ZW5kZWQgdG8KLSsJICAgICBiZSB1c2VkIGFzIGFu IGludGVnZXIgb3IgYSBjaGFyYWN0ZXIsIHByaW50IHRoZSBjaGFyYWN0ZXIKLSsJICAgICBlcXVp dmFsZW50IGFzIHdlbGwuICAqLwotKwkgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPT0gMSkKLSsJ ICAgIHsKLSsJICAgICAgTE9OR0VTVCBjOwotKwotKwkgICAgICBmcHV0c19maWx0ZXJlZCAoIiAi LCBzdHJlYW0pOwotKwkgICAgICBjID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZhbGFkZHIpOwotKwkg ICAgICBMQV9QUklOVF9DSEFSICgodW5zaWduZWQgY2hhcikgYywgdHlwZSwgc3RyZWFtKTsKLSsJ ICAgIH0KLSsJfQotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wcmludGluZy10eXBlcy5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ByaW50aW5nLXR5cGVzLmV4cAotLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wcmludGluZy10eXBlcy5leHAKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcHJpbnRpbmctdHlwZXMuZXhwCi1AQCAtMzAsNyArMzAsNyBA QCBpZiB7IVtmb3J0cmFuX3J1bnRvX21haW5dfSB0aGVuIHsKLSBnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAid3JpdGUiXQotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ3 cml0ZSIKLSAKLS1nZGJfdGVzdCAicHJpbnQgb25lQnl0ZSIJIiA9IDEiCi0rZ2RiX3Rlc3QgInBy aW50IG9uZUJ5dGUiCSIgPSAxIFwnXFxcXDAwMVwnIgotIGdkYl90ZXN0ICJwcmludCB0d29ieXRl cyIJIiA9IDIiCi0gZ2RiX3Rlc3QgInByaW50IGNodmFsdWUiCSIgPSBcJ2FcJyIKLSBnZGJfdGVz dCAicHJpbnQgbG9ndmFsdWUiCSIgPSBcLlRSVUVcLiIKCmRpZmYgLS1naXQgYS9nZGItdmxhLWlu dGVsLWZvcnRyYW4tc3RyaWRlcy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtZm9ydHJhbi1zdHJpZGVz LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmY4YmRiLi4wMDAwMDAwCi0t LSBhL2dkYi12bGEtaW50ZWwtZm9ydHJhbi1zdHJpZGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTc3OCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6 IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi12bGEtaW50ZWwt Zm9ydHJhbi1zdHJpZGVzLnBhdGNoCi0KLTs7IFZMQSAoRm9ydHJhbiBkeW5hbWljIGFycmF5cykg ZnJvbSBJbnRlbCArIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSB0ZXN0cy4KLTs7PXB1c2gKLQot Z2l0IGRpZmYgLS1zdGF0IC1wIGdkYi9tYXN0ZXIuLi5nZGIvdXNlcnMvYmhlY2tlbC9mb3J0cmFu LXN0cmlkZXMKLWRiZmQ3MTQwYmY0YzA1MDBkMWY1ZDE5MmJlNzgxZjgzZjc4Zjc5MjIKLQotIGdk Yi9kd2FyZjJsb2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYgKystCi0gZ2Ri L2R3YXJmMmxvYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCi0gZ2RiL2R3 YXJmMnJlYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArLQotIGdkYi9ldmFs LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzOTEgKysrKysrKysrKysrKysr KysrKysrLS0tLS0KLSBnZGIvZXhwcHJpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDIwICstCi0gZ2RiL2V4cHJlc3Npb24uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxOCArLQotIGdkYi9mLWV4cC55ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NDIgKystCi0gZ2RiL2YtdmFscHJpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg OCArLQotIGdkYi9nZGJ0eXBlcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzQg KystCi0gZ2RiL2dkYnR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCAr LQotIGdkYi9wYXJzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjQgKy0K LSBnZGIvcnVzdC1leHAueSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCi0g Z2RiL3J1c3QtbGFuZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArLQotIGdk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHAgfCA0MjEgKysrKysrKysr KysrKysrKysrKysrKysrKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFy cmF5cy5mOTAgfCAgNTUgKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBl LmV4cCAgICAgfCAgIDQgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5l eHAgICAgfCAgIDQgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAg ICAgfCAgNDQgKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCAg ICB8ICAyOSArKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MCAgICAgICAgICAg fCAgMTAgKwotIGdkYi92YWxhcml0aC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MTAgKy0KLSBnZGIvdmFsb3BzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTk3 ICsrKysrKysrKysrLS0KLSBnZGIvdmFsdWUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsKLSAyMyBmaWxlcyBjaGFuZ2VkLCAxMjQyIGluc2VydGlvbnMoKyksIDE4MyBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi0tLS0g YS9nZGIvZXZhbC5jCi0rKysgYi9nZGIvZXZhbC5jCi1AQCAtMzcxLDI5ICszNzEsMzIzIEBAIGlu aXRfYXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IHZhbHVlICplbGVt ZW50LAotICAgcmV0dXJuIGluZGV4OwotIH0KLSAKLSsvKiBFdmFsdWF0ZXMgYW55IG9wZXJhdGlv biBvbiBGb3J0cmFuIGFycmF5cyBvciBzdHJpbmdzIHdpdGggYXQgbGVhc3QKLSsgICBvbmUgdXNl ciBwcm92aWRlZCBwYXJhbWV0ZXIuICBFeHBlY3RzIHRoZSBpbnB1dCBBUlJBWSB0byBiZSBlaXRo ZXIKLSsgICBhbiBhcnJheSwgb3IgYSBzdHJpbmcuICBFdmFsdWF0ZXMgRVhQIGJ5IGluY3JlbWVu dGluZyBQT1MsIGFuZAotKyAgIHdyaXRlcyB0aGUgY29udGVudCBmcm9tIHRoZSBlbHQgc3RhY2sg aW50byBhIGxvY2FsIHN0cnVjdC4gIE5BUkdTCi0rICAgc3BlY2lmaWVzIG51bWJlciBvZiBsaXRl cmFsIG9yIHJhbmdlIGFyZ3VtZW50cyB0aGUgdXNlciBwcm92aWRlZC4KLSsgICBOQVJHUyBtdXN0 IGJlIHRoZSBzYW1lIG51bWJlciBhcyBBUlJBWSBoYXMgZGltZW5zaW9ucy4gICovCi0rCi0gc3Rh dGljIHN0cnVjdCB2YWx1ZSAqCi0tdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFy cmF5LAotLQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lk ZSBub3NpZGUpCi0rdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLAotKwkJICAgIGludCAqcG9zLCBpbnQgbmFyZ3MsIGVudW0gbm9z aWRlIG5vc2lkZSkKLSB7Ci0tICBpbnQgcGMgPSAoKnBvcykgKyAxOwotLSAgTE9OR0VTVCBsb3df Ym91bmQsIGhpZ2hfYm91bmQ7Ci0tICBzdHJ1Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlIChhcnJheSktPmluZGV4X3R5cGUgKCkpOwotLSAgZW51bSByYW5nZV90eXBl IHJhbmdlX3R5cGUKLS0gICAgPSAoZW51bSByYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhw LT5lbHRzW3BjXS5sb25nY29uc3QpOwotLSAKLS0gICpwb3MgKz0gMzsKLS0KLS0gIGlmIChyYW5n ZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9E RUZBVUxUKQotLSAgICBsb3dfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5sb3cuY29uc3RfdmFs ICgpOwotLSAgZWxzZQotLSAgICBsb3dfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9z dWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLSsgIGludCBpLCBkaW1fY291bnQg PSAwOwotKyAgc3RydWN0IHZhbHVlICpuZXdfYXJyYXkgPSBhcnJheTsKLSsgIHN0cnVjdCB0eXBl ICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAobmV3X2FycmF5KSk7Ci0r ICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGU7Ci0rCi0rICB0eXBlZGVmIHN0cnVjdAotKyAgewotKyAg ICBlbnVtIHJhbmdlX3R5cGUgZjkwX3JhbmdlX3R5cGU7Ci0rICAgIExPTkdFU1QgbG93LCBoaWdo LCBzdHJpZGU7Ci0rICB9IHN1YnNjcmlwdF9yYW5nZTsKLSsKLSsgIHR5cGVkZWYgZW51bSBzdWJz Y3JpcHRfa2luZAotKyAgewotKyAgICBTVUJTQ1JJUFRfUkFOR0UsICAgIC8qIGUuZy4gIihsb3di b3VuZDpoaWdoYm91bmQpIiAgKi8KLSsgICAgU1VCU0NSSVBUX0lOREVYICAgIC8qIGUuZy4gIihs aXRlcmFsKSIgICovCi0rICB9IGtpbmQ7Ci0rCi0rICAvKiBMb2NhbCBzdHJ1Y3QgdG8gaG9sZCB1 c2VyIGRhdGEgZm9yIEZvcnRyYW4gc3ViYXJyYXkgZGltZW5zaW9ucy4gICovCi0rICBzdHJ1Y3Qg c3Vic2NyaXB0X3N0b3JlCi0rICB7Ci0rICAgIC8qIEZvciBldmVyeSBkaW1lbnNpb24sIHdlIGFy ZSBlaXRoZXIgd29ya2luZyBvbiBhIHJhbmdlIG9yIGFuIGluZGV4Ci0rICAgICAgIGV4cHJlc3Np b24sIHNvIHdlIHN0b3JlIHRoaXMgaW5mbyBzZXBhcmF0ZWx5IGZvciBsYXRlci4gICovCi0rICAg IGVudW0gc3Vic2NyaXB0X2tpbmQga2luZDsKLSsKLSsgICAgLyogV2UgYWxzbyBzdG9yZSBlaXRo ZXIgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBpbmZvLCBvciB0aGUgaW5kZXgKLSsgICAgICAg bnVtYmVyLiAgQmVmb3JlIGV2YWx1YXRpb24gb2YgdGhlIGlucHV0IHZhbHVlcywgd2UgZG8gbm90 IGtub3cgaWYgd2UgYXJlCi0rICAgICAgIGFjdHVhbGx5IHdvcmtpbmcgb24gYSByYW5nZSBvZiBy YW5nZXMsIG9yIGFuIGluZGV4IGluIGEgcmFuZ2UuICBTbyBhcyBhCi0rICAgICAgIGZpcnN0IHN0 ZXAgd2Ugc3RvcmUgYWxsIGlucHV0IGluIGEgdW5pb24uICBUaGUgYXJyYXkgY2FsY3VsYXRpb24g aXRzZWxmCi0rICAgICAgIGRlYWxzIHdpdGggdGhpcyBsYXRlciBvbi4gICovCi0rICAgIHVuaW9u IGVsZW1lbnRfcmFuZ2UKLSsgICAgewotKyAgICAgIHN1YnNjcmlwdF9yYW5nZSByYW5nZTsKLSsg ICAgICBMT05HRVNUIG51bWJlcjsKLSsgICAgfSBVOwotKyAgfSAqc3Vic2NyaXB0X2FycmF5Owot KwotKyAgLyogQ2hlY2sgaWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcHJvdmlkZWQgYnkgdGhl IHVzZXIgbWF0Y2hlcwotKyAgICAgdGhlIG51bWJlciBvZiBkaW1lbnNpb24gb2YgdGhlIGFycmF5 LiAgQSBzdHJpbmcgaGFzIG9ubHkgb25lCi0rICAgICBkaW1lbnNpb24uICAqLwotKyAgaWYgKG5h cmdzICE9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHZhbHVlX3R5cGUgKG5ld19hcnJheSkpKQotKyAg ICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMiKSk7Ci0rCi0rICBzdWJzY3Jp cHRfYXJyYXkgPSAoc3RydWN0IHN1YnNjcmlwdF9zdG9yZSopIGFsbG9jYSAoc2l6ZW9mICgqc3Vi c2NyaXB0X2FycmF5KSAqIG5hcmdzKTsKLSsKLSsgIC8qIFBhcnNlIHRoZSB1c2VyIGlucHV0IGlu dG8gdGhlIFNVQlNDUklQVF9BUlJBWSB0byBzdG9yZSBpdC4gIFdlIG5lZWQKLSsgICAgIHRvIGV2 YWx1YXRlIGl0IGZpcnN0LCBhcyB0aGUgaW5wdXQgaXMgZnJvbSBsZWZ0LXRvLXJpZ2h0LiAgVGhl Ci0rICAgICBhcnJheSBpcyBzdG9yZWQgZnJvbSByaWdodC10by1sZWZ0LiAgU28gd2UgaGF2ZSB0 byB1c2UgdGhlIHVzZXIKLSsgICAgIGlucHV0IGluIHJldmVyc2Ugb3JkZXIuICBMYXRlciBvbiwg d2UgbmVlZCB0aGUgaW5wdXQgaW5mb3JtYXRpb24gdG8KLSsgICAgIHJlLWNhbGN1bGF0ZSB0aGUg b3V0cHV0IGFycmF5LiAgRm9yIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5cywgd2UKLSsgICAgIGNh biBiZSBkZWFsaW5nIHdpdGggYW55IHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mIHJhbmdlcyBhbmQg aW5kaWNlcwotKyAgICAgZm9yIGV2ZXJ5IGRpbWVuc2lvbi4gICovCi0rICBmb3IgKGkgPSAwOyBp IDwgbmFyZ3M7IGkrKykKLSsgICAgewotKyAgICAgIHN0cnVjdCBzdWJzY3JpcHRfc3RvcmUgKmlu ZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKLSsKLSsgICAgICAvKiBUaGUgdXNlciBpbnB1dCBp cyBhIHJhbmdlLCB3aXRoIG9yIHdpdGhvdXQgbG93ZXIgYW5kIHVwcGVyIGJvdW5kLgotKwkgRS5n LjogInAgYXJyeSgyOjUpIiwgInAgYXJyeSggOjUpIiwgInAgYXJyeSggOiApIiwgZXRjLiAgKi8K LSsgICAgICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5HRSkKLSsJewotKwkg IGludCBwYyA9ICgqcG9zKSArIDE7Ci0rCSAgc3Vic2NyaXB0X3JhbmdlICpyYW5nZTsKLSsKLSsJ ICBpbmRleC0+a2luZCA9IFNVQlNDUklQVF9SQU5HRTsKLSsJICByYW5nZSA9ICZpbmRleC0+VS5y YW5nZTsKLSsKLSsJICAqcG9zICs9IDM7Ci0rCSAgcmFuZ2UtPmY5MF9yYW5nZV90eXBlID0gKGVu dW0gcmFuZ2VfdHlwZSkgZXhwLT5lbHRzW3BjXS5sb25nY29uc3Q7Ci0rCi0rCSAgLyogSWYgYSBs b3dlciBib3VuZCB3YXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIsIHRoZSBiaXQgaGFzIGJlZW4KLSsJ ICAgICBzZXQgYW5kIHdlIGNhbiBhc3NpZ24gdGhlIHZhbHVlIGZyb20gdGhlIGVsdCBzdGFjay4g IFNhbWUgZm9yCi0rCSAgICAgdXBwZXIgYm91bmQuICAqLwotKwkgIGlmICgocmFuZ2UtPmY5MF9y YW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKQotKwkgICAgICA9PSBTVUJBUlJBWV9MT1df Qk9VTkQpCi0rCSAgICByYW5nZS0+bG93ID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhw IChudWxscHRyLCBleHAsCi0rCQkJCQkJCSBwb3MsIG5vc2lkZSkpOwotKwkgIGlmICgocmFuZ2Ut PmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkKLSsJICAgICAgPT0gU1VCQVJS QVlfSElHSF9CT1VORCkKLSsJICAgIHJhbmdlLT5oaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVh dGVfc3ViZXhwIChudWxscHRyLCBleHAsCi0rCQkJCQkJCSAgcG9zLCBub3NpZGUpKTsKLSsKLSsJ ICAvKiBBc3NpZ24gdGhlIHVzZXIncyBzdHJpZGUgdmFsdWUgaWYgcHJvdmlkZWQuICAqLwotKwkg IGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfU1RSSURFKSA9PSBTVUJBUlJB WV9TVFJJREUpCi0rCSAgICByYW5nZS0+c3RyaWRlID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVf c3ViZXhwIChudWxscHRyLCBleHAsCi0rCQkJCQkJCSAgICAgcG9zLCBub3NpZGUpKTsKLSsKLSsJ ICAvKiBBc3NpZ24gdGhlIGRlZmF1bHQgc3RyaWRlIHZhbHVlICcxJy4gICovCi0rCSAgZWxzZQot KwkgICAgcmFuZ2UtPnN0cmlkZSA9IDE7Ci0gCi0tICBpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JP VU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCi0tICAgIGhp Z2hfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5oaWdoLmNvbnN0X3ZhbCAoKTsKLS0gIGVsc2UK LS0gICAgaGlnaF9ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0 ciwgZXhwLCBwb3MsIG5vc2lkZSkpOwotKwkgIC8qIENoZWNrIHRoZSBwcm92aWRlZCBzdHJpZGUg dmFsdWUgaXMgaWxsZWdhbCwgYWthICcwJy4gICovCi0rCSAgaWYgKHJhbmdlLT5zdHJpZGUgPT0g MCkKLSsJICAgIGVycm9yIChfKCJTdHJpZGUgbXVzdCBub3QgYmUgMCIpKTsKLSsJfQotKyAgICAg IC8qIFVzZXIgaW5wdXQgaXMgYW4gaW5kZXguICBFLmcuOiAicCBhcnJ5KDUpIi4gICovCi0rICAg ICAgZWxzZQotKwl7Ci0rCSAgc3RydWN0IHZhbHVlICp2YWw7Ci0rCi0rCSAgaW5kZXgtPmtpbmQg PSBTVUJTQ1JJUFRfSU5ERVg7Ci0rCi0rCSAgLyogRXZhbHVhdGUgZWFjaCBzdWJzY3JpcHQ7IGl0 IG11c3QgYmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gIFRoaXMKLSsJICAgICBlbnN1cmVzIHRo ZSB2YWxpZGl0eSBvZiB0aGUgcHJvdmlkZWQgaW5kZXguICAqLwotKwkgIHZhbCA9IGV2YWx1YXRl X3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLSsJICBpbmRleC0+VS5u dW1iZXIgPSB2YWx1ZV9hc19sb25nICh2YWwpOwotKwl9Ci0rCi0rICAgIH0KLSsKLSsgIC8qIFRy YXZlcnNlIHRoZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxlZnQgYW5kIHNldCB0aGUgaGlnaCBhbmQg bG93IGJvdW5kcwotKyAgICAgZm9yIGxhdGVyIHVzZS4gICovCi0rICBmb3IgKGkgPSBuYXJncyAt IDE7IGkgPj0gMDsgaS0tKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAq aW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOwotKyAgICAgIHN0cnVjdCB0eXBlICppbmRleF90 eXBlID0gYXJyYXlfdHlwZS0+aW5kZXhfdHlwZSAoKTsKLSsKLSsgICAgICBzd2l0Y2ggKGluZGV4 LT5raW5kKQotKwl7Ci0rCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgotKwkgIHsKLSsKLSsJICAgIC8q IFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHdlIG11 c3QKLSsJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMgYSByYW5nZS4g IFdlIHNpbXBseQotKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0ZWxscyB1cyBo b3cgbWFueSB0aW1lcyB3ZSBhcmUKLSsJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJQ0VfMS4gICov Ci0rCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJhbmdlOwotKwotKwkg ICAgLyogSWYgbm8gbG93ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCB3ZSB0YWtl IHRoZQotKwkgICAgICAgZGVmYXVsdCBib3VuZGFyeS4gIFNhbWUgZm9yIHRoZSBoaWdoIGJvdW5k LiAgKi8KLSsJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JP VU5EKSA9PSAwKQotKwkgICAgICByYW5nZS0+bG93ID0gaW5kZXhfdHlwZS0+Ym91bmRzICgpLT5s b3cuY29uc3RfdmFsICgpOwotKwotKwkgICAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBT VUJBUlJBWV9ISUdIX0JPVU5EKSA9PSAwKQotKwkgICAgICByYW5nZS0+aGlnaCA9IGluZGV4X3R5 cGUtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0rCi0rCSAgICAvKiBCb3RoIHVzZXIg cHJvdmlkZWQgbG93IGFuZCBoaWdoIGJvdW5kIGhhdmUgdG8gYmUgaW5zaWRlIHRoZQotKwkgICAg ICAgYXJyYXkgYm91bmRzLiAgVGhyb3cgYW4gZXJyb3IgaWYgbm90LiAgKi8KLSsJICAgIGlmIChy YW5nZS0+bG93IDwgaW5kZXhfdHlwZS0+Ym91bmRzICgpLT5sb3cuY29uc3RfdmFsICgpCi0rCQl8 fCByYW5nZS0+bG93ID4gaW5kZXhfdHlwZS0+Ym91bmRzICgpLT5oaWdoLmNvbnN0X3ZhbCAoKQot KwkJfHwgcmFuZ2UtPmhpZ2ggPCBpbmRleF90eXBlLT5ib3VuZHMgKCktPmxvdy5jb25zdF92YWwg KCkKLSsJCXx8IHJhbmdlLT5oaWdoID4gaW5kZXhfdHlwZS0+Ym91bmRzICgpLT5oaWdoLmNvbnN0 X3ZhbCAoKSkKLSsJICAgICAgZXJyb3IgKF8oInByb3ZpZGVkIGJvdW5kKHMpIG91dHNpZGUgYXJy YXkgYm91bmQocykiKSk7Ci0rCi0rCSAgICAvKiBGb3IgYSBuZWdhdGl2ZSBzdHJpZGUgdGhlIGxv d2VyIGJvdW5kYXJ5IG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhlCi0rCSAgICAgICB1cHBlciBib3Vu ZGFyeS4KLSsJICAgICAgIEZvciBhIHBvc2l0aXZlIHN0cmlkZSB0aGUgbG93ZXIgYm91bmRhcnkg bXVzdCBiZSBzbWFsbGVyIHRoYW4gdGhlCi0rCSAgICAgICB1cHBlciBib3VuZGFyeS4gICovCi0r CSAgICBpZiAoKHJhbmdlLT5zdHJpZGUgPCAwICYmIHJhbmdlLT5sb3cgPCByYW5nZS0+aGlnaCkK LSsJCXx8IChyYW5nZS0+c3RyaWRlID4gMCAmJiByYW5nZS0+bG93ID4gcmFuZ2UtPmhpZ2gpKQot KwkgICAgICBlcnJvciAoXygiV3JvbmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91 bmRhcmllcyIpKTsKLSsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgU1VCU0NSSVBUX0lO REVYOgotKwkgIGJyZWFrOwotKwotKwl9Ci0rCi0rICAgICAgIGFycmF5X3R5cGUgPSBUWVBFX1RB UkdFVF9UWVBFIChhcnJheV90eXBlKTsKLSsgICAgfQotKwotKyAgLyogUmVzZXQgQVJSQVlfVFlQ RSBiZWZvcmUgc2xpY2luZy4qLwotKyAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKG5ld19hcnJheSkpOwotKwotKyAgLyogVHJhdmVyc2UgdGhlIGFycmF5IGZyb20gcmln aHQgdG8gbGVmdCBhbmQgZXZhbHVhdGUgZWFjaCBjb3JyZXNwb25kaW5nCi0rICAgICB1c2VyIGlu cHV0LiAgVkFMVUVfU1VCU0NSSVBUIGlzIGNhbGxlZCBmb3IgZXZlcnkgaW5kZXgsIHVudGlsIGEg cmFuZ2UKLSsgICAgIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLiAgQWZ0ZXIgYSByYW5nZSBleHBy ZXNzaW9uIGhhcyBiZWVuIGV2YWx1YXRlZCwKLSsgICAgIGV2ZXJ5IHN1YnNlcXVlbnQgZXhwcmVz c2lvbiBpcyBhbHNvIHRyZWF0ZWQgYXMgYSByYW5nZS4gICovCi0rICBmb3IgKGkgPSBuYXJncyAt IDE7IGkgPj0gMDsgaS0tKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAq aW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOwotKyAgICAgIHN0cnVjdCB0eXBlICppbmRleF90 eXBlID0gYXJyYXlfdHlwZS0+aW5kZXhfdHlwZSAoKTsKLSsKLSsgICAgICBzd2l0Y2ggKGluZGV4 LT5raW5kKQotKwl7Ci0rCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgotKwkgIHsKLSsKLSsJICAgIC8q IFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHdlIG11 c3QKLSsJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMgYSByYW5nZS4g IFdlIHNpbXBseQotKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0ZWxscyB1cyBo b3cgbWFueSB0aW1lcyB3ZSBhcmUKLSsJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJQ0VfMS4gICov Ci0rCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJhbmdlOwotKwotKwkg ICAgLyogRElNX0NPVU5UIGNvdW50cyBldmVyeSB1c2VyIGFyZ3VtZW50IHRoYXQgaXMgdHJlYXRl ZCBhcyBhIHJhbmdlLgotKwkgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGV4cHJlc3Npb25z IGxpa2UgJ3ByaW50IGFycmF5KDcsIDg6OSkuCi0rCSAgICAgICBIZXJlIHRoZSBmaXJzdCBhcmd1 bWVudCBpcyBhIGxpdGVyYWwsIGJ1dCBtdXN0IGJlIHRyZWF0ZWQgYXMgYQotKwkgICAgICAgcmFu Z2UgYXJndW1lbnQgdG8gYWxsb3cgdGhlIGNvcnJlY3Qgb3V0cHV0IHJlcHJlc2VudGF0aW9uLiAg Ki8KLSsJICAgIGRpbV9jb3VudCsrOwotKwotKwkgICAgbmV3X2FycmF5Ci0rCSAgICAgID0gdmFs dWVfc2xpY2VfMSAobmV3X2FycmF5LCByYW5nZS0+bG93LAotKwkJCSAgICAgICByYW5nZS0+aGln aCAtIHJhbmdlLT5sb3cgKyAxLAotKwkJCSAgICAgICByYW5nZS0+c3RyaWRlLCBkaW1fY291bnQp OwotKwkgIH0KLSsJICBicmVhazsKLSsKLSsJY2FzZSBTVUJTQ1JJUFRfSU5ERVg6Ci0rCSAgewot KwkgICAgLyogRElNX0NPVU5UIG9ubHkgc3RheXMgJzAnIHdoZW4gbm8gcmFuZ2UgYXJndW1lbnQg d2FzIHByb2Nlc3NlZAotKwkgICAgICAgYmVmb3JlLCBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGRp bWVuc2lvbi4gIFRoaXMgd2F5IHdlIGNhbgotKwkgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2Yg ZGltZW5zaW9ucyBmcm9tIHRoZSByZXN1bHQgYXJyYXkuCi0rCSAgICAgICBIb3dldmVyLCBpZiBh IHJhbmdlIGhhcyBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgYW4gaW5kZXgsIHdlCi0rCSAgICAgICB0 cmVhdCB0aGUgaW5kZXggbGlrZSBhIHJhbmdlIHdpdGggZXF1YWwgbG93LSBhbmQgaGlnaCBib3Vu ZHMKLSsJICAgICAgIHRvIGdldCB0aGUgdmFsdWUgb2Zmc2V0IHJpZ2h0LiAgKi8KLSsJICAgIGlm IChkaW1fY291bnQgPT0gMCkKLSsJICAgICAgbmV3X2FycmF5Ci0rCSAgICAgICAgPSB2YWx1ZV9z dWJzY3JpcHRlZF9ydmFsdWUgKG5ld19hcnJheSwgaW5kZXgtPlUubnVtYmVyLAotKwkJCQkJICAg IGY3N19nZXRfbG93ZXJib3VuZCAodmFsdWVfdHlwZQotKwkJCQkJCQkJICAobmV3X2FycmF5KSkp OwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlkaW1fY291bnQrKzsKLSsKLSsJCS8qIFdlIG1p Z2h0IGVuZCB1cCBoZXJlLCBiZWNhdXNlIHdlIGhhdmUgdG8gdHJlYXQgdGhlIHByb3ZpZGVkCi0r CQkgICBpbmRleCBsaWtlIGEgcmFuZ2UuIEJ1dCBub3cgVkFMVUVfU1VCU0NSSVBURURfUlZBTFVF Ci0rCQkgICBjYW5ub3QgZG8gdGhlIHJhbmdlIGNoZWNrcyBmb3IgdXMuIFNvIHdlIGhhdmUgdG8g bWFrZSBzdXJlCi0rCQkgICBvdXJzZWx2ZXMgdGhhdCB0aGUgdXNlciBwcm92aWRlZCBpbmRleCBp cyBpbnNpZGUgdGhlCi0rCQkgICBhcnJheSBib3VuZHMuICBUaHJvdyBhbiBlcnJvciBpZiBub3Qu ICAqLwotKwkJaWYgKGluZGV4LT5VLm51bWJlciA8IGluZGV4X3R5cGUtPmJvdW5kcyAoKS0+bG93 LmNvbnN0X3ZhbCAoKQotKwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IGluZGV4X3R5cGUtPmJv dW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCkpCi0rCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3Vu ZChzKSBvdXRzaWRlIGFycmF5IGJvdW5kKHMpIikpOwotKwotKwkJaWYgKGluZGV4LT5VLm51bWJl ciA+IGluZGV4X3R5cGUtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKQotKwkJICAgICYmIGlu ZGV4LT5VLm51bWJlciA+IGluZGV4X3R5cGUtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCkp Ci0rCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5kKHMp IikpOwotKwotKwkJbmV3X2FycmF5ID0gdmFsdWVfc2xpY2VfMSAobmV3X2FycmF5LAotKwkJCQkJ ICAgaW5kZXgtPlUubnVtYmVyLAotKwkJCQkJICAgMSwgLyogQ09VTlQgaXMgJzEnIGVsZW1lbnQg ICovCi0rCQkJCQkgICAxLCAvKiBTVFJJREUgc2V0IHRvICcxJyAgKi8KLSsJCQkJCSAgIGRpbV9j b3VudCk7Ci0rCSAgICAgIH0KLSsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsgICAgICBhcnJh eV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7Ci0rICAgIH0KLSsKLSsgIC8q IFdpdGggRElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2ZSBhIG9uZSBkaW1lbnNpb25hbCBh cnJheSwgYnV0IGV4cGVjdAotKyAgICAgYW4gYXJyYXkgb2YgYXJyYXlzLCBkZXBlbmRpbmcgb24g aG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBieQotKyAgICAgdGhlIHVzZXIuICBT byB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGFycmF5IGRpbWVuc2lvbnMgZm9yIHByaW50aW5nIGl0 Ci0rICAgICBjb3JyZWN0bHkuCi0rICAgICBTdGFydGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQgaW4g dGhlIHVzZXIgaW5wdXQsIGFmdGVyIHdlIGhpdCB0aGUgZmlyc3QKLSsgICAgIHJhbmdlIGFyZ3Vt ZW50IGV2ZXJ5IHN1YnNlcXVlbnQgYXJndW1lbnQgaXMgYWxzbyB0cmVhdGVkIGFzIGEgcmFuZ2Uu Ci0rICAgICBFLmcuOgotKyAgICAgInAgYXJ5KDMsIDcsIDI6MTUpIiBpbiBGb3J0cmFuIGhhcyBv bmx5IDEgZGltZW5zaW9uLCBidXQgd2UgY2FsY3VsYXRlZCAzCi0rICAgICByYW5nZXMuCi0rICAg ICAicCBhcnkoMywgNzoxMiwgNCkiIGluIEZvcnRyYW4gaGFzIG9ubHkgMSBkaW1lbnNpb24sIGJ1 dCB3ZSBjYWxjdWxhdGVkIDIKLSsgICAgIHJhbmdlcy4KLSsgICAgICJwIGFyeSgyOjQsIDUsIDcp IiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBhbmQgd2UgY2FsY3VsYXRlZCAxCi0r ICAgICByYW5nZS4gICovCi0rICBpZiAoZGltX2NvdW50ID4gMSkKLSsgICAgewotKyAgICAgIHN0 cnVjdCB2YWx1ZSAqdiA9IE5VTEw7Ci0rCi0rICAgICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9U WVBFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKLSAKLS0gIHJldHVybiB2YWx1ZV9zbGljZSAo YXJyYXksIGxvd19ib3VuZCwgaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwotKyAgICAgIC8q IEV2ZXJ5IFNVQlNDUklQVF9SQU5HRSBpbiB0aGUgdXNlciBpbnB1dCBzaWduaWZpZXMgYW4gYWN0 dWFsIHJhbmdlIGluCi0rCSB0aGUgb3V0cHV0IGFycmF5LiAgU28gd2UgdHJhdmVyc2UgdGhlIFNV QlNDUklQVF9BUlJBWSBhZ2FpbiwgbG9va2luZwotKwkgZm9yIGEgcmFuZ2UgZW50cnkuICBXaGVu IHdlIGZpbmQgb25lLCB3ZSB1c2UgdGhlIHJhbmdlIGluZm8gdG8gY3JlYXRlCi0rCSBhbiBhZGRp dGlvbmFsIHJhbmdlX3R5cGUgdG8gc2V0IHRoZSBjb3JyZWN0IGJvdW5kcyBhbmQgZGltZW5zaW9u cyBmb3IKLSsJIHRoZSBvdXRwdXQgYXJyYXkuICBJbiBhZGRpdGlvbiwgd2UgbWF5IGhhdmUgYSBz dHJpZGUgdmFsdWUgdGhhdCBpcyBub3QKLSsJICcxJywgZm9yY2luZyB1cyB0byBhZGp1c3QgdGhl IG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHJhbmdlLCBhY2NvcmRpbmcKLSsJIHRvIHRoZSBzdHJp ZGUgdmFsdWUuICAqLwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQotKwl7Ci0r CSAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOwot KwotKwkgIGlmIChpbmRleC0+a2luZCA9PSBTVUJTQ1JJUFRfUkFOR0UpCi0rCSAgICB7Ci0rCSAg ICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLCAqaW50ZXJpbV9hcnJheV90eXBlOwotKwotKwkg ICAgICBpbnQgbmV3X2xlbmd0aDsKLSsKLSsJICAgICAgLyogVGhlIGxlbmd0aCBvZiBhIHN1Yi1k aW1lbnNpb24gd2l0aCBhbGwgZWxlbWVudHMgYmV0d2VlbiB0aGUKLSsJCSBib3VuZHMgcGx1cyB0 aGUgc3RhcnQgZWxlbWVudCBpdHNlbGYuICBJdCBtYXkgYmUgbW9kaWZpZWQgYnkKLSsJCSBhIHVz ZXIgcHJvdmlkZWQgc3RyaWRlIHZhbHVlLiAgKi8KLSsJICAgICAgbmV3X2xlbmd0aCA9IGluZGV4 LT5VLnJhbmdlLmhpZ2ggLSBpbmRleC0+VS5yYW5nZS5sb3c7Ci0rCi0rCSAgICAgIG5ld19sZW5n dGggLz0gaW5kZXgtPlUucmFuZ2Uuc3RyaWRlOwotKwotKwkgICAgICByYW5nZV90eXBlCi0rCQk9 IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwKLSsJCQkJCSAgICBlbHRfdHlwZSwKLSsJ CQkJCSAgICBpbmRleC0+VS5yYW5nZS5sb3csCi0rCQkJCQkgICAgaW5kZXgtPlUucmFuZ2UubG93 ICsgbmV3X2xlbmd0aCk7Ci0rCi0rCSAgICAgIGludGVyaW1fYXJyYXlfdHlwZSA9IGNyZWF0ZV9h cnJheV90eXBlIChOVUxMLAotKwkJCQkJCSAgICAgIGVsdF90eXBlLAotKwkJCQkJCSAgICAgIHJh bmdlX3R5cGUpOwotKwotKwkgICAgICBpbnRlcmltX2FycmF5X3R5cGUtPnNldF9jb2RlICggdmFs dWVfdHlwZSAobmV3X2FycmF5KS0+Y29kZSAoKSk7Ci0rCi0rCSAgICAgIHYgPSBhbGxvY2F0ZV92 YWx1ZSAoaW50ZXJpbV9hcnJheV90eXBlKTsKLSsKLSsJICAgICAgZWx0X3R5cGUgPSB2YWx1ZV90 eXBlICh2KTsKLSsJICAgIH0KLSsKLSsJfQotKyAgICAgIHZhbHVlX2NvbnRlbnRzX2NvcHkgKHYs IDAsIG5ld19hcnJheSwgMCwgVFlQRV9MRU5HVEggKGVsdF90eXBlKSk7Ci0rICAgICAgcmV0dXJu IHY7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBuZXdfYXJyYXk7Ci0gfQotIAotIAotQEAgLTEyMzMs MTkgKzE1MjcsNiBAQCBldmFsdWF0ZV9mdW5jYWxsICh0eXBlICpleHBlY3RfdHlwZSwgZXhwcmVz c2lvbiAqZXhwLCBpbnQgKnBvcywKLSAgIHJldHVybiBldmFsX2NhbGwgKGV4cCwgbm9zaWRlLCBu YXJncywgYXJndmVjLCB2YXJfZnVuY19uYW1lLCBleHBlY3RfdHlwZSk7Ci0gfQotIAotLS8qIEhl bHBlciBmb3Igc2tpcHBpbmcgYWxsIHRoZSBhcmd1bWVudHMgaW4gYW4gdW5kZXRlcm1pbmVkIGFy Z3VtZW50IGxpc3QuCi0tICAgVGhpcyBmdW5jdGlvbiB3YXMgZGVzaWduZWQgZm9yIHVzZSBpbiB0 aGUgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUCi0tICAgY2FzZSBvZiBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgYXMgbXVsdGlwbGUsIGJ1dCBub3QgYWxsLCBjb2RlIHBhdGhzCi0tICAgcmVx dWlyZSBhIGdlbmVyaWMgc2tpcC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1za2lwX3VuZGV0ZXJt aW5lZF9hcmdsaXN0IChpbnQgbmFyZ3MsIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9z LAotLQkJCSAgIGVudW0gbm9zaWRlIG5vc2lkZSkKLS17Ci0tICBmb3IgKGludCBpID0gMDsgaSA8 IG5hcmdzOyArK2kpCi0tICAgIGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5v c2lkZSk7Ci0tfQotLQotIC8qIFJldHVybiB0cnVlIGlmIHR5cGUgaXMgaW50ZWdyYWwgb3IgcmVm ZXJlbmNlIHRvIGludGVncmFsICovCi0gCi0gc3RhdGljIGJvb2wKLUBAIC0xOTUzLDMzICsyMjM0 LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs Ci0gICAgICAgc3dpdGNoIChjb2RlKQotIAl7Ci0gCWNhc2UgVFlQRV9DT0RFX0FSUkFZOgotLQkg IGlmIChleHAtPmVsdHNbKnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQotLQkgICAgcmV0dXJuIHZh bHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCSAgZWxzZQotLQkg ICAgewotLQkgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLS0JCXsKLS0JCSAgc2tpcF91 bmRldGVybWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOwotLQkJICAvKiBS ZXR1cm4gdGhlIGR1bW15IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4gICovCi0tCQkgIHJl dHVybiBhcmcxOwotLQkJfQotLQkgICAgICBnb3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7Ci0tCSAg ICB9Ci0tCi0gCWNhc2UgVFlQRV9DT0RFX1NUUklORzoKLS0JICBpZiAoZXhwLT5lbHRzWypwb3Nd Lm9wY29kZSA9PSBPUF9SQU5HRSkKLS0JICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFy ZzEsIGV4cCwgcG9zLCBub3NpZGUpOwotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAgaWYgKG5v c2lkZSA9PSBFVkFMX1NLSVApCi0tCQl7Ci0tCQkgIHNraXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3Qg KG5hcmdzLCBleHAsIHBvcywgbm9zaWRlKTsKLS0JCSAgLyogUmV0dXJuIHRoZSBkdW1teSB2YWx1 ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLwotLQkJICByZXR1cm4gYXJnMTsKLS0JCX0KLS0J ICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9z aWRlKTsKLS0JICAgICAgcmV0dXJuIHZhbHVlX3N1YnNjcmlwdCAoYXJnMSwgdmFsdWVfYXNfbG9u ZyAoYXJnMikpOwotLQkgICAgfQotKwkgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFyZzEs IGV4cCwgcG9zLCBuYXJncywgbm9zaWRlKTsKLSAKLSAJY2FzZSBUWVBFX0NPREVfUFRSOgotIAlj YXNlIFRZUEVfQ09ERV9GVU5DOgotQEAgLTI0MDAsNDkgKzI2NTYsNiBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJfQotICAgICAgIHJldHVy biAoYXJnMSk7Ci0gCi0tICAgIG11bHRpX2Y3N19zdWJzY3JpcHQ6Ci0tICAgICAgewotLQlMT05H RVNUIHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLS0JaW50IG5kaW1lbnNpb25z ID0gMSwgaTsKLS0Jc3RydWN0IHZhbHVlICphcnJheSA9IGFyZzE7Ci0tCi0tCWlmIChuYXJncyA+ IE1BWF9GT1JUUkFOX0RJTVMpCi0tCSAgZXJyb3IgKF8oIlRvbyBtYW55IHN1YnNjcmlwdHMgZm9y IEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsKLS0KLS0JbmRpbWVuc2lvbnMgPSBj YWxjX2Y3N19hcnJheV9kaW1zICh0eXBlKTsKLS0KLS0JaWYgKG5hcmdzICE9IG5kaW1lbnNpb25z KQotLQkgIGVycm9yIChfKCJXcm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIpKTsKLS0KLS0JZ2Ri X2Fzc2VydCAobmFyZ3MgPiAwKTsKLS0KLS0JLyogTm93IHRoYXQgd2Uga25vdyB3ZSBoYXZlIGEg bGVnYWwgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Npb24gCi0tCSAgIGxldCB1cyBhY3R1YWxseSBm aW5kIG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhpc3RzIGluIHRoZSBhcnJheS4gICovCi0tCi0t CS8qIFRha2UgYXJyYXkgaW5kaWNlcyBsZWZ0IHRvIHJpZ2h0LiAgKi8KLS0JZm9yIChpID0gMDsg aSA8IG5hcmdzOyBpKyspCi0tCSAgewotLQkgICAgLyogRXZhbHVhdGUgZWFjaCBzdWJzY3JpcHQ7 IGl0IG11c3QgYmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gICovCi0tCSAgICBhcmcyID0gZXZh bHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOwotLQotLQkgICAg LyogRmlsbCBpbiB0aGUgc3Vic2NyaXB0IGFycmF5LiAgKi8KLS0KLS0JICAgIHN1YnNjcmlwdF9h cnJheVtpXSA9IHZhbHVlX2FzX2xvbmcgKGFyZzIpOwotLQkgIH0KLS0KLS0JLyogSW50ZXJuYWwg dHlwZSBvZiBhcnJheSBpcyBhcnJhbmdlZCByaWdodCB0byBsZWZ0LiAgKi8KLS0JZm9yIChpID0g bmFyZ3M7IGkgPiAwOyBpLS0pCi0tCSAgewotLQkgICAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGUg PSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOwotLQkgICAgTE9OR0VTVCBpbmRl eCA9IHN1YnNjcmlwdF9hcnJheVtpIC0gMV07Ci0tCi0tCSAgICBhcnJheSA9IHZhbHVlX3N1YnNj cmlwdGVkX3J2YWx1ZSAoYXJyYXksIGluZGV4LAotLQkJCQkJICAgICAgZjc3X2dldF9sb3dlcmJv dW5kIChhcnJheV90eXBlKSk7Ci0tCSAgfQotLQotLQlyZXR1cm4gYXJyYXk7Ci0tICAgICAgfQot LQotICAgICBjYXNlIEJJTk9QX0xPR0lDQUxfQU5EOgotICAgICAgIGFyZzEgPSBldmFsdWF0ZV9z dWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpOwotICAgICAgIGlmIChub3NpZGUgPT0g RVZBTF9TS0lQKQotQEAgLTMzNjAsNiArMzU3Myw5IEBAIGNhbGNfZjc3X2FycmF5X2RpbXMgKHN0 cnVjdCB0eXBlICphcnJheV90eXBlKQotICAgaW50IG5kaW1lbiA9IDE7Ci0gICBzdHJ1Y3QgdHlw ZSAqdG1wX3R5cGU7Ci0gCi0rICBpZiAoYXJyYXlfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVf U1RSSU5HKQotKyAgICByZXR1cm4gMTsKLSsKLSAgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSAh PSBUWVBFX0NPREVfQVJSQVkpKQotICAgICBlcnJvciAoXygiQ2FuJ3QgZ2V0IGRpbWVuc2lvbnMg Zm9yIGEgbm9uLWFycmF5IHR5cGUiKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2V4cHByaW50LmMg Yi9nZGIvZXhwcHJpbnQuYwotLS0tIGEvZ2RiL2V4cHByaW50LmMKLSsrKyBiL2dkYi9leHBwcmlu dC5jCi1AQCAtNTc2LDE3ICs1NzYsMTQgQEAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSAJICBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRz W3BjICsgMV0ubG9uZ2NvbnN0KTsKLSAJKnBvcyArPSAyOwotIAotLQlpZiAocmFuZ2VfdHlwZSA9 PSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFCi0tCSAgICB8fCByYW5nZV90eXBlID09IExP V19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlf SElHSF9CT1VORF9FWENMVVNJVkUpCi0rCSAgICA9PSBTVUJBUlJBWV9ISUdIX0JPVU5EX0VYQ0xV U0lWRSkKLSAJICBmcHV0c19maWx0ZXJlZCAoIkVYQ0xVU0lWRV8iLCBzdHJlYW0pOwotIAlmcHV0 c19maWx0ZXJlZCAoIlJBTkdFKCIsIHN0cmVhbSk7Ci0tCWlmIChyYW5nZV90eXBlID09IEhJR0hf Qk9VTkRfREVGQVVMVAotLQkgICAgfHwgcmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFQK LS0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKLSsJ aWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKSA9PSBTVUJBUlJBWV9MT1dfQk9V TkQpCi0gCSAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVDX0FCT1ZFX0NPTU1B KTsKLSAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7Ci0tCWlmIChyYW5nZV90eXBlID09 IExPV19CT1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVG QVVMVCkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJS QVlfSElHSF9CT1VORCkKLSAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNf QUJPVkVfQ09NTUEpOwotIAlmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOwotIAlyZXR1cm47 Ci1AQCAtMTEwMywyMiArMTEwMCwyNCBAQCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAotIAlzd2l0Y2ggKHJhbmdlX3R5cGUpCi0gCSAgewotLQkg IGNhc2UgQk9USF9CT1VORF9ERUZBVUxUOgotKwkgIGNhc2UgU1VCQVJSQVlfTk9ORV9CT1VORDoK LSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uJyIsIHN0cmVhbSk7Ci0gCSAgICBicmVh azsKLS0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUOgotKwkgIGNhc2UgU1VCQVJSQVlfSElHSF9C T1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uRVhQJyIsIHN0cmVhbSk7Ci0g CSAgICBicmVhazsKLS0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRToKLS0JICAg IGZwdXRzX2ZpbHRlcmVkICgiRXhjbHVzaXZlUmFuZ2UgJy4uRVhQJyIsIHN0cmVhbSk7Ci0tCSAg ICBicmVhazsKLS0JICBjYXNlIEhJR0hfQk9VTkRfREVGQVVMVDoKLSsJICBjYXNlIFNVQkFSUkFZ X0xPV19CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJ0VYUC4uJyIsIHN0cmVh bSk7Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIE5PTkVfQk9VTkRfREVGQVVMVDoKLSsJICBjYXNl IChTVUJBUlJBWV9MT1dfQk9VTkQKLSsJCXwgU1VCQVJSQVlfSElHSF9CT1VORAotKwkJfCBTVUJB UlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSk6Ci0rCSAgICBmcHV0c19maWx0ZXJlZCAoIkV4Y2x1 c2l2ZVJhbmdlICcuLkVYUCciLCBzdHJlYW0pOwotKwkgICAgYnJlYWs7Ci0rCSAgY2FzZSAoU1VC QVJSQVlfTE9XX0JPVU5EIHwgU1VCQVJSQVlfSElHSF9CT1VORCk6Ci0gCSAgICBmcHV0c19maWx0 ZXJlZCAoIlJhbmdlICdFWFAuLkVYUCciLCBzdHJlYW0pOwotIAkgICAgYnJlYWs7Ci0tCSAgY2Fz ZSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFOgotKwkgIGNhc2UgKFNVQkFSUkFZX0hJR0hf Qk9VTkQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSk6Ci0gCSAgICBmcHV0c19maWx0 ZXJlZCAoIkV4Y2x1c2l2ZVJhbmdlICdFWFAuLkVYUCciLCBzdHJlYW0pOwotIAkgICAgYnJlYWs7 Ci0gCSAgZGVmYXVsdDoKLUBAIC0xMTI2LDExICsxMTI1LDkgQEAgZHVtcF9zdWJleHBfYm9keV9z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAJICAgIGJyZWFrOwotIAkgIH0KLSAK LS0JaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5nZV90 eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlf TE9XX0JPVU5EKSA9PSBTVUJBUlJBWV9MT1dfQk9VTkQpCi0gCSAgZWx0ID0gZHVtcF9zdWJleHAg KGV4cCwgc3RyZWFtLCBlbHQpOwotLQlpZiAocmFuZ2VfdHlwZSA9PSBMT1dfQk9VTkRfREVGQVVM VAotLQkgICAgfHwgcmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFQpCi0rCWlmICgocmFu Z2VfdHlwZSAmIFNVQkFSUkFZX0hJR0hfQk9VTkQpID09IFNVQkFSUkFZX0hJR0hfQk9VTkQpCi0g CSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOwotICAgICAgIH0KLSAgICAg ICBicmVhazsKLWRpZmYgLS1naXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24u aAotLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAotKysrIGIvZ2RiL2V4cHJlc3Npb24uaAotQEAgLTE2 NywyOCArMTY3LDI3IEBAIGV4dGVybiB2b2lkIGR1bXBfcmF3X2V4cHJlc3Npb24gKHN0cnVjdCBl eHByZXNzaW9uICosCi0gCQkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBjb25zdCBjaGFyICopOwotIGV4 dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0 cnVjdCB1aV9maWxlICopOwotIAotLS8qIEluIGFuIE9QX1JBTkdFIGV4cHJlc3Npb24sIGVpdGhl ciBib3VuZCBjb3VsZCBiZSBlbXB0eSwgaW5kaWNhdGluZwotLSAgIHRoYXQgaXRzIHZhbHVlIGlz IGJ5IGRlZmF1bHQgdGhhdCBvZiB0aGUgY29ycmVzcG9uZGluZyBib3VuZCBvZiB0aGUKLS0gICBh cnJheSBvciBzdHJpbmcuICBBbHNvLCB0aGUgdXBwZXIgZW5kIG9mIHRoZSByYW5nZSBjYW4gYmUg ZXhjbHVzaXZlCi0tICAgb3IgaW5jbHVzaXZlLiAgU28gd2UgaGF2ZSBzaXggc29ydHMgb2Ygc3Vi cmFuZ2UuICBUaGlzIGVudW1lcmF0aW9uCi0tICAgdHlwZSBpcyB0byBpZGVudGlmeSB0aGlzLiAg Ki8KLSsvKiBJbiBhbiBPUF9SQU5HRSBleHByZXNzaW9uLCBlaXRoZXIgYm91bmQgY2FuIGJlIHBy b3ZpZGVkIGJ5IHRoZQotKyAgIHVzZXIsIG9yIG5vdC4gIEluIGFkZGl0aW9uIHRvIHRoaXMsIHRo ZSB1c2VyIGNhbiBhbHNvIHNwZWNpZnkgYQotKyAgIHN0cmlkZSB2YWx1ZSB0byBpbmRpY2F0ZWQg b25seSBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSBhcnJheS4KLSsgICBBbHNvLCB0aGUgdXBwZXIg ZW5kIG9mIHRoZSByYW5nZSBjYW4gYmUgZXhjbHVzaXZlIG9yIGluY2x1c2l2ZS4KLSsgICBUaGlz IGVudW1lcmF0aW9uIHR5cGUgaXMgdG8gaWRlbnRpZnkgdGhpcy4gICovCi0gCi0gZW51bSByYW5n ZV90eXBlCi0tewotLSAgLyogTmVpdGhlciB0aGUgbG93IG5vciB0aGUgaGlnaCBib3VuZCB3YXMg Z2l2ZW4gLS0gc28gdGhpcyByZWZlcnMgdG8KLS0gICAgIHRoZSBlbnRpcmUgYXZhaWxhYmxlIHJh bmdlLiAgKi8KLS0gIEJPVEhfQk9VTkRfREVGQVVMVCwKLS0gIC8qIFRoZSBsb3cgYm91bmQgd2Fz IG5vdCBnaXZlbiBhbmQgdGhlIGhpZ2ggYm91bmQgaXMgaW5jbHVzaXZlLiAgKi8KLS0gIExPV19C T1VORF9ERUZBVUxULAotLSAgLyogVGhlIGhpZ2ggYm91bmQgd2FzIG5vdCBnaXZlbiBhbmQgdGhl IGxvdyBib3VuZCBpbiBpbmNsdXNpdmUuICAqLwotLSAgSElHSF9CT1VORF9ERUZBVUxULAotLSAg LyogQm90aCBib3VuZHMgd2VyZSBnaXZlbiBhbmQgYm90aCBhcmUgaW5jbHVzaXZlLiAgKi8KLS0g IE5PTkVfQk9VTkRfREVGQVVMVCwKLS0gIC8qIFRoZSBsb3cgYm91bmQgd2FzIG5vdCBnaXZlbiBh bmQgdGhlIGhpZ2ggYm91bmQgaXMgZXhjbHVzaXZlLiAgKi8KLS0gIE5PTkVfQk9VTkRfREVGQVVM VF9FWENMVVNJVkUsCi0tICAvKiBCb3RoIGJvdW5kcyB3ZXJlIGdpdmVuLiAgVGhlIGxvdyBib3Vu ZCBpcyBpbmNsdXNpdmUgYW5kIHRoZSBoaWdoCi0tICAgICBib3VuZCBpcyBleGNsdXNpdmUuICAq LwotLSAgTE9XX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFLAotLX07Ci0rICB7Ci0rICAgIFNVQkFS UkFZX05PTkVfQk9VTkQgPSAweDAsCQkvKiAiKCA6ICkiICAqLwotKyAgICBTVUJBUlJBWV9MT1df Qk9VTkQgPSAweDEsCQkvKiAiKGxvdzopIiAgKi8KLSsgICAgU1VCQVJSQVlfSElHSF9CT1VORCA9 IDB4MiwJCS8qICIoOmhpZ2gpIiAgKi8KLSsgICAgU1VCQVJSQVlfU1RSSURFID0gMHg0LAkJLyog Iig6OnN0cmlkZSkiICAqLwotKyAgICAvKiBUaGUgbG93IGJvdW5kIHdhcyBub3QgZ2l2ZW4gYW5k IHRoZSBoaWdoIGJvdW5kIGlzIGV4Y2x1c2l2ZS4KLSsgICAgICAgSW4gdGhpcyBjYXNlIHdlIGFs d2F5cyB1c2UgKFNVQkFSUkFZX0hJR0hfQk9VTkQgfAotKyAgICAgICBTVUJBUlJBWV9ISUdIX0JP VU5EX0VYQ0xVU0lWRSkuICAqLwotKyAgICBTVUJBUlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSA9 IDB4OCwKLSsgICAgLyogQm90aCBib3VuZHMgd2VyZSBnaXZlbi4gIFRoZSBsb3cgYm91bmQgaXMg aW5jbHVzaXZlIGFuZCB0aGUgaGlnaAotKyAgICAgICBib3VuZCBpcyBleGNsdXNpdmUuICBJbiB0 aGlzIGNhc2UsIHdlIHVzZSAoU1VCQVJSQVlfTE9XX0JPVU5EIHwKLSsgICAgICAgU1VCQVJSQVlf SElHSF9CT1VORCB8IFNVQkFSUkFZX0hJR0hfQk9VTkRfRVhDTFVTSVZFKS4gICovCi0rICAgIC8v IFNVQkFSUkFZX0xPV19CT1VORF9FWENMVVNJVkUgPSAoU1VCQVJSQVlfTE9XX0JPVU5ECi0rICAg IC8vIAkJCQkgICAgfCBTVUJBUlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSksCi0rICB9OwotIAot ICNlbmRpZiAvKiAhZGVmaW5lZCAoRVhQUkVTU0lPTl9IKSAqLwotZGlmZiAtLWdpdCBhL2dkYi9m LWV4cC55IGIvZ2RiL2YtZXhwLnkKLS0tLSBhL2dkYi9mLWV4cC55Ci0rKysgYi9nZGIvZi1leHAu eQotQEAgLTI4MiwzMSArMjgyLDYzIEBAIGFyZ2xpc3QgOglzdWJyYW5nZQotICAgIAotIGFyZ2xp c3QJOglhcmdsaXN0ICcsJyBleHAgICAlcHJlYyBBQk9WRV9DT01NQQotIAkJCXsgcHN0YXRlLT5h cmdsaXN0X2xlbisrOyB9Ci0rCXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UJJXByZWMgQUJPVkVfQ09N TUEKLSsJCQl7IHBzdGF0ZS0+YXJnbGlzdF9sZW4rKzsgfQotIAk7Ci0gCi0gLyogVGhlcmUgYXJl IGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UgdHlwZXMgaW4gRjkwLiAgKi8KLSAKLSBzdWJyYW5nZToJ ZXhwICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKLS0JCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChwc3RhdGUsIE9QX1JBTkdFKTsgCi0tCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0 ZSwgTk9ORV9CT1VORF9ERUZBVUxUKTsKLSsJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3Rh dGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAotKwkJ CQkJCSBTVUJBUlJBWV9MT1dfQk9VTkQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EKTsKLSAJCQkgIHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotIAk7Ci0gCi0gc3VicmFu Z2U6CWV4cCAnOicJJXByZWMgQUJPVkVfQ09NTUEKLSAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChwc3RhdGUsIE9QX1JBTkdFKTsKLS0JCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRl LCBISUdIX0JPVU5EX0RFRkFVTFQpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3Rh dGUsIFNVQkFSUkFZX0xPV19CT1VORCk7Ci0gCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0 YXRlLCBPUF9SQU5HRSk7IH0KLSAJOwotIAotIHN1YnJhbmdlOgknOicgZXhwCSVwcmVjIEFCT1ZF X0NPTU1BCi0gCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0t CQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgTE9XX0JPVU5EX0RFRkFVTFQpOwot KwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0hJR0hfQk9VTkQp OwotIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0gCTsK LSAKLSBzdWJyYW5nZToJJzonCSVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyB3cml0ZV9leHBfZWx0 X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0tCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3Qg KHBzdGF0ZSwgQk9USF9CT1VORF9ERUZBVUxUKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2Nz dCAocHN0YXRlLCBTVUJBUlJBWV9OT05FX0JPVU5EKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bj b2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotKwk7Ci0rCi0rLyogRWFjaCBzdWJyYW5nZSB0eXBl IGNhbiBoYXZlIGEgc3RyaWRlIGFyZ3VtZW50LiAgKi8KLStzdWJyYW5nZToJZXhwICc6JyBleHAg JzonIGV4cCAlcHJlYyBBQk9WRV9DT01NQQotKwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBz dGF0ZSwgT1BfUkFOR0UpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNV QkFSUkFZX0xPV19CT1VORAotKwkJCQkJCSB8IFNVQkFSUkFZX0hJR0hfQk9VTkQKLSsJCQkJCQkg fCBTVUJBUlJBWV9TVFJJREUpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwg T1BfUkFOR0UpOyB9Ci0rCTsKLSsKLStzdWJyYW5nZToJZXhwICc6JyAnOicgZXhwICVwcmVjIEFC T1ZFX0NPTU1BCi0rCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7 Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfTE9XX0JPVU5E Ci0rCQkJCQkJIHwgU1VCQVJSQVlfU1RSSURFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChwc3RhdGUsIE9QX1JBTkdFKTsgfQotKwk7Ci0rCi0rc3VicmFuZ2U6CSc6JyBleHAgJzonIGV4 cCAlcHJlYyBBQk9WRV9DT01NQQotKwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwg T1BfUkFOR0UpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZ X0hJR0hfQk9VTkQKLSsJCQkJCQkgfCBTVUJBUlJBWV9TVFJJREUpOwotKwkJCSAgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0rCTsKLSsKLStzdWJyYW5nZToJJzon ICc6JyBleHAgJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChw c3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBT VUJBUlJBWV9TVFJJREUpOwotIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1Bf UkFOR0UpOyB9Ci0gCTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvZi12YWxwcmludC5jIGIvZ2RiL2Yt dmFscHJpbnQuYwotLS0tIGEvZ2RiL2YtdmFscHJpbnQuYwotKysrIGIvZ2RiL2YtdmFscHJpbnQu YwotQEAgLTEyOSw2ICsxMjksMTEgQEAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBu ZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCi0gCWJ5dGVfc3RyaWRlID0gZGltX3NpemU7 Ci0gICAgICAgc2l6ZV90IG9mZnMgPSAwOwotIAotKyAgICAgIGlmIChieXRlX3N0cmlkZSkKLSsg ICAgICAgIGRpbV9zaXplID0gYnl0ZV9zdHJpZGU7Ci0rICAgICAgZWxzZQotKyAgICAgICAgZGlt X3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotKwotICAgICAg IGZvciAoaSA9IGxvd2VyYm91bmQ7Ci0gCSAgIChpIDwgdXBwZXJib3VuZCArIDEgJiYgKCplbHRz KSA8IG9wdGlvbnMtPnByaW50X21heCk7Ci0gCSAgIGkrKykKLWRpZmYgLS1naXQgYS9nZGIvZ2Ri dHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi0tLS0gYS9nZGIvZ2RidHlwZXMuYwotKysrIGIvZ2Ri L2dkYnR5cGVzLmMKLUBAIC0xMDA2LDcgKzEwMDYsOCBAQCBjcmVhdGVfc3RhdGljX3JhbmdlX3R5 cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCi0g ICBsb3cuc2V0X2NvbnN0X3ZhbCAobG93X2JvdW5kKTsKLSAgIGhpZ2guc2V0X2NvbnN0X3ZhbCAo aGlnaF9ib3VuZCk7Ci0gCi0tICByZXN1bHRfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyZXN1 bHRfdHlwZSwgaW5kZXhfdHlwZSwgJmxvdywgJmhpZ2gsIDApOwotKyAgcmVzdWx0X3R5cGUgPSBj cmVhdGVfcmFuZ2VfdHlwZSAocmVzdWx0X3R5cGUsIGluZGV4X3R5cGUsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmbG93LCAmaGlnaCwgMCk7Ci0gCi0gICByZXR1cm4gcmVz dWx0X3R5cGU7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVz LmgKLS0tLSBhL2dkYi9nZGJ0eXBlcy5oCi0rKysgYi9nZGIvZ2RidHlwZXMuaAotQEAgLTE2MTUs NiArMTYxNSwxNSBAQCBleHRlcm4gdW5zaWduZWQgdHlwZV9hbGlnbiAoc3RydWN0IHR5cGUgKik7 Ci0gICAgc3BhY2UgaW4gc3RydWN0IHR5cGUuICAqLwotIGV4dGVybiBib29sIHNldF90eXBlX2Fs aWduIChzdHJ1Y3QgdHlwZSAqLCBVTE9OR0VTVCk7Ci0gCi0rI2RlZmluZSBUWVBFX0JZVEVfU1RS SURFKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRl LmRhdGEuY29uc3RfdmFsCi0rI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFX0JMT0NLKHJhbmdlX3R5 cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jZXhw cgotKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9MT0NMSVNUKHJhbmdlX3R5cGUpIFwKLSsgIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jbGlzdAotKyNkZWZpbmUg VFlQRV9CWVRFX1NUUklERV9LSU5EKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShy YW5nZV90eXBlKS0+c3RyaWRlLmtpbmQKLSsKLSAvKiBQcm9wZXJ0eSBhY2Nlc3NvcnMgZm9yIHRo ZSB0eXBlIGRhdGEgbG9jYXRpb24uICAqLwotICNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OKHRo aXN0eXBlKSBcCi0gICAoKHRoaXN0eXBlKS0+ZHluX3Byb3AgKERZTl9QUk9QX0RBVEFfTE9DQVRJ T04pKQotQEAgLTE2MzMsNiArMTY0MiwyNiBAQCBleHRlcm4gYm9vbCBzZXRfdHlwZV9hbGlnbiAo c3RydWN0IHR5cGUgKiwgVUxPTkdFU1QpOwotICNkZWZpbmUgVFlQRV9BU1NPQ0lBVEVEX1BST1Ao dGhpc3R5cGUpIFwKLSAgICgodGhpc3R5cGUpLT5keW5fcHJvcCAoRFlOX1BST1BfQVNTT0NJQVRF RCkpCi0gCi0rLyogQWNjZXNzb3JzIGZvciBzdHJ1Y3QgcmFuZ2VfYm91bmRzIGRhdGEgYXR0YWNo ZWQgdG8gYW4gYXJyYXkgdHlwZSdzCi0rICAgaW5kZXggdHlwZS4gICovCi0rCi0rI2RlZmluZSBU WVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRChhcnJheXR5cGUpIFwKLSsgICAoKGFy cmF5dHlwZSktPmluZGV4X3R5cGUgKCktPmJvdW5kcyAoKS0+aGlnaC5raW5kICgpID09IFBST1Bf VU5ERUZJTkVEKQotKyNkZWZpbmUgVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQo YXJyYXl0eXBlKSBcCi0rICAgKGFycmF5dHlwZS0+aW5kZXhfdHlwZSAoKS0+Ym91bmRzICgpLmxv dy5raW5kICgpID09IFBST1BfVU5ERUZJTkVEKQotKyNkZWZpbmUgVFlQRV9BUlJBWV9TVFJJREVf SVNfVU5ERUZJTkVEKGFycmF5dHlwZSkgXAotKyAgIChUWVBFX0JZVEVfU1RSSURFKGFycmF5dHlw ZS0+aW5kZXhfdHlwZSAoKSkgPT0gMCkKLSsKLSsKLSsjZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJf Qk9VTkRfVkFMVUUoYXJyYXl0eXBlKSBcCi0rICAgKFRZUEVfSElHSF9CT1VORCgoYXJyYXl0eXBl KS0+aW5kZXhfdHlwZSAoKSkpCi0rCi0rI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZB TFVFKGFycmF5dHlwZSkgXAotKyAgIChUWVBFX0xPV19CT1VORCgoYXJyYXl0eXBlKS0+aW5kZXhf dHlwZSAoKSkpCi0rCi0rI2RlZmluZSBUWVBFX0FSUkFZX0JJVF9TVFJJREUoYXJyYXl0eXBlKSBc Ci0rICAoVFlQRV9CSVRfU1RSSURFKChhcnJheXR5cGUpLT5pbmRleF90eXBlICgpKSkKLSsKLSAv KiBDKysgKi8KLSAKLSAjZGVmaW5lIFRZUEVfU0VMRl9UWVBFKHRoaXN0eXBlKSBpbnRlcm5hbF90 eXBlX3NlbGZfdHlwZSAodGhpc3R5cGUpCi1kaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIv cGFyc2UuYwotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBiL2dkYi9wYXJzZS5jCi1AQCAtOTE5LDI0 ICs5MTksMjAgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwciwgaW50IGVuZHBvcywKLSAKLSAgICAgY2FzZSBPUF9SQU5HRToKLSAgICAgICBv cGxlbiA9IDM7Ci0rICAgICAgYXJncyA9IDA7Ci0gICAgICAgcmFuZ2VfdHlwZSA9IChlbnVtIHJh bmdlX3R5cGUpCi0gCWxvbmdlc3RfdG9faW50IChleHByLT5lbHRzW2VuZHBvcyAtIDJdLmxvbmdj b25zdCk7Ci0gCi0tICAgICAgc3dpdGNoIChyYW5nZV90eXBlKQotLQl7Ci0tCWNhc2UgTE9XX0JP VU5EX0RFRkFVTFQ6Ci0tCWNhc2UgTE9XX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFOgotLQljYXNl IEhJR0hfQk9VTkRfREVGQVVMVDoKLS0JICBhcmdzID0gMTsKLS0JICBicmVhazsKLS0JY2FzZSBC T1RIX0JPVU5EX0RFRkFVTFQ6Ci0tCSAgYXJncyA9IDA7Ci0tCSAgYnJlYWs7Ci0tCWNhc2UgTk9O RV9CT1VORF9ERUZBVUxUOgotLQljYXNlIE5PTkVfQk9VTkRfREVGQVVMVF9FWENMVVNJVkU6Ci0t CSAgYXJncyA9IDI7Ci0tCSAgYnJlYWs7Ci0tCX0KLSsgICAgICAvKiBJbmNyZW1lbnQgdGhlIGFy Z3VtZW50IGNvdW50ZXIgZm9yIGVhY2ggYXJndW1lbnQKLSsJIHByb3ZpZGVkIGJ5IHRoZSB1c2Vy LiAgKi8KLSsgICAgICBpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNV QkFSUkFZX0xPV19CT1VORCkKLSsJYXJncysrOwotKwotKyAgICAgIGlmICgocmFuZ2VfdHlwZSAm IFNVQkFSUkFZX0hJR0hfQk9VTkQpID09IFNVQkFSUkFZX0hJR0hfQk9VTkQpCi0rCWFyZ3MrKzsK LSsKLSsgICAgICBpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJBWV9TVFJJREUpID09IFNVQkFSUkFZ X1NUUklERSkKLSsJYXJncysrOwotIAotICAgICAgIGJyZWFrOwotIAotZGlmZiAtLWdpdCBhL2dk Yi9ydXN0LWV4cC55IGIvZ2RiL3J1c3QtZXhwLnkKLS0tLSBhL2dkYi9ydXN0LWV4cC55Ci0rKysg Yi9nZGIvcnVzdC1leHAueQotQEAgLTI0OTIsMjQgKzI0OTIsMjggQEAgcnVzdF9wYXJzZXI6OmNv bnZlcnRfYXN0X3RvX2V4cHJlc3Npb24gKGNvbnN0IHN0cnVjdCBydXN0X29wICpvcGVyYXRpb24s Ci0gCi0gICAgIGNhc2UgT1BfUkFOR0U6Ci0gICAgICAgewotLQllbnVtIHJhbmdlX3R5cGUga2lu ZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKLSsJZW51bSByYW5nZV90eXBlIGtpbmQgPSBTVUJBUlJB WV9OT05FX0JPVU5EOwotIAotIAlpZiAob3BlcmF0aW9uLT5sZWZ0Lm9wICE9IE5VTEwpCi0gCSAg ewotIAkgICAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAob3BlcmF0aW9uLT5sZWZ0Lm9wLCB0 b3ApOwotLQkgICAga2luZCA9IEhJR0hfQk9VTkRfREVGQVVMVDsKLSsJICAgIGtpbmQgPSBTVUJB UlJBWV9MT1dfQk9VTkQ7Ci0gCSAgfQotIAlpZiAob3BlcmF0aW9uLT5yaWdodC5vcCAhPSBOVUxM KQotIAkgIHsKLSAJICAgIGNvbnZlcnRfYXN0X3RvX2V4cHJlc3Npb24gKG9wZXJhdGlvbi0+cmln aHQub3AsIHRvcCk7Ci0tCSAgICBpZiAoa2luZCA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCi0tCSAg ICAgIGtpbmQgPSAob3BlcmF0aW9uLT5pbmNsdXNpdmUKLS0JCSAgICAgID8gTE9XX0JPVU5EX0RF RkFVTFQgOiBMT1dfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUpOwotKwkgICAgaWYgKGtpbmQgPT0g U1VCQVJSQVlfTk9ORV9CT1VORCkKLSsJICAgICAgewotKwkJa2luZCA9IChyYW5nZV90eXBlKSBT VUJBUlJBWV9ISUdIX0JPVU5EOwotKwkJaWYgKCFvcGVyYXRpb24tPmluY2x1c2l2ZSkKLSsJCSAg a2luZCA9IChyYW5nZV90eXBlKSAoa2luZCB8IFNVQkFSUkFZX0hJR0hfQk9VTkRfRVhDTFVTSVZF KTsKLSsJICAgICAgfQotIAkgICAgZWxzZQotIAkgICAgICB7Ci0tCQlnZGJfYXNzZXJ0IChraW5k ID09IEhJR0hfQk9VTkRfREVGQVVMVCk7Ci0tCQlraW5kID0gKG9wZXJhdGlvbi0+aW5jbHVzaXZl Ci0tCQkJPyBOT05FX0JPVU5EX0RFRkFVTFQgOiBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZF KTsKLSsJCWdkYl9hc3NlcnQgKGtpbmQgPT0gU1VCQVJSQVlfTE9XX0JPVU5EKTsKLSsJCWtpbmQg PSAocmFuZ2VfdHlwZSkgKGtpbmQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EKTsKLSsJCWlmICghb3Bl cmF0aW9uLT5pbmNsdXNpdmUpCi0rCQkgIGtpbmQgPSAocmFuZ2VfdHlwZSkgKGtpbmQgfCBTVUJB UlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSk7Ci0gCSAgICAgIH0KLSAJICB9Ci0gCWVsc2UKLWRp ZmYgLS1naXQgYS9nZGIvcnVzdC1sYW5nLmMgYi9nZGIvcnVzdC1sYW5nLmMKLS0tLSBhL2dkYi9y dXN0LWxhbmcuYwotKysrIGIvZ2RiL3J1c3QtbGFuZy5jCi1AQCAtMTA4MiwxMyArMTA4MiwxMSBA QCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3Np ZGUgbm9zaWRlKQotICAga2luZCA9IChlbnVtIHJhbmdlX3R5cGUpIGxvbmdlc3RfdG9faW50IChl eHAtPmVsdHNbKnBvcyArIDFdLmxvbmdjb25zdCk7Ci0gICAqcG9zICs9IDM7Ci0gCi0tICBpZiAo a2luZCA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBOT05FX0JPVU5EX0RFRkFVTFQK LS0gICAgICB8fCBraW5kID09IE5PTkVfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUpCi0rICBpZiAo KGtpbmQgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFSUkFZX0xPV19CT1VORCkKLSAgICAg bG93ID0gZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKLS0gIGlm IChraW5kID09IExPV19CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFRf RVhDTFVTSVZFCi0tICAgICAgfHwga2luZCA9PSBOT05FX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9 PSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFKQotKyAgaWYgKChraW5kICYgU1VCQVJSQVlf SElHSF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKLSAgICAgaGlnaCA9IGV2YWx1YXRl X3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tICBib29sIGluY2x1c2l2ZSA9 IChraW5kID09IE5PTkVfQk9VTkRfREVGQVVMVCB8fCBraW5kID09IExPV19CT1VORF9ERUZBVUxU KTsKLSsgIGJvb2wgaW5jbHVzaXZlID0gKCEoKGtpbmQgJiBTVUJBUlJBWV9ISUdIX0JPVU5EX0VY Q0xVU0lWRSkgPT0gU1VCQVJSQVlfSElHSF9CT1VORF9FWENMVVNJVkUpKTsKLSAKLSAgIGlmIChu b3NpZGUgPT0gRVZBTF9TS0lQKQotICAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0IChidWls dGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LCAxKTsKLUBAIC0xMTc3LDcgKzEx NzUsNyBAQCBydXN0X2NvbXB1dGVfcmFuZ2UgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmFs dWUgKnJhbmdlLAotIAotICAgKmxvdyA9IDA7Ci0gICAqaGlnaCA9IDA7Ci0tICAqa2luZCA9IEJP VEhfQk9VTkRfREVGQVVMVDsKLSsgICpraW5kID0gU1VCQVJSQVlfTk9ORV9CT1VORDsKLSAKLSAg IGlmICh0eXBlLT5udW1fZmllbGRzICgpID09IDApCi0gICAgIHJldHVybjsKLUBAIC0xMTg1LDE1 ICsxMTgzLDE0IEBAIHJ1c3RfY29tcHV0ZV9yYW5nZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCB2YWx1ZSAqcmFuZ2UsCi0gICBpID0gMDsKLSAgIGlmIChzdHJjbXAgKFRZUEVfRklFTERfTkFN RSAodHlwZSwgMCksICJzdGFydCIpID09IDApCi0gICAgIHsKLS0gICAgICAqa2luZCA9IEhJR0hf Qk9VTkRfREVGQVVMVDsKLSsgICAgICAqa2luZCA9IFNVQkFSUkFZX0xPV19CT1VORDsKLSAgICAg ICAqbG93ID0gdmFsdWVfYXNfbG9uZyAodmFsdWVfZmllbGQgKHJhbmdlLCAwKSk7Ci0gICAgICAg KytpOwotICAgICB9Ci0gICBpZiAodHlwZS0+bnVtX2ZpZWxkcyAoKSA+IGkKLSAgICAgICAmJiBz dHJjbXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSksICJlbmQiKSA9PSAwKQotICAgICB7Ci0t ICAgICAgKmtpbmQgPSAoKmtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUCi0tCSAgICAgICA/IExP V19CT1VORF9ERUZBVUxUIDogTk9ORV9CT1VORF9ERUZBVUxUKTsKLSsgICAgICAqa2luZCA9IChy YW5nZV90eXBlKSAoKmtpbmQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EKTsKLSAgICAgICAqaGlnaCA9 IHZhbHVlX2FzX2xvbmcgKHZhbHVlX2ZpZWxkIChyYW5nZSwgaSkpOwotIAotICAgICAgIGlmIChy dXN0X2luY2x1c2l2ZV9yYW5nZV90eXBlX3AgKHR5cGUpKQotQEAgLTEyMTEsNyArMTIwOCw3IEBA IHJ1c3Rfc3Vic2NyaXB0IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBu b3NpZGUgbm9zaWRlLAotICAgc3RydWN0IHR5cGUgKnJoc3R5cGU7Ci0gICBMT05HRVNUIGxvdywg aGlnaF9ib3VuZDsKLSAgIC8qIEluaXRpYWxpemVkIHRvIGFwcGVhc2UgdGhlIGNvbXBpbGVyLiAg Ki8KLS0gIGVudW0gcmFuZ2VfdHlwZSBraW5kID0gQk9USF9CT1VORF9ERUZBVUxUOwotKyAgZW51 bSByYW5nZV90eXBlIGtpbmQgPSBTVUJBUlJBWV9OT05FX0JPVU5EOwotICAgTE9OR0VTVCBoaWdo ID0gMDsKLSAgIGludCB3YW50X3NsaWNlID0gMDsKLSAKLUBAIC0xMzA5LDcgKzEzMDYsNyBAQCBy dXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9z aWRlIG5vc2lkZSwKLSAJZXJyb3IgKF8oIkNhbm5vdCBzdWJzY3JpcHQgbm9uLWFycmF5IHR5cGUi KSk7Ci0gCi0gICAgICAgaWYgKHdhbnRfc2xpY2UKLS0JICAmJiAoa2luZCA9PSBCT1RIX0JPVU5E X0RFRkFVTFQgfHwga2luZCA9PSBMT1dfQk9VTkRfREVGQVVMVCkpCi0rCSAgJiYgKChraW5kICYg U1VCQVJSQVlfTE9XX0JPVU5EKSAhPSBTVUJBUlJBWV9MT1dfQk9VTkQpKQotIAlsb3cgPSBsb3df Ym91bmQ7Ci0gICAgICAgaWYgKGxvdyA8IDApCi0gCWVycm9yIChfKCJJbmRleCBsZXNzIHRoYW4g emVybyIpKTsKLUBAIC0xMzI3LDcgKzEzMjQsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKLSAJICBDT1JFX0FE RFIgYWRkcjsKLSAJICBzdHJ1Y3QgdmFsdWUgKmFkZHJ2YWwsICp0ZW07Ci0gCi0tCSAgaWYgKGtp bmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gSElHSF9CT1VORF9ERUZBVUxUKQot KwkgIGlmICgoa2luZCAmIFNVQkFSUkFZX0hJR0hfQk9VTkQpICE9IFNVQkFSUkFZX0hJR0hfQk9V TkQpCi0gCSAgICBoaWdoID0gaGlnaF9ib3VuZDsKLSAJICBpZiAoaGlnaCA8IDApCi0gCSAgICBl cnJvciAoXygiSGlnaCBpbmRleCBsZXNzIHRoYW4gemVybyIpKTsKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9zdGF0aWMtYXJyYXlzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5l eHAKLUBAIC0wLDAgKzEsNDIxIEBACi0rIyBDb3B5cmlnaHQgMjAxNSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsjCi0rIyBDb250cmlidXRlZCBieSBJbnRlbCBDb3JwLiA8Y2hyaXN0 b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgc3RhdGljLWFycmF5cy5mOTAKLSsKLStpZiB7IFtw cmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1 ZyBmOTB9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0 aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0r ICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJCUDEiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCUDEiICIuKkJQMS4qIgotKwot KyMgVGVzdHMgc3ViYXJyYXlzIG9mIG9uZSBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBzdWJyYW5n ZSB2YXJpYXRpb25zCi0rZ2RiX3Rlc3QgInByaW50IGFyMSIgIlxcJFxbMC05XF0rID0gXFwoMSwg MiwgMywgNCwgNSwgNiwgNywgOCwgOVxcKSIgXAotKwkJInByaW50IGFyMS4iCi0rZ2RiX3Rlc3Qg InByaW50IGFyMVwoNDo3XCkiICJcXCRcWzAtOVxdKyA9IFxcKDQsIDUsIDYsIDdcXCkiIFwKLSsJ CSJwcmludCBhcjFcKDQ6N1wpIgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6XCkiICJcXCRcWzAt OVxdKyA9IFxcKDgsIDlcXCkuKiIgXAotKwkJInByaW50IGFyMVwoODpcKSIKLStnZGJfdGVzdCAi cHJpbnQgYXIxXCg6M1wpIiAiXFwkXFswLTlcXSsgPSBcXCgxLCAyLCAzXFwpLioiIFwKLSsJCSJw cmludCBhcjFcKDozXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMVwoOlwpIiAiXFwkXFswLTlcXSsg PSBcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XFwpIiBcCi0rCQkicHJpbnQgYXIxXCg6XCki Ci0rCi0rIyBDaGVjayBhc3NpZ25tZW50Ci0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgXCRteV9h cnkgPSBhcjFcKDM6OFwpIgotK2dkYl90ZXN0ICJwcmludCBcJG15X2FyeSIgXAotKwkJIlxcJFxb MC05XF0rID0gXFwoMywgNCwgNSwgNiwgNywgOFxcKSIgXAotKwkJIkFzc2lnbm1lbnQgb2Ygc3Vi YXJyYXkgdG8gdmFyaWFibGUiCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXIxXCg1XCkgPSA0 MiIKLSsJCWdkYl90ZXN0ICJwcmludCBhcjFcKDM6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBc XCgzLCA0LCA0MiwgNiwgNywgOFxcKSIgXAotKwkJInByaW50IGFyMVwoMzo4XCkgYWZ0ZXIgYXNz aWdubWVudCIKLStnZGJfdGVzdCAicHJpbnQgXCRteV9hcnkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKDMsIDQsIDUsIDYsIDcsIDhcXCkiIFwKLSsJCSJBc3NpZ25tZW50IG9mIHN1YmFycmF5IHRv IHZhcmlhYmxlIGFmdGVyIG9yaWdpbmFsIGFycmF5IGNoYW5nZWQiCi0rCi0rIyBUZXN0IGZvciBz dWJhcnJheXMgb2Ygb25lIGRpbWVuc2lvbmFsIGFycmF5cyB3aXRoIGxpdGVyYWxzCi0rCQlnZGJf dGVzdCAicHJpbnQgYXIxXCgzXCkiICJcXCRcWzAtOVxdKyA9IDMiIFwKLSsJCSJwcmludCBhcjFc KDNcKSIKLSsKLSsjIFRlc3RzIGZvciBzdWJyYW5nZXMgb2YgMiBkaW1lbnNpb25hbCBhcnJheXMg d2l0aCBzdWJyYW5nZSB2YXJpYXRpb25zCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoMjozLCAzOjRc KSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDIzLCAzM1xcKSBcXCggMjQsIDM0XFwpIFxc KSIgXAotKwkJInByaW50IGFyMlwoMjozLCAzOjRcKS4iCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwo ODo5LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4OCwgOThcXCkgXFwoIDg5LCA5 OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDg6OSw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBh cjJcKDg6OSw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODEsIDkxXFwpIFxcKCA4 MiwgOTJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4OjksOjJcKSIKLSsKLStnZGJfdGVzdCAi cHJpbnQgYXIyXCg4Oiw4OjlcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDg4LCA5OFxc KSBcXCggODksIDk5XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODosODo5XCkiCi0rZ2RiX3Rl c3QgInByaW50IGFyMlwoODosODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDg4LCA5 OFxcKSBcXCggODksIDk5XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODosODpcKSIKLStnZGJf dGVzdCAicHJpbnQgYXIyXCg4Oiw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODEs IDkxXFwpIFxcKCA4MiwgOTJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4Oiw6MlwpIgotKwot K2dkYl90ZXN0ICJwcmludCBhcjJcKDoyLDI6M1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChc XCggMTIsIDIyXFwpIFxcKCAxMywgMjNcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg6MiwyOjNc KSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBc XChcXCggMTgsIDI4XFwpIFxcKCAxOSwgMjlcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg6Miw4 OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDoyLDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCAxMSwgMjFcXCkgXFwoIDEyLCAyMlxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDoy LDoyXCkiCi0rCi0rIyBUZXN0IHN1YnJhbmdlcyBvZiAyIGRpbWVuc2lvbmFsIGFycmF5cyB3aXRo IGxpdGVyYWxzIGFuZCBzdWJyYW5nZSB2YXJpYXRpb25zCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwo NywgMzo2XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDczLCA3NCwgNzUsIDc2XFwpIiBcCi0r CQkicHJpbnQgYXIyXCg3LCAzOjZcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg3LDg6XCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKDc4LCA3OVxcKSIgXAotKwkJInByaW50IGFyMlwoNyw4Olwp IgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDcsOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwo NzEsIDcyXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg3LDoyXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50 IGFyMlwoNzo4LDRcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoNzQsIDg0XFwpIiBcCi0rCQki cHJpbnQgYXIyKDc6OCw0XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoODosNFwpIiBcCi0rCQki XFwkXFswLTlcXSsgPSBcXCg4NCwgOTRcXCkiIFwKLSsJCSJwcmludCBhcjJcKDg6LDRcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDE0LCAy NFxcKSIgXAotKwkJInByaW50IGFyMlwoOjIsNFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDMs NFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSAzNCIgXAotKwkJInByaW50IGFyMlwoMyw0XCkiCi0r Ci0rIyBUZXN0IHN1YmFycmF5cyBvZiAzIGRpbWVuc2lvbmFsIGFycmF5cyB3aXRoIGxpdGVyYWxz IGFuZCBzdWJyYW5nZSB2YXJpYXRpb25zCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjo0LDM6NCw3 OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMzcsIDMzNywgNDM3XFwpIFxc KCAyNDcsIDM0NywgNDQ3XFwpXAotKwkJIFxcKSBcXCggXFwoIDIzOCwgMzM4LCA0MzhcXCkgXFwo IDI0OCwgMzQ4LCA0NDhcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjo0LDM6NCw3Ojhc KSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsNDo1LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxd KyA9IFxcKFxcKCBcXCggMjQ4LCAzNDhcXCkgXFwoIDI1OCwgMzU4XFwpIFxcKSBcXChcCi0rCQkg XFwoIDI0OSwgMzQ5XFwpIFxcKCAyNTksIDM1OVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIz XCgyOjMsNDo1LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDQ6NSw6MlwpIiBcCi0r CQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI0MSwgMzQxXFwpIFxcKCAyNTEsIDM1MVxcKSBc XCkgXFwoXAotKwkJIFxcKCAyNDIsIDM0MlxcKSBcXCggMjUyLCAzNTJcXCkgXFwpIFxcKSIgXAot KwkJInByaW50IGFyM1woMjozLDQ6NSw6MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6 Myw4Oiw3OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyODcsIDM4N1xcKSBc XCggMjk3LCAzOTdcXCkgXFwpIFxcKFwKLSsJCSBcXCggMjg4LCAzODhcXCkgXFwoIDI5OCwgMzk4 XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6Myw4Oiw3OjhcKSIKLStnZGJfdGVzdCAi cHJpbnQgYXIzXCgyOjMsODosODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAy ODgsIDM4OFxcKSBcXCggMjk4LCAzOThcXCkgXFwpIFxcKFwKLSsJCSBcXCggMjg5LCAzODlcXCkg XFwoIDI5OSwgMzk5XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6Myw4Oiw4OlwpIgot K2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw4Oiw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBc XChcXCggXFwoIDI4MSwgMzgxXFwpIFxcKCAyOTEsIDM5MVxcKSBcXCkgXFwoXAotKwkJIFxcKCAy ODIsIDM4MlxcKSBcXCggMjkyLCAzOTJcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjoz LDg6LDoyXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDoyLDc6OFwpIiBcCi0rCQki XFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIxNywgMzE3XFwpIFxcKCAyMjcsIDMyN1xcKSBcXCkg XFwoXAotKwkJIFxcKCAyMTgsIDMxOFxcKSBcXCggMjI4LCAzMjhcXCkgXFwpIFxcKSIgXAotKwkJ InByaW50IGFyM1woMjozLDoyLDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw6Miw4 OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIxOCwgMzE4XFwpIFxcKCAyMjgs IDMyOFxcKSBcXCkgXFwoXAotKwkJIFxcKCAyMTksIDMxOVxcKSBcXCggMjI5LCAzMjlcXCkgXFwp IFxcKSIgXAotKwkJInByaW50IGFyM1woMjozLDoyLDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFy M1woMjozLDoyLDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjExLCAzMTFc XCkgXFwoIDIyMSwgMzIxXFwpIFxcKSBcXChcCi0rCQkgXFwoIDIxMiwgMzEyXFwpIFxcKCAyMjIs IDMyMlxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyOjMsOjIsOjJcKSIKLSsKLStnZGJf dGVzdCAicHJpbnQgYXIzXCg4OiwzOjQsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCBcXCggODM3LCA5MzdcXCkgXFwoIDg0NywgOTQ3XFwpIFxcKSBcXChcCi0rCQkgXFwoIDgzOCwg OTM4XFwpIFxcKCA4NDgsIDk0OFxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4OiwzOjQs Nzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosNDo1LDg6XCkiIFwKLSsJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCBcXCggODQ4LCA5NDhcXCkgXFwoIDg1OCwgOTU4XFwpIFxcKSBcXChcCi0r CQkgXFwoIDg0OSwgOTQ5XFwpIFxcKCA4NTksIDk1OVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQg YXIzXCg4Oiw0OjUsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw0OjUsOjJcKSIgXAot KwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4NDEsIDk0MVxcKSBcXCggODUxLCA5NTFcXCkg XFwpIFxcKFwKLSsJCSBcXCggODQyLCA5NDJcXCkgXFwoIDg1MiwgOTUyXFwpIFxcKSBcXCkiIFwK LSsJCSJwcmludCBhcjNcKDg6LDQ6NSw6MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6 LDg6LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDg4NywgOTg3XFwpIFxc KCA4OTcsIDk5N1xcKSBcXCkgXFwoXAotKwkJIFxcKCA4ODgsIDk4OFxcKSBcXCggODk4LCA5OThc XCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woODosODosNzo4XCkiCi0rZ2RiX3Rlc3QgInBy aW50IGFyM1woODosODosODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4ODgs IDk4OFxcKSBcXCggODk4LCA5OThcXCkgXFwpIFxcKFwKLSsJCSBcXCggODg5LCA5ODlcXCkgXFwo IDg5OSwgOTk5XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDg6LDg6XCkiCi0rZ2Ri X3Rlc3QgInByaW50IGFyM1woODosODosOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IFxcKCA4ODEsIDk4MVxcKSBcXCggODkxLCA5OTFcXCkgXFwpIFxcKFwKLSsJCSBcXCggODgyLCA5 ODJcXCkgXFwoIDg5MiwgOTkyXFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDg6LDoy XCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIsNzo4XCkiIFwKLSsJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCBcXCggODE3LCA5MTdcXCkgXFwoIDgyNywgOTI3XFwpIFxcKSBcXChcCi0r CQkgXFwoIDgxOCwgOTE4XFwpIFxcKCA4MjgsIDkyOFxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQg YXIzXCg4Oiw6Miw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw6Miw4OlwpIiBcCi0r CQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDgxOCwgOTE4XFwpIFxcKCA4MjgsIDkyOFxcKSBc XCkgXFwoXAotKwkJIFxcKCA4MTksIDkxOVxcKSBcXCggODI5LCA5MjlcXCkgXFwpIFxcKSIgXAot KwkJInByaW50IGFyM1woODosOjIsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw6Miw6 MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDgxMSwgOTExXFwpIFxcKCA4MjEs IDkyMVxcKSBcXCkgXFwoXAotKwkJIFxcKCA4MTIsIDkxMlxcKSBcXCggODIyLCA5MjJcXCkgXFwp IFxcKSIgXAotKwkJInByaW50IGFyM1woODosOjIsOjJcKSIKLSsKLSsKLStnZGJfdGVzdCAicHJp bnQgYXIzXCg6MiwzOjQsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTM3 LCAyMzdcXCkgXFwoIDE0NywgMjQ3XFwpIFxcKSBcXChcCi0rCQkgXFwoIDEzOCwgMjM4XFwpIFxc KCAxNDgsIDI0OFxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzIFwoOjIsMzo0LDc6OFwpLiIK LStnZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIFxcKCAxMzgsIDIzOFxcKSBcXCggMTQ4LCAyNDhcXCkgXFwpIFxcKFwKLSsJCSBcXCgg MTM5LCAyMzlcXCkgXFwoIDE0OSwgMjQ5XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDoy LDM6NCw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDM6NCw6MlwpIiBcCi0rCQkiXFwk XFswLTlcXSsgPSBcXChcXCggXFwoIDEzMSwgMjMxXFwpIFxcKCAxNDEsIDI0MVxcKSBcXCkgXFwo XAotKwkJIFxcKCAxMzIsIDIzMlxcKSBcXCggMTQyLCAyNDJcXCkgXFwpIFxcKSIgXAotKwkJInBy aW50IGFyM1woOjIsMzo0LDoyXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woOjIsODosNzo4 XCkiICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTg3LCAyODdcXCkgXFwoXAotKwkJIDE5Nywg Mjk3XFwpIFxcKSBcXCggXFwoIDE4OCwgMjg4XFwpIFxcKCAxOTgsIDI5OFxcKSBcXCkgXFwpIiBc Ci0rCQkicHJpbnQgYXIzXCg6Miw4Oiw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw4 Oiw4OlwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4OCwgMjg4XFwpIFxcKCAxOTgsXAot KwkJIDI5OFxcKSBcXCkgXFwoIFxcKCAxODksIDI4OVxcKSBcXCggMTk5LCAyOTlcXCkgXFwpIFxc KSIgXAotKwkJInByaW50IGFyM1woOjIsODosODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6 Miw4Oiw6MlwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4MSwgMjgxXFwpIFxcKCAxOTEs XAotKwkJIDI5MVxcKSBcXCkgXFwoIFxcKCAxODIsIDI4MlxcKSBcXCggMTkyLCAyOTJcXCkgXFwp IFxcKSIgXAotKwkJInByaW50IGFyM1woOjIsODosOjJcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQg YXIzXCg6Miw6Miw3OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMTcsIDIx N1xcKSBcXCggMTI3LCAyMjdcXCkgXFwpIFxcKFwKLSsJCSBcXCggMTE4LCAyMThcXCkgXFwoIDEy OCwgMjI4XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDoyLDoyLDc6OFwpIgotK2dkYl90 ZXN0ICJwcmludCBhcjNcKDoyLDoyLDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBc XCggMTE4LCAyMThcXCkgXFwoIDEyOCwgMjI4XFwpIFxcKSBcXChcCi0rCQkgXFwoIDExOSwgMjE5 XFwpIFxcKCAxMjksIDIyOVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw6Miw4Olwp IgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDoyLDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCBcXCggMTExLCAyMTFcXCkgXFwoIDEyMSwgMjIxXFwpIFxcKSBcXChcCi0rCQkgXFwo IDExMiwgMjEyXFwpIFxcKCAxMjIsIDIyMlxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6 Miw6Miw6MlwpIgotKwotKyNUZXN0cyBmb3Igc3ViYXJyYXlzIG9mIDMgZGltZW5zaW9uYWwgYXJy YXlzIHdpdGggbGl0ZXJhbHMgYW5kIHN1YnJhbmdlcwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDMs Mzo0LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzM3LCAzNDdcXCkgXFwoIDMz OCwgMzQ4XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMywzOjQsNzo4XCkiCi0rZ2RiX3Rlc3Qg InByaW50IGFyM1woMyw0OjUsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM0OCwg MzU4XFwpIFxcKCAzNDksIDM1OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDMsNDo1LDg6XCki Ci0rZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0OjUsOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIDM0MSwgMzUxXFwpIFxcKCAzNDIsIDM1MlxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNc KDMsNDo1LDoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0OjUsM1wpIiBcCi0rCQkiXFwk XFswLTlcXSsgPSBcXCgzNDMsIDM1M1xcKSIgXAotKwkJInByaW50IGFyM1woMyw0OjUsM1wpIgot KwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsODosNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCAyODcsIDI5N1xcKSBcXCggMjg4LCAyOThcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIz XCgyLDg6LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsODosODpcKSIgXAotKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIDI4OCwgMjk4XFwpIFxcKCAyODksIDI5OVxcKSBcXCkiIFwKLSsJ CSJwcmludCBhcjNcKDIsODosODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDoyXCki XAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDI4MSwgMjkxXFwpIFxcKCAyODIsIDI5MlxcKSBc XCkiIFwKLSsJCSJwcmludCBhcjNcKDIsODosOjJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgy LDg6LDNcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoMjgzLCAyOTNcXCkiIFwKLSsJCSJwcmlu dCBhcjNcKDIsODosM1wpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsOjIsNzo4XCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTcsIDIyN1xcKSBcXCggMjE4LCAyMjhcXCkgXFwp IiBcCi0rCQkicHJpbnQgYXIzXCgyLDoyLDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDIs OjIsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDIxOCwgMjI4XFwpIFxcKCAyMTks IDIyOVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDIsOjIsODpcKSIKLStnZGJfdGVzdCAicHJp bnQgYXIzXCgyLDoyLDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTEsIDIyMVxc KSBcXCggMjEyLCAyMjJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyLDoyLDoyXCkiCi0rZ2Ri X3Rlc3QgInByaW50IGFyM1woMiw6MiwzXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDIxMywg MjIzXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyLDoyLDNcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQg YXIzXCgzLDQsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDM0NywgMzQ4XFwpIiBcCi0r CQkicHJpbnQgYXIzXCgzLDQsNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0LDg6XCki IFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDM0OCwgMzQ5XFwpIiBcCi0raQkJInByaW50IGFyM1wo Myw0LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0LDoyXCkiIFwKLSsJCSJcXCRcWzAt OVxdKyA9IFxcKDM0MSwgMzQyXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzLDQsOjJcKSIKLStnZGJf dGVzdCAicHJpbnQgYXIzXCg1LDYsN1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSA1NjciIFwKLSsJ CSJwcmludCBhcjNcKDUsNiw3XCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsNzo4 XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNjcsIDQ2N1xcKSBcXCggMzY4LCA0Njhc XCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzOjQsNiw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQg YXIzXCgzOjQsNiw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzY4LCA0NjhcXCkg XFwoIDM2OSwgNDY5XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMzo0LDYsODpcKSIKLStnZGJf dGVzdCAicHJpbnQgYXIzXCgzOjQsNiw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCgg MzYxLCA0NjFcXCkgXFwoIDM2MiwgNDYyXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMzo0LDYs OjJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgzOjQsNiw1XCkiIFwKLSsJCSJcXCRcWzAtOVxd KyA9IFxcKDM2NSwgNDY1XFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzOjQsNiw1XCkiCi0rCi0rZ2Ri X3Rlc3QgInByaW50IGFyM1woODosNiw3OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IDg2NywgOTY3XFwpIFxcKCA4NjgsIDk2OFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDYs Nzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosNiw4OlwpIiBcCi0rCQkiXFwkXFswLTlc XSsgPSBcXChcXCggODY4LCA5NjhcXCkgXFwoIDg2OSwgOTY5XFwpIFxcKSIgXAotKwkJInByaW50 IGFyM1woODosNiw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsOjJcKSIgXAotKwkJ IlxcJFxbMC05XF0rID0gXFwoXFwoIDg2MSwgOTYxXFwpIFxcKCA4NjIsIDk2MlxcKSBcXCkiIFwK LSsJCSJwcmludCBhcjNcKDg6LDYsOjJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw2LDVc KSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoODY1LCA5NjVcXCkiIFwKLSsJCSJwcmludCBhcjNc KDg6LDYsNVwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDYsNzo4XCkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAxNjcsIDI2N1xcKSBcXCggMTY4LCAyNjhcXCkgXFwpIiBcCi0r CQkicHJpbnQgYXIzXCg6Miw2LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDYsODpc KSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDE2OCwgMjY4XFwpIFxcKCAxNjksIDI2OVxc KSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDoyLDYsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIz XCg6Miw2LDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjEsIDI2MVxcKSBcXCgg MTYyLCAyNjJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw2LDoyXCkiCi0rZ2RiX3Rlc3Qg InByaW50IGFyM1woOjIsNiw1XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDE2NSwgMjY1XFwp IiBcCi0rCQkicHJpbnQgYXIzXCg6Miw2LDVcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgz OjQsNTo2LDRcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM1NCwgNDU0XFwpIFxcKCAz NjQsIDQ2NFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDM6NCw1OjYsNFwpIgotK2dkYl90ZXN0 ICJwcmludCBhcjNcKDg6LDU6Niw0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4NTQs IDk1NFxcKSBcXCggODY0LCA5NjRcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4Oiw1OjYsNFwp IgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDU6Niw0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCAxNTQsIDI1NFxcKSBcXCggMTY0LCAyNjRcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIy XCg6Miw1OjYsNFwpIgotKwotKyMgU3RyaWRlID4gMQotK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6 NjoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDIsIDQsIDZcXCkiIFwKLSsJCSJwcmludCBh cjFcKDI6NjoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoMjo2OjIsMzo0XCkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAyMywgNDMsIDYzXFwpIFxcKCAyNCwgNDQsIDY0XFwpIFxcKSIg XAotKwkJInByaW50IGFyMlwoMjo2OjIsMzo0XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoMjo2 OjIsM1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgyMywgNDMsIDYzXFwpIiBcCi0rCQkicHJp bnQgYXIyXCgyOjY6MiwzXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjo2OjIsMzo1OjIsNDo3 OjNcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMzQsIDQzNCwgNjM0XFwpIFxc KCAyNTQsIDQ1NCwgNjU0XFwpXAotKwkJIFxcKSBcXCggXFwoIDIzNywgNDM3LCA2MzdcXCkgXFwo IDI1NywgNDU3LCA2NTdcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjo2OjIsMzo1OjIs NDo3OjNcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjY6Miw1LDQ6NzozXCkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAyNTQsIDQ1NCwgNjU0XFwpIFxcKCAyNTcsIDQ1NywgNjU3XFwp XAotKwkJIFxcKSIgXAotKwkJInByaW50IGFyM1woMjo2OjIsNSw0Ojc6M1wpIgotKwotKyMgU3Ry aWRlIDwgMAotK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6MjotMlwpIiBcCi0rCQkiXFwkXFswLTlc XSsgPSBcXCg4LCA2LCA0LCAyXFwpIiBcCi0rCQkicHJpbnQgYXIxXCg4OjI6LTJcKSIKLStnZGJf dGVzdCAicHJpbnQgYXIyXCg4OjI6LTIsMzo0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCA4MywgNjMsIDQzLCAyM1xcKSBcXCggODQsIDY0LCA0NCwgMjRcXClcCi0rCQkgXFwpIiBcCi0r CQkicHJpbnQgYXIyXCg4OjI6LTIsMzo0XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoMjo2OjIs M1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgyMywgNDMsIDYzXFwpIiBcCi0rCQkicHJpbnQg YXIyXCgyOjY6MiwzXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDc6MzotNCw0Ojc6M1wp IiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI3NCwgMzc0XFwpIFxcKCAyMzQsIDMz NFxcKSBcXCkgXFwoXAotKwkJIFxcKCAyNzcsIDM3N1xcKSBcXCggMjM3LCAzMzdcXCkgXFwpIFxc KSIgXAotKwkJInByaW50IGFyM1woMjozLDc6MzotNCw0Ojc6M1wpIgotK2dkYl90ZXN0ICJwcmlu dCBhcjNcKDI6NjoyLDUsNzo0Oi0zXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyNTcs IDQ1NywgNjU3XFwpIFxcKCAyNTQsIDQ1NCwgNjU0XFwpXAotKwkJIFxcKSIgXAotKwkJInByaW50 IGFyM1woMjo2OjIsNSw3OjQ6LTNcKSIKLSsKLSsjIFRlc3RzIHdpdGggbmVnYXRpdmUgYW5kIG1p eGVkIGluZGljZXMKLStnZGJfdGVzdCAicCBhcjRcKDI6NCwgLTI6MSwgLTE1Oi0xNFwpIiBcCi0r CQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI2MSwgMzYxLCA0NjFcXCkgXFwoIDI3MSwgMzcx LCA0NzFcXClcCi0rCQkgXFwoIDI4MSwgMzgxLCA0ODFcXCkgXFwoIDI5MSwgMzkxLCA0OTFcXCkg XFwpIFxcKCBcXCggMjYyLFwKLSsJCSAzNjIsIDQ2MlxcKSBcXCggMjcyLCAzNzIsIDQ3MlxcKSBc XCggMjgyLCAzODIsIDQ4MlxcKSBcXCggMjkyLFwKLSsJCSAzOTIsIDQ5MlxcKSBcXCkgXFwpIiBc Ci0rCQkicHJpbnQgYXI0KDI6NCwgLTI6MSwgLTE1Oi0xNCkiCi0rCi0rZ2RiX3Rlc3QgInAgYXI0 XCg3LC02OjI6MywtN1wpIiBcCi0rICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKDcy OSwgNzU5LCA3ODlcXCkiIFwKLSsgICAgICAgICAgICAgICAgInByaW50IGFyNCg3LC02OjI6Mywt NykiCi0rCi0rZ2RiX3Rlc3QgInAgYXI0XCg5OjI6LTIsIC02OjI6MywgLTY6LTE1Oi0zXCkiIFwK LSsgICAgICAgICAgICAgICAgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA5MzAsIDczMCwgNTMw LCAzMzBcXCkgXFwoIDk2MCwgNzYwLFwKLSsJCSA1NjAsIDM2MFxcKSBcXCggOTkwLCA3OTAsIDU5 MCwgMzkwXFwpIFxcKSBcXCggXFwoIDkyNywgNzI3LFwKLSsJCSA1MjcsIDMyN1xcKSBcXCggOTU3 LCA3NTcsIDU1NywgMzU3XFwpIFxcKCA5ODcsIDc4NywgNTg3LFwKLSsJCSAzODdcXCkgXFwpIFxc KCBcXCggOTI0LCA3MjQsIDUyNCwgMzI0XFwpIFxcKCA5NTQsIDc1NCwgNTU0LFwKLSsJCSAzNTRc XCkgXFwoIDk4NCwgNzg0LCA1ODQsIDM4NFxcKSBcXCkgXFwoIFxcKCA5MjEsIDcyMSwgNTIxLFwK LSsJCSAzMjFcXCkgXFwoIDk1MSwgNzUxLCA1NTEsIDM1MVxcKSBcXCggOTgxLCA3ODEsIDU4MSwg MzgxXFwpIFxcKVwKLSsJCSBcXCkiIFwKLSsgICAgICAgICAgICAgICAgInByaW50IGFyNCg5OjI6 LTIsIC02OjI6MywgLTY6LTE1Oi0zKSIKLSsKLStnZGJfdGVzdCAicCBhcjRcKDosOiw6XCkiIFwK LSsgICAgICAgICAgICAgICAgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMTEsIDIxMSwgMzEx LCA0MTEsIDUxMSwgNjExLCA3MTEsXAotKwkJIDgxMSwgLioiIFwKLSsgICAgICAgICAgICAgICAg InByaW50IGFyNCg6LDosOikiCi0rCi0rIyBQcm92b2tlIGVycm9yIG1lc3NhZ2VzIGZvciBiYWQg dXNlciBpbnB1dAotK2dkYl90ZXN0ICJwcmludCBhcjFcKDA6NFwpIiBcCi0rCQkicHJvdmlkZWQg Ym91bmRcXChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCi0rCQkicHJpbnQgYXIx XCgwOjRcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjEyXCkiIFwKLSsJCSJwcm92aWRlZCBi b3VuZFxcKHNcXCkgb3V0c2lkZSBhcnJheSBib3VuZFxcKHNcXCkiIFwKLSsJCSJwcmludCBhcjFc KDg6MTJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6XCkiIFwKLSsJCSJBIHN5bnRheCBl cnJvciBpbiBleHByZXNzaW9uLCBuZWFyIGBcXCknLiIgXAotKwkJInByaW50IGFyMVwoODoyOlwp IgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6MjoyXCkiIFwKLSsJCSJXcm9uZyB2YWx1ZSBwcm92 aWRlZCBmb3Igc3RyaWRlIGFuZCBib3VuZGFyaWVzIiBcCi0rCQkicHJpbnQgYXIxXCg4OjI6Mlwp IgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6ODotMlwpIiBcCi0rCQkiV3JvbmcgdmFsdWUgcHJv dmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIgXAotKwkJInByaW50IGFyMVwoMjo4Oi0y XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMVwoMjo3OjBcKSIgXAotKwkJIlN0cmlkZSBtdXN0IG5v dCBiZSAwIiBcCi0rCQkicHJpbnQgYXIxXCgyOjc6MFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjFc KDM6N1wpID0gNDIiIFwKLSsJCSJJbnZhbGlkIGNhc3QuIiBcCi0rCQkiQXNzaWdubWVudCBvZiB2 YWx1ZSB0byBzdWJhcnJheSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3N0YXRpYy1hcnJheXMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdGF0aWMtYXJy YXlzLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5mOTAKLUBAIC0wLDAgKzEsNTUgQEAK LSshIENvcHlyaWdodCAyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSsh IENvbnRyaWJ1dGVkIGJ5IEludGVsIENvcnAuIDxjaHJpc3RvcGgudC53ZWlubWFubkBpbnRlbC5j b20+Ci0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzdWJyb3V0aW5lIHN1 YgotKyAgaW50ZWdlciwgZGltZW5zaW9uKDkpIDo6IGFyMQotKyAgaW50ZWdlciwgZGltZW5zaW9u KDksOSkgOjogYXIyCi0rICBpbnRlZ2VyLCBkaW1lbnNpb24oOSw5LDkpIDo6IGFyMwotKyAgaW50 ZWdlciwgZGltZW5zaW9uKDEwLC03OjMsIC0xNTotNSkgOjogYXI0Ci0rICBpbnRlZ2VyIDo6IGks aixrCi0rCi0rICBhcjEgPSAxCi0rICBhcjIgPSAxCi0rICBhcjMgPSAxCi0rICBhcjQgPSA0Ci0r Ci0rICAhIFJlc3VsdGluZyBhcnJheSBhcjMgbG9va3MgbGlrZSAoKCggMTExLCAxMTIsIDExMywg MTE0LC4uLikpKQotKyAgZG8gaSA9IDEsIDksIDEKLSsgICAgYXIxKGkpID0gaQotKyAgICBkbyBq ID0gMSwgOSwgMQotKyAgICAgIGFyMihpLGopID0gaSoxMCArIGoKLSsgICAgICBkbyBrID0gMSwg OSwgMQotKyAgICAgICAgYXIzKGksaixrKSA9IGkqMTAwICsgaioxMCArIGsKLSsgICAgICBlbmQg ZG8KLSsgICAgZW5kIGRvCi0rICBlbmQgZG8KLSsKLSsgIGRvIGkgPSAxLCAxMCwgMQotKyAgICBk byBqID0gLTcsIDMsIDEKLSsgICAgICBkbyBrID0gLTE1LCAtNSwgMQotKyAgICAgICAgYXI0KGks aixrKSA9IGkqMTAwICsgKGorOCkqMTAgKyAoaysxNikKLSsgICAgICBlbmQgZG8KLSsgICAgZW5k IGRvCi0rICBlbmQgZG8KLSsKLSsgIGFyMSgxKSA9IDExICAhQlAxCi0rICByZXR1cm4KLStlbmQK LSsKLStwcm9ncmFtIHRlc3Rwcm9nCi0rICBjYWxsIHN1YgotK2VuZAotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1zaXplb2YuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXpl b2YuZXhwCi1AQCAtMzUsNyArMzUsOCBAQCBnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHZsYTEpIiAi ID0gMCIgInByaW50IHNpemVvZiBub24tYWxsb2NhdGVkIHZsYTEiCi0gZ2RiX3Rlc3QgInByaW50 IHNpemVvZih2bGExKDMsMiwxKSkiIFwKLSAgICAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFwo dmVjdG9yIG5vdCBhbGxvY2F0ZWRcXCkiIFwKLSAgICAgInByaW50IHNpemVvZiBub24tYWxsb2Nh dGVkIGluZGV4ZWQgdmxhMSIKLS1nZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHZsYTEoMzo0LDIsMSkp IiAiYXJyYXkgbm90IGFsbG9jYXRlZCIgXAotK2dkYl90ZXN0ICJwcmludCBzaXplb2YodmxhMSgz OjQsMiwxKSkiIFwKLSsgICAgInByb3ZpZGVkIGJvdW5kXFwoc1xcKSBvdXRzaWRlIGFycmF5IGJv dW5kXFwoc1xcKSIgXAotICAgICAicHJpbnQgc2l6ZW9mIG5vbi1hbGxvY2F0ZWQgc2xpY2VkIHZs YTEiCi0gCi0gIyBUcnkgdG8gYWNjZXNzIHZhbHVlIGluIGFsbG9jYXRlZCBWTEEKLUBAIC00NCw3 ICs0NSw3IEBAIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWFsbG9jYXRlZCIKLSBn ZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHZsYTEpIiAiID0gNDAwMCIgInByaW50IHNpemVvZiBhbGxv Y2F0ZWQgdmxhMSIKLSBnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHZsYTEoMywyLDEpKSIgIjQiIFwK LSAgICAgInByaW50IHNpemVvZiBlbGVtZW50IGZyb20gYWxsb2NhdGVkIHZsYTEiCi0tZ2RiX3Rl c3QgInByaW50IHNpemVvZih2bGExKDM6NCwyLDEpKSIgIjgwMCIgXAotK2dkYl90ZXN0ICJwcmlu dCBzaXplb2YodmxhMSgzOjQsMiwxKSkiICI4IiBcCi0gICAgICJwcmludCBzaXplb2Ygc2xpY2Vk IHZsYTEiCi0gCi0gIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiB1bmRlZmluZWQgcG9pbnRlciB0 byBWTEEgKGRhbmdsaW5nKQotQEAgLTUyLDcgKzUzLDggQEAgZ2RiX3Rlc3QgInByaW50IHNpemVv ZihwdmxhKSIgIiA9IDAiICJwcmludCBzaXplb2Ygbm9uLWFzc29jaWF0ZWQgcHZsYSIKLSBnZGJf dGVzdCAicHJpbnQgc2l6ZW9mKHB2bGEoMywyLDEpKSIgXAotICAgICAibm8gc3VjaCB2ZWN0b3Ig ZWxlbWVudCBcXCh2ZWN0b3Igbm90IGFzc29jaWF0ZWRcXCkiIFwKLSAgICAgInByaW50IHNpemVv ZiBub24tYXNzb2NpYXRlZCBpbmRleGVkIHB2bGEiCi0tZ2RiX3Rlc3QgInByaW50IHNpemVvZihw dmxhKDM6NCwyLDEpKSIgImFycmF5IG5vdCBhc3NvY2lhdGVkIiBcCi0rZ2RiX3Rlc3QgInByaW50 IHNpemVvZihwdmxhKDM6NCwyLDEpKSIgXAotKyAgICAicHJvdmlkZWQgYm91bmRcXChzXFwpIG91 dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCi0gICAgICJwcmludCBzaXplb2Ygbm9uLWFzc29j aWF0ZWQgc2xpY2VkIHB2bGEiCi0gCi0gIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBwb2ludGVy IHRvIFZMQSBhbmQgY29tcGFyZSB0aGVtCi1AQCAtNjEsNyArNjMsOCBAQCBnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAicHZsYS1hc3NvY2lhdGVkIgotIGdkYl90ZXN0ICJwcmludCBzaXplb2Yo cHZsYSkiICIgPSA0MDAwIiAicHJpbnQgc2l6ZW9mIGFzc29jaWF0ZWQgcHZsYSIKLSBnZGJfdGVz dCAicHJpbnQgc2l6ZW9mKHB2bGEoMywyLDEpKSIgIjQiIFwKLSAgICAgInByaW50IHNpemVvZiBl bGVtZW50IGZyb20gYXNzb2NpYXRlZCBwdmxhIgotLWdkYl90ZXN0ICJwcmludCBzaXplb2YocHZs YSgzOjQsMiwxKSkiICI4MDAiICJwcmludCBzaXplb2Ygc2xpY2VkIHB2bGEiCi0rCi0rZ2RiX3Rl c3QgInByaW50IHNpemVvZihwdmxhKDM6NCwyLDEpKSIgIjgiICJwcmludCBzaXplb2Ygc2xpY2Vk IHB2bGEiCi0gCi0gZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtbmVn LWJvdW5kcy12MSJdCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtbmVnLWJvdW5k cy12MSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXN0cmlkZS5leHAKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIENvcHlyaWdodCAyMDE2IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSAiLmY5MCIKLSsKLStpZiB7IFtwcmVwYXJlX2Zv cl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsgICAg e2RlYnVnIGY5MCBxdWlldH1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50 byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50 IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQg bWF4LXZhbHVlLXNpemUgdW5saW1pdGVkIiBcCi0rICAgICJzZXQgbWF4LXZhbHVlLXNpemUgdG8g dW5saW1pdGVkIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJyZS1y ZXZlcnNlLWVsZW1lbnRzIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicmUtcmV2ZXJz ZS1lbGVtZW50cyIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxLCAyLCAzLCA0LCA1 LCA2LCA3LCA4LCA5LCAxMFxcXCkiIFwKLSsgICJwcmludCByZS1yZXZlcnNlLWVsZW1lbnRzIgot K2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMSIgInByaW50IGZpcnN0IHJlLXJldmVyc2Ut ZWxlbWVudCIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSgxMCkiICIgPSAxMCIgInByaW50IGxhc3Qg cmUtcmV2ZXJzZS1lbGVtZW50IgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJvZGQtZWxlbWVudHMiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJvZGQtZWxl bWVudHMiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBcXFwoMSwgMywgNSwgNywgOVxcXCki ICJwcmludCBvZGQtZWxlbWVudHMiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoMSkiICIgPSAxIiAi cHJpbnQgZmlyc3Qgb2RkLWVsZW1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoNSkiICIgPSA5 IiAicHJpbnQgbGFzdCBvZGQtZWxlbWVudCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAic2luZ2xlLWVsZW1lbnQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJzaW5nbGUtZWxlbWVudCIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCg1XFxcKSIg InByaW50IHNpbmdsZS1lbGVtZW50IgotK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gNSIg InByaW50IG9uZSBzaW5nbGUtZWxlbWVudCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt c3RyaWRlLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAKLUBAIC0wLDAgKzEsMjkgQEAK LSshIENvcHlyaWdodCAyMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSsh IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0r ISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rcHJvZ3JhbSB2bGFfc3RyaWRlCi0rICBp bnRlZ2VyLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZsYSAoOikKLSsgIGludGVnZXIsIHBvaW50 ZXIgOjogcHZsYSAoOikKLSsKLSsgIGFsbG9jYXRlKHZsYSgxMCkpCi0rICB2bGEgPSAoLyAoSSwg SSA9IDEsMTApIC8pCi0rCi0rICBwdmxhID0+IHZsYSgxMDoxOi0xKQotKyAgcHZsYSA9PiBwdmxh KDEwOjE6LTEpCi0rICBwdmxhID0+IHZsYSgxOjEwOjIpICAgISByZS1yZXZlcnNlLWVsZW1lbnRz Ci0rICBwdmxhID0+IHZsYSg1OjQ6LTIpICAgISBvZGQtZWxlbWVudHMKLSsKLSsgIHB2bGEgPT4g bnVsbCgpICAgICAgICAhIHNpbmdsZS1lbGVtZW50Ci0rZW5kIHByb2dyYW0gdmxhX3N0cmlkZQot ZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYwotLS0tIGEvZ2RiL3ZhbG9w cy5jCi0rKysgYi9nZGIvdmFsb3BzLmMKLUBAIC0zNzU2LDEzICszNzU2LDQyIEBAIHZhbHVlX29m X3RoaXNfc2lsZW50IChjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFuZykKLSAKLSBzdHJ1 Y3QgdmFsdWUgKgotIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91 bmQsIGludCBsZW5ndGgpCi0rewotKyAgLyogUGFzcyB1bmFsdGVyZWQgYXJndW1lbnRzIHRvIFZB TFVFX1NMSUNFXzEsIHBsdXMgYSBkZWZhdWx0IHN0cmlkZQotKyAgICAgdmFsdWUgb2YgJzEnLCB3 aGljaCByZXR1cm5zIGV2ZXJ5IGVsZW1lbnQgYmV0d2VlbiBMT1dCT1VORCBhbmQKLSsgICAgIChM T1dCT1VORCArIExFTkdUSCkuICBXZSBhbHNvIHByb3ZpZGUgYSBkZWZhdWx0IENBTExfQ09VTlQg b2YgJzEnCi0rICAgICBhcyB3ZSBhcmUgb25seSBjb25zaWRlcmluZyB0aGUgaGlnaGVzdCBkaW1l bnNpb24sIG9yIHdlIGFyZQotKyAgICAgd29ya2luZyBvbiBhIG9uZSBkaW1lbnNpb25hbCBhcnJh eS4gIFNvIHdlIGNhbGwgVkFMVUVfU0xJQ0VfMQotKyAgICAgZXhhY3RseSBvbmNlLiAgKi8KLSsg IHJldHVybiB2YWx1ZV9zbGljZV8xIChhcnJheSwgbG93Ym91bmQsIGxlbmd0aCwgMSwgMSk7Ci0r fQotKwotKy8qIFZBTFVFX1NMSUNFXzEgaXMgY2FsbGVkIGZvciBlYWNoIGFycmF5IGRpbWVuc2lv biB0byBjYWxjdWxhdGUgdGhlIG51bWJlcgotKyAgIG9mIGVsZW1lbnRzIGFzIGRlZmluZWQgYnkg dGhlIHN1YnNjcmlwdCBleHByZXNzaW9uLgotKyAgIENBTExfQ09VTlQgaXMgdXNlZCB0byBkZXRl cm1pbmUgaWYgd2UgYXJlIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIG9uY2UsIGUuZy4KLSsgICB3ZSBh cmUgd29ya2luZyBvbiB0aGUgY3VycmVudCBkaW1lbnNpb24gb2YgQVJSQVksIG9yIGlmIHdlIGFy ZSBjYWxsaW5nCi0rICAgdGhlIGZ1bmN0aW9uIHJlcGVhdGVkbHkuICBJbiB0aGUgbGF0ZXIgY2Fz ZSB3ZSBuZWVkIHRvIHRha2UgZWxlbWVudHMKLSsgICBmcm9tIHRoZSBUQVJHRVRfVFlQRSBvZiBB UlJBWS4KLSsgICBXaXRoIGEgQ0FMTF9DT1VOVCBncmVhdGVyIHRoYW4gMSB3ZSBjYWxjdWxhdGUg dGhlIG9mZnNldHMgZm9yIGV2ZXJ5IGVsZW1lbnQKLSsgICB0aGF0IHNob3VsZCBiZSBpbiB0aGUg cmVzdWx0IGFycmF5LiAgVGhlbiB3ZSBmZXRjaCB0aGUgY29udGVudHMgYW5kIHRoZW4KLSsgICBj b3B5IHRoZW0gaW50byB0aGUgcmVzdWx0IGFycmF5LiAgVGhlIHJlc3VsdCBhcnJheSB3aWxsIGhh dmUgb25lIGRpbWVuc2lvbgotKyAgIGxlc3MgdGhhbiB0aGUgaW5wdXQgYXJyYXksIHNvIGxhdGVy IG9uIHdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlIGluZGljZXMgYW5kCi0rICAgcmFuZ2VzIGluIHRo ZSBjYWxsaW5nIGZ1bmN0aW9uLiAgKi8KLSsKLStzdHJ1Y3QgdmFsdWUgKgotK3ZhbHVlX3NsaWNl XzEgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCwKLSsJICAg ICAgIGludCBzdHJpZGVfbGVuZ3RoLCBpbnQgY2FsbF9jb3VudCkKLSB7Ci0gICBzdHJ1Y3QgdHlw ZSAqc2xpY2VfcmFuZ2VfdHlwZSwgKnNsaWNlX3R5cGUsICpyYW5nZV90eXBlOwotLSAgTE9OR0VT VCBsb3dlcmJvdW5kLCB1cHBlcmJvdW5kOwotLSAgc3RydWN0IHZhbHVlICpzbGljZTsKLS0gIHN0 cnVjdCB0eXBlICphcnJheV90eXBlOwotKyAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOwotKyAgc3RydWN0IHR5cGUgKmVsdF90eXBl ID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwotKyAgdW5z aWduZWQgaW50IGVsdF9zaXplLCBlbHRfb2ZmczsKLSsgIExPTkdFU1QgYXJ5X2hpZ2hfYm91bmQs IGFyeV9sb3dfYm91bmQ7Ci0rICBzdHJ1Y3QgdmFsdWUgKnY7Ci0rICBpbnQgc2xpY2VfcmFuZ2Vf c2l6ZSwgaSA9IDAsIHJvd19jb3VudCA9IDEsIGVsZW1fY291bnQgPSAxOwotIAotLSAgYXJyYXlf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7Ci0rICAvKiBDaGVjayBm b3IgbGVnYWN5IGNvZGUgaWYgd2UgYXJlIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCBhbiBhcnJheSBv cgotKyAgICAgc3RyaW5nLiAgKi8KLSAgIGlmIChhcnJheV90eXBlLT5jb2RlICgpICE9IFRZUEVf Q09ERV9BUlJBWQotICAgICAgICYmIGFycmF5X3R5cGUtPmNvZGUgKCkgIT0gVFlQRV9DT0RFX1NU UklORykKLSAgICAgZXJyb3IgKF8oImNhbm5vdCB0YWtlIHNsaWNlIG9mIG5vbi1hcnJheSIpKTsK LUBAIC0zNzcyLDQ1ICszODAxLDE1NSBAQCB2YWx1ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJh eSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQotICAgaWYgKHR5cGVfbm90X2Fzc29jaWF0ZWQg KGFycmF5X3R5cGUpKQotICAgICBlcnJvciAoXygiYXJyYXkgbm90IGFzc29jaWF0ZWQiKSk7Ci0g Ci0tICByYW5nZV90eXBlID0gYXJyYXlfdHlwZS0+aW5kZXhfdHlwZSAoKTsKLS0gIGlmIChnZXRf ZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpIDwg MCkKLS0gICAgZXJyb3IgKF8oInNsaWNlIGZyb20gYmFkIGFycmF5IG9yIGJpdHN0cmluZyIpKTsK LSsgIGFyeV9sb3dfYm91bmQgPSBhcnJheV90eXBlLT5pbmRleF90eXBlICgpLT5ib3VuZHMgKCkt Pmxvdy5jb25zdF92YWwgKCk7Ci0rICBhcnlfaGlnaF9ib3VuZCA9IGFycmF5X3R5cGUtPmluZGV4 X3R5cGUgKCktPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0rCi0rICAvKiBXaGVuIHdl IGFyZSB3b3JraW5nIG9uIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXksIHdlIG5lZWQgdG8gZ2V0 IHRoZQotKyAgICAgYXR0cmlidXRlcyBvZiB0aGUgdW5kZXJseWluZyB0eXBlLiAgKi8KLSsgIGlm IChjYWxsX2NvdW50ID4gMSkKLSsgICAgewotKyAgICAgIGFyeV9sb3dfYm91bmQgPSBlbHRfdHlw ZS0+aW5kZXhfdHlwZSAoKS0+Ym91bmRzICgpLT5sb3cuY29uc3RfdmFsICgpOwotKyAgICAgIGFy eV9oaWdoX2JvdW5kID0gZWx0X3R5cGUtPmluZGV4X3R5cGUgKCktPmJvdW5kcyAoKS0+aGlnaC5j b25zdF92YWwgKCk7Ci0rICAgICAgZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdF VF9UWVBFIChlbHRfdHlwZSkpOwotKyAgICAgIHJvd19jb3VudCA9IFRZUEVfTEVOR1RIIChhcnJh eV90eXBlKQotKwkJICAgIC8gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5 cGUpKTsKLSsgICAgfQotKwotKyAgLyogV2l0aCBhIHN0cmlkZSBvZiAnMScsIHRoZSBudW1iZXIg b2YgZWxlbWVudHMgcGVyIHJlc3VsdCByb3cgaXMgZXF1YWwgdG8KLSsgICAgIHRoZSBMRU5HVEgg b2YgdGhlIHN1YmFycmF5LiAgV2l0aCBub24tZGVmYXVsdCBzdHJpZGUgdmFsdWVzLCB3ZSBza2lw Ci0rICAgICBlbGVtZW50cywgYnV0IGhhdmUgdG8gYWRkIHRoZSBzdGFydCBlbGVtZW50IHRvIHRo ZSB0b3RhbCBudW1iZXIgb2YKLSsgICAgIGVsZW1lbnRzIHBlciByb3cuICAqLwotKyAgaWYgKHN0 cmlkZV9sZW5ndGggPT0gMSkKLSsgICAgZWxlbV9jb3VudCA9IGxlbmd0aDsKLSsgIGVsc2UKLSsg ICAgZWxlbV9jb3VudCA9ICgobGVuZ3RoIC0gMSkgLyBzdHJpZGVfbGVuZ3RoKSArIDE7Ci0rCi0r ICBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7Ci0rICBlbHRfb2ZmcyA9IGxvd2Jv dW5kIC0gYXJ5X2xvd19ib3VuZDsKLSsKLSsgIGVsdF9vZmZzICo9IGVsdF9zaXplOwotIAotLSAg aWYgKGxvd2JvdW5kIDwgbG93ZXJib3VuZCB8fCBsZW5ndGggPCAwCi0tICAgICAgfHwgbG93Ym91 bmQgKyBsZW5ndGggLSAxID4gdXBwZXJib3VuZCkKLS0gICAgZXJyb3IgKF8oInNsaWNlIG91dCBv ZiByYW5nZSIpKTsKLSsgIC8qIENoZWNrIGZvciB2YWxpZCB1c2VyIGlucHV0LiAgSW4gY2FzZSBv ZiBGb3J0cmFuIHRoaXMgd2FzIGFscmVhZHkgZG9uZQotKyAgICAgaW4gdGhlIGNhbGxpbmcgZnVu Y3Rpb24uICAqLwotKyAgaWYgKGNhbGxfY291bnQgPT0gMQotKwkmJiAoIVRZUEVfQVJSQVlfVVBQ RVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQotKwkgICAgICAmJiBlbHRfb2ZmcyA+ PSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkpKQotKyAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0 b3IgZWxlbWVudCIpKTsKLSsKLSsgIC8qIENBTExfQ09VTlQgaXMgMSB3aGVuIHdlIGFyZSBkZWFs aW5nIGVpdGhlciB3aXRoIHRoZSBoaWdoZXN0IGRpbWVuc2lvbgotKyAgICAgb2YgdGhlIGFycmF5 LCBvciBhIG9uZSBkaW1lbnNpb25hbCBhcnJheS4gIFNldCBSQU5HRV9UWVBFIGFjY29yZGluZ2x5 LgotKyAgICAgSW4gYm90aCBjYXNlcyB3ZSBjYWxjdWxhdGUgaG93IG1hbnkgcm93cy9lbGVtZW50 cyB3aWxsIGJlIGluIHRoZSBvdXRwdXQKLSsgICAgIGFycmF5IGJ5IHNldHRpbmcgc2xpY2VfcmFu Z2Vfc2l6ZS4gICovCi0rICBpZiAoY2FsbF9jb3VudCA9PSAxKQotKyAgICB7Ci0rICAgICAgcmFu Z2VfdHlwZSA9IGFycmF5X3R5cGUtPmluZGV4X3R5cGUgKCk7Ci0rICAgICAgc2xpY2VfcmFuZ2Vf c2l6ZSA9IGFyeV9sb3dfYm91bmQgKyBlbGVtX2NvdW50IC0gMTsKLSsKLSsgICAgICAvKiBDaGVj ayBpZiB0aGUgYXJyYXkgYm91bmRzIGFyZSB2YWxpZC4gICovCi0rICAgICAgaWYgKGdldF9kaXNj cmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZhcnlfbG93X2JvdW5kLCAmYXJ5X2hpZ2hfYm91bmQp IDwgMCkKLSsJZXJyb3IgKF8oInNsaWNlIGZyb20gYmFkIGFycmF5IG9yIGJpdHN0cmluZyIpKTsK LSsgICAgfQotKyAgLyogV2hlbiBDQUxMX0NPVU5UIGlzIGdyZWF0ZXIgdGhhbiAxLCB3ZSBhcmUg ZGVhbGluZyB3aXRoIGFuIGFycmF5IG9mIGFycmF5cy4KLSsgICAgIFNvIHdlIG5lZWQgdG8gZ2V0 IHRoZSB0eXBlIGJlbG93IHRoZSBjdXJyZW50IG9uZSBhbmQgc2V0IHRoZSBSQU5HRV9UWVBFCi0r ICAgICBhY2NvcmRpbmdseS4gICovCi0rICBlbHNlCi0rICAgIHsKLSsgICAgICByYW5nZV90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSktPmluZGV4X3R5cGUgKCk7Ci0rICAgICAg c2xpY2VfcmFuZ2Vfc2l6ZSA9IGFyeV9sb3dfYm91bmQgKyAocm93X2NvdW50ICogZWxlbV9jb3Vu dCkgLSAxOwotKyAgICAgIGFyeV9sb3dfYm91bmQgPSByYW5nZV90eXBlLT5ib3VuZHMgKCktPmxv dy5jb25zdF92YWwgKCk7Ci0rICAgIH0KLSAKLSAgIC8qIEZJWE1FLXR5cGUtYWxsb2NhdGlvbjog bmVlZCBhIHdheSB0byBmcmVlIHRoaXMgdHlwZSB3aGVuIHdlIGFyZQotLSAgICAgZG9uZSB3aXRo IGl0LiAgKi8KLS0gIHNsaWNlX3JhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUg KE5VTEwsCi0tCQkJCQkgICAgICAgVFlQRV9UQVJHRVRfVFlQRSAocmFuZ2VfdHlwZSksCi0tCQkJ CQkgICAgICAgbG93Ym91bmQsCi0tCQkJCQkgICAgICAgbG93Ym91bmQgKyBsZW5ndGggLSAxKTsK LSsgICAgICBkb25lIHdpdGggaXQuICAqLwotIAotKyAgc2xpY2VfcmFuZ2VfdHlwZSA9IGNyZWF0 ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwgVFlQRV9UQVJHRVRfVFlQRSAocmFuZ2VfdHlwZSks Ci0rCQkJCQkgICAgICAgYXJ5X2xvd19ib3VuZCwgc2xpY2VfcmFuZ2Vfc2l6ZSk7Ci0gICB7Ci0t ICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90 eXBlKTsKLS0gICAgTE9OR0VTVCBvZmZzZXQKLS0gICAgICA9IChsb3dib3VuZCAtIGxvd2VyYm91 bmQpICogVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKGVsZW1lbnRfdHlwZSkpOwotKyAgICBz dHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlOwotIAotLSAgICBzbGljZV90eXBlID0gY3JlYXRlX2Fy cmF5X3R5cGUgKE5VTEwsCi0tCQkJCSAgICBlbGVtZW50X3R5cGUsCi0tCQkJCSAgICBzbGljZV9y YW5nZV90eXBlKTsKLS0gICAgc2xpY2VfdHlwZS0+c2V0X2NvZGUgKGFycmF5X3R5cGUtPmNvZGUg KCkpOwotKyAgICAvKiBXaGVuIGJvdGggQ0FMTF9DT1VOVCBhbmQgU1RSSURFX0xFTkdUSCBlcXVh bCAxLCB3ZSBjYW4gdXNlIHRoZSBsZWdhY3kKLSsgICAgICAgY29kZSBmb3Igc3ViYXJyYXlzLiAg Ki8KLSsgICAgaWYgKGNhbGxfY291bnQgPT0gMSAmJiBzdHJpZGVfbGVuZ3RoID09IDEpCi0rICAg ICAgewotKwllbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKTsKLSsK LSsJc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCBlbGVtZW50X3R5cGUsIHNs aWNlX3JhbmdlX3R5cGUpOwotKwotKwlzbGljZV90eXBlLT5zZXRfY29kZSAoYXJyYXlfdHlwZS0+ Y29kZSAoKSk7Ci0gCi0tICAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkg JiYgdmFsdWVfbGF6eSAoYXJyYXkpKQotLSAgICAgIHNsaWNlID0gYWxsb2NhdGVfdmFsdWVfbGF6 eSAoc2xpY2VfdHlwZSk7Ci0rCWlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkg JiYgdmFsdWVfbGF6eSAoYXJyYXkpKQotKwkgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5IChzbGlj ZV90eXBlKTsKLSsJZWxzZQotKwkgIHsKLSsJICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAoc2xpY2Vf dHlwZSk7Ci0rCSAgICB2YWx1ZV9jb250ZW50c19jb3B5ICh2LAotKwkJCQkgdmFsdWVfZW1iZWRk ZWRfb2Zmc2V0ICh2KSwKLSsJCQkJIGFycmF5LAotKwkJCQkgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0 IChhcnJheSkgKyBlbHRfb2ZmcywKLSsJCQkJIGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQgKGxl bmd0aCkpOwotKwkgIH0KLSsKLSsgICAgICB9Ci0rICAgIC8qIFdpdGggYSBDQUxMX0NPVU5UIG9y IFNUUklERV9MRU5HVEggYXJlIGdyZWF0ZXIgdGhhbiAxIHdlIGFyZSB3b3JraW5nCi0rICAgICAg IG9uIGEgcmFuZ2Ugb2YgcmFuZ2VzLiAgU28gd2UgY29weSB0aGUgcmVsZXZhbnQgZWxlbWVudHMg aW50byB0aGUKLSsgICAgICAgbmV3IGFycmF5IHdlIHJldHVybi4gICovCi0gICAgIGVsc2UKLSAg ICAgICB7Ci0tCXNsaWNlID0gYWxsb2NhdGVfdmFsdWUgKHNsaWNlX3R5cGUpOwotLQl2YWx1ZV9j b250ZW50c19jb3B5IChzbGljZSwgMCwgYXJyYXksIG9mZnNldCwKLS0JCQkgICAgIHR5cGVfbGVu Z3RoX3VuaXRzIChzbGljZV90eXBlKSk7Ci0rCWludCBqLCBvZmZzX3N0b3JlID0gZWx0X29mZnM7 Ci0rCUxPTkdFU1QgZHN0X29mZnNldCA9IDA7Ci0rCUxPTkdFU1Qgc3JjX3Jvd19sZW5ndGggPSBU WVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwotKwotKwlpZiAoY2Fs bF9jb3VudCA9PSAxKQotKwkgIHsKLSsJICAgIC8qIFdoZW4gQ0FMTF9DT1VOVCBpcyBlcXVhbCB0 byAxIHdlIGFyZSB3b3JraW5nIG9uIHRoZSBjdXJyZW50IHJhbmdlCi0rCSAgICAgICBhbmQgdXNl IHRoZXNlIGVsZW1lbnRzIGRpcmVjdGx5LiAgKi8KLSsJICAgIGVsZW1lbnRfdHlwZSA9IFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8q IFdvcmtpbmcgb24gYW4gYXJyYXkgb2YgYXJyYXlzLCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMg aXMgdGhlIHR5cGUKLSsJICAgICAgIG9mIHRoZSBzdWJhcnJheXMnIHR5cGUuICAqLwotKwkgICAg ZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlf dHlwZSkpOwotKwkgIH0KLSsKLSsJc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxM LCBlbGVtZW50X3R5cGUsIHNsaWNlX3JhbmdlX3R5cGUpOwotKwotKwkgLyogSWYgd2UgaGF2ZSBh IG9uZSBkaW1lbnNpb25hbCBhcnJheSwgd2UgY29weSBpdHMgdHlwZSBjb2RlLiAgRm9yIGEKLSsJ ICAgIG11bHRpIGRpbWVuc2lvbmFsIGFycmF5IHdlIGNvcHkgdGhlIGVtYmVkZGVkIHR5cGUncyB0 eXBlIGNvZGUuICAqLwotKwlpZiAoY2FsbF9jb3VudCA9PSAxKQotKwkgIHNsaWNlX3R5cGUtPnNl dF9jb2RlIChhcnJheV90eXBlLT5jb2RlICgpKTsKLSsJZWxzZQotKwkgIHNsaWNlX3R5cGUtPnNl dF9jb2RlICgoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSktPmNvZGUgKCkpKTsKLSsKLSsJ diA9IGFsbG9jYXRlX3ZhbHVlIChzbGljZV90eXBlKTsKLSsKLSsJLyogSXRlcmF0ZSB0aHJvdWdo IHRoZSByb3dzIG9mIHRoZSBvdXRlciBhcnJheSBhbmQgc2V0IHRoZSBuZXcgb2Zmc2V0Ci0rCSAg IGZvciBlYWNoIHJvdy4gICovCi0rCWZvciAoaSA9IDA7IGkgPCByb3dfY291bnQ7IGkrKykKLSsJ ICB7Ci0rCSAgICBlbHRfb2ZmcyA9IG9mZnNfc3RvcmUgKyBpICogc3JjX3Jvd19sZW5ndGg7Ci0r Ci0rCSAgICAvKiBJdGVyYXRlIHRocm91Z2ggdGhlIGVsZW1lbnRzIGluIGVhY2ggcm93IHRvIGNv cHkgb25seSB0aG9zZS4gICovCi0rCSAgICBmb3IgKGogPSAxOyBqIDw9IGVsZW1fY291bnQ7IGor KykKLSsJICAgICAgewotKwkJLyogRmV0Y2hlcyB0aGUgY29udGVudHMgb2YgQVJSQVkgYW5kIGNv cGllcyB0aGVtIGludG8gVi4gICovCi0rCQl2YWx1ZV9jb250ZW50c19jb3B5ICh2LCBkc3Rfb2Zm c2V0LCBhcnJheSwgZWx0X29mZnMsIGVsdF9zaXplKTsKLSsJCWVsdF9vZmZzICs9IGVsdF9zaXpl ICogc3RyaWRlX2xlbmd0aDsKLSsJCWRzdF9vZmZzZXQgKz0gZWx0X3NpemU7Ci0rCSAgICAgIH0K LSsJICB9Ci0gICAgICAgfQotIAotLSAgICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChz bGljZSwgYXJyYXkpOwotLSAgICBzZXRfdmFsdWVfb2Zmc2V0IChzbGljZSwgdmFsdWVfb2Zmc2V0 IChhcnJheSkgKyBvZmZzZXQpOwotKyAgICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uICh2 LCBhcnJheSk7Ci0rICAgIGlmIChWQUxVRV9MVkFMICh2KSA9PSBsdmFsX3JlZ2lzdGVyKQotKyAg ICAgIHsKLSsJVkFMVUVfUkVHTlVNICh2KSA9IFZBTFVFX1JFR05VTSAoYXJyYXkpOwotKwlWQUxV RV9ORVhUX0ZSQU1FX0lEICh2KSA9IFZBTFVFX05FWFRfRlJBTUVfSUQgKGFycmF5KTsKLSsgICAg ICB9Ci0rICAgIHNldF92YWx1ZV9vZmZzZXQgKHYsIHZhbHVlX29mZnNldCAoYXJyYXkpICsgZWx0 X29mZnMpOwotICAgfQotIAotLSAgcmV0dXJuIHNsaWNlOwotKyAgcmV0dXJuIHY7Ci0gfQotIAot IC8qIFNlZSB2YWx1ZS5oLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvdmFsdWUuaCBiL2dkYi92YWx1 ZS5oCi0tLS0gYS9nZGIvdmFsdWUuaAotKysrIGIvZ2RiL3ZhbHVlLmgKLUBAIC0xMTQ0LDYgKzEx NDQsOCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YXJ5aW5nX3RvX3NsaWNlIChzdHJ1Y3QgdmFs dWUgKik7Ci0gCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1 ZSAqLCBpbnQsIGludCk7Ci0gCi0rZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfc2xpY2VfMSAo c3RydWN0IHZhbHVlICosIGludCwgaW50LCBpbnQsIGludCk7Ci0rCi0gLyogQ3JlYXRlIGEgY29t cGxleCBudW1iZXIuICBUaGUgdHlwZSBpcyB0aGUgY29tcGxleCB0eXBlOyB0aGUgdmFsdWVzCi0g ICAgYXJlIGNhc3QgdG8gdGhlIHVuZGVybHlpbmcgc2NhbGFyIHR5cGUgYmVmb3JlIHRoZSBjb21w bGV4IG51bWJlciBpcwotICAgIGNyZWF0ZWQuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50 ZWwtc3RyaW5nYnQtZml4LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC1zdHJpbmdidC1maXgucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwY2IzZmUuLjAwMDAwMDAKLS0tIGEvZ2Ri LXZsYS1pbnRlbC1zdHJpbmdidC1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAs MCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAx IEF1ZyAyMDE0IDIzOjAyOjE3ICswMjAwCi1TdWJqZWN0OiBnZGItdmxhLWludGVsLXN0cmluZ2J0 LWZpeC5wYXRjaAotCi07Oz1wdXNoK2phbgotCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAxNC0wOC9tc2cwMDAyNS5odG1sCi0KLU9uIEZyaSwgMDEgQXVnIDIwMTQgMDk6 MjA6MTkgKzAyMDAsIEtldmVuIEJvZWxsIHdyb3RlOgotPiBJIGp1c3QgdHJpZWQgaXQgb24gRmVk b3JhIDIwIGk2ODYuICBBcHBsaWVkIHRoZSBwYXRjaCwgeW91IG1lbnRpb25lZCwgb24gdG9wIG9m Ci0+IHRoZSBGb3J0cmFuIFZMQSBzZXJpZXMgYW5kIGV4ZWN1dGVkIHlvdXIgZHluYW1pYy1vdGhl ci1mcmFtZSB0ZXN0LiAgRXZlcnl0aGluZwotPiBpcyB3b3JraW5nIGZpbmUgaGVyZSwgSSBjYW5u b3QgcmVwcm9kdWNlIHRoZSBjcmFzaC4KLQotSSBoYXZlIGl0IHJlcHJvZHVjaWJsZSBvbiBGZWRv cmEgMjAgaTY4NiB3aXRoIHBsYWluCi1DRkxBR1M9LWcgLi9jb25maWd1cmU7bWFrZTtjZCBnZGIv dGVzdHN1aXRlO21ha2Ugc2l0ZS5leHA7cnVudGVzdCBnZGIuZm9ydHJhbi9keW5hbWljLW90aGVy LWZyYW1lLmV4cAotCi1CZXNpZGVzIHRoYXQgSSBoYXZlIHVwZGF0ZWQgdGhlIHRlc3RjYXNlIHdp dGgKLQlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBwcmludCBmcmFtZS1hcmd1bWVudHMgYWxsIgot c28gdGhhdCB0aGVyZSBpcyBubyBsb25nZXIgbmVlZGVkIHRoZSBwYXRjaDoKLQlbcGF0Y2hdIERp c3BsYXkgRm9ydHJhbiBzdHJpbmdzIGluIGJhY2t0cmFjZXMKLQlodHRwczovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDcvbXNnMDA3MDkuaHRtbAotCi1UaGUgZml4IGJlbG93 IGhhcyBubyByZWdyZXNzaW9ucyBmb3IgbWUuICBVbmZvcnR1bmF0ZWx5IEkgZG8gbm90IHNlZSB3 aHkgeW91Ci1jYW5ub3QgcmVwcm9kdWNlIGl0LgotCi1UaGFua3MsCi1KYW4KLQotZGlmZiAtLWdp dCBhL2dkYi9kd2FyZjIvbG9jLmMgYi9nZGIvZHdhcmYyL2xvYy5jCi0tLS0gYS9nZGIvZHdhcmYy L2xvYy5jCi0rKysgYi9nZGIvZHdhcmYyL2xvYy5jCi1AQCAtMjI0OSw2ICsyMjQ5LDIwIEBAIGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLAotICAgY3R4LnBlcl9jdSA9IHBlcl9jdTsKLSAgIGN0eC5vYmpfYWRk cmVzcyA9IDA7Ci0gCi0rZnJhbWVfaWQgb2xkX2ZyYW1lX2lkIChnZXRfZnJhbWVfaWQgKGRlcHJl Y2F0ZWRfc2FmZV9nZXRfc2VsZWN0ZWRfZnJhbWUgKCkpKTsKLStjbGFzcyBSZXN0b3JlQ2FsbCB7 Ci0rcHJpdmF0ZToKLSsgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuYzsKLStwdWJs aWM6Ci0rICBSZXN0b3JlQ2FsbChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmNfKTpmdW5jKGZ1 bmNfKSB7fQotKyAgflJlc3RvcmVDYWxsKCkgeyBmdW5jKCk7IH0KLSt9IHJlc3RvcmVfZnJhbWUo Wz1dKCkgewotKyAgZnJhbWVfaW5mbyAqb2xkX2ZyYW1lIChmcmFtZV9maW5kX2J5X2lkIChvbGRf ZnJhbWVfaWQpKTsKLSsgIGlmIChvbGRfZnJhbWUgIT0gTlVMTCkKLSsgICAgc2VsZWN0X2ZyYW1l IChvbGRfZnJhbWUpOwotK30pOwotK2lmIChmcmFtZSAhPSBOVUxMKSBzZWxlY3RfZnJhbWUgKGZy YW1lKTsKLSsKLSAgIHNjb3BlZF92YWx1ZV9tYXJrIGZyZWVfdmFsdWVzOwotIAotICAgY3R4Lmdk YmFyY2ggPSBwZXJfb2JqZmlsZS0+b2JqZmlsZS0+YXJjaCAoKTsKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAKLUBAIC0wLDAgKzEsMjQgQEAKLSsh IENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxlIGlz IHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFsIGZp bGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1vZGlm aWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5lIGJhcgotKyAgcmVhbCA6OiBkdW1teQotKyAg ZHVtbXkgPSAxCi0rZW5kIHN1YnJvdXRpbmUgYmFyCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3Ro ZXItZnJhbWUuZXhwCi1AQCAtMCwwICsxLDM5IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuCi0rCi0rc2V0IHRlc3RmaWxlICJkeW5hbWljLW90aGVyLWZyYW1lIgotK3Nl dCBzcmNmaWxlMSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgc3JjZmlsZTIgJHt0ZXN0ZmlsZX0tc3R1 Yi5mOTAKLStzZXQgb2JqZmlsZTIgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9LXN0 dWIub10KLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQotK3NldCBiaW5maWxlIFtzdGFuZGFy ZF9vdXRwdXRfZmlsZSAke2V4ZWN1dGFibGV9XQotKwotK2lmIHsgW2dkYl9jb21waWxlICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZTJ9IiAiJHtvYmpmaWxlMn0iIG9iamVjdCB7ZjkwfV0g IT0gIiIKLSsgICAgIHx8IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2Zp bGUxfSAke29iamZpbGUyfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9 ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGUxfSBvciAk e3NyY2ZpbGUyfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jlc3RhcnQgJHtleGVj dXRhYmxlfQotKwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHByaW50IGZyYW1lLWFyZ3VtZW50 cyBhbGwiCi0rCi0raWYgIVtydW50byBiYXJfXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4n dCBydW4gdG8gYmFyXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rlc3QgImJ0IiB7Zm9v IFwoc3RyaW5nPSdoZWxsbycuKn0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k eW5hbWljLW90aGVyLWZyYW1lLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5m OTAKLUBAIC0wLDAgKzEsMzYgQEAKLSshIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24sIElu Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV U0EuCi0rIQotKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5h bWljLmV4cC4KLSshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1 YkByZWRoYXQuY29tPi4KLSshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBL cmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5lIGZv byAoc3RyaW5nKQotKyAgaW50ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgYmFyCi0rICAgIGVuZCBz dWJyb3V0aW5lCi0rICBlbmQgaW50ZXJmYWNlCi0rICBjaGFyYWN0ZXIgc3RyaW5nKigqKQotKyAg Y2FsbCBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgc3RvcC1oZXJlCi0rZW5k IHN1YnJvdXRpbmUgZm9vCi0rcHJvZ3JhbSB0ZXN0Ci0rICBpbnRlcmZhY2UKLSsgICAgc3Vicm91 dGluZSBmb28gKHN0cmluZykKLSsgICAgY2hhcmFjdGVyIHN0cmluZyooKikKLSsgICAgZW5kIHN1 YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGNhbGwgZm9vICgnaGVsbG8nKQotK2VuZAoK ZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtdGVzdHMucGF0Y2ggYi9nZGItdmxhLWludGVsLXRl c3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmZlYmI2Li4wMDAwMDAw Ci0tLSBhL2dkYi12bGEtaW50ZWwtdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkg KzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IEZlZG9yYSBHREIgcGF0Y2hlcyA8aW52YWxpZEBlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI3 IE9jdCAyMDE3IDIxOjA3OjUwICswMjAwCi1TdWJqZWN0OiBnZGItdmxhLWludGVsLXRlc3RzLnBh dGNoCi0KLTs7PWZlZG9yYXRlc3QKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLWZ1bmMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5l eHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmV4cAotQEAgLTAsMCArMSw2MSBAQAotKyMgQ29weXJp Z2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotKwotK2lmIHsg W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmls ZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsK LStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRv IGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIENoZWNrIFZMQSBw YXNzZWQgdG8gZmlyc3QgRm9ydHJhbiBmdW5jdGlvbi4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiZnVuYzEtdmxhLXBhc3NlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImZ1bmMxLXZsYS1wYXNzZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYSIgIiA9IFxcKCAq XFwoICoyMiwgKjIyLCAqMjIsXFsoKTIyLCAuXF0qXFwpIiBcCi0rICAicHJpbnQgdmxhIChmdW5j MSkiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCks IGFsbG9jYXRhYmxlIFxcXCgxMCwxMFxcXCkiIFwKLSsgICJwdHlwZSB2bGEgKGZ1bmMxKSIKLSsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtdmxhLW1vZGlmaWVk Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzEtdmxhLW1vZGlmaWVkIgotK2dk Yl90ZXN0ICJwcmludCB2bGEoNSw1KSIgIiA9IDU1IiAicHJpbnQgdmxhKDUsNSkgKGZ1bmMxKSIK LStnZGJfdGVzdCAicHJpbnQgdmxhKDcsNykiICIgPSA3NyIgInByaW50IHZsYSg1LDUpIChmdW5j MSkiCi0rCi0rIyBDaGVjayBpZiB0aGUgdmFsdWVzIGFyZSBjb3JyZWN0IGFmdGVyIHJldHVybmlu ZyBmcm9tIGZ1bmMxCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZ1bmMx LXJldHVybmVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzEtcmV0dXJuZWQi Ci0rZ2RiX3Rlc3QgInByaW50IHJldCIgIiA9IC5UUlVFLiIgInByaW50IHJldCBhZnRlciBmdW5j MSByZXR1cm5lZCIKLSsKLSsjIENoZWNrIFZMQSBwYXNzZWQgdG8gc2Vjb25kIEZvcnRyYW4gZnVu Y3Rpb24KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzItdmxhLXBh c3NlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImZ1bmMyLXZsYS1wYXNzZWQiCi0r Z2RiX3Rlc3QgInByaW50IHZsYSIgXAotKyAgIiA9IFxcXCg0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0 LCA0NCwgNDQsIDQ0LCA0NFxcXCkiIFwKLSsgICJwcmludCB2bGEgKGZ1bmMyKSIKLStnZGJfdGVz dCAicHR5cGUgdmxhIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSBcXFwoMTBcXFwpIiBc Ci0rICAicHR5cGUgdmxhIChmdW5jMikiCi0rCi0rIyBDaGVjayBpZiB0aGUgcmV0dXJuZWQgVkxB IGhhcyB0aGUgY29ycmVjdCB2YWx1ZXMgYW5kIHB0eXBlLgotK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJmdW5jMi1yZXR1cm5lZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImZ1bmMyLXJldHVybmVkIgotK2dkYl90ZXN0ICJwcmludCB2bGEzIiAiID0gXFxcKDEs IDIsIDQ0LCA0LCA0NCwgNDQsIDQ0LCA4LCA0NCwgNDRcXFwpIiBcCi0rICAicHJpbnQgdmxhMyAo YWZ0ZXIgZnVuYzIpIgotK2dkYl90ZXN0ICJwdHlwZSB2bGEzIiAidHlwZSA9IGludGVnZXJcXFwo a2luZD00XFxcKSwgYWxsb2NhdGFibGUgXFxcKDEwXFxcKSIgXAotKyAgInB0eXBlIHZsYTMgKGFm dGVyIGZ1bmMyKSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1m dW5jLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZjkwCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtZnVuYy5mOTAKLUBAIC0wLDAgKzEsNzEgQEAKLSshIENvcHlyaWdodCAyMDE0IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsh IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rbG9naWNhbCBmdW5jdGlvbiBmdW5jMSAodmxhKQotKyAg aW1wbGljaXQgbm9uZQotKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogdmxhICg6LCA6KQotKyAg ZnVuYzEgPSBhbGxvY2F0ZWQodmxhKQotKyAgdmxhKDUsNSkgPSA1NSAgICAgICAgICAgICAgICEg ZnVuYzEtdmxhLXBhc3NlZAotKyAgdmxhKDcsNykgPSA3NwotKyAgcmV0dXJuICAgICAgICAgICAg ICAgICAgICAgICEgZnVuYzEtdmxhLW1vZGlmaWVkCi0rZW5kIGZ1bmN0aW9uIGZ1bmMxCi0rCi0r ZnVuY3Rpb24gZnVuYzIodmxhKQotKyAgaW1wbGljaXQgbm9uZQotKyAgaW50ZWdlciA6OiB2bGEg KDopCi0rICBpbnRlZ2VyIDo6IGZ1bmMyKHNpemUodmxhKSkKLSsgIGludGVnZXIgOjogawotKwot KyAgdmxhKDEpID0gMSAgICAgICAgICAgICAgICAgICAgISBmdW5jMi12bGEtcGFzc2VkCi0rICB2 bGEoMikgPSAyCi0rICB2bGEoNCkgPSA0Ci0rICB2bGEoOCkgPSA4Ci0rCi0rICBmdW5jMiA9IHZs YQotK2VuZCBmdW5jdGlvbiBmdW5jMgotKwotK3Byb2dyYW0gdmxhX2Z1bmMKLSsgIGltcGxpY2l0 IG5vbmUKLSsgIGludGVyZmFjZQotKyAgICBsb2dpY2FsIGZ1bmN0aW9uIGZ1bmMxICh2bGEpCi0r ICAgICAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogdmxhICg6LCA6KQotKyAgICBlbmQgZnVuY3Rp b24KLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGludGVyZmFjZQotKyAgICBmdW5jdGlvbiBmdW5jMiAo dmxhKQotKyAgICAgIGludGVnZXIgOjogdmxhICg6KQotKyAgICAgIGludGVnZXIgZnVuYzIoc2l6 ZSh2bGEpKQotKyAgICBlbmQgZnVuY3Rpb24KLSsgIGVuZCBpbnRlcmZhY2UKLSsKLSsgIGxvZ2lj YWwgOjogcmV0Ci0rICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6LCA6KQotKyAgaW50 ZWdlciwgYWxsb2NhdGFibGUgOjogdmxhMiAoOikKLSsgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6 IHZsYTMgKDopCi0rCi0rICByZXQgPSAuRkFMU0UuCi0rCi0rICBhbGxvY2F0ZSAodmxhMSAoMTAs MTApKQotKyAgdmxhMSg6LDopID0gMjIKLSsKLSsgIGFsbG9jYXRlICh2bGEyICgxMCkpCi0rICB2 bGEyKDopID0gNDQKLSsKLSsgIHJldCA9IGZ1bmMxKHZsYTEpCi0rICB2bGEzID0gZnVuYzIodmxh MikgICAgICAgICAgISBmdW5jMS1yZXR1cm5lZAotKwotKyAgcmV0ID0gLlRSVUUuICAgICAgICAg ICAgICAgICEgZnVuYzItcmV0dXJuZWQKLStlbmQgcHJvZ3JhbSB2bGFfZnVuYwoKZGlmZiAtLWdp dCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggZmViM2RhYy4uY2VkMWY3NSAxMDA2NDQKLS0t IGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTEsNCArMSwzIEBACi0lZ2xvYmFsIF93aXRo b3V0X3B5dGhvbiAxCiAjIHJwbWJ1aWxkIHBhcmFtZXRlcnM6CiAjIC0td2l0aCB0ZXN0c3VpdGU6 IFJ1biB0aGUgdGVzdHN1aXRlIChiaWFyY2ggaWYgcG9zc2libGUpLiAgRGVmYXVsdCBpcyB3aXRo b3V0LgogIyAtLXdpdGggYnVpbGRpc2E6IFVzZSAlJXs/X2lzYX0gZm9yIEJ1aWxkUmVxdWlyZXMK QEAgLTM0LDExICszMywxMSBAQCBOYW1lOiAlez9zY2xfcHJlZml4fWdkYgogIyBTZWUgdGltZXN0 YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGludG8gZ251bGliLyAuCiAlZ2xvYmFsIHNu YXBnbnVsaWIgMjAyMDA2MzAKICVnbG9iYWwgdGFybmFtZSBnZGItJXt2ZXJzaW9ufQotVmVyc2lv bjogMTAuMQorVmVyc2lvbjogMTAuMgogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBh IGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlz IG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21w YXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDE5JXs/ZGlzdH0KK1JlbGVhc2U6IDEl ez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5k IEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBh bmQgTEdQTHYzKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluIGFuZCBHRkRMCiAjIERvIG5vdCBw cm92aWRlIFVSTCBmb3Igc25hcHNob3RzIGFzIHRoZSBmaWxlIGxhc3RzIHRoZXJlIG9ubHkgZm9y IDIgZGF5cy4KQEAgLTE5NiwxNiArMTk1LDYgQEAgU291cmNlNzogdiV7bGliaXB0X3ZlcnNpb259 LnRhci5negogIz1mZWRvcmEKIFBhdGNoMTE0MjogdjEuNS1saWJpcHQtc3RhdGljLnBhdGNoCiAK LSMjIFt0ZXN0c3VpdGVdIEZpeCBmYWxzZSBzZWxmdGVzdC5leHAgRkFJTCBmcm9tIHN5c3RlbSBy ZWFkbGluZS02LjMrIChQYXRyaWNrIFBhbGthKS4KLSMjPWZlZG9yYXRlc3QKLSNQYXRjaDEwNzU6 IGdkYi10ZXN0c3VpdGUtcmVhZGxpbmU2My1zaWdpbnQucGF0Y2gKLSMjPWZlZG9yYXRlc3QKLVBh dGNoMTExOTogZ2RiLXRlc3RzdWl0ZS1yZWFkbGluZTYzLXNpZ2ludC1yZXZlcnQucGF0Y2gKLQot IyBGaXggYnJva2VuIGNvbmZpZ3VyZSB0ZXN0cyBjb21wcm9taXNlZCBieSBMVE8KLSNwdXNoPVNo b3VsZCBiZSBwdXNoZWQgdXBzdHJlYW0uCi1QYXRjaDIwMDA6IGdkYi1jb25maWcucGF0Y2gKLQog IyBJbmNsdWRlIHRoZSBhdXRvLWdlbmVyYXRlZCBmaWxlIGNvbnRhaW5pbmcgdGhlICJQYXRjaDoi IGRpcmVjdGl2ZXMuCiAjIFNlZSBSRUFETUUubG9jYWwtcGF0Y2hlcyBmb3IgbW9yZSBkZXRhaWxz LgogUGF0Y2g5OTk4OiBfZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAtNDgxLDIzICs0NzAsNiBA QCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogIyBTZWUgUkVBRE1FLmxvY2FsLXBh dGNoZXMgZm9yIG1vcmUgZGV0YWlscy4KICVpbmNsdWRlICV7UEFUQ0g5OTk5fQogCi0laWYgMCV7 IT9lbDY6MX0KLWZvciBpIGluIFwKLSAgZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5w eSBcCi0gIGdkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkgXAotICBnZGIvcHl0aG9uL2xp Yi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgXAotICA7ZG8KLSAgdGVzdCAtZSAkaQotICA6ID4k aQotZG9uZQotJWVuZGlmCi0KLSVpZiAwJXs/cmhlbDoxfSAmJiAwJXs/cmhlbH0gPD0gNwotJXBh dGNoMTExOSAtcDEKLSVlbmRpZgotCi0lcGF0Y2gyMDAwIC1wMQotCiAjIFRoZSBhYm92ZSBwYXRj aGVzIHR3aWRkbGUgYSAubTQgZmlsZSBmb3IgY29uZmlndXJlLCBzbyB1cGRhdGUgdGhlIGFmZmVj dGVkCiAjIGNvbmZpZ3VyZSBmaWxlcwogcHVzaGQgbGliaWJlcnR5CkBAIC03OTUsOCArNzY3LDYg QEAgcGVybCAtaS5yZWxvY2F0YWJsZSAtcGUgJ3MvXihEXFsiLipfUkVMT0NBVEFCTEUiXF09IiAp MSgiKSQvJHsxfTAkMi8nIGdkYi9jb25maWcKICVtYWtlX2J1aWxkIENGTEFHUz0iJENGTEFHUyAk RlBST0ZJTEVfQ0ZMQUdTIiBMREZMQUdTPSIkTERGTEFHUyAkRlBST0ZJTEVfQ0ZMQUdTIiBWPTEK IAogISBncmVwICdfUkVMT0NBVEFCTEUuKjEnIGdkYi9jb25maWcuaAotZ3JlcCAnXiNkZWZpbmUg SEFWRV9MSUJTRUxJTlVYIDEkJyBnZGIvY29uZmlnLmgKLWdyZXAgJ14jZGVmaW5lIEhBVkVfU0VM SU5VWF9TRUxJTlVYX0ggMSQnIGdkYi9jb25maWcuaAogCiBpZiBbICIkZnByb2ZpbGUiID0gIi1m cHJvZmlsZSIgXQogdGhlbgpAQCAtMTA3OCwxMyArMTA0OCw2IEBAIHJtIC1mICRSUE1fQlVJTERf Uk9PVCV7X2RhdGFkaXJ9L2dkYi9zeXN0ZW0tZ2RiaW5pdC9lbGlub3MucHkKIHJtIC1mICRSUE1f QlVJTERfUk9PVCV7X2RhdGFkaXJ9L2dkYi9zeXN0ZW0tZ2RiaW5pdC93cnMtbGludXgucHkKIHJt ZGlyICRSUE1fQlVJTERfUk9PVCV7X2RhdGFkaXJ9L2dkYi9zeXN0ZW0tZ2RiaW5pdAogCi0jIFBh dGNoODQ4OiBnZGItZHRzLXJoZWw2LXB5dGhvbi1jb21wYXQucGF0Y2gKLSVpZiAwJXshP2VsNjox fQotcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vZ2RiL3B5dGhvbi9nZGIvRnJhbWVX cmFwcGVyLnB5Ci1ybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9nZGIvcHl0aG9uL2dk Yi9iYWNrdHJhY2UucHkKLXJtIC1mICRSUE1fQlVJTERfUk9PVCV7X2RhdGFkaXJ9L2dkYi9weXRo b24vZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5Ci0lZW5kaWYKLQogJWZpbGVzCiAjIEZpbGUgbXVz dCBiZWdpbiB3aXRoICIvIjoge0dGREwsQ09QWUlORzMsQ09QWUlORyxDT1BZSU5HLkxJQixDT1BZ SU5HMy5MSUJ9CiAlaWYgMCV7IT9lbDY6MX0KQEAgLTExOTEsNiArMTE1NCw0MyBAQCBmaQogJWVu ZGlmCiAKICVjaGFuZ2Vsb2cKKyogVGh1IEp1biAwMyAyMDIxIEtldmluIEJ1ZXR0bmVyIDxrZXZp bmJAcmVkaGF0LmNvbT4gLSAxMC4yLTEKKy0gUmViYXNlIHRvIEZTRiBHREIgMTAuMi4KKy0gRHJv cCBnZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoLgorLSBEcm9wIGdkYi02LjMtdGVzdC1z ZWxmLTIwMDUwMTEwLnBhdGNoLgorLSBEcm9wIGdkYi02LjUtYnoyMTgzNzktcHBjLXNvbGliLXRy YW1wb2xpbmUtdGVzdC5wYXRjaC4KKy0gRHJvcCBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUt YXMtYXJnLnBhdGNoLgorLSBEcm9wIGdkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2guCist IERyb3AgZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2guCistIERyb3Ag Z2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoLgorLSBEcm9wIGdkYi1hcmNoZXItdmxhLXRlc3Rz LnBhdGNoLgorLSBEcm9wIGdkYi1hcmNoZXIucGF0Y2guCistIERyb3AgZ2RiLWF0dGFjaC1mYWls LXJlYXNvbnMtNW9mNS5wYXRjaC4KKy0gRHJvcCBnZGItYnRyb2J1c3QucGF0Y2guCistIERyb3Ag Z2RiLWJ6MTIxOTc0Ny1hdHRhY2gta2lsbHMucGF0Y2guCistIERyb3AgZ2RiLWJ6NTMzMTc2LWZv cnRyYW4tb21wLXN0ZXAucGF0Y2guCistIERyb3AgZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0 LnBhdGNoLgorLSBEcm9wIGdkYi1nbmF0LWR3YXJmLWNyYXNoLTNvZjMucGF0Y2guCistIERyb3Ag Z2RiLWppdC1yZWFkZXItbXVsdGlsaWIucGF0Y2guCistIERyb3AgZ2RiLW1vcmlidW5kLXV0cmFj ZS13b3JrYXJvdW5kLnBhdGNoLgorLSBEcm9wIGdkYi1yaGJ6MTkzMDUyOC1maXgtZ251bGliLWJ1 aWxkLWVycm9yLnBhdGNoLgorLSBEcm9wIGdkYi1yaGJ6MTkzMjY0NS1hYXJjaDY0LXB0cmFjZS1o ZWFkZXItb3JkZXIucGF0Y2guCistIERyb3AgZ2RiLXZsYS1pbnRlbC1maXgtcHJpbnQtY2hhci1h cnJheS5wYXRjaC4KKy0gRHJvcCBnZGItdmxhLWludGVsLWZvcnRyYW4tc3RyaWRlcy5wYXRjaC4K Ky0gRHJvcCBnZGItdmxhLWludGVsLXN0cmluZ2J0LWZpeC5wYXRjaC4KKy0gRHJvcCBnZGItdmxh LWludGVsLXRlc3RzLnBhdGNoLgorLSBEcm9wIHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQtdHlw ZS11bml0LnBhdGNoLgorLSBEcm9wIGdkYi10ZXN0c3VpdGUtcmVhZGxpbmU2My1zaWdpbnQtcmV2 ZXJ0LnBhdGNoLgorLSBEcm9wIGdkYi1jb25maWcucGF0Y2guCistIEFkZCBmb2xsb3dpbmcgdXBz dHJlYW0gcGF0Y2hlcyBmb3IgRm9ydHJhbiBzdHJpZGUgLyBzbGljZSBzdXBwb3J0OgorICBnZGIt cmhiejE5NjQxNjctY29udmVydC1lbnVtLXJhbmdlX3R5cGUucGF0Y2gKKyAgZ2RiLXJoYnoxOTY0 MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaAorICBnZGItcmhiejE5NjQx NjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Npb25zLnBhdGNoCisgIGdkYi1yaGJ6 MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Npb24tZXZhbHVhdGlvbi5wYXRj aAorICBnZGItcmhiejE5NjQxNjctZm9ydHJhbi1yYW5nZV90eXBlLXRvLXJhbmdlX2ZsYWcucGF0 Y2gKKyAgZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4td2hpdGVzcGFjZV9hcnJheS5wYXRjaAorICBn ZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFuLWV4cHItaGFuZGxpbmcucGF0Y2gKKwogKiBUdWUg SnVuIDAxIDIwMjEgUHl0aG9uIE1haW50IDxweXRob24tbWFpbnRAcmVkaGF0LmNvbT4KIC0gQm9v dHN0cmFwIGZvciBQeXRob24gMy4xMAogCgpkaWZmIC0tZ2l0IGEvcHJvY2Vzc19wc3ltdGFiX2Nv bXBfdW5pdC10eXBlLXVuaXQucGF0Y2ggYi9wcm9jZXNzX3BzeW10YWJfY29tcF91bml0LXR5cGUt dW5pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY1NzJjMC4uMDAwMDAw MAotLS0gYS9wcm9jZXNzX3BzeW10YWJfY29tcF91bml0LXR5cGUtdW5pdC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBLZWl0aCBTZWl0eiA8a2VpdGhzQHJlZGhhdC5jb20+Ci1EYXRl OiBUdWUsIDIzIE1hciAyMDIxIDExOjE3OjI4IC0wNzAwCi1TdWJqZWN0OiBwcm9jZXNzX3BzeW10 YWJfY29tcF91bml0LXR5cGUtdW5pdC5wYXRjaAotCi07OyBCYWNrcG9ydCAiSGFuZGxlIERXX1RB R190eXBlX3VuaXQgaW4gcHJvY2Vzc19zeW10YWJfdW5pdCIKLTs7IChUb20gZGUgVnJpZXMpCi0K LSAgY29tbWl0IGU3N2IwMDA0ZGQxMTRkNmRkZjNiYjkyYjUyMWIyODU0MzQxZjNmODUKLSAgQXV0 aG9yOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+Ci0gIERhdGU6ICAgRnJpIEZlYiA1 IDE3OjQ3OjA3IDIwMjEgKzAxMDAKLQotW2dkYi9zeW10YWJdIEhhbmRsZSBEV19UQUdfdHlwZV91 bml0IGluIHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQKLQotV2hlbiBydW5uaW5nIHRlc3QtY2Fz ZSBnZGIuY3AvY3BleHBycy1kZWJ1Zy10eXBlcy5leHAgd2l0aCB0YXJnZXQgYm9hcmQKLXVuaXgv Z2RiOmRlYnVnX2ZsYWdzPS1nZHdhcmYtNSwgSSBydW4gaW50bzoKLS4uLgotKGdkYikgZmlsZSBj cGV4cHJzLWRlYnVnLXR5cGVzXk0KLVJlYWRpbmcgc3ltYm9scyBmcm9tIGNwZXhwcnMtZGVidWct dHlwZXMuLi5eTQotRVJST1I6IENvdWxkbid0IGxvYWQgY3BleHBycy1kZWJ1Zy10eXBlcyBpbnRv IEdEQiAoZW9mKS4KLUVSUk9SOiBDb3VsZG4ndCBzZW5kIGRlbGV0ZSBicmVha3BvaW50cyB0byBH REIuCi1FUlJPUjogR0RCIHByb2Nlc3Mgbm8gbG9uZ2VyIGV4aXN0cwotR0RCIHByb2Nlc3MgZXhp dGVkIHdpdGggd2FpdCBzdGF0dXMgMjMwNTQgZXhwOSAwIDAgQ0hJTERLSUxMRUQgU0lHQUJSVCBT SUdBQlJUCi0uLi4KLQotV2UncmUgcnVubmluZyBpbnRvIHRoaXMgYWJvcnQgaW4gcHJvY2Vzc19w c3ltdGFiX2NvbXBfdW5pdDoKLS4uLgotICBzd2l0Y2ggKHJlYWRlci5jb21wX3VuaXRfZGllLT50 YWcpCi0gICAgewotICAgIGNhc2UgRFdfVEFHX2NvbXBpbGVfdW5pdDoKLSAgICAgIHRoaXNfY3Ut PnVuaXRfdHlwZSA9IERXX1VUX2NvbXBpbGU7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIERXX1RB R19wYXJ0aWFsX3VuaXQ6Ci0gICAgICB0aGlzX2N1LT51bml0X3R5cGUgPSBEV19VVF9wYXJ0aWFs OwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGFib3J0ICgpOwotICAgIH0KLS4u LgotYmVjYXVzZSByZWFkZXIuY29tcF91bml0X2RpZS0+dGFnID09IERXX1RBR190eXBlX3VuaXQu Ci0KLUZpeCB0aGlzIGJ5IGFkZGluZyBhIERXX1RBR190eXBlX3VuaXQgY2FzZS4KLQotVGVzdGVk IG9uIHg4Nl82NC1saW51eC4KLQotZ2RiL0NoYW5nZUxvZzoKLQotMjAyMS0wMi0wNSAgVG9tIGRl IFZyaWVzICA8dGRldnJpZXNAc3VzZS5kZT4KLQotCVBSIHN5bXRhYi8yNzMzMwotCSogZHdhcmYy L3JlYWQuYyAocHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCk6IEhhbmRsZSBEV19UQUdfdHlwZV91 bml0LgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQu YwotLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjIvcmVhZC5jCi1AQCAt NzcxNSw2ICs3NzE1LDkgQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAoZHdhcmYyX3Blcl9j dV9kYXRhICp0aGlzX2N1LAotICAgICBjYXNlIERXX1RBR19wYXJ0aWFsX3VuaXQ6Ci0gICAgICAg dGhpc19jdS0+dW5pdF90eXBlID0gRFdfVVRfcGFydGlhbDsKLSAgICAgICBicmVhazsKLSsgICAg Y2FzZSBEV19UQUdfdHlwZV91bml0OgotKyAgICAgIHRoaXNfY3UtPnVuaXRfdHlwZSA9IERXX1VU X3R5cGU7Ci0rICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgYWJvcnQgKCk7Ci0g ICAgIH0KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCA1NzU4YjA1Li5lY2M3 Nzg0IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMyArMSwzIEBACiBT SEE1MTIgKGdkYi1saWJzdGRjKystdjMtcHl0aG9uLTguMS4xLTIwMTgwNjI2LnRhci54eikgPSBh OGIxYzU0ZGQzNDhjZmViMzdkYTczZjk2ODc0Mjg5NmJlM2RkMTNhNDIxNWY4ZDg1MTk4NzBjMmFi ZWE5MTVmNTE3NmMzZmE2OTg5ZGRkMTBmMjAwMjBhMTZmMGZhYjIwY2JhZTY4ZWU4ZDU4YTgyMjM0 ZDg3NzgwMjM1MjBmOAotU0hBNTEyIChnZGItMTAuMS50YXIueHopID0gMGRjNTQzODA0MzVjNjg1 M2RiNjBmMWUzODhiOTQ4MzZkMjk0ZGZhOWFkN2Y1MTgzODVhMjdkYjRlZGQwM2NiOTcwZjg3MTdk NWYxZTljOWEwZDRhMzNkN2ZjZjkxYmMyZTVkNmM5Y2Y5ZTRiNTYxZGNjNzRlNjViODA2YzE1MzcK IFNIQTUxMiAodjIuMC40LnRhci5neikgPSA1OTZkMmRhYzI1ZmRiZDNlNTY2MGQ3ZTFmZWViN2U4 ZDVkMzU5ZDFkMGUxOWI2MmVmNTkzNDQ5MDM3ZGYyMzZkYjFkNGQ5ODgyMGYwMDMxMDYxYjU1NzNl ZDY3Nzk3YTg1YTc3ZmI5OTkxZTIxNWFiYWFiYzRiZmUxNmNlYWVjOAorU0hBNTEyIChnZGItMTAu Mi50YXIueHopID0gMzY1Mzc2MmFjMDA4ZTA2NWMzN2NkNjQxNjUzMTg0YzlmZjdjZTUxZWUyMjIy YWRlMTEyMmJlYzlkNmNjNjRkZmZkNGZiNzQ4ODhlZjExYWMxOTQyMDY0YTA4OTEwZTk2Yjc4NjUx MTJhZDM3ZjQ2MDJlYjBhMTZiZWQwNzRjYWEKCmRpZmYgLS1naXQgYS90ZXN0aW5nLWN1c3RvbS1p bnB1dHJjLnBhdGNoIGIvdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaAppbmRleCA3OGYwMzhl Li5jOTVmN2QxIDEwMDY0NAotLS0gYS90ZXN0aW5nLWN1c3RvbS1pbnB1dHJjLnBhdGNoCisrKyBi L3Rlc3RpbmctY3VzdG9tLWlucHV0cmMucGF0Y2gKQEAgLTI4LDcgKzI4LDcgQEAgU3ViamVjdDog dGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAtLS0gYS9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1AQCAtNTA4 NCwxMyArNTA4NCwxNCBAQCBwcm9jIGRlZmF1bHRfZ2RiX2luaXQgeyB0ZXN0X2ZpbGVfbmFtZSB9 IHsKK0BAIC01MTM1LDEzICs1MTM1LDE0IEBAIHByb2MgZGVmYXVsdF9nZGJfaW5pdCB7IHRlc3Rf ZmlsZV9uYW1lIH0gewogICAgICBzZXRlbnYgTENfQ1RZUEUgQwogICAgICBzZXRlbnYgTEFORyBD CiAgCg==