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 1oz8FS-0004pl-8N for pgsql-hackers@arkaria.postgresql.org; Sun, 27 Nov 2022 03:22:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oz8FQ-0001sc-D1 for pgsql-hackers@arkaria.postgresql.org; Sun, 27 Nov 2022 03:22:28 +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 1oz8FP-0001sT-V3 for pgsql-hackers@lists.postgresql.org; Sun, 27 Nov 2022 03:22:28 +0000 Received: from mail-qk1-x734.google.com ([2607:f8b0:4864:20::734]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oz8FM-0003Sg-Hy for pgsql-hackers@lists.postgresql.org; Sun, 27 Nov 2022 03:22:27 +0000 Received: by mail-qk1-x734.google.com with SMTP id v8so5074165qkg.12 for ; Sat, 26 Nov 2022 19:22:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crunchydata.com; s=google; h=user-agent:mime-version:date:organization:references:in-reply-to:cc :to:reply-to:from:subject:message-id:from:to:cc:subject:date :message-id:reply-to; bh=9vm8Bby9irg+PZBwRcUD5cwuhCwO/tCi+CS0dWCGyPk=; b=FSFwmS2JXrMkbtEBgnYDtuS5W/vqAP997mh81Pkg3nd5VRorcoATXqqREzyBc5GVmV 2XP+XDdIGR+vejnd9KmiSoIeEPNYZoR7DWieHins1lTY/zJMncbDQ+H+yy31+uRAieWc hEUQD1aVd+4Od2vz09G8u6Mn0XKsUTVopWQIvrD7uYr1G2xBzNvaQPrusM6NNsem3qg0 KbjSYBgI79UKfkeE1pkC5jlEMOz67yPSWjYhOLOalpECp0NmIDxf+1GWvfR2iqrQ1bqV WD3oXCek1rr9cucvOelPI5uHwn4yzBbfEXmqh7qaFWgvCNmozOHPyxFNT49mIWbpbqGh 4MXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=user-agent:mime-version:date:organization:references:in-reply-to:cc :to:reply-to:from:subject:message-id:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9vm8Bby9irg+PZBwRcUD5cwuhCwO/tCi+CS0dWCGyPk=; b=QF+0qanITidqvtZCj4uEqY9tFK2J9r3igKu5VnHF2184HzKJGwktlhR69xUXGhjda9 ViRqI9IfUN9x5S3NFnQRbScM7gPm8U3fzzMR2nKJuCcPuLzc+CbETXeCjT65l7jH7AYE f065nEK1xCapZZDZpjZxEWXKHWHZhkcme9PLZMYtheSutWiPpBNfcTwGpB+ZiAtjzUBL ugxJ7NoL2n8Ytw2drrOanpf0KGosareTXBTZ6ag/twUV1j3A7wtbtg8/2hcqFWqG96Fl C8Effjc/xAtxsnOs8sbVz9O06wHKiJsO0WrOyDZAayA5PucKhnyA9Vn7aZ0JwVOpSzG7 p2HA== X-Gm-Message-State: ANoB5pnjzPVXUkLlk9dVKDgbjSNjnB97/nZPNdaDXpt9ySF9WqEDXPqy EjBg0Cw5sQhCfctkJA3xcl1dEw== X-Google-Smtp-Source: AA0mqf7b5zDPk0TgbE0o6D+Ah//DZWMT8UOSDR/WqZC/0dW2RHUOT5m9unCHbCypHhsr5iXLcjdUKg== X-Received: by 2002:a05:620a:1d4a:b0:6fa:8c15:652c with SMTP id dm10-20020a05620a1d4a00b006fa8c15652cmr40386553qkb.399.1669519343264; Sat, 26 Nov 2022 19:22:23 -0800 (PST) Received: from raker.lan (cpe-24-163-67-44.nc.res.rr.com. [24.163.67.44]) by smtp.gmail.com with ESMTPSA id k12-20020a05620a414c00b006fa22f0494bsm5777686qko.117.2022.11.26.19.22.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Nov 2022 19:22:22 -0800 (PST) Message-ID: Subject: Re: 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: Arne Roland , "pgsql-hackers@lists.postgresql.org" Cc: reid.thompson@crunchydata.com, Justin Pryzby , Ibrar Ahmed In-Reply-To: References: ,<9e7969b9f6cbd2494705c7a5a21e7de0171727bb.camel@crunchydata.com> Organization: Crunchy Data Content-Type: multipart/mixed; boundary="=-4PREkPt0YIg9MselCQoI" Date: Sat, 26 Nov 2022 22:22:15 -0500 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 --=-4PREkPt0YIg9MselCQoI Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 2022-11-03 at 11:48 -0400, Reid Thompson wrote: > On Tue, 2022-10-25 at 11:49 -0400, Reid Thompson wrote: > > Rebased to current. Add a couple changes per conversation with D > Christensen (include units in field name, group field with > backend_xid > and backend_xmin fields in pg_stat_activity view, rather than between > query_id and query) >=20 rebased/patched to current master && current pg-stat-activity-backend-memor= y-allocated=20 --=20 Reid Thompson Senior Software Engineer Crunchy Data, Inc. reid.thompson@crunchydata.com www.crunchydata.com --=-4PREkPt0YIg9MselCQoI Content-Disposition: attachment; filename*0=0002-Add-the-ability-to-limit-the-amount-of-memory-that-c.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0002-Add-the-ability-to-limit-the-amount-of-memory-that-c.patch"; charset="UTF-8" RnJvbSAxNDcwZjQ1ZTA4NmJlZjA3NTdjYzI2MmQxMGUwODkwNGU0NmI5YTg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSZWlkIFRob21wc29uIDxqcmVpZHRob21wc29uQG5jLnJyLmNv bT4KRGF0ZTogU2F0LCA0IEp1biAyMDIyIDIyOjIzOjU5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAy LzJdIEFkZCB0aGUgYWJpbGl0eSB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9yeSB0aGF0IGNh biBiZQogYWxsb2NhdGVkIHRvIGJhY2tlbmRzLgoKVGhpcyBidWlsZHMgb24gdGhlIHdvcmsgdGhh dCBhZGRzIGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRlZCB0byBwZ19zdGF0X2FjdGl2aXR5LgoKQWRk IEdVQyB2YXJpYWJsZSBtYXhfdG90YWxfYmFja2VuZF9tZW1vcnkuCgpTcGVjaWZpZXMgYSBsaW1p dCB0byB0aGUgYW1vdW50IG9mIG1lbW9yeSAoaW4gTUIpIHRoYXQgbWF5IGJlIGFsbG9jYXRlZCB0 bwpiYWNrZW5kcyBpbiB0b3RhbCAoaS5lLiB0aGlzIGlzIG5vdCBhIHBlciB1c2VyIG9yIHBlciBi YWNrZW5kIGxpbWl0KS4gSWYgdW5zZXQsCm9yIHNldCB0byAwIGl0IGlzIGRpc2FibGVkLiBJdCBp cyBpbnRlbmRlZCBhcyBhIHJlc291cmNlIHRvIGhlbHAgYXZvaWQgdGhlIE9PTQpraWxsZXIgb24g TElOVVggYW5kIG1hbmFnZSByZXNvdXJjZXMgaW4gZ2VuZXJhbC4gQSBiYWNrZW5kIHJlcXVlc3Qg dGhhdCB3b3VsZApwdXNoIHRoZSB0b3RhbCBvdmVyIHRoZSBsaW1pdCB3aWxsIGJlIGRlbmllZCB3 aXRoIGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgY2F1c2luZwp0aGF0IGJhY2tlbmQncyBjdXJyZW50 IHF1ZXJ5L3RyYW5zYWN0aW9uIHRvIGZhaWwuIER1ZSB0byB0aGUgZHluYW1pYyBuYXR1cmUgb2YK bWVtb3J5IGFsbG9jYXRpb25zLCB0aGlzIGxpbWl0IGlzIG5vdCBleGFjdC4gSWYgd2l0aGluIDEu NU1CIG9mIHRoZSBsaW1pdCBhbmQKdHdvIGJhY2tlbmRzIHJlcXVlc3QgMU1CIGVhY2ggYXQgdGhl IHNhbWUgdGltZSBib3RoIG1heSBiZSBhbGxvY2F0ZWQsIGFuZCBleGNlZWQKdGhlIGxpbWl0LiBG dXJ0aGVyIHJlcXVlc3RzIHdpbGwgbm90IGJlIGFsbG9jYXRlZCB1bnRpbCBkcm9wcGluZyBiZWxv dyB0aGUKbGltaXQuIEtlZXAgdGhpcyBpbiBtaW5kIHdoZW4gc2V0dGluZyB0aGlzIHZhbHVlLiBU aGlzIGxpbWl0IGRvZXMgbm90IGFmZmVjdAphdXhpbGlhcnkgYmFja2VuZCBwcm9jZXNzZXMuIEJh Y2tlbmQgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBkaXNwbGF5ZWQgaW4gdGhlCnBnX3N0YXRfYWN0 aXZpdHkgdmlldy4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgfCAgMjYgKysrKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMgICAg ICAgICAgICB8ICAxMiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0 dXMuYyAgIHwgMTA4ICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMgICAgICAgICAgIHwgIDExICsrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0 LmMgICAgICAgICAgICAgICAgIHwgIDE3ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5l cmF0aW9uLmMgICAgICAgICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIu YyAgICAgICAgICAgICAgICAgfCAgIDggKysKIHNyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3Rh dHVzLmggICAgICAgICAgICB8ICAgMyArCiA5IGZpbGVzIGNoYW5nZWQsIDE5NyBpbnNlcnRpb25z KCspCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sCmluZGV4IDI0YjE2MjRiYWQuLmMyZGIzYWNlN2EgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAg LTIwNzksNiArMjA3OSwzMiBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAgICAgPC9saXN0aXRl bT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1h eC10b3RhbC1iYWNrZW5kLW1lbW9yeSIgeHJlZmxhYmVsPSJtYXhfdG90YWxfYmFja2VuZF9tZW1v cnkiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5PC92YXJu YW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxw cmltYXJ5Pjx2YXJuYW1lPm1heF90b3RhbF9iYWNrZW5kX21lbW9yeTwvdmFybmFtZT4gY29uZmln dXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwv dGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVz IGEgbGltaXQgdG8gdGhlIGFtb3VudCBvZiBtZW1vcnkgKE1CKSB0aGF0IG1heSBiZSBhbGxvY2F0 ZWQgdG8KKyAgICAgICAgYmFja2VuZHMgaW4gdG90YWwgKGkuZS4gdGhpcyBpcyBub3QgYSBwZXIg dXNlciBvciBwZXIgYmFja2VuZCBsaW1pdCkuCisgICAgICAgIElmIHVuc2V0LCBvciBzZXQgdG8g MCBpdCBpcyBkaXNhYmxlZC4gIEEgYmFja2VuZCByZXF1ZXN0IHRoYXQgd291bGQKKyAgICAgICAg cHVzaCB0aGUgdG90YWwgb3ZlciB0aGUgbGltaXQgd2lsbCBiZSBkZW5pZWQgd2l0aCBhbiBvdXQg b2YgbWVtb3J5CisgICAgICAgIGVycm9yIGNhdXNpbmcgdGhhdCBiYWNrZW5kJ3MgY3VycmVudCBx dWVyeS90cmFuc2FjdGlvbiB0byBmYWlsLiBEdWUgdG8KKyAgICAgICAgdGhlIGR5bmFtaWMgbmF0 dXJlIG9mIG1lbW9yeSBhbGxvY2F0aW9ucywgdGhpcyBsaW1pdCBpcyBub3QgZXhhY3QuIElmCisg ICAgICAgIHdpdGhpbiAxLjVNQiBvZiB0aGUgbGltaXQgYW5kIHR3byBiYWNrZW5kcyByZXF1ZXN0 IDFNQiBlYWNoIGF0IHRoZSBzYW1lCisgICAgICAgIHRpbWUgYm90aCBtYXkgYmUgYWxsb2NhdGVk LCBhbmQgZXhjZWVkIHRoZSBsaW1pdC4gRnVydGhlciByZXF1ZXN0cyB3aWxsCisgICAgICAgIG5v dCBiZSBhbGxvY2F0ZWQgdW50aWwgZHJvcHBpbmcgYmVsb3cgdGhlIGxpbWl0LiBLZWVwIHRoaXMg aW4gbWluZCB3aGVuCisgICAgICAgIHNldHRpbmcgdGhpcyB2YWx1ZS4gVGhpcyBsaW1pdCBkb2Vz IG5vdCBhZmZlY3QgYXV4aWxpYXJ5IGJhY2tlbmQKKyAgICAgICAgcHJvY2Vzc2VzIDx4cmVmIGxp bmtlbmQ9Imdsb3NzYXJ5LWF1eGlsaWFyeS1wcm9jIi8+IC4gQmFja2VuZCBtZW1vcnkKKyAgICAg ICAgYWxsb2NhdGlvbnMgKDx2YXJuYW1lPmFsbG9jYXRlZF9ieXRlczwvdmFybmFtZT4pIGFyZSBk aXNwbGF5ZWQgaW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9Im1vbml0b3JpbmctcGctc3Rh dC1hY3Rpdml0eS12aWV3Ij48c3RydWN0bmFtZT5wZ19zdGF0X2FjdGl2aXR5PC9zdHJ1Y3RuYW1l PjwvbGluaz4KKyAgICAgICAgdmlldy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVt PgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9z ZWN0Mj4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKaW5kZXggNjVkNTlmYzQzZS4uOGQ5 ZGY2NzZhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jCkBAIC0yNTQsNiArMjU0LDEw IEBAIGRzbV9pbXBsX3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVx dWVzdF9zaXplLAogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKKwkvKiBEbyBub3QgZXhjZWVkIG1heGlt dW0gYWxsb3dlZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRF ICYmIGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShyZXF1ZXN0X3NpemUpKQorCQlyZXR1cm4g ZmFsc2U7CisKIAkvKgogCSAqIENyZWF0ZSBuZXcgc2VnbWVudCBvciBvcGVuIGFuIGV4aXN0aW5n IG9uZSBmb3IgYXR0YWNoLgogCSAqCkBAIC01MjUsNiArNTI5LDEwIEBAIGRzbV9pbXBsX3N5c3Yo ZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCWludAkJ CWZsYWdzID0gSVBDUHJvdGVjdGlvbjsKIAkJc2l6ZV90CQlzZWdzaXplOwogCisJCS8qIERvIG5v dCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJCWlmIChvcCA9 PSBEU01fT1BfQ1JFQVRFICYmIGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShyZXF1ZXN0X3Np emUpKQorCQkJcmV0dXJuIGZhbHNlOworCiAJCS8qCiAJCSAqIEFsbG9jYXRlIHRoZSBtZW1vcnkg QkVGT1JFIGFjcXVpcmluZyB0aGUgcmVzb3VyY2UsIHNvIHRoYXQgd2UgZG9uJ3QKIAkJICogbGVh ayB0aGUgcmVzb3VyY2UgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCkBAIC03MTksNiArNzI3 LDEwIEBAIGRzbV9pbXBsX3dpbmRvd3MoZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6 ZSByZXF1ZXN0X3NpemUsCiAJCXJldHVybiB0cnVlOwogCX0KIAorCS8qIERvIG5vdCBleGNlZWQg bWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJaWYgKG9wID09IERTTV9PUF9D UkVBVEUgJiYgZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKHJlcXVlc3Rfc2l6ZSkpCisJCXJl dHVybiBmYWxzZTsKKwogCS8qIENyZWF0ZSBuZXcgc2VnbWVudCBvciBvcGVuIGFuIGV4aXN0aW5n IG9uZSBmb3IgYXR0YWNoLiAqLwogCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRFKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCmluZGV4IDM3ODVlOGFmNTMu LjA3ZGZkOGY0OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tl bmRfc3RhdHVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0 dXMuYwpAQCAtNDUsNiArNDUsOSBAQAogYm9vbAkJcGdzdGF0X3RyYWNrX2FjdGl2aXRpZXMgPSBm YWxzZTsKIGludAkJCXBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplID0gMTAyNDsKIAor LyogTWF4IGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRpb24gYWxsb3dlZCAoTUIpLiAwID0gZGlzYWJs ZWQgKi8KK2ludAkJCW1heF90b3RhbF9ia2VuZF9tZW0gPSAwOworCiAKIC8qIGV4cG9zZWQgc28g dGhhdCBiYWNrZW5kX3Byb2dyZXNzLmMgY2FuIGFjY2VzcyBpdCAqLwogUGdCYWNrZW5kU3RhdHVz ICpNeUJFRW50cnkgPSBOVUxMOwpAQCAtMTIzNiwzICsxMjM5LDEwOCBAQCBwZ3N0YXRfcmVzZXRf YWxsb2NhdGVkX2J5dGVzX3N0b3JhZ2Uodm9pZCkKIAlteV9hbGxvY2F0ZWRfYnl0ZXMgPSAmbG9j YWxfbXlfYWxsb2NhdGVkX2J5dGVzOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBwZ3N0YXRfZ2V0 X2FsbF9tZW1vcnlfYWxsb2NhdGVkKCkgLQorICoKKyAqCVJldHVybiBhIHVpbnQ2NCByZXByZXNl bnRpbmcgdGhlIGN1cnJlbnQgc2hhcmVkIG1lbW9yeSBhbGxvY2F0ZWQgdG8gYWxsCisgKgliYWNr ZW5kcy4gIFRoaXMgbG9va3MgZGlyZWN0bHkgYXQgdGhlIEJhY2tlbmRTdGF0dXNBcnJheSwgYW5k IHNvIHdpbGwKKyAqCXByb3ZpZGUgY3VycmVudCBpbmZvcm1hdGlvbiByZWdhcmRsZXNzIG9mIHRo ZSBhZ2Ugb2Ygb3VyIHRyYW5zYWN0aW9uJ3MKKyAqCXNuYXBzaG90IG9mIHRoZSBzdGF0dXMgYXJy YXkuCisgKglJbiB0aGUgZnV0dXJlIHdlIHdpbGwgbGlrZWx5IHV0aWxpemUgYWRkaXRpb25hbCB2 YWx1ZXMgLSBwZXJoYXBzIGxpbWl0CisgKgliYWNrZW5kIGFsbG9jYXRpb24gYnkgdXNlci9yb2xl LCBldGMuCisgKiAtLS0tLS0tLS0tCisgKi8KK3VpbnQ2NAorcGdzdGF0X2dldF9hbGxfYmFja2Vu ZF9tZW1vcnlfYWxsb2NhdGVkKHZvaWQpCit7CisJUGdCYWNrZW5kU3RhdHVzICpiZWVudHJ5Owor CWludAkJCWk7CisJdWludDY0CQlhbGxfbWVtb3J5X2FsbG9jYXRlZCA9IDA7CisKKwliZWVudHJ5 ID0gQmFja2VuZFN0YXR1c0FycmF5OworCisJLyoKKwkgKiBXZSBwcm9iYWJseSBzaG91bGRuJ3Qg Z2V0IGhlcmUgYmVmb3JlIHNoYXJlZCBtZW1vcnkgaGFzIGJlZW4gc2V0IHVwLAorCSAqIGJ1dCBi ZSBzYWZlLgorCSAqLworCWlmIChiZWVudHJ5ID09IE5VTEwgfHwgQmFja2VuZEFjdGl2aXR5QnVm ZmVyID09IE5VTEwpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBXZSBpbmNsdWRlIEFVWCBwcm9j cyBpbiBhbGwgYmFja2VuZCBtZW1vcnkgY2FsY3VsYXRpb24KKwkgKi8KKwlmb3IgKGkgPSAxOyBp IDw9IE51bUJhY2tlbmRTdGF0U2xvdHM7IGkrKykKKwl7CisJCS8qCisJCSAqIFdlIHVzZSBhIHZv bGF0aWxlIHBvaW50ZXIgaGVyZSB0byBlbnN1cmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgdHJ5CisJ CSAqIHRvIGdldCBjdXRlLgorCQkgKi8KKwkJdm9sYXRpbGUgUGdCYWNrZW5kU3RhdHVzICp2YmVl bnRyeSA9IGJlZW50cnk7CisJCWJvb2wJCWZvdW5kOworCQl1aW50NjQJCWFsbG9jYXRlZF9ieXRl cyA9IDA7CisKKwkJZm9yICg7OykKKwkJeworCQkJaW50CQkJYmVmb3JlX2NoYW5nZWNvdW50Owor CQkJaW50CQkJYWZ0ZXJfY2hhbmdlY291bnQ7CisKKwkJCXBnc3RhdF9iZWdpbl9yZWFkX2FjdGl2 aXR5KHZiZWVudHJ5LCBiZWZvcmVfY2hhbmdlY291bnQpOworCisJCQkvKgorCQkJICogSWdub3Jl IGludmFsaWQgZW50cmllcywgd2hpY2ggbWF5IGNvbnRhaW4gaW52YWxpZCBkYXRhLgorCQkJICog U2VlIHBnc3RhdF9iZXNodXRkb3duX2hvb2soKQorCQkJICovCisJCQlpZiAodmJlZW50cnktPnN0 X3Byb2NwaWQgPiAwKQorCQkJCWFsbG9jYXRlZF9ieXRlcyA9IHZiZWVudHJ5LT5hbGxvY2F0ZWRf Ynl0ZXM7CisKKwkJCXBnc3RhdF9lbmRfcmVhZF9hY3Rpdml0eSh2YmVlbnRyeSwgYWZ0ZXJfY2hh bmdlY291bnQpOworCisJCQlpZiAoKGZvdW5kID0gcGdzdGF0X3JlYWRfYWN0aXZpdHlfY29tcGxl dGUoYmVmb3JlX2NoYW5nZWNvdW50LAorCQkJCQkJCQkJCQkJCSAgIGFmdGVyX2NoYW5nZWNvdW50 KSkpCisJCQkJYnJlYWs7CisKKwkJCS8qIE1ha2Ugc3VyZSB3ZSBjYW4gYnJlYWsgb3V0IG9mIGxv b3AgaWYgc3R1Y2suLi4gKi8KKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KKworCQlp ZiAoZm91bmQpCisJCQlhbGxfbWVtb3J5X2FsbG9jYXRlZCArPSBhbGxvY2F0ZWRfYnl0ZXM7CisK KwkJYmVlbnRyeSsrOworCX0KKworCXJldHVybiBhbGxfbWVtb3J5X2FsbG9jYXRlZDsKK30KKwor LyoKKyAqIERldGVybWluZSBpZiBhbGxvY2F0aW9uIHJlcXVlc3Qgd2lsbCBleGNlZWQgbWF4IGJh Y2tlbmQgbWVtb3J5IGFsbG93ZWQuCisgKiBEbyBub3QgYXBwbHkgdG8gYXV4aWxpYXJ5IHByb2Nl c3Nlcy4KKyAqLworYm9vbAorZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKHVpbnQ2NCBhbGxv Y2F0aW9uX3JlcXVlc3QpCit7CisJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CisKKwkvKiBFeGNsdWRl IGF1eGlsaWFyeSBwcm9jZXNzZXMgZnJvbSB0aGUgY2hlY2sgKi8KKwlpZiAoTXlBdXhQcm9jVHlw ZSAhPSBOb3RBbkF1eFByb2Nlc3MpCisJCXJldHVybiByZXN1bHQ7CisKKwkvKiBDb252ZXJ0IG1h eF90b3RhbF9ia2VuZF9tZW0gdG8gYnl0ZXMgZm9yIGNvbXBhcmlzb24gKi8KKwlpZiAobWF4X3Rv dGFsX2JrZW5kX21lbSAmJgorCQlwZ3N0YXRfZ2V0X2FsbF9iYWNrZW5kX21lbW9yeV9hbGxvY2F0 ZWQoKSArCisJCWFsbG9jYXRpb25fcmVxdWVzdCA+ICh1aW50NjQpIG1heF90b3RhbF9ia2VuZF9t ZW0gKiAxMDI0ICogMTAyNCkKKwl7CisJCS8qCisJCSAqIEV4cGxpY2l0bHkgaWRlbnRpZnkgdGhl IE9PTSBiZWluZyBhIHJlc3VsdCBvZiB0aGlzIGNvbmZpZ3VyYXRpb24KKwkJICogcGFyYW1ldGVy IHZzIGEgc3lzdGVtIGZhaWx1cmUgdG8gYWxsb2NhdGUgT09NLgorCQkgKi8KKwkJZXJlcG9ydChX QVJOSU5HLAorCQkJCWVycm1zZygiYWxsb2NhdGlvbiB3b3VsZCBleGNlZWQgbWF4X3RvdGFsX21l bW9yeSBsaW1pdCAoJWxsdSA+ICVsbHUpIiwKKwkJCQkJICAgKHVuc2lnbmVkIGxvbmcgbG9uZykg cGdzdGF0X2dldF9hbGxfYmFja2VuZF9tZW1vcnlfYWxsb2NhdGVkKCkgKworCQkJCQkgICBhbGxv Y2F0aW9uX3JlcXVlc3QsICh1bnNpZ25lZCBsb25nIGxvbmcpIG1heF90b3RhbF9ia2VuZF9tZW0g KiAxMDI0ICogMTAyNCkpOworCisJCXJlc3VsdCA9IHRydWU7CisJfQorCisJcmV0dXJuIHJlc3Vs dDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggMzQ5ZGQ2YTUzNy4uYzIw YTY1NjMxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTM0MjMsNiArMzQy MywxNyBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwg TlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsibWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5IiwgUEdD X1NVX0JBQ0tFTkQsIFJFU09VUkNFU19NRU0sCisJCQlnZXR0ZXh0X25vb3AoIlJlc3RyaWN0IHRv dGFsIGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRpb25zIHRvIHRoaXMgbWF4LiIpLAorCQkJZ2V0dGV4 dF9ub29wKCIwIHR1cm5zIHRoaXMgZmVhdHVyZSBvZmYuIiksCisJCQlHVUNfVU5JVF9NQgorCQl9 LAorCQkmbWF4X3RvdGFsX2JrZW5kX21lbSwKKwkJMCwgMCwgSU5UX01BWCwKKwkJTlVMTCwgTlVM TCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8KIAl7CiAJCXtOVUxMLCAw LCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgMCwgMCwgMCwgTlVMTCwgTlVMTCwgTlVMTApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDg2OGQyMWMz NTEuLjFjZTBkZWU2ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKQEAgLTE1NSw2ICsxNTUsOSBAQAogCQkJCQkjICAgbW1hcAogCQkJCQkjIChj aGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtaW5fZHluYW1pY19zaGFyZWRfbWVtb3J5ID0gME1C CSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQorI21heF90b3RhbF9iYWNrZW5kX21lbW9yeSA9 IDBNQgkJIyBSZXN0cmljdCB0b3RhbCBiYWNrZW5kIG1lbW9yeSBhbGxvY2F0aW9ucworCQkJCQkJ CQkJIyB0byB0aGlzIG1heCAoaW4gTUIpLiAwIHR1cm5zIHRoaXMgZmVhdHVyZQorCQkJCQkJCQkJ IyBvZmYuCiAKICMgLSBEaXNrIC0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9hc2V0LmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYwppbmRleCBiMjAyZTExNWI2 Li41OTZmMWRiNDA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYwpAQCAtNDQwLDYgKzQ0MCwxMCBAQCBB bGxvY1NldENvbnRleHRDcmVhdGVJbnRlcm5hbChNZW1vcnlDb250ZXh0IHBhcmVudCwKIAllbHNl CiAJCWZpcnN0QmxvY2tTaXplID0gTWF4KGZpcnN0QmxvY2tTaXplLCBpbml0QmxvY2tTaXplKTsK IAorCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICov CisJaWYgKGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShmaXJzdEJsb2NrU2l6ZSkpCisJCXJl dHVybiBOVUxMOworCiAJLyoKIAkgKiBBbGxvY2F0ZSB0aGUgaW5pdGlhbCBibG9jay4gIFVubGlr ZSBvdGhlciBhc2V0LmMgYmxvY2tzLCBpdCBzdGFydHMgd2l0aAogCSAqIHRoZSBjb250ZXh0IGhl YWRlciBhbmQgaXRzIGJsb2NrIGhlYWRlciBmb2xsb3dzIHRoYXQuCkBAIC03NDEsNiArNzQ1LDEx IEBAIEFsbG9jU2V0QWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAjZW5k aWYKIAogCQlibGtzaXplID0gY2h1bmtfc2l6ZSArIEFMTE9DX0JMT0NLSERSU1ogKyBBTExPQ19D SFVOS0hEUlNaOworCisJCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBh bGxvY2F0aW9uICovCisJCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0oYmxrc2l6ZSkp CisJCQlyZXR1cm4gTlVMTDsKKwogCQlibG9jayA9IChBbGxvY0Jsb2NrKSBtYWxsb2MoYmxrc2l6 ZSk7CiAJCWlmIChibG9jayA9PSBOVUxMKQogCQkJcmV0dXJuIE5VTEw7CkBAIC05MzgsNiArOTQ3 LDEwIEBAIEFsbG9jU2V0QWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJ CXdoaWxlIChibGtzaXplIDwgcmVxdWlyZWRfc2l6ZSkKIAkJCWJsa3NpemUgPDw9IDE7CiAKKwkJ LyogRG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJ aWYgKGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShibGtzaXplKSkKKwkJCXJldHVybiBOVUxM OworCiAJCS8qIFRyeSB0byBhbGxvY2F0ZSBpdCAqLwogCQlibG9jayA9IChBbGxvY0Jsb2NrKSBt YWxsb2MoYmxrc2l6ZSk7CiAKQEAgLTExNzgsNiArMTE5MSwxMCBAQCBBbGxvY1NldFJlYWxsb2Mo dm9pZCAqcG9pbnRlciwgU2l6ZSBzaXplKQogCQlibGtzaXplID0gY2hrc2l6ZSArIEFMTE9DX0JM T0NLSERSU1ogKyBBTExPQ19DSFVOS0hEUlNaOwogCQlvbGRibGtzaXplID0gYmxvY2stPmVuZHB0 ciAtICgoY2hhciAqKSBibG9jayk7CiAKKwkJLyogRG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93 ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYgKGJsa3NpemUgPiBvbGRibGtzaXplICYmIGV4 Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShibGtzaXplIC0gb2xkYmxrc2l6ZSkpCisJCQlyZXR1 cm4gTlVMTDsKKwogCQlibG9jayA9IChBbGxvY0Jsb2NrKSByZWFsbG9jKGJsb2NrLCBibGtzaXpl KTsKIAkJaWYgKGJsb2NrID09IE5VTEwpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21tZ3IvZ2VuZXJhdGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9u LmMKaW5kZXggNDU5ZWI5ODVkNi4uMTQ1NDA5Y2YyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5l cmF0aW9uLmMKQEAgLTIwMSw2ICsyMDEsOSBAQCBHZW5lcmF0aW9uQ29udGV4dENyZWF0ZShNZW1v cnlDb250ZXh0IHBhcmVudCwKIAllbHNlCiAJCWFsbG9jU2l6ZSA9IE1heChhbGxvY1NpemUsIGlu aXRCbG9ja1NpemUpOwogCisJaWYgKGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShhbGxvY1Np emUpKQorCQlyZXR1cm4gTlVMTDsKKwogCS8qCiAJICogQWxsb2NhdGUgdGhlIGluaXRpYWwgYmxv Y2suICBVbmxpa2Ugb3RoZXIgZ2VuZXJhdGlvbi5jIGJsb2NrcywgaXQKIAkgKiBzdGFydHMgd2l0 aCB0aGUgY29udGV4dCBoZWFkZXIgYW5kIGl0cyBibG9jayBoZWFkZXIgZm9sbG93cyB0aGF0LgpA QCAtMzgwLDYgKzM4Myw5IEBAIEdlbmVyYXRpb25BbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQs IFNpemUgc2l6ZSkKIAl7CiAJCVNpemUJCWJsa3NpemUgPSByZXF1aXJlZF9zaXplICsgR2VuZXJh dGlvbl9CTE9DS0hEUlNaOwogCisJCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0oYmxr c2l6ZSkpCisJCQlyZXR1cm4gTlVMTDsKKwogCQlibG9jayA9IChHZW5lcmF0aW9uQmxvY2sgKikg bWFsbG9jKGJsa3NpemUpOwogCQlpZiAoYmxvY2sgPT0gTlVMTCkKIAkJCXJldHVybiBOVUxMOwpA QCAtNDgzLDYgKzQ4OSw5IEBAIEdlbmVyYXRpb25BbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQs IFNpemUgc2l6ZSkKIAkJCWlmIChibGtzaXplIDwgcmVxdWlyZWRfc2l6ZSkKIAkJCQlibGtzaXpl ID0gcGdfbmV4dHBvd2VyMl9zaXplX3QocmVxdWlyZWRfc2l6ZSk7CiAKKwkJCWlmIChleGNlZWRz X21heF90b3RhbF9ia2VuZF9tZW0oYmxrc2l6ZSkpCisJCQkJcmV0dXJuIE5VTEw7CisKIAkJCWJs b2NrID0gKEdlbmVyYXRpb25CbG9jayAqKSBtYWxsb2MoYmxrc2l6ZSk7CiAKIAkJCWlmIChibG9j ayA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYwppbmRleCBmMzgyNTZmNmYzLi45MzA0ZTEzNjM4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3NsYWIuYwpAQCAtMTk3LDYgKzE5NywxMCBAQCBTbGFiQ29udGV4dENy ZWF0ZShNZW1vcnlDb250ZXh0IHBhcmVudCwKIAloZWFkZXJTaXplICs9IGNodW5rc1BlckJsb2Nr ICogc2l6ZW9mKGJvb2wpOwogI2VuZGlmCiAKKwkvKiBEbyBub3QgZXhjZWVkIG1heGltdW0gYWxs b3dlZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9t ZW0oaGVhZGVyU2l6ZSkpCisJCXJldHVybiBOVUxMOworCiAJc2xhYiA9IChTbGFiQ29udGV4dCAq KSBtYWxsb2MoaGVhZGVyU2l6ZSk7CiAJaWYgKHNsYWIgPT0gTlVMTCkKIAl7CkBAIC0zNTEsNiAr MzU1LDEwIEBAIFNsYWJBbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSkKIAkg Ki8KIAlpZiAoc2xhYi0+bWluRnJlZUNodW5rcyA9PSAwKQogCXsKKwkJLyogRG8gbm90IGV4Y2Vl ZCBtYXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYgKGV4Y2VlZHNfbWF4 X3RvdGFsX2JrZW5kX21lbShzbGFiLT5ibG9ja1NpemUpKQorCQkJcmV0dXJuIE5VTEw7CisKIAkJ YmxvY2sgPSAoU2xhYkJsb2NrICopIG1hbGxvYyhzbGFiLT5ibG9ja1NpemUpOwogCiAJCWlmIChi bG9jayA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0 dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKaW5kZXggZTVhYTkwYjEw MS4uOTQ1MjhhYTY1MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0 dXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCkBAIC0yODYsNiAr Mjg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9jYWxQZ0JhY2tlbmRTdGF0dXMKICAqLwogZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgcGdzdGF0X3RyYWNrX2FjdGl2aXRpZXM7CiBleHRlcm4gUEdETExJ TVBPUlQgaW50IHBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplOworZXh0ZXJuIFBHRExM SU1QT1JUIGludCBtYXhfdG90YWxfYmtlbmRfbWVtOwogCiAKIC8qIC0tLS0tLS0tLS0KQEAgLTMy NSw2ICszMjYsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF9iYWNrZW5kX2N1cnJl bnRfYWN0aXZpdHkoaW50IHBpZCwgYm9vbCBjaGVja1VzZXIpOwogZXh0ZXJuIGNvbnN0IGNoYXIg KnBnc3RhdF9nZXRfY3Jhc2hlZF9iYWNrZW5kX2FjdGl2aXR5KGludCBwaWQsIGNoYXIgKmJ1ZmZl ciwKIAkJCQkJCQkJCQkJCQkgICBpbnQgYnVmbGVuKTsKIGV4dGVybiB1aW50NjQgcGdzdGF0X2dl dF9teV9xdWVyeV9pZCh2b2lkKTsKK2V4dGVybiB1aW50NjQgcGdzdGF0X2dldF9hbGxfYmFja2Vu ZF9tZW1vcnlfYWxsb2NhdGVkKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3NldF9hbGxvY2F0 ZWRfYnl0ZXNfc3RvcmFnZSh1aW50NjQgKmFsbG9jYXRlZF9ieXRlcyk7CiBleHRlcm4gdm9pZCBw Z3N0YXRfcmVzZXRfYWxsb2NhdGVkX2J5dGVzX3N0b3JhZ2Uodm9pZCk7CiAKQEAgLTMzNyw2ICsz MzksNyBAQCBleHRlcm4gaW50CXBnc3RhdF9mZXRjaF9zdGF0X251bWJhY2tlbmRzKHZvaWQpOwog ZXh0ZXJuIFBnQmFja2VuZFN0YXR1cyAqcGdzdGF0X2ZldGNoX3N0YXRfYmVlbnRyeShCYWNrZW5k SWQgYmVpZCk7CiBleHRlcm4gTG9jYWxQZ0JhY2tlbmRTdGF0dXMgKnBnc3RhdF9mZXRjaF9zdGF0 X2xvY2FsX2JlZW50cnkoaW50IGJlaWQpOwogZXh0ZXJuIGNoYXIgKnBnc3RhdF9jbGlwX2FjdGl2 aXR5KGNvbnN0IGNoYXIgKnJhd19hY3Rpdml0eSk7CitleHRlcm4gYm9vbCBleGNlZWRzX21heF90 b3RhbF9ia2VuZF9tZW0odWludDY0IGFsbG9jYXRpb25fcmVxdWVzdCk7CiAKIC8qIC0tLS0tLS0t LS0KICAqIHBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzKCkgLQotLSAKMi4yNS4xCgo= --=-4PREkPt0YIg9MselCQoI Content-Disposition: attachment; filename*0=0001-Add-tracking-of-backend-memory-allocated-to-pg_stat_.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-Add-tracking-of-backend-memory-allocated-to-pg_stat_.patch"; charset="UTF-8" RnJvbSAzZDc3MmQ4NjIwZmFiYTRiZDRlMDkxZDY2MThjNjM1NTdmYmY2NzQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSZWlkIFRob21wc29uIDxqcmVpZHRob21wc29uQG5jLnJyLmNv bT4KRGF0ZTogVGh1LCAxMSBBdWcgMjAyMiAxMjowMToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MS8yXSBBZGQgdHJhY2tpbmcgb2YgYmFja2VuZCBtZW1vcnkgYWxsb2NhdGVkIHRvCiBwZ19zdGF0 X2FjdGl2aXR5CgpUaGlzIG5ldyBmaWVsZCBkaXNwbGF5cyB0aGUgY3VycmVudCBieXRlcyBvZiBt ZW1vcnkgYWxsb2NhdGVkIHRvIHRoZQpiYWNrZW5kIHByb2Nlc3MuIEl0IGlzIHVwZGF0ZWQgYXMg bWVtb3J5IGZvciB0aGUgcHJvY2VzcyBpcwptYWxsb2MnZC9mcmVlJ2QuIE1lbW9yeSBhbGxvY2F0 ZWQgdG8gaXRlbXMgb24gdGhlIGZyZWVsaXN0IGlzIGluY2x1ZGVkIGluCnRoZSBkaXNwbGF5ZWQg dmFsdWUuICBEeW5hbWljIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGluY2x1ZGVkCm9u bHkgaW4gdGhlIHZhbHVlIGRpc3BsYXllZCBmb3IgdGhlIGJhY2tlbmQgdGhhdCBjcmVhdGVkIHRo ZW0sIHRoZXkgYXJlCm5vdCBpbmNsdWRlZCBpbiB0aGUgdmFsdWUgZm9yIGJhY2tlbmRzIHRoYXQg YXJlIGF0dGFjaGVkIHRvIHRoZW0gdG8KYXZvaWQgZG91YmxlIGNvdW50aW5nLiBPbiBvY2Nhc2lv biwgb3JwaGFuZWQgbWVtb3J5IHNlZ21lbnRzIG1heSBiZQpjbGVhbmVkIHVwIG9uIHBvc3RtYXN0 ZXIgc3RhcnR1cC4gVGhpcyBtYXkgcmVzdWx0IGluIGRlY3JlYXNpbmcgdGhlIHN1bQp3aXRob3V0 IGEgcHJpb3IgaW5jcmVtZW50LiBXZSBsaW1pdCB0aGUgZmxvb3Igb2YgYmFja2VuZF9tZW1fYWxs b2NhdGVkCnRvIHplcm8uIFVwZGF0ZWQgcGdfc3RhdF9hY3Rpdml0eSBkb2N1bWVudGF0aW9uIGZv ciB0aGUgbmV3IGNvbHVtbi4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAg ICAgICAgICAgIHwgMTUgKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs ICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICAgICAg ICAgfCAgNiArKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAgICAgICB8 IDEzICsrKysKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgICAgICAgICAgfCAg MyArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jICAgICAgICAgIHwgODEgKysr KysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0 YXR1cy5jIHwgNDUgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVu Y3MuYyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jICAgICAg ICAgICAgICAgfCAxNyArKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMg ICAgICAgICB8IDE1ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jICAgICAgICAg ICAgICAgfCAyMSArKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAg ICAgICAgfCAgNiArLQogc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaCAgICAgICAg ICB8IDU5ICsrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQgICAgICAgICB8ICA5ICsrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQg ICAgICAgICB8IDExICsrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsICAgICAgICAg ICAgICB8ICAzICsKIDE2IGZpbGVzIGNoYW5nZWQsIDMwMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDU1NzliOGI5ZTAuLmZmZTdkMjU2NmMgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbApAQCAtOTQ3LDYgKzk0NywyMSBAQCBwb3N0Z3JlcyAgIDI3MDkzICAw LjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6 IHNlcgogICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICA8L3Jvdz4KIAorICAgIDxyb3c+CisgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICA8c3RydWN0ZmllbGQ+YWxsb2NhdGVkX2J5dGVzPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAg TWVtb3J5IGN1cnJlbnRseSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kIGluIGJ5dGVzLiBUaGlz IGlzIHRoZSBiYWxhbmNlCisgICAgICBvZiBieXRlcyBhbGxvY2F0ZWQgYW5kIGZyZWVkIGJ5IHRo aXMgYmFja2VuZC4gRHluYW1pYyBzaGFyZWQgbWVtb3J5CisgICAgICBhbGxvY2F0aW9ucyBhcmUg aW5jbHVkZWQgb25seSBpbiB0aGUgdmFsdWUgZGlzcGxheWVkIGZvciB0aGUgYmFja2VuZCB0aGF0 CisgICAgICBjcmVhdGVkIHRoZW0sIHRoZXkgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgdmFsdWUg Zm9yIGJhY2tlbmRzIHRoYXQgYXJlCisgICAgICBhdHRhY2hlZCB0byB0aGVtIHRvIGF2b2lkIGRv dWJsZSBjb3VudGluZy4gVXNlIDxmdW5jdGlvbj5wZ19zaXplX3ByZXR0eTwvZnVuY3Rpb24+Cisg ICAgICBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWFkbWluLWRic2l6ZSIv PiB0byBtYWtlIHRoaXMgdmFsdWUKKyAgICAgIG1vcmUgZWFzaWx5IHJlYWRhYmxlLgorICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K ICAgICAgICA8c3RydWN0ZmllbGQ+cXVlcnk8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBl PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDJkODEwNGIwOTAuLjllYThm NzhjOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTg2NCw2ICs4NjQs NyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2FjdGl2aXR5IEFTCiAgICAgICAgICAgICBTLnN0YXRl LAogICAgICAgICAgICAgUy5iYWNrZW5kX3hpZCwKICAgICAgICAgICAgIHMuYmFja2VuZF94bWlu LAorICAgICAgICAgICAgUy5hbGxvY2F0ZWRfYnl0ZXMsCiAgICAgICAgICAgICBTLnF1ZXJ5X2lk LAogICAgICAgICAgICAgUy5xdWVyeSwKICAgICAgICAgICAgIFMuYmFja2VuZF90eXBlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDYwMTgzNGQ0YjQuLmY1NDYwNjEwNGQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC00MDcsNiArNDA3LDkgQEAgU3RhcnRB dXRvVmFjTGF1bmNoZXIodm9pZCkKIAogI2lmbmRlZiBFWEVDX0JBQ0tFTkQKIAkJY2FzZSAwOgor CQkJLyogWmVybyBhbGxvY2F0ZWQgYnl0ZXMgdG8gYXZvaWQgZG91YmxlIGNvdW50aW5nIHBhcmVu dCBhbGxvY2F0aW9uICovCisJCQlwZ3N0YXRfemVyb19teV9hbGxvY2F0ZWRfYnl0ZXMoKTsKKwog CQkJLyogaW4gcG9zdG1hc3RlciBjaGlsZCAuLi4gKi8KIAkJCUluaXRQb3N0bWFzdGVyQ2hpbGQo KTsKIApAQCAtMTQ4NSw2ICsxNDg4LDkgQEAgU3RhcnRBdXRvVmFjV29ya2VyKHZvaWQpCiAKICNp Zm5kZWYgRVhFQ19CQUNLRU5ECiAJCWNhc2UgMDoKKwkJCS8qIFplcm8gYWxsb2NhdGVkIGJ5dGVz IHRvIGF2b2lkIGRvdWJsZSBjb3VudGluZyBwYXJlbnQgYWxsb2NhdGlvbiAqLworCQkJcGdzdGF0 X3plcm9fbXlfYWxsb2NhdGVkX2J5dGVzKCk7CisKIAkJCS8qIGluIHBvc3RtYXN0ZXIgY2hpbGQg Li4uICovCiAJCQlJbml0UG9zdG1hc3RlckNoaWxkKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0 bWFzdGVyLmMKaW5kZXggYThhMjQ2OTIxZi4uODlhNmNhZWM3OCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMKQEAgLTQxMDIsNiArNDEwMiw5IEBAIEJhY2tlbmRTdGFydHVwKFBvcnQg KnBvcnQpCiAJewogCQlmcmVlKGJuKTsKIAorCQkvKiBaZXJvIGFsbG9jYXRlZCBieXRlcyB0byBh dm9pZCBkb3VibGUgY291bnRpbmcgcGFyZW50IGFsbG9jYXRpb24gKi8KKwkJcGdzdGF0X3plcm9f bXlfYWxsb2NhdGVkX2J5dGVzKCk7CisKIAkJLyogRGV0YW5nbGUgZnJvbSBwb3N0bWFzdGVyICov CiAJCUluaXRQb3N0bWFzdGVyQ2hpbGQoKTsKIApAQCAtNTMwNyw2ICs1MzEwLDExIEBAIFN0YXJ0 Q2hpbGRQcm9jZXNzKEF1eFByb2NUeXBlIHR5cGUpCiAJCU1lbW9yeUNvbnRleHREZWxldGUoUG9z dG1hc3RlckNvbnRleHQpOwogCQlQb3N0bWFzdGVyQ29udGV4dCA9IE5VTEw7CiAKKwkJLyogWmVy byBhbGxvY2F0ZWQgYnl0ZXMgdG8gYXZvaWQgZG91YmxlIGNvdW50aW5nIHBhcmVudCBhbGxvY2F0 aW9uLgorCQkgKiBOZWVkcyB0byBiZSBhZnRlciB0aGUgTWVtb3J5Q29udGV4dERlbGV0ZShQb3N0 bWFzdGVyQ29udGV4dCkgYWJvdmUuCisJCSAqLworCQlwZ3N0YXRfemVyb19teV9hbGxvY2F0ZWRf Ynl0ZXMoKTsKKwogCQlBdXhpbGlhcnlQcm9jZXNzTWFpbih0eXBlKTsgLyogZG9lcyBub3QgcmV0 dXJuICovCiAJfQogI2VuZGlmCQkJCQkJCS8qIEVYRUNfQkFDS0VORCAqLwpAQCAtNTcwMCw2ICs1 NzA4LDExIEBAIGRvX3N0YXJ0X2Jnd29ya2VyKFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpCiAJCQlN ZW1vcnlDb250ZXh0RGVsZXRlKFBvc3RtYXN0ZXJDb250ZXh0KTsKIAkJCVBvc3RtYXN0ZXJDb250 ZXh0ID0gTlVMTDsKIAorCQkJLyogWmVybyBhbGxvY2F0ZWQgYnl0ZXMgdG8gYXZvaWQgZG91Ymxl IGNvdW50aW5nIHBhcmVudCBhbGxvY2F0aW9uLgorCQkJICogTmVlZHMgdG8gYmUgYWZ0ZXIgdGhl IE1lbW9yeUNvbnRleHREZWxldGUoUG9zdG1hc3RlckNvbnRleHQpIGFib3ZlLgorCQkJICovCisJ CQlwZ3N0YXRfemVyb19teV9hbGxvY2F0ZWRfYnl0ZXMoKTsKKwogCQkJU3RhcnRCYWNrZ3JvdW5k V29ya2VyKCk7CiAKIAkJCWV4aXQoMSk7CQkJLyogc2hvdWxkIG5vdCBnZXQgaGVyZSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKaW5kZXggZDZkMDJlM2M2My4uNGNiYzU5Y2RhNSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCkBAIC02NzksNiArNjc5LDkgQEAgU3lzTG9nZ2Vy X1N0YXJ0KHZvaWQpCiAKICNpZm5kZWYgRVhFQ19CQUNLRU5ECiAJCWNhc2UgMDoKKwkJCS8qIFpl cm8gYWxsb2NhdGVkIGJ5dGVzIHRvIGF2b2lkIGRvdWJsZSBjb3VudGluZyBwYXJlbnQgYWxsb2Nh dGlvbiAqLworCQkJcGdzdGF0X3plcm9fbXlfYWxsb2NhdGVkX2J5dGVzKCk7CisKIAkJCS8qIGlu IHBvc3RtYXN0ZXIgY2hpbGQgLi4uICovCiAJCQlJbml0UG9zdG1hc3RlckNoaWxkKCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jCmluZGV4IDZkZGQ0NmE0ZTcuLjY1ZDU5ZmM0M2UgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYwpAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUg InBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtX2ltcGwuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMu aCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog CkBAIC0yMzIsNiArMjMzLDE0IEBAIGRzbV9pbXBsX3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hhbmRs ZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJCW5hbWUpKSk7CiAJCQlyZXR1cm4g ZmFsc2U7CiAJCX0KKworCQkvKgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ryb3kgcGFzcyB0aHJvdWdo IGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhlIG1lbW9yeQorCQkgKiBzaG93biBhbGxvY2F0ZWQgaW4g cGdfc3RhdF9hY3Rpdml0eSB3aGVuIHRoZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkgKiBhbGxv Y2F0aW9uLgorCQkgKi8KKwkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9ZKQorCQkJcGdzdGF0X3Jl cG9ydF9hbGxvY2F0ZWRfYnl0ZXMoKm1hcHBlZF9zaXplLCBERUNSRUFTRSk7CiAJCSptYXBwZWRf YWRkcmVzcyA9IE5VTEw7CiAJCSptYXBwZWRfc2l6ZSA9IDA7CiAJCWlmIChvcCA9PSBEU01fT1Bf REVTVFJPWSAmJiBzaG1fdW5saW5rKG5hbWUpICE9IDApCkBAIC0zMzIsNiArMzQxLDM2IEBAIGRz bV9pbXBsX3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9z aXplLAogCQkJCQkJbmFtZSkpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KKworCS8qCisJICogQXR0 YWNoIGFuZCBjcmVhdGUgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgdXBkYXRlIGJhY2tlbmQgbWVt b3J5CisJICogYWxsb2NhdGVkIGluIHBnX3N0YXRfYWN0aXZpdHkgZm9yIHRoZSBjcmVhdG9yIHBy b2Nlc3MuCisJICovCisJaWYgKG9wID09IERTTV9PUF9DUkVBVEUpCisJeworCQkvKgorCQkgKiBQ b3NpeCBjcmVhdGlvbiBjYWxscyBkc21faW1wbF9wb3NpeF9yZXNpemUgaW1wbHlpbmcgdGhhdCBy ZXNpemluZworCQkgKiBvY2N1cnMgb3IgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuIEFzIGlt cGxlbWVudGVkCisJCSAqIGRzbV9pbXBsX3Bvc2l4X3Jlc2l6ZSB1dGlsaXplcyBmYWxsb2NhdGUg b3IgdHJ1bmNhdGUsIHBhc3NpbmcgdGhlCisJCSAqIHdob2xlIG5ldyBzaXplIGFzIGlucHV0LCBn cm93aW5nIHRoZSBhbGxvY2F0aW9uIGFzIG5lZWRlZCAob25seQorCQkgKiB0cnVuY2F0ZSBzdXBw b3J0cyBzaHJpbmtpbmcpLiBXZSB1cGRhdGUgYnkgcmVwbGFjaW5nIHRoZSBvbGQKKwkJICogYWxs b2NhdGlvbiB3aXRoIHRoZSBuZXcuCisJCSAqLworI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQUxM T0NBVEUpICYmIGRlZmluZWQoX19saW51eF9fKQorCQkvKgorCQkgKiBwb3NpeF9mYWxsb2NhdGUg ZG9lcyBub3Qgc2hyaW5rIGFsbG9jYXRpb25zLCBhZGp1c3Qgb25seSBvbgorCQkgKiBhbGxvY2F0 aW9uIGluY3JlYXNlLgorCQkgKi8KKwkJaWYgKHJlcXVlc3Rfc2l6ZSA+ICptYXBwZWRfc2l6ZSkK KwkJeworCQkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXMoKm1hcHBlZF9zaXplLCBERUNS RUFTRSk7CisJCQlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlcyhyZXF1ZXN0X3NpemUsIElO Q1JFQVNFKTsKKwkJfQorI2Vsc2UKKwkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXMoKm1h cHBlZF9zaXplLCBERUNSRUFTRSk7CisJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzKHJl cXVlc3Rfc2l6ZSwgSU5DUkVBU0UpOworI2VuZGlmCisJfQogCSptYXBwZWRfYWRkcmVzcyA9IGFk ZHJlc3M7CiAJKm1hcHBlZF9zaXplID0gcmVxdWVzdF9zaXplOwogCWNsb3NlKGZkKTsKQEAgLTUz Nyw2ICs1NzYsMTQgQEAgZHNtX2ltcGxfc3lzdihkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxl LCBTaXplIHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCQluYW1lKSkpOwogCQkJcmV0dXJuIGZhbHNlOwog CQl9CisKKwkJLyoKKwkJICogRGV0YWNoIGFuZCBkZXN0cm95IHBhc3MgdGhyb3VnaCBoZXJlLCBv bmx5IGRlY3JlYXNlIHRoZSBtZW1vcnkKKwkJICogc2hvd24gYWxsb2NhdGVkIGluIHBnX3N0YXRf YWN0aXZpdHkgd2hlbiB0aGUgY3JlYXRvciBkZXN0cm95cyB0aGUKKwkJICogYWxsb2NhdGlvbi4K KwkJICovCisJCWlmIChvcCA9PSBEU01fT1BfREVTVFJPWSkKKwkJCXBnc3RhdF9yZXBvcnRfYWxs b2NhdGVkX2J5dGVzKCptYXBwZWRfc2l6ZSwgREVDUkVBU0UpOwogCQkqbWFwcGVkX2FkZHJlc3Mg PSBOVUxMOwogCQkqbWFwcGVkX3NpemUgPSAwOwogCQlpZiAob3AgPT0gRFNNX09QX0RFU1RST1kg JiYgc2htY3RsKGlkZW50LCBJUENfUk1JRCwgTlVMTCkgPCAwKQpAQCAtNTg0LDYgKzYzMSwxMyBA QCBkc21faW1wbF9zeXN2KGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVz dF9zaXplLAogCQkJCQkJbmFtZSkpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KKworCS8qCisJICog QXR0YWNoIGFuZCBjcmVhdGUgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgdXBkYXRlIGJhY2tlbmQg bWVtb3J5CisJICogYWxsb2NhdGVkIGluIHBnX3N0YXRfYWN0aXZpdHkgZm9yIHRoZSBjcmVhdG9y IHByb2Nlc3MuCisJICovCisJaWYgKG9wID09IERTTV9PUF9DUkVBVEUpCisJCXBnc3RhdF9yZXBv cnRfYWxsb2NhdGVkX2J5dGVzKHJlcXVlc3Rfc2l6ZSwgSU5DUkVBU0UpOwogCSptYXBwZWRfYWRk cmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0gcmVxdWVzdF9zaXplOwogCkBAIC02NTIs NiArNzA2LDEzIEBAIGRzbV9pbXBsX3dpbmRvd3MoZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRs ZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAorCQkvKgorCQkg KiBEZXRhY2ggYW5kIGRlc3Ryb3kgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhl IG1lbW9yeQorCQkgKiBzaG93biBhbGxvY2F0ZWQgaW4gcGdfc3RhdF9hY3Rpdml0eSB3aGVuIHRo ZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkgKiBhbGxvY2F0aW9uLgorCQkgKi8KKwkJaWYgKG9w ID09IERTTV9PUF9ERVNUUk9ZKQorCQkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXMoKm1h cHBlZF9zaXplLCBERUNSRUFTRSk7CiAJCSppbXBsX3ByaXZhdGUgPSBOVUxMOwogCQkqbWFwcGVk X2FkZHJlc3MgPSBOVUxMOwogCQkqbWFwcGVkX3NpemUgPSAwOwpAQCAtNzY4LDYgKzgyOSwxMiBA QCBkc21faW1wbF93aW5kb3dzKGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVx dWVzdF9zaXplLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCisJLyoKKwkgKiBBdHRhY2ggYW5kIGNy ZWF0ZSBwYXNzIHRocm91Z2ggaGVyZSwgb25seSB1cGRhdGUgYmFja2VuZCBtZW1vcnkKKwkgKiBh bGxvY2F0ZWQgaW4gcGdfc3RhdF9hY3Rpdml0eSBmb3IgdGhlIGNyZWF0b3IgcHJvY2Vzcy4KKwkg Ki8KKwlpZiAob3AgPT0gRFNNX09QX0NSRUFURSkKKwkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRf Ynl0ZXMoaW5mby5SZWdpb25TaXplLCBJTkNSRUFTRSk7CiAJKm1hcHBlZF9hZGRyZXNzID0gYWRk cmVzczsKIAkqbWFwcGVkX3NpemUgPSBpbmZvLlJlZ2lvblNpemU7CiAJKmltcGxfcHJpdmF0ZSA9 IGhtYXA7CkBAIC04MTIsNiArODc5LDEzIEBAIGRzbV9pbXBsX21tYXAoZHNtX29wIG9wLCBkc21f aGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCQkJCQkJbmFtZSkpKTsKIAkJCXJl dHVybiBmYWxzZTsKIAkJfQorCisJCS8qCisJCSAqIERldGFjaCBhbmQgZGVzdHJveSBwYXNzIHRo cm91Z2ggaGVyZSwgb25seSBkZWNyZWFzZSB0aGUgbWVtb3J5CisJCSAqIHNob3duIGFsbG9jYXRl ZCBpbiBwZ19zdGF0X2FjdGl2aXR5IHdoZW4gdGhlIGNyZWF0b3IgZGVzdHJveXMgdGhlCisJCSAq IGFsbG9jYXRpb24uCisJCSAqLworCQlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlcygqbWFw cGVkX3NpemUsIERFQ1JFQVNFKTsKIAkJKm1hcHBlZF9hZGRyZXNzID0gTlVMTDsKIAkJKm1hcHBl ZF9zaXplID0gMDsKIAkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9ZICYmIHVubGluayhuYW1lKSAh PSAwKQpAQCAtOTMzLDYgKzEwMDcsMTMgQEAgZHNtX2ltcGxfbW1hcChkc21fb3Agb3AsIGRzbV9o YW5kbGUgaGFuZGxlLCBTaXplIHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCW5hbWUpKSk7CiAJCXJldHVy biBmYWxzZTsKIAl9CisKKwkvKgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBo ZXJlLCBvbmx5IHVwZGF0ZSBiYWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ19zdGF0 X2FjdGl2aXR5IGZvciB0aGUgY3JlYXRvciBwcm9jZXNzLgorCSAqLworCWlmIChvcCA9PSBEU01f T1BfQ1JFQVRFKQorCQlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlcyhyZXF1ZXN0X3NpemUs IElOQ1JFQVNFKTsKIAkqbWFwcGVkX2FkZHJlc3MgPSBhZGRyZXNzOwogCSptYXBwZWRfc2l6ZSA9 IHJlcXVlc3Rfc2l6ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv YmFja2VuZF9zdGF0dXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3Rh dHVzLmMKaW5kZXggMTE0NmE2YzMzYy4uMzc4NWU4YWY1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCkBAIC00OSw2ICs0OSw5IEBAIGludAkJCXBnc3Rh dF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplID0gMTAyNDsKIC8qIGV4cG9zZWQgc28gdGhhdCBi YWNrZW5kX3Byb2dyZXNzLmMgY2FuIGFjY2VzcyBpdCAqLwogUGdCYWNrZW5kU3RhdHVzICpNeUJF RW50cnkgPSBOVUxMOwogCisvKiBNZW1vcnkgYWxsb2NhdGVkIHRvIHRoaXMgYmFja2VuZCBwcmlv ciB0byBwZ3N0YXRzIGluaXRpYWxpemF0aW9uICovCit1aW50NjQJbG9jYWxfbXlfYWxsb2NhdGVk X2J5dGVzID0gMDsKK3VpbnQ2NAkqbXlfYWxsb2NhdGVkX2J5dGVzID0gJmxvY2FsX215X2FsbG9j YXRlZF9ieXRlczsKIAogc3RhdGljIFBnQmFja2VuZFN0YXR1cyAqQmFja2VuZFN0YXR1c0FycmF5 ID0gTlVMTDsKIHN0YXRpYyBjaGFyICpCYWNrZW5kQXBwbmFtZUJ1ZmZlciA9IE5VTEw7CkBAIC00 MDAsNiArNDAzLDE1IEBAIHBnc3RhdF9iZXN0YXJ0KHZvaWQpCiAJbGJlZW50cnkuc3RfcHJvZ3Jl c3NfY29tbWFuZF90YXJnZXQgPSBJbnZhbGlkT2lkOwogCWxiZWVudHJ5LnN0X3F1ZXJ5X2lkID0g VUlOVDY0Q09OU1QoMCk7CiAKKwkvKiBBbHRlciBhbGxvY2F0aW9uIHJlcG9ydGluZyBmcm9tIGxv Y2FsX215X2FsbG9jYXRlZF9ieXRlcyB0byBzaGFyZWQgbWVtb3J5ICovCisJcGdzdGF0X3NldF9h bGxvY2F0ZWRfYnl0ZXNfc3RvcmFnZSgmTXlCRUVudHJ5LT5hbGxvY2F0ZWRfYnl0ZXMpOworCisJ LyogUG9wdWxhdGUgc3VtIG9mIG1lbW9yeSBhbGxvY2F0ZWQgcHJpb3IgdG8gcGdzdGF0cyBpbml0 aWFsaXphdGlvbiB0byBwZ3N0YXRzCisJICogYW5kIHplcm8gdGhlIGxvY2FsIHZhcmlhYmxlLgor CSAqLworCWxiZWVudHJ5LmFsbG9jYXRlZF9ieXRlcyArPSBsb2NhbF9teV9hbGxvY2F0ZWRfYnl0 ZXM7CisJbG9jYWxfbXlfYWxsb2NhdGVkX2J5dGVzID0gMDsKKwogCS8qCiAJICogd2UgZG9uJ3Qg emVybyBzdF9wcm9ncmVzc19wYXJhbSBoZXJlIHRvIHNhdmUgY3ljbGVzOyBub2JvZHkgc2hvdWxk CiAJICogZXhhbWluZSBpdCB1bnRpbCBzdF9wcm9ncmVzc19jb21tYW5kIGhhcyBiZWVuIHNldCB0 byBzb21ldGhpbmcgb3RoZXIKQEAgLTQ1OSw2ICs0NzEsMTEgQEAgcGdzdGF0X2Jlc2h1dGRvd25f aG9vayhpbnQgY29kZSwgRGF0dW0gYXJnKQogewogCXZvbGF0aWxlIFBnQmFja2VuZFN0YXR1cyAq YmVlbnRyeSA9IE15QkVFbnRyeTsKIAorCS8qCisJICogU3RvcCByZXBvcnRpbmcgbWVtb3J5IGFs bG9jYXRpb24gY2hhbmdlcyB0byAmTXlCRUVudHJ5LT5hbGxvY2F0ZWRfYnl0ZXMKKwkgKi8KKwlw Z3N0YXRfcmVzZXRfYWxsb2NhdGVkX2J5dGVzX3N0b3JhZ2UoKTsKKwogCS8qCiAJICogQ2xlYXIg bXkgc3RhdHVzIGVudHJ5LCBmb2xsb3dpbmcgdGhlIHByb3RvY29sIG9mIGJ1bXBpbmcgc3RfY2hh bmdlY291bnQKIAkgKiBiZWZvcmUgYW5kIGFmdGVyLiAgV2UgdXNlIGEgdm9sYXRpbGUgcG9pbnRl ciBoZXJlIHRvIGVuc3VyZSB0aGUKQEAgLTExOTEsMyArMTIwOCwzMSBAQCBwZ3N0YXRfY2xpcF9h Y3Rpdml0eShjb25zdCBjaGFyICpyYXdfYWN0aXZpdHkpCiAKIAlyZXR1cm4gYWN0aXZpdHk7CiB9 CisKKy8qCisgKiBDb25maWd1cmUgYnl0ZXMgYWxsb2NhdGVkIHJlcG9ydGluZyB0byByZXBvcnQg YWxsb2NhdGVkIGJ5dGVzIHRvCisgKiAqYWxsb2NhdGVkX2J5dGVzLiAgKmFsbG9jYXRlZF9ieXRl cyBuZWVkcyB0byBiZSB2YWxpZCB1bnRpbAorICogcGdzdGF0X3NldF9hbGxvY2F0ZWRfYnl0ZXNf c3RvcmFnZSgpIGlzIGNhbGxlZC4KKyAqCisgKiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgZHVyaW5n IGJhY2tlbmQgc3RhcnR1cCAoaW4gcGdzdGF0X2Jlc3RhcnQpLCB0byBwb2ludAorICogbXlfYWxs b2NhdGVkX2J5dGVzIGludG8gc2hhcmVkIG1lbW9yeS4KKyAqLwordm9pZAorcGdzdGF0X3NldF9h bGxvY2F0ZWRfYnl0ZXNfc3RvcmFnZSh1aW50NjQgKm5ld19hbGxvY2F0ZWRfYnl0ZXMpCit7CisJ bXlfYWxsb2NhdGVkX2J5dGVzID0gbmV3X2FsbG9jYXRlZF9ieXRlczsKKwkqbmV3X2FsbG9jYXRl ZF9ieXRlcyA9IGxvY2FsX215X2FsbG9jYXRlZF9ieXRlczsKK30KKworLyoKKyAqIFJlc2V0IGFs bG9jYXRlZCBieXRlcyBzdG9yYWdlIGxvY2F0aW9uLgorICoKKyAqIEV4cGVjdGVkIHRvIGJlIGNh bGxlZCBkdXJpbmcgYmFja2VuZCBzaHV0ZG93biwgYmVmb3JlIHRoZSBsb2NhdGlvbiBzZXQgdXAK KyAqIGJ5IHBnc3RhdF9zZXRfYWxsb2NhdGVkX2J5dGVzX3N0b3JhZ2UoKSBiZWNvbWVzIGludmFs aWQuCisgKi8KK3ZvaWQKK3Bnc3RhdF9yZXNldF9hbGxvY2F0ZWRfYnl0ZXNfc3RvcmFnZSh2b2lk KQoreworCW15X2FsbG9jYXRlZF9ieXRlcyA9ICZsb2NhbF9teV9hbGxvY2F0ZWRfYnl0ZXM7Cit9 CisKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggYWUzMzY1ZDkxNy4uMTcwZDYw ZGY4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTU1OSw3ICs1NTksNyBA QCBwZ19zdGF0X2dldF9wcm9ncmVzc19pbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiBEYXR1bQogcGdf c3RhdF9nZXRfYWN0aXZpdHkoUEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUgUEdfU1RBVF9H RVRfQUNUSVZJVFlfQ09MUwkzMAorI2RlZmluZSBQR19TVEFUX0dFVF9BQ1RJVklUWV9DT0xTCTMx CiAJaW50CQkJbnVtX2JhY2tlbmRzID0gcGdzdGF0X2ZldGNoX3N0YXRfbnVtYmFja2VuZHMoKTsK IAlpbnQJCQljdXJyX2JhY2tlbmQ7CiAJaW50CQkJcGlkID0gUEdfQVJHSVNOVUxMKDApID8gLTEg OiBQR19HRVRBUkdfSU5UMzIoMCk7CkBAIC02MTUsNiArNjE1LDggQEAgcGdfc3RhdF9nZXRfYWN0 aXZpdHkoUEdfRlVOQ1RJT05fQVJHUykKIAkJZWxzZQogCQkJbnVsbHNbMTZdID0gdHJ1ZTsKIAor CQl2YWx1ZXNbMzBdID0gVUludDY0R2V0RGF0dW0oYmVlbnRyeS0+YWxsb2NhdGVkX2J5dGVzKTsK KwogCQkvKiBWYWx1ZXMgb25seSBhdmFpbGFibGUgdG8gcm9sZSBtZW1iZXIgb3IgcGdfcmVhZF9h bGxfc3RhdHMgKi8KIAkJaWYgKEhBU19QR1NUQVRfUEVSTUlTU0lPTlMoYmVlbnRyeS0+c3RfdXNl cmlkKSkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYwppbmRleCBiNmE4YmJjZDU5Li5iMjAyZTExNWI2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9tbWdyL2FzZXQuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgInBvc3Rn cmVzLmgiCiAKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMv YmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHNfbWVtb3J5Y2h1bmsu aCIKQEAgLTUyMSw2ICs1MjIsNyBAQCBBbGxvY1NldENvbnRleHRDcmVhdGVJbnRlcm5hbChNZW1v cnlDb250ZXh0IHBhcmVudCwKIAkJCQkJCW5hbWUpOwogCiAJKChNZW1vcnlDb250ZXh0KSBzZXQp LT5tZW1fYWxsb2NhdGVkID0gZmlyc3RCbG9ja1NpemU7CisJcGdzdGF0X3JlcG9ydF9hbGxvY2F0 ZWRfYnl0ZXMoZmlyc3RCbG9ja1NpemUsIElOQ1JFQVNFKTsKIAogCXJldHVybiAoTWVtb3J5Q29u dGV4dCkgc2V0OwogfQpAQCAtNTQzLDYgKzU0NSw3IEBAIEFsbG9jU2V0UmVzZXQoTWVtb3J5Q29u dGV4dCBjb250ZXh0KQogCUFsbG9jU2V0CXNldCA9IChBbGxvY1NldCkgY29udGV4dDsKIAlBbGxv Y0Jsb2NrCWJsb2NrOwogCVNpemUJCWtlZXBlcnNpemUgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZ OworCXVpbnQ2NAkJZGVhbGxvY2F0aW9uID0gMDsKIAogCUFzc2VydChBbGxvY1NldElzVmFsaWQo c2V0KSk7CiAKQEAgLTU4NSw2ICs1ODgsNyBAQCBBbGxvY1NldFJlc2V0KE1lbW9yeUNvbnRleHQg Y29udGV4dCkKIAkJewogCQkJLyogTm9ybWFsIGNhc2UsIHJlbGVhc2UgdGhlIGJsb2NrICovCiAJ CQljb250ZXh0LT5tZW1fYWxsb2NhdGVkIC09IGJsb2NrLT5lbmRwdHIgLSAoKGNoYXIgKikgYmxv Y2spOworCQkJZGVhbGxvY2F0aW9uICs9IGJsb2NrLT5lbmRwdHIgLSAoKGNoYXIgKikgYmxvY2sp OwogCiAjaWZkZWYgQ0xPQkJFUl9GUkVFRF9NRU1PUlkKIAkJCXdpcGVfbWVtKGJsb2NrLCBibG9j ay0+ZnJlZXB0ciAtICgoY2hhciAqKSBibG9jaykpOwpAQCAtNTk1LDYgKzU5OSw3IEBAIEFsbG9j U2V0UmVzZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCX0KIAogCUFzc2VydChjb250ZXh0LT5t ZW1fYWxsb2NhdGVkID09IGtlZXBlcnNpemUpOworCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5 dGVzKGRlYWxsb2NhdGlvbiwgREVDUkVBU0UpOwogCiAJLyogUmVzZXQgYmxvY2sgc2l6ZSBhbGxv Y2F0aW9uIHNlcXVlbmNlLCB0b28gKi8KIAlzZXQtPm5leHRCbG9ja1NpemUgPSBzZXQtPmluaXRC bG9ja1NpemU7CkBAIC02MTMsNiArNjE4LDcgQEAgQWxsb2NTZXREZWxldGUoTWVtb3J5Q29udGV4 dCBjb250ZXh0KQogCUFsbG9jU2V0CXNldCA9IChBbGxvY1NldCkgY29udGV4dDsKIAlBbGxvY0Js b2NrCWJsb2NrID0gc2V0LT5ibG9ja3M7CiAJU2l6ZQkJa2VlcGVyc2l6ZSBQR19VU0VEX0ZPUl9B U1NFUlRTX09OTFk7CisJdWludDY0CQlkZWFsbG9jYXRpb24gPSAwOwogCiAJQXNzZXJ0KEFsbG9j U2V0SXNWYWxpZChzZXQpKTsKIApAQCAtNjUxLDExICs2NTcsMTMgQEAgQWxsb2NTZXREZWxldGUo TWVtb3J5Q29udGV4dCBjb250ZXh0KQogCiAJCQkJZnJlZWxpc3QtPmZpcnN0X2ZyZWUgPSAoQWxs b2NTZXRDb250ZXh0ICopIG9sZHNldC0+aGVhZGVyLm5leHRjaGlsZDsKIAkJCQlmcmVlbGlzdC0+ bnVtX2ZyZWUtLTsKKwkJCQlkZWFsbG9jYXRpb24gKz0gb2xkc2V0LT5oZWFkZXIubWVtX2FsbG9j YXRlZDsKIAogCQkJCS8qIEFsbCB0aGF0IHJlbWFpbnMgaXMgdG8gZnJlZSB0aGUgaGVhZGVyL2lu aXRpYWwgYmxvY2sgKi8KIAkJCQlmcmVlKG9sZHNldCk7CiAJCQl9CiAJCQlBc3NlcnQoZnJlZWxp c3QtPm51bV9mcmVlID09IDApOworCQkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXMoZGVh bGxvY2F0aW9uLCBERUNSRUFTRSk7CiAJCX0KIAogCQkvKiBOb3cgYWRkIHRoZSBqdXN0LWRlbGV0 ZWQgY29udGV4dCB0byB0aGUgZnJlZWxpc3QuICovCkBAIC02NzIsNyArNjgwLDEwIEBAIEFsbG9j U2V0RGVsZXRlKE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAkJQWxsb2NCbG9jawluZXh0ID0gYmxv Y2stPm5leHQ7CiAKIAkJaWYgKGJsb2NrICE9IHNldC0+a2VlcGVyKQorCQl7CiAJCQljb250ZXh0 LT5tZW1fYWxsb2NhdGVkIC09IGJsb2NrLT5lbmRwdHIgLSAoKGNoYXIgKikgYmxvY2spOworCQkJ ZGVhbGxvY2F0aW9uICs9IGJsb2NrLT5lbmRwdHIgLSAoKGNoYXIgKikgYmxvY2spOworCQl9CiAK ICNpZmRlZiBDTE9CQkVSX0ZSRUVEX01FTU9SWQogCQl3aXBlX21lbShibG9jaywgYmxvY2stPmZy ZWVwdHIgLSAoKGNoYXIgKikgYmxvY2spKTsKQEAgLTY4NSw2ICs2OTYsNyBAQCBBbGxvY1NldERl bGV0ZShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJfQogCiAJQXNzZXJ0KGNvbnRleHQtPm1lbV9h bGxvY2F0ZWQgPT0ga2VlcGVyc2l6ZSk7CisJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXMo ZGVhbGxvY2F0aW9uICsgY29udGV4dC0+bWVtX2FsbG9jYXRlZCwgREVDUkVBU0UpOwogCiAJLyog RmluYWxseSwgZnJlZSB0aGUgY29udGV4dCBoZWFkZXIsIGluY2x1ZGluZyB0aGUga2VlcGVyIGJs b2NrICovCiAJZnJlZShzZXQpOwpAQCAtNzM0LDYgKzc0Niw3IEBAIEFsbG9jU2V0QWxsb2MoTWVt b3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCQlyZXR1cm4gTlVMTDsKIAogCQljb250 ZXh0LT5tZW1fYWxsb2NhdGVkICs9IGJsa3NpemU7CisJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVk X2J5dGVzKGJsa3NpemUsIElOQ1JFQVNFKTsKIAogCQlibG9jay0+YXNldCA9IHNldDsKIAkJYmxv Y2stPmZyZWVwdHIgPSBibG9jay0+ZW5kcHRyID0gKChjaGFyICopIGJsb2NrKSArIGJsa3NpemU7 CkBAIC05NDQsNiArOTU3LDcgQEAgQWxsb2NTZXRBbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQs IFNpemUgc2l6ZSkKIAkJCXJldHVybiBOVUxMOwogCiAJCWNvbnRleHQtPm1lbV9hbGxvY2F0ZWQg Kz0gYmxrc2l6ZTsKKwkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXMoYmxrc2l6ZSwgSU5D UkVBU0UpOwogCiAJCWJsb2NrLT5hc2V0ID0gc2V0OwogCQlibG9jay0+ZnJlZXB0ciA9ICgoY2hh ciAqKSBibG9jaykgKyBBTExPQ19CTE9DS0hEUlNaOwpAQCAtMTA0Myw2ICsxMDU3LDcgQEAgQWxs b2NTZXRGcmVlKHZvaWQgKnBvaW50ZXIpCiAJCQlibG9jay0+bmV4dC0+cHJldiA9IGJsb2NrLT5w cmV2OwogCiAJCXNldC0+aGVhZGVyLm1lbV9hbGxvY2F0ZWQgLT0gYmxvY2stPmVuZHB0ciAtICgo Y2hhciAqKSBibG9jayk7CisJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzKGJsb2NrLT5l bmRwdHIgLSAoKGNoYXIgKikgYmxvY2spLCBERUNSRUFTRSk7CiAKICNpZmRlZiBDTE9CQkVSX0ZS RUVEX01FTU9SWQogCQl3aXBlX21lbShibG9jaywgYmxvY2stPmZyZWVwdHIgLSAoKGNoYXIgKikg YmxvY2spKTsKQEAgLTExNzMsNyArMTE4OCw5IEBAIEFsbG9jU2V0UmVhbGxvYyh2b2lkICpwb2lu dGVyLCBTaXplIHNpemUpCiAKIAkJLyogdXBkYXRlZCBzZXBhcmF0ZWx5LCBub3QgdG8gdW5kZXJm bG93IHdoZW4gKG9sZGJsa3NpemUgPiBibGtzaXplKSAqLwogCQlzZXQtPmhlYWRlci5tZW1fYWxs b2NhdGVkIC09IG9sZGJsa3NpemU7CisJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzKG9s ZGJsa3NpemUsIERFQ1JFQVNFKTsKIAkJc2V0LT5oZWFkZXIubWVtX2FsbG9jYXRlZCArPSBibGtz aXplOworCQlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlcyhibGtzaXplLCBJTkNSRUFTRSk7 CiAKIAkJYmxvY2stPmZyZWVwdHIgPSBibG9jay0+ZW5kcHRyID0gKChjaGFyICopIGJsb2NrKSAr IGJsa3NpemU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlv bi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKaW5kZXggYjQzMmE5MmJl My4uNDU5ZWI5ODVkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKQEAgLTM3LDYg KzM3LDcgQEAKIAogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0 dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlsc19tZW1vcnljaHVuay5oIgpAQCAtMjY3LDYgKzI2OCw3IEBAIEdlbmVyYXRp b25Db250ZXh0Q3JlYXRlKE1lbW9yeUNvbnRleHQgcGFyZW50LAogCQkJCQkJbmFtZSk7CiAKIAko KE1lbW9yeUNvbnRleHQpIHNldCktPm1lbV9hbGxvY2F0ZWQgPSBmaXJzdEJsb2NrU2l6ZTsKKwlw Z3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlcyhmaXJzdEJsb2NrU2l6ZSwgSU5DUkVBU0UpOwog CiAJcmV0dXJuIChNZW1vcnlDb250ZXh0KSBzZXQ7CiB9CkBAIC0yODMsNiArMjg1LDcgQEAgR2Vu ZXJhdGlvblJlc2V0KE1lbW9yeUNvbnRleHQgY29udGV4dCkKIHsKIAlHZW5lcmF0aW9uQ29udGV4 dCAqc2V0ID0gKEdlbmVyYXRpb25Db250ZXh0ICopIGNvbnRleHQ7CiAJZGxpc3RfbXV0YWJsZV9p dGVyIG1pdGVyOworCXVpbnQ2NAkJZGVhbGxvY2F0aW9uID0gMDsKIAogCUFzc2VydChHZW5lcmF0 aW9uSXNWYWxpZChzZXQpKTsKIApAQCAtMzA1LDkgKzMwOCwxNCBAQCBHZW5lcmF0aW9uUmVzZXQo TWVtb3J5Q29udGV4dCBjb250ZXh0KQogCQlpZiAoYmxvY2sgPT0gc2V0LT5rZWVwZXIpCiAJCQlH ZW5lcmF0aW9uQmxvY2tNYXJrRW1wdHkoYmxvY2spOwogCQllbHNlCisJCXsKKwkJCWRlYWxsb2Nh dGlvbiArPSBibG9jay0+Ymxrc2l6ZTsKIAkJCUdlbmVyYXRpb25CbG9ja0ZyZWUoc2V0LCBibG9j ayk7CisJCX0KIAl9CiAKKwlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlcyhkZWFsbG9jYXRp b24sIERFQ1JFQVNFKTsKKwogCS8qIHNldCBpdCBzbyBuZXcgYWxsb2NhdGlvbnMgdG8gbWFrZSB1 c2Ugb2YgdGhlIGtlZXBlciBibG9jayAqLwogCXNldC0+YmxvY2sgPSBzZXQtPmtlZXBlcjsKIApA QCAtMzI4LDYgKzMzNiw5IEBAIEdlbmVyYXRpb25EZWxldGUoTWVtb3J5Q29udGV4dCBjb250ZXh0 KQogewogCS8qIFJlc2V0IHRvIHJlbGVhc2UgYWxsIHJlbGVhc2FibGUgR2VuZXJhdGlvbkJsb2Nr cyAqLwogCUdlbmVyYXRpb25SZXNldChjb250ZXh0KTsKKworCXBnc3RhdF9yZXBvcnRfYWxsb2Nh dGVkX2J5dGVzKGNvbnRleHQtPm1lbV9hbGxvY2F0ZWQsIERFQ1JFQVNFKTsKKwogCS8qIEFuZCBm cmVlIHRoZSBjb250ZXh0IGhlYWRlciBhbmQga2VlcGVyIGJsb2NrICovCiAJZnJlZShjb250ZXh0 KTsKIH0KQEAgLTM3NCw2ICszODUsNyBAQCBHZW5lcmF0aW9uQWxsb2MoTWVtb3J5Q29udGV4dCBj b250ZXh0LCBTaXplIHNpemUpCiAJCQlyZXR1cm4gTlVMTDsKIAogCQljb250ZXh0LT5tZW1fYWxs b2NhdGVkICs9IGJsa3NpemU7CisJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzKGJsa3Np emUsIElOQ1JFQVNFKTsKIAogCQkvKiBibG9jayB3aXRoIGEgc2luZ2xlICh1c2VkKSBjaHVuayAq LwogCQlibG9jay0+Y29udGV4dCA9IHNldDsKQEAgLTQ3Nyw2ICs0ODksNyBAQCBHZW5lcmF0aW9u QWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCQkJcmV0dXJuIE5VTEw7 CiAKIAkJCWNvbnRleHQtPm1lbV9hbGxvY2F0ZWQgKz0gYmxrc2l6ZTsKKwkJCXBnc3RhdF9yZXBv cnRfYWxsb2NhdGVkX2J5dGVzKGJsa3NpemUsIElOQ1JFQVNFKTsKIAogCQkJLyogaW5pdGlhbGl6 ZSB0aGUgbmV3IGJsb2NrICovCiAJCQlHZW5lcmF0aW9uQmxvY2tJbml0KHNldCwgYmxvY2ssIGJs a3NpemUpOwpAQCAtNzI2LDYgKzczOSw4IEBAIEdlbmVyYXRpb25GcmVlKHZvaWQgKnBvaW50ZXIp CiAJZGxpc3RfZGVsZXRlKCZibG9jay0+bm9kZSk7CiAKIAlzZXQtPmhlYWRlci5tZW1fYWxsb2Nh dGVkIC09IGJsb2NrLT5ibGtzaXplOworCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzKGJs b2NrLT5ibGtzaXplLCBERUNSRUFTRSk7CisKIAlmcmVlKGJsb2NrKTsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdy L3NsYWIuYwppbmRleCA2ZGYwODM5YjZhLi5mMzgyNTZmNmYzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3NsYWIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIu YwpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJs aWIvaWxpc3QuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUg InV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9tZW11dGlsc19tZW1vcnljaHVuay5oIgpAQCAtMjM4LDYgKzIzOSwxMiBAQCBTbGFi Q29udGV4dENyZWF0ZShNZW1vcnlDb250ZXh0IHBhcmVudCwKIAkJCQkJCXBhcmVudCwKIAkJCQkJ CW5hbWUpOwogCisJLyoKKwkgKiBJZiBTbGFiQ29udGV4dENyZWF0ZSBpcyB1cGRhdGVkIHRvIGFk ZCBoZWFkZXJTaXplIHRvCisJICogY29udGV4dC0+bWVtX2FsbG9jYXRlZCwgdGhlbiB1cGRhdGUg aGVyZSBhbmQgU2xhYkRlbGV0ZSBhcHByb3ByaWF0ZWx5CisJICovCisJcGdzdGF0X3JlcG9ydF9h bGxvY2F0ZWRfYnl0ZXMoaGVhZGVyU2l6ZSwgSU5DUkVBU0UpOworCiAJcmV0dXJuIChNZW1vcnlD b250ZXh0KSBzbGFiOwogfQogCkBAIC0yNTMsNiArMjYwLDcgQEAgU2xhYlJlc2V0KE1lbW9yeUNv bnRleHQgY29udGV4dCkKIHsKIAlTbGFiQ29udGV4dCAqc2xhYiA9IChTbGFiQ29udGV4dCAqKSBj b250ZXh0OwogCWludAkJCWk7CisJdWludDY0CQlkZWFsbG9jYXRpb24gPSAwOwogCiAJQXNzZXJ0 KFNsYWJJc1ZhbGlkKHNsYWIpKTsKIApAQCAtMjc4LDkgKzI4NiwxMSBAQCBTbGFiUmVzZXQoTWVt b3J5Q29udGV4dCBjb250ZXh0KQogCQkJZnJlZShibG9jayk7CiAJCQlzbGFiLT5uYmxvY2tzLS07 CiAJCQljb250ZXh0LT5tZW1fYWxsb2NhdGVkIC09IHNsYWItPmJsb2NrU2l6ZTsKKwkJCWRlYWxs b2NhdGlvbiArPSBzbGFiLT5ibG9ja1NpemU7CiAJCX0KIAl9CiAKKwlwZ3N0YXRfcmVwb3J0X2Fs bG9jYXRlZF9ieXRlcyhkZWFsbG9jYXRpb24sIERFQ1JFQVNFKTsKIAlzbGFiLT5taW5GcmVlQ2h1 bmtzID0gMDsKIAogCUFzc2VydChzbGFiLT5uYmxvY2tzID09IDApOwpAQCAtMjk0LDggKzMwNCwx NyBAQCBTbGFiUmVzZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogdm9pZAogU2xhYkRlbGV0ZShN ZW1vcnlDb250ZXh0IGNvbnRleHQpCiB7CisJLyoKKwkgKiBVbnRpbCBoZWFkZXIgYWxsb2NhdGlv biBpcyBpbmNsdWRlZCBpbiBjb250ZXh0LT5tZW1fYWxsb2NhdGVkLCBjYXN0IHRvCisJICogc2xh YiBhbmQgZGVjcmVtZW50IHRoZSBoZWFkZXJTaXplCisJICovCisJU2xhYkNvbnRleHQgKnNsYWIg PSBjYXN0Tm9kZShTbGFiQ29udGV4dCwgY29udGV4dCk7CisKIAkvKiBSZXNldCB0byByZWxlYXNl IGFsbCB0aGUgU2xhYkJsb2NrcyAqLwogCVNsYWJSZXNldChjb250ZXh0KTsKKworCXBnc3RhdF9y ZXBvcnRfYWxsb2NhdGVkX2J5dGVzKHNsYWItPmhlYWRlclNpemUsIERFQ1JFQVNFKTsKKwogCS8q IEFuZCBmcmVlIHRoZSBjb250ZXh0IGhlYWRlciAqLwogCWZyZWUoY29udGV4dCk7CiB9CkBAIC0z NjQsNiArMzgzLDcgQEAgU2xhYkFsbG9jKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6ZSBzaXpl KQogCQlzbGFiLT5taW5GcmVlQ2h1bmtzID0gc2xhYi0+Y2h1bmtzUGVyQmxvY2s7CiAJCXNsYWIt Pm5ibG9ja3MgKz0gMTsKIAkJY29udGV4dC0+bWVtX2FsbG9jYXRlZCArPSBzbGFiLT5ibG9ja1Np emU7CisJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzKHNsYWItPmJsb2NrU2l6ZSwgSU5D UkVBU0UpOwogCX0KIAogCS8qIGdyYWIgdGhlIGJsb2NrIGZyb20gdGhlIGZyZWVsaXN0IChldmVu IHRoZSBuZXcgYmxvY2sgaXMgdGhlcmUpICovCkBAIC01MzcsNiArNTU3LDcgQEAgU2xhYkZyZWUo dm9pZCAqcG9pbnRlcikKIAkJZnJlZShibG9jayk7CiAJCXNsYWItPm5ibG9ja3MtLTsKIAkJc2xh Yi0+aGVhZGVyLm1lbV9hbGxvY2F0ZWQgLT0gc2xhYi0+YmxvY2tTaXplOworCQlwZ3N0YXRfcmVw b3J0X2FsbG9jYXRlZF9ieXRlcyhzbGFiLT5ibG9ja1NpemUsIERFQ1JFQVNFKTsKIAl9CiAJZWxz ZQogCQlkbGlzdF9wdXNoX2hlYWQoJnNsYWItPmZyZWVsaXN0W2Jsb2NrLT5uZnJlZV0sICZibG9j ay0+bm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBmOTMwMWIyNjI3Li4xYmYwMjc1 OGQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTUzNzMsOSArNTM3Myw5IEBACiAgIHBy b25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2FjdGl2aXR5JywgcHJvcm93cyA9PiAnMTAwJywgcHJvaXNz dHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHBy b3BhcmFsbGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMg PT4gJ2ludDQnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne2ludDQsb2lkLGludDQsb2lkLHRleHQs dGV4dCx0ZXh0LHRleHQsdGV4dCx0aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0 aW1lc3RhbXB0eixpbmV0LHRleHQsaW50NCx4aWQseGlkLHRleHQsYm9vbCx0ZXh0LHRleHQsaW50 NCx0ZXh0LG51bWVyaWMsdGV4dCxib29sLHRleHQsYm9vbCxpbnQ0LGludDh9JywKLSAgcHJvYXJn bW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvfScsCi0gIHByb2FyZ25hbWVzID0+ICd7cGlkLGRhdGlkLHBpZCx1c2Vz eXNpZCxhcHBsaWNhdGlvbl9uYW1lLHN0YXRlLHF1ZXJ5LHdhaXRfZXZlbnRfdHlwZSx3YWl0X2V2 ZW50LHhhY3Rfc3RhcnQscXVlcnlfc3RhcnQsYmFja2VuZF9zdGFydCxzdGF0ZV9jaGFuZ2UsY2xp ZW50X2FkZHIsY2xpZW50X2hvc3RuYW1lLGNsaWVudF9wb3J0LGJhY2tlbmRfeGlkLGJhY2tlbmRf eG1pbixiYWNrZW5kX3R5cGUsc3NsLHNzbHZlcnNpb24sc3NsY2lwaGVyLHNzbGJpdHMsc3NsX2Ns aWVudF9kbixzc2xfY2xpZW50X3NlcmlhbCxzc2xfaXNzdWVyX2RuLGdzc19hdXRoLGdzc19wcmlu Yyxnc3NfZW5jLGxlYWRlcl9waWQscXVlcnlfaWR9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tp bnQ0LG9pZCxpbnQ0LG9pZCx0ZXh0LHRleHQsdGV4dCx0ZXh0LHRleHQsdGltZXN0YW1wdHosdGlt ZXN0YW1wdHosdGltZXN0YW1wdHosdGltZXN0YW1wdHosaW5ldCx0ZXh0LGludDQseGlkLHhpZCx0 ZXh0LGJvb2wsdGV4dCx0ZXh0LGludDQsdGV4dCxudW1lcmljLHRleHQsYm9vbCx0ZXh0LGJvb2ws aW50NCxpbnQ4LGludDh9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJn bmFtZXMgPT4gJ3twaWQsZGF0aWQscGlkLHVzZXN5c2lkLGFwcGxpY2F0aW9uX25hbWUsc3RhdGUs cXVlcnksd2FpdF9ldmVudF90eXBlLHdhaXRfZXZlbnQseGFjdF9zdGFydCxxdWVyeV9zdGFydCxi YWNrZW5kX3N0YXJ0LHN0YXRlX2NoYW5nZSxjbGllbnRfYWRkcixjbGllbnRfaG9zdG5hbWUsY2xp ZW50X3BvcnQsYmFja2VuZF94aWQsYmFja2VuZF94bWluLGJhY2tlbmRfdHlwZSxzc2wsc3NsdmVy c2lvbixzc2xjaXBoZXIsc3NsYml0cyxzc2xfY2xpZW50X2RuLHNzbF9jbGllbnRfc2VyaWFsLHNz bF9pc3N1ZXJfZG4sZ3NzX2F1dGgsZ3NzX3ByaW5jLGdzc19lbmMsbGVhZGVyX3BpZCxxdWVyeV9p ZCxhbGxvY2F0ZWRfYnl0ZXN9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9hY3Rpdml0eScg fSwKIHsgb2lkID0+ICczMzE4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGluZm9ybWF0aW9u IGFib3V0IHByb2dyZXNzIG9mIGJhY2tlbmRzIHJ1bm5pbmcgbWFpbnRlbmFuY2UgY29tbWFuZCcs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaAppbmRleCBiNTgyYjQ2ZTlmLi5lNWFhOTBiMTAx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIJCQkvKiBmb3IgQmFja2VuZFR5cGUgKi8KICNpbmNsdWRlICJzdG9y YWdlL2JhY2tlbmRpZC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfcHJvZ3Jlc3MuaCIKKyNp bmNsdWRlICJjb21tb24vaW50LmgiCiAKIAogLyogLS0tLS0tLS0tLQpAQCAtMzIsNiArMzMsMTMg QEAgdHlwZWRlZiBlbnVtIEJhY2tlbmRTdGF0ZQogCVNUQVRFX0RJU0FCTEVECiB9IEJhY2tlbmRT dGF0ZTsKIAorLyogRW51bSBoZWxwZXIgZm9yIHJlcG9ydGluZyBtZW1vcnkgYWxsb2NhdGVkIGJ5 dGVzICovCitlbnVtIGFsbG9jYXRpb25fZGlyZWN0aW9uCit7CisJREVDUkVBU0UgPSAtMSwKKwlJ R05PUkUsCisJSU5DUkVBU0UsCit9OwogCiAvKiAtLS0tLS0tLS0tCiAgKiBTaGFyZWQtbWVtb3J5 IGRhdGEgc3RydWN0dXJlcwpAQCAtMTY5LDYgKzE3Nyw5IEBAIHR5cGVkZWYgc3RydWN0IFBnQmFj a2VuZFN0YXR1cwogCiAJLyogcXVlcnkgaWRlbnRpZmllciwgb3B0aW9uYWxseSBjb21wdXRlZCB1 c2luZyBwb3N0X3BhcnNlX2FuYWx5emVfaG9vayAqLwogCXVpbnQ2NAkJc3RfcXVlcnlfaWQ7CisK KwkvKiBDdXJyZW50IG1lbW9yeSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kICovCisJdWludDY0 CQlhbGxvY2F0ZWRfYnl0ZXM7CiB9IFBnQmFja2VuZFN0YXR1czsKIAogCkBAIC0yODIsNiArMjkz LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ3N0YXRfdHJhY2tfYWN0aXZpdHlfcXVlcnlf c2l6ZTsKICAqIC0tLS0tLS0tLS0KICAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIFBnQmFja2VuZFN0 YXR1cyAqTXlCRUVudHJ5OworZXh0ZXJuIFBHRExMSU1QT1JUIHVpbnQ2NCAqbXlfYWxsb2NhdGVk X2J5dGVzOwogCiAKIC8qIC0tLS0tLS0tLS0KQEAgLTMxMyw3ICszMjUsOCBAQCBleHRlcm4gY29u c3QgY2hhciAqcGdzdGF0X2dldF9iYWNrZW5kX2N1cnJlbnRfYWN0aXZpdHkoaW50IHBpZCwgYm9v bCBjaGVja1VzZXIpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfY3Jhc2hlZF9iYWNr ZW5kX2FjdGl2aXR5KGludCBwaWQsIGNoYXIgKmJ1ZmZlciwKIAkJCQkJCQkJCQkJCQkgICBpbnQg YnVmbGVuKTsKIGV4dGVybiB1aW50NjQgcGdzdGF0X2dldF9teV9xdWVyeV9pZCh2b2lkKTsKLQor ZXh0ZXJuIHZvaWQgcGdzdGF0X3NldF9hbGxvY2F0ZWRfYnl0ZXNfc3RvcmFnZSh1aW50NjQgKmFs bG9jYXRlZF9ieXRlcyk7CitleHRlcm4gdm9pZCBwZ3N0YXRfcmVzZXRfYWxsb2NhdGVkX2J5dGVz X3N0b3JhZ2Uodm9pZCk7CiAKIC8qIC0tLS0tLS0tLS0KICAqIFN1cHBvcnQgZnVuY3Rpb25zIGZv ciB0aGUgU1FMLWNhbGxhYmxlIGZ1bmN0aW9ucyB0bwpAQCAtMzI1LDUgKzMzOCw0OSBAQCBleHRl cm4gUGdCYWNrZW5kU3RhdHVzICpwZ3N0YXRfZmV0Y2hfc3RhdF9iZWVudHJ5KEJhY2tlbmRJZCBi ZWlkKTsKIGV4dGVybiBMb2NhbFBnQmFja2VuZFN0YXR1cyAqcGdzdGF0X2ZldGNoX3N0YXRfbG9j YWxfYmVlbnRyeShpbnQgYmVpZCk7CiBleHRlcm4gY2hhciAqcGdzdGF0X2NsaXBfYWN0aXZpdHko Y29uc3QgY2hhciAqcmF3X2FjdGl2aXR5KTsKIAorLyogLS0tLS0tLS0tLQorICogcGdzdGF0X3Jl cG9ydF9hbGxvY2F0ZWRfYnl0ZXMoKSAtCisgKgorICogIENhbGxlZCB0byByZXBvcnQgY2hhbmdl IGluIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoaXMgYmFja2VuZC4KKyAqCisgKiBteV9hbGxvY2F0 ZWRfYnl0ZXMgaW5pdGlhbGx5IHBvaW50cyB0byBsb2NhbCBtZW1vcnksIG1ha2luZyBpdCBzYWZl IHRvIGNhbGwKKyAqIHRoaXMgYmVmb3JlIHBnc3RhdHMgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuIGFs bG9jYXRpb25fZGlyZWN0aW9uIGlzIGEKKyAqIHBvc2l0aXZlL25lZ2F0aXZlIG11bHRpcGxpZXIg ZW51bSBkZWZpbmVkIGFib3ZlLgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW5saW5lIHZv aWQKK3Bnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzKHVpbnQ2NCBhbGxvY2F0ZWRfYnl0ZXMs IGludCBhbGxvY2F0aW9uX2RpcmVjdGlvbikKK3sKKwl1aW50NjQgdGVtcDsKKworCS8qIEF2b2lk ICpteV9hbGxvY2F0ZWRfYnl0ZXMgdW5zaWduZWQgaW50ZWdlciBvdmVyZmxvdyBvbiBERUNSRUFT RSAqLworCWlmIChhbGxvY2F0aW9uX2RpcmVjdGlvbiA9PSBERUNSRUFTRSAmJgorCQlwZ19zdWJf dTY0X292ZXJmbG93KCpteV9hbGxvY2F0ZWRfYnl0ZXMsIGFsbG9jYXRlZF9ieXRlcywgJnRlbXAp KQorCXsKKwkJKm15X2FsbG9jYXRlZF9ieXRlcyA9IDA7CisJCWVyZXBvcnQoTE9HLAorCQkJCWVy cm1zZygiQmFja2VuZCAlZCBkZWFsbG9jYXRlZCAlbGQgYnl0ZXMsIGV4Y2VlZGluZyB0aGUgJWxk IGJ5dGVzIGl0IGlzIGN1cnJlbnRseSByZXBvcnRpbmcgYWxsb2NhdGVkLiBTZXR0aW5nIHJlcG9y dGVkIHRvIDAuIiwKKwkJCQkJICAgTXlQcm9jUGlkLCBhbGxvY2F0ZWRfYnl0ZXMsICpteV9hbGxv Y2F0ZWRfYnl0ZXMpKTsKKwl9CisJZWxzZQorCQkqbXlfYWxsb2NhdGVkX2J5dGVzICs9IChhbGxv Y2F0ZWRfYnl0ZXMpICogYWxsb2NhdGlvbl9kaXJlY3Rpb247CisKKwlyZXR1cm47Cit9CisKKy8q IC0tLS0tLS0tLQorICogcGdzdGF0X3plcm9fbXlfYWxsb2NhdGVkX2J5dGVzKCkgLQorICoKKyAq IENhbGxlZCB0byB6ZXJvIG91dCBsb2NhbCBhbGxvY2F0ZWQgYnl0ZXMgdmFyaWFibGUgYWZ0ZXIg Zm9yayB0byBhdm9pZCBkb3VibGUKKyAqIGNvdW50aW5nIGFsbG9jYXRpb25zLgorICogLS0tLS0t LS0tCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcGdzdGF0X3plcm9fbXlfYWxsb2NhdGVkX2J5 dGVzKHZvaWQpCit7CisJKm15X2FsbG9jYXRlZF9ieXRlcyA9IDA7CisKKyAgICByZXR1cm47Cit9 CiAKICNlbmRpZgkJCQkJCQkvKiBCQUNLRU5EX1NUQVRVU19IICovCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0CmluZGV4IDM3YzFjODY0NzMuLjUyNjMyOTRhZDQgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNzU2LDEwICsxNzU2LDExIEBAIHBnX3N0YXRfYWN0aXZp dHl8IFNFTEVDVCBzLmRhdGlkLAogICAgIHMuc3RhdGUsCiAgICAgcy5iYWNrZW5kX3hpZCwKICAg ICBzLmJhY2tlbmRfeG1pbiwKKyAgICBzLmFsbG9jYXRlZF9ieXRlcywKICAgICBzLnF1ZXJ5X2lk LAogICAgIHMucXVlcnksCiAgICAgcy5iYWNrZW5kX3R5cGUKLSAgIEZST00gKChwZ19zdGF0X2dl dF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNh dGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFj dF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50 X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5k X3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMs IHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0 aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00gKChw Z19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lk LCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9l dmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5n ZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlk LCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIs IHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2Ru LCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwgYWxs b2NhdGVkX2J5dGVzKQogICAgICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgZCBPTiAoKHMuZGF0aWQg PSBkLm9pZCkpKQogICAgICBMRUZUIEpPSU4gcGdfYXV0aGlkIHUgT04gKChzLnVzZXN5c2lkID0g dS5vaWQpKSk7CiBwZ19zdGF0X2FsbF9pbmRleGVzfCBTRUxFQ1QgYy5vaWQgQVMgcmVsaWQsCkBA IC0xODc0LDcgKzE4NzUsNyBAQCBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHMucGlkLAogICAgIHMu Z3NzX2F1dGggQVMgZ3NzX2F1dGhlbnRpY2F0ZWQsCiAgICAgcy5nc3NfcHJpbmMgQVMgcHJpbmNp cGFsLAogICAgIHMuZ3NzX2VuYyBBUyBlbmNyeXB0ZWQKLSAgIEZST00gcGdfc3RhdF9nZXRfYWN0 aXZpdHkoTlVMTDo6aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBwbGljYXRpb25f bmFtZSwgc3RhdGUsIHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3Rh cnQsIHF1ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRy LCBjbGllbnRfaG9zdG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFja2VuZF94bWlu LCBiYWNrZW5kX3R5cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xf Y2xpZW50X2RuLCBzc2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdz c19wcmluYywgZ3NzX2VuYywgbGVhZGVyX3BpZCwgcXVlcnlfaWQpCisgICBGUk9NIHBnX3N0YXRf Z2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxp Y2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4 YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGll bnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tl bmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0 cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19h dXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBhbGxvY2F0ZWRf Ynl0ZXMpCiAgIFdIRVJFIChzLmNsaWVudF9wb3J0IElTIE5PVCBOVUxMKTsKIHBnX3N0YXRfcHJv Z3Jlc3NfYW5hbHl6ZXwgU0VMRUNUIHMucGlkLAogICAgIHMuZGF0aWQsCkBAIC0yMDU1LDcgKzIw NTYsNyBAQCBwZ19zdGF0X3JlcGxpY2F0aW9ufCBTRUxFQ1Qgcy5waWQsCiAgICAgdy5zeW5jX3By aW9yaXR5LAogICAgIHcuc3luY19zdGF0ZSwKICAgICB3LnJlcGx5X3RpbWUKLSAgIEZST00gKChw Z19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lk LCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9l dmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5n ZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlk LCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIs IHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2Ru LCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAg IEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQs IHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlw ZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0 YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJh Y2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBz c2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xf aXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVy eV9pZCwgYWxsb2NhdGVkX2J5dGVzKQogICAgICBKT0lOIHBnX3N0YXRfZ2V0X3dhbF9zZW5kZXJz KCkgdyhwaWQsIHN0YXRlLCBzZW50X2xzbiwgd3JpdGVfbHNuLCBmbHVzaF9sc24sIHJlcGxheV9s c24sIHdyaXRlX2xhZywgZmx1c2hfbGFnLCByZXBsYXlfbGFnLCBzeW5jX3ByaW9yaXR5LCBzeW5j X3N0YXRlLCByZXBseV90aW1lKSBPTiAoKHMucGlkID0gdy5waWQpKSkKICAgICAgTEVGVCBKT0lO IHBnX2F1dGhpZCB1IE9OICgocy51c2VzeXNpZCA9IHUub2lkKSkpOwogcGdfc3RhdF9yZXBsaWNh dGlvbl9zbG90c3wgU0VMRUNUIHMuc2xvdF9uYW1lLApAQCAtMjA4OSw3ICsyMDkwLDcgQEAgcGdf c3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKICAgICBzLnNzbF9jbGllbnRfZG4gQVMgY2xpZW50X2Ru LAogICAgIHMuc3NsX2NsaWVudF9zZXJpYWwgQVMgY2xpZW50X3NlcmlhbCwKICAgICBzLnNzbF9p c3N1ZXJfZG4gQVMgaXNzdWVyX2RuCi0gICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6 OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRl LCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9z dGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hv c3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90 eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwg c3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdz c19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkKQorICAgRlJPTSBwZ19zdGF0X2dldF9hY3Rpdml0 eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1l LCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwg cXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNs aWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJh Y2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGll bnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3By aW5jLCBnc3NfZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwgYWxsb2NhdGVkX2J5dGVzKQogICBX SEVSRSAocy5jbGllbnRfcG9ydCBJUyBOT1QgTlVMTCk7CiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwg U0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N0YXRzLm91dAppbmRleCAxZDg0NDA3YTAzLi5hYjdlOTVjMzY3IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N0YXRzLm91dApAQCAtMTEyNiw0ICsxMTI2LDE1IEBAIFNFTEVDVCBwZ19zdGF0 X2dldF9zdWJzY3JpcHRpb25fc3RhdHMoTlVMTCk7CiAgCiAoMSByb3cpCiAKKy0tIGVuc3VyZSB0 aGF0IGFsbG9jYXRlZF9ieXRlcyBleGlzdCBmb3IgYmFja2VuZHMKK1NFTEVDVCBhbGxvY2F0ZWRf Ynl0ZXMgPiAwIEFTIHJlc3VsdCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgYmFja2VuZF90 eXBlCitJTiAoJ2NoZWNrcG9pbnRlcicsICdiYWNrZ3JvdW5kIHdyaXRlcicsICd3YWx3cml0ZXIn LCAnYXV0b3ZhY3V1bSBsYXVuY2hlcicpOworIHJlc3VsdCAKKy0tLS0tLS0tCisgdAorIHQKKyB0 CisgdAorKDQgcm93cykKKwogLS0gRW5kIG9mIFN0YXRzIFRlc3QKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNx bAppbmRleCBiNGQ2NzUzYzcxLi4yZjBiMWNjOWQ4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zdGF0cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsCkBA IC01MzUsNSArNTM1LDggQEAgU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9uOwogU0VMRUNUIHBnX3N0 YXRfZ2V0X3JlcGxpY2F0aW9uX3Nsb3QoTlVMTCk7CiBTRUxFQ1QgcGdfc3RhdF9nZXRfc3Vic2Ny aXB0aW9uX3N0YXRzKE5VTEwpOwogCistLSBlbnN1cmUgdGhhdCBhbGxvY2F0ZWRfYnl0ZXMgZXhp c3QgZm9yIGJhY2tlbmRzCitTRUxFQ1QgYWxsb2NhdGVkX2J5dGVzID4gMCBBUyByZXN1bHQgRlJP TSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIGJhY2tlbmRfdHlwZQorSU4gKCdjaGVja3BvaW50ZXIn LCAnYmFja2dyb3VuZCB3cml0ZXInLCAnd2Fsd3JpdGVyJywgJ2F1dG92YWN1dW0gbGF1bmNoZXIn KTsKIAogLS0gRW5kIG9mIFN0YXRzIFRlc3QKLS0gCjIuMjUuMQoK --=-4PREkPt0YIg9MselCQoI--