Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vEBJl-006nnA-DE for pgsql-hackers@arkaria.postgresql.org; Wed, 29 Oct 2025 18:54:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vEBJj-0037h0-K3 for pgsql-hackers@arkaria.postgresql.org; Wed, 29 Oct 2025 18:54:42 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vEBJj-0037gr-2W for pgsql-hackers@lists.postgresql.org; Wed, 29 Oct 2025 18:54:42 +0000 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vEBJe-004vvj-1l for pgsql-hackers@postgresql.org; Wed, 29 Oct 2025 18:54:41 +0000 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-b6ceb3b68feso206078a12.0 for ; Wed, 29 Oct 2025 11:54:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1761764076; x=1762368876; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=9PDzG+mOa3yp1XTHButddXiv8tuJbcaSQN+x/ckFHwE=; b=0p53AcKr8rj57XHboFb5MbiidJxqYXuExltNm68liFdCrWBAO4nMydQu673L7hmuHw tyGxo99ZdaiI6c/0k7saqC31j3zkJaHWZxeQPpdTzOMJkGJmqWnb4kzC7PqKxntpw8/u wFEZ7jodRAL1j5IY2vgdsVAo0QSn+i26fSwkKvTnH9WB+NZff+DbDAgbWGsbbIxozoNe HkplzlG8L0zszSA8MyEopA7wjWYd5VR0Unmeeo+64VitJnlhlb7eX+emam76vBWfDMTd 44lwbR3N4OJnv3TeiewAiZDanT26gN+QS+u+Nz7AlIOpyp81fVrSBCpdb3Iuv8aIKDle k0gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761764076; x=1762368876; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9PDzG+mOa3yp1XTHButddXiv8tuJbcaSQN+x/ckFHwE=; b=REItU3MYqJl7kAwibUcIk02eF2X8VENgF9NA2mR5tMSFah3yLdl2IckBT6kONCEUTd 5R8WZAIqTPAFxmkPD6MZH01tvBuKfIcmLR5pwbPz909zxUkQ1s9ZQaughExpZfDY4Vvm jj81smhNcyE37zX+rkTBFDOtRPF6wzrI/a0yZwuFBsxD+O3VY0qvo3Jdt3IFsE80agms Y57KH2jW4xv3mltWkTZhJvQ1+CLyDIvdXQHGD/fEpZOWNsdnJUIPoRte/mGsj5eo/oRA dNnUlJkvG8ftm6gi94eg7tk5kZ0M7FMqYKv8uioyLYI/FjXTUecGx+ZCDhWUIX6W8bSb t5zg== X-Forwarded-Encrypted: i=1; AJvYcCUSGCC4C8/YmKM30UZDxC59SdiulztmblKLzO0WkmIveWelXuZhE9L7nyOmQ1OmlN64XhKMIQByXCNzkyFa@postgresql.org X-Gm-Message-State: AOJu0YwVvkOK0JG+SVdZo6dPLocDYQHSSBNUOKvmY7RLmMO84ccgT9PV dE1WrwdTfG1jJRmfP5ZNmS4YfVCxpg7qV03hkfXXTm3YHx/EQjgfGuD6znpi4eopkA== X-Gm-Gg: ASbGnctJhPIJp7t1UFQWJw36BJvHF9VqkJUZy5afiT7Uc1UnZH1ZkgCfPe2XOR7k2fB OPvhkY+3tqcpUVFplLrSuDzB3Djvp0NgXZaF1tUUvADMC1QUt7yxCBYrPsVrP7R8e7sKftiR0bH x9vGjnumYXeZW2Nc3akBcOSaxM65lOPisok/N15h5gTHK7H3XGolNgKoGfy2V4lrcUKgHDWXBCu PS6a3bDp1ri8us3aU4lHU0bXsPMtTz1qjqR96x8ISwQNVy0c3GU8Aggw5thMsNry6VrRRHhy5N9 lOiI82a4trSwBms7T5mBttsFV1LogjTfVTxmPjc8ix4vBSr1G6l4AoS0ryGOustaFU1fwLxuheH lj/wl9QgMlv1X+vDCoye4RZ+2VbA4AkSWiHGWG4SOIcAmqE25UGpE5f97mqRv6C2amwvba021h5 rLxiOw/IJGeo8PRPhfdWuwwcWN9IRrolS7 X-Google-Smtp-Source: AGHT+IFNq7pyJfHxJVBbdGXKHOZqsHsO4+MXlNzWG56mWJ0+acAogHby+xrTEJuF1WliE5NYf6Ls1g== X-Received: by 2002:a17:902:ecc9:b0:292:b0d0:2ef1 with SMTP id d9443c01a7336-294ed26debbmr7867135ad.18.1761764076320; Wed, 29 Oct 2025 11:54:36 -0700 (PDT) Received: from jeff-ws-bridge.lan (c-24-7-19-3.hsd1.ca.comcast.net. [24.7.19.3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29498d41c4esm162022965ad.81.2025.10.29.11.54.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Oct 2025 11:54:35 -0700 (PDT) Message-ID: <05b461bb66df0c76b14e3c17c2b92a085e470bfe.camel@j-davis.com> Subject: Re: C11: should we use char32_t for unicode code points? From: Jeff Davis To: Thomas Munro , Peter Eisentraut Cc: Tatsuo Ishii , pgsql-hackers@postgresql.org Date: Wed, 29 Oct 2025 11:54:34 -0700 In-Reply-To: <5d5741649befc2c8a76ff3e8fc950ef50542e1ca.camel@j-davis.com> References: <20251024.184315.1449345234035166124.ishii@postgresql.org> <435cf6bcf14bb91235da065c70d782863ca9b80e.camel@j-davis.com> <044d5476-96e9-4537-92b9-fbceb7960be5@eisentraut.org> <5d5741649befc2c8a76ff3e8fc950ef50542e1ca.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-/6KYbbdsLuUNJbPMAwJH" User-Agent: Evolution 3.52.3-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-/6KYbbdsLuUNJbPMAwJH Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2025-10-28 at 14:54 -0700, Jeff Davis wrote: > [21:48:21.794] ../../src/include/port/win32_port.h: At top level: > [21:48:21.794] ../../src/include/port/win32_port.h:254:8: error: > redefinition of =E2=80=98struct stat=E2=80=99 > [21:48:21.794]=C2=A0=C2=A0 254 | struct stat=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 > /* This should match struct __stat64 */ > [21:48:21.794]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 ^~~~ > [21:48:21.794] In file included from /usr/share/mingw- > w64/include/wchar.h:413, > [21:48:21.794]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 from /usr/share/mingw- > w64/include/uchar.h:28, > [21:48:21.794]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 from ../../src/include/c.h:52= 6: > [21:48:21.794] /usr/share/mingw-w64/include/_mingw_stat64.h:40:10: > note: originally defined here > [21:48:21.794]=C2=A0=C2=A0=C2=A0 40 |=C2=A0=C2=A0 struct stat { > [21:48:21.794]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ^~~~ >=20 > https://cirrus-ci.com/task/4849300577976320 It seems to work on the two windows CI instances just fine, but fails mingw_cross_warning. Apparently, somehow includes (some portion of?) on that platform, which then conflicts with the hackery done in (which expects to include itself after some special #defines). The attached patch moves the inclusion of after "port.h", which solves the problem. It's a bit out of place, but I added a note in the comment explaining why. I'll go ahead and commit. Regards, Jeff Davis --=-/6KYbbdsLuUNJbPMAwJH Content-Disposition: attachment; filename*0=v5-0001-Use-C11-char16_t-and-char32_t-for-Unicode-code-po.pat; filename*1=ch Content-Type: text/x-patch; name="v5-0001-Use-C11-char16_t-and-char32_t-for-Unicode-code-po.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4N2JhYWE5ZjRkNmY2YjIzMGUwODJlYThjNTY2N2QxMTk5N2JiZWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDIxIE9jdCAyMDI1IDEzOjE2OjQ3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NV0gVXNlIEMx MSBjaGFyMTZfdCBhbmQgY2hhcjMyX3QgZm9yIFVuaWNvZGUgY29kZSBwb2ludHMuCgpSZXZpZXdl ZC1ieTogVGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4KUmV2aWV3ZWQtYnk6IFRo b21hcyBNdW5ybyA8dGhvbWFzLm11bnJvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVyIEVp c2VudHJhdXQgPHBldGVyQGVpc2VudHJhdXQub3JnPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tL2JlZGNjOTNkMDYyMDNkZmQ4OTgxNWIxMGY4MTVjYTJkZTg2MjZlODUuY2FtZWwlNDBq LWRhdmlzLmNvbQotLS0KIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAyICstCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMSArCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VyLmMgICAgICAgICAgICAgICAgICAgfCAg OCArLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9zY2FuLmwgICAgICAgICAgICAgICAgICAgICB8ICA4 ICstLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX3NjYW4ubCAgICAgICAgIHwgIDYg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfYnVpbHRpbi5jICAgICB8IDQ0ICsr KysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAgICAgICAg ICAgIHwgNDAgKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGlscy5jICAg ICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9jb21tb24vc2FzbHByZXAuYyAgICAgICAgICAgICAg ICAgICAgICAgICB8IDQ4ICsrKysrKysrLS0tLS0tLS0KIHNyYy9jb21tb24vdW5pY29kZS9jYXNl X3Rlc3QuYyAgICAgICAgICAgICAgICB8IDIzICsrKystLS0tCiBzcmMvY29tbW9uL3VuaWNvZGUv Y2F0ZWdvcnlfdGVzdC5jICAgICAgICAgICAgfCAgMyArLQogLi4uL3VuaWNvZGUvZ2VuZXJhdGUt bm9ybV90ZXN0X3RhYmxlLnBsICAgICAgIHwgIDQgKy0KIC4uLi91bmljb2RlL2dlbmVyYXRlLXVu aWNvZGVfY2FzZV90YWJsZS5wbCAgICB8ICA3ICstLQogLi4uL2dlbmVyYXRlLXVuaWNvZGVfY2F0 ZWdvcnlfdGFibGUucGwgICAgICAgIHwgIDggKy0tCiBzcmMvY29tbW9uL3VuaWNvZGUvbm9ybV90 ZXN0LmMgICAgICAgICAgICAgICAgfCAgNiArLQogc3JjL2NvbW1vbi91bmljb2RlX2Nhc2UuYyAg ICAgICAgICAgICAgICAgICAgIHwgNTYgKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2NvbW1vbi91 bmljb2RlX2NhdGVnb3J5LmMgICAgICAgICAgICAgICAgIHwgNTAgKysrKysrKystLS0tLS0tLS0K IHNyYy9jb21tb24vdW5pY29kZV9ub3JtLmMgICAgICAgICAgICAgICAgICAgICB8IDU2ICsrKysr KysrKy0tLS0tLS0tLS0KIHNyYy9mZV91dGlscy9tYnByaW50LmMgICAgICAgICAgICAgICAgICAg ICAgICB8IDEwICsrLS0KIHNyYy9pbmNsdWRlL2MuaCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDIzICsrKysrKysrCiBzcmMvaW5jbHVkZS9jb21tb24vdW5pY29kZV9jYXNlLmggICAg ICAgICAgICAgfCAxMCArKy0tCiBzcmMvaW5jbHVkZS9jb21tb24vdW5pY29kZV9jYXNlX3RhYmxl LmggICAgICAgfCAxMyArKy0tLQogc3JjL2luY2x1ZGUvY29tbW9uL3VuaWNvZGVfY2F0ZWdvcnku aCAgICAgICAgIHwgNDYgKysrKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS9jb21tb24vdW5pY29k ZV9jYXRlZ29yeV90YWJsZS5oICAgfCAgOCArLS0KIHNyYy9pbmNsdWRlL2NvbW1vbi91bmljb2Rl X25vcm0uaCAgICAgICAgICAgICB8ICA2ICstCiBzcmMvaW5jbHVkZS9tYi9wZ193Y2hhci5oICAg ICAgICAgICAgICAgICAgICAgfCAzMiArKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvcGdfY29uZmln LmguaW4gICAgICAgICAgICAgICAgICAgIHwgIDMgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QgICAgICAgICAgICAgIHwgIDIgKwogMjkgZmlsZXMgY2hhbmdlZCwgMjg0IGluc2Vy dGlvbnMoKyksIDI0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25m aWd1cmUKaW5kZXggN2NlNTIxNzNkZDguLmY3YzI0YzhmNTc2IDEwMDc1NQotLS0gYS9jb25maWd1 cmUKKysrIGIvY29uZmlndXJlCkBAIC0xMzYyNyw3ICsxMzYyNyw3IEBAIGZpCiAjIyBIZWFkZXIg ZmlsZXMKICMjCiAKLWZvciBhY19oZWFkZXIgaW4gYXRvbWljLmggY29weWZpbGUuaCBleGVjaW5m by5oIGdldG9wdC5oIGlmYWRkcnMuaCBtYmFycmllci5oIHN5cy9lcG9sbC5oIHN5cy9ldmVudC5o IHN5cy9wZXJzb25hbGl0eS5oIHN5cy9wcmN0bC5oIHN5cy9wcm9jY3RsLmggc3lzL3NpZ25hbGZk Lmggc3lzL3VjcmVkLmggdGVybWlvcy5oIHVjcmVkLmggeGxvY2FsZS5oCitmb3IgYWNfaGVhZGVy IGluIGF0b21pYy5oIGNvcHlmaWxlLmggZXhlY2luZm8uaCBnZXRvcHQuaCBpZmFkZHJzLmggbWJh cnJpZXIuaCBzeXMvZXBvbGwuaCBzeXMvZXZlbnQuaCBzeXMvcGVyc29uYWxpdHkuaCBzeXMvcHJj dGwuaCBzeXMvcHJvY2N0bC5oIHN5cy9zaWduYWxmZC5oIHN5cy91Y3JlZC5oIHRlcm1pb3MuaCB1 Y2hhci5oIHVjcmVkLmggeGxvY2FsZS5oCiBkbyA6CiAgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8g ImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfaGVh ZGVyX21vbmdyZWwgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19p bmNsdWRlc19kZWZhdWx0IgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFj CmluZGV4IDA4NDJmZDA2MjU5Li42YzgwMmRlYWFjYiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFj CisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTUxMyw2ICsxNTEzLDcgQEAgQUNfQ0hFQ0tfSEVBREVS UyhtNF9ub3JtYWxpemUoWwogCXN5cy9zaWduYWxmZC5oCiAJc3lzL3VjcmVkLmgKIAl0ZXJtaW9z LmgKKwl1Y2hhci5oCiAJdWNyZWQuaAogCXhsb2NhbGUuaAogXSkpCmRpZmYgLS1naXQgYS9tZXNv bi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IDFhMTIzY2UxNTFhLi4wZjYxZmY2YTcwMCAxMDA2 NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTI2MTMsNiArMjYxMyw3 IEBAIGhlYWRlcl9jaGVja3MgPSBbCiAgICdzeXMvc2lnbmFsZmQuaCcsCiAgICdzeXMvdWNyZWQu aCcsCiAgICd0ZXJtaW9zLmgnLAorICAndWNoYXIuaCcsCiAgICd1Y3JlZC5oJywKICAgJ3hsb2Nh bGUuaCcsCiBdCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VyLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VyLmMKaW5kZXggMzNhMDQwNTA2YjQuLmEzNjc5ZjhlODZjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlci5jCkBAIC0zMzksNyArMzM5LDcgQEAgaGV4dmFsKHVuc2lnbmVkIGNoYXIg YykKIAogLyogaXMgVW5pY29kZSBjb2RlIHBvaW50IGFjY2VwdGFibGU/ICovCiBzdGF0aWMgdm9p ZAotY2hlY2tfdW5pY29kZV92YWx1ZShwZ193Y2hhciBjKQorY2hlY2tfdW5pY29kZV92YWx1ZShj aGFyMzJfdCBjKQogewogCWlmICghaXNfdmFsaWRfdW5pY29kZV9jb2RlcG9pbnQoYykpCiAJCWVy ZXBvcnQoRVJST1IsCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RyX3VkZWVzY2FwZShjb25zdCBjaGFy ICpzdHIsIGNoYXIgZXNjYXBlLAogCWNoYXIJICAgKm5ldywKIAkJCSAgICpvdXQ7CiAJc2l6ZV90 CQluZXdfbGVuOwotCXBnX3djaGFyCXBhaXJfZmlyc3QgPSAwOworCWNoYXIxNl90CXBhaXJfZmly c3QgPSAwOwogCVNjYW5uZXJDYWxsYmFja1N0YXRlIHNjYnN0YXRlOwogCiAJLyoKQEAgLTQyMCw3 ICs0MjAsNyBAQCBzdHJfdWRlZXNjYXBlKGNvbnN0IGNoYXIgKnN0ciwgY2hhciBlc2NhcGUsCiAJ CQkJCSBpc3hkaWdpdCgodW5zaWduZWQgY2hhcikgaW5bM10pICYmCiAJCQkJCSBpc3hkaWdpdCgo dW5zaWduZWQgY2hhcikgaW5bNF0pKQogCQkJewotCQkJCXBnX3djaGFyCXVuaWNvZGU7CisJCQkJ Y2hhcjMyX3QJdW5pY29kZTsKIAogCQkJCXVuaWNvZGUgPSAoaGV4dmFsKGluWzFdKSA8PCAxMikg KwogCQkJCQkoaGV4dmFsKGluWzJdKSA8PCA4KSArCkBAIC00NTcsNyArNDU3LDcgQEAgc3RyX3Vk ZWVzY2FwZShjb25zdCBjaGFyICpzdHIsIGNoYXIgZXNjYXBlLAogCQkJCQkgaXN4ZGlnaXQoKHVu c2lnbmVkIGNoYXIpIGluWzZdKSAmJgogCQkJCQkgaXN4ZGlnaXQoKHVuc2lnbmVkIGNoYXIpIGlu WzddKSkKIAkJCXsKLQkJCQlwZ193Y2hhcgl1bmljb2RlOworCQkJCWNoYXIzMl90CXVuaWNvZGU7 CiAKIAkJCQl1bmljb2RlID0gKGhleHZhbChpblsyXSkgPDwgMjApICsKIAkJCQkJKGhleHZhbChp blszXSkgPDwgMTYpICsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9zY2FuLmwgYi9z cmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sCmluZGV4IDA4OTkwODMxZmU4Li5hNjc4MTUzMzliNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW4ubAorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvc2Nhbi5sCkBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIHZvaWQgYWRkbGl0Y2hhcih1 bnNpZ25lZCBjaGFyIHljaGFyLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgY2hh ciAqbGl0YnVmZHVwKGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyB1bnNpZ25lZCBj aGFyIHVuZXNjYXBlX3NpbmdsZV9jaGFyKHVuc2lnbmVkIGNoYXIgYywgY29yZV95eXNjYW5fdCB5 eXNjYW5uZXIpOwogc3RhdGljIGludAlwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbChjb25zdCBjaGFy ICp0b2tlbiwgWVlTVFlQRSAqbHZhbCwgaW50IGJhc2UpOwotc3RhdGljIHZvaWQgYWRkdW5pY29k ZShwZ193Y2hhciBjLCB5eXNjYW5fdCB5eXNjYW5uZXIpOworc3RhdGljIHZvaWQgYWRkdW5pY29k ZShjaGFyMzJfdCBjLCB5eXNjYW5fdCB5eXNjYW5uZXIpOwogCiAjZGVmaW5lIHl5ZXJyb3IobXNn KSAgc2Nhbm5lcl95eWVycm9yKG1zZywgeXlzY2FubmVyKQogCkBAIC02NDAsNyArNjQwLDcgQEAg b3RoZXIJCQkuCiAJCQkJCWFkZGxpdCh5eXRleHQsIHl5bGVuZywgeXlzY2FubmVyKTsKIAkJCQl9 CiA8eGU+e3hldW5pY29kZX0gewotCQkJCQlwZ193Y2hhcgljID0gc3RydG91bCh5eXRleHQgKyAy LCBOVUxMLCAxNik7CisJCQkJCWNoYXIzMl90CWMgPSBzdHJ0b3VsKHl5dGV4dCArIDIsIE5VTEws IDE2KTsKIAogCQkJCQkvKgogCQkJCQkgKiBGb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBwcm9k dWN0aW9ucywgaXNzdWUgYW55CkBAIC02NjgsNyArNjY4LDcgQEAgb3RoZXIJCQkuCiAJCQkJCVBP UF9ZWUxMT0MoKTsKIAkJCQl9CiA8eGV1Pnt4ZXVuaWNvZGV9IHsKLQkJCQkJcGdfd2NoYXIJYyA9 IHN0cnRvdWwoeXl0ZXh0ICsgMiwgTlVMTCwgMTYpOworCQkJCQljaGFyMzJfdAljID0gc3RydG91 bCh5eXRleHQgKyAyLCBOVUxMLCAxNik7CiAKIAkJCQkJLyogUmVtZW1iZXIgc3RhcnQgb2Ygb3Zl cmFsbCBzdHJpbmcgdG9rZW4gLi4uICovCiAJCQkJCVBVU0hfWVlMTE9DKCk7CkBAIC0xMzc2LDcg KzEzNzYsNyBAQCBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbChjb25zdCBjaGFyICp0b2tlbiwgWVlT VFlQRSAqbHZhbCwgaW50IGJhc2UpCiB9CiAKIHN0YXRpYyB2b2lkCi1hZGR1bmljb2RlKHBnX3dj aGFyIGMsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQorYWRkdW5pY29kZShjaGFyMzJfdCBjLCBj b3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIHsKIAlTY2FubmVyQ2FsbGJhY2tTdGF0ZSBzY2JzdGF0 ZTsKIAljaGFyCQlidWZbTUFYX1VOSUNPREVfRVFVSVZBTEVOVF9TVFJJTkcgKyAxXTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9zY2FuLmwgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbnBhdGhfc2Nhbi5sCmluZGV4IGM3YWFiODNlZWI0Li44YzNhMGE5YzY0 MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX3NjYW4ubAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfc2Nhbi5sCkBAIC01NzQsNyArNTc0LDcg QEAgaGV4dmFsKGNoYXIgYywgaW50ICpyZXN1bHQsIHN0cnVjdCBOb2RlICplc2NvbnRleHQsIHl5 c2Nhbl90IHl5c2Nhbm5lcikKIAogLyogQWRkIGdpdmVuIHVuaWNvZGUgY2hhcmFjdGVyIHRvIHNj YW5zdHJpbmcgKi8KIHN0YXRpYyBib29sCi1hZGRVbmljb2RlQ2hhcihpbnQgY2gsIHN0cnVjdCBO b2RlICplc2NvbnRleHQsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK2FkZFVuaWNvZGVDaGFyKGNoYXIz Ml90IGNoLCBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0LCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAJ aWYgKGNoID09IDApCiAJewpAQCAtNjA3LDcgKzYwNyw3IEBAIGFkZFVuaWNvZGVDaGFyKGludCBj aCwgc3RydWN0IE5vZGUgKmVzY29udGV4dCwgeXlzY2FuX3QgeXlzY2FubmVyKQogCiAvKiBBZGQg dW5pY29kZSBjaGFyYWN0ZXIsIHByb2Nlc3NpbmcgYW55IHN1cnJvZ2F0ZSBwYWlycyAqLwogc3Rh dGljIGJvb2wKLWFkZFVuaWNvZGUoaW50IGNoLCBpbnQgKmhpX3N1cnJvZ2F0ZSwgc3RydWN0IE5v ZGUgKmVzY29udGV4dCwgeXlzY2FuX3QgeXlzY2FubmVyKQorYWRkVW5pY29kZShjaGFyMzJfdCBj aCwgaW50ICpoaV9zdXJyb2dhdGUsIHN0cnVjdCBOb2RlICplc2NvbnRleHQsIHl5c2Nhbl90IHl5 c2Nhbm5lcikKIHsKIAlpZiAoaXNfdXRmMTZfc3Vycm9nYXRlX2ZpcnN0KGNoKSkKIAl7CkBAIC02 NTUsNyArNjU1LDcgQEAgcGFyc2VVbmljb2RlKGNoYXIgKnMsIGludCBsLCBzdHJ1Y3QgTm9kZSAq ZXNjb250ZXh0LCB5eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAlmb3IgKGkgPSAyOyBpIDwgbDsgaSAr PSAyKQkvKiBza2lwICdcdScgKi8KIAl7Ci0JCWludAkJCWNoID0gMDsKKwkJY2hhcjMyX3QJCWNo ID0gMDsKIAkJaW50CQkJaiwKIAkJCQkJc2k7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ19sb2NhbGVfYnVpbHRpbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xv Y2FsZV9idWlsdGluLmMKaW5kZXggM2RjNjExYjUwZTEuLjEwMjFlMGQxMjliIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2J1aWx0aW4uYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2J1aWx0aW4uYwpAQCAtMTUsNyArMTUsNiBAQAogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY29tbW9uL3VuaWNvZGVf Y2FzZS5oIgogI2luY2x1ZGUgImNvbW1vbi91bmljb2RlX2NhdGVnb3J5LmgiCi0jaW5jbHVkZSAi bWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgpAQCAtMzUsNiArMzQsMjMg QEAgc3RydWN0IFdvcmRCb3VuZGFyeVN0YXRlCiAJYm9vbAkJcHJldl9hbG51bTsKIH07CiAKKy8q CisgKiBJbiBVVEYtOCwgcGdfd2NoYXIgaXMgZ3VhcmFudGVlZCB0byBiZSB0aGUgY29kZSBwb2lu dCB2YWx1ZS4KKyAqLworc3RhdGljIGlubGluZSBjaGFyMzJfdAordG9fY2hhcjMyKHBnX3djaGFy IHdjKQoreworCUFzc2VydChHZXREYXRhYmFzZUVuY29kaW5nKCkgPT0gUEdfVVRGOCk7CisJcmV0 dXJuIChjaGFyMzJfdCkgd2M7Cit9CisKK3N0YXRpYyBpbmxpbmUgcGdfd2NoYXIKK3RvX3BnX3dj aGFyKGNoYXIzMl90IGMzMikKK3sKKwlBc3NlcnQoR2V0RGF0YWJhc2VFbmNvZGluZygpID09IFBH X1VURjgpOworCXJldHVybiAocGdfd2NoYXIpIGMzMjsKK30KKwogLyoKICAqIFNpbXBsZSB3b3Jk IGJvdW5kYXJ5IGl0ZXJhdG9yIHRoYXQgZHJhd3MgYm91bmRhcmllcyBlYWNoIHRpbWUgdGhlIHJl c3VsdCBvZgogICogcGdfdV9pc2FsbnVtKCkgY2hhbmdlcy4KQEAgLTQ3LDcgKzYzLDcgQEAgaW5p dGNhcF93Ym5leHQodm9pZCAqc3RhdGUpCiAJd2hpbGUgKHdic3RhdGUtPm9mZnNldCA8IHdic3Rh dGUtPmxlbiAmJgogCQkgICB3YnN0YXRlLT5zdHJbd2JzdGF0ZS0+b2Zmc2V0XSAhPSAnXDAnKQog CXsKLQkJcGdfd2NoYXIJdSA9IHV0ZjhfdG9fdW5pY29kZSgodW5zaWduZWQgY2hhciAqKSB3YnN0 YXRlLT5zdHIgKworCQljaGFyMzJfdAl1ID0gdXRmOF90b191bmljb2RlKCh1bnNpZ25lZCBjaGFy ICopIHdic3RhdGUtPnN0ciArCiAJCQkJCQkJCQkJd2JzdGF0ZS0+b2Zmc2V0KTsKIAkJYm9vbAkJ Y3Vycl9hbG51bSA9IHBnX3VfaXNhbG51bSh1LCB3YnN0YXRlLT5wb3NpeCk7CiAKQEAgLTExMiw2 MSArMTI4LDYxIEBAIHN0cmZvbGRfYnVpbHRpbihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUs IGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiBzdGF0aWMgYm9vbAogd2NfaXNkaWdp dF9idWlsdGluKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIHBn X3VfaXNkaWdpdCh3YywgIWxvY2FsZS0+YnVpbHRpbi5jYXNlbWFwX2Z1bGwpOworCXJldHVybiBw Z191X2lzZGlnaXQodG9fY2hhcjMyKHdjKSwgIWxvY2FsZS0+YnVpbHRpbi5jYXNlbWFwX2Z1bGwp OwogfQogCiBzdGF0aWMgYm9vbAogd2NfaXNhbHBoYV9idWlsdGluKHBnX3djaGFyIHdjLCBwZ19s b2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIHBnX3VfaXNhbHBoYSh3Yyk7CisJcmV0dXJuIHBn X3VfaXNhbHBoYSh0b19jaGFyMzIod2MpKTsKIH0KIAogc3RhdGljIGJvb2wKIHdjX2lzYWxudW1f YnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCXJldHVybiBwZ191 X2lzYWxudW0od2MsICFsb2NhbGUtPmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsKKwlyZXR1cm4gcGdf dV9pc2FsbnVtKHRvX2NoYXIzMih3YyksICFsb2NhbGUtPmJ1aWx0aW4uY2FzZW1hcF9mdWxsKTsK IH0KIAogc3RhdGljIGJvb2wKIHdjX2lzdXBwZXJfYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9j YWxlX3QgbG9jYWxlKQogewotCXJldHVybiBwZ191X2lzdXBwZXIod2MpOworCXJldHVybiBwZ191 X2lzdXBwZXIodG9fY2hhcjMyKHdjKSk7CiB9CiAKIHN0YXRpYyBib29sCiB3Y19pc2xvd2VyX2J1 aWx0aW4ocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1cm4gcGdfdV9p c2xvd2VyKHdjKTsKKwlyZXR1cm4gcGdfdV9pc2xvd2VyKHRvX2NoYXIzMih3YykpOwogfQogCiBz dGF0aWMgYm9vbAogd2NfaXNncmFwaF9idWlsdGluKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBs b2NhbGUpCiB7Ci0JcmV0dXJuIHBnX3VfaXNncmFwaCh3Yyk7CisJcmV0dXJuIHBnX3VfaXNncmFw aCh0b19jaGFyMzIod2MpKTsKIH0KIAogc3RhdGljIGJvb2wKIHdjX2lzcHJpbnRfYnVpbHRpbihw Z193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQogewotCXJldHVybiBwZ191X2lzcHJpbnQo d2MpOworCXJldHVybiBwZ191X2lzcHJpbnQodG9fY2hhcjMyKHdjKSk7CiB9CiAKIHN0YXRpYyBi b29sCiB3Y19pc3B1bmN0X2J1aWx0aW4ocGdfd2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkK IHsKLQlyZXR1cm4gcGdfdV9pc3B1bmN0KHdjLCAhbG9jYWxlLT5idWlsdGluLmNhc2VtYXBfZnVs bCk7CisJcmV0dXJuIHBnX3VfaXNwdW5jdCh0b19jaGFyMzIod2MpLCAhbG9jYWxlLT5idWlsdGlu LmNhc2VtYXBfZnVsbCk7CiB9CiAKIHN0YXRpYyBib29sCiB3Y19pc3NwYWNlX2J1aWx0aW4ocGdf d2NoYXIgd2MsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQlyZXR1cm4gcGdfdV9pc3NwYWNlKHdj KTsKKwlyZXR1cm4gcGdfdV9pc3NwYWNlKHRvX2NoYXIzMih3YykpOwogfQogCiBzdGF0aWMgYm9v bAogd2NfaXN4ZGlnaXRfYnVpbHRpbihwZ193Y2hhciB3YywgcGdfbG9jYWxlX3QgbG9jYWxlKQog ewotCXJldHVybiBwZ191X2lzeGRpZ2l0KHdjLCAhbG9jYWxlLT5idWlsdGluLmNhc2VtYXBfZnVs bCk7CisJcmV0dXJuIHBnX3VfaXN4ZGlnaXQodG9fY2hhcjMyKHdjKSwgIWxvY2FsZS0+YnVpbHRp bi5jYXNlbWFwX2Z1bGwpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMTc5LDEzICsxOTUsMTMgQEAg Y2hhcl9pc19jYXNlZF9idWlsdGluKGNoYXIgY2gsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHN0YXRp YyBwZ193Y2hhcgogd2NfdG91cHBlcl9idWlsdGluKHBnX3djaGFyIHdjLCBwZ19sb2NhbGVfdCBs b2NhbGUpCiB7Ci0JcmV0dXJuIHVuaWNvZGVfdXBwZXJjYXNlX3NpbXBsZSh3Yyk7CisJcmV0dXJu IHRvX3BnX3djaGFyKHVuaWNvZGVfdXBwZXJjYXNlX3NpbXBsZSh0b19jaGFyMzIod2MpKSk7CiB9 CiAKIHN0YXRpYyBwZ193Y2hhcgogd2NfdG9sb3dlcl9idWlsdGluKHBnX3djaGFyIHdjLCBwZ19s b2NhbGVfdCBsb2NhbGUpCiB7Ci0JcmV0dXJuIHVuaWNvZGVfbG93ZXJjYXNlX3NpbXBsZSh3Yyk7 CisJcmV0dXJuIHRvX3BnX3djaGFyKHVuaWNvZGVfbG93ZXJjYXNlX3NpbXBsZSh0b19jaGFyMzIo d2MpKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY3R5cGVfbWV0aG9kcyBjdHlwZV9tZXRo b2RzX2J1aWx0aW4gPSB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVu YS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwppbmRleCAyYzM5OGNkOWU1Yy4u OGQ3MzU3ODZlNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwpAQCAtNTQxOSwxMiArNTQxOSwx MiBAQCB1bmljb2RlX2Fzc2lnbmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycm1zZygiVW5pY29kZSBjYXRlZ29yaXphdGlvbiBjYW4gb25seSBiZSBwZXJmb3Jt ZWQgaWYgc2VydmVyIGVuY29kaW5nIGlzIFVURjgiKSkpOwogCi0JLyogY29udmVydCB0byBwZ193 Y2hhciAqLworCS8qIGNvbnZlcnQgdG8gY2hhcjMyX3QgKi8KIAlzaXplID0gcGdfbWJzdHJsZW5f d2l0aF9sZW4oVkFSREFUQV9BTlkoaW5wdXQpLCBWQVJTSVpFX0FOWV9FWEhEUihpbnB1dCkpOwog CXAgPSAodW5zaWduZWQgY2hhciAqKSBWQVJEQVRBX0FOWShpbnB1dCk7CiAJZm9yIChpbnQgaSA9 IDA7IGkgPCBzaXplOyBpKyspCiAJewotCQlwZ193Y2hhcgl1Y2hhciA9IHV0ZjhfdG9fdW5pY29k ZShwKTsKKwkJY2hhcjMyX3QJdWNoYXIgPSB1dGY4X3RvX3VuaWNvZGUocCk7CiAJCWludAkJCWNh dGVnb3J5ID0gdW5pY29kZV9jYXRlZ29yeSh1Y2hhcik7CiAKIAkJaWYgKGNhdGVnb3J5ID09IFBH X1VfVU5BU1NJR05FRCkKQEAgLTU0NDMsMjQgKzU0NDMsMjQgQEAgdW5pY29kZV9ub3JtYWxpemVf ZnVuYyhQR19GVU5DVElPTl9BUkdTKQogCWNoYXIJICAgKmZvcm1zdHIgPSB0ZXh0X3RvX2NzdHJp bmcoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOwogCVVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybSBmb3Jt OwogCWludAkJCXNpemU7Ci0JcGdfd2NoYXIgICAqaW5wdXRfY2hhcnM7Ci0JcGdfd2NoYXIgICAq b3V0cHV0X2NoYXJzOworCWNoYXIzMl90ICAgKmlucHV0X2NoYXJzOworCWNoYXIzMl90ICAgKm91 dHB1dF9jaGFyczsKIAl1bnNpZ25lZCBjaGFyICpwOwogCXRleHQJICAgKnJlc3VsdDsKIAlpbnQJ CQlpOwogCiAJZm9ybSA9IHVuaWNvZGVfbm9ybV9mb3JtX2Zyb21fc3RyaW5nKGZvcm1zdHIpOwog Ci0JLyogY29udmVydCB0byBwZ193Y2hhciAqLworCS8qIGNvbnZlcnQgdG8gY2hhcjMyX3QgKi8K IAlzaXplID0gcGdfbWJzdHJsZW5fd2l0aF9sZW4oVkFSREFUQV9BTlkoaW5wdXQpLCBWQVJTSVpF X0FOWV9FWEhEUihpbnB1dCkpOwotCWlucHV0X2NoYXJzID0gcGFsbG9jKChzaXplICsgMSkgKiBz aXplb2YocGdfd2NoYXIpKTsKKwlpbnB1dF9jaGFycyA9IHBhbGxvYygoc2l6ZSArIDEpICogc2l6 ZW9mKGNoYXIzMl90KSk7CiAJcCA9ICh1bnNpZ25lZCBjaGFyICopIFZBUkRBVEFfQU5ZKGlucHV0 KTsKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQogCXsKIAkJaW5wdXRfY2hhcnNbaV0gPSB1 dGY4X3RvX3VuaWNvZGUocCk7CiAJCXAgKz0gcGdfdXRmX21ibGVuKHApOwogCX0KLQlpbnB1dF9j aGFyc1tpXSA9IChwZ193Y2hhcikgJ1wwJzsKKwlpbnB1dF9jaGFyc1tpXSA9IChjaGFyMzJfdCkg J1wwJzsKIAlBc3NlcnQoKGNoYXIgKikgcCA9PSBWQVJEQVRBX0FOWShpbnB1dCkgKyBWQVJTSVpF X0FOWV9FWEhEUihpbnB1dCkpOwogCiAJLyogYWN0aW9uICovCkBAIC01NDY4LDcgKzU0NjgsNyBA QCB1bmljb2RlX25vcm1hbGl6ZV9mdW5jKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBjb252ZXJ0 IGJhY2sgdG8gVVRGLTggc3RyaW5nICovCiAJc2l6ZSA9IDA7Ci0JZm9yIChwZ193Y2hhciAqd3Ag PSBvdXRwdXRfY2hhcnM7ICp3cDsgd3ArKykKKwlmb3IgKGNoYXIzMl90ICp3cCA9IG91dHB1dF9j aGFyczsgKndwOyB3cCsrKQogCXsKIAkJdW5zaWduZWQgY2hhciBidWZbNF07CiAKQEAgLTU0ODAs NyArNTQ4MCw3IEBAIHVuaWNvZGVfbm9ybWFsaXplX2Z1bmMoUEdfRlVOQ1RJT05fQVJHUykKIAlT RVRfVkFSU0laRShyZXN1bHQsIHNpemUgKyBWQVJIRFJTWik7CiAKIAlwID0gKHVuc2lnbmVkIGNo YXIgKikgVkFSREFUQV9BTlkocmVzdWx0KTsKLQlmb3IgKHBnX3djaGFyICp3cCA9IG91dHB1dF9j aGFyczsgKndwOyB3cCsrKQorCWZvciAoY2hhcjMyX3QgKndwID0gb3V0cHV0X2NoYXJzOyAqd3A7 IHdwKyspCiAJewogCQl1bmljb2RlX3RvX3V0ZjgoKndwLCBwKTsKIAkJcCArPSBwZ191dGZfbWJs ZW4ocCk7CkBAIC01NTA5LDggKzU1MDksOCBAQCB1bmljb2RlX2lzX25vcm1hbGl6ZWQoUEdfRlVO Q1RJT05fQVJHUykKIAljaGFyCSAgICpmb3Jtc3RyID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFS R19URVhUX1BQKDEpKTsKIAlVbmljb2RlTm9ybWFsaXphdGlvbkZvcm0gZm9ybTsKIAlpbnQJCQlz aXplOwotCXBnX3djaGFyICAgKmlucHV0X2NoYXJzOwotCXBnX3djaGFyICAgKm91dHB1dF9jaGFy czsKKwljaGFyMzJfdCAgICppbnB1dF9jaGFyczsKKwljaGFyMzJfdCAgICpvdXRwdXRfY2hhcnM7 CiAJdW5zaWduZWQgY2hhciAqcDsKIAlpbnQJCQlpOwogCVVuaWNvZGVOb3JtYWxpemF0aW9uUUMg cXVpY2tjaGVjazsKQEAgLTU1MTksMTYgKzU1MTksMTYgQEAgdW5pY29kZV9pc19ub3JtYWxpemVk KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlmb3JtID0gdW5pY29kZV9ub3JtX2Zvcm1fZnJvbV9zdHJp bmcoZm9ybXN0cik7CiAKLQkvKiBjb252ZXJ0IHRvIHBnX3djaGFyICovCisJLyogY29udmVydCB0 byBjaGFyMzJfdCAqLwogCXNpemUgPSBwZ19tYnN0cmxlbl93aXRoX2xlbihWQVJEQVRBX0FOWShp bnB1dCksIFZBUlNJWkVfQU5ZX0VYSERSKGlucHV0KSk7Ci0JaW5wdXRfY2hhcnMgPSBwYWxsb2Mo KHNpemUgKyAxKSAqIHNpemVvZihwZ193Y2hhcikpOworCWlucHV0X2NoYXJzID0gcGFsbG9jKChz aXplICsgMSkgKiBzaXplb2YoY2hhcjMyX3QpKTsKIAlwID0gKHVuc2lnbmVkIGNoYXIgKikgVkFS REFUQV9BTlkoaW5wdXQpOwogCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCiAJewogCQlpbnB1 dF9jaGFyc1tpXSA9IHV0ZjhfdG9fdW5pY29kZShwKTsKIAkJcCArPSBwZ191dGZfbWJsZW4ocCk7 CiAJfQotCWlucHV0X2NoYXJzW2ldID0gKHBnX3djaGFyKSAnXDAnOworCWlucHV0X2NoYXJzW2ld ID0gKGNoYXIzMl90KSAnXDAnOwogCUFzc2VydCgoY2hhciAqKSBwID09IFZBUkRBVEFfQU5ZKGlu cHV0KSArIFZBUlNJWkVfQU5ZX0VYSERSKGlucHV0KSk7CiAKIAkvKiBxdWljayBjaGVjayAoc2Vl IFVBWCAjMTUpICovCkBAIC01NTQyLDExICs1NTQyLDExIEBAIHVuaWNvZGVfaXNfbm9ybWFsaXpl ZChQR19GVU5DVElPTl9BUkdTKQogCW91dHB1dF9jaGFycyA9IHVuaWNvZGVfbm9ybWFsaXplKGZv cm0sIGlucHV0X2NoYXJzKTsKIAogCW91dHB1dF9zaXplID0gMDsKLQlmb3IgKHBnX3djaGFyICp3 cCA9IG91dHB1dF9jaGFyczsgKndwOyB3cCsrKQorCWZvciAoY2hhcjMyX3QgKndwID0gb3V0cHV0 X2NoYXJzOyAqd3A7IHdwKyspCiAJCW91dHB1dF9zaXplKys7CiAKIAlyZXN1bHQgPSAoc2l6ZSA9 PSBvdXRwdXRfc2l6ZSkgJiYKLQkJKG1lbWNtcChpbnB1dF9jaGFycywgb3V0cHV0X2NoYXJzLCBz aXplICogc2l6ZW9mKHBnX3djaGFyKSkgPT0gMCk7CisJCShtZW1jbXAoaW5wdXRfY2hhcnMsIG91 dHB1dF9jaGFycywgc2l6ZSAqIHNpemVvZihjaGFyMzJfdCkpID09IDApOwogCiAJUEdfUkVUVVJO X0JPT0wocmVzdWx0KTsKIH0KQEAgLTU2MDIsNyArNTYwMiw3IEBAIHVuaXN0cihQR19GVU5DVElP Tl9BUkdTKQogCWludAkJCWxlbjsKIAlTdHJpbmdJbmZvRGF0YSBzdHI7CiAJdGV4dAkgICAqcmVz dWx0OwotCXBnX3djaGFyCXBhaXJfZmlyc3QgPSAwOworCWNoYXIxNl90CXBhaXJfZmlyc3QgPSAw OwogCWNoYXIJCWNidWZbTUFYX1VOSUNPREVfRVFVSVZBTEVOVF9TVFJJTkcgKyAxXTsKIAogCWlu c3RyID0gVkFSREFUQV9BTlkoaW5wdXRfdGV4dCk7CkBAIC01NjI2LDcgKzU2MjYsNyBAQCB1bmlz dHIoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWVsc2UgaWYgKChsZW4gPj0gNSAmJiBpc3hkaWdpdHNf bihpbnN0ciArIDEsIDQpKSB8fAogCQkJCQkgKGxlbiA+PSA2ICYmIGluc3RyWzFdID09ICd1JyAm JiBpc3hkaWdpdHNfbihpbnN0ciArIDIsIDQpKSkKIAkJCXsKLQkJCQlwZ193Y2hhcgl1bmljb2Rl OworCQkJCWNoYXIzMl90CXVuaWNvZGU7CiAJCQkJaW50CQkJb2Zmc2V0ID0gaW5zdHJbMV0gPT0g J3UnID8gMiA6IDE7CiAKIAkJCQl1bmljb2RlID0gaGV4dmFsX24oaW5zdHIgKyBvZmZzZXQsIDQp OwpAQCAtNTY2Miw3ICs1NjYyLDcgQEAgdW5pc3RyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQl9CiAJ CQllbHNlIGlmIChsZW4gPj0gOCAmJiBpbnN0clsxXSA9PSAnKycgJiYgaXN4ZGlnaXRzX24oaW5z dHIgKyAyLCA2KSkKIAkJCXsKLQkJCQlwZ193Y2hhcgl1bmljb2RlOworCQkJCWNoYXIzMl90CXVu aWNvZGU7CiAKIAkJCQl1bmljb2RlID0gaGV4dmFsX24oaW5zdHIgKyAyLCA2KTsKIApAQCAtNTY5 Nyw3ICs1Njk3LDcgQEAgdW5pc3RyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQl9CiAJCQllbHNlIGlm IChsZW4gPj0gMTAgJiYgaW5zdHJbMV0gPT0gJ1UnICYmIGlzeGRpZ2l0c19uKGluc3RyICsgMiwg OCkpCiAJCQl7Ci0JCQkJcGdfd2NoYXIJdW5pY29kZTsKKwkJCQljaGFyMzJfdAl1bmljb2RlOwog CiAJCQkJdW5pY29kZSA9IGhleHZhbF9uKGluc3RyICsgMiwgOCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21iL21idXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21iL21idXRp bHMuYwppbmRleCA4ODZlY2JhZDg3MS4uZmI2MjllZDVjOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21iL21idXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxz LmMKQEAgLTg2Miw3ICs4NjIsNyBAQCBwZXJmb3JtX2RlZmF1bHRfZW5jb2RpbmdfY29udmVyc2lv bihjb25zdCBjaGFyICpzcmMsIGludCBsZW4sCiAgKiBtYXkgY2FsbCB0aGlzIG91dHNpZGUgYW55 IHRyYW5zYWN0aW9uLCBvciBpbiBhbiBhYm9ydGVkIHRyYW5zYWN0aW9uLgogICovCiB2b2lkCi1w Z191bmljb2RlX3RvX3NlcnZlcihwZ193Y2hhciBjLCB1bnNpZ25lZCBjaGFyICpzKQorcGdfdW5p Y29kZV90b19zZXJ2ZXIoY2hhcjMyX3QgYywgdW5zaWduZWQgY2hhciAqcykKIHsKIAl1bnNpZ25l ZCBjaGFyIGNfYXNfdXRmOFtNQVhfTVVMVElCWVRFX0NIQVJfTEVOICsgMV07CiAJaW50CQkJY19h c191dGY4X2xlbjsKQEAgLTkyNCw3ICs5MjQsNyBAQCBwZ191bmljb2RlX3RvX3NlcnZlcihwZ193 Y2hhciBjLCB1bnNpZ25lZCBjaGFyICpzKQogICogYnV0IHNpbXBseSByZXR1cm4gZmFsc2Ugb24g Y29udmVyc2lvbiBmYWlsdXJlLgogICovCiBib29sCi1wZ191bmljb2RlX3RvX3NlcnZlcl9ub2Vy cm9yKHBnX3djaGFyIGMsIHVuc2lnbmVkIGNoYXIgKnMpCitwZ191bmljb2RlX3RvX3NlcnZlcl9u b2Vycm9yKGNoYXIzMl90IGMsIHVuc2lnbmVkIGNoYXIgKnMpCiB7CiAJdW5zaWduZWQgY2hhciBj X2FzX3V0ZjhbTUFYX01VTFRJQllURV9DSEFSX0xFTiArIDFdOwogCWludAkJCWNfYXNfdXRmOF9s ZW47CmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3Nhc2xwcmVwLmMgYi9zcmMvY29tbW9uL3Nhc2xw cmVwLmMKaW5kZXggOTdiZWI0Nzk0MGIuLjEwMWU4ZDY1YTRkIDEwMDY0NAotLS0gYS9zcmMvY29t bW9uL3Nhc2xwcmVwLmMKKysrIGIvc3JjL2NvbW1vbi9zYXNscHJlcC5jCkBAIC00Nyw3ICs0Nyw3 IEBACiAKIC8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucyAqLwogc3RhdGljIGludAlj b2RlcG9pbnRfcmFuZ2VfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOwotc3RhdGlj IGJvb2wgaXNfY29kZV9pbl90YWJsZShwZ193Y2hhciBjb2RlLCBjb25zdCBwZ193Y2hhciAqbWFw LCBpbnQgbWFwc2l6ZSk7CitzdGF0aWMgYm9vbCBpc19jb2RlX2luX3RhYmxlKGNoYXIzMl90IGNv ZGUsIGNvbnN0IGNoYXIzMl90ICptYXAsIGludCBtYXBzaXplKTsKIHN0YXRpYyBpbnQJcGdfdXRm OF9zdHJpbmdfbGVuKGNvbnN0IGNoYXIgKnNvdXJjZSk7CiAKIC8qCkBAIC02NCw3ICs2NCw3IEBA IHN0YXRpYyBpbnQJcGdfdXRmOF9zdHJpbmdfbGVuKGNvbnN0IGNoYXIgKnNvdXJjZSk7CiAgKgog ICogVGhlc2UgYXJlIGFsbCBtYXBwZWQgdG8gdGhlIEFTQ0lJIHNwYWNlIGNoYXJhY3RlciAoVSsw MEEwKS4KICAqLwotc3RhdGljIGNvbnN0IHBnX3djaGFyIG5vbl9hc2NpaV9zcGFjZV9yYW5nZXNb XSA9CitzdGF0aWMgY29uc3QgY2hhcjMyX3Qgbm9uX2FzY2lpX3NwYWNlX3Jhbmdlc1tdID0KIHsK IAkweDAwQTAsIDB4MDBBMCwKIAkweDE2ODAsIDB4MTY4MCwKQEAgLTc5LDcgKzc5LDcgQEAgc3Rh dGljIGNvbnN0IHBnX3djaGFyIG5vbl9hc2NpaV9zcGFjZV9yYW5nZXNbXSA9CiAgKgogICogSWYg YW55IG9mIHRoZXNlIGFwcGVhciBpbiB0aGUgaW5wdXQsIHRoZXkgYXJlIHJlbW92ZWQuCiAgKi8K LXN0YXRpYyBjb25zdCBwZ193Y2hhciBjb21tb25seV9tYXBwZWRfdG9fbm90aGluZ19yYW5nZXNb XSA9CitzdGF0aWMgY29uc3QgY2hhcjMyX3QgY29tbW9ubHlfbWFwcGVkX3RvX25vdGhpbmdfcmFu Z2VzW10gPQogewogCTB4MDBBRCwgMHgwMEFELAogCTB4MDM0RiwgMHgwMzRGLApAQCAtMTE0LDcg KzExNCw3IEBAIHN0YXRpYyBjb25zdCBwZ193Y2hhciBjb21tb25seV9tYXBwZWRfdG9fbm90aGlu Z19yYW5nZXNbXSA9CiAgKiB0YWJsZXMsIHNvIG9uZSBjb2RlIG1pZ2h0IG9yaWdpbmF0ZSBmcm9t IG11bHRpcGxlIHNvdXJjZSB0YWJsZXMuCiAgKiBBZGphY2VudCByYW5nZXMgaGF2ZSBhbHNvIGJl ZW4gbWVyZ2VkIHRvZ2V0aGVyLCB0byBzYXZlIHNwYWNlLgogICovCi1zdGF0aWMgY29uc3QgcGdf d2NoYXIgcHJvaGliaXRlZF9vdXRwdXRfcmFuZ2VzW10gPQorc3RhdGljIGNvbnN0IGNoYXIzMl90 IHByb2hpYml0ZWRfb3V0cHV0X3Jhbmdlc1tdID0KIHsKIAkweDAwMDAsIDB4MDAxRiwJCQkJLyog Qy4yLjEgKi8KIAkweDAwN0YsIDB4MDBBMCwJCQkJLyogQy4xLjIsIEMuMi4xLCBDLjIuMiAqLwpA QCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyBjb25zdCBwZ193Y2hhciBwcm9oaWJpdGVkX291dHB1 dF9yYW5nZXNbXSA9CiB9OwogCiAvKiBBLjEgVW5hc3NpZ25lZCBjb2RlIHBvaW50cyBpbiBVbmlj b2RlIDMuMiAqLwotc3RhdGljIGNvbnN0IHBnX3djaGFyIHVuYXNzaWduZWRfY29kZXBvaW50X3Jh bmdlc1tdID0KK3N0YXRpYyBjb25zdCBjaGFyMzJfdCB1bmFzc2lnbmVkX2NvZGVwb2ludF9yYW5n ZXNbXSA9CiB7CiAJMHgwMjIxLCAweDAyMjEsCiAJMHgwMjM0LCAweDAyNEYsCkBAIC01NTYsNyAr NTU2LDcgQEAgc3RhdGljIGNvbnN0IHBnX3djaGFyIHVuYXNzaWduZWRfY29kZXBvaW50X3Jhbmdl c1tdID0KIH07CiAKIC8qIEQuMSBDaGFyYWN0ZXJzIHdpdGggYmlkaXJlY3Rpb25hbCBwcm9wZXJ0 eSAiUiIgb3IgIkFMIiAqLwotc3RhdGljIGNvbnN0IHBnX3djaGFyIFJhbmRBTENhdF9jb2RlcG9p bnRfcmFuZ2VzW10gPQorc3RhdGljIGNvbnN0IGNoYXIzMl90IFJhbmRBTENhdF9jb2RlcG9pbnRf cmFuZ2VzW10gPQogewogCTB4MDVCRSwgMHgwNUJFLAogCTB4MDVDMCwgMHgwNUMwLApAQCAtNTk1 LDcgKzU5NSw3IEBAIHN0YXRpYyBjb25zdCBwZ193Y2hhciBSYW5kQUxDYXRfY29kZXBvaW50X3Jh bmdlc1tdID0KIH07CiAKIC8qIEQuMiBDaGFyYWN0ZXJzIHdpdGggYmlkaXJlY3Rpb25hbCBwcm9w ZXJ0eSAiTCIgKi8KLXN0YXRpYyBjb25zdCBwZ193Y2hhciBMQ2F0X2NvZGVwb2ludF9yYW5nZXNb XSA9CitzdGF0aWMgY29uc3QgY2hhcjMyX3QgTENhdF9jb2RlcG9pbnRfcmFuZ2VzW10gPQogewog CTB4MDA0MSwgMHgwMDVBLAogCTB4MDA2MSwgMHgwMDdBLApAQCAtOTY4LDggKzk2OCw4IEBAIHN0 YXRpYyBjb25zdCBwZ193Y2hhciBMQ2F0X2NvZGVwb2ludF9yYW5nZXNbXSA9CiBzdGF0aWMgaW50 CiBjb2RlcG9pbnRfcmFuZ2VfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiB7Ci0J Y29uc3QgcGdfd2NoYXIgKmtleSA9IChjb25zdCBwZ193Y2hhciAqKSBhOwotCWNvbnN0IHBnX3dj aGFyICpyYW5nZSA9IChjb25zdCBwZ193Y2hhciAqKSBiOworCWNvbnN0IGNoYXIzMl90ICprZXkg PSAoY29uc3QgY2hhcjMyX3QgKikgYTsKKwljb25zdCBjaGFyMzJfdCAqcmFuZ2UgPSAoY29uc3Qg Y2hhcjMyX3QgKikgYjsKIAogCWlmICgqa2V5IDwgcmFuZ2VbMF0pCiAJCXJldHVybiAtMTsJCQkJ LyogbGVzcyB0aGFuIGxvd2VyIGJvdW5kICovCkBAIC05ODAsMTQgKzk4MCwxNCBAQCBjb2RlcG9p bnRfcmFuZ2VfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiB9CiAKIHN0YXRpYyBi b29sCi1pc19jb2RlX2luX3RhYmxlKHBnX3djaGFyIGNvZGUsIGNvbnN0IHBnX3djaGFyICptYXAs IGludCBtYXBzaXplKQoraXNfY29kZV9pbl90YWJsZShjaGFyMzJfdCBjb2RlLCBjb25zdCBjaGFy MzJfdCAqbWFwLCBpbnQgbWFwc2l6ZSkKIHsKIAlBc3NlcnQobWFwc2l6ZSAlIDIgPT0gMCk7CiAK IAlpZiAoY29kZSA8IG1hcFswXSB8fCBjb2RlID4gbWFwW21hcHNpemUgLSAxXSkKIAkJcmV0dXJu IGZhbHNlOwogCi0JaWYgKGJzZWFyY2goJmNvZGUsIG1hcCwgbWFwc2l6ZSAvIDIsIHNpemVvZihw Z193Y2hhcikgKiAyLAorCWlmIChic2VhcmNoKCZjb2RlLCBtYXAsIG1hcHNpemUgLyAyLCBzaXpl b2YoY2hhcjMyX3QpICogMiwKIAkJCQljb2RlcG9pbnRfcmFuZ2VfY21wKSkKIAkJcmV0dXJuIHRy dWU7CiAJZWxzZQpAQCAtMTA0Niw4ICsxMDQ2LDggQEAgcGdfdXRmOF9zdHJpbmdfbGVuKGNvbnN0 IGNoYXIgKnNvdXJjZSkKIHBnX3Nhc2xwcmVwX3JjCiBwZ19zYXNscHJlcChjb25zdCBjaGFyICpp bnB1dCwgY2hhciAqKm91dHB1dCkKIHsKLQlwZ193Y2hhciAgICppbnB1dF9jaGFycyA9IE5VTEw7 Ci0JcGdfd2NoYXIgICAqb3V0cHV0X2NoYXJzID0gTlVMTDsKKwljaGFyMzJfdCAgICppbnB1dF9j aGFycyA9IE5VTEw7CisJY2hhcjMyX3QgICAqb3V0cHV0X2NoYXJzID0gTlVMTDsKIAlpbnQJCQlp bnB1dF9zaXplOwogCWNoYXIJICAgKnJlc3VsdDsKIAlpbnQJCQlyZXN1bHRfc2l6ZTsKQEAgLTEw NTUsNyArMTA1NSw3IEBAIHBnX3Nhc2xwcmVwKGNvbnN0IGNoYXIgKmlucHV0LCBjaGFyICoqb3V0 cHV0KQogCWludAkJCWk7CiAJYm9vbAkJY29udGFpbnNfUmFuZEFMQ2F0OwogCXVuc2lnbmVkIGNo YXIgKnA7Ci0JcGdfd2NoYXIgICAqd3A7CisJY2hhcjMyX3QgICAqd3A7CiAKIAkvKiBFbnN1cmUg d2UgcmV0dXJuICpvdXRwdXQgYXMgTlVMTCBvbiBmYWlsdXJlICovCiAJKm91dHB1dCA9IE5VTEw7 CkBAIC0xMDgwLDEwICsxMDgwLDEwIEBAIHBnX3Nhc2xwcmVwKGNvbnN0IGNoYXIgKmlucHV0LCBj aGFyICoqb3V0cHV0KQogCWlucHV0X3NpemUgPSBwZ191dGY4X3N0cmluZ19sZW4oaW5wdXQpOwog CWlmIChpbnB1dF9zaXplIDwgMCkKIAkJcmV0dXJuIFNBU0xQUkVQX0lOVkFMSURfVVRGODsKLQlp ZiAoaW5wdXRfc2l6ZSA+PSBNYXhBbGxvY1NpemUgLyBzaXplb2YocGdfd2NoYXIpKQorCWlmIChp bnB1dF9zaXplID49IE1heEFsbG9jU2l6ZSAvIHNpemVvZihjaGFyMzJfdCkpCiAJCWdvdG8gb29t OwogCi0JaW5wdXRfY2hhcnMgPSBBTExPQygoaW5wdXRfc2l6ZSArIDEpICogc2l6ZW9mKHBnX3dj aGFyKSk7CisJaW5wdXRfY2hhcnMgPSBBTExPQygoaW5wdXRfc2l6ZSArIDEpICogc2l6ZW9mKGNo YXIzMl90KSk7CiAJaWYgKCFpbnB1dF9jaGFycykKIAkJZ290byBvb207CiAKQEAgLTEwOTMsNyAr MTA5Myw3IEBAIHBnX3Nhc2xwcmVwKGNvbnN0IGNoYXIgKmlucHV0LCBjaGFyICoqb3V0cHV0KQog CQlpbnB1dF9jaGFyc1tpXSA9IHV0ZjhfdG9fdW5pY29kZShwKTsKIAkJcCArPSBwZ191dGZfbWJs ZW4ocCk7CiAJfQotCWlucHV0X2NoYXJzW2ldID0gKHBnX3djaGFyKSAnXDAnOworCWlucHV0X2No YXJzW2ldID0gKGNoYXIzMl90KSAnXDAnOwogCiAJLyoKIAkgKiBUaGUgc3RlcHMgYmVsb3cgY29y cmVzcG9uZCB0byB0aGUgc3RlcHMgbGlzdGVkIGluIFtSRkMzNDU0XSwgU2VjdGlvbgpAQCAtMTEw Nyw3ICsxMTA3LDcgQEAgcGdfc2FzbHByZXAoY29uc3QgY2hhciAqaW5wdXQsIGNoYXIgKipvdXRw dXQpCiAJY291bnQgPSAwOwogCWZvciAoaSA9IDA7IGkgPCBpbnB1dF9zaXplOyBpKyspCiAJewot CQlwZ193Y2hhcgljb2RlID0gaW5wdXRfY2hhcnNbaV07CisJCWNoYXIzMl90CWNvZGUgPSBpbnB1 dF9jaGFyc1tpXTsKIAogCQlpZiAoSVNfQ09ERV9JTl9UQUJMRShjb2RlLCBub25fYXNjaWlfc3Bh Y2VfcmFuZ2VzKSkKIAkJCWlucHV0X2NoYXJzW2NvdW50KytdID0gMHgwMDIwOwpAQCAtMTExOCw3 ICsxMTE4LDcgQEAgcGdfc2FzbHByZXAoY29uc3QgY2hhciAqaW5wdXQsIGNoYXIgKipvdXRwdXQp CiAJCWVsc2UKIAkJCWlucHV0X2NoYXJzW2NvdW50KytdID0gY29kZTsKIAl9Ci0JaW5wdXRfY2hh cnNbY291bnRdID0gKHBnX3djaGFyKSAnXDAnOworCWlucHV0X2NoYXJzW2NvdW50XSA9IChjaGFy MzJfdCkgJ1wwJzsKIAlpbnB1dF9zaXplID0gY291bnQ7CiAKIAlpZiAoaW5wdXRfc2l6ZSA9PSAw KQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgcGdfc2FzbHByZXAoY29uc3QgY2hhciAqaW5wdXQsIGNo YXIgKipvdXRwdXQpCiAJICovCiAJZm9yIChpID0gMDsgaSA8IGlucHV0X3NpemU7IGkrKykKIAl7 Ci0JCXBnX3djaGFyCWNvZGUgPSBpbnB1dF9jaGFyc1tpXTsKKwkJY2hhcjMyX3QJY29kZSA9IGlu cHV0X2NoYXJzW2ldOwogCiAJCWlmIChJU19DT0RFX0lOX1RBQkxFKGNvZGUsIHByb2hpYml0ZWRf b3V0cHV0X3JhbmdlcykpCiAJCQlnb3RvIHByb2hpYml0ZWQ7CkBAIC0xMTcwLDcgKzExNzAsNyBA QCBwZ19zYXNscHJlcChjb25zdCBjaGFyICppbnB1dCwgY2hhciAqKm91dHB1dCkKIAljb250YWlu c19SYW5kQUxDYXQgPSBmYWxzZTsKIAlmb3IgKGkgPSAwOyBpIDwgaW5wdXRfc2l6ZTsgaSsrKQog CXsKLQkJcGdfd2NoYXIJY29kZSA9IGlucHV0X2NoYXJzW2ldOworCQljaGFyMzJfdAljb2RlID0g aW5wdXRfY2hhcnNbaV07CiAKIAkJaWYgKElTX0NPREVfSU5fVEFCTEUoY29kZSwgUmFuZEFMQ2F0 X2NvZGVwb2ludF9yYW5nZXMpKQogCQl7CkBAIC0xMTgxLDEyICsxMTgxLDEyIEBAIHBnX3Nhc2xw cmVwKGNvbnN0IGNoYXIgKmlucHV0LCBjaGFyICoqb3V0cHV0KQogCiAJaWYgKGNvbnRhaW5zX1Jh bmRBTENhdCkKIAl7Ci0JCXBnX3djaGFyCWZpcnN0ID0gaW5wdXRfY2hhcnNbMF07Ci0JCXBnX3dj aGFyCWxhc3QgPSBpbnB1dF9jaGFyc1tpbnB1dF9zaXplIC0gMV07CisJCWNoYXIzMl90CWZpcnN0 ID0gaW5wdXRfY2hhcnNbMF07CisJCWNoYXIzMl90CWxhc3QgPSBpbnB1dF9jaGFyc1tpbnB1dF9z aXplIC0gMV07CiAKIAkJZm9yIChpID0gMDsgaSA8IGlucHV0X3NpemU7IGkrKykKIAkJewotCQkJ cGdfd2NoYXIJY29kZSA9IGlucHV0X2NoYXJzW2ldOworCQkJY2hhcjMyX3QJY29kZSA9IGlucHV0 X2NoYXJzW2ldOwogCiAJCQlpZiAoSVNfQ09ERV9JTl9UQUJMRShjb2RlLCBMQ2F0X2NvZGVwb2lu dF9yYW5nZXMpKQogCQkJCWdvdG8gcHJvaGliaXRlZDsKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24v dW5pY29kZS9jYXNlX3Rlc3QuYyBiL3NyYy9jb21tb24vdW5pY29kZS9jYXNlX3Rlc3QuYwppbmRl eCBmZGZiNjJlODU1Mi4uMDBkNGY4NWU1YTUgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vdW5pY29k ZS9jYXNlX3Rlc3QuYworKysgYi9zcmMvY29tbW9uL3VuaWNvZGUvY2FzZV90ZXN0LmMKQEAgLTI0 LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjb21tb24vdW5pY29kZV9jYXNlLmgiCiAjaW5jbHVkZSAi Y29tbW9uL3VuaWNvZGVfY2F0ZWdvcnkuaCIKICNpbmNsdWRlICJjb21tb24vdW5pY29kZV92ZXJz aW9uLmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKIAogLyogZW5vdWdoIHRvIGhvbGQgbGFy Z2VzdCBzb3VyY2Ugb3IgcmVzdWx0IHN0cmluZywgaW5jbHVkaW5nIE5VTCAqLwogI2RlZmluZSBC VUZTWiAyNTYKQEAgLTU0LDcgKzU1LDcgQEAgaW5pdGNhcF93Ym5leHQodm9pZCAqc3RhdGUpCiAJ d2hpbGUgKHdic3RhdGUtPm9mZnNldCA8IHdic3RhdGUtPmxlbiAmJgogCQkgICB3YnN0YXRlLT5z dHJbd2JzdGF0ZS0+b2Zmc2V0XSAhPSAnXDAnKQogCXsKLQkJcGdfd2NoYXIJdSA9IHV0ZjhfdG9f dW5pY29kZSgodW5zaWduZWQgY2hhciAqKSB3YnN0YXRlLT5zdHIgKworCQljaGFyMzJfdAl1ID0g dXRmOF90b191bmljb2RlKCh1bnNpZ25lZCBjaGFyICopIHdic3RhdGUtPnN0ciArCiAJCQkJCQkJ CQkJd2JzdGF0ZS0+b2Zmc2V0KTsKIAkJYm9vbAkJY3Vycl9hbG51bSA9IHBnX3VfaXNhbG51bSh1 LCB3YnN0YXRlLT5wb3NpeCk7CiAKQEAgLTc3LDE2ICs3OCwxNiBAQCBpbml0Y2FwX3dibmV4dCh2 b2lkICpzdGF0ZSkKICNpZmRlZiBVU0VfSUNVCiAKIHN0YXRpYyB2b2lkCi1pY3VfdGVzdF9zaW1w bGUocGdfd2NoYXIgY29kZSkKK2ljdV90ZXN0X3NpbXBsZShjaGFyMzJfdCBjb2RlKQogewotCXBn X3djaGFyCWxvd2VyID0gdW5pY29kZV9sb3dlcmNhc2Vfc2ltcGxlKGNvZGUpOwotCXBnX3djaGFy CXRpdGxlID0gdW5pY29kZV90aXRsZWNhc2Vfc2ltcGxlKGNvZGUpOwotCXBnX3djaGFyCXVwcGVy ID0gdW5pY29kZV91cHBlcmNhc2Vfc2ltcGxlKGNvZGUpOwotCXBnX3djaGFyCWZvbGQgPSB1bmlj b2RlX2Nhc2Vmb2xkX3NpbXBsZShjb2RlKTsKLQlwZ193Y2hhcglpY3Vsb3dlciA9IHVfdG9sb3dl cihjb2RlKTsKLQlwZ193Y2hhcglpY3V0aXRsZSA9IHVfdG90aXRsZShjb2RlKTsKLQlwZ193Y2hh cglpY3V1cHBlciA9IHVfdG91cHBlcihjb2RlKTsKLQlwZ193Y2hhcglpY3Vmb2xkID0gdV9mb2xk Q2FzZShjb2RlLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKTsKKwljaGFyMzJfdAlsb3dlciA9IHVuaWNv ZGVfbG93ZXJjYXNlX3NpbXBsZShjb2RlKTsKKwljaGFyMzJfdAl0aXRsZSA9IHVuaWNvZGVfdGl0 bGVjYXNlX3NpbXBsZShjb2RlKTsKKwljaGFyMzJfdAl1cHBlciA9IHVuaWNvZGVfdXBwZXJjYXNl X3NpbXBsZShjb2RlKTsKKwljaGFyMzJfdAlmb2xkID0gdW5pY29kZV9jYXNlZm9sZF9zaW1wbGUo Y29kZSk7CisJY2hhcjMyX3QJaWN1bG93ZXIgPSB1X3RvbG93ZXIoY29kZSk7CisJY2hhcjMyX3QJ aWN1dGl0bGUgPSB1X3RvdGl0bGUoY29kZSk7CisJY2hhcjMyX3QJaWN1dXBwZXIgPSB1X3RvdXBw ZXIoY29kZSk7CisJY2hhcjMyX3QJaWN1Zm9sZCA9IHVfZm9sZENhc2UoY29kZSwgVV9GT0xEX0NB U0VfREVGQVVMVCk7CiAKIAlpZiAobG93ZXIgIT0gaWN1bG93ZXIgfHwgdGl0bGUgIT0gaWN1dGl0 bGUgfHwgdXBwZXIgIT0gaWN1dXBwZXIgfHwKIAkJZm9sZCAhPSBpY3Vmb2xkKQpAQCAtMTcyLDcg KzE3Myw3IEBAIHRlc3RfaWN1KHZvaWQpCiAJaW50CQkJc3VjY2Vzc2Z1bCA9IDA7CiAJaW50CQkJ c2tpcHBlZF9taXNtYXRjaCA9IDA7CiAKLQlmb3IgKHBnX3djaGFyIGNvZGUgPSAwOyBjb2RlIDw9 IDB4MTBmZmZmOyBjb2RlKyspCisJZm9yIChjaGFyMzJfdCBjb2RlID0gMDsgY29kZSA8PSAweDEw ZmZmZjsgY29kZSsrKQogCXsKIAkJcGdfdW5pY29kZV9jYXRlZ29yeSBjYXRlZ29yeSA9IHVuaWNv ZGVfY2F0ZWdvcnkoY29kZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vdW5pY29kZS9jYXRl Z29yeV90ZXN0LmMgYi9zcmMvY29tbW9uL3VuaWNvZGUvY2F0ZWdvcnlfdGVzdC5jCmluZGV4IDVk MzdiYTM5MTk2Li4xZThjMWY3OTA1ZiAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi91bmljb2RlL2Nh dGVnb3J5X3Rlc3QuYworKysgYi9zcmMvY29tbW9uL3VuaWNvZGUvY2F0ZWdvcnlfdGVzdC5jCkBA IC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb21tb24vdW5pY29kZV9jYXRlZ29yeS5oIgog I2luY2x1ZGUgImNvbW1vbi91bmljb2RlX3ZlcnNpb24uaCIKKyNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgogCiBzdGF0aWMgaW50CXBnX3VuaWNvZGVfdmVyc2lvbiA9IDA7CiAjaWZkZWYgVVNFX0lD VQpAQCAtNTksNyArNjAsNyBAQCBpY3VfdGVzdCgpCiAJaW50CQkJcGdfc2tpcHBlZF9jb2RlcG9p bnRzID0gMDsKIAlpbnQJCQlpY3Vfc2tpcHBlZF9jb2RlcG9pbnRzID0gMDsKIAotCWZvciAocGdf d2NoYXIgY29kZSA9IDA7IGNvZGUgPD0gMHgxMGZmZmY7IGNvZGUrKykKKwlmb3IgKGNoYXIzMl90 IGNvZGUgPSAwOyBjb2RlIDw9IDB4MTBmZmZmOyBjb2RlKyspCiAJewogCQl1aW50OF90CQlwZ19j YXRlZ29yeSA9IHVuaWNvZGVfY2F0ZWdvcnkoY29kZSk7CiAJCXVpbnQ4X3QJCWljdV9jYXRlZ29y eSA9IHVfY2hhclR5cGUoY29kZSk7CmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3VuaWNvZGUvZ2Vu ZXJhdGUtbm9ybV90ZXN0X3RhYmxlLnBsIGIvc3JjL2NvbW1vbi91bmljb2RlL2dlbmVyYXRlLW5v cm1fdGVzdF90YWJsZS5wbAppbmRleCAxYjQwMWJlOTQwOS4uMWE4YjkwOGZmMzMgMTAwNjQ0Ci0t LSBhL3NyYy9jb21tb24vdW5pY29kZS9nZW5lcmF0ZS1ub3JtX3Rlc3RfdGFibGUucGwKKysrIGIv c3JjL2NvbW1vbi91bmljb2RlL2dlbmVyYXRlLW5vcm1fdGVzdF90YWJsZS5wbApAQCAtNDcsOCAr NDcsOCBAQCBwcmludCAkT1VUUFVUIDw8SEVBREVSOwogdHlwZWRlZiBzdHJ1Y3QKIHsKIAlpbnQJ CQlsaW5lbnVtOwotCXBnX3djaGFyCWlucHV0WzUwXTsKLQlwZ193Y2hhcglvdXRwdXRbNF1bNTBd OworCWNoYXIzMl90CWlucHV0WzUwXTsKKwljaGFyMzJfdAlvdXRwdXRbNF1bNTBdOwogfSBwZ191 bmljb2RlX3Rlc3Q7CiAKIC8qIHRlc3QgdGFibGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb21tb24v dW5pY29kZS9nZW5lcmF0ZS11bmljb2RlX2Nhc2VfdGFibGUucGwgYi9zcmMvY29tbW9uL3VuaWNv ZGUvZ2VuZXJhdGUtdW5pY29kZV9jYXNlX3RhYmxlLnBsCmluZGV4IDVkOWRkZDYyODAzLi5mNzFl YjI1Yzk0ZSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi91bmljb2RlL2dlbmVyYXRlLXVuaWNvZGVf Y2FzZV90YWJsZS5wbAorKysgYi9zcmMvY29tbW9uL3VuaWNvZGUvZ2VuZXJhdGUtdW5pY29kZV9j YXNlX3RhYmxlLnBsCkBAIC0yNzAsNyArMjcwLDYgQEAgcHJpbnQgJE9UIDw8IkVPUyI7CiAgKi8K IAogI2luY2x1ZGUgImNvbW1vbi91bmljb2RlX2Nhc2UuaCIKLSNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgogCiAvKgogICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvZGVwb2ludHMgdGhhdCBjYW4g cmVzdWx0IGZyb20gY2FzZSBtYXBwaW5nCkBAIC0yOTcsNyArMjk2LDcgQEAgdHlwZWRlZiBlbnVt CiB0eXBlZGVmIHN0cnVjdAogewogCWludDE2CQljb25kaXRpb25zOwotCXBnX3djaGFyCW1hcFtO Q2FzZUtpbmRdW01BWF9DQVNFX0VYUEFOU0lPTl07CisJY2hhcjMyX3QJbWFwW05DYXNlS2luZF1b TUFYX0NBU0VfRVhQQU5TSU9OXTsKIH0gcGdfc3BlY2lhbF9jYXNlOwogCiAvKgpAQCAtNDMwLDcg KzQyOSw3IEBAIGZvcmVhY2ggbXkgJGtpbmQgKCdsb3dlcicsICd0aXRsZScsICd1cHBlcicsICdm b2xkJykKICAqIFRoZSBlbnRyeSBjYXNlX21hcF8ke2tpbmR9W2Nhc2VfaW5kZXgoY29kZXBvaW50 KV0gaXMgdGhlIG1hcHBpbmcgZm9yIHRoZQogICogZ2l2ZW4gY29kZXBvaW50LgogICovCi1zdGF0 aWMgY29uc3QgcGdfd2NoYXIgY2FzZV9tYXBfJGtpbmRcWyRpbmRleFxdID0KK3N0YXRpYyBjb25z dCBjaGFyMzJfdCBjYXNlX21hcF8ka2luZFxbJGluZGV4XF0gPQogewogRU9TCiAKQEAgLTUwMiw3 ICs1MDEsNyBAQCBwcmludCAkT1QgPDwiRU9TIjsKICAqIHRoZSBvZmZzZXQgaW50byB0aGUgbWFw cGluZyB0YWJsZXMuCiAgKi8KIHN0YXRpYyBpbmxpbmUgdWludDE2Ci1jYXNlX2luZGV4KHBnX3dj aGFyIGNwKQorY2FzZV9pbmRleChjaGFyMzJfdCBjcCkKIHsKIAkvKiBGYXN0IHBhdGggZm9yIGNv ZGVwb2ludHMgPCAkZmFzdHBhdGhfbGltaXQgKi8KIAlpZiAoY3AgPCAkZmFzdHBhdGhfbGltaXQp CmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3VuaWNvZGUvZ2VuZXJhdGUtdW5pY29kZV9jYXRlZ29y eV90YWJsZS5wbCBiL3NyYy9jb21tb24vdW5pY29kZS9nZW5lcmF0ZS11bmljb2RlX2NhdGVnb3J5 X3RhYmxlLnBsCmluZGV4IGFiYWI1Y2Q5Njk2Li43ZTA5NGIxMzcyMCAxMDA2NDQKLS0tIGEvc3Jj L2NvbW1vbi91bmljb2RlL2dlbmVyYXRlLXVuaWNvZGVfY2F0ZWdvcnlfdGFibGUucGwKKysrIGIv c3JjL2NvbW1vbi91bmljb2RlL2dlbmVyYXRlLXVuaWNvZGVfY2F0ZWdvcnlfdGFibGUucGwKQEAg LTM2NiwxNSArMzY2LDE1IEBAIHByaW50ICRPVCA8PCJFT1MiOwogICovCiB0eXBlZGVmIHN0cnVj dAogewotCXVpbnQzMgkJZmlyc3Q7CQkJLyogVW5pY29kZSBjb2RlcG9pbnQgKi8KLQl1aW50MzIJ CWxhc3Q7CQkJLyogVW5pY29kZSBjb2RlcG9pbnQgKi8KKwljaGFyMzJfdAlmaXJzdDsJCQkvKiBV bmljb2RlIGNvZGVwb2ludCAqLworCWNoYXIzMl90CWxhc3Q7CQkJLyogVW5pY29kZSBjb2RlcG9p bnQgKi8KIAl1aW50OAkJY2F0ZWdvcnk7CQkvKiBHZW5lcmFsIENhdGVnb3J5ICovCiB9IHBnX2Nh dGVnb3J5X3JhbmdlOwogCiB0eXBlZGVmIHN0cnVjdAogewotCXVpbnQzMgkJZmlyc3Q7CQkJLyog VW5pY29kZSBjb2RlcG9pbnQgKi8KLQl1aW50MzIJCWxhc3Q7CQkJLyogVW5pY29kZSBjb2RlcG9p bnQgKi8KKwljaGFyMzJfdAlmaXJzdDsJCQkvKiBVbmljb2RlIGNvZGVwb2ludCAqLworCWNoYXIz Ml90CWxhc3Q7CQkJLyogVW5pY29kZSBjb2RlcG9pbnQgKi8KIH0gcGdfdW5pY29kZV9yYW5nZTsK IAogdHlwZWRlZiBzdHJ1Y3QKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vdW5pY29kZS9ub3JtX3Rl c3QuYyBiL3NyYy9jb21tb24vdW5pY29kZS9ub3JtX3Rlc3QuYwppbmRleCAyNWJjNTk0NjNmMi4u MDU4ODE3ZjE3MTkgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vdW5pY29kZS9ub3JtX3Rlc3QuYwor KysgYi9zcmMvY29tbW9uL3VuaWNvZGUvbm9ybV90ZXN0LmMKQEAgLTIwLDcgKzIwLDcgQEAKICNp bmNsdWRlICJub3JtX3Rlc3RfdGFibGUuaCIKIAogc3RhdGljIGNoYXIgKgotcHJpbnRfd2NoYXJf c3RyKGNvbnN0IHBnX3djaGFyICpzKQorcHJpbnRfd2NoYXJfc3RyKGNvbnN0IGNoYXIzMl90ICpz KQogewogI2RlZmluZSBCVUZfRElHSVRTIDUwCiAJc3RhdGljIGNoYXIgYnVmW0JVRl9ESUdJVFMg KiAxMSArIDFdOwpAQCAtNDEsNyArNDEsNyBAQCBwcmludF93Y2hhcl9zdHIoY29uc3QgcGdfd2No YXIgKnMpCiB9CiAKIHN0YXRpYyBpbnQKLXBnX3djc2NtcChjb25zdCBwZ193Y2hhciAqczEsIGNv bnN0IHBnX3djaGFyICpzMikKK3BnX3djc2NtcChjb25zdCBjaGFyMzJfdCAqczEsIGNvbnN0IGNo YXIzMl90ICpzMikKIHsKIAlmb3IgKDs7KQogCXsKQEAgLTY1LDcgKzY1LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJewogCQlmb3IgKGludCBmb3JtID0gMDsgZm9ybSA8IDQ7IGZv cm0rKykKIAkJewotCQkJcGdfd2NoYXIgICAqcmVzdWx0OworCQkJY2hhcjMyX3QgICAqcmVzdWx0 OwogCiAJCQlyZXN1bHQgPSB1bmljb2RlX25vcm1hbGl6ZShmb3JtLCB0ZXN0LT5pbnB1dCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vdW5pY29kZV9jYXNlLmMgYi9zcmMvY29tbW9uL3VuaWNv ZGVfY2FzZS5jCmluZGV4IDA3M2ZhZjZhMGQ1Li5lNWU0OTRkYjQzYyAxMDA2NDQKLS0tIGEvc3Jj L2NvbW1vbi91bmljb2RlX2Nhc2UuYworKysgYi9zcmMvY29tbW9uL3VuaWNvZGVfY2FzZS5jCkBA IC0zMCw3ICszMCw3IEBAIGVudW0gQ2FzZU1hcFJlc3VsdAogLyoKICAqIE1hcCBmb3IgZWFjaCBj YXNlIGtpbmQuCiAgKi8KLXN0YXRpYyBjb25zdCBwZ193Y2hhciAqY29uc3QgY2FzZWtpbmRfbWFw W05DYXNlS2luZF0gPQorc3RhdGljIGNvbnN0IGNoYXIzMl90ICpjb25zdCBjYXNla2luZF9tYXBb TkNhc2VLaW5kXSA9CiB7CiAJW0Nhc2VMb3dlcl0gPSBjYXNlX21hcF9sb3dlciwKIAlbQ2FzZVRp dGxlXSA9IGNhc2VfbWFwX3RpdGxlLApAQCAtMzgsNDIgKzM4LDQyIEBAIHN0YXRpYyBjb25zdCBw Z193Y2hhciAqY29uc3QgY2FzZWtpbmRfbWFwW05DYXNlS2luZF0gPQogCVtDYXNlRm9sZF0gPSBj YXNlX21hcF9mb2xkLAogfTsKIAotc3RhdGljIHBnX3djaGFyIGZpbmRfY2FzZV9tYXAocGdfd2No YXIgdWNzLCBjb25zdCBwZ193Y2hhciAqbWFwKTsKK3N0YXRpYyBjaGFyMzJfdCBmaW5kX2Nhc2Vf bWFwKGNoYXIzMl90IHVjcywgY29uc3QgY2hhcjMyX3QgKm1hcCk7CiBzdGF0aWMgc2l6ZV90IGNv bnZlcnRfY2FzZShjaGFyICpkc3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNz aXplX3Qgc3JjbGVuLAogCQkJCQkJICAgQ2FzZUtpbmQgc3RyX2Nhc2VraW5kLCBib29sIGZ1bGws IFdvcmRCb3VuZGFyeU5leHQgd2JuZXh0LAogCQkJCQkJICAgdm9pZCAqd2JzdGF0ZSk7Ci1zdGF0 aWMgZW51bSBDYXNlTWFwUmVzdWx0IGNhc2VtYXAocGdfd2NoYXIgdTEsIENhc2VLaW5kIGNhc2Vr aW5kLCBib29sIGZ1bGwsCitzdGF0aWMgZW51bSBDYXNlTWFwUmVzdWx0IGNhc2VtYXAoY2hhcjMy X3QgdTEsIENhc2VLaW5kIGNhc2VraW5kLCBib29sIGZ1bGwsCiAJCQkJCQkJCSAgY29uc3QgY2hh ciAqc3JjLCBzaXplX3Qgc3JjbGVuLCBzaXplX3Qgc3Jjb2ZmLAotCQkJCQkJCQkgIHBnX3djaGFy ICpzaW1wbGUsIGNvbnN0IHBnX3djaGFyICoqc3BlY2lhbCk7CisJCQkJCQkJCSAgY2hhcjMyX3Qg KnNpbXBsZSwgY29uc3QgY2hhcjMyX3QgKipzcGVjaWFsKTsKIAotcGdfd2NoYXIKLXVuaWNvZGVf bG93ZXJjYXNlX3NpbXBsZShwZ193Y2hhciBjb2RlKQorY2hhcjMyX3QKK3VuaWNvZGVfbG93ZXJj YXNlX3NpbXBsZShjaGFyMzJfdCBjb2RlKQogewotCXBnX3djaGFyCWNwID0gZmluZF9jYXNlX21h cChjb2RlLCBjYXNlX21hcF9sb3dlcik7CisJY2hhcjMyX3QJY3AgPSBmaW5kX2Nhc2VfbWFwKGNv ZGUsIGNhc2VfbWFwX2xvd2VyKTsKIAogCXJldHVybiBjcCAhPSAwID8gY3AgOiBjb2RlOwogfQog Ci1wZ193Y2hhcgotdW5pY29kZV90aXRsZWNhc2Vfc2ltcGxlKHBnX3djaGFyIGNvZGUpCitjaGFy MzJfdAordW5pY29kZV90aXRsZWNhc2Vfc2ltcGxlKGNoYXIzMl90IGNvZGUpCiB7Ci0JcGdfd2No YXIJY3AgPSBmaW5kX2Nhc2VfbWFwKGNvZGUsIGNhc2VfbWFwX3RpdGxlKTsKKwljaGFyMzJfdAlj cCA9IGZpbmRfY2FzZV9tYXAoY29kZSwgY2FzZV9tYXBfdGl0bGUpOwogCiAJcmV0dXJuIGNwICE9 IDAgPyBjcCA6IGNvZGU7CiB9CiAKLXBnX3djaGFyCi11bmljb2RlX3VwcGVyY2FzZV9zaW1wbGUo cGdfd2NoYXIgY29kZSkKK2NoYXIzMl90Cit1bmljb2RlX3VwcGVyY2FzZV9zaW1wbGUoY2hhcjMy X3QgY29kZSkKIHsKLQlwZ193Y2hhcgljcCA9IGZpbmRfY2FzZV9tYXAoY29kZSwgY2FzZV9tYXBf dXBwZXIpOworCWNoYXIzMl90CWNwID0gZmluZF9jYXNlX21hcChjb2RlLCBjYXNlX21hcF91cHBl cik7CiAKIAlyZXR1cm4gY3AgIT0gMCA/IGNwIDogY29kZTsKIH0KIAotcGdfd2NoYXIKLXVuaWNv ZGVfY2FzZWZvbGRfc2ltcGxlKHBnX3djaGFyIGNvZGUpCitjaGFyMzJfdAordW5pY29kZV9jYXNl Zm9sZF9zaW1wbGUoY2hhcjMyX3QgY29kZSkKIHsKLQlwZ193Y2hhcgljcCA9IGZpbmRfY2FzZV9t YXAoY29kZSwgY2FzZV9tYXBfZm9sZCk7CisJY2hhcjMyX3QJY3AgPSBmaW5kX2Nhc2VfbWFwKGNv ZGUsIGNhc2VfbWFwX2ZvbGQpOwogCiAJcmV0dXJuIGNwICE9IDAgPyBjcCA6IGNvZGU7CiB9CkBA IC0yMzEsMTAgKzIzMSwxMCBAQCBjb252ZXJ0X2Nhc2UoY2hhciAqZHN0LCBzaXplX3QgZHN0c2l6 ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAogCXdoaWxlICgoc3JjbGVuIDwg MCB8fCBzcmNvZmYgPCBzcmNsZW4pICYmIHNyY1tzcmNvZmZdICE9ICdcMCcpCiAJewotCQlwZ193 Y2hhcgl1MSA9IHV0ZjhfdG9fdW5pY29kZSgodW5zaWduZWQgY2hhciAqKSBzcmMgKyBzcmNvZmYp OworCQljaGFyMzJfdAl1MSA9IHV0ZjhfdG9fdW5pY29kZSgodW5zaWduZWQgY2hhciAqKSBzcmMg KyBzcmNvZmYpOwogCQlpbnQJCQl1MWxlbiA9IHVuaWNvZGVfdXRmOGxlbih1MSk7Ci0JCXBnX3dj aGFyCXNpbXBsZSA9IDA7Ci0JCWNvbnN0IHBnX3djaGFyICpzcGVjaWFsID0gTlVMTDsKKwkJY2hh cjMyX3QJc2ltcGxlID0gMDsKKwkJY29uc3QgY2hhcjMyX3QgKnNwZWNpYWwgPSBOVUxMOwogCQll bnVtIENhc2VNYXBSZXN1bHQgY2FzZW1hcF9yZXN1bHQ7CiAKIAkJaWYgKHN0cl9jYXNla2luZCA9 PSBDYXNlVGl0bGUpCkBAIC0yNjUsOCArMjY1LDggQEAgY29udmVydF9jYXNlKGNoYXIgKmRzdCwg c2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQljYXNl IENBU0VNQVBfU0lNUExFOgogCQkJCXsKIAkJCQkJLyogcmVwbGFjZSB3aXRoIHNpbmdsZSBjaGFy YWN0ZXIgKi8KLQkJCQkJcGdfd2NoYXIJdTIgPSBzaW1wbGU7Ci0JCQkJCXBnX3djaGFyCXUybGVu ID0gdW5pY29kZV91dGY4bGVuKHUyKTsKKwkJCQkJY2hhcjMyX3QJdTIgPSBzaW1wbGU7CisJCQkJ CWNoYXIzMl90CXUybGVuID0gdW5pY29kZV91dGY4bGVuKHUyKTsKIAogCQkJCQlBc3NlcnQoc3Bl Y2lhbCA9PSBOVUxMKTsKIAkJCQkJaWYgKHJlc3VsdF9sZW4gKyB1MmxlbiA8PSBkc3RzaXplKQpA QCAtMjgwLDcgKzI4MCw3IEBAIGNvbnZlcnRfY2FzZShjaGFyICpkc3QsIHNpemVfdCBkc3RzaXpl LCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCQkJCUFzc2VydChzaW1wbGUgPT0g MCk7CiAJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfQ0FTRV9FWFBBTlNJT04gJiYgc3BlY2lh bFtpXTsgaSsrKQogCQkJCXsKLQkJCQkJcGdfd2NoYXIJdTIgPSBzcGVjaWFsW2ldOworCQkJCQlj aGFyMzJfdAl1MiA9IHNwZWNpYWxbaV07CiAJCQkJCXNpemVfdAkJdTJsZW4gPSB1bmljb2RlX3V0 ZjhsZW4odTIpOwogCiAJCQkJCWlmIChyZXN1bHRfbGVuICsgdTJsZW4gPD0gZHN0c2l6ZSkKQEAg LTMyMCw3ICszMjAsNyBAQCBjaGVja19maW5hbF9zaWdtYShjb25zdCB1bnNpZ25lZCBjaGFyICpz dHIsIHNpemVfdCBsZW4sIHNpemVfdCBvZmZzZXQpCiAJewogCQlpZiAoKHN0cltpXSAmIDB4ODAp ID09IDAgfHwgKHN0cltpXSAmIDB4QzApID09IDB4QzApCiAJCXsKLQkJCXBnX3djaGFyCWN1cnIg PSB1dGY4X3RvX3VuaWNvZGUoc3RyICsgaSk7CisJCQljaGFyMzJfdAljdXJyID0gdXRmOF90b191 bmljb2RlKHN0ciArIGkpOwogCiAJCQlpZiAocGdfdV9wcm9wX2Nhc2VfaWdub3JhYmxlKGN1cnIp KQogCQkJCWNvbnRpbnVlOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIGNoZWNrX2ZpbmFsX3NpZ21hKGNv bnN0IHVuc2lnbmVkIGNoYXIgKnN0ciwgc2l6ZV90IGxlbiwgc2l6ZV90IG9mZnNldCkKIAl7CiAJ CWlmICgoc3RyW2ldICYgMHg4MCkgPT0gMCB8fCAoc3RyW2ldICYgMHhDMCkgPT0gMHhDMCkKIAkJ ewotCQkJcGdfd2NoYXIJY3VyciA9IHV0ZjhfdG9fdW5pY29kZShzdHIgKyBpKTsKKwkJCWNoYXIz Ml90CWN1cnIgPSB1dGY4X3RvX3VuaWNvZGUoc3RyICsgaSk7CiAKIAkJCWlmIChwZ191X3Byb3Bf Y2FzZV9pZ25vcmFibGUoY3VycikpCiAJCQkJY29udGludWU7CkBAIC0zOTQsOSArMzk0LDkgQEAg Y2hlY2tfc3BlY2lhbF9jb25kaXRpb25zKGludCBjb25kaXRpb25zLCBjb25zdCBjaGFyICpzdHIs IHNpemVfdCBsZW4sCiAgKiBjaGFyYWN0ZXIgd2l0aG91dCBtb2RpZmljYXRpb24uCiAgKi8KIHN0 YXRpYyBlbnVtIENhc2VNYXBSZXN1bHQKLWNhc2VtYXAocGdfd2NoYXIgdTEsIENhc2VLaW5kIGNh c2VraW5kLCBib29sIGZ1bGwsCitjYXNlbWFwKGNoYXIzMl90IHUxLCBDYXNlS2luZCBjYXNla2lu ZCwgYm9vbCBmdWxsLAogCQljb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sIHNpemVfdCBz cmNvZmYsCi0JCXBnX3djaGFyICpzaW1wbGUsIGNvbnN0IHBnX3djaGFyICoqc3BlY2lhbCkKKwkJ Y2hhcjMyX3QgKnNpbXBsZSwgY29uc3QgY2hhcjMyX3QgKipzcGVjaWFsKQogewogCXVpbnQxNgkJ aWR4OwogCkBAIC00MzQsOCArNDM0LDggQEAgY2FzZW1hcChwZ193Y2hhciB1MSwgQ2FzZUtpbmQg Y2FzZWtpbmQsIGJvb2wgZnVsbCwKICAqIEZpbmQgZW50cnkgaW4gc2ltcGxlIGNhc2UgbWFwLgog ICogSWYgdGhlIGVudHJ5IGRvZXMgbm90IGV4aXN0LCAwIHdpbGwgYmUgcmV0dXJuZWQuCiAgKi8K LXN0YXRpYyBwZ193Y2hhcgotZmluZF9jYXNlX21hcChwZ193Y2hhciB1Y3MsIGNvbnN0IHBnX3dj aGFyICptYXApCitzdGF0aWMgY2hhcjMyX3QKK2ZpbmRfY2FzZV9tYXAoY2hhcjMyX3QgdWNzLCBj b25zdCBjaGFyMzJfdCAqbWFwKQogewogCS8qIEZhc3QgcGF0aCBmb3IgY29kZXBvaW50cyA8IDB4 ODAgKi8KIAlpZiAodWNzIDwgMHg4MCkKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vdW5pY29kZV9j YXRlZ29yeS5jIGIvc3JjL2NvbW1vbi91bmljb2RlX2NhdGVnb3J5LmMKaW5kZXggNDEzNmM0ZDRm OTIuLmFhYjY2N2E3YmI0IDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3VuaWNvZGVfY2F0ZWdvcnku YworKysgYi9zcmMvY29tbW9uL3VuaWNvZGVfY2F0ZWdvcnkuYwpAQCAtMSw3ICsxLDcgQEAKIC8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICogdW5pY29kZV9jYXRlZ29yeS5jCiAgKgkJRGV0ZXJtaW5lIGdl bmVyYWwgY2F0ZWdvcnkgYW5kIGNoYXJhY3RlciBwcm9wZXJ0aWVzIG9mIFVuaWNvZGUKLSAqCQlj aGFyYWN0ZXJzLiBFbmNvZGluZyBtdXN0IGJlIFVURjgsIHdoZXJlIHdlIGFzc3VtZSB0aGF0IHRo ZSBwZ193Y2hhcgorICoJCWNoYXJhY3RlcnMuIEVuY29kaW5nIG11c3QgYmUgVVRGOCwgd2hlcmUg d2UgYXNzdW1lIHRoYXQgdGhlIGNoYXIzMl90CiAgKgkJcmVwcmVzZW50YXRpb24gaXMgYSBjb2Rl IHBvaW50LgogICoKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxNy0yMDI1LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cApAQCAtNzYsMTMgKzc2LDEzIEBACiAjZGVmaW5l IFBHX1VfQ0hBUkFDVEVSX1RBQgkweDA5CiAKIHN0YXRpYyBib29sIHJhbmdlX3NlYXJjaChjb25z dCBwZ191bmljb2RlX3JhbmdlICp0YmwsIHNpemVfdCBzaXplLAotCQkJCQkJIHBnX3djaGFyIGNv ZGUpOworCQkJCQkJIGNoYXIzMl90IGNvZGUpOwogCiAvKgogICogVW5pY29kZSBnZW5lcmFsIGNh dGVnb3J5IGZvciB0aGUgZ2l2ZW4gY29kZXBvaW50LgogICovCiBwZ191bmljb2RlX2NhdGVnb3J5 Ci11bmljb2RlX2NhdGVnb3J5KHBnX3djaGFyIGNvZGUpCit1bmljb2RlX2NhdGVnb3J5KGNoYXIz Ml90IGNvZGUpCiB7CiAJaW50CQkJbWluID0gMDsKIAlpbnQJCQltaWQ7CkBAIC0xMDgsNyArMTA4 LDcgQEAgdW5pY29kZV9jYXRlZ29yeShwZ193Y2hhciBjb2RlKQogfQogCiBib29sCi1wZ191X3By b3BfYWxwaGFiZXRpYyhwZ193Y2hhciBjb2RlKQorcGdfdV9wcm9wX2FscGhhYmV0aWMoY2hhcjMy X3QgY29kZSkKIHsKIAlpZiAoY29kZSA8IDB4ODApCiAJCXJldHVybiB1bmljb2RlX29wdF9hc2Np aVtjb2RlXS5wcm9wZXJ0aWVzICYgUEdfVV9QUk9QX0FMUEhBQkVUSUM7CkBAIC0xMTksNyArMTE5 LDcgQEAgcGdfdV9wcm9wX2FscGhhYmV0aWMocGdfd2NoYXIgY29kZSkKIH0KIAogYm9vbAotcGdf dV9wcm9wX2xvd2VyY2FzZShwZ193Y2hhciBjb2RlKQorcGdfdV9wcm9wX2xvd2VyY2FzZShjaGFy MzJfdCBjb2RlKQogewogCWlmIChjb2RlIDwgMHg4MCkKIAkJcmV0dXJuIHVuaWNvZGVfb3B0X2Fz Y2lpW2NvZGVdLnByb3BlcnRpZXMgJiBQR19VX1BST1BfTE9XRVJDQVNFOwpAQCAtMTMwLDcgKzEz MCw3IEBAIHBnX3VfcHJvcF9sb3dlcmNhc2UocGdfd2NoYXIgY29kZSkKIH0KIAogYm9vbAotcGdf dV9wcm9wX3VwcGVyY2FzZShwZ193Y2hhciBjb2RlKQorcGdfdV9wcm9wX3VwcGVyY2FzZShjaGFy MzJfdCBjb2RlKQogewogCWlmIChjb2RlIDwgMHg4MCkKIAkJcmV0dXJuIHVuaWNvZGVfb3B0X2Fz Y2lpW2NvZGVdLnByb3BlcnRpZXMgJiBQR19VX1BST1BfVVBQRVJDQVNFOwpAQCAtMTQxLDcgKzE0 MSw3IEBAIHBnX3VfcHJvcF91cHBlcmNhc2UocGdfd2NoYXIgY29kZSkKIH0KIAogYm9vbAotcGdf dV9wcm9wX2Nhc2VkKHBnX3djaGFyIGNvZGUpCitwZ191X3Byb3BfY2FzZWQoY2hhcjMyX3QgY29k ZSkKIHsKIAl1aW50MzIJCWNhdGVnb3J5X21hc2s7CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBwZ191 X3Byb3BfY2FzZWQocGdfd2NoYXIgY29kZSkKIH0KIAogYm9vbAotcGdfdV9wcm9wX2Nhc2VfaWdu b3JhYmxlKHBnX3djaGFyIGNvZGUpCitwZ191X3Byb3BfY2FzZV9pZ25vcmFibGUoY2hhcjMyX3Qg Y29kZSkKIHsKIAlpZiAoY29kZSA8IDB4ODApCiAJCXJldHVybiB1bmljb2RlX29wdF9hc2NpaVtj b2RlXS5wcm9wZXJ0aWVzICYgUEdfVV9QUk9QX0NBU0VfSUdOT1JBQkxFOwpAQCAtMTY3LDcgKzE2 Nyw3IEBAIHBnX3VfcHJvcF9jYXNlX2lnbm9yYWJsZShwZ193Y2hhciBjb2RlKQogfQogCiBib29s Ci1wZ191X3Byb3Bfd2hpdGVfc3BhY2UocGdfd2NoYXIgY29kZSkKK3BnX3VfcHJvcF93aGl0ZV9z cGFjZShjaGFyMzJfdCBjb2RlKQogewogCWlmIChjb2RlIDwgMHg4MCkKIAkJcmV0dXJuIHVuaWNv ZGVfb3B0X2FzY2lpW2NvZGVdLnByb3BlcnRpZXMgJiBQR19VX1BST1BfV0hJVEVfU1BBQ0U7CkBA IC0xNzgsNyArMTc4LDcgQEAgcGdfdV9wcm9wX3doaXRlX3NwYWNlKHBnX3djaGFyIGNvZGUpCiB9 CiAKIGJvb2wKLXBnX3VfcHJvcF9oZXhfZGlnaXQocGdfd2NoYXIgY29kZSkKK3BnX3VfcHJvcF9o ZXhfZGlnaXQoY2hhcjMyX3QgY29kZSkKIHsKIAlpZiAoY29kZSA8IDB4ODApCiAJCXJldHVybiB1 bmljb2RlX29wdF9hc2NpaVtjb2RlXS5wcm9wZXJ0aWVzICYgUEdfVV9QUk9QX0hFWF9ESUdJVDsK QEAgLTE4OSw3ICsxODksNyBAQCBwZ191X3Byb3BfaGV4X2RpZ2l0KHBnX3djaGFyIGNvZGUpCiB9 CiAKIGJvb2wKLXBnX3VfcHJvcF9qb2luX2NvbnRyb2wocGdfd2NoYXIgY29kZSkKK3BnX3VfcHJv cF9qb2luX2NvbnRyb2woY2hhcjMyX3QgY29kZSkKIHsKIAlpZiAoY29kZSA8IDB4ODApCiAJCXJl dHVybiB1bmljb2RlX29wdF9hc2NpaVtjb2RlXS5wcm9wZXJ0aWVzICYgUEdfVV9QUk9QX0pPSU5f Q09OVFJPTDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBwZ191X3Byb3Bfam9pbl9jb250cm9sKHBnX3dj aGFyIGNvZGUpCiAgKi8KIAogYm9vbAotcGdfdV9pc2RpZ2l0KHBnX3djaGFyIGNvZGUsIGJvb2wg cG9zaXgpCitwZ191X2lzZGlnaXQoY2hhcjMyX3QgY29kZSwgYm9vbCBwb3NpeCkKIHsKIAlpZiAo cG9zaXgpCiAJCXJldHVybiAoJzAnIDw9IGNvZGUgJiYgY29kZSA8PSAnOScpOwpAQCAtMjE3LDE5 ICsyMTcsMTkgQEAgcGdfdV9pc2RpZ2l0KHBnX3djaGFyIGNvZGUsIGJvb2wgcG9zaXgpCiB9CiAK IGJvb2wKLXBnX3VfaXNhbHBoYShwZ193Y2hhciBjb2RlKQorcGdfdV9pc2FscGhhKGNoYXIzMl90 IGNvZGUpCiB7CiAJcmV0dXJuIHBnX3VfcHJvcF9hbHBoYWJldGljKGNvZGUpOwogfQogCiBib29s Ci1wZ191X2lzYWxudW0ocGdfd2NoYXIgY29kZSwgYm9vbCBwb3NpeCkKK3BnX3VfaXNhbG51bShj aGFyMzJfdCBjb2RlLCBib29sIHBvc2l4KQogewogCXJldHVybiBwZ191X2lzYWxwaGEoY29kZSkg fHwgcGdfdV9pc2RpZ2l0KGNvZGUsIHBvc2l4KTsKIH0KIAogYm9vbAotcGdfdV9pc3dvcmQocGdf d2NoYXIgY29kZSkKK3BnX3VfaXN3b3JkKGNoYXIzMl90IGNvZGUpCiB7CiAJdWludDMyCQljYXRl Z29yeV9tYXNrID0gUEdfVV9DQVRFR09SWV9NQVNLKHVuaWNvZGVfY2F0ZWdvcnkoY29kZSkpOwog CkBAIC0yNDAsMzIgKzI0MCwzMiBAQCBwZ191X2lzd29yZChwZ193Y2hhciBjb2RlKQogfQogCiBi b29sCi1wZ191X2lzdXBwZXIocGdfd2NoYXIgY29kZSkKK3BnX3VfaXN1cHBlcihjaGFyMzJfdCBj b2RlKQogewogCXJldHVybiBwZ191X3Byb3BfdXBwZXJjYXNlKGNvZGUpOwogfQogCiBib29sCi1w Z191X2lzbG93ZXIocGdfd2NoYXIgY29kZSkKK3BnX3VfaXNsb3dlcihjaGFyMzJfdCBjb2RlKQog ewogCXJldHVybiBwZ191X3Byb3BfbG93ZXJjYXNlKGNvZGUpOwogfQogCiBib29sCi1wZ191X2lz YmxhbmsocGdfd2NoYXIgY29kZSkKK3BnX3VfaXNibGFuayhjaGFyMzJfdCBjb2RlKQogewogCXJl dHVybiBjb2RlID09IFBHX1VfQ0hBUkFDVEVSX1RBQiB8fAogCQl1bmljb2RlX2NhdGVnb3J5KGNv ZGUpID09IFBHX1VfU1BBQ0VfU0VQQVJBVE9SOwogfQogCiBib29sCi1wZ191X2lzY250cmwocGdf d2NoYXIgY29kZSkKK3BnX3VfaXNjbnRybChjaGFyMzJfdCBjb2RlKQogewogCXJldHVybiB1bmlj b2RlX2NhdGVnb3J5KGNvZGUpID09IFBHX1VfQ09OVFJPTDsKIH0KIAogYm9vbAotcGdfdV9pc2dy YXBoKHBnX3djaGFyIGNvZGUpCitwZ191X2lzZ3JhcGgoY2hhcjMyX3QgY29kZSkKIHsKIAl1aW50 MzIJCWNhdGVnb3J5X21hc2sgPSBQR19VX0NBVEVHT1JZX01BU0sodW5pY29kZV9jYXRlZ29yeShj b2RlKSk7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwZ191X2lzZ3JhcGgocGdfd2NoYXIgY29kZSkK IH0KIAogYm9vbAotcGdfdV9pc3ByaW50KHBnX3djaGFyIGNvZGUpCitwZ191X2lzcHJpbnQoY2hh cjMyX3QgY29kZSkKIHsKIAlwZ191bmljb2RlX2NhdGVnb3J5IGNhdGVnb3J5ID0gdW5pY29kZV9j YXRlZ29yeShjb2RlKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHBnX3VfaXNwcmludChwZ193Y2hh ciBjb2RlKQogfQogCiBib29sCi1wZ191X2lzcHVuY3QocGdfd2NoYXIgY29kZSwgYm9vbCBwb3Np eCkKK3BnX3VfaXNwdW5jdChjaGFyMzJfdCBjb2RlLCBib29sIHBvc2l4KQogewogCXVpbnQzMgkJ Y2F0ZWdvcnlfbWFzazsKIApAQCAtMzA4LDEzICszMDgsMTMgQEAgcGdfdV9pc3B1bmN0KHBnX3dj aGFyIGNvZGUsIGJvb2wgcG9zaXgpCiB9CiAKIGJvb2wKLXBnX3VfaXNzcGFjZShwZ193Y2hhciBj b2RlKQorcGdfdV9pc3NwYWNlKGNoYXIzMl90IGNvZGUpCiB7CiAJcmV0dXJuIHBnX3VfcHJvcF93 aGl0ZV9zcGFjZShjb2RlKTsKIH0KIAogYm9vbAotcGdfdV9pc3hkaWdpdChwZ193Y2hhciBjb2Rl LCBib29sIHBvc2l4KQorcGdfdV9pc3hkaWdpdChjaGFyMzJfdCBjb2RlLCBib29sIHBvc2l4KQog ewogCWlmIChwb3NpeCkKIAkJcmV0dXJuICgoJzAnIDw9IGNvZGUgJiYgY29kZSA8PSAnOScpIHx8 CkBAIC00NzgsNyArNDc4LDcgQEAgdW5pY29kZV9jYXRlZ29yeV9hYmJyZXYocGdfdW5pY29kZV9j YXRlZ29yeSBjYXRlZ29yeSkKICAqIGdpdmVuIHRhYmxlLgogICovCiBzdGF0aWMgYm9vbAotcmFu Z2Vfc2VhcmNoKGNvbnN0IHBnX3VuaWNvZGVfcmFuZ2UgKnRibCwgc2l6ZV90IHNpemUsIHBnX3dj aGFyIGNvZGUpCityYW5nZV9zZWFyY2goY29uc3QgcGdfdW5pY29kZV9yYW5nZSAqdGJsLCBzaXpl X3Qgc2l6ZSwgY2hhcjMyX3QgY29kZSkKIHsKIAlpbnQJCQltaW4gPSAwOwogCWludAkJCW1pZDsK ZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vdW5pY29kZV9ub3JtLmMgYi9zcmMvY29tbW9uL3VuaWNv ZGVfbm9ybS5jCmluZGV4IDY2NTRiNGNiYzQ5Li40ODlkOTljZDVhYiAxMDA2NDQKLS0tIGEvc3Jj L2NvbW1vbi91bmljb2RlX25vcm0uYworKysgYi9zcmMvY29tbW9uL3VuaWNvZGVfbm9ybS5jCkBA IC02OSw3ICs2OSw3IEBAIGNvbnZfY29tcGFyZShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAq cDIpCiAgKiBsb29rdXAsIHdoaWxlIHRoZSBmcm9udGVuZCB2ZXJzaW9uIHVzZXMgYSBiaW5hcnkg c2VhcmNoLgogICovCiBzdGF0aWMgY29uc3QgcGdfdW5pY29kZV9kZWNvbXBvc2l0aW9uICoKLWdl dF9jb2RlX2VudHJ5KHBnX3djaGFyIGNvZGUpCitnZXRfY29kZV9lbnRyeShjaGFyMzJfdCBjb2Rl KQogewogI2lmbmRlZiBGUk9OVEVORAogCWludAkJCWg7CkBAIC0xMDksNyArMTA5LDcgQEAgZ2V0 X2NvZGVfZW50cnkocGdfd2NoYXIgY29kZSkKICAqIEdldCB0aGUgY29tYmluaW5nIGNsYXNzIG9m IHRoZSBnaXZlbiBjb2RlcG9pbnQuCiAgKi8KIHN0YXRpYyB1aW50OAotZ2V0X2Nhbm9uaWNhbF9j bGFzcyhwZ193Y2hhciBjb2RlKQorZ2V0X2Nhbm9uaWNhbF9jbGFzcyhjaGFyMzJfdCBjb2RlKQog ewogCWNvbnN0IHBnX3VuaWNvZGVfZGVjb21wb3NpdGlvbiAqZW50cnkgPSBnZXRfY29kZV9lbnRy eShjb2RlKTsKIApAQCAtMTMwLDE1ICsxMzAsMTUgQEAgZ2V0X2Nhbm9uaWNhbF9jbGFzcyhwZ193 Y2hhciBjb2RlKQogICogTm90ZTogdGhlIHJldHVybmVkIHBvaW50ZXIgY2FuIHBvaW50IHRvIHN0 YXRpY2FsbHkgYWxsb2NhdGVkIGJ1ZmZlciwgYW5kCiAgKiBpcyBvbmx5IHZhbGlkIHVudGlsIG5l eHQgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIQogICovCi1zdGF0aWMgY29uc3QgcGdfd2NoYXIgKgor c3RhdGljIGNvbnN0IGNoYXIzMl90ICoKIGdldF9jb2RlX2RlY29tcG9zaXRpb24oY29uc3QgcGdf dW5pY29kZV9kZWNvbXBvc2l0aW9uICplbnRyeSwgaW50ICpkZWNfc2l6ZSkKIHsKLQlzdGF0aWMg cGdfd2NoYXIgeDsKKwlzdGF0aWMgY2hhcjMyX3QgeDsKIAogCWlmIChERUNPTVBPU0lUSU9OX0lT X0lOTElORShlbnRyeSkpCiAJewogCQlBc3NlcnQoREVDT01QT1NJVElPTl9TSVpFKGVudHJ5KSA9 PSAxKTsKLQkJeCA9IChwZ193Y2hhcikgZW50cnktPmRlY19pbmRleDsKKwkJeCA9IChjaGFyMzJf dCkgZW50cnktPmRlY19pbmRleDsKIAkJKmRlY19zaXplID0gMTsKIAkJcmV0dXJuICZ4OwogCX0K QEAgLTE1Niw3ICsxNTYsNyBAQCBnZXRfY29kZV9kZWNvbXBvc2l0aW9uKGNvbnN0IHBnX3VuaWNv ZGVfZGVjb21wb3NpdGlvbiAqZW50cnksIGludCAqZGVjX3NpemUpCiAgKiBhcmUsIGluIHR1cm4s IGRlY29tcG9zYWJsZS4KICAqLwogc3RhdGljIGludAotZ2V0X2RlY29tcG9zZWRfc2l6ZShwZ193 Y2hhciBjb2RlLCBib29sIGNvbXBhdCkKK2dldF9kZWNvbXBvc2VkX3NpemUoY2hhcjMyX3QgY29k ZSwgYm9vbCBjb21wYXQpCiB7CiAJY29uc3QgcGdfdW5pY29kZV9kZWNvbXBvc2l0aW9uICplbnRy eTsKIAlpbnQJCQlzaXplID0gMDsKQEAgLTMxOCw3ICszMTgsNyBAQCByZWNvbXBvc2VfY29kZSh1 aW50MzIgc3RhcnQsIHVpbnQzMiBjb2RlLCB1aW50MzIgKnJlc3VsdCkKICAqIGluIHRoZSBhcnJh eSByZXN1bHQuCiAgKi8KIHN0YXRpYyB2b2lkCi1kZWNvbXBvc2VfY29kZShwZ193Y2hhciBjb2Rl LCBib29sIGNvbXBhdCwgcGdfd2NoYXIgKipyZXN1bHQsIGludCAqY3VycmVudCkKK2RlY29tcG9z ZV9jb2RlKGNoYXIzMl90IGNvZGUsIGJvb2wgY29tcGF0LCBjaGFyMzJfdCAqKnJlc3VsdCwgaW50 ICpjdXJyZW50KQogewogCWNvbnN0IHBnX3VuaWNvZGVfZGVjb21wb3NpdGlvbiAqZW50cnk7CiAJ aW50CQkJaTsKQEAgLTMzNyw3ICszMzcsNyBAQCBkZWNvbXBvc2VfY29kZShwZ193Y2hhciBjb2Rl LCBib29sIGNvbXBhdCwgcGdfd2NoYXIgKipyZXN1bHQsIGludCAqY3VycmVudCkKIAkJCQkJdiwK IAkJCQkJdGluZGV4LAogCQkJCQlzaW5kZXg7Ci0JCXBnX3djaGFyICAgKnJlcyA9ICpyZXN1bHQ7 CisJCWNoYXIzMl90ICAgKnJlcyA9ICpyZXN1bHQ7CiAKIAkJc2luZGV4ID0gY29kZSAtIFNCQVNF OwogCQlsID0gTEJBU0UgKyBzaW5kZXggLyAoVkNPVU5UICogVENPVU5UKTsKQEAgLTM2OSw3ICsz NjksNyBAQCBkZWNvbXBvc2VfY29kZShwZ193Y2hhciBjb2RlLCBib29sIGNvbXBhdCwgcGdfd2No YXIgKipyZXN1bHQsIGludCAqY3VycmVudCkKIAlpZiAoZW50cnkgPT0gTlVMTCB8fCBERUNPTVBP U0lUSU9OX1NJWkUoZW50cnkpID09IDAgfHwKIAkJKCFjb21wYXQgJiYgREVDT01QT1NJVElPTl9J U19DT01QQVQoZW50cnkpKSkKIAl7Ci0JCXBnX3djaGFyICAgKnJlcyA9ICpyZXN1bHQ7CisJCWNo YXIzMl90ICAgKnJlcyA9ICpyZXN1bHQ7CiAKIAkJcmVzWypjdXJyZW50XSA9IGNvZGU7CiAJCSgq Y3VycmVudCkrKzsKQEAgLTM4Miw3ICszODIsNyBAQCBkZWNvbXBvc2VfY29kZShwZ193Y2hhciBj b2RlLCBib29sIGNvbXBhdCwgcGdfd2NoYXIgKipyZXN1bHQsIGludCAqY3VycmVudCkKIAlkZWNv bXAgPSBnZXRfY29kZV9kZWNvbXBvc2l0aW9uKGVudHJ5LCAmZGVjX3NpemUpOwogCWZvciAoaSA9 IDA7IGkgPCBkZWNfc2l6ZTsgaSsrKQogCXsKLQkJcGdfd2NoYXIJbGNvZGUgPSAocGdfd2NoYXIp IGRlY29tcFtpXTsKKwkJY2hhcjMyX3QJbGNvZGUgPSAoY2hhcjMyX3QpIGRlY29tcFtpXTsKIAog CQkvKiBMZWF2ZSBpZiBubyBtb3JlIGRlY29tcG9zaXRpb25zICovCiAJCWRlY29tcG9zZV9jb2Rl KGxjb2RlLCBjb21wYXQsIHJlc3VsdCwgY3VycmVudCk7CkBAIC0zOTgsMTcgKzM5OCwxNyBAQCBk ZWNvbXBvc2VfY29kZShwZ193Y2hhciBjb2RlLCBib29sIGNvbXBhdCwgcGdfd2NoYXIgKipyZXN1 bHQsIGludCAqY3VycmVudCkKICAqIG1hbGxvYy4gT3IgTlVMTCBpZiB3ZSBydW4gb3V0IG9mIG1l bW9yeS4gSW4gYmFja2VuZCwgdGhlIHJldHVybmVkCiAgKiBzdHJpbmcgaXMgcGFsbG9jJ2QgaW5z dGVhZCwgYW5kIE9PTSBpcyByZXBvcnRlZCB3aXRoIGVyZXBvcnQoKS4KICAqLwotcGdfd2NoYXIg KgotdW5pY29kZV9ub3JtYWxpemUoVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtIGZvcm0sIGNvbnN0 IHBnX3djaGFyICppbnB1dCkKK2NoYXIzMl90ICoKK3VuaWNvZGVfbm9ybWFsaXplKFVuaWNvZGVO b3JtYWxpemF0aW9uRm9ybSBmb3JtLCBjb25zdCBjaGFyMzJfdCAqaW5wdXQpCiB7CiAJYm9vbAkJ Y29tcGF0ID0gKGZvcm0gPT0gVU5JQ09ERV9ORktDIHx8IGZvcm0gPT0gVU5JQ09ERV9ORktEKTsK IAlib29sCQlyZWNvbXBvc2UgPSAoZm9ybSA9PSBVTklDT0RFX05GQyB8fCBmb3JtID09IFVOSUNP REVfTkZLQyk7Ci0JcGdfd2NoYXIgICAqZGVjb21wX2NoYXJzOwotCXBnX3djaGFyICAgKnJlY29t cF9jaGFyczsKKwljaGFyMzJfdCAgICpkZWNvbXBfY2hhcnM7CisJY2hhcjMyX3QgICAqcmVjb21w X2NoYXJzOwogCWludAkJCWRlY29tcF9zaXplLAogCQkJCWN1cnJlbnRfc2l6ZTsKIAlpbnQJCQlj b3VudDsKLQljb25zdCBwZ193Y2hhciAqcDsKKwljb25zdCBjaGFyMzJfdCAqcDsKIAogCS8qIHZh cmlhYmxlcyBmb3IgcmVjb21wb3NpdGlvbiAqLwogCWludAkJCWxhc3RfY2xhc3M7CkBAIC00MjUs NyArNDI1LDcgQEAgdW5pY29kZV9ub3JtYWxpemUoVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtIGZv cm0sIGNvbnN0IHBnX3djaGFyICppbnB1dCkKIAlmb3IgKHAgPSBpbnB1dDsgKnA7IHArKykKIAkJ ZGVjb21wX3NpemUgKz0gZ2V0X2RlY29tcG9zZWRfc2l6ZSgqcCwgY29tcGF0KTsKIAotCWRlY29t cF9jaGFycyA9IChwZ193Y2hhciAqKSBBTExPQygoZGVjb21wX3NpemUgKyAxKSAqIHNpemVvZihw Z193Y2hhcikpOworCWRlY29tcF9jaGFycyA9IChjaGFyMzJfdCAqKSBBTExPQygoZGVjb21wX3Np emUgKyAxKSAqIHNpemVvZihjaGFyMzJfdCkpOwogCWlmIChkZWNvbXBfY2hhcnMgPT0gTlVMTCkK IAkJcmV0dXJuIE5VTEw7CiAKQEAgLTQ0OCw5ICs0NDgsOSBAQCB1bmljb2RlX25vcm1hbGl6ZShV bmljb2RlTm9ybWFsaXphdGlvbkZvcm0gZm9ybSwgY29uc3QgcGdfd2NoYXIgKmlucHV0KQogCSAq LwogCWZvciAoY291bnQgPSAxOyBjb3VudCA8IGRlY29tcF9zaXplOyBjb3VudCsrKQogCXsKLQkJ cGdfd2NoYXIJcHJldiA9IGRlY29tcF9jaGFyc1tjb3VudCAtIDFdOwotCQlwZ193Y2hhcgluZXh0 ID0gZGVjb21wX2NoYXJzW2NvdW50XTsKLQkJcGdfd2NoYXIJdG1wOworCQljaGFyMzJfdAlwcmV2 ID0gZGVjb21wX2NoYXJzW2NvdW50IC0gMV07CisJCWNoYXIzMl90CW5leHQgPSBkZWNvbXBfY2hh cnNbY291bnRdOworCQljaGFyMzJfdAl0bXA7CiAJCWNvbnN0IHVpbnQ4IHByZXZDbGFzcyA9IGdl dF9jYW5vbmljYWxfY2xhc3MocHJldik7CiAJCWNvbnN0IHVpbnQ4IG5leHRDbGFzcyA9IGdldF9j YW5vbmljYWxfY2xhc3MobmV4dCk7CiAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB1bmljb2RlX25vcm1h bGl6ZShVbmljb2RlTm9ybWFsaXphdGlvbkZvcm0gZm9ybSwgY29uc3QgcGdfd2NoYXIgKmlucHV0 KQogCSAqIGxvbmdlciB0aGFuIHRoZSBkZWNvbXBvc2VkIG9uZSwgc28gbWFrZSB0aGUgYWxsb2Nh dGlvbiBvZiB0aGUgb3V0cHV0CiAJICogc3RyaW5nIGJhc2VkIG9uIHRoYXQgYXNzdW1wdGlvbi4K IAkgKi8KLQlyZWNvbXBfY2hhcnMgPSAocGdfd2NoYXIgKikgQUxMT0MoKGRlY29tcF9zaXplICsg MSkgKiBzaXplb2YocGdfd2NoYXIpKTsKKwlyZWNvbXBfY2hhcnMgPSAoY2hhcjMyX3QgKikgQUxM T0MoKGRlY29tcF9zaXplICsgMSkgKiBzaXplb2YoY2hhcjMyX3QpKTsKIAlpZiAoIXJlY29tcF9j aGFycykKIAl7CiAJCUZSRUUoZGVjb21wX2NoYXJzKTsKQEAgLTUwMSw5ICs1MDEsOSBAQCB1bmlj b2RlX25vcm1hbGl6ZShVbmljb2RlTm9ybWFsaXphdGlvbkZvcm0gZm9ybSwgY29uc3QgcGdfd2No YXIgKmlucHV0KQogCiAJZm9yIChjb3VudCA9IDE7IGNvdW50IDwgZGVjb21wX3NpemU7IGNvdW50 KyspCiAJewotCQlwZ193Y2hhcgljaCA9IGRlY29tcF9jaGFyc1tjb3VudF07CisJCWNoYXIzMl90 CWNoID0gZGVjb21wX2NoYXJzW2NvdW50XTsKIAkJaW50CQkJY2hfY2xhc3MgPSBnZXRfY2Fub25p Y2FsX2NsYXNzKGNoKTsKLQkJcGdfd2NoYXIJY29tcG9zaXRlOworCQljaGFyMzJfdAljb21wb3Np dGU7CiAKIAkJaWYgKGxhc3RfY2xhc3MgPCBjaF9jbGFzcyAmJgogCQkJcmVjb21wb3NlX2NvZGUo c3RhcnRlcl9jaCwgY2gsICZjb21wb3NpdGUpKQpAQCAtNTI0LDcgKzUyNCw3IEBAIHVuaWNvZGVf bm9ybWFsaXplKFVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybSBmb3JtLCBjb25zdCBwZ193Y2hhciAq aW5wdXQpCiAJCQlyZWNvbXBfY2hhcnNbdGFyZ2V0X3BvcysrXSA9IGNoOwogCQl9CiAJfQotCXJl Y29tcF9jaGFyc1t0YXJnZXRfcG9zXSA9IChwZ193Y2hhcikgJ1wwJzsKKwlyZWNvbXBfY2hhcnNb dGFyZ2V0X3Bvc10gPSAoY2hhcjMyX3QpICdcMCc7CiAKIAlGUkVFKGRlY29tcF9jaGFycyk7CiAK QEAgLTU0MCw3ICs1NDAsNyBAQCB1bmljb2RlX25vcm1hbGl6ZShVbmljb2RlTm9ybWFsaXphdGlv bkZvcm0gZm9ybSwgY29uc3QgcGdfd2NoYXIgKmlucHV0KQogI2lmbmRlZiBGUk9OVEVORAogCiBz dGF0aWMgY29uc3QgcGdfdW5pY29kZV9ub3JtcHJvcHMgKgotcWNfaGFzaF9sb29rdXAocGdfd2No YXIgY2gsIGNvbnN0IHBnX3VuaWNvZGVfbm9ybWluZm8gKm5vcm1pbmZvKQorcWNfaGFzaF9sb29r dXAoY2hhcjMyX3QgY2gsIGNvbnN0IHBnX3VuaWNvZGVfbm9ybWluZm8gKm5vcm1pbmZvKQogewog CWludAkJCWg7CiAJdWludDMyCQloYXNoa2V5OwpAQCAtNTcxLDcgKzU3MSw3IEBAIHFjX2hhc2hf bG9va3VwKHBnX3djaGFyIGNoLCBjb25zdCBwZ191bmljb2RlX25vcm1pbmZvICpub3JtaW5mbykK ICAqIExvb2sgdXAgdGhlIG5vcm1hbGl6YXRpb24gcXVpY2sgY2hlY2sgY2hhcmFjdGVyIHByb3Bl cnR5CiAgKi8KIHN0YXRpYyBVbmljb2RlTm9ybWFsaXphdGlvblFDCi1xY19pc19hbGxvd2VkKFVu aWNvZGVOb3JtYWxpemF0aW9uRm9ybSBmb3JtLCBwZ193Y2hhciBjaCkKK3FjX2lzX2FsbG93ZWQo VW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtIGZvcm0sIGNoYXIzMl90IGNoKQogewogCWNvbnN0IHBn X3VuaWNvZGVfbm9ybXByb3BzICpmb3VuZCA9IE5VTEw7CiAKQEAgLTU5NSw3ICs1OTUsNyBAQCBx Y19pc19hbGxvd2VkKFVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybSBmb3JtLCBwZ193Y2hhciBjaCkK IH0KIAogVW5pY29kZU5vcm1hbGl6YXRpb25RQwotdW5pY29kZV9pc19ub3JtYWxpemVkX3F1aWNr Y2hlY2soVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtIGZvcm0sIGNvbnN0IHBnX3djaGFyICppbnB1 dCkKK3VuaWNvZGVfaXNfbm9ybWFsaXplZF9xdWlja2NoZWNrKFVuaWNvZGVOb3JtYWxpemF0aW9u Rm9ybSBmb3JtLCBjb25zdCBjaGFyMzJfdCAqaW5wdXQpCiB7CiAJdWludDgJCWxhc3RDYW5vbmlj YWxDbGFzcyA9IDA7CiAJVW5pY29kZU5vcm1hbGl6YXRpb25RQyByZXN1bHQgPSBVTklDT0RFX05P Uk1fUUNfWUVTOwpAQCAtNjEwLDkgKzYxMCw5IEBAIHVuaWNvZGVfaXNfbm9ybWFsaXplZF9xdWlj a2NoZWNrKFVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybSBmb3JtLCBjb25zdCBwZ193Y2hhciAqCiAJ aWYgKGZvcm0gPT0gVU5JQ09ERV9ORkQgfHwgZm9ybSA9PSBVTklDT0RFX05GS0QpCiAJCXJldHVy biBVTklDT0RFX05PUk1fUUNfTUFZQkU7CiAKLQlmb3IgKGNvbnN0IHBnX3djaGFyICpwID0gaW5w dXQ7ICpwOyBwKyspCisJZm9yIChjb25zdCBjaGFyMzJfdCAqcCA9IGlucHV0OyAqcDsgcCsrKQog CXsKLQkJcGdfd2NoYXIJY2ggPSAqcDsKKwkJY2hhcjMyX3QJY2ggPSAqcDsKIAkJdWludDgJCWNh bm9uaWNhbENsYXNzOwogCQlVbmljb2RlTm9ybWFsaXphdGlvblFDIGNoZWNrOwogCmRpZmYgLS1n aXQgYS9zcmMvZmVfdXRpbHMvbWJwcmludC5jIGIvc3JjL2ZlX3V0aWxzL21icHJpbnQuYwppbmRl eCBlYjNlZWVlOTkyNS4uYWJmZmRiZTE4YTIgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9tYnBy aW50LmMKKysrIGIvc3JjL2ZlX3V0aWxzL21icHJpbnQuYwpAQCAtNDksMjAgKzQ5LDIwIEBAIHBn X2dldF91dGY4X2lkKHZvaWQpCiAgKgogICogTm8gZXJyb3IgY2hlY2tzIGhlcmUsIGMgbXVzdCBw b2ludCB0byBhIGxvbmctZW5vdWdoIHN0cmluZy4KICAqLwotc3RhdGljIHBnX3djaGFyCitzdGF0 aWMgY2hhcjMyX3QKIHV0ZjhfdG9fdW5pY29kZShjb25zdCB1bnNpZ25lZCBjaGFyICpjKQogewog CWlmICgoKmMgJiAweDgwKSA9PSAwKQotCQlyZXR1cm4gKHBnX3djaGFyKSBjWzBdOworCQlyZXR1 cm4gKGNoYXIzMl90KSBjWzBdOwogCWVsc2UgaWYgKCgqYyAmIDB4ZTApID09IDB4YzApCi0JCXJl dHVybiAocGdfd2NoYXIpICgoKGNbMF0gJiAweDFmKSA8PCA2KSB8CisJCXJldHVybiAoY2hhcjMy X3QpICgoKGNbMF0gJiAweDFmKSA8PCA2KSB8CiAJCQkJCQkgICAoY1sxXSAmIDB4M2YpKTsKIAll bHNlIGlmICgoKmMgJiAweGYwKSA9PSAweGUwKQotCQlyZXR1cm4gKHBnX3djaGFyKSAoKChjWzBd ICYgMHgwZikgPDwgMTIpIHwKKwkJcmV0dXJuIChjaGFyMzJfdCkgKCgoY1swXSAmIDB4MGYpIDw8 IDEyKSB8CiAJCQkJCQkgICAoKGNbMV0gJiAweDNmKSA8PCA2KSB8CiAJCQkJCQkgICAoY1syXSAm IDB4M2YpKTsKIAllbHNlIGlmICgoKmMgJiAweGY4KSA9PSAweGYwKQotCQlyZXR1cm4gKHBnX3dj aGFyKSAoKChjWzBdICYgMHgwNykgPDwgMTgpIHwKKwkJcmV0dXJuIChjaGFyMzJfdCkgKCgoY1sw XSAmIDB4MDcpIDw8IDE4KSB8CiAJCQkJCQkgICAoKGNbMV0gJiAweDNmKSA8PCAxMikgfAogCQkJ CQkJICAgKChjWzJdICYgMHgzZikgPDwgNikgfAogCQkJCQkJICAgKGNbM10gJiAweDNmKSk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggZjRlYzMz ZTliMDcuLjc1N2RmZmY0NzgyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3Jj L2luY2x1ZGUvYy5oCkBAIC0xMzc2LDYgKzEzNzYsMjkgQEAgdHlwZWRlZiBpbnRwdHJfdCBzaWdq bXBfYnVmWzVdOwogLyogL3BvcnQgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMgKi8KICNpbmNsdWRl ICJwb3J0LmgiCiAKKy8qCisgKiBjaGFyMTZfdCBhbmQgY2hhcjMyX3QKKyAqICAgICAgVW5pY29k ZSBjb2RlIHBvaW50cy4KKyAqCisgKiB1Y2hhci5oIHNob3VsZCBhbHdheXMgYmUgYXZhaWxhYmxl IGluIEMxMSwgYnV0IGl0J3Mgbm90IGF2YWlsYWJsZSBvbgorICogTWFjLiBIb3dldmVyLCB0aGVz ZSB0eXBlcyBhcmUga2V5d29yZHMgaW4gQysrMTEsIHNvIHdoZW4gdXNpbmcgQysrLCB3ZQorICog Y2FuJ3QgcmVkZWZpbmUgdGhlIHR5cGVzLgorICoKKyAqIFhYWDogd2hlbiB1Y2hhci5oIGlzIGF2 YWlsYWJsZSBldmVyeXdoZXJlLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgY2hlY2sgYW5kCisgKiBqdXN0 IGluY2x1ZGUgdWNoYXIuaCB1bmNvbmRpdGlvbmFsbHkuCisgKgorICogWFhYOiB0aGlzIHNlY3Rp b24gaXMgb3V0IG9mIHBsYWNlIGJlY2F1c2UgdWNoYXIuaCBuZWVkcyB0byBiZSBpbmNsdWRlZAor ICogYWZ0ZXIgcG9ydC5oLCBkdWUgdG8gYW4gaW50ZXJhY3Rpb24gd2l0aCB3aW4zMl9wb3J0Lmgg aW4gc29tZSBjYXNlcy4KKyAqLworI2lmZGVmIEhBVkVfVUNIQVJfSAorI2luY2x1ZGUgPHVjaGFy Lmg+CisjZWxzZQorI2lmbmRlZiBfX2NwbHVzcGx1cwordHlwZWRlZiB1aW50MTZfdCBjaGFyMTZf dDsKK3R5cGVkZWYgdWludDMyX3QgY2hhcjMyX3Q7CisjZW5kaWYKKyNlbmRpZgorCiAvKiBJV1lV IHByYWdtYTogZW5kX2V4cG9ydHMgKi8KIAogI2VuZGlmCQkJCQkJCS8qIENfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY29tbW9uL3VuaWNvZGVfY2FzZS5oIGIvc3JjL2luY2x1ZGUvY29t bW9uL3VuaWNvZGVfY2FzZS5oCmluZGV4IDQxZTJjMWY0YjMzLi42YmNmZmQzNDljMiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL3VuaWNvZGVfY2FzZS5oCisrKyBiL3NyYy9pbmNsdWRl L2NvbW1vbi91bmljb2RlX2Nhc2UuaApAQCAtMTQsMTQgKzE0LDEyIEBACiAjaWZuZGVmIFVOSUNP REVfQ0FTRV9ICiAjZGVmaW5lIFVOSUNPREVfQ0FTRV9ICiAKLSNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgotCiB0eXBlZGVmIHNpemVfdCAoKldvcmRCb3VuZGFyeU5leHQpICh2b2lkICp3YnN0YXRl KTsKIAotcGdfd2NoYXIJdW5pY29kZV9sb3dlcmNhc2Vfc2ltcGxlKHBnX3djaGFyIGNvZGUpOwot cGdfd2NoYXIJdW5pY29kZV90aXRsZWNhc2Vfc2ltcGxlKHBnX3djaGFyIGNvZGUpOwotcGdfd2No YXIJdW5pY29kZV91cHBlcmNhc2Vfc2ltcGxlKHBnX3djaGFyIGNvZGUpOwotcGdfd2NoYXIJdW5p Y29kZV9jYXNlZm9sZF9zaW1wbGUocGdfd2NoYXIgY29kZSk7CitjaGFyMzJfdAl1bmljb2RlX2xv d2VyY2FzZV9zaW1wbGUoY2hhcjMyX3QgY29kZSk7CitjaGFyMzJfdAl1bmljb2RlX3RpdGxlY2Fz ZV9zaW1wbGUoY2hhcjMyX3QgY29kZSk7CitjaGFyMzJfdAl1bmljb2RlX3VwcGVyY2FzZV9zaW1w bGUoY2hhcjMyX3QgY29kZSk7CitjaGFyMzJfdAl1bmljb2RlX2Nhc2Vmb2xkX3NpbXBsZShjaGFy MzJfdCBjb2RlKTsKIHNpemVfdAkJdW5pY29kZV9zdHJsb3dlcihjaGFyICpkc3QsIHNpemVfdCBk c3RzaXplLCBjb25zdCBjaGFyICpzcmMsCiAJCQkJCQkJIHNzaXplX3Qgc3JjbGVuLCBib29sIGZ1 bGwpOwogc2l6ZV90CQl1bmljb2RlX3N0cnRpdGxlKGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUs IGNvbnN0IGNoYXIgKnNyYywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi91bmljb2Rl X2Nhc2VfdGFibGUuaCBiL3NyYy9pbmNsdWRlL2NvbW1vbi91bmljb2RlX2Nhc2VfdGFibGUuaApp bmRleCBkNTMxMTc4NjU4Mi4uMGExNGZiMmQ5N2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1vbi91bmljb2RlX2Nhc2VfdGFibGUuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tb24vdW5pY29k ZV9jYXNlX3RhYmxlLmgKQEAgLTE4LDcgKzE4LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29tbW9u L3VuaWNvZGVfY2FzZS5oIgotI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAKIC8qCiAgKiBUaGUg bWF4aW11bSBudW1iZXIgb2YgY29kZXBvaW50cyB0aGF0IGNhbiByZXN1bHQgZnJvbSBjYXNlIG1h cHBpbmcKQEAgLTQ1LDcgKzQ0LDcgQEAgdHlwZWRlZiBlbnVtCiB0eXBlZGVmIHN0cnVjdAogewog CWludDE2CQljb25kaXRpb25zOwotCXBnX3djaGFyCW1hcFtOQ2FzZUtpbmRdW01BWF9DQVNFX0VY UEFOU0lPTl07CisJY2hhcjMyX3QJbWFwW05DYXNlS2luZF1bTUFYX0NBU0VfRVhQQU5TSU9OXTsK IH0gcGdfc3BlY2lhbF9jYXNlOwogCiAvKgpAQCAtMTY2LDcgKzE2NSw3IEBAIHN0YXRpYyBjb25z dCBwZ19zcGVjaWFsX2Nhc2Ugc3BlY2lhbF9jYXNlWzEwNl0gPQogICogVGhlIGVudHJ5IGNhc2Vf bWFwX2xvd2VyW2Nhc2VfaW5kZXgoY29kZXBvaW50KV0gaXMgdGhlIG1hcHBpbmcgZm9yIHRoZQog ICogZ2l2ZW4gY29kZXBvaW50LgogICovCi1zdGF0aWMgY29uc3QgcGdfd2NoYXIgY2FzZV9tYXBf bG93ZXJbMTcwNF0gPQorc3RhdGljIGNvbnN0IGNoYXIzMl90IGNhc2VfbWFwX2xvd2VyWzE3MDRd ID0KIHsKIAkweDAwMDAwMCwJCQkJCS8qIHJlc2VydmVkICovCiAJMHgwMDAwMDAsCQkJCQkvKiBV KzAwMDAwMCAqLwpAQCAtMTg3OSw3ICsxODc4LDcgQEAgc3RhdGljIGNvbnN0IHBnX3djaGFyIGNh c2VfbWFwX2xvd2VyWzE3MDRdID0KICAqIFRoZSBlbnRyeSBjYXNlX21hcF90aXRsZVtjYXNlX2lu ZGV4KGNvZGVwb2ludCldIGlzIHRoZSBtYXBwaW5nIGZvciB0aGUKICAqIGdpdmVuIGNvZGVwb2lu dC4KICAqLwotc3RhdGljIGNvbnN0IHBnX3djaGFyIGNhc2VfbWFwX3RpdGxlWzE3MDRdID0KK3N0 YXRpYyBjb25zdCBjaGFyMzJfdCBjYXNlX21hcF90aXRsZVsxNzA0XSA9CiB7CiAJMHgwMDAwMDAs CQkJCQkvKiByZXNlcnZlZCAqLwogCTB4MDAwMDAwLAkJCQkJLyogVSswMDAwMDAgKi8KQEAgLTM1 OTIsNyArMzU5MSw3IEBAIHN0YXRpYyBjb25zdCBwZ193Y2hhciBjYXNlX21hcF90aXRsZVsxNzA0 XSA9CiAgKiBUaGUgZW50cnkgY2FzZV9tYXBfdXBwZXJbY2FzZV9pbmRleChjb2RlcG9pbnQpXSBp cyB0aGUgbWFwcGluZyBmb3IgdGhlCiAgKiBnaXZlbiBjb2RlcG9pbnQuCiAgKi8KLXN0YXRpYyBj b25zdCBwZ193Y2hhciBjYXNlX21hcF91cHBlclsxNzA0XSA9CitzdGF0aWMgY29uc3QgY2hhcjMy X3QgY2FzZV9tYXBfdXBwZXJbMTcwNF0gPQogewogCTB4MDAwMDAwLAkJCQkJLyogcmVzZXJ2ZWQg Ki8KIAkweDAwMDAwMCwJCQkJCS8qIFUrMDAwMDAwICovCkBAIC01MzA1LDcgKzUzMDQsNyBAQCBz dGF0aWMgY29uc3QgcGdfd2NoYXIgY2FzZV9tYXBfdXBwZXJbMTcwNF0gPQogICogVGhlIGVudHJ5 IGNhc2VfbWFwX2ZvbGRbY2FzZV9pbmRleChjb2RlcG9pbnQpXSBpcyB0aGUgbWFwcGluZyBmb3Ig dGhlCiAgKiBnaXZlbiBjb2RlcG9pbnQuCiAgKi8KLXN0YXRpYyBjb25zdCBwZ193Y2hhciBjYXNl X21hcF9mb2xkWzE3MDRdID0KK3N0YXRpYyBjb25zdCBjaGFyMzJfdCBjYXNlX21hcF9mb2xkWzE3 MDRdID0KIHsKIAkweDAwMDAwMCwJCQkJCS8qIHJlc2VydmVkICovCiAJMHgwMDAwMDAsCQkJCQkv KiBVKzAwMDAwMCAqLwpAQCAtMTM1MjIsNyArMTM1MjEsNyBAQCBzdGF0aWMgY29uc3QgdWludDE2 IGNhc2VfbWFwWzQ3NzhdID0KICAqIHRoZSBvZmZzZXQgaW50byB0aGUgbWFwcGluZyB0YWJsZXMu CiAgKi8KIHN0YXRpYyBpbmxpbmUgdWludDE2Ci1jYXNlX2luZGV4KHBnX3djaGFyIGNwKQorY2Fz ZV9pbmRleChjaGFyMzJfdCBjcCkKIHsKIAkvKiBGYXN0IHBhdGggZm9yIGNvZGVwb2ludHMgPCAw eDA1ODggKi8KIAlpZiAoY3AgPCAweDA1ODgpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t b24vdW5pY29kZV9jYXRlZ29yeS5oIGIvc3JjL2luY2x1ZGUvY29tbW9uL3VuaWNvZGVfY2F0ZWdv cnkuaAppbmRleCA4ZmQ4YjY3YTQxNi4uNjg0MTQzZDNjOGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1vbi91bmljb2RlX2NhdGVnb3J5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbW9uL3Vu aWNvZGVfY2F0ZWdvcnkuaApAQCAtMTQsOCArMTQsNiBAQAogI2lmbmRlZiBVTklDT0RFX0NBVEVH T1JZX0gKICNkZWZpbmUgVU5JQ09ERV9DQVRFR09SWV9ICiAKLSNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgotCiAvKgogICogVW5pY29kZSBHZW5lcmFsIENhdGVnb3J5IFZhbHVlcwogICoKQEAgLTYx LDMxICs1OSwzMSBAQCB0eXBlZGVmIGVudW0gcGdfdW5pY29kZV9jYXRlZ29yeQogCVBHX1VfRklO QUxfUFVOQ1RVQVRJT04gPSAyOSAvKiBQZiAqLwogfSBwZ191bmljb2RlX2NhdGVnb3J5OwogCi1l eHRlcm4gcGdfdW5pY29kZV9jYXRlZ29yeSB1bmljb2RlX2NhdGVnb3J5KHBnX3djaGFyIGNvZGUp OworZXh0ZXJuIHBnX3VuaWNvZGVfY2F0ZWdvcnkgdW5pY29kZV9jYXRlZ29yeShjaGFyMzJfdCBj b2RlKTsKIGV4dGVybiBjb25zdCBjaGFyICp1bmljb2RlX2NhdGVnb3J5X3N0cmluZyhwZ191bmlj b2RlX2NhdGVnb3J5IGNhdGVnb3J5KTsKIGV4dGVybiBjb25zdCBjaGFyICp1bmljb2RlX2NhdGVn b3J5X2FiYnJldihwZ191bmljb2RlX2NhdGVnb3J5IGNhdGVnb3J5KTsKIAotZXh0ZXJuIGJvb2wg cGdfdV9wcm9wX2FscGhhYmV0aWMocGdfd2NoYXIgY29kZSk7Ci1leHRlcm4gYm9vbCBwZ191X3By b3BfbG93ZXJjYXNlKHBnX3djaGFyIGNvZGUpOwotZXh0ZXJuIGJvb2wgcGdfdV9wcm9wX3VwcGVy Y2FzZShwZ193Y2hhciBjb2RlKTsKLWV4dGVybiBib29sIHBnX3VfcHJvcF9jYXNlZChwZ193Y2hh ciBjb2RlKTsKLWV4dGVybiBib29sIHBnX3VfcHJvcF9jYXNlX2lnbm9yYWJsZShwZ193Y2hhciBj b2RlKTsKLWV4dGVybiBib29sIHBnX3VfcHJvcF93aGl0ZV9zcGFjZShwZ193Y2hhciBjb2RlKTsK LWV4dGVybiBib29sIHBnX3VfcHJvcF9oZXhfZGlnaXQocGdfd2NoYXIgY29kZSk7Ci1leHRlcm4g Ym9vbCBwZ191X3Byb3Bfam9pbl9jb250cm9sKHBnX3djaGFyIGNvZGUpOworZXh0ZXJuIGJvb2wg cGdfdV9wcm9wX2FscGhhYmV0aWMoY2hhcjMyX3QgY29kZSk7CitleHRlcm4gYm9vbCBwZ191X3By b3BfbG93ZXJjYXNlKGNoYXIzMl90IGNvZGUpOworZXh0ZXJuIGJvb2wgcGdfdV9wcm9wX3VwcGVy Y2FzZShjaGFyMzJfdCBjb2RlKTsKK2V4dGVybiBib29sIHBnX3VfcHJvcF9jYXNlZChjaGFyMzJf dCBjb2RlKTsKK2V4dGVybiBib29sIHBnX3VfcHJvcF9jYXNlX2lnbm9yYWJsZShjaGFyMzJfdCBj b2RlKTsKK2V4dGVybiBib29sIHBnX3VfcHJvcF93aGl0ZV9zcGFjZShjaGFyMzJfdCBjb2RlKTsK K2V4dGVybiBib29sIHBnX3VfcHJvcF9oZXhfZGlnaXQoY2hhcjMyX3QgY29kZSk7CitleHRlcm4g Ym9vbCBwZ191X3Byb3Bfam9pbl9jb250cm9sKGNoYXIzMl90IGNvZGUpOwogCi1leHRlcm4gYm9v bCBwZ191X2lzZGlnaXQocGdfd2NoYXIgY29kZSwgYm9vbCBwb3NpeCk7Ci1leHRlcm4gYm9vbCBw Z191X2lzYWxwaGEocGdfd2NoYXIgY29kZSk7Ci1leHRlcm4gYm9vbCBwZ191X2lzYWxudW0ocGdf d2NoYXIgY29kZSwgYm9vbCBwb3NpeCk7Ci1leHRlcm4gYm9vbCBwZ191X2lzd29yZChwZ193Y2hh ciBjb2RlKTsKLWV4dGVybiBib29sIHBnX3VfaXN1cHBlcihwZ193Y2hhciBjb2RlKTsKLWV4dGVy biBib29sIHBnX3VfaXNsb3dlcihwZ193Y2hhciBjb2RlKTsKLWV4dGVybiBib29sIHBnX3VfaXNi bGFuayhwZ193Y2hhciBjb2RlKTsKLWV4dGVybiBib29sIHBnX3VfaXNjbnRybChwZ193Y2hhciBj b2RlKTsKLWV4dGVybiBib29sIHBnX3VfaXNncmFwaChwZ193Y2hhciBjb2RlKTsKLWV4dGVybiBi b29sIHBnX3VfaXNwcmludChwZ193Y2hhciBjb2RlKTsKLWV4dGVybiBib29sIHBnX3VfaXNwdW5j dChwZ193Y2hhciBjb2RlLCBib29sIHBvc2l4KTsKLWV4dGVybiBib29sIHBnX3VfaXNzcGFjZShw Z193Y2hhciBjb2RlKTsKLWV4dGVybiBib29sIHBnX3VfaXN4ZGlnaXQocGdfd2NoYXIgY29kZSwg Ym9vbCBwb3NpeCk7CitleHRlcm4gYm9vbCBwZ191X2lzZGlnaXQoY2hhcjMyX3QgY29kZSwgYm9v bCBwb3NpeCk7CitleHRlcm4gYm9vbCBwZ191X2lzYWxwaGEoY2hhcjMyX3QgY29kZSk7CitleHRl cm4gYm9vbCBwZ191X2lzYWxudW0oY2hhcjMyX3QgY29kZSwgYm9vbCBwb3NpeCk7CitleHRlcm4g Ym9vbCBwZ191X2lzd29yZChjaGFyMzJfdCBjb2RlKTsKK2V4dGVybiBib29sIHBnX3VfaXN1cHBl cihjaGFyMzJfdCBjb2RlKTsKK2V4dGVybiBib29sIHBnX3VfaXNsb3dlcihjaGFyMzJfdCBjb2Rl KTsKK2V4dGVybiBib29sIHBnX3VfaXNibGFuayhjaGFyMzJfdCBjb2RlKTsKK2V4dGVybiBib29s IHBnX3VfaXNjbnRybChjaGFyMzJfdCBjb2RlKTsKK2V4dGVybiBib29sIHBnX3VfaXNncmFwaChj aGFyMzJfdCBjb2RlKTsKK2V4dGVybiBib29sIHBnX3VfaXNwcmludChjaGFyMzJfdCBjb2RlKTsK K2V4dGVybiBib29sIHBnX3VfaXNwdW5jdChjaGFyMzJfdCBjb2RlLCBib29sIHBvc2l4KTsKK2V4 dGVybiBib29sIHBnX3VfaXNzcGFjZShjaGFyMzJfdCBjb2RlKTsKK2V4dGVybiBib29sIHBnX3Vf aXN4ZGlnaXQoY2hhcjMyX3QgY29kZSwgYm9vbCBwb3NpeCk7CiAKICNlbmRpZgkJCQkJCQkvKiBV TklDT0RFX0NBVEVHT1JZX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi91bmlj b2RlX2NhdGVnb3J5X3RhYmxlLmggYi9zcmMvaW5jbHVkZS9jb21tb24vdW5pY29kZV9jYXRlZ29y eV90YWJsZS5oCmluZGV4IDk1YTFjNjVkYTdlLi40NjZhNDFiNzJiMCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbW9uL3VuaWNvZGVfY2F0ZWdvcnlfdGFibGUuaAorKysgYi9zcmMvaW5jbHVk ZS9jb21tb24vdW5pY29kZV9jYXRlZ29yeV90YWJsZS5oCkBAIC0yMCwxNSArMjAsMTUgQEAKICAq LwogdHlwZWRlZiBzdHJ1Y3QKIHsKLQl1aW50MzIJCWZpcnN0OwkJCS8qIFVuaWNvZGUgY29kZXBv aW50ICovCi0JdWludDMyCQlsYXN0OwkJCS8qIFVuaWNvZGUgY29kZXBvaW50ICovCisJY2hhcjMy X3QJZmlyc3Q7CQkJLyogVW5pY29kZSBjb2RlcG9pbnQgKi8KKwljaGFyMzJfdAlsYXN0OwkJCS8q IFVuaWNvZGUgY29kZXBvaW50ICovCiAJdWludDgJCWNhdGVnb3J5OwkJLyogR2VuZXJhbCBDYXRl Z29yeSAqLwogfSBwZ19jYXRlZ29yeV9yYW5nZTsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKLQl1aW50 MzIJCWZpcnN0OwkJCS8qIFVuaWNvZGUgY29kZXBvaW50ICovCi0JdWludDMyCQlsYXN0OwkJCS8q IFVuaWNvZGUgY29kZXBvaW50ICovCisJY2hhcjMyX3QJZmlyc3Q7CQkJLyogVW5pY29kZSBjb2Rl cG9pbnQgKi8KKwljaGFyMzJfdAlsYXN0OwkJCS8qIFVuaWNvZGUgY29kZXBvaW50ICovCiB9IHBn X3VuaWNvZGVfcmFuZ2U7CiAKIHR5cGVkZWYgc3RydWN0CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jb21tb24vdW5pY29kZV9ub3JtLmggYi9zcmMvaW5jbHVkZS9jb21tb24vdW5pY29kZV9ub3Jt LmgKaW5kZXggNWJjM2I3OWU3OGUuLjUxNmMxOTJjYzRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jb21tb24vdW5pY29kZV9ub3JtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbW9uL3VuaWNvZGVf bm9ybS5oCkBAIC0xNCw4ICsxNCw2IEBACiAjaWZuZGVmIFVOSUNPREVfTk9STV9ICiAjZGVmaW5l IFVOSUNPREVfTk9STV9ICiAKLSNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgotCiB0eXBlZGVmIGVu dW0KIHsKIAlVTklDT0RFX05GQyA9IDAsCkBAIC0zMiw4ICszMCw4IEBAIHR5cGVkZWYgZW51bQog CVVOSUNPREVfTk9STV9RQ19NQVlCRSA9IC0xLAogfSBVbmljb2RlTm9ybWFsaXphdGlvblFDOwog Ci1leHRlcm4gcGdfd2NoYXIgKnVuaWNvZGVfbm9ybWFsaXplKFVuaWNvZGVOb3JtYWxpemF0aW9u Rm9ybSBmb3JtLCBjb25zdCBwZ193Y2hhciAqaW5wdXQpOworZXh0ZXJuIGNoYXIzMl90ICp1bmlj b2RlX25vcm1hbGl6ZShVbmljb2RlTm9ybWFsaXphdGlvbkZvcm0gZm9ybSwgY29uc3QgY2hhcjMy X3QgKmlucHV0KTsKIAotZXh0ZXJuIFVuaWNvZGVOb3JtYWxpemF0aW9uUUMgdW5pY29kZV9pc19u b3JtYWxpemVkX3F1aWNrY2hlY2soVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtIGZvcm0sIGNvbnN0 IHBnX3djaGFyICppbnB1dCk7CitleHRlcm4gVW5pY29kZU5vcm1hbGl6YXRpb25RQyB1bmljb2Rl X2lzX25vcm1hbGl6ZWRfcXVpY2tjaGVjayhVbmljb2RlTm9ybWFsaXphdGlvbkZvcm0gZm9ybSwg Y29uc3QgY2hhcjMyX3QgKmlucHV0KTsKIAogI2VuZGlmCQkJCQkJCS8qIFVOSUNPREVfTk9STV9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9tYi9wZ193Y2hhci5oIGIvc3JjL2luY2x1ZGUv bWIvcGdfd2NoYXIuaAppbmRleCA0YjRhOTk3NGI3NS4uNGQ4NGJkYzgxZTQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL21iL3BnX3djaGFyLmgKKysrIGIvc3JjL2luY2x1ZGUvbWIvcGdfd2NoYXIu aApAQCAtNTMyLDI1ICs1MzIsMjUgQEAgdHlwZWRlZiB1aW50MzIgKCp1dGZfbG9jYWxfY29udmVy c2lvbl9mdW5jKSAodWludDMyIGNvZGUpOwogICogU29tZSBoYW5keSBmdW5jdGlvbnMgZm9yIFVu aWNvZGUtc3BlY2lmaWMgdGVzdHMuCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbAotaXNfdmFsaWRf dW5pY29kZV9jb2RlcG9pbnQocGdfd2NoYXIgYykKK2lzX3ZhbGlkX3VuaWNvZGVfY29kZXBvaW50 KGNoYXIzMl90IGMpCiB7CiAJcmV0dXJuIChjID4gMCAmJiBjIDw9IDB4MTBGRkZGKTsKIH0KIAog c3RhdGljIGlubGluZSBib29sCi1pc191dGYxNl9zdXJyb2dhdGVfZmlyc3QocGdfd2NoYXIgYykK K2lzX3V0ZjE2X3N1cnJvZ2F0ZV9maXJzdChjaGFyMzJfdCBjKQogewogCXJldHVybiAoYyA+PSAw eEQ4MDAgJiYgYyA8PSAweERCRkYpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wKLWlzX3V0ZjE2 X3N1cnJvZ2F0ZV9zZWNvbmQocGdfd2NoYXIgYykKK2lzX3V0ZjE2X3N1cnJvZ2F0ZV9zZWNvbmQo Y2hhcjMyX3QgYykKIHsKIAlyZXR1cm4gKGMgPj0gMHhEQzAwICYmIGMgPD0gMHhERkZGKTsKIH0K IAotc3RhdGljIGlubGluZSBwZ193Y2hhcgotc3Vycm9nYXRlX3BhaXJfdG9fY29kZXBvaW50KHBn X3djaGFyIGZpcnN0LCBwZ193Y2hhciBzZWNvbmQpCitzdGF0aWMgaW5saW5lIGNoYXIzMl90Citz dXJyb2dhdGVfcGFpcl90b19jb2RlcG9pbnQoY2hhcjE2X3QgZmlyc3QsIGNoYXIxNl90IHNlY29u ZCkKIHsKIAlyZXR1cm4gKChmaXJzdCAmIDB4M0ZGKSA8PCAxMCkgKyAweDEwMDAwICsgKHNlY29u ZCAmIDB4M0ZGKTsKIH0KQEAgLTU2MSwyMCArNTYxLDIwIEBAIHN1cnJvZ2F0ZV9wYWlyX3RvX2Nv ZGVwb2ludChwZ193Y2hhciBmaXJzdCwgcGdfd2NoYXIgc2Vjb25kKQogICoKICAqIE5vIGVycm9y IGNoZWNrcyBoZXJlLCBjIG11c3QgcG9pbnQgdG8gYSBsb25nLWVub3VnaCBzdHJpbmcuCiAgKi8K LXN0YXRpYyBpbmxpbmUgcGdfd2NoYXIKK3N0YXRpYyBpbmxpbmUgY2hhcjMyX3QKIHV0ZjhfdG9f dW5pY29kZShjb25zdCB1bnNpZ25lZCBjaGFyICpjKQogewogCWlmICgoKmMgJiAweDgwKSA9PSAw KQotCQlyZXR1cm4gKHBnX3djaGFyKSBjWzBdOworCQlyZXR1cm4gKGNoYXIzMl90KSBjWzBdOwog CWVsc2UgaWYgKCgqYyAmIDB4ZTApID09IDB4YzApCi0JCXJldHVybiAocGdfd2NoYXIpICgoKGNb MF0gJiAweDFmKSA8PCA2KSB8CisJCXJldHVybiAoY2hhcjMyX3QpICgoKGNbMF0gJiAweDFmKSA8 PCA2KSB8CiAJCQkJCQkgICAoY1sxXSAmIDB4M2YpKTsKIAllbHNlIGlmICgoKmMgJiAweGYwKSA9 PSAweGUwKQotCQlyZXR1cm4gKHBnX3djaGFyKSAoKChjWzBdICYgMHgwZikgPDwgMTIpIHwKKwkJ cmV0dXJuIChjaGFyMzJfdCkgKCgoY1swXSAmIDB4MGYpIDw8IDEyKSB8CiAJCQkJCQkgICAoKGNb MV0gJiAweDNmKSA8PCA2KSB8CiAJCQkJCQkgICAoY1syXSAmIDB4M2YpKTsKIAllbHNlIGlmICgo KmMgJiAweGY4KSA9PSAweGYwKQotCQlyZXR1cm4gKHBnX3djaGFyKSAoKChjWzBdICYgMHgwNykg PDwgMTgpIHwKKwkJcmV0dXJuIChjaGFyMzJfdCkgKCgoY1swXSAmIDB4MDcpIDw8IDE4KSB8CiAJ CQkJCQkgICAoKGNbMV0gJiAweDNmKSA8PCAxMikgfAogCQkJCQkJICAgKChjWzJdICYgMHgzZikg PDwgNikgfAogCQkJCQkJICAgKGNbM10gJiAweDNmKSk7CkBAIC01ODgsNyArNTg4LDcgQEAgdXRm OF90b191bmljb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmMpCiAgKiB1bmljb2RlX3V0ZjhsZW4o YykgYnl0ZXMgYXZhaWxhYmxlLgogICovCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKgot dW5pY29kZV90b191dGY4KHBnX3djaGFyIGMsIHVuc2lnbmVkIGNoYXIgKnV0ZjhzdHJpbmcpCit1 bmljb2RlX3RvX3V0ZjgoY2hhcjMyX3QgYywgdW5zaWduZWQgY2hhciAqdXRmOHN0cmluZykKIHsK IAlpZiAoYyA8PSAweDdGKQogCXsKQEAgLTYyMCw3ICs2MjAsNyBAQCB1bmljb2RlX3RvX3V0Zjgo cGdfd2NoYXIgYywgdW5zaWduZWQgY2hhciAqdXRmOHN0cmluZykKICAqIE51bWJlciBvZiBieXRl cyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBnaXZlbiBjaGFyIGluIFVURjguCiAgKi8KIHN0YXRp YyBpbmxpbmUgaW50Ci11bmljb2RlX3V0ZjhsZW4ocGdfd2NoYXIgYykKK3VuaWNvZGVfdXRmOGxl bihjaGFyMzJfdCBjKQogewogCWlmIChjIDw9IDB4N0YpCiAJCXJldHVybiAxOwpAQCAtNjc2LDgg KzY3Niw4IEBAIGV4dGVybiBpbnQJcGdfdmFsaWRfc2VydmVyX2VuY29kaW5nKGNvbnN0IGNoYXIg Km5hbWUpOwogZXh0ZXJuIGJvb2wgaXNfZW5jb2Rpbmdfc3VwcG9ydGVkX2J5X2ljdShpbnQgZW5j b2RpbmcpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdldF9lbmNvZGluZ19uYW1lX2Zvcl9pY3UoaW50 IGVuY29kaW5nKTsKIAotZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKnVuaWNvZGVfdG9fdXRmOChwZ193 Y2hhciBjLCB1bnNpZ25lZCBjaGFyICp1dGY4c3RyaW5nKTsKLWV4dGVybiBwZ193Y2hhciB1dGY4 X3RvX3VuaWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciAqYyk7CitleHRlcm4gdW5zaWduZWQgY2hh ciAqdW5pY29kZV90b191dGY4KGNoYXIzMl90IGMsIHVuc2lnbmVkIGNoYXIgKnV0ZjhzdHJpbmcp OworZXh0ZXJuIGNoYXIzMl90IHV0ZjhfdG9fdW5pY29kZShjb25zdCB1bnNpZ25lZCBjaGFyICpj KTsKIGV4dGVybiBib29sIHBnX3V0ZjhfaXNsZWdhbChjb25zdCB1bnNpZ25lZCBjaGFyICpzb3Vy Y2UsIGludCBsZW5ndGgpOwogZXh0ZXJuIGludAlwZ191dGZfbWJsZW4oY29uc3QgdW5zaWduZWQg Y2hhciAqcyk7CiBleHRlcm4gaW50CXBnX211bGVfbWJsZW4oY29uc3QgdW5zaWduZWQgY2hhciAq cyk7CkBAIC03MzksOCArNzM5LDggQEAgZXh0ZXJuIGNoYXIgKnBnX3NlcnZlcl90b19jbGllbnQo Y29uc3QgY2hhciAqcywgaW50IGxlbik7CiBleHRlcm4gY2hhciAqcGdfYW55X3RvX3NlcnZlcihj b25zdCBjaGFyICpzLCBpbnQgbGVuLCBpbnQgZW5jb2RpbmcpOwogZXh0ZXJuIGNoYXIgKnBnX3Nl cnZlcl90b19hbnkoY29uc3QgY2hhciAqcywgaW50IGxlbiwgaW50IGVuY29kaW5nKTsKIAotZXh0 ZXJuIHZvaWQgcGdfdW5pY29kZV90b19zZXJ2ZXIocGdfd2NoYXIgYywgdW5zaWduZWQgY2hhciAq cyk7Ci1leHRlcm4gYm9vbCBwZ191bmljb2RlX3RvX3NlcnZlcl9ub2Vycm9yKHBnX3djaGFyIGMs IHVuc2lnbmVkIGNoYXIgKnMpOworZXh0ZXJuIHZvaWQgcGdfdW5pY29kZV90b19zZXJ2ZXIoY2hh cjMyX3QgYywgdW5zaWduZWQgY2hhciAqcyk7CitleHRlcm4gYm9vbCBwZ191bmljb2RlX3RvX3Nl cnZlcl9ub2Vycm9yKGNoYXIzMl90IGMsIHVuc2lnbmVkIGNoYXIgKnMpOwogCiBleHRlcm4gdW5z aWduZWQgc2hvcnQgQklHNXRvQ05TKHVuc2lnbmVkIHNob3J0IGJpZzUsIHVuc2lnbmVkIGNoYXIg KmxjKTsKIGV4dGVybiB1bnNpZ25lZCBzaG9ydCBDTlN0b0JJRzUodW5zaWduZWQgc2hvcnQgY25z LCB1bnNpZ25lZCBjaGFyIGxjKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5o LmluIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggMDhkN2JmYmVlMTAuLmY1MmYx NGNjNTY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgorKysgYi9zcmMv aW5jbHVkZS9wZ19jb25maWcuaC5pbgpAQCAtNDYzLDYgKzQ2Myw5IEBACiAvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgPHRlcm1pb3MuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFW RV9URVJNSU9TX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1Y2hhci5oPiBo ZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1VDSEFSX0gKKwogLyogRGVmaW5lIHRvIDEgaWYg Y3VybF9nbG9iYWxfaW5pdCgpIGlzIGd1YXJhbnRlZWQgdG8gYmUgdGhyZWFkLXNhZmUuICovCiAj dW5kZWYgSEFWRV9USFJFQURTQUZFX0NVUkxfR0xPQkFMX0lOSVQKIApkaWZmIC0tZ2l0IGEvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAppbmRleCBhYzJkYTRjOThjZi4uZGY4OGM3OGZlM2EgMTAwNjQ0Ci0tLSBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CkBAIC0zNTA1LDYgKzM1MDUsOCBAQCBjYl9jbGVhbnVwX2RpcgogY2Jfb3B0aW9u cwogY2JfdGFibGVzcGFjZQogY2JfdGFibGVzcGFjZV9tYXBwaW5nCitjaGFyMTZfdAorY2hhcjMy X3QKIGNoZWNrX2FnZ19hcmd1bWVudHNfY29udGV4dAogY2hlY2tfZnVuY3Rpb25fY2FsbGJhY2sK IGNoZWNrX25ldHdvcmtfZGF0YQotLSAKMi40My4wCgo= --=-/6KYbbdsLuUNJbPMAwJH--