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: Andrew Burgess To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: switch rpm suggestion feature to a Python extension Date: Sun, 28 Jun 2026 00:01:34 GMT Message-ID: <178260489465.1.5364622496640306165.rpms-gdb-08bfd0a4a7fe@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 08bfd0a4a7fe8241b1f63780ff25978aa0da8c9d ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogMDhiZmQwYTRhN2ZlODI0MWIxZjYzNzgwZmYyNTk3OGFhMGRh OGM5ZAogICAgICAgICAgICBBdXRob3IgOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAyNC0wMy0xNVQxNDowNDoxMSswMDowMAogICAg ICAgICAgICBTdGF0cyAgOiArMjg5MS8tMjAyMiBpbiAyNiBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMDhiZmQwYTRh N2ZlODI0MWIxZjYzNzgwZmYyNTk3OGFhMGRhOGM5ZD9icmFuY2g9Z2RiLTE3LjItcmViYXNlLWY0 NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBzd2l0Y2ggcnBtIHN1Z2dlc3Rpb24gZmVh dHVyZSB0byBhIFB5dGhvbiBleHRlbnNpb24KClRoaXMgY29tbWl0IGJhY2twb3J0cyBzZXZlcmFs IHBhdGNoZXMgZnJvbSB1cHN0cmVhbSBHREI6CgogIDdkMjE2MDBiMzFmCiAgZGQ1NTE2YmY5OGYK ICBlOGMzZGFmYTVmNQogIDExNDZkMjc3NDlmCiAgN2RiNzk1YmM2N2EKICA4ZjZjNDUyYjVhNAog IDY2MWQ5OGEzMzMxCiAgNjIzNGJhMTc1OTgKICAyNzgwN2RhNTg0OQogIDc2MjhhOTk3ZjI3CgpU aGVzZSBjb21taXRzIHByb3ZpZGUgYSBuZXcgUHl0aG9uIEFQSSB3aGljaCBhbGxvd3MgdXNlcnMg dG8gY2F0Y2ggdGhlCmNhc2Ugd2hlcmUgR0RCIHRyaWVzIHRvIGxvYWQgYW4gb2JqZmlsZSwgYnV0 IGNhbid0IGZpbmQgYW55IGRlYnVnCmluZm9ybWF0aW9uLgoKSSd2ZSB0aGVuIGFkZGVkIGEgbmV3 IHBhdGNoIHdoaWNoIHVzZXMgdGhpcyBQeXRob24gQVBJIHRvIGhvb2sgaW50bwpHREIgYW5kIG1h a2Ugc3VnZ2VzdGlvbnMgYWJvdXQgUlBNcyB0byBpbnN0YWxsIHRoYXQgY291bGQgcHJvdmlkZQpt aXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uLCB0aGlzIHNob3VsZCByZXBsYWNlIHNvbWUgb2YgdGhl IHJwbQpzdWdnZXN0aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50 ZWQgd2l0aGluIEdEQidzCkMrKyBjb2RlLCBhcyBzdWNoIEkndmUgZGVsZXRlZCBhbGwgb2YgdGhl IGNvZGUgcmVsYXRlZCB0byBvcGVuaW5nCmxpYnJwbSBhbmQgcXVlcnlpbmcgdGhlIFJQTSBkYXRh YmFzZS4KClRoZXJlIGlzIHN0aWxsIGNvZGUgaW4gR0RCIHdoaWNoIHdpbGwgbWFrZSBzdWdnZXN0 aW9ucyBhYm91dAppbnN0YWxsaW5nIFJQTXMgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIGJ1aWxk LWlkIHN5bWxpbmsgZm9yIHRoZQpmaWxlLiAgVGhpcyBjb2RlIGlzIGhpdCB3aGVuIGEgdXNlciB0 cmllcyB0byBvcGVuIGEgY29yZS1maWxlIGFuZCB0aGUKY29ycmVzcG9uZGluZyBleGVjdXRhYmxl IGNhbid0IGJlIGZvdW5kLCBvciBpZiBhIHNoYXJlZCBsaWJyYXJ5CnJlcXVpcmVkIGJ5IHRoZSBj b3JlLWZpbGUgaXNuJ3QgZm91bmQuCgpJbiB0aGVzZSBjYXNlcyB0aGUgbGlicnBtIGxvb2t1cCB3 b3VsZCBhbHdheXMgZmFpbCBhbnl3YXkgYW5kIHdlJ2QKanVzdCBzdWdnZXN0IHRoYXQgdGhlIHVz ZXIgdHJ5IHRvIGluc3RhbGwgdGhlIHJlcXVpcmVkIHBhY2thZ2UgYmFzZWQKb24gdGhlIHBhdGgg dG8gdGhlIGJ1aWxkLWlkIHN5bWxpbmssIGUuZy46CgogIE1pc3Npbmcgc2VwYXJhdGUgZGVidWdp bmZvIGZvciB0aGUgbWFpbiBleGVjdXRhYmxlIGZpbGUuCiAgVHJ5OiB5dW0gLS1lbmFibGVyZXBv PScqZGVidWcqJyBpbnN0YWxsIC91c3IvbG9jYWwvbGliL2RlYnVnLy5idWlsZC1pZC9iZi9jOWZi ZDEzMDQ2ZGI1OGMyOGJhMzMyZTZjOTkxMjQwZTc3NWM5NgoKVGhpcyBzaG91bGQgc3RpbGwgd29y ayBqdXN0IGFzIGl0IGRpZCBiZWZvcmUuCgpOb3cgR0RCIG5vIGxvbmdlciBsaW5rcyBhZ2FpbnN0 IGxpYnJwbSBJJ20gYWJsZSB0byByZW1vdmUgYWxsIHRoZQpsaWJycG0gcmVsYXRlZCBzdHVmZiBm cm9tIHRoZSBjb25maWd1cmUgc2NyaXB0cywgd2hpY2ggaXMgYSBuaWNlCmNsZWFudXAuCgpUaGVy ZSBhcmUgYSBjb3VwbGUgb2YgcGF0Y2hlczoKCiAgZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0t bGlicnBtLXdvcmthcm91bmQucGF0Y2gKICBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRj aAoKd2hpY2ggZGVhbCBleGNsdXNpdmVseSB3aXRoIHVwZGF0aW5nIGNvZGUgKGFkZGVkIGluIGVh cmxpZXIgcGF0Y2hlcykKcmVsYXRlZCB0byB0aGUgdXNlIG9mIGxpYnJwbSBmcm9tIEdEQidzIEMr KyBjb2RlLCB0aGVzZSBwYXRjaGVzIGFyZQpyZW1vdmVkIGJ5IHRoaXMgY29tbWl0LiAgT3RoZXIg cGF0Y2hlcyBhcmUgY2hhbmdlZCBlaXRoZXIgYnkgdGhlCnJlbW92YWwgb2YgdGhlIGxpYnJwbSBj b2RlLCBvciBhcyBhIGNvbnNlcXVlbmNlIG9mIHRoYXQgY29kZSBoYXZpbmcKYmVlbiByZW1vdmVk LgoKSSd2ZSBhbHNvIHRha2VuIHRoZSBvcHBvcnR1bml0eSB0byBmaXggdXAgc29tZSBvZiB0aGUg dGVzdCBjYXNlcyB3aGljaApvbmx5IGV4aXN0IGluIHRoZSBGZWRvcmEgdHJlZSBzbyB0aGF0IHRo ZXkgd2lsbCBydW4gYWdhaW4uICBUaGlzIGlzCm1vc3RseSBqdXN0IHVwZGF0aW5nIHRoZSB0ZXN0 cyB0byBtYXRjaCB1cHN0cmVhbSBHREIncyBjdXJyZW50CnRlc3RzdWl0ZSBpbmZyYXN0cnVjdHVy ZSwgdGhlc2UgYXJlIGFsbCBwcmV0dHkgbWlub3IgZml4ZXMuCgotLS0KZGlmZiAtLWdpdCBhL19n ZGIuc3BlYy5QYXRjaC5pbmNsdWRlIGIvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKaW5kZXggN2Ey MjJkNi4uYWU2YzRhZiAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKKysrIGIv X2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKQEAgLTQ0LDExMCArNDQsMTAzIEBAIFBhdGNoMDEwOiBn ZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCiAjPXB1c2gramFuCiBQYXRjaDAxMTogZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS1zb2xpYi1taXNzaW5nLWlkcy5wYXRjaAogCi0jPXB1c2gramFuCi1Q YXRjaDAxMjogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKLQogIyBUZXN0IFBQQyBo aWRpbmcgb2YgY2FsbC12b2xhdGlsZSBwYXJhbWV0ZXIgcmVnaXN0ZXIuCiAjPWZlZG9yYXRlc3QK LVBhdGNoMDEzOiBnZGItNi43LXBwYy1jbG9iYmVyZWQtcmVnaXN0ZXJzLU8yLXRlc3QucGF0Y2gK K1BhdGNoMDEyOiBnZGItNi43LXBwYy1jbG9iYmVyZWQtcmVnaXN0ZXJzLU8yLXRlc3QucGF0Y2gK IAogIyBUZXN0IGdjb3JlIG1lbW9yeSBhbmQgdGltZSByZXF1aXJlbWVudHMgZm9yIGxhcmdlIGlu ZmVyaW9ycy4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMTQ6IGdkYi02LjUtZ2NvcmUtYnVmZmVyLWxp bWl0LXRlc3QucGF0Y2gKK1BhdGNoMDEzOiBnZGItNi41LWdjb3JlLWJ1ZmZlci1saW1pdC10ZXN0 LnBhdGNoCiAKICMgVGVzdCBHQ09SRSBmb3Igc2htaWQgMCBzaGFyZWQgbWVtb3J5IG1hcHBpbmdz LgogIz1mZWRvcmF0ZXN0OiBCdXQgaXQgaXMgYnJva2VuIGFueXdheSwgc29tZXRpbWVzIHRoZSBj YXNlIGJlaW5nIHRlc3RlZCBpcyBub3QgcmVwcm9kdWNpYmxlLgotUGF0Y2gwMTU6IGdkYi02LjMt bWFwcGluZy16ZXJvLWlub2RlLXRlc3QucGF0Y2gKK1BhdGNoMDE0OiBnZGItNi4zLW1hcHBpbmct emVyby1pbm9kZS10ZXN0LnBhdGNoCiAKICMgVGVzdCBhIGNyYXNoIG9uIGxpYnJhcmllcyBtaXNz aW5nIHRoZSAudGV4dCBzZWN0aW9uLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAxNjogZ2RiLTYuNS1z ZWN0aW9uLW51bS1maXh1cC10ZXN0LnBhdGNoCitQYXRjaDAxNTogZ2RiLTYuNS1zZWN0aW9uLW51 bS1maXh1cC10ZXN0LnBhdGNoCiAKICMgRml4IHJlc29sdmluZyBvZiB2YXJpYWJsZXMgYXQgbG9j YXRpb25zIGxpc3RzIGluIHByZWxpbmtlZCBsaWJzIChCWiA0NjY5MDEpLgogIz1mZWRvcmF0ZXN0 Ci1QYXRjaDAxNzogZ2RiLTYuOC1iejQ2NjkwMS1iYWNrdHJhY2UtZnVsbC1wcmVsaW5rZWQucGF0 Y2gKK1BhdGNoMDE2OiBnZGItNi44LWJ6NDY2OTAxLWJhY2t0cmFjZS1mdWxsLXByZWxpbmtlZC5w YXRjaAogCiAjIE5ldyB0ZXN0IGZvciBzdGVwLXJlc3VtZSBicmVha3BvaW50IHBsYWNlZCBpbiBt dWx0aXBsZSB0aHJlYWRzIGF0IG9uY2UuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDE4OiBnZGItc2lt dWx0YW5lb3VzLXN0ZXAtcmVzdW1lLWJyZWFrcG9pbnQtdGVzdC5wYXRjaAorUGF0Y2gwMTc6IGdk Yi1zaW11bHRhbmVvdXMtc3RlcC1yZXN1bWUtYnJlYWtwb2ludC10ZXN0LnBhdGNoCiAKICMgRml4 IEdOVS9MaW51eCBjb3JlIG9wZW46IENhbid0IHJlYWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiBJ bnB1dC9vdXRwdXQgZXJyb3IuCiAjIEZpeCByZWdyZXNzaW9uIG9mIHVuZGlzcGxheWVkIG1pc3Np bmcgc2hhcmVkIGxpYnJhcmllcyBjYXVzZWQgYnkgYSBmaXggZm9yLgogIz1mZWRvcmF0ZXN0OiBJ dCBzaG91bGQgYmUgaW4gZ2xpYmM6IGxpYmMtYWxwaGE6IDwyMDA5MTAwNDE2MTcwNi5HQTI3NDUw QC4qPgotUGF0Y2gwMTk6IGdkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoCitQYXRjaDAx ODogZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKIAogIyBGaXggZm9sbG93LWV4ZWMg Zm9yIEMrKyBwcm9ncmFtcyAoYnVncmVwb3J0ZWQgYnkgTWFydGluIFN0cmFuc2t5KS4KICM9ZmVk b3JhdGVzdAotUGF0Y2gwMjA6IGdkYi1hcmNoZXItbmV4dC1vdmVyLXRocm93LWN4eC1leGVjLnBh dGNoCi0KLSMgV29ya2Fyb3VuZCBsaWJycG0gQlogNjQzMDMxIGR1ZSB0byBpdHMgdW5leHBlY3Rl ZCBleGl0KCkgY2FsbHMgKEJaIDY0Mjg3OSkuCi0jPXB1c2gramFuCi1QYXRjaDAyMTogZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKK1BhdGNoMDE5OiBn ZGItYXJjaGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAogCiAjIFtkZWxheWVkLXN5 bWZpbGVdIFRlc3QgYSBiYWNrdHJhY2UgcmVncmVzc2lvbiBvbiBDRklzIHdpdGhvdXQgRElFIChC WiA2MTQ2MDQpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAyMjogZ2RiLXRlc3QtYnQtY2ZpLXdpdGhv dXQtZGllLnBhdGNoCitQYXRjaDAyMDogZ2RiLXRlc3QtYnQtY2ZpLXdpdGhvdXQtZGllLnBhdGNo CiAKICMgVmVyaWZ5IEdEQiBQeXRob24gYnVpbHQtaW4gZnVuY3Rpb24gZ2RiLnNvbGliX2FkZHJl c3MgZXhpc3RzIChCWiAjIDYzNDEwOCkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDIzOiBnZGItYno2 MzQxMDgtc29saWJfYWRkcmVzcy5wYXRjaAorUGF0Y2gwMjE6IGdkYi1iejYzNDEwOC1zb2xpYl9h ZGRyZXNzLnBhdGNoCiAKICMgW2FyY2hlci10cm9tZXktZGVsYXllZC1zeW1maWxlXSBOZXcgdGVz dCBnZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLmV4cC4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMjQ6IGdk Yi10ZXN0LWR3Mi1hcmFuZ2VzLnBhdGNoCitQYXRjaDAyMjogZ2RiLXRlc3QtZHcyLWFyYW5nZXMu cGF0Y2gKIAogIyBXb3JrYXJvdW5kIFBSIGxpYmMvMTQxNjYgZm9yIGluZmVyaW9yIGNhbGxzIG9m IHN0cnN0ci4KICM9ZmVkb3JhdGVzdDogQ29tcGF0aWJpbGl0eSB3aXRoIFJIRUxzICh1bmNoZWNr ZWQgd2hpY2ggb25lcykuCi1QYXRjaDAyNTogZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBh dGNoCitQYXRjaDAyMzogZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoCiAKICMgVGVz dGNhc2UgZm9yIGBTZXR0aW5nIHNvbGliLWFic29sdXRlLXByZWZpeCBicmVha3MgdkRTTycgKEJa IDgxODM0MykuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDI2OiBnZGItcmhiei04MTgzNDMtc2V0LXNv bGliLWFic29sdXRlLXByZWZpeC10ZXN0Y2FzZS5wYXRjaAorUGF0Y2gwMjQ6IGdkYi1yaGJ6LTgx ODM0My1zZXQtc29saWItYWJzb2x1dGUtcHJlZml4LXRlc3RjYXNlLnBhdGNoCiAKICMgSW1wb3J0 IHJlZ3Jlc3Npb24gdGVzdCBmb3IgYGdkYi9maW5kdmFyLmM6NDE3OiBpbnRlcm5hbC1lcnJvcjoK ICMgcmVhZF92YXJfdmFsdWU6IEFzc2VydGlvbiBgZnJhbWUnIGZhaWxlZC4nIChSSCBCWiA5NDc1 NjQpIGZyb20gUkhFTCA2LjUuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDI3OiBnZGItcmhiejk0NzU2 NC1maW5kdmFyLWFzc2VydGlvbi1mcmFtZS1mYWlsZWQtdGVzdGNhc2UucGF0Y2gKK1BhdGNoMDI1 OiBnZGItcmhiejk0NzU2NC1maW5kdmFyLWFzc2VydGlvbi1mcmFtZS1mYWlsZWQtdGVzdGNhc2Uu cGF0Y2gKIAogIyBGaXggJ21lbW9yeSBsZWFrIGluIGluZnB5X3JlYWRfbWVtb3J5KCknIChSSCBC WiAxMDA3NjE0KQogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAyODogZ2RiLXJoYnoxMDA3NjE0LW1lbWxl YWstaW5mcHlfcmVhZF9tZW1vcnktdGVzdC5wYXRjaAorUGF0Y2gwMjY6IGdkYi1yaGJ6MTAwNzYx NC1tZW1sZWFrLWluZnB5X3JlYWRfbWVtb3J5LXRlc3QucGF0Y2gKIAogIyBGaXggJ2dkYiBnaXZl cyBoaWdobHkgbWlzbGVhZGluZyBlcnJvciB3aGVuIGRlYnVnaW5mbyBwa2cgaXMgcHJlc2VudCwK ICMgYnV0IG5vdCBjb3JyZXNwb25kaW5nIGJpbmFyeSBwa2cnIChSSCBCWiA5ODExNTQpLgogIz1w dXNoK2phbgotUGF0Y2gwMjk6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtbWlzbGVhZGluZy13YXJu aW5nLW1pc3NpbmctZGVidWdpbmZvLXJoYno5ODExNTQucGF0Y2gKK1BhdGNoMDI3OiBnZGItNi42 LWJ1aWxkaWQtbG9jYXRlLW1pc2xlYWRpbmctd2FybmluZy1taXNzaW5nLWRlYnVnaW5mby1yaGJ6 OTgxMTU0LnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yICdbU0FQXSBSZWN1cnNpdmUgZGxvcGVuIGNh dXNlcyBTQVAgSEFOQSBpbnN0YWxsZXIgdG8KICMgY3Jhc2guJyAoUkggQlogMTE1NjE5MikuCiAj PWZlZG9yYXRlc3QKLVBhdGNoMDMwOiBnZGItcmhiejExNTYxOTItcmVjdXJzaXZlLWRsb3Blbi10 ZXN0LnBhdGNoCitQYXRjaDAyODogZ2RiLXJoYnoxMTU2MTkyLXJlY3Vyc2l2ZS1kbG9wZW4tdGVz dC5wYXRjaAogCiAjIEZpeCAnYGNhdGNoIHN5c2NhbGwnIGRvZXNuJ3Qgd29yayBmb3IgcGFyZW50 IGFmdGVyIGBmb3JrJyBpcyBjYWxsZWQnCiAjIChQaGlsaXBwZSBXYXJvcXVpZXJzLCBSSCBCWiAx MTQ5MjA1KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMzE6IGdkYi1yaGJ6MTE0OTIwNS1jYXRjaC1z eXNjYWxsLWFmdGVyLWZvcmstdGVzdC5wYXRjaAorUGF0Y2gwMjk6IGdkYi1yaGJ6MTE0OTIwNS1j YXRjaC1zeXNjYWxsLWFmdGVyLWZvcmstdGVzdC5wYXRjaAogCiAjIEZpeCAnW3BwYzY0XSBhbmQg W3MzOTB4XSB3cm9uZyBwcm9sb2d1ZSBza2lwIG9uIC1PMiAtZyBjb2RlJyAoSmFuCiAjIEtyYXRv Y2h2aWwsIFJIIEJaIDEwODQ0MDQpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAzMjogZ2RiLXJoYnox MDg0NDA0LXBwYzY0LXMzOTB4LXdyb25nLXByb2xvZ3VlLXNraXAtTzItZy0zb2YzLnBhdGNoCitQ YXRjaDAzMDogZ2RiLXJoYnoxMDg0NDA0LXBwYzY0LXMzOTB4LXdyb25nLXByb2xvZ3VlLXNraXAt TzItZy0zb2YzLnBhdGNoCiAKICMgRm9yY2UgbGlibmN1cnNlc3cgb3ZlciBsaWJuY3Vyc2VzIHRv IG1hdGNoIHRoZSBpbmNsdWRlcyAoUkggQlogMTI3MDUzNCkuCiAjPXB1c2gramFuCi1QYXRjaDAz MzogZ2RiLWZlZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaAorUGF0Y2gwMzE6IGdkYi1mZWRvcmEtbGli bmN1cnNlc3cucGF0Y2gKIAogIyBbYWFyY2g2NF0gRml4IGhhcmR3YXJlIHdhdGNocG9pbnRzIChS SCBCWiAxMjYxNTY0KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMzQ6IGdkYi1yaGJ6MTI2MTU2NC1h YXJjaDY0LWh3LXdhdGNocG9pbnQtdGVzdC5wYXRjaAorUGF0Y2gwMzI6IGdkYi1yaGJ6MTI2MTU2 NC1hYXJjaDY0LWh3LXdhdGNocG9pbnQtdGVzdC5wYXRjaAogCiAjIEFkZCBtZXNzYWdlcyBzdWdn ZXN0aW5nIG1vcmUgcmVjZW50IFJIRUwgZ2Ric2VydmVyIChSSCBCWiAxMzIxMTE0KS4KICM9ZmVk b3JhCi1QYXRjaDAzNTogZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKK1BhdGNoMDMzOiBnZGIt Y29udGFpbmVyLXJoLXBrZy5wYXRjaAogCiAjIFtkdHMrZWw3XSBbeDg2Kl0gQnVuZGxlIGxpbnV4 X3BlcmYuaCBmb3IgbGliaXB0IChSSCBCWiAxMjU2NTEzKS4KICM9ZmVkb3JhCi1QYXRjaDAzNjog Z2RiLWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoCitQYXRjaDAzNDogZ2RiLWxpbnV4X3BlcmYtYnVu ZGxlLnBhdGNoCiAKICMgVXBkYXRlIGdkYi1hZGQtaW5kZXguc2ggc3VjaCB0aGF0LCB3aGVuIHRo ZSBHREIgZW52aXJvbm1lbnQKICMgdmFyaWFibGUgaXMgbm90IHNldCwgdGhlIHNjcmlwdCBpcyBz bWFydGVyIHRoYW4ganVzdCBsb29raW5nIGZvcgpAQCAtMTYxLDM4ICsxNTQsNzIgQEAgUGF0Y2gw MzY6IGdkYi1saW51eF9wZXJmLWJ1bmRsZS5wYXRjaAogIyAgIGh0dHBzOi8vZmVkb3JhcHJvamVj dC5vcmcvd2lraS9DaGFuZ2VzL01pbmltYWxfR0RCX2luX2J1aWxkcm9vdAogIwogIz1mZWRvcmEK LVBhdGNoMDM3OiBnZGItYWRkLWluZGV4LnBhdGNoCitQYXRjaDAzNTogZ2RiLWFkZC1pbmRleC5w YXRjaAogCiAjIEJhY2stcG9ydCB1cHN0cmVhbSBjb21taXQgMWYwZmFiN2ZmODYgYXMgcGFydCBv ZiBhIGZpeCBmb3IKICMgbm9uLWRldGVybWluaXN0aWMgZ2RiLWluZGV4IGdlbmVyYXRpb24gKFJI IEJaIDIyMzIwODYpLgotUGF0Y2gwMzg6IGdkYi1yaGJ6MjIzMjA4Ni1yZWZhY3Rvci1zZWxmdGVz dC1zdXBwb3J0LnBhdGNoCitQYXRjaDAzNjogZ2RiLXJoYnoyMjMyMDg2LXJlZmFjdG9yLXNlbGZ0 ZXN0LXN1cHBvcnQucGF0Y2gKIAogIyBCYWNrLXBvcnQgdXBzdHJlYW0gY29tbWl0IGFhMTliYzFk MjU5IGFzIHBhcnQgb2YgYSBmaXggZm9yCiAjIG5vbi1kZXRlcm1pbmlzdGljIGdkYi1pbmRleCBn ZW5lcmF0aW9uIChSSCBCWiAyMjMyMDg2KS4KLVBhdGNoMDM5OiBnZGItcmhiei0yMjMyMDg2LXJl ZHVjZS1zaXplLW9mLWdkYi1pbmRleC5wYXRjaAorUGF0Y2gwMzc6IGdkYi1yaGJ6LTIyMzIwODYt cmVkdWNlLXNpemUtb2YtZ2RiLWluZGV4LnBhdGNoCiAKICMgQmFjay1wb3J0IHVwc3RyZWFtIGNv bW1pdCBhY2MxMTdiNTdmNyBhcyBwYXJ0IG9mIGEgZml4IGZvcgogIyBub24tZGV0ZXJtaW5pc3Rp YyBnZGItaW5kZXggZ2VuZXJhdGlvbiAoUkggQlogMjIzMjA4NikuCi1QYXRjaDA0MDogZ2RiLXJo YnotMjIzMjA4Ni1jcHAtaWZ5LW1hcHBlZC1zeW10YWIucGF0Y2gKK1BhdGNoMDM4OiBnZGItcmhi ei0yMjMyMDg2LWNwcC1pZnktbWFwcGVkLXN5bXRhYi5wYXRjaAogCiAjIEJhY2stcG9ydCB1cHN0 cmVhbSBjb21taXQgYWZmMjUwMTQ1YWYgYXMgcGFydCBvZiBhIGZpeCBmb3IKICMgbm9uLWRldGVy bWluaXN0aWMgZ2RiLWluZGV4IGdlbmVyYXRpb24gKFJIIEJaIDIyMzIwODYpLgotUGF0Y2gwNDE6 IGdkYi1yaGJ6LTIyMzIwODYtZ2VuZXJhdGUtZ2RiLWluZGV4LWNvbnNpc3RlbnRseS5wYXRjaAor UGF0Y2gwMzk6IGdkYi1yaGJ6LTIyMzIwODYtZ2VuZXJhdGUtZ2RiLWluZGV4LWNvbnNpc3RlbnRs eS5wYXRjaAogCiAjIEJhY2stcG9ydCB1cHN0cmVhbSBjb21taXQgMzY0NGY0MWRjODAgYXMgcGFy dCBvZiBhIGZpeCBmb3IKICMgbm9uLWRldGVybWluaXN0aWMgZ2RiLWluZGV4IGdlbmVyYXRpb24g KFJIIEJaIDIyMzIwODYpLgotUGF0Y2gwNDI6IGdkYi1yaGJ6LTIyMzIwODYtZ2VuZXJhdGUtZHdh cmYtNS1pbmRleC1jb25zaXN0ZW50bHkucGF0Y2gKK1BhdGNoMDQwOiBnZGItcmhiei0yMjMyMDg2 LWdlbmVyYXRlLWR3YXJmLTUtaW5kZXgtY29uc2lzdGVudGx5LnBhdGNoCiAKIAotUGF0Y2gwNDM6 IGdkYi1yaGJ6MjI1MDY1Mi1nZGJweV9naWwucGF0Y2gKK1BhdGNoMDQxOiBnZGItcmhiejIyNTA2 NTItZ2RicHlfZ2lsLnBhdGNoCiAKIAotUGF0Y2gwNDQ6IGdkYi1yaGJ6MjI1MDY1Mi1hdm9pZC1Q eU9TX1JlYWRsaW5lVFN0YXRlLnBhdGNoCitQYXRjaDA0MjogZ2RiLXJoYnoyMjUwNjUyLWF2b2lk LVB5T1NfUmVhZGxpbmVUU3RhdGUucGF0Y2gKIAogCi1QYXRjaDA0NTogZ2RiLWZ0YnMtc3dhcHBl ZC1jYWxsb2MtYXJncy5wYXRjaAorUGF0Y2gwNDM6IGdkYi1mdGJzLXN3YXBwZWQtY2FsbG9jLWFy Z3MucGF0Y2gKIAogIyBCYWNrcG9ydCB1cHN0cmVhbSB3b3JrYXJvdW5kIGZvciBHQ0MgMTQgcHJv YmxlbSB3aGljaCBjYXVzZSBhc3NlcnRpb24KICMgZmFpbHVyZXMgaW4gR0RCLgotUGF0Y2gwNDY6 IGdkYi1yaGJ6MjI2MTU4MC1pbnRydXNpdmVfbGlzdC1hc3NlcnRpb24tZml4LnBhdGNoCitQYXRj aDA0NDogZ2RiLXJoYnoyMjYxNTgwLWludHJ1c2l2ZV9saXN0LWFzc2VydGlvbi1maXgucGF0Y2gK KworIyBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgNzYyOGE5OTdmMjcuCitQYXRjaDA0NTogZ2Ri LXN5bmMtY29mZnJlYWQtd2l0aC1lbGZyZWFkLnBhdGNoCisKKyMgQmFja3BvcnQgdXBzdHJlYW0g Y29tbWl0IDI3ODA3ZGE1ODQ5LgorUGF0Y2gwNDY6IGdkYi1tZXJnZS1kZWJ1Zy1zeW1ib2wtbG9v a3VwLnBhdGNoCisKKyMgQmFja3BvcnQgdXBzdHJlYW0gY29tbWl0IDYyMzRiYTE3NTk4LgorUGF0 Y2gwNDc6IGdkYi1yZWZhY3Rvci1maW5kLWFuZC1hZGQtc2VwYXJhdGUtc3ltYm9sLWZpbGUucGF0 Y2gKKworIyBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgNjYxZDk4YTMzMzEuCitQYXRjaDA0ODog Z2RiLWFkZC1taXNzaW5nLWRlYnVnLWV4dC1sYW5nLWhvb2sucGF0Y2gKKworIyBCYWNrcG9ydCB1 cHN0cmVhbSBjb21taXQgOGY2YzQ1MmI1YTQuCitQYXRjaDA0OTogZ2RiLWFkZC1taXNzaW5nLWRl YnVnLWluZm8tcHl0aG9uLWhvb2sucGF0Y2gKKworIyBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQg N2RiNzk1YmM2N2EuCitQYXRjaDA1MDogZ2RiLXJlbW92ZS11c2Utb2YtcHktaXNhc2NpaQorCisj IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCAxMTQ2ZDI3NzQ5Zi4KK1BhdGNoMDUxOiBnZGItcmVt b3ZlLXBhdGgtaW4tdGVzdC1uYW1lLnBhdGNoCisKKyMgQmFja3BvcnQgdXBzdHJlYW0gY29tbWl0 IGU4YzNkYWZhNWY1LgorUGF0Y2gwNTI6IGdkYi1kby1ub3QtaW1wb3J0LXB5LWN1cnNlcy1hc2Np aS1tb2R1bGUucGF0Y2gKKworIyBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgZGQ1NTE2YmY5OGYu CitQYXRjaDA1MzogZ2RiLXJlZm9ybWF0LW1pc3NpbmctZGVidWctcHktZmlsZS5wYXRjaAorCisj IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCA3ZDIxNjAwYjMxZmUuCitQYXRjaDA1NDogZ2RiLWhh bmRsZS1uby1weXRob24tZ2RiLW1vZHVsZS5wYXRjaAorCisjIE5vdCBhIGJhY2twb3J0LiAgQWRk IGEgbmV3IHNjcmlwdCB3aGljaCBob29rcyBpbnRvIEdEQiBhbmQgc3VnZ2VzdHMKKyMgUlBNcyB0 byBpbnN0YWxsIHdoZW4gR0RCIGZpbmRzIGFuIG9iamZpbGUgd2l0aCBubyBkZWJ1ZyBpbmZvLgor UGF0Y2gwNTU6IGdkYi1hZGQtcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCiAKCmRpZmYgLS1n aXQgYS9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCmlu ZGV4IDgwZGYzMWEuLmI3MmM0MTIgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRl CisrKyBiL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCkBAIC00NCwzICs0NCwxMiBAQAogJXBhdGNo IC1wMSAtUDA0NAogJXBhdGNoIC1wMSAtUDA0NQogJXBhdGNoIC1wMSAtUDA0NgorJXBhdGNoIC1w MSAtUDA0NworJXBhdGNoIC1wMSAtUDA0OAorJXBhdGNoIC1wMSAtUDA0OQorJXBhdGNoIC1wMSAt UDA1MAorJXBhdGNoIC1wMSAtUDA1MQorJXBhdGNoIC1wMSAtUDA1MgorJXBhdGNoIC1wMSAtUDA1 MworJXBhdGNoIC1wMSAtUDA1NAorJXBhdGNoIC1wMSAtUDA1NQoKZGlmZiAtLWdpdCBhL19wYXRj aF9vcmRlciBiL19wYXRjaF9vcmRlcgppbmRleCA3NzEyMmJlLi43Zjk0ZTIxIDEwMDY0NAotLS0g YS9fcGF0Y2hfb3JkZXIKKysrIGIvX3BhdGNoX29yZGVyCkBAIC05LDcgKzksNiBAQCBnZGItNi4z LWF0dGFjaC1zZWUtdmRzby10ZXN0LnBhdGNoCiBnZGItNi41LWJ6MjQzODQ1LXN0YWxlLXRlc3Rp bmctem9tYmllLXRlc3QucGF0Y2gKIGdkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKIGdkYi02 LjYtYnVpbGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1pZHMucGF0Y2gKLWdkYi02LjYtYnVpbGRp ZC1sb2NhdGUtcnBtLnBhdGNoCiBnZGItNi43LXBwYy1jbG9iYmVyZWQtcmVnaXN0ZXJzLU8yLXRl c3QucGF0Y2gKIGdkYi02LjUtZ2NvcmUtYnVmZmVyLWxpbWl0LXRlc3QucGF0Y2gKIGdkYi02LjMt bWFwcGluZy16ZXJvLWlub2RlLXRlc3QucGF0Y2gKQEAgLTE4LDcgKzE3LDYgQEAgZ2RiLTYuOC1i ejQ2NjkwMS1iYWNrdHJhY2UtZnVsbC1wcmVsaW5rZWQucGF0Y2gKIGdkYi1zaW11bHRhbmVvdXMt c3RlcC1yZXN1bWUtYnJlYWtwb2ludC10ZXN0LnBhdGNoCiBnZGItY29yZS1vcGVuLXZkc28td2Fy bmluZy5wYXRjaAogZ2RiLWFyY2hlci1uZXh0LW92ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2gKLWdk Yi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxpYnJwbS13b3JrYXJvdW5kLnBhdGNoCiBnZGItdGVz dC1idC1jZmktd2l0aG91dC1kaWUucGF0Y2gKIGdkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBh dGNoCiBnZGItdGVzdC1kdzItYXJhbmdlcy5wYXRjaApAQCAtNDQsMyArNDIsMTQgQEAgZ2RiLXJo YnoyMjUwNjUyLWdkYnB5X2dpbC5wYXRjaAogZ2RiLXJoYnoyMjUwNjUyLWF2b2lkLVB5T1NfUmVh ZGxpbmVUU3RhdGUucGF0Y2gKIGdkYi1mdGJzLXN3YXBwZWQtY2FsbG9jLWFyZ3MucGF0Y2gKIGdk Yi1yaGJ6MjI2MTU4MC1pbnRydXNpdmVfbGlzdC1hc3NlcnRpb24tZml4LnBhdGNoCitnZGItc3lu Yy1jb2ZmcmVhZC13aXRoLWVsZnJlYWQucGF0Y2gKK2dkYi1tZXJnZS1kZWJ1Zy1zeW1ib2wtbG9v a3VwLnBhdGNoCitnZGItcmVmYWN0b3ItZmluZC1hbmQtYWRkLXNlcGFyYXRlLXN5bWJvbC1maWxl LnBhdGNoCitnZGItYWRkLW1pc3NpbmctZGVidWctZXh0LWxhbmctaG9vay5wYXRjaAorZ2RiLWFk ZC1taXNzaW5nLWRlYnVnLWluZm8tcHl0aG9uLWhvb2sucGF0Y2gKK2dkYi1yZW1vdmUtdXNlLW9m LXB5LWlzYXNjaWkKK2dkYi1yZW1vdmUtcGF0aC1pbi10ZXN0LW5hbWUucGF0Y2gKK2dkYi1kby1u b3QtaW1wb3J0LXB5LWN1cnNlcy1hc2NpaS1tb2R1bGUucGF0Y2gKK2dkYi1yZWZvcm1hdC1taXNz aW5nLWRlYnVnLXB5LWZpbGUucGF0Y2gKK2dkYi1oYW5kbGUtbm8tcHl0aG9uLWdkYi1tb2R1bGUu cGF0Y2gKK2dkYi1hZGQtcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCgpkaWZmIC0tZ2l0IGEv Z2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2ggYi9nZGItNi4zLWdzdGFjay0yMDA1MDQxMS5w YXRjaAppbmRleCAwMWU4ZmZhLi4zMjg1Njg2IDEwMDY0NAotLS0gYS9nZGItNi4zLWdzdGFjay0y MDA1MDQxMS5wYXRjaAorKysgYi9nZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRjaApAQCAtMjI2 LDcgKzIyNiw3IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiArIyBleGl0aW5nIHRoZSBmdW5jdGlv bi4gIFN0aWxsIHdlIGNvdWxkIHJldHJ5IHRoZSBnc3RhY2sgY29tbWFuZCBpZiB3ZSBmYWlsLgog KwogK3NldCB0ZXN0ICJzcGF3biBnc3RhY2siCi0rc2V0IGNvbW1hbmQgInNoIC1jIEdEQj0kR0RC XFwgR0RCQVJHUz0tZGF0YS1kaXJlY3RvcnlcXFxcXFwgJEJVSUxEX0RBVEFfRElSRUNUT1JZXFwg c2hcXCAke3NyY2Rpcn0vLi4vZ3N0YWNrLnNoXFwgJHBpZFxcO2VjaG9cXCBHU1RBQ0stRU5EIgor K3NldCBjb21tYW5kICJzaCAtYyBHREI9JEdEQlxcIEdEQkFSR1M9LWRhdGEtZGlyZWN0b3J5XFxc XFxcICRHREJfREFUQV9ESVJFQ1RPUllcXCBzaFxcICR7c3JjZGlyfS8uLi9nc3RhY2suc2hcXCAk cGlkXFw7ZWNob1xcIEdTVEFDSy1FTkQiCiArc2V0IHJlcyBbcmVtb3RlX3NwYXduIGhvc3QgJGNv bW1hbmRdOwogK2lmIHsgJHJlcyA8IDAgfHwgJHJlcyA9PSAiIiB9IHsKICsgICAgcGVycm9yICJT cGF3bmluZyAkY29tbWFuZCBmYWlsZWQuIgoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUtcnBtLWxpYnJwbS13b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDJiODYyYTAuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGli cnBtLXdvcmthcm91bmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1Gcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdE QiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6 MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxpYnJwbS13 b3JrYXJvdW5kLnBhdGNoCi0KLTs7IFdvcmthcm91bmQgbGlicnBtIEJaIDY0MzAzMSBkdWUgdG8g aXRzIHVuZXhwZWN0ZWQgZXhpdCgpIGNhbGxzIChCWiA2NDI4NzkpLgotOzs9cHVzaCtqYW4KLQot ZGlmZiAtLWdpdCBhL2dkYi9wcm9jLXNlcnZpY2UubGlzdCBiL2dkYi9wcm9jLXNlcnZpY2UubGlz dAotLS0tIGEvZ2RiL3Byb2Mtc2VydmljZS5saXN0Ci0rKysgYi9nZGIvcHJvYy1zZXJ2aWNlLmxp c3QKLUBAIC0zNyw0ICszNyw3IEBACi0gICBwc19wc3RvcDsKLSAgIHBzX3B0cmVhZDsKLSAgIHBz X3B0d3JpdGU7Ci0rCi0rICAvKiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaCAqLwot KyAgcnBtc3FFbmFibGU7Ci0gfTsKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRl LXJwbS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAxNDAxM2VmLi4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnVpbGRp ZC1sb2NhdGUtcnBtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA4NCArMCwwIEBACi1Gcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVl dHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyMiBGZWIgMjAyMyAyMjozMDo0 MCAtMDcwMAotU3ViamVjdDogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKLQotOzs9 cHVzaCtqYW4KLQotZGlmZiAtLWdpdCBhL2dkYi9hY2xvY2FsLm00IGIvZ2RiL2FjbG9jYWwubTQK LS0tLSBhL2dkYi9hY2xvY2FsLm00Ci0rKysgYi9nZGIvYWNsb2NhbC5tNAotQEAgLTExLDcgKzEx LDIyMyBAQAotICMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQQotICMgUEFSVElDVUxBUiBQVVJQT1NFLgotIAotKyMgcGtnLm00IC0g TWFjcm9zIHRvIGxvY2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAgICAgICAgICAgIC0qLSBB dXRvY29uZiAtKi0KLSsjIHNlcmlhbCAxIChwa2ctY29uZmlnLTAuMjQpCi0rIwotKyMgQ29weXJp Z2h0IMKpIDIwMDQgU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAbmV0c3BsaXQuY29tPi4KLSsj Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsjIFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VCi0rIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyMKLSsjIEFzIGEg c3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5 b3UKLSsjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29u dGFpbnMgYQotKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5 b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKLSsjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0 aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLSsjIFBLR19QUk9H X1BLR19DT05GSUcoW01JTi1WRVJTSU9OXSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLStBQ19ERUZVTihbUEtHX1BST0dfUEtHX0NPTkZJR10sCi0rW200X3BhdHRlcm5f Zm9yYmlkKFteXz9QS0dfW0EtWl9dKyRdKQotK200X3BhdHRlcm5fYWxsb3coW15QS0dfQ09ORklH KF8oUEFUSHxMSUJESVJ8U1lTUk9PVF9ESVJ8QUxMT1dfU1lTVEVNXyhDRkxBR1N8TElCUykpKT8k XSkKLSttNF9wYXR0ZXJuX2FsbG93KFteUEtHX0NPTkZJR18oRElTQUJMRV9VTklOU1RBTExFRHxU T1BfQlVJTERfRElSfERFQlVHX1NQRVcpJF0pCi0rQUNfQVJHX1ZBUihbUEtHX0NPTkZJR10sIFtw YXRoIHRvIHBrZy1jb25maWcgdXRpbGl0eV0pCi0rQUNfQVJHX1ZBUihbUEtHX0NPTkZJR19QQVRI XSwgW2RpcmVjdG9yaWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGhdKQotK0FD X0FSR19WQVIoW1BLR19DT05GSUdfTElCRElSXSwgW3BhdGggb3ZlcnJpZGluZyBwa2ctY29uZmln J3MgYnVpbHQtaW4gc2VhcmNoIHBhdGhdKQotKwotK2lmIHRlc3QgIngkYWNfY3ZfZW52X1BLR19D T05GSUdfc2V0IiAhPSAieHNldCI7IHRoZW4KLSsJQUNfUEFUSF9UT09MKFtQS0dfQ09ORklHXSwg W3BrZy1jb25maWddKQotK2ZpCi0raWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0rCV9w a2dfbWluX3ZlcnNpb249bTRfZGVmYXVsdChbJDFdLCBbMC45LjBdKQotKwlBQ19NU0dfQ0hFQ0tJ TkcoW3BrZy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbl0pCi0r CWlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAkX3BrZ19taW5fdmVy c2lvbjsgdGhlbgotKwkJQUNfTVNHX1JFU1VMVChbeWVzXSkKLSsJZWxzZQotKwkJQUNfTVNHX1JF U1VMVChbbm9dKQotKwkJUEtHX0NPTkZJRz0iIgotKwlmaQotK2ZpW11kbmwKLStdKSMgUEtHX1BS T0dfUEtHX0NPTkZJRwotKwotKyMgUEtHX0NIRUNLX0VYSVNUUyhNT0RVTEVTLCBbQUNUSU9OLUlG LUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQotKyMKLSsjIENoZWNrIHRvIHNlZSB3aGV0 aGVyIGEgcGFydGljdWxhciBzZXQgb2YgbW9kdWxlcyBleGlzdHMuICBTaW1pbGFyCi0rIyB0byBQ S0dfQ0hFQ0tfTU9EVUxFUygpLCBidXQgZG9lcyBub3Qgc2V0IHZhcmlhYmxlcyBvciBwcmludCBl cnJvcnMuCi0rIwotKyMgUGxlYXNlIHJlbWVtYmVyIHRoYXQgbTQgZXhwYW5kcyBBQ19SRVFVSVJF KFtQS0dfUFJPR19QS0dfQ09ORklHXSkKLSsjIG9ubHkgYXQgdGhlIGZpcnN0IG9jY3VyZW5jZSBp biBjb25maWd1cmUuYWMsIHNvIGlmIHRoZSBmaXJzdCBwbGFjZQotKyMgaXQncyBjYWxsZWQgbWln aHQgYmUgc2tpcHBlZCAoc3VjaCBhcyBpZiBpdCBpcyB3aXRoaW4gYW4gImlmIiwgeW91Ci0rIyBo YXZlIHRvIGNhbGwgUEtHX0NIRUNLX0VYSVNUUyBtYW51YWxseQotKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLStBQ19ERUZV TihbUEtHX0NIRUNLX0VYSVNUU10sCi0rW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUdd KWRubAotK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0rICAgIEFDX1JVTl9MT0coWyRQ S0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkMSJdKTsgdGhlbgotKyAgbTRfZGVm YXVsdChbJDJdLCBbOl0pCi0rbTRfaWZ2YWxuKFskM10sIFtlbHNlCi0rICAkM10pZG5sCi0rZmld KQotKwotKyMgX1BLR19DT05GSUcoW1ZBUklBQkxFXSwgW0NPTU1BTkRdLCBbTU9EVUxFU10pCi0r IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSttNF9kZWZp bmUoW19QS0dfQ09ORklHXSwKLStbaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgotKyAgICBwa2dfY3Zf W10kMT0iJCQxIgotKyBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotKyAgICBQS0df Q0hFQ0tfRVhJU1RTKFskM10sCi0rICAgICAgICAgICAgICAgICAgICAgW3BrZ19jdl9bXSQxPWAk UEtHX0NPTkZJRyAtLVtdJDIgIiQzIiAyPi9kZXYvbnVsbGAKLSsJCSAgICAgIHRlc3QgIngkPyIg IT0gIngwIiAmJiBwa2dfZmFpbGVkPXllcyBdLAotKwkJICAgICBbcGtnX2ZhaWxlZD15ZXNdKQot KyBlbHNlCi0rICAgIHBrZ19mYWlsZWQ9dW50cmllZAotK2ZpW11kbmwKLStdKSMgX1BLR19DT05G SUcKLSsKLSsjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAotKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLStBQ19ERUZVTihbX1BLR19TSE9SVF9FUlJPUlNfU1VQUE9SVEVEXSwK LStbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCi0raWYgJFBLR19DT05GSUcgLS1h dGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KLSsgICAgICAgIF9wa2dfc2hvcnRf ZXJyb3JzX3N1cHBvcnRlZD15ZXMKLStlbHNlCi0rICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19z dXBwb3J0ZWQ9bm8KLStmaVtdZG5sCi0rXSkjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAot KwotKwotKyMgUEtHX0NIRUNLX01PRFVMRVMoVkFSSUFCTEUtUFJFRklYLCBNT0RVTEVTLCBbQUNU SU9OLUlGLUZPVU5EXSwKLSsjIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKLSsjCi0rIwotKyMgTm90 ZSB0aGF0IGlmIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhlIGZpcnN0IGNhbGwgdG8KLSsjIFBL R19DSEVDS19NT0RVTEVTIG1pZ2h0IG5vdCBoYXBwZW4sIHlvdSBzaG91bGQgYmUgc3VyZSB0byBp bmNsdWRlIGFuCi0rIyBleHBsaWNpdCBjYWxsIHRvIFBLR19QUk9HX1BLR19DT05GSUcgaW4geW91 ciBjb25maWd1cmUuYWMKLSsjCi0rIwotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLStBQ19ERUZVTihbUEtHX0NIRUNLX01P RFVMRVNdLAotK1tBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSlkbmwKLStBQ19BUkdf VkFSKFskMV1bX0NGTEFHU10sIFtDIGNvbXBpbGVyIGZsYWdzIGZvciAkMSwgb3ZlcnJpZGluZyBw a2ctY29uZmlnXSlkbmwKLStBQ19BUkdfVkFSKFskMV1bX0xJQlNdLCBbbGlua2VyIGZsYWdzIGZv ciAkMSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlkbmwKLSsKLStwa2dfZmFpbGVkPW5vCi0rQUNf TVNHX0NIRUNLSU5HKFtmb3IgJDFdKQotKwotK19QS0dfQ09ORklHKFskMV1bX0NGTEFHU10sIFtj ZmxhZ3NdLCBbJDJdKQotK19QS0dfQ09ORklHKFskMV1bX0xJQlNdLCBbbGlic10sIFskMl0pCi0r Ci0rbTRfZGVmaW5lKFtfUEtHX1RFWFRdLCBbQWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhl IGVudmlyb25tZW50IHZhcmlhYmxlcyAkMVtdX0NGTEFHUwotK2FuZCAkMVtdX0xJQlMgdG8gYXZv aWQgdGhlIG5lZWQgdG8gY2FsbCBwa2ctY29uZmlnLgotK1NlZSB0aGUgcGtnLWNvbmZpZyBtYW4g cGFnZSBmb3IgbW9yZSBkZXRhaWxzLl0pCi0rCi0raWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsg dGhlbgotKyAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotKyAgICAgICAgX1BLR19TSE9SVF9F UlJPUlNfU1VQUE9SVEVECi0rICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBw b3J0ZWQgPSB5ZXM7IHRoZW4KLSsJICAgICAgICAkMVtdX1BLR19FUlJPUlM9YCRQS0dfQ09ORklH IC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzIC0tbGlicyAiJDIiIDI+JjFg Ci0rICAgICAgICBlbHNlCi0rCSAgICAgICAgJDFbXV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAt LXByaW50LWVycm9ycyAtLWNmbGFncyAtLWxpYnMgIiQyIiAyPiYxYAotKyAgICAgICAgZmkKLSsJ IyBQdXQgdGhlIG5hc3R5IGVycm9yIG1lc3NhZ2UgaW4gY29uZmlnLmxvZyB3aGVyZSBpdCBiZWxv bmdzCi0rCWVjaG8gIiQkMVtdX1BLR19FUlJPUlMiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsKLSsJ bTRfZGVmYXVsdChbJDRdLCBbQUNfTVNHX0VSUk9SKAotK1tQYWNrYWdlIHJlcXVpcmVtZW50cyAo JDIpIHdlcmUgbm90IG1ldDoKLSsKLSskJDFfUEtHX0VSUk9SUwotKwotK0NvbnNpZGVyIGFkanVz dGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlvdQotK2lu c3RhbGxlZCBzb2Z0d2FyZSBpbiBhIG5vbi1zdGFuZGFyZCBwcmVmaXguCi0rCi0rX1BLR19URVhU XSlbXWRubAotKyAgICAgICAgXSkKLStlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0 aGVuCi0rICAgICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0rCW00X2RlZmF1bHQoWyQ0XSwgW0FD X01TR19GQUlMVVJFKAotK1tUaGUgcGtnLWNvbmZpZyBzY3JpcHQgY291bGQgbm90IGJlIGZvdW5k IG9yIGlzIHRvbyBvbGQuICBNYWtlIHN1cmUgaXQKLStpcyBpbiB5b3VyIFBBVEggb3Igc2V0IHRo ZSBQS0dfQ09ORklHIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBmdWxsCi0rcGF0aCB0byBw a2ctY29uZmlnLgotKwotK19QS0dfVEVYVAotKwotK1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0 dHA6Ly9wa2ctY29uZmlnLmZyZWVkZXNrdG9wLm9yZy8+Ll0pW11kbmwKLSsgICAgICAgIF0pCi0r ZWxzZQotKwkkMVtdX0NGTEFHUz0kcGtnX2N2X1tdJDFbXV9DRkxBR1MKLSsJJDFbXV9MSUJTPSRw a2dfY3ZfW10kMVtdX0xJQlMKLSsgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0rCSQzCi0r ZmlbXWRubAotK10pIyBQS0dfQ0hFQ0tfTU9EVUxFUwotKwotKwotKyMgUEtHX0lOU1RBTExESVIo RElSRUNUT1JZKQotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgU3Vic3RpdHV0ZXMg dGhlIHZhcmlhYmxlIHBrZ2NvbmZpZ2RpciBhcyB0aGUgbG9jYXRpb24gd2hlcmUgYSBtb2R1bGUK LSsjIHNob3VsZCBpbnN0YWxsIHBrZy1jb25maWcgLnBjIGZpbGVzLiBCeSBkZWZhdWx0IHRoZSBk aXJlY3RvcnkgaXMKLSsjICRsaWJkaXIvcGtnY29uZmlnLCBidXQgdGhlIGRlZmF1bHQgY2FuIGJl IGNoYW5nZWQgYnkgcGFzc2luZwotKyMgRElSRUNUT1JZLiBUaGUgdXNlciBjYW4gb3ZlcnJpZGUg dGhyb3VnaCB0aGUgLS13aXRoLXBrZ2NvbmZpZ2RpcgotKyMgcGFyYW1ldGVyLgotK0FDX0RFRlVO KFtQS0dfSU5TVEFMTERJUl0sCi0rW200X3B1c2hkZWYoW3BrZ19kZWZhdWx0XSwgW200X2RlZmF1 bHQoWyQxXSwgWycke2xpYmRpcn0vcGtnY29uZmlnJ10pXSkKLSttNF9wdXNoZGVmKFtwa2dfZGVz Y3JpcHRpb25dLAotKyAgICBbcGtnLWNvbmZpZyBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IEA8OkBd cGtnX2RlZmF1bHRbQDo+QF0pCi0rQUNfQVJHX1dJVEgoW3BrZ2NvbmZpZ2Rpcl0sCi0rICAgIFtB U19IRUxQX1NUUklORyhbLS13aXRoLXBrZ2NvbmZpZ2Rpcl0sIHBrZ19kZXNjcmlwdGlvbildLCwK LSsgICAgW3dpdGhfcGtnY29uZmlnZGlyPV1wa2dfZGVmYXVsdCkKLStBQ19TVUJTVChbcGtnY29u ZmlnZGlyXSwgWyR3aXRoX3BrZ2NvbmZpZ2Rpcl0pCi0rbTRfcG9wZGVmKFtwa2dfZGVmYXVsdF0p Ci0rbTRfcG9wZGVmKFtwa2dfZGVzY3JpcHRpb25dKQotK10pIGRubCBQS0dfSU5TVEFMTERJUgot KwotKwotKyMgUEtHX05PQVJDSF9JTlNUQUxMRElSKERJUkVDVE9SWSkKLSsjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSsjIFN1YnN0aXR1dGVzIHRoZSB2YXJpYWJsZSBub2FyY2hfcGtnY29u ZmlnZGlyIGFzIHRoZSBsb2NhdGlvbiB3aGVyZSBhCi0rIyBtb2R1bGUgc2hvdWxkIGluc3RhbGwg YXJjaC1pbmRlcGVuZGVudCBwa2ctY29uZmlnIC5wYyBmaWxlcy4gQnkKLSsjIGRlZmF1bHQgdGhl IGRpcmVjdG9yeSBpcyAkZGF0YWRpci9wa2djb25maWcsIGJ1dCB0aGUgZGVmYXVsdCBjYW4gYmUK LSsjIGNoYW5nZWQgYnkgcGFzc2luZyBESVJFQ1RPUlkuIFRoZSB1c2VyIGNhbiBvdmVycmlkZSB0 aHJvdWdoIHRoZQotKyMgLS13aXRoLW5vYXJjaC1wa2djb25maWdkaXIgcGFyYW1ldGVyLgotK0FD X0RFRlVOKFtQS0dfTk9BUkNIX0lOU1RBTExESVJdLAotK1ttNF9wdXNoZGVmKFtwa2dfZGVmYXVs dF0sIFttNF9kZWZhdWx0KFskMV0sIFsnJHtkYXRhZGlyfS9wa2djb25maWcnXSldKQotK200X3B1 c2hkZWYoW3BrZ19kZXNjcmlwdGlvbl0sCi0rICAgIFtwa2ctY29uZmlnIGFyY2gtaW5kZXBlbmRl bnQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBAPDpAXXBrZ19kZWZhdWx0W0A6PkBdKQotK0FDX0FS R19XSVRIKFtub2FyY2gtcGtnY29uZmlnZGlyXSwKLSsgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdp dGgtbm9hcmNoLXBrZ2NvbmZpZ2Rpcl0sIHBrZ19kZXNjcmlwdGlvbildLCwKLSsgICAgW3dpdGhf bm9hcmNoX3BrZ2NvbmZpZ2Rpcj1dcGtnX2RlZmF1bHQpCi0rQUNfU1VCU1QoW25vYXJjaF9wa2dj b25maWdkaXJdLCBbJHdpdGhfbm9hcmNoX3BrZ2NvbmZpZ2Rpcl0pCi0rbTRfcG9wZGVmKFtwa2df ZGVmYXVsdF0pCi0rbTRfcG9wZGVmKFtwa2dfZGVzY3JpcHRpb25dKQotK10pIGRubCBQS0dfTk9B UkNIX0lOU1RBTExESVIKLSsKLSsKLSsjIFBLR19DSEVDS19WQVIoVkFSSUFCTEUsIE1PRFVMRSwg Q09ORklHLVZBUklBQkxFLAotKyMgW0FDVElPTi1JRi1GT1VORF0sIFtBQ1RJT04tSUYtTk9ULUZP VU5EXSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsj IFJldHJpZXZlcyB0aGUgdmFsdWUgb2YgdGhlIHBrZy1jb25maWcgdmFyaWFibGUgZm9yIHRoZSBn aXZlbiBtb2R1bGUuCi0rQUNfREVGVU4oW1BLR19DSEVDS19WQVJdLAotK1tBQ19SRVFVSVJFKFtQ S0dfUFJPR19QS0dfQ09ORklHXSlkbmwKLStBQ19BUkdfVkFSKFskMV0sIFt2YWx1ZSBvZiAkMyBm b3IgJDIsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZ10pZG5sCi0rCi0rX1BLR19DT05GSUcoWyQxXSwg W3ZhcmlhYmxlPSJdWyQzXVsiXSwgWyQyXSkKLStBU19WQVJfQ09QWShbJDFdLCBbcGtnX2N2X11b JDFdKQotKwotK0FTX1ZBUl9JRihbJDFdLCBbIiJdLCBbJDVdLCBbJDRdKWRubAotK10pIyBQS0df Q0hFQ0tfVkFSCi0rCi0gbTRfaWZuZGVmKFtBQ19DT05GSUdfTUFDUk9fRElSU10sIFttNF9kZWZ1 bihbX0FNX0NPTkZJR19NQUNST19ESVJTXSwgW10pbTRfZGVmdW4oW0FDX0NPTkZJR19NQUNST19E SVJTXSwgW19BTV9DT05GSUdfTUFDUk9fRElSUygkQCldKV0pCi0rCi0gIyBBTV9BVVhfRElSX0VY UEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25m IC0qLQotIAotICMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi1kaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwot LS0tIGEvZ2RiL2J1aWxkLWlkLmMKLSsrKyBiL2dkYi9idWlsZC1pZC5jCi1AQCAtNzgwLDEwICs3 ODAsMTAgQEAgbWlzc2luZ19ycG1fZW5saXN0XzEgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQg dmVyaWZ5X3ZlbmRvcikKLSAgIHN0YXRpYyBycG10cyAoKnJwbXRzQ3JlYXRlX3ApICh2b2lkKTsK LSAgIGV4dGVybiBycG10cyBycG10c0ZyZWUocnBtdHMgdHMpOwotICAgc3RhdGljIHJwbXRzICgq cnBtdHNGcmVlX3ApIChycG10cyB0cyk7Ci0tICBleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJw bXRzSW5pdEl0ZXJhdG9yKGNvbnN0IHJwbXRzIHRzLCBycG1UYWcgcnBtdGFnLAotKyAgZXh0ZXJu IHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYXRvcihjb25zdCBycG10cyB0cywgcnBt RGJpVGFnVmFsIHJwbXRhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgdm9pZCAqIGtleXAsIHNpemVfdCBrZXlsZW4pOwotICAgc3RhdGljIHJw bWRiTWF0Y2hJdGVyYXRvciAoKnJwbXRzSW5pdEl0ZXJhdG9yX3ApIChjb25zdCBycG10cyB0cywK LS0JCQkJCQkgICAgcnBtVGFnIHJwbXRhZywKLSsJCQkJCQkgICAgcnBtRGJpVGFnVmFsIHJwbXRh ZywKLSAJCQkJCQkgICAgY29uc3Qgdm9pZCAqa2V5cCwKLSAJCQkJCQkgICAgc2l6ZV90IGtleWxl bik7Ci0gI2Vsc2UJLyogIURMT1BFTl9MSUJSUE0gKi8KLUBAIC04MzgsNyArODM4LDcgQEAgbWlz c2luZ19ycG1fZW5saXN0XzEgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3ZlbmRv cikKLSAJICAgICAgJiYgKHJwbWRiTmV4dEl0ZXJhdG9yX3AgPSAoSGVhZGVyICgqKSAocnBtZGJN YXRjaEl0ZXJhdG9yIG1pKSkgZGxzeW0gKGgsICJycG1kYk5leHRJdGVyYXRvciIpKQotIAkgICAg ICAmJiAocnBtdHNDcmVhdGVfcCA9IChycG10cyAoKikgKHZvaWQpKSBkbHN5bSAoaCwgInJwbXRz Q3JlYXRlIikpCi0gCSAgICAgICYmIChycG10c0ZyZWVfcCA9IChycG10cyAoKikgKHJwbXRzIHRz KSkgZGxzeW0gKGgsICJycG10c0ZyZWUiKSkKLS0JICAgICAgJiYgKHJwbXRzSW5pdEl0ZXJhdG9y X3AgPSAocnBtZGJNYXRjaEl0ZXJhdG9yICgqKSAoY29uc3QgcnBtdHMgdHMsIHJwbVRhZyBycG10 YWcsIGNvbnN0IHZvaWQgKmtleXAsIHNpemVfdCBrZXlsZW4pKSBkbHN5bSAoaCwgInJwbXRzSW5p dEl0ZXJhdG9yIikpKSkKLSsJICAgICAgJiYgKHJwbXRzSW5pdEl0ZXJhdG9yX3AgPSAocnBtZGJN YXRjaEl0ZXJhdG9yICgqKSAoY29uc3QgcnBtdHMgdHMsIHJwbURiaVRhZ1ZhbCBycG10YWcsIGNv bnN0IHZvaWQgKmtleXAsIHNpemVfdCBrZXlsZW4pKSBkbHN5bSAoaCwgInJwbXRzSW5pdEl0ZXJh dG9yIikpKSkKLSAJICB7Ci0gCSAgICB3YXJuaW5nIChfKCJPcGVuZWQgbGlicmFyeSBcIiVzXCIg aXMgaW5jb21wYXRpYmxlICglcyksICIKLSAJCSAgICAgICJtaXNzaW5nIGRlYnVnaW5mb3Mgbm90 aWZpY2F0aW9ucyB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQiKSwKLUBAIC05MjYsNyArOTI2LDcgQEAg bWlzc2luZ19ycG1fZW5saXN0XzEgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3Zl bmRvcikKLSAKLSAJICAvKiBSUE1EQklfUEFDS0FHRVMgcmVxdWlyZXMga2V5bGVuID09IHNpemVv ZiAoaW50KS4gICovCi0gCSAgLyogUlBNREJJX0xBQkVMIGlzIGFuIGludGVyZmFjZSBmb3IgTlZS LWJhc2VkIGRiaUZpbmRCeUxhYmVsKCkuICAqLwotLQkgIG1pX2RlYnVnaW5mbyA9IHJwbXRzSW5p dEl0ZXJhdG9yX3AgKHRzLCAocnBtVGFnKSBSUE1EQklfTEFCRUwsIGRlYnVnaW5mbywgMCk7Ci0r CSAgbWlfZGVidWdpbmZvID0gcnBtdHNJbml0SXRlcmF0b3JfcCAodHMsIChycG1EYmlUYWdWYWwp IFJQTURCSV9MQUJFTCwgZGVidWdpbmZvLCAwKTsKLSAJICB4ZnJlZSAoZGVidWdpbmZvKTsKLSAJ ICBpZiAobWlfZGVidWdpbmZvKQotIAkgICAgewotZGlmZiAtLWdpdCBhL2dkYi9jb25maWcuaW4g Yi9nZGIvY29uZmlnLmluCi0tLS0gYS9nZGIvY29uZmlnLmluCi0rKysgYi9nZGIvY29uZmlnLmlu Ci1AQCAtNDIsNiArNDIsOSBAQAotIC8qIEhhbmRsZSAuY3RmIHR5cGUtaW5mbyBzZWN0aW9ucyAq LwotICN1bmRlZiBFTkFCTEVfTElCQ1RGCi0gCi0rLyogbGlicnBtIHZlcnNpb24gc3BlY2lmaWMg bGlicmFyeSBuYW1lIHRvIGRsb3Blbi4gKi8KLSsjdW5kZWYgRExPUEVOX0xJQlJQTQotKwotIC8q IERlZmluZSB0byAxIGlmIHRyYW5zbGF0aW9uIG9mIHByb2dyYW0gbWVzc2FnZXMgdG8gdGhlIHVz ZXIncyBuYXRpdmUKLSAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCi0gI3VuZGVmIEVOQUJM RV9OTFMKLUBAIC0yNjUsNiArMjY4LDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgYG0nIGxpYnJhcnkgKC1sbSkuICovCi0gI3VuZGVmIEhBVkVfTElCTQotIAotKy8qIERlZmlu ZSBpZiBsaWJycG0gbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwotKyN1bmRlZiBIQVZFX0xJQlJQ TQotKwotIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGlidW53aW5kLWlhNjQuaD4g aGVhZGVyIGZpbGUuICovCi0gI3VuZGVmIEhBVkVfTElCVU5XSU5EX0lBNjRfSAotIAotZGlmZiAt LWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi0tLS0gYS9nZGIvY29uZmlndXJl Ci0rKysgYi9nZGIvY29uZmlndXJlCi1AQCAtNzc4LDYgKzc3OCwxMSBAQCBBTURfREJHQVBJX0NG TEFHUwotIEVOQUJMRV9CRkRfNjRfQklUX0ZBTFNFCi0gRU5BQkxFX0JGRF82NF9CSVRfVFJVRQot IHN1YmRpcnMKLStSUE1fTElCUwotK1JQTV9DRkxBR1MKLStQS0dfQ09ORklHX0xJQkRJUgotK1BL R19DT05GSUdfUEFUSAotK1BLR19DT05GSUcKLSBHREJfREFUQURJUgotIERFQlVHRElSCi0gTUFL RUlORk9fRVhUUkFfRkxBR1MKLUBAIC05MTEsNiArOTE2LDcgQEAgd2l0aF9nZGJfZGF0YWRpcgot IHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKLSB3aXRoX2F1dG9fbG9hZF9kaXIKLSB3aXRoX2F1dG9f bG9hZF9zYWZlX3BhdGgKLSt3aXRoX3JwbQotIGVuYWJsZV90YXJnZXRzCi0gZW5hYmxlXzY0X2Jp dF9iZmQKLSB3aXRoX2FtZF9kYmdhcGkKLUBAIC05ODgsNiArOTk0LDggQEAgQU1EX0RCR0FQSV9D RkxBR1MKLSBBTURfREJHQVBJX0xJQlMKLSBERUJVR0lORk9EX0NGTEFHUwotIERFQlVHSU5GT0Rf TElCUwotK1JQTV9DRkxBR1MKLStSUE1fTElCUwotIFlBQ0MKLSBZRkxBR1MKLSBaU1REX0NGTEFH UwotQEAgLTE2NzksNiArMTY4Nyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLWFt ZC1kYmdhcGkgICAgICAgc3VwcG9ydCBmb3IgdGhlIGFtZC1kYmdhcGkgdGFyZ2V0ICh5ZXMgLyBu byAvIGF1dG8pCi0gICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBFbmFibGUgZGVidWdpbmZvIGxv b2t1cHMgd2l0aCBkZWJ1Z2luZm9kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoYXV0by95 ZXMvbm8pCi0rICAtLXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9y IG1pc3NpbmcgZGVidWdpbmZvcyAoeWVzL25vLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAgIC0td2l0aC1saWJ1bndpbmQtaWE2NCAgIHVzZSBsaWJ1 bndpbmQgZnJhbWUgdW53aW5kaW5nIGZvciBpYTY0IHRhcmdldHMKLSAgIC0td2l0aC1jdXJzZXMg ICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNhcAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAgLTE3NTksNiArMTc2OSw4IEBA IFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgICAgICAgICAgICAg QyBjb21waWxlciBmbGFncyBmb3IgREVCVUdJTkZPRCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0g ICBERUJVR0lORk9EX0xJQlMKLSAgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgREVCVUdJ TkZPRCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0rICBSUE1fQ0ZMQUdTICBDIGNvbXBpbGVyIGZs YWdzIGZvciBSUE0sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotKyAgUlBNX0xJQlMgICAgbGlua2Vy IGZsYWdzIGZvciBSUE0sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICAgWUFDQyAgICAgICAgVGhl IGBZZXQgQW5vdGhlciBDb21waWxlciBDb21waWxlcicgaW1wbGVtZW50YXRpb24gdG8gdXNlLgot ICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGZpcnN0IHByb2dyYW0gZm91bmQgb3V0IG9m OiBgYmlzb24gLXknLCBgYnlhY2MnLAotICAgICAgICAgICAgICAgYHlhY2MnLgotQEAgLTE4MDM5 LDYgKzE4MDUxLDQ5NSBAQCBfQUNFT0YKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1Ci0gJGFzX2Vj aG8gIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID4mNjsgfQotIAotKyMgSW50ZWdyYXRpb24g d2l0aCBycG0gbGlicmFyeSB0byBzdXBwb3J0IG1pc3NpbmcgZGVidWdpbmZvIHN1Z2dlc3Rpb25z LgotKyMgLS13aXRob3V0LXJwbTogRGlzYWJsZSBhbnkgcnBtIHN1cHBvcnQuCi0rIyAtLXdpdGgt cnBtPWxpYm5hbWUuc286IFRyeSB0byBkeW5hbWljYWxseSBvcGVuIGBsaWJuYW1lLnNvJyBkdXJp bmcgcnVudGltZS4KLSsjICAgRXZlbiB3aXRoIHJ1bnRpbWUgbWlzc2luZyBgbGlibmFtZS5zbycg R0RCIHdpbGwgc3RpbGwgb3RoZXIgcnVuIGNvcnJlY3RseS4KLSsjICAgTWlzc2luZyBgbGlibmFt ZS5zbycgZHVyaW5nIC4vY29uZmlndXJlIHdpbGwgYWJvcnQgdGhlIGNvbmZpZ3VyYXRpb24uCi0r IyAtLXdpdGgtcnBtPWxpYnJwbS5zbzogTGlrZSBgLS13aXRoLXJwbT1saWJuYW1lLnNvJyBidXQg dHJ5IHRvIGZpbmQgc3BlY2lmaWMKLSsjICAgbWlub3IgdmVyc2lvbiBmaXJzdCBzdWNoIGFzIGBs aWJycG0tNC42LnNvJyBhcyBtaW5vciB2ZXJzaW9uIGRpZmZlcmVuY2VzCi0rIyAgIG1lYW4gQVBJ K0FCSSBpbmNvbXBhdGliaWxpdHkuICBJZiB0aGUgc3BlY2lmaWMgbWF0Y2ggdmVyc2lvbmVkIGxp YnJhcnkgbmFtZQotKyMgICBjb3VsZCBub3QgYmUgZm91bmQgc3RpbGwgb3BlbiBkeW5hbWljYWxs eSBhdCBsZWFzdCBgbGlicnBtLnNvJy4KLSsjIC0td2l0aC1ycG06IExpa2UgYC0td2l0aC1ycG09 bGlicnBtLnNvJyBidXQgaWYgYW55IG9mIGl0cyBkZXRlY3Rpb24gZmFpbHMgdHJ5Ci0rIyAgIHRv IGZpbmQgbGlicnBtIGZvciBjb21waWxhdGlvbi10aW1lIGxpbmtpbmcgYnkgcGtnLWNvbmZpZy4g IEdEQiBiaW5hcnkgd2lsbAotKyMgICBiZSBwcm9iYWJseSBsaW5rZWQgd2l0aCB0aGUgdmVyc2lv biBzcGVjaWZpYyBsaWJyYXJ5IChhcyBgbGlicnBtLTQuNi5zbycpLgotKyMgICBGYWlsdXJlIHRv IGZpbmQgbGlicnBtIGJ5IHBrZy1jb25maWcgd2lsbCBhYm9ydCB0aGUgY29uZmlndXJhdGlvbi4K LSsjIChkZWZhdWx0KSAtLXdpdGgtcnBtPWF1dG86IExpa2UgYC0td2l0aC1ycG09bGlicnBtLnNv JyBidXQgaWYgZXZlbiBwa2ctY29uZmlnCi0rIyAgIGNhbm5vdCBmaW5kIGxpYnJwbSB1c2UgdG8g dGhlIHJwbWxlc3MgY29tcGlsYXRpb24gKGxpa2UgYC0td2l0aG91dC1ycG0nKS4KLSsKLSsKLSsj IENoZWNrIHdoZXRoZXIgLS13aXRoLXJwbSB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX3Jw bStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX3JwbTsKLStlbHNlCi0rICB3 aXRoX3JwbT0iYXV0byIKLStmaQotKwotKwotKwotKwotK2lmIHRlc3QgIngkd2l0aF9ycG0iICE9 ICJ4bm8iOyB0aGVuCi0rICBpZiB0ZXN0ICJ4JHdpdGhfcnBtIiA9ICJ4eWVzIjsgdGhlbgotKyAg ICBMSUJSUE09ImxpYnJwbS5zbyIKLSsgICAgUlBNX1JFUVVJUkU9dHJ1ZQotKyAgICBETE9QRU5f UkVRVUlSRT1mYWxzZQotKyAgZWxpZiB0ZXN0ICJ4JHdpdGhfcnBtIiA9ICJ4YXV0byI7IHRoZW4K LSsgICAgTElCUlBNPSJsaWJycG0uc28iCi0rICAgIFJQTV9SRVFVSVJFPWZhbHNlCi0rICAgIERM T1BFTl9SRVFVSVJFPWZhbHNlCi0rICBlbHNlCi0rICAgIExJQlJQTT0iJHdpdGhfcnBtIgotKyAg ICBSUE1fUkVRVUlSRT10cnVlCi0rICAgIERMT1BFTl9SRVFVSVJFPXRydWUKLSsgIGZpCi0rICBM SUJSUE1fU1RSSU5HPSciJyIkTElCUlBNIiciJwotKwotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzcGVjaWZpYyBsaWJycG0gdmVyc2lvbiIgPiY1 Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3BlY2lmaWMgbGlicnBtIHZlcnNpb24uLi4gIiA+JjY7 IH0KLSsgIEhBVkVfRExPUEVOX0xJQlJQTT1mYWxzZQotKyAgc2F2ZV9MSUJTPSIkTElCUyIKLSsg IExJQlM9IiRMSUJTIC1sZGwiCi0rICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsg dGhlbiA6Ci0rICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJy b3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAk YWNfcHdkJzoiID4mMjt9Ci0rYXNfZm5fZXJyb3IgImNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdo aWxlIGNyb3NzIGNvbXBpbGluZwotK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMu IiAiJExJTkVOTyIgNTsgfQotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0rI2luY2x1ZGUgPHJw bS9ycG1saWIuaD4KLSsjaW5jbHVkZSA8ZGxmY24uaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsj aW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgICAgdm9pZCAq aDsKLSsgICAgY29uc3QgY2hhciAqY29uc3QgKnJwbXZlcnA7Ci0rICAgIEZJTEUgKmY7Ci0rCi0r ICAgIGYgPSBmb3BlbiAoImNvbmZ0ZXN0Lm91dCIsICJ3Iik7Ci0rICAgIGlmICghZikKLSsgICAg ICB7Ci0rCWZwcmludGYgKHN0ZGVyciwgIkNhbm5vdCB3cml0ZSBcIiVzXCI6ICVzXG4iLCAiY29u ZnRlc3Qub3V0IiwKLSsJCSBzdHJlcnJvciAoZXJybm8pKTsKLSsJcmV0dXJuIDE7Ci0rICAgICAg fQotKyAgICBoID0gZGxvcGVuICgkTElCUlBNX1NUUklORywgUlRMRF9MQVpZKTsKLSsgICAgaWYg KCFoKQotKyAgICAgIHsKLSsJZnByaW50ZiAoc3RkZXJyLCAiZGxvcGVuIChcIiVzXCIpOiAlc1xu IiwgJExJQlJQTV9TVFJJTkcsIGRsZXJyb3IgKCkpOwotKwlyZXR1cm4gMTsKLSsgICAgICB9Ci0r ICAgIHJwbXZlcnAgPSBkbHN5bSAoaCwgIlJQTVZFUlNJT04iKTsKLSsgICAgaWYgKCFycG12ZXJw KQotKyAgICAgIHsKLSsJZnByaW50ZiAoc3RkZXJyLCAiZGxzeW0gKFwiUlBNVkVSU0lPTlwiKTog JXNcbiIsIGRsZXJyb3IgKCkpOwotKwlyZXR1cm4gMTsKLSsgICAgICB9Ci0rICAgIGZwcmludGYg KHN0ZGVyciwgIlJQTVZFUlNJT04gaXM6IFwiIik7Ci0rICAgIGZwcmludGYgKHN0ZGVyciwgIiVz XCJcbiIsICpycG12ZXJwKTsKLSsKLSsgICAgLyogVHJ5IHRvIGZpbmQgdGhlIHNwZWNpZmljIGxp YnJwbSB2ZXJzaW9uIG9ubHkgZm9yICJsaWJycG0uc28iIGFzIHdlIGRvCi0rICAgICAgIG5vdCBr bm93IGhvdyB0byBhc3NlbWJsZSB0aGUgdmVyc2lvbiBzdHJpbmcgb3RoZXJ3aXNlLiAgKi8KLSsK LSsgICAgaWYgKHN0cmNtcCAoImxpYnJwbS5zbyIsICRMSUJSUE1fU1RSSU5HKSAhPSAwKQotKyAg ICAgIHsKLSsJZnByaW50ZiAoZiwgIiVzXG4iLCAkTElCUlBNX1NUUklORyk7Ci0rCXJldHVybiAw OwotKyAgICAgIH0KLSsgICAgZWxzZQotKyAgICAgIHsKLSsJY2hhciAqaDJfbmFtZTsKLSsJdm9p ZCAqaDI7Ci0rCWludCBtYWpvciwgbWlub3I7Ci0rCi0rCWlmIChzc2NhbmYgKCpycG12ZXJwLCAi JWQuJWQiLCAmbWFqb3IsICZtaW5vcikgIT0gMikKLSsJICB7Ci0rCSAgICBmcHJpbnRmIChzdGRl cnIsICJVbmFibGUgdG8gcGFyc2UgUlBNVkVSU0lPTi5cbiIpOwotKwkgICAgZnByaW50ZiAoZiwg IiVzXG4iLCAkTElCUlBNX1NUUklORyk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICB9Ci0rCS8qIEF2 b2lkIHRoZSBzcXVhcmUgYnJhY2tldHMgYnkgbWFsbG9jLiAgKi8KLSsJaDJfbmFtZSA9IG1hbGxv YyAoNjQpOwotKwlzcHJpbnRmIChoMl9uYW1lLCAibGlicnBtLSVkLiVkLnNvIiwgbWFqb3IsIG1p bm9yKTsKLSsJaDIgPSBkbG9wZW4gKGgyX25hbWUsIFJUTERfTEFaWSk7Ci0rCWlmICghaDIpCi0r CSAgewotKwkgICAgZnByaW50ZiAoc3RkZXJyLCAiZGxvcGVuIChcIiVzXCIpOiAlc1xuIiwgaDJf bmFtZSwgZGxlcnJvciAoKSk7Ci0rCSAgICBmcHJpbnRmIChmLCAiJXNcbiIsICRMSUJSUE1fU1RS SU5HKTsKLSsJICAgIHJldHVybiAwOwotKwkgIH0KLSsJaWYgKGgyICE9IGgpCi0rCSAgewotKwkg ICAgZnByaW50ZiAoc3RkZXJyLCAiZGxvcGVuIG9mIFwiJXNcIiBhbmQgXCIlc1wiIGFyZSBkaWZm ZXJlbnQuXG4iLAotKwkJICAgICAkTElCUlBNX1NUUklORywgaDJfbmFtZSk7Ci0rCSAgICBmcHJp bnRmIChmLCAiJXNcbiIsICRMSUJSUE1fU1RSSU5HKTsKLSsJICAgIHJldHVybiAwOwotKwkgIH0K LSsJLyogRm91bmQgdGhlIHZhbGlkIC5zbyBuYW1lIHdpdGggYSBzcGVjaWZpYyB2ZXJzaW9uLiAg Ki8KLSsJZnByaW50ZiAoZiwgIiVzXG4iLCBoMl9uYW1lKTsKLSsJcmV0dXJuIDA7Ci0rICAgICAg fQotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X3J1 biAiJExJTkVOTyI7IHRoZW4gOgotKwotKyAgICBETE9QRU5fTElCUlBNPSJgY2F0IGNvbmZ0ZXN0 Lm91dGAiCi0rICAgIGlmIHRlc3QgIngkRExPUEVOX0xJQlJQTSIgIT0gIngiOyB0aGVuCi0rICAg ICAgSEFWRV9ETE9QRU5fTElCUlBNPXRydWUKLSsgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMT1BFTl9MSUJSUE0iID4mNQotKyRhc19lY2hv ICIkRExPUEVOX0xJQlJQTSIgPiY2OyB9Ci0rICAgIGZpCi0rCi0rZmkKLStybSAtZiBjb3JlICou Y29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBc Ci0rICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAot K2ZpCi0rCi0rICBybSAtZiBjb25mdGVzdC5vdXQKLSsKLSsKLSsKLSsgIGlmICRIQVZFX0RMT1BF Tl9MSUJSUE07IHRoZW4KLSsKLSsgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBycG0gbGlicmFyeSBBUEkgY29tcGF0aWJpbGl0eSIgPiY1Ci0rJGFz X2VjaG9fbiAiY2hlY2tpbmcgcnBtIGxpYnJhcnkgQVBJIGNvbXBhdGliaWxpdHkuLi4gIiA+JjY7 IH0KLSsgICAgIyBUaGUgY29tcGlsYXRpb24gcmVxdWlyZXMgLVdlcnJvciB0byB2ZXJpZnkgYW55 dGhpbmcuCi0rICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKyAgICBDRkxBR1M9IiRDRkxBR1Mg LVdlcnJvciIKLSsgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLSsvKiBEdXBsaWNhdGUgaGVyZSB0aGUgZGVj bGFyYXRpb25zIHRvIHZlcmlmeSB0aGV5IG1hdGNoICJlbGZyZWFkLmMiLiAgKi8KLSsjaW5jbHVk ZSA8cnBtL3JwbWxpYi5oPgotKyNpbmNsdWRlIDxycG0vcnBtdHMuaD4KLSsjaW5jbHVkZSA8cnBt L3JwbWRiLmg+Ci0rI2luY2x1ZGUgPHJwbS9oZWFkZXIuaD4KLStleHRlcm4gY2hhciAqIGhlYWRl ckZvcm1hdChIZWFkZXIgaCwgY29uc3QgY2hhciAqIGZtdCwgZXJybXNnX3QgKiBlcnJtc2cpOwot K2V4dGVybiBpbnQgcnBtUmVhZENvbmZpZ0ZpbGVzKGNvbnN0IGNoYXIgKiBmaWxlLCBjb25zdCBj aGFyICogdGFyZ2V0KTsKLStleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbWRiRnJlZUl0ZXJh dG9yKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSk7Ci0rZXh0ZXJuIEhlYWRlciBycG1kYk5leHRJdGVy YXRvcihycG1kYk1hdGNoSXRlcmF0b3IgbWkpOwotK2V4dGVybiBycG10cyBycG10c0NyZWF0ZSh2 b2lkKTsKLStleHRlcm4gcnBtdHMgcnBtdHNGcmVlKHJwbXRzIHRzKTsKLStleHRlcm4gcnBtZGJN YXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0ZXJhdG9yKGNvbnN0IHJwbXRzIHRzLCBycG1EYmlUYWdW YWwgcnBtdGFnLAotKwkJCQkJICAgIGNvbnN0IHZvaWQgKiBrZXlwLCBzaXplX3Qga2V5bGVuKTsK LSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VP RgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsKLSsgICAgICBM SUJSUE1fQ09NUEFUPXRydWUKLSsgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSskYXNfZWNobyAieWVzIiA+JjY7IH0KLSsKLStl bHNlCi0rCi0rICAgICAgTElCUlBNX0NPTVBBVD1mYWxzZQotKyAgICAgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5v IiA+JjY7IH0KLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v YmpleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKLSsKLSsg ICAgaWYgISAkTElCUlBNX0NPTVBBVDsgdGhlbgotKyAgICAgIEhBVkVfRExPUEVOX0xJQlJQTT1m YWxzZQotKyAgICBmaQotKyAgZmkKLSsKLSsgIGlmICRIQVZFX0RMT1BFTl9MSUJSUE07IHRoZW4K LSsgICAgRExPUEVOX0xJQlJQTV9TVFJJTkc9JyInIiRETE9QRU5fTElCUlBNIiciJwotKwotK2Nh dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIERMT1BFTl9MSUJSUE0gJERMT1BFTl9M SUJSUE1fU1RSSU5HCi0rX0FDRU9GCi0rCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSUJS UE0gMSIgPj5jb25mZGVmcy5oCi0rCi0rICBlbHNlCi0rICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7 IH0KLSsgICAgTElCUz0iJHNhdmVfTElCUyIKLSsgICAgaWYgJERMT1BFTl9SRVFVSVJFOyB0aGVu Ci0rICAgICAgYXNfZm5fZXJyb3IgIlNwZWNpZmljIG5hbWUgJExJQlJQTSB3YXMgcmVxdWVzdGVk IGJ1dCBpdCBjb3VsZCBub3QgYmUgb3BlbmVkLiIgIiRMSU5FTk8iIDUKLSsgICAgZmkKLSsKLSsK LSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0ICJ4JGFjX2N2X2Vudl9QS0dfQ09ORklHX3NldCIgIT0g InhzZXQiOyB0aGVuCi0rCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1wa2ctY29uZmlnIiwg c28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190 b29sX3ByZWZpeH1wa2ctY29uZmlnOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hv X24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3Zf cGF0aF9QS0dfQ09ORklHK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkUEtHX0NPTkZJRyBpbgotKyAgW1xcL10qIHwgPzpb XFwvXSopCi0rICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRQS0dfQ09ORklHIiAjIExldCB0aGUg dXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSsgIDs7Ci0rICAqKQotKyAgYXNf c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgK LStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly PS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRh c190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFj X2N2X3BhdGhfUEtHX0NPTkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSsgICAg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9u ZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLSsgIDs7Ci0rZXNhYwotK2ZpCi0rUEtHX0NPTkZJRz0k YWNfY3ZfcGF0aF9QS0dfQ09ORklHCi0raWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0r ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBLR19D T05GSUciID4mNQotKyRhc19lY2hvICIkUEtHX0NPTkZJRyIgPiY2OyB9Ci0rZWxzZQotKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSsk YXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3Zf cGF0aF9QS0dfQ09ORklHIjsgdGhlbgotKyAgYWNfcHRfUEtHX0NPTkZJRz0kUEtHX0NPTkZJRwot KyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJwa2ctY29uZmlnIiwgc28gaXQgY2FuIGJl IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgcGtnLWNvbmZpZzsgYWNfd29y ZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4g IiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRytzZXR9IiA9 IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNh c2UgJGFjX3B0X1BLR19DT05GSUcgaW4KLSsgIFtcXC9dKiB8ID86W1xcL10qKQotKyAgYWNfY3Zf cGF0aF9hY19wdF9QS0dfQ09ORklHPSIkYWNfcHRfUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIg b3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0rICA7OwotKyAgKikKLSsgIGFzX3NhdmVf SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8K LSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0r ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwot KyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVz dF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9w YXRoX2FjX3B0X1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0rICAg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRv bmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rICA7OwotK2VzYWMKLStmaQotK2FjX3B0X1BLR19D T05GSUc9JGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRwotK2lmIHRlc3QgLW4gIiRhY19wdF9Q S0dfQ09ORklHIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRhY19wdF9QS0dfQ09ORklHIiA+JjUKLSskYXNfZWNobyAiJGFjX3B0X1BL R19DT05GSUciID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQot KwotKyAgaWYgdGVzdCAieCRhY19wdF9QS0dfQ09ORklHIiA9IHg7IHRoZW4KLSsgICAgUEtHX0NP TkZJRz0iIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2Fy bmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxl dCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90 IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7 OwotK2VzYWMKLSsgICAgUEtHX0NPTkZJRz0kYWNfcHRfUEtHX0NPTkZJRwotKyAgZmkKLStlbHNl Ci0rICBQS0dfQ09ORklHPSIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIgotK2ZpCi0rCi0rZmkKLStp ZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLSsJX3BrZ19taW5fdmVyc2lvbj0wLjkuMAot Kwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHBrZy1j b25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbiIgPiY1Ci0rJGFzX2Vj aG9fbiAiY2hlY2tpbmcgcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRfcGtnX21pbl92 ZXJzaW9uLi4uICIgPiY2OyB9Ci0rCWlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWct dmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbjsgdGhlbgotKwkJeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0rJGFzX2VjaG8gInllcyIgPiY2 OyB9Ci0rCWVsc2UKLSsJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSsJCVBLR19DT05GSUc9IiIK LSsJZmkKLStmaQotKwotK3BrZ19mYWlsZWQ9bm8KLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBSUE0iID4mNQotKyRhc19lY2hvX24gImNoZWNr aW5nIGZvciBSUE0uLi4gIiA+JjY7IH0KLSsKLStpZiB0ZXN0IC1uICIkUlBNX0NGTEFHUyI7IHRo ZW4KLSsgICAgcGtnX2N2X1JQTV9DRkxBR1M9IiRSUE1fQ0ZMQUdTIgotKyBlbGlmIHRlc3QgLW4g IiRQS0dfQ09ORklHIjsgdGhlbgotKyAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAot KyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09O RklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwicnBtXCIiOyB9ID4mNQotKyAgKCRQS0dfQ09O RklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJycG0iKSAyPiY1Ci0rICBhY19zdGF0dXM9JD8K LSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0 dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotKyAgcGtnX2N2X1JQTV9D RkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJycG0iIDI+L2Rldi9udWxsYAotKwkJICAgICAg dGVzdCAieCQ/IiAhPSAieDAiICYmIHBrZ19mYWlsZWQ9eWVzCi0rZWxzZQotKyAgcGtnX2ZhaWxl ZD15ZXMKLStmaQotKyBlbHNlCi0rICAgIHBrZ19mYWlsZWQ9dW50cmllZAotK2ZpCi0raWYgdGVz dCAtbiAiJFJQTV9MSUJTIjsgdGhlbgotKyAgICBwa2dfY3ZfUlBNX0xJQlM9IiRSUE1fTElCUyIK LSsgZWxpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLSsgICAgaWYgdGVzdCAtbiAiJFBL R19DT05GSUciICYmIFwKLSsgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcInJwbVwiIjsgfSA+ JjUKLSsgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAicnBtIikgMj4mNQot KyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4K LSsgIHBrZ19jdl9SUE1fTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJycG0iIDI+L2Rldi9udWxs YAotKwkJICAgICAgdGVzdCAieCQ/IiAhPSAieDAiICYmIHBrZ19mYWlsZWQ9eWVzCi0rZWxzZQot KyAgcGtnX2ZhaWxlZD15ZXMKLStmaQotKyBlbHNlCi0rICAgIHBrZ19mYWlsZWQ9dW50cmllZAot K2ZpCi0rCi0rCi0rCi0raWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotKyAgICAgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK LSskYXNfZWNobyAibm8iID4mNjsgfQotKwotK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2dj b25maWctdmVyc2lvbiAwLjIwOyB0aGVuCi0rICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBw b3J0ZWQ9eWVzCi0rZWxzZQotKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5v Ci0rZmkKLSsgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHll czsgdGhlbgotKwkgICAgICAgIFJQTV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVy cm9ycyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAtLWxpYnMgInJwbSIgMj4mMWAKLSsgICAgICAg IGVsc2UKLSsJICAgICAgICBSUE1fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1wcmludC1lcnJv cnMgLS1jZmxhZ3MgLS1saWJzICJycG0iIDI+JjFgCi0rICAgICAgICBmaQotKwkjIFB1dCB0aGUg bmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKLSsJZWNo byAiJFJQTV9QS0dfRVJST1JTIiA+JjUKLSsKLSsJSEFWRV9MSUJSUE09ZmFsc2UKLStlbGlmIHRl c3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCi0rICAgICAgICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIg PiY2OyB9Ci0rCUhBVkVfTElCUlBNPWZhbHNlCi0rZWxzZQotKwlSUE1fQ0ZMQUdTPSRwa2dfY3Zf UlBNX0NGTEFHUwotKwlSUE1fTElCUz0kcGtnX2N2X1JQTV9MSUJTCi0rICAgICAgICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSskYXNf ZWNobyAieWVzIiA+JjY7IH0KLSsJSEFWRV9MSUJSUE09dHJ1ZQotK2ZpCi0rCi0rICAgIGlmICRI QVZFX0xJQlJQTTsgdGhlbgotKwotKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIHJwbSBsaWJyYXJ5IEFQSSBjb21wYXRpYmlsaXR5IiA+JjUKLSsk YXNfZWNob19uICJjaGVja2luZyBycG0gbGlicmFyeSBBUEkgY29tcGF0aWJpbGl0eS4uLiAiID4m NjsgfQotKyAgICAjIFRoZSBjb21waWxhdGlvbiByZXF1aXJlcyAtV2Vycm9yIHRvIHZlcmlmeSBh bnl0aGluZy4KLSsgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rICAgIENGTEFHUz0iJENGTEFH UyAtV2Vycm9yIgotKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotKy8qIER1cGxpY2F0ZSBoZXJlIHRoZSBk ZWNsYXJhdGlvbnMgdG8gdmVyaWZ5IHRoZXkgbWF0Y2ggImVsZnJlYWQuYyIuICAqLwotKyNpbmNs dWRlIDxycG0vcnBtbGliLmg+Ci0rI2luY2x1ZGUgPHJwbS9ycG10cy5oPgotKyNpbmNsdWRlIDxy cG0vcnBtZGIuaD4KLSsjaW5jbHVkZSA8cnBtL2hlYWRlci5oPgotK2V4dGVybiBjaGFyICogaGVh ZGVyRm9ybWF0KEhlYWRlciBoLCBjb25zdCBjaGFyICogZm10LCBlcnJtc2dfdCAqIGVycm1zZyk7 Ci0rZXh0ZXJuIGludCBycG1SZWFkQ29uZmlnRmlsZXMoY29uc3QgY2hhciAqIGZpbGUsIGNvbnN0 IGNoYXIgKiB0YXJnZXQpOwotK2V4dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBtZGJGcmVlSXRl cmF0b3IocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKTsKLStleHRlcm4gSGVhZGVyIHJwbWRiTmV4dEl0 ZXJhdG9yKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSk7Ci0rZXh0ZXJuIHJwbXRzIHJwbXRzQ3JlYXRl KHZvaWQpOwotK2V4dGVybiBycG10cyBycG10c0ZyZWUocnBtdHMgdHMpOwotK2V4dGVybiBycG1k Yk1hdGNoSXRlcmF0b3IgcnBtdHNJbml0SXRlcmF0b3IoY29uc3QgcnBtdHMgdHMsIHJwbURiaVRh Z1ZhbCBycG10YWcsCi0rCQkJCQkgICAgY29uc3Qgdm9pZCAqIGtleXAsIHNpemVfdCBrZXlsZW4p OwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FD RU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKwotKyAgICAg IExJQlJQTV9DT01QQVQ9dHJ1ZQotKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotKyRhc19lY2hvICJ5ZXMiID4mNjsgfQotKwot K2Vsc2UKLSsKLSsgICAgICBMSUJSUE1fQ09NUEFUPWZhbHNlCi0rICAgICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAi bm8iID4mNjsgfQotKwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotKwot KyAgICAgIGlmICEgJExJQlJQTV9DT01QQVQ7IHRoZW4KLSsJSEFWRV9MSUJSUE09ZmFsc2UKLSsJ UlBNX1BLR19FUlJPUlM9IkZvdW5kICRMSUJSUE0gQVBJIGlzIGluY29tcGF0aWJpbGUgd2l0aCB0 aGlzIEdEQiIKLSsgICAgICBmaQotKyAgICBmaQotKwotKyAgICBpZiAkSEFWRV9MSUJSUE07IHRo ZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBIQVZFX0xJQlJQTSAxIiA+PmNvbmZkZWZzLmgKLSsK LSsgICAgICBDRkxBR1M9IiRDRkxBR1MgJFJQTV9DRkxBR1MiCi0rICAgICAgTElCUz0iJExJQlMg JFJQTV9MSUJTIgotKyAgICBlbHNlCi0rICAgICAgaWYgJFJQTV9SRVFVSVJFOyB0aGVuCi0rCWFz X2ZuX2Vycm9yICIkUlBNX1BLR19FUlJPUlMiICIkTElORU5PIiA1Ci0rICAgICAgZWxzZQotKwl7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRSUE1fUEtH X0VSUk9SUyIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQTV9QS0dfRVJST1JT IiA+JjI7fQotKyAgICAgIGZpCi0rICAgIGZpCi0rICBmaQotK2ZpCi0rCi0gCi0gCi0gc3ViZGly cz0iJHN1YmRpcnMgdGVzdHN1aXRlIgotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuYWMgYi9n ZGIvY29uZmlndXJlLmFjCi0tLS0gYS9nZGIvY29uZmlndXJlLmFjCi0rKysgYi9nZGIvY29uZmln dXJlLmFjCi1AQCAtMTczLDYgKzE3MywyMDAgQEAgQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FG RV9QQVRILCBlc2NhcGVfZGlyLAotIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1 dG8tbG9hZGVkIGZpbGVzLl0pCi0gQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aF0pCi0gCi0rIyBJbnRlZ3JhdGlvbiB3aXRoIHJwbSBsaWJyYXJ5IHRvIHN1cHBvcnQgbWlz c2luZyBkZWJ1Z2luZm8gc3VnZ2VzdGlvbnMuCi0rIyAtLXdpdGhvdXQtcnBtOiBEaXNhYmxlIGFu eSBycG0gc3VwcG9ydC4KLSsjIC0td2l0aC1ycG09bGlibmFtZS5zbzogVHJ5IHRvIGR5bmFtaWNh bGx5IG9wZW4gYGxpYm5hbWUuc28nIGR1cmluZyBydW50aW1lLgotKyMgICBFdmVuIHdpdGggcnVu dGltZSBtaXNzaW5nIGBsaWJuYW1lLnNvJyBHREIgd2lsbCBzdGlsbCBvdGhlciBydW4gY29ycmVj dGx5LgotKyMgICBNaXNzaW5nIGBsaWJuYW1lLnNvJyBkdXJpbmcgLi9jb25maWd1cmUgd2lsbCBh Ym9ydCB0aGUgY29uZmlndXJhdGlvbi4KLSsjIC0td2l0aC1ycG09bGlicnBtLnNvOiBMaWtlIGAt LXdpdGgtcnBtPWxpYm5hbWUuc28nIGJ1dCB0cnkgdG8gZmluZCBzcGVjaWZpYwotKyMgICBtaW5v ciB2ZXJzaW9uIGZpcnN0IHN1Y2ggYXMgYGxpYnJwbS00LjYuc28nIGFzIG1pbm9yIHZlcnNpb24g ZGlmZmVyZW5jZXMKLSsjICAgbWVhbiBBUEkrQUJJIGluY29tcGF0aWJpbGl0eS4gIElmIHRoZSBz cGVjaWZpYyBtYXRjaCB2ZXJzaW9uZWQgbGlicmFyeSBuYW1lCi0rIyAgIGNvdWxkIG5vdCBiZSBm b3VuZCBzdGlsbCBvcGVuIGR5bmFtaWNhbGx5IGF0IGxlYXN0IGBsaWJycG0uc28nLgotKyMgLS13 aXRoLXJwbTogTGlrZSBgLS13aXRoLXJwbT1saWJycG0uc28nIGJ1dCBpZiBhbnkgb2YgaXRzIGRl dGVjdGlvbiBmYWlscyB0cnkKLSsjICAgdG8gZmluZCBsaWJycG0gZm9yIGNvbXBpbGF0aW9uLXRp bWUgbGlua2luZyBieSBwa2ctY29uZmlnLiAgR0RCIGJpbmFyeSB3aWxsCi0rIyAgIGJlIHByb2Jh Ymx5IGxpbmtlZCB3aXRoIHRoZSB2ZXJzaW9uIHNwZWNpZmljIGxpYnJhcnkgKGFzIGBsaWJycG0t NC42LnNvJykuCi0rIyAgIEZhaWx1cmUgdG8gZmluZCBsaWJycG0gYnkgcGtnLWNvbmZpZyB3aWxs IGFib3J0IHRoZSBjb25maWd1cmF0aW9uLgotKyMgKGRlZmF1bHQpIC0td2l0aC1ycG09YXV0bzog TGlrZSBgLS13aXRoLXJwbT1saWJycG0uc28nIGJ1dCBpZiBldmVuIHBrZy1jb25maWcKLSsjICAg Y2Fubm90IGZpbmQgbGlicnBtIHVzZSB0byB0aGUgcnBtbGVzcyBjb21waWxhdGlvbiAobGlrZSBg LS13aXRob3V0LXJwbScpLgotKwotK0FDX0FSR19XSVRIKFtycG1dLAotKyAgW0FTX0hFTFBfU1RS SU5HKFstLXdpdGgtcnBtXSwKLSsgICAgICAgICAgICAgICAgICBbcXVlcnkgcnBtIGRhdGFiYXNl IGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywgZGVmLiBhdXRvPWxpYnJwbS5zbyldKV0s IFtdLCBbd2l0aF9ycG09ImF1dG8iXSkKLSsKLSttNF9wYXR0ZXJuX2FsbG93KFteQUNfTVNHX0VS Uk9SJF0pCi0rbTRfcGF0dGVybl9hbGxvdyhbXkFDX01TR19XQVJOJF0pCi0raWYgdGVzdCAieCR3 aXRoX3JwbSIgIT0gInhubyI7IHRoZW4KLSsgIGlmIHRlc3QgIngkd2l0aF9ycG0iID0gInh5ZXMi OyB0aGVuCi0rICAgIExJQlJQTT0ibGlicnBtLnNvIgotKyAgICBSUE1fUkVRVUlSRT10cnVlCi0r ICAgIERMT1BFTl9SRVFVSVJFPWZhbHNlCi0rICBlbGlmIHRlc3QgIngkd2l0aF9ycG0iID0gInhh dXRvIjsgdGhlbgotKyAgICBMSUJSUE09ImxpYnJwbS5zbyIKLSsgICAgUlBNX1JFUVVJUkU9ZmFs c2UKLSsgICAgRExPUEVOX1JFUVVJUkU9ZmFsc2UKLSsgIGVsc2UKLSsgICAgTElCUlBNPSIkd2l0 aF9ycG0iCi0rICAgIFJQTV9SRVFVSVJFPXRydWUKLSsgICAgRExPUEVOX1JFUVVJUkU9dHJ1ZQot KyAgZmkKLSsgIExJQlJQTV9TVFJJTkc9JyInIiRMSUJSUE0iJyInCi0rCi0rICBBQ19NU0dfQ0hF Q0tJTkcoW3NwZWNpZmljIGxpYnJwbSB2ZXJzaW9uXSkKLSsgIEhBVkVfRExPUEVOX0xJQlJQTT1m YWxzZQotKyAgc2F2ZV9MSUJTPSIkTElCUyIKLSsgIExJQlM9IiRMSUJTIC1sZGwiCi0rICBBQ19S VU5fSUZFTFNFKEFDX0xBTkdfUFJPR1JBTShbWwotKyNpbmNsdWRlIDxycG0vcnBtbGliLmg+Ci0r I2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPHN0cmlu Zy5oPgotKyAgXV0sIFtbCi0rICAgIHZvaWQgKmg7Ci0rICAgIGNvbnN0IGNoYXIgKmNvbnN0ICpy cG12ZXJwOwotKyAgICBGSUxFICpmOwotKwotKyAgICBmID0gZm9wZW4gKCJjb25mdGVzdC5vdXQi LCAidyIpOwotKyAgICBpZiAoIWYpCi0rICAgICAgewotKwlmcHJpbnRmIChzdGRlcnIsICJDYW5u b3Qgd3JpdGUgXCIlc1wiOiAlc1xuIiwgImNvbmZ0ZXN0Lm91dCIsCi0rCQkgc3RyZXJyb3IgKGVy cm5vKSk7Ci0rCXJldHVybiAxOwotKyAgICAgIH0KLSsgICAgaCA9IGRsb3BlbiAoJExJQlJQTV9T VFJJTkcsIFJUTERfTEFaWSk7Ci0rICAgIGlmICghaCkKLSsgICAgICB7Ci0rCWZwcmludGYgKHN0 ZGVyciwgImRsb3BlbiAoXCIlc1wiKTogJXNcbiIsICRMSUJSUE1fU1RSSU5HLCBkbGVycm9yICgp KTsKLSsJcmV0dXJuIDE7Ci0rICAgICAgfQotKyAgICBycG12ZXJwID0gZGxzeW0gKGgsICJSUE1W RVJTSU9OIik7Ci0rICAgIGlmICghcnBtdmVycCkKLSsgICAgICB7Ci0rCWZwcmludGYgKHN0ZGVy ciwgImRsc3ltIChcIlJQTVZFUlNJT05cIik6ICVzXG4iLCBkbGVycm9yICgpKTsKLSsJcmV0dXJu IDE7Ci0rICAgICAgfQotKyAgICBmcHJpbnRmIChzdGRlcnIsICJSUE1WRVJTSU9OIGlzOiBcIiIp OwotKyAgICBmcHJpbnRmIChzdGRlcnIsICIlc1wiXG4iLCAqcnBtdmVycCk7Ci0rCi0rICAgIC8q IFRyeSB0byBmaW5kIHRoZSBzcGVjaWZpYyBsaWJycG0gdmVyc2lvbiBvbmx5IGZvciAibGlicnBt LnNvIiBhcyB3ZSBkbwotKyAgICAgICBub3Qga25vdyBob3cgdG8gYXNzZW1ibGUgdGhlIHZlcnNp b24gc3RyaW5nIG90aGVyd2lzZS4gICovCi0rCi0rICAgIGlmIChzdHJjbXAgKCJsaWJycG0uc28i LCAkTElCUlBNX1NUUklORykgIT0gMCkKLSsgICAgICB7Ci0rCWZwcmludGYgKGYsICIlc1xuIiwg JExJQlJQTV9TVFJJTkcpOwotKwlyZXR1cm4gMDsKLSsgICAgICB9Ci0rICAgIGVsc2UKLSsgICAg ICB7Ci0rCWNoYXIgKmgyX25hbWU7Ci0rCXZvaWQgKmgyOwotKwlpbnQgbWFqb3IsIG1pbm9yOwot KwotKwlpZiAoc3NjYW5mICgqcnBtdmVycCwgIiVkLiVkIiwgJm1ham9yLCAmbWlub3IpICE9IDIp Ci0rCSAgewotKwkgICAgZnByaW50ZiAoc3RkZXJyLCAiVW5hYmxlIHRvIHBhcnNlIFJQTVZFUlNJ T04uXG4iKTsKLSsJICAgIGZwcmludGYgKGYsICIlc1xuIiwgJExJQlJQTV9TVFJJTkcpOwotKwkg ICAgcmV0dXJuIDA7Ci0rCSAgfQotKwkvKiBBdm9pZCB0aGUgc3F1YXJlIGJyYWNrZXRzIGJ5IG1h bGxvYy4gICovCi0rCWgyX25hbWUgPSBtYWxsb2MgKDY0KTsKLSsJc3ByaW50ZiAoaDJfbmFtZSwg ImxpYnJwbS0lZC4lZC5zbyIsIG1ham9yLCBtaW5vcik7Ci0rCWgyID0gZGxvcGVuIChoMl9uYW1l LCBSVExEX0xBWlkpOwotKwlpZiAoIWgyKQotKwkgIHsKLSsJICAgIGZwcmludGYgKHN0ZGVyciwg ImRsb3BlbiAoXCIlc1wiKTogJXNcbiIsIGgyX25hbWUsIGRsZXJyb3IgKCkpOwotKwkgICAgZnBy aW50ZiAoZiwgIiVzXG4iLCAkTElCUlBNX1NUUklORyk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICB9 Ci0rCWlmIChoMiAhPSBoKQotKwkgIHsKLSsJICAgIGZwcmludGYgKHN0ZGVyciwgImRsb3BlbiBv ZiBcIiVzXCIgYW5kIFwiJXNcIiBhcmUgZGlmZmVyZW50LlxuIiwKLSsJCSAgICAgJExJQlJQTV9T VFJJTkcsIGgyX25hbWUpOwotKwkgICAgZnByaW50ZiAoZiwgIiVzXG4iLCAkTElCUlBNX1NUUklO Ryk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICB9Ci0rCS8qIEZvdW5kIHRoZSB2YWxpZCAuc28gbmFt ZSB3aXRoIGEgc3BlY2lmaWMgdmVyc2lvbi4gICovCi0rCWZwcmludGYgKGYsICIlc1xuIiwgaDJf bmFtZSk7Ci0rCXJldHVybiAwOwotKyAgICAgIH0KLSsgIF1dKSwgWwotKyAgICBETE9QRU5fTElC UlBNPSJgY2F0IGNvbmZ0ZXN0Lm91dGAiCi0rICAgIGlmIHRlc3QgIngkRExPUEVOX0xJQlJQTSIg IT0gIngiOyB0aGVuCi0rICAgICAgSEFWRV9ETE9QRU5fTElCUlBNPXRydWUKLSsgICAgICBBQ19N U0dfUkVTVUxUKCRETE9QRU5fTElCUlBNKQotKyAgICBmaQotKyAgXSkKLSsgIHJtIC1mIGNvbmZ0 ZXN0Lm91dAotKwotKyAgbTRfZGVmaW5lKFtDSEVDS19MSUJSUE1fQ09NUEFUXSwgWwotKyAgICBB Q19NU0dfQ0hFQ0tJTkcoW3JwbSBsaWJyYXJ5IEFQSSBjb21wYXRpYmlsaXR5XSkKLSsgICAgIyBU aGUgY29tcGlsYXRpb24gcmVxdWlyZXMgLVdlcnJvciB0byB2ZXJpZnkgYW55dGhpbmcuCi0rICAg IHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKLSsg ICAgQUNfQ09NUElMRV9JRkVMU0UoQUNfTEFOR19QUk9HUkFNKFtbCi0rLyogRHVwbGljYXRlIGhl cmUgdGhlIGRlY2xhcmF0aW9ucyB0byB2ZXJpZnkgdGhleSBtYXRjaCAiZWxmcmVhZC5jIi4gICov Ci0rI2luY2x1ZGUgPHJwbS9ycG1saWIuaD4KLSsjaW5jbHVkZSA8cnBtL3JwbXRzLmg+Ci0rI2lu Y2x1ZGUgPHJwbS9ycG1kYi5oPgotKyNpbmNsdWRlIDxycG0vaGVhZGVyLmg+Ci0rZXh0ZXJuIGNo YXIgKiBoZWFkZXJGb3JtYXQoSGVhZGVyIGgsIGNvbnN0IGNoYXIgKiBmbXQsIGVycm1zZ190ICog ZXJybXNnKTsKLStleHRlcm4gaW50IHJwbVJlYWRDb25maWdGaWxlcyhjb25zdCBjaGFyICogZmls ZSwgY29uc3QgY2hhciAqIHRhcmdldCk7Ci0rZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG1k YkZyZWVJdGVyYXRvcihycG1kYk1hdGNoSXRlcmF0b3IgbWkpOwotK2V4dGVybiBIZWFkZXIgcnBt ZGJOZXh0SXRlcmF0b3IocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKTsKLStleHRlcm4gcnBtdHMgcnBt dHNDcmVhdGUodm9pZCk7Ci0rZXh0ZXJuIHJwbXRzIHJwbXRzRnJlZShycG10cyB0cyk7Ci0rZXh0 ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYXRvcihjb25zdCBycG10cyB0cywg cnBtRGJpVGFnVmFsIHJwbXRhZywKLSsJCQkJCSAgICBjb25zdCB2b2lkICoga2V5cCwgc2l6ZV90 IGtleWxlbik7Ci0rICAgIF1dKSwgWwotKyAgICAgIExJQlJQTV9DT01QQVQ9dHJ1ZQotKyAgICAg IEFDX01TR19SRVNVTFQoeWVzKQotKyAgICBdLCBbCi0rICAgICAgTElCUlBNX0NPTVBBVD1mYWxz ZQotKyAgICAgIEFDX01TR19SRVNVTFQobm8pCi0rICAgIF0pCi0rICAgIENGTEFHUz0iJHNhdmVf Q0ZMQUdTIgotKyAgXSkKLSsKLSsgIGlmICRIQVZFX0RMT1BFTl9MSUJSUE07IHRoZW4KLSsgICAg Q0hFQ0tfTElCUlBNX0NPTVBBVAotKyAgICBpZiAhICRMSUJSUE1fQ09NUEFUOyB0aGVuCi0rICAg ICAgSEFWRV9ETE9QRU5fTElCUlBNPWZhbHNlCi0rICAgIGZpCi0rICBmaQotKwotKyAgaWYgJEhB VkVfRExPUEVOX0xJQlJQTTsgdGhlbgotKyAgICBETE9QRU5fTElCUlBNX1NUUklORz0nIiciJERM T1BFTl9MSUJSUE0iJyInCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChETE9QRU5fTElCUlBNLCAk RExPUEVOX0xJQlJQTV9TVFJJTkcsIFtsaWJycG0gdmVyc2lvbiBzcGVjaWZpYyBsaWJyYXJ5IG5h bWUgdG8gZGxvcGVuLl0pCi0rICAgIEFDX0RFRklORShIQVZFX0xJQlJQTSwgMSwgW0RlZmluZSBp ZiBsaWJycG0gbGlicmFyeSBpcyBiZWluZyB1c2VkLl0pCi0rICBlbHNlCi0rICAgIEFDX01TR19S RVNVTFQobm8pCi0rICAgIExJQlM9IiRzYXZlX0xJQlMiCi0rICAgIGlmICRETE9QRU5fUkVRVUlS RTsgdGhlbgotKyAgICAgIEFDX01TR19FUlJPUihbU3BlY2lmaWMgbmFtZSAkTElCUlBNIHdhcyBy ZXF1ZXN0ZWQgYnV0IGl0IGNvdWxkIG5vdCBiZSBvcGVuZWQuXSkKLSsgICAgZmkKLSsgICAgUEtH X0NIRUNLX01PRFVMRVMoUlBNLCBycG0sIFtIQVZFX0xJQlJQTT10cnVlXSwgW0hBVkVfTElCUlBN PWZhbHNlXSkKLSsKLSsgICAgaWYgJEhBVkVfTElCUlBNOyB0aGVuCi0rICAgICAgQ0hFQ0tfTElC UlBNX0NPTVBBVAotKyAgICAgIGlmICEgJExJQlJQTV9DT01QQVQ7IHRoZW4KLSsJSEFWRV9MSUJS UE09ZmFsc2UKLSsJUlBNX1BLR19FUlJPUlM9IkZvdW5kICRMSUJSUE0gQVBJIGlzIGluY29tcGF0 aWJpbGUgd2l0aCB0aGlzIEdEQiIKLSsgICAgICBmaQotKyAgICBmaQotKwotKyAgICBpZiAkSEFW RV9MSUJSUE07IHRoZW4KLSsgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJSUE0sIDEsIFtEZWZpbmUg aWYgbGlicnBtIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC5dKQotKyAgICAgIENGTEFHUz0iJENGTEFH UyAkUlBNX0NGTEFHUyIKLSsgICAgICBMSUJTPSIkTElCUyAkUlBNX0xJQlMiCi0rICAgIGVsc2UK LSsgICAgICBpZiAkUlBNX1JFUVVJUkU7IHRoZW4KLSsJQUNfTVNHX0VSUk9SKCRSUE1fUEtHX0VS Uk9SUykKLSsgICAgICBlbHNlCi0rCUFDX01TR19XQVJOKCRSUE1fUEtHX0VSUk9SUykKLSsgICAg ICBmaQotKyAgICBmaQotKyAgZmkKLStmaQotKwotIEFDX0NPTkZJR19TVUJESVJTKHRlc3RzdWl0 ZSkKLSAKLSAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29u ZmlndXJhdGlvbnMKLWRpZmYgLS1naXQgYS9nZGIvZXZlbnQtdG9wLmMgYi9nZGIvZXZlbnQtdG9w LmMKLS0tLSBhL2dkYi9ldmVudC10b3AuYwotKysrIGIvZ2RiL2V2ZW50LXRvcC5jCi1AQCAtNDMs NiArNDMsNyBAQAotICNpbmNsdWRlICJhc3luYy1ldmVudC5oIgotICNpbmNsdWRlICJidC11dGls cy5oIgotICNpbmNsdWRlICJwYWdlci5oIgotKyNpbmNsdWRlICJzeW1maWxlLmgiCi0gCi0gLyog cmVhZGxpbmUgaW5jbHVkZSBmaWxlcy4gICovCi0gI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5l LmgiCi1AQCAtNDA0LDYgKzQwNSw4IEBAIGRpc3BsYXlfZ2RiX3Byb21wdCAoY29uc3QgY2hhciAq bmV3X3Byb21wdCkKLSAgIC8qIFJlc2V0IHRoZSBuZXN0aW5nIGRlcHRoIHVzZWQgd2hlbiB0cmFj ZS1jb21tYW5kcyBpcyBzZXQuICAqLwotICAgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICgpOwot IAotKyAgZGVidWdfZmx1c2hfbWlzc2luZyAoKTsKLSsKLSAgIC8qIERvIG5vdCBjYWxsIHRoZSBw eXRob24gaG9vayBvbiBhbiBleHBsaWNpdCBwcm9tcHQgY2hhbmdlIGFzCi0gICAgICBwYXNzZWQg dG8gdGhpcyBmdW5jdGlvbiwgYXMgdGhpcyBmb3JtcyBhIHNlY29uZGFyeS9sb2NhbCBwcm9tcHQs Ci0gICAgICBJRSwgZGlzcGxheWVkIGJ1dCBub3Qgc2V0LiAgKi8KLUBAIC03ODgsNyArNzkxLDEw IEBAIGNvbW1hbmRfbGluZV9oYW5kbGVyIChnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAm JnJsKQotICAgICAgIGNvbW1hbmRfaGFuZGxlciAoY21kKTsKLSAKLSAgICAgICBpZiAodWktPnBy b21wdF9zdGF0ZSAhPSBQUk9NUFRFRCkKLS0JZGlzcGxheV9nZGJfcHJvbXB0ICgwKTsKLSsJewot KwkgIGRlYnVnX2ZsdXNoX21pc3NpbmcgKCk7Ci0rCSAgZGlzcGxheV9nZGJfcHJvbXB0ICgwKTsK LSsJfQotICAgICB9Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3lt ZmlsZS5oCi0tLS0gYS9nZGIvc3ltZmlsZS5oCi0rKysgYi9nZGIvc3ltZmlsZS5oCi1AQCAtMzY2 LDYgKzM2Niw3IEBAIGV4dGVybiB2b2lkIGdlbmVyaWNfbG9hZCAoY29uc3QgY2hhciAqYXJncywg aW50IGZyb21fdHR5KTsKLSAvKiBidWlsZC1pZCBzdXBwb3J0LiAgKi8KLSBleHRlcm4gc3RydWN0 IGJmZF9idWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZXQgKENPUkVfQUREUiBhZGRyKTsKLSBleHRl cm4gdm9pZCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNo YXIgKmRlYnVnKTsKLStleHRlcm4gdm9pZCBkZWJ1Z19mbHVzaF9taXNzaW5nICh2b2lkKTsKLSAj ZGVmaW5lIEJVSUxEX0lEX01BSU5fRVhFQ1VUQUJMRV9GSUxFTkFNRSBfKCJ0aGUgbWFpbiBleGVj dXRhYmxlIGZpbGUiKQotIAotIC8qIEZyb20gbWluaWRlYnVnLmMuICAqLwoKZGlmZiAtLWdpdCBh L2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1pZHMucGF0Y2ggYi9nZGItNi42 LWJ1aWxkaWQtbG9jYXRlLXNvbGliLW1pc3NpbmctaWRzLnBhdGNoCmluZGV4IGU5ZWM3YjUuLjU4 NDdjMmUgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1p ZHMucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1zb2xpYi1taXNzaW5nLWlkcy5w YXRjaApAQCAtMTMwLDcgKzEzMCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2djb3JlLWJ1aWxkaWQtZXhlYy1idXQtbm90LXNvbGliLmV4cCBiL2dkYi90CiBuZXcgZmls ZSBtb2RlIDEwMDY0NAogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi5leHAKLUBAIC0wLDAgKzEsMTA1IEBA CitAQCAtMCwwICsxLDEwNCBAQAogKyMgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMTQ2LDkgKzE0Niw3IEBAIG5ldyBm aWxlIG1vZGUgMTAwNjQ0CiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYge1tz a2lwX3NobGliX3Rlc3RzXX0gewotKyAgICByZXR1cm4gMAotK30KKytyZXF1aXJlIGFsbG93X3No bGliX3Rlc3RzCiArCiArc2V0IHRlc3RmaWxlICJnY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1z b2xpYiIKICtzZXQgc3JjbWFpbmZpbGUgJHt0ZXN0ZmlsZX0tbWFpbi5jCkBAIC0yMjYsNyArMjI0 LDggQEAgbmV3IGZpbGUgbW9kZSAxMDA2NDQKICtyZW1vdGVfZXhlYyBidWlsZCAibG4gLXMgL2xp YjY0ICAgICAke2RlYnVnZGlyfS8iCiArIyAvdXNyIGlzIG5vdCBuZWVkZWQsIGFsbCB0aGUgbGli cyBhcmUgaW4gL2xpYjY0OiBsaWJtLnNvLjYgbGliYy5zby42IGxkLWxpbnV4LXg4Ni02NC5zby4y CiArCi0rZ2RiX3Rlc3QgInNldCBzb2xpYi1hYnNvbHV0ZS1wcmVmaXggJGRlYnVnZGlyIgorK2dk Yl90ZXN0X25vX291dHB1dCAic2V0IHNvbGliLWFic29sdXRlLXByZWZpeCAkZGVidWdkaXIiIFwK KysgICAgInNldCBzb2xpYi1hYnNvbHV0ZS1wcmVmaXgiCiArCiArZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJzZXQgZGVidWctZmlsZS1kaXJlY3RvcnkgJGRlYnVnZGlyIiAic2V0IGRlYnVnLWZpbGUtZGly ZWN0b3J5IgogKwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9n ZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4IDgzM2ViNzAuLmM0ZTZmZjkgMTAwNjQ0 Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlk LWxvY2F0ZS5wYXRjaApAQCAtNTUzLDEzICs1NTMsMTMgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWls ZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICsKICsgICAgICAvKiBXZSBleHBlY3QgdG8gYmUgc2ls ZW50IG9uIHRoZSBub24tZXhpc3RpbmcgZmlsZXMuICAqLwogKyAgICAgIGdkYl9iZmRfcmVmX3B0 ciBkZWJ1Z19iZmQgPSBnZGJfYmZkX29wZW4gKGZpbGVuYW1lLCBnbnV0YXJnZXQpOwotKworIAor LSAgICAgIHJldHVybiB7fTsKICsgICAgICBpZiAoZGVidWdfYmZkID09IE5VTEwpCiArCXsKICsJ ICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9kZWJ1ZykKICsJICAgIGdkYl9wcmludGYgKGdkYl9z dGRsb2csIF8oIiBubywgdW5hYmxlIHRvIG9wZW4uXG4iKSk7Ci0gCi0tICAgICAgcmV0dXJuIHt9 OworKwogKwkgIGNvbnRpbnVlOwogKwl9CiArCkBAIC01ODMsNiArNTgzLDggQEAgZGlmZiAtLWdp dCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICAgICAgewogICAgICAgIGlmIChz ZXBhcmF0ZV9kZWJ1Z19maWxlX2RlYnVnKQogLQlnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCBfKCIg bm8sIGJ1aWxkLWlkIGRvZXMgbm90IG1hdGNoLlxuIikpOworLQorLSAgICAgIHJldHVybiB7fTsK ICsJZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgXygiIHllcyFcbiIpKTsKICsgICAgfQogKyAgZWxz ZQpAQCAtNTkwLDggKzU5Miw3IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9i dWlsZC1pZC5jCiArICAgICAgLyogSWYgbm9uZSBvZiB0aGUgcmVhbCBmaWxlcyBpcyBmb3VuZCBy ZXBvcnQgYXMgbWlzc2luZyBmaWxlCiArCSBhbHdheXMgdGhlIG5vbi0uJXUtc3VmZml4ZWQgZmls ZS4gICovCiArICAgICAgc3RkOjpzdHJpbmcgbGluazAgPSBvcmlnX2xpbms7Ci0gCi0tICAgICAg cmV0dXJuIHt9OworKwogKyAgICAgIC8qIElmIHRoZSBzeW1saW5rIGhhcyB0YXJnZXQgcmVxdWVz dCB0byBpbnN0YWxsIHRoZSB0YXJnZXQuCiArCSBCQVNFLWRlYnVnaW5mby5ycG0gY29udGFpbnMg dGhlIHN5bWxpbmsgYnV0IEJBU0UucnBtIG1heSBiZSBtaXNzaW5nLgogKwkgaHR0cHM6Ly9idWd6 aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD05ODExNTQgICovCkBAIC02NjUsNyArNjY2 LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICAJICBp ZiAoZGVidWdfYmZkICE9IE5VTEwpCiAgCSAgICByZXR1cm4gZGVidWdfYmZkOwogIAl9Ci1AQCAt MTkwLDMwICs2OTQsNjYyIEBAIGJ1aWxkX2lkX3RvX2JmZF9zdWZmaXggKHNpemVfdCBidWlsZF9p ZF9sZW4sIGNvbnN0IGJmZF9ieXRlICpidWlsZF9pZCwKK0BAIC0xOTAsMjAgKzY5NCwxNzggQEAg YnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29uc3QgYmZkX2J5 dGUgKmJ1aWxkX2lkLAogICAgcmV0dXJuIHt9OwogIH0KICAKQEAgLTY4Myw0NDYgKzY4NCw2IEBA IGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiArICByZXR1cm4g cmVzdWx0OwogK30KICsKLSt2b2lkIGRlYnVnX2ZsdXNoX21pc3NpbmcgKHZvaWQpOwotKwotKyNp ZmRlZiBIQVZFX0xJQlJQTQotKwotKyNpbmNsdWRlIDxycG0vcnBtbGliLmg+Ci0rI2luY2x1ZGUg PHJwbS9ycG10cy5oPgotKyNpbmNsdWRlIDxycG0vcnBtZGIuaD4KLSsjaW5jbHVkZSA8cnBtL2hl YWRlci5oPgotKyNpZmRlZiBETE9QRU5fTElCUlBNCi0rI2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2Vu ZGlmCi0rCi0rLyogV29ya2Fyb2R1biBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19i dWcuY2dpP2lkPTY0MzAzMQotKyAgIGxpYnJwbSBtdXN0IG5vdCBleGl0KCkgYW4gYXBwbGljYXRp b24gb24gU0lHSU5UCi0rCi0rICAgRW5hYmxlIG9yIGRpc2FibGUgYSBzaWduYWwgaGFuZGxlci4g IFNJR05VTTogc2lnbmFsIHRvIGVuYWJsZSAob3IgZGlzYWJsZQotKyAgIGlmIG5lZ2F0aXZlKS4g IEhBTkRMRVI6IHNhX3NpZ2FjdGlvbiBoYW5kbGVyIChvciBOVUxMIHRvIHVzZQotKyAgIHJwbXNx SGFuZGxlcigpKS4gIFJldHVybnM6IG5vLiBvZiByZWZzLCAtMSBvbiBlcnJvci4gICovCi0rZXh0 ZXJuIGludCBycG1zcUVuYWJsZSAoaW50IHNpZ251bSwgLyogcnBtc3FBY3Rpb25fdCBoYW5kbGVy ICovIHZvaWQgKmhhbmRsZXIpOwotK2ludAotK3JwbXNxRW5hYmxlIChpbnQgc2lnbnVtLCAvKiBy cG1zcUFjdGlvbl90IGhhbmRsZXIgKi8gdm9pZCAqaGFuZGxlcikKLSt7Ci0rICByZXR1cm4gMDsK LSt9Ci0rCi0rLyogVGhpcyBNSVNTSU5HX1JQTV9IQVNIIHRyYWNrZXIgaXMgdXNlZCB0byBjb2xs ZWN0IGFsbCB0aGUgbWlzc2luZyBycG0gZmlsZXMKLSsgICBhbmQgYXZvaWQgdGhlaXIgZHVwbGlj aXRpZXMgZHVyaW5nIGEgc2luZ2xlIGluZmVyaW9yIHJ1bi4gICovCi0rCi0rc3RhdGljIHN0cnVj dCBodGFiICptaXNzaW5nX3JwbV9oYXNoOwotKwotKy8qIFRoaXMgTUlTU0lOR19SUE1fTElTVCB0 cmFja2VyIGlzIHVzZWQgdG8gY29sbGVjdCBhbmQgcHJpbnQgYXMgYSBzaW5nbGUgbGluZQotKyAg IGFsbCB0aGUgcnBtcyByaWdodCBiZWZvcmUgdGhlIG5lYXJlc3QgR0RCIHByb21wdC4gIEl0IGdl dHMgY2xlYXJlZCBhZnRlcgotKyAgIGVhY2ggc3VjaCBwcmludCAoaXQgaXMgcXVlc3Rpb25hYmxl IGlmIHdlIHNob3VsZCBjbGVhciBpdCBhZnRlciB0aGUgcHJpbnQpLgotKyAgICovCi0rCi0rc3Ry dWN0IG1pc3NpbmdfcnBtCi0rICB7Ci0rICAgIHN0cnVjdCBtaXNzaW5nX3JwbSAqbmV4dDsKLSsg ICAgY2hhciBycG1bMV07Ci0rICB9OwotK3N0YXRpYyBzdHJ1Y3QgbWlzc2luZ19ycG0gKm1pc3Np bmdfcnBtX2xpc3Q7Ci0rc3RhdGljIGludCBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXM7Ci0rCi0r LyogUmV0dXJucyB0aGUgY291bnQgb2YgbmV3bHkgYWRkZWQgcnBtcy4gICovCi0rCi0rc3RhdGlj IGludAotKyNpZm5kZWYgR0RCX0lOREVYX1ZFUklGWV9WRU5ET1IKLSttaXNzaW5nX3JwbV9lbmxp c3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotKyNlbHNlCi0rbWlzc2luZ19ycG1fZW5saXN0XzEg KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3ZlbmRvcikKLSsjZW5kaWYKLSt7Ci0r ICBzdGF0aWMgaW50IHJwbV9pbml0X2RvbmUgPSAwOwotKyAgcnBtdHMgdHM7Ci0rICBycG1kYk1h dGNoSXRlcmF0b3IgbWk7Ci0rICBpbnQgY291bnQgPSAwOwotKwotKyNpZmRlZiBETE9QRU5fTElC UlBNCi0rICAvKiBEdXBsaWNhdGUgaGVyZSB0aGUgZGVjbGFyYXRpb25zIHRvIHZlcmlmeSB0aGV5 IG1hdGNoLiAgVGhlIHNhbWUgc2FuaXR5Ci0rICAgICBjaGVjayBpcyBwcmVzZW50IGFsc28gaW4g YGNvbmZpZ3VyZS5hYycuICAqLwotKyAgZXh0ZXJuIGNoYXIgKiBoZWFkZXJGb3JtYXQoSGVhZGVy IGgsIGNvbnN0IGNoYXIgKiBmbXQsIGVycm1zZ190ICogZXJybXNnKTsKLSsgIHN0YXRpYyBjaGFy ICooKmhlYWRlckZvcm1hdF9wKSAoSGVhZGVyIGgsIGNvbnN0IGNoYXIgKiBmbXQsIGVycm1zZ190 ICplcnJtc2cpOwotKyAgZXh0ZXJuIGludCBycG1SZWFkQ29uZmlnRmlsZXMoY29uc3QgY2hhciAq IGZpbGUsIGNvbnN0IGNoYXIgKiB0YXJnZXQpOwotKyAgc3RhdGljIGludCAoKnJwbVJlYWRDb25m aWdGaWxlc19wKSAoY29uc3QgY2hhciAqIGZpbGUsIGNvbnN0IGNoYXIgKiB0YXJnZXQpOwotKyAg ZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG1kYkZyZWVJdGVyYXRvcihycG1kYk1hdGNoSXRl cmF0b3IgbWkpOwotKyAgc3RhdGljIHJwbWRiTWF0Y2hJdGVyYXRvciAoKnJwbWRiRnJlZUl0ZXJh dG9yX3ApIChycG1kYk1hdGNoSXRlcmF0b3IgbWkpOwotKyAgZXh0ZXJuIEhlYWRlciBycG1kYk5l eHRJdGVyYXRvcihycG1kYk1hdGNoSXRlcmF0b3IgbWkpOwotKyAgc3RhdGljIEhlYWRlciAoKnJw bWRiTmV4dEl0ZXJhdG9yX3ApIChycG1kYk1hdGNoSXRlcmF0b3IgbWkpOwotKyAgZXh0ZXJuIHJw bXRzIHJwbXRzQ3JlYXRlKHZvaWQpOwotKyAgc3RhdGljIHJwbXRzICgqcnBtdHNDcmVhdGVfcCkg KHZvaWQpOwotKyAgZXh0ZXJuIHJwbXRzIHJwbXRzRnJlZShycG10cyB0cyk7Ci0rICBzdGF0aWMg cnBtdHMgKCpycG10c0ZyZWVfcCkgKHJwbXRzIHRzKTsKLSsgIGV4dGVybiBycG1kYk1hdGNoSXRl cmF0b3IgcnBtdHNJbml0SXRlcmF0b3IoY29uc3QgcnBtdHMgdHMsIHJwbVRhZyBycG10YWcsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg KiBrZXlwLCBzaXplX3Qga2V5bGVuKTsKLSsgIHN0YXRpYyBycG1kYk1hdGNoSXRlcmF0b3IgKCpy cG10c0luaXRJdGVyYXRvcl9wKSAoY29uc3QgcnBtdHMgdHMsCi0rCQkJCQkJICAgIHJwbVRhZyBy cG10YWcsCi0rCQkJCQkJICAgIGNvbnN0IHZvaWQgKmtleXAsCi0rCQkJCQkJICAgIHNpemVfdCBr ZXlsZW4pOwotKyNlbHNlCS8qICFETE9QRU5fTElCUlBNICovCi0rIyBkZWZpbmUgaGVhZGVyRm9y bWF0X3AgaGVhZGVyRm9ybWF0Ci0rIyBkZWZpbmUgcnBtUmVhZENvbmZpZ0ZpbGVzX3AgcnBtUmVh ZENvbmZpZ0ZpbGVzCi0rIyBkZWZpbmUgcnBtZGJGcmVlSXRlcmF0b3JfcCBycG1kYkZyZWVJdGVy YXRvcgotKyMgZGVmaW5lIHJwbWRiTmV4dEl0ZXJhdG9yX3AgcnBtZGJOZXh0SXRlcmF0b3IKLSsj IGRlZmluZSBycG10c0NyZWF0ZV9wIHJwbXRzQ3JlYXRlCi0rIyBkZWZpbmUgcnBtdHNGcmVlX3Ag cnBtdHNGcmVlCi0rIyBkZWZpbmUgcnBtdHNJbml0SXRlcmF0b3JfcCBycG10c0luaXRJdGVyYXRv cgotKyNlbmRpZgkvKiAhRExPUEVOX0xJQlJQTSAqLwotKwotKyAgZ2RiX2Fzc2VydCAoZmlsZW5h bWUgIT0gTlVMTCk7Ci0rCi0rICBpZiAoc3RyY21wIChmaWxlbmFtZSwgQlVJTERfSURfTUFJTl9F WEVDVVRBQkxFX0ZJTEVOQU1FKSA9PSAwKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChpc190 YXJnZXRfZmlsZW5hbWUgKGZpbGVuYW1lKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoZmls ZW5hbWVbMF0gIT0gJy8nKQotKyAgICB7Ci0rICAgICAgd2FybmluZyAoXygiSWdub3Jpbmcgbm9u LWFic29sdXRlIGZpbGVuYW1lOiA8JXM+IiksIGZpbGVuYW1lKTsKLSsgICAgICByZXR1cm4gMDsK LSsgICAgfQotKwotKyAgaWYgKCFycG1faW5pdF9kb25lKQotKyAgICB7Ci0rICAgICAgc3RhdGlj IGludCBpbml0X3RyaWVkOwotKwotKyAgICAgIC8qIEFscmVhZHkgZmFpbGVkIHRoZSBpbml0aWFs aXphdGlvbiBiZWZvcmU/ICAqLwotKyAgICAgIGlmIChpbml0X3RyaWVkKQotKyAgICAgICAgcmV0 dXJuIDA7Ci0rICAgICAgaW5pdF90cmllZCA9IDE7Ci0rCi0rI2lmZGVmIERMT1BFTl9MSUJSUE0K LSsgICAgICB7Ci0rCXZvaWQgKmg7Ci0rCi0rCWggPSBkbG9wZW4gKERMT1BFTl9MSUJSUE0sIFJU TERfTEFaWSk7Ci0rCWlmICghaCkKLSsJICB7Ci0rCSAgICB3YXJuaW5nIChfKCJVbmFibGUgdG8g b3BlbiBcIiVzXCIgKCVzKSwgIgotKwkJICAgICAgIm1pc3NpbmcgZGVidWdpbmZvcyBub3RpZmlj YXRpb25zIHdpbGwgbm90IGJlIGRpc3BsYXllZCIpLAotKwkJICAgICBETE9QRU5fTElCUlBNLCBk bGVycm9yICgpKTsKLSsJICAgIHJldHVybiAwOwotKwkgIH0KLSsKLSsJaWYgKCEoKGhlYWRlckZv cm1hdF9wID0gKGNoYXIgKigqKSAoSGVhZGVyIGgsIGNvbnN0IGNoYXIgKiBmbXQsIGVycm1zZ190 ICplcnJtc2cpKSBkbHN5bSAoaCwgImhlYWRlckZvcm1hdCIpKQotKwkgICAgICAmJiAocnBtUmVh ZENvbmZpZ0ZpbGVzX3AgPSAoaW50ICgqKSAoY29uc3QgY2hhciAqIGZpbGUsIGNvbnN0IGNoYXIg KiB0YXJnZXQpKSBkbHN5bSAoaCwgInJwbVJlYWRDb25maWdGaWxlcyIpKQotKwkgICAgICAmJiAo cnBtZGJGcmVlSXRlcmF0b3JfcCA9IChycG1kYk1hdGNoSXRlcmF0b3IgKCopIChycG1kYk1hdGNo SXRlcmF0b3IgbWkpKSBkbHN5bSAoaCwgInJwbWRiRnJlZUl0ZXJhdG9yIikpCi0rCSAgICAgICYm IChycG1kYk5leHRJdGVyYXRvcl9wID0gKEhlYWRlciAoKikgKHJwbWRiTWF0Y2hJdGVyYXRvciBt aSkpIGRsc3ltIChoLCAicnBtZGJOZXh0SXRlcmF0b3IiKSkKLSsJICAgICAgJiYgKHJwbXRzQ3Jl YXRlX3AgPSAocnBtdHMgKCopICh2b2lkKSkgZGxzeW0gKGgsICJycG10c0NyZWF0ZSIpKQotKwkg ICAgICAmJiAocnBtdHNGcmVlX3AgPSAocnBtdHMgKCopIChycG10cyB0cykpIGRsc3ltIChoLCAi cnBtdHNGcmVlIikpCi0rCSAgICAgICYmIChycG10c0luaXRJdGVyYXRvcl9wID0gKHJwbWRiTWF0 Y2hJdGVyYXRvciAoKikgKGNvbnN0IHJwbXRzIHRzLCBycG1UYWcgcnBtdGFnLCBjb25zdCB2b2lk ICprZXlwLCBzaXplX3Qga2V5bGVuKSkgZGxzeW0gKGgsICJycG10c0luaXRJdGVyYXRvciIpKSkp Ci0rCSAgewotKwkgICAgd2FybmluZyAoXygiT3BlbmVkIGxpYnJhcnkgXCIlc1wiIGlzIGluY29t cGF0aWJsZSAoJXMpLCAiCi0rCQkgICAgICAibWlzc2luZyBkZWJ1Z2luZm9zIG5vdGlmaWNhdGlv bnMgd2lsbCBub3QgYmUgZGlzcGxheWVkIiksCi0rCQkgICAgIERMT1BFTl9MSUJSUE0sIGRsZXJy b3IgKCkpOwotKwkgICAgaWYgKGRsY2xvc2UgKGgpKQotKwkgICAgICB3YXJuaW5nIChfKCJFcnJv ciBjbG9zaW5nIGxpYnJhcnkgXCIlc1wiOiAlc1xuIiksIERMT1BFTl9MSUJSUE0sCi0rCQkgICAg ICAgZGxlcnJvciAoKSk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICB9Ci0rICAgICAgfQotKyNlbmRp ZgkvKiBETE9QRU5fTElCUlBNICovCi0rCi0rICAgICAgaWYgKHJwbVJlYWRDb25maWdGaWxlc19w IChOVUxMLCBOVUxMKSAhPSAwKQotKwl7Ci0rCSAgd2FybmluZyAoXygiRXJyb3IgcmVhZGluZyB0 aGUgcnBtIGNvbmZpZ3VyYXRpb24gZmlsZXMiKSk7Ci0rCSAgcmV0dXJuIDA7Ci0rCX0KLSsKLSsg ICAgICBycG1faW5pdF9kb25lID0gMTsKLSsgICAgfQotKwotKyAgdHMgPSBycG10c0NyZWF0ZV9w ICgpOwotKwotKyAgbWkgPSBycG10c0luaXRJdGVyYXRvcl9wICh0cywgUlBNVEFHX0JBU0VOQU1F UywgZmlsZW5hbWUsIDApOwotKyAgaWYgKG1pICE9IE5VTEwpCi0rICAgIHsKLSsjaWZuZGVmIEdE Ql9JTkRFWF9WRVJJRllfVkVORE9SCi0rICAgICAgZm9yICg7OykKLSsjZWxzZQotKyAgICAgIGlm ICghdmVyaWZ5X3ZlbmRvcikgZm9yICg7OykKLSsjZW5kaWYKLSsJewotKwkgIEhlYWRlciBoOwot KwkgIGNoYXIgKmRlYnVnaW5mbywgKipzbG90LCAqcywgKnMyOwotKwkgIGVycm1zZ190IGVycjsK LSsJICBzaXplX3Qgc3JjcnBtbGVuID0gc2l6ZW9mICgiLnNyYy5ycG0iKSAtIDE7Ci0rCSAgc2l6 ZV90IGRlYnVnaW5mb2xlbiA9IHNpemVvZiAoIi1kZWJ1Z2luZm8iKSAtIDE7Ci0rCSAgcnBtZGJN YXRjaEl0ZXJhdG9yIG1pX2RlYnVnaW5mbzsKLSsKLSsJICBoID0gcnBtZGJOZXh0SXRlcmF0b3Jf cCAobWkpOwotKwkgIGlmIChoID09IE5VTEwpCi0rCSAgICBicmVhazsKLSsKLSsJICAvKiBWZXJp ZnkgdGhlIGRlYnVnaW5mbyBmaWxlIGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZC4gICovCi0rCi0r CSAgZGVidWdpbmZvID0gaGVhZGVyRm9ybWF0X3AgKGgsICIle3NvdXJjZXJwbX0tZGVidWdpbmZv LiV7YXJjaH0iLAotKwkJCQkgICAgICAmZXJyKTsKLSsJICBpZiAoIWRlYnVnaW5mbykKLSsJICAg IHsKLSsJICAgICAgd2FybmluZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6 ICVzIiksIGZpbGVuYW1lLAotKwkgICAgICAgICAgICAgICBlcnIpOwotKwkgICAgICBjb250aW51 ZTsKLSsJICAgIH0KLSsJICAvKiBzID0gYC5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9JyAqLwot KwkgIHMgPSBzdHJyY2hyIChkZWJ1Z2luZm8sICctJykgLSBzcmNycG1sZW47Ci0rCSAgczIgPSBO VUxMOwotKwkgIGlmIChzID4gZGVidWdpbmZvICYmIG1lbWNtcCAocywgIi5zcmMucnBtIiwgc3Jj cnBtbGVuKSA9PSAwKQotKwkgICAgewotKwkgICAgICAvKiBzMiA9IGAtJXtyZWxlYXNlfS5zcmMu cnBtLWRlYnVnaW5mby4le2FyY2h9JyAqLwotKwkgICAgICBzMiA9IChjaGFyICopIG1lbXJjaHIg KGRlYnVnaW5mbywgJy0nLCBzIC0gZGVidWdpbmZvKTsKLSsJICAgIH0KLSsJICBpZiAoczIpCi0r CSAgICB7Ci0rCSAgICAgIC8qIHMyID0gYC0le3ZlcnNpb259LSV7cmVsZWFzZX0uc3JjLnJwbS1k ZWJ1Z2luZm8uJXthcmNofScgKi8KLSsJICAgICAgczIgPSAoY2hhciAqKSBtZW1yY2hyIChkZWJ1 Z2luZm8sICctJywgczIgLSBkZWJ1Z2luZm8pOwotKwkgICAgfQotKwkgIGlmICghczIpCi0rCSAg ICB7Ci0rCSAgICAgIHdhcm5pbmcgKF8oIkVycm9yIHF1ZXJ5aW5nIHRoZSBycG0gZmlsZSBgJXMn OiAlcyIpLCBmaWxlbmFtZSwKLSsJICAgICAgICAgICAgICAgZGVidWdpbmZvKTsKLSsJICAgICAg eGZyZWUgKGRlYnVnaW5mbyk7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwkgIC8qIHMg PSBgLnNyYy5ycG0tZGVidWdpbmZvLiV7YXJjaH0nICovCi0rCSAgLyogczIgPSBgLSV7dmVyc2lv bn0tJXtyZWxlYXNlfS5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9JyAqLwotKwkgIG1lbW1vdmUg KHMyICsgZGVidWdpbmZvbGVuLCBzMiwgcyAtIHMyKTsKLSsJICBtZW1jcHkgKHMyLCAiLWRlYnVn aW5mbyIsIGRlYnVnaW5mb2xlbik7Ci0rCSAgLyogcyA9IGBYWFhYLiV7YXJjaH0nICovCi0rCSAg Lyogc3RybGVuICgiWFhYWCIpID09IHNyY3JwbWxlbiArIGRlYnVnaW5mb2xlbiAqLwotKwkgIC8q IHMyID0gYC1kZWJ1Z2luZm8tJXt2ZXJzaW9ufS0le3JlbGVhc2V9WFguJXthcmNofScgKi8KLSsJ ICAvKiBzdHJsZW4gKCJYWCIpID09IHNyY3JwbWxlbiAqLwotKwkgIG1lbW1vdmUgKHMgKyBkZWJ1 Z2luZm9sZW4sIHMgKyBzcmNycG1sZW4gKyBkZWJ1Z2luZm9sZW4sCi0rCQkgICBzdHJsZW4gKHMg KyBzcmNycG1sZW4gKyBkZWJ1Z2luZm9sZW4pICsgMSk7Ci0rCSAgLyogcyA9IGAtZGVidWdpbmZv LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS4le2FyY2h9JyAqLwotKwotKwkgIC8qIFJQTURCSV9QQUNL QUdFUyByZXF1aXJlcyBrZXlsZW4gPT0gc2l6ZW9mIChpbnQpLiAgKi8KLSsJICAvKiBSUE1EQklf TEFCRUwgaXMgYW4gaW50ZXJmYWNlIGZvciBOVlItYmFzZWQgZGJpRmluZEJ5TGFiZWwoKS4gICov Ci0rCSAgbWlfZGVidWdpbmZvID0gcnBtdHNJbml0SXRlcmF0b3JfcCAodHMsIChycG1UYWcpIFJQ TURCSV9MQUJFTCwgZGVidWdpbmZvLCAwKTsKLSsJICB4ZnJlZSAoZGVidWdpbmZvKTsKLSsJICBp ZiAobWlfZGVidWdpbmZvKQotKwkgICAgewotKwkgICAgICBycG1kYkZyZWVJdGVyYXRvcl9wICht aV9kZWJ1Z2luZm8pOwotKwkgICAgICBjb3VudCA9IDA7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAg fQotKwotKwkgIC8qIFRoZSBhbGxvY2F0ZWQgbWVtb3J5IGdldHMgdXRpbGl6ZWQgYmVsb3cgZm9y IE1JU1NJTkdfUlBNX0hBU0guICAqLwotKwkgIGRlYnVnaW5mbyA9IGhlYWRlckZvcm1hdF9wICho LAotKwkJCQkgICAgICAiJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0uJXthcmNofSIsCi0r CQkJCSAgICAgICZlcnIpOwotKwkgIGlmICghZGVidWdpbmZvKQotKwkgICAgewotKwkgICAgICB3 YXJuaW5nIChfKCJFcnJvciBxdWVyeWluZyB0aGUgcnBtIGZpbGUgYCVzJzogJXMiKSwgZmlsZW5h bWUsCi0rCSAgICAgICAgICAgICAgIGVycik7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQot KwotKwkgIC8qIEJhc2UgcGFja2FnZSBuYW1lIGZvciBgZGVidWdpbmZvLWluc3RhbGwnLiAgV2Ug ZG8gbm90IHVzZSB0aGUKLSsJICAgICBgeXVtJyBjb21tYW5kIGRpcmVjdGx5IGFzIHRoZSBsaW5l Ci0rCQkgeXVtIC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCBOQU1FLWRlYnVnaW5mby5B UkNICi0rCSAgICAgd291bGQgYmUgbW9yZSBjb21wbGljYXRlZCB0aGFuIGp1c3Q6Ci0rCQkgZGVi dWdpbmZvLWluc3RhbGwgTkFNRS1WRVJTSU9OLVJFTEVBU0UuQVJDSAotKwkgICAgIERvIG5vdCBz dXBwbHkgdGhlIHJwbSBiYXNlIG5hbWUgKGRlcml2ZWQgZnJvbSAuc3JjLnJwbSBuYW1lKSBhcwot KwkgICAgIGRlYnVnaW5mby1pbnN0YWxsIGlzIHVuYWJsZSB0byBpbnN0YWxsIHRoZSBkZWJ1Z2lu Zm8gcGFja2FnZSBpZgotKwkgICAgIHRoZSBiYXNlIG5hbWUgUEtHIGJpbmFyeSBycG0gaXMgbm90 IGluc3RhbGxlZCB3aGlsZSBmb3IgZXhhbXBsZQotKwkgICAgIFBLRy1saWJzIHdvdWxkIGJlIGlu c3RhbGxlZCAoUkggQnVnIDQ2NzkwMSkuCi0rCSAgICAgRlVUVVJFOiBBZnRlciBtdWx0aXBsZSBk ZWJ1Z2luZm8gdmVyc2lvbnMgc2ltdWx0YW5lb3VzbHkgaW5zdGFsbGVkCi0rCSAgICAgZ2V0IHN1 cHBvcnRlZCB0aGUgc3VwcG9ydCBmb3IgdGhlIFZFUlNJT04tUkVMRUFTRSB0YWdzIGhhbmRsaW5n Ci0rCSAgICAgbWF5IG5lZWQgYW4gdXBkYXRlLiAgKi8KLSsKLSsJICBpZiAobWlzc2luZ19ycG1f aGFzaCA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICAvKiBERUxfRiBpcyBwYXNzZWQgTlVMTCBh cyBNSVNTSU5HX1JQTV9MSVNUJ3MgSFRBQl9ERUxFVEUKLSsJCSBzaG91bGQgbm90IGRlYWxsb2Nh dGUgdGhlIGVudHJpZXMuICAqLwotKwotKwkgICAgICBtaXNzaW5nX3JwbV9oYXNoID0gaHRhYl9j cmVhdGVfYWxsb2MgKDY0LCBodGFiX2hhc2hfc3RyaW5nLAotKwkJCSAgICAgICAoaW50ICgqKSAo Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSBzdHJlcSwKLSsJCQkJCQkgICAgTlVMTCwgeGNh bGxvYywgeGZyZWUpOwotKwkgICAgfQotKwkgIHNsb3QgPSAoY2hhciAqKikgaHRhYl9maW5kX3Ns b3QgKG1pc3NpbmdfcnBtX2hhc2gsIGRlYnVnaW5mbywgSU5TRVJUKTsKLSsJICAvKiBYQ0FMTE9D IG5ldmVyIHJldHVybnMgTlVMTC4gICovCi0rCSAgZ2RiX2Fzc2VydCAoc2xvdCAhPSBOVUxMKTsK LSsJICBpZiAoKnNsb3QgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IG1pc3Npbmdf cnBtICptaXNzaW5nX3JwbTsKLSsKLSsJICAgICAgKnNsb3QgPSBkZWJ1Z2luZm87Ci0rCi0rCSAg ICAgIG1pc3NpbmdfcnBtID0gKHN0cnVjdCBtaXNzaW5nX3JwbSAqKSB4bWFsbG9jIChzaXplb2Yg KCptaXNzaW5nX3JwbSkgKyBzdHJsZW4gKGRlYnVnaW5mbykpOwotKwkgICAgICBzdHJjcHkgKG1p c3NpbmdfcnBtLT5ycG0sIGRlYnVnaW5mbyk7Ci0rCSAgICAgIG1pc3NpbmdfcnBtLT5uZXh0ID0g bWlzc2luZ19ycG1fbGlzdDsKLSsJICAgICAgbWlzc2luZ19ycG1fbGlzdCA9IG1pc3NpbmdfcnBt OwotKwkgICAgICBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXMrKzsKLSsJICAgIH0KLSsJICBlbHNl Ci0rCSAgICB4ZnJlZSAoZGVidWdpbmZvKTsKLSsJICBjb3VudCsrOwotKwl9Ci0rI2lmZGVmIEdE Ql9JTkRFWF9WRVJJRllfVkVORE9SCi0rICAgICAgZWxzZSAvKiB2ZXJpZnlfdmVuZG9yICovCi0r CXsKLSsJICBpbnQgdmVuZG9yX3Bhc3MgPSAwLCB2ZW5kb3JfZmFpbCA9IDA7Ci0rCi0rCSAgZm9y ICg7OykKLSsJICAgIHsKLSsJICAgICAgSGVhZGVyIGg7Ci0rCSAgICAgIGVycm1zZ190IGVycjsK LSsJICAgICAgY2hhciAqdmVuZG9yOwotKwotKwkgICAgICBoID0gcnBtZGJOZXh0SXRlcmF0b3Jf cCAobWkpOwotKwkgICAgICBpZiAoaCA9PSBOVUxMKQotKwkJYnJlYWs7Ci0rCi0rCSAgICAgIHZl bmRvciA9IGhlYWRlckZvcm1hdF9wIChoLCAiJXt2ZW5kb3J9IiwgJmVycik7Ci0rCSAgICAgIGlm ICghdmVuZG9yKQotKwkJewotKwkJICB3YXJuaW5nIChfKCJFcnJvciBxdWVyeWluZyB0aGUgcnBt IGZpbGUgYCVzJzogJXMiKSwgZmlsZW5hbWUsCi0rCQkJICAgZXJyKTsKLSsJCSAgY29udGludWU7 Ci0rCQl9Ci0rCSAgICAgIGlmIChzdHJjbXAgKHZlbmRvciwgIlJlZCBIYXQsIEluYy4iKSA9PSAw KQotKwkJdmVuZG9yX3Bhc3MgPSAxOwotKwkgICAgICBlbHNlCi0rCQl2ZW5kb3JfZmFpbCA9IDE7 Ci0rCSAgICAgIHhmcmVlICh2ZW5kb3IpOwotKwkgICAgfQotKwkgIGNvdW50ID0gdmVuZG9yX3Bh c3MgIT0gMCAmJiB2ZW5kb3JfZmFpbCA9PSAwOwotKwl9Ci0rI2VuZGlmCi0rCi0rICAgICAgcnBt ZGJGcmVlSXRlcmF0b3JfcCAobWkpOwotKyAgICB9Ci0rCi0rICBycG10c0ZyZWVfcCAodHMpOwot KwotKyAgcmV0dXJuIGNvdW50OwotK30KLSsKLSsjaWZkZWYgR0RCX0lOREVYX1ZFUklGWV9WRU5E T1IKLSttaXNzaW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIHJl dHVybiBtaXNzaW5nX3JwbV9lbmxpc3RfMSAoZmlsZW5hbWUsIDApOwotK30KLSsKLStleHRlcm4g aW50IHJwbV92ZXJpZnlfdmVuZG9yIChjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0raW50Ci0rcnBt X3ZlcmlmeV92ZW5kb3IgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIHJldHVybiBtaXNz aW5nX3JwbV9lbmxpc3RfMSAoZmlsZW5hbWUsIDEpOwotK30KLSsjZW5kaWYKLSsKLStzdGF0aWMg Ym9vbAotK21pc3NpbmdfcnBtX2xpc3RfY29tcGFyIChjb25zdCBjaGFyICphcCwgY29uc3QgY2hh ciAqYnApCi0rewotKyAgcmV0dXJuIHN0cmNvbGwgKGFwLCBicCkgPCAwOwotK30KLSsKLSsvKiBJ dCByZXR1cm5zIGEgTlVMTC10ZXJtaW5hdGVkIGFycmF5IG9mIHN0cmluZ3MgbmVlZGluZyB0byBi ZSBGUkVFZC4gIEl0IG1heQotKyAgIGFsc28gcmV0dXJuIG9ubHkgTlVMTC4gICovCi0rCi0rc3Rh dGljIHZvaWQKLSttaXNzaW5nX3JwbV9saXN0X3ByaW50ICh2b2lkKQotK3sKLSsgIHN0cnVjdCBt aXNzaW5nX3JwbSAqbGlzdF9pdGVyOwotKwotKyAgaWYgKG1pc3NpbmdfcnBtX2xpc3RfZW50cmll cyA9PSAwKQotKyAgICByZXR1cm47Ci0rCi0rICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyICo+IGFy cmF5IChtaXNzaW5nX3JwbV9saXN0X2VudHJpZXMpOwotKyAgc2l6ZV90IGlkeCA9IDA7Ci0rCi0r ICBmb3IgKGxpc3RfaXRlciA9IG1pc3NpbmdfcnBtX2xpc3Q7IGxpc3RfaXRlciAhPSBOVUxMOwot KyAgICAgICBsaXN0X2l0ZXIgPSBsaXN0X2l0ZXItPm5leHQpCi0rICAgIHsKLSsgICAgICBhcnJh eVtpZHgrK10gPSBsaXN0X2l0ZXItPnJwbTsKLSsgICAgfQotKyAgZ2RiX2Fzc2VydCAoaWR4ID09 IG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcyk7Ci0rCi0rICBzdGQ6OnNvcnQgKGFycmF5LmJlZ2lu ICgpLCBhcnJheS5lbmQgKCksIG1pc3NpbmdfcnBtX2xpc3RfY29tcGFyKTsKLSsKLSsgIC8qIFdl IHplcm8gb3V0IHRoZSBudW1iZXIgb2YgbWlzc2luZyBSUE1zIGhlcmUgYmVjYXVzZSBvZiBhIG5h c3R5Ci0rICAgICBidWcgKHNlZSBSSEJaIDE4MDE5NzQpLgotKwotKyAgICAgV2hlbiB3ZSBjYWxs ICdwdXRzX3VuZmlsdGVyZWQnIGJlbG93LCBpZiBwYWdpbmF0aW9uIGlzIG9uIGFuZCBpZgotKyAg ICAgdGhlIG51bWJlciBvZiBtaXNzaW5nIFJQTXMgaXMgYmlnIGVub3VnaCB0byB0cmlnZ2VyIHBh Z2luYXRpb24sCi0rICAgICB3ZSB3aWxsIGVuZCB1cCBpbiBhbiBpbmZpbml0ZSByZWN1cnNpb24u ICBUaGUgY2FsbCBjaGFpbiBsb29rcwotKyAgICAgbGlrZSB0aGlzOgotKwotKyAgICAgbWlzc2lu Z19ycG1fbGlzdF9wcmludCAtPiBwdXRzX3VuZmlsdGVyZWQgLT4gZnB1dHNfbWF5YmVfZmlsdGVy ZWQKLSsgICAgIC0+IHByb21wdF9mb3JfY29udGludWUgLT4gZGlzcGxheV9nZGJfcHJvbXB0IC0+ Ci0rICAgICBkZWJ1Z19mbHVzaF9taXNzaW5nIC0+IG1pc3NpbmdfcnBtX2xpc3RfcHJpbnQgLi4u Ci0rCi0rICAgICBGb3IgdGhpcyByZWFzb24sIHdlIG1ha2Ugc3VyZSBNSVNTSU5HX1JQTV9MSVNU X0VOVFJJRVMgaXMgemVybwotKyAgICAgKmJlZm9yZSogY2FsbGluZyBhbnkgcHJpbnQgZnVuY3Rp b24uCi0rICAgICAKLSsgICAgIE5vdGU6IGtldmluYi8yMDIzLTAyLTIyOiBUaGUgY29kZSBiZWxv dyB1c2VkIHRvIGNhbGwKLSsgICAgIHB1dHNfdW5maWx0ZXJlZCgpIGFuZCBwcmludGZfdW5maWx0 ZXJlZCgpLCBidXQgY2FsbHMgdG8gdGhlc2UKLSsgICAgIGZ1bmN0aW9ucyBoYXZlIGJlZW4gcmVw bGFjZWQgYnkgY2FsbHMgdG8gZ2RiX3ByaW50ZigpLiAgVGhlIGNhbGwKLSsgICAgIGNoYWluIHNo b3duIGFib3ZlIChwcm9iYWJseSkgdXNlZCB0byBiZSB0aGUgY2FzZSBhdCBvbmUgdGltZSBhbmQK LSsgICAgIGhvcGVmdWxseSBzb21ldGhpbmcgc2ltaWxhciBpcyBzdGlsbCB0aGUgY2FzZSBub3cg dGhhdAotKyAgICAgZ2RiX3ByaW50ZigpIGlzIGJlaW5nIHVzZWQgaW5zdGVhZC4gICovCi0rICBt aXNzaW5nX3JwbV9saXN0X2VudHJpZXMgPSAwOwotKwotKyAgZ2RiX3ByaW50ZiAoXygiTWlzc2lu ZyBzZXBhcmF0ZSBkZWJ1Z2luZm9zLCB1c2U6ICVzIiksCi0rI2lmZGVmIERORl9ERUJVR0lORk9f SU5TVEFMTAotKwkJICAgICAiZG5mICIKLSsjZW5kaWYKLSsJCSAgICAgImRlYnVnaW5mby1pbnN0 YWxsIik7Ci0rICBmb3IgKGNvbnN0IGNoYXIgKmVsIDogYXJyYXkpCi0rICAgIHsKLSsgICAgICBn ZGJfcHJpbnRmICgiICVzIiwgZWwpOwotKyAgICB9Ci0rICBnZGJfcHJpbnRmICgiXG4iKTsKLSsK LSsgIHdoaWxlIChtaXNzaW5nX3JwbV9saXN0ICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBsaXN0 X2l0ZXIgPSBtaXNzaW5nX3JwbV9saXN0OwotKyAgICAgIG1pc3NpbmdfcnBtX2xpc3QgPSBsaXN0 X2l0ZXItPm5leHQ7Ci0rICAgICAgeGZyZWUgKGxpc3RfaXRlcik7Ci0rICAgIH0KLSt9Ci0rCi0r c3RhdGljIHZvaWQKLSttaXNzaW5nX3JwbV9jaGFuZ2UgKHZvaWQpCi0rewotKyAgZGVidWdfZmx1 c2hfbWlzc2luZyAoKTsKLSsKLSsgIGdkYl9hc3NlcnQgKG1pc3NpbmdfcnBtX2xpc3QgPT0gTlVM TCk7Ci0rICBpZiAobWlzc2luZ19ycG1faGFzaCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgaHRh Yl9kZWxldGUgKG1pc3NpbmdfcnBtX2hhc2gpOwotKyAgICAgIG1pc3NpbmdfcnBtX2hhc2ggPSBO VUxMOwotKyAgICB9Ci0rfQotKwotK2VudW0gbWlzc2luZ19leGVjCi0rICB7Ci0rICAgIC8qIElu aXQgc3RhdGUuICBFWEVDX0JGRCBhbHNvIHN0aWxsIGNvdWxkIGJlIE5VTEwuICAqLwotKyAgICBN SVNTSU5HX0VYRUNfTk9UX1RSSUVELAotKyAgICAvKiBXZSBzYXcgYSBub24tTlVMTCBFWEVDX0JG RCBidXQgUlBNIGhhcyBubyBpbmZvIGFib3V0IGl0LiAgKi8KLSsgICAgTUlTU0lOR19FWEVDX05P VF9GT1VORCwKLSsgICAgLyogV2UgZm91bmQgRVhFQ19CRkQgYnkgUlBNIGFuZCB3ZSBlaXRoZXIg aGF2ZSBpdHMgc3ltYm9scyAoZWl0aGVyIGVtYmVkZGVkCi0rICAgICAgIG9yIHNlcGFyYXRlKSBv ciB0aGUgbWFpbiBleGVjdXRhYmxlJ3MgUlBNIGlzIG5vdyBjb250YWluZWQgaW4KLSsgICAgICAg TUlTU0lOR19SUE1fSEFTSC4gICovCi0rICAgIE1JU1NJTkdfRVhFQ19FTkxJU1RFRAotKyAgfTsK LStzdGF0aWMgZW51bSBtaXNzaW5nX2V4ZWMgbWlzc2luZ19leGVjID0gTUlTU0lOR19FWEVDX05P VF9UUklFRDsKLSsKLSsjZW5kaWYJLyogSEFWRV9MSUJSUE0gKi8KLSsKLSt2b2lkCi0rZGVidWdf Zmx1c2hfbWlzc2luZyAodm9pZCkKLSt7Ci0rI2lmZGVmIEhBVkVfTElCUlBNCi0rICBtaXNzaW5n X3JwbV9saXN0X3ByaW50ICgpOwotKyNlbmRpZgotK30KLSsKICsvKiBUaGlzIE1JU1NJTkdfRklM RVBBSVJfSEFTSCB0cmFja2VyIGlzIHVzZWQgb25seSBmb3IgdGhlIGR1cGxpY2l0ZSBtZXNzYWdl cwogKyAgICAgeXVtIC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCAuLi4KICsgICBhdm9p ZGFuY2UuICAqLwpAQCAtMTE3OCwxNyArNzM5LDExIEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQt aWQuYyBiL2dkYi9idWlsZC1pZC5jCiArICAgICAgLyogQWxsIHRoZWlyIG1lbW9yeSBjYW1lIGp1 c3QgZnJvbSBtaXNzaW5nX2ZpbGVwYWlyX09CU1RBQ0suICAqLwogKyAgICAgIG1pc3NpbmdfZmls ZXBhaXJfaGFzaCA9IE5VTEw7CiArICAgIH0KLSsjaWZkZWYgSEFWRV9MSUJSUE0KLSsgIG1pc3Np bmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQ7Ci0rI2VuZGlmCiArfQogKwogK3N0YXRp YyB2b2lkCiArZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2VkIChzdHJ1Y3QgcHJvZ3JhbV9z cGFjZSAqcHNwYWNlLCBib29sIHJlbG9hZF9wKQogK3sKLSsjaWZkZWYgSEFWRV9MSUJSUE0KLSsg IG1pc3NpbmdfcnBtX2NoYW5nZSAoKTsKLSsjZW5kaWYKICsgIG1pc3NpbmdfZmlsZXBhaXJfY2hh bmdlICgpOwogK30KICsKQEAgLTEyNTUsNTUgKzgxMCwzMCBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1 aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogKwogKyAgKnNsb3QgPSBtaXNzaW5nX2ZpbGVwYWly OwogKwotKyNpZmRlZiBIQVZFX0xJQlJQTQotKyAgaWYgKG1pc3NpbmdfZXhlYyA9PSBNSVNTSU5H X0VYRUNfTk9UX1RSSUVEKQotKyAgICB7Ci0rICAgICAgY29uc3QgY2hhciAqZXhlY2ZpbGVuYW1l ID0gZ2V0X2V4ZWNfZmlsZSAoMCk7CisrICAvKiBXZSBkbyBub3QgY29sbGVjdCBhbmQgZmx1c2gg dGhlc2UgbWVzc2FnZXMgYXMgZWFjaCBzdWNoIG1lc3NhZ2UKKysgICAgIGFscmVhZHkgcmVxdWly ZXMgaXRzIG93biBzZXBhcmF0ZSBsaW5lcy4gICovCiArCi0rICAgICAgaWYgKGV4ZWNmaWxlbmFt ZSAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKG1pc3NpbmdfcnBtX2VubGlzdCAoZXhlY2ZpbGVuYW1l KSA9PSAwKQotKwkgICAgbWlzc2luZ19leGVjID0gTUlTU0lOR19FWEVDX05PVF9GT1VORDsKLSsJ ICBlbHNlCi0rCSAgICBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VYRUNfRU5MSVNURUQ7Ci0rCX0K LSsgICAgfQotKyAgaWYgKG1pc3NpbmdfZXhlYyAhPSBNSVNTSU5HX0VYRUNfRU5MSVNURUQpCi0r ICAgIGlmICgoYmluYXJ5WzBdID09IDAgfHwgbWlzc2luZ19ycG1fZW5saXN0IChiaW5hcnkpID09 IDApCi0rCSYmIChkZWJ1ZyA9PSBOVUxMIHx8IG1pc3NpbmdfcnBtX2VubGlzdCAoZGVidWcpID09 IDApKQotKyNlbmRpZgkvKiBIQVZFX0xJQlJQTSAqLwotKyAgICAgIHsKLSsJLyogV2UgZG8gbm90 IGNvbGxlY3QgYW5kIGZsdXNoIHRoZXNlIG1lc3NhZ2VzIGFzIGVhY2ggc3VjaCBtZXNzYWdlCi0r CSAgIGFscmVhZHkgcmVxdWlyZXMgaXRzIG93biBzZXBhcmF0ZSBsaW5lcy4gICovCi0rCi0rCWdk Yl9wcmludGYgKGdkYl9zdGRsb2csCi0rCQkgICAgXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2lu Zm8gZm9yICVzLlxuIiksIGJpbmFyeSk7Ci0rCWlmIChkZWJ1ZyAhPSBOVUxMKQotKwl7Ci0rCSAg aWYgKGFjY2VzcyAoZGVidWcsIEZfT0spID09IDApIHsKLSsJICAgIGdkYl9wcmludGYgKGdkYl9z dGRsb2csIF8oIlRyeTogJXMgJXNcbiIpLAorKyAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywKKysJ ICAgICAgXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm8gZm9yICVzLlxuIiksIGJpbmFyeSk7 CisrICBpZiAoZGVidWcgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGdkYl9wcmludGYgKGdkYl9z dGRsb2csIF8oIlRyeTogJXMgJXNcbiIpLAogKyNpZmRlZiBETkZfREVCVUdJTkZPX0lOU1RBTEwK LSsJCQkiZG5mIgorKwkJICAiZG5mIgogKyNlbHNlCi0rCQkJInl1bSIKKysJCSAgInl1bSIKICsj ZW5kaWYKLSsJCQkiIC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCIsIGRlYnVnKTsKLSsJ ICB9IGVsc2UKLSsJICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIF8oIlRoZSBkZWJ1Z2luZm8g cGFja2FnZSBmb3IgdGhpcyBmaWxlIGlzIHByb2JhYmx5IGJyb2tlbi5cbiIpKTsKLSsJfQotKyAg ICAgIH0KKysJCSAgIiAtLWVuYWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwiLCBkZWJ1Zyk7Cisr ICAgIH0KICt9CiArCiAgLyogU2VlIGJ1aWxkLWlkLmguICAqLwogIAogIGdkYl9iZmRfcmVmX3B0 cgotLWJ1aWxkX2lkX3RvX2RlYnVnX2JmZCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29uc3QgYmZk X2J5dGUgKmJ1aWxkX2lkKQotK2J1aWxkX2lkX3RvX2RlYnVnX2JmZCAoc2l6ZV90IGJ1aWxkX2lk X2xlbiwgY29uc3QgYmZkX2J5dGUgKmJ1aWxkX2lkLAotKwkJICAgICAgIGNoYXIgKipsaW5rX3Jl dHVybikKKyBidWlsZF9pZF90b19kZWJ1Z19iZmQgKHNpemVfdCBidWlsZF9pZF9sZW4sIGNvbnN0 IGJmZF9ieXRlICpidWlsZF9pZCkKICB7CiAtICByZXR1cm4gYnVpbGRfaWRfdG9fYmZkX3N1ZmZp eCAoYnVpbGRfaWRfbGVuLCBidWlsZF9pZCwgIi5kZWJ1ZyIpOwotKyAgcmV0dXJuIGJ1aWxkX2lk X3RvX2JmZF9zdWZmaXggKGJ1aWxkX2lkX2xlbiwgYnVpbGRfaWQsICIuZGVidWciLAotKwkJCQkg bGlua19yZXR1cm4pOworKyAgcmV0dXJuIGJ1aWxkX2lkX3RvX2JmZF9zdWZmaXggKGJ1aWxkX2lk X2xlbiwgYnVpbGRfaWQsICIuZGVidWciLCBudWxscHRyKTsKICB9CiAgCiAgLyogU2VlIGJ1aWxk LWlkLmguICAqLwpAQCAtMTMxOCw0NSArODQ4LDE1IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQt aWQuYyBiL2dkYi9idWlsZC1pZC5jCiAgfQogIAogIC8qIFNlZSBidWlsZC1pZC5oLiAgKi8KK0BA IC0yMjQsNiArODg2LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAotIHN0ZDo6c3RyaW5nCi0gZmluZF9zZXBhcmF0ZV9k ZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCQkgICAg IGRlZmVycmVkX3dhcm5pbmdzICp3YXJuaW5ncykKLSsJCQkJICAgICBkZWZlcnJlZF93YXJuaW5n cyAqd2FybmluZ3MsCi0rCQkJCSAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gKmJ1 aWxkX2lkX2ZpbGVuYW1lX3JldHVybikKLSB7Ci0gICBjb25zdCBzdHJ1Y3QgYmZkX2J1aWxkX2lk ICpidWlsZF9pZDsKLSAKLSsgIGlmIChidWlsZF9pZF9maWxlbmFtZV9yZXR1cm4pCi0rICAgICpi dWlsZF9pZF9maWxlbmFtZV9yZXR1cm4gPSBOVUxMOwotKwotICAgYnVpbGRfaWQgPSBidWlsZF9p ZF9iZmRfZ2V0IChvYmpmaWxlLT5vYmZkLmdldCAoKSk7Ci0gICBpZiAoYnVpbGRfaWQgIT0gTlVM TCkKLSAgICAgewotQEAgLTIyMiw4ICsxMzU4LDIxIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZV9ieV9idWlsZGlkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCSAgICBfKCJcbkxvb2tp bmcgZm9yIHNlcGFyYXRlIGRlYnVnIGluZm8gKGJ1aWxkLWlkKSBmb3IgIgotIAkJICAgICAgIiVz XG4iKSwgb2JqZmlsZV9uYW1lIChvYmpmaWxlKSk7Ci0gCi0rICAgICAgY2hhciAqYnVpbGRfaWRf ZmlsZW5hbWVfY3N0ciA9IE5VTEw7CiAgICAgICAgZ2RiX2JmZF9yZWZfcHRyIGFiZmQgKGJ1aWxk X2lkX3RvX2RlYnVnX2JmZCAoYnVpbGRfaWQtPnNpemUsCi0tCQkJCQkJICAgYnVpbGRfaWQtPmRh dGEpKTsKLSsJCQkJCQkgICBidWlsZF9pZC0+ZGF0YSwKLSsJICAgICAgKCFidWlsZF9pZF9maWxl bmFtZV9yZXR1cm4gPyBOVUxMIDogJmJ1aWxkX2lkX2ZpbGVuYW1lX2NzdHIpKSk7Ci0rICAgICAg aWYgKGJ1aWxkX2lkX2ZpbGVuYW1lX3JldHVybikKLSsJewotKwkgIGlmICghYnVpbGRfaWRfZmls ZW5hbWVfY3N0cikKLSsJICAgIGdkYl9hc3NlcnQgKCEqYnVpbGRfaWRfZmlsZW5hbWVfcmV0dXJu KTsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgICpidWlsZF9pZF9maWxlbmFtZV9yZXR1cm4g PSBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAoYnVpbGRfaWRfZmlsZW5hbWVfY3N0cik7 Ci0rCSAgICAgIGJ1aWxkX2lkX2ZpbGVuYW1lX2NzdHIgPSBOVUxMOwotKwkgICAgfQotKwl9Cisg CQkJCQkJICAgYnVpbGRfaWQtPmRhdGEpKTsKICsKICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcg b24gYSBzdHJpcHBlZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAgaWYgKGFiZmQgIT0gTlVMTAog IAkgICYmIGZpbGVuYW1lX2NtcCAoYmZkX2dldF9maWxlbmFtZSAoYWJmZC5nZXQgKCkpLAotQEAg LTI0MywzICsxMzkyLDIyIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yNDMsMyArOTA2LDIyIEBAIGZpbmRfc2VwYXJh dGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAKICAg IHJldHVybiBzdGQ6OnN0cmluZyAoKTsKICB9CkBAIC0xMzgyLDE3ICs4ODIsMTMgQEAgZGlmZiAt LWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKIGRpZmYgLS1naXQgYS9nZGIv YnVpbGQtaWQuaCBiL2dkYi9idWlsZC1pZC5oCiAtLS0gYS9nZGIvYnVpbGQtaWQuaAogKysrIGIv Z2RiL2J1aWxkLWlkLmgKLUBAIC0zOCwxNCArMzgsMTkgQEAgZXh0ZXJuIGludCBidWlsZF9pZF92 ZXJpZnkgKGJmZCAqYWJmZCwKLSAgICBjYW4gYmUgZm91bmQsIHJldHVybiBOVUxMLiAgKi8KLSAK K0BAIC00MCwxMiArNDAsMTYgQEAgZXh0ZXJuIGludCBidWlsZF9pZF92ZXJpZnkgKGJmZCAqYWJm ZCwKICBleHRlcm4gZ2RiX2JmZF9yZWZfcHRyIGJ1aWxkX2lkX3RvX2RlYnVnX2JmZCAoc2l6ZV90 IGJ1aWxkX2lkX2xlbiwKLS0JCQkJCSAgICAgIGNvbnN0IGJmZF9ieXRlICpidWlsZF9pZCk7Ci0r CQkJCQkgICAgICBjb25zdCBiZmRfYnl0ZSAqYnVpbGRfaWQsCi0rCQkJCQkgICAgICBjaGFyICoq bGlua19yZXR1cm4gPSBOVUxMKTsKLSsKKyAJCQkJCSAgICAgIGNvbnN0IGJmZF9ieXRlICpidWls ZF9pZCk7CisgCiArZXh0ZXJuIGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChjb25zdCBzdHJ1 Y3QgYmZkX2J1aWxkX2lkICpidWlsZF9pZCwKICsJCQkJICAgY2hhciAqKmxpbmtfcmV0dXJuKTsK LSAKKysKICAvKiBGaW5kIGFuZCBvcGVuIGEgQkZEIGZvciBhbiBleGVjdXRhYmxlIGZpbGUgZ2l2 ZW4gYSBidWlsZC1pZC4gIElmIG5vIEJGRAogICAgIGNhbiBiZSBmb3VuZCwgcmV0dXJuIE5VTEwu ICBUaGUgcmV0dXJuZWQgcmVmZXJlbmNlIHRvIHRoZSBCRkQgbXVzdCBiZQogICAgIHJlbGVhc2Vk IGJ5IHRoZSBjYWxsZXIuICAqLwpAQCAtMTQwNCwyOCArOTAwLDYgQEAgZGlmZiAtLWdpdCBhL2dk Yi9idWlsZC1pZC5oIGIvZ2RiL2J1aWxkLWlkLmgKICAKICAvKiBGaW5kIHRoZSBzZXBhcmF0ZSBk ZWJ1ZyBmaWxlIGZvciBPQkpGSUxFLCBieSB1c2luZyB0aGUgYnVpbGQtaWQKICAgICBhc3NvY2lh dGVkIHdpdGggT0JKRklMRSdzIEJGRC4gIElmIHN1Y2Nlc3NmdWwsIHJldHVybnMgdGhlIGZpbGUg bmFtZSBmb3IgdGhlCi1AQCAtNTgsNyArNjMsOCBAQCBleHRlcm4gZ2RiX2JmZF9yZWZfcHRyIGJ1 aWxkX2lkX3RvX2V4ZWNfYmZkIChzaXplX3QgYnVpbGRfaWRfbGVuLAotICAgIHdpbGwgYmUgcHJp bnRlZC4gICovCi0gCi0gZXh0ZXJuIHN0ZDo6c3RyaW5nIGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZV9ieV9idWlsZGlkCi0tICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGRlZmVycmVkX3dhcm5p bmdzICp3YXJuaW5ncyk7Ci0rICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGRlZmVycmVkX3dh cm5pbmdzICp3YXJuaW5ncywKLSsgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAqYnVp bGRfaWRfZmlsZW5hbWVfcmV0dXJuKTsKLSAKLSAvKiBSZXR1cm4gYW4gaGV4LXN0cmluZyByZXBy ZXNlbnRhdGlvbiBvZiBCVUlMRF9JRC4gICovCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvZmZyZWFk LmMgYi9nZGIvY29mZnJlYWQuYwotLS0tIGEvZ2RiL2NvZmZyZWFkLmMKLSsrKyBiL2dkYi9jb2Zm cmVhZC5jCi1AQCAtNzI5LDcgKzcyOSw3IEBAIGNvZmZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFncykKLSAgICAgewot ICAgICAgIGRlZmVycmVkX3dhcm5pbmdzIHdhcm5pbmdzOwotICAgICAgIHN0ZDo6c3RyaW5nIGRl YnVnZmlsZQotLQk9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChvYmpmaWxl LCAmd2FybmluZ3MpOwotKwk9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChv YmpmaWxlLCAmd2FybmluZ3MsIE5VTEwpOwotIAotICAgICAgIGlmIChkZWJ1Z2ZpbGUuZW1wdHkg KCkpCi0gCWRlYnVnZmlsZQogZGlmZiAtLWdpdCBhL2dkYi9jb3JlbG93LmMgYi9nZGIvY29yZWxv dy5jCiAtLS0gYS9nZGIvY29yZWxvdy5jCiArKysgYi9nZGIvY29yZWxvdy5jCkBAIC0xNTE3LDMz ICs5OTEsNiBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2Ri LnRleGluZm8KICBAY2luZGV4IEBjb2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBjaW5k ZXggZGVidWcgbGluayBzZWN0aW9ucwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2VjdGlv biBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlIG5hbWVkCi1kaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQu YyBiL2dkYi9lbGZyZWFkLmMKLS0tLSBhL2dkYi9lbGZyZWFkLmMKLSsrKyBiL2dkYi9lbGZyZWFk LmMKLUBAIC0xMjIwLDggKzEyMjAsMTAgQEAgZWxmX3N5bWZpbGVfcmVhZF9kd2FyZjIgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAotICAgICB7Ci0gICAgICAgZGVmZXJyZWRfd2FybmluZ3Mgd2Fy bmluZ3M7Ci0gCi0rICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gYnVpbGRfaWRf ZmlsZW5hbWU7Ci0gICAgICAgc3RkOjpzdHJpbmcgZGVidWdmaWxlCi0tCT0gZmluZF9zZXBhcmF0 ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsICZ3YXJuaW5ncyk7Ci0rCT0gZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsICZ3YXJuaW5ncywKLSsJCQkJ CSAgICAgICAmYnVpbGRfaWRfZmlsZW5hbWUpOwotIAotICAgICAgIGlmIChkZWJ1Z2ZpbGUuZW1w dHkgKCkpCi0gCWRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9kZWJ1Z2xp bmsgKG9iamZpbGUsICZ3YXJuaW5ncyk7Ci1AQCAtMTI2NSw2ICsxMjY3LDExIEBAIGVsZl9zeW1m aWxlX3JlYWRfZHdhcmYyIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCSAgICAgIGhhc19k d2FyZjIgPSB0cnVlOwotIAkJICAgIH0KLSAJCX0KLSsJCS8qIENoZWNrIGlmIGFueSBzZXBhcmF0 ZSBkZWJ1ZyBpbmZvIGhhcyBiZWVuIGV4dHJhY3RlZCBvdXQuICAqLwotKwkJZWxzZSBpZiAoYmZk X2dldF9zZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQuZ2V0ICgpLAotKwkJICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIuZ251X2RlYnVnbGluayIpCi0rCQkJICE9IE5VTEwp Ci0rCQkgIGRlYnVnX3ByaW50X21pc3NpbmcgKG9iamZpbGVfbmFtZSAob2JqZmlsZSksIGJ1aWxk X2lkX2ZpbGVuYW1lLmdldCAoKSk7Ci0gCSAgICB9Ci0gCX0KLSAgICAgICAvKiBJZiBhbGwgdGhl IG1ldGhvZHMgdG8gY29sbGVjdCB0aGUgZGVidWdpbmZvIGZhaWxlZCwgcHJpbnQgdGhlCiBkaWZm IC0tZ2l0IGEvZ2RiL29iamZpbGVzLmggYi9nZGIvb2JqZmlsZXMuaAogLS0tIGEvZ2RiL29iamZp bGVzLmgKICsrKyBiL2dkYi9vYmpmaWxlcy5oCgpkaWZmIC0tZ2l0IGEvZ2RiLWFkZC1taXNzaW5n LWRlYnVnLWV4dC1sYW5nLWhvb2sucGF0Y2ggYi9nZGItYWRkLW1pc3NpbmctZGVidWctZXh0LWxh bmctaG9vay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2EzNDA1 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWFkZC1taXNzaW5nLWRlYnVnLWV4dC1sYW5nLWhvb2su cGF0Y2gKQEAgLTAsMCArMSwzMTQgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4K K0RhdGU6IEZyaSwgMTMgT2N0IDIwMjMgMTY6NDg6MzYgKzAxMDAKK1N1YmplY3Q6IGdkYi1hZGQt bWlzc2luZy1kZWJ1Zy1leHQtbGFuZy1ob29rLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFt IGNvbW1pdCA2NjFkOThhMzMzMS4KKworZ2RiOiBhZGQgYW4gZXh0ZW5zaW9uIGxhbmd1YWdlIGhv b2sgZm9yIG1pc3NpbmcgZGVidWcgaW5mbworCitUaGlzIGNvbW1pdCBhZGRzIGEgbmV3IGV4dGVu c2lvbl9sYW5ndWFnZV9vcHMgaG9vayB3aGljaCBhbGxvd3MgYW4KK2V4dGVuc2lvbiB0byBoYW5k bGUgdGhlIGNhc2Ugd2hlcmUgR0RCIGNhbid0IGZpbmQgYSBzZXBhcmF0ZSBkZWJ1ZworaW5mb3Jt YXRpb24gZmlsZSBmb3IgYSBwYXJ0aWN1bGFyIG9iamZpbGUuCisKK1RoaXMgY29tbWl0IGRvZXNu J3QgYWN0dWFsbHkgaW1wbGVtZW50IHRoZSBob29rIGZvciBhbnkgb2YgR0RCJ3MKK2V4dGVuc2lv biBsYW5ndWFnZXMsIHRoZSBuZXh0IGNvbW1pdCB3aWxsIGRvIHRoYXQuICBUaGlzIGNvbW1pdCBq dXN0CithZGRzIHN1cHBvcnQgZm9yIHRoZSBob29rIHRvIGV4dGVuc2lvbi1wcml2LmggYW5kIGV4 dGVuc2lvbi5bY2hdLCBhbmQKK3RoZW4gcmV3b3JrcyBzeW1maWxlLWRlYnVnLmMgdG8gY2FsbCB0 aGUgaG9vay4KKworUmlnaHQgbm93IHRoZSBob29rIHdpbGwgYWx3YXlzIHJldHVybiBpdHMgZGVm YXVsdCB2YWx1ZSwgd2hpY2ggbWVhbnMKK0dEQiBzaG91bGQgZG8gbm90aGluZyBkaWZmZXJlbnQu ICBBcyBzdWNoLCB0aGVyZSBzaG91bGQgYmUgbm8gdXNlcgordmlzaWJsZSBjaGFuZ2VzIGFmdGVy IHRoaXMgY29tbWl0LgorCitJJ2xsIGdpdmUgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB3aGF0IHRo ZSBob29rIGRvZXMgaGVyZSBzbyB0aGF0IHdlCitjYW4gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBp biBzeW1maWxlLWRlYnVnLmMuICBUaGUgbmV4dCBjb21taXQgYWRkcyBhCitQeXRob24gaW1wbGVt ZW50YXRpb24gZm9yIHRoaXMgbmV3IGhvb2ssIGFuZCBnaXZlcyBhIGZ1bGxlcgorZGVzY3JpcHRp b24gb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LgorCitDdXJyZW50bHksIHdoZW4gbG9va2luZyBm b3Igc2VwYXJhdGUgZGVidWcgaW5mb3JtYXRpb24gR0RCIHRyaWVzIHRocmVlCit0aGluZ3MsIGlu IHRoaXMgb3JkZXI6CisKKyAgMS4gVXNlIHRoZSBidWlsZC1pZCB0byBmaW5kIHRoZSByZXF1aXJl ZCBkZWJ1ZyBpbmZvcm1hdGlvbiwKKworICAyLiBDaGVjayBmb3IgLmdudV9kZWJ1Z2xpbmsgc2Vj dGlvbiBhbmQgdXNlIHRoYXQgdG8gbG9vayB1cCB0aGUKKyAgcmVxdWlyZWQgZGVidWcgaW5mb3Jt YXRpb24sCisKKyAgMy4gQ2hlY2sgd2l0aCBkZWJ1Z2luZm9kIHRvIHNlZSBpZiBpdCBjYW4gc3Vw cGx5IHRoZSByZXF1aXJlZAorICBpbmZvcm1hdGlvbi4KKworVGhlIG5ldyBleHRlbnNpb25fbGFu Z3VhZ2Vfb3BzOjpoYW5kbGVfbWlzc2luZ19kZWJ1Z2luZm8gaG9vayBpcworY2FsbGVkIGlmIGFs bCB0aHJlZSBzdGVwcyBmYWlsIHRvIGZpbmQgYW55IGRlYnVnIGluZm9ybWF0aW9uLiAgVGhlCito b29rIGhhcyB0aHJlZSBwb3NzaWJsZSByZXR1cm4gdmFsdWVzOgorCisgIGEuIE5vdGhpbmcsIG5v IGRlYnVnIGluZm9ybWF0aW9uIGlzIGZvdW5kLCBHREIgY29udGludWVzIHdpdGhvdXQgdGhlCisg IGRlYnVnIGluZm9ybWF0aW9uIGZvciB0aGlzIG9iamZpbGUuICBUaGlzIG1hdGNoZXMgdGhlIGN1 cnJlbnQKKyAgYmVoYXZpb3VyIG9mIEdEQiwgYW5kIGlzIHRoZSBkZWZhdWx0IGlmIG5vdGhpbmcg aXMgaW1wbGVtZW50aW5nIHRoaXMKKyAgbmV3IGhvb2ssCisKKyAgYi4gSW5zdGFsbCBkZWJ1ZyBp bmZvcm1hdGlvbiBpbnRvIGEgbG9jYXRpb24gdGhhdCBzdGVwICMxIG9yICMyCisgIGFib3ZlIHdv dWxkIG5vcm1hbGx5IGNoZWNrLCBhbmQgdGhlbiByZXF1ZXN0IHRoYXQgR0RCIHJlcGVhdHMgc3Rl cHMKKyAgIzEgYW5kICMyIGluIHRoZSBob3BlIHRoYXQgR0RCIHdpbGwgbm93IGZpbmQgdGhlIGRl YnVnIGluZm9ybWF0aW9uLgorICBJZiB0aGUgZGVidWcgaW5mb3JtYXRpb24gaXMgc3RpbGwgbm90 IGZvdW5kIHRoZW4gR0RCIGNhcnJpZXMgb24KKyAgd2l0aG91dCB0aGUgZGVidWcgaW5mb3JtYXRp b24uICBJZiB0aGUgZGVidWcgaW5mb3JtYXRpb24gaXMgZm91bmQKKyAgdGhlIEdEQiBsb2FkcyBp dCBhbmQgY2FycmllcyBvbiwKKworICBjLiBSZXR1cm4gYSBmaWxlbmFtZSBmb3IgYSBmaWxlIGNv bnRhaW5pbmcgdGhlIHJlcXVpcmVkIGRlYnVnCisgIGluZm9ybWF0aW9uLiAgR0RCIGxvYWRzIHRo ZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYW5kIGNhcnJpZXMgb24uCisKK1RoZSBjaGFuZ2VzIGlu IHRoaXMgY29tbWl0IG1vc3RseSBpbnZvbHZlIHBsYWNpbmcgdGhlIGNvcmUgb2YKK29iamZpbGU6 OmZpbmRfYW5kX2FkZF9zZXBhcmF0ZV9zeW1ib2xfZmlsZSBpbnRvIGEgbG9vcCB3aGljaCBhbGxv d3MKK2ZvciBzdGVwcyAjMSBhbmQgIzIgdG8gYmUgcmVwZWF0ZWQuCisKK1dlIHRha2UgY2FyZSB0 byBlbnN1cmUgdGhhdCBkZWJ1Z2luZm9kIGlzIG9ubHkgcXVlcmllZCBvbmNlLCB0aGUgZmlyc3QK K3RpbWUgdGhyb3VnaC4gIFRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgbm8gZXh0ZW5zaW9uIGlzIGdv aW5nIHRvIGJlIGFibGUKK3RvIGNvbnRyb2wgdGhlIHJlcGxpZXMgZnJvbSBkZWJ1Z2luZm9kLCBz byB0aGVyZSdzIG5vIHBvaW50IG1ha2luZyBhCitzZWNvbmQgcmVxdWVzdCAtLSBhbmQgYXMgdGhl c2UgcmVxdWVzdHMgZ28gb3ZlciB0aGUgbmV0d29yaywgdGhleQorY291bGQgcG90ZW50aWFsbHkg YmUgc2xvdy4KKworVGhlIHdhcm5pbmdzIHRoYXQgZmluZF9hbmRfYWRkX3NlcGFyYXRlX3N5bWJv bF9maWxlIGNvbGxlY3RzIGFyZQorZGlzcGxheWVkIG9ubHkgb25jZSBhc3N1bWluZyB0aGF0IG5v IGRlYnVnIGluZm9ybWF0aW9uIGlzIGZvdW5kLiAgSWYKK2RlYnVnIGluZm9ybWF0aW9uIGlzIGZv dW5kLCBldmVuIGFmdGVyIHRoZSBleHRlbnNpb24gaGFzIG9wZXJhdGVkLAordGhlbiB0aGUgd2Fy bmluZ3MgYXJlIG5vdCBzaG93bjsgcmVtZW1iZXIsIHRoZXNlIGFyZSB3YXJuaW5ncyBmcm9tIEdE QgorYWJvdXQgZmFpbHVyZSB0byBmaW5kIGFueSBzdWl0YWJsZSBkZWJ1ZyBpbmZvcm1hdGlvbiwg c28gaXQgbWFrZXMKK3NlbnNlIHRvIGhpZGUgdGhlc2UgaWYgZGVidWcgaW5mb3JtYXRpb24gaXMg Zm91bmQuCisKK0FwcHJvdmVkLUJ5OiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4KKworZGlm ZiAtLWdpdCBhL2dkYi9leHRlbnNpb24tcHJpdi5oIGIvZ2RiL2V4dGVuc2lvbi1wcml2LmgKKy0t LSBhL2dkYi9leHRlbnNpb24tcHJpdi5oCisrKysgYi9nZGIvZXh0ZW5zaW9uLXByaXYuaAorQEAg LTI3OSw2ICsyNzksMTMgQEAgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9vcHMKKyAgIGdkYjo6 b3B0aW9uYWw8aW50PiAoKnByaW50X2luc24pIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJ CQkJICAgIENPUkVfQUREUiBhZGRyZXNzLAorIAkJCQkgICAgc3RydWN0IGRpc2Fzc2VtYmxlX2lu Zm8gKmluZm8pOworKworKyAgLyogR2l2ZSBleHRlbnNpb24gbGFuZ3VhZ2VzIGEgY2hhbmNlIHRv IGRlYWwgd2l0aCBtaXNzaW5nIGRlYnVnCisrICAgICBpbmZvcm1hdGlvbi4gIE9CSkZJTEUgaXMg dGhlIGZpbGUgZm9yIHdoaWNoIEdEQiB3YXMgdW5hYmxlIHRvIGZpbmQKKysgICAgIGFueSBkZWJ1 ZyBpbmZvcm1hdGlvbi4gICovCisrICBleHRfbGFuZ19taXNzaW5nX2RlYnVnaW5mb19yZXN1bHQK KysgICAgKCpoYW5kbGVfbWlzc2luZ19kZWJ1Z2luZm8pIChjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9u X2xhbmd1YWdlX2RlZm4gKiwKKysJCQkJIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyB9Owor IAorIC8qIFN0YXRlIG5lY2Vzc2FyeSB0byByZXN0b3JlIGEgc2lnbmFsIGhhbmRsZXIgdG8gaXRz IHByZXZpb3VzIHZhbHVlLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvZXh0ZW5zaW9uLmMgYi9nZGIv ZXh0ZW5zaW9uLmMKKy0tLSBhL2dkYi9leHRlbnNpb24uYworKysrIGIvZ2RiL2V4dGVuc2lvbi5j CitAQCAtOTk3LDYgKzk5NywyNSBAQCBleHRfbGFuZ19wcmludF9pbnNuIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHJlc3MsCisgICByZXR1cm4ge307CisgfQorIAorKy8q IFNlZSBleHRlbnNpb24uaC4gICovCisrCisrZXh0X2xhbmdfbWlzc2luZ19kZWJ1Z2luZm9fcmVz dWx0CisrZXh0X2xhbmdfaGFuZGxlX21pc3NpbmdfZGVidWdpbmZvIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKKyt7CisrICBmb3IgKGNvbnN0IHN0cnVjdCBleHRlbnNpb25fbGFuZ3VhZ2VfZGVm biAqZXh0bGFuZyA6IGV4dGVuc2lvbl9sYW5ndWFnZXMpCisrICAgIHsKKysgICAgICBpZiAoZXh0 bGFuZy0+b3BzID09IG51bGxwdHIKKysJICB8fCBleHRsYW5nLT5vcHMtPmhhbmRsZV9taXNzaW5n X2RlYnVnaW5mbyA9PSBudWxscHRyKQorKwljb250aW51ZTsKKysgICAgICBleHRfbGFuZ19taXNz aW5nX2RlYnVnaW5mb19yZXN1bHQgcmVzdWx0CisrCT0gZXh0bGFuZy0+b3BzLT5oYW5kbGVfbWlz c2luZ19kZWJ1Z2luZm8gKGV4dGxhbmcsIG9iamZpbGUpOworKyAgICAgIGlmICghcmVzdWx0LmZp bGVuYW1lICgpLmVtcHR5ICgpIHx8IHJlc3VsdC50cnlfYWdhaW4gKCkpCisrCXJldHVybiByZXN1 bHQ7CisrICAgIH0KKysKKysgIHJldHVybiB7fTsKKyt9CisrCisgLyogQ2FsbGVkIHZpYSBhbiBv YnNlcnZlciBiZWZvcmUgZ2RiIHByaW50cyBpdHMgcHJvbXB0LgorICAgIEl0ZXJhdGUgb3ZlciB0 aGUgZXh0ZW5zaW9uIGxhbmd1YWdlcyBnaXZpbmcgdGhlbSBhIGNoYW5jZSB0bworICAgIGNoYW5n ZSB0aGUgcHJvbXB0LiAgVGhlIGZpcnN0IG9uZSB0byBjaGFuZ2UgdGhlIHByb21wdCB3aW5zLAor ZGlmZiAtLWdpdCBhL2dkYi9leHRlbnNpb24uaCBiL2dkYi9leHRlbnNpb24uaAorLS0tIGEvZ2Ri L2V4dGVuc2lvbi5oCisrKysgYi9nZGIvZXh0ZW5zaW9uLmgKK0BAIC0zMzcsNiArMzM3LDY4IEBA IGV4dGVybiBnZGI6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBleHRfbGFuZ19jb2xvcml6ZV9kaXNh c20KKyBleHRlcm4gZ2RiOjpvcHRpb25hbDxpbnQ+IGV4dF9sYW5nX3ByaW50X2luc24KKyAgIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCBkaXNhc3Nl bWJsZV9pbmZvICppbmZvKTsKKyAKKysvKiBXaGVuIEdEQiBjYWxscyBpbnRvIGFuIGV4dGVuc2lv biBsYW5ndWFnZSBiZWNhdXNlIGFuIG9iamZpbGUgd2FzCisrICAgZGlzY292ZXJlZCBmb3Igd2hp Y2ggR0RCIGNvdWxkbid0IGZpbmQgYW55IGRlYnVnIGluZm9ybWF0aW9uLCB0aGlzCisrICAgc3Ry dWN0dXJlIGhvbGRzIHRoZSByZXN1bHQgdGhhdCB0aGUgZXh0ZW5zaW9uIGxhbmd1YWdlIHJldHVy bnMuCisrCisrICAgVGhlcmUgYXJlIHRocmVlIHBvc3NpYmxlIGFjdGlvbnMgdGhhdCBtaWdodCBi ZSByZXR1cm5lZCBieSBhbiBleHRlbnNpb247CisrICAgZmlyc3QgYW4gZXh0ZW5zaW9uIGNhbiBy ZXR1cm4gYSBmaWxlbmFtZSwgdGhpcyBpcyB0aGUgcGF0aCB0byB0aGUgZmlsZQorKyAgIGNvbnRh aW5pbmcgdGhlIHJlcXVpcmVkIGRlYnVnICBpbmZvcm1hdGlvbi4gIFRoZSBzZWNvbmQgcG9zc2li aWxpdHkgaXMKKysgICB0byByZXR1cm4gYSBmbGFnIGluZGljYXRpbmcgdGhhdCBHREIgc2hvdWxk IGNoZWNrIGFnYWluIGZvciB0aGUgbWlzc2luZworKyAgIGRlYnVnIGluZm9ybWF0aW9uLCB0aGlz IHdvdWxkIGltcGx5IHRoYXQgdGhlIGV4dGVuc2lvbiBoYXMgaW5zdGFsbGVkCisrICAgdGhlIGRl YnVnIGluZm9ybWF0aW9uIGludG8gYSBsb2NhdGlvbiB3aGVyZSBHREIgY2FuIGJlIGV4cGVjdGVk IHRvIGZpbmQKKysgICBpdC4gIEFuZCB0aGUgdGhpcmQgb3B0aW9uIGlzIGZvciB0aGUgZXh0ZW5z aW9uIHRvIGp1c3QgcmV0dXJuIGEgbnVsbAorKyAgIHJlc3VsdCwgaW5kaWNhdGlvbiB0aGVyZSBp cyBub3RoaW5nIHRoZSBleHRlbnNpb24gY2FuIGRvIHRvIHByb3ZpZGUgdGhlCisrICAgbWlzc2lu ZyBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCisrc3RydWN0IGV4dF9sYW5nX21pc3NpbmdfZGVidWdp bmZvX3Jlc3VsdAorK3sKKysgIC8qIERlZmF1bHQgcmVzdWx0LiAgVGhlIGV4dGVuc2lvbiB3YXMg dW5hYmxlIHRvIHByb3ZpZGUgdGhlIG1pc3NpbmcgZGVidWcKKysgICAgIGluZm8uICAqLworKyAg ZXh0X2xhbmdfbWlzc2luZ19kZWJ1Z2luZm9fcmVzdWx0ICgpCisrICB7IC8qIE5vdGhpbmcuICAq LyB9CisrCisrICAvKiBXaGVuIFRSWV9BR0FJTiBpcyB0cnVlIEdEQiBzaG91bGQgdHJ5IHNlYXJj aGluZyBhZ2FpbiwgdGhlIGV4dGVuc2lvbgorKyAgICAgbWF5IGhhdmUgaW5zdGFsbGVkIHRoZSBt aXNzaW5nIGRlYnVnIGluZm8gaW50byBhIHN1aXRhYmxlIGxvY2F0aW9uLgorKyAgICAgV2hlbiBU UllfQUdBSU4gaXMgZmFsc2UgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBkZWZhdWx0LCBubwor KyAgICAgYXJndW1lbnQsIGNvbnN0cnVjdG9yLiAgKi8KKysgIGV4dF9sYW5nX21pc3NpbmdfZGVi dWdpbmZvX3Jlc3VsdCAoYm9vbCB0cnlfYWdhaW4pCisrICAgIDogbV90cnlfYWdhaW4gKHRyeV9h Z2FpbikKKysgIHsgLyogTm90aGluZy4gICovIH0KKysKKysgIC8qIExvb2sgaW4gRklMRU5BTUUg Zm9yIHRoZSBtaXNzaW5nIGRlYnVnIGluZm8uICAqLworKyAgZXh0X2xhbmdfbWlzc2luZ19kZWJ1 Z2luZm9fcmVzdWx0IChzdGQ6OnN0cmluZyAmJmZpbGVuYW1lKQorKyAgICA6IG1fZmlsZW5hbWUg KHN0ZDo6bW92ZSAoZmlsZW5hbWUpKQorKyAgeyAvKiBOb3RoaW5nLiAgKi8gfQorKworKyAgLyog VGhlIGZpbGVuYW1lIHdoZXJlIEdEQiBjYW4gZmluZCB0aGUgbWlzc2luZyBkZWJ1Z2luZm8uICBU aGlzIGlzIGVtcHR5CisrICAgICBpZiB0aGUgZXh0ZW5zaW9uIGRpZG4ndCBzdWdnZXN0IGEgZmls ZSB0aGF0IGNhbiBiZSB1c2VkLiAgKi8KKysgIGNvbnN0IHN0ZDo6c3RyaW5nICYKKysgIGZpbGVu YW1lICgpIGNvbnN0CisrICB7CisrICAgIHJldHVybiBtX2ZpbGVuYW1lOworKyAgfQorKworKyAg LyogUmV0dXJucyB0cnVlIGlmIEdEQiBzaG91bGQgbG9vayBhZ2FpbiBmb3IgdGhlIGRlYnVnIGlu Zm9ybWF0aW9uLiAgKi8KKysgIGNvbnN0IGJvb2wKKysgIHRyeV9hZ2FpbiAoKSBjb25zdAorKyAg eworKyAgICByZXR1cm4gbV90cnlfYWdhaW47CisrICB9CisrCisrcHJpdmF0ZToKKysgIC8qIFRo ZSBmaWxlbmFtZSB3aGVyZSB0aGUgbWlzc2luZyBkZWJ1Z2luZm8gY2FuIG5vdyBiZSBmb3VuZC4g ICovCisrICBzdGQ6OnN0cmluZyBtX2ZpbGVuYW1lOworKworKyAgLyogV2hlbiB0cnVlIEdEQiB3 aWxsIHNlYXJjaCBhZ2FpbiBmb3IgdGhlIGRlYnVnaW5mbyB1c2luZyBpdHMgc3RhbmRhcmQKKysg ICAgIHRlY2huaXF1ZXMuICBXaGVuIGZhbHNlIEdEQiB3aWxsIG5vdCBzZWFyY2ggYWdhaW4uICAq LworKyAgYm9vbCBtX3RyeV9hZ2FpbiA9IGZhbHNlOworK307CisrCisrLyogQ2FsbGVkIHdoZW4g R0RCIGZhaWxlZCB0byBmaW5kIGFueSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgT0JKRklMRS4gICov CisrCisrZXh0ZXJuIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZvX3Jlc3VsdCBleHRfbGFuZ19o YW5kbGVfbWlzc2luZ19kZWJ1Z2luZm8KKysgIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Cisr CisgI2lmIEdEQl9TRUxGX1RFU1QKKyBuYW1lc3BhY2Ugc2VsZnRlc3RzIHsKKyBleHRlcm4gdm9p ZCAoKmhvb2tfc2V0X2FjdGl2ZV9leHRfbGFuZykgKCk7CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bWZp bGUtZGVidWcuYyBiL2dkYi9zeW1maWxlLWRlYnVnLmMKKy0tLSBhL2dkYi9zeW1maWxlLWRlYnVn LmMKKysrKyBiL2dkYi9zeW1maWxlLWRlYnVnLmMKK0BAIC02MzEsMzggKzYzMSw4OCBAQCBkZWJ1 Z2luZm9kX2ZpbmRfYW5kX29wZW5fc2VwYXJhdGVfc3ltYm9sX2ZpbGUgKHN0cnVjdCBvYmpmaWxl ICogb2JqZmlsZSkKKyBib29sCisgb2JqZmlsZTo6ZmluZF9hbmRfYWRkX3NlcGFyYXRlX3N5bWJv bF9maWxlIChzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorIHsKKy0gIGJvb2wgaGFz X2R3YXJmID0gZmFsc2U7CistCistICBkZWZlcnJlZF93YXJuaW5ncyB3YXJuaW5nczsKKy0KKy0g IGdkYl9iZmRfcmVmX3B0ciBkZWJ1Z19iZmQ7CistICBzdGQ6OnN0cmluZyBmaWxlbmFtZTsKKy0K Ky0gIHN0ZDo6dGllIChkZWJ1Z19iZmQsIGZpbGVuYW1lKSA9IHNpbXBsZV9maW5kX2FuZF9vcGVu X3NlcGFyYXRlX3N5bWJvbF9maWxlCistICAgICh0aGlzLCBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGVfYnlfYnVpbGRpZCwgJndhcm5pbmdzKTsKKy0KKy0gIGlmIChkZWJ1Z19iZmQgPT0gbnVsbHB0 cikKKy0gICAgc3RkOjp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCistICAgICAgPSBzaW1wbGVf ZmluZF9hbmRfb3Blbl9zZXBhcmF0ZV9zeW1ib2xfZmlsZQorLQkgICh0aGlzLCBmaW5kX3NlcGFy YXRlX2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rLCAmd2FybmluZ3MpOworKyAgYm9vbCBoYXNfZHdh cmYyID0gZmFsc2U7CisrCisrICAvKiBVc3VhbGx5IHdlIG9ubHkgbWFrZSBhIHNpbmdsZSBwYXNz IHdoZW4gbG9va2luZyBmb3Igc2VwYXJhdGUgZGVidWcKKysgICAgIGluZm9ybWF0aW9uLiAgSG93 ZXZlciwgaXQgaXMgcG9zc2libGUgZm9yIGFuIGV4dGVuc2lvbiBsYW5ndWFnZSBob29rCisrICAg ICB0byByZXF1ZXN0IHRoYXQgR0RCIG1ha2UgYSBzZWNvbmQgcGFzcywgaW4gd2hpY2ggY2FzZSBt YXhfYXR0ZW1wdHMKKysgICAgIHdpbGwgYmUgdXBkYXRlZCwgYW5kIHRoZSBsb29wIHJlc3RhcnRl ZC4gICovCisrICBmb3IgKHVuc2lnbmVkIGF0dGVtcHQgPSAwLCBtYXhfYXR0ZW1wdHMgPSAxOwor KyAgICAgICBhdHRlbXB0IDwgbWF4X2F0dGVtcHRzICYmICFoYXNfZHdhcmYyOworKyAgICAgICAr K2F0dGVtcHQpCisrICAgIHsKKysgICAgICBnZGJfYXNzZXJ0IChtYXhfYXR0ZW1wdHMgPD0gMik7 CisrCisrICAgICAgZGVmZXJyZWRfd2FybmluZ3Mgd2FybmluZ3M7CisrICAgICAgZ2RiX2JmZF9y ZWZfcHRyIGRlYnVnX2JmZDsKKysgICAgICBzdGQ6OnN0cmluZyBmaWxlbmFtZTsKKysKKysgICAg ICBzdGQ6OnRpZSAoZGVidWdfYmZkLCBmaWxlbmFtZSkKKysJPSBzaW1wbGVfZmluZF9hbmRfb3Bl bl9zZXBhcmF0ZV9zeW1ib2xfZmlsZQorKwkgICAgKHRoaXMsIGZpbmRfc2VwYXJhdGVfZGVidWdf ZmlsZV9ieV9idWlsZGlkLCAmd2FybmluZ3MpOworKworKyAgICAgIGlmIChkZWJ1Z19iZmQgPT0g bnVsbHB0cikKKysJc3RkOjp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCisrCSAgPSBzaW1wbGVf ZmluZF9hbmRfb3Blbl9zZXBhcmF0ZV9zeW1ib2xfZmlsZQorKwkgICAgICAodGhpcywgZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluaywgJndhcm5pbmdzKTsKKysKKysgICAgICAv KiBPbmx5IHRyeSBkZWJ1Z2luZm9kIG9uIHRoZSBmaXJzdCBhdHRlbXB0LiAgU3VyZSwgd2UgY291 bGQgaW1hZ2luZQorKwkgYW4gZXh0ZW5zaW9uIHRoYXQgc29tZWhvdyBhZGRzIHRoZSByZXF1aXJl ZCBkZWJ1ZyBpbmZvIHRvIHRoZQorKwkgZGVidWdpbmZvZCBzZXJ2ZXIgYnV0LCBhdCBsZWFzdCBm b3Igbm93LCB3ZSBkb24ndCBzdXBwb3J0IHRoaXMKKysJIHNjZW5hcmlvLiAgQmV0dGVyIGZvciB0 aGUgZXh0ZW5zaW9uIHRvIHJldHVybiBuZXcgZGVidWcgaW5mbworKwkgZGlyZWN0bHkgdG8gR0RC LiAgUGx1cywgZ29pbmcgdG8gdGhlIGRlYnVnaW5mb2Qgc2VydmVyIG1pZ2h0IGJlCisrCSBzbG93 LCBzbyB0aGF0J3MgYSBnb29kIGFyZ3VtZW50IGZvciBvbmx5IGRvaW5nIHRoaXMgb25jZS4gICov CisrICAgICAgaWYgKGRlYnVnX2JmZCA9PSBudWxscHRyICYmIGF0dGVtcHQgPT0gMCkKKysJc3Rk Ojp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCisrCSAgPSBkZWJ1Z2luZm9kX2ZpbmRfYW5kX29w ZW5fc2VwYXJhdGVfc3ltYm9sX2ZpbGUgKHRoaXMpOworKworKyAgICAgIGlmIChkZWJ1Z19iZmQg IT0gbnVsbHB0cikKKysJeworKwkgIC8qIFdlIGZvdW5kIGEgc2VwYXJhdGUgZGVidWcgaW5mbyBz eW1ib2wgZmlsZS4gIElmIHRoaXMgaXMgb3VyCisrCSAgICAgZmlyc3QgYXR0ZW1wdCB0aGVuIHNl dHRpbmcgSEFTX0RXQVJGMiB3aWxsIGNhdXNlIHVzIHRvIGJyZWFrCisrCSAgICAgZnJvbSB0aGUg YXR0ZW1wdCBsb29wLiAgKi8KKysJICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJhdGUgKGRlYnVnX2Jm ZCwgZmlsZW5hbWUuY19zdHIgKCksCisrCQkJCSAgICBzeW1maWxlX2ZsYWdzLCB0aGlzKTsKKysJ ICBoYXNfZHdhcmYyID0gdHJ1ZTsKKysJfQorKyAgICAgIGVsc2UgaWYgKGF0dGVtcHQgPT0gMCkK KysJeworKwkgIC8qIEZhaWxlZCB0byBmaW5kIGEgc2VwYXJhdGUgZGVidWcgaW5mbyBzeW1ib2wg ZmlsZS4gIENhbGwgb3V0IHRvCisrCSAgICAgdGhlIGV4dGVuc2lvbiBsYW5ndWFnZXMuICBUaGUg dXNlciBtaWdodCBoYXZlIHJlZ2lzdGVyZWQgYW4KKysJICAgICBleHRlbnNpb24gdGhhdCBjYW4g ZmluZCB0aGUgZGVidWcgaW5mbyBmb3IgdXMsIG9yIG1heWJlIGdpdmUKKysJICAgICB0aGUgdXNl ciBhIHN5c3RlbSBzcGVjaWZpYyBtZXNzYWdlIHRoYXQgZ3VpZGVzIHRoZW0gdG8gZmluZGluZwor KwkgICAgIHRoZSBtaXNzaW5nIGRlYnVnIGluZm8uICAqLworKworKwkgIGV4dF9sYW5nX21pc3Np bmdfZGVidWdpbmZvX3Jlc3VsdCBleHRfcmVzdWx0CisrCSAgICA9IGV4dF9sYW5nX2hhbmRsZV9t aXNzaW5nX2RlYnVnaW5mbyAodGhpcyk7CisrCSAgaWYgKCFleHRfcmVzdWx0LmZpbGVuYW1lICgp LmVtcHR5ICgpKQorKwkgICAgeworKwkgICAgICAvKiBFeHRlbnNpb24gZm91bmQgYSBzdWl0YWJs ZSBkZWJ1ZyBmaWxlIGZvciB1cy4gICovCisrCSAgICAgIGRlYnVnX2JmZAorKwkJPSBzeW1maWxl X2JmZF9vcGVuX25vX2Vycm9yIChleHRfcmVzdWx0LmZpbGVuYW1lICgpLmNfc3RyICgpKTsKKyAK Ky0gIGlmIChkZWJ1Z19iZmQgPT0gbnVsbHB0cikKKy0gICAgc3RkOjp0aWUgKGRlYnVnX2JmZCwg ZmlsZW5hbWUpCistICAgICAgPSBkZWJ1Z2luZm9kX2ZpbmRfYW5kX29wZW5fc2VwYXJhdGVfc3lt Ym9sX2ZpbGUgKHRoaXMpOworKwkgICAgICBpZiAoZGVidWdfYmZkICE9IG51bGxwdHIpCisrCQl7 CisrCQkgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoZGVidWdfYmZkLAorKwkJCQkJICAgIGV4 dF9yZXN1bHQuZmlsZW5hbWUgKCkuY19zdHIgKCksCisrCQkJCQkgICAgc3ltZmlsZV9mbGFncywg dGhpcyk7CisrCQkgIGhhc19kd2FyZjIgPSB0cnVlOworKwkJfQorKwkgICAgfQorKwkgIGVsc2Ug aWYgKGV4dF9yZXN1bHQudHJ5X2FnYWluICgpKQorKwkgICAgeworKwkgICAgICBtYXhfYXR0ZW1w dHMgPSAyOworKwkgICAgICBjb250aW51ZTsKKysJICAgIH0KKysJfQorIAorLSAgaWYgKGRlYnVn X2JmZCAhPSBudWxscHRyKQorLSAgICB7CistICAgICAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRl IChkZWJ1Z19iZmQsIGZpbGVuYW1lLmNfc3RyICgpLCBzeW1maWxlX2ZsYWdzLAorLQkJCQl0aGlz KTsKKy0gICAgICBoYXNfZHdhcmYgPSB0cnVlOworKyAgICAgIC8qIElmIHdlIHN0aWxsIGhhdmUg bm90IGdvdCBhIHNlcGFyYXRlIGRlYnVnIHN5bWJvbCBmaWxlLCB0aGVuCisrCSBlbWl0IGFueSB3 YXJuaW5ncyB3ZSd2ZSBjb2xsZWN0ZWQgc28gZmFyLiAgKi8KKysgICAgICBpZiAoIWhhc19kd2Fy ZjIpCisrCXdhcm5pbmdzLmVtaXQgKCk7CisgICAgIH0KKyAKKy0gIC8qIElmIHdlIHN0aWxsIGhh dmUgbm90IGdvdCBhIHNlcGFyYXRlIGRlYnVnIHN5bWJvbCBmaWxlLCB0aGVuCistICAgICBlbWl0 IGFueSB3YXJuaW5ncyB3ZSd2ZSBjb2xsZWN0ZWQgc28gZmFyLiAgKi8KKy0gIGlmICghaGFzX2R3 YXJmKQorLSAgICB3YXJuaW5ncy5lbWl0ICgpOworLQorLSAgcmV0dXJuIGhhc19kd2FyZjsKKysg IHJldHVybiBoYXNfZHdhcmYyOworIH0KKyAKKyAMCgpkaWZmIC0tZ2l0IGEvZ2RiLWFkZC1taXNz aW5nLWRlYnVnLWluZm8tcHl0aG9uLWhvb2sucGF0Y2ggYi9nZGItYWRkLW1pc3NpbmctZGVidWct aW5mby1weXRob24taG9vay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42NjE3YmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWFkZC1taXNzaW5nLWRlYnVnLWluZm8t cHl0aG9uLWhvb2sucGF0Y2gKQEAgLTAsMCArMSwxNTU2IEBACitGcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNz QHJlZGhhdC5jb20+CitEYXRlOiBTdW4sIDE1IE9jdCAyMDIzIDIyOjQ4OjQyICswMTAwCitTdWJq ZWN0OiBnZGItYWRkLW1pc3NpbmctZGVidWctaW5mby1weXRob24taG9vay5wYXRjaAorCis7OyBC YWNrcG9ydCB1cHN0cmVhbSBjb21taXQgOGY2YzQ1MmI1YTQuCisKK2dkYjogaW1wbGVtZW50IG1p c3NpbmcgZGVidWcgaGFuZGxlciBob29rIGZvciBQeXRob24KKworVGhpcyBjb21taXQgYnVpbGRz IG9uIHRoZSBwcmV2aW91cyBjb21taXQsIGFuZCBpbXBsZW1lbnRzIHRoZQorZXh0ZW5zaW9uX2xh bmd1YWdlX29wczo6aGFuZGxlX21pc3NpbmdfZGVidWdpbmZvIGZ1bmN0aW9uIGZvciBQeXRob24u CitUaGlzIGhvb2sgd2lsbCBnaXZlIHVzZXIgc3VwcGxpZWQgUHl0aG9uIGNvZGUgYSBjaGFuY2Ug dG8gaGVscCBmaW5kCittaXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uLgorCitUaGUgaW1wbGVtZW50 YXRpb24gb2YgdGhlIG5ldyBob29rIGlzIHByZXR0eSBtaW5pbWFsIHdpdGhpbiBHREIncyBDKysK K2NvZGU7IG1vc3Qgb2YgdGhlIHdvcmsgaXMgb3V0LXNvdXJjZWQgdG8gYSBQeXRob24gaW1wbGVt ZW50YXRpb24gd2hpY2gKK2lzIG1vZGVsbGVkIGhlYXZpbHkgb24gaG93IEdEQidzIFB5dGhvbiBm cmFtZSB1bndpbmRlcnMgYXJlCitpbXBsZW1lbnRlZC4KKworVGhlIGZvbGxvd2luZyBuZXcgY29t bWFuZHMgYXJlIGFkZGVkIGFzIGNvbW1hbmRzIGltcGxlbWVudGVkIGluCitQeXRob24sIHRoaXMg aXMgc2ltaWxhciB0byBob3cgdGhlIFB5dGhvbiB1bndpbmRlciBjb21tYW5kcyBhcmUKK2ltcGxl bWVudGVkOgorCisgIGluZm8gbWlzc2luZy1kZWJ1Zy1oYW5kbGVycworICBlbmFibGUgbWlzc2lu Zy1kZWJ1Zy1oYW5kbGVyIExPQ1VTIEhBTkRMRVIKKyAgZGlzYWJsZSBtaXNzaW5nLWRlYnVnLWhh bmRsZXIgTE9DVVMgSEFORExFUgorCitUbyBtYWtlIHVzZSBvZiB0aGlzIGV4dGVuc2lvbiBob29r IGEgdXNlciB3aWxsIGNyZWF0ZSBtaXNzaW5nIGRlYnVnCitpbmZvcm1hdGlvbiBoYW5kbGVyIG9i amVjdHMsIGFuZCByZWdpc3RlcnMgdGhlc2UgaGFuZGxlcnMgd2l0aCBHREIuCitXaGVuIEdEQiBl bmNvdW50ZXJzIGFuIG9iamZpbGUgdGhhdCBpcyBtaXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uLCBl YWNoCitoYW5kbGVyIGlzIGNhbGxlZCBpbiB0dXJuIHVudGlsIG9uZSBpcyBhYmxlIHRvIGhlbHAu ICBIZXJlIGlzIGEKK21pbmltYWwgaGFuZGxlciB0aGF0IGRvZXMgbm90aGluZyB1c2VmdWw6CisK KyAgaW1wb3J0IGdkYgorICBpbXBvcnQgZ2RiLm1pc3NpbmdfZGVidWcKKworICBjbGFzcyBNeUZp cnN0SGFuZGxlcihnZGIubWlzc2luZ19kZWJ1Zy5NaXNzaW5nRGVidWdIYW5kbGVyKToKKyAgICAg IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJteV9maXJz dF9oYW5kbGVyIikKKworICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iamZpbGUpOgorICAgICAg ICAgICMgVGhpcyBoYW5kbGVyIGRvZXMgbm90aGluZyB1c2VmdWwuCisgICAgICAgICAgcmV0dXJu IE5vbmUKKworICBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKE5vbmUsIE15Rmly c3RIYW5kbGVyKCkpCisKK1JldHVybmluZyBOb25lIGZyb20gdGhlIF9fY2FsbF9fIG1ldGhvZCB0 ZWxscyBHREIgdGhhdCB0aGlzIGhhbmRsZXIKK3dhcyB1bmFibGUgdG8gZmluZCB0aGUgbWlzc2lu ZyBkZWJ1ZyBpbmZvcm1hdGlvbiwgYW5kIEdEQiBzaG91bGQgYXNrCithbnkgb3RoZXIgcmVnaXN0 ZXJlZCBoYW5kbGVycy4KKworQnkgZXh0ZW5kaW5nIHRoZSBfX2NhbGxfXyBtZXRob2QgaXQgaXMg cG9zc2libGUgZm9yIHRoZSBQeXRob24KK2V4dGVuc2lvbiB0byBsb2NhdGUgdGhlIGRlYnVnIGlu Zm9ybWF0aW9uIGZvciBvYmpmaWxlIGFuZCByZXR1cm4gYQordmFsdWUgdGhhdCB0ZWxscyBHREIg aG93IHRvIHVzZSB0aGUgaW5mb3JtYXRpb24gdGhhdCBoYXMgYmVlbiBsb2NhdGVkLgorCitQb3Nz aWJsZSByZXR1cm4gdmFsdWVzIGZyb20gYSBoYW5kbGVyOgorCisgIC0gTm9uZTogVGhpcyBtZWFu cyB0aGUgaGFuZGxlciBjb3VsZG4ndCBoZWxwLiAgR0RCIHdpbGwgY2FsbCBvdGhlcgorICAgICAg ICAgIHJlZ2lzdGVyZWQgaGFuZGxlcnMgdG8gc2VlIGlmIHRoZXkgY2FuIGhlbHAgaW5zdGVhZC4K KworICAtIEZhbHNlOiBUaGUgaGFuZGxlciBoYXMgZG9uZSBhbGwgaXQgY2FuLCBidXQgdGhlIGRl YnVnIGluZm9ybWF0aW9uCisgICAgICAgICAgIGZvciB0aGUgb2JqZmlsZSBzdGlsbCBjb3VsZG4n dCBiZSBmb3VuZC4gIEdEQiB3aWxsIG5vdCBjYWxsCisJICAgYW55IG90aGVyIGhhbmRsZXJzLCBh bmQgd2lsbCBjb250aW51ZSB3aXRob3V0IHRoZSBkZWJ1ZworCSAgIGluZm9ybWF0aW9uIGZvciBv YmpmaWxlLgorCisgIC0gVHJ1ZTogVGhlIGhhbmRsZXIgaGFzIGluc3RhbGxlZCB0aGUgZGVidWcg aW5mb3JtYXRpb24gaW50byBhCisgICAgICAgICAgbG9jYXRpb24gd2hlcmUgR0RCIHdvdWxkIG5v cm1hbGx5IGV4cGVjdCB0byBmaW5kIGl0LiAgR0RCCisJICBzaG91bGQgbG9vayBhZ2FpbiBmb3Ig dGhlIGRlYnVnIGluZm9ybWF0aW9uLgorCisgIC0gQSBzdHJpbmc6IFRoZSBoYW5kbGVyIGNhbiBy ZXR1cm4gYSBmaWxlbmFtZSwgd2hpY2ggaXMgdGhlIGZpbGUKKyAgICAgICAgICAgICAgY29udGFp bmluZyB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvcm1hdGlvbi4gIEdEQiB3aWxsIGxvYWQKKwkgICAg ICB0aGlzIGZpbGUuCisKK1doZW4gYSBoYW5kbGVyIHJldHVybnMgVHJ1ZSwgR0RCIHdpbGwgbG9v ayBhZ2FpbiBmb3IgdGhlIGRlYnVnCitpbmZvcm1hdGlvbiwgYnV0IG9ubHkgdXNpbmcgdGhlIHN0 YW5kYXJkIGJ1aWx0LWluIGJ1aWxkLWlkIGFuZAorLmdudV9kZWJ1Z2xpbmsgYmFzZWQgbG9va3Vw IHN0cmF0ZWdpZXMuICBJdCBpcyBub3QgcG9zc2libGUgZm9yIGFuCitleHRlbnNpb24gdG8gdHJp Z2dlciBhbm90aGVyIGRlYnVnaW5mb2QgbG9va3VwOyB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0Cit0 aGUgZGVidWdpbmZvZCBzZXJ2ZXIgaXMgcmVtb3RlLCBhbmQgb3V0IG9mIHRoZSBjb250cm9sIG9m IGV4dGVuc2lvbnMKK3J1bm5pbmcgd2l0aGluIEdEQi4KKworSGFuZGxlcnMgY2FuIGJlIHJlZ2lz dGVyZWQgZ2xvYmFsbHksIG9yIHBlciBwcm9ncmFtIHNwYWNlLiAgR0RCIGNoZWNrcwordGhlIGhh bmRsZXJzIGZvciB0aGUgY3VycmVudCBwcm9ncmFtIHNwYWNlIGZpcnN0LCBhbmQgdGhlbiBhbGwg b2YgdGhlCitnbG9iYWwgaGFuZGxlcy4gIFRoZSBmaXJzdCBoYW5kbGVyIHRoYXQgcmV0dXJucyBh IHZhbHVlIHRoYXQgaXMgbm90CitOb25lLCBoYXMgImhhbmRsZWQiIHRoZSBvYmpmaWxlLCBhdCB3 aGljaCBwb2ludCBHREIgY29udGludWVzLgorCitSZXZpZXdlZC1CeTogRWxpIFphcmV0c2tpaSA8 ZWxpekBnbnUub3JnPgorQXBwcm92ZWQtQnk6IFRvbSBUcm9tZXkgPHRvbUB0cm9tZXkuY29tPgor CitkaWZmIC0tZ2l0IGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluIGIvZ2RiL2RhdGEt ZGlyZWN0b3J5L01ha2VmaWxlLmluCistLS0gYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUu aW4KKysrKyBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgorQEAgLTczLDYgKzczLDcg QEAgUFlUSE9OX0ZJTEVfTElTVCA9IFwKKyAJZ2RiL0ZyYW1lRGVjb3JhdG9yLnB5IFwKKyAJZ2Ri L0ZyYW1lSXRlcmF0b3IucHkgXAorIAlnZGIvZnJhbWVzLnB5IFwKKysJZ2RiL21pc3NpbmdfZGVi dWcucHkgXAorIAlnZGIvcHJpbnRpbmcucHkgXAorIAlnZGIvcHJvbXB0LnB5IFwKKyAJZ2RiL3N0 eWxpbmcucHkgXAorQEAgLTgyLDYgKzgzLDcgQEAgUFlUSE9OX0ZJTEVfTElTVCA9IFwKKyAJZ2Ri L2NvbW1hbmQvX19pbml0X18ucHkgXAorIAlnZGIvY29tbWFuZC9leHBsb3JlLnB5IFwKKyAJZ2Ri L2NvbW1hbmQvZnJhbWVfZmlsdGVycy5weSBcCisrCWdkYi9jb21tYW5kL21pc3NpbmdfZGVidWcu cHkgXAorIAlnZGIvY29tbWFuZC9wcmV0dHlfcHJpbnRlcnMucHkgXAorIAlnZGIvY29tbWFuZC9w cm9tcHQucHkgXAorIAlnZGIvY29tbWFuZC90eXBlX3ByaW50ZXJzLnB5IFwKK2RpZmYgLS1naXQg YS9nZGIvZG9jL3B5dGhvbi50ZXhpIGIvZ2RiL2RvYy9weXRob24udGV4aQorLS0tIGEvZ2RiL2Rv Yy9weXRob24udGV4aQorKysrIGIvZ2RiL2RvYy9weXRob24udGV4aQorQEAgLTIyOSw2ICsyMjks NyBAQAorICogQ29ubmVjdGlvbnMgSW4gUHl0aG9uOjogICAgICAgUHl0aG9uIHJlcHJlc2VudGF0 aW9uIG9mIGNvbm5lY3Rpb25zLgorICogVFVJIFdpbmRvd3MgSW4gUHl0aG9uOjogICAgICAgSW1w bGVtZW50aW5nIG5ldyBUVUkgd2luZG93cy4KKyAqIERpc2Fzc2VtYmx5IEluIFB5dGhvbjo6ICAg ICAgIEluc3RydWN0aW9uIERpc2Fzc2VtYmx5IEluIFB5dGhvbgorKyogTWlzc2luZyBEZWJ1ZyBJ bmZvIEluIFB5dGhvbjo6IEhhbmRsZSBtaXNzaW5nIGRlYnVnIGluZm8gZnJvbSBQeXRob24uCisg QGVuZCBtZW51CisgCisgQG5vZGUgQmFzaWMgUHl0aG9uCitAQCAtNTE5MSw2ICs1MTkyLDEyIEBA Cisgb2JqZWN0cy4gIEB4cmVme0ZyYW1lIEZpbHRlciBBUEl9LCBmb3IgbW9yZSBpbmZvcm1hdGlv bi4KKyBAZW5kIGRlZnZhcgorIAorK0BkZWZ2YXIgUHJvZ3NwYWNlLm1pc3NpbmdfZGVidWdfaGFu ZGxlcnMKKytUaGUgQGNvZGV7bWlzc2luZ19kZWJ1Z19oYW5kbGVyc30gYXR0cmlidXRlIGlzIGEg bGlzdCBvZiB0aGUgbWlzc2luZworK2RlYnVnIGhhbmRsZXIgb2JqZWN0cyBmb3IgdGhpcyBwcm9n cmFtIHNwYWNlLiAgQHhyZWZ7TWlzc2luZyBEZWJ1ZworK0luZm8gSW4gUHl0aG9ufSwgZm9yIG1v cmUgaW5mb3JtYXRpb24uCisrQGVuZCBkZWZ2YXIKKysKKyBBIHByb2dyYW0gc3BhY2UgaGFzIHRo ZSBmb2xsb3dpbmcgbWV0aG9kczoKKyAKKyBAZGVmdW4gUHJvZ3NwYWNlLmJsb2NrX2Zvcl9wYyAo cGMpCitAQCAtNzc3MCw2ICs3Nzc3LDEzOSBAQAorIGdkYi5kaXNhc3NlbWJsZXIucmVnaXN0ZXJf ZGlzYXNzZW1ibGVyKE5pYmJsZVN3YXBEaXNhc3NlbWJsZXIoKSkKKyBAZW5kIHNtYWxsZXhhbXBs ZQorIAorK0Bub2RlIE1pc3NpbmcgRGVidWcgSW5mbyBJbiBQeXRob24KKytAc3Vic3Vic2VjdGlv biBNaXNzaW5nIERlYnVnIEluZm8gSW4gUHl0aG9uCisrQGNpbmRleCBweXRob24sIGhhbmRsZSBt aXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uCisrCisrV2hlbiBAdmFsdWV7R0RCTn0gZW5jb3VudGVy cyBhIG5ldyBvYmpmaWxlIChAcHhyZWZ7T2JqZmlsZXMgSW4KKytQeXRob259KSwgZS5nLkA6IHRo ZSBwcmltYXJ5IGV4ZWN1dGFibGUsIG9yIGFueSBzaGFyZWQgbGlicmFyaWVzIHVzZWQKKytieSB0 aGUgaW5mZXJpb3IsIEB2YWx1ZXtHREJOfSB3aWxsIGF0dGVtcHQgdG8gbG9hZCB0aGUgY29ycmVz cG9uZGluZworK2RlYnVnIGluZm9ybWF0aW9uIGZvciB0aGF0IG9iamZpbGUuICBUaGUgZGVidWcg aW5mb3JtYXRpb24gbWlnaHQgYmUKKytmb3VuZCB3aXRoaW4gdGhlIG9iamZpbGUgaXRzZWxmLCBv ciB3aXRoaW4gYSBzZXBhcmF0ZSBvYmpmaWxlIHdoaWNoCisrQHZhbHVle0dEQk59IHdpbGwgYXV0 b21hdGljYWxseSBsb2NhdGUgYW5kIGxvYWQuCisrCisrU29tZXRpbWVzIHRob3VnaCwgQHZhbHVl e0dEQk59IG1pZ2h0IG5vdCBmaW5kIGFueSBkZWJ1ZyBpbmZvcm1hdGlvbgorK2ZvciBhbiBvYmpm aWxlLCBpbiB0aGlzIGNhc2UgdGhlIGRlYnVnZ2luZyBleHBlcmllbmNlIHdpbGwgYmUKKytyZXN0 cmljdGVkLgorKworK0lmIEB2YWx1ZXtHREJOfSBmYWlscyB0byBsb2NhdGUgYW55IGRlYnVnIGlu Zm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIKKytvYmpmaWxlLCB0aGVyZSBpcyBhbiBvcHBvcnR1 bml0eSBmb3IgYSBQeXRob24gZXh0ZW5zaW9uIHRvIHN0ZXAgaW4uICBBCisrUHl0aG9uIGV4dGVu c2lvbiBjYW4gcG90ZW50aWFsbHkgbG9jYXRlIHRoZSBtaXNzaW5nIGRlYnVnIGluZm9ybWF0aW9u CisrdXNpbmcgc29tZSBwbGF0Zm9ybS0gb3IgcHJvamVjdC1zcGVjaWZpYyBzdGVwcywgYW5kIGlu Zm9ybQorK0B2YWx1ZXtHREJOfSBvZiBpdHMgbG9jYXRpb24uICBPciBhIFB5dGhvbiBleHRlbnNp b24gbWlnaHQgcHJvdmlkZQorK3NvbWUgcGxhdGZvcm0tIG9yIHByb2plY3Qtc3BlY2lmaWMgYWR2 aWNlIHRvIHRoZSB1c2VyIGFib3V0IGhvdyB0bworK29idGFpbiB0aGUgbWlzc2luZyBkZWJ1ZyBp bmZvcm1hdGlvbi4KKysKKytBIG1pc3NpbmcgZGVidWcgaW5mb3JtYXRpb24gUHl0aG9uIGV4dGVu c2lvbiBjb25zaXN0cyBvZiBhIGhhbmRsZXIKKytvYmplY3Qgd2hpY2ggaGFzIHRoZSBAY29kZXtu YW1lfSBhbmQgQGNvZGV7ZW5hYmxlZH0gYXR0cmlidXRlcywgYW5kCisraW1wbGVtZW50cyB0aGUg QGNvZGV7X19jYWxsX199IG1ldGhvZC4gIFdoZW4gQHZhbHVle0dEQk59IGVuY291bnRlcnMKKyth biBvYmpmaWxlIGZvciB3aGljaCBpdCBpcyB1bmFibGUgdG8gZmluZCBhbnkgZGVidWcgaW5mb3Jt YXRpb24sIGl0CisraW52b2tlcyB0aGUgQGNvZGV7X19jYWxsX199IG1ldGhvZC4gIEZ1bGwgZGV0 YWlscyBvZiBob3cgaGFuZGxlcnMgYXJlCisrd3JpdHRlbiBjYW4gYmUgZm91bmQgYmVsb3cuCisr CisrQHN1YmhlYWRpbmcgVGhlIEBjb2Rle2dkYi5taXNzaW5nX2RlYnVnfSBNb2R1bGUKKysKKytA dmFsdWV7R0RCTn0gY29tZXMgd2l0aCBhIEBjb2Rle2dkYi5taXNzaW5nX2RlYnVnfSBtb2R1bGUg d2hpY2gKKytjb250YWlucyB0aGUgZm9sbG93aW5nIGNsYXNzIGFuZCBnbG9iYWwgZnVuY3Rpb246 CisrCisrQGRlZnRwe2NsYXNzfSBnZGIubWlzc2luZ19kZWJ1Zy5NaXNzaW5nRGVidWdIYW5kbGVy CisrCisrQGNvZGV7TWlzc2luZ0RlYnVnSGFuZGxlcn0gaXMgYSBiYXNlIGNsYXNzIGZyb20gd2hp Y2ggdXNlci1jcmVhdGVkCisraGFuZGxlcnMgY2FuIGRlcml2ZSwgdGhvdWdoIGl0IGlzIG5vdCBy ZXF1aXJlZCB0aGF0IGhhbmRsZXJzIGRlcml2ZQorK2Zyb20gdGhpcyBjbGFzcywgc28gbG9uZyBh cyBhbnkgdXNlciBjcmVhdGVkIGhhbmRsZXIgaGFzIHRoZQorK0Bjb2Rle25hbWV9IGFuZCBAY29k ZXtlbmFibGVkfSBhdHRyaWJ1dGVzLCBhbmQgaW1wbGVtZW50cyB0aGUKKytAY29kZXtfX2NhbGxf X30gbWV0aG9kLgorKworK0BkZWZ1biBNaXNzaW5nRGVidWdIYW5kbGVyLl9faW5pdF9fIChuYW1l KQorK1RoZSBAdmFye25hbWV9IGlzIGEgc3RyaW5nIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgbWlz c2luZyBkZWJ1ZworK2hhbmRsZXIgd2l0aGluIHNvbWUgQHZhbHVle0dEQk59IGNvbW1hbmRzLiAg VmFsaWQgbmFtZXMgY29uc2lzdCBvZiB0aGUKKytjaGFyYWN0ZXJzIEBjb2Rle1stX2EtekEtWjAt OV19LCBjcmVhdGluZyBhIGhhbmRsZXIgd2l0aCBhbiBpbnZhbGlkCisrbmFtZSByYWlzZXMgYSBA Y29kZXtWYWx1ZUVycm9yfSBleGNlcHRpb24uCisrQGVuZCBkZWZ1bgorKworK0BkZWZ1biBNaXNz aW5nRGVidWdIYW5kbGVyLl9fY2FsbF9fIChvYmpmaWxlKQorK1N1Yi1jbGFzc2VzIG11c3Qgb3Zl cnJpZGUgdGhlIEBjb2Rle19fY2FsbF9ffSBtZXRob2QuICBUaGUKKytAdmFye29iamZpbGV9IGFy Z3VtZW50IHdpbGwgYmUgYSBAY29kZXtnZGIuT2JqZmlsZX0sIHRoaXMgaXMgdGhlCisrb2JqZmls ZSBmb3Igd2hpY2ggQHZhbHVle0dEQk59IHdhcyB1bmFibGUgdG8gZmluZCBhbnkgZGVidWcKKytp bmZvcm1hdGlvbi4KKysKKytUaGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIEBjb2Rle19fY2FsbF9f fSBtZXRob2QgaW5kaWNhdGVzIHdoYXQKKytAdmFsdWV7R0RCTn0gc2hvdWxkIGRvIG5leHQuICBU aGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBhcmU6CisrCisrQGl0ZW1pemUgQGJ1bGxldAorK0Bp dGVtIEBjb2Rle05vbmV9CisrCisrVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIGhhbmRsZXIgY291 bGQgbm90IGhlbHAgd2l0aCBAdmFye29iamZpbGV9LAorK0B2YWx1ZXtHREJOfSBzaG91bGQgY2Fs bCBhbnkgb3RoZXIgcmVnaXN0ZXJlZCBoYW5kbGVycy4KKysKKytAaXRlbSBAY29kZXtUcnVlfQor KworK1RoaXMgaW5kaWNhdGVzIHRoYXQgdGhpcyBoYW5kbGVyIGhhcyBpbnN0YWxsZWQgdGhlIGRl YnVnIGluZm9ybWF0aW9uCisraW50byBhIGxvY2F0aW9uIHdoZXJlIEB2YWx1ZXtHREJOfSB3b3Vs ZCBub3JtYWxseSBleHBlY3QgdG8gZmluZCBpdAorK3doZW4gbG9va2luZyBmb3Igc2VwYXJhdGUg ZGVidWcgaW5mb3JtYXRpb24gZmlsZXMgKEBweHJlZntTZXBhcmF0ZQorK0RlYnVnIEZpbGVzfSku ICBAdmFsdWV7R0RCTn0gd2lsbCByZXBlYXQgdGhlIG5vcm1hbCBsb29rdXAgcHJvY2VzcywKKyt3 aGljaCBzaG91bGQgbm93IGZpbmQgdGhlIHNlcGFyYXRlIGRlYnVnIGZpbGUuCisrCisrSWYgQHZh bHVle0dEQk59IHN0aWxsIGRvZXNuJ3QgZmluZCB0aGUgc2VwYXJhdGUgZGVidWcgaW5mb3JtYXRp b24gZmlsZQorK2FmdGVyIHRoaXMgc2Vjb25kIGF0dGVtcHQsIHRoZW4gdGhlIFB5dGhvbiBtaXNz aW5nIGRlYnVnIGluZm9ybWF0aW9uCisraGFuZGxlcnMgYXJlIG5vdCBpbnZva2VkIGEgc2Vjb25k IHRpbWUsIHRoaXMgcHJldmVudHMgYSBiYWRseSBiZWhhdmVkCisraGFuZGxlciBjYXVzaW5nIEB2 YWx1ZXtHREJOfSB0byBnZXQgc3R1Y2sgaW4gYSBsb29wLiAgQHZhbHVle0dEQk59Cisrd2lsbCBj b250aW51ZSB3aXRob3V0IGFueSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgQHZhcntvYmpmaWxlfS4K KysKKytAaXRlbSBAY29kZXtGYWxzZX0KKysKKytUaGlzIGluZGljYXRlcyB0aGF0IHRoaXMgaGFu ZGxlciBoYXMgZG9uZSBldmVyeXRoaW5nIHRoYXQgaXQgaW50ZW5kcworK3RvIGRvIHdpdGggQHZh cntvYmpmaWxlfSwgYnV0IG5vIHNlcGFyYXRlIGRlYnVnIGluZm9ybWF0aW9uIGNhbiBiZQorK2Zv dW5kLiAgQHZhbHVle0dEQk59IHdpbGwgbm90IGNhbGwgYW55IG90aGVyIHJlZ2lzdGVyZWQgaGFu ZGxlcnMgZm9yCisrQHZhcntvYmpmaWxlfS4gIEB2YWx1ZXtHREJOfSB3aWxsIGNvbnRpbnVlIHdp dGhvdXQgZGVidWdnaW5nCisraW5mb3JtYXRpb24gZm9yIEB2YXJ7b2JqZmlsZX0uCisrCisrQGl0 ZW0gQSBzdHJpbmcKKysKKytUaGUgcmV0dXJuZWQgc3RyaW5nIHNob3VsZCBjb250YWluIGEgZmls ZW5hbWUuICBAdmFsdWV7R0RCTn0gd2lsbCBub3QKKytjYWxsIGFueSBmdXJ0aGVyIHJlZ2lzdGVy ZWQgaGFuZGxlcnMsIGFuZCB3aWxsIGluc3RlYWQgbG9hZCB0aGUgZGVidWcKKytpbmZvcm1hdGlv biBmcm9tIHRoZSBmaWxlIGlkZW50aWZpZWQgYnkgdGhlIHJldHVybmVkIGZpbGVuYW1lLgorK0Bl bmQgaXRlbWl6ZQorKworK0ludm9raW5nIHRoZSBAY29kZXtfX2NhbGxfX30gbWV0aG9kIGZyb20g dGhpcyBiYXNlIGNsYXNzIHdpbGwgcmFpc2UgYQorK0Bjb2Rle05vdEltcGxlbWVudGVkRXJyb3J9 IGV4Y2VwdGlvbi4KKytAZW5kIGRlZnVuCisrCisrQGRlZnZhciBNaXNzaW5nRGVidWdIYW5kbGVy Lm5hbWUKKytBIHJlYWQtb25seSBhdHRyaWJ1dGUgd2hpY2ggaXMgYSBzdHJpbmcsIHRoZSBuYW1l IG9mIHRoaXMgaGFuZGxlcgorK3Bhc3NlZCB0byB0aGUgQGNvZGV7X19pbml0X199IG1ldGhvZC4K KytAZW5kIGRlZnZhcgorKworK0BkZWZ2YXIgTWlzc2luZ0RlYnVnSGFuZGxlci5lbmFibGVkCisr QSBtb2RpZmlhYmxlIGF0dHJpYnV0ZSBjb250YWluaW5nIGEgYm9vbGVhbjsgd2hlbiBAY29kZXtU cnVlfSwgdGhlCisraGFuZGxlciBpcyBlbmFibGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IEB2YWx1 ZXtHREJOfS4gIFdoZW4KKytAY29kZXtGYWxzZX0sIHRoZSBoYW5kbGVyIGhhcyBiZWVuIGRpc2Fi bGVkLCBhbmQgd2lsbCBub3QgYmUgdXNlZC4KKytAZW5kIGRlZnZhcgorK0BlbmQgZGVmdHAKKysK KytAZGVmdW4gZ2RiLm1pc3NpbmdfZGVidWcucmVnaXN0ZXJfaGFuZGxlciAobG9jdXMsIGhhbmRs ZXIsIHJlcGxhY2U9QGNvZGV7RmFsc2V9KQorK1JlZ2lzdGVyIGEgbmV3IG1pc3NpbmcgZGVidWcg aGFuZGxlciB3aXRoIEB2YWx1ZXtHREJOfS4KKysKKytAdmFye2hhbmRsZXJ9IGlzIGFuIGluc3Rh bmNlIG9mIGEgc3ViLWNsYXNzIG9mCisrQGNvZGV7TWlzc2luZ0RlYnVnSGFuZGxlcn0sIG9yIGF0 IGxlYXN0IGFuIGluc3RhbmNlIG9mIGFuIG9iamVjdCB0aGF0CisraGFzIHRoZSBzYW1lIGF0dHJp YnV0ZXMgYW5kIG1ldGhvZHMgYXMgQGNvZGV7TWlzc2luZ0RlYnVnSGFuZGxlcn0uCisrCisrQHZh cntsb2N1c30gc3BlY2lmaWVzIHRvIHdoaWNoIGhhbmRsZXIgbGlzdCB0byBwcmVwZW5kIEB2YXJ7 aGFuZGxlcn0uCisrSXQgY2FuIGJlIGVpdGhlciBhIEBjb2Rle2dkYi5Qcm9nc3BhY2V9IChAcHhy ZWZ7UHJvZ3NwYWNlcyBJbiBQeXRob259KQorK29yIEBjb2Rle05vbmV9LCBpbiB3aGljaCBjYXNl IHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgZ2xvYmFsbHkuICBUaGUKKytuZXdseSByZWdpc3Rl cmVkIEB2YXJ7aGFuZGxlcn0gd2lsbCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBoYW5kbGVy CisrZnJvbSB0aGUgc2FtZSBsb2N1cy4gIFR3byBoYW5kbGVycyBpbiB0aGUgc2FtZSBsb2N1cyBj YW5ub3QgaGF2ZSB0aGUKKytzYW1lIG5hbWUsIGFuIGF0dGVtcHQgdG8gYWRkIGEgaGFuZGxlciB3 aXRoIGFuIGFscmVhZHkgZXhpc3RpbmcgbmFtZQorK3JhaXNlcyBhbiBleGNlcHRpb24gdW5sZXNz IEB2YXJ7cmVwbGFjZX0gaXMgQGNvZGV7VHJ1ZX0sIGluIHdoaWNoIGNhc2UKKyt0aGUgb2xkIGhh bmRsZXIgaXMgZGVsZXRlZCBhbmQgdGhlIG5ldyBoYW5kbGVyIGlzIHByZXBlbmRlZCB0byB0aGUK KytzZWxlY3RlZCBoYW5kbGVyIGxpc3QuCisrCisrQHZhbHVle0dEQk59IGZpcnN0IGNhbGxzIHRo ZSBoYW5kbGVycyBmb3IgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzcGFjZSwKKythbmQgdGhlbiB0aGUg Z2xvYmFsbHkgcmVnaXN0ZXJlZCBoYW5kbGVycy4gIEFzIHNvb24gYXMgYSBoYW5kbGVyCisrcmV0 dXJucyBhIHZhbHVlIG90aGVyIHRoYW4gQGNvZGV7Tm9uZX0sIG5vIGZ1cnRoZXIgaGFuZGxlcnMg YXJlIGNhbGxlZAorK2ZvciB0aGlzIG9iamZpbGUuCisrQGVuZCBkZWZ1bgorKworIEBub2RlIFB5 dGhvbiBBdXRvLWxvYWRpbmcKKyBAc3Vic2VjdGlvbiBQeXRob24gQXV0by1sb2FkaW5nCisgQGNp bmRleCBQeXRob24gYXV0by1sb2FkaW5nCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2Ri L19faW5pdF9fLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5CistLS0gYS9nZGIv cHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9fX2lu aXRfXy5weQorQEAgLTg0LDYgKzg0LDggQEAgeG1ldGhvZHMgPSBbXQorIGZyYW1lX2ZpbHRlcnMg PSB7fQorICMgSW5pdGlhbCBmcmFtZSB1bndpbmRlcnMuCisgZnJhbWVfdW53aW5kZXJzID0gW10K KysjIEluaXRpYWwgbWlzc2luZyBkZWJ1ZyBoYW5kbGVycy4KKyttaXNzaW5nX2RlYnVnX2hhbmRs ZXJzID0gW10KKyAKKyAKKyBkZWYgX2V4ZWN1dGVfdW53aW5kZXJzKHBlbmRpbmdfZnJhbWUpOgor QEAgLTI5MSwzICsyOTMsNDIgQEAgY2xhc3MgVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAg ICAgICAgIyB0aHJlYWRzLgorICAgICAgICAgd2l0aCBibG9ja2VkX3NpZ25hbHMoKToKKyAgICAg ICAgICAgICBzdXBlcigpLnN0YXJ0KCkKKysKKysKKytkZWYgX2hhbmRsZV9taXNzaW5nX2RlYnVn aW5mbyhvYmpmaWxlKToKKysgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24gY2FsbGVkIGZyb20gR0RC IHRvIGV4ZWN1dGUgbWlzc2luZyBkZWJ1ZworKyAgICBoYW5kbGVycy4KKysKKysgICAgUnVuIGVh Y2ggb2YgdGhlIGN1cnJlbnRseSByZWdpc3RlcmVkLCBhbmQgZW5hYmxlZCBtaXNzaW5nIGRlYnVn CisrICAgIGhhbmRsZXIgb2JqZWN0cyBmb3IgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzcGFjZSBhbmQg dGhlbiBmcm9tIHRoZQorKyAgICBnbG9iYWwgbGlzdC4gIFN0b3AgYWZ0ZXIgdGhlIGZpcnN0IGhh bmRsZXIgdGhhdCByZXR1cm5zIGEgcmVzdWx0CisrICAgIG90aGVyIHRoYW4gTm9uZS4KKysKKysg ICAgQXJndW1lbnRzOgorKyAgICAgICAgb2JqZmlsZTogQSBnZGIuT2JqZmlsZSBmb3Igd2hpY2gg R0RCIGNvdWxkIG5vdCBmaW5kIGFueSBkZWJ1ZworKyAgICAgICAgICAgICAgICAgaW5mb3JtYXRp b24uCisrCisrICAgIFJldHVybnM6CisrICAgICAgICBOb25lOiBObyBkZWJ1ZyBpbmZvcm1hdGlv biBjb3VsZCBiZSBmb3VuZCBmb3Igb2JqZmlsZS4KKysgICAgICAgIEZhbHNlOiBBIGhhbmRsZXIg aGFzIGRvbmUgYWxsIGl0IGNhbiB3aXRoIG9iamZpbGUsIGJ1dCBubworKyAgICAgICAgICAgICAg IGRlYnVnIGluZm9ybWF0aW9uIGNvdWxkIGJlIGZvdW5kLgorKyAgICAgICAgVHJ1ZTogRGVidWcg aW5mb3JtYXRpb24gbWlnaHQgaGF2ZSBiZWVuIGluc3RhbGxlZCBieSBhCisrICAgICAgICAgICAg ICBoYW5kbGVyLCBHREIgc2hvdWxkIGNoZWNrIGFnYWluLgorKyAgICAgICAgQSBzdHJpbmc6IFRo aXMgaXMgdGhlIGZpbGVuYW1lIG9mIGEgZmlsZSBjb250YWluaW5nIHRoZQorKyAgICAgICAgICAg ICAgICAgIHJlcXVpcmVkIGRlYnVnIGluZm9ybWF0aW9uLgorKyAgICAiIiIKKysgICAgcHNwYWNl ID0gb2JqZmlsZS5wcm9nc3BhY2UKKysKKysgICAgZm9yIGhhbmRsZXIgaW4gcHNwYWNlLm1pc3Np bmdfZGVidWdfaGFuZGxlcnM6CisrICAgICAgICBpZiBoYW5kbGVyLmVuYWJsZWQ6CisrICAgICAg ICAgICAgcmVzdWx0ID0gaGFuZGxlcihvYmpmaWxlKQorKyAgICAgICAgICAgIGlmIHJlc3VsdCBp cyBub3QgTm9uZToKKysgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorKworKyAgICBmb3Ig aGFuZGxlciBpbiBtaXNzaW5nX2RlYnVnX2hhbmRsZXJzOgorKyAgICAgICAgaWYgaGFuZGxlci5l bmFibGVkOgorKyAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIob2JqZmlsZSkKKysgICAgICAg ICAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIHJldHVybiByZXN1 bHQKKysKKysgICAgcmV0dXJuIE5vbmUKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC9taXNzaW5nX2RlYnVnLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvbWlz c2luZ19kZWJ1Zy5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBi L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL21pc3NpbmdfZGVidWcucHkKK0BAIC0wLDAgKzEs MjI2IEBACisrIyBNaXNzaW5nIGRlYnVnIHJlbGF0ZWQgY29tbWFuZHMuCisrIworKyMgQ29weXJp Z2h0IDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKysKKytpbXBvcnQgZ2RiCisraW1wb3J0IHJlCisrCisrCisrZGVm IHZhbGlkYXRlX3JlZ2V4cChleHAsIGlkc3RyaW5nKToKKysgICAgIiIiQ29tcGlsZSBleHAgaW50 byBhIGNvbXBpbGVyIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QuCisrCisrICAgIEFyZ3VtZW50 czoKKysgICAgICAgIGV4cDogVGhlIHN0cmluZyB0byBjb21waWxlIGludG8gYSByZS5QYXR0ZXJu IG9iamVjdC4KKysgICAgICAgIGlkc3RyaW5nOiBBIHN0cmluZywgd2hhdCBleHAgaXMgYSByZWdl eHAgZm9yLgorKworKyAgICBSZXR1cm5zOgorKyAgICAgICAgQSByZS5QYXR0ZXJuIG9iamVjdCBy ZXByZXNlbnRpbmcgZXhwLgorKworKyAgICBSYWlzZXM6CisrICAgICAgICBTeW50YXhFcnJvcjog SWYgZXhwIGlzIGFuIGludmFsaWQgcmVnZXhwLgorKyAgICAiIiIKKysgICAgdHJ5OgorKyAgICAg ICAgcmV0dXJuIHJlLmNvbXBpbGUoZXhwKQorKyAgICBleGNlcHQgU3ludGF4RXJyb3I6CisrICAg ICAgICByYWlzZSBTeW50YXhFcnJvcigiSW52YWxpZCAlcyByZWdleHA6ICVzLiIgJSAoaWRzdHJp bmcsIGV4cCkpCisrCisrCisrZGVmIHBhcnNlX21pc3NpbmdfZGVidWdfY29tbWFuZF9hcmdzKGFy Zyk6CisrICAgICIiIkludGVybmFsIHV0aWxpdHkgdG8gcGFyc2UgbWlzc2luZyBkZWJ1ZyBoYW5k bGVyIGNvbW1hbmQgYXJndi4KKysKKysgICAgQXJndW1lbnRzOgorKyAgICAgICAgYXJnOiBUaGUg YXJndW1lbnRzIHRvIHRoZSBjb21tYW5kLiBUaGUgZm9ybWF0IGlzOgorKyAgICAgICAgICAgICBb bG9jdXMtcmVnZXhwIFtuYW1lLXJlZ2V4cF1dCisrCisrICAgIFJldHVybnM6CisrICAgICAgICBB IDItdHVwbGUgb2YgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucy4KKysKKysgICAgUmFpc2Vz OgorKyAgICAgICAgU3ludGF4RXJyb3I6IGFuIGVycm9yIHByb2Nlc3NpbmcgQVJHCisrICAgICIi IgorKyAgICBhcmd2ID0gZ2RiLnN0cmluZ190b19hcmd2KGFyZykKKysgICAgYXJnYyA9IGxlbihh cmd2KQorKyAgICBpZiBhcmdjID4gMjoKKysgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJUb28g bWFueSBhcmd1bWVudHMuIikKKysgICAgbG9jdXNfcmVnZXhwID0gIiIKKysgICAgbmFtZV9yZWdl eHAgPSAiIgorKyAgICBpZiBhcmdjID49IDE6CisrICAgICAgICBsb2N1c19yZWdleHAgPSBhcmd2 WzBdCisrICAgICAgICBpZiBhcmdjID49IDI6CisrICAgICAgICAgICAgbmFtZV9yZWdleHAgPSBh cmd2WzFdCisrICAgIHJldHVybiAoCisrICAgICAgICB2YWxpZGF0ZV9yZWdleHAobG9jdXNfcmVn ZXhwLCAibG9jdXMiKSwKKysgICAgICAgIHZhbGlkYXRlX3JlZ2V4cChuYW1lX3JlZ2V4cCwgImhh bmRsZXIiKSwKKysgICAgKQorKworKworK2NsYXNzIEluZm9NaXNzaW5nRGVidWdIYW5kZXJzKGdk Yi5Db21tYW5kKToKKysgICAgIiIiR0RCIGNvbW1hbmQgdG8gbGlzdCBtaXNzaW5nIGRlYnVnIGhh bmRsZXJzLgorKworKyAgICBVc2FnZTogaW5mbyBtaXNzaW5nLWRlYnVnLWhhbmRsZXJzIFtMT0NV Uy1SRUdFWFAgW05BTUUtUkVHRVhQXV0KKysKKysgICAgTE9DVVMtUkVHRVhQIGlzIGEgcmVndWxh ciBleHByZXNzaW9uIG1hdGNoaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUKKysgICAgaGFuZGxlci4g IElmIGl0IGlzIG9taXR0ZWQsIGFsbCByZWdpc3RlcmVkIGhhbmRsZXJzIGZyb20gYWxsCisrICAg IGxvY2kgYXJlIGxpc3RlZC4gIEEgbG9jdXMgY2FuIGJlICdnbG9iYWwnLCAncHJvZ3NwYWNlJyB0 byBsaXN0CisrICAgIHRoZSBoYW5kbGVycyBmcm9tIHRoZSBjdXJyZW50IHByb2dzcGFjZSwgb3Ig YSByZWd1bGFyIGV4cHJlc3Npb24KKysgICAgbWF0Y2hpbmcgZmlsZW5hbWVzIG9mIHByb2dzcGFj ZXMuCisrCisrICAgIE5BTUUtUkVHRVhQIGlzIGEgcmVndWxhciBleHByZXNzaW9uIHRvIGZpbHRl ciBtaXNzaW5nIGRlYnVnCisrICAgIGhhbmRsZXIgbmFtZXMuICBJZiB0aGlzIG9taXR0ZWQgZm9y IGEgc3BlY2lmaWVkIGxvY3VzLCB0aGVuIGFsbAorKyAgICByZWdpc3RlcmVkIGhhbmRsZXJzIGlu IHRoZSBsb2N1cyBhcmUgbGlzdGVkLgorKyAgICAiIiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNl bGYpOgorKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygiaW5mbyBtaXNzaW5nLWRlYnVnLWhhbmRs ZXJzIiwgZ2RiLkNPTU1BTkRfRklMRVMpCisrCisrICAgIGRlZiBsaXN0X2hhbmRsZXJzKHNlbGYs IHRpdGxlLCBoYW5kbGVycywgbmFtZV9yZSk6CisrICAgICAgICAiIiJMaXN0cyB0aGUgbWlzc2lu ZyBkZWJ1ZyBoYW5kbGVycyB3aG9zZSBuYW1lIG1hdGNoZXMgcmVnZXhwLgorKworKyAgICAgICAg QXJndW1lbnRzOgorKyAgICAgICAgICAgIHRpdGxlOiBUaGUgbGluZSB0byBwcmludCBiZWZvcmUg dGhlIGxpc3QuCisrICAgICAgICAgICAgaGFuZGxlcnM6IFRoZSBsaXN0IG9mIHRoZSBtaXNzaW5n IGRlYnVnIGhhbmRsZXJzLgorKyAgICAgICAgICAgIG5hbWVfcmU6IGhhbmRsZXIgbmFtZSBmaWx0 ZXIuCisrICAgICAgICAiIiIKKysgICAgICAgIGlmIG5vdCBoYW5kbGVyczoKKysgICAgICAgICAg ICByZXR1cm4KKysgICAgICAgIHByaW50KHRpdGxlKQorKyAgICAgICAgZm9yIGhhbmRsZXIgaW4g aGFuZGxlcnM6CisrICAgICAgICAgICAgaWYgbmFtZV9yZS5tYXRjaChoYW5kbGVyLm5hbWUpOgor KyAgICAgICAgICAgICAgICBwcmludCgKKysgICAgICAgICAgICAgICAgICAgICIgICVzJXMiICUg KGhhbmRsZXIubmFtZSwgIiIgaWYgaGFuZGxlci5lbmFibGVkIGVsc2UgIiBbZGlzYWJsZWRdIikK KysgICAgICAgICAgICAgICAgKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZywgZnJvbV90 dHkpOgorKyAgICAgICAgbG9jdXNfcmUsIG5hbWVfcmUgPSBwYXJzZV9taXNzaW5nX2RlYnVnX2Nv bW1hbmRfYXJncyhhcmcpCisrCisrICAgICAgICBpZiBsb2N1c19yZS5tYXRjaCgicHJvZ3NwYWNl IikgYW5kIGxvY3VzX3JlLnBhdHRlcm4gIT0gIiI6CisrICAgICAgICAgICAgY3AgPSBnZGIuY3Vy cmVudF9wcm9nc3BhY2UoKQorKyAgICAgICAgICAgIHNlbGYubGlzdF9oYW5kbGVycygKKysgICAg ICAgICAgICAgICAgIlByb2dzcGFjZSAlczoiICUgY3AuZmlsZW5hbWUsIGNwLm1pc3NpbmdfZGVi dWdfaGFuZGxlcnMsIG5hbWVfcmUKKysgICAgICAgICAgICApCisrCisrICAgICAgICBmb3IgcHJv Z3NwYWNlIGluIGdkYi5wcm9nc3BhY2VzKCk6CisrICAgICAgICAgICAgZmlsZW5hbWUgPSBwcm9n c3BhY2UuZmlsZW5hbWUgb3IgIiIKKysgICAgICAgICAgICBpZiBsb2N1c19yZS5tYXRjaChmaWxl bmFtZSk6CisrICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lID09ICIiOgorKyAgICAgICAgICAg ICAgICAgICAgaWYgcHJvZ3NwYWNlID09IGdkYi5jdXJyZW50X3Byb2dzcGFjZSgpOgorKyAgICAg ICAgICAgICAgICAgICAgICAgIG1zZyA9ICJDdXJyZW50IFByb2dzcGFjZToiCisrICAgICAgICAg ICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJQcm9nc3Bh Y2UgPG5vLWZpbGU+OiIKKysgICAgICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAg ICAgIG1zZyA9ICJQcm9nc3BhY2UgJXM6IiAlIGZpbGVuYW1lCisrICAgICAgICAgICAgICAgIHNl bGYubGlzdF9oYW5kbGVycygKKysgICAgICAgICAgICAgICAgICAgIG1zZywKKysgICAgICAgICAg ICAgICAgICAgIHByb2dzcGFjZS5taXNzaW5nX2RlYnVnX2hhbmRsZXJzLAorKyAgICAgICAgICAg ICAgICAgICAgbmFtZV9yZSwKKysgICAgICAgICAgICAgICAgKQorKworKyAgICAgICAgIyBQcmlu dCBnbG9iYWwgaGFuZGxlcnMgbGFzdCwgYXMgdGhlc2UgYXJlIGludm9rZWQgbGFzdC4KKysgICAg ICAgIGlmIGxvY3VzX3JlLm1hdGNoKCJnbG9iYWwiKToKKysgICAgICAgICAgICBzZWxmLmxpc3Rf aGFuZGxlcnMoIkdsb2JhbDoiLCBnZGIubWlzc2luZ19kZWJ1Z19oYW5kbGVycywgbmFtZV9yZSkK KysKKysKKytkZWYgZG9fZW5hYmxlX2hhbmRsZXIxKGhhbmRsZXJzLCBuYW1lX3JlLCBmbGFnKToK KysgICAgIiIiRW5hYmxlL2Rpc2FibGUgbWlzc2luZyBkZWJ1ZyBoYW5kbGVycyB3aG9zZSBuYW1l cyBtYXRjaCBnaXZlbiByZWdleC4KKysKKysgICAgQXJndW1lbnRzOgorKyAgICAgICAgaGFuZGxl cnM6IFRoZSBsaXN0IG9mIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMuCisrICAgICAgICBuYW1lX3Jl OiBIYW5kbGVyIG5hbWUgZmlsdGVyLgorKyAgICAgICAgZmxhZzogQSBib29sZWFuIGluZGljYXRp bmcgaWYgd2Ugc2hvdWxkIGVuYWJsZSBvciBkaXNhYmxlLgorKworKyAgICBSZXR1cm5zOgorKyAg ICAgICAgVGhlIG51bWJlciBvZiBoYW5kbGVycyBhZmZlY3RlZC4KKysgICAgIiIiCisrICAgIHRv dGFsID0gMAorKyAgICBmb3IgaGFuZGxlciBpbiBoYW5kbGVyczoKKysgICAgICAgIGlmIG5hbWVf cmUubWF0Y2goaGFuZGxlci5uYW1lKSBhbmQgaGFuZGxlci5lbmFibGVkICE9IGZsYWc6CisrICAg ICAgICAgICAgaGFuZGxlci5lbmFibGVkID0gZmxhZworKyAgICAgICAgICAgIHRvdGFsICs9IDEK KysgICAgcmV0dXJuIHRvdGFsCisrCisrCisrZGVmIGRvX2VuYWJsZV9oYW5kbGVyKGFyZywgZmxh Zyk6CisrICAgICIiIkVuYWJsZSBvciBkaXNhYmxlIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMuIiIi CisrICAgIChsb2N1c19yZSwgbmFtZV9yZSkgPSBwYXJzZV9taXNzaW5nX2RlYnVnX2NvbW1hbmRf YXJncyhhcmcpCisrICAgIHRvdGFsID0gMAorKyAgICBpZiBsb2N1c19yZS5tYXRjaCgiZ2xvYmFs Iik6CisrICAgICAgICB0b3RhbCArPSBkb19lbmFibGVfaGFuZGxlcjEoZ2RiLm1pc3NpbmdfZGVi dWdfaGFuZGxlcnMsIG5hbWVfcmUsIGZsYWcpCisrICAgIGlmIGxvY3VzX3JlLm1hdGNoKCJwcm9n c3BhY2UiKSBhbmQgbG9jdXNfcmUucGF0dGVybiAhPSAiIjoKKysgICAgICAgIHRvdGFsICs9IGRv X2VuYWJsZV9oYW5kbGVyMSgKKysgICAgICAgICAgICBnZGIuY3VycmVudF9wcm9nc3BhY2UoKS5t aXNzaW5nX2RlYnVnX2hhbmRsZXJzLCBuYW1lX3JlLCBmbGFnCisrICAgICAgICApCisrICAgIGZv ciBwcm9nc3BhY2UgaW4gZ2RiLnByb2dzcGFjZXMoKToKKysgICAgICAgIGZpbGVuYW1lID0gcHJv Z3NwYWNlLmZpbGVuYW1lIG9yICIiCisrICAgICAgICBpZiBsb2N1c19yZS5tYXRjaChmaWxlbmFt ZSk6CisrICAgICAgICAgICAgdG90YWwgKz0gZG9fZW5hYmxlX2hhbmRsZXIxKHByb2dzcGFjZS5t aXNzaW5nX2RlYnVnX2hhbmRsZXJzLCBuYW1lX3JlLCBmbGFnKQorKyAgICBwcmludCgKKysgICAg ICAgICIlZCBtaXNzaW5nIGRlYnVnIGhhbmRsZXIlcyAlcyIKKysgICAgICAgICUgKHRvdGFsLCAi IiBpZiB0b3RhbCA9PSAxIGVsc2UgInMiLCAiZW5hYmxlZCIgaWYgZmxhZyBlbHNlICJkaXNhYmxl ZCIpCisrICAgICkKKysKKysKKytjbGFzcyBFbmFibGVNaXNzaW5nRGVidWdIYW5kbGVyKGdkYi5D b21tYW5kKToKKysgICAgIiIiR0RCIGNvbW1hbmQgdG8gZW5hYmxlIG1pc3NpbmcgZGVidWcgaGFu ZGxlcnMuCisrCisrICAgIFVzYWdlOiBlbmFibGUgbWlzc2luZy1kZWJ1Zy1oYW5kbGVyIFtMT0NV Uy1SRUdFWFAgW05BTUUtUkVHRVhQXV0KKysKKysgICAgTE9DVVMtUkVHRVhQIGlzIGEgcmVndWxh ciBleHByZXNzaW9uIHNwZWNpZnlpbmcgdGhlIGhhbmRsZXJzIHRvCisrICAgIGVuYWJsZS4gIEl0 IGNhbiBiZSAnZ2xvYmFsJywgJ3Byb2dzcGFjZScgZm9yIHRoZSBjdXJyZW50CisrICAgIHByb2dz cGFjZSwgb3IgdGhlIGZpbGVuYW1lIGZvciBhIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgcHJvZ3Nw YWNlLgorKworKyAgICBOQU1FX1JFR0VYUCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaWx0 ZXIgaGFuZGxlciBuYW1lcy4gIElmCisrICAgIHRoaXMgb21pdHRlZCBmb3IgYSBzcGVjaWZpZWQg bG9jdXMsIHRoZW4gYWxsIHJlZ2lzdGVyZWQgaGFuZGxlcnMKKysgICAgaW4gdGhlIGxvY3VzIGFy ZSBhZmZlY3RlZC4KKysgICAgIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAg ICAgIHN1cGVyKCkuX19pbml0X18oImVuYWJsZSBtaXNzaW5nLWRlYnVnLWhhbmRsZXIiLCBnZGIu Q09NTUFORF9GSUxFUykKKysKKysgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21fdHR5KToK KysgICAgICAgICIiIkdEQiBjYWxscyB0aGlzIHRvIHBlcmZvcm0gdGhlIGNvbW1hbmQuIiIiCisr ICAgICAgICBkb19lbmFibGVfaGFuZGxlcihhcmcsIFRydWUpCisrCisrCisrY2xhc3MgRGlzYWJs ZU1pc3NpbmdEZWJ1Z0hhbmRsZXIoZ2RiLkNvbW1hbmQpOgorKyAgICAiIiJHREIgY29tbWFuZCB0 byBkaXNhYmxlIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMuCisrCisrICAgIFVzYWdlOiBkaXNhYmxl IG1pc3NpbmctZGVidWctaGFuZGxlciBbTE9DVVMtUkVHRVhQIFtOQU1FLVJFR0VYUF1dCisrCisr ICAgIExPQ1VTLVJFR0VYUCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBzcGVjaWZ5aW5nIHRoZSBo YW5kbGVycyB0bworKyAgICBlbmFibGUuICBJdCBjYW4gYmUgJ2dsb2JhbCcsICdwcm9nc3BhY2Un IGZvciB0aGUgY3VycmVudAorKyAgICBwcm9nc3BhY2UsIG9yIHRoZSBmaWxlbmFtZSBmb3IgYSBm aWxlIGFzc29jaWF0ZWQgd2l0aCBhIHByb2dzcGFjZS4KKysKKysgICAgTkFNRV9SRUdFWFAgaXMg YSByZWd1bGFyIGV4cHJlc3Npb24gdG8gZmlsdGVyIGhhbmRsZXIgbmFtZXMuICBJZgorKyAgICB0 aGlzIG9taXR0ZWQgZm9yIGEgc3BlY2lmaWVkIGxvY3VzLCB0aGVuIGFsbCByZWdpc3RlcmVkIGhh bmRsZXJzCisrICAgIGluIHRoZSBsb2N1cyBhcmUgYWZmZWN0ZWQuCisrICAgICIiIgorKworKyAg ICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJkaXNhYmxl IG1pc3NpbmctZGVidWctaGFuZGxlciIsIGdkYi5DT01NQU5EX0ZJTEVTKQorKworKyAgICBkZWYg aW52b2tlKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgIiIiR0RCIGNhbGxzIHRoaXMg dG8gcGVyZm9ybSB0aGUgY29tbWFuZC4iIiIKKysgICAgICAgIGRvX2VuYWJsZV9oYW5kbGVyKGFy ZywgRmFsc2UpCisrCisrCisrZGVmIHJlZ2lzdGVyX21pc3NpbmdfZGVidWdfaGFuZGxlcl9jb21t YW5kcygpOgorKyAgICAiIiJJbnN0YWxscyB0aGUgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGNvbW1h bmRzLiIiIgorKyAgICBJbmZvTWlzc2luZ0RlYnVnSGFuZGVycygpCisrICAgIEVuYWJsZU1pc3Np bmdEZWJ1Z0hhbmRsZXIoKQorKyAgICBEaXNhYmxlTWlzc2luZ0RlYnVnSGFuZGxlcigpCisrCisr CisrcmVnaXN0ZXJfbWlzc2luZ19kZWJ1Z19oYW5kbGVyX2NvbW1hbmRzKCkKK2RpZmYgLS1naXQg YS9nZGIvcHl0aG9uL2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5weSBiL2dkYi9weXRob24vbGliL2dk Yi9taXNzaW5nX2RlYnVnLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL21pc3NpbmdfZGVidWcucHkKK0BAIC0wLDAgKzEsMTY5 IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyIiIgorK01pc3NpbmdEZWJ1 Z0hhbmRsZXIgYmFzZSBjbGFzcywgYW5kIHJlZ2lzdGVyX2hhbmRsZXIgZnVuY3Rpb24uCisrIiIi CisrCisraW1wb3J0IGdkYgorKworKworK2RlZiBfdmFsaWRhdGVfbmFtZShuYW1lKToKKysgICAg IiIiVmFsaWRhdGUgYSBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgbmFtZSBzdHJpbmcuCisrCisrICAg IElmIG5hbWUgaXMgdmFsaWQgYXMgYSBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgbmFtZSwgdGhlbiB0 aGlzCisrICAgIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4gIElmIG5hbWUgaXMgbm90IHZhbGlkIHRo ZW4gYW4gZXhjZXB0aW9uIGlzCisrICAgIHJhaXNlZC4KKysKKysgICAgQXJndW1lbnRzOgorKyAg ICAgICAgbmFtZTogQSBzdHJpbmcsIHRoZSBuYW1lIG9mIGEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVy LgorKworKyAgICBSZXR1cm5zOgorKyAgICAgICAgTm90aGluZy4KKysKKysgICAgUmFpc2VzOgor KyAgICAgICAgVmFsdWVFcnJvcjogSWYgbmFtZSBpcyBpbnZhbGlkIGFzIGEgbWlzc2luZyBkZWJ1 ZyBoYW5kbGVyCisrICAgICAgICAgICAgICAgICAgICBuYW1lLgorKyAgICAiIiIKKysgICAgZm9y IGNoIGluIG5hbWU6CisrICAgICAgICBpZiBub3QgY2guaXNhc2NpaSgpIG9yIG5vdCAoY2guaXNh bG51bSgpIG9yIGNoIGluICJfLSIpOgorKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImlu dmFsaWQgY2hhcmFjdGVyICclcycgaW4gaGFuZGxlciBuYW1lOiAlcyIgJSAoY2gsIG5hbWUpKQor KworKworK2NsYXNzIE1pc3NpbmdEZWJ1Z0hhbmRsZXIob2JqZWN0KToKKysgICAgIiIiQmFzZSBj bGFzcyBmb3IgbWlzc2luZyBkZWJ1ZyBoYW5kbGVycyB3cml0dGVuIGluIFB5dGhvbi4KKysKKysg ICAgQSBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgaGFzIGEgc2luZ2xlIG1ldGhvZCBfX2NhbGxfXyBh bG9uZyB3aXRoCisrICAgIHRoZSByZWFkL3dyaXRlIGF0dHJpYnV0ZSBlbmFibGVkLCBhbmQgYSBy ZWFkLW9ubHkgYXR0cmlidXRlIG5hbWUuCisrCisrICAgIEF0dHJpYnV0ZXM6CisrICAgICAgICBu YW1lOiBSZWFkLW9ubHkgYXR0cmlidXRlLCB0aGUgbmFtZSBvZiB0aGlzIGhhbmRsZXIuCisrICAg ICAgICBlbmFibGVkOiBXaGVuIHRydWUgdGhpcyBoYW5kbGVyIGlzIGVuYWJsZWQuCisrICAgICIi IgorKworKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisrICAgICAgICAiIiJDb25zdHJ1 Y3Rvci4KKysKKysgICAgICAgIEFyZ3M6CisrICAgICAgICAgICAgbmFtZTogQW4gaWRlbnRpZnlp bmcgbmFtZSBmb3IgdGhpcyBoYW5kbGVyLgorKworKyAgICAgICAgUmFpc2VzOgorKyAgICAgICAg ICAgIFR5cGVFcnJvcjogbmFtZSBpcyBub3QgYSBzdHJpbmcuCisrICAgICAgICAgICAgVmFsdWVF cnJvcjogbmFtZSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMuCisrICAgICAgICAiIiIKKysK KysgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CisrICAgICAgICAgICAgcmFp c2UgVHlwZUVycm9yKCJpbmNvcnJlY3QgdHlwZSBmb3IgbmFtZTogJXMiICUgdHlwZShuYW1lKSkK KysKKysgICAgICAgIF92YWxpZGF0ZV9uYW1lKG5hbWUpCisrCisrICAgICAgICBzZWxmLl9uYW1l ID0gbmFtZQorKyAgICAgICAgc2VsZi5fZW5hYmxlZCA9IFRydWUKKysKKysgICAgQHByb3BlcnR5 CisrICAgIGRlZiBuYW1lKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKysKKysg ICAgQHByb3BlcnR5CisrICAgIGRlZiBlbmFibGVkKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNl bGYuX2VuYWJsZWQKKysKKysgICAgQGVuYWJsZWQuc2V0dGVyCisrICAgIGRlZiBlbmFibGVkKHNl bGYsIHZhbHVlKToKKysgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBib29sKToKKysg ICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImluY29ycmVjdCB0eXBlIGZvciBlbmFibGVkIGF0 dHJpYnV0ZTogJXMiICUgdHlwZSh2YWx1ZSkpCisrICAgICAgICBzZWxmLl9lbmFibGVkID0gdmFs dWUKKysKKysgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iamZpbGUpOgorKyAgICAgICAgIiIiR0RC IGhhbmRsZSBtaXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uIGZvciBhbiBvYmpmaWxlLgorKworKyAg ICAgICAgQXJndW1lbnRzOgorKyAgICAgICAgICAgIG9iamZpbGU6IEEgZ2RiLk9iamZpbGUgZm9y IHdoaWNoIEdEQiBjb3VsZCBub3QgZmluZCBhbnkKKysgICAgICAgICAgICAgICAgZGVidWcgaW5m b3JtYXRpb24uCisrCisrICAgICAgICBSZXR1cm5zOgorKyAgICAgICAgICAgIFRydWU6IEdEQiBz aG91bGQgdHJ5IGFnYWluIHRvIGxvY2F0ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24KKysgICAgICAg ICAgICAgICAgZm9yIG9iamZpbGUsIHRoZSBoYW5kbGVyIG1heSBoYXZlIGluc3RhbGxlZCB0aGUK KysgICAgICAgICAgICAgICAgbWlzc2luZyBpbmZvcm1hdGlvbi4KKysgICAgICAgICAgICBGYWxz ZTogR0RCIHNob3VsZCBtb3ZlIG9uIHdpdGhvdXQgdGhlIGRlYnVnIGluZm9ybWF0aW9uCisrICAg ICAgICAgICAgICAgIGZvciBvYmpmaWxlLgorKyAgICAgICAgICAgIEEgc3RyaW5nOiBHREIgc2hv dWxkIGxvYWQgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGg7IGl0CisrICAgICAgICAgICAgICAg IGNvbnRhaW5zIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3Igb2JqZmlsZS4KKysgICAgICAgICAg ICBOb25lOiBUaGlzIGhhbmRsZXIgY2FuJ3QgaGVscCB3aXRoIG9iamZpbGUuICBHREIgc2hvdWxk CisrICAgICAgICAgICAgICAgIHRyeSBhbnkgb3RoZXIgcmVnaXN0ZXJlZCBoYW5kbGVycy4KKysg ICAgICAgICIiIgorKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiTWlzc2luZ0Rl YnVnSGFuZGxlci5fX2NhbGxfXygpIikKKysKKysKKytkZWYgcmVnaXN0ZXJfaGFuZGxlcihsb2N1 cywgaGFuZGxlciwgcmVwbGFjZT1GYWxzZSk6CisrICAgICIiIlJlZ2lzdGVyIGhhbmRsZXIgaW4g Z2l2ZW4gbG9jdXMuCisrCisrICAgIFRoZSBoYW5kbGVyIGlzIHByZXBlbmRlZCB0byB0aGUgbG9j dXMncyBtaXNzaW5nIGRlYnVnIGhhbmRsZXJzCisrICAgIGxpc3QuIFRoZSBuYW1lIG9mIGhhbmRs ZXIgc2hvdWxkIGJlIHVuaXF1ZSAob3IgcmVwbGFjZSBtdXN0IGJlCisrICAgIFRydWUpLgorKwor KyAgICBBcmd1bWVudHM6CisrICAgICAgICBsb2N1czogRWl0aGVyIGEgcHJvZ3NwYWNlLCBvciBO b25lIChpbiB3aGljaCBjYXNlIHRoZSB1bndpbmRlcgorKyAgICAgICAgICAgICAgIGlzIHJlZ2lz dGVyZWQgZ2xvYmFsbHkpLgorKyAgICAgICAgaGFuZGxlcjogQW4gb2JqZWN0IG9mIGEgZ2RiLk1p c3NpbmdEZWJ1Z0hhbmRsZXIgc3ViY2xhc3MuCisrCisrICAgICAgICByZXBsYWNlOiBJZiBUcnVl LCByZXBsYWNlcyBleGlzdGluZyBoYW5kbGVyIHdpdGggdGhlIHNhbWUgbmFtZQorKyAgICAgICAg ICAgICAgICAgd2l0aGluIGxvY3VzLiAgT3RoZXJ3aXNlLCByYWlzZXMgUnVudGltZUV4Y2VwdGlv biBpZgorKyAgICAgICAgICAgICAgICAgdW53aW5kZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVh ZHkgZXhpc3RzLgorKworKyAgICBSZXR1cm5zOgorKyAgICAgICAgTm90aGluZy4KKysKKysgICAg UmFpc2VzOgorKyAgICAgICAgUnVudGltZUVycm9yOiBUaGUgbmFtZSBvZiBoYW5kbGVyIGlzIG5v dCB1bmlxdWUuCisrICAgICAgICBUeXBlRXJyb3I6IEJhZCBsb2N1cyB0eXBlLgorKyAgICAgICAg QXR0cmlidXRlRXJyb3I6IFJlcXVpcmVkIGF0dHJpYnV0ZXMgb2YgaGFuZGxlciBhcmUgbWlzc2lu Zy4KKysgICAgIiIiCisrCisrICAgIGlmIGxvY3VzIGlzIE5vbmU6CisrICAgICAgICBpZiBnZGIu cGFyYW1ldGVyKCJ2ZXJib3NlIik6CisrICAgICAgICAgICAgZ2RiLndyaXRlKCJSZWdpc3Rlcmlu ZyBnbG9iYWwgJXMgaGFuZGxlciAuLi5cbiIgJSBoYW5kbGVyLm5hbWUpCisrICAgICAgICBsb2N1 cyA9IGdkYgorKyAgICBlbGlmIGlzaW5zdGFuY2UobG9jdXMsIGdkYi5Qcm9nc3BhY2UpOgorKyAg ICAgICAgaWYgZ2RiLnBhcmFtZXRlcigidmVyYm9zZSIpOgorKyAgICAgICAgICAgIGdkYi53cml0 ZSgKKysgICAgICAgICAgICAgICAgIlJlZ2lzdGVyaW5nICVzIGhhbmRsZXIgZm9yICVzIC4uLlxu IiAlIChoYW5kbGVyLm5hbWUsIGxvY3VzLmZpbGVuYW1lKQorKyAgICAgICAgICAgICkKKysgICAg ZWxzZToKKysgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibG9jdXMgc2hvdWxkIGJlIGdkYi5Qcm9n c3BhY2Ugb3IgTm9uZSIpCisrCisrICAgICMgU29tZSBzYW5pdHkgY2hlY2tzIG9uIEhBTkRMRVIu ICBDYWxsaW5nIGdldGF0dHIgd2lsbCByYWlzZSBhbgorKyAgICAjIGV4Y2VwdGlvbiBpZiB0aGUg YXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4KKysgICAgIyBU aGVzZSBjaGVja3MgYXJlIG5vdCBleGhhdXN0aXZlOyB3ZSBkb24ndCBjaGVjayB0aGUgYXR0cmli dXRlcworKyAgICAjIGhhdmUgdGhlIGNvcnJlY3QgdHlwZXMsIG9yIHRoZSBtZXRob2QgaGFzIHRo ZSBjb3JyZWN0IHNpZ25hdHVyZSwKKysgICAgIyBidXQgdGhpcyBzaG91bGQgY2F0Y2ggc29tZSBi YXNpYyBtaXN0YWtlcy4KKysgICAgZ2V0YXR0cihoYW5kbGVyLCAibmFtZSIpCisrICAgIGdldGF0 dHIoaGFuZGxlciwgImVuYWJsZWQiKQorKyAgICBjYWxsX21ldGhvZCA9IGdldGF0dHIoaGFuZGxl ciwgIl9fY2FsbF9fIikKKysgICAgaWYgbm90IGNhbGxhYmxlKGNhbGxfbWV0aG9kKToKKysgICAg ICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAorKyAgICAgICAgICAgICInJXMnIG9iamVjdCdzICdf X2NhbGxfXycgYXR0cmlidXRlIGlzIG5vdCBjYWxsYWJsZSIKKysgICAgICAgICAgICAlIHR5cGUo aGFuZGxlcikuX19uYW1lX18KKysgICAgICAgICkKKysKKysgICAgaSA9IDAKKysgICAgZm9yIG5l ZWRsZSBpbiBsb2N1cy5taXNzaW5nX2RlYnVnX2hhbmRsZXJzOgorKyAgICAgICAgaWYgbmVlZGxl Lm5hbWUgPT0gaGFuZGxlci5uYW1lOgorKyAgICAgICAgICAgIGlmIHJlcGxhY2U6CisrICAgICAg ICAgICAgICAgIGRlbCBsb2N1cy5taXNzaW5nX2RlYnVnX2hhbmRsZXJzW2ldCisrICAgICAgICAg ICAgZWxzZToKKysgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJIYW5kbGVyICVz IGFscmVhZHkgZXhpc3RzLiIgJSBoYW5kbGVyLm5hbWUpCisrICAgICAgICBpICs9IDEKKysgICAg bG9jdXMubWlzc2luZ19kZWJ1Z19oYW5kbGVycy5pbnNlcnQoMCwgaGFuZGxlcikKK2RpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL3B5LXByb2dzcGFjZS5jIGIvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2Uu YworLS0tIGEvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYworKysrIGIvZ2RiL3B5dGhvbi9weS1w cm9nc3BhY2UuYworQEAgLTU0LDYgKzU0LDkgQEAgc3RydWN0IHBzcGFjZV9vYmplY3QKKyAKKyAg IC8qIFRoZSBkZWJ1ZyBtZXRob2QgbGlzdC4gICovCisgICBQeU9iamVjdCAqeG1ldGhvZHM7Cisr CisrICAvKiBUaGUgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGxpc3QuICAqLworKyAgUHlPYmplY3Qg Km1pc3NpbmdfZGVidWdfaGFuZGxlcnM7CisgfTsKKyAKKyBleHRlcm4gUHlUeXBlT2JqZWN0IHBz cGFjZV9vYmplY3RfdHlwZQorQEAgLTE2Myw2ICsxNjYsNyBAQCBwc3B5X2RlYWxsb2MgKFB5T2Jq ZWN0ICpzZWxmKQorICAgUHlfWERFQ1JFRiAocHNfc2VsZi0+ZnJhbWVfdW53aW5kZXJzKTsKKyAg IFB5X1hERUNSRUYgKHBzX3NlbGYtPnR5cGVfcHJpbnRlcnMpOworICAgUHlfWERFQ1JFRiAocHNf c2VsZi0+eG1ldGhvZHMpOworKyAgUHlfWERFQ1JFRiAocHNfc2VsZi0+bWlzc2luZ19kZWJ1Z19o YW5kbGVycyk7CisgICBQeV9UWVBFIChzZWxmKS0+dHBfZnJlZSAoc2VsZik7CisgfQorIAorQEAg LTE5OCw2ICsyMDIsMTAgQEAgcHNweV9pbml0aWFsaXplIChwc3BhY2Vfb2JqZWN0ICpzZWxmKQor ICAgaWYgKHNlbGYtPnhtZXRob2RzID09IE5VTEwpCisgICAgIHJldHVybiAwOworIAorKyAgc2Vs Zi0+bWlzc2luZ19kZWJ1Z19oYW5kbGVycyA9IFB5TGlzdF9OZXcgKDApOworKyAgaWYgKHNlbGYt Pm1pc3NpbmdfZGVidWdfaGFuZGxlcnMgPT0gbnVsbHB0cikKKysgICAgcmV0dXJuIDA7CisrCisg ICByZXR1cm4gMTsKKyB9CisgCitAQCAtMzUyLDYgKzM2MCw0NyBAQCBwc3B5X2dldF94bWV0aG9k cyAoUHlPYmplY3QgKm8sIHZvaWQgKmlnbm9yZSkKKyAgIHJldHVybiBzZWxmLT54bWV0aG9kczsK KyB9CisgCisrLyogUmV0dXJuIHRoZSBsaXN0IG9mIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMgZm9y IHRoaXMgcHJvZ3JhbSBzcGFjZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytwc3B5X2dl dF9taXNzaW5nX2RlYnVnX2hhbmRsZXJzIChQeU9iamVjdCAqbywgdm9pZCAqaWdub3JlKQorK3sK KysgIHBzcGFjZV9vYmplY3QgKnNlbGYgPSAocHNwYWNlX29iamVjdCAqKSBvOworKworKyAgUHlf SU5DUkVGIChzZWxmLT5taXNzaW5nX2RlYnVnX2hhbmRsZXJzKTsKKysgIHJldHVybiBzZWxmLT5t aXNzaW5nX2RlYnVnX2hhbmRsZXJzOworK30KKysKKysvKiBTZXQgdGhpcyBwcm9ncmFtIHNwYWNl J3MgbGlzdCBvZiBtaXNzaW5nIGRlYnVnIGhhbmRsZXJzIHRvIEhBTkRMRVJTLiAgKi8KKysKKytz dGF0aWMgaW50CisrcHNweV9zZXRfbWlzc2luZ19kZWJ1Z19oYW5kbGVycyAoUHlPYmplY3QgKm8s IFB5T2JqZWN0ICpoYW5kbGVycywKKysJCQkJIHZvaWQgKmlnbm9yZSkKKyt7CisrICBwc3BhY2Vf b2JqZWN0ICpzZWxmID0gKHBzcGFjZV9vYmplY3QgKikgbzsKKysKKysgIGlmIChoYW5kbGVycyA9 PSBudWxscHRyKQorKyAgICB7CisrICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJy b3IsCisrCQkgICAgICAgImNhbm5vdCBkZWxldGUgdGhlIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMg bGlzdCIpOworKyAgICAgIHJldHVybiAtMTsKKysgICAgfQorKworKyAgaWYgKCFQeUxpc3RfQ2hl Y2sgKGhhbmRsZXJzKSkKKysgICAgeworKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfVHlw ZUVycm9yLAorKwkJICAgICAgICJ0aGUgbWlzc2luZyBkZWJ1ZyBoYW5kbGVycyBhdHRyaWJ1dGUg bXVzdCBiZSBhIGxpc3QiKTsKKysgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysKKysgIC8qIFRh a2UgY2FyZSBpbiBjYXNlIHRoZSBMSFMgYW5kIFJIUyBhcmUgcmVsYXRlZCBzb21laG93LiAgKi8K KysgIGdkYnB5X3JlZjw+IHRtcCAoc2VsZi0+bWlzc2luZ19kZWJ1Z19oYW5kbGVycyk7CisrICBQ eV9JTkNSRUYgKGhhbmRsZXJzKTsKKysgIHNlbGYtPm1pc3NpbmdfZGVidWdfaGFuZGxlcnMgPSBo YW5kbGVyczsKKysKKysgIHJldHVybiAwOworK30KKysKKyAvKiBTZXQgdGhlICd0eXBlX3ByaW50 ZXJzJyBhdHRyaWJ1dGUuICAqLworIAorIHN0YXRpYyBpbnQKK0BAIC03NDQsNiArNzkzLDggQEAg c3RhdGljIGdkYl9QeUdldFNldERlZiBwc3BhY2VfZ2V0c2V0W10gPQorICAgICAiVHlwZSBwcmlu dGVycy4iLCBOVUxMIH0sCisgICB7ICJ4bWV0aG9kcyIsIHBzcHlfZ2V0X3htZXRob2RzLCBOVUxM LAorICAgICAiRGVidWcgbWV0aG9kcy4iLCBOVUxMIH0sCisrICB7ICJtaXNzaW5nX2RlYnVnX2hh bmRsZXJzIiwgcHNweV9nZXRfbWlzc2luZ19kZWJ1Z19oYW5kbGVycywKKysgICAgcHNweV9zZXRf bWlzc2luZ19kZWJ1Z19oYW5kbGVycywgIk1pc3NpbmcgZGVidWcgaGFuZGxlcnMuIiwgTlVMTCB9 LAorICAgeyBOVUxMIH0KKyB9OworIAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMg Yi9nZGIvcHl0aG9uL3B5dGhvbi5jCistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9n ZGIvcHl0aG9uL3B5dGhvbi5jCitAQCAtMTI0LDcgKzEyNCw5IEBAIHN0YXRpYyBlbnVtIGV4dF9s YW5nX3JjIGdkYnB5X2JlZm9yZV9wcm9tcHRfaG9vaworIHN0YXRpYyBnZGI6Om9wdGlvbmFsPHN0 ZDo6c3RyaW5nPiBnZGJweV9jb2xvcml6ZQorICAgKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlbmFt ZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmNvbnRlbnRzKTsKKyBzdGF0aWMgZ2RiOjpvcHRpb25hbDxz dGQ6OnN0cmluZz4gZ2RicHlfY29sb3JpemVfZGlzYXNtCistICAoY29uc3Qgc3RkOjpzdHJpbmcg JmNvbnRlbnQsIGdkYmFyY2ggKmdkYmFyY2gpOworKyhjb25zdCBzdGQ6OnN0cmluZyAmY29udGVu dCwgZ2RiYXJjaCAqZ2RiYXJjaCk7Cisrc3RhdGljIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZv X3Jlc3VsdCBnZGJweV9oYW5kbGVfbWlzc2luZ19kZWJ1Z2luZm8KKysgIChjb25zdCBzdHJ1Y3Qg ZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKmV4dGxhbmcsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KTsKKyAKKyAvKiBUaGUgaW50ZXJmYWNlIGJldHdlZW4gZ2RiIHByb3BlciBhbmQgbG9hZGluZyBv ZiBweXRob24gc2NyaXB0cy4gICovCisgCitAQCAtMTcwLDYgKzE3Miw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX29wcyBweXRob25fZXh0ZW5zaW9uX29wcyA9Cisg ICBnZGJweV9jb2xvcml6ZV9kaXNhc20sCisgCisgICBnZGJweV9wcmludF9pbnNuLAorKworKyAg Z2RicHlfaGFuZGxlX21pc3NpbmdfZGVidWdpbmZvCisgfTsKKyAKKyAjZW5kaWYgLyogSEFWRV9Q WVRIT04gKi8KK0BAIC0xNjYxLDYgKzE2NjUsODMgQEAgZ2RicHlfZ2V0X2N1cnJlbnRfb2JqZmls ZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQorICAgcmV0dXJuIG9iamZp bGVfdG9fb2JqZmlsZV9vYmplY3QgKGdkYnB5X2N1cnJlbnRfb2JqZmlsZSkucmVsZWFzZSAoKTsK KyB9CisgCisrLyogSW1wbGVtZW50IHRoZSAnaGFuZGxlX21pc3NpbmdfZGVidWdpbmZvJyBob29r IGZvciBQeXRob24uICBHREIgaGFzCisrICAgZmFpbGVkIHRvIGZpbmQgYW55IGRlYnVnIGluZm9y bWF0aW9uIGZvciBPQkpGSUxFLiAgVGhlIGV4dGVuc2lvbiBoYXMgYQorKyAgIGNoYW5jZSB0byBy ZWNvcmQgdGhpcywgb3IgZXZlbiBpbnN0YWxsIHRoZSByZXF1aXJlZCBkZWJ1ZyBpbmZvcm1hdGlv bi4KKysgICBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZv X3Jlc3VsdCBpbgorKyAgIGV4dGVuc2lvbi1wcml2LmggZm9yIGRldGFpbHMgb2YgdGhlIHJldHVy biB2YWx1ZS4gICovCisrCisrc3RhdGljIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZvX3Jlc3Vs dAorK2dkYnB5X2hhbmRsZV9taXNzaW5nX2RlYnVnaW5mbyAoY29uc3Qgc3RydWN0IGV4dGVuc2lv bl9sYW5ndWFnZV9kZWZuICpleHRsYW5nLAorKwkJCQlzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK Kyt7CisrICAvKiBFYXJseSBleGl0IGlmIFB5dGhvbiBpcyBub3QgaW5pdGlhbGlzZWQuICAqLwor KyAgaWYgKCFnZGJfcHl0aG9uX2luaXRpYWxpemVkKQorKyAgICByZXR1cm4ge307CisrCisrICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmFyY2ggKCk7CisrCisrICBnZGJweV9l bnRlciBlbnRlcl9weSAoZ2RiYXJjaCk7CisrCisrICAvKiBDb252ZXJ0IE9CSkZJTEUgaW50byB0 aGUgY29ycmVzcG9uZGluZyBQeXRob24gb2JqZWN0LiAgKi8KKysgIGdkYnB5X3JlZjw+IHB5b19v YmpmaWxlID0gb2JqZmlsZV90b19vYmpmaWxlX29iamVjdCAob2JqZmlsZSk7CisrICBpZiAocHlv X29iamZpbGUgPT0gbnVsbHB0cikKKysgICAgeworKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgp OworKyAgICAgIHJldHVybiB7fTsKKysgICAgfQorKworKyAgLyogTG9va3VwIHRoZSBoZWxwZXIg ZnVuY3Rpb24gd2l0aGluIHRoZSBHREIgbW9kdWxlLiAgKi8KKysgIGdkYnB5X3JlZjw+IHB5b19o YW5kbGVyCisrICAgIChQeU9iamVjdF9HZXRBdHRyU3RyaW5nIChnZGJfcHl0aG9uX21vZHVsZSwg Il9oYW5kbGVfbWlzc2luZ19kZWJ1Z2luZm8iKSk7CisrICBpZiAocHlvX2hhbmRsZXIgPT0gbnVs bHB0cikKKysgICAgeworKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworKyAgICAgIHJldHVy biB7fTsKKysgICAgfQorKworKyAgLyogQ2FsbCB0aGUgZnVuY3Rpb24sIHBhc3NpbmcgaW4gdGhl IFB5dGhvbiBvYmpmaWxlIG9iamVjdC4gICovCisrICBnZGJweV9yZWY8PiBweW9fZXhlY3V0ZV9y ZXQKKysgICAgKFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MgKHB5b19oYW5kbGVyLmdldCAo KSwgcHlvX29iamZpbGUuZ2V0ICgpLAorKwkJCQkgICBudWxscHRyKSk7CisrICBpZiAocHlvX2V4 ZWN1dGVfcmV0ID09IG51bGxwdHIpCisrICAgIHsKKysgICAgICAvKiBJZiB0aGUgaGFuZGxlciBp cyBjYW5jZWxsZWQgZHVlIHRvIGEgQ3RybC1DLCB0aGVuIHByb3BhZ2F0ZQorKwkgdGhlIEN0cmwt QyBhcyBhIEdEQiBleGNlcHRpb24gaW5zdGVhZCBvZiBzd2FsbG93aW5nIGl0LiAgKi8KKysgICAg ICBnZGJweV9wcmludF9zdGFja19vcl9xdWl0ICgpOworKyAgICAgIHJldHVybiB7fTsKKysgICAg fQorKworKyAgLyogUGFyc2UgdGhlIHJlc3VsdCwgYW5kIGNvbnZlcnQgaXQgYmFjayB0byB0aGUg QysrIG9iamVjdC4gICovCisrICBpZiAocHlvX2V4ZWN1dGVfcmV0ID09IFB5X05vbmUpCisrICAg IHJldHVybiB7fTsKKysKKysgIGlmIChQeUJvb2xfQ2hlY2sgKHB5b19leGVjdXRlX3JldC5nZXQg KCkpKQorKyAgICB7CisrICAgICAgYm9vbCB0cnlfYWdhaW4gPSBQeU9iamVjdF9Jc1RydWUgKHB5 b19leGVjdXRlX3JldC5nZXQgKCkpOworKyAgICAgIHJldHVybiBleHRfbGFuZ19taXNzaW5nX2Rl YnVnaW5mb19yZXN1bHQgKHRyeV9hZ2Fpbik7CisrICAgIH0KKysKKysgIGlmICghZ2RicHlfaXNf c3RyaW5nIChweW9fZXhlY3V0ZV9yZXQuZ2V0ICgpKSkKKysgICAgeworKyAgICAgIFB5RXJyX1Nl dFN0cmluZyAoUHlFeGNfVmFsdWVFcnJvciwKKysJCSAgICAgICAicmV0dXJuIHZhbHVlIGZyb20g X2hhbmRsZV9taXNzaW5nX2RlYnVnaW5mbyBzaG91bGQgIgorKwkJICAgICAgICJiZSBOb25lLCBh IEJvb2wsIG9yIGEgU3RyaW5nIik7CisrICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisrICAg ICAgcmV0dXJuIHt9OworKyAgICB9CisrCisrICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFy PiBmaWxlbmFtZQorKyAgICA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKHB5b19leGVj dXRlX3JldC5nZXQgKCkpOworKyAgaWYgKGZpbGVuYW1lID09IG51bGxwdHIpCisrICAgIHsKKysg ICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKysgICAgICByZXR1cm4ge307CisrICAgIH0KKysK KysgIHJldHVybiBleHRfbGFuZ19taXNzaW5nX2RlYnVnaW5mb19yZXN1bHQgKHN0ZDo6c3RyaW5n IChmaWxlbmFtZS5nZXQgKCkpKTsKKyt9CisrCisgLyogQ29tcHV0ZSB0aGUgbGlzdCBvZiBhY3Rp dmUgcHl0aG9uIHR5cGUgcHJpbnRlcnMgYW5kIHN0b3JlIHRoZW0gaW4KKyAgICBFWFRfUFJJTlRF UlMtPnB5X3R5cGVfcHJpbnRlcnMuICBUaGUgcHJvZHVjdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVz ZWQgYnkKKyAgICBnZGJweV9hcHBseV90eXBlX3ByaW50ZXJzLCBhbmQgZnJlZWQgYnkgZ2RicHlf ZnJlZV90eXBlX3ByaW50ZXJzLgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1taXNzaW5nLWRlYnVnLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlzc2lu Zy1kZWJ1Zy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcuYworQEAgLTAsMCArMSwyMiBA QAorKy8qIFRoaXMgdGVzdCBwcm9ncmFtIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgorKworKyAgIENvcHlyaWdodCAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytpbnQKKytt YWluICgpCisreworKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1taXNzaW5nLWRlYnVnLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251 bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLmV4cAor QEAgLTAsMCArMSw0NzMgQEAKKysjIENvcHlyaWdodCAoQykgMjAyMyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrbG9h ZF9saWIgZ2RiLXB5dGhvbi5leHAKKysKKytyZXF1aXJlIGFsbG93X3B5dGhvbl90ZXN0cworKwor K3N0YW5kYXJkX3Rlc3RmaWxlCisrCisraWYge1tidWlsZF9leGVjdXRhYmxlICJmYWlsZWQgdG8g cHJlcGFyZSIgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV19IHsKKysgICAgcmV0dXJuIC0xCisrfQor KworKyMgUmVtb3ZlIGRlYnVnIGluZm9ybWF0aW9uIGZyb20gQklORklMRSBhbmQgcGxhY2UgaXQg aW50bworKyMgQklORklMRS5kZWJ1Zy4KKytpZiB7W2dkYl9nbnVfc3RyaXBfZGVidWcgJGJpbmZp bGVdfSB7CisrICAgIHVuc3VwcG9ydGVkICJjYW5ub3QgcHJvZHVjZSBzZXBhcmF0ZSBkZWJ1ZyBp bmZvIGZpbGVzIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrc2V0IHJlbW90ZV9weXRob25fZmls ZSBcCisrICAgIFtnZGJfcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfS5weV0KKysKKytzZXQgZGVidWdfZmlsZW5hbWUgJHtiaW5maWxlfS5kZWJ1Zwor K3NldCBoaWRkZW5fZmlsZW5hbWUgJHtiaW5maWxlfS5oaWRkZW4KKysKKysjIFN0YXJ0IEdEQi4K KytjbGVhbl9yZXN0YXJ0CisrCisrIyBTb21lIGluaXRpYWwgc2FuaXR5IGNoZWNrczsgaW5pdGlh bGx5LCB3ZSBjYW4gZmluZCB0aGUgZGVidWcgaW5mb3JtYXRpb24KKysjICh0aGlzIHdpbGwgdXNl IHRoZSAuZ251X2RlYnVnbGluayksIHRoZW4gYWZ0ZXIgd2UgbW92ZSB0aGUgZGVidWcKKysjIGlu Zm9ybWF0aW9uLCByZWxvYWQgdGhlIGV4ZWN1dGFibGUsIG5vdyB0aGUgZGVidWcgY2FuJ3QgYmUg Zm91bmQuCisrd2l0aF90ZXN0X3ByZWZpeCAiaW5pdGlhbCBjaGVja3MiIHsKKysgICAgIyBMb2Fk IEJJTkZJTEUsIHdlIHNob3VsZCBmaW5kIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvcm1hdGlvbi4K KysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl9hc3NlcnQgeyRnZGJfZmlsZV9j bWRfZGVidWdfaW5mbyA9PSAiZGVidWcifSBcCisrCSJkZWJ1ZyBpbmZvIGlzIGZvdW5kIgorKwor KyAgICAjIFJlbmFtZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gZmlsZSwgcmUtbG9hZCBCSU5GSUxF LCBHREIgc2hvdWxkIGZhaWwKKysgICAgIyB0byBmaW5kIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbgor KyAgICByZW1vdGVfZXhlYyBidWlsZCAibXYgJGRlYnVnX2ZpbGVuYW1lICRoaWRkZW5fZmlsZW5h bWUiCisrICAgIGdkYl9maWxlX2NtZCAkYmluZmlsZQorKyAgICBnZGJfYXNzZXJ0IHskZ2RiX2Zp bGVfY21kX2RlYnVnX2luZm8gPT0gIm5vZGVidWcifSBcCisrCSJkZWJ1ZyBpbmZvIG5vIGxvbmdl ciBmb3VuZCIKKyt9CisrCisrIyBMb2FkIHRoZSBQeXRob24gc2NyaXB0IGludG8gR0RCLgorK2dk Yl90ZXN0ICJzb3VyY2UgJHJlbW90ZV9weXRob25fZmlsZSIgIl5TdWNjZXNzIiBcCisrICAgICJz b3VyY2UgcHl0aG9uIHNjcmlwdCIKKysKKysjIFNldHVwIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZv IGRpcmVjdG9yeS4gIFRoaXMgaXNuJ3QgYWN0dWFsbHkgbmVlZGVkIHVudGlsCisrIyBzb21lIG9m IHRoZSBsYXRlciB0ZXN0cywgYnV0IG1pZ2h0IGFzIHdlbGwgZ2V0IHRoaXMgZG9uZSBub3cuCisr c2V0IGRlYnVnX2RpcmVjdG9yeSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgImRlYnVnLWRpciJdCisr cmVtb3RlX2V4ZWMgYnVpbGQgIm1rZGlyIC1wICRkZWJ1Z19kaXJlY3RvcnkiCisrZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJzZXQgZGVidWctZmlsZS1kaXJlY3RvcnkgJGRlYnVnX2RpcmVjdG9yeSIgXAor KyAgICAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IgorKworKyMgSW5pdGlhbGx5IHRoZSBtaXNz aW5nIGRlYnVnIGhhbmRsZXIgd2UgaW5zdGFsbCBpcyBpbiBhIG1vZGUgd2hlcmUgaXQKKysjIHJl dHVybnMgTm9uZSwgaW5kaWNhdGluZyB0aGF0IGl0IGNhbid0IGhlbHAgbG9jYXRlIHRoZSBkZWJ1 ZyBpbmZvcm1hdGlvbi4KKysjIENoZWNrIHRoaXMgd29ya3MgYXMgZXhwZWN0ZWQuCisrd2l0aF90 ZXN0X3ByZWZpeCAiaGFuZGxlciByZXR1cm5pbmcgTm9uZSIgeworKyAgICBnZGJfdGVzdF9ub19v dXRwdXQgXAorKwkicHl0aG9uIGdkYi5taXNzaW5nX2RlYnVnLnJlZ2lzdGVyX2hhbmRsZXIoTm9u ZSwgaGFuZGxlcl9vYmopIiBcCisrCSJyZWdpc3RlciB0aGUgaW5pdGlhbCBoYW5kbGVyIgorKwor KyAgICBnZGJfZmlsZV9jbWQgJGJpbmZpbGUKKysgICAgZ2RiX2Fzc2VydCB7JGdkYl9maWxlX2Nt ZF9kZWJ1Z19pbmZvID09ICJub2RlYnVnIn0gXAorKwkiZGVidWcgaW5mbyBub3QgZm91bmQiCisr CisrICAgICMgQ2hlY2sgdGhlIGhhbmRsZXIgd2FzIG9ubHkgY2FsbGVkIG9uY2UuCisrICAgIGdk Yl90ZXN0ICJweXRob24gcHJpbnQoaGFuZGxlcl9vYmouY2FsbF9jb3VudCkiICJeMSIgXAorKwki Y2hlY2sgaGFuZGxlciB3YXMgb25seSBjYWxsZWQgb25jZSIKKyt9CisrCisrIyBOb3cgY29uZmln dXJlIHRoZSBoYW5kbGVyIHRvIG1vdmUgdGhlIGRlYnVnIGZpbGUgYmFjayB0byB0aGUKKysjIC5n bnVfZGVidWdsaW5rIGxvY2F0aW9uIGFuZCB0aGVuIHJldHVybiBUcnVlLCB0aGlzIHdpbGwgY2F1 c2UgR0RCIHRvCisrIyByZWNoZWNrLCBhdCB3aGljaCBwb2ludCBpdCBzaG91bGQgZmluZCB0aGUg ZGVidWcgaW5mby4KKyt3aXRoX3Rlc3RfcHJlZml4ICJoYW5kbGVyIGluIGdudV9kZWJ1Z2xpbmsg bW9kZSIgeworKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBoYW5kbGVyX29iai5zZXRf bW9kZShNb2RlLlJFVFVSTl9UUlVFLCBcCisrCQkJCQkJICAgIFwiJGhpZGRlbl9maWxlbmFtZVwi LCBcCisrCQkJCQkJICAgIFwiJGRlYnVnX2ZpbGVuYW1lXCIpIiBcCisrCSJjb25maXJndXJlIGhh bmRsZXIiCisrICAgIGdkYl9maWxlX2NtZCAkYmluZmlsZQorKyAgICBnZGJfYXNzZXJ0IHskZ2Ri X2ZpbGVfY21kX2RlYnVnX2luZm8gPT0gImRlYnVnIn0gImRlYnVnIGluZm8gZm91bmQiCisrCisr ICAgICMgQ2hlY2sgdGhlIGhhbmRsZXIgd2FzIG9ubHkgY2FsbGVkIG9uY2UuCisrICAgIGdkYl90 ZXN0ICJweXRob24gcHJpbnQoaGFuZGxlcl9vYmouY2FsbF9jb3VudCkiICJeMSIgXAorKwkiY2hl Y2sgaGFuZGxlciB3YXMgb25seSBjYWxsZWQgb25jZSIKKyt9CisrCisrIyBTZXR1cCBhIGRpcmVj dG9yeSBzdHJ1Y3R1cmUgYmFzZWQgb24gdGhlIGJ1aWxkLWlkIG9mIEJJTkZJTEUsIGJ1dCBkb24n dAorKyMgbW92ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gaW50byBwbGFjZSBqdXN0IHlldC4KKysj CisrIyBJbnN0ZWFkLCBjb25maWd1cmUgdGhlIGhhbmRsZXIgdG8gbW92ZSB0aGUgZGVidWcgaW5m byBpbnRvIHRoZSBidWlsZC1pZAorKyMgZGlyZWN0b3J5LgorKyMKKysjIFJlbG9hZCBCSU5GSUxF LCBhdCB3aGljaCBwb2ludCB0aGUgaGFuZGxlciB3aWxsIG1vdmUgdGhlIGRlYnVnIGluZm8gaW50 bworKyMgdGhlIGJ1aWxkLWlkIGRpcmVjdG9yeSBhbmQgcmV0dXJuIFRydWUsIEdEQiB3aWxsIHRo ZW4gcmVjaGVjayBmb3IgdGhlCisrIyBkZWJ1ZyBpbmZvcm1hdGlvbiwgYW5kIHNob3VsZCBmaW5k IGl0LgorK3dpdGhfdGVzdF9wcmVmaXggImhhbmRsZXIgaW4gYnVpbGQtaWQgbW9kZSIgeworKyAg ICAjIE1vdmUgdGhlIGRlYnVnIGZpbGUgb3V0IG9mIHRoZSB3YXkgb25jZSBtb3JlLgorKyAgICBy ZW1vdGVfZXhlYyBidWlsZCAibXYgJGRlYnVnX2ZpbGVuYW1lICRoaWRkZW5fZmlsZW5hbWUiCisr CisrICAgICMgQ3JlYXRlIHRoZSBidWlsZC1pZCBiYXNlZCBkaXJlY3RvcnkgaW4gd2hpY2ggdGhl IGRlYnVnIGluZm9ybWF0aW9uCisrICAgICMgd2lsbCBiZSBwbGFjZWQuCisrICAgIHNldCBidWls ZF9pZF9maWxlbmFtZSBcCisrCSRkZWJ1Z19kaXJlY3RvcnkvW2J1aWxkX2lkX2RlYnVnX2ZpbGVu YW1lX2dldCAkYmluZmlsZV0KKysgICAgcmVtb3RlX2V4ZWMgYnVpbGQgIm1rZGlyIC1wIFtmaWxl IGRpcm5hbWUgJGJ1aWxkX2lkX2ZpbGVuYW1lXSIKKysKKysgICAgIyBDb25maWd1cmUgdGhlIGhh bmRsZXIgdG8gbW92ZSB0aGUgZGVidWcgaW5mbyBpbnRvIHRoZSBidWlsZC1pZCBkaXIuCisrICAg IGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGhhbmRsZXJfb2JqLnNldF9tb2RlKE1vZGUuUkVU VVJOX1RSVUUsIFwKKysJCQkJCQkgICAgXCIkaGlkZGVuX2ZpbGVuYW1lXCIsIFwKKysJCQkJCQkg ICAgXCIkYnVpbGRfaWRfZmlsZW5hbWVcIikiIFwKKysJImNvbmZpcmd1cmUgaGFuZGxlciIKKysK KysgICAgIyBSZWxvYWQgdGhlIGJpbmFyeSBhbmQgY2hlY2sgdGhlIGRlYnVnIGluZm9ybWF0aW9u IGlzIGZvdW5kLgorKyAgICBnZGJfZmlsZV9jbWQgJGJpbmZpbGUKKysgICAgZ2RiX2Fzc2VydCB7 JGdkYl9maWxlX2NtZF9kZWJ1Z19pbmZvID09ICJkZWJ1ZyJ9ICJkZWJ1ZyBpbmZvIGZvdW5kIgor KworKyAgICAjIENoZWNrIHRoZSBoYW5kbGVyIHdhcyBvbmx5IGNhbGxlZCBvbmNlLgorKyAgICBn ZGJfdGVzdCAicHl0aG9uIHByaW50KGhhbmRsZXJfb2JqLmNhbGxfY291bnQpIiAiXjEiIFwKKysJ ImNoZWNrIGhhbmRsZXIgd2FzIG9ubHkgY2FsbGVkIG9uY2UiCisrfQorKworKyMgTW92ZSB0aGUg ZGVidWcgaW5mb3JtYXRpb24gYmFjayB0byBhIGhpZGRlbiBsb2NhdGlvbiBhbmQgY29uZmlndXJl IHRoZQorKyMgaGFuZGxlciB0byByZXR1cm4gdGhlIGZpbGVuYW1lIG9mIHRoZSBoaWRkZW4gZGVi dWcgaW5mbyBsb2NhdGlvbi4gIEdEQgorKyMgc2hvdWxkIGltbWVkaWF0ZWx5IHVzZSB0aGlzIGZp bGUgYXMgdGhlIGRlYnVnIGluZm9ybWF0aW9uLgorK3dpdGhfdGVzdF9wcmVmaXggImhhbmRsZXIg cmV0dXJuaW5nIGEgc3RyaW5nIiB7CisrICAgIHJlbW90ZV9leGVjIGJ1aWxkICJtdiAkYnVpbGRf aWRfZmlsZW5hbWUgJGhpZGRlbl9maWxlbmFtZSIKKysKKysgICAgIyBDb25maWd1cmUgdGhlIGhh bmRsZXIgcmV0dXJuIGEgZmlsZW5hbWUgc3RyaW5nLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQg InB5dGhvbiBoYW5kbGVyX29iai5zZXRfbW9kZShNb2RlLlJFVFVSTl9TVFJJTkcsIFwKKysJCQkJ CQkgICAgXCIkaGlkZGVuX2ZpbGVuYW1lXCIpIiBcCisrCSJjb25maXJndXJlIGhhbmRsZXIiCisr CisrICAgICMgUmVsb2FkIHRoZSBiaW5hcnkgYW5kIGNoZWNrIHRoZSBkZWJ1ZyBpbmZvcm1hdGlv biBpcyBmb3VuZC4KKysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl9hc3NlcnQg eyRnZGJfZmlsZV9jbWRfZGVidWdfaW5mbyA9PSAiZGVidWcifSAiZGVidWcgaW5mbyBmb3VuZCIK KysKKysgICAgIyBDaGVjayB0aGUgaGFuZGxlciB3YXMgb25seSBjYWxsZWQgb25jZS4KKysgICAg Z2RiX3Rlc3QgInB5dGhvbiBwcmludChoYW5kbGVyX29iai5jYWxsX2NvdW50KSIgIl4xIiBcCisr CSJjaGVjayBoYW5kbGVyIHdhcyBvbmx5IGNhbGxlZCBvbmNlIgorK30KKysKKysjIFJlZ2lzdGVy IGFub3RoZXIgZ2xvYmFsIGhhbmRsZXIsIHRoaXMgb25lIHJhaXNlcyBhbiBleGNlcHRpb24uICBS ZWxvYWQgdGhlCisrIyBkZWJ1ZyBpbmZvcm1hdGlvbiwgdGhlIGJhZCBoYW5kbGVyIHNob3VsZCBi ZSBpbnZva2VkIGZpcnN0LCB3aGljaCByYWlzZXMKKysjIGFuIGV4Y2V0cHRpb24sIGF0IHdoaWNo IHBvaW50IEdEQiBzaG91bGQgc2tpcCBmdXJ0aGVyIFB5dGhvbiBoYW5kbGVycy4KKyt3aXRoX3Rl c3RfcHJlZml4ICJoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24iIHsKKysgICAgZ2RiX3Rlc3Rf bm9fb3V0cHV0IFwKKysJInB5dGhvbiBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVy KE5vbmUsIHJoYW5kbGVyKSIKKysKKysgICAgZm9yZWFjaF93aXRoX3ByZWZpeCBleGNlcHRpb25f dHlwZSB7Z2RiLkdkYkVycm9yIFR5cGVFcnJvcn0geworKwlnZGJfdGVzdF9ub19vdXRwdXQgXAor KwkgICAgInB5dGhvbiByaGFuZGxlci5leGNlcHRpb25fdHlwZSA9ICRleGNlcHRpb25fdHlwZSIK KysKKysJZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrCWdkYl9hc3NlcnQgeyRnZGJfZmlsZV9jbWRf ZGVidWdfaW5mbyA9PSAibm9kZWJ1ZyJ9IFwKKysJICAgICJkZWJ1ZyBpbmZvIG5vdCBmb3VuZCIK KysKKysJc2V0IHJlIFtzdHJpbmdfdG9fcmVnZXhwIFwKKysJCSAgICAiUHl0aG9uIEV4Y2VwdGlv biA8Y2xhc3MgJyRleGNlcHRpb25fdHlwZSc+OiBtZXNzYWdlIl0KKysJZ2RiX2Fzc2VydCB7W3Jl Z2V4cCAkcmUgJGdkYl9maWxlX2NtZF9tc2ddfSBcCisrCSAgICAiY2hlY2sgZm9yIGV4Y2VwdGlv biBpbiBmaWxlIGNvbW1hbmQgb3V0cHV0IgorKworKwkjIE91ciBvcmlnaW5hbCBoYW5kbGVyIGlz IHN0aWxsIHJlZ2lzdGVyZWQsIGJ1dCBzaG91bGQgbm90IGhhdmUgYmVlbgorKwkjIGNhbGxlZCBh Z2FpbiAoYXMgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgZmlyc3QpLgorKwlnZGJfdGVzdCAicHl0aG9u IHByaW50KGhhbmRsZXJfb2JqLmNhbGxfY291bnQpIiAiXjEiIFwKKysJICAgICJjaGVjayBnb29k IGhhbmRsZXIgaGFzbid0IGJlZW4gY2FsbGVkIGFnYWluIgorKyAgICB9CisrfQorKworK2dkYl90 ZXN0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysgICAgW211bHRpX2xpbmUgXAor KwkgIkdsb2JhbDoiIFwKKysJICIgIGV4Y2VwdGlvbl9oYW5kbGVyIiBcCisrCSAiICBoYW5kbGVy Il0gXAorKyAgICAiY2hlY2sgYm90aCBoYW5kbGVycyBhcmUgdmlzaWJsZSIKKysKKysjIFJlLXN0 YXJ0IEdEQi4KKytjbGVhbl9yZXN0YXJ0CisrCisrIyBMb2FkIHRoZSBQeXRob24gc2NyaXB0IGlu dG8gR0RCLgorK2dkYl90ZXN0ICJzb3VyY2UgJHJlbW90ZV9weXRob25fZmlsZSIgIl5TdWNjZXNz IiBcCisrICAgICJzb3VyY2UgcHl0aG9uIHNjcmlwdCBmb3IgYmFkIGhhbmRsZXIgbmFtZSBjaGVj a3MiCisrCisrIyBBdHRlbXB0IHRvIHJlZ2lzdGVyIGEgbWlzc2luZy1kZWJ1Zy1oYW5kbGVyIHdp dGggTkFNRS4gIFRoZSBleHBlY3RhdGlvbiBpcworKyMgdGhhdCB0aGlzIHNob3VsZCBmYWlsIGFz IE5BTUUgY29udGFpbnMgc29tZSBpbnZhbGlkIGNoYXJhY3RlcnMuCisrcHJvYyBjaGVja19iYWRf bmFtZSB7bmFtZX0geworKyAgICBzZXQgbmFtZV9yZSBbc3RyaW5nX3RvX3JlZ2V4cCAkbmFtZV0K KysgICAgc2V0IHJlIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJWYWx1ZUVycm9yOiBpbnZh bGlkIGNoYXJhY3RlciAnLicgaW4gaGFuZGxlciBuYW1lOiAkbmFtZV9yZSIgXAorKwkgICAgICJF cnJvciB3aGlsZSBleGVjdXRpbmcgUHl0aG9uIGNvZGVcXC4iXQorKworKyAgICBnZGJfdGVzdCAi cHl0aG9uIHJlZ2lzdGVyKFwiJG5hbWVcIikiICRyZSBcCisrCSJjaGVjayB0aGF0ICckbmFtZScg aXMgbm90IGFjY2VwdGVkIgorK30KKysKKysjIFdlIGRvbid0IGF0dGVtcHQgdG8gYmUgZXhoYXVz dGl2ZSBoZXJlLCBqdXN0IGNoZWNrIGEgZmV3IHJhbmRvbSBleGFtcGxlcworKyMgb2YgaW52YWxp ZCBuYW1lcy4KKytjaGVja19iYWRfbmFtZSAiISEgQmFkIE5hbWUiCisrY2hlY2tfYmFkX25hbWUg IkJhZCBOYW1lIgorK2NoZWNrX2JhZF9uYW1lICIoQmFkIE5hbWUpIgorK2NoZWNrX2JhZF9uYW1l ICJCYWQgXFtOYW1lXF0iCisrY2hlY2tfYmFkX25hbWUgIkJhZCxOYW1lIgorK2NoZWNrX2JhZF9u YW1lICJCYWQ7TmFtZSIKKysKKysjIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGhhbmRsZXJzIHJl Z2lzdGVyZWQuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxl cnMiIFwKKysgICAgImNoZWNrIG5vIGhhbmRsZXJzIGFyZSByZWdpc3RlcmVkIgorKworKyMgQ2hl Y2sgd2UgY2FuIHVzZSB0aGUgZW5hYmxlL2Rpc2FibGUgY29tbWFuZHMgd2hlcmUgdGhlcmUgYXJl IG5vIGhhbmRsZXJzCisrIyByZWdpc3RlcmVkLgorK2dkYl90ZXN0ICJlbmFibGUgbWlzc2luZy1k ZWJ1Zy1oYW5kbGVyIGZvbyIgXAorKyAgICAiXjAgbWlzc2luZyBkZWJ1ZyBoYW5kbGVycyBlbmFi bGVkIgorK2dkYl90ZXN0ICJkaXNhYmxlIG1pc3NpbmctZGVidWctaGFuZGxlciBmb28iIFwKKysg ICAgIl4wIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMgZGlzYWJsZWQiCisrCisrIyBHcmFiIHRoZSBj dXJyZW50IHByb2dyYW0gc3BhY2Ugb2JqZWN0LCB1c2VkIGZvciByZWdpc3RlcmluZyBoYW5kbGVy IGxhdGVyLgorK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIHBzcGFjZSA9IGdkYi5zZWxlY3Rl ZF9pbmZlcmlvcigpLnByb2dzcGFjZSIKKysKKysjIE5vdyByZWdpc3RlciBzb21lIGhhbmRsZXJz LgorK2ZvcmVhY2ggaHNwZWMge3tcIkZvb1wiIE5vbmV9CisrICAgIHtcIi1iYXJcIiBOb25lfQor KyAgICB7XCJiYXotXCIgcHNwYWNlfQorKyAgICB7XCJhYmMtZGVmXCIgcHNwYWNlfX0geworKyAg ICBsYXNzaWduICRoc3BlYyBuYW1lIGxvY3VzCisrICAgIGdkYl90ZXN0ICJweXRob24gcmVnaXN0 ZXIoJG5hbWUsICRsb2N1cykiCisrfQorKworK3dpdGhfdGVzdF9wcmVmaXggImFsbCBoYW5kbGVy cyBlbmFibGVkIiB7CisrICAgIGdkYl90ZXN0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMi IFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJDdXJyZW50IFByb2dzcGFjZToiIFwKKysJICAg ICAiICBhYmMtZGVmIiBcCisrCSAgICAgIiAgYmF6LSIgXAorKwkgICAgICJHbG9iYWw6IiBcCisr CSAgICAgIiAgLWJhciIgXAorKwkgICAgICIgIEZvbyJdCisrCisrICAgIGdkYl9maWxlX2NtZCAk YmluZmlsZQorKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGhhbmRsZXJfY2FsbF9sb2cpIiBc CisrCVtzdHJpbmdfdG9fcmVnZXhwIHtbJ2FiYy1kZWYnLCAnYmF6LScsICctYmFyJywgJ0Zvbydd fV0KKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxb XF0iIFwKKysJInJlc2V0IGNhbGwgbG9nIgorK30KKysKKyt3aXRoX3Rlc3RfcHJlZml4ICJkaXNh YmxlICdiYXotJyIgeworKyAgICBnZGJfdGVzdCAiZGlzYWJsZSBtaXNzaW5nLWRlYnVnLWhhbmRs ZXIgcHJvZ3NwYWNlIGJhei0iIFwKKysJIl4xIG1pc3NpbmcgZGVidWcgaGFuZGxlciBkaXNhYmxl ZCIKKysKKysgICAgZ2RiX3Rlc3QgImluZm8gbWlzc2luZy1kZWJ1Zy1oYW5kbGVycyIgXAorKwlb bXVsdGlfbGluZSBcCisrCSAgICAgIlByb2dzcGFjZSBcW15cclxuXF0rOiIgXAorKwkgICAgICIg IGFiYy1kZWYiIFwKKysJICAgICAiICBiYXotIFxcXFtkaXNhYmxlZFxcXF0iIFwKKysJICAgICAi R2xvYmFsOiIgXAorKwkgICAgICIgIC1iYXIiIFwKKysJICAgICAiICBGb28iXQorKworKyAgICBn ZGJfZmlsZV9jbWQgJGJpbmZpbGUKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChoYW5kbGVy X2NhbGxfbG9nKSIgXAorKwlbc3RyaW5nX3RvX3JlZ2V4cCB7WydhYmMtZGVmJywgJy1iYXInLCAn Rm9vJ119XQorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBoYW5kbGVyX2NhbGxfbG9n ID0gXFtcXSIgXAorKwkicmVzZXQgY2FsbCBsb2ciCisrfQorKworK3dpdGhfdGVzdF9wcmVmaXgg ImRpc2FibGUgJ0ZvbyciIHsKKysgICAgZ2RiX3Rlc3QgImRpc2FibGUgbWlzc2luZy1kZWJ1Zy1o YW5kbGVyIC4qIEZvbyIgXAorKwkiXjEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGRpc2FibGVkIgor KworKyAgICBnZGJfdGVzdCAiaW5mbyBtaXNzaW5nLWRlYnVnLWhhbmRsZXJzIiBcCisrCVttdWx0 aV9saW5lIFwKKysJICAgICAiUHJvZ3NwYWNlIFxbXlxyXG5cXSs6IiBcCisrCSAgICAgIiAgYWJj LWRlZiIgXAorKwkgICAgICIgIGJhei0gXFxcW2Rpc2FibGVkXFxcXSIgXAorKwkgICAgICJHbG9i YWw6IiBcCisrCSAgICAgIiAgLWJhciIgXAorKwkgICAgICIgIEZvbyBcXFxbZGlzYWJsZWRcXFxd Il0KKysKKysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0ICJweXRob24g cHJpbnQoaGFuZGxlcl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdleHAge1snYWJjLWRl ZicsICctYmFyJ119XQorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBoYW5kbGVyX2Nh bGxfbG9nID0gXFtcXSIgXAorKwkicmVzZXQgY2FsbCBsb2ciCisrfQorKworK3dpdGhfdGVzdF9w cmVmaXggImRpc2FibGUgZXZlcnl0aGluZyIgeworKyAgICBnZGJfdGVzdCAiZGlzYWJsZSBtaXNz aW5nLWRlYnVnLWhhbmRsZXIgLiogLioiIFwKKysJIl4yIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMg ZGlzYWJsZWQiCisrCisrICAgIGdkYl90ZXN0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMi IFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJQcm9nc3BhY2UgXFteXHJcblxdKzoiIFwKKysJ ICAgICAiICBhYmMtZGVmIFxcXFtkaXNhYmxlZFxcXF0iIFwKKysJICAgICAiICBiYXotIFxcXFtk aXNhYmxlZFxcXF0iIFwKKysJICAgICAiR2xvYmFsOiIgXAorKwkgICAgICIgIC1iYXIgXFxcW2Rp c2FibGVkXFxcXSIgXAorKwkgICAgICIgIEZvbyBcXFxbZGlzYWJsZWRcXFxdIl0KKysKKysgICAg Z2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoaGFuZGxl cl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdleHAge1tdfV0KKysgICAgZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJweXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxbXF0iIFwKKysJInJlc2V0IGNh bGwgbG9nIgorK30KKysKKyt3aXRoX3Rlc3RfcHJlZml4ICJlbmFibGUgJ2FiYy1kZWYnIiB7Cisr ICAgIHNldCByZSBbc3RyaW5nX3RvX3JlZ2V4cCAkYmluZmlsZV0KKysKKysgICAgZ2RiX3Rlc3Qg ImVuYWJsZSBtaXNzaW5nLWRlYnVnLWhhbmRsZXIgXCIkcmVcIiBhYmMtZGVmIiBcCisrCSJeMSBt aXNzaW5nIGRlYnVnIGhhbmRsZXIgZW5hYmxlZCIKKysKKysgICAgZ2RiX3Rlc3QgImluZm8gbWlz c2luZy1kZWJ1Zy1oYW5kbGVycyIgXAorKwlbbXVsdGlfbGluZSBcCisrCSAgICAgIlByb2dzcGFj ZSBcW15cclxuXF0rOiIgXAorKwkgICAgICIgIGFiYy1kZWYiIFwKKysJICAgICAiICBiYXotIFxc XFtkaXNhYmxlZFxcXF0iIFwKKysJICAgICAiR2xvYmFsOiIgXAorKwkgICAgICIgIC1iYXIgXFxc W2Rpc2FibGVkXFxcXSIgXAorKwkgICAgICIgIEZvbyBcXFxbZGlzYWJsZWRcXFxdIl0KKysKKysg ICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoaGFu ZGxlcl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdleHAge1snYWJjLWRlZiddfV0KKysg ICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxbXF0iIFwK KysJInJlc2V0IGNhbGwgbG9nIgorK30KKysKKyt3aXRoX3Rlc3RfcHJlZml4ICJlbmFibGUgZ2xv YmFsIGhhbmRsZXJzIiB7CisrICAgIHNldCByZSBbc3RyaW5nX3RvX3JlZ2V4cCAkYmluZmlsZV0K KysKKysgICAgZ2RiX3Rlc3QgImVuYWJsZSBtaXNzaW5nLWRlYnVnLWhhbmRsZXIgZ2xvYmFsIiBc CisrCSJeMiBtaXNzaW5nIGRlYnVnIGhhbmRsZXJzIGVuYWJsZWQiCisrCisrICAgIGdkYl90ZXN0 ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAg ICJQcm9nc3BhY2UgXFteXHJcblxdKzoiIFwKKysJICAgICAiICBhYmMtZGVmIiBcCisrCSAgICAg IiAgYmF6LSBcXFxbZGlzYWJsZWRcXFxdIiBcCisrCSAgICAgIkdsb2JhbDoiIFwKKysJICAgICAi ICAtYmFyIiBcCisrCSAgICAgIiAgRm9vIl0KKysKKysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxl CisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoaGFuZGxlcl9jYWxsX2xvZykiIFwKKysJW3N0 cmluZ190b19yZWdleHAge1snYWJjLWRlZicsICctYmFyJywgJ0ZvbyddfV0KKysgICAgZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJweXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxbXF0iIFwKKysJInJlc2V0 IGNhbGwgbG9nIgorK30KKysKKysjIEFkZCBoYW5kbGVyX29iaiB0byB0aGUgZ2xvYmFsIGhhbmRs ZXIgbGlzdCwgYW5kIGNvbmZpZ3VyZSBpdCB0bworKyMgcmV0dXJuIEZhbHNlLiAgV2Ugc2hvdWxk IGNhbGwgYWxsIG9mIHRoZSBwcm9ncmFtIHNwYWNlIHNwZWNpZmljCisrIyBoYW5kbGVycyAod2hp Y2ggcmV0dXJuIE5vbmUpLCBhbmQgdGhlbiBjYWxsIGhhbmRsZXJfb2JqIGZyb20gdGhlCisrIyBn bG9iYWwgbGlzdCwgd2hpY2ggcmV0dXJucyBGYWxzZSwgYXQgd2hpY2ggcG9pbnQgd2Ugc2hvdWxk bid0IGNhbGwKKysjIGFueW9uZSBlbHNlLgorK3dpdGhfdGVzdF9wcmVmaXggInJldHVybiBGYWxz ZSBoYW5kbGVyIGluIHByb2dzcGFjZSBsaXN0IiB7CisrICAgIGdkYl90ZXN0ICJlbmFibGUgbWlz c2luZy1kZWJ1Zy1oYW5kbGVyIHByb2dzcGFjZSIgXAorKwkiXjEgbWlzc2luZyBkZWJ1ZyBoYW5k bGVyIGVuYWJsZWQiCisrCisrICAgIGdkYl90ZXN0X25vX291dHB1dCBcCisrCSJweXRob24gZ2Ri Lm1pc3NpbmdfZGVidWcucmVnaXN0ZXJfaGFuZGxlcihOb25lLCBoYW5kbGVyX29iaikiIFwKKysJ InJlZ2lzdGVyIHRoZSBpbml0aWFsIGhhbmRsZXIiCisrCisrICAgIGdkYl90ZXN0ICJpbmZvIG1p c3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJQcm9nc3Bh Y2UgXFteXHJcblxdKzoiIFwKKysJICAgICAiICBhYmMtZGVmIiBcCisrCSAgICAgIiAgYmF6LSIg XAorKwkgICAgICJHbG9iYWw6IiBcCisrCSAgICAgIiAgaGFuZGxlciIgXAorKwkgICAgICIgIC1i YXIiIFwKKysJICAgICAiICBGb28iXQorKworKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhv biBoYW5kbGVyX29iai5zZXRfbW9kZShNb2RlLlJFVFVSTl9GQUxTRSkiIFwKKysJImNvbmZpcmd1 cmUgaGFuZGxlciIKKysKKysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0 ICJweXRob24gcHJpbnQoaGFuZGxlcl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdleHAg e1snYWJjLWRlZicsICdiYXotJywgJ2hhbmRsZXInXX1dCisrICAgIGdkYl90ZXN0X25vX291dHB1 dCAicHl0aG9uIGhhbmRsZXJfY2FsbF9sb2cgPSBcW1xdIiBcCisrCSJyZXNldCBjYWxsIGxvZyIK Kyt9CisrCisrIyBOb3cgYWRkIGhhbmRsZXJfb2JqIHRvIHRoZSBjdXJyZW50IHByb2dyYW0gc3Bh Y2UncyBoYW5kbGVyIGxpc3QuICBXZQorKyMgdXNlIHRoZSBzYW1lIGhhbmRsZXIgb2JqZWN0IGhl cmUsIHRoYXQncyBmaW5lLiAgV2Ugc2hvdWxkIG9ubHkgc2VlIGEKKysjIGNhbGwgdG8gdGhlIGZp cnN0IGhhbmRsZXIgb2JqZWN0IGluIHRoZSBjYWxsIGxvZy4KKyt3aXRoX3Rlc3RfcHJlZml4ICJy ZXR1cm4gRmFsc2UgaGFuZGxlciBpbiBnbG9iYWwgbGlzdCIgeworKyAgICBnZGJfdGVzdF9ub19v dXRwdXQgXAorKwkicHl0aG9uIGdkYi5taXNzaW5nX2RlYnVnLnJlZ2lzdGVyX2hhbmRsZXIocHNw YWNlLCBoYW5kbGVyX29iaikiIFwKKysJInJlZ2lzdGVyIHRoZSBpbml0aWFsIGhhbmRsZXIiCisr CisrICAgIGdkYl90ZXN0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRp X2xpbmUgXAorKwkgICAgICJQcm9nc3BhY2UgXFteXHJcblxdKzoiIFwKKysJICAgICAiICBoYW5k bGVyIiBcCisrCSAgICAgIiAgYWJjLWRlZiIgXAorKwkgICAgICIgIGJhei0iIFwKKysJICAgICAi R2xvYmFsOiIgXAorKwkgICAgICIgIGhhbmRsZXIiIFwKKysJICAgICAiICAtYmFyIiBcCisrCSAg ICAgIiAgRm9vIl0KKysKKysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0 ICJweXRob24gcHJpbnQoaGFuZGxlcl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdleHAg e1snaGFuZGxlciddfV0KKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gaGFuZGxlcl9j YWxsX2xvZyA9IFxbXF0iIFwKKysJInJlc2V0IGNhbGwgbG9nIgorK30KKysKKyt3aXRoX3Rlc3Rf cHJlZml4ICJjaGVjayBoYW5kbGVyIHJlcGxhY2VtZW50IiB7CisrICAgICMgRmlyc3QsIGNoZWNr IHdlIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXBwZWFyIGluIGJvdGggcHJvZ3JhbQorKyAgICAj IHNwYWNlIGFuZCBnbG9iYWwgbGlzdHMgd2l0aG91dCBnaXZpbmcgYW4gZXJyb3IuCisrICAgIGdk Yl90ZXN0X25vX291dHB1dCAicHl0aG9uIHJlZ2lzdGVyKFwiRm9vXCIsIHBzcGFjZSkiCisrCisr ICAgIGdkYl90ZXN0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRpX2xp bmUgXAorKwkgICAgICJQcm9nc3BhY2UgXFteXHJcblxdKzoiIFwKKysJICAgICAiICBGb28iIFwK KysJICAgICAiICBoYW5kbGVyIiBcCisrCSAgICAgIiAgYWJjLWRlZiIgXAorKwkgICAgICIgIGJh ei0iIFwKKysJICAgICAiR2xvYmFsOiIgXAorKwkgICAgICIgIGhhbmRsZXIiIFwKKysJICAgICAi ICAtYmFyIiBcCisrCSAgICAgIiAgRm9vIl0KKysKKysgICAgIyBOb3cgY2hlY2sgdGhhdCB3ZSBn ZXQgYW4gZXJyb3IgaWYgd2UgdHJ5IHRvIGFkZCBhIGhhbmRsZXIgd2l0aAorKyAgICAjIHRoZSBz YW1lIG5hbWUuCisrICAgIGdkYl90ZXN0ICJweXRob24gZ2RiLm1pc3NpbmdfZGVidWcucmVnaXN0 ZXJfaGFuZGxlcihwc3BhY2UsIGxvZ19oYW5kbGVyKFwiRm9vXCIpKSIgXAorKwlbbXVsdGlfbGlu ZSBcCisrCSAgICAgIlJ1bnRpbWVFcnJvcjogSGFuZGxlciBGb28gYWxyZWFkeSBleGlzdHNcXC4i IFwKKysJICAgICAiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIFB5dGhvbiBjb2RlXFwuIl0KKysKKysg ICAgZ2RiX3Rlc3QgInB5dGhvbiBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKGhh bmRsZXI9bG9nX2hhbmRsZXIoXCJGb29cIiksIGxvY3VzPXBzcGFjZSkiIFwKKysJW211bHRpX2xp bmUgXAorKwkgICAgICJSdW50aW1lRXJyb3I6IEhhbmRsZXIgRm9vIGFscmVhZHkgZXhpc3RzXFwu IiBcCisrCSAgICAgIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBQeXRob24gY29kZVxcLiJdCisrCisr ICAgICMgQW5kIG5vdyB0cnkgYWdhaW4sIGJ1dCB0aGlzIHRpbWUgd2l0aCAncmVwbGFjZT1UcnVl Jywgd2UKKysgICAgIyBzaG91bGRuJ3QgZ2V0IGFuIGVycm9yIGluIHRoaXMgY2FzZS4KKysgICAg Z2RiX3Rlc3Rfbm9fb3V0cHV0IFwKKysJInB5dGhvbiBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rl cl9oYW5kbGVyKHBzcGFjZSwgbG9nX2hhbmRsZXIoXCJGb29cIiksIHJlcGxhY2U9VHJ1ZSkiCisr CisrICAgIGdkYl90ZXN0X25vX291dHB1dCBcCisrCSJweXRob24gZ2RiLm1pc3NpbmdfZGVidWcu cmVnaXN0ZXJfaGFuZGxlcihoYW5kbGVyPWxvZ19oYW5kbGVyKFwiRm9vXCIpLCBsb2N1cz1Ob25l LCByZXBsYWNlPVRydWUpIgorKworKyAgICAjIE5vdyBkaXNhYmxlIGEgaGFuZGxlciBhbmQgY2hl Y2sgd2Ugc3RpbGwgbmVlZCB0byB1c2UgJ3JlcGxhY2U9VHJ1ZScuCisrICAgIGdkYl90ZXN0ICJk aXNhYmxlIG1pc3NpbmctZGVidWctaGFuZGxlciBwcm9nc3BhY2UgRm9vIiBcCisrCSJeMSBtaXNz aW5nIGRlYnVnIGhhbmRsZXIgZGlzYWJsZWQiCisrCisrICAgIGdkYl90ZXN0ICJweXRob24gZ2Ri Lm1pc3NpbmdfZGVidWcucmVnaXN0ZXJfaGFuZGxlcihwc3BhY2UsIGxvZ19oYW5kbGVyKFwiRm9v XCIpKSIgXAorKwlbbXVsdGlfbGluZSBcCisrCSAgICAgIlJ1bnRpbWVFcnJvcjogSGFuZGxlciBG b28gYWxyZWFkeSBleGlzdHNcXC4iIFwKKysJICAgICAiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIFB5 dGhvbiBjb2RlXFwuIl0gXAorKwkic3RpbGwgZ2V0IGFuIGVycm9yIHdoZW4gaGFuZGxlciBpcyBk aXNhYmxlZCIKKysKKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0IFwKKysJInB5dGhvbiBnZGIubWlz c2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKHBzcGFjZSwgbG9nX2hhbmRsZXIoXCJGb29cIiks IHJlcGxhY2U9VHJ1ZSkiIFwKKysJImNhbiByZXBsYWNlIGEgZGlzYWJsZWQgaGFuZGxlciIKKyt9 CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcu cHkgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5weQorbmV3IGZp bGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1taXNzaW5nLWRlYnVnLnB5CitAQCAtMCwwICsxLDEyMCBAQAorKyMgQ29weXJpZ2h0 IChDKSAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKysKKytpbXBvcnQgZ2RiCisrZnJvbSBnZGIubWlzc2luZ19kZWJ1 ZyBpbXBvcnQgTWlzc2luZ0RlYnVnSGFuZGxlcgorK2Zyb20gZW51bSBpbXBvcnQgRW51bQorK2lt cG9ydCBvcworKworKyMgQSBnbG9iYWwgbG9nIHRoYXQgaXMgZmlsbGVkIGluIGJ5IGluc3RhbmNl cyBvZiB0aGUgTE9HX0hBTkRMRVIgY2xhc3MKKysjIHdoZW4gdGhleSBhcmUgY2FsbGVkLgorK2hh bmRsZXJfY2FsbF9sb2cgPSBbXQorKworKworK2NsYXNzIE1vZGUoRW51bSk6CisrICAgIFJFVFVS Tl9OT05FID0gMAorKyAgICBSRVRVUk5fVFJVRSA9IDEKKysgICAgUkVUVVJOX0ZBTFNFID0gMgor KyAgICBSRVRVUk5fU1RSSU5HID0gMworKworKworK2NsYXNzIGhhbmRsZXIoTWlzc2luZ0RlYnVn SGFuZGxlcik6CisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAgICAgIHN1cGVyKCkuX19p bml0X18oImhhbmRsZXIiKQorKyAgICAgICAgc2VsZi5fY2FsbF9jb3VudCA9IDAKKysgICAgICAg IHNlbGYuX21vZGUgPSBNb2RlLlJFVFVSTl9OT05FCisrCisrICAgIGRlZiBfX2NhbGxfXyhzZWxm LCBvYmpmaWxlKToKKysgICAgICAgIGdsb2JhbCBoYW5kbGVyX2NhbGxfbG9nCisrICAgICAgICBo YW5kbGVyX2NhbGxfbG9nLmFwcGVuZChzZWxmLm5hbWUpCisrICAgICAgICBzZWxmLl9jYWxsX2Nv dW50ICs9IDEKKysgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gTW9kZS5SRVRVUk5fTk9ORToKKysg ICAgICAgICAgICByZXR1cm4gTm9uZQorKworKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBNb2Rl LlJFVFVSTl9UUlVFOgorKyAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLl9zcmMsIHNlbGYuX2Rl c3QpCisrICAgICAgICAgICAgcmV0dXJuIFRydWUKKysKKysgICAgICAgIGlmIHNlbGYuX21vZGUg PT0gTW9kZS5SRVRVUk5fRkFMU0U6CisrICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisrCisrICAg ICAgICBpZiBzZWxmLl9tb2RlID09IE1vZGUuUkVUVVJOX1NUUklORzoKKysgICAgICAgICAgICBy ZXR1cm4gc2VsZi5fZGVzdAorKworKyAgICAgICAgYXNzZXJ0IEZhbHNlCisrCisrICAgIEBwcm9w ZXJ0eQorKyAgICBkZWYgY2FsbF9jb3VudChzZWxmKToKKysgICAgICAgICIiIlJldHVybiBhIGNv dW50LCB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIF9fY2FsbF9fIHNpbmNlIHRoZSBsYXN0CisrICAg ICAgICBjYWxsIHRvIHNldF9tb2RlLgorKyAgICAgICAgIiIiCisrICAgICAgICByZXR1cm4gc2Vs Zi5fY2FsbF9jb3VudAorKworKyAgICBkZWYgc2V0X21vZGUoc2VsZiwgbW9kZSwgKmFyZ3MpOgor KyAgICAgICAgc2VsZi5fY2FsbF9jb3VudCA9IDAKKysgICAgICAgIHNlbGYuX21vZGUgPSBtb2Rl CisrCisrICAgICAgICBpZiBtb2RlID09IE1vZGUuUkVUVVJOX05PTkU6CisrICAgICAgICAgICAg YXNzZXJ0IGxlbihhcmdzKSA9PSAwCisrICAgICAgICAgICAgcmV0dXJuCisrCisrICAgICAgICBp ZiBtb2RlID09IE1vZGUuUkVUVVJOX1RSVUU6CisrICAgICAgICAgICAgYXNzZXJ0IGxlbihhcmdz KSA9PSAyCisrICAgICAgICAgICAgc2VsZi5fc3JjID0gYXJnc1swXQorKyAgICAgICAgICAgIHNl bGYuX2Rlc3QgPSBhcmdzWzFdCisrICAgICAgICAgICAgcmV0dXJuCisrCisrICAgICAgICBpZiBt b2RlID09IE1vZGUuUkVUVVJOX0ZBTFNFOgorKyAgICAgICAgICAgIGFzc2VydCBsZW4oYXJncykg PT0gMAorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAgICAgaWYgbW9kZSA9PSBNb2RlLlJF VFVSTl9TVFJJTkc6CisrICAgICAgICAgICAgYXNzZXJ0IGxlbihhcmdzKSA9PSAxCisrICAgICAg ICAgICAgc2VsZi5fZGVzdCA9IGFyZ3NbMF0KKysgICAgICAgICAgICByZXR1cm4KKysKKysgICAg ICAgIGFzc2VydCBGYWxzZQorKworKworK2NsYXNzIGV4Y2VwdGlvbl9oYW5kbGVyKE1pc3NpbmdE ZWJ1Z0hhbmRsZXIpOgorKyAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBzdXBlcigp Ll9faW5pdF9fKCJleGNlcHRpb25faGFuZGxlciIpCisrICAgICAgICBzZWxmLmV4Y2VwdGlvbl90 eXBlID0gTm9uZQorKworKyAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqZmlsZSk6CisrICAgICAg ICBnbG9iYWwgaGFuZGxlcl9jYWxsX2xvZworKyAgICAgICAgaGFuZGxlcl9jYWxsX2xvZy5hcHBl bmQoc2VsZi5uYW1lKQorKyAgICAgICAgYXNzZXJ0IHNlbGYuZXhjZXB0aW9uX3R5cGUgaXMgbm90 IE5vbmUKKysgICAgICAgIHJhaXNlIHNlbGYuZXhjZXB0aW9uX3R5cGUoIm1lc3NhZ2UiKQorKwor KworK2NsYXNzIGxvZ19oYW5kbGVyKE1pc3NpbmdEZWJ1Z0hhbmRsZXIpOgorKyAgICBkZWYgX19j YWxsX18oc2VsZiwgb2JqZmlsZSk6CisrICAgICAgICBnbG9iYWwgaGFuZGxlcl9jYWxsX2xvZwor KyAgICAgICAgaGFuZGxlcl9jYWxsX2xvZy5hcHBlbmQoc2VsZi5uYW1lKQorKyAgICAgICAgcmV0 dXJuIE5vbmUKKysKKysKKysjIEEgYmFzaWMgaGVscGVyIGZ1bmN0aW9uLCB0aGlzIGtlZXBzIGxp bmVzIHNob3J0ZXIgaW4gdGhlIFRDTCBzY3JpcHQuCisrZGVmIHJlZ2lzdGVyKG5hbWUsIGxvY3Vz PU5vbmUpOgorKyAgICBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKGxvY3VzLCBs b2dfaGFuZGxlcihuYW1lKSkKKysKKysKKysjIENyZWF0ZSBpbnN0YW5jZXMgb2YgdGhlIGhhbmRs ZXJzLCBidXQgZG9uJ3QgaW5zdGFsbCBhbnkuICBXZSBpbnN0YWxsCisrIyB0aGVzZSBhcyBuZWVk ZWQgZnJvbSB0aGUgVENMIHNjcmlwdC4KKytyaGFuZGxlciA9IGV4Y2VwdGlvbl9oYW5kbGVyKCkK KytoYW5kbGVyX29iaiA9IGhhbmRsZXIoKQorKworK3ByaW50KCJTdWNjZXNzIikKCmRpZmYgLS1n aXQgYS9nZGItYWRkLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaCBiL2dkYi1hZGQtcnBtLXN1 Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjY2MGJjNTgKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYWRkLXJwbS1zdWdnZXN0aW9uLXNjcmlw dC5wYXRjaApAQCAtMCwwICsxLDE1NyBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0ByZWRoYXQuY29t PgorRGF0ZTogVGh1LCA3IE1hciAyMDI0IDE1OjE0OjIzICswMDAwCitTdWJqZWN0OiBnZGItYWRk LXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaAorCis7OyBOb3QgYSBiYWNrcG9ydC4gIEFkZCBh IG5ldyBzY3JpcHQgd2hpY2ggaG9va3MgaW50byBHREIgYW5kIHN1Z2dlc3RzCis7OyBSUE1zIHRv IGluc3RhbGwgd2hlbiBHREIgZmluZHMgYW4gb2JqZmlsZSB3aXRoIG5vIGRlYnVnIGluZm8uCisK K2dkYjogYWRkIHNjcmlwdCB3aGljaCB3aWxsIHN1Z2dlc3QgZGVidWdpbmZvIFJQTXMgdG8gaW5z dGFsbAorCitUaGlzIHNjcmlwdCBob29rcyBpbnRvIEdEQidzIG1pc3NpbmcgZGVidWcgaW5mbyBQ eXRob24gQVBJIGFuZAorc3VnZ2VzdHMgZGVidWdpbmZvIFJQTXMgdG8gaW5zdGFsbC4KKworZGlm ZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVj dG9yeS9NYWtlZmlsZS5pbgorLS0tIGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCisr KysgYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KK0BAIC04Niw2ICs4Niw3IEBAIFBZ VEhPTl9GSUxFX0xJU1QgPSBcCisgCWdkYi9jb21tYW5kL21pc3NpbmdfZGVidWcucHkgXAorIAln ZGIvY29tbWFuZC9wcmV0dHlfcHJpbnRlcnMucHkgXAorIAlnZGIvY29tbWFuZC9wcm9tcHQucHkg XAorKwlnZGIvY29tbWFuZC9ycG0tc3VnZ2VzdGlvbnMucHkgXAorIAlnZGIvY29tbWFuZC90eXBl X3ByaW50ZXJzLnB5IFwKKyAJZ2RiL2NvbW1hbmQvdW53aW5kZXJzLnB5IFwKKyAJZ2RiL2NvbW1h bmQveG1ldGhvZHMucHkgXAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5k L3JwbS1zdWdnZXN0aW9ucy5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JwbS1zdWdn ZXN0aW9ucy5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi9weXRob24vbGliL2dkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weQorQEAgLTAsMCArMSwx MTEgQEAKKysjIENvcHlyaWdodCAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpbXBvcnQgZ2RiCisraW1wb3J0 IGdkYi5taXNzaW5nX2RlYnVnCisraW1wb3J0IHJwbQorKworKyMgVHJhY2sgYWxsIHRoZSBSUE1z IHN1Z2dlc3RlZCBkdXJpbmcgYSBzaW5nbGUgZGVidWcgc2Vzc2lvbiBzbyB3ZQorKyMgZG9uJ3Qg c3VnZ2VzdCB0aGUgc2FtZSBSUE0gdHdpY2UuICBUaGlzIGlzIG9ubHkgY2xlYXJlZCB3aGVuIHRo ZQorKyMgbWFpbiBleGVjdXRhYmxlIGlzIGNoYW5nZWQuCisrX19taXNzaW5nX3JwbXMgPSB7fQor KworKyMgVHJhY2sgYW55IG1pc3NpbmcgUlBNcyB0aGF0IGhhdmUgYmVlbiBkaXNjb3ZlcmVkIHNp bmNlIHRoZSBsYXN0IHRpbWUKKysjIHRoZSBwcm9tcHQgd2FzIGRpc3BsYXllZC4gIFJQTXMgaW4g aGVyZSBhcmUgYWxzbyBwcmVzZW50IGluIHRoZQorKyMgX19NSVNTSU5HX1JQTVMgZGljdGlvbmFy eSwgYnV0IHRoaXMgZGljdGlvbmFyeSBpcyBjbGVhcmVkIGVhY2ggdGltZQorKyMgdGhlIHByb21w dCBpcyBzaG93bi4KKytfX3N1Z2dlc3RfcnBtcyA9IHt9CisrCisrCisrIyBMb29rdXAgUlBNcyB0 aGF0IG1pZ2h0IHByb3ZpZGUgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZvciBGSUxFTkFNRSwKKysj IHdoaWNoIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHBhdGggdG8gYW4gb2JqZWN0IGZpbGUg R0RCIGNvdWxkCisrIyBub3QgZmluZCBhbnkgZGVidWcgaW5mb3JtYXRpb24gZm9yLgorKyMKKysj IElmIGEgcG9zc2libGUgUlBNIGlzIGZvdW5kIHRoZW4gdGhpcyBpcyBhZGRlZCB0byB0aGUgZ2xv YmFscworKyMgX19NSVNTSU5HX1JQTVMgYW5kIF9fU1VHR0VTVF9SUE1TLCB3aGljaCBhcmUgdXNl ZCBlbHNld2hlcmUgaW4gdGhpcworKyMgc2NyaXB0LgorK2RlZiBmaW5kX3N1Z2dlc3Rpb25zKGZp bGVuYW1lKToKKysgICAgdHMgPSBycG0uVHJhbnNhY3Rpb25TZXQoKQorKworKyAgICBtaSA9IHRz LmRiTWF0Y2gocnBtLlJQTURCSV9CQVNFTkFNRVMsIGZpbGVuYW1lKQorKyAgICBmb3IgaCBpbiBt aToKKysgICAgICAgICMgQnVpbGQgdGhlIGRlYnVnaW5mbyBwYWNrYWdlIG5hbWUuCisrICAgICAg ICBvYmogPSBoLmZvcm1hdCgiJXtuYW1lfS1kZWJ1Z2luZm8tJXt2ZXJzaW9ufS0le3JlbGVhc2V9 LiV7YXJjaH0iKQorKworKyAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHBhY2thZ2UgaXMg aW5zdGFsbGVkLgorKyAgICAgICAgbWkyID0gdHMuZGJNYXRjaChycG0uUlBNREJJX0xBQkVMLCBz dHIob2JqKSkKKysgICAgICAgIGlmIGxlbihtaTIpID4gMDoKKysgICAgICAgICAgICBjb250aW51 ZQorKworKyAgICAgICAgIyBOb3cgYnVpbGQgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgRklMRU5B TUUgY2FtZSBmcm9tLgorKyAgICAgICAgb2JqID0gaC5mb3JtYXQoIiV7bmFtZX0tJXt2ZXJzaW9u fS0le3JlbGVhc2V9LiV7YXJjaH0iKQorKyAgICAgICAgcnBtX25hbWUgPSBzdHIob2JqKQorKyAg ICAgICAgaWYgbm90IHJwbV9uYW1lIGluIF9fbWlzc2luZ19ycG1zOgorKyAgICAgICAgICAgIF9f c3VnZ2VzdF9ycG1zW3JwbV9uYW1lXSA9IFRydWUKKysgICAgICAgICAgICBfX21pc3NpbmdfcnBt c1tycG1fbmFtZV0gPSBUcnVlCisrCisrCisrIyBBIG1pc3NpbmcgZGVidWcgaGFuZGxlciBjbGFz cy4gIEp1c3QgZm9yd2FyZHMgdGhlIG5hbWUgb2YgdGhlCisrIyBvYmpmaWxlIGZvciB3aGljaCB3 ZSBhcmUgbWlzc2luZyBkZWJ1ZyBpbmZvcm1hdGlvbiB0bworKyMgZmluZF9zdWdnZXN0aW9ucy4K KytjbGFzcyBSUE1TdWdnZXN0aW9uSGFuZGxlcihnZGIubWlzc2luZ19kZWJ1Zy5NaXNzaW5nRGVi dWdIYW5kbGVyKToKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgc3VwZXIoKS5f X2luaXRfXygicnBtLXN1Z2dlc3Rpb25zIikKKysKKysgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9i amZpbGUpOgorKyAgICAgICAgIyBUcmFkaXRpb25hbGx5IHRoZSAnYnVpbGQtaWQtdmVyYm9zZScg cGFyYW1ldGVyIGlzIHdoYXQKKysgICAgICAgICMgY29udHJvbGxlZCBhbGwgUlBNIHN1Z2dlc3Rp b24uICBNYXliZSBvbmNlIGFsbCB0aGUgUlBNCisrICAgICAgICAjIHN1Z2dlc3Rpb24gaXMgcGVy Zm9ybWVkIHZpYSBQeXRob24gZXh0ZW5zaW9ucyB0aGVuIHdlIG1pZ2h0CisrICAgICAgICAjIGNv bnNpZGVyIHJlbmFtaW5nIHRoaXMgcGFyYW1ldGVyIHRvIHNvbWV0aGluZyBlbHNlLCBidXQgZm9y CisrICAgICAgICAjIG5vdywgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIEkndmUgcmV0YWlu ZWQgdGhpcyBuYW1lLgorKyAgICAgICAgaWYgZ2RiLnBhcmFtZXRlcigiYnVpbGQtaWQtdmVyYm9z ZSIpID4gMDoKKysgICAgICAgICAgICBmaW5kX3N1Z2dlc3Rpb25zKG9iamZpbGUuZmlsZW5hbWUp CisrICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisrICAgICAgICByZXR1cm4gTm9uZQorKworKwor KyMgQ2FsbGVkIGJlZm9yZSBHREIgZGlzcGxheXMgaXRzIHByb21wdC4gIElmIHRoZSBnbG9iYWwg X19TVUdHRVNUX1JQTVMKKysjIGRpY3Rpb25hcnkgaXMgbm90IGVtcHR5LCB0aGVuIHRoaXMgaG9v ayBwcmludHMgdHJlYXRzIHRoZSBrZXlzIG9mCisrIyB0aGlzIGRpY3Rpb25hcnkgYXMgc3RyaW5n cyB3aGljaCBhcmUgdGhlIG5hbWVzIG9mIFJQTXMuICBUaGlzIGhvb2sKKysjIGZvcm1hdHMgZWFj aCBSUE0gbmFtZSBpbnRvIGEgc3VnZ2VzdGVkIGRlYnVnaW5mby1pbnN0YWxsIGNvbW1hbmQgYW5k CisrIyBzdWdnZXN0cyB0aGlzIHRvIHRoZSB1c2VyLgorK2RlZiBiZWZvcmVfcHJvbXB0KCk6Cisr ICAgIGdsb2JhbCBfX3N1Z2dlc3RfcnBtcworKworKyAgICBpZiBsZW4oX19zdWdnZXN0X3JwbXMp ID4gMDoKKysgICAgICAgIGZvciBwIGluIF9fc3VnZ2VzdF9ycG1zLmtleXMoKToKKysgICAgICAg ICAgICBwcmludCgiTWlzc2luZyBkZWJ1Z2luZm8sIHRyeTogZG5mIGRlYnVnaW5mby1pbnN0YWxs ICIgKyBwKQorKyAgICAgICAgX19zdWdnZXN0X3JwbXMgPSB7fQorKworKworKyMgQ2FsbGVkIHdo ZW4gdGhlIGV4ZWN1dGFibGUgd2l0aGluIGEgcHJvZ3JtIHNwYWNlIGlzIGNoYW5nZWQuICBDbGVh cgorKyMgdGhlIGxpc3RzIG9mIFJQTSBzdWdnZXN0aW9ucy4gIFdlIG9ubHkgY2xlYXIgdGhlIHBy ZXZpb3VzIHN1Z2dlc3Rpb24KKysjIGxpc3Qgd2hlbiB0aGUgZXhlY3V0YWJsZSByZWFsbHkgY2hh bmdlcy4gIElmIHRoZSB1c2VyIHNpbXBseQorKyMgcmVjb21waWxlcyB0aGUgZXhlY3V0YWJsZSwg dGhlbiB3ZSBkb24ndCBib3RoIGNsZWFyaW5nIHRoaXMgbGlzdC4KKytkZWYgZXhlY3V0YWJsZV9j aGFuZ2VkX2hhbmRsZXIoZXZlbnQpOgorKyAgICBnbG9iYWwgX19taXNzaW5nX3JwbXMKKysgICAg Z2xvYmFsIF9fc3VnZ2VzdF9ycG1zCisrCisrICAgIGlmIG5vdCBldmVudC5yZWxvYWQ6CisrICAg ICAgICBfX21pc3NpbmdfcnBtcyA9IHt9CisrICAgICAgICBfX3N1Z2dlc3RfcnBtcyA9IHt9Cisr CisrCisrIyBBdHRhY2ggdG8gdGhlIHJlcXVpcmVkIEdEQiBldmVudHMuCisrZ2RiLmV2ZW50cy5l eGVjdXRhYmxlX2NoYW5nZWQuY29ubmVjdChleGVjdXRhYmxlX2NoYW5nZWRfaGFuZGxlcikKKytn ZGIuZXZlbnRzLmJlZm9yZV9wcm9tcHQuY29ubmVjdChiZWZvcmVfcHJvbXB0KQorKworKyMgUmVn aXN0ZXIgdGhlIG1pc3NpbmcgZGVidWcgaGFuZGxlciB3aXRoIEdEQi4KKytnZGIubWlzc2luZ19k ZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKE5vbmUsIFJQTVN1Z2dlc3Rpb25IYW5kbGVyKCkpCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkgYi9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5weQorLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLnB5CitAQCAtMTgsNiArMTgsMTMgQEAgZnJv bSBnZGIubWlzc2luZ19kZWJ1ZyBpbXBvcnQgTWlzc2luZ0RlYnVnSGFuZGxlcgorIGZyb20gZW51 bSBpbXBvcnQgRW51bQorIGltcG9ydCBvcworIAorKyMgVGhpcyBpcyBhIFJIRUwvRmVkb3JhIHdv cmsgYXJvdW5kOiBUaGVyZSdzIGFscmVhZHkgYQorKyMgbWlzc2luZy1kZWJ1Zy1pbmZvIGhhbmRs ZXIgcmVnaXN0ZXJlZCBmb3IgdGhlc2UgdmVyc2lvbnMgb2YgR0RCLgorKyMgRGlzY2FyZCB0aGUg aGFuZGxlciBub3cgc28gdGhhdCB0aGUgdGVzdHMgd2lsbCBwYXNzICh0aGUgdGVzdHMKKysjIGFz c3VtZSBubyBoYW5kbGVyIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkKS4KKytnZGIubWlzc2luZ19k ZWJ1Z19oYW5kbGVycyA9IFtdCisrCisrCisgIyBBIGdsb2JhbCBsb2cgdGhhdCBpcyBmaWxsZWQg aW4gYnkgaW5zdGFuY2VzIG9mIHRoZSBMT0dfSEFORExFUiBjbGFzcworICMgd2hlbiB0aGV5IGFy ZSBjYWxsZWQuCisgaGFuZGxlcl9jYWxsX2xvZyA9IFtdCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hl ci1uZXh0LW92ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2ggYi9nZGItYXJjaGVyLW5leHQtb3Zlci10 aHJvdy1jeHgtZXhlYy5wYXRjaAppbmRleCBiYTcxY2QzLi5jNWQ1OGIzIDEwMDY0NAotLS0gYS9n ZGItYXJjaGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAorKysgYi9nZGItYXJjaGVy LW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaApAQCAtNTksNyArNTksNyBAQCBuZXcgZmls ZSBtb2RlIDEwMDY0NAogKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotK2lmIHsgW3Nr aXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9CisrcmVxdWlyZSBhbGxvd19jcGx1c190ZXN0 cwogKwogK3NldCB0ZXN0ZmlsZSBjeHhleGVjCiAraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAk e3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHt0ZXN0ZmlsZX0uY2Mge2MrKyBkZWJ1Z31dIH0g ewoKZGlmZiAtLWdpdCBhL2dkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBhdGNoIGIvZ2RiLWJ6 NjM0MTA4LXNvbGliX2FkZHJlc3MucGF0Y2gKaW5kZXggNThiNDczZi4uMTMxZTFjMSAxMDA2NDQK LS0tIGEvZ2RiLWJ6NjM0MTA4LXNvbGliX2FkZHJlc3MucGF0Y2gKKysrIGIvZ2RiLWJ6NjM0MTA4 LXNvbGliX2FkZHJlc3MucGF0Y2gKQEAgLTE0LDcgKzE0LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9yaDYzNDEwOC1zb2xpYl9hZGRyZXNzLmV4cCBiL2dkYi90ZXN0 c3VpdGUKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcmg2MzQxMDgtc29saWJfYWRkcmVzcy5leHAKLUBAIC0wLDAgKzEs MjQgQEAKK0BAIC0wLDAgKzEsMjUgQEAKICsjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0z MiwxMCArMzIsMTEgQEAgbmV3IGZpbGUgbW9kZSAxMDA2NDQKICsKICsjIGh0dHBzOi8vYnVnemls bGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjM0MTA4CiArCisrbG9hZF9saWIgZ2RiLXB5 dGhvbi5leHAKKysKKytyZXF1aXJlIGFsbG93X3B5dGhvbl90ZXN0cworKwogK2dkYl9leGl0CiAr Z2RiX3N0YXJ0CiArCi0rIyBTa2lwIGFsbCB0ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlzIG5v dCBlbmFibGVkLgotK2lmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQotKwog K2dkYl90ZXN0ICJweXRob24gcHJpbnQgKGdkYi5zb2xpYl9uYW1lKC0xKSkiICJOb25lIiAiZ2Ri LnNvbGliX25hbWUgZXhpc3RzIgoKZGlmZiAtLWdpdCBhL2dkYi1kby1ub3QtaW1wb3J0LXB5LWN1 cnNlcy1hc2NpaS1tb2R1bGUucGF0Y2ggYi9nZGItZG8tbm90LWltcG9ydC1weS1jdXJzZXMtYXNj aWktbW9kdWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZTU0 NGIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZG8tbm90LWltcG9ydC1weS1jdXJzZXMtYXNjaWkt bW9kdWxlLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CitEYXRlOiBXZWQsIDIyIE5vdiAyMDIzIDE5OjAyOjM0ICswMTAwCitTdWJqZWN0OiBnZGItZG8t bm90LWltcG9ydC1weS1jdXJzZXMtYXNjaWktbW9kdWxlLnBhdGNoCisKKzs7IEJhY2twb3J0IHVw c3RyZWFtIGNvbW1pdCBlOGMzZGFmYTVmNS4KKworW2dkYi9weXRob25dIERvbid0IGltcG9ydCBj dXJzZXMuYXNjaWkgbW9kdWxlIHVubGVzcyBuZWNlc3NhcnkKKworSSByYW4gaW50byBhIGZhaWx1 cmUgaW4gdGVzdC1jYXNlIGdkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5leHAgd2l0aCBweXRo b24KKzMuNiwgd2hpY2ggd2FzIGZpeGVkIGJ5IGNvbW1pdCA3ZGI3OTViYzY3YSAoImdkYi9weXRo b246IHJlbW92ZSB1c2Ugb2YKK3N0ci5pc2FzY2lpKCkiKS4KKworSG93ZXZlciwgSSBzdWJzZXF1 ZW50bHkgcmFuIGludG8gYSBmYWlsdXJlIHdpdGggcHl0aG9uIDMuMTE6CisuLi4KKyhnZGIpIFBB U1M6ICRleHA6IGluaXRpYWwgY2hlY2tzOiBkZWJ1ZyBpbmZvIG5vIGxvbmdlciBmb3VuZAorc291 cmNlIHB5LW1pc3NpbmctZGVidWcucHleTQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOl5NCisgIEZpbGUgInB5LW1pc3NpbmctZGVidWcucHkiLCBsaW5lIDE3LCBpbiA8bW9kdWxl Pl5NCisgICAgZnJvbSBnZGIubWlzc2luZ19kZWJ1ZyBpbXBvcnQgTWlzc2luZ0RlYnVnSGFuZGxl cl5NCisgIEZpbGUgIm1pc3NpbmdfZGVidWcucHkiLCBsaW5lIDIxLCBpbiA8bW9kdWxlPl5NCisg ICAgZnJvbSBjdXJzZXMuYXNjaWkgaW1wb3J0IGlzYXNjaWksIGlzYWxudW1eTQorICBGaWxlICIv dXNyL2xpYjY0L3B5dGhvbjMuMTEvX2ltcG9ydF9mYWlsZWQvY3Vyc2VzLnB5IiwgbGluZSAxNiwg aW4gPG1vZHVsZT5eTQorICAgIHJhaXNlIEltcG9ydEVycm9yKGYiIiJNb2R1bGUgJ3tmYWlsZWRf bmFtZX0nIGlzIG5vdCBpbnN0YWxsZWQuXk0KK0ltcG9ydEVycm9yOiBNb2R1bGUgJ2N1cnNlcycg aXMgbm90IGluc3RhbGxlZC5eTQorVXNlOl5NCisgIHN1ZG8genlwcGVyIGluc3RhbGwgcHl0aG9u MzExLWN1cnNlc15NCit0byBpbnN0YWxsIGl0Ll5NCisoZ2RiKSBGQUlMOiAkZXhwOiBzb3VyY2Ug cHl0aG9uIHNjcmlwdAorLi4uCisKK0FwcGFyZW50bHkgSSBoYXZlIHRoZSBjdXJzZXMgbW9kdWxl IGluc3RhbGxlZCBmb3IgMy42LCBidXQgbm90IDMuMTEuCisKK0kgY291bGQganVzdCBpbnN0YWxs IGl0LCBidXQgdGhlIHRlc3QtY2FzZSB3b3JrZWQgZmluZSB3aXRoIDMuMTEgYmVmb3JlIGNvbW1p dAorN2RiNzk1YmM2N2EuCisKK0ZpeCB0aGlzIGJ5IG9ubHkgdXNpbmcgdGhlIGN1cnNlcyBtb2R1 bGUgd2hlbiBuZWNlc3NhcnksIGZvciBweXRob24gPD0gMy43LgorCitUZXN0ZWQgb24geDg2XzY0 LWxpbnV4LCB3aXRoIGJvdGggcHl0aG9uIDMuNiBhbmQgMy4xMS4KKworZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vbGliL2dkYi9taXNzaW5nX2RlYnVnLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL21p c3NpbmdfZGVidWcucHkKKy0tLSBhL2dkYi9weXRob24vbGliL2dkYi9taXNzaW5nX2RlYnVnLnB5 CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5weQorQEAgLTE4LDggKzE4 LDE4IEBAIE1pc3NpbmdEZWJ1Z0hhbmRsZXIgYmFzZSBjbGFzcywgYW5kIHJlZ2lzdGVyX2hhbmRs ZXIgZnVuY3Rpb24uCisgIiIiCisgCisgaW1wb3J0IGdkYgorLWZyb20gY3Vyc2VzLmFzY2lpIGlt cG9ydCBpc2FzY2lpLCBpc2FsbnVtCistCisraW1wb3J0IHN5cworK2lmIHN5cy52ZXJzaW9uX2lu Zm8gPj0gKDMsIDcpOgorKyAgICAjIEZ1bmN0aW9ucyBzdHIuaXNhc2NpaSgpIGFuZCBzdHIuaXNh bG51bSBhcmUgYXZhaWxhYmxlIHN0YXJ0aW5nIFB5dGhvbgorKyAgICAjIDMuNy4KKysgICAgZGVm IGlzYXNjaWkoY2gpOgorKyAgICAgICAgcmV0dXJuIGNoLmlzYXNjaWkoKQorKyAgICBkZWYgaXNh bG51bShjaCk6CisrICAgICAgICByZXR1cm4gY2guaXNhbG51bSgpCisrZWxzZToKKysgICAgIyBG YWxsIGJhY2sgdG8gY3Vyc2VzLmFzY2lpLmlzYXNjaWkoKSBhbmQgY3Vyc2VzLmFzY2lpLmlzYWxu dW0oKSBmb3IKKysgICAgIyBlYXJsaWVyIHZlcnNpb25zLgorKyAgICBmcm9tIGN1cnNlcy5hc2Np aSBpbXBvcnQgaXNhc2NpaSwgaXNhbG51bQorIAorIGRlZiBfdmFsaWRhdGVfbmFtZShuYW1lKToK KyAgICAgIiIiVmFsaWRhdGUgYSBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgbmFtZSBzdHJpbmcuCgpk aWZmIC0tZ2l0IGEvZ2RiLWZlZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaCBiL2dkYi1mZWRvcmEtbGli bmN1cnNlc3cucGF0Y2gKaW5kZXggMWJiNjQwZC4uM2VlNGFiNiAxMDA2NDQKLS0tIGEvZ2RiLWZl ZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaAorKysgYi9nZGItZmVkb3JhLWxpYm5jdXJzZXN3LnBhdGNo CkBAIC0xMiwyNjkgKzEyLDcgQEAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVn LmNnaT9pZD0xMjcwNTM0CiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1 cmUKIC0tLSBhL2dkYi9jb25maWd1cmUKICsrKyBiL2dkYi9jb25maWd1cmUKLUBAIC03ODAsOSAr NzgwLDYgQEAgRU5BQkxFX0JGRF82NF9CSVRfVFJVRQotIHN1YmRpcnMKLSBSUE1fTElCUwotIFJQ TV9DRkxBR1MKLS1QS0dfQ09ORklHX0xJQkRJUgotLVBLR19DT05GSUdfUEFUSAotLVBLR19DT05G SUcKLSBHREJfREFUQURJUgotIERFQlVHRElSCi0gTUFLRUlORk9fRVhUUkFfRkxBR1MKLUBAIC05 OTAsMTIgKzk4NywxMiBAQCBQS0dfQ09ORklHX1BBVEgKLSBQS0dfQ09ORklHX0xJQkRJUgotIE1B S0VJTkZPCi0gTUFLRUlORk9GTEFHUwotK1JQTV9DRkxBR1MKLStSUE1fTElCUwotIEFNRF9EQkdB UElfQ0ZMQUdTCi0gQU1EX0RCR0FQSV9MSUJTCi0gREVCVUdJTkZPRF9DRkxBR1MKLSBERUJVR0lO Rk9EX0xJQlMKLS1SUE1fQ0ZMQUdTCi0tUlBNX0xJQlMKLSBZQUNDCi0gWUZMQUdTCi0gWlNURF9D RkxBR1MKLUBAIC0xNjg0LDExICsxNjgxLDExIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgWy0td2l0aC1hdXRvLWxvYWQtZGlyXQotICAgLS13aXRob3V0 LWF1dG8tbG9hZC1zYWZlLXBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCBy ZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKLSsgIC0td2l0aC1ycG0gICAgICAg ICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQotICAgLS13 aXRoLWFtZC1kYmdhcGkgICAgICAgc3VwcG9ydCBmb3IgdGhlIGFtZC1kYmdhcGkgdGFyZ2V0ICh5 ZXMgLyBubyAvIGF1dG8pCi0gICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBFbmFibGUgZGVidWdp bmZvIGxvb2t1cHMgd2l0aCBkZWJ1Z2luZm9kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAo YXV0by95ZXMvbm8pCi0tICAtLXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJh c2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVzL25vLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAgIC0td2l0aC1saWJ1bndpbmQtaWE2NCAgIHVz ZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIGZvciBpYTY0IHRhcmdldHMKLSAgIC0td2l0aC1j dXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVy bWNhcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAgLTE3NjEsNiArMTc1 OCw4IEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgTUFLRUlO Rk8gICAgUGFyZW50IGNvbmZpZ3VyZSBkZXRlY3RzIGlmIGl0IGlzIG9mIHN1ZmZpY2llbnQgdmVy c2lvbi4KLSAgIE1BS0VJTkZPRkxBR1MKLSAgICAgICAgICAgICAgIFBhcmFtZXRlcnMgZm9yIE1B S0VJTkZPLgotKyAgUlBNX0NGTEFHUyAgQyBjb21waWxlciBmbGFncyBmb3IgUlBNLCBvdmVycmlk aW5nIHBrZy1jb25maWcKLSsgIFJQTV9MSUJTICAgIGxpbmtlciBmbGFncyBmb3IgUlBNLCBvdmVy cmlkaW5nIHBrZy1jb25maWcKLSAgIEFNRF9EQkdBUElfQ0ZMQUdTCi0gICAgICAgICAgICAgICBD IGNvbXBpbGVyIGZsYWdzIGZvciBBTURfREJHQVBJLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAg IEFNRF9EQkdBUElfTElCUwotQEAgLTE3NjksOCArMTc2OCw2IEBAIFNvbWUgaW5mbHVlbnRpYWwg ZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBm b3IgREVCVUdJTkZPRCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0gICBERUJVR0lORk9EX0xJQlMK LSAgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgREVCVUdJTkZPRCwgb3ZlcnJpZGluZyBw a2ctY29uZmlnCi0tICBSUE1fQ0ZMQUdTICBDIGNvbXBpbGVyIGZsYWdzIGZvciBSUE0sIG92ZXJy aWRpbmcgcGtnLWNvbmZpZwotLSAgUlBNX0xJQlMgICAgbGlua2VyIGZsYWdzIGZvciBSUE0sIG92 ZXJyaWRpbmcgcGtnLWNvbmZpZwotICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDb21w aWxlciBDb21waWxlcicgaW1wbGVtZW50YXRpb24gdG8gdXNlLgotICAgICAgICAgICAgICAgRGVm YXVsdHMgdG8gdGhlIGZpcnN0IHByb2dyYW0gZm91bmQgb3V0IG9mOiBgYmlzb24gLXknLCBgYnlh Y2MnLAotICAgICAgICAgICAgICAgYHlhY2MnLgotQEAgLTExNDk1LDcgKzExNDkyLDcgQEAgZWxz ZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9 MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg PDxfTFRfRU9GCi0tI2xpbmUgMTE0ODYgImNvbmZpZ3VyZSIKLSsjbGluZSAxMTQ5NSAiY29uZmln dXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0x MTYwMSw3ICsxMTU5OCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29y ZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBj YXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNTkyICJjb25maWd1cmUi Ci0rI2xpbmUgMTE2MDEgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAj aWYgSEFWRV9ETEZDTl9ICi1AQCAtMTgxMDIsOCArMTgwOTksOCBAQCAkYXNfZWNob19uICJjaGVj a2luZyBzcGVjaWZpYyBsaWJycG0gdmVyc2lvbi4uLiAiID4mNjsgfQotICAgaWYgdGVzdCAiJGNy b3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0gJGFzX2VjaG8g IiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotLWFzX2ZuX2Vycm9yICJjYW5u b3QgcnVuIHRlc3QgcHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmcKLS1TZWUgXGBjb25maWcu bG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KLSthc19mbl9lcnJvciAkPyAi Y2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nCi0rU2VlIFxgY29u ZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSBlbHNlCi0gICBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZz LmguICAqLwotQEAgLTE4Mjc1LDEzMiArMTgyNzIsMTIgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9MSUJSUE0gMSIgPj5jb25mZGVmcy5oCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSAgICAgTElC Uz0iJHNhdmVfTElCUyIKLSAgICAgaWYgJERMT1BFTl9SRVFVSVJFOyB0aGVuCi0tICAgICAgYXNf Zm5fZXJyb3IgIlNwZWNpZmljIG5hbWUgJExJQlJQTSB3YXMgcmVxdWVzdGVkIGJ1dCBpdCBjb3Vs ZCBub3QgYmUgb3BlbmVkLiIgIiRMSU5FTk8iIDUKLSsgICAgICBhc19mbl9lcnJvciAkPyAiU3Bl Y2lmaWMgbmFtZSAkTElCUlBNIHdhcyByZXF1ZXN0ZWQgYnV0IGl0IGNvdWxkIG5vdCBiZSBvcGVu ZWQuIiAiJExJTkVOTyIgNQotICAgICBmaQotIAotLQotLQotLQotLQotLQotLQotLWlmIHRlc3Qg IngkYWNfY3ZfZW52X1BLR19DT05GSUdfc2V0IiAhPSAieHNldCI7IHRoZW4KLS0JaWYgdGVzdCAt biAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9m ICIke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5h bWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25maWc7IGFj X3dvcmQ9JDIKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk Li4uICIgPiY2OyB9Ci0taWYgdGVzdCAiJHthY19jdl9wYXRoX1BLR19DT05GSUcrc2V0fSIgPSBz ZXQ7IHRoZW4gOgotLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLS1lbHNlCi0tICBjYXNl ICRQS0dfQ09ORklHIGluCi0tICBbXFwvXSogfCA/OltcXC9dKikKLS0gIGFjX2N2X3BhdGhfUEtH X0NPTkZJRz0iJFBLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdp dGggYSBwYXRoLgotLSAgOzsKLS0gICopCi0tICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZT Ci0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgICBmb3IgYWNfZXhlY19leHQg aW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmIHsgdGVzdCAtZiAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcGF0aF9QS0dfQ09ORklHPSIkYXNf ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgotLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0g ICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tICBkb25lCi0tSUZTPSRhc19zYXZlX0lGUwotLQot LSAgOzsKLS1lc2FjCi0tZmkKLS1QS0dfQ09ORklHPSRhY19jdl9wYXRoX1BLR19DT05GSUcKLS1p ZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLS0gIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUEtHX0NPTkZJRyIgPiY1Ci0tJGFzX2VjaG8gIiRQ S0dfQ09ORklHIiA+JjY7IH0KLS1lbHNlCi0tICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotLSRhc19lY2hvICJubyIgPiY2OyB9Ci0tZmkK LS0KLS0KLS1maQotLWlmIHRlc3QgLXogIiRhY19jdl9wYXRoX1BLR19DT05GSUciOyB0aGVuCi0t ICBhY19wdF9QS0dfQ09ORklHPSRQS0dfQ09ORklHCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdv cmQgb2YgInBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz LgotLXNldCBkdW1teSBwa2ctY29uZmlnOyBhY193b3JkPSQyCi0teyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLSRhc19l Y2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotLWlmIHRlc3QgIiR7YWNf Y3ZfcGF0aF9hY19wdF9QS0dfQ09ORklHK3NldH0iID0gc2V0OyB0aGVuIDoKLS0gICRhc19lY2hv X24gIihjYWNoZWQpICIgPiY2Ci0tZWxzZQotLSAgY2FzZSAkYWNfcHRfUEtHX0NPTkZJRyBpbgot LSAgW1xcL10qIHwgPzpbXFwvXSopCi0tICBhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRh Y19wdF9QS0dfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEg cGF0aC4KLS0gIDs7Ci0tICAqKQotLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFS QVRPUgotLWZvciBhc19kaXIgaW4gJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAg dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiB7IHRlc3QgLWYgIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLS0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0t ICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLSAgZG9uZQotLUlGUz0kYXNfc2F2ZV9JRlMKLS0K LS0gIDs7Ci0tZXNhYwotLWZpCi0tYWNfcHRfUEtHX0NPTkZJRz0kYWNfY3ZfcGF0aF9hY19wdF9Q S0dfQ09ORklHCi0taWYgdGVzdCAtbiAiJGFjX3B0X1BLR19DT05GSUciOyB0aGVuCi0tICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X1BLR19D T05GSUciID4mNQotLSRhc19lY2hvICIkYWNfcHRfUEtHX0NPTkZJRyIgPiY2OyB9Ci0tZWxzZQot LSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+ JjUKLS0kYXNfZWNobyAibm8iID4mNjsgfQotLWZpCi0tCi0tICBpZiB0ZXN0ICJ4JGFjX3B0X1BL R19DT05GSUciID0geDsgdGhlbgotLSAgICBQS0dfQ09ORklHPSIiCi0tICBlbHNlCi0tICAgIGNh c2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLS15ZXM6KQotLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9v bHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLS0kYXNfZWNobyAiJGFzX21l OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBs ZXQiID4mMjt9Ci0tYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0tZXNhYwotLSAgICBQS0dfQ09ORklH PSRhY19wdF9QS0dfQ09ORklHCi0tICBmaQotLWVsc2UKLS0gIFBLR19DT05GSUc9IiRhY19jdl9w YXRoX1BLR19DT05GSUciCi0tZmkKLS0KLS1maQotLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsg dGhlbgotLQlfcGtnX21pbl92ZXJzaW9uPTAuOS4wCi0tCXsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9u ICRfcGtnX21pbl92ZXJzaW9uIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBwa2ctY29uZmln IGlzIGF0IGxlYXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb24uLi4gIiA+JjY7IH0KLS0JaWYg JFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9u OyB0aGVuCi0tCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogeWVzIiA+JjUKLS0kYXNfZWNobyAieWVzIiA+JjY7IH0KLS0JZWxzZQotLQkJeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLS0kYXNfZWNo byAibm8iID4mNjsgfQotLQkJUEtHX0NPTkZJRz0iIgotLQlmaQotLWZpCi0tCi0gcGtnX2ZhaWxl ZD1ubwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yIFJQTSIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIFJQTS4uLiAiID4mNjsgfQot K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHJw bSIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHJwbS4uLiAiID4mNjsgfQotIAotIGlm IHRlc3QgLW4gIiRSUE1fQ0ZMQUdTIjsgdGhlbgotICAgICBwa2dfY3ZfUlBNX0NGTEFHUz0iJFJQ TV9DRkxBR1MiCi1AQCAtMTg0MzcsNiArMTgzMTQsMzAgQEAgZmkKLSAgICAgcGtnX2ZhaWxlZD11 bnRyaWVkCi0gZmkKLSAKLStpZiB0ZXN0ICRwa2dfZmFpbGVkID0gbm87IHRoZW4KLSsgIHBrZ19z YXZlX0xERkxBR1M9IiRMREZMQUdTIgotKyAgTERGTEFHUz0iJExERkxBR1MgJHBrZ19jdl9SUE1f TElCUyIKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsv KiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsg IHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsg dGhlbiA6Ci0rCi0rZWxzZQotKyAgcGtnX2ZhaWxlZD15ZXMKLStmaQotK3JtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQg Y29uZnRlc3QuJGFjX2V4dAotKyAgTERGTEFHUz0kcGtnX3NhdmVfTERGTEFHUwotK2ZpCi0rCi0g Ci0gCi0gaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotQEAgLTE4NTMxLDcgKzE4NDMy LDcgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSUJSUE0gMSIgPj5jb25mZGVmcy5oCi0gICAg ICAgTElCUz0iJExJQlMgJFJQTV9MSUJTIgotICAgICBlbHNlCi0gICAgICAgaWYgJFJQTV9SRVFV SVJFOyB0aGVuCi0tCWFzX2ZuX2Vycm9yICIkUlBNX1BLR19FUlJPUlMiICIkTElORU5PIiA1Ci0r CWFzX2ZuX2Vycm9yICQ/ICIkUlBNX1BLR19FUlJPUlMiICIkTElORU5PIiA1Ci0gICAgICAgZWxz ZQotIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRS UE1fUEtHX0VSUk9SUyIgPiY1Ci0gJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQTV9QS0df RVJST1JTIiA+JjI7fQotQEAgLTIxMTY0LDYgKzIxMDY1LDcgQEAgaWYgdGVzdCB4IiRwcmVmZXJf Y3Vyc2VzIiA9IHh5ZXM7IHRoZW4KK0BAIC0yMDY2Myw2ICsyMDY2Myw3IEBAIGlmIHRlc3QgeCIk cHJlZmVyX2N1cnNlcyIgPSB4eWVzOyB0aGVuCiAgICAjIHNlYXJjaCAvdXNyL2xvY2FsL2luY2x1 ZGUsIGlmIG5jdXJzZXMgaXMgaW5zdGFsbGVkIGluIC91c3IvbG9jYWwuICBBCiAgICAjIGRlZmF1 bHQgaW5zdGFsbGF0aW9uIG9mIG5jdXJzZXMgb24gYWxwaGEqLWRlYy1vc2YqIHdpbGwgbGVhZCB0 byBzdWNoCiAgICAjIGEgc2l0dWF0aW9uLgpAQCAtMjgyLDcgKzIwLDcgQEAgZGlmZiAtLWdpdCBh L2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgd2FkZHN0 ciIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyB3YWRk c3RyLi4uICIgPiY2OyB9CiAgaWYgJHthY19jdl9zZWFyY2hfd2FkZHN0cis6fSBmYWxzZTsgdGhl biA6Ci1AQCAtMjExODgsNyArMjEwOTAsNyBAQCByZXR1cm4gd2FkZHN0ciAoKTsKK0BAIC0yMDY4 Nyw3ICsyMDY4OCw3IEBAIHJldHVybiB3YWRkc3RyICgpOwogICAgcmV0dXJuIDA7CiAgfQogIF9B Q0VPRgpAQCAtMjkxLDcgKzI5LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIv Y29uZmlndXJlCiAgICBpZiB0ZXN0IC16ICIkYWNfbGliIjsgdGhlbgogICAgICBhY19yZXM9Im5v bmUgcmVxdWlyZWQiCiAgICBlbHNlCi1AQCAtMjEyNjAsNiArMjExNjIsNyBAQCBjYXNlICRob3N0 X29zIGluCitAQCAtMjA3NTksNiArMjA3NjAsNyBAQCBjYXNlICRob3N0X29zIGluCiAgZXNhYwog IAogICMgVGhlc2UgYXJlIHRoZSBsaWJyYXJpZXMgY2hlY2tlZCBieSBSZWFkbGluZS4KQEAgLTI5 OSw3ICszNyw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQog IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxp YnJhcnkgY29udGFpbmluZyB0Z2V0ZW50IiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3Ig bGlicmFyeSBjb250YWluaW5nIHRnZXRlbnQuLi4gIiA+JjY7IH0KICBpZiAke2FjX2N2X3NlYXJj aF90Z2V0ZW50Kzp9IGZhbHNlOyB0aGVuIDoKLUBAIC0yMTI4NCw3ICsyMTE4Nyw3IEBAIHJldHVy biB0Z2V0ZW50ICgpOworQEAgLTIwNzgzLDcgKzIwNzg1LDcgQEAgcmV0dXJuIHRnZXRlbnQgKCk7 CiAgICByZXR1cm4gMDsKICB9CiAgX0FDRU9GCkBAIC0zMTEsNyArNDksNyBAQCBkaWZmIC0tZ2l0 IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKIGRpZmYgLS1naXQgYS9nZGIvY29uZmln dXJlLmFjIGIvZ2RiL2NvbmZpZ3VyZS5hYwogLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwogKysrIGIv Z2RiL2NvbmZpZ3VyZS5hYwotQEAgLTc0OSw3ICs3NDksOCBAQCBpZiB0ZXN0IHgiJHByZWZlcl9j dXJzZXMiID0geHllczsgdGhlbgorQEAgLTU1NSw3ICs1NTUsOCBAQCBpZiB0ZXN0IHgiJHByZWZl cl9jdXJzZXMiID0geHllczsgdGhlbgogICAgIyBzZWFyY2ggL3Vzci9sb2NhbC9pbmNsdWRlLCBp ZiBuY3Vyc2VzIGlzIGluc3RhbGxlZCBpbiAvdXNyL2xvY2FsLiAgQQogICAgIyBkZWZhdWx0IGlu c3RhbGxhdGlvbiBvZiBuY3Vyc2VzIG9uIGFscGhhKi1kZWMtb3NmKiB3aWxsIGxlYWQgdG8gc3Vj aAogICAgIyBhIHNpdHVhdGlvbi4KQEAgLTMyMSw3ICs1OSw3IEBAIGRpZmYgLS1naXQgYS9nZGIv Y29uZmlndXJlLmFjIGIvZ2RiL2NvbmZpZ3VyZS5hYwogICAgICAgICAgICAgICAgICAgW2N1cnNl c19mb3VuZD15ZXMKICAgICAgICAgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfTElCQ1VSU0VT XSwgWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgY3Vy c2VzIGlzIGVuYWJsZWQuXSkKLUBAIC03ODksNyArNzkwLDggQEAgY2FzZSAkaG9zdF9vcyBpbgor QEAgLTU5NSw3ICs1OTYsOCBAQCBjYXNlICRob3N0X29zIGluCiAgZXNhYwogIAogICMgVGhlc2Ug YXJlIHRoZSBsaWJyYXJpZXMgY2hlY2tlZCBieSBSZWFkbGluZS4KCmRpZmYgLS1naXQgYS9nZGIt Z2xpYmMtc3Ryc3RyLXdvcmthcm91bmQucGF0Y2ggYi9nZGItZ2xpYmMtc3Ryc3RyLXdvcmthcm91 bmQucGF0Y2gKaW5kZXggZGE5YzVkZS4uYWQwYmQwZiAxMDA2NDQKLS0tIGEvZ2RiLWdsaWJjLXN0 cnN0ci13b3JrYXJvdW5kLnBhdGNoCisrKyBiL2dkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5w YXRjaApAQCAtMTAsNyArMTAsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nbnUtaWZ1bmMtc3Ryc3RyLXdvcmthcm91bmQuZXhwIGIvZ2RiL3Rlc3RzdQogbmV3IGZpbGUg bW9kZSAxMDA2NDQKIC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z251LWlmdW5jLXN0cnN0ci13b3JrYXJvdW5kLmV4cAotQEAgLTAsMCArMSwxMTkgQEAKK0BAIC0w LDAgKzEsMTE3IEBACiArIyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMzAsOSArMzAsNyBAQCBuZXcgZmlsZSBt b2RlIDEwMDY0NAogKyMgaW52YWxpZCBJRlVOQyBEV19BVF9saW5rYWdlX25hbWU6IG1lbW1vdmUg c3Ryc3RyIHRpbWUKICsjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5j Z2k/aWQ9MTQxNjYKICsKLStpZiB7W3NraXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIHJldHVybiAw Ci0rfQorK3JlcXVpcmUgYWxsb3dfc2hsaWJfdGVzdHMKICsKICtzZXQgdGVzdGZpbGUgImdudS1p ZnVuYy1zdHJzdHItd29ya2Fyb3VuZCIKICtzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQoKZGlm ZiAtLWdpdCBhL2dkYi1oYW5kbGUtbm8tcHl0aG9uLWdkYi1tb2R1bGUucGF0Y2ggYi9nZGItaGFu ZGxlLW5vLXB5dGhvbi1nZGItbW9kdWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjIxOTY2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItaGFuZGxlLW5vLXB5dGhv bi1nZGItbW9kdWxlLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUb20gVHJvbWV5IDx0cm9tZXlAYWRhY29y ZS5jb20+CitEYXRlOiBXZWQsIDE1IE5vdiAyMDIzIDA2OjQ4OjU1IC0wNzAwCitTdWJqZWN0OiBn ZGItaGFuZGxlLW5vLXB5dGhvbi1nZGItbW9kdWxlLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3Ry ZWFtIGNvbW1pdCA3ZDIxNjAwYjMxZmUuCisKK0NoZWNrIGdkYl9weXRob25fbW9kdWxlIGluIGdk YnB5X2hhbmRsZV9taXNzaW5nX2RlYnVnaW5mbworCitJZiB5b3UgcnVuIGdkYiBpbiB0aGUgYnVp bGQgdHJlZSB3aXRob3V0IC0tZGF0YS1kaXJlY3RvcnksIG9uIGEKK3Byb2dyYW0gdGhhdCBkb2Vz IG5vdCBoYXZlIGRlYnVnIGluZm8sIGl0IHdpbGwgY3Jhc2gsIGJlY2F1c2UKK2dkYnB5X2hhbmRs ZV9taXNzaW5nX2RlYnVnaW5mbyB1bmNvbmRpdGlvbmFsbHkgdXNlcyBnZGJfcHl0aG9uX21vZHVs ZS4KKworT3RoZXIgY29kZSBpbiBnZGIgdXNpbmcgZ2RiX3B5dGhvbl9tb2R1bGUgY2hlY2tzIGl0 IGZpcnN0IGFuZCBpdAorc2VlbWVzIGhhcm1sZXNzIHRvIGRvIHRoZSBzYW1lIHRoaW5nIGhlcmUu ICAoZ2RiX3B5dGhvbl9pbml0aWFsaXplZAorZG9lcyBub3QgY292ZXIgdGhpcyBjYXNlIHNvIHRo YXQgcHl0aG9uIGNhbiBiZSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQKK2FuZCBzdGlsbCBzb21ld2hh dCB3b3JrLikKKworZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIvcHl0aG9u L3B5dGhvbi5jCistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5jCitAQCAtMTY3Niw3ICsxNjc2LDcgQEAgZ2RicHlfaGFuZGxlX21pc3NpbmdfZGVidWdp bmZvIChjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKmV4dGxhbmcsCisgCQkJ CXN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKyAgIC8qIEVhcmx5IGV4aXQgaWYgUHl0aG9u IGlzIG5vdCBpbml0aWFsaXNlZC4gICovCistICBpZiAoIWdkYl9weXRob25faW5pdGlhbGl6ZWQp CisrICBpZiAoIWdkYl9weXRob25faW5pdGlhbGl6ZWQgfHwgZ2RiX3B5dGhvbl9tb2R1bGUgPT0g bnVsbHB0cikKKyAgICAgcmV0dXJuIHt9OworIAorICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSBvYmpmaWxlLT5hcmNoICgpOwoKZGlmZiAtLWdpdCBhL2dkYi1tZXJnZS1kZWJ1Zy1zeW1ib2wt bG9va3VwLnBhdGNoIGIvZ2RiLW1lcmdlLWRlYnVnLXN5bWJvbC1sb29rdXAucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTliNTA1OAotLS0gL2Rldi9udWxsCisrKyBi L2dkYi1tZXJnZS1kZWJ1Zy1zeW1ib2wtbG9va3VwLnBhdGNoCkBAIC0wLDAgKzEsMjY1IEBACitG cm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV3 IEJ1cmdlc3MgPGFidXJnZXNzQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDEzIE9jdCAyMDIzIDA5 OjUwOjMzICswMTAwCitTdWJqZWN0OiBnZGItbWVyZ2UtZGVidWctc3ltYm9sLWxvb2t1cC5wYXRj aAorCis7OyBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgMjc4MDdkYTU4NDkuCisKK2dkYjogbWVy Z2UgZGVidWcgc3ltYm9sIGZpbGUgbG9va3VwIGNvZGUgZnJvbSBjb2ZmcmVhZCAmIGVsZnJlYWQg cGF0aHMKKworVGhpcyBjb21taXQgbWVyZ2VzIHRoZSBjb2RlIHRoYXQgbG9va3MgZm9yIGFuZCBs b2FkcyB0aGUgc2VwYXJhdGUKK2RlYnVnIHN5bWJvbCBmaWxlcyBmcm9tIGNvZmZyZWFkLmMgYW5k IGVsZnJlYWQuYy4gIFRoZSBmYWN0b3JlZCBvdXQKK2NvZGUgaXMgbW92ZWQgaW50byBhIG5ldyBv YmpmaWxlOjpmaW5kX2FuZF9hZGRfc2VwYXJhdGVfc3ltYm9sX2ZpbGUoKQorbWV0aG9kLgorCitG b3IgdGhlIGVsZnJlYWQuYyBwYXRoIHRoZXJlIHNob3VsZCBiZSBubyB1c2VyIHZpc2libGUgY2hh bmdlcyBhZnRlcgordGhpcyBjb21taXQuCisKK0ZvciB0aGUgY29mZnJlYWQuYyBwYXRoIEdEQiB3 aWxsIG5vdyBhdHRlbXB0IHRvIHBlcmZvcm0gYSBkZWJ1Z2luZm9kCitsb29rdXAgZm9yIHRoZSBt aXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uLCBhc3N1bWluZyB0aGF0IEdEQiBjYW4gZmluZCBhCiti dWlsZC1pZCBpbiB0aGUgQ09GRiBmaWxlLgorCitJIGRvbid0IGtub3cgaWYgQ09GRiBmaWxlcyBj YW4gaW5jbHVkZSBhIGJ1aWxkLWlkLCBidXQgSSB0aGUgZXhpc3RpbmcKK2NvZmZyZWFkLmMgY29k ZSBhbHJlYWR5IGluY2x1ZGVzIGEgY2FsbCB0bworZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5 X2J1aWxkLWlkLCBzbyBJIGtub3cgdGhhdCBpdCBpcyBhdCBsZWFzdCBPSworZm9yIEdEQiB0byBh c2sgYSBDT0ZGIGZpbGUgZm9yIGEgYnVpbGQtaWQuICBJZiB0aGUgQ09GRiBmaWxlIGRvZXNuJ3QK K2luY2x1ZGUgYSBidWlsZC1pZCB0aGVuIHRoZSBkZWJ1Z2luZm9kIGxvb2t1cCBjb2RlIHdpbGwg bm90IHRyaWdnZXIKK2FuZCB0aGUgbmV3IGNvZGUgaXMgaGFybWxlc3MuCisKK0lmIHRoZSBDT0ZG IGZpbGUgZG9lcyBpbmNsdWRlIGEgYnVpbGQtaWQsIHRoZW4gd2UncmUgZ29pbmcgdG8gZW5kIHVw Cithc2tpbmcgZGVidWdpbmZvZCBmb3IgdGhlIGRlYnVnIGZpbGUuICBBcyBidWlsZC1pZHMgc2hv dWxkIGJlIHVuaXF1ZSwKK3RoaXMgc2hvdWxkIGJlIGhhcm1sZXNzLCBldmVuIGlmIGRlYnVnaW5m b2QgZG9lc24ndCBjb250YWluIGFueQorc3VpdGFibGUgZGVidWcgZGF0YSwgaXQganVzdCBjb3N0 cyB1cyBvbmUgZGVidWdpbmZvZCBsb29rdXAsIHNvIEknbQorbm90IHRvbyB3b3JyaWVkIGFib3V0 IHRoaXMgZm9yIG5vdy4KKworQXMgd2l0aCB0aGUgcHJldmlvdXMgY29tbWl0LCBJJ3ZlIGRvbmUg c29tZSBtaW5pbWFsIHRlc3RpbmcgdXNpbmcgdGhlCittaW5ndyB0b29sY2hhaW4gb24gYSBMaW51 eCBtYWNoaW5lLCBHREIgc2VlbXMgdG8gc3RpbGwgYWNjZXNzIHRoZQorc3BsaXQgZGVidWcgaW5m b3JtYXRpb24ganVzdCBmaW5lLgorCitBcHByb3ZlZC1CeTogVG9tIFRyb21leSA8dG9tQHRyb21l eS5jb20+CisKK2RpZmYgLS1naXQgYS9nZGIvY29mZnJlYWQuYyBiL2dkYi9jb2ZmcmVhZC5jCist LS0gYS9nZGIvY29mZnJlYWQuYworKysrIGIvZ2RiL2NvZmZyZWFkLmMKK0BAIC00MCw4ICs0MCw2 IEBACisgCisgI2luY2x1ZGUgImNvZmYtcGUtcmVhZC5oIgorIAorLSNpbmNsdWRlICJidWlsZC1p ZC5oIgorLQorIC8qIFRoZSBvYmpmaWxlIHdlIGFyZSBjdXJyZW50bHkgcmVhZGluZy4gICovCisg Cisgc3RhdGljIHN0cnVjdCBvYmpmaWxlICpjb2ZmcmVhZF9vYmpmaWxlOworQEAgLTcyOSwyNiAr NzI3LDggQEAgY29mZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzeW1m aWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorIAkgICAmJiBvYmpmaWxlLT5zZXBhcmF0ZV9k ZWJ1Z19vYmpmaWxlID09IE5VTEwKKyAJICAgJiYgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2Jq ZmlsZV9iYWNrbGluayA9PSBOVUxMKQorICAgICB7CistICAgICAgZGVmZXJyZWRfd2FybmluZ3Mg d2FybmluZ3M7CistICAgICAgc3RkOjpzdHJpbmcgZGVidWdmaWxlCistCT0gZmluZF9zZXBhcmF0 ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsICZ3YXJuaW5ncyk7CistCistICAgICAg aWYgKGRlYnVnZmlsZS5lbXB0eSAoKSkKKy0JZGVidWdmaWxlCistCSAgPSBmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rIChvYmpmaWxlLCAmd2FybmluZ3MpOworLQorLSAgICAg IGlmICghZGVidWdmaWxlLmVtcHR5ICgpKQorLQl7CistCSAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVn X2JmZCAoc3ltZmlsZV9iZmRfb3BlbiAoZGVidWdmaWxlLmNfc3RyICgpKSk7CistCistCSAgc3lt Ym9sX2ZpbGVfYWRkX3NlcGFyYXRlIChkZWJ1Z19iZmQsIGRlYnVnZmlsZS5jX3N0ciAoKSwKKy0J CQkJICAgIHN5bWZpbGVfZmxhZ3MsIG9iamZpbGUpOworLQl9CistICAgICAgLyogSWYgYWxsIHRo ZSBtZXRob2RzIHRvIGNvbGxlY3QgdGhlIGRlYnVnaW5mbyBmYWlsZWQsIHByaW50IGFueQorLQkg d2FybmluZ3MgdGhhdCB3ZXJlIGNvbGxlY3RlZCwgdGhpcyBpcyBhIG5vLW9wIGlmIHRoZXJlIGFy ZSBubworLQkgd2FybmluZ3MuICAqLworLSAgICAgIGlmIChkZWJ1Z2ZpbGUuZW1wdHkgKCkpCist CXdhcm5pbmdzLmVtaXQgKCk7CisrICAgICAgaWYgKG9iamZpbGUtPmZpbmRfYW5kX2FkZF9zZXBh cmF0ZV9zeW1ib2xfZmlsZSAoc3ltZmlsZV9mbGFncykpCisrCWdkYl9hc3NlcnQgKG9iamZpbGUt PnNlcGFyYXRlX2RlYnVnX29iamZpbGUgIT0gbnVsbHB0cik7CisgICAgIH0KKyB9CisgCitkaWZm IC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKKy0tLSBhL2dkYi9lbGZyZWFk LmMKKysrKyBiL2dkYi9lbGZyZWFkLmMKK0BAIC00MSwxNCArNDEsMTIgQEAKKyAjaW5jbHVkZSAi cmVnY2FjaGUuaCIKKyAjaW5jbHVkZSAiYmNhY2hlLmgiCisgI2luY2x1ZGUgImdkYl9iZmQuaCIK Ky0jaW5jbHVkZSAiYnVpbGQtaWQuaCIKKyAjaW5jbHVkZSAibG9jYXRpb24uaCIKKyAjaW5jbHVk ZSAiYXV4di5oIgorICNpbmNsdWRlICJtZGVidWdyZWFkLmgiCisgI2luY2x1ZGUgImN0ZnJlYWQu aCIKKyAjaW5jbHVkZSAiZ2Ric3VwcG9ydC9nZGJfc3RyaW5nX3ZpZXcuaCIKKyAjaW5jbHVkZSAi Z2Ric3VwcG9ydC9zY29wZWRfZmQuaCIKKy0jaW5jbHVkZSAiZGVidWdpbmZvZC1zdXBwb3J0Lmgi CisgI2luY2x1ZGUgImR3YXJmMi9wdWJsaWMuaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgi CisgCitAQCAtMTIxOCw1OSArMTIxNiwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkX2R3YXJmMiAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCisgCSAgICYmIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29i amZpbGUgPT0gTlVMTAorIAkgICAmJiBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2Jh Y2tsaW5rID09IE5VTEwpCisgICAgIHsKKy0gICAgICBkZWZlcnJlZF93YXJuaW5ncyB3YXJuaW5n czsKKy0KKy0gICAgICBzdGQ6OnN0cmluZyBkZWJ1Z2ZpbGUKKy0JPSBmaW5kX3NlcGFyYXRlX2Rl YnVnX2ZpbGVfYnlfYnVpbGRpZCAob2JqZmlsZSwgJndhcm5pbmdzKTsKKy0KKy0gICAgICBpZiAo ZGVidWdmaWxlLmVtcHR5ICgpKQorLQlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGVfYnlfZGVidWdsaW5rIChvYmpmaWxlLCAmd2FybmluZ3MpOworLQorLSAgICAgIGlmICghZGVi dWdmaWxlLmVtcHR5ICgpKQorLQl7CistCSAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVnX2JmZAorLQkg ICAgKHN5bWZpbGVfYmZkX29wZW5fbm9fZXJyb3IgKGRlYnVnZmlsZS5jX3N0ciAoKSkpOworLQor LQkgIGlmIChkZWJ1Z19iZmQgIT0gbnVsbHB0cikKKy0JICAgIHN5bWJvbF9maWxlX2FkZF9zZXBh cmF0ZSAoZGVidWdfYmZkLCBkZWJ1Z2ZpbGUuY19zdHIgKCksCistCQkJCSAgICAgIHN5bWZpbGVf ZmxhZ3MsIG9iamZpbGUpOworLQl9CisrICAgICAgaWYgKG9iamZpbGUtPmZpbmRfYW5kX2FkZF9z ZXBhcmF0ZV9zeW1ib2xfZmlsZSAoc3ltZmlsZV9mbGFncykpCisrCWdkYl9hc3NlcnQgKG9iamZp bGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgIT0gbnVsbHB0cik7CisgICAgICAgZWxzZQorLQl7 CistCSAgaGFzX2R3YXJmMiA9IGZhbHNlOworLQkgIGNvbnN0IHN0cnVjdCBiZmRfYnVpbGRfaWQg KmJ1aWxkX2lkCistCSAgICA9IGJ1aWxkX2lkX2JmZF9nZXQgKG9iamZpbGUtPm9iZmQuZ2V0ICgp KTsKKy0JICBjb25zdCBjaGFyICpmaWxlbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKG9iamZpbGUt Pm9iZmQuZ2V0ICgpKTsKKy0KKy0JICBpZiAoYnVpbGRfaWQgIT0gbnVsbHB0cikKKy0JICAgIHsK Ky0JICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gc3ltZmlsZV9wYXRoOworLQkg ICAgICBzY29wZWRfZmQgZmQgKGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5IChidWlsZF9pZC0+ ZGF0YSwKKy0JCQkJCQkJYnVpbGRfaWQtPnNpemUsCistCQkJCQkJCWZpbGVuYW1lLAorLQkJCQkJ CQkmc3ltZmlsZV9wYXRoKSk7CistCistCSAgICAgIGlmIChmZC5nZXQgKCkgPj0gMCkKKy0JCXsK Ky0JCSAgLyogRmlsZSBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGZyb20gc2VydmVyLiAgKi8KKy0J CSAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVnX2JmZAorLQkJICAgIChzeW1maWxlX2JmZF9vcGVuX25v X2Vycm9yIChzeW1maWxlX3BhdGguZ2V0ICgpKSk7CistCistCQkgIGlmIChkZWJ1Z19iZmQgIT0g bnVsbHB0cgorLQkJICAgICAgJiYgYnVpbGRfaWRfdmVyaWZ5IChkZWJ1Z19iZmQuZ2V0ICgpLCBi dWlsZF9pZC0+c2l6ZSwKKy0JCQkJCSAgYnVpbGRfaWQtPmRhdGEpKQorLQkJICAgIHsKKy0JCSAg ICAgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoZGVidWdfYmZkLCBzeW1maWxlX3BhdGguZ2V0 ICgpLAorLQkJCQkJCXN5bWZpbGVfZmxhZ3MsIG9iamZpbGUpOworLQkJICAgICAgaGFzX2R3YXJm MiA9IHRydWU7CistCQkgICAgfQorLQkJfQorLQkgICAgfQorLQl9CistICAgICAgLyogSWYgYWxs IHRoZSBtZXRob2RzIHRvIGNvbGxlY3QgdGhlIGRlYnVnaW5mbyBmYWlsZWQsIHByaW50IHRoZQor LQkgd2FybmluZ3MsIHRoaXMgaXMgYSBuby1vcCBpZiB0aGVyZSBhcmUgbm8gd2FybmluZ3MuICAq LworLSAgICAgIGlmIChkZWJ1Z2ZpbGUuZW1wdHkgKCkgJiYgIWhhc19kd2FyZjIpCistCXdhcm5p bmdzLmVtaXQgKCk7CisrCWhhc19kd2FyZjIgPSBmYWxzZTsKKyAgICAgfQorIAorICAgcmV0dXJu IGhhc19kd2FyZjI7CitkaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmggYi9nZGIvb2JqZmlsZXMu aAorLS0tIGEvZ2RiL29iamZpbGVzLmgKKysrKyBiL2dkYi9vYmpmaWxlcy5oCitAQCAtNTEzLDYg KzUxMywxNiBAQCBzdHJ1Y3Qgb2JqZmlsZQorIAorICAgYm9vbCBoYXNfcGFydGlhbF9zeW1ib2xz ICgpOworIAorKyAgLyogTG9vayBmb3IgYSBzZXBhcmF0ZSBkZWJ1ZyBzeW1ib2wgZmlsZSBmb3Ig dGhpcyBvYmpmaWxlLCBtYWtlIHVzZSBvZgorKyAgICAgYnVpbGQtaWQsIGRlYnVnLWxpbmssIGFu ZCBkZWJ1Z2luZm9kIGFzIG5lY2Vzc2FyeS4gIElmIGEgc3VpdGFibGUKKysgICAgIHNlcGFyYXRl IGRlYnVnIHN5bWJvbCBmaWxlIGlzIGZvdW5kIHRoZW4gaXQgaXMgbG9hZGVkIHVzaW5nIGEgY2Fs bCB0bworKyAgICAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChTWU1GSUxFX0ZMQUdTIGlzIHBh c3NlZCB0aHJvdWdoIHVubW9kaWZpZWQKKysgICAgIHRvIHRoaXMgY2FsbCkgYW5kIHRoaXMgZnVu Y3Rpb24gcmV0dXJucyB0cnVlLiAgSWYgbm8gc3VpdGFibGUgc2VwYXJhdGUKKysgICAgIGRlYnVn IHN5bWJvbCBmaWxlIGlzIGZvdW5kIGFuZCBsb2FkZWQgdGhlbiB0aGlzIGZ1bmN0aW9uIHJldHVy bnMKKysgICAgIGZhbHNlLiAgKi8KKysKKysgIGJvb2wgZmluZF9hbmRfYWRkX3NlcGFyYXRlX3N5 bWJvbF9maWxlIChzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKTsKKysKKyAgIC8qIFJl dHVybiB0cnVlIGlmIHRoaXMgb2JqZmlsZSBoYXMgYW55IHVuZXhwYW5kZWQgc3ltYm9scy4gIEEg cmV0dXJuCisgICAgICB2YWx1ZSBvZiBmYWxzZSBpbmRpY2F0ZXMgZWl0aGVyLCB0aGF0IHRoaXMg b2JqZmlsZSBoYXMgYWxsIGl0cworICAgICAgc3ltYm9scyBmdWxseSBleHBhbmRlZCAoaS5lLiBm dWxseSByZWFkIGluKSwgb3IgdGhhdCB0aGlzIG9iamZpbGUgaGFzCitkaWZmIC0tZ2l0IGEvZ2Ri L3N5bWZpbGUtZGVidWcuYyBiL2dkYi9zeW1maWxlLWRlYnVnLmMKKy0tLSBhL2dkYi9zeW1maWxl LWRlYnVnLmMKKysrKyBiL2dkYi9zeW1maWxlLWRlYnVnLmMKK0BAIC0zNSw2ICszNSw4IEBACisg I2luY2x1ZGUgImJsb2NrLmgiCisgI2luY2x1ZGUgImZpbGVuYW1lcy5oIgorICNpbmNsdWRlICJj bGkvY2xpLXN0eWxlLmgiCisrI2luY2x1ZGUgImJ1aWxkLWlkLmgiCisrI2luY2x1ZGUgImRlYnVn aW5mb2Qtc3VwcG9ydC5oIgorIAorIC8qIFdlIG5lZWQgdG8gc2F2ZSBhIHBvaW50ZXIgdG8gdGhl IHJlYWwgc3ltYm9sIGZ1bmN0aW9ucy4KKyAgICBQbHVzLCB0aGUgZGVidWcgdmVyc2lvbnMgYXJl IG1hbGxvYydkIGJlY2F1c2Ugd2UgaGF2ZSB0byBOVUxMIG91dCB0aGUKK0BAIC01NTgsNiArNTYw LDcwIEBAIG9iamZpbGU6OnJlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChib29sIHZlcmJvc2UpCisg ICAgIH0KKyB9CisgCisrLyogU2VlIG9iamZpbGVzLmguICAqLworKworK2Jvb2wKKytvYmpmaWxl OjpmaW5kX2FuZF9hZGRfc2VwYXJhdGVfc3ltYm9sX2ZpbGUgKHN5bWZpbGVfYWRkX2ZsYWdzIHN5 bWZpbGVfZmxhZ3MpCisreworKyAgYm9vbCBoYXNfZHdhcmYyID0gdHJ1ZTsKKysKKysgIGRlZmVy cmVkX3dhcm5pbmdzIHdhcm5pbmdzOworKworKyAgc3RkOjpzdHJpbmcgZGVidWdmaWxlCisrICAg ID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHRoaXMsICZ3YXJuaW5ncyk7 CisrCisrICBpZiAoZGVidWdmaWxlLmVtcHR5ICgpKQorKyAgICBkZWJ1Z2ZpbGUgPSBmaW5kX3Nl cGFyYXRlX2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rICh0aGlzLCAmd2FybmluZ3MpOworKworKyAg aWYgKCFkZWJ1Z2ZpbGUuZW1wdHkgKCkpCisrICAgIHsKKysgICAgICBnZGJfYmZkX3JlZl9wdHIg ZGVidWdfYmZkCisrCShzeW1maWxlX2JmZF9vcGVuX25vX2Vycm9yIChkZWJ1Z2ZpbGUuY19zdHIg KCkpKTsKKysKKysgICAgICBpZiAoZGVidWdfYmZkICE9IG51bGxwdHIpCisrCXN5bWJvbF9maWxl X2FkZF9zZXBhcmF0ZSAoZGVidWdfYmZkLCBkZWJ1Z2ZpbGUuY19zdHIgKCksCisrCQkJCSAgc3lt ZmlsZV9mbGFncywgdGhpcyk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIGhhc19k d2FyZjIgPSBmYWxzZTsKKysgICAgICBjb25zdCBzdHJ1Y3QgYmZkX2J1aWxkX2lkICpidWlsZF9p ZAorKwk9IGJ1aWxkX2lkX2JmZF9nZXQgKHRoaXMtPm9iZmQuZ2V0ICgpKTsKKysgICAgICBjb25z dCBjaGFyICpmaWxlbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKHRoaXMtPm9iZmQuZ2V0ICgpKTsK KysKKysgICAgICBpZiAoYnVpbGRfaWQgIT0gbnVsbHB0cikKKysJeworKwkgIGdkYjo6dW5pcXVl X3htYWxsb2NfcHRyPGNoYXI+IHN5bWZpbGVfcGF0aDsKKysJICBzY29wZWRfZmQgZmQgKGRlYnVn aW5mb2RfZGVidWdpbmZvX3F1ZXJ5IChidWlsZF9pZC0+ZGF0YSwKKysJCQkJCQkgICAgYnVpbGRf aWQtPnNpemUsCisrCQkJCQkJICAgIGZpbGVuYW1lLAorKwkJCQkJCSAgICAmc3ltZmlsZV9wYXRo KSk7CisrCisrCSAgaWYgKGZkLmdldCAoKSA+PSAwKQorKwkgICAgeworKwkgICAgICAvKiBGaWxl IHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgZnJvbSBzZXJ2ZXIuICAqLworKwkgICAgICBnZGJfYmZk X3JlZl9wdHIgZGVidWdfYmZkCisrCQkoc3ltZmlsZV9iZmRfb3Blbl9ub19lcnJvciAoc3ltZmls ZV9wYXRoLmdldCAoKSkpOworKworKwkgICAgICBpZiAoZGVidWdfYmZkICE9IG51bGxwdHIKKysJ CSAgJiYgYnVpbGRfaWRfdmVyaWZ5IChkZWJ1Z19iZmQuZ2V0ICgpLCBidWlsZF9pZC0+c2l6ZSwK KysJCQkJICAgICAgYnVpbGRfaWQtPmRhdGEpKQorKwkJeworKwkJICBzeW1ib2xfZmlsZV9hZGRf c2VwYXJhdGUgKGRlYnVnX2JmZCwgc3ltZmlsZV9wYXRoLmdldCAoKSwKKysJCQkJCSAgICBzeW1m aWxlX2ZsYWdzLCB0aGlzKTsKKysJCSAgaGFzX2R3YXJmMiA9IHRydWU7CisrCQl9CisrCSAgICB9 CisrCX0KKysgICAgfQorKyAgLyogSWYgYWxsIHRoZSBtZXRob2RzIHRvIGNvbGxlY3QgdGhlIGRl YnVnaW5mbyBmYWlsZWQsIHByaW50IHRoZQorKyAgICAgd2FybmluZ3MsIHRoaXMgaXMgYSBuby1v cCBpZiB0aGVyZSBhcmUgbm8gd2FybmluZ3MuICAqLworKyAgaWYgKGRlYnVnZmlsZS5lbXB0eSAo KSAmJiAhaGFzX2R3YXJmMikKKysgICAgd2FybmluZ3MuZW1pdCAoKTsKKysKKysgIHJldHVybiBo YXNfZHdhcmYyOworK30KKysKKyAMCisgLyogRGVidWdnaW5nIHZlcnNpb24gb2Ygc3RydWN0IHN5 bV9wcm9iZV9mbnMuICAqLworIAoKZGlmZiAtLWdpdCBhL2dkYi1yZWZhY3Rvci1maW5kLWFuZC1h ZGQtc2VwYXJhdGUtc3ltYm9sLWZpbGUucGF0Y2ggYi9nZGItcmVmYWN0b3ItZmluZC1hbmQtYWRk LXNlcGFyYXRlLXN5bWJvbC1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjgzY2VhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcmVmYWN0b3ItZmluZC1hbmQt YWRkLXNlcGFyYXRlLXN5bWJvbC1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMTkwIEBACitGcm9tIEZF RE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV3IEJ1cmdl c3MgPGFidXJnZXNzQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDEzIE9jdCAyMDIzIDE2OjE3OjIw ICswMTAwCitTdWJqZWN0OiBnZGItcmVmYWN0b3ItZmluZC1hbmQtYWRkLXNlcGFyYXRlLXN5bWJv bC1maWxlLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCA2MjM0YmExNzU5OC4K KworZ2RiOiByZWZhY3RvciBvYmpmaWxlOjpmaW5kX2FuZF9hZGRfc2VwYXJhdGVfc3ltYm9sX2Zp bGUKKworVGhpcyBpcyBwdXJlbHkgYSByZWZhY3RvcmluZyBjb21taXQuCisKK1RoaXMgY29tbWl0 IHNwbGl0cyBvYmpmaWxlOjpmaW5kX2FuZF9hZGRfc2VwYXJhdGVfc3ltYm9sX2ZpbGUgaW50bwor c29tZSBzZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb25zLiAgTXkgaG9wZSBpcyB0aGF0IHRoZSBzdGVw cyBmb3IgbG9va2luZwordXAgc2VwYXJhdGUgZGVidWcgaW5mb3JtYXRpb24gYXJlIG5vdyBjbGVh cmVyLgorCitJbiBhIGxhdGVyIGNvbW1pdCBJJ20gZ29pbmcgdG8gZXh0ZW5kCitvYmpmaWxlOjpm aW5kX2FuZF9hZGRfc2VwYXJhdGVfc3ltYm9sX2ZpbGUsIHdpdGggc29tZSBhZGRpdGlvbmFsCits b2dpYywgc28gc3RhcnRpbmcgd2l0aCBhIHNpbXBsZXIgZnVuY3Rpb24gd2lsbCBtYWtlIHRoZSBm b2xsb3dpbmcKK2NoYW5nZXMgZWFzaWVyLgorCitXaGVuIHJlYWRpbmcgb2JqZmlsZTo6ZmluZF9h bmRfYWRkX3NlcGFyYXRlX3N5bWJvbF9maWxlIGFmdGVyIHRoaXMKK2NvbW1pdCwgeW91IG1pZ2h0 IGJlIHRlbXB0ZWQgdG8gdGhpbmsgdGhhdCByZW1vdmluZyB0aGUgYGhhc19kd2FyZmAKK2xvY2Fs IHZhcmlhYmxlIHdvdWxkIGJlIGEgZ29vZCBhZGRpdGlvbmFsIGNsZWFudXAuICBBZnRlciB0aGUg bmV4dAorY29tbWl0IHRob3VnaCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIHJldGFpbiB0aGlzIGxv Y2FsLCBzbyBJJ3ZlIGxlZnQKK3RoaXMgaW4gcGxhY2UgZm9yIG5vdy4KKworVGhlcmUgc2hvdWxk IGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgorCitBcHByb3Zl ZC1CeTogVG9tIFRyb21leSA8dG9tQHRyb21leS5jb20+CisKK2RpZmYgLS1naXQgYS9nZGIvc3lt ZmlsZS1kZWJ1Zy5jIGIvZ2RiL3N5bWZpbGUtZGVidWcuYworLS0tIGEvZ2RiL3N5bWZpbGUtZGVi dWcuYworKysrIGIvZ2RiL3N5bWZpbGUtZGVidWcuYworQEAgLTU2MCw2OCArNTYwLDEwOSBAQCBv YmpmaWxlOjpyZXF1aXJlX3BhcnRpYWxfc3ltYm9scyAoYm9vbCB2ZXJib3NlKQorICAgICB9Cisg fQorIAorKy8qIENhbGwgTE9PS1VQX0ZVTkMgdG8gZmluZCB0aGUgZmlsZW5hbWUgb2YgYSBmaWxl IGNvbnRhaW5pbmcgdGhlIHNlcGFyYXRlCisrICAgZGVidWcgaW5mb3JtYXRpb24gbWF0Y2hpbmcg T0JKRklMRS4gIElmIExPT0tVUF9GVU5DIGRvZXMgcmV0dXJuIGEKKysgICBmaWxlbmFtZSB0aGVu IG9wZW4gdGhpcyBmaWxlIGFuZCByZXR1cm4gYSBzdGQ6OnBhaXIgY29udGFpbmluZyB0aGUKKysg ICBnZGJfYmZkX3JlZl9wdHIgb2YgdGhlIG9wZW4gZmlsZSBhbmQgdGhlIGZpbGVuYW1lIHJldHVy bmVkIGJ5CisrICAgTE9PS1VQX0ZVTkMsIG90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMg YW4gZW1wdHkgcGFpcjsgdGhlIGZpcnN0CisrICAgaXRlbSB3aWxsIGJlIG51bGxwdHIsIGFuZCB0 aGUgc2Vjb25kIHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nLgorKworKyAgIEFueSB3YXJuaW5ncyBn ZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiwgb3IgYnkgY2FsbGluZyBMT09LVVBfRlVOQyBhcmUK KysgICBwbGFjZWQgaW50byBXQVJOSU5HUywgdGhlc2Ugd2FybmluZ3MgYXJlIG9ubHkgZGlzcGxh eWVkIHRvIHRoZSB1c2VyIGlmCisrICAgR0RCIGlzIHVuYWJsZSB0byBmaW5kIHRoZSBzZXBhcmF0 ZSBkZWJ1ZyBpbmZvcm1hdGlvbiB2aWEgYW55IHJvdXRlLiAgKi8KKytzdGF0aWMgc3RkOjpwYWly PGdkYl9iZmRfcmVmX3B0ciwgc3RkOjpzdHJpbmc+Cisrc2ltcGxlX2ZpbmRfYW5kX29wZW5fc2Vw YXJhdGVfc3ltYm9sX2ZpbGUKKysgIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysgICBzdGQ6 OnN0cmluZyAoKmxvb2t1cF9mdW5jKSAoc3RydWN0IG9iamZpbGUgKiwgZGVmZXJyZWRfd2Fybmlu Z3MgKiksCisrICAgZGVmZXJyZWRfd2FybmluZ3MgKndhcm5pbmdzKQorK3sKKysgIHN0ZDo6c3Ry aW5nIGZpbGVuYW1lID0gbG9va3VwX2Z1bmMgKG9iamZpbGUsIHdhcm5pbmdzKTsKKysKKysgIGlm ICghZmlsZW5hbWUuZW1wdHkgKCkpCisrICAgIHsKKysgICAgICBnZGJfYmZkX3JlZl9wdHIgc3lt ZmlsZV9iZmQKKysJPSBzeW1maWxlX2JmZF9vcGVuX25vX2Vycm9yIChmaWxlbmFtZS5jX3N0ciAo KSk7CisrICAgICAgaWYgKHN5bWZpbGVfYmZkICE9IG51bGxwdHIpCisrCXJldHVybiB7IHN5bWZp bGVfYmZkLCBmaWxlbmFtZSB9OworKyAgICB9CisrCisrICByZXR1cm4ge307CisrfQorKworKy8q IExvb2t1cCBzZXBhcmF0ZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgT0JKRklMRSB2aWEgZGVidWdp bmZvZC4gIElmCisrICAgc3VjY2Vzc2Z1bCB0aGUgZGVidWcgaW5mb3JtYXRpb24gd2lsbCBiZSBo YXZlIGJlZW4gZG93bmxvYWRlZCBpbnRvIHRoZQorKyAgIGRlYnVnaW5mb2QgY2FjaGUgYW5kIHRo aXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSBzdGQ6OnBhaXIgY29udGFpbmluZyBhCisrICAgZ2Ri X2JmZF9yZWZfcHRyIG9mIHRoZSBvcGVuIGRlYnVnIGluZm9ybWF0aW9uIGZpbGUgYW5kIHRoZSBm aWxlbmFtZSBmb3IKKysgICB0aGUgZmlsZSB3aXRoaW4gdGhlIGRlYnVnaW5mb2QgY2FjaGUuICBJ ZiBubyBkZWJ1ZyBpbmZvcm1hdGlvbiBjb3VsZCBiZQorKyAgIGZvdW5kIHRoZW4gdGhpcyBmdW5j dGlvbiByZXR1cm5zIGFuIGVtcHR5IHBhaXI7IHRoZSBmaXJzdCBpdGVtIHdpbGwgYmUKKysgICBu dWxscHRyLCBhbmQgdGhlIHNlY29uZCB3aWxsIGJlIGFuIGVtcHR5IHN0cmluZy4gICovCisrCisr c3RhdGljIHN0ZDo6cGFpcjxnZGJfYmZkX3JlZl9wdHIsIHN0ZDo6c3RyaW5nPgorK2RlYnVnaW5m b2RfZmluZF9hbmRfb3Blbl9zZXBhcmF0ZV9zeW1ib2xfZmlsZSAoc3RydWN0IG9iamZpbGUgKiBv YmpmaWxlKQorK3sKKysgIGNvbnN0IHN0cnVjdCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkCisrICAg ID0gYnVpbGRfaWRfYmZkX2dldCAob2JqZmlsZS0+b2JmZC5nZXQgKCkpOworKyAgY29uc3QgY2hh ciAqZmlsZW5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkLmdldCAoKSk7Cisr CisrICBpZiAoYnVpbGRfaWQgIT0gbnVsbHB0cikKKysgICAgeworKyAgICAgIGdkYjo6dW5pcXVl X3htYWxsb2NfcHRyPGNoYXI+IHN5bWZpbGVfcGF0aDsKKysgICAgICBzY29wZWRfZmQgZmQgKGRl YnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5IChidWlsZF9pZC0+ZGF0YSwgYnVpbGRfaWQtPnNpemUs CisrCQkJCQkJZmlsZW5hbWUsICZzeW1maWxlX3BhdGgpKTsKKysKKysgICAgICBpZiAoZmQuZ2V0 ICgpID49IDApCisrCXsKKysJICAvKiBGaWxlIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgZnJvbSBz ZXJ2ZXIuICAqLworKwkgIGdkYl9iZmRfcmVmX3B0ciBkZWJ1Z19iZmQKKysJICAgIChzeW1maWxl X2JmZF9vcGVuX25vX2Vycm9yIChzeW1maWxlX3BhdGguZ2V0ICgpKSk7CisrCisrCSAgaWYgKGRl YnVnX2JmZCAhPSBudWxscHRyCisrCSAgICAgICYmIGJ1aWxkX2lkX3ZlcmlmeSAoZGVidWdfYmZk LmdldCAoKSwKKysJCQkJICBidWlsZF9pZC0+c2l6ZSwgYnVpbGRfaWQtPmRhdGEpKQorKwkgICAg cmV0dXJuIHsgZGVidWdfYmZkLCBzdGQ6OnN0cmluZyAoc3ltZmlsZV9wYXRoLmdldCAoKSkgfTsK KysJfQorKyAgICB9CisrCisrICByZXR1cm4ge307CisrfQorKworIC8qIFNlZSBvYmpmaWxlcy5o LiAgKi8KKyAKKyBib29sCisgb2JqZmlsZTo6ZmluZF9hbmRfYWRkX3NlcGFyYXRlX3N5bWJvbF9m aWxlIChzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorIHsKKy0gIGJvb2wgaGFzX2R3 YXJmMiA9IHRydWU7CisrICBib29sIGhhc19kd2FyZiA9IGZhbHNlOworIAorICAgZGVmZXJyZWRf d2FybmluZ3Mgd2FybmluZ3M7CisgCistICBzdGQ6OnN0cmluZyBkZWJ1Z2ZpbGUKKy0gICAgPSBm aW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAodGhpcywgJndhcm5pbmdzKTsKKy0K Ky0gIGlmIChkZWJ1Z2ZpbGUuZW1wdHkgKCkpCistICAgIGRlYnVnZmlsZSA9IGZpbmRfc2VwYXJh dGVfZGVidWdfZmlsZV9ieV9kZWJ1Z2xpbmsgKHRoaXMsICZ3YXJuaW5ncyk7CisrICBnZGJfYmZk X3JlZl9wdHIgZGVidWdfYmZkOworKyAgc3RkOjpzdHJpbmcgZmlsZW5hbWU7CisgCistICBpZiAo IWRlYnVnZmlsZS5lbXB0eSAoKSkKKy0gICAgeworLSAgICAgIGdkYl9iZmRfcmVmX3B0ciBkZWJ1 Z19iZmQKKy0JKHN5bWZpbGVfYmZkX29wZW5fbm9fZXJyb3IgKGRlYnVnZmlsZS5jX3N0ciAoKSkp OworKyAgc3RkOjp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpID0gc2ltcGxlX2ZpbmRfYW5kX29w ZW5fc2VwYXJhdGVfc3ltYm9sX2ZpbGUKKysgICAgKHRoaXMsIGZpbmRfc2VwYXJhdGVfZGVidWdf ZmlsZV9ieV9idWlsZGlkLCAmd2FybmluZ3MpOworIAorLSAgICAgIGlmIChkZWJ1Z19iZmQgIT0g bnVsbHB0cikKKy0Jc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChkZWJ1Z19iZmQsIGRlYnVnZmls ZS5jX3N0ciAoKSwKKy0JCQkJICBzeW1maWxlX2ZsYWdzLCB0aGlzKTsKKy0gICAgfQorLSAgZWxz ZQorLSAgICB7CistICAgICAgaGFzX2R3YXJmMiA9IGZhbHNlOworLSAgICAgIGNvbnN0IHN0cnVj dCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkCistCT0gYnVpbGRfaWRfYmZkX2dldCAodGhpcy0+b2Jm ZC5nZXQgKCkpOworLSAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gYmZkX2dldF9maWxlbmFt ZSAodGhpcy0+b2JmZC5nZXQgKCkpOworLQorLSAgICAgIGlmIChidWlsZF9pZCAhPSBudWxscHRy KQorLQl7CistCSAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gc3ltZmlsZV9wYXRoOwor LQkgIHNjb3BlZF9mZCBmZCAoZGVidWdpbmZvZF9kZWJ1Z2luZm9fcXVlcnkgKGJ1aWxkX2lkLT5k YXRhLAorLQkJCQkJCSAgICBidWlsZF9pZC0+c2l6ZSwKKy0JCQkJCQkgICAgZmlsZW5hbWUsCist CQkJCQkJICAgICZzeW1maWxlX3BhdGgpKTsKKysgIGlmIChkZWJ1Z19iZmQgPT0gbnVsbHB0cikK KysgICAgc3RkOjp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCisrICAgICAgPSBzaW1wbGVfZmlu ZF9hbmRfb3Blbl9zZXBhcmF0ZV9zeW1ib2xfZmlsZQorKwkgICh0aGlzLCBmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rLCAmd2FybmluZ3MpOworIAorLQkgIGlmIChmZC5nZXQg KCkgPj0gMCkKKy0JICAgIHsKKy0JICAgICAgLyogRmlsZSBzdWNjZXNzZnVsbHkgcmV0cmlldmVk IGZyb20gc2VydmVyLiAgKi8KKy0JICAgICAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVnX2JmZAorLQkJ KHN5bWZpbGVfYmZkX29wZW5fbm9fZXJyb3IgKHN5bWZpbGVfcGF0aC5nZXQgKCkpKTsKKysgIGlm IChkZWJ1Z19iZmQgPT0gbnVsbHB0cikKKysgICAgc3RkOjp0aWUgKGRlYnVnX2JmZCwgZmlsZW5h bWUpCisrICAgICAgPSBkZWJ1Z2luZm9kX2ZpbmRfYW5kX29wZW5fc2VwYXJhdGVfc3ltYm9sX2Zp bGUgKHRoaXMpOworIAorLQkgICAgICBpZiAoZGVidWdfYmZkICE9IG51bGxwdHIKKy0JCSAgJiYg YnVpbGRfaWRfdmVyaWZ5IChkZWJ1Z19iZmQuZ2V0ICgpLCBidWlsZF9pZC0+c2l6ZSwKKy0JCQkJ ICAgICAgYnVpbGRfaWQtPmRhdGEpKQorLQkJeworLQkJICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJh dGUgKGRlYnVnX2JmZCwgc3ltZmlsZV9wYXRoLmdldCAoKSwKKy0JCQkJCSAgICBzeW1maWxlX2Zs YWdzLCB0aGlzKTsKKy0JCSAgaGFzX2R3YXJmMiA9IHRydWU7CistCQl9CistCSAgICB9CistCX0K KysgIGlmIChkZWJ1Z19iZmQgIT0gbnVsbHB0cikKKysgICAgeworKyAgICAgIHN5bWJvbF9maWxl X2FkZF9zZXBhcmF0ZSAoZGVidWdfYmZkLCBmaWxlbmFtZS5jX3N0ciAoKSwgc3ltZmlsZV9mbGFn cywKKysJCQkJdGhpcyk7CisrICAgICAgaGFzX2R3YXJmID0gdHJ1ZTsKKyAgICAgfQorLSAgLyog SWYgYWxsIHRoZSBtZXRob2RzIHRvIGNvbGxlY3QgdGhlIGRlYnVnaW5mbyBmYWlsZWQsIHByaW50 IHRoZQorLSAgICAgd2FybmluZ3MsIHRoaXMgaXMgYSBuby1vcCBpZiB0aGVyZSBhcmUgbm8gd2Fy bmluZ3MuICAqLworLSAgaWYgKGRlYnVnZmlsZS5lbXB0eSAoKSAmJiAhaGFzX2R3YXJmMikKKysK KysgIC8qIElmIHdlIHN0aWxsIGhhdmUgbm90IGdvdCBhIHNlcGFyYXRlIGRlYnVnIHN5bWJvbCBm aWxlLCB0aGVuCisrICAgICBlbWl0IGFueSB3YXJuaW5ncyB3ZSd2ZSBjb2xsZWN0ZWQgc28gZmFy LiAgKi8KKysgIGlmICghaGFzX2R3YXJmKQorICAgICB3YXJuaW5ncy5lbWl0ICgpOworIAorLSAg cmV0dXJuIGhhc19kd2FyZjI7CisrICByZXR1cm4gaGFzX2R3YXJmOworIH0KKyAKKyAMCgpkaWZm IC0tZ2l0IGEvZ2RiLXJlZm9ybWF0LW1pc3NpbmctZGVidWctcHktZmlsZS5wYXRjaCBiL2dkYi1y ZWZvcm1hdC1taXNzaW5nLWRlYnVnLXB5LWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYzk4OGZhMgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1yZWZvcm1hdC1t aXNzaW5nLWRlYnVnLXB5LWZpbGUucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBGRURPUkFf UEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbSBkZSBWcmllcyA8dGRl dnJpZXNAc3VzZS5kZT4KK0RhdGU6IFRodSwgMjMgTm92IDIwMjMgMDc6Mzc6MTkgKzAxMDAKK1N1 YmplY3Q6IGdkYi1yZWZvcm1hdC1taXNzaW5nLWRlYnVnLXB5LWZpbGUucGF0Y2gKKworOzsgQmFj a3BvcnQgdXBzdHJlYW0gY29tbWl0IGRkNTUxNmJmOThmLgorCitbZ2RiL3B5dGhvbl0gUmVmb3Jt YXQgbWlzc2luZ19kZWJ1Zy5weSB1c2luZyBibGFjaworCitSZWZvcm1hdCBnZGIvcHl0aG9uL2xp Yi9nZGIvbWlzc2luZ19kZWJ1Zy5weSB3aXRoIGJsYWNrIGFmdGVyIGNvbW1pdAorZThjM2RhZmE1 ZjUgKCJbZ2RiL3B5dGhvbl0gRG9uJ3QgaW1wb3J0IGN1cnNlcy5hc2NpaSBtb2R1bGUgdW5sZXNz IG5lY2Vzc2FyeSIpLgorCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL21pc3Npbmdf ZGVidWcucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5weQorLS0tIGEvZ2Ri L3B5dGhvbi9saWIvZ2RiL21pc3NpbmdfZGVidWcucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dk Yi9taXNzaW5nX2RlYnVnLnB5CitAQCAtMTksMTggKzE5LDIyIEBAIE1pc3NpbmdEZWJ1Z0hhbmRs ZXIgYmFzZSBjbGFzcywgYW5kIHJlZ2lzdGVyX2hhbmRsZXIgZnVuY3Rpb24uCisgCisgaW1wb3J0 IGdkYgorIGltcG9ydCBzeXMKKysKKyBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA3KToKKyAg ICAgIyBGdW5jdGlvbnMgc3RyLmlzYXNjaWkoKSBhbmQgc3RyLmlzYWxudW0gYXJlIGF2YWlsYWJs ZSBzdGFydGluZyBQeXRob24KKyAgICAgIyAzLjcuCisgICAgIGRlZiBpc2FzY2lpKGNoKToKKyAg ICAgICAgIHJldHVybiBjaC5pc2FzY2lpKCkKKysKKyAgICAgZGVmIGlzYWxudW0oY2gpOgorICAg ICAgICAgcmV0dXJuIGNoLmlzYWxudW0oKQorKworIGVsc2U6CisgICAgICMgRmFsbCBiYWNrIHRv IGN1cnNlcy5hc2NpaS5pc2FzY2lpKCkgYW5kIGN1cnNlcy5hc2NpaS5pc2FsbnVtKCkgZm9yCisg ICAgICMgZWFybGllciB2ZXJzaW9ucy4KKyAgICAgZnJvbSBjdXJzZXMuYXNjaWkgaW1wb3J0IGlz YXNjaWksIGlzYWxudW0KKyAKKysKKyBkZWYgX3ZhbGlkYXRlX25hbWUobmFtZSk6CisgICAgICIi IlZhbGlkYXRlIGEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIG5hbWUgc3RyaW5nLgorIAoKZGlmZiAt LWdpdCBhL2dkYi1yZW1vdmUtcGF0aC1pbi10ZXN0LW5hbWUucGF0Y2ggYi9nZGItcmVtb3ZlLXBh dGgtaW4tdGVzdC1uYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmY2MzdhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcmVtb3ZlLXBhdGgtaW4tdGVzdC1uYW1l LnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBUb20gVHJvbWV5IDx0cm9tZXlAYWRhY29yZS5jb20+CitEYXRl OiBUdWUsIDE0IE5vdiAyMDIzIDExOjQ3OjI3IC0wNzAwCitTdWJqZWN0OiBnZGItcmVtb3ZlLXBh dGgtaW4tdGVzdC1uYW1lLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCAxMTQ2 ZDI3NzQ5Zi4KKworUmVtb3ZlIHBhdGggbmFtZSBmcm9tIHRlc3QgY2FzZQorCisncnVudGVzdCcg Y29tcGxhaW5zIGFib3V0IGEgcGF0aCBpbiBhIHRlc3QgbmFtZSwgZnJvbSB0aGUgbmV3IHRlc3QK K2Nhc2UgcHktbWlzc2luZy1kZWJ1Zy5leHAuCisKK1RoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2Js ZW0gYnkgcHJvdmlkaW5nIGFuIGV4cGxpY2l0IHRlc3QgbmFtZSB0bworZ2RiX3Rlc3QuICBJIGNo b3NlIHNvbWV0aGluZyB2ZXJ5IGJhc2ljIGJlY2F1c2UgdGhlIGJsb2NrIGluIHF1ZXN0aW9uCitp cyBhbHJlYWR5IHdyYXBwZWQgaW4gd2l0aF90ZXN0X3ByZWZpeC4KKworZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktbWlzc2luZy1kZWJ1Zy5leHAKK0BAIC0zMjEsNyArMzIxLDggQEAgd2l0aF90ZXN0 X3ByZWZpeCAiZW5hYmxlICdhYmMtZGVmJyIgeworICAgICBzZXQgcmUgW3N0cmluZ190b19yZWdl eHAgJGJpbmZpbGVdCisgCisgICAgIGdkYl90ZXN0ICJlbmFibGUgbWlzc2luZy1kZWJ1Zy1oYW5k bGVyIFwiJHJlXCIgYWJjLWRlZiIgXAorLQkiXjEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGVuYWJs ZWQiCisrCSJeMSBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgZW5hYmxlZCIgXAorKwkiZW5hYmxlIG1p c3NpbmctZGVidWctaGFuZGxlciIKKyAKKyAgICAgZ2RiX3Rlc3QgImluZm8gbWlzc2luZy1kZWJ1 Zy1oYW5kbGVycyIgXAorIAlbbXVsdGlfbGluZSBcCgpkaWZmIC0tZ2l0IGEvZ2RiLXJlbW92ZS11 c2Utb2YtcHktaXNhc2NpaSBiL2dkYi1yZW1vdmUtdXNlLW9mLXB5LWlzYXNjaWkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYwNWQxYwotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi1yZW1vdmUtdXNlLW9mLXB5LWlzYXNjaWkKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBGRURPUkFf UEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJldyBCdXJnZXNzIDxh YnVyZ2Vzc0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAxNiBOb3YgMjAyMyAxMDo1MzozNCArMDAw MAorU3ViamVjdDogZ2RiLXJlbW92ZS11c2Utb2YtcHktaXNhc2NpaQorCis7OyBCYWNrcG9ydCB1 cHN0cmVhbSBjb21taXQgN2RiNzk1YmM2N2EuCisKK2dkYi9weXRob246IHJlbW92ZSB1c2Ugb2Yg c3RyLmlzYXNjaWkoKQorCitUaGlzIGNvbW1pdDoKKworICBjb21taXQgOGY2YzQ1MmI1YTRlNTBm YmI1NWZmMWQxMzMyOGIzOTJhZDFmZDQxNgorICBEYXRlOiAgIFN1biBPY3QgMTUgMjI6NDg6NDIg MjAyMyArMDEwMAorCisgICAgICBnZGI6IGltcGxlbWVudCBtaXNzaW5nIGRlYnVnIGhhbmRsZXIg aG9vayBmb3IgUHl0aG9uCisKK2ludHJvZHVjZWQgYSB1c2Ugb2Ygc3RyLmlzYXNjaWkoKSwgd2hp Y2ggd2FzIG9ubHkgYWRkZWQgaW4gUHl0aG9uIDMuNy4KKworVGhpcyBjb21taXQgc3dpdGNoZXMg dG8gdXNlIGN1cnNlcy5hc2NpaS5pc2FzY2lpKCksIGFzIHRoaXMgd2FzCithdmFpbGFibGUgaW4g My42LgorCitUaGUgc2FtZSBpcyB0cnVlIGZvciBzdHIuaXNhbG51bSgpLCB3aGljaCBpcyByZXBs YWNlZCB3aXRoCitjdXJzZXMuYXNjaWkuaXNhbG51bSgpLgorCitUaGVyZSBzaG91bGQgYmUgbm8g dXNlciB2aXNpYmxlIGNoYW5nZXMgYWZ0ZXIgdGhpcyBjb21taXQuCisKK2RpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5weSBiL2dkYi9weXRob24vbGliL2dkYi9t aXNzaW5nX2RlYnVnLnB5CistLS0gYS9nZGIvcHl0aG9uL2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5w eQorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL21pc3NpbmdfZGVidWcucHkKK0BAIC0xOCw2ICsx OCw3IEBAIE1pc3NpbmdEZWJ1Z0hhbmRsZXIgYmFzZSBjbGFzcywgYW5kIHJlZ2lzdGVyX2hhbmRs ZXIgZnVuY3Rpb24uCisgIiIiCisgCisgaW1wb3J0IGdkYgorK2Zyb20gY3Vyc2VzLmFzY2lpIGlt cG9ydCBpc2FzY2lpLCBpc2FsbnVtCisgCisgCisgZGVmIF92YWxpZGF0ZV9uYW1lKG5hbWUpOgor QEAgLTM4LDcgKzM5LDcgQEAgZGVmIF92YWxpZGF0ZV9uYW1lKG5hbWUpOgorICAgICAgICAgICAg ICAgICAgICAgbmFtZS4KKyAgICAgIiIiCisgICAgIGZvciBjaCBpbiBuYW1lOgorLSAgICAgICAg aWYgbm90IGNoLmlzYXNjaWkoKSBvciBub3QgKGNoLmlzYWxudW0oKSBvciBjaCBpbiAiXy0iKToK KysgICAgICAgIGlmIG5vdCBpc2FzY2lpKGNoKSBvciBub3QgKGlzYWxudW0oY2gpIG9yIGNoIGlu ICJfLSIpOgorICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgY2hhcmFjdGVy ICclcycgaW4gaGFuZGxlciBuYW1lOiAlcyIgJSAoY2gsIG5hbWUpKQorIAorIAoKZGlmZiAtLWdp dCBhL2dkYi1yaGJ6MTAwNzYxNC1tZW1sZWFrLWluZnB5X3JlYWRfbWVtb3J5LXRlc3QucGF0Y2gg Yi9nZGItcmhiejEwMDc2MTQtbWVtbGVhay1pbmZweV9yZWFkX21lbW9yeS10ZXN0LnBhdGNoCmlu ZGV4IDRkMDViYTUuLjU1NWVlZmIgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6MTAwNzYxNC1tZW1sZWFr LWluZnB5X3JlYWRfbWVtb3J5LXRlc3QucGF0Y2gKKysrIGIvZ2RiLXJoYnoxMDA3NjE0LW1lbWxl YWstaW5mcHlfcmVhZF9tZW1vcnktdGVzdC5wYXRjaApAQCAtNjQsNyArNjQsNyBAQCBkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWdkYi1yaGJ6MTAwNzYxNC1tZW1sZWFr LWluZnB5X3JlYWRfbWVtbwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIC0tLSAvZGV2L251bGwKICsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1nZGItcmhiejEwMDc2MTQtbWVtbGVhay1p bmZweV9yZWFkX21lbW9yeS5leHAKLUBAIC0wLDAgKzEsNjggQEAKK0BAIC0wLDAgKzEsNzIgQEAK ICsjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKQEAgLTgwLDYgKzgwLDEwIEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiArIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCisrbG9hZF9saWIgZ2RiLXB5dGhvbi5leHAKKysK KytyZXF1aXJlIGFsbG93X3B5dGhvbl90ZXN0cworKwogK3NldCB0ZXN0ZmlsZSBweS1nZGItcmhi ejEwMDc2MTQtbWVtbGVhay1pbmZweV9yZWFkX21lbW9yeQogK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LmMKICtzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCkBA IC04OCw4ICs5Miw2IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiArICAgIHJldHVybiAtMQogK30K ICsKLStpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSsKICtzZXQgcGlk X29mX2dkYiBbZXhwX3BpZCAtaSBbYm9hcmRfaW5mbyBob3N0IGZpbGVpZF1dCiArCiArcHJvYyBt ZW1vcnlfdl9wYWdlc19nZXQge30gewpAQCAtMTExLDEyICsxMTMsMTQgQEAgbmV3IGZpbGUgbW9k ZSAxMDA2NDQKICsKICtnZGJfdGVzdCAic291cmNlICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgIiIK ICsKLStnZGJfdGVzdCAiaGVsbG8td29ybGQiICIiCisrZ2RiX3Rlc3QgImhlbGxvLXdvcmxkIiAi IiBcCisrICAgICJmaXJzdCBoZWxsby13b3JsZCB0ZXN0IgogKwogK3NldCBrYnl0ZXNfYmVmb3Jl IFttZW1vcnlfdl9wYWdlc19nZXRdCiArdmVyYm9zZSAtbG9nICJrYnl0ZXNfYmVmb3JlID0gJGti eXRlc19iZWZvcmUiCiArCi0rZ2RiX3Rlc3QgImhlbGxvLXdvcmxkIiAiIgorK2dkYl90ZXN0ICJo ZWxsby13b3JsZCIgIiIgXAorKyAgICAic2Vjb25kIGhlbGxvLXdvcmxkIHRlc3QiCiArCiArc2V0 IGtieXRlc19hZnRlciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XQogK3ZlcmJvc2UgLWxvZyAia2J5dGVz X2FmdGVyID0gJGtieXRlc19hZnRlciIKCmRpZmYgLS1naXQgYS9nZGItcmhiejExNTYxOTItcmVj dXJzaXZlLWRsb3Blbi10ZXN0LnBhdGNoIGIvZ2RiLXJoYnoxMTU2MTkyLXJlY3Vyc2l2ZS1kbG9w ZW4tdGVzdC5wYXRjaAppbmRleCA5NmI5M2FlLi5lMGEyMjcwIDEwMDY0NAotLS0gYS9nZGItcmhi ejExNTYxOTItcmVjdXJzaXZlLWRsb3Blbi10ZXN0LnBhdGNoCisrKyBiL2dkYi1yaGJ6MTE1NjE5 Mi1yZWN1cnNpdmUtZGxvcGVuLXRlc3QucGF0Y2gKQEAgLTIxMSw3ICsyMTEsNyBAQCBkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGItcmhiejExNTYxOTItcmVjdXJzaXZlLWRs b3Blbi5leHAgYi9nZGIvdAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIC0tLSAvZGV2L251bGwKICsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiLXJoYnoxMTU2MTkyLXJlY3Vyc2l2ZS1kbG9w ZW4uZXhwCi1AQCAtMCwwICsxLDE1NyBAQAorQEAgLTAsMCArMSwxNTIgQEAKICsjIENvcHlyaWdo dCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyMKICsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CkBAIC0yMjcsMTMgKzIyNyw4IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiArIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQog KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCiArCi0raWYge1tza2lwX3NobGliX3Rlc3RzXX0gewotKyAgICB1bnRl c3RlZCAic2tpcHBpbmcgc2hsaWIgdGVzdHMiCi0rICAgIHJldHVybiAwCi0rfSBlbHNlaWYge1t1 c2VfZ2RiX3N0dWJdfSB7Ci0rICAgIHVudGVzdGVkICJza2lwcGluZyB0ZXN0cyBiZWNhdXNlIG9m IHN0dWIiCi0rICAgIHJldHVybiAwCi0rfQorK3JlcXVpcmUgYWxsb3dfc2hsaWJfdGVzdHMKKyty ZXF1aXJlICF1c2VfZ2RiX3N0dWIKICsKICsjIExpYnJhcnkgZm9vCiArc2V0IGxpYm5hbWUxICJn ZGItcmhiejExNTYxOTItcmVjdXJzaXZlLWRsb3Blbi1saWJmb28iCgpkaWZmIC0tZ2l0IGEvZ2Ri LXN5bmMtY29mZnJlYWQtd2l0aC1lbGZyZWFkLnBhdGNoIGIvZ2RiLXN5bmMtY29mZnJlYWQtd2l0 aC1lbGZyZWFkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzll NmQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItc3luYy1jb2ZmcmVhZC13aXRoLWVsZnJlYWQucGF0 Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0ByZWRoYXQuY29tPgorRGF0 ZTogVGh1LCAxMiBPY3QgMjAyMyAxOTo0MjoxOSArMDEwMAorU3ViamVjdDogZ2RiLXN5bmMtY29m ZnJlYWQtd2l0aC1lbGZyZWFkLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCA3 NjI4YTk5N2YyNy4KKworZ2RiL2NvZmZyZWFkOiBicmluZyBzZXBhcmF0ZSBkZWJ1ZyBmaWxlIGxv Z2ljIGludG8gbGluZSB3aXRoIGVsZnJlYWQuYworCitJbiB0aGlzIGNvbW1pdDoKKworICBjb21t aXQgOGE5MjMzNWJmY2E4MGNjOWI0Y2QyMTc1MDVlYTBkY2JmZGVmYmYwNworICBEYXRlOiAgIEZy aSBGZWIgMSAxOTozOTowNCAyMDEzICswMDAwCisKK3RoZSBsb2dpYyBmb3Igd2hlbiB3ZSB0cnkg dG8gbG9hZCBhIHNlcGFyYXRlIGRlYnVnIGZpbGUgaW4gZWxmcmVhZC5jCit3YXMgZXh0ZW5kZWQu ICBUaGUgbmV3IGNvZGUgY2hlY2tzIHRoYXQgdGhlIG9iamZpbGUgZG9lc24ndCBhbHJlYWR5Cito YXZlIGEgc2VwYXJhdGUgZGVidWcgb2JqZmlsZSBsaW5rZWQgdG8gaXQsIGFuZCB0aGF0IHRoZSBv YmpmaWxlIGlzbid0CitpdHNlbGYgYSBzZXBhcmF0ZSBkZWJ1ZyBvYmpmaWxlIGZvciBzb21lIG90 aGVyIG9iamZpbGUuCisKK1RoZSBjb2ZmcmVhZCBjb2RlIHdhc24ndCBleHRlbmRlZCBhdCB0aGUg c2FtZSB0aW1lLgorCitJIGRvbid0IGtub3cgaWYgaXQncyBwb3NzaWJsZSBmb3IgdGhlIGNvZmZy ZWFkIGNvZGUgdG8gZ2V0IGludG8gdGhlCitzYW1lIHN0YXRlIHdoZXJlIHRoZXNlIGNoZWNrcyBh cmUgbmVlZGVkLCBidXQgSSBkb24ndCBzZWUgd2h5IGhhdmluZwordGhlc2UgY2hlY2tzIHdvdWxk IGJlIGEgcHJvYmxlbS4gIEluIGEgbGF0ZXIgY29tbWl0IEkgcGxhbiB0byBtZXJnZQordGhpcyBw YXJ0IG9mIHRoZSBlbGZyZWFkIGFuZCBjb2ZmcmVhZCBjb2RlLCBzbyBicmluZ2luZyB0aGVzZSB0 d28KK3BpZWNlcyBvZiBjb2RlIGludG8gbGluZSBmaXJzdCBtYWtlcyB0aGF0IGpvYiBlYXNpZXIu CisKK0kndmUgdGVzdGVkIHRoaXMgd2l0aCBhIHNpbXBsZSB0ZXN0IGJpbmFyeSBjb21waWxlZCB3 aXRoIHRoZSBtaW5ndwordG9vbGNoYWluIG9uIGEgTGludXggaG9zdC4gIEFmdGVyIGNvbXBpbGlu ZyB0aGUgYmluYXJ5IGFuZCBzcGxpdHRpbmcKK291dCB0aGUgZGVidWcgaW5mbyBHREIgc3RpbGwg ZmluZHMgYW5kIGxvYWRzIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvLgorCitBcHByb3ZlZC1CeTog VG9tIFRyb21leSA8dG9tQHRyb21leS5jb20+CisKK2RpZmYgLS1naXQgYS9nZGIvY29mZnJlYWQu YyBiL2dkYi9jb2ZmcmVhZC5jCistLS0gYS9nZGIvY29mZnJlYWQuYworKysrIGIvZ2RiL2NvZmZy ZWFkLmMKK0BAIC03MjUsNyArNzI1LDkgQEAgY29mZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorICAgICB9Cisg CisgICAvKiBUcnkgdG8gYWRkIHNlcGFyYXRlIGRlYnVnIGZpbGUgaWYgbm8gc3ltYm9scyB0YWJs ZSBmb3VuZC4gICAqLworLSAgaWYgKCFvYmpmaWxlLT5oYXNfcGFydGlhbF9zeW1ib2xzICgpKQor KyAgZWxzZSBpZiAoIW9iamZpbGUtPmhhc19wYXJ0aWFsX3N5bWJvbHMgKCkKKysJICAgJiYgb2Jq ZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9PSBOVUxMCisrCSAgICYmIG9iamZpbGUtPnNl cGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCkKKyAgICAgeworICAgICAgIGRl ZmVycmVkX3dhcm5pbmdzIHdhcm5pbmdzOworICAgICAgIHN0ZDo6c3RyaW5nIGRlYnVnZmlsZQoK ZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggMTlmODMyMy4uMjNiNjU0ZiAx MDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTU3LDcgKzU3LDcgQEAgVmVy c2lvbjogMTQuMgogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVz ZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQg b2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0 aGUgdGVzdGluZy4KLVJlbGVhc2U6IDMlez9kaXN0fQorUmVsZWFzZTogNCV7P2Rpc3R9CiAKIExp Y2Vuc2U6IEdQTC0zLjAtb3ItbGF0ZXIgQU5EIEJTRC0zLUNsYXVzZSBBTkQgRlNGQVAgQU5EIExH UEwtMi4xLW9yLWxhdGVyIEFORCBHUEwtMi4wLW9yLWxhdGVyIEFORCBMR1BMLTIuMC1vci1sYXRl ciBBTkQgTGljZW5zZVJlZi1GZWRvcmEtUHVibGljLURvbWFpbiBBTkQgR0ZETC0xLjMtb3ItbGF0 ZXIgQU5EIExHUEwtMi4wLW9yLWxhdGVyIFdJVEggR0NDLWV4Y2VwdGlvbi0yLjAgQU5EIEdQTC0z LjAtb3ItbGF0ZXIgV0lUSCBHQ0MtZXhjZXB0aW9uLTMuMSBBTkQgR1BMLTIuMC1vci1sYXRlciBX SVRIIEdOVS1jb21waWxlci1leGNlcHRpb24KICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFw c2hvdHMgYXMgdGhlIGZpbGUgbGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgpAQCAtMTI1MCw2 ICsxMjUwLDE1IEBAIGZpCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBXZWQgTWFyIDEzIDIwMjQg QW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNzQHJlZGhhdC5jb20+CistIFJlbW92ZSB0aGUgdXNlIG9m IGxpYnJwbSBmcm9tIEdEQidzIEMrKyBjb2RlLCBhbmQgaW5zdGVhZCBwcm92aWRlCisgIHNpbWls YXIgUlBNIHN1Z2dlc3Rpb24gZmVhdHVyZSB1c2luZyBhIFB5dGhvbiBleHRlbnNpb24uICBUaGUg UHl0aG9uCisgIGV4dGVuc2lvbiBmZWF0dXJlIHRoYXQgc3VwcG9ydHMgdGhpcyBpcyBhbiB1cHN0 cmVhbSBmZWF0dXJlIHdoaWNoCisgIGhhcyBiZWVuIGJhY2stcG9ydGVkIChhbG9uZyB3aXRoIHNl dmVyYWwgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGVkCisgIGZpeGVzKS4gIFRoZSBhY3R1YWwgUlBN IHN1Z2dlc3Rpb24gaXMgbm93IHByb3ZpZGVkIGFzIGEgUHl0aG9uCisgIHNjcmlwdCB3aGljaCBp cyBhdXRvLWxvYWRlZCBieSBHREIuICBSZW1vdmluZyB0aGUgdXNlIG9mIGxpYnJwbSBmcm9tCisg IHRoZSBDKysgY29kZSBhbGxvd3Mgc29tZSBjbGVhbnVwIG9mIHRoZSBjb25maWd1cmUgc2NyaXB0 cy4KKwogKiBGcmkgTWFyICA4IDIwMjQgQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNzQHJlZGhhdC5j b20+CiAtIFJlZHVjZSBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoIGJ5IHJlbW92aW5nIHNv bWUgdW5uZWNlc3NhcnkKICAgY2FzdHMgYWRkZWQgdG8gYmZkLyBzb3VyY2UgZmlsZXMuCg==