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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Update "set auto-load" patchset and the --with-auto-load-safe-path setting. Date: Sat, 27 Jun 2026 23:55:37 GMT Message-ID: <178260453745.1.14471340853479555440.rpms-gdb-fdf21a3584ce@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: fdf21a3584ceb7f9ce19488009a78ca09fd739db ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogZmRmMjFhMzU4NGNlYjdmOWNlMTk0ODgwMDlhNzhjYTA5ZmQ3 MzlkYgogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMi0wNC0yNFQyMjoyNDoxMiswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArNTYxOC8tNTA2MiBpbiAzMSBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvZmRm MjFhMzU4NGNlYjdmOWNlMTk0ODgwMDlhNzhjYTA5ZmQ3MzlkYj9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBVcGRhdGUgInNldCBhdXRvLWxv YWQiIHBhdGNoc2V0IGFuZCB0aGUgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggc2V0dGluZy4K Ci0gW1JIRUxdIERpc2FibGUgZ2RiLWFkZC1pbmRleCBldmVuIG9uIFJIRUwtNiBhcyBSSEVMLTYu MCBoYWQgdG9vIG9sZCBlbGZ1dGlscy4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAx b2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wMW9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGQzMmIyMWYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAxb2YxMi5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMDIuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMi8wMS8yNCAxOToxMjozMQkxLjEzNzcxCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMS8yNCAyMDo1NjozMwkxLjEzNzcyCi0jIyAtMSwzICsxLDEyIEBACi0rMjAxMi0wMS0yNCAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlDb2RlIGNs ZWFudXAuCi0rCSogY2xpL2NsaS1jbWRzLmMgKHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBO ZXZlciBmY2xvc2UgU1RSRUFNLgotKwlVcGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQgZm9yIGl0 LgotKwkoc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCk6IENhbGwgbWFrZV9jbGVhbnVwX2ZjbG9z ZSBmb3IgU1RSRUFNLgotKwkqIGNsaS9jbGktc2NyaXB0LmMgKHNjcmlwdF9mcm9tX2ZpbGUpOiBE byBub3QgY2FsbCBtYWtlX2NsZWFudXBfZmNsb3NlCi0rCWZvciBTVFJFQU0uCi0rCi0gMjAxMi0w MS0yNCAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAKLSAJKiBicmVha3BvaW50 LmMgKGJwc3RhdF9zdG9wX3N0YXR1cyk6IE1vdmluZyBjbGVhcmluZyBwcmludF9pdAotLS0tIHNy Yy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yMyAxNjozNzowMwkxLjEyMwotKysrIHNyYy9n ZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEyNAotQEAgLTUyNyw4ICs1 MjcsNyBAQAotICAgcmV0dXJuIDE7Ci0gfQotIAotLS8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNo IGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4KLS0gICBTVFJFQU0gaXMgY2xvc2Vk IGJlZm9yZSB3ZSByZXR1cm4uICAqLwotKy8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBh bHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4gICovCi0gCi0gc3RhdGljIHZvaWQKLSBzb3Vy Y2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCi1A QCAtNTU2LDEyICs1NTUsOSBAQAotIAkgIGVsc2UKLSAJICAgIHsKLSAJICAgICAgLyogTm9wZSwg anVzdCBwdW50LiAgKi8KLS0JICAgICAgZmNsb3NlIChzdHJlYW0pOwotIAkgICAgICB0aHJvd19l eGNlcHRpb24gKGUpOwotIAkgICAgfQotIAl9Ci0tICAgICAgZWxzZQotLQlmY2xvc2UgKHN0cmVh bSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtLCBmaWxl KTsKLUBAIC01OTUsNiArNTkxLDcgQEAKLSAgICAgfQotIAotICAgb2xkX2NsZWFudXBzID0gbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSsgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0 cmVhbSk7Ci0gICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSwgc28gd2Ug bmVlZCB0byBwYXNzIGZ1bGxfcGF0aCBoZXJlCi0gICAgICBpbiBjYXNlIHRoZSBmaWxlIHdhcyBm b3VuZCBvbiB0aGUgc2VhcmNoIHBhdGguICBJdCdzIHVzZWZ1bCB0byBkbyB0aGlzCi0gICAgICBh bnl3YXkgc28gdGhhdCBlcnJvciBtZXNzYWdlcyBzaG93IHRoZSBhY3R1YWwgZmlsZSB1c2VkLiAg QnV0IG9ubHkgZG8KLS0tLSBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8wNCAwODox NzoxNwkxLjczCi0rKysgc3JjL2dkYi9jbGkvY2xpLXNjcmlwdC5jCTIwMTIvMDEvMjQgMjA6NTY6 MzMJMS43NAotQEAgLTE2MTQsMTEgKzE2MTQsOSBAQAotICAgaWYgKHN0cmVhbSA9PSBOVUxMKQot ICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJjYWxsZWQgd2l0aCBO VUxMIGZpbGUgcG9pbnRlciEiKSk7Ci0gCi0tICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBf ZmNsb3NlIChzdHJlYW0pOwotLQotICAgb2xkX2xpbmVzLm9sZF9saW5lID0gc291cmNlX2xpbmVf bnVtYmVyOwotICAgb2xkX2xpbmVzLm9sZF9maWxlID0gc291cmNlX2ZpbGVfbmFtZTsKLS0gIG1h a2VfY2xlYW51cCAoc291cmNlX2NsZWFudXBfbGluZXMsICZvbGRfbGluZXMpOwotKyAgb2xkX2Ns ZWFudXBzID0gbWFrZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7 Ci0gICBzb3VyY2VfbGluZV9udW1iZXIgPSAwOwotICAgc291cmNlX2ZpbGVfbmFtZSA9IGZpbGU7 Ci0gICAvKiBUaGlzIHdpbGwgZ2V0IHNldCBldmVyeSB0aW1lIHdlIHJlYWQgYSBsaW5lLiAgU28g aXQgd29uJ3Qgc3RheSAiIgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMW9mMTgucGF0Y2gg Yi9nZGItYXV0b2xvYWQtMDFvZjE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmQzMmIyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDFvZjE4LnBh dGNoCkBAIC0wLDAgKzEsNjUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTItMDEvbXNnMDAyMDIuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAx OToxMjozMQkxLjEzNzcxCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMDo1Njoz MwkxLjEzNzcyCisjIyAtMSwzICsxLDEyIEBACisrMjAxMi0wMS0yNCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFudXAuCisrCSogY2xp L2NsaS1jbWRzLmMgKHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXZlciBmY2xvc2UgU1RS RUFNLgorKwlVcGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQgZm9yIGl0LgorKwkoc291cmNlX3Nj cmlwdF93aXRoX3NlYXJjaCk6IENhbGwgbWFrZV9jbGVhbnVwX2ZjbG9zZSBmb3IgU1RSRUFNLgor KwkqIGNsaS9jbGktc2NyaXB0LmMgKHNjcmlwdF9mcm9tX2ZpbGUpOiBEbyBub3QgY2FsbCBtYWtl X2NsZWFudXBfZmNsb3NlCisrCWZvciBTVFJFQU0uCisrCisgMjAxMi0wMS0yNCAgUGVkcm8gQWx2 ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJKiBicmVha3BvaW50LmMgKGJwc3RhdF9zdG9w X3N0YXR1cyk6IE1vdmluZyBjbGVhcmluZyBwcmludF9pdAorLS0tIHNyYy9nZGIvY2xpL2NsaS1j bWRzLmMJMjAxMi8wMS8yMyAxNjozNzowMwkxLjEyMworKysrIHNyYy9nZGIvY2xpL2NsaS1jbWRz LmMJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEyNAorQEAgLTUyNyw4ICs1MjcsNyBAQAorICAgcmV0 dXJuIDE7CisgfQorIAorLS8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJl ZW4gb3BlbmVkIGFzIFNUUkVBTS4KKy0gICBTVFJFQU0gaXMgY2xvc2VkIGJlZm9yZSB3ZSByZXR1 cm4uICAqLworKy8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3Bl bmVkIGFzIFNUUkVBTS4gICovCisgCisgc3RhdGljIHZvaWQKKyBzb3VyY2Vfc2NyaXB0X2Zyb21f c3RyZWFtIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCitAQCAtNTU2LDEyICs1NTUs OSBAQAorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgLyogTm9wZSwganVzdCBwdW50LiAgKi8K Ky0JICAgICAgZmNsb3NlIChzdHJlYW0pOworIAkgICAgICB0aHJvd19leGNlcHRpb24gKGUpOwor IAkgICAgfQorIAl9CistICAgICAgZWxzZQorLQlmY2xvc2UgKHN0cmVhbSk7CisgICAgIH0KKyAg IGVsc2UKKyAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtLCBmaWxlKTsKK0BAIC01OTUsNiAr NTkxLDcgQEAKKyAgICAgfQorIAorICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJl ZSwgZnVsbF9wYXRoKTsKKysgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisgICAvKiBU aGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSwgc28gd2UgbmVlZCB0byBwYXNzIGZ1 bGxfcGF0aCBoZXJlCisgICAgICBpbiBjYXNlIHRoZSBmaWxlIHdhcyBmb3VuZCBvbiB0aGUgc2Vh cmNoIHBhdGguICBJdCdzIHVzZWZ1bCB0byBkbyB0aGlzCisgICAgICBhbnl3YXkgc28gdGhhdCBl cnJvciBtZXNzYWdlcyBzaG93IHRoZSBhY3R1YWwgZmlsZSB1c2VkLiAgQnV0IG9ubHkgZG8KKy0t LSBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8wNCAwODoxNzoxNwkxLjczCisrKysg c3JjL2dkYi9jbGkvY2xpLXNjcmlwdC5jCTIwMTIvMDEvMjQgMjA6NTY6MzMJMS43NAorQEAgLTE2 MTQsMTEgKzE2MTQsOSBAQAorICAgaWYgKHN0cmVhbSA9PSBOVUxMKQorICAgICBpbnRlcm5hbF9l cnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJjYWxsZWQgd2l0aCBOVUxMIGZpbGUgcG9pbnRl ciEiKSk7CisgCistICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0p OworLQorICAgb2xkX2xpbmVzLm9sZF9saW5lID0gc291cmNlX2xpbmVfbnVtYmVyOworICAgb2xk X2xpbmVzLm9sZF9maWxlID0gc291cmNlX2ZpbGVfbmFtZTsKKy0gIG1ha2VfY2xlYW51cCAoc291 cmNlX2NsZWFudXBfbGluZXMsICZvbGRfbGluZXMpOworKyAgb2xkX2NsZWFudXBzID0gbWFrZV9j bGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7CisgICBzb3VyY2VfbGlu ZV9udW1iZXIgPSAwOworICAgc291cmNlX2ZpbGVfbmFtZSA9IGZpbGU7CisgICAvKiBUaGlzIHdp bGwgZ2V0IHNldCBldmVyeSB0aW1lIHdlIHJlYWQgYSBsaW5lLiAgU28gaXQgd29uJ3Qgc3RheSAi IgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMm9mMTIucGF0Y2ggYi9nZGItYXV0b2xvYWQt MDJvZjEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDRjOWJiLi4wMDAw MDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wMm9mMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx MDMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMS9tc2cw MDIwNS5odG1sCi0KLS0tLSBzcmMvZ2RiL2dkYl92ZWNzLmgKLSsrKyBzcmMvZ2RiL2dkYl92ZWNz LmgJMjAxMi0wNC0xNyAyMjowNDoyMy44MTg2NjYwMDAgKzAwMDAKLUBAIC0wLDAgKzEsMjggQEAK LSsvKiBTb21lIGNvbW1vbmx5LXVzZWQgVkVDIHR5cGVzLgotKwotKyAgIENvcHlyaWdodCAoQykg MjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwotKwotKwotKyNpZm5kZWYgR0RCX1ZFQ1NfSAotKyNkZWZpbmUgR0RCX1ZFQ1NfSAotKwotKyNp bmNsdWRlICJ2ZWMuaCIKLSsKLStERUZfVkVDX1AgKGNoYXJfcHRyKTsKLSsKLSsjZW5kaWYgLyog R0RCX1ZFQ1NfSCAqLwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjQgMjE6MzI6NTYJ MS4xMzc3NAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS4xMzc3 NQotIyMgLTEsMyArMSwxMCBAQAotKzIwMTItMDEtMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVk aGF0LmNvbT4KLSsKLSsJKiBhZGEtbGFuZy5jOiBJbmNsdWRlIGdkYl92ZWNzLmguCi0rCSogY2hh cnNldC5jOiBJbmNsdWRlIGdkYl92ZWNzLmguCi0rCSogdHJhY2Vwb2ludC5oOiBJbmNsdWRlIGdk Yl92ZWNzLmguCi0rCSogZ2RiX3ZlY3MuaDogTmV3IGZpbGUuCi0rCi0gMjAxMi0wMS0yNCAgUGVk cm8gQWx2ZXMgIDxwZWRyb0Bjb2Rlc291cmNlcnkuY29tPgotIAotIAkqIGJyZWFrcG9pbnQuYyAo YnJlYWtwb2ludF9oaXRfY2F0Y2hfZm9yaykKLS0tLSBzcmMvZ2RiL2FkYS1sYW5nLmMJMjAxMi8w MS8wNiAwMzozNDo0NQkxLjMzMAotKysrIHNyYy9nZGIvYWRhLWxhbmcuYwkyMDEyLzAxLzI0IDIx OjM2OjM3CTEuMzMxCi1AQCAtNTcsNiArNTcsNyBAQAotICNpbmNsdWRlICJvYnNlcnZlci5oIgot ICNpbmNsdWRlICJ2ZWMuaCIKLSAjaW5jbHVkZSAic3RhY2suaCIKLSsjaW5jbHVkZSAiZ2RiX3Zl Y3MuaCIKLSAKLSAjaW5jbHVkZSAicHN5bXRhYi5oIgotICNpbmNsdWRlICJ2YWx1ZS5oIgotQEAg LTU2MjgsOCArNTYyOSw2IEBACi0gICByZXR1cm4gc3ltX25hbWU7Ci0gfQotIAotLURFRl9WRUNf UCAoY2hhcl9wdHIpOwotLQotIC8qIEEgY29tcGFuaW9uIGZ1bmN0aW9uIHRvIGFkYV9tYWtlX3N5 bWJvbF9jb21wbGV0aW9uX2xpc3QoKS4KLSAgICBDaGVjayBpZiBTWU1fTkFNRSByZXByZXNlbnRz IGEgc3ltYm9sIHdoaWNoIG5hbWUgd291bGQgYmUgc3VpdGFibGUKLSAgICB0byBjb21wbGV0ZSBU RVhUIChURVhUX0xFTiBpcyB0aGUgbGVuZ3RoIG9mIFRFWFQpLCBpbiB3aGljaCBjYXNlCi0tLS0g c3JjL2dkYi9jaGFyc2V0LmMJMjAxMi8wMS8wNCAwODoxNzowMAkxLjQ2Ci0rKysgc3JjL2dkYi9j aGFyc2V0LmMJMjAxMi8wMS8yNCAyMTozNjozNwkxLjQ3Ci1AQCAtMjcsNiArMjcsNyBAQAotICNp bmNsdWRlICJ2ZWMuaCIKLSAjaW5jbHVkZSAiZW52aXJvbi5oIgotICNpbmNsdWRlICJhcmNoLXV0 aWxzLmgiCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0gCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgot ICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtNzE3LDggKzcxOCw2IEBACi0gCi0gZXh0ZXJu IGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9jaGFyc2V0OyAvKiAtV21pc3Npbmct cHJvdG90eXBlICovCi0gCi0tREVGX1ZFQ19QIChjaGFyX3B0cik7Ci0tCi0gc3RhdGljIFZFQyAo Y2hhcl9wdHIpICpjaGFyc2V0czsKLSAKLSAjaWZkZWYgUEhPTllfSUNPTlYKLS0tLSBzcmMvZ2Ri L3RyYWNlcG9pbnQuaAkyMDEyLzAxLzA0IDA4OjI3OjU3CTEuNDYKLSsrKyBzcmMvZ2RiL3RyYWNl cG9pbnQuaAkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKLUBAIC0yMiw2ICsyMiw3IEBACi0gI2lu Y2x1ZGUgImJyZWFrcG9pbnQuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUgIm1l bXJhbmdlLmgiCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0gCi0gLyogQSB0cmFjZSBzdGF0ZSB2 YXJpYWJsZSBpcyBhIHZhbHVlIG1hbmFnZWQgYnkgYSB0YXJnZXQgYmVpbmcKLSAgICB0cmFjZWQu ICBBIHRyYWNlIHN0YXRlIHZhcmlhYmxlIChvciB0c3YgZm9yIHNob3J0KSBjYW4gYmUgYWNjZXNz ZWQKLUBAIC0xNDMsOCArMTQ0LDYgQEAKLSAKLSAvKiBTdHJ1Y3QgdG8gY29sbGVjdCByYW5kb20g aW5mbyBhYm91dCB0cmFjZXBvaW50cyBvbiB0aGUgdGFyZ2V0LiAgKi8KLSAKLS1ERUZfVkVDX1Ag KGNoYXJfcHRyKTsKLS0KLSBzdHJ1Y3QgdXBsb2FkZWRfdHAKLSB7Ci0gICBpbnQgbnVtYmVyOwoK ZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMm9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDJv ZjE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NGM5YmIKLS0t IC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDJvZjE4LnBhdGNoCkBAIC0wLDAgKzEsMTAz IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjA1Lmh0 bWwKKworLS0tIHNyYy9nZGIvZ2RiX3ZlY3MuaAorKysrIHNyYy9nZGIvZ2RiX3ZlY3MuaAkyMDEy LTA0LTE3IDIyOjA0OjIzLjgxODY2NjAwMCArMDAwMAorQEAgLTAsMCArMSwyOCBAQAorKy8qIFNv bWUgY29tbW9ubHktdXNlZCBWRUMgdHlwZXMuCisrCisrICAgQ29weXJpZ2h0IChDKSAyMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisr CisrI2lmbmRlZiBHREJfVkVDU19ICisrI2RlZmluZSBHREJfVkVDU19ICisrCisrI2luY2x1ZGUg InZlYy5oIgorKworK0RFRl9WRUNfUCAoY2hhcl9wdHIpOworKworKyNlbmRpZiAvKiBHREJfVkVD U19IICovCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozMjo1NgkxLjEzNzc0 CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozNjozNwkxLjEzNzc1CisjIyAt MSwzICsxLDEwIEBACisrMjAxMi0wMS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29t PgorKworKwkqIGFkYS1sYW5nLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiBjaGFyc2V0LmM6 IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiB0cmFjZXBvaW50Lmg6IEluY2x1ZGUgZ2RiX3ZlY3Mu aC4KKysJKiBnZGJfdmVjcy5oOiBOZXcgZmlsZS4KKysKKyAyMDEyLTAxLTI0ICBQZWRybyBBbHZl cyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogYnJlYWtwb2ludC5jIChicmVha3Bv aW50X2hpdF9jYXRjaF9mb3JrKQorLS0tIHNyYy9nZGIvYWRhLWxhbmcuYwkyMDEyLzAxLzA2IDAz OjM0OjQ1CTEuMzMwCisrKysgc3JjL2dkYi9hZGEtbGFuZy5jCTIwMTIvMDEvMjQgMjE6MzY6MzcJ MS4zMzEKK0BAIC01Nyw2ICs1Nyw3IEBACisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCisgI2luY2x1 ZGUgInZlYy5oIgorICNpbmNsdWRlICJzdGFjay5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgor IAorICNpbmNsdWRlICJwc3ltdGFiLmgiCisgI2luY2x1ZGUgInZhbHVlLmgiCitAQCAtNTYyOCw4 ICs1NjI5LDYgQEAKKyAgIHJldHVybiBzeW1fbmFtZTsKKyB9CisgCistREVGX1ZFQ19QIChjaGFy X3B0cik7CistCisgLyogQSBjb21wYW5pb24gZnVuY3Rpb24gdG8gYWRhX21ha2Vfc3ltYm9sX2Nv bXBsZXRpb25fbGlzdCgpLgorICAgIENoZWNrIGlmIFNZTV9OQU1FIHJlcHJlc2VudHMgYSBzeW1i b2wgd2hpY2ggbmFtZSB3b3VsZCBiZSBzdWl0YWJsZQorICAgIHRvIGNvbXBsZXRlIFRFWFQgKFRF WFRfTEVOIGlzIHRoZSBsZW5ndGggb2YgVEVYVCksIGluIHdoaWNoIGNhc2UKKy0tLSBzcmMvZ2Ri L2NoYXJzZXQuYwkyMDEyLzAxLzA0IDA4OjE3OjAwCTEuNDYKKysrKyBzcmMvZ2RiL2NoYXJzZXQu YwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUg InZlYy5oIgorICNpbmNsdWRlICJlbnZpcm9uLmgiCisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIK KysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1 ZGUgImdkYl9zdHJpbmcuaCIKK0BAIC03MTcsOCArNzE4LDYgQEAKKyAKKyBleHRlcm4gaW5pdGlh bGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NoYXJzZXQ7IC8qIC1XbWlzc2luZy1wcm90b3R5 cGUgKi8KKyAKKy1ERUZfVkVDX1AgKGNoYXJfcHRyKTsKKy0KKyBzdGF0aWMgVkVDIChjaGFyX3B0 cikgKmNoYXJzZXRzOworIAorICNpZmRlZiBQSE9OWV9JQ09OVgorLS0tIHNyYy9nZGIvdHJhY2Vw b2ludC5oCTIwMTIvMDEvMDQgMDg6Mjc6NTcJMS40NgorKysrIHNyYy9nZGIvdHJhY2Vwb2ludC5o CTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NworQEAgLTIyLDYgKzIyLDcgQEAKKyAjaW5jbHVkZSAi YnJlYWtwb2ludC5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVkZSAibWVtcmFuZ2Uu aCIKKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAvKiBBIHRyYWNlIHN0YXRlIHZhcmlhYmxl IGlzIGEgdmFsdWUgbWFuYWdlZCBieSBhIHRhcmdldCBiZWluZworICAgIHRyYWNlZC4gIEEgdHJh Y2Ugc3RhdGUgdmFyaWFibGUgKG9yIHRzdiBmb3Igc2hvcnQpIGNhbiBiZSBhY2Nlc3NlZAorQEAg LTE0Myw4ICsxNDQsNiBAQAorIAorIC8qIFN0cnVjdCB0byBjb2xsZWN0IHJhbmRvbSBpbmZvIGFi b3V0IHRyYWNlcG9pbnRzIG9uIHRoZSB0YXJnZXQuICAqLworIAorLURFRl9WRUNfUCAoY2hhcl9w dHIpOworLQorIHN0cnVjdCB1cGxvYWRlZF90cAorIHsKKyAgIGludCBudW1iZXI7CgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTAzb2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wM29mMTIucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwZWZjOGMuLjAwMDAwMDAKLS0tIGEv Z2RiLWF1dG9sb2FkLTAzb2YxMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBA Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjE5Lmh0bWwK LQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMTY6NDQ6MjkJMS4xMzc4MAotIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMjE6NTQ6NDIJMS4xMzc4MQotIyMgLTEsMyAr MSwyMiBAQAotKzIwMTItMDEtMjYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLSsKLSsJRG8gbm90IG9wZW4gc2NyaXB0IGZpbGVuYW1lcyB0d2ljZS4KLSsJKiBj bGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6IFBhc3MgdG8KLSsJc291 cmNlX3B5dGhvbl9zY3JpcHQgYWxzbyBTVFJFQU0uCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5j IChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogUGFzcyB0bwotKwlzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSBhbHNvIFNUUkVBTS4KLSsJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6 IFBhc3MgdG8gc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUKLSsJYWxzbyBJTlBVVC4K LSsJKiBweXRob24vcHl0aG9uLWludGVybmFsLmggKHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlKTogTmV3Ci0rCXBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8g ZmlsZW5hbWUuCi0rCSogcHl0aG9uL3B5dGhvbi5jIChweXRob25fcnVuX3NpbXBsZV9maWxlKTog Q2FsbCBQeVJ1bl9TaW1wbGVGaWxlCi0rCWluc3RlYWQgaWYgIV9XSU4zMi4gIFVwZGF0ZSB0aGUg ZnVuY3Rpb24gY29tbWVudC4KLSsJKHNvdXJjZV9weXRob25fc2NyaXB0LCBzb3VyY2VfcHl0aG9u X3NjcmlwdF9mb3Jfb2JqZmlsZSkKLSsJKHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFt ZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8KLSsJZmlsZW5hbWUuICBQYXNzIEZJ TEVOQU1FIHRvIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUuCi0rCSogcHl0aG9uL3B5dGhvbi5oIChz b3VyY2VfcHl0aG9uX3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIgZmlsZSwgcmVuYW1lCi0rCXBhcmFt ZXRlciBmaWxlIHRvIGZpbGVuYW1lLgotKwotIDIwMTItMDEtMjYgIFBlZHJvIEFsdmVzICA8cGFs dmVzQHJlZGhhdC5jb20+Ci0gCi0gCSogY29yZWxvdy5jIChjb3JlX2hhc19mYWtlX3BpZCk6IERl bGV0ZS4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJ MjAxMi0wMS0wNCAwOToxNzoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIw MAotQEAgLTUyOSw5ICs1MjksNyBAQCBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpz dHJlYW0sCi0gCi0gICAgICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19FUlJPUikKLSAJewot LSAgICAgICAgICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSB1c2luZyBw eXRob24gZnVuY3Rpb25zLAotLSAgICAgICAgICAgICBzbyB0aGVyZSdzIG5vIHBvaW50IGluIHBh c3NpbmcgU1RSRUFNIGhlcmUuICAqLwotLQkgIHNvdXJjZV9weXRob25fc2NyaXB0IChmaWxlKTsK LSsJICBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoc3RyZWFtLCBmaWxlKTsKLSAJfQotICAgICAgIGlm IChlLnJlYXNvbiA8IDApCi0gCXsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRo b24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQu YwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTMxMiw3ICszMTIsNyBA QCBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvCi0gCXsKLSAJICAvKiBJ ZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwotIAkgIGlm ICghIGluX2hhc2hfdGFibGUpCi0tCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSAob2JqZmlsZSwgZnVsbF9wYXRoKTsKLSsJICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7Ci0gCSAgZmNsb3NlIChzdHJlYW0p OwotIAkgIHhmcmVlIChmdWxsX3BhdGgpOwotIAl9Ci1AQCAtNDMxLDcgKzQzMSw3IEBAIGF1dG9f bG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAJIEl0J3MgaGlnaGx5IHVubGlr ZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCi0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBh cmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQotIAkgbG9hZHMgYW55 d2F5LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmls ZSwgZGVidWdmaWxlKTsKLSsgICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAo b2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0gICAgICAgZmNsb3NlIChpbnB1dCk7Ci0gICAg IH0KLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLWludGVy bmFsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhv bi9weXRob24taW50ZXJuYWwuaAkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEy LTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTI4OSw4ICsyODksOCBAQCBleHRl cm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvCi0gCi0gdm9pZCBnZGJweV9wcmlu dF9zdGFjayAodm9pZCk7Ci0gCi0tdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJCSAgICAgICBjb25zdCBjaGFyICpmaWxl KTsKLSt2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1l KTsKLSAKLSBQeU9iamVjdCAqcHl0aG9uX3N0cmluZ190b191bmljb2RlIChQeU9iamVjdCAqb2Jq KTsKLSBjaGFyICp1bmljb2RlX3RvX3RhcmdldF9zdHJpbmcgKFB5T2JqZWN0ICp1bmljb2RlX3N0 cik7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJ MjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTY4NTU0MzAgKzAy MDAKLUBAIC0xNTQsMzQgKzE1NCwzMSBAQCBlbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyCi0gICByZXR1cm4gbWFrZV9jbGVhbnVwIChyZXN0b3JlX3B5dGhvbl9lbnYsIGVu dik7Ci0gfQotIAotLS8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEVO QU1FIGlzIHRoZSBuYW1lIG9mCi0tICAgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuLgotKy8qIEEg d3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEUgaXMgdGhlIFB5dGhvbiBzY3Jp cHQgdG8gcnVuCi0rICAgbmFtZWQgRklMRU5BTUUuCi0gCi0tICAgT25lIG9mIHRoZSBwYXJhbWV0 ZXJzIG9mIFB5UnVuX1NpbXBsZUZpbGUgaXMgYSBGSUxFICouCi0tICAgVGhlIHByb2JsZW0gaXMg dGhhdCB0eXBlIEZJTEUgaXMgZXh0cmVtZWx5IHN5c3RlbSBhbmQgY29tcGlsZXIKLS0gICBkZXBl bmRlbnQuICBTbywgdW5sZXNzIHRoZSBQeXRob24gbGlicmFyeSBoYXMgYmVlbiBjb21waWxlZCB1 c2luZwotLSAgIHRoZSBzYW1lIGJ1aWxkIGVudmlyb25tZW50IGFzIEdEQiwgd2UgcnVuIHRoZSBy aXNrIG9mIGdldHRpbmcKLS0gICBhIGNyYXNoIGR1ZSB0byBpbmNvbnNpc3RlbmNpZXMgYmV0d2Vl biB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IEdEQiwKLS0gICBhbmQgdGhlIGRlZmluaXRpb24gdXNl ZCBieSBQeXRob24uICBBIG1pc21hdGNoIGNhbiB2ZXJ5IGxpa2VseQotLSAgIGxlYWQgdG8gYSBj cmFzaC4KLS0KLS0gICBUaGVyZSBpcyBhbHNvIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIFB5dGhv biBsaWJyYXJ5IGFuZCBHREIKLS0gICBhcmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBv ZiB0aGUgQyBydW50aW1lIGxpYnJhcnkuCi0tICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdmlzaWJs ZSBvbiBXaW5kb3dzLCB3aGVyZSBmZXcgdXNlcnMgd291bGQKLS0gICBidWlsZCBQeXRob24gdGhl bXNlbHZlcyAodGhpcyBpcyBubyB0cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksCi0tICAg YW5kIHRodXMgdXNlIGJpbmFyaWVzIGJ1aWx0IGJ5IHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiBQeXRo b24sCi0tICAgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRo ZSBtc3ZjciBETEwKLS0gICAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2 Y3J0LmRsbC4gIEEgRklMRSAqCi0tICAgZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3Nh cmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgotKyAgIE9uIFdpbmRvd3MgaG9zdHMgZmV3IHVzZXJz IHdvdWxkIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVzICh0aGlzIGlzIG5vCi0rICAgdHJpdmlhbCB0 YXNrIG9uIHRoaXMgcGxhdGZvcm0pLCBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkKLSsg ICBzb21lb25lIGVsc2UgaW5zdGVhZC4gIFRoZXJlIG1heSBoYXBwZW4gc2l0dWF0aW9uIHdoZXJl IHRoZSBQeXRob24KLSsgICBsaWJyYXJ5IGFuZCBHREIgYXJlIHVzaW5nIHR3byBkaWZmZXJlbnQg dmVyc2lvbnMgb2YgdGhlIEMgcnVudGltZQotKyAgIGxpYnJhcnkuICBQeXRob24sIGJlaW5nIGJ1 aWx0IHdpdGggVkMsIHdvdWxkIHVzZSBvbmUgdmVyc2lvbiBvZiB0aGUKLSsgICBtc3ZjciBETEwg KEVnLiBtc3ZjcjEwMC5kbGwpLCB3aGlsZSBNaW5HVyB1c2VzIG1zdmNydC5kbGwuCi0rICAgQSBG SUxFICogZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJl Y3RseSBpbgotICAgIHRoZSBvdGhlciBydW50aW1lLgotIAotLSAgIFRvIHdvcmsgYXJvdW5kIHRo aXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgdGhlIEZJTEUgb2JqZWN0Ci0tICAgdXNpbmcg UHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMgY29tcGF0aWJsZQot LSAgIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KLSsgICBUbyB3b3JrIGFyb3VuZCB0aGlz IHBvdGVudGlhbCBpc3N1ZSwgd2UgY3JlYXRlIG9uIFdpbmRvd3MgaG9zdHMgdGhlCi0rICAgRklM RSBvYmplY3QgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQg aXMKLSsgICBjb21wYXRpYmxlIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KLSAKLSBzdGF0 aWMgdm9pZAotLXB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQot K3B5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1l KQotIHsKLSsjaWZuZGVmIF9XSU4zMgotKwotKyAgUHlSdW5fU2ltcGxlRmlsZSAoZmlsZSwgZmls ZW5hbWUpOwotKwotKyNlbHNlIC8qIF9XSU4zMiAqLwotKwotICAgY2hhciAqZnVsbF9wYXRoOwot ICAgUHlPYmplY3QgKnB5dGhvbl9maWxlOwotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci1A QCAtMjAxLDYgKzE5OCw4IEBAIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZp bGUKLSAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5dGhvbl9maWxlKTsKLSAgIFB5UnVuX1Np bXBsZUZpbGUgKFB5RmlsZV9Bc0ZpbGUgKHB5dGhvbl9maWxlKSwgZmlsZW5hbWUpOwotICAgZG9f Y2xlYW51cHMgKGNsZWFudXApOwotKwotKyNlbmRpZiAvKiBfV0lOMzIgKi8KLSB9Ci0gCi0gLyog R2l2ZW4gYSBjb21tYW5kX2xpbmUsIHJldHVybiBhIGNvbW1hbmQgc3RyaW5nIHN1aXRhYmxlIGZv ciBwYXNzaW5nCi1AQCAtNjIzLDE3ICs2MjIsMTcgQEAgZ2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5 T2JqZWN0ICpzZWxmLCBQeQotIH0KLSAKLSAvKiBSZWFkIGEgZmlsZSBhcyBQeXRob24gY29kZS4K LS0gICBGSUxFIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlLgotKyAgIEZJTEUgaXMgdGhlIGZpbGUg dG8gcnVuLiAgRklMRU5BTUUgaXMgbmFtZSBvZiB0aGUgZmlsZSBGSUxFLgotICAgIFRoaXMgZG9l cyBub3QgdGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgcHl0aG9uIHdp bGwgcHJpbnQKLSAgICB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9y LiAgKi8KLSAKLSB2b2lkCi0tc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUp Ci0rc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1l KQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotIAotICAgY2xlYW51cCA9IGVuc3Vy ZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLS0g IHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUpOwotKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmls ZSAoZmlsZSwgZmlsZW5hbWUpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIH0KLSAKLUBA IC0xMDQxLDE5ICsxMDQwLDIwIEBAIGdkYnB5X3Byb2dzcGFjZXMgKFB5T2JqZWN0ICp1bnVzZWQx LCBQeU8KLSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZTsgaXQgaXMgTlVMTCBh dCBvdGhlciB0aW1lcy4gICovCi0gc3RhdGljIHN0cnVjdCBvYmpmaWxlICpnZGJweV9jdXJyZW50 X29iamZpbGU7Ci0gCi0tLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQg dGhlbiByZWFkIEZJTEUgYXMgUHl0aG9uIGNvZGUuCi0tICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBh bnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRob24gd2lsbCBwcmludAotLSAg IHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICAqLwotKy8qIFNl dCB0aGUgY3VycmVudCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBGSUxFIG5hbWVk IEZJTEVOQU1FCi0rICAgYXMgUHl0aG9uIGNvZGUuICBUaGlzIGRvZXMgbm90IHRocm93IGFueSBl cnJvcnMuICBJZiBhbiBleGNlcHRpb24KLSsgICBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhl IHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCi0gCi0gdm9pZAot LXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgY29uc3QgY2hhciAqZmlsZSkKLStzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIHN0cnVjdCBjbGVh bnVwICpjbGVhbnVwczsKLSAKLSAgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9v YmpmaWxlX2FyY2ggKG9iamZpbGUpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSAgIGdkYnB5X2N1cnJl bnRfb2JqZmlsZSA9IG9iamZpbGU7Ci0gCi0tICBweXRob25fcnVuX3NpbXBsZV9maWxlIChmaWxl KTsKLSsgIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKLSAKLSAgIGRv X2NsZWFudXBzIChjbGVhbnVwcyk7Ci0gICBnZGJweV9jdXJyZW50X29iamZpbGUgPSBOVUxMOwot QEAgLTExMjksNyArMTEyOSw3IEBAIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChz dHJ1Y3QKLSB9Ci0gCi0gdm9pZAotLXNvdXJjZV9weXRob25fc2NyaXB0IChjb25zdCBjaGFyICpm aWxlKQotK3NvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpmaWxl bmFtZSkKLSB7Ci0gICB0aHJvd19lcnJvciAoVU5TVVBQT1JURURfRVJST1IsCi0gCSAgICAgICBf KCJQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4i KSk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJ MjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTc4NTU0MjcgKzAy MDAKLUBAIC0zMCw3ICszMCw3IEBAIGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6 YXRpb24KLSAKLSB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3Qg Y29tbWFuZF9saW5lICopOwotIAotLXZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNo YXIgKmZpbGUpOwotK3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKTsKLSAKLSB2b2lkIHJ1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywg Y2hhciAqKmFyZ3YpOwotIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wM29mMTgucGF0Y2gg Yi9nZGItYXV0b2xvYWQtMDNvZjE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmMwZWZjOGMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDNvZjE4LnBh dGNoCkBAIC0wLDAgKzEsMjE1IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTAxL21zZzAwMjE5Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYg MTY6NDQ6MjkJMS4xMzc4MAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMjE6NTQ6 NDIJMS4xMzc4MQorIyMgLTEsMyArMSwyMiBAQAorKzIwMTItMDEtMjYgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJRG8gbm90IG9wZW4gc2NyaXB0IGZp bGVuYW1lcyB0d2ljZS4KKysJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9tX3N0 cmVhbSk6IFBhc3MgdG8KKysJc291cmNlX3B5dGhvbl9zY3JpcHQgYWxzbyBTVFJFQU0uCisrCSog cHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogUGFzcyB0bwor Kwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBhbHNvIFNUUkVBTS4KKysJKGF1dG9f bG9hZF9vYmpmaWxlX3NjcmlwdCk6IFBhc3MgdG8gc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29i amZpbGUKKysJYWxzbyBJTlBVVC4KKysJKiBweXRob24vcHl0aG9uLWludGVybmFsLmggKHNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3CisrCXBhcmFtZXRlciBmaWxlLCByZW5h bWUgcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCisrCSogcHl0aG9uL3B5dGhvbi5jIChweXRo b25fcnVuX3NpbXBsZV9maWxlKTogQ2FsbCBQeVJ1bl9TaW1wbGVGaWxlCisrCWluc3RlYWQgaWYg IV9XSU4zMi4gIFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudC4KKysJKHNvdXJjZV9weXRob25f c2NyaXB0LCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSkKKysJKHNvdXJjZV9weXRo b25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8K KysJZmlsZW5hbWUuICBQYXNzIEZJTEVOQU1FIHRvIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUuCisr CSogcHl0aG9uL3B5dGhvbi5oIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIg ZmlsZSwgcmVuYW1lCisrCXBhcmFtZXRlciBmaWxlIHRvIGZpbGVuYW1lLgorKworIDIwMTItMDEt MjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+CisgCisgCSogY29yZWxvdy5jIChj b3JlX2hhc19mYWtlX3BpZCk6IERlbGV0ZS4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jbGkvY2xpLWNtZHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi0wMS0wNCAwOToxNzoxNi4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTA0LTE4IDAw OjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTUyOSw5ICs1MjksNyBAQCBzb3VyY2Vfc2NyaXB0 X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sCisgCisgICAgICAgVFJZX0NBVENIIChlLCBSRVRV Uk5fTUFTS19FUlJPUikKKyAJeworLSAgICAgICAgICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVv cGVucyB0aGUgZmlsZSB1c2luZyBweXRob24gZnVuY3Rpb25zLAorLSAgICAgICAgICAgICBzbyB0 aGVyZSdzIG5vIHBvaW50IGluIHBhc3NpbmcgU1RSRUFNIGhlcmUuICAqLworLQkgIHNvdXJjZV9w eXRob25fc2NyaXB0IChmaWxlKTsKKysJICBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoc3RyZWFtLCBm aWxlKTsKKyAJfQorICAgICAgIGlmIChlLnJlYXNvbiA8IDApCisgCXsKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTAx LTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIw MAorQEAgLTMxMiw3ICszMTIsNyBAQCBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VY UF0nIHRvCisgCXsKKyAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQs IGxvYWQgaXQuICAqLworIAkgIGlmICghIGluX2hhc2hfdGFibGUpCistCSAgICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZnVsbF9wYXRoKTsKKysJICAgIHNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7 CisgCSAgZmNsb3NlIChzdHJlYW0pOworIAkgIHhmcmVlIChmdWxsX3BhdGgpOworIAl9CitAQCAt NDMxLDcgKzQzMSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUK KyAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCisg CSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBt dWx0aXBsZQorIAkgbG9hZHMgYW55d2F5LiAgKi8KKy0gICAgICBzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZGVidWdmaWxlKTsKKysgICAgICBzb3VyY2VfcHl0aG9u X3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CisgICAgICAg ZmNsb3NlIChpbnB1dCk7CisgICAgIH0KKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTAxLTA0IDA5OjE3 OjI1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9w eXRob24taW50ZXJuYWwuaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAg LTI4OSw4ICsyODksOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhv CisgCisgdm9pZCBnZGJweV9wcmludF9zdGFjayAodm9pZCk7CisgCistdm9pZCBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJCSAg ICAgICBjb25zdCBjaGFyICpmaWxlKTsKKyt2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJICAgICAg IGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKyBQeU9iamVjdCAqcHl0aG9uX3N0cmluZ190b191 bmljb2RlIChQeU9iamVjdCAqb2JqKTsKKyBjaGFyICp1bmljb2RlX3RvX3RhcmdldF9zdHJpbmcg KFB5T2JqZWN0ICp1bmljb2RlX3N0cik7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv cHl0aG9uL3B5dGhvbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAw MDo0MTo0Mi42OTY4NTU0MzAgKzAyMDAKK0BAIC0xNTQsMzQgKzE1NCwzMSBAQCBlbnN1cmVfcHl0 aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCisgICByZXR1cm4gbWFrZV9jbGVhbnVwIChy ZXN0b3JlX3B5dGhvbl9lbnYsIGVudik7CisgfQorIAorLS8qIEEgd3JhcHBlciBhcm91bmQgUHlS dW5fU2ltcGxlRmlsZS4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mCistICAgdGhlIFB5dGhvbiBz Y3JpcHQgdG8gcnVuLgorKy8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJ TEUgaXMgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuCisrICAgbmFtZWQgRklMRU5BTUUuCisgCist ICAgT25lIG9mIHRoZSBwYXJhbWV0ZXJzIG9mIFB5UnVuX1NpbXBsZUZpbGUgaXMgYSBGSUxFICou CistICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0eXBlIEZJTEUgaXMgZXh0cmVtZWx5IHN5c3RlbSBh bmQgY29tcGlsZXIKKy0gICBkZXBlbmRlbnQuICBTbywgdW5sZXNzIHRoZSBQeXRob24gbGlicmFy eSBoYXMgYmVlbiBjb21waWxlZCB1c2luZworLSAgIHRoZSBzYW1lIGJ1aWxkIGVudmlyb25tZW50 IGFzIEdEQiwgd2UgcnVuIHRoZSByaXNrIG9mIGdldHRpbmcKKy0gICBhIGNyYXNoIGR1ZSB0byBp bmNvbnNpc3RlbmNpZXMgYmV0d2VlbiB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IEdEQiwKKy0gICBh bmQgdGhlIGRlZmluaXRpb24gdXNlZCBieSBQeXRob24uICBBIG1pc21hdGNoIGNhbiB2ZXJ5IGxp a2VseQorLSAgIGxlYWQgdG8gYSBjcmFzaC4KKy0KKy0gICBUaGVyZSBpcyBhbHNvIHRoZSBzaXR1 YXRpb24gd2hlcmUgdGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCBHREIKKy0gICBhcmUgdXNpbmcgdHdv IGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lIGxpYnJhcnkuCistICAgVGhpcyBp cyBwYXJ0aWN1bGFybHkgdmlzaWJsZSBvbiBXaW5kb3dzLCB3aGVyZSBmZXcgdXNlcnMgd291bGQK Ky0gICBidWlsZCBQeXRob24gdGhlbXNlbHZlcyAodGhpcyBpcyBubyB0cml2aWFsIHRhc2sgb24g dGhpcyBwbGF0Zm9ybSksCistICAgYW5kIHRodXMgdXNlIGJpbmFyaWVzIGJ1aWx0IGJ5IHNvbWVv bmUgZWxzZSBpbnN0ZWFkLiBQeXRob24sCistICAgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291bGQg dXNlIG9uZSB2ZXJzaW9uIG9mIHRoZSBtc3ZjciBETEwKKy0gICAoRWcuIG1zdmNyMTAwLmRsbCks IHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4gIEEgRklMRSAqCistICAgZnJvbSBvbmUgcnVu dGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgorKyAgIE9uIFdp bmRvd3MgaG9zdHMgZmV3IHVzZXJzIHdvdWxkIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVzICh0aGlz IGlzIG5vCisrICAgdHJpdmlhbCB0YXNrIG9uIHRoaXMgcGxhdGZvcm0pLCBhbmQgdGh1cyB1c2Ug YmluYXJpZXMgYnVpbHQgYnkKKysgICBzb21lb25lIGVsc2UgaW5zdGVhZC4gIFRoZXJlIG1heSBo YXBwZW4gc2l0dWF0aW9uIHdoZXJlIHRoZSBQeXRob24KKysgICBsaWJyYXJ5IGFuZCBHREIgYXJl IHVzaW5nIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEMgcnVudGltZQorKyAgIGxpYnJh cnkuICBQeXRob24sIGJlaW5nIGJ1aWx0IHdpdGggVkMsIHdvdWxkIHVzZSBvbmUgdmVyc2lvbiBv ZiB0aGUKKysgICBtc3ZjciBETEwgKEVnLiBtc3ZjcjEwMC5kbGwpLCB3aGlsZSBNaW5HVyB1c2Vz IG1zdmNydC5kbGwuCisrICAgQSBGSUxFICogZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNl c3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgorICAgIHRoZSBvdGhlciBydW50aW1lLgorIAor LSAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgdGhlIEZJ TEUgb2JqZWN0CistICAgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRo YXQgaXQgaXMgY29tcGF0aWJsZQorLSAgIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KKysg ICBUbyB3b3JrIGFyb3VuZCB0aGlzIHBvdGVudGlhbCBpc3N1ZSwgd2UgY3JlYXRlIG9uIFdpbmRv d3MgaG9zdHMgdGhlCisrICAgRklMRSBvYmplY3QgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVz IG1ha2luZyBzdXJlIHRoYXQgaXQgaXMKKysgICBjb21wYXRpYmxlIHdpdGggdGhlIFB5dGhvbiBs aWJyYXJ5LiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLXB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNv bnN0IGNoYXIgKmZpbGVuYW1lKQorK3B5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKEZJTEUgKmZpbGUs IGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKysjaWZuZGVmIF9XSU4zMgorKworKyAgUHlSdW5f U2ltcGxlRmlsZSAoZmlsZSwgZmlsZW5hbWUpOworKworKyNlbHNlIC8qIF9XSU4zMiAqLworKwor ICAgY2hhciAqZnVsbF9wYXRoOworICAgUHlPYmplY3QgKnB5dGhvbl9maWxlOworICAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXA7CitAQCAtMjAxLDYgKzE5OCw4IEBAIHB5dGhvbl9ydW5fc2ltcGxl X2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGUKKyAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5dGhv bl9maWxlKTsKKyAgIFB5UnVuX1NpbXBsZUZpbGUgKFB5RmlsZV9Bc0ZpbGUgKHB5dGhvbl9maWxl KSwgZmlsZW5hbWUpOworICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworKworKyNlbmRpZiAvKiBf V0lOMzIgKi8KKyB9CisgCisgLyogR2l2ZW4gYSBjb21tYW5kX2xpbmUsIHJldHVybiBhIGNvbW1h bmQgc3RyaW5nIHN1aXRhYmxlIGZvciBwYXNzaW5nCitAQCAtNjIzLDE3ICs2MjIsMTcgQEAgZ2Ri cHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeQorIH0KKyAKKyAvKiBSZWFkIGEg ZmlsZSBhcyBQeXRob24gY29kZS4KKy0gICBGSUxFIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlLgor KyAgIEZJTEUgaXMgdGhlIGZpbGUgdG8gcnVuLiAgRklMRU5BTUUgaXMgbmFtZSBvZiB0aGUgZmls ZSBGSUxFLgorICAgIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4Y2Vw dGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQKKyAgICB0aGUgdHJhY2ViYWNrIGFuZCBjbGVh ciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KKyAKKyB2b2lkCistc291cmNlX3B5dGhvbl9zY3Jp cHQgKGNvbnN0IGNoYXIgKmZpbGUpCisrc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUs IGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwor IAorICAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBj dXJyZW50X2xhbmd1YWdlKTsKKy0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUpOworKyAg cHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOworICAgZG9fY2xlYW51cHMg KGNsZWFudXApOworIH0KKyAKK0BAIC0xMDQxLDE5ICsxMDQwLDIwIEBAIGdkYnB5X3Byb2dzcGFj ZXMgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU8KKyAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jf b2JqZmlsZTsgaXQgaXMgTlVMTCBhdCBvdGhlciB0aW1lcy4gICovCisgc3RhdGljIHN0cnVjdCBv YmpmaWxlICpnZGJweV9jdXJyZW50X29iamZpbGU7CisgCistLyogU2V0IHRoZSBjdXJyZW50IG9i amZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgYXMgUHl0aG9uIGNvZGUuCistICAg VGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBw eXRob24gd2lsbCBwcmludAorLSAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJvciBp bmRpY2F0b3IuICAqLworKy8qIFNldCB0aGUgY3VycmVudCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5k IHRoZW4gcmVhZCBGSUxFIG5hbWVkIEZJTEVOQU1FCisrICAgYXMgUHl0aG9uIGNvZGUuICBUaGlz IGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24KKysgICBvY2N1cnMg cHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGluZGlj YXRvci4gICovCisgCisgdm9pZAorLXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZmlsZSkKKytzb3VyY2VfcHl0aG9u X3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1l KQorIHsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKyAKKyAgIGNsZWFudXBzID0gZW5z dXJlX3B5dGhvbl9lbnYgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLCBjdXJyZW50X2xhbmd1 YWdlKTsKKyAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7CisgCistICBweXRob25f cnVuX3NpbXBsZV9maWxlIChmaWxlKTsKKysgIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUs IGZpbGVuYW1lKTsKKyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisgICBnZGJweV9jdXJy ZW50X29iamZpbGUgPSBOVUxMOworQEAgLTExMjksNyArMTEyOSw3IEBAIGV2YWxfcHl0aG9uX2Zy b21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QKKyB9CisgCisgdm9pZAorLXNvdXJjZV9weXRob25f c2NyaXB0IChjb25zdCBjaGFyICpmaWxlKQorK3NvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpm aWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyB7CisgICB0aHJvd19lcnJvciAoVU5TVVBQT1JU RURfRVJST1IsCisgCSAgICAgICBfKCJQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQg aW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv cHl0aG9uL3B5dGhvbi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAw MDo0MTo0Mi42OTc4NTU0MjcgKzAyMDAKK0BAIC0zMCw3ICszMCw3IEBAIGV4dGVybiB2b2lkIGZp bmlzaF9weXRob25faW5pdGlhbGl6YXRpb24KKyAKKyB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29u dHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworIAorLXZvaWQgc291cmNlX3B5 dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpOworK3ZvaWQgc291cmNlX3B5dGhvbl9zY3Jp cHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKyB2b2lkIHJ1bl9weXRo b25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworIAoKZGlmZiAtLWdpdCBhL2dkYi1h dXRvbG9hZC0wNG9mMTIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDRvZjEyLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDVhYzg3Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9h ZC0wNG9mMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNC5odG1sCi0KLSMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjEzOjM5CTEuMTQwMjUKLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKLSMjIC0xLDMgKzEsMTQgQEAKLSsy MDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0r Ci0rCUNvZGUgY2xlYW51cC4KLSsJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhl cmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCi0rCShjbWRhcmdfcywgVkVDIChjbWRh cmdfcykpOiBOZXcuCi0rCShtYWluKTogTW92ZSBzdHJ1Y3QgY21kYXJnIGZyb20gaGVyZS4gIE5l dyB2YXJpYWJsZXMgY21kYXJnX3ZlYyBhbmQKLSsJY21kYXJnX3AuICBSZW1vdmUgdmFyaWFibGVz IGNtZHNpemUgYW5kIG5jbWQgYW5kIHRoZWlyIGluaXRpYWxpemF0aW9uLgotKwlJbnN0YWxsIGNs ZWFudXAgZm9yIGNtZGFyZ192ZWMuICBVcGRhdGUgZmlsbGluZyBmb3Igb3B0aW9ucyAneCcgYW5k Ci0rCSdYJy4gIFJlcGxhY2UgY21kYXJnIHByb2Nlc3NpbmcgYnkgY21kYXJnX3ZlYyBwcm9jZXNz aW5nLiAgUmVtb3ZlIHhmcmVlCi0rCW9mIENNREFSRy4KLSsKLSAyMDEyLTAzLTE5ICBUb20gVHJv bWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0gCSogZ251LXYzLWFiaS5jIChnbnV2M19wcmlu dF92dGFibGUpOiBJbml0aWFsaXplICdyZXN1bHRfdmVjJy4KLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1LjM1NDc3MjMz NyArMDIwMAotQEAgLTI3Nyw2ICsyNzcsMjUgQEAgZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNoIChj aGFyICpmaWxlbmFtZQotICAgICB9Ci0gfQotIAotKy8qIEFyZ3VtZW50cyBvZiAtLWNvbW1hbmQg b3B0aW9uIGFuZCBpdHMgY291bnRlcnBhcnQuICAqLwotK3R5cGVkZWYgc3RydWN0IGNtZGFyZyB7 Ci0rICAvKiBUeXBlIG9mIHRoaXMgb3B0aW9uLiAgKi8KLSsgIGVudW0gewotKyAgICAvKiBPcHRp b24gdHlwZSAteC4gICovCi0rICAgIENNREFSR19GSUxFLAotKwotKyAgICAvKiBPcHRpb24gdHlw ZSAtZXguICAqLwotKyAgICBDTURBUkdfQ09NTUFORAotKyAgfSB0eXBlOwotKwotKyAgLyogVmFs dWUgb2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNvbW1hbmQgaXRzZWxmLiAg U3RyaW5nIG1lbW9yeQotKyAgICAgaXMgbm90IG93bmVkIGJ5IHRoaXMgc3RydWN0dXJlIGRlc3Bp dGUgaXQgaXMgJ2NvbnN0Jy4gICovCi0rICBjaGFyICpzdHJpbmc7Ci0rfSBjbWRhcmdfczsKLSsK LSsvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4gICovCi0rREVGX1ZFQ19PIChjbWRhcmdf cyk7Ci0rCi0gc3RhdGljIGludAotIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gewotQEAg LTMwMywxNyArMzIyLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIHN0YXRpYyBp bnQgcHJpbnRfdmVyc2lvbjsKLSAKLSAgIC8qIFBvaW50ZXJzIHRvIGFsbCBhcmd1bWVudHMgb2Yg LS1jb21tYW5kIG9wdGlvbi4gICovCi0tICBzdHJ1Y3QgY21kYXJnIHsKLS0gICAgZW51bSB7Ci0t ICAgICAgQ01EQVJHX0ZJTEUsCi0tICAgICAgQ01EQVJHX0NPTU1BTkQKLS0gICAgfSB0eXBlOwot LSAgICBjaGFyICpzdHJpbmc7Ci0tICB9ICpjbWRhcmc7Ci0tICAvKiBBbGxvY2F0ZWQgc2l6ZSBv ZiBjbWRhcmcuICAqLwotLSAgaW50IGNtZHNpemU7Ci0tICAvKiBOdW1iZXIgb2YgZWxlbWVudHMg b2YgY21kYXJnIHVzZWQuICAqLwotLSAgaW50IG5jbWQ7Ci0rICBWRUMgKGNtZGFyZ19zKSAqY21k YXJnX3ZlYyA9IE5VTEw7Ci0rICBzdHJ1Y3QgY21kYXJnICpjbWRhcmdfcDsKLSAKLSAgIC8qIElu ZGljZXMgb2YgYWxsIGFyZ3VtZW50cyBvZiAtLWRpcmVjdG9yeSBvcHRpb24uICAqLwotICAgY2hh ciAqKmRpcmFyZzsKLUBAIC0zNDksOSArMzU5LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKLSAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NBTEVESVIpOwotICAgdGV4dGRvbWFp biAoUEFDS0FHRSk7Ci0gCi0tICBjbWRzaXplID0gMTsKLS0gIGNtZGFyZyA9IChzdHJ1Y3QgY21k YXJnICopIHhtYWxsb2MgKGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKLS0gIG5jbWQgPSAw OwotKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY21kYXJnX3MpLCAmY21kYXJnX3ZlYyk7 Ci0gICBkaXJzaXplID0gMTsKLSAgIGRpcmFyZyA9IChjaGFyICoqKSB4bWFsbG9jIChkaXJzaXpl ICogc2l6ZW9mICgqZGlyYXJnKSk7Ci0gICBuZGlyID0gMDsKLUBAIC01ODIsMjQgKzU5MCwxOSBA QCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAkgICAgcGlkYXJnID0gb3B0YXJnOwotIAkg ICAgYnJlYWs7Ci0gCSAgY2FzZSAneCc6Ci0tCSAgICBjbWRhcmdbbmNtZF0udHlwZSA9IENNREFS R19GSUxFOwotLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJnOwotLQkgICAgaWYg KG5jbWQgPj0gY21kc2l6ZSkKLS0JICAgICAgewotLQkJY21kc2l6ZSAqPSAyOwotLQkJY21kYXJn ID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKLS0JCQkJICAgY21kc2l6ZSAqIHNpemVvZiAo KmNtZGFyZykpOwotLQkgICAgICB9Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBjbWRhcmcgY21k YXJnID0geyBDTURBUkdfRklMRSwgb3B0YXJnIH07Ci0rCi0rCSAgICAgIFZFQ19zYWZlX3B1c2gg KGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKLSsJICAgIH0KLSAJICAgIGJyZWFrOwot IAkgIGNhc2UgJ1gnOgotLQkgICAgY21kYXJnW25jbWRdLnR5cGUgPSBDTURBUkdfQ09NTUFORDsK LS0JICAgIGNtZGFyZ1tuY21kKytdLnN0cmluZyA9IG9wdGFyZzsKLS0JICAgIGlmIChuY21kID49 IGNtZHNpemUpCi0tCSAgICAgIHsKLS0JCWNtZHNpemUgKj0gMjsKLS0JCWNtZGFyZyA9IHhyZWFs bG9jICgoY2hhciAqKSBjbWRhcmcsCi0tCQkJCSAgIGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcp KTsKLS0JICAgICAgfQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsg Q01EQVJHX0NPTU1BTkQsIG9wdGFyZyB9OwotKwotKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRh cmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0rCSAgICB9Ci0rCSAgICBicmVhazsKLSAJICAg IGJyZWFrOwotIAkgIGNhc2UgJ0InOgotIAkgICAgYmF0Y2hfZmxhZyA9IGJhdGNoX3NpbGVudCA9 IDE7Ci1AQCAtOTkwLDE2ICs5OTMsMTggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAg IEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZp bGUgKG9iamZpbGUpOwotIAotLSAgZm9yIChpID0gMDsgaSA8IG5jbWQ7IGkrKykKLSsgIGZvciAo aSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBp KyspCi0rICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCi0gICAgIHsKLS0gICAgICBpZiAoY21k YXJnW2ldLnR5cGUgPT0gQ01EQVJHX0ZJTEUpCi0tICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9y cyAoc291cmNlX3NjcmlwdCwgY21kYXJnW2ldLnN0cmluZywKLSsgICAgICBjYXNlIENNREFSR19G SUxFOgotKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNtZGFy Z19wLT5zdHJpbmcsCi0gCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7Ci0t ICAgICAgZWxzZSAgLyogY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0NPTU1BTkQgKi8KLS0gICAg ICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNtZGFyZ1tpXS5zdHJp bmcsCi0rCWJyZWFrOwotKyAgICAgIGNhc2UgQ01EQVJHX0NPTU1BTkQ6Ci0rICAgICAgICBjYXRj aF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5nLAotIAkJ CSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOwotKwlicmVhazsKLSAgICAgfQot LSAgeGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRl ciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCi0gICAgICByZWFkLiAgKi8KCmRpZmYg LS1naXQgYS9nZGItYXV0b2xvYWQtMDRvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA0b2YxOC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDVhYzg3Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA0b2YxOC5wYXRjaApAQCAtMCwwICsxLDE0MSBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNC5odG1sCisK KyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjEzOjM5CTEuMTQwMjUKKyMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKKyMjIC0xLDMgKzEs MTQgQEAKKysyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+CisrCisrCUNvZGUgY2xlYW51cC4KKysJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBN b3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCisrCShjbWRhcmdfcywg VkVDIChjbWRhcmdfcykpOiBOZXcuCisrCShtYWluKTogTW92ZSBzdHJ1Y3QgY21kYXJnIGZyb20g aGVyZS4gIE5ldyB2YXJpYWJsZXMgY21kYXJnX3ZlYyBhbmQKKysJY21kYXJnX3AuICBSZW1vdmUg dmFyaWFibGVzIGNtZHNpemUgYW5kIG5jbWQgYW5kIHRoZWlyIGluaXRpYWxpemF0aW9uLgorKwlJ bnN0YWxsIGNsZWFudXAgZm9yIGNtZGFyZ192ZWMuICBVcGRhdGUgZmlsbGluZyBmb3Igb3B0aW9u cyAneCcgYW5kCisrCSdYJy4gIFJlcGxhY2UgY21kYXJnIHByb2Nlc3NpbmcgYnkgY21kYXJnX3Zl YyBwcm9jZXNzaW5nLiAgUmVtb3ZlIHhmcmVlCisrCW9mIENNREFSRy4KKysKKyAyMDEyLTAzLTE5 ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgCisgCSogZ251LXYzLWFiaS5jIChn bnV2M19wcmludF92dGFibGUpOiBJbml0aWFsaXplICdyZXN1bHRfdmVjJy4KK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1 LjM1NDc3MjMzNyArMDIwMAorQEAgLTI3Nyw2ICsyNzcsMjUgQEAgZXhlY19vcl9jb3JlX2ZpbGVf YXR0YWNoIChjaGFyICpmaWxlbmFtZQorICAgICB9CisgfQorIAorKy8qIEFyZ3VtZW50cyBvZiAt LWNvbW1hbmQgb3B0aW9uIGFuZCBpdHMgY291bnRlcnBhcnQuICAqLworK3R5cGVkZWYgc3RydWN0 IGNtZGFyZyB7CisrICAvKiBUeXBlIG9mIHRoaXMgb3B0aW9uLiAgKi8KKysgIGVudW0geworKyAg ICAvKiBPcHRpb24gdHlwZSAteC4gICovCisrICAgIENNREFSR19GSUxFLAorKworKyAgICAvKiBP cHRpb24gdHlwZSAtZXguICAqLworKyAgICBDTURBUkdfQ09NTUFORAorKyAgfSB0eXBlOworKwor KyAgLyogVmFsdWUgb2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNvbW1hbmQg aXRzZWxmLiAgU3RyaW5nIG1lbW9yeQorKyAgICAgaXMgbm90IG93bmVkIGJ5IHRoaXMgc3RydWN0 dXJlIGRlc3BpdGUgaXQgaXMgJ2NvbnN0Jy4gICovCisrICBjaGFyICpzdHJpbmc7CisrfSBjbWRh cmdfczsKKysKKysvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4gICovCisrREVGX1ZFQ19P IChjbWRhcmdfcyk7CisrCisgc3RhdGljIGludAorIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CisgeworQEAgLTMwMywxNyArMzIyLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAg IHN0YXRpYyBpbnQgcHJpbnRfdmVyc2lvbjsKKyAKKyAgIC8qIFBvaW50ZXJzIHRvIGFsbCBhcmd1 bWVudHMgb2YgLS1jb21tYW5kIG9wdGlvbi4gICovCistICBzdHJ1Y3QgY21kYXJnIHsKKy0gICAg ZW51bSB7CistICAgICAgQ01EQVJHX0ZJTEUsCistICAgICAgQ01EQVJHX0NPTU1BTkQKKy0gICAg fSB0eXBlOworLSAgICBjaGFyICpzdHJpbmc7CistICB9ICpjbWRhcmc7CistICAvKiBBbGxvY2F0 ZWQgc2l6ZSBvZiBjbWRhcmcuICAqLworLSAgaW50IGNtZHNpemU7CistICAvKiBOdW1iZXIgb2Yg ZWxlbWVudHMgb2YgY21kYXJnIHVzZWQuICAqLworLSAgaW50IG5jbWQ7CisrICBWRUMgKGNtZGFy Z19zKSAqY21kYXJnX3ZlYyA9IE5VTEw7CisrICBzdHJ1Y3QgY21kYXJnICpjbWRhcmdfcDsKKyAK KyAgIC8qIEluZGljZXMgb2YgYWxsIGFyZ3VtZW50cyBvZiAtLWRpcmVjdG9yeSBvcHRpb24uICAq LworICAgY2hhciAqKmRpcmFyZzsKK0BAIC0zNDksOSArMzU5LDcgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKKyAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NBTEVESVIpOworICAg dGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCistICBjbWRzaXplID0gMTsKKy0gIGNtZGFyZyA9IChz dHJ1Y3QgY21kYXJnICopIHhtYWxsb2MgKGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKKy0g IG5jbWQgPSAwOworKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY21kYXJnX3MpLCAmY21k YXJnX3ZlYyk7CisgICBkaXJzaXplID0gMTsKKyAgIGRpcmFyZyA9IChjaGFyICoqKSB4bWFsbG9j IChkaXJzaXplICogc2l6ZW9mICgqZGlyYXJnKSk7CisgICBuZGlyID0gMDsKK0BAIC01ODIsMjQg KzU5MCwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAkgICAgcGlkYXJnID0gb3B0 YXJnOworIAkgICAgYnJlYWs7CisgCSAgY2FzZSAneCc6CistCSAgICBjbWRhcmdbbmNtZF0udHlw ZSA9IENNREFSR19GSUxFOworLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJnOwor LQkgICAgaWYgKG5jbWQgPj0gY21kc2l6ZSkKKy0JICAgICAgeworLQkJY21kc2l6ZSAqPSAyOwor LQkJY21kYXJnID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKKy0JCQkJICAgY21kc2l6ZSAq IHNpemVvZiAoKmNtZGFyZykpOworLQkgICAgICB9CisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBj bWRhcmcgY21kYXJnID0geyBDTURBUkdfRklMRSwgb3B0YXJnIH07CisrCisrCSAgICAgIFZFQ19z YWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0KKyAJICAg IGJyZWFrOworIAkgIGNhc2UgJ1gnOgorLQkgICAgY21kYXJnW25jbWRdLnR5cGUgPSBDTURBUkdf Q09NTUFORDsKKy0JICAgIGNtZGFyZ1tuY21kKytdLnN0cmluZyA9IG9wdGFyZzsKKy0JICAgIGlm IChuY21kID49IGNtZHNpemUpCistCSAgICAgIHsKKy0JCWNtZHNpemUgKj0gMjsKKy0JCWNtZGFy ZyA9IHhyZWFsbG9jICgoY2hhciAqKSBjbWRhcmcsCistCQkJCSAgIGNtZHNpemUgKiBzaXplb2Yg KCpjbWRhcmcpKTsKKy0JICAgICAgfQorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNt ZGFyZyA9IHsgQ01EQVJHX0NPTU1BTkQsIG9wdGFyZyB9OworKworKwkgICAgICBWRUNfc2FmZV9w dXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7CisrCSAgICB9CisrCSAgICBicmVh azsKKyAJICAgIGJyZWFrOworIAkgIGNhc2UgJ0InOgorIAkgICAgYmF0Y2hfZmxhZyA9IGJhdGNo X3NpbGVudCA9IDE7CitAQCAtOTkwLDE2ICs5OTMsMTggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAq ZGF0YSkKKyAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgICAgbG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUgKG9iamZpbGUpOworIAorLSAgZm9yIChpID0gMDsgaSA8IG5jbWQ7IGkrKykK KysgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21k YXJnX3ApOyBpKyspCisrICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCisgICAgIHsKKy0gICAg ICBpZiAoY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0ZJTEUpCistICAgICAgICBjYXRjaF9jb21t YW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnW2ldLnN0cmluZywKKysgICAgICBjYXNl IENNREFSR19GSUxFOgorKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3Jp cHQsIGNtZGFyZ19wLT5zdHJpbmcsCisgCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNL X0FMTCk7CistICAgICAgZWxzZSAgLyogY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0NPTU1BTkQg Ki8KKy0gICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNtZGFy Z1tpXS5zdHJpbmcsCisrCWJyZWFrOworKyAgICAgIGNhc2UgQ01EQVJHX0NPTU1BTkQ6CisrICAg ICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3Ry aW5nLAorIAkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOworKwlicmVhazsK KyAgICAgfQorLSAgeGZyZWUgKGNtZGFyZyk7CisgCisgICAvKiBSZWFkIGluIHRoZSBvbGQgaGlz dG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCisgICAgICByZWFkLiAg Ki8KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDVvZjEyLnBhdGNoIGIvZ2RiLWF1dG9sb2Fk LTA1b2YxMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRkOGNjMy4uMDAw MDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDVvZjEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjQ0ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNn MDAyMzUuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxNjoxNwkx LjE0MDI2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxOToyMwkxLjE0MDI3 Ci0jIyAtMSw1ICsxLDE4IEBACi0gMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotIAotKwkqIE5FV1M6IERlc2NyaWJlIG5ldyBvcHRpb25zIC0t aW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKLSsJLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5E LCAtaWV4LgotKwkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE5ldyBlbnVtIGl0ZW1zIENNREFS R19JTklUX0ZJTEUgYW5kCi0rCUNNREFSR19JTklUX0NPTU1BTkQuCi0rCShjYXB0dXJlZF9tYWlu KTogTmV3IGVudW0gaXRlbXMgT1BUX0lYIGFuZCBPUFRfSUVYLiAgQWRkCi0rCSJpbml0LWNvbW1h bmQiLCAiaW5pdC1ldmFsLWNvbW1hbmQiLCAiaXgiIGFuZCAiaWV4IiB0byB0aGUgdmFyaWFibGUK LSsJbG9uZ19vcHRpb25zLiAgSGFuZGxlIE9QVF9JWCBhbmQgT1BUX0lFWC4gIFByb2Nlc3MgdGhl bSBmcm9tIENNREFSR19WRUMuCi0rCU5ldyBjb21tZW50IGZvciBDTURBUkdfRklMRSBhbmQgQ01E QVJHX0NPTU1BTkQgcHJvY2Vzc2luZy4KLSsJKHByaW50X2dkYl9oZWxwKTogRGVzY3JpYmUgLS1p bml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAotKwktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQs IC1pZXguCi0rCi0rMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotKwotIAlDb2RlIGNsZWFudXAuCi0gCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJn KTogTW92ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBtb3JlIGNvbW1lbnRzLgotIAkoY21kYXJn X3MsIFZFQyAoY21kYXJnX3MpKTogTmV3LgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJ MjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCi1AQCAtMjgs NiArMjgsMTMgQEAKLSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxkL2djYy9leHByLmMs IGJ1dCBub3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcgY29tbWFuZCBsaW5l IG9wdGlvbnMKLSsKLSstLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNv bW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLgotKy0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFO RCwgLWlleCBMaWtlIC0tZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1leCBidXQKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZSBpdCBiZWZvcmUgbG9hZGluZyBpbmZlcmlv ci4KLSsKLSAqKiogQ2hhbmdlcyBpbiBHREIgNy40Ci0gCi0gKiBHREIgbm93IGhhbmRsZXMgYW1i aWd1b3VzIGxpbmVzcGVjcyBtb3JlIGNvbnNpc3RlbnRseTsgdGhlIGV4aXN0aW5nCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0MjoxNS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0 Mjo1MS4yMjY2ODEwNjggKzAyMDAKLUBAIC0yODUsNyArMjg1LDEzIEBAIHR5cGVkZWYgc3RydWN0 IGNtZGFyZyB7Ci0gICAgIENNREFSR19GSUxFLAotIAotICAgICAvKiBPcHRpb24gdHlwZSAtZXgu ICAqLwotLSAgICBDTURBUkdfQ09NTUFORAotKyAgICBDTURBUkdfQ09NTUFORCwKLSsKLSsgICAg LyogT3B0aW9uIHR5cGUgLWl4LiAgKi8KLSsgICAgQ01EQVJHX0lOSVRfRklMRSwKLSsgICAgCi0r ICAgIC8qIE9wdGlvbiB0eXBlIC1pZXguICAqLwotKyAgICBDTURBUkdfSU5JVF9DT01NQU5ECi0g ICB9IHR5cGU7Ci0gCi0gICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRo ZSBHREIgY29tbWFuZCBpdHNlbGYuICBTdHJpbmcgbWVtb3J5Ci1AQCAtNDM0LDcgKzQ0MCw5IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgT1BUX1NUQVRJU1RJQ1MsCi0gICAg ICAgT1BUX1RVSSwKLSAgICAgICBPUFRfTk9XSU5ET1dTLAotLSAgICAgIE9QVF9XSU5ET1dTCi0r ICAgICAgT1BUX1dJTkRPV1MsCi0rICAgICAgT1BUX0lYLAotKyAgICAgIE9QVF9JRVgKLSAgICAg fTsKLSAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPQotICAgICB7Ci1A QCAtNDc1LDYgKzQ4MywxMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgICAgIHsi dmVyc2lvbiIsIG5vX2FyZ3VtZW50LCAmcHJpbnRfdmVyc2lvbiwgMX0sCi0gICAgICAgeyJ4Iiwg cmVxdWlyZWRfYXJndW1lbnQsIDAsICd4J30sCi0gICAgICAgeyJleCIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCAwLCAnWCd9LAotKyAgICAgIHsiaW5pdC1jb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQs IDAsIE9QVF9JWH0sCi0rICAgICAgeyJpbml0LWV2YWwtY29tbWFuZCIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCAwLCBPUFRfSUVYfSwKLSsgICAgICB7Iml4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9Q VF9JWH0sCi0rICAgICAgeyJpZXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lFWH0sCi0g I2lmZGVmIEdEQlRLCi0gICAgICAgeyJ0Y2xjb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAs ICd6J30sCi0gICAgICAgeyJlbmFibGUtZXh0ZXJuYWwtZWRpdG9yIiwgbm9fYXJndW1lbnQsIDAs ICd5J30sCi1AQCAtNjAzLDYgKzYxNSwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQot IAkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0g CSAgICB9Ci0gCSAgICBicmVhazsKLSsJICBjYXNlIE9QVF9JWDoKLSsJICAgIHsKLSsJICAgICAg c3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0ZJTEUsIG9wdGFyZyB9OwotKwot KwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0r CSAgICB9Ci0rCSAgICBicmVhazsKLSsJICBjYXNlIE9QVF9JRVg6Ci0rCSAgICB7Ci0rCSAgICAg IHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfSU5JVF9DT01NQU5ELCBvcHRhcmcgfTsK LSsKLSsJICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcp OwotKwkgICAgfQotIAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAnQic6Ci0gCSAgICBiYXRjaF9mbGFn ID0gYmF0Y2hfc2lsZW50ID0gMTsKLUBAIC04NzcsNiArOTAyLDIwIEBAIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCi0gICBxdWl0X3ByZV9wcmludCA9IGVycm9yX3ByZV9wcmludDsKLSAgIHdh cm5pbmdfcHJlX3ByaW50ID0gXygiXG53YXJuaW5nOiAiKTsKLSAKLSsgIC8qIFByb2Nlc3MgJy1p eCcgYW5kICctaWV4JyBvcHRpb25zIGVhcmx5LiAgKi8KLSsgIGZvciAoaSA9IDA7IFZFQ19pdGVy YXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCi0rICAgIHN3aXRj aCAoY21kYXJnX3AtPnR5cGUpCi0rICAgIHsKLSsgICAgICBjYXNlIENNREFSR19JTklUX0ZJTEU6 Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnX3At PnN0cmluZywKLSsJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKLSsJYnJl YWs7Ci0rICAgICAgY2FzZSBDTURBUkdfSU5JVF9DT01NQU5EOgotKyAgICAgICAgY2F0Y2hfY29t bWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21kYXJnX3AtPnN0cmluZywKLSsJCQkgICAg ICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKLSsJYnJlYWs7Ci0rICAgIH0KLSsKLSAg IC8qIFJlYWQgYW5kIGV4ZWN1dGUgdGhlIHN5c3RlbS13aWRlIGdkYmluaXQgZmlsZSwgaWYgaXQg ZXhpc3RzLgotICAgICAgVGhpcyBpcyBkb25lICpiZWZvcmUqIGFsbCB0aGUgY29tbWFuZCBsaW5l IGFyZ3VtZW50cyBhcmUKLSAgICAgIHByb2Nlc3NlZDsgaXQgc2V0cyBnbG9iYWwgcGFyYW1ldGVy cywgd2hpY2ggYXJlIGluZGVwZW5kZW50IG9mCi1AQCAtOTkzLDYgKzEwMzIsNyBAQCBjYXB0dXJl ZF9tYWluICh2b2lkICpkYXRhKQotICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgICBsb2Fk X2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi0rICAvKiBQcm9jZXNzICct eCcgYW5kICctZXgnIG9wdGlvbnMuICAqLwotICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNt ZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKLSAgICAgc3dpdGNoIChjbWRh cmdfcC0+dHlwZSkKLSAgICAgewotQEAgLTEwOTMsNiArMTEzMyw4IEBAIE9wdGlvbnM6XG5cblwK LSAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIGEgc2luZ2xlIEdEQiBjb21tYW5kLlxuXAot ICAgICAgICAgICAgICAgICAgICAgIE1heSBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIGFuZCBpbiBj b25qdW5jdGlvblxuXAotICAgICAgICAgICAgICAgICAgICAgIHdpdGggLS1jb21tYW5kLlxuXAot KyAgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IExpa2UgLXggYnV0IGV4ZWN1dGUgaXQgYmVmb3Jl IGxvYWRpbmcgaW5mZXJpb3IuXG5cCi0rICAtLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1p ZXggTGlrZSAtZXggYnV0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLlxuXAotICAgLS1jb3JlPUNP UkVGSUxFICAgIEFuYWx5emUgdGhlIGNvcmUgZHVtcCBDT1JFRklMRS5cblwKLSAgIC0tcGlkPVBJ RCAgICAgICAgICBBdHRhY2ggdG8gcnVubmluZyBwcm9jZXNzIFBJRC5cblwKLSAiKSwgc3RyZWFt KTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIzMjY4MTA1MiArMDIw MAotQEAgLTk4OSw2ICs5ODksMjIgQEAgYWxzbyBiZSBpbnRlcmxlYXZlZCB3aXRoIEBzYW1wey1j b21tYW5kfQotICAgIC14IHNldGJyZWFrcG9pbnRzIC1leCAncnVuJyBhLm91dAotIEBlbmQgc21h bGxleGFtcGxlCi0gCi0rQGl0ZW0gLWluaXQtY29tbWFuZCBAdmFye2ZpbGV9Ci0rQGl0ZW14IC1p eCBAdmFye2ZpbGV9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtY29tbWFuZH0KLStAY2luZGV4IEBj b2Rley1peH0KLStFeGVjdXRlIGNvbW1hbmRzIGZyb20gZmlsZSBAdmFye2ZpbGV9IGJlZm9yZSBs b2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0rQHhyZWZ7U3RhcnR1cH0u Ci0rCi0rQGl0ZW0gLWluaXQtZXZhbC1jb21tYW5kIEB2YXJ7Y29tbWFuZH0KLStAaXRlbXggLWll eCBAdmFye2NvbW1hbmR9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtZXZhbC1jb21tYW5kfQotK0Bj aW5kZXggQGNvZGV7LWlleH0KLStFeGVjdXRlIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBjb21tYW5k IGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0rQHhyZWZ7 U3RhcnR1cH0uCi0rCi0gQGl0ZW0gLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yeX0KLSBAaXRlbXgg LWQgQHZhcntkaXJlY3Rvcnl9Ci0gQGNpbmRleCBAY29kZXstLWRpcmVjdG9yeX0KLUBAIC0xMjUw LDYgKzEyNjYsMTMgQEAgU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBhcyBzcGVjaQot IChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRlcn0pLgotIAotIEBpdGVtCi0rRXhlY3V0 ZXMgY29tbWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHstaWV4 fSBhbmQKLStAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lmaWVkIG9yZGVyLiAgVXN1 YWxseSB5b3Ugc2hvdWxkIHVzZSB0aGUKLStAc2FtcHstZXh9IGFuZCBAc2FtcHsteH0gb3B0aW9u cyBpbnN0ZWFkLCBidXQgdGhpcyB3YXkgeW91IGNhbiBhcHBseQotK3NldHRpbmdzIGJlZm9yZSBA dmFsdWV7R0RCTn0gaW5pdCBmaWxlcyBnZXQgZXhlY3V0ZWQgYW5kIGJlZm9yZSBpbmZlcmlvcgot K2dldHMgbG9hZGVkLgotKwotK0BpdGVtCi0gQGNpbmRleCBpbml0IGZpbGUKLSBSZWFkcyB0aGUg c3lzdGVtLXdpZGUgQGRmbntpbml0IGZpbGV9IChpZiBAb3B0aW9uey0td2l0aC1zeXN0ZW0tZ2Ri aW5pdH0gd2FzCi0gdXNlZCB3aGVuIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfTsgQHB4cmVme1N5c3Rl bS13aWRlIGNvbmZpZ3VyYXRpb24sCi1AQCAtMTI4MywxNCArMTMwNiwxMSBAQCBJZiB5b3Ugd2lz aCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBkbyBzb21ldGhpbmcgbGlr ZSB0aGUgZm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdkYiAtZXggInNldCBhdXRv LWxvYWQtc2NyaXB0cyBvZmYiIC1leCAiZmlsZSBteXByb2dyYW0iCi0rJCBnZGIgLWlleCAic2V0 IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAK LS1UaGUgZm9sbG93aW5nIGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlz IHR1cm5lZCBvZmYgdG9vIGxhdGU6Ci0tCi0tQHNtYWxsZXhhbXBsZQotLSQgZ2RiIC1leCAic2V0 IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0tQGVuZCBzbWFsbGV4YW1wbGUKLStP cHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1dG8tbG9hZGluZyBp cyB0aGVuIHR1cm5lZAotK29mZiB0b28gbGF0ZS4KLSAKLSBAaXRlbQotIFJlYWRzIGNvbW1hbmQg ZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHsteH0gb3B0aW9uLiAgQHhyZWZ7Q29tbWFuZAot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0 LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRl c3QuZXhwCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAwCi1AQCAtOTIsNiArOTIs MTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0IGRlc2NyaXB0aW9uICJz dGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21tYW5kICJz dGVwIgotIAkgICAgfQotKwkgICAgLXJlICIuKmNtZGFyZ192ZWMgPSBOVUxMLiokZ2RiX3Byb21w dCAkIiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdfdmVjIGluaXRpYWxp emF0aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAgICAtcmUgIi4qcHJl X3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdkYl9wcm9tcHQgJCIg ewotIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFu dXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLUBAIC0x MjgsMTggKzEzMiw2IEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNj cmlwdGlvbiAibmV4dCBvdmVyIGNvbmRpdGlvbmFsIHN0YWNrIGFsaWdubWVudCBhbGxvY2EiCi0g CQlzZXQgY29tbWFuZCAibmV4dCIKLSAJICAgIH0KLS0JICAgIC1yZSAiLipjbWRzaXplID0gMS4q JGdkYl9wcm9tcHQgJCIgewotLQkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgY21kc2l6ZSBp bml0aWFsaXphdGlvbiIKLS0JCXNldCBjb21tYW5kICJuZXh0IgotLQkgICAgfQotLQkgICAgLXJl ICIuKmNtZGFyZyA9IC4qIHhtYWxsb2MuKiRnZGJfcHJvbXB0ICQiIHsKLS0JCXNldCBkZXNjcmlw dGlvbiAibmV4dCBvdmVyIGNtZGFyZyBpbml0aWFsaXphdGlvbiB2aWEgeG1hbGxvYyIKLS0JCXNl dCBjb21tYW5kICJuZXh0IgotLQkgICAgfQotLQkgICAgLXJlICIuKm5jbWQgPSAwLiokZ2RiX3By b21wdCAkIiB7Ci0tCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBuY21kIGluaXRpYWxpemF0 aW9uIgotLQkJc2V0IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9Ci0gCSAgICAtcmUgIi4qZGlyc2l6 ZSA9IDEuKiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGRp cnNpemUgaW5pdGlhbGl6YXRpb24iCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLUBAIC0xNjMsNiAr MTU1LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlv biAibmV4dCBvdmVyIHRleHRkb21haW4gUEFDS0FHRSIKLSAJCXNldCBjb21tYW5kICJuZXh0Igot IAkgICAgfQotKwkgICAgLXJlICIuKlZFQ19jbGVhbnVwIC5jbWRhcmdfcy4qJGdkYl9wcm9tcHQg JCIgewotKwkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnX3MgVkVDX2NsZWFudXAi Ci0rCQlzZXQgY29tbWFuZCAibmV4dCIKLSsJICAgIH0KLSAJICAgIC1yZSAiXFswLTlcXStcW1x0 IFxdK1x7XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVy IGluaXRpYWwgYnJhY2UiCi0gCQlzZXQgY29tbWFuZCAic3RlcCIKCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMDVvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA1b2YxOC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ4Y2MzCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiLWF1dG9sb2FkLTA1b2YxOC5wYXRjaApAQCAtMCwwICsxLDI0NCBAQAoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNS5odG1sCisKKyMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKKyMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzAzLzE5IDE4OjE5OjIzCTEuMTQwMjcKKyMjIC0xLDUgKzEsMTggQEAKKyAyMDEy LTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisr CSogTkVXUzogRGVzY3JpYmUgbmV3IG9wdGlvbnMgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFu ZAorKwktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCisrCSogbWFpbi5jIChzdHJ1 Y3QgY21kYXJnKTogTmV3IGVudW0gaXRlbXMgQ01EQVJHX0lOSVRfRklMRSBhbmQKKysJQ01EQVJH X0lOSVRfQ09NTUFORC4KKysJKGNhcHR1cmVkX21haW4pOiBOZXcgZW51bSBpdGVtcyBPUFRfSVgg YW5kIE9QVF9JRVguICBBZGQKKysJImluaXQtY29tbWFuZCIsICJpbml0LWV2YWwtY29tbWFuZCIs ICJpeCIgYW5kICJpZXgiIHRvIHRoZSB2YXJpYWJsZQorKwlsb25nX29wdGlvbnMuICBIYW5kbGUg T1BUX0lYIGFuZCBPUFRfSUVYLiAgUHJvY2VzcyB0aGVtIGZyb20gQ01EQVJHX1ZFQy4KKysJTmV3 IGNvbW1lbnQgZm9yIENNREFSR19GSUxFIGFuZCBDTURBUkdfQ09NTUFORCBwcm9jZXNzaW5nLgor KwkocHJpbnRfZ2RiX2hlbHApOiBEZXNjcmliZSAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggYW5k CisrCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KKysKKysyMDEyLTAzLTE5ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCUNvZGUgY2xl YW51cC4KKyAJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWlu LiAgQWRkIG1vcmUgY29tbWVudHMuCisgCShjbWRhcmdfcywgVkVDIChjbWRhcmdfcykpOiBOZXcu CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAw MDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKK0BAIC0yOCw2ICsyOCwxMyBAQAorICAgbm93IHNldCBh IGJyZWFrcG9pbnQgaW4gYnVpbGQvZ2NjL2V4cHIuYywgYnV0IG5vdAorICAgYnVpbGQvbGliY3Bw L2V4cHIuYy4KKyAKKysqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucworKworKy0taW5pdC1jb21t YW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIGxvYWRpbmcgaW5mZXJp b3IuCisrLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4IExpa2UgLS1ldmFsLWNvbW1h bmQ9Q09NTUFORCwgLWV4IGJ1dAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eGVjdXRlIGl0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLgorKworICoqKiBDaGFuZ2VzIGluIEdE QiA3LjQKKyAKKyAqIEdEQiBub3cgaGFuZGxlcyBhbWJpZ3VvdXMgbGluZXNwZWNzIG1vcmUgY29u c2lzdGVudGx5OyB0aGUgZXhpc3RpbmcKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9t YWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4u YwkyMDEyLTA0LTE4IDAwOjQyOjE1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIyNjY4MTA2OCArMDIwMAorQEAg LTI4NSw3ICsyODUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgY21kYXJnIHsKKyAgICAgQ01EQVJHX0ZJ TEUsCisgCisgICAgIC8qIE9wdGlvbiB0eXBlIC1leC4gICovCistICAgIENNREFSR19DT01NQU5E CisrICAgIENNREFSR19DT01NQU5ELAorKworKyAgICAvKiBPcHRpb24gdHlwZSAtaXguICAqLwor KyAgICBDTURBUkdfSU5JVF9GSUxFLAorKyAgICAKKysgICAgLyogT3B0aW9uIHR5cGUgLWlleC4g ICovCisrICAgIENNREFSR19JTklUX0NPTU1BTkQKKyAgIH0gdHlwZTsKKyAKKyAgIC8qIFZhbHVl IG9mIHRoaXMgb3B0aW9uIC0gZmlsZW5hbWUgb3IgdGhlIEdEQiBjb21tYW5kIGl0c2VsZi4gIFN0 cmluZyBtZW1vcnkKK0BAIC00MzQsNyArNDQwLDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKKyAgICAgICBPUFRfU1RBVElTVElDUywKKyAgICAgICBPUFRfVFVJLAorICAgICAgIE9QVF9O T1dJTkRPV1MsCistICAgICAgT1BUX1dJTkRPV1MKKysgICAgICBPUFRfV0lORE9XUywKKysgICAg ICBPUFRfSVgsCisrICAgICAgT1BUX0lFWAorICAgICB9OworICAgICBzdGF0aWMgc3RydWN0IG9w dGlvbiBsb25nX29wdGlvbnNbXSA9CisgICAgIHsKK0BAIC00NzUsNiArNDgzLDEwIEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgICAgeyJ2ZXJzaW9uIiwgbm9fYXJndW1lbnQsICZw cmludF92ZXJzaW9uLCAxfSwKKyAgICAgICB7IngiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3gn fSwKKyAgICAgICB7ImV4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdYJ30sCisrICAgICAgeyJp bml0LWNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lYfSwKKysgICAgICB7Imlu aXQtZXZhbC1jb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JRVh9LAorKyAgICAg IHsiaXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lYfSwKKysgICAgICB7ImlleCIsIHJl cXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKKyAjaWZkZWYgR0RCVEsKKyAgICAgICB7InRj bGNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3onfSwKKyAgICAgICB7ImVuYWJsZS1l eHRlcm5hbC1lZGl0b3IiLCBub19hcmd1bWVudCwgMCwgJ3knfSwKK0BAIC02MDMsNiArNjE1LDE5 IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNt ZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKyAJICAgIH0KKyAJICAgIGJyZWFrOworKwkg IGNhc2UgT1BUX0lYOgorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsg Q01EQVJHX0lOSVRfRklMRSwgb3B0YXJnIH07CisrCisrCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNt ZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0KKysJICAgIGJyZWFrOworKwkg IGNhc2UgT1BUX0lFWDoKKysJICAgIHsKKysJICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7 IENNREFSR19JTklUX0NPTU1BTkQsIG9wdGFyZyB9OworKworKwkgICAgICBWRUNfc2FmZV9wdXNo IChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7CisrCSAgICB9CisgCSAgICBicmVhazsK KyAJICBjYXNlICdCJzoKKyAJICAgIGJhdGNoX2ZsYWcgPSBiYXRjaF9zaWxlbnQgPSAxOworQEAg LTg3Nyw2ICs5MDIsMjAgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIHF1aXRfcHJl X3ByaW50ID0gZXJyb3JfcHJlX3ByaW50OworICAgd2FybmluZ19wcmVfcHJpbnQgPSBfKCJcbndh cm5pbmc6ICIpOworIAorKyAgLyogUHJvY2VzcyAnLWl4JyBhbmQgJy1pZXgnIG9wdGlvbnMgZWFy bHkuICAqLworKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVj LCBpLCBjbWRhcmdfcCk7IGkrKykKKysgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKKysgICAg eworKyAgICAgIGNhc2UgQ01EQVJHX0lOSVRfRklMRToKKysgICAgICAgIGNhdGNoX2NvbW1hbmRf ZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdfcC0+c3RyaW5nLAorKwkJCSAgICAgICFiYXRj aF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOworKwlicmVhazsKKysgICAgICBjYXNlIENNREFSR19J TklUX0NPTU1BTkQ6CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21t YW5kLCBjbWRhcmdfcC0+c3RyaW5nLAorKwkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFT S19BTEwpOworKwlicmVhazsKKysgICAgfQorKworICAgLyogUmVhZCBhbmQgZXhlY3V0ZSB0aGUg c3lzdGVtLXdpZGUgZ2RiaW5pdCBmaWxlLCBpZiBpdCBleGlzdHMuCisgICAgICBUaGlzIGlzIGRv bmUgKmJlZm9yZSogYWxsIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFyZQorICAgICAgcHJv Y2Vzc2VkOyBpdCBzZXRzIGdsb2JhbCBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgaW5kZXBlbmRlbnQg b2YKK0BAIC05OTMsNiArMTAzMiw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBB TExfT0JKRklMRVMgKG9iamZpbGUpCisgICAgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl IChvYmpmaWxlKTsKKyAKKysgIC8qIFByb2Nlc3MgJy14JyBhbmQgJy1leCcgb3B0aW9ucy4gICov CisgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoY21kYXJnX3MsIGNtZGFyZ192ZWMsIGksIGNt ZGFyZ19wKTsgaSsrKQorICAgICBzd2l0Y2ggKGNtZGFyZ19wLT50eXBlKQorICAgICB7CitAQCAt MTA5Myw2ICsxMTMzLDggQEAgT3B0aW9uczpcblxuXAorICAgICAgICAgICAgICAgICAgICAgIEV4 ZWN1dGUgYSBzaW5nbGUgR0RCIGNvbW1hbmQuXG5cCisgICAgICAgICAgICAgICAgICAgICAgTWF5 IGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgYW5kIGluIGNvbmp1bmN0aW9uXG5cCisgICAgICAgICAg ICAgICAgICAgICAgd2l0aCAtLWNvbW1hbmQuXG5cCisrICAtLWluaXQtY29tbWFuZD1GSUxFLCAt aXggTGlrZSAteCBidXQgZXhlY3V0ZSBpdCBiZWZvcmUgbG9hZGluZyBpbmZlcmlvci5cblwKKysg IC0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleCBMaWtlIC1leCBidXQgYmVmb3JlIGxv YWRpbmcgaW5mZXJpb3IuXG5cCisgICAtLWNvcmU9Q09SRUZJTEUgICAgQW5hbHl6ZSB0aGUgY29y ZSBkdW1wIENPUkVGSUxFLlxuXAorICAgLS1waWQ9UElEICAgICAgICAgIEF0dGFjaCB0byBydW5u aW5nIHByb2Nlc3MgUElELlxuXAorICIpLCBzdHJlYW0pOworSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAwCitAQCAtOTg5LDYgKzk4OSwyMiBAQCBh bHNvIGJlIGludGVybGVhdmVkIHdpdGggQHNhbXB7LWNvbW1hbmR9CisgICAgLXggc2V0YnJlYWtw b2ludHMgLWV4ICdydW4nIGEub3V0CisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKytAaXRlbSAtaW5p dC1jb21tYW5kIEB2YXJ7ZmlsZX0KKytAaXRlbXggLWl4IEB2YXJ7ZmlsZX0KKytAY2luZGV4IEBj b2Rley0taW5pdC1jb21tYW5kfQorK0BjaW5kZXggQGNvZGV7LWl4fQorK0V4ZWN1dGUgY29tbWFu ZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0gYmVmb3JlIGxvYWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0 aGUKKytpbmZlcmlvci4KKytAeHJlZntTdGFydHVwfS4KKysKKytAaXRlbSAtaW5pdC1ldmFsLWNv bW1hbmQgQHZhcntjb21tYW5kfQorK0BpdGVteCAtaWV4IEB2YXJ7Y29tbWFuZH0KKytAY2luZGV4 IEBjb2Rley0taW5pdC1ldmFsLWNvbW1hbmR9CisrQGNpbmRleCBAY29kZXstaWV4fQorK0V4ZWN1 dGUgYSBzaW5nbGUgQHZhbHVle0dEQk59IGNvbW1hbmQgYmVmb3JlIGxvYWRpbmcgZ2RiaW5pdCBm aWxlcyBvciB0aGUKKytpbmZlcmlvci4KKytAeHJlZntTdGFydHVwfS4KKysKKyBAaXRlbSAtZGly ZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5fQorIEBpdGVteCAtZCBAdmFye2RpcmVjdG9yeX0KKyBAY2lu ZGV4IEBjb2Rley0tZGlyZWN0b3J5fQorQEAgLTEyNTAsNiArMTI2NiwxMyBAQCBTZXRzIHVwIHRo ZSBjb21tYW5kIGludGVycHJldGVyIGFzIHNwZWNpCisgKEBweHJlZntNb2RlIE9wdGlvbnMsIGlu dGVycHJldGVyfSkuCisgCisgQGl0ZW0KKytFeGVjdXRlcyBjb21tYW5kcyBhbmQgY29tbWFuZCBm aWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9IGFuZAorK0BzYW1wey1peH0gb3B0aW9u cyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3VhbGx5IHlvdSBzaG91bGQgdXNlIHRoZQor K0BzYW1wey1leH0gYW5kIEBzYW1wey14fSBvcHRpb25zIGluc3RlYWQsIGJ1dCB0aGlzIHdheSB5 b3UgY2FuIGFwcGx5Cisrc2V0dGluZ3MgYmVmb3JlIEB2YWx1ZXtHREJOfSBpbml0IGZpbGVzIGdl dCBleGVjdXRlZCBhbmQgYmVmb3JlIGluZmVyaW9yCisrZ2V0cyBsb2FkZWQuCisrCisrQGl0ZW0K KyBAY2luZGV4IGluaXQgZmlsZQorIFJlYWRzIHRoZSBzeXN0ZW0td2lkZSBAZGZue2luaXQgZmls ZX0gKGlmIEBvcHRpb257LS13aXRoLXN5c3RlbS1nZGJpbml0fSB3YXMKKyB1c2VkIHdoZW4gYnVp bGRpbmcgQHZhbHVle0dEQk59OyBAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiwKK0BA IC0xMjgzLDE0ICsxMzA2LDExIEBAIElmIHlvdSB3aXNoIHRvIGRpc2FibGUgdGhlIGF1dG8tbG9h ZGluZworIHlvdSBtdXN0IGRvIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6CisgCisgQHNt YWxsZXhhbXBsZQorLSQgZ2RiIC1leCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgLWV4ICJm aWxlIG15cHJvZ3JhbSIKKyskIGdkYiAtaWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBt eXByb2dyYW0KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorLVRoZSBmb2xsb3dpbmcgZG9lcyBub3Qg d29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMgdHVybmVkIG9mZiB0b28gbGF0ZToKKy0K Ky1Ac21hbGxleGFtcGxlCistJCBnZGIgLWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBt eXByb2dyYW0KKy1AZW5kIHNtYWxsZXhhbXBsZQorK09wdGlvbiBAc2FtcHstZXh9IGRvZXMgbm90 IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHRoZW4gdHVybmVkCisrb2ZmIHRvbyBs YXRlLgorIAorIEBpdGVtCisgUmVhZHMgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBz YW1wey14fSBvcHRpb24uICBAeHJlZntDb21tYW5kCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJ MjAxMi0wNC0xOCAwMDo0MTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMi0wNC0xOCAwMDo0Mjo1 MS4yMzI2ODEwNTIgKzAyMDAKK0BAIC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9u ZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2NyaXB0IGlu aXRpYWxpemF0aW9uIgorIAkJc2V0IGNvbW1hbmQgInN0ZXAiCisgCSAgICB9CisrCSAgICAtcmUg Ii4qY21kYXJnX3ZlYyA9IE5VTEwuKiRnZGJfcHJvbXB0ICQiIHsKKysJCXNldCBkZXNjcmlwdGlv biAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6YXRpb24iCisrCQlzZXQgY29tbWFuZCAi c3RlcCIKKysJICAgIH0KKyAJICAgIC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29tbWFu ZF9zdGF0c19jbGVhbnVwLiokZ2RiX3Byb21wdCAkIiB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5l eHQgb3ZlciBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxs cyIKKyAJCXNldCBjb21tYW5kICJuZXh0IgorQEAgLTEyOCwxOCArMTMyLDYgQEAgcHJvYyBkb19z dGVwc19hbmRfbmV4dHMge30geworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY29uZGl0 aW9uYWwgc3RhY2sgYWxpZ25tZW50IGFsbG9jYSIKKyAJCXNldCBjb21tYW5kICJuZXh0IgorIAkg ICAgfQorLQkgICAgLXJlICIuKmNtZHNpemUgPSAxLiokZ2RiX3Byb21wdCAkIiB7CistCQlzZXQg ZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRzaXplIGluaXRpYWxpemF0aW9uIgorLQkJc2V0IGNv bW1hbmQgIm5leHQiCistCSAgICB9CistCSAgICAtcmUgIi4qY21kYXJnID0gLiogeG1hbGxvYy4q JGdkYl9wcm9tcHQgJCIgeworLQkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnIGlu aXRpYWxpemF0aW9uIHZpYSB4bWFsbG9jIgorLQkJc2V0IGNvbW1hbmQgIm5leHQiCistCSAgICB9 CistCSAgICAtcmUgIi4qbmNtZCA9IDAuKiRnZGJfcHJvbXB0ICQiIHsKKy0JCXNldCBkZXNjcmlw dGlvbiAibmV4dCBvdmVyIG5jbWQgaW5pdGlhbGl6YXRpb24iCistCQlzZXQgY29tbWFuZCAibmV4 dCIKKy0JICAgIH0KKyAJICAgIC1yZSAiLipkaXJzaXplID0gMS4qJGdkYl9wcm9tcHQgJCIgewor IAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgZGlyc2l6ZSBpbml0aWFsaXphdGlvbiIKKyAJ CXNldCBjb21tYW5kICJuZXh0IgorQEAgLTE2Myw2ICsxNTUsMTAgQEAgcHJvYyBkb19zdGVwc19h bmRfbmV4dHMge30geworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgdGV4dGRvbWFpbiBQ QUNLQUdFIgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCisgCSAgICB9CisrCSAgICAtcmUgIi4qVkVD X2NsZWFudXAgLmNtZGFyZ19zLiokZ2RiX3Byb21wdCAkIiB7CisrCQlzZXQgZGVzY3JpcHRpb24g Im5leHQgb3ZlciBjbWRhcmdfcyBWRUNfY2xlYW51cCIKKysJCXNldCBjb21tYW5kICJuZXh0Igor KwkgICAgfQorIAkgICAgLXJlICJcWzAtOVxdK1xbXHQgXF0rXHtcclxuJGdkYl9wcm9tcHQgJCIg eworIAkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgaW5pdGlhbCBicmFjZSIKKyAJCXNldCBj b21tYW5kICJzdGVwIgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNm9mMTIucGF0Y2ggYi9n ZGItYXV0b2xvYWQtMDZvZjEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh ZTEyMWVmLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wNm9mMTIucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw3MSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTAzL21zZzAwMjM2Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkg MTg6MTk6MjMJMS4xNDAyNwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MjM6 NTEJMS4xNDAyOAotIyMgLTEsNSArMSwxMyBAQAotIDIwMTItMDMtMTkgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJQ29kZSBjbGVhbnVwLgotKwkqIHB5 dGhvbi9weS1hdXRvLWxvYWQuYyAoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IE5ldyB2YXJpYWJs ZSBiYWNrX3RvLgotKwlUdXJuIGZjbG9zZSBhbmQgeGZyZWUgY2FsbHMgaW50byBtYWtlX2NsZWFu dXBfZmNsb3NlIGFuZCBtYWtlX2NsZWFudXAKLSsJd2l0aCB4ZnJlZS4KLSsJKGF1dG9fbG9hZF9v YmpmaWxlX3NjcmlwdCk6IFR1cm4gZmNsb3NlIGludG8gbWFrZV9jbGVhbnVwX2ZjbG9zZS4KLSsK LSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0rCi0gCSogTkVXUzogRGVzY3JpYmUgbmV3IG9wdGlvbnMgLS1pbml0LWNvbW1hbmQ9RklMRSwg LWl4IGFuZAotIAktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCi0gCSogbWFpbi5j IChzdHJ1Y3QgY21kYXJnKTogTmV3IGVudW0gaXRlbXMgQ01EQVJHX0lOSVRfRklMRSBhbmQKLS0t LSBzcmMvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLzAxLzI2IDIxOjU0OjQ1CTEuMTgK LSsrKyBzcmMvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLzAzLzE5IDE4OjIzOjUyCTEu MTkKLUBAIC0yNTQsNiArMjU0LDcgQEAKLSAgICAgICBGSUxFICpzdHJlYW07Ci0gICAgICAgY2hh ciAqZnVsbF9wYXRoOwotICAgICAgIGludCBvcGVuZWQsIGluX2hhc2hfdGFibGU7Ci0rICAgICAg c3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0gCi0gICAgICAgaWYgKCpwICE9IDEpCi0gCXsKLUBA IC0yODYsNiArMjg3LDEzIEBACi0gICAgICAgb3BlbmVkID0gZmluZF9hbmRfb3Blbl9zY3JpcHQg KGZpbGUsIDEgLypzZWFyY2hfcGF0aCovLAotIAkJCQkgICAgICZzdHJlYW0sICZmdWxsX3BhdGgp OwotIAotKyAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7 Ci0rICAgICAgaWYgKG9wZW5lZCkKLSsJewotKwkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVh bSk7Ci0rCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSsJfQotKwotICAgICAg IC8qIElmIG9uZSBzY3JpcHQgaXNuJ3QgZm91bmQgaXQncyBub3QgdW5jb21tb24gZm9yIG1vcmUg dG8gbm90IGJlCi0gCSBmb3VuZCBlaXRoZXIuICBXZSBkb24ndCB3YW50IHRvIHByaW50IGFuIGVy cm9yIG1lc3NhZ2UgZm9yIGVhY2gKLSAJIHNjcmlwdCwgdG9vIG11Y2ggbm9pc2UuICBJbnN0ZWFk LCB3ZSBwcmludCB0aGUgd2FybmluZyBvbmNlIGFuZCB0ZWxsCi1AQCAtMzEzLDkgKzMyMSw5IEBA Ci0gCSAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAg Ki8KLSAJICBpZiAoISBpbl9oYXNoX3RhYmxlKQotIAkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRf Zm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKLS0JICBmY2xvc2UgKHN0 cmVhbSk7Ci0tCSAgeGZyZWUgKGZ1bGxfcGF0aCk7Ci0gCX0KLSsKLSsgICAgICBkb19jbGVhbnVw cyAoYmFja190byk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNDIwLDYgKzQyOCw4IEBACi0gICAgIHsK LSAgICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSAKLSsg ICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0rCi0gICAgICAgLyogQWRkIHRoaXMg c2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIK LSAJIGNhbiBwcmludCBpdC4gICovCi0gICAgICAgcHNwYWNlX2luZm8gPQotQEAgLTQzMiw3ICs0 NDIsNiBAQAotIAkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3Rl bnQgdW5kZXIgbXVsdGlwbGUKLSAJIGxvYWRzIGFueXdheS4gICovCi0gICAgICAgc291cmNlX3B5 dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOwotLSAg ICAgIGZjbG9zZSAoaW5wdXQpOwotICAgICB9Ci0gCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cHMp OwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNm9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQt MDZvZjE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMTIxZWYK LS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDZvZjE4LnBhdGNoCkBAIC0wLDAgKzEs NzEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyMzYu aHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxOToyMwkxLjE0MDI3 CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoyMzo1MQkxLjE0MDI4CisjIyAt MSw1ICsxLDEzIEBACisgMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorIAorKwlDb2RlIGNsZWFudXAuCisrCSogcHl0aG9uL3B5LWF1dG8tbG9h ZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogTmV3IHZhcmlhYmxlIGJhY2tfdG8uCisrCVR1 cm4gZmNsb3NlIGFuZCB4ZnJlZSBjYWxscyBpbnRvIG1ha2VfY2xlYW51cF9mY2xvc2UgYW5kIG1h a2VfY2xlYW51cAorKwl3aXRoIHhmcmVlLgorKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTog VHVybiBmY2xvc2UgaW50byBtYWtlX2NsZWFudXBfZmNsb3NlLgorKworKzIwMTItMDMtMTkgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJKiBORVdTOiBE ZXNjcmliZSBuZXcgb3B0aW9ucyAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggYW5kCisgCS0taW5p dC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KKyAJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcp OiBOZXcgZW51bSBpdGVtcyBDTURBUkdfSU5JVF9GSUxFIGFuZAorLS0tIHNyYy9nZGIvcHl0aG9u L3B5LWF1dG8tbG9hZC5jCTIwMTIvMDEvMjYgMjE6NTQ6NDUJMS4xOAorKysrIHNyYy9nZGIvcHl0 aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDMvMTkgMTg6MjM6NTIJMS4xOQorQEAgLTI1NCw2ICsy NTQsNyBAQAorICAgICAgIEZJTEUgKnN0cmVhbTsKKyAgICAgICBjaGFyICpmdWxsX3BhdGg7Cisg ICAgICAgaW50IG9wZW5lZCwgaW5faGFzaF90YWJsZTsKKysgICAgICBzdHJ1Y3QgY2xlYW51cCAq YmFja190bzsKKyAKKyAgICAgICBpZiAoKnAgIT0gMSkKKyAJeworQEAgLTI4Niw2ICsyODcsMTMg QEAKKyAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoZmlsZSwgMSAvKnNlYXJj aF9wYXRoKi8sCisgCQkJCSAgICAgJnN0cmVhbSwgJmZ1bGxfcGF0aCk7CisgCisrICAgICAgYmFj a190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKKysgICAgICBpZiAob3Bl bmVkKQorKwl7CisrCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKKysJICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworKwl9CisrCisgICAgICAgLyogSWYgb25lIHNjcmlw dCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNvbW1vbiBmb3IgbW9yZSB0byBub3QgYmUKKyAJIGZv dW5kIGVpdGhlci4gIFdlIGRvbid0IHdhbnQgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBmb3Ig ZWFjaAorIAkgc2NyaXB0LCB0b28gbXVjaCBub2lzZS4gIEluc3RlYWQsIHdlIHByaW50IHRoZSB3 YXJuaW5nIG9uY2UgYW5kIHRlbGwKK0BAIC0zMTMsOSArMzIxLDkgQEAKKyAJICAvKiBJZiB0aGlz IGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworIAkgIGlmICghIGlu X2hhc2hfdGFibGUpCisgCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2Jq ZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworLQkgIGZjbG9zZSAoc3RyZWFtKTsKKy0JICB4ZnJl ZSAoZnVsbF9wYXRoKTsKKyAJfQorKworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKyAg ICAgfQorIH0KKyAKK0BAIC00MjAsNiArNDI4LDggQEAKKyAgICAgeworICAgICAgIHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworIAorKyAgICAgIG1ha2VfY2xlYW51 cF9mY2xvc2UgKGlucHV0KTsKKysKKyAgICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhh c2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgorIAkgY2FuIHByaW50IGl0 LiAgKi8KKyAgICAgICBwc3BhY2VfaW5mbyA9CitAQCAtNDMyLDcgKzQ0Miw2IEBACisgCSBhbmQg dGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBs ZQorIAkgbG9hZHMgYW55d2F5LiAgKi8KKyAgICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jf b2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CistICAgICAgZmNsb3NlIChpbnB1 dCk7CisgICAgIH0KKyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CgpkaWZmIC0tZ2l0IGEv Z2RiLWF1dG9sb2FkLTA3b2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wN29mMTIucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZDEyOWUuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1 dG9sb2FkLTA3b2YxMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyOTYuaHRtbAotCi0jIyMg c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS4xMjg5Ci0jIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjcgMjA6MTU6MjAJMS4xMjkwCi0jIyAtMSwzICsx LDEyIEBACi0rMjAxMi0wMy0yNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBSZW5hbWUgbm9kZSBy ZWZlcmVuY2UKLSsJJy5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uJyB0byAnZG90ZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbicuCi0rCVR3aWNlLgotKwkoLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rp b24pOiBSZW5hbWUgdGhlIG5vZGUgLi4uCi0rCShkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9u KTogLi4uIGhlcmUuCi0rCShNYWludGVuYW5jZSBDb21tYW5kcyk6IEFsc28gcmVuYW1lIHRoaXMg bm9kZSByZWZlcmVuY2UuCi0rCi0gMjAxMi0wMy0yMiAgU2l2YSBDaGFuZHJhIFJlZGR5ICA8c2l2 YWNoYW5kcmFAZ29vZ2xlLmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoUHl0aG9uIEFQSS9WYWx1 ZXMgRnJvbSBJbmZlcmlvcik6IEFkZCBkZXNjcmlwdGlvbgotLS0tIHNyYy9nZGIvZG9jL2dkYi50 ZXhpbmZvCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS45MzYKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEyLzAzLzI3IDIwOjE1OjIwCTEuOTM3Ci1AQCAtMjQ3MTcsOCArMjQ3MTcsOCBAQAot IEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBhbmQgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRz fSBzZWN0aW9uLgotIAotIEBtZW51Ci0tKiBvYmpmaWxlLWdkYi5weSBmaWxlOjogICAgICAgICBU aGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKLS0qIC5kZWJ1Z19nZGJfc2NyaXB0 cyBzZWN0aW9uOjogIFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KLSsqIG9i amZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAgICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIu cHl9IGZpbGUKLSsqIGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb246OiBUaGUgQGNvZGV7LmRl YnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCi0gKiBXaGljaCBmbGF2b3IgdG8gY2hvb3NlPzo6Ci0g QGVuZCBtZW51Ci0gCi1AQCAtMjQ3NDQsNyArMjQ3NDQsNyBAQAotIAotIEFsc28gcHJpbnRlZCBp cyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KLSB0aGUgQGNvZGV7 LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5vdCBmb3VuZAotLShAcHhyZWZ7 LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KLSsoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3Jp cHRzIHNlY3Rpb259KS4KLSBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBu b3QgcHJpbnRlZCB3aGVuIEB2YWx1ZXtHREJOfQotIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFp bHMuICBUaGVyZSBtYXkgYmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcKLSBhbiBlcnJvciBt ZXNzYWdlIGZvciBlYWNoIG9uZSBpcyBwcm9ibGVtYXRpYy4KLUBAIC0yNDc5NSw3ICsyNDc5NSw3 IEBACi0gU28geW91ciBAZmlsZXstZ2RiLnB5fSBmaWxlIHNob3VsZCBiZSBjYXJlZnVsIHRvIGF2 b2lkIGVycm9ycyBpZiBpdAotIGlzIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KLSAKLS1Abm9k ZSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbgotK0Bub2RlIGRvdGRlYnVnX2dkYl9zY3JpcHRz IHNlY3Rpb24KLSBAc3Vic3Vic2VjdGlvbiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBz ZWN0aW9uCi0gQGNpbmRleCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KLSAKLUBA IC0zMzQ3NSw3ICszMzQ3NSw3IEBACi0gbWF0Y2hpbmcgQHZhcntyZWdleHB9LgotIEZvciBlYWNo IHNjcmlwdCwgdGhpcyBjb21tYW5kIHByaW50cyBpdHMgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhl IG9iamZpbGUsCi0gYW5kIHRoZSBmdWxsIHBhdGggaWYga25vd24uCi0tQHhyZWZ7LmRlYnVnX2dk Yl9zY3JpcHRzIHNlY3Rpb259LgotK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259 LgotIAotIEBraW5kZXggbWFpbnQgcHJpbnQgc3RhdGlzdGljcwotIEBjaW5kZXggYmNhY2hlIHN0 YXRpc3RpY3MKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDdvZjE4LnBhdGNoIGIvZ2RiLWF1 dG9sb2FkLTA3b2YxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 MWQxMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaApAQCAt MCwwICsxLDU3IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21z ZzAwMjk2Lmh0bWwKKworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzAzLzIyIDA4OjEw OjQxCTEuMTI4OQorIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzAzLzI3IDIwOjE1OjIw CTEuMTI5MAorIyMgLTEsMyArMSwxMiBAQAorKzIwMTItMDMtMjcgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2Fk aW5nKTogUmVuYW1lIG5vZGUgcmVmZXJlbmNlCisrCScuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlv bicgdG8gJ2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24nLgorKwlUd2ljZS4KKysJKC5kZWJ1 Z19nZGJfc2NyaXB0cyBzZWN0aW9uKTogUmVuYW1lIHRoZSBub2RlIC4uLgorKwkoZG90ZGVidWdf Z2RiX3NjcmlwdHMgc2VjdGlvbik6IC4uLiBoZXJlLgorKwkoTWFpbnRlbmFuY2UgQ29tbWFuZHMp OiBBbHNvIHJlbmFtZSB0aGlzIG5vZGUgcmVmZXJlbmNlLgorKworIDIwMTItMDMtMjIgIFNpdmEg Q2hhbmRyYSBSZWRkeSAgPHNpdmFjaGFuZHJhQGdvb2dsZS5jb20+CisgCisgCSogZ2RiLnRleGlu Zm8gKFB5dGhvbiBBUEkvVmFsdWVzIEZyb20gSW5mZXJpb3IpOiBBZGQgZGVzY3JpcHRpb24KKy0t LSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzAzLzIyIDA4OjEwOjQxCTEuOTM2CisrKysg c3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wMy8yNyAyMDoxNToyMAkxLjkzNworQEAgLTI0 NzE3LDggKzI0NzE3LDggQEAKKyBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gYW5kIEBjb2Rl ey5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbi4KKyAKKyBAbWVudQorLSogb2JqZmlsZS1nZGIu cHkgZmlsZTo6ICAgICAgICAgVGhlIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBmaWxlCist KiAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbjo6ICBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3Jp cHRzfSBzZWN0aW9uCisrKiBvYmpmaWxlLWdkYi5weSBmaWxlOjogICAgICAgICAgVGhlIEBmaWxl e0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBmaWxlCisrKiBkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0 aW9uOjogVGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgorICogV2hpY2ggZmxh dm9yIHRvIGNob29zZT86OgorIEBlbmQgbWVudQorIAorQEAgLTI0NzQ0LDcgKzI0NzQ0LDcgQEAK KyAKKyBBbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IHdlcmUgbWVudGlv bmVkIGluCisgdGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbiBhbmQgd2VyZSBu b3QgZm91bmQKKy0oQHB4cmVmey5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCisrKEBweHJl Zntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCisgVGhpcyBpcyB1c2VmdWwgYmVjYXVz ZSB0aGVpciBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiBAdmFsdWV7R0RCTn0KKyB0cmllcyB0 byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJlIG1hbnkgb2YgdGhlbSwgYW5kIHBy aW50aW5nCisgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBvbmUgaXMgcHJvYmxlbWF0aWMuCitA QCAtMjQ3OTUsNyArMjQ3OTUsNyBAQAorIFNvIHlvdXIgQGZpbGV7LWdkYi5weX0gZmlsZSBzaG91 bGQgYmUgY2FyZWZ1bCB0byBhdm9pZCBlcnJvcnMgaWYgaXQKKyBpcyBldmFsdWF0ZWQgbW9yZSB0 aGFuIG9uY2UuCisgCistQG5vZGUgLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24KKytAbm9kZSBk b3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uCisgQHN1YnN1YnNlY3Rpb24gVGhlIEBjb2Rley5k ZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgorIEBjaW5kZXggQGNvZGV7LmRlYnVnX2dkYl9zY3Jp cHRzfSBzZWN0aW9uCisgCitAQCAtMzM0NzUsNyArMzM0NzUsNyBAQAorIG1hdGNoaW5nIEB2YXJ7 cmVnZXhwfS4KKyBGb3IgZWFjaCBzY3JpcHQsIHRoaXMgY29tbWFuZCBwcmludHMgaXRzIG5hbWUg YXMgc3BlY2lmaWVkIGluIHRoZSBvYmpmaWxlLAorIGFuZCB0aGUgZnVsbCBwYXRoIGlmIGtub3du LgorLUB4cmVmey5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufS4KKytAeHJlZntkb3RkZWJ1Z19n ZGJfc2NyaXB0cyBzZWN0aW9ufS4KKyAKKyBAa2luZGV4IG1haW50IHByaW50IHN0YXRpc3RpY3MK KyBAY2luZGV4IGJjYWNoZSBzdGF0aXN0aWNzCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA4 b2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wOG9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGI0OGJmYzEuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTA4b2YxMi5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi1bcGF0Y2gjNCAyLzhdIENvZGUg Y2xlYW51cDogbmV3IHBhdGggdG8gVkVDIGluIHV0aWxzLmMKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg2Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTEuaHRtbAotIC0gcmVkdWNlZCBmb3IgdGhl IGJhY2twb3J0Ci0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjQ1OjA1CTEu MTQxMTAKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjQ3OjA4CTEuMTQxMTEK LSMjIC0xLDYgKzEsMzQgQEAKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCUNvZGUgY2xlYW51cC4KLSsJKiBjaGFyc2V0LmMgKGZp bmRfY2hhcnNldF9uYW1lcyk6IFJlbW92ZSB2YXJpYWJsZXMgaXggYW5kIGVsdC4KLSsJVXNlIGZy ZWVfY2hhcl9wdHJfdmVjLgotKwkqIGVsZnJlYWQuYyAoYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5h bWUpOiBOZXcgdmFyaWFibGVzIGRlYnVnZGlyX3ZlYywKLSsJYmFja190byBhbmQgaXguICBVc2Ug ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgUmVtb3ZlIHZhcmlhYmxlCi0rCWRlYnVnZGlyX2Vu ZC4gIE5ldyB2YXJpYWJsZSBkZWJ1Z2Rpcl9sZW4uCi0rCSogZ2RiX3ZlY3MuaCAoZnJlZV9jaGFy X3B0cl92ZWMsIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYykKLSsJKGRpcm5hbWVzX3Rv X2NoYXJfcHRyX3ZlY19hcHBlbmQsIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyk6IE5ldwotKwlk ZWNsYXJhdGlvbnMuCi0rCSogcHJvZ3NwYWNlLmMgKGNsZWFyX3Byb2dyYW1fc3BhY2Vfc29saWJf Y2FjaGUpOiBSZW1vdmUgdmFyaWFibGVzIGl4Ci0rCWFuZCBlbHQuICBVc2UgZnJlZV9jaGFyX3B0 cl92ZWMuCi0rCSogc291cmNlLmMgKGFkZF9wYXRoKTogUmVtb3ZlIHZhcmlhYmxlcyBhcmd2LCBh cmcgYW5kIGFyZ3ZfaW5kZXguCi0rCU5ldyB2YXJpYWJsZXMgZGlyX3ZlYywgYmFja190bywgaXgg YW5kIG5hbWUuCi0rCVVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kLiAgVXNlIGZy ZWVhcmd2IGluc3RlYWQgb2YKLSsJbWFrZV9jbGVhbnVwX2ZyZWVhcmd2LiAgUmVtb3ZlIHZhcmlh YmxlIHNlcGFyYXRvci4gIFNpbXBsaWZ5IHRoZSBjb2RlCi0rCW5vIGxvbmdlciBleHBlY3Rpbmcg RElSTkFNRV9TRVBBUkFUT1IuCi0rCShvcGVucCk6IFJlbW92ZSB2YXJpYWJsZSBwLCBwMSBhbmQg bGVuLiAgTmV3IHZhcmlhYmxlcyBkaXJfdmVjLAotKwliYWNrX3RvLCBpeCBhbmQgZGlyLiAgVXNl IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFNpbXBsaWZ5IHRoZSBjb2RlCi0rCW5vIGxvbmdl ciBleHBlY3RpbmcgRElSTkFNRV9TRVBBUkFUT1IuCi0rCSogc3ltZmlsZS5jIChmaW5kX3NlcGFy YXRlX2RlYnVnX2ZpbGUpOiBOZXcgdmFyaWFibGVzIGRlYnVnZGlyX3ZlYywKLSsJYmFja190byBh bmQgaXguICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgUmVtb3ZlIHZhcmlhYmxlCi0r CWRlYnVnZGlyX2VuZC4KLSsJKiB1dGlscy5jIChmcmVlX2NoYXJfcHRyX3ZlYywgZG9fZnJlZV9j aGFyX3B0cl92ZWMpCi0rCShtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMsIGRpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQpCi0rCShkaXJuYW1lc190b19jaGFyX3B0cl92ZWMpOiBO ZXcgZnVuY3Rpb25zLgotKwotKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJQ29kZSBjbGVhbnVwLgotIAkqIHNvdXJjZS5jIChhZGRf cGF0aCk6IFJlbW92ZSBhbHdheXMgdHJ1ZSBjb25kaXRpb25hbCAncCA9PSAwJyBhbmQKLSAJdW5p bmRlbnQgaXRzIGNvZGUgYmxvY2suCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Z2RiX3ZlY3MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv Z2RiX3ZlY3MuaAkyMDEyLTA0LTE4IDAwOjQwOjEyLjA2NzA4NjAxNiArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAwMDo0MDoyMy40NzQwNTY5 OTMgKzAyMDAKLUBAIC0yNSw0ICsyNSwxNiBAQAotIAotIERFRl9WRUNfUCAoY2hhcl9wdHIpOwot IAotKy8qIEZyb20gdXRpbHMuYzogKi8KLSsKLStleHRlcm4gdm9pZCBmcmVlX2NoYXJfcHRyX3Zl YyAoVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyk7Ci0rCi0rZXh0ZXJuIHN0cnVjdCBjbGVh bnVwICoKLSsgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0cikg KmNoYXJfcHRyX3ZlYyk7Ci0rCi0rZXh0ZXJuIHZvaWQgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVj X2FwcGVuZCAoVkVDIChjaGFyX3B0cikgKip2ZWNwLAotKwkJCQkJICAgICBjb25zdCBjaGFyICpk aXJuYW1lcyk7Ci0rCi0rZXh0ZXJuIFZFQyAoY2hhcl9wdHIpICpkaXJuYW1lc190b19jaGFyX3B0 cl92ZWMgKGNvbnN0IGNoYXIgKmRpcm5hbWVzKTsKLSsKLSAjZW5kaWYgLyogR0RCX1ZFQ1NfSCAq LwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3V0aWxzLmMJMjAxMi0wNC0xOCAwMDo0MDox Mi4wNjgwODYwMTMgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCTIw MTItMDQtMTggMDA6NDA6NDkuODYyOTg5ODU1ICswMjAwCi1AQCAtMjksNiArMjksNyBAQAotICNp ZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICi0gI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNl bmRpZiAvKiBIQVZFX1NZU19SRVNPVVJDRV9IICovCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0g Ci0gI2lmZGVmIFRVSQotICNpbmNsdWRlICJ0dWkvdHVpLmgiCQkvKiBGb3IgdHVpX2dldF9jb21t YW5kX2RpbWVuc2lvbi4gICAqLwotQEAgLTM4MzUsNiArMzgzNiw5NSBAQCBwcm9kdWNlcl9pc19n Y2NfZ2VfNCAoY29uc3QgY2hhciAqcHJvZHVjCi0gICByZXR1cm4gbWlub3I7Ci0gfQotIAotKy8q IENhbGwgeGZyZWUgZm9yIGVhY2ggZWxlbWVudCBvZiBDSEFSX1BUUl9WRUMgYW5kIGZpbmFsIFZF Q19mcmVlIGZvcgotKyAgIENIQVJfUFRSX1ZFQyBpdHNlbGYuCi0rCi0rICAgWW91IG11c3Qgbm90 IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0ZXIgaXQgZ290IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGZ1 bmN0aW9uCi0rICAgYnkgbWFrZV9jbGVhbnVwIGFzIHRoZSBDSEFSX1BUUl9WRUMgYmFzZSBhZGRy ZXNzIG1heSBjaGFuZ2Ugb24gaXRzIHVwZGF0ZXMuCi0rICAgQ29udHJhcnkgdG8gVkVDX2ZyZWUg dGhpcyBmdW5jdGlvbiBkb2VzIG5vdCAoY2Fubm90KSBjbGVhciB0aGUgcG9pbnRlci4gICovCi0r Ci0rdm9pZAotK2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVj KQotK3sKLSsgIGludCBpeDsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0rICBmb3IgKGl4ID0gMDsgVkVD X2l0ZXJhdGUgKGNoYXJfcHRyLCBjaGFyX3B0cl92ZWMsIGl4LCBuYW1lKTsgKytpeCkKLSsgICAg eGZyZWUgKG5hbWUpOwotKyAgVkVDX2ZyZWUgKGNoYXJfcHRyLCBjaGFyX3B0cl92ZWMpOwotK30K LSsKLSsvKiBIZWxwZXIgZm9yIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYy4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStkb19mcmVlX2NoYXJfcHRyX3ZlYyAodm9pZCAqYXJnKQotK3sKLSsg IFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMgPSBhcmc7Ci0rCi0rICBmcmVlX2NoYXJfcHRy X3ZlYyAoY2hhcl9wdHJfdmVjKTsKLSt9Ci0rCi0rLyogTWFrZSBjbGVhbnVwIGhhbmRsZXIgY2Fs bGluZyB4ZnJlZSBmb3IgZWFjaCBlbGVtZW50IG9mIENIQVJfUFRSX1ZFQyBhbmQKLSsgICBmaW5h bCBWRUNfZnJlZSBmb3IgQ0hBUl9QVFJfVkVDIGl0c2VsZi4KLSsKLSsgICBZb3UgbXVzdCBub3Qg bW9kaWZ5IENIQVJfUFRSX1ZFQyBhZnRlciB0aGlzIGNsZWFudXAgcmVnaXN0cmF0aW9uIGFzIHRo ZQotKyAgIENIQVJfUFRSX1ZFQyBiYXNlIGFkZHJlc3MgbWF5IGNoYW5nZSBvbiBpdHMgdXBkYXRl cy4gIENvbnRyYXJ5IHRvIFZFQ19mcmVlCi0rICAgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCAoY2Fu bm90KSBjbGVhciB0aGUgcG9pbnRlci4gICovCi0rCi0rc3RydWN0IGNsZWFudXAgKgotK21ha2Vf Y2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYykK LSt7Ci0rICByZXR1cm4gbWFrZV9jbGVhbnVwIChkb19mcmVlX2NoYXJfcHRyX3ZlYywgY2hhcl9w dHJfdmVjKTsKLSt9Ci0rCi0rLyogRXh0ZW5kZWQgdmVyc2lvbiBvZiBkaXJuYW1lc190b19jaGFy X3B0cl92ZWMgLSBhZGRpdGlvbmFsbHkgaWYgKlZFQ1AgaXMKLSsgICBub24tTlVMTCB0aGUgbmV3 IGxpc3QgZWxlbWVudHMgZnJvbSBESVJOQU1FUyBhcmUgYXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5n Ci0rICAgKlZFQ1AgbGlzdCBvZiBlbnRyaWVzLiAgKlZFQ1AgYWRkcmVzcyB3aWxsIGJlIHVwZGF0 ZWQgYnkgdGhpcyBjYWxsLiAgKi8KLSsKLSt2b2lkCi0rZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVj X2FwcGVuZCAoVkVDIChjaGFyX3B0cikgKip2ZWNwLCBjb25zdCBjaGFyICpkaXJuYW1lcykKLSt7 Ci0rICBkbwotKyAgICB7Ci0rICAgICAgc2l6ZV90IHRoaXNfbGVuOwotKyAgICAgIGNoYXIgKm5l eHRfZGlyLCAqdGhpc19kaXI7Ci0rCi0rICAgICAgbmV4dF9kaXIgPSBzdHJjaHIgKGRpcm5hbWVz LCBESVJOQU1FX1NFUEFSQVRPUik7Ci0rICAgICAgaWYgKG5leHRfZGlyID09IE5VTEwpCi0rCXRo aXNfbGVuID0gc3RybGVuIChkaXJuYW1lcyk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgdGhpc19s ZW4gPSBuZXh0X2RpciAtIGRpcm5hbWVzOwotKwkgIG5leHRfZGlyKys7Ci0rCX0KLSsKLSsgICAg ICB0aGlzX2RpciA9IHhtYWxsb2MgKHRoaXNfbGVuICsgMSk7Ci0rICAgICAgbWVtY3B5ICh0aGlz X2RpciwgZGlybmFtZXMsIHRoaXNfbGVuKTsKLSsgICAgICB0aGlzX2Rpclt0aGlzX2xlbl0gPSAn XDAnOwotKyAgICAgIFZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCAqdmVjcCwgdGhpc19kaXIpOwot KwotKyAgICAgIGRpcm5hbWVzID0gbmV4dF9kaXI7Ci0rICAgIH0KLSsgIHdoaWxlIChkaXJuYW1l cyAhPSBOVUxMKTsKLSt9Ci0rCi0rLyogU3BsaXQgRElSTkFNRVMgYnkgRElSTkFNRV9TRVBBUkFU T1IgZGVsaW1pdGVyIGFuZCByZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUKLSsgICBlbGVtZW50cyBp biB0aGVpciBvcmlnaW5hbCBvcmRlci4gIEZvciBlbXB0eSBzdHJpbmcgKCIiKSBESVJOQU1FUyBy ZXR1cm4KLSsgICBsaXN0IG9mIG9uZSBlbXB0eSBzdHJpbmcgKCIiKSBlbGVtZW50LgotKyAgIAot KyAgIFlvdSBtYXkgbW9kaWZ5IHRoZSByZXR1cm5lZCBzdHJpbmdzLgotKyAgIFJlYWQgZnJlZV9j aGFyX3B0cl92ZWMgZm9yIGl0cyBjbGVhbnVwLiAgKi8KLSsKLStWRUMgKGNoYXJfcHRyKSAqCi0r ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJuYW1lcykKLSt7Ci0rICBW RUMgKGNoYXJfcHRyKSAqcmV0dmFsID0gTlVMTDsKLSsgIAotKyAgZGlybmFtZXNfdG9fY2hhcl9w dHJfdmVjX2FwcGVuZCAoJnJldHZhbCwgZGlybmFtZXMpOwotKwotKyAgcmV0dXJuIHJldHZhbDsK LSt9Ci0rCi0gI2lmZGVmIEhBVkVfV0FJVFBJRAotIAotICNpZmRlZiBTSUdBTFJNCgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTA4b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wOG9mMTgucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4YmZjMQotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wOG9mMTgucGF0Y2gKQEAgLTAsMCArMSwxNzEgQEAKK1tw YXRjaCM0IDIvOF0gQ29kZSBjbGVhbnVwOiBuZXcgcGF0aCB0byBWRUMgaW4gdXRpbHMuYworaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODYuaHRtbAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMS5odG1sCisg LSByZWR1Y2VkIGZvciB0aGUgYmFja3BvcnQKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDQvMTcgMTU6NDU6MDUJMS4xNDExMAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcg MTU6NDc6MDgJMS4xNDExMQorIyMgLTEsNiArMSwzNCBAQAorIDIwMTItMDQtMTcgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJQ29kZSBjbGVhbnVwLgor KwkqIGNoYXJzZXQuYyAoZmluZF9jaGFyc2V0X25hbWVzKTogUmVtb3ZlIHZhcmlhYmxlcyBpeCBh bmQgZWx0LgorKwlVc2UgZnJlZV9jaGFyX3B0cl92ZWMuCisrCSogZWxmcmVhZC5jIChidWlsZF9p ZF90b19kZWJ1Z19maWxlbmFtZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJfdmVjLAorKwliYWNr X3RvIGFuZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBSZW1vdmUgdmFyaWFi bGUKKysJZGVidWdkaXJfZW5kLiAgTmV3IHZhcmlhYmxlIGRlYnVnZGlyX2xlbi4KKysJKiBnZGJf dmVjcy5oIChmcmVlX2NoYXJfcHRyX3ZlYywgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVj KQorKwkoZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCwgZGlybmFtZXNfdG9fY2hhcl9w dHJfdmVjKTogTmV3CisrCWRlY2xhcmF0aW9ucy4KKysJKiBwcm9nc3BhY2UuYyAoY2xlYXJfcHJv Z3JhbV9zcGFjZV9zb2xpYl9jYWNoZSk6IFJlbW92ZSB2YXJpYWJsZXMgaXgKKysJYW5kIGVsdC4g IFVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KKysJKiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUg dmFyaWFibGVzIGFyZ3YsIGFyZyBhbmQgYXJndl9pbmRleC4KKysJTmV3IHZhcmlhYmxlcyBkaXJf dmVjLCBiYWNrX3RvLCBpeCBhbmQgbmFtZS4KKysJVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3Zl Y19hcHBlbmQuICBVc2UgZnJlZWFyZ3YgaW5zdGVhZCBvZgorKwltYWtlX2NsZWFudXBfZnJlZWFy Z3YuICBSZW1vdmUgdmFyaWFibGUgc2VwYXJhdG9yLiAgU2ltcGxpZnkgdGhlIGNvZGUKKysJbm8g bG9uZ2VyIGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRPUi4KKysJKG9wZW5wKTogUmVtb3ZlIHZh cmlhYmxlIHAsIHAxIGFuZCBsZW4uICBOZXcgdmFyaWFibGVzIGRpcl92ZWMsCisrCWJhY2tfdG8s IGl4IGFuZCBkaXIuICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgU2ltcGxpZnkgdGhl IGNvZGUKKysJbm8gbG9uZ2VyIGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRPUi4KKysJKiBzeW1m aWxlLmMgKGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJf dmVjLAorKwliYWNrX3RvIGFuZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBS ZW1vdmUgdmFyaWFibGUKKysJZGVidWdkaXJfZW5kLgorKwkqIHV0aWxzLmMgKGZyZWVfY2hhcl9w dHJfdmVjLCBkb19mcmVlX2NoYXJfcHRyX3ZlYykKKysJKG1ha2VfY2xlYW51cF9mcmVlX2NoYXJf cHRyX3ZlYywgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCkKKysJKGRpcm5hbWVzX3Rv X2NoYXJfcHRyX3ZlYyk6IE5ldyBmdW5jdGlvbnMuCisrCisrMjAxMi0wNC0xNyAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFudXAuCisg CSogc291cmNlLmMgKGFkZF9wYXRoKTogUmVtb3ZlIGFsd2F5cyB0cnVlIGNvbmRpdGlvbmFsICdw ID09IDAnIGFuZAorIAl1bmluZGVudCBpdHMgY29kZSBibG9jay4KKyAKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9nZGJfdmVjcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9nZGJfdmVjcy5oCTIwMTItMDQtMTggMDA6NDA6MTIuMDY3MDg2MDE2 ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE4 IDAwOjQwOjIzLjQ3NDA1Njk5MyArMDIwMAorQEAgLTI1LDQgKzI1LDE2IEBACisgCisgREVGX1ZF Q19QIChjaGFyX3B0cik7CisgCisrLyogRnJvbSB1dGlscy5jOiAqLworKworK2V4dGVybiB2b2lk IGZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKTsKKysKKytl eHRlcm4gc3RydWN0IGNsZWFudXAgKgorKyAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVj IChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKTsKKysKKytleHRlcm4gdm9pZCBkaXJuYW1l c190b19jaGFyX3B0cl92ZWNfYXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZlY3AsCisrCQkJCQkg ICAgIGNvbnN0IGNoYXIgKmRpcm5hbWVzKTsKKysKKytleHRlcm4gVkVDIChjaGFyX3B0cikgKmRp cm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29uc3QgY2hhciAqZGlybmFtZXMpOworKworICNlbmRp ZiAvKiBHREJfVkVDU19IICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwky MDEyLTA0LTE4IDAwOjQwOjEyLjA2ODA4NjAxMyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3V0aWxzLmMJMjAxMi0wNC0xOCAwMDo0MDo0OS44NjI5ODk4NTUgKzAyMDAKK0BAIC0y OSw2ICsyOSw3IEBACisgI2lmZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyAjaW5jbHVkZSA8c3lz L3Jlc291cmNlLmg+CisgI2VuZGlmIC8qIEhBVkVfU1lTX1JFU09VUkNFX0ggKi8KKysjaW5jbHVk ZSAiZ2RiX3ZlY3MuaCIKKyAKKyAjaWZkZWYgVFVJCisgI2luY2x1ZGUgInR1aS90dWkuaCIJCS8q IEZvciB0dWlfZ2V0X2NvbW1hbmRfZGltZW5zaW9uLiAgICovCitAQCAtMzgzNSw2ICszODM2LDk1 IEBAIHByb2R1Y2VyX2lzX2djY19nZV80IChjb25zdCBjaGFyICpwcm9kdWMKKyAgIHJldHVybiBt aW5vcjsKKyB9CisgCisrLyogQ2FsbCB4ZnJlZSBmb3IgZWFjaCBlbGVtZW50IG9mIENIQVJfUFRS X1ZFQyBhbmQgZmluYWwgVkVDX2ZyZWUgZm9yCisrICAgQ0hBUl9QVFJfVkVDIGl0c2VsZi4KKysK KysgICBZb3UgbXVzdCBub3QgbW9kaWZ5IENIQVJfUFRSX1ZFQyBhZnRlciBpdCBnb3QgcmVnaXN0 ZXJlZCB3aXRoIHRoaXMgZnVuY3Rpb24KKysgICBieSBtYWtlX2NsZWFudXAgYXMgdGhlIENIQVJf UFRSX1ZFQyBiYXNlIGFkZHJlc3MgbWF5IGNoYW5nZSBvbiBpdHMgdXBkYXRlcy4KKysgICBDb250 cmFyeSB0byBWRUNfZnJlZSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IChjYW5ub3QpIGNsZWFyIHRo ZSBwb2ludGVyLiAgKi8KKysKKyt2b2lkCisrZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9w dHIpICpjaGFyX3B0cl92ZWMpCisreworKyAgaW50IGl4OworKyAgY2hhciAqbmFtZTsKKysKKysg IGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGNoYXJfcHRyX3ZlYywgaXgsIG5h bWUpOyArK2l4KQorKyAgICB4ZnJlZSAobmFtZSk7CisrICBWRUNfZnJlZSAoY2hhcl9wdHIsIGNo YXJfcHRyX3ZlYyk7CisrfQorKworKy8qIEhlbHBlciBmb3IgbWFrZV9jbGVhbnVwX2ZyZWVfY2hh cl9wdHJfdmVjLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2RvX2ZyZWVfY2hhcl9wdHJfdmVjICh2 b2lkICphcmcpCisreworKyAgVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyA9IGFyZzsKKysK KysgIGZyZWVfY2hhcl9wdHJfdmVjIChjaGFyX3B0cl92ZWMpOworK30KKysKKysvKiBNYWtlIGNs ZWFudXAgaGFuZGxlciBjYWxsaW5nIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQgb2YgQ0hBUl9QVFJf VkVDIGFuZAorKyAgIGZpbmFsIFZFQ19mcmVlIGZvciBDSEFSX1BUUl9WRUMgaXRzZWxmLgorKwor KyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIHRoaXMgY2xlYW51cCBy ZWdpc3RyYXRpb24gYXMgdGhlCisrICAgQ0hBUl9QVFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hh bmdlIG9uIGl0cyB1cGRhdGVzLiAgQ29udHJhcnkgdG8gVkVDX2ZyZWUKKysgICB0aGlzIGZ1bmN0 aW9uIGRvZXMgbm90IChjYW5ub3QpIGNsZWFyIHRoZSBwb2ludGVyLiAgKi8KKysKKytzdHJ1Y3Qg Y2xlYW51cCAqCisrbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRy KSAqY2hhcl9wdHJfdmVjKQorK3sKKysgIHJldHVybiBtYWtlX2NsZWFudXAgKGRvX2ZyZWVfY2hh cl9wdHJfdmVjLCBjaGFyX3B0cl92ZWMpOworK30KKysKKysvKiBFeHRlbmRlZCB2ZXJzaW9uIG9m IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAtIGFkZGl0aW9uYWxseSBpZiAqVkVDUCBpcworKyAg IG5vbi1OVUxMIHRoZSBuZXcgbGlzdCBlbGVtZW50cyBmcm9tIERJUk5BTUVTIGFyZSBhcHBlbmRl ZCB0byB0aGUgZXhpc3RpbmcKKysgICAqVkVDUCBsaXN0IG9mIGVudHJpZXMuICAqVkVDUCBhZGRy ZXNzIHdpbGwgYmUgdXBkYXRlZCBieSB0aGlzIGNhbGwuICAqLworKworK3ZvaWQKKytkaXJuYW1l c190b19jaGFyX3B0cl92ZWNfYXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZlY3AsIGNvbnN0IGNo YXIgKmRpcm5hbWVzKQorK3sKKysgIGRvCisrICAgIHsKKysgICAgICBzaXplX3QgdGhpc19sZW47 CisrICAgICAgY2hhciAqbmV4dF9kaXIsICp0aGlzX2RpcjsKKysKKysgICAgICBuZXh0X2RpciA9 IHN0cmNociAoZGlybmFtZXMsIERJUk5BTUVfU0VQQVJBVE9SKTsKKysgICAgICBpZiAobmV4dF9k aXIgPT0gTlVMTCkKKysJdGhpc19sZW4gPSBzdHJsZW4gKGRpcm5hbWVzKTsKKysgICAgICBlbHNl CisrCXsKKysJICB0aGlzX2xlbiA9IG5leHRfZGlyIC0gZGlybmFtZXM7CisrCSAgbmV4dF9kaXIr KzsKKysJfQorKworKyAgICAgIHRoaXNfZGlyID0geG1hbGxvYyAodGhpc19sZW4gKyAxKTsKKysg ICAgICBtZW1jcHkgKHRoaXNfZGlyLCBkaXJuYW1lcywgdGhpc19sZW4pOworKyAgICAgIHRoaXNf ZGlyW3RoaXNfbGVuXSA9ICdcMCc7CisrICAgICAgVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsICp2 ZWNwLCB0aGlzX2Rpcik7CisrCisrICAgICAgZGlybmFtZXMgPSBuZXh0X2RpcjsKKysgICAgfQor KyAgd2hpbGUgKGRpcm5hbWVzICE9IE5VTEwpOworK30KKysKKysvKiBTcGxpdCBESVJOQU1FUyBi eSBESVJOQU1FX1NFUEFSQVRPUiBkZWxpbWl0ZXIgYW5kIHJldHVybiBhIGxpc3Qgb2YgYWxsIHRo ZQorKyAgIGVsZW1lbnRzIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLiAgRm9yIGVtcHR5IHN0cmlu ZyAoIiIpIERJUk5BTUVTIHJldHVybgorKyAgIGxpc3Qgb2Ygb25lIGVtcHR5IHN0cmluZyAoIiIp IGVsZW1lbnQuCisrICAgCisrICAgWW91IG1heSBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZ3Mu CisrICAgUmVhZCBmcmVlX2NoYXJfcHRyX3ZlYyBmb3IgaXRzIGNsZWFudXAuICAqLworKworK1ZF QyAoY2hhcl9wdHIpICoKKytkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRp cm5hbWVzKQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpyZXR2YWwgPSBOVUxMOworKyAgCisrICBk aXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kICgmcmV0dmFsLCBkaXJuYW1lcyk7CisrCisr ICByZXR1cm4gcmV0dmFsOworK30KKysKKyAjaWZkZWYgSEFWRV9XQUlUUElECisgCisgI2lmZGVm IFNJR0FMUk0KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNoIGIvZ2RiLWF1 dG9sb2FkLTA5b2YxMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI0NGNm Zi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTE2OCArMCwwIEBACi1bcGF0Y2gjNCAzLzhdIGF1dG8tbG9hZDogcmVzaHVmZmxlIGNv ZGUKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg3 Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTIu aHRtbAotCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2 OjI5LjA0OTEyMDIxMiArMDIwMAotQEAgLTAsMCArMSw0NzIgQEAKLSsvKiBHREIgcm91dGluZXMg Zm9yIHN1cHBvcnRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsKLSsgICBDb3B5cmlnaHQgKEMp IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKLSsjaW5j bHVkZSAicHJvZ3NwYWNlLmgiCi0rI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKLSsjaW5jbHVk ZSAiZ2RiX3JlZ2V4LmgiCi0rI2luY2x1ZGUgInVpLW91dC5oIgotKyNpbmNsdWRlICJmaWxlbmFt ZXMuaCIKLSsjaW5jbHVkZSAiY29tbWFuZC5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotKyNp bmNsdWRlICJvYmpmaWxlcy5oIgotKyNpbmNsdWRlICJweXRob24vcHl0aG9uLWludGVybmFsLmgi Ci0rCi0rLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5n LgotKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdo ZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCi0rICAgZmFsc2Ugb3RoZXJ3aXNlLgotKwotKyAgIEJv dGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRy dWUgdG8gZW5hYmxlCi0rICAgYXV0by1sb2FkaW5nLgotKwotKyAgIFRoaXMgZmxhZyBleGlzdHMg dG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAotKyAg IHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhl IHNlYXJjaCBkaXJlY3RvcmllcwotKyAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCi0r aW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOwotKwotKy8qIEZvciBzY3JpcHRzIHNwZWNp ZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVzIG1heSBsb2FkCi0r ICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2FkaW5nIHRoZSBzY3Jp cHQgbXVsdGlwbGUgdGltZXMsCi0rICAgYW5kIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBvYmpmaWxl cyBhbmQgc2NyaXB0cywgc28gd2Uga2VlcCB0cmFjayBvZiBzY3JpcHRzCi0rICAgbG9hZGVkIHRo aXMgd2F5LiAgKi8KLSsKLStzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvCi0rewotKyAgLyog Rm9yIGVhY2ggcHJvZ3JhbSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRlZCBzY3JpcHRzLiAg Ki8KLSsgIHN0cnVjdCBodGFiICpsb2FkZWRfc2NyaXB0czsKLSsKLSsgIC8qIE5vbi16ZXJvIGlm IHdlJ3ZlIGlzc3VlZCB0aGUgd2FybmluZyBhYm91dCBhbiBhdXRvLWxvYWQgc2NyaXB0IG5vdCBi ZWluZwotKyAgICAgZm91bmQuICBXZSBvbmx5IHdhbnQgdG8gaXNzdWUgdGhpcyB3YXJuaW5nIG9u Y2UuICAqLwotKyAgaW50IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOwotK307Ci0r Ci0rLyogT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUgbG9hZGVkIHNjcmlw dCBoYXNoIHRhYmxlLiAgKi8KLSsKLStzdHJ1Y3QgbG9hZGVkX3NjcmlwdAotK3sKLSsgIC8qIE5h bWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLwotKyAgY29uc3QgY2hhciAqbmFtZTsK LSsgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24ndCBmb3VuZCAob3Ig d2FzIG90aGVyd2lzZQotKyAgICAgaW5hY2Nlc3NpYmxlKS4gICovCi0rICBjb25zdCBjaGFyICpm dWxsX3BhdGg7Ci0rfTsKLSsKLSsvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCi0r c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9fbG9hZF9wc3BhY2Vf ZGF0YTsKLSsKLStzdGF0aWMgdm9pZAotK2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCi0rewotKyAgc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2Rh dGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKLSsgIGlmIChpbmZvICE9IE5VTEwp Ci0rICAgIHsKLSsgICAgICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMpCi0rCWh0YWJfZGVsZXRl IChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0rICAgICAgeGZyZWUgKGluZm8pOwotKyAgICB9Ci0r fQotKwotKy8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9hZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3Vu ZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCi0rICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYSB2 YWxpZCBvYmplY3QuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICoKLStnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNw YWNlKQotK3sKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0rCi0rICBp bmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7 Ci0rICBpZiAoaW5mbyA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOwotKyAgICAgIHNldF9wcm9ncmFtX3NwYWNlX2Rh dGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhLCBpbmZvKTsKLSsgICAgfQotKwotKyAg cmV0dXJuIGluZm87Ci0rfQotKwotKy8qIEhhc2ggZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2Ny aXB0IGhhc2guICAqLwotKwotK3N0YXRpYyBoYXNodmFsX3QKLStoYXNoX2xvYWRlZF9zY3JpcHRf ZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCi0rewotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKmUgPSBkYXRhOwotKwotKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOwot K30KLSsKLSsvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4g ICovCi0rCi0rc3RhdGljIGludAotK2VxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIpCi0rewotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVh ID0gYTsKLSsgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7Ci0rCi0rICByZXR1 cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09IDA7Ci0rfQotKwotKy8qIEluaXRpYWxp emUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgotKyAgIEVhY2ggZW50cnkgaXMg aGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbml0 X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFj ZV9pbmZvKQotK3sKLSsgIC8qIENob29zZSAzMSBhcyB0aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUg aGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHkuCi0rICAgICBTcGFjZSBmb3IgZWFjaCBl bnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZyZWUgdGhlbQotKyAg ICAgZWFzaWx5LiAgKi8KLSsKLSsgIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJf Y3JlYXRlICgzMSwKLSsJCQkJCSAgICAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LAotKwkJCQkJ ICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAotKwkJCQkJICAgICB4ZnJlZSk7Ci0rCi0rICBw c3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKLSt9 Ci0rCi0rLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIHRvIGFsc28gYWxs b2NhdGUgdGhlIGhhc2ggdGFibGUKLSsgICBmb3IgbG9hZGluZyBzY3JpcHRzLiAgKi8KLSsKLStz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLStnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh X2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQotK3sKLSsgIHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0gZ2V0X2F1dG9fbG9h ZF9wc3BhY2VfZGF0YSAocHNwYWNlKTsKLSsgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cyA9PSBO VUxMKQotKyAgICBpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKGluZm8pOwotKwotKyAgcmV0dXJu IGluZm87Ci0rfQotKwotKy8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFD RV9JTkZPLgotKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5k LgotKyAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRo ZSBoYXNoIHRhYmxlLiAgKi8KLSsKLStpbnQKLSttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwKLSsJCSAg Y29uc3QgY2hhciAqZnVsbF9wYXRoKQotK3sKLSsgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNl X2luZm8tPmxvYWRlZF9zY3JpcHRzOwotKyAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBl bnRyeTsKLSsgIGludCBpbl9oYXNoX3RhYmxlOwotKwotKyAgZW50cnkubmFtZSA9IG5hbWU7Ci0r ICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0rICBzbG90ID0gKHN0cnVjdCBsb2FkZWRf c2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOwotKyAgaW5f aGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Ci0rCi0rICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBu b3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCi0rCi0rICBpZiAoISBpbl9oYXNoX3Rh YmxlKQotKyAgICB7Ci0rICAgICAgY2hhciAqcDsKLSsKLSsgICAgICAvKiBBbGxvY2F0ZSBhbGwg c3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAqLwotKyAgICAgICpz bG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCi0rCQkgICAgICAgKyBzdHJsZW4gKG5hbWUp ICsgMQotKwkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRo KSArIDEpIDogMCkpOwotKyAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBzaXplb2YgKCoqc2xv dCk7Ci0rICAgICAgc3RyY3B5IChwLCBuYW1lKTsKLSsgICAgICAoKnNsb3QpLT5uYW1lID0gcDsK LSsgICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCi0rCXsKLSsJICBwICs9IHN0cmxlbiAocCkg KyAxOwotKwkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsKLSsJICAoKnNsb3QpLT5mdWxsX3BhdGgg PSBwOwotKwl9Ci0rICAgICAgZWxzZQotKwkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOwotKyAg ICB9Ci0rCi0rICByZXR1cm4gaW5faGFzaF90YWJsZTsKLSt9Ci0rCi0rLyogQ2xlYXIgdGhlIHRh YmxlIG9mIGxvYWRlZCBzZWN0aW9uIHNjcmlwdHMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rY2xl YXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQotK3sKLSsgIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpw c3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7Ci0rICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICppbmZvOwotKwotKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBh dXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotKyAgaWYgKGluZm8gIT0gTlVMTCAmJiBpbmZvLT5sb2Fk ZWRfc2NyaXB0cyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgaHRhYl9kZWxldGUgKGluZm8tPmxv YWRlZF9zY3JpcHRzKTsKLSsgICAgICBpbmZvLT5sb2FkZWRfc2NyaXB0cyA9IE5VTEw7Ci0rICAg ICAgaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKLSsgICAg fQotK30KLSsKLSsvKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdp dGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCi0rCi0rdm9pZAotK2F1dG9fbG9hZF9vYmpmaWxl X3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKLSt7 Ci0rICBjaGFyICpyZWFsbmFtZTsKLSsgIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOwotKyAg aW50IGxlbjsKLSsgIEZJTEUgKmlucHV0OwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwot KwotKyAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOwotKyAgbGVuID0g c3RybGVuIChyZWFsbmFtZSk7Ci0rICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAo c3VmZml4KSArIDEpOwotKyAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0rICBz dHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOwotKwotKyAgY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Ci0rICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFt ZSk7Ci0rCi0rICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKLSsgIGRlYnVnZmlsZSA9 IGZpbGVuYW1lOwotKwotKyAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKLSsg ICAgewotKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRl YnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KLSsgICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJs ZW4gKGZpbGVuYW1lKQotKwkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAx KTsKLSsgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotKyAg ICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUu ICAqLwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0rCi0rICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSsgICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7Ci0rICAgIH0KLSsKLSsgIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCi0r ICAgIHsKLSsgICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5 IG9mIGdkYidzIGRhdGEKLSsJIGRpcmVjdG9yeS4gICovCi0rICAgICAgZGVidWdmaWxlID0geG1h bGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQotKwkJCSAgICsg c3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7Ci0rICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdk Yl9kYXRhZGlyKTsKLSsgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKLSsg ICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJl LiAgKi8KLSsgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwotKwotKyAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7Ci0rICAgICAgaW5wdXQgPSBmb3BlbiAoZGVi dWdmaWxlLCAiciIpOwotKyAgICB9Ci0rCi0rICBpZiAoaW5wdXQpCi0rICAgIHsKLSsgICAgICBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsKLSsgICAgICBtYWtl X2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0rCi0rICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRv IHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLSsJIGNhbiBw cmludCBpdC4gICovCi0rICAgICAgcHNwYWNlX2luZm8gPQotKwlnZXRfYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotKyAgICAgIG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7Ci0rCi0rICAg ICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3 aGV0aGVyIHRoZQotKwkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5 cyBsb2FkIGl0LgotKwkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBp dCB0d2ljZSwKLSsJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90 ZW50IHVuZGVyIG11bHRpcGxlCi0rCSBsb2FkcyBhbnl3YXkuICAqLwotKyAgICAgIHNvdXJjZV9w eXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLSsg ICAgfQotKwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSt9Ci0rCi0rLyogVGhpcyBpcyBh IG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgotKwot KyAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KLSsg ICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQotKyAgIDIpIGZyb20gLmRlYnVn X2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCi0rCi0rc3RhdGljIHZvaWQKLSthdXRvX2xvYWRfbmV3 X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGlmICghb2JqZmlsZSkK LSsgICAgewotKyAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1h aW4iIHN5bWJvbC1maWxlLiAgKi8KLSsgICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7Ci0r ICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmls ZSAob2JqZmlsZSk7Ci0rfQotKwotKy8qIENvbGxlY3Qgc2NyaXB0cyB0byBiZSBwcmludGVkIGlu IGEgdmVjLiAgKi8KLSsKLSt0eXBlZGVmIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2FkZWRfc2Ny aXB0X3B0cjsKLStERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRyKTsKLSsKLSsvKiBUcmF2ZXJz YWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCi0rICAgQ29sbGVjdCB0aGUgZW50cnkgaWYg aXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rY29sbGVjdF9tYXRj aGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKLSt7Ci0rICBzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7Ci0rICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAq KnNjcmlwdHNfcHRyID0gaW5mbzsKLSsKLSsgIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQot KyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3Jp cHQpOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIFByaW50IFNDUklQVC4gICovCi0rCi0r c3RhdGljIHZvaWQKLStwcmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQp Ci0rewotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKyAgc3RydWN0 IGNsZWFudXAgKmNoYWluOwotKwotKyAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxl X2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotKwotKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKLSsg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwgc2NyaXB0LT5uYW1lKTsKLSsg IHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0rCi0rICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0 aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLwotKyAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRo ICE9IE5VTEwKLSsgICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFtZSwgc2NyaXB0LT5mdWxsX3Bh dGgpICE9IDApCi0rICAgIHsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcdGZ1bGwgbmFt ZTogIik7Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmdWxsX3BhdGgiLCBz Y3JpcHQtPmZ1bGxfcGF0aCk7Ci0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsg ICAgfQotKwotKyAgZG9fY2xlYW51cHMgKGNoYWluKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZvciBp bmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4gICovCi0r Ci0rc3RhdGljIGludAotK3NvcnRfc2NyaXB0c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY29u c3Qgdm9pZCAqYnApCi0rewotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNv bnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsKLSsgIGNvbnN0IHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYnA7Ci0rCi0rICBy ZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKLSt9Ci0rCi0rLyogImluZm8g YXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5mb19h dXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3sKLSsgIHN0 cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsgIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKyAgc3RydWN0IGNsZWFudXAgKnNjcmlwdF9jaGFp bjsKLSsgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRzOwotKyAgaW50IG5yX3Njcmlw dHM7Ci0rCi0rICBkb250X3JlcGVhdCAoKTsKLSsKLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9f bG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsKLSsgIGlmIChwYXR0 ZXJuICYmICpwYXR0ZXJuKQotKyAgICB7Ci0rICAgICAgY2hhciAqcmVfZXJyID0gcmVfY29tcCAo cGF0dGVybik7Ci0rCi0rICAgICAgaWYgKHJlX2VycikKLSsJZXJyb3IgKF8oIkludmFsaWQgcmVn ZXhwOiAlcyIpLCByZV9lcnIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICByZV9j b21wICgiIik7Ci0rICAgIH0KLSsKLSsgIC8qIFdlIG5lZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9m IHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4KLSsgICAgIFBsdXMgd2Ugd2FudCB0byBz b3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCi0rICAgICBTbyBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFz aCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRzLiAgKi8KLSsKLSsgIHNjcmlw dHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7Ci0rICBzY3JpcHRfY2hhaW4g PSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2NyaXB0X3B0ciksICZzY3JpcHRz KTsKLSsKLSsgIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRf c2NyaXB0cyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKLSsgICAg ICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxs b2Mgc3BhY2UuICAqLwotKyAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cywKLSsJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZz Y3JpcHRzKTsKLSsgICAgICBpbW1lZGlhdGVfcXVpdC0tOwotKyAgICB9Ci0rCi0rICBucl9zY3Jp cHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOwotKyAgbWFrZV9j bGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAotKwkJ CQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKLSsKLSsgIHVpX291dF90YWJsZV9o ZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxvYWRlZCIpOwotKyAgdWlfb3V0 X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2NyaXB0IiwgIlNjcmlwdCIpOwot KyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKLSsKLSsgIGlmIChucl9zY3JpcHRzID4gMCkK LSsgICAgewotKyAgICAgIGludCBpOwotKyAgICAgIGxvYWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsK LSsKLSsgICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRz KSwKLSsJICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCi0rCSAg ICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2NyaXB0c19ieV9uYW1lKTsKLSsg ICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMs IGksIHNjcmlwdCk7ICsraSkKLSsJcHJpbnRfc2NyaXB0IChzY3JpcHQpOwotKyAgICB9Ci0rCi0r ICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKLSsKLSsgIGlmIChucl9zY3JpcHRzID09IDAp Ci0rICAgIHsKLSsgICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKLSsJdWlfb3V0X21lc3Nh Z2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcgJXMuXG4iLAotKwkJ CXBhdHRlcm4pOwotKyAgICAgIGVsc2UKLSsJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8g YXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKLSsgICAgfQotK30KLSsKLSsvKiBSZXR1cm4gbm9uLXpl cm8gaWYgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQQUNFX0lORk8gd2Fz IHVuc2V0Ci0rICAgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NS SVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQKLSsgICBvZiBQU1BBQ0VfSU5GTy4gICovCi0r Ci0raW50Ci0rc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKLSt7Ci0rICBpbnQgcmV0dmFsID0gIXBzcGFjZV9p bmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKLSsKLSsgIHBzcGFjZV9pbmZv LT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IDE7Ci0rCi0rICByZXR1cm4gcmV0 dmFsOwotK30KLSsKLSt2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7Ci0rCi0rdm9p ZAotK19pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSt7Ci0rICBhdXRvX2xvYWRfcHNwYWNl X2RhdGEKLSsgICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChh dXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Ci0rCi0rICBvYnNlcnZlcl9hdHRhY2hfbmV3 X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7Ci0rCi0rICBhZGRfaW5mbyAoImF1dG8t bG9hZC1zY3JpcHRzIiwKLSsJICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMsCi0rCSAgICBfKCJQ cmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAotK1VzYWdl OiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOwotK30KLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDQ5MTIwMjEyICswMjAwCi1A QCAtMCwwICsxLDM2IEBACi0rLyogR0RCIHJvdXRpbmVzIGZvciBzdXBwb3J0aW5nIGF1dG8tbG9h ZGVkIHNjcmlwdHMuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r Ci0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmbmRlZiBBVVRPX0xP QURfSAotKyNkZWZpbmUgQVVUT19MT0FEX0ggMQotKwotK3N0cnVjdCBwcm9ncmFtX3NwYWNlOwot KwotK2V4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKLSsKLStleHRlcm4gc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0rICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zv cl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKLStleHRlcm4gaW50IG1h eWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZv LAotKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoKTsKLStl eHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAotKwkJCQkgICAgICBjb25zdCBjaGFyICpzdWZmaXgpOwotK2V4dGVybiBpbnQKLSsgIHNj cmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqcHNwYWNlX2luZm8pOwotKwotKyNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLwotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYi1nZGIuZ2RiLmluCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4JMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAy MTIgKzAyMDAKLUBAIC0wLDAgKzEsMzQgQEAKLStlY2hvIFNldHRpbmcgdXAgdGhlIGVudmlyb25t ZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCi0rCi0rc2V0IGNvbXBsYWludHMgMQotKwotK2IgaW50 ZXJuYWxfZXJyb3IKLSsKLStiIGluZm9fY29tbWFuZAotK2NvbW1hbmRzCi0rCXNpbGVudAotKwly ZXR1cm4KLStlbmQKLSsKLStkaXIgQHNyY2RpckAvLi4vbGliaWJlcnR5Ci0rZGlyIEBzcmNkaXJA Ly4uL2JmZAotK2RpciBAc3JjZGlyQAotK2RpciAuCi0rc2V0IHByb21wdCAodG9wLWdkYikgCi0r Ci0rZGVmaW5lIHBkaWUKLSsgIGlmICRhcmdjID09IDEKLSsgICAgY2FsbCBkdW1wX2RpZSAoJGFy ZzAsIDEpCi0rICBlbHNlCi0rICAgIGlmICRhcmdjID09IDIKLSsgICAgICBjYWxsIGR1bXBfZGll ICgkYXJnMCwgJGFyZzEpCi0rICAgIGVsc2UKLSsgICAgICBwcmludGYgIlN5bnRheDogcGRpZSBk aWUgW2RlcHRoXVxuIgotKyAgICBlbmQKLSsgIGVuZAotK2VuZAotKwotK2RvY3VtZW50IHBkaWUK LStQcmV0dHkgcHJpbnQgYSBEV0FSRiBESUUuCi0rU3ludGF4OiBwZGllIGRpZSBbZGVwdGhdCi0r ZW5kCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4KLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTItMDQt MTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv TWFrZWZpbGUuaW4JMjAxMi0wNC0xOCAwMDoyNjo1My40NTUwNTgwMzcgKzAyMDAKLUBAIC02ODAs NyArNjgwLDcgQEAgVEFSR0VUX0ZMQUdTX1RPX1BBU1MgPSBcCi0gIyBTRklMRVMgaXMgdXNlZCBp biBidWlsZGluZyB0aGUgZGlzdHJpYnV0aW9uIGFyY2hpdmUuCi0gCi0gU0ZJTEVTID0gYWRhLWV4 cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10YXNrcy5j IFwKLS0JYWRkcm1hcC5jIFwKLSsJYWRkcm1hcC5jIGF1dG8tbG9hZC5jIFwKLSAJYXV4di5jIGF4 LWdlbmVyYWwuYyBheC1nZGIuYyBcCi0gCWJjYWNoZS5jIFwKLSAJYmZkLXRhcmdldC5jIFwKLUBA IC04MTksNyArODE5LDcgQEAgc29saWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmggc29saWIt cwotIGdudWxpYi9leHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9jKytkZWZzLmggZ251 bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAotIGdudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJh bWUuaCBza2lwLmggc3RhcC1wcm9iZS5oIFwKLSBjb21tb24vY29tbW9uLXV0aWxzLmggY29tbW9u L3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwKLS1jb21tb24vbGlu dXgtb3NkYXRhLmggZ2RiLWRsZmNuLmgKLStjb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNu LmggYXV0by1sb2FkLmgKLSAKLSAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNk aXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KLSAKLUBAIC04NTEsNyArODUxLDcg QEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJAotIAl2ZXJzaW9uLm8g XAotIAlhbm5vdGF0ZS5vIFwKLSAJYWRkcm1hcC5vIFwKLS0JYXV4di5vIFwKLSsJYXV0by1sb2Fk Lm8gYXV4di5vIFwKLSAJYmZkLXRhcmdldC5vIFwKLSAJYmxvY2tmcmFtZS5vIGJyZWFrcG9pbnQu byBmaW5kdmFyLm8gcmVnY2FjaGUubyBcCi0gCWNoYXJzZXQubyBjb250aW51YXRpb25zLm8gY29y ZWxvdy5vIGRpc2FzbS5vIGR1bW15LWZyYW1lLm8gZGZwLm8gXAotQEAgLTEyNTUsNyArMTI1NSw3 IEBAIGRpc3RjbGVhbjogY2xlYW4KLSAJcm0gLWYgZ2Ric2VydmVyL2NvbmZpZy5zdGF0dXMgZ2Ri c2VydmVyL2NvbmZpZy5sb2cKLSAJcm0gLWYgZ2Ric2VydmVyL3RtLmggZ2Ric2VydmVyL3htLmgg Z2Ric2VydmVyL25tLmgKLSAJcm0gLWYgZ2Ric2VydmVyL01ha2VmaWxlIGdkYnNlcnZlci9jb25m aWcuY2FjaGUKLS0Jcm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0YW1wLWggLmdk YmluaXQgaml0LXJlYWRlci5oCi0rCXJtIC1mIG5tLmggY29uZmlnLnN0YXR1cyBjb25maWcuaCBz dGFtcC1oIGdkYi1nZGIuZ2RiIGppdC1yZWFkZXIuaAotIAlybSAtZiB5Lm91dHB1dCB5YWNjLmFj dHMgeWFjYy50bXAgeS50YWIuaAotIAlybSAtZiBjb25maWcubG9nIGNvbmZpZy5jYWNoZQotIAly bSAtZiBNYWtlZmlsZQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIw MTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAyICswMjAwCi1AQCAt MTY4MzksNyArMTY4MzksNyBAQCBhY19jb25maWdfbGlua3M9IiRhY19jb25maWdfbGlua3MgJGFj X2NvCi0gJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VUIFwiVVRGLThc IiIgPj5jb25mZGVmcy5oCi0gCi0gCi0tYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVz IE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmls ZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKLSthY19jb25maWdfZmlsZXM9IiRhY19jb25maWdf ZmlsZXMgTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBk YXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKLSAKLSBhY19jb25maWdfY29tbWFuZHM9IiRhY19jb25m aWdfY29tbWFuZHMgZGVmYXVsdCIKLSAKLUBAIC0xNzYwNSw3ICsxNzYwNSw3IEBAIGRvCi0gICAg ICJqaXQtcmVhZGVyLmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgaml0LXJlYWRlci5o OmppdC1yZWFkZXIuaW4iIDs7Ci0gICAgICIkYWNfY29uZmlnX2xpbmtzXzEiKSBDT05GSUdfTElO S1M9IiRDT05GSUdfTElOS1MgJGFjX2NvbmZpZ19saW5rc18xIiA7OwotICAgICAiTWFrZWZpbGUi KSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7Ci0tICAgICIuZ2RiaW5p dCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyAuZ2RiaW5pdDpnZGJpbml0LmluIiA7Owot KyAgICAiZ2RiLWdkYi5nZGIiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLWdkYi5n ZGIiIDs7Ci0gICAgICJkb2MvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg ZG9jL01ha2VmaWxlIiA7OwotICAgICAiZ251bGliL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIk Q09ORklHX0ZJTEVTIGdudWxpYi9NYWtlZmlsZSIgOzsKLSAgICAgImRhdGEtZGlyZWN0b3J5L01h a2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRhdGEtZGlyZWN0b3J5L01ha2Vm aWxlIiA7OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIw MTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAyICswMjAwCi1A QCAtMjQyMiw3ICsyNDIyLDcgQEAgZG5sICBBdCB0aGUgbW9tZW50LCB3ZSBqdXN0IGFzc3VtZSBp dCdzCi0gQUNfREVGSU5FKEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCwgIlVURi04IiwKLSAgICAg ICAgICAgW0RlZmluZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFy YWN0ZXIgc2V0Ll0pCi0gCi0tQUNfT1VUUFVUKE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4g ZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKLStB Q19PVVRQVVQoTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmls ZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKLSBbCi0gY2FzZSB4JENPTkZJR19IRUFERVJTIGlu Ci0geGNvbmZpZy5oOmNvbmZpZy5pbikKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9t YWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4u YwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAg LTQyLDYgKzQyLDcgQEAKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0gI2luY2x1ZGUgInB5 dGhvbi9weXRob24uaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSsjaW5jbHVkZSAiYXV0by1s b2FkLmgiCi0gCi0gLyogVGhlIHNlbGVjdGVkIGludGVycHJldGVyLiAgVGhpcyB3aWxsIGJlIHVz ZWQgYXMgYSBzZXQgY29tbWFuZAotICAgIHZhcmlhYmxlLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJl IG1hbGxvYydlZCAtIHNpbmNlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9u L3B5LWF1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJ MjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKLUBAIC0xOCwzMCArMTgsMTQgQEAK LSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImRlZnMuaCIKLS0jaW5jbHVkZSAi ZmlsZW5hbWVzLmgiCi0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLS0jaW5jbHVkZSAiZ2RiX3Jl Z2V4LmgiCi0gI2luY2x1ZGUgInRvcC5oIgotICNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0tI2lu Y2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0tI2luY2x1ZGUgIm9ic2Vy dmVyLmgiCi0tI2luY2x1ZGUgInByb2dzcGFjZS5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgot ICNpbmNsdWRlICJweXRob24uaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0tCi0tLyog SW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgotLSAgIFRo aXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2Jq ZmlsZSBpcyBvcGVuZWQsCi0tICAgZmFsc2Ugb3RoZXJ3aXNlLgotLQotLSAgIEJvdGggYXV0b19s b2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5h YmxlCi0tICAgYXV0by1sb2FkaW5nLgotLQotLSAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxp dGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAotLSAgIHVudGlsIGFm dGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBk aXJlY3RvcmllcwotLSAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCi0taW50IGdkYnB5 X2dsb2JhbF9hdXRvX2xvYWQgPSAxOwotKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKLSAKLSAjaWZk ZWYgSEFWRV9QWVRIT04KLSAKLUBAIC02MCwzMiArNDQsNiBAQCBpbnQgZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCA9IDE7Ci0gICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxvdyB1cHdhcmQgY29t cGF0aWJsZSBleHRlbnNpb25zLiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1F ICIuZGVidWdfZ2RiX3NjcmlwdHMiCi0gCi0tLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5k ZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKLS0gICB0aGUgc2Ft ZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBs ZSB0aW1lcywKLS0gICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZpbGVzIGFuZCBzY3Jp cHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKLS0gICBsb2FkZWQgdGhpcyB3YXkuICAq LwotLQotLXN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KLS17Ci0tICAvKiBGb3IgZWFjaCBw cm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMuICAqLwotLSAgc3Ry dWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOwotLQotLSAgLyogTm9uLXplcm8gaWYgd2UndmUgaXNz dWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90IGJlaW5nCi0tICAg ICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcgb25jZS4gICovCi0t ICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7Ci0tfTsKLS0KLS0vKiBPYmpl Y3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2ggdGFi bGUuICAqLwotLQotLXN0cnVjdCBsb2FkZWRfc2NyaXB0Ci0tewotLSAgLyogTmFtZSBhcyBwcm92 aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCi0tICBjb25zdCBjaGFyICpuYW1lOwotLSAgLyogRnVs bCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3YXMgb3RoZXJ3 aXNlCi0tICAgICBpbmFjY2Vzc2libGUpLiAgKi8KLS0gIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsK LS19OwotLQotIC8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8t bG9hZGluZzoKLSAgICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCi0gICAgVGhpcyBpcyB0 cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2Jq ZmlsZQotQEAgLTk3LDEzNiArNTUsNiBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAotICAgIFRoZSBm YWN0IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4g ICovCi0gc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7Ci0gCi0tLyogUGVyLXByb2dy YW0tc3BhY2UgZGF0YSBrZXkuICAqLwotLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZV9kYXRhICphdXRvX2xvYWRfcHNwYWNlX2RhdGE7Ci0tCi0tc3RhdGljIHZvaWQKLS1hdXRvX2xv YWRfcHNwYWNlX2RhdGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9p ZCAqYXJnKQotLXsKLS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0tCi0t ICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0 YSk7Ci0tICBpZiAoaW5mbyAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaWYgKGluZm8tPmxvYWRl ZF9zY3JpcHRzKQotLQlodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOwotLSAgICAg IHhmcmVlIChpbmZvKTsKLS0gICAgfQotLX0KLS0KLS0vKiBHZXQgdGhlIGN1cnJlbnQgYXV0b2xv YWQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAgVGhpcwotLSAgIGZ1 bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KLS0KLS1zdGF0aWMgc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0tZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAo c3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKLS17Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3Bz cGFjZV9pbmZvICppbmZvOwotLQotLSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNl LCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotLSAgaWYgKGluZm8gPT0gTlVMTCkKLS0gICAgewot LSAgICAgIGluZm8gPSBYWkFMTE9DIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvKTsKLS0g ICAgICBzZXRfcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0 YSwgaW5mbyk7Ci0tICAgIH0KLS0KLS0gIHJldHVybiBpbmZvOwotLX0KLS0KLS0vKiBIYXNoIGZ1 bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KLS0KLS1zdGF0aWMgaGFzaHZh bF90Ci0taGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpkYXRhKQotLXsKLS0g IGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKLS0KLS0gIHJldHVybiBodGFi X2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKLS19Ci0tCi0tLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9y IHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotLQotLXN0YXRpYyBpbnQKLS1lcV9sb2FkZWRf c2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQotLXsKLS0gIGNvbnN0 IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7Ci0tICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCAqZWIgPSBiOwotLQotLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9 PSAwOwotLX0KLS0KLS0vKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFjayBsb2FkZWQgc2Ny aXB0cy4KLS0gICBFYWNoIGVudHJ5IGlzIGhhc2hlZCBieSB0aGUgZnVsbCBwYXRoIG5hbWUuICAq LwotLQotLXN0YXRpYyB2b2lkCi0taW5pdF9sb2FkZWRfc2NyaXB0c19pbmZvIChzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKLS17Ci0tICAvKiBDaG9vc2UgMzEgYXMg dGhlIHN0YXJ0aW5nIHNpemUgb2YgdGhlIGhhc2ggdGFibGUsIHNvbWV3aGF0IGFyYml0cmFyaWx5 LgotLSAgICAgU3BhY2UgZm9yIGVhY2ggZW50cnkgaXMgb2J0YWluZWQgd2l0aCBvbmUgbWFsbG9j IHNvIHdlIGNhbiBmcmVlIHRoZW0KLS0gICAgIGVhc2lseS4gICovCi0tCi0tICBwc3BhY2VfaW5m by0+bG9hZGVkX3NjcmlwdHMgPSBodGFiX2NyZWF0ZSAoMzEsCi0tCQkJCQkgICAgIGhhc2hfbG9h ZGVkX3NjcmlwdF9lbnRyeSwKLS0JCQkJCSAgICAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSwKLS0J CQkJCSAgICAgeGZyZWUpOwotLQotLSAgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2Fy bmluZ19wcmludGVkID0gRkFMU0U7Ci0tfQotLQotLS8qIFdyYXBwZXIgb24gZ2V0X2F1dG9fbG9h ZF9wc3BhY2VfZGF0YSB0byBhbHNvIGFsbG9jYXRlIHRoZSBoYXNoIHRhYmxlCi0tICAgZm9yIGxv YWRpbmcgc2NyaXB0cy4gICovCi0tCi0tc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKgotLWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9n cmFtX3NwYWNlICpwc3BhY2UpCi0tewotLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq aW5mbzsKLS0KLS0gIGluZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChwc3BhY2UpOwot LSAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5VTEwpCi0tICAgIGluaXRfbG9hZGVkX3Nj cmlwdHNfaW5mbyAoaW5mbyk7Ci0tCi0tICByZXR1cm4gaW5mbzsKLS19Ci0tCi0tLyogQWRkIHNj cmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgSFRBQi4KLS0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0 aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KLS0gICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNj cmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCi0tCi0tc3RhdGljIGludAot LW1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBodGFiICpodGFiLCBjb25zdCBjaGFyICpuYW1lLCBj b25zdCBjaGFyICpmdWxsX3BhdGgpCi0tewotLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90 LCBlbnRyeTsKLS0gIGludCBpbl9oYXNoX3RhYmxlOwotLQotLSAgZW50cnkubmFtZSA9IG5hbWU7 Ci0tICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0tICBzbG90ID0gKHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOwotLSAg aW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Ci0tCi0tICAvKiBJZiB0aGlzIHNjcmlwdCBp cyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCi0tCi0tICBpZiAoISBpbl9oYXNo X3RhYmxlKQotLSAgICB7Ci0tICAgICAgY2hhciAqcDsKLS0KLS0gICAgICAvKiBBbGxvY2F0ZSBh bGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAqLwotLSAgICAg ICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCi0tCQkgICAgICAgKyBzdHJsZW4gKG5h bWUpICsgMQotLQkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9w YXRoKSArIDEpIDogMCkpOwotLSAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBzaXplb2YgKCoq c2xvdCk7Ci0tICAgICAgc3RyY3B5IChwLCBuYW1lKTsKLS0gICAgICAoKnNsb3QpLT5uYW1lID0g cDsKLS0gICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCi0tCXsKLS0JICBwICs9IHN0cmxlbiAo cCkgKyAxOwotLQkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsKLS0JICAoKnNsb3QpLT5mdWxsX3Bh dGggPSBwOwotLQl9Ci0tICAgICAgZWxzZQotLQkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOwot LSAgICB9Ci0tCi0tICByZXR1cm4gaW5faGFzaF90YWJsZTsKLS19Ci0tCi0gLyogTG9hZCBzY3Jp cHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgotICAgIFNUQVJULEVORCBkZWxpbWl0IGEgYnVmZmVy IGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCi0gICAgZmlsZSBuYW1lcy4KLUBA IC0zMDEsMjAgKzEyOSwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmls ZSAqCi0gCi0gCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3Nl LiAgKi8KLSAKLS0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNl X2luZm8tPmxvYWRlZF9zY3JpcHRzLCBmaWxlLAotKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXli ZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwKLSAJCQkJCW9wZW5lZCA/IGZ1bGxfcGF0 aCA6IE5VTEwpOwotIAotICAgICAgIGlmICghIG9wZW5lZCkKLSAJewotIAkgIC8qIFdlIGRvbid0 IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KLS0J ICBpZiAoISBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQpCi0t CSAgICB7Ci0tCSAgICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVm ZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCi0rCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludCAocHNwYWNlX2luZm8pKQotKwkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxv YWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLSBvZiBmaWxlICVzXG5cCi0g VXNlIGBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiksCi0t CQkgICAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOwotLQkgICAg ICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBUUlVFOwot LQkgICAgfQotKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7 Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLUBAIC0zNTYsMTE2ICsxODEsNiBAQCBhdXRvX2xvYWRf c2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cHMp OwotIH0KLSAKLS0vKiBDbGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4g ICovCi0tCi0tc3RhdGljIHZvaWQKLS1jbGVhcl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCi0tewot LSAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsK LS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0tCi0tICBpbmZvID0gcHJv Z3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAo aW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCi0tICAgIHsKLS0g ICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOwotLSAgICAgIGluZm8tPmxv YWRlZF9zY3JpcHRzID0gTlVMTDsKLS0gICAgICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5p bmdfcHJpbnRlZCA9IEZBTFNFOwotLSAgICB9Ci0tfQotLQotLS8qIExvb2sgZm9yIHRoZSBhdXRv LWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLS0K LS1zdGF0aWMgdm9pZAotLWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKLS17Ci0tICBjaGFyICpyZWFsbmFtZTsKLS0g IGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOwotLSAgaW50IGxlbjsKLS0gIEZJTEUgKmlucHV0 OwotLSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwotLQotLSAgcmVhbG5hbWUgPSBnZGJfcmVh bHBhdGggKG9iamZpbGUtPm5hbWUpOwotLSAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7Ci0tICBm aWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOwotLSAgbWVtY3B5 IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0tICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBz dWZmaXgpOwotLQotLSAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7 Ci0tICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7Ci0tCi0tICBpbnB1dCA9IGZvcGVu IChmaWxlbmFtZSwgInIiKTsKLS0gIGRlYnVnZmlsZSA9IGZpbGVuYW1lOwotLQotLSAgaWYgKCFp bnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKLS0gICAgewotLSAgICAgIC8qIEFsc28gdHJ5 IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8K LS0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAgICsg c3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKLS0gICAgICBzdHJjcHkgKGRlYnVn ZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29s dXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAgIHN0cmNhdCAoZGVi dWdmaWxlLCBmaWxlbmFtZSk7Ci0tCi0tICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdm aWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0tICAgIH0KLS0K LS0gIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCi0tICAgIHsKLS0gICAgICAvKiBBbHNvIHRy eSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKLS0JIGRpcmVj dG9yeS4gICovCi0tICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRp cikgKyBzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsg MSk7Ci0tICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKLS0gICAgICBzdHJj YXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKLS0gICAgICAvKiBGSUxFTkFNRSBpcyBhYnNv bHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLS0gICAgICBzdHJjYXQgKGRl YnVnZmlsZSwgZmlsZW5hbWUpOwotLQotLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVn ZmlsZSk7Ci0tICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOwotLSAgICB9Ci0t Ci0tICBpZiAoaW5wdXQpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbzsKLS0KLS0gICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7 Ci0tCi0tICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLS0JIGNhbiBwcmludCBpdC4gICovCi0tICAgICAgcHNw YWNlX2luZm8gPQotLQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOwotLQotLSAgICAgIC8qIFRv IHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0 aGUKLS0JIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBp dC4KLS0JIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2Us Ci0tCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRl ciBtdWx0aXBsZQotLQkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0tICAgIH0KLS0K LS0gIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0tfQotLQotLS8qIFRoaXMgaXMgYSBuZXdfb2Jq ZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KLS0KLS0gICBUd28g Zmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCi0tICAgMSkgYmFz ZWQgb24gdGhlIHBhdGggdG8gdGhlIG9iamZpbGUKLS0gICAyKSBmcm9tIC5kZWJ1Z19nZGJfc2Ny aXB0cyBzZWN0aW9uICAqLwotLQotLXN0YXRpYyB2b2lkCi0tYXV0b19sb2FkX25ld19vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLS17Ci0tICBpZiAoIW9iamZpbGUpCi0tICAgIHsK LS0gICAgICAvKiBPQkpGSUxFIGlzIE5VTEwgd2hlbiBsb2FkaW5nIGEgbmV3ICJtYWluIiBzeW1i b2wtZmlsZS4gICovCi0tICAgICAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICgpOwotLSAgICAgIHJl dHVybjsKLS0gICAgfQotLQotLSAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZp bGUpOwotLX0KLS0KLSAvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxF LiAgKi8KLSAKLSB2b2lkCi1AQCAtNDc4LDE0NiArMTkzLDkgQEAgbG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUgKHN0cnVjdCBvYgotICAgICB9Ci0gfQotIAwKLS0vKiBDb2xsZWN0IHNjcmlw dHMgdG8gYmUgcHJpbnRlZCBpbiBhIHZlYy4gICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7Ci0tREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0 cik7Ci0tCi0tLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZlcnNlLgotLSAgIENv bGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICovCi0tCi0tc3RhdGlj IGludAotLWNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8p Ci0tewotLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90OwotLSAgVkVDIChs b2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87Ci0tCi0tICBpZiAocmVfZXhl YyAoc2NyaXB0LT5uYW1lKSkKLS0gICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIs ICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsKLS0KLS0gIHJldHVybiAxOwotLX0KLS0KLS0vKiBQcmlu dCBTQ1JJUFQuICAqLwotLQotLXN0YXRpYyB2b2lkCi0tcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqc2NyaXB0KQotLXsKLS0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVu dF91aW91dDsKLS0gIHN0cnVjdCBjbGVhbnVwICpjaGFpbjsKLS0KLS0gIGNoYWluID0gbWFrZV9j bGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKLS0KLS0gIHVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxsX3BhdGggPyAiWWVz IiA6ICJNaXNzaW5nIik7Ci0tICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInNjcmlwdCIs IHNjcmlwdC0+bmFtZSk7Ci0tICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotLQotLSAgLyog SWYgdGhlIG5hbWUgaXNuJ3QgdGhlIGZ1bGwgcGF0aCwgcHJpbnQgaXQgdG9vLiAgKi8KLS0gIGlm IChzY3JpcHQtPmZ1bGxfcGF0aCAhPSBOVUxMCi0tICAgICAgJiYgc3RyY21wIChzY3JpcHQtPm5h bWUsIHNjcmlwdC0+ZnVsbF9wYXRoKSAhPSAwKQotLSAgICB7Ci0tICAgICAgdWlfb3V0X3RleHQg KHVpb3V0LCAiXHRmdWxsIG5hbWU6ICIpOwotLSAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVp b3V0LCAiZnVsbF9wYXRoIiwgc2NyaXB0LT5mdWxsX3BhdGgpOwotLSAgICAgIHVpX291dF90ZXh0 ICh1aW91dCwgIlxuIik7Ci0tICAgIH0KLS0KLS0gIGRvX2NsZWFudXBzIChjaGFpbik7Ci0tfQot LQotLS8qIEhlbHBlciBmb3IgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyB0byBzb3J0IHRoZSBzY3Jp cHRzIGJ5IG5hbWUuICAqLwotLQotLXN0YXRpYyBpbnQKLS1zb3J0X3NjcmlwdHNfYnlfbmFtZSAo Y29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQotLXsKLS0gIGNvbnN0IHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICphID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYXA7Ci0tICBj b25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYiA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKiopIGJwOwotLQotLSAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7 Ci0tfQotLQotLS8qICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KLS0KLS1z dGF0aWMgdm9pZAotLWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBm cm9tX3R0eSkKLS17Ci0tICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Ci0t ICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLS0gIHN0cnVjdCBj bGVhbnVwICpzY3JpcHRfY2hhaW47Ci0tICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0 czsKLS0gIGludCBucl9zY3JpcHRzOwotLQotLSAgZG9udF9yZXBlYXQgKCk7Ci0tCi0tICBwc3Bh Y2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFj ZSk7Ci0tCi0tICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKLS0gICAgewotLSAgICAgIGNoYXIg KnJlX2VyciA9IHJlX2NvbXAgKHBhdHRlcm4pOwotLQotLSAgICAgIGlmIChyZV9lcnIpCi0tCWVy cm9yIChfKCJJbnZhbGlkIHJlZ2V4cDogJXMiKSwgcmVfZXJyKTsKLS0gICAgfQotLSAgZWxzZQot LSAgICB7Ci0tICAgICAgcmVfY29tcCAoIiIpOwotLSAgICB9Ci0tCi0tICAvKiBXZSBuZWVkIHRv IGtub3cgdGhlIG51bWJlciBvZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUgdGFibGUuCi0tICAg ICBQbHVzIHdlIHdhbnQgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLgotLSAgICAgU28gZmly c3QgdHJhdmVyc2UgdGhlIGhhc2ggdGFibGUgY29sbGVjdGluZyB0aGUgbWF0Y2hpbmcgc2NyaXB0 cy4gICovCi0tCi0tICBzY3JpcHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2NyaXB0X3B0ciwgMTAp OwotLSAgc2NyaXB0X2NoYWluID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAobG9hZGVkX3Nj cmlwdF9wdHIpLCAmc2NyaXB0cyk7Ci0tCi0tICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBw c3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIGltbWVk aWF0ZV9xdWl0Kys7Ci0tICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNf c2FmZV9wdXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8KLS0gICAgICBodGFiX3RyYXZlcnNlX25v cmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCi0tCQkJICAgICAgY29sbGVjdF9t YXRjaGluZ19zY3JpcHRzLCAmc2NyaXB0cyk7Ci0tICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKLS0g ICAgfQotLQotLSAgbnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBz Y3JpcHRzKTsKLS0gIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwg MiwgbnJfc2NyaXB0cywKLS0JCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7Ci0t Ci0tICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNywgdWlfbGVmdCwgImxvYWRlZCIsICJM b2FkZWQiKTsKLS0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3MCwgdWlfbGVmdCwgInNj cmlwdCIsICJTY3JpcHQiKTsKLS0gIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7Ci0tCi0tICBp ZiAobnJfc2NyaXB0cyA+IDApCi0tICAgIHsKLS0gICAgICBpbnQgaTsKLS0gICAgICBsb2FkZWRf c2NyaXB0X3B0ciBzY3JpcHQ7Ci0tCi0tICAgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChsb2FkZWRf c2NyaXB0X3B0ciwgc2NyaXB0cyksCi0tCSAgICAgVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMpLAotLQkgICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3Nj cmlwdHNfYnlfbmFtZSk7Ci0tICAgICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGxvYWRlZF9z Y3JpcHRfcHRyLCBzY3JpcHRzLCBpLCBzY3JpcHQpOyArK2kpCi0tCXByaW50X3NjcmlwdCAoc2Ny aXB0KTsKLS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMgKHNjcmlwdF9jaGFpbik7Ci0tCi0tICBp ZiAobnJfc2NyaXB0cyA9PSAwKQotLSAgICB7Ci0tICAgICAgaWYgKHBhdHRlcm4gJiYgKnBhdHRl cm4pCi0tCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1h dGNoaW5nICVzLlxuIiwKLS0JCQlwYXR0ZXJuKTsKLS0gICAgICBlbHNlCi0tCXVpX291dF9tZXNz YWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzLlxuIik7Ci0tICAgIH0KLS19Ci0t DAotIHZvaWQKLSBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0tICBhdXRv X2xvYWRfcHNwYWNlX2RhdGEKLS0gICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0 aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Ci0tCi0tICBvYnNlcnZl cl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7Ci0tCi0gICBhZGRf c2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwK LSAJCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKLSBTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVo YXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCi1AQCAtNjI3LDEx ICsyMDUsNiBAQCBhbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAotIAkJCSAgIE5V TEwsIE5VTEwsCi0gCQkJICAgJnNldGxpc3QsCi0gCQkJICAgJnNob3dsaXN0KTsKLS0KLS0gIGFk ZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAotLQkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0 cywKLS0JICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlw dHMuXG5cCi0tVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7Ci0gfQot IAotICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHl0aG9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0 LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAgLTI0LDggKzI0LDYgQEAKLSAKLSBzdHJ1 Y3QgYnJlYWtwb2ludF9vYmplY3Q7Ci0gCi0tZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19s b2FkOwotLQotIGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24gKHZvaWQp OwotIAotIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21t YW5kX2xpbmUgKik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA5b2YxOC5wYXRjaCBiL2dk Yi1hdXRvbG9hZC0wOW9mMTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMTI0NGNmZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wOW9mMTgucGF0Y2gK QEAgLTAsMCArMSwxMTY4IEBACitbcGF0Y2gjNCAzLzhdIGF1dG8tbG9hZDogcmVzaHVmZmxlIGNv ZGUKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg3 Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTIu aHRtbAorCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2 OjI5LjA0OTEyMDIxMiArMDIwMAorQEAgLTAsMCArMSw0NzIgQEAKKysvKiBHREIgcm91dGluZXMg Zm9yIHN1cHBvcnRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KKysKKysgICBDb3B5cmlnaHQgKEMp IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKKysjaW5j bHVkZSAicHJvZ3NwYWNlLmgiCisrI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKKysjaW5jbHVk ZSAiZ2RiX3JlZ2V4LmgiCisrI2luY2x1ZGUgInVpLW91dC5oIgorKyNpbmNsdWRlICJmaWxlbmFt ZXMuaCIKKysjaW5jbHVkZSAiY29tbWFuZC5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgorKyNp bmNsdWRlICJvYmpmaWxlcy5oIgorKyNpbmNsdWRlICJweXRob24vcHl0aG9uLWludGVybmFsLmgi CisrCisrLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5n LgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdo ZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCisrICAgZmFsc2Ugb3RoZXJ3aXNlLgorKworKyAgIEJv dGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRy dWUgdG8gZW5hYmxlCisrICAgYXV0by1sb2FkaW5nLgorKworKyAgIFRoaXMgZmxhZyBleGlzdHMg dG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAorKyAg IHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhl IHNlYXJjaCBkaXJlY3RvcmllcworKyAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCisr aW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOworKworKy8qIEZvciBzY3JpcHRzIHNwZWNp ZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVzIG1heSBsb2FkCisr ICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2FkaW5nIHRoZSBzY3Jp cHQgbXVsdGlwbGUgdGltZXMsCisrICAgYW5kIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBvYmpmaWxl cyBhbmQgc2NyaXB0cywgc28gd2Uga2VlcCB0cmFjayBvZiBzY3JpcHRzCisrICAgbG9hZGVkIHRo aXMgd2F5LiAgKi8KKysKKytzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvCisreworKyAgLyog Rm9yIGVhY2ggcHJvZ3JhbSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRlZCBzY3JpcHRzLiAg Ki8KKysgIHN0cnVjdCBodGFiICpsb2FkZWRfc2NyaXB0czsKKysKKysgIC8qIE5vbi16ZXJvIGlm IHdlJ3ZlIGlzc3VlZCB0aGUgd2FybmluZyBhYm91dCBhbiBhdXRvLWxvYWQgc2NyaXB0IG5vdCBi ZWluZworKyAgICAgZm91bmQuICBXZSBvbmx5IHdhbnQgdG8gaXNzdWUgdGhpcyB3YXJuaW5nIG9u Y2UuICAqLworKyAgaW50IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOworK307Cisr CisrLyogT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUgbG9hZGVkIHNjcmlw dCBoYXNoIHRhYmxlLiAgKi8KKysKKytzdHJ1Y3QgbG9hZGVkX3NjcmlwdAorK3sKKysgIC8qIE5h bWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLworKyAgY29uc3QgY2hhciAqbmFtZTsK KysgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24ndCBmb3VuZCAob3Ig d2FzIG90aGVyd2lzZQorKyAgICAgaW5hY2Nlc3NpYmxlKS4gICovCisrICBjb25zdCBjaGFyICpm dWxsX3BhdGg7CisrfTsKKysKKysvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCisr c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9fbG9hZF9wc3BhY2Vf ZGF0YTsKKysKKytzdGF0aWMgdm9pZAorK2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCisreworKyAgc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKysKKysgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2Rh dGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKKysgIGlmIChpbmZvICE9IE5VTEwp CisrICAgIHsKKysgICAgICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMpCisrCWh0YWJfZGVsZXRl IChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7CisrICAgICAgeGZyZWUgKGluZm8pOworKyAgICB9Cisr fQorKworKy8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9hZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3Vu ZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCisrICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYSB2 YWxpZCBvYmplY3QuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICoKKytnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNw YWNlKQorK3sKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CisrCisrICBp bmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7 CisrICBpZiAoaW5mbyA9PSBOVUxMKQorKyAgICB7CisrICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOworKyAgICAgIHNldF9wcm9ncmFtX3NwYWNlX2Rh dGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhLCBpbmZvKTsKKysgICAgfQorKworKyAg cmV0dXJuIGluZm87CisrfQorKworKy8qIEhhc2ggZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2Ny aXB0IGhhc2guICAqLworKworK3N0YXRpYyBoYXNodmFsX3QKKytoYXNoX2xvYWRlZF9zY3JpcHRf ZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCisreworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKmUgPSBkYXRhOworKworKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOwor K30KKysKKysvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4g ICovCisrCisrc3RhdGljIGludAorK2VxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIpCisreworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVh ID0gYTsKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7CisrCisrICByZXR1 cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09IDA7CisrfQorKworKy8qIEluaXRpYWxp emUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgorKyAgIEVhY2ggZW50cnkgaXMg aGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICovCisrCisrc3RhdGljIHZvaWQKKytpbml0 X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFj ZV9pbmZvKQorK3sKKysgIC8qIENob29zZSAzMSBhcyB0aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUg aGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHkuCisrICAgICBTcGFjZSBmb3IgZWFjaCBl bnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZyZWUgdGhlbQorKyAg ICAgZWFzaWx5LiAgKi8KKysKKysgIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJf Y3JlYXRlICgzMSwKKysJCQkJCSAgICAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LAorKwkJCQkJ ICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAorKwkJCQkJICAgICB4ZnJlZSk7CisrCisrICBw c3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKKyt9 CisrCisrLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIHRvIGFsc28gYWxs b2NhdGUgdGhlIGhhc2ggdGFibGUKKysgICBmb3IgbG9hZGluZyBzY3JpcHRzLiAgKi8KKysKKytz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKytnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh X2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQorK3sKKysgIHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CisrCisrICBpbmZvID0gZ2V0X2F1dG9fbG9h ZF9wc3BhY2VfZGF0YSAocHNwYWNlKTsKKysgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cyA9PSBO VUxMKQorKyAgICBpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKGluZm8pOworKworKyAgcmV0dXJu IGluZm87CisrfQorKworKy8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFD RV9JTkZPLgorKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5k LgorKyAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRo ZSBoYXNoIHRhYmxlLiAgKi8KKysKKytpbnQKKyttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwKKysJCSAg Y29uc3QgY2hhciAqZnVsbF9wYXRoKQorK3sKKysgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNl X2luZm8tPmxvYWRlZF9zY3JpcHRzOworKyAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBl bnRyeTsKKysgIGludCBpbl9oYXNoX3RhYmxlOworKworKyAgZW50cnkubmFtZSA9IG5hbWU7Cisr ICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7CisrICBzbG90ID0gKHN0cnVjdCBsb2FkZWRf c2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOworKyAgaW5f aGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7CisrCisrICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBu b3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCisrCisrICBpZiAoISBpbl9oYXNoX3Rh YmxlKQorKyAgICB7CisrICAgICAgY2hhciAqcDsKKysKKysgICAgICAvKiBBbGxvY2F0ZSBhbGwg c3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAqLworKyAgICAgICpz bG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCisrCQkgICAgICAgKyBzdHJsZW4gKG5hbWUp ICsgMQorKwkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRo KSArIDEpIDogMCkpOworKyAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBzaXplb2YgKCoqc2xv dCk7CisrICAgICAgc3RyY3B5IChwLCBuYW1lKTsKKysgICAgICAoKnNsb3QpLT5uYW1lID0gcDsK KysgICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCisrCXsKKysJICBwICs9IHN0cmxlbiAocCkg KyAxOworKwkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsKKysJICAoKnNsb3QpLT5mdWxsX3BhdGgg PSBwOworKwl9CisrICAgICAgZWxzZQorKwkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOworKyAg ICB9CisrCisrICByZXR1cm4gaW5faGFzaF90YWJsZTsKKyt9CisrCisrLyogQ2xlYXIgdGhlIHRh YmxlIG9mIGxvYWRlZCBzZWN0aW9uIHNjcmlwdHMuICAqLworKworK3N0YXRpYyB2b2lkCisrY2xl YXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQorK3sKKysgIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpw c3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7CisrICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICppbmZvOworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBh dXRvX2xvYWRfcHNwYWNlX2RhdGEpOworKyAgaWYgKGluZm8gIT0gTlVMTCAmJiBpbmZvLT5sb2Fk ZWRfc2NyaXB0cyAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaHRhYl9kZWxldGUgKGluZm8tPmxv YWRlZF9zY3JpcHRzKTsKKysgICAgICBpbmZvLT5sb2FkZWRfc2NyaXB0cyA9IE5VTEw7CisrICAg ICAgaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKKysgICAg fQorK30KKysKKysvKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdp dGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCisrCisrdm9pZAorK2F1dG9fbG9hZF9vYmpmaWxl X3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKKyt7 CisrICBjaGFyICpyZWFsbmFtZTsKKysgIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOworKyAg aW50IGxlbjsKKysgIEZJTEUgKmlucHV0OworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwor KworKyAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOworKyAgbGVuID0g c3RybGVuIChyZWFsbmFtZSk7CisrICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAo c3VmZml4KSArIDEpOworKyAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7CisrICBz dHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOworKworKyAgY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7CisrICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFt ZSk7CisrCisrICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKKysgIGRlYnVnZmlsZSA9 IGZpbGVuYW1lOworKworKyAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKKysg ICAgeworKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRl YnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KKysgICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJs ZW4gKGZpbGVuYW1lKQorKwkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAx KTsKKysgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworKyAg ICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUu ICAqLworKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CisrCisrICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKysgICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7CisrICAgIH0KKysKKysgIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCisr ICAgIHsKKysgICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5 IG9mIGdkYidzIGRhdGEKKysJIGRpcmVjdG9yeS4gICovCisrICAgICAgZGVidWdmaWxlID0geG1h bGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQorKwkJCSAgICsg c3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7CisrICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdk Yl9kYXRhZGlyKTsKKysgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKKysg ICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJl LiAgKi8KKysgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOworKworKyAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7CisrICAgICAgaW5wdXQgPSBmb3BlbiAoZGVi dWdmaWxlLCAiciIpOworKyAgICB9CisrCisrICBpZiAoaW5wdXQpCisrICAgIHsKKysgICAgICBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKysKKysgICAgICBtYWtl X2NsZWFudXBfZmNsb3NlIChpbnB1dCk7CisrCisrICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRv IHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKKysJIGNhbiBw cmludCBpdC4gICovCisrICAgICAgcHNwYWNlX2luZm8gPQorKwlnZXRfYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworKyAgICAgIG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7CisrCisrICAg ICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3 aGV0aGVyIHRoZQorKwkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5 cyBsb2FkIGl0LgorKwkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBp dCB0d2ljZSwKKysJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90 ZW50IHVuZGVyIG11bHRpcGxlCisrCSBsb2FkcyBhbnl3YXkuICAqLworKyAgICAgIHNvdXJjZV9w eXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKysg ICAgfQorKworKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyt9CisrCisrLyogVGhpcyBpcyBh IG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgorKwor KyAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KKysg ICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQorKyAgIDIpIGZyb20gLmRlYnVn X2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCisrCisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfbmV3 X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGlmICghb2JqZmlsZSkK KysgICAgeworKyAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1h aW4iIHN5bWJvbC1maWxlLiAgKi8KKysgICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7Cisr ICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmls ZSAob2JqZmlsZSk7CisrfQorKworKy8qIENvbGxlY3Qgc2NyaXB0cyB0byBiZSBwcmludGVkIGlu IGEgdmVjLiAgKi8KKysKKyt0eXBlZGVmIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2FkZWRfc2Ny aXB0X3B0cjsKKytERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRyKTsKKysKKysvKiBUcmF2ZXJz YWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCisrICAgQ29sbGVjdCB0aGUgZW50cnkgaWYg aXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KKysKKytzdGF0aWMgaW50CisrY29sbGVjdF9tYXRj aGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKKyt7CisrICBzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7CisrICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAq KnNjcmlwdHNfcHRyID0gaW5mbzsKKysKKysgIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQor KyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3Jp cHQpOworKworKyAgcmV0dXJuIDE7CisrfQorKworKy8qIFByaW50IFNDUklQVC4gICovCisrCisr c3RhdGljIHZvaWQKKytwcmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQp CisreworKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworKyAgc3RydWN0 IGNsZWFudXAgKmNoYWluOworKworKyAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxl X2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOworKworKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKKysg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwgc2NyaXB0LT5uYW1lKTsKKysg IHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisrICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0 aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLworKyAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRo ICE9IE5VTEwKKysgICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFtZSwgc2NyaXB0LT5mdWxsX3Bh dGgpICE9IDApCisrICAgIHsKKysgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcdGZ1bGwgbmFt ZTogIik7CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmdWxsX3BhdGgiLCBz Y3JpcHQtPmZ1bGxfcGF0aCk7CisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysg ICAgfQorKworKyAgZG9fY2xlYW51cHMgKGNoYWluKTsKKyt9CisrCisrLyogSGVscGVyIGZvciBp bmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4gICovCisr Cisrc3RhdGljIGludAorK3NvcnRfc2NyaXB0c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY29u c3Qgdm9pZCAqYnApCisreworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNv bnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYnA7CisrCisrICBy ZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKKyt9CisrCisrLyogImluZm8g YXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19h dXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQorK3sKKysgIHN0 cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKysgIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworKyAgc3RydWN0IGNsZWFudXAgKnNjcmlwdF9jaGFp bjsKKysgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRzOworKyAgaW50IG5yX3Njcmlw dHM7CisrCisrICBkb250X3JlcGVhdCAoKTsKKysKKysgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9f bG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKysKKysgIGlmIChwYXR0 ZXJuICYmICpwYXR0ZXJuKQorKyAgICB7CisrICAgICAgY2hhciAqcmVfZXJyID0gcmVfY29tcCAo cGF0dGVybik7CisrCisrICAgICAgaWYgKHJlX2VycikKKysJZXJyb3IgKF8oIkludmFsaWQgcmVn ZXhwOiAlcyIpLCByZV9lcnIpOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICByZV9j b21wICgiIik7CisrICAgIH0KKysKKysgIC8qIFdlIG5lZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9m IHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4KKysgICAgIFBsdXMgd2Ugd2FudCB0byBz b3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCisrICAgICBTbyBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFz aCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRzLiAgKi8KKysKKysgIHNjcmlw dHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7CisrICBzY3JpcHRfY2hhaW4g PSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2NyaXB0X3B0ciksICZzY3JpcHRz KTsKKysKKysgIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRf c2NyaXB0cyAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKKysgICAg ICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxs b2Mgc3BhY2UuICAqLworKyAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cywKKysJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZz Y3JpcHRzKTsKKysgICAgICBpbW1lZGlhdGVfcXVpdC0tOworKyAgICB9CisrCisrICBucl9zY3Jp cHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOworKyAgbWFrZV9j bGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAorKwkJ CQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKKysKKysgIHVpX291dF90YWJsZV9o ZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxvYWRlZCIpOworKyAgdWlfb3V0 X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2NyaXB0IiwgIlNjcmlwdCIpOwor KyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysKKysgIGlmIChucl9zY3JpcHRzID4gMCkK KysgICAgeworKyAgICAgIGludCBpOworKyAgICAgIGxvYWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsK KysKKysgICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRz KSwKKysJICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCisrCSAg ICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2NyaXB0c19ieV9uYW1lKTsKKysg ICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMs IGksIHNjcmlwdCk7ICsraSkKKysJcHJpbnRfc2NyaXB0IChzY3JpcHQpOworKyAgICB9CisrCisr ICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKKysKKysgIGlmIChucl9zY3JpcHRzID09IDAp CisrICAgIHsKKysgICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKKysJdWlfb3V0X21lc3Nh Z2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcgJXMuXG4iLAorKwkJ CXBhdHRlcm4pOworKyAgICAgIGVsc2UKKysJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8g YXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKKysgICAgfQorK30KKysKKysvKiBSZXR1cm4gbm9uLXpl cm8gaWYgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQQUNFX0lORk8gd2Fz IHVuc2V0CisrICAgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NS SVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQKKysgICBvZiBQU1BBQ0VfSU5GTy4gICovCisr CisraW50Cisrc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKKyt7CisrICBpbnQgcmV0dmFsID0gIXBzcGFjZV9p bmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKKysKKysgIHBzcGFjZV9pbmZv LT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IDE7CisrCisrICByZXR1cm4gcmV0 dmFsOworK30KKysKKyt2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7CisrCisrdm9p ZAorK19pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKKyt7CisrICBhdXRvX2xvYWRfcHNwYWNl X2RhdGEKKysgICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChh dXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7CisrCisrICBvYnNlcnZlcl9hdHRhY2hfbmV3 X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7CisrCisrICBhZGRfaW5mbyAoImF1dG8t bG9hZC1zY3JpcHRzIiwKKysJICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMsCisrCSAgICBfKCJQ cmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAorK1VzYWdl OiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOworK30KK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDQ5MTIwMjEyICswMjAwCitA QCAtMCwwICsxLDM2IEBACisrLyogR0RCIHJvdXRpbmVzIGZvciBzdXBwb3J0aW5nIGF1dG8tbG9h ZGVkIHNjcmlwdHMuCisrCisrICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2lmbmRlZiBBVVRPX0xP QURfSAorKyNkZWZpbmUgQVVUT19MT0FEX0ggMQorKworK3N0cnVjdCBwcm9ncmFtX3NwYWNlOwor KworK2V4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKKysKKytleHRlcm4gc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisrICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zv cl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKytleHRlcm4gaW50IG1h eWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZv LAorKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoKTsKKytl eHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAorKwkJCQkgICAgICBjb25zdCBjaGFyICpzdWZmaXgpOworK2V4dGVybiBpbnQKKysgIHNj cmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqcHNwYWNlX2luZm8pOworKworKyNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLworSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYi1nZGIuZ2RiLmluCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4JMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAy MTIgKzAyMDAKK0BAIC0wLDAgKzEsMzQgQEAKKytlY2hvIFNldHRpbmcgdXAgdGhlIGVudmlyb25t ZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCisrCisrc2V0IGNvbXBsYWludHMgMQorKworK2IgaW50 ZXJuYWxfZXJyb3IKKysKKytiIGluZm9fY29tbWFuZAorK2NvbW1hbmRzCisrCXNpbGVudAorKwly ZXR1cm4KKytlbmQKKysKKytkaXIgQHNyY2RpckAvLi4vbGliaWJlcnR5CisrZGlyIEBzcmNkaXJA Ly4uL2JmZAorK2RpciBAc3JjZGlyQAorK2RpciAuCisrc2V0IHByb21wdCAodG9wLWdkYikgCisr CisrZGVmaW5lIHBkaWUKKysgIGlmICRhcmdjID09IDEKKysgICAgY2FsbCBkdW1wX2RpZSAoJGFy ZzAsIDEpCisrICBlbHNlCisrICAgIGlmICRhcmdjID09IDIKKysgICAgICBjYWxsIGR1bXBfZGll ICgkYXJnMCwgJGFyZzEpCisrICAgIGVsc2UKKysgICAgICBwcmludGYgIlN5bnRheDogcGRpZSBk aWUgW2RlcHRoXVxuIgorKyAgICBlbmQKKysgIGVuZAorK2VuZAorKworK2RvY3VtZW50IHBkaWUK KytQcmV0dHkgcHJpbnQgYSBEV0FSRiBESUUuCisrU3ludGF4OiBwZGllIGRpZSBbZGVwdGhdCisr ZW5kCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4KKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTItMDQt MTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv TWFrZWZpbGUuaW4JMjAxMi0wNC0xOCAwMDoyNjo1My40NTUwNTgwMzcgKzAyMDAKK0BAIC02ODAs NyArNjgwLDcgQEAgVEFSR0VUX0ZMQUdTX1RPX1BBU1MgPSBcCisgIyBTRklMRVMgaXMgdXNlZCBp biBidWlsZGluZyB0aGUgZGlzdHJpYnV0aW9uIGFyY2hpdmUuCisgCisgU0ZJTEVTID0gYWRhLWV4 cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10YXNrcy5j IFwKKy0JYWRkcm1hcC5jIFwKKysJYWRkcm1hcC5jIGF1dG8tbG9hZC5jIFwKKyAJYXV4di5jIGF4 LWdlbmVyYWwuYyBheC1nZGIuYyBcCisgCWJjYWNoZS5jIFwKKyAJYmZkLXRhcmdldC5jIFwKK0BA IC04MTksNyArODE5LDcgQEAgc29saWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmggc29saWIt cworIGdudWxpYi9leHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9jKytkZWZzLmggZ251 bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAorIGdudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJh bWUuaCBza2lwLmggc3RhcC1wcm9iZS5oIFwKKyBjb21tb24vY29tbW9uLXV0aWxzLmggY29tbW9u L3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwKKy1jb21tb24vbGlu dXgtb3NkYXRhLmggZ2RiLWRsZmNuLmgKKytjb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNu LmggYXV0by1sb2FkLmgKKyAKKyAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNk aXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KKyAKK0BAIC04NTEsNyArODUxLDcg QEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJAorIAl2ZXJzaW9uLm8g XAorIAlhbm5vdGF0ZS5vIFwKKyAJYWRkcm1hcC5vIFwKKy0JYXV4di5vIFwKKysJYXV0by1sb2Fk Lm8gYXV4di5vIFwKKyAJYmZkLXRhcmdldC5vIFwKKyAJYmxvY2tmcmFtZS5vIGJyZWFrcG9pbnQu byBmaW5kdmFyLm8gcmVnY2FjaGUubyBcCisgCWNoYXJzZXQubyBjb250aW51YXRpb25zLm8gY29y ZWxvdy5vIGRpc2FzbS5vIGR1bW15LWZyYW1lLm8gZGZwLm8gXAorQEAgLTEyNTUsNyArMTI1NSw3 IEBAIGRpc3RjbGVhbjogY2xlYW4KKyAJcm0gLWYgZ2Ric2VydmVyL2NvbmZpZy5zdGF0dXMgZ2Ri c2VydmVyL2NvbmZpZy5sb2cKKyAJcm0gLWYgZ2Ric2VydmVyL3RtLmggZ2Ric2VydmVyL3htLmgg Z2Ric2VydmVyL25tLmgKKyAJcm0gLWYgZ2Ric2VydmVyL01ha2VmaWxlIGdkYnNlcnZlci9jb25m aWcuY2FjaGUKKy0Jcm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0YW1wLWggLmdk YmluaXQgaml0LXJlYWRlci5oCisrCXJtIC1mIG5tLmggY29uZmlnLnN0YXR1cyBjb25maWcuaCBz dGFtcC1oIGdkYi1nZGIuZ2RiIGppdC1yZWFkZXIuaAorIAlybSAtZiB5Lm91dHB1dCB5YWNjLmFj dHMgeWFjYy50bXAgeS50YWIuaAorIAlybSAtZiBjb25maWcubG9nIGNvbmZpZy5jYWNoZQorIAly bSAtZiBNYWtlZmlsZQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIw MTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAyICswMjAwCitAQCAt MTY4MzksNyArMTY4MzksNyBAQCBhY19jb25maWdfbGlua3M9IiRhY19jb25maWdfbGlua3MgJGFj X2NvCisgJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VUIFwiVVRGLThc IiIgPj5jb25mZGVmcy5oCisgCisgCistYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVz IE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmls ZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKKythY19jb25maWdfZmlsZXM9IiRhY19jb25maWdf ZmlsZXMgTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBk YXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKKyAKKyBhY19jb25maWdfY29tbWFuZHM9IiRhY19jb25m aWdfY29tbWFuZHMgZGVmYXVsdCIKKyAKK0BAIC0xNzYwNSw3ICsxNzYwNSw3IEBAIGRvCisgICAg ICJqaXQtcmVhZGVyLmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgaml0LXJlYWRlci5o OmppdC1yZWFkZXIuaW4iIDs7CisgICAgICIkYWNfY29uZmlnX2xpbmtzXzEiKSBDT05GSUdfTElO S1M9IiRDT05GSUdfTElOS1MgJGFjX2NvbmZpZ19saW5rc18xIiA7OworICAgICAiTWFrZWZpbGUi KSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7CistICAgICIuZ2RiaW5p dCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyAuZ2RiaW5pdDpnZGJpbml0LmluIiA7Owor KyAgICAiZ2RiLWdkYi5nZGIiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLWdkYi5n ZGIiIDs7CisgICAgICJkb2MvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg ZG9jL01ha2VmaWxlIiA7OworICAgICAiZ251bGliL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIk Q09ORklHX0ZJTEVTIGdudWxpYi9NYWtlZmlsZSIgOzsKKyAgICAgImRhdGEtZGlyZWN0b3J5L01h a2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRhdGEtZGlyZWN0b3J5L01ha2Vm aWxlIiA7OworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIw MTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAyICswMjAwCitA QCAtMjQyMiw3ICsyNDIyLDcgQEAgZG5sICBBdCB0aGUgbW9tZW50LCB3ZSBqdXN0IGFzc3VtZSBp dCdzCisgQUNfREVGSU5FKEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCwgIlVURi04IiwKKyAgICAg ICAgICAgW0RlZmluZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFy YWN0ZXIgc2V0Ll0pCisgCistQUNfT1VUUFVUKE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4g ZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKKytB Q19PVVRQVVQoTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmls ZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKKyBbCisgY2FzZSB4JENPTkZJR19IRUFERVJTIGlu CisgeGNvbmZpZy5oOmNvbmZpZy5pbikKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9t YWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4u YwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAorQEAg LTQyLDYgKzQyLDcgQEAKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCisgI2luY2x1ZGUgInB5 dGhvbi9weXRob24uaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKysjaW5jbHVkZSAiYXV0by1s b2FkLmgiCisgCisgLyogVGhlIHNlbGVjdGVkIGludGVycHJldGVyLiAgVGhpcyB3aWxsIGJlIHVz ZWQgYXMgYSBzZXQgY29tbWFuZAorICAgIHZhcmlhYmxlLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJl IG1hbGxvYydlZCAtIHNpbmNlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9u L3B5LWF1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJ MjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKK0BAIC0xOCwzMCArMTgsMTQgQEAK KyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisgCisgI2luY2x1ZGUgImRlZnMuaCIKKy0jaW5jbHVkZSAi ZmlsZW5hbWVzLmgiCisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKy0jaW5jbHVkZSAiZ2RiX3Jl Z2V4LmgiCisgI2luY2x1ZGUgInRvcC5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgiCistI2lu Y2x1ZGUgImNvbW1hbmQuaCIKKyAjaW5jbHVkZSAiZ2RiY21kLmgiCistI2luY2x1ZGUgIm9ic2Vy dmVyLmgiCistI2luY2x1ZGUgInByb2dzcGFjZS5oIgorICNpbmNsdWRlICJvYmpmaWxlcy5oIgor ICNpbmNsdWRlICJweXRob24uaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCistCistLyog SW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgorLSAgIFRo aXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2Jq ZmlsZSBpcyBvcGVuZWQsCistICAgZmFsc2Ugb3RoZXJ3aXNlLgorLQorLSAgIEJvdGggYXV0b19s b2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5h YmxlCistICAgYXV0by1sb2FkaW5nLgorLQorLSAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxp dGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAorLSAgIHVudGlsIGFm dGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBk aXJlY3RvcmllcworLSAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCistaW50IGdkYnB5 X2dsb2JhbF9hdXRvX2xvYWQgPSAxOworKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKKyAKKyAjaWZk ZWYgSEFWRV9QWVRIT04KKyAKK0BAIC02MCwzMiArNDQsNiBAQCBpbnQgZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCA9IDE7CisgICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxvdyB1cHdhcmQgY29t cGF0aWJsZSBleHRlbnNpb25zLiAgKi8KKyAjZGVmaW5lIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1F ICIuZGVidWdfZ2RiX3NjcmlwdHMiCisgCistLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5k ZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKKy0gICB0aGUgc2Ft ZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBs ZSB0aW1lcywKKy0gICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZpbGVzIGFuZCBzY3Jp cHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKKy0gICBsb2FkZWQgdGhpcyB3YXkuICAq LworLQorLXN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KKy17CistICAvKiBGb3IgZWFjaCBw cm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMuICAqLworLSAgc3Ry dWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOworLQorLSAgLyogTm9uLXplcm8gaWYgd2UndmUgaXNz dWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90IGJlaW5nCistICAg ICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcgb25jZS4gICovCist ICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7CistfTsKKy0KKy0vKiBPYmpl Y3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2ggdGFi bGUuICAqLworLQorLXN0cnVjdCBsb2FkZWRfc2NyaXB0CisteworLSAgLyogTmFtZSBhcyBwcm92 aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCistICBjb25zdCBjaGFyICpuYW1lOworLSAgLyogRnVs bCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3YXMgb3RoZXJ3 aXNlCistICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKy0gIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsK Ky19OworLQorIC8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8t bG9hZGluZzoKKyAgICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCisgICAgVGhpcyBpcyB0 cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2Jq ZmlsZQorQEAgLTk3LDEzNiArNTUsNiBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAorICAgIFRoZSBm YWN0IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4g ICovCisgc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7CisgCistLyogUGVyLXByb2dy YW0tc3BhY2UgZGF0YSBrZXkuICAqLworLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZV9kYXRhICphdXRvX2xvYWRfcHNwYWNlX2RhdGE7CistCistc3RhdGljIHZvaWQKKy1hdXRvX2xv YWRfcHNwYWNlX2RhdGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9p ZCAqYXJnKQorLXsKKy0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CistCist ICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0 YSk7CistICBpZiAoaW5mbyAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKGluZm8tPmxvYWRl ZF9zY3JpcHRzKQorLQlodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworLSAgICAg IHhmcmVlIChpbmZvKTsKKy0gICAgfQorLX0KKy0KKy0vKiBHZXQgdGhlIGN1cnJlbnQgYXV0b2xv YWQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAgVGhpcworLSAgIGZ1 bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KKy0KKy1zdGF0aWMgc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCistZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAo c3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKKy17CistICBzdHJ1Y3QgYXV0b19sb2FkX3Bz cGFjZV9pbmZvICppbmZvOworLQorLSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNl LCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOworLSAgaWYgKGluZm8gPT0gTlVMTCkKKy0gICAgewor LSAgICAgIGluZm8gPSBYWkFMTE9DIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvKTsKKy0g ICAgICBzZXRfcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0 YSwgaW5mbyk7CistICAgIH0KKy0KKy0gIHJldHVybiBpbmZvOworLX0KKy0KKy0vKiBIYXNoIGZ1 bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KKy0KKy1zdGF0aWMgaGFzaHZh bF90CistaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpkYXRhKQorLXsKKy0g IGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKKy0KKy0gIHJldHVybiBodGFi X2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKKy19CistCistLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9y IHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworLQorLXN0YXRpYyBpbnQKKy1lcV9sb2FkZWRf c2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorLXsKKy0gIGNvbnN0 IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7CistICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCAqZWIgPSBiOworLQorLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9 PSAwOworLX0KKy0KKy0vKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFjayBsb2FkZWQgc2Ny aXB0cy4KKy0gICBFYWNoIGVudHJ5IGlzIGhhc2hlZCBieSB0aGUgZnVsbCBwYXRoIG5hbWUuICAq LworLQorLXN0YXRpYyB2b2lkCistaW5pdF9sb2FkZWRfc2NyaXB0c19pbmZvIChzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKKy17CistICAvKiBDaG9vc2UgMzEgYXMg dGhlIHN0YXJ0aW5nIHNpemUgb2YgdGhlIGhhc2ggdGFibGUsIHNvbWV3aGF0IGFyYml0cmFyaWx5 LgorLSAgICAgU3BhY2UgZm9yIGVhY2ggZW50cnkgaXMgb2J0YWluZWQgd2l0aCBvbmUgbWFsbG9j IHNvIHdlIGNhbiBmcmVlIHRoZW0KKy0gICAgIGVhc2lseS4gICovCistCistICBwc3BhY2VfaW5m by0+bG9hZGVkX3NjcmlwdHMgPSBodGFiX2NyZWF0ZSAoMzEsCistCQkJCQkgICAgIGhhc2hfbG9h ZGVkX3NjcmlwdF9lbnRyeSwKKy0JCQkJCSAgICAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSwKKy0J CQkJCSAgICAgeGZyZWUpOworLQorLSAgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2Fy bmluZ19wcmludGVkID0gRkFMU0U7CistfQorLQorLS8qIFdyYXBwZXIgb24gZ2V0X2F1dG9fbG9h ZF9wc3BhY2VfZGF0YSB0byBhbHNvIGFsbG9jYXRlIHRoZSBoYXNoIHRhYmxlCistICAgZm9yIGxv YWRpbmcgc2NyaXB0cy4gICovCistCistc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKgorLWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9n cmFtX3NwYWNlICpwc3BhY2UpCisteworLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq aW5mbzsKKy0KKy0gIGluZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChwc3BhY2UpOwor LSAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5VTEwpCistICAgIGluaXRfbG9hZGVkX3Nj cmlwdHNfaW5mbyAoaW5mbyk7CistCistICByZXR1cm4gaW5mbzsKKy19CistCistLyogQWRkIHNj cmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgSFRBQi4KKy0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0 aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KKy0gICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNj cmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCistCistc3RhdGljIGludAor LW1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBodGFiICpodGFiLCBjb25zdCBjaGFyICpuYW1lLCBj b25zdCBjaGFyICpmdWxsX3BhdGgpCisteworLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90 LCBlbnRyeTsKKy0gIGludCBpbl9oYXNoX3RhYmxlOworLQorLSAgZW50cnkubmFtZSA9IG5hbWU7 CistICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7CistICBzbG90ID0gKHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOworLSAg aW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7CistCistICAvKiBJZiB0aGlzIHNjcmlwdCBp cyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCistCistICBpZiAoISBpbl9oYXNo X3RhYmxlKQorLSAgICB7CistICAgICAgY2hhciAqcDsKKy0KKy0gICAgICAvKiBBbGxvY2F0ZSBh bGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAqLworLSAgICAg ICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCistCQkgICAgICAgKyBzdHJsZW4gKG5h bWUpICsgMQorLQkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9w YXRoKSArIDEpIDogMCkpOworLSAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBzaXplb2YgKCoq c2xvdCk7CistICAgICAgc3RyY3B5IChwLCBuYW1lKTsKKy0gICAgICAoKnNsb3QpLT5uYW1lID0g cDsKKy0gICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCistCXsKKy0JICBwICs9IHN0cmxlbiAo cCkgKyAxOworLQkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsKKy0JICAoKnNsb3QpLT5mdWxsX3Bh dGggPSBwOworLQl9CistICAgICAgZWxzZQorLQkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOwor LSAgICB9CistCistICByZXR1cm4gaW5faGFzaF90YWJsZTsKKy19CistCisgLyogTG9hZCBzY3Jp cHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgorICAgIFNUQVJULEVORCBkZWxpbWl0IGEgYnVmZmVy IGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCisgICAgZmlsZSBuYW1lcy4KK0BA IC0zMDEsMjAgKzEyOSwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmls ZSAqCisgCisgCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3Nl LiAgKi8KKyAKKy0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNl X2luZm8tPmxvYWRlZF9zY3JpcHRzLCBmaWxlLAorKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXli ZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwKKyAJCQkJCW9wZW5lZCA/IGZ1bGxfcGF0 aCA6IE5VTEwpOworIAorICAgICAgIGlmICghIG9wZW5lZCkKKyAJeworIAkgIC8qIFdlIGRvbid0 IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKy0J ICBpZiAoISBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQpCist CSAgICB7CistCSAgICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVm ZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCisrCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludCAocHNwYWNlX2luZm8pKQorKwkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxv YWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKKyBvZiBmaWxlICVzXG5cCisg VXNlIGBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiksCist CQkgICAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOworLQkgICAg ICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBUUlVFOwor LQkgICAgfQorKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7 CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC0zNTYsMTE2ICsxODEsNiBAQCBhdXRvX2xvYWRf c2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsCisgICBkb19jbGVhbnVwcyAoY2xlYW51cHMp OworIH0KKyAKKy0vKiBDbGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4g ICovCistCistc3RhdGljIHZvaWQKKy1jbGVhcl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCistewor LSAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsK Ky0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CistCistICBpbmZvID0gcHJv Z3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CistICBpZiAo aW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCistICAgIHsKKy0g ICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworLSAgICAgIGluZm8tPmxv YWRlZF9zY3JpcHRzID0gTlVMTDsKKy0gICAgICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5p bmdfcHJpbnRlZCA9IEZBTFNFOworLSAgICB9CistfQorLQorLS8qIExvb2sgZm9yIHRoZSBhdXRv LWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KKy0K Ky1zdGF0aWMgdm9pZAorLWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKKy17CistICBjaGFyICpyZWFsbmFtZTsKKy0g IGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOworLSAgaW50IGxlbjsKKy0gIEZJTEUgKmlucHV0 OworLSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworLQorLSAgcmVhbG5hbWUgPSBnZGJfcmVh bHBhdGggKG9iamZpbGUtPm5hbWUpOworLSAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7CistICBm aWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOworLSAgbWVtY3B5 IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7CistICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBz dWZmaXgpOworLQorLSAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7 CistICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7CistCistICBpbnB1dCA9IGZvcGVu IChmaWxlbmFtZSwgInIiKTsKKy0gIGRlYnVnZmlsZSA9IGZpbGVuYW1lOworLQorLSAgaWYgKCFp bnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKKy0gICAgeworLSAgICAgIC8qIEFsc28gdHJ5 IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8K Ky0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQorLQkJCSAgICsg c3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKKy0gICAgICBzdHJjcHkgKGRlYnVn ZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29s dXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworLSAgICAgIHN0cmNhdCAoZGVi dWdmaWxlLCBmaWxlbmFtZSk7CistCistICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdm aWxlKTsKKy0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CistICAgIH0KKy0K Ky0gIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCistICAgIHsKKy0gICAgICAvKiBBbHNvIHRy eSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKKy0JIGRpcmVj dG9yeS4gICovCistICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRp cikgKyBzdHJsZW4gKGZpbGVuYW1lKQorLQkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsg MSk7CistICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKKy0gICAgICBzdHJj YXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKKy0gICAgICAvKiBGSUxFTkFNRSBpcyBhYnNv bHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KKy0gICAgICBzdHJjYXQgKGRl YnVnZmlsZSwgZmlsZW5hbWUpOworLQorLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVn ZmlsZSk7CistICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOworLSAgICB9Cist CistICBpZiAoaW5wdXQpCistICAgIHsKKy0gICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbzsKKy0KKy0gICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7 CistCistICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKKy0JIGNhbiBwcmludCBpdC4gICovCistICAgICAgcHNw YWNlX2luZm8gPQorLQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UpOworLSAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOworLQorLSAgICAgIC8qIFRv IHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0 aGUKKy0JIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBp dC4KKy0JIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2Us CistCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRl ciBtdWx0aXBsZQorLQkgbG9hZHMgYW55d2F5LiAgKi8KKy0gICAgICBzb3VyY2VfcHl0aG9uX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CistICAgIH0KKy0K Ky0gIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CistfQorLQorLS8qIFRoaXMgaXMgYSBuZXdfb2Jq ZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KKy0KKy0gICBUd28g Zmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCistICAgMSkgYmFz ZWQgb24gdGhlIHBhdGggdG8gdGhlIG9iamZpbGUKKy0gICAyKSBmcm9tIC5kZWJ1Z19nZGJfc2Ny aXB0cyBzZWN0aW9uICAqLworLQorLXN0YXRpYyB2b2lkCistYXV0b19sb2FkX25ld19vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKy17CistICBpZiAoIW9iamZpbGUpCistICAgIHsK Ky0gICAgICAvKiBPQkpGSUxFIGlzIE5VTEwgd2hlbiBsb2FkaW5nIGEgbmV3ICJtYWluIiBzeW1i b2wtZmlsZS4gICovCistICAgICAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICgpOworLSAgICAgIHJl dHVybjsKKy0gICAgfQorLQorLSAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZp bGUpOworLX0KKy0KKyAvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxF LiAgKi8KKyAKKyB2b2lkCitAQCAtNDc4LDE0NiArMTkzLDkgQEAgbG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUgKHN0cnVjdCBvYgorICAgICB9CisgfQorIAwKKy0vKiBDb2xsZWN0IHNjcmlw dHMgdG8gYmUgcHJpbnRlZCBpbiBhIHZlYy4gICovCistCistdHlwZWRlZiBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7CistREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0 cik7CistCistLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZlcnNlLgorLSAgIENv bGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICovCistCistc3RhdGlj IGludAorLWNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8p CisteworLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90OworLSAgVkVDIChs b2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87CistCistICBpZiAocmVfZXhl YyAoc2NyaXB0LT5uYW1lKSkKKy0gICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIs ICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsKKy0KKy0gIHJldHVybiAxOworLX0KKy0KKy0vKiBQcmlu dCBTQ1JJUFQuICAqLworLQorLXN0YXRpYyB2b2lkCistcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqc2NyaXB0KQorLXsKKy0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVu dF91aW91dDsKKy0gIHN0cnVjdCBjbGVhbnVwICpjaGFpbjsKKy0KKy0gIGNoYWluID0gbWFrZV9j bGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKKy0KKy0gIHVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxsX3BhdGggPyAiWWVz IiA6ICJNaXNzaW5nIik7CistICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInNjcmlwdCIs IHNjcmlwdC0+bmFtZSk7CistICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworLQorLSAgLyog SWYgdGhlIG5hbWUgaXNuJ3QgdGhlIGZ1bGwgcGF0aCwgcHJpbnQgaXQgdG9vLiAgKi8KKy0gIGlm IChzY3JpcHQtPmZ1bGxfcGF0aCAhPSBOVUxMCistICAgICAgJiYgc3RyY21wIChzY3JpcHQtPm5h bWUsIHNjcmlwdC0+ZnVsbF9wYXRoKSAhPSAwKQorLSAgICB7CistICAgICAgdWlfb3V0X3RleHQg KHVpb3V0LCAiXHRmdWxsIG5hbWU6ICIpOworLSAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVp b3V0LCAiZnVsbF9wYXRoIiwgc2NyaXB0LT5mdWxsX3BhdGgpOworLSAgICAgIHVpX291dF90ZXh0 ICh1aW91dCwgIlxuIik7CistICAgIH0KKy0KKy0gIGRvX2NsZWFudXBzIChjaGFpbik7CistfQor LQorLS8qIEhlbHBlciBmb3IgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyB0byBzb3J0IHRoZSBzY3Jp cHRzIGJ5IG5hbWUuICAqLworLQorLXN0YXRpYyBpbnQKKy1zb3J0X3NjcmlwdHNfYnlfbmFtZSAo Y29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQorLXsKKy0gIGNvbnN0IHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICphID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYXA7CistICBj b25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYiA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKiopIGJwOworLQorLSAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7 CistfQorLQorLS8qICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KKy0KKy1z dGF0aWMgdm9pZAorLWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBm cm9tX3R0eSkKKy17CistICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Cist ICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKy0gIHN0cnVjdCBj bGVhbnVwICpzY3JpcHRfY2hhaW47CistICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0 czsKKy0gIGludCBucl9zY3JpcHRzOworLQorLSAgZG9udF9yZXBlYXQgKCk7CistCistICBwc3Bh Y2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFj ZSk7CistCistICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKKy0gICAgeworLSAgICAgIGNoYXIg KnJlX2VyciA9IHJlX2NvbXAgKHBhdHRlcm4pOworLQorLSAgICAgIGlmIChyZV9lcnIpCistCWVy cm9yIChfKCJJbnZhbGlkIHJlZ2V4cDogJXMiKSwgcmVfZXJyKTsKKy0gICAgfQorLSAgZWxzZQor LSAgICB7CistICAgICAgcmVfY29tcCAoIiIpOworLSAgICB9CistCistICAvKiBXZSBuZWVkIHRv IGtub3cgdGhlIG51bWJlciBvZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUgdGFibGUuCistICAg ICBQbHVzIHdlIHdhbnQgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLgorLSAgICAgU28gZmly c3QgdHJhdmVyc2UgdGhlIGhhc2ggdGFibGUgY29sbGVjdGluZyB0aGUgbWF0Y2hpbmcgc2NyaXB0 cy4gICovCistCistICBzY3JpcHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2NyaXB0X3B0ciwgMTAp OworLSAgc2NyaXB0X2NoYWluID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAobG9hZGVkX3Nj cmlwdF9wdHIpLCAmc2NyaXB0cyk7CistCistICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBw c3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIGltbWVk aWF0ZV9xdWl0Kys7CistICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNf c2FmZV9wdXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8KKy0gICAgICBodGFiX3RyYXZlcnNlX25v cmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCistCQkJICAgICAgY29sbGVjdF9t YXRjaGluZ19zY3JpcHRzLCAmc2NyaXB0cyk7CistICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKKy0g ICAgfQorLQorLSAgbnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBz Y3JpcHRzKTsKKy0gIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwg MiwgbnJfc2NyaXB0cywKKy0JCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7Cist CistICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNywgdWlfbGVmdCwgImxvYWRlZCIsICJM b2FkZWQiKTsKKy0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3MCwgdWlfbGVmdCwgInNj cmlwdCIsICJTY3JpcHQiKTsKKy0gIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7CistCistICBp ZiAobnJfc2NyaXB0cyA+IDApCistICAgIHsKKy0gICAgICBpbnQgaTsKKy0gICAgICBsb2FkZWRf c2NyaXB0X3B0ciBzY3JpcHQ7CistCistICAgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChsb2FkZWRf c2NyaXB0X3B0ciwgc2NyaXB0cyksCistCSAgICAgVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMpLAorLQkgICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3Nj cmlwdHNfYnlfbmFtZSk7CistICAgICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGxvYWRlZF9z Y3JpcHRfcHRyLCBzY3JpcHRzLCBpLCBzY3JpcHQpOyArK2kpCistCXByaW50X3NjcmlwdCAoc2Ny aXB0KTsKKy0gICAgfQorLQorLSAgZG9fY2xlYW51cHMgKHNjcmlwdF9jaGFpbik7CistCistICBp ZiAobnJfc2NyaXB0cyA9PSAwKQorLSAgICB7CistICAgICAgaWYgKHBhdHRlcm4gJiYgKnBhdHRl cm4pCistCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1h dGNoaW5nICVzLlxuIiwKKy0JCQlwYXR0ZXJuKTsKKy0gICAgICBlbHNlCistCXVpX291dF9tZXNz YWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzLlxuIik7CistICAgIH0KKy19Cist DAorIHZvaWQKKyBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKKyB7CistICBhdXRv X2xvYWRfcHNwYWNlX2RhdGEKKy0gICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0 aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7CistCistICBvYnNlcnZl cl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7CistCisgICBhZGRf c2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwK KyAJCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKKyBTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVo YXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCitAQCAtNjI3LDEx ICsyMDUsNiBAQCBhbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAorIAkJCSAgIE5V TEwsIE5VTEwsCisgCQkJICAgJnNldGxpc3QsCisgCQkJICAgJnNob3dsaXN0KTsKKy0KKy0gIGFk ZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAorLQkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0 cywKKy0JICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlw dHMuXG5cCistVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7CisgfQor IAorICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHl0aG9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0 LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAorQEAgLTI0LDggKzI0LDYgQEAKKyAKKyBzdHJ1 Y3QgYnJlYWtwb2ludF9vYmplY3Q7CisgCistZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19s b2FkOworLQorIGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24gKHZvaWQp OworIAorIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21t YW5kX2xpbmUgKik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEwb2YxMi5wYXRjaCBiL2dk Yi1hdXRvbG9hZC0xMG9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1 OTY5ODIuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTEwb2YxMi5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDE3MDQgKzAsMCBAQAotW3BhdGNoIzQgNC84XSBzZXQgYXV0by1sb2FkICogbWFp biBwYXJ0Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cw MDA4OC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAw MTEzLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDk6MTEJMS4x NDExMgotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4xNDExMwot IyMgLTEsNSArMSwxMDEgQEAKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCWF1dG8tbG9hZDogSW1wbGVtZW50YXRpb24uCi0rCSog TkVXUzogTmV3IGRlc2NyaXB0aW9ucyBmb3IgImluZm8gYXV0by1sb2FkIiwKLSsJImluZm8gYXV0 by1sb2FkIGdkYi1zY3JpcHRzIiwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKLSsJ ImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiIGFuZCAiaW5mbyBhdXRvLWxvYWQgbGlidGhy ZWFkLWRiIi4KLSsJRGVwcmVjYXRlICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiwgInNldCBhdXRv LWxvYWQtc2NyaXB0cyBvbnxvZmYiCi0rCWFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIuICBO ZXcgZGVzY3JpcHRpb24gZm9yICJzZXQgYXV0by1sb2FkIiwKLSsJInNob3cgYXV0by1sb2FkIiwg InNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAotKwkic2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMiLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCi0rCSJzaG93IGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLAotKwkic2hvdyBh dXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIsICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgYW5k Ci0rCSJzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiLgotKwkqIGF1dG8tbG9hZC5jOiBSZW1v dmUgaW5jbHVkZSBweXRob24vcHl0aG9uLWludGVybmFsLmguICBBZGQgaW5jbHVkZXMKLSsJZXhj ZXB0aW9ucy5oLCBjbGkvY2xpLXNjcmlwdC5oLCBnZGJjbWQuaCwgY2xpL2NsaS1kZWNvZGUuaCBh bmQKLSsJY2xpL2NsaS1zZXRzaG93LmguCi0rCShHREJfQVVUT19GSUxFX05BTUUsIHNvdXJjZV9n ZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKQotKwkoYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBzaG93X2F1 dG9fbG9hZF9nZGJfc2NyaXB0cyk6IE5ldy4KLSsJKGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBS ZW5hbWUgdG8gLi4uCi0rCShnbG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUuCi0rCShhdXRvX2xv YWRfbG9jYWxfZ2RiaW5pdCwgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpCi0rCShh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmlu aXQpCi0rCShzY3JpcHRfbGFuZ3VhZ2VfZ2RiLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmls ZSk6IE5ldy4KLSsJKHN0cnVjdCBsb2FkZWRfc2NyaXB0KTogTmV3IGZpZWxkIGxhbmd1YWdlLgot KwkoaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LCBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5KTogQ2Fs Y3VsYXRlIGFsc28KLSsJTEFOR1VBR0UuCi0rCShtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFt ZXRlciBsYW5ndWFnZS4gIERyb3AgcmVkdW5kYW50Ci0rCWVudHJ5LmZ1bGxfcGF0aCBpbml0aWFs aXphdGlvbi4gIEluaXRpYWxpemUgZW50cnkubGFuZ3VhZ2UgYW5kCi0rCSgqc2xvdCktPmxhbmd1 YWdlLgotKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZm aXggdG8gbGFuZ3VhZ2UuCi0rCVJlbW92ZSB0aGUgY2FsbCBvZiBtYXliZV9hZGRfc2NyaXB0Lgot KwlDYWxsIGxhbmd1YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlLgotKwkobG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUsIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0 YSk6Ci0rCU5ldy4KLSsJKGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyk6IEFkanVzdCBpdCBmb3IK LSsJc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgotKwkoYXV0b19sb2FkX2lu Zm9fc2NyaXB0c19wYXR0ZXJuX25sKTogTmV3IHZhcmlhYmxlLgotKwkoaW5mb19hdXRvX2xvYWRf c2NyaXB0cyk6IFJlbmFtZSB0byAuLi4KLSsJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMpOiAuLi4g aGVyZSwgYWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIEFkanVzdCBpdAotKwlmb3Igc3RydWN0IGNv bGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgotKwkoaW5mb19hdXRvX2xvYWRfZ2RiX3Njcmlw dHMsIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCi0rCShzZXRfYXV0b19sb2FkX2NtZCwg YXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCwgc2hvd19hdXRvX2xvYWRfY21kKQotKwkoYXV0b19s b2FkX3Nob3dfY21kbGlzdF9nZXQsIGluZm9fYXV0b19sb2FkX2NtZCkKLSsJKGF1dG9fbG9hZF9p bmZvX2NtZGxpc3RfZ2V0KTogTmV3LgotKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogTW92ZSBh ZGRfaW5mbyBvZiAiYXV0by1sb2FkLXNjcmlwdHMiIHRvCi0rCXB5dGhvbi9weS1hdXRvLWxvYWQu Yy4gIE5ldyBpbnN0YWxsbWVudCBmb3IgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAotKwki aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0 IiBhbmQKLSsJImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLgotKwkqIGF1dG8tbG9hZC5o IChzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlKTogTmV3LgotKwkoZ2RicHlfZ2xvYmFsX2F1dG9fbG9h ZCk6IFJlbmFtZSB0byAuLi4KLSsJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4KLSsJKGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSkK LSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCk6IE5ldyBkZWNsYXJhdGlvbnMuCi0r CShtYXliZV9hZGRfc2NyaXB0KTogTmV3IHBhcmFtZXRlciBsYW5ndWFnZS4KLSsJKGF1dG9fbG9h ZF9vYmpmaWxlX3NjcmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxhbmd1YWdlLgot KwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNf cGF0dGVybl9ubCkKLSsJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMsIGF1dG9fbG9hZF9zZXRfY21k bGlzdF9nZXQpCi0rCShhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCwgYXV0b19sb2FkX2luZm9f Y21kbGlzdF9nZXQpOiBOZXcKLSsJZGVjbGFyYXRpb25zLgotKwkqIGxpbnV4LXRocmVhZC1kYi5j OiBJbmNsdWRlIGF1dG8tbG9hZC5oIGFuZCBjdHlwZS5oLgotKwkoYXV0b19sb2FkX3RocmVhZF9k Yiwgc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiKTogTmV3LgotKwkoc3RydWN0IHRocmVhZF9kYl9p bmZvKTogTmV3IGZpZWxkIGZpbGVuYW1lLgotKwkoZGVsZXRlX3RocmVhZF9kYl9pbmZvKTogQ2Fs bCB4ZnJlZSBmb3IgRklMRU5BTUUuCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWQpOiBJbml0aWFsaXpl IEZJTEVOQU1FLgotKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpciwgdHJ5X3RocmVhZF9k Yl9sb2FkX2Zyb21fZGlyKTogUmV0dXJuCi0rCWlmICFBVVRPX0xPQURfVEhSRUFEX0RCLgotKwko aW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUsIGluZm9fYXV0b19sb2FkX2xpYnRo cmVhZF9kYik6IE5ldy4KLSsJKF9pbml0aWFsaXplX3RocmVhZF9kYik6IEluc3RhbGwgYXV0b19s b2FkX3RocmVhZF9kYgotKwlhcyAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGFuZCBpbnN0 YWxsIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYgotKwlhcyAiaW5mbyBhdXRvLWxvYWQgbGli dGhyZWFkLWRiIi4KLSsJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBSZW5hbWUgZ2RicHlfZ2xv YmFsX2F1dG9fbG9hZCB0bwotKwlnbG9iYWxfYXV0b19sb2FkLiAgSW5pdGlhbGl6ZSBBVVRPX0xP QURfTE9DQUxfR0RCSU5JVF9QQVRITkFNRSBhbmQKLSsJQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRf TE9BREVELgotKwkocHJpbnRfZ2RiX2hlbHApOiBFeHRlbmQgdGhlIGhlbHAgZm9yICdsb2NhbCBp bml0IGZpbGUnLgotKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYzogUmVtb3ZlIGEgY29tbWVudCBh Ym91dCBnZGIgc2NyaXB0cyBleHRlbnNpb24uCi0rCShHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk6 IEV4dGVuZCB0aGUgY29tbWVudCBpdCBpcyBQeXRob24gc3BlY2lmaWMuCi0rCShhdXRvX2xvYWRf c2NyaXB0cyk6IFJlbmFtZSB0byAuLi4KLSsJKGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyk6IC4u LiBoZXJlLCB1cGRhdGUgdGhlIGNvbW1lbnQuCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zv cl9vYmpmaWxlKTogTmV3IGRlY2xhcmF0aW9uLgotKwkoc2hvd19hdXRvX2xvYWRfcHl0aG9uX3Nj cmlwdHMsIHNjcmlwdF9sYW5ndWFnZV9weXRob24pCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0 X2Zvcl9vYmpmaWxlKTogTmV3LgotKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IFJlZmFjdG9y IHRoZSBjb2RlLgotKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8g Li4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLCB1 cGRhdGUgdGhlCi0rCWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCBjYWxsZXIsIGRyb3AgR0RCUFlf R0xPQkFMX0FVVE9fTE9BRCBjaGVja2luZy4KLSsJKGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3Jp cHRzKTogTmV3LgotKwkoZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGVz IGNtZCBhbmQgY21kX25hbWUuCi0rCVJlbmFtZSAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIiB0byAi c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIuCi0rCVJlZ2lzdGVyICJzZXQgYXV0by1sb2Fk LXNjcmlwdHMiIGFzIGl0cyBkZXByZWNhdGVkIGFsaWFzLiAgUmVnaXN0ZXIKLSsJImluZm8gYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gIFJlZ2lzdGVyICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRz IiBhcwotKwlpdHMgZGVwcmVjYXRlZCBhbGlhcy4KLSsJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9v YmpmaWxlKTogUmVuYW1lIHRvIC4uLgotKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUpOiAuLi4gaGVyZS4KLSsJKiBweXRob24vcHl0aG9uLmggKGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgotKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUpOiAuLi4gaGVyZS4KLSsKLSsyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCWF1dG8tbG9hZDogTW92ZSBmaWxlcy4K LSAJKiBNYWtlZmlsZS5pbiAoU0ZJTEVTKTogQWRkIGF1dG8tbG9hZC5jLgotIAkoSEZJTEVTX05P X1NSQ0RJUik6IEFkZCBhdXRvLWxvYWQuaC4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdT CTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAzNTczNzY0NCArMDIwMAotQEAgLTI4 LDYgKzI4LDQ1IEBACi0gICBub3cgc2V0IGEgYnJlYWtwb2ludCBpbiBidWlsZC9nY2MvZXhwci5j LCBidXQgbm90Ci0gICBidWlsZC9saWJjcHAvZXhwci5jLgotIAotKyogTmV3IGNvbW1hbmRzCi0r Ci0rICAqKiAiaW5mbyBhdXRvLWxvYWQiIHNob3dzIHN0YXR1cyBvZiBhbGwga2luZHMgb2YgYXV0 by1sb2FkZWQgZmlsZXMsCi0rICAgICAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiIHNob3dz IHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcgR0RCIGNhbm5lZAotKyAgICAgc2VxdWVuY2VzIG9mIGNv bW1hbmRzIGZpbGVzLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCi0rICAgICBzaG93 cyBzdGF0dXMgb2YgYXV0by1sb2FkaW5nIFB5dGhvbiBzY3JpcHQgZmlsZXMsCi0rICAgICAiaW5m byBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgc2hvd3Mgc3RhdHVzIG9mIGxvYWRpbmcgaW5pdCBm aWxlCi0rICAgICAoLmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkgYW5kICJpbmZvIGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIHNob3dzCi0rICAgICBzdGF0dXMgb2YgaW5mZXJpb3Igc3Bl Y2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeSBsb2FkaW5nLgotKwotKyAgKiog ImluZm8gYXV0by1sb2FkLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZiIK LSsgICAgIGFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZHMgaGF2ZSBiZWVuIGRl cHJlY2F0ZWQsIHVzZSB0aGVpcgotKyAgICAgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz IiwgInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmIgotKyAgICAgYW5kICJzaG93 IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgY291bnRlcnBhcnRzIGluc3RlYWQuCi0rCi0rKiBO ZXcgb3B0aW9ucwotKwotK3NldCBhdXRvLWxvYWQgb2ZmCi0rICBEaXNhYmxlIGF1dG8tbG9hZGlu ZyBnbG9iYWxseS4KLSsKLStzaG93IGF1dG8tbG9hZAotKyAgU2hvdyBhdXRvLWxvYWRpbmcgc2V0 dGluZyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMuCi0rCi0rc2V0IGF1dG8tbG9h ZCBnZGItc2NyaXB0cyBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotKyAgQ29u dHJvbCBhdXRvLWxvYWRpbmcgb2YgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZmls ZXMuCi0rCi0rc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYKLStzaG93IGF1dG8t bG9hZCBweXRob24tc2NyaXB0cwotKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNj cmlwdCBmaWxlcy4KLSsKLStzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgb258b2ZmCi0rc2hv dyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotKyAgQ29udHJvbCBsb2FkaW5nIG9mIGluaXQgZmls ZSAoLmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkuCi0rCi0rc2V0IGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGIgb258b2ZmCi0rc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rICBDb250 cm9sIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNo YXJlZCBsaWJyYXJ5LgotKwotICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCi0gCi0gLS1pbml0 LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0 ZSBpdAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0 LTE4IDAwOjQ0OjI2Ljk1MDQzNzUyMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCi1AQCAtMjcs MTkgKzI3LDkyIEBACi0gI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAib2JzZXJ2ZXIu aCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLS0jaW5jbHVkZSAicHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktc2Ny aXB0LmgiCi0rI2luY2x1ZGUgImdkYmNtZC5oIgotKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5o IgotKyNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cuaCIKLSsKLSsvKiBUaGUgc3VmZml4IG9mIHBl ci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxl cy4KLSsgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBs aWJmb28tZ2RiLmdkYi4gICovCi0rI2RlZmluZSBHREJfQVVUT19GSUxFX05BTUUgIi1nZGIuZ2Ri IgotKwotK3N0YXRpYyB2b2lkIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVu YW1lKTsKLSsKLSsvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRv LWxvYWRpbmcgb2YgR0RCX0FVVE9fRklMRV9OQU1FCi0rICAgc2NyaXB0czoKLSsgICBzZXQgYXV0 by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9mZgotKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQg YXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9iamZpbGUKLSsgICBpcyBvcGVu ZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGljIGludCBhdXRvX2xvYWRfZ2RiX3Njcmlw dHMgPSAxOwotKwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2dkYl9zY3Jp cHRzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19h dXRvX2xvYWRfZ2RiX3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHks Ci0rCQkJICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkK LSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyAiCi0rCQkJICAgICJzY3JpcHRzIGlzICVzLlxuIiksCi0r CQkgICAgdmFsdWUpOwotK30KLSAKLSAvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlz YWJsZSBhdXRvLWxvYWRpbmcuCi0gICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxv YWQgcHl0aG9uIGNvZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLSAgICBmYWxzZSBvdGhl cndpc2UuCi0gCi0tICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0 b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKLSsgICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRz ICYmIGdsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQotICAgIGF1dG8tbG9h ZGluZy4KLSAKLSAgICBUaGlzIGZsYWcgZXhpc3RzIHRvIGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1 dG8tbG9hZGluZyBkdXJpbmcgc3RhcnQtdXAKLSAgICB1bnRpbCBhZnRlciAuLy5nZGJpbml0IGhh cyBiZWVuIHJlYWQ7IGl0IG1heSBhdWdtZW50IHRoZSBzZWFyY2ggZGlyZWN0b3JpZXMKLSAgICB1 c2VkIHRvIGZpbmQgdGhlIHNjcmlwdHMuICAqLwotLWludCBnZGJweV9nbG9iYWxfYXV0b19sb2Fk ID0gMTsKLStpbnQgZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rCi0rLyogQXV0by1sb2FkIC5nZGJp bml0IGZpbGUgZnJvbSB0aGUgY3VycmVudCBkaXJlY3Rvcnk/ICAqLwotK2ludCBhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdCA9IDE7Ci0rCi0rLyogQWJzb2x1dGUgcGF0aG5hbWUgdG8gdGhlIGN1cnJl bnQgZGlyZWN0b3J5IC5nZGJpbml0LCBpZiBpdCBleGlzdHMuICAqLwotK2NoYXIgKmF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gTlVMTDsKLSsKLSsvKiBCb29sZWFuIHZhbHVlIGlm IEFVVE9fTE9BRF9MT0NBTF9HREJJTklUX1BBVEhOQU1FIGhhcyBiZWVuIGxvYWRlZC4gICovCi0r aW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDA7Ci0rCi0rLyogInNob3ciIGNv bW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQg KHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAgICAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmls dGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJy ZW50ICIKLSsJCQkgICAgImRpcmVjdG9yeSBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9 Ci0rCi0rLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2Vx dWVuY2VzIG9mIGNvbW1hbmRzLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9s YW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfZ2RiCi0rICA9IHsgR0RCX0FVVE9fRklMRV9OQU1FLCBz b3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSB9OwotKwotK3N0YXRpYyB2b2lkCi0rc291cmNl X2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpm aWxlLAotKwkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0rICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJf ZXhjZXB0aW9uIGU7Ci0rCi0rICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUg dG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSsgICAgIGNhbiBwcmludCBpdC4g ICovCi0rICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRp bmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0rICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2Vf aW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rCi0rICBU UllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIHNjcmlwdF9mcm9t X2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKLSsgICAgfQotKyAgZXhjZXB0aW9uX3ByaW50IChnZGJf c3RkZXJyLCBlKTsKLSt9Ci0gCi0gLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19n ZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKLSAgICB0aGUgc2FtZSBzY3Jp cHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1l cywKLUBAIC02Miw5ICsxMzUsMTIgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKLSB7Ci0gICAvKiBO YW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KLSAgIGNvbnN0IGNoYXIgKm5hbWU7 Ci0rCi0gICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQg KG9yIHdhcyBvdGhlcndpc2UKLSAgICAgIGluYWNjZXNzaWJsZSkuICAqLwotICAgY29uc3QgY2hh ciAqZnVsbF9wYXRoOwotKwotKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3Vh Z2U7Ci0gfTsKLSAKLSAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCi1AQCAtMTA5 LDcgKzE4NSw3IEBAIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGEKLSB7 Ci0gICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7Ci0gCi0tICByZXR1cm4g aHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7Ci0rICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAo ZS0+bmFtZSkgXiBodGFiX2hhc2hfcG9pbnRlciAoZS0+bGFuZ3VhZ2UpOwotIH0KLSAKLSAvKiBF cXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi1AQCAtMTIw LDcgKzE5Niw3IEBAIGVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGMKLSAg IGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7Ci0gICBjb25zdCBzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqZWIgPSBiOwotIAotLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5u YW1lKSA9PSAwOwotKyAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwICYm IGVhLT5sYW5ndWFnZSA9PSBlYi0+bGFuZ3VhZ2U7Ci0gfQotIAotIC8qIEluaXRpYWxpemUgdGhl IHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgotQEAgLTE1NiwyMCArMjMyLDIxIEBAIGdl dF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKLSAgIHJldHVybiBpbmZvOwot IH0KLSAKLS0vKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4K LS0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KLS0gICBU aGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0 YWJsZS4gICovCi0rLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUg b2YgUFNQQUNFX0lORk8uCi0rICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNu J3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCi0rICAgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJl YWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSAKLSBpbnQKLS1tYXliZV9hZGRfc2NyaXB0IChz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFt ZSwKLS0JCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQotK21heWJlX2FkZF9zY3JpcHQgKHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAotKwkJICBjb25zdCBjaGFyICpu YW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCi0rCQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFu Z3VhZ2UgKmxhbmd1YWdlKQotIHsKLSAgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8t PmxvYWRlZF9zY3JpcHRzOwotICAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsK LSAgIGludCBpbl9oYXNoX3RhYmxlOwotIAotICAgZW50cnkubmFtZSA9IG5hbWU7Ci0tICBlbnRy eS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0rICBlbnRyeS5sYW5ndWFnZSA9IGxhbmd1YWdlOwot ICAgc2xvdCA9IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIs ICZlbnRyeSwgSU5TRVJUKTsKLSAgIGluX2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOwotIAot QEAgLTE5NCw2ICsyNzEsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3Bz cGFjCi0gCX0KLSAgICAgICBlbHNlCi0gCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Ci0rICAg ICAgKCpzbG90KS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKLSAgICAgfQotIAotICAgcmV0dXJuIGlu X2hhc2hfdGFibGU7Ci1AQCAtMjE2LDEwICsyOTQsMTIgQEAgY2xlYXJfc2VjdGlvbl9zY3JpcHRz ICh2b2lkKQotICAgICB9Ci0gfQotIAotLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0 IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLSsvKiBMb29rIGZvciB0 aGUgYXV0by1sb2FkIHNjcmlwdCBpbiBMQU5HVUFHRSBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBh bmQgbG9hZAotKyAgIGl0LiAgKi8KLSAKLSB2b2lkCi0tYXV0b19sb2FkX29iamZpbGVfc2NyaXB0 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQotK2F1dG9fbG9h ZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJICBjb25zdCBz dHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKLSB7Ci0gICBjaGFyICpyZWFsbmFtZTsK LSAgIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOwotQEAgLTIyOSw5ICszMDksOSBAQCBhdXRv X2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0gCi0gICByZWFsbmFtZSA9IGdk Yl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0gICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsK LS0gIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7Ci0rICBm aWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAobGFuZ3VhZ2UtPnN1ZmZpeCkgKyAxKTsK LSAgIG1lbWNweSAoZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOwotLSAgc3RyY3B5IChmaWxlbmFt ZSArIGxlbiwgc3VmZml4KTsKLSsgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIGxhbmd1YWdlLT5z dWZmaXgpOwotIAotICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7 Ci0gICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7Ci1AQCAtMjY5LDI3ICszNDksMzMg QEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQotIAotICAgaWYgKGlu cHV0KQotICAgICB7Ci0tICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm87Ci0tCi0gICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOwotIAotLSAgICAg IC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1s b2FkLXNjcmlwdHMiCi0tCSBjYW4gcHJpbnQgaXQuICAqLwotLSAgICAgIHBzcGFjZV9pbmZvID0K LS0JZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFt X3NwYWNlKTsKLS0gICAgICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZGVidWdmaWxl LCBkZWJ1Z2ZpbGUpOwotLQotICAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91 ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUKLSAJIHNjcmlwdCB3YXMgYWxyZWFkeSBp biB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KLSAJIEl0J3MgaGlnaGx5IHVubGlrZWx5 IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCi0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUg cmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQotIAkgbG9hZHMgYW55d2F5 LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwg aW5wdXQsIGRlYnVnZmlsZSk7Ci0rICAgICAgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29i amZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOwotICAgICB9Ci0gCi0gICBkb19jbGVh bnVwcyAoY2xlYW51cHMpOwotIH0KLSAKLSsvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRz IGZvciBPQkpGSUxFLiAgKi8KLSsKLSt2b2lkCi0rbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGlmICghZ2xvYmFsX2F1dG9fbG9h ZCkKLSsgICAgcmV0dXJuOwotKwotKyAgaWYgKGF1dG9fbG9hZF9nZGJfc2NyaXB0cykKLSsgICAg YXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7 Ci0rCi0rICBnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0r fQotKwotIC8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRv LWxvYWQgc2NyaXB0cy4KLSAKLSAgICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRz IGFyZSBzdXBwb3J0ZWQuCi1AQCAtMzE0LDYgKzQwMCwxMyBAQCBhdXRvX2xvYWRfbmV3X29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvCi0gdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9h ZGVkX3NjcmlwdF9wdHI7Ci0gREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7Ci0gCi0rc3Ry dWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhCi0rewotKyAgVkVDIChsb2FkZWRfc2Ny aXB0X3B0cikgKipzY3JpcHRzX3A7Ci0rCi0rICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdl ICpsYW5ndWFnZTsKLSt9OwotKwotIC8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2 ZXJzZS4KLSAgICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAq LwotIAotQEAgLTMyMSwxMCArNDE0LDEwIEBAIHN0YXRpYyBpbnQKLSBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQotIHsKLSAgIHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKLS0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoqc2Ny aXB0c19wdHIgPSBpbmZvOwotKyAgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRh ICpkYXRhID0gaW5mbzsKLSAKLS0gIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQotLSAgICBW RUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOwot KyAgaWYgKHNjcmlwdC0+bGFuZ3VhZ2UgPT0gZGF0YS0+bGFuZ3VhZ2UgJiYgcmVfZXhlYyAoc2Ny aXB0LT5uYW1lKSkKLSsgICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpkYXRh LT5zY3JpcHRzX3AsIHNjcmlwdCk7Ci0gCi0gICByZXR1cm4gMTsKLSB9Ci1AQCAtMzY2LDEwICs0 NTksMTggQEAgc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjbwotICAgcmV0 dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7Ci0gfQotIAotLS8qICJpbmZvIGF1 dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KLSsvKiBTcGVjaWFsIGludGVybmFsIEdEQiB2 YWx1ZSBvZiBhdXRvX2xvYWRfaW5mb19zY3JpcHRzJ3MgUEFUVEVSTiBpZGVudGlmeQotKyAgIHRo ZSAiaW5mbyBhdXRvLWxvYWQgWFhYIiBjb21tYW5kIGhhcyBiZWVuIGV4ZWN1dGVkIHRocm91Z2gg dGhlIGdlbmVyYWwKLSsgICAiaW5mbyBhdXRvLWxvYWQiIGludm9jYXRpb24uICBFeHRyYSBuZXds aW5lIHdpbGwgYmUgcHJpbnRlZCBpZiBuZWVkZWQuICAqLwotK2NoYXIgYXV0b19sb2FkX2luZm9f c2NyaXB0c19wYXR0ZXJuX25sW10gPSAiIjsKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBmb3IgImlu Zm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotKyAgIChhbmQgImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIikuICBMaXN0IHNjcmlwdHMgaW4gTEFOR1VBR0UgbWF0Y2hpbmcKLSsgICBQQVRU RVJOLiAgRlJPTV9UVFkgaXMgdGhlIHVzdWFsIEdEQiBib29sZWFuIGZvciB1c2VyIGludGVyYWN0 aXZpdHkuICAqLwotIAotLXN0YXRpYyB2b2lkCi0taW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hh ciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3ZvaWQKLSthdXRvX2xvYWRfaW5mb19zY3JpcHRz IChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCi0rCQkJY29uc3Qgc3RydWN0IHNjcmlwdF9s YW5ndWFnZSAqbGFuZ3VhZ2UpCi0gewotICAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50 X3Vpb3V0OwotICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci1A QCAtNDAyLDE0ICs1MDMsMjIgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVy biwgaQotIAotICAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRl ZF9zY3JpcHRzICE9IE5VTEwpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGlu Z19zY3JpcHRzX2RhdGEgZGF0YSA9IHsgJnNjcmlwdHMsIGxhbmd1YWdlIH07Ci0rCi0gICAgICAg aW1tZWRpYXRlX3F1aXQrKzsKLSAgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFz IFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotICAgICAgIGh0YWJfdHJhdmVy c2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLS0JCQkgICAgICBjb2xs ZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKLSsJCQkgICAgICBjb2xsZWN0X21hdGNo aW5nX3NjcmlwdHMsICZkYXRhKTsKLSAgICAgICBpbW1lZGlhdGVfcXVpdC0tOwotICAgICB9Ci0g Ci0gICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMp OwotKwotKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2VkaW5nICJnZGIt c2NyaXB0czogICIgd291bGQgbm90IG1hdGNoCi0rICAgICBpdHMgY29sdW1ucy4gICovCi0rICBp ZiAobnJfc2NyaXB0cyA+IDAgJiYgcGF0dGVybiA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3Bh dHRlcm5fbmwpCi0rICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0rCi0gICBtYWtlX2Ns ZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCi0gCQkJ CSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOwotIAotQEAgLTQ0MSw2ICs1NTAsMjkg QEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQotICAgICB9Ci0gfQot IAotKy8qIFdyYXBwZXIgZm9yICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIuICAqLwotKwot K3N0YXRpYyB2b2lkCi0raW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4s IGludCBmcm9tX3R0eSkKLSt7Ci0rICBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIChwYXR0ZXJuLCBm cm9tX3R0eSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOwotK30KLSsKLSsvKiBJbXBsZW1lbnQgJ2lu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQnLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2luZm9f YXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0r ICBpZiAoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPT0gTlVMTCkKLSsgICAgcHJp bnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIHdhcyBub3QgZm91bmQuXG4iKSk7 Ci0rICBlbHNlIGlmIChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQpCi0rICAgIHByaW50 Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIgaGFzIGJlZW4gbG9hZGVk LlxuIiksCi0rCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsKLSsgIGVs c2UKLSsgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBo YXMgbm90IGJlZW4gbG9hZGVkLlxuIiksCi0rCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X3BhdGhuYW1lKTsKLSt9Ci0rCi0gLyogUmV0dXJuIG5vbi16ZXJvIGlmIFNDUklQVF9OT1RfRk9V TkRfV0FSTklOR19QUklOVEVEIG9mIFBTUEFDRV9JTkZPIHdhcyB1bnNldAotICAgIGJlZm9yZSBj YWxsaW5nIHRoaXMgZnVuY3Rpb24uICBBbHdheXMgc2V0IFNDUklQVF9OT1RfRk9VTkRfV0FSTklO R19QUklOVEVECi0gICAgb2YgUFNQQUNFX0lORk8uICAqLwotQEAgLTQ1NSw2ICs1ODcsMTMyIEBA IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGEKLSAgIHJldHVybiByZXR2 YWw7Ci0gfQotIAotKy8qIFRoZSBvbmx5IHZhbGlkICJzZXQgYXV0by1sb2FkIiBhcmd1bWVudCBp cyBvZmZ8MHxub3xkaXNhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NldF9hdXRvX2xvYWRf Y21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKmxpc3Q7Ci0rICBzaXplX3QgbGVuZ3RoOwotKwotKyAgLyogU2VlIHBhcnNlX2JpbmFy eV9vcGVyYXRpb24gaW4gdXNlIGJ5IHRoZSBzdWItY29tbWFuZHMuICAqLwotKwotKyAgbGVuZ3Ro ID0gYXJncyA/IHN0cmxlbiAoYXJncykgOiAwOwotKwotKyAgd2hpbGUgKGxlbmd0aCA+IDAgJiYg KGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJyAnIHx8IGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJ1x0JykpCi0r ICAgIGxlbmd0aC0tOwotKwotKyAgaWYgKGxlbmd0aCA9PSAwIHx8IChzdHJuY21wIChhcmdzLCAi b2ZmIiwgbGVuZ3RoKSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAiMCIsIGxlbmd0 aCkgIT0gMAotKwkJICAgICAgJiYgc3RybmNtcCAoYXJncywgIm5vIiwgbGVuZ3RoKSAhPSAwCi0r CQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAiZGlzYWJsZSIsIGxlbmd0aCkgIT0gMCkpCi0rICAg IGVycm9yIChfKCJWYWxpZCBpcyBvbmx5IGdsb2JhbCAnc2V0IGF1dG8tbG9hZCBubyc7ICIKLSsJ ICAgICAib3RoZXJ3aXNlIGNoZWNrIHRoZSBhdXRvLWxvYWQgc3ViLWNvbW1hbmRzLiIpKTsKLSsK LSsgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5V TEw7IGxpc3QgPSBsaXN0LT5uZXh0KQotKyAgICBpZiAobGlzdC0+dmFyX3R5cGUgPT0gdmFyX2Jv b2xlYW4pCi0rICAgICAgewotKwlnZGJfYXNzZXJ0IChsaXN0LT50eXBlID09IHNldF9jbWQpOwot Kwlkb19zZXRzaG93X2NvbW1hbmQgKGFyZ3MsIGZyb21fdHR5LCBsaXN0KTsKLSsgICAgICB9Ci0r fQotKwotKy8qIEluaXRpYWxpemUgInNldCBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5k IHJldHVybiBpdC4gICovCi0rCi0rc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKLSthdXRvX2xv YWRfc2V0X2NtZGxpc3RfZ2V0ICh2b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqcmV0dmFsOwotKwotKyAgaWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJl Zml4X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLCBzZXRfYXV0b19sb2FkX2Nt ZCwgXygiXAotK0F1dG8tbG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKLStDb25maWd1cmUg dmFyaW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwKLSthdXRvbWF0 aWMgbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwKLSsJCSAgICAmcmV0dmFsLCAic2V0IGF1 dG8tbG9hZCAiLAotKwkJICAgIDEvKmFsbG93LXVua25vd24qLywgJnNldGxpc3QpOwotKwotKyAg cmV0dXJuICZyZXR2YWw7Ci0rfQotKwotKy8qIENvbW1hbmQgInNob3cgYXV0by1sb2FkIiBkaXNw bGF5cyBzdW1tYXJ5IG9mIGFsbCB0aGUgY3VycmVudAotKyAgICJzaG93IGF1dG8tbG9hZCAiIHNl dHRpbmdzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX2NtZCAoY2hhciAq YXJncywgaW50IGZyb21fdHR5KQotK3sKLSsgIGNtZF9zaG93X2xpc3QgKCphdXRvX2xvYWRfc2hv d19jbWRsaXN0X2dldCAoKSwgZnJvbV90dHksICIiKTsKLSt9Ci0rCi0rLyogSW5pdGlhbGl6ZSAi c2hvdyBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCi0rCi0r c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKLSthdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAo dm9pZCkKLSt7Ci0rICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKLSsK LSsgIGlmIChyZXR2YWwgPT0gTlVMTCkKLSsgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQi LCBjbGFzc19tYWludGVuYW5jZSwgc2hvd19hdXRvX2xvYWRfY21kLCBfKCJcCi0rU2hvdyBhdXRv LWxvYWRpbmcgc3BlY2lmaWMgc2V0dGluZ3MuXG5cCi0rU2hvdyBjb25maWd1cmF0aW9uIG9mIHZh cmlvdXMgYXV0by1sb2FkLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5cCi0rYXV0b21hdGlj IGxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuIiksCi0rCQkgICAgJnJldHZhbCwgInNob3cgYXV0 by1sb2FkICIsCi0rCQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmc2hvd2xpc3QpOwotKwotKyAg cmV0dXJuICZyZXR2YWw7Ci0rfQotKwotKy8qIENvbW1hbmQgImluZm8gYXV0by1sb2FkIiBkaXNw bGF5cyB3aGV0aGVyIHRoZSB2YXJpb3VzIGF1dG8tbG9hZCBmaWxlcyBoYXZlCi0rICAgYmVlbiBs b2FkZWQuICBUaGlzIGlzIHJlaW1wbGVtZW50YXRpb24gb2YgY21kX3Nob3dfbGlzdCB3aGljaCBp bnNlcnRzCi0rICAgbmV3bGluZXMgYXQgcHJvcGVyIHBsYWNlcy4gICovCi0rCi0rc3RhdGljIHZv aWQKLStpbmZvX2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0r ICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqbGlzdDsKLSsgIHN0cnVjdCBjbGVhbnVwICppbmZv bGlzdF9jaGFpbjsKLSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsK LSsgIGluZm9saXN0X2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQg KHVpb3V0LCAiaW5mb2xpc3QiKTsKLSsKLSsgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfaW5mb19j bWRsaXN0X2dldCAoKTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkKLSsgICAgewot KyAgICAgIHN0cnVjdCBjbGVhbnVwICpvcHRpb25fY2hhaW4KLSsJPSBtYWtlX2NsZWFudXBfdWlf b3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJvcHRpb24iKTsKLSsKLSsgICAgICBnZGJfYXNz ZXJ0ICghbGlzdC0+cHJlZml4bGlzdCk7Ci0rICAgICAgZ2RiX2Fzc2VydCAobGlzdC0+dHlwZSA9 PSBub3Rfc2V0X2NtZCk7Ci0rCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJu YW1lIiwgbGlzdC0+bmFtZSk7Ci0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiOiAgIik7Ci0r ICAgICAgY21kX2Z1bmMgKGxpc3QsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCwg ZnJvbV90dHkpOwotKwotKyAgICAgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCi0rICAgICAgZG9f Y2xlYW51cHMgKG9wdGlvbl9jaGFpbik7Ci0rICAgIH0KLSsKLSsgIC8qIENsb3NlIHRoZSB0dXBs ZS4gICovCi0rICBkb19jbGVhbnVwcyAoaW5mb2xpc3RfY2hhaW4pOwotK30KLSsKLSsvKiBJbml0 aWFsaXplICJpbmZvIGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0LiAg Ki8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9hZF9pbmZvX2NtZGxp c3RfZ2V0ICh2b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0 dmFsOwotKwotKyAgaWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJlZml4X2NtZCAoImF1 dG8tbG9hZCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2NtZCwgXygiXAotK1ByaW50IGN1 cnJlbnQgc3RhdHVzIG9mIGF1dG8tbG9hZGVkIGZpbGVzLlxuXAotK1ByaW50IHdoZXRoZXIgdmFy aW91cyBmaWxlcyBsaWtlIFB5dGhvbiBzY3JpcHRzIG9yIC5nZGJpbml0IGZpbGVzIGhhdmUgYmVl blxuXAotK2ZvdW5kIGFuZC9vciBsb2FkZWQuIiksCi0rCQkgICAgJnJldHZhbCwgImluZm8gYXV0 by1sb2FkICIsCi0rCQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmaW5mb2xpc3QpOwotKwotKyAg cmV0dXJuICZyZXR2YWw7Ci0rfQotKwotIHZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lk KTsKLSAKLSB2b2lkCi1AQCAtNDY1LDggKzcyMywzOCBAQCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQg KHZvaWQpCi0gCi0gICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdf b2JqZmlsZSk7Ci0gCi0tICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKLS0JICAgIGlu Zm9fYXV0b19sb2FkX3NjcmlwdHMsCi0tCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0 aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAotLVVzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRz IFtSRUdFWFBdIikpOwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJnZGItc2NyaXB0cyIs IGNsYXNzX3N1cHBvcnQsCi0rCQkJICAgJmF1dG9fbG9hZF9nZGJfc2NyaXB0cywgXygiXAotK0Vu YWJsZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1h bmRzIHNjcmlwdHMuIiksIF8oIlwKLStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkLiIpLAotKwkJCSAgIF8o IlwKLStJZiBlbmFibGVkLCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGFyZSBsb2FkZWQg d2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwKLSthbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJy YXJ5LlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRy dXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2dkYl9zY3Jp cHRzLAotKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCi0rCQkJICAgYXV0b19s b2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOwotKwotKyAgYWRkX2NtZCAoImdkYi1zY3JpcHRzIiwg Y2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsCi0rCSAgIF8oIlByaW50IHRo ZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy5cblwK LStVc2FnZTogaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW1JFR0VYUF0iKSwKLSsJICAgYXV0 b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotKwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9j bWQgKCJsb2NhbC1nZGJpbml0IiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX2xv Y2FsX2dkYmluaXQsIF8oIlwKLStFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgLmdk YmluaXQgc2NyaXB0IGluIGN1cnJlbnQgZGlyZWN0b3J5LiIpLCBfKCJcCi0rU2hvdyB3aGV0aGVy IGF1dG8tbG9hZGluZyAuZ2RiaW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkgaXMgZW5h YmxlZC4iKSwKLSsJCQkgICBfKCJcCi0rSWYgZW5hYmxlZCwgY2FubmVkIHNlcXVlbmNlcyBvZiBj b21tYW5kcyBhcmUgbG9hZGVkIHdoZW4gZGVidWdnZXIgc3RhcnRzXG5cCi0rZnJvbSAuZ2RiaW5p dCBmaWxlIGluIGN1cnJlbnQgZGlyZWN0b3J5LiAgU3VjaCBmaWxlcyBhcmUgZGVwcmVjYXRlZCxc blwKLSt1c2UgYSBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIGluZmVyaW9yIGV4ZWN1dGFibGUgZmls ZSBpbnN0ZWFkLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZv ciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2xv Y2FsX2dkYmluaXQsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkg ICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfY21kICgibG9jYWwt Z2RiaW5pdCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsCi0rCSAg IF8oIlByaW50IHdoZXRoZXIgY3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQgZmlsZSBoYXMgYmVl biBsb2FkZWQuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKLSsJ ICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotIH0KLUluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTE0Mzc1MTcg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4 IDAwOjQ2OjQ3LjU1NjA3OTc4MCArMDIwMAotQEAgLTIyLDE1ICsyMiwzNiBAQAotIAotIHN0cnVj dCBwcm9ncmFtX3NwYWNlOwotIAotLWV4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsK LStzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlCi0rewotKyAgY29uc3QgY2hhciAqc3VmZml4OwotKwot KyAgdm9pZCAoKnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0rfTsK LSsKLStleHRlcm4gaW50IGdsb2JhbF9hdXRvX2xvYWQ7Ci0rCi0rZXh0ZXJuIGludCBhdXRvX2xv YWRfbG9jYWxfZ2RiaW5pdDsKLStleHRlcm4gY2hhciAqYXV0b19sb2FkX2xvY2FsX2dkYmluaXRf cGF0aG5hbWU7Ci0rZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQ7Ci0g Ci0gZXh0ZXJuIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotICAgZ2V0X2F1dG9fbG9h ZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7 Ci0gZXh0ZXJuIGludCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbywKLS0JCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIg KmZ1bGxfcGF0aCk7Ci0rCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxs X3BhdGgsCi0rCQkJICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7 Ci0gZXh0ZXJuIHZvaWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLS0JCQkJICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKLSsJCQkJICAgICAgY29u c3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotK2V4dGVybiB2b2lkIGxvYWRf YXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0gZXh0 ZXJuIGludAotICAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbyk7Ci0rZXh0ZXJuIGNoYXIgYXV0b19sb2FkX2lu Zm9fc2NyaXB0c19wYXR0ZXJuX25sW107Ci0rZXh0ZXJuIHZvaWQgYXV0b19sb2FkX2luZm9fc2Ny aXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5LAotKwkJCQkgICAgY29uc3Qgc3RydWN0 IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotKwotK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpOwotK2V4dGVybiBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsK LStleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0 X2dldCAodm9pZCk7Ci0gCi0gI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDEtMDQgMDk6 MTc6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgt dGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAKLUBAIC00MCw4 ICs0MCwxMCBAQAotICNpbmNsdWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJsaW51eC1uYXQu aCIKLSAjaW5jbHVkZSAibGludXgtcHJvY2ZzLmgiCi0rI2luY2x1ZGUgImF1dG8tbG9hZC5oIgot IAotICNpbmNsdWRlIDxzaWduYWwuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSAKLSAjaWZkZWYg SEFWRV9HTlVfTElCQ19WRVJTSU9OX0gKLSAjaW5jbHVkZSA8Z251L2xpYmMtdmVyc2lvbi5oPgot QEAgLTc1LDYgKzc3LDIxIEBACi0gCi0gc3RhdGljIGNoYXIgKmxpYnRocmVhZF9kYl9zZWFyY2hf cGF0aDsKLSAKLSsvKiBTZXQgdG8gbm9uLXplcm8gaWYgdGhyZWFkX2RiIGF1dG8tbG9hZGluZyBp cyBlbmFibGVkCi0rICAgYnkgdGhlICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgY29tbWFu ZC4gICovCi0rc3RhdGljIGludCBhdXRvX2xvYWRfdGhyZWFkX2RiID0gMTsKLSsKLSsvKiAic2hv dyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF90aHJlYWRfZGIgY29uZmlndXJhdGlvbiB2YXJp YWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIgKHN0 cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAo ZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiAi Ci0rCQkJICAgICJpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0gc3RhdGljIHZv aWQKLSBzZXRfbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoIChjaGFyICppZ25vcmVkLCBpbnQgZnJv bV90dHksCi0gCQkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi1AQCAtMTE5LDYg KzEzNiwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8KLSAgIC8qIEhhbmRsZSBmcm9tIGRsb3Bl biBmb3IgbGlidGhyZWFkX2RiLnNvLiAgKi8KLSAgIHZvaWQgKmhhbmRsZTsKLSAKLSsgIC8qIEFi c29sdXRlIHBhdGhuYW1lIGZyb20gZ2RiX3JlYWxwYXRoIHRvIGRpc2sgZmlsZSB1c2VkIGZvciBk bG9wZW4taW5nCi0rICAgICBIQU5ETEUuICBJdCBtYXkgYmUgTlVMTCBmb3Igc3lzdGVtIGxpYnJh cnkuICAqLwotKyAgY2hhciAqZmlsZW5hbWU7Ci0rCi0gICAvKiBTdHJ1Y3R1cmUgdGhhdCBpZGVu dGlmaWVzIHRoZSBjaGlsZCBwcm9jZXNzIGZvciB0aGUKLSAgICAgIDxwcm9jX3NlcnZpY2UuaD4g aW50ZXJmYWNlLiAgKi8KLSAgIHN0cnVjdCBwc19wcm9jaGFuZGxlIHByb2NfaGFuZGxlOwotQEAg LTI0OCw2ICsyNjksOCBAQCBkZWxldGVfdGhyZWFkX2RiX2luZm8gKGludCBwaWQpCi0gICBpZiAo aW5mby0+aGFuZGxlICE9IE5VTEwpCi0gICAgIGRsY2xvc2UgKGluZm8tPmhhbmRsZSk7Ci0gCi0r ICB4ZnJlZSAoaW5mby0+ZmlsZW5hbWUpOwotKwotICAgaWYgKGluZm9fcHJldikKLSAgICAgaW5m b19wcmV2LT5uZXh0ID0gaW5mby0+bmV4dDsKLSAgIGVsc2UKLUBAIC04MDcsNiArODMwLDEwIEBA IHRyeV90aHJlYWRfZGJfbG9hZCAoY29uc3QgY2hhciAqbGlicmFyeSkKLSAKLSAgIGluZm8gPSBh ZGRfdGhyZWFkX2RiX2luZm8gKGhhbmRsZSk7Ci0gCi0rICAvKiBEbyBub3Qgc2F2ZSBzeXN0ZW0g bGlicmFyeSBuYW1lLCB0aGF0IG9uZSBpcyBhbHdheXMgdHJ1c3RlZC4gICovCi0rICBpZiAoc3Ry Y2hyIChsaWJyYXJ5LCAnLycpICE9IE5VTEwpCi0rICAgIGluZm8tPmZpbGVuYW1lID0gZ2RiX3Jl YWxwYXRoIChsaWJyYXJ5KTsKLSsKLSAgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWRfMSAoaW5mbykp Ci0gICAgIHJldHVybiAxOwotIAotQEAgLTg1Niw2ICs4ODMsOSBAQCB0cnlfdGhyZWFkX2RiX2xv YWRfZnJvbV9wZGlyICh2b2lkKQotIHsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmo7Ci0gCi0rICBp ZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIpCi0rICAgIHJldHVybiAwOwotKwotICAgQUxMX09CSkZJ TEVTIChvYmopCi0gICAgIGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqLT5uYW1lKSkKLSAgICAg ICB7Ci1AQCAtODk1LDYgKzkyNSw5IEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29u c3QgY2hhcgotICAgY2hhciAqcGF0aDsKLSAgIGludCByZXN1bHQ7Ci0gCi0rICBpZiAoIWF1dG9f bG9hZF90aHJlYWRfZGIpCi0rICAgIHJldHVybiAwOwotKwotICAgcGF0aCA9IHhtYWxsb2MgKGRp cl9sZW4gKyAxICsgc3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSk7Ci0gICBjbGVhbnVwID0g bWFrZV9jbGVhbnVwICh4ZnJlZSwgcGF0aCk7Ci0gCi1AQCAtMTgwMiw2ICsxODM1LDE1MCBAQCB0 aHJlYWRfZGJfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICBiZW5lYXRoLT50b19y ZXN1bWUgKGJlbmVhdGgsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKLSB9Ci0gCi0rLyogcXNvcnQgaGVs cGVyIGZ1bmN0aW9uIGZvciBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIsIHNvcnQgdGhlCi0r ICAgdGhyZWFkX2RiX2luZm8gcG9pbnRlcnMgcHJpbWFyaWx5IGJ5IHRoZWlyIEZJTEVOQU1FIGFu ZCBzZWNvbmRhcmlseSBieSB0aGVpcgotKyAgIFBJRCwgYm90aCBpbiBhc2NlbmRpbmcgb3JkZXIu ICAqLwotKwotK3N0YXRpYyBpbnQKLStpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFy ZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQotK3sKLSsgIHN0cnVjdCB0aHJlYWRf ZGJfaW5mbyAqYSA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBhcDsKLSsgIHN0cnVjdCB0 aHJlYWRfZGJfaW5mbyAqYiA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBicDsKLSsgIGlu dCByZXR2YWw7Ci0rCi0rICByZXR2YWwgPSBzdHJjbXAgKGEtPmZpbGVuYW1lLCBiLT5maWxlbmFt ZSk7Ci0rICBpZiAocmV0dmFsKQotKyAgICByZXR1cm4gcmV0dmFsOwotKwotKyAgcmV0dXJuIChh LT5waWQgPiBiLT5waWQpIC0gKGEtPnBpZCAtIGItPnBpZCk7Ci0rfQotKwotKy8qIEltcGxlbWVu dCAnaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiJy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStp bmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7 Ci0rICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Ci0rICBjb25zdCBjaGFy ICpjcyA9IGFyZ3MgPyBhcmdzIDogIiI7Ci0rICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmluZm8s ICoqYXJyYXk7Ci0rICB1bnNpZ25lZCBpbmZvX2NvdW50LCB1bmlxdWVfZmlsZW5hbWVzOwotKyAg c2l6ZV90IG1heF9maWxlbmFtZV9sZW4sIG1heF9waWRzX2xlbiwgcGlkc19sZW47Ci0rICBzdHJ1 Y3QgY2xlYW51cCAqYmFja190bzsKLSsgIGNoYXIgKnBpZHM7Ci0rICBpbnQgaTsKLSsKLSsgIHdo aWxlIChpc3NwYWNlICgqY3MpKQotKyAgICBjcysrOwotKyAgaWYgKCpjcykKLSsgICAgZXJyb3Ig KF8oIidpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGInIGRvZXMgbm90IGFjY2VwdCBhbnkgcGFy YW1ldGVycyIpKTsKLSsKLSsgIGluZm9fY291bnQgPSAwOwotKyAgZm9yIChpbmZvID0gdGhyZWFk X2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQotKyAgICBpZiAoaW5mby0+ZmlsZW5h bWUgIT0gTlVMTCkKLSsgICAgICBpbmZvX2NvdW50Kys7Ci0rCi0rICBhcnJheSA9IHhtYWxsb2Mg KHNpemVvZiAoKmFycmF5KSAqIGluZm9fY291bnQpOwotKyAgYmFja190byA9IG1ha2VfY2xlYW51 cCAoeGZyZWUsIGFycmF5KTsKLSsKLSsgIGluZm9fY291bnQgPSAwOwotKyAgZm9yIChpbmZvID0g dGhyZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQotKyAgICBpZiAoaW5mby0+ ZmlsZW5hbWUgIT0gTlVMTCkKLSsgICAgICBhcnJheVtpbmZvX2NvdW50KytdID0gaW5mbzsKLSsK LSsgIC8qIFNvcnQgQVJSQVkgYnkgZmlsZW5hbWVzIGFuZCBQSURzLiAgKi8KLSsKLSsgIHFzb3J0 IChhcnJheSwgaW5mb19jb3VudCwgc2l6ZW9mICgqYXJyYXkpLAotKwkgaW5mb19hdXRvX2xvYWRf bGlidGhyZWFkX2RiX2NvbXBhcmUpOwotKwotKyAgLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2Yg dW5pcXVlIGZpbGVuYW1lcyAocm93cykgYW5kIHRoZSBtYXhpbXVtIHN0cmluZwotKyAgICAgbGVu Z3RoIG9mIFBJRHMgbGlzdCBmb3IgdGhlIHVuaXF1ZSBmaWxlbmFtZXMgKGNvbHVtbnMpLiAgKi8K LSsKLSsgIHVuaXF1ZV9maWxlbmFtZXMgPSAwOwotKyAgbWF4X2ZpbGVuYW1lX2xlbiA9IDA7Ci0r ICBtYXhfcGlkc19sZW4gPSAwOwotKyAgcGlkc19sZW4gPSAwOwotKyAgZm9yIChpID0gMDsgaSA8 IGluZm9fY291bnQ7IGkrKykKLSsgICAgewotKyAgICAgIGludCBwaWQgPSBhcnJheVtpXS0+cGlk OwotKyAgICAgIHNpemVfdCB0aGlzX3BpZF9sZW47Ci0rCi0rICAgICAgZm9yICh0aGlzX3BpZF9s ZW4gPSAwOyBwaWQgIT0gMDsgcGlkIC89IDEwKQotKwl0aGlzX3BpZF9sZW4rKzsKLSsKLSsgICAg ICBpZiAoaSA9PSAwIHx8IHN0cmNtcCAoYXJyYXlbaSAtIDFdLT5maWxlbmFtZSwgYXJyYXlbaV0t PmZpbGVuYW1lKSAhPSAwKQotKwl7Ci0rCSAgdW5pcXVlX2ZpbGVuYW1lcysrOwotKwkgIG1heF9m aWxlbmFtZV9sZW4gPSBtYXggKG1heF9maWxlbmFtZV9sZW4sCi0rCQkJCSAgc3RybGVuIChhcnJh eVtpXS0+ZmlsZW5hbWUpKTsKLSsKLSsJICBpZiAoaSA+IDApCi0rCSAgICB7Ci0rCSAgICAgIHBp ZHNfbGVuIC09IHN0cmxlbiAoIiwgIik7Ci0rCSAgICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4 X3BpZHNfbGVuLCBwaWRzX2xlbik7Ci0rCSAgICB9Ci0rCSAgcGlkc19sZW4gPSAwOwotKwl9Ci0r ICAgICAgcGlkc19sZW4gKz0gdGhpc19waWRfbGVuICsgc3RybGVuICgiLCAiKTsKLSsgICAgfQot KyAgaWYgKGkpCi0rICAgIHsKLSsgICAgICBwaWRzX2xlbiAtPSBzdHJsZW4gKCIsICIpOwotKyAg ICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7Ci0rICAgIH0K LSsKLSsgIC8qIFRhYmxlIGhlYWRlciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGluZyAibGlidGhy ZWFkLWRiOiAgIiB3b3VsZCBub3QgbWF0Y2gKLSsgICAgIGl0cyBjb2x1bW5zLiAgKi8KLSsgIGlm IChpbmZvX2NvdW50ID4gMCAmJiBhcmdzID09IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVy bl9ubCkKLSsgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSsgIG1ha2VfY2xlYW51 cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgdW5pcXVlX2ZpbGVuYW1lcywKLSsJ CQkJICAgICAgICJMaW51eFRocmVhZERiVGFibGUiKTsKLSsKLSsgIHVpX291dF90YWJsZV9oZWFk ZXIgKHVpb3V0LCBtYXhfZmlsZW5hbWVfbGVuLCB1aV9sZWZ0LCAiZmlsZW5hbWUiLAotKwkJICAg ICAgICJGaWxlbmFtZSIpOwotKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIHBpZHNfbGVu LCB1aV9sZWZ0LCAiUElEcyIsICJQaWRzIik7Ci0rICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQp OwotKwotKyAgcGlkcyA9IHhtYWxsb2MgKG1heF9waWRzX2xlbiArIDEpOwotKyAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgcGlkcyk7Ci0rCi0rICAvKiBOb3RlIEkgaXMgaW5jcmVtZW50ZWQgaW5zaWRl IHRoZSBjeWNsZSwgbm90IGF0IGl0cyBlbmQuICAqLwotKyAgZm9yIChpID0gMDsgaSA8IGluZm9f Y291bnQ7KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNoYWluID0gbWFrZV9jbGVh bnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKLSsgICAgICBjaGFyICpw aWRzX2VuZDsKLSsKLSsgICAgICBpbmZvID0gYXJyYXlbaV07Ci0rICAgICAgdWlfb3V0X2ZpZWxk X3N0cmluZyAodWlvdXQsICJmaWxlbmFtZSIsIGluZm8tPmZpbGVuYW1lKTsKLSsgICAgICBwaWRz X2VuZCA9IHBpZHM7Ci0rCi0rICAgICAgd2hpbGUgKGkgPCBpbmZvX2NvdW50ICYmIHN0cmNtcCAo aW5mby0+ZmlsZW5hbWUsIGFycmF5W2ldLT5maWxlbmFtZSkgPT0gMCkKLSsJewotKwkgIGlmIChw aWRzX2VuZCAhPSBwaWRzKQotKwkgICAgewotKwkgICAgICAqcGlkc19lbmQrKyA9ICcsJzsKLSsJ ICAgICAgKnBpZHNfZW5kKysgPSAnICc7Ci0rCSAgICB9Ci0rCSAgcGlkc19lbmQgKz0geHNucHJp bnRmIChwaWRzX2VuZCwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0gLSBwaWRzX2VuZCwKLSsJCQkJ ICIldSIsIGFycmF5W2ldLT5waWQpOwotKwkgIGdkYl9hc3NlcnQgKHBpZHNfZW5kIDwgJnBpZHNb bWF4X3BpZHNfbGVuICsgMV0pOwotKwotKwkgIGkrKzsKLSsJfQotKyAgICAgICpwaWRzX2VuZCA9 ICdcMCc7Ci0rCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJwaWRzIiwgcGlk cyk7Ci0rCi0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsgICAgICBkb19jbGVh bnVwcyAoY2hhaW4pOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rCi0r ICBpZiAoaW5mb19jb3VudCA9PSAwKQotKyAgICB1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsIF8o Ik5vIGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi5cbiIpKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQK LSBpbml0X3RocmVhZF9kYl9vcHMgKHZvaWQpCi0gewotQEAgLTE4NjMsNiArMjA0MCwyMyBAQCBX aGVuIG5vbi16ZXJvLCBsaWJ0aHJlYWQtZGIgZGVidWdnaW5nIGlzCi0gCQkJICAgIHNob3dfbGli dGhyZWFkX2RiX2RlYnVnLAotIAkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7 Ci0gCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImxpYnRocmVhZC1kYiIsIGNsYXNzX3N1 cHBvcnQsCi0rCQkJICAgJmF1dG9fbG9hZF90aHJlYWRfZGIsIF8oIlwKLStFbmFibGUgb3IgZGlz YWJsZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLiIpLCBf KCJcCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJl YWRfZGIgaXMgZW5hYmxlZC4iKSwgXygiXAotK0lmIGVuYWJsZWQsIGxpYnRocmVhZF9kYiB3aWxs IGJlIHNlYXJjaGVkIGluICdzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoJ1xuXAotK2xvY2F0 aW9ucyB0byBsb2FkIGxpYnRocmVhZF9kYiBjb21wYXRpYmxlIHdpdGggdGhlIGluZmVyaW9yLlxu XAotK1N0YW5kYXJkIHN5c3RlbSBsaWJ0aHJlYWRfZGIgc3RpbGwgZ2V0cyBsb2FkZWQgZXZlbiB3 aXRoIHRoaXMgb3B0aW9uIG9mZi5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxp Y2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkgICBOVUxMLCBzaG93X2F1 dG9fbG9hZF90aHJlYWRfZGIsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwK LSsJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfY21kICgi bGlidGhyZWFkLWRiIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiLAot KwkgICBfKCJQcmludCB0aGUgbGlzdCBvZiBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhy ZWFkX2RiLlxuXAotK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiKSwKLSsJICAg YXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotKwotICAgLyogQWRkIG91cnNlbHZlcyB0 byBvYmpmaWxlIGV2ZW50IGNoYWluLiAgKi8KLSAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmls ZSAodGhyZWFkX2RiX25ld19vYmpmaWxlKTsKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L21haW4uYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1NzQzNzUwMyArMDIwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIw MAotQEAgLTk0NSw4ICs5NDUsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgLyog U2tpcCBhdXRvLWxvYWRpbmcgc2VjdGlvbi1zcGVjaWZpZWQgc2NyaXB0cyB1bnRpbCB3ZSd2ZSBz b3VyY2VkCi0gICAgICBsb2NhbF9nZGJpbml0ICh3aGljaCBpcyBvZnRlbiB1c2VkIHRvIGF1Z21l bnQgdGhlIHNvdXJjZSBzZWFyY2gKLSAgICAgIHBhdGgpLiAgKi8KLS0gIHNhdmVfYXV0b19sb2Fk ID0gZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKLS0gIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAw OwotKyAgc2F2ZV9hdXRvX2xvYWQgPSBnbG9iYWxfYXV0b19sb2FkOwotKyAgZ2xvYmFsX2F1dG9f bG9hZCA9IDA7Ci0gCi0gICBpZiAoZXhlY2FyZyAhPSBOVUxMCi0gICAgICAgJiYgc3ltYXJnICE9 IE5VTEwKLUBAIC0xMDIyLDE0ICsxMDIyLDI0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp Ci0gCi0gICAvKiBSZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9y eSwgKmlmKiBpdCBpc24ndAotICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZp bGUgKGl0IHNob3VsZCBleGlzdCwgYWxzbykuICAqLwotLSAgaWYgKGxvY2FsX2dkYmluaXQgJiYg IWluaGliaXRfZ2RiaW5pdCkKLS0gICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3Jp cHQsIGxvY2FsX2dkYmluaXQsIDAsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rICBpZiAobG9jYWxfZ2Ri aW5pdCkKLSsgICAgewotKyAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0g Z2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKLSsKLSsgICAgICBpZiAoIWluaGliaXRfZ2Ri aW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsJewotKwkgIGF1dG9fbG9hZF9sb2Nh bF9nZGJpbml0X2xvYWRlZCA9IDE7Ci0rCi0rCSAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJj ZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsCi0rCQkJCVJFVFVSTl9NQVNLX0FMTCk7Ci0rCX0K LSsgICAgfQotIAotICAgLyogTm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQg YW5kIGFsbCAtZCBvcHRpb25zIGhhdmUgYmVlbgotICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVh ZCBhbnkgc2NyaXB0cyBtZW50aW9uZWQgaW4gU1lNQVJHLgotICAgICAgV2Ugd2FpdCB1bnRpbCBu b3cgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWRkIHRvIHRoZSBzb3VyY2Ugc2VhcmNoCi0gICAg ICBwYXRoIGluIGxvY2FsX2dkYmluaXQuICAqLwotLSAgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9 IHNhdmVfYXV0b19sb2FkOwotKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOwot ICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAob2JqZmlsZSk7Ci0gCi1AQCAtMTE5Niw3ICsxMjA2LDcgQEAgQXQgc3RhcnR1cCwgR0RC IHJlYWRzIHRoZSBmb2xsb3dpbmcgaW5pdAotICIpLCBob21lX2dkYmluaXQpOwotICAgaWYgKGxv Y2FsX2dkYmluaXQpCi0gICAgIGZwcmludGZfdW5maWx0ZXJlZCAoc3RyZWFtLCBfKCJcCi0tICAg KiBsb2NhbCBpbml0IGZpbGU6IC4vJXNcblwKLSsgICAqIGxvY2FsIGluaXQgZmlsZSAoc2VlIGFs c28gJ3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcpOiAuLyVzXG5cCi0gIiksIGxvY2FsX2dk YmluaXQpOwotICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCi0gRm9yIG1vcmUgaW5mb3JtYXRp b24sIHR5cGUgXCJoZWxwXCIgZnJvbSB3aXRoaW4gR0RCLCBvciBjb25zdWx0IHRoZVxuXAotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQt MTggMDA6NDQ6MjYuOTI4NDM3NTc3ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCi1AQCAt MTAzNCw2ICsxMDM0LDcgQEAgWW91IGNhbiBydW4gQHZhbHVle0dEQk59IGluIHZhcmlvdXMgYWx0 ZQotIGJhdGNoIG1vZGUgb3IgcXVpZXQgbW9kZS4KLSAKLSBAdGFibGUgQGNvZGUKLStAYW5jaG9y ey1ueH0KLSBAaXRlbSAtbngKLSBAaXRlbXggLW4KLSBAY2luZGV4IEBjb2Rley0tbnh9Ci1AQCAt MTI2NSw2ICsxMjY2LDcgQEAgSGVyZSdzIHRoZSBkZXNjcmlwdGlvbiBvZiB3aGF0IEB2YWx1ZXtH RAotIFNldHMgdXAgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgYXMgc3BlY2lmaWVkIGJ5IHRoZSBj b21tYW5kIGxpbmUKLSAoQHB4cmVme01vZGUgT3B0aW9ucywgaW50ZXJwcmV0ZXJ9KS4KLSAKLStA YW5jaG9ye09wdGlvbiAtaW5pdC1ldmFsLWNvbW1hbmR9Ci0gQGl0ZW0KLSBFeGVjdXRlcyBjb21t YW5kcyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9IGFuZAot IEBzYW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3VhbGx5IHlv dSBzaG91bGQgdXNlIHRoZQotQEAgLTEyNzksNiArMTI4MSw3IEBAIHVzZWQgd2hlbiBidWlsZGlu ZyBAdmFsdWV7R0RCTn07IEBweHJlZnsKLSAgLFN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gYW5k IHNldHRpbmdzfSkgYW5kIGV4ZWN1dGVzIGFsbCB0aGUgY29tbWFuZHMgaW4KLSB0aGF0IGZpbGUu Ci0gCi0rQGFuY2hvcntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9Ci0gQGl0ZW0KLSBSZWFkcyB0 aGUgaW5pdCBmaWxlIChpZiBhbnkpIGluIHlvdXIgaG9tZSBkaXJlY3RvcnlAZm9vdG5vdGV7T24K LSBET1MvV2luZG93cyBzeXN0ZW1zLCB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgdGhlIG9uZSBwb2lu dGVkIHRvIGJ5IHRoZQotQEAgLTEyODgsOSArMTI5MSwxMiBAQCB0aGF0IGZpbGUuCi0gQGl0ZW0K LSBQcm9jZXNzZXMgY29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIG9wZXJhbmRzLgotIAotK0BhbmNo b3J7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0KLSBA aXRlbQotIFJlYWRzIGFuZCBleGVjdXRlcyB0aGUgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgKGlm IGFueSkgaW4gdGhlIGN1cnJlbnQKLS13b3JraW5nIGRpcmVjdG9yeS4gIFRoaXMgaXMgb25seSBk b25lIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcwotK3dvcmtpbmcgZGlyZWN0b3J5IGFzIGxv bmcgYXMgQHNhbXB7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fSBpcyBzZXQgdG8KLStAc2Ft cHtvbn0gKEBweHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fSkuCi0rVGhp cyBpcyBvbmx5IGRvbmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCi0gZGlmZmVyZW50IGZy b20geW91ciBob21lIGRpcmVjdG9yeS4gIFRodXMsIHlvdSBjYW4gaGF2ZSBtb3JlIHRoYW4gb25l Ci0gaW5pdCBmaWxlLCBvbmUgZ2VuZXJpYyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5LCBhbmQgYW5v dGhlciwgc3BlY2lmaWMKLSB0byB0aGUgcHJvZ3JhbSB5b3UgYXJlIGRlYnVnZ2luZywgaW4gdGhl IGRpcmVjdG9yeSB3aGVyZSB5b3UgaW52b2tlCi1AQCAtMTMwNiw3ICsxMzEyLDcgQEAgSWYgeW91 IHdpc2ggdG8gZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nCi0geW91IG11c3QgZG8gc29tZXRoaW5n IGxpa2UgdGhlIGZvbGxvd2luZzoKLSAKLSBAc21hbGxleGFtcGxlCi0tJCBnZGIgLWlleCAic2V0 IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0rJCBnZGIgLWlleCAic2V0IGF1dG8t bG9hZCBweXRob24tc2NyaXB0cyBvZmYiIG15cHJvZ3JhbQotIEBlbmQgc21hbGxleGFtcGxlCi0g Ci0gT3B0aW9uIEBzYW1wey1leH0gZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRp bmcgaXMgdGhlbiB0dXJuZWQKLUBAIC0yODkxLDYgKzI4OTcsNyBAQCBwcm9ncmFtcyB3aXRoIG11 bHRpcGxlIHRocmVhZHMuCi0gQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5nIFdhdGNocG9p bnRzfSwgZm9yIGluZm9ybWF0aW9uIGFib3V0Ci0gd2F0Y2hwb2ludHMgaW4gcHJvZ3JhbXMgd2l0 aCBtdWx0aXBsZSB0aHJlYWRzLgotIAotK0BhbmNob3J7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gt cGF0aH0KLSBAdGFibGUgQGNvZGUKLSBAa2luZGV4IHNldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBh dGgKLSBAY2luZGV4IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9Ci1AQCAtMjkw NSwxMSArMjkxMiwxNSBAQCBtYWNyby4KLSBPbiBAc2N7Z251fS9MaW51eCBhbmQgU29sYXJpcyBz eXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKLSBAY29kZXtsaWJ0aHJlYWRf ZGJ9IGxpYnJhcnkgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRocmVhZHMgaW4gdGhlCi0g aW5mZXJpb3IgcHJvY2Vzcy4gIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSBAc2FtcHtsaWJ0aHJlYWQt ZGItc2VhcmNoLXBhdGh9Ci0tdG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LgotK3RvIGZpbmQg QGNvZGV7bGlidGhyZWFkX2RifS4gIEB2YWx1ZXtHREJOfSBhbHNvIGNvbnN1bHRzIGZpcnN0IGlm IGluZmVyaW9yCi0rc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGxvYWRpbmcgaXMg ZW5hYmxlZAotK2J5IEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifSAoQHB4cmVme2xp YnRocmVhZF9kYi5zby4xIGZpbGV9KS4KLSAKLSBBIHNwZWNpYWwgZW50cnkgQHNhbXB7JHNkaXJ9 IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9Ci0gcmVmZXJzIHRvIHRoZSBkZWZh dWx0IHN5c3RlbSBkaXJlY3RvcmllcyB0aGF0IGFyZQotLW5vcm1hbGx5IHNlYXJjaGVkIGZvciBs b2FkaW5nIHNoYXJlZCBsaWJyYXJpZXMuCi0rbm9ybWFsbHkgc2VhcmNoZWQgZm9yIGxvYWRpbmcg c2hhcmVkIGxpYnJhcmllcy4gIFRoZSBAc2FtcHskc2Rpcn0gZW50cnkKLStpcyB0aGUgb25seSBr aW5kIG5vdCBuZWVkaW5nIHRvIGJlIGVuYWJsZWQgYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGJ9Ci0rKEBweHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSkuCi0gCi0gQSBzcGVj aWFsIGVudHJ5IEBzYW1weyRwZGlyfSBmb3IgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRo fQotIHJlZmVycyB0byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggQGNvZGV7bGlicHRocmVhZH0K LUBAIC0yMDMyMCw2ICsyMDMzMSw3IEBAIGRlc2NyaWJlZCBoZXJlLgotICogU2NyZWVuIFNpemU6 OiAgICAgICAgICAgICAgICAgU2NyZWVuIHNpemUKLSAqIE51bWJlcnM6OiAgICAgICAgICAgICAg ICAgICAgIE51bWJlcnMKLSAqIEFCSTo6ICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3Vy aW5nIHRoZSBjdXJyZW50IEFCSQotKyogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0 b21hdGljYWxseSBsb2FkaW5nIGFzc29jaWF0ZWQgZmlsZXMKLSAqIE1lc3NhZ2VzL1dhcm5pbmdz OjogICAgICAgICAgIE9wdGlvbmFsIHdhcm5pbmdzIGFuZCBtZXNzYWdlcwotICogRGVidWdnaW5n IE91dHB1dDo6ICAgICAgICAgICAgT3B0aW9uYWwgbWVzc2FnZXMgYWJvdXQgaW50ZXJuYWwgaGFw cGVuaW5ncwotICogT3RoZXIgTWlzYyBTZXR0aW5nczo6ICAgICAgICAgT3RoZXIgTWlzY2VsbGFu ZW91cyBTZXR0aW5ncwotQEAgLTIwNzQ1LDYgKzIwNzU3LDIyNyBAQCBXaXRoIG5vIGFyZ3VtZW50 LCBzaG93IHRoZSBsaXN0IG9mIHN1cHBvCi0gU2V0IHRoZSBjdXJyZW50IENAdHsrK30gQUJJIHRv IEB2YXJ7YWJpfSwgb3IgcmV0dXJuIHRvIGF1dG9tYXRpYyBkZXRlY3Rpb24uCi0gQGVuZCB0YWJs ZQotIAotK0Bub2RlIEF1dG8tbG9hZGluZwotK0BzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGlu ZyBhc3NvY2lhdGVkIGZpbGVzCi0rQGNpbmRleCBhdXRvLWxvYWRpbmcKLSsKLStAdmFsdWV7R0RC Tn0gc29tZXRpbWVzIHJlYWRzIGZpbGVzIHdpdGggY29tbWFuZHMgYW5kIHNldHRpbmdzIGF1dG9t YXRpY2FsbHksCi0rd2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHRvbGQgc28gYnkgdGhlIHVzZXIu ICBXZSBjYWxsIHRoaXMgZmVhdHVyZQotK0BkZm57YXV0by1sb2FkaW5nfS4gIFdoaWxlIGF1dG8t bG9hZGluZyBpcyB1c2VmdWwgZm9yIGF1dG9tYXRpY2FsbHkgYWRhcHRpbmcKLStAdmFsdWV7R0RC Tn0gdG8gdGhlIG5lZWRzIG9mIHlvdXIgcHJvamVjdCwgaXQgY2FuIHNvbWV0aW1lcyBwcm9kdWNl IHVuZXhwZWN0ZWQKLStyZXN1bHRzIG9yIGludHJvZHVjZSBzZWN1cml0eSByaXNrcyAoZS5nLiwg aWYgdGhlIGZpbGUgY29tZXMgZnJvbSB1bnRydXN0ZWQKLStzb3VyY2VzKS4KLSsKLStGb3IgdGhl c2UgcmVhc29ucywgQHZhbHVle0dEQk59IGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBvcHRpb25zIHRv IGxldCB5b3UKLStjb250cm9sIHdoZW4gdG8gYXV0by1sb2FkIGZpbGVzIGFuZCB3aGljaCBmaWxl cyBzaG91bGQgYmUgYXV0by1sb2FkZWQuCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQg YXV0by1sb2FkIG9mZn0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgb2ZmCi0rQGl0ZW0gc2V0IGF1 dG8tbG9hZCBvZmYKLStHbG9iYWxseSBkaXNhYmxlIGxvYWRpbmcgb2YgYWxsIGF1dG8tbG9hZGVk IGZpbGVzLgotK1lvdSBtYXkgd2FudCB0byB1c2UgdGhpcyBjb21tYW5kIHdpdGggdGhlIEBzYW1w ey1pZXh9IG9wdGlvbgotKyhAcHhyZWZ7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0pIHN1Y2gg YXM6Ci0rQHNtYWxsZXhhbXBsZQotKyQgQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBvZmYi IHVudHJ1c3RlZC1leGVjdXRhYmxlIGNvcmVmaWxlfQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0r QmUgYXdhcmUgdGhhdCBzeXN0ZW0gaW5pdCBmaWxlIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmln dXJhdGlvbn0pCi0rYW5kIGluaXQgZmlsZXMgZnJvbSB5b3VyIGhvbWUgZGlyZWN0b3J5IChAcHhy ZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkKLStzdGlsbCBnZXQgcmVhZCAoYXMgdGhleSBj b21lIGZyb20gZ2VuZXJhbGx5IHRydXN0ZWQgZGlyZWN0b3JpZXMpLgotK1RvIHByZXZlbnQgQHZh bHVle0dEQk59IGZyb20gYXV0by1sb2FkaW5nIGV2ZW4gdGhvc2UgaW5pdCBmaWxlcywgdXNlIHRo ZQotK0BvcHRpb257LW54fSBvcHRpb24gKEBweHJlZntNb2RlIE9wdGlvbnN9KSwgaW4gYWRkaXRp b24gdG8KLStAY29kZXtzZXQgYXV0by1sb2FkIG5vfS4KLSsKLStAYW5jaG9ye3Nob3cgYXV0by1s b2FkfQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQKLStAaXRlbSBzaG93IGF1dG8tbG9hZAotK1No b3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9 IGZpbGUocykgaXMgZW5hYmxlZAotK29yIGRpc2FibGVkLgotKwotK0BzbWFsbGV4YW1wbGUKLSso Z2RiKSBzaG93IGF1dG8tbG9hZAotK2dkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBvbi4KLStsaWJ0aHJlYWQtZGI6ICBB dXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgotK2xv Y2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVu dCBkaXJlY3RvcnkgaXMgb24uCi0rcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0 aG9uIHNjcmlwdHMgaXMgb24uCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAYW5jaG9ye2luZm8g YXV0by1sb2FkfQotK0BraW5kZXggaW5mbyBhdXRvLWxvYWQKLStAaXRlbSBpbmZvIGF1dG8tbG9h ZAotK1ByaW50IHdoZXRoZXIgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykg aGF2ZSBiZWVuIGF1dG8tbG9hZGVkIG9yCi0rbm90LgotKwotK0BzbWFsbGV4YW1wbGUKLSsoZ2Ri KSBpbmZvIGF1dG8tbG9hZAotK2dkYi1zY3JpcHRzOgotK0xvYWRlZCAgU2NyaXB0Ci0rWWVzICAg ICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYgotK2xpYnRocmVhZC1kYjogIE5vIGF1dG8tbG9h ZGVkIGxpYnRocmVhZC1kYi4KLStsb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAi L2hvbWUvdXNlci9nZGIvLmdkYmluaXQiIGhhcyBiZWVuIGxvYWRlZC4KLStweXRob24tc2NyaXB0 czoKLStMb2FkZWQgIFNjcmlwdAotK1llcyAgICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weQot K0BlbmQgc21hbGxleGFtcGxlCi0rQGVuZCB0YWJsZQotKwotK1RoZXNlIGFyZSB2YXJpb3VzIGtp bmRzIG9mIGZpbGVzIEB2YWx1ZXtHREJOfSBjYW4gYXV0b21hdGljYWxseSBsb2FkOgotKwotK0Bp dGVtaXplIEBidWxsZXQKLStAaXRlbQotK0B4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9LCBjb250 cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQGl0ZW0KLStA eHJlZntvYmpmaWxlLWdkYi5nZGIgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1s b2FkIGdkYi1zY3JpcHRzfS4KLStAaXRlbQotK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNl Y3Rpb259LAotK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz fS4KLStAaXRlbQotK0B4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnl9LAot K2NvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0BpdGVt Ci0rQHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQg YXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0rQGVuZCBpdGVtaXplCi0rCi0rVGhlc2UgYXJlIEB2 YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzIGZvciB0aGUgYXV0by1sb2FkaW5nOgotKwotK0Bt dWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjUgLjUKLStAaXRlbSBAeHJlZntzZXQgYXV0by1s b2FkIG9mZn0uCi0rQHRhYiBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4KLStAaXRlbSBA eHJlZntzaG93IGF1dG8tbG9hZH0uCi0rQHRhYiBTaG93IHNldHRpbmcgb2YgYWxsIGtpbmRzIG9m IGZpbGVzLgotK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkfS4KLStAdGFiIFNob3cgc3RhdGUg b2YgYWxsIGtpbmRzIG9mIGZpbGVzLgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgZ2RiLXNj cmlwdHN9LgotK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4K LStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCi0rQHRhYiBTaG93IHNl dHRpbmcgb2YgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRlbSBAeHJlZntpbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCi0rQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJO fSBjb21tYW5kIHNjcmlwdHMuCi0rQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2Ny aXB0c30uCi0rQHRhYiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCi0r QGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgotK0B0YWIgU2hvdyBz ZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStAaXRlbSBAeHJlZntpbmZv IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtH REJOfSBQeXRob24gc2NyaXB0cy4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdk YmluaXR9LgotK0B0YWIgQ29udHJvbCBmb3IgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVj dG9yeS4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KLStAdGFi IFNob3cgc2V0dGluZyBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotK0Bp dGVtIEB4cmVme2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0B0YWIgU2hvdyBzdGF0 ZSBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotK0BpdGVtIEB4cmVme3Nl dCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KLStAdGFiIENvbnRyb2wgZm9yIHRocmVhZCBkZWJ1 Z2dpbmcgbGlicmFyeS4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9 LgotK0B0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAaXRl bSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIgU2hvdyBzdGF0ZSBv ZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCi0rQGVuZCBtdWx0aXRhYmxlCi0rCi0rQG1lbnUK LSsqIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9p bmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQotKyogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6 ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0K LSsqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9p bmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQotK0B4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9Lgot K0BlbmQgbWVudQotKwotK0Bub2RlIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkK LStAc3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgaW5pdCBmaWxlIGluIHRoZSBjdXJy ZW50IGRpcmVjdG9yeQotK0BjaW5kZXggYXV0by1sb2FkaW5nIGluaXQgZmlsZSBpbiB0aGUgY3Vy cmVudCBkaXJlY3RvcnkKLSsKLStCeSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0gcmVhZHMgYW5kIGV4 ZWN1dGVzIHRoZSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzCi0rZnJvbSBpbml0IGZpbGUg KGlmIGFueSkgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCi0rc2VlIEByZWZ7SW5p dCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0uCi0rCi0rQHRh YmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRl eCBzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStAaXRlbSBzZXQgYXV0by1sb2FkIGxvY2Fs LWdkYmluaXQgW29ufG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9m IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKLSsoQHB4cmVme1NlcXVlbmNlc30pIGZvdW5k IGluIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rCi0rQGFuY2hvcntzaG93 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbG9jYWwt Z2RiaW5pdAotK0BpdGVtIHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStTaG93IHdoZXRo ZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0 IGZpbGUgaW4gdGhlCi0rY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4K LSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRleCBpbmZv IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ci0rQGl0ZW0gaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2Ri aW5pdAotK1ByaW50IHdoZXRoZXIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmcm9tIGlu aXQgZmlsZSBpbiB0aGUKLStjdXJyZW50IGRpcmVjdG9yeSBoYXZlIGJlZW4gYXV0by1sb2FkZWQu Ci0rQGVuZCB0YWJsZQotKwotK0Bub2RlIGxpYnRocmVhZF9kYi5zby4xIGZpbGUKLStAc3Vic2Vj dGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5Ci0rQGNp bmRleCBhdXRvLWxvYWRpbmcgbGlidGhyZWFkX2RiLnNvLjEKLSsKLStUaGlzIGZlYXR1cmUgaXMg Y3VycmVudGx5IHByZXNlbnQgb25seSBvbiBAc2N7Z251fS9MaW51eCBuYXRpdmUgaG9zdHMuCi0r Ci0rQHZhbHVle0dEQk59IHJlYWRzIGluIHNvbWUgY2FzZXMgdGhyZWFkIGRlYnVnZ2luZyBsaWJy YXJ5IGZyb20gcGxhY2VzIHNwZWNpZmljCi0rdG8gdGhlIGluZmVyaW9yIChAcHhyZWZ7c2V0IGxp YnRocmVhZC1kYi1zZWFyY2gtcGF0aH0pLgotKwotK1RoZSBzcGVjaWFsIEBzYW1we2xpYnRocmVh ZC1kYi1zZWFyY2gtcGF0aH0gZW50cnkgQHNhbXB7JHNkaXJ9IGlzIHByb2Nlc3NlZAotK3dpdGhv dXQgY2hlY2tpbmcgdGhpcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0gc3dpdGNo IGFzIHN5c3RlbQotK2xpYnJhcmllcyBoYXZlIHRvIGJlIHRydXN0ZWQgaW4gZ2VuZXJhbC4gIElu IGFsbCBvdGhlciBjYXNlcyBvZgotK0BzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50 cmllcyBAdmFsdWV7R0RCTn0gY2hlY2tzIGZpcnN0IGlmIEBzYW1we3NldAotK2F1dG8tbG9hZCBs aWJ0aHJlYWQtZGJ9IGlzIGVuYWJsZWQgYmVmb3JlIHRyeWluZyB0byBvcGVuIHN1Y2ggdGhyZWFk IGRlYnVnZ2luZwotK2xpYnJhcnkuCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0 by1sb2FkIGxpYnRocmVhZC1kYn0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRi Ci0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgW29ufG9mZl0KLStFbmFibGUgb3Ig ZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1 Z2dpbmcgbGlicmFyeS4KLSsKLStAYW5jaG9ye3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0K LStAa2luZGV4IHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK0BpdGVtIHNob3cgYXV0by1s b2FkIGxpYnRocmVhZC1kYgotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Ig c3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGlzCi0rZW5hYmxlZCBvciBkaXNhYmxl ZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLStAa2luZGV4IGlu Zm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK0BpdGVtIGluZm8gYXV0by1sb2FkIGxpYnRocmVh ZC1kYgotK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgdGhy ZWFkIGRlYnVnZ2luZyBsaWJyYXJpZXMgYW5kCi0rZm9yIGVhY2ggc3VjaCBsaWJyYXJ5IHByaW50 IGxpc3Qgb2YgaW5mZXJpb3IgQHZhcntwaWR9cyB1c2luZyBpdC4KLStAZW5kIHRhYmxlCi0rCi0r QG5vZGUgb2JqZmlsZS1nZGIuZ2RiIGZpbGUKLStAc3Vic2VjdGlvbiBUaGUgQGZpbGV7QHZhcntv YmpmaWxlfS1nZGIuZ2RifSBmaWxlCi0rQGNpbmRleCBhdXRvLWxvYWRpbmcgQGZpbGV7QHZhcntv YmpmaWxlfS1nZGIuZ2RifQotKwotK0B2YWx1ZXtHREJOfSB0cmllcyB0byBsb2FkIGFuIEBmaWxl e0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0gZmlsZSBjb250YWluaW5nCi0rY2FubmVkIHNlcXVlbmNl cyBvZiBjb21tYW5kcyAoQHB4cmVme1NlcXVlbmNlc30pLCBhcyBsb25nIGFzIEBzYW1we3NldAot K2F1dG8tbG9hZCBnZGItc2NyaXB0c30gaXMgc2V0IHRvIEBzYW1we29ufS4KLSsKLStGb3IgbW9y ZSBiYWNrZ3JvdW5kIHJlZmVyIHRvIHRoZSBzaW1pbGFyIFB5dGhvbiBzY3JpcHRzIGF1dG8tbG9h ZGluZwotK2Rlc2NyaXB0aW9uIChAcHhyZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0pLgotKwotK0B0 YWJsZSBAY29kZQotK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KLStAa2luZGV4 IHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStAaXRlbSBzZXQgYXV0by1sb2FkIGdkYi1zY3Jp cHRzIFtvbnxvZmZdCi0rRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBjYW5u ZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMuCi0rCi0rQGFuY2hvcntzaG93IGF1dG8t bG9hZCBnZGItc2NyaXB0c30KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCi0r QGl0ZW0gc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStTaG93IHdoZXRoZXIgYXV0by1sb2Fk aW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkIG9y Ci0rZGlzYWJsZWQuCi0rCi0rQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30KLStA a2luZGV4IGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzCi0rQGNpbmRleCBwcmludCBsaXN0IG9m IGF1dG8tbG9hZGVkIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cwotK0BpdGVt IGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCi0rUHJpbnQgdGhlIGxp c3Qgb2YgYWxsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB0aGF0IEB2YWx1 ZXtHREJOfQotK2F1dG8tbG9hZGVkLgotK0BlbmQgdGFibGUKLSsKLStJZiBAdmFye3JlZ2V4cH0g aXMgc3VwcGxpZWQgb25seSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgd2l0 aAotK21hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgotKwotIEBub2RlIE1lc3NhZ2VzL1dhcm5p bmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCi0gCi1AQCAtMjE2 MTYsNyArMjE4NDksNyBAQCBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHdoZW4gQHZhbHVle0dEQk59 Ci0gQG1lbnUKLSAqIFB5dGhvbiBDb21tYW5kczo6ICAgICAgICAgICAgIEFjY2Vzc2luZyBQeXRo b24gZnJvbSBAdmFsdWV7R0RCTn0uCi0gKiBQeXRob24gQVBJOjogICAgICAgICAgICAgICAgICBB Y2Nlc3NpbmcgQHZhbHVle0dEQk59IGZyb20gUHl0aG9uLgotLSogQXV0by1sb2FkaW5nOjogICAg ICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgotKyogUHl0aG9u IEF1dG8tbG9hZGluZzo6ICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2Rl LgotICogUHl0aG9uIG1vZHVsZXM6OiAgICAgICAgICAgICAgUHl0aG9uIG1vZHVsZXMgcHJvdmlk ZWQgYnkgQHZhbHVle0dEQk59LgotIEBlbmQgbWVudQotIAotQEAgLTIyNzk5LDcgKzIzMDMyLDcg QEAgVGhpcyBwcmFjdGljZSB3aWxsIGVuYWJsZSBAdmFsdWV7R0RCTn0gdAotIHlvdXIgcHJldHR5 LXByaW50ZXJzIGF0IHRoZSBzYW1lIHRpbWUsIGJlY2F1c2UgdGhleSB3aWxsIGhhdmUKLSBkaWZm ZXJlbnQgbmFtZXMuCi0gCi0tWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhy ZWZ7QXV0by1sb2FkaW5nfSkgc3VjaCB0aGF0IGl0Ci0rWW91IHNob3VsZCB3cml0ZSBhdXRvLWxv YWRlZCBjb2RlIChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pIHN1Y2ggdGhhdCBpdAotIGNh biBiZSBldmFsdWF0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCBjaGFuZ2luZyBpdHMgbWVhbmlu Zy4gIEFuCi0gaWRlYWwgYXV0by1sb2FkIGZpbGUgd2lsbCBjb25zaXN0IHNvbGVseSBvZiBAY29k ZXtpbXBvcnR9cyBvZiB5b3VyCi0gcHJpbnRlciBtb2R1bGVzLCBmb2xsb3dlZCBieSBhIGNhbGwg dG8gYSByZWdpc3RlciBwcmV0dHktcHJpbnRlcnMgd2l0aAotQEAgLTIzNzYwLDcgKzIzOTkzLDcg QEAgVGhlIGZvbGxvd2luZyBvYmpmaWxlLXJlbGF0ZWQgZnVuY3Rpb25zCi0gCi0gQGZpbmRleCBn ZGIuY3VycmVudF9vYmpmaWxlCi0gQGRlZnVuIGdkYi5jdXJyZW50X29iamZpbGUgKCkKLS1XaGVu IGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntBdXRvLWxvYWRpbmd9KSwgQHZh bHVle0dEQk59Ci0rV2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0IChAcHhyZWZ7UHl0 aG9uIEF1dG8tbG9hZGluZ30pLCBAdmFsdWV7R0RCTn0KLSBzZXRzIHRoZSBgYGN1cnJlbnQgb2Jq ZmlsZScnIHRvIHRoZSBjb3JyZXNwb25kaW5nIG9iamZpbGUuICBUaGlzCi0gZnVuY3Rpb24gcmV0 dXJucyB0aGUgY3VycmVudCBvYmpmaWxlLiAgSWYgdGhlcmUgaXMgbm8gY3VycmVudCBvYmpmaWxl LAotIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtOb25lfS4KLUBAIC0yNDY3MSw5ICsyNDkw NCw5IEBAIHJlc29sdmUgdGhpcyB0byB0aGUgbGF6eSBzdHJpbmcncyBjaGFyYWMKLSB3cml0YWJs ZS4KLSBAZW5kIGRlZnZhcgotIAotLUBub2RlIEF1dG8tbG9hZGluZwotLUBzdWJzZWN0aW9uIEF1 dG8tbG9hZGluZwotLUBjaW5kZXggYXV0by1sb2FkaW5nLCBQeXRob24KLStAbm9kZSBQeXRob24g QXV0by1sb2FkaW5nCi0rQHN1YnNlY3Rpb24gUHl0aG9uIEF1dG8tbG9hZGluZwotK0BjaW5kZXgg UHl0aG9uIGF1dG8tbG9hZGluZwotIAotIFdoZW4gYSBuZXcgb2JqZWN0IGZpbGUgaXMgcmVhZCAo Zm9yIGV4YW1wbGUsIGR1ZSB0byB0aGUgQGNvZGV7ZmlsZX0KLSBjb21tYW5kLCBvciBiZWNhdXNl IHRoZSBpbmZlcmlvciBoYXMgbG9hZGVkIGEgc2hhcmVkIGxpYnJhcnkpLAotQEAgLTI0NjkzLDMy ICsyNDkyNiwzNSBAQCBBdXRvLWxvYWRpbmcgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsCi0g YW5kIHRoZSBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgY2FuIGJlIHByaW50ZWQuCi0gCi0g QHRhYmxlIEBjb2RlCi0tQGtpbmRleCBzZXQgYXV0by1sb2FkLXNjcmlwdHMKLS1AaXRlbSBzZXQg YXV0by1sb2FkLXNjcmlwdHMgW3llc3xub10KLStAYW5jaG9ye3NldCBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHN9Ci0rQGtpbmRleCBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0rQGl0ZW0g c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbb258b2ZmXQotIEVuYWJsZSBvciBkaXNhYmxl IHRoZSBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuCi0gCi0tQGtpbmRleCBzaG93IGF1 dG8tbG9hZC1zY3JpcHRzCi0tQGl0ZW0gc2hvdyBhdXRvLWxvYWQtc2NyaXB0cwotK0BhbmNob3J7 c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cwotK0BpdGVtIHNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0gU2hv dyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBlbmFibGVkIG9yIGRp c2FibGVkLgotIAotLUBraW5kZXggaW5mbyBhdXRvLWxvYWQtc2NyaXB0cwotLUBjaW5kZXggcHJp bnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzCi0tQGl0ZW0gaW5mbyBhdXRvLWxvYWQtc2Ny aXB0cyBbQHZhcntyZWdleHB9XQotLVByaW50IHRoZSBsaXN0IG9mIGFsbCBzY3JpcHRzIHRoYXQg QHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHN9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cwotK0BjaW5k ZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cwotK0BpdGVtIGluZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCi0rUHJpbnQgdGhlIGxpc3Qg b2YgYWxsIFB5dGhvbiBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgotIAot LUFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQg aW4KLStBbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2YgUHl0aG9uIHNjcmlwdHMgdGhhdCB3ZXJl IG1lbnRpb25lZCBpbgotIHRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5k IHdlcmUgbm90IGZvdW5kCi0gKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSku Ci0gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hl biBAdmFsdWV7R0RCTn0KLSB0cmllcyB0byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5 IGJlIG1hbnkgb2YgdGhlbSwgYW5kIHByaW50aW5nCi0gYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFj aCBvbmUgaXMgcHJvYmxlbWF0aWMuCi0gCi0tSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9u bHkgc2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgotK0lmIEB2YXJ7cmVn ZXhwfSBpcyBzdXBwbGllZCBvbmx5IFB5dGhvbiBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMg YXJlIHByaW50ZWQuCi0gCi0gRXhhbXBsZToKLSAKLSBAc21hbGxleGFtcGxlCi0tKGdkYikgaW5m byBhdXRvLWxvYWQtc2NyaXB0cwotKyhnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz Ci0gTG9hZGVkICBTY3JpcHQKLSBZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5Ci0gICAgICAg ICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKLUluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4 IDAwOjQ0OjI2Ljk1ODQzNzUwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5 dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAot QEAgLTMxLDI5ICszMSw1NiBAQAotIAotICNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSAK LS0vKiBOT1RFOiBJdCdzIHRyaXZpYWwgdG8gYWxzbyBzdXBwb3J0IGF1dG8tbG9hZGluZyBub3Jt YWwgZ2RiIHNjcmlwdHMuCi0tICAgVGhlcmUgaGFzIHlldCB0byBiZSBhIG5lZWQgc28gaXQncyBu b3QgaW1wbGVtZW50ZWQuICAqLwotLQotIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2Ny aXB0cyB0byBhdXRvLWxvYWQuCi0gICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZv by5zbywgbG9vayBmb3IgbGliZm9vLWdkYi5weS4gICovCi0gI2RlZmluZSBHREJQWV9BVVRPX0ZJ TEVfTkFNRSAiLWdkYi5weSIKLSAKLS0vKiBUaGUgc2VjdGlvbiB0byBsb29rIGZvciBzY3JpcHRz IChpbiBmaWxlIGZvcm1hdHMgdGhhdCBzdXBwb3J0IHNlY3Rpb25zKS4KLSsvKiBUaGUgc2VjdGlv biB0byBsb29rIGZvciBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyAoaW4gZmlsZSBmb3JtYXRz IHRoYXQKLSsgICBzdXBwb3J0IHNlY3Rpb25zKS4KLSAgICBFYWNoIGVudHJ5IGluIHRoaXMgc2Vj dGlvbiBpcyBhIGJ5dGUgb2YgdmFsdWUgMSwgYW5kIHRoZW4gdGhlIG51bC10ZXJtaW5hdGVkCi0g ICAgbmFtZSBvZiB0aGUgc2NyaXB0LiAgVGhlIHNjcmlwdCBuYW1lIG1heSBpbmNsdWRlIGEgZGly ZWN0b3J5LgotICAgIFRoZSBsZWFkaW5nIGJ5dGUgaXMgdG8gYWxsb3cgdXB3YXJkIGNvbXBhdGli bGUgZXh0ZW5zaW9ucy4gICovCi0gI2RlZmluZSBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSAiLmRl YnVnX2dkYl9zY3JpcHRzIgotIAotLS8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9k aXNhYmxlIGF1dG8tbG9hZGluZzoKLS0gICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCi0t ICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRz IHdoZW4gYW4gb2JqZmlsZQotLSAgIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLgotLSAgIEF0 IHRoZSBtb21lbnQsIHRoaXMgb25seSBhZmZlY3RzIHB5dGhvbiBzY3JpcHRzLCBidXQgdGhlcmUn cyBubyByZWFzb24KLS0gICBvbmUgY291bGRuJ3QgYWxzbyBoYXZlIG90aGVyIGtpbmRzIG9mIGF1 dG8tbG9hZGVkIHNjcmlwdHMsIGFuZCB0aGVyZSdzCi0tICAgbm8gcmVhc29uIHRvIGhhdmUgdGhl bSBlYWNoIGNvbnRyb2xsZWQgYnkgYSBzZXBhcmF0ZSBmbGFnLgotLSAgIFNvIHdlIGVsaWRlICJw eXRob24iIGZyb20gdGhlIG5hbWUgaGVyZSBhbmQgaW4gdGhlIG9wdGlvbi4KLS0gICBUaGUgZmFj dCB0aGF0IGl0IGxpdmVzIGhlcmUgaXMganVzdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAq LwotLXN0YXRpYyBpbnQgYXV0b19sb2FkX3NjcmlwdHMgPSAxOwotKy8qIFVzZXItc2V0dGFibGUg b3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0czoK LSsgICBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgotKyAgIFRoaXMgaXMgdHJ1 ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgUHl0aG9uIHNjcmlwdHMgd2hlbiBh bgotKyAgIG9iamZpbGUgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBp bnQgYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzID0gMTsKLSsKLStzdGF0aWMgdm9pZCBnZGJweV9s b2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJ CQkJCQlGSUxFICpmaWxlLAotKwkJCQkJCWNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSsKLSsvKiAi c2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyBjb25maWd1cmF0 aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX3B5dGhv bl9zY3JpcHRzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJCSAgICAg ICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAg ZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRz IGlzICVzLlxuIiksIHZhbHVlKTsKLSt9Ci0rCi0rLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFu Z3VhZ2UgZm9yIFB5dGhvbiBzY3JpcHRzLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHNj cmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uCi0rICA9IHsgR0RCUFlfQVVUT19G SUxFX05BTUUsIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgfTsKLSsKLSsvKiBX cmFwcGVyIG9mIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGZvciBzY3JpcHRfbGFu Z3VhZ2VfcHl0aG9uLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2dkYnB5X2xvYWRfYXV0b19zY3Jp cHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJ CQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyAqcHNwYWNlX2luZm87Ci0rCi0rICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhh c2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKLSsgICAgIGNh biBwcmludCBpdC4gICovCi0rICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2Rh dGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0rICBtYXliZV9hZGRfc2Ny aXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX3B5 dGhvbik7Ci0rCi0rICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwg ZmlsZSwgZmlsZW5hbWUpOwotK30KLSAKLSAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9C SkZJTEUuCi0gICAgU1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIgY29udGFpbmluZyBhIGxpc3Qg b2YgbnVsLXRlcm1pbmF0ZWQKLUBAIC0xMjEsNiArMTQ4LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3Nj cmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKLSAJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0p OwotIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7Ci0gCX0KLSsgICAgICBlbHNl Ci0rCXsKLSsJICBmdWxsX3BhdGggPSBOVUxMOwotKwotKwkgIC8qIFdlIGRvbid0IHRocm93IGFu IGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KLSsJICBpZiAoc2Ny aXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCi0rCSAgICB3YXJuaW5n IChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xu XAotK29mIGZpbGUgJXNcblwKLStVc2UgYGluZm8gYXV0by1sb2FkIHB5dGhvbiBbUkVHRVhQXScg dG8gbGlzdCB0aGVtLiIpLAotKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmls ZS0+bmFtZSk7Ci0rCX0KLSAKLSAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0 J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQotIAkgZm91bmQgZWl0aGVyLiAgV2Ug ZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCi1AQCAtMTI5LDI0 ICsxNjcsMTIgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgotIAot IAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCi0g Ci0tICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBm aWxlLAotLQkJCQkJb3BlbmVkID8gZnVsbF9wYXRoIDogTlVMTCk7Ci0rICAgICAgaW5faGFzaF90 YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCi0r CQkJCQkmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0gCi0tICAgICAgaWYgKCEgb3BlbmVkKQot LQl7Ci0tCSAgLyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxs IGRlYnVnZ2FibGUuICAqLwotLQkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQg KHBzcGFjZV9pbmZvKSkKLS0JICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlw dHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCi0tb2YgZmlsZSAlc1xuXAotLVVzZSBgaW5m byBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAotLQkJICAgICBH REJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0tCX0KLS0gICAgICBlbHNl Ci0tCXsKLS0JICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQg aXQuICAqLwotLQkgIGlmICghIGluX2hhc2hfdGFibGUpCi0tCSAgICBzb3VyY2VfcHl0aG9uX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOwotLQl9Ci0rICAg ICAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8K LSsgICAgICBpZiAob3BlbmVkICYmICFpbl9oYXNoX3RhYmxlKQotKwlzb3VyY2VfcHl0aG9uX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOwotIAotICAgICAg IGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgICAgfQotQEAgLTE4MSwzNiArMjA3LDc1IEBAIGF1 dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKLSAgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7Ci0gfQotIAotLS8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9C SkZJTEUuICAqLwotKy8qIExvYWQgYW55IFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBP QkpGSUxFLiAgKi8KLSAKLSB2b2lkCi0tbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0tICBpZiAoYXV0b19sb2FkX3Njcmlw dHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCkKLSsgIGlmIChhdXRvX2xvYWRfcHl0aG9uX3Nj cmlwdHMpCi0gICAgIHsKLS0gICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUs IEdEQlBZX0FVVE9fRklMRV9OQU1FKTsKLSsgICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQg KG9iamZpbGUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAgICAgICBhdXRvX2xvYWRfc2Vj dGlvbl9zY3JpcHRzIChvYmpmaWxlLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk7Ci0gICAgIH0K LSB9Ci0rCi0rLyogV3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4g ICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyAoY2hh ciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3sKLSsgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMg KHBhdHRlcm4sIGZyb21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0rfQotIAwKLSB2 b2lkCi0gZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCi0gewotKyAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmNtZDsKLSsgIGNoYXIgKmNtZF9uYW1lOwotKwotKyAgYWRkX3NldHNo b3dfYm9vbGVhbl9jbWQgKCJweXRob24tc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJICAg JmF1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAotK1NldCB0aGUgZGVidWdnZXIncyBiZWhh dmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCi0rU2hv dyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBz Y3JpcHRzLiIpLCBfKCJcCi0rSWYgZW5hYmxlZCwgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMg YXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotK2FuIGV4ZWN1dGFibGUgb3Ig c2hhcmVkIGxpYnJhcnkuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlv bnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19hdXRvX2xv YWRfcHl0aG9uX3NjcmlwdHMsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwK LSsJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0gICBhZGRfc2V0c2hv d19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKLS0JCQkg ICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKLS1TZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3Vy IHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCi0tU2hvdyB0aGUgZGVidWdn ZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLS1J ZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdn ZXIgcmVhZHNcblwKLS1hbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAotLQkJCSAg IE5VTEwsIE5VTEwsCi0tCQkJICAgJnNldGxpc3QsCi0tCQkJICAgJnNob3dsaXN0KTsKLSsJCQkg ICAmYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rU2V0IHRoZSBkZWJ1Z2dlcidzIGJl aGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIKLSsJCQkJCQkJ CSAiZGVwcmVjYXRlZC4iKSwKLSsJCQkgICBfKCJcCi0rU2hvdyB0aGUgZGVidWdnZXIncyBiZWhh dmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAiCi0rCQkJCQkJCQkg ImRlcHJlY2F0ZWQuIiksCi0rCQkJICAgTlVMTCwgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9u X3NjcmlwdHMsCi0rCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7Ci0rICBjbWRfbmFtZSA9ICJh dXRvLWxvYWQtc2NyaXB0cyI7Ci0rICBjbWQgPSBsb29rdXBfY21kICgmY21kX25hbWUsIHNldGxp c3QsICIiLCAtMSwgMSk7Ci0rICBkZXByZWNhdGVfY21kIChjbWQsICJzZXQgYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIik7Ci0rCi0rICAvKiBJdCBpcyBuZWVkZWQgYmVjYXVzZSBsb29rdXBfY21k IHVwZGF0ZXMgdGhlIENNRF9OQU1FIHBvaW50ZXIuICAqLwotKyAgY21kX25hbWUgPSAiYXV0by1s b2FkLXNjcmlwdHMiOwotKyAgY21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1lLCBzaG93bGlzdCwg IiIsIC0xLCAxKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNob3cgYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIik7Ci0rCi0rICBhZGRfY21kICgicHl0aG9uLXNjcmlwdHMiLCBjbGFzc19pbmZv LCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywKLSsJICAgXygiUHJpbnQgdGhlIGxpc3Qg b2YgYXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMuXG5cCi0rVXNhZ2U6IGluZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtSRUdFWFBdIiksCi0rCSAgIGF1dG9fbG9hZF9pbmZv X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGNtZCA9IGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlw dHMiLCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAotK1ByaW50IHRoZSBsaXN0 IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCBkZXByZWNhdGVkLiIpKTsK LSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7 Ci0gfQotIAotICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KLSAKLSB2b2lkCi0tbG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK2dkYnB5X2xv YWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7 Ci0gfQotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhv bi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTc5NDM3NDQ2 ICswMjAwCi1AQCAtNDEsNyArNDEsNyBAQCBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChz dHJ1Y3QgdHlwCi0gCi0gdm9pZCBwcmVzZXJ2ZV9weXRob25fdmFsdWVzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgaHRhYl90IGNvcGllZF90eXBlcyk7Ci0gCi0tdm9pZCBsb2FkX2F1dG9fc2Ny aXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotK3ZvaWQgZ2RicHlf bG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsK LSAKLSBpbnQgZ2RicHlfc2hvdWxkX3N0b3AgKHN0cnVjdCBicmVha3BvaW50X29iamVjdCAqYnBf b2JqKTsKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvaGVscC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTAxLTA0IDA5OjE3OjQ1LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9o ZWxwLmV4cAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk4MDQzNzQ0NCArMDIwMAotQEAgLTI0LDcgKzI0 LDcgQEAKLSBnZGJfc3RhcnQKLSAKLSAjIGZvcmNlIHRoZSBoZWlnaHQgb2YgdGhlIGRlYnVnZ2Vy IHRvIGJlIHByZXR0eSBsYXJnZSBzbyBubyBwYWdlcnMgZ2V0IHVzZWQKLS1nZGJfdGVzdF9ub19v dXRwdXQgInNldCBoZWlnaHQgNDAwIiAidGVzdCBzZXQgaGVpZ2h0IgotK2dkYl90ZXN0X25vX291 dHB1dCAic2V0IGhlaWdodCA1MDAiICJ0ZXN0IHNldCBoZWlnaHQiCi0gCi0gIyB1c2UgYSBsYXJn ZXIgZXhwZWN0IGlucHV0IGJ1ZmZlciBmb3IgbG9uZyBoZWxwIG91dHB1dHMuCi0gIyB0ZXN0IGhl bHAgYWRkLXN5bWJvbC1maWxlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxl LXNjcmlwdC5leHAJMjAxMi0wMS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlw dC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKLUBAIC00MCw3ICs0MCw3 IEBAIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdkYl9sb2FkICR7Ymlu ZmlsZX0KLSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi0tZ2RiX3Rlc3QgImlu Zm8gYXV0by1sb2FkLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKLStnZGJf dGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1n ZGIucHkuKiIKLSAKLSBpZiAhW3J1bnRvX21haW5dIHsKLSAgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gbWFpbiIKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0 LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAky MDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAgLTUyLDExICs1MiwxMSBAQCBn ZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSBnZGJfbG9hZCAke2JpbmZpbGV9 Ci0gCi0gIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgotLWdkYl90ZXN0ICJpbmZvIGF1 dG8tbG9hZC1zY3JpcHRzIiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rl c3RmaWxlfS5weS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIg Illlcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKLSAj IEFnYWluLCB3aXRoIGEgcmVnZXhwIHRoaXMgdGltZS4KLS1nZGJfdGVzdCAiaW5mbyBhdXRvLWxv YWQtc2NyaXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTog LiovJHt0ZXN0ZmlsZX0ucHkuKiIKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHMgJHt0ZXN0ZmlsZX0iICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7 dGVzdGZpbGV9LnB5LioiCi0gIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGF0IG1hdGNoZXMgbm8g c2NyaXB0cy4KLS1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBuby1zY3JpcHQtbWF0 Y2hlcy10aGlzIiBcCi0rZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG5v LXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwKLSAgICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGlu ZyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzLiIKLSAKLSBpZiAhW3J1bnRvX21haW5dIHsKCmRpZmYg LS1naXQgYS9nZGItYXV0b2xvYWQtMTBvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEwb2YxOC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTk2OTgyCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTEwb2YxOC5wYXRjaApAQCAtMCwwICsxLDE3MDQgQEAK K1twYXRjaCM0IDQvOF0gc2V0IGF1dG8tbG9hZCAqIG1haW4gcGFydAoraHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODguaHRtbAoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMy5odG1sCisKKyMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjQ5OjExCTEuMTQxMTIKKyMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMKKyMjIC0xLDUgKzEsMTAxIEBACisgMjAx Mi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAor KwlhdXRvLWxvYWQ6IEltcGxlbWVudGF0aW9uLgorKwkqIE5FV1M6IE5ldyBkZXNjcmlwdGlvbnMg Zm9yICJpbmZvIGF1dG8tbG9hZCIsCisrCSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJp bmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCisrCSJpbmZvIGF1dG8tbG9hZCBsb2NhbC1n ZGJpbml0IiBhbmQgImluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCisrCURlcHJlY2F0ZSAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmIgor KwlhbmQgInNob3cgYXV0by1sb2FkLXNjcmlwdHMiLiAgTmV3IGRlc2NyaXB0aW9uIGZvciAic2V0 IGF1dG8tbG9hZCIsCisrCSJzaG93IGF1dG8tbG9hZCIsICJzZXQgYXV0by1sb2FkIGdkYi1zY3Jp cHRzIiwKKysJInNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMiLAorKwkic2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLCAic2V0IGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0IiwKKysJInNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQi LCAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGFuZAorKwkic2hvdyBhdXRvLWxvYWQgbGli dGhyZWFkLWRiIi4KKysJKiBhdXRvLWxvYWQuYzogUmVtb3ZlIGluY2x1ZGUgcHl0aG9uL3B5dGhv bi1pbnRlcm5hbC5oLiAgQWRkIGluY2x1ZGVzCisrCWV4Y2VwdGlvbnMuaCwgY2xpL2NsaS1zY3Jp cHQuaCwgZ2RiY21kLmgsIGNsaS9jbGktZGVjb2RlLmggYW5kCisrCWNsaS9jbGktc2V0c2hvdy5o LgorKwkoR0RCX0FVVE9fRklMRV9OQU1FLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSkK KysJKGF1dG9fbG9hZF9nZGJfc2NyaXB0cywgc2hvd19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMpOiBO ZXcuCisrCShnZGJweV9nbG9iYWxfYXV0b19sb2FkKTogUmVuYW1lIHRvIC4uLgorKwkoZ2xvYmFs X2F1dG9fbG9hZCk6IC4uLiBoZXJlLgorKwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsIGF1dG9f bG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKQorKwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRf bG9hZGVkLCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQorKwkoc2NyaXB0X2xhbmd1YWdl X2dkYiwgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcuCisrCShzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCk6IE5ldyBmaWVsZCBsYW5ndWFnZS4KKysJKGhhc2hfbG9hZGVkX3NjcmlwdF9l bnRyeSwgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSk6IENhbGN1bGF0ZSBhbHNvCisrCUxBTkdVQUdF LgorKwkobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbGFuZ3VhZ2UuICBEcm9wIHJl ZHVuZGFudAorKwllbnRyeS5mdWxsX3BhdGggaW5pdGlhbGl6YXRpb24uICBJbml0aWFsaXplIGVu dHJ5Lmxhbmd1YWdlIGFuZAorKwkoKnNsb3QpLT5sYW5ndWFnZS4KKysJKGF1dG9fbG9hZF9vYmpm aWxlX3NjcmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxhbmd1YWdlLgorKwlSZW1v dmUgdGhlIGNhbGwgb2YgbWF5YmVfYWRkX3NjcmlwdC4KKysJQ2FsbCBsYW5ndWFnZS0+c291cmNl X3NjcmlwdF9mb3Jfb2JqZmlsZS4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlLCBz dHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEpOgorKwlOZXcuCisrCShjb2xsZWN0 X21hdGNoaW5nX3NjcmlwdHMpOiBBZGp1c3QgaXQgZm9yCisrCXN0cnVjdCBjb2xsZWN0X21hdGNo aW5nX3NjcmlwdHNfZGF0YS4KKysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCk6 IE5ldyB2YXJpYWJsZS4KKysJKGluZm9fYXV0b19sb2FkX3NjcmlwdHMpOiBSZW5hbWUgdG8gLi4u CisrCShhdXRvX2xvYWRfaW5mb19zY3JpcHRzKTogLi4uIGhlcmUsIGFkZCBwYXJhbWV0ZXIgbGFu Z3VhZ2UuICBBZGp1c3QgaXQKKysJZm9yIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNf ZGF0YS4KKysJKGluZm9fYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBpbmZvX2F1dG9fbG9hZF9sb2Nh bF9nZGJpbml0KQorKwkoc2V0X2F1dG9fbG9hZF9jbWQsIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9n ZXQsIHNob3dfYXV0b19sb2FkX2NtZCkKKysJKGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0LCBp bmZvX2F1dG9fbG9hZF9jbWQpCisrCShhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCk6IE5ldy4K KysJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE1vdmUgYWRkX2luZm8gb2YgImF1dG8tbG9hZC1z Y3JpcHRzIiB0bworKwlweXRob24vcHktYXV0by1sb2FkLmMuICBOZXcgaW5zdGFsbG1lbnQgZm9y ICJzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwKKysJImluZm8gYXV0by1sb2FkIGdkYi1zY3Jp cHRzIiwgInNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgYW5kCisrCSJpbmZvIGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0Ii4KKysJKiBhdXRvLWxvYWQuaCAoc3RydWN0IHNjcmlwdF9sYW5ndWFn ZSk6IE5ldy4KKysJKGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBSZW5hbWUgdG8gLi4uCisrCShn bG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUuCisrCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwg YXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpCisrCShhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9sb2FkZWQpOiBOZXcgZGVjbGFyYXRpb25zLgorKwkobWF5YmVfYWRkX3NjcmlwdCk6IE5l dyBwYXJhbWV0ZXIgbGFuZ3VhZ2UuCisrCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBDaGFu Z2UgcGFyYW1ldGVyIHN1ZmZpeCB0byBsYW5ndWFnZS4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zv cl9vYmpmaWxlLCBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCisrCShhdXRvX2xv YWRfaW5mb19zY3JpcHRzLCBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0KQorKwkoYXV0b19sb2Fk X3Nob3dfY21kbGlzdF9nZXQsIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0KTogTmV3CisrCWRl Y2xhcmF0aW9ucy4KKysJKiBsaW51eC10aHJlYWQtZGIuYzogSW5jbHVkZSBhdXRvLWxvYWQuaCBh bmQgY3R5cGUuaC4KKysJKGF1dG9fbG9hZF90aHJlYWRfZGIsIHNob3dfYXV0b19sb2FkX3RocmVh ZF9kYik6IE5ldy4KKysJKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyk6IE5ldyBmaWVsZCBmaWxlbmFt ZS4KKysJKGRlbGV0ZV90aHJlYWRfZGJfaW5mbyk6IENhbGwgeGZyZWUgZm9yIEZJTEVOQU1FLgor KwkodHJ5X3RocmVhZF9kYl9sb2FkKTogSW5pdGlhbGl6ZSBGSUxFTkFNRS4KKysJKHRyeV90aHJl YWRfZGJfbG9hZF9mcm9tX3BkaXIsIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2Rpcik6IFJldHVy bgorKwlpZiAhQVVUT19MT0FEX1RIUkVBRF9EQi4KKysJKGluZm9fYXV0b19sb2FkX2xpYnRocmVh ZF9kYl9jb21wYXJlLCBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIpOiBOZXcuCisrCShfaW5p dGlhbGl6ZV90aHJlYWRfZGIpOiBJbnN0YWxsIGF1dG9fbG9hZF90aHJlYWRfZGIKKysJYXMgInNl dCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBhbmQgaW5zdGFsbCBpbmZvX2F1dG9fbG9hZF9saWJ0 aHJlYWRfZGIKKysJYXMgImluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCisrCSogbWFpbi5j IChjYXB0dXJlZF9tYWluKTogUmVuYW1lIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgdG8KKysJZ2xv YmFsX2F1dG9fbG9hZC4gIEluaXRpYWxpemUgQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfUEFUSE5B TUUgYW5kCisrCUFVVE9fTE9BRF9MT0NBTF9HREJJTklUX0xPQURFRC4KKysJKHByaW50X2dkYl9o ZWxwKTogRXh0ZW5kIHRoZSBoZWxwIGZvciAnbG9jYWwgaW5pdCBmaWxlJy4KKysJKiBweXRob24v cHktYXV0by1sb2FkLmM6IFJlbW92ZSBhIGNvbW1lbnQgYWJvdXQgZ2RiIHNjcmlwdHMgZXh0ZW5z aW9uLgorKwkoR0RCUFlfQVVUT19TRUNUSU9OX05BTUUpOiBFeHRlbmQgdGhlIGNvbW1lbnQgaXQg aXMgUHl0aG9uIHNwZWNpZmljLgorKwkoYXV0b19sb2FkX3NjcmlwdHMpOiBSZW5hbWUgdG8gLi4u CisrCShhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMpOiAuLi4gaGVyZSwgdXBkYXRlIHRoZSBjb21t ZW50LgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldyBkZWNsYXJh dGlvbi4KKysJKHNob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBzY3JpcHRfbGFuZ3VhZ2Vf cHl0aG9uKQorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldy4KKysJ KHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBSZWZhY3RvciB0aGUgY29kZS4KKysJKGxvYWRfYXV0 b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgorKwkoZ2RicHlfbG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZSwgdXBkYXRlIHRoZQorKwlhdXRvX2xvYWRf b2JqZmlsZV9zY3JpcHQgY2FsbGVyLCBkcm9wIEdEQlBZX0dMT0JBTF9BVVRPX0xPQUQgY2hlY2tp bmcuCisrCShpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyk6IE5ldy4KKysJKGdkYnB5X2lu aXRpYWxpemVfYXV0b19sb2FkKTogTmV3IHZhcmlhYmxlcyBjbWQgYW5kIGNtZF9uYW1lLgorKwlS ZW5hbWUgInNldCBhdXRvLWxvYWQtc2NyaXB0cyIgdG8gInNldCBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHMiLgorKwlSZWdpc3RlciAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIiBhcyBpdHMgZGVwcmVj YXRlZCBhbGlhcy4gIFJlZ2lzdGVyCisrCSJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIu ICBSZWdpc3RlciAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgYXMKKysJaXRzIGRlcHJlY2F0ZWQg YWxpYXMuCisrCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IFJlbmFtZSB0byAuLi4K KysJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogLi4uIGhlcmUuCisrCSog cHl0aG9uL3B5dGhvbi5oIChsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IFJlbmFtZSB0 byAuLi4KKysJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogLi4uIGhlcmUu CisrCisrMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgorKworIAlhdXRvLWxvYWQ6IE1vdmUgZmlsZXMuCisgCSogTWFrZWZpbGUuaW4gKFNGSUxF Uyk6IEFkZCBhdXRvLWxvYWQuYy4KKyAJKEhGSUxFU19OT19TUkNESVIpOiBBZGQgYXV0by1sb2Fk LmguCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIy NjY4MTA2OCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0x OCAwMDo0OTowMi4wMzU3Mzc2NDQgKzAyMDAKK0BAIC0yOCw2ICsyOCw0NSBAQAorICAgbm93IHNl dCBhIGJyZWFrcG9pbnQgaW4gYnVpbGQvZ2NjL2V4cHIuYywgYnV0IG5vdAorICAgYnVpbGQvbGli Y3BwL2V4cHIuYy4KKyAKKysqIE5ldyBjb21tYW5kcworKworKyAgKiogImluZm8gYXV0by1sb2Fk IiBzaG93cyBzdGF0dXMgb2YgYWxsIGtpbmRzIG9mIGF1dG8tbG9hZGVkIGZpbGVzLAorKyAgICAg ImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiBzaG93cyBzdGF0dXMgb2YgYXV0by1sb2FkaW5n IEdEQiBjYW5uZWQKKysgICAgIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmaWxlcywgImluZm8gYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIgorKyAgICAgc2hvd3Mgc3RhdHVzIG9mIGF1dG8tbG9hZGlu ZyBQeXRob24gc2NyaXB0IGZpbGVzLAorKyAgICAgImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmlu aXQiIHNob3dzIHN0YXR1cyBvZiBsb2FkaW5nIGluaXQgZmlsZQorKyAgICAgKC5nZGJpbml0KSBm cm9tIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBz aG93cworKyAgICAgc3RhdHVzIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcg c2hhcmVkIGxpYnJhcnkgbG9hZGluZy4KKysKKysgICoqICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRz IiwgInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYiCisrICAgICBhbmQgInNob3cgYXV0by1s b2FkLXNjcmlwdHMiIGNvbW1hbmRzIGhhdmUgYmVlbiBkZXByZWNhdGVkLCB1c2UgdGhlaXIKKysg ICAgICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIG9ufG9mZiIKKysgICAgIGFuZCAic2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMiIGNvdW50ZXJwYXJ0cyBpbnN0ZWFkLgorKworKyogTmV3IG9wdGlvbnMKKysKKytzZXQgYXV0 by1sb2FkIG9mZgorKyAgRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkuCisrCisrc2hvdyBh dXRvLWxvYWQKKysgIFNob3cgYXV0by1sb2FkaW5nIHNldHRpbmcgb2YgYWxsIGtpbmRzIG9mIGF1 dG8tbG9hZGVkIGZpbGVzLgorKworK3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCisr c2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKKysgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIEdE QiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZpbGVzLgorKworK3NldCBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHMgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKKysg IENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHQgZmlsZXMuCisrCisrc2V0IGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0IG9ufG9mZgorK3Nob3cgYXV0by1sb2FkIGxvY2FsLWdkYmlu aXQKKysgIENvbnRyb2wgbG9hZGluZyBvZiBpbml0IGZpbGUgKC5nZGJpbml0KSBmcm9tIGN1cnJl bnQgZGlyZWN0b3J5LgorKworK3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIG9ufG9mZgorK3No b3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5m ZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeS4KKysKKyAqIE5l dyBjb21tYW5kIGxpbmUgb3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAg ICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTA0Mzc1MjAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4 IDAwOjQ2OjQ3LjU1NjA3OTc4MCArMDIwMAorQEAgLTI3LDE5ICsyNyw5MiBAQAorICNpbmNsdWRl ICJjb21tYW5kLmgiCisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCisgI2luY2x1ZGUgIm9iamZpbGVz LmgiCistI2luY2x1ZGUgInB5dGhvbi9weXRob24taW50ZXJuYWwuaCIKKysjaW5jbHVkZSAiZXhj ZXB0aW9ucy5oIgorKyNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIgorKyNpbmNsdWRlICJnZGJj bWQuaCIKKysjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKKysjaW5jbHVkZSAiY2xpL2NsaS1z ZXRzaG93LmgiCisrCisrLyogVGhlIHN1ZmZpeCBvZiBwZXItb2JqZmlsZSBzY3JpcHRzIHRvIGF1 dG8tbG9hZCBhcyBub24tUHl0aG9uIGNvbW1hbmQgZmlsZXMuCisrICAgRS5nLiBXaGVuIHRoZSBw cm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdkYi5nZGIuICAqLworKyNk ZWZpbmUgR0RCX0FVVE9fRklMRV9OQU1FICItZ2RiLmdkYiIKKysKKytzdGF0aWMgdm9pZCBzb3Vy Y2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUg KmZpbGUsCisrCQkJCQkgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisrLyogVXNlci1zZXR0 YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIEdEQl9BVVRPX0ZJ TEVfTkFNRQorKyAgIHNjcmlwdHM6CisrICAgc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxv ZmYKKysgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNj cmlwdHMgd2hlbiBhbiBvYmpmaWxlCisrICAgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuICAq LworK3N0YXRpYyBpbnQgYXV0b19sb2FkX2dkYl9zY3JpcHRzID0gMTsKKysKKysvKiAic2hvdyIg Y29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9nZGJfc2NyaXB0cyBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRzIChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgICBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJl ZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMg IgorKwkJCSAgICAic2NyaXB0cyBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisgCisg LyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgorICAg IFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4g b2JqZmlsZSBpcyBvcGVuZWQsCisgICAgZmFsc2Ugb3RoZXJ3aXNlLgorIAorLSAgIEJvdGggYXV0 b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8g ZW5hYmxlCisrICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnbG9iYWxfYXV0b19sb2FkIG11 c3QgYmUgdHJ1ZSB0byBlbmFibGUKKyAgICBhdXRvLWxvYWRpbmcuCisgCisgICAgVGhpcyBmbGFn IGV4aXN0cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0 LXVwCisgICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVn bWVudCB0aGUgc2VhcmNoIGRpcmVjdG9yaWVzCisgICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRz LiAgKi8KKy1pbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisraW50IGdsb2JhbF9hdXRv X2xvYWQgPSAxOworKworKy8qIEF1dG8tbG9hZCAuZ2RiaW5pdCBmaWxlIGZyb20gdGhlIGN1cnJl bnQgZGlyZWN0b3J5PyAgKi8KKytpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgPSAxOworKwor Ky8qIEFic29sdXRlIHBhdGhuYW1lIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCwg aWYgaXQgZXhpc3RzLiAgKi8KKytjaGFyICphdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFt ZSA9IE5VTEw7CisrCisrLyogQm9vbGVhbiB2YWx1ZSBpZiBBVVRPX0xPQURfTE9DQUxfR0RCSU5J VF9QQVRITkFNRSBoYXMgYmVlbiBsb2FkZWQuICAqLworK2ludCBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9sb2FkZWQgPSAwOworKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2Fk X2xvY2FsX2dkYmluaXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCisrCisrc3RhdGljIHZv aWQKKytzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwg aW50IGZyb21fdHR5LAorKwkJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25z dCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxv YWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCAiCisrCQkJICAgICJkaXJlY3Rv cnkgaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7CisrfQorKworKy8qIERlZmluaXRpb24gb2Yg c2NyaXB0IGxhbmd1YWdlIGZvciBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy4gICov CisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ugc2NyaXB0X2xhbmd1YWdl X2dkYgorKyAgPSB7IEdEQl9BVVRPX0ZJTEVfTkFNRSwgc291cmNlX2dkYl9zY3JpcHRfZm9yX29i amZpbGUgfTsKKysKKytzdGF0aWMgdm9pZAorK3NvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkgICAgICAgY29uc3Qg Y2hhciAqZmlsZW5hbWUpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNw YWNlX2luZm87CisrICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOworKworKyAgLyog QWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQg Z2RiLXNjcmlwdHMiCisrICAgICBjYW4gcHJpbnQgaXQuICAqLworKyAgcHNwYWNlX2luZm8gPSBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3Bh Y2UpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFt ZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKworKyAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFT S19BTEwpCisrICAgIHsKKysgICAgICBzY3JpcHRfZnJvbV9maWxlIChmaWxlLCBmaWxlbmFtZSk7 CisrICAgIH0KKysgIGV4Y2VwdGlvbl9wcmludCAoZ2RiX3N0ZGVyciwgZSk7CisrfQorIAorIC8q IEZvciBzY3JpcHRzIHNwZWNpZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9i amZpbGVzIG1heSBsb2FkCisgICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBp biBsb2FkaW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUgdGltZXMsCitAQCAtNjIsOSArMTM1LDEyIEBA IHN0cnVjdCBsb2FkZWRfc2NyaXB0CisgeworICAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUg b2JqZmlsZS4gICovCisgICBjb25zdCBjaGFyICpuYW1lOworKworICAgLyogRnVsbCBwYXRoIG5h bWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCisgICAg ICBpbmFjY2Vzc2libGUpLiAgKi8KKyAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKysKKysgIGNv bnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlOworIH07CisgCisgLyogUGVyLXBy b2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLworQEAgLTEwOSw3ICsxODUsNyBAQCBoYXNoX2xvYWRl ZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhCisgeworICAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKmUgPSBkYXRhOworIAorLSAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5h bWUpOworKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpIF4gaHRhYl9oYXNoX3Bv aW50ZXIgKGUtPmxhbmd1YWdlKTsKKyB9CisgCisgLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRo ZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworQEAgLTEyMCw3ICsxOTYsNyBAQCBlcV9sb2FkZWRf c2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjCisgICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCAqZWEgPSBhOworICAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsKKyAK Ky0gIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsKKysgIHJldHVybiBz dHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMCAmJiBlYS0+bGFuZ3VhZ2UgPT0gZWItPmxh bmd1YWdlOworIH0KKyAKKyAvKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFjayBsb2FkZWQg c2NyaXB0cy4KK0BAIC0xNTYsMjAgKzIzMiwyMSBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh X2Zvcl9sb2FkaW5nIChzCisgICByZXR1cm4gaW5mbzsKKyB9CisgCistLyogQWRkIHNjcmlwdCBO QU1FIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCistICAgRlVMTF9QQVRIIGlzIE5VTEwg aWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuCistICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRo ZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLworKy8qIEFkZCBzY3Jp cHQgTkFNRSBpbiBMQU5HVUFHRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgorKyAgIEZV TExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJlc3VsdCBp cworKyAgIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4g ICovCisgCisgaW50CistbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8sIGNvbnN0IGNoYXIgKm5hbWUsCistCQkgIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aCkKKyttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbywKKysJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9w YXRoLAorKwkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKKyB7Cisg ICBzdHJ1Y3QgaHRhYiAqaHRhYiA9IHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0czsKKyAgIHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICoqc2xvdCwgZW50cnk7CisgICBpbnQgaW5faGFzaF90YWJsZTsK KyAKKyAgIGVudHJ5Lm5hbWUgPSBuYW1lOworLSAgZW50cnkuZnVsbF9wYXRoID0gZnVsbF9wYXRo OworKyAgZW50cnkubGFuZ3VhZ2UgPSBsYW5ndWFnZTsKKyAgIHNsb3QgPSAoc3RydWN0IGxvYWRl ZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VSVCk7CisgICBp bl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKKyAKK0BAIC0xOTQsNiArMjcxLDcgQEAgbWF5 YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhYworIAl9CisgICAgICAgZWxzZQor IAkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOworKyAgICAgICgqc2xvdCktPmxhbmd1YWdlID0g bGFuZ3VhZ2U7CisgICAgIH0KKyAKKyAgIHJldHVybiBpbl9oYXNoX3RhYmxlOworQEAgLTIxNiwx MCArMjk0LDEyIEBAIGNsZWFyX3NlY3Rpb25fc2NyaXB0cyAodm9pZCkKKyAgICAgfQorIH0KKyAK Ky0vKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggT0JKRklM RSBhbmQgbG9hZCBpdC4gICovCisrLyogTG9vayBmb3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQgaW4g TEFOR1VBR0UgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQKKysgICBpdC4gICovCisg Cisgdm9pZAorLWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKKythdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAq bGFuZ3VhZ2UpCisgeworICAgY2hhciAqcmVhbG5hbWU7CisgICBjaGFyICpmaWxlbmFtZSwgKmRl YnVnZmlsZTsKK0BAIC0yMjksOSArMzA5LDkgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChz dHJ1Y3Qgb2JqZmlsZQorIAorICAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5h bWUpOworICAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7CistICBmaWxlbmFtZSA9IHhtYWxsb2Mg KGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOworKyAgZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4g KyBzdHJsZW4gKGxhbmd1YWdlLT5zdWZmaXgpICsgMSk7CisgICBtZW1jcHkgKGZpbGVuYW1lLCBy ZWFsbmFtZSwgbGVuKTsKKy0gIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1ZmZpeCk7CisrICBz dHJjcHkgKGZpbGVuYW1lICsgbGVuLCBsYW5ndWFnZS0+c3VmZml4KTsKKyAKKyAgIGNsZWFudXBz ID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZmlsZW5hbWUpOworICAgbWFrZV9jbGVhbnVwICh4ZnJl ZSwgcmVhbG5hbWUpOworQEAgLTI2OSwyNyArMzQ5LDMzIEBAIGF1dG9fbG9hZF9vYmpmaWxlX3Nj cmlwdCAoc3RydWN0IG9iamZpbGUKKyAKKyAgIGlmIChpbnB1dCkKKyAgICAgeworLSAgICAgIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworLQorICAgICAgIG1ha2Vf Y2xlYW51cF9mY2xvc2UgKGlucHV0KTsKKyAKKy0gICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8g dGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgorLQkgY2FuIHBy aW50IGl0LiAgKi8KKy0gICAgICBwc3BhY2VfaW5mbyA9CistCWdldF9hdXRvX2xvYWRfcHNwYWNl X2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CistICAgICAgbWF5YmVf YWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxlKTsKKy0KKyAgICAg ICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdo ZXRoZXIgdGhlCisgCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxlLCBhbmQgYWx3YXlz IGxvYWQgaXQuCisgCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2QgZXZlciBsb2FkIGl0 IHR3aWNlLAorIAkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3Rl bnQgdW5kZXIgbXVsdGlwbGUKKyAJIGxvYWRzIGFueXdheS4gICovCistICAgICAgc291cmNlX3B5 dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworKyAg ICAgIGxhbmd1YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwg ZGVidWdmaWxlKTsKKyAgICAgfQorIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyB9Cisg CisrLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JKRklMRS4gICovCisrCisr dm9pZAorK2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSkKKyt7CisrICBpZiAoIWdsb2JhbF9hdXRvX2xvYWQpCisrICAgIHJldHVybjsKKysKKysg IGlmIChhdXRvX2xvYWRfZ2RiX3NjcmlwdHMpCisrICAgIGF1dG9fbG9hZF9vYmpmaWxlX3Njcmlw dCAob2JqZmlsZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKworKyAgZ2RicHlfbG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworK30KKysKKyAvKiBUaGlzIGlzIGEgbmV3 X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNjcmlwdHMuCisgCisgICAg VHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3VwcG9ydGVkLgorQEAgLTMx NCw2ICs0MDAsMTMgQEAgYXV0b19sb2FkX25ld19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqbwor IHR5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmxvYWRlZF9zY3JpcHRfcHRyOworIERFRl9W RUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOworIAorK3N0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3Nj cmlwdHNfZGF0YQorK3sKKysgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0c19wOwor KworKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7CisrfTsKKysKKyAv KiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCisgICAgQ29sbGVjdCB0aGUg ZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KKyAKK0BAIC0zMjEsMTAgKzQxNCwx MCBAQCBzdGF0aWMgaW50CisgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwg dm9pZCAqaW5mbykKKyB7CisgICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7 CistICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKKysgIHN0 cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSAqZGF0YSA9IGluZm87CisgCistICBp ZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKKy0gICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3Nj cmlwdF9wdHIsICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsKKysgIGlmIChzY3JpcHQtPmxhbmd1YWdl ID09IGRhdGEtPmxhbmd1YWdlICYmIHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkpCisrICAgIFZFQ19z YWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqZGF0YS0+c2NyaXB0c19wLCBzY3JpcHQpOwor IAorICAgcmV0dXJuIDE7CisgfQorQEAgLTM2NiwxMCArNDU5LDE4IEBAIHNvcnRfc2NyaXB0c19i eV9uYW1lIChjb25zdCB2b2lkICphcCwgY28KKyAgIHJldHVybiBGSUxFTkFNRV9DTVAgKGEtPm5h bWUsIGItPm5hbWUpOworIH0KKyAKKy0vKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFu ZC4gICovCisrLyogU3BlY2lhbCBpbnRlcm5hbCBHREIgdmFsdWUgb2YgYXV0b19sb2FkX2luZm9f c2NyaXB0cydzIFBBVFRFUk4gaWRlbnRpZnkKKysgICB0aGUgImluZm8gYXV0by1sb2FkIFhYWCIg Y29tbWFuZCBoYXMgYmVlbiBleGVjdXRlZCB0aHJvdWdoIHRoZSBnZW5lcmFsCisrICAgImluZm8g YXV0by1sb2FkIiBpbnZvY2F0aW9uLiAgRXh0cmEgbmV3bGluZSB3aWxsIGJlIHByaW50ZWQgaWYg bmVlZGVkLiAgKi8KKytjaGFyIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubFtdID0g IiI7CisrCisrLyogSW1wbGVtZW50YXRpb24gZm9yICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0 cyIKKysgICAoYW5kICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIpLiAgTGlzdCBzY3Jp cHRzIGluIExBTkdVQUdFIG1hdGNoaW5nCisrICAgUEFUVEVSTi4gIEZST01fVFRZIGlzIHRoZSB1 c3VhbCBHREIgYm9vbGVhbiBmb3IgdXNlciBpbnRlcmFjdGl2aXR5LiAgKi8KKyAKKy1zdGF0aWMg dm9pZAorLWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0 eSkKKyt2b2lkCisrYXV0b19sb2FkX2luZm9fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZy b21fdHR5LAorKwkJCWNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQorIHsK KyAgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKyAgIHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworQEAgLTQwMiwxNCArNTAzLDIyIEBAIGlu Zm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGkKKyAKKyAgIGlmIChwc3BhY2Vf aW5mbyAhPSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorICAg ICB7CisrICAgICAgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhIGRhdGEgPSB7 ICZzY3JpcHRzLCBsYW5ndWFnZSB9OworKworICAgICAgIGltbWVkaWF0ZV9xdWl0Kys7CisgICAg ICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNhbiByZWFs bG9jIHNwYWNlLiAgKi8KKyAgICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChwc3BhY2VfaW5m by0+bG9hZGVkX3NjcmlwdHMsCistCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAm c2NyaXB0cyk7CisrCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmZGF0YSk7Cisg ICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKKyAgICAgfQorIAorICAgbnJfc2NyaXB0cyA9IFZFQ19s ZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKKysKKysgIC8qIFRhYmxlIGhlYWRl ciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGluZyAiZ2RiLXNjcmlwdHM6ICAiIHdvdWxkIG5vdCBt YXRjaAorKyAgICAgaXRzIGNvbHVtbnMuICAqLworKyAgaWYgKG5yX3NjcmlwdHMgPiAwICYmIHBh dHRlcm4gPT0gYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sKQorKyAgICB1aV9vdXRf dGV4dCAodWlvdXQsICJcbiIpOworKworICAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdp bl9lbmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAorIAkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3Jp cHRzVGFibGUiKTsKKyAKK0BAIC00NDEsNiArNTUwLDI5IEBAIGluZm9fYXV0b19sb2FkX3Njcmlw dHMgKGNoYXIgKnBhdHRlcm4sIGkKKyAgICAgfQorIH0KKyAKKysvKiBXcmFwcGVyIGZvciAiaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luZm9fYXV0 b19sb2FkX2dkYl9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCisreworKyAg YXV0b19sb2FkX2luZm9fc2NyaXB0cyAocGF0dGVybiwgZnJvbV90dHksICZzY3JpcHRfbGFuZ3Vh Z2VfZ2RiKTsKKyt9CisrCisrLyogSW1wbGVtZW50ICdpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJp bml0Jy4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0 IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgaWYgKGF1dG9fbG9hZF9sb2NhbF9n ZGJpbml0X3BhdGhuYW1lID09IE5VTEwpCisrICAgIHByaW50Zl9maWx0ZXJlZCAoXygiTG9jYWwg LmdkYmluaXQgZmlsZSB3YXMgbm90IGZvdW5kLlxuIikpOworKyAgZWxzZSBpZiAoYXV0b19sb2Fk X2xvY2FsX2dkYmluaXRfbG9hZGVkKQorKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5n ZGJpbml0IGZpbGUgXCIlc1wiIGhhcyBiZWVuIGxvYWRlZC5cbiIpLAorKwkJICAgICBhdXRvX2xv YWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSk7CisrICBlbHNlCisrICAgIHByaW50Zl9maWx0ZXJl ZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIgaGFzIG5vdCBiZWVuIGxvYWRlZC5cbiIp LAorKwkJICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSk7CisrfQorKworIC8q IFJldHVybiBub24temVybyBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQ U1BBQ0VfSU5GTyB3YXMgdW5zZXQKKyAgICBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAg QWx3YXlzIHNldCBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAorICAgIG9mIFBTUEFD RV9JTkZPLiAgKi8KK0BAIC00NTUsNiArNTg3LDEzMiBAQCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5p bmdfcHJpbnQgKHN0cnVjdCBhCisgICByZXR1cm4gcmV0dmFsOworIH0KKyAKKysvKiBUaGUgb25s eSB2YWxpZCAic2V0IGF1dG8tbG9hZCIgYXJndW1lbnQgaXMgb2ZmfDB8bm98ZGlzYWJsZS4gICov CisrCisrc3RhdGljIHZvaWQKKytzZXRfYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZy b21fdHR5KQorK3sKKysgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpsaXN0OworKyAgc2l6ZV90 IGxlbmd0aDsKKysKKysgIC8qIFNlZSBwYXJzZV9iaW5hcnlfb3BlcmF0aW9uIGluIHVzZSBieSB0 aGUgc3ViLWNvbW1hbmRzLiAgKi8KKysKKysgIGxlbmd0aCA9IGFyZ3MgPyBzdHJsZW4gKGFyZ3Mp IDogMDsKKysKKysgIHdoaWxlIChsZW5ndGggPiAwICYmIChhcmdzW2xlbmd0aCAtIDFdID09ICcg JyB8fCBhcmdzW2xlbmd0aCAtIDFdID09ICdcdCcpKQorKyAgICBsZW5ndGgtLTsKKysKKysgIGlm IChsZW5ndGggPT0gMCB8fCAoc3RybmNtcCAoYXJncywgIm9mZiIsIGxlbmd0aCkgIT0gMAorKwkJ ICAgICAgJiYgc3RybmNtcCAoYXJncywgIjAiLCBsZW5ndGgpICE9IDAKKysJCSAgICAgICYmIHN0 cm5jbXAgKGFyZ3MsICJubyIsIGxlbmd0aCkgIT0gMAorKwkJICAgICAgJiYgc3RybmNtcCAoYXJn cywgImRpc2FibGUiLCBsZW5ndGgpICE9IDApKQorKyAgICBlcnJvciAoXygiVmFsaWQgaXMgb25s eSBnbG9iYWwgJ3NldCBhdXRvLWxvYWQgbm8nOyAiCisrCSAgICAgIm90aGVyd2lzZSBjaGVjayB0 aGUgYXV0by1sb2FkIHN1Yi1jb21tYW5kcy4iKSk7CisrCisrICBmb3IgKGxpc3QgPSAqYXV0b19s b2FkX3NldF9jbWRsaXN0X2dldCAoKTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkK KysgICAgaWYgKGxpc3QtPnZhcl90eXBlID09IHZhcl9ib29sZWFuKQorKyAgICAgIHsKKysJZ2Ri X2Fzc2VydCAobGlzdC0+dHlwZSA9PSBzZXRfY21kKTsKKysJZG9fc2V0c2hvd19jb21tYW5kIChh cmdzLCBmcm9tX3R0eSwgbGlzdCk7CisrICAgICAgfQorK30KKysKKysvKiBJbml0aWFsaXplICJz ZXQgYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFuZCByZXR1cm4gaXQuICAqLworKworK3N0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCisrYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAodm9p ZCkKKyt7CisrICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKKysKKysg IGlmIChyZXR2YWwgPT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBj bGFzc19tYWludGVuYW5jZSwgc2V0X2F1dG9fbG9hZF9jbWQsIF8oIlwKKytBdXRvLWxvYWRpbmcg c3BlY2lmaWMgc2V0dGluZ3MuXG5cCisrQ29uZmlndXJlIHZhcmlvdXMgYXV0by1sb2FkLXNwZWNp ZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5cCisrYXV0b21hdGljIGxvYWRpbmcgb2YgUHl0aG9uIHNj cmlwdHMuIiksCisrCQkgICAgJnJldHZhbCwgInNldCBhdXRvLWxvYWQgIiwKKysJCSAgICAxLyph bGxvdy11bmtub3duKi8sICZzZXRsaXN0KTsKKysKKysgIHJldHVybiAmcmV0dmFsOworK30KKysK KysvKiBDb21tYW5kICJzaG93IGF1dG8tbG9hZCIgZGlzcGxheXMgc3VtbWFyeSBvZiBhbGwgdGhl IGN1cnJlbnQKKysgICAic2hvdyBhdXRvLWxvYWQgIiBzZXR0aW5ncy4gICovCisrCisrc3RhdGlj IHZvaWQKKytzaG93X2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7 CisrICBjbWRfc2hvd19saXN0ICgqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCksIGZyb21f dHR5LCAiIik7CisrfQorKworKy8qIEluaXRpYWxpemUgInNob3cgYXV0by1sb2FkICIgY29tbWFu ZHMgcHJlZml4IGFuZCByZXR1cm4gaXQuICAqLworKworK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICoqCisrYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpCisreworKyAgc3RhdGljIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpyZXR2YWw7CisrCisrICBpZiAocmV0dmFsID09IE5VTEwp CisrICAgIGFkZF9wcmVmaXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFuY2UsIHNo b3dfYXV0b19sb2FkX2NtZCwgXygiXAorK1Nob3cgYXV0by1sb2FkaW5nIHNwZWNpZmljIHNldHRp bmdzLlxuXAorK1Nob3cgY29uZmlndXJhdGlvbiBvZiB2YXJpb3VzIGF1dG8tbG9hZC1zcGVjaWZp YyB2YXJpYWJsZXMgc3VjaCBhc1xuXAorK2F1dG9tYXRpYyBsb2FkaW5nIG9mIFB5dGhvbiBzY3Jp cHRzLiIpLAorKwkJICAgICZyZXR2YWwsICJzaG93IGF1dG8tbG9hZCAiLAorKwkJICAgIDAvKmFs bG93LXVua25vd24qLywgJnNob3dsaXN0KTsKKysKKysgIHJldHVybiAmcmV0dmFsOworK30KKysK KysvKiBDb21tYW5kICJpbmZvIGF1dG8tbG9hZCIgZGlzcGxheXMgd2hldGhlciB0aGUgdmFyaW91 cyBhdXRvLWxvYWQgZmlsZXMgaGF2ZQorKyAgIGJlZW4gbG9hZGVkLiAgVGhpcyBpcyByZWltcGxl bWVudGF0aW9uIG9mIGNtZF9zaG93X2xpc3Qgd2hpY2ggaW5zZXJ0cworKyAgIG5ld2xpbmVzIGF0 IHByb3BlciBwbGFjZXMuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfY21k IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmxpc3Q7CisrICBzdHJ1Y3QgY2xlYW51cCAqaW5mb2xpc3RfY2hhaW47CisrICBzdHJ1Y3Qg dWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CisrCisrICBpbmZvbGlzdF9jaGFpbiA9IG1h a2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgImluZm9saXN0Iik7Cisr CisrICBmb3IgKGxpc3QgPSAqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCk7IGxpc3QgIT0g TlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgY2xlYW51cCAq b3B0aW9uX2NoYWluCisrCT0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVp b3V0LCAib3B0aW9uIik7CisrCisrICAgICAgZ2RiX2Fzc2VydCAoIWxpc3QtPnByZWZpeGxpc3Qp OworKyAgICAgIGdkYl9hc3NlcnQgKGxpc3QtPnR5cGUgPT0gbm90X3NldF9jbWQpOworKworKyAg ICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibmFtZSIsIGxpc3QtPm5hbWUpOworKyAg ICAgIHVpX291dF90ZXh0ICh1aW91dCwgIjogICIpOworKyAgICAgIGNtZF9mdW5jIChsaXN0LCBh dXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwsIGZyb21fdHR5KTsKKysKKysgICAgICAv KiBDbG9zZSB0aGUgdHVwbGUuICAqLworKyAgICAgIGRvX2NsZWFudXBzIChvcHRpb25fY2hhaW4p OworKyAgICB9CisrCisrICAvKiBDbG9zZSB0aGUgdHVwbGUuICAqLworKyAgZG9fY2xlYW51cHMg KGluZm9saXN0X2NoYWluKTsKKyt9CisrCisrLyogSW5pdGlhbGl6ZSAiaW5mbyBhdXRvLWxvYWQg IiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCisrCisrc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKioKKythdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCkKKyt7CisrICBz dGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKKysKKysgIGlmIChyZXR2YWwg PT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19pbmZvLCBp bmZvX2F1dG9fbG9hZF9jbWQsIF8oIlwKKytQcmludCBjdXJyZW50IHN0YXR1cyBvZiBhdXRvLWxv YWRlZCBmaWxlcy5cblwKKytQcmludCB3aGV0aGVyIHZhcmlvdXMgZmlsZXMgbGlrZSBQeXRob24g c2NyaXB0cyBvciAuZ2RiaW5pdCBmaWxlcyBoYXZlIGJlZW5cblwKKytmb3VuZCBhbmQvb3IgbG9h ZGVkLiIpLAorKwkJICAgICZyZXR2YWwsICJpbmZvIGF1dG8tbG9hZCAiLAorKwkJICAgIDAvKmFs bG93LXVua25vd24qLywgJmluZm9saXN0KTsKKysKKysgIHJldHVybiAmcmV0dmFsOworK30KKysK KyB2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7CisgCisgdm9pZAorQEAgLTQ2NSw4 ICs3MjMsMzggQEAgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQorIAorICAgb2JzZXJ2ZXJf YXR0YWNoX25ld19vYmpmaWxlIChhdXRvX2xvYWRfbmV3X29iamZpbGUpOworIAorLSAgYWRkX2lu Zm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCistCSAgICBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzLAor LQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2NyaXB0cy5c blwKKy1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXSIpKTsKKysgIGFkZF9z ZXRzaG93X2Jvb2xlYW5fY21kICgiZ2RiLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAorKwkJCSAg ICZhdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIF8oIlwKKytFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxv YWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzLiIpLCBfKCJcCisr U2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRz IHNjcmlwdHMgaXMgZW5hYmxlZC4iKSwKKysJCQkgICBfKCJcCisrSWYgZW5hYmxlZCwgY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyBhcmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRz XG5cCisrYW4gZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS5cblwKKytUaGlzIG9wdGlvbnMg aGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJ CQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cywKKysJCQkgICBhdXRvX2xvYWRf c2V0X2NtZGxpc3RfZ2V0ICgpLAorKwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgp KTsKKysKKysgIGFkZF9jbWQgKCJnZGItc2NyaXB0cyIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19s b2FkX2dkYl9zY3JpcHRzLAorKwkgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5 IGxvYWRlZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuXG5cCisrVXNhZ2U6IGluZm8gYXV0by1sb2Fk IGdkYi1zY3JpcHRzIFtSRUdFWFBdIiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0 ICgpKTsKKysKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgibG9jYWwtZ2RiaW5pdCIsIGNs YXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBfKCJcCisrRW5h YmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBpbiBjdXJyZW50 IGRpcmVjdG9yeS4iKSwgXygiXAorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgLmdkYmluaXQg c2NyaXB0IGluIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGVuYWJsZWQuIiksCisrCQkJICAgXygiXAor K0lmIGVuYWJsZWQsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgYXJlIGxvYWRlZCB3aGVu IGRlYnVnZ2VyIHN0YXJ0c1xuXAorK2Zyb20gLmdkYmluaXQgZmlsZSBpbiBjdXJyZW50IGRpcmVj dG9yeS4gIFN1Y2ggZmlsZXMgYXJlIGRlcHJlY2F0ZWQsXG5cCisrdXNlIGEgc2NyaXB0IGFzc29j aWF0ZWQgd2l0aCBpbmZlcmlvciBleGVjdXRhYmxlIGZpbGUgaW5zdGVhZC5cblwKKytUaGlzIG9w dGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4i KSwKKysJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0LAorKwkJCSAgIGF1 dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlz dF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAoImxvY2FsLWdkYmluaXQiLCBjbGFzc19pbmZvLCBp bmZvX2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0LAorKwkgICBfKCJQcmludCB3aGV0aGVyIGN1cnJl bnQgZGlyZWN0b3J5IC5nZGJpbml0IGZpbGUgaGFzIGJlZW4gbG9hZGVkLlxuXAorK1VzYWdlOiBp bmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxp c3RfZ2V0ICgpKTsKKyB9CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2Fk LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9h ZC5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTUxNDM3NTE3ICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTYwNzk3ODAgKzAy MDAKK0BAIC0yMiwxNSArMjIsMzYgQEAKKyAKKyBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZTsKKyAKKy1l eHRlcm4gaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQ7Cisrc3RydWN0IHNjcmlwdF9sYW5ndWFn ZQorK3sKKysgIGNvbnN0IGNoYXIgKnN1ZmZpeDsKKysKKysgIHZvaWQgKCpzb3VyY2Vfc2NyaXB0 X2Zvcl9vYmpmaWxlKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisrCQkJ CSAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOworK307CisrCisrZXh0ZXJuIGludCBnbG9iYWxf YXV0b19sb2FkOworKworK2V4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQ7CisrZXh0 ZXJuIGNoYXIgKmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lOworK2V4dGVybiBpbnQg YXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkOworIAorIGV4dGVybiBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICoKKyAgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRp bmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOworIGV4dGVybiBpbnQgbWF5YmVfYWRk X3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCistCQkJ ICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpOworKwkJCSAgICAg Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJCSAgICAgY29uc3Qg c3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworIGV4dGVybiB2b2lkIGF1dG9fbG9h ZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJCSAgICAgIGNv bnN0IGNoYXIgKnN1ZmZpeCk7CisrCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3Vh Z2UgKmxhbmd1YWdlKTsKKytleHRlcm4gdm9pZCBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIGV4dGVybiBpbnQKKyAgIHNjcmlwdF9ub3Rf Zm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8pOworK2V4dGVybiBjaGFyIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubFtd OworK2V4dGVybiB2b2lkIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGlu dCBmcm9tX3R0eSwKKysJCQkJICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1 YWdlKTsKKysKKytleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2V0 X2NtZGxpc3RfZ2V0ICh2b2lkKTsKKytleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiph dXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7CisrZXh0ZXJuIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOworIAorICNlbmRp ZiAvKiBBVVRPX0xPQURfSCAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4 LXRocmVhZC1kYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTAxLTA0IDA5OjE3OjA1LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTgg MDA6NDY6NDcuNTU3MDc5Nzc3ICswMjAwCitAQCAtNDAsOCArNDAsMTAgQEAKKyAjaW5jbHVkZSAi b2JzZXJ2ZXIuaCIKKyAjaW5jbHVkZSAibGludXgtbmF0LmgiCisgI2luY2x1ZGUgImxpbnV4LXBy b2Nmcy5oIgorKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKKyAKKyAjaW5jbHVkZSA8c2lnbmFsLmg+ CisrI2luY2x1ZGUgPGN0eXBlLmg+CisgCisgI2lmZGVmIEhBVkVfR05VX0xJQkNfVkVSU0lPTl9I CisgI2luY2x1ZGUgPGdudS9saWJjLXZlcnNpb24uaD4KK0BAIC03NSw2ICs3NywyMSBAQAorIAor IHN0YXRpYyBjaGFyICpsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGg7CisgCisrLyogU2V0IHRvIG5v bi16ZXJvIGlmIHRocmVhZF9kYiBhdXRvLWxvYWRpbmcgaXMgZW5hYmxlZAorKyAgIGJ5IHRoZSAi c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGNvbW1hbmQuICAqLworK3N0YXRpYyBpbnQgYXV0 b19sb2FkX3RocmVhZF9kYiA9IDE7CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRv X2xvYWRfdGhyZWFkX2RiIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2 b2lkCisrc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50 IGZyb21fdHR5LAorKwkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIg KnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBv ZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgIgorKwkJCSAgICAiaXMgJXMuXG4iKSwK KysJCSAgICB2YWx1ZSk7CisrfQorKworIHN0YXRpYyB2b2lkCisgc2V0X2xpYnRocmVhZF9kYl9z ZWFyY2hfcGF0aCAoY2hhciAqaWdub3JlZCwgaW50IGZyb21fdHR5LAorIAkJCSAgICAgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjKQorQEAgLTExOSw2ICsxMzYsMTAgQEAgc3RydWN0IHRocmVh ZF9kYl9pbmZvCisgICAvKiBIYW5kbGUgZnJvbSBkbG9wZW4gZm9yIGxpYnRocmVhZF9kYi5zby4g ICovCisgICB2b2lkICpoYW5kbGU7CisgCisrICAvKiBBYnNvbHV0ZSBwYXRobmFtZSBmcm9tIGdk Yl9yZWFscGF0aCB0byBkaXNrIGZpbGUgdXNlZCBmb3IgZGxvcGVuLWluZworKyAgICAgSEFORExF LiAgSXQgbWF5IGJlIE5VTEwgZm9yIHN5c3RlbSBsaWJyYXJ5LiAgKi8KKysgIGNoYXIgKmZpbGVu YW1lOworKworICAgLyogU3RydWN0dXJlIHRoYXQgaWRlbnRpZmllcyB0aGUgY2hpbGQgcHJvY2Vz cyBmb3IgdGhlCisgICAgICA8cHJvY19zZXJ2aWNlLmg+IGludGVyZmFjZS4gICovCisgICBzdHJ1 Y3QgcHNfcHJvY2hhbmRsZSBwcm9jX2hhbmRsZTsKK0BAIC0yNDgsNiArMjY5LDggQEAgZGVsZXRl X3RocmVhZF9kYl9pbmZvIChpbnQgcGlkKQorICAgaWYgKGluZm8tPmhhbmRsZSAhPSBOVUxMKQor ICAgICBkbGNsb3NlIChpbmZvLT5oYW5kbGUpOworIAorKyAgeGZyZWUgKGluZm8tPmZpbGVuYW1l KTsKKysKKyAgIGlmIChpbmZvX3ByZXYpCisgICAgIGluZm9fcHJldi0+bmV4dCA9IGluZm8tPm5l eHQ7CisgICBlbHNlCitAQCAtODA3LDYgKzgzMCwxMCBAQCB0cnlfdGhyZWFkX2RiX2xvYWQgKGNv bnN0IGNoYXIgKmxpYnJhcnkpCisgCisgICBpbmZvID0gYWRkX3RocmVhZF9kYl9pbmZvIChoYW5k bGUpOworIAorKyAgLyogRG8gbm90IHNhdmUgc3lzdGVtIGxpYnJhcnkgbmFtZSwgdGhhdCBvbmUg aXMgYWx3YXlzIHRydXN0ZWQuICAqLworKyAgaWYgKHN0cmNociAobGlicmFyeSwgJy8nKSAhPSBO VUxMKQorKyAgICBpbmZvLT5maWxlbmFtZSA9IGdkYl9yZWFscGF0aCAobGlicmFyeSk7CisrCisg ICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkXzEgKGluZm8pKQorICAgICByZXR1cm4gMTsKKyAKK0BA IC04NTYsNiArODgzLDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpciAodm9pZCkKKyB7 CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqOworIAorKyAgaWYgKCFhdXRvX2xvYWRfdGhyZWFkX2Ri KQorKyAgICByZXR1cm4gMDsKKysKKyAgIEFMTF9PQkpGSUxFUyAob2JqKQorICAgICBpZiAobGli cHRocmVhZF9uYW1lX3AgKG9iai0+bmFtZSkpCisgICAgICAgeworQEAgLTg5NSw2ICs5MjUsOSBA QCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAgIGNoYXIgKnBhdGg7 CisgICBpbnQgcmVzdWx0OworIAorKyAgaWYgKCFhdXRvX2xvYWRfdGhyZWFkX2RiKQorKyAgICBy ZXR1cm4gMDsKKysKKyAgIHBhdGggPSB4bWFsbG9jIChkaXJfbGVuICsgMSArIHN0cmxlbiAoTElC VEhSRUFEX0RCX1NPKSArIDEpOworICAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHBh dGgpOworIAorQEAgLTE4MDIsNiArMTgzNSwxNTAgQEAgdGhyZWFkX2RiX3Jlc3VtZSAoc3RydWN0 IHRhcmdldF9vcHMgKm9wcworICAgYmVuZWF0aC0+dG9fcmVzdW1lIChiZW5lYXRoLCBwdGlkLCBz dGVwLCBzaWdubyk7CisgfQorIAorKy8qIHFzb3J0IGhlbHBlciBmdW5jdGlvbiBmb3IgaW5mb19h dXRvX2xvYWRfbGlidGhyZWFkX2RiLCBzb3J0IHRoZQorKyAgIHRocmVhZF9kYl9pbmZvIHBvaW50 ZXJzIHByaW1hcmlseSBieSB0aGVpciBGSUxFTkFNRSBhbmQgc2Vjb25kYXJpbHkgYnkgdGhlaXIK KysgICBQSUQsIGJvdGggaW4gYXNjZW5kaW5nIG9yZGVyLiAgKi8KKysKKytzdGF0aWMgaW50Cisr aW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUgKGNvbnN0IHZvaWQgKmFwLCBjb25z dCB2b2lkICpicCkKKyt7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmEgPSAqKHN0cnVjdCB0 aHJlYWRfZGJfaW5mbyAqKikgYXA7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmIgPSAqKHN0 cnVjdCB0aHJlYWRfZGJfaW5mbyAqKikgYnA7CisrICBpbnQgcmV0dmFsOworKworKyAgcmV0dmFs ID0gc3RyY21wIChhLT5maWxlbmFtZSwgYi0+ZmlsZW5hbWUpOworKyAgaWYgKHJldHZhbCkKKysg ICAgcmV0dXJuIHJldHZhbDsKKysKKysgIHJldHVybiAoYS0+cGlkID4gYi0+cGlkKSAtIChhLT5w aWQgLSBiLT5waWQpOworK30KKysKKysvKiBJbXBsZW1lbnQgJ2luZm8gYXV0by1sb2FkIGxpYnRo cmVhZC1kYicuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfbGlidGhyZWFk X2RiIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0IHVpX291dCAqdWlv dXQgPSBjdXJyZW50X3Vpb3V0OworKyAgY29uc3QgY2hhciAqY3MgPSBhcmdzID8gYXJncyA6ICIi OworKyAgc3RydWN0IHRocmVhZF9kYl9pbmZvICppbmZvLCAqKmFycmF5OworKyAgdW5zaWduZWQg aW5mb19jb3VudCwgdW5pcXVlX2ZpbGVuYW1lczsKKysgIHNpemVfdCBtYXhfZmlsZW5hbWVfbGVu LCBtYXhfcGlkc19sZW4sIHBpZHNfbGVuOworKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Cisr ICBjaGFyICpwaWRzOworKyAgaW50IGk7CisrCisrICB3aGlsZSAoaXNzcGFjZSAoKmNzKSkKKysg ICAgY3MrKzsKKysgIGlmICgqY3MpCisrICAgIGVycm9yIChfKCInaW5mbyBhdXRvLWxvYWQgbGli dGhyZWFkLWRiJyBkb2VzIG5vdCBhY2NlcHQgYW55IHBhcmFtZXRlcnMiKSk7CisrCisrICBpbmZv X2NvdW50ID0gMDsKKysgIGZvciAoaW5mbyA9IHRocmVhZF9kYl9saXN0OyBpbmZvOyBpbmZvID0g aW5mby0+bmV4dCkKKysgICAgaWYgKGluZm8tPmZpbGVuYW1lICE9IE5VTEwpCisrICAgICAgaW5m b19jb3VudCsrOworKworKyAgYXJyYXkgPSB4bWFsbG9jIChzaXplb2YgKCphcnJheSkgKiBpbmZv X2NvdW50KTsKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBhcnJheSk7CisrCisr ICBpbmZvX2NvdW50ID0gMDsKKysgIGZvciAoaW5mbyA9IHRocmVhZF9kYl9saXN0OyBpbmZvOyBp bmZvID0gaW5mby0+bmV4dCkKKysgICAgaWYgKGluZm8tPmZpbGVuYW1lICE9IE5VTEwpCisrICAg ICAgYXJyYXlbaW5mb19jb3VudCsrXSA9IGluZm87CisrCisrICAvKiBTb3J0IEFSUkFZIGJ5IGZp bGVuYW1lcyBhbmQgUElEcy4gICovCisrCisrICBxc29ydCAoYXJyYXksIGluZm9fY291bnQsIHNp emVvZiAoKmFycmF5KSwKKysJIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYl9jb21wYXJlKTsK KysKKysgIC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBmaWxlbmFtZXMgKHJvd3Mp IGFuZCB0aGUgbWF4aW11bSBzdHJpbmcKKysgICAgIGxlbmd0aCBvZiBQSURzIGxpc3QgZm9yIHRo ZSB1bmlxdWUgZmlsZW5hbWVzIChjb2x1bW5zKS4gICovCisrCisrICB1bmlxdWVfZmlsZW5hbWVz ID0gMDsKKysgIG1heF9maWxlbmFtZV9sZW4gPSAwOworKyAgbWF4X3BpZHNfbGVuID0gMDsKKysg IHBpZHNfbGVuID0gMDsKKysgIGZvciAoaSA9IDA7IGkgPCBpbmZvX2NvdW50OyBpKyspCisrICAg IHsKKysgICAgICBpbnQgcGlkID0gYXJyYXlbaV0tPnBpZDsKKysgICAgICBzaXplX3QgdGhpc19w aWRfbGVuOworKworKyAgICAgIGZvciAodGhpc19waWRfbGVuID0gMDsgcGlkICE9IDA7IHBpZCAv PSAxMCkKKysJdGhpc19waWRfbGVuKys7CisrCisrICAgICAgaWYgKGkgPT0gMCB8fCBzdHJjbXAg KGFycmF5W2kgLSAxXS0+ZmlsZW5hbWUsIGFycmF5W2ldLT5maWxlbmFtZSkgIT0gMCkKKysJewor KwkgIHVuaXF1ZV9maWxlbmFtZXMrKzsKKysJICBtYXhfZmlsZW5hbWVfbGVuID0gbWF4IChtYXhf ZmlsZW5hbWVfbGVuLAorKwkJCQkgIHN0cmxlbiAoYXJyYXlbaV0tPmZpbGVuYW1lKSk7CisrCisr CSAgaWYgKGkgPiAwKQorKwkgICAgeworKwkgICAgICBwaWRzX2xlbiAtPSBzdHJsZW4gKCIsICIp OworKwkgICAgICBtYXhfcGlkc19sZW4gPSBtYXggKG1heF9waWRzX2xlbiwgcGlkc19sZW4pOwor KwkgICAgfQorKwkgIHBpZHNfbGVuID0gMDsKKysJfQorKyAgICAgIHBpZHNfbGVuICs9IHRoaXNf cGlkX2xlbiArIHN0cmxlbiAoIiwgIik7CisrICAgIH0KKysgIGlmIChpKQorKyAgICB7CisrICAg ICAgcGlkc19sZW4gLT0gc3RybGVuICgiLCAiKTsKKysgICAgICBtYXhfcGlkc19sZW4gPSBtYXgg KG1heF9waWRzX2xlbiwgcGlkc19sZW4pOworKyAgICB9CisrCisrICAvKiBUYWJsZSBoZWFkZXIg c2hpZnRlZCByaWdodCBieSBwcmVjZWRpbmcgImxpYnRocmVhZC1kYjogICIgd291bGQgbm90IG1h dGNoCisrICAgICBpdHMgY29sdW1ucy4gICovCisrICBpZiAoaW5mb19jb3VudCA+IDAgJiYgYXJn cyA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCisrICAgIHVpX291dF90ZXh0 ICh1aW91dCwgIlxuIik7CisrCisrICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2Vu ZCAodWlvdXQsIDIsIHVuaXF1ZV9maWxlbmFtZXMsCisrCQkJCSAgICAgICAiTGludXhUaHJlYWRE YlRhYmxlIik7CisrCisrICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgbWF4X2ZpbGVuYW1l X2xlbiwgdWlfbGVmdCwgImZpbGVuYW1lIiwKKysJCSAgICAgICAiRmlsZW5hbWUiKTsKKysgIHVp X291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBwaWRzX2xlbiwgdWlfbGVmdCwgIlBJRHMiLCAiUGlk cyIpOworKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysKKysgIHBpZHMgPSB4bWFsbG9j IChtYXhfcGlkc19sZW4gKyAxKTsKKysgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHBpZHMpOworKwor KyAgLyogTm90ZSBJIGlzIGluY3JlbWVudGVkIGluc2lkZSB0aGUgY3ljbGUsIG5vdCBhdCBpdHMg ZW5kLiAgKi8KKysgIGZvciAoaSA9IDA7IGkgPCBpbmZvX2NvdW50OykKKysgICAgeworKyAgICAg IHN0cnVjdCBjbGVhbnVwICpjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5f ZW5kICh1aW91dCwgTlVMTCk7CisrICAgICAgY2hhciAqcGlkc19lbmQ7CisrCisrICAgICAgaW5m byA9IGFycmF5W2ldOworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZmlsZW5h bWUiLCBpbmZvLT5maWxlbmFtZSk7CisrICAgICAgcGlkc19lbmQgPSBwaWRzOworKworKyAgICAg IHdoaWxlIChpIDwgaW5mb19jb3VudCAmJiBzdHJjbXAgKGluZm8tPmZpbGVuYW1lLCBhcnJheVtp XS0+ZmlsZW5hbWUpID09IDApCisrCXsKKysJICBpZiAocGlkc19lbmQgIT0gcGlkcykKKysJICAg IHsKKysJICAgICAgKnBpZHNfZW5kKysgPSAnLCc7CisrCSAgICAgICpwaWRzX2VuZCsrID0gJyAn OworKwkgICAgfQorKwkgIHBpZHNfZW5kICs9IHhzbnByaW50ZiAocGlkc19lbmQsICZwaWRzW21h eF9waWRzX2xlbiArIDFdIC0gcGlkc19lbmQsCisrCQkJCSAiJXUiLCBhcnJheVtpXS0+cGlkKTsK KysJICBnZGJfYXNzZXJ0IChwaWRzX2VuZCA8ICZwaWRzW21heF9waWRzX2xlbiArIDFdKTsKKysK KysJICBpKys7CisrCX0KKysgICAgICAqcGlkc19lbmQgPSAnXDAnOworKworKyAgICAgIHVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAicGlkcyIsIHBpZHMpOworKworKyAgICAgIHVpX291dF90 ZXh0ICh1aW91dCwgIlxuIik7CisrICAgICAgZG9fY2xlYW51cHMgKGNoYWluKTsKKysgICAgfQor KworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKworKyAgaWYgKGluZm9fY291bnQgPT0gMCkK KysgICAgdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCBfKCJObyBhdXRvLWxvYWRlZCBsaWJ0aHJl YWQtZGIuXG4iKSk7CisrfQorKworIHN0YXRpYyB2b2lkCisgaW5pdF90aHJlYWRfZGJfb3BzICh2 b2lkKQorIHsKK0BAIC0xODYzLDYgKzIwNDAsMjMgQEAgV2hlbiBub24temVybywgbGlidGhyZWFk LWRiIGRlYnVnZ2luZyBpcworIAkJCSAgICBzaG93X2xpYnRocmVhZF9kYl9kZWJ1ZywKKyAJCQkg ICAgJnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOworIAorKyAgYWRkX3NldHNob3dfYm9v bGVhbl9jbWQgKCJsaWJ0aHJlYWQtZGIiLCBjbGFzc19zdXBwb3J0LAorKwkJCSAgICZhdXRvX2xv YWRfdGhyZWFkX2RiLCBfKCJcCisrRW5hYmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIGlu ZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYi4iKSwgXygiXAorK1Nob3cgd2hldGhlciBhdXRv LWxvYWRpbmcgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIGVuYWJsZWQuIiksIF8o IlwKKytJZiBlbmFibGVkLCBsaWJ0aHJlYWRfZGIgd2lsbCBiZSBzZWFyY2hlZCBpbiAnc2V0IGxp YnRocmVhZC1kYi1zZWFyY2gtcGF0aCdcblwKKytsb2NhdGlvbnMgdG8gbG9hZCBsaWJ0aHJlYWRf ZGIgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmZlcmlvci5cblwKKytTdGFuZGFyZCBzeXN0ZW0gbGli dGhyZWFkX2RiIHN0aWxsIGdldHMgbG9hZGVkIGV2ZW4gd2l0aCB0aGlzIG9wdGlvbiBvZmYuXG5c CisrVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBp bmZlcmlvcnMuIiksCisrCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiLAorKwkJ CSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2FkX3Nob3df Y21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAoImxpYnRocmVhZC1kYiIsIGNsYXNzX2lu Zm8sIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiwKKysJICAgXygiUHJpbnQgdGhlIGxpc3Qg b2YgbG9hZGVkIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYi5cblwKKytVc2FnZTogaW5m byBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3Rf Z2V0ICgpKTsKKysKKyAgIC8qIEFkZCBvdXJzZWx2ZXMgdG8gb2JqZmlsZSBldmVudCBjaGFpbi4g ICovCisgICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKHRocmVhZF9kYl9uZXdfb2JqZmls ZSk7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0 NDoyNi45NTc0Mzc1MDMgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJ MjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAKK0BAIC05NDUsOCArOTQ1LDggQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIC8qIFNraXAgYXV0by1sb2FkaW5nIHNlY3Rp b24tc3BlY2lmaWVkIHNjcmlwdHMgdW50aWwgd2UndmUgc291cmNlZAorICAgICAgbG9jYWxfZ2Ri aW5pdCAod2hpY2ggaXMgb2Z0ZW4gdXNlZCB0byBhdWdtZW50IHRoZSBzb3VyY2Ugc2VhcmNoCisg ICAgICBwYXRoKS4gICovCistICBzYXZlX2F1dG9fbG9hZCA9IGdkYnB5X2dsb2JhbF9hdXRvX2xv YWQ7CistICBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMDsKKysgIHNhdmVfYXV0b19sb2FkID0g Z2xvYmFsX2F1dG9fbG9hZDsKKysgIGdsb2JhbF9hdXRvX2xvYWQgPSAwOworIAorICAgaWYgKGV4 ZWNhcmcgIT0gTlVMTAorICAgICAgICYmIHN5bWFyZyAhPSBOVUxMCitAQCAtMTAyMiwxNCArMTAy MiwyNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAorICAgLyogUmVhZCB0aGUgLmdk YmluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksICppZiogaXQgaXNuJ3QKKyAgICAg IHRoZSBzYW1lIGFzIHRoZSAkSE9NRS8uZ2RiaW5pdCBmaWxlIChpdCBzaG91bGQgZXhpc3QsIGFs c28pLiAgKi8KKy0gIGlmIChsb2NhbF9nZGJpbml0ICYmICFpbmhpYml0X2dkYmluaXQpCistICAg IGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBsb2NhbF9nZGJpbml0LCAwLCBS RVRVUk5fTUFTS19BTEwpOworKyAgaWYgKGxvY2FsX2dkYmluaXQpCisrICAgIHsKKysgICAgICBh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2Ri aW5pdCk7CisrCisrICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2Fs X2dkYmluaXQpCisrCXsKKysJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAxOwor KworKwkgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBsb2NhbF9nZGJpbml0 LCAwLAorKwkJCQlSRVRVUk5fTUFTS19BTEwpOworKwl9CisrICAgIH0KKyAKKyAgIC8qIE5vdyB0 aGF0IGFsbCAuZ2RiaW5pdCdzIGhhdmUgYmVlbiByZWFkIGFuZCBhbGwgLWQgb3B0aW9ucyBoYXZl IGJlZW4KKyAgICAgIHByb2Nlc3NlZCwgd2UgY2FuIHJlYWQgYW55IHNjcmlwdHMgbWVudGlvbmVk IGluIFNZTUFSRy4KKyAgICAgIFdlIHdhaXQgdW50aWwgbm93IGJlY2F1c2UgaXQgaXMgY29tbW9u IHRvIGFkZCB0byB0aGUgc291cmNlIHNlYXJjaAorICAgICAgcGF0aCBpbiBsb2NhbF9nZGJpbml0 LiAgKi8KKy0gIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSBzYXZlX2F1dG9fbG9hZDsKKysgIGds b2JhbF9hdXRvX2xvYWQgPSBzYXZlX2F1dG9fbG9hZDsKKyAgIEFMTF9PQkpGSUxFUyAob2JqZmls ZSkKKyAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworIAorQEAg LTExOTYsNyArMTIwNiw3IEBAIEF0IHN0YXJ0dXAsIEdEQiByZWFkcyB0aGUgZm9sbG93aW5nIGlu aXQKKyAiKSwgaG9tZV9nZGJpbml0KTsKKyAgIGlmIChsb2NhbF9nZGJpbml0KQorICAgICBmcHJp bnRmX3VuZmlsdGVyZWQgKHN0cmVhbSwgXygiXAorLSAgICogbG9jYWwgaW5pdCBmaWxlOiAuLyVz XG5cCisrICAgKiBsb2NhbCBpbml0IGZpbGUgKHNlZSBhbHNvICdzZXQgYXV0by1sb2FkIGxvY2Fs LWdkYmluaXQnKTogLi8lc1xuXAorICIpLCBsb2NhbF9nZGJpbml0KTsKKyAgIGZwdXRzX3VuZmls dGVyZWQgKF8oIlxuXAorIEZvciBtb3JlIGluZm9ybWF0aW9uLCB0eXBlIFwiaGVscFwiIGZyb20g d2l0aGluIEdEQiwgb3IgY29uc3VsdCB0aGVcblwKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9kb2MvZ2RiLnRleGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ0OjI2LjkyODQzNzU3NyAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0 LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAgLTEwMzQsNiArMTAzNCw3IEBAIFlvdSBj YW4gcnVuIEB2YWx1ZXtHREJOfSBpbiB2YXJpb3VzIGFsdGUKKyBiYXRjaCBtb2RlIG9yIHF1aWV0 IG1vZGUuCisgCisgQHRhYmxlIEBjb2RlCisrQGFuY2hvcnstbnh9CisgQGl0ZW0gLW54CisgQGl0 ZW14IC1uCisgQGNpbmRleCBAY29kZXstLW54fQorQEAgLTEyNjUsNiArMTI2Niw3IEBAIEhlcmUn cyB0aGUgZGVzY3JpcHRpb24gb2Ygd2hhdCBAdmFsdWV7R0QKKyBTZXRzIHVwIHRoZSBjb21tYW5k IGludGVycHJldGVyIGFzIHNwZWNpZmllZCBieSB0aGUgY29tbWFuZCBsaW5lCisgKEBweHJlZntN b2RlIE9wdGlvbnMsIGludGVycHJldGVyfSkuCisgCisrQGFuY2hvcntPcHRpb24gLWluaXQtZXZh bC1jb21tYW5kfQorIEBpdGVtCisgRXhlY3V0ZXMgY29tbWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMg c3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHstaWV4fSBhbmQKKyBAc2FtcHstaXh9IG9wdGlvbnMgaW4g dGhlaXIgc3BlY2lmaWVkIG9yZGVyLiAgVXN1YWxseSB5b3Ugc2hvdWxkIHVzZSB0aGUKK0BAIC0x Mjc5LDYgKzEyODEsNyBAQCB1c2VkIHdoZW4gYnVpbGRpbmcgQHZhbHVle0dEQk59OyBAcHhyZWZ7 CisgICxTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGFuZCBzZXR0aW5nc30pIGFuZCBleGVjdXRl cyBhbGwgdGhlIGNvbW1hbmRzIGluCisgdGhhdCBmaWxlLgorIAorK0BhbmNob3J7SG9tZSBEaXJl Y3RvcnkgSW5pdCBGaWxlfQorIEBpdGVtCisgUmVhZHMgdGhlIGluaXQgZmlsZSAoaWYgYW55KSBp biB5b3VyIGhvbWUgZGlyZWN0b3J5QGZvb3Rub3Rle09uCisgRE9TL1dpbmRvd3Mgc3lzdGVtcywg dGhlIGhvbWUgZGlyZWN0b3J5IGlzIHRoZSBvbmUgcG9pbnRlZCB0byBieSB0aGUKK0BAIC0xMjg4 LDkgKzEyOTEsMTIgQEAgdGhhdCBmaWxlLgorIEBpdGVtCisgUHJvY2Vzc2VzIGNvbW1hbmQgbGlu ZSBvcHRpb25zIGFuZCBvcGVyYW5kcy4KKyAKKytAYW5jaG9ye0luaXQgRmlsZSBpbiB0aGUgQ3Vy cmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9CisgQGl0ZW0KKyBSZWFkcyBhbmQgZXhlY3V0 ZXMgdGhlIGNvbW1hbmRzIGZyb20gaW5pdCBmaWxlIChpZiBhbnkpIGluIHRoZSBjdXJyZW50Cist d29ya2luZyBkaXJlY3RvcnkuICBUaGlzIGlzIG9ubHkgZG9uZSBpZiB0aGUgY3VycmVudCBkaXJl Y3RvcnkgaXMKKyt3b3JraW5nIGRpcmVjdG9yeSBhcyBsb25nIGFzIEBzYW1we3NldCBhdXRvLWxv YWQgbG9jYWwtZ2RiaW5pdH0gaXMgc2V0IHRvCisrQHNhbXB7b259IChAcHhyZWZ7SW5pdCBGaWxl IGluIHRoZSBDdXJyZW50IERpcmVjdG9yeX0pLgorK1RoaXMgaXMgb25seSBkb25lIGlmIHRoZSBj dXJyZW50IGRpcmVjdG9yeSBpcworIGRpZmZlcmVudCBmcm9tIHlvdXIgaG9tZSBkaXJlY3Rvcnku ICBUaHVzLCB5b3UgY2FuIGhhdmUgbW9yZSB0aGFuIG9uZQorIGluaXQgZmlsZSwgb25lIGdlbmVy aWMgaW4geW91ciBob21lIGRpcmVjdG9yeSwgYW5kIGFub3RoZXIsIHNwZWNpZmljCisgdG8gdGhl IHByb2dyYW0geW91IGFyZSBkZWJ1Z2dpbmcsIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91IGlu dm9rZQorQEAgLTEzMDYsNyArMTMxMiw3IEBAIElmIHlvdSB3aXNoIHRvIGRpc2FibGUgdGhlIGF1 dG8tbG9hZGluZworIHlvdSBtdXN0IGRvIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6Cisg CisgQHNtYWxsZXhhbXBsZQorLSQgZ2RiIC1pZXggInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYi IG15cHJvZ3JhbQorKyQgZ2RiIC1pZXggInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb2Zm IiBteXByb2dyYW0KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIE9wdGlvbiBAc2FtcHstZXh9IGRv ZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHRoZW4gdHVybmVkCitAQCAt Mjg5MSw2ICsyODk3LDcgQEAgcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgorIEB4cmVm e1NldCBXYXRjaHBvaW50cywsU2V0dGluZyBXYXRjaHBvaW50c30sIGZvciBpbmZvcm1hdGlvbiBh Ym91dAorIHdhdGNocG9pbnRzIGluIHByb2dyYW1zIHdpdGggbXVsdGlwbGUgdGhyZWFkcy4KKyAK KytAYW5jaG9ye3NldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9CisgQHRhYmxlIEBjb2RlCisg QGtpbmRleCBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoCisgQGNpbmRleCBzZWFyY2ggcGF0 aCBmb3IgQGNvZGV7bGlidGhyZWFkX2RifQorQEAgLTI5MDUsMTEgKzI5MTIsMTUgQEAgbWFjcm8u CisgT24gQHNje2dudX0vTGludXggYW5kIFNvbGFyaXMgc3lzdGVtcywgQHZhbHVle0dEQk59IHVz ZXMgYSBgYGhlbHBlcicnCisgQGNvZGV7bGlidGhyZWFkX2RifSBsaWJyYXJ5IHRvIG9idGFpbiBp bmZvcm1hdGlvbiBhYm91dCB0aHJlYWRzIGluIHRoZQorIGluZmVyaW9yIHByb2Nlc3MuICBAdmFs dWV7R0RCTn0gd2lsbCB1c2UgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQorLXRvIGZp bmQgQGNvZGV7bGlidGhyZWFkX2RifS4KKyt0byBmaW5kIEBjb2Rle2xpYnRocmVhZF9kYn0uICBA dmFsdWV7R0RCTn0gYWxzbyBjb25zdWx0cyBmaXJzdCBpZiBpbmZlcmlvcgorK3NwZWNpZmljIHRo cmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBsb2FkaW5nIGlzIGVuYWJsZWQKKytieSBAc2FtcHtzZXQg YXV0by1sb2FkIGxpYnRocmVhZC1kYn0gKEBweHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSku CisgCisgQSBzcGVjaWFsIGVudHJ5IEBzYW1weyRzZGlyfSBmb3IgQHNhbXB7bGlidGhyZWFkLWRi LXNlYXJjaC1wYXRofQorIHJlZmVycyB0byB0aGUgZGVmYXVsdCBzeXN0ZW0gZGlyZWN0b3JpZXMg dGhhdCBhcmUKKy1ub3JtYWxseSBzZWFyY2hlZCBmb3IgbG9hZGluZyBzaGFyZWQgbGlicmFyaWVz LgorK25vcm1hbGx5IHNlYXJjaGVkIGZvciBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXMuICBUaGUg QHNhbXB7JHNkaXJ9IGVudHJ5CisraXMgdGhlIG9ubHkga2luZCBub3QgbmVlZGluZyB0byBiZSBl bmFibGVkIGJ5IEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQorKyhAcHhyZWZ7bGli dGhyZWFkX2RiLnNvLjEgZmlsZX0pLgorIAorIEEgc3BlY2lhbCBlbnRyeSBAc2FtcHskcGRpcn0g Zm9yIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KKyByZWZlcnMgdG8gdGhlIGRpcmVj dG9yeSBmcm9tIHdoaWNoIEBjb2Rle2xpYnB0aHJlYWR9CitAQCAtMjAzMjAsNiArMjAzMzEsNyBA QCBkZXNjcmliZWQgaGVyZS4KKyAqIFNjcmVlbiBTaXplOjogICAgICAgICAgICAgICAgIFNjcmVl biBzaXplCisgKiBOdW1iZXJzOjogICAgICAgICAgICAgICAgICAgICBOdW1iZXJzCisgKiBBQkk6 OiAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgY3VycmVudCBBQkkKKysq IEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBhc3Nv Y2lhdGVkIGZpbGVzCisgKiBNZXNzYWdlcy9XYXJuaW5nczo6ICAgICAgICAgICBPcHRpb25hbCB3 YXJuaW5ncyBhbmQgbWVzc2FnZXMKKyAqIERlYnVnZ2luZyBPdXRwdXQ6OiAgICAgICAgICAgIE9w dGlvbmFsIG1lc3NhZ2VzIGFib3V0IGludGVybmFsIGhhcHBlbmluZ3MKKyAqIE90aGVyIE1pc2Mg U2V0dGluZ3M6OiAgICAgICAgIE90aGVyIE1pc2NlbGxhbmVvdXMgU2V0dGluZ3MKK0BAIC0yMDc0 NSw2ICsyMDc1NywyMjcgQEAgV2l0aCBubyBhcmd1bWVudCwgc2hvdyB0aGUgbGlzdCBvZiBzdXBw bworIFNldCB0aGUgY3VycmVudCBDQHR7Kyt9IEFCSSB0byBAdmFye2FiaX0sIG9yIHJldHVybiB0 byBhdXRvbWF0aWMgZGV0ZWN0aW9uLgorIEBlbmQgdGFibGUKKyAKKytAbm9kZSBBdXRvLWxvYWRp bmcKKytAc2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgYXNzb2NpYXRlZCBmaWxlcworK0Bj aW5kZXggYXV0by1sb2FkaW5nCisrCisrQHZhbHVle0dEQk59IHNvbWV0aW1lcyByZWFkcyBmaWxl cyB3aXRoIGNvbW1hbmRzIGFuZCBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5LAorK3dpdGhvdXQgYmVp bmcgZXhwbGljaXRseSB0b2xkIHNvIGJ5IHRoZSB1c2VyLiAgV2UgY2FsbCB0aGlzIGZlYXR1cmUK KytAZGZue2F1dG8tbG9hZGluZ30uICBXaGlsZSBhdXRvLWxvYWRpbmcgaXMgdXNlZnVsIGZvciBh dXRvbWF0aWNhbGx5IGFkYXB0aW5nCisrQHZhbHVle0dEQk59IHRvIHRoZSBuZWVkcyBvZiB5b3Vy IHByb2plY3QsIGl0IGNhbiBzb21ldGltZXMgcHJvZHVjZSB1bmV4cGVjdGVkCisrcmVzdWx0cyBv ciBpbnRyb2R1Y2Ugc2VjdXJpdHkgcmlza3MgKGUuZy4sIGlmIHRoZSBmaWxlIGNvbWVzIGZyb20g dW50cnVzdGVkCisrc291cmNlcykuCisrCisrRm9yIHRoZXNlIHJlYXNvbnMsIEB2YWx1ZXtHREJO fSBpbmNsdWRlcyBjb21tYW5kcyBhbmQgb3B0aW9ucyB0byBsZXQgeW91CisrY29udHJvbCB3aGVu IHRvIGF1dG8tbG9hZCBmaWxlcyBhbmQgd2hpY2ggZmlsZXMgc2hvdWxkIGJlIGF1dG8tbG9hZGVk LgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBvZmZ9CisrQGtpbmRl eCBzZXQgYXV0by1sb2FkIG9mZgorK0BpdGVtIHNldCBhdXRvLWxvYWQgb2ZmCisrR2xvYmFsbHkg ZGlzYWJsZSBsb2FkaW5nIG9mIGFsbCBhdXRvLWxvYWRlZCBmaWxlcy4KKytZb3UgbWF5IHdhbnQg dG8gdXNlIHRoaXMgY29tbWFuZCB3aXRoIHRoZSBAc2FtcHstaWV4fSBvcHRpb24KKysoQHB4cmVm e09wdGlvbiAtaW5pdC1ldmFsLWNvbW1hbmR9KSBzdWNoIGFzOgorK0BzbWFsbGV4YW1wbGUKKysk IEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgb2ZmIiB1bnRydXN0ZWQtZXhlY3V0YWJsZSBj b3JlZmlsZX0KKytAZW5kIHNtYWxsZXhhbXBsZQorKworK0JlIGF3YXJlIHRoYXQgc3lzdGVtIGlu aXQgZmlsZSAoQHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb259KQorK2FuZCBpbml0IGZp bGVzIGZyb20geW91ciBob21lIGRpcmVjdG9yeSAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQg RmlsZX0pCisrc3RpbGwgZ2V0IHJlYWQgKGFzIHRoZXkgY29tZSBmcm9tIGdlbmVyYWxseSB0cnVz dGVkIGRpcmVjdG9yaWVzKS4KKytUbyBwcmV2ZW50IEB2YWx1ZXtHREJOfSBmcm9tIGF1dG8tbG9h ZGluZyBldmVuIHRob3NlIGluaXQgZmlsZXMsIHVzZSB0aGUKKytAb3B0aW9uey1ueH0gb3B0aW9u IChAcHhyZWZ7TW9kZSBPcHRpb25zfSksIGluIGFkZGl0aW9uIHRvCisrQGNvZGV7c2V0IGF1dG8t bG9hZCBub30uCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZH0KKytAa2luZGV4IHNob3cgYXV0 by1sb2FkCisrQGl0ZW0gc2hvdyBhdXRvLWxvYWQKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5n IG9mIGVhY2ggc3BlY2lmaWMgQHNhbXB7YXV0by1sb2FkfSBmaWxlKHMpIGlzIGVuYWJsZWQKKytv ciBkaXNhYmxlZC4KKysKKytAc21hbGxleGFtcGxlCisrKGdkYikgc2hvdyBhdXRvLWxvYWQKKytn ZGItc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRz IHNjcmlwdHMgaXMgb24uCisrbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGluZmVyaW9y IHNwZWNpZmljIGxpYnRocmVhZF9kYiBpcyBvbi4KKytsb2NhbC1nZGJpbml0OiAgQXV0by1sb2Fk aW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgorK3B5 dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9uLgorK0Bl bmQgc21hbGxleGFtcGxlCisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KKytAa2luZGV4IGlu Zm8gYXV0by1sb2FkCisrQGl0ZW0gaW5mbyBhdXRvLWxvYWQKKytQcmludCB3aGV0aGVyIGVhY2gg c3BlY2lmaWMgQHNhbXB7YXV0by1sb2FkfSBmaWxlKHMpIGhhdmUgYmVlbiBhdXRvLWxvYWRlZCBv cgorK25vdC4KKysKKytAc21hbGxleGFtcGxlCisrKGdkYikgaW5mbyBhdXRvLWxvYWQKKytnZGIt c2NyaXB0czoKKytMb2FkZWQgIFNjcmlwdAorK1llcyAgICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdk Yi5nZGIKKytsaWJ0aHJlYWQtZGI6ICBObyBhdXRvLWxvYWRlZCBsaWJ0aHJlYWQtZGIuCisrbG9j YWwtZ2RiaW5pdDogIExvY2FsIC5nZGJpbml0IGZpbGUgIi9ob21lL3VzZXIvZ2RiLy5nZGJpbml0 IiBoYXMgYmVlbiBsb2FkZWQuCisrcHl0aG9uLXNjcmlwdHM6CisrTG9hZGVkICBTY3JpcHQKKytZ ZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkKKytAZW5kIHNtYWxsZXhhbXBsZQorK0Bl bmQgdGFibGUKKysKKytUaGVzZSBhcmUgdmFyaW91cyBraW5kcyBvZiBmaWxlcyBAdmFsdWV7R0RC Tn0gY2FuIGF1dG9tYXRpY2FsbHkgbG9hZDoKKysKKytAaXRlbWl6ZSBAYnVsbGV0CisrQGl0ZW0K KytAeHJlZntvYmpmaWxlLWdkYi5weSBmaWxlfSwgY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0BpdGVtCisrQHhyZWZ7b2JqZmlsZS1nZGIuZ2RiIGZp bGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCisrQGl0 ZW0KKytAeHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSwKKytjb250cm9sbGVkIGJ5 IEByZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQGl0ZW0KKytAeHJlZntJbml0 IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fSwKKytjb250cm9sbGVkIGJ5IEByZWZ7c2V0 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAaXRlbQorK0B4cmVme2xpYnRocmVhZF9kYi5z by4xIGZpbGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9 LgorK0BlbmQgaXRlbWl6ZQorKworK1RoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21t YW5kcyBmb3IgdGhlIGF1dG8tbG9hZGluZzoKKysKKytAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rp b25zIC41IC41CisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBvZmZ9LgorK0B0YWIgRGlzYWJs ZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWR9Lgor K0B0YWIgU2hvdyBzZXR0aW5nIG9mIGFsbCBraW5kcyBvZiBmaWxlcy4KKytAaXRlbSBAeHJlZntp bmZvIGF1dG8tbG9hZH0uCisrQHRhYiBTaG93IHN0YXRlIG9mIGFsbCBraW5kcyBvZiBmaWxlcy4K KytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KKytAdGFiIENvbnRyb2wg Zm9yIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRv LWxvYWQgZ2RiLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBj b21tYW5kIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9 LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiBAdmFsdWV7R0RCTn0gY29tbWFuZCBzY3JpcHRzLgorK0Bp dGVtIEB4cmVme3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0YWIgQ29udHJvbCBm b3IgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgorK0BpdGVtIEB4cmVme3Nob3cgYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzfS4KKytAdGFiIFNob3cgc2V0dGluZyBvZiBAdmFsdWV7R0RCTn0g UHl0aG9uIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHN9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCisr QGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAdGFiIENvbnRyb2wg Zm9yIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisrQGl0ZW0gQHhyZWZ7c2hv dyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCisrQHRhYiBTaG93IHNldHRpbmcgb2YgaW5pdCBm aWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0fS4KKytAdGFiIFNob3cgc3RhdGUgb2YgaW5pdCBmaWxlIGluIHRoZSBj dXJyZW50IGRpcmVjdG9yeS4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1k Yn0uCisrQHRhYiBDb250cm9sIGZvciB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0g QHhyZWZ7c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KKytAdGFiIFNob3cgc2V0dGluZyBv ZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQg bGlidGhyZWFkLWRifS4KKytAdGFiIFNob3cgc3RhdGUgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJy YXJ5LgorK0BlbmQgbXVsdGl0YWJsZQorKworK0BtZW51CisrKiBJbml0IEZpbGUgaW4gdGhlIEN1 cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2Ri aW5pdH0KKysqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQv c2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrKiBvYmpmaWxlLWdkYi5nZGIgZmls ZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlw dH0KKytAeHJlZntQeXRob24gQXV0by1sb2FkaW5nfS4KKytAZW5kIG1lbnUKKysKKytAbm9kZSBJ bml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5CisrQHN1YnNlY3Rpb24gQXV0b21hdGlj YWxseSBsb2FkaW5nIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKytAY2luZGV4 IGF1dG8tbG9hZGluZyBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CisrCisrQnkg ZGVmYXVsdCwgQHZhbHVle0dEQk59IHJlYWRzIGFuZCBleGVjdXRlcyB0aGUgY2FubmVkIHNlcXVl bmNlcyBvZiBjb21tYW5kcworK2Zyb20gaW5pdCBmaWxlIChpZiBhbnkpIGluIHRoZSBjdXJyZW50 IHdvcmtpbmcgZGlyZWN0b3J5LAorK3NlZSBAcmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBE aXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9LgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorK0BraW5kZXggc2V0IGF1dG8tbG9hZCBsb2NhbC1n ZGJpbml0CisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IFtvbnxvZmZdCisrRW5h YmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzCisrKEBweHJlZntTZXF1ZW5jZXN9KSBmb3VuZCBpbiBpbml0IGZpbGUgaW4gdGhlIGN1 cnJlbnQgZGlyZWN0b3J5LgorKworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dH0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytAaXRlbSBzaG93IGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0CisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5u ZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZyb20gaW5pdCBmaWxlIGluIHRoZQorK2N1cnJlbnQg ZGlyZWN0b3J5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisrCisrQGFuY2hvcntpbmZvIGF1dG8t bG9hZCBsb2NhbC1nZGJpbml0fQorK0BraW5kZXggaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dAorK0BpdGVtIGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytQcmludCB3aGV0aGVyIGNh bm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgaW4gdGhlCisrY3VycmVu dCBkaXJlY3RvcnkgaGF2ZSBiZWVuIGF1dG8tbG9hZGVkLgorK0BlbmQgdGFibGUKKysKKytAbm9k ZSBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlCisrQHN1YnNlY3Rpb24gQXV0b21hdGljYWxseSBsb2Fk aW5nIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeQorK0BjaW5kZXggYXV0by1sb2FkaW5nIGxpYnRo cmVhZF9kYi5zby4xCisrCisrVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBwcmVzZW50IG9ubHkg b24gQHNje2dudX0vTGludXggbmF0aXZlIGhvc3RzLgorKworK0B2YWx1ZXtHREJOfSByZWFkcyBp biBzb21lIGNhc2VzIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBmcm9tIHBsYWNlcyBzcGVjaWZp YworK3RvIHRoZSBpbmZlcmlvciAoQHB4cmVme3NldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9 KS4KKysKKytUaGUgc3BlY2lhbCBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9IGVudHJ5 IEBzYW1weyRzZGlyfSBpcyBwcm9jZXNzZWQKKyt3aXRob3V0IGNoZWNraW5nIHRoaXMgQHNhbXB7 c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IHN3aXRjaCBhcyBzeXN0ZW0KKytsaWJyYXJpZXMg aGF2ZSB0byBiZSB0cnVzdGVkIGluIGdlbmVyYWwuICBJbiBhbGwgb3RoZXIgY2FzZXMgb2YKKytA c2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9IGVudHJpZXMgQHZhbHVle0dEQk59IGNoZWNr cyBmaXJzdCBpZiBAc2FtcHtzZXQKKythdXRvLWxvYWQgbGlidGhyZWFkLWRifSBpcyBlbmFibGVk IGJlZm9yZSB0cnlpbmcgdG8gb3BlbiBzdWNoIHRocmVhZCBkZWJ1Z2dpbmcKKytsaWJyYXJ5Lgor KworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Cisr QGtpbmRleCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK0BpdGVtIHNldCBhdXRvLWxvYWQg bGlidGhyZWFkLWRiIFtvbnxvZmZdCisrRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGlu ZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrCisrQGFu Y2hvcntzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrQGtpbmRleCBzaG93IGF1dG8tbG9h ZCBsaWJ0aHJlYWQtZGIKKytAaXRlbSBzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytTaG93 IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dp bmcgbGlicmFyeSBpcworK2VuYWJsZWQgb3IgZGlzYWJsZWQuCisrCisrQGFuY2hvcntpbmZvIGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIKKytAaXRlbSBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytQcmludCB0aGUgbGlzdCBv ZiBhbGwgbG9hZGVkIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyaWVz IGFuZAorK2ZvciBlYWNoIHN1Y2ggbGlicmFyeSBwcmludCBsaXN0IG9mIGluZmVyaW9yIEB2YXJ7 cGlkfXMgdXNpbmcgaXQuCisrQGVuZCB0YWJsZQorKworK0Bub2RlIG9iamZpbGUtZ2RiLmdkYiBm aWxlCisrQHN1YnNlY3Rpb24gVGhlIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0gZmlsZQor K0BjaW5kZXggYXV0by1sb2FkaW5nIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0KKysKKytA dmFsdWV7R0RCTn0gdHJpZXMgdG8gbG9hZCBhbiBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5nZGJ9 IGZpbGUgY29udGFpbmluZworK2Nhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgKEBweHJlZntT ZXF1ZW5jZXN9KSwgYXMgbG9uZyBhcyBAc2FtcHtzZXQKKythdXRvLWxvYWQgZ2RiLXNjcmlwdHN9 IGlzIHNldCB0byBAc2FtcHtvbn0uCisrCisrRm9yIG1vcmUgYmFja2dyb3VuZCByZWZlciB0byB0 aGUgc2ltaWxhciBQeXRob24gc2NyaXB0cyBhdXRvLWxvYWRpbmcKKytkZXNjcmlwdGlvbiAoQHB4 cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9KS4KKysKKytAdGFibGUgQGNvZGUKKytAYW5jaG9ye3Nl dCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIGdkYi1zY3Jp cHRzCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbb258b2ZmXQorK0VuYWJsZSBv ciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5k cyBzY3JpcHRzLgorKworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtp bmRleCBzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cworK0BpdGVtIHNob3cgYXV0by1sb2FkIGdk Yi1zY3JpcHRzCisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgZW5hYmxlZCBvcgorK2Rpc2FibGVkLgorKworK0BhbmNo b3J7aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBn ZGItc2NyaXB0cworK0BjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBjYW5uZWQgc2Vx dWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMKKytAaXRlbSBpbmZvIGF1dG8tbG9hZCBnZGItc2Ny aXB0cyBbQHZhcntyZWdleHB9XQorK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBjYW5uZWQgc2VxdWVu Y2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0KKythdXRvLWxvYWRlZC4K KytAZW5kIHRhYmxlCisrCisrSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIHdpdGgKKyttYXRjaGluZyBuYW1lcyBhcmUg cHJpbnRlZC4KKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0aW9uIE9wdGlvbmFs IFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorQEAgLTIxNjE2LDcgKzIxODQ5LDcgQEAgYXV0b21h dGljYWxseSBpbXBvcnRlZCB3aGVuIEB2YWx1ZXtHREJOfQorIEBtZW51CisgKiBQeXRob24gQ29t bWFuZHM6OiAgICAgICAgICAgICBBY2Nlc3NpbmcgUHl0aG9uIGZyb20gQHZhbHVle0dEQk59Lgor ICogUHl0aG9uIEFQSTo6ICAgICAgICAgICAgICAgICAgQWNjZXNzaW5nIEB2YWx1ZXtHREJOfSBm cm9tIFB5dGhvbi4KKy0qIEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAgIEF1dG9tYXRpY2Fs bHkgbG9hZGluZyBQeXRob24gY29kZS4KKysqIFB5dGhvbiBBdXRvLWxvYWRpbmc6OiAgICAgICAg IEF1dG9tYXRpY2FsbHkgbG9hZGluZyBQeXRob24gY29kZS4KKyAqIFB5dGhvbiBtb2R1bGVzOjog ICAgICAgICAgICAgIFB5dGhvbiBtb2R1bGVzIHByb3ZpZGVkIGJ5IEB2YWx1ZXtHREJOfS4KKyBA ZW5kIG1lbnUKKyAKK0BAIC0yMjc5OSw3ICsyMzAzMiw3IEBAIFRoaXMgcHJhY3RpY2Ugd2lsbCBl bmFibGUgQHZhbHVle0dEQk59IHQKKyB5b3VyIHByZXR0eS1wcmludGVycyBhdCB0aGUgc2FtZSB0 aW1lLCBiZWNhdXNlIHRoZXkgd2lsbCBoYXZlCisgZGlmZmVyZW50IG5hbWVzLgorIAorLVlvdSBz aG91bGQgd3JpdGUgYXV0by1sb2FkZWQgY29kZSAoQHB4cmVme0F1dG8tbG9hZGluZ30pIHN1Y2gg dGhhdCBpdAorK1lvdSBzaG91bGQgd3JpdGUgYXV0by1sb2FkZWQgY29kZSAoQHB4cmVme1B5dGhv biBBdXRvLWxvYWRpbmd9KSBzdWNoIHRoYXQgaXQKKyBjYW4gYmUgZXZhbHVhdGVkIG11bHRpcGxl IHRpbWVzIHdpdGhvdXQgY2hhbmdpbmcgaXRzIG1lYW5pbmcuICBBbgorIGlkZWFsIGF1dG8tbG9h ZCBmaWxlIHdpbGwgY29uc2lzdCBzb2xlbHkgb2YgQGNvZGV7aW1wb3J0fXMgb2YgeW91cgorIHBy aW50ZXIgbW9kdWxlcywgZm9sbG93ZWQgYnkgYSBjYWxsIHRvIGEgcmVnaXN0ZXIgcHJldHR5LXBy aW50ZXJzIHdpdGgKK0BAIC0yMzc2MCw3ICsyMzk5Myw3IEBAIFRoZSBmb2xsb3dpbmcgb2JqZmls ZS1yZWxhdGVkIGZ1bmN0aW9ucworIAorIEBmaW5kZXggZ2RiLmN1cnJlbnRfb2JqZmlsZQorIEBk ZWZ1biBnZGIuY3VycmVudF9vYmpmaWxlICgpCistV2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24g c2NyaXB0IChAcHhyZWZ7QXV0by1sb2FkaW5nfSksIEB2YWx1ZXtHREJOfQorK1doZW4gYXV0by1s b2FkaW5nIGEgUHl0aG9uIHNjcmlwdCAoQHB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9KSwgQHZh bHVle0dEQk59Cisgc2V0cyB0aGUgYGBjdXJyZW50IG9iamZpbGUnJyB0byB0aGUgY29ycmVzcG9u ZGluZyBvYmpmaWxlLiAgVGhpcworIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1cnJlbnQgb2JqZmls ZS4gIElmIHRoZXJlIGlzIG5vIGN1cnJlbnQgb2JqZmlsZSwKKyB0aGlzIGZ1bmN0aW9uIHJldHVy bnMgQGNvZGV7Tm9uZX0uCitAQCAtMjQ2NzEsOSArMjQ5MDQsOSBAQCByZXNvbHZlIHRoaXMgdG8g dGhlIGxhenkgc3RyaW5nJ3MgY2hhcmFjCisgd3JpdGFibGUuCisgQGVuZCBkZWZ2YXIKKyAKKy1A bm9kZSBBdXRvLWxvYWRpbmcKKy1Ac3Vic2VjdGlvbiBBdXRvLWxvYWRpbmcKKy1AY2luZGV4IGF1 dG8tbG9hZGluZywgUHl0aG9uCisrQG5vZGUgUHl0aG9uIEF1dG8tbG9hZGluZworK0BzdWJzZWN0 aW9uIFB5dGhvbiBBdXRvLWxvYWRpbmcKKytAY2luZGV4IFB5dGhvbiBhdXRvLWxvYWRpbmcKKyAK KyBXaGVuIGEgbmV3IG9iamVjdCBmaWxlIGlzIHJlYWQgKGZvciBleGFtcGxlLCBkdWUgdG8gdGhl IEBjb2Rle2ZpbGV9CisgY29tbWFuZCwgb3IgYmVjYXVzZSB0aGUgaW5mZXJpb3IgaGFzIGxvYWRl ZCBhIHNoYXJlZCBsaWJyYXJ5KSwKK0BAIC0yNDY5MywzMiArMjQ5MjYsMzUgQEAgQXV0by1sb2Fk aW5nIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkLAorIGFuZCB0aGUgbGlzdCBvZiBhdXRvLWxv YWRlZCBzY3JpcHRzIGNhbiBiZSBwcmludGVkLgorIAorIEB0YWJsZSBAY29kZQorLUBraW5kZXgg c2V0IGF1dG8tbG9hZC1zY3JpcHRzCistQGl0ZW0gc2V0IGF1dG8tbG9hZC1zY3JpcHRzIFt5ZXN8 bm9dCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfQorK0BraW5kZXggc2V0 IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworK0BpdGVtIHNldCBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHMgW29ufG9mZl0KKyBFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIFB5 dGhvbiBzY3JpcHRzLgorIAorLUBraW5kZXggc2hvdyBhdXRvLWxvYWQtc2NyaXB0cworLUBpdGVt IHNob3cgYXV0by1sb2FkLXNjcmlwdHMKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzfQorK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKKytAaXRlbSBz aG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworIFNob3cgd2hldGhlciBhdXRvLWxvYWRpbmcg b2YgUHl0aG9uIHNjcmlwdHMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAKKy1Aa2luZGV4IGlu Zm8gYXV0by1sb2FkLXNjcmlwdHMKKy1AY2luZGV4IHByaW50IGxpc3Qgb2YgYXV0by1sb2FkZWQg c2NyaXB0cworLUBpdGVtIGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KKy1Q cmludCB0aGUgbGlzdCBvZiBhbGwgc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRl ZC4KKytAYW5jaG9ye2luZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfQorK0BraW5kZXggaW5m byBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKKytAY2luZGV4IHByaW50IGxpc3Qgb2YgYXV0by1s b2FkZWQgUHl0aG9uIHNjcmlwdHMKKytAaXRlbSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyBbQHZhcntyZWdleHB9XQorK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBQeXRob24gc2NyaXB0cyB0 aGF0IEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZC4KKyAKKy1BbHNvIHByaW50ZWQgaXMgdGhlIGxp c3Qgb2Ygc2NyaXB0cyB0aGF0IHdlcmUgbWVudGlvbmVkIGluCisrQWxzbyBwcmludGVkIGlzIHRo ZSBsaXN0IG9mIFB5dGhvbiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KKyB0aGUgQGNv ZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5vdCBmb3VuZAorIChAcHhy ZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0pLgorIFRoaXMgaXMgdXNlZnVsIGJlY2F1 c2UgdGhlaXIgbmFtZXMgYXJlIG5vdCBwcmludGVkIHdoZW4gQHZhbHVle0dEQk59CisgdHJpZXMg dG8gbG9hZCB0aGVtIGFuZCBmYWlscy4gIFRoZXJlIG1heSBiZSBtYW55IG9mIHRoZW0sIGFuZCBw cmludGluZworIGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2ggb25lIGlzIHByb2JsZW1hdGljLgor IAorLUlmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IHNjcmlwdHMgd2l0aCBtYXRjaGlu ZyBuYW1lcyBhcmUgcHJpbnRlZC4KKytJZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25seSBQ eXRob24gc2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgorIAorIEV4YW1w bGU6CisgCisgQHNtYWxsZXhhbXBsZQorLShnZGIpIGluZm8gYXV0by1sb2FkLXNjcmlwdHMKKyso Z2RiKSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworIExvYWRlZCAgU2NyaXB0CisgWWVz ICAgICBweS1zZWN0aW9uLXNjcmlwdC5weQorICAgICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNl Y3Rpb24tc2NyaXB0LnB5CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5 LWF1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTg0Mzc1MDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAx Mi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC0zMSwyOSArMzEsNTYgQEAKKyAK KyAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCisgCistLyogTk9URTogSXQncyB0cml2aWFs IHRvIGFsc28gc3VwcG9ydCBhdXRvLWxvYWRpbmcgbm9ybWFsIGdkYiBzY3JpcHRzLgorLSAgIFRo ZXJlIGhhcyB5ZXQgdG8gYmUgYSBuZWVkIHNvIGl0J3Mgbm90IGltcGxlbWVudGVkLiAgKi8KKy0K KyAvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkLgorICAg IEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1n ZGIucHkuICAqLworICNkZWZpbmUgR0RCUFlfQVVUT19GSUxFX05BTUUgIi1nZGIucHkiCisgCist LyogVGhlIHNlY3Rpb24gdG8gbG9vayBmb3Igc2NyaXB0cyAoaW4gZmlsZSBmb3JtYXRzIHRoYXQg c3VwcG9ydCBzZWN0aW9ucykuCisrLyogVGhlIHNlY3Rpb24gdG8gbG9vayBmb3IgUHl0aG9uIGF1 dG8tbG9hZGVkIHNjcmlwdHMgKGluIGZpbGUgZm9ybWF0cyB0aGF0CisrICAgc3VwcG9ydCBzZWN0 aW9ucykuCisgICAgRWFjaCBlbnRyeSBpbiB0aGlzIHNlY3Rpb24gaXMgYSBieXRlIG9mIHZhbHVl IDEsIGFuZCB0aGVuIHRoZSBudWwtdGVybWluYXRlZAorICAgIG5hbWUgb2YgdGhlIHNjcmlwdC4g IFRoZSBzY3JpcHQgbmFtZSBtYXkgaW5jbHVkZSBhIGRpcmVjdG9yeS4KKyAgICBUaGUgbGVhZGlu ZyBieXRlIGlzIHRvIGFsbG93IHVwd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lvbnMuICAqLworICNk ZWZpbmUgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUgIi5kZWJ1Z19nZGJfc2NyaXB0cyIKKyAKKy0v KiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmc6Cist ICAgc2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZgorLSAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBz aG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9iamZpbGUKKy0gICBp cyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4KKy0gICBBdCB0aGUgbW9tZW50LCB0aGlzIG9ubHkg YWZmZWN0cyBweXRob24gc2NyaXB0cywgYnV0IHRoZXJlJ3Mgbm8gcmVhc29uCistICAgb25lIGNv dWxkbid0IGFsc28gaGF2ZSBvdGhlciBraW5kcyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzLCBhbmQg dGhlcmUncworLSAgIG5vIHJlYXNvbiB0byBoYXZlIHRoZW0gZWFjaCBjb250cm9sbGVkIGJ5IGEg c2VwYXJhdGUgZmxhZy4KKy0gICBTbyB3ZSBlbGlkZSAicHl0aG9uIiBmcm9tIHRoZSBuYW1lIGhl cmUgYW5kIGluIHRoZSBvcHRpb24uCistICAgVGhlIGZhY3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlz IGp1c3QgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgKi8KKy1zdGF0aWMgaW50IGF1dG9fbG9h ZF9zY3JpcHRzID0gMTsKKysvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJs ZSBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHM6CisrICAgc2V0IGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cyBvbnxvZmYKKysgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9h ZCBhc3NvY2lhdGVkIFB5dGhvbiBzY3JpcHRzIHdoZW4gYW4KKysgICBvYmpmaWxlIGlzIG9wZW5l ZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KKytzdGF0aWMgaW50IGF1dG9fbG9hZF9weXRob25fc2Ny aXB0cyA9IDE7CisrCisrc3RhdGljIHZvaWQgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCQkJRklMRSAqZmlsZSwKKysJCQkJ CQljb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBh dXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCisrCisr c3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyAoc3RydWN0IHVpX2Zp bGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCQkgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUs IF8oIkF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyAlcy5cbiIpLCB2YWx1ZSk7Cisr fQorKworKy8qIERlZmluaXRpb24gb2Ygc2NyaXB0IGxhbmd1YWdlIGZvciBQeXRob24gc2NyaXB0 cy4gICovCisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ugc2NyaXB0X2xh bmd1YWdlX3B5dGhvbgorKyAgPSB7IEdEQlBZX0FVVE9fRklMRV9OQU1FLCBnZGJweV9sb2FkX2F1 dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIH07CisrCisrLyogV3JhcHBlciBvZiBzb3VyY2VfcHl0aG9u X3NjcmlwdF9mb3Jfb2JqZmlsZSBmb3Igc2NyaXB0X2xhbmd1YWdlX3B5dGhvbi4gICovCisrCisr c3RhdGljIHZvaWQKKytnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVu YW1lKQorK3sKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwor KworKyAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisrICAgICBjYW4gcHJpbnQgaXQuICAqLworKyAgcHNw YWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50 X3Byb2dyYW1fc3BhY2UpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVu YW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworKworKyAgc291cmNlX3B5 dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKKyt9Cisg CisgLyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgorICAgIFNUQVJULEVORCBk ZWxpbWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCitAQCAt MTIxLDYgKzE0OCwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAq CisgCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKKyAJICBtYWtlX2NsZWFudXAgKHhm cmVlLCBmdWxsX3BhdGgpOworIAl9CisrICAgICAgZWxzZQorKwl7CisrCSAgZnVsbF9wYXRoID0g TlVMTDsKKysKKysJICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMg c3RpbGwgZGVidWdnYWJsZS4gICovCisrCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19w cmludCAocHNwYWNlX2luZm8pKQorKwkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQg c2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKKytvZiBmaWxlICVzXG5cCisrVXNl IGBpbmZvIGF1dG8tbG9hZCBweXRob24gW1JFR0VYUF0nIHRvIGxpc3QgdGhlbS4iKSwKKysJCSAg ICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOworKwl9CisgCisgICAg ICAgLyogSWYgb25lIHNjcmlwdCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNvbW1vbiBmb3IgbW9y ZSB0byBub3QgYmUKKyAJIGZvdW5kIGVpdGhlci4gIFdlIGRvbid0IHdhbnQgdG8gcHJpbnQgYW4g ZXJyb3IgbWVzc2FnZSBmb3IgZWFjaAorQEAgLTEyOSwyNCArMTY3LDEyIEBAIHNvdXJjZV9zZWN0 aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKyAKKyAJIElXQk4gaWYgY29tcGxhaW50cy5j IHdlcmUgbW9yZSBnZW5lcmFsLXB1cnBvc2UuICAqLworIAorLSAgICAgIGluX2hhc2hfdGFibGUg PSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwKKy0JCQkJCW9wZW5lZCA/IGZ1 bGxfcGF0aCA6IE5VTEwpOworKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0 IChwc3BhY2VfaW5mbywgZmlsZSwgZnVsbF9wYXRoLAorKwkJCQkJJnNjcmlwdF9sYW5ndWFnZV9w eXRob24pOworIAorLSAgICAgIGlmICghIG9wZW5lZCkKKy0JeworLQkgIC8qIFdlIGRvbid0IHRo cm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKy0JICBp ZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCistCSAgICB3 YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlv biAlc1xuXAorLW9mIGZpbGUgJXNcblwKKy1Vc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JF R0VYUF0nIHRvIGxpc3QgdGhlbS4iKSwKKy0JCSAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUs IG9iamZpbGUtPm5hbWUpOworLQl9CistICAgICAgZWxzZQorLQl7CistCSAgLyogSWYgdGhpcyBm aWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KKy0JICBpZiAoISBpbl9o YXNoX3RhYmxlKQorLQkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZp bGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKy0JfQorKyAgICAgIC8qIElmIHRoaXMgZmlsZSBpcyBu b3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCisrICAgICAgaWYgKG9wZW5lZCAmJiAh aW5faGFzaF90YWJsZSkKKysJc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZp bGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKyAKKyAgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7 CisgICAgIH0KK0BAIC0xODEsMzYgKzIwNyw3NSBAQCBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRz IChzdHJ1Y3Qgb2JqZmlsCisgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworIH0KKyAKKy0vKiBM b2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KKysvKiBMb2FkIGFu eSBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JKRklMRS4gICovCisgCisgdm9pZAor LWxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK KytnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCisgeworLSAgaWYgKGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5X2dsb2JhbF9hdXRv X2xvYWQpCisrICBpZiAoYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKQorICAgICB7CistICAgICAg YXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCBHREJQWV9BVVRPX0ZJTEVfTkFNRSk7 CisrICAgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1 YWdlX3B5dGhvbik7CisgICAgICAgYXV0b19sb2FkX3NlY3Rpb25fc2NyaXB0cyAob2JqZmlsZSwg R0RCUFlfQVVUT19TRUNUSU9OX05BTUUpOworICAgICB9CisgfQorKworKy8qIFdyYXBwZXIgZm9y ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIuICAqLworKworK3N0YXRpYyB2b2lkCisr aW5mb19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0 eSkKKyt7CisrICBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIChwYXR0ZXJuLCBmcm9tX3R0eSwgJnNj cmlwdF9sYW5ndWFnZV9weXRob24pOworK30KKyAMCisgdm9pZAorIGdkYnB5X2luaXRpYWxpemVf YXV0b19sb2FkICh2b2lkKQorIHsKKysgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQ7Cisr ICBjaGFyICpjbWRfbmFtZTsKKysKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgicHl0aG9u LXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAorKwkJCSAgICZhdXRvX2xvYWRfcHl0aG9uX3Njcmlw dHMsIF8oIlwKKytTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxv YWRlZCBQeXRob24gc2NyaXB0cy4iKSwgXygiXAorK1Nob3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZp b3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cy4iKSwgXygiXAorK0lmIGVu YWJsZWQsIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVi dWdnZXIgcmVhZHNcblwKKythbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LlxuXAorK1Ro aXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJp b3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAorKwkJ CSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2FkX3Nob3df Y21kbGlzdF9nZXQgKCkpOworKworICAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxv YWQtc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCistCQkJICAgJmF1dG9fbG9hZF9zY3JpcHRzLCBf KCJcCistU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQg c2NyaXB0cy4iKSwgXygiXAorLVNob3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGlu ZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCistSWYgZW5hYmxlZCwgYXV0by1sb2FkZWQg c2NyaXB0cyBhcmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5cCistYW4gZXhlY3V0 YWJsZSBvciBzaGFyZWQgbGlicmFyeS4iKSwKKy0JCQkgICBOVUxMLCBOVUxMLAorLQkJCSAgICZz ZXRsaXN0LAorLQkJCSAgICZzaG93bGlzdCk7CisrCQkJICAgJmF1dG9fbG9hZF9weXRob25fc2Ny aXB0cywgXygiXAorK1NldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8t bG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAiCisrCQkJCQkJCQkgImRlcHJlY2F0ZWQuIiksCisrCQkJ ICAgXygiXAorK1Nob3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxv YWRlZCBQeXRob24gc2NyaXB0cywgIgorKwkJCQkJCQkJICJkZXByZWNhdGVkLiIpLAorKwkJCSAg IE5VTEwsIE5VTEwsIHNob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAorKwkJCSAgICZzZXRs aXN0LCAmc2hvd2xpc3QpOworKyAgY21kX25hbWUgPSAiYXV0by1sb2FkLXNjcmlwdHMiOworKyAg Y21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1lLCBzZXRsaXN0LCAiIiwgLTEsIDEpOworKyAgZGVw cmVjYXRlX2NtZCAoY21kLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIpOworKworKyAg LyogSXQgaXMgbmVlZGVkIGJlY2F1c2UgbG9va3VwX2NtZCB1cGRhdGVzIHRoZSBDTURfTkFNRSBw b2ludGVyLiAgKi8KKysgIGNtZF9uYW1lID0gImF1dG8tbG9hZC1zY3JpcHRzIjsKKysgIGNtZCA9 IGxvb2t1cF9jbWQgKCZjbWRfbmFtZSwgc2hvd2xpc3QsICIiLCAtMSwgMSk7CisrICBkZXByZWNh dGVfY21kIChjbWQsICJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIpOworKworKyAgYWRk X2NtZCAoInB5dGhvbi1zY3JpcHRzIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfcHl0aG9u X3NjcmlwdHMsCisrCSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVk IFB5dGhvbiBzY3JpcHRzLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyBbUkVHRVhQXSIpLAorKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7CisrCisr ICBjbWQgPSBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwgaW5mb19hdXRvX2xvYWRfcHl0 aG9uX3NjcmlwdHMsIF8oIlwKKytQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRl ZCBQeXRob24gc2NyaXB0cywgZGVwcmVjYXRlZC4iKSk7CisrICBkZXByZWNhdGVfY21kIChjbWQs ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIpOworIH0KKyAKKyAjZWxzZSAvKiAhIEhB VkVfUFlUSE9OICovCisgCisgdm9pZAorLWxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgeworIH0KKyAKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQ0OjI2 Ljk1ODQzNzUwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRo b24uaAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk3OTQzNzQ0NiArMDIwMAorQEAgLTQxLDcgKzQxLDcg QEAgaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cAorIAorIHZvaWQgcHJl c2VydmVfcHl0aG9uX3ZhbHVlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGh0YWJfdCBjb3Bp ZWRfdHlwZXMpOworIAorLXZvaWQgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKTsKKyt2b2lkIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9v YmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCisgaW50IGdkYnB5X3Nob3VsZF9z dG9wIChzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3QgKmJwX29iaik7CisgCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVs cC5leHAJMjAxMi0wMS0wNCAwOToxNzo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAJMjAxMi0wNC0xOCAwMDo0 NDoyNi45ODA0Mzc0NDQgKzAyMDAKK0BAIC0yNCw3ICsyNCw3IEBACisgZ2RiX3N0YXJ0CisgCisg IyBmb3JjZSB0aGUgaGVpZ2h0IG9mIHRoZSBkZWJ1Z2dlciB0byBiZSBwcmV0dHkgbGFyZ2Ugc28g bm8gcGFnZXJzIGdldCB1c2VkCistZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgaGVpZ2h0IDQwMCIg InRlc3Qgc2V0IGhlaWdodCIKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBoZWlnaHQgNTAwIiAi dGVzdCBzZXQgaGVpZ2h0IgorIAorICMgdXNlIGEgbGFyZ2VyIGV4cGVjdCBpbnB1dCBidWZmZXIg Zm9yIGxvbmcgaGVscCBvdXRwdXRzLgorICMgdGVzdCBoZWxwIGFkZC1zeW1ib2wtZmlsZQorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZp bGUtc2NyaXB0LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDEtMTYg MTc6MjE6NTIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6 NDcuNTU4MDc5Nzc0ICswMjAwCitAQCAtNDAsNyArNDAsNyBAQCBnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisgIyBWZXJpZnkgZ2Ri IGxvYWRlZCB0aGUgc2NyaXB0LgorLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiAi WWVzLiovJHt0ZXN0ZmlsZX0tZ2RiLnB5LioiCisrZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIiAiWWVzLiovJHt0ZXN0ZmlsZX0tZ2RiLnB5LioiCisgCisgaWYgIVtydW50 b19tYWluXSB7CisgICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3Jp cHQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAJMjAxMi0wMS0xNiAxNzoyMTo1 Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgw Nzk3NzQgKzAyMDAKK0BAIC01MiwxMSArNTIsMTEgQEAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCisgZ2RiX2xvYWQgJHtiaW5maWxlfQorIAorICMgVmVyaWZ5IGdkYiBsb2Fk ZWQgdGhlIHNjcmlwdC4KKy1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgIlllcy4q JHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKKytnZGJfdGVz dCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKiR7dGVzdGZpbGV9LnB5Lipm dWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCisgIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0 aGlzIHRpbWUuCistZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMgJHt0ZXN0ZmlsZX0i ICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCisr Z2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzICR7dGVzdGZpbGV9IiAiWWVz Lioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgorICMgQWdh aW4sIHdpdGggYSByZWdleHAgdGhhdCBtYXRjaGVzIG5vIHNjcmlwdHMuCistZ2RiX3Rlc3QgImlu Zm8gYXV0by1sb2FkLXNjcmlwdHMgbm8tc2NyaXB0LW1hdGNoZXMtdGhpcyIgXAorK2dkYl90ZXN0 ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzIiBc CisgICAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcgbm8tc2NyaXB0LW1hdGNoZXMtdGhp cy4iCisgCisgaWYgIVtydW50b19tYWluXSB7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEx b2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMW9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDRhYzY4YjAuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTExb2YxMi5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0NCArMCwwIEBACi1bcGF0Y2gjNCA1LzhdIHNldCBh dXRvLWxvYWQgc2FmZS1wYXRoCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMi0wNC9tc2cwMDA5Mi5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTA0L21zZzAwMTE0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcg MTU6NTE6NDEJMS4xNDExMwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTQ6 MjgJMS4xNDExNAotIyMgLTEsNSArMSwzOSBAQAotIDIwMTItMDQtMTcgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJTmV3IG9wdGlvbiAic2V0IGF1dG8t bG9hZCBzYWZlLXBhdGgiLgotKwkqIE5FV1M6IE5ldyBjb21tYW5kcyAic2V0IGF1dG8tbG9hZCBz YWZlLXBhdGgiCi0rCWFuZCAic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KLSsJKiBhdXRvLWxv YWQuYzogSW5jbHVkZSBnZGJfdmVjcy5oLCByZWFkbGluZS90aWxkZS5oIGFuZCBjb21wbGV0ZXIu aC4KLSsJKGF1dG9fbG9hZF9zYWZlX3BhdGgsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKQotKwko YXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlLCBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCkK LSsJKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwgYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgsIGZp bGVuYW1lX2lzX2luX2RpcikKLSsJKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhf dmVjLCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3LgotKwkoc291cmNlX2dkYl9zY3JpcHRf Zm9yX29iamZpbGUpOiBOZXcgdmFyaWFibGUgaXNfc2FmZS4gIENhbGwKLSsJZmlsZV9pc19hdXRv X2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcyBub3QuCi0rCShzdHJ1Y3QgbG9hZGVkX3Njcmlw dCk6IE5ldyBmaWVsZCBsb2FkZWQuCi0rCShtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRl ciBsb2FkZWQuICBJbml0aWFsaXplIFNMT1Qgd2l0aCBpdC4KLSsJKHByaW50X3NjcmlwdCk6IFVz ZSBMT0FERUQgaW5kaWNhdG9yIGluc3RlYWQgb2YgRlVMTF9QQVRILiAgQ2hhbmdlCi0rCW91dHB1 dCAiTWlzc2luZyIgdG8gIk5vIi4KLSsJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE5ldyB2YXJp YWJsZSBjbWQuICBJbml0aWFsaXplCi0rCWF1dG9fbG9hZF9zYWZlX3BhdGguICBSZWdpc3RlciAi c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLAotKwkic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoIiBh bmQgImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIi4KLSsJKiBhdXRvLWxvYWQuaCAobWF5YmVfYWRk X3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLgotKwkoZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSk6IE5ldyBkZWNsYXJhdGlvbi4KLSsJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0rCSogY29u ZmlndXJlOiBSZWdlbmVyYXRlLgotKwkqIGNvbmZpZ3VyZS5hYzogTmV3IHBhcmFtZXRlcnMgLS13 aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKLSsJYW5kIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1w YXRoLgotKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGly XzEpCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBDaGVjayBmaWxlX2lzX2F1dG9f bG9hZF9zYWZlIGZpcnN0LgotKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IENoZWNrIGZpbGVf aXNfYXV0b19sb2FkX3NhZmUgZm9yCi0rCUxPQ0FMX0dEQklOSVQuCi0rCSogcHl0aG9uL3B5LWF1 dG8tbG9hZC5jIChnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3Ci0rCXZh cmlhYmxlIGlzX3NhZmUuICBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYg aXQgaXMgbm90LgotKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IENhbGwgZmlsZV9pc19hdXRv X2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcwotKwlub3QuCi0rCi0rMjAxMi0wNC0xNyAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlhdXRvLWxvYWQ6 IEltcGxlbWVudGF0aW9uLgotIAkqIE5FV1M6IE5ldyBkZXNjcmlwdGlvbnMgZm9yICJpbmZvIGF1 dG8tbG9hZCIsCi0gCSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJpbmZvIGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyIsCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0 LTE4IDAwOjQ5OjAyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4yODI3MDYzMTkgKzAyMDAKLUBAIC02Nyw2ICs2Nywx MSBAQCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBvbnxvZmYKLSBzaG93IGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGIKLSAgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmlj IHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkuCi0gCi0rc2V0IGF1dG8tbG9hZCBzYWZl LXBhdGggPGRpcjE+Wzo8ZGlyMj4uLi5dCi0rc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0rICBT ZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxv YWQgZmlsZXMuCi0rICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3Jk aW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgotKwotICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25z Ci0gCi0gLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAt eCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9h ZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxv YWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjA3NzM2MDIwICsw MjAwCi1AQCAtMzIsNiArMzIsOSBAQAotICNpbmNsdWRlICJnZGJjbWQuaCIKLSAjaW5jbHVkZSAi Y2xpL2NsaS1kZWNvZGUuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93LmgiCi0rI2luY2x1 ZGUgImdkYl92ZWNzLmgiCi0rI2luY2x1ZGUgInJlYWRsaW5lL3RpbGRlLmgiCi0rI2luY2x1ZGUg ImNvbXBsZXRlci5oIgotIAotIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0 byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBjb21tYW5kIGZpbGVzLgotICAgIEUuZy4gV2hlbiB0 aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8K LUBAIC05MCw2ICs5MywxODEgQEAgc2hvd19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAoc3RydWN0 IHVpXwotIAkJICAgIHZhbHVlKTsKLSB9Ci0gCi0rLyogRGlyZWN0b3J5IGxpc3Qgc2FmZSB0byBo b2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAgSXQgaXMgbm90IGNoZWNrZWQgZm9yCi0rICAgYWJzb2x1 dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkLiAgSXQgaXMgaW5pdGlh bGl6ZWQgYnkKLSsgICBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQuICAqLwotK3N0YXRpYyBjaGFyICph dXRvX2xvYWRfc2FmZV9wYXRoOwotKwotKy8qIFZlY3RvciBvZiBkaXJlY3RvcnkgZWxlbWVudHMg b2YgQVVUT19MT0FEX1NBRkVfUEFUSCB3aXRoIGVhY2ggb25lIG5vcm1hbGl6ZWQKLSsgICBieSB0 aWxkZV9leHBhbmQgYW5kIHBvc3NpYmx5IGVhY2ggZW50cmllcyBoYXMgYWRkZWQgaXRzIGdkYl9y ZWFscGF0aAotKyAgIGNvdW50ZXJwYXJ0LiAgKi8KLStzdGF0aWMgVkVDIChjaGFyX3B0cikgKmF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjOwotKwotKy8qIFVwZGF0ZSBhdXRvX2xvYWRfc2FmZV9wYXRo X3ZlYyBmcm9tIGN1cnJlbnQgQVVUT19MT0FEX1NBRkVfUEFUSC4gICovCi0rCi0rc3RhdGljIHZv aWQKLSthdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0rewotKyAgVkVDIChj aGFyX3B0cikgKmRpcl92ZWMgPSBOVUxMOwotKyAgdW5zaWduZWQgbGVuOwotKyAgaW50IGl4Owot KwotKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKLSsKLSsg IGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChhdXRv X2xvYWRfc2FmZV9wYXRoKTsKLSsgIGxlbiA9IFZFQ19sZW5ndGggKGNoYXJfcHRyLCBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYyk7Ci0rCi0rICAvKiBBcHBseSB0aWxkZV9leHBhbmQgYW5kIGdkYl9y ZWFscGF0aCB0byBlYWNoIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDCi0rICAgICBlbGVtZW50LiAg Ki8KLSsgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKLSsgICAgewotKyAgICAgIGNoYXIg KmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCk7 Ci0rICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRpcik7Ci0rICAgICAgY2hh ciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Ci0rCi0rICAgICAgLyogRW5z dXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCi0r ICAgICAgeGZyZWUgKGRpcik7Ci0rICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKLSsKLSsgICAgICAvKiBJZiBnZGJfcmVh bHBhdGggcmV0dXJucyBhIGRpZmZlcmVudCBjb250ZW50LCBhcHBlbmQgaXQuICAqLwotKyAgICAg IGlmIChzdHJjbXAgKHJlYWxfcGF0aCwgZXhwYW5kZWQpID09IDApCi0rCXhmcmVlIChyZWFsX3Bh dGgpOwotKyAgICAgIGVsc2UKLSsJVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9z YWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOwotKyAgICB9Ci0rfQotKwotKy8qICJzZXQiIGNvbW1h bmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIgKmFyZ3Ms IGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgYXV0b19s b2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotK30KLSsKLSsvKiAic2hvdyIgY29tbWFuZCBm b3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGggKHN0cnVjdCB1aV9maWxl ICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywg Y29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgaWYgKCp2YWx1ZSA9PSAwKQotKyAgICBmcHJpbnRm X2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMgYXJlIHNhZmUgdG8gbG9hZCBmcm9t IGFueSAiCi0rCQkJICAgICAgImRpcmVjdG9yeS5cbiIpKTsKLSsgIGVsc2UKLSsgICAgZnByaW50 Zl9maWx0ZXJlZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlz IHNhZmUgdG8gIgotKwkJCSAgICAgICJhdXRvLWxvYWQgZmlsZXMgaXMgJXMuXG4iKSwKLSsJCSAg ICAgIHZhbHVlKTsKLSt9Ci0rCi0rLyogImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIiBjb21tYW5k IGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uCi0rICAgdmFyaWFibGUu ICAqLwotKwotK3N0YXRpYyB2b2lkCi0rYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIgKmFy Z3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBjaGFyICpzOwotKwotKyAgaWYgKGFyZ3MgPT0gTlVM TCB8fCAqYXJncyA9PSAwKQotKyAgICBlcnJvciAoXygiXAotK0FkZGluZyBlbXB0eSBkaXJlY3Rv cnkgZWxlbWVudCBkaXNhYmxlcyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0aCBzZWN1cml0eS4gIFwK LStVc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBpbnN0ZWFkIGlmIHlvdSBtZWFuIHRoYXQu IikpOwotKwotKyAgcyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBhdXRvX2xvYWRfc2FmZV9wYXRo LCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7Ci0rICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0 aCk7Ci0rICBhdXRvX2xvYWRfc2FmZV9wYXRoID0gczsKLSsKLSsgIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjX3VwZGF0ZSAoKTsKLSt9Ci0rCi0rLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgaXMgZXF1 YWwgdG8gRElSIG9yIGlmIEZJTEVOQU1FIGJlbG9uZ3MgdG8gdGhlCi0rICAgc3ViZGlyZWN0b3J5 IERJUi4gIFJldHVybiAwIG90aGVyd2lzZS4gIGdkYl9yZWFscGF0aCBub3JtYWxpemF0aW9uIGlz IG5ldmVyCi0rICAgZG9uZSBoZXJlLiAgKi8KLSsKLStzdGF0aWMgQVRUUklCVVRFX1BVUkUgaW50 Ci0rZmlsZW5hbWVfaXNfaW5fZGlyIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAq ZGlyKQotK3sKLSsgIHNpemVfdCBkaXJfbGVuID0gc3RybGVuIChkaXIpOwotKwotKyAgd2hpbGUg KGRpcl9sZW4gJiYgSVNfRElSX1NFUEFSQVRPUiAoZGlyW2Rpcl9sZW4gLSAxXSkpCi0rICAgIGRp cl9sZW4tLTsKLSsKLSsgIHJldHVybiAoZmlsZW5hbWVfbmNtcCAoZGlyLCBmaWxlbmFtZSwgZGly X2xlbikgPT0gMAotKwkgICYmIChJU19ESVJfU0VQQVJBVE9SIChmaWxlbmFtZVtkaXJfbGVuXSkK LSsJICAgICAgfHwgZmlsZW5hbWVbZGlyX2xlbl0gPT0gJ1wwJykpOwotK30KLSsKLSsvKiBSZXR1 cm4gMSBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIG9uZSBvZiBkaXJlY3RvcnkgY29tcG9uZW50cyBv ZgotKyAgIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgotKyAg IGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSBpcyBuZXZlciBjYWxsZWQuCi0rICAgKkZJ TEVOQU1FX1JFQUxQIG1heSBiZSB1cGRhdGVkIGJ5IGdkYl9yZWFscGF0aCBvZiBGSUxFTkFNRSAt IGl0IGhhcyB0byBiZQotKyAgIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICAqLwotKwotK3N0YXRpYyBp bnQKLStmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoY29uc3QgY2hhciAq ZmlsZW5hbWUsCi0rCQkJCQljaGFyICoqZmlsZW5hbWVfcmVhbHApCi0rewotKyAgY2hhciAqZGly OwotKyAgaW50IGl4OwotKwotKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwg YXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOyArK2l4KQotKyAgICBpZiAoKmZpbGVu YW1lX3JlYWxwID09IE5VTEwgJiYgZmlsZW5hbWVfaXNfaW5fZGlyIChmaWxlbmFtZSwgZGlyKSkK LSsgICAgICBicmVhazsKLSsgIAotKyAgaWYgKGRpciA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAg aWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQotKwkqZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVh bHBhdGggKGZpbGVuYW1lKTsKLSsKLSsgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNo YXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7Ci0rCSAgICsraXgpCi0r CWlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKLSsJICBicmVh azsKLSsgICAgfQotKwotKyAgaWYgKGRpciAhPSBOVUxMKQotKyAgICByZXR1cm4gMTsKLSsKLSsg IHJldHVybiAwOwotK30KLSsKLSsvKiBSZXR1cm4gMSBpZiBGSUxFTkFNRSBpcyBsb2NhdGVkIGlu IG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgb2YKLSsgICBBVVRPX0xPQURfU0FGRV9QQVRILiAgT3Ro ZXJ3aXNlIGNhbGwgd2FybmluZyBhbmQgcmV0dXJuIDAuICBGSUxFTkFNRSBkb2VzCi0rICAgbm90 IGhhdmUgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KLSsKLSsgICBFeGlzdGVuY2Ugb2YgRklMRU5B TUUgaXMgbm90IGNoZWNrZWQuICBGdW5jdGlvbiB3aWxsIHN0aWxsIGdpdmUgYSB3YXJuaW5nCi0r ICAgZXZlbiBpZiB0aGUgY2FsbGVyIHdvdWxkIHF1aWV0bHkgc2tpcCBub24tZXhpc3RpbmcgZmls ZSBpbiB1bnNhZmUKLSsgICBkaXJlY3RvcnkuICAqLwotKwotK2ludAotK2ZpbGVfaXNfYXV0b19s b2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIGNoYXIgKmZpbGVuYW1lX3Jl YWwgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rCi0rICBiYWNrX3RvID0g bWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZmaWxlbmFtZV9yZWFsKTsKLSsK LSsgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUs ICZmaWxlbmFtZV9yZWFsKSkKLSsgICAgewotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsK LSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNf dXBkYXRlICgpOwotKyAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVj IChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMg KGJhY2tfdG8pOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICB3YXJuaW5nIChfKCJG aWxlIFwiJXNcIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQgYnkgeW91ciAiCi0rCSAg ICAgImBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gXCIlc1wiLiIpLAotKwkgICBmaWxlbmFt ZV9yZWFsLCBhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLSsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSAvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5ndWFn ZSBmb3IgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuICAqLwotIAotIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9nZGIKLUBAIC05OSwx MyArMjc3LDIwIEBAIHN0YXRpYyB2b2lkCi0gc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotIAkJCSAgICAgICBjb25zdCBj aGFyICpmaWxlbmFtZSkKLSB7Ci0rICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRp b24gZTsKLSAKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7 Ci0rCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi0gICBwc3Bh Y2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRf cHJvZ3JhbV9zcGFjZSk7Ci0tICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5h bWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rICBtYXliZV9hZGRfc2NyaXB0 IChwc3BhY2VfaW5mbywgaXNfc2FmZSwgZmlsZW5hbWUsIGZpbGVuYW1lLAotKwkJICAgICZzY3Jp cHRfbGFuZ3VhZ2VfZ2RiKTsKLSsKLSsgIGlmICghaXNfc2FmZSkKLSsgICAgcmV0dXJuOwotIAot ICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCi0gICAgIHsKLUBAIC0xNDAsNiArMzI1 LDkgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKLSAgICAgIGluYWNjZXNzaWJsZSkuICAqLwotICAg Y29uc3QgY2hhciAqZnVsbF9wYXRoOwotIAotKyAgLyogTm9uLXplcm8gaWYgdGhpcyBzY3JpcHQg aGFzIGJlZW4gbG9hZGVkLiAgKi8KLSsgIGludCBsb2FkZWQ7Ci0rCi0gICBjb25zdCBzdHJ1Y3Qg c2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsKLSB9OwotIAotQEAgLTIzMiwxMiArNDIwLDEzIEBA IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKLSAgIHJldHVybiBpbmZv OwotIH0KLSAKLS0vKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJsZSBv ZiBQU1BBQ0VfSU5GTy4KLS0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24n dCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSsvKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0Ug dG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4gIExPQURFRCAxIGlmIHRoZQotKyAgIHNjcmlw dCBoYXMgYmVlbiAoaXMgZ29pbmcgdG8pIGJlIGxvYWRlZCwgMCBvdGhlcndpc2UgKHN1Y2ggYXMg aWYgaXQgaGFzIG5vdAotKyAgIGJlZW4gZm91bmQpLiAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhl IHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCi0gICAgdHJ1ZSBpZiB0aGUgc2Ny aXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSAKLSBpbnQKLS1tYXliZV9h ZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKLStt YXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5m bywgaW50IGxvYWRlZCwKLSAJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9w YXRoLAotIAkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKLSB7Ci1A QCAtMjcxLDYgKzQ2MCw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNw YWMKLSAJfQotICAgICAgIGVsc2UKLSAJKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsKLSsgICAg ICAoKnNsb3QpLT5sb2FkZWQgPSBsb2FkZWQ7Ci0gICAgICAgKCpzbG90KS0+bGFuZ3VhZ2UgPSBs YW5ndWFnZTsKLSAgICAgfQotIAotQEAgLTQzMiw3ICs2MjIsNyBAQCBwcmludF9zY3JpcHQgKHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpCi0gCi0gICBjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9v dXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7Ci0gCi0tICB1aV9vdXRfZmllbGRfc3Ry aW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlzc2lu ZyIpOwotKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmxv YWRlZCA/ICJZZXMiIDogIk5vIik7Ci0gICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInNj cmlwdCIsIHNjcmlwdC0+bmFtZSk7Ci0gICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotIAot QEAgLTcxOCw2ICs5MDgsOCBAQCB2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7Ci0g dm9pZAotIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0rICBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqY21kOwotKwotICAgYXV0b19sb2FkX3BzcGFjZV9kYXRhCi0gICAgID0gcmVn aXN0ZXJfcHJvZ3JhbV9zcGFjZV9kYXRhX3dpdGhfY2xlYW51cCAoYXV0b19sb2FkX3BzcGFjZV9k YXRhX2NsZWFudXApOwotIAotQEAgLTc1Nyw0ICs5NDksMzAgQEAgVGhpcyBvcHRpb25zIGhhcyBz ZWN1cml0eSBpbXBsaWNhdGlvbnMgZgotIAkgICBfKCJQcmludCB3aGV0aGVyIGN1cnJlbnQgZGly ZWN0b3J5IC5nZGJpbml0IGZpbGUgaGFzIGJlZW4gbG9hZGVkLlxuXAotIFVzYWdlOiBpbmZvIGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCi0gCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0 ICgpKTsKLSsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChERUZBVUxUX0FVVE9f TE9BRF9TQUZFX1BBVEgpOwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwot KyAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVfY21kICgic2FmZS1wYXRoIiwgY2xhc3Nf c3VwcG9ydCwKLSsJCQkJICAgICAmYXV0b19sb2FkX3NhZmVfcGF0aCwgXygiXAotK1NldCB0aGUg bGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZp bGVzLiIpLCBfKCJcCi0rU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0 IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCi0rVmFyaW91cyBmaWxlcyBsb2Fk ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucyBtdXN0 XG5cCi0rYmUgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBieSB0aGlz IG9wdGlvbi4gIFdhcm5pbmcgd2lsbCBiZVxuXAotK3ByaW50ZWQgYW5kIGZpbGUgd2lsbCBub3Qg YmUgdXNlZCBvdGhlcndpc2UuICBVc2UgZW1wdHkgc3RyaW5nIChvciBldmVuXG5cCi0rZW1wdHkg ZGlyZWN0b3J5IGVudHJ5KSB0byBhbGxvdyBhbnkgZmlsZSBmb3IgdGhlICdzZXQgYXV0by1sb2Fk IC4uLicgb3B0aW9ucy5cblwKLStUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMg b2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBvZmYnLlxuXAotK1RoaXMgb3B0aW9u cyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAot KwkJCQkgICAgIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoLAotKwkJCQkgICAgIHNob3dfYXV0b19s b2FkX3NhZmVfcGF0aCwKLSsJCQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAot KwkJCQkgICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGNtZCA9IGFk ZF9jbWQgKCJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi0rCQkgYWRk X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCQkgXygiQWRkIGVudHJpZXMgdG8gdGhlIGxpc3Qgb2Yg ZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlICIKLSsJCSAgICJ0byBhdXRvLWxvYWQg ZmlsZXMuXG5cCi0rU2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGFu ZCAnc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoJyB0b1xuXAotK2FjY2VzcyB0aGUgY3VycmVudCBm dWxsIGxpc3Qgc2V0dGluZy4iKSwKLSsJCSAmY21kbGlzdCk7Ci0rICBzZXRfY21kX2NvbXBsZXRl ciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwotIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ5 OjIxLjYwNzczNjAyMCArMDIwMAotQEAgLTM5LDcgKzM5LDggQEAgZXh0ZXJuIGludCBhdXRvX2xv YWRfbG9jYWxfZ2RiaW5pdF9sb2FkZQotIGV4dGVybiBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICoKLSAgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBw cm9ncmFtX3NwYWNlICpwc3BhY2UpOwotIGV4dGVybiBpbnQgbWF5YmVfYWRkX3NjcmlwdCAoc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCi0tCQkJICAgICBjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCi0rCQkJICAgICBpbnQgbG9hZGVkLCBj b25zdCBjaGFyICpuYW1lLAotKwkJCSAgICAgY29uc3QgY2hhciAqZnVsbF9wYXRoLAotIAkJCSAg ICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotIGV4dGVybiB2b2lk IGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJ CSAgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKLUBAIC01NCw0 ICs1NSw2IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG8KLSBleHRl cm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAo dm9pZCk7Ci0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9f Y21kbGlzdF9nZXQgKHZvaWQpOwotIAotK2V4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotICNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLwot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnLmluCTIwMTItMDQtMTggMDA6NDY6 NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmlu CTIwMTItMDQtMTggMDA6NDk6MjEuNjA3NzM2MDIwICswMjAwCi1AQCAtNDMsNiArNDMsOSBAQAot ICAgIG1vdmVkLiAqLwotICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJMRQotIAotKy8qIERpcmVj dG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KLSsjdW5kZWYgREVGQVVM VF9BVVRPX0xPQURfU0FGRV9QQVRICi0rCi0gLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgYXJj aGl0ZWN0dXJlLiAqLwotICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICi0gCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAw MDo0OToyMS42MTE3MzYwMTAgKzAyMDAKLUBAIC05NTUsNiArOTU1LDcgQEAgd2l0aF9zZXBhcmF0 ZV9kZWJ1Z19kaXIKLSB3aXRoX2dkYl9kYXRhZGlyCi0gd2l0aF9yZWxvY2F0ZWRfc291cmNlcwot IHdpdGhfcnBtCi0rd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCi0gZW5hYmxlX3RhcmdldHMKLSBl bmFibGVfNjRfYml0X2JmZAotIGVuYWJsZV9nZGJjbGkKLUBAIC0xNjY2LDYgKzE2NjcsMTAgQEAg T3B0aW9uYWwgUGFja2FnZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNh bGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCi0gICAtLXdpdGgtcnBtICAg ICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVz L25vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSsg IC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcwotKyAgLS13aXRo b3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5v dCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKLSAgIC0td2l0aC1saWJ1bndp bmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKLSAgIC0td2l0 aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUg dGVybWNhcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAgLTg0NzcsNiAr ODQ4MiwzMiBAQCAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkUlBNX1BLR19FUlJPCi0gICBm aQotIGZpCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKLSskYXNfZWNob19uICJj aGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIgPiY2OyB9Ci0rCi0r IyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHdhcyBnaXZlbi4KLStp ZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0r ICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRlc3QgIiR3aXRoX2F1dG9f bG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aD0iIgotKyBmaQotK2Vsc2UKLSsgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIK LStmaQotKwotKwotKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVm YXVsdF9wcmVmaXgiCi0rICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJl Zml4PScke3ByZWZpeH0nCi0rICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aGAKLSsgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVmaW5lX2Rp cmAKLSsKLStjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2RlZmluZSBERUZBVUxUX0FVVE9f TE9BRF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgotK19BQ0VPRgotKwotKwotK3sgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoIiA+JjUKLSskYXNfZWNobyAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY2 OyB9Ci0rCi0gCi0gCi0gc3ViZGlycz0iJHN1YmRpcnMgdGVzdHN1aXRlIgotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6NDY6NDcuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIw MTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCi1AQCAtMzM5LDYgKzMzOSwxOCBAQCBl eHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0ZXJhCi0gICBmaQotIGZpCi0gIAot K0FDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aF0pCi0rQUNf QVJHX1dJVEgoYXV0by1sb2FkLXNhZmUtcGF0aCwKLStBU19IRUxQX1NUUklORyhbLS13aXRoLWF1 dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1s b2FkZWQgZmlsZXNdKQotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUt cGF0aF0sIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCi0r W2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotKyAgIHdp dGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgotKyBmaV0sCi0rW3dpdGhfYXV0b19sb2FkX3NhZmVf cGF0aD0iJHByZWZpeCJdKQotK0FDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9Q QVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCSAgICAgIFtEaXJlY3RvcmllcyBzYWZl IHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKLStBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoXSkKLSsKLSBBQ19DT05GSUdfU1VCRElSUyh0ZXN0c3VpdGUpCi0gCi0g IyBDaGVjayB3aGV0aGVyIHRvIHN1cHBvcnQgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRp b25zCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1k Yi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42MTI3MzYw MDcgKzAyMDAKLUBAIC04NjgsNyArODY4LDExIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX3Bk aXJfMSAoc3RydWN0IG8KLSAgIC8qIFRoaXMgc2hvdWxkIGF0IG1pbmltdW0gaGl0IHRoZSBmaXJz dCBjaGFyYWN0ZXIuICAqLwotICAgZ2RiX2Fzc2VydCAoY3AgIT0gTlVMTCk7Ci0gICBzdHJjcHkg KGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKLS0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9h ZCAocGF0aCk7Ci0rCi0rICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQotKyAg ICByZXN1bHQgPSAwOwotKyAgZWxzZQotKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQg KHBhdGgpOwotIAotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgcmV0dXJuIHJlc3VsdDsK LUBAIC05MzQsNyArOTM4LDExIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3Qg Y2hhcgotICAgbWVtY3B5IChwYXRoLCBkaXIsIGRpcl9sZW4pOwotICAgcGF0aFtkaXJfbGVuXSA9 ICcvJzsKLSAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJFQURfREJfU08pOwot LSAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLSsKLSsgIGlmICghZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCi0rICAgIHJlc3VsdCA9IDA7Ci0rICBlbHNlCi0rICAg IHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Ci0gCi0gICBkb19jbGVhbnVwcyAo Y2xlYW51cCk7Ci0gICByZXR1cm4gcmVzdWx0OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv bWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjEyNzM2MDA3ICswMjAw Ci1AQCAtMTAyNiw3ICsxMDI2LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAg ewotICAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRo IChsb2NhbF9nZGJpbml0KTsKLSAKLS0gICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRv X2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRv X2xvYWRfbG9jYWxfZ2RiaW5pdAotKwkgICYmIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGxvY2Fs X2dkYmluaXQpKQotIAl7Ci0gCSAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMTsK LSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMDczNTk4NyArMDIw MAotQEAgLTIwODAxLDYgKzIwODAxLDggQEAgZ2RiLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2Yg Y2FubmVkIHNlcQotIGxpYnRocmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVj aWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCi0gbG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBv ZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbi4KLSBweXRob24t c2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBvbi4KLStzYWZlLXBh dGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxv YWQgZmlsZXMKLSsgICAgICAgICAgICBpcyAvdXNyL2xvY2FsLgotIEBlbmQgc21hbGxleGFtcGxl Ci0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMDg3MiwxMiArMjA4NzQsMTkgQEAg VGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCi0gQHRhYiBTaG93IHNldHRp bmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgotIEBpdGVtIEB4cmVme2luZm8gYXV0by1s b2FkIGxpYnRocmVhZC1kYn0uCi0gQHRhYiBTaG93IHN0YXRlIG9mIHRocmVhZCBkZWJ1Z2dpbmcg bGlicmFyeS4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0uCi0rQHRhYiBD b250cm9sIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgotK0BpdGVt IEB4cmVme3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0uCi0rQHRhYiBTaG93IGRpcmVjdG9yaWVz IHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgotK0BpdGVtIEB4cmVme2FkZC1hdXRvLWxv YWQtc2FmZS1wYXRofS4KLStAdGFiIEFkZCBkaXJlY3RvcnkgdHJ1c3RlZCBmb3IgYXV0b21hdGlj IGxvYWRpbmcuCi0gQGVuZCBtdWx0aXRhYmxlCi0gCi0gQG1lbnUKLSAqIEluaXQgRmlsZSBpbiB0 aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsb2Nh bC1nZGJpbml0fQotICogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAgICAgICAgIEBzYW1w e3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLSAqIG9iamZpbGUtZ2RiLmdk YiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBnZGIt c2NyaXB0fQotKyogQXV0by1sb2FkaW5nIHNhZmUgcGF0aDo6ICAgICAgICAgICAgIEBzYW1we3Nl dC9zaG93L2luZm8gYXV0by1sb2FkIHNhZmUtcGF0aH0KLSBAeHJlZntQeXRob24gQXV0by1sb2Fk aW5nfS4KLSBAZW5kIG1lbnUKLSAKLUBAIC0yMDk3OCw2ICsyMDk4NywxMDQgQEAgYXV0by1sb2Fk ZWQuCi0gSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgY2FubmVkIHNlcXVlbmNlcyBv ZiBjb21tYW5kcyBzY3JpcHRzIHdpdGgKLSBtYXRjaGluZyBuYW1lcyBhcmUgcHJpbnRlZC4KLSAK LStAbm9kZSBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoCi0rQHN1YnNlY3Rpb24gU2VjdXJpdHkgcmVz dHJpY3Rpb24gZm9yIGF1dG8tbG9hZGluZwotK0BjaW5kZXggYXV0by1sb2FkaW5nIHNhZmUtcGF0 aAotKwotK0FzIHRoZSBmaWxlcyBvZiBpbmZlcmlvciBjYW4gY29tZSBmcm9tIHVudHJ1c3RlZCBz b3VyY2UgKHN1Y2ggYXMgc3VibWl0dGVkIGJ5Ci0rYW4gYXBwbGljYXRpb24gdXNlcikgQHZhbHVl e0dEQk59IGRvZXMgbm90IGFsd2F5cyBsb2FkIGFueSBmaWxlcyBhdXRvbWF0aWNhbGx5LgotK0B2 YWx1ZXtHREJOfSBwcm92aWRlcyB0aGUgQHNhbXB7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9IHNl dHRpbmcgdG8gbGlzdAotK2RpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGxvYWRpbmcgZmlsZXMgbm90 IGV4cGxpY2l0bHkgcmVxdWVzdGVkIGJ5IHVzZXIuCi0rCi0rSWYgdGhlIHBhdGggaXMgbm90IHNl dCBwcm9wZXJseSB5b3Ugd2lsbCBzZWUgYSB3YXJuaW5nIGFuZCB0aGUgZmlsZSB3aWxsIG5vdAot K2dldCBsb2FkZWQ6Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyQgLi9nZGIgLXEgLi9nZGIKLStSZWFk aW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25lLgotK3dhcm5pbmc6IEZp bGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KLSsg ICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91 c3IvbG9jYWwiLgotK3dhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkiIGF1 dG8tbG9hZGluZyBoYXMgYmVlbgotKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9h ZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsK LStUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZv bGxvd2luZyBjb21tYW5kczoKLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBhdXRvLWxv YWQgc2FmZS1wYXRofQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgKLStAaXRlbSBz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAdmFye2RpcmVjdG9yaWVzfQotK1NldCB0aGUgbGlzdCBv ZiBkaXJlY3RvcmllcyAoYW5kIHRoZWlyIHN1YmRpcmVjdG9yaWVzKSB0cnVzdGVkIGZvciBhdXRv bWF0aWMKLStsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIFlvdSBjYW4gYWxzbyBl bnRlciBhIHNwZWNpZmljIHRydXN0ZWQgZmlsZS4KLStUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1 c2VzIGRpcmVjdG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAotK3N5c3Rl bXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGlyZWN0 b3JpZXMsIHNpbWlsYXJseQotK3RvIHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxl LgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofQotK0BraW5kZXggc2hvdyBh dXRvLWxvYWQgc2FmZS1wYXRoCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0rU2hv dyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZyBh bmQgZXhlY3V0aW9uIG9mCi0rc2NyaXB0cy4KLSsKLStAYW5jaG9ye2FkZC1hdXRvLWxvYWQtc2Fm ZS1wYXRofQotK0BraW5kZXggYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKLStAaXRlbSBhZGQtYXV0 by1sb2FkLXNhZmUtcGF0aAotK0FkZCBhbiBlbnRyeSAob3IgbGlzdCBvZiBlbnRyaWVzKSB0aGUg bGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMKLStsb2FkaW5nIGFuZCBl eGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpcGxlIGVudHJpZXMgbWF5IGJlIGRlbGltaXRlZCBi eSB0aGUKLStob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNlLgotK0BlbmQg dGFibGUKLSsKLStTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGRpc2Fi bGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KLStUaGlzIHZhcmlhYmxlIGlzIHN1cHBvc2Vk IHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQotK3N5 c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVjdG9y aWVzIGluIGluaXQgZmlsZXMgaW4KLSt0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9t ZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCi0raW5pdCBmaWxl IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQotKyhAcHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJy ZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0pLgotKwotK1RvIGZvcmNlIEB2YWx1ZXtHREJO fSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGluIHRoZSBwcmV2aW91cwot K2V4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgd2F5czoKLSsKLStA aXRlbWl6ZSBAYnVsbGV0Ci0rQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1dG8tbG9hZC1zYWZlLXBh dGggfi9zcmMvZ2RiCi0rU3BlY2lmeSB0aGlzIHRydXN0ZWQgZGlyZWN0b3J5IChvciBhIGZpbGUp IGFzIGFkZGl0aW9uYWwgY29tcG9uZW50IG9mIHRoZSBsaXN0LgotK1lvdSBoYXZlIHRvIHNwZWNp ZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0rYnkgQHNhbXB7 c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRo aXMgZXhhbXBsZSkuCi0rCi0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZl LXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiIgW0Bkb3Rze31dfQotK1NwZWNpZnkgdGhpcyBkaXJl Y3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCi0rQHZh bHVle0dEQk59IHNlc3Npb24uCi0rCi0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGgiIFtAZG90c3t9XX0KLStEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkgZm9y IGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotK1RoaXMgYXNzdW1lcyBhbGwgdGhlIGZp bGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUK LStmcm9tIHRydXN0ZWQgc291cmNlcy4KLSsKLStAaXRlbSBAa2Jkey4vY29uZmlndXJlIC0td2l0 aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRofQotK0R1cmluZyBjb21waWxhdGlvbiBvZiBAdmFsdWV7 R0RCTn0geW91IG1heSBkaXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2FmZXR5LgotK1RoaXMgYXNz dW1lcyBhbGwgdGhlIGZpbGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0aCB0aGlzIEB2YWx1ZXtH REJOfSBjb21lIGZyb20KLSt0cnVzdGVkIHNvdXJjZXMuCi0rQGVuZCBpdGVtaXplCi0rCi0rT24g dGhlIG90aGVyIGhhbmQgeW91IGNhbiBhbHNvIGV4cGxpY2l0bHkgZm9yYmlkIGF1dG9tYXRpYyBm aWxlcyBsb2FkaW5nIHdoaWNoCi0rYWxzbyBzdXBwcmVzc2VzIGFueSBzdWNoIHdhcm5pbmcgbWVz c2FnZXM6Ci0rCi0rQGl0ZW1pemUgQGJ1bGxldAotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBh dXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KLStZb3UgY2FuIHVzZSBAdmFsdWV7R0RCTn0gY29tbWFu ZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0rCi0rQGl0 ZW0gQHNhbXB7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQgbm99Ci0rRGlzYWJsZSBh dXRvLWxvYWRpbmcgZ2xvYmFsbHkgZm9yIHRoZSB1c2VyCi0rKEBweHJlZntIb21lIERpcmVjdG9y eSBJbml0IEZpbGV9KS4gIFdoaWxlIGl0IGlzIGltcHJvYmFibGUsIHlvdSBjb3VsZCBhbHNvCi0r dXNlIHN5c3RlbSBpbml0IGZpbGUgaW5zdGVhZCAoQHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3Vy YXRpb259KS4KLStAZW5kIGl0ZW1pemUKLSsKLStUaGlzIHNldHRpbmcgYXBwbGllcyB0byB0aGUg ZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVzZXIuICBJZiBubyBlbnRyeSBtYXRjaGVzCi0rQHZh bHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCByZXNvcnQgdG8gYWxzbyByZXNvbHZlIGFsbCB0aGUg ZmlsZSBuYW1lcyBpbnRvCi0rdGhlaXIgY2Fub25pY2FsIGZvcm0gKHR5cGljYWxseSByZXNvbHZp bmcgc3ltYm9saWMgbGlua3MpIGFuZCBjb21wYXJlIHRoZQotK2VudHJpZXMgYWdhaW4uICBAdmFs dWV7R0RCTn0gYWxyZWFkeSBjYW5vbmljYWxpemVzIG1vc3Qgb2YgdGhlIGZpbGVuYW1lcyBvbiBp dHMKLStvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEgY2Fub25pY2FsIGZv cm0gb2YgZGlyZWN0b3JpZXMgaXMKLStyZWNvbW1lbmRlZCB0byBiZSBlbnRlcmVkLgotKwotIEBu b2RlIE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1l c3NhZ2VzCi0gCi1AQCAtMjQ5NTUsMTAgKzI1MDYyLDEwIEBAIEV4YW1wbGU6Ci0gCi0gQHNtYWxs ZXhhbXBsZQotIChnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0tTG9hZGVkICBT Y3JpcHQKLS1ZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5Ci0tICAgICAgICBmdWxsIG5hbWU6 IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKLS1NaXNzaW5nIG15LWZvby1wcmV0dHktcHJpbnRl cnMucHkKLStMb2FkZWQgU2NyaXB0Ci0rWWVzICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5Ci0rICAg ICAgIGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotK05vICAgICBteS1mb28t cHJldHR5LXByaW50ZXJzLnB5Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSBAZW5kIHRhYmxlCi0gCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1s b2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42 MjE3MzU5ODUgKzAyMDAKLUBAIC03MiwxNCArNzIsMTkgQEAgc3RhdGljIHZvaWQKLSBnZGJweV9s b2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklM RSAqZmlsZSwKLSAJCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSsgIGludCBpc19z YWZlOwotICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gCi0r ICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOwotKwotICAgLyog QWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHMiCi0gICAgICBjYW4gcHJpbnQgaXQuICAqLwotICAgcHNwYWNlX2luZm8g PSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1f c3BhY2UpOwotLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxl bmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNw YWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFtZSwKLSsJCSAgICAmc2NyaXB0X2xh bmd1YWdlX3B5dGhvbik7Ci0gCi0tICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAo b2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOwotKyAgaWYgKGlzX3NhZmUpCi0rICAgIHNvdXJjZV9w eXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBmaWxlLCBmaWxlbmFtZSk7Ci0gfQot IAotIC8qIExvYWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JKRklMRS4KLUBAIC0xNDcsNiArMTUy LDkgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgotIAl7Ci0gCSAg bWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBm dWxsX3BhdGgpOwotKwotKwkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRo KSkKLSsJICAgIG9wZW5lZCA9IDA7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLUBAIC0xNjcsNyAr MTc1LDcgQEAgVXNlIGBpbmZvIGF1dG8tbG9hZCBweXRob24gW1JFR0VYUF0nIHRvCi0gCi0gCSBJ V0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KLSAKLS0g ICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGUs IGZ1bGxfcGF0aCwKLSsgICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNw YWNlX2luZm8sIG9wZW5lZCwgZmlsZSwgZnVsbF9wYXRoLAotIAkJCQkJJnNjcmlwdF9sYW5ndWFn ZV9weXRob24pOwotIAotICAgICAgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxv YWRlZCwgbG9hZCBpdC4gICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxl LXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlw dC5leHAJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKLUBAIC0zNyw2ICszNyw3 IEBAIGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQotIHNldCByZW1vdGVf cHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0tZ2RiLnB5LmluICR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIucHldCi0gCi0gZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3JlbW90ZV9weXRob25fZmlsZX0iICJzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCIKLSBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0gIyBWZXJpZnkgZ2RiIGxv YWRlZCB0aGUgc2NyaXB0LgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1z Y3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQu ZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCi1AQCAtNDksNiArNDksNyBA QCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSBzZXQgcmVtb3RlX3B5 dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9LnB5XQotIAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dk Yl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1vdGVfcHl0aG9u X2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCi0gZ2RiX2xvYWQgJHtiaW5maWxlfQot IAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KCmRpZmYgLS1naXQgYS9nZGItYXV0 b2xvYWQtMTFvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTExb2YxOC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM2OGIwCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWF1dG9sb2FkLTExb2YxOC5wYXRjaApAQCAtMCwwICsxLDc0NCBAQAorW3BhdGNoIzQgNS84XSBz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTItMDQvbXNnMDAwOTIuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMi0wNC9tc2cwMDExNC5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0 LzE3IDE1OjUxOjQxCTEuMTQxMTMKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1 OjU0OjI4CTEuMTQxMTQKKyMjIC0xLDUgKzEsMzkgQEAKKyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCU5ldyBvcHRpb24gInNldCBh dXRvLWxvYWQgc2FmZS1wYXRoIi4KKysJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBhdXRvLWxv YWQgc2FmZS1wYXRoIgorKwlhbmQgInNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIuCisrCSogYXV0 by1sb2FkLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaCwgcmVhZGxpbmUvdGlsZGUuaCBhbmQgY29tcGxl dGVyLmguCisrCShhdXRvX2xvYWRfc2FmZV9wYXRoLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYykK KysJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSwgc2V0X2F1dG9fbG9hZF9zYWZlX3Bh dGgpCisrCShzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRo LCBmaWxlbmFtZV9pc19pbl9kaXIpCisrCShmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYywgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldy4KKysJKHNvdXJjZV9nZGJfc2Ny aXB0X2Zvcl9vYmpmaWxlKTogTmV3IHZhcmlhYmxlIGlzX3NhZmUuICBDYWxsCisrCWZpbGVfaXNf YXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMgbm90LgorKwkoc3RydWN0IGxvYWRlZF9z Y3JpcHQpOiBOZXcgZmllbGQgbG9hZGVkLgorKwkobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJh bWV0ZXIgbG9hZGVkLiAgSW5pdGlhbGl6ZSBTTE9UIHdpdGggaXQuCisrCShwcmludF9zY3JpcHQp OiBVc2UgTE9BREVEIGluZGljYXRvciBpbnN0ZWFkIG9mIEZVTExfUEFUSC4gIENoYW5nZQorKwlv dXRwdXQgIk1pc3NpbmciIHRvICJObyIuCisrCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcg dmFyaWFibGUgY21kLiAgSW5pdGlhbGl6ZQorKwlhdXRvX2xvYWRfc2FmZV9wYXRoLiAgUmVnaXN0 ZXIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiwKKysJInNob3cgYXV0by1sb2FkIHNhZmUtcGF0 aCIgYW5kICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIuCisrCSogYXV0by1sb2FkLmggKG1heWJl X2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1ldGVyIGxvYWRlZC4KKysJKGZpbGVfaXNfYXV0b19sb2Fk X3NhZmUpOiBOZXcgZGVjbGFyYXRpb24uCisrCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgorKwkq IGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKysJKiBjb25maWd1cmUuYWM6IE5ldyBwYXJhbWV0ZXJz IC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrCWFuZCAtLXdpdGhvdXQtYXV0by1sb2FkLXNh ZmUtcGF0aC4KKysJKiBsaW51eC10aHJlYWQtZGIuYyAodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21f cGRpcl8xKQorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogQ2hlY2sgZmlsZV9pc19h dXRvX2xvYWRfc2FmZSBmaXJzdC4KKysJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBDaGVjayBm aWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZvcgorKwlMT0NBTF9HREJJTklULgorKwkqIHB5dGhvbi9w eS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldwor Kwl2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlLiAgUmV0dXJu IGlmIGl0IGlzIG5vdC4KKysJKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBDYWxsIGZpbGVfaXNf YXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMKKysJbm90LgorKworKzIwMTItMDQtMTcg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJYXV0by1s b2FkOiBJbXBsZW1lbnRhdGlvbi4KKyAJKiBORVdTOiBOZXcgZGVzY3JpcHRpb25zIGZvciAiaW5m byBhdXRvLWxvYWQiLAorIAkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiLAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05F V1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAx Mi0wNC0xOCAwMDo0OTowMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMjgyNzA2MzE5ICswMjAwCitAQCAtNjcsNiAr NjcsMTEgQEAgc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258b2ZmCisgc2hvdyBhdXRvLWxv YWQgbGlidGhyZWFkLWRiCisgICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVj aWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5LgorIAorK3NldCBhdXRvLWxvYWQg c2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQorK3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aAor KyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0 by1sb2FkIGZpbGVzLgorKyAgVGhlIGRlbGltaXRlciAoJzonIGFib3ZlKSBtYXkgZGlmZmVyIGFj Y29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKysKKyAqIE5ldyBjb21tYW5kIGxpbmUgb3B0 aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFu ZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRv LWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0 by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAy MCArMDIwMAorQEAgLTMyLDYgKzMyLDkgQEAKKyAjaW5jbHVkZSAiZ2RiY21kLmgiCisgI2luY2x1 ZGUgImNsaS9jbGktZGVjb2RlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgorKyNp bmNsdWRlICJnZGJfdmVjcy5oIgorKyNpbmNsdWRlICJyZWFkbGluZS90aWxkZS5oIgorKyNpbmNs dWRlICJjb21wbGV0ZXIuaCIKKyAKKyAvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlw dHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4KKyAgICBFLmcuIFdo ZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLmdkYi4g ICovCitAQCAtOTAsNiArOTMsMTgxIEBAIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0 cnVjdCB1aV8KKyAJCSAgICB2YWx1ZSk7CisgfQorIAorKy8qIERpcmVjdG9yeSBsaXN0IHNhZmUg dG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gIEl0IGlzIG5vdCBjaGVja2VkIGZvcgorKyAgIGFi c29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRlZC4gIEl0IGlzIGlu aXRpYWxpemVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8KKytzdGF0aWMgY2hh ciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKKysKKysvKiBWZWN0b3Igb2YgZGlyZWN0b3J5IGVsZW1l bnRzIG9mIEFVVE9fTE9BRF9TQUZFX1BBVEggd2l0aCBlYWNoIG9uZSBub3JtYWxpemVkCisrICAg YnkgdGlsZGVfZXhwYW5kIGFuZCBwb3NzaWJseSBlYWNoIGVudHJpZXMgaGFzIGFkZGVkIGl0cyBn ZGJfcmVhbHBhdGgKKysgICBjb3VudGVycGFydC4gICovCisrc3RhdGljIFZFQyAoY2hhcl9wdHIp ICphdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYzsKKysKKysvKiBVcGRhdGUgYXV0b19sb2FkX3NhZmVf cGF0aF92ZWMgZnJvbSBjdXJyZW50IEFVVE9fTE9BRF9TQUZFX1BBVEguICAqLworKworK3N0YXRp YyB2b2lkCisrYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQorK3sKKysgIFZF QyAoY2hhcl9wdHIpICpkaXJfdmVjID0gTlVMTDsKKysgIHVuc2lnbmVkIGxlbjsKKysgIGludCBp eDsKKysKKysgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7Cisr CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAo YXV0b19sb2FkX3NhZmVfcGF0aCk7CisrICBsZW4gPSBWRUNfbGVuZ3RoIChjaGFyX3B0ciwgYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWMpOworKworKyAgLyogQXBwbHkgdGlsZGVfZXhwYW5kIGFuZCBn ZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQworKyAgICAgZWxlbWVu dC4gICovCisrICBmb3IgKGl4ID0gMDsgaXggPCBsZW47IGl4KyspCisrICAgIHsKKysgICAgICBj aGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywg aXgpOworKyAgICAgIGNoYXIgKmV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkaXIpOworKyAgICAg IGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOworKworKyAgICAgIC8q IEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9leHBhbmQtZWQuICAq LworKyAgICAgIHhmcmVlIChkaXIpOworKyAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7CisrCisrICAgICAgLyogSWYgZ2Ri X3JlYWxwYXRoIHJldHVybnMgYSBkaWZmZXJlbnQgY29udGVudCwgYXBwZW5kIGl0LiAgKi8KKysg ICAgICBpZiAoc3RyY21wIChyZWFsX3BhdGgsIGV4cGFuZGVkKSA9PSAwKQorKwl4ZnJlZSAocmVh bF9wYXRoKTsKKysgICAgICBlbHNlCisrCVZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKKysgICAgfQorK30KKysKKysvKiAic2V0IiBj b21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uIHZhcmlhYmxl LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQorK3sKKysgIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKyt9CisrCisrLyogInNob3ciIGNvbW1h bmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAq LworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoIChzdHJ1Y3QgdWlf ZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGlmICgqdmFsdWUgPT0gMCkKKysgICAgZnBy aW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkIGZpbGVzIGFyZSBzYWZlIHRvIGxvYWQg ZnJvbSBhbnkgIgorKwkJCSAgICAgICJkaXJlY3RvcnkuXG4iKSk7CisrICBlbHNlCisrICAgIGZw cmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBp dCBpcyBzYWZlIHRvICIKKysJCQkgICAgICAiYXV0by1sb2FkIGZpbGVzIGlzICVzLlxuIiksCisr CQkgICAgICB2YWx1ZSk7CisrfQorKworKy8qICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIgY29t bWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbgorKyAgIHZhcmlh YmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2FkZF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFy ICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgY2hhciAqczsKKysKKysgIGlmIChhcmdzID09 IE5VTEwgfHwgKmFyZ3MgPT0gMCkKKysgICAgZXJyb3IgKF8oIlwKKytBZGRpbmcgZW1wdHkgZGly ZWN0b3J5IGVsZW1lbnQgZGlzYWJsZXMgdGhlIGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHku ICBcCisrVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0 aGF0LiIpKTsKKysKKysgIHMgPSB4c3RycHJpbnRmICgiJXMlYyVzIiwgYXV0b19sb2FkX3NhZmVf cGF0aCwgRElSTkFNRV9TRVBBUkFUT1IsIGFyZ3MpOworKyAgeGZyZWUgKGF1dG9fbG9hZF9zYWZl X3BhdGgpOworKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHM7CisrCisrICBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlY191cGRhdGUgKCk7CisrfQorKworKy8qIFJldHVybiAxIGlmIEZJTEVOQU1FIGlz IGVxdWFsIHRvIERJUiBvciBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIHRoZQorKyAgIHN1YmRpcmVj dG9yeSBESVIuICBSZXR1cm4gMCBvdGhlcndpc2UuICBnZGJfcmVhbHBhdGggbm9ybWFsaXphdGlv biBpcyBuZXZlcgorKyAgIGRvbmUgaGVyZS4gICovCisrCisrc3RhdGljIEFUVFJJQlVURV9QVVJF IGludAorK2ZpbGVuYW1lX2lzX2luX2RpciAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNo YXIgKmRpcikKKyt7CisrICBzaXplX3QgZGlyX2xlbiA9IHN0cmxlbiAoZGlyKTsKKysKKysgIHdo aWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1IgKGRpcltkaXJfbGVuIC0gMV0pKQorKyAg ICBkaXJfbGVuLS07CisrCisrICByZXR1cm4gKGZpbGVuYW1lX25jbXAgKGRpciwgZmlsZW5hbWUs IGRpcl9sZW4pID09IDAKKysJICAmJiAoSVNfRElSX1NFUEFSQVRPUiAoZmlsZW5hbWVbZGlyX2xl bl0pCisrCSAgICAgIHx8IGZpbGVuYW1lW2Rpcl9sZW5dID09ICdcMCcpKTsKKyt9CisrCisrLyog UmV0dXJuIDEgaWYgRklMRU5BTUUgYmVsb25ncyB0byBvbmUgb2YgZGlyZWN0b3J5IGNvbXBvbmVu dHMgb2YKKysgICBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQy4gIFJldHVybiAwIG90aGVyd2lzZS4K KysgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgaXMgbmV2ZXIgY2FsbGVkLgorKyAg ICpGSUxFTkFNRV9SRUFMUCBtYXkgYmUgdXBkYXRlZCBieSBnZGJfcmVhbHBhdGggb2YgRklMRU5B TUUgLSBpdCBoYXMgdG8gYmUKKysgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KKysKKytzdGF0 aWMgaW50CisrZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKGNvbnN0IGNo YXIgKmZpbGVuYW1lLAorKwkJCQkJY2hhciAqKmZpbGVuYW1lX3JlYWxwKQorK3sKKysgIGNoYXIg KmRpcjsKKysgIGludCBpeDsKKysKKysgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9w dHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsgKytpeCkKKysgICAgaWYgKCpm aWxlbmFtZV9yZWFscCA9PSBOVUxMICYmIGZpbGVuYW1lX2lzX2luX2RpciAoZmlsZW5hbWUsIGRp cikpCisrICAgICAgYnJlYWs7CisrICAKKysgIGlmIChkaXIgPT0gTlVMTCkKKysgICAgeworKyAg ICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKKysJKmZpbGVuYW1lX3JlYWxwID0gZ2Ri X3JlYWxwYXRoIChmaWxlbmFtZSk7CisrCisrICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRl IChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOworKwkgICArK2l4 KQorKwlpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCisrCSAg YnJlYWs7CisrICAgIH0KKysKKysgIGlmIChkaXIgIT0gTlVMTCkKKysgICAgcmV0dXJuIDE7Cisr CisrICByZXR1cm4gMDsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgaXMgbG9jYXRl ZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIG9mCisrICAgQVVUT19MT0FEX1NBRkVfUEFUSC4g IE90aGVyd2lzZSBjYWxsIHdhcm5pbmcgYW5kIHJldHVybiAwLiAgRklMRU5BTUUgZG9lcworKyAg IG5vdCBoYXZlIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCisrCisrICAgRXhpc3RlbmNlIG9mIEZJ TEVOQU1FIGlzIG5vdCBjaGVja2VkLiAgRnVuY3Rpb24gd2lsbCBzdGlsbCBnaXZlIGEgd2Fybmlu ZworKyAgIGV2ZW4gaWYgdGhlIGNhbGxlciB3b3VsZCBxdWlldGx5IHNraXAgbm9uLWV4aXN0aW5n IGZpbGUgaW4gdW5zYWZlCisrICAgZGlyZWN0b3J5LiAgKi8KKysKKytpbnQKKytmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICBjaGFyICpmaWxlbmFt ZV9yZWFsID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKworKyAgYmFja190 byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZmlsZW5hbWVfcmVhbCk7 CisrCisrICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKGZpbGVu YW1lLCAmZmlsZW5hbWVfcmVhbCkpCisrICAgIHsKKysgICAgICBkb19jbGVhbnVwcyAoYmFja190 byk7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjX3VwZGF0ZSAoKTsKKysgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRo X3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKKysgICAgeworKyAgICAgIGRvX2NsZWFu dXBzIChiYWNrX3RvKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgd2FybmluZyAo XygiRmlsZSBcIiVzXCIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkIGJ5IHlvdXIgIgor KwkgICAgICJgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvIFwiJXNcIi4iKSwKKysJICAgZmls ZW5hbWVfcmVhbCwgYXV0b19sb2FkX3NhZmVfcGF0aCk7CisrCisrICBkb19jbGVhbnVwcyAoYmFj a190byk7CisrICByZXR1cm4gMDsKKyt9CisrCisgLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFu Z3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLiAgKi8KKyAKKyBzdGF0 aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfZ2RiCitAQCAt OTksMTMgKzI3NywyMCBAQCBzdGF0aWMgdm9pZAorIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKyAJCQkgICAgICAgY29u c3QgY2hhciAqZmlsZW5hbWUpCisgeworKyAgaW50IGlzX3NhZmU7CisgICBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGU7CisgCisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5h bWUpOworKworICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAi aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQgaXQuICAqLworICAg cHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UpOworLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZp bGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKyAgbWF5YmVfYWRkX3Nj cmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFtZSwKKysJCSAgICAm c2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBpZiAoIWlzX3NhZmUpCisrICAgIHJldHVybjsK KyAKKyAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQorICAgICB7CitAQCAtMTQwLDYg KzMyNSw5IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0CisgICAgICBpbmFjY2Vzc2libGUpLiAgKi8K KyAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKyAKKysgIC8qIE5vbi16ZXJvIGlmIHRoaXMgc2Ny aXB0IGhhcyBiZWVuIGxvYWRlZC4gICovCisrICBpbnQgbG9hZGVkOworKworICAgY29uc3Qgc3Ry dWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7CisgfTsKKyAKK0BAIC0yMzIsMTIgKzQyMCwx MyBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzCisgICByZXR1cm4g aW5mbzsKKyB9CisgCistLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFi bGUgb2YgUFNQQUNFX0lORk8uCistICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3 YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCisrLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdV QUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uICBMT0FERUQgMSBpZiB0aGUKKysgICBz Y3JpcHQgaGFzIGJlZW4gKGlzIGdvaW5nIHRvKSBiZSBsb2FkZWQsIDAgb3RoZXJ3aXNlIChzdWNo IGFzIGlmIGl0IGhhcyBub3QKKysgICBiZWVuIGZvdW5kKS4gIEZVTExfUEFUSCBpcyBOVUxMIGlm IHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJlc3VsdCBpcworICAgIHRydWUgaWYgdGhl IHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisgCisgaW50CistbWF5 YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8s CisrbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8sIGludCBsb2FkZWQsCisgCQkgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aCwKKyAJCSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisg eworQEAgLTI3MSw2ICs0NjAsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjCisgCX0KKyAgICAgICBlbHNlCisgCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Cisr ICAgICAgKCpzbG90KS0+bG9hZGVkID0gbG9hZGVkOworICAgICAgICgqc2xvdCktPmxhbmd1YWdl ID0gbGFuZ3VhZ2U7CisgICAgIH0KKyAKK0BAIC00MzIsNyArNjIyLDcgQEAgcHJpbnRfc2NyaXB0 IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaQorIAorICAgY2hhaW4gPSBtYWtlX2NsZWFudXBf dWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOworIAorLSAgdWlfb3V0X2ZpZWxk X3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1p c3NpbmciKTsKKysgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0 LT5sb2FkZWQgPyAiWWVzIiA6ICJObyIpOworICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQs ICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOworICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsK KyAKK0BAIC03MTgsNiArOTA4LDggQEAgdm9pZCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQp OworIHZvaWQKKyBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgeworKyAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmNtZDsKKysKKyAgIGF1dG9fbG9hZF9wc3BhY2VfZGF0YQorICAgICA9 IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRoX2NsZWFudXAgKGF1dG9fbG9hZF9wc3Bh Y2VfZGF0YV9jbGVhbnVwKTsKKyAKK0BAIC03NTcsNCArOTQ5LDMwIEBAIFRoaXMgb3B0aW9ucyBo YXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKKyAJICAgXygiUHJpbnQgd2hldGhlciBjdXJyZW50 IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhhcyBiZWVuIGxvYWRlZC5cblwKKyBVc2FnZTogaW5m byBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAorIAkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0 X2dldCAoKSk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoREVGQVVMVF9B VVRPX0xPQURfU0FGRV9QQVRIKTsKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAo KTsKKysgIGFkZF9zZXRzaG93X29wdGlvbmFsX2ZpbGVuYW1lX2NtZCAoInNhZmUtcGF0aCIsIGNs YXNzX3N1cHBvcnQsCisrCQkJCSAgICAgJmF1dG9fbG9hZF9zYWZlX3BhdGgsIF8oIlwKKytTZXQg dGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9h ZCBmaWxlcy4iKSwgXygiXAorK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGlj aCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAorK1ZhcmlvdXMgZmlsZXMg bG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMg bXVzdFxuXAorK2JlIGxvY2F0ZWQgaW4gb25lIG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkg dGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwgYmVcblwKKytwcmludGVkIGFuZCBmaWxlIHdpbGwg bm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5IHN0cmluZyAob3IgZXZlblxuXAorK2Vt cHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55IGZpbGUgZm9yIHRoZSAnc2V0IGF1dG8t bG9hZCAuLi4nIG9wdGlvbnMuXG5cCisrVGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3IgdGhlIGtp bmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy5cblwKKytUaGlzIG9w dGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4i KSwKKysJCQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCwKKysJCQkJICAgICBzaG93X2F1 dG9fbG9hZF9zYWZlX3BhdGgsCisrCQkJCSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAo KSwKKysJCQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisrICBjbWQg PSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorKwkJ IGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkJIF8oIkFkZCBlbnRyaWVzIHRvIHRoZSBsaXN0 IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSAiCisrCQkgICAidG8gYXV0by1s b2FkIGZpbGVzLlxuXAorK1NlZSB0aGUgY29tbWFuZHMgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo JyBhbmQgJ3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG9cblwKKythY2Nlc3MgdGhlIGN1cnJl bnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCisrCQkgJmNtZGxpc3QpOworKyAgc2V0X2NtZF9jb21w bGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxldGVyKTsKKyB9CitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAw MDo0OToyMS42MDc3MzYwMjAgKzAyMDAKK0BAIC0zOSw3ICszOSw4IEBAIGV4dGVybiBpbnQgYXV0 b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGUKKyBleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyAqCisgICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1 Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKyBleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQg KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAorLQkJCSAgICAgY29u c3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJCSAgICAgaW50IGxvYWRl ZCwgY29uc3QgY2hhciAqbmFtZSwKKysJCQkgICAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJ CQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKKyBleHRlcm4g dm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor IAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7CitAQCAt NTQsNCArNTUsNiBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvCisg ZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9n ZXQgKHZvaWQpOworIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9p bmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKytleHRlcm4gaW50IGZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysKKyAjZW5kaWYgLyogQVVUT19MT0FEX0gg Ki8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcuaW4KKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAw OjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZp Zy5pbgkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAgLTQzLDYgKzQzLDkg QEAKKyAgICBtb3ZlZC4gKi8KKyAjdW5kZWYgREVCVUdESVJfUkVMT0NBVEFCTEUKKyAKKysvKiBE aXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICovCisrI3VuZGVmIERF RkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0 IGFyY2hpdGVjdHVyZS4gKi8KKyAjdW5kZWYgREVGQVVMVF9CRkRfQVJDSAorIAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDQt MTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCitAQCAtOTU1LDYgKzk1NSw3IEBAIHdpdGhfc2Vw YXJhdGVfZGVidWdfZGlyCisgd2l0aF9nZGJfZGF0YWRpcgorIHdpdGhfcmVsb2NhdGVkX3NvdXJj ZXMKKyB3aXRoX3JwbQorK3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aAorIGVuYWJsZV90YXJnZXRz CisgZW5hYmxlXzY0X2JpdF9iZmQKKyBlbmFibGVfZ2RiY2xpCitAQCAtMTY2Niw2ICsxNjY3LDEw IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21h dGljYWxseSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcworICAgLS13aXRoLXJw bSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5nIGRlYnVnaW5mb3Mg KHllcy9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28p CisrICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICisrICAgICAgICAgICAgICAgICAg ICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMKKysgIC0t d2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICAgICAgICAgICAgICAgICAgICAgICAgICBk byBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCisgICAtLXdpdGgtbGli dW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0CisgICAt LXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2Yg dGhlIHRlcm1jYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKK0BAIC04NDc3 LDYgKzg0ODIsMzIgQEAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQTV9QS0dfRVJSTwor ICAgZmkKKyBmaQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aCIgPiY1CisrJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aC4uLiAiID4mNjsgfQor KworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4u CisraWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4g OgorKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9h dXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICB3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg9IiIKKysgZmkKKytlbHNlCisrICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVm aXgiCisrZmkKKysKKysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFj X2RlZmF1bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVj X3ByZWZpeD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICR3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGhgCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmlu ZV9kaXJgCisrCisrY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgREVGQVVMVF9B VVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVmaW5lX2RpciIKKytfQUNFT0YKKysKKysKKyt7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aCIgPiY1CisrJGFzX2VjaG8gIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgi ID4mNjsgfQorKworIAorIAorIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0ZSIKK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5h YwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMTczNjAxMCArMDIwMAorQEAgLTMzOSw2ICszMzksMTgg QEAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYQorICAgZmkKKyBmaQor ICAKKytBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQor K0FDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCisrQVNfSEVMUF9TVFJJTkcoWy0td2l0 aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1 dG8tbG9hZGVkIGZpbGVzXSkKKytBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1z YWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9uc10p LAorK1tpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKysg ICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysgZmldLAorK1t3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGg9IiRwcmVmaXgiXSkKKytBQ19ERUZJTkVfRElSKERFRkFVTFRfQVVUT19MT0FEX1NB RkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkgICAgICBbRGlyZWN0b3JpZXMg c2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCisrQUNfTVNHX1JFU1VMVChbJHdpdGhf YXV0b19sb2FkX3NhZmVfcGF0aF0pCisrCisgQUNfQ09ORklHX1NVQkRJUlModGVzdHN1aXRlKQor IAorICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1 cmF0aW9ucworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9saW51eC10aHJl YWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjEy NzM2MDA3ICswMjAwCitAQCAtODY4LDcgKzg2OCwxMSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJv bV9wZGlyXzEgKHN0cnVjdCBvCisgICAvKiBUaGlzIHNob3VsZCBhdCBtaW5pbXVtIGhpdCB0aGUg Zmlyc3QgY2hhcmFjdGVyLiAgKi8KKyAgIGdkYl9hc3NlcnQgKGNwICE9IE5VTEwpOworICAgc3Ry Y3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7CistICByZXN1bHQgPSB0cnlfdGhyZWFkX2Ri X2xvYWQgKHBhdGgpOworKworKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkK KysgICAgcmVzdWx0ID0gMDsKKysgIGVsc2UKKysgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9s b2FkIChwYXRoKTsKKyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAgIHJldHVybiByZXN1 bHQ7CitAQCAtOTM0LDcgKzkzOCwxMSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNv bnN0IGNoYXIKKyAgIG1lbWNweSAocGF0aCwgZGlyLCBkaXJfbGVuKTsKKyAgIHBhdGhbZGlyX2xl bl0gPSAnLyc7CisgICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsgMSwgTElCVEhSRUFEX0RCX1NP KTsKKy0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CisrCisrICBpZiAoIWZp bGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQorKyAgICByZXN1bHQgPSAwOworKyAgZWxzZQor KyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOworIAorICAgZG9fY2xlYW51 cHMgKGNsZWFudXApOworICAgcmV0dXJuIHJlc3VsdDsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMjczNjAwNyAr MDIwMAorQEAgLTEwMjYsNyArMTAyNiw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisg ICAgIHsKKyAgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFs cGF0aCAobG9jYWxfZ2RiaW5pdCk7CisgCistICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYg YXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYg YXV0b19sb2FkX2xvY2FsX2dkYmluaXQKKysJICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChs b2NhbF9nZGJpbml0KSkKKyAJeworIAkgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9 IDE7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0OToyMS42MjA3MzU5ODcg KzAyMDAKK0BAIC0yMDgwMSw2ICsyMDgwMSw4IEBAIGdkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5n IG9mIGNhbm5lZCBzZXEKKyBsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Ig c3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRp bmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3RvcnkgaXMgb24uCisgcHl0 aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCisrc2Fm ZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0 by1sb2FkIGZpbGVzCisrICAgICAgICAgICAgaXMgL3Vzci9sb2NhbC4KKyBAZW5kIHNtYWxsZXhh bXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9CitAQCAtMjA4NzIsMTIgKzIwODc0LDE5 IEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcworIEB0YWIgU2hvdyBz ZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKyBAaXRlbSBAeHJlZntpbmZvIGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorIEB0YWIgU2hvdyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdn aW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9LgorK0B0 YWIgQ29udHJvbCBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZy4KKytA aXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9LgorK0B0YWIgU2hvdyBkaXJlY3Rv cmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZy4KKytAaXRlbSBAeHJlZnthZGQtYXV0 by1sb2FkLXNhZmUtcGF0aH0uCisrQHRhYiBBZGQgZGlyZWN0b3J5IHRydXN0ZWQgZm9yIGF1dG9t YXRpYyBsb2FkaW5nLgorIEBlbmQgbXVsdGl0YWJsZQorIAorIEBtZW51CisgKiBJbml0IEZpbGUg aW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdH0KKyAqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBA c2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisgKiBvYmpmaWxlLWdk Yi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQg Z2RiLXNjcmlwdH0KKysqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAgICAgICAgICBAc2Ft cHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9CisgQHhyZWZ7UHl0aG9uIEF1dG8t bG9hZGluZ30uCisgQGVuZCBtZW51CisgCitAQCAtMjA5NzgsNiArMjA5ODcsMTA0IEBAIGF1dG8t bG9hZGVkLgorIElmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5j ZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRoCisgbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQu CisgCisrQG5vZGUgQXV0by1sb2FkaW5nIHNhZmUgcGF0aAorK0BzdWJzZWN0aW9uIFNlY3VyaXR5 IHJlc3RyaWN0aW9uIGZvciBhdXRvLWxvYWRpbmcKKytAY2luZGV4IGF1dG8tbG9hZGluZyBzYWZl LXBhdGgKKysKKytBcyB0aGUgZmlsZXMgb2YgaW5mZXJpb3IgY2FuIGNvbWUgZnJvbSB1bnRydXN0 ZWQgc291cmNlIChzdWNoIGFzIHN1Ym1pdHRlZCBieQorK2FuIGFwcGxpY2F0aW9uIHVzZXIpIEB2 YWx1ZXtHREJOfSBkb2VzIG5vdCBhbHdheXMgbG9hZCBhbnkgZmlsZXMgYXV0b21hdGljYWxseS4K KytAdmFsdWV7R0RCTn0gcHJvdmlkZXMgdGhlIEBzYW1we3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo fSBzZXR0aW5nIHRvIGxpc3QKKytkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBsb2FkaW5nIGZpbGVz IG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCBieSB1c2VyLgorKworK0lmIHRoZSBwYXRoIGlzIG5v dCBzZXQgcHJvcGVybHkgeW91IHdpbGwgc2VlIGEgd2FybmluZyBhbmQgdGhlIGZpbGUgd2lsbCBu b3QKKytnZXQgbG9hZGVkOgorKworK0BzbWFsbGV4YW1wbGUKKyskIC4vZ2RiIC1xIC4vZ2RiCisr UmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9uZS4KKyt3YXJuaW5n OiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVu CisrICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRv ICIvdXNyL2xvY2FsIi4KKyt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5 IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KKysgICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRv LWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgorK0BlbmQgc21hbGxleGFtcGxl CisrCisrVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRo ZSBmb2xsb3dpbmcgY29tbWFuZHM6CisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aH0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoCisrQGl0 ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rvcmllc30KKytTZXQgdGhlIGxp c3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJlY3RvcmllcykgdHJ1c3RlZCBmb3Ig YXV0b21hdGljCisrbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBZb3UgY2FuIGFs c28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUuCisrVGhlIGxpc3Qgb2YgZGlyZWN0b3Jp ZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6fSBvbiBHTlUgYW5kIFVuaXgKKytz eXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRp cmVjdG9yaWVzLCBzaW1pbGFybHkKKyt0byB0aGUgQGVudntQQVRIfSBlbnZpcm9ubWVudCB2YXJp YWJsZS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0KKytAa2luZGV4IHNo b3cgYXV0by1sb2FkIHNhZmUtcGF0aAorK0BpdGVtIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAor K1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRp bmcgYW5kIGV4ZWN1dGlvbiBvZgorK3NjcmlwdHMuCisrCisrQGFuY2hvcnthZGQtYXV0by1sb2Fk LXNhZmUtcGF0aH0KKytAa2luZGV4IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrQGl0ZW0gYWRk LWF1dG8tbG9hZC1zYWZlLXBhdGgKKytBZGQgYW4gZW50cnkgKG9yIGxpc3Qgb2YgZW50cmllcykg dGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGljCisrbG9hZGluZyBh bmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aXBsZSBlbnRyaWVzIG1heSBiZSBkZWxpbWl0 ZWQgYnkgdGhlCisraG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKytA ZW5kIHRhYmxlCisrCisrU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBk aXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCisrVGhpcyB2YXJpYWJsZSBpcyBzdXBw b3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0YWJsZSBieSB0aGUK KytzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRoZWlyIHNvdXJjZSBkaXJl Y3RvcmllcyBpbiBpbml0IGZpbGVzIGluCisrdGhlaXIgaG9tZSBkaXJlY3RvcmllcyAoQHB4cmVm e0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVwcmVjYXRlZAorK2luaXQg ZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKysoQHB4cmVme0luaXQgRmlsZSBpbiB0aGUg Q3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9KS4KKysKKytUbyBmb3JjZSBAdmFsdWV7 R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQgZGVjbGluZWQgdG8gbG9hZCBpbiB0aGUgcHJldmlv dXMKKytleGFtcGxlLCB5b3UgY291bGQgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHdheXM6Cisr CisrQGl0ZW1pemUgQGJ1bGxldAorK0BpdGVtIH4vLmdkYmluaXQ6IGFkZC1hdXRvLWxvYWQtc2Fm ZS1wYXRoIH4vc3JjL2dkYgorK1NwZWNpZnkgdGhpcyB0cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBm aWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBvbmVudCBvZiB0aGUgbGlzdC4KKytZb3UgaGF2ZSB0byBz cGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXllZCBieQorK2J5IEBz YW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBp biB0aGlzIGV4YW1wbGUpLgorKworK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQg c2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIiIFtAZG90c3t9XX0KKytTcGVjaWZ5IHRoaXMg ZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZvciBhIHNpbmdsZQor K0B2YWx1ZXtHREJOfSBzZXNzaW9uLgorKworK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRv LWxvYWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19CisrRGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5 IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKytUaGlzIGFzc3VtZXMgYWxsIHRo ZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBj b21lCisrZnJvbSB0cnVzdGVkIHNvdXJjZXMuCisrCisrQGl0ZW0gQGtiZHsuL2NvbmZpZ3VyZSAt LXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytEdXJpbmcgY29tcGlsYXRpb24gb2YgQHZh bHVle0dEQk59IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2FkaW5nIHNhZmV0eS4KKytUaGlz IGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdpdGggdGhpcyBAdmFs dWV7R0RCTn0gY29tZSBmcm9tCisrdHJ1c3RlZCBzb3VyY2VzLgorK0BlbmQgaXRlbWl6ZQorKwor K09uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGZvcmJpZCBhdXRvbWF0 aWMgZmlsZXMgbG9hZGluZyB3aGljaAorK2Fsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5n IG1lc3NhZ2VzOgorKworK0BpdGVtaXplIEBidWxsZXQKKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJz ZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNv bW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorKwor K0BpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQorK0Rpc2Fi bGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUgdXNlcgorKyhAcHhyZWZ7SG9tZSBEaXJl Y3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBpbXByb2JhYmxlLCB5b3UgY291bGQgYWxz bworK3VzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQgKEBweHJlZntTeXN0ZW0td2lkZSBjb25m aWd1cmF0aW9ufSkuCisrQGVuZCBpdGVtaXplCisrCisrVGhpcyBzZXR0aW5nIGFwcGxpZXMgdG8g dGhlIGZpbGUgbmFtZXMgYXMgZW50ZXJlZCBieSB1c2VyLiAgSWYgbm8gZW50cnkgbWF0Y2hlcwor K0B2YWx1ZXtHREJOfSB0cmllcyBhcyBhIGxhc3QgcmVzb3J0IHRvIGFsc28gcmVzb2x2ZSBhbGwg dGhlIGZpbGUgbmFtZXMgaW50bworK3RoZWlyIGNhbm9uaWNhbCBmb3JtICh0eXBpY2FsbHkgcmVz b2x2aW5nIHN5bWJvbGljIGxpbmtzKSBhbmQgY29tcGFyZSB0aGUKKytlbnRyaWVzIGFnYWluLiAg QHZhbHVle0dEQk59IGFscmVhZHkgY2Fub25pY2FsaXplcyBtb3N0IG9mIHRoZSBmaWxlbmFtZXMg b24gaXRzCisrb3duIGJlZm9yZSBzdGFydGluZyB0aGUgY29tcGFyaXNvbiBzbyBhIGNhbm9uaWNh bCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCisrcmVjb21tZW5kZWQgdG8gYmUgZW50ZXJlZC4KKysK KyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFu ZCBNZXNzYWdlcworIAorQEAgLTI0OTU1LDEwICsyNTA2MiwxMCBAQCBFeGFtcGxlOgorIAorIEBz bWFsbGV4YW1wbGUKKyAoZ2RiKSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworLUxvYWRl ZCAgU2NyaXB0CistWWVzICAgICBweS1zZWN0aW9uLXNjcmlwdC5weQorLSAgICAgICAgZnVsbCBu YW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5CistTWlzc2luZyBteS1mb28tcHJldHR5LXBy aW50ZXJzLnB5CisrTG9hZGVkIFNjcmlwdAorK1llcyAgICBweS1zZWN0aW9uLXNjcmlwdC5weQor KyAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKKytObyAgICAgbXkt Zm9vLXByZXR0eS1wcmludGVycy5weQorIEBlbmQgc21hbGxleGFtcGxlCisgQGVuZCB0YWJsZQor IAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1 dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6 MjEuNjIxNzM1OTg1ICswMjAwCitAQCAtNzIsMTQgKzcyLDE5IEBAIHN0YXRpYyB2b2lkCisgZ2Ri cHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IEZJTEUgKmZpbGUsCisgCQkJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyB7CisrICBpbnQg aXNfc2FmZTsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwor IAorKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKKysKKyAg IC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIgorICAgICAgY2FuIHByaW50IGl0LiAgKi8KKyAgIHBzcGFjZV9p bmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9n cmFtX3NwYWNlKTsKKy0gIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwg ZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKysgIG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxlbmFtZSwgZmlsZW5hbWUsCisrCQkgICAgJnNjcmlw dF9sYW5ndWFnZV9weXRob24pOworIAorLSAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZp bGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKKysgIGlmIChpc19zYWZlKQorKyAgICBzb3Vy Y2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOwor IH0KKyAKKyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCitAQCAtMTQ3LDYg KzE1Miw5IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKyAJewor IAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJl ZSwgZnVsbF9wYXRoKTsKKysKKysJICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxf cGF0aCkpCisrCSAgICBvcGVuZWQgPSAwOworIAl9CisgICAgICAgZWxzZQorIAl7CitAQCAtMTY3 LDcgKzE3NSw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9uIFtSRUdFWFBdJyB0bworIAor IAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCisg CistICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBm aWxlLCBmdWxsX3BhdGgsCisrICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLCBvcGVuZWQsIGZpbGUsIGZ1bGxfcGF0aCwKKyAJCQkJCSZzY3JpcHRfbGFu Z3VhZ2VfcHl0aG9uKTsKKyAKKyAgICAgICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRs eSBsb2FkZWQsIGxvYWQgaXQuICAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0LmV4cAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2Jq ZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1z Y3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCitAQCAtMzcsNiAr MzcsNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KKyBzZXQgcmVt b3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9LWdkYi5weS5pbiAke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5XQorIAor IGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl90ZXN0X25vX291dHB1 dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1vdGVfcHl0aG9uX2ZpbGV9IiAic2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGgiCisgZ2RiX2xvYWQgJHtiaW5maWxlfQorIAorICMgVmVyaWZ5IGdk YiBsb2FkZWQgdGhlIHNjcmlwdC4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rp b24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2Ny aXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMTczNTk4NSArMDIwMAorQEAgLTQ5LDYgKzQ5 LDcgQEAgaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9Cisgc2V0IHJlbW90 ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfS5weV0KKyAKKyBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIK KytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoICR7cmVtb3RlX3B5 dGhvbl9maWxlfSIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorIGdkYl9sb2FkICR7YmluZmls ZX0KKyAKKyAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCgpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTEyb2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMm9mMTIucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MmJkYmMuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9s b2FkLTEyb2YxMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1MiArMCwwIEBACi1bcGF0Y2gj NCA2LzhdIHNldCBkZWJ1ZyBhdXRvLWxvYWQKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg5Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTItMDQvbXNnMDAxMTUuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wNC8xNyAxNTo1NDoyOAkxLjE0MTE0Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8x NyAxNTo1NjoyMAkxLjE0MTE1Ci0jIyAtMSw1ICsxLDI3IEBACi0gMjAxMi0wNC0xNyAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwlOZXcgb3B0aW9uICJz ZXQgZGVidWcgYXV0by1sb2FkIi4KLSsJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBkZWJ1ZyBh dXRvLWxvYWQiIGFuZCAic2hvdyBkZWJ1ZyBhdXRvLWxvYWQiLgotKwkqIGF1dG8tbG9hZC5jIChk ZWJ1Z19hdXRvX2xvYWQsIHNob3dfZGVidWdfYXV0b19sb2FkOiBOZXcuCi0rCShhdXRvX2xvYWRf c2FmZV9wYXRoX3ZlY191cGRhdGUpCi0rCShmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYyk6IENhbGwgZnByaW50Zl91bmZpbHRlcmVkCi0rCWlmIERFQlVHX0FVVE9fTE9BRC4K LSsJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1ldGVycyBkZWJ1Z19mbXQgYW5k IC4uLi4KLSsJQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQgaWYgREVCVUdfQVVUT19MT0FELgotKwko c291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0b19s b2FkX3NhZmUKLSsJY2FsbGVyIGJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KLSsJKF9pbml0aWFsaXpl X2F1dG9fbG9hZCk6IFJlZ2lzdGVyICJzZXQgZGVidWcgYXV0by1sb2FkIi4KLSsJKiBhdXRvLWxv YWQuaCAoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJhbWV0ZXJzIGRlYnVnX2ZtdAot KwlhbmQgLi4uLgotKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xvYWRfZnJv bV9wZGlyXzEpCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBFeHRlbmQgdGhlIGZp bGVfaXNfYXV0b19sb2FkX3NhZmUgY2FsbGVyCi0rCWJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KLSsJ KiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBMaWtld2lzZS4KLSsJKiBweXRob24vcHktYXV0by1s b2FkLmMgKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUpCi0rCShzb3VyY2Vfc2Vj dGlvbl9zY3JpcHRzKTogTGlrZXdpc2UuCi0rCi0rMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlOZXcgb3B0aW9uICJzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCIuCi0gCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCIKLSAJYW5kICJzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NTA6MTUuMDE4NjAw MjgyICswMjAwCi1AQCAtNzIsNiArNzIsMTAgQEAgc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0g ICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRv LWxvYWQgZmlsZXMuCi0gICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNj b3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgotIAotK3NldCBkZWJ1ZyBhdXRvLWxvYWQgb258 b2ZmCi0rc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLSsgIENvbnRyb2wgZGlzcGxheSBvZiBkZWJ1Z2dp bmcgaW5mbyBmb3IgYXV0by1sb2FkaW5nIHRoZSBmaWxlcyBhYm92ZS4KLSsKLSAqIE5ldyBjb21t YW5kIGxpbmUgb3B0aW9ucwotIAotIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBM aWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjUw OjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTQzLDYgKzQzLDIwIEBACi0gc3RhdGljIHZvaWQgc291 cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxF ICpmaWxlLAotIAkJCQkJICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOwotIAotKy8qIFZhbHVlIG9m IHRoZSAnc2V0IGRlYnVnIGF1dG8tbG9hZCcgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0r c3RhdGljIGludCBkZWJ1Z19hdXRvX2xvYWQgPSAwOwotKwotKy8qICJzaG93IiBjb21tYW5kIGZv ciB0aGUgZGVidWdfYXV0b19sb2FkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0 YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z19hdXRvX2xvYWQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBp bnQgZnJvbV90dHksCi0rCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3Qg Y2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdnaW5n IG91dHB1dCBmb3IgZmlsZXMgIgotKwkJCSAgICAib2YgJ3NldCBhdXRvLWxvYWQgLi4uJyBpcyAl cy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0gLyogVXNlci1zZXR0YWJsZSBvcHRpb24g dG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIEdEQl9BVVRPX0ZJTEVfTkFNRQotICAg IHNjcmlwdHM6Ci0gICAgc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKLUBAIC0xMTIs NiArMTI2LDExIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSAgIHVu c2lnbmVkIGxlbjsKLSAgIGludCBpeDsKLSAKLSsgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCi0rICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQlfKCJhdXRvLWxvYWQ6IFVwZGF0 aW5nIGRpcmVjdG9yaWVzIG9mIFwiJXNcIi5cbiIpLAotKwkJCWF1dG9fbG9hZF9zYWZlX3BhdGgp OwotKwotICAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKLSAK LSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChh dXRvX2xvYWRfc2FmZV9wYXRoKTsKLUBAIC0xMjYsMTQgKzE0NSwzNCBAQCBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0gICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3Jl YWxwYXRoIChleHBhbmRlZCk7Ci0gCi0gICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5 IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCi0tICAgICAgeGZyZWUgKGRpcik7Ci0g ICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgs IGV4cGFuZGVkKTsKLSAKLSsgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwl7Ci0rCSAgaWYg KHN0cmNtcCAoZXhwYW5kZWQsIGRpcikgPT0gMCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgXCIlc1wiLlxu IiksCi0rCQkJCWV4cGFuZGVkKTsKLSsJICBlbHNlCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csCi0rCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2ZWQgZGlyZWN0b3J5IFwiJXNc IiAiCi0rCQkJCSAgImFzIFwiJXNcIi5cbiIpLAotKwkJCQlkaXIsIGV4cGFuZGVkKTsKLSsJfQot KyAgICAgIHhmcmVlIChkaXIpOwotKwotICAgICAgIC8qIElmIGdkYl9yZWFscGF0aCByZXR1cm5z IGEgZGlmZmVyZW50IGNvbnRlbnQsIGFwcGVuZCBpdC4gICovCi0gICAgICAgaWYgKHN0cmNtcCAo cmVhbF9wYXRoLCBleHBhbmRlZCkgPT0gMCkKLSAJeGZyZWUgKHJlYWxfcGF0aCk7Ci0gICAgICAg ZWxzZQotLQlWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMs IHJlYWxfcGF0aCk7Ci0rCXsKLSsJICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rCi0rCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkK LSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2Fk OiBBbmQgY2Fub25pY2FsaXplZCBhcyBcIiVzXCIuXG4iKSwKLSsJCQkJcmVhbF9wYXRoKTsKLSsJ fQotICAgICB9Ci0gfQotIAotQEAgLTIxNywxNiArMjU2LDMwIEBAIGZpbGVuYW1lX2lzX2luX2F1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAgIGlmIChkaXIgPT0gTlVMTCkKLSAgICAgewotICAg ICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKLS0JKmZpbGVuYW1lX3JlYWxwID0gZ2Ri X3JlYWxwYXRoIChmaWxlbmFtZSk7Ci0rCXsKLSsJICAqZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVh bHBhdGggKGZpbGVuYW1lKTsKLSsJICBpZiAoZGVidWdfYXV0b19sb2FkICYmIHN0cmNtcCAoKmZp bGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0gMCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZlZCAiCi0rCQkJCSAgImZpbGUg XCIlc1wiIGFzIFwiJXNcIi5cbiIpLAotKwkJCQlmaWxlbmFtZSwgKmZpbGVuYW1lX3JlYWxwKTsK LSsJfQotIAotLSAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLS0JICAgKytpeCkKLS0JaWYgKGZpbGVuYW1l X2lzX2luX2RpciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIpKQotLQkgIGJyZWFrOwotKyAgICAgIGlm IChzdHJjbXAgKCpmaWxlbmFtZV9yZWFscCwgZmlsZW5hbWUpICE9IDApCi0rCWZvciAoaXggPSAw OyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGly KTsKLSsJICAgICArK2l4KQotKwkgIGlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9y ZWFscCwgZGlyKSkKLSsJICAgIGJyZWFrOwotICAgICB9Ci0gCi0gICBpZiAoZGlyICE9IE5VTEwp Ci0tICAgIHJldHVybiAxOwotKyAgICB7Ci0rICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsJ ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEZpbGUgXCIlc1wi IG1hdGNoZXMgIgotKwkJCQkJICAiZGlyZWN0b3J5IFwiJXNcIi5cbiIpLAotKwkJCSAgICBmaWxl bmFtZSwgZGlyKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotIAotICAgcmV0dXJuIDA7Ci0g fQotQEAgLTI0MCwxMSArMjkzLDIwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjICgKLSAgICBkaXJlY3RvcnkuICAqLwotIAotIGludAotLWZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK2ZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpkZWJ1Z19mbXQsIC4uLikKLSB7Ci0gICBj aGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKLSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwot IAotKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsgICAgewotKyAgICAgIHZhX2xpc3QgZGVidWdf YXJnczsKLSsKLSsgICAgICB2YV9zdGFydCAoZGVidWdfYXJncywgZGVidWdfZm10KTsKLSsgICAg ICB2ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBkZWJ1Z19mbXQsIGRlYnVnX2FyZ3Mp OwotKyAgICAgIHZhX2VuZCAoZGVidWdfYXJncyk7Ci0rICAgIH0KLSsKLSAgIGJhY2tfdG8gPSBt YWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmZpbGVuYW1lX3JlYWwpOwotIAot ICAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFtZSwg JmZpbGVuYW1lX3JlYWwpKQotQEAgLTI4MSw3ICszNDMsMTAgQEAgc291cmNlX2dkYl9zY3JpcHRf Zm9yX29iamZpbGUgKHN0cnVjdCBvYgotICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq cHNwYWNlX2luZm87Ci0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOwotIAotLSAg aXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUg PSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwgXygiYXV0by1sb2FkOiBMb2FkaW5n IGNhbm5lZCAiCi0rCQkJCQkJInNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIgotKwkJCQkJ CSJcIiVzXCIgZm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICBmaWxlbmFtZSwgb2Jq ZmlsZS0+bmFtZSk7Ci0gCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUg dG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4g ICovCi1AQCAtOTc1LDQgKzEwNDAsMTMgQEAgU2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9h ZCBzYWZlLXBhdAotIGFjY2VzcyB0aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwKLSAJ CSAmY21kbGlzdCk7Ci0gICBzZXRfY21kX2NvbXBsZXRlciAoY21kLCBmaWxlbmFtZV9jb21wbGV0 ZXIpOwotKwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19t YWludGVuYW5jZSwKLSsJCQkgICAmZGVidWdfYXV0b19sb2FkLCBfKCJcCi0rU2V0IGF1dG8tbG9h ZCB2ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4iKSwgXygiXAotK1Nob3cgYXV0by1sb2FkIHZlcmlm aWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCi0rV2hlbiBub24temVybywgZGVidWdnaW5nIG91 dHB1dCBmb3IgZmlsZXMgb2YgJ3NldCBhdXRvLWxvYWQgLi4uJ1xuXAotK2lzIGRpc3BsYXllZC4i KSwKLSsJCQkgICAgTlVMTCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQsCi0rCQkJICAgICZzZXRkZWJ1 Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsKLSB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvYXV0by1sb2FkLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo1MDowNC44 MDE2MjYyMzUgKzAyMDAKLUBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqKmF1dG9fbG8KLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRv X2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7Ci0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOwotIAotLWV4dGVybiBp bnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotK2V4dGVy biBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJ CSAgIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwgLi4uKTsKLSAKLSAjZW5kaWYgLyogQVVUT19MT0FE X0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFk LWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYy NjIzNSArMDIwMAotQEAgLTg2OSw3ICs4NjksOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9w ZGlyXzEgKHN0cnVjdCBvCi0gICBnZGJfYXNzZXJ0IChjcCAhPSBOVUxMKTsKLSAgIHN0cmNweSAo Y3AgKyAxLCBMSUJUSFJFQURfREJfU08pOwotIAotLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9z YWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygiYXV0 by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJCSAgICAgICAibGlicmFyeSBcIiVz XCIgZnJvbSAkcGRpci5cbiIpLAotKwkJCSAgICAgICBwYXRoKSkKLSAgICAgcmVzdWx0ID0gMDsK LSAgIGVsc2UKLSAgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLUBAIC05 MzksNyArOTQxLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgot ICAgcGF0aFtkaXJfbGVuXSA9ICcvJzsKLSAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBM SUJUSFJFQURfREJfU08pOwotIAotLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRo KSkKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBM b2FkaW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJCSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSBl eHBsaWNpdCAiCi0rCQkJCSAgICAgICAiZGlyZWN0b3J5LlxuIiksCi0rCQkJICAgICAgIHBhdGgp KQotICAgICByZXN1bHQgPSAwOwotICAgZWxzZQotICAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2Ri X2xvYWQgKHBhdGgpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQt MTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv bWFpbi5jCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCi1AQCAtMTAyNyw3ICsx MDI3LDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgYXV0b19sb2FkX2xv Y2FsX2dkYmluaXRfcGF0aG5hbWUgPSBnZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwotIAot ICAgICAgIGlmICghaW5oaWJpdF9nZGJpbml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0Ci0t CSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCkpCi0rCSAgJiYgZmls ZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCwKLSsJCQkJICAgICBfKCJhdXRvLWxv YWQ6IExvYWRpbmcgLmdkYmluaXQgIgotKwkJCQkgICAgICAgImZpbGUgXCIlc1wiLlxuIiksCi0r CQkJCSAgICAgbG9jYWxfZ2RiaW5pdCkpCi0gCXsKLSAJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dF9sb2FkZWQgPSAxOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIu dGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NTA6MDQu ODA5NjI2MjE1ICswMjAwCi1AQCAtMjA4ODcsNiArMjA4ODcsNyBAQCBUaGVzZSBhcmUgQHZhbHVl e0dEQk59IGNvbnRyb2wgY29tbWFuZHMKLSAqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAg ICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Ci0gKiBv YmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBh dXRvLWxvYWQgZ2RiLXNjcmlwdH0KLSAqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAgICAg ICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9Ci0rKiBBdXRvLWxv YWRpbmcgdmVyYm9zZSBtb2RlOjogICAgICAgICAgQHNhbXB7c2V0L3Nob3cgZGVidWcgYXV0by1s b2FkfQotIEB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgotIEBlbmQgbWVudQotIAotQEAgLTIx MDg1LDYgKzIxMDg2LDQ1IEBAIGVudHJpZXMgYWdhaW4uICBAdmFsdWV7R0RCTn0gYWxyZWFkeSBj YW4KLSBvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEgY2Fub25pY2FsIGZv cm0gb2YgZGlyZWN0b3JpZXMgaXMKLSByZWNvbW1lbmRlZCB0byBiZSBlbnRlcmVkLgotIAotK0Bu b2RlIEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKLStAc3Vic2VjdGlvbiBEaXNwbGF5aW5nIGZp bGVzIHRyaWVkIGZvciBhdXRvLWxvYWQKLStAY2luZGV4IGF1dG8tbG9hZGluZyB2ZXJib3NlIG1v ZGUKLSsKLStGb3IgYmV0dGVyIHZpc2liaWxpdHkgb2YgYWxsIHRoZSBmaWxlIGxvY2F0aW9ucyB3 aGVyZSB5b3UgY2FuIHBsYWNlIHNjcmlwdHMgdG8KLStiZSBhdXRvLWxvYWRlZCB3aXRoIGluZmVy aW9yIC0tLSBvciB0byBwcm90ZWN0IHlvdXJzZWxmIGFnYWluc3QgYWNjaWRlbnRhbAotK2V4ZWN1 dGlvbiBvZiB1bnRydXN0ZWQgc2NyaXB0cyAtLS0gQHZhbHVle0dEQk59IHByb3ZpZGVzIGEgZmVh dHVyZSBmb3IgcHJpbnRpbmcKLSthbGwgdGhlIGZpbGVzIGF0dGVtcHRlZCB0byBiZSBsb2FkZWQu ICBCb3RoIGV4aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgZmlsZXMgbWF5Ci0rYmUgcHJpbnRlZC4K LSsKLStGb3IgZXhhbXBsZSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlz IHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0rKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRo fSkgYXBwbGllcyBhbHNvIHRvIGNhbm9uaWNhbGl6ZWQgZmlsZW5hbWVzIHdoaWNoCi0rbWF5IG5v dCBiZSB0b28gb2J2aW91cyB3aGlsZSBzZXR0aW5nIGl0IHVwLgotKwotK0BzbWFsbGV4YW1wbGUK LSsoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIHVlcwotKyhnZGIpIGZpbGUgfi9zcmMvdC90cnVl Ci0rYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0 ICIvdG1wL3RydWUtZ2RiLmdkYiIKLSsgICAgICAgICAgIGZvciBvYmpmaWxlICIvdG1wL3RydWUi LgotK2F1dG8tbG9hZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2YgIi91c3I6L29wdCIuCi0rYXV0 by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgIi91c3IiLgotK2F1dG8tbG9hZDogVXNpbmcgZGlyZWN0 b3J5ICIvb3B0Ii4KLSt3YXJuaW5nOiBGaWxlICIvdG1wL3RydWUtZ2RiLmdkYiIgYXV0by1sb2Fk aW5nIGhhcyBiZWVuIGRlY2xpbmVkCi0rICAgICAgICAgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUt cGF0aCcgc2V0IHRvICIvdXNyOi9vcHQiLgotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQHRhYmxl IEBjb2RlCi0rQGFuY2hvcntzZXQgZGVidWcgYXV0by1sb2FkfQotK0BraW5kZXggc2V0IGRlYnVn IGF1dG8tbG9hZAotK0BpdGVtIHNldCBkZWJ1ZyBhdXRvLWxvYWQgW29ufG9mZl0KLStTZXQgd2hl dGhlciB0byBwcmludCB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRlZC4K LSsKLStAYW5jaG9ye3Nob3cgZGVidWcgYXV0by1sb2FkfQotK0BraW5kZXggc2hvdyBkZWJ1ZyBh dXRvLWxvYWQKLStAaXRlbSBzaG93IGRlYnVnIGF1dG8tbG9hZAotK1Nob3cgd2hldGhlciBwcmlu dGluZyBvZiB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRlZCBpcyB0dXJu ZWQKLStvbiBvciBvZmYuCi0rQGVuZCB0YWJsZQotKwotIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdz Ci0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCi0gCi1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAx Mi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MTA2MjYyMTIg KzAyMDAKLUBAIC03NSw3ICs3NSwxMCBAQCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpm aWxlIChzdHJ1Ci0gICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvOwotIAotLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUg KGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFt ZSwKLSsJCQkJICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2NyaXB0IFwiJXNcIiAi Ci0rCQkJCSAgICAgICJieSBleHRlbnNpb24gZm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJ CSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7Ci0gCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQg dG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIK LSAgICAgIGNhbiBwcmludCBpdC4gICovCi1AQCAtMTUzLDcgKzE1NiwxMiBAQCBzb3VyY2Vfc2Vj dGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAo c3RyZWFtKTsKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotIAotLQkgIGlm ICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoKSkKLSsJICBpZiAoIWZpbGVfaXNf YXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCwKLSsJCQkJICAgICAgIF8oImF1dG8tbG9hZDogTG9h ZGluZyBQeXRob24gc2NyaXB0ICIKLSsJCQkJCSAiXCIlc1wiIGZyb20gc2VjdGlvbiBcIiVzXCIg b2YgIgotKwkJCQkJICJvYmpmaWxlIFwiJXNcIi5cbiIpLAotKwkJCQkgICAgICAgZnVsbF9wYXRo LCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwKLSsJCQkJICAgICAgIG9iamZpbGUtPm5hbWUpKQot IAkgICAgb3BlbmVkID0gMDsKLSAJfQotICAgICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItYXV0 b2xvYWQtMTJvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEyb2YxOC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTJiZGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWF1dG9sb2FkLTEyb2YxOC5wYXRjaApAQCAtMCwwICsxLDM1MiBAQAorW3BhdGNoIzQgNi84XSBz ZXQgZGVidWcgYXV0by1sb2FkCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMi0wNC9tc2cwMDA4OS5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTA0L21zZzAwMTE1Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcg MTU6NTQ6MjgJMS4xNDExNAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTY6 MjAJMS4xNDExNQorIyMgLTEsNSArMSwyNyBAQAorIDIwMTItMDQtMTcgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKysJTmV3IG9wdGlvbiAic2V0IGRlYnVn IGF1dG8tbG9hZCIuCisrCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQgZGVidWcgYXV0by1sb2Fk IiBhbmQgInNob3cgZGVidWcgYXV0by1sb2FkIi4KKysJKiBhdXRvLWxvYWQuYyAoZGVidWdfYXV0 b19sb2FkLCBzaG93X2RlYnVnX2F1dG9fbG9hZDogTmV3LgorKwkoYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWNfdXBkYXRlKQorKwkoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMp OiBDYWxsIGZwcmludGZfdW5maWx0ZXJlZAorKwlpZiBERUJVR19BVVRPX0xPQUQuCisrCShmaWxl X2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3IHBhcmFtZXRlcnMgZGVidWdfZm10IGFuZCAuLi4uCisr CUNhbGwgZnByaW50Zl91bmZpbHRlcmVkIGlmIERFQlVHX0FVVE9fTE9BRC4KKysJKHNvdXJjZV9n ZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogRXh0ZW5kIHRoZSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZl CisrCWNhbGxlciBieSBleHBsYW5hdG9yeSBzdHJpbmcuCisrCShfaW5pdGlhbGl6ZV9hdXRvX2xv YWQpOiBSZWdpc3RlciAic2V0IGRlYnVnIGF1dG8tbG9hZCIuCisrCSogYXV0by1sb2FkLmggKGZp bGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1ldGVycyBkZWJ1Z19mbXQKKysJYW5kIC4u Li4KKysJKiBsaW51eC10aHJlYWQtZGIuYyAodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8x KQorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogRXh0ZW5kIHRoZSBmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIGNhbGxlcgorKwlieSBleHBsYW5hdG9yeSBzdHJpbmcuCisrCSogbWFpbi5j IChjYXB0dXJlZF9tYWluKTogTGlrZXdpc2UuCisrCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChn ZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKQorKwkoc291cmNlX3NlY3Rpb25fc2Ny aXB0cyk6IExpa2V3aXNlLgorKworKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJTmV3IG9wdGlvbiAic2V0IGF1dG8tbG9hZCBzYWZl LXBhdGgiLgorIAkqIE5FV1M6IE5ldyBjb21tYW5kcyAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgi CisgCWFuZCAic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjUwOjE1LjAxODYwMDI4MiArMDIw MAorQEAgLTcyLDYgKzcyLDEwIEBAIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorICAgU2V0IGEg bGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZp bGVzLgorICAgVGhlIGRlbGltaXRlciAoJzonIGFib3ZlKSBtYXkgZGlmZmVyIGFjY29yZGluZyB0 byB0aGUgaG9zdCBwbGF0Zm9ybS4KKyAKKytzZXQgZGVidWcgYXV0by1sb2FkIG9ufG9mZgorK3No b3cgZGVidWcgYXV0by1sb2FkCisrICBDb250cm9sIGRpc3BsYXkgb2YgZGVidWdnaW5nIGluZm8g Zm9yIGF1dG8tbG9hZGluZyB0aGUgZmlsZXMgYWJvdmUuCisrCisgKiBOZXcgY29tbWFuZCBsaW5l IG9wdGlvbnMKKyAKKyAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNv bW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2 MjYyMzUgKzAyMDAKK0BAIC00Myw2ICs0MywyMCBAQAorIHN0YXRpYyB2b2lkIHNvdXJjZV9nZGJf c2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwK KyAJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKysvKiBWYWx1ZSBvZiB0aGUgJ3Nl dCBkZWJ1ZyBhdXRvLWxvYWQnIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworK3N0YXRpYyBp bnQgZGVidWdfYXV0b19sb2FkID0gMDsKKysKKysvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGRl YnVnX2F1dG9fbG9hZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9p ZAorK3Nob3dfZGVidWdfYXV0b19sb2FkIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LAorKwkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZh bHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkRlYnVnZ2luZyBvdXRwdXQg Zm9yIGZpbGVzICIKKysJCQkgICAgIm9mICdzZXQgYXV0by1sb2FkIC4uLicgaXMgJXMuXG4iKSwK KysJCSAgICB2YWx1ZSk7CisrfQorKworIC8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJs ZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBHREJfQVVUT19GSUxFX05BTUUKKyAgICBzY3JpcHRz OgorICAgIHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCitAQCAtMTEyLDYgKzEyNiwx MSBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisgICB1bnNpZ25lZCBs ZW47CisgICBpbnQgaXg7CisgCisrICBpZiAoZGVidWdfYXV0b19sb2FkKQorKyAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJXygiYXV0by1sb2FkOiBVcGRhdGluZyBkaXJl Y3RvcmllcyBvZiBcIiVzXCIuXG4iKSwKKysJCQlhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKysKKyAg IGZyZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisgCisgICBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2Fk X3NhZmVfcGF0aCk7CitAQCAtMTI2LDE0ICsxNDUsMzQgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWNfdXBkYXRlICh2b2lkKQorICAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAo ZXhwYW5kZWQpOworIAorICAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBs ZWFzdCB0aWxkZV9leHBhbmQtZWQuICAqLworLSAgICAgIHhmcmVlIChkaXIpOworICAgICAgIFZF Q19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRl ZCk7CisgCisrICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysJeworKwkgIGlmIChzdHJjbXAg KGV4cGFuZGVkLCBkaXIpID09IDApCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCisrCQkJCV8oImF1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5IFwiJXNcIi5cbiIpLAorKwkJ CQlleHBhbmRlZCk7CisrCSAgZWxzZQorKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLAorKwkJCQlfKCJhdXRvLWxvYWQ6IFJlc29sdmVkIGRpcmVjdG9yeSBcIiVzXCIgIgorKwkJ CQkgICJhcyBcIiVzXCIuXG4iKSwKKysJCQkJZGlyLCBleHBhbmRlZCk7CisrCX0KKysgICAgICB4 ZnJlZSAoZGlyKTsKKysKKyAgICAgICAvKiBJZiBnZGJfcmVhbHBhdGggcmV0dXJucyBhIGRpZmZl cmVudCBjb250ZW50LCBhcHBlbmQgaXQuICAqLworICAgICAgIGlmIChzdHJjbXAgKHJlYWxfcGF0 aCwgZXhwYW5kZWQpID09IDApCisgCXhmcmVlIChyZWFsX3BhdGgpOworICAgICAgIGVsc2UKKy0J VkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCByZWFsX3Bh dGgpOworKwl7CisrCSAgVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjLCByZWFsX3BhdGgpOworKworKwkgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisrCSAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJCV8oImF1dG8tbG9hZDogQW5kIGNh bm9uaWNhbGl6ZWQgYXMgXCIlc1wiLlxuIiksCisrCQkJCXJlYWxfcGF0aCk7CisrCX0KKyAgICAg fQorIH0KKyAKK0BAIC0yMTcsMTYgKzI1NiwzMCBAQCBmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRf c2FmZV9wYXRoX3ZlYyAoCisgICBpZiAoZGlyID09IE5VTEwpCisgICAgIHsKKyAgICAgICBpZiAo KmZpbGVuYW1lX3JlYWxwID09IE5VTEwpCistCSpmaWxlbmFtZV9yZWFscCA9IGdkYl9yZWFscGF0 aCAoZmlsZW5hbWUpOworKwl7CisrCSAgKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChm aWxlbmFtZSk7CisrCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCAmJiBzdHJjbXAgKCpmaWxlbmFtZV9y ZWFscCwgZmlsZW5hbWUpICE9IDApCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCisrCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2ZWQgIgorKwkJCQkgICJmaWxlIFwiJXNcIiBh cyBcIiVzXCIuXG4iKSwKKysJCQkJZmlsZW5hbWUsICpmaWxlbmFtZV9yZWFscCk7CisrCX0KKyAK Ky0gICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYywgaXgsIGRpcik7CistCSAgICsraXgpCistCWlmIChmaWxlbmFtZV9pc19pbl9k aXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKKy0JICBicmVhazsKKysgICAgICBpZiAoc3RyY21w ICgqZmlsZW5hbWVfcmVhbHAsIGZpbGVuYW1lKSAhPSAwKQorKwlmb3IgKGl4ID0gMDsgVkVDX2l0 ZXJhdGUgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7CisrCSAg ICAgKytpeCkKKysJICBpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRp cikpCisrCSAgICBicmVhazsKKyAgICAgfQorIAorICAgaWYgKGRpciAhPSBOVUxMKQorLSAgICBy ZXR1cm4gMTsKKysgICAgeworKyAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisrCWZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiYXV0by1sb2FkOiBGaWxlIFwiJXNcIiBtYXRjaGVz ICIKKysJCQkJCSAgImRpcmVjdG9yeSBcIiVzXCIuXG4iKSwKKysJCQkgICAgZmlsZW5hbWUsIGRp cik7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKyAKKyAgIHJldHVybiAwOworIH0KK0BAIC0y NDAsMTEgKzI5MywyMCBAQCBmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAo CisgICAgZGlyZWN0b3J5LiAgKi8KKyAKKyBpbnQKKy1maWxlX2lzX2F1dG9fbG9hZF9zYWZlIChj b25zdCBjaGFyICpmaWxlbmFtZSkKKytmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFy ICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZGVidWdfZm10LCAuLi4pCisgeworICAgY2hhciAqZmls ZW5hbWVfcmVhbCA9IE5VTEw7CisgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAKKysgIGlm IChkZWJ1Z19hdXRvX2xvYWQpCisrICAgIHsKKysgICAgICB2YV9saXN0IGRlYnVnX2FyZ3M7Cisr CisrICAgICAgdmFfc3RhcnQgKGRlYnVnX2FyZ3MsIGRlYnVnX2ZtdCk7CisrICAgICAgdmZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgZGVidWdfZm10LCBkZWJ1Z19hcmdzKTsKKysgICAg ICB2YV9lbmQgKGRlYnVnX2FyZ3MpOworKyAgICB9CisrCisgICBiYWNrX3RvID0gbWFrZV9jbGVh bnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZmaWxlbmFtZV9yZWFsKTsKKyAKKyAgIGlmIChm aWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFt ZV9yZWFsKSkKK0BAIC0yODEsNyArMzQzLDEwIEBAIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2IKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9p bmZvOworICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKKyAKKy0gIGlzX3NhZmUg PSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7CisrICBpc19zYWZlID0gZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUsIF8oImF1dG8tbG9hZDogTG9hZGluZyBjYW5uZWQg IgorKwkJCQkJCSJzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIKKysJCQkJCQkiXCIlc1wi IGZvciBvYmpmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkgICAgZmlsZW5hbWUsIG9iamZpbGUtPm5h bWUpOworIAorICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAi aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQgaXQuICAqLworQEAg LTk3NSw0ICsxMDQwLDEzIEBAIFNlZSB0aGUgY29tbWFuZHMgJ3NldCBhdXRvLWxvYWQgc2FmZS1w YXQKKyBhY2Nlc3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCisgCQkgJmNtZGxp c3QpOworICAgc2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxldGVyKTsKKysK KysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFu Y2UsCisrCQkJICAgJmRlYnVnX2F1dG9fbG9hZCwgXygiXAorK1NldCBhdXRvLWxvYWQgdmVyaWZp Y2F0aW9ucyBkZWJ1Z2dpbmcuIiksIF8oIlwKKytTaG93IGF1dG8tbG9hZCB2ZXJpZmljYXRpb25z IGRlYnVnZ2luZy4iKSwgXygiXAorK1doZW4gbm9uLXplcm8sIGRlYnVnZ2luZyBvdXRwdXQgZm9y IGZpbGVzIG9mICdzZXQgYXV0by1sb2FkIC4uLidcblwKKytpcyBkaXNwbGF5ZWQuIiksCisrCQkJ ICAgIE5VTEwsIHNob3dfZGVidWdfYXV0b19sb2FkLAorKwkJCSAgICAmc2V0ZGVidWdsaXN0LCAm c2hvd2RlYnVnbGlzdCk7CisgfQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8t bG9hZC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRv LWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2MjM1 ICswMjAwCitAQCAtNTUsNiArNTUsNyBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KiphdXRvX2xvCisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3No b3dfY21kbGlzdF9nZXQgKHZvaWQpOworIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq KmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKy1leHRlcm4gaW50IGZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKytleHRlcm4gaW50IGZp bGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorKwkJCQkgICBjb25z dCBjaGFyICpkZWJ1Z19mbXQsIC4uLik7CisgCisgI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIw MTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAy MDAKK0BAIC04NjksNyArODY5LDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xIChz dHJ1Y3QgbworICAgZ2RiX2Fzc2VydCAoY3AgIT0gTlVMTCk7CisgICBzdHJjcHkgKGNwICsgMSwg TElCVEhSRUFEX0RCX1NPKTsKKyAKKy0gIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0 aCkpCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgsIF8oImF1dG8tbG9hZDog TG9hZGluZyBsaWJ0aHJlYWQtZGIgIgorKwkJCQkgICAgICAgImxpYnJhcnkgXCIlc1wiIGZyb20g JHBkaXIuXG4iKSwKKysJCQkgICAgICAgcGF0aCkpCisgICAgIHJlc3VsdCA9IDA7CisgICBlbHNl CisgICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CitAQCAtOTM5LDcgKzk0 MSwxMCBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAgIHBhdGhb ZGlyX2xlbl0gPSAnLyc7CisgICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsgMSwgTElCVEhSRUFE X0RCX1NPKTsKKyAKKy0gIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCisrICBp ZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgsIF8oImF1dG8tbG9hZDogTG9hZGluZyBs aWJ0aHJlYWQtZGIgIgorKwkJCQkgICAgICAgImxpYnJhcnkgXCIlc1wiIGZyb20gZXhwbGljaXQg IgorKwkJCQkgICAgICAgImRpcmVjdG9yeS5cbiIpLAorKwkJCSAgICAgICBwYXRoKSkKKyAgICAg cmVzdWx0ID0gMDsKKyAgIGVsc2UKKyAgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChw YXRoKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ5 OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwky MDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAorQEAgLTEwMjcsNyArMTAyNywxMCBA QCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJp bml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKKyAKKyAgICAgICBp ZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdAorLQkgICYmIGZp bGVfaXNfYXV0b19sb2FkX3NhZmUgKGxvY2FsX2dkYmluaXQpKQorKwkgICYmIGZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgKGxvY2FsX2dkYmluaXQsCisrCQkJCSAgICAgXygiYXV0by1sb2FkOiBMb2Fk aW5nIC5nZGJpbml0ICIKKysJCQkJICAgICAgICJmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkgICAg IGxvY2FsX2dkYmluaXQpKQorIAl7CisgCSAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVk ID0gMTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8K Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwOTYyNjIx NSArMDIwMAorQEAgLTIwODg3LDYgKzIwODg3LDcgQEAgVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBj b250cm9sIGNvbW1hbmRzCisgKiBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlOjogICAgICAgICAgICAg QHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQorICogb2JqZmlsZS1n ZGIuZ2RiIGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2Fk IGdkYi1zY3JpcHR9CisgKiBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoOjogICAgICAgICAgICAgQHNh bXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgc2FmZS1wYXRofQorKyogQXV0by1sb2FkaW5nIHZl cmJvc2UgbW9kZTo6ICAgICAgICAgIEBzYW1we3NldC9zaG93IGRlYnVnIGF1dG8tbG9hZH0KKyBA eHJlZntQeXRob24gQXV0by1sb2FkaW5nfS4KKyBAZW5kIG1lbnUKKyAKK0BAIC0yMTA4NSw2ICsy MTA4Niw0NSBAQCBlbnRyaWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVhZHkgY2FuCisgb3du IGJlZm9yZSBzdGFydGluZyB0aGUgY29tcGFyaXNvbiBzbyBhIGNhbm9uaWNhbCBmb3JtIG9mIGRp cmVjdG9yaWVzIGlzCisgcmVjb21tZW5kZWQgdG8gYmUgZW50ZXJlZC4KKyAKKytAbm9kZSBBdXRv LWxvYWRpbmcgdmVyYm9zZSBtb2RlCisrQHN1YnNlY3Rpb24gRGlzcGxheWluZyBmaWxlcyB0cmll ZCBmb3IgYXV0by1sb2FkCisrQGNpbmRleCBhdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlCisrCisr Rm9yIGJldHRlciB2aXNpYmlsaXR5IG9mIGFsbCB0aGUgZmlsZSBsb2NhdGlvbnMgd2hlcmUgeW91 IGNhbiBwbGFjZSBzY3JpcHRzIHRvCisrYmUgYXV0by1sb2FkZWQgd2l0aCBpbmZlcmlvciAtLS0g b3IgdG8gcHJvdGVjdCB5b3Vyc2VsZiBhZ2FpbnN0IGFjY2lkZW50YWwKKytleGVjdXRpb24gb2Yg dW50cnVzdGVkIHNjcmlwdHMgLS0tIEB2YWx1ZXtHREJOfSBwcm92aWRlcyBhIGZlYXR1cmUgZm9y IHByaW50aW5nCisrYWxsIHRoZSBmaWxlcyBhdHRlbXB0ZWQgdG8gYmUgbG9hZGVkLiAgQm90aCBl eGlzdGluZyBhbmQgbm9uLWV4aXN0aW5nIGZpbGVzIG1heQorK2JlIHByaW50ZWQuCisrCisrRm9y IGV4YW1wbGUgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRv IGF1dG8tbG9hZCBmaWxlcworKyhAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0pIGFwcGxp ZXMgYWxzbyB0byBjYW5vbmljYWxpemVkIGZpbGVuYW1lcyB3aGljaAorK21heSBub3QgYmUgdG9v IG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4KKysKKytAc21hbGxleGFtcGxlCisrKGdkYikg c2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKKysoZ2RiKSBmaWxlIH4vc3JjL3QvdHJ1ZQorK2F1dG8t bG9hZDogTG9hZGluZyBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdCAiL3RtcC90 cnVlLWdkYi5nZGIiCisrICAgICAgICAgICBmb3Igb2JqZmlsZSAiL3RtcC90cnVlIi4KKythdXRv LWxvYWQ6IFVwZGF0aW5nIGRpcmVjdG9yaWVzIG9mICIvdXNyOi9vcHQiLgorK2F1dG8tbG9hZDog VXNpbmcgZGlyZWN0b3J5ICIvdXNyIi4KKythdXRvLWxvYWQ6IFVzaW5nIGRpcmVjdG9yeSAiL29w dCIuCisrd2FybmluZzogRmlsZSAiL3RtcC90cnVlLWdkYi5nZGIiIGF1dG8tbG9hZGluZyBoYXMg YmVlbiBkZWNsaW5lZAorKyAgICAgICAgIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNl dCB0byAiL3Vzcjovb3B0Ii4KKytAZW5kIHNtYWxsZXhhbXBsZQorKworK0B0YWJsZSBAY29kZQor K0BhbmNob3J7c2V0IGRlYnVnIGF1dG8tbG9hZH0KKytAa2luZGV4IHNldCBkZWJ1ZyBhdXRvLWxv YWQKKytAaXRlbSBzZXQgZGVidWcgYXV0by1sb2FkIFtvbnxvZmZdCisrU2V0IHdoZXRoZXIgdG8g cHJpbnQgdGhlIGZpbGVuYW1lcyBhdHRlbXB0ZWQgdG8gYmUgYXV0by1sb2FkZWQuCisrCisrQGFu Y2hvcntzaG93IGRlYnVnIGF1dG8tbG9hZH0KKytAa2luZGV4IHNob3cgZGVidWcgYXV0by1sb2Fk CisrQGl0ZW0gc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKKytTaG93IHdoZXRoZXIgcHJpbnRpbmcgb2Yg dGhlIGZpbGVuYW1lcyBhdHRlbXB0ZWQgdG8gYmUgYXV0by1sb2FkZWQgaXMgdHVybmVkCisrb24g b3Igb2ZmLgorK0BlbmQgdGFibGUKKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0 aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTgg MDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0 aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NTA6MDQuODEwNjI2MjEyICswMjAwCitA QCAtNzUsNyArNzUsMTAgQEAgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3Ry dQorICAgaW50IGlzX3NhZmU7CisgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbzsKKyAKKy0gIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFt ZSk7CisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUsCisrCQkJ CSAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgUHl0aG9uIHNjcmlwdCBcIiVzXCIgIgorKwkJCQkg ICAgICAiYnkgZXh0ZW5zaW9uIGZvciBvYmpmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkgICAgZmls ZW5hbWUsIG9iamZpbGUtPm5hbWUpOworIAorICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBo YXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisgICAgICBj YW4gcHJpbnQgaXQuICAqLworQEAgLTE1Myw3ICsxNTYsMTIgQEAgc291cmNlX3NlY3Rpb25fc2Ny aXB0cyAoc3RydWN0IG9iamZpbGUgKgorIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7 CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKyAKKy0JICBpZiAoIWZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCkpCisrCSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9h ZF9zYWZlIChmdWxsX3BhdGgsCisrCQkJCSAgICAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgUHl0 aG9uIHNjcmlwdCAiCisrCQkJCQkgIlwiJXNcIiBmcm9tIHNlY3Rpb24gXCIlc1wiIG9mICIKKysJ CQkJCSAib2JqZmlsZSBcIiVzXCIuXG4iKSwKKysJCQkJICAgICAgIGZ1bGxfcGF0aCwgR0RCUFlf QVVUT19TRUNUSU9OX05BTUUsCisrCQkJCSAgICAgICBvYmpmaWxlLT5uYW1lKSkKKyAJICAgIG9w ZW5lZCA9IDA7CisgCX0KKyAgICAgICBlbHNlCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEz b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xM29mMTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMjZlYTE1MwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9h ZC0xM29mMTgucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMi0wNC9tc2cwMDEzMC5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VM b2cJMjAxMi8wNC8xNyAxNTo1NjoyMQkxLjEyOTcKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJ MjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgKKyMjIC0xLDMgKzEsNyBAQAorKzIwMTItMDQtMTgg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJKiBnZGIu dGV4aW5mbyAoQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZSk6IEZpeCBzbWFsbGV4YW1wbGUgdHlw by4KKysKKyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+CisgCisgCU5ldyBvcHRpb24gInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgorLS0tIHNyYy9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS45NDQKKysrKyBzcmMvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzE4IDA3OjAzOjU4CTEuOTQ1CitAQCAtMjExOTIsNyAr MjExOTIsNyBAQAorIG1heSBub3QgYmUgdG9vIG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4K KyAKKyBAc21hbGxleGFtcGxlCistKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKKysoZ2Ri KSBzZXQgZGVidWcgYXV0by1sb2FkIG9uCisgKGdkYikgZmlsZSB+L3NyYy90L3RydWUKKyBhdXRv LWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIi90bXAv dHJ1ZS1nZGIuZ2RiIgorICAgICAgICAgICAgZm9yIG9iamZpbGUgIi90bXAvdHJ1ZSIuCgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE0b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNG9mMTgu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFjZmQwZQotLS0gL2Rl di9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xNG9mMTgucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE3OC5odG1sCisK KyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgKKyMj IyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMiAxNTo0OToyMQkxLjEyOTkKKyMjIC0x LDMgKzEsOCBAQAorKzIwMTItMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6 IFJlcGxhY2UgQGl0ZW1pemUgQGJ1bGxldAorKwlieSBAdGFibGUgQGFzaXMuICBGaXggZm9ybWF0 dGluZyBvZiBvbmUgaXRlbS4KKysKKyAyMDEyLTA0LTE4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisgCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyB2 ZXJib3NlIG1vZGUpOiBGaXggc21hbGxleGFtcGxlIHR5cG8uCistLS0gc3JjL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMi8wNC8xOCAwNzowMzo1OAkxLjk0NQorKysrIHNyYy9nZGIvZG9jL2dkYi50 ZXhpbmZvCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS45NDYKK0BAIC0yMTEzNiw4ICsyMTEzNiw4IEBA CisgVG8gZm9yY2UgQHZhbHVle0dEQk59IHRvIGxvYWQgdGhlIGZpbGVzIGl0IGRlY2xpbmVkIHRv IGxvYWQgaW4gdGhlIHByZXZpb3VzCisgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBvbmUgb2YgdGhl IGZvbGxvd2luZyB3YXlzOgorIAorLUBpdGVtaXplIEBidWxsZXQKKy1AaXRlbSB+Ly5nZGJpbml0 OiBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCB+L3NyYy9nZGIKKytAdGFibGUgQGFzaXMKKytAaXRl bSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7YWRkLWF1dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMv Z2RifQorIFNwZWNpZnkgdGhpcyB0cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRp dGlvbmFsIGNvbXBvbmVudCBvZiB0aGUgbGlzdC4KKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28g YW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0 by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1w bGUpLgorQEAgLTIxMTU1LDIwICsyMTE1NSwyMCBAQAorIER1cmluZyBjb21waWxhdGlvbiBvZiBA dmFsdWV7R0RCTn0geW91IG1heSBkaXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2FmZXR5LgorIFRo aXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0aCB0aGlzIEB2 YWx1ZXtHREJOfSBjb21lIGZyb20KKyB0cnVzdGVkIHNvdXJjZXMuCistQGVuZCBpdGVtaXplCisr QGVuZCB0YWJsZQorIAorIE9uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNpdGx5 IGZvcmJpZCBhdXRvbWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAorIGFsc28gc3VwcHJlc3NlcyBh bnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgorIAorLUBpdGVtaXplIEBidWxsZXQKKytAdGFibGUg QGFzaXMKKyBAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19 CisgWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2lu Z2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIAorLUBpdGVtIEBzYW1we34vLmdkYmluaXR9OiBA c2FtcHtzZXQgYXV0by1sb2FkIG5vfQorK0BpdGVtIEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtz ZXQgYXV0by1sb2FkIG5vfQorIERpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUg dXNlcgorIChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBp bXByb2JhYmxlLCB5b3UgY291bGQgYWxzbworIHVzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQg KEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCistQGVuZCBpdGVtaXplCisrQGVu ZCB0YWJsZQorIAorIFRoaXMgc2V0dGluZyBhcHBsaWVzIHRvIHRoZSBmaWxlIG5hbWVzIGFzIGVu dGVyZWQgYnkgdXNlci4gIElmIG5vIGVudHJ5IG1hdGNoZXMKKyBAdmFsdWV7R0RCTn0gdHJpZXMg YXMgYSBsYXN0IHJlc29ydCB0byBhbHNvIHJlc29sdmUgYWxsIHRoZSBmaWxlIG5hbWVzIGludG8K CmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTVvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE1 b2YxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTU2ODQ2Ci0t LSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTE1b2YxOC5wYXRjaApAQCAtMCwwICsxLDM4 IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTgzLmh0 bWwKKworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuMTI5 OQorIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuMTMwMAor IyMgLTEsMyArMSw4IEBACisrMjAxMi0wNC0yMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorKworKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBw YXRoKTogUmVtb3ZlIHRyYWlsaW5nIFtAZG90c3t9XS4KKysJVGhyZWUgdGltZXMuCisrCisgMjAx Mi0wNC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAor IAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZSBAaXRlbWl6 ZSBAYnVsbGV0CistLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMiAxNTo0OToy MQkxLjk0NgorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMgMTc6MjA6NTYJ MS45NDcKK0BAIC0yMTE0MiwxMSArMjExNDIsMTEgQEAKKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFs c28gYW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cg YXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4 YW1wbGUpLgorIAorLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IC91c3I6L2Jpbjp+L3NyYy9nZGIiIFtAZG90c3t9XX0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIn0KKyBTcGVjaWZ5IHRo aXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZvciBhIHNpbmds ZQorIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIAorLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBh dXRvLWxvYWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGgifQorIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBmb3Ig YSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCisgVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmls ZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29tZQor IGZyb20gdHJ1c3RlZCBzb3VyY2VzLgorQEAgLTIxMTYxLDcgKzIxMTYxLDcgQEAKKyBhbHNvIHN1 cHByZXNzZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKKyAKKyBAdGFibGUgQGFzaXMKKy1A aXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrQGl0ZW0g QGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyJ9CisgWW91IGNhbiB1c2UgQHZhbHVle0dE Qk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9u LgorIAorIEBpdGVtIEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQoK ZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xNm9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTZv ZjE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTg4ZTYKLS0t IC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTZvZjE4LnBhdGNoCkBAIC0wLDAgKzEsMzkg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxODQuaHRt bAorCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS4xMzAw CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjY6MDAJMS4xMzAxCisj IyAtMyw2ICszLDkgQEAKKyAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6 IFJlbW92ZSB0cmFpbGluZyBbQGRvdHN7fV0uCisgCVRocmVlIHRpbWVzLgorIAorKwkqIGdkYi50 ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogQWRkIHRyYWlsaW5nIEBkb3Rze30uCisr CVRocmVlIHRpbWVzLgorKworIDIwMTItMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUg cGF0aCk6IFJlcGxhY2UgQGl0ZW1pemUgQGJ1bGxldAorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS45NDcKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEyLzA0LzIzIDE3OjI2OjAxCTEuOTQ4CitAQCAtMjExNDIsMTEgKzIxMTQyLDExIEBACisg WW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5 ZWQgYnkKKyBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1w ey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIn0KKytAaXRlbSBAa2Jk e2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIiBA ZG90c3t9fQorIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2Ug YnV0IGp1c3QgZm9yIGEgc2luZ2xlCisgQHZhbHVle0dEQk59IHNlc3Npb24uCisgCistQGl0ZW0g QGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgifQorK0BpdGVtIEBrYmR7Z2Ri IC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBAZG90c3t9fQorIERpc2FibGUgYXV0by1s b2FkaW5nIHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCisgVGhpcyBh c3N1bWVzIGFsbCB0aGUgZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBz ZXNzaW9uIHdpbGwgY29tZQorIGZyb20gdHJ1c3RlZCBzb3VyY2VzLgorQEAgLTIxMTYxLDcgKzIx MTYxLDcgQEAKKyBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKKyAK KyBAdGFibGUgQGFzaXMKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIn0K KytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBAZG90c3t9fQorIFlvdSBj YW4gdXNlIEB2YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFs dWV7R0RCTn0gc2Vzc2lvbi4KKyAKKyBAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0 IGF1dG8tbG9hZCBub30KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTdvZjE4LnBhdGNoIGIv Z2RiLWF1dG9sb2FkLTE3b2YxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi42NTRhYWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTE3b2YxOC5wYXRj aApAQCAtMCwwICsxLDE1OCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTItMDQvbXNnMDA3NTYuaHRtbAorU3ViamVjdDogUmU6IFtwYXRjaF0gYXV0by1sb2FkIHNh ZmUtcGF0aCByZXNldCBiYWNrIGJ5IHNldCAiIgorIC0gUGF0Y2hlZCBvdXQgIih3aXRob3V0IHRo ZSBxdW90ZXMpIi4KKworT24gU3VuLCAyMiBBcHIgMjAxMiAyMjoxNjozMiArMDIwMCwgRWxpIFph cmV0c2tpaSB3cm90ZToKKz4gPiArQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggW0B2YXJ7 ZGlyZWN0b3JpZXN9XQorPiAKKz4gWW91IG5lZWQgQHJ7fSBhcm91bmQgWyBhbmQgXS4KKz4gCis+ ID4gK1NldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBAY29kZXsiLyJ9ICh3aXRob3V0IHRoZSBxdW90 ZXMpIGRpc2FibGVzIHRoaXMgc2VjdXJpdHkKKz4gICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5eXl5eXl5eXl4KKz4gV2h5IG5vdCBAZmlsZXsvfT8gIFRoZSBxdW90ZXMgYXJlIG5vdCBuZWVk ZWQgaW4gYW55IGNhc2UuCisKK2RvbmUuCisKKworSW4gZmFjdCB0aGlzIHBhdGNoIGlzIHVucmVs YXRlZCB0byB0aGUgRG91ZydzIHN1Z2dlc3Rpb24sIHJlcG9zdGluZyBpdCBvbmx5Cit3aXRoIHRo ZSBkb2MgdXBkYXRlLgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTItMDQtMjMgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogYXV0by1sb2Fk LmMgKHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoKTogUmVzZXQgQVVUT19MT0FEX1NBRkVfUEFUSAor CWJhY2sgdG8gREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIIGlmIGl0IGlzIGJlaW5nIHNldCB0 byAiIi4KKwkoc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoKTogQ2hlY2sgYW55LWRpcmVjdG9yeSBi eSBjb21wYXJpc29uIHdpdGggIi8iLgorCShhZGRfYXV0b19sb2FkX3NhZmVfcGF0aCk6IENoYW5n ZSB0aGUgZXJyb3IgbWVzc2FnZS4KKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogQ2hhbmdlIHRo ZSAic2FmZS1wYXRoIiBoZWxwIHRleHQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUKKwkqIGNv bmZpZ3VyZS5hYyAoLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBTZXQKKwlXSVRIX0FV VE9fTE9BRF9TQUZFX1BBVEggdG8gLy4KKworZ2RiL2RvYy8KKzIwMTItMDQtMjMgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2RiLnRleGluZm8gKEF1 dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBNYWtlICdkaXJlY3RvcmllcycKKwlmb3IgJ3NldCBhdXRv LWxvYWQgc2FmZS1wYXRoJyBvcHRpb25hbC4gIE1lbnRpb24gaWYgaXQgaXMgb21pdHRlZC4KKwlD aGFuZ2UgZGlzYWJsaW5nIHNlY3VyaXR5IHByb3RlY3Rpb24gY29uZGl0aW9uIHRvICIvIiwgdHdp Y2UuCisKK2RpZmYgLS1naXQgYS9nZGIvYXV0by1sb2FkLmMgYi9nZGIvYXV0by1sb2FkLmMKK2lu ZGV4IDlkMTkxNzkuLjZjMTMwOWYgMTAwNjQ0CistLS0gYS9nZGIvYXV0by1sb2FkLmMKKysrKyBi L2dkYi9hdXRvLWxvYWQuYworQEAgLTE4MSw2ICsxODEsMTIgQEAgYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWNfdXBkYXRlICh2b2lkKQorIHN0YXRpYyB2b2lkCisgc2V0X2F1dG9fbG9hZF9zYWZlX3Bh dGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMp CisgeworKyAgaWYgKGF1dG9fbG9hZF9zYWZlX3BhdGhbMF0gPT0gJ1wwJykKKysgICAgeworKyAg ICAgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKysgICAgICBhdXRvX2xvYWRfc2FmZV9w YXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKKysgICAgfQorKwor ICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOworIH0KKyAKK0BAIC0xOTAsNyAr MTk2LDcgQEAgc3RhdGljIHZvaWQKKyBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGggKHN0cnVjdCB1 aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisgCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisgeworLSAgaWYgKCp2YWx1ZSA9PSAwKQorKyAgaWYg KHN0cmNtcCAodmFsdWUsICIvIikgPT0gMCkKKyAgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwg XygiQXV0by1sb2FkIGZpbGVzIGFyZSBzYWZlIHRvIGxvYWQgZnJvbSBhbnkgIgorIAkJCSAgICAg ICJkaXJlY3RvcnkuXG4iKSk7CisgICBlbHNlCitAQCAtMjA5LDggKzIxNSw5IEBAIGFkZF9hdXRv X2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgCisgICBpZiAoYXJn cyA9PSBOVUxMIHx8ICphcmdzID09IDApCisgICAgIGVycm9yIChfKCJcCistQWRkaW5nIGVtcHR5 IGRpcmVjdG9yeSBlbGVtZW50IGRpc2FibGVzIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3Vy aXR5LiAgXAorLVVzZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGluc3RlYWQgaWYgeW91IG1l YW4gdGhhdC4iKSk7CisrRGlyZWN0b3J5IGFyZ3VtZW50IHJlcXVpcmVkLlxuXAorK1VzZSAnc2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGggLycgZm9yIGRpc2FibGluZyB0aGUgYXV0by1sb2FkIHNhZmUt cGF0aCBzZWN1cml0eS5cCisrIikpOworIAorICAgcyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBh dXRvX2xvYWRfc2FmZV9wYXRoLCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7CisgICB4ZnJlZSAo YXV0b19sb2FkX3NhZmVfcGF0aCk7CitAQCAtMTAyMyw4ICsxMDMwLDEwIEBAIFNldCB0aGUgbGlz dCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVz LiIpLCBfKCJcCisgU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlz IHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCisgVmFyaW91cyBmaWxlcyBsb2FkZWQg YXV0b21hdGljYWxseSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucyBtdXN0XG5c CisgYmUgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBieSB0aGlzIG9w dGlvbi4gIFdhcm5pbmcgd2lsbCBiZVxuXAorLXByaW50ZWQgYW5kIGZpbGUgd2lsbCBub3QgYmUg dXNlZCBvdGhlcndpc2UuICBVc2UgZW1wdHkgc3RyaW5nIChvciBldmVuXG5cCistZW1wdHkgZGly ZWN0b3J5IGVudHJ5KSB0byBhbGxvdyBhbnkgZmlsZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4u Licgb3B0aW9ucy5cblwKKytwcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3 aXNlLlxuXAorK1NldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gYW4gZW1wdHkgbGlzdCByZXNldHMg aXQgdG8gaXRzIGRlZmF1bHQgdmFsdWUuXG5cCisrU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAn LycgKHdpdGhvdXQgdGhlIHF1b3RlcykgYWxsb3dzIGFueSBmaWxlXG5cCisrZm9yIHRoZSAnc2V0 IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCisgVGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3Ig dGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy5cblwKKyBU aGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVy aW9ycy4iKSwKKyAJCQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCwKK2RpZmYgLS1naXQg YS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQoraW5kZXggNTRjMjM5OS4uNDJkMmZiZCAx MDA3NTUKKy0tLSBhL2dkYi9jb25maWd1cmUKKysrKyBiL2dkYi9jb25maWd1cmUKK0BAIC00OTQ5 LDcgKzQ5NDksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQg c2FmZS1wYXRoLi4uICIgPiY2OyB9CisgIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQt c2FmZS1wYXRoIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGg7IGlmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgorLSAg IHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgorKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aD0iLyIKKyAgZmkKKyBlbHNlCisgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgi CitkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKK2luZGV4 IGE0MGMyZTUuLjliZGUxOGYgMTAwNjQ0CistLS0gYS9nZGIvY29uZmlndXJlLmFjCisrKysgYi9n ZGIvY29uZmlndXJlLmFjCitAQCAtMTQwLDcgKzE0MCw3IEBAIEFDX0FSR19XSVRIKGF1dG8tbG9h ZC1zYWZlLXBhdGgsCisgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRo PVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKKyBB U19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJl c3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAorIFtpZiB0ZXN0ICIkd2l0aF9h dXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg9IiIKKysgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCisgIGZpXSwKKyBbd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4Il0pCisgQUNfREVGSU5FX0RJUihERUZBVUxU X0FVVE9fTE9BRF9TQUZFX1BBVEgsIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCwKK2RpZmYgLS1n aXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbworaW5kZXggYTJh NGViMy4uNDZkZGUyNyAxMDA2NDQKKy0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KKysrKyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KK0BAIC0yMTEwNSw5ICsyMTEwNSwxMiBAQCBUaGUgbGlzdCBvZiB0 cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5k czoKKyBAdGFibGUgQGNvZGUKKyBAYW5jaG9ye3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofQorIEBr aW5kZXggc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgKKy1AaXRlbSBzZXQgYXV0by1sb2FkIHNhZmUt cGF0aCBAdmFye2RpcmVjdG9yaWVzfQorK0BpdGVtIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIEBy e1t9QHZhcntkaXJlY3Rvcmllc31AcntdfQorIFNldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyAo YW5kIHRoZWlyIHN1YmRpcmVjdG9yaWVzKSB0cnVzdGVkIGZvciBhdXRvbWF0aWMKKyBsb2FkaW5n IGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIFlvdSBjYW4gYWxzbyBlbnRlciBhIHNwZWNpZmlj IHRydXN0ZWQgZmlsZS4KKytJZiB5b3Ugb21pdCBAdmFye2RpcmVjdG9yaWVzfSwgQHNhbXB7YXV0 by1sb2FkIHNhZmUtcGF0aH0gd2lsbCBiZSByZXNldCB0bworK2l0cyBkZWZhdWx0IHZhbHVlIGFz IHNwZWNpZmllZCBkdXJpbmcgQHZhbHVle0dEQk59IGNvbXBpbGF0aW9uLgorKworIFRoZSBsaXN0 IG9mIGRpcmVjdG9yaWVzIHVzZXMgZGlyZWN0b3J5IHNlcGFyYXRvciAoQHNhbXB7On0gb24gR05V IGFuZCBVbml4Cisgc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKSB0 byBzZXBhcmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5CisgdG8gdGhlIEBlbnZ7UEFUSH0gZW52 aXJvbm1lbnQgdmFyaWFibGUuCitAQCAtMjExMjYsNyArMjExMjksOCBAQCBsb2FkaW5nIGFuZCBl eGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpcGxlIGVudHJpZXMgbWF5IGJlIGRlbGltaXRlZCBi eSB0aGUKKyBob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNlLgorIEBlbmQg dGFibGUKKyAKKy1TZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGRpc2Fi bGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KKytTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8g QGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eQorK3Byb3RlY3Rpb24uCisgVGhpcyB2YXJp YWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0 YWJsZSBieSB0aGUKKyBzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRoZWly IHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCisgdGhlaXIgaG9tZSBkaXJlY3Rv cmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVwcmVj YXRlZAorQEAgLTIxMTQ2LDcgKzIxMTUwLDcgQEAgYnkgQHNhbXB7c2hvdyBhdXRvLWxvYWQgc2Fm ZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSkuCisgU3Bl Y2lmeSB0aGlzIGRpcmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3Ig YSBzaW5nbGUKKyBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4 ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIgQGRvdHN7fX0KKytAaXRlbSBAa2Jke2dkYiAtaWV4 ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvIiBAZG90c3t9fQorIERpc2FibGUgYXV0by1sb2Fk aW5nIHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCisgVGhpcyBhc3N1 bWVzIGFsbCB0aGUgZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNz aW9uIHdpbGwgY29tZQorIGZyb20gdHJ1c3RlZCBzb3VyY2VzLgorCgpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTE4b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xOG9mMTgucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgxOWU0NwotLS0gL2Rldi9udWxsCisrKyBi L2dkYi1hdXRvbG9hZC0xOG9mMTgucGF0Y2gKQEAgLTAsMCArMSwyMzEgQEAKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwNzU4Lmh0bWwKK1N1YmplY3Q6 IFtwYXRjaF0gYXV0by1sb2FkIHNhZmUtcGF0aCBkZWZhdWx0PSRkZGlyL2F1dG8tbG9hZCAgW1Jl OiBbcGF0Y2hdIGF1dG8tbG9hZCBzYWZlLXBhdGggcmVzZXQgYmFjayBieSBzZXQgIiJdCisKK09u IFN1biwgMjIgQXByIDIwMTIgMjM6MjY6MTYgKzAyMDAsIERvdWcgRXZhbnMgd3JvdGU6Cis+IEEg dGhvdWdodCBvY2N1cnJlZCB0byBtZSByZWdhcmRpbmcgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYXV0 by1sb2FkLXBhdGgKKz4gPSAke3ByZWZpeH0uCisKK1RoaXMgaXMgdW5yZWxhdGVkIHRvIHRoaXMg cGF0Y2ggYnV0IHRoYW5rcyBmb3IgdGhlIHN1Z2dlc3Rpb24uCisKKworPiBTbyBJIHdhcyB3b25k ZXJpbmcgaWYgd2UgcmVhbGx5IHdhbnQgc2VjdXJpdHkgdG8gYmUgb24gYnkgZGVmYXVsdCwKKz4g c2hvdWxkIHRoZSBkZWZhdWx0IHZhbHVlIGJlIGdkYidzIGRhdGEtZGlyZWN0b3J5IChlLmcuLAor PiAkcHJlZml4L3NoYXJlL2dkYikgKyAkZXhlY19wcmVmaXgvbGlieywzMiw2NH0gKyA/Pz8KKwor TWFkZSBpdCB0aGVyZWZvcmUgJGRkaXIvYXV0by1sb2FkLCBvbiBhbiBpZGVhbCBzeXN0ZW0vZGlz dHJvIHdlIGNhbiBjaGFuZ2UgYWxsCit0aGUgYXV0by1sb2FkZWQgR0RCIGZpbGVzIHRvIGJlIGxv Y2F0ZWQgdW5kZXIgJGRkaXIvYXV0by1sb2FkLiAgSSBoYXZlIGZpbGVkCitmb3IgdGhlIG9ubHkg cmVtYWluaW5nIHZpb2xhdGlvbiAoL3Vzci9iaW4vbW9uby1nZGIucHkpIGtub3duIHRvIG1lOgor CWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODE1NTAxCisJKFN1 cmUgSSB3aWxsIGFzayBhYm91dCB1cHN0cmVhbWluZyBvZiB0aGUgY2hhbmdlLikKKworCis+IFBs dXMsIGl0IHNlZW1zIGxpa2UgYXQgbGVhc3QgZGF0YS1kaXJlY3Rvcnkgc2hvdWxkIGJlIHJlbG9j YXRhYmxlLgorPiBJbXBsZW1lbnRpbmcgdGhpcyBtaWdodCBiZSBjdW1iZXJzb21lIHVubGVzcyBk YXRhLWRpcmVjdG9yeSB3YXMKKz4gcmVwcmVzZW50ZWQgYXMgc29tZXRoaW5nIGxpa2UgIiRkZGly Ii4KKworRG9uZS4gIFVuZm9ydHVuYXRlbHkgdGhpcyBzdGlsbCBkb2VzIG5vdCBmaXggdGhlICIu L2dkYiIgcnVuIGZvciBhIG5ld2x5IGJ1aWx0CitHREIuICBOZXdseSBidWlsdCBHREIgcHJvYmFi bHkgY291bGQgdXNlICItZGF0YS1kaXJlY3RvcnkgJFBXRC9kYXRhLWRpcmVjdG9yeSIKKyhpZiBH REIncyBwcm9ncmFtIGRpciBjb250YWlucyAiZGF0YS1kaXJlY3RvcnkiIHNvcnQgb2YgcmVsb2Nh dGlvbikuCitXZSBjb3VsZCB0aGVuIGNoYW5nZSBjdXJyZW50CisJZ2RiLWdkYi5nZGIuaW4gLT4g Z2RiLWdkYi5nZGIKK3RvCisJZ2RiLWdkYi5nZGIuaW4gLT4gZGF0YS1kaXJlY3RvcnkvYXV0by1s b2FkLyRQV0QvZ2RiLWdkYi5nZGIKK2FuZCBldmVuIGluc3RhbGwgdGhlIGZpbGUgKHdpdGggcHJv cGVyIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllcykgYXM6CisJL3Vzci9zaGFyZS9nZGIvdXNyL2Jp bi9nZGItZ2RiLmdkYgorCShhZGRpdGlvbmFsbHkgZW5zdXJpbmcgZm9yIGV4YW1wbGUgaW4gRmVk b3JhIC0gaW4gaXRzIC5zcGVjIGZpbGUKKwlAc3JjZGlyQCBnZXRzIHN1YnN0aXR1dGVkIHJpZ2h0 IGZvciBGZWRvcmEgKi1kZWJ1Z2luZm8ucnBtKQorCitXb3VsZCBpdCBtYWtlIGV2ZXJ5b25lIGhh cHB5PworCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTItMDQtMjMgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCUNoYW5nZSBhdXRvLWxvYWQgc2Fm ZS1wYXRoIGRlZmF1bHQgdG8gJGRkaXIvYXV0by1sb2FkLgorCSogYXV0by1sb2FkLmMgKGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSk6IENhbGwKKwlzdWJzdGl0dXRlX3BhdGhfY29tcG9u ZW50IGZvciAkZGRpci4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIGNvbmZpZ3VyZS5h YyAoLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBTdWdnZXN0ICRkZGlyIHN5bnRheC4KKwlD aGFuZ2UgdGhlIGRlZmF1bHQgdG8gXFxcJGRkaXIvYXV0by1sb2FkLgorCSogZGVmcy5oIChzdWJz dGl0dXRlX3BhdGhfY29tcG9uZW50KTogTmV3IGRlY2xhcmF0aW9uLgorCSogdXRpbHMuYyAoc3Vi c3RpdHV0ZV9wYXRoX2NvbXBvbmVudCk6IE5ldyBmdW5jdGlvbi4KKworZ2RiL2RvYy8KKzIwMTIt MDQtMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCUNo YW5nZSBhdXRvLWxvYWQgc2FmZS1wYXRoIGRlZmF1bHQgdG8gJGRkaXIvYXV0by1sb2FkLgorCSog Z2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IENoYW5nZSBzaG93biBzYWZlLXBhdGggZGVmYXVs dCB0bworCSRkZGlyL2F1dG8tbG9hZC4KKwkoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IENoYW5n ZSB0aGUgc2FtcGxlIHdhcm5pbmcgdG8gJGRkaXIvYXV0by1sb2FkLgorCVR3aWNlLiAgTWVudGlv biB0aGUgJGRkaXIgc3Vic3RpdHV0aW9uLgorCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMjQgMTg6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0yNCAxODoxMjozOC44 MTkyNzk1NzQgKzAyMDAKK0BAIC0xNDEsOCArMTQxLDEyIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjX3VwZGF0ZSAodm9pZCkKKyAgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKKyAgICAg eworICAgICAgIGNoYXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjLCBpeCk7CistICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRp cik7CistICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Cisr ICAgICAgY2hhciAqZXhwYW5kZWQsICpyZWFsX3BhdGg7CisrCisrICAgICAgZXhwYW5kZWQgPSB0 aWxkZV9leHBhbmQgKGRpcik7CisrICAgICAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmV4 cGFuZGVkLCAiJGRkaXIiLCBnZGJfZGF0YWRpcik7CisrCisrICAgICAgcmVhbF9wYXRoID0gZ2Ri X3JlYWxwYXRoIChleHBhbmRlZCk7CisgCisgICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVu dHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCisgICAgICAgVkVDX3JlcGxhY2Ug KGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA0LTI0IDE4OjEyOjIxLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQkyMDEy LTA0LTI0IDE4OjEyOjM4LjgyMjI3OTU2NiArMDIwMAorQEAgLTE2NjgsNyArMTY2OCw4IEBAIE9w dGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRh dGFiYXNlIGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28pCisgICAtLXdpdGgtYXV0by1sb2FkLXNhZmUt cGF0aD1QQVRICistICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVj dG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAnXFxcJGRkaXInIGZvciAtZGF0YS1kaXJlY3RvcnkKKyAgIC0td2l0aG91 dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3Qg cmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCisgICAtLXdpdGgtbGlidW53aW5k ICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0CitAQCAtODQ5MSw3 ICs4NDkyLDcgQEAgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fQorICAg IHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAgZmkKKyBlbHNlCistICB3aXRoX2F1dG9f bG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCisrICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9J1xc XCRkZGlyL2F1dG8tbG9hZCcKKyBmaQorIAorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMjQgMTg6MTI6MjEuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMjQgMTg6MTM6 MDQuMDkwMjE2NjA1ICswMjAwCitAQCAtMzQxLDEyICszNDEsMTMgQEAgZmkKKyAgCisgQUNfTVNH X0NIRUNLSU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKKyBBQ19BUkdfV0lU SChhdXRvLWxvYWQtc2FmZS1wYXRoLAorLUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2Fk LXNhZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBm aWxlc10pCisrQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhd LAorKyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlICdc XFwkZGRpcicgZm9yIC1kYXRhLWRpcmVjdG9yeV0pCisgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91 dC1hdXRvLWxvYWQtc2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxl cyBsb2NhdGlvbnNdKSwKKyBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAi bm8iOyB0aGVuCisgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICBmaV0sCistW3dp dGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCJdKQorK1t3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg9J1xcXCRkZGlyL2F1dG8tbG9hZCddKQorIEFDX0RFRklORV9ESVIoREVGQVVMVF9BVVRP X0xPQURfU0FGRV9QQVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCisgCSAgICAgIFtEaXJl Y3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKKyBBQ19NU0dfUkVTVUxU KFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9kZWZzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2RlZnMuaAkyMDEyLTA0LTI0IDE4OjEyOjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2RlZnMuaAkyMDEyLTA0LTI0IDE4OjEyOjM4LjgyNDI3OTU2MiArMDIw MAorQEAgLTQ0Miw2ICs0NDIsOSBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfYnBzdGF0 X2NsZWFyCisgCisgZXh0ZXJuIGludCBwcm9kdWNlcl9pc19nY2NfZ2VfNCAoY29uc3QgY2hhciAq cHJvZHVjZXIpOworIAorK2V4dGVybiB2b2lkIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNo YXIgKipzdHJpbmdwLCBjb25zdCBjaGFyICpmcm9tLAorKwkJCQkgICAgICAgY29uc3QgY2hhciAq dG8pOworKworICNpZmRlZiBIQVZFX1dBSVRQSUQKKyBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVf d2l0aF90aW1lb3V0IChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91dCk7CisgI2Vu ZGlmCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMi0wNC0yNCAxODoxMjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0yNCAxODoxMzozOC4yMzMxMzE1MzMgKzAy MDAKK0BAIC0yMDgwMiw3ICsyMDgwMiw3IEBAIGxpYnRocmVhZC1kYjogIEF1dG8tbG9hZGluZyBv ZiBpbmZlcmlvcgorIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2Ny aXB0IGZyb20gY3VycmVudCBkaXJlY3RvcnkgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRv LWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCisgc2FmZS1wYXRoOiAgTGlzdCBvZiBk aXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCistICAg ICAgICAgICAgaXMgL3Vzci9sb2NhbC4KKysgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQu CisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQorQEAgLTIx MDA0LDkgKzIxMDA0LDkgQEAgZ2V0IGxvYWRlZDoKKyAkIC4vZ2RiIC1xIC4vZ2RiCisgUmVhZGlu ZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9uZS4KKyB3YXJuaW5nOiBGaWxl ICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCistICAg ICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNy L2xvY2FsIi4KKysgICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRo JyBzZXQgdG8gIiRkZGlyL2F1dG8tbG9hZCIuCisgd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9n ZGIvZ2RiLWdkYi5weSIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCistICAgICAgICAgZGVjbGluZWQg YnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKysgICAg ICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGly L2F1dG8tbG9hZCIuCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBUaGUgbGlzdCBvZiB0cnVzdGVk IGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKK0BA IC0yMTAzOCw2ICsyMTAzOCwxMSBAQCBsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4g IE11bHRpCisgaG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKyBAZW5k IHRhYmxlCisgCisrQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBsYWNl ZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcworK2RldGVybWluZWQgYXQgQHZhbHVl e0dEQk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVzdCBi ZQorK2JlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLSBlaXRoZXIgYWxvbmUgb3Ig ZGVsaW1pdGVkIGJ5IEBmaWxley99IG9yCisrQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMs IGRlcGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KKysKKyBTZXR0aW5nIHRoaXMgdmFyaWFi bGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eQorIHByb3RlY3Rpb24uCisgVGhp cyB2YXJpYWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3Rvcmll cyB3cml0YWJsZSBieSB0aGUKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi91dGlscy5jCTIw MTItMDQtMjQgMTg6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdXRpbHMuYwkyMDEyLTA0LTI0IDE4OjEyOjM4LjgzMzI3OTU0MCArMDIwMAorQEAgLTM5 MjUsNiArMzkyNSw0OCBAQCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRp CisgICByZXR1cm4gcmV0dmFsOworIH0KKyAKKysvKiBTdWJzdGl0dXRlIGFsbCBvY2N1cmVuY2Vz IG9mIHN0cmluZyBGUk9NIGJ5IHN0cmluZyBUTyBpbiAqU1RSSU5HUC4gICpTVFJJTkdQCisrICAg bXVzdCBjb21lIGZyb20geHJlYWxsb2MtY29tcGF0aWJsZSBhbGxvY2F0b3IgYW5kIGl0IG1heSBi ZSB1cGRhdGVkLiAgRlJPTQorKyAgIG5lZWRzIHRvIGJlIGRlbGltaXRlZCBieSBJU19ESVJfU0VQ QVJBVE9SIChvciBiZSBsb2NhdGVkIGF0IHRoZSBzdGFydCBvcgorKyAgIGVuZCBvZiAqU1RSSU5H UC4gICovCisrCisrdm9pZAorK3N1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJp bmdwLCBjb25zdCBjaGFyICpmcm9tLCBjb25zdCBjaGFyICp0bykKKyt7CisrICBjaGFyICpzdHJp bmcgPSAqc3RyaW5ncCwgKnM7CisrICBjb25zdCBzaXplX3QgZnJvbV9sZW4gPSBzdHJsZW4gKGZy b20pOworKyAgY29uc3Qgc2l6ZV90IHRvX2xlbiA9IHN0cmxlbiAodG8pOworKworKyAgZm9yIChz ID0gc3RyaW5nOzspCisrICAgIHsKKysgICAgICBzID0gc3Ryc3RyIChzLCBmcm9tKTsKKysgICAg ICBpZiAocyA9PSBOVUxMKQorKwlicmVhazsKKysKKysgICAgICBpZiAoKHMgPT0gc3RyaW5nIHx8 IElTX0RJUl9TRVBBUkFUT1IgKHNbLTFdKSkKKysgICAgICAgICAgJiYgKHNbZnJvbV9sZW5dID09 ICdcMCcgfHwgSVNfRElSX1NFUEFSQVRPUiAoc1tmcm9tX2xlbl0pKSkKKysJeworKwkgIGNoYXIg KnN0cmluZ19uZXc7CisrCisrCSAgc3RyaW5nX25ldyA9IHhyZWFsbG9jIChzdHJpbmcsIChzdHJs ZW4gKHN0cmluZykgKyB0b19sZW4gKyAxKSk7CisrCisrCSAgLyogUmVsb2NhdGUgdGhlIGN1cnJl bnQgUyBwb2ludGVyLiAgKi8KKysJICBzID0gcyAtIHN0cmluZyArIHN0cmluZ19uZXc7CisrCSAg c3RyaW5nID0gc3RyaW5nX25ldzsKKysKKysJICAvKiBSZXBsYWNlIGZyb20gYnkgdG8uICAqLwor KwkgIG1lbW1vdmUgKCZzW3RvX2xlbl0sICZzW2Zyb21fbGVuXSwgc3RybGVuICgmc1tmcm9tX2xl bl0pICsgMSk7CisrCSAgbWVtY3B5IChzLCB0bywgdG9fbGVuKTsKKysKKysJICBzICs9IHRvX2xl bjsKKysJfQorKyAgICAgIGVsc2UKKysJcysrOworKyAgICB9CisrCisrICAqc3RyaW5ncCA9IHN0 cmluZzsKKyt9CisrCisgI2lmZGVmIEhBVkVfV0FJVFBJRAorIAorICNpZmRlZiBTSUdBTFJNCgpk aWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCAxYTI5YzY5Li5lMjU3ZmFkIDEw MDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjAsNiArMjAsOCBAQAogJXsh P3NjbDoKICAlZ2xvYmFsIHBrZ19uYW1lICV7bmFtZX0KICAlZ2xvYmFsIF9yb290X3ByZWZpeCAl e19wcmVmaXh9CisgJWdsb2JhbCBfcm9vdF9kYXRhZGlyICV7X2RhdGFkaXJ9CisgJWdsb2JhbCBf cm9vdF9iaW5kaXIgJXtfYmluZGlyfQogfQogCiBTdW1tYXJ5OiBBIEdOVSBzb3VyY2UtbGV2ZWwg ZGVidWdnZXIgZm9yIEMsIEMrKywgRm9ydHJhbiBhbmQgb3RoZXIgbGFuZ3VhZ2VzCkBAIC0zMyw3 ICszNSw3IEBAIFZlcnNpb246IDcuNC41MC4le3NuYXB9CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlz IGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1 cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5k ZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogNDElez9kaXN0fQor UmVsZWFzZTogNDIlez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4 Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBh bmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQv RGVidWdnZXJzCkBAIC02NSwxMSArNjcsMTEgQEAgT2Jzb2xldGVzOiBnZGI2NCA8IDUuMy45MQog JWVuZGlmICMgMCV7IT9lbDU6MX0KICVlbmRpZiAjICV7aXg4Nn0geDg2XzY0CiAKLSMgTm9ib2R5 IGlzIGdvaW5nIHRvIHJ1biBnZGItYWRkLWluZGV4IGZyb20gU0NMIHBhY2thZ2Ugb24gUkhFTC01 LgotJWlmICEoMCV7P2VsNToxfSAmJiAwJXs/c2NsOjF9KQorIyBnZGItYWRkLWluZGV4IGNhbm5v dCBiZSBydW4gZXZlbiBmb3IgU0NMIHBhY2thZ2Ugb24gUkhFTDw9Ni4KKyVpZiAwJXshP3JoZWw6 MX0gfHwgMCV7P3JoZWx9ID4gNgogIyBldS1zdHJpcDogLWcgcmVjb2duaXplcyAuZ2RiX2luZGV4 IGFzIGEgZGVidWdnaW5nIHNlY3Rpb24uICgjNjMxOTk3KQogQ29uZmxpY3RzOiBlbGZ1dGlscyA8 IDAuMTQ5Ci0lZW5kaWYgIyAhKDAlez9lbDU6MX0gJiYgMCV7P3NjbDoxfSkKKyVlbmRpZgogCiAj IGh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9mcGMvdGlja2V0LzQzIGh0dHBzOi8vZmVkb3JhaG9z dGVkLm9yZy9mcGMvdGlja2V0LzEwOQogUHJvdmlkZXM6IGJ1bmRsZWQobGliaWJlcnR5KSA9ICV7 c25hcH0KQEAgLTU4NCwxOCArNTg2LDI0IEBAIFBhdGNoNjYxOiBnZGItc3RhbGUtZnJhbWVfaW5m by5wYXRjaAogCiAjIFNlY3VyaXR5IGZpeCBmb3IgbG9hZGluZyB1bnRydXN0ZWQgaW5mZXJpb3Jz LCBzZWUgInNldCBhdXRvLWxvYWQiIChCWiA3NTYxMTcpLgogIz1wdXNoCi1QYXRjaDY2MjogZ2Ri LWF1dG9sb2FkLTAxb2YxMi5wYXRjaAotUGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMTIucGF0 Y2gKLVBhdGNoNjY0OiBnZGItYXV0b2xvYWQtMDNvZjEyLnBhdGNoCi1QYXRjaDY2NTogZ2RiLWF1 dG9sb2FkLTA0b2YxMi5wYXRjaAotUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMTIucGF0Y2gK LVBhdGNoNjY3OiBnZGItYXV0b2xvYWQtMDZvZjEyLnBhdGNoCi1QYXRjaDY2ODogZ2RiLWF1dG9s b2FkLTA3b2YxMi5wYXRjaAotUGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9mMTIucGF0Y2gKLVBh dGNoNjcwOiBnZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNoCi1QYXRjaDY3MTogZ2RiLWF1dG9sb2Fk LTEwb2YxMi5wYXRjaAotUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMTIucGF0Y2gKLVBhdGNo NjczOiBnZGItYXV0b2xvYWQtMTJvZjEyLnBhdGNoCitQYXRjaDY2MjogZ2RiLWF1dG9sb2FkLTAx b2YxOC5wYXRjaAorUGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMTgucGF0Y2gKK1BhdGNoNjY0 OiBnZGItYXV0b2xvYWQtMDNvZjE4LnBhdGNoCitQYXRjaDY2NTogZ2RiLWF1dG9sb2FkLTA0b2Yx OC5wYXRjaAorUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMTgucGF0Y2gKK1BhdGNoNjY3OiBn ZGItYXV0b2xvYWQtMDZvZjE4LnBhdGNoCitQYXRjaDY2ODogZ2RiLWF1dG9sb2FkLTA3b2YxOC5w YXRjaAorUGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9mMTgucGF0Y2gKK1BhdGNoNjcwOiBnZGIt YXV0b2xvYWQtMDlvZjE4LnBhdGNoCitQYXRjaDY3MTogZ2RiLWF1dG9sb2FkLTEwb2YxOC5wYXRj aAorUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMTgucGF0Y2gKK1BhdGNoNjczOiBnZGItYXV0 b2xvYWQtMTJvZjE4LnBhdGNoCitQYXRjaDY3NDogZ2RiLWF1dG9sb2FkLTEzb2YxOC5wYXRjaAor UGF0Y2g2NzU6IGdkYi1hdXRvbG9hZC0xNG9mMTgucGF0Y2gKK1BhdGNoNjc2OiBnZGItYXV0b2xv YWQtMTVvZjE4LnBhdGNoCitQYXRjaDY3NzogZ2RiLWF1dG9sb2FkLTE2b2YxOC5wYXRjaAorUGF0 Y2g2Nzg6IGdkYi1hdXRvbG9hZC0xN29mMTgucGF0Y2gKK1BhdGNoNjc5OiBnZGItYXV0b2xvYWQt MThvZjE4LnBhdGNoCiAKICVpZiAwJXshP3JoZWw6MX0gfHwgMCV7P3JoZWx9ID4gNgogIyBSTF9T VEFURV9GRURPUkFfR0RCIHdvdWxkIG5vdCBiZSBmb3VuZCBmb3I6CkBAIC04OTksNiArOTA3LDEy IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3At ZXhwLmMKICVwYXRjaDY3MSAtcDEKICVwYXRjaDY3MiAtcDEKICVwYXRjaDY3MyAtcDEKKyVwYXRj aDY3NCAtcDEKKyVwYXRjaDY3NSAtcDEKKyVwYXRjaDY3NiAtcDEKKyVwYXRjaDY3NyAtcDEKKyVw YXRjaDY3OCAtcDEKKyVwYXRjaDY3OSAtcDEKIAogJXBhdGNoMzkzIC1wMQogJWlmIDAleyE/ZWw1 OjF9IHx8IDAlez9zY2w6MX0KQEAgLTEwMTgsMTEgKzEwMzIsOSBAQCAkKDogUkhFTC01IGxpYnJw bSBoYXMgaW5jb21wYXRpYmxlIEFQSS4gKQkJCVwKICVlbHNlCiAJLS1kaXNhYmxlLWlucHJvY2Vz cy1hZ2VudAkJCQlcCiAlZW5kaWYKLSVpZiAwJXshP3JoZWw6MX0gfHwgMCV7P3JoZWx9ID4gNgot CS0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPSV7X3Jvb3RfcHJlZml4fSV7P3NjbDo6JXtfc2Ns X3Jvb3R9fQkJCQlcCi0lZWxzZQotCS0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPSV7X3Jvb3Rf cHJlZml4fTovYmluOi9zYmluOi9saWI6L2xpYjY0JXs/c2NsOjole19zY2xfcm9vdH19CVwKLSVl bmRpZgorJCg6ICV7X2JpbmRpcn0vbW9uby1nZGIucHkgaXMgd29ya2Fyb3VuZCBmb3IgbW9ubyBC WiA4MTU1MDEuICkJCQkJCQkJCQkJCVwKKyQoOiBmb3IgdGhlIHNjbCBwYXJ0IHNlZSB1bmZpeGVk IEJaIDgxNTkxMC4gKQkJCQkJCQkJCQkJCQlcCisJLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9 JXtfZGF0YWRpcn0vZ2RiL2F1dG8tbG9hZDovdXNyL2xpYi9kZWJ1ZyV7P3NjbDo6JXtfcm9vdF9k YXRhZGlyfS9nZGIvYXV0by1sb2FkfTole19yb290X2JpbmRpcn0vbW9uby1nZGIucHkJXAogJWlm YXJjaCBzcGFyYyBzcGFyY3Y5CiAJc3BhcmMtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9JXs/X2du dX0KICVlbHNlCkBAIC0xMjQ4LDEwICsxMjYwLDEwIEBAIGRvbmUKICVlbmRpZiAjIDAleyE/X3dp dGhvdXRfcHl0aG9uOjF9CiAlZW5kaWYgIyAwJXs/cmhlbDoxfSAmJiAwJXs/cmhlbH0gPD0gNgog Ci0jIGdkYi1hZGQtaW5kZXggZG9lcyBub3QgaGF2ZSBzdWZmaWNpZW50IHZlcnNpb24gb2YgZWxm dXRpbHMgb24gUkhFTC01IChpbiBTQ0wpLgotJWlmIDAlez9lbDU6MX0gJiYgMCV7P3NjbDoxfQor IyBnZGItYWRkLWluZGV4IGNhbm5vdCBiZSBydW4gZXZlbiBmb3IgU0NMIHBhY2thZ2Ugb24gUkhF TDw9Ni4KKyVpZiAwJXs/cmhlbDoxfSAmJiAwJXs/cmhlbH0gPD0gNgogcm0gLWYgJFJQTV9CVUlM RF9ST09UJXtfYmluZGlyfS9nZGItYWRkLWluZGV4Ci0lZW5kaWYgIyAwJXs/ZWw1OjF9ICYmIDAl ez9zY2w6MX0KKyVlbmRpZgogCiAjIFJlbW92ZSB0aGUgZmlsZXMgdGhhdCBhcmUgcGFydCBvZiBh IGdkYiBidWlsZCBidXQgdGhhdCBhcmUgb3duZWQgYW5kCiAjIHByb3ZpZGVkIGJ5IG90aGVyIHBh Y2thZ2VzLgpAQCAtMTMyOCwxMCArMTM0MCwxMCBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09UCiAl e19iaW5kaXJ9L2dkYnR1aQogJXtfbWFuZGlyfS8qL2dkYnR1aS4xKgogJWVuZGlmICMgMCV7P3Jo ZWw6MX0gJiYgMCV7P3JoZWx9IDw9IDYKLSMgZ2RiLWFkZC1pbmRleCBkb2VzIG5vdCBoYXZlIHN1 ZmZpY2llbnQgdmVyc2lvbiBvZiBlbGZ1dGlscyBvbiBSSEVMLTUgKGluIFNDTCkuCi0laWYgISgw JXs/ZWw1OjF9ICYmIDAlez9zY2w6MX0pCisjIGdkYi1hZGQtaW5kZXggY2Fubm90IGJlIHJ1biBl dmVuIGZvciBTQ0wgcGFja2FnZSBvbiBSSEVMPD02LgorJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/ cmhlbH0gPiA2CiAle19iaW5kaXJ9L2dkYi1hZGQtaW5kZXgKLSVlbmRpZiAjICEoMCV7P2VsNTox fSAmJiAwJXs/c2NsOjF9KQorJWVuZGlmCiAle19iaW5kaXJ9L3BzdGFjawogJXtfbWFuZGlyfS8q L3BzdGFjay4xKgogJXtfZGF0YWRpcn0vZ2RiCkBAIC0xMzgzLDYgKzEzOTUsMTAgQEAgZmkKICVl bmRpZiAjIDAleyE/ZWw1OjF9IHx8ICIle190YXJnZXRfY3B1fSIgPT0gIm5vYXJjaCIKIAogJWNo YW5nZWxvZworKiBUdWUgQXByIDI0IDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIwMTIwLTQyLmZjMTcKKy0gVXBkYXRlICJzZXQgYXV0 by1sb2FkIiBwYXRjaHNldCBhbmQgdGhlIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHNldHRp bmcuCistIFtSSEVMXSBEaXNhYmxlIGdkYi1hZGQtaW5kZXggZXZlbiBvbiBSSEVMLTYgYXMgUkhF TC02LjAgaGFkIHRvbyBvbGQgZWxmdXRpbHMuCisKICogV2VkIEFwciAxOCAyMDEyIEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC41MC4yMDEyMDEyMC00MS5m YzE3CiAtIFtSSEVMXSBGaXggLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggc3lzdGVtcyBwcmlv ciB0byAvdXNyIG1vdmUuCiAK