From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#36649: 27.0.50; pure space and pdumper Date: Sat, 22 Aug 2020 08:55:21 +0000 Message-ID: References: <87a6yo5fgy.fsf@gnus.org> <83d03kaz6f.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000abbbb605ad73853c" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11328"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 36649@debbugs.gnu.org, larsi@gnus.org, eggert@cs.ucla.edu To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Aug 22 10:57:12 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k9PKq-0002jD-75 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 22 Aug 2020 10:57:12 +0200 Original-Received: from localhost ([::1]:45712 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9PKo-0000ev-RN for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 22 Aug 2020 04:57:10 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36518) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9PKg-0000ef-BT for bug-gnu-emacs@gnu.org; Sat, 22 Aug 2020 04:57:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:37322) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k9PKg-0003NM-2A for bug-gnu-emacs@gnu.org; Sat, 22 Aug 2020 04:57:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1k9PKg-00078V-0k for bug-gnu-emacs@gnu.org; Sat, 22 Aug 2020 04:57:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 22 Aug 2020 08:57:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36649 X-GNU-PR-Package: emacs Original-Received: via spool by 36649-submit@debbugs.gnu.org id=B36649.159808656627370 (code B ref 36649); Sat, 22 Aug 2020 08:57:01 +0000 Original-Received: (at 36649) by debbugs.gnu.org; 22 Aug 2020 08:56:06 +0000 Original-Received: from localhost ([127.0.0.1]:48869 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k9PJm-00077N-9c for submit@debbugs.gnu.org; Sat, 22 Aug 2020 04:56:06 -0400 Original-Received: from mail-oi1-f193.google.com ([209.85.167.193]:41474) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k9PJk-00076t-O3 for 36649@debbugs.gnu.org; Sat, 22 Aug 2020 04:56:04 -0400 Original-Received: by mail-oi1-f193.google.com with SMTP id b22so3635319oic.8 for <36649@debbugs.gnu.org>; Sat, 22 Aug 2020 01:56:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mftMgtqMUddhaPKuzT6O91xWnB5YnTA1I/cKfnQUdGY=; b=SvNYPANnwhf2AY7Dg+bpOMQVZOSlLkgETEX3+i4mwDOuq64naLQxxCWmuaMgtYfRfI qcvSvULFq3551xSvNPo8C8WfBWkCAFsYqmBS2haDOPEx00wyn2japufCs4qhpglgYgbY VhSYPPgxPNN8JwvhCwEZtCPWDgEH3XiJqFUllioGsVuIWyBUjcbmXT6jxJreCg0cKAIX WEIyrCpvz/qSlLLPR+vdlMmkMDHdsj3r/EZW57/Ay8Ocr/hEsayi2d9yf6/kv1OmdNnY HjRFta6epCkeAndRu25dAHr5iw0g/1lpnd5bi5lvD9dl4V9sAdg6Y+vbxl5pHkO6Wp4q VNCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mftMgtqMUddhaPKuzT6O91xWnB5YnTA1I/cKfnQUdGY=; b=oSujTIw9hX+ZDTAICd9Zx0nTHAs1taeuRERbS4LqvVAn1C1Is9KbkSpHOZowA3qht6 0CSezYWghVWxjVwb/m9s+xtuofqoMuOULv3P76PSUXF51UEKRY1qndj+rGFrtD0jYv0F aNX6giGl8x1LUXmZy4p2Q4PLIIsw5HEhpluonWwBfvr90RCzVVXu6kAQDjirmR1OHsuH +AXg7oNaSUhJqM8PQwR5EyEC5rqYYq5Tz6f1nlDp5ZTwQnsjQVK6wanc9MKEIshDFp5U HIiOW5HeeSagHkeYuSSE/FCoaj3uK83rJdT7A7rQO0/3xk3pTQMhfvzqYlJCa5YitA3u XowA== X-Gm-Message-State: AOAM532PQBpkQgZqJ4FF1G5GZqkGMgdFEeGxZdZUBZi7tUlSij4lMJQq E/vcwG0Z9NySboknNF2UoAubd2K2CodcQ6RZHbQ= X-Google-Smtp-Source: ABdhPJxTZ0Y0Rqp2otqdQgLFndb25ta1NA+Usqp2UtjzVVZNMyJeCse0K0XwazPVyKRMGVSNuN0ac0lzhQXgECuiU78= X-Received: by 2002:aca:dc04:: with SMTP id t4mr4166905oig.30.1598086559011; Sat, 22 Aug 2020 01:55:59 -0700 (PDT) In-Reply-To: <83d03kaz6f.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:185930 Archived-At: --000000000000abbbb605ad73853c Content-Type: text/plain; charset="UTF-8" On Fri, Aug 21, 2020 at 1:47 PM Eli Zaretskii wrote: > > From: Pip Cet > > Date: Fri, 21 Aug 2020 13:04:47 +0000 > > Cc: 36649@debbugs.gnu.org, Paul Eggert > > > > On Fri, Aug 21, 2020 at 12:52 PM Lars Ingebrigtsen wrote: > > > I didn't read this thread closely, but it seems like the conclusion that > > > this patch should have been applied. (It removes pure space, > > > apparently?) > > > > > > The patch never was applied, though -- should it be applied now? > > > > I believe it's best to be careful with this one. Pure space affects GC > > in subtle ways, and it also affects performance. > > > > See this thread: > > https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00588.html > > > > I'd be happy to set up a separate branch for removing pure space if > > that's preferred. > > What do we do with unexec builds, which are still supported? I think that's an important question, but I don't think it's strongly connected to pure space. In fact, it appears like unexec builds are currently broken on master, and on this GNU/Linux machine, I've got to force use of HYBRID_MALLOC to get an unexec build starting at all. But, having done that, it works with and without the patch, at first glance. Rebased patch attached (but I just noticed the commit message is no longer complete). --000000000000abbbb605ad73853c Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Remove-pure-space.patch" Content-Disposition: attachment; filename="0001-Remove-pure-space.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ke5ffoyc0 RnJvbSBhYmFmZDQ1MzNmNDViYmVjMTkyOWIwY2ZkZjA2YzRkN2QzMTAxOGMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBTYXQs IDIyIEF1ZyAyMDIwIDA2OjE4OjUxICswMDAwClN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHB1cmUg c3BhY2UKCiogc3JjL2xpc3AuaCAoc3RydWN0IExpc3BfU3ltYm9sKTogUmVtb3ZlIGBwaW5uZWQn IGZsYWcuCihidWlsZF9wdXJlX2Nfc3RyaW5nLCBwdXJlX2xpc3RuKTogUmVtb3ZlLiAgQWxsIGNh bGxzIHJlbW92ZWQuCiogc3JjL3B1cmVzaXplLmg6IFJlbW92ZSBmaWxlLgoqIHNyYy9mbnMuYyAo Rm1ha2VfaGFzaF90YWJsZSk6IElnbm9yZSBgOnB1cmVjb3B5JyBhcmd1bWVudC4KKiBzcmMvZG9j LmMgKHN0b3JlX2Z1bmN0aW9uX2RvY3N0cmluZyk6IFJlbW92ZSBjb21tZW50IGFib3V0IHB1cmUK c3BhY2UuCiogc3JjL2RhdGEuYyAocHVyZV93cml0ZV9lcnJvcik6IFJlbW92ZS4gIEFsbCBjYWxs cyByZW1vdmVkLgoqIHNyYy9jb25mX3Bvc3QuaCAoU1lTVEVNX1BVUkVTSVpFX0VYVFJBKTogUmVt b3ZlLgoqIHNyYy9mbnMuYyAobWFrZV9oYXNoX3RhYmxlKTogRHJvcCBgcHVyZWNvcHknIGFyZ3Vt ZW50LiAgQWxsCmNhbGxlcnMgY2hhbmdlZCB0byByZW1vdmUgYXJndW1lbnQuCiogc3JjL2FsbG9j LmMgKG1ha2VfcHVyZV9zdHJpbmcsIG1ha2VfcHVyZV9jX3N0cmluZywgcHVyZV9jb25zKQoocHVy ZV9saXN0KTogUmVtb3ZlLiAgQWxsIGNhbGxzIHJlbW92ZWQuCihjaGVja19wdXJlX3NpemUpOiBS ZW1vdmUuICBBbGwgY2FsbHMgcmVtb3ZlZC4KKGNvbnNfbGlzdG4pOiBTaW1wbGlmeS4KKEZtYWtl X2J5dGVfY29kZSk6IFJlbW92ZSBjb21tZW50IGFib3V0IHB1cmUgc3BhY2UuCihwb2ludGVyX2Fs aWduKTogTW92ZSBkZWZpbml0aW9uIHRvIGF2b2lkIHdhcm5pbmcuCiogc3JjL01ha2VmaWxlLmlu OiBSZW1vdmUgY29tbWVudCBhYm91dCBwdXJlIHNwYWNlLgotLS0KIGNvbmZpZ3VyZS5hYyAgICAg ICB8ICAgMiArLQogc3JjL01ha2VmaWxlLmluICAgIHwgICAyIC0KIHNyYy9hbGxvYy5jICAgICAg ICB8IDU0NCArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNy Yy9idWZmZXIuYyAgICAgICB8ICAxNiArLQogc3JjL2NhbGxpbnQuYyAgICAgIHwgICA4ICstCiBz cmMvY2F0ZWdvcnkuYyAgICAgfCAgIDQgKy0KIHNyYy9jb2RpbmcuYyAgICAgICB8ICAxOCArLQog c3JjL2NvbmZfcG9zdC5oICAgIHwgIDMzIC0tLQogc3JjL2RhdGEuYyAgICAgICAgIHwgIDI5ICst LQogc3JjL2RidXNiaW5kLmMgICAgIHwgICA0ICstCiBzcmMvZGVwcy5tayAgICAgICAgfCAgMTAg Ky0KIHNyYy9kb2MuYyAgICAgICAgICB8ICAgMyAtCiBzcmMvZW1hY3MtbW9kdWxlLmMgfCAgMjgg Ky0tCiBzcmMvZW1hY3MuYyAgICAgICAgfCAgIDUgKy0KIHNyYy9ldmFsLmMgICAgICAgICB8ICAx MiArLQogc3JjL2ZpbGVpby5jICAgICAgIHwgIDIwICstCiBzcmMvZm5zLmMgICAgICAgICAgfCAg MzIgKy0tCiBzcmMvZm9udHNldC5jICAgICAgfCAgIDQgKy0KIHNyYy9mcmFtZS5jICAgICAgICB8 ICAgMiArLQogc3JjL2ltYWdlLmMgICAgICAgIHwgICAyICstCiBzcmMvaW50ZXJ2YWxzLmMgICAg fCAgIDIgLQogc3JjL2pzb24uYyAgICAgICAgIHwgICA0ICstCiBzcmMva2V5Ym9hcmQuYyAgICAg fCAgIDggKy0KIHNyYy9rZXltYXAuYyAgICAgICB8ICAzNCArKy0KIHNyYy9saXNwLmggICAgICAg ICB8ICA0MSArLS0tCiBzcmMvbHJlYWQuYyAgICAgICAgfCAgNTMgKystLS0KIHNyYy9wZHVtcGVy LmMgICAgICB8ICAgNSArLQogc3JjL3ByaW50LmMgICAgICAgIHwgICA2IC0KIHNyYy9wcm9jZXNz LmMgICAgICB8ICAgNCArLQogc3JjL3Byb2ZpbGVyLmMgICAgIHwgICAyICstCiBzcmMvcHVyZXNp emUuaCAgICAgfCAxMTUgLS0tLS0tLS0tLQogc3JjL3NlYXJjaC5jICAgICAgIHwgIDEyICstCiBz cmMvc3ludGF4LmMgICAgICAgfCAgIDQgKy0KIHNyYy93MzJmbnMuYyAgICAgICB8ICAgNCArLQog c3JjL3hkaXNwLmMgICAgICAgIHwgIDIwICstCiBzcmMveGZhY2VzLmMgICAgICAgfCAgIDIgKy0K IHNyYy94Zm5zLmMgICAgICAgICB8ICAgOSArLQogc3JjL3h0ZXJtLmMgICAgICAgIHwgICA0ICst CiAzOCBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0aW9ucygrKSwgOTEzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBhY2UxMDg1Mjg0 Li42YmEzYzc3ZjVlIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFj CkBAIC0yMjg0LDcgKzIyODQsNyBAQCBBQ19ERUZVTgogY2FzZSAiJG9wc3lzIiBpbgogICAjIyBk YXJ3aW4gbGQgaW5zaXN0cyBvbiB0aGUgdXNlIG9mIG1hbGxvYyByb3V0aW5lcyBpbiB0aGUgU3lz dGVtIGZyYW1ld29yay4KICAgZGFyd2luIHwgbWluZ3czMiB8IG5hY2wgfCBzb2xhcmlzKSA7Owot ICBjeWd3aW4gfCBxbnhudG8gfCBmcmVlYnNkKQorICBjeWd3aW4gfCBxbnhudG8gfCBmcmVlYnNk IHwgZ251LWxpbnV4ICkKIAkgIGh5YnJpZF9tYWxsb2M9eWVzCiAgICAgICAgICAgc3lzdGVtX21h bGxvYz0gOzsKICAgKikgdGVzdCAiJGFjX2N2X2Z1bmNfc2JyayIgPSB5ZXMgJiYgc3lzdGVtX21h bGxvYz0kZW1hY3NfY3Zfc2FuaXRpemVfYWRkcmVzczs7CmRpZmYgLS1naXQgYS9zcmMvTWFrZWZp bGUuaW4gYi9zcmMvTWFrZWZpbGUuaW4KaW5kZXggYzVmYjJlYTNhYi4uY2FiNWY2OWVmNyAxMDA2 NDQKLS0tIGEvc3JjL01ha2VmaWxlLmluCisrKyBiL3NyYy9NYWtlZmlsZS5pbgpAQCAtNDAyLDgg KzQwMiw2IEBAIC5jLm86CiAubS5vOgogCSQoQU1fVl9DQykkKENDKSAtYyAkKENQUEZMQUdTKSAk KEFMTF9PQkpDX0NGTEFHUykgJChQUk9GSUxJTkdfQ0ZMQUdTKSAkPAogCi0jIyBsYXN0ZmlsZSBt dXN0IGZvbGxvdyBhbGwgZmlsZXMgd2hvc2UgaW5pdGlhbGl6ZWQgZGF0YSBhcmVhcyBzaG91bGQK LSMjIGJlIGR1bXBlZCBhcyBwdXJlIGJ5IGR1bXAtZW1hY3MuCiBiYXNlX29iaiA9IGRpc3BuZXcu byBmcmFtZS5vIHNjcm9sbC5vIHhkaXNwLm8gbWVudS5vICQoWE1FTlVfT0JKKSB3aW5kb3cubyBc CiAJY2hhcnNldC5vIGNvZGluZy5vIGNhdGVnb3J5Lm8gY2NsLm8gY2hhcmFjdGVyLm8gY2hhcnRh Yi5vIGJpZGkubyBcCiAJJChDTV9PQkopIHRlcm0ubyB0ZXJtaW5hbC5vIHhmYWNlcy5vICQoWE9C SikgJChHVEtfT0JKKSAkKERCVVNfT0JKKSBcCmRpZmYgLS1naXQgYS9zcmMvYWxsb2MuYyBiL3Ny Yy9hbGxvYy5jCmluZGV4IGIxNmIyZjhiOTMuLjI2YTE1ZjFkMDggMTAwNjQ0Ci0tLSBhL3NyYy9h bGxvYy5jCisrKyBiL3NyYy9hbGxvYy5jCkBAIC0zNCw3ICszNCw2IEBAIENvcHlyaWdodCAoQykg MTk4NS0xOTg2LCAxOTg4LCAxOTkzLTE5OTUsIDE5OTctMjAyMCBGcmVlIFNvZnR3YXJlCiAjaW5j bHVkZSAiYmlnbnVtLmgiCiAjaW5jbHVkZSAiZGlzcGV4dGVybi5oIgogI2luY2x1ZGUgImludGVy dmFscy5oIgotI2luY2x1ZGUgInB1cmVzaXplLmgiCiAjaW5jbHVkZSAic2hlYXAuaCIKICNpbmNs dWRlICJzeXNzdGRpby5oIgogI2luY2x1ZGUgInN5c3RpbWUuaCIKQEAgLTMzMywzMyArMzMyLDYg QEAgI2RlZmluZSBISV9USFJFU0hPTEQgKEVNQUNTX0lOVF9NQVggLyAyKQogCiAjZGVmaW5lIFNQ QVJFX01FTU9SWSAoMSA8PCAxNCkKIAotLyogSW5pdGlhbGl6ZSBpdCB0byBhIG5vbnplcm8gdmFs dWUgdG8gZm9yY2UgaXQgaW50byBkYXRhIHNwYWNlCi0gICAocmF0aGVyIHRoYW4gYnNzIHNwYWNl KS4gIFRoYXQgd2F5IHVuZXhlYyB3aWxsIHJlbWFwIGl0IGludG8gdGV4dAotICAgc3BhY2UgKHB1 cmUpLCBvbiBzb21lIHN5c3RlbXMuICBXZSBoYXZlIG5vdCBpbXBsZW1lbnRlZCB0aGUKLSAgIHJl bWFwcGluZyBvbiBtb3JlIHJlY2VudCBzeXN0ZW1zIGJlY2F1c2UgdGhpcyBpcyBsZXNzIGltcG9y dGFudAotICAgbm93YWRheXMgdGhhbiBpbiB0aGUgZGF5cyBvZiBzbWFsbCBtZW1vcmllcyBhbmQg dGltZXNoYXJpbmcuICAqLwotCi1FTUFDU19JTlQgcHVyZVsoUFVSRVNJWkUgKyBzaXplb2YgKEVN QUNTX0lOVCkgLSAxKSAvIHNpemVvZiAoRU1BQ1NfSU5UKV0gPSB7MSx9OwotI2RlZmluZSBQVVJF QkVHIChjaGFyICopIHB1cmUKLQotLyogUG9pbnRlciB0byB0aGUgcHVyZSBhcmVhLCBhbmQgaXRz IHNpemUuICAqLwotCi1zdGF0aWMgY2hhciAqcHVyZWJlZzsKLXN0YXRpYyBwdHJkaWZmX3QgcHVy ZV9zaXplOwotCi0vKiBOdW1iZXIgb2YgYnl0ZXMgb2YgcHVyZSBzdG9yYWdlIHVzZWQgYmVmb3Jl IHB1cmUgc3RvcmFnZSBvdmVyZmxvd2VkLgotICAgSWYgdGhpcyBpcyBub24temVybywgdGhpcyBp bXBsaWVzIHRoYXQgYW4gb3ZlcmZsb3cgb2NjdXJyZWQuICAqLwotCi1zdGF0aWMgcHRyZGlmZl90 IHB1cmVfYnl0ZXNfdXNlZF9iZWZvcmVfb3ZlcmZsb3c7Ci0KLS8qIEluZGV4IGluIHB1cmUgYXQg d2hpY2ggbmV4dCBwdXJlIExpc3Agb2JqZWN0IHdpbGwgYmUgYWxsb2NhdGVkLi4gICovCi0KLXN0 YXRpYyBwdHJkaWZmX3QgcHVyZV9ieXRlc191c2VkX2xpc3A7Ci0KLS8qIE51bWJlciBvZiBieXRl cyBhbGxvY2F0ZWQgZm9yIG5vbi1MaXNwIG9iamVjdHMgaW4gcHVyZSBzdG9yYWdlLiAgKi8KLQot c3RhdGljIHB0cmRpZmZfdCBwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3A7Ci0KIC8qIElmIHBvc2l0 aXZlLCBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgaW5oaWJpdGVkLiAgT3RoZXJ3aXNlLCB6ZXJvLiAg Ki8KIAogc3RhdGljIGludHB0cl90IGdhcmJhZ2VfY29sbGVjdGlvbl9pbmhpYml0ZWQ7CkBAIC00 MzQsNyArNDA2LDYgQEAgbm9fc2FuaXRpemVfbWVtY3B5ICh2b2lkICpkZXN0LCB2b2lkIGNvbnN0 ICpzcmMsIHNpemVfdCBzaXplKQogc3RhdGljIHZvaWQgdW5jaGFpbl9maW5hbGl6ZXIgKHN0cnVj dCBMaXNwX0ZpbmFsaXplciAqKTsKIHN0YXRpYyB2b2lkIG1hcmtfdGVybWluYWxzICh2b2lkKTsK IHN0YXRpYyB2b2lkIGdjX3N3ZWVwICh2b2lkKTsKLXN0YXRpYyBMaXNwX09iamVjdCBtYWtlX3B1 cmVfdmVjdG9yIChwdHJkaWZmX3QpOwogc3RhdGljIHZvaWQgbWFya19idWZmZXIgKHN0cnVjdCBi dWZmZXIgKik7CiAKICNpZiAhZGVmaW5lZCBSRUxfQUxMT0MgfHwgZGVmaW5lZCBTWVNURU1fTUFM TE9DIHx8IGRlZmluZWQgSFlCUklEX01BTExPQwpAQCAtNTc2LDE2ICs1NDcsNiBAQCAjZGVmaW5l IE1FTV9OSUwgJm1lbV96CiAKIGludCBzdGF0aWNpZHg7CiAKLXN0YXRpYyB2b2lkICpwdXJlX2Fs bG9jIChzaXplX3QsIGludCk7Ci0KLS8qIFJldHVybiBQVFIgcm91bmRlZCB1cCB0byB0aGUgbmV4 dCBtdWx0aXBsZSBvZiBBTElHTk1FTlQuICAqLwotCi1zdGF0aWMgdm9pZCAqCi1wb2ludGVyX2Fs aWduICh2b2lkICpwdHIsIGludCBhbGlnbm1lbnQpCi17Ci0gIHJldHVybiAodm9pZCAqKSBST1VO RFVQICgodWludHB0cl90KSBwdHIsIGFsaWdubWVudCk7Ci19Ci0KIC8qIEV4dHJhY3QgdGhlIHBv aW50ZXIgaGlkZGVuIHdpdGhpbiBPLiAgKi8KIAogc3RhdGljIEFUVFJJQlVURV9OT19TQU5JVEla RV9VTkRFRklORUQgdm9pZCAqCkBAIC0xMDcxLDYgKzEwMzIsMTUgQEAgdmVyaWZ5IChQT1dFUl9P Rl8yIChCTE9DS19BTElHTikpOwogIyBlbGlmICFkZWZpbmVkIEhZQlJJRF9NQUxMT0MgJiYgZGVm aW5lZCBIQVZFX1BPU0lYX01FTUFMSUdOCiAjICBkZWZpbmUgVVNFX0FMSUdORURfQUxMT0MgMQog IyAgZGVmaW5lIGFsaWduZWRfYWxsb2MgbXlfYWxpZ25lZF9hbGxvYyAvKiBBdm9pZCBjb2xsaXNp b24gd2l0aCBsaXNwLmguICAqLworCisvKiBSZXR1cm4gUFRSIHJvdW5kZWQgdXAgdG8gdGhlIG5l eHQgbXVsdGlwbGUgb2YgQUxJR05NRU5ULiAgKi8KKworc3RhdGljIHZvaWQgKgorcG9pbnRlcl9h bGlnbiAodm9pZCAqcHRyLCBpbnQgYWxpZ25tZW50KQoreworICByZXR1cm4gKHZvaWQgKikgUk9V TkRVUCAoKHVpbnRwdHJfdCkgcHRyLCBhbGlnbm1lbnQpOworfQorCiBzdGF0aWMgdm9pZCAqCiBh bGlnbmVkX2FsbG9jIChzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKQEAgLTE2NzUs OSArMTY0NSw5IEBAICNkZWZpbmUgR0NfU1RSSU5HX0VYVFJBIEdDX1NUUklOR19PVkVSUlVOX0NP T0tJRV9TSVpFCiBzdGF0aWMgdm9pZAogaW5pdF9zdHJpbmdzICh2b2lkKQogewotICBlbXB0eV91 bmlieXRlX3N0cmluZyA9IG1ha2VfcHVyZV9zdHJpbmcgKCIiLCAwLCAwLCAwKTsKKyAgZW1wdHlf dW5pYnl0ZV9zdHJpbmcgPSBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKCIiLCAwLCAwLCBmYWxzZSk7 CiAgIHN0YXRpY3BybyAoJmVtcHR5X3VuaWJ5dGVfc3RyaW5nKTsKLSAgZW1wdHlfbXVsdGlieXRl X3N0cmluZyA9IG1ha2VfcHVyZV9zdHJpbmcgKCIiLCAwLCAwLCAxKTsKKyAgZW1wdHlfbXVsdGli eXRlX3N0cmluZyA9IG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAoIiIsIDAsIDAsIHRydWUpOwogICBz dGF0aWNwcm8gKCZlbXB0eV9tdWx0aWJ5dGVfc3RyaW5nKTsKIH0KIApAQCAtMTY5NSw3ICsxNjY1 LDcgQEAgc3RyaW5nX2J5dGVzIChzdHJ1Y3QgTGlzcF9TdHJpbmcgKnMpCiAgIHB0cmRpZmZfdCBu Ynl0ZXMgPQogICAgIChzLT51LnMuc2l6ZV9ieXRlIDwgMCA/IHMtPnUucy5zaXplICYgfkFSUkFZ X01BUktfRkxBRyA6IHMtPnUucy5zaXplX2J5dGUpOwogCi0gIGlmICghUFVSRV9QIChzKSAmJiAh cGR1bXBlcl9vYmplY3RfcCAocykgJiYgcy0+dS5zLmRhdGEKKyAgaWYgKCFwZHVtcGVyX29iamVj dF9wIChzKSAmJiBzLT51LnMuZGF0YQogICAgICAgJiYgbmJ5dGVzICE9IFNEQVRBX05CWVRFUyAo U0RBVEFfT0ZfU1RSSU5HIChzKSkpCiAgICAgZW1hY3NfYWJvcnQgKCk7CiAgIHJldHVybiBuYnl0 ZXM7CkBAIC0yNDExLDcgKzIzODEsNyBAQCBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKGNvbnN0IGNo YXIgKmNvbnRlbnRzLAogewogICBMaXNwX09iamVjdCB2YWw7CiAKLSAgaWYgKG5jaGFycyA8IDAp CisgIGlmIChuY2hhcnMgPD0gMCkKICAgICB7CiAgICAgICBpZiAobXVsdGlieXRlKQogCW5jaGFy cyA9IG11bHRpYnl0ZV9jaGFyc19pbl90ZXh0ICgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjb250 ZW50cywKQEAgLTI0NjUsOCArMjQzNSw2IEBAIG1ha2VfY2xlYXJfbXVsdGlieXRlX3N0cmluZyAo RU1BQ1NfSU5UIG5jaGFycywgRU1BQ1NfSU5UIG5ieXRlcywgYm9vbCBjbGVhcml0KQogCiAgIGlm IChuY2hhcnMgPCAwKQogICAgIGVtYWNzX2Fib3J0ICgpOwotICBpZiAoIW5ieXRlcykKLSAgICBy ZXR1cm4gZW1wdHlfbXVsdGlieXRlX3N0cmluZzsKIAogICBzID0gYWxsb2NhdGVfc3RyaW5nICgp OwogICBzLT51LnMuaW50ZXJ2YWxzID0gTlVMTDsKQEAgLTI3NDcsMTcgKzI3MTUsMTYgQEAgbGlz dDUgKExpc3BfT2JqZWN0IGFyZzEsIExpc3BfT2JqZWN0IGFyZzIsIExpc3BfT2JqZWN0IGFyZzMs IExpc3BfT2JqZWN0IGFyZzQsCiB9CiAKIC8qIE1ha2UgYSBsaXN0IG9mIENPVU5UIExpc3BfT2Jq ZWN0cywgd2hlcmUgQVJHIGlzIHRoZSBmaXJzdCBvbmUuCi0gICBVc2UgQ09OUyB0byBjb25zdHJ1 Y3QgdGhlIHBhaXJzLiAgQVAgaGFzIGFueSByZW1haW5pbmcgYXJncy4gICovCisgICBBUCBoYXMg YW55IHJlbWFpbmluZyBhcmdzLiAgKi8KIHN0YXRpYyBMaXNwX09iamVjdAotY29uc19saXN0biAo cHRyZGlmZl90IGNvdW50LCBMaXNwX09iamVjdCBhcmcsCi0JICAgIExpc3BfT2JqZWN0ICgqY29u cykgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCksIHZhX2xpc3QgYXApCitjb25zX2xpc3RuIChw dHJkaWZmX3QgY291bnQsIExpc3BfT2JqZWN0IGFyZywgdmFfbGlzdCBhcCkKIHsKICAgZWFzc3Vt ZSAoMCA8IGNvdW50KTsKLSAgTGlzcF9PYmplY3QgdmFsID0gY29ucyAoYXJnLCBRbmlsKTsKKyAg TGlzcF9PYmplY3QgdmFsID0gRmNvbnMgKGFyZywgUW5pbCk7CiAgIExpc3BfT2JqZWN0IHRhaWwg PSB2YWw7CiAgIGZvciAocHRyZGlmZl90IGkgPSAxOyBpIDwgY291bnQ7IGkrKykKICAgICB7Ci0g ICAgICBMaXNwX09iamVjdCBlbGVtID0gY29ucyAodmFfYXJnIChhcCwgTGlzcF9PYmplY3QpLCBR bmlsKTsKKyAgICAgIExpc3BfT2JqZWN0IGVsZW0gPSBGY29ucyAodmFfYXJnIChhcCwgTGlzcF9P YmplY3QpLCBRbmlsKTsKICAgICAgIFhTRVRDRFIgKHRhaWwsIGVsZW0pOwogICAgICAgdGFpbCA9 IGVsZW07CiAgICAgfQpAQCAtMjc3MCwxOCArMjczNyw3IEBAIGxpc3RuIChwdHJkaWZmX3QgY291 bnQsIExpc3BfT2JqZWN0IGFyZzEsIC4uLikKIHsKICAgdmFfbGlzdCBhcDsKICAgdmFfc3RhcnQg KGFwLCBhcmcxKTsKLSAgTGlzcF9PYmplY3QgdmFsID0gY29uc19saXN0biAoY291bnQsIGFyZzEs IEZjb25zLCBhcCk7Ci0gIHZhX2VuZCAoYXApOwotICByZXR1cm4gdmFsOwotfQotCi0vKiBNYWtl IGEgcHVyZSBsaXN0IG9mIENPVU5UIExpc3BfT2JqZWN0cywgd2hlcmUgQVJHMSBpcyB0aGUgZmly c3Qgb25lLiAgKi8KLUxpc3BfT2JqZWN0Ci1wdXJlX2xpc3RuIChwdHJkaWZmX3QgY291bnQsIExp c3BfT2JqZWN0IGFyZzEsIC4uLikKLXsKLSAgdmFfbGlzdCBhcDsKLSAgdmFfc3RhcnQgKGFwLCBh cmcxKTsKLSAgTGlzcF9PYmplY3QgdmFsID0gY29uc19saXN0biAoY291bnQsIGFyZzEsIHB1cmVf Y29ucywgYXApOworICBMaXNwX09iamVjdCB2YWwgPSBjb25zX2xpc3RuIChjb3VudCwgYXJnMSwg YXApOwogICB2YV9lbmQgKGFwKTsKICAgcmV0dXJuIHZhbDsKIH0KQEAgLTI5NDcsNyArMjkwMyw3 IEBAIGxhcmdlX3ZlY3Rvcl92ZWMgKHN0cnVjdCBsYXJnZV92ZWN0b3IgKnApCiAKIHN0YXRpYyBz dHJ1Y3QgbGFyZ2VfdmVjdG9yICpsYXJnZV92ZWN0b3JzOwogCi0vKiBUaGUgb25seSB2ZWN0b3Ig d2l0aCAwIHNsb3RzLCBhbGxvY2F0ZWQgZnJvbSBwdXJlIHNwYWNlLiAgKi8KKy8qIFRoZSBvbmx5 IHZlY3RvciB3aXRoIDAgc2xvdHMuICAqLwogCiBMaXNwX09iamVjdCB6ZXJvX3ZlY3RvcjsKIApA QCAtMjk4MywxNSArMjkzOSw2IEBAIGFsbG9jYXRlX3ZlY3Rvcl9ibG9jayAodm9pZCkKICAgcmV0 dXJuIGJsb2NrOwogfQogCi0vKiBDYWxsZWQgb25jZSB0byBpbml0aWFsaXplIHZlY3RvciBhbGxv Y2F0aW9uLiAgKi8KLQotc3RhdGljIHZvaWQKLWluaXRfdmVjdG9ycyAodm9pZCkKLXsKLSAgemVy b192ZWN0b3IgPSBtYWtlX3B1cmVfdmVjdG9yICgwKTsKLSAgc3RhdGljcHJvICgmemVyb192ZWN0 b3IpOwotfQotCiAvKiBBbGxvY2F0ZSB2ZWN0b3IgZnJvbSBhIHZlY3RvciBibG9jay4gICovCiAK IHN0YXRpYyBzdHJ1Y3QgTGlzcF9WZWN0b3IgKgpAQCAtMzI2NCw3ICszMjExLDcgQEAgI2RlZmlu ZSBWRUNUT1JfRUxUU19NQVggXAogc3RhdGljIHN0cnVjdCBMaXNwX1ZlY3RvciAqCiBhbGxvY2F0 ZV92ZWN0b3JsaWtlIChwdHJkaWZmX3QgbGVuLCBib29sIGNsZWFyaXQpCiB7Ci0gIGVhc3NlcnQg KDAgPCBsZW4gJiYgbGVuIDw9IFZFQ1RPUl9FTFRTX01BWCk7CisgIGVhc3NlcnQgKDAgPD0gbGVu ICYmIGxlbiA8PSBWRUNUT1JfRUxUU19NQVgpOwogICBwdHJkaWZmX3QgbmJ5dGVzID0gaGVhZGVy X3NpemUgKyBsZW4gKiB3b3JkX3NpemU7CiAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqcDsKIApAQCAt MzMzOSw2ICszMjg2LDE3IEBAIGFsbG9jYXRlX25pbF92ZWN0b3IgKHB0cmRpZmZfdCBsZW4pCiB9 CiAKIAorLyogQ2FsbGVkIG9uY2UgdG8gaW5pdGlhbGl6ZSB2ZWN0b3IgYWxsb2NhdGlvbi4gICov CisKK3N0YXRpYyB2b2lkCitpbml0X3ZlY3RvcnMgKHZvaWQpCit7CisgIHplcm9fdmVjdG9yID0K KyAgICBtYWtlX2xpc3BfcHRyIChhbGxvY2F0ZV92ZWN0b3JsaWtlICgwLCB0cnVlKSwgTGlzcF9W ZWN0b3JsaWtlKTsKKyAgWFZFQ1RPUiAoemVyb192ZWN0b3IpLT5oZWFkZXIuc2l6ZSA9IDA7Cisg IHN0YXRpY3BybyAoJnplcm9fdmVjdG9yKTsKK30KKwogLyogQWxsb2NhdGUgb3RoZXIgdmVjdG9y LWxpa2Ugc3RydWN0dXJlcy4gICovCiAKIHN0cnVjdCBMaXNwX1ZlY3RvciAqCkBAIC0zNTE5LDEz ICszNDc3LDYgQEAgI2RlZmluZSBTWU1CT0xfQkxPQ0tfU0laRSBcCiAKIHN0YXRpYyBzdHJ1Y3Qg c3ltYm9sX2Jsb2NrICpzeW1ib2xfYmxvY2s7CiBzdGF0aWMgaW50IHN5bWJvbF9ibG9ja19pbmRl eCA9IFNZTUJPTF9CTE9DS19TSVpFOwotLyogUG9pbnRlciB0byB0aGUgZmlyc3Qgc3ltYm9sX2Js b2NrIHRoYXQgY29udGFpbnMgcGlubmVkIHN5bWJvbHMuCi0gICBUZXN0cyBmb3IgMjQuNCBzaG93 ZWQgdGhhdCBhdCBkdW1wLXRpbWUsIEVtYWNzIGNvbnRhaW5zIGFib3V0IDE1SyBzeW1ib2xzLAot ICAgMTBLIG9mIHdoaWNoIGFyZSBwaW5uZWQgKGFuZCBhbGwgYnV0IDI1MCBvZiB0aGVtIGFyZSBp bnRlcm5lZCBpbiBvYmFycmF5KSwKLSAgIHdoZXJlYXMgYSAidHlwaWNhbCBzZXNzaW9uIiBoYXMg aW4gdGhlIG9yZGVyIG9mIDMwSyBzeW1ib2xzLgotICAgYHN5bWJvbF9ibG9ja19waW5uZWQnIGxl dHMgbWFya19waW5uZWRfc3ltYm9scyBzY2FuIG9ubHkgMTVLIHN5bWJvbHMgcmF0aGVyCi0gICB0 aGFuIDMwSyB0byBmaW5kIHRoZSAxMEsgc3ltYm9scyB3ZSBuZWVkIHRvIG1hcmsuICAqLwotc3Rh dGljIHN0cnVjdCBzeW1ib2xfYmxvY2sgKnN5bWJvbF9ibG9ja19waW5uZWQ7CiAKIC8qIExpc3Qg b2YgZnJlZSBzeW1ib2xzLiAgKi8KIApAQCAtMzU1MSw3ICszNTAyLDYgQEAgaW5pdF9zeW1ib2wg KExpc3BfT2JqZWN0IHZhbCwgTGlzcF9PYmplY3QgbmFtZSkKICAgcC0+dS5zLmludGVybmVkID0g U1lNQk9MX1VOSU5URVJORUQ7CiAgIHAtPnUucy50cmFwcGVkX3dyaXRlID0gU1lNQk9MX1VOVFJB UFBFRF9XUklURTsKICAgcC0+dS5zLmRlY2xhcmVkX3NwZWNpYWwgPSBmYWxzZTsKLSAgcC0+dS5z LnBpbm5lZCA9IGZhbHNlOwogfQogCiBERUZVTiAoIm1ha2Utc3ltYm9sIiwgRm1ha2Vfc3ltYm9s LCBTbWFrZV9zeW1ib2wsIDEsIDEsIDAsCkBAIC01MTI5LDggKzUwNzksNiBAQCB2YWxpZF9saXNw X29iamVjdF9wIChMaXNwX09iamVjdCBvYmopCiAgICAgcmV0dXJuIDE7CiAKICAgdm9pZCAqcCA9 IFhQTlRSIChvYmopOwotICBpZiAoUFVSRV9QIChwKSkKLSAgICByZXR1cm4gMTsKIAogICBpZiAo U1lNQk9MUCAob2JqKSAmJiBjX3N5bWJvbF9wIChwKSkKICAgICByZXR1cm4gKChjaGFyICopIHAg LSAoY2hhciAqKSBsaXNwc3ltKSAlIHNpemVvZiBsaXNwc3ltWzBdID09IDA7CkBAIC01MTg2LDI5 NiArNTEzNCw4IEBAIHZhbGlkX2xpc3Bfb2JqZWN0X3AgKExpc3BfT2JqZWN0IG9iaikKICAgcmV0 dXJuIDA7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCQkgICAgICAgUHVyZSBTdG9yYWdlIE1hbmFn ZW1lbnQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogQWxsb2NhdGUgcm9vbSBmb3IgU0laRSBieXRl cyBmcm9tIHB1cmUgTGlzcCBzdG9yYWdlIGFuZCByZXR1cm4gYQotICAgcG9pbnRlciB0byBpdC4g IFRZUEUgaXMgdGhlIExpc3AgdHlwZSBmb3Igd2hpY2ggdGhlIG1lbW9yeSBpcwotICAgYWxsb2Nh dGVkLiAgVFlQRSA8IDAgbWVhbnMgaXQncyBub3QgdXNlZCBmb3IgYSBMaXNwIG9iamVjdCwKLSAg IGFuZCB0aGF0IHRoZSByZXN1bHQgc2hvdWxkIGhhdmUgYW4gYWxpZ25tZW50IG9mIC1UWVBFLgot Ci0gICBUaGUgYnl0ZXMgYXJlIGluaXRpYWxseSB6ZXJvLgotCi0gICBJZiBwdXJlIHNwYWNlIGlz IGV4aGF1c3RlZCwgYWxsb2NhdGUgc3BhY2UgZnJvbSB0aGUgaGVhcC4gIFRoaXMgaXMKLSAgIG1l cmVseSBhbiBleHBlZGllbnQgdG8gbGV0IEVtYWNzIHdhcm4gdGhhdCBwdXJlIHNwYWNlIHdhcyBl eGhhdXN0ZWQKLSAgIGFuZCB0aGF0IEVtYWNzIHNob3VsZCBiZSByZWJ1aWx0IHdpdGggYSBsYXJn ZXIgcHVyZSBzcGFjZS4gICovCi0KLXN0YXRpYyB2b2lkICoKLXB1cmVfYWxsb2MgKHNpemVfdCBz aXplLCBpbnQgdHlwZSkKLXsKLSAgdm9pZCAqcmVzdWx0OwotCi0gYWdhaW46Ci0gIGlmICh0eXBl ID49IDApCi0gICAgewotICAgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIGEgTGlzcCBvYmplY3Qg ZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmcmVlCi0JIHNwYWNlIHdpdGggdGFraW5nIGFjY291 bnQgb2YgYWxpZ25tZW50LiAgKi8KLSAgICAgIHJlc3VsdCA9IHBvaW50ZXJfYWxpZ24gKHB1cmVi ZWcgKyBwdXJlX2J5dGVzX3VzZWRfbGlzcCwgTElTUF9BTElHTk1FTlQpOwotICAgICAgcHVyZV9i eXRlc191c2VkX2xpc3AgPSAoKGNoYXIgKilyZXN1bHQgLSAoY2hhciAqKXB1cmViZWcpICsgc2l6 ZTsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICAvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgYSBu b24tTGlzcCBvYmplY3QgZnJvbSB0aGUgZW5kIG9mIHRoZSBmcmVlCi0JIHNwYWNlLiAgKi8KLSAg ICAgIHB0cmRpZmZfdCB1bmFsaWduZWRfbm9uX2xpc3AgPSBwdXJlX2J5dGVzX3VzZWRfbm9uX2xp c3AgKyBzaXplOwotICAgICAgY2hhciAqdW5hbGlnbmVkID0gcHVyZWJlZyArIHB1cmVfc2l6ZSAt IHVuYWxpZ25lZF9ub25fbGlzcDsKLSAgICAgIGludCBkZWNyID0gKGludHB0cl90KSB1bmFsaWdu ZWQgJiAoLTEgLSB0eXBlKTsKLSAgICAgIHB1cmVfYnl0ZXNfdXNlZF9ub25fbGlzcCA9IHVuYWxp Z25lZF9ub25fbGlzcCArIGRlY3I7Ci0gICAgICByZXN1bHQgPSB1bmFsaWduZWQgLSBkZWNyOwot ICAgIH0KLSAgcHVyZV9ieXRlc191c2VkID0gcHVyZV9ieXRlc191c2VkX2xpc3AgKyBwdXJlX2J5 dGVzX3VzZWRfbm9uX2xpc3A7Ci0KLSAgaWYgKHB1cmVfYnl0ZXNfdXNlZCA8PSBwdXJlX3NpemUp Ci0gICAgcmV0dXJuIHJlc3VsdDsKLQotICAvKiBEb24ndCBhbGxvY2F0ZSBhIGxhcmdlIGFtb3Vu dCBoZXJlLAotICAgICBiZWNhdXNlIGl0IG1pZ2h0IGdldCBtbWFwJ2QgYW5kIHRoZW4gaXRzIGFk ZHJlc3MKLSAgICAgbWlnaHQgbm90IGJlIHVzYWJsZS4gICovCi0gIGludCBzbWFsbF9hbW91bnQg PSAxMDAwMDsKLSAgZWFzc2VydCAoc2l6ZSA8PSBzbWFsbF9hbW91bnQgLSBMSVNQX0FMSUdOTUVO VCk7Ci0gIHB1cmViZWcgPSB4emFsbG9jIChzbWFsbF9hbW91bnQpOwotICBwdXJlX3NpemUgPSBz bWFsbF9hbW91bnQ7Ci0gIHB1cmVfYnl0ZXNfdXNlZF9iZWZvcmVfb3ZlcmZsb3cgKz0gcHVyZV9i eXRlc191c2VkIC0gc2l6ZTsKLSAgcHVyZV9ieXRlc191c2VkID0gMDsKLSAgcHVyZV9ieXRlc191 c2VkX2xpc3AgPSBwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3AgPSAwOwotCi0gIC8qIENhbid0IEdD IGlmIHB1cmUgc3RvcmFnZSBvdmVyZmxvd2VkIGJlY2F1c2Ugd2UgY2FuJ3QgZGV0ZXJtaW5lCi0g ICAgIGlmIHNvbWV0aGluZyBpcyBhIHB1cmUgb2JqZWN0IG9yIG5vdC4gICovCi0gIGdhcmJhZ2Vf Y29sbGVjdGlvbl9pbmhpYml0ZWQrKzsKLSAgZ290byBhZ2FpbjsKLX0KLQotCi0jaWZkZWYgSEFW RV9VTkVYRUMKLQotLyogUHJpbnQgYSB3YXJuaW5nIGlmIFBVUkVTSVpFIGlzIHRvbyBzbWFsbC4g ICovCi0KLXZvaWQKLWNoZWNrX3B1cmVfc2l6ZSAodm9pZCkKLXsKLSAgaWYgKHB1cmVfYnl0ZXNf dXNlZF9iZWZvcmVfb3ZlcmZsb3cpCi0gICAgbWVzc2FnZSAoKCJlbWFjczowOlB1cmUgTGlzcCBz dG9yYWdlIG92ZXJmbG93IChhcHByb3guICUicEkiZCIKLQkgICAgICAiIGJ5dGVzIG5lZWRlZCki KSwKLQkgICAgIHB1cmVfYnl0ZXNfdXNlZCArIHB1cmVfYnl0ZXNfdXNlZF9iZWZvcmVfb3ZlcmZs b3cpOwotfQotI2VuZGlmCi0KLQotLyogRmluZCB0aGUgYnl0ZSBzZXF1ZW5jZSB7REFUQVswXSwg Li4uLCBEQVRBW05CWVRFUy0xXSwgJ1wwJ30gZnJvbQotICAgdGhlIG5vbi1MaXNwIGRhdGEgcG9v bCBvZiB0aGUgcHVyZSBzdG9yYWdlLCBhbmQgcmV0dXJuIGl0cyBzdGFydAotICAgYWRkcmVzcy4g IFJldHVybiBOVUxMIGlmIG5vdCBmb3VuZC4gICovCi0KLXN0YXRpYyBjaGFyICoKLWZpbmRfc3Ry aW5nX2RhdGFfaW5fcHVyZSAoY29uc3QgY2hhciAqZGF0YSwgcHRyZGlmZl90IG5ieXRlcykKLXsK LSAgaW50IGk7Ci0gIHB0cmRpZmZfdCBza2lwLCBibV9za2lwWzI1Nl0sIGxhc3RfY2hhcl9za2lw LCBpbmZpbml0eSwgc3RhcnQsIHN0YXJ0X21heDsKLSAgY29uc3QgdW5zaWduZWQgY2hhciAqcDsK LSAgY2hhciAqbm9uX2xpc3BfYmVnOwotCi0gIGlmIChwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3Ag PD0gbmJ5dGVzKQotICAgIHJldHVybiBOVUxMOwotCi0gIC8qIFNldCB1cCB0aGUgQm95ZXItTW9v cmUgdGFibGUuICAqLwotICBza2lwID0gbmJ5dGVzICsgMTsKLSAgZm9yIChpID0gMDsgaSA8IDI1 NjsgaSsrKQotICAgIGJtX3NraXBbaV0gPSBza2lwOwotCi0gIHAgPSAoY29uc3QgdW5zaWduZWQg Y2hhciAqKSBkYXRhOwotICB3aGlsZSAoLS1za2lwID4gMCkKLSAgICBibV9za2lwWypwKytdID0g c2tpcDsKLQotICBsYXN0X2NoYXJfc2tpcCA9IGJtX3NraXBbJ1wwJ107Ci0KLSAgbm9uX2xpc3Bf YmVnID0gcHVyZWJlZyArIHB1cmVfc2l6ZSAtIHB1cmVfYnl0ZXNfdXNlZF9ub25fbGlzcDsKLSAg c3RhcnRfbWF4ID0gcHVyZV9ieXRlc191c2VkX25vbl9saXNwIC0gKG5ieXRlcyArIDEpOwotCi0g IC8qIFNlZSB0aGUgY29tbWVudHMgaW4gdGhlIGZ1bmN0aW9uIGBib3llcl9tb29yZScgKHNlYXJj aC5jKSBmb3IgdGhlCi0gICAgIHVzZSBvZiBgaW5maW5pdHknLiAgKi8KLSAgaW5maW5pdHkgPSBw dXJlX2J5dGVzX3VzZWRfbm9uX2xpc3AgKyAxOwotICBibV9za2lwWydcMCddID0gaW5maW5pdHk7 Ci0KLSAgcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG5vbl9saXNwX2JlZyArIG5ieXRlczsK LSAgc3RhcnQgPSAwOwotICBkbwotICAgIHsKLSAgICAgIC8qIENoZWNrIHRoZSBsYXN0IGNoYXJh Y3RlciAoPT0gJ1wwJykuICAqLwotICAgICAgZG8KLQl7Ci0JICBzdGFydCArPSBibV9za2lwWyoo cCArIHN0YXJ0KV07Ci0JfQotICAgICAgd2hpbGUgKHN0YXJ0IDw9IHN0YXJ0X21heCk7Ci0KLSAg ICAgIGlmIChzdGFydCA8IGluZmluaXR5KQotCS8qIENvdWxkbid0IGZpbmQgdGhlIGxhc3QgY2hh cmFjdGVyLiAgKi8KLQlyZXR1cm4gTlVMTDsKLQotICAgICAgLyogTm8gbGVzcyB0aGFuIGBpbmZp bml0eScgbWVhbnMgd2UgY291bGQgZmluZCB0aGUgbGFzdAotCSBjaGFyYWN0ZXIgYXQgYHBbc3Rh cnQgLSBpbmZpbml0eV0nLiAgKi8KLSAgICAgIHN0YXJ0IC09IGluZmluaXR5OwotCi0gICAgICAv KiBDaGVjayB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMuICAqLwotICAgICAgaWYgKG1lbWNtcCAo ZGF0YSwgbm9uX2xpc3BfYmVnICsgc3RhcnQsIG5ieXRlcykgPT0gMCkKLQkvKiBGb3VuZC4gICov Ci0JcmV0dXJuIG5vbl9saXNwX2JlZyArIHN0YXJ0OwotCi0gICAgICBzdGFydCArPSBsYXN0X2No YXJfc2tpcDsKLSAgICB9Ci0gIHdoaWxlIChzdGFydCA8PSBzdGFydF9tYXgpOwotCi0gIHJldHVy biBOVUxMOwotfQotCi0KLS8qIFJldHVybiBhIHN0cmluZyBhbGxvY2F0ZWQgaW4gcHVyZSBzcGFj ZS4gIERBVEEgaXMgYSBidWZmZXIgaG9sZGluZwotICAgTkNIQVJTIGNoYXJhY3RlcnMsIGFuZCBO QllURVMgYnl0ZXMgb2Ygc3RyaW5nIGRhdGEuICBNVUxUSUJZVEUKLSAgIG1lYW5zIG1ha2UgdGhl IHJlc3VsdCBzdHJpbmcgbXVsdGlieXRlLgotCi0gICBNdXN0IGdldCBhbiBlcnJvciBpZiBwdXJl IHN0b3JhZ2UgaXMgZnVsbCwgc2luY2UgaWYgaXQgY2Fubm90IGhvbGQKLSAgIGEgbGFyZ2Ugc3Ry aW5nIGl0IG1heSBiZSBhYmxlIHRvIGhvbGQgY29uc2VzIHRoYXQgcG9pbnQgdG8gdGhhdAotICAg c3RyaW5nOyB0aGVuIHRoZSBzdHJpbmcgaXMgbm90IHByb3RlY3RlZCBmcm9tIGdjLiAgKi8KLQot TGlzcF9PYmplY3QKLW1ha2VfcHVyZV9zdHJpbmcgKGNvbnN0IGNoYXIgKmRhdGEsCi0JCSAgcHRy ZGlmZl90IG5jaGFycywgcHRyZGlmZl90IG5ieXRlcywgYm9vbCBtdWx0aWJ5dGUpCi17Ci0gIExp c3BfT2JqZWN0IHN0cmluZzsKLSAgc3RydWN0IExpc3BfU3RyaW5nICpzID0gcHVyZV9hbGxvYyAo c2l6ZW9mICpzLCBMaXNwX1N0cmluZyk7Ci0gIHMtPnUucy5kYXRhID0gKHVuc2lnbmVkIGNoYXIg KikgZmluZF9zdHJpbmdfZGF0YV9pbl9wdXJlIChkYXRhLCBuYnl0ZXMpOwotICBpZiAocy0+dS5z LmRhdGEgPT0gTlVMTCkKLSAgICB7Ci0gICAgICBzLT51LnMuZGF0YSA9IHB1cmVfYWxsb2MgKG5i eXRlcyArIDEsIC0xKTsKLSAgICAgIG1lbWNweSAocy0+dS5zLmRhdGEsIGRhdGEsIG5ieXRlcyk7 Ci0gICAgICBzLT51LnMuZGF0YVtuYnl0ZXNdID0gJ1wwJzsKLSAgICB9Ci0gIHMtPnUucy5zaXpl ID0gbmNoYXJzOwotICBzLT51LnMuc2l6ZV9ieXRlID0gbXVsdGlieXRlID8gbmJ5dGVzIDogLTE7 Ci0gIHMtPnUucy5pbnRlcnZhbHMgPSBOVUxMOwotICBYU0VUU1RSSU5HIChzdHJpbmcsIHMpOwot ICByZXR1cm4gc3RyaW5nOwotfQotCi0vKiBSZXR1cm4gYSBzdHJpbmcgYWxsb2NhdGVkIGluIHB1 cmUgc3BhY2UuICBEbyBub3QKLSAgIGFsbG9jYXRlIHRoZSBzdHJpbmcgZGF0YSwganVzdCBwb2lu dCB0byBEQVRBLiAgKi8KLQotTGlzcF9PYmplY3QKLW1ha2VfcHVyZV9jX3N0cmluZyAoY29uc3Qg Y2hhciAqZGF0YSwgcHRyZGlmZl90IG5jaGFycykKLXsKLSAgTGlzcF9PYmplY3Qgc3RyaW5nOwot ICBzdHJ1Y3QgTGlzcF9TdHJpbmcgKnMgPSBwdXJlX2FsbG9jIChzaXplb2YgKnMsIExpc3BfU3Ry aW5nKTsKLSAgcy0+dS5zLnNpemUgPSBuY2hhcnM7Ci0gIHMtPnUucy5zaXplX2J5dGUgPSAtMjsK LSAgcy0+dS5zLmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBkYXRhOwotICBzLT51LnMuaW50ZXJ2 YWxzID0gTlVMTDsKLSAgWFNFVFNUUklORyAoc3RyaW5nLCBzKTsKLSAgcmV0dXJuIHN0cmluZzsK LX0KLQotc3RhdGljIExpc3BfT2JqZWN0IHB1cmVjb3B5IChMaXNwX09iamVjdCBvYmopOwotCi0v KiBSZXR1cm4gYSBjb25zIGFsbG9jYXRlZCBmcm9tIHB1cmUgc3BhY2UuICBHaXZlIGl0IHB1cmUg Y29waWVzCi0gICBvZiBDQVIgYXMgY2FyIGFuZCBDRFIgYXMgY2RyLiAgKi8KLQotTGlzcF9PYmpl Y3QKLXB1cmVfY29ucyAoTGlzcF9PYmplY3QgY2FyLCBMaXNwX09iamVjdCBjZHIpCi17Ci0gIExp c3BfT2JqZWN0IG5ldzsKLSAgc3RydWN0IExpc3BfQ29ucyAqcCA9IHB1cmVfYWxsb2MgKHNpemVv ZiAqcCwgTGlzcF9Db25zKTsKLSAgWFNFVENPTlMgKG5ldywgcCk7Ci0gIFhTRVRDQVIgKG5ldywg cHVyZWNvcHkgKGNhcikpOwotICBYU0VUQ0RSIChuZXcsIHB1cmVjb3B5IChjZHIpKTsKLSAgcmV0 dXJuIG5ldzsKLX0KLQotCi0vKiBWYWx1ZSBpcyBhIGZsb2F0IG9iamVjdCB3aXRoIHZhbHVlIE5V TSBhbGxvY2F0ZWQgZnJvbSBwdXJlIHNwYWNlLiAgKi8KLQogc3RhdGljIExpc3BfT2JqZWN0Ci1t YWtlX3B1cmVfZmxvYXQgKGRvdWJsZSBudW0pCi17Ci0gIExpc3BfT2JqZWN0IG5ldzsKLSAgc3Ry dWN0IExpc3BfRmxvYXQgKnAgPSBwdXJlX2FsbG9jIChzaXplb2YgKnAsIExpc3BfRmxvYXQpOwot ICBYU0VURkxPQVQgKG5ldywgcCk7Ci0gIFhGTE9BVF9JTklUIChuZXcsIG51bSk7Ci0gIHJldHVy biBuZXc7Ci19Ci0KLS8qIFZhbHVlIGlzIGEgYmlnbnVtIG9iamVjdCB3aXRoIHZhbHVlIFZBTFVF IGFsbG9jYXRlZCBmcm9tIHB1cmUKLSAgIHNwYWNlLiAgKi8KLQotc3RhdGljIExpc3BfT2JqZWN0 Ci1tYWtlX3B1cmVfYmlnbnVtIChMaXNwX09iamVjdCB2YWx1ZSkKLXsKLSAgbXB6X3QgY29uc3Qg Km4gPSB4YmlnbnVtX3ZhbCAodmFsdWUpOwotICBzaXplX3QgaSwgbmxpbWJzID0gbXB6X3NpemUg KCpuKTsKLSAgc2l6ZV90IG5ieXRlcyA9IG5saW1icyAqIHNpemVvZiAobXBfbGltYl90KTsKLSAg bXBfbGltYl90ICpwdXJlX2xpbWJzOwotICBtcF9zaXplX3QgbmV3X3NpemU7Ci0KLSAgc3RydWN0 IExpc3BfQmlnbnVtICpiID0gcHVyZV9hbGxvYyAoc2l6ZW9mICpiLCBMaXNwX1ZlY3Rvcmxpa2Up OwotICBYU0VUUFZFQ1RZUEVTSVpFIChiLCBQVkVDX0JJR05VTSwgMCwgVkVDU0laRSAoc3RydWN0 IExpc3BfQmlnbnVtKSk7Ci0KLSAgaW50IGxpbWJfYWxpZ25tZW50ID0gYWxpZ25vZiAobXBfbGlt Yl90KTsKLSAgcHVyZV9saW1icyA9IHB1cmVfYWxsb2MgKG5ieXRlcywgLSBsaW1iX2FsaWdubWVu dCk7Ci0gIGZvciAoaSA9IDA7IGkgPCBubGltYnM7ICsraSkKLSAgICBwdXJlX2xpbWJzW2ldID0g bXB6X2dldGxpbWJuICgqbiwgaSk7Ci0KLSAgbmV3X3NpemUgPSBubGltYnM7Ci0gIGlmIChtcHpf c2duICgqbikgPCAwKQotICAgIG5ld19zaXplID0gLW5ld19zaXplOwotCi0gIG1wel9yb2luaXRf biAoYi0+dmFsdWUsIHB1cmVfbGltYnMsIG5ld19zaXplKTsKLQotICByZXR1cm4gbWFrZV9saXNw X3B0ciAoYiwgTGlzcF9WZWN0b3JsaWtlKTsKLX0KLQotLyogUmV0dXJuIGEgdmVjdG9yIHdpdGgg cm9vbSBmb3IgTEVOIExpc3BfT2JqZWN0cyBhbGxvY2F0ZWQgZnJvbQotICAgcHVyZSBzcGFjZS4g ICovCi0KLXN0YXRpYyBMaXNwX09iamVjdAotbWFrZV9wdXJlX3ZlY3RvciAocHRyZGlmZl90IGxl bikKLXsKLSAgTGlzcF9PYmplY3QgbmV3OwotICBzaXplX3Qgc2l6ZSA9IGhlYWRlcl9zaXplICsg bGVuICogd29yZF9zaXplOwotICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnAgPSBwdXJlX2FsbG9jIChz aXplLCBMaXNwX1ZlY3Rvcmxpa2UpOwotICBYU0VUVkVDVE9SIChuZXcsIHApOwotICBYVkVDVE9S IChuZXcpLT5oZWFkZXIuc2l6ZSA9IGxlbjsKLSAgcmV0dXJuIG5ldzsKLX0KLQotLyogQ29weSBh bGwgY29udGVudHMgYW5kIHBhcmFtZXRlcnMgb2YgVEFCTEUgdG8gYSBuZXcgdGFibGUgYWxsb2Nh dGVkCi0gICBmcm9tIHB1cmUgc3BhY2UsIHJldHVybiB0aGUgcHVyaWZpZWQgdGFibGUuICAqLwot c3RhdGljIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKgotcHVyZWNvcHlfaGFzaF90YWJsZSAoc3Ry dWN0IExpc3BfSGFzaF9UYWJsZSAqdGFibGUpCi17Ci0gIGVhc3NlcnQgKE5JTFAgKHRhYmxlLT53 ZWFrKSk7Ci0gIGVhc3NlcnQgKHRhYmxlLT5wdXJlY29weSk7Ci0KLSAgc3RydWN0IExpc3BfSGFz aF9UYWJsZSAqcHVyZSA9IHB1cmVfYWxsb2MgKHNpemVvZiAqcHVyZSwgTGlzcF9WZWN0b3JsaWtl KTsKLSAgc3RydWN0IGhhc2hfdGFibGVfdGVzdCBwdXJlX3Rlc3QgPSB0YWJsZS0+dGVzdDsKLQot ICAvKiBQdXJlY29weSB0aGUgaGFzaCB0YWJsZSB0ZXN0LiAgKi8KLSAgcHVyZV90ZXN0Lm5hbWUg PSBwdXJlY29weSAodGFibGUtPnRlc3QubmFtZSk7Ci0gIHB1cmVfdGVzdC51c2VyX2hhc2hfZnVu Y3Rpb24gPSBwdXJlY29weSAodGFibGUtPnRlc3QudXNlcl9oYXNoX2Z1bmN0aW9uKTsKLSAgcHVy ZV90ZXN0LnVzZXJfY21wX2Z1bmN0aW9uID0gcHVyZWNvcHkgKHRhYmxlLT50ZXN0LnVzZXJfY21w X2Z1bmN0aW9uKTsKLQotICBwdXJlLT5oZWFkZXIgPSB0YWJsZS0+aGVhZGVyOwotICBwdXJlLT53 ZWFrID0gcHVyZWNvcHkgKFFuaWwpOwotICBwdXJlLT5oYXNoID0gcHVyZWNvcHkgKHRhYmxlLT5o YXNoKTsKLSAgcHVyZS0+bmV4dCA9IHB1cmVjb3B5ICh0YWJsZS0+bmV4dCk7Ci0gIHB1cmUtPmlu ZGV4ID0gcHVyZWNvcHkgKHRhYmxlLT5pbmRleCk7Ci0gIHB1cmUtPmNvdW50ID0gdGFibGUtPmNv dW50OwotICBwdXJlLT5uZXh0X2ZyZWUgPSB0YWJsZS0+bmV4dF9mcmVlOwotICBwdXJlLT5wdXJl Y29weSA9IHRhYmxlLT5wdXJlY29weTsKLSAgZWFzc2VydCAoIXB1cmUtPm11dGFibGUpOwotICBw dXJlLT5yZWhhc2hfdGhyZXNob2xkID0gdGFibGUtPnJlaGFzaF90aHJlc2hvbGQ7Ci0gIHB1cmUt PnJlaGFzaF9zaXplID0gdGFibGUtPnJlaGFzaF9zaXplOwotICBwdXJlLT5rZXlfYW5kX3ZhbHVl ID0gcHVyZWNvcHkgKHRhYmxlLT5rZXlfYW5kX3ZhbHVlKTsKLSAgcHVyZS0+dGVzdCA9IHB1cmVf dGVzdDsKLQotICByZXR1cm4gcHVyZTsKLX0KK3B1cmVjb3B5IChMaXNwX09iamVjdCBvYmopOwog CiBERUZVTiAoInB1cmVjb3B5IiwgRnB1cmVjb3B5LCBTcHVyZWNvcHksIDEsIDEsIDAsCiAgICAg ICAgZG9jOiAvKiBNYWtlIGEgY29weSBvZiBvYmplY3QgT0JKIGluIHB1cmUgc3RvcmFnZS4KQEAg LTU0OTIsMTAwICs1MTUyLDIzIEBAIERFRlVOICgicHVyZWNvcHkiLCBGcHVyZWNvcHksIFNwdXJl Y29weSwgMSwgMSwgMCwKICAgICByZXR1cm4gcHVyZWNvcHkgKG9iaik7CiB9CiAKLS8qIFBpbm5l ZCBvYmplY3RzIGFyZSBtYXJrZWQgYmVmb3JlIGV2ZXJ5IEdDIGN5Y2xlLiAgKi8KLXN0YXRpYyBz dHJ1Y3QgcGlubmVkX29iamVjdAotewotICBMaXNwX09iamVjdCBvYmplY3Q7Ci0gIHN0cnVjdCBw aW5uZWRfb2JqZWN0ICpuZXh0OwotfSAqcGlubmVkX29iamVjdHM7Ci0KIHN0YXRpYyBMaXNwX09i amVjdAogcHVyZWNvcHkgKExpc3BfT2JqZWN0IG9iaikKIHsKLSAgaWYgKEZJWE5VTVAgKG9iaikK LSAgICAgIHx8ICghIFNZTUJPTFAgKG9iaikgJiYgUFVSRV9QIChYUE5UUiAob2JqKSkpCi0gICAg ICB8fCBTVUJSUCAob2JqKSkKKyAgaWYgKEZJWE5VTVAgKG9iaikgfHwgU1VCUlAgKG9iaikpCiAg ICAgcmV0dXJuIG9iajsgICAgLyogQWxyZWFkeSBwdXJlLiAgKi8KIAotICBpZiAoU1RSSU5HUCAo b2JqKSAmJiBYU1RSSU5HIChvYmopLT51LnMuaW50ZXJ2YWxzKQotICAgIG1lc3NhZ2Vfd2l0aF9z dHJpbmcgKCJEcm9wcGluZyB0ZXh0LXByb3BlcnRpZXMgd2hpbGUgbWFraW5nIHN0cmluZyBgJXMn IHB1cmUiLAotCQkJIG9iaiwgdHJ1ZSk7Ci0KICAgaWYgKEhBU0hfVEFCTEVfUCAoVnB1cmlmeV9m bGFnKSkgLyogSGFzaCBjb25zaW5nLiAgKi8KICAgICB7CiAgICAgICBMaXNwX09iamVjdCB0bXAg PSBGZ2V0aGFzaCAob2JqLCBWcHVyaWZ5X2ZsYWcsIFFuaWwpOwogICAgICAgaWYgKCFOSUxQICh0 bXApKQogCXJldHVybiB0bXA7CisgICAgICBGcHV0aGFzaCAob2JqLCBvYmosIFZwdXJpZnlfZmxh Zyk7CiAgICAgfQogCi0gIGlmIChDT05TUCAob2JqKSkKLSAgICBvYmogPSBwdXJlX2NvbnMgKFhD QVIgKG9iaiksIFhDRFIgKG9iaikpOwotICBlbHNlIGlmIChGTE9BVFAgKG9iaikpCi0gICAgb2Jq ID0gbWFrZV9wdXJlX2Zsb2F0IChYRkxPQVRfREFUQSAob2JqKSk7Ci0gIGVsc2UgaWYgKFNUUklO R1AgKG9iaikpCi0gICAgb2JqID0gbWFrZV9wdXJlX3N0cmluZyAoU1NEQVRBIChvYmopLCBTQ0hB UlMgKG9iaiksCi0JCQkgICAgU0JZVEVTIChvYmopLAotCQkJICAgIFNUUklOR19NVUxUSUJZVEUg KG9iaikpOwotICBlbHNlIGlmIChIQVNIX1RBQkxFX1AgKG9iaikpCi0gICAgewotICAgICAgc3Ry dWN0IExpc3BfSGFzaF9UYWJsZSAqdGFibGUgPSBYSEFTSF9UQUJMRSAob2JqKTsKLSAgICAgIC8q IERvIG5vdCBwdXJpZnkgaGFzaCB0YWJsZXMgd2hpY2ggaGF2ZW4ndCBiZWVuIGRlZmluZWQgd2l0 aAotICAgICAgICAgOnB1cmVjb3B5IGFzIG5vbi1uaWwgb3IgYXJlIHdlYWsgLSB0aGV5IGFyZW4n dCBndWFyYW50ZWVkIHRvCi0gICAgICAgICBub3QgY2hhbmdlLiAgKi8KLSAgICAgIGlmICghTklM UCAodGFibGUtPndlYWspIHx8ICF0YWJsZS0+cHVyZWNvcHkpCi0gICAgICAgIHsKLSAgICAgICAg ICAvKiBJbnN0ZWFkLCBhZGQgdGhlIGhhc2ggdGFibGUgdG8gdGhlIGxpc3Qgb2YgcGlubmVkIG9i amVjdHMsCi0gICAgICAgICAgICAgc28gdGhhdCBpdCB3aWxsIGJlIG1hcmtlZCBkdXJpbmcgR0Mu ICAqLwotICAgICAgICAgIHN0cnVjdCBwaW5uZWRfb2JqZWN0ICpvID0geG1hbGxvYyAoc2l6ZW9m ICpvKTsKLSAgICAgICAgICBvLT5vYmplY3QgPSBvYmo7Ci0gICAgICAgICAgby0+bmV4dCA9IHBp bm5lZF9vYmplY3RzOwotICAgICAgICAgIHBpbm5lZF9vYmplY3RzID0gbzsKLSAgICAgICAgICBy ZXR1cm4gb2JqOyAvKiBEb24ndCBoYXNoIGNvbnMgaXQuICAqLwotICAgICAgICB9Ci0KLSAgICAg IHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmggPSBwdXJlY29weV9oYXNoX3RhYmxlICh0YWJsZSk7 Ci0gICAgICBYU0VUX0hBU0hfVEFCTEUgKG9iaiwgaCk7Ci0gICAgfQotICBlbHNlIGlmIChDT01Q SUxFRFAgKG9iaikgfHwgVkVDVE9SUCAob2JqKSB8fCBSRUNPUkRQIChvYmopKQotICAgIHsKLSAg ICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqb2JqcCA9IFhWRUNUT1IgKG9iaik7Ci0gICAgICBwdHJk aWZmX3QgbmJ5dGVzID0gdmVjdG9yX25ieXRlcyAob2JqcCk7Ci0gICAgICBzdHJ1Y3QgTGlzcF9W ZWN0b3IgKnZlYyA9IHB1cmVfYWxsb2MgKG5ieXRlcywgTGlzcF9WZWN0b3JsaWtlKTsKLSAgICAg IHJlZ2lzdGVyIHB0cmRpZmZfdCBpOwotICAgICAgcHRyZGlmZl90IHNpemUgPSBBU0laRSAob2Jq KTsKLSAgICAgIGlmIChzaXplICYgUFNFVURPVkVDVE9SX0ZMQUcpCi0Jc2l6ZSAmPSBQU0VVRE9W RUNUT1JfU0laRV9NQVNLOwotICAgICAgbWVtY3B5ICh2ZWMsIG9ianAsIG5ieXRlcyk7Ci0gICAg ICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotCXZlYy0+Y29udGVudHNbaV0gPSBwdXJlY29w eSAodmVjLT5jb250ZW50c1tpXSk7Ci0gICAgICBYU0VUVkVDVE9SIChvYmosIHZlYyk7Ci0gICAg fQotICBlbHNlIGlmIChTWU1CT0xQIChvYmopKQotICAgIHsKLSAgICAgIGlmICghWFNZTUJPTCAo b2JqKS0+dS5zLnBpbm5lZCAmJiAhY19zeW1ib2xfcCAoWFNZTUJPTCAob2JqKSkpCi0JeyAvKiBX ZSBjYW4ndCBwdXJpZnkgdGhlbSwgYnV0IHRoZXkgYXBwZWFyIGluIG1hbnkgcHVyZSBvYmplY3Rz LgotCSAgICAgTWFyayB0aGVtIGFzIGBwaW5uZWQnIHNvIHdlIGtub3cgdG8gbWFyayB0aGVtIGF0 IGV2ZXJ5IEdDIGN5Y2xlLiAgKi8KLQkgIFhTWU1CT0wgKG9iaiktPnUucy5waW5uZWQgPSB0cnVl OwotCSAgc3ltYm9sX2Jsb2NrX3Bpbm5lZCA9IHN5bWJvbF9ibG9jazsKLQl9Ci0gICAgICAvKiBE b24ndCBoYXNoLWNvbnMgaXQuICAqLwotICAgICAgcmV0dXJuIG9iajsKLSAgICB9Ci0gIGVsc2Ug aWYgKEJJR05VTVAgKG9iaikpCi0gICAgb2JqID0gbWFrZV9wdXJlX2JpZ251bSAob2JqKTsKLSAg ZWxzZQotICAgIHsKLSAgICAgIEFVVE9fU1RSSU5HIChmbXQsICJEb24ndCBrbm93IGhvdyB0byBw dXJpZnk6ICVTIik7Ci0gICAgICBGc2lnbmFsIChRZXJyb3IsIGxpc3QxIChDQUxMTiAoRmZvcm1h dCwgZm10LCBvYmopKSk7Ci0gICAgfQotCi0gIGlmIChIQVNIX1RBQkxFX1AgKFZwdXJpZnlfZmxh ZykpIC8qIEhhc2ggY29uc2luZy4gICovCi0gICAgRnB1dGhhc2ggKG9iaiwgb2JqLCBWcHVyaWZ5 X2ZsYWcpOwotCiAgIHJldHVybiBvYmo7CiB9CiAKLQogDAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkg IFByb3RlY3Rpb24gZnJvbSBHQwpAQCAtNTc3NiwzMSArNTM1OSw2IEBAIGNvbXBhY3RfdW5kb19s aXN0IChMaXNwX09iamVjdCBsaXN0KQogICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIHZvaWQK LW1hcmtfcGlubmVkX29iamVjdHMgKHZvaWQpCi17Ci0gIGZvciAoc3RydWN0IHBpbm5lZF9vYmpl Y3QgKnBvYmogPSBwaW5uZWRfb2JqZWN0czsgcG9iajsgcG9iaiA9IHBvYmotPm5leHQpCi0gICAg bWFya19vYmplY3QgKHBvYmotPm9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1tYXJrX3Bpbm5l ZF9zeW1ib2xzICh2b2lkKQotewotICBzdHJ1Y3Qgc3ltYm9sX2Jsb2NrICpzYmxrOwotICBpbnQg bGltID0gKHN5bWJvbF9ibG9ja19waW5uZWQgPT0gc3ltYm9sX2Jsb2NrCi0JICAgICA/IHN5bWJv bF9ibG9ja19pbmRleCA6IFNZTUJPTF9CTE9DS19TSVpFKTsKLQotICBmb3IgKHNibGsgPSBzeW1i b2xfYmxvY2tfcGlubmVkOyBzYmxrOyBzYmxrID0gc2Jsay0+bmV4dCkKLSAgICB7Ci0gICAgICBz dHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bSA9IHNibGstPnN5bWJvbHMsICplbmQgPSBzeW0gKyBsaW07 Ci0gICAgICBmb3IgKDsgc3ltIDwgZW5kOyArK3N5bSkKLQlpZiAoc3ltLT51LnMucGlubmVkKQot CSAgbWFya19vYmplY3QgKG1ha2VfbGlzcF9zeW1ib2wgKHN5bSkpOwotCi0gICAgICBsaW0gPSBT WU1CT0xfQkxPQ0tfU0laRTsKLSAgICB9Ci19Ci0KIHN0YXRpYyB2b2lkCiB2aXNpdF92ZWN0b3Js aWtlX3Jvb3QgKHN0cnVjdCBnY19yb290X3Zpc2l0b3IgdmlzaXRvciwKICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IExpc3BfVmVjdG9yICpwdHIsCkBAIC02MDYxLDggKzU2MTksNiBAQCBn YXJiYWdlX2NvbGxlY3QgKHZvaWQpCiAgIHN0cnVjdCBnY19yb290X3Zpc2l0b3IgdmlzaXRvciA9 IHsgLnZpc2l0ID0gbWFya19vYmplY3Rfcm9vdF92aXNpdG9yIH07CiAgIHZpc2l0X3N0YXRpY19n Y19yb290cyAodmlzaXRvcik7CiAKLSAgbWFya19waW5uZWRfb2JqZWN0cyAoKTsKLSAgbWFya19w aW5uZWRfc3ltYm9scyAoKTsKICAgbWFya190ZXJtaW5hbHMgKCk7CiAgIG1hcmtfa2JvYXJkcyAo KTsKICAgbWFya190aHJlYWRzICgpOwpAQCAtNjE3Miw5ICs1NzI4LDYgQEAgREVGVU4gKCJnYXJi YWdlLWNvbGxlY3QiLCBGZ2FyYmFnZV9jb2xsZWN0LCBTZ2FyYmFnZV9jb2xsZWN0LCAwLCAwLCAi IiwKIC0gRlJFRSBpcyB0aGUgbnVtYmVyIG9mIHRob3NlIG9iamVjdHMgdGhhdCBhcmUgbm90IGxp dmUgYnV0IHRoYXQgRW1hY3MKICAga2VlcHMgYXJvdW5kIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMg KG1heWJlIGJlY2F1c2UgaXQgZG9lcyBub3Qga25vdyBob3cKICAgdG8gcmV0dXJuIHRoZW0gdG8g dGhlIE9TKS4KLUhvd2V2ZXIsIGlmIHRoZXJlIHdhcyBvdmVyZmxvdyBpbiBwdXJlIHNwYWNlLCBh bmQgRW1hY3Mgd2FzIGR1bXBlZAotdXNpbmcgdGhlICd1bmV4ZWMnIG1ldGhvZCwgYGdhcmJhZ2Ut Y29sbGVjdCcgcmV0dXJucyBuaWwsIGJlY2F1c2UKLXJlYWwgR0MgY2FuJ3QgYmUgZG9uZS4KIFNl ZSBJbmZvIG5vZGUgYChlbGlzcClHYXJiYWdlIENvbGxlY3Rpb24nLiAgKi8pCiAgICh2b2lkKQog ewpAQCAtNjUxMiw3ICs2MDY1LDYgQEAgbWFya19oYXNoX3RhYmxlIChzdHJ1Y3QgTGlzcF9WZWN0 b3IgKnB0cikKIG1hcmtfb2JqZWN0IChMaXNwX09iamVjdCBhcmcpCiB7CiAgIHJlZ2lzdGVyIExp c3BfT2JqZWN0IG9iajsKLSAgdm9pZCAqcG87CiAjaWYgR0NfQ0hFQ0tfTUFSS0VEX09CSkVDVFMK ICAgc3RydWN0IG1lbV9ub2RlICptID0gTlVMTDsKICNlbmRpZgpAQCAtNjUyMSwxMCArNjA3Myw2 IEBAIG1hcmtfb2JqZWN0IChMaXNwX09iamVjdCBhcmcpCiAgIG9iaiA9IGFyZzsKICBsb29wOgog Ci0gIHBvID0gWFBOVFIgKG9iaik7Ci0gIGlmIChQVVJFX1AgKHBvKSkKLSAgICByZXR1cm47Ci0K ICAgbGFzdF9tYXJrZWRbbGFzdF9tYXJrZWRfaW5kZXgrK10gPSBvYmo7CiAgIGxhc3RfbWFya2Vk X2luZGV4ICY9IExBU1RfTUFSS0VEX1NJWkUgLSAxOwogCkBAIC02NzE3LDExICs2MjY1LDEwIEBA ICNkZWZpbmUgQ0hFQ0tfQUxMT0NBVEVEX0FORF9MSVZFX1NZTUJPTCgpCQkoKHZvaWQpIDApCiAJ ICAgIGJyZWFrOwogCSAgZGVmYXVsdDogZW1hY3NfYWJvcnQgKCk7CiAJICB9Ci0JaWYgKCFQVVJF X1AgKFhTVFJJTkcgKHB0ci0+dS5zLm5hbWUpKSkKLSAgICAgICAgICBzZXRfc3RyaW5nX21hcmtl ZCAoWFNUUklORyAocHRyLT51LnMubmFtZSkpOworCXNldF9zdHJpbmdfbWFya2VkIChYU1RSSU5H IChwdHItPnUucy5uYW1lKSk7CiAgICAgICAgIG1hcmtfaW50ZXJ2YWxfdHJlZSAoc3RyaW5nX2lu dGVydmFscyAocHRyLT51LnMubmFtZSkpOwogCS8qIElubmVyIGxvb3AgdG8gbWFyayBuZXh0IHN5 bWJvbCBpbiB0aGlzIGJ1Y2tldCwgaWYgYW55LiAgKi8KLQlwbyA9IHB0ciA9IHB0ci0+dS5zLm5l eHQ7CisJcHRyID0gcHRyLT51LnMubmV4dDsKIAlpZiAocHRyKQogCSAgZ290byBuZXh0c3ltOwog ICAgICAgfQpAQCAtNjgzMiw3ICs2Mzc5LDcgQEAgc3Vydml2ZXNfZ2NfcCAoTGlzcF9PYmplY3Qg b2JqKQogICAgICAgZW1hY3NfYWJvcnQgKCk7CiAgICAgfQogCi0gIHJldHVybiBzdXJ2aXZlc19w IHx8IFBVUkVfUCAoWFBOVFIgKG9iaikpOworICByZXR1cm4gc3Vydml2ZXNfcDsKIH0KIAogCkBA IC03NDA2LDggKzY5NTMsNiBAQCBpbml0X2FsbG9jX29uY2UgKHZvaWQpCiBzdGF0aWMgdm9pZAog aW5pdF9hbGxvY19vbmNlX2Zvcl9wZHVtcGVyICh2b2lkKQogewotICBwdXJlYmVnID0gUFVSRUJF RzsKLSAgcHVyZV9zaXplID0gUFVSRVNJWkU7CiAgIG1lbV9pbml0ICgpOwogCiAjaWZkZWYgRE9V R19MRUFfTUFMTE9DCkBAIC03NDUxLDcgKzY5OTYsNyBAQCBzeW1zX29mX2FsbG9jICh2b2lkKQog ICBWZ2NfY29uc19wZXJjZW50YWdlID0gbWFrZV9mbG9hdCAoMC4xKTsKIAogICBERUZWQVJfSU5U ICgicHVyZS1ieXRlcy11c2VkIiwgcHVyZV9ieXRlc191c2VkLAotCSAgICAgIGRvYzogLyogTnVt YmVyIG9mIGJ5dGVzIG9mIHNoYXJlYWJsZSBMaXNwIGRhdGEgYWxsb2NhdGVkIHNvIGZhci4gICov KTsKKwkgICAgICBkb2M6IC8qIE5vIGxvbmdlciB1c2VkLiAgKi8pOwogCiAgIERFRlZBUl9JTlQg KCJjb25zLWNlbGxzLWNvbnNlZCIsIGNvbnNfY2VsbHNfY29uc2VkLAogCSAgICAgIGRvYzogLyog TnVtYmVyIG9mIGNvbnMgY2VsbHMgdGhhdCBoYXZlIGJlZW4gY29uc2VkIHNvIGZhci4gICovKTsK QEAgLTc0NzYsMTAgKzcwMjEsNyBAQCBzeW1zX29mX2FsbG9jICh2b2lkKQogCSAgICAgIGRvYzog LyogTnVtYmVyIG9mIHN0cmluZ3MgdGhhdCBoYXZlIGJlZW4gY29uc2VkIHNvIGZhci4gICovKTsK IAogICBERUZWQVJfTElTUCAoInB1cmlmeS1mbGFnIiwgVnB1cmlmeV9mbGFnLAotCSAgICAgICBk b2M6IC8qIE5vbi1uaWwgbWVhbnMgbG9hZGluZyBMaXNwIGNvZGUgaW4gb3JkZXIgdG8gZHVtcCBh biBleGVjdXRhYmxlLgotVGhpcyBtZWFucyB0aGF0IGNlcnRhaW4gb2JqZWN0cyBzaG91bGQgYmUg YWxsb2NhdGVkIGluIHNoYXJlZCAocHVyZSkgc3BhY2UuCi1JdCBjYW4gYWxzbyBiZSBzZXQgdG8g YSBoYXNoLXRhYmxlLCBpbiB3aGljaCBjYXNlIHRoaXMgdGFibGUgaXMgdXNlZCB0bwotZG8gaGFz aC1jb25zaW5nIG9mIHRoZSBvYmplY3RzIGFsbG9jYXRlZCB0byBwdXJlIHNwYWNlLiAgKi8pOwor CSAgICAgICBkb2M6IC8qIE5vIGxvbmdlciB1c2VkLiAgKi8pOwogCiAgIERFRlZBUl9CT09MICgi Z2FyYmFnZS1jb2xsZWN0aW9uLW1lc3NhZ2VzIiwgZ2FyYmFnZV9jb2xsZWN0aW9uX21lc3NhZ2Vz LAogCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMgZGlzcGxheSBtZXNzYWdlcyBhdCBzdGFy dCBhbmQgZW5kIG9mIGdhcmJhZ2UgY29sbGVjdGlvbi4gICovKTsKQEAgLTc0OTUsMTAgKzcwMzcs MTAgQEAgc3ltc19vZl9hbGxvYyAodm9pZCkKICAgLyogV2UgYnVpbGQgdGhpcyBpbiBhZHZhbmNl IGJlY2F1c2UgaWYgd2Ugd2FpdCB1bnRpbCB3ZSBuZWVkIGl0LCB3ZSBtaWdodAogICAgICBub3Qg YmUgYWJsZSB0byBhbGxvY2F0ZSB0aGUgbWVtb3J5IHRvIGhvbGQgaXQuICAqLwogICBWbWVtb3J5 X3NpZ25hbF9kYXRhCi0gICAgPSBwdXJlX2xpc3QgKFFlcnJvciwKLQkJIGJ1aWxkX3B1cmVfY19z dHJpbmcgKCJNZW1vcnkgZXhoYXVzdGVkLS11c2UiCi0JCQkJICAgICAgIiBNLXggc2F2ZS1zb21l LWJ1ZmZlcnMgdGhlbiIKLQkJCQkgICAgICAiIGV4aXQgYW5kIHJlc3RhcnQgRW1hY3MiKSk7Cisg ICAgPSBsaXN0IChRZXJyb3IsCisJICAgIGJ1aWxkX3N0cmluZyAoIk1lbW9yeSBleGhhdXN0ZWQt LXVzZSIKKwkJCSAgIiBNLXggc2F2ZS1zb21lLWJ1ZmZlcnMgdGhlbiIKKwkJCSAgIiBleGl0IGFu ZCByZXN0YXJ0IEVtYWNzIikpOwogCiAgIERFRlZBUl9MSVNQICgibWVtb3J5LWZ1bGwiLCBWbWVt b3J5X2Z1bGwsCiAJICAgICAgIGRvYzogLyogTm9uLW5pbCBtZWFucyBFbWFjcyBjYW5ub3QgZ2V0 IG11Y2ggbW9yZSBMaXNwIG1lbW9yeS4gICovKTsKZGlmZiAtLWdpdCBhL3NyYy9idWZmZXIuYyBi L3NyYy9idWZmZXIuYwppbmRleCAyNDFmMmQ0M2E5Li42ODZjNjc0OGM1IDEwMDY0NAotLS0gYS9z cmMvYnVmZmVyLmMKKysrIGIvc3JjL2J1ZmZlci5jCkBAIC01MjY2LDggKzUyNjYsOCBAQCBpbml0 X2J1ZmZlcl9vbmNlICh2b2lkKQogICBzZXRfYnVmZmVyX2ludGVydmFscyAoJmJ1ZmZlcl9kZWZh dWx0cywgTlVMTCk7CiAgIHNldF9idWZmZXJfaW50ZXJ2YWxzICgmYnVmZmVyX2xvY2FsX3N5bWJv bHMsIE5VTEwpOwogICAvKiBUaGlzIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dCBsZXQn cyBtYWtlIHRoZW0gaW5pdGlhbGl6ZWQuICAqLwotICBic2V0X25hbWUgKCZidWZmZXJfZGVmYXVs dHMsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIgKmJ1ZmZlci1kZWZhdWx0cyoiKSk7Ci0gIGJzZXRf bmFtZSAoJmJ1ZmZlcl9sb2NhbF9zeW1ib2xzLCBidWlsZF9wdXJlX2Nfc3RyaW5nICgiICpidWZm ZXItbG9jYWwtc3ltYm9scyoiKSk7CisgIGJzZXRfbmFtZSAoJmJ1ZmZlcl9kZWZhdWx0cywgYnVp bGRfc3RyaW5nICgiICpidWZmZXItZGVmYXVsdHMqIikpOworICBic2V0X25hbWUgKCZidWZmZXJf bG9jYWxfc3ltYm9scywgYnVpbGRfc3RyaW5nICgiICpidWZmZXItbG9jYWwtc3ltYm9scyoiKSk7 CiAgIEJVRkZFUl9QVkVDX0lOSVQgKCZidWZmZXJfZGVmYXVsdHMpOwogICBCVUZGRVJfUFZFQ19J TklUICgmYnVmZmVyX2xvY2FsX3N5bWJvbHMpOwogCkBAIC01Mjc1LDcgKzUyNzUsNyBAQCBpbml0 X2J1ZmZlcl9vbmNlICh2b2lkKQogICAvKiBNdXN0IGRvIHRoZXNlIGJlZm9yZSBtYWtpbmcgdGhl IGZpcnN0IGJ1ZmZlciEgKi8KIAogICAvKiByZWFsIHNldHVwIGlzIGRvbmUgaW4gYmluZGluZ3Mu ZWwgKi8KLSAgYnNldF9tb2RlX2xpbmVfZm9ybWF0ICgmYnVmZmVyX2RlZmF1bHRzLCBidWlsZF9w dXJlX2Nfc3RyaW5nICgiJS0iKSk7CisgIGJzZXRfbW9kZV9saW5lX2Zvcm1hdCAoJmJ1ZmZlcl9k ZWZhdWx0cywgYnVpbGRfc3RyaW5nICgiJS0iKSk7CiAgIGJzZXRfaGVhZGVyX2xpbmVfZm9ybWF0 ICgmYnVmZmVyX2RlZmF1bHRzLCBRbmlsKTsKICAgYnNldF90YWJfbGluZV9mb3JtYXQgKCZidWZm ZXJfZGVmYXVsdHMsIFFuaWwpOwogICBic2V0X2FiYnJldl9tb2RlICgmYnVmZmVyX2RlZmF1bHRz LCBRbmlsKTsKQEAgLTUzNDIsNyArNTM0Miw3IEBAIGluaXRfYnVmZmVyX29uY2UgKHZvaWQpCiAg IGN1cnJlbnRfYnVmZmVyID0gMDsKICAgcGR1bXBlcl9yZW1lbWJlcl9sdl9wdHJfcmF3ICgmY3Vy cmVudF9idWZmZXIsIExpc3BfVmVjdG9ybGlrZSk7CiAKLSAgUVNGdW5kYW1lbnRhbCA9IGJ1aWxk X3B1cmVfY19zdHJpbmcgKCJGdW5kYW1lbnRhbCIpOworICBRU0Z1bmRhbWVudGFsID0gYnVpbGRf c3RyaW5nICgiRnVuZGFtZW50YWwiKTsKIAogICBERUZTWU0gKFFmdW5kYW1lbnRhbF9tb2RlLCAi ZnVuZGFtZW50YWwtbW9kZSIpOwogICBic2V0X21ham9yX21vZGUgKCZidWZmZXJfZGVmYXVsdHMs IFFmdW5kYW1lbnRhbF9tb2RlKTsKQEAgLTUzNTUsMTAgKzUzNTUsMTAgQEAgaW5pdF9idWZmZXJf b25jZSAodm9pZCkKICAgRnB1dCAoUWtpbGxfYnVmZmVyX2hvb2ssIFFwZXJtYW5lbnRfbG9jYWws IFF0KTsKIAogICAvKiBTdXBlci1tYWdpYyBpbnZpc2libGUgYnVmZmVyLiAgKi8KLSAgVnByaW4x X3RvX3N0cmluZ19idWZmZXIgPSBGZ2V0X2J1ZmZlcl9jcmVhdGUgKGJ1aWxkX3B1cmVfY19zdHJp bmcgKCIgcHJpbjEiKSk7CisgIFZwcmluMV90b19zdHJpbmdfYnVmZmVyID0gRmdldF9idWZmZXJf Y3JlYXRlIChidWlsZF9zdHJpbmcgKCIgcHJpbjEiKSk7CiAgIFZidWZmZXJfYWxpc3QgPSBRbmls OwogCi0gIEZzZXRfYnVmZmVyIChGZ2V0X2J1ZmZlcl9jcmVhdGUgKGJ1aWxkX3B1cmVfY19zdHJp bmcgKCIqc2NyYXRjaCoiKSkpOworICBGc2V0X2J1ZmZlciAoRmdldF9idWZmZXJfY3JlYXRlIChi dWlsZF9zdHJpbmcgKCIqc2NyYXRjaCoiKSkpOwogCiAgIGluaGliaXRfbW9kaWZpY2F0aW9uX2hv b2tzID0gMDsKIH0KQEAgLTU1MzMsOSArNTUzMyw5IEBAIHN5bXNfb2ZfYnVmZmVyICh2b2lkKQog CSAgICAgICBRb3ZlcndyaXRlX21vZGVfYmluYXJ5KSk7CiAKICAgRnB1dCAoUXByb3RlY3RlZF9m aWVsZCwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRcHJvdGVjdGVkX2ZpZWxkLCBR ZXJyb3IpKTsKKwlsaXN0IChRcHJvdGVjdGVkX2ZpZWxkLCBRZXJyb3IpKTsKICAgRnB1dCAoUXBy b3RlY3RlZF9maWVsZCwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIkF0 dGVtcHQgdG8gbW9kaWZ5IGEgcHJvdGVjdGVkIGZpZWxkIikpOworCWJ1aWxkX3N0cmluZyAoIkF0 dGVtcHQgdG8gbW9kaWZ5IGEgcHJvdGVjdGVkIGZpZWxkIikpOwogCiAgIERFRlZBUl9QRVJfQlVG RkVSICgidGFiLWxpbmUtZm9ybWF0IiwKIAkJICAgICAmQlZBUiAoY3VycmVudF9idWZmZXIsIHRh Yl9saW5lX2Zvcm1hdCksCmRpZmYgLS1naXQgYS9zcmMvY2FsbGludC5jIGIvc3JjL2NhbGxpbnQu YwppbmRleCBmNjA5Yzk2YTZmLi42NjhiMjA4OWFiIDEwMDY0NAotLS0gYS9zcmMvY2FsbGludC5j CisrKyBiL3NyYy9jYWxsaW50LmMKQEAgLTgxMiwxMCArODEyLDEwIEBAIHN5bXNfb2ZfY2FsbGlu dCAodm9pZCkKICAgY2FsbGludF9tZXNzYWdlID0gUW5pbDsKICAgc3RhdGljcHJvICgmY2FsbGlu dF9tZXNzYWdlKTsKIAotICBwcmVzZXJ2ZWRfZm5zID0gcHVyZV9saXN0IChpbnRlcm5fY19zdHJp bmcgKCJyZWdpb24tYmVnaW5uaW5nIiksCi0JCQkgICAgIGludGVybl9jX3N0cmluZyAoInJlZ2lv bi1lbmQiKSwKLQkJCSAgICAgaW50ZXJuX2Nfc3RyaW5nICgicG9pbnQiKSwKLQkJCSAgICAgaW50 ZXJuX2Nfc3RyaW5nICgibWFyayIpKTsKKyAgcHJlc2VydmVkX2ZucyA9IGxpc3QgKGludGVybl9j X3N0cmluZyAoInJlZ2lvbi1iZWdpbm5pbmciKSwKKwkJCWludGVybl9jX3N0cmluZyAoInJlZ2lv bi1lbmQiKSwKKwkJCWludGVybl9jX3N0cmluZyAoInBvaW50IiksCisJCQlpbnRlcm5fY19zdHJp bmcgKCJtYXJrIikpOwogICBzdGF0aWNwcm8gKCZwcmVzZXJ2ZWRfZm5zKTsKIAogICBERUZTWU0g KFFsaXN0LCAibGlzdCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2NhdGVnb3J5LmMgYi9zcmMvY2F0ZWdv cnkuYwppbmRleCBjODA1NzFlY2Q0Li4wYjA1NWYzMjdhIDEwMDY0NAotLS0gYS9zcmMvY2F0ZWdv cnkuYworKysgYi9zcmMvY2F0ZWdvcnkuYwpAQCAtNTMsNyArNTMsNyBAQCBoYXNoX2dldF9jYXRl Z29yeV9zZXQgKExpc3BfT2JqZWN0IHRhYmxlLCBMaXNwX09iamVjdCBjYXRlZ29yeV9zZXQpCiAg ICAgICAodGFibGUsIDEsCiAgICAgICAgbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9lcXVhbCwg REVGQVVMVF9IQVNIX1NJWkUsCiAJCQlERUZBVUxUX1JFSEFTSF9TSVpFLCBERUZBVUxUX1JFSEFT SF9USFJFU0hPTEQsCi0JCQlRbmlsLCBmYWxzZSkpOworCQkJUW5pbCkpOwogICBzdHJ1Y3QgTGlz cF9IYXNoX1RhYmxlICpoID0gWEhBU0hfVEFCTEUgKFhDSEFSX1RBQkxFICh0YWJsZSktPmV4dHJh c1sxXSk7CiAgIExpc3BfT2JqZWN0IGhhc2g7CiAgIHB0cmRpZmZfdCBpID0gaGFzaF9sb29rdXAg KGgsIGNhdGVnb3J5X3NldCwgJmhhc2gpOwpAQCAtMTIwLDggKzEyMCw2IEBAIERFRlVOICgiZGVm aW5lLWNhdGVnb3J5IiwgRmRlZmluZV9jYXRlZ29yeSwgU2RlZmluZV9jYXRlZ29yeSwgMiwgMywg MCwKIAogICBpZiAoIU5JTFAgKENBVEVHT1JZX0RPQ1NUUklORyAodGFibGUsIFhGSVhOQVQgKGNh dGVnb3J5KSkpKQogICAgIGVycm9yICgiQ2F0ZWdvcnkgYCVjJyBpcyBhbHJlYWR5IGRlZmluZWQi LCAoaW50KSBYRklYTkFUIChjYXRlZ29yeSkpOwotICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxhZykp Ci0gICAgZG9jc3RyaW5nID0gRnB1cmVjb3B5IChkb2NzdHJpbmcpOwogICBTRVRfQ0FURUdPUllf RE9DU1RSSU5HICh0YWJsZSwgWEZJWE5BVCAoY2F0ZWdvcnkpLCBkb2NzdHJpbmcpOwogCiAgIHJl dHVybiBRbmlsOwpkaWZmIC0tZ2l0IGEvc3JjL2NvZGluZy5jIGIvc3JjL2NvZGluZy5jCmluZGV4 IDUxYmQ0NDFkZTkuLjEwMjBiZDY1MWQgMTAwNjQ0Ci0tLSBhL3NyYy9jb2RpbmcuYworKysgYi9z cmMvY29kaW5nLmMKQEAgLTExNjMxLDcgKzExNjMxLDcgQEAgc3ltc19vZl9jb2RpbmcgKHZvaWQp CiAgIFZjb2RlX2NvbnZlcnNpb25fcmV1c2VkX3dvcmtidWYgPSBRbmlsOwogCiAgIHN0YXRpY3By byAoJlZjb2RlX2NvbnZlcnNpb25fd29ya2J1Zl9uYW1lKTsKLSAgVmNvZGVfY29udmVyc2lvbl93 b3JrYnVmX25hbWUgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiICpjb2RlLWNvbnZlcnNpb24td29y ayoiKTsKKyAgVmNvZGVfY29udmVyc2lvbl93b3JrYnVmX25hbWUgPSBidWlsZF9zdHJpbmcgKCIg KmNvZGUtY29udmVyc2lvbi13b3JrKiIpOwogCiAgIHJldXNlZF93b3JrYnVmX2luX3VzZSA9IDA7 CiAgIFBEVU1QRVJfUkVNRU1CRVJfU0NBTEFSIChyZXVzZWRfd29ya2J1Zl9pbl91c2UpOwpAQCAt MTE2OTUsOSArMTE2OTUsOSBAQCBzeW1zX29mX2NvZGluZyAodm9pZCkKICAgLyogRXJyb3Igc2ln bmFsZWQgd2hlbiB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIGRldGVjdGluZyBhIGNvZGluZyBzeXN0 ZW0uICAqLwogICBERUZTWU0gKFFjb2Rpbmdfc3lzdGVtX2Vycm9yLCAiY29kaW5nLXN5c3RlbS1l cnJvciIpOwogICBGcHV0IChRY29kaW5nX3N5c3RlbV9lcnJvciwgUWVycm9yX2NvbmRpdGlvbnMs Ci0JcHVyZV9saXN0IChRY29kaW5nX3N5c3RlbV9lcnJvciwgUWVycm9yKSk7CisJbGlzdCAoUWNv ZGluZ19zeXN0ZW1fZXJyb3IsIFFlcnJvcikpOwogICBGcHV0IChRY29kaW5nX3N5c3RlbV9lcnJv ciwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIkludmFsaWQgY29kaW5n IHN5c3RlbSIpKTsKKwlidWlsZF9zdHJpbmcgKCJJbnZhbGlkIGNvZGluZyBzeXN0ZW0iKSk7CiAK ICAgREVGU1lNIChRdHJhbnNsYXRpb25fdGFibGUsICJ0cmFuc2xhdGlvbi10YWJsZSIpOwogICBG cHV0IChRdHJhbnNsYXRpb25fdGFibGUsIFFjaGFyX3RhYmxlX2V4dHJhX3Nsb3RzLCBtYWtlX2Zp eG51bSAoMikpOwpAQCAtMTE5NzEsMjIgKzExOTcxLDIyIEBAIHN5bXNfb2ZfY29kaW5nICh2b2lk KQogICBERUZWQVJfTElTUCAoImVvbC1tbmVtb25pYy11bml4IiwgZW9sX21uZW1vbmljX3VuaXgs CiAJICAgICAgIGRvYzogLyoKIFN0cmluZyBkaXNwbGF5ZWQgaW4gbW9kZSBsaW5lIGZvciBVTklY LWxpa2UgKExGKSBlbmQtb2YtbGluZSBmb3JtYXQuICAqLyk7Ci0gIGVvbF9tbmVtb25pY191bml4 ID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIjoiKTsKKyAgZW9sX21uZW1vbmljX3VuaXggPSBidWls ZF9zdHJpbmcgKCI6Iik7CiAKICAgREVGVkFSX0xJU1AgKCJlb2wtbW5lbW9uaWMtZG9zIiwgZW9s X21uZW1vbmljX2RvcywKIAkgICAgICAgZG9jOiAvKgogU3RyaW5nIGRpc3BsYXllZCBpbiBtb2Rl IGxpbmUgZm9yIERPUy1saWtlIChDUkxGKSBlbmQtb2YtbGluZSBmb3JtYXQuICAqLyk7Ci0gIGVv bF9tbmVtb25pY19kb3MgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiXFwiKTsKKyAgZW9sX21uZW1v bmljX2RvcyA9IGJ1aWxkX3N0cmluZyAoIlxcIik7CiAKICAgREVGVkFSX0xJU1AgKCJlb2wtbW5l bW9uaWMtbWFjIiwgZW9sX21uZW1vbmljX21hYywKIAkgICAgICAgZG9jOiAvKgogU3RyaW5nIGRp c3BsYXllZCBpbiBtb2RlIGxpbmUgZm9yIE1BQy1saWtlIChDUikgZW5kLW9mLWxpbmUgZm9ybWF0 LiAgKi8pOwotICBlb2xfbW5lbW9uaWNfbWFjID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIi8iKTsK KyAgZW9sX21uZW1vbmljX21hYyA9IGJ1aWxkX3N0cmluZyAoIi8iKTsKIAogICBERUZWQVJfTElT UCAoImVvbC1tbmVtb25pYy11bmRlY2lkZWQiLCBlb2xfbW5lbW9uaWNfdW5kZWNpZGVkLAogCSAg ICAgICBkb2M6IC8qCiBTdHJpbmcgZGlzcGxheWVkIGluIG1vZGUgbGluZSB3aGVuIGVuZC1vZi1s aW5lIGZvcm1hdCBpcyBub3QgeWV0IGRldGVybWluZWQuICAqLyk7Ci0gIGVvbF9tbmVtb25pY191 bmRlY2lkZWQgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiOiIpOworICBlb2xfbW5lbW9uaWNfdW5k ZWNpZGVkID0gYnVpbGRfc3RyaW5nICgiOiIpOwogCiAgIERFRlZBUl9MSVNQICgiZW5hYmxlLWNo YXJhY3Rlci10cmFuc2xhdGlvbiIsIFZlbmFibGVfY2hhcmFjdGVyX3RyYW5zbGF0aW9uLAogCSAg ICAgICBkb2M6IC8qCkBAIC0xMjEyNiw3ICsxMjEyNiw3IEBAIHN5c3RlbSAoZS5nLiBgaXNvLTIw MjItN2JpdCcpLgogICAgICAgaW50ZXJuX2Nfc3RyaW5nICgiOmZvci11bmlieXRlIiksCiAgICAg ICBhcmdzW2NvZGluZ19hcmdfZm9yX3VuaWJ5dGVdID0gUXQsCiAgICAgICBpbnRlcm5fY19zdHJp bmcgKCI6ZG9jc3RyaW5nIiksCi0gICAgICAoYnVpbGRfcHVyZV9jX3N0cmluZworICAgICAgKGJ1 aWxkX3N0cmluZwogICAgICAgICgiRG8gbm8gY29udmVyc2lvbi5cbiIKIAkiXG4iCiAJIldoZW4g eW91IHZpc2l0IGEgZmlsZSB3aXRoIHRoaXMgY29kaW5nLCB0aGUgZmlsZSBpcyByZWFkIGludG8g YVxuIgpAQCAtMTIxNDYsNyArMTIxNDYsNyBAQCBzeXN0ZW0gKGUuZy4gYGlzby0yMDIyLTdiaXQn KS4KICAgcGxpc3RbOF0gPSBpbnRlcm5fY19zdHJpbmcgKCI6Y2hhcnNldC1saXN0Iik7CiAgIHBs aXN0WzldID0gYXJnc1tjb2RpbmdfYXJnX2NoYXJzZXRfbGlzdF0gPSBsaXN0MSAoUWFzY2lpKTsK ICAgcGxpc3RbMTFdID0gYXJnc1tjb2RpbmdfYXJnX2Zvcl91bmlieXRlXSA9IFFuaWw7Ci0gIHBs aXN0WzEzXSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJObyBjb252ZXJzaW9uIG9uIGVuY29kaW5n LCAiCisgIHBsaXN0WzEzXSA9IGJ1aWxkX3N0cmluZyAoIk5vIGNvbnZlcnNpb24gb24gZW5jb2Rp bmcsICIKIAkJCQkgICAiYXV0b21hdGljIGNvbnZlcnNpb24gb24gZGVjb2RpbmcuIik7CiAgIHBs aXN0WzE1XSA9IGFyZ3NbY29kaW5nX2FyZ19lb2xfdHlwZV0gPSBRbmlsOwogICBhcmdzW2NvZGlu Z19hcmdfcGxpc3RdID0gQ0FMTE1BTlkgKEZsaXN0LCBwbGlzdCk7CmRpZmYgLS1naXQgYS9zcmMv Y29uZl9wb3N0LmggYi9zcmMvY29uZl9wb3N0LmgKaW5kZXggMWVmNGZmMzM0Mi4uN2MxYjdjMjIy YyAxMDA2NDQKLS0tIGEvc3JjL2NvbmZfcG9zdC5oCisrKyBiL3NyYy9jb25mX3Bvc3QuaApAQCAt MTYxLDQxICsxNjEsOCBAQCAjZGVmaW5lIGVtYWNzX3JhaXNlKHNpZykgbXNkb3NfZmF0YWxfc2ln bmFsIChzaWcpCiAKIC8qIERBVEFfU1RBUlQgaXMgbmVlZGVkIGJ5IHZtLWxpbWl0LmMgYW5kIHVu ZXhjb2ZmLmMuICovCiAjZGVmaW5lIERBVEFfU1RBUlQgKCZldGV4dCArIDEpCi0KLS8qIERlZmlu ZSBvbmUgb2YgdGhlc2UgZm9yIGVhc2llciBjb25kaXRpb25hbHMuICAqLwotI2lmZGVmIEhBVkVf WF9XSU5ET1dTCi0vKiBXZSBuZWVkIGEgbGl0dGxlIGV4dHJhIHNwYWNlLCBzZWUgLi4vLi4vbGlz cC9sb2FkdXAuZWwgYW5kIHRoZQotICAgY29tbWVudGFyeSBiZWxvdywgaW4gdGhlIG5vbi1YIGJy YW5jaC4gIFRoZSAxNDBLQiBudW1iZXIgd2FzCi0gICBtZWFzdXJlZCBvbiBHTlUvTGludXggYW5k IG9uIE1TLVdpbmRvd3MuICAqLwotI2RlZmluZSBTWVNURU1fUFVSRVNJWkVfRVhUUkEgKC0xNzAw MDArMTQwMDAwKQotI2Vsc2UKLS8qIFdlIG5lZWQgYSBsaXR0bGUgZXh0cmEgc3BhY2UsIHNlZSAu Li8uLi9saXNwL2xvYWR1cC5lbC4KLSAgIEFzIG9mIDIwMDkxMDI0LCBET1Mtc3BlY2lmaWMgZmls ZXMgdXNlIHVwIDYyS0Igb2YgcHVyZSBzcGFjZS4gIEJ1dAotICAgb3ZlcmFsbCwgd2UgZW5kIHVw IHdhc3RpbmcgMTMwS0Igb2YgcHVyZSBzcGFjZSwgYmVjYXVzZQotICAgQkFTRV9QVVJFU0laRSBz dGFydHMgYXQgMS40N01CLCB3aGlsZSB3ZSBuZWVkIG9ubHkgMS4zTUIgKGluY2x1ZGluZwotICAg bm9uLURPUyBzcGVjaWZpYyBmaWxlcyBhbmQgbG9hZCBoaXN0b3J5OyB0aGUgbGF0dGVyIGlzIGFi b3V0IDU1SywKLSAgIGJ1dCBkZXBlbmRzIG9uIHRoZSBkZXB0aCBvZiB0aGUgdG9wLWxldmVsIEVt YWNzIGRpcmVjdG9yeSBpbiB0aGUKLSAgIGRpcmVjdG9yeSB0cmVlKS4gIEdpdmVuIHRoZSB1bmtu b3duIHBvbGljeSBvZiBkaWZmZXJlbnQgRFBNSQotICAgaG9zdHMgcmVnYXJkaW5nIGxvYWRpbmcg b2YgdW50b3VjaGVkIHBhZ2VzLCBJJ20gbm90IGdvaW5nIHRvIHJpc2sKLSAgIGVubGFyZ2luZyBF bWFjcyBmb290cHJpbnQgYnkgYW5vdGhlciAxMDArIEtCeXRlcy4gICovCi0jZGVmaW5lIFNZU1RF TV9QVVJFU0laRV9FWFRSQSAoLTE3MDAwMCs5MDAwMCkKLSNlbmRpZgogI2VuZGlmICAvKiBNU0RP UyAqLwogCi0vKiBtYWNPUyAvIEdOVXN0ZXAgbmVlZCBhIGJpdCBtb3JlIHB1cmUgbWVtb3J5LiAg T2YgdGhlIGV4aXN0aW5nIGtub2JzLAotICAgU1lTVEVNX1BVUkVTSVpFX0VYVFJBIHNlZW1zIGxp a2UgdGhlIGxlYXN0IGxpa2VseSB0byBjYXVzZSBwcm9ibGVtcy4gICovCi0jaWZkZWYgSEFWRV9O UwotI2lmIGRlZmluZWQgTlNfSU1QTF9HTlVTVEVQCi0jICBkZWZpbmUgU1lTVEVNX1BVUkVTSVpF X0VYVFJBIDMwMDAwCi0jZWxpZiBkZWZpbmVkIERBUldJTl9PUwotIyAgZGVmaW5lIFNZU1RFTV9Q VVJFU0laRV9FWFRSQSAyMDAwMDAKLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBDWUdXSU4KLSNk ZWZpbmUgU1lTVEVNX1BVUkVTSVpFX0VYVFJBIDUwMDAwCi0jZW5kaWYKLQogI2lmIGRlZmluZWQg SEFWRV9OVEdVSSAmJiAhZGVmaW5lZCBEZWJQcmludAogIyBpZmRlZiBFTUFDU0RFQlVHCiBleHRl cm4gdm9pZCBfRGViUHJpbnQgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKZGlmZiAtLWdpdCBhL3Ny Yy9kYXRhLmMgYi9zcmMvZGF0YS5jCmluZGV4IDU5ZDE0ODE2NmYuLmZjNDY2MmNiYTIgMTAwNjQ0 Ci0tLSBhL3NyYy9kYXRhLmMKKysrIGIvc3JjL2RhdGEuYwpAQCAtMzAsNyArMzAsNiBAQAogCiAj aW5jbHVkZSAibGlzcC5oIgogI2luY2x1ZGUgImJpZ251bS5oIgotI2luY2x1ZGUgInB1cmVzaXpl LmgiCiAjaW5jbHVkZSAiY2hhcmFjdGVyLmgiCiAjaW5jbHVkZSAiYnVmZmVyLmgiCiAjaW5jbHVk ZSAia2V5Ym9hcmQuaCIKQEAgLTE0OSwxMiArMTQ4LDYgQEAgd3JvbmdfdHlwZV9hcmd1bWVudCAo TGlzcF9PYmplY3QgcHJlZGljYXRlLCBMaXNwX09iamVjdCB2YWx1ZSkKICAgeHNpZ25hbDIgKFF3 cm9uZ190eXBlX2FyZ3VtZW50LCBwcmVkaWNhdGUsIHZhbHVlKTsKIH0KIAotdm9pZAotcHVyZV93 cml0ZV9lcnJvciAoTGlzcF9PYmplY3Qgb2JqKQotewotICB4c2lnbmFsMiAoUWVycm9yLCBidWls ZF9zdHJpbmcgKCJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgb2JqZWN0IiksIG9iaik7Ci19 Ci0KIHZvaWQKIGFyZ3Nfb3V0X29mX3JhbmdlIChMaXNwX09iamVjdCBhMSwgTGlzcF9PYmplY3Qg YTIpCiB7CkBAIC02MjUsNyArNjE4LDYgQEAgREVGVU4gKCJzZXRjYXIiLCBGc2V0Y2FyLCBTc2V0 Y2FyLCAyLCAyLCAwLAogICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgY2VsbCwgTGlzcF9PYmplY3Qg bmV3Y2FyKQogewogICBDSEVDS19DT05TIChjZWxsKTsKLSAgQ0hFQ0tfSU1QVVJFIChjZWxsLCBY Q09OUyAoY2VsbCkpOwogICBYU0VUQ0FSIChjZWxsLCBuZXdjYXIpOwogICByZXR1cm4gbmV3Y2Fy OwogfQpAQCAtNjM1LDcgKzYyNyw2IEBAIERFRlVOICgic2V0Y2RyIiwgRnNldGNkciwgU3NldGNk ciwgMiwgMiwgMCwKICAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGNlbGwsIExpc3BfT2JqZWN0IG5l d2NkcikKIHsKICAgQ0hFQ0tfQ09OUyAoY2VsbCk7Ci0gIENIRUNLX0lNUFVSRSAoY2VsbCwgWENP TlMgKGNlbGwpKTsKICAgWFNFVENEUiAoY2VsbCwgbmV3Y2RyKTsKICAgcmV0dXJuIG5ld2NkcjsK IH0KQEAgLTc5OCwxMCArNzg5LDYgQEAgREVGVU4gKCJkZWZhbGlhcyIsIEZkZWZhbGlhcywgU2Rl ZmFsaWFzLCAyLCAzLCAwLAogICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09i amVjdCBkZWZpbml0aW9uLCBMaXNwX09iamVjdCBkb2NzdHJpbmcpCiB7CiAgIENIRUNLX1NZTUJP TCAoc3ltYm9sKTsKLSAgaWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpCi0gICAgICAvKiBJZiBgZGVm aW5pdGlvbicgaXMgYSBrZXltYXAsIGltbXV0YWJsZSAoYW5kIGNvcHlpbmcpIGlzIHdyb25nLiAg Ki8KLSAgICAgICYmICFLRVlNQVBQIChkZWZpbml0aW9uKSkKLSAgICBkZWZpbml0aW9uID0gRnB1 cmVjb3B5IChkZWZpbml0aW9uKTsKIAogICB7CiAgICAgYm9vbCBhdXRvbG9hZCA9IEFVVE9MT0FE UCAoZGVmaW5pdGlvbik7CkBAIC0yMjc2LDcgKzIyNjMsNiBAQCBERUZVTiAoImFzZXQiLCBGYXNl dCwgU2FzZXQsIDMsIDMsIDAsCiAKICAgaWYgKFZFQ1RPUlAgKGFycmF5KSkKICAgICB7Ci0gICAg ICBDSEVDS19JTVBVUkUgKGFycmF5LCBYVkVDVE9SIChhcnJheSkpOwogICAgICAgaWYgKGlkeHZh bCA8IDAgfHwgaWR4dmFsID49IEFTSVpFIChhcnJheSkpCiAJYXJnc19vdXRfb2ZfcmFuZ2UgKGFy cmF5LCBpZHgpOwogICAgICAgQVNFVCAoYXJyYXksIGlkeHZhbCwgbmV3ZWx0KTsKQEAgLTIzMDAs NyArMjI4Niw2IEBAIERFRlVOICgiYXNldCIsIEZhc2V0LCBTYXNldCwgMywgMywgMCwKICAgICB9 CiAgIGVsc2UgLyogU1RSSU5HUCAqLwogICAgIHsKLSAgICAgIENIRUNLX0lNUFVSRSAoYXJyYXks IFhTVFJJTkcgKGFycmF5KSk7CiAgICAgICBpZiAoaWR4dmFsIDwgMCB8fCBpZHh2YWwgPj0gU0NI QVJTIChhcnJheSkpCiAJYXJnc19vdXRfb2ZfcmFuZ2UgKGFycmF5LCBpZHgpOwogICAgICAgQ0hF Q0tfQ0hBUkFDVEVSIChuZXdlbHQpOwpAQCAtMzc4MSw3ICszNzY2LDcgQEAgc3ltc19vZl9kYXRh ICh2b2lkKQogCiAgIERFRlNZTSAoUWNkciwgImNkciIpOwogCi0gIGVycm9yX3RhaWwgPSBwdXJl X2NvbnMgKFFlcnJvciwgUW5pbCk7CisgIGVycm9yX3RhaWwgPSBGY29ucyAoUWVycm9yLCBRbmls KTsKIAogICAvKiBFUlJPUiBpcyB1c2VkIGFzIGEgc2lnbmFsZXIgZm9yIHJhbmRvbSBlcnJvcnMg Zm9yIHdoaWNoIG5vdGhpbmcgZWxzZSBpcwogICAgICByaWdodC4gICovCkBAIC0zNzg5LDExICsz Nzc0LDExIEBAIHN5bXNfb2ZfZGF0YSAodm9pZCkKICAgRnB1dCAoUWVycm9yLCBRZXJyb3JfY29u ZGl0aW9ucywKIAllcnJvcl90YWlsKTsKICAgRnB1dCAoUWVycm9yLCBRZXJyb3JfbWVzc2FnZSwK LQlidWlsZF9wdXJlX2Nfc3RyaW5nICgiZXJyb3IiKSk7CisJYnVpbGRfc3RyaW5nICgiZXJyb3Ii KSk7CiAKICNkZWZpbmUgUFVUX0VSUk9SKHN5bSwgdGFpbCwgbXNnKQkJCVwKLSAgRnB1dCAoc3lt LCBRZXJyb3JfY29uZGl0aW9ucywgcHVyZV9jb25zIChzeW0sIHRhaWwpKTsgXAotICBGcHV0IChz eW0sIFFlcnJvcl9tZXNzYWdlLCBidWlsZF9wdXJlX2Nfc3RyaW5nIChtc2cpKQorICBGcHV0IChz eW0sIFFlcnJvcl9jb25kaXRpb25zLCBGY29ucyAoc3ltLCB0YWlsKSk7IFwKKyAgRnB1dCAoc3lt LCBRZXJyb3JfbWVzc2FnZSwgYnVpbGRfc3RyaW5nIChtc2cpKQogCiAgIFBVVF9FUlJPUiAoUXF1 aXQsIFFuaWwsICJRdWl0Iik7CiAKQEAgLTM4MjEsMTQgKzM4MDYsMTQgQEAgI2RlZmluZSBQVVRf RVJST1Ioc3ltLCB0YWlsLCBtc2cpCQkJXAogICBQVVRfRVJST1IgKFFub19jYXRjaCwgZXJyb3Jf dGFpbCwgIk5vIGNhdGNoIGZvciB0YWciKTsKICAgUFVUX0VSUk9SIChRZW5kX29mX2ZpbGUsIGVy cm9yX3RhaWwsICJFbmQgb2YgZmlsZSBkdXJpbmcgcGFyc2luZyIpOwogCi0gIGFyaXRoX3RhaWwg PSBwdXJlX2NvbnMgKFFhcml0aF9lcnJvciwgZXJyb3JfdGFpbCk7CisgIGFyaXRoX3RhaWwgPSBG Y29ucyAoUWFyaXRoX2Vycm9yLCBlcnJvcl90YWlsKTsKICAgRnB1dCAoUWFyaXRoX2Vycm9yLCBR ZXJyb3JfY29uZGl0aW9ucywgYXJpdGhfdGFpbCk7Ci0gIEZwdXQgKFFhcml0aF9lcnJvciwgUWVy cm9yX21lc3NhZ2UsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJBcml0aG1ldGljIGVycm9yIikpOwor ICBGcHV0IChRYXJpdGhfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLCBidWlsZF9zdHJpbmcgKCJBcml0 aG1ldGljIGVycm9yIikpOwogCiAgIFBVVF9FUlJPUiAoUWJlZ2lubmluZ19vZl9idWZmZXIsIGVy cm9yX3RhaWwsICJCZWdpbm5pbmcgb2YgYnVmZmVyIik7CiAgIFBVVF9FUlJPUiAoUWVuZF9vZl9i dWZmZXIsIGVycm9yX3RhaWwsICJFbmQgb2YgYnVmZmVyIik7CiAgIFBVVF9FUlJPUiAoUWJ1ZmZl cl9yZWFkX29ubHksIGVycm9yX3RhaWwsICJCdWZmZXIgaXMgcmVhZC1vbmx5Iik7Ci0gIFBVVF9F UlJPUiAoUXRleHRfcmVhZF9vbmx5LCBwdXJlX2NvbnMgKFFidWZmZXJfcmVhZF9vbmx5LCBlcnJv cl90YWlsKSwKKyAgUFVUX0VSUk9SIChRdGV4dF9yZWFkX29ubHksIEZjb25zIChRYnVmZmVyX3Jl YWRfb25seSwgZXJyb3JfdGFpbCksCiAJICAgICAiVGV4dCBpcyByZWFkLW9ubHkiKTsKIAogICBE RUZTWU0gKFFyYW5nZV9lcnJvciwgInJhbmdlLWVycm9yIik7CmRpZmYgLS1naXQgYS9zcmMvZGJ1 c2JpbmQuYyBiL3NyYy9kYnVzYmluZC5jCmluZGV4IGY2YTA4NzllNmEuLjEwNWQ5OTA1ZjggMTAw NjQ0Ci0tLSBhL3NyYy9kYnVzYmluZC5jCisrKyBiL3NyYy9kYnVzYmluZC5jCkBAIC0xNzAyLDcg KzE3MDIsNyBAQCBzeW1zX29mX2RidXNiaW5kICh2b2lkKQogICBGcHV0IChRZGJ1c19lcnJvciwg UWVycm9yX2NvbmRpdGlvbnMsCiAJbGlzdDIgKFFkYnVzX2Vycm9yLCBRZXJyb3IpKTsKICAgRnB1 dCAoUWRidXNfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJE LUJ1cyBlcnJvciIpKTsKKwlidWlsZF9zdHJpbmcgKCJELUJ1cyBlcnJvciIpKTsKIAogICAvKiBM aXNwIHN5bWJvbHMgb2YgdGhlIHN5c3RlbSBhbmQgc2Vzc2lvbiBidXNlcy4gICovCiAgIERFRlNZ TSAoUUNzeXN0ZW0sICI6c3lzdGVtIik7CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBzeW1zX29mX2Ri dXNiaW5kICh2b2lkKQogCSAgICAgICBWZGJ1c19jb21waWxlZF92ZXJzaW9uLAogICAgIGRvYzog LyogVGhlIHZlcnNpb24gb2YgRC1CdXMgRW1hY3MgaXMgY29tcGlsZWQgYWdhaW5zdC4gICovKTsK ICNpZmRlZiBEQlVTX1ZFUlNJT05fU1RSSU5HCi0gIFZkYnVzX2NvbXBpbGVkX3ZlcnNpb24gPSBi dWlsZF9wdXJlX2Nfc3RyaW5nIChEQlVTX1ZFUlNJT05fU1RSSU5HKTsKKyAgVmRidXNfY29tcGls ZWRfdmVyc2lvbiA9IGJ1aWxkX3N0cmluZyAoREJVU19WRVJTSU9OX1NUUklORyk7CiAjZWxzZQog ICBWZGJ1c19jb21waWxlZF92ZXJzaW9uID0gUW5pbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3Jj L2RlcHMubWsgYi9zcmMvZGVwcy5tawppbmRleCA0ZDE2MmVlYjBmLi5lZTI3ZDgwNzk3IDEwMDY0 NAotLS0gYS9zcmMvZGVwcy5taworKysgYi9zcmMvZGVwcy5tawpAQCAtMTMyLDEwICsxMzIsMTAg QEAgaW5zZGVsLm86CiBrZXlib2FyZC5vOiBrZXlib2FyZC5jIHRlcm1jaGFyLmggdGVybWhvb2tz LmggdGVybW9wdHMuaCBidWZmZXIuaCBjaGFyYWN0ZXIuaCBcCiAgICBjb21tYW5kcy5oIGZyYW1l Lmggd2luZG93LmggbWFjcm9zLmggZGlzcHRhYi5oIGtleWJvYXJkLmggc3lzc2lnbmFsLmggXAog ICAgc3lzdGltZS5oIHN5bnRheC5oICQoSU5URVJWQUxTX0gpIGJsb2NraW5wdXQuaCBhdGltZXIu aCBjb21wb3NpdGUuaCBcCi0gICB4dGVybS5oIHB1cmVzaXplLmggbXNkb3MuaCBrZXltYXAuaCB3 MzJ0ZXJtLmggbnN0ZXJtLmggbnNndWkuaCBjb2RpbmcuaCBcCisgICB4dGVybS5oIG1zZG9zLmgg a2V5bWFwLmggdzMydGVybS5oIG5zdGVybS5oIG5zZ3VpLmggY29kaW5nLmggXAogICAgcHJvY2Vz cy5oIC4uL2xpYi91bmlzdGQuaCBnbnV0bHMuaCBsaXNwLmggZ2xvYmFscy5oICQoY29uZmlnX2gp CiBrZXltYXAubzoga2V5bWFwLmMgYnVmZmVyLmggY29tbWFuZHMuaCBrZXlib2FyZC5oIHRlcm1o b29rcy5oIGJsb2NraW5wdXQuaCBcCi0gICBhdGltZXIuaCBzeXN0aW1lLmggcHVyZXNpemUuaCBj aGFyYWN0ZXIuaCBjaGFyc2V0LmggJChJTlRFUlZBTFNfSCkgXAorICAgYXRpbWVyLmggc3lzdGlt ZS5oIGNoYXJhY3Rlci5oIGNoYXJzZXQuaCAkKElOVEVSVkFMU19IKSBcCiAgICBrZXltYXAuaCB3 aW5kb3cuaCBjb2RpbmcuaCBmcmFtZS5oIGxpc3AuaCBnbG9iYWxzLmggJChjb25maWdfaCkKIGxh c3RmaWxlLm86IGxhc3RmaWxlLmMgJChjb25maWdfaCkKIG1hY3Jvcy5vOiBtYWNyb3MuYyB3aW5k b3cuaCBidWZmZXIuaCBjb21tYW5kcy5oIG1hY3Jvcy5oIGtleWJvYXJkLmggbXNkb3MuaCBcCkBA IC0yNjcsMTIgKzI2NywxMiBAQCB4c2V0dGluZ3MubzoKICAgIGF0aW1lci5oIHRlcm1vcHRzLmgg Z2xvYmFscy5oCiAKICMjIFRoZSBmaWxlcyBvZiBMaXNwIHByb3Blci4KLWFsbG9jLm86IGFsbG9j LmMgcHJvY2Vzcy5oIGZyYW1lLmggd2luZG93LmggYnVmZmVyLmggIHB1cmVzaXplLmggc3lzc2ln bmFsLmggXAorYWxsb2MubzogYWxsb2MuYyBwcm9jZXNzLmggZnJhbWUuaCB3aW5kb3cuaCBidWZm ZXIuaCBzeXNzaWduYWwuaCBcCiAgICBrZXlib2FyZC5oIGJsb2NraW5wdXQuaCBhdGltZXIuaCBz eXN0aW1lLmggY2hhcmFjdGVyLmggbGlzcC5oICQoY29uZmlnX2gpIFwKICAgICQoSU5URVJWQUxT X0gpIHRlcm1ob29rcy5oIGdudXRscy5oIGNvZGluZy5oIC4uL2xpYi91bmlzdGQuaCBnbG9iYWxz LmgKIGJ5dGVjb2RlLm86IGJ5dGVjb2RlLmMgYnVmZmVyLmggc3ludGF4LmggY2hhcmFjdGVyLmgg d2luZG93LmggZGlzcGV4dGVybi5oIFwKICAgbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKSBt c2Rvcy5oCi1kYXRhLm86IGRhdGEuYyBidWZmZXIuaCBwdXJlc2l6ZS5oIGNoYXJhY3Rlci5oIHN5 c3NpZ25hbC5oIGtleWJvYXJkLmggZnJhbWUuaCBcCitkYXRhLm86IGRhdGEuYyBidWZmZXIuaCBj aGFyYWN0ZXIuaCBzeXNzaWduYWwuaCBrZXlib2FyZC5oIGZyYW1lLmggXAogICAgdGVybWhvb2tz Lmggc3lzdGltZS5oIGNvZGluZy5oIGNvbXBvc2l0ZS5oIGRpc3BleHRlcm4uaCBmb250LmggY2Ns LmggXAogICAgbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKSBtc2Rvcy5oCiBldmFsLm86IGV2 YWwuYyBjb21tYW5kcy5oIGtleWJvYXJkLmggYmxvY2tpbnB1dC5oIGF0aW1lci5oIHN5c3RpbWUu aCBmcmFtZS5oIFwKQEAgLTI5NSw3ICsyOTUsNyBAQCBscmVhZC5vOgogY29tcG9zaXRlLm86IGNv bXBvc2l0ZS5jIGNvbXBvc2l0ZS5oIGJ1ZmZlci5oIGNoYXJhY3Rlci5oIGNvZGluZy5oIGZvbnQu aCBcCiAgICBjY2wuaCBmcmFtZS5oIHRlcm1ob29rcy5oICQoSU5URVJWQUxTX0gpIHdpbmRvdy5o IFwKICAgIGxpc3AuaCBnbG9iYWxzLmggJChjb25maWdfaCkKLWludGVydmFscy5vOiBpbnRlcnZh bHMuYyBidWZmZXIuaCAkKElOVEVSVkFMU19IKSBrZXlib2FyZC5oIHB1cmVzaXplLmggXAoraW50 ZXJ2YWxzLm86IGludGVydmFscy5jIGJ1ZmZlci5oICQoSU5URVJWQUxTX0gpIGtleWJvYXJkLmgg XAogICAga2V5bWFwLmggbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKSBzeXN0aW1lLmggY29k aW5nLmgKIHRleHRwcm9wLm86IHRleHRwcm9wLmMgYnVmZmVyLmggd2luZG93LmggJChJTlRFUlZB TFNfSCkgXAogICAgbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKQpkaWZmIC0tZ2l0IGEvc3Jj L2RvYy5jIGIvc3JjL2RvYy5jCmluZGV4IDI4NWMwZGJiYmUuLmQzNWNkOGJjNGMgMTAwNjQ0Ci0t LSBhL3NyYy9kb2MuYworKysgYi9zcmMvZG9jLmMKQEAgLTUwMCw4ICs1MDAsNiBAQCBzdG9yZV9m dW5jdGlvbl9kb2NzdHJpbmcgKExpc3BfT2JqZWN0IG9iaiwgRU1BQ1NfSU5UIG9mZnNldCkKIAl7 CiAJICB0ZW0gPSBGY2RyIChGY2RyIChmdW4pKTsKIAkgIGlmIChDT05TUCAodGVtKSAmJiBGSVhO VU1QIChYQ0FSICh0ZW0pKSkKLQkgICAgLyogRklYTUU6IFRoaXMgbW9kaWZpZXMgdHlwaWNhbGx5 IHB1cmUgaGFzaC1jb25zJ2QgZGF0YSwgc28gaXRzCi0JICAgICAgIGNvcnJlY3RuZXNzIGlzIHF1 aXRlIGRlbGljYXRlLiAgKi8KIAkgICAgWFNFVENBUiAodGVtLCBtYWtlX2ZpeG51bSAob2Zmc2V0 KSk7CiAJfQogICAgIH0KQEAgLTU4NSw3ICs1ODMsNiBAQCBERUZVTiAoIlNuYXJmLWRvY3VtZW50 YXRpb24iLCBGc25hcmZfZG9jdW1lbnRhdGlvbiwgU3NuYXJmX2RvY3VtZW50YXRpb24sCiAgICAg ICBpbnQgaSA9IEFSUkFZRUxUUyAoYnVpbGRvYmopOwogICAgICAgd2hpbGUgKDAgPD0gLS1pKQog CVZidWlsZF9maWxlcyA9IEZjb25zIChidWlsZF9zdHJpbmcgKGJ1aWxkb2JqW2ldKSwgVmJ1aWxk X2ZpbGVzKTsKLSAgICAgIFZidWlsZF9maWxlcyA9IEZwdXJlY29weSAoVmJ1aWxkX2ZpbGVzKTsK ICAgICB9CiAKICAgZmQgPSBlbWFjc19vcGVuIChuYW1lLCBPX1JET05MWSwgMCk7CmRpZmYgLS1n aXQgYS9zcmMvZW1hY3MtbW9kdWxlLmMgYi9zcmMvZW1hY3MtbW9kdWxlLmMKaW5kZXggYTBiYWIx MTgwMS4uMWEzYzQ2MDMwNCAxMDA2NDQKLS0tIGEvc3JjL2VtYWNzLW1vZHVsZS5jCisrKyBiL3Ny Yy9lbWFjcy1tb2R1bGUuYwpAQCAtMTU3Niw3ICsxNTc2LDcgQEAgc3ltc19vZl9tb2R1bGUgKHZv aWQpCiAgIFZtb2R1bGVfcmVmc19oYXNoCiAgICAgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0 X2VxLCBERUZBVUxUX0hBU0hfU0laRSwKIAkJICAgICAgIERFRkFVTFRfUkVIQVNIX1NJWkUsIERF RkFVTFRfUkVIQVNIX1RIUkVTSE9MRCwKLQkJICAgICAgIFFuaWwsIGZhbHNlKTsKKwkJICAgICAg IFFuaWwpOwogCiAgIHN0YXRpY3BybyAoJlZtb2R1bGVfcnVudGltZXMpOwogICBWbW9kdWxlX3J1 bnRpbWVzID0gUW5pbDsKQEAgLTE1ODYsNDAgKzE1ODYsNDAgQEAgc3ltc19vZl9tb2R1bGUgKHZv aWQpCiAKICAgREVGU1lNIChRbW9kdWxlX2xvYWRfZmFpbGVkLCAibW9kdWxlLWxvYWQtZmFpbGVk Iik7CiAgIEZwdXQgKFFtb2R1bGVfbG9hZF9mYWlsZWQsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1 cmVfbGlzdCAoUW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUW1vZHVsZV9s b2FkX2ZhaWxlZCwgUWVycm9yKSk7CiAgIEZwdXQgKFFtb2R1bGVfbG9hZF9mYWlsZWQsIFFlcnJv cl9tZXNzYWdlLAotICAgICAgICBidWlsZF9wdXJlX2Nfc3RyaW5nICgiTW9kdWxlIGxvYWQgZmFp bGVkIikpOworICAgICAgICBidWlsZF9zdHJpbmcgKCJNb2R1bGUgbG9hZCBmYWlsZWQiKSk7CiAK ICAgREVGU1lNIChRbW9kdWxlX29wZW5fZmFpbGVkLCAibW9kdWxlLW9wZW4tZmFpbGVkIik7CiAg IEZwdXQgKFFtb2R1bGVfb3Blbl9mYWlsZWQsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlz dCAoUW1vZHVsZV9vcGVuX2ZhaWxlZCwgUW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7CisJ bGlzdCAoUW1vZHVsZV9vcGVuX2ZhaWxlZCwgUW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7 CiAgIEZwdXQgKFFtb2R1bGVfb3Blbl9mYWlsZWQsIFFlcnJvcl9tZXNzYWdlLAotICAgICAgICBi dWlsZF9wdXJlX2Nfc3RyaW5nICgiTW9kdWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQiKSk7CisgICAg ICAgIGJ1aWxkX3N0cmluZyAoIk1vZHVsZSBjb3VsZCBub3QgYmUgb3BlbmVkIikpOwogCiAgIERF RlNZTSAoUW1vZHVsZV9ub3RfZ3BsX2NvbXBhdGlibGUsICJtb2R1bGUtbm90LWdwbC1jb21wYXRp YmxlIik7CiAgIEZwdXQgKFFtb2R1bGVfbm90X2dwbF9jb21wYXRpYmxlLCBRZXJyb3JfY29uZGl0 aW9ucywKLQlwdXJlX2xpc3QgKFFtb2R1bGVfbm90X2dwbF9jb21wYXRpYmxlLCBRbW9kdWxlX2xv YWRfZmFpbGVkLCBRZXJyb3IpKTsKKwlsaXN0IChRbW9kdWxlX25vdF9ncGxfY29tcGF0aWJsZSwg UW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7CiAgIEZwdXQgKFFtb2R1bGVfbm90X2dwbF9j b21wYXRpYmxlLCBRZXJyb3JfbWVzc2FnZSwKLSAgICAgICAgYnVpbGRfcHVyZV9jX3N0cmluZyAo Ik1vZHVsZSBpcyBub3QgR1BMIGNvbXBhdGlibGUiKSk7CisgICAgICAgIGJ1aWxkX3N0cmluZyAo Ik1vZHVsZSBpcyBub3QgR1BMIGNvbXBhdGlibGUiKSk7CiAKICAgREVGU1lNIChRbWlzc2luZ19t b2R1bGVfaW5pdF9mdW5jdGlvbiwgIm1pc3NpbmctbW9kdWxlLWluaXQtZnVuY3Rpb24iKTsKICAg RnB1dCAoUW1pc3NpbmdfbW9kdWxlX2luaXRfZnVuY3Rpb24sIFFlcnJvcl9jb25kaXRpb25zLAot CXB1cmVfbGlzdCAoUW1pc3NpbmdfbW9kdWxlX2luaXRfZnVuY3Rpb24sIFFtb2R1bGVfbG9hZF9m YWlsZWQsCi0JCSAgIFFlcnJvcikpOworCWxpc3QgKFFtaXNzaW5nX21vZHVsZV9pbml0X2Z1bmN0 aW9uLCBRbW9kdWxlX2xvYWRfZmFpbGVkLAorCSAgICAgIFFlcnJvcikpOwogICBGcHV0IChRbWlz c2luZ19tb2R1bGVfaW5pdF9mdW5jdGlvbiwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxk X3B1cmVfY19zdHJpbmcgKCJNb2R1bGUgZG9lcyBub3QgZXhwb3J0IGFuICIKKyAgICAgICAgYnVp bGRfc3RyaW5nICgiTW9kdWxlIGRvZXMgbm90IGV4cG9ydCBhbiAiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJpbml0aWFsaXphdGlvbiBmdW5jdGlvbiIpKTsKIAogICBERUZTWU0gKFFt b2R1bGVfaW5pdF9mYWlsZWQsICJtb2R1bGUtaW5pdC1mYWlsZWQiKTsKICAgRnB1dCAoUW1vZHVs ZV9pbml0X2ZhaWxlZCwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRbW9kdWxlX2lu aXRfZmFpbGVkLCBRbW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3IpKTsKKwlsaXN0IChRbW9kdWxl X2luaXRfZmFpbGVkLCBRbW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3IpKTsKICAgRnB1dCAoUW1v ZHVsZV9pbml0X2ZhaWxlZCwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxkX3B1cmVfY19z dHJpbmcgKCJNb2R1bGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIikpOworICAgICAgICBidWlsZF9z dHJpbmcgKCJNb2R1bGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIikpOwogCiAgIERFRlNZTSAoUWlu dmFsaWRfYXJpdHksICJpbnZhbGlkLWFyaXR5Iik7Ci0gIEZwdXQgKFFpbnZhbGlkX2FyaXR5LCBR ZXJyb3JfY29uZGl0aW9ucywgcHVyZV9saXN0IChRaW52YWxpZF9hcml0eSwgUWVycm9yKSk7Cisg IEZwdXQgKFFpbnZhbGlkX2FyaXR5LCBRZXJyb3JfY29uZGl0aW9ucywgbGlzdCAoUWludmFsaWRf YXJpdHksIFFlcnJvcikpOwogICBGcHV0IChRaW52YWxpZF9hcml0eSwgUWVycm9yX21lc3NhZ2Us Ci0gICAgICAgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJJbnZhbGlkIGZ1bmN0aW9uIGFyaXR5Iikp OworICAgICAgICBidWlsZF9zdHJpbmcgKCJJbnZhbGlkIGZ1bmN0aW9uIGFyaXR5IikpOwogCiAg IERFRlNZTSAoUW1vZHVsZV9mdW5jdGlvbl9wLCAibW9kdWxlLWZ1bmN0aW9uLXAiKTsKICAgREVG U1lNIChRdW5pY29kZV9zdHJpbmdfcCwgInVuaWNvZGUtc3RyaW5nLXAiKTsKZGlmZiAtLWdpdCBh L3NyYy9lbWFjcy5jIGIvc3JjL2VtYWNzLmMKaW5kZXggMDU5ZTFjNmQ4Zi4uY2UxMGZjODAwNCAx MDA2NDQKLS0tIGEvc3JjL2VtYWNzLmMKKysrIGIvc3JjL2VtYWNzLmMKQEAgLTg4LDcgKzg4LDYg QEAgI2RlZmluZSBNQUlOX1BST0dSQU0KICNpbmNsdWRlICJzeW50YXguaCIKICNpbmNsdWRlICJz eXNzZWxlY3QuaCIKICNpbmNsdWRlICJzeXN0aW1lLmgiCi0jaW5jbHVkZSAicHVyZXNpemUuaCIK IAogI2luY2x1ZGUgImdldHBhZ2VzaXplLmgiCiAjaW5jbHVkZSAiZ251dGxzLmgiCkBAIC0xNTM2 LDcgKzE1MzUsOSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgIGlmICghaW5pdGlh bGl6ZWQpCiAgICAgewogICAgICAgaW5pdF9hbGxvY19vbmNlICgpOworI2lmZGVmIEhBVkVfUERV TVBFUgogICAgICAgaW5pdF9wZHVtcGVyX29uY2UgKCk7CisjZW5kaWYKICAgICAgIGluaXRfb2Jh cnJheV9vbmNlICgpOwogICAgICAgaW5pdF9ldmFsX29uY2UgKCk7CiAgICAgICBpbml0X2NoYXJz ZXRfb25jZSAoKTsKQEAgLTI0OTksOCArMjUwMCw2IEBAIERFRlVOICgiZHVtcC1lbWFjcyIsIEZk dW1wX2VtYWNzLCBTZHVtcF9lbWFjcywgMiwgMiwgMCwKICAgTGlzcF9PYmplY3Qgc3ltYm9sOwog ICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogCi0gIGNoZWNrX3B1cmVfc2l6 ZSAoKTsKLQogICBpZiAoISBub25pbnRlcmFjdGl2ZSkKICAgICBlcnJvciAoIkR1bXBpbmcgRW1h Y3Mgd29ya3Mgb25seSBpbiBiYXRjaCBtb2RlIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMg Yi9zcmMvZXZhbC5jCmluZGV4IDlkYWFlOTJlNTUuLjY2YWVhMDhlMDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtNzI2LDggKzcyNiw2IEBAIERFRlVOICgiaW50 ZXJuYWwtLWRlZmluZS11bmluaXRpYWxpemVkLXZhcmlhYmxlIiwKICAgWFNZTUJPTCAoc3ltYm9s KS0+dS5zLmRlY2xhcmVkX3NwZWNpYWwgPSB0cnVlOwogICBpZiAoIU5JTFAgKGRvYykpCiAgICAg ewotICAgICAgaWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpKQotCWRvYyA9IEZwdXJlY29weSAoZG9j KTsKICAgICAgIEZwdXQgKHN5bWJvbCwgUXZhcmlhYmxlX2RvY3VtZW50YXRpb24sIGRvYyk7CiAg ICAgfQogICBMT0FESElTVF9BVFRBQ0ggKHN5bWJvbCk7CkBAIC04NDIsOCArODQwLDYgQEAgREVG VU4gKCJkZWZjb25zdCIsIEZkZWZjb25zdCwgU2RlZmNvbnN0LCAyLCBVTkVWQUxMRUQsIDAsCiAK ICAgRmludGVybmFsX19kZWZpbmVfdW5pbml0aWFsaXplZF92YXJpYWJsZSAoc3ltLCBkb2NzdHJp bmcpOwogICB0ZW0gPSBldmFsX3N1YiAoWENBUiAoWENEUiAoYXJncykpKTsKLSAgaWYgKCFOSUxQ IChWcHVyaWZ5X2ZsYWcpKQotICAgIHRlbSA9IEZwdXJlY29weSAodGVtKTsKICAgRnNldF9kZWZh dWx0IChzeW0sIHRlbSk7ICAgICAgLyogRklYTUU6IHNldC1kZWZhdWx0LXRvcGxldmVsLXZhbHVl PyAqLwogICBGcHV0IChzeW0sIFFyaXNreV9sb2NhbF92YXJpYWJsZSwgUXQpOyAvKiBGSVhNRTog V2h5PyAgKi8KICAgcmV0dXJuIHN5bTsKQEAgLTE5OTAsMTIgKzE5ODYsNiBAQCBERUZVTiAoImF1 dG9sb2FkIiwgRmF1dG9sb2FkLCBTYXV0b2xvYWQsIDIsIDUsIDAsCiAgICAgICAmJiAhQVVUT0xP QURQIChYU1lNQk9MIChmdW5jdGlvbiktPnUucy5mdW5jdGlvbikpCiAgICAgcmV0dXJuIFFuaWw7 CiAKLSAgaWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpICYmIEVRIChkb2NzdHJpbmcsIG1ha2VfZml4 bnVtICgwKSkpCi0gICAgLyogYHJlYWQxJyBpbiBscmVhZC5jIGhhcyBmb3VuZCB0aGUgZG9jc3Ry aW5nIHN0YXJ0aW5nIHdpdGggIlwKLSAgICAgICBhbmQgYXNzdW1lZCB0aGUgZG9jc3RyaW5nIHdp bGwgYmUgcHJvdmlkZWQgYnkgU25hcmYtZG9jdW1lbnRhdGlvbiwgc28gaXQKLSAgICAgICBwYXNz ZWQgdXMgMCBpbnN0ZWFkLiAgQnV0IHRoYXQgbGVhZHMgdG8gYWNjaWRlbnRhbCBzaGFyaW5nIGlu IHB1cmVjb3B5J3MKLSAgICAgICBoYXNoLWNvbnNpbmcsIHNvIHdlIHVzZSBhIChob3BlZnVsbHkp IHVuaXF1ZSBpbnRlZ2VyIGluc3RlYWQuICAqLwotICAgIGRvY3N0cmluZyA9IG1ha2VfdWZpeG51 bSAoWEhBU0ggKGZ1bmN0aW9uKSk7CiAgIHJldHVybiBGZGVmYWxpYXMgKGZ1bmN0aW9uLAogCQkg ICAgbGlzdDUgKFFhdXRvbG9hZCwgZmlsZSwgZG9jc3RyaW5nLCBpbnRlcmFjdGl2ZSwgdHlwZSks CiAJCSAgICBRbmlsKTsKQEAgLTQxOTUsNyArNDE4NSw3IEBAIHN5bXNfb2ZfZXZhbCAodm9pZCkK ICAgICAgYWxzbyB1c2Ugc29tZXRoaW5nIGxpa2UgRmNvbnMgKFFuaWwsIFFuaWwpLCBidXQganNv bi5jIHRyZWF0cyBhbnkKICAgICAgY29ucyBjZWxsIGFzIGVycm9yIGRhdGEsIHNvIHVzZSBhbiB1 bmludGVybmVkIHN5bWJvbCBpbnN0ZWFkLiAgKi8KICAgUWNhdGNoX2FsbF9tZW1vcnlfZnVsbAot ICAgID0gRm1ha2Vfc3ltYm9sIChidWlsZF9wdXJlX2Nfc3RyaW5nICgiY2F0Y2gtYWxsLW1lbW9y eS1mdWxsIikpOworICAgID0gRm1ha2Vfc3ltYm9sIChidWlsZF9zdHJpbmcgKCJjYXRjaC1hbGwt bWVtb3J5LWZ1bGwiKSk7CiAKICAgZGVmc3ViciAoJlNvcik7CiAgIGRlZnN1YnIgKCZTYW5kKTsK ZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYwppbmRleCAzNzA3MmQ5YjZi Li42NjE5ODAxYTA4IDEwMDY0NAotLS0gYS9zcmMvZmlsZWlvLmMKKysrIGIvc3JjL2ZpbGVpby5j CkBAIC02Mjc0LDI5ICs2Mjc0LDI5IEBAIHN5bXNfb2ZfZmlsZWlvICh2b2lkKQogICBERUZTWU0g KFFjYXJfbGVzc190aGFuX2NhciwgImNhci1sZXNzLXRoYW4tY2FyIik7CiAKICAgRnB1dCAoUWZp bGVfZXJyb3IsIFFlcnJvcl9jb25kaXRpb25zLAotCUZwdXJlY29weSAobGlzdDIgKFFmaWxlX2Vy cm9yLCBRZXJyb3IpKSk7CisJbGlzdDIgKFFmaWxlX2Vycm9yLCBRZXJyb3IpKTsKICAgRnB1dCAo UWZpbGVfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJGaWxl IGVycm9yIikpOworCWJ1aWxkX3N0cmluZyAoIkZpbGUgZXJyb3IiKSk7CiAKICAgRnB1dCAoUWZp bGVfYWxyZWFkeV9leGlzdHMsIFFlcnJvcl9jb25kaXRpb25zLAotCUZwdXJlY29weSAobGlzdDMg KFFmaWxlX2FscmVhZHlfZXhpc3RzLCBRZmlsZV9lcnJvciwgUWVycm9yKSkpOworCWxpc3QzIChR ZmlsZV9hbHJlYWR5X2V4aXN0cywgUWZpbGVfZXJyb3IsIFFlcnJvcikpOwogICBGcHV0IChRZmls ZV9hbHJlYWR5X2V4aXN0cywgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAo IkZpbGUgYWxyZWFkeSBleGlzdHMiKSk7CisJYnVpbGRfc3RyaW5nICgiRmlsZSBhbHJlYWR5IGV4 aXN0cyIpKTsKIAogICBGcHV0IChRZmlsZV9kYXRlX2Vycm9yLCBRZXJyb3JfY29uZGl0aW9ucywK LQlGcHVyZWNvcHkgKGxpc3QzIChRZmlsZV9kYXRlX2Vycm9yLCBRZmlsZV9lcnJvciwgUWVycm9y KSkpOworCWxpc3QzIChRZmlsZV9kYXRlX2Vycm9yLCBRZmlsZV9lcnJvciwgUWVycm9yKSk7CiAg IEZwdXQgKFFmaWxlX2RhdGVfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19z dHJpbmcgKCJDYW5ub3Qgc2V0IGZpbGUgZGF0ZSIpKTsKKwlidWlsZF9zdHJpbmcgKCJDYW5ub3Qg c2V0IGZpbGUgZGF0ZSIpKTsKIAogICBGcHV0IChRZmlsZV9taXNzaW5nLCBRZXJyb3JfY29uZGl0 aW9ucywKLQlGcHVyZWNvcHkgKGxpc3QzIChRZmlsZV9taXNzaW5nLCBRZmlsZV9lcnJvciwgUWVy cm9yKSkpOworCWxpc3QzIChRZmlsZV9taXNzaW5nLCBRZmlsZV9lcnJvciwgUWVycm9yKSk7CiAg IEZwdXQgKFFmaWxlX21pc3NpbmcsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJp bmcgKCJGaWxlIGlzIG1pc3NpbmciKSk7CisJYnVpbGRfc3RyaW5nICgiRmlsZSBpcyBtaXNzaW5n IikpOwogCiAgIEZwdXQgKFFmaWxlX25vdGlmeV9lcnJvciwgUWVycm9yX2NvbmRpdGlvbnMsCi0J RnB1cmVjb3B5IChsaXN0MyAoUWZpbGVfbm90aWZ5X2Vycm9yLCBRZmlsZV9lcnJvciwgUWVycm9y KSkpOworCWxpc3QzIChRZmlsZV9ub3RpZnlfZXJyb3IsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKTsK ICAgRnB1dCAoUWZpbGVfbm90aWZ5X2Vycm9yLCBRZXJyb3JfbWVzc2FnZSwKLQlidWlsZF9wdXJl X2Nfc3RyaW5nICgiRmlsZSBub3RpZmljYXRpb24gZXJyb3IiKSk7CisJYnVpbGRfc3RyaW5nICgi RmlsZSBub3RpZmljYXRpb24gZXJyb3IiKSk7CiAKICAgREVGVkFSX0xJU1AgKCJmaWxlLW5hbWUt aGFuZGxlci1hbGlzdCIsIFZmaWxlX25hbWVfaGFuZGxlcl9hbGlzdCwKIAkgICAgICAgZG9jOiAv KiBBbGlzdCBvZiBlbGVtZW50cyAoUkVHRVhQIC4gSEFORExFUikgZm9yIGZpbGUgbmFtZXMgaGFu ZGxlZCBzcGVjaWFsbHkuCmRpZmYgLS1naXQgYS9zcmMvZm5zLmMgYi9zcmMvZm5zLmMKaW5kZXgg YTNiOGQ2ZWY1Ny4uNjRiMjlhNTQyZiAxMDA2NDQKLS0tIGEvc3JjL2Zucy5jCisrKyBiL3NyYy9m bnMuYwpAQCAtMzYsNyArMzYsNiBAQCBDb3B5cmlnaHQgKEMpIDE5ODUtMTk4NywgMTk5My0xOTk1 LCAxOTk3LTIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAogI2luY2x1ZGUgImJ1ZmZlci5o IgogI2luY2x1ZGUgImludGVydmFscy5oIgogI2luY2x1ZGUgIndpbmRvdy5oIgotI2luY2x1ZGUg InB1cmVzaXplLmgiCiAjaW5jbHVkZSAiZ251dGxzLmgiCiAKIHN0YXRpYyB2b2lkIHNvcnRfdmVj dG9yX2NvcHkgKExpc3BfT2JqZWN0LCBwdHJkaWZmX3QsCkBAIC0yNTI3LDcgKzI1MjYsNiBAQCBE RUZVTiAoImZpbGxhcnJheSIsIEZmaWxsYXJyYXksIFNmaWxsYXJyYXksIDIsIDIsIDAsCiAgICAg ICBzaXplID0gU0NIQVJTIChhcnJheSk7CiAgICAgICBpZiAoc2l6ZSAhPSAwKQogCXsKLQkgIENI RUNLX0lNUFVSRSAoYXJyYXksIFhTVFJJTkcgKGFycmF5KSk7CiAJICB1bnNpZ25lZCBjaGFyIHN0 cltNQVhfTVVMVElCWVRFX0xFTkdUSF07CiAJICBpbnQgbGVuOwogCSAgaWYgKFNUUklOR19NVUxU SUJZVEUgKGFycmF5KSkKQEAgLTI1NjksNyArMjU2Nyw2IEBAIERFRlVOICgiY2xlYXItc3RyaW5n IiwgRmNsZWFyX3N0cmluZywgU2NsZWFyX3N0cmluZywKICAgcHRyZGlmZl90IGxlbiA9IFNCWVRF UyAoc3RyaW5nKTsKICAgaWYgKGxlbiAhPSAwIHx8IFNUUklOR19NVUxUSUJZVEUgKHN0cmluZykp CiAgICAgewotICAgICAgQ0hFQ0tfSU1QVVJFIChzdHJpbmcsIFhTVFJJTkcgKHN0cmluZykpOwog ICAgICAgbWVtc2V0IChTREFUQSAoc3RyaW5nKSwgMCwgbGVuKTsKICAgICAgIFNUUklOR19TRVRf Q0hBUlMgKHN0cmluZywgbGVuKTsKICAgICAgIFNUUklOR19TRVRfVU5JQllURSAoc3RyaW5nKTsK QEAgLTQxMDEsMTYgKzQwOTgsMTIgQEAgaGFzaF9pbmRleF9zaXplIChzdHJ1Y3QgTGlzcF9IYXNo X1RhYmxlICpoLCBwdHJkaWZmX3Qgc2l6ZSkKICAgIHNpemUgZXhjZWVkcyBSRUhBU0hfVEhSRVNI T0xELgogCiAgICBXRUFLIHNwZWNpZmllcyB0aGUgd2Vha25lc3Mgb2YgdGhlIHRhYmxlLiAgSWYg bm9uLW5pbCwgaXQgbXVzdCBiZQotICAgb25lIG9mIHRoZSBzeW1ib2xzIGBrZXknLCBgdmFsdWUn LCBga2V5LW9yLXZhbHVlJywgb3IgYGtleS1hbmQtdmFsdWUnLgotCi0gICBJZiBQVVJFQ09QWSBp cyBub24tbmlsLCB0aGUgdGFibGUgY2FuIGJlIGNvcGllZCB0byBwdXJlIHN0b3JhZ2UgdmlhCi0g ICBgcHVyZWNvcHknIHdoZW4gRW1hY3MgaXMgYmVpbmcgZHVtcGVkLiBTdWNoIHRhYmxlcyBjYW4g bm8gbG9uZ2VyIGJlCi0gICBjaGFuZ2VkIGFmdGVyIHB1cmVjb3B5LiAgKi8KKyAgIG9uZSBvZiB0 aGUgc3ltYm9scyBga2V5JywgYHZhbHVlJywgYGtleS1vci12YWx1ZScsIG9yIGBrZXktYW5kLXZh bHVlJy4gKi8KIAogTGlzcF9PYmplY3QKIG1ha2VfaGFzaF90YWJsZSAoc3RydWN0IGhhc2hfdGFi bGVfdGVzdCB0ZXN0LCBFTUFDU19JTlQgc2l6ZSwKIAkJIGZsb2F0IHJlaGFzaF9zaXplLCBmbG9h dCByZWhhc2hfdGhyZXNob2xkLAotCQkgTGlzcF9PYmplY3Qgd2VhaywgYm9vbCBwdXJlY29weSkK KwkJIExpc3BfT2JqZWN0IHdlYWspCiB7CiAgIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmg7CiAg IExpc3BfT2JqZWN0IHRhYmxlOwpAQCAtNDEzOSw3ICs0MTMyLDYgQEAgbWFrZV9oYXNoX3RhYmxl IChzdHJ1Y3QgaGFzaF90YWJsZV90ZXN0IHRlc3QsIEVNQUNTX0lOVCBzaXplLAogICBoLT5uZXh0 ID0gbWFrZV92ZWN0b3IgKHNpemUsIG1ha2VfZml4bnVtICgtMSkpOwogICBoLT5pbmRleCA9IG1h a2VfdmVjdG9yIChoYXNoX2luZGV4X3NpemUgKGgsIHNpemUpLCBtYWtlX2ZpeG51bSAoLTEpKTsK ICAgaC0+bmV4dF93ZWFrID0gTlVMTDsKLSAgaC0+cHVyZWNvcHkgPSBwdXJlY29weTsKICAgaC0+ bXV0YWJsZSA9IHRydWU7CiAKICAgLyogU2V0IHVwIHRoZSBmcmVlIGxpc3QuICAqLwpAQCAtNDI0 MCwxMSArNDIzMiw2IEBAIG1heWJlX3Jlc2l6ZV9oYXNoX3RhYmxlIChzdHJ1Y3QgTGlzcF9IYXNo X1RhYmxlICpoKQogCSAgICBzZXRfaGFzaF9uZXh0X3Nsb3QgKGgsIGksIEhBU0hfSU5ERVggKGgs IHN0YXJ0X29mX2J1Y2tldCkpOwogCSAgICBzZXRfaGFzaF9pbmRleF9zbG90IChoLCBzdGFydF9v Zl9idWNrZXQsIGkpOwogCSAgfQotCi0jaWZkZWYgRU5BQkxFX0NIRUNLSU5HCi0gICAgICBpZiAo SEFTSF9UQUJMRV9QIChWcHVyaWZ5X2ZsYWcpICYmIFhIQVNIX1RBQkxFIChWcHVyaWZ5X2ZsYWcp ID09IGgpCi0JbWVzc2FnZSAoIkdyb3dpbmcgaGFzaCB0YWJsZSB0bzogJSJwRCJkIiwgbmV4dF9z aXplKTsKLSNlbmRpZgogICAgIH0KIH0KIApAQCAtNDMwNyw3ICs0Mjk0LDYgQEAgY2hlY2tfbXV0 YWJsZV9oYXNoX3RhYmxlIChMaXNwX09iamVjdCBvYmosIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUg KmgpCiB7CiAgIGlmICghaC0+bXV0YWJsZSkKICAgICBzaWduYWxfZXJyb3IgKCJoYXNoIHRhYmxl IHRlc3QgbW9kaWZpZXMgdGFibGUiLCBvYmopOwotICBlYXNzZXJ0ICghUFVSRV9QIChoKSk7CiB9 CiAKIC8qIFB1dCBhbiBlbnRyeSBpbnRvIGhhc2ggdGFibGUgSCB0aGF0IGFzc29jaWF0ZXMgS0VZ IHdpdGggVkFMVUUuCkBAIC00Nzg0LDE2ICs0NzcwLDEwIEBAIERFRlVOICgibWFrZS1oYXNoLXRh YmxlIiwgRm1ha2VfaGFzaF90YWJsZSwgU21ha2VfaGFzaF90YWJsZSwgMCwgTUFOWSwgMCwKIFdF QUsuICBXRUFLIHQgaXMgZXF1aXZhbGVudCB0byBga2V5LWFuZC12YWx1ZScuICBEZWZhdWx0IHZh bHVlIG9mIFdFQUsKIGlzIG5pbC4KIAotOnB1cmVjb3B5IFBVUkVDT1BZIC0tIElmIFBVUkVDT1BZ IGlzIG5vbi1uaWwsIHRoZSB0YWJsZSBjYW4gYmUgY29waWVkCi10byBwdXJlIHN0b3JhZ2Ugd2hl biBFbWFjcyBpcyBiZWluZyBkdW1wZWQsIG1ha2luZyB0aGUgY29udGVudHMgb2YgdGhlCi10YWJs ZSByZWFkIG9ubHkuIEFueSBmdXJ0aGVyIGNoYW5nZXMgdG8gcHVyaWZpZWQgdGFibGVzIHdpbGwg cmVzdWx0Ci1pbiBhbiBlcnJvci4KLQogdXNhZ2U6IChtYWtlLWhhc2gtdGFibGUgJnJlc3QgS0VZ V09SRC1BUkdTKSAgKi8pCiAgIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzKQog ewogICBMaXNwX09iamVjdCB0ZXN0LCB3ZWFrOwotICBib29sIHB1cmVjb3B5OwogICBzdHJ1Y3Qg aGFzaF90YWJsZV90ZXN0IHRlc3RkZXNjOwogICBwdHJkaWZmX3QgaTsKICAgVVNFX1NBRkVfQUxM T0NBOwpAQCAtNDgyNyw5ICs0ODA3LDggQEAgREVGVU4gKCJtYWtlLWhhc2gtdGFibGUiLCBGbWFr ZV9oYXNoX3RhYmxlLCBTbWFrZV9oYXNoX3RhYmxlLCAwLCBNQU5ZLCAwLAogICAgICAgdGVzdGRl c2MuY21wZm4gPSBjbXBmbl91c2VyX2RlZmluZWQ7CiAgICAgfQogCi0gIC8qIFNlZSBpZiB0aGVy ZSdzIGEgYDpwdXJlY29weSBQVVJFQ09QWScgYXJndW1lbnQuICAqLwotICBpID0gZ2V0X2tleV9h cmcgKFFDcHVyZWNvcHksIG5hcmdzLCBhcmdzLCB1c2VkKTsKLSAgcHVyZWNvcHkgPSBpICYmICFO SUxQIChhcmdzW2ldKTsKKyAgLyogSWdub3JlIGEgYDpwdXJlY29weSBQVVJFQ09QWScgYXJndW1l bnQuICAqLworICBnZXRfa2V5X2FyZyAoUUNwdXJlY29weSwgbmFyZ3MsIGFyZ3MsIHVzZWQpOwog ICAvKiBTZWUgaWYgdGhlcmUncyBhIGA6c2l6ZSBTSVpFJyBhcmd1bWVudC4gICovCiAgIGkgPSBn ZXRfa2V5X2FyZyAoUUNzaXplLCBuYXJncywgYXJncywgdXNlZCk7CiAgIExpc3BfT2JqZWN0IHNp emVfYXJnID0gaSA/IGFyZ3NbaV0gOiBRbmlsOwpAQCAtNDg3OSw4ICs0ODU4LDcgQEAgREVGVU4g KCJtYWtlLWhhc2gtdGFibGUiLCBGbWFrZV9oYXNoX3RhYmxlLCBTbWFrZV9oYXNoX3RhYmxlLCAw LCBNQU5ZLCAwLAogICAgICAgc2lnbmFsX2Vycm9yICgiSW52YWxpZCBhcmd1bWVudCBsaXN0Iiwg YXJnc1tpXSk7CiAKICAgU0FGRV9GUkVFICgpOwotICByZXR1cm4gbWFrZV9oYXNoX3RhYmxlICh0 ZXN0ZGVzYywgc2l6ZSwgcmVoYXNoX3NpemUsIHJlaGFzaF90aHJlc2hvbGQsIHdlYWssCi0JCQkg IHB1cmVjb3B5KTsKKyAgcmV0dXJuIG1ha2VfaGFzaF90YWJsZSAodGVzdGRlc2MsIHNpemUsIHJl aGFzaF9zaXplLCByZWhhc2hfdGhyZXNob2xkLCB3ZWFrKTsKIH0KIAogCmRpZmYgLS1naXQgYS9z cmMvZm9udHNldC5jIGIvc3JjL2ZvbnRzZXQuYwppbmRleCA4Yzg2MDc1YzA3Li45MmM3MjY4YzM4 IDEwMDY0NAotLS0gYS9zcmMvZm9udHNldC5jCisrKyBiL3NyYy9mb250c2V0LmMKQEAgLTIxMjks NyArMjEyOSw3IEBAIHN5bXNfb2ZfZm9udHNldCAodm9pZCkKICAgc2V0X2ZvbnRzZXRfaWQgKFZk ZWZhdWx0X2ZvbnRzZXQsIG1ha2VfZml4bnVtICgwKSk7CiAgIHNldF9mb250c2V0X25hbWUKICAg ICAoVmRlZmF1bHRfZm9udHNldCwKLSAgICAgYnVpbGRfcHVyZV9jX3N0cmluZyAoIi0qLSotKi0q LSotKi0qLSotKi0qLSotKi1mb250c2V0LWRlZmF1bHQiKSk7CisgICAgIGJ1aWxkX3N0cmluZyAo Ii0qLSotKi0qLSotKi0qLSotKi0qLSotKi1mb250c2V0LWRlZmF1bHQiKSk7CiAgIEFTRVQgKFZm b250c2V0X3RhYmxlLCAwLCBWZGVmYXVsdF9mb250c2V0KTsKICAgbmV4dF9mb250c2V0X2lkID0g MTsKICAgUERVTVBFUl9SRU1FTUJFUl9TQ0FMQVIgKG5leHRfZm9udHNldF9pZCk7CkBAIC0yMTg3 LDcgKzIxODcsNyBAQCBzeW1zX29mX2ZvbnRzZXQgKHZvaWQpCiAJICAgICAgIGRvYzogLyogQWxp c3Qgb2YgZm9udHNldCBuYW1lcyB2cyB0aGUgYWxpYXNlcy4gICovKTsKICAgVmZvbnRzZXRfYWxp YXNfYWxpc3QKICAgICA9IGxpc3QxIChGY29ucyAoRk9OVFNFVF9OQU1FIChWZGVmYXVsdF9mb250 c2V0KSwKLQkJICAgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJmb250c2V0LWRlZmF1bHQiKSkpOwor CQkgICAgYnVpbGRfc3RyaW5nICgiZm9udHNldC1kZWZhdWx0IikpKTsKIAogICBERUZWQVJfTElT UCAoInZlcnRpY2FsLWNlbnRlcmluZy1mb250LXJlZ2V4cCIsCiAJICAgICAgIFZ2ZXJ0aWNhbF9j ZW50ZXJpbmdfZm9udF9yZWdleHAsCmRpZmYgLS1naXQgYS9zcmMvZnJhbWUuYyBiL3NyYy9mcmFt ZS5jCmluZGV4IGM0ZGZjMzVhMGMuLmM4Y2QwOTRjOTcgMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5j CisrKyBiL3NyYy9mcmFtZS5jCkBAIC0xMTA3LDcgKzExMDcsNyBAQCBtYWtlX2luaXRpYWxfZnJh bWUgKHZvaWQpCiAgIFZmcmFtZV9saXN0ID0gRmNvbnMgKGZyYW1lLCBWZnJhbWVfbGlzdCk7CiAK ICAgdHR5X2ZyYW1lX2NvdW50ID0gMTsKLSAgZnNldF9uYW1lIChmLCBidWlsZF9wdXJlX2Nfc3Ry aW5nICgiRjEiKSk7CisgIGZzZXRfbmFtZSAoZiwgYnVpbGRfc3RyaW5nICgiRjEiKSk7CiAKICAg U0VUX0ZSQU1FX1ZJU0lCTEUgKGYsIDEpOwogCmRpZmYgLS1naXQgYS9zcmMvaW1hZ2UuYyBiL3Ny Yy9pbWFnZS5jCmluZGV4IDEyM2RlNTRiYTIuLmE0NGMwOTgzNmUgMTAwNjQ0Ci0tLSBhL3NyYy9p bWFnZS5jCisrKyBiL3NyYy9pbWFnZS5jCkBAIC00NzA4LDcgKzQ3MDgsNyBAQCB4cG1fbWFrZV9j b2xvcl90YWJsZV9oICh2b2lkICgqKnB1dF9mdW5jKSAoTGlzcF9PYmplY3QsIGNvbnN0IGNoYXIg KiwgaW50LAogICAqZ2V0X2Z1bmMgPSB4cG1fZ2V0X2NvbG9yX3RhYmxlX2g7CiAgIHJldHVybiBt YWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2VxdWFsLCBERUZBVUxUX0hBU0hfU0laRSwKIAkJCSAg REVGQVVMVF9SRUhBU0hfU0laRSwgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xELAotCQkJICBRbmls LCBmYWxzZSk7CisJCQkgIFFuaWwpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3Jj L2ludGVydmFscy5jIGIvc3JjL2ludGVydmFscy5jCmluZGV4IDAyNTc1OTFhMTQuLmUwMTY4OWZl NjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcnZhbHMuYworKysgYi9zcmMvaW50ZXJ2YWxzLmMKQEAg LTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJsaXNwLmgiCiAjaW5jbHVkZSAiaW50ZXJ2YWxzLmgi CiAjaW5jbHVkZSAiYnVmZmVyLmgiCi0jaW5jbHVkZSAicHVyZXNpemUuaCIKICNpbmNsdWRlICJr ZXltYXAuaCIKIAogLyogVGVzdCBmb3IgbWVtYmVyc2hpcCwgYWxsb3dpbmcgZm9yIHQgKGFjdHVh bGx5IGFueSBub24tY29ucykgdG8gbWVhbiB0aGUKQEAgLTEwMSw3ICsxMDAsNiBAQCBjcmVhdGVf cm9vdF9pbnRlcnZhbCAoTGlzcF9PYmplY3QgcGFyZW50KQogICAgIH0KICAgZWxzZQogICAgIHsK LSAgICAgIENIRUNLX0lNUFVSRSAocGFyZW50LCBYU1RSSU5HIChwYXJlbnQpKTsKICAgICAgIG5l dy0+dG90YWxfbGVuZ3RoID0gU0NIQVJTIChwYXJlbnQpOwogICAgICAgZWFzc2VydCAoVE9UQUxf TEVOR1RIIChuZXcpID49IDApOwogICAgICAgc2V0X3N0cmluZ19pbnRlcnZhbHMgKHBhcmVudCwg bmV3KTsKZGlmZiAtLWdpdCBhL3NyYy9qc29uLmMgYi9zcmMvanNvbi5jCmluZGV4IDhjOTU4MzYz MWEuLjMzOTNkMmI0YTIgMTAwNjQ0Ci0tLSBhL3NyYy9qc29uLmMKKysrIGIvc3JjL2pzb24uYwpA QCAtMTEwOSw4ICsxMTA5LDggQEAgZGVmaW5lX2Vycm9yIChMaXNwX09iamVjdCBuYW1lLCBjb25z dCBjaGFyICptZXNzYWdlLCBMaXNwX09iamVjdCBwYXJlbnQpCiAgIGVhc3NlcnQgKENPTlNQIChw YXJlbnRfY29uZGl0aW9ucykpOwogICBlYXNzZXJ0ICghTklMUCAoRm1lbXEgKHBhcmVudCwgcGFy ZW50X2NvbmRpdGlvbnMpKSk7CiAgIGVhc3NlcnQgKE5JTFAgKEZtZW1xIChuYW1lLCBwYXJlbnRf Y29uZGl0aW9ucykpKTsKLSAgRnB1dCAobmFtZSwgUWVycm9yX2NvbmRpdGlvbnMsIHB1cmVfY29u cyAobmFtZSwgcGFyZW50X2NvbmRpdGlvbnMpKTsKLSAgRnB1dCAobmFtZSwgUWVycm9yX21lc3Nh Z2UsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKG1lc3NhZ2UpKTsKKyAgRnB1dCAobmFtZSwgUWVycm9y X2NvbmRpdGlvbnMsIEZjb25zIChuYW1lLCBwYXJlbnRfY29uZGl0aW9ucykpOworICBGcHV0IChu YW1lLCBRZXJyb3JfbWVzc2FnZSwgYnVpbGRfc3RyaW5nIChtZXNzYWdlKSk7CiB9CiAKIHZvaWQK ZGlmZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggNWZhNThh YmNlMS4uYmFkYTY3YzUxOSAxMDA2NDQKLS0tIGEvc3JjL2tleWJvYXJkLmMKKysrIGIvc3JjL2tl eWJvYXJkLmMKQEAgLTExMDYsOCArMTEwNiw2IEBAIHRvcF9sZXZlbF8xIChMaXNwX09iamVjdCBp Z25vcmUpCiAgIC8qIE9uIGVudHJ5IHRvIHRoZSBvdXRlciBsZXZlbCwgcnVuIHRoZSBzdGFydHVw IGZpbGUuICAqLwogICBpZiAoIU5JTFAgKFZ0b3BfbGV2ZWwpKQogICAgIGludGVybmFsX2NvbmRp dGlvbl9jYXNlICh0b3BfbGV2ZWxfMiwgUWVycm9yLCBjbWRfZXJyb3IpOwotICBlbHNlIGlmICgh TklMUCAoVnB1cmlmeV9mbGFnKSkKLSAgICBtZXNzYWdlMSAoIkJhcmUgaW1wdXJlIEVtYWNzIChz dGFuZGFyZCBMaXNwIGNvZGUgbm90IGxvYWRlZCkiKTsKICAgZWxzZQogICAgIG1lc3NhZ2UxICgi QmFyZSBFbWFjcyAoc3RhbmRhcmQgTGlzcCBjb2RlIG5vdCBsb2FkZWQpIik7CiAgIHJldHVybiBR bmlsOwpAQCAtMTE0NjUsMTQgKzExNDYzLDE0IEBAIHN5bXNfb2Zfa2V5Ym9hcmQgKHZvaWQpCiAg IHBlbmRpbmdfZnVuY2FsbHMgPSBRbmlsOwogICBzdGF0aWNwcm8gKCZwZW5kaW5nX2Z1bmNhbGxz KTsKIAotICBWbGlzcHlfbW91c2Vfc3RlbSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJtb3VzZSIp OworICBWbGlzcHlfbW91c2Vfc3RlbSA9IGJ1aWxkX3N0cmluZyAoIm1vdXNlIik7CiAgIHN0YXRp Y3BybyAoJlZsaXNweV9tb3VzZV9zdGVtKTsKIAotICByZWd1bGFyX3RvcF9sZXZlbF9tZXNzYWdl ID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIkJhY2sgdG8gdG9wIGxldmVsIik7CisgIHJlZ3VsYXJf dG9wX2xldmVsX21lc3NhZ2UgPSBidWlsZF9zdHJpbmcgKCJCYWNrIHRvIHRvcCBsZXZlbCIpOwog ICBzdGF0aWNwcm8gKCZyZWd1bGFyX3RvcF9sZXZlbF9tZXNzYWdlKTsKICNpZmRlZiBIQVZFX1NU QUNLX09WRVJGTE9XX0hBTkRMSU5HCiAgIHJlY292ZXJfdG9wX2xldmVsX21lc3NhZ2UKLSAgICA9 IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJSZS1lbnRlcmluZyB0b3AgbGV2ZWwgYWZ0ZXIgQyBzdGFj ayBvdmVyZmxvdyIpOworICAgID0gYnVpbGRfc3RyaW5nICgiUmUtZW50ZXJpbmcgdG9wIGxldmVs IGFmdGVyIEMgc3RhY2sgb3ZlcmZsb3ciKTsKICAgc3RhdGljcHJvICgmcmVjb3Zlcl90b3BfbGV2 ZWxfbWVzc2FnZSk7CiAjZW5kaWYKICAgREVGVkFSX0xJU1AgKCJpbnRlcm5hbC0tdG9wLWxldmVs LW1lc3NhZ2UiLCBWaW50ZXJuYWxfX3RvcF9sZXZlbF9tZXNzYWdlLApkaWZmIC0tZ2l0IGEvc3Jj L2tleW1hcC5jIGIvc3JjL2tleW1hcC5jCmluZGV4IGQ5OGIyN2I3YTEuLjY3ZTliOGE2ZDIgMTAw NjQ0Ci0tLSBhL3NyYy9rZXltYXAuYworKysgYi9zcmMva2V5bWFwLmMKQEAgLTUwLDcgKzUwLDYg QEAKICNpbmNsdWRlICJrZXlib2FyZC5oIgogI2luY2x1ZGUgInRlcm1ob29rcy5oIgogI2luY2x1 ZGUgImJsb2NraW5wdXQuaCIKLSNpbmNsdWRlICJwdXJlc2l6ZS5oIgogI2luY2x1ZGUgImludGVy dmFscy5oIgogI2luY2x1ZGUgImtleW1hcC5oIgogI2luY2x1ZGUgIndpbmRvdy5oIgpAQCAtMTM4 LDggKzEzNyw2IEBAIERFRlVOICgibWFrZS1zcGFyc2Uta2V5bWFwIiwgRm1ha2Vfc3BhcnNlX2tl eW1hcCwgU21ha2Vfc3BhcnNlX2tleW1hcCwgMCwgMSwgMCwKIHsKICAgaWYgKCFOSUxQIChzdHJp bmcpKQogICAgIHsKLSAgICAgIGlmICghTklMUCAoVnB1cmlmeV9mbGFnKSkKLQlzdHJpbmcgPSBG cHVyZWNvcHkgKHN0cmluZyk7CiAgICAgICByZXR1cm4gbGlzdDIgKFFrZXltYXAsIHN0cmluZyk7 CiAgICAgfQogICByZXR1cm4gbGlzdDEgKFFrZXltYXApOwpAQCAtMzM2LDcgKzMzMyw2IEBAIERF RlVOICgic2V0LWtleW1hcC1wYXJlbnQiLCBGc2V0X2tleW1hcF9wYXJlbnQsIFNzZXRfa2V5bWFw X3BhcmVudCwgMiwgMiwgMCwKIAkgSWYgd2UgY2FtZSB0byB0aGUgZW5kLCBhZGQgdGhlIHBhcmVu dCBpbiBQUkVWLiAgKi8KICAgICAgIGlmICghQ09OU1AgKGxpc3QpIHx8IEtFWU1BUFAgKGxpc3Qp KQogCXsKLQkgIENIRUNLX0lNUFVSRSAocHJldiwgWENPTlMgKHByZXYpKTsKIAkgIFhTRVRDRFIg KHByZXYsIHBhcmVudCk7CiAJICByZXR1cm4gcGFyZW50OwogCX0KQEAgLTc1Nyw3ICs3NTMsNyBA QCBzdG9yZV9pbl9rZXltYXAgKExpc3BfT2JqZWN0IGtleW1hcCwgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgaWR4LCBMaXNwX09iamVjdCBkZWYpCiAKICAgLyogSWYgd2UgYXJlIHByZXBhcmluZyB0byBk dW1wLCBhbmQgREVGIGlzIGEgbWVudSBlbGVtZW50CiAgICAgIHdpdGggYSBtZW51IGl0ZW0gaW5k aWNhdG9yLCBjb3B5IGl0IHRvIGVuc3VyZSBpdCBpcyBub3QgcHVyZS4gICovCi0gIGlmIChDT05T UCAoZGVmKSAmJiBQVVJFX1AgKFhDT05TIChkZWYpKQorICBpZiAoQ09OU1AgKGRlZikKICAgICAg ICYmIChFUSAoWENBUiAoZGVmKSwgUW1lbnVfaXRlbSkgfHwgU1RSSU5HUCAoWENBUiAoZGVmKSkp KQogICAgIGRlZiA9IEZjb25zIChYQ0FSIChkZWYpLCBYQ0RSIChkZWYpKTsKIApAQCAtODA1LDcg KzgwMSw2IEBAIHN0b3JlX2luX2tleW1hcCAoTGlzcF9PYmplY3Qga2V5bWFwLCByZWdpc3RlciBM aXNwX09iamVjdCBpZHgsIExpc3BfT2JqZWN0IGRlZikKIAkgIHsKIAkgICAgaWYgKEZJWE5BVFAg KGlkeCkgJiYgWEZJWE5BVCAoaWR4KSA8IEFTSVpFIChlbHQpKQogCSAgICAgIHsKLQkJQ0hFQ0tf SU1QVVJFIChlbHQsIFhWRUNUT1IgKGVsdCkpOwogCQlBU0VUIChlbHQsIFhGSVhOQVQgKGlkeCks IGRlZik7CiAJCXJldHVybiBkZWY7CiAJICAgICAgfQpAQCAtODU4LDcgKzg1Myw2IEBAIHN0b3Jl X2luX2tleW1hcCAoTGlzcF9PYmplY3Qga2V5bWFwLCByZWdpc3RlciBMaXNwX09iamVjdCBpZHgs IExpc3BfT2JqZWN0IGRlZikKIAkgICAgICB9CiAJICAgIGVsc2UgaWYgKEVRIChpZHgsIFhDQVIg KGVsdCkpKQogCSAgICAgIHsKLQkJQ0hFQ0tfSU1QVVJFIChlbHQsIFhDT05TIChlbHQpKTsKIAkJ WFNFVENEUiAoZWx0LCBkZWYpOwogCQlyZXR1cm4gZGVmOwogCSAgICAgIH0KQEAgLTkwNCw3ICs4 OTgsNiBAQCBzdG9yZV9pbl9rZXltYXAgKExpc3BfT2JqZWN0IGtleW1hcCwgcmVnaXN0ZXIgTGlz cF9PYmplY3QgaWR4LCBMaXNwX09iamVjdCBkZWYpCiAJfQogICAgICAgZWxzZQogCWVsdCA9IEZj b25zIChpZHgsIGRlZik7Ci0gICAgICBDSEVDS19JTVBVUkUgKGluc2VydGlvbl9wb2ludCwgWENP TlMgKGluc2VydGlvbl9wb2ludCkpOwogICAgICAgWFNFVENEUiAoaW5zZXJ0aW9uX3BvaW50LCBG Y29ucyAoZWx0LCBYQ0RSIChpbnNlcnRpb25fcG9pbnQpKSk7CiAgICAgfQogICB9CkBAIC0zNTk4 LDEyICszNTkxLDEyIEBAIHN5bXNfb2Zfa2V5bWFwICh2b2lkKQogICBGc2V0IChpbnRlcm5fY19z dHJpbmcgKCJjdGwteC1tYXAiKSwgY29udHJvbF94X21hcCk7CiAgIEZmc2V0IChpbnRlcm5fY19z dHJpbmcgKCJDb250cm9sLVgtcHJlZml4IiksIGNvbnRyb2xfeF9tYXApOwogCi0gIGV4Y2x1ZGVf a2V5cyA9IHB1cmVfbGlzdAotICAgIChwdXJlX2NvbnMgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJE RUwiKSwgYnVpbGRfcHVyZV9jX3N0cmluZyAoIlxcZCIpKSwKLSAgICAgcHVyZV9jb25zIChidWls ZF9wdXJlX2Nfc3RyaW5nICgiVEFCIiksIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJcXHQiKSksCi0g ICAgIHB1cmVfY29ucyAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIlJFVCIpLCBidWlsZF9wdXJlX2Nf c3RyaW5nICgiXFxyIikpLAotICAgICBwdXJlX2NvbnMgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJF U0MiKSwgYnVpbGRfcHVyZV9jX3N0cmluZyAoIlxcZSIpKSwKLSAgICAgcHVyZV9jb25zIChidWls ZF9wdXJlX2Nfc3RyaW5nICgiU1BDIiksIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIgIikpKTsKKyAg ZXhjbHVkZV9rZXlzID0gbGlzdAorICAgIChGY29ucyAoYnVpbGRfc3RyaW5nICgiREVMIiksIGJ1 aWxkX3N0cmluZyAoIlxcZCIpKSwKKyAgICAgRmNvbnMgKGJ1aWxkX3N0cmluZyAoIlRBQiIpLCBi dWlsZF9zdHJpbmcgKCJcXHQiKSksCisgICAgIEZjb25zIChidWlsZF9zdHJpbmcgKCJSRVQiKSwg YnVpbGRfc3RyaW5nICgiXFxyIikpLAorICAgICBGY29ucyAoYnVpbGRfc3RyaW5nICgiRVNDIiks IGJ1aWxkX3N0cmluZyAoIlxcZSIpKSwKKyAgICAgRmNvbnMgKGJ1aWxkX3N0cmluZyAoIlNQQyIp LCBidWlsZF9zdHJpbmcgKCIgIikpKTsKICAgc3RhdGljcHJvICgmZXhjbHVkZV9rZXlzKTsKIAog ICBERUZWQVJfTElTUCAoImRlZmluZS1rZXktcmVib3VuZC1jb21tYW5kcyIsIFZkZWZpbmVfa2V5 X3JlYm91bmRfY29tbWFuZHMsCkBAIC0zNjU5LDEzICszNjUyLDEyIEBAIHN5bXNfb2Zfa2V5bWFw ICh2b2lkKQogICBERUZTWU0gKFFtb2RlX2xpbmUsICJtb2RlLWxpbmUiKTsKIAogICBzdGF0aWNw cm8gKCZWbW91c2VfZXZlbnRzKTsKLSAgVm1vdXNlX2V2ZW50cyA9IHB1cmVfbGlzdCAoUW1lbnVf YmFyLCBRdGFiX2JhciwgUXRvb2xfYmFyLAotCQkJICAgICBRdGFiX2xpbmUsIFFoZWFkZXJfbGlu ZSwgUW1vZGVfbGluZSwKLQkJCSAgICAgaW50ZXJuX2Nfc3RyaW5nICgibW91c2UtMSIpLAotCQkJ ICAgICBpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS0yIiksCi0JCQkgICAgIGludGVybl9jX3N0cmlu ZyAoIm1vdXNlLTMiKSwKLQkJCSAgICAgaW50ZXJuX2Nfc3RyaW5nICgibW91c2UtNCIpLAotCQkJ ICAgICBpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS01IikpOworICBWbW91c2VfZXZlbnRzID0gbGlz dCAoUW1lbnVfYmFyLCBRdG9vbF9iYXIsIFFoZWFkZXJfbGluZSwgUW1vZGVfbGluZSwKKwkJCWlu dGVybl9jX3N0cmluZyAoIm1vdXNlLTEiKSwKKwkJCWludGVybl9jX3N0cmluZyAoIm1vdXNlLTIi KSwKKwkJCWludGVybl9jX3N0cmluZyAoIm1vdXNlLTMiKSwKKwkJCWludGVybl9jX3N0cmluZyAo Im1vdXNlLTQiKSwKKwkJCWludGVybl9jX3N0cmluZyAoIm1vdXNlLTUiKSk7CiAKICAgLyogS2V5 bWFwIHVzZWQgZm9yIG1pbmlidWZmZXJzIHdoZW4gZG9pbmcgY29tcGxldGlvbi4gICovCiAgIC8q IEtleW1hcCB1c2VkIGZvciBtaW5pYnVmZmVycyB3aGVuIGRvaW5nIGNvbXBsZXRpb24gYW5kIHJl cXVpcmUgYSBtYXRjaC4gICovCmRpZmYgLS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xpc3AuaApp bmRleCA3OTgzMzM5YWM1Li41OWQwODZjZDY1IDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisrKyBi L3NyYy9saXNwLmgKQEAgLTgzNCw5ICs4MzQsNiBAQCAjZGVmaW5lIFhVTlRBRyhhLCB0eXBlLCBj dHlwZSkgKChjdHlwZSAqKSBcCiAJIHNwZWNpYWwgKHdpdGggYGRlZnZhcicgZXRjKSwgYW5kIHNo b3VsZG4ndCBiZSBsZXhpY2FsbHkgYm91bmQuICAqLwogICAgICAgYm9vbF9iZiBkZWNsYXJlZF9z cGVjaWFsIDogMTsKIAotICAgICAgLyogVHJ1ZSBpZiBwb2ludGVkIHRvIGZyb20gcHVyZXNwYWNl IGFuZCBoZW5jZSBjYW4ndCBiZSBHQydkLiAgKi8KLSAgICAgIGJvb2xfYmYgcGlubmVkIDogMTsK LQogICAgICAgLyogVGhlIHN5bWJvbCdzIG5hbWUsIGFzIGEgTGlzcCBzdHJpbmcuICAqLwogICAg ICAgTGlzcF9PYmplY3QgbmFtZTsKIApAQCAtMTU0NSwyMCArMTU0MiwxNCBAQCAjZGVmaW5lIFNU UklOR19CWVRFU19CT1VORCAgXAogLyogTWFyayBTVFIgYXMgYSB1bmlieXRlIHN0cmluZy4gICov CiAjZGVmaW5lIFNUUklOR19TRVRfVU5JQllURShTVFIpCQkJCVwKICAgZG8gewkJCQkJCQlcCi0g ICAgaWYgKFhTVFJJTkcgKFNUUiktPnUucy5zaXplID09IDApCQkJXAotICAgICAgKFNUUikgPSBl bXB0eV91bmlieXRlX3N0cmluZzsJCQlcCi0gICAgZWxzZQkJCQkJCVwKLSAgICAgIFhTVFJJTkcg KFNUUiktPnUucy5zaXplX2J5dGUgPSAtMTsJCVwKKyAgICBYU1RSSU5HIChTVFIpLT51LnMuc2l6 ZV9ieXRlID0gLTE7CQkJXAogICB9IHdoaWxlIChmYWxzZSkKIAogLyogTWFyayBTVFIgYXMgYSBt dWx0aWJ5dGUgc3RyaW5nLiAgQXNzdXJlIHRoYXQgU1RSIGNvbnRhaW5zIG9ubHkKICAgIEFTQ0lJ IGNoYXJhY3RlcnMgaW4gYWR2YW5jZS4gICovCi0jZGVmaW5lIFNUUklOR19TRVRfTVVMVElCWVRF KFNUUikJCQlcCi0gIGRvIHsJCQkJCQkJXAotICAgIGlmIChYU1RSSU5HIChTVFIpLT51LnMuc2l6 ZSA9PSAwKQkJCVwKLSAgICAgIChTVFIpID0gZW1wdHlfbXVsdGlieXRlX3N0cmluZzsJCQlcCi0g ICAgZWxzZQkJCQkJCVwKLSAgICAgIFhTVFJJTkcgKFNUUiktPnUucy5zaXplX2J5dGUgPSBYU1RS SU5HIChTVFIpLT51LnMuc2l6ZTsgXAorI2RlZmluZSBTVFJJTkdfU0VUX01VTFRJQllURShTVFIp CQkJCVwKKyAgZG8gewkJCQkJCQkJXAorICAgIFhTVFJJTkcgKFNUUiktPnUucy5zaXplX2J5dGUg PSBYU1RSSU5HIChTVFIpLT51LnMuc2l6ZTsJXAogICB9IHdoaWxlIChmYWxzZSkKIAogLyogQ29u dmVuaWVuY2UgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGggTGlzcCBzdHJpbmdzLiAgKi8KQEAg LTIzMTEsMTIgKzIzMDIsOCBAQCAjZGVmaW5lIERFRlNZTShzeW0sIG5hbWUpIC8qIGVtcHR5ICov CiAgIC8qIEluZGV4IG9mIGZpcnN0IGZyZWUgZW50cnkgaW4gZnJlZSBsaXN0LCBvciAtMSBpZiBu b25lLiAgKi8KICAgcHRyZGlmZl90IG5leHRfZnJlZTsKIAotICAvKiBUcnVlIGlmIHRoZSB0YWJs ZSBjYW4gYmUgcHVyZWNvcGllZC4gIFRoZSB0YWJsZSBjYW5ub3QgYmUKLSAgICAgY2hhbmdlZCBh ZnRlcndhcmRzLiAgKi8KLSAgYm9vbCBwdXJlY29weTsKLQogICAvKiBUcnVlIGlmIHRoZSB0YWJs ZSBpcyBtdXRhYmxlLiAgT3JkaW5hcmlseSB0YWJsZXMgYXJlIG11dGFibGUsIGJ1dAotICAgICBw dXJlIHRhYmxlcyBhcmUgbm90LCBhbmQgd2hpbGUgYSB0YWJsZSBpcyBiZWluZyBtdXRhdGVkIGl0 IGlzCisgICAgIHNvbWUgdGFibGVzIGFyZSBub3QsIGFuZCB3aGlsZSBhIHRhYmxlIGlzIGJlaW5n IG11dGF0ZWQgaXQgaXMKICAgICAgaW1tdXRhYmxlIGZvciByZWN1cnNpdmUgYXR0ZW1wdHMgdG8g bXV0YXRlIGl0LiAgKi8KICAgYm9vbCBtdXRhYmxlOwogCkBAIC0zNjA2LDcgKzM1OTMsNyBAQCAj ZGVmaW5lIENPTlNfVE9fSU5URUdFUihjb25zLCB0eXBlLCB2YXIpCQkJCVwKIExpc3BfT2JqZWN0 IGhhc2hmbl9lcXVhbCAoTGlzcF9PYmplY3QsIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKik7CiBM aXNwX09iamVjdCBoYXNoZm5fdXNlcl9kZWZpbmVkIChMaXNwX09iamVjdCwgc3RydWN0IExpc3Bf SGFzaF9UYWJsZSAqKTsKIExpc3BfT2JqZWN0IG1ha2VfaGFzaF90YWJsZSAoc3RydWN0IGhhc2hf dGFibGVfdGVzdCwgRU1BQ1NfSU5ULCBmbG9hdCwgZmxvYXQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3BfT2JqZWN0LCBib29sKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzcF9PYmplY3QpOwogcHRyZGlmZl90IGhhc2hfbG9va3VwIChzdHJ1Y3QgTGlzcF9IYXNo X1RhYmxlICosIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCAqKTsKIHB0cmRpZmZfdCBoYXNoX3B1 dCAoc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAJ CSAgICBMaXNwX09iamVjdCk7CkBAIC0zNzYwLDcgKzM3NDcsNiBAQCB2ZXJpZnkgKEZMVF9SQURJ WCA9PSAyIHx8IEZMVF9SQURJWCA9PSAxNik7CiAKIC8qIERlZmluZWQgaW4gYWxsb2MuYy4gICov CiBleHRlcm4gdm9pZCAqbXlfaGVhcF9zdGFydCAodm9pZCk7Ci1leHRlcm4gdm9pZCBjaGVja19w dXJlX3NpemUgKHZvaWQpOwogdW5zaWduZWQgY2hhciAqcmVzaXplX3N0cmluZ19kYXRhIChMaXNw X09iamVjdCwgcHRyZGlmZl90LCBpbnQsIGludCk7CiBleHRlcm4gdm9pZCBtYWxsb2Nfd2Fybmlu ZyAoY29uc3QgY2hhciAqKTsKIGV4dGVybiBBVk9JRCBtZW1vcnlfZnVsbCAoc2l6ZV90KTsKQEAg LTM4MTcsMTEgKzM4MDMsOCBAQCBmbHVzaF9zdGFja19jYWxsX2Z1bmMgKHZvaWQgKCpmdW5jKSAo dm9pZCAqYXJnKSwgdm9pZCAqYXJnKQogZXh0ZXJuIExpc3BfT2JqZWN0IGxpc3Q1IChMaXNwX09i amVjdCwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwKIAkJCSAgTGlzcF9P YmplY3QpOwogZXh0ZXJuIExpc3BfT2JqZWN0IGxpc3RuIChwdHJkaWZmX3QsIExpc3BfT2JqZWN0 LCAuLi4pOwotZXh0ZXJuIExpc3BfT2JqZWN0IHB1cmVfbGlzdG4gKHB0cmRpZmZfdCwgTGlzcF9P YmplY3QsIC4uLik7CiAjZGVmaW5lIGxpc3QoLi4uKSBcCiAgIGxpc3RuIChBUlJBWUVMVFMgKCgo TGlzcF9PYmplY3QgW10pIHtfX1ZBX0FSR1NfX30pKSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIHB1 cmVfbGlzdCguLi4pIFwKLSAgcHVyZV9saXN0biAoQVJSQVlFTFRTICgoKExpc3BfT2JqZWN0IFtd KSB7X19WQV9BUkdTX199KSksIF9fVkFfQVJHU19fKQogCiBlbnVtIGdjX3Jvb3RfdHlwZQogewpA QCAtMzg5NCwxNyArMzg3Nyw2IEBAIGJ1aWxkX3VuaWJ5dGVfc3RyaW5nIChjb25zdCBjaGFyICpz dHIpCiBleHRlcm4gTGlzcF9PYmplY3QgbWFrZV9zdHJpbmdfZnJvbV9ieXRlcyAoY29uc3QgY2hh ciAqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiBleHRlcm4gTGlzcF9PYmplY3QgbWFrZV9zcGVj aWZpZWRfc3RyaW5nIChjb25zdCBjaGFyICosCiAJCQkJCSAgcHRyZGlmZl90LCBwdHJkaWZmX3Qs IGJvb2wpOwotZXh0ZXJuIExpc3BfT2JqZWN0IG1ha2VfcHVyZV9zdHJpbmcgKGNvbnN0IGNoYXIg KiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIGJvb2wpOwotZXh0ZXJuIExpc3BfT2JqZWN0IG1ha2Vf cHVyZV9jX3N0cmluZyAoY29uc3QgY2hhciAqLCBwdHJkaWZmX3QpOwotCi0vKiBNYWtlIGEgc3Ry aW5nIGFsbG9jYXRlZCBpbiBwdXJlIHNwYWNlLCB1c2UgU1RSIGFzIHN0cmluZyBkYXRhLiAgKi8K LQotSU5MSU5FIExpc3BfT2JqZWN0Ci1idWlsZF9wdXJlX2Nfc3RyaW5nIChjb25zdCBjaGFyICpz dHIpCi17Ci0gIHJldHVybiBtYWtlX3B1cmVfY19zdHJpbmcgKHN0ciwgc3RybGVuIChzdHIpKTsK LX0KLQogLyogTWFrZSBhIHN0cmluZyBmcm9tIHRoZSBkYXRhIGF0IFNUUiwgdHJlYXRpbmcgaXQg YXMgbXVsdGlieXRlIGlmIHRoZQogICAgZGF0YSB3YXJyYW50cy4gICovCiAKQEAgLTM5MTQsNyAr Mzg4Niw2IEBAIGJ1aWxkX3N0cmluZyAoY29uc3QgY2hhciAqc3RyKQogICByZXR1cm4gbWFrZV9z dHJpbmcgKHN0ciwgc3RybGVuIChzdHIpKTsKIH0KIAotZXh0ZXJuIExpc3BfT2JqZWN0IHB1cmVf Y29ucyAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiBMaXNwX09iamVjdCBtYWtl X3ZlY3RvciAocHRyZGlmZl90LCBMaXNwX09iamVjdCk7CiBleHRlcm4gc3RydWN0IExpc3BfVmVj dG9yICphbGxvY2F0ZV9uaWxfdmVjdG9yIChwdHJkaWZmX3QpOwogCmRpZmYgLS1naXQgYS9zcmMv bHJlYWQuYyBiL3NyYy9scmVhZC5jCmluZGV4IDgwNjRiZjRkMGUuLmE1Y2I4NzcwMzQgMTAwNjQ0 Ci0tLSBhL3NyYy9scmVhZC5jCisrKyBiL3NyYy9scmVhZC5jCkBAIC0yMDQyLDEzICsyMDQyLDEz IEBAIHJlYWRldmFsbG9vcCAoTGlzcF9PYmplY3QgcmVhZGNoYXJmdW4sCiAJcmVhZF9vYmplY3Rz X21hcAogCSAgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2VxLCBERUZBVUxUX0hBU0hfU0la RSwKIAkJCSAgICAgREVGQVVMVF9SRUhBU0hfU0laRSwgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xE LAotCQkJICAgICBRbmlsLCBmYWxzZSk7CisJCQkgICAgIFFuaWwpOwogICAgICAgaWYgKCEgSEFT SF9UQUJMRV9QIChyZWFkX29iamVjdHNfY29tcGxldGVkKQogCSAgfHwgWEhBU0hfVEFCTEUgKHJl YWRfb2JqZWN0c19jb21wbGV0ZWQpLT5jb3VudCkKIAlyZWFkX29iamVjdHNfY29tcGxldGVkCiAJ ICA9IG1ha2VfaGFzaF90YWJsZSAoaGFzaHRlc3RfZXEsIERFRkFVTFRfSEFTSF9TSVpFLAogCQkJ ICAgICBERUZBVUxUX1JFSEFTSF9TSVpFLCBERUZBVUxUX1JFSEFTSF9USFJFU0hPTEQsCi0JCQkg ICAgIFFuaWwsIGZhbHNlKTsKKwkJCSAgICAgUW5pbCk7CiAgICAgICBpZiAoIU5JTFAgKFZwdXJp ZnlfZmxhZykgJiYgYyA9PSAnKCcpCiAJewogCSAgdmFsID0gcmVhZF9saXN0ICgwLCByZWFkY2hh cmZ1bik7CkBAIC0yMjY1LDEyICsyMjY1LDEyIEBAIHJlYWRfaW50ZXJuYWxfc3RhcnQgKExpc3Bf T2JqZWN0IHN0cmVhbSwgTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCkKICAgICAg IHx8IFhIQVNIX1RBQkxFIChyZWFkX29iamVjdHNfbWFwKS0+Y291bnQpCiAgICAgcmVhZF9vYmpl Y3RzX21hcAogICAgICAgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2VxLCBERUZBVUxUX0hB U0hfU0laRSwgREVGQVVMVF9SRUhBU0hfU0laRSwKLQkJCSBERUZBVUxUX1JFSEFTSF9USFJFU0hP TEQsIFFuaWwsIGZhbHNlKTsKKwkJCSBERUZBVUxUX1JFSEFTSF9USFJFU0hPTEQsIFFuaWwpOwog ICBpZiAoISBIQVNIX1RBQkxFX1AgKHJlYWRfb2JqZWN0c19jb21wbGV0ZWQpCiAgICAgICB8fCBY SEFTSF9UQUJMRSAocmVhZF9vYmplY3RzX2NvbXBsZXRlZCktPmNvdW50KQogICAgIHJlYWRfb2Jq ZWN0c19jb21wbGV0ZWQKICAgICAgID0gbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9lcSwgREVG QVVMVF9IQVNIX1NJWkUsIERFRkFVTFRfUkVIQVNIX1NJWkUsCi0JCQkgREVGQVVMVF9SRUhBU0hf VEhSRVNIT0xELCBRbmlsLCBmYWxzZSk7CisJCQkgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xELCBR bmlsKTsKICAgaWYgKEVRIChWcmVhZF93aXRoX3N5bWJvbF9wb3NpdGlvbnMsIFF0KQogICAgICAg fHwgRVEgKFZyZWFkX3dpdGhfc3ltYm9sX3Bvc2l0aW9ucywgc3RyZWFtKSkKICAgICBWcmVhZF9z eW1ib2xfcG9zaXRpb25zX2xpc3QgPSBRbmlsOwpAQCAtMjg0MCwxMSArMjg0MCw2IEBAIHJlYWQx IChMaXNwX09iamVjdCByZWFkY2hhcmZ1biwgaW50ICpwY2gsIGJvb2wgZmlyc3RfaW5fbGlzdCkK IAkgICAgICBpZiAoIU5JTFAgKHBhcmFtc1twYXJhbV9jb3VudCArIDFdKSkKIAkJcGFyYW1fY291 bnQgKz0gMjsKIAotICAgICAgICAgICAgICBwYXJhbXNbcGFyYW1fY291bnRdID0gUUNwdXJlY29w eTsKLSAgICAgICAgICAgICAgcGFyYW1zW3BhcmFtX2NvdW50ICsgMV0gPSBGcGxpc3RfZ2V0ICh0 bXAsIFFwdXJlY29weSk7Ci0gICAgICAgICAgICAgIGlmICghTklMUCAocGFyYW1zW3BhcmFtX2Nv dW50ICsgMV0pKQotICAgICAgICAgICAgICAgIHBhcmFtX2NvdW50ICs9IDI7Ci0KIAkgICAgICAv KiBUaGlzIGlzIHRoZSBoYXNoIHRhYmxlIGRhdGEuICAqLwogCSAgICAgIGRhdGEgPSBGcGxpc3Rf Z2V0ICh0bXAsIFFkYXRhKTsKIApAQCAtMzE1NCwxMyArMzE0OSwxMyBAQCByZWFkMSAoTGlzcF9P YmplY3QgcmVhZGNoYXJmdW4sIGludCAqcGNoLCBib29sIGZpcnN0X2luX2xpc3QpCiAJICAgICAg LyogTm8gc3ltYm9sIGNoYXJhY3RlciBmb2xsb3dzLCB0aGlzIGlzIHRoZSBlbXB0eQogCQkgc3lt Ym9sLiAgKi8KIAkgICAgICBVTlJFQUQgKGMpOwotCSAgICAgIHJldHVybiBGbWFrZV9zeW1ib2wg KGVtcHR5X3VuaWJ5dGVfc3RyaW5nKTsKKwkgICAgICByZXR1cm4gRm1ha2Vfc3ltYm9sIChidWls ZF9zdHJpbmcgKCIiKSk7CiAJICAgIH0KIAkgIGdvdG8gcmVhZF9zeW1ib2w7CiAJfQogICAgICAg LyogIyMgaXMgdGhlIGVtcHR5IHN5bWJvbC4gICovCiAgICAgICBpZiAoYyA9PSAnIycpCi0JcmV0 dXJuIEZpbnRlcm4gKGVtcHR5X3VuaWJ5dGVfc3RyaW5nLCBRbmlsKTsKKwlyZXR1cm4gRmludGVy biAoYnVpbGRfc3RyaW5nICgiIiksIFFuaWwpOwogCiAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8 PSAnOScpCiAJewpAQCAtMzU1Niw5ICszNTUxLDggQEAgcmVhZDEgKExpc3BfT2JqZWN0IHJlYWRj aGFyZnVuLCBpbnQgKnBjaCwgYm9vbCBmaXJzdF9pbl9saXN0KQogCSAgaWYgKHVuaW50ZXJuZWRf c3ltYm9sKQogCSAgICB7CiAJICAgICAgTGlzcF9PYmplY3QgbmFtZQotCQk9ICgoISBOSUxQIChW cHVyaWZ5X2ZsYWcpCi0JCSAgICA/IG1ha2VfcHVyZV9zdHJpbmcgOiBtYWtlX3NwZWNpZmllZF9z dHJpbmcpCi0JCSAgIChyZWFkX2J1ZmZlciwgbmNoYXJzLCBuYnl0ZXMsIG11bHRpYnl0ZSkpOwor CQk9IG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAocmVhZF9idWZmZXIsIG5jaGFycywgbmJ5dGVzLAor CQkJCQkgbXVsdGlieXRlKTsKIAkgICAgICByZXN1bHQgPSBGbWFrZV9zeW1ib2wgKG5hbWUpOwog CSAgICB9CiAJICBlbHNlCkBAIC00MTQ1LDEwICs0MTM5LDggQEAgaW50ZXJuX2Nfc3RyaW5nXzEg KGNvbnN0IGNoYXIgKnN0ciwgcHRyZGlmZl90IGxlbikKIAogICBpZiAoIVNZTUJPTFAgKHRlbSkp CiAgICAgewotICAgICAgLyogQ3JlYXRpbmcgYSBub24tcHVyZSBzdHJpbmcgZnJvbSBhIHN0cmlu ZyBsaXRlcmFsIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCi0JIFdlIGNvdWxkIGp1c3QgdXNlIG1ha2Vf c3RyaW5nIGhlcmUgYW5kIGxpdmUgd2l0aCB0aGUgZXh0cmEgY29weS4gICovCiAgICAgICBlYXNz ZXJ0ICghTklMUCAoVnB1cmlmeV9mbGFnKSk7Ci0gICAgICB0ZW0gPSBpbnRlcm5fZHJpdmVyICht YWtlX3B1cmVfY19zdHJpbmcgKHN0ciwgbGVuKSwgb2JhcnJheSwgdGVtKTsKKyAgICAgIHRlbSA9 IGludGVybl9kcml2ZXIgKG1ha2Vfc3RyaW5nIChzdHIsIGxlbiksIG9iYXJyYXksIHRlbSk7CiAg ICAgfQogICByZXR1cm4gdGVtOwogfQpAQCAtNDE1Nyw3ICs0MTQ5LDcgQEAgaW50ZXJuX2Nfc3Ry aW5nXzEgKGNvbnN0IGNoYXIgKnN0ciwgcHRyZGlmZl90IGxlbikKIGRlZmluZV9zeW1ib2wgKExp c3BfT2JqZWN0IHN5bSwgY2hhciBjb25zdCAqc3RyKQogewogICBwdHJkaWZmX3QgbGVuID0gc3Ry bGVuIChzdHIpOwotICBMaXNwX09iamVjdCBzdHJpbmcgPSBtYWtlX3B1cmVfY19zdHJpbmcgKHN0 ciwgbGVuKTsKKyAgTGlzcF9PYmplY3Qgc3RyaW5nID0gbWFrZV9zdHJpbmcgKHN0ciwgbGVuKTsK ICAgaW5pdF9zeW1ib2wgKHN5bSwgc3RyaW5nKTsKIAogICAvKiBRdW5ib3VuZCBpcyB1bmludGVy bmVkLCBzbyB0aGF0IGl0J3Mgbm90IGNvbmZ1c2VkIHdpdGggYW55IHN5bWJvbApAQCAtNDE4NCw4 ICs0MTc2LDcgQEAgREVGVU4gKCJpbnRlcm4iLCBGaW50ZXJuLCBTaW50ZXJuLCAxLCAyLCAwLAog CiAgIHRlbSA9IG9ibG9va3VwIChvYmFycmF5LCBTU0RBVEEgKHN0cmluZyksIFNDSEFSUyAoc3Ry aW5nKSwgU0JZVEVTIChzdHJpbmcpKTsKICAgaWYgKCFTWU1CT0xQICh0ZW0pKQotICAgIHRlbSA9 IGludGVybl9kcml2ZXIgKE5JTFAgKFZwdXJpZnlfZmxhZykgPyBzdHJpbmcgOiBGcHVyZWNvcHkg KHN0cmluZyksCi0JCQkgb2JhcnJheSwgdGVtKTsKKyAgICB0ZW0gPSBpbnRlcm5fZHJpdmVyIChz dHJpbmcsIG9iYXJyYXksIHRlbSk7CiAgIHJldHVybiB0ZW07CiB9CiAKQEAgLTQ4MzMsMjMgKzQ4 MjQsMjMgQEAgc3ltc19vZl9scmVhZCAodm9pZCkKIHRvIHRoZSBzcGVjaWZpZWQgZmlsZSBuYW1l IGlmIGEgc3VmZml4IGlzIGFsbG93ZWQgb3IgcmVxdWlyZWQuICAqLyk7CiAjaWZkZWYgSEFWRV9N T0RVTEVTCiAjaWZkZWYgTU9EVUxFU19TRUNPTkRBUllfU1VGRklYCi0gIFZsb2FkX3N1ZmZpeGVz ID0gbGlzdDQgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIuZWxjIiksCi0JCQkgIGJ1aWxkX3B1cmVf Y19zdHJpbmcgKCIuZWwiKSwKLQkJCSAgYnVpbGRfcHVyZV9jX3N0cmluZyAoTU9EVUxFU19TVUZG SVgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9wdXJlX2Nfc3RyaW5nIChNT0RV TEVTX1NFQ09OREFSWV9TVUZGSVgpKTsKKyAgVmxvYWRfc3VmZml4ZXMgPSBsaXN0NCAoYnVpbGRf c3RyaW5nICgiLmVsYyIpLAorCQkJICBidWlsZF9zdHJpbmcgKCIuZWwiKSwKKwkJCSAgYnVpbGRf c3RyaW5nIChNT0RVTEVTX1NVRkZJWCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk X3N0cmluZyAoTU9EVUxFU19TRUNPTkRBUllfU1VGRklYKSk7CiAjZWxzZQotICBWbG9hZF9zdWZm aXhlcyA9IGxpc3QzIChidWlsZF9wdXJlX2Nfc3RyaW5nICgiLmVsYyIpLAotCQkJICBidWlsZF9w dXJlX2Nfc3RyaW5nICgiLmVsIiksCi0JCQkgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKE1PRFVMRVNf U1VGRklYKSk7CisgIFZsb2FkX3N1ZmZpeGVzID0gbGlzdDMgKGJ1aWxkX3N0cmluZyAoIi5lbGMi KSwKKwkJCSAgYnVpbGRfc3RyaW5nICgiLmVsIiksCisJCQkgIGJ1aWxkX3N0cmluZyAoTU9EVUxF U19TVUZGSVgpKTsKICNlbmRpZgogI2Vsc2UKLSAgVmxvYWRfc3VmZml4ZXMgPSBsaXN0MiAoYnVp bGRfcHVyZV9jX3N0cmluZyAoIi5lbGMiKSwKLQkJCSAgYnVpbGRfcHVyZV9jX3N0cmluZyAoIi5l bCIpKTsKKyAgVmxvYWRfc3VmZml4ZXMgPSBsaXN0MiAoYnVpbGRfc3RyaW5nICgiLmVsYyIpLAor CQkJICBidWlsZF9zdHJpbmcgKCIuZWwiKSk7CiAjZW5kaWYKICAgREVGVkFSX0xJU1AgKCJtb2R1 bGUtZmlsZS1zdWZmaXgiLCBWbW9kdWxlX2ZpbGVfc3VmZml4LAogCSAgICAgICBkb2M6IC8qIFN1 ZmZpeCBvZiBsb2FkYWJsZSBtb2R1bGUgZmlsZSwgb3IgbmlsIGlmIG1vZHVsZXMgYXJlIG5vdCBz dXBwb3J0ZWQuICAqLyk7CiAjaWZkZWYgSEFWRV9NT0RVTEVTCi0gIFZtb2R1bGVfZmlsZV9zdWZm aXggPSBidWlsZF9wdXJlX2Nfc3RyaW5nIChNT0RVTEVTX1NVRkZJWCk7CisgIFZtb2R1bGVfZmls ZV9zdWZmaXggPSBidWlsZF9zdHJpbmcgKE1PRFVMRVNfU1VGRklYKTsKICNlbHNlCiAgIFZtb2R1 bGVfZmlsZV9zdWZmaXggPSBRbmlsOwogI2VuZGlmCkBAIC00OTkyLDcgKzQ5ODMsNyBAQCBzeW1z X29mX2xyZWFkICh2b2lkKQogV2hlbiB0aGUgcmVndWxhciBleHByZXNzaW9uIG1hdGNoZXMsIHRo ZSBmaWxlIGlzIGNvbnNpZGVyZWQgdG8gYmUgc2FmZQogdG8gbG9hZC4gICovKTsKICAgVmJ5dGVj b21wX3ZlcnNpb25fcmVnZXhwCi0gICAgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiXjs7Oy5cXChp biBFbWFjcyB2ZXJzaW9uXFx8Ynl0ZWNvbXAgdmVyc2lvbiBGU0ZcXCkiKTsKKyAgICA9IGJ1aWxk X3N0cmluZyAoIl47OzsuXFwoaW4gRW1hY3MgdmVyc2lvblxcfGJ5dGVjb21wIHZlcnNpb24gRlNG XFwpIik7CiAKICAgREVGU1lNIChRbGV4aWNhbF9iaW5kaW5nLCAibGV4aWNhbC1iaW5kaW5nIik7 CiAgIERFRlZBUl9MSVNQICgibGV4aWNhbC1iaW5kaW5nIiwgVmxleGljYWxfYmluZGluZywKZGlm ZiAtLWdpdCBhL3NyYy9wZHVtcGVyLmMgYi9zcmMvcGR1bXBlci5jCmluZGV4IDIxN2ZmYTY3ODMu LjI1NDNmZTkyYzcgMTAwNjQ0Ci0tLSBhL3NyYy9wZHVtcGVyLmMKKysrIGIvc3JjL3BkdW1wZXIu YwpAQCAtMjQ0MCw3ICsyNDQwLDYgQEAgZHVtcF9zeW1ib2wgKHN0cnVjdCBkdW1wX2NvbnRleHQg KmN0eCwKICAgRFVNUF9GSUVMRF9DT1BZICgmb3V0LCBzeW1ib2wsIHUucy50cmFwcGVkX3dyaXRl KTsKICAgRFVNUF9GSUVMRF9DT1BZICgmb3V0LCBzeW1ib2wsIHUucy5pbnRlcm5lZCk7CiAgIERV TVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1LnMuZGVjbGFyZWRfc3BlY2lhbCk7Ci0gIERV TVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1LnMucGlubmVkKTsKICAgZHVtcF9maWVsZF9s diAoY3R4LCAmb3V0LCBzeW1ib2wsICZzeW1ib2wtPnUucy5uYW1lLCBXRUlHSFRfU1RST05HKTsK ICAgc3dpdGNoIChzeW1ib2wtPnUucy5yZWRpcmVjdCkKICAgICB7CkBAIC0yNjczLDcgKzI2NzIs NiBAQCBkdW1wX2hhc2hfdGFibGUgKHN0cnVjdCBkdW1wX2NvbnRleHQgKmN0eCwKICAgICAgdGhl bSBhcyBjbG9zZSB0byB0aGUgaGFzaCB0YWJsZSBhcyBwb3NzaWJsZS4gICovCiAgIERVTVBfRklF TERfQ09QWSAob3V0LCBoYXNoLCBjb3VudCk7CiAgIERVTVBfRklFTERfQ09QWSAob3V0LCBoYXNo LCBuZXh0X2ZyZWUpOwotICBEVU1QX0ZJRUxEX0NPUFkgKG91dCwgaGFzaCwgcHVyZWNvcHkpOwog ICBEVU1QX0ZJRUxEX0NPUFkgKG91dCwgaGFzaCwgbXV0YWJsZSk7CiAgIERVTVBfRklFTERfQ09Q WSAob3V0LCBoYXNoLCByZWhhc2hfdGhyZXNob2xkKTsKICAgRFVNUF9GSUVMRF9DT1BZIChvdXQs IGhhc2gsIHJlaGFzaF9zaXplKTsKQEAgLTU0NjYsOCArNTQ2NCw2IEBAIERFRlVOICgicGR1bXBl ci1zdGF0cyIsIEZwZHVtcGVyX3N0YXRzLCBTcGR1bXBlcl9zdGF0cywgMCwgMCwgMCwKIAkJRmNv bnMgKFFkdW1wX2ZpbGVfbmFtZSwgZHVtcF9mbikpOwogfQogCi0jZW5kaWYgLyogSEFWRV9QRFVN UEVSICovCi0KIAwKIHN0YXRpYyB2b2lkCiB0aGF3X2hhc2hfdGFibGVzICh2b2lkKQpAQCAtNTQ4 Miw2ICs1NDc4LDcgQEAgaW5pdF9wZHVtcGVyX29uY2UgKHZvaWQpCiB7CiAgIHBkdW1wZXJfZG9f bm93X2FuZF9hZnRlcl9sb2FkICh0aGF3X2hhc2hfdGFibGVzKTsKIH0KKyNlbmRpZiAvKiBIQVZF X1BEVU1QRVIgKi8KIAogdm9pZAogc3ltc19vZl9wZHVtcGVyICh2b2lkKQpkaWZmIC0tZ2l0IGEv c3JjL3ByaW50LmMgYi9zcmMvcHJpbnQuYwppbmRleCBiZDE3NjkxNDRlLi4xZGExYzRhMWE0IDEw MDY0NAotLS0gYS9zcmMvcHJpbnQuYworKysgYi9zcmMvcHJpbnQuYwpAQCAtMTU4MCwxMiArMTU4 MCw2IEBAIHByaW50X3ZlY3Rvcmxpa2UgKExpc3BfT2JqZWN0IG9iaiwgTGlzcF9PYmplY3QgcHJp bnRjaGFyZnVuLCBib29sIGVzY2FwZWZsYWcsCiAJcHJpbnRfb2JqZWN0IChGaGFzaF90YWJsZV9y ZWhhc2hfdGhyZXNob2xkIChvYmopLAogCQkgICAgICBwcmludGNoYXJmdW4sIGVzY2FwZWZsYWcp OwogCi0JaWYgKGgtPnB1cmVjb3B5KQotCSAgewotCSAgICBwcmludF9jX3N0cmluZyAoIiBwdXJl Y29weSAiLCBwcmludGNoYXJmdW4pOwotCSAgICBwcmludF9vYmplY3QgKGgtPnB1cmVjb3B5ID8g UXQgOiBRbmlsLCBwcmludGNoYXJmdW4sIGVzY2FwZWZsYWcpOwotCSAgfQotCiAJcHJpbnRfY19z dHJpbmcgKCIgZGF0YSAiLCBwcmludGNoYXJmdW4pOwogCiAJLyogUHJpbnQgdGhlIGRhdGEgaGVy ZSBhcyBhIHBsaXN0LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb2Nlc3MuYyBiL3NyYy9wcm9jZXNz LmMKaW5kZXggM2FhMTA1YWUzNC4uOWZiNjJiZTZkNSAxMDA2NDQKLS0tIGEvc3JjL3Byb2Nlc3Mu YworKysgYi9zcmMvcHJvY2Vzcy5jCkBAIC04NTE0LDcgKzg1MTQsNyBAQCBzeW1zX29mX3Byb2Nl c3MgKHZvaWQpCiAgICBjb25zdCBzdHJ1Y3Qgc29ja2V0X29wdGlvbnMgKnNvcHQ7CiAKICNkZWZp bmUgQUREX1NVQkZFQVRVUkUoa2V5LCB2YWwpIFwKLSAgc3ViZmVhdHVyZXMgPSBwdXJlX2NvbnMg KHB1cmVfY29ucyAoa2V5LCBwdXJlX2NvbnMgKHZhbCwgUW5pbCkpLCBzdWJmZWF0dXJlcykKKyAg c3ViZmVhdHVyZXMgPSBGY29ucyAoRmNvbnMgKGtleSwgRmNvbnMgKHZhbCwgUW5pbCkpLCBzdWJm ZWF0dXJlcykKIAogICAgQUREX1NVQkZFQVRVUkUgKFFDbm93YWl0LCBRdCk7CiAjaWZkZWYgREFU QUdSQU1fU09DS0VUUwpAQCAtODUzNiw3ICs4NTM2LDcgQEAgI2RlZmluZSBBRERfU1VCRkVBVFVS RShrZXksIHZhbCkgXAogICAgQUREX1NVQkZFQVRVUkUgKFFDc2VydmVyLCBRdCk7CiAKICAgIGZv ciAoc29wdCA9IHNvY2tldF9vcHRpb25zOyBzb3B0LT5uYW1lOyBzb3B0KyspCi0gICAgIHN1YmZl YXR1cmVzID0gcHVyZV9jb25zIChpbnRlcm5fY19zdHJpbmcgKHNvcHQtPm5hbWUpLCBzdWJmZWF0 dXJlcyk7CisgICAgIHN1YmZlYXR1cmVzID0gRmNvbnMgKGludGVybl9jX3N0cmluZyAoc29wdC0+ bmFtZSksIHN1YmZlYXR1cmVzKTsKIAogICAgRnByb3ZpZGUgKGludGVybl9jX3N0cmluZyAoIm1h a2UtbmV0d29yay1wcm9jZXNzIiksIHN1YmZlYXR1cmVzKTsKICB9CmRpZmYgLS1naXQgYS9zcmMv cHJvZmlsZXIuYyBiL3NyYy9wcm9maWxlci5jCmluZGV4IDlkMmU4MjhmMjIuLjNlNjFhZGU0MzMg MTAwNjQ0Ci0tLSBhL3NyYy9wcm9maWxlci5jCisrKyBiL3NyYy9wcm9maWxlci5jCkBAIC02Myw3 ICs2Myw3IEBAIG1ha2VfbG9nICh2b2lkKQogICBMaXNwX09iamVjdCBsb2cgPSBtYWtlX2hhc2hf dGFibGUgKGhhc2h0ZXN0X3Byb2ZpbGVyLCBoZWFwX3NpemUsCiAJCQkJICAgICBERUZBVUxUX1JF SEFTSF9TSVpFLAogCQkJCSAgICAgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xELAotCQkJCSAgICAg UW5pbCwgZmFsc2UpOworCQkJCSAgICAgUW5pbCk7CiAgIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUg KmggPSBYSEFTSF9UQUJMRSAobG9nKTsKIAogICAvKiBXaGF0IGlzIHNwZWNpYWwgYWJvdXQgb3Vy IGhhc2gtdGFibGVzIGlzIHRoYXQgdGhlIHZhbHVlcyBhcmUgcHJlLWZpbGxlZApkaWZmIC0tZ2l0 IGEvc3JjL3B1cmVzaXplLmggYi9zcmMvcHVyZXNpemUuaAppbmRleCA3NjExZjZlNTNmLi5lNjlk ZTI5YmIyIDEwMDY0NAotLS0gYS9zcmMvcHVyZXNpemUuaAorKysgYi9zcmMvcHVyZXNpemUuaApA QCAtMSwxMTUgKzAsMCBAQAotLyogSG93IG11Y2ggcmVhZC1vbmx5IExpc3Agc3RvcmFnZSBhIGR1 bXBlZCBFbWFjcyBuZWVkcy4KLSAgIENvcHlyaWdodCAoQykgMTk5MywgMjAwMS0yMDIwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi1UaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1h Y3MuCi0KLUdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Ci15b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0KLUdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLU1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLUdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi1hbG9uZyB3aXRoIEdOVSBF bWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot Ci0jaWZuZGVmIEVNQUNTX1BVUkVTSVpFX0gKLSNkZWZpbmUgRU1BQ1NfUFVSRVNJWkVfSAotCi0j aW5jbHVkZSAibGlzcC5oIgotCi1JTkxJTkVfSEVBREVSX0JFR0lOCi0KLS8qIERlZmluZSBQVVJF U0laRSwgdGhlIG51bWJlciBvZiBieXRlcyBvZiBwdXJlIExpc3AgY29kZSB0byBsZWF2ZSBzcGFj ZSBmb3IuCi0KLSAgIEF0IG9uZSBwb2ludCwgdGhpcyB3YXMgZGVmaW5lZCBpbiBjb25maWcuaCwg bWVhbmluZyB0aGF0IGNoYW5naW5nCi0gICBQVVJFU0laRSB3b3VsZCBtYWtlIE1ha2UgcmVjb21w aWxlIGFsbCBvZiBFbWFjcy4gIEJ1dCBvbmx5IGEgZmV3Ci0gICBmaWxlcyBhY3R1YWxseSB1c2Ug UFVSRVNJWkUsIHNvIHdlIHNwbGl0IGl0IG91dCB0byBpdHMgb3duIC5oIGZpbGUuCi0KLSAgIE1h a2Ugc3VyZSB0byBpbmNsdWRlIHRoaXMgZmlsZSBhZnRlciBjb25maWcuaCwgc2luY2UgdGhhdCB0 ZWxscyB1cwotICAgd2hldGhlciB3ZSBhcmUgcnVubmluZyBYIHdpbmRvd3MsIHdoaWNoIHRlbGxz IHVzIGhvdyBtdWNoIHB1cmUKLSAgIHN0b3JhZ2UgdG8gYWxsb2NhdGUuICAqLwotCi0vKiBGaXJz dCBkZWZpbmUgYSBtZWFzdXJlIG9mIHRoZSBhbW91bnQgb2YgZGF0YSB3ZSBoYXZlLiAgKi8KLQot LyogQSBzeXN0ZW0gY29uZmlndXJhdGlvbiBmaWxlIG1heSBzZXQgdGhpcyB0byByZXF1ZXN0IGEg Y2VydGFpbiBleHRyYQotICAgYW1vdW50IG9mIHN0b3JhZ2UuICBUaGlzIGlzIGEgbG90IG1vcmUg dXBkYXRlLXJvYnVzdCB0aGF0IGRlZmluaW5nCi0gICBCQVNFX1BVUkVTSVpFIG9yIGV2ZW4gUFVS RVNJWkUgZGlyZWN0bHkuICAqLwotI2lmbmRlZiBTWVNURU1fUFVSRVNJWkVfRVhUUkEKLSNkZWZp bmUgU1lTVEVNX1BVUkVTSVpFX0VYVFJBIDAKLSNlbmRpZgotCi0jaWZuZGVmIFNJVEVMT0FEX1BV UkVTSVpFX0VYVFJBCi0jZGVmaW5lIFNJVEVMT0FEX1BVUkVTSVpFX0VYVFJBIDAKLSNlbmRpZgot Ci0jaWZuZGVmIEJBU0VfUFVSRVNJWkUKLSNkZWZpbmUgQkFTRV9QVVJFU0laRSAoMjAwMDAwMCAr IFNZU1RFTV9QVVJFU0laRV9FWFRSQSArIFNJVEVMT0FEX1BVUkVTSVpFX0VYVFJBKQotI2VuZGlm Ci0KLS8qIEluY3JlYXNlIEJBU0VfUFVSRVNJWkUgYnkgYSByYXRpbyBkZXBlbmRpbmcgb24gdGhl IG1hY2hpbmUncyB3b3JkIHNpemUuICAqLwotI2lmbmRlZiBQVVJFU0laRV9SQVRJTwotI2lmIEVN QUNTX0lOVF9NQVggPj4gMzEgIT0gMAotI2lmIFBUUkRJRkZfTUFYID4+IDMxICE9IDAKLSNkZWZp bmUgUFVSRVNJWkVfUkFUSU8gMTAgLyA2CS8qIERvbid0IHN1cnJvdW5kIHdpdGggYCgpJy4gICov Ci0jZWxzZQotI2RlZmluZSBQVVJFU0laRV9SQVRJTyA4IC8gNgkvKiBEb24ndCBzdXJyb3VuZCB3 aXRoIGAoKScuICAqLwotI2VuZGlmCi0jZWxzZQotI2RlZmluZSBQVVJFU0laRV9SQVRJTyAxCi0j ZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgRU5BQkxFX0NIRUNLSU5HCi0vKiBFTkFCTEVfQ0hFQ0tJ Tkcgc29tZWhvdyBpbmNyZWFzZXMgdGhlIHB1cmVzcGFjZSB1c2VkLCBwcm9iYWJseSBiZWNhdXNl Ci0gICBpdCB0ZW5kcyB0byBjYXVzZSBzb21lIG1hY3JvIGFyZ3VtZW50cyB0byBiZSBldmFsdWF0 ZWQgdHdpY2UuICBUaGlzIGlzCi0gICBhIGJ1ZywgYnV0IGl0J3MgZGlmZmljdWx0IHRvIHRyYWNr IGl0IGRvd24uICAqLwotI2RlZmluZSBQVVJFU0laRV9DSEVDS0lOR19SQVRJTyAxMiAvIDEwCS8q IERvbid0IHN1cnJvdW5kIHdpdGggYCgpJy4gICovCi0jZWxzZQotI2RlZmluZSBQVVJFU0laRV9D SEVDS0lOR19SQVRJTyAxCi0jZW5kaWYKLQotLyogVGhpcyBpcyB0aGUgYWN0dWFsIHNpemUgaW4g Ynl0ZXMgdG8gYWxsb2NhdGUuICAqLwotI2lmbmRlZiBQVVJFU0laRQotI2RlZmluZSBQVVJFU0la RSAgKEJBU0VfUFVSRVNJWkUgKiBQVVJFU0laRV9SQVRJTyAqIFBVUkVTSVpFX0NIRUNLSU5HX1JB VElPKQotI2VuZGlmCi0KLWV4dGVybiBBVk9JRCBwdXJlX3dyaXRlX2Vycm9yIChMaXNwX09iamVj dCk7Ci0KLWV4dGVybiBFTUFDU19JTlQgcHVyZVtdOwotCi0vKiBUaGUgcHVyZXNpemVfaF8qIG1h Y3JvcyBhcmUgcHJpdmF0ZSB0byB0aGlzIGluY2x1ZGUgZmlsZS4gICovCi0KLS8qIFRydWUgaWYg UFRSIGlzIHB1cmUuICAqLwotCi0jZGVmaW5lIHB1cmVzaXplX2hfUFVSRV9QKHB0cikgXAotICAo KHVpbnRwdHJfdCkgKHB0cikgLSAodWludHB0cl90KSBwdXJlIDw9IFBVUkVTSVpFKQotCi1JTkxJ TkUgYm9vbAotUFVSRV9QICh2b2lkICpwdHIpCi17Ci0gIHJldHVybiBwdXJlc2l6ZV9oX1BVUkVf UCAocHRyKTsKLX0KLQotLyogU2lnbmFsIGFuIGVycm9yIGlmIE9CSiBpcyBwdXJlLiAgUFRSIGlz IE9CSiB1bnRhZ2dlZC4gICovCi0KLSNkZWZpbmUgcHVyZXNpemVfaF9DSEVDS19JTVBVUkUob2Jq LCBwdHIpIFwKLSAgKFBVUkVfUCAocHRyKSA/IHB1cmVfd3JpdGVfZXJyb3IgKG9iaikgOiAodm9p ZCkgMCkKLQotSU5MSU5FIHZvaWQKLUNIRUNLX0lNUFVSRSAoTGlzcF9PYmplY3Qgb2JqLCB2b2lk ICpwdHIpCi17Ci0gIHB1cmVzaXplX2hfQ0hFQ0tfSU1QVVJFIChvYmosIHB0cik7Ci19Ci0KLSNp ZiBERUZJTkVfS0VZX09QU19BU19NQUNST1MKLSMgZGVmaW5lIFBVUkVfUChwdHIpIHB1cmVzaXpl X2hfUFVSRV9QIChwdHIpCi0jIGRlZmluZSBDSEVDS19JTVBVUkUob2JqLCBwdHIpIHB1cmVzaXpl X2hfQ0hFQ0tfSU1QVVJFIChvYmosIHB0cikKLSNlbmRpZgotCi1JTkxJTkVfSEVBREVSX0VORAot Ci0jZW5kaWYgLyogRU1BQ1NfUFVSRVNJWkVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3NlYXJjaC5j IGIvc3JjL3NlYXJjaC5jCmluZGV4IDZmYjM3MTZjZDQuLjAyM2Q0MTIzNmMgMTAwNjQ0Ci0tLSBh L3NyYy9zZWFyY2guYworKysgYi9zcmMvc2VhcmNoLmMKQEAgLTMzMzcsMTkgKzMzMzcsMTkgQEAg c3ltc19vZl9zZWFyY2ggKHZvaWQpCiAgIERFRlNZTSAoUWludmFsaWRfcmVnZXhwLCAiaW52YWxp ZC1yZWdleHAiKTsKIAogICBGcHV0IChRc2VhcmNoX2ZhaWxlZCwgUWVycm9yX2NvbmRpdGlvbnMs Ci0JcHVyZV9saXN0IChRc2VhcmNoX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUXNlYXJjaF9m YWlsZWQsIFFlcnJvcikpOwogICBGcHV0IChRc2VhcmNoX2ZhaWxlZCwgUWVycm9yX21lc3NhZ2Us Ci0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIlNlYXJjaCBmYWlsZWQiKSk7CisJYnVpbGRfc3RyaW5n ICgiU2VhcmNoIGZhaWxlZCIpKTsKIAogICBGcHV0IChRdXNlcl9zZWFyY2hfZmFpbGVkLCBRZXJy b3JfY29uZGl0aW9ucywKLQlwdXJlX2xpc3QgKFF1c2VyX3NlYXJjaF9mYWlsZWQsIFF1c2VyX2Vy cm9yLCBRc2VhcmNoX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUXVzZXJfc2VhcmNoX2ZhaWxl ZCwgUXVzZXJfZXJyb3IsIFFzZWFyY2hfZmFpbGVkLCBRZXJyb3IpKTsKICAgRnB1dCAoUXVzZXJf c2VhcmNoX2ZhaWxlZCwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxkX3B1cmVfY19zdHJp bmcgKCJTZWFyY2ggZmFpbGVkIikpOworICAgICAgICBidWlsZF9zdHJpbmcgKCJTZWFyY2ggZmFp bGVkIikpOwogCiAgIEZwdXQgKFFpbnZhbGlkX3JlZ2V4cCwgUWVycm9yX2NvbmRpdGlvbnMsCi0J cHVyZV9saXN0IChRaW52YWxpZF9yZWdleHAsIFFlcnJvcikpOworCWxpc3QgKFFpbnZhbGlkX3Jl Z2V4cCwgUWVycm9yKSk7CiAgIEZwdXQgKFFpbnZhbGlkX3JlZ2V4cCwgUWVycm9yX21lc3NhZ2Us Ci0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIkludmFsaWQgcmVnZXhwIikpOworCWJ1aWxkX3N0cmlu ZyAoIkludmFsaWQgcmVnZXhwIikpOwogCiAgIHJlX21hdGNoX29iamVjdCA9IFFuaWw7CiAgIHN0 YXRpY3BybyAoJnJlX21hdGNoX29iamVjdCk7CmRpZmYgLS1naXQgYS9zcmMvc3ludGF4LmMgYi9z cmMvc3ludGF4LmMKaW5kZXggOWY3N2VhNWY5Yi4uMjAzOTBiMjQ3NCAxMDA2NDQKLS0tIGEvc3Jj L3N5bnRheC5jCisrKyBiL3NyYy9zeW50YXguYwpAQCAtMzcwOSw5ICszNzA5LDkgQEAgc3ltc19v Zl9zeW50YXggKHZvaWQpCiAKICAgREVGU1lNIChRc2Nhbl9lcnJvciwgInNjYW4tZXJyb3IiKTsK ICAgRnB1dCAoUXNjYW5fZXJyb3IsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUXNj YW5fZXJyb3IsIFFlcnJvcikpOworCWxpc3QgKFFzY2FuX2Vycm9yLCBRZXJyb3IpKTsKICAgRnB1 dCAoUXNjYW5fZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJT Y2FuIGVycm9yIikpOworCWJ1aWxkX3N0cmluZyAoIlNjYW4gZXJyb3IiKSk7CiAKICAgREVGVkFS X0JPT0wgKCJwYXJzZS1zZXhwLWlnbm9yZS1jb21tZW50cyIsIHBhcnNlX3NleHBfaWdub3JlX2Nv bW1lbnRzLAogCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMgYGZvcndhcmQtc2V4cCcsIGV0 Yy4sIHNob3VsZCB0cmVhdCBjb21tZW50cyBhcyB3aGl0ZXNwYWNlLiAgKi8pOwpkaWZmIC0tZ2l0 IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IGFiODY0MzMyZTcuLmYyZDEwMmFh MzMgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMKQEAgLTEwMzE3 LDkgKzEwMzE3LDkgQEAgc3ltc19vZl93MzJmbnMgKHZvaWQpCiAgIERFRlNZTSAoUWpzb24sICJq c29uIik7CiAKICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yX2NvbmRpdGlvbnMsCi0J cHVyZV9saXN0IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3IpKTsKKwlsaXN0IChRdW5kZWZpbmVk X2NvbG9yLCBRZXJyb3IpKTsKICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yX21lc3Nh Z2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIlVuZGVmaW5lZCBjb2xvciIpKTsKKwlidWlsZF9z dHJpbmcgKCJVbmRlZmluZWQgY29sb3IiKSk7CiAKICAgc3RhdGljcHJvICgmdzMyX2dyYWJiZWRf a2V5cyk7CiAgIHczMl9ncmFiYmVkX2tleXMgPSBRbmlsOwpkaWZmIC0tZ2l0IGEvc3JjL3hkaXNw LmMgYi9zcmMveGRpc3AuYwppbmRleCBhZDAzYWM0NjA1Li4xMGRmM2I3NzdlIDEwMDY0NAotLS0g YS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMzQ1MDgsNyArMzQ1MDgsNyBAQCBz eW1zX29mX3hkaXNwICh2b2lkKQogICBzdGF0aWNwcm8gKCZlY2hvX2FyZWFfYnVmZmVyWzBdKTsK ICAgc3RhdGljcHJvICgmZWNob19hcmVhX2J1ZmZlclsxXSk7CiAKLSAgVm1lc3NhZ2VzX2J1ZmZl cl9uYW1lID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIipNZXNzYWdlcyoiKTsKKyAgVm1lc3NhZ2Vz X2J1ZmZlcl9uYW1lID0gYnVpbGRfc3RyaW5nICgiKk1lc3NhZ2VzKiIpOwogICBzdGF0aWNwcm8g KCZWbWVzc2FnZXNfYnVmZmVyX25hbWUpOwogCiAgIG1vZGVfbGluZV9wcm9wdHJhbnNfYWxpc3Qg PSBRbmlsOwpAQCAtMzQ1OTEsNyArMzQ1OTEsNyBAQCBzeW1zX29mX3hkaXNwICh2b2lkKQogICBE RUZWQVJfTElTUCAoIm92ZXJsYXktYXJyb3ctc3RyaW5nIiwgVm92ZXJsYXlfYXJyb3dfc3RyaW5n LAogICAgIGRvYzogLyogU3RyaW5nIHRvIGRpc3BsYXkgYXMgYW4gYXJyb3cgaW4gbm9uLXdpbmRv dyBmcmFtZXMuCiBTZWUgYWxzbyBgb3ZlcmxheS1hcnJvdy1wb3NpdGlvbicuICAqLyk7Ci0gIFZv dmVybGF5X2Fycm93X3N0cmluZyA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCI9PiIpOworICBWb3Zl cmxheV9hcnJvd19zdHJpbmcgPSBidWlsZF9zdHJpbmcgKCI9PiIpOwogCiAgIERFRlZBUl9MSVNQ ICgib3ZlcmxheS1hcnJvdy12YXJpYWJsZS1saXN0IiwgVm92ZXJsYXlfYXJyb3dfdmFyaWFibGVf bGlzdCwKICAgICBkb2M6IC8qIExpc3Qgb2YgdmFyaWFibGVzIChzeW1ib2xzKSB3aGljaCBob2xk IG1hcmtlcnMgZm9yIG92ZXJsYXkgYXJyb3dzLgpAQCAtMzQ2OTksMTggKzM0Njk5LDE4IEBAIHN5 bXNfb2ZfeGRpc3AgKHZvaWQpCiBUaGlzIHZhcmlhYmxlIGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUg YXMgYG1vZGUtbGluZS1mb3JtYXQnICh3aGljaCBzZWUpLAogYW5kIGlzIHVzZWQgb25seSBvbiBm cmFtZXMgZm9yIHdoaWNoIG5vIGV4cGxpY2l0IG5hbWUgaGFzIGJlZW4gc2V0CiBcKHNlZSBgbW9k aWZ5LWZyYW1lLXBhcmFtZXRlcnMnKS4gICovKTsKLSAgLyogRG8gbm90IG5lc3QgY2FsbHMgdG8g cHVyZV9saXN0LiAgVGhpcyB3b3JrcyBhcm91bmQgYSBidWcgaW4KKyAgLyogRG8gbm90IG5lc3Qg Y2FsbHMgdG8gbGlzdC4gIFRoaXMgd29ya3MgYXJvdW5kIGEgYnVnIGluCiAgICAgIE9yYWNsZSBE ZXZlbG9wZXIgU3R1ZGlvIDEyLjYuICAqLwogICBMaXNwX09iamVjdCBpY29uX3RpdGxlX25hbWVf Zm9ybWF0Ci0gICAgPSBwdXJlX2xpc3QgKGVtcHR5X3VuaWJ5dGVfc3RyaW5nLAotCQkgaW50ZXJu X2Nfc3RyaW5nICgiaW52b2NhdGlvbi1uYW1lIiksCi0JCSBidWlsZF9wdXJlX2Nfc3RyaW5nICgi QCIpLAotCQkgaW50ZXJuX2Nfc3RyaW5nICgic3lzdGVtLW5hbWUiKSk7CisgICAgPSBsaXN0IChl bXB0eV91bmlieXRlX3N0cmluZywKKwkgICAgaW50ZXJuX2Nfc3RyaW5nICgiaW52b2NhdGlvbi1u YW1lIiksCisJICAgIGJ1aWxkX3N0cmluZyAoIkAiKSwKKwkgICAgaW50ZXJuX2Nfc3RyaW5nICgi c3lzdGVtLW5hbWUiKSk7CiAgIFZpY29uX3RpdGxlX2Zvcm1hdAogICAgID0gVmZyYW1lX3RpdGxl X2Zvcm1hdAotICAgID0gcHVyZV9saXN0IChpbnRlcm5fY19zdHJpbmcgKCJtdWx0aXBsZS1mcmFt ZXMiKSwKLQkJIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIlYiIpLAotCQkgaWNvbl90aXRsZV9uYW1l X2Zvcm1hdCk7CisgICAgPSBsaXN0IChpbnRlcm5fY19zdHJpbmcgKCJtdWx0aXBsZS1mcmFtZXMi KSwKKwkgICAgYnVpbGRfc3RyaW5nICgiJWIiKSwKKwkgICAgaWNvbl90aXRsZV9uYW1lX2Zvcm1h dCk7CiAKICAgREVGVkFSX0xJU1AgKCJtZXNzYWdlLWxvZy1tYXgiLCBWbWVzc2FnZV9sb2dfbWF4 LAogICAgIGRvYzogLyogTWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8ga2VlcCBpbiB0aGUgbWVz c2FnZSBsb2cgYnVmZmVyLgpkaWZmIC0tZ2l0IGEvc3JjL3hmYWNlcy5jIGIvc3JjL3hmYWNlcy5j CmluZGV4IDA2ZDJmOTk0ZGUuLmQyYzRhOTA0ZmEgMTAwNjQ0Ci0tLSBhL3NyYy94ZmFjZXMuYwor KysgYi9zcmMveGZhY2VzLmMKQEAgLTcwMjQsNyArNzAyNCw3IEBAIHN5bXNfb2ZfeGZhY2VzICh2 b2lkKQogVGhpcyBzdGlwcGxlIHBhdHRlcm4gaXMgdXNlZCBvbiBtb25vY2hyb21lIGRpc3BsYXlz CiBpbnN0ZWFkIG9mIHNoYWRlcyBvZiBncmF5IGZvciBhIGZhY2UgYmFja2dyb3VuZCBjb2xvci4K IFNlZSBgc2V0LWZhY2Utc3RpcHBsZScgZm9yIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhpcyB2YXJp YWJsZS4gICovKTsKLSAgVmZhY2VfZGVmYXVsdF9zdGlwcGxlID0gYnVpbGRfcHVyZV9jX3N0cmlu ZyAoImdyYXkzIik7CisgIFZmYWNlX2RlZmF1bHRfc3RpcHBsZSA9IGJ1aWxkX3N0cmluZyAoImdy YXkzIik7CiAKICAgREVGVkFSX0xJU1AgKCJ0dHktZGVmaW5lZC1jb2xvci1hbGlzdCIsIFZ0dHlf ZGVmaW5lZF9jb2xvcl9hbGlzdCwKICAgIGRvYzogLyogQW4gYWxpc3Qgb2YgZGVmaW5lZCB0ZXJt aW5hbCBjb2xvcnMgYW5kIHRoZWlyIFJHQiB2YWx1ZXMuCmRpZmYgLS1naXQgYS9zcmMveGZucy5j IGIvc3JjL3hmbnMuYwppbmRleCA3OGY5NzdiZjBhLi5jZGE5NmI0Zjk3IDEwMDY0NAotLS0gYS9z cmMveGZucy5jCisrKyBiL3NyYy94Zm5zLmMKQEAgLTc4NTAsOSArNzg1MCw5IEBAIHN5bXNfb2Zf eGZucyAodm9pZCkKICNlbmRpZgogCiAgIEZwdXQgKFF1bmRlZmluZWRfY29sb3IsIFFlcnJvcl9j b25kaXRpb25zLAotCXB1cmVfbGlzdCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yKSk7CisJbGlz dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yKSk7CiAgIEZwdXQgKFF1bmRlZmluZWRfY29sb3Is IFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJVbmRlZmluZWQgY29sb3Ii KSk7CisJYnVpbGRfc3RyaW5nICgiVW5kZWZpbmVkIGNvbG9yIikpOwogCiAgIERFRlZBUl9MSVNQ ICgieC1wb2ludGVyLXNoYXBlIiwgVnhfcG9pbnRlcl9zaGFwZSwKICAgICBkb2M6IC8qIFRoZSBz aGFwZSBvZiB0aGUgcG9pbnRlciB3aGVuIG92ZXIgdGV4dC4KQEAgLTgwNjMsNyArODA2Myw3IEBA IHN5bXNfb2ZfeGZucyAodm9pZCkKICAgICBjaGFyIGd0a192ZXJzaW9uW3NpemVvZiAiLi4iICsg MyAqIElOVF9TVFJMRU5fQk9VTkQgKGludCldOwogICAgIGludCBsZW4gPSBzcHJpbnRmIChndGtf dmVyc2lvbiwgIiVkLiVkLiVkIiwKIAkJICAgICAgIEdUS19NQUpPUl9WRVJTSU9OLCBHVEtfTUlO T1JfVkVSU0lPTiwgR1RLX01JQ1JPX1ZFUlNJT04pOwotICAgIFZndGtfdmVyc2lvbl9zdHJpbmcg PSBtYWtlX3B1cmVfc3RyaW5nIChndGtfdmVyc2lvbiwgbGVuLCBsZW4sIGZhbHNlKTsKKyAgICBW Z3RrX3ZlcnNpb25fc3RyaW5nID0gbWFrZV9zcGVjaWZpZWRfc3RyaW5nIChndGtfdmVyc2lvbiwg bGVuLCBsZW4sIGZhbHNlKTsKICAgfQogI2VuZGlmIC8qIFVTRV9HVEsgKi8KIApAQCAtODA3Nyw3 ICs4MDc3LDggQEAgc3ltc19vZl94Zm5zICh2b2lkKQogICAgIGludCBsZW4gPSBzcHJpbnRmIChj YWlyb192ZXJzaW9uLCAiJWQuJWQuJWQiLAogCQkgICAgICAgQ0FJUk9fVkVSU0lPTl9NQUpPUiwg Q0FJUk9fVkVSU0lPTl9NSU5PUiwKICAgICAgICAgICAgICAgICAgICAgICAgQ0FJUk9fVkVSU0lP Tl9NSUNSTyk7Ci0gICAgVmNhaXJvX3ZlcnNpb25fc3RyaW5nID0gbWFrZV9wdXJlX3N0cmluZyAo Y2Fpcm9fdmVyc2lvbiwgbGVuLCBsZW4sIGZhbHNlKTsKKyAgICBWY2Fpcm9fdmVyc2lvbl9zdHJp bmcgPSBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKGNhaXJvX3ZlcnNpb24sIGxlbiwgbGVuLAorCQkJ CQkJICAgZmFsc2UpOwogICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9z cmMveHRlcm0uYwppbmRleCAyZTA0MDdhZmY0Li44ZWFkZTdlOGM4IDEwMDY0NAotLS0gYS9zcmMv eHRlcm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAtMTM2MjMsNyArMTM2MjMsNyBAQCBzeW1zX29m X3h0ZXJtICh2b2lkKQogICBERUZTWU0gKFFsYXRpbl8xLCAibGF0aW4tMSIpOwogCiAjaWZkZWYg VVNFX0dUSwotICB4Z19kZWZhdWx0X2ljb25fZmlsZSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJp Y29ucy9oaWNvbG9yL3NjYWxhYmxlL2FwcHMvZW1hY3Muc3ZnIik7CisgIHhnX2RlZmF1bHRfaWNv bl9maWxlID0gYnVpbGRfc3RyaW5nICgiaWNvbnMvaGljb2xvci9zY2FsYWJsZS9hcHBzL2VtYWNz LnN2ZyIpOwogICBzdGF0aWNwcm8gKCZ4Z19kZWZhdWx0X2ljb25fZmlsZSk7CiAKICAgREVGU1lN IChReF9ndGtfbWFwX3N0b2NrLCAieC1ndGstbWFwLXN0b2NrIik7CkBAIC0xMzc0NCw3ICsxMzc0 NCw3IEBAIHN5bXNfb2ZfeHRlcm0gKHZvaWQpCiAgIFZ4X2tleXN5bV90YWJsZSA9IG1ha2VfaGFz aF90YWJsZSAoaGFzaHRlc3RfZXFsLCA5MDAsCiAJCQkJICAgICBERUZBVUxUX1JFSEFTSF9TSVpF LAogCQkJCSAgICAgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xELAotCQkJCSAgICAgUW5pbCwgZmFs c2UpOworCQkJCSAgICAgUW5pbCk7CiAKICAgREVGVkFSX0JPT0wgKCJ4LWZyYW1lLW5vcm1hbGl6 ZS1iZWZvcmUtbWF4aW1pemUiLAogCSAgICAgICB4X2ZyYW1lX25vcm1hbGl6ZV9iZWZvcmVfbWF4 aW1pemUsCi0tIAoyLjI4LjAKCg== --000000000000abbbb605ad73853c--