Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTQxI-0003lA-GG for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Aug 2022 16:52:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oTQxG-0001sy-H0 for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Aug 2022 16:52:42 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTQxG-0001sB-2A for pgsql-hackers@lists.postgresql.org; Wed, 31 Aug 2022 16:52:42 +0000 Received: from mail-qt1-x832.google.com ([2607:f8b0:4864:20::832]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oTQx8-0005cd-CR for pgsql-hackers@lists.postgresql.org; Wed, 31 Aug 2022 16:52:41 +0000 Received: by mail-qt1-x832.google.com with SMTP id x5so11427596qtv.9 for ; Wed, 31 Aug 2022 09:52:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crunchydata.com; s=google; h=user-agent:mime-version:date:organization:cc:to:reply-to:from :subject:message-id:from:to:cc; bh=2pAX+++C+SnJzw4cWIpaI/DiGoHuGg6DH+ZFN3/PArw=; b=Qb6sI0+GLKfSNRcMfoRUNc0JnUyYZFtaBx/TgdxsrQuCNHcLGG4WAvEyLY7aC1JHS9 OWk8wqLcJnHW3nWT6SMex7yDu1eMyDekm6fmsHVN9Rc7oHjNSVqs3h2q73NxEw+sMwTs /BcYyehM2R6JAQz7lIc6TxZGTjfQq40LR669P9uaOMnLomn8fLtSYFnGwa70sOcLgN9q CeCjiszYP3IpO/yVmiueMnFW4NK0mmoQmTR67c52LWlUzmESbI28v/+bzhtoRK91JzKG kUATIRWcDlG1Zu/6N4PBwJRIeQ84cezN7tMiHEyUNYAzm5xHhbHDlaJ+IGiw0L9sj2Nj mbsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=user-agent:mime-version:date:organization:cc:to:reply-to:from :subject:message-id:x-gm-message-state:from:to:cc; bh=2pAX+++C+SnJzw4cWIpaI/DiGoHuGg6DH+ZFN3/PArw=; b=pGeISdw/op1O8ZNkW1QxFuliUEBnvBsWUz6a9+Q7rMCBiae4mER0wZsxBiGyqq1C0o sS8EHLaT8IFk6n8KmqxubQXjiyerhdG7GJghTmfn5vRb1bVqweF3qD0jbgJeySXP3f1v nGITlAZbbCr+IlbulV+YMSN62Px8jLHwrxU5DMoaOwXG2n8pmHaaOMpFv3+gyZHPO1Km VhlIk+uqzeD+pHJ2GIIsXZQ+KG/ysNR05NXzKMg1ajkl8pggXchC6l+uk6LU5aV8U5my ZgoQVvqlbg/qos8waWN6+OgqgoUS+Em0LYONHuPNJ7Xt7qprzsWkXj606Rt1CNm5+U66 ZUuA== X-Gm-Message-State: ACgBeo1mGFA8ba1n02sS9PjCDLq+7d1mnHNiVuzEft/0xHgYo4dUWw4Z YBFW65Yfh9xlUGLagG+3svu7At4Bgnl9Ng== X-Google-Smtp-Source: AA6agR5H6KkdV6B134YV0qEna6SRGLkK8ZaS6sNE/CkoerrK0/+s/7DzlX25OW0/HKeaa+4F3udoZw== X-Received: by 2002:a05:622a:53:b0:344:6f46:9b16 with SMTP id y19-20020a05622a005300b003446f469b16mr20309517qtw.664.1661964752300; Wed, 31 Aug 2022 09:52:32 -0700 (PDT) Received: from raker.lan ([98.97.181.172]) by smtp.gmail.com with ESMTPSA id h4-20020ac85044000000b00343028a9425sm8634262qtm.16.2022.08.31.09.52.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Aug 2022 09:52:31 -0700 (PDT) Message-ID: Subject: Add the ability to limit the amount of memory that can be allocated to backends. From: Reid Thompson Reply-To: reid.thompson@crunchydata.com To: pgsql-hackers Cc: reid.thompson@crunchydata.com Organization: Crunchy Data Content-Type: multipart/mixed; boundary="=-lAIuG5lps0q6tAuxJrwt" Date: Wed, 31 Aug 2022 12:50:19 -0400 MIME-Version: 1.0 User-Agent: Evolution 3.45.1 Compiled: 2022-06-07 10:22:05 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-lAIuG5lps0q6tAuxJrwt Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Hackers, Add the ability to limit the amount of memory that can be allocated to backends. This builds on the work that adds backend memory allocated to pg_stat_activity https://www.postgresql.org/message-id/67bb5c15c0489cb499723b0340f16e10c2248= 5ec.camel%40crunchydata.com Both patches are attached. Add GUC variable max_total_backend_memory. Specifies a limit to the amount of memory (MB) that may be allocated to backends in total (i.e. this is not a per user or per backend limit). If unset, or set to 0 it is disabled. It is intended as a resource to help avoid the OOM killer. A backend request that would push the total over the limit will be denied with an out of memory error causing that backends current query/transaction to fail. Due to the dynamic nature of memory allocations, this limit is not exact. If within 1.5MB of the limit and two backends request 1MB each at the same time both may be allocated exceeding the limit. Further requests will not be allocated until dropping below the limit. Keep this in mind when setting this value to avoid the OOM killer. Currently, this limit does not affect auxiliary backend processes, this list of non-affected backend processes is open for discussion as to what should/should not be included. Backend memory allocations are displayed in the pg_stat_activity view.=20 --=20 Reid Thompson Senior Software Engineer Crunchy Data, Inc. reid.thompson@crunchydata.com www.crunchydata.com --=-lAIuG5lps0q6tAuxJrwt Content-Disposition: attachment; filename="001-dev-max-memory.patch" Content-Type: text/x-patch; name="001-dev-max-memory.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCBhNWNkNGU0NGM3Li5jYWY5NTgzMTBhIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yMDc5 LDYgKzIwNzksMzIgQEAgaW5jbHVkZV9kaXIgJ2NvbmYuZCcKICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtdG90 YWwtYmFja2VuZC1tZW1vcnkiIHhyZWZsYWJlbD0ibWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5Ij4K KyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF90b3RhbF9iYWNrZW5kX21lbW9yeTwvdmFybmFtZT4g KDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFy eT48dmFybmFtZT5tYXhfdG90YWxfYmFja2VuZF9tZW1vcnk8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRp b24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNwZWNpZmllcyBhIGxp bWl0IHRvIHRoZSBhbW91bnQgb2YgbWVtb3J5IChNQikgdGhhdCBtYXkgYmUgYWxsb2NhdGVkIHRv CisgICAgICAgIGJhY2tlbmRzIGluIHRvdGFsIChpLmUuIHRoaXMgaXMgbm90IGEgcGVyIHVzZXIg b3IgcGVyIGJhY2tlbmQgbGltaXQpLgorICAgICAgICBJZiB1bnNldCwgb3Igc2V0IHRvIDAgaXQg aXMgZGlzYWJsZWQuICBBIGJhY2tlbmQgcmVxdWVzdCB0aGF0IHdvdWxkIHB1c2gKKyAgICAgICAg dGhlIHRvdGFsIG92ZXIgdGhlIGxpbWl0IHdpbGwgYmUgZGVuaWVkIHdpdGggYW4gb3V0IG9mIG1l bW9yeSBlcnJvcgorICAgICAgICBjYXVzaW5nIHRoYXQgYmFja2VuZHMgY3VycmVudCBxdWVyeS90 cmFuc2FjdGlvbiB0byBmYWlsLiBEdWUgdG8gdGhlIGR5bmFtaWMKKyAgICAgICAgbmF0dXJlIG9m IG1lbW9yeSBhbGxvY2F0aW9ucywgdGhpcyBsaW1pdCBpcyBub3QgZXhhY3QuIElmIHdpdGhpbiAx LjVNQiBvZgorICAgICAgICB0aGUgbGltaXQgYW5kIHR3byBiYWNrZW5kcyByZXF1ZXN0IDFNQiBl YWNoIGF0IHRoZSBzYW1lIHRpbWUgYm90aCBtYXkgYmUKKyAgICAgICAgYWxsb2NhdGVkIGV4Y2Vl ZGluZyB0aGUgbGltaXQuIEZ1cnRoZXIgcmVxdWVzdHMgd2lsbCBub3QgYmUgYWxsb2NhdGVkIHVu dGlsCisgICAgICAgIGRyb3BwaW5nIGJlbG93IHRoZSBsaW1pdC4gS2VlcCB0aGlzIGluIG1pbmQg d2hlbiBzZXR0aW5nIHRoaXMgdmFsdWUuIFRoaXMKKyAgICAgICAgbGltaXQgZG9lcyBub3QgYWZm ZWN0IGF1eGlsaWFyeSBiYWNrZW5kIHByb2Nlc3NlcworICAgICAgICA8eHJlZiBsaW5rZW5kPSJn bG9zc2FyeS1hdXhpbGlhcnktcHJvYyIvPiAuIEJhY2tlbmQgbWVtb3J5IGFsbG9jYXRpb25zCisg ICAgICAgICg8dmFybmFtZT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQ8L3Zhcm5hbWU+KSBhcmUgZGlz cGxheWVkIGluIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSJtb25pdG9yaW5nLXBnLXN0YXQt YWN0aXZpdHktdmlldyI+PHN0cnVjdG5hbWU+cGdfc3RhdF9hY3Rpdml0eTwvc3RydWN0bmFtZT48 L2xpbms+CisgICAgICAgIHZpZXcuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4K KyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvc2Vj dDI+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jCmluZGV4IDI2OWFkMmZlNTMuLjgwOGZm ZTc1ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYwpAQCAtMjUzLDYgKzI1MywxMCBA QCBkc21faW1wbF9wb3NpeChkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXplIHJlcXVl c3Rfc2l6ZSwKIAkJcmV0dXJuIHRydWU7CiAJfQogCisJLyogRG8gbm90IGV4Y2VlZCBtYXhpbXVt IGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwlpZiAob3AgPT0gRFNNX09QX0NSRUFURSAm JiBleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0ocmVxdWVzdF9zaXplKSkKKwkJcmV0dXJuIGZh bHNlOworCiAJLyoKIAkgKiBDcmVhdGUgbmV3IHNlZ21lbnQgb3Igb3BlbiBhbiBleGlzdGluZyBv bmUgZm9yIGF0dGFjaC4KIAkgKgpAQCAtNTI0LDYgKzUyOCwxMCBAQCBkc21faW1wbF9zeXN2KGRz bV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQlpbnQJCQlm bGFncyA9IElQQ1Byb3RlY3Rpb247CiAJCXNpemVfdAkJc2Vnc2l6ZTsKIAorCQkvKiBEbyBub3Qg ZXhjZWVkIG1heGltdW0gYWxsb3dlZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCQlpZiAob3AgPT0g RFNNX09QX0NSRUFURSAmJiBleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0ocmVxdWVzdF9zaXpl KSkKKwkJCXJldHVybiBmYWxzZTsKKwogCQkvKgogCQkgKiBBbGxvY2F0ZSB0aGUgbWVtb3J5IEJF Rk9SRSBhY3F1aXJpbmcgdGhlIHJlc291cmNlLCBzbyB0aGF0IHdlIGRvbid0CiAJCSAqIGxlYWsg dGhlIHJlc291cmNlIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLgpAQCAtNzE4LDYgKzcyNiwx MCBAQCBkc21faW1wbF93aW5kb3dzKGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUg cmVxdWVzdF9zaXplLAogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKKwkvKiBEbyBub3QgZXhjZWVkIG1h eGltdW0gYWxsb3dlZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JF QVRFICYmIGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShyZXF1ZXN0X3NpemUpKQorCQlyZXR1 cm4gZmFsc2U7CisKIAkvKiBDcmVhdGUgbmV3IHNlZ21lbnQgb3Igb3BlbiBhbiBleGlzdGluZyBv bmUgZm9yIGF0dGFjaC4gKi8KIAlpZiAob3AgPT0gRFNNX09QX0NSRUFURSkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwppbmRleCAxN2EwMDU4N2Y4Li45 MTM3YTAwMGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5k X3N0YXR1cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVz LmMKQEAgLTQ0LDYgKzQ0LDggQEAKICAqLwogYm9vbAkJcGdzdGF0X3RyYWNrX2FjdGl2aXRpZXMg PSBmYWxzZTsKIGludAkJCXBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplID0gMTAyNDsK Ky8qIE1heCBiYWNrZW5kIG1lbW9yeSBhbGxvY2F0aW9uIGFsbG93ZWQgKE1CKS4gMCA9IGRpc2Fi bGVkICovCitpbnQJCQltYXhfdG90YWxfYmtlbmRfbWVtID0gMDsKIAogCiAvKiBleHBvc2VkIHNv IHRoYXQgYmFja2VuZF9wcm9ncmVzcy5jIGNhbiBhY2Nlc3MgaXQgKi8KQEAgLTEyNTMsMyArMTI1 NSwxMDcgQEAgcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UodWlu dDY0IGRlYWxsb2NhdGlvbikKIAliZWVudHJ5LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQgLT0gZGVh bGxvY2F0aW9uOwogCVBHU1RBVF9FTkRfV1JJVEVfQUNUSVZJVFkoYmVlbnRyeSk7CiB9CisKKy8q IC0tLS0tLS0tLS0KKyAqIHBnc3RhdF9nZXRfYWxsX2JhY2tlbmRfbWVtb3J5X2FsbG9jYXRlZCgp IC0KKyAqCisgKglSZXR1cm4gYSB1aW50NjQgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHNoYXJl ZCBtZW1vcnkgYWxsb2NhdGVkIHRvIGFsbAorICoJYmFja2VuZHMuICBUaGlzIGxvb2tzIGRpcmVj dGx5IGF0IHRoZSBCYWNrZW5kU3RhdHVzQXJyYXksIGFuZCBzbyB3aWxsCisgKglwcm92aWRlIGN1 cnJlbnQgaW5mb3JtYXRpb24gcmVnYXJkbGVzcyBvZiB0aGUgYWdlIG9mIG91ciB0cmFuc2FjdGlv bidzCisgKglzbmFwc2hvdCBvZiB0aGUgc3RhdHVzIGFycmF5LgorICoJSW4gdGhlIGZ1dHVyZSB3 ZSB3aWxsIGxpa2VseSB1dGlsaXplIGFkZGl0aW9uYWwgdmFsdWVzIC0gcGVyaGFwcyBsaW1pdAor ICoJYmFja2VuZCBhbGxvY2F0aW9uIGJ5IHVzZXIvcm9sZSwgZXRjLgorICogLS0tLS0tLS0tLQor ICovCit1aW50NjQKK3Bnc3RhdF9nZXRfYWxsX2JhY2tlbmRfbWVtb3J5X2FsbG9jYXRlZCh2b2lk KQoreworCVBnQmFja2VuZFN0YXR1cyAqYmVlbnRyeTsKKwlpbnQJCQlpOworCXVpbnQ2NAkJYWxs X2JhY2tlbmRfbWVtb3J5X2FsbG9jYXRlZCA9IDA7CisKKwliZWVudHJ5ID0gQmFja2VuZFN0YXR1 c0FycmF5OworCisJLyoKKwkgKiBXZSBwcm9iYWJseSBzaG91bGRuJ3QgZ2V0IGhlcmUgYmVmb3Jl IHNoYXJlZCBtZW1vcnkgaGFzIGJlZW4gc2V0IHVwLAorCSAqIGJ1dCBiZSBzYWZlLgorCSAqLwor CWlmIChiZWVudHJ5ID09IE5VTEwgfHwgQmFja2VuZEFjdGl2aXR5QnVmZmVyID09IE5VTEwpCisJ CXJldHVybiAwOworCisJLyoKKwkgKiBXZSBpbmNsdWRlIEFVWCBwcm9jcyBpbiBhbGwgYmFja2Vu ZCBtZW1vcnkgY2FsY3VsYXRpb24KKwkgKi8KKwlmb3IgKGkgPSAxOyBpIDw9IE51bUJhY2tlbmRT dGF0U2xvdHM7IGkrKykKKwl7CisJCS8qCisJCSAqIFdlIHVzZSBhIHZvbGF0aWxlIHBvaW50ZXIg aGVyZSB0byBlbnN1cmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgdHJ5IHRvCisJCSAqIGdldCBjdXRl LgorCQkgKi8KKwkJdm9sYXRpbGUgUGdCYWNrZW5kU3RhdHVzICp2YmVlbnRyeSA9IGJlZW50cnk7 CisJCWJvb2wJCWZvdW5kOworCQl1aW50NjQJCWJhY2tlbmRfbWVtX2FsbG9jYXRlZCA9IDA7CisK KwkJZm9yICg7OykKKwkJeworCQkJaW50CQkJYmVmb3JlX2NoYW5nZWNvdW50OworCQkJaW50CQkJ YWZ0ZXJfY2hhbmdlY291bnQ7CisKKwkJCXBnc3RhdF9iZWdpbl9yZWFkX2FjdGl2aXR5KHZiZWVu dHJ5LCBiZWZvcmVfY2hhbmdlY291bnQpOworCisJCQkvKiBJZ25vcmUgaW52YWxpZCBlbnRyaWVz LCB3aGljaCBtYXkgY29udGFpbiBpbnZhbGlkIGRhdGEuCisJCQkgKiBTZWUgcGdzdGF0X2Jlc2h1 dGRvd25faG9vaygpCisJCQkgKi8KKwkJCWlmICh2YmVlbnRyeS0+c3RfcHJvY3BpZCA+IDApCisJ CQkJYmFja2VuZF9tZW1fYWxsb2NhdGVkID0gdmJlZW50cnktPmJhY2tlbmRfbWVtX2FsbG9jYXRl ZDsKKworCQkJcGdzdGF0X2VuZF9yZWFkX2FjdGl2aXR5KHZiZWVudHJ5LCBhZnRlcl9jaGFuZ2Vj b3VudCk7CisKKwkJCWlmICgoZm91bmQgPSBwZ3N0YXRfcmVhZF9hY3Rpdml0eV9jb21wbGV0ZShi ZWZvcmVfY2hhbmdlY291bnQsCisJCQkJCQkJCQkJCQkJICAgYWZ0ZXJfY2hhbmdlY291bnQpKSkK KwkJCQlicmVhazsKKworCQkJLyogTWFrZSBzdXJlIHdlIGNhbiBicmVhayBvdXQgb2YgbG9vcCBp ZiBzdHVjay4uLiAqLworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQorCisJCWlmIChm b3VuZCkKKwkJCWFsbF9iYWNrZW5kX21lbW9yeV9hbGxvY2F0ZWQgKz0gYmFja2VuZF9tZW1fYWxs b2NhdGVkOworCisJCWJlZW50cnkrKzsKKwl9CisKKwlyZXR1cm4gYWxsX2JhY2tlbmRfbWVtb3J5 X2FsbG9jYXRlZDsKK30KKworLyoKKyAqIERldGVybWluZSBpZiBhbGxvY2F0aW9uIHJlcXVlc3Qg d2lsbCBleGNlZWQgbWF4IGJhY2tlbmQgbWVtb3J5IGFsbG93ZWQuCisgKiBEbyBub3QgYXBwbHkg dG8gYXV4aWxpYXJ5IHByb2Nlc3Nlcy4KKyAqLworYm9vbAorZXhjZWVkc19tYXhfdG90YWxfYmtl bmRfbWVtKHVpbnQ2NCBhbGxvY2F0aW9uX3JlcXVlc3QpCit7CisJYm9vbCByZXN1bHQgPSBmYWxz ZTsKKworCWlmIChNeUF1eFByb2NUeXBlICE9IE5vdEFuQXV4UHJvY2VzcykKKwkJcmV0dXJuIHJl c3VsdDsKKworCS8qIENvbnZlcnQgbWF4X3RvdGFsX2JrZW5kX21lbSB0byBieXRlcyBmb3IgY29t cGFyaXNvbiAqLworCWlmIChtYXhfdG90YWxfYmtlbmRfbWVtICYmCisJCXBnc3RhdF9nZXRfYWxs X2JhY2tlbmRfbWVtb3J5X2FsbG9jYXRlZCgpICsKKwkJYWxsb2NhdGlvbl9yZXF1ZXN0ID4gKHVp bnQ2NCltYXhfdG90YWxfYmtlbmRfbWVtICogMTAyNCAqIDEwMjQpCisJeworCQkvKgorCQkgKiBF eHBsaWNpdGVseSBpZGVudGlmeSB0aGUgT09NIGJlaW5nIGEgcmVzdWx0IG9mIHRoaXMKKwkJICog Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdnMgYSBzeXN0ZW0gZmFpbHVyZSB0byBhbGxvY2F0ZSBP T00uCisJCSAqLworCQllbG9nKFdBUk5JTkcsCisJCQkgInJlcXVlc3Qgd2lsbCBleGNlZWQgcG9z dGdyZXNxbC5jb25mIGRlZmluZWQgbWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5IGxpbWl0ICglbHUg PiAlbHUpIiwKKwkJCSBwZ3N0YXRfZ2V0X2FsbF9iYWNrZW5kX21lbW9yeV9hbGxvY2F0ZWQoKSAr CisJCQkgYWxsb2NhdGlvbl9yZXF1ZXN0LCAodWludDY0KW1heF90b3RhbF9ia2VuZF9tZW0gKiAx MDI0ICogMTAyNCk7CisKKwkJcmVzdWx0ID0gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0Owor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggOWZiYmZiMWJlNS4uYWI4ZDgzYzIzNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Yy5jCkBAIC0zNjY0LDYgKzM2NjQsMTcgQEAgc3RhdGljIHN0cnVjdCBjb25maWdfaW50 IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJ eyJtYXhfdG90YWxfYmFja2VuZF9tZW1vcnkiLCBQR0NfU0lHSFVQLCBSRVNPVVJDRVNfTUVNLAor CQkJZ2V0dGV4dF9ub29wKCJSZXN0cmljdCB0b3RhbCBiYWNrZW5kIG1lbW9yeSBhbGxvY2F0aW9u cyB0byB0aGlzIG1heC4iKSwKKwkJCWdldHRleHRfbm9vcCgiMCB0dXJucyB0aGlzIGZlYXR1cmUg b2ZmLiIpLAorCQkJR1VDX1VOSVRfTUIKKwkJfSwKKwkJJm1heF90b3RhbF9ia2VuZF9tZW0sCisJ CTAsIDAsIElOVF9NQVgsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJLyogRW5kLW9mLWxp c3QgbWFya2VyICovCiAJewogCQl7TlVMTCwgMCwgMCwgTlVMTCwgTlVMTH0sIE5VTEwsIDAsIDAs IDAsIE5VTEwsIE5VTEwsIE5VTEwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZQppbmRleCA5MGJlYzA1MDJjLi44ZTk0NGY2NTExIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0xNTUsNiArMTU1LDkg QEAKIAkJCQkJIyAgIG1tYXAKIAkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjbWlu X2R5bmFtaWNfc2hhcmVkX21lbW9yeSA9IDBNQgkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkK KyNtYXhfdG90YWxfYmFja2VuZF9tZW1vcnkgPSAwTUIJCSMgUmVzdHJpY3QgdG90YWwgYmFja2Vu ZCBtZW1vcnkgYWxsb2NhdGlvbnMKKwkJCQkJCQkJCSMgdG8gdGhpcyBtYXggKGluIE1CKS4gMCB0 dXJucyB0aGlzIGZlYXR1cmUKKwkJCQkJCQkJCSMgb2ZmLgogCiAjIC0gRGlzayAtCiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9hc2V0LmMKaW5kZXggYzkxZjhlZmE0ZC4uYWM5YTFjZWQzZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9h c2V0LmMKQEAgLTQyOCw2ICs0MjgsMTAgQEAgQWxsb2NTZXRDb250ZXh0Q3JlYXRlSW50ZXJuYWwo TWVtb3J5Q29udGV4dCBwYXJlbnQsCiAJZWxzZQogCQlmaXJzdEJsb2NrU2l6ZSA9IE1heChmaXJz dEJsb2NrU2l6ZSwgaW5pdEJsb2NrU2l6ZSk7CiAKKwkvKiBEbyBub3QgZXhjZWVkIG1heGltdW0g YWxsb3dlZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCWlmIChleGNlZWRzX21heF90b3RhbF9ia2Vu ZF9tZW0oZmlyc3RCbG9ja1NpemUpKQorCQlyZXR1cm4gTlVMTDsKKwogCS8qCiAJICogQWxsb2Nh dGUgdGhlIGluaXRpYWwgYmxvY2suICBVbmxpa2Ugb3RoZXIgYXNldC5jIGJsb2NrcywgaXQgc3Rh cnRzIHdpdGgKIAkgKiB0aGUgY29udGV4dCBoZWFkZXIgYW5kIGl0cyBibG9jayBoZWFkZXIgZm9s bG93cyB0aGF0LgpAQCAtNzIwLDYgKzcyNCwxMSBAQCBBbGxvY1NldEFsbG9jKE1lbW9yeUNvbnRl eHQgY29udGV4dCwgU2l6ZSBzaXplKQogCXsKIAkJY2h1bmtfc2l6ZSA9IE1BWEFMSUdOKHNpemUp OwogCQlibGtzaXplID0gY2h1bmtfc2l6ZSArIEFMTE9DX0JMT0NLSERSU1ogKyBBTExPQ19DSFVO S0hEUlNaOworCisJCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxv Y2F0aW9uICovCisJCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0oYmxrc2l6ZSkpCisJ CQlyZXR1cm4gTlVMTDsKKwogCQlibG9jayA9IChBbGxvY0Jsb2NrKSBtYWxsb2MoYmxrc2l6ZSk7 CiAJCWlmIChibG9jayA9PSBOVUxMKQogCQkJcmV0dXJuIE5VTEw7CkBAIC05MTEsNiArOTIwLDEw IEBAIEFsbG9jU2V0QWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCXdo aWxlIChibGtzaXplIDwgcmVxdWlyZWRfc2l6ZSkKIAkJCWJsa3NpemUgPDw9IDE7CiAKKwkJLyog RG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYg KGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShibGtzaXplKSkKKwkJCXJldHVybiBOVUxMOwor CiAJCS8qIFRyeSB0byBhbGxvY2F0ZSBpdCAqLwogCQlibG9jayA9IChBbGxvY0Jsb2NrKSBtYWxs b2MoYmxrc2l6ZSk7CiAKQEAgLTExMzMsNiArMTE0NiwxMCBAQCBBbGxvY1NldFJlYWxsb2Modm9p ZCAqcG9pbnRlciwgU2l6ZSBzaXplKQogCQlibGtzaXplID0gY2hrc2l6ZSArIEFMTE9DX0JMT0NL SERSU1ogKyBBTExPQ19DSFVOS0hEUlNaOwogCQlvbGRibGtzaXplID0gYmxvY2stPmVuZHB0ciAt ICgoY2hhciAqKSBibG9jayk7CiAKKwkJLyogRG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93ZWQg bWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYgKGJsa3NpemUgPiBvbGRibGtzaXplICYmIGV4Y2Vl ZHNfbWF4X3RvdGFsX2JrZW5kX21lbShibGtzaXplIC0gb2xkYmxrc2l6ZSkpCisJCQlyZXR1cm4g TlVMTDsKKwogCQlibG9jayA9IChBbGxvY0Jsb2NrKSByZWFsbG9jKGJsb2NrLCBibGtzaXplKTsK IAkJaWYgKGJsb2NrID09IE5VTEwpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvZ2VuZXJhdGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMK aW5kZXggMzZlNWIzZjk0ZC4uMWQ1NzIwODM2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9nZW5lcmF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0 aW9uLmMKQEAgLTE5Miw2ICsxOTIsOSBAQCBHZW5lcmF0aW9uQ29udGV4dENyZWF0ZShNZW1vcnlD b250ZXh0IHBhcmVudCwKIAllbHNlCiAJCWFsbG9jU2l6ZSA9IE1heChhbGxvY1NpemUsIGluaXRC bG9ja1NpemUpOwogCisJaWYgKGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShhbGxvY1NpemUp KQorCQlyZXR1cm4gTlVMTDsKKwogCS8qCiAJICogQWxsb2NhdGUgdGhlIGluaXRpYWwgYmxvY2su ICBVbmxpa2Ugb3RoZXIgZ2VuZXJhdGlvbi5jIGJsb2NrcywgaXQKIAkgKiBzdGFydHMgd2l0aCB0 aGUgY29udGV4dCBoZWFkZXIgYW5kIGl0cyBibG9jayBoZWFkZXIgZm9sbG93cyB0aGF0LgpAQCAt MzYxLDYgKzM2NCw5IEBAIEdlbmVyYXRpb25BbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNp emUgc2l6ZSkKIAl7CiAJCVNpemUJCWJsa3NpemUgPSByZXF1aXJlZF9zaXplICsgR2VuZXJhdGlv bl9CTE9DS0hEUlNaOwogCisJCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0oYmxrc2l6 ZSkpCisJCQlyZXR1cm4gTlVMTDsKKwogCQlibG9jayA9IChHZW5lcmF0aW9uQmxvY2sgKikgbWFs bG9jKGJsa3NpemUpOwogCQlpZiAoYmxvY2sgPT0gTlVMTCkKIAkJCXJldHVybiBOVUxMOwpAQCAt NDY0LDYgKzQ3MCw5IEBAIEdlbmVyYXRpb25BbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNp emUgc2l6ZSkKIAkJCWlmIChibGtzaXplIDwgcmVxdWlyZWRfc2l6ZSkKIAkJCQlibGtzaXplID0g cGdfbmV4dHBvd2VyMl9zaXplX3QocmVxdWlyZWRfc2l6ZSk7CiAKKwkJCWlmIChleGNlZWRzX21h eF90b3RhbF9ia2VuZF9tZW0oYmxrc2l6ZSkpCisJCQkJcmV0dXJuIE5VTEw7CisKIAkJCWJsb2Nr ID0gKEdlbmVyYXRpb25CbG9jayAqKSBtYWxsb2MoYmxrc2l6ZSk7CiAKIAkJCWlmIChibG9jayA9 PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMgYi9zcmMv YmFja2VuZC91dGlscy9tbWdyL3NsYWIuYwppbmRleCBlZmM4YmNmYWE3Li41Y2YwY2ZmZjg2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9tbWdyL3NsYWIuYwpAQCAtMTc3LDYgKzE3NywxMCBAQCBTbGFiQ29udGV4dENyZWF0 ZShNZW1vcnlDb250ZXh0IHBhcmVudCwKIAloZWFkZXJTaXplICs9IGNodW5rc1BlckJsb2NrICog c2l6ZW9mKGJvb2wpOwogI2VuZGlmCiAKKwkvKiBEbyBub3QgZXhjZWVkIG1heGltdW0gYWxsb3dl ZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0o aGVhZGVyU2l6ZSkpCisJCXJldHVybiBOVUxMOworCiAJc2xhYiA9IChTbGFiQ29udGV4dCAqKSBt YWxsb2MoaGVhZGVyU2l6ZSk7CiAJaWYgKHNsYWIgPT0gTlVMTCkKIAl7CkBAIC0zMzEsNiArMzM1 LDEwIEBAIFNsYWJBbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSkKIAkgKi8K IAlpZiAoc2xhYi0+bWluRnJlZUNodW5rcyA9PSAwKQogCXsKKwkJLyogRG8gbm90IGV4Y2VlZCBt YXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYgKGV4Y2VlZHNfbWF4X3Rv dGFsX2JrZW5kX21lbShzbGFiLT5ibG9ja1NpemUpKQorCQkJcmV0dXJuIE5VTEw7CisKIAkJYmxv Y2sgPSAoU2xhYkJsb2NrICopIG1hbGxvYyhzbGFiLT5ibG9ja1NpemUpOwogCiAJCWlmIChibG9j ayA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKaW5kZXggOWJkYzQxOTdiZC4u M2I5NDBmZjk4ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCkBAIC0yNzAsNiArMjcw LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9jYWxQZ0JhY2tlbmRTdGF0dXMKICAqLwogZXh0ZXJuIFBH RExMSU1QT1JUIGJvb2wgcGdzdGF0X3RyYWNrX2FjdGl2aXRpZXM7CiBleHRlcm4gUEdETExJTVBP UlQgaW50IHBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplOworZXh0ZXJuIFBHRExMSU1Q T1JUIGludCBtYXhfdG90YWxfYmtlbmRfbWVtOwogCiAKIC8qIC0tLS0tLS0tLS0KQEAgLTMyMSw2 ICszMjIsNyBAQCBleHRlcm4gaW50CXBnc3RhdF9mZXRjaF9zdGF0X251bWJhY2tlbmRzKHZvaWQp OwogZXh0ZXJuIFBnQmFja2VuZFN0YXR1cyAqcGdzdGF0X2ZldGNoX3N0YXRfYmVlbnRyeShpbnQg YmVpZCk7CiBleHRlcm4gTG9jYWxQZ0JhY2tlbmRTdGF0dXMgKnBnc3RhdF9mZXRjaF9zdGF0X2xv Y2FsX2JlZW50cnkoaW50IGJlaWQpOwogZXh0ZXJuIGNoYXIgKnBnc3RhdF9jbGlwX2FjdGl2aXR5 KGNvbnN0IGNoYXIgKnJhd19hY3Rpdml0eSk7CitleHRlcm4gYm9vbCBleGNlZWRzX21heF90b3Rh bF9ia2VuZF9tZW0odWludDY0IGFsbG9jYXRpb25fcmVxdWVzdCk7CiAKIAogI2VuZGlmCQkJCQkJ CS8qIEJBQ0tFTkRfU1RBVFVTX0ggKi8K --=-lAIuG5lps0q6tAuxJrwt Content-Disposition: attachment; filename="001-pg-stat-activity-backend-memory-allocated.patch" Content-Type: text/x-patch; name="001-pg-stat-activity-backend-memory-allocated.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCmluZGV4IDFkOTUwOWEyZjYuLjQwYWU2MzhmMjUgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jp bmcuc2dtbApAQCAtOTQ3LDYgKzk0NywxOCBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAg MzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICA8L3Jvdz4KIAorICAgIDxyb3c+CisgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICA8c3RydWN0ZmllbGQ+YmFja2VuZF9tZW1fYWxsb2NhdGVkPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+YmlnaW50PC90eXBlPgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhl IGJ5dGUgY291bnQgb2YgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGlzIGJhY2tlbmQuIER5bmFtaWMg c2hhcmVkIG1lbW9yeQorICAgICAgYWxsb2NhdGlvbnMgYXJlIGluY2x1ZGVkIG9ubHkgaW4gdGhl IHZhbHVlIGRpc3BsYXllZCBmb3IgdGhlIGJhY2tlbmQgdGhhdAorICAgICAgY3JlYXRlZCB0aGVt LCB0aGV5IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHZhbHVlIGZvciBiYWNrZW5kcyB0aGF0IGFy ZQorICAgICAgYXR0YWNoZWQgdG8gdGhlbSB0byBhdm9pZCBkb3VibGUgY291bnRpbmcuCisgICAg IDwvcGFyYT48L2VudHJ5PgorICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgogICAgICAgIDxzdHJ1Y3RmaWVsZD5xdWVyeTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5 cGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggNWE4NDRiNjNhMS4uZDIz ZjBlOWRiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtODYzLDYgKzg2 Myw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfYWN0aXZpdHkgQVMKICAgICAgICAgICAgIFMuYmFj a2VuZF94aWQsCiAgICAgICAgICAgICBzLmJhY2tlbmRfeG1pbiwKICAgICAgICAgICAgIFMucXVl cnlfaWQsCisgICAgICAgICAgICBTLmJhY2tlbmRfbWVtX2FsbG9jYXRlZCwKICAgICAgICAgICAg IFMucXVlcnksCiAgICAgICAgICAgICBTLmJhY2tlbmRfdHlwZQogICAgIEZST00gcGdfc3RhdF9n ZXRfYWN0aXZpdHkoTlVMTCkgQVMgUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvZHNtX2ltcGwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKaW5kZXgg ZTFiOTBjNWRlNC4uMjY5YWQyZmU1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvZHNtX2ltcGwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jCkBA IC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9kc21faW1wbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNs dWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKQEAgLTIzMiw2ICsyMzMsMTMgQEAgZHNtX2ltcGxf cG9zaXgoZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJ CQkJCQkJbmFtZSkpKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQorCQkvKgorCQkgKiBEZXRhY2gg YW5kIGRlc3Ryb3kgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhlIG1lbW9yeQor CQkgKiBzaG93biBhbGxvY2F0ZWQgaW4gcGdzdGF0X2FjdGl2aXR5IHdoZW4gdGhlIGNyZWF0b3Ig ZGVzdHJveXMgdGhlCisJCSAqIGFsbG9jYXRpb24uCisJCSAqLworCQlpZiAob3AgPT0gRFNNX09Q X0RFU1RST1kpCisJCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFz ZSgqbWFwcGVkX3NpemUpOwogCQkqbWFwcGVkX2FkZHJlc3MgPSBOVUxMOwogCQkqbWFwcGVkX3Np emUgPSAwOwogCQlpZiAob3AgPT0gRFNNX09QX0RFU1RST1kgJiYgc2htX3VubGluayhuYW1lKSAh PSAwKQpAQCAtMzMyLDYgKzM0MCwzNiBAQCBkc21faW1wbF9wb3NpeChkc21fb3Agb3AsIGRzbV9o YW5kbGUgaGFuZGxlLCBTaXplIHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCW5hbWUpKSk7CiAJCXJldHVy biBmYWxzZTsKIAl9CisKKwkvKgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBo ZXJlLCBvbmx5IHVwZGF0ZSBiYWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ3N0YXRf YWN0aXZpdHkgZm9yIHRoZSBjcmVhdG9yIHByb2Nlc3MuCisJICovCisJaWYgKG9wID09IERTTV9P UF9DUkVBVEUpCisJeworCQkvKgorCQkgKiBQb3NpeCBjcmVhdGlvbiBjYWxscyBkc21faW1wbF9w b3NpeF9yZXNpemUgaW1wbHlpbmcgdGhhdCByZXNpemluZworCQkgKiBvY2N1cnMgb3IgbWF5IGJl IGFkZGVkIGluIHRoZSBmdXR1cmUuIEFzIGltcGxlbWVudGVkCisJCSAqIGRzbV9pbXBsX3Bvc2l4 X3Jlc2l6ZSB1dGlsaXplcyBmYWxsb2NhdGUgb3IgdHJ1bmNhdGUsIHBhc3NpbmcgdGhlCisJCSAq IHdob2xlIG5ldyBzaXplIGFzIGlucHV0LCBncm93aW5nIHRoZSBhbGxvY2F0aW9uIGFzIG5lZWRl ZCAqIChvbmx5CisJCSAqIHRydW5jYXRlIHN1cHBvcnRzIHNocmlua2luZykuIFdlIHVwZGF0ZSBi eSByZXBsYWNpbmcgdGhlICogb2xkCisJCSAqIGFsbG9jYXRpb24gd2l0aCB0aGUgbmV3LgorCQkg Ki8KKyNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFMTE9DQVRFKSAmJiBkZWZpbmVkKF9fbGludXhf XykKKwkJLyoKKwkJICogcG9zaXhfZmFsbG9jYXRlIGRvZXMgbm90IHNocmluayBhbGxvY2F0aW9u cywgYWRqdXN0IG9ubHkgb24KKwkJICogYWxsb2NhdGlvbiBpbmNyZWFzZS4KKwkJICovCisJCWlm IChyZXF1ZXN0X3NpemUgPiAqbWFwcGVkX3NpemUpCisJCXsKKwkJCXBnc3RhdF9yZXBvcnRfYmFj a2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKCptYXBwZWRfc2l6ZSk7CisJCQlwZ3N0YXRfcmVw b3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShyZXF1ZXN0X3NpemUpOworCQl9Cisj ZWxzZQorCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFzZSgqbWFw cGVkX3NpemUpOworCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFz ZShyZXF1ZXN0X3NpemUpOworI2VuZGlmCisJfQogCSptYXBwZWRfYWRkcmVzcyA9IGFkZHJlc3M7 CiAJKm1hcHBlZF9zaXplID0gcmVxdWVzdF9zaXplOwogCWNsb3NlKGZkKTsKQEAgLTUzNyw2ICs1 NzUsMTQgQEAgZHNtX2ltcGxfc3lzdihkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXpl IHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCQluYW1lKSkpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CisK KwkJLyoKKwkJICogRGV0YWNoIGFuZCBkZXN0cm95IHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5IGRl Y3JlYXNlIHRoZSBtZW1vcnkKKwkJICogc2hvd24gYWxsb2NhdGVkIGluIHBnc3RhdF9hY3Rpdml0 eSB3aGVuIHRoZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkgKiBhbGxvY2F0aW9uLgorCQkgKi8K KwkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9ZKQorCQkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21l bV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9zaXplKTsKIAkJKm1hcHBlZF9hZGRyZXNzID0g TlVMTDsKIAkJKm1hcHBlZF9zaXplID0gMDsKIAkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9ZICYm IHNobWN0bChpZGVudCwgSVBDX1JNSUQsIE5VTEwpIDwgMCkKQEAgLTU4NCw2ICs2MzAsMTMgQEAg ZHNtX2ltcGxfc3lzdihkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXplIHJlcXVlc3Rf c2l6ZSwKIAkJCQkJCW5hbWUpKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CisKKwkvKgorCSAqIEF0 dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5IHVwZGF0ZSBiYWNrZW5kIG1l bW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ3N0YXRfYWN0aXZpdHkgZm9yIHRoZSBjcmVhdG9yIHBy b2Nlc3MuCisJICovCisJaWYgKG9wID09IERTTV9PUF9DUkVBVEUpCisJCXBnc3RhdF9yZXBvcnRf YmFja2VuZF9tZW1fYWxsb2NhdGVkX2luY3JlYXNlKHJlcXVlc3Rfc2l6ZSk7CiAJKm1hcHBlZF9h ZGRyZXNzID0gYWRkcmVzczsKIAkqbWFwcGVkX3NpemUgPSByZXF1ZXN0X3NpemU7CiAKQEAgLTY1 Miw2ICs3MDUsMTMgQEAgZHNtX2ltcGxfd2luZG93cyhkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFu ZGxlLCBTaXplIHJlcXVlc3Rfc2l6ZSwKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCisJCS8qCisJ CSAqIERldGFjaCBhbmQgZGVzdHJveSBwYXNzIHRocm91Z2ggaGVyZSwgb25seSBkZWNyZWFzZSB0 aGUgbWVtb3J5CisJCSAqIHNob3duIGFsbG9jYXRlZCBpbiBwZ3N0YXRfYWN0aXZpdHkgd2hlbiB0 aGUgY3JlYXRvciBkZXN0cm95cyB0aGUKKwkJICogYWxsb2NhdGlvbi4KKwkJICovCisJCWlmIChv cCA9PSBEU01fT1BfREVTVFJPWSkKKwkJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2Nh dGVkX2RlY3JlYXNlKCptYXBwZWRfc2l6ZSk7CiAJCSppbXBsX3ByaXZhdGUgPSBOVUxMOwogCQkq bWFwcGVkX2FkZHJlc3MgPSBOVUxMOwogCQkqbWFwcGVkX3NpemUgPSAwOwpAQCAtNzY4LDYgKzgy OCwxMiBAQCBkc21faW1wbF93aW5kb3dzKGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNp emUgcmVxdWVzdF9zaXplLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCisJLyoKKwkgKiBBdHRhY2gg YW5kIGNyZWF0ZSBwYXNzIHRocm91Z2ggaGVyZSwgb25seSB1cGRhdGUgYmFja2VuZCBtZW1vcnkK KwkgKiBhbGxvY2F0ZWQgaW4gcGdzdGF0X2FjdGl2aXR5IGZvciB0aGUgY3JlYXRvciBwcm9jZXNz LgorCSAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRFKQorCQlwZ3N0YXRfcmVwb3J0X2JhY2tl bmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShpbmZvLlJlZ2lvblNpemUpOwogCSptYXBwZWRfYWRk cmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0gaW5mby5SZWdpb25TaXplOwogCSppbXBs X3ByaXZhdGUgPSBobWFwOwpAQCAtODEyLDYgKzg3OCwxMyBAQCBkc21faW1wbF9tbWFwKGRzbV9v cCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJCW5hbWUp KSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KKworCQkvKgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ry b3kgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhlIG1lbW9yeQorCQkgKiBzaG93 biBhbGxvY2F0ZWQgaW4gcGdzdGF0X2FjdGl2aXR5IHdoZW4gdGhlIGNyZWF0b3IgZGVzdHJveXMg dGhlCisJCSAqIGFsbG9jYXRpb24uCisJCSAqLworCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVt X2FsbG9jYXRlZF9kZWNyZWFzZSgqbWFwcGVkX3NpemUpOwogCQkqbWFwcGVkX2FkZHJlc3MgPSBO VUxMOwogCQkqbWFwcGVkX3NpemUgPSAwOwogCQlpZiAob3AgPT0gRFNNX09QX0RFU1RST1kgJiYg dW5saW5rKG5hbWUpICE9IDApCkBAIC05MzMsNiArMTAwNiwxMyBAQCBkc21faW1wbF9tbWFwKGRz bV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJbmFt ZSkpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KKworCS8qCisJICogQXR0YWNoIGFuZCBjcmVhdGUg cGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgdXBkYXRlIGJhY2tlbmQgbWVtb3J5CisJICogYWxsb2Nh dGVkIGluIHBnc3RhdF9hY3Rpdml0eSBmb3IgdGhlIGNyZWF0b3IgcHJvY2Vzcy4KKwkgKi8KKwlp ZiAob3AgPT0gRFNNX09QX0NSRUFURSkKKwkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxv Y2F0ZWRfaW5jcmVhc2UocmVxdWVzdF9zaXplKTsKIAkqbWFwcGVkX2FkZHJlc3MgPSBhZGRyZXNz OwogCSptYXBwZWRfc2l6ZSA9IHJlcXVlc3Rfc2l6ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKaW5kZXggYzdlZDFlNmQ3YS4uMTdhMDA1ODdmOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCkBAIC00OSw2ICs0 OSw4IEBAIGludAkJCXBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplID0gMTAyNDsKIC8q IGV4cG9zZWQgc28gdGhhdCBiYWNrZW5kX3Byb2dyZXNzLmMgY2FuIGFjY2VzcyBpdCAqLwogUGdC YWNrZW5kU3RhdHVzICpNeUJFRW50cnkgPSBOVUxMOwogCisvKiBNZW1vcnkgYWxsb2NhdGVkIHRv IHRoaXMgYmFja2VuZCBwcmlvciB0byBwZ3N0YXRzIGluaXRpYWxpemF0aW9uICovCit1aW50NjQJ CWJhY2tlbmRfbWVtX2FsbG9jYXRlZCA9IDA7CiAKIHN0YXRpYyBQZ0JhY2tlbmRTdGF0dXMgKkJh Y2tlbmRTdGF0dXNBcnJheSA9IE5VTEw7CiBzdGF0aWMgY2hhciAqQmFja2VuZEFwcG5hbWVCdWZm ZXIgPSBOVUxMOwpAQCAtNDAwLDYgKzQwMiwxMyBAQCBwZ3N0YXRfYmVzdGFydCh2b2lkKQogCWxi ZWVudHJ5LnN0X3Byb2dyZXNzX2NvbW1hbmRfdGFyZ2V0ID0gSW52YWxpZE9pZDsKIAlsYmVlbnRy eS5zdF9xdWVyeV9pZCA9IFVJTlQ2NENPTlNUKDApOwogCisJLyoKKwkgKiBNb3ZlIHN1bSBvZiBt ZW1vcnkgYWxsb2NhdGVkIHByaW9yIHRvIHBnc3RhdHMgaW5pdGlhbGl6YXRpb24gdG8gcGdzdGF0 cworCSAqIGFuZCB6ZXJvIHRoZSBsb2NhbCB2YXJpYWJsZS4KKwkgKi8KKwlsYmVlbnRyeS5iYWNr ZW5kX21lbV9hbGxvY2F0ZWQgPSBiYWNrZW5kX21lbV9hbGxvY2F0ZWQ7CisJYmFja2VuZF9tZW1f YWxsb2NhdGVkID0gMDsKKwogCS8qCiAJICogd2UgZG9uJ3QgemVybyBzdF9wcm9ncmVzc19wYXJh bSBoZXJlIHRvIHNhdmUgY3ljbGVzOyBub2JvZHkgc2hvdWxkCiAJICogZXhhbWluZSBpdCB1bnRp bCBzdF9wcm9ncmVzc19jb21tYW5kIGhhcyBiZWVuIHNldCB0byBzb21ldGhpbmcgb3RoZXIKQEAg LTExNDgsMyArMTE1Nyw5OSBAQCBwZ3N0YXRfY2xpcF9hY3Rpdml0eShjb25zdCBjaGFyICpyYXdf YWN0aXZpdHkpCiAKIAlyZXR1cm4gYWN0aXZpdHk7CiB9CisKKy8qIC0tLS0tLS0tCisgKiBwZ3N0 YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZSgpIC0KKyAqCisgKiBDYWxs ZWQgdG8gcmVwb3J0IGluY3JlYXNlIGluIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoaXMgYmFja2Vu ZAorICogLS0tLS0tLS0KKyAqLwordm9pZAorcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxv Y2F0ZWRfaW5jcmVhc2UodWludDY0IGFsbG9jYXRpb24pCit7CisJdm9sYXRpbGUgUGdCYWNrZW5k U3RhdHVzICpiZWVudHJ5ID0gTXlCRUVudHJ5OworCisJaWYgKCFiZWVudHJ5IHx8ICFwZ3N0YXRf dHJhY2tfYWN0aXZpdGllcykKKwl7CisJCS8qCisJCSAqIEFjY291bnQgZm9yIG1lbW9yeSBiZWZv cmUgcGdzdGF0cyBpcyBpbml0aWFsaXplZC4gVGhpcyB3aWxsIGJlCisJCSAqIG1pZ3JhdGVkIHRv IHBnc3RhdHMgb24gaW5pdGlhbGl6YXRpb24uCisJCSAqLworCQliYWNrZW5kX21lbV9hbGxvY2F0 ZWQgKz0gYWxsb2NhdGlvbjsKKworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBVcGRhdGUgbXkg c3RhdHVzIGVudHJ5LCBmb2xsb3dpbmcgdGhlIHByb3RvY29sIG9mIGJ1bXBpbmcKKwkgKiBzdF9j aGFuZ2Vjb3VudCBiZWZvcmUgYW5kIGFmdGVyLiAgV2UgdXNlIGEgdm9sYXRpbGUgcG9pbnRlciBo ZXJlIHRvCisJICogZW5zdXJlIHRoZSBjb21waWxlciBkb2Vzbid0IHRyeSB0byBnZXQgY3V0ZS4K KwkgKi8KKwlQR1NUQVRfQkVHSU5fV1JJVEVfQUNUSVZJVFkoYmVlbnRyeSk7CisJYmVlbnRyeS0+ YmFja2VuZF9tZW1fYWxsb2NhdGVkICs9IGFsbG9jYXRpb247CisJUEdTVEFUX0VORF9XUklURV9B Q1RJVklUWShiZWVudHJ5KTsKK30KKworLyogLS0tLS0tLS0KKyAqIHBnc3RhdF9yZXBvcnRfYmFj a2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKCkgLQorICoKKyAqIENhbGxlZCB0byByZXBvcnQg ZGVjcmVhc2UgaW4gbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhpcyBiYWNrZW5kCisgKiAtLS0tLS0t LQorICovCit2b2lkCitwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFz ZSh1aW50NjQgZGVhbGxvY2F0aW9uKQoreworCXZvbGF0aWxlIFBnQmFja2VuZFN0YXR1cyAqYmVl bnRyeSA9IE15QkVFbnRyeTsKKworCS8qCisJICogQ2FzZXMgbWF5IG9jY3VyIHdoZXJlIHNoYXJl ZCBtZW1vcnkgZnJvbSBhIHByZXZpb3VzIHBvc3RtYXN0ZXIKKwkgKiBpbnZvY2F0aW9uIHN0aWxs IGV4aXN0LiBUaGVzZSBhcmUgY2xlYW5lZCB1cCBhdCBzdGFydHVwIGJ5CisJICogZHNtX2NsZWFu dXBfdXNpbmdfY29udHJvbF9zZWdtZW50LiBMaW1pdCBkZWNyZWFzaW5nIG1lbW9yeSBhbGxvY2F0 ZWQgdG8KKwkgKiB6ZXJvIGluIGNhc2Ugbm8gY29ycmVzcG9uZGluZyBwcmlvciBpbmNyZWFzZSBl eGlzdHMgb3IgZGVjcmVhc2UgaGFzCisJICogYWxyZWFkeSBiZWVuIGFjY291bnRlZCBmb3IuCisJ ICovCisKKwlpZiAoIWJlZW50cnkgfHwgIXBnc3RhdF90cmFja19hY3Rpdml0aWVzKQorCXsKKwkJ LyoKKwkJICogQWNjb3VudCBmb3IgbWVtb3J5IGJlZm9yZSBwZ3N0YXRzIGlzIGluaXRpYWxpemVk LiBUaGlzIHdpbGwgYmUKKwkJICogbWlncmF0ZWQgdG8gcGdzdGF0cyBvbiBpbml0aWFsaXphdGlv bi4gRG8gbm90IGFsbG93CisJCSAqIGJhY2tlbmRfbWVtX2FsbG9jYXRlZCB0byBnbyBiZWxvdyB6 ZXJvLiBJZiBwZ3N0YXRzIGhhcyBub3QgYmVlbgorCQkgKiBpbml0aWFsaXplZCwgd2UgYXJlIGlu IHN0YXJ0dXAgYW5kIHdlIHNldCBiYWNrZW5kX21lbV9hbGxvY2F0ZWQgdG8KKwkJICogemVybyBp biBjYXNlcyB3aGVyZSBpdCB3b3VsZCBnbyBuZWdhdGl2ZSBhbmQgc2tpcCBnZW5lcmF0aW5nIGFu CisJCSAqIGVyZXBvcnQuCisJCSAqLworCQlpZiAoZGVhbGxvY2F0aW9uID4gYmFja2VuZF9tZW1f YWxsb2NhdGVkKQorCQkJYmFja2VuZF9tZW1fYWxsb2NhdGVkID0gMDsKKwkJZWxzZQorCQkJYmFj a2VuZF9tZW1fYWxsb2NhdGVkIC09IGRlYWxsb2NhdGlvbjsKKworCQlyZXR1cm47CisJfQorCisJ LyoKKwkgKiBEbyBub3QgYWxsb3cgYmFja2VuZF9tZW1fYWxsb2NhdGVkIHRvIGdvIGJlbG93IHpl cm8uIGVyZXBvcnQgaWYgd2UKKwkgKiB3b3VsZCBoYXZlLiBUaGVyZSdzIG5vIG5lZWQgZm9yIGEg bG9jayBhcm91bmQgdGhlIHJlYWQgaGVyZSBhc2l0J3MKKwkgKiBiZWluZyByZWZlcmVuY2VkIGZy b20gdGhlIHNhbWUgYmFja2VuZCB3aGljaCBtZWFucyB0aGF0IHRoZXJlIHNob3VsZG4ndAorCSAq IGJlIGNvbmN1cnJlbnQgd3JpdGVzLiBXZSB3YW50IHRvIGdlbmVyYXRlIGFuIGVyZXBvcnQgaW4g dGhlc2UgY2FzZXMuCisJICovCisJaWYgKGRlYWxsb2NhdGlvbiA+IGJlZW50cnktPmJhY2tlbmRf bWVtX2FsbG9jYXRlZCkKKwl7CisJCWVyZXBvcnQoTE9HLCAoZXJybXNnKCJkZWNyZWFzZSByZWR1 Y2VzIHJlcG9ydGVkIGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRlZCBiZWxvdyB6ZXJvOyBzZXR0aW5n IHJlcG9ydGVkIHRvIDAiKSkpOworCisJCS8qCisJCSAqIE92ZXJ3cml0ZSBkZWFsbG9jYXRpb24g d2l0aCBjdXJyZW50IGJhY2tlbmRfbWVtX2FsbG9jYXRlZCBzbyB3ZSBlbmQKKwkJICogdXAgYXQg emVyby4KKwkJICovCisJCWRlYWxsb2NhdGlvbiA9IGJlZW50cnktPmJhY2tlbmRfbWVtX2FsbG9j YXRlZDsKKwl9CisKKwkvKgorCSAqIFVwZGF0ZSBteSBzdGF0dXMgZW50cnksIGZvbGxvd2luZyB0 aGUgcHJvdG9jb2wgb2YgYnVtcGluZworCSAqIHN0X2NoYW5nZWNvdW50IGJlZm9yZSBhbmQgYWZ0 ZXIuICBXZSB1c2UgYSB2b2xhdGlsZSBwb2ludGVyIGhlcmUgdG8KKwkgKiBlbnN1cmUgdGhlIGNv bXBpbGVyIGRvZXNuJ3QgdHJ5IHRvIGdldCBjdXRlLgorCSAqLworCVBHU1RBVF9CRUdJTl9XUklU RV9BQ1RJVklUWShiZWVudHJ5KTsKKwliZWVudHJ5LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQgLT0g ZGVhbGxvY2F0aW9uOworCVBHU1RBVF9FTkRfV1JJVEVfQUNUSVZJVFkoYmVlbnRyeSk7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDRjY2EzMGFhZTcuLjE1NzRhYTgwNDkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC01MzYsNyArNTM2LDcgQEAgcGdf c3RhdF9nZXRfcHJvZ3Jlc3NfaW5mbyhQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX3N0YXRf Z2V0X2FjdGl2aXR5KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0jZGVmaW5lIFBHX1NUQVRfR0VUX0FD VElWSVRZX0NPTFMJMzAKKyNkZWZpbmUgUEdfU1RBVF9HRVRfQUNUSVZJVFlfQ09MUwkzMQogCWlu dAkJCW51bV9iYWNrZW5kcyA9IHBnc3RhdF9mZXRjaF9zdGF0X251bWJhY2tlbmRzKCk7CiAJaW50 CQkJY3Vycl9iYWNrZW5kOwogCWludAkJCXBpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IC0xIDogUEdf R0VUQVJHX0lOVDMyKDApOwpAQCAtNjEwLDYgKzYxMCw4IEBAIHBnX3N0YXRfZ2V0X2FjdGl2aXR5 KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UKIAkJCW51bGxzWzE2XSA9IHRydWU7CiAKKwkJdmFs dWVzWzMwXSA9IFVJbnQ2NEdldERhdHVtKGJlZW50cnktPmJhY2tlbmRfbWVtX2FsbG9jYXRlZCk7 CisKIAkJLyogVmFsdWVzIG9ubHkgYXZhaWxhYmxlIHRvIHJvbGUgbWVtYmVyIG9yIHBnX3JlYWRf YWxsX3N0YXRzICovCiAJCWlmIChIQVNfUEdTVEFUX1BFUk1JU1NJT05TKGJlZW50cnktPnN0X3Vz ZXJpZCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKaW5kZXggYjZlZWI4YWJhYi4uYzkxZjhlZmE0 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgogCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInV0aWxz L2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtZGVidWcuaCIKICNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzX21lbW9yeWNodW5r LmgiCkBAIC01MDksNiArNTEwLDcgQEAgQWxsb2NTZXRDb250ZXh0Q3JlYXRlSW50ZXJuYWwoTWVt b3J5Q29udGV4dCBwYXJlbnQsCiAJCQkJCQluYW1lKTsKIAogCSgoTWVtb3J5Q29udGV4dCkgc2V0 KS0+bWVtX2FsbG9jYXRlZCA9IGZpcnN0QmxvY2tTaXplOworCXBnc3RhdF9yZXBvcnRfYmFja2Vu ZF9tZW1fYWxsb2NhdGVkX2luY3JlYXNlKGZpcnN0QmxvY2tTaXplKTsKIAogCXJldHVybiAoTWVt b3J5Q29udGV4dCkgc2V0OwogfQpAQCAtNTMyLDYgKzUzNCw3IEBAIEFsbG9jU2V0UmVzZXQoTWVt b3J5Q29udGV4dCBjb250ZXh0KQogCUFsbG9jQmxvY2sJYmxvY2s7CiAJU2l6ZQkJa2VlcGVyc2l6 ZSBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkKIAk9IHNldC0+a2VlcGVyLT5lbmRwdHIgLSAoKGNo YXIgKikgc2V0KTsKKwl1aW50NjQJCWRlYWxsb2NhdGlvbiA9IDA7CiAKIAlBc3NlcnRBcmcoQWxs b2NTZXRJc1ZhbGlkKHNldCkpOwogCkBAIC01NzEsNiArNTc0LDcgQEAgQWxsb2NTZXRSZXNldChN ZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJCXsKIAkJCS8qIE5vcm1hbCBjYXNlLCByZWxlYXNlIHRo ZSBibG9jayAqLwogCQkJY29udGV4dC0+bWVtX2FsbG9jYXRlZCAtPSBibG9jay0+ZW5kcHRyIC0g KChjaGFyICopIGJsb2NrKTsKKwkJCWRlYWxsb2NhdGlvbiArPSBibG9jay0+ZW5kcHRyIC0gKChj aGFyICopIGJsb2NrKTsKIAogI2lmZGVmIENMT0JCRVJfRlJFRURfTUVNT1JZCiAJCQl3aXBlX21l bShibG9jaywgYmxvY2stPmZyZWVwdHIgLSAoKGNoYXIgKikgYmxvY2spKTsKQEAgLTU4MSw2ICs1 ODUsNyBAQCBBbGxvY1NldFJlc2V0KE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAl9CiAKIAlBc3Nl cnQoY29udGV4dC0+bWVtX2FsbG9jYXRlZCA9PSBrZWVwZXJzaXplKTsKKwlwZ3N0YXRfcmVwb3J0 X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFzZShkZWFsbG9jYXRpb24pOwogCiAJLyogUmVz ZXQgYmxvY2sgc2l6ZSBhbGxvY2F0aW9uIHNlcXVlbmNlLCB0b28gKi8KIAlzZXQtPm5leHRCbG9j a1NpemUgPSBzZXQtPmluaXRCbG9ja1NpemU7CkBAIC02MDAsNiArNjA1LDcgQEAgQWxsb2NTZXRE ZWxldGUoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCUFsbG9jQmxvY2sJYmxvY2sgPSBzZXQtPmJs b2NrczsKIAlTaXplCQlrZWVwZXJzaXplIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWQogCT0gc2V0 LT5rZWVwZXItPmVuZHB0ciAtICgoY2hhciAqKSBzZXQpOworCXVpbnQ2NAkJZGVhbGxvY2F0aW9u ID0gMDsKIAogCUFzc2VydEFyZyhBbGxvY1NldElzVmFsaWQoc2V0KSk7CiAKQEAgLTYzNSwxMSAr NjQxLDEzIEBAIEFsbG9jU2V0RGVsZXRlKE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAogCQkJCWZy ZWVsaXN0LT5maXJzdF9mcmVlID0gKEFsbG9jU2V0Q29udGV4dCAqKSBvbGRzZXQtPmhlYWRlci5u ZXh0Y2hpbGQ7CiAJCQkJZnJlZWxpc3QtPm51bV9mcmVlLS07CisJCQkJZGVhbGxvY2F0aW9uICs9 IG9sZHNldC0+aGVhZGVyLm1lbV9hbGxvY2F0ZWQ7CiAKIAkJCQkvKiBBbGwgdGhhdCByZW1haW5z IGlzIHRvIGZyZWUgdGhlIGhlYWRlci9pbml0aWFsIGJsb2NrICovCiAJCQkJZnJlZShvbGRzZXQp OwogCQkJfQogCQkJQXNzZXJ0KGZyZWVsaXN0LT5udW1fZnJlZSA9PSAwKTsKKwkJCXBnc3RhdF9y ZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKGRlYWxsb2NhdGlvbik7CiAJCX0K IAogCQkvKiBOb3cgYWRkIHRoZSBqdXN0LWRlbGV0ZWQgY29udGV4dCB0byB0aGUgZnJlZWxpc3Qu ICovCkBAIC02NTYsNyArNjY0LDEwIEBAIEFsbG9jU2V0RGVsZXRlKE1lbW9yeUNvbnRleHQgY29u dGV4dCkKIAkJQWxsb2NCbG9jawluZXh0ID0gYmxvY2stPm5leHQ7CiAKIAkJaWYgKGJsb2NrICE9 IHNldC0+a2VlcGVyKQorCQl7CiAJCQljb250ZXh0LT5tZW1fYWxsb2NhdGVkIC09IGJsb2NrLT5l bmRwdHIgLSAoKGNoYXIgKikgYmxvY2spOworCQkJZGVhbGxvY2F0aW9uICs9IGJsb2NrLT5lbmRw dHIgLSAoKGNoYXIgKikgYmxvY2spOworCQl9CiAKICNpZmRlZiBDTE9CQkVSX0ZSRUVEX01FTU9S WQogCQl3aXBlX21lbShibG9jaywgYmxvY2stPmZyZWVwdHIgLSAoKGNoYXIgKikgYmxvY2spKTsK QEAgLTY2OSw2ICs2ODAsOCBAQCBBbGxvY1NldERlbGV0ZShNZW1vcnlDb250ZXh0IGNvbnRleHQp CiAJfQogCiAJQXNzZXJ0KGNvbnRleHQtPm1lbV9hbGxvY2F0ZWQgPT0ga2VlcGVyc2l6ZSk7CisJ cGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoZGVhbGxvY2F0aW9u ICsKKwkJCQkJCQkJCQkJCSBjb250ZXh0LT5tZW1fYWxsb2NhdGVkKTsKIAogCS8qIEZpbmFsbHks IGZyZWUgdGhlIGNvbnRleHQgaGVhZGVyLCBpbmNsdWRpbmcgdGhlIGtlZXBlciBibG9jayAqLwog CWZyZWUoc2V0KTsKQEAgLTcxMiw2ICs3MjUsNyBAQCBBbGxvY1NldEFsbG9jKE1lbW9yeUNvbnRl eHQgY29udGV4dCwgU2l6ZSBzaXplKQogCQkJcmV0dXJuIE5VTEw7CiAKIAkJY29udGV4dC0+bWVt X2FsbG9jYXRlZCArPSBibGtzaXplOworCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9j YXRlZF9pbmNyZWFzZShibGtzaXplKTsKIAogCQlibG9jay0+YXNldCA9IHNldDsKIAkJYmxvY2st PmZyZWVwdHIgPSBibG9jay0+ZW5kcHRyID0gKChjaGFyICopIGJsb2NrKSArIGJsa3NpemU7CkBA IC05MTYsNiArOTMwLDcgQEAgQWxsb2NTZXRBbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNp emUgc2l6ZSkKIAkJCXJldHVybiBOVUxMOwogCiAJCWNvbnRleHQtPm1lbV9hbGxvY2F0ZWQgKz0g Ymxrc2l6ZTsKKwkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfaW5jcmVhc2Uo Ymxrc2l6ZSk7CiAKIAkJYmxvY2stPmFzZXQgPSBzZXQ7CiAJCWJsb2NrLT5mcmVlcHRyID0gKChj aGFyICopIGJsb2NrKSArIEFMTE9DX0JMT0NLSERSU1o7CkBAIC0xMDE2LDYgKzEwMzEsNyBAQCBB bGxvY1NldEZyZWUodm9pZCAqcG9pbnRlcikKIAkJCWJsb2NrLT5uZXh0LT5wcmV2ID0gYmxvY2st PnByZXY7CiAKIAkJc2V0LT5oZWFkZXIubWVtX2FsbG9jYXRlZCAtPSBibG9jay0+ZW5kcHRyIC0g KChjaGFyICopIGJsb2NrKTsKKwkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRf ZGVjcmVhc2UoYmxvY2stPmVuZHB0ciAtICgoY2hhciAqKSBibG9jaykpOwogCiAjaWZkZWYgQ0xP QkJFUl9GUkVFRF9NRU1PUlkKIAkJd2lwZV9tZW0oYmxvY2ssIGJsb2NrLT5mcmVlcHRyIC0gKChj aGFyICopIGJsb2NrKSk7CkBAIC0xMTI3LDcgKzExNDMsOSBAQCBBbGxvY1NldFJlYWxsb2Modm9p ZCAqcG9pbnRlciwgU2l6ZSBzaXplKQogCiAJCS8qIHVwZGF0ZWQgc2VwYXJhdGVseSwgbm90IHRv IHVuZGVyZmxvdyB3aGVuIChvbGRibGtzaXplID4gYmxrc2l6ZSkgKi8KIAkJc2V0LT5oZWFkZXIu bWVtX2FsbG9jYXRlZCAtPSBvbGRibGtzaXplOworCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVt X2FsbG9jYXRlZF9kZWNyZWFzZShvbGRibGtzaXplKTsKIAkJc2V0LT5oZWFkZXIubWVtX2FsbG9j YXRlZCArPSBibGtzaXplOworCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9p bmNyZWFzZShibGtzaXplKTsKIAogCQlibG9jay0+ZnJlZXB0ciA9IGJsb2NrLT5lbmRwdHIgPSAo KGNoYXIgKikgYmxvY2spICsgYmxrc2l6ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9nZW5lcmF0aW9uLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24u YwppbmRleCBiMzk4OTRlYzk0Li4zNmU1YjNmOTRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9tbWdyL2dlbmVyYXRpb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVy YXRpb24uYwpAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5j bHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVz LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtZGVidWcuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzX21lbW9yeWNodW5rLmgiCkBAIC0yNTgsNiAr MjU5LDcgQEAgR2VuZXJhdGlvbkNvbnRleHRDcmVhdGUoTWVtb3J5Q29udGV4dCBwYXJlbnQsCiAJ CQkJCQluYW1lKTsKIAogCSgoTWVtb3J5Q29udGV4dCkgc2V0KS0+bWVtX2FsbG9jYXRlZCA9IGZp cnN0QmxvY2tTaXplOworCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2luY3Jl YXNlKGZpcnN0QmxvY2tTaXplKTsKIAogCXJldHVybiAoTWVtb3J5Q29udGV4dCkgc2V0OwogfQpA QCAtMjc0LDYgKzI3Niw3IEBAIEdlbmVyYXRpb25SZXNldChNZW1vcnlDb250ZXh0IGNvbnRleHQp CiB7CiAJR2VuZXJhdGlvbkNvbnRleHQgKnNldCA9IChHZW5lcmF0aW9uQ29udGV4dCAqKSBjb250 ZXh0OwogCWRsaXN0X211dGFibGVfaXRlciBtaXRlcjsKKwl1aW50NjQJZGVhbGxvY2F0aW9uID0g MDsKIAogCUFzc2VydEFyZyhHZW5lcmF0aW9uSXNWYWxpZChzZXQpKTsKIApAQCAtMjk2LDkgKzI5 OSwxNCBAQCBHZW5lcmF0aW9uUmVzZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCQlpZiAoYmxv Y2sgPT0gc2V0LT5rZWVwZXIpCiAJCQlHZW5lcmF0aW9uQmxvY2tNYXJrRW1wdHkoYmxvY2spOwog CQllbHNlCisJCXsKKwkJCWRlYWxsb2NhdGlvbiArPSBibG9jay0+Ymxrc2l6ZTsKIAkJCUdlbmVy YXRpb25CbG9ja0ZyZWUoc2V0LCBibG9jayk7CisJCX0KIAl9CiAKKwlwZ3N0YXRfcmVwb3J0X2Jh Y2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFzZShkZWFsbG9jYXRpb24pOworCiAJLyogc2V0IGl0 IHNvIG5ldyBhbGxvY2F0aW9ucyB0byBtYWtlIHVzZSBvZiB0aGUga2VlcGVyIGJsb2NrICovCiAJ c2V0LT5ibG9jayA9IHNldC0+a2VlcGVyOwogCkBAIC0zMTksNiArMzI3LDkgQEAgR2VuZXJhdGlv bkRlbGV0ZShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiB7CiAJLyogUmVzZXQgdG8gcmVsZWFzZSBh bGwgcmVsZWFzYWJsZSBHZW5lcmF0aW9uQmxvY2tzICovCiAJR2VuZXJhdGlvblJlc2V0KGNvbnRl eHQpOworCisJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoY29u dGV4dC0+bWVtX2FsbG9jYXRlZCk7CisKIAkvKiBBbmQgZnJlZSB0aGUgY29udGV4dCBoZWFkZXIg YW5kIGtlZXBlciBibG9jayAqLwogCWZyZWUoY29udGV4dCk7CiB9CkBAIC0zNTUsNiArMzY2LDcg QEAgR2VuZXJhdGlvbkFsbG9jKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6ZSBzaXplKQogCQkJ cmV0dXJuIE5VTEw7CiAKIAkJY29udGV4dC0+bWVtX2FsbG9jYXRlZCArPSBibGtzaXplOworCQlw Z3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShibGtzaXplKTsKIAog CQkvKiBibG9jayB3aXRoIGEgc2luZ2xlICh1c2VkKSBjaHVuayAqLwogCQlibG9jay0+Y29udGV4 dCA9IHNldDsKQEAgLTQ1OCw2ICs0NzAsNyBAQCBHZW5lcmF0aW9uQWxsb2MoTWVtb3J5Q29udGV4 dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCQkJcmV0dXJuIE5VTEw7CiAKIAkJCWNvbnRleHQtPm1l bV9hbGxvY2F0ZWQgKz0gYmxrc2l6ZTsKKwkJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxs b2NhdGVkX2luY3JlYXNlKGJsa3NpemUpOwogCiAJCQkvKiBpbml0aWFsaXplIHRoZSBuZXcgYmxv Y2sgKi8KIAkJCUdlbmVyYXRpb25CbG9ja0luaXQoc2V0LCBibG9jaywgYmxrc2l6ZSk7CkBAIC02 OTEsNiArNzA0LDggQEAgR2VuZXJhdGlvbkZyZWUodm9pZCAqcG9pbnRlcikKIAlkbGlzdF9kZWxl dGUoJmJsb2NrLT5ub2RlKTsKIAogCXNldC0+aGVhZGVyLm1lbV9hbGxvY2F0ZWQgLT0gYmxvY2st PmJsa3NpemU7CisJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2Uo YmxvY2stPmJsa3NpemUpOworCiAJZnJlZShibG9jayk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMK aW5kZXggMmQ3MGFkZWYwOS4uZWZjOGJjZmFhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9zbGFiLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMKQEAgLTUz LDYgKzUzLDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAibGliL2lsaXN0 LmgiCisjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy9t ZW1kZWJ1Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHNfbWVtb3J5Y2h1bmsuaCIKQEAgLTIxOCw2ICsyMTksMTIgQEAgU2xhYkNvbnRleHRD cmVhdGUoTWVtb3J5Q29udGV4dCBwYXJlbnQsCiAJCQkJCQlwYXJlbnQsCiAJCQkJCQluYW1lKTsK IAorCS8qCisJICogSWYgU2xhYkNvbnRleHRDcmVhdGUgaXMgdXBkYXRlZCB0byBhZGQgaGVhZGVy U2l6ZSB0bworCSAqIGNvbnRleHQtPm1lbV9hbGxvY2F0ZWQsIHRoZW4gdXBkYXRlIGhlcmUgYW5k IFNsYWJEZWxldGUgYXBwcm9wcmlhdGVseQorCSAqLworCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9t ZW1fYWxsb2NhdGVkX2luY3JlYXNlKGhlYWRlclNpemUpOworCiAJcmV0dXJuIChNZW1vcnlDb250 ZXh0KSBzbGFiOwogfQogCkBAIC0yMzMsNiArMjQwLDcgQEAgU2xhYlJlc2V0KE1lbW9yeUNvbnRl eHQgY29udGV4dCkKIHsKIAlpbnQJCQlpOwogCVNsYWJDb250ZXh0ICpzbGFiID0gY2FzdE5vZGUo U2xhYkNvbnRleHQsIGNvbnRleHQpOworCXVpbnQ2NAkJZGVhbGxvY2F0aW9uID0gMDsKIAogCUFz c2VydChzbGFiKTsKIApAQCAtMjU4LDkgKzI2NiwxMSBAQCBTbGFiUmVzZXQoTWVtb3J5Q29udGV4 dCBjb250ZXh0KQogCQkJZnJlZShibG9jayk7CiAJCQlzbGFiLT5uYmxvY2tzLS07CiAJCQljb250 ZXh0LT5tZW1fYWxsb2NhdGVkIC09IHNsYWItPmJsb2NrU2l6ZTsKKwkJCWRlYWxsb2NhdGlvbiAr PSBzbGFiLT5ibG9ja1NpemU7CiAJCX0KIAl9CiAKKwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVt X2FsbG9jYXRlZF9kZWNyZWFzZShkZWFsbG9jYXRpb24pOwogCXNsYWItPm1pbkZyZWVDaHVua3Mg PSAwOwogCiAJQXNzZXJ0KHNsYWItPm5ibG9ja3MgPT0gMCk7CkBAIC0yNzQsOCArMjg0LDE3IEBA IFNsYWJSZXNldChNZW1vcnlDb250ZXh0IGNvbnRleHQpCiB2b2lkCiBTbGFiRGVsZXRlKE1lbW9y eUNvbnRleHQgY29udGV4dCkKIHsKKwkvKgorCSAqIFVudGlsIGhlYWRlciBhbGxvY2F0aW9uIGlz IGluY2x1ZGVkIGluIGNvbnRleHQtPm1lbV9hbGxvY2F0ZWQgY2FzdCB0bworCSAqIHNsYWIgYW5k IGRlY3JlbWVudCB0aGUgaGVhZGVyU2l6ZQorCSAqLworCVNsYWJDb250ZXh0ICpzbGFiID0gY2Fz dE5vZGUoU2xhYkNvbnRleHQsIGNvbnRleHQpOworCiAJLyogUmVzZXQgdG8gcmVsZWFzZSBhbGwg dGhlIFNsYWJCbG9ja3MgKi8KIAlTbGFiUmVzZXQoY29udGV4dCk7CisKKwlwZ3N0YXRfcmVwb3J0 X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFzZShzbGFiLT5oZWFkZXJTaXplKTsKKwogCS8q IEFuZCBmcmVlIHRoZSBjb250ZXh0IGhlYWRlciAqLwogCWZyZWUoY29udGV4dCk7CiB9CkBAIC0z NDQsNiArMzYzLDcgQEAgU2xhYkFsbG9jKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6ZSBzaXpl KQogCQlzbGFiLT5taW5GcmVlQ2h1bmtzID0gc2xhYi0+Y2h1bmtzUGVyQmxvY2s7CiAJCXNsYWIt Pm5ibG9ja3MgKz0gMTsKIAkJY29udGV4dC0+bWVtX2FsbG9jYXRlZCArPSBzbGFiLT5ibG9ja1Np emU7CisJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2luY3JlYXNlKHNsYWIt PmJsb2NrU2l6ZSk7CiAJfQogCiAJLyogZ3JhYiB0aGUgYmxvY2sgZnJvbSB0aGUgZnJlZWxpc3Qg KGV2ZW4gdGhlIG5ldyBibG9jayBpcyB0aGVyZSkgKi8KQEAgLTUxMSw2ICs1MzEsNyBAQCBTbGFi RnJlZSh2b2lkICpwb2ludGVyKQogCQlmcmVlKGJsb2NrKTsKIAkJc2xhYi0+bmJsb2Nrcy0tOwog CQlzbGFiLT5oZWFkZXIubWVtX2FsbG9jYXRlZCAtPSBzbGFiLT5ibG9ja1NpemU7CisJCXBnc3Rh dF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKHNsYWItPmJsb2NrU2l6ZSk7 CiAJfQogCWVsc2UKIAkJZGxpc3RfcHVzaF9oZWFkKCZzbGFiLT5mcmVlbGlzdFtibG9jay0+bmZy ZWVdLCAmYmxvY2stPm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYmU0NzU4MzEy Mi4uZTFiZmI4NWIyNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01MzQwLDkgKzUzNDAs OSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9hY3Rpdml0eScsIHByb3Jvd3MgPT4gJzEw MCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUg PT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHBy b2FyZ3R5cGVzID0+ICdpbnQ0JywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tpbnQ0LG9pZCxpbnQ0 LG9pZCx0ZXh0LHRleHQsdGV4dCx0ZXh0LHRleHQsdGltZXN0YW1wdHosdGltZXN0YW1wdHosdGlt ZXN0YW1wdHosdGltZXN0YW1wdHosaW5ldCx0ZXh0LGludDQseGlkLHhpZCx0ZXh0LGJvb2wsdGV4 dCx0ZXh0LGludDQsdGV4dCxudW1lcmljLHRleHQsYm9vbCx0ZXh0LGJvb2wsaW50NCxpbnQ4fScs Ci0gIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3BpZCxkYXRp ZCxwaWQsdXNlc3lzaWQsYXBwbGljYXRpb25fbmFtZSxzdGF0ZSxxdWVyeSx3YWl0X2V2ZW50X3R5 cGUsd2FpdF9ldmVudCx4YWN0X3N0YXJ0LHF1ZXJ5X3N0YXJ0LGJhY2tlbmRfc3RhcnQsc3RhdGVf Y2hhbmdlLGNsaWVudF9hZGRyLGNsaWVudF9ob3N0bmFtZSxjbGllbnRfcG9ydCxiYWNrZW5kX3hp ZCxiYWNrZW5kX3htaW4sYmFja2VuZF90eXBlLHNzbCxzc2x2ZXJzaW9uLHNzbGNpcGhlcixzc2xi aXRzLHNzbF9jbGllbnRfZG4sc3NsX2NsaWVudF9zZXJpYWwsc3NsX2lzc3Vlcl9kbixnc3NfYXV0 aCxnc3NfcHJpbmMsZ3NzX2VuYyxsZWFkZXJfcGlkLHF1ZXJ5X2lkfScsCisgIHByb2FsbGFyZ3R5 cGVzID0+ICd7aW50NCxvaWQsaW50NCxvaWQsdGV4dCx0ZXh0LHRleHQsdGV4dCx0ZXh0LHRpbWVz dGFtcHR6LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LGluZXQsdGV4dCxpbnQ0 LHhpZCx4aWQsdGV4dCxib29sLHRleHQsdGV4dCxpbnQ0LHRleHQsbnVtZXJpYyx0ZXh0LGJvb2ws dGV4dCxib29sLGludDQsaW50OCxpbnQ4fScsCisgIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScs CisgIHByb2FyZ25hbWVzID0+ICd7cGlkLGRhdGlkLHBpZCx1c2VzeXNpZCxhcHBsaWNhdGlvbl9u YW1lLHN0YXRlLHF1ZXJ5LHdhaXRfZXZlbnRfdHlwZSx3YWl0X2V2ZW50LHhhY3Rfc3RhcnQscXVl cnlfc3RhcnQsYmFja2VuZF9zdGFydCxzdGF0ZV9jaGFuZ2UsY2xpZW50X2FkZHIsY2xpZW50X2hv c3RuYW1lLGNsaWVudF9wb3J0LGJhY2tlbmRfeGlkLGJhY2tlbmRfeG1pbixiYWNrZW5kX3R5cGUs c3NsLHNzbHZlcnNpb24sc3NsY2lwaGVyLHNzbGJpdHMsc3NsX2NsaWVudF9kbixzc2xfY2xpZW50 X3NlcmlhbCxzc2xfaXNzdWVyX2RuLGdzc19hdXRoLGdzc19wcmluYyxnc3NfZW5jLGxlYWRlcl9w aWQscXVlcnlfaWQsYmFja2VuZF9tZW1fYWxsb2NhdGVkfScsCiAgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfYWN0aXZpdHknIH0sCiB7IG9pZCA9PiAnMzMxOCcsCiAgIGRlc2NyID0+ICdzdGF0aXN0 aWNzOiBpbmZvcm1hdGlvbiBhYm91dCBwcm9ncmVzcyBvZiBiYWNrZW5kcyBydW5uaW5nIG1haW50 ZW5hbmNlIGNvbW1hbmQnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9z dGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKaW5kZXggNzQwM2Jj YTI1ZS4uOWJkYzQxOTdiZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9z dGF0dXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCkBAIC0xNjgs NiArMTY4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdCYWNrZW5kU3RhdHVzCiAKIAkvKiBxdWVyeSBp ZGVudGlmaWVyLCBvcHRpb25hbGx5IGNvbXB1dGVkIHVzaW5nIHBvc3RfcGFyc2VfYW5hbHl6ZV9o b29rICovCiAJdWludDY0CQlzdF9xdWVyeV9pZDsKKworCS8qIEN1cnJlbnQgbWVtb3J5IGFsbG9j YXRlZCB0byB0aGlzIGJhY2tlbmQgKi8KKwl1aW50NjQJCWJhY2tlbmRfbWVtX2FsbG9jYXRlZDsK IH0gUGdCYWNrZW5kU3RhdHVzOwogCiAKQEAgLTMwNSw3ICszMDgsOSBAQCBleHRlcm4gY29uc3Qg Y2hhciAqcGdzdGF0X2dldF9iYWNrZW5kX2N1cnJlbnRfYWN0aXZpdHkoaW50IHBpZCwgYm9vbCBj aGVja1VzZXIpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfY3Jhc2hlZF9iYWNrZW5k X2FjdGl2aXR5KGludCBwaWQsIGNoYXIgKmJ1ZmZlciwKIAkJCQkJCQkJCQkJCQkgICBpbnQgYnVm bGVuKTsKIGV4dGVybiB1aW50NjQgcGdzdGF0X2dldF9teV9xdWVyeV9pZCh2b2lkKTsKLQorZXh0 ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfaW5jcmVhc2UodWlu dDY0IGFsbG9jYXRpb24pOworZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9h bGxvY2F0ZWRfZGVjcmVhc2UodWludDY0IGRlYWxsb2NhdGlvbik7CitleHRlcm4gdWludDY0IHBn c3RhdF9nZXRfYWxsX2JhY2tlbmRfbWVtb3J5X2FsbG9jYXRlZCh2b2lkKTsKIAogLyogLS0tLS0t LS0tLQogICogU3VwcG9ydCBmdW5jdGlvbnMgZm9yIHRoZSBTUUwtY2FsbGFibGUgZnVuY3Rpb25z IHRvCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDdlYzNkMjY4OGYuLjY3NGU1 YzZmZTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNzU3LDkgKzE3NTcs MTAgQEAgcGdfc3RhdF9hY3Rpdml0eXwgU0VMRUNUIHMuZGF0aWQsCiAgICAgcy5iYWNrZW5kX3hp ZCwKICAgICBzLmJhY2tlbmRfeG1pbiwKICAgICBzLnF1ZXJ5X2lkLAorICAgIHMuYmFja2VuZF9t ZW1fYWxsb2NhdGVkLAogICAgIHMucXVlcnksCiAgICAgcy5iYWNrZW5kX3R5cGUKLSAgIEZST00g KChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5 c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2Fp dF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2No YW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRf eGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBo ZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVy X2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkK KyAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBw aWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQs IHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQs IGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9u LCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBz c2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBx dWVyeV9pZCwgYmFja2VuZF9tZW1fYWxsb2NhdGVkKQogICAgICBMRUZUIEpPSU4gcGdfZGF0YWJh c2UgZCBPTiAoKHMuZGF0aWQgPSBkLm9pZCkpKQogICAgICBMRUZUIEpPSU4gcGdfYXV0aGlkIHUg T04gKChzLnVzZXN5c2lkID0gdS5vaWQpKSk7CiBwZ19zdGF0X2FsbF9pbmRleGVzfCBTRUxFQ1Qg Yy5vaWQgQVMgcmVsaWQsCkBAIC0xODcxLDcgKzE4NzIsNyBAQCBwZ19zdGF0X2dzc2FwaXwgU0VM RUNUIHMucGlkLAogICAgIHMuZ3NzX2F1dGggQVMgZ3NzX2F1dGhlbnRpY2F0ZWQsCiAgICAgcy5n c3NfcHJpbmMgQVMgcHJpbmNpcGFsLAogICAgIHMuZ3NzX2VuYyBBUyBlbmNyeXB0ZWQKLSAgIEZS T00gcGdfc3RhdF9nZXRfYWN0aXZpdHkoTlVMTDo6aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2Vz eXNpZCwgYXBwbGljYXRpb25fbmFtZSwgc3RhdGUsIHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdh aXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9j aGFuZ2UsIGNsaWVudF9hZGRyLCBjbGllbnRfaG9zdG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5k X3hpZCwgYmFja2VuZF94bWluLCBiYWNrZW5kX3R5cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lw aGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50X2RuLCBzc2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vl cl9kbiwgZ3NzX2F1dGgsIGdzc19wcmluYywgZ3NzX2VuYywgbGVhZGVyX3BpZCwgcXVlcnlfaWQp CisgICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBp ZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90 eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwg c3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwg YmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24s IHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNz bF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGxlYWRlcl9waWQsIHF1 ZXJ5X2lkLCBiYWNrZW5kX21lbV9hbGxvY2F0ZWQpCiAgIFdIRVJFIChzLmNsaWVudF9wb3J0IElT IE5PVCBOVUxMKTsKIHBnX3N0YXRfcHJvZ3Jlc3NfYW5hbHl6ZXwgU0VMRUNUIHMucGlkLAogICAg IHMuZGF0aWQsCkBAIC0yMDUyLDcgKzIwNTMsNyBAQCBwZ19zdGF0X3JlcGxpY2F0aW9ufCBTRUxF Q1Qgcy5waWQsCiAgICAgdy5zeW5jX3ByaW9yaXR5LAogICAgIHcuc3luY19zdGF0ZSwKICAgICB3 LnJlcGx5X3RpbWUKLSAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2Vy KSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnks IHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJh Y2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwg Y2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3Ns LCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGll bnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBs ZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxM OjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0 ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlf c3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9o b3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRf dHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4s IHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBn c3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwgYmFja2VuZF9tZW1fYWxsb2NhdGVkKQogICAg ICBKT0lOIHBnX3N0YXRfZ2V0X3dhbF9zZW5kZXJzKCkgdyhwaWQsIHN0YXRlLCBzZW50X2xzbiwg d3JpdGVfbHNuLCBmbHVzaF9sc24sIHJlcGxheV9sc24sIHdyaXRlX2xhZywgZmx1c2hfbGFnLCBy ZXBsYXlfbGFnLCBzeW5jX3ByaW9yaXR5LCBzeW5jX3N0YXRlLCByZXBseV90aW1lKSBPTiAoKHMu cGlkID0gdy5waWQpKSkKICAgICAgTEVGVCBKT0lOIHBnX2F1dGhpZCB1IE9OICgocy51c2VzeXNp ZCA9IHUub2lkKSkpOwogcGdfc3RhdF9yZXBsaWNhdGlvbl9zbG90c3wgU0VMRUNUIHMuc2xvdF9u YW1lLApAQCAtMjA4Niw3ICsyMDg3LDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKICAg ICBzLnNzbF9jbGllbnRfZG4gQVMgY2xpZW50X2RuLAogICAgIHMuc3NsX2NsaWVudF9zZXJpYWwg QVMgY2xpZW50X3NlcmlhbCwKICAgICBzLnNzbF9pc3N1ZXJfZG4gQVMgaXNzdWVyX2RuCi0gICBG Uk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNl c3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3 YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVf Y2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2Vu ZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNp cGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1 ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lk KQorICAgRlJPTSBwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBw aWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQs IHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQs IGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9u LCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBz c2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBx dWVyeV9pZCwgYmFja2VuZF9tZW1fYWxsb2NhdGVkKQogICBXSEVSRSAocy5jbGllbnRfcG9ydCBJ UyBOT1QgTlVMTCk7CiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJp ZCwKICAgICBzdS5zdWJuYW1lLAo= --=-lAIuG5lps0q6tAuxJrwt--