Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tXcbv-00Ats8-KA for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Jan 2025 08:49:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tXcbu-00GFPi-9j for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Jan 2025 08:49:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tXcbt-00GFPa-Qj for pgsql-hackers@lists.postgresql.org; Tue, 14 Jan 2025 08:49:18 +0000 Received: from mail-yb1-xb29.google.com ([2607:f8b0:4864:20::b29]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tXcbr-000KJd-17 for pgsql-hackers@postgresql.org; Tue, 14 Jan 2025 08:49:17 +0000 Received: by mail-yb1-xb29.google.com with SMTP id 3f1490d57ef6-e53a5ff2233so9814089276.3 for ; Tue, 14 Jan 2025 00:49:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1736844553; x=1737449353; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kVq5+0KpYn/Z3wCOeE7LJaR6NmMrKzVkhafQ0gYAnec=; b=Sbvu9yx/AXxbYGZsJzfp6UtrhIc6KtXZiYBcoWDmJSDXuXf8FJs++nkNVk0u0y0gKf gCIehVl09EvJSjmHh06RJp79oMyhAVXcfFgiAgJ30XgjwRHua+D8tJz6oBcIyLrHHmFq zfzK9Hcp4lC7gtERUoWz9Zqug8SN8Xv/aHSZg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736844553; x=1737449353; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kVq5+0KpYn/Z3wCOeE7LJaR6NmMrKzVkhafQ0gYAnec=; b=TaRzuN8LiJuAUPgbdmtJ9Pl4PeOOb7SFdYvC7UysjM6y8frcfxof4yk9ZpsMfnjZ/+ azM7rOpSJ6zV0e0DueLW3nPOZwjGxdvJkv6Z/4dU9oBc2ViEEjluz/wmCvgdvhjB0vQs 7zGq+e5MYIUcldngmnLd8GSQCpeZQa4zidtjoaaHcOSl4q71mWJE555BMdhQ3u12I3GP XXxYmqAC2qLqvvCIR0+HegIsp7QRul8zP3T26JoCrZAuteUUB74u4ZmECQrdaKYeZ2BC zfnW8v2pSQVtdpYtPEMKOOEvpyj8dplAb/vGG6HMbDsKdMnhpqx+2cUWgqcMUBkRUPTZ QYMQ== X-Forwarded-Encrypted: i=1; AJvYcCVjMRIcwcbfpUPWOx+rIY9toC9QZHvFVVtggk7gNR7Cax385Jr1vuvb3BsN9gwvh1JS+pH9lE4zEoRuqQxM@postgresql.org X-Gm-Message-State: AOJu0YyIOSjaFBM1g4Hh65x1QFrrLlFqS0y6pJs9/AmMCsz2pP7XxMHt 6dcYOl0pYrw5eifJaasmN9fE85Lj9IvwwEzGCuyFnMrAb3oOFfRBBS5anBv8v6dI6o76JB+l/As rYtUXQmiuxlHBbwm6zC6wTNexJlDQIIQ7fH6ynK2n5LV3ttZu X-Gm-Gg: ASbGncvep1L3Nz31jSeuzoWJtjWd0RtLih4Uf9+L3CwIrM0VGwdTR3/BHsXMjb8B9EU zcyTpGL1fw1IwcnVMwTEsdz3M31ejQv+t04GO X-Google-Smtp-Source: AGHT+IFdjZ6wW9ZtwNVqcGwxyqFS3VWluIUWQVya4RxWXStOsPT9EGtrDfaBjq3szTS+mHdYPtjnqZyJOJoIqWv+QME= X-Received: by 2002:a25:6ac4:0:b0:e46:e18:9e83 with SMTP id 3f1490d57ef6-e54ee1eaeecmr14410409276.39.1736844553381; Tue, 14 Jan 2025 00:49:13 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Anthonin Bonnefoy Date: Tue, 14 Jan 2025 09:49:02 +0100 X-Gm-Features: AbW1kvatQoqL9voiZhZ6J2Scpdgh_Hn_9FtAM4tTGLNYLsBKfxE6b_Ljfw24LrE Message-ID: Subject: Re: Add Pipelining support in psql To: Jelte Fennema-Nio Cc: Michael Paquier , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a360cf062ba6a24d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a360cf062ba6a24d Content-Type: text/plain; charset="UTF-8" During my tests, I've noticed I didn't handle query cancellation, this is now fixed. I've also added additional comments related to available_results to make it clearer that it depends on what the server has flushed to the client. --000000000000a360cf062ba6a24d Content-Type: application/octet-stream; name="v07-0001-Add-pipelining-support-in-psql.patch" Content-Disposition: attachment; filename="v07-0001-Add-pipelining-support-in-psql.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5w84wdn0 RnJvbSBlYzJkZmE2M2UzYmU0ODVkNjcwMGM1NmZmNGZlMGE2NGQ0NzE4MWVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogVHVlLCA1IE5vdiAyMDI0IDEwOjI2OjU0ICswMTAwClN1Ympl Y3Q6IEFkZCBwaXBlbGluaW5nIHN1cHBvcnQgaW4gcHNxbAoKV2l0aCBcYmluZCwgXHBhcnNlLCBc YmluZF9uYW1lZCBhbmQgXGNsb3NlLCBpdCBpcyBwb3NzaWJsZSB0byBpc3N1ZQpxdWVyaWVzIGZy b20gcHNxbCB1c2luZyB0aGUgZXh0ZW5kZWQgcHJvdG9jb2wuIEhvd2V2ZXIsIGl0IHdhc24ndApw b3NzaWJsZSB0byBzZW5kIHRob3NlIHF1ZXJpZXMgdXNpbmcgcGlwZWxpbmluZyBhbmQgdGhlIG9u bHkgd2F5IHRvIHRlc3QKcGlwZWxpbmVkIHF1ZXJpZXMgd2FzIHRocm91Z2ggcGdiZW5jaCdzIHRh cCB0ZXN0cy4KClRoaXMgcGF0Y2ggYWRkcyBhZGRpdGlvbmFsIHBzcWwgbWV0YS1jb21tYW5kcyB0 byBzdXBwb3J0IHBpcGVsaW5pbmc6ClxzdGFydHBpcGVsaW5lLCBcZW5kcGlwZWxpbmUgYW5kIFxz eW5jcGlwZWxpbmUsIG1pcnJvcmluZyB0aGUgZXhpc3RpbmcKbWV0YS1jb21tYW5kcyBpbiBwZ2Jl bmNoLiBBZGRpdGlvbmFsIG1ldGEtY29tbWFuZHMgYWxsb3cgdG8gZmx1c2ggYW5kCnJlYWQgcmVz dWx0cyBvZiBhbiBvbmdvaW5nIHBpcGVsaW5lOiBcZmx1c2hyZXF1ZXN0LCBcZmx1c2ggYW5kIFxn ZXRyZXN1bHRzCgpcc3RhcnRwaXBlbGluZSBzdGFydHMgYSBuZXcgcGlwZWxpbmUuIEFsbCBleHRl bmRlZCBxdWVyaWVzIHdpbGwgYmUKcXVldWVkIHVudGlsIHRoZSBlbmQgb2YgdGhlIHBpcGVsaW5l IGlzIHJlYWNoZWQuClxlbmRwaXBlbGluZSBlbmRzIGFuIG9uZ29pbmcgcGlwZWxpbmUuIEFsbCBx dWV1ZWQgY29tbWFuZHMgd2lsbCBiZSBzZW50CnRvIHRoZSBzZXJ2ZXIgYW5kIGFsbCByZXNwb25z ZXMgd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhlIHBzcWwuClxzeW5jcGlwZWxpbmUgcXVldWVzIGEg c3luY2hyb25pc2F0aW9uIHBvaW50IHdpdGhvdXQgZmx1c2hpbmcgdGhlCmNvbW1hbmRzIHRvIHRo ZSBzZXJ2ZXIKXGZsdXNoIENhbGwgUFFmbHVzaCBvbiBwc3FsJ3MgY29ubmVjdGlvbgpcZmx1c2hy ZXF1ZXN0IHF1ZXVlcyBhIGZsdXNocmVxdWVzdApcZ2V0cmVzdWx0cyByZWFkcyBzZXJ2ZXIncyBy ZXN1bHRzLiBVbnNlbnQgZGF0YSBhcmUgYXV0b21hdGljYWxseSBwdXNoZWQKd2hlbiBcZ2V0cmVz dWx0cyBpcyBjYWxsZWQKClRob3NlIG1ldGEtY29tbWFuZHMgd2lsbCBhbGxvdyB0byB0ZXN0IHBp cGVsaW5lIGJlaGF2aW91ciB1c2luZwpwc3FsIHJlZ3Jlc3Npb24gdGVzdHMuCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICB8ICA5NiArKysrKwogc3JjL2Jpbi9wc3FsL2Nv bW1hbmQuYyAgICAgICAgICAgICB8IDE1MSArKysrKysrCiBzcmMvYmluL3BzcWwvY29tbW9uLmMg ICAgICAgICAgICAgIHwgMjc0ICsrKysrKysrKysrLQogc3JjL2Jpbi9wc3FsL2hlbHAuYyAgICAg ICAgICAgICAgICB8ICAgNyArCiBzcmMvYmluL3BzcWwvcHJvbXB0LmMgICAgICAgICAgICAgIHwg IDEyICsKIHNyYy9iaW4vcHNxbC9zZXR0aW5ncy5oICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgfCAgIDggKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQgfCA2NjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsICAgICAgfCAzOTkgKysrKysrKysrKysrKysrKysK IDkgZmlsZXMgY2hhbmdlZCwgMTYxOSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL3BzcWwtcmVmLnNnbWwKaW5kZXggNzJmMzM0N2U1M2QuLjNiYzc3ZDJiYjBlIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sCkBAIC0zNTYyLDYgKzM1NjIsODIgQEAgdGVzdGRiPSZndDsgPHVzZXJp bnB1dD5cc2V0ZW52IExFU1MgLWlteDRGPC91c2VyaW5wdXQ+CiAgICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtcHNx bC1tZXRhLWNvbW1hbmQtcGlwZWxpbmUiPgorICAgICAgPHRlcm0+PGxpdGVyYWw+XHN0YXJ0cGlw ZWxpbmU8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPHRlcm0+PGxpdGVyYWw+XHN5bmNwaXBlbGlu ZTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8dGVybT48bGl0ZXJhbD5cZW5kcGlwZWxpbmU8L2xp dGVyYWw+PC90ZXJtPgorICAgICAgPHRlcm0+PGxpdGVyYWw+XGZsdXNocmVxdWVzdDwvbGl0ZXJh bD48L3Rlcm0+CisgICAgICA8dGVybT48bGl0ZXJhbD5cZmx1c2g8L2xpdGVyYWw+PC90ZXJtPgor ICAgICAgPHRlcm0+PGxpdGVyYWw+XGdldHJlc3VsdHMgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bnVtYmVyX3Jlc3VsdHM8L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPjwvdGVybT4K KworICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGdyb3Vw IG9mIGNvbW1hbmRzIGltcGxlbWVudHMgcGlwZWxpbmluZyBvZiBTUUwgc3RhdGVtZW50cy4KKyAg ICAgICAgICBBIHBpcGVsaW5lIG11c3QgYmVnaW4gd2l0aCBhIDxjb21tYW5kPlxzdGFydHBpcGVs aW5lPC9jb21tYW5kPgorICAgICAgICAgIGFuZCBlbmQgd2l0aCBhbiA8Y29tbWFuZD5cZW5kcGlw ZWxpbmU8L2NvbW1hbmQ+LiBJbiBiZXR3ZWVuIHRoZXJlCisgICAgICAgICAgbWF5IGJlIGFueSBu dW1iZXIgb2YgPGNvbW1hbmQ+XHN5bmNwaXBlbGluZTwvY29tbWFuZD4gY29tbWFuZHMsCisgICAg ICAgICAgd2hpY2ggc2VuZHMgYSA8bGluayBsaW5rZW5kPSJwcm90b2NvbC1mbG93LWV4dC1xdWVy eSI+c3luYyBtZXNzYWdlPC9saW5rPgorICAgICAgICAgIHdpdGhvdXQgZW5kaW5nIHRoZSBvbmdv aW5nIHBpcGVsaW5lIGFuZCBmbHVzaGluZyB0aGUgc2VuZCBidWZmZXIuCisgICAgICAgICAgSW4g cGlwZWxpbmUgbW9kZSwgc3RhdGVtZW50cyBhcmUgc2VudCB0byB0aGUgc2VydmVyIHdpdGhvdXQg d2FpdGluZworICAgICAgICAgIGZvciB0aGUgcmVzdWx0cyBvZiBwcmV2aW91cyBzdGF0ZW1lbnRz LiAgU2VlCisgICAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtcGlwZWxpbmUtbW9kZSIvPiBm b3IgbW9yZSBkZXRhaWxzLgorICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAg ICAgICBQaXBlbGluZSBtb2RlIHJlcXVpcmVzIHRoZSB1c2Ugb2YgZXh0ZW5kZWQgcXVlcnkgcHJv dG9jb2wuIEFsbCBxdWVyaWVzIG5lZWQKKyAgICAgICAgICB0byBiZSBzZW50IHVzaW5nIHRoZSBt ZXRhLWNvbW1hbmRzIDxsaXRlcmFsPlxiaW5kPC9saXRlcmFsPiwKKyAgICAgICAgICA8bGl0ZXJh bD5cYmluZF9uYW1lZDwvbGl0ZXJhbD4sIDxsaXRlcmFsPlxjbG9zZTwvbGl0ZXJhbD4gb3IKKyAg ICAgICAgICA8bGl0ZXJhbD5ccGFyc2U8L2xpdGVyYWw+LiBXaGlsZSBhIHBpcGVsaW5lIGlzIG9u Z29pbmcsCisgICAgICAgICAgPGxpdGVyYWw+XGc8L2xpdGVyYWw+IHdpbGwgYXBwZW5kIHRoZSBj dXJyZW50IHF1ZXJ5IGJ1ZmZlciB0byB0aGUgcGlwZWxpbmUgYW5kCisgICAgICAgICAgb3RoZXIg bWV0YS1jb21tYW5kcyBsaWtlIDxsaXRlcmFsPlxneDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+XGdk ZXNjPC9saXRlcmFsPgorICAgICAgICAgIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2Rl LgorICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8Y29tbWFuZD5c Zmx1c2hyZXF1ZXN0PC9jb21tYW5kPiBhcHBlbmRzIGEgZmx1c2ggY29tbWFuZCB0byB0aGUgcGlw ZWxpbmUsCisgICAgICAgICAgYWxsb3dpbmcgdG8gcmVhZCByZXN1bHRzIHdpdGggPGNvbW1hbmQ+ XGdldHJlc3VsdHM8L2NvbW1hbmQ+IHdpdGhvdXQgaXNzdWluZworICAgICAgICAgIGEgc3luYyBv ciBlbmRpbmcgdGhlIHBpcGVsaW5lLiA8Y29tbWFuZD5cZ2V0cmVzdWx0czwvY29tbWFuZD4gd2ls bCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgcHVzaCB1bnNlbnQgZGF0YSB0byB0aGUgc2VydmVy LiA8Y29tbWFuZD5cZmx1c2g8L2NvbW1hbmQ+IGNhbiBiZSB1c2VkIHRvIG1hbnVhbGx5CisgICAg ICAgICAgcHVzaCB1bnNlbnQgZGF0YS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+ CisgICAgICAgICAgPGNvbW1hbmQ+XGdldHJlc3VsdHM8L2NvbW1hbmQ+IGFjY2VwdHMgYW4gb3B0 aW9uYWwKKyAgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtYmVyX3Jl c3VsdHM8L3JlcGxhY2VhYmxlPiBwYXJhbWV0ZXIuIElmIHByb3ZpZGVkLAorICAgICAgICAgIG9u bHkgdGhlIGZpcnN0IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1iZXJfcmVzdWx0 czwvcmVwbGFjZWFibGU+IHBlbmRpbmcKKyAgICAgICAgICByZXN1bHRzIHdpbGwgYmUgcmVhZC4g SWYgbm90IHByb3ZpZGVkIG9yIDAsIGFsbCBwZW5kaW5nIHJlc3VsdHMgYXJlIHJlYWQuIFRoZQor ICAgICAgICAgIGNvbW1hbmRzIDxsaXRlcmFsPlxiaW5kPC9saXRlcmFsPiwgPGxpdGVyYWw+XGJp bmRfbmFtZWQ8L2xpdGVyYWw+LAorICAgICAgICAgIDxsaXRlcmFsPlxjbG9zZTwvbGl0ZXJhbD4s IDxsaXRlcmFsPlxwYXJzZTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPlxzeW5jcGlwZWxpbmU8L2xp dGVyYWw+CisgICAgICAgICAgZ2VuZXJhdGUgb25lIHJlc3VsdCB0byBnZXQuCisgICAgICAgPC9w YXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFdoZW4gcGlwZWxpbmUgbW9kZSBpcyBh Y3RpdmUsIGEgZGVkaWNhdGVkIHByb21wdCB2YXJpYWJsZSBpcworICAgICAgICAgIGF2YWlsYWJs ZSB0byByZXBvcnQgdGhlIHBpcGVsaW5lIHN0YXR1cy4gU2VlCisgICAgICAgICAgPHhyZWYgbGlu a2VuZD0iYXBwLXBzcWwtcHJvbXB0aW5nLXAtdWMiLz4gZm9yIG1vcmUgZGV0YWlscworICAgICAg IDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBFeGFtcGxlOgorPHByb2dyYW1saXN0 aW5nPgorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAxIFxiaW5kIFxnCitTRUxFQ1QgJDEgXHBhcnNl IHN0bXQxCitcYmluZF9uYW1lZCBzdG10MSAxIFxnCitTRUxFQ1QgcGdfY3VycmVudF94YWN0X2lk KCkgXGJpbmQgXGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCitcc3luY3BpcGVsaW5lCitT RUxFQ1QgcGdfY3VycmVudF94YWN0X2lkKCkgXGJpbmQgXGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRy ZXN1bHRzIDIKK1xjbG9zZSBzdG10MQorXGVuZHBpcGVsaW5lCis8L3Byb2dyYW1saXN0aW5nPjwv cGFyYT4KKworICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKIAogICAg ICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBwLXBzcWwtbWV0YS1jb21tYW5kLXQtbGMiPgogICAgICAg ICA8dGVybT48bGl0ZXJhbD5cdDwvbGl0ZXJhbD48L3Rlcm0+CkBAIC00NzE5LDYgKzQ3OTUsMjYg QEAgdGVzdGRiPSZndDsgPHVzZXJpbnB1dD5JTlNFUlQgSU5UTyBteV90YWJsZSBWQUxVRVMgKDon Y29udGVudCcpOzwvdXNlcmlucHV0PgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImFwcC1wc3FsLXByb21wdGluZy1w LXVjIj4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+JVA8L2xpdGVyYWw+PC90ZXJtPgorICAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICBQaXBlbGluZSBzdGF0dXM6IGFu IGVtcHR5IHN0cmluZyB3aGVuIG5vdCBpbiBhIHBpcGVsaW5lLAorICAgICAgICBvciA8bGl0ZXJh bD58cGlwZWRfc3luY3MscGlwZWRfY29tbWFuZHMscGVuZGluZ19yZXN1bHRzfDwvbGl0ZXJhbD4K KyAgICAgICAgd2hlbiBpbiBhbiBvbmdvaW5nIHBpcGVsaW5lLCBvciA8bGl0ZXJhbD4rcGlwZWRf c3luY3MscGlwZWRfY29tbWFuZHMscGVuZGluZ19yZXN1bHRzKzwvbGl0ZXJhbD4KKyAgICAgICAg d2hlbiBpbiBhbiBhYm9ydGVkIHBpcGVsaW5lLiA8bGl0ZXJhbD5waXBlZF9zeW5jczwvbGl0ZXJh bD4gaXMgdGhlCisgICAgICAgIG51bWJlciBvZiBzeW5jcyBxdWV1ZWQgaW4gdGhlIHBpcGVsaW5l LiA8bGl0ZXJhbD5waXBlZF9jb21tYW5kczwvbGl0ZXJhbD4KKyAgICAgICAgaXMgdGhlIG51bWJl ciBvZiBjb21tYW5kcyBnZW5lcmF0ZWQgYnkgPGxpdGVyYWw+XGJpbmQ8L2xpdGVyYWw+LAorICAg ICAgICA8bGl0ZXJhbD5cYmluZF9uYW1lZDwvbGl0ZXJhbD4sIDxsaXRlcmFsPlxjbG9zZTwvbGl0 ZXJhbD4gb3IKKyAgICAgICAgPGxpdGVyYWw+XHBhcnNlPC9saXRlcmFsPiBxdWV1ZWQgaW4gdGhl IHBpcGVsaW5lLiA8bGl0ZXJhbD5wZW5kaW5nX3Jlc3VsdHM8L2xpdGVyYWw+CisgICAgICAgIGlz IHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhhdCB3ZXJlIGZvbGxvd2VkIGJ5IGVpdGhlciBhCisg ICAgICAgIDxjb21tYW5kPlxmbHVzaHJlcXVlc3Q8L2NvbW1hbmQ+IG9yIGEgPGNvbW1hbmQ+XHN5 bmNwaXBlbGluZTwvY29tbWFuZD4sCisgICAgICAgIGZvcmNpbmcgdGhlIHNlcnZlciB0byBzZW5k IHRoZSByZXN1bHRzIHRoYXQgY2FuIGJlIHJldHJpZXZlZCB3aXRoCisgICAgICAgIDxjb21tYW5k PlxnZXRyZXN1bHRzPC9jb21tYW5kPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3Rp dGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImFw cC1wc3FsLXByb21wdGluZy1yIj4KICAgICAgICAgPHRlcm0+PGxpdGVyYWw+JVI8L2xpdGVyYWw+ PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29t bWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwppbmRleCA1ZGQ0YzJkMjY4Ny4uNDc2ODIz NTNmYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2NvbW1hbmQuYwpAQCAtOTAsOSArOTAsMTIgQEAgc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBl eGVjX2NvbW1hbmRfZWxzZShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIENvbmRpdGlvbmFsU3QK IAkJCQkJCQkJCQkgUFFFeHBCdWZmZXIgcXVlcnlfYnVmKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1 bHQgZXhlY19jb21tYW5kX2VuZGlmKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgQ29uZGl0aW9u YWxTdGFjayBjc3RhY2ssCiAJCQkJCQkJCQkJICBQUUV4cEJ1ZmZlciBxdWVyeV9idWYpOworc3Rh dGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZW5kcGlwZWxpbmUoUHNxbFNjYW5TdGF0 ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3Vs dCBleGVjX2NvbW1hbmRfZW5jb2RpbmcoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFj dGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZXJydmVy Ym9zZShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0 aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9mKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21t YW5kX2ZsdXNoKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsK K3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2ZsdXNocmVxdWVzdChQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNo UmVzdWx0IGV4ZWNfY29tbWFuZF9nKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3Rp dmVfYnJhbmNoLAogCQkJCQkJCQkJICBjb25zdCBjaGFyICpjbWQpOwogc3RhdGljIGJhY2tzbGFz aFJlc3VsdCBwcm9jZXNzX2NvbW1hbmRfZ19vcHRpb25zKGNoYXIgKmZpcnN0X29wdGlvbiwKQEAg LTEwMyw2ICsxMDYsNyBAQCBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9nZGVz YyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlXwogc3RhdGljIGJhY2tzbGFz aFJlc3VsdCBleGVjX2NvbW1hbmRfZ2V0ZW52KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9v bCBhY3RpdmVfYnJhbmNoLAogCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmNtZCk7CiBzdGF0aWMg YmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9nZXhlYyhQc3FsU2NhblN0YXRlIHNjYW5fc3Rh dGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CitzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29t bWFuZF9nZXRyZXN1bHRzKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJh bmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2dzZXQoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJl c3VsdCBleGVjX2NvbW1hbmRfaGVscChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0 aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9odG1sKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKQEAgLTEzMiw2ICsx MzYsOCBAQCBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9zZXRlbnYoUHNxbFNj YW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZQogCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIg KmNtZCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9zZl9zdihQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAkJCQkJCQkJCQkgIGNvbnN0 IGNoYXIgKmNtZCwgYm9vbCBpc19mdW5jKTsKK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19j b21tYW5kX3N0YXJ0cGlwZWxpbmUoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2 ZV9icmFuY2gpOworc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfc3luY3BpcGVs aW5lKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRp YyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX3QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRl LCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1h bmRfVChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0 aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF90aW1pbmcoUHNxbFNjYW5TdGF0ZSBzY2Fu X3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwpAQCAtMzUxLDE4ICszNTcsMjYgQEAgZXhlY19j b21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2Vsc2Uoc2Nh bl9zdGF0ZSwgY3N0YWNrLCBxdWVyeV9idWYpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJlbmRp ZiIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9lbmRpZihzY2FuX3N0YXRlLCBjc3Rh Y2ssIHF1ZXJ5X2J1Zik7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgImVuZHBpcGVsaW5lIikgPT0g MCkKKwkJc3RhdHVzID0gZXhlY19jb21tYW5kX2VuZHBpcGVsaW5lKHNjYW5fc3RhdGUsIGFjdGl2 ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJlbmNvZGluZyIpID09IDApCiAJCXN0 YXR1cyA9IGV4ZWNfY29tbWFuZF9lbmNvZGluZyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsK IAllbHNlIGlmIChzdHJjbXAoY21kLCAiZXJydmVyYm9zZSIpID09IDApCiAJCXN0YXR1cyA9IGV4 ZWNfY29tbWFuZF9lcnJ2ZXJib3NlKHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2Ug aWYgKHN0cmNtcChjbWQsICJmIikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2Yoc2Nh bl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgImZsdXNoIikg PT0gMCkKKwkJc3RhdHVzID0gZXhlY19jb21tYW5kX2ZsdXNoKHNjYW5fc3RhdGUsIGFjdGl2ZV9i cmFuY2gpOworCWVsc2UgaWYgKHN0cmNtcChjbWQsICJmbHVzaHJlcXVlc3QiKSA9PSAwKQorCQlz dGF0dXMgPSBleGVjX2NvbW1hbmRfZmx1c2hyZXF1ZXN0KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFu Y2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJnIikgPT0gMCB8fCBzdHJjbXAoY21kLCAiZ3gi KSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJh bmNoLCBjbWQpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJnZGVzYyIpID09IDApCiAJCXN0YXR1 cyA9IGV4ZWNfY29tbWFuZF9nZGVzYyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNl IGlmIChzdHJjbXAoY21kLCAiZ2V0ZW52IikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5k X2dldGVudihzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoLCBjbWQpOworCWVsc2UgaWYgKHN0cmNt cChjbWQsICJnZXRyZXN1bHRzIikgPT0gMCkKKwkJc3RhdHVzID0gZXhlY19jb21tYW5kX2dldHJl c3VsdHMoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwg ImdleGVjIikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2dleGVjKHNjYW5fc3RhdGUs IGFjdGl2ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJnc2V0IikgPT0gMCkKQEAg LTQwOCw2ICs0MjIsMTAgQEAgZXhlY19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJc3RhdHVz ID0gZXhlY19jb21tYW5kX3NmX3N2KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gsIGNtZCwgdHJ1 ZSk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgInN2IikgPT0gMCB8fCBzdHJjbXAoY21kLCAic3Yr IikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX3NmX3N2KHNjYW5fc3RhdGUsIGFjdGl2 ZV9icmFuY2gsIGNtZCwgZmFsc2UpOworCWVsc2UgaWYgKHN0cmNtcChjbWQsICJzdGFydHBpcGVs aW5lIikgPT0gMCkKKwkJc3RhdHVzID0gZXhlY19jb21tYW5kX3N0YXJ0cGlwZWxpbmUoc2Nhbl9z dGF0ZSwgYWN0aXZlX2JyYW5jaCk7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgInN5bmNwaXBlbGlu ZSIpID09IDApCisJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9zeW5jcGlwZWxpbmUoc2Nhbl9zdGF0 ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgInQiKSA9PSAwKQogCQlz dGF0dXMgPSBleGVjX2NvbW1hbmRfdChzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNl IGlmIChzdHJjbXAoY21kLCAiVCIpID09IDApCkBAIC0xNDkxLDYgKzE1MDksMzggQEAgZXhlY19j b21tYW5kX2YoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpCiAJ cmV0dXJuIHN1Y2Nlc3MgPyBQU1FMX0NNRF9TS0lQX0xJTkUgOiBQU1FMX0NNRF9FUlJPUjsKIH0K IAorLyoKKyAqIFxmbHVzaCAtLSBjYWxsIFBRZmx1c2ggb24gdGhlIGNvbm5lY3Rpb24KKyAqLwor c3RhdGljIGJhY2tzbGFzaFJlc3VsdAorZXhlY19jb21tYW5kX2ZsdXNoKFBzcWxTY2FuU3RhdGUg c2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKQoreworCWlmIChhY3RpdmVfYnJhbmNoKQor CXsKKwkJcHNldC5zZW5kX21vZGUgPSBQU1FMX0ZMVVNIOworCX0KKwllbHNlCisJCWlnbm9yZV9z bGFzaF9vcHRpb25zKHNjYW5fc3RhdGUpOworCisJcmV0dXJuIFBTUUxfQ01EX1NFTkQ7Cit9CisK Ky8qCisgKiBcZmx1c2hyZXF1ZXN0IC0tIHNlbmQgYSBmbHVzaCByZXF1ZXN0IHRvIHRoZSBzZXJ2 ZXIKKyAqLworc3RhdGljIGJhY2tzbGFzaFJlc3VsdAorZXhlY19jb21tYW5kX2ZsdXNocmVxdWVz dChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK3sKKwlpZiAo YWN0aXZlX2JyYW5jaCkKKwl7CisJCXBzZXQuc2VuZF9tb2RlID0gUFNRTF9TRU5EX0ZMVVNIX1JF UVVFU1Q7CisJfQorCWVsc2UKKwkJaWdub3JlX3NsYXNoX29wdGlvbnMoc2Nhbl9zdGF0ZSk7CisK KwlyZXR1cm4gUFNRTF9DTURfU0VORDsKK30KKwogLyoKICAqIFxnICBbKHBzZXQtb3B0aW9uWz1w c2V0LXZhbHVlXSAuLi4pXSBbZmlsZW5hbWUvc2hlbGwtY29tbWFuZF0KICAqIFxneCBbKHBzZXQt b3B0aW9uWz1wc2V0LXZhbHVlXSAuLi4pXSBbZmlsZW5hbWUvc2hlbGwtY29tbWFuZF0KQEAgLTE1 MjYsNiArMTU3NiwxMyBAQCBleGVjX2NvbW1hbmRfZyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogCiAJaWYgKHN0YXR1cyA9PSBQ U1FMX0NNRF9TS0lQX0xJTkUgJiYgYWN0aXZlX2JyYW5jaCkKIAl7CisJCWlmIChzdHJjbXAoY21k LCAiZ3giKSA9PSAwICYmIFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQRUxJTkVf T0ZGKQorCQl7CisJCQlwZ19sb2dfZXJyb3IoIlxcZ3ggbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUg bW9kZSIpOworCQkJY2xlYW5fZXh0ZW5kZWRfc3RhdGUoKTsKKwkJCXJldHVybiBQU1FMX0NNRF9F UlJPUjsKKwkJfQorCiAJCWlmICghZm5hbWUpCiAJCQlwc2V0LmdmbmFtZSA9IE5VTEw7CiAJCWVs c2UKQEAgLTE2NzksNiArMTczNiwzOSBAQCBleGVjX2NvbW1hbmRfZ2V0ZW52KFBzcWxTY2FuU3Rh dGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCXJldHVybiBzdWNjZXNzID8gUFNR TF9DTURfU0tJUF9MSU5FIDogUFNRTF9DTURfRVJST1I7CiB9CiAKKy8qCisgKiBcZ2V0cmVzdWx0 cyAtLSByZWFkIHJlc3VsdHMKKyAqLworc3RhdGljIGJhY2tzbGFzaFJlc3VsdAorZXhlY19jb21t YW5kX2dldHJlc3VsdHMoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFu Y2gpCit7CisJaWYgKGFjdGl2ZV9icmFuY2gpCisJeworCQljaGFyCSAgICpvcHQ7CisJCWludAkJ CW51bV9yZXN1bHRzOworCisJCXBzZXQuc2VuZF9tb2RlID0gUFNRTF9HRVRfUkVTVUxUUzsKKwkJ b3B0ID0gcHNxbF9zY2FuX3NsYXNoX29wdGlvbihzY2FuX3N0YXRlLCBPVF9OT1JNQUwsIE5VTEws IGZhbHNlKTsKKworCQlwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID0gMDsKKwkJaWYgKG9wdCAhPSBO VUxMKQorCQl7CisJCQludW1fcmVzdWx0cyA9IGF0b2kob3B0KTsKKwkJCWlmIChudW1fcmVzdWx0 cyA8IDApCisJCQl7CisJCQkJcGdfbG9nX2Vycm9yKCJcXGdldHJlc3VsdHM6IGludmFsaWQgbnVt YmVyIG9mIHJlcXVlc3RlZCByZXN1bHRzIik7CisJCQkJcmV0dXJuIFBTUUxfQ01EX1NLSVBfTElO RTsKKwkJCX0KKwkJCXBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPSBudW1fcmVzdWx0czsKKwkJfQor CX0KKwllbHNlCisJCWlnbm9yZV9zbGFzaF9vcHRpb25zKHNjYW5fc3RhdGUpOworCisJcmV0dXJu IFBTUUxfQ01EX1NFTkQ7Cit9CisKKwogLyoKICAqIFxnZXhlYyAtLSBzZW5kIHF1ZXJ5IGFuZCBl eGVjdXRlIGVhY2ggZmllbGQgb2YgcmVzdWx0CiAgKi8KQEAgLTE2ODksNiArMTc3OSwxMiBAQCBl eGVjX2NvbW1hbmRfZ2V4ZWMoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9i cmFuY2gpCiAKIAlpZiAoYWN0aXZlX2JyYW5jaCkKIAl7CisJCWlmIChQUXBpcGVsaW5lU3RhdHVz KHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJcXGdl eGVjIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUiKTsKKwkJCWNsZWFuX2V4dGVuZGVkX3N0 YXRlKCk7CisJCQlyZXR1cm4gUFNRTF9DTURfRVJST1I7CisJCX0KIAkJcHNldC5nZXhlY19mbGFn ID0gdHJ1ZTsKIAkJc3RhdHVzID0gUFNRTF9DTURfU0VORDsKIAl9CkBAIC0xNzA5LDYgKzE4MDUs MTMgQEAgZXhlY19jb21tYW5kX2dzZXQoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFj dGl2ZV9icmFuY2gpCiAJCWNoYXIJICAgKnByZWZpeCA9IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24o c2Nhbl9zdGF0ZSwKIAkJCQkJCQkJCQkJCQlPVF9OT1JNQUwsIE5VTEwsIGZhbHNlKTsKIAorCQlp ZiAoUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCXsKKwkJ CXBnX2xvZ19lcnJvcigiXFxnc2V0IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUiKTsKKwkJ CWNsZWFuX2V4dGVuZGVkX3N0YXRlKCk7CisJCQlyZXR1cm4gUFNRTF9DTURfRVJST1I7CisJCX0K KwogCQlpZiAocHJlZml4KQogCQkJcHNldC5nc2V0X3ByZWZpeCA9IHByZWZpeDsKIAkJZWxzZQpA QCAtMjY3Miw2ICsyNzc1LDU0IEBAIGV4ZWNfY29tbWFuZF9zZl9zdihQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAlyZXR1cm4gc3RhdHVzOwogfQogCisvKgor ICogXHN0YXJ0cGlwZWxpbmUgLS0gZW50ZXIgcGlwZWxpbmUgbW9kZQorICovCitzdGF0aWMgYmFj a3NsYXNoUmVzdWx0CitleGVjX2NvbW1hbmRfc3RhcnRwaXBlbGluZShQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK3sKKwlpZiAoYWN0aXZlX2JyYW5jaCkKKwl7 CisJCXBzZXQuc2VuZF9tb2RlID0gUFNRTF9TVEFSVF9QSVBFTElORV9NT0RFOworCX0KKwllbHNl CisJCWlnbm9yZV9zbGFzaF9vcHRpb25zKHNjYW5fc3RhdGUpOworCisJcmV0dXJuIFBTUUxfQ01E X1NFTkQ7Cit9CisKKy8qCisgKiBcc3luY3BpcGVsaW5lIC0tIHNlbmQgYSBzeW5jIG1lc3NhZ2Ug dG8gYW4gYWN0aXZlIHBpcGVsaW5lCisgKi8KK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQKK2V4ZWNf Y29tbWFuZF9zeW5jcGlwZWxpbmUoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2 ZV9icmFuY2gpCit7CisJaWYgKGFjdGl2ZV9icmFuY2gpCisJeworCQlwc2V0LnNlbmRfbW9kZSA9 IFBTUUxfU0VORF9QSVBFTElORV9TWU5DOworCX0KKwllbHNlCisJCWlnbm9yZV9zbGFzaF9vcHRp b25zKHNjYW5fc3RhdGUpOworCisJcmV0dXJuIFBTUUxfQ01EX1NFTkQ7Cit9CisKKy8qCisgKiBc ZW5kcGlwZWxpbmUgLS0gZW5kIHBpcGVsaW5lIG1vZGUKKyAqLworc3RhdGljIGJhY2tzbGFzaFJl c3VsdAorZXhlY19jb21tYW5kX2VuZHBpcGVsaW5lKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwg Ym9vbCBhY3RpdmVfYnJhbmNoKQoreworCWlmIChhY3RpdmVfYnJhbmNoKQorCXsKKwkJcHNldC5z ZW5kX21vZGUgPSBQU1FMX0VORF9QSVBFTElORV9NT0RFOworCX0KKwllbHNlCisJCWlnbm9yZV9z bGFzaF9vcHRpb25zKHNjYW5fc3RhdGUpOworCisJcmV0dXJuIFBTUUxfQ01EX1NFTkQ7Cit9CisK IC8qCiAgKiBcdCAtLSB0dXJuIG9mZiB0YWJsZSBoZWFkZXJzIGFuZCByb3cgY291bnQKICAqLwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5j CmluZGV4IGYxYTUyOTFjMTNiLi5lMWI1OGYwOGM1OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwpAQCAtMTIxLDYgKzEyMSwxOCBA QCBDbG9zZUdPdXRwdXQoRklMRSAqZ2ZpbGVfZm91dCwgYm9vbCBpc19waXBlKQogCX0KIH0KIAor LyoKKyAqIFJlc2V0IHBzZXQgcGlwZWxpbmUgc3RhdGUKKyAqLworc3RhdGljIHZvaWQKK3BpcGVs aW5lUmVzZXQodm9pZCkKK3sKKwlwc2V0LnBpcGVkX3N5bmNzID0gMDsKKwlwc2V0LnBpcGVkX2Nv bW1hbmRzID0gMDsKKwlwc2V0LmF2YWlsYWJsZV9yZXN1bHRzID0gMDsKKwlwc2V0LnJlcXVlc3Rl ZF9yZXN1bHRzID0gMDsKK30KKwogLyoKICAqIHNldFFGb3V0CiAgKiAtLSBoYW5kbGVyIGZvciAt byBjb21tYW5kIGxpbmUgb3B0aW9uIGFuZCBcbyBjb21tYW5kCkBAIC0zNTQsNiArMzY2LDcgQEAg Q2hlY2tDb25uZWN0aW9uKHZvaWQpCiAKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRoZSBjb25uZWN0 aW9uIHRvIHRoZSBzZXJ2ZXIgd2FzIGxvc3QuIEF0dGVtcHRpbmcgcmVzZXQ6ICIpKTsKIAkJUFFy ZXNldChwc2V0LmRiKTsKKwkJcGlwZWxpbmVSZXNldCgpOwogCQlPSyA9IENvbm5lY3Rpb25VcCgp OwogCQlpZiAoIU9LKQogCQl7CkBAIC00MTUsMTAgKzQyOCwxMiBAQCBBY2NlcHRSZXN1bHQoY29u c3QgUEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBzaG93X2Vycm9yKQogCQkJY2FzZSBQR1JFU19FTVBU WV9RVUVSWToKIAkJCWNhc2UgUEdSRVNfQ09QWV9JTjoKIAkJCWNhc2UgUEdSRVNfQ09QWV9PVVQ6 CisJCQljYXNlIFBHUkVTX1BJUEVMSU5FX1NZTkM6CiAJCQkJLyogRmluZSwgZG8gbm90aGluZyAq LwogCQkJCU9LID0gdHJ1ZTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBQR1JFU19QSVBFTElORV9B Qk9SVEVEOgogCQkJY2FzZSBQR1JFU19CQURfUkVTUE9OU0U6CiAJCQljYXNlIFBHUkVTX05PTkZB VEFMX0VSUk9SOgogCQkJY2FzZSBQR1JFU19GQVRBTF9FUlJPUjoKQEAgLTEwNTAsNiArMTA2NSw3 IEBAIFByaW50UXVlcnlSZXN1bHQoUEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBsYXN0LAogCQkJc3Vj Y2VzcyA9IHRydWU7CiAJCQlicmVhazsKIAorCQljYXNlIFBHUkVTX1BJUEVMSU5FX0FCT1JURUQ6 CiAJCWNhc2UgUEdSRVNfQkFEX1JFU1BPTlNFOgogCQljYXNlIFBHUkVTX05PTkZBVEFMX0VSUk9S OgogCQljYXNlIFBHUkVTX0ZBVEFMX0VSUk9SOgpAQCAtMTQxOCw2ICsxNDM0LDYwIEBAIERlc2Ny aWJlUXVlcnkoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQogCXJldHVy biBPSzsKIH0KIAorLyoKKyAqIFJlYWQgYW5kIGRpc2NhcmQgYWxsIHJlc3VsdHMgaW4gYW4gYWJv cnRlZCBwaXBlbGluZS4KKyAqCisgKiBJZiBhIHN5bmNocm9uaXNhdGlvbiBwb2ludCBpcyBmb3Vu ZCwgd2UgY2FuIHN0b3AgZGlzY2FyZGluZyByZXN1bHRzIGFzCisgKiBwaXBlbGluZSB3aWxsIHN3 aXRjaCBiYWNrIHRvIGFuIE9LIHN0YXRlLiBJZiBubyBzeW5jaHJvbmlzYXRpb24gcG9pbnQKKyAq IGlzIGF2YWlsYWJsZSwgd2UgbmVlZCB0byBzdG9wIHdoZW4gdGhlcmUncyBubyBtb3JlIHBlbmRp bmcgcmVzdWx0cywKKyAqIG90aGVyd2lzZSwgY2FsbGluZyBQUWdldFJlc3VsdHMgd2lsbCBibG9j ay4KKyAqLworc3RhdGljIFBHcmVzdWx0ICoKK2Rpc2NhcmRBYm9ydGVkUGlwZWxpbmVSZXN1bHRz KHZvaWQpCit7CisJZm9yICg7OykKKwl7CisJCVBHcmVzdWx0ICAgKnJlcyA9IFBRZ2V0UmVzdWx0 KHBzZXQuZGIpOworCQlFeGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0 dXMocmVzKTsKKworCQlpZiAocmVzdWx0X3N0YXR1cyA9PSBQR1JFU19QSVBFTElORV9TWU5DKQor CQl7CisJCQkvKgorCQkJICogRm91bmQgYSBzeW5jaHJvbmlzYXRpb24gcG9pbnQuIERlY3JlbWVu dGluZyB0aGUgc3luYyBjb3VudGVyCisJCQkgKiB3aWxsIGJlIGRvbmUgYnkgdGhlIGNhbGxlcgor CQkJICovCisJCQlyZXR1cm4gcmVzOworCQl9CisJCWVsc2UgaWYgKHJlcyA9PSBOVUxMKQorCQl7 CisJCQkvKiBBIHF1ZXJ5IHdhcyBwcm9jZXNzZWQsIGRlY3JlbWVudCB0aGUgY291bnRlcnMgKi8K KwkJCUFzc2VydChwc2V0LmF2YWlsYWJsZV9yZXN1bHRzID4gMCk7CisJCQlBc3NlcnQocHNldC5y ZXF1ZXN0ZWRfcmVzdWx0cyA+IDApOworCQkJcHNldC5hdmFpbGFibGVfcmVzdWx0cy0tOworCQkJ cHNldC5yZXF1ZXN0ZWRfcmVzdWx0cy0tOworCQl9CisKKwkJaWYgKHBzZXQucmVxdWVzdGVkX3Jl c3VsdHMgPT0gMCkKKwkJCS8qIFdlJ3ZlIHJlYWQgYWxsIHJlcXVlc3RlZCByZXN1bHRzLCBleGl0 ICovCisJCQlyZXR1cm4gcmVzOworCisJCWlmIChwc2V0LmF2YWlsYWJsZV9yZXN1bHRzID09IDAg JiYgcHNldC5waXBlZF9zeW5jcyA9PSAwKQorCisJCQkvKgorCQkJICogVGhlcmUncyBubyBtb3Jl IHJlc3VsdHMgdG8gZ2V0IGFuZCB0aGVyZSdzIG5vIHN5bmNocm9uaXNhdGlvbgorCQkJICogcG9p bnQgdG8gc3RvcCBhdC4gVGhpcyB3aWxsIGxlYXZlIHRoZSBwaXBlbGluZSBpbiBhbiBhYm9ydGVk CisJCQkgKiBzdGF0ZS4KKwkJCSAqLworCQkJcmV0dXJuIHJlczsKKworCQkvKgorCQkgKiBBbiBh Ym9ydGVkIHBpcGVsaW5lIHdpbGwgaGF2ZSBlaXRoZXIgTlVMTCByZXN1bHRzIG9yIHJlc3VsdHMg aW4gYW4KKwkJICogUEdSRVNfUElQRUxJTkVfQUJPUlRFRCBzdGF0dXMKKwkJICovCisJCUFzc2Vy dChyZXMgPT0gTlVMTCB8fCByZXN1bHRfc3RhdHVzID09IFBHUkVTX1BJUEVMSU5FX0FCT1JURUQp OworCQlQUWNsZWFyKHJlcyk7CisJfQorfQogCiAvKgogICogRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jl c3VsdHM6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBTZW5kUXVlcnkoKQpAQCAtMTQ1MSw2 ICsxNTIxLDcgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnks CiAJYm9vbAkJdGltaW5nID0gcHNldC50aW1pbmc7CiAJYm9vbAkJc3VjY2VzcyA9IGZhbHNlOwog CWJvb2wJCXJldHVybl9lYXJseSA9IGZhbHNlOworCWJvb2wJCWVuZF9waXBlbGluZSA9IGZhbHNl OwogCWluc3RyX3RpbWUJYmVmb3JlLAogCQkJCWFmdGVyOwogCVBHcmVzdWx0ICAgKnJlc3VsdDsK QEAgLTE0NjYsOSArMTUzNywxMyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBj aGFyICpxdWVyeSwKIAl7CiAJCWNhc2UgUFNRTF9TRU5EX0VYVEVOREVEX0NMT1NFOgogCQkJc3Vj Y2VzcyA9IFBRc2VuZENsb3NlUHJlcGFyZWQocHNldC5kYiwgcHNldC5zdG10TmFtZSk7CisJCQlp ZiAoc3VjY2VzcyAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09G RikKKwkJCQlwc2V0LnBpcGVkX2NvbW1hbmRzKys7CiAJCQlicmVhazsKIAkJY2FzZSBQU1FMX1NF TkRfRVhURU5ERURfUEFSU0U6CiAJCQlzdWNjZXNzID0gUFFzZW5kUHJlcGFyZShwc2V0LmRiLCBw c2V0LnN0bXROYW1lLCBxdWVyeSwgMCwgTlVMTCk7CisJCQlpZiAoc3VjY2VzcyAmJiBQUXBpcGVs aW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJCQlwc2V0LnBpcGVkX2Nv bW1hbmRzKys7CiAJCQlicmVhazsKIAkJY2FzZSBQU1FMX1NFTkRfRVhURU5ERURfUVVFUllfUEFS QU1TOgogCQkJQXNzZXJ0KHBzZXQuc3RtdE5hbWUgPT0gTlVMTCk7CkBAIC0xNDc2LDYgKzE1NTEs OCBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJCQkJ CQkJCQlwc2V0LmJpbmRfbnBhcmFtcywgTlVMTCwKIAkJCQkJCQkJCQkoY29uc3QgY2hhciAqY29u c3QgKikgcHNldC5iaW5kX3BhcmFtcywKIAkJCQkJCQkJCQlOVUxMLCBOVUxMLCAwKTsKKwkJCWlm IChzdWNjZXNzICYmIFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQRUxJTkVfT0ZG KQorCQkJCXBzZXQucGlwZWRfY29tbWFuZHMrKzsKIAkJCWJyZWFrOwogCQljYXNlIFBTUUxfU0VO RF9FWFRFTkRFRF9RVUVSWV9QUkVQQVJFRDoKIAkJCUFzc2VydChwc2V0LnN0bXROYW1lICE9IE5V TEwpOwpAQCAtMTQ4Myw2ICsxNTYwLDgzIEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNv bnN0IGNoYXIgKnF1ZXJ5LAogCQkJCQkJCQkJCSAgcHNldC5iaW5kX25wYXJhbXMsCiAJCQkJCQkJ CQkJICAoY29uc3QgY2hhciAqY29uc3QgKikgcHNldC5iaW5kX3BhcmFtcywKIAkJCQkJCQkJCQkg IE5VTEwsIE5VTEwsIDApOworCQkJaWYgKHN1Y2Nlc3MgJiYgUFFwaXBlbGluZVN0YXR1cyhwc2V0 LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCQkJcHNldC5waXBlZF9jb21tYW5kcysrOworCQkJ YnJlYWs7CisJCWNhc2UgUFNRTF9TVEFSVF9QSVBFTElORV9NT0RFOgorCQkJc3VjY2VzcyA9IFBR ZW50ZXJQaXBlbGluZU1vZGUocHNldC5kYik7CisJCQlicmVhazsKKwkJY2FzZSBQU1FMX0VORF9Q SVBFTElORV9NT0RFOgorCQkJc3VjY2VzcyA9IFBRcGlwZWxpbmVTeW5jKHBzZXQuZGIpOworCQkJ aWYgKHN1Y2Nlc3MgJiYgUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9P RkYpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBFbmQgb2YgdGhlIHBpcGVsaW5lLCBhbGwgcXVldWVk IGNvbW1hbmRzIG5lZWQgdG8gYmUKKwkJCQkgKiBwcm9jZXNzZWQKKwkJCQkgKi8KKwkJCQllbmRf cGlwZWxpbmUgPSB0cnVlOworCQkJCXBzZXQucGlwZWRfc3luY3MrKzsKKworCQkJCS8qCisJCQkJ ICogVGhlIHNlcnZlciB3aWxsIHNlbmQgYSBSZWFkeUZvclF1ZXJ5IGFmdGVyIGEgU3luYyBpcwor CQkJCSAqIHByb2Nlc3NlZCwgZmx1c2hpbmcgYWxsIHJlc3VsdHMgdG8gdGhlIGNsaWVudAorCQkJ CSAqLworCQkJCXBzZXQuYXZhaWxhYmxlX3Jlc3VsdHMgKz0gcHNldC5waXBlZF9jb21tYW5kczsK KwkJCQlwc2V0LnBpcGVkX2NvbW1hbmRzID0gMDsKKwkJCQkvKiBXZSB3YW50IHRvIHJlYWQgYWxs IHJlc3VsdHMgKi8KKwkJCQlwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID0gcHNldC5hdmFpbGFibGVf cmVzdWx0cyArIHBzZXQucGlwZWRfc3luY3M7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBQU1FM X1NFTkRfUElQRUxJTkVfU1lOQzoKKwkJCXN1Y2Nlc3MgPSBQUXNlbmRQaXBlbGluZVN5bmMocHNl dC5kYik7CisJCQlpZiAoc3VjY2VzcyAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBR X1BJUEVMSU5FX09GRikKKwkJCXsKKwkJCQlwc2V0LnBpcGVkX3N5bmNzKys7CisKKwkJCQkvKgor CQkJCSAqIFRoZSBzZXJ2ZXIgd2lsbCBzZW5kIGEgUmVhZHlGb3JRdWVyeSBhZnRlciBhIFN5bmMg aXMKKwkJCQkgKiBwcm9jZXNzZWQsIGZsdXNoaW5nIGFsbCByZXN1bHRzIHRvIHRoZSBjbGllbnQK KwkJCQkgKi8KKwkJCQlwc2V0LmF2YWlsYWJsZV9yZXN1bHRzICs9IHBzZXQucGlwZWRfY29tbWFu ZHM7CisJCQkJcHNldC5waXBlZF9jb21tYW5kcyA9IDA7CisJCQl9CisJCQlicmVhazsKKwkJY2Fz ZSBQU1FMX0ZMVVNIOgorCQkJc3VjY2VzcyA9IFBRZmx1c2gocHNldC5kYik7CisJCQlicmVhazsK KwkJY2FzZSBQU1FMX1NFTkRfRkxVU0hfUkVRVUVTVDoKKwkJCXN1Y2Nlc3MgPSBQUXNlbmRGbHVz aFJlcXVlc3QocHNldC5kYik7CisJCQlpZiAoc3VjY2VzcyAmJiBQUXBpcGVsaW5lU3RhdHVzKHBz ZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdpdGggdGhl IGZsdXNoIHJlcXVlc3QsIGFsbCBwaXBlZCBjb21tYW5kcyBhcmUgcHVzaGVkIGFuZAorCQkJCSAq IHRoZSBzZXJ2ZXIgd2lsbCBmb3JjZWZ1bGx5IGZsdXNoIHRoZSByZXN1bHRzIHRvIHRoZSBjbGll bnQsCisJCQkJICogbWFraW5nIHRoZW0gYXZhaWxhYmxlCisJCQkJICovCisJCQkJcHNldC5hdmFp bGFibGVfcmVzdWx0cyArPSBwc2V0LnBpcGVkX2NvbW1hbmRzOworCQkJCXBzZXQucGlwZWRfY29t bWFuZHMgPSAwOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgUFNRTF9HRVRfUkVTVUxUUzoKKwkJ CWlmIChwc2V0LmF2YWlsYWJsZV9yZXN1bHRzID09IDAgJiYgcHNldC5waXBlZF9zeW5jcyA9PSAw KQorCQkJeworCQkJCS8qCisJCQkJICogSWYgbm8gc3luYyBvciBmbHVzaCByZXF1ZXN0IHdlcmUg c2VudCwgUFFnZXRSZXN1bHQgd2lsbAorCQkJCSAqIGJsb2NrLiBGb3JiaWQgdGhlIGNhbGwgdG8g XGdldHJlc3VsdHMgdG8gYXZvaWQgc3RheWluZworCQkJCSAqIHN0dWNrCisJCQkJICovCisJCQkJ cGdfbG9nX2luZm8oIk5vIHBlbmRpbmcgcmVzdWx0cyB0byBnZXQiKTsKKwkJCQlzdWNjZXNzID0g ZmFsc2U7CisJCQkJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9IDA7CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJc3VjY2VzcyA9IHRydWU7CisJCQkJLyogQ2FwIHJlcXVlc3RlZF9yZXN1bHRzIHRv IHRoZSBtYXhpbXVtIGtub3duIHJlc3VsdHMgKi8KKwkJCQlpZiAocHNldC5yZXF1ZXN0ZWRfcmVz dWx0cyA9PSAwIHx8CisJCQkJCXBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPiAocHNldC5hdmFpbGFi bGVfcmVzdWx0cyArIHBzZXQucGlwZWRfc3luY3MpKQorCQkJCQlwc2V0LnJlcXVlc3RlZF9yZXN1 bHRzID0gcHNldC5hdmFpbGFibGVfcmVzdWx0cyArIHBzZXQucGlwZWRfc3luY3M7CisJCQl9CiAJ CQlicmVhazsKIAkJY2FzZSBQU1FMX1NFTkRfUVVFUlk6CiAJCQlzdWNjZXNzID0gUFFzZW5kUXVl cnkocHNldC5kYiwgcXVlcnkpOwpAQCAtMTUwMSw2ICsxNjU1LDE2IEBAIEV4ZWNRdWVyeUFuZFBy b2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQlyZXR1cm4gLTE7CiAJfQogCisJaWYg KHBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPT0gMCAmJiAhZW5kX3BpcGVsaW5lICYmCisJCVBRcGlw ZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQRUxJTkVfT0ZGKQorCXsKKwkJLyoKKwkJICog V2UncmUgaW4gYSBwaXBlbGluZSBhbmQgaGF2ZW4ndCByZWFjaGVkIHRoZSBwaXBlbGluZSBlbmQg b3IgdGhlcmUKKwkJICogd2FzIG5vIHJlcXVlc3QgdG8gcmVhZCBwaXBlbGluZSByZXN1bHRzLCBl eGl0LgorCQkgKi8KKwkJcmV0dXJuIDE7CisJfQorCiAJLyoKIAkgKiBGZXRjaCB0aGUgcmVzdWx0 IGluIGNodW5rcyBpZiBGRVRDSF9DT1VOVCBpcyBzZXQsIGV4Y2VwdCB3aGVuOgogCSAqCkBAIC0x NTQ4LDcgKzE3MTIsNyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpx dWVyeSwKIAl7CiAJCUV4ZWNTdGF0dXNUeXBlIHJlc3VsdF9zdGF0dXM7CiAJCWJvb2wJCWlzX2No dW5rZWRfcmVzdWx0ID0gZmFsc2U7Ci0JCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0OworCQlQR3Jl c3VsdCAgICpuZXh0X3Jlc3VsdCA9IE5VTEw7CiAJCWJvb2wJCWxhc3Q7CiAKIAkJaWYgKCFBY2Nl cHRSZXN1bHQocmVzdWx0LCBmYWxzZSkpCkBAIC0xNTcxLDYgKzE3MzUsOSBAQCBFeGVjUXVlcnlB bmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJCUNsZWFyT3JTYXZlUmVzdWx0 KHJlc3VsdCk7CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAKKwkJCWlmIChyZXN1bHRfc3RhdHVzID09 IFBHUkVTX1BJUEVMSU5FX0FCT1JURUQpCisJCQkJcGdfbG9nX2luZm8oIlBpcGVsaW5lIGFib3J0 ZWQsIGNvbW1hbmQgZGlkbid0IHJ1biIpOworCiAJCQkvKgogCQkJICogc3dpdGNoIHRvIG5leHQg cmVzdWx0CiAJCQkgKi8KQEAgLTE1ODUsNiArMTc1MiwyMCBAQCBFeGVjUXVlcnlBbmRQcm9jZXNz UmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJCQkgKiBpZ25vcmUgbWFudWFsbHkuCiAJCQkJ ICovCiAJCQkJcmVzdWx0ID0gTlVMTDsKKwkJCWVsc2UgaWYgKChlbmRfcGlwZWxpbmUgfHwgcHNl dC5yZXF1ZXN0ZWRfcmVzdWx0cyA+IDApCisJCQkJCSAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQu ZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKworCQkJCS8qCisJCQkJICogV2UgaGF2ZSBhbiBlcnJv ciB3aXRoaW4gYSBwaXBlbGluZS4gQWxsIGNvbW1hbmRzIGFyZQorCQkJCSAqIGFib3J0ZWQgdW50 aWwgdGhlIG5leHQgc3luY2hyb25pc2F0aW9uIHBvaW50LiBXZSBuZWVkIHRvCisJCQkJICogY29u c3VtZSBhbGwgcmVzdWx0cyB1bnRpbCB0aGlzIHN5bmNocm9uaXNhdGlvbiBwb2ludCwgb3IKKwkJ CQkgKiBzdG9wIHdoZW4gdGhlcmUncyBubyBtb3JlIHJlc3VsdCB0byBkaXNjYXJkCisJCQkJICoK KwkJCQkgKiBDaGVja2luZyBwaXBlbGluZSBzdGF0dXMgaXMgbmVjZXNzYXJ5IGluIGNhc2UgdGhl CisJCQkJICogY29ubmVjdGlvbiB3YXMgcmVzZXQuIFRoZSBuZXcgY29ubmVjdGlvbiBpc24ndCBp biBhbnkga2luZAorCQkJCSAqIG9mIHBpcGVsaW5lIHN0YXRlIGFuZCB0aHVzIGhhcyBubyByZXN1 bHQgdG8gZGlzY2FyZAorCQkJCSAqLworCQkJCXJlc3VsdCA9IGRpc2NhcmRBYm9ydGVkUGlwZWxp bmVSZXN1bHRzKCk7CiAJCQllbHNlCiAJCQkJcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7 CiAKQEAgLTE3NzEsMTIgKzE5NTIsNjYgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29u c3QgY2hhciAqcXVlcnksCiAJCQl9CiAJCX0KIAorCQlpZiAocmVzdWx0X3N0YXR1cyA9PSBQR1JF U19QSVBFTElORV9TWU5DKQorCQl7CisJCQlBc3NlcnQocHNldC5waXBlZF9zeW5jcyA+IDApOwor CisJCQkvKgorCQkJICogV2UgaGF2ZSBhIHN5bmMgcmVzcG9uc2UsIGRlY3JlYXNlIHRoZSBzeW5j IGFuZAorCQkJICogcmVxdWVzdGVkX3Jlc3VsdHMgY291bnRlcnMKKwkJCSAqLworCQkJcHNldC5w aXBlZF9zeW5jcy0tOworCQkJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cy0tOworCisJCQkvKgorCQkJ ICogQWZ0ZXIgYSBzeW5jaHJvbmlzYXRpb24gcG9pbnQsIHJlc2V0IHN1Y2Nlc3Mgc3RhdGUgdG8g cHJpbnQKKwkJCSAqIHBvc3NpYmxlIHN1Y2Nlc3NmdWwgcmVzdWx0cyB0aGF0IHdpbGwgYmUgcHJv Y2Vzc2VkIGFmdGVyIHRoaXMKKwkJCSAqLworCQkJc3VjY2VzcyA9IHRydWU7CisKKwkJCS8qCisJ CQkgKiBJZiBhbGwgc3luY3Mgd2VyZSBwcm9jZXNzZWQgYW5kIHBpcGVsaW5lIGVuZCB3YXMgcmVx dWVzdGVkLAorCQkJICogZXhpdCBwaXBlbGluZSBtb2RlCisJCQkgKi8KKwkJCWlmIChlbmRfcGlw ZWxpbmUgJiYgcHNldC5waXBlZF9zeW5jcyA9PSAwKQorCQkJCXN1Y2Nlc3MgJj0gUFFleGl0UGlw ZWxpbmVNb2RlKHBzZXQuZGIpOworCQl9CisJCWVsc2UgaWYgKFBRcGlwZWxpbmVTdGF0dXMocHNl dC5kYikgIT0gUFFfUElQRUxJTkVfT0ZGICYmCisJCQkJIHJlc3VsdF9zdGF0dXMgIT0gUEdSRVNf UElQRUxJTkVfU1lOQykKKwkJeworCQkJLyoKKwkJCSAqIFdlIGFyZSBpbiBhIHBpcGVsaW5lIGFu ZCBoYXZlIGEgbm9uIHN5bmMgcmVzcG9uc2UsIGRlY3JlYXNlIHRoZQorCQkJICogcmVzdWx0cyBj b3VudGVycworCQkJICovCisJCQlwc2V0LmF2YWlsYWJsZV9yZXN1bHRzLS07CisJCQlwc2V0LnJl cXVlc3RlZF9yZXN1bHRzLS07CisJCX0KKwogCQkvKgogCQkgKiBDaGVjayBQUWdldFJlc3VsdCgp IGFnYWluLiAgSW4gdGhlIHR5cGljYWwgY2FzZSBvZiBhIHNpbmdsZS1jb21tYW5kCiAJCSAqIHN0 cmluZywgaXQgd2lsbCByZXR1cm4gTlVMTC4gIE90aGVyd2lzZSwgd2UnbGwgaGF2ZSBvdGhlciBy ZXN1bHRzCiAJCSAqIHRvIHByb2Nlc3MuICBXZSBuZWVkIHRvIGRvIHRoYXQgdG8gY2hlY2sgd2hl dGhlciB0aGlzIGlzIHRoZSBsYXN0LgogCQkgKi8KLQkJbmV4dF9yZXN1bHQgPSBQUWdldFJlc3Vs dChwc2V0LmRiKTsKKwkJaWYgKFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgPT0gUFFfUElQRUxJ TkVfT0ZGKQorCQkJbmV4dF9yZXN1bHQgPSBQUWdldFJlc3VsdChwc2V0LmRiKTsKKwkJZWxzZQor CQl7CisJCQkvKgorCQkJICogSW4gcGlwZWxpbmUgbW9kZSwgYSBOVUxMIHJlc3VsdCBpbmRpY2F0 ZXMgdGhlIGVuZCBvZiB0aGUKKwkJCSAqIGN1cnJlbnQgcXVlcnkgYmVpbmcgcHJvY2Vzc2VkLiBD YWxsIFBRZ2V0UmVzdWx0IHRvIGNvbnN1bWUgdGhpcworCQkJICogTlVMTAorCQkJICovCisJCQlp ZiAocmVzdWx0X3N0YXR1cyAhPSBQR1JFU19QSVBFTElORV9TWU5DKQorCQkJeworCQkJCW5leHRf cmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7CisJCQkJQXNzZXJ0KG5leHRfcmVzdWx0ID09 IE5VTEwpOworCQkJfQorCisJCQkvKiBXZSBjYW4gbm93IGdldCB0aGUgbmV4dCByZXN1bHQgaW4g dGhlIHBpcGVsaW5lICovCisJCQlpZiAocHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA+IDApCisJCQkJ bmV4dF9yZXN1bHQgPSBQUWdldFJlc3VsdChwc2V0LmRiKTsKKwkJfQorCiAJCWxhc3QgPSAobmV4 dF9yZXN1bHQgPT0gTlVMTCk7CiAKIAkJLyoKQEAgLTE3OTgsOCArMjAzMywxMiBAQCBFeGVjUXVl cnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJCSplbGFwc2VkX21zZWMg PSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhhZnRlcik7CiAJCX0KIAotCQkvKiB0aGlzIG1heSBv ciBtYXkgbm90IHByaW50IHNvbWV0aGluZyBkZXBlbmRpbmcgb24gc2V0dGluZ3MgKi8KLQkJaWYg KHJlc3VsdCAhPSBOVUxMKQorCQkvKgorCQkgKiBUaGlzIG1heSBvciBtYXkgbm90IHByaW50IHNv bWV0aGluZyBkZXBlbmRpbmcgb24gc2V0dGluZ3MuIEEKKwkJICogcGlwZWxpbmUgc3luYyB3aWxs IGhhdmUgYSBub24gbnVsbCByZXN1bHQgYnV0IGRvZXNuJ3QgaGF2ZSBhbnl0aGluZworCQkgKiB0 byBwcmludCwgdGh1cyBpZ25vcmUgdGhlbQorCQkgKi8KKwkJaWYgKHJlc3VsdCAhPSBOVUxMICYm IHJlc3VsdF9zdGF0dXMgIT0gUEdSRVNfUElQRUxJTkVfU1lOQykKIAkJewogCQkJLyoKIAkJCSAq IElmIHJlc3VsdHMgbmVlZCB0byBiZSBwcmludGVkIGludG8gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5 IFxnLApAQCAtMTgyNSw5ICsyMDY0LDE1IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNv bnN0IGNoYXIgKnF1ZXJ5LAogCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOwogCQlyZXN1bHQg PSBuZXh0X3Jlc3VsdDsKIAotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChjYW5jZWxfcHJl c3NlZCAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpID09IFBRX1BJUEVMSU5FX09GRikKIAkJ ewotCQkJLyogZHJvcCB0aGlzIG5leHQgcmVzdWx0LCBhcyB3ZWxsIGFzIGFueSBvdGhlcnMgbm90 IHlldCByZWFkICovCisJCQkvKgorCQkJICogT3V0c2lkZSBvZiBhIHBpcGVsaW5lLCBkcm9wIHRo aXMgbmV4dCByZXN1bHQsIGFzIHdlbGwgYXMgYW55CisJCQkgKiBvdGhlcnMgbm90IHlldCByZWFk CisJCQkgKgorCQkJICogV2l0aGluIGEgcGlwZWxpbmUsIHdlIGNhbiBsZXQgdGhlIG91dGVyIGxv b3AgaGFuZGxlIHRoaXMgYXMgYW4KKwkJCSAqIGFib3J0ZWQgcGlwZWxpbmUsIHdoaWNoIHdpbGwg ZGlzY2FyZCBhbGwgcmVzdWx0cworCQkJICovCiAJCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHQp OwogCQkJQ2xlYXJPclNhdmVBbGxSZXN1bHRzKCk7CiAJCQlicmVhazsKQEAgLTE4MzcsNiArMjA4 MiwxNyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkv KiBjbG9zZSBcZyBmaWxlIGlmIHdlIG9wZW5lZCBpdCAqLwogCUNsb3NlR091dHB1dChnZmlsZV9m b3V0LCBnZmlsZV9pc19waXBlKTsKIAorCWlmIChlbmRfcGlwZWxpbmUpCisJeworCQkvKiBBZnRl ciBhIHBpcGVsaW5lIGlzIHByb2Nlc3NlZCwgcGlwZWxpbmUgcGlwZWRfc3luY3Mgc2hvdWxkIGJl IDAgKi8KKwkJQXNzZXJ0KHBzZXQucGlwZWRfc3luY3MgPT0gMCk7CisJCS8qIGFsbCBjb21tYW5k cyB3ZXJlIHByb2Nlc3NlZCAqLworCQlBc3NlcnQocHNldC5waXBlZF9jb21tYW5kcyA9PSAwKTsK KwkJLyogYW5kIGFsbCByZXN1bHRzIHdlcmUgcmVhZCAqLworCQlBc3NlcnQocHNldC5hdmFpbGFi bGVfcmVzdWx0cyA9PSAwKTsKKwl9CisJQXNzZXJ0KHBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPT0g MCk7CisKIAkvKiBtYXkgbmVlZCB0aGlzIHRvIHJlY292ZXIgZnJvbSBjb25uIGxvc3MgZHVyaW5n IENPUFkgKi8KIAlpZiAoIUNoZWNrQ29ubmVjdGlvbigpKQogCQlyZXR1cm4gLTE7CkBAIC0yMjk2 LDcgKzI1NTIsMTMgQEAgY2xlYW5fZXh0ZW5kZWRfc3RhdGUodm9pZCkKIAkJCWZyZWUocHNldC5z dG10TmFtZSk7CiAJCQlwc2V0LmJpbmRfcGFyYW1zID0gTlVMTDsKIAkJCWJyZWFrOworCQljYXNl IFBTUUxfU1RBUlRfUElQRUxJTkVfTU9ERToJLyogXHN0YXJ0cGlwZWxpbmUgKi8KKwkJY2FzZSBQ U1FMX0VORF9QSVBFTElORV9NT0RFOgkvKiBcZW5kcGlwZWxpbmUgKi8KKwkJY2FzZSBQU1FMX1NF TkRfUElQRUxJTkVfU1lOQzoJLyogXHN5bmNwaXBlbGluZSAqLwogCQljYXNlIFBTUUxfU0VORF9R VUVSWToKKwkJY2FzZSBQU1FMX0ZMVVNIOgkJLyogXGZsdXNoICovCisJCWNhc2UgUFNRTF9HRVRf UkVTVUxUUzoJLyogXGdldHJlc3VsdHMgKi8KKwkJY2FzZSBQU1FMX1NFTkRfRkxVU0hfUkVRVUVT VDoJLyogXGZsdXNocmVxdWVzdCAqLwogCQkJYnJlYWs7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwppbmRleCBmZGE4MzQ2NWVmYS4u OTJkZjUzZmZkNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMKKysrIGIvc3JjL2Jp bi9wc3FsL2hlbHAuYwpAQCAtMTY3LDE1ICsxNjcsMjIgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBz aG9ydCBpbnQgcGFnZXIpCiAJSEVMUDAoIiAgXFxjbG9zZSBTVE1UX05BTUUgICAgICAgY2xvc2Ug YW4gZXhpc3RpbmcgcHJlcGFyZWQgc3RhdGVtZW50XG4iKTsKIAlIRUxQMCgiICBcXGNvcHlyaWdo dCAgICAgICAgICAgICBzaG93IFBvc3RncmVTUUwgdXNhZ2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJt c1xuIik7CiAJSEVMUDAoIiAgXFxjcm9zc3RhYnZpZXcgW0NPTFVNTlNdIGV4ZWN1dGUgcXVlcnkg YW5kIGRpc3BsYXkgcmVzdWx0IGluIGNyb3NzdGFiXG4iKTsKKwlIRUxQMCgiICBcXGVuZHBpcGVs aW5lICAgICAgICAgICBleGl0IHBpcGVsaW5lIG1vZGVcbiIpOwogCUhFTFAwKCIgIFxcZXJydmVy Ym9zZSAgICAgICAgICAgIHNob3cgbW9zdCByZWNlbnQgZXJyb3IgbWVzc2FnZSBhdCBtYXhpbXVt IHZlcmJvc2l0eVxuIik7CisJSEVMUDAoIiAgXFxmbHVzaCAgICAgICAgICAgICAgICAgcHVzaCB1 bnNlbnQgZGF0YSB0byB0aGUgc2VydmVyXG4iKTsKKwlIRUxQMCgiICBcXGZsdXNocmVxdWVzdCAg ICAgICAgICBzZW5kIGEgZmx1c2hyZXF1ZXN0IGNvbW1hbmRcbiIpOwogCUhFTFAwKCIgIFxcZyBb KE9QVElPTlMpXSBbRklMRV0gIGV4ZWN1dGUgcXVlcnkgKGFuZCBzZW5kIHJlc3VsdCB0byBmaWxl IG9yIHxwaXBlKTtcbiIKIAkJICAiICAgICAgICAgICAgICAgICAgICAgICAgIFxcZyB3aXRoIG5v IGFyZ3VtZW50cyBpcyBlcXVpdmFsZW50IHRvIGEgc2VtaWNvbG9uXG4iKTsKIAlIRUxQMCgiICBc XGdkZXNjICAgICAgICAgICAgICAgICBkZXNjcmliZSByZXN1bHQgb2YgcXVlcnksIHdpdGhvdXQg ZXhlY3V0aW5nIGl0XG4iKTsKKwlIRUxQMCgiICBcXGdldHJlc3VsdHMgW05VTV9SRVNdICByZWFk IE5VTV9SRVMgcGVuZGluZyByZXN1bHRzLiBBbGwgcGVuZGluZyByZXN1bHRzIGFyZVxuIgorCQkg ICIgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCBpZiBubyBhcmd1bWVudCBpcyBwcm92aWRl ZFxuIik7CiAJSEVMUDAoIiAgXFxnZXhlYyAgICAgICAgICAgICAgICAgZXhlY3V0ZSBxdWVyeSwg dGhlbiBleGVjdXRlIGVhY2ggdmFsdWUgaW4gaXRzIHJlc3VsdFxuIik7CiAJSEVMUDAoIiAgXFxn c2V0IFtQUkVGSVhdICAgICAgICAgZXhlY3V0ZSBxdWVyeSBhbmQgc3RvcmUgcmVzdWx0IGluIHBz cWwgdmFyaWFibGVzXG4iKTsKIAlIRUxQMCgiICBcXGd4IFsoT1BUSU9OUyldIFtGSUxFXSBhcyBc XGcsIGJ1dCBmb3JjZXMgZXhwYW5kZWQgb3V0cHV0IG1vZGVcbiIpOwogCUhFTFAwKCIgIFxccGFy c2UgU1RNVF9OQU1FICAgICAgIGNyZWF0ZSBhIHByZXBhcmVkIHN0YXRlbWVudFxuIik7CiAJSEVM UDAoIiAgXFxxICAgICAgICAgICAgICAgICAgICAgcXVpdCBwc3FsXG4iKTsKKwlIRUxQMCgiICBc XHN0YXJ0cGlwZWxpbmUgICAgICAgICBlbnRlciBwaXBlbGluZSBtb2RlXG4iKTsKKwlIRUxQMCgi ICBcXHN5bmNwaXBlbGluZSAgICAgICAgICBhZGQgYSBzeW5jaHJvbmlzYXRpb24gcG9pbnQgdG8g YW4gb25nb2luZyBwaXBlbGluZVxuIik7CiAJSEVMUDAoIiAgXFx3YXRjaCBbW2k9XVNFQ10gW2M9 Tl0gW209TUlOXVxuIgogCQkgICIgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZSBxdWVy eSBldmVyeSBTRUMgc2Vjb25kcywgdXAgdG8gTiB0aW1lcyxcbiIKIAkJICAiICAgICAgICAgICAg ICAgICAgICAgICAgIHN0b3AgaWYgbGVzcyB0aGFuIE1JTiByb3dzIGFyZSByZXR1cm5lZFxuIik7 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvcHJvbXB0LmMgYi9zcmMvYmluL3BzcWwvcHJvbXB0 LmMKaW5kZXggMDhhMTRmZWIzYzMuLmQ4ZTI3MWI4MmExIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvcHJvbXB0LmMKKysrIGIvc3JjL2Jpbi9wc3FsL3Byb21wdC5jCkBAIC0zMSw2ICszMSw5IEBA CiAgKgkJc29ja2V0cywgIltsb2NhbDovZGlyL25hbWVdIiBpZiBub3QgZGVmYXVsdAogICogJW0g LSBsaWtlICVNLCBidXQgaG9zdG5hbWUgb25seSAoYmVmb3JlIGZpcnN0IGRvdCksIG9yIGFsd2F5 cyAiW2xvY2FsXSIKICAqICVwIC0gYmFja2VuZCBwaWQKKyAqICVQIC0gcGlwZWxpbmUgc3RhdHVz OiBubyBwaXBlbGluZTogZW1wdHkKKyAqIAkJb25nb2luZyBwaXBlbGluZTogfHBpcGVkX3N5bmNz LHBpcGVkX2NvbW1hbmRzLHBlbmRpbmdfcmVzdWx0c3wKKyAqIAkJYWJvcnRlZCBwaXBlbGluZTog K3BpcGVkX3N5bmNzLHBpcGVkX2NvbW1hbmRzLHBlbmRpbmdfcmVzdWx0cysKICAqICU+IC0gZGF0 YWJhc2Ugc2VydmVyIHBvcnQgbnVtYmVyCiAgKiAlbiAtIGRhdGFiYXNlIHVzZXIgbmFtZQogICog JXMgLSBzZXJ2aWNlCkBAIC0xODEsNyArMTg0LDE2IEBAIGdldF9wcm9tcHQocHJvbXB0U3RhdHVz X3Qgc3RhdHVzLCBDb25kaXRpb25hbFN0YWNrIGNzdGFjaykKIAkJCQkJCQlzbnByaW50ZihidWYs IHNpemVvZihidWYpLCAiJWQiLCBwaWQpOwogCQkJCQl9CiAJCQkJCWJyZWFrOworCQkJCWNhc2Ug J1AnOgorCQkJCQl7CisJCQkJCQlQR3BpcGVsaW5lU3RhdHVzIHN0YXR1cyA9IFBRcGlwZWxpbmVT dGF0dXMocHNldC5kYik7CiAKKwkJCQkJCWlmIChzdGF0dXMgPT0gUFFfUElQRUxJTkVfT04pCisJ CQkJCQkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgInwlZCwlZCwlZHwiLCBwc2V0LnBpcGVk X3N5bmNzLCBwc2V0LnBpcGVkX2NvbW1hbmRzLCBwc2V0LmF2YWlsYWJsZV9yZXN1bHRzKTsKKwkJ CQkJCWVsc2UgaWYgKHN0YXR1cyA9PSBQUV9QSVBFTElORV9BQk9SVEVEKQorCQkJCQkJCXNucHJp bnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIrJWQsJWQsJWQrIiwgcHNldC5waXBlZF9zeW5jcywgcHNl dC5waXBlZF9jb21tYW5kcywgcHNldC5hdmFpbGFibGVfcmVzdWx0cyk7CisJCQkJCQlicmVhazsK KwkJCQkJfQogCQkJCWNhc2UgJzAnOgogCQkJCWNhc2UgJzEnOgogCQkJCWNhc2UgJzInOgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3NldHRpbmdzLmggYi9zcmMvYmluL3BzcWwvc2V0dGluZ3Mu aAppbmRleCAyYThmZTEyZWI1NS4uODkyMTllMTU5ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9zZXR0aW5ncy5oCisrKyBiL3NyYy9iaW4vcHNxbC9zZXR0aW5ncy5oCkBAIC0yMyw4ICsyMyw4 IEBACiAjZGVmaW5lIERFRkFVTFRfRURJVE9SX0xJTkVOVU1CRVJfQVJHICIrIgogI2VuZGlmCiAK LSNkZWZpbmUgREVGQVVMVF9QUk9NUFQxICIlLyVSJXglIyAiCi0jZGVmaW5lIERFRkFVTFRfUFJP TVBUMiAiJS8lUiV4JSMgIgorI2RlZmluZSBERUZBVUxUX1BST01QVDEgIiUvJVIlUCV4JSMgIgor I2RlZmluZSBERUZBVUxUX1BST01QVDIgIiUvJVIlUCV4JSMgIgogI2RlZmluZSBERUZBVUxUX1BS T01QVDMgIj4+ICIKIAogLyoKQEAgLTY5LDYgKzY5LDEyIEBAIHR5cGVkZWYgZW51bQogCVBTUUxf U0VORF9FWFRFTkRFRF9QQVJTRSwKIAlQU1FMX1NFTkRfRVhURU5ERURfUVVFUllfUEFSQU1TLAog CVBTUUxfU0VORF9FWFRFTkRFRF9RVUVSWV9QUkVQQVJFRCwKKwlQU1FMX1NFTkRfUElQRUxJTkVf U1lOQywKKwlQU1FMX1NUQVJUX1BJUEVMSU5FX01PREUsCisJUFNRTF9FTkRfUElQRUxJTkVfTU9E RSwKKwlQU1FMX0ZMVVNILAorCVBTUUxfU0VORF9GTFVTSF9SRVFVRVNULAorCVBTUUxfR0VUX1JF U1VMVFMsCiB9IFBTUUxfU0VORF9NT0RFOwogCiB0eXBlZGVmIGVudW0KQEAgLTExMSw2ICsxMTcs MTIgQEAgdHlwZWRlZiBzdHJ1Y3QgX3BzcWxTZXR0aW5ncwogCWNoYXIJICAqKmJpbmRfcGFyYW1z OwkvKiBwYXJhbWV0ZXJzIGZvciBleHRlbmRlZCBxdWVyeSBwcm90b2NvbCBjYWxsICovCiAJY2hh cgkgICAqc3RtdE5hbWU7CQkvKiBwcmVwYXJlZCBzdGF0ZW1lbnQgbmFtZSB1c2VkIGZvciBleHRl bmRlZAogCQkJCQkJCQkgKiBxdWVyeSBwcm90b2NvbCBjb21tYW5kcyAqLworCWludAkJCXBpcGVk X2NvbW1hbmRzOyAvKiBudW1iZXIgb2YgcGlwZWQgY29tbWFuZHMgKi8KKwlpbnQJCQlwaXBlZF9z eW5jczsJLyogbnVtYmVyIG9mIHBpcGVkIHN5bmNzICovCisJaW50CQkJYXZhaWxhYmxlX3Jlc3Vs dHM7CS8qIG51bWJlciBvZiByZXN1bHRzIGF2YWlsYWJsZSB0byBnZXQgKi8KKwlpbnQJCQlyZXF1 ZXN0ZWRfcmVzdWx0czsJLyogbnVtYmVyIG9mIHJlcXVlc3RlZCByZXN1bHRzLCBpbmNsdWRlCisJ CQkJCQkJCQkgKiBzeW5jIG1lc3NhZ2VzLiBVc2VkIHRvIHJlYWQgYSBsaW1pdGVkCisJCQkJCQkJ CQkgKiBzdWJzZXQgb2YgdGhlIGF2YWlsYWJsZV9yZXN1bHRzICovCiAJYm9vbAkJY3Jvc3N0YWJf ZmxhZzsJLyogb25lLXNob3QgcmVxdWVzdCB0byBjcm9zc3RhYiByZXN1bHQgKi8KIAljaGFyCSAg ICpjdHZfYXJnc1s0XTsJLyogXGNyb3NzdGFidmlldyBhcmd1bWVudHMgKi8KIApkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5pbi5jCmluZGV4IDgxY2JmMTBhYTI4Li5iZDNhNzhkOTA5ZCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwpAQCAtMTg2Nyw5ICsxODY3LDkgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIg KnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcZHJkcyIsICJcXGRyZyIsICJcXGRScyIs ICJcXGRScCIsICJcXGRzIiwKIAkJIlxcZHQiLCAiXFxkVCIsICJcXGR2IiwgIlxcZHUiLCAiXFxk eCIsICJcXGRYIiwgIlxcZHkiLAogCQkiXFxlY2hvIiwgIlxcZWRpdCIsICJcXGVmIiwgIlxcZWxp ZiIsICJcXGVsc2UiLCAiXFxlbmNvZGluZyIsCi0JCSJcXGVuZGlmIiwgIlxcZXJydmVyYm9zZSIs ICJcXGV2IiwKLQkJIlxcZiIsCi0JCSJcXGciLCAiXFxnZGVzYyIsICJcXGdldGVudiIsICJcXGdl eGVjIiwgIlxcZ3NldCIsICJcXGd4IiwKKwkJIlxcZW5kaWYiLCAiXFxlbmRwaXBlbGluZSIsICJc XGVycnZlcmJvc2UiLCAiXFxldiIsCisJCSJcXGYiLCAiXFxmbHVzaCIsICJcXGZsdXNocmVxdWVz dCIsCisJCSJcXGciLCAiXFxnZGVzYyIsICJcXGdldGVudiIsICJcXGdldHJlc3VsdHMiLCAiXFxn ZXhlYyIsICJcXGdzZXQiLCAiXFxneCIsCiAJCSJcXGhlbHAiLCAiXFxodG1sIiwKIAkJIlxcaWYi LCAiXFxpbmNsdWRlIiwgIlxcaW5jbHVkZV9yZWxhdGl2ZSIsICJcXGlyIiwKIAkJIlxcbGlzdCIs ICJcXGxvX2ltcG9ydCIsICJcXGxvX2V4cG9ydCIsICJcXGxvX2xpc3QiLCAiXFxsb191bmxpbmsi LApAQCAtMTg3Nyw3ICsxODc3LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxccGFyc2UiLCAiXFxwYXNzd29yZCIsICJcXHByaW50 IiwgIlxccHJvbXB0IiwgIlxccHNldCIsCiAJCSJcXHFlY2hvIiwgIlxccXVpdCIsCiAJCSJcXHJl c2V0IiwKLQkJIlxccyIsICJcXHNldCIsICJcXHNldGVudiIsICJcXHNmIiwgIlxcc3YiLAorCQki XFxzIiwgIlxcc2V0IiwgIlxcc2V0ZW52IiwgIlxcc2YiLCAiXFxzdGFydHBpcGVsaW5lIiwgIlxc c3YiLCAiXFxzeW5jcGlwZWxpbmUiLAogCQkiXFx0IiwgIlxcVCIsICJcXHRpbWluZyIsCiAJCSJc XHVuc2V0IiwKIAkJIlxceCIsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCAzNmRj MzFjMTZjNC4uZGVkNTEwZDUwYmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dApAQCAt NjgyOCwzICs2ODI4LDY3MSBAQCBDUkVBVEUgVEFCTEUgZGVmcHJpdnMgKGEgaW50KTsKIAogXHBz ZXQgbnVsbCAnJwogRFJPUCBUQUJMRSBkZWZwcml2czsKKy0tIHBpcGVsaW5pbmcKK0NSRUFURSBU QUJMRSBwc3FsX3BpcGVsaW5lKGEgSU5URUdFUiBQUklNQVJZIEtFWSwgcyBURVhUKTsKKy0tIHNp bmdsZSBxdWVyeQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xl bmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworLS0g bXVsdGlwbGUgcXVlcmllcworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScg XGcKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDInICd2YWwzJyBcZworU0VMRUNUICQxLCAkMiBc YmluZCAndmFsMicgJ3ZhbDMnIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyB2YWwxCisoMSByb3cpCisKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgdmFsMiAgICAgfCB2YWwzCisoMSByb3cpCisKKyA/Y29sdW1uPyB8ID9jb2x1 bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsMiAgICAgfCB2YWwzCisoMSByb3cpCisK Ky0tIFRlc3QgXGZsdXNoCitcc3RhcnRwaXBlbGluZQorXGZsdXNoCitTRUxFQ1QgJDEgXGJpbmQg J3ZhbDEnIFxnCitcZmx1c2gKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDInICd2YWwzJyBcZwor U0VMRUNUICQxLCAkMiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29s dW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKyA/Y29sdW1uPyB8ID9jb2x1bW4/ IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsMiAgICAgfCB2YWwzCisoMSByb3cpCisKKyA/ Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsMiAgICAgfCB2 YWwzCisoMSByb3cpCisKKy0tIHNlbmQgbXVsdGlwbGUgc3luY3MKK1xzdGFydHBpcGVsaW5lCitT RUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcc3luY3BpcGVsaW5lCitcc3luY3BpcGVsaW5lCitT RUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1xzeW5jcGlwZWxpbmUKK1NFTEVD VCAkMSwgJDIgXGJpbmQgJ3ZhbDQnICd2YWw1JyBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgdmFsMQorKDEgcm93KQorCisgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHZhbDIgICAgIHwgdmFsMworKDEgcm93KQorCisgP2NvbHVt bj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHZhbDQgICAgIHwgdmFsNQor KDEgcm93KQorCistLSBzdGFydHBpcGVsaW5lIHNob3VsZG4ndCBoYXZlIGFueSBlZmZlY3QgaWYg YWxyZWFkeSBpbiBhIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK1NF TEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0t LS0tLQorIHZhbDEKKygxIHJvdykKKworLS0gQ29udmVydCBhbiBpbXBsaWNpdCB0eCBibG9jayB0 byBhbiBleHBsaWNpdCB0eCBibG9jaworXHN0YXJ0cGlwZWxpbmUKK0lOU0VSVCBJTlRPIHBzcWxf cGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMSBcZworQkVHSU4gXGJpbmQgXGcKK0lOU0VSVCBJ TlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMiBcZworUk9MTEJBQ0sgXGJpbmQg XGcKK1xlbmRwaXBlbGluZQorLS0gTXVsdGlwbGUgZXhwbGljaXQgdHJhbnNhY3Rpb25zCitcc3Rh cnRwaXBlbGluZQorQkVHSU4gXGJpbmQgXGcKK0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFM VUVTICgkMSkgXGJpbmQgMSBcZworUk9MTEJBQ0sgXGJpbmQgXGcKK0JFR0lOIFxiaW5kIFxnCitJ TlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5kIDEgXGcKK0NPTU1JVCBc YmluZCBcZworXGVuZHBpcGVsaW5lCistLSBDT1BZIEZST00gU1RESU4KK1xzdGFydHBpcGVsaW5l CitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitDT1BZIHBzcWxfcGlwZWxpbmUgRlJPTSBTVERJ TiBcYmluZCBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdmFsMQor KDEgcm93KQorCistLSBDT1BZIEZST00gU1RESU4gd2l0aCBcZmx1c2hyZXF1ZXN0ICsgXGdldHJl c3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitDT1BZIHBz cWxfcGlwZWxpbmUgRlJPTSBTVERJTiBcYmluZCBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3Vs dHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKK21lc3NhZ2UgdHlw ZSAweDVhIGFycml2ZWQgZnJvbSBzZXJ2ZXIgd2hpbGUgaWRsZQorXGVuZHBpcGVsaW5lCistLSBD T1BZIEZST00gU1RESU4gd2l0aCBcc3luY3BpcGVsaW5lICsgXGdldHJlc3VsdHMKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitDT1BZIHBzcWxfcGlwZWxpbmUgRlJP TSBTVERJTiBcYmluZCBcZworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKK1xlbmRwaXBlbGluZQorLS0gQ09QWSBUTyBT VERPVVQKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitjb3B5IHBz cWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKzEJXE4KKzIJdGVzdDIKKzMJdGVzdDMKKzQJ dGVzdDQKKy0tIENPUFkgVE8gU1RET1VUIHdpdGggXGZsdXNocmVxdWVzdCArIFxnZXRyZXN1bHRz Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworY29weSBwc3FsX3Bp cGVsaW5lIFRPIFNURE9VVCBcYmluZCBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKzEJXE4KKzIJdGVzdDIKKzMJ dGVzdDMKKzQJdGVzdDQKK1xlbmRwaXBlbGluZQorLS0gQ09QWSBUTyBTVERPVVQgd2l0aCBcc3lu Y3BpcGVsaW5lICsgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg J3ZhbDEnIFxnCitjb3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcc3luY3Bp cGVsaW5lCitcZ2V0cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJv dykKKworMQlcTgorMgl0ZXN0MgorMwl0ZXN0MworNAl0ZXN0NAorXGVuZHBpcGVsaW5lCistLSBV c2UgXHBhcnNlIGFuZCBcYmluZF9uYW1lZAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBccGFy c2UgJycKK1NFTEVDVCAkMSwgJDIgXHBhcnNlICcnCitTRUxFQ1QgJDIgXHBhcnNlIHBpcGVsaW5l XzEKK1xiaW5kX25hbWVkICcnIDEgMiBcZworXGJpbmRfbmFtZWQgcGlwZWxpbmVfMSAyIFxnCitc ZW5kcGlwZWxpbmUKK0VSUk9SOiAgY291bGQgbm90IGRldGVybWluZSBkYXRhIHR5cGUgb2YgcGFy YW1ldGVyICQxCistLSBcZ2V0cmVzdWx0cyBkaXNwbGF5cyBhbGwgcmVzdWx0cyBwcmVjZWRpbmcg YSBcZmx1c2hyZXF1ZXN0Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NF TEVDVCAkMSBcYmluZCAyIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIK KygxIHJvdykKKworXGVuZHBpcGVsaW5lCistLSBcZ2V0cmVzdWx0cyBkaXNwbGF5cyBhbGwgcmVz dWx0cyBwcmVjZWRpbmcgYSBzeW5jCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEg XGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworID9j b2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworID9jb2x1bW4/IAorLS0tLS0tLS0t LQorIDIKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCistLSBcZ2V0cmVzdWx0cyBpbW1lZGlhdGVs eSByZXR1cm5zIGlmIHRoZXJlJ3Mgbm8gcmVzdWx0IHRvIGZldGNoCitcc3RhcnRwaXBlbGluZQor XGdldHJlc3VsdHMKK05vIHBlbmRpbmcgcmVzdWx0cyB0byBnZXQKK1NFTEVDVCAkMSBcYmluZCAy IFxnCitcZ2V0cmVzdWx0cworTm8gcGVuZGluZyByZXN1bHRzIHRvIGdldAorXGZsdXNocmVxdWVz dAorXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitc Z2V0cmVzdWx0cworTm8gcGVuZGluZyByZXN1bHRzIHRvIGdldAorLS0gXGdldHJlc3VsdHMgb25s eSBmZXRjaCByZXN1bHRzIHByZWNlZGluZyBhIGZsdXNocmVxdWVzdAorXHN0YXJ0cGlwZWxpbmUK K1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZmx1c2hyZXF1ZXN0CitTRUxFQ1QgJDEgXGJpbmQgMiBc ZworXGdldHJlc3VsdHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1xl bmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworLS0gXGdl dHJlc3VsdHMgb25seSBmZXRjaCByZXN1bHRzIHByZWNlZGluZyBhIHN5bmMgbWVzc2FnZQorXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3BpcGVsaW5lCitTRUxFQ1Qg JDEgXGJpbmQgMiBcZworXGdldHJlc3VsdHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCiso MSByb3cpCisKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIKKygxIHJv dykKKworLS0gdXNlIHBpcGVsaW5lIHdpdGggY2h1bmtlZCByZXN1bHRzIHdpdGggYm90aCBcZ2V0 cmVzdWx0cyBhbmQgXGVuZHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorXHNldCBGRVRDSF9DT1VO VCAxMAorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCisg P2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgJDEgXGJpbmQgMiBc ZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitc dW5zZXQgRkVUQ0hfQ09VTlQKKy0tIFxnZXRyZXN1bHRzIHdpdGggc3BlY2lmaWMgbnVtYmVyIG9m IHJlcXVlc3RlZCByZXN1bHRzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcK K1NFTEVDVCAkMSBcYmluZCAyIFxnCitTRUxFQ1QgJDEgXGJpbmQgMyBcZworXHN5bmNwaXBlbGlu ZQorXGdldHJlc3VsdHMgMQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKwor U0VMRUNUICQxIFxiaW5kIDQgXGcKK1xnZXRyZXN1bHRzIDMKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyAyCisoMSByb3cpCisKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAzCisoMSByb3cpCisK K1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDQKKygxIHJvdykKKworLS0g XHN5bmNwaXBlbGluZSBjb3VudCBhcyBvbmUgY29tbWFuZCB0byBmZXRjaCBmb3IgXGdldHJlc3Vs dHMKK1xzdGFydHBpcGVsaW5lCitcc3luY3BpcGVsaW5lCitcc3luY3BpcGVsaW5lCitTRUxFQ1Qg JDEgXGJpbmQgMSBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMgMgorXGdldHJlc3VsdHMg MQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCist LSBcZ2V0cmVzdWx0cyAwIHNob3VsZCBnZXQgYWxsIHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitT RUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1NFTEVDVCAkMSBcYmlu ZCAzIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cyAwCisgP2NvbHVtbj8gCistLS0tLS0t LS0tCisgMQorKDEgcm93KQorCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQor CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMworKDEgcm93KQorCitcZW5kcGlwZWxpbmUKKy0t IHBpcGVsaW5pbmcgZXJyb3JzCistLSBlbmRwaXBlbGluZSBvdXRzaWRlIG9mIHBpcGVsaW5lIHNo b3VsZCBmYWlsCitcZW5kcGlwZWxpbmUKK2Nhbm5vdCBzZW5kIHBpcGVsaW5lIHdoZW4gbm90IGlu IHBpcGVsaW5lIG1vZGUKKy0tIFF1ZXJ5IHVzaW5nIHNpbXBsZSBwcm90b2NvbCBzaG91bGQgbm90 IGJlIHNlbnQgYW5kIHNob3VsZCBsZWF2ZSB0aGUgcGlwZWxpbmUgdXNhYmxlCitcc3RhcnRwaXBl bGluZQorU0VMRUNUIDE7CitQUXNlbmRRdWVyeSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2Rl CitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0t LS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKy0tIEFmdGVyIGFuIGFib3J0ZWQgcGlwZWxpbmUs IGNvbW1hbmRzIGFmdGVyIGEgc3luYyBzaG91bGQgYmUgZGlzcGxheWVkCitcc3RhcnRwaXBlbGlu ZQorU0VMRUNUICQxIFxiaW5kIFxnCitcc3luY3BpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBc ZworXGVuZHBpcGVsaW5lCitFUlJPUjogIGJpbmQgbWVzc2FnZSBzdXBwbGllcyAwIHBhcmFtZXRl cnMsIGJ1dCBwcmVwYXJlZCBzdGF0ZW1lbnQgIiIgcmVxdWlyZXMgMQorID9jb2x1bW4/IAorLS0t LS0tLS0tLQorIDEKKygxIHJvdykKKworLS0gSW5jb3JyZWN0IG51bWJlciBvZiBwYXJhbWV0ZXJz LCB0aGUgcGlwZWxpbmUgd2lsbCBiZSBhYm9ydGVkIGFuZCBmb2xsb3dpbmcgcXVlcmllcyB3b24n dCBiZSBleGVjdXRlZAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCBcYmluZCAndmFsMScgXGcKK1NF TEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorRVJST1I6ICBiaW5kIG1lc3Nh Z2Ugc3VwcGxpZXMgMSBwYXJhbWV0ZXJzLCBidXQgcHJlcGFyZWQgc3RhdGVtZW50ICIiIHJlcXVp cmVzIDAKKy0tIEFuIGV4cGxpY2l0IHRyYW5zYWN0aW9uIHdpdGggYW4gZXJyb3IgbmVlZHMgdG8g YmUgcm9sbGJhY2tlZCBhZnRlciB0aGUgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitCRUdJTiBc YmluZCBcZworSU5TRVJUIElOVE8gcHNxbF9waXBlbGluZSBWQUxVRVMgKCQxKSBcYmluZCAxIFxn CitST0xMQkFDSyBcYmluZCBcZworXGVuZHBpcGVsaW5lCitFUlJPUjogIGR1cGxpY2F0ZSBrZXkg dmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInBzcWxfcGlwZWxpbmVfcGtleSIKK0RF VEFJTDogIEtleSAoYSk9KDEpIGFscmVhZHkgZXhpc3RzLgorUk9MTEJBQ0s7CistLSBcd2F0Y2gg c2VuZHMgYSBzaW1wbGUgcXVlcnkgd2hpY2ggd29uJ3QgYmUgYWxsb3dlZCB3aXRoaW4gYSBwaXBl bGluZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCBcYmluZCBcZworXHdhdGNoIDEKK1BRc2VuZFF1 ZXJ5IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKKworXGVuZHBpcGVsaW5lCistLQorKDEg cm93KQorCistLSBcZ2Rlc2Mgc2hvdWxkIGZhaWwgYXMgc3luY2hyb25vdXMgY29tbWFuZHMgYXJl IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lLCBwaXBlbGluZSBzaG91bGQgc3RpbGwgYmUgdXNhYmxl Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGdkZXNjCitzeW5jaHJvbm91cyBj b21tYW5kIGV4ZWN1dGlvbiBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1v ZGUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0t LS0tLS0KKyAxCisoMSByb3cpCisKKy0tIFxnc2V0IGlzIG5vdCBhbGxvd2VkLCBwaXBlbGluZSBz aG91bGQgc3RpbGwgYmUgdXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIGFzIGksICQy IGFzIGogXHBhcnNlICcnCitTRUxFQ1QgJDEgYXMgaywgJDIgYXMgbCBccGFyc2UgJ3NlY29uZCcK K1xiaW5kX25hbWVkICcnIDEgMiBcZ3NldAorXGdzZXQgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUg bW9kZQorXGJpbmRfbmFtZWQgc2Vjb25kIDEgMiBcZ3NldCBwcmVmMDJfIFxlY2hvIDpwcmVmMDJf aSA6cHJlZjAyX2oKK1xnc2V0IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKK1xiaW5kX25h bWVkICcnIDEgMiBcZworXGVuZHBpcGVsaW5lCisgaSB8IGogCistLS0rLS0tCisgMSB8IDIKKygx IHJvdykKKworLS0gXGd4IGlzIG5vdCBhbGxvd2VkLCBwaXBlbGluZSBzaG91bGQgc3RpbGwgYmUg dXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGd4CitcZ3ggbm90IGFs bG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXHJlc2V0CitTRUxFQ1QgJDEgXGJpbmQgMSBcZworXGVu ZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCistLSBcZ3gg d2FybmluZyBzaG91bGQgYmUgZW1pdHRlZCBpbiBhbiBhYm9ydGVkIHBpcGVsaW5lCitcc3RhcnRw aXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cwor RVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMCBwYXJhbWV0ZXJzLCBidXQgcHJlcGFyZWQg c3RhdGVtZW50ICIiIHJlcXVpcmVzIDEKK1NFTEVDVCAkMSBcYmluZCAxIFxneAorXGd4IG5vdCBh bGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKK1xlbmRwaXBlbGluZQorLS0gXGdleGVjIGlzIG5vdCBh bGxvd2VkLCBwaXBlbGluZSBzaG91bGQgc3RpbGwgYmUgdXNhYmxlCitcc3RhcnRwaXBlbGluZQor U0VMRUNUICdJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lKGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTApJyBccGFyc2UgJ2luc2VydF9zdG10JworXGJpbmRfbmFtZWQgaW5zZXJ0X3N0bXQg XGdleGVjCitcZ2V4ZWMgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXGJpbmRfbmFtZWQg aW5zZXJ0X3N0bXQgXGcKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIHBzcWxfcGlwZWxpbmUgXGJpbmQg XGcKK1xlbmRwaXBlbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICA/Y29sdW1uPyAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lKGEp IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApCisoMSByb3cpCisKKyBjb3VudCAKKy0tLS0t LS0KKyAgICAgNAorKDEgcm93KQorCistLSBBZnRlciBhbiBlcnJvciwgcGlwZWxpbmUgaXMgYWJv cnRlZCBhbmQgcmVxdWlyZXMgYSBzeW5jIHRvIGJlIHJldXNhYmxlCitcc3RhcnRwaXBlbGluZQor U0VMRUNUICQxIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxwYXJz ZSBhCitcYmluZF9uYW1lZCBhIDEgXGcKK1xjbG9zZSBhCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVz dWx0cworRVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMCBwYXJhbWV0ZXJzLCBidXQgcHJl cGFyZWQgc3RhdGVtZW50ICIiIHJlcXVpcmVzIDEKKy0tIFBpcGVsaW5lIGlzIGFib3J0ZWQKK1NF TEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNlIGEKK1xiaW5kX25hbWVkIGEgMSBc ZworXGNsb3NlIGEKKy0tIFN5bmMgYWxsb3dzIHBpcGVsaW5lIHRvIHJlY292ZXIKK1xzeW5jcGlw ZWxpbmUKK1xnZXRyZXN1bHRzCitQaXBlbGluZSBhYm9ydGVkLCBjb21tYW5kIGRpZG4ndCBydW4K K1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNlIGEKK1xiaW5kX25hbWVkIGEg MSBcZworXGNsb3NlIGEKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgMQorKDEgcm93KQorCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEg cm93KQorCitcZW5kcGlwZWxpbmUKKy0tIEluIGFuIGFib3J0ZWQgcGlwZWxpbmUsIFxnZXRyZXN1 bHRzIDEgYWJvcnRlZCBjb21tYW5kcyBvbmUgYXQgYSB0aW1lCitcc3RhcnRwaXBlbGluZQorU0VM RUNUICQxIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxwYXJzZSBh CitcYmluZF9uYW1lZCBhIDEgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzIDEKK0VSUk9S OiAgYmluZCBtZXNzYWdlIHN1cHBsaWVzIDAgcGFyYW1ldGVycywgYnV0IHByZXBhcmVkIHN0YXRl bWVudCAiIiByZXF1aXJlcyAxCitcZ2V0cmVzdWx0cyAxCitQaXBlbGluZSBhYm9ydGVkLCBjb21t YW5kIGRpZG4ndCBydW4KK1xnZXRyZXN1bHRzIDEKK1BpcGVsaW5lIGFib3J0ZWQsIGNvbW1hbmQg ZGlkbid0IHJ1bgorXGdldHJlc3VsdHMgMQorUGlwZWxpbmUgYWJvcnRlZCwgY29tbWFuZCBkaWRu J3QgcnVuCitcZ2V0cmVzdWx0cyAxCitcZW5kcGlwZWxpbmUKKy0tIFRlc3QgY2h1bmtlZCByZXN1 bHRzIHdpdGggYW4gYWJvcnRlZCBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK1xzZXQgRkVUQ0hf Q09VTlQgMTAKK1NFTEVDVCAkMSBcYmluZCBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMK K0VSUk9SOiAgYmluZCBtZXNzYWdlIHN1cHBsaWVzIDAgcGFyYW1ldGVycywgYnV0IHByZXBhcmVk IHN0YXRlbWVudCAiIiByZXF1aXJlcyAxCitTRUxFQ1QgJDEgXGJpbmQgXGcKK1xlbmRwaXBlbGlu ZQorZmV0Y2hpbmcgcmVzdWx0cyBpbiBjaHVua2VkIG1vZGUgZmFpbGVkCitQaXBlbGluZSBhYm9y dGVkLCBjb21tYW5kIGRpZG4ndCBydW4KK1x1bnNldCBGRVRDSF9DT1VOVAorLS0gXGdldHJlc3Vs dHMgcmV0dXJucyBhbiBlcnJvciB3aGVuIGFuIGluY29ycmVjdCBudW1iZXIgaXMgcHJvdmlkZWQK K1xzdGFydHBpcGVsaW5lCitcZ2V0cmVzdWx0cyAtMQorXGdldHJlc3VsdHM6IGludmFsaWQgbnVt YmVyIG9mIHJlcXVlc3RlZCByZXN1bHRzCitcZW5kcGlwZWxpbmUKKy0tIFxnZXRyZXN1bHRzIHdo ZW4gdGhlcmUncyBubyByZXN1bHQgc2hvdWxkbid0IGltcGFjdCB0aGUgZm9sbG93aW5nIHF1ZXJ5 CitcZ2V0cmVzdWx0cyAxCitObyBwZW5kaW5nIHJlc3VsdHMgdG8gZ2V0CitzZWxlY3QgMTsKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCistLSBwaXBlbGluaW5n IGFuZCB0cmFuc2FjdGlvbiBibG9jayBiZWhhdmlvdXIKKy0tIHNldCBsb2NhbCB3aWxsIGlzc3Vl IGEgd2FybmluZyB3aGVuIG1vZGlmeWluZyBhIEdVQyBvdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24g YmxvY2sKKy0tIFRoZSBjaGFuZ2Ugd2lsbCBzdGlsbCBiZSB2YWxpZCBhcyBhIHBpcGVsaW5lIHJ1 bnMgd2l0aGluIGFuIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2NrCistLSBTZW5kaW5nIGEgc3lu YyB3aWxsIGNvbW1pdCB0aGUgaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2suIFRoZSBmaXJzdCBj b21tYW5kIGFmdGVyIGEgc3luYworLS0gd29uJ3QgYmUgc2VlbiBhcyBiZWxvbmdpbmcgdG8gYSBw aXBlbGluZS4KK1xzdGFydHBpcGVsaW5lCitTRVQgTE9DQUwgc3RhdGVtZW50X3RpbWVvdXQ9JzFo JyBcYmluZCBcZworU0hPVyBzdGF0ZW1lbnRfdGltZW91dCBcYmluZCBcZworXHN5bmNwaXBlbGlu ZQorU0hPVyBzdGF0ZW1lbnRfdGltZW91dCBcYmluZCBcZworU0VUIExPQ0FMIHN0YXRlbWVudF90 aW1lb3V0PScyaCcgXGJpbmQgXGcKK1NIT1cgc3RhdGVtZW50X3RpbWVvdXQgXGJpbmQgXGcKK1xl bmRwaXBlbGluZQorV0FSTklORzogIFNFVCBMT0NBTCBjYW4gb25seSBiZSB1c2VkIGluIHRyYW5z YWN0aW9uIGJsb2NrcworIHN0YXRlbWVudF90aW1lb3V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLQor IDFoCisoMSByb3cpCisKKyBzdGF0ZW1lbnRfdGltZW91dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0K KyAwCisoMSByb3cpCisKKyBzdGF0ZW1lbnRfdGltZW91dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0K KyAyaAorKDEgcm93KQorCistLSBSZWluZGV4IGNvbmN1cnJlbnRseSBpcyBmb3JiaWRkZW4gaW4g dGhlIG1pZGRsZSBvZiBhIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5k IDEgXGcKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcK K1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyAxCisoMSByb3cpCisKK0VSUk9SOiAgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2Fubm90IHJ1 biBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jaworLS0gUmVpbmRleCBjb25jdXJyZW50bHkgd2ls bCB3b3JrIGlmIGl0J3MgdGhlIGZpcnN0IGNvbW1hbmQgb2YgYSBwaXBlbGluZQorXHN0YXJ0cGlw ZWxpbmUKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcK K1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyAyCisoMSByb3cpCisKKy0tIHN1YnRyYW5zYWN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g cGlwZWxpbmUgbW9kZQorXHN0YXJ0cGlwZWxpbmUKK1NBVkVQT0lOVCBhIFxiaW5kIFxnCitTRUxF Q1QgJDEgXGJpbmQgMSBcZworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGEgXGJpbmQgXGcKK1NFTEVD VCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKK0VSUk9SOiAgU0FWRVBPSU5UIGNhbiBvbmx5 IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzCistLSBMb2NrIGNvbW1hbmQgd2lsbCBmYWls IGFzIGZpcnN0IHBpcGVsaW5lIGNvbW1hbmQgaXMgbm90IHNlZW4gYXMgYSB0cmFuc2FjdGlvbiBi bG9jaworXHN0YXJ0cGlwZWxpbmUKK0xPQ0sgcHNxbF9waXBlbGluZSBcYmluZCBcZworU0VMRUNU ICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorRVJST1I6ICBMT0NLIFRBQkxFIGNhbiBvbmx5 IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzCistLSBMb2NrIGNvbW1hbmQgd2lsbCBzdWNj ZWVkIGFmdGVyIHRoZSBmaXJzdCBjb21tYW5kIGFzIHBpcGVsaW5lIHdpbGwgYmUgc2VlbiBhcyBh biBpbXBsaWNpdCB0cmFuc2FjdGlvbiBibG9jaworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBc YmluZCAxIFxnCitMT0NLIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAy IFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKKy0tIFZhY3V1bSBjb21tYW5k IHdpbGwgd29yayBhcyB0aGUgZmlyc3QgY29tbWFuZAorXHN0YXJ0cGlwZWxpbmUKK1ZBQ1VVTSBw c3FsX3BpcGVsaW5lIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKy0tIFZhY3V1bSBjb21tYW5kIHdp bGwgZmFpbCB3aXRoaW4gcGlwZWxpbmUgaW1wbGljaXQgdHJhbnNhY3Rpb24KK1xzdGFydHBpcGVs aW5lCitTRUxFQ1QgMSBcYmluZCBcZworVkFDVVVNIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcKK1xl bmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisK K0VSUk9SOiAgVkFDVVVNIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sKKy0t IFZhY3V1bSBjb21tYW5kIHdpbGwgd29yayBhZnRlciBhIHN5bmMKK1xzdGFydHBpcGVsaW5lCitT RUxFQ1QgMSBcYmluZCBcZworXHN5bmNwaXBlbGluZQorVkFDVVVNIHBzcWxfcGlwZWxpbmUgXGJp bmQgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAxCiso MSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKaW5kZXggYzUwMjFmYzBiMTMuLjMzYjIwNGVkZDdm IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wc3FsLnNxbApAQCAtMTkyOSwzICsxOTI5LDQwMiBAQCBDUkVBVEUgVEFC TEUgZGVmcHJpdnMgKGEgaW50KTsKIFx6IGRlZnByaXZzCiBccHNldCBudWxsICcnCiBEUk9QIFRB QkxFIGRlZnByaXZzOworCistLSBwaXBlbGluaW5nCitDUkVBVEUgVEFCTEUgcHNxbF9waXBlbGlu ZShhIElOVEVHRVIgUFJJTUFSWSBLRVksIHMgVEVYVCk7CisKKy0tIHNpbmdsZSBxdWVyeQorXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorCist LSBtdWx0aXBsZSBxdWVyaWVzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwx JyBcZworU0VMRUNUICQxLCAkMiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitTRUxFQ1QgJDEsICQy IFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1xlbmRwaXBlbGluZQorCistLSBUZXN0IFxmbHVzaAor XHN0YXJ0cGlwZWxpbmUKK1xmbHVzaAorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGZsdXNo CitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1NFTEVDVCAkMSwgJDIgXGJp bmQgJ3ZhbDInICd2YWwzJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIHNlbmQgbXVsdGlwbGUgc3lu Y3MKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcc3luY3BpcGVs aW5lCitcc3luY3BpcGVsaW5lCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcK K1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDQnICd2YWw1JyBcZworXGVu ZHBpcGVsaW5lCisKKy0tIHN0YXJ0cGlwZWxpbmUgc2hvdWxkbid0IGhhdmUgYW55IGVmZmVjdCBp ZiBhbHJlYWR5IGluIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQor U0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIENvbnZlcnQgYW4g aW1wbGljaXQgdHggYmxvY2sgdG8gYW4gZXhwbGljaXQgdHggYmxvY2sKK1xzdGFydHBpcGVsaW5l CitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5kIDEgXGcKK0JFR0lO IFxiaW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5kIDIg XGcKK1JPTExCQUNLIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKworLS0gTXVsdGlwbGUgZXhwbGlj aXQgdHJhbnNhY3Rpb25zCitcc3RhcnRwaXBlbGluZQorQkVHSU4gXGJpbmQgXGcKK0lOU0VSVCBJ TlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMSBcZworUk9MTEJBQ0sgXGJpbmQg XGcKK0JFR0lOIFxiaW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEp IFxiaW5kIDEgXGcKK0NPTU1JVCBcYmluZCBcZworXGVuZHBpcGVsaW5lCisKKy0tIENPUFkgRlJP TSBTVERJTgorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK0NPUFkg cHNxbF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKzIJdGVzdDIK K1wuCisKKy0tIENPUFkgRlJPTSBTVERJTiB3aXRoIFxmbHVzaHJlcXVlc3QgKyBcZ2V0cmVzdWx0 cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK0NPUFkgcHNxbF9w aXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cwor Mwl0ZXN0MworXC4KK1xlbmRwaXBlbGluZQorCistLSBDT1BZIEZST00gU1RESU4gd2l0aCBcc3lu Y3BpcGVsaW5lICsgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg J3ZhbDEnIFxnCitDT1BZIHBzcWxfcGlwZWxpbmUgRlJPTSBTVERJTiBcYmluZCBcZworXHN5bmNw aXBlbGluZQorXGdldHJlc3VsdHMKKzQJdGVzdDQKK1wuCitcZW5kcGlwZWxpbmUKKworLS0gQ09Q WSBUTyBTVERPVVQKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitj b3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKworLS0g Q09QWSBUTyBTVERPVVQgd2l0aCBcZmx1c2hyZXF1ZXN0ICsgXGdldHJlc3VsdHMKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitjb3B5IHBzcWxfcGlwZWxpbmUgVE8g U1RET1VUIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworXGVuZHBpcGVsaW5l CisKKy0tIENPUFkgVE8gU1RET1VUIHdpdGggXHN5bmNwaXBlbGluZSArIFxnZXRyZXN1bHRzCitc c3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworY29weSBwc3FsX3BpcGVs aW5lIFRPIFNURE9VVCBcYmluZCBcZworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMKK1xlbmRw aXBlbGluZQorCistLSBVc2UgXHBhcnNlIGFuZCBcYmluZF9uYW1lZAorXHN0YXJ0cGlwZWxpbmUK K1NFTEVDVCAkMSBccGFyc2UgJycKK1NFTEVDVCAkMSwgJDIgXHBhcnNlICcnCitTRUxFQ1QgJDIg XHBhcnNlIHBpcGVsaW5lXzEKK1xiaW5kX25hbWVkICcnIDEgMiBcZworXGJpbmRfbmFtZWQgcGlw ZWxpbmVfMSAyIFxnCitcZW5kcGlwZWxpbmUKKworLS0gXGdldHJlc3VsdHMgZGlzcGxheXMgYWxs IHJlc3VsdHMgcHJlY2VkaW5nIGEgXGZsdXNocmVxdWVzdAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVD VCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGZsdXNocmVxdWVzdAorXGdl dHJlc3VsdHMKK1xlbmRwaXBlbGluZQorCistLSBcZ2V0cmVzdWx0cyBkaXNwbGF5cyBhbGwgcmVz dWx0cyBwcmVjZWRpbmcgYSBzeW5jCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEg XGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworXGVu ZHBpcGVsaW5lCisKKy0tIFxnZXRyZXN1bHRzIGltbWVkaWF0ZWx5IHJldHVybnMgaWYgdGhlcmUn cyBubyByZXN1bHQgdG8gZmV0Y2gKK1xzdGFydHBpcGVsaW5lCitcZ2V0cmVzdWx0cworU0VMRUNU ICQxIFxiaW5kIDIgXGcKK1xnZXRyZXN1bHRzCitcZmx1c2hyZXF1ZXN0CitcZW5kcGlwZWxpbmUK K1xnZXRyZXN1bHRzCisKKy0tIFxnZXRyZXN1bHRzIG9ubHkgZmV0Y2ggcmVzdWx0cyBwcmVjZWRp bmcgYSBmbHVzaHJlcXVlc3QKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMiBcZwor XGZsdXNocmVxdWVzdAorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xnZXRyZXN1bHRzCitcZW5kcGlw ZWxpbmUKKworLS0gXGdldHJlc3VsdHMgb25seSBmZXRjaCByZXN1bHRzIHByZWNlZGluZyBhIHN5 bmMgbWVzc2FnZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3Bp cGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGdldHJlc3VsdHMKK1xlbmRwaXBlbGluZQor CistLSB1c2UgcGlwZWxpbmUgd2l0aCBjaHVua2VkIHJlc3VsdHMgd2l0aCBib3RoIFxnZXRyZXN1 bHRzIGFuZCBcZW5kcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc2V0IEZFVENIX0NPVU5UIDEw CitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKK1NFTEVD VCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKK1x1bnNldCBGRVRDSF9DT1VOVAorCistLSBc Z2V0cmVzdWx0cyB3aXRoIHNwZWNpZmljIG51bWJlciBvZiByZXF1ZXN0ZWQgcmVzdWx0cworXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZwor U0VMRUNUICQxIFxiaW5kIDMgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzIDEKK1NFTEVD VCAkMSBcYmluZCA0IFxnCitcZ2V0cmVzdWx0cyAzCitcZW5kcGlwZWxpbmUKKworLS0gXHN5bmNw aXBlbGluZSBjb3VudCBhcyBvbmUgY29tbWFuZCB0byBmZXRjaCBmb3IgXGdldHJlc3VsdHMKK1xz dGFydHBpcGVsaW5lCitcc3luY3BpcGVsaW5lCitcc3luY3BpcGVsaW5lCitTRUxFQ1QgJDEgXGJp bmQgMSBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMgMgorXGdldHJlc3VsdHMgMQorXGVu ZHBpcGVsaW5lCisKKy0tIFxnZXRyZXN1bHRzIDAgc2hvdWxkIGdldCBhbGwgcmVzdWx0cworXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZwor U0VMRUNUICQxIFxiaW5kIDMgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzIDAKK1xlbmRw aXBlbGluZQorCistLSBwaXBlbGluaW5nIGVycm9ycworCistLSBlbmRwaXBlbGluZSBvdXRzaWRl IG9mIHBpcGVsaW5lIHNob3VsZCBmYWlsCitcZW5kcGlwZWxpbmUKKworLS0gUXVlcnkgdXNpbmcg c2ltcGxlIHByb3RvY29sIHNob3VsZCBub3QgYmUgc2VudCBhbmQgc2hvdWxkIGxlYXZlIHRoZSBw aXBlbGluZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMTsKK1NFTEVDVCAkMSBcYmlu ZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorCistLSBBZnRlciBhbiBhYm9ydGVkIHBpcGVsaW5l LCBjb21tYW5kcyBhZnRlciBhIHN5bmMgc2hvdWxkIGJlIGRpc3BsYXllZAorXHN0YXJ0cGlwZWxp bmUKK1NFTEVDVCAkMSBcYmluZCBcZworXHN5bmNwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEg XGcKK1xlbmRwaXBlbGluZQorCistLSBJbmNvcnJlY3QgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIHRo ZSBwaXBlbGluZSB3aWxsIGJlIGFib3J0ZWQgYW5kIGZvbGxvd2luZyBxdWVyaWVzIHdvbid0IGJl IGV4ZWN1dGVkCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIFxiaW5kICd2YWwxJyBcZworU0VMRUNU ICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIEFuIGV4cGxpY2l0IHRyYW5z YWN0aW9uIHdpdGggYW4gZXJyb3IgbmVlZHMgdG8gYmUgcm9sbGJhY2tlZCBhZnRlciB0aGUgcGlw ZWxpbmUKK1xzdGFydHBpcGVsaW5lCitCRUdJTiBcYmluZCBcZworSU5TRVJUIElOVE8gcHNxbF9w aXBlbGluZSBWQUxVRVMgKCQxKSBcYmluZCAxIFxnCitST0xMQkFDSyBcYmluZCBcZworXGVuZHBp cGVsaW5lCitST0xMQkFDSzsKKworLS0gXHdhdGNoIHNlbmRzIGEgc2ltcGxlIHF1ZXJ5IHdoaWNo IHdvbid0IGJlIGFsbG93ZWQgd2l0aGluIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxF Q1QgXGJpbmQgXGcKK1x3YXRjaCAxCitcZW5kcGlwZWxpbmUKKworLS0gXGdkZXNjIHNob3VsZCBm YWlsIGFzIHN5bmNocm9ub3VzIGNvbW1hbmRzIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSwg cGlwZWxpbmUgc2hvdWxkIHN0aWxsIGJlIHVzYWJsZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAk MSBcYmluZCAxIFxnZGVzYworU0VMRUNUICQxIFxiaW5kIDEgXGcKK1xlbmRwaXBlbGluZQorCist LSBcZ3NldCBpcyBub3QgYWxsb3dlZCwgcGlwZWxpbmUgc2hvdWxkIHN0aWxsIGJlIHVzYWJsZQor XHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBhcyBpLCAkMiBhcyBqIFxwYXJzZSAnJworU0VMRUNU ICQxIGFzIGssICQyIGFzIGwgXHBhcnNlICdzZWNvbmQnCitcYmluZF9uYW1lZCAnJyAxIDIgXGdz ZXQKK1xiaW5kX25hbWVkIHNlY29uZCAxIDIgXGdzZXQgcHJlZjAyXyBcZWNobyA6cHJlZjAyX2kg OnByZWYwMl9qCitcYmluZF9uYW1lZCAnJyAxIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBcZ3gg aXMgbm90IGFsbG93ZWQsIHBpcGVsaW5lIHNob3VsZCBzdGlsbCBiZSB1c2FibGUKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZ3gKK1xyZXNldAorU0VMRUNUICQxIFxiaW5kIDEg XGcKK1xlbmRwaXBlbGluZQorCistLSBcZ3ggd2FybmluZyBzaG91bGQgYmUgZW1pdHRlZCBpbiBh biBhYm9ydGVkIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitc Zmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworU0VMRUNUICQxIFxiaW5kIDEgXGd4CitcZW5kcGlw ZWxpbmUKKworLS0gXGdleGVjIGlzIG5vdCBhbGxvd2VkLCBwaXBlbGluZSBzaG91bGQgc3RpbGwg YmUgdXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICdJTlNFUlQgSU5UTyBwc3FsX3BpcGVs aW5lKGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApJyBccGFyc2UgJ2luc2VydF9zdG10 JworXGJpbmRfbmFtZWQgaW5zZXJ0X3N0bXQgXGdleGVjCitcYmluZF9uYW1lZCBpbnNlcnRfc3Rt dCBcZworU0VMRUNUIENPVU5UKCopIEZST00gcHNxbF9waXBlbGluZSBcYmluZCBcZworXGVuZHBp cGVsaW5lCisKKy0tIEFmdGVyIGFuIGVycm9yLCBwaXBlbGluZSBpcyBhYm9ydGVkIGFuZCByZXF1 aXJlcyBhIHN5bmMgdG8gYmUgcmV1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJp bmQgXGcKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNlIGEKK1xiaW5kX25h bWVkIGEgMSBcZworXGNsb3NlIGEKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCistLSBQaXBl bGluZSBpcyBhYm9ydGVkCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxwYXJzZSBh CitcYmluZF9uYW1lZCBhIDEgXGcKK1xjbG9zZSBhCistLSBTeW5jIGFsbG93cyBwaXBlbGluZSB0 byByZWNvdmVyCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworU0VMRUNUICQxIFxiaW5kIDEg XGcKK1NFTEVDVCAkMSBccGFyc2UgYQorXGJpbmRfbmFtZWQgYSAxIFxnCitcY2xvc2UgYQorXGZs dXNocmVxdWVzdAorXGdldHJlc3VsdHMKK1xlbmRwaXBlbGluZQorCistLSBJbiBhbiBhYm9ydGVk IHBpcGVsaW5lLCBcZ2V0cmVzdWx0cyAxIGFib3J0ZWQgY29tbWFuZHMgb25lIGF0IGEgdGltZQor XHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDEgXGcK K1NFTEVDVCAkMSBccGFyc2UgYQorXGJpbmRfbmFtZWQgYSAxIFxnCitcc3luY3BpcGVsaW5lCitc Z2V0cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAx CitcZ2V0cmVzdWx0cyAxCitcZW5kcGlwZWxpbmUKKworLS0gVGVzdCBjaHVua2VkIHJlc3VsdHMg d2l0aCBhbiBhYm9ydGVkIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorXHNldCBGRVRDSF9DT1VO VCAxMAorU0VMRUNUICQxIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworU0VM RUNUICQxIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKK1x1bnNldCBGRVRDSF9DT1VOVAorCistLSBc Z2V0cmVzdWx0cyByZXR1cm5zIGFuIGVycm9yIHdoZW4gYW4gaW5jb3JyZWN0IG51bWJlciBpcyBw cm92aWRlZAorXHN0YXJ0cGlwZWxpbmUKK1xnZXRyZXN1bHRzIC0xCitcZW5kcGlwZWxpbmUKKwor LS0gXGdldHJlc3VsdHMgd2hlbiB0aGVyZSdzIG5vIHJlc3VsdCBzaG91bGRuJ3QgaW1wYWN0IHRo ZSBmb2xsb3dpbmcgcXVlcnkKK1xnZXRyZXN1bHRzIDEKK3NlbGVjdCAxOworCistLSBwaXBlbGlu aW5nIGFuZCB0cmFuc2FjdGlvbiBibG9jayBiZWhhdmlvdXIKKworLS0gc2V0IGxvY2FsIHdpbGwg aXNzdWUgYSB3YXJuaW5nIHdoZW4gbW9kaWZ5aW5nIGEgR1VDIG91dHNpZGUgb2YgYSB0cmFuc2Fj dGlvbiBibG9jaworLS0gVGhlIGNoYW5nZSB3aWxsIHN0aWxsIGJlIHZhbGlkIGFzIGEgcGlwZWxp bmUgcnVucyB3aXRoaW4gYW4gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2sKKy0tIFNlbmRpbmcg YSBzeW5jIHdpbGwgY29tbWl0IHRoZSBpbXBsaWNpdCB0cmFuc2FjdGlvbiBibG9jay4gVGhlIGZp cnN0IGNvbW1hbmQgYWZ0ZXIgYSBzeW5jCistLSB3b24ndCBiZSBzZWVuIGFzIGJlbG9uZ2luZyB0 byBhIHBpcGVsaW5lLgorXHN0YXJ0cGlwZWxpbmUKK1NFVCBMT0NBTCBzdGF0ZW1lbnRfdGltZW91 dD0nMWgnIFxiaW5kIFxnCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxiaW5kIFxnCitcc3luY3Bp cGVsaW5lCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxiaW5kIFxnCitTRVQgTE9DQUwgc3RhdGVt ZW50X3RpbWVvdXQ9JzJoJyBcYmluZCBcZworU0hPVyBzdGF0ZW1lbnRfdGltZW91dCBcYmluZCBc ZworXGVuZHBpcGVsaW5lCisKKy0tIFJlaW5kZXggY29uY3VycmVudGx5IGlzIGZvcmJpZGRlbiBp biB0aGUgbWlkZGxlIG9mIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJp bmQgMSBcZworUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcHNxbF9waXBlbGluZSBcYmluZCBc ZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBSZWluZGV4IGNvbmN1 cnJlbnRseSB3aWxsIHdvcmsgaWYgaXQncyB0aGUgZmlyc3QgY29tbWFuZCBvZiBhIHBpcGVsaW5l Citcc3RhcnRwaXBlbGluZQorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcHNxbF9waXBlbGlu ZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBzdWJ0 cmFuc2FjdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKK1xzdGFydHBpcGVs aW5lCitTQVZFUE9JTlQgYSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDEgXGcKK1JPTExCQUNL IFRPIFNBVkVQT0lOVCBhIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVs aW5lCisKKy0tIExvY2sgY29tbWFuZCB3aWxsIGZhaWwgYXMgZmlyc3QgcGlwZWxpbmUgY29tbWFu ZCBpcyBub3Qgc2VlbiBhcyBhIHRyYW5zYWN0aW9uIGJsb2NrCitcc3RhcnRwaXBlbGluZQorTE9D SyBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVs aW5lCisKKy0tIExvY2sgY29tbWFuZCB3aWxsIHN1Y2NlZWQgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1h bmQgYXMgcGlwZWxpbmUgd2lsbCBiZSBzZWVuIGFzIGFuIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJs b2NrCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK0xPQ0sgcHNxbF9waXBl bGluZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBW YWN1dW0gY29tbWFuZCB3aWxsIHdvcmsgYXMgdGhlIGZpcnN0IGNvbW1hbmQKK1xzdGFydHBpcGVs aW5lCitWQUNVVU0gcHNxbF9waXBlbGluZSBcYmluZCBcZworXGVuZHBpcGVsaW5lCisKKy0tIFZh Y3V1bSBjb21tYW5kIHdpbGwgZmFpbCB3aXRoaW4gcGlwZWxpbmUgaW1wbGljaXQgdHJhbnNhY3Rp b24KK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworVkFDVVVNIHBzcWxfcGlwZWxp bmUgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorCistLSBWYWN1dW0gY29tbWFuZCB3aWxsIHdvcmsg YWZ0ZXIgYSBzeW5jCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIDEgXGJpbmQgXGcKK1xzeW5jcGlw ZWxpbmUKK1ZBQ1VVTSBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKLS0gCjIu MzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000a360cf062ba6a24d--