Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1g0vhB-0000ub-3e for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Sep 2018 21:32:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1g0vh9-0000er-Gz for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Sep 2018 21:32:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1g0vh8-0000eh-Va for pgsql-hackers@lists.postgresql.org; Fri, 14 Sep 2018 21:32:07 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1g0vgx-00050G-FF for pgsql-hackers@lists.postgresql.org; Fri, 14 Sep 2018 21:32:06 +0000 Received: by mail-wm1-x335.google.com with SMTP id y2-v6so3348469wma.1 for ; Fri, 14 Sep 2018 14:31:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+/Fsd4HUr4PYHj8Z8OoatcG4dmu8BDg4beek4NwZNx0=; b=T6ZgsS7YAeJG7jBmpVjiCP6CwHXouezQSB5aBOOHbazqw3DoWMl2N7iGRQaUPruIQk qRqWqLi/pwVm3vAK6UFsvcWP4k3pkqbAtBUX+4s70OXfkXvattnjqcvqDl7UfcWyXh/S iD5LBAL7gb/IpMXDKC7FF5ZVWdgB02wKHkMJKR5s0IvmGox5YKy+fAJ8173WQWJ4L5UJ wzUlHzXsbFw/ZO/0Y6f7RX5jZw0yAMld2vmARmJs75tgNscQRQwvWVZgo/8JuXPW+2IE 4CUNMIF7IQ6Gt6De761ekR3PpAftZQgeAMtHcG7/92XTvxpMFX0/KZY4VsMnQ4WAFwCN zp6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+/Fsd4HUr4PYHj8Z8OoatcG4dmu8BDg4beek4NwZNx0=; b=fDqI3Ae4o7QbxaVGcmPd7wvbwcp3qcZbPZM2JzIZQxdM7Eq/C2AZcfnzLYSlVrZ8tc BzZ5VtGaRlj4uCjxCJDJ2hFXnUNWp7jqf0Fn4PlSaz0kX2QlgsheFsmhZ5AAziGvowNA YNfrO8VHHiUIvOaTf0D7PkQGiuyPh7qxxIso4dja/hHMnIPf77X0zoKetSSjt4MnS1CE eghHgId1k/uhylkfVgBW6rMeWIWHj0OVQk3SOTmUodDbUqP+4FDbDHpfTkkpTlpq2orm jtumDQx0aGzFfTJgHQAKf4+h3g3Tcr8dsU4IYRJx6MFji1BvhemhiP5Ju+Orm2ikk0+M mlqg== X-Gm-Message-State: APzg51CfL452atvwIVgyXwLtLvTOaEQ8fFHcz/no6x1aFfXBLZQFvkSX aMRrAk2uhB76UZSVvg6I2549IVz76EpRURe3Eo0= X-Google-Smtp-Source: ANB0VdaUsJAO8FUwdd8C9X63X6CyxLnmE5EuU/OjhcSbjckS5EdusBh0oki7OsR+L9ZNFO9qJJj4MazpWNvgCsaJiaY= X-Received: by 2002:a1c:2283:: with SMTP id i125-v6mr3943503wmi.28.1536960713386; Fri, 14 Sep 2018 14:31:53 -0700 (PDT) MIME-Version: 1.0 References: <623395617.20171113141500@gf.microolap.com> <28924bcc-9242-9798-e4e8-9d83cea3fef6@dalibo.com> In-Reply-To: From: Pavel Stehule Date: Fri, 14 Sep 2018 23:31:16 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Dean Rasheed Cc: Fabien COELHO , Gilles Darold , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000005b74510575db8dec" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000005b74510575db8dec Content-Type: multipart/alternative; boundary="0000000000005b744c0575db8dea" --0000000000005b744c0575db8dea Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =C3=BAt 4. 9. 2018 v 9:21 odes=C3=ADlatel Dean Rasheed napsal: > AFAICS this patch does nothing to consider parallel safety -- that is, > as things stand, a variable is allowed in a query that may be > parallelised, but its value is not copied to workers, leading to > incorrect results. For example: > > create table foo(a int); > insert into foo select * from generate_series(1,1000000); > create variable zero int; > let zero =3D 0; > > explain (costs off) select count(*) from foo where a%10 =3D zero; > > QUERY PLAN > ----------------------------------------------- > Finalize Aggregate > -> Gather > Workers Planned: 2 > -> Partial Aggregate > -> Parallel Seq Scan on foo > Filter: ((a % 10) =3D zero) > (6 rows) > > select count(*) from foo where a%10 =3D zero; > > count > ------- > 38037 -- Different random result each time, should be 100,000 > (1 row) > > Thoughts? > This issue should be fixed in attached patch (and more others). The code is more cleaner now, there are more tests, and documentation is mostly complete. I am sorry - my English is not good. New features: o ON COMMIT DROP and ON TRANSACTION END RESET -- remove temp variable on commit, reset variable on transaction end (commit, rollback) o LET var =3D DEFAULT -- reset specified variable Regards Pavel > Regards, > Dean > --0000000000005b744c0575db8dea Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


=C3=BA= t 4. 9. 2018 v=C2=A09:21 odes=C3=ADlatel Dean Rasheed <dean.a.rasheed@gmail.com> napsal:
AFAICS this patch does nothing to consider= parallel safety -- that is,
as things stand, a variable is allowed in a query that may be
parallelised, but its value is not copied to workers, leading to
incorrect results. For example:

create table foo(a int);
insert into foo select * from generate_series(1,1000000);
create variable zero int;
let zero =3D 0;

explain (costs off) select count(*) from foo where a%10 =3D zero;

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 QUERY PLAN -----------------------------------------------
=C2=A0Finalize Aggregate
=C2=A0 =C2=A0->=C2=A0 Gather
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Workers Planned: 2
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0->=C2=A0 Partial Aggregate
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0->=C2=A0 Parallel= Seq Scan on foo
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0Filter: ((a % 10) =3D zero)
(6 rows)

select count(*) from foo where a%10 =3D zero;

=C2=A0count
-------
=C2=A038037=C2=A0 =C2=A0 -- Different random result each time, should be 10= 0,000
(1 row)

Thoughts?

This issue should be fixed in= attached patch (and more others).

The code is= more cleaner now, there are more tests, and documentation is mostly comple= te. I am sorry - my English is not good.
New features:
=
o ON COMMIT DROP and ON TRANSACTION END RESET -- remove temp= variable on commit, reset variable on transaction end (commit, rollback)
o LET var =3D DEFAULT -- reset specified variable

Regards

Pavel

=

Regards,
Dean
--0000000000005b744c0575db8dea-- --0000000000005b74510575db8dec Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-20180914-01.patch" Content-Disposition: attachment; filename="schema-variables-20180914-01.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jm2ifaa00 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggMDE3OWRlZWEyZS4uMTMwNDM5ODdmZiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTM1OSw2ICszNTksMTEgQEAKICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5hbWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVp Z24gc2VydmVyczwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFy aWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+c2NoZW1hIHZh cmlhYmxlczwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4K ICAgPC90YWJsZT4KQEAgLTExMzAzLDQgKzExMzA4LDEyNCBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xv Y2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKIAogIDwvc2VjdDE+CiAKKyA8 c2VjdDEgaWQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdf dmFyaWFibGU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFs b2ctcGctdmFyaWFibGUiPgorICAgPHByaW1hcnk+cGdfdmFyaWFibGU8L3ByaW1hcnk+CisgIDwv aW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIHRhYmxlIDxzdHJ1Y3RuYW1lPnBnX3Zhcmlh YmxlPC9zdHJ1Y3RuYW1lPiBob2xkcyBtZXRhZGF0YQorICAgb2Ygc2NoZW1hIHZhcmlhYmxlcy4K KyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ192aWV3czwv c3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisKKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5Pk5hbWU8L2VudHJ5PgorICAgICAgPGVu dHJ5PlR5cGU8L2VudHJ5PgorICAgICAgPGVudHJ5PlJlZmVyZW5jZXM8L2VudHJ5PgorICAgICAg PGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm9pZDwvc3Ry dWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlJvdyBpZGVudGlmaWVyIChoaWRk ZW4gYXR0cmlidXRlOyBtdXN0IGJlIGV4cGxpY2l0bHkgc2VsZWN0ZWQpPC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFybmFtZTwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5uYW1lPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBzY2hl bWEgdmFyaWFibGU8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxzdHJ1Y3RmaWVsZD52YXJuYW1lc3BhY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1uYW1lc3BhY2UiPjxzdHJ1Y3RuYW1lPnBnX25hbWVz cGFjZTwvc3RydWN0bmFtZT48L2xpbms+Lm9pZDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVu dHJ5PgorICAgICAgIFRoZSBPSUQgb2YgdGhlIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIHRoaXMg dmFyaWFibGUKKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10eXBlIj48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1 Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAg ICAgVGhlIE9JRCBvZiB0aGUgZGF0YSB0eXBlIG9mIHRoaXMgdmFyaWFibGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVs ZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+aW50 NDwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICA8ZW50cnk+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwvc3RydWN0ZmllbGQ+IHJlY29yZHMgdHlwZS1z cGVjaWZpYyBkYXRhCisgICAgICAgc3VwcGxpZWQgYXQgdGFibGUgY3JlYXRpb24gdGltZSAoZm9y IGV4YW1wbGUsIHRoZSBtYXhpbXVtCisgICAgICAgbGVuZ3RoIG9mIGEgPHR5cGU+dmFyY2hhcjwv dHlwZT4gY29sdW1uKS4gIEl0IGlzIHBhc3NlZCB0bworICAgICAgIHR5cGUtc3BlY2lmaWMgaW5w dXQgZnVuY3Rpb25zIGFuZCBsZW5ndGggY29lcmNpb24gZnVuY3Rpb25zLgorICAgICAgIFRoZSB2 YWx1ZSB3aWxsIGdlbmVyYWxseSBiZSAtMSBmb3IgdHlwZXMgdGhhdCBkbyBub3QgbmVlZCA8c3Ry dWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52YXJvd25lcjwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF1dGhp ZCI+PHN0cnVjdG5hbWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+T3duZXIgb2YgdGhlIHZhcmlhYmxlPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFyY29s bGF0aW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ct cGctY29sbGF0aW9uIj48c3RydWN0bmFtZT5wZ19jb2xsYXRpb248L3N0cnVjdG5hbWU+PC9saW5r Pi5vaWQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgZGVmaW5l ZCBjb2xsYXRpb24gb2YgdGhlIHZhcmlhYmxlLCBvciB6ZXJvIGlmIHRoZSB2YXJpYWJsZSBpcwor ICAgICAgIG5vdCBvZiBhIGNvbGxhdGFibGUgZGF0YSB0eXBlLgorICAgICAgPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFyZW94 YWN0aW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPmNoYXI8L3R5 cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAg IDxsaXRlcmFsPm48L2xpdGVyYWw+ID0gbm8gYWN0aW9uLCA8bGl0ZXJhbD5kPC9saXRlcmFsPiA9 IGRyb3AgdmFyaWFibGUsCisgICAgICAgPGxpdGVyYWw+cjwvbGl0ZXJhbD4gPSByZXNldCB2YXJp YWJsZQorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT48c3RydWN0ZmllbGQ+dmFyZGVmZXhwcjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT48dHlwZT5wZ19ub2RlX3RyZWU8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48 L2VudHJ5PgorICAgICAgPGVudHJ5PlRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUg dmFyaWFibGUgZGVmYXVsdCB2YWx1ZTwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcmFjbDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48dHlwZT5hY2xpdGVtW108L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIEFjY2VzcyBwcml2aWxlZ2VzOyBzZWUK KyAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtZ3JhbnQiLz4gYW5kCisgICAgICAgPHhyZWYgbGlu a2VuZD0ic3FsLXJldm9rZSIvPgorICAgICAgIGZvciBkZXRhaWxzCisgICAgICA8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9z ZWN0MT4KKwogPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxl cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IGM4MWM4N2VmNDEu LjA2MzFjOWVkNTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKQEAgLTQ3LDYgKzQ3LDcgQEAgQ29t cGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3Rvcnku CiA8IUVOVElUWSBhbHRlclR5cGUgICAgICAgICAgU1lTVEVNICJhbHRlcl90eXBlLnNnbWwiPgog PCFFTlRJVFkgYWx0ZXJVc2VyICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdXNlci5zZ21sIj4KIDwh RU5USVRZIGFsdGVyVXNlck1hcHBpbmcgICBTWVNURU0gImFsdGVyX3VzZXJfbWFwcGluZy5zZ21s Ij4KKzwhRU5USVRZIGFsdGVyVmFyaWFibGUgICAgICBTWVNURU0gImFsdGVyX3ZhcmlhYmxlLnNn bWwiPgogPCFFTlRJVFkgYWx0ZXJWaWV3ICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdmlldy5zZ21s Ij4KIDwhRU5USVRZIGFuYWx5emUgICAgICAgICAgICBTWVNURU0gImFuYWx5emUuc2dtbCI+CiA8 IUVOVElUWSBiZWdpbiAgICAgICAgICAgICAgU1lTVEVNICJiZWdpbi5zZ21sIj4KQEAgLTk5LDYg KzEwMCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgY3JlYXRlVHlwZSAgICAgICAgIFNZU1RFTSAiY3JlYXRl X3R5cGUuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVVc2VyICAgICAgICAgU1lTVEVNICJjcmVhdGVf dXNlci5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVzZXJNYXBwaW5nICBTWVNURU0gImNyZWF0ZV91 c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVOVElUWSBjcmVhdGVWYXJpYWJsZSAgICAgU1lTVEVNICJj cmVhdGVfdmFyaWFibGUuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVWaWV3ICAgICAgICAgU1lTVEVN ICJjcmVhdGVfdmlldy5zZ21sIj4KIDwhRU5USVRZIGRlYWxsb2NhdGUgICAgICAgICBTWVNURU0g ImRlYWxsb2NhdGUuc2dtbCI+CiA8IUVOVElUWSBkZWNsYXJlICAgICAgICAgICAgU1lTVEVNICJk ZWNsYXJlLnNnbWwiPgpAQCAtMTQ4LDYgKzE1MCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxl IHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJvcFVzZXIg ICAgICAgICAgIFNZU1RFTSAiZHJvcF91c2VyLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXJNYXBw aW5nICAgIFNZU1RFTSAiZHJvcF91c2VyX21hcHBpbmcuc2dtbCI+CiA8IUVOVElUWSBkcm9wVmll dyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dtbCI+Cis8IUVOVElUWSBkcm9wVmFyaWFi bGUgICAgICAgU1lTVEVNICJkcm9wX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgZW5kICAgICAg ICAgICAgICAgIFNZU1RFTSAiZW5kLnNnbWwiPgogPCFFTlRJVFkgZXhlY3V0ZSAgICAgICAgICAg IFNZU1RFTSAiZXhlY3V0ZS5zZ21sIj4KIDwhRU5USVRZIGV4cGxhaW4gICAgICAgICAgICBTWVNU RU0gImV4cGxhaW4uc2dtbCI+CkBAIC0xNTUsNiArMTU4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1 c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBncmFu dCAgICAgICAgICAgICAgU1lTVEVNICJncmFudC5zZ21sIj4KIDwhRU5USVRZIGltcG9ydEZvcmVp Z25TY2hlbWEgU1lTVEVNICJpbXBvcnRfZm9yZWlnbl9zY2hlbWEuc2dtbCI+CiA8IUVOVElUWSBp bnNlcnQgICAgICAgICAgICAgU1lTVEVNICJpbnNlcnQuc2dtbCI+Cis8IUVOVElUWSBsZXQgICAg ICAgICAgICAgICAgU1lTVEVNICJsZXQuc2dtbCI+CiA8IUVOVElUWSBsaXN0ZW4gICAgICAgICAg ICAgU1lTVEVNICJsaXN0ZW4uc2dtbCI+CiA8IUVOVElUWSBsb2FkICAgICAgICAgICAgICAgU1lT VEVNICJsb2FkLnNnbWwiPgogPCFFTlRJVFkgbG9jayAgICAgICAgICAgICAgIFNZU1RFTSAibG9j ay5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi42Mzc2YWM3MTZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCkBAIC0wLDAgKzEsMTcwIEBACis8IS0t Citkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1l bnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWFsdGVydmFyaWFibGUiPgorIDxpbmRl eHRlcm0gem9uZT0ic3FsLWFsdGVydmFyaWFibGUiPgorICA8cHJpbWFyeT5BTFRFUiBWQVJJQUJM RTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRs ZT5BTFRFUiBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xu dW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5m bz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIgVkFSSUFC TEU8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPgorICAgY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9m IGEgdmFyaWFibGUKKyAgPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5v cHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0FMVEVSIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1VTRVIgfCBT RVNTSU9OX1VTRVIgfQorQUxURVIgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT4KK0FMVEVSIFZBUklBQkxFIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VUIFNDSEVNQSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3NjaGVtYTwvcmVwbGFjZWFibGU+Cis8L3N5bm9w c2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlw dGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5BTFRFUiBWQVJJQUJMRTwvY29t bWFuZD4gY2hhbmdlcyB0aGUgZGVmaW5pdGlvbiBvZiBhbiBleGlzdGluZyB2YXJpYWJsZS4KKyAg IFRoZXJlIGFyZSBzZXZlcmFsIHN1YmZvcm1zOgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPk9XTkVSPC9saXRlcmFsPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGNoYW5nZXMgdGhlIG93 bmVyIG9mIHRoZSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5S RU5BTUU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGlzIGZvcm0gY2hhbmdlcyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBtb3ZlcyB0aGUgdmFyaWFi bGUgaW50byBhbm90aGVyIHNjaGVtYS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9wYXJhPgorCisgIDxw YXJhPgorICAgWW91IG11c3Qgb3duIHRoZSB2YXJpYWJsZSB0byB1c2UgPGNvbW1hbmQ+QUxURVIg VkFSSUFCTEU8L2NvbW1hbmQ+LgorICAgVG8gY2hhbmdlIHRoZSBzY2hlbWEgb2YgYSB2YXJpYWJs ZSwgeW91IG11c3QgYWxzbyBoYXZlCisgICA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHByaXZp bGVnZSBvbiB0aGUgbmV3IHNjaGVtYS4KKyAgIFRvIGFsdGVyIHRoZSBvd25lciwgeW91IG11c3Qg YWxzbyBiZSBhIGRpcmVjdCBvciBpbmRpcmVjdCBtZW1iZXIgb2YgdGhlIG5ldworICAgb3duaW5n IHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVzdCBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4g cHJpdmlsZWdlIG9uCisgICB0aGUgdmFyaWFibGUncyBzY2hlbWEuICAoVGhlc2UgcmVzdHJpY3Rp b25zIGVuZm9yY2UgdGhhdCBhbHRlcmluZyB0aGUgb3duZXIKKyAgIGRvZXNuJ3QgZG8gYW55dGhp bmcgeW91IGNvdWxkbid0IGRvIGJ5IGRyb3BwaW5nIGFuZCByZWNyZWF0aW5nIHRoZSB2YXJpYWJs ZS4KKyAgIEhvd2V2ZXIsIGEgc3VwZXJ1c2VyIGNhbiBhbHRlciBvd25lcnNoaXAgb2YgYW55IHR5 cGUgYW55d2F5LikKKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgPHZhcmlhYmxlbGlzdD4K KyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgPHBhcmE+CisgICAgICAgIFRoZSBuYW1lIChwb3NzaWJseSBzY2hlbWEtcXVhbGlmaWVkKSBv ZiBhbiBleGlzdGluZyB2YXJpYWJsZSB0bworICAgICAgICBhbHRlci4KKyAgICAgICA8L3BhcmE+ CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19u YW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFRoZSBuZXcgbmFtZSBmb3IgdGhlIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293 bmVyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFRoZSB1c2VyIG5hbWUgb2YgdGhlIG5ldyBvd25lciBvZiB0aGUgdmFyaWFibGUu CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uZXdfc2NoZW1hPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXcgc2NoZW1hIGZvciB0aGUgdmFyaWFi bGUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50 cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyBy ZW5hbWUgYSB2YXJpYWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFZBUklBQkxFIGZvbyBS RU5BTUUgVE8gYm9vOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgVG8gY2hhbmdlIHRoZSBvd25lciBvZiB0aGUgdmFyaWFibGUgPGxpdGVyYWw+Ym9vPC9saXRl cmFsPgorICAgdG8gPGxpdGVyYWw+am9lPC9saXRlcmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0FM VEVSIFZBUklBQkxFIGJvbyBPV05FUiBUTyBqb2U7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBUbyBjaGFuZ2UgdGhlIHNjaGVtYSBvZiB0aGUgdmFyaWFibGUg PGxpdGVyYWw+Ym9vPC9saXRlcmFsPgorICAgdG8gPGxpdGVyYWw+cHJpdmF0ZTwvbGl0ZXJhbD46 Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBWQVJJQUJMRSBib28gU0VUIFNDSEVNQSBwcml2YXRl OworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2Vj dDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoaXMg Y29tbWFuIGlzIGEgUG9zdGdyZVNRTCBleHRlbnNpb24uCisgIDwvcGFyYT4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxIGlkPSJzcWwtYWx0ZXJ2YXJpYWJsZS1zZWUtYWxzbyI+CisgIDx0aXRs ZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxt ZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8 bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9z aW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYmNi NjgyNDcxMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Zhcmlh YmxlLnNnbWwKQEAgLTAsMCArMSwxNzAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRy eSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1jcmVhdGV2 YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNSRUFURSBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4 dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5DUkVBVEUgVkFSSUFCTEU8L3Jl ZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2luZm8+ U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgorCisg PHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkNSRUFURSBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJl ZnB1cnBvc2U+ZGVmaW5lIGEgbmV3IHBlcm1pc3Npb25lZCB0eXBlZCBzY2hlbWEgdmFyaWFibGU8 L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9w c2lzPgorQ1JFQVRFIHsgVEVNUE9SQVJZIHwgVEVNUCB9IFZBUklBQkxFIFsgSUYgTk9UIEVYSVNU UyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWyBB UyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxl PiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sbGF0aW9uPC9y ZXBsYWNlYWJsZT4gXQorICAgIFsgREVGQVVMVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZGVmYXVsdF9leHByPC9yZXBsYWNlYWJsZT4gXSBbIHsgT04gQ09NTUlUIERST1AgfCBPTiBU UkFOU0FDVElPTiBFTkQgUkVTRVQgfSBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+ CisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgor ICAgPGNvbW1hbmQ+Q1JFQVRFIFZBUklBQkxFPC9jb21tYW5kPiBjcmVhdGVzIGEgbmV3IHNjaGVt YSB2YXJpYWJsZS4KKyAgIFRoZXNlIHZhcmlhYmxlcyBhcmUgc2NhbGFyIHR5cGVkLCBub24tdHJh bnNhY3Rpb25hbCwgYW5kLCBsaWtlIHJlbGF0aW9ucywKKyAgIGV4aXN0IHdpdGhpbiBhIHNjaGVt YSB3aXRoIGFjY2VzcyBjb250cm9sbGVkIHZpYQorICAgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+ IGFuZCA8Y29tbWFuZD5SRVZPS0U8L2NvbW1hbmQ+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBUaGUgdmFsdWUgb2YgYSBzY2hlbWEgdmFyaWFibGUgaXMgc2Vzc2lvbi1sb2NhbC4gUmV0cmll dmluZworICAgYSB2YXJpYWJsZSdzIHZhbHVlIHdpbGwgcmV0dXJuIE5VTEwgdW5sZXNzIGl0cyB2 YWx1ZSBoYXMgYmVlbiBzZXQKKyAgIHRvIHNvbWV0aGluZyBlbHNlIGluIHRoZSBjdXJyZW50IHNl c3Npb24uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJldHJpZXZhbCBpcyBkb25lIHZpYSB0 aGUgPGZ1bmN0aW9uPmdldF9zY2hlbWFfdmFyaWFibGU8L2Z1bmN0aW9uPmR1bnhyaW9uIG9yIHRo ZSBTUUwKKyAgIGNvbW1hbmQgPGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPi4gIFNldHRpbmcgb2Yg dmFsdWVzIGlzIGRvbmUgdmlhIHRoZQorICAgPGZ1bmN0aW9uPnNldF9zY2hlbWFfdmFyaWFibGU8 L2Z1bmN0aW9uPiBmdW5jdGlvbiBvciB0aGUgU1FMIGNvbW1hbmQKKyAgIDxjb21tYW5kPkxFVDwv Y29tbWFuZD4uCisgICBOb3RhYmx5LCB3aGlsZSBzY2hlbWEgdmFyaWFibGVzIGFyZSBpbiBtYW55 IHdheXMgYSBraW5kIG9mIHRhYmxlIHlvdSBjYW5ub3QgdXNlCisgICA8Y29tbWFuZD5VUERBVEU8 L2NvbW1hbmQ+IG9uIHRoZW0uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEZvciBwdXJwb3Nl cyBvZiBuYW1lIHVuaXF1ZW5lc3MgcmVsYXRpb24tbGlrZSBvYmplY3RzIChlLmcuLCB0YWJsZXMs IGluZGV4ZXMpCisgICB3aXRoaW4gdGhlIHNhbWUgc2NoZW1hIGFyZSBjb25zaWRlcmVkLiAgaS5l LiwgeW91IGNhbm5vdCBnaXZlIGEgdGFibGUgYW5kIGEKKyAgIHNjaGVtYSB2YXJpYWJsZSB0aGUg c2FtZSBuYW1lLiAgVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZW0gYmVpbmcgdHJlYXRlZAor ICAgbGlrZSByZWxhdGlvbnMgZm9yIHB1cnBvc2VzIG9mIDxjb21tYW5kPlNFTEVDVDwvY29tbWFu ZD4uCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFy YW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+SUYgTk9UIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUg bmFtZSBhbHJlYWR5IGV4aXN0cy4gQSBub3RpY2UgaXMgaXNzdWVkIGluIHRoaXMgY2FzZS4KKyAg ICAgIE5vdGUgdGhhdCB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBub3QgY29uc2lkZXJlZCwgbm9y IGNvdWxkIGl0IGJlIHNpbmNlIHRoZSBuYW1lc3BhY2UKKyAgICAgIHNlYXJjaGVkIGNvbnRhaW5z IG5vbi12YXJpYWJsZSBvYmplY3RzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1x dWFsaWZpZWQpIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxh Y2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5h bWUgKG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIGRhdGEgdHlwZSBvZiB0aGUg dmFyaWFibGUgdG8gYmUgY3JlYXRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJh bD5DT0xMQVRFIDxyZXBsYWNlYWJsZT5jb2xsYXRpb248L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSA8bGl0ZXJhbD5D T0xMQVRFPC9saXRlcmFsPiBjbGF1c2UgYXNzaWducyBhIGNvbGxhdGlvbiB0bworICAgICAgdGhl IHZhcmlhYmxlICh3aGljaCBtdXN0IGJlIG9mIGEgY29sbGF0YWJsZSBkYXRhIHR5cGUpLgorICAg ICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIHZhcmlhYmxlIGRhdGEgdHlwZSdzIGRlZmF1bHQgY29s bGF0aW9uIGlzIHVzZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+REVGQVVM VCA8cmVwbGFjZWFibGU+ZGVmYXVsdF9leHByPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+REVGQVVM VDwvbGl0ZXJhbD4gY2xhdXNlIGFzc2lnbnMgYSBkZWZhdWx0IGRhdGEgZm9yCisgICAgICBzY2hl bWEgdmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+T04gQ09NTUlU IERST1A8L2xpdGVyYWw+LCA8bGl0ZXJhbD5PTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQ8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVy YWw+T04gQ09NTUlUIERST1A8L2xpdGVyYWw+IGNsYXVzZSBzcGVjaWZ5IHRoZSBiYWhhdmlvdXIg b2YKKyAgICAgIHRlbXBvcmFyeSBzY2hlbWEgdmFyaWFibGUgYXQgY29tbWl0IG9mIHRyYW5zYWN0 aW9uLiBJdCBpcyBhbGxvd2VkIG9ubHkKKyAgICAgIGZvciB0ZW1wb3JhbCB2YXJpYWJsZXMsIGFu ZCBlbmZvcmNlIGRyb3AgdmFyaWFibGUgYXQgY29tbWl0IHRpbWUuIFRoZQorICAgICAgPGxpdGVy YWw+T04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUPC9saXRlcmFsPiBlbmZvcmNlIHJlc2V0IHRvIGRl ZmF1bHQKKyAgICAgIHZhbHVlIGF0IHRyYW5zYWN0aW9uIGVuZCAoPGxpdGVyYWw+Q09NTUlUPC9s aXRlcmFsPiwgPGxpdGVyYWw+Uk9MTEJBQ0s8L2xpdGVyYWw+KS4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICA8L3ZhcmlhYmxlbGlzdD4KKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxw YXJhPgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBh IHZhcmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRp dGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZh cmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRF IFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFtbGlzdGlu Zz4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNv bXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+Q1JFQVRFIFZBUklB QkxFPC9jb21tYW5kPiBpcyBhIFBvc3RncmVTUUwgZmVhdHVyZS4KKyAgIDwhLS0gVGhlIGNob2lj ZSBvZiB3b3JkaW5nIGhlcmUgc2VlbXMgdG8gYmUgbGVmdCB0byBwZXJzb25hbCBwcmVmZXJlbmNl Li4uIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1l bWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1l bWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2lt cGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApp bmRleCA2YjkwOWI3MjMyLi5kODNhZDgxMWZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2Rpc2NhcmQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApAQCAtMjEs NyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4K IDxzeW5vcHNpcz4KLURJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFS WSB8IFRFTVAgfQorRElTQ0FSRCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZ IHwgVEVNUCB8IFZBUklBQkxFUyB9CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAK QEAgLTc1LDYgKzc1LDE3IEBAIERJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRF TVBPUkFSWSB8IFRFTVAgfQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WQVJJQUJMRVM8L2xpdGVyYWw+ PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXNldHMgdGhlIHZh bHVlIG9mIGFsbCBzY2hlbWEgdmFyaWFibGVzLiBXaGVuIHZhcmlhYmxlcworICAgICAgd2lsbCBi ZSB1c2VkIGxhdGVyLCB0aGVuIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYWdhaW4gdG8KKyAgICAgIE5V TEwgb3IgZGVmYXVsdCB2YWx1ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5B TEw8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3Zhcmlh YmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYzFjMWEyYmQ2 NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21s CkBAIC0wLDAgKzEsOTMgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5z Z21sCitQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KKy0tPgorCis8cmVmZW50cnkgaWQ9InNxbC1k cm9wdmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWRyb3B2YXJpYWJsZSI+CisgIDxw cmltYXJ5PkRST1AgVkFSSUFCTEU8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0 YT4KKyAgPHJlZmVudHJ5dGl0bGU+RFJPUCBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1h bnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0 ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJl Zm5hbWU+RFJPUCBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+cmVtb3ZlIGEgc2No ZW1hIHZhcmlhYmxlPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNp c2Rpdj4KKzxzeW5vcHNpcz4KK0RST1AgVkFSSUFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBDQVNDQURF IHwgUkVTVFJJQ1QgXQorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1h bmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gcmVtb3ZlcyBhIHNjaGVtYSB2YXJpYWJsZS4KKyAg IEEgdmFyaWFibGUgY2FuIG9ubHkgYmUgZHJvcHBlZCBieSBpdHMgb3duZXIgb3IgYSBzdXBlcnVz ZXIuCisgICA8IS0tIHRoaXMgd291bGQgc3VnZ2VzdCB0aGF0IHdlIG5lZWQgYW4gYWx0ZXIgdmFy aWFibGUgb3duZXIgdG8gY29tbWFuZCAtLT4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0 PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBFWElTVFM8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEbyBub3QgdGhy b3cgYW4gZXJyb3IgaWYgdGhlIHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0LiBBIG5vdGljZSBpcyBp c3N1ZWQKKyAgICAgIGluIHRoaXMgY2FzZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hl bWEtcXVhbGlmaWVkKSBvZiBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZz ZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFy YT4KKyAgIFRvIHJlbW92ZSB0aGUgc2NoZW1hIHZhcmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVy YWw+OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEUk9QIFZBUklBQkxFIHZhcjE7Cis8L3Byb2dyYW1s aXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29t cGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5EUk9QIFZBUklBQkxF PC9jb21tYW5kPiBpcyBwcm9wcmlldGFyeSBQb3N0Z3JlU1FMIGNvbW1hbmQuCisgICA8IS0tIGNy ZWF0ZSB2YXJpYWJsZSBpcyBhICJQb3N0Z3JlU1FMIGZlYXR1cmUiLAorICAgICAgICB0aGlzIGlz IGEgInByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZCIgLi4uIC0tPgorICA8L3BhcmE+Cisg PC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKwor ICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJz cWwtYWx0ZXJ2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJz cWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKaW5kZXggZmY2NGM3YTNiYS4uYTgzOTIw YTdhMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvZ3JhbnQuc2dtbApAQCAtNzksNiArNzksMTAgQEAgR1JBTlQgeyBVU0FHRSB8 IEFMTCBbIFBSSVZJTEVHRVMgXSB9CiAgICAgT04gVFlQRSA8cmVwbGFjZWFibGU+dHlwZV9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXQogICAgIFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lUSCBHUkFO VCBPUFRJT04gXQogCitHUkFOVCB7IFJFQUQgfCBXUklURSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9 CisgICAgT04gVkFSSUFCTEUgPHJlcGxhY2VhYmxlPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi5dCisgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3Bl Y2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9QVElPTiBdCisK IDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lm aWNhdGlvbjwvcmVwbGFjZWFibGU+IGNhbiBiZTo8L3BocmFzZT4KIAogICAgIFsgR1JPVVAgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4KQEAg LTE2Nyw2ICsxNzEsNyBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9s ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgZm9yZWlnbiBzZXJ2 ZXJzLAogICAgbGFyZ2Ugb2JqZWN0cywKICAgIHNjaGVtYXMsCisgICBzY2hlbWEgdmFyaWFibGUK ICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBk ZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQgdG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFs PiBhcmUgYXMgZm9sbG93czoKQEAgLTM4NSw2ICszOTAsMjQgQEAgR1JBTlQgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8gPHJl cGxhY2UKICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJs aXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPlJFQUQ8L2xpdGVyYWw+PC90ZXJtPgorICAg ICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBBbGxvd3MgdG8gcmVhZCBhIHNjaGVt YSB2YXJpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPldSSVRF PC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAg QWxsb3dzIHRvIHNldCBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9s aXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg IDx0ZXJtPjxsaXRlcmFsPkFMTCBQUklWSUxFR0VTPC9saXRlcmFsPjwvdGVybT4KICAgICAgPGxp c3RpdGVtPgpAQCAtNTUwLDYgKzU3Myw4IEBAIHJvbGVuYW1lPXh4eHggLS0gcHJpdmlsZWdlcyBn cmFudGVkIHRvIGEgcm9sZQogICAgICAgICAgICAgQyAtLSBDUkVBVEUKICAgICAgICAgICAgIGMg LS0gQ09OTkVDVAogICAgICAgICAgICAgVCAtLSBURU1QT1JBUlkKKyAgICAgICAgICAgIFMgLS0g UkVBRAorICAgICAgICAgICAgdyAtLSBXUklURQogICAgICAgYXJ3ZER4dCAtLSBBTEwgUFJJVklM RUdFUyAoZm9yIHRhYmxlcywgdmFyaWVzIGZvciBvdGhlciBvYmplY3RzKQogICAgICAgICAgICAg KiAtLSBncmFudCBvcHRpb24gZm9yIHByZWNlZGluZyBwcml2aWxlZ2UKIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjk5Y2ZkZjQxMwotLS0gL2Rldi9u dWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKQEAgLTAsMCArMSwxMDQgQEAKKzwh LS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgor LS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxldCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0 Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+ CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9t YW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZt aXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9y ZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFuZ2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwv cmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3Bz aXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV92YXJpYWJsZTwv cmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4KK0xFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2No ZW1hX3ZhcmlhYmxlPC9yZXBsYWNlYWJsZT4gPSBERUZBVUxUCisKKzwvc3lub3BzaXM+CisgPC9y ZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRs ZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNvbW1hbmQgdXBk YXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwvcGFyYT4KKwor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4K KworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJh bD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lvbiwgdGhlIHJl c3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBFbnN1cmUgcmVzZXQgc2NoZW1hIHZhcmlhYmxlIHRv IGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZGVmaW5lZC4KKyAgICAgIFdoZW4gdGhlcmUgYXJlIG5v dCBhc3NpZ25lZCBkZWZhdWx0IHZhbHVlLCB0aGVuIHZhbHVlIG9mIHNjaGVtYQorICAgICAgdmFy aWFibGUgd2lsbCBiZSBudWxsLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4YW1wbGU6 Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xF VCBteXZhciA9IDEwOworTEVUIG15dmFyID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7CitM RVQgbXl2YXIgPSBERUZBVUxUOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvcmVm c2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKwor ICA8cGFyYT4KKyAgIDwhLS0gdGhpcyBmZWVscyBsaWtlIGl0IG5lZWRzIHRvIGJlIG1vcmUgc3Bl Y2lmaWMsCisgICAgICAgIGJ1dCBJIGRvbid0IGtub3cgZW5vdWdoIHRvIG1ha2UgaXQgc28gLS0+ CisgICA8bGl0ZXJhbD5MRVQ8L2xpdGVyYWw+IGV4dGVuZHMgc3ludGF4IGRlZmluZWQgaW4gdGhl IFNRTAorICAgc3RhbmRhcmQuIFRoZSBzdGFuZGFyZCBrbm93cyA8bGl0ZXJhbD5TRVQ8L2xpdGVy YWw+IGNvbW1hbmQsCisgICB0aGF0IGlzIHVzZWQgZm9yIGRpZmZlcmVudCBwdXJwb3VzZSBpbiBQ b3N0Z3JlU1FMLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRp dGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAg PG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAg IDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8 L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbApp bmRleCA1MzE3ZjhjY2JhLi44NDM1ZTA1OTU3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L3Jldm9rZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKQEAgLTEwOCw2 ICsxMDgsMTIgQEAgUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCiBSRVZPS0UgWyBBRE1JTiBP UFRJT04gRk9SIF0KICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBGUk9NIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCiAgICAgWyBDQVNDQURFIHwgUkVTVFJJ Q1QgXQorCitSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KKyAgICB7IHsgUkVBRCB8IFdSSVRF IH0gWywgLi4uXSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9CisgICAgT04gVkFSSUFCTEUgPHJlcGxh Y2VhYmxlPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgRlJPTSB7IFsg R1JPVVAgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNl YWJsZT4gfCBQVUJMSUMgfSBbLCAuLi5dCisgICAgWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQogPC9z eW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggZGI0ZjQx NjdlMy4uNWZiODJkZjUxZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtNzUsNiArNzUsNyBAQAogICAg JmFsdGVyVHlwZTsKICAgICZhbHRlclVzZXI7CiAgICAmYWx0ZXJVc2VyTWFwcGluZzsKKyAgICZh bHRlclZhcmlhYmxlOwogICAgJmFsdGVyVmlldzsKICAgICZhbmFseXplOwogICAgJmJlZ2luOwpA QCAtMTI3LDYgKzEyOCw3IEBACiAgICAmY3JlYXRlVHlwZTsKICAgICZjcmVhdGVVc2VyOwogICAg JmNyZWF0ZVVzZXJNYXBwaW5nOworICAgJmNyZWF0ZVZhcmlhYmxlOwogICAgJmNyZWF0ZVZpZXc7 CiAgICAmZGVhbGxvY2F0ZTsKICAgICZkZWNsYXJlOwpAQCAtMTc1LDYgKzE3Nyw3IEBACiAgICAm ZHJvcFR5cGU7CiAgICAmZHJvcFVzZXI7CiAgICAmZHJvcFVzZXJNYXBwaW5nOworICAgJmRyb3BW YXJpYWJsZTsKICAgICZkcm9wVmlldzsKICAgICZlbmQ7CiAgICAmZXhlY3V0ZTsKQEAgLTE4Myw2 ICsxODYsNyBAQAogICAgJmdyYW50OwogICAgJmltcG9ydEZvcmVpZ25TY2hlbWE7CiAgICAmaW5z ZXJ0OworICAgJmxldDsKICAgICZsaXN0ZW47CiAgICAmbG9hZDsKICAgICZsb2NrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDg3NWJlMTgwZmUuLmFkYzkxYTQyMzggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9n L25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvc3RvcmFnZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCIKICNp bmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2Vy LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCkBAIC0xOTc4LDYgKzE5NzksOSBAQCBDb21t aXRUcmFuc2FjdGlvbih2b2lkKQogCSAqLwogCVByZUNvbW1pdF9vbl9jb21taXRfYWN0aW9ucygp OwogCisJLyogTGV0IE9OIENPTU1JVCBEUk9QIG9yIE9OIFRSQU5TQUNUSU9OIEVORCAqLworCUF0 UHJlRU9YYWN0X1NjaGVtYVZhcmlhYmxlX29uX2NvbW1pdF9hY3Rpb25zKHRydWUpOworCiAJLyog Y2xvc2UgbGFyZ2Ugb2JqZWN0cyBiZWZvcmUgbG93ZXItbGV2ZWwgY2xlYW51cCAqLwogCUF0RU9Y YWN0X0xhcmdlT2JqZWN0KHRydWUpOwogCkBAIC0yMTAyLDYgKzIxMDYsNyBAQCBDb21taXRUcmFu c2FjdGlvbih2b2lkKQogCUF0RU9YYWN0X0dVQyh0cnVlLCAxKTsKIAlBdEVPWGFjdF9TUEkodHJ1 ZSk7CiAJQXRFT1hhY3Rfb25fY29tbWl0X2FjdGlvbnModHJ1ZSk7CisJQXRFT1hhY3RfU2NoZW1h VmFyaWFibGVfb25fY29tbWl0X2FjdGlvbnModHJ1ZSk7CiAJQXRFT1hhY3RfTmFtZXNwYWNlKHRy dWUsIGlzX3BhcmFsbGVsX3dvcmtlcik7CiAJQXRFT1hhY3RfU01ncigpOwogCUF0RU9YYWN0X0Zp bGVzKHRydWUpOwpAQCAtMjUxOSw2ICsyNTI0LDkgQEAgQWJvcnRUcmFuc2FjdGlvbih2b2lkKQog CUFmdGVyVHJpZ2dlckVuZFhhY3QoZmFsc2UpOyAvKiAnZmFsc2UnIG1lYW5zIGl0J3MgYWJvcnQg Ki8KIAlBdEFib3J0X1BvcnRhbHMoKTsKIAlBdEVPWGFjdF9MYXJnZU9iamVjdChmYWxzZSk7CisK KwkvKiAnZmFsc2UnIG1lYW5zIGl0J3MgYWJvcnQgKi8KKwlBdFByZUVPWGFjdF9TY2hlbWFWYXJp YWJsZV9vbl9jb21taXRfYWN0aW9ucyhmYWxzZSk7CiAJQXRBYm9ydF9Ob3RpZnkoKTsKIAlBdEVP WGFjdF9SZWxhdGlvbk1hcChmYWxzZSwgaXNfcGFyYWxsZWxfd29ya2VyKTsKIAlBdEFib3J0X1R3 b3BoYXNlKCk7CkBAIC0yNTgyLDYgKzI1OTAsNyBAQCBBYm9ydFRyYW5zYWN0aW9uKHZvaWQpCiAJ CUF0RU9YYWN0X0dVQyhmYWxzZSwgMSk7CiAJCUF0RU9YYWN0X1NQSShmYWxzZSk7CiAJCUF0RU9Y YWN0X29uX2NvbW1pdF9hY3Rpb25zKGZhbHNlKTsKKwkJQXRFT1hhY3RfU2NoZW1hVmFyaWFibGVf b25fY29tbWl0X2FjdGlvbnMoZmFsc2UpOwogCQlBdEVPWGFjdF9OYW1lc3BhY2UoZmFsc2UsIGlz X3BhcmFsbGVsX3dvcmtlcik7CiAJCUF0RU9YYWN0X1NNZ3IoKTsKIAkJQXRFT1hhY3RfRmlsZXMo ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKaW5kZXggMDg2NTI0MGYxMS4uMWY3YzRkMTIyMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL01ha2VmaWxlCkBAIC0xOSw3ICsxOSw3IEBAIE9CSlMgPSBjYXRhbG9nLm8gZGVwZW5k ZW5jeS5vIGhlYXAubyBpbmRleC5vIGluZGV4aW5nLm8gbmFtZXNwYWNlLm8gYWNsY2hrLm8gXAog ICAgICAgIHBnX2RlcGVuZC5vIHBnX2VudW0ubyBwZ19pbmhlcml0cy5vIHBnX2xhcmdlb2JqZWN0 Lm8gcGdfbmFtZXNwYWNlLm8gXAogICAgICAgIHBnX29wZXJhdG9yLm8gcGdfcHJvYy5vIHBnX3B1 YmxpY2F0aW9uLm8gcGdfcmFuZ2UubyBcCiAJICAgcGdfZGJfcm9sZV9zZXR0aW5nLm8gcGdfc2hk ZXBlbmQubyBwZ19zdWJzY3JpcHRpb24ubyBwZ190eXBlLm8gXAotCSAgIHN0b3JhZ2UubyB0b2Fz dGluZy5vCisJICAgcGdfdmFyaWFibGUubyBzdG9yYWdlLm8gdG9hc3RpbmcubwogCiBCS0lGSUxF UyA9IHBvc3RncmVzLmJraSBwb3N0Z3Jlcy5kZXNjcmlwdGlvbiBwb3N0Z3Jlcy5zaGRlc2NyaXB0 aW9uCiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ0FUQUxPR19IRUFERVJTIDo9IFwKIAlwZ19kZWZhdWx0 X2FjbC5oIHBnX2luaXRfcHJpdnMuaCBwZ19zZWNsYWJlbC5oIHBnX3Noc2VjbGFiZWwuaCBcCiAJ cGdfY29sbGF0aW9uLmggcGdfcGFydGl0aW9uZWRfdGFibGUuaCBwZ19yYW5nZS5oIHBnX3RyYW5z Zm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIHBnX3B1YmxpY2F0aW9uLmggcGdfcHVibGljYXRpb25f cmVsLmggcGdfc3Vic2NyaXB0aW9uLmggXAotCXBnX3N1YnNjcmlwdGlvbl9yZWwuaAorCXBnX3N1 YnNjcmlwdGlvbl9yZWwuaCBwZ192YXJpYWJsZS5oCiAKIEdFTkVSQVRFRF9IRUFERVJTIDo9ICQo Q0FUQUxPR19IRUFERVJTOiUuaD0lX2QuaCkgc2NoZW1hcGcuaAogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpp bmRleCA1NzhlNGM2NTkyLi44NjkxN2UxNWE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2FjbGNoay5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKQEAgLTU3LDYg KzU3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3BhcnNlci5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyYW5zZm9ybS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9k YmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL2V4dGVuc2lvbi5oIgpAQCAtMTEyLDYgKzExMyw3IEBAIHN0YXRpYyB2b2lk IEV4ZWNHcmFudF9MYXJnZW9iamVjdChJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogc3RhdGlj IHZvaWQgRXhlY0dyYW50X05hbWVzcGFjZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogc3Rh dGljIHZvaWQgRXhlY0dyYW50X1RhYmxlc3BhY2UoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsK IHN0YXRpYyB2b2lkIEV4ZWNHcmFudF9UeXBlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7Citz dGF0aWMgdm9pZCBFeGVjR3JhbnRfVmFyaWFibGUoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsK IAogc3RhdGljIHZvaWQgU2V0RGVmYXVsdEFDTHNJblNjaGVtYXMoSW50ZXJuYWxEZWZhdWx0QUNM ICppYWNscywgTGlzdCAqbnNwbmFtZXMpOwogc3RhdGljIHZvaWQgU2V0RGVmYXVsdEFDTChJbnRl cm5hbERlZmF1bHRBQ0wgKmlhY2xzKTsKQEAgLTI4NCw2ICsyODYsOSBAQCByZXN0cmljdF9hbmRf Y2hlY2tfZ3JhbnQoYm9vbCBpc19ncmFudCwgQWNsTW9kZSBhdmFpbF9nb3B0aW9ucywgYm9vbCBh bGxfcHJpdnMsCiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQl3aG9sZV9tYXNrID0gQUNMX0FMTF9S SUdIVFNfVFlQRTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXdob2xl X21hc2sgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLCBvYmp0eXBlKTsK IAkJCS8qIG5vdCByZWFjaGVkLCBidXQga2VlcCBjb21waWxlciBxdWlldCAqLwpAQCAtNTA3LDYg KzUxMiwxMCBAQCBFeGVjdXRlR3JhbnRTdG10KEdyYW50U3RtdCAqc3RtdCkKIAkJCWFsbF9wcml2 aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfRk9SRUlHTl9TRVJWRVI7CiAJCQllcnJvcm1zZyA9IGdl dHRleHRfbm9vcCgiaW52YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3IgZm9yZWlnbiBzZXJ2ZXIi KTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWFsbF9wcml2aWxlZ2Vz ID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgi aW52YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIHZhcmlhYmxlIik7CisJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9i anR5cGU6ICVkIiwKIAkJCQkgKGludCkgc3RtdC0+b2JqdHlwZSk7CkBAIC02MDksNiArNjE4LDkg QEAgRXhlY0dyYW50U3RtdF9vaWRzKEludGVybmFsR3JhbnQgKmlzdG10KQogCQljYXNlIE9CSkVD VF9UQUJMRVNQQUNFOgogCQkJRXhlY0dyYW50X1RhYmxlc3BhY2UoaXN0bXQpOwogCQkJYnJlYWs7 CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJRXhlY0dyYW50X1ZhcmlhYmxlKGlzdG10KTsK KwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBHcmFu dFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpc3RtdC0+b2JqdHlwZSk7CkBAIC03Njgs NiArNzgwLDE2IEBAIG9iamVjdE5hbWVzVG9PaWRzKE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAq b2JqbmFtZXMpCiAJCQkJb2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIHNydmlkKTsKIAkJ CX0KIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWZvcmVhY2goY2VsbCwg b2JqbmFtZXMpCisJCQl7CisJCQkJUmFuZ2VWYXIgICAqdmFydmFyID0gKFJhbmdlVmFyICopIGxm aXJzdChjZWxsKTsKKwkJCQlPaWQJCQlyZWxPaWQ7CisKKwkJCQlyZWxPaWQgPSBsb29rdXBfdmFy aWFibGUodmFydmFyLT5zY2hlbWFuYW1lLCB2YXJ2YXItPnJlbG5hbWUsIGZhbHNlKTsKKwkJCQlv YmplY3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgcmVsT2lkKTsKKwkJCX0KKwkJCWJyZWFrOwog CQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlw ZTogJWQiLAogCQkJCSAoaW50KSBvYmp0eXBlKTsKQEAgLTg1NSw2ICs4NzcsMzEgQEAgb2JqZWN0 c0luU2NoZW1hVG9PaWRzKE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqbnNwbmFtZXMpCiAJCQkJ CWhlYXBfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOwogCQkJCX0KIAkJCQlicmVhazsKKwkJ CWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCXsKKwkJCQkJU2NhbktleURhdGEga2V5OworCQkJ CQlSZWxhdGlvbglyZWw7CisJCQkJCUhlYXBTY2FuRGVzYyBzY2FuOworCQkJCQlIZWFwVHVwbGUJ dHVwbGU7CisKKwkJCQkJU2NhbktleUluaXQoJmtleSwKKwkJCQkJCQkJQW51bV9wZ192YXJpYWJs ZV92YXJuYW1lc3BhY2UsCisJCQkJCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwK KwkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJCQkJCXJlbCA9IGhl YXBfb3BlbihWYXJpYWJsZVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJCXNjYW4g PSBoZWFwX2JlZ2luc2Nhbl9jYXRhbG9nKHJlbCwgMSwgJmtleSk7CisKKwkJCQkJd2hpbGUgKCh0 dXBsZSA9IGhlYXBfZ2V0bmV4dChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbikpICE9IE5VTEwp CisJCQkJCXsKKwkJCQkJCW9iamVjdHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCBIZWFwVHVwbGVH ZXRPaWQodHVwbGUpKTsKKwkJCQkJfQorCisJCQkJCWhlYXBfZW5kc2NhbihzY2FuKTsKKwkJCQkJ aGVhcF9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJyZWFrOworCiAJ CQlkZWZhdWx0OgogCQkJCS8qIHNob3VsZCBub3QgaGFwcGVuICovCiAJCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLApAQCAtMTAxOCw2ICsxMDY1LDEw IEBAIEV4ZWNBbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEFs dGVyRGVmYXVsdFByaXZpbGVnZXNTdG10ICpzCiAJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1NDSEVNQTsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZp bGVnZSB0eXBlICVzIGZvciBzY2hlbWEiKTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJ QUJMRToKKwkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQll cnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2No ZW1hIHZhcmlhYmxlIik7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgYWN0aW9uLT5v Ymp0eXBlKTsKQEAgLTEyMTUsNiArMTI2NiwxMiBAQCBTZXREZWZhdWx0QUNMKEludGVybmFsRGVm YXVsdEFDTCAqaWFjbHMpCiAJCQkJdGhpc19wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfU0NI RU1BOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlvYmp0eXBlID0g REVGQUNMT0JKX1ZBUklBQkxFOworCQkJaWYgKGlhY2xzLT5hbGxfcHJpdnMgJiYgdGhpc19wcml2 aWxlZ2VzID09IEFDTF9OT19SSUdIVFMpCisJCQkJdGhpc19wcml2aWxlZ2VzID0gQUNMX0FMTF9S SUdIVFNfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGlhY2xzLT5vYmp0eXBlKTsK QEAgLTE0NDEsNiArMTQ5OCw5IEBAIFJlbW92ZVJvbGVGcm9tT2JqZWN0QUNMKE9pZCByb2xlaWQs IE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQpCiAJCQljYXNlIERFRkFDTE9CSl9OQU1FU1BBQ0U6CiAJ CQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9TQ0hFTUE7CiAJCQkJYnJlYWs7CisJCQljYXNlIERF RkFDTE9CSl9WQVJJQUJMRToKKwkJCQlpYWNscy5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOwor CQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBTaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJ CQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBkZWZhdWx0IEFDTCB0eXBlOiAlZCIsCkBAIC0zMjY2 LDYgKzMzMjYsMTI5IEBAIEV4ZWNHcmFudF9UeXBlKEludGVybmFsR3JhbnQgKmlzdG10KQogCWhl YXBfY2xvc2UocmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCitzdGF0aWMgdm9pZAor RXhlY0dyYW50X1ZhcmlhYmxlKEludGVybmFsR3JhbnQgKmlzdG10KQoreworCVJlbGF0aW9uCXJl bGF0aW9uOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlpZiAoaXN0bXQtPmFsbF9wcml2cyAmJiBp c3RtdC0+cHJpdmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQlpc3RtdC0+cHJpdmlsZWdlcyA9 IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCisJcmVsYXRpb24gPSBoZWFwX29wZW4oVmFyaWFi bGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCWZvcmVhY2goY2VsbCwgaXN0bXQt Pm9iamVjdHMpCisJeworCQlPaWQJCQl2YXJJZCA9IGxmaXJzdF9vaWQoY2VsbCk7CisJCUZvcm1f cGdfdmFyaWFibGUgcGdfdmFyaWFibGVfdHVwbGU7CisJCURhdHVtCQlhY2xEYXR1bTsKKwkJYm9v bAkJaXNOdWxsOworCQlBY2xNb2RlCQlhdmFpbF9nb3B0aW9uczsKKwkJQWNsTW9kZQkJdGhpc19w cml2aWxlZ2VzOworCQlBY2wJCSAgICpvbGRfYWNsOworCQlBY2wJCSAgICpuZXdfYWNsOworCQlP aWQJCQlncmFudG9ySWQ7CisJCU9pZAkJCW93bmVySWQ7CisJCUhlYXBUdXBsZQl0dXBsZTsKKwkJ SGVhcFR1cGxlCW5ld3R1cGxlOworCQlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3ZhcmlhYmxlXTsK KwkJYm9vbAkJbnVsbHNbTmF0dHNfcGdfdmFyaWFibGVdOworCQlib29sCQlyZXBsYWNlc1tOYXR0 c19wZ192YXJpYWJsZV07CisJCWludAkJCW5vbGRtZW1iZXJzOworCQlpbnQJCQlubmV3bWVtYmVy czsKKwkJT2lkCQkgICAqb2xkbWVtYmVyczsKKwkJT2lkCQkgICAqbmV3bWVtYmVyczsKKworCQl0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXJJ ZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB2YXJpYWJsZXMgJXUiLCB2YXJJZCk7CisKKwkJ cGdfdmFyaWFibGVfdHVwbGUgPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cGxlKTsK KworCQkvKgorCQkgKiBHZXQgb3duZXIgSUQgYW5kIHdvcmtpbmcgY29weSBvZiBleGlzdGluZyBB Q0wuIElmIHRoZXJlJ3Mgbm8gQUNMLAorCQkgKiBzdWJzdGl0dXRlIHRoZSBwcm9wZXIgZGVmYXVs dC4KKwkJICovCisJCW93bmVySWQgPSBwZ192YXJpYWJsZV90dXBsZS0+dmFyb3duZXI7CisJCWFj bERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFZBUklBQkxFT0lELCB0dXBsZSwgQW51bV9wZ192YXJp YWJsZV92YXJhY2wsCisJCQkJCQkJCSAgICZpc051bGwpOworCQlpZiAoaXNOdWxsKQorCQl7CisJ CQlvbGRfYWNsID0gYWNsZGVmYXVsdChPQkpFQ1RfVkFSSUFCTEUsIG93bmVySWQpOworCQkJLyog VGhlcmUgYXJlIG5vIG9sZCBtZW1iZXIgcm9sZXMgYWNjb3JkaW5nIHRvIHRoZSBjYXRhbG9ncyAq LworCQkJbm9sZG1lbWJlcnMgPSAwOworCQkJb2xkbWVtYmVycyA9IE5VTEw7CisJCX0KKwkJZWxz ZQorCQl7CisJCQlvbGRfYWNsID0gRGF0dW1HZXRBY2xQQ29weShhY2xEYXR1bSk7CisJCQkvKiBH ZXQgdGhlIHJvbGVzIG1lbnRpb25lZCBpbiB0aGUgZXhpc3RpbmcgQUNMICovCisJCQlub2xkbWVt YmVycyA9IGFjbG1lbWJlcnMob2xkX2FjbCwgJm9sZG1lbWJlcnMpOworCQl9CisKKwkJLyogRGV0 ZXJtaW5lIElEIHRvIGRvIHRoZSBncmFudCBhcywgYW5kIGF2YWlsYWJsZSBncmFudCBvcHRpb25z ICovCisJCXNlbGVjdF9iZXN0X2dyYW50b3IoR2V0VXNlcklkKCksIGlzdG10LT5wcml2aWxlZ2Vz LAorCQkJCQkJCW9sZF9hY2wsIG93bmVySWQsCisJCQkJCQkJJmdyYW50b3JJZCwgJmF2YWlsX2dv cHRpb25zKTsKKworCQkvKgorCQkgKiBSZXN0cmljdCB0aGUgcHJpdmlsZWdlcyB0byB3aGF0IHdl IGNhbiBhY3R1YWxseSBncmFudCwgYW5kIGVtaXQgdGhlCisJCSAqIHN0YW5kYXJkcy1tYW5kYXRl ZCB3YXJuaW5nIGFuZCBlcnJvciBtZXNzYWdlcy4KKwkJICovCisJCXRoaXNfcHJpdmlsZWdlcyA9 CisJCQlyZXN0cmljdF9hbmRfY2hlY2tfZ3JhbnQoaXN0bXQtPmlzX2dyYW50LCBhdmFpbF9nb3B0 aW9ucywKKwkJCQkJCQkJCSBpc3RtdC0+YWxsX3ByaXZzLCBpc3RtdC0+cHJpdmlsZWdlcywKKwkJ CQkJCQkJCSB2YXJJZCwgZ3JhbnRvcklkLCBPQkpFQ1RfVkFSSUFCTEUsCisJCQkJCQkJCQkgTmFt ZVN0cihwZ192YXJpYWJsZV90dXBsZS0+dmFybmFtZSksCisJCQkJCQkJCQkgMCwgTlVMTCk7CisK KwkJLyoKKwkJICogR2VuZXJhdGUgbmV3IEFDTC4KKwkJICovCisJCW5ld19hY2wgPSBtZXJnZV9h Y2xfd2l0aF9ncmFudChvbGRfYWNsLCBpc3RtdC0+aXNfZ3JhbnQsCisJCQkJCQkJCQkgICBpc3Rt dC0+Z3JhbnRfb3B0aW9uLCBpc3RtdC0+YmVoYXZpb3IsCisJCQkJCQkJCQkgICBpc3RtdC0+Z3Jh bnRlZXMsIHRoaXNfcHJpdmlsZWdlcywKKwkJCQkJCQkJCSAgIGdyYW50b3JJZCwgb3duZXJJZCk7 CisKKwkJLyoKKwkJICogV2UgbmVlZCB0aGUgbWVtYmVycyBvZiBib3RoIG9sZCBhbmQgbmV3IEFD THMgc28gd2UgY2FuIGNvcnJlY3QgdGhlCisJCSAqIHNoYXJlZCBkZXBlbmRlbmN5IGluZm9ybWF0 aW9uLgorCQkgKi8KKwkJbm5ld21lbWJlcnMgPSBhY2xtZW1iZXJzKG5ld19hY2wsICZuZXdtZW1i ZXJzKTsKKworCQkvKiBmaW5pc2hlZCBidWlsZGluZyBuZXcgQUNMIHZhbHVlLCBub3cgaW5zZXJ0 IGl0ICovCisJCU1lbVNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwkJTWVtU2V0KG51 bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJCU1lbVNldChyZXBsYWNlcywgZmFsc2UsIHNp emVvZihyZXBsYWNlcykpOworCisJCXJlcGxhY2VzW0FudW1fcGdfdmFyaWFibGVfdmFyYWNsIC0g MV0gPSB0cnVlOworCQl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50 ZXJHZXREYXR1bShuZXdfYWNsKTsKKworCQluZXd0dXBsZSA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1 cGxlLCBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKSwgdmFsdWVzLAorCQkJCQkJCQkJIG51bGxz LCByZXBsYWNlcyk7CisKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbGF0aW9uLCAmbmV3dHVwbGUt PnRfc2VsZiwgbmV3dHVwbGUpOworCisJCS8qIFVwZGF0ZSBpbml0aWFsIHByaXZpbGVnZXMgZm9y IGV4dGVuc2lvbnMgKi8KKwkJcmVjb3JkRXh0ZW5zaW9uSW5pdFByaXYodmFySWQsIFZhcmlhYmxl UmVsYXRpb25JZCwgMCwgbmV3X2FjbCk7CisKKwkJLyogVXBkYXRlIHRoZSBzaGFyZWQgZGVwZW5k ZW5jeSBBQ0wgaW5mbyAqLworCQl1cGRhdGVBY2xEZXBlbmRlbmNpZXMoVmFyaWFibGVSZWxhdGlv bklkLCB2YXJJZCwgMCwKKwkJCQkJCQkgIG93bmVySWQsCisJCQkJCQkJICBub2xkbWVtYmVycywg b2xkbWVtYmVycywKKwkJCQkJCQkgIG5uZXdtZW1iZXJzLCBuZXdtZW1iZXJzKTsKKworCQlSZWxl YXNlU3lzQ2FjaGUodHVwbGUpOworCisJCXBmcmVlKG5ld19hY2wpOworCisJCS8qIHByZXZlbnQg ZXJyb3Igd2hlbiBwcm9jZXNzaW5nIGR1cGxpY2F0ZSBvYmplY3RzICovCisJCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7CisJfQorCisJaGVhcF9jbG9zZShyZWxhdGlvbiwgUm93RXhjbHVzaXZl TG9jayk7Cit9CisKIAogc3RhdGljIEFjbE1vZGUKIHN0cmluZ190b19wcml2aWxlZ2UoY29uc3Qg Y2hhciAqcHJpdm5hbWUpCkBAIC0zMjk4LDYgKzM0ODEsMTAgQEAgc3RyaW5nX3RvX3ByaXZpbGVn ZShjb25zdCBjaGFyICpwcml2bmFtZSkKIAkJcmV0dXJuIEFDTF9DT05ORUNUOwogCWlmIChzdHJj bXAocHJpdm5hbWUsICJydWxlIikgPT0gMCkKIAkJcmV0dXJuIDA7CQkJCS8qIGlnbm9yZSBvbGQg UlVMRSBwcml2aWxlZ2VzICovCisJaWYgKHN0cmNtcChwcml2bmFtZSwgInJlYWQiKSA9PSAwKQor CQlyZXR1cm4gQUNMX1JFQUQ7CisJaWYgKHN0cmNtcChwcml2bmFtZSwgIndyaXRlIikgPT0gMCkK KwkJcmV0dXJuIEFDTF9XUklURTsKIAllcmVwb3J0KEVSUk9SLAogCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAogCQkJIGVycm1zZygidW5yZWNvZ25pemVkIHByaXZpbGVnZSB0eXBl IFwiJXNcIiIsIHByaXZuYW1lKSkpOwpAQCAtMzMzMyw2ICszNTIwLDEwIEBAIHByaXZpbGVnZV90 b19zdHJpbmcoQWNsTW9kZSBwcml2aWxlZ2UpCiAJCQlyZXR1cm4gIlRFTVAiOwogCQljYXNlIEFD TF9DT05ORUNUOgogCQkJcmV0dXJuICJDT05ORUNUIjsKKwkJY2FzZSBBQ0xfUkVBRDoKKwkJCXJl dHVybiAiUkVBRCI7CisJCWNhc2UgQUNMX1dSSVRFOgorCQkJcmV0dXJuICJXUklURSI7CiAJCWRl ZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIHByaXZpbGVnZTogJWQiLCAoaW50 KSBwcml2aWxlZ2UpOwogCX0KQEAgLTM0NTYsNiArMzY0Nyw5IEBAIGFjbGNoZWNrX2Vycm9yKEFj bFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfVFlQ RToKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHR5cGUg JXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQkJCW1z ZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSAl cyIpOworCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQkJCQltc2cgPSBn ZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciB2aWV3ICVzIik7CiAJCQkJCQlicmVh azsKQEAgLTM1NjYsNiArMzc2MCw5IEBAIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIs IE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCQkJCW1zZyA9 IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiB0eXBlICVzIik7CiAJCQkJCQlicmVhazsK KwkJCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11 c3QgYmUgb3duZXIgb2Ygc2NoZW1hIHZhcmlhYmxlICVzIik7CisJCQkJCQlicmVhazsKIAkJCQkJ Y2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25l ciBvZiB2aWV3ICVzIik7CiAJCQkJCQlicmVhazsKQEAgLTM3MTAsNiArMzkwNyw4IEBAIHBnX2Fj bG1hc2soT2JqZWN0VHlwZSBvYmp0eXBlLCBPaWQgdGFibGVfb2lkLCBBdHRyTnVtYmVyIGF0dG51 bSwgT2lkIHJvbGVpZCwKIAkJCXJldHVybiBBQ0xfTk9fUklHSFRTOwogCQljYXNlIE9CSkVDVF9U WVBFOgogCQkJcmV0dXJuIHBnX3R5cGVfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywg aG93KTsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1cm4gcGdfdmFyaWFibGVfYWNs bWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKIAkJZGVmYXVsdDoKIAkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBvYmp0eXBlKTsK QEAgLTQ0OTksNiArNDY5OCw2NyBAQCBwZ190eXBlX2FjbG1hc2soT2lkIHR5cGVfb2lkLCBPaWQg cm9sZWlkLCBBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KQogCXJldHVybiByZXN1bHQ7CiB9 CiAKKy8qCisgKiBFeHBvcnRlZCByb3V0aW5lIGZvciBleGFtaW5pbmcgYSB1c2VyJ3MgcHJpdmls ZWdlcyBmb3IgYSB2YXJpYWJsZS4KKyAqLworQWNsTW9kZQorcGdfdmFyaWFibGVfYWNsbWFzayhP aWQgdmFyX29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93IGhvdykKK3sK KwlBY2xNb2RlCQlyZXN1bHQ7CisJSGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlhY2xEYXR1bTsK Kwlib29sCQlpc051bGw7CisJQWNsCQkgICAqYWNsOworCU9pZAkJCW93bmVySWQ7CisKKwlGb3Jt X3BnX3ZhcmlhYmxlIHZhckZvcm07CisKKwkvKiBCeXBhc3MgcGVybWlzc2lvbiBjaGVja3MgZm9y IHN1cGVydXNlcnMgKi8KKwlpZiAoc3VwZXJ1c2VyX2FyZyhyb2xlaWQpKQorCQlyZXR1cm4gbWFz azsKKworCS8qCisJICogTXVzdCBnZXQgdGhlIHR5cGUncyB0dXBsZSBmcm9tIHBnX3R5cGUKKwkg Ki8KKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1 bSh2YXJfb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJt c2coInZhcmlhYmxlIHdpdGggT0lEICV1IGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXZhcl9vaWQp KSk7CisJdmFyRm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwbGUpOworCisJ LyoKKwkgKiBOb3cgZ2V0IHRoZSB0eXBlJ3Mgb3duZXIgYW5kIEFDTCBmcm9tIHRoZSB0dXBsZQor CSAqLworCW93bmVySWQgPSB2YXJGb3JtLT52YXJvd25lcjsKKworCWFjbERhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyKFZBUklBQkxFT0lELCB0dXBsZSwKKwkJCQkJCQkgICBBbnVtX3BnX3ZhcmlhYmxl X3ZhcmFjbCwgJmlzTnVsbCk7CisJaWYgKGlzTnVsbCkKKwl7CisJCS8qIE5vIEFDTCwgc28gYnVp bGQgZGVmYXVsdCBBQ0wgKi8KKwkJYWNsID0gYWNsZGVmYXVsdChPQkpFQ1RfVkFSSUFCTEUsIG93 bmVySWQpOworCQlhY2xEYXR1bSA9IChEYXR1bSkgMDsKKwl9CisJZWxzZQorCXsKKwkJLyogZGV0 b2FzdCByZWwncyBBQ0wgaWYgbmVjZXNzYXJ5ICovCisJCWFjbCA9IERhdHVtR2V0QWNsUChhY2xE YXR1bSk7CisJfQorCisJcmVzdWx0ID0gYWNsbWFzayhhY2wsIHJvbGVpZCwgb3duZXJJZCwgbWFz aywgaG93KTsKKworCS8qIGlmIHdlIGhhdmUgYSBkZXRvYXN0ZWQgY29weSwgZnJlZSBpdCAqLwor CWlmIChhY2wgJiYgKFBvaW50ZXIpIGFjbCAhPSBEYXR1bUdldFBvaW50ZXIoYWNsRGF0dW0pKQor CQlwZnJlZShhY2wpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCXJldHVybiByZXN1 bHQ7Cit9CisKKwogLyoKICAqIEV4cG9ydGVkIHJvdXRpbmUgZm9yIGNoZWNraW5nIGEgdXNlcidz IGFjY2VzcyBwcml2aWxlZ2VzIHRvIGEgY29sdW1uCiAgKgpAQCAtNDc0NCw2ICs1MDA0LDE4IEBA IHBnX3R5cGVfYWNsY2hlY2soT2lkIHR5cGVfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUp CiAJCXJldHVybiBBQ0xDSEVDS19OT19QUklWOwogfQogCisvKgorICogRXhwb3J0ZWQgcm91dGlu ZSBmb3IgY2hlY2tpbmcgYSB1c2VyJ3MgYWNjZXNzIHByaXZpbGVnZXMgdG8gYSB2YXJpYWJsZQor ICovCitBY2xSZXN1bHQKK3BnX3ZhcmlhYmxlX2FjbGNoZWNrKE9pZCB0eXBlX29pZCwgT2lkIHJv bGVpZCwgQWNsTW9kZSBtb2RlKQoreworCWlmIChwZ192YXJpYWJsZV9hY2xtYXNrKHR5cGVfb2lk LCByb2xlaWQsIG1vZGUsIEFDTE1BU0tfQU5ZKSAhPSAwKQorCQlyZXR1cm4gQUNMQ0hFQ0tfT0s7 CisJZWxzZQorCQlyZXR1cm4gQUNMQ0hFQ0tfTk9fUFJJVjsKK30KKwogLyoKICAqIE93bmVyc2hp cCBjaGVjayBmb3IgYSByZWxhdGlvbiAoc3BlY2lmaWVkIGJ5IE9JRCkuCiAgKi8KQEAgLTUzNjEs NiArNTYzMywzMyBAQCBwZ19zdGF0aXN0aWNzX29iamVjdF9vd25lcmNoZWNrKE9pZCBzdGF0X29p ZCwgT2lkIHJvbGVpZCkKIAlyZXR1cm4gaGFzX3ByaXZzX29mX3JvbGUocm9sZWlkLCBvd25lcklk KTsKIH0KIAorLyoKKyAqIE93bmVyc2hpcCBjaGVjayBmb3IgYSBzY2hlbWEgdmFyaWFibGVzIChz cGVjaWZpZWQgYnkgT0lEKS4KKyAqLworYm9vbAorcGdfdmFyaWFibGVfb3duZXJjaGVjayhPaWQg ZGJfb2lkLCBPaWQgcm9sZWlkKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlPaWQJCQlvd25lcklk OworCisJLyogU3VwZXJ1c2VycyBieXBhc3MgYWxsIHBlcm1pc3Npb24gY2hlY2tpbmcuICovCisJ aWYgKHN1cGVydXNlcl9hcmcocm9sZWlkKSkKKwkJcmV0dXJuIHRydWU7CisKKwl0dXBsZSA9IFNl YXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bShkYl9vaWQpKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfVU5ERUZJTkVEX0RBVEFCQVNFKSwKKwkJCQkgZXJybXNnKCJ2YXJpYWJsZSB3 aXRoIE9JRCAldSBkb2VzIG5vdCBleGlzdCIsIGRiX29pZCkpKTsKKworCW93bmVySWQgPSAoKEZv cm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXBsZSkpLT52YXJvd25lcjsKKworCVJlbGVhc2VT eXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gaGFzX3ByaXZzX29mX3JvbGUocm9sZWlkLCBvd25l cklkKTsKK30KKworCiAvKgogICogQ2hlY2sgd2hldGhlciBzcGVjaWZpZWQgcm9sZSBoYXMgQ1JF QVRFUk9MRSBwcml2aWxlZ2UgKG9yIGlzIGEgc3VwZXJ1c2VyKQogICoKQEAgLTU0ODYsNiArNTc4 NSwxMCBAQCBnZXRfdXNlcl9kZWZhdWx0X2FjbChPYmplY3RUeXBlIG9ianR5cGUsIE9pZCBvd25l cklkLCBPaWQgbnNwX29pZCkKIAkJCWRlZmFjbG9ianR5cGUgPSBERUZBQ0xPQkpfTkFNRVNQQUNF OwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlkZWZhY2xvYmp0eXBl ID0gREVGQUNMT0JKX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCXJldHVy biBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggNGYxZDM2NTM1Ny4uNzgy ZGRiMTY1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTU5LDYgKzU5LDcgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29tbWVudC5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuaCIKQEAgLTY3LDYgKzY4LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9wcm9jbGFuZy5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3NjaGVtYWNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3NlY2xhYmVsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2Uu aCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCkBAIC0xMjgwLDYgKzEyODIsMTAgQEAg ZG9EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGludCBmbGFncykKIAkJCURy b3BUcmFuc2Zvcm1CeUlkKG9iamVjdC0+b2JqZWN0SWQpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBP Q0xBU1NfVkFSSUFCTEU6CisJCQlSZW1vdmVWYXJpYWJsZUJ5SWQob2JqZWN0LT5vYmplY3RJZCk7 CisJCQlicmVhazsKKwogCQkJLyoKIAkJCSAqIFRoZXNlIGdsb2JhbCBvYmplY3QgdHlwZXMgYXJl IG5vdCBzdXBwb3J0ZWQgaGVyZS4KIAkJCSAqLwpAQCAtMjUzNyw2ICsyNTQzLDkgQEAgZ2V0T2Jq ZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCiAJCWNhc2UgVHJhbnNmb3Jt UmVsYXRpb25JZDoKIAkJCXJldHVybiBPQ0xBU1NfVFJBTlNGT1JNOworCisJCWNhc2UgVmFyaWFi bGVSZWxhdGlvbklkOgorCQkJcmV0dXJuIE9DTEFTU19WQVJJQUJMRTsKIAl9CiAKIAkvKiBzaG91 bGRuJ3QgZ2V0IGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNw YWNlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCmluZGV4IDVkMTNlNmEzZDcu LmU0N2NhYTM1NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtMzksNiArMzksNyBAQAog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAj aW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC03NTUsNiAr NzU2LDY5IEBAIFJlbGF0aW9uSXNWaXNpYmxlKE9pZCByZWxpZCkKIAlyZXR1cm4gdmlzaWJsZTsK IH0KIAorLyoKKyAqIFZhcmlhYmxlSXNWaXNpYmxlCisgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgYSB2 YXJpYWJsZSAoaWRlbnRpZmllZCBieSBPSUQpIGlzIHZpc2libGUgaW4gdGhlCisgKgkJY3VycmVu dCBzZWFyY2ggcGF0aC4gIFZpc2libGUgbWVhbnMgIndvdWxkIGJlIGZvdW5kIGJ5IHNlYXJjaGlu ZworICoJCWZvciB0aGUgdW5xdWFsaWZpZWQgdmFyaWFibGUgbmFtZSIuCisgKi8KK2Jvb2wKK1Zh cmlhYmxlSXNWaXNpYmxlKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJdmFydHVwOworCUZvcm1f cGdfdmFyaWFibGUgdmFyZm9ybTsKKwlPaWQJCQl2YXJuYW1lc3BhY2U7CisJYm9vbAkJdmlzaWJs ZTsKKworCXZhcnR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXRE YXR1bSh2YXJpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh2YXJ0dXApKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc2NoZW1hIHZhcmlhYmxlICV1IiwgdmFyaWQp OworCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHZhcnR1cCk7CisKKwly ZWNvbXB1dGVOYW1lc3BhY2VQYXRoKCk7CisKKwkvKgorCSAqIFF1aWNrIGNoZWNrOiBpZiBpdCBh aW4ndCBpbiB0aGUgcGF0aCBhdCBhbGwsIGl0IGFpbid0IHZpc2libGUuIEl0ZW1zIGluCisJICog dGhlIHN5c3RlbSBuYW1lc3BhY2UgYXJlIHN1cmVseSBpbiB0aGUgcGF0aCBhbmQgc28gd2UgbmVl ZG4ndCBldmVuIGRvCisJICogbGlzdF9tZW1iZXJfb2lkKCkgZm9yIHRoZW0uCisJICovCisJdmFy bmFtZXNwYWNlID0gdmFyZm9ybS0+dmFybmFtZXNwYWNlOworCWlmICh2YXJuYW1lc3BhY2UgIT0g UEdfQ0FUQUxPR19OQU1FU1BBQ0UgJiYKKwkJIWxpc3RfbWVtYmVyX29pZChhY3RpdmVTZWFyY2hQ YXRoLCB2YXJuYW1lc3BhY2UpKQorCQl2aXNpYmxlID0gZmFsc2U7CisJZWxzZQorCXsKKwkJLyoK KwkJICogSWYgaXQgaXMgaW4gdGhlIHBhdGgsIGl0IG1pZ2h0IHN0aWxsIG5vdCBiZSB2aXNpYmxl OyBpdCBjb3VsZCBiZQorCQkgKiBoaWRkZW4gYnkgYW5vdGhlciByZWxhdGlvbiBvZiB0aGUgc2Ft ZSBuYW1lIGVhcmxpZXIgaW4gdGhlIHBhdGguIFNvCisJCSAqIHdlIG11c3QgZG8gYSBzbG93IGNo ZWNrIGZvciBjb25mbGljdGluZyByZWxhdGlvbnMuCisJCSAqLworCQljaGFyCSAgICp2YXJuYW1l ID0gTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKwkJTGlzdENlbGwgICAqbDsKKworCQl2aXNp YmxlID0gZmFsc2U7CisJCWZvcmVhY2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJT2lk CQkJbmFtZXNwYWNlSWQgPSBsZmlyc3Rfb2lkKGwpOworCisJCQlpZiAobmFtZXNwYWNlSWQgPT0g dmFybmFtZXNwYWNlKQorCQkJeworCQkJCS8qIEZvdW5kIGl0IGZpcnN0IGluIHBhdGggKi8KKwkJ CQl2aXNpYmxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChPaWRJc1ZhbGlkKGdl dF92YXJuYW1lX3ZhcmlkKHZhcm5hbWUsIG5hbWVzcGFjZUlkKSkpCisJCQl7CisJCQkJLyogRm91 bmQgc29tZXRoaW5nIGVsc2UgZmlyc3QgaW4gcGF0aCAqLworCQkJCWJyZWFrOworCQkJfQorCQl9 CisJfQorCisJUmVsZWFzZVN5c0NhY2hlKHZhcnR1cCk7CisKKwlyZXR1cm4gdmlzaWJsZTsKK30K IAogLyoKICAqIFR5cGVuYW1lR2V0VHlwaWQKQEAgLTI3NzYsNiArMjg0MCwyMDIgQEAgVFNDb25m aWdJc1Zpc2libGUoT2lkIGNmZ2lkKQogCXJldHVybiB2aXNpYmxlOwogfQogCisvKgorICogV2hl biB3ZSBrbm93IGEgdmFyaWFibGUgbmFtZSwgdGhlbiB3ZSBjYW4gZmluZCB2YXJpYWJsZSBzaW1w bHkKKyAqLworT2lkCitsb29rdXBfdmFyaWFibGUoY29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3Qg Y2hhciAqdmFybmFtZSwgYm9vbCBtaXNzaW5nX29rKQoreworCU9pZAkJCW5hbWVzcGFjZUlkOwor CU9pZAkJCXZhcm9pZAkJPSBJbnZhbGlkT2lkOworCUxpc3RDZWxsICAgKmw7CisKKwlpZiAobnNw bmFtZSkKKwl7CisJCW5hbWVzcGFjZUlkID0gTG9va3VwRXhwbGljaXROYW1lc3BhY2UobnNwbmFt ZSwgbWlzc2luZ19vayk7CisJCWlmICghT2lkSXNWYWxpZChuYW1lc3BhY2VJZCkpCisJCQlyZXR1 cm4gSW52YWxpZE9pZDsKKworCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1F TlNQLAorCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJICBPYmpl Y3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisJfQorCWVsc2UKKwl7CisJCS8qIHNlYXJjaCBm b3IgaXQgaW4gc2VhcmNoIHBhdGggKi8KKwkJcmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJ CWZvcmVhY2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJbmFtZXNwYWNlSWQgPSBsZmly c3Rfb2lkKGwpOworCisJCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQ LAorCQkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFyb2lkKSkK KwkJCQlicmVhazsKKwkJfQorCX0KKworCWlmICghT2lkSXNWYWxpZCh2YXJvaWQpICYmICFtaXNz aW5nX29rKQorCXsKKwkJaWYgKG5zcG5hbWUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBc IiVzXCIuXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkJbnNwbmFtZSwgdmFybmFtZSkp KTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGRvZXMgbm90IGV4 aXN0IiwKKwkJCQkJCQkJdmFybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdmFyb2lkOworfQorCitM aXN0ICoKK05hbWVzRnJvbUxpc3QoTGlzdCAqbmFtZXMpCit7CisJTGlzdENlbGwgKmw7CisJTGlz dAkqcmVzdWx0ID0gTklMOworCisJZm9yZWFjaChsLCBuYW1lcykKKwl7CisJCU5vZGUgKm4gPSBs Zmlyc3QobCk7CisKKwkJaWYgKElzQShuLCBTdHJpbmcpKQorCQl7CisJCQlyZXN1bHQgPSBsYXBw ZW5kKHJlc3VsdCwgbik7CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJl c3VsdDsKK30KKworLyoKKyAqIGlkZW50aWZ5X3ZhcmlhYmxlCisgKgorICogUmV0dXJucyBvaWQg b2Ygbm90IGFtYmlnb251b3VzIHZhcmlhYmxlIHNwZWNpZmllZCBieSBxdWFsaWZpZWQgcGF0aAor ICogb3IgSW52YWxpZE9pZC4gV2hlbiB0aGUgcGF0aCBpcyBhbWJpZ29udW91cywgdGhlbiBub3Rf dW5pcSBmbGFnIGlzCisgKiBpcyB0cnVlLgorICovCitPaWQKK2lkZW50aWZ5X3ZhcmlhYmxlKExp c3QgKm5hbWVzLCBjaGFyICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxKQoreworCWNoYXIgICAq YSA9IE5VTEw7CisJY2hhciAgICpiID0gTlVMTDsKKwljaGFyICAgKmMgPSBOVUxMOworCWNoYXIg ICAqZCA9IE5VTEw7CisJT2lkCQl2YXJvaWRfd2l0aG91dF9hdHRyOworCU9pZAkJdmFyb2lkX3dp dGhfYXR0cjsKKworCSpub3RfdW5pcSA9IGZhbHNlOworCisJc3dpdGNoIChsaXN0X2xlbmd0aChu YW1lcykpCisJeworCQljYXNlIDE6CisJCQlhID0gc3RyVmFsKGxpbml0aWFsKG5hbWVzKSk7CisJ CQlyZXR1cm4gbG9va3VwX3ZhcmlhYmxlKE5VTEwsIGEsIHRydWUpOworCisJCWNhc2UgMjoKKwkJ CWEgPSBzdHJWYWwobGluaXRpYWwobmFtZXMpKTsKKwkJCWIgPSBzdHJWYWwobHNlY29uZChuYW1l cykpOworCisJCQkvKgorCQkJICogYS5iIGNhbiBtZWFuICJzY2hlbWEiLiJ2YXJpYWJsZSIgb3Ig InZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hlY2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVy bnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJCQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJw cmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAqLworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9 IGxvb2t1cF92YXJpYWJsZShhLCBiLCB0cnVlKTsKKwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29r dXBfdmFyaWFibGUoTlVMTCwgYSwgdHJ1ZSk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93 aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQl7CisJCQkJ Km5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2Ug aWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikpCisJCQl7CisJCQkJKmF0dHJuYW1l ID0gTlVMTDsKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBiOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRyOwor CQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSAzOgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1l cykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0aGly ZChuYW1lcykpOworCisJCQkvKgorCQkJICogYS5iLmMgY2FuIG1lYW4gImNhdGFsb2ciLiJzY2hl bWEiLiJ2YXJpYWJsZSIgb3IgInNjaGVtYSIuInZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hl Y2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVybnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJ CQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJwcmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAq LworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9IGxvb2t1cF92YXJpYWJsZShiLCBjLCB0cnVlKTsK KwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29rdXBfdmFyaWFibGUoYSwgYiwgdHJ1ZSk7CisKKwkJ CWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lk X3dpdGhfYXR0cikpCisJCQl7CisJCQkJKm5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52 YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0 cikpCisJCQl7CisJCQkJKmF0dHJuYW1lID0gTlVMTDsKKworCQkJCS8qCisJCQkJICogV2UgaW4g dGhpcyBjYXNlIGEgImEiIGlzIHVzZWQgYXMgY2F0YWxvZyBuYW1lLCBjaGVjayBpdC4KKwkJCQkg Ki8KKwkJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9 IDApCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJlZmVyZW5j ZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhu YW1lcykpKSk7CisKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBjOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRy OworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSA0OgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChu YW1lcykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0 aGlyZChuYW1lcykpOworCQkJZCA9IHN0clZhbChsZm91cnRoKG5hbWVzKSk7CisKKwkJCS8qCisJ CQkgKiBXZSBpbiB0aGlzIGNhc2UgYSAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUsIGNoZWNr IGl0LgorCQkJICovCisJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJh c2VJZCkpICE9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJl ZmVyZW5jZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3Ry aW5nKG5hbWVzKSkpKTsKKworCQkJKmF0dHJuYW1lID0gZDsKKwkJCXJldHVybiBsb29rdXBfdmFy aWFibGUoYiwgYywgdHJ1ZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiaW1wcm9wZXIg cXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICVzIiwKKwkJCQkJCQlOYW1l TGlzdFRvU3RyaW5nKG5hbWVzKSkpKTsKKwkJCWJyZWFrOworCX0KK30KIAogLyoKICAqIERlY29u c3RydWN0UXVhbGlmaWVkTmFtZQpAQCAtNDQ5MCwzICs0NzUwLDE0IEBAIHBnX2lzX290aGVyX3Rl bXBfc2NoZW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChpc090aGVyVGVt cE5hbWVzcGFjZShvaWQpKTsKIH0KKworRGF0dW0KK3BnX3ZhcmlhYmxlX2lzX3Zpc2libGUoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlvaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYg KCFTZWFyY2hTeXNDYWNoZUV4aXN0czEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0ob2lk KSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fQk9PTChWYXJpYWJsZUlzVmlz aWJsZShvaWQpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRk cmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggN2RiOTQy ZGNiYS4uY2MzZDQxNWU2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3Rh ZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTU4 LDYgKzU4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKQEAgLTQ4OSw2ICs0OTAsMTggQEAgc3RhdGljIGNvbnN0 IE9iamVjdFByb3BlcnR5VHlwZSBPYmplY3RQcm9wZXJ0eVtdID0KIAkJSW52YWxpZEF0dHJOdW1i ZXIsCQkvKiBubyBBQ0wgKHNhbWUgYXMgcmVsYXRpb24pICovCiAJCU9CSkVDVF9TVEFUSVNUSUNf RVhULAogCQl0cnVlCisJfSwKKwl7CisJCVZhcmlhYmxlUmVsYXRpb25JZCwKKwkJVmFyaWFibGVP YmplY3RJbmRleElkLAorCQlWQVJJQUJMRU9JRCwKKwkJVkFSSUFCTEVOQU1FTlNQLAorCQlBbnVt X3BnX3ZhcmlhYmxlX3Zhcm5hbWUsCisJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAor CQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm93bmVyLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCwK KwkJT0JKRUNUX1ZBUklBQkxFLAorCQl0cnVlCiAJfQogfTsKIApAQCAtNzE0LDYgKzcyNywxMCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamVjdF90eXBlX21hcAogCS8qIE9CSkVDVF9TVEFUSVNU SUNfRVhUICovCiAJewogCQkic3RhdGlzdGljcyBvYmplY3QiLCBPQkpFQ1RfU1RBVElTVElDX0VY VAorCX0sCisJLyogT0NMQVNTX1ZBUklBQkxFICovCisJeworCQkic2NoZW1hIHZhcmlhYmxlIiwg T0JKRUNUX1ZBUklBQkxFCiAJfQogfTsKIApAQCAtNzM5LDYgKzc1Niw3IEBAIHN0YXRpYyBPYmpl Y3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc19hdHRyZGVmKE9iamVjdFR5cGUgb2JqdHlwZSwK IAkJCQkJCSAgIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2Jq ZWN0X2FkZHJlc3NfdHlwZShPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCQlUeXBlTmFtZSAqdHlw ZW5hbWUsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0 X2FkZHJlc3NfdmFyaWFibGUoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spOwogc3RhdGlj IE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wY2YoT2JqZWN0VHlwZSBvYmp0eXBl LCBMaXN0ICpvYmplY3QsCiAJCQkJCQlib29sIG1pc3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFk ZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wZl9tZW1iZXIoT2JqZWN0VHlwZSBvYmp0eXBlLApA QCAtOTk2LDYgKzEwMTQsMTAgQEAgZ2V0X29iamVjdF9hZGRyZXNzKE9iamVjdFR5cGUgb2JqdHlw ZSwgTm9kZSAqb2JqZWN0LAogCQkJCQkJCQkJCQkJCQkJIG1pc3Npbmdfb2spOwogCQkJCWFkZHJl c3Mub2JqZWN0U3ViSWQgPSAwOwogCQkJCWJyZWFrOworCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CisJCQkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShjYXN0Tm9kZShMaXN0 LCBvYmplY3QpLCBtaXNzaW5nX29rKTsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJ CQkJLyogcGxhY2F0ZSBjb21waWxlciwgaW4gY2FzZSBpdCB0aGlua3MgZWxvZyBtaWdodCByZXR1 cm4gKi8KQEAgLTE4NDgsMTYgKzE4NzAsMjAgQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChM aXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNF OgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xP QkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOworCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGRlZmF1bHQg QUNMIG9iamVjdCB0eXBlIFwiJWNcIiIsIG9ianR5cGUpLAotCQkJCQkgZXJyaGludCgiVmFsaWQg b2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIi4i LAorCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwg XCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLiIsCiAJCQkJCQkJIERFRkFDTE9CSl9SRUxB VElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1NFUVVFTkNFLAogCQkJCQkJCSBERUZBQ0xPQkpfRlVO Q1RJT04sCiAJCQkJCQkJIERFRkFDTE9CSl9UWVBFLAotCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQ QUNFKSkpOworCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFLAorCQkJCQkJCSBERUZBQ0xPQkpf VkFSSUFCTEUpKSk7CiAJfQogCiAJLyoKQEAgLTE5NDIsNiArMTk2OCwyNCBAQCB0ZXh0YXJyYXlf dG9fc3RydmFsdWVsaXN0KEFycmF5VHlwZSAqYXJyKQogCXJldHVybiBsaXN0OwogfQogCisvKgor ICogRmluZCB0aGUgT2JqZWN0QWRkcmVzcyBmb3IgYSB0eXBlIG9yIGRvbWFpbgorICovCitzdGF0 aWMgT2JqZWN0QWRkcmVzcworZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKExpc3QgKm9iamVj dCwgYm9vbCBtaXNzaW5nX29rKQoreworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwljaGFyCSAg ICpuc3BuYW1lID0gTlVMTDsKKwljaGFyCSAgICp2YXJuYW1lID0gTlVMTDsKKworCU9iamVjdEFk ZHJlc3NTZXQoYWRkcmVzcywgVmFyaWFibGVSZWxhdGlvbklkLCBJbnZhbGlkT2lkKTsKKworCURl Y29uc3RydWN0UXVhbGlmaWVkTmFtZShvYmplY3QsICZuc3BuYW1lLCAmdmFybmFtZSk7CisJYWRk cmVzcy5vYmplY3RJZCA9IGxvb2t1cF92YXJpYWJsZShuc3BuYW1lLCB2YXJuYW1lLCBtaXNzaW5n X29rKTsKKworCXJldHVybiBhZGRyZXNzOworfQorCiAvKgogICogU1FMLWNhbGxhYmxlIHZlcnNp b24gb2YgZ2V0X29iamVjdF9hZGRyZXNzCiAgKi8KQEAgLTIxMzEsNiArMjE3NSw3IEBAIHBnX2dl dF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9UQUJDT05T VFJBSU5UOgogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKIAkJ CWJyZWFrOwogCQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgpAQCAtMjQxNSw2ICsyNDYwLDEx IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCQlpZiAoIXBnX3N0YXRpc3RpY3Nfb2JqZWN0X293 bmVyY2hlY2soYWRkcmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKIAkJCQlhY2xjaGVja19lcnJvcl90 eXBlKEFDTENIRUNLX05PVF9PV05FUiwgYWRkcmVzcy5vYmplY3RJZCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlpZiAoIXBnX3ZhcmlhYmxlX293bmVyY2hlY2soYWRk cmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKKwkJCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1Rf T1dORVIsIG9ianR5cGUsCisJCQkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhjYXN0Tm9kZShMaXN0 LCBvYmplY3QpKSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC0zMTU3 LDYgKzMyMDcsMzIgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAq b2JqZWN0KQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJ eworCQkJCWNoYXIJICAgKm5zcG5hbWU7CisJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQlGb3JtX3Bn X3ZhcmlhYmxlCXZhcmZvcm07CisKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVP SUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3Igc2NoZW1hIHZhcmlhYmxlICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKworCQkJ CXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlpZiAo VmFyaWFibGVJc1Zpc2libGUob2JqZWN0LT5vYmplY3RJZCkpCisJCQkJCW5zcG5hbWUgPSBOVUxM OworCQkJCWVsc2UKKwkJCQkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZSh2YXJmb3JtLT52 YXJuYW1lc3BhY2UpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBfKCJzY2hlbWEg dmFyaWFibGUgJXMiKSwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5h bWUsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKSk7CisKKwkJCQlS ZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19U U1BBUlNFUjoKIAkJCXsKIAkJCQlIZWFwVHVwbGUJdHVwOwpAQCAtMzQyMiw2ICszNDk4LDE2IEBA IGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCQkJ CQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5ldyBzY2hlbWFzIGJlbG9uZ2luZyB0byBy b2xlICVzIiksCiAJCQkJCQkJCQkJIHJvbGVuYW1lKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNl IERFRkFDTE9CSl9WQVJJQUJMRToKKwkJCQkJCWlmIChuc3BuYW1lKQorCQkJCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBu ZXcgdmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIGluIHNjaGVtYSAlcyIpLAorCQkJCQkJ CQkJCQkgcm9sZW5hbWUsIG5zcG5hbWUpOworCQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZFN0cmlu Z0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBuZXcg dmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIiksCisJCQkJCQkJCQkJCSByb2xlbmFtZSk7 CisJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCS8qIHNob3VsZG4ndCBnZXQgaGVy ZSAqLwogCQkJCQkJaWYgKG5zcG5hbWUpCkBAIC00MDcwLDYgKzQxNTYsMTAgQEAgZ2V0T2JqZWN0 VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInRyYW5zZm9ybSIpOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBPQ0xBU1NfVkFSSUFCTEU6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJz Y2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlcmUncyBpbnRl bnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZTsgd2Ugd2FudCB0aGUKIAkJCSAqIGNvbXBp bGVyIHRvIHdhcm4gaWYgYSBuZXcgT0NMQVNTIGhhc24ndCBiZWVuIGhhbmRsZWQgYWJvdmUuCkBA IC00OTYyLDYgKzUwNTIsMTAgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RB ZGRyZXNzICpvYmplY3QsCiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCiAJ CQkJCQkJCQkJCSAgICIgb24gc2NoZW1hcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVG QUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAor CQkJCQkJCQkJCQkgICAiIG9uIHZhcmlhYmxlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJ CQkJaWYgKG9iam5hbWUpCkBAIC01MTIxLDYgKzUyMTUsMzMgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQ YXJ0cyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQl9CiAJCQlicmVhazsKIAorCQlj YXNlIE9DTEFTU19WQVJJQUJMRToKKwkJCXsKKwkJCQljaGFyCSAgICpzY2hlbWE7CisJCQkJY2hh cgkgICAqdmFybmFtZTsKKwkJCQlIZWFwVHVwbGUJdHVwOworCQkJCUZvcm1fcGdfdmFyaWFibGUJ dmFyZm9ybTsKKworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0 SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEg dmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJdmFyZm9ybSA9 IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCXNjaGVtYSA9IGdldF9u YW1lc3BhY2VfbmFtZV9vcl90ZW1wKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisJCQkJdmFybmFt ZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZi dWZmZXIsICIlcyIsCisJCQkJCQkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKHNjaGVtYSwg dmFybmFtZSkpOworCisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGlzdF9tYWtl MihzY2hlbWEsIHZhcm5hbWUpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJCQkJYnJl YWs7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICogY29tcGlsZXIgdG8gd2FybiBpZiBhIG5l dyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFi bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41MzcyZjMwZjMxCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCkBAIC0w LDAgKzEsMzUyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ192YXJpYWJsZS5jCisg KgkJc2NoZW1hIHZhcmlhYmxlcworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFi bGUuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9kZXBlbmRl bmN5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cv bmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hl bWF2YXJpYWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgIm5v ZGVzL3ByaW1ub2Rlcy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInV0 aWxzL2FycmF5LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGls cy9mbWdyb2lkcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0 aWxzL3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3N5 c2NhY2hlLmgiCisKK3N0YXRpYyBWYXJpYWJsZUVPWEFjdGlvbkNvZGVzCit0b19lb3hhY3Rpb25f Y29kZShWYXJpYWJsZUVPWEFjdGlvbiBhY3Rpb24pCit7CisJc3dpdGNoIChhY3Rpb24pCisJewor CQljYXNlIFZBUklBQkxFX0VPWF9OT09QOgorCQkJcmV0dXJuIFZBUklBQkxFX0VPWF9DT0RFX05P T1A7CisKKwkJY2FzZSBWQVJJQUJMRV9FT1hfRFJPUDoKKwkJCXJldHVybiBWQVJJQUJMRV9FT1hf Q09ERV9EUk9QOworCisJCWNhc2UgVkFSSUFCTEVfRU9YX1JFU0VUOgorCQkJcmV0dXJuIFZBUklB QkxFX0VPWF9DT0RFX1JFU0VUOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBl Y3RlZCBhY3Rpb24iKTsKKwl9CisKK30KKworc3RhdGljIFZhcmlhYmxlRU9YQWN0aW9uCit0b19l b3hhY3Rpb24oVmFyaWFibGVFT1hBY3Rpb25Db2RlcyBjb2RlKQoreworCXN3aXRjaCAoY29kZSkK Kwl7CisJCWNhc2UgVkFSSUFCTEVfRU9YX0NPREVfTk9PUDoKKwkJCXJldHVybiBWQVJJQUJMRV9F T1hfTk9PUDsKKworCQljYXNlIFZBUklBQkxFX0VPWF9DT0RFX0RST1A6CisJCQlyZXR1cm4gVkFS SUFCTEVfRU9YX0RST1A7CisKKwkJY2FzZSBWQVJJQUJMRV9FT1hfQ09ERV9SRVNFVDoKKwkJCXJl dHVybiBWQVJJQUJMRV9FT1hfUkVTRVQ7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1 bmV4cGVjdGVkIGNvZGUiKTsKKwl9Cit9CisKKy8qCisgKiBSZXR1cm5zIG5hbWUgb2Ygc2NoZW1h IHZhcmlhYmxlLiBXaGVuIHZhcmlhYmxlIGlzIG5vdCBvbiBwYXRoLAorICogdGhlbiB0aGUgbmFt ZSBpcyBxdWFsaWZpZWQuCisgKi8KK2NoYXIgKgorc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKE9p ZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsK KwljaGFyICAgKnZhcm5hbWU7CisJY2hhciAgICpuc3BuYW1lOworCWNoYXIgICAqcmVzdWx0Owor CisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZh cmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9 IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3Ry KHZhcmZvcm0tPnZhcm5hbWUpOworCisJaWYgKFZhcmlhYmxlSXNWaXNpYmxlKHZhcmlkKSkKKwkJ bnNwbmFtZSA9IE5VTEw7CisJZWxzZQorCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZh cmZvcm0tPnZhcm5hbWVzcGFjZSk7CisKKwlyZXN1bHQgPSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRp Zmllcihuc3BuYW1lLCB2YXJuYW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0 dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFJldHVybnMgdmFybmFtZSBmaWVsZCBvZiBwZ192YXJp YWJsZQorICovCitjaGFyICoKK2dldF9zY2hlbWFfdmFyaWFibGVfbmFtZShPaWQgdmFyaWQpCit7 CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJY2hhciAgICp2 YXJuYW1lOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdl dERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJ dmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUg PSBOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisK KwlyZXR1cm4gdmFybmFtZTsKK30KKworLyoKKyAqIFJldHVybnMgdHlwZSwgdHlwbW9kIG9mIHNj aGVtYSB2YXJpYWJsZQorICovCit2b2lkCitnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9k X2NvbGxpZChPaWQgdmFyaWQsIE9pZCAqdHlwaWQsIGludDMyICp0eXBtb2QsIE9pZCAqY29sbGlk KQoreworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCisJdHVw ID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7 CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3Jt X3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCSp0eXBpZCA9IHZhcmZvcm0tPnZhcnR5 cGU7CisJKnR5cG1vZCA9IHZhcmZvcm0tPnZhcnR5cG1vZDsKKwkqY29sbGlkID0gdmFyZm9ybS0+ dmFyY29sbGF0aW9uOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm47Cit9CisK Ky8qCisgKiBGZXRjaCBhbGwgZmllbGRzIG9mIHNjaGVtYSB2YXJpYWJsZSBmcm9tIHRoZSBzeXNj YWNoZS4KKyAqLworVmFyaWFibGUgKgorR2V0VmFyaWFibGUoT2lkIHZhcmlkLCBib29sIG1pc3Np bmdfb2spCit7CisJSGVhcFR1cGxlCXR1cDsKKwlWYXJpYWJsZSAqdmFyOworCUZvcm1fcGdfdmFy aWFibGUgdmFyZm9ybTsKKwlEYXR1bQkJYWNsRGF0dW07CisJRGF0dW0JCWRlZmV4cHJEYXR1bTsK Kwlib29sCQlpc251bGw7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9i amVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQor CXsKKwkJaWYgKG1pc3Npbmdfb2spCisJCQlyZXR1cm4gTlVMTDsKKworCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisJfQorCisJdmFy Zm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhciA9IChWYXJp YWJsZSAqKSBwYWxsb2Moc2l6ZW9mKFZhcmlhYmxlKSk7CisJdmFyLT5vaWQgPSB2YXJpZDsKKwl2 YXItPm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSkpOworCXZhci0+bmFt ZXNwYWNlID0gdmFyZm9ybS0+dmFybmFtZXNwYWNlOworCXZhci0+dHlwaWQgPSB2YXJmb3JtLT52 YXJ0eXBlOworCXZhci0+dHlwbW9kID0gdmFyZm9ybS0+dmFydHlwbW9kOworCXZhci0+b3duZXIg PSB2YXJmb3JtLT52YXJvd25lcjsKKwl2YXItPmNvbGxhdGlvbiA9IHZhcmZvcm0tPnZhcmNvbGxh dGlvbjsKKwl2YXItPmVveGFjdGlvbiA9IHRvX2VveGFjdGlvbih2YXJmb3JtLT52YXJlb3hhY3Rp b24pOworCisJLyogR2V0IGRlZmV4cHIgKi8KKwlkZWZleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0 dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFudW1fcGdfdmFyaWFibGVfdmFy ZGVmZXhwciwKKwkJCQkJCQkmaXNudWxsKTsKKworCWlmICghaXNudWxsKQorCQl2YXItPmRlZmV4 cHIgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkZWZleHByRGF0dW0pKTsKKwll bHNlCisJCXZhci0+ZGVmZXhwciA9IE5VTEw7CisKKwkvKiBHZXQgdmFyYWNsICovCisJYWNsRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFu dW1fcGdfdmFyaWFibGVfdmFyYWNsLAorCQkJCQkJCSZpc251bGwpOworCWlmICghaXNudWxsKQor CQl2YXItPmFjbCA9IERhdHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCWVsc2UKKwkJdmFyLT5h Y2wgPSBOVUxMOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFyOworfQor CitPYmplY3RBZGRyZXNzCitWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJ ICAgT2lkIHZhck5hbWVzcGFjZSwKKwkJCSAgIE9pZCB2YXJUeXBlLAorCQkJICAgaW50MzIgdmFy VHlwbW9kLAorCQkJICAgT2lkIHZhck93bmVyLAorCQkJICAgT2lkIHZhckNvbGxhdGlvbiwKKwkJ CSAgIE5vZGUgKnZhckRlZmV4cHIsCisJCQkgICBWYXJpYWJsZUVPWEFjdGlvbiBlb3hhY3Rpb24s CisJCQkgICBib29sIGlmX25vdF9leGlzdHMpCit7CisJQWNsCQkgICAqdmFyYWNsOworCU5hbWVE YXRhCXZhcm5hbWU7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfdmFyaWFibGVdOworCURhdHVtCQl2 YWx1ZXNbTmF0dHNfcGdfdmFyaWFibGVdOworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVw LAorCQkJCW9sZHR1cDsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlPYmplY3RBZGRyZXNzCW15c2Vs ZiwKKwkJCQkJcmVmZXJlbmNlZDsKKwlPaWQJCQlyZXR2YWw7CisJaW50CQkJaTsKKworCWZvciAo aSA9IDA7IGkgPCBOYXR0c19wZ192YXJpYWJsZTsgaSsrKQorCXsKKwkJbnVsbHNbaV0gPSBmYWxz ZTsKKwkJdmFsdWVzW2ldID0gKERhdHVtKSAwOworCX0KKworCW5hbWVzdHJjcHkoJnZhcm5hbWUs IHZhck5hbWUpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWUgLSAxXSA9IE5hbWVH ZXREYXR1bSgmdmFybmFtZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNl IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSk7CisJdmFsdWVzW0FudW1fcGdf dmFyaWFibGVfdmFydHlwZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJUeXBlKTsKKwl2YWx1 ZXNbQW51bV9wZ192YXJpYWJsZV92YXJ0eXBtb2QgLSAxXSA9IEludDMyR2V0RGF0dW0odmFyVHlw bW9kKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJvd25lciAtIDFdID0gT2JqZWN0SWRH ZXREYXR1bSh2YXJPd25lcik7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyY29sbGF0aW9u IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhckNvbGxhdGlvbik7CisJdmFsdWVzW0FudW1fcGdf dmFyaWFibGVfdmFyZW94YWN0aW9uIC0gMV0gPSBDaGFyR2V0RGF0dW0oKGNoYXIpIHRvX2VveGFj dGlvbl9jb2RlKGVveGFjdGlvbikpOworCS8qIHByb2FjbCB3aWxsIGJlIGRldGVybWluZWQgbGF0 ZXIgKi8KKworCWlmICh2YXJEZWZleHByKQorCQl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJk ZWZleHByIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG5vZGVUb1N0cmluZyh2YXJEZWZleHBy KSk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmRlZmV4cHIgLSAxXSA9IHRy dWU7CisKKwlyZWwgPSBoZWFwX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVM b2NrKTsKKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCisJb2xkdHVwID0gU2Vh cmNoU3lzQ2FjaGUyKFZBUklBQkxFTkFNRU5TUCwKKwkJCQkJCQkgUG9pbnRlckdldERhdHVtKHZh ck5hbWUpLAorCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSkpOworCisJaWYg KEhlYXBUdXBsZUlzVmFsaWQob2xkdHVwKSkKKwl7CisJCWlmIChpZl9ub3RfZXhpc3RzKQorCQkJ ZXJlcG9ydChOT1RJQ0UsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCks CisJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNr aXBwaW5nIiwKKwkJCQkJCQl2YXJOYW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJz Y2hlbWEgdmFyaWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJCQl2YXJOYW1lKSkp OworCisJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cCk7CisJCWhlYXBfY2xvc2UocmVsLCBSb3dFeGNs dXNpdmVMb2NrKTsKKworCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJfQorCisJdmFy YWNsID0gZ2V0X3VzZXJfZGVmYXVsdF9hY2woT0JKRUNUX1ZBUklBQkxFLCB2YXJPd25lciwKKwkJ CQkJCQkJICB2YXJOYW1lc3BhY2UpOworCisJaWYgKHZhcmFjbCAhPSBOVUxMKQorCQl2YWx1ZXNb QW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50ZXJHZXREYXR1bSh2YXJhY2wpOwor CWVsc2UKKwkJbnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IHRydWU7CisKKwl0 dXAgPSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJQ2F0YWxvZ1R1 cGxlSW5zZXJ0KHJlbCwgdHVwKTsKKworCXJldHZhbCA9IEhlYXBUdXBsZUdldE9pZCh0dXApOwor CisJbXlzZWxmLmNsYXNzSWQgPSBWYXJpYWJsZVJlbGF0aW9uSWQ7CisJbXlzZWxmLm9iamVjdElk ID0gcmV0dmFsOworCW15c2VsZi5vYmplY3RTdWJJZCA9IDA7CisKKwkvKiBkZXBlbmRlbmN5IG9u IG5hbWVzcGFjZSAqLworCXJlZmVyZW5jZWQuY2xhc3NJZCA9IE5hbWVzcGFjZVJlbGF0aW9uSWQ7 CisJcmVmZXJlbmNlZC5vYmplY3RJZCA9IHZhck5hbWVzcGFjZTsKKwlyZWZlcmVuY2VkLm9iamVj dFN1YklkID0gMDsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERF UEVOREVOQ1lfTk9STUFMKTsKKworCS8qIGRlcGVuZGVuY3kgb24gdXNlZCB0eXBlICovCisJcmVm ZXJlbmNlZC5jbGFzc0lkID0gVHlwZVJlbGF0aW9uSWQ7CisJcmVmZXJlbmNlZC5vYmplY3RJZCA9 IHZhclR5cGU7CisJcmVmZXJlbmNlZC5vYmplY3RTdWJJZCA9IDA7CisJcmVjb3JkRGVwZW5kZW5j eU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKiBkZXBl bmRlbmN5IG9uIGFueSByb2xlcyBtZW50aW9uZWQgaW4gQUNMICovCisJaWYgKHZhcmFjbCAhPSBO VUxMKQorCXsKKwkJaW50CQkJbm5ld21lbWJlcnM7CisJCU9pZAkJICAgKm5ld21lbWJlcnM7CisK KwkJbm5ld21lbWJlcnMgPSBhY2xtZW1iZXJzKHZhcmFjbCwgJm5ld21lbWJlcnMpOworCQl1cGRh dGVBY2xEZXBlbmRlbmNpZXMoVmFyaWFibGVSZWxhdGlvbklkLCByZXR2YWwsIDAsCisJCQkJCQkJ ICB2YXJPd25lciwKKwkJCQkJCQkgIDAsIE5VTEwsCisJCQkJCQkJICBubmV3bWVtYmVycywgbmV3 bWVtYmVycyk7CisJfQorCisJLyogZGVwZW5kZW5jeSBvbiBleHRlbnNpb24gKi8KKwlyZWNvcmRE ZXBlbmRlbmN5T25DdXJyZW50RXh0ZW5zaW9uKCZteXNlbGYsIGZhbHNlKTsKKworCS8qIHJlZ2lz dGVyIG9uIGNvbW1pdCBhY3Rpb24gaWYgaXQgaXMgbmVjZXNzYXJ5ICovCisJcmVnaXN0ZXJfdmFy aWFibGVfb25fY29tbWl0X2FjdGlvbihteXNlbGYub2JqZWN0SWQsIGVveGFjdGlvbik7CisKKwlo ZWFwX2ZyZWV0dXBsZSh0dXApOworCisJLyogUG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgZnVu Y3Rpb24gKi8KKwlJbnZva2VPYmplY3RQb3N0Q3JlYXRlSG9vayhWYXJpYWJsZVJlbGF0aW9uSWQs IHJldHZhbCwgMCk7CisKKwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwly ZXR1cm4gbXlzZWxmOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZp bGUgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRleCA0YTZjOTllMDkwLi4yY2I1 YjExNzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBPQkpTID0gYW1j bWRzLm8gYWdncmVnYXRlY21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5vIGFzeW5jLm8gY2x1c3Rlci5v IGNvbW1lbnQubyBcCiAJZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4ubyBleHRlbnNpb24ubyBmb3Jl aWduY21kcy5vIGZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMubyBsb2NrY21kcy5vIG1hdHZp ZXcubyBvcGVyYXRvcmNtZHMubyBvcGNsYXNzY21kcy5vIFwKIAlwb2xpY3kubyBwb3J0YWxjbWRz Lm8gcHJlcGFyZS5vIHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRzLm8gXAotCXNjaGVtYWNtZHMu byBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vic2NyaXB0aW9uY21kcy5vIFwK KwlzY2hlbWFjbWRzLm8gc2VjbGFiZWwubyBzZXF1ZW5jZS5vIHNjaGVtYXZhcmlhYmxlLm8gc3Rh dHNjbWRzLm8gc3Vic2NyaXB0aW9uY21kcy5vIFwKIAl0YWJsZWNtZHMubyB0YWJsZXNwYWNlLm8g dHJpZ2dlci5vIHRzZWFyY2hjbWRzLm8gdHlwZWNtZHMubyB1c2VyLm8gXAogCXZhY3V1bS5vIHZh Y3V1bWxhenkubyB2YXJpYWJsZS5vIHZpZXcubwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9hbHRlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRleCBlZmYz MjVjYzdkLi5hOWQ1ZTVlMGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRl ci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKQEAgLTM4Nyw2ICszODcsNyBA QCBFeGVjUmVuYW1lU3RtdChSZW5hbWVTdG10ICpzdG10KQogCQljYXNlIE9CSkVDVF9UU1RFTVBM QVRFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfU1VCU0NSSVBU SU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlPYmplY3RBZGRyZXNzIGFk ZHJlc3M7CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKQEAgLTUwNCw2ICs1MDUsNyBAQCBFeGVjQWx0 ZXJPYmplY3RTY2hlbWFTdG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJY2FzZSBP QkpFQ1RfVFNESUNUSU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKIAkJY2FzZSBPQkpF Q1RfVFNURU1QTEFURToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRp b24JY2F0YWxvZzsKIAkJCQlSZWxhdGlvbglyZWxhdGlvbjsKQEAgLTU5NCw2ICs1OTYsNyBAQCBB bHRlck9iamVjdE5hbWVzcGFjZV9vaWQoT2lkIGNsYXNzSWQsIE9pZCBvYmppZCwgT2lkIG5zcE9p ZCwKIAkJY2FzZSBPQ0xBU1NfVFNESUNUOgogCQljYXNlIE9DTEFTU19UU1RFTVBMQVRFOgogCQlj YXNlIE9DTEFTU19UU0NPTkZJRzoKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQl7CiAJCQkJ UmVsYXRpb24JY2F0YWxvZzsKIApAQCAtODUyLDYgKzg1NSw3IEBAIEV4ZWNBbHRlck93bmVyU3Rt dChBbHRlck93bmVyU3RtdCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfVEFCTEVTUEFDRToKIAkJY2Fz ZSBPQkpFQ1RfVFNESUNUSU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU0NPTkZJR1VSQVRJT046CisJ CWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAJCQkJ UmVsYXRpb24JcmVsYXRpb247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNj YXJkLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKaW5kZXggMDFhOTk5YzJhYy4u ZmVjMjQ5NWU5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYwpAQCAtMTksNiArMTksNyBAQAogI2lu Y2x1ZGUgImNvbW1hbmRzL2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hl bWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL3Bv cnRhbC5oIgogCkBAIC00OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNjYXJkU3RtdCAq c3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3BhY2UoKTsKIAkJ CWJyZWFrOwogCisJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNjaGVtYVZhcmlh YmxlQ2FjaGUoKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIERJU0NBUkQgdGFyZ2V0OiAlZCIsIHN0bXQtPnRhcmdldCk7CiAJfQpAQCAtNzUs NCArODAsNSBAQCBEaXNjYXJkQWxsKGJvb2wgaXNUb3BMZXZlbCkKIAlSZXNldFBsYW5DYWNoZSgp OwogCVJlc2V0VGVtcFRhYmxlTmFtZXNwYWNlKCk7CiAJUmVzZXRTZXF1ZW5jZUNhY2hlcygpOwor CVJlc2V0U2NoZW1hVmFyaWFibGVDYWNoZSgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCmluZGV4IGVlY2M4NWQxNGUuLjQyNmRmMjQ2YjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmMKQEAgLTEyNiw2ICsxMjYsNyBAQCBzdGF0aWMgZXZlbnRfdHJpZ2dlcl9z dXBwb3J0X2RhdGEgZXZlbnRfdHJpZ2dlcl9zdXBwb3J0W10gPSB7CiAJeyJURVhUIFNFQVJDSCBU RU1QTEFURSIsIHRydWV9LAogCXsiVFlQRSIsIHRydWV9LAogCXsiVVNFUiBNQVBQSU5HIiwgdHJ1 ZX0sCisJeyJWQVJJQUJMRSIsIHRydWV9LAogCXsiVklFVyIsIHRydWV9LAogCXtOVUxMLCBmYWxz ZX0KIH07CkBAIC0yOTcsNyArMjk4LDggQEAgY2hlY2tfZGRsX3RhZyhjb25zdCBjaGFyICp0YWcp CiAJCXBnX3N0cmNhc2VjbXAodGFnLCAiUkVWT0tFIikgPT0gMCB8fAogCQlwZ19zdHJjYXNlY21w KHRhZywgIkRST1AgT1dORUQiKSA9PSAwIHx8CiAJCXBnX3N0cmNhc2VjbXAodGFnLCAiSU1QT1JU IEZPUkVJR04gU0NIRU1BIikgPT0gMCB8fAotCQlwZ19zdHJjYXNlY21wKHRhZywgIlNFQ1VSSVRZ IExBQkVMIikgPT0gMCkKKwkJcGdfc3RyY2FzZWNtcCh0YWcsICJTRUNVUklUWSBMQUJFTCIpID09 IDAgfHwKKwkJcGdfc3RyY2FzZWNtcCh0YWcsICJDUkVBVEUgVkFSSUFCTEUiKSA9PSAwKQogCQly ZXR1cm4gRVZFTlRfVFJJR0dFUl9DT01NQU5EX1RBR19PSzsKIAogCS8qCkBAIC0xMTQ2LDYgKzEx NDgsNyBAQCBFdmVudFRyaWdnZXJTdXBwb3J0c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYnR5cGUp CiAJCWNhc2UgT0JKRUNUX1RTVEVNUExBVEU6CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCWNhc2Ug T0JKRUNUX1VTRVJfTUFQUElORzoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JK RUNUX1ZJRVc6CiAJCQlyZXR1cm4gdHJ1ZTsKIApAQCAtMTIwOSw2ICsxMjEyLDcgQEAgRXZlbnRU cmlnZ2VyU3VwcG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFzcykKIAkJY2FzZSBP Q0xBU1NfUFVCTElDQVRJT05fUkVMOgogCQljYXNlIE9DTEFTU19TVUJTQ1JJUFRJT046CiAJCWNh c2UgT0NMQVNTX1RSQU5TRk9STToKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQlyZXR1cm4g dHJ1ZTsKIAogCQkJLyoKQEAgLTIyNDQsNiArMjI0OCw4IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0 eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRSI7CiAJCWNhc2Ug T0JKRUNUX1RZUEU6CiAJCQlyZXR1cm4gIlRZUEUiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToK KwkJCXJldHVybiAiVkFSSUFCTEUiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2Vk ICovCiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FU RToKQEAgLTIzMjYsNiArMjMzMiw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmpl Y3RUeXBlIG9ianR5cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1Rf VFlQRToKIAkJCXJldHVybiAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJl dHVybiAiVkFSSUFCTEVTIjsKIAkJCS8qIHRoZXNlIGN1cnJlbnRseSBhcmVuJ3QgdXNlZCAqLwog CQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgogCQljYXNlIE9CSkVDVF9BR0dSRUdBVEU6CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wcmVwYXJlLmMKaW5kZXggYjk0NWIxNTU2YS4uZWI4YzA4YmFmMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYwpAQCAtMTUxLDYgKzE1MSw3IEBAIFByZXBhcmVRdWVyeShQcmVwYXJlU3Rt dCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJ Y2FzZSBDTURfVVBEQVRFOgogCQljYXNlIENNRF9ERUxFVEU6CisJCWNhc2UgQ01EX1BMQU5fVVRJ TElUWToKIAkJCS8qIE9LICovCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9zY2hlbWF2YXJpYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjNkMjFkZGRiZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hl bWF2YXJpYWJsZS5jCkBAIC0wLDAgKzEsNzUzIEBACisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNp bmNsdWRlICJtaXNjYWRtaW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNs dWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNp bmNsdWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5n LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X2NsYXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorI2luY2x1ZGUgImNv bW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIK KyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgorI2luY2x1ZGUgIm5vZGVz L2V4ZWNub2Rlcy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCisjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX2NvZXJjZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf dHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0 dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBPTiBDT01NSVQgYWN0 aW9uIGxpc3QKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT25Db21taXRJdGVtCit7CisJT2lkCQkJdmFy aWQ7CQkJLyogcmVsaWQgb2YgcmVsYXRpb24gKi8KKwlWYXJpYWJsZUVPWEFjdGlvbiBlb3hhY3Rp b247CS8qIHdoYXQgdG8gZG8gYXQgZW5kIG9mIHhhY3QgKi8KKwlUcmFuc2FjdGlvbklkIGNyZWF0 aW5nX3hpZDsKKworCS8qCisJICogSWYgdGhpcyBlbnRyeSB3YXMgY3JlYXRlZCBkdXJpbmcgdGhl IGN1cnJlbnQgdHJhbnNhY3Rpb24sCisJICogY3JlYXRpbmdfc3ViaWQgaXMgdGhlIElEIG9mIHRo ZSBjcmVhdGluZyBzdWJ4YWN0OyBpZiBjcmVhdGVkIGluIGEgcHJpb3IKKwkgKiB0cmFuc2FjdGlv biwgY3JlYXRpbmdfc3ViaWQgaXMgemVyby4gIElmIGRlbGV0ZWQgZHVyaW5nIHRoZSBjdXJyZW50 CisJICogdHJhbnNhY3Rpb24sIGRlbGV0aW5nX3N1YmlkIGlzIHRoZSBJRCBvZiB0aGUgZGVsZXRp bmcgc3VieGFjdDsgaWYgbm8KKwkgKiBkZWxldGlvbiByZXF1ZXN0IGlzIHBlbmRpbmcsIGRlbGV0 aW5nX3N1YmlkIGlzIHplcm8uCisJICovCisJU3ViVHJhbnNhY3Rpb25JZCBjcmVhdGluZ19zdWJp ZDsKKwlTdWJUcmFuc2FjdGlvbklkIGRlbGV0aW5nX3N1YmlkOworfSBPbkNvbW1pdEl0ZW07CisK K3N0YXRpYyBMaXN0ICpvbl9jb21taXRzID0gTklMOworCisvKgorICogVGhlIGNvbnRlbnQgb2Yg dmFyaWFibGVzIGlzIG5vdCB0cmFuc2FjdGlvbmFsLiBEdWUgdGhpcyBmYWN0IHRoZQorICogaW1w bGVtZW50YXRpb24gb2YgRFJPUCBjYW4gYmUgc2ltcGxlLCBiZWNhdXNlIGFsdGhvdWdoIERST1Ag VkFSSUFCTEUKKyAqIGNhbiBiZSByZXZlcnRlZCwgdGhlIGNvbnRlbnQgb2YgdmFyaWFibGUgY2Fu IGJlIGxvc3QuIEluIHRoaXMgZXhhbXBsZSwKKyAqIERST1AgVkFSSUFCTEUgaXMgc2FtZSBsaWtl IHJlc2V0IHZhcmlhYmxlLgorICovCisKK3R5cGVkZWYgc3RydWN0IFNjaGVtYVZhcmlhYmxlRGF0 YQoreworCU9pZAkJCXZhcmlkOwkJCS8qIHBnX3ZhcmlhYmxlIE9JRCBvZiB0aGlzIHNlcXVlbmNl IChoYXNoIGtleSkgKi8KKwlPaWQJCQl0eXBpZDsJCQkvKiBPSUQgb2YgdGhlIGRhdGEgdHlwZSAq LworCWludDMyCQl0eXBtb2Q7CisJaW50MTYJCXR5cGxlbjsKKwlib29sCQl0eXBieXZhbDsKKwli b29sCQlpc251bGw7CisJYm9vbAkJZnJlZXZhbDsKKwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNf cm93dHlwZTsJCS8qIHRydWUgd2hlbiB2YXJpYWJsZSBpcyBjb21wb3NpdGUgKi8KKwlib29sCQlp c192YWxpZDsJCS8qIHRydWUgd2hlbiB2YXJpYWJsZSB3YXMgc3VjY2Vzc2Z1bHkgaW5pdGlhbGl6 ZWQgKi8KK30gU2NoZW1hVmFyaWFibGVEYXRhOworCit0eXBlZGVmIFNjaGVtYVZhcmlhYmxlRGF0 YSAqU2NoZW1hVmFyaWFibGU7CisKK3N0YXRpYyBIVEFCICpzY2hlbWF2YXJoYXNodGFiID0gTlVM TDsJCS8qIGhhc2ggdGFibGUgZm9yIHNlc3Npb24gdmFyaWFibGVzICovCitzdGF0aWMgTWVtb3J5 Q29udGV4dCBTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQgPSBOVUxMOworCitzdGF0aWMgYm9v bCBmaXJzdF90aW1lID0gdHJ1ZTsKK3N0YXRpYyB2b2lkIGNyZWF0ZV9zY2hlbWF2YXJfaGFzaHRh YmxlKHZvaWQpOworc3RhdGljIGJvb2wgY2xlYW5fY2FjaGVfcmVxID0gZmFsc2U7CisKK3N0YXRp YyB2b2lkIGNsZWFuX2NhY2hlKHZvaWQpOworc3RhdGljIHZvaWQgZm9yY2VfY2xlYW5fY2FjaGUo WGFjdEV2ZW50IGV2ZW50LCB2b2lkICphcmcpOworc3RhdGljIHZvaWQgcmVtb3ZlX3ZhcmlhYmxl X29uX2NvbW1pdF9hY3Rpb25zKE9pZCB2YXJpZCk7CisKKworLyoKKyAqIFNhdmUgaW5mbyBhYm91 dCBuY2Vzc2l0eSB0byBjbGVhbiBoYXNoIHRhYmxlLCBiZWNhdXNlIHNvbWUKKyAqIHNjaGVtYSB2 YXJpYWJsZSB3YXMgZHJvcHBlZC4gRG9uJ3QgZG8gaGVyZSBtb3JlLCByZWNoZWNrCisgKiBuZWVk cyB0byBiZSBpbiB0cmFuc2FjdGlvbiBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK0ludmFsaWRh dGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCit7CisJaWYgKGNhY2hlaWQgIT0gVkFSSUFCTEVPSUQpCisJCXJldHVybjsKKwor CWNsZWFuX2NhY2hlX3JlcSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCitmb3JjZV9jbGVhbl9j YWNoZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIHNob3VsZCBjb250 aW51ZSBvbmx5IGluIHRyYW5zYWN0aW9uIHRpbWUsIHdoZW4KKwkgKiBzeXNjYWNoZSBpcyBhdmFp bGFibGUuCisJICovCisJaWYgKGNsZWFuX2NhY2hlX3JlcSAmJiBJc1RyYW5zYWN0aW9uU3RhdGUo KSkKKwl7CisJCWNsZWFuX2NhY2hlKCk7CisJCWNsZWFuX2NhY2hlX3JlcSA9IGZhbHNlOworCX0K K30KKworc3RhdGljIHZvaWQKK2NsZWFuX2NhY2hlKHZvaWQpCit7CisJSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKKwlTY2hlbWFWYXJpYWJsZQkJdmFyOworCisJaWYgKCFzY2hlbWF2YXJoYXNodGFi KQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNjaGVtYXZhcmhhc2h0YWIp OworCisJLyoKKwkgKiBFdmVyeSB2YWxpZCB2YXJpYWJsZSBoYXZlIHRvIGhhdmUgZW50cnkgaW4g c3lzdGVtCisJICogY2F0YWxvZy4gUmVtb3ZlZCBpZiB0aGVyZSBpcyBub3RoaW5nLgorCSAqLwor CXdoaWxlICgodmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJeworCQlIZWFwVHVwbGUJdHAgPSBJbnZhbGlkT2lkOworCisJCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhci0+dmFyaWQpKTsK KwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJeworCQkJZWxvZyhERUJVRzEsICJ2YXJp YWJsZSAlZCBpcyByZW1vdmVkIGZyb20gY2FjaGUiLCB2YXItPnZhcmlkKTsKKworCQkJaWYgKHZh ci0+ZnJlZXZhbCkKKwkJCXsKKwkJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFyLT52YWx1ZSkp OworCQkJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCQkJfQorCisJCQlpZiAoaGFzaF9zZWFyY2go c2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJKHZvaWQgKikgJnZhci0+dmFyaWQsCisJCQkJCQkJ CUhBU0hfUkVNT1ZFLAorCQkJCQkJCQlOVUxMKSA9PSBOVUxMKQorCQkJCWVsb2coREVCVUcxLCAi aGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKwkJfQorCQllbHNlCisJCQlSZWxlYXNlU3lzQ2FjaGUo dHApOworCX0KK30KKworLyoKKyAqIENsZWFuIHZhcmlhYmxlIGRlZmluZWQgYnkgdmFyaWQKKyAq Lworc3RhdGljIHZvaWQKK2NsZWFuX2NhY2hlX3ZhcmlkKE9pZCB2YXJpZCkKK3sKKwlTY2hlbWFW YXJpYWJsZQlzdmFyOworCWJvb2wJCQlmb3VuZDsKKworCWlmIChzY2hlbWF2YXJoYXNodGFiID09 IE5VTEwpCisJCXJldHVybjsKKworCXN2YXIgPSAoU2NoZW1hVmFyaWFibGUpIGhhc2hfc2VhcmNo KHNjaGVtYXZhcmhhc2h0YWIsICZ2YXJpZCwKKwkJCQkJCQkJCQkJICBIQVNIX0ZJTkQsICZmb3Vu ZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyogY2xlYW4gY29udGVudCwgaWYgaXQgaXMgbmVjZXNz YXJ5ICovCisJCWlmIChzdmFyLT5mcmVldmFsKQorCQkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKHN2 YXItPnZhbHVlKSk7CisKKwkJaWYgKGhhc2hfc2VhcmNoKHNjaGVtYXZhcmhhc2h0YWIsCisJCQkJ CQkJKHZvaWQgKikgJnN2YXItPnZhcmlkLAorCQkJCQkJCUhBU0hfUkVNT1ZFLAorCQkJCQkJCU5V TEwpID09IE5VTEwpCisJCQllbG9nKERFQlVHMSwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisK KwkJcmVtb3ZlX3ZhcmlhYmxlX29uX2NvbW1pdF9hY3Rpb25zKHZhcmlkKTsKKwl9Cit9CisKKy8q CisgKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIHN0b3Jpbmcgc2NoZW1hIHZhcmlhYmxlcwor ICovCitzdGF0aWMgdm9pZAorY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUodm9pZCkKK3sKKwlI QVNIQ1RMCQljdGw7CisKKwkvKiBzZXQgY2FsbGJhY2tzICovCisJaWYgKGZpcnN0X3RpbWUpCisJ eworCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhWQVJJQUJMRU9JRCwKKwkJCQkJCQkJ CSAgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2ssCisJCQkJCQkJCQkgIChEYXR1bSkg MCk7CisKKwkJUmVnaXN0ZXJYYWN0Q2FsbGJhY2soZm9yY2VfY2xlYW5fY2FjaGUsIE5VTEwpOwor CisJCWZpcnN0X3RpbWUgPSBmYWxzZTsKKwl9CisKKwkvKiBuZWVkcyBvd24gbG9uZyBsaWZlIG1l bW9yeSBjb250ZXh0ICovCisJaWYgKFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCA9PSBOVUxM KQorCXsKKwkJU2NoZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3Jl YXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkic2NoZW1hIHZhcmlhYmxlcyIs CisJCQkJCQkJCQkJCQkJCQlBTExPQ1NFVF9TVEFSVF9TTUFMTF9TSVpFUyk7CisJfQorCisJbWVt c2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwor CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2NoZW1hVmFyaWFibGVEYXRhKTsKKwljdGwuaGN4dCA9 IFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dDsKKworCXNjaGVtYXZhcmhhc2h0YWIgPSBoYXNo X2NyZWF0ZSgiU2NoZW1hIHZhcmlhYmxlcyIsIDY0LCAmY3RsLAorCQkJCQkJCQkJCUhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworfQorCisvKgorICogRmFzdCBkcm9wIGNv bXBsZXRlIGNvbnRlbnQgb2Ygc2NoZW1hIHZhcmlhYmxlcworICovCit2b2lkCitSZXNldFNjaGVt YVZhcmlhYmxlQ2FjaGUodm9pZCkKK3sKKwlpZiAoc2NoZW1hdmFyaGFzaHRhYikKKwl7CisJCWhh c2hfZGVzdHJveShzY2hlbWF2YXJoYXNodGFiKTsKKwkJc2NoZW1hdmFyaGFzaHRhYiA9IE5VTEw7 CisJfQorCisJaWYgKFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCAhPSBOVUxMKQorCXsKKwkJ TWVtb3J5Q29udGV4dFJlc2V0KFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCk7CisJfQorfQor CisvKgorICogRHJvcCB2YXJpYWJsZSBieSBPSUQKKyAqLwordm9pZAorUmVtb3ZlVmFyaWFibGVC eUlkKE9pZCB2YXJpZCkKK3sKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1cDsKKworCXJl bCA9IGhlYXBfb3BlbihWYXJpYWJsZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ dHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlk KSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJQ2F0YWxvZ1R1cGxl RGVsZXRlKHJlbCwgJnR1cC0+dF9zZWxmKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJ aGVhcF9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJLyogcmVtb3ZlIHZhcmlhYmxl IGZyb20gb25fY29tbWl0cyBsaXN0ICovCisJcmVtb3ZlX3ZhcmlhYmxlX29uX2NvbW1pdF9hY3Rp b25zKHZhcmlkKTsKK30KKworLyoKKyAqIENyZWF0ZXMgbmV3IHZhcmlhYmxlIC0gZW50cnkgaW4g cGdfY2F0YWxvZy5wZ192YXJpYWJsZSB0YWJsZQorICovCitPYmplY3RBZGRyZXNzCitEZWZpbmVT Y2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNjaGVtYVZhclN0bXQgKnN0 bXQpCit7CisJT2lkCQkJbmFtZXNwYWNlaWQ7CisJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlPaWQJ CQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCU9pZAkJCXZhcm93bmVyID0gR2V0VXNlcklkKCk7 CisJT2lkCQkJY29sbGF0aW9uOworCU9pZAkJCXR5cGNvbGxhdGlvbjsKKwlPYmplY3RBZGRyZXNz IHZhcmlhYmxlOworCisJTm9kZQkgICAqY29va2VkX2RlZmF1bHQgPSBOVUxMOworCisJLyoKKwkg KiBDaGVjayBjb25zaXN0ZW5jeSBvZiBhcmd1bWVudHMKKwkgKi8KKwlpZiAoc3RtdC0+ZW94YWN0 aW9uID09IFZBUklBQkxFX0VPWF9EUk9QCisJCQkmJiBzdG10LT52YXJpYWJsZS0+cmVscGVyc2lz dGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coIk9O IENPTU1JVCBEUk9QIGNhbiBvbmx5IGJlIHVzZWQgb24gdGVtcG9yYXJ5IHZhcmlhYmxlcyIpKSk7 CisKKwluYW1lc3BhY2VpZCA9CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFj ZShzdG10LT52YXJpYWJsZSwgTm9Mb2NrLCBOVUxMKTsKKworCXR5cGVuYW1lVHlwZUlkQW5kTW9k KHBzdGF0ZSwgc3RtdC0+dHlwZU5hbWUsICZ0eXBpZCwgJnR5cG1vZCk7CisJdHlwY29sbGF0aW9u ID0gZ2V0X3R5cGNvbGxhdGlvbih0eXBpZCk7CisKKwlhY2xyZXN1bHQgPSBwZ190eXBlX2FjbGNo ZWNrKHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFD TENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgdHlwaWQpOworCisJ aWYgKHN0bXQtPmNvbGxDbGF1c2UpCisJCWNvbGxhdGlvbiA9IExvb2t1cENvbGxhdGlvbihwc3Rh dGUsCisJCQkJCQkJCQlzdG10LT5jb2xsQ2xhdXNlLT5jb2xsbmFtZSwKKwkJCQkJCQkJCXN0bXQt PmNvbGxDbGF1c2UtPmxvY2F0aW9uKTsKKwllbHNlCisJCWNvbGxhdGlvbiA9IHR5cGNvbGxhdGlv bjs7CisKKwkvKiBDb21wbGFpbiBpZiBDT0xMQVRFIGlzIGFwcGxpZWQgdG8gYW4gdW5jb2xsYXRh YmxlIHR5cGUgKi8KKwlpZiAoT2lkSXNWYWxpZChjb2xsYXRpb24pICYmICFPaWRJc1ZhbGlkKHR5 cGNvbGxhdGlvbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRl ZCBieSB0eXBlICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHR5cGlkKSksCisJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmNvbGxDbGF1c2UtPmxvY2F0aW9uKSkpOworCisJ aWYgKHN0bXQtPmRlZmV4cHIpCisJeworCQljb29rZWRfZGVmYXVsdCA9IHRyYW5zZm9ybUV4cHIo cHN0YXRlLCBzdG10LT5kZWZleHByLAorCQkJCQkJCQkJCUVYUFJfS0lORF9WQVJJQUJMRV9ERUZB VUxUKTsKKworCQljb29rZWRfZGVmYXVsdCA9IGNvZXJjZV90b19zcGVjaWZpY190eXBlKHBzdGF0 ZSwKKwkJCQkJCQkJCQkJCSBjb29rZWRfZGVmYXVsdCwgdHlwaWQsICJERUZBVUxUIik7CisJCWFz c2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCBjb29rZWRfZGVmYXVsdCk7CisJfQorCisJdmFy aWFibGUgPSBWYXJpYWJsZUNyZWF0ZShzdG10LT52YXJpYWJsZS0+cmVsbmFtZSwKKwkJCQkJCSAg bmFtZXNwYWNlaWQsCisJCQkJCQkgIHR5cGlkLAorCQkJCQkJICB0eXBtb2QsCisJCQkJCQkgIHZh cm93bmVyLAorCQkJCQkJICBjb2xsYXRpb24sCisJCQkJCQkgIGNvb2tlZF9kZWZhdWx0LAorCQkJ CQkJICBzdG10LT5lb3hhY3Rpb24sCisJCQkJCQkgIHN0bXQtPmlmX25vdF9leGlzdHMpOworCisJ LyoKKwkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXds eS1jcmVhdGVkIHZhcmlhYmxlCisJICogdHVwbGUgdmlzaWJsZSBmb3IgYW55IG90aGVyIG9wZXJh dGlvbnMuCisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCXJldHVybiB2YXJp YWJsZTsKK30KKworLyoKKyAqIFRyeSB0byBzZWFyY2ggdmFsdWUgaW4gaGFzaCB0YWJsZS4gSWYg ZG9lc24ndAorICogZXhpc3RzIGluc2VydCBpdCAoYW5kIGNhbGN1bGF0ZSBkZWZleHByIGlmIGV4 aXN0cy4KKyAqLworc3RhdGljIFNjaGVtYVZhcmlhYmxlCitQcmVwYXJlU2NoZW1hVmFyaWFibGVG b3JSZWFkaW5nKE9pZCB2YXJpZCkKK3sKKwlTY2hlbWFWYXJpYWJsZQlzdmFyOworCVZhcmlhYmxl CSp2YXI7CisJYm9vbAkJCWZvdW5kOworCisJaWYgKHNjaGVtYXZhcmhhc2h0YWIgPT0gTlVMTCkK KwkJY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUoKTsKKworCXN2YXIgPSAoU2NoZW1hVmFyaWFi bGUpIGhhc2hfc2VhcmNoKHNjaGVtYXZhcmhhc2h0YWIsICZ2YXJpZCwKKwkJCQkJCQkJCQkJICBI QVNIX0VOVEVSLCAmZm91bmQpOworCWlmICghZm91bmQpCisJeworCQl2YXIgPSBHZXRWYXJpYWJs ZSh2YXJpZCwgZmFsc2UpOworCQlnZXRfdHlwbGVuYnl2YWwodmFyLT50eXBpZCwgJnN2YXItPnR5 cGxlbiwgJnN2YXItPnR5cGJ5dmFsKTsKKworCQlzdmFyLT52YXJpZCA9IHZhcmlkOworCQlzdmFy LT50eXBpZCA9IHZhci0+dHlwaWQ7CisJCXN2YXItPnR5cG1vZCA9IHZhci0+dHlwbW9kOworCQlz dmFyLT5pc251bGwgPSB0cnVlOworCQlzdmFyLT5mcmVldmFsID0gZmFsc2U7CisJCXN2YXItPnZh bHVlID0gKERhdHVtKSAwOworCQlzdmFyLT5pc19yb3d0eXBlID0gdHlwZV9pc19yb3d0eXBlKHZh ci0+dHlwaWQpOworCisJCS8qIHdoZW4gd2UgZG9uJ3QgbmVlZCBjYWxjdWxhdGUgZGVmZXhwciwg dmFsdWUgaXMgdmFsaWQgYWxyZWFkeSAqLworCQlzdmFyLT5pc192YWxpZCA9IHZhci0+ZGVmZXhw ciA/IGZhbHNlIDogdHJ1ZTsKKworCQlpZiAodmFyLT5lb3hhY3Rpb24gIT0gVkFSSUFCTEVfRU9Y X05PT1ApCisJCQlyZWdpc3Rlcl92YXJpYWJsZV9vbl9jb21taXRfYWN0aW9uKHZhcmlkLCB2YXIt PmVveGFjdGlvbik7CisJfQorCWVsc2UgaWYgKCFzdmFyLT5pc192YWxpZCkKKwl7CisJCS8qIHdl IG5lZWQgdmFyIHRvIHJlY2FsY3VsYXRlIGRlZmV4cHIgKi8KKwkJdmFyID0gR2V0VmFyaWFibGUo dmFyaWQsIGZhbHNlKTsKKwl9CisJZWxzZQorCQkvKiB3ZSBkb24ndCBuZWVkIHRvIGdvIHRvIHN5 cyBjYWNoZSAqLworCQl2YXIgPSBOVUxMOworCisJLyoKKwkgKiBJbml0aWFsaXplIHZhcmlhYmxl IHdoZW4gaXQgaXMgbmVjZXNzYXJ5LiBJdCBpcyBmcmVzaAorCSAqIG9yIGxhc3QgaW5pdGlhbGl6 YXRpb24gd2FzIG5vdCBzdWNjZXNzZnVsbC4KKwkgKi8KKwlpZiAodmFyICE9IE5VTEwgJiYgdmFy LT5kZWZleHByICYmICFzdmFyLT5pc192YWxpZCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29u dGV4dCA9IE5VTEw7CisKKwkJRGF0dW0JICAgdmFsdWUgPSAoRGF0dW0pIDA7CisJCWJvb2wJICAg bnVsbDsKKwkJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOworCQlFeHByCSAgICpkZWZleHByOwor CQlFeHByU3RhdGUgICpkZWZleHByczsKKworCQkvKiBQcmVwYXJlIGRlZmF1bHQgZXhwciAqLwor CQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJCWRlZmV4cHIgPSBleHBy ZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgdmFyLT5kZWZleHByKTsKKwkJZGVmZXhwcnMgPSBFeGVj SW5pdEV4cHIoZGVmZXhwciwgTlVMTCk7CisJCXZhbHVlID0gRXhlY0V2YWxFeHByU3dpdGNoQ29u dGV4dChkZWZleHBycywgR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLCAmbnVsbCk7CisK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCk7CisK KwkJaWYgKCFudWxsKQorCQl7CisJCQlzdmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwgc3Zh ci0+dHlwYnl2YWwsIHN2YXItPnR5cGxlbik7CisJCQlzdmFyLT5mcmVldmFsID0gc3Zhci0+dmFs dWUgIT0gdmFsdWU7CisJCQlzdmFyLT5pc251bGwgPSBmYWxzZTsKKwkJCXN2YXItPmlzX3ZhbGlk ID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCQlz dmFyLT5pc192YWxpZCA9IHRydWU7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CisKKwkJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwl9CisKKwlpZiAoIXN2 YXItPmlzX3ZhbGlkKQorCQllbG9nKEVSUk9SLCAidGhlIGNvbnRlbnQgb2YgdmFyaWFibGUgaXMg bm90IHZhbGlkIik7CisKKwlyZXR1cm4gc3ZhcjsKK30KKworLyoKKyAqIFJldHVybnMgY29udGVu dCBvZiB2YXJpYWJsZS4gV2UgZXhwZXh0IHNlY3VyZWQgYWNjZXNzIG5vdy4KKyAqIFNlY3VyZSBj aGVjayBzaG91bGQgYmUgZG9uZSBiZWZvcmUuCisgKi8KK0RhdHVtCitHZXRTY2hlbWFWYXJpYWJs ZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIGV4cGVjdGVkX3R5cGlkLCBib29sIGNvcHkp Cit7CisJU2NoZW1hVmFyaWFibGUJc3ZhcjsKKwlEYXR1bQkJCXZhbHVlOworCWJvb2wJCQlpc251 bGw7CisKKwlzdmFyID0gUHJlcGFyZVNjaGVtYVZhcmlhYmxlRm9yUmVhZGluZyh2YXJpZCk7CisJ QXNzZXJ0KHN2YXIgIT0gTlVMTCk7CisKKwlpZiAoZXhwZWN0ZWRfdHlwaWQgIT0gc3Zhci0+dHlw aWQpCisJCWVsb2coRVJST1IsICJ0eXBlIG9mIHZhcmlhYmxlIFwiJXNcIiBpcyBkaWZmZXJlbnQg dGhhbiBleHBlY3RlZCIsCisJCQkJICAgc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSk7 CisKKwl2YWx1ZSA9IHN2YXItPnZhbHVlOworCWlzbnVsbCA9IHN2YXItPmlzbnVsbDsKKworCSpp c051bGwgPSBpc251bGw7CisKKwlpZiAoIWlzbnVsbCAmJiBjb3B5KQorCQlyZXR1cm4gZGF0dW1D b3B5KHZhbHVlLCBzdmFyLT50eXBieXZhbCwgc3Zhci0+dHlwbGVuKTsKKworCXJldHVybiB2YWx1 ZTsKK30KKworLyoKKyAqIFJldHVybnMgY29weSBvZiB2YWx1ZSBzcGVjaWZpZWQgc2NoZW1hIHZh cmlhYmxlCisgKi8KK0RhdHVtCitDb3B5U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICpp c051bGwsIE9pZCAqdHlwaWQpCit7CisJU2NoZW1hVmFyaWFibGUJc3ZhcjsKKworCXN2YXIgPSBQ cmVwYXJlU2NoZW1hVmFyaWFibGVGb3JSZWFkaW5nKHZhcmlkKTsKKwlBc3NlcnQoc3ZhciAhPSBO VUxMKTsKKworCSppc051bGwgPSBzdmFyLT5pc251bGw7CisJKnR5cGlkID0gc3Zhci0+dHlwaWQ7 CisKKwlpZiAoIXN2YXItPmlzbnVsbCkKKwkJcmV0dXJuIGRhdHVtQ29weShzdmFyLT52YWx1ZSwg c3Zhci0+dHlwYnl2YWwsIHN2YXItPnR5cGxlbik7CisKKwlyZXR1cm4gKERhdHVtKSAwOworfQor CisvKgorICogV3JpdGUgdmFsdWUgdG8gdmFyaWFibGUuIFdlIGV4cGVjdCBzZWN1cmVkIGFjY2Vz cyBpbiB0aGlzIG1vbWVudC4KKyAqIEluIHRoaXMgdGltZSwgd2UgcmVjaGVjayBzeXNjaGFjaGUg YWJvdXQgdXNlZCB0eXBlLgorICovCit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQs IERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpCit7CisJ TWVtb3J5Q29udGV4dCBvbGRjb250ZXh0ID0gTlVMTDsKKworCVNjaGVtYVZhcmlhYmxlIHN2YXI7 CisJT2lkCQkJdmFyX3R5cGlkOworCWludDMyCQl2YXJfdHlwbW9kOworCU9pZAkJCXZhcl9jb2xs aWQ7CisJYm9vbAkJZm91bmQ7CisKKwlpZiAoc2NoZW1hdmFyaGFzaHRhYiA9PSBOVUxMKQorCQlj cmVhdGVfc2NoZW1hdmFyX2hhc2h0YWJsZSgpOworCisJc3ZhciA9IChTY2hlbWFWYXJpYWJsZSkg aGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwgJnZhcmlkLAorCQkJCQkJCQkJCQkgIEhBU0hf RU5URVIsICZmb3VuZCk7CisKKwlnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxp ZCh2YXJpZCwKKwkJCQkJCQkJCQkgICAmdmFyX3R5cGlkLAorCQkJCQkJCQkJCSAgICZ2YXJfdHlw bW9kLAorCQkJCQkJCQkJCSAgICZ2YXJfY29sbGlkKTsKKworCS8qIGNoZWNrIHR5cGVzIGZpcnN0 ICovCisJaWYgKHZhcl90eXBpZCAhPSB0eXBpZCkKKwkJZWxvZyhFUlJPUiwgInR5cGUgb2YgZXhw cmVzc2lvbiBpcyBkaWZmZXJlbnQgdGhhbiBzY2hlbWEgdmFyaWFibGUgdHlwZSIpOworCisJaWYg KGZvdW5kKQorCXsKKwkJLyogcmVsZWFzZSBjdXJyZW50IGNvbnRlbnQgZmlyc3QgKi8KKwkJaWYg KHN2YXItPmZyZWV2YWwpCisJCXsKKwkJCXBmcmVlKERhdHVtR2V0UG9pbnRlcihzdmFyLT52YWx1 ZSkpOworCQkJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJCQlzdmFyLT5pc251bGwgPSB0cnVl OworCQkJc3Zhci0+ZnJlZXZhbCA9IGZhbHNlOworCQl9CisJfQorCWVsc2UKKwl7CisJCVZhcmlh YmxlICp2YXIgPSBHZXRWYXJpYWJsZSh2YXJpZCwgZmFsc2UpOworCisJCXJlZ2lzdGVyX3Zhcmlh YmxlX29uX2NvbW1pdF9hY3Rpb24odmFyaWQsIHZhci0+ZW94YWN0aW9uKTsKKwl9CisKKwlnZXRf dHlwbGVuYnl2YWwodHlwaWQsICZzdmFyLT50eXBsZW4sICZzdmFyLT50eXBieXZhbCk7CisKKwlz dmFyLT52YXJpZCA9IHZhcmlkOworCXN2YXItPnR5cGlkID0gdHlwaWQ7CisJc3Zhci0+dHlwbW9k ID0gdHlwbW9kOworCisJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwlzdmFyLT5mcmVldmFsID0gZmFs c2U7CisJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisKKwlzdmFyLT5pc19yb3d0eXBlID0gdHlw ZV9pc19yb3d0eXBlKHR5cGlkKTsKKwlzdmFyLT5pc192YWxpZCA9IGZhbHNlOworCisJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQp OworCisJaWYgKCFpc051bGwpCisJeworCQlzdmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwg c3Zhci0+dHlwYnl2YWwsIHN2YXItPnR5cGxlbik7CisJCXN2YXItPmZyZWV2YWwgPSBzdmFyLT52 YWx1ZSAhPSB2YWx1ZTsKKwkJc3Zhci0+aXNudWxsID0gZmFsc2U7CisJCXN2YXItPmlzX3ZhbGlk ID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwkJc3Zhci0+ aXNfdmFsaWQgPSB0cnVlOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0 KTsKK30KKworLyoKKyAqIFJlc2V0IHRvIGRlZmF1bHQgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJs ZQorICovCit2b2lkCitkb0xldFN0bXRSZXNldChQbGFubmVkU3RtdCAqcHN0bXQpCit7CisJY2xl YW5fY2FjaGVfdmFyaWQocHN0bXQtPnJlc3VsdFZhcmlhYmxlKTsKK30KKworLyoKKyAqIEFzc2ln biByZXN1bHQgb2YgZXZhbHVhdGVkIGV4cHJlc3Npb24gdG8gc2NoZW1hIHZhcmlhYmxlCisgKi8K K3ZvaWQKK2RvTGV0U3RtdEV2YWwoUGxhbm5lZFN0bXQgKnBzdG10LAorCQkgIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAorCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkgIGNvbnN0IGNo YXIgKnF1ZXJ5U3RyaW5nKQoreworCVF1ZXJ5RGVzYyAqcXVlcnlEZXNjOworCURlc3RSZWNlaXZl ciAqZGVzdDsKKworCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwlV cGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOworCisJLyogQ3JlYXRlIGRlc3QgcmVjZWl2 ZXIgZm9yIExFVCAqLworCWRlc3QgPSBDcmVhdGVEZXN0UmVjZWl2ZXIoRGVzdFZhcmlhYmxlKTsK KworCVNldFZhcmlhYmxlRGVzdFJlY2VpdmVyUGFyYW1zKGRlc3QsIHBzdG10LT5yZXN1bHRWYXJp YWJsZSk7CisKKwkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8K KwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocHN0bXQsIHF1ZXJ5U3RyaW5nLAorCQkJCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAorCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCisJ CQkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOworCisJRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIDApOworCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rp b24sIDJMLCB0cnVlKTsKKwlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOworCUV4ZWN1dG9yRW5k KHF1ZXJ5RGVzYyk7CisKKwlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisKKwlQb3BBY3RpdmVT bmFwc2hvdCgpOworfQorCisvKgorICogUmVnaXN0ZXIgYSBuZXdseS1jcmVhdGVkIHJlbGF0aW9u J3MgT04gQ09NTUlUIGFjdGlvbi4KKyAqLwordm9pZAorcmVnaXN0ZXJfdmFyaWFibGVfb25fY29t bWl0X2FjdGlvbihPaWQgdmFyaWQsIFZhcmlhYmxlRU9YQWN0aW9uIGFjdGlvbikKK3sKKwlPbkNv bW1pdEl0ZW0gKm9jOworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJLyoKKwkgKiBXZSBuZWVk bid0IGJvdGhlciByZWdpc3RlcmluZyB0aGUgcmVsYXRpb24gdW5sZXNzIHRoZXJlIGlzIGFuIE9O IENPTU1JVAorCSAqIGFjdGlvbiB3ZSBuZWVkIHRvIHRha2UuCisJICovCisJaWYgKGFjdGlvbiA9 PSBWQVJJQUJMRV9FT1hfTk9PUCkKKwkJcmV0dXJuOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29udGV4dCk7CisKKwlvYyA9IChPbkNvbW1pdEl0ZW0gKikg cGFsbG9jKHNpemVvZihPbkNvbW1pdEl0ZW0pKTsKKwlvYy0+dmFyaWQgPSB2YXJpZDsKKwlvYy0+ ZW94YWN0aW9uID0gYWN0aW9uOworCW9jLT5jcmVhdGluZ19zdWJpZCA9IEdldEN1cnJlbnRTdWJU cmFuc2FjdGlvbklkKCk7CisJb2MtPmRlbGV0aW5nX3N1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0 aW9uSWQ7CisKKwlvbl9jb21taXRzID0gbGNvbnMob2MsIG9uX2NvbW1pdHMpOworCisJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBSZW1vdmUgdmFyaWFibGUgZnJv bSBvbl9jb21taXRzIGFjdGlvbgorICovCitzdGF0aWMgdm9pZAorcmVtb3ZlX3ZhcmlhYmxlX29u X2NvbW1pdF9hY3Rpb25zKE9pZCB2YXJpZCkKK3sKKwlMaXN0Q2VsbAkgICAqbDsKKworCWZvcmVh Y2gobCwgb25fY29tbWl0cykKKwl7CisJCU9uQ29tbWl0SXRlbSAqb2MgPSAoT25Db21taXRJdGVt ICopIGxmaXJzdChsKTsKKworCQlpZiAob2MtPnZhcmlkID09IHZhcmlkKQorCQl7CisJCQlvYy0+ ZGVsZXRpbmdfc3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpOworCQl9CisJfQor fQorCisvKgorICogUGVyZm9ybSBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQgb3IgT04gQ09NTUlU IERST1AKKyAqLwordm9pZAorQXRQcmVFT1hhY3RfU2NoZW1hVmFyaWFibGVfb25fY29tbWl0X2Fj dGlvbnMoYm9vbCBpc0NvbW1pdCkKK3sKKwlMaXN0Q2VsbAkgICAqbDsKKworCWZvcmVhY2gobCwg b25fY29tbWl0cykKKwl7CisJCU9uQ29tbWl0SXRlbSAqb2MgPSAoT25Db21taXRJdGVtICopIGxm aXJzdChsKTsKKworCQkvKiBJZ25vcmUgZW50cnkgaWYgYWxyZWFkeSBkcm9wcGVkIGluIHRoaXMg eGFjdCAqLworCQlpZiAob2MtPmRlbGV0aW5nX3N1YmlkICE9IEludmFsaWRTdWJUcmFuc2FjdGlv bklkKQorCQkJY29udGludWU7CisKKwkJc3dpdGNoIChvYy0+ZW94YWN0aW9uKQorCQl7CisJCQlj YXNlIFZBUklBQkxFX0VPWF9OT09QOgorCQkJCS8qIERvIG5vdGhpbmcgKi8KKwkJCQlicmVhazsK KwkJCWNhc2UgVkFSSUFCTEVfRU9YX1JFU0VUOgorCQkJCWNsZWFuX2NhY2hlX3ZhcmlkKG9jLT52 YXJpZCk7CisJCQkJYnJlYWs7CisJCQljYXNlIFZBUklBQkxFX0VPWF9EUk9QOgorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogT04gQ09NTUlUIERST1AgaXMgYWxsb3dlZCBvbmx5IGZvciB0ZW1wIHNj aGVtYSB2YXJpYWJsZXMuCisJCQkJCSAqIFNvIHdlIHNob3VsZCBleHBsaWNpdCBkZWxldGUgb25s eSB3aGVuIGN1cnJlbnQgdHJhbnNhY3Rpb24KKwkJCQkJICogd2FzIGNvbW1pdHRlZC4gV2hlbiBp cyByb2xsYmFjaywgdGhlbiBzY2hlbWEgdmFyaWFibGUgaXMKKwkJCQkJICogcmVtb3ZlZCBhdXRv bWF0aWNhbGx5LgorCQkJCQkgKi8KKwkJCQkJaWYgKGlzQ29tbWl0KQorCQkJCQl7CisJCQkJCQlP YmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkJCQkJb2JqZWN0LmNsYXNzSWQgPSBWYXJpYWJsZVJl bGF0aW9uSWQ7CisJCQkJCQlvYmplY3Qub2JqZWN0SWQgPSBvYy0+dmFyaWQ7CisJCQkJCQlvYmpl Y3Qub2JqZWN0U3ViSWQgPSAwOworCisJCQkJCQkvKgorCQkJCQkJICogU2luY2UgdGhpcyBpcyBh biBhdXRvbWF0aWMgZHJvcCwgcmF0aGVyIHRoYW4gb25lCisJCQkJCQkgKiBkaXJlY3RseSBpbml0 aWF0ZWQgYnkgdGhlIHVzZXIsIHdlIHBhc3MgdGhlCisJCQkJCQkgKiBQRVJGT1JNX0RFTEVUSU9O X0lOVEVSTkFMIGZsYWcuCisJCQkJCQkgKi8KKwkJCQkJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0 LAorCQkJCQkJCQkJCURST1BfQ0FTQ0FERSwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CisJ CQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKKy8qCisgKiBQb3N0LWNvbW1p dCBvciBwb3N0LWFib3J0IGNsZWFudXAgZm9yIE9OIENPTU1JVCBtYW5hZ2VtZW50LgorICoKKyAq IEFsbCB3ZSBkbyBoZXJlIGlzIHJlbW92ZSBuby1sb25nZXItbmVlZGVkIE9uQ29tbWl0SXRlbSBl bnRyaWVzLgorICoKKyAqIER1cmluZyBjb21taXQsIHJlbW92ZSBlbnRyaWVzIHRoYXQgd2VyZSBk ZWxldGVkIGR1cmluZyB0aGlzIHRyYW5zYWN0aW9uOworICogZHVyaW5nIGFib3J0LCByZW1vdmUg dGhvc2UgY3JlYXRlZCBkdXJpbmcgdGhpcyB0cmFuc2FjdGlvbi4KKyAqLwordm9pZAorQXRFT1hh Y3RfU2NoZW1hVmFyaWFibGVfb25fY29tbWl0X2FjdGlvbnMoYm9vbCBpc0NvbW1pdCkKK3sKKwlM aXN0Q2VsbCAgICpjdXJfaXRlbTsKKwlMaXN0Q2VsbCAgICpwcmV2X2l0ZW07CisKKwlwcmV2X2l0 ZW0gPSBOVUxMOworCWN1cl9pdGVtID0gbGlzdF9oZWFkKG9uX2NvbW1pdHMpOworCisJd2hpbGUg KGN1cl9pdGVtICE9IE5VTEwpCisJeworCQlPbkNvbW1pdEl0ZW0gKm9jID0gKE9uQ29tbWl0SXRl bSAqKSBsZmlyc3QoY3VyX2l0ZW0pOworCisJCWlmIChpc0NvbW1pdCA/IG9jLT5kZWxldGluZ19z dWJpZCAhPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCA6CisJCQlvYy0+Y3JlYXRpbmdfc3ViaWQg IT0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpCisJCXsKKwkJCS8qIGN1cl9pdGVtIG11c3QgYmUg cmVtb3ZlZCAqLworCQkJb25fY29tbWl0cyA9IGxpc3RfZGVsZXRlX2NlbGwob25fY29tbWl0cywg Y3VyX2l0ZW0sIHByZXZfaXRlbSk7CisJCQlwZnJlZShvYyk7CisJCQlpZiAocHJldl9pdGVtKQor CQkJCWN1cl9pdGVtID0gbG5leHQocHJldl9pdGVtKTsKKwkJCWVsc2UKKwkJCQljdXJfaXRlbSA9 IGxpc3RfaGVhZChvbl9jb21taXRzKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCW9jLT5jcmVhdGlu Z19zdWJpZCA9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkOworCQkJb2MtPmRlbGV0aW5nX3N1Ymlk ID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisJCQlwcmV2X2l0ZW0gPSBjdXJfaXRlbTsKKwkJ CWN1cl9pdGVtID0gbG5leHQocHJldl9pdGVtKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKaW5kZXggZTk2NTEyZTA1MS4uMGJkOWIyNDBiNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTk2NTUsNiArOTY1NSw3IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCWNhc2UgT0NMQVNTX1BVQkxJQ0FU SU9OX1JFTDoKIAkJCWNhc2UgT0NMQVNTX1NVQlNDUklQVElPTjoKIAkJCWNhc2UgT0NMQVNTX1RS QU5TRk9STToKKwkJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgogCiAJCQkJLyoKIAkJCQkgKiBXZSBk b24ndCBleHBlY3QgYW55IG9mIHRoZXNlIHNvcnRzIG9mIG9iamVjdHMgdG8gZGVwZW5kIG9uCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL01ha2VmaWxlCmluZGV4IGNjMDk4OTVmYTUuLmVlOGZmN2RhOWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L01ha2VmaWxlCkBAIC0yOSw2ICsyOSw2IEBAIE9CSlMgPSBleGVjQW1pLm8gZXhlY0N1cnJlbnQu byBleGVjRXhwci5vIGV4ZWNFeHBySW50ZXJwLm8gXAogICAgICAgIG5vZGVDdGVzY2FuLm8gbm9k ZU5hbWVkdHVwbGVzdG9yZXNjYW4ubyBub2RlV29ya3RhYmxlc2Nhbi5vIFwKICAgICAgICBub2Rl R3JvdXAubyBub2RlU3VicGxhbi5vIG5vZGVTdWJxdWVyeXNjYW4ubyBub2RlVGlkc2Nhbi5vIFwK ICAgICAgICBub2RlRm9yZWlnbnNjYW4ubyBub2RlV2luZG93QWdnLm8gdHN0b3JlUmVjZWl2ZXIu byB0cXVldWUubyBzcGkubyBcCi0gICAgICAgbm9kZVRhYmxlRnVuY3NjYW4ubworICAgICAgIG5v ZGVUYWJsZUZ1bmNzY2FuLm8gc3ZhcmlhYmxlUmVjZWl2ZXIubwogCiBpbmNsdWRlICQodG9wX3Ny Y2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCBl Mjg0ZmQ3MWQ3Li42YWQ5NTAyOGNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTMzLDYg KzMzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9v YmplY3RhY2Nlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJj b21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgi CkBAIC03MzYsNiArNzM3LDU2IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3Rh dGUgKnN0YXRlLAogCQkJCQkJc2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJh bXR5cGU7CiAJCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJCQli cmVhazsKKworCQkJCQljYXNlIFBBUkFNX1ZBUklBQkxFOgorCQkJCQkJeworCQkJCQkJCWludAkJ CWVzX251bV9zY2hlbWFfdmFyaWFibGVzID0gMDsKKwkJCQkJCQlTY2hlbWFWYXJpYWJsZVZhbHVl ICplc19zY2hlbWFfdmFyaWFibGVzID0gTlVMTDsKKworCQkJCQkJCWlmIChzdGF0ZS0+cGFyZW50 ICYmIHN0YXRlLT5wYXJlbnQtPnN0YXRlKQorCQkJCQkJCXsKKwkJCQkJCQkJZXNfc2NoZW1hX3Zh cmlhYmxlcyA9IHN0YXRlLT5wYXJlbnQtPnN0YXRlLT5lc19zY2hlbWFfdmFyaWFibGVzOworCQkJ CQkJCQllc19udW1fc2NoZW1hX3ZhcmlhYmxlcyA9IHN0YXRlLT5wYXJlbnQtPnN0YXRlLT5lc19u dW1fc2NoZW1hX3ZhcmlhYmxlczsKKwkJCQkJCQl9CisKKwkJCQkJCQkvKgorCQkJCQkJCSAqIFdl IHNob3VsZCB0byB1c2Ugc2NoZW1hIHZhcmlhYmxlIGJ1ZmZlciwgd2hlbiBpdCBpcworCQkJCQkJ CSAqIGF2YWlsYWJsZS4KKwkJCQkJCQkgKi8KKwkJCQkJCQlpZiAoZXNfc2NoZW1hX3ZhcmlhYmxl cykKKwkJCQkJCQl7CisJCQkJCQkJCVNjaGVtYVZhcmlhYmxlVmFsdWUgKnZhcjsKKworCQkJCQkJ CQkvKiBjaGVjayBwYXJhbXMsIHVuZXhwZWN0ZWQgKi8KKwkJCQkJCQkJaWYgKHBhcmFtLT5wYXJh bWlkID49IGVzX251bV9zY2hlbWFfdmFyaWFibGVzKQorCQkJCQkJCQkJZWxvZyhFUlJPUiwgInBh cmFtaWQgb2YgUEFSQU1fVkFSSUFCTEUgcGFyYW0gaXMgb3V0IG9mIHJhbmdlIik7CisKKwkJCQkJ CQkJdmFyID0gJmVzX3NjaGVtYV92YXJpYWJsZXNbcGFyYW0tPnBhcmFtaWRdOworCisJCQkJCQkJ CS8qIHVuZXhwZWN0ZWQgKi8KKwkJCQkJCQkJaWYgKHZhci0+dHlwaWQgIT0gcGFyYW0tPnBhcmFt dHlwZSkKKwkJCQkJCQkJCWVsb2coRVJST1IsICJ0eXBlIG9mIGJ1ZmZlcmVkIHZhbHVlIGlzIGRp ZmZlcmVudCB0aGFuIFBBUkFNX1ZBUklBQkxFIHR5cGUiKTsKKworCQkJCQkJCQkvKiBJbiB0aGlz IGNhc2UsIHRoZSBwYXJhbWV0ZXIgaXMgbGlrZSBhIGNvbnN0YW50ICovCisJCQkJCQkJCXNjcmF0 Y2gub3Bjb2RlID0gRUVPUF9DT05TVDsKKwkJCQkJCQkJc2NyYXRjaC5kLmNvbnN0dmFsLnZhbHVl ID0gdmFyLT52YWx1ZTsKKwkJCQkJCQkJc2NyYXRjaC5kLmNvbnN0dmFsLmlzbnVsbCA9IHZhci0+ aXNudWxsOworCQkJCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJ CQkJfQorCQkJCQkJCWVsc2UKKwkJCQkJCQl7CisJCQkJCQkJCS8qCisJCQkJCQkJCSAqIFdoZW4g d2UgaGF2ZSBub3QgYSBmdWxsIFBsYW5TdGF0ZSAocGxwZ3NxbCBzaW1wbGUKKwkJCQkJCQkJICog ZXhwciBldmFsdWF0aW9uLCB0aGVuIHdlIHNob3VsZCB0byB1c2UgZGlyZWN0IGFjY2Vzcy4KKwkJ CQkJCQkJICovCisJCQkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9QQVJBTV9WQVJJQUJMRTsK KwkJCQkJCQkJc2NyYXRjaC5kLnZwYXJhbS52YXJpZCA9IHBhcmFtLT5wYXJhbXZhcmlkOworCQkJ CQkJCQlzY3JhdGNoLmQudnBhcmFtLnZhcnR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOworCQkJCQkJ CQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJCQkJfQorCQkJCQkJfQor CQkJCQkJYnJlYWs7CisKIAkJCQkJY2FzZSBQQVJBTV9FWFRFUk46CiAKIAkJCQkJCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA5ZDZlMjVhYWU1Li41ZGMyMmVlMWM3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTU5LDYgKzU5LDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MvdHVwdG9hc3Rlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlw ZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv c2NoZW1hdmFyaWFibGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAtMzUx LDYgKzM1Miw3IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0 ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkmJkNBU0VfRUVPUF9QQVJBTV9FWEVDLAogCQkm JkNBU0VfRUVPUF9QQVJBTV9FWFRFUk4sCiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0NBTExCQUNLLAor CQkmJkNBU0VfRUVPUF9QQVJBTV9WQVJJQUJMRSwKIAkJJiZDQVNFX0VFT1BfQ0FTRV9URVNUVkFM LAogCQkmJkNBU0VfRUVPUF9NQUtFX1JFQURPTkxZLAogCQkmJkNBU0VfRUVPUF9JT0NPRVJDRSwK QEAgLTEwMDcsNiArMTAwOSwxNiBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBF eHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0K IAorCQlFRU9fQ0FTRShFRU9QX1BBUkFNX1ZBUklBQkxFKQorCQl7CisJCQkvKiBkaXJlY3QgYWNj ZXNzIHRvIHNjaGVtYSB2YXJpYWJsZSAod2l0aG91dCBidWZmZXJpbmcpICovCisJCQkqb3AtPnJl c3ZhbHVlID0gR2V0U2NoZW1hVmFyaWFibGUob3AtPmQudnBhcmFtLnZhcmlkLAorCQkJCQkJCQkJ CQkJCSAgb3AtPnJlc251bGwsCisJCQkJCQkJCQkJCQkJICBvcC0+ZC52cGFyYW0udmFydHlwZSwK KwkJCQkJCQkJCQkJCQkgIHRydWUpOworCQkJRUVPX05FWFQoKTsKKwkJfQorCiAJCUVFT19DQVNF KEVFT1BfQ0FTRV9URVNUVkFMKQogCQl7CiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggYzU4M2UwMjBhMC4uNzBkMWZjZGFhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC00 Myw5ICs0MywxMiBAQAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcu aCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2No ZW1hdmFyaWFibGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcuaCIKKyNpbmNsdWRl ICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBp LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAg LTE5OSwxNyArMjAyLDY1IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpCiAKIAllc3RhdGUtPmVzX3NvdXJjZVRleHQgPSBxdWVyeURlc2Mt PnNvdXJjZVRleHQ7CiAKKwkvKgorCSAqIFByZXBhcmUgc2NoZW1hIHZhcmlhYmxlcywgaWYgYXJl IG5vdCBwcmVwYXJlZCBpbiBxdWVyeURlc2MKKwkgKi8KKwlpZiAocXVlcnlEZXNjLT5udW1fc2No ZW1hX3ZhcmlhYmxlcyA+IDApCisJeworCQkvKiBXaGVuIGJ1ZmZlciBvZiB1c2VkIHNjaGVtYSB2 YXJpYWJsZXMgbG9hZGVkIGZyb20gc2hhcmVkIG1lbW9yeSAqLworCQllc3RhdGUtPmVzX3NjaGVt YV92YXJpYWJsZXMgPSBxdWVyeURlc2MtPnNjaGVtYV92YXJpYWJsZXM7CisJCWVzdGF0ZS0+ZXNf bnVtX3NjaGVtYV92YXJpYWJsZXMgPSBxdWVyeURlc2MtPm51bV9zY2hlbWFfdmFyaWFibGVzOwor CX0KKwllbHNlIGlmIChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5zY2hlbWFWYXJpYWJsZXMpCisJ eworCQlMaXN0Q2VsbCAqbGM7CisJCWludAkJblNjaGVtYVZhcmlhYmxlczsKKwkJaW50CQlpID0g MDsKKworCQluU2NoZW1hVmFyaWFibGVzID0gbGlzdF9sZW5ndGgocXVlcnlEZXNjLT5wbGFubmVk c3RtdC0+c2NoZW1hVmFyaWFibGVzKTsKKworCQkvKiBDcmVhdGUgYnVmZmVyIGZvciB1c2VkIHNj aGVtYSB2YXJpYWJsZXMgKi8KKwkJZXN0YXRlLT5lc19zY2hlbWFfdmFyaWFibGVzID0gKFNjaGVt YVZhcmlhYmxlVmFsdWUgKikKKwkJCQkJCXBhbGxvYyhuU2NoZW1hVmFyaWFibGVzICogc2l6ZW9m KFNjaGVtYVZhcmlhYmxlVmFsdWUpKTsKKworCQlmb3JlYWNoKGxjLCBxdWVyeURlc2MtPnBsYW5u ZWRzdG10LT5zY2hlbWFWYXJpYWJsZXMpCisJCXsKKwkJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJ CQlPaWQJCXZhcmlkID0gbGZpcnN0X29pZChsYyk7CisKKwkJCWFjbHJlc3VsdCA9IHBnX3Zhcmlh YmxlX2FjbGNoZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1JFQUQpOworCQkJaWYgKGFjbHJl c3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JK RUNUX1ZBUklBQkxFLAorCQkJCQkJCQkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZSh2YXJp ZCkpOworCisJCQllc3RhdGUtPmVzX3NjaGVtYV92YXJpYWJsZXNbaV0udmFyaWQgPSB2YXJpZDsK KwkJCWVzdGF0ZS0+ZXNfc2NoZW1hX3ZhcmlhYmxlc1tpXS52YWx1ZSA9IENvcHlTY2hlbWFWYXJp YWJsZSh2YXJpZCwKKwkJCQkJCQkJCQkJCSZlc3RhdGUtPmVzX3NjaGVtYV92YXJpYWJsZXNbaV0u aXNudWxsLAorCQkJCQkJCQkJCQkJJmVzdGF0ZS0+ZXNfc2NoZW1hX3ZhcmlhYmxlc1tpXS50eXBp ZCk7CisKKwkJCWkrKzsKKwkJfQorCisJCWVzdGF0ZS0+ZXNfbnVtX3NjaGVtYV92YXJpYWJsZXMg PSBuU2NoZW1hVmFyaWFibGVzOworCX0KKwogCS8qCiAJICogRmlsbCBpbiB0aGUgcXVlcnkgZW52 aXJvbm1lbnQsIGlmIGFueSwgZnJvbSBxdWVyeURlc2MuCiAJICovCiAJZXN0YXRlLT5lc19xdWVy eUVudiA9IHF1ZXJ5RGVzYy0+cXVlcnlFbnY7CiAKKwkvKgorCSAqIFJlc3VsdCBjYW4gYmUgc3Rv cmVkIGluIHNjaGVtYSB2YXJpYWJsZS4KKwkgKi8KKwllc3RhdGUtPmVzX3Jlc3VsdF92YXJpYWJs ZSA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnJlc3VsdFZhcmlhYmxlOworCiAJLyoKIAkgKiBJ ZiBub24tcmVhZC1vbmx5IHF1ZXJ5LCBzZXQgdGhlIGNvbW1hbmQgSUQgdG8gbWFyayBvdXRwdXQg dHVwbGVzIHdpdGgKIAkgKi8KIAlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQogCXsKIAkJ Y2FzZSBDTURfU0VMRUNUOgorCQljYXNlIENNRF9QTEFOX1VUSUxJVFk6CiAKIAkJCS8qCiAJCQkg KiBTRUxFQ1QgRk9SIFtLRVldIFVQREFURS9TSEFSRSBhbmQgbW9kaWZ5aW5nIENURXMgbmVlZCB0 byBtYXJrCkBAIC0zNDUsNiArMzk2LDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsCiAJZXN0YXRlLT5lc19sYXN0b2lkID0gSW52YWxpZE9pZDsKIAogCXNlbmRU dXBsZXMgPSAob3BlcmF0aW9uID09IENNRF9TRUxFQ1QgfHwKKwkJCQkgIE9pZElzVmFsaWQoZXN0 YXRlLT5lc19yZXN1bHRfdmFyaWFibGUpIHx8CiAJCQkJICBxdWVyeURlc2MtPnBsYW5uZWRzdG10 LT5oYXNSZXR1cm5pbmcpOwogCiAJaWYgKHNlbmRUdXBsZXMpCkBAIC05MjQsNiArOTc2LDE3IEBA IEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQllc3RhdGUtPmVz X251bV9yb290X3Jlc3VsdF9yZWxhdGlvbnMgPSAwOwogCX0KIAorCWlmIChPaWRJc1ZhbGlkKGVz dGF0ZS0+ZXNfcmVzdWx0X3ZhcmlhYmxlKSkKKwl7CisJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJ CU9pZAkJCXZhcmlkID0gZXN0YXRlLT5lc19yZXN1bHRfdmFyaWFibGU7CisKKwkJLyogRW5zdXJl IHRoaXMgdmFyaWFibGUgaXMgd3JpdGVhYmxlICovCisJCWFjbHJlc3VsdCA9IHBnX3ZhcmlhYmxl X2FjbGNoZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1dSSVRFKTsKKwkJaWYgKGFjbHJlc3Vs dCAhPSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZB UklBQkxFLCBzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUodmFyaWQpKTsKKwl9CisKIAkvKgogCSAq IFNpbWlsYXJseSwgd2UgaGF2ZSB0byBsb2NrIHJlbGF0aW9ucyBzZWxlY3RlZCBGT1IgW0tFWV0g VVBEQVRFL1NIQVJFCiAJICogYmVmb3JlIHdlIGluaXRpYWxpemUgdGhlIHBsYW4gdHJlZSwgZWxz ZSB3ZSdkIGJlIHJpc2tpbmcgbG9jayB1cGdyYWRlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMKaW5kZXggZWUwZjA3YTgxZS4uYmUzNmZiYjAxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmMKQEAgLTEyLDggKzEyLDkgQEAKICAqIHdvcmtlcnMgYW5kIGVuc3VyaW5nIHRo YXQgdGhlaXIgc3RhdGUgZ2VuZXJhbGx5IG1hdGNoZXMgdGhhdCBvZiB0aGUKICAqIGxlYWRlcjsg c2VlIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJhbGxlbCBmb3IgZGV0YWls cy4KICAqIEhvd2V2ZXIsIHdlIG11c3Qgc2F2ZSBhbmQgcmVzdG9yZSByZWxldmFudCBleGVjdXRv ciBzdGF0ZSwgc3VjaCBhcwotICogYW55IFBhcmFtTGlzdEluZm8gYXNzb2NpYXRlZCB3aXRoIHRo ZSBxdWVyeSwgYnVmZmVyIHVzYWdlIGluZm8sIGFuZAotICogdGhlIGFjdHVhbCBwbGFuIHRvIGJl IHBhc3NlZCBkb3duIHRvIHRoZSB3b3JrZXIuCisgKiBhbnkgUGFyYW1MaXN0SW5mbyBhc3NvY2lh dGVkIHdpdGggdGhlIHF1ZXJ5LCBidWZmZXIgdXNhZ2UgaW5mbywgdXNlZAorICogc2NoZW1hIHZh cmlhYmxlcyBidWZmZXIsIGFuZCB0aGUgYWN0dWFsIHBsYW4gdG8gYmUgcGFzc2VkIGRvd24gdG8g dGhlCisgKiB3b3JrZXIuCiAgKgogICogSURFTlRJRklDQVRJT04KICAqCSAgc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTYyLDYgKzYzLDcgQEAKICNkZWZpbmUgUEFSQUxM RUxfS0VZX0lOU1RSVU1FTlRBVElPTglVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDYpCiAj ZGVmaW5lIFBBUkFMTEVMX0tFWV9EU0EJCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA3 KQogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAw MDAwMDAwMDA4KQorI2RlZmluZSBQQVJBTExFTF9LRVlfU0NIRU1BX1ZBUklBQkxFUwlVSU5UNjRD T05TVCgweEUwMDAwMDAwMDAwMDAwMDkpCiAKICNkZWZpbmUgUEFSQUxMRUxfVFVQTEVfUVVFVUVf U0laRQkJNjU1MzYKIApAQCAtMTM2LDYgKzEzOCwxMiBAQCBzdGF0aWMgYm9vbCBFeGVjUGFyYWxs ZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIC8qIEhlbHBl ciBmdW5jdGlvbiB0aGF0IHJ1bnMgaW4gdGhlIHBhcmFsbGVsIHdvcmtlci4gKi8KIHN0YXRpYyBE ZXN0UmVjZWl2ZXIgKkV4ZWNQYXJhbGxlbEdldFJlY2VpdmVyKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYyk7CiAKKy8qIEhlbHBlciBmdW5jdGlvbnMgdGhhdCBjYW4gcGFzcyB2YWx1ZXMg b2YgdXNlZCBzY2hlbWEgdmFyaWFibGVzICovCitzdGF0aWMgU2l6ZSBFc3RpbWF0ZVNjaGVtYVZh cmlhYmxlcyhFU3RhdGUgKmVzdGF0ZSk7CitzdGF0aWMgdm9pZCBTZXJpYWxpemVTY2hlbWFWYXJp YWJsZXMoRVN0YXRlICplc3RhdGUsIGNoYXIgKipzdGFydF9hZGRyZXNzKTsKK3N0YXRpYyBTY2hl bWFWYXJpYWJsZVZhbHVlICpSZXN0b3JlU2NoZW1hVmFyaWFibGVzKGNoYXIgKipzdGFydF9hZGRy ZXNzLAorCQkJCQkJCQlpbnQgKm51bV9zY2hlbWFfdmFyaWFibGVzKTsKKwogLyoKICAqIENyZWF0 ZSBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBsYW4gdG8gYmUgc2VudCB0byBl YWNoIHdvcmtlci4KICAqLwpAQCAtNTcxLDEyICs1NzksMTQgQEAgRXhlY0luaXRQYXJhbGxlbFBs YW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCWNoYXIJICAgKnBzdG10 X2RhdGE7CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CiAJY2hhcgkgICAqcGFyYW1saXN0aW5mb19z cGFjZTsKKwljaGFyCSAgICpzY2hlbWFfdmFyaWFibGVzX3NwYWNlOwogCUJ1ZmZlclVzYWdlICpi dWZ1c2FnZV9zcGFjZTsKIAlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVu dGF0aW9uID0gTlVMTDsKIAlpbnQJCQlwc3RtdF9sZW47CiAJaW50CQkJcGFyYW1saXN0aW5mb19s ZW47CiAJaW50CQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJaW5zdHJ1bWVudF9v ZmZzZXQgPSAwOworCWludAkJCXNjaGVtYV92YXJpYWJsZXNfbGVuID0gMDsKIAlTaXplCQlkc2Ff bWluc2l6ZSA9IGRzYV9taW5pbXVtX3NpemUoKTsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJ aW50CQkJcXVlcnlfbGVuOwpAQCAtNjIyLDYgKzYzMiwxMSBAQCBFeGVjSW5pdFBhcmFsbGVsUGxh bihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJc2htX3RvY19lc3RpbWF0 ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2htX3RvY19l c3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJLyogRXN0aW1hdGUgc3BhY2Ug Zm9yIHNlcmlhbGl6ZWQgc2NoZW1hIHZhcmlhYmxlcy4gKi8KKwlzY2hlbWFfdmFyaWFibGVzX2xl biA9IEVzdGltYXRlU2NoZW1hVmFyaWFibGVzKGVzdGF0ZSk7CisJc2htX3RvY19lc3RpbWF0ZV9j aHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBzY2hlbWFfdmFyaWFibGVzX2xlbik7CisJc2htX3RvY19l c3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJLyoKIAkgKiBFc3RpbWF0ZSBz cGFjZSBmb3IgQnVmZmVyVXNhZ2UuCiAJICoKQEAgLTY5OSw2ICs3MTQsMTEgQEAgRXhlY0luaXRQ YXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90 b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIHBhcmFtbGlz dGluZm9fc3BhY2UpOwogCVNlcmlhbGl6ZVBhcmFtTGlzdChlc3RhdGUtPmVzX3BhcmFtX2xpc3Rf aW5mbywgJnBhcmFtbGlzdGluZm9fc3BhY2UpOwogCisJLyogU3RvcmUgc2VyaWFsaXplZCBzY2hl bWEgdmFyaWFibGVzLiAqLworCXNjaGVtYV92YXJpYWJsZXNfc3BhY2UgPSBzaG1fdG9jX2FsbG9j YXRlKHBjeHQtPnRvYywgc2NoZW1hX3ZhcmlhYmxlc19sZW4pOworCXNobV90b2NfaW5zZXJ0KHBj eHQtPnRvYywgUEFSQUxMRUxfS0VZX1NDSEVNQV9WQVJJQUJMRVMsIHNjaGVtYV92YXJpYWJsZXNf c3BhY2UpOworCVNlcmlhbGl6ZVNjaGVtYVZhcmlhYmxlcyhlc3RhdGUsICZzY2hlbWFfdmFyaWFi bGVzX3NwYWNlKTsKKwogCS8qIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIEJ1ZmZl clVzYWdlOyBubyBuZWVkIHRvIGluaXRpYWxpemUuICovCiAJYnVmdXNhZ2Vfc3BhY2UgPSBzaG1f dG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKIAkJCQkJCQkJCSAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZl clVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTEwOTksNiArMTExOSw3IEBAIEV4ZWNQYXJh bGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiB7 CiAJY2hhcgkgICAqcHN0bXRzcGFjZTsKIAljaGFyCSAgICpwYXJhbXNwYWNlOworCWNoYXIJICAg KnNjaGVtYXZhcmlhYmxlc3BhY2U7CiAJUGxhbm5lZFN0bXQgKnBzdG10OwogCVBhcmFtTGlzdElu Zm8gcGFyYW1MSTsKIAljaGFyCSAgICpxdWVyeVN0cmluZzsKQEAgLTEyNjIsNiArMTI4Myw3IEBA IFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlTaGFy ZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOwogCWludAkJCWluc3Ry dW1lbnRfb3B0aW9ucyA9IDA7CiAJdm9pZAkgICAqYXJlYV9zcGFjZTsKKwljaGFyCSAgICpzY2hl bWF2YXJpYWJsZV9zcGFjZTsKIAlkc2FfYXJlYSAgICphcmVhOwogCVBhcmFsbGVsV29ya2VyQ29u dGV4dCBwd2N4dDsKIApAQCAtMTI4NSw2ICsxMzA3LDE0IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlhcmVhX3NwYWNlID0gc2htX3RvY19sb29r dXAodG9jLCBQQVJBTExFTF9LRVlfRFNBLCBmYWxzZSk7CiAJYXJlYSA9IGRzYV9hdHRhY2hfaW5f cGxhY2UoYXJlYV9zcGFjZSwgc2VnKTsKIAorCS8qIFJlY29uc3RydWN0IHNjaGVtYSB2YXJpYWJs ZXMuICovCisJc2NoZW1hdmFyaWFibGVfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsCisJCQkJ CQkJCQkJICBQQVJBTExFTF9LRVlfU0NIRU1BX1ZBUklBQkxFUywKKwkJCQkJCQkJCQkgIGZhbHNl KTsKKwlxdWVyeURlc2MtPnNjaGVtYV92YXJpYWJsZXMgPQorCQkJCQlSZXN0b3JlU2NoZW1hVmFy aWFibGVzKCZzY2hlbWF2YXJpYWJsZV9zcGFjZSwKKwkJCQkJCQkJCQkJJnF1ZXJ5RGVzYy0+bnVt X3NjaGVtYV92YXJpYWJsZXMpOworCiAJLyogU3RhcnQgdXAgdGhlIGV4ZWN1dG9yICovCiAJcXVl cnlEZXNjLT5wbGFubmVkc3RtdC0+aml0RmxhZ3MgPSBmcGVzLT5qaXRfZmxhZ3M7CiAJRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIGZwZXMtPmVmbGFncyk7CkBAIC0xMzQ0LDMgKzEzNzQsMTE4IEBA IFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlGcmVl UXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CiAJcmVjZWl2ZXItPnJEZXN0cm95KHJlY2VpdmVyKTsKIH0K KworLyoKKyAqIEVzdGltYXRlIHRoZSBhbW91bnQgb2Ygc3BhY2UgcmVxdWlyZWQgdG8gc2VyaWFs aXplIGEgdXNlZAorICogc2NoZW1hIHZhcmlhYmxlcy4KKyAqLworc3RhdGljIFNpemUKK0VzdGlt YXRlU2NoZW1hVmFyaWFibGVzKEVTdGF0ZSAqZXN0YXRlKQoreworCWludAkJCWk7CisJU2l6ZQkJ c3ogPSBzaXplb2YoaW50KTsKKworCWlmIChlc3RhdGUtPmVzX3NjaGVtYV92YXJpYWJsZXMgPT0g TlVMTCkKKwkJcmV0dXJuIHN6OworCisJZm9yIChpID0gMDsgaSA8IGVzdGF0ZS0+ZXNfbnVtX3Nj aGVtYV92YXJpYWJsZXM7IGkrKykKKwl7CisJCVNjaGVtYVZhcmlhYmxlVmFsdWUJICAgKnN2YXJ2 YWw7CisJCU9pZAkJCXR5cGVPaWQ7CisJCWludDE2CQl0eXBMZW47CisJCWJvb2wJCXR5cEJ5VmFs OworCisJCXN2YXJ2YWwgPSAmZXN0YXRlLT5lc19zY2hlbWFfdmFyaWFibGVzW2ldOworCisJCXR5 cGVPaWQgPSBzdmFydmFsLT50eXBpZDsKKworCQlzeiA9IGFkZF9zaXplKHN6LCBzaXplb2YoT2lk KSk7IC8qIHNwYWNlIGZvciB0eXBlIE9JRCAqLworCisJCS8qIHNwYWNlIGZvciBkYXR1bS9pc251 bGwgKi8KKwkJQXNzZXJ0KE9pZElzVmFsaWQodHlwZU9pZCkpOworCQlnZXRfdHlwbGVuYnl2YWwo dHlwZU9pZCwgJnR5cExlbiwgJnR5cEJ5VmFsKTsKKworCQlzeiA9IGFkZF9zaXplKHN6LAorCQkJ CQkgIGRhdHVtRXN0aW1hdGVTcGFjZShzdmFydmFsLT52YWx1ZSwgc3ZhcnZhbC0+aXNudWxsLCB0 eXBCeVZhbCwgdHlwTGVuKSk7CisJfQorCisJcmV0dXJuIHN6OworfQorCisvKgorICogU2VyaWFs aXplIGEgc2NoZW1hIHZhcmlhYmxlcyBidWZmZXIgaW50byBjYWxsZXItcHJvdmlkZWQgc3RvcmFn ZS4KKyAqCisgKiBXZSB3cml0ZSB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgZmlyc3QsIGFzIGEg NC1ieXRlIGludGVnZXIsIGFuZCB0aGVuCisgKiB3cml0ZSBkZXRhaWxzIGZvciBlYWNoIHBhcmFt ZXRlciBpbiB0dXJuLiAgVGhlIGRldGFpbHMgZm9yIGVhY2ggcGFyYW1ldGVyCisgKiBjb25zaXN0 IG9mIGEgNC1ieXRlIHR5cGUgT0lELCBhbmQgdGhlbiB0aGUgZGF0dW0gYXMgc2VyaWFsaXplZCBi eQorICogZGF0dW1TZXJpYWxpemUoKS4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGVu c3VyaW5nIHRoYXQgdGhlcmUgaXMKKyAqIGVub3VnaCBzdG9yYWdlIHRvIHN0b3JlIHRoZSBudW1i ZXIgb2YgYnl0ZXMgdGhhdCB3aWxsIGJlIHdyaXR0ZW47IHVzZQorICogRXN0aW1hdGVTY2hlbWFW YXJpYWJsZXMgdG8gZmluZCBvdXQgaG93IG1hbnkgd2lsbCBiZSBuZWVkZWQuCisgKiAqc3RhcnRf YWRkcmVzcyBpcyB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBieXRlIGltbWVkaWF0ZWx5IGZvbGxv d2luZyB0aG9zZQorICogd3JpdHRlbi4KKyAqCisgKiBSZXN0b3JlU2NoZW1hVmFyaWFibGVzIGNh biBiZSB1c2VkIHRvIHJlY3JlYXRlIGEgc2NoZW1hIHZhcmlhYmxlIGJ1ZmZlcgorICogYmFzZWQg b24gdGhlIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb247CisgKi8KK3N0YXRpYyB2b2lkCitTZXJp YWxpemVTY2hlbWFWYXJpYWJsZXMoRVN0YXRlICplc3RhdGUsIGNoYXIgKipzdGFydF9hZGRyZXNz KQoreworCWludAkJCW5wYXJhbXM7CisJaW50CQkJaTsKKworCS8qIFdyaXRlIG51bWJlciBvZiBw YXJhbWV0ZXJzLiAqLworCW5wYXJhbXMgPSBlc3RhdGUtPmVzX251bV9zY2hlbWFfdmFyaWFibGVz OworCW1lbWNweSgqc3RhcnRfYWRkcmVzcywgJm5wYXJhbXMsIHNpemVvZihpbnQpKTsKKwkqc3Rh cnRfYWRkcmVzcyArPSBzaXplb2YoaW50KTsKKworCS8qIFdyaXRlIGVhY2ggcGFyYW1ldGVyIGlu IHR1cm4uICovCisJZm9yIChpID0gMDsgaSA8IG5wYXJhbXM7IGkrKykKKwl7CisJCVNjaGVtYVZh cmlhYmxlVmFsdWUJICAgKnN2YXJ2YWw7CisJCU9pZAkJCXR5cGVPaWQ7CisJCWludDE2CQl0eXBM ZW47CisJCWJvb2wJCXR5cEJ5VmFsOworCisJCXN2YXJ2YWwgPSAmZXN0YXRlLT5lc19zY2hlbWFf dmFyaWFibGVzW2ldOworCQl0eXBlT2lkID0gc3ZhcnZhbC0+dHlwaWQ7CisKKwkJLyogV3JpdGUg dHlwZSBPSUQuICovCisJCW1lbWNweSgqc3RhcnRfYWRkcmVzcywgJnR5cGVPaWQsIHNpemVvZihP aWQpKTsKKwkJKnN0YXJ0X2FkZHJlc3MgKz0gc2l6ZW9mKE9pZCk7CisKKwkJQXNzZXJ0KE9pZElz VmFsaWQodHlwZU9pZCkpOworCQlnZXRfdHlwbGVuYnl2YWwodHlwZU9pZCwgJnR5cExlbiwgJnR5 cEJ5VmFsKTsKKworCQlkYXR1bVNlcmlhbGl6ZShzdmFydmFsLT52YWx1ZSwgc3ZhcnZhbC0+aXNu dWxsLCB0eXBCeVZhbCwgdHlwTGVuLAorCQkJCQkgICBzdGFydF9hZGRyZXNzKTsKKwl9Cit9CisK K3N0YXRpYyBTY2hlbWFWYXJpYWJsZVZhbHVlICoKK1Jlc3RvcmVTY2hlbWFWYXJpYWJsZXMoY2hh ciAqKnN0YXJ0X2FkZHJlc3MsIGludCAqbnVtX3NjaGVtYV92YXJpYWJsZXMpCit7CisJU2NoZW1h VmFyaWFibGVWYWx1ZSAqc2NoZW1hX3ZhcmlhYmxlczsKKwlpbnQJCQlpOworCWludAkJCW5wYXJh bXM7CisKKwltZW1jcHkoJm5wYXJhbXMsICpzdGFydF9hZGRyZXNzLCBzaXplb2YoaW50KSk7CisJ KnN0YXJ0X2FkZHJlc3MgKz0gc2l6ZW9mKGludCk7CisKKwkqbnVtX3NjaGVtYV92YXJpYWJsZXMg PSBucGFyYW1zOworCXNjaGVtYV92YXJpYWJsZXMgPSAoU2NoZW1hVmFyaWFibGVWYWx1ZSAqKQor CQkJCQlwYWxsb2MobnBhcmFtcyAqIHNpemVvZihTY2hlbWFWYXJpYWJsZVZhbHVlKSk7CisKKwlm b3IgKGkgPSAwOyBpIDwgbnBhcmFtczsgaSsrKQorCXsKKwkJU2NoZW1hVmFyaWFibGVWYWx1ZSAq c3ZhcnZhbCA9ICZzY2hlbWFfdmFyaWFibGVzW2ldOworCisJCS8qIFJlYWQgdHlwZSBPSUQuICov CisJCW1lbWNweSgmc3ZhcnZhbC0+dHlwaWQsICpzdGFydF9hZGRyZXNzLCBzaXplb2YoT2lkKSk7 CisJCSpzdGFydF9hZGRyZXNzICs9IHNpemVvZihPaWQpOworCisJCS8qIFJlYWQgZGF0dW0vaXNu dWxsLiAqLworCQlzdmFydmFsLT52YWx1ZSA9IGRhdHVtUmVzdG9yZShzdGFydF9hZGRyZXNzLCAm c3ZhcnZhbC0+aXNudWxsKTsKKwl9CisKKwlyZXR1cm4gc2NoZW1hX3ZhcmlhYmxlczsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjBlYWM0YjVkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jCkBAIC0wLDAgKzEsMTQ1IEBACisvKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzdmFyaWFibGVSZWNlaXZlci5jCisgKgkgIEFuIGltcGxl bWVudGF0aW9uIG9mIERlc3RSZWNlaXZlciB0aGF0IHN0b3JlcyB0aGUgcmVzdWx0IHZhbHVlIGlu CisgKgkgIGEgc2NoZW1hIHZhcmlhYmxlLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9leGVjdXRvci9z dmFyaWFibGVSZWNlaXZlci5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvdHVwdG9hc3Rlci5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2No ZW1hdmFyaWFibGUuaCIKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlEZXN0UmVjZWl2ZXIgcHViOwor CU9pZAkJdmFyaWQ7CisJT2lkCQl0eXBpZDsKKwlpbnQzMgl0eXBtb2Q7CisJaW50CQl0eXBsZW47 CisJaW50CQlzbG90X29mZnNldDsKKwlpbnQJCXJvd3M7Cit9IHN2YXJpYWJsZVN0YXRlOworCisK Ky8qCisgKiBQcmVwYXJlIHRvIHJlY2VpdmUgdHVwbGVzIGZyb20gZXhlY3V0b3IuCisgKi8KK3N0 YXRpYyB2b2lkCitzdmFyaWFibGVTdGFydHVwUmVjZWl2ZXIoRGVzdFJlY2VpdmVyICpzZWxmLCBp bnQgb3BlcmF0aW9uLCBUdXBsZURlc2MgdHlwZWluZm8pCit7CisJc3ZhcmlhYmxlU3RhdGUgKm15 U3RhdGUgPSAoc3ZhcmlhYmxlU3RhdGUgKikgc2VsZjsKKwlpbnQJCQluYXR0cyA9IHR5cGVpbmZv LT5uYXR0czsKKwlpbnQJCQlvdXRjb2xzID0gMDsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsg aSA8IG5hdHRzOyBpKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNj QXR0cih0eXBlaW5mbywgaSk7CisKKwkJaWYgKGF0dHItPmF0dGlzZHJvcHBlZCkKKwkJCWNvbnRp bnVlOworCisJCWlmICgrK291dGNvbHMgPiAxKQorCQkJZWxvZyhFUlJPUiwgInN2YXJpYWJsZSBE ZXN0UmVjZWl2ZXIgY2FuIHRha2Ugb25seSBvbmUgYXR0cmlidXRlIik7CisKKwkJbXlTdGF0ZS0+ dHlwaWQgPSBhdHRyLT5hdHR0eXBpZDsKKwkJbXlTdGF0ZS0+dHlwbW9kID0gYXR0ci0+YXR0dHlw bW9kOworCQlteVN0YXRlLT50eXBsZW4gPSBhdHRyLT5hdHRsZW47CisJCW15U3RhdGUtPnNsb3Rf b2Zmc2V0ID0gaTsKKwl9CisKKwlteVN0YXRlLT5yb3dzID0gMDsKK30KKworLyoKKyAqIFJlY2Vp dmUgYSB0dXBsZSBmcm9tIHRoZSBleGVjdXRvciBhbmQgc3RvcmUgaXQgaW4gc2NoZW1hIHZhcmlh YmxlLgorICovCitzdGF0aWMgYm9vbAorc3ZhcmlhYmxlUmVjZWl2ZVNsb3QoVHVwbGVUYWJsZVNs b3QgKnNsb3QsIERlc3RSZWNlaXZlciAqc2VsZikKK3sKKwlzdmFyaWFibGVTdGF0ZSAqbXlTdGF0 ZSA9IChzdmFyaWFibGVTdGF0ZSAqKSBzZWxmOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlpc251 bGw7CisJYm9vbAkJZnJlZXZhbCA9IGZhbHNlOworCisJLyogTWFrZSBzdXJlIHRoZSB0dXBsZSBp cyBmdWxseSBkZWNvbnN0cnVjdGVkICovCisJc2xvdF9nZXRhbGxhdHRycyhzbG90KTsKKworCXZh bHVlID0gc2xvdC0+dHRzX3ZhbHVlc1tteVN0YXRlLT5zbG90X29mZnNldF07CisJaXNudWxsID0g c2xvdC0+dHRzX2lzbnVsbFtteVN0YXRlLT5zbG90X29mZnNldF07CisKKwlpZiAobXlTdGF0ZS0+ dHlwbGVuID09IC0xICYmICFpc251bGwgJiYgVkFSQVRUX0lTX0VYVEVSTkFMKERhdHVtR2V0UG9p bnRlcih2YWx1ZSkpKQorCXsKKwkJdmFsdWUgPSBQb2ludGVyR2V0RGF0dW0oaGVhcF90dXBsZV9m ZXRjaF9hdHRyKChzdHJ1Y3QgdmFybGVuYSAqKQorCQkJCQkJCQkJCQkJCURhdHVtR2V0UG9pbnRl cih2YWx1ZSkpKTsKKwkJZnJlZXZhbCA9IHRydWU7CisJfQorCisJU2V0U2NoZW1hVmFyaWFibGUo bXlTdGF0ZS0+dmFyaWQsIHZhbHVlLCBpc251bGwsIG15U3RhdGUtPnR5cGlkLCBteVN0YXRlLT50 eXBtb2QpOworCisJaWYgKGZyZWV2YWwpCisJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkp OworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBDbGVhbiB1cCBhdCBlbmQgb2YgYW4gZXhl Y3V0b3IgcnVuCisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVyKERl c3RSZWNlaXZlciAqc2VsZikKK3sKKwkvKiBEbyBub3RoaW5nICovCit9CisKKy8qCisgKiBEZXN0 cm95IHJlY2VpdmVyIHdoZW4gZG9uZSB3aXRoIGl0CisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFi bGVEZXN0cm95UmVjZWl2ZXIoRGVzdFJlY2VpdmVyICpzZWxmKQoreworCXBmcmVlKHNlbGYpOwor fQorCisvKgorICogSW5pdGlhbGx5IGNyZWF0ZSBhIERlc3RSZWNlaXZlciBvYmplY3QuCisgKi8K K0Rlc3RSZWNlaXZlciAqCitDcmVhdGVWYXJpYWJsZURlc3RSZWNlaXZlcih2b2lkKQoreworCXN2 YXJpYWJsZVN0YXRlICpzZWxmID0gKHN2YXJpYWJsZVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKHN2 YXJpYWJsZVN0YXRlKSk7CisKKwlzZWxmLT5wdWIucmVjZWl2ZVNsb3QgPSBzdmFyaWFibGVSZWNl aXZlU2xvdDsKKwlzZWxmLT5wdWIuclN0YXJ0dXAgPSBzdmFyaWFibGVTdGFydHVwUmVjZWl2ZXI7 CisJc2VsZi0+cHViLnJTaHV0ZG93biA9IHN2YXJpYWJsZVNodXRkb3duUmVjZWl2ZXI7CisJc2Vs Zi0+cHViLnJEZXN0cm95ID0gc3ZhcmlhYmxlRGVzdHJveVJlY2VpdmVyOworCXNlbGYtPnB1Yi5t eWRlc3QgPSBEZXN0VmFyaWFibGU7CisKKwkvKiBwcml2YXRlIGZpZWxkcyB3aWxsIGJlIHNldCBi eSBTZXRWYXJpYWJsZURlc3RSZWNlaXZlclBhcmFtcyAqLworCisJcmV0dXJuIChEZXN0UmVjZWl2 ZXIgKikgc2VsZjsKK30KKworLyoKKyAqIFNldCBwYXJhbWV0ZXJzIGZvciBhIFZhcmlhYmxlRGVz dFJlY2VpdmVyCisgKi8KK3ZvaWQKK1NldFZhcmlhYmxlRGVzdFJlY2VpdmVyUGFyYW1zKERlc3RS ZWNlaXZlciAqc2VsZiwgT2lkIHZhcmlkKQoreworCXN2YXJpYWJsZVN0YXRlICpteVN0YXRlID0g KHN2YXJpYWJsZVN0YXRlICopIHNlbGY7CisKKwlBc3NlcnQobXlTdGF0ZS0+cHViLm15ZGVzdCA9 PSBEZXN0VmFyaWFibGUpOworCUFzc2VydChPaWRJc1ZhbGlkKHZhcmlkKSk7CisKKwlteVN0YXRl LT52YXJpZCA9IHZhcmlkOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCA3YzgyMjBjZjY1Li41 MjNkYjUzOGFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtOTMsNiArOTMsNyBAQCBfY29weVBs YW5uZWRTdG10KGNvbnN0IFBsYW5uZWRTdG10ICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChyZXN1 bHRSZWxhdGlvbnMpOwogCUNPUFlfTk9ERV9GSUVMRChub25sZWFmUmVzdWx0UmVsYXRpb25zKTsK IAlDT1BZX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7CisJQ09QWV9TQ0FMQVJfRklF TEQocmVzdWx0VmFyaWFibGUpOwogCUNPUFlfTk9ERV9GSUVMRChzdWJwbGFucyk7CiAJQ09QWV9C SVRNQVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJvd01hcmtz KTsKQEAgLTEwMCw2ICsxMDEsNyBAQCBfY29weVBsYW5uZWRTdG10KGNvbnN0IFBsYW5uZWRTdG10 ICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChpbnZhbEl0ZW1zKTsKIAlDT1BZX05PREVfRklFTEQo cGFyYW1FeGVjVHlwZXMpOwogCUNPUFlfTk9ERV9GSUVMRCh1dGlsaXR5U3RtdCk7CisJQ09QWV9O T0RFX0ZJRUxEKHNjaGVtYVZhcmlhYmxlcyk7CiAJQ09QWV9MT0NBVElPTl9GSUVMRChzdG10X2xv Y2F0aW9uKTsKIAlDT1BZX0xPQ0FUSU9OX0ZJRUxEKHN0bXRfbGVuKTsKIApAQCAtMTQxNSw2ICsx NDE3LDcgQEAgX2NvcHlQYXJhbShjb25zdCBQYXJhbSAqZnJvbSkKIAlDT1BZX1NDQUxBUl9GSUVM RChwYXJhbXR5cGUpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKHBhcmFtdHlwbW9kKTsKIAlDT1BZX1ND QUxBUl9GSUVMRChwYXJhbWNvbGxpZCk7CisJQ09QWV9TQ0FMQVJfRklFTEQocGFyYW12YXJpZCk7 CiAJQ09QWV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CiAKIAlyZXR1cm4gbmV3bm9kZTsKQEAg LTMwMDAsNiArMzAwMyw3IEBAIF9jb3B5UXVlcnkoY29uc3QgUXVlcnkgKmZyb20pCiAJQ09QWV9T Q0FMQVJfRklFTEQoY2FuU2V0VGFnKTsKIAlDT1BZX05PREVfRklFTEQodXRpbGl0eVN0bXQpOwog CUNPUFlfU0NBTEFSX0ZJRUxEKHJlc3VsdFJlbGF0aW9uKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChy ZXN1bHRWYXJpYWJsZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFzQWdncyk7CiAJQ09QWV9TQ0FM QVJfRklFTEQoaGFzV2luZG93RnVuY3MpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc1RhcmdldFNS RnMpOwpAQCAtMzAwOSw2ICszMDEzLDcgQEAgX2NvcHlRdWVyeShjb25zdCBRdWVyeSAqZnJvbSkK IAlDT1BZX1NDQUxBUl9GSUVMRChoYXNNb2RpZnlpbmdDVEUpOwogCUNPUFlfU0NBTEFSX0ZJRUxE KGhhc0ZvclVwZGF0ZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFzUm93U2VjdXJpdHkpOworCUNP UFlfU0NBTEFSX0ZJRUxEKGhhc1NjaGVtYVZhcmlhYmxlKTsKIAlDT1BZX05PREVfRklFTEQoY3Rl TGlzdCk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJ0YWJsZSk7CiAJQ09QWV9OT0RFX0ZJRUxEKGpvaW50 cmVlKTsKQEAgLTMxMTgsNiArMzEyMywxOCBAQCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0 U3RtdCAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2Nv cHlMZXRTdG10KGNvbnN0IExldFN0bXQgKmZyb20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1h a2VOb2RlKExldFN0bXQpOworCisJQ09QWV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09QWV9OT0RF X0ZJRUxEKHNlbGVjdFN0bXQpOworCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJ cmV0dXJuIG5ld25vZGU7Cit9CisKIHN0YXRpYyBTZXRPcGVyYXRpb25TdG10ICoKIF9jb3B5U2V0 T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICpmcm9tKQogewpAQCAtNTE2Niw2 ICs1MTgzLDkgQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1Nl bGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNlbGVjdFN0bXQoZnJvbSk7CiAJCQlicmVhazsK KwkJY2FzZSBUX0xldFN0bXQ6CisJCQlyZXR2YWwgPSBfY29weUxldFN0bXQoZnJvbSk7CisJCQli cmVhazsKIAkJY2FzZSBUX1NldE9wZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNldE9w ZXJhdGlvblN0bXQoZnJvbSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25v ZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCAz NzhmMmZhY2I4Li4yZWE1ZTE4YjFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVh bGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yMDIsNiAr MjAyLDcgQEAgX2VxdWFsUGFyYW0oY29uc3QgUGFyYW0gKmEsIGNvbnN0IFBhcmFtICpiKQogCUNP TVBBUkVfU0NBTEFSX0ZJRUxEKHBhcmFtdHlwZSk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQocGFy YW10eXBtb2QpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHBhcmFtY29sbGlkKTsKKwlDT01QQVJF X1NDQUxBUl9GSUVMRChwYXJhbXZhcmlkKTsKIAlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0 aW9uKTsKIAogCXJldHVybiB0cnVlOwpAQCAtOTQ5LDYgKzk1MCw3IEBAIF9lcXVhbFF1ZXJ5KGNv bnN0IFF1ZXJ5ICphLCBjb25zdCBRdWVyeSAqYikKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChjYW5T ZXRUYWcpOwogCUNPTVBBUkVfTk9ERV9GSUVMRCh1dGlsaXR5U3RtdCk7CiAJQ09NUEFSRV9TQ0FM QVJfRklFTEQocmVzdWx0UmVsYXRpb24pOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHJlc3VsdFZh cmlhYmxlKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChoYXNBZ2dzKTsKIAlDT01QQVJFX1NDQUxB Ul9GSUVMRChoYXNXaW5kb3dGdW5jcyk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzVGFyZ2V0 U1JGcyk7CkBAIC05NTgsNiArOTYwLDcgQEAgX2VxdWFsUXVlcnkoY29uc3QgUXVlcnkgKmEsIGNv bnN0IFF1ZXJ5ICpiKQogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc01vZGlmeWluZ0NURSk7CiAJ Q09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzRm9yVXBkYXRlKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVM RChoYXNSb3dTZWN1cml0eSk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzU2NoZW1hVmFyaWFi bGUpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChjdGVMaXN0KTsKIAlDT01QQVJFX05PREVfRklFTEQo cnRhYmxlKTsKIAlDT01QQVJFX05PREVfRklFTEQoam9pbnRyZWUpOwpAQCAtMTA1Nyw2ICsxMDYw LDE2IEBAIF9lcXVhbFNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqYSwgY29uc3QgU2VsZWN0 U3RtdCAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbExldFN0bXQo Y29uc3QgTGV0U3RtdCAqYSwgY29uc3QgTGV0U3RtdCAqYikKK3sKKwlDT01QQVJFX05PREVfRklF TEQodGFyZ2V0KTsKKwlDT01QQVJFX05PREVfRklFTEQoc2VsZWN0U3RtdCk7CisKKwlyZXR1cm4g dHJ1ZTsKK30KKworCiBzdGF0aWMgYm9vbAogX2VxdWFsU2V0T3BlcmF0aW9uU3RtdChjb25zdCBT ZXRPcGVyYXRpb25TdG10ICphLCBjb25zdCBTZXRPcGVyYXRpb25TdG10ICpiKQogewpAQCAtMzIy NSw2ICszMjM4LDkgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2Fz ZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZWxlY3RTdG10KGEsIGIpOwogCQkJ YnJlYWs7CisJCWNhc2UgVF9MZXRTdG10OgorCQkJcmV0dmFsID0gX2VxdWFsTGV0U3RtdChhLCBi KTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9l cXVhbFNldE9wZXJhdGlvblN0bXQoYSwgYik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmlu ZGV4IGI1YWY5MDRjMTguLjllYjNlM2YzYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtMjc4LDYg KzI3OCw3IEBAIF9vdXRQbGFubmVkU3RtdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGxhbm5lZFN0 bXQgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCVdSSVRFX05P REVfRklFTEQobm9ubGVhZlJlc3VsdFJlbGF0aW9ucyk7CiAJV1JJVEVfTk9ERV9GSUVMRChyb290 UmVzdWx0UmVsYXRpb25zKTsKKwlXUklURV9PSURfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCVdS SVRFX05PREVfRklFTEQoc3VicGxhbnMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChyZXdpbmRQ bGFuSURzKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJvd01hcmtzKTsKQEAgLTI4NSw2ICsyODYsNyBA QCBfb3V0UGxhbm5lZFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBsYW5uZWRTdG10ICpub2Rl KQogCVdSSVRFX05PREVfRklFTEQoaW52YWxJdGVtcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChwYXJh bUV4ZWNUeXBlcyk7CiAJV1JJVEVfTk9ERV9GSUVMRCh1dGlsaXR5U3RtdCk7CisJV1JJVEVfTk9E RV9GSUVMRChzY2hlbWFWYXJpYWJsZXMpOwogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKHN0bXRfbG9j YXRpb24pOwogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKHN0bXRfbGVuKTsKIH0KQEAgLTExOTQsNiAr MTE5Niw3IEBAIF9vdXRQYXJhbShTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGFyYW0gKm5vZGUpCiAJ V1JJVEVfT0lEX0ZJRUxEKHBhcmFtdHlwZSk7CiAJV1JJVEVfSU5UX0ZJRUxEKHBhcmFtdHlwbW9k KTsKIAlXUklURV9PSURfRklFTEQocGFyYW1jb2xsaWQpOworCVdSSVRFX09JRF9GSUVMRChwYXJh bXZhcmlkKTsKIAlXUklURV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CiB9CiAKQEAgLTIyNjAs NiArMjI2Myw3IEBAIF9vdXRQbGFubmVyR2xvYmFsKFN0cmluZ0luZm8gc3RyLCBjb25zdCBQbGFu bmVyR2xvYmFsICpub2RlKQogCVdSSVRFX05PREVfRklFTEQocmVsYXRpb25PaWRzKTsKIAlXUklU RV9OT0RFX0ZJRUxEKGludmFsSXRlbXMpOwogCVdSSVRFX05PREVfRklFTEQocGFyYW1FeGVjVHlw ZXMpOworCVdSSVRFX05PREVfRklFTEQoc2NoZW1hVmFyaWFibGVzKTsKIAlXUklURV9VSU5UX0ZJ RUxEKGxhc3RQSElkKTsKIAlXUklURV9VSU5UX0ZJRUxEKGxhc3RSb3dNYXJrSWQpOwogCVdSSVRF X0lOVF9GSUVMRChsYXN0UGxhbk5vZGVJZCk7CkBAIC0yMzE2LDYgKzIzMjAsNyBAQCBfb3V0UGxh bm5lckluZm8oU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBsYW5uZXJJbmZvICpub2RlKQogCVdSSVRF X0JPT0xfRklFTEQoaGFzSGF2aW5nUXVhbCk7CiAJV1JJVEVfQk9PTF9GSUVMRChoYXNQc2V1ZG9D b25zdGFudFF1YWxzKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc1JlY3Vyc2lvbik7CisJV1JJVEVf Qk9PTF9GSUVMRChoYXNTY2hlbWFWYXJpYWJsZSk7CiAJV1JJVEVfSU5UX0ZJRUxEKHd0X3BhcmFt X2lkKTsKIAlXUklURV9CSVRNQVBTRVRfRklFTEQoY3VyT3V0ZXJSZWxzKTsKIAlXUklURV9OT0RF X0ZJRUxEKGN1ck91dGVyUGFyYW1zKTsKQEAgLTI3OTQsNiArMjc5OSwxNiBAQCBfb3V0U2VsZWN0 U3RtdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgU2VsZWN0U3RtdCAqbm9kZSkKIAlXUklURV9OT0RF X0ZJRUxEKHJhcmcpOwogfQogCitzdGF0aWMgdm9pZAorX291dExldFN0bXQoU3RyaW5nSW5mbyBz dHIsIGNvbnN0IExldFN0bXQgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJMRVQiKTsKKwor CVdSSVRFX05PREVfRklFTEQodGFyZ2V0KTsKKwlXUklURV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQp OworCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKK30KKwogc3RhdGljIHZvaWQKIF9v dXRGdW5jQ2FsbChTdHJpbmdJbmZvIHN0ciwgY29uc3QgRnVuY0NhbGwgKm5vZGUpCiB7CkBAIC0y OTcyLDYgKzI5ODcsNyBAQCBfb3V0UXVlcnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFF1ZXJ5ICpu b2RlKQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6dXRpbGl0eVN0bXQgPD4iKTsK IAogCVdSSVRFX0lOVF9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJV1JJVEVfSU5UX0ZJRUxEKHJl c3VsdFZhcmlhYmxlKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc0FnZ3MpOwogCVdSSVRFX0JPT0xf RklFTEQoaGFzV2luZG93RnVuY3MpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzVGFyZ2V0U1JGcyk7 CkBAIC0yOTgxLDYgKzI5OTcsNyBAQCBfb3V0UXVlcnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFF1 ZXJ5ICpub2RlKQogCVdSSVRFX0JPT0xfRklFTEQoaGFzTW9kaWZ5aW5nQ1RFKTsKIAlXUklURV9C T09MX0ZJRUxEKGhhc0ZvclVwZGF0ZSk7CiAJV1JJVEVfQk9PTF9GSUVMRChoYXNSb3dTZWN1cml0 eSk7CisJV1JJVEVfQk9PTF9GSUVMRChoYXNTY2hlbWFWYXJpYWJsZSk7CiAJV1JJVEVfTk9ERV9G SUVMRChjdGVMaXN0KTsKIAlXUklURV9OT0RFX0ZJRUxEKHJ0YWJsZSk7CiAJV1JJVEVfTk9ERV9G SUVMRChqb2ludHJlZSk7CkBAIC00MTkyLDYgKzQyMDksOSBAQCBvdXROb2RlKFN0cmluZ0luZm8g c3RyLCBjb25zdCB2b2lkICpvYmopCiAJCQljYXNlIFRfU2VsZWN0U3RtdDoKIAkJCQlfb3V0U2Vs ZWN0U3RtdChzdHIsIG9iaik7CiAJCQkJYnJlYWs7CisJCQljYXNlIFRfTGV0U3RtdDoKKwkJCQlf b3V0TGV0U3RtdChzdHIsIG9iaik7CisJCQkJYnJlYWs7CiAJCQljYXNlIFRfQ29sdW1uRGVmOgog CQkJCV9vdXRDb2x1bW5EZWYoc3RyLCBvYmopOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YwppbmRleCAzMjU0NTI0MjIzLi4zZWE3ZTQ3Mzg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAt MjQyLDYgKzI0Miw3IEBAIF9yZWFkUXVlcnkodm9pZCkKIAlSRUFEX0JPT0xfRklFTEQoY2FuU2V0 VGFnKTsKIAlSRUFEX05PREVfRklFTEQodXRpbGl0eVN0bXQpOwogCVJFQURfSU5UX0ZJRUxEKHJl c3VsdFJlbGF0aW9uKTsKKwlSRUFEX0lOVF9GSUVMRChyZXN1bHRWYXJpYWJsZSk7CiAJUkVBRF9C T09MX0ZJRUxEKGhhc0FnZ3MpOwogCVJFQURfQk9PTF9GSUVMRChoYXNXaW5kb3dGdW5jcyk7CiAJ UkVBRF9CT09MX0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpAQCAtMjUxLDYgKzI1Miw3IEBAIF9yZWFk UXVlcnkodm9pZCkKIAlSRUFEX0JPT0xfRklFTEQoaGFzTW9kaWZ5aW5nQ1RFKTsKIAlSRUFEX0JP T0xfRklFTEQoaGFzRm9yVXBkYXRlKTsKIAlSRUFEX0JPT0xfRklFTEQoaGFzUm93U2VjdXJpdHkp OworCVJFQURfQk9PTF9GSUVMRChoYXNTY2hlbWFWYXJpYWJsZSk7CiAJUkVBRF9OT0RFX0ZJRUxE KGN0ZUxpc3QpOwogCVJFQURfTk9ERV9GSUVMRChydGFibGUpOwogCVJFQURfTk9ERV9GSUVMRChq b2ludHJlZSk7CkBAIC01NzEsNiArNTczLDcgQEAgX3JlYWRQYXJhbSh2b2lkKQogCVJFQURfT0lE X0ZJRUxEKHBhcmFtdHlwZSk7CiAJUkVBRF9JTlRfRklFTEQocGFyYW10eXBtb2QpOwogCVJFQURf T0lEX0ZJRUxEKHBhcmFtY29sbGlkKTsKKwlSRUFEX09JRF9GSUVMRChwYXJhbXZhcmlkKTsKIAlS RUFEX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKIAogCVJFQURfRE9ORSgpOwpAQCAtMTQ4NSw2 ICsxNDg4LDcgQEAgX3JlYWRQbGFubmVkU3RtdCh2b2lkKQogCVJFQURfTk9ERV9GSUVMRChyZXN1 bHRSZWxhdGlvbnMpOwogCVJFQURfTk9ERV9GSUVMRChub25sZWFmUmVzdWx0UmVsYXRpb25zKTsK IAlSRUFEX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7CisJUkVBRF9PSURfRklFTEQo cmVzdWx0VmFyaWFibGUpOwogCVJFQURfTk9ERV9GSUVMRChzdWJwbGFucyk7CiAJUkVBRF9CSVRN QVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJvd01hcmtzKTsK QEAgLTE0OTIsNiArMTQ5Niw3IEBAIF9yZWFkUGxhbm5lZFN0bXQodm9pZCkKIAlSRUFEX05PREVf RklFTEQoaW52YWxJdGVtcyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHBhcmFtRXhlY1R5cGVzKTsKIAlS RUFEX05PREVfRklFTEQodXRpbGl0eVN0bXQpOworCVJFQURfTk9ERV9GSUVMRChzY2hlbWFWYXJp YWJsZXMpOwogCVJFQURfTE9DQVRJT05fRklFTEQoc3RtdF9sb2NhdGlvbik7CiAJUkVBRF9MT0NB VElPTl9GSUVMRChzdG10X2xlbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpp bmRleCBlNTg5NDcxZmVlLi5jMGViMjIyMjk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCkBAIC0zMDEsNiArMzAxLDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2Us IGludCBjdXJzb3JPcHRpb25zLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKQogCWdsb2ItPmxh c3RQbGFuTm9kZUlkID0gMDsKIAlnbG9iLT50cmFuc2llbnRQbGFuID0gZmFsc2U7CiAJZ2xvYi0+ ZGVwZW5kc09uUm9sZSA9IGZhbHNlOworCWdsb2ItPnNjaGVtYVZhcmlhYmxlcyA9IE5JTDsKIAog CS8qCiAJICogQXNzZXNzIHdoZXRoZXIgaXQncyBmZWFzaWJsZSB0byB1c2UgcGFyYWxsZWwgbW9k ZSBmb3IgdGhpcyBxdWVyeS4gV2UKQEAgLTMzNCw3ICszMzUsOCBAQCBzdGFuZGFyZF9wbGFubmVy KFF1ZXJ5ICpwYXJzZSwgaW50IGN1cnNvck9wdGlvbnMsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJh bXMpCiAJICovCiAJaWYgKChjdXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9QQVJBTExFTF9PSykg IT0gMCAmJgogCQlJc1VuZGVyUG9zdG1hc3RlciAmJgotCQlwYXJzZS0+Y29tbWFuZFR5cGUgPT0g Q01EX1NFTEVDVCAmJgorCQkocGFyc2UtPmNvbW1hbmRUeXBlID09IENNRF9TRUxFQ1QgfHwKKwkJ IHBhcnNlLT5jb21tYW5kVHlwZSA9PSBDTURfUExBTl9VVElMSVRZKSAmJgogCQkhcGFyc2UtPmhh c01vZGlmeWluZ0NURSAmJgogCQltYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID4gMCAm JgogCQkhSXNQYXJhbGxlbFdvcmtlcigpICYmCkBAIC01MjAsNiArNTIyLDcgQEAgc3RhbmRhcmRf cGxhbm5lcihRdWVyeSAqcGFyc2UsIGludCBjdXJzb3JPcHRpb25zLCBQYXJhbUxpc3RJbmZvIGJv dW5kUGFyYW1zKQogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRp b25zOwogCXJlc3VsdC0+bm9ubGVhZlJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPm5vbmxlYWZSZXN1 bHRSZWxhdGlvbnM7CiAJcmVzdWx0LT5yb290UmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cm9vdFJl c3VsdFJlbGF0aW9uczsKKwlyZXN1bHQtPnJlc3VsdFZhcmlhYmxlID0gcGFyc2UtPnJlc3VsdFZh cmlhYmxlOwogCXJlc3VsdC0+c3VicGxhbnMgPSBnbG9iLT5zdWJwbGFuczsKIAlyZXN1bHQtPnJl d2luZFBsYW5JRHMgPSBnbG9iLT5yZXdpbmRQbGFuSURzOwogCXJlc3VsdC0+cm93TWFya3MgPSBn bG9iLT5maW5hbHJvd21hcmtzOwpAQCAtNTI4LDYgKzUzMSw3IEBAIHN0YW5kYXJkX3BsYW5uZXIo UXVlcnkgKnBhcnNlLCBpbnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFt cykKIAlyZXN1bHQtPnBhcmFtRXhlY1R5cGVzID0gZ2xvYi0+cGFyYW1FeGVjVHlwZXM7CiAJLyog dXRpbGl0eVN0bXQgc2hvdWxkIGJlIG51bGwsIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGNvcHkgaXQg Ki8KIAlyZXN1bHQtPnV0aWxpdHlTdG10ID0gcGFyc2UtPnV0aWxpdHlTdG10OworCXJlc3VsdC0+ c2NoZW1hVmFyaWFibGVzID0gZ2xvYi0+c2NoZW1hVmFyaWFibGVzOwogCXJlc3VsdC0+c3RtdF9s b2NhdGlvbiA9IHBhcnNlLT5zdG10X2xvY2F0aW9uOwogCXJlc3VsdC0+c3RtdF9sZW4gPSBwYXJz ZS0+c3RtdF9sZW47CiAKQEAgLTY1OSw2ICs2NjMsMTIgQEAgc3VicXVlcnlfcGxhbm5lcihQbGFu bmVyR2xvYmFsICpnbG9iLCBRdWVyeSAqcGFyc2UsCiAJICovCiAJcHVsbF91cF9zdWJxdWVyaWVz KHJvb3QpOwogCisJLyoKKwkgKiBDaGVjayBpZiBzb21lIHN1YnF1ZXJ5IHVzZXMgc2NoZW1hIHZh cmlhYmxlLiBGbGFnIGhhc1NjaGVtYVZhcmlhYmxlCisJICogc2hvdWxkIGJlIHRydWUgaWYgcXVl cnkgb3Igc29tZSBzdWJxdWVyeSB1c2VzIGFueSBzY2hlbWEgdmFyaWFibGUuCisJICovCisJcHVs bF91cF9oYXNfc2NoZW1hX3ZhcmlhYmxlKHJvb3QpOworCiAJLyoKIAkgKiBJZiB0aGlzIGlzIGEg c2ltcGxlIFVOSU9OIEFMTCBxdWVyeSwgZmxhdHRlbiBpdCBpbnRvIGFuIGFwcGVuZHJlbC4gV2UK IAkgKiBkbyB0aGlzIG5vdyBiZWNhdXNlIGl0IHJlcXVpcmVzIGFwcGx5aW5nIHB1bGxfdXBfc3Vi cXVlcmllcyB0byB0aGUgbGVhZgpAQCAtMjE3Miw3ICsyMTgyLDcgQEAgZ3JvdXBpbmdfcGxhbm5l cihQbGFubmVySW5mbyAqcm9vdCwgYm9vbCBpbmhlcml0YW5jZV91cGRhdGUsCiAJCSAqIElmIHRo aXMgaXMgYW4gSU5TRVJUL1VQREFURS9ERUxFVEUsIGFuZCB3ZSdyZSBub3QgYmVpbmcgY2FsbGVk IGZyb20KIAkJICogaW5oZXJpdGFuY2VfcGxhbm5lciwgYWRkIHRoZSBNb2RpZnlUYWJsZSBub2Rl LgogCQkgKi8KLQkJaWYgKHBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUICYmICFpbmhl cml0YW5jZV91cGRhdGUpCisJCWlmIChwYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAm JiBwYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1BMQU5fVVRJTElUWSAmJiAhaW5oZXJpdGFuY2Vf dXBkYXRlKQogCQl7CiAJCQlMaXN0CSAgICp3aXRoQ2hlY2tPcHRpb25MaXN0czsKIAkJCUxpc3QJ ICAgKnJldHVybmluZ0xpc3RzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4 IGY2NmYzOWQ4YzYuLjhkYjBhZTA1MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3NldHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZz LmMKQEAgLTE0MCw2ICsxNDAsNyBAQCBzdGF0aWMgTGlzdCAqc2V0X3JldHVybmluZ19jbGF1c2Vf cmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJaW50IHJ0b2Zmc2V0KTsKIHN0 YXRpYyBib29sIGV4dHJhY3RfcXVlcnlfZGVwZW5kZW5jaWVzX3dhbGtlcihOb2RlICpub2RlLAog CQkJCQkJCQkgIFBsYW5uZXJJbmZvICpjb250ZXh0KTsKK3N0YXRpYyBib29sIHB1bGxfdXBfaGFz X3NjaGVtYV92YXJpYWJsZV93YWxrZXIoTm9kZSAqbm9kZSwgUGxhbm5lckluZm8gKnJvb3QpOwog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xMDA0LDYgKzEwMDUsNTAgQEAgc2V0X3Bs YW5fcmVmcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0b2Zmc2V0KQogCXJl dHVybiBwbGFuOwogfQogCisvKgorICogU2VhcmNoIHVzYWdlIG9mIHNjaGVtYSB2YXJpYWJsZXMg aW4gc3VicXVlcmllcworICovCit2b2lkCitwdWxsX3VwX2hhc19zY2hlbWFfdmFyaWFibGUoUGxh bm5lckluZm8gKnJvb3QpCit7CisJUXVlcnkgKnF1ZXJ5ID0gcm9vdC0+cGFyc2U7CisKKwlpZiAo cXVlcnktPmhhc1NjaGVtYVZhcmlhYmxlKQorCXsKKwkJcm9vdC0+aGFzU2NoZW1hVmFyaWFibGUg PSB0cnVlOworCX0KKwllbHNlCisJeworCQkodm9pZCkgcXVlcnlfdHJlZV93YWxrZXIocXVlcnks CisJCQkJCQkJCSBwdWxsX3VwX2hhc19zY2hlbWFfdmFyaWFibGVfd2Fsa2VyLAorCQkJCQkJCQkg KHZvaWQgKikgcm9vdCwgMCk7CisJfQorfQorCitzdGF0aWMgYm9vbAorcHVsbF91cF9oYXNfc2No ZW1hX3ZhcmlhYmxlX3dhbGtlcihOb2RlICpub2RlLCBQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlp ZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKElzQShub2RlLCBRdWVyeSkp CisJeworCQlRdWVyeSAqcXVlcnkgPSAoUXVlcnkgKikgbm9kZTsKKworCQlpZiAocXVlcnktPmhh c1NjaGVtYVZhcmlhYmxlKQorCQl7CisJCQlyb290LT5oYXNTY2hlbWFWYXJpYWJsZSA9IHRydWU7 CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQkvKiBSZWN1cnNlIGludG8gc3Vic2VsZWN0cyAq LworCQlyZXR1cm4gcXVlcnlfdHJlZV93YWxrZXIoKFF1ZXJ5ICopIG5vZGUsCisJCQkJCQkJCSBw dWxsX3VwX2hhc19zY2hlbWFfdmFyaWFibGVfd2Fsa2VyLAorCQkJCQkJCQkgKHZvaWQgKikgcm9v dCwgMCk7CisJfQorCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIHB1bGxfdXBf aGFzX3NjaGVtYV92YXJpYWJsZV93YWxrZXIsCisJCQkJCQkJCSAgKHZvaWQgKikgcm9vdCk7Cit9 CisKIC8qCiAgKiBzZXRfaW5kZXhvbmx5c2Nhbl9yZWZlcmVuY2VzCiAgKgkJRG8gc2V0X3BsYW5f cmVmZXJlbmNlcyBwcm9jZXNzaW5nIG9uIGFuIEluZGV4T25seVNjYW4KQEAgLTE0MzksMTAgKzE0 ODQsMTQgQEAgZml4X2V4cHJfY29tbW9uKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlKQog LyoKICAqIGZpeF9wYXJhbV9ub2RlCiAgKgkJRG8gc2V0X3BsYW5fcmVmZXJlbmNlcyBwcm9jZXNz aW5nIG9uIGEgUGFyYW0KKyAqCQlDb2xsZWN0IHNjaGVtYSB2YXJpYWJsZXMgbGlzdCBhbmQgcmVw bGFjZSB2YXJpYWJsZSBvaWQgYnkKKyAqCQlpbmRleCB0byBjb2xsZWN0ZWQgbGlzdC4KICAqCiAg KiBJZiBpdCdzIGEgUEFSQU1fTVVMVElFWFBSLCByZXBsYWNlIGl0IHdpdGggdGhlIGFwcHJvcHJp YXRlIFBhcmFtIGZyb20KICAqIHJvb3QtPm11bHRpZXhwcl9wYXJhbXM7IG90aGVyd2lzZSBubyBj aGFuZ2UgaXMgbmVlZGVkLgogICogSnVzdCBmb3IgcGFyYW5vaWEncyBzYWtlLCB3ZSBtYWtlIGEg Y29weSBvZiB0aGUgbm9kZSBpbiBlaXRoZXIgY2FzZS4KKyAqCisgKiBJZiBpdCdzIGEgUEFSQU1f VkFSSUFCTEUsIHRoZW4gd2Ugc2hvdWxkIHRvIGNhbGN1bGF0ZSBwYXJhbWlkLgogICovCiBzdGF0 aWMgTm9kZSAqCiBmaXhfcGFyYW1fbm9kZShQbGFubmVySW5mbyAqcm9vdCwgUGFyYW0gKnApCkBA IC0xNDYxLDYgKzE1MTAsNTIgQEAgZml4X3BhcmFtX25vZGUoUGxhbm5lckluZm8gKnJvb3QsIFBh cmFtICpwKQogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgUEFSQU1fTVVMVElFWFBSIElEOiAl ZCIsIHAtPnBhcmFtaWQpOwogCQlyZXR1cm4gY29weU9iamVjdChsaXN0X250aChwYXJhbXMsIGNv bG5vIC0gMSkpOwogCX0KKworCWlmIChwLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUpCisJ eworCQlMaXN0Q2VsbCAgICpsYzsKKwkJaW50CQkJbiA9IDA7CisJCWJvb2wJCWZvdW5kID0gZmFs c2U7CisKKwkJLyogV2Ugd2lsbCBtb2RpZnkgb2JqZWN0ICovCisJCXAgPSAoUGFyYW0gKikgY29w eU9iamVjdChwKTsKKworCQkvKgorCQkgKiBOb3csIHdlIGNhbiBhY3R1YWxpemUgbGlzdCBvZiBz Y2hlbWEgdmFyaWFibGVzLCBhbmQgd2UgY2FuCisJCSAqIGNvbXBsZXRlIHBhcmFtaWQgcGFyYW1l dGVyLgorCQkgKi8KKwkJZm9yZWFjaChsYywgcm9vdC0+Z2xvYi0+c2NoZW1hVmFyaWFibGVzKQor CQl7CisJCQlpZiAobGZpcnN0X29pZChsYykgPT0gcC0+cGFyYW12YXJpZCkKKwkJCXsKKwkJCQlw LT5wYXJhbWlkID0gbjsKKwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlu ICs9IDE7CisJCX0KKworCQlpZiAoIWZvdW5kKQorCQl7CisJCQlQbGFuSW52YWxJdGVtICppbnZh bF9pdGVtID0gbWFrZU5vZGUoUGxhbkludmFsSXRlbSk7CisKKwkJCS8qIHBhcmFtaWQgaXMgc3Rp bGwgc2NoZW1hIHZhcmlhYmxlIGlkICovCisJCQlpbnZhbF9pdGVtLT5jYWNoZUlkID0gVkFSSUFC TEVPSUQ7CisJCQlpbnZhbF9pdGVtLT5oYXNoVmFsdWUgPSBHZXRTeXNDYWNoZUhhc2hWYWx1ZTEo VkFSSUFCTEVPSUQsCisJCQkJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHAtPnBhcmFtdmFyaWQp KTsKKworCQkJLyogQXBwZW5kIHRoaXMgdmFyaWFibGUgdG8gZ2xvYmFsLCByZWdpc3RlciBkZXBl bmRlbmN5ICovCisJCQlyb290LT5nbG9iLT5pbnZhbEl0ZW1zID0gbGFwcGVuZChyb290LT5nbG9i LT5pbnZhbEl0ZW1zLAorCQkJCQkJCQkJCQkJCQkJCWludmFsX2l0ZW0pOworCQkJcm9vdC0+Z2xv Yi0+c2NoZW1hVmFyaWFibGVzID0gbGFwcGVuZF9vaWQocm9vdC0+Z2xvYi0+c2NoZW1hVmFyaWFi bGVzLAorCQkJCQkJCQkJCQkJCQkJCSAgcC0+cGFyYW12YXJpZCk7CisKKwkJCXAtPnBhcmFtaWQg PSBuOworCQl9CisKKwkJcmV0dXJuIChOb2RlICopIHA7CisJfQorCiAJcmV0dXJuIChOb2RlICop IGNvcHlPYmplY3QocCk7CiB9CiAKQEAgLTE0NzIsNyArMTU2Nyw5IEBAIGZpeF9wYXJhbV9ub2Rl KFBsYW5uZXJJbmZvICpyb290LCBQYXJhbSAqcCkKICAqIHJlcGxhY2luZyBQQVJBTV9NVUxUSUVY UFIgUGFyYW1zLCBleHBhbmRpbmcgUGxhY2VIb2xkZXJWYXJzLAogICogcmVwbGFjaW5nIEFnZ3Jl ZiBub2RlcyB0aGF0IHNob3VsZCBiZSByZXBsYWNlZCBieSBpbml0cGxhbiBvdXRwdXQgUGFyYW1z LAogICogbG9va2luZyB1cCBvcGVyYXRvciBvcGNvZGUgaW5mbyBmb3IgT3BFeHByIGFuZCByZWxh dGVkIG5vZGVzLAotICogYW5kIGFkZGluZyBPSURzIGZyb20gcmVnY2xhc3MgQ29uc3Qgbm9kZXMg aW50byByb290LT5nbG9iLT5yZWxhdGlvbk9pZHMuCisgKiBhZGRpbmcgT0lEcyBmcm9tIHJlZ2Ns YXNzIENvbnN0IG5vZGVzIGludG8gcm9vdC0+Z2xvYi0+cmVsYXRpb25PaWRzLAorICogYW5kIHJl cGxhY2luZyBQQVJBTV9WQVJJQUJMRSBwYXJhbWlkLCB0aGF0IGlzIG9pZCBvZiBzY2hlbWEgdmFy aWFibGUKKyAqIHRvIG9mZnNldCB0byBhcnJheSBvZiBieSBxdWVyeSB1c2VkIHNjaGVtYSB2YXJp YWJsZXMuCiAgKi8KIHN0YXRpYyBOb2RlICoKIGZpeF9zY2FuX2V4cHIoUGxhbm5lckluZm8gKnJv b3QsIE5vZGUgKm5vZGUsIGludCBydG9mZnNldCkKQEAgLTE0ODUsNyArMTU4Miw4IEBAIGZpeF9z Y2FuX2V4cHIoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUsIGludCBydG9mZnNldCkKIAlp ZiAocnRvZmZzZXQgIT0gMCB8fAogCQlyb290LT5tdWx0aWV4cHJfcGFyYW1zICE9IE5JTCB8fAog CQlyb290LT5nbG9iLT5sYXN0UEhJZCAhPSAwIHx8Ci0JCXJvb3QtPm1pbm1heF9hZ2dzICE9IE5J TCkKKwkJcm9vdC0+bWlubWF4X2FnZ3MgIT0gTklMIHx8CisJCXJvb3QtPmhhc1NjaGVtYVZhcmlh YmxlKQogCXsKIAkJcmV0dXJuIGZpeF9zY2FuX2V4cHJfbXV0YXRvcihub2RlLCAmY29udGV4dCk7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwppbmRleCA4NjAzZmVlZjJi Li4yOTIzZTNmY2M3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw dGxpc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwpAQCAt NzEsNiArNzEsNyBAQCBwcmVwcm9jZXNzX3RhcmdldGxpc3QoUGxhbm5lckluZm8gKnJvb3QpCiB7 CiAJUXVlcnkJICAgKnBhcnNlID0gcm9vdC0+cGFyc2U7CiAJaW50CQkJcmVzdWx0X3JlbGF0aW9u ID0gcGFyc2UtPnJlc3VsdFJlbGF0aW9uOworCWludAkJCXJlc3VsdF92YXJpYWJsZSA9IHBhcnNl LT5yZXN1bHRWYXJpYWJsZTsKIAlMaXN0CSAgICpyYW5nZV90YWJsZSA9IHBhcnNlLT5ydGFibGU7 CiAJQ21kVHlwZQkJY29tbWFuZF90eXBlID0gcGFyc2UtPmNvbW1hbmRUeXBlOwogCVJhbmdlVGJs RW50cnkgKnRhcmdldF9ydGUgPSBOVUxMOwpAQCAtOTYsNiArOTcsMTAgQEAgcHJlcHJvY2Vzc190 YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290KQogCiAJCXRhcmdldF9yZWxhdGlvbiA9IGhlYXBf b3Blbih0YXJnZXRfcnRlLT5yZWxpZCwgTm9Mb2NrKTsKIAl9CisJZWxzZSBpZiAocmVzdWx0X3Zh cmlhYmxlKQorCXsKKwkJQXNzZXJ0KGNvbW1hbmRfdHlwZSA9PSBDTURfUExBTl9VVElMSVRZKTsK Kwl9CiAJZWxzZQogCQlBc3NlcnQoY29tbWFuZF90eXBlID09IENNRF9TRUxFQ1QpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggZWU2ZjRjZGY0ZC4uZjIzMmM2Y2ZkMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtMTI2OCw3ICsxMjY4LDggQEAg bWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIoTm9kZSAqbm9kZSwgbWF4X3BhcmFsbGVsX2hhemFy ZF9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5v ZGU7CiAKLQkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOKQorCQlpZiAocGFy YW0tPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4gfHwKKwkJCXBhcmFtLT5wYXJhbWtpbmQgPT0g UEFSQU1fVkFSSUFCTEUpCiAJCQlyZXR1cm4gZmFsc2U7CiAKIAkJaWYgKHBhcmFtLT5wYXJhbWtp bmQgIT0gUEFSQU1fRVhFQyB8fApAQCAtNDgxMyw3ICs0ODE0LDcgQEAgc3Vic3RpdHV0ZV9hY3R1 YWxfcGFyYW1ldGVyc19tdXRhdG9yKE5vZGUgKm5vZGUsCiB7CiAJaWYgKG5vZGUgPT0gTlVMTCkK IAkJcmV0dXJuIE5VTEw7Ci0JaWYgKElzQShub2RlLCBQYXJhbSkpCisJaWYgKElzQShub2RlLCBQ YXJhbSkgJiYgKChQYXJhbSAqKSBub2RlKS0+cGFyYW1raW5kICE9IFBBUkFNX1ZBUklBQkxFKQog CXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3BsYW5jYXQuYwppbmRleCA4MzY5ZTNhZDYyLi5mYzBjZjM0YzdkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBnZXRfcmVsYXRp b25fY29uc3RyYWludHMoUGxhbm5lckluZm8gKnJvb3QsCiAJICogZGVzY3JpcHRvciwgaW5zdGVh ZCBvZiBjb25zdHJhaW50IGV4Y2x1c2lvbiB3aGljaCBpcyBkcml2ZW4gYnkgdGhlCiAJICogaW5k aXZpZHVhbCBwYXJ0aXRpb24ncyBwYXJ0aXRpb24gY29uc3RyYWludC4KIAkgKi8KLQlpZiAoZW5h YmxlX3BhcnRpdGlvbl9wcnVuaW5nICYmIHJvb3QtPnBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURf U0VMRUNUKQorCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgJiYgcm9vdC0+cGFyc2UtPmNv bW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgJiYgcm9vdC0+cGFyc2UtPmNvbW1hbmRUeXBlICE9IENN RF9QTEFOX1VUSUxJVFkpCiAJewogCQlMaXN0CSAgICpwY3F1YWwgPSBSZWxhdGlvbkdldFBhcnRp dGlvblF1YWwocmVsYXRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCBjNjAxYjZkNDBkLi44 NmUyMWQ1MTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTI1LDcgKzI1LDEwIEBACiAjaW5jbHVk ZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFy aWFibGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTQ0LDYgKzQ3LDggQEAKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJl ZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCisjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9yZWwuaCIKIAogCkBAIC03OCw2ICs4Myw4IEBAIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtQ3Jl YXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICAgQ3JlYXRlVGFibGVB c1N0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1DYWxsU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJICBDYWxsU3RtdCAqc3RtdCk7CitzdGF0aWMgUXVlcnkgKnRyYW5zZm9y bUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCSAgTGV0U3RtdCAqc3RtdCk7CiBzdGF0 aWMgdm9pZCB0cmFuc2Zvcm1Mb2NraW5nQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUXVlcnkg KnFyeSwKIAkJCQkJICAgTG9ja2luZ0NsYXVzZSAqbGMsIGJvb2wgcHVzaGVkRG93bik7CiAjaWZk ZWYgUkFXX0VYUFJFU1NJT05fQ09WRVJBR0VfVEVTVApAQCAtMjY3LDYgKzI3NCw3IEBAIHRyYW5z Zm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJCWNhc2UgVF9J bnNlcnRTdG10OgogCQljYXNlIFRfVXBkYXRlU3RtdDoKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CisJ CWNhc2UgVF9MZXRTdG10OgogCQkJKHZvaWQpIHRlc3RfcmF3X2V4cHJlc3Npb25fY292ZXJhZ2Uo cGFyc2VUcmVlLCBOVUxMKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMzI3LDYgKzMzNSwx MSBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQog CQkJCQkJCQkJICAgKENhbGxTdG10ICopIHBhcnNlVHJlZSk7CiAJCQlicmVhazsKIAorCQljYXNl IFRfTGV0U3RtdDoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUxldFN0bXQocHN0YXRlLAorCQkJCQkJ CQkJICAoTGV0U3RtdCAqKSBwYXJzZVRyZWUpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAog CQkJLyoKQEAgLTM2Nyw2ICszODAsNyBAQCBhbmFseXplX3JlcXVpcmVzX3NuYXBzaG90KFJhd1N0 bXQgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CiAJCWNhc2UgVF9VcGRhdGVTdG10 OgogCQljYXNlIFRfU2VsZWN0U3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJCQlyZXN1bHQgPSB0 cnVlOwogCQkJYnJlYWs7CiAKQEAgLTQ1NCw2ICs0NjgsOCBAQCB0cmFuc2Zvcm1EZWxldGVTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCkKIAlpZiAocHN0YXRlLT5wX2hh c0FnZ3MpCiAJCXBhcnNlQ2hlY2tBZ2dyZWdhdGVzKHBzdGF0ZSwgcXJ5KTsKIAorCXFyeS0+aGFz U2NoZW1hVmFyaWFibGUgPSBwc3RhdGUtPnBfaGFzU2NoZW1hVmFyaWFibGU7CisKIAlhc3NpZ25f cXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAKIAlyZXR1cm4gcXJ5OwpAQCAtODgwLDYg Kzg5Niw3IEBAIHRyYW5zZm9ybUluc2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRT dG10ICpzdG10KQogCiAJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNS RnM7CiAJcXJ5LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKwlxcnktPmhh c1NjaGVtYVZhcmlhYmxlID0gcHN0YXRlLT5wX2hhc1NjaGVtYVZhcmlhYmxlOwogCiAJYXNzaWdu X3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC0xMzI3LDYgKzEzNDQsOCBAQCB0 cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCkK IAkJCQkJCQkgICAoTG9ja2luZ0NsYXVzZSAqKSBsZmlyc3QobCksIGZhbHNlKTsKIAl9CiAKKwlx cnktPmhhc1NjaGVtYVZhcmlhYmxlID0gcHN0YXRlLT5wX2hhc1NjaGVtYVZhcmlhYmxlOworCiAJ YXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCiAJcmV0dXJuIHFyeTsKQEAg LTE1NjEsMTIgKzE1ODAsMjI5IEBAIHRyYW5zZm9ybVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpw c3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5qb2ludHJlZSA9IG1ha2VGcm9tRXhwcihw c3RhdGUtPnBfam9pbmxpc3QsIE5VTEwpOwogCiAJcXJ5LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+ cF9oYXNTdWJMaW5rczsKKwlxcnktPmhhc1NjaGVtYVZhcmlhYmxlID0gcHN0YXRlLT5wX2hhc1Nj aGVtYVZhcmlhYmxlOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwog CiAJcmV0dXJuIHFyeTsKIH0KIAorLyoKKyAqIHRyYW5zZm9ybUxldFN0bXQgLQorICoJICB0cmFu c2Zvcm0gYW4gTGV0IFN0YXRlbWVudAorICovCitzdGF0aWMgUXVlcnkgKgordHJhbnNmb3JtTGV0 U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIExldFN0bXQgKnN0bXQpCit7CisJUXVlcnkJICAgKnFy eSA9IG1ha2VOb2RlKFF1ZXJ5KTsKKwlMaXN0CSAgICpleHByTGlzdCA9IE5JTDsKKwlMaXN0CSAg ICpleHByTGlzdENvZXIgPSBOSUw7CisJTGlzdAkgICAqaW5kaXJlY3Rpb24gPSBOSUw7CisJTGlz dENlbGwgICAqbGM7CisJUXVlcnkJICAgKnNlbGVjdFF1ZXJ5OworCWludAkJCWkgPSAwOworCisJ T2lkCQkJdmFyaWQ7CisKKwlQYXJzZUV4cHJLaW5kIHN2X2V4cHJfa2luZDsKKwljaGFyCSAgICph dHRybmFtZSA9IE5VTEw7CisJYm9vbAkJbm90X3VuaXF1ZTsKKwlib29sCQlpc19yb3d0eXBlOwor CU9pZAkJCXR5cGlkOworCWludDMyCQl0eXBtb2Q7CisJT2lkCQkJY29sbGlkOworCisJQWNsUmVz dWx0CWFjbHJlc3VsdDsKKwlMaXN0CSAgICpuYW1lcyA9IE5VTEw7CisJaW50CQkJaW5kaXJlY3Rp b25fc3RhcnQ7CisKKwlzdl9leHByX2tpbmQgPSBwc3RhdGUtPnBfZXhwcl9raW5kOworCXBzdGF0 ZS0+cF9leHByX2tpbmQgPSBFWFBSX0tJTkRfTEVUOworCisJLyogVGhlcmUgY2FuJ3QgYmUgYW55 IG91dGVyIFdJVEggdG8gd29ycnkgYWJvdXQgKi8KKwlBc3NlcnQocHN0YXRlLT5wX2N0ZW5hbWVz cGFjZSA9PSBOSUwpOworCisJbmFtZXMgPSBOYW1lc0Zyb21MaXN0KHN0bXQtPnRhcmdldCk7CisK Kwl2YXJpZCA9IGlkZW50aWZ5X3ZhcmlhYmxlKG5hbWVzLCAmYXR0cm5hbWUsICZub3RfdW5pcXVl KTsKKwlpZiAobm90X3VuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0FNQklHVU9VU19QQVJBTUVURVIpLAorCQkJCSBlcnJtc2coInRhcmdldCBcIiVzXCIgb2Yg TEVUIGNvbW1hbmQgaXMgYW1iaWd1b3VzIiwKKwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMp KSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisK KwlpZiAoIU9pZElzVmFsaWQodmFyaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJp YWJsZSBcIiVzXCIgZG9lc24ndCBleGlzdHMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5h bWVzKSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24p KSk7CisKKworCXFyeS0+cmVzdWx0VmFyaWFibGUgPSB2YXJpZDsKKworCS8qIFNpbXBsZSBiZWhh dmUsIHdoZW4gTEVUIHh4ID0gREVGQVVMVCB3YXMgdXNlZCAqLworCWlmIChzdG10LT5zZWxlY3RT dG10ID09IE5VTEwpCisJeworCQlpZiAoYXR0cm5hbWUgIT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkgZXJy bXNnKCJvbmx5IGNvbXBsZXRlIHZhcmlhYmxlIGNhbiBiZSBzZXQgdG8gZGVmYXVsdCIpLAorCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKworCQlxcnkt PmNvbW1hbmRUeXBlID0gQ01EX1VUSUxJVFk7CisJCXFyeS0+dXRpbGl0eVN0bXQgPSAoTm9kZSAq KSBzdG10OworCisJCXJldHVybiBxcnk7CisJfQorCisJLyogRXhlYyB0aGlzIGNvbW1hbmQgYXMg dXRpbGl0eSAqLworCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfUExBTl9VVElMSVRZOworCXFyeS0+ dXRpbGl0eVN0bXQgPSAoTm9kZSAqKSBzdG10OworCisJZ2V0X3NjaGVtYV92YXJpYWJsZV90eXBl X3R5cG1vZF9jb2xsaWQodmFyaWQsICZ0eXBpZCwgJnR5cG1vZCwgJmNvbGxpZCk7CisKKwlpc19y b3d0eXBlID0gdHlwZV9pc19yb3d0eXBlKHR5cGlkKTsKKworCWlmIChhdHRybmFtZSAmJiAhaXNf cm93dHlwZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09C SkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJ0YXJnZXQgdmFyaWFibGUgXCIlc1wiIGlzIG5vdCBy b3cgdHlwZSIsCisJCQkJCQlzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUodmFyaWQpKSwKKwkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKworCWFjbHJlc3Vs dCA9IHBnX3ZhcmlhYmxlX2FjbGNoZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1dSSVRFKTsK KwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcihhY2xyZXN1 bHQsIE9CSkVDVF9WQVJJQUJMRSwgTmFtZUxpc3RUb1N0cmluZyhuYW1lcykpOworCisJc2VsZWN0 UXVlcnkgPSB0cmFuc2Zvcm1TdG10KHBzdGF0ZSwgc3RtdC0+c2VsZWN0U3RtdCk7CisKKwkvKiBU aGUgZ3JhbW1hciBzaG91bGQgaGF2ZSBwcm9kdWNlZCBhIFNFTEVDVCAqLworCWlmICghSXNBKHNl bGVjdFF1ZXJ5LCBRdWVyeSkgfHwKKwkJc2VsZWN0UXVlcnktPmNvbW1hbmRUeXBlICE9IENNRF9T RUxFQ1QpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG5vbi1TRUxFQ1QgY29tbWFuZCBpbiBM RVQgLi4uIFNFTEVDVCIpOworCisJLyotLS0tLS0tLS0tCisJICogR2VuZXJhdGUgYW4gZXhwcmVz c2lvbiBsaXN0IGZvciB0aGUgTEVUIHRoYXQgc2VsZWN0cyBhbGwgdGhlCisJICogbm9uLXJlc2p1 bmsgY29sdW1ucyBmcm9tIHRoZSBzdWJxdWVyeS4KKwkgKi0tLS0tLS0tLS0KKwkgKi8KKwlleHBy TGlzdCA9IE5JTDsKKwlmb3JlYWNoKGxjLCBzZWxlY3RRdWVyeS0+dGFyZ2V0TGlzdCkKKwl7CisJ CVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKTsKKworCQlpZiAo dGxlLT5yZXNqdW5rKQorCQkJY29udGludWU7CisKKwkJZXhwckxpc3QgPSBsYXBwZW5kKGV4cHJM aXN0LCB0bGUtPmV4cHIpOworCX0KKworCS8qCisJICogQmVjYXVzZSBkb2Vzbid0IHN1cHBvcnQg cGF0dGVybiBtYXRjaGluZywgZG9uJ3QgYWxsb3cgbXVsdGljb2x1bW4gcmVzdWx0CisJICovCisJ aWYgKGxpc3RfbGVuZ3RoKGV4cHJMaXN0KSAhPSAxKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJleHByZXNzaW9uIGlz IG5vdCBzY2FsYXIgdmFsdWUiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJ CQkJCQkJCWV4cHJMb2NhdGlvbigoTm9kZSAqKSBleHByTGlzdCkpKSk7CisKKwlpbmRpcmVjdGlv bl9zdGFydCA9IGxpc3RfbGVuZ3RoKG5hbWVzKSAtIChhdHRybmFtZSA/IDEgOiAwKTsKKwlpbmRp cmVjdGlvbiA9IGxpc3RfY29weV90YWlsKHN0bXQtPnRhcmdldCwgaW5kaXJlY3Rpb25fc3RhcnQp OworCisJZXhwckxpc3RDb2VyID0gTklMOworCWZvcmVhY2gobGMsIGV4cHJMaXN0KQorCXsKKwkJ Tm9kZQkgICAqb3JpZ19leHByID0gKE5vZGUqKSBsZmlyc3QobGMpOworCQlPaWQJCQlleHBydHlw aWQgPSBleHByVHlwZSgoTm9kZSAqKSBvcmlnX2V4cHIpOworCQlQYXJhbSAqcGFyYW0gPSBtYWtl Tm9kZShQYXJhbSk7CisJCUV4cHIJICAgKmV4cHIgPSBOVUxMOworCisJCXBhcmFtLT5wYXJhbWtp bmQgPSBQQVJBTV9WQVJJQUJMRTsKKwkJcGFyYW0tPnBhcmFtdmFyaWQgPSB2YXJpZDsKKwkJcGFy YW0tPnBhcmFtdHlwZSA9IHR5cGlkOworCQlwYXJhbS0+cGFyYW10eXBtb2QgPSB0eXBtb2Q7CisK KwkJaWYgKGluZGlyZWN0aW9uICE9IE5VTEwpCisJCXsKKwkJCWJvb2wJCXRhcmdldElzQXJyYXk7 CisJCQljaGFyCSAgICAqdGFyZ2V0TmFtZTsKKworCQkJdGFyZ2V0TmFtZSA9IGF0dHJuYW1lICE9 IE5VTEwgPyBhdHRybmFtZSA6IGdldF9zY2hlbWFfdmFyaWFibGVfbmFtZSh2YXJpZCk7CisJCQl0 YXJnZXRJc0FycmF5ID0gT2lkSXNWYWxpZChnZXRfZWxlbWVudF90eXBlKHR5cGlkKSk7CisKKwkJ CXBzdGF0ZS0+cF9oYXNTY2hlbWFWYXJpYWJsZSA9IHRydWU7CisKKwkJCWV4cHIgPSAoRXhwciAq KQorCQkJCQl0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24ocHN0YXRlLAorCQkJCQkJCQkJ CQkJKE5vZGUgKikgcGFyYW0sCisJCQkJCQkJCQkJCQl0YXJnZXROYW1lLAorCQkJCQkJCQkJCQkJ dGFyZ2V0SXNBcnJheSwKKwkJCQkJCQkJCQkJCXR5cGlkLAorCQkJCQkJCQkJCQkJdHlwbW9kLAor CQkJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCWxpc3RfaGVhZChpbmRpcmVjdGlv biksCisJCQkJCQkJCQkJCQkoTm9kZSAqKSBvcmlnX2V4cHIsCisJCQkJCQkJCQkJCQlzdG10LT5s b2NhdGlvbik7CisJCX0KKwkJZWxzZQorCQkJZXhwciA9IChFeHByICopCisJCQkJCWNvZXJjZV90 b190YXJnZXRfdHlwZShwc3RhdGUsCisJCQkJCQkJCQkJCShOb2RlICopIG9yaWdfZXhwciwKKwkJ CQkJCQkJCQkJZXhwcnR5cGlkLAorCQkJCQkJCQkJCQl0eXBpZCwgdHlwbW9kLAorCQkJCQkJCQkJ CQlDT0VSQ0lPTl9BU1NJR05NRU5ULAorCQkJCQkJCQkJCQlDT0VSQ0VfSU1QTElDSVRfQ0FTVCwK KwkJCQkJCQkJCQkJc3RtdC0+bG9jYXRpb24pOworCisJCWlmIChleHByID09IE5VTEwpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwK KwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGlzIG9mIHR5cGUgJXMsIgorCQkJCQkJCSAg IiBidXQgZXhwcmVzc2lvbiBpcyBvZiB0eXBlICVzIiwKKwkJCQkJCXNjaGVtYV92YXJpYWJsZV9n ZXRfbmFtZSh2YXJpZCksCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUodHlwaWQpLAorCQkJCQkJICBm b3JtYXRfdHlwZV9iZShleHBydHlwaWQpKSwKKwkJCQkgZXJyaGludCgiWW91IHdpbGwgbmVlZCB0 byByZXdyaXRlIG9yIGNhc3QgdGhlIGV4cHJlc3Npb24uIiksCisJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBvcmlnX2V4cHIpKSkpOworCisJCWV4 cHJMaXN0Q29lciA9IGxhcHBlbmQoZXhwckxpc3RDb2VyLCBleHByKTsKKwl9CisKKwkvKgorCSAq IEdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIGNvbXB1dGVkIGxpc3Qgb2Yg ZXhwcmVzc2lvbnMuCisJICogQWxzbywgbWFyayBhbGwgdGhlIHRhcmdldCBjb2x1bW5zIGFzIG5l ZWRpbmcgaW5zZXJ0IHBlcm1pc3Npb25zLgorCSAqLworCXFyeS0+dGFyZ2V0TGlzdCA9IE5JTDsK Kwlmb3JlYWNoKGxjLCBleHByTGlzdENvZXIpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIg KikgbGZpcnN0KGxjKTsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQl0bGUgPSBtYWtlVGFyZ2V0 RW50cnkoZXhwciwKKwkJCQkJCQkgIGkgKyAxLAorCQkJCQkJCSAgRmlndXJlQ29sbmFtZSgoTm9k ZSAqKWV4cHIpLAorCQkJCQkJCSAgZmFsc2UpOworCQlxcnktPnRhcmdldExpc3QgPSBsYXBwZW5k KHFyeS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwl9CisKKwkvKiBkb25lIGJ1aWxkaW5nIHRoZSByYW5n ZSB0YWJsZSBhbmQgam9pbnRyZWUgKi8KKwlxcnktPnJ0YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7 CisJcXJ5LT5qb2ludHJlZSA9IG1ha2VGcm9tRXhwcihwc3RhdGUtPnBfam9pbmxpc3QsIE5VTEwp OworCisJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CisJcXJ5 LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKwlxcnktPmhhc1NjaGVtYVZh cmlhYmxlID0gcHN0YXRlLT5wX2hhc1NjaGVtYVZhcmlhYmxlOworCisJYXNzaWduX3F1ZXJ5X2Nv bGxhdGlvbnMocHN0YXRlLCBxcnkpOworCisJcHN0YXRlLT5wX2V4cHJfa2luZCA9IHN2X2V4cHJf a2luZDsKKworCXJldHVybiBxcnk7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1TZXRPcGVyYXRpb25T dG10IC0KICAqCSAgdHJhbnNmb3JtcyBhIHNldC1vcGVyYXRpb25zIHRyZWUKQEAgLTE3OTksNiAr MjAzNSw4IEBAIHRyYW5zZm9ybVNldE9wZXJhdGlvblN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBT ZWxlY3RTdG10ICpzdG10KQogCQkJCQkJCSAgIChMb2NraW5nQ2xhdXNlICopIGxmaXJzdChsKSwg ZmFsc2UpOwogCX0KIAorCXFyeS0+aGFzU2NoZW1hVmFyaWFibGUgPSBwc3RhdGUtPnBfaGFzU2No ZW1hVmFyaWFibGU7CisKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAK IAlyZXR1cm4gcXJ5OwpAQCAtMjI3OCw2ICsyNTE2LDcgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAKIAlxcnktPmhhc1RhcmdldFNS RnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc1N1YkxpbmtzID0gcHN0YXRl LT5wX2hhc1N1YkxpbmtzOworCXFyeS0+aGFzU2NoZW1hVmFyaWFibGUgPSBwc3RhdGUtPnBfaGFz U2NoZW1hVmFyaWFibGU7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CmluZGV4IDRiZDIyMjNmMjYuLjlmNTIyOTkxNGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpA QCAtMjExLDYgKzIxMSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSm9pblR5cGUJCQlq dHlwZTsKIAlEcm9wQmVoYXZpb3IJCWRiZWhhdmlvcjsKIAlPbkNvbW1pdEFjdGlvbgkJb25jb21t aXQ7CisJVmFyaWFibGVFT1hBY3Rpb24Jb25lb3hhY3Rpb247CiAJTGlzdAkJCQkqbGlzdDsKIAlO b2RlCQkJCSpub2RlOwogCVZhbHVlCQkJCSp2YWx1ZTsKQEAgLTI1Nyw4ICsyNTgsOCBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25zdHJhaW50c1NldFN0bXQgQ29weVN0bXQgQ3JlYXRl QXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNyZWF0ZURvbWFpblN0bXQgQ3JlYXRlRXh0ZW5zaW9u U3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRlT3BDbGFzc1N0bXQKIAkJQ3JlYXRlT3BGYW1pbHlT dG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0ZVBMYW5nU3RtdAotCQlDcmVhdGVTY2hlbWFTdG10 IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQgQ3JlYXRlVGFibGVTcGFj ZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3Jl aWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2NoZW1hVmFyU3RtdCBDcmVh dGVTZXFTdG10IENyZWF0ZVN0bXQgQ3JlYXRlU3RhdHNTdG10CisJCUNyZWF0ZVRhYmxlU3BhY2VT dG10IENyZWF0ZUZkd1N0bXQgQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQgQ3JlYXRlRm9yZWlnblRh YmxlU3RtdAogCQlDcmVhdGVBc3NlcnRTdG10IENyZWF0ZVRyYW5zZm9ybVN0bXQgQ3JlYXRlVHJp Z1N0bXQgQ3JlYXRlRXZlbnRUcmlnU3RtdAogCQlDcmVhdGVVc2VyU3RtdCBDcmVhdGVVc2VyTWFw cGluZ1N0bXQgQ3JlYXRlUm9sZVN0bXQgQ3JlYXRlUG9saWN5U3RtdAogCQlDcmVhdGVkYlN0bXQg RGVjbGFyZUN1cnNvclN0bXQgRGVmaW5lU3RtdCBEZWxldGVTdG10IERpc2NhcmRTdG10IERvU3Rt dApAQCAtMjY4LDcgKzI2OSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCURyb3BUcmFu c2Zvcm1TdG10CiAJCURyb3BVc2VyTWFwcGluZ1N0bXQgRXhwbGFpblN0bXQgRmV0Y2hTdG10CiAJ CUdyYW50U3RtdCBHcmFudFJvbGVTdG10IEltcG9ydEZvcmVpZ25TY2hlbWFTdG10IEluZGV4U3Rt dCBJbnNlcnRTdG10Ci0JCUxpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0bXQgTm90aWZ5U3RtdCBF eHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKKwkJTGV0U3RtdCBMaXN0ZW5TdG10IExvYWRT dG10IExvY2tTdG10IE5vdGlmeVN0bXQgRXhwbGFpbmFibGVTdG10IFByZXBhcmFibGVTdG10CiAJ CUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1bmN0aW9uU3RtdCBSZWluZGV4U3RtdCBSZW1vdmVB Z2dyU3RtdAogCQlSZW1vdmVGdW5jU3RtdCBSZW1vdmVPcGVyU3RtdCBSZW5hbWVTdG10IFJldm9r ZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVsZUFjdGlvblN0bXQgUnVsZUFjdGlvblN0bXRPckVt cHR5IFJ1bGVTdG10CkBAIC00MDAsNiArNDAxLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAkJCQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJCQkJcHVibGljYXRp b25fbmFtZV9saXN0CiAJCQkJdmFjdXVtX3JlbGF0aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlv bl9saXN0CisJCQkJbGV0X3RhcmdldAogCiAldHlwZSA8bGlzdD4JZ3JvdXBfYnlfbGlzdAogJXR5 cGUgPG5vZGU+CWdyb3VwX2J5X2l0ZW0gZW1wdHlfZ3JvdXBpbmdfc2V0IHJvbGx1cF9jbGF1c2Ug Y3ViZV9jbGF1c2UKQEAgLTQyMiw2ICs0MjQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog JXR5cGUgPGl2YWw+CSBPcHRUZW1wCiAldHlwZSA8aXZhbD4JIE9wdE5vTG9nCiAldHlwZSA8b25j b21taXQ+IE9uQ29tbWl0T3B0aW9uCisldHlwZSA8b25lb3hhY3Rpb24+IE9uRU9YQWN0aW9uT3B0 aW9uCiAKICV0eXBlIDxpdmFsPglmb3JfbG9ja2luZ19zdHJlbmd0aAogJXR5cGUgPG5vZGU+CWZv cl9sb2NraW5nX2l0ZW0KQEAgLTU4NCw2ICs1ODcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogJXR5cGUgPG5vZGU+CQlwYXJ0Ym91bmRfZGF0dW0gUGFydGl0aW9uUmFuZ2VEYXR1bQogJXR5 cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZCBwYXJ0Ym91bmRfZGF0dW1fbGlzdCByYW5nZV9kYXR1 bV9saXN0CiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5cGUgPG5vZGU+ CQlvcHRTY2hlbWFWYXJEZWZFeHByCiAKIC8qCiAgKiBOb24ta2V5d29yZCB0b2tlbiB0eXBlcy4g IFRoZXNlIGFyZSBoYXJkLXdpcmVkIGludG8gdGhlICJmbGV4IiBsZXhlci4KQEAgLTY0OSw3ICs2 NTMsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUtFWQogCiAJTEFCRUwgTEFOR1VBR0Ug TEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCi0JTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBM RVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCisJTEVBRElORyBMRUFLUFJPT0YgTEVB U1QgTEVGVCBMRVQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAogCUxPQ0FMVElN RSBMT0NBTFRJTUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRAogCiAJTUFQUElO RyBNQVRDSCBNQVRFUklBTElaRUQgTUFYVkFMVUUgTUVUSE9EIE1JTlVURV9QIE1JTlZBTFVFIE1P REUgTU9OVEhfUCBNT1ZFCkBAIC02ODcsOCArNjkxLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAlVTkJPVU5ERUQgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05P V04gVU5MSVNURU4gVU5MT0dHRUQKIAlVTlRJTCBVUERBVEUgVVNFUiBVU0lORwogCi0JVkFDVVVN IFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElD IFZBUllJTkcKLQlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCisJVkFDVVVN IFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBQkxF IFZBUklBQkxFUworCVZBUklBRElDIFZBUllJTkcgVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVX UyBWT0xBVElMRQogCiAJV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9XIFdJVEggV0lUSElO IFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAKQEAgLTg3OCw2ICs4ODIsNyBAQCBzdG10IDoK IAkJCXwgQ3JlYXRlUG9saWN5U3RtdAogCQkJfCBDcmVhdGVQTGFuZ1N0bXQKIAkJCXwgQ3JlYXRl U2NoZW1hU3RtdAorCQkJfCBDcmVhdGVTY2hlbWFWYXJTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQK IAkJCXwgQ3JlYXRlU3RtdAogCQkJfCBDcmVhdGVTdWJzY3JpcHRpb25TdG10CkBAIC05MTcsNiAr OTIyLDcgQEAgc3RtdCA6CiAJCQl8IEltcG9ydEZvcmVpZ25TY2hlbWFTdG10CiAJCQl8IEluZGV4 U3RtdAogCQkJfCBJbnNlcnRTdG10CisJCQl8IExldFN0bXQKIAkJCXwgTGlzdGVuU3RtdAogCQkJ fCBSZWZyZXNoTWF0Vmlld1N0bXQKIAkJCXwgTG9hZFN0bXQKQEAgLTE4MDgsNyArMTgxNCwxMiBA QCBEaXNjYXJkU3RtdDoKIAkJCQkJbi0+dGFyZ2V0ID0gRElTQ0FSRF9TRVFVRU5DRVM7CiAJCQkJ CSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0KKwkJCXwgRElTQ0FSRCBWQVJJQUJMRVMKKwkJCQl7 CisJCQkJCURpc2NhcmRTdG10ICpuID0gbWFrZU5vZGUoRGlzY2FyZFN0bXQpOworCQkJCQluLT50 YXJnZXQgPSBESVNDQVJEX1ZBUklBQkxFUzsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0K IAkJOwogCiAKQEAgLTQ0NzksNiArNDQ5MCw0OCBAQCBjcmVhdGVfZXh0ZW5zaW9uX29wdF9pdGVt OgogCQkJCX0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVFUlkgOgor ICoJCQkJQ1JFQVRFIFZBUklBQkxFIHZhcm5hbWUgW0FTXSB0eXBlCisgKgorICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworCitDcmVhdGVTY2hlbWFWYXJTdG10OgorCQkJQ1JFQVRFIE9wdFRlbXAgVkFS SUFCTEUgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVuYW1lIG9wdF9jb2xsYXRlX2NsYXVzZSBv cHRTY2hlbWFWYXJEZWZFeHByIE9uRU9YQWN0aW9uT3B0aW9uCisJCQkJeworCQkJCQlDcmVhdGVT Y2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ0 LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ0OworCQkJCQluLT50 eXBlTmFtZSA9ICQ2OworCQkJCQluLT5jb2xsQ2xhdXNlID0gKENvbGxhdGVDbGF1c2UgKikgJDc7 CisJCQkJCW4tPmRlZmV4cHIgPSAkODsKKwkJCQkJbi0+ZW94YWN0aW9uID0gJDk7CisJCQkJCW4t PmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJ CXwgQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUgSUZfUCBOT1QgRVhJU1RTIHF1YWxpZmllZF9uYW1l IG9wdF9hcyBUeXBlbmFtZSBvcHRfY29sbGF0ZV9jbGF1c2Ugb3B0U2NoZW1hVmFyRGVmRXhwciBP bkVPWEFjdGlvbk9wdGlvbgorCQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1h a2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOworCQkJCQkkNy0+cmVscGVyc2lzdGVuY2UgPSAk MjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNzsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkOTsKKwkJCQkJ bi0+Y29sbENsYXVzZSA9IChDb2xsYXRlQ2xhdXNlICopICQxMDsKKwkJCQkJbi0+ZGVmZXhwciA9 ICQxMTsKKwkJCQkJbi0+ZW94YWN0aW9uID0gJDEyOworCQkJCQluLT5pZl9ub3RfZXhpc3RzID0g dHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitvcHRTY2hlbWFWYXJE ZWZFeHByOiBERUZBVUxUIGJfZXhwcgkJCQkJCQl7ICQkID0gJDI7IH0KKwkJCXwgLyogRU1QVFkg Ki8JCQkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK09uRU9YQWN0aW9uT3B0aW9uOiAgT04g Q09NTUlUIERST1AJCXsgJCQgPSBWQVJJQUJMRV9FT1hfRFJPUDsgfQorCQkJfCBPTiBUUkFOU0FD VElPTiBFTkRfUCBSRVNFVAkJCXsgJCQgPSBWQVJJQUJMRV9FT1hfUkVTRVQ7IH0KKwkJCXwgLypF TVBUWSovCQkJCQkJCXsgJCQgPSBWQVJJQUJMRV9FT1hfTk9PUDsgfQorCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKICAqCiAgKiBBTFRFUiBFWFRFTlNJT04gbmFtZSBVUERBVEUgWyBUTyB2ZXJzaW9u IF0KQEAgLTYzNDAsNiArNjM5Myw3IEBAIGRyb3BfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9Q IFNFQVJDSCBESUNUSU9OQVJZCQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8 IFRFWFRfUCBTRUFSQ0ggVEVNUExBVEUJCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CiAJ CQl8IFRFWFRfUCBTRUFSQ0ggQ09ORklHVVJBVElPTgkJCXsgJCQgPSBPQkpFQ1RfVFNDT05GSUdV UkFUSU9OOyB9CisJCQl8IFZBUklBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9 CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lX2xpc3QgKi8KQEAgLTY2MDksNiAr NjY2Myw3IEBAIGNvbW1lbnRfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9QIFNFQVJDSCBESUNU SU9OQVJZCQkJeyAkJCA9IE9CSkVDVF9UU0RJQ1RJT05BUlk7IH0KIAkJCXwgVEVYVF9QIFNFQVJD SCBQQVJTRVIJCQkJeyAkJCA9IE9CSkVDVF9UU1BBUlNFUjsgfQogCQkJfCBURVhUX1AgU0VBUkNI IFRFTVBMQVRFCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CisJCQl8IFZBUklBQkxFCQkJ CQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFr aW5nIG5hbWUgKi8KQEAgLTY3NDcsNiArNjgwMiw3IEBAIHNlY3VyaXR5X2xhYmVsX3R5cGVfYW55 X25hbWU6CiAJCQl8IFRBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1RBQkxFOyB9CiAJCQl8IFZJ RVcJCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVklFVzsgfQogCQkJfCBNQVRFUklBTElaRUQgVklFVwkJ CQkJeyAkJCA9IE9CSkVDVF9NQVRWSUVXOyB9CisJCQl8IFZBUklBQkxFCQkJCQkJCXsgJCQgPSBP QkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFraW5nIG5hbWUgKi8K QEAgLTcxNjgsNiArNzIyNCwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpzID0g JDI7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IFZBUklBQkxFIHF1YWxpZmllZF9uYW1lX2xp c3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6 ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsK KwkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqcyA9ICQyOwor CQkJCQkkJCA9IG47CisJCQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NIRU1BIG5hbWVfbGlz dAogCQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXpl b2YoUHJpdlRhcmdldCkpOwpAQCAtNzIwOCw2ICs3MjcyLDE0IEBAIHByaXZpbGVnZV90YXJnZXQ6 CiAJCQkJCW4tPm9ianMgPSAkNTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJCXwgQUxMIFZBUklB QkxFUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAo UHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5 cGUgPSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1Rf VkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAkNTsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJOwog CiAKQEAgLTczNjgsNiArNzQ0MCw3IEBAIGRlZmFjbF9wcml2aWxlZ2VfdGFyZ2V0OgogCQkJfCBT RVFVRU5DRVMJCXsgJCQgPSBPQkpFQ1RfU0VRVUVOQ0U7IH0KIAkJCXwgVFlQRVNfUAkJeyAkJCA9 IE9CSkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1RfU0NIRU1BOyB9CisJ CQl8IFZBUklBQkxFUwkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIApAQCAtODk2 NCw2ICs5MDM3LDI1IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0 aF9hcmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJ CQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgYW55X25hbWUg UkVOQU1FIFRPIG5hbWUKKwkJCQl7CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBtYWtlTm9kZShSZW5h bWVTdG10KTsKKwkJCQkJbi0+cmVuYW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+ b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJCQkJCW4tPm5ld25hbWUgPSAkNjsKKwkJCQkJbi0+bWlz c2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQl8IEFMVEVS IFZBUklBQkxFIElGX1AgRVhJU1RTIGFueV9uYW1lIFJFTkFNRSBUTyBuYW1lCisJCQkJeworCQkJ CQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisJCQkJCW4tPnJlbmFtZVR5 cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQ1OworCQkJ CQluLT5uZXduYW1lID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOworCQkJCQkkJCA9 IChOb2RlICopbjsKKwkJCQl9CisKIAkJOwogCiBvcHRfY29sdW1uOiBDT0xVTU4JCQkJCQkJCQl7 ICQkID0gQ09MVU1OOyB9CkBAIC05MjgyLDYgKzkzNzQsMjUgQEAgQWx0ZXJPYmplY3RTY2hlbWFT dG10OgogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKiluOwog CQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgYW55X25hbWUgU0VUIFNDSEVNQSBuYW1lCisJCQkJ eworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck9iamVjdFNj aGVtYVN0bXQpOworCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQlu LT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJCQkJbi0+bmV3c2NoZW1hID0gJDY7CisJCQkJCW4t Pm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBB TFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBTRVQgU0NIRU1BIG5hbWUKKwkJCQl7 CisJCQkJCUFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyT2JqZWN0U2No ZW1hU3RtdCk7CisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4t Pm9iamVjdCA9IChOb2RlICopICQ1OworCQkJCQluLT5uZXdzY2hlbWEgPSAkODsKKwkJCQkJbi0+ bWlzc2luZ19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwogCQk7CiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgpAQCAtOTUxNyw2ICs5NjI4LDE0IEBAIEFsdGVyT3duZXJT dG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9s ZVNwZWMKIAkJCQkJbi0+bmV3b3duZXIgPSAkNjsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJ fQorCQkJfCBBTFRFUiBWQVJJQUJMRSBhbnlfbmFtZSBPV05FUiBUTyBSb2xlU3BlYworCQkJCXsK KwkJCQkJQWx0ZXJPd25lclN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck93bmVyU3RtdCk7CisJCQkJ CW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2Rl ICopICQzOworCQkJCQluLT5uZXdvd25lciA9ICQ2OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CiAJCTsKIAogCkBAIC0xMDY5OCw2ICsxMDgxNyw3IEBAIEV4cGxhaW5hYmxlU3RtdDoKIAkJ CXwgQ3JlYXRlTWF0Vmlld1N0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10CiAJCQl8IEV4ZWN1 dGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJCXwgTGV0U3RtdAog CQk7CiAKIGV4cGxhaW5fb3B0aW9uX2xpc3Q6CkBAIC0xMDc1NSw2ICsxMDg3NSw3IEBAIFByZXBh cmFibGVTdG10OgogCQkJfCBJbnNlcnRTdG10CiAJCQl8IFVwZGF0ZVN0bXQKIAkJCXwgRGVsZXRl U3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IExldFN0bXQKIAkJ OwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExMTUzLDYgKzExMjc0LDUwIEBAIG9wdF9o b2xkOiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9CiAJCQl8IFdJVEhPVVQgSE9MRAkJCQkJ eyAkJCA9IDA7IH0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVFUlk6 CisgKgkJCQlMRVQgU1RBVEVNRU5UUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0xldFN0 bXQ6CUxFVCBsZXRfdGFyZ2V0ICc9JyBhX2V4cHIKKwkJCQl7CisJCQkJCUxldFN0bXQgKm4gPSBt YWtlTm9kZShMZXRTdG10KTsKKworCQkJCQluLT50YXJnZXQgPSAkMjsKKworCQkJCQlpZiAoIUlz QSgoTm9kZSAqKSAkNCwgU2V0VG9EZWZhdWx0KSkKKwkJCQkJeworCQkJCQkJU2VsZWN0U3RtdCAq c2VsZWN0ID0gbWFrZU5vZGUoU2VsZWN0U3RtdCk7CisJCQkJCQlSZXNUYXJnZXQJKnJlcyA9IG1h a2VOb2RlKFJlc1RhcmdldCk7CisKKwkJCQkJCS8qIENyZWF0ZSB0YXJnZXQgbGlzdCBmb3IgaW1w bGljaXQgcXVlcnkgKi8KKwkJCQkJCXJlcy0+bmFtZSA9IE5VTEw7CisJCQkJCQlyZXMtPmluZGly ZWN0aW9uID0gTklMOworCQkJCQkJcmVzLT52YWwgPSAoTm9kZSAqKSAkNDsKKwkJCQkJCXJlcy0+ bG9jYXRpb24gPSBANDsKKworCQkJCQkJc2VsZWN0LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtlMShy ZXMpOworCQkJCQkJbi0+c2VsZWN0U3RtdCA9IChOb2RlICopIHNlbGVjdDsKKwkJCQkJfQorCQkJ CQllbHNlCisJCQkJCQluLT5zZWxlY3RTdG10ID0gTlVMTDsKKworCQkJCQluLT5sb2NhdGlvbiA9 IEAyOworCisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworbGV0X3RhcmdldDoK KwkJCUNvbElkIG9wdF9pbmRpcmVjdGlvbgorCQkJCXsKKwkJCQkJJCQgPSBsaXN0X21ha2UxKG1h a2VTdHJpbmcoJDEpKTsKKwkJCQkJaWYgKCQyKQorCQkJCQkJICAkJCA9IGxpc3RfY29uY2F0KCQk LAorCQkJCQkJCQkJCSAgIGNoZWNrX2luZGlyZWN0aW9uKCQyLCB5eXNjYW5uZXIpKTsKKwkJCQl9 CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCQlRVUVSWToKQEAgLTE1MTMyLDYgKzE1 Mjk3LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBMQVJHRV9QCiAJCQl8IExBU1RfUAog CQkJfCBMRUFLUFJPT0YKKwkJCXwgTEVUCiAJCQl8IExFVkVMCiAJCQl8IExJU1RFTgogCQkJfCBM T0FECkBAIC0xNTI4MCw2ICsxNTQ0Niw4IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgVkFM SURBVEUKIAkJCXwgVkFMSURBVE9SCiAJCQl8IFZBTFVFX1AKKwkJCXwgVkFSSUFCTEUKKwkJCXwg VkFSSUFCTEVTCiAJCQl8IFZBUllJTkcKIAkJCXwgVkVSU0lPTl9QCiAJCQl8IFZJRVcKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9hZ2cuYwppbmRleCA2MTcyN2UxZDcxLi42ODIzNjEyZmJhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2FnZy5jCkBAIC0zNDksNiArMzQ5LDcgQEAgY2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJh aW50cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQlBc3NlcnQoZmFsc2UpOwkJ LyogY2FuJ3QgaGFwcGVuICovCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfT1RIRVI6CisJ CWNhc2UgRVhQUl9LSU5EX0xFVDoKIAogCQkJLyoKIAkJCSAqIEFjY2VwdCBhZ2dyZWdhdGUvZ3Jv dXBpbmcgaGVyZTsgY2FsbGVyIG11c3QgdGhyb3cgZXJyb3IgaWYKQEAgLTQ2NSw2ICs0NjYsNyBA QCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqZXhwcikKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJ Y2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFC TEVfREVGQVVMVDoKIAogCQkJaWYgKGlzQWdnKQogCQkJCWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5j dGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKQEAgLTg3OSw2 ICs4ODEsNyBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdp bmRvd0Z1bmMgKndmdW5jLAogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZB VUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lO RF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQ Ul9LSU5EX0lOREVYX0VYUFJFU1NJT046CkBAIC05MDIsNiArOTA1LDggQEAgdHJhbnNmb3JtV2lu ZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJY2Fz ZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1lbnRzIik7CiAJCQlicmVhazsKKwkJY2FzZSBF WFBSX0tJTkRfTEVUOgorCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93 ZWQgaW4gTEVUIHN0YXRlbWVudCIpOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9u YWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwppbmRleCAzODVlNTRhOWI2Li41NDU2NTgzNGZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbmNsdWRlICJ1 dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy94bWwuaCIKIAogCkBAIC0xMTYsNiArMTE4LDkgQEAgc3RhdGljIE5vZGUgKnRyYW5zZm9y bVhtbFNlcmlhbGl6ZShQYXJzZVN0YXRlICpwc3RhdGUsIFhtbFNlcmlhbGl6ZSAqeHMpOwogc3Rh dGljIE5vZGUgKnRyYW5zZm9ybUJvb2xlYW5UZXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQm9vbGVh blRlc3QgKmIpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUN1cnJlbnRPZkV4cHIoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBDdXJyZW50T2ZFeHByICpjZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt Q29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKTsKK3N0YXRpYyBO b2RlICptYWtlUGFyYW1TY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkg IE9pZCB2YXJpZCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIE9pZCBjb2xsaWQsCisJCQkJCQkg IGNoYXIgKmF0dHJuYW1lLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVdo b2xlUm93UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VUYmxFbnRyeSAqcnRlLAogCQkJCQkg aW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCk7CkBAIC01MTIsNiArNTE3LDkgQEAgdHJh bnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCWNo YXIJICAgKm5zcG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKnJlbG5hbWUgPSBOVUxMOwogCWNoYXIJ ICAgKmNvbG5hbWUgPSBOVUxMOworCU9pZAkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwljaGFyCSAg ICphdHRybmFtZSA9IE5VTEw7CisJYm9vbAkJbm90X3VuaXF1ZTsKIAlSYW5nZVRibEVudHJ5ICpy dGU7CiAJaW50CQkJbGV2ZWxzX3VwOwogCWVudW0KQEAgLTc0OSw2ICs3NTcsMTUgQEAgdHJhbnNm b3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQkJYnJl YWs7CiAJfQogCisJdmFyaWQgPSBpZGVudGlmeV92YXJpYWJsZShjcmVmLT5maWVsZHMsICZhdHRy bmFtZSwgJm5vdF91bmlxdWUpOworCisJaWYgKG5vdF91bmlxdWUpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9BTUJJR1VPVVNfUEFSQU1FVEVSKSwKKwkJCQkgZXJybXNn KCJzY2hlbWEgdmFyaWFibGUgcmVmZXJlbmNlIFwiJXNcIiBpcyBhbWJpZ3VvdXMiLAorCQkJCQkJ TmFtZUxpc3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CisKIAkvKgogCSAqIE5vdyBnaXZlIHRoZSBQb3N0 UGFyc2VDb2x1bW5SZWZIb29rLCBpZiBhbnksIGEgY2hhbmNlLiAgV2UgcGFzcyB0aGUKIAkgKiB0 cmFuc2xhdGlvbi1zby1mYXIgc28gdGhhdCBpdCBjYW4gdGhyb3cgYW4gZXJyb3IgaWYgaXQgd2lz aGVzIGluIHRoZQpAQCAtNzczLDYgKzc5MCw3MiBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VT dGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKIAl9CiAKKwlpZiAoT2lkSXNWYWxpZCh2YXJpZCkp CisJeworCQlPaWQJCXR5cGlkOworCQlpbnQzMgl0eXBtb2Q7CisJCU9pZAkJY29sbGlkOworCisJ CWdldF9zY2hlbWFfdmFyaWFibGVfdHlwZV90eXBtb2RfY29sbGlkKHZhcmlkLCAmdHlwaWQsICZ0 eXBtb2QsICZjb2xsaWQpOworCisJCWlmIChub2RlICE9IE5VTEwpCisJCXsKKwkJCS8qCisJCQkg KiBzb21lIGNvbGxpc2lvbiBjYW4gYmUgc29sdmVkIHNpbXBseSBoZXJlIHRvIHJlZHVjZSBlcnJv cnMKKwkJCSAqIGJhc2VkIG9uIHNpbXBseSBleGlzdGVuY2Ugb2Ygc29tZSB2YXJpYWJsZXMuIE9m dGVuIGVycm9yCisJCQkgKiBjYW4gYmUgdXNpbmcgYWxpYXMgc2FtZSBsaWtlIHZhcmlhYmxlIG5h bWUuIEluIHRoaXMgY2FzZSwKKwkJCSAqIHdoZW4gd2UgZm91bmQgY29sdW1uIHJlZmVyZW5jZSwg YW5kIHdlIGZvdW5kIHJlZmVyZW5jZSB0bworCQkJICogcG9zc2libGUgY29tcG9zaXRlIHZhcmlh YmxlLCBidXQgdGhlIHZhcmlhYmxlIGlzIG5vdCBjb21wb3NpdGUsCisJCQkgKiB0aGVuIHdlIGNh biBpZ25vcmUgdGhlIHZhcmlhYmxlIGFzIHNpbXBseSBpbXByb3BlciwgYW5kIHdlCisJCQkgKiB1 c2UgY29sdW1uIHJlZmVyZW5jZSBvbmx5LgorCQkJICovCisJCQlpZiAoYXR0cm5hbWUpCisJCQl7 CisJCQkJaWYgKHR5cGVfaXNfcm93dHlwZSh0eXBpZCkpCisJCQkJeworCQkJCQlUdXBsZURlc2MJ CXR1cGRlc2M7CisJCQkJCWJvb2wJCQlmb3VuZCA9IGZhbHNlOworCQkJCQlpbnQJCQlpOworCisJ CQkJCS8qIHNsb3cgcGFydCwgSSBob3BlIGl0IHdpbGwgbm90IGJlIHRvIG9mdGVuICovCisJCQkJ CXR1cGRlc2MgPSBsb29rdXBfcm93dHlwZV90dXBkZXNjKHR5cGlkLCB0eXBtb2QpOworCQkJCQlm b3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+bmF0dHM7IGkrKykKKwkJCQkJeworCQkJCQkJaWYgKG5h bWVzdHJjbXAoJihUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpLT5hdHRuYW1lKSwgYXR0cm5hbWUp ID09IDAgJiYKKwkJCQkJCQkJIVR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSktPmF0dGlzZHJvcHBl ZCkKKwkJCQkJCXsKKwkJCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9 CisJCQkJCX0KKworCQkJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCisJCQkJCS8qIHRoZXJl IGFyZSBub3QgY29tcG9zaXRlIHZhcmlhYmxlIHdpdGggdGhpcyBmaWVsZCAqLworCQkJCQlpZiAo IWZvdW5kKQorCQkJCQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCQkJCX0KKwkJCQllbHNlCisJCQkJ CS8qIHRoZXJlIGFyZSBub3QgY29tcG9zaXRlIHZhcmlhYmxlIHdpdGggdGhpcyBuYW1lICovCisJ CQkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwkJCX0KKworCQkJLyogUmFpc2UgZXJyb3IgaWYgdmFy aWQgaXMgc3RpbGwgdmFsaWQuIEl0IHNob3VsZCBiZSByZWFsbHkgYW1pZ29udW91cyAqLworCQkJ aWYgKE9pZElzVmFsaWQodmFyaWQpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0FNQklHVU9VU19DT0xVTU4pLAorCQkJCQkJIGVycm1zZygiY29sdW1uIHJlZmVy ZW5jZSBcIiVzXCIgaXMgYW1iaWd1b3VzIiwKKwkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhjcmVm LT5maWVsZHMpKSwKKwkJCQkJCSBlcnJkZXRhaWwoIlRoZSBxdWFsaWZpZWQgaWRlbnRpZmllciBj YW4gYmUgY29sdW1uIHJlZmVyZW5jZSBvciBzY2hlbWEgdmFyaWFibGUgcmVmZXJlbmNlIiksCisJ CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CisJCX0K KworCQlpZiAoT2lkSXNWYWxpZCh2YXJpZCkpCisJCQlub2RlID0gbWFrZVBhcmFtU2NoZW1hVmFy aWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQl2YXJpZCwgdHlwaWQsIHR5cG1vZCwgY29sbGlkLAor CQkJCQkJCQkJCQlhdHRybmFtZSwgY3JlZi0+bG9jYXRpb24pOworCX0KKwogCS8qCiAJICogVGhy b3cgZXJyb3IgaWYgbm8gdHJhbnNsYXRpb24gZm91bmQuCiAJICovCkBAIC04MDcsNiArODkwLDc0 IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3Jl ZikKIAlyZXR1cm4gbm9kZTsKIH0KIAorLyoKKyAqIEdlbmVyYXRlIHBhcmFtIHZhcmlhYmxlIGZv ciByZWZlcmVuY2UgdG8gc2NoZW1hIHZhcmlhYmxlCisgKi8KK3N0YXRpYyBOb2RlICoKK21ha2VQ YXJhbVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCSAgT2lkIHZhcmlk LCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgT2lkIGNvbGxpZCwKKwkJCQkJCSAgY2hhciAqYXR0 cm5hbWUsIGludCBsb2NhdGlvbikKK3sKKwlQYXJhbQkgICAqcGFyYW07CisKKwlwYXJhbSA9IG1h a2VOb2RlKFBhcmFtKTsKKworCXBhcmFtLT5wYXJhbWtpbmQgPSBQQVJBTV9WQVJJQUJMRTsKKwlw YXJhbS0+cGFyYW12YXJpZCA9IHZhcmlkOworCXBhcmFtLT5wYXJhbXR5cGUgPSB0eXBpZDsKKwlw YXJhbS0+cGFyYW10eXBtb2QgPSB0eXBtb2Q7CisJcGFyYW0tPnBhcmFtY29sbGlkID0gY29sbGlk OworCisJLyoKKwkgKiBUaGVyZSBhcmUgdHdvIGFjY2VzcyB0byBzY2hlbWEgdmFyaWFibGVzIC0g ZGlyZWN0LCB1c2VkIGJ5IHNpbXBsZQorCSAqIHBscGdzcWwgZXhwcmVzc2lvbnMsIHdoZXJlIHRo ZXJlIGFyZSBub3QgbmVjZXNzYXJ5IHRvIGVtdWxhdGUgc3RhYmlsaXR5LgorCSAqIEJ1ZmZlcmVk IGFjY2VzcyBpcyB1c2VkIGVsc2V3aGVyZS4gV2Ugc2hvdWxkIHRvIGVuc3VyZSBzdGFibGUgdmFs dWVzLAorCSAqIGFuZCBiZWNhdXNlIHNjaGVtYSB2YXJpYWJsZXMgYXJlIGdsb2JhbCwgdGhlbiB3 ZSBzaG91bGQgdG8gd29yayB3aXRoCisJICogY29waWVkIHZhbHVlcyBpbnN0ZWFkIGRpcmVjdCBh Y2Nlc3MgdG8gdmFyaWFibGVzLiBGb3IgZGlyZWN0IGFjY2VzcworCSAqIHRoZSB2YXJpZCBpcyBi ZXN0IGZvciBhY2Nlc3MuIEZvciBidWZmZXJlZCBhY2Nlc3Mgd2UgbmVlZCB0byBhc3NpZ24KKwkg KiBpbmRleCB0byBidWZmZXIgLSBsYXRlciwgd2hlbiB3ZSB3aWxsIGtub3cgd2hhdCB2YXJpYWJs ZXMgYXJlIHVzZWQuCisJICogTm93LCB3ZSBqdXN0IHJlbWVtYmVyLCBzbyB3ZSB1c2Ugc2NoZW1h IHZhcmlhYmxlcy4KKwkgKi8KKwlwc3RhdGUtPnBfaGFzU2NoZW1hVmFyaWFibGUgPSB0cnVlOwor CisJaWYgKGF0dHJuYW1lICE9IE5VTEwpCisJeworCQlUdXBsZURlc2MJCXR1cGRlc2M7CisJCWlu dAkJaTsKKworCQl0dXBkZXNjID0gbG9va3VwX3Jvd3R5cGVfdHVwZGVzYyh0eXBpZCwgdHlwbW9k KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+bmF0dHM7IGkrKykKKwkJeworCQkJRm9y bV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBpKTsKKworCQkJaWYg KHN0cmNtcChhdHRybmFtZSwgTmFtZVN0cihhdHQtPmF0dG5hbWUpKSA9PSAwICYmCisJCQkJIWF0 dC0+YXR0aXNkcm9wcGVkKQorCQkJeworCQkJCS8qIFN1Y2Nlc3MsIHNvIGdlbmVyYXRlIGEgRmll bGRTZWxlY3QgZXhwcmVzc2lvbiAqLworCQkJCUZpZWxkU2VsZWN0ICpmc2VsZWN0ID0gbWFrZU5v ZGUoRmllbGRTZWxlY3QpOworCisJCQkJZnNlbGVjdC0+YXJnID0gKEV4cHIgKikgcGFyYW07CisJ CQkJZnNlbGVjdC0+ZmllbGRudW0gPSBpICsgMTsKKwkJCQlmc2VsZWN0LT5yZXN1bHR0eXBlID0g YXR0LT5hdHR0eXBpZDsKKwkJCQlmc2VsZWN0LT5yZXN1bHR0eXBtb2QgPSBhdHQtPmF0dHR5cG1v ZDsKKwkJCQkvKiBzYXZlIGF0dHJpYnV0ZSdzIGNvbGxhdGlvbiBmb3IgcGFyc2VfY29sbGF0ZS5j ICovCisJCQkJZnNlbGVjdC0+cmVzdWx0Y29sbGlkID0gYXR0LT5hdHRjb2xsYXRpb247CisKKwkJ CQlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MpOworCQkJCXJldHVybiAoTm9kZSAqKSBmc2VsZWN0 OworCQkJfQorCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VO REVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBpZGVudGlmeSBjb2x1bW4g XCIlc1wiIGluIHZhcmlhYmxlIiwgYXR0cm5hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBsb2NhdGlvbikpKTsKKwl9CisKKwlyZXR1cm4gKE5vZGUgKikgcGFyYW07Cit9CisK IHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybVBhcmFtUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFy YW1SZWYgKnByZWYpCiB7CkBAIC0xODE4LDYgKzE5NjksNyBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBh cnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfUkVU VVJOSU5HOgogCQljYXNlIEVYUFJfS0lORF9WQUxVRVM6CiAJCWNhc2UgRVhQUl9LSU5EX1ZBTFVF U19TSU5HTEU6CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKIAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFr OwogCQljYXNlIEVYUFJfS0lORF9DSEVDS19DT05TVFJBSU5UOgpAQCAtMTgyNiw2ICsxOTc4LDcg QEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1Ymxpbmsp CiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQ Ul9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFV TFQ6CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIERFRkFVTFQgZXhwcmVzc2lv biIpOwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CkBAIC0z NDYwLDYgKzM2MTMsNyBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5k KQogCQkJcmV0dXJuICJDSEVDSyI7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgog CQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJ QUJMRV9ERUZBVUxUOgogCQkJcmV0dXJuICJERUZBVUxUIjsKIAkJY2FzZSBFWFBSX0tJTkRfSU5E RVhfRVhQUkVTU0lPTjoKIAkJCXJldHVybiAiaW5kZXggZXhwcmVzc2lvbiI7CkBAIC0zNDc1LDYg KzM2MjksOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJ cmV0dXJuICJQQVJUSVRJT04gQlkiOwogCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgog CQkJcmV0dXJuICJDQUxMIjsKKwkJY2FzZSBFWFBSX0tJTkRfTEVUOgorCQkJcmV0dXJuICJMRVQi OwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNl IGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCA0NDI1NzE1NGI4 Li5iMmM5OTAwZTAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTIzNDcsNiArMjM0Nyw3 IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxh c3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1O X0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQ Ul9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0 aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwogCQkJYnJlYWs7 CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CkBAIC0yMzcwLDYgKzIzNzEsOSBA QCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0 X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJ ZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBTEwg YXJndW1lbnRzIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfTEVUOgorCQkJZXJyID0g Xygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1l bnRzIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkg bm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Rhcmdl dC5jCmluZGV4IDQ5MzJlNTgwMjIuLmM2MGZlMDExZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFy Z2V0LmMKQEAgLTM1LDE2ICszNSw2IEBACiAKIHN0YXRpYyB2b2lkIG1hcmtUYXJnZXRMaXN0T3Jp Z2luKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVGFyZ2V0RW50cnkgKnRsZSwKIAkJCQkJIFZhciAqdmFy LCBpbnQgbGV2ZWxzdXApOwotc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVj dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUsCi0JCQkJ CQkJICAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKLQkJCQkJCQkgICBib29sIHRhcmdldElzQXJy YXksCi0JCQkJCQkJICAgT2lkIHRhcmdldFR5cGVJZCwKLQkJCQkJCQkgICBpbnQzMiB0YXJnZXRU eXBNb2QsCi0JCQkJCQkJICAgT2lkIHRhcmdldENvbGxhdGlvbiwKLQkJCQkJCQkgICBMaXN0Q2Vs bCAqaW5kaXJlY3Rpb24sCi0JCQkJCQkJICAgTm9kZSAqcmhzLAotCQkJCQkJCSAgIGludCBsb2Nh dGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQXNzaWdubWVudFN1YnNjcmlwdHMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgTm9kZSAqYmFzZW5vZGUsCiAJCQkJCQkJICBjb25zdCBj aGFyICp0YXJnZXROYW1lLApAQCAtNjcyLDcgKzY2Miw3IEBAIHVwZGF0ZVRhcmdldExpc3RFbnRy eShQYXJzZVN0YXRlICpwc3RhdGUsCiAgKiBtaWdodCB3YW50IHRvIGRlY29yYXRlIGluZGlyZWN0 aW9uIGNlbGxzIHdpdGggdGhlaXIgb3duIGxvY2F0aW9uIGluZm8sCiAgKiBpbiB3aGljaCBjYXNl IHRoZSBsb2NhdGlvbiBhcmd1bWVudCBjb3VsZCBwcm9iYWJseSBiZSBkcm9wcGVkLikKICAqLwot c3RhdGljIE5vZGUgKgorTm9kZSAqCiB0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgIE5vZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAgIGNv bnN0IGNoYXIgKnRhcmdldE5hbWUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5k ZXggZDgzMDU2OTY0MS4uYzI3YWVjZWRiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0 ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRs ZXIuYwpAQCAtMzM1OSw3ICszMzU5LDcgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUs IExpc3QgKnJld3JpdGVfZXZlbnRzKQogCSAqIGdldCBleGVjdXRlZC4gIEFsc28sIHV0aWxpdGll cyBhcmVuJ3QgcmV3cml0dGVuIGF0IGFsbCAoZG8gd2Ugc3RpbGwKIAkgKiBuZWVkIHRoYXQgY2hl Y2s/KQogCSAqLwotCWlmIChldmVudCAhPSBDTURfU0VMRUNUICYmIGV2ZW50ICE9IENNRF9VVElM SVRZKQorCWlmIChldmVudCAhPSBDTURfU0VMRUNUICYmIGV2ZW50ICE9IENNRF9VVElMSVRZICYm IGV2ZW50ICE9IENNRF9QTEFOX1VUSUxJVFkpCiAJewogCQlpbnQJCQlyZXN1bHRfcmVsYXRpb247 CiAJCVJhbmdlVGJsRW50cnkgKnJ0X2VudHJ5OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3 cml0ZS9yb3dzZWN1cml0eS5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCmlu ZGV4IDYxZWYzOTZkOGEuLjZhMDY4YWY3OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcm93c2VjdXJpdHkuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMK QEAgLTIxMiw3ICsyMTIsNyBAQCBnZXRfcm93X3NlY3VyaXR5X3BvbGljaWVzKFF1ZXJ5ICpyb290 LCBSYW5nZVRibEVudHJ5ICpydGUsIGludCBydF9pbmRleCwKIAl9CiAKIAkvKgotCSAqIEZvciBT RUxFQ1QsIFVQREFURSBhbmQgREVMRVRFLCBhZGQgc2VjdXJpdHkgcXVhbHMgdG8gZW5mb3JjZSB0 aGUgVVNJTkcKKwkgKiBGb3IgU0VMRUNULCBMRVQsIFVQREFURSBhbmQgREVMRVRFLCBhZGQgc2Vj dXJpdHkgcXVhbHMgdG8gZW5mb3JjZSB0aGUgVVNJTkcKIAkgKiBwb2xpY2llcy4gIFRoZXNlIHNl Y3VyaXR5IHF1YWxzIGNvbnRyb2wgYWNjZXNzIHRvIGV4aXN0aW5nIHRhYmxlIHJvd3MuCiAJICog UmVzdHJpY3RpdmUgcG9saWNpZXMgYXJlIGNvbWJpbmVkIHRvZ2V0aGVyIHVzaW5nIEFORCwgYW5k IHBlcm1pc3NpdmUKIAkgKiBwb2xpY2llcyBhcmUgY29tYmluZWQgdG9nZXRoZXIgdXNpbmcgT1Iu CkBAIC0yMjIsNiArMjIyLDcgQEAgZ2V0X3Jvd19zZWN1cml0eV9wb2xpY2llcyhRdWVyeSAqcm9v dCwgUmFuZ2VUYmxFbnRyeSAqcnRlLCBpbnQgcnRfaW5kZXgsCiAJCQkJCQkJICAmcmVzdHJpY3Rp dmVfcG9saWNpZXMpOwogCiAJaWYgKGNvbW1hbmRUeXBlID09IENNRF9TRUxFQ1QgfHwKKwkJY29t bWFuZFR5cGUgPT0gQ01EX1BMQU5fVVRJTElUWSB8fAogCQljb21tYW5kVHlwZSA9PSBDTURfVVBE QVRFIHx8CiAJCWNvbW1hbmRUeXBlID09IENNRF9ERUxFVEUpCiAJCWFkZF9zZWN1cml0eV9xdWFs cyhydF9pbmRleCwKQEAgLTQyMyw2ICs0MjQsNyBAQCBnZXRfcG9saWNpZXNfZm9yX3JlbGF0aW9u KFJlbGF0aW9uIHJlbGF0aW9uLCBDbWRUeXBlIGNtZCwgT2lkIHVzZXJfaWQsCiAJCQlzd2l0Y2gg KGNtZCkKIAkJCXsKIAkJCQljYXNlIENNRF9TRUxFQ1Q6CisJCQkJY2FzZSBDTURfUExBTl9VVElM SVRZOgogCQkJCQlpZiAocG9saWN5LT5wb2xjbWQgPT0gQUNMX1NFTEVDVF9DSFIpCiAJCQkJCQlj bWRfbWF0Y2hlcyA9IHRydWU7CiAJCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dGNvcC9kZXN0LmMgYi9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYwppbmRleCBjOTVhNGQ1MTlkLi40 N2ZiMGYzOGIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYworKysgYi9zcmMv YmFja2VuZC90Y29wL2Rlc3QuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9y L2Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RxdWV1ZS5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVj ZWl2ZXIuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9y bWF0LmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCkBAIC0xNDMsNiArMTQ0LDkgQEAgQ3Jl YXRlRGVzdFJlY2VpdmVyKENvbW1hbmREZXN0IGRlc3QpCiAKIAkJY2FzZSBEZXN0VHVwbGVRdWV1 ZToKIAkJCXJldHVybiBDcmVhdGVUdXBsZVF1ZXVlRGVzdFJlY2VpdmVyKE5VTEwpOworCisJCWNh c2UgRGVzdFZhcmlhYmxlOgorCQkJcmV0dXJuIENyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKCk7 CiAJfQogCiAJLyogc2hvdWxkIG5ldmVyIGdldCBoZXJlICovCkBAIC0xNzgsNiArMTgyLDcgQEAg RW5kQ29tbWFuZChjb25zdCBjaGFyICpjb21tYW5kVGFnLCBDb21tYW5kRGVzdCBkZXN0KQogCQlj YXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERl c3RUdXBsZVF1ZXVlOgorCQljYXNlIERlc3RWYXJpYWJsZToKIAkJCWJyZWFrOwogCX0KIH0KQEAg LTIyMiw2ICsyMjcsNyBAQCBOdWxsQ29tbWFuZChDb21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERl c3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBs ZVF1ZXVlOgorCQljYXNlIERlc3RWYXJpYWJsZToKIAkJCWJyZWFrOwogCX0KIH0KQEAgLTI2OCw2 ICsyNzQsNyBAQCBSZWFkeUZvclF1ZXJ5KENvbW1hbmREZXN0IGRlc3QpCiAJCWNhc2UgRGVzdFNR TEZ1bmN0aW9uOgogCQljYXNlIERlc3RUcmFuc2llbnRSZWw6CiAJCWNhc2UgRGVzdFR1cGxlUXVl dWU6CisJCWNhc2UgRGVzdFZhcmlhYmxlOgogCQkJYnJlYWs7CiAJfQogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CmluZGV4IDdhOWFkYTJjNzEuLmU3MTFjZDMzNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTg2OSw2 ICs4NjksNyBAQCBwZ19wbGFuX3F1ZXJpZXMoTGlzdCAqcXVlcnl0cmVlcywgaW50IGN1cnNvck9w dGlvbnMsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpCiAJCQlzdG10LT51dGlsaXR5U3RtdCA9 IHF1ZXJ5LT51dGlsaXR5U3RtdDsKIAkJCXN0bXQtPnN0bXRfbG9jYXRpb24gPSBxdWVyeS0+c3Rt dF9sb2NhdGlvbjsKIAkJCXN0bXQtPnN0bXRfbGVuID0gcXVlcnktPnN0bXRfbGVuOworCQkJc3Rt dC0+cmVzdWx0VmFyaWFibGUgPSBxdWVyeS0+cmVzdWx0VmFyaWFibGU7CiAJCX0KIAkJZWxzZQog CQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYwppbmRleCA2NmNjNWMzNWM2Li5jZDA3ZmNiNmVlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMK QEAgLTg2LDYgKzg2LDkgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwKIAlxZC0+cXVlcnlFbnYgPSBxdWVyeUVudjsKIAlxZC0+aW5zdHJ1bWVudF9vcHRpb25zID0g aW5zdHJ1bWVudF9vcHRpb25zOwkvKiBpbnN0cnVtZW50YXRpb24gd2FudGVkPyAqLwogCisJcWQt Pm51bV9zY2hlbWFfdmFyaWFibGVzID0gMDsKKwlxZC0+c2NoZW1hX3ZhcmlhYmxlcyA9IE5VTEw7 CisKIAkvKiBudWxsIHRoZXNlIGZpZWxkcyB1bnRpbCBzZXQgYnkgRXhlY3V0b3JTdGFydCAqLwog CXFkLT50dXBEZXNjID0gTlVMTDsKIAlxZC0+ZXN0YXRlID0gTlVMTDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5k ZXggYjU4MDRmNjRhZC4uZGEwOTg5MzEwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTQ3LDYgKzQ3LDcg QEAKICNpbmNsdWRlICJjb21tYW5kcy9wcm9jbGFuZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKKyNpbmNs dWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlY2xh YmVsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmgiCkBAIC0zNDQsNyArMzQ1LDcgQEAgUHJvY2Vzc1V0aWxpdHko UGxhbm5lZFN0bXQgKnBzdG10LAogCQkJICAgY2hhciAqY29tcGxldGlvblRhZykKIHsKIAlBc3Nl cnQoSXNBKHBzdG10LCBQbGFubmVkU3RtdCkpOwotCUFzc2VydChwc3RtdC0+Y29tbWFuZFR5cGUg PT0gQ01EX1VUSUxJVFkpOworCUFzc2VydChwc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJ VFkgfHwgcHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9QTEFOX1VUSUxJVFkpOwogCUFzc2VydChx dWVyeVN0cmluZyAhPSBOVUxMKTsJLyogcmVxdWlyZWQgYXMgb2YgOC40ICovCiAKIAkvKgpAQCAt OTE1LDYgKzkxNiwyMSBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0 bXQsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl7CisJCQkJaWYg KHBzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJCQkJZG9MZXRTdG10UmVzZXQo cHN0bXQpOworCQkJCWVsc2UKKwkJCQl7CisJCQkJCUFzc2VydChwc3RtdC0+Y29tbWFuZFR5cGUg PT0gQ01EX1BMQU5fVVRJTElUWSk7CisJCQkJCWRvTGV0U3RtdEV2YWwocHN0bXQsIHBhcmFtcywg cXVlcnlFbnYsIHF1ZXJ5U3RyaW5nKTsKKwkJCQl9CisKKwkJCQlpZiAoY29tcGxldGlvblRhZykK KwkJCQkJc3RyY3B5KGNvbXBsZXRpb25UYWcsICJMRVQiKTsKKwkJCX0KKwkJCWJyZWFrOworCiAJ CWRlZmF1bHQ6CiAJCQkvKiBBbGwgb3RoZXIgc3RhdGVtZW50IHR5cGVzIGhhdmUgZXZlbnQgdHJp Z2dlciBzdXBwb3J0ICovCiAJCQlQcm9jZXNzVXRpbGl0eVNsb3cocHN0YXRlLCBwc3RtdCwgcXVl cnlTdHJpbmcsCkBAIC0xMjIxLDYgKzEyMzcsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQl9CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9DcmVhdGVTY2hl bWFWYXJTdG10OgorCQkJCWFkZHJlc3MgPSBEZWZpbmVTY2hlbWFWYXJpYWJsZShwc3RhdGUsIChD cmVhdGVTY2hlbWFWYXJTdG10ICopIHBhcnNldHJlZSk7CisJCQkJYnJlYWs7CisKIAkJCQkvKgog CQkJCSAqICoqKioqKioqKioqKiogb2JqZWN0IGNyZWF0aW9uIC8gZGVzdHJ1Y3Rpb24gKioqKioq KioqKioqKioKIAkJCQkgKi8KQEAgLTIwNTUsNiArMjA3NSw5IEBAIEFsdGVyT2JqZWN0VHlwZUNv bW1hbmRUYWcoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhU OgogCQkJdGFnID0gIkFMVEVSIFNUQVRJU1RJQ1MiOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNU X1ZBUklBQkxFOgorCQkJdGFnID0gIkFMVEVSIFZBUklBQkxFIjsKKwkJCWJyZWFrOwogCQlkZWZh dWx0OgogCQkJdGFnID0gIj8/PyI7CiAJCQlicmVhazsKQEAgLTIxMDQsNiArMjEyNywxMCBAQCBD cmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9ICJTRUxFQ1QiOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl0YWcgPSAiTEVUIjsKKwkJCWJyZWFrOwor CiAJCQkvKiB1dGlsaXR5IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3IgY29va2Vk ICovCiAJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CiAJCQl7CkBAIC0yMzU4LDYgKzIzODUsOSBA QCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIE9CSkVDVF9TVEFU SVNUSUNfRVhUOgogCQkJCQl0YWcgPSAiRFJPUCBTVEFUSVNUSUNTIjsKIAkJCQkJYnJlYWs7CisJ CQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJCXRhZyA9ICJEUk9QIFZBUklBQkxFIjsKKwkJ CQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJdGFnID0gIj8/PyI7CiAJCQl9CkBAIC0yNjM5 LDYgKzI2NjksOSBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNl IERJU0NBUkRfU0VRVUVOQ0VTOgogCQkJCQl0YWcgPSAiRElTQ0FSRCBTRVFVRU5DRVMiOwogCQkJ CQlicmVhazsKKwkJCQljYXNlIERJU0NBUkRfVkFSSUFCTEVTOgorCQkJCQl0YWcgPSAiRElTQ0FS RCBWQVJJQUJMRVMiOworCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQl0YWcgPSAiPz8/ IjsKIAkJCX0KQEAgLTI4NDQsNiArMjg3Nyw3IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFy c2V0cmVlKQogCQkJCQkJdGFnID0gIkRFTEVURSI7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBD TURfVVRJTElUWToKKwkJCQkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCQkJCQkJdGFnID0gQ3Jl YXRlQ29tbWFuZFRhZyhzdG10LT51dGlsaXR5U3RtdCk7CiAJCQkJCQlicmVhazsKIAkJCQkJZGVm YXVsdDoKQEAgLTI5MTUsNiArMjk0OSwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNl dHJlZSkKIAkJCX0KIAkJCWJyZWFrOwogCisJCWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10Ogor CQkJdGFnID0gIkNSRUFURSBWQVJJQUJMRSI7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJ ZWxvZyhXQVJOSU5HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBu b2RlVGFnKHBhcnNldHJlZSkpOwpAQCAtMjk2MSw2ICsyOTk5LDEwIEBAIEdldENvbW1hbmRMb2dM ZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsK IAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCWxldiA9IExPR1NUTVRfQUxMOworCQkJYnJlYWs7CisK IAkJCS8qIHV0aWxpdHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJhdyBvciBjb29rZWQg Ki8KIAkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCWxldiA9IExPR1NUTVRfQUxMOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FjbC5jCmluZGV4IGE0NWUwOTNkZTcuLjk1MmMwZDk2MjggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9hY2wuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMK QEAgLTMxNSw2ICszMTUsMTIgQEAgYWNscGFyc2UoY29uc3QgY2hhciAqcywgQWNsSXRlbSAqYWlw KQogCQkJY2FzZSBBQ0xfQ09OTkVDVF9DSFI6CiAJCQkJcmVhZCA9IEFDTF9DT05ORUNUOwogCQkJ CWJyZWFrOworCQkJY2FzZSBBQ0xfUkVBRF9DSFI6CisJCQkJcmVhZCA9IEFDTF9SRUFEOworCQkJ CWJyZWFrOworCQkJY2FzZSBBQ0xfV1JJVEVfQ0hSOgorCQkJCXJlYWQgPSBBQ0xfV1JJVEU7CisJ CQkJYnJlYWs7CiAJCQljYXNlICdSJzoJCQkvKiBpZ25vcmUgb2xkIFJVTEUgcHJpdmlsZWdlcyAq LwogCQkJCXJlYWQgPSAwOwogCQkJCWJyZWFrOwpAQCAtODA4LDYgKzgxNCwxMCBAQCBhY2xkZWZh dWx0KE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQpCiAJCQl3b3JsZF9kZWZhdWx0ID0g QUNMX1VTQUdFOwogCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1RZUEU7CiAJCQli cmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05P X1JJR0hUUzsKKwkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJ CWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmp0eXBl OiAlZCIsIChpbnQpIG9ianR5cGUpOwogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7 CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTkwMyw2ICs5MTMsOSBAQCBhY2xkZWZhdWx0 X3NxbChQR19GVU5DVElPTl9BUkdTKQogCQljYXNlICdUJzoKIAkJCW9ianR5cGUgPSBPQkpFQ1Rf VFlQRTsKIAkJCWJyZWFrOworCQljYXNlICdWJzoKKwkJCW9ianR5cGUgPSBPQkpFQ1RfVkFSSUFC TEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg b2JqdHlwZSBhYmJyZXZpYXRpb246ICVjIiwgb2JqdHlwZWMpOwogCX0KQEAgLTE2MjcsNiArMTY0 MCwxMCBAQCBjb252ZXJ0X3ByaXZfc3RyaW5nKHRleHQgKnByaXZfdHlwZV90ZXh0KQogCQlyZXR1 cm4gQUNMX0NPTk5FQ1Q7CiAJaWYgKHBnX3N0cmNhc2VjbXAocHJpdl90eXBlLCAiUlVMRSIpID09 IDApCiAJCXJldHVybiAwOwkJCQkvKiBpZ25vcmUgb2xkIFJVTEUgcHJpdmlsZWdlcyAqLworCWlm IChwZ19zdHJjYXNlY21wKHByaXZfdHlwZSwgIlJFQUQiKSA9PSAwKQorCQlyZXR1cm4gQUNMX1JF QUQ7CisJaWYgKHBnX3N0cmNhc2VjbXAocHJpdl90eXBlLCAiV1JJVEUiKSA9PSAwKQorCQlyZXR1 cm4gQUNMX1dSSVRFOwogCiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtMTcyMSw2ICsxNzM4LDEwIEBAIGNvbnZlcnRfYWNs cmlnaHRfdG9fc3RyaW5nKGludCBhY2xyaWdodCkKIAkJCXJldHVybiAiVEVNUE9SQVJZIjsKIAkJ Y2FzZSBBQ0xfQ09OTkVDVDoKIAkJCXJldHVybiAiQ09OTkVDVCI7CisJCWNhc2UgQUNMX1JFQUQ6 CisJCQlyZXR1cm4gIlJFQUQiOworCQljYXNlIEFDTF9XUklURToKKwkJCXJldHVybiAiV1JJVEUi OwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhY2xyaWdodDogJWQi LCBhY2xyaWdodCk7CiAJCQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpp bmRleCA0YzI0MDhkNjU1Li5lYzEwY2I0NDY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRl ICJjb21tb24va2V5d29yZHMuaCIKQEAgLTczOTUsNiArNzM5NiwxNCBAQCBnZXRfcGFyYW1ldGVy KFBhcmFtICpwYXJhbSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQlyZXR1cm47CiAJfQog CisJLyogdHJhbnNsYXRlIHBhcmFtdmFyaWQgdG8gc2NoZW1hIHZhcmlhYmxlIG5hbWUgKi8KKwlp ZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9WQVJJQUJMRSkKKwl7CisJCWFwcGVuZFN0cmlu Z0luZm8oY29udGV4dC0+YnVmLCAiJXMiLAorCQkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFt ZShwYXJhbS0+cGFyYW12YXJpZCkpOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBOb3QgUEFS QU1fRVhFQywgb3IgY291bGRuJ3QgZmluZCByZWZlcmVudDoganVzdCBwcmludCAkTi4KIAkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggYmJhNTk1YWQxZC4uODU4YTZkZDRi ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTE2OTEsNiArMTY5MSwxOCBA QCBnZXRfcmVsbmFtZV9yZWxpZChjb25zdCBjaGFyICpyZWxuYW1lLCBPaWQgcmVsbmFtZXNwYWNl KQogCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShyZWxuYW1lc3BhY2UpKTsKIH0KIAorLyoKKyAq IGdldF92YXJuYW1lX3ZhcmlkCisgKgkJR2l2ZW4gbmFtZSBhbmQgbmFtZXNwYWNlIG9mIHZhcmlh YmxlLCBsb29rIHVwIHRoZSBPSUQuCisgKi8KK09pZAorZ2V0X3Zhcm5hbWVfdmFyaWQoY29uc3Qg Y2hhciAqdmFybmFtZSwgT2lkIHZhcm5hbWVzcGFjZSkKK3sKKwlyZXR1cm4gR2V0U3lzQ2FjaGVP aWQyKFZBUklBQkxFTkFNRU5TUCwKKwkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwK KwkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0odmFybmFtZXNwYWNlKSk7Cit9CisKICNpZmRlZiBO T1RfVVNFRAogLyoKICAqIGdldF9yZWxuYXR0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMK aW5kZXggMmIzODE3ODJhMy4uMzVkYzMyZjY0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNo ZS5jCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNl cl9tYXBwaW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKQEAgLTk2OCw2ICs5NjksMjggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBj YWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCQkwCiAJCX0sCiAJCTIKKwl9LAorCXtWYXJpYWJs ZVJlbGF0aW9uSWQsCQkJLyogVkFSSUFCTEVOQU1FTlNQICovCisJCVZhcmlhYmxlTmFtZU5zcElu ZGV4SWQsCisJCTIsCisJCXsKKwkJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZSwKKwkJCUFudW1f cGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAorCQkJMCwKKwkJCTAKKwkJfSwKKwkJOAorCX0sCisJ e1ZhcmlhYmxlUmVsYXRpb25JZCwJCQkvKiBWQVJJQUJMRU9JRCAqLworCQlWYXJpYWJsZU9iamVj dEluZGV4SWQsCisJCTEsCisJCXsKKwkJCU9iamVjdElkQXR0cmlidXRlTnVtYmVyLAorCQkJMCwK KwkJCTAsCisJCQkwCisJCX0sCisJCTgKIAl9CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvY29tbW9uLmMgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKaW5kZXggOWI1ODY5YWRk OC4uYzRlNGQxMGM2YSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpAQCAtMjk2LDYgKzI5NiwxMCBAQCBnZXRTY2hlbWFE YXRhKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzUHRyKQogCQl3cml0ZV9tc2coTlVMTCwg InJlYWRpbmcgc3Vic2NyaXB0aW9uc1xuIik7CiAJZ2V0U3Vic2NyaXB0aW9ucyhmb3V0KTsKIAor CWlmIChnX3ZlcmJvc2UpCisJCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB2YXJpYWJsZXNcbiIp OworCWdldFZhcmlhYmxlcyhmb3V0KTsKKwogCSpudW1UYWJsZXNQdHIgPSBudW1UYWJsZXM7CiAJ cmV0dXJuIHRibGluZm87CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXgg MzZlMzM4M2I4NS4uNThkMTVhZjdiMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIu YwpAQCAtMzQ2NSw2ICszNDY1LDcgQEAgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVy IGJ1ZiwgVG9jRW50cnkgKnRlLCBBcmNoaXZlSGFuZGxlICpBSCkKIAkJc3RyY21wKHR5cGUsICJU RVhUIFNFQVJDSCBESUNUSU9OQVJZIikgPT0gMCB8fAogCQlzdHJjbXAodHlwZSwgIlRFWFQgU0VB UkNIIENPTkZJR1VSQVRJT04iKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiU1RBVElTVElDUyIp ID09IDAgfHwKKwkJc3RyY21wKHR5cGUsICJWQVJJQUJMRSIpID09IDAgfHwKIAkvKiBub24tc2No ZW1hLXNwZWNpZmllZCBvYmplY3RzICovCiAJCXN0cmNtcCh0eXBlLCAiREFUQUJBU0UiKSA9PSAw IHx8CiAJCXN0cmNtcCh0eXBlLCAiUFJPQ0VEVVJBTCBMQU5HVUFHRSIpID09IDAgfHwKQEAgLTM2 NjQsNyArMzY2NSw4IEBAIF9wcmludFRvY0VudHJ5KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRy eSAqdGUsIGJvb2wgaXNEYXRhKQogCQkJc3RyY21wKHRlLT5kZXNjLCAiU0VSVkVSIikgPT0gMCB8 fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiU1RBVElTVElDUyIpID09IDAgfHwKIAkJCXN0cmNtcCh0 ZS0+ZGVzYywgIlBVQkxJQ0FUSU9OIikgPT0gMCB8fAotCQkJc3RyY21wKHRlLT5kZXNjLCAiU1VC U0NSSVBUSU9OIikgPT0gMCkKKwkJCXN0cmNtcCh0ZS0+ZGVzYywgIlNVQlNDUklQVElPTiIpID09 IDAgfHwKKwkJCXN0cmNtcCh0ZS0+ZGVzYywgIlZBUklBQkxFIikgPT0gMCkKIAkJewogCQkJUFFF eHBCdWZmZXIgdGVtcCA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGYw ZWE4M2U2YTkuLmMzNjVkOWZjZjggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMjU4LDYgKzI1OCw3IEBAIHN0 YXRpYyB2b2lkIGR1bXBQb2xpY3koQXJjaGl2ZSAqZm91dCwgUG9saWN5SW5mbyAqcG9saW5mbyk7 CiBzdGF0aWMgdm9pZCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgUHVibGljYXRpb25J bmZvICpwdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUg KmZvdXQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8pOwogc3RhdGljIHZvaWQgZHVtcFN1 YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKTsKK3N0 YXRpYyB2b2lkIGR1bXBWYXJpYWJsZShBcmNoaXZlICpmb3V0LCBWYXJpYWJsZUluZm8gKnZhcmlu Zm8pOwogc3RhdGljIHZvaWQgZHVtcERhdGFiYXNlKEFyY2hpdmUgKkFIKTsKIHN0YXRpYyB2b2lk IGR1bXBEYXRhYmFzZUNvbmZpZyhBcmNoaXZlICpBSCwgUFFFeHBCdWZmZXIgb3V0YnVmLAogCQkJ CSAgIGNvbnN0IGNoYXIgKmRibmFtZSwgT2lkIGRib2lkKTsKQEAgLTQyMjQsNiArNDIyNSwyMjAg QEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBTdWJzY3JpcHRpb25JbmZvICpzdWJp bmZvKQogCWZyZWUocXN1Ym5hbWUpOwogfQogCisvKgorICogZ2V0VmFyaWFibGVzCisgKgkgIGdl dCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJsZXMKKyAqLwordm9pZAorZ2V0VmFyaWFibGVzKEFy Y2hpdmUgKmZvdXQpCit7CisJRHVtcE9wdGlvbnMgKmRvcHQgPSBmb3V0LT5kb3B0OworCVBRRXhw QnVmZmVyIHF1ZXJ5OworCVBRRXhwQnVmZmVyIGFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVm ZmVyKCk7CisJUFFFeHBCdWZmZXIgcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7 CisJUFFFeHBCdWZmZXIgaW5pdF9hY2xfc3VicXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwor CVBRRXhwQnVmZmVyIGluaXRfcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJ UEdyZXN1bHQgICAqcmVzOworCVZhcmlhYmxlSW5mbyAqdmFyaW5mbzsKKwlpbnQJCQlpX3RhYmxl b2lkOworCWludAkJCWlfb2lkOworCWludAkJCWlfdmFybmFtZTsKKwlpbnQJCQlpX3Zhcm5hbWVz cGFjZTsKKwlpbnQJCQlpX3ZhcnR5cGU7CisJaW50CQkJaV92YXJ0eXBuYW1lOworCWludAkJCWlf dmFyZGVmZXhwcjsKKwlpbnQJCQlpX3JvbG5hbWU7CisJaW50CQkJaV92YXJhY2w7CisJaW50CQkJ aV9ydmFyYWNsOworCWludAkJCWlfaW5pdHZhcmFjbDsKKwlpbnQJCQlpX2luaXRydmFyYWNsOwor CWludAkJCWlfdmFyZW94YWN0aW9uOworCWludAkJCWksCisJCQkJbnR1cHM7CisKKwlpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA8PSAxMTAwMDApCisJCXJldHVybjsKKworCWFjbF9zdWJxdWVyeSA9 IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVy KCk7CisJaW5pdF9hY2xfc3VicXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCWluaXRfcmFj bF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlidWlsZEFDTFF1ZXJpZXMoYWNs X3N1YnF1ZXJ5LCByYWNsX3N1YnF1ZXJ5LCBpbml0X2FjbF9zdWJxdWVyeSwKKwkJCQkJaW5pdF9y YWNsX3N1YnF1ZXJ5LCAidi52YXJhY2wiLCAidi52YXJvd25lciIsICInViciLAorCQkJCQlkb3B0 LT5iaW5hcnlfdXBncmFkZSk7CisKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwly ZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKKworCS8qIEdldCB0aGUgdmFyaWFibGVzIGluIGN1cnJl bnQgZGF0YWJhc2UuICovCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJCQkgICJTRUxF Q1Qgdi50YWJsZW9pZCwgdi5vaWQsIHYudmFybmFtZSwgIgorCQkJCQkJICAidi52YXJlb3hhY3Rp b24sICIKKwkJCQkJCSAgInYudmFybmFtZXNwYWNlLCAiCisJCQkJCQkgICIoJXMgdmFyb3duZXIp IEFTIHJvbG5hbWUsICIKKwkJCQkJCSAgIiVzIGFzIHZhcmFjbCwgIgorCQkJCQkJICAiJXMgYXMg cnZhcmFjbCwgIgorCQkJCQkJICAiJXMgYXMgaW5pdHZhcmFjbCwgIgorCQkJCQkJICAiJXMgYXMg aW5pdHJ2YXJhY2wsICIKKwkJCQkJCSAgInYudmFydHlwZSwgIgorCQkJCQkJICAicGdfY2F0YWxv Zy5mb3JtYXRfdHlwZSh2LnZhcnR5cGUsIHYudmFydHlwbW9kKSBhcyB2YXJ0eXBuYW1lLCAiCisJ CQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9leHByKHYudmFyZGVmZXhwciwwKSBhcyB2YXJkZWZl eHByICIKKwkJCQkJCSAgIkZST00gcGdfdmFyaWFibGUgdiAiCisJCQkJCQkgICJMRUZUIEpPSU4g cGdfaW5pdF9wcml2cyBwaXAgIgorCQkJCQkJICAiT04gKHYub2lkID0gcGlwLm9iam9pZCAiCisJ CQkJCQkgICJBTkQgcGlwLmNsYXNzb2lkID0gJ3BnX3ZhcmlhYmxlJzo6cmVnY2xhc3MgIgorCQkJ CQkJICAiQU5EIHBpcC5vYmpzdWJpZCA9IDApIiwKKwkJCQkJCSAgdXNlcm5hbWVfc3VicXVlcnks CisJCQkJCQkgIGFjbF9zdWJxdWVyeS0+ZGF0YSwKKwkJCQkJCSAgcmFjbF9zdWJxdWVyeS0+ZGF0 YSwKKwkJCQkJCSAgaW5pdF9hY2xfc3VicXVlcnktPmRhdGEsCisJCQkJCQkgIGluaXRfcmFjbF9z dWJxdWVyeS0+ZGF0YSk7CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoYWNsX3N1YnF1ZXJ5KTsKKwlk ZXN0cm95UFFFeHBCdWZmZXIocmFjbF9zdWJxdWVyeSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGlu aXRfYWNsX3N1YnF1ZXJ5KTsKKwlkZXN0cm95UFFFeHBCdWZmZXIoaW5pdF9yYWNsX3N1YnF1ZXJ5 KTsKKworCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQ TEVTX09LKTsKKworCW50dXBzID0gUFFudHVwbGVzKHJlcyk7CisKKwlpX3RhYmxlb2lkID0gUFFm bnVtYmVyKHJlcywgInRhYmxlb2lkIik7CisJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7 CisJaV92YXJuYW1lID0gUFFmbnVtYmVyKHJlcywgInZhcm5hbWUiKTsKKwlpX3Zhcm5hbWVzcGFj ZSA9IFBRZm51bWJlcihyZXMsICJ2YXJuYW1lc3BhY2UiKTsKKwlpX3JvbG5hbWUgPSBQUWZudW1i ZXIocmVzLCAicm9sbmFtZSIpOworCWlfdmFydHlwZSA9IFBRZm51bWJlcihyZXMsICJ2YXJ0eXBl Iik7CisJaV92YXJ0eXBuYW1lID0gUFFmbnVtYmVyKHJlcywgInZhcnR5cG5hbWUiKTsKKwlpX3Zh cmVveGFjdGlvbiA9IFBRZm51bWJlcihyZXMsICJ2YXJlb3hhY3Rpb24iKTsKKwlpX3ZhcmRlZmV4 cHIgPSBQUWZudW1iZXIocmVzLCAidmFyZGVmZXhwciIpOworCWlfdmFyYWNsID0gUFFmbnVtYmVy KHJlcywgInZhcmFjbCIpOworCWlfcnZhcmFjbCA9IFBRZm51bWJlcihyZXMsICJydmFyYWNsIik7 CisJaV9pbml0dmFyYWNsID0gUFFmbnVtYmVyKHJlcywgImluaXR2YXJhY2wiKTsKKwlpX2luaXRy dmFyYWNsID0gUFFmbnVtYmVyKHJlcywgImluaXRydmFyYWNsIik7CisKKwl2YXJpbmZvID0gcGdf bWFsbG9jKG50dXBzICogc2l6ZW9mKFZhcmlhYmxlSW5mbykpOworCisJZm9yIChpID0gMDsgaSA8 IG50dXBzOyBpKyspCisJeworCQlUeXBlSW5mbwkgICAqdnR5cGU7CisKKwkJdmFyaW5mb1tpXS5k b2JqLm9ialR5cGUgPSBET19WQVJJQUJMRTsKKwkJdmFyaW5mb1tpXS5kb2JqLmNhdElkLnRhYmxl b2lkID0KKwkJCWF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV90YWJsZW9pZCkpOworCQl2YXJp bmZvW2ldLmRvYmouY2F0SWQub2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX29pZCkp OworCQlBc3NpZ25EdW1wSWQoJnZhcmluZm9baV0uZG9iaik7CisJCXZhcmluZm9baV0uZG9iai5u YW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zhcm5hbWUpKTsKKwkJdmFyaW5m b1tpXS5kb2JqLm5hbWVzcGFjZSA9CisJCQlmaW5kTmFtZXNwYWNlKGZvdXQsCisJCQkJCQkgIGF0 b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJuYW1lc3BhY2UpKSk7CisKKwkJdmFyaW5mb1tp XS5yb2xuYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JvbG5hbWUpKTsKKwkJ dmFyaW5mb1tpXS52YXJ0eXBlID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcnR5cGUp KTsKKwkJdmFyaW5mb1tpXS52YXJ0eXBuYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBp LCBpX3ZhcnR5cG5hbWUpKTsKKworCQl2YXJpbmZvW2ldLnZhcmVveGFjdGlvbiA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJlb3hhY3Rpb24pKTsKKworCQl2YXJpbmZvW2ldLnZh cmFjbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJhY2wpKTsKKwkJdmFyaW5m b1tpXS5ydmFyYWNsID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3J2YXJhY2wpKTsK KwkJdmFyaW5mb1tpXS5pbml0dmFyYWNsID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBp X2luaXR2YXJhY2wpKTsKKwkJdmFyaW5mb1tpXS5pbml0cnZhcmFjbCA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV9pbml0cnZhcmFjbCkpOworCisJCS8qIERlY2lkZSB3aGV0aGVyIHdl IHdhbnQgdG8gZHVtcCBpdCAqLworCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKHZhcmluZm9baV0u ZG9iaiksIGZvdXQpOworCisJCS8qIERvIG5vdCB0cnkgdG8gZHVtcCBBQ0wgaWYgbm8gQUNMIGV4 aXN0cy4gKi8KKwkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV92YXJhY2wpICYmIFBRZ2V0aXNu dWxsKHJlcywgaSwgaV9ydmFyYWNsKSAmJgorCQkJUFFnZXRpc251bGwocmVzLCBpLCBpX2luaXR2 YXJhY2wpICYmCisJCQlQUWdldGlzbnVsbChyZXMsIGksIGlfaW5pdHJ2YXJhY2wpKQorCQkJdmFy aW5mb1tpXS5kb2JqLmR1bXAgJj0gfkRVTVBfQ09NUE9ORU5UX0FDTDsKKworCQlpZiAoUFFnZXRp c251bGwocmVzLCBpLCBpX3ZhcmRlZmV4cHIpKQorCQkJdmFyaW5mb1tpXS52YXJkZWZleHByID0g TlVMTDsKKwkJZWxzZQorCQkJdmFyaW5mb1tpXS52YXJkZWZleHByID0gcGdfc3RyZHVwKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX3ZhcmRlZmV4cHIpKTsKKworCQlpZiAoc3RybGVuKHZhcmluZm9baV0u cm9sbmFtZSkgPT0gMCkKKwkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogb3duZXIgb2YgdmFy aWFibGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxuIiwKKwkJCQkJICB2YXJpbmZvW2ld LmRvYmoubmFtZSk7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICov CisJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYodmFyaW5mb1tpXS5kb2JqKSwgZm91dCk7CisKKwkJ dnR5cGUgPSBmaW5kVHlwZUJ5T2lkKHZhcmluZm9baV0udmFydHlwZSk7CisJCWFkZE9iamVjdERl cGVuZGVuY3koJnZhcmluZm9baV0uZG9iaiwgdnR5cGUtPmRvYmouZHVtcElkKTsKKwl9CisJUFFj bGVhcihyZXMpOworCisJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKK30KKworLyoKKyAqIGR1 bXBWYXJpYWJsZQorICoJICBkdW1wIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBnaXZlbiB2YXJpYWJs ZXMKKyAqLworc3RhdGljIHZvaWQKK2R1bXBWYXJpYWJsZShBcmNoaXZlICpmb3V0LCBWYXJpYWJs ZUluZm8gKnZhcmluZm8pCit7CisJRHVtcE9wdGlvbnMgKmRvcHQgPSBmb3V0LT5kb3B0OworCisJ UFFFeHBCdWZmZXIgZGVscTsKKwlQUUV4cEJ1ZmZlciBxdWVyeTsKKwljb25zdCBjaGFyCSAgICp2 YXJuYW1lOworCWNvbnN0IGNoYXIJICAgKnZhcnR5cG5hbWU7CisJY29uc3QgY2hhcgkgICAqdmFy ZGVmZXhwcjsKKwljb25zdCBjaGFyCSAgICp2YXJlb3hhY3Rpb247CisKKwkvKiBTa2lwIGlmIG5v dCB0byBiZSBkdW1wZWQgKi8KKwlpZiAoIXZhcmluZm8tPmRvYmouZHVtcCB8fCBkb3B0LT5kYXRh T25seSkKKwkJcmV0dXJuOworCisJZGVscSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJcXVlcnkg PSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCisJdmFybmFtZSA9IGZtdFF1YWxpZmllZER1bXBhYmxl KHZhcmluZm8pOworCXZhcnR5cG5hbWUgPSB2YXJpbmZvLT52YXJ0eXBuYW1lOworCXZhcmRlZmV4 cHIgPSB2YXJpbmZvLT52YXJkZWZleHByOworCXZhcmVveGFjdGlvbiA9IHZhcmluZm8tPnZhcmVv eGFjdGlvbjsKKworCWFwcGVuZFBRRXhwQnVmZmVyKGRlbHEsICJEUk9QIFZBUklBQkxFICVzO1xu IiwKKwkJCQkJICB2YXJuYW1lKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQ1JFQVRF IFZBUklBQkxFICVzIEFTICVzIiwKKwkJCQkJICB2YXJuYW1lLCB2YXJ0eXBuYW1lKTsKKworCWlm ICh2YXJkZWZleHByKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBERUZBVUxUICVzIiwK KwkJCQkJCSAgdmFyZGVmZXhwcik7CisKKwlpZiAoc3RyY21wKHZhcmVveGFjdGlvbiwgImQiKSA9 PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBPTiBDT01NSVQgRFJPUCIpOworCWVs c2UgaWYgKHN0cmNtcCh2YXJlb3hhY3Rpb24sICJyIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZm ZXIocXVlcnksICIgT04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUIik7CisKKwlhcHBlbmRQUUV4cEJ1 ZmZlcihxdWVyeSwgIjtcbiIpOworCisJQXJjaGl2ZUVudHJ5KGZvdXQsIHZhcmluZm8tPmRvYmou Y2F0SWQsIHZhcmluZm8tPmRvYmouZHVtcElkLAorCQkJCSB2YXJpbmZvLT5kb2JqLm5hbWUsCisJ CQkJIE5VTEwsCisJCQkJIE5VTEwsCisJCQkJIHZhcmluZm8tPnJvbG5hbWUsIGZhbHNlLAorCQkJ CSAiVkFSSUFCTEUiLCBTRUNUSU9OX1BSRV9EQVRBLAorCQkJCSBxdWVyeS0+ZGF0YSwgZGVscS0+ ZGF0YSwgTlVMTCwKKwkJCQkgTlVMTCwgMCwKKwkJCQkgTlVMTCwgTlVMTCk7CisKKwlpZiAodmFy aW5mby0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfQ09NTUVOVCkKKwkJZHVtcENvbW1lbnQo Zm91dCwgIlZBUklBQkxFIiwgdmFybmFtZSwKKwkJCQkJTlVMTCwgdmFyaW5mby0+cm9sbmFtZSwK KwkJCQkJdmFyaW5mby0+ZG9iai5jYXRJZCwgMCwgdmFyaW5mby0+ZG9iai5kdW1wSWQpOworCisJ ZGVzdHJveVBRRXhwQnVmZmVyKGRlbHEpOworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7Cit9 CisKIHN0YXRpYyB2b2lkCiBiaW5hcnlfdXBncmFkZV9zZXRfdHlwZV9vaWRzX2J5X3R5cGVfb2lk KEFyY2hpdmUgKmZvdXQsCiAJCQkJCQkJCQkJIFBRRXhwQnVmZmVyIHVwZ3JhZGVfYnVmZmVyLApA QCAtOTc5MSw2ICsxMDAwNiw5IEBAIGR1bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0LCBE dW1wYWJsZU9iamVjdCAqZG9iaikKIAkJY2FzZSBET19TVUJTQ1JJUFRJT046CiAJCQlkdW1wU3Vi c2NyaXB0aW9uKGZvdXQsIChTdWJzY3JpcHRpb25JbmZvICopIGRvYmopOwogCQkJYnJlYWs7CisJ CWNhc2UgRE9fVkFSSUFCTEU6CisJCQlkdW1wVmFyaWFibGUoZm91dCwgKFZhcmlhYmxlSW5mbyAq KSBkb2JqKTsKKwkJCWJyZWFrOwogCQljYXNlIERPX1BSRV9EQVRBX0JPVU5EQVJZOgogCQljYXNl IERPX1BPU1RfREFUQV9CT1VOREFSWToKIAkJCS8qIG5ldmVyIGR1bXBlZCwgbm90aGluZyB0byBk byAqLwpAQCAtMTc4NzcsNiArMTgwOTUsNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2llcyhEdW1w YWJsZU9iamVjdCAqKmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fT1BGQU1JTFk6CiAJ CQljYXNlIERPX0NPTExBVElPTjoKIAkJCWNhc2UgRE9fQ09OVkVSU0lPTjoKKwkJCWNhc2UgRE9f VkFSSUFCTEU6CiAJCQljYXNlIERPX1RBQkxFOgogCQkJY2FzZSBET19BVFRSREVGOgogCQkJY2Fz ZSBET19QUk9DTEFORzoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDE0NDgwMDVmMzAuLjU0NzFlNjY3ZmMgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaApAQCAtODQsNyArODQsOCBAQCB0eXBlZGVmIGVudW0KIAlET19QT0xJQ1ksCiAJ RE9fUFVCTElDQVRJT04sCiAJRE9fUFVCTElDQVRJT05fUkVMLAotCURPX1NVQlNDUklQVElPTgor CURPX1NVQlNDUklQVElPTiwKKwlET19WQVJJQUJMRQogfSBEdW1wYWJsZU9iamVjdFR5cGU7CiAK IC8qIGNvbXBvbmVudCB0eXBlcyBvZiBhbiBvYmplY3Qgd2hpY2ggY2FuIGJlIHNlbGVjdGVkIGZv ciBkdW1waW5nICovCkBAIC02MjUsNiArNjI2LDIzIEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3Jp cHRpb25JbmZvCiAJY2hhcgkgICAqc3VicHVibGljYXRpb25zOwogfSBTdWJzY3JpcHRpb25JbmZv OwogCisvKgorICogVGhlIFZhcmlhYmxlSW5mbyBzdHJ1Y3QgaXMgdXNlZCB0byByZXByZXNlbnQg c2NoZW1hIHZhcmlhYmxlcworICovCit0eXBlZGVmIHN0cnVjdCBfVmFyaWFibGVJbmZvCit7CisJ RHVtcGFibGVPYmplY3QgZG9iajsKKwlPaWQJCQl2YXJ0eXBlOworCWNoYXIJICAgKnZhcnR5cG5h bWU7CisJY2hhcgkgICAqcm9sbmFtZTsJCS8qIG5hbWUgb2Ygb3duZXIsIG9yIGVtcHR5IHN0cmlu ZyAqLworCWNoYXIJICAgKnZhcmVveGFjdGlvbjsKKwljaGFyCSAgICp2YXJkZWZleHByOworCWNo YXIJICAgKnZhcmFjbDsKKwljaGFyCSAgICpydmFyYWNsOworCWNoYXIJICAgKmluaXR2YXJhY2w7 CisJY2hhcgkgICAqaW5pdHJ2YXJhY2w7Cit9IFZhcmlhYmxlSW5mbzsKKwogLyoKICAqIFdlIGJ1 aWxkIGFuIGFycmF5IG9mIHRoZXNlIHdpdGggYW4gZW50cnkgZm9yIGVhY2ggb2JqZWN0IHRoYXQg aXMgYW4KICAqIGV4dGVuc2lvbiBtZW1iZXIgYWNjb3JkaW5nIHRvIHBnX2RlcGVuZC4KQEAgLTcy NSw1ICs3NDMsNiBAQCBleHRlcm4gdm9pZCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCk7 CiBleHRlcm4gdm9pZCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLAogCQkJCQkgaW50IG51bVRhYmxlcyk7CiBleHRlcm4gdm9pZCBnZXRTdWJz Y3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpOworZXh0ZXJuIHZvaWQgZ2V0VmFyaWFibGVzKEFyY2hp dmUgKmZvdXQpOwogCiAjZW5kaWYJCQkJCQkJLyogUEdfRFVNUF9IICovCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9z b3J0LmMKaW5kZXggNjIyN2E4ZmQyNi4uOTY5YTAyMTc3MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXBfc29ydC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQu YwpAQCAtMTQ3Nyw2ICsxNDc3LDEwIEBAIGRlc2NyaWJlRHVtcGFibGVPYmplY3QoRHVtcGFibGVP YmplY3QgKm9iaiwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJICJQT1NULURBVEEgQk9V TkRBUlkgIChJRCAlZCkiLAogCQkJCQkgb2JqLT5kdW1wSWQpOwogCQkJcmV0dXJuOworCQljYXNl IERPX1ZBUklBQkxFOgorCQkJc25wcmludGYoYnVmLCBidWZzaXplLAorCQkJCQkgIlZBUklBQkxF ICVzICAoSUQgJWQgT0lEICV1KSIsCisJCQkJCSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBvYmot PmNhdElkLm9pZCk7CiAJfQogCS8qIHNob3VsZG4ndCBnZXQgaGVyZSAqLwogCXNucHJpbnRmKGJ1 ZiwgYnVmc2l6ZSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggZWM3NTFhN2MyMy4uMmE2 Nzc2NmVkNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTI2MDEsNiArMjYwMSwzOCBA QCBteSAldGVzdHMgPSAoCiAJCX0sCiAJfSwKIAorCSdDUkVBVEUgVkFSSUFCTEUgdGVzdF92YXJp YWJsZScgPT4geworCQlhbGxfcnVucyAgICAgPT4gMSwKKwkJY2F0Y2hfYWxsICAgID0+ICdDUkVB VEUgLi4uIGNvbW1hbmRzJywKKwkJY3JlYXRlX29yZGVyID0+IDYxLAorCQljcmVhdGVfc3FsICAg PT4gJ0NSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUgQVMgaW50ZWdlciBERUZBVUxU IDA7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52 YXJpYWJsZSBBUyBpbnRlZ2VyIERFRkFVTFQgMDtcRS94bSwKKwkJbGlrZSA9PiB7CisJCQliaW5h cnlfdXBncmFkZSAgICAgICAgICA9PiAxLAorCQkJY2xlYW4gICAgICAgICAgICAgICAgICAgPT4g MSwKKwkJCWNsZWFuX2lmX2V4aXN0cyAgICAgICAgID0+IDEsCisJCQljcmVhdGVkYiAgICAgICAg ICAgICAgICA9PiAxLAorCQkJZGVmYXVsdHMgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWV4Y2x1 ZGVfdGVzdF90YWJsZSAgICAgID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGVfZGF0YSA9PiAx LAorCQkJbm9fYmxvYnMgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW5vX3ByaXZzICAgICAgICAg ICAgICAgID0+IDEsCisJCQlub19vd25lciAgICAgICAgICAgICAgICA9PiAxLAorCQkJb25seV9k dW1wX3Rlc3Rfc2NoZW1hICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZGJwcml2cyAgICAgID0+IDEs CisJCQlzY2hlbWFfb25seSAgICAgICAgICAgICA9PiAxLAorCQkJc2VjdGlvbl9wcmVfZGF0YSAg ICAgICAgPT4gMSwKKwkJCXRlc3Rfc2NoZW1hX3BsdXNfYmxvYnMgID0+IDEsCisJCQl3aXRoX29p ZHMgICAgICAgICAgICAgICA9PiAxLCB9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1w X3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBfdGVzdF90YWJsZSAgICAgPT4gMSwKKwkJ CXBnX2R1bXBhbGxfZ2xvYmFscyAgICAgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9nbG9iYWxzX2Ns ZWFuID0+IDEsCisJCQlyb2xlICAgICAgICAgICAgICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25f cG9zdF9kYXRhICAgICAgICA9PiAxLCB9LCB9LAorCiAJJ0NSRUFURSBWSUVXIHRlc3Rfdmlldycg PT4gewogCQljcmVhdGVfb3JkZXIgPT4gNjEsCiAJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFZJ RVcgZHVtcF90ZXN0LnRlc3RfdmlldwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQu YyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggNWI0ZDU0YTQ0Mi4uNzNhNzUyZmQ3ZSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29t bWFuZC5jCkBAIC04NTMsNiArODUzLDkgQEAgZXhlY19jb21tYW5kX2QoUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIAkJCQkJCWJy ZWFrOwogCQkJCX0KIAkJCQlicmVhazsKKwkJCWNhc2UgJ1YnOgkJCS8qIFZhcmlhYmxlcyAqLwor CQkJCXN1Y2Nlc3MgPSBsaXN0VmFyaWFibGVzKHBhdHRlcm4sIHNob3dfdmVyYm9zZSk7CisJCQkJ YnJlYWs7CiAJCQljYXNlICd4JzoJCQkvKiBFeHRlbnNpb25zICovCiAJCQkJaWYgKHNob3dfdmVy Ym9zZSkKIAkJCQkJc3VjY2VzcyA9IGxpc3RFeHRlbnNpb25Db250ZW50cyhwYXR0ZXJuKTsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggNGNhMGRiMWQwYy4uZmQ0ZTEyODVkOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTQxOTgsNiArNDE5 OCw4NCBAQCBsaXN0U2NoZW1hcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJv b2wgc2hvd1N5c3RlbSkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIFxkVgorICoKKyAqIGxp c3RWYXJpYWJsZXMoKQorICovCitib29sCitsaXN0VmFyaWFibGVzKGNvbnN0IGNoYXIgKnBhdHRl cm4sIGJvb2wgdmVyYm9zZSkKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCVBHcmVzdWx0ICAg KnJlczsKKwlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OworCXN0YXRpYyBjb25zdCBi b29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2V9OworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSBhcyBcIiVzXCIsXG4i CisJCQkJCSAgIiAgdi52YXJuYW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9n LmZvcm1hdF90eXBlKHYudmFydHlwZSwgdi52YXJ0eXBtb2QpIGFzIFwiJXNcIixcbiIKKwkJCQkJ ICAiICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZCh2LnZhcm93bmVyKSBhcyBcIiVzXCIsXG4i CisJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcih2LnZhcmRlZmV4cHIsIDApIGFzIFwi JXNcIixcbiIKKwkJCQkJICAiICBDQVNFIHYudmFyZW94YWN0aW9uXG4iCisJCQkJCSAgIiAgICBX SEVOICdkJyBUSEVOICdPTiBDT01NSVQgRFJPUCdcbiIKKwkJCQkJICAiICAgIFdIRU4gJ3InIFRI RU4gJ09OIFRSQU5TQUNUSU9OIEVORCBSRVNFVCcgRU5EIGFzIFwiJXNcIlxuIiwKKwkJCQkJICBn ZXR0ZXh0X25vb3AoIlNjaGVtYSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiTmFtZSIpLAorCQkJ CQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3duZXIiKSwK KwkJCQkJICBnZXR0ZXh0X25vb3AoIkRlZmF1bHQiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlRy YW5zYWN0aW9uIGVuZCBhY3Rpb24iKSk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAor CQkJCQkJICJcbkZST00gcGdfY2F0YWxvZy5wZ192YXJpYWJsZSB2IgorCQkJCQkJICJcbiAgICAg TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSB2LnZhcm5hbWVz cGFjZSIpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIlxuV0hFUkUgdHJ1ZVxuIik7 CisJaWYgKCFwYXR0ZXJuKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiICAgICAgQU5E IG4ubnNwbmFtZSA8PiAncGdfY2F0YWxvZydcbiIKKwkJCQkJCQkgIiAgICAgIEFORCBuLm5zcG5h bWUgPD4gJ2luZm9ybWF0aW9uX3NjaGVtYSdcbiIpOworCisJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJu KHBzZXQuZGIsICZidWYsIHBhdHRlcm4sIHRydWUsIGZhbHNlLAorCQkJCQkJICAibi5uc3BuYW1l IiwgInYudmFybmFtZSIsIE5VTEwsCisJCQkJCQkgICJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlX2lz X3Zpc2libGUodi5vaWQpIik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIg QlkgMSwyOyIpOworCisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZl cigmYnVmKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBNb3N0IGZ1 bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGNvbnRlbnQgdG8gcHJpbnQgYW4gZW1wdHkgdGFibGUg d2hlbgorCSAqIHRoZXJlIGFyZSBubyBtYXRjaGluZyBvYmplY3RzLiAgV2UgaW50ZW50aW9uYWxs eSBkZXZpYXRlIGZyb20gdGhhdAorCSAqIGhlcmUsIGJ1dCBvbmx5IGluICFxdWlldCBtb2RlLCBm b3IgaGlzdG9yaWNhbCByZWFzb25zLgorCSAqLworCWlmIChQUW50dXBsZXMocmVzKSA9PSAwICYm ICFwc2V0LnF1aWV0KQorCXsKKwkJaWYgKHBhdHRlcm4pCisJCQlwc3FsX2Vycm9yKCJEaWQgbm90 IGZpbmQgYW55IHNjaGVtYSB2YXJpYWJsZSBuYW1lZCBcIiVzXCIuXG4iLAorCQkJCQkgICBwYXR0 ZXJuKTsKKwkJZWxzZQorCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBzY2hlbWEgdmFy aWFibGVzLlxuIik7CisJfQorCWVsc2UKKwl7CisJCW15b3B0Lm51bGxQcmludCA9IE5VTEw7CisJ CW15b3B0LnRpdGxlID0gXygiTGlzdCBvZiB2YXJpYWJsZXMiKTsKKwkJbXlvcHQudHJhbnNsYXRl X2hlYWRlciA9IHRydWU7CisJCW15b3B0LnRyYW5zbGF0ZV9jb2x1bW5zID0gdHJhbnNsYXRlX2Nv bHVtbnM7CisJCW15b3B0Lm5fdHJhbnNsYXRlX2NvbHVtbnMgPSBsZW5ndGhvZih0cmFuc2xhdGVf Y29sdW1ucyk7CisKKwkJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZh bHNlLCBwc2V0LmxvZ2ZpbGUpOworCX0KKworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsK K30KIAogLyoKICAqIFxkRnAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oIGIv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKaW5kZXggYTRjYzVlZmFlMC4uZWNjNGUzYTUzMSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmgKQEAgLTYzLDYgKzYzLDkgQEAgZXh0ZXJuIGJvb2wgbGlzdEFsbERicyhjb25zdCBjaGFy ICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogLyogXGR0LCBcZGksIFxkcywgXGRTLCBldGMuICov CiBleHRlcm4gYm9vbCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFy ICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSk7CiAKKy8qIFxkViAqLwor ZXh0ZXJuIGJvb2wgbGlzdFZhcmlhYmxlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZhcmJv c2UpOworCiAvKiBcZEQgKi8KIGV4dGVybiBib29sIGxpc3REb21haW5zKGNvbnN0IGNoYXIgKnBh dHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKaW5kZXggNTg2YWViZGRkMy4u NWUwMTc1YjM4NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmlu L3BzcWwvaGVscC5jCkBAIC0xNjcsNyArMTY3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9y dCBpbnQgcGFnZXIpCiAJICogVXNlICJwc3FsIC0taGVscD1jb21tYW5kcyB8IHdjIiB0byBjb3Vu dCBjb3JyZWN0bHkuICBJdCdzIG9rYXkgdG8gY291bnQKIAkgKiB0aGUgVVNFX1JFQURMSU5FIGxp bmUgZXZlbiBpbiBidWlsZHMgd2l0aG91dCB0aGF0LgogCSAqLwotCW91dHB1dCA9IFBhZ2VPdXRw dXQoMTI1LCBwYWdlciA/ICYocHNldC5wb3B0LnRvcHQpIDogTlVMTCk7CisJb3V0cHV0ID0gUGFn ZU91dHB1dCgxMjYsIHBhZ2VyID8gJihwc2V0LnBvcHQudG9wdCkgOiBOVUxMKTsKIAogCWZwcmlu dGYob3V0cHV0LCBfKCJHZW5lcmFsXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxjb3B5 cmlnaHQgICAgICAgICAgICAgc2hvdyBQb3N0Z3JlU1FMIHVzYWdlIGFuZCBkaXN0cmlidXRpb24g dGVybXNcbiIpKTsKQEAgLTI1Nyw2ICsyNTcsNyBAQCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0 IGludCBwYWdlcikKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRUW1MrXSBbUEFUVEVSTl0gICAg ICBsaXN0IGRhdGEgdHlwZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR1W1MrXSBb UEFUVEVSTl0gICAgICBsaXN0IHJvbGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxk dltTK10gW1BBVFRFUk5dICAgICAgbGlzdCB2aWV3c1xuIikpOworCWZwcmludGYob3V0cHV0LCBf KCIgIFxcZFYgICAgIFtQQVRURVJOXSAgICAgIGxpc3QgdmFyaWFibGVzXG4iKSk7CiAJZnByaW50 ZihvdXRwdXQsIF8oIiAgXFxkeFsrXSAgW1BBVFRFUk5dICAgICAgbGlzdCBleHRlbnNpb25zXG4i KSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkeSAgICAgW1BBVFRFUk5dICAgICAgbGlzdCBl dmVudCB0cmlnZ2Vyc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcbFsrXSAgIFtQQVRU RVJOXSAgICAgIGxpc3QgZGF0YWJhc2VzXG4iKSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggNzU0OWI0 MDE5Mi4uNmNlOWEzZDZlYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5j CisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtNjEwLDYgKzYxMCwyMiBAQCBz dGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2Zfc3RhdGlzdGljcyA9IHsK IAkucmVzdWx0ID0gInBnX2NhdGFsb2cucXVvdGVfaWRlbnQocy5zdHhuYW1lKSIsCiB9OwogCitz dGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzID0gewor CS8qIG1pbl9zZXJ2ZXJfdmVyc2lvbiAqLworCTAsCisJLyogY2F0bmFtZSAqLworCSJwZ19jYXRh bG9nLnBnX3ZhcmlhYmxlIHYiLAorCS8qIHNlbGNvbmRpdGlvbiAqLworCU5VTEwsCisJLyogdmlz Y29uZGl0aW9uICovCisJInBnX2NhdGFsb2cucGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCki LAorCS8qIG5hbWVzcGFjZSAqLworCSJ2LnZhcm5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJ InBnX2NhdGFsb2cucXVvdGVfaWRlbnQodi52YXJuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLwor CU5VTEwKK307CiAKIC8qCiAgKiBRdWVyaWVzIHRvIGdldCBsaXN0cyBvZiBuYW1lcyBvZiB2YXJp b3VzIGtpbmRzIG9mIHRoaW5ncywgcG9zc2libHkKQEAgLTEwNTQsNiArMTA3MCw3IEBAIHN0YXRp YyBjb25zdCBwZ3NxbF90aGluZ190IHdvcmRzX2FmdGVyX2NyZWF0ZVtdID0gewogCQkJCQkJCQkJ CQkJCQkJCQkgKiBUQUJMRSAuLi4gKi8KIAl7IlVTRVIiLCBRdWVyeV9mb3JfbGlzdF9vZl9yb2xl cyAiIFVOSU9OIFNFTEVDVCAnTUFQUElORyBGT1InIn0sCiAJeyJVU0VSIE1BUFBJTkcgRk9SIiwg TlVMTCwgTlVMTCwgTlVMTH0sCisJeyJWQVJJQUJMRSIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3Jf bGlzdF9vZl92YXJpYWJsZXN9LAogCXsiVklFVyIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlz dF9vZl92aWV3c30sCiAJe05VTEx9CQkJCQkJLyogZW5kIG9mIGxpc3QgKi8KIH07CkBAIC0xNDA5 LDcgKzE0MjYsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0 LCBpbnQgZW5kKQogCQkiQUJPUlQiLCAiQUxURVIiLCAiQU5BTFlaRSIsICJCRUdJTiIsICJDQUxM IiwgIkNIRUNLUE9JTlQiLCAiQ0xPU0UiLCAiQ0xVU1RFUiIsCiAJCSJDT01NRU5UIiwgIkNPTU1J VCIsICJDT1BZIiwgIkNSRUFURSIsICJERUFMTE9DQVRFIiwgIkRFQ0xBUkUiLAogCQkiREVMRVRF IEZST00iLCAiRElTQ0FSRCIsICJETyIsICJEUk9QIiwgIkVORCIsICJFWEVDVVRFIiwgIkVYUExB SU4iLAotCQkiRkVUQ0giLCAiR1JBTlQiLCAiSU1QT1JUIiwgIklOU0VSVCIsICJMSVNURU4iLCAi TE9BRCIsICJMT0NLIiwKKwkJIkZFVENIIiwgIkdSQU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAi TEVUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAogCQkiTU9WRSIsICJOT1RJRlkiLCAiUFJF UEFSRSIsCiAJCSJSRUFTU0lHTiIsICJSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIiwgIlJFSU5E RVgiLCAiUkVMRUFTRSIsCiAJCSJSRVNFVCIsICJSRVZPS0UiLCAiUk9MTEJBQ0siLApAQCAtMTQy Niw5ICsxNDQzLDkgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFy dCwgaW50IGVuZCkKIAkJIlxcZCIsICJcXGRhIiwgIlxcZEEiLCAiXFxkYiIsICJcXGRjIiwgIlxc ZEMiLCAiXFxkZCIsICJcXGRkcCIsICJcXGREIiwKIAkJIlxcZGVzIiwgIlxcZGV0IiwgIlxcZGV1 IiwgIlxcZGV3IiwgIlxcZEUiLCAiXFxkZiIsCiAJCSJcXGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwg IlxcZEZ0IiwgIlxcZGciLCAiXFxkaSIsICJcXGRsIiwgIlxcZEwiLAotCQkiXFxkbSIsICJcXGRu IiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIiwKKwkJIlxcZG0iLCAiXFxkbiIsICJcXGRvIiwgIlxc ZE8iLCAiXFxkcCIKIAkJIlxcZHJkcyIsICJcXGRScyIsICJcXGRScCIsICJcXGRzIiwgIlxcZFMi LAotCQkiXFxkdCIsICJcXGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLAorCQki XFxkdCIsICJcXGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLCAiXFxkViIsCiAJ CSJcXGUiLCAiXFxlY2hvIiwgIlxcZWYiLCAiXFxlbGlmIiwgIlxcZWxzZSIsICJcXGVuY29kaW5n IiwKIAkJIlxcZW5kaWYiLCAiXFxlcnJ2ZXJib3NlIiwgIlxcZXYiLAogCQkiXFxmIiwKQEAgLTE3 OTMsNiArMTgxMCw5IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWx0 ZXJfc3lzdGVtX3NldF92YXJzKTsKIAllbHNlIGlmIChNYXRjaGVzNCgiQUxURVIiLCAiU1lTVEVN IiwgIlNFVCIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiVE8iKTsKKwkvKiBB TFRFUiBWQVJJQUJMRSA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzMygiQUxURVIiLCAiVkFS SUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEhfTElTVDMoIk9XTkVSIFRPIiwgIlJF TkFNRSBUTyIsICJTRVQgU0NIRU1BIik7CiAJLyogQUxURVIgVklFVyA8bmFtZT4gKi8KIAllbHNl IGlmIChNYXRjaGVzMygiQUxURVIiLCAiVklFVyIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lU SF9MSVNUNCgiQUxURVIgQ09MVU1OIiwgIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIsCkBAIC0yNjQz LDYgKzI2NjMsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFy dCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzNCgiQ1JFQVRFIiwgIlJPTEV8VVNFUnxHUk9V UCIsIE1hdGNoQW55LCAiSU4iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiR1JPVVAiLCAiUk9M RSIpOwogCisvKiBDUkVBVEUgVkFSSUFCTEUgLS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBT Q0hFTUEsIHNvIHVzZSBUYWlsTWF0Y2hlcyAqLworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJM RSA8bmFtZT4gd2l0aCBBUyAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZB UklBQkxFIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCJBUyIpOworCS8qIENv bXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBBUyB0eXBlcyovCisJZWxzZSBpZiAo VGFpbE1hdGNoZXM0KCJDUkVBVEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSwgIkFTIikpCisJCUNP TVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcywgTlVM TCk7CisKIC8qIENSRUFURSBWSUVXIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1B LCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KIAkvKiBDb21wbGV0ZSBDUkVBVEUgVklFVyA8bmFtZT4g d2l0aCBBUyAqLwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZJRVciLCBNYXRj aEFueSkpCkBAIC0yNjk2LDcgKzI3MjQsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAq dGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCiAvKiBESVNDQVJEICovCiAJZWxzZSBpZiAoTWF0 Y2hlczEoIkRJU0NBUkQiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNCgiQUxMIiwgIlBMQU5TIiwg IlNFUVVFTkNFUyIsICJURU1QIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDUoIkFMTCIsICJQTEFO UyIsICJTRVFVRU5DRVMiLCAiVEVNUCIsICJWQVJJQUJMRVMiKTsKIAogLyogRE8gKi8KIAllbHNl IGlmIChNYXRjaGVzMSgiRE8iKSkKQEAgLTI3OTgsNiArMjgyNiwxMiBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNo ZXM1KCJEUk9QIiwgIlJVTEUiLCBNYXRjaEFueSwgIk9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVU RV9XSVRIX0xJU1QyKCJDQVNDQURFIiwgIlJFU1RSSUNUIik7CiAKKwkvKiBEUk9QIFZBUklBQkxF ICovCisJZWxzZSBpZiAoTWF0Y2hlczIoIkRST1AiLCAiVkFSSUFCTEUiKSkKKwkJQ09NUExFVEVf V0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwll bHNlIGlmIChNYXRjaGVzMygiRFJPUCIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSkKKwkJQ09NUExF VEVfV0lUSF9MSVNUMigiQ0FTQ0FERSIsICJSRVNUUklDVCIpOworCiAvKiBFWEVDVVRFICovCiAJ ZWxzZSBpZiAoTWF0Y2hlczEoIkVYRUNVVEUiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl9wcmVwYXJlZF9zdGF0ZW1lbnRzKTsKQEAgLTI4MDgsMTQgKzI4NDIsMTQg QEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkK IAkgKiBDb21wbGV0ZSBFWFBMQUlOIFtBTkFMWVpFXSBbVkVSQk9TRV0gd2l0aCBsaXN0IG9mIEVY UExBSU4tYWJsZSBjb21tYW5kcwogCSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJFWFBMQUlOIikp Ci0JCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQ REFURSIsICJERUNMQVJFIiwKLQkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIik7CisJCUNPTVBM RVRFX1dJVEhfTElTVDgoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJE RUNMQVJFIiwKKwkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIiwgIkxFVCIpOwogCWVsc2UgaWYg KE1hdGNoZXMyKCJFWFBMQUlOIiwgIkFOQUxZWkUiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNigi U0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiLAotCQkJCQkJ CSJWRVJCT1NFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAi REVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKKwkJCQkJCQkiVkVSQk9TRSIsICJMRVQiKTsK IAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJTiIsICJWRVJCT1NFIikgfHwKIAkJCSBNYXRjaGVz MygiRVhQTEFJTiIsICJBTkFMWVpFIiwgIlZFUkJPU0UiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNU NSgiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiKTsKKwkJ Q09NUExFVEVfV0lUSF9MSVNUNigiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRF IiwgIkRFQ0xBUkUiLCAiTEVUIik7CiAKIC8qIEZFVENIICYmIE1PVkUgKi8KIAkvKiBDb21wbGV0 ZSBGRVRDSCB3aXRoIG9uZSBvZiBGT1JXQVJELCBCQUNLV0FSRCwgUkVMQVRJVkUgKi8KQEAgLTI5 MjQsNiArMjk1OCw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFJPVVRJTkVTIElO IFNDSEVNQSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFNFUVVFTkNFUyBJTiBT Q0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBUQUJMRVMgSU4gU0NIRU1B JyIKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgVkFSSUFCTEVTIElOIFNDSEVNQSci CiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnREFUQUJBU0UnIgogCQkJCQkJCQkJICAgIiBV TklPTiBTRUxFQ1QgJ0RPTUFJTiciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnRk9SRUlH TiBEQVRBIFdSQVBQRVInIgpAQCAtMjkzNywxNCArMjk3MiwxNiBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ1NFUVVFTkNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdUQUJMRSci CiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEVTUEFDRSciCi0JCQkJCQkJCQkgICAi IFVOSU9OIFNFTEVDVCAnVFlQRSciKTsKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdUWVBF JyIKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdWQVJJQUJMRSciKTsKIAl9CiAJZWxzZSBp ZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkFMTCIpKQot CQlDT01QTEVURV9XSVRIX0xJU1Q1KCJGVU5DVElPTlMgSU4gU0NIRU1BIiwKKwkJQ09NUExFVEVf V0lUSF9MSVNUNigiRlVOQ1RJT05TIElOIFNDSEVNQSIsCiAJCQkJCQkJIlBST0NFRFVSRVMgSU4g U0NIRU1BIiwKIAkJCQkJCQkiUk9VVElORVMgSU4gU0NIRU1BIiwKIAkJCQkJCQkiU0VRVUVOQ0VT IElOIFNDSEVNQSIsCi0JCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJCQkiVEFCTEVT IElOIFNDSEVNQSIsCisJCQkJCQkJIlZBUklBQkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChU YWlsTWF0Y2hlczQoIkdSQU5UfFJFVk9LRSIsIE1hdGNoQW55LCAiT04iLCAiRk9SRUlHTiIpKQog CQlDT01QTEVURV9XSVRIX0xJU1QyKCJEQVRBIFdSQVBQRVIiLCAiU0VSVkVSIik7CiAKQEAgLTI5 NzgsNiArMzAxNSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAJCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3Rh Ymxlc3BhY2VzKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJUWVBFIikpCiAJCQlDT01QTEVU RV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9kYXRhdHlwZXMsIE5VTEwpOwor CQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlZBUklBQkxFIikpCisJCQlDT01QTEVURV9XSVRIX1ND SEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOwogCQllbHNlIGlm IChUYWlsTWF0Y2hlczQoIkdSQU5UIiwgTWF0Y2hBbnksIE1hdGNoQW55LCBNYXRjaEFueSkpCiAJ CQlDT01QTEVURV9XSVRIX0NPTlNUKCJUTyIpOwogCQllbHNlCkBAIC0zMTMwLDcgKzMxNjksNyBA QCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQog CiAvKiBQUkVQQVJFIHh4IEFTICovCiAJZWxzZSBpZiAoTWF0Y2hlczMoIlBSRVBBUkUiLCBNYXRj aEFueSwgIkFTIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDQoIlNFTEVDVCIsICJVUERBVEUiLCAi SU5TRVJUIiwgIkRFTEVURSBGUk9NIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIs ICJVUERBVEUiLCAiSU5TRVJUIiwgIkRFTEVURSBGUk9NIiwgIkxFVCIpOwogCiAvKgogICogUFJF UEFSRSBUUkFOU0FDVElPTiBpcyBtaXNzaW5nIG9uIHB1cnBvc2UuIEl0J3MgaW50ZW5kZWQgZm9y IHRyYW5zYWN0aW9uCkBAIC0zMzUzLDYgKzMzOTIsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0 IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChUYWlsTWF0Y2hlczQo IlVQREFURSIsIE1hdGNoQW55LCAiU0VUIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIX0NP TlNUKCI9Iik7CiAKKy8qIExFVCAtLS0gY2FuIGJlIGluc2lkZSBFWFBMQUlOLCBQUkVQQVJFIGV0 YyAqLworCS8qIElmIHByZXYuIHdvcmQgaXMgTEVUIHN1Z2dlc3QgYSBsaXN0IG9mIHZhcmlhYmxl cyAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMSgiTEVUIikpCisJCUNPTVBMRVRFX1dJVEhfU0NI RU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7CisJLyogQ29tcGxl dGUgTEVUIDx2YXJpYWJsZT4gd2l0aCAiPSIgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczIoIkxF VCIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSF9DT05TVCgiPSIpOworCiAvKiBVU0VSIE1B UFBJTkcgKi8KIAllbHNlIGlmIChNYXRjaGVzMygiQUxURVJ8Q1JFQVRFfERST1AiLCAiVVNFUiIs ICJNQVBQSU5HIikpCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIkZPUiIpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2Rl cGVuZGVuY3kuaAppbmRleCA0NmMyNzFhNDZjLi4zZTM4YTA1ZTU1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2Rl cGVuZGVuY3kuaApAQCAtMTgwLDcgKzE4MCw4IEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwog CU9DTEFTU19QVUJMSUNBVElPTiwJCQkvKiBwZ19wdWJsaWNhdGlvbiAqLwogCU9DTEFTU19QVUJM SUNBVElPTl9SRUwsCQkvKiBwZ19wdWJsaWNhdGlvbl9yZWwgKi8KIAlPQ0xBU1NfU1VCU0NSSVBU SU9OLAkJLyogcGdfc3Vic2NyaXB0aW9uICovCi0JT0NMQVNTX1RSQU5TRk9STQkJCS8qIHBnX3Ry YW5zZm9ybSAqLworCU9DTEFTU19UUkFOU0ZPUk0sCQkJLyogcGdfdHJhbnNmb3JtICovCisJT0NM QVNTX1ZBUklBQkxFCQkJCS8qIHBnX3ZhcmlhYmxlICovCiB9IE9iamVjdENsYXNzOwogCiAjZGVm aW5lIExBU1RfT0NMQVNTCQlPQ0xBU1NfVFJBTlNGT1JNCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL2luZGV4aW5nLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmgKaW5k ZXggMjU0ZmJlZjFmNy4uNjdlZDA0ZjM1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9pbmRleGluZy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXhpbmcuaApAQCAtMzYw LDQgKzM2MCwxMCBAQCBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19zdWJzY3JpcHRpb25fc3VibmFt ZV9pbmRleCwgNjExNSwgb24gcGdfc3Vic2NyaXB0aW9uIHVzaQogREVDTEFSRV9VTklRVUVfSU5E RVgocGdfc3Vic2NyaXB0aW9uX3JlbF9zcnJlbGlkX3Nyc3ViaWRfaW5kZXgsIDYxMTcsIG9uIHBn X3N1YnNjcmlwdGlvbl9yZWwgdXNpbmcgYnRyZWUoc3JyZWxpZCBvaWRfb3BzLCBzcnN1YmlkIG9p ZF9vcHMpKTsKICNkZWZpbmUgU3Vic2NyaXB0aW9uUmVsU3JyZWxpZFNyc3ViaWRJbmRleElkIDYx MTcKIAorREVDTEFSRV9VTklRVUVfSU5ERVgocGdfdmFyaWFibGVfb2lkX2luZGV4LCA0Mjg4LCBv biBwZ192YXJpYWJsZSB1c2luZyBidHJlZShvaWQgb2lkX29wcykpOworI2RlZmluZSBWYXJpYWJs ZU9iamVjdEluZGV4SWQgNDI4OAorCitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ192YXJpYWJsZV92 YXJuYW1lX25zcF9pbmRleCwgNDI4OSwgb24gcGdfdmFyaWFibGUgdXNpbmcgYnRyZWUodmFybmFt ZSBuYW1lX29wcywgdmFybmFtZXNwYWNlIG9pZF9vcHMpKTsKKyNkZWZpbmUgVmFyaWFibGVOYW1l TnNwSW5kZXhJZCAgNDI4OQorCiAjZW5kaWYJCQkJCQkJLyogSU5ERVhJTkdfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvbmFtZXNwYWNlLmgKaW5kZXggMGUyMDIzNzJkNS4uODgxMjA3NWIyZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L25hbWVzcGFjZS5oCkBAIC03NSwxMCArNzUsMTMgQEAgZXh0ZXJuIE9pZCBSYW5nZVZhckdldEFu ZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UoUmFuZ2VWYXIgKm5ld1JlbGF0aW9uLAogZXh0ZXJuIHZv aWQgUmFuZ2VWYXJBZGp1c3RSZWxhdGlvblBlcnNpc3RlbmNlKFJhbmdlVmFyICpuZXdSZWxhdGlv biwgT2lkIG5zcGlkKTsKIGV4dGVybiBPaWQJUmVsbmFtZUdldFJlbGlkKGNvbnN0IGNoYXIgKnJl bG5hbWUpOwogZXh0ZXJuIGJvb2wgUmVsYXRpb25Jc1Zpc2libGUoT2lkIHJlbGlkKTsKK2V4dGVy biBib29sIFZhcmlhYmxlSXNWaXNpYmxlKE9pZCByZWxpZCk7CiAKIGV4dGVybiBPaWQJVHlwZW5h bWVHZXRUeXBpZChjb25zdCBjaGFyICp0eXBuYW1lKTsKIGV4dGVybiBib29sIFR5cGVJc1Zpc2li bGUoT2lkIHR5cGlkKTsKIAorZXh0ZXJuIGJvb2wgVmFyaWFibGVJc1Zpc2libGUoT2lkIHZhcmlk KTsKKwogZXh0ZXJuIEZ1bmNDYW5kaWRhdGVMaXN0IEZ1bmNuYW1lR2V0Q2FuZGlkYXRlcyhMaXN0 ICpuYW1lcywKIAkJCQkJICBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVzLAogCQkJCQkgIGJvb2wg ZXhwYW5kX3ZhcmlhZGljLApAQCAtMTQ2LDYgKzE0OSwxMCBAQCBleHRlcm4gdm9pZCBTZXRUZW1w TmFtZXNwYWNlU3RhdGUoT2lkIHRlbXBOYW1lc3BhY2VJZCwKIAkJCQkJICBPaWQgdGVtcFRvYXN0 TmFtZXNwYWNlSWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRUZW1wVGFibGVOYW1lc3BhY2Uodm9pZCk7 CiAKK2V4dGVybiBMaXN0ICpOYW1lc0Zyb21MaXN0KExpc3QgKm5hbWVzKTsKK2V4dGVybiBPaWQg bG9va3VwX3ZhcmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIgKnZhcm5hbWUs IGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4gT2lkIGlkZW50aWZ5X3ZhcmlhYmxlKExpc3QgKm5h bWVzLCBjaGFyICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxKTsKKwogZXh0ZXJuIE92ZXJyaWRl U2VhcmNoUGF0aCAqR2V0T3ZlcnJpZGVTZWFyY2hQYXRoKE1lbW9yeUNvbnRleHQgY29udGV4dCk7 CiBleHRlcm4gT3ZlcnJpZGVTZWFyY2hQYXRoICpDb3B5T3ZlcnJpZGVTZWFyY2hQYXRoKE92ZXJy aWRlU2VhcmNoUGF0aCAqcGF0aCk7CiBleHRlcm4gYm9vbCBPdmVycmlkZVNlYXJjaFBhdGhNYXRj aGVzQ3VycmVudChPdmVycmlkZVNlYXJjaFBhdGggKnBhdGgpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19k ZWZhdWx0X2FjbC5oCmluZGV4IGFlZTQ5ZmRiNmQuLmY4NGVhMjFjNjggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2RlZmF1bHRfYWNsLmgKQEAgLTU3LDYgKzU3LDcgQEAgdHlwZWRlZiBGb3JtRGF0YV9w Z19kZWZhdWx0X2FjbCAqRm9ybV9wZ19kZWZhdWx0X2FjbDsKICNkZWZpbmUgREVGQUNMT0JKX0ZV TkNUSU9OCQknZicgLyogZnVuY3Rpb24gKi8KICNkZWZpbmUgREVGQUNMT0JKX1RZUEUJCQknVCcg LyogdHlwZSAqLwogI2RlZmluZSBERUZBQ0xPQkpfTkFNRVNQQUNFCQknbicgLyogbmFtZXNwYWNl ICovCisjZGVmaW5lIERFRkFDTE9CSl9WQVJJQUJMRQkJJ1YnIC8qIHZhcmlhYmxlICovCiAKICNl bmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggODYwNTcxNDQwYS4uN2YzYTA4ODRkMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CkBAIC01OTYxLDYgKzU5NjEsOSBAQAogICBwcm9uYW1lID0+ICdwZ19jb2xsYXRpb25faXNf dmlzaWJsZScsIHByb2Nvc3QgPT4gJzEwJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0 eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfY29s bGF0aW9uX2lzX3Zpc2libGUnIH0sCit7IG9pZCA9PiAnNDE4NycsIGRlc2NyID0+ICdpcyBzY2hl bWEgdmFyaWFibGUgdmlzaWJsZSBpbiBzZWFyY2ggcGF0aD8nLAorICBwcm9uYW1lID0+ICdwZ192 YXJpYWJsZV9pc192aXNpYmxlJywgcHJvY29zdCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycs CisgIHByb3JldHR5cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywgcHJvc3JjID0+ ICdwZ192YXJpYWJsZV9pc192aXNpYmxlJyB9LAogCiB7IG9pZCA9PiAnMjg1NCcsIGRlc2NyID0+ ICdnZXQgT0lEIG9mIGN1cnJlbnQgc2Vzc2lvblwncyB0ZW1wIHNjaGVtYSwgaWYgYW55JywKICAg cHJvbmFtZSA9PiAncGdfbXlfdGVtcF9zY2hlbWEnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3Bh cmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFi bGUuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi42MjM1NWVkZjRjCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oCkBAIC0wLDAgKzEsMTAxIEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBwZ192YXJpYWJsZS5oCisgKgkgIGRlZmluaXRpb24gb2Ygc2No ZW1hIHZhcmlhYmxlcyBzeXN0ZW0gY2F0YWxvZyAocGdfdmFyaWFibGVzKQorICoKKyAqCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0 aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z192YXJpYWJsZS5oCisgKgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJl YWRzIHRoaXMgZmlsZSBhbmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfVkFSSUFCTEVfSAorI2RlZmluZSBQ R19WQVJJQUJMRV9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNh dGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGVfZC5o IgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdf dmFyaWFibGUgZGVmaW5pdGlvbi4gIGNwcCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0 cnVjdCBGb3JtRGF0YV9wZ192YXJpYWJsZQorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRB TE9HKHBnX3ZhcmlhYmxlLDQyODcsVmFyaWFibGVSZWxhdGlvbklkKQoreworCU5hbWVEYXRhCXZh cm5hbWU7CQkvKiB2YXJpYWJsZSBuYW1lICovCisJT2lkCQkJdmFybmFtZXNwYWNlOwkvKiBPSUQg b2YgbmFtZXNwYWNlIGNvbnRhaW5pbmcgdmFyaWFibGUgY2xhc3MgKi8KKwlPaWQJCQl2YXJ0eXBl OwkJLyogT0lEIG9mIGVudHJ5IGluIHBnX3R5cGUgZm9yIHZhcmlhYmxlJ3MgdHlwZSAqLworCWlu dDMyCQl2YXJ0eXBtb2Q7CQkJLyogdHlwbW9kZSBmb3IgdmFyaWFibGUncyB0eXBlICovCisJT2lk CQkJdmFyb3duZXI7CQkvKiBjbGFzcyBvd25lciAqLworCU9pZAkJCXZhcmNvbGxhdGlvbjsJLyog dmFyaWFibGUgY29sbGF0aW9uICovCisJY2hhcgkJdmFyZW94YWN0aW9uOwkvKiBhY3Rpb24gb24g dHJhbnNhY3Rpb24gZW5kICovCisKKyNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxl LWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLworCisJLyogbGlzdCBvZiBleHByZXNzaW9uIHRy ZWVzIGZvciB2YXJpYWJsZSBkZWZhdWx0IChOVUxMIGlmIG5vbmUpICovCisJcGdfbm9kZV90cmVl IHZhcmRlZmV4cHIgQktJX0RFRkFVTFQoX251bGxfKTsKKworCWFjbGl0ZW0JCXZhcmFjbFsxXSBC S0lfREVGQVVMVChfbnVsbF8pOwkJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCisKKyNlbmRpZgor fSBGb3JtRGF0YV9wZ192YXJpYWJsZTsKKwordHlwZWRlZiBlbnVtIFZhcmlhYmxlRU9YQWN0aW9u Q29kZXMKK3sKKwlWQVJJQUJMRV9FT1hfQ09ERV9OT09QID0gJ24nLAkJCS8qIE5PT1AgKi8KKwlW QVJJQUJMRV9FT1hfQ09ERV9EUk9QID0gJ2QnLAkJCS8qIE9OIENPTU1JVCBEUk9QICovCisJVkFS SUFCTEVfRU9YX0NPREVfUkVTRVQgPSAncicsCQkJLyogT04gQ09NTUlUIFJFU0VUICovCit9IFZh cmlhYmxlRU9YQWN0aW9uQ29kZXM7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3Bn X3ZhcmlhYmxlIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0 aGUgZm9ybWF0IG9mIHBnX3ZhcmlhYmxlIHJlbGF0aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQor ICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3ZhcmlhYmxlICpGb3JtX3BnX3ZhcmlhYmxlOworCit0 eXBlZGVmIHN0cnVjdCBWYXJpYWJsZQoreworCU9pZAkJb2lkOworCWNoYXIgICAqbmFtZTsKKwlP aWQJCW5hbWVzcGFjZTsKKwlPaWQJCXR5cGlkOworCWludDMyCXR5cG1vZDsKKwlPaWQJCW93bmVy OworCU9pZAkJY29sbGF0aW9uOworCVZhcmlhYmxlRU9YQWN0aW9uIGVveGFjdGlvbjsKKwlOb2Rl ICAgKmRlZmV4cHI7CisJQWNsCSAgICphY2w7Cit9IFZhcmlhYmxlOworCisvKiByZXR1cm5zIGZp ZWxkcyBmcm9tIHBnX3ZhcmlhYmxlIHRhYmxlICovCitleHRlcm4gY2hhciAqZ2V0X3NjaGVtYV92 YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCk7CitleHRlcm4gdm9pZCBnZXRfc2NoZW1hX3ZhcmlhYmxl X3R5cGVfdHlwbW9kX2NvbGxpZChPaWQgdmFyaWQsCisJCQkJCQkJCQkJCQkgICBPaWQgKnR5cGlk LAorCQkJCQkJCQkJCQkJICAgaW50MzIgKnR5cG1vZCwKKwkJCQkJCQkJCQkJCSAgIE9pZCAqY29s bGlkKTsKKworLyogcmV0dXJucyBuYW1lIG9mIHZhcmlhYmxlIGJhc2VkIG9uIGN1cnJlbnQgc2Vh cmNoIHBhdGggKi8KK2V4dGVybiBjaGFyICpzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUoT2lkIHZh cmlkKTsKKworZXh0ZXJuIFZhcmlhYmxlICpHZXRWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgbWlz c2luZ19vayk7CitleHRlcm4gT2JqZWN0QWRkcmVzcyBWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFy ICp2YXJOYW1lLAorCQkJCQkJCQkJICAgT2lkIHZhck5hbWVzcGFjZSwKKwkJCQkJCQkJCSAgIE9p ZCB2YXJUeXBlLAorCQkJCQkJCQkJICAgaW50MzIgdmFyVHlwbW9kLAorCQkJCQkJCQkJICAgT2lk IHZhck93bmVyLAorCQkJCQkJCQkJICAgT2lkIHZhckNvbGxhdGlvbiwKKwkJCQkJCQkJCSAgIE5v ZGUgKnZhckRlZmV4cHIsCisJCQkJCQkJCQkgICBWYXJpYWJsZUVPWEFjdGlvbiBlb3hhY3Rpb24s CisJCQkJCQkJCQkgICBib29sIGlmX25vdF9leGlzdHMpOworCisKKyNlbmRpZgkJCQkJCQkvKiBQ R19WQVJJQUJMRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2 YXJpYWJsZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kMTU3N2ZjZWMzCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaApAQCAtMCwwICsxLDQy IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzY2hlbWF2YXJpYWJsZS5oCisgKgkgIHBy b3RvdHlwZXMgZm9yIHNjaGVtYXZhcmlhYmxlLmMuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2YXJpYWJs ZS5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmbmRlZiBTQ0hFTUFWQVJJQUJM RV9ICisjZGVmaW5lIFNDSEVNQVZBUklBQkxFX0gKKworI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0 YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJu b2Rlcy9wYXJhbXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAi bm9kZXMvcGxhbm5vZGVzLmgiCisjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgor CitleHRlcm4gdm9pZCBSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUodm9pZCk7CisKK2V4dGVybiB2 b2lkIFJlbW92ZVZhcmlhYmxlQnlJZChPaWQgdmFyaWQpOworZXh0ZXJuIE9iamVjdEFkZHJlc3Mg RGVmaW5lU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJT dG10ICpzdG10KTsKKworZXh0ZXJuIERhdHVtIEdldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwg Ym9vbCAqaXNOdWxsLCBPaWQgZXhwZWN0ZWRfdHlwaWQsIGJvb2wgY29weSk7CitleHRlcm4gRGF0 dW0gQ29weVNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgKnR5cGlk KTsKKworZXh0ZXJuIHZvaWQgU2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBEYXR1bSB2YWx1 ZSwgYm9vbCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKTsKKworZXh0ZXJuIHZvaWQg ZG9MZXRTdG10UmVzZXQoUGxhbm5lZFN0bXQgKnBzdG10KTsKK2V4dGVybiB2b2lkIGRvTGV0U3Rt dEV2YWwoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKTsKKworZXh0ZXJuIHZv aWQgcmVnaXN0ZXJfdmFyaWFibGVfb25fY29tbWl0X2FjdGlvbihPaWQgdmFyaWQsIFZhcmlhYmxl RU9YQWN0aW9uIGFjdGlvbik7CitleHRlcm4gdm9pZCBBdFByZUVPWGFjdF9TY2hlbWFWYXJpYWJs ZV9vbl9jb21taXRfYWN0aW9ucyhib29sIGlzQ29tbWl0KTsKK2V4dGVybiB2b2lkIEF0RU9YYWN0 X1NjaGVtYVZhcmlhYmxlX29uX2NvbW1pdF9hY3Rpb25zKGJvb2wgaXNDb21taXQpOworCisjZW5k aWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGY3YjFmNzc2MTYuLjFlOTJlOGUxYmUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgZW51bSBF eHByRXZhbE9wCiAJRUVPUF9QQVJBTV9FWEVDLAogCUVFT1BfUEFSQU1fRVhURVJOLAogCUVFT1Bf UEFSQU1fQ0FMTEJBQ0ssCisJRUVPUF9QQVJBTV9WQVJJQUJMRSwKIAogCS8qIHJldHVybiBDYXNl VGVzdEV4cHIgdmFsdWUgKi8KIAlFRU9QX0NBU0VfVEVTVFZBTCwKQEAgLTM1MSw2ICszNTIsMTMg QEAgdHlwZWRlZiBzdHJ1Y3QgRXhwckV2YWxTdGVwCiAJCQlPaWQJCQlwYXJhbXR5cGU7CS8qIE9J RCBvZiBwYXJhbWV0ZXIncyBkYXRhdHlwZSAqLwogCQl9CQkJcGFyYW07CiAKKwkJLyogZm9yIEVF T1BfUEFSQU1fVkFSSUFCTEUgKi8KKwkJc3RydWN0CisJCXsKKwkJCU9pZAkJCXZhcmlkOwkJLyog T0lEIG9mIGFzc2lnbmVkIHZhcmlhYmxlICovCisJCQlPaWQJCQl2YXJ0eXBlOwkvKiBPSUQgb2Yg cGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KKwkJfQkJCXZwYXJhbTsKKwogCQkvKiBmb3IgRUVPUF9Q QVJBTV9DQUxMQkFDSyAqLwogCQlzdHJ1Y3QKIAkJewpAQCAtNzAwLDYgKzcwOCw4IEBAIGV4dGVy biB2b2lkIEV4ZWNFdmFsUGFyYW1FeGVjKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3AsCiBleHRlcm4gdm9pZCBFeGVjRXZhbFBhcmFtRXhlY1BhcmFtcyhCaXRtYXBzZXQgKnBhcmFt cywgRVN0YXRlICplc3RhdGUpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxQYXJhbUV4dGVybihFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQlFeHByQ29udGV4dCAqZWNvbnRl eHQpOworZXh0ZXJuIHZvaWQgRXhlY0V2YWxQYXJhbVZhcmlhYmxlKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCk7CiBleHRlcm4g dm9pZCBFeGVjRXZhbFNRTFZhbHVlRnVuY3Rpb24oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxT dGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbEN1cnJlbnRPZkV4cHIoRXhwclN0YXRlICpz dGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbE5leHRWYWx1ZUV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rl c2MuaAppbmRleCAxMGU5ZGVkMjQ2Li4xYmE5YjlmNGM2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNj LmgKQEAgLTQ4LDYgKzQ4LDEwIEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCUVTdGF0ZQkg ICAqZXN0YXRlOwkJCS8qIGV4ZWN1dG9yJ3MgcXVlcnktd2lkZSBzdGF0ZSAqLwogCVBsYW5TdGF0 ZSAgKnBsYW5zdGF0ZTsJCS8qIHRyZWUgb2YgcGVyLXBsYW4tbm9kZSBzdGF0ZSAqLwogCisJLyog cmVmZXJlbmNlIHRvIHNjaGVtYSB2YXJpYWJsZXMgYnVmZmVyICovCisJaW50CQkJbnVtX3NjaGVt YV92YXJpYWJsZXM7CisJU2NoZW1hVmFyaWFibGVWYWx1ZSAqc2NoZW1hX3ZhcmlhYmxlczsKKwog CS8qIFRoaXMgZmllbGQgaXMgc2V0IGJ5IEV4ZWN1dG9yUnVuICovCiAJYm9vbAkJYWxyZWFkeV9l eGVjdXRlZDsJLyogdHJ1ZSBpZiBwcmV2aW91c2x5IGV4ZWN1dGVkICovCiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjhjODExNzcwMWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9zdmFyaWFibGVSZWNlaXZlci5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIHN2YXJpYWJsZVJlY2VpdmVyLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc3Zh cmlhYmxlUmVjZWl2ZXIuYworICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh CisgKgorICogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaAorICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKyNk ZWZpbmUgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKworI2luY2x1ZGUgInRjb3AvZGVzdC5oIgorCisK K2V4dGVybiBEZXN0UmVjZWl2ZXIgKkNyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKHZvaWQpOwor CitleHRlcm4gdm9pZCBTZXRWYXJpYWJsZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIg KnNlbGYsIE9pZCB2YXJpZCk7CisKKyNlbmRpZgkJCQkJCQkvKiBTVkFSSUFCTEVfUkVDRUlWRVJf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBjODMwZjE0MWIxLi4wZDljZGQ1NTFjIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtNDY0LDYgKzQ2NCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1 bHRSZWxJbmZvCiAJYm9vbAkJcmlfUGFydGl0aW9uUmVhZHlGb3JSb3V0aW5nOwogfSBSZXN1bHRS ZWxJbmZvOwogCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKiBTY2hlbWFWYXJpYWJsZVZhbHVlCisg KiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IFNjaGVtYVZhcmlhYmxlVmFs dWUKK3sKKwlPaWQJCXZhcmlkOworCU9pZAkJdHlwaWQ7CisJYm9vbAlpc251bGw7CisJRGF0dW0J dmFsdWU7Cit9IFNjaGVtYVZhcmlhYmxlVmFsdWU7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAq CSAgRVN0YXRlIGluZm9ybWF0aW9uCiAgKgpAQCAtNTE4LDYgKzUzMCwxMyBAQCB0eXBlZGVmIHN0 cnVjdCBFU3RhdGUKIAlQYXJhbUxpc3RJbmZvIGVzX3BhcmFtX2xpc3RfaW5mbzsJLyogdmFsdWVz IG9mIGV4dGVybmFsIHBhcmFtcyAqLwogCVBhcmFtRXhlY0RhdGEgKmVzX3BhcmFtX2V4ZWNfdmFs czsJLyogdmFsdWVzIG9mIGludGVybmFsIHBhcmFtcyAqLwogCisJLyogVmFyaWFibGVzIGluZm86 ICovCisJLyogbnVtYmVyIG9mIHVzZWQgc2NoZW1hIHZhcmlhYmxlcyAqLworCWludAkJCWVzX251 bV9zY2hlbWFfdmFyaWFibGVzOworCisJLyogYXJyYXkgb2YgY29waWVkIHZhbHVlcyBvZiBzY2hl bWEgdmFyaWFibGVzICovCisJU2NoZW1hVmFyaWFibGVWYWx1ZSAqZXNfc2NoZW1hX3ZhcmlhYmxl czsKKwogCVF1ZXJ5RW52aXJvbm1lbnQgKmVzX3F1ZXJ5RW52OwkvKiBxdWVyeSBlbnZpcm9ubWVu dCAqLwogCiAJLyogT3RoZXIgd29ya2luZyBzdGF0ZTogKi8KQEAgLTU2NSw2ICs1ODQsOCBAQCB0 eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkvKiBUaGUgcGVyLXF1ZXJ5IHNoYXJlZCBtZW1vcnkgYXJl YSB0byB1c2UgZm9yIHBhcmFsbGVsIGV4ZWN1dGlvbi4gKi8KIAlzdHJ1Y3QgZHNhX2FyZWEgKmVz X3F1ZXJ5X2RzYTsKIAorCWludAkJCWVzX3Jlc3VsdF92YXJpYWJsZTsJLyogT2lkIG9mIHRhcmdl dCB2YXJpYWJsZSAqLworCiAJLyoKIAkgKiBKSVQgaW5mb3JtYXRpb24uIGVzX2ppdF9mbGFncyBp bmRpY2F0ZXMgd2hldGhlciBKSVQgc2hvdWxkIGJlIHBlcmZvcm1lZAogCSAqIGFuZCB3aXRoIHdo aWNoIG9wdGlvbnMuICBlc19qaXQgaXMgY3JlYXRlZCBvbi1kZW1hbmQgd2hlbiBKSVRpbmcgaXMK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9ub2Rlcy5oCmluZGV4IDY5N2QzZDdhNWYuLmRkN2ZkOGVkNDIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAt MzQ4LDYgKzM0OCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVUYWJsZUFzU3Rt dCwKIAlUX0NyZWF0ZVNlcVN0bXQsCiAJVF9BbHRlclNlcVN0bXQsCisJVF9DcmVhdGVTY2hlbWFW YXJTdG10LAogCVRfVmFyaWFibGVTZXRTdG10LAogCVRfVmFyaWFibGVTaG93U3RtdCwKIAlUX0Rp c2NhcmRTdG10LApAQCAtNDE5LDYgKzQyMCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9D cmVhdGVTdGF0c1N0bXQsCiAJVF9BbHRlckNvbGxhdGlvblN0bXQsCiAJVF9DYWxsU3RtdCwKKwlU X0xldFN0bXQsCiAKIAkvKgogCSAqIFRBR1MgRk9SIFBBUlNFIFRSRUUgTk9ERVMgKHBhcnNlbm9k ZXMuaCkKQEAgLTY2Myw2ICs2NjUsNyBAQCB0eXBlZGVmIGVudW0gQ21kVHlwZQogCUNNRF9ERUxF VEUsCiAJQ01EX1VUSUxJVFksCQkJCS8qIGNtZHMgbGlrZSBjcmVhdGUsIGRlc3Ryb3ksIGNvcHks IHZhY3V1bSwKIAkJCQkJCQkJICogZXRjLiAqLworCUNNRF9QTEFOX1VUSUxJVFksCQkJLyogb25s eSBsZXQgc3RtdCBub3csIHJlcXVpcmVzIHBsYW5uaW5nICovCiAJQ01EX05PVEhJTkcJCQkJCS8q IGR1bW15IGNvbW1hbmQgZm9yIGluc3RlYWQgbm90aGluZyBydWxlcwogCQkJCQkJCQkgKiB3aXRo IHF1YWwgKi8KIH0gQ21kVHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwN2FiMWEzZGRl Li41MzlmMjQ4ODUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC04NCw3ICs4NCw5IEBAIHR5 cGVkZWYgdWludDMyIEFjbE1vZGU7CQkJLyogYSBiaXRtYXNrIG9mIHByaXZpbGVnZSBiaXRzICov CiAjZGVmaW5lIEFDTF9DUkVBVEUJCSgxPDw5KQkvKiBmb3IgbmFtZXNwYWNlcyBhbmQgZGF0YWJh c2VzICovCiAjZGVmaW5lIEFDTF9DUkVBVEVfVEVNUCAoMTw8MTApIC8qIGZvciBkYXRhYmFzZXMg Ki8KICNkZWZpbmUgQUNMX0NPTk5FQ1QJCSgxPDwxMSkgLyogZm9yIGRhdGFiYXNlcyAqLwotI2Rl ZmluZSBOX0FDTF9SSUdIVFMJMTIJCS8qIDEgcGx1cyB0aGUgbGFzdCAxPDx4ICovCisjZGVmaW5l IEFDTF9SRUFECQkoMTw8MTIpIC8qIGZvciB2YXJpYWJsZXMgKi8KKyNkZWZpbmUgQUNMX1dSSVRF CQkoMTw8MTMpIC8qIGZvciB2YXJpYWJsZXMgKi8KKyNkZWZpbmUgTl9BQ0xfUklHSFRTCTE0CQkv KiAxIHBsdXMgdGhlIGxhc3QgMTw8eCAqLwogI2RlZmluZSBBQ0xfTk9fUklHSFRTCTAKIC8qIEN1 cnJlbnRseSwgU0VMRUNUIC4uLiBGT1IgW0tFWV0gVVBEQVRFL1NIQVJFIHJlcXVpcmVzIFVQREFU RSBwcml2aWxlZ2VzICovCiAjZGVmaW5lIEFDTF9TRUxFQ1RfRk9SX1VQREFURQlBQ0xfVVBEQVRF CkBAIC0xMjEsNiArMTIzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAogCWludAkJCXJlc3Vs dFJlbGF0aW9uOyAvKiBydGFibGUgaW5kZXggb2YgdGFyZ2V0IHJlbGF0aW9uIGZvcgogCQkJCQkJ CQkgKiBJTlNFUlQvVVBEQVRFL0RFTEVURTsgMCBmb3IgU0VMRUNUICovCisJaW50CQkJcmVzdWx0 VmFyaWFibGU7CS8qIE9pZCBvZiB0YXJnZXQgdmFyaWFibGUgb3IgMCAqLwogCiAJYm9vbAkJaGFz QWdnczsJCS8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29s CQloYXNXaW5kb3dGdW5jczsgLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAg LTEzMSw2ICsxMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeQogCWJvb2wJCWhhc01vZGlmeWlu Z0NURTsJLyogaGFzIElOU0VSVC9VUERBVEUvREVMRVRFIGluIFdJVEggKi8KIAlib29sCQloYXNG b3JVcGRhdGU7CS8qIEZPUiBbS0VZXSBVUERBVEUvU0hBUkUgd2FzIHNwZWNpZmllZCAqLwogCWJv b2wJCWhhc1Jvd1NlY3VyaXR5OyAvKiByZXdyaXRlciBoYXMgYXBwbGllZCBzb21lIFJMUyBwb2xp Y3kgKi8KKwlib29sCQloYXNTY2hlbWFWYXJpYWJsZTsgLyogdXNlcyBzY2hlbWEgdmFyaWFibGVz ICovCiAKIAlMaXN0CSAgICpjdGVMaXN0OwkJLyogV0lUSCBsaXN0IChvZiBDb21tb25UYWJsZUV4 cHIncykgKi8KIApAQCAtMTUwNSw2ICsxNTA5LDE4IEBAIHR5cGVkZWYgc3RydWN0IFVwZGF0ZVN0 bXQKIAlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gVXBkYXRl U3RtdDsKIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUxldCBTdGF0ZW1lbnQKKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgTGV0U3RtdAorewor CU5vZGVUYWcJCXR5cGU7CisJTGlzdAkgICAqdGFyZ2V0OwkJCS8qIHRhcmdldCB2YXJpYWJsZSAq LworCU5vZGUJICAgKnNlbGVjdFN0bXQ7CQkvKiBzb3VyY2UgZXhwcmVzc2lvbiAqLworCWludAkJ CWxvY2F0aW9uOworfSBMZXRTdG10OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJ U2VsZWN0IFN0YXRlbWVudAogICoKQEAgLTE2ODIsNiArMTY5OCw3IEBAIHR5cGVkZWYgZW51bSBP YmplY3RUeXBlCiAJT0JKRUNUX1RTVEVNUExBVEUsCiAJT0JKRUNUX1RZUEUsCiAJT0JKRUNUX1VT RVJfTUFQUElORywKKwlPQkpFQ1RfVkFSSUFCTEUsCiAJT0JKRUNUX1ZJRVcKIH0gT2JqZWN0VHlw ZTsKIApAQCAtMjQ5Nyw2ICsyNTE0LDIxIEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyU2VxU3RtdAog CWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBza2lwIGVycm9yIGlmIGEgcm9sZSBpcyBtaXNzaW5nPyAq LwogfSBBbHRlclNlcVN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQl7Q3Jl YXRlfEFsdGVyfSBWQVJJQUJMRSBTdGF0ZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLwordHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU2NoZW1hVmFyU3RtdAoreworCU5vZGVUYWcJCXR5 cGU7CisJUmFuZ2VWYXIgICAqdmFyaWFibGU7CQkvKiB0aGUgdmFyaWFibGUgdG8gY3JlYXRlICov CisJVHlwZU5hbWUgICAqdHlwZU5hbWU7CQkvKiB0aGUgdHlwZSBvZiB2YXJpYWJsZSAqLworCUNv bGxhdGVDbGF1c2UgKmNvbGxDbGF1c2U7CisJTm9kZQkgICAqZGVmZXhwcjsJCS8qIGRlZmF1bHQg ZXhwcmVzc2lvbiAqLworCVZhcmlhYmxlRU9YQWN0aW9uIGVveGFjdGlvbjsJLyogb24gY29tbWl0 IGFjdGlvbiAqLworCWJvb2wJCWlmX25vdF9leGlzdHM7CS8qIGRvIG5vdGhpbmcgaWYgaXQgYWxy ZWFkeSBleGlzdHMgKi8KK30gQ3JlYXRlU2NoZW1hVmFyU3RtdDsKKwogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICoJCUNyZWF0ZSB7QWdncmVnYXRlfE9wZXJhdG9yfFR5cGV9IFN0YXRlbWVu dAogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzIzOCw3ICszMjcwLDggQEAgdHlwZWRl ZiBlbnVtIERpc2NhcmRNb2RlCiAJRElTQ0FSRF9BTEwsCiAJRElTQ0FSRF9QTEFOUywKIAlESVND QVJEX1NFUVVFTkNFUywKLQlESVNDQVJEX1RFTVAKKwlESVNDQVJEX1RFTVAsCisJRElTQ0FSRF9W QVJJQUJMRVMKIH0gRGlzY2FyZE1vZGU7CiAKIHR5cGVkZWYgc3RydWN0IERpc2NhcmRTdG10CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDdjMmFiYmQwM2EuLmNiZjViOGUwYTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiB7 CiAJTm9kZVRhZwkJdHlwZTsKIAotCUNtZFR5cGUJCWNvbW1hbmRUeXBlOwkvKiBzZWxlY3R8aW5z ZXJ0fHVwZGF0ZXxkZWxldGV8dXRpbGl0eSAqLworCUNtZFR5cGUJCWNvbW1hbmRUeXBlOwkvKiBz ZWxlY3R8bGV0fGluc2VydHx1cGRhdGV8ZGVsZXRlfHV0aWxpdHkgKi8KIAogCXVpbnQ2NAkJcXVl cnlJZDsJCS8qIHF1ZXJ5IGlkZW50aWZpZXIgKGNvcGllZCBmcm9tIFF1ZXJ5KSAqLwogCkBAIC04 MSw2ICs4MSw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAJICovCiAJTGlzdAkgICAq cm9vdFJlc3VsdFJlbGF0aW9uczsKIAorCS8qIE9pZCBvZiB0YXJnZXQgdmFyaWFibGUgZm9yIExF VCBjb21tYW5kICovCisJT2lkCQkJcmVzdWx0VmFyaWFibGU7CisKIAlMaXN0CSAgICpzdWJwbGFu czsJCS8qIFBsYW4gdHJlZXMgZm9yIFN1YlBsYW4gZXhwcmVzc2lvbnM7IG5vdGUKIAkJCQkJCQkJ ICogdGhhdCBzb21lIGNvdWxkIGJlIE5VTEwgKi8KIApAQCAtOTYsNiArOTksOCBAQCB0eXBlZGVm IHN0cnVjdCBQbGFubmVkU3RtdAogCiAJTm9kZQkgICAqdXRpbGl0eVN0bXQ7CS8qIG5vbi1udWxs IGlmIHRoaXMgaXMgdXRpbGl0eSBzdG10ICovCiAKKwlMaXN0CSAgICpzY2hlbWFWYXJpYWJsZXM7 IC8qIGxpc3Qgb2YgT0lEcyBmb3IgUEFSQU1fVkFSSUFCTEUgUGFyYW1zICovCisKIAkvKiBzdGF0 ZW1lbnQgbG9jYXRpb24gaW4gc291cmNlIHN0cmluZyAoY29waWVkIGZyb20gUXVlcnkpICovCiAJ aW50CQkJc3RtdF9sb2NhdGlvbjsJLyogc3RhcnQgbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24g Ki8KIAlpbnQJCQlzdG10X2xlbjsJCS8qIGxlbmd0aCBpbiBieXRlczsgMCBtZWFucyAicmVzdCBv ZiBzdHJpbmciICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDFiNGIwZDc1YWYuLjJhNWYyNGM2 MTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC00MywxNSArNDMsMjUgQEAgdHlwZWRlZiBzdHJ1 Y3QgQWxpYXMKIAlMaXN0CSAgICpjb2xuYW1lczsJCS8qIG9wdGlvbmFsIGxpc3Qgb2YgY29sdW1u IGFsaWFzZXMgKi8KIH0gQWxpYXM7CiAKLS8qIFdoYXQgdG8gZG8gYXQgY29tbWl0IHRpbWUgZm9y IHRlbXBvcmFyeSByZWxhdGlvbnMgKi8KKy8qCisgKiBXaGF0IHRvIGRvIGF0IGNvbW1pdCB0aW1l IGZvciB0ZW1wb3JhcnkgcmVsYXRpb25zIG9yCisgKiBwZXJzaXN0ZW50L3RlbXBvcmFyeSB2YXJp YWJsZS4KKyAqLwogdHlwZWRlZiBlbnVtIE9uQ29tbWl0QWN0aW9uCiB7CiAJT05DT01NSVRfTk9P UCwJCQkJLyogTm8gT04gQ09NTUlUIGNsYXVzZSAoZG8gbm90aGluZykgKi8KIAlPTkNPTU1JVF9Q UkVTRVJWRV9ST1dTLAkJLyogT04gQ09NTUlUIFBSRVNFUlZFIFJPV1MgKGRvIG5vdGhpbmcpICov CiAJT05DT01NSVRfREVMRVRFX1JPV1MsCQkvKiBPTiBDT01NSVQgREVMRVRFIFJPV1MgKi8KLQlP TkNPTU1JVF9EUk9QCQkJCS8qIE9OIENPTU1JVCBEUk9QICovCisJT05DT01NSVRfRFJPUCwJCQkJ LyogT04gQ09NTUlUIERST1AgKi8KIH0gT25Db21taXRBY3Rpb247CiAKK3R5cGVkZWYgZW51bSBW YXJpYWJsZUVPWEFjdGlvbgoreworCVZBUklBQkxFX0VPWF9OT09QLAkJCS8qIERvIG5vdGhpbmcg Ki8KKwlWQVJJQUJMRV9FT1hfRFJPUCwJCQkvKiBPTiBUUkFOU0FDVElPTiBFTkQgRFJPUCAqLwor CVZBUklBQkxFX0VPWF9SRVNFVCwJCQkvKiBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQgKi8KK30g VmFyaWFibGVFT1hBY3Rpb247CisKIC8qCiAgKiBSYW5nZVZhciAtIHJhbmdlIHZhcmlhYmxlLCB1 c2VkIGluIEZST00gY2xhdXNlcwogICoKQEAgLTIyOSwxMyArMjM5LDE3IEBAIHR5cGVkZWYgc3Ry dWN0IENvbnN0CiAgKgkJCQlvZiB0aGUgYHBhcmFtaWQnIGZpZWxkIGNvbnRhaW4gdGhlIFN1Ykxp bmsncyBzdWJMaW5rSWQsIGFuZAogICoJCQkJdGhlIGxvdy1vcmRlciAxNiBiaXRzIGNvbnRhaW4g dGhlIGNvbHVtbiBudW1iZXIuICAoVGhpcyB0eXBlCiAgKgkJCQlvZiBQYXJhbSBpcyBhbHNvIGNv bnZlcnRlZCB0byBQQVJBTV9FWEVDIGR1cmluZyBwbGFubmluZy4pCisgKgorICoJCVBBUkFNX1ZB UklBQkxFOiAgVGhlIHBhcmFtZXRlciBpcyBhIGFjY2VzcyB0byBzY2hlbWEgdmFyaWFibGUKKyAq CQkJCXBhcmFtaWQgaG9sZHMgdmFyaWQuCiAgKi8KIHR5cGVkZWYgZW51bSBQYXJhbUtpbmQKIHsK IAlQQVJBTV9FWFRFUk4sCiAJUEFSQU1fRVhFQywKIAlQQVJBTV9TVUJMSU5LLAotCVBBUkFNX01V TFRJRVhQUgorCVBBUkFNX01VTFRJRVhQUiwKKwlQQVJBTV9WQVJJQUJMRQogfSBQYXJhbUtpbmQ7 CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFtCkBAIC0yNDYsNiArMjYwLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFyYW0KIAlPaWQJCQlwYXJhbXR5cGU7CQkvKiBwZ190eXBlIE9JRCBvZiBwYXJhbWV0ZXIn cyBkYXRhdHlwZSAqLwogCWludDMyCQlwYXJhbXR5cG1vZDsJLyogdHlwbW9kIHZhbHVlLCBpZiBr bm93biAqLwogCU9pZAkJCXBhcmFtY29sbGlkOwkvKiBPSUQgb2YgY29sbGF0aW9uLCBvciBJbnZh bGlkT2lkIGlmIG5vbmUgKi8KKwlPaWQJCQlwYXJhbXZhcmlkOwkJLyogT0lEIG9mIHNjaGVtYSB2 YXJpYWJsZSBpZiBpdCBpcyB1c2VkICovCiAJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2Nh dGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQYXJhbTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL25vZGVzL3JlbGF0aW9uLmgKaW5k ZXggYWRiNDI2NTA0Ny4uOGQ4YWRiOGNlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cmVsYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9yZWxhdGlvbi5oCkBAIC0xNDUsNiAr MTQ1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCWJvb2wJCXBhcmFsbGVsTW9k ZU5lZWRlZDsgLyogcGFyYWxsZWwgbW9kZSBhY3R1YWxseSByZXF1aXJlZD8gKi8KIAogCWNoYXIJ CW1heFBhcmFsbGVsSGF6YXJkOwkvKiB3b3JzdCBQUk9QQVJBTExFTCBoYXphcmQgbGV2ZWwgKi8K KworCUxpc3QJICAgKnNjaGVtYVZhcmlhYmxlczsJLyogbGlzdCBvZiB1c2VkIHNjaGVtYSB2YXJp YWJsZXMgKi8KIH0gUGxhbm5lckdsb2JhbDsKIAogLyogbWFjcm8gZm9yIGZldGNoaW5nIHRoZSBQ bGFuIGFzc29jaWF0ZWQgd2l0aCBhIFN1YlBsYW4gbm9kZSAqLwpAQCAtMzI5LDYgKzMzMSw3IEBA IHR5cGVkZWYgc3RydWN0IFBsYW5uZXJJbmZvCiAJYm9vbAkJaGFzUHNldWRvQ29uc3RhbnRRdWFs czsgLyogdHJ1ZSBpZiBhbnkgUmVzdHJpY3RJbmZvIGhhcwogCQkJCQkJCQkJCSAqIHBzZXVkb2Nv bnN0YW50ID0gdHJ1ZSAqLwogCWJvb2wJCWhhc1JlY3Vyc2lvbjsJLyogdHJ1ZSBpZiBwbGFubmlu ZyBhIHJlY3Vyc2l2ZSBXSVRIIGl0ZW0gKi8KKwlib29sCQloYXNTY2hlbWFWYXJpYWJsZTsJCS8q IHRydWUgaWYgc2NoZW1hIHZhcmlhYmxlcyB3YXMgdXNlZCAqLwogCiAJLyogVGhlc2UgZmllbGRz IGFyZSB1c2VkIG9ubHkgd2hlbiBoYXNSZWN1cnNpb24gaXMgdHJ1ZTogKi8KIAlpbnQJCQl3dF9w YXJhbV9pZDsJLyogUEFSQU1fRVhFQyBJRCBmb3IgdGhlIHdvcmsgdGFibGUgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BsYW5tYWluLmgKaW5kZXggYzhhYjAyODBkMi4uMzdiNjdkMTM2ZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BsYW5tYWluLmgKQEAgLTEyMCw1ICsxMjAsNiBAQCBleHRlcm4gdm9pZCBleHRyYWN0X3F1 ZXJ5X2RlcGVuZGVuY2llcyhOb2RlICpxdWVyeSwKIAkJCQkJCSAgIExpc3QgKipyZWxhdGlvbk9p ZHMsCiAJCQkJCQkgICBMaXN0ICoqaW52YWxJdGVtcywKIAkJCQkJCSAgIGJvb2wgKmhhc1Jvd1Nl Y3VyaXR5KTsKK2V4dGVybiB2b2lkIHB1bGxfdXBfaGFzX3NjaGVtYV92YXJpYWJsZShQbGFubmVy SW5mbyAqcm9vdCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQTEFOTUFJTl9IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKaW5kZXggMjNkYjQwMTQ3Yi4uZDNlZDNmNGQwZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjMx LDYgKzIzMSw3IEBAIFBHX0tFWVdPUkQoImxlYWRpbmciLCBMRUFESU5HLCBSRVNFUlZFRF9LRVlX T1JEKQogUEdfS0VZV09SRCgibGVha3Byb29mIiwgTEVBS1BST09GLCBVTlJFU0VSVkVEX0tFWVdP UkQpCiBQR19LRVlXT1JEKCJsZWFzdCIsIExFQVNULCBDT0xfTkFNRV9LRVlXT1JEKQogUEdfS0VZ V09SRCgibGVmdCIsIExFRlQsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCitQR19LRVlXT1JEKCJs ZXQiLCBMRVQsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxldmVsIiwgTEVWRUws IFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxpa2UiLCBMSUtFLCBUWVBFX0ZVTkNf TkFNRV9LRVlXT1JEKQogUEdfS0VZV09SRCgibGltaXQiLCBMSU1JVCwgUkVTRVJWRURfS0VZV09S RCkKQEAgLTQzNCw2ICs0MzUsOCBAQCBQR19LRVlXT1JEKCJ2YWxpZGF0b3IiLCBWQUxJREFUT1Is IFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhbHVlIiwgVkFMVUVfUCwgVU5SRVNF UlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFsdWVzIiwgVkFMVUVTLCBDT0xfTkFNRV9LRVlX T1JEKQogUEdfS0VZV09SRCgidmFyY2hhciIsIFZBUkNIQVIsIENPTF9OQU1FX0tFWVdPUkQpCitQ R19LRVlXT1JEKCJ2YXJpYWJsZSIsIFZBUklBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQpCitQR19L RVlXT1JEKCJ2YXJpYWJsZXMiLCBWQVJJQUJMRVMsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tF WVdPUkQoInZhcmlhZGljIiwgVkFSSUFESUMsIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JE KCJ2YXJ5aW5nIiwgVkFSWUlORywgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmVy Ym9zZSIsIFZFUkJPU0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25v ZGUuaAppbmRleCAwMjMwNTQzODEwLi4xNDM1OTdjZTgwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmgKQEAgLTY5LDcgKzY5LDkgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJ TkRfVFJJR0dFUl9XSEVOLAkJLyogV0hFTiBjb25kaXRpb24gaW4gQ1JFQVRFIFRSSUdHRVIgKi8K IAlFWFBSX0tJTkRfUE9MSUNZLAkJCS8qIFVTSU5HIG9yIFdJVEggQ0hFQ0sgZXhwciBpbiBwb2xp Y3kgKi8KIAlFWFBSX0tJTkRfUEFSVElUSU9OX0VYUFJFU1NJT04sIC8qIFBBUlRJVElPTiBCWSBl eHByZXNzaW9uICovCi0JRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQJCS8qIHByb2NlZHVyZSBhcmd1 bWVudCBpbiBDQUxMICovCisJRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQsCQkvKiBwcm9jZWR1cmUg YXJndW1lbnQgaW4gQ0FMTCAqLworCUVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxULAkvKiBkZWZh dWx0IHZhbHVlIGZvciBzY2hlbWEgdmFyaWFibGUgKi8KKwlFWFBSX0tJTkRfTEVUCQkJCS8qIExF VCBhc3NpZ25tZW50IChzaG91bGQgYmUgc2FtZSBsaWtlIFVQREFURSkgKi8KIH0gUGFyc2VFeHBy S2luZDsKIAogCkBAIC0yMDIsNiArMjA0LDcgQEAgc3RydWN0IFBhcnNlU3RhdGUKIAlib29sCQlw X2hhc1RhcmdldFNSRnM7CiAJYm9vbAkJcF9oYXNTdWJMaW5rczsKIAlib29sCQlwX2hhc01vZGlm eWluZ0NURTsKKwlib29sCQlwX2hhc1NjaGVtYVZhcmlhYmxlOwogCiAJTm9kZQkgICAqcF9sYXN0 X3NyZjsJCS8qIG1vc3QgcmVjZW50IHNldC1yZXR1cm5pbmcgZnVuYy9vcCBmb3VuZCAqLwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmggYi9zcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmgKaW5kZXggZWM2ZTBjMTAyZi4uMWVlMTk5ZWQ4ZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCisrKyBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV90YXJnZXQuaApAQCAtMzIsNiArMzIsMTYgQEAgZXh0ZXJuIEV4cHIg KnRyYW5zZm9ybUFzc2lnbmVkRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEV4cHIgKmV4cHIsCiAJ CQkJCSAgaW50IGF0dHJubywKIAkJCQkJICBMaXN0ICppbmRpcmVjdGlvbiwKIAkJCQkJICBpbnQg bG9jYXRpb24pOworZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUsCisJCQkJCQkJICAg Y29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKKwkJCQkJCQkgICBib29sIHRhcmdldElzQXJyYXksCisJ CQkJCQkJICAgT2lkIHRhcmdldFR5cGVJZCwKKwkJCQkJCQkgICBpbnQzMiB0YXJnZXRUeXBNb2Qs CisJCQkJCQkJICAgT2lkIHRhcmdldENvbGxhdGlvbiwKKwkJCQkJCQkgICBMaXN0Q2VsbCAqaW5k aXJlY3Rpb24sCisJCQkJCQkJICAgTm9kZSAqcmhzLAorCQkJCQkJCSAgIGludCBsb2NhdGlvbik7 CiBleHRlcm4gdm9pZCB1cGRhdGVUYXJnZXRMaXN0RW50cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBU YXJnZXRFbnRyeSAqdGxlLAogCQkJCQkgIGNoYXIgKmNvbG5hbWUsIGludCBhdHRybm8sCiAJCQkJ CSAgTGlzdCAqaW5kaXJlY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2Rlc3Qu aCBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCmluZGV4IDgyZjBmMmU3NDEuLmM0OWI2NTM1NTUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rj b3AvZGVzdC5oCkBAIC05Niw3ICs5Niw4IEBAIHR5cGVkZWYgZW51bQogCURlc3RDb3B5T3V0LAkJ CQkvKiByZXN1bHRzIHNlbnQgdG8gQ09QWSBUTyBjb2RlICovCiAJRGVzdFNRTEZ1bmN0aW9uLAkJ CS8qIHJlc3VsdHMgc2VudCB0byBTUUwtbGFuZ3VhZ2UgZnVuYyBtZ3IgKi8KIAlEZXN0VHJhbnNp ZW50UmVsLAkJCS8qIHJlc3VsdHMgc2VudCB0byB0cmFuc2llbnQgcmVsYXRpb24gKi8KLQlEZXN0 VHVwbGVRdWV1ZQkJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHVwbGUgcXVldWUgKi8KKwlEZXN0VHVw bGVRdWV1ZSwJCQkJLyogcmVzdWx0cyBzZW50IHRvIHR1cGxlIHF1ZXVlICovCisJRGVzdFZhcmlh YmxlCQkJCS8qIHJlc3VsdHMgc2VudHMgdG8gc2NoZW1hIHZhcmlhYmxlICovCiB9IENvbW1hbmRE ZXN0OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9hY2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY0ZDRiZThkMGQuLmM2MjRk OGRkMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL2FjbC5oCkBAIC0xNDcsOSArMTQ3LDExIEBAIHR5cGVkZWYgQXJyYXlUeXBlIEFj bDsKICNkZWZpbmUgQUNMX0NSRUFURV9DSFIJCQknQycKICNkZWZpbmUgQUNMX0NSRUFURV9URU1Q X0NIUgkJJ1QnCiAjZGVmaW5lIEFDTF9DT05ORUNUX0NIUgkJCSdjJworI2RlZmluZSBBQ0xfUkVB RF9DSFIJCQknUycgLyogJ1InIGlzIG9jY3VwYXRlZCBieSBvbGQgUlVMRSBwcml2ICovCisjZGVm aW5lIEFDTF9XUklURV9DSFIJCQknVycKIAogLyogc3RyaW5nIGhvbGRpbmcgYWxsIHByaXZpbGVn ZSBjb2RlIGNoYXJzLCBpbiBvcmRlciBieSBiaXRtYXNrIHBvc2l0aW9uICovCi0jZGVmaW5lIEFD TF9BTExfUklHSFRTX1NUUgkiYXJ3ZER4dFhVQ1RjIgorI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19T VFIJImFyd2REeHRYVUNUY1NXIgogCiAvKgogICogQml0bWFza3MgZGVmaW5pbmcgImFsbCByaWdo dHMiIGZvciBlYWNoIHN1cHBvcnRlZCBvYmplY3QgdHlwZQpAQCAtMTY2LDYgKzE2OCw3IEBAIHR5 cGVkZWYgQXJyYXlUeXBlIEFjbDsKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NIRU1BCQkoQUNM X1VTQUdFfEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RBQkxFU1BBQ0UJKEFD TF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RZUEUJCQkoQUNMX1VTQUdFKQorI2Rl ZmluZSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRQkJKEFDTF9SRUFEfEFDTF9XUklURSkKIAogLyog b3BlcmF0aW9uIGNvZGVzIGZvciBwZ18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51bQpAQCAtMjUz LDYgKzI1Niw4IEBAIGV4dGVybiBBY2xNb2RlIHBnX2ZvcmVpZ25fc2VydmVyX2FjbG1hc2soT2lk IHNydl9vaWQsIE9pZCByb2xlaWQsCiAJCQkJCQkgIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBo b3cpOwogZXh0ZXJuIEFjbE1vZGUgcGdfdHlwZV9hY2xtYXNrKE9pZCB0eXBlX29pZCwgT2lkIHJv bGVpZCwKIAkJCQlBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KTsKK2V4dGVybiBBY2xNb2Rl IHBnX3ZhcmlhYmxlX2FjbG1hc2soT2lkIHZhcl9vaWQsIE9pZCByb2xlaWQsCisJCQkJQWNsTW9k ZSBtYXNrLCBBY2xNYXNrSG93IGhvdyk7CiAKIGV4dGVybiBBY2xSZXN1bHQgcGdfYXR0cmlidXRl X2FjbGNoZWNrKE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkgIE9pZCBy b2xlaWQsIEFjbE1vZGUgbW9kZSk7CkBAIC0yNjksNiArMjc0LDcgQEAgZXh0ZXJuIEFjbFJlc3Vs dCBwZ190YWJsZXNwYWNlX2FjbGNoZWNrKE9pZCBzcGNfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2Rl IG1vZGUpOwogZXh0ZXJuIEFjbFJlc3VsdCBwZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9hY2xjaGVj ayhPaWQgZmR3X29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKIGV4dGVybiBBY2xSZXN1 bHQgcGdfZm9yZWlnbl9zZXJ2ZXJfYWNsY2hlY2soT2lkIHNydl9vaWQsIE9pZCByb2xlaWQsIEFj bE1vZGUgbW9kZSk7CiBleHRlcm4gQWNsUmVzdWx0IHBnX3R5cGVfYWNsY2hlY2soT2lkIHR5cGVf b2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOworZXh0ZXJuIEFjbFJlc3VsdCBwZ192YXJp YWJsZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7CiAK IGV4dGVybiB2b2lkIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUg b2JqdHlwZSwKIAkJCSAgIGNvbnN0IGNoYXIgKm9iamVjdG5hbWUpOwpAQCAtMzA1LDYgKzMxMSw3 IEBAIGV4dGVybiBib29sIHBnX2V4dGVuc2lvbl9vd25lcmNoZWNrKE9pZCBleHRfb2lkLCBPaWQg cm9sZWlkKTsKIGV4dGVybiBib29sIHBnX3B1YmxpY2F0aW9uX293bmVyY2hlY2soT2lkIHB1Yl9v aWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3Vic2NyaXB0aW9uX293bmVyY2hlY2so T2lkIHN1Yl9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3RhdGlzdGljc19vYmpl Y3Rfb3duZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOworZXh0ZXJuIGJvb2wgcGdf dmFyaWFibGVfb3duZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJv b2wgaGFzX2NyZWF0ZXJvbGVfcHJpdmlsZWdlKE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgaGFz X2J5cGFzc3Jsc19wcml2aWxlZ2UoT2lkIHJvbGVpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5k ZXggZTU1ZWE0MDM1Yi4uY2IzZjRhYWNhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTEyMiw2 ICsxMjIsNyBAQCBleHRlcm4gYm9vbCBnZXRfZnVuY19sZWFrcHJvb2YoT2lkIGZ1bmNpZCk7CiBl eHRlcm4gZmxvYXQ0IGdldF9mdW5jX2Nvc3QoT2lkIGZ1bmNpZCk7CiBleHRlcm4gZmxvYXQ0IGdl dF9mdW5jX3Jvd3MoT2lkIGZ1bmNpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxuYW1lX3JlbGlkKGNv bnN0IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpOworZXh0ZXJuIE9pZCBnZXRfdmFy bmFtZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFtZXNwYWNlKTsKIGV4dGVy biBjaGFyICpnZXRfcmVsX25hbWUoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF9uYW1l c3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90eXBlX2lkKE9pZCByZWxpZCk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvc3lzY2FjaGUuaAppbmRleCA0ZjMzMzU4NmVlLi40NTM2OTliZTNjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3N5 c2NhY2hlLmgKQEAgLTEwNyw5ICsxMDcsMTEgQEAgZW51bSBTeXNDYWNoZUlkZW50aWZpZXIKIAlU WVBFTkFNRU5TUCwKIAlUWVBFT0lELAogCVVTRVJNQVBQSU5HT0lELAotCVVTRVJNQVBQSU5HVVNF UlNFUlZFUgorCVVTRVJNQVBQSU5HVVNFUlNFUlZFUiwKKwlWQVJJQUJMRU5BTUVOU1AsCisJVkFS SUFCTEVPSUQKIAotI2RlZmluZSBTeXNDYWNoZVNpemUgKFVTRVJNQVBQSU5HVVNFUlNFUlZFUiAr IDEpCisjZGVmaW5lIFN5c0NhY2hlU2l6ZSAoVkFSSUFCTEVPSUQgKyAxKQogfTsKIAogZXh0ZXJu IHZvaWQgSW5pdENhdGFsb2dDYWNoZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvbWlzY19zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9t aXNjX3Nhbml0eS5vdXQKaW5kZXggMmQzNTIyYjUwMC4uNDgyODZmOGUxYSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKQEAgLTEwNSw1ICsxMDUsNyBAQCBPUkRF UiBCWSAxLCAyOwogIHBnX2luZGV4ICAgICAgICAgICAgICAgIHwgaW5kcHJlZCAgICAgICB8IHBn X25vZGVfdHJlZQogIHBnX2xhcmdlb2JqZWN0ICAgICAgICAgIHwgZGF0YSAgICAgICAgICB8IGJ5 dGVhCiAgcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEgfCBsb21hY2wgICAgICAgIHwgYWNsaXRlbVtd Ci0oMTEgcm93cykKKyBwZ192YXJpYWJsZSAgICAgICAgICAgICB8IHZhcmFjbCAgICAgICAgfCBh Y2xpdGVtW10KKyBwZ192YXJpYWJsZSAgICAgICAgICAgICB8IHZhcmRlZmV4cHIgICAgfCBwZ19u b2RlX3RyZWUKKygxMyByb3dzKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Nhbml0eV9jaGVjay5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9j aGVjay5vdXQKaW5kZXggNDhlMDUwOGE5Ni4uNmNkM2E3N2E4ZiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dApAQCAtMTY0LDYgKzE2NCw3IEBAIHBnX3RzX3Bh cnNlcnx0CiBwZ190c190ZW1wbGF0ZXx0CiBwZ190eXBlfHQKIHBnX3VzZXJfbWFwcGluZ3x0Citw Z192YXJpYWJsZXx0CiBwb2ludF90Ymx8dAogcG9seWdvbl90Ymx8dAogcXVhZF9ib3hfdGJsfHQK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMub3V0Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmM2NTljODNkY2YKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMub3V0CkBA IC0wLDAgKzEsNDkxIEBACitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRlZ2VyOworQ1JFQVRF IFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworRFJPUCBWQVJJQUJMRSB2YXIxLCB2YXIyOwor LS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7 CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsK Ky0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgdmFyMTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5p ZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JBTlQg UkVBRCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJf dGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIxID0gMTA7CitFUlJPUjogIHBl cm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorLS0gc2hvdWxkIHRvIHdv cmsKK1NFTEVDVCB2YXIxOworIHZhcjEgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFVCBS T0xFIFRPIERFRkFVTFQ7CitHUkFOVCBXUklURSBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0 X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIHdvcmsKK0xF VCB2YXIxID0gMzMzOworU0VUIFJPTEUgVE8gREVGQVVMVDsKK1JFVk9LRSBBTEwgT04gVkFSSUFC TEUgdmFyMSBGUk9NIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBz ZWN1cmVfdmFyKCkKK1JFVFVSTlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMudmFyMTo6aW50 OworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7CitTRUxFQ1Qgc2VjdXJlX3Zhcigp OworIHNlY3VyZV92YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMzMzCisoMSByb3cpCisKK1NF VCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1Ymxp Yy52YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZh cjEKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKyBzZWN1cmVfdmFy IAorLS0tLS0tLS0tLS0tCisgICAgICAgIDMzMworKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZB VUxUOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKyAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0 ZV9zZXJpZXMgZworICAgT3V0cHV0OiB2CisgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwKQorICAgRmlsdGVyOiAoKGcudik6Om51bWVyaWMgPSB2YXIxKQorKDQgcm93cykK KworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXIxOworU0VMRUNUICog RlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyMSAKKy0tLS0tLQorICAzMzMKKygxIHJvdykKKwor XGMgLQorLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBlbXB0eQorU0VM RUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyMSAKKy0tLS0tLQorICAgICAKKygxIHJv dykKKworTEVUIHZhcjEgPSBwaSgpOworU0VMRUNUIHZhcjE7CisgICAgICAgdmFyMSAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLQorIDMuMTQxNTkyNjUzNTg5NzkKKygxIHJvdykKKworLS0gd2Ug Y2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg TEVUIHZhcjEgPSBwaSgpOworICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiAzLjE0MTU5MjY1MzU4OTc5 CisoMiByb3dzKQorCistLSBMRVQgY2FuIGJlIHByZXBhcmVkCitQUkVQQVJFIHZhcl9wcChpbnQs IG51bWVyaWMpIEFTIExFVCB2YXIxID0gJDEgKyAkMjsKK0VYRUNVVEUgdmFyX3BwKDEwMCwgMS4y MzQ1Nik7CitTRUxFQ1QgdmFyMTsKKyAgIHZhcjEgICAgCistLS0tLS0tLS0tLQorIDEwMS4yMzQ1 NgorKDEgcm93KQorCitDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgIExFVCBw dWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQxKTsKKyAgUkVUVVJOIHZh cjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGluYygxKTsKKyBpbmMgCist LS0tLQorICAgMQorKDEgcm93KQorCitTRUxFQ1QgaW5jKDEpOworIGluYyAKKy0tLS0tCisgICAy CisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDMKKygxIHJvdykK KworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKTsKKyBpbmMgCistLS0t LQorICAgNAorICAgNQorICAgNgorICAgNworICAgOAorICAgOQorICAxMAorICAxMQorICAxMgor ICAxMworKDEwIHJvd3MpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQg dG8gZmFpbAorTEVUIHZhcjMgPSAwOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2No ZW1hIHZhcmlhYmxlIHZhcjMKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitEUk9QIFZJRVcgc2NoZW1h X3Zhcl92aWV3OworRFJPUCBWQVJJQUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZh cjMgQ0FTQ0FERTsKKy0tIGNvbXBvc2l0ZSB2YXJpYWJsZXMKK0NSRUFURSBUWVBFIHN2X3h5eiBB UyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFT IHN2X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBzdl94eXo7CitcZCB2MQorXGQgdjIKK0xF VCB2MSA9ICgxLDIsMy4xNCk7CitMRVQgdjIgPSAoMTAsMjAsMy4xNCoxMCk7CistLSBzaG91bGQg dG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9ICgxLDIsMy4x NCk7CitTRUxFQ1QgdjE7CisgICAgIHYxICAgICAKKy0tLS0tLS0tLS0tLQorICgxLDIsMy4xNCkK KygxIHJvdykKKworU0VMRUNUIHYyOworICAgICAgdjIgICAgICAgCistLS0tLS0tLS0tLS0tLS0K KyAoMTAsMjAsMzEuNDApCisoMSByb3cpCisKK1NFTEVDVCAodjEpLio7CisgeCB8IHkgfCAgeiAg IAorLS0tKy0tLSstLS0tLS0KKyAxIHwgMiB8IDMuMTQKKygxIHJvdykKKworU0VMRUNUICh2Miku KjsKKyB4ICB8IHkgIHwgICB6ICAgCistLS0tKy0tLS0rLS0tLS0tLQorIDEwIHwgMjAgfCAzMS40 MAorKDEgcm93KQorCitTRUxFQ1QgdjEueCArIHYxLno7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgICAgIDQuMTQKKygxIHJvdykKKworU0VMRUNUIHYyLnggKyB2Mi56OworID9jb2x1bW4/IAor LS0tLS0tLS0tLQorICAgIDQxLjQwCisoMSByb3cpCisKKy0tIGFjY2VzcyB0byBjb21wb3NpdGUg ZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbworLS0gc2hvdWxkIHRvIGZhaWwKK1NFVCBST0xFIFRP IHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgdjIueDsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQg Zm9yIHNjaGVtYSB2YXJpYWJsZSB2MgorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVkFSSUFC TEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CistLSBz Y2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3QgYmUgaW4gY29uZmxpY3Qgd2l0aCBxdWFsaWZpZWQg Y29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFyeCBBUyB0ZXh0OworU0VMRUNUIHZhcngucmVsbmFt ZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUgdmFyeC5yZWxuYW1lID0gJ3BnX2NsYXNzJzsKKyBy ZWxuYW1lICAKKy0tLS0tLS0tLS0KKyBwZ19jbGFzcworKDEgcm93KQorCistLSBzaG91bGQgdG8g ZmFpbAorU0VMRUNUIHZhcngueHh4OworRVJST1I6ICB0eXBlIHRleHQgaXMgbm90IGNvbXBvc2l0 ZQorLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0aW9uCitCRUdJ TjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitMRVQgdmFyeCA9ICdoZWxsbyc7CitDT01N SVQ7CitTRUxFQ1QgdmFyeDsKKyB2YXJ4ICAKKy0tLS0tLS0KKyBoZWxsbworKDEgcm93KQorCitE Uk9QIFZBUklBQkxFIHZhcng7CitDUkVBVEUgVFlQRSB0MSBBUyAoYSBpbnQsIGIgbnVtZXJpYywg YyB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyB0MTsKK0xFVCB2MSA9ICgxLCBwaSgpLCAn aGVsbG8nKTsKK1NFTEVDVCB2MTsKKyAgICAgICAgICAgICB2MSAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwzLjE0MTU5MjY1MzU4OTc5LGhlbGxvKQorKDEg cm93KQorCitMRVQgdjEuYiA9IDEwLjIyMjI7CitTRUxFQ1QgdjE7CisgICAgICAgIHYxICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsMTAuMjIyMixoZWxsbykKKygxIHJvdykKKwor LS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2MS54ID0gMTA7CitFUlJPUjogIGNhbm5vdCBhc3NpZ24g dG8gZmllbGQgIngiIG9mIGNvbHVtbiAieCIgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIGNvbHVt biBpbiBkYXRhIHR5cGUgdDEKK0xJTkUgMTogTEVUIHYxLnggPSAxMDsKKyAgICAgICAgICAgIF4K K0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZUEUgdDE7CistLSBhcnJheXMgYXJlIHN1cHBvcnRl ZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBudW1lcmljW107CitMRVQgdmExID0gQVJSQVlbMS4x LDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsKK1NFTEVDVCB2YTE7CisgICAgdmExICAgICAKKy0t LS0tLS0tLS0tLQorIHsxMC4xLDIuMX0KKygxIHJvdykKKworQ1JFQVRFIFRZUEUgdGEyIEFTIChh IG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NSRUFURSBWQVJJQUJMRSB2YTIgQVMgdGEyOworTEVU IHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOworTEVUIHZhMi5hID0gMTAuMjsKK1NFTEVD VCB2YTI7CisgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMTAu MiwiezAuMCwwLjB9IikKKygxIHJvdykKKworTEVUIHZhMi5iWzFdID0gMTAuMzsKK1NFTEVDVCB2 YTI7CisgICAgICAgICB2YTIgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxMC4y LCJ7MTAuMywwLjB9IikKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YTE7CitEUk9QIFZBUklB QkxFIHZhMjsKK0RST1AgVFlQRSB0YTI7CistLSBkZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklB QkxFIHYxIEFTIG51bWVyaWMgREVGQVVMVCBwaSgpOworTEVUIHYxID0gdjEgKiAyOworU0VMRUNU IHYxOworICAgICAgICB2MSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyA2LjI4MzE4NTMw NzE3OTU4CisoMSByb3cpCisKK0NSRUFURSBUWVBFIHQyIEFTIChhIG51bWVyaWMsIGIgdGV4dCk7 CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMgdDIgREVGQVVMVCAoTlVMTCwgJ0hlbGxvJyk7CitMRVQg cHVibGljLnYyLmEgPSBwaSgpOworU0VMRUNUIHYyOworICAgICAgICAgICAgdjIgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDMuMTQxNTkyNjUzNTg5NzksSGVsbG8p CisoMSByb3cpCisKKy0tIHNob3VkbCBmYWlsIGR1ZSBkZXBlbmRlbmN5CitEUk9QIFRZUEUgdDI7 CitFUlJPUjogIGNhbm5vdCBkcm9wIHR5cGUgdDIgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVu ZCBvbiBpdAorREVUQUlMOiAgc2NoZW1hIHZhcmlhYmxlIHYyIGRlcGVuZHMgb24gdHlwZSB0Mgor SElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3Rz IHRvby4KKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUg djI7CistLSB0ZXN0cyBvZiBhbHRlcnMKK0NSRUFURSBTQ0hFTUEgdmFyX3NjaGVtYTE7CitDUkVB VEUgU0NIRU1BIHZhcl9zY2hlbWEyOworQ1JFQVRFIFZBUklBQkxFIHZhcl9zY2hlbWExLnZhcjEg QVMgaW50ZWdlcjsKK0xFVCB2YXJfc2NoZW1hMS52YXIxID0gMTAwMDsKK1NFTEVDVCB2YXJfc2No ZW1hMS52YXIxOworIHZhcjEgCistLS0tLS0KKyAxMDAwCisoMSByb3cpCisKK0FMVEVSIFZBUklB QkxFIHZhcl9zY2hlbWExLnZhcjEgU0VUIFNDSEVNQSB2YXJfc2NoZW1hMjsKK1NFTEVDVCB2YXJf c2NoZW1hMi52YXIxOworIHZhcjEgCistLS0tLS0KKyAxMDAwCisoMSByb3cpCisKK0NSRUFURSBS T0xFIHZhcl90ZXN0X3JvbGU7CitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIE9XTkVS IFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxk IGZhaWwsIG5vIGFjY2VzcyB0byBzY2hlbWEgdmFyX3NjaGVtYTIudmFyCitTRUxFQ1QgdmFyX3Nj aGVtYTIudmFyMTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJfc2No ZW1hMgorRFJPUCBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxOworRVJST1I6ICBwZXJtaXNzaW9u IGRlbmllZCBmb3Igc2NoZW1hIHZhcl9zY2hlbWEyCitTRVQgUk9MRSBUTyBERUZBVUxUOworQUxU RVIgVkFSSUFCTEUgdmFyX3NjaGVtYTIudmFyMSBTRVQgU0NIRU1BIHB1YmxpYzsKK1NFVCBST0xF IFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgcHVibGljLnZhcjE7CisgdmFyMSAKKy0tLS0tLQor IDEwMDAKKygxIHJvdykKKworQUxURVIgVkFSSUFCTEUgcHVibGljLnZhcjEgUkVOQU1FIFRPIHZh cjFfcmVuYW1lZDsKK1NFTEVDVCBwdWJsaWMudmFyMV9yZW5hbWVkOworIHZhcjFfcmVuYW1lZCAK Ky0tLS0tLS0tLS0tLS0tCisgICAgICAgICAxMDAwCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUg cHVibGljLnZhcjFfcmVuYW1lZDsKK1NFVCBST0xFIFRPIERFRkFVTHQ7CitEUk9QIFJPTEUgdmFy X3Rlc3Rfcm9sZTsKK0NSRUFURSBWQVJJQUJMRSB4eCBBUyB0ZXh0IERFRkFVTFQgJ2hlbGxvJzsK K1NFTEVDVCB4eCwgdXBwZXIoeHgpOworICB4eCAgIHwgdXBwZXIgCistLS0tLS0tKy0tLS0tLS0K KyBoZWxsbyB8IEhFTExPCisoMSByb3cpCisKK0xFVCB4eCA9ICdIaSc7CitTRUxFQ1QgeHg7Cisg eHggCistLS0tCisgSGkKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB4eDsKKy0tIE9OIFRSQU5T QUNUSU9OIEVORCBSRVNFVCB0ZXN0cworQ1JFQVRFIFZBUklBQkxFIHQxIEFTIGludCBERUZBVUxU IC0xIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVDsKK0JFR0lOOworICBTRUxFQ1QgdDE7CisgdDEg CistLS0tCisgLTEKKygxIHJvdykKKworICBMRVQgdDEgPSAxMDA7CisgIFNFTEVDVCB0MTsKKyB0 MSAgCistLS0tLQorIDEwMAorKDEgcm93KQorCitDT01NSVQ7CitTRUxFQ1QgdDE7CisgdDEgCist LS0tCisgLTEKKygxIHJvdykKKworQkVHSU47CisgIFNFTEVDVCB0MTsKKyB0MSAKKy0tLS0KKyAt MQorKDEgcm93KQorCisgIExFVCB0MSA9IDEwMDsKKyAgU0VMRUNUIHQxOworIHQxICAKKy0tLS0t CisgMTAwCisoMSByb3cpCisKK1JPTExCQUNLOworU0VMRUNUIHQxOworIHQxIAorLS0tLQorIC0x CisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdDE7CitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgaW50 IERFRkFVTFQgMDsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0ZXh0IERFRkFVTFQgJ25vbmUnOwor TEVUIHYxID0gMTAwOworTEVUIHYyID0gJ0hlbGxvJzsKK1NFTEVDVCB2MSwgdjI7CisgdjEgIHwg IHYyICAgCistLS0tLSstLS0tLS0tCisgMTAwIHwgSGVsbG8KKygxIHJvdykKKworTEVUIHYxID0g REVGQVVMVDsKK0xFVCB2MiA9IERFRkFVTFQ7CitTRUxFQ1QgdjEsIHYyOworIHYxIHwgIHYyICAK Ky0tLS0rLS0tLS0tCisgIDAgfCBub25lCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdjE7CitE Uk9QIFZBUklBQkxFIHYyOworLS0gT04gQ09NTUlUIERST1AgdGVzdHMKKy0tIHNob3VsZCBiZSAw IGFsd2F5cworU0VMRUNUIGNvdW50KCopIEZST00gcGdfdmFyaWFibGU7CisgY291bnQgCistLS0t LS0tCisgICAgIDAKKygxIHJvdykKKworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZyBBUyBpbnQgT04g Q09NTUlUIERST1A7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJsZTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitCRUdJTjsKKyAgQ1JFQVRFIFRFTVAgVkFSSUFC TEUgZyBBUyBpbnQgT04gQ09NTUlUIERST1A7CitDT01NSVQ7CitTRUxFQ1QgY291bnQoKikgRlJP TSBwZ192YXJpYWJsZTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitCRUdJ TjsKKyAgQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZyBBUyBpbnQgT04gQ09NTUlUIERST1A7CitST0xM QkFDSzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ZhcmlhYmxlOworIGNvdW50IAorLS0tLS0t LQorICAgICAwCisoMSByb3cpCisKKy0tIHRlc3Qgb24gcXVlcnkgd2l0aCB3b3JrZXJzCitjcmVh dGUgdGFibGUgc3Zhcl90ZXN0KGEgaW50KTsKK2luc2VydCBpbnRvIHN2YXJfdGVzdCBzZWxlY3Qg KiBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMDApOworYW5hbHl6ZSBzdmFyX3Rlc3Q7Citj cmVhdGUgdmFyaWFibGUgemVybyBpbnQ7CitsZXQgemVybyA9IDA7CistLSBwYXJhbGxlbCB3b3Jr ZXJzIHNob3VsZCBiZSB1c2VkCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCBjb3VudCgqKSBm cm9tIHN2YXJfdGVzdCB3aGVyZSBhJTEwID0gemVybzsKKyAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhl cgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBzdmFyX3Rlc3QK KyAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKChhICUgMTApID0gemVybykKKyg2IHJvd3Mp CisKKy0tIHJlc3VsdCBzaG91bGQgYmUgMTAwMDAwCitzZWxlY3QgY291bnQoKikgZnJvbSBzdmFy X3Rlc3Qgd2hlcmUgYSUxMCA9IHplcm87CisgY291bnQgIAorLS0tLS0tLS0KKyAxMDAwMDAKKygx IHJvdykKKworZHJvcCB0YWJsZSBzdmFyX3Rlc3Q7Citkcm9wIHZhcmlhYmxlIHplcm87CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAxNmY5NzljOGQ5Li45YmYzNzliODdiIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExMSw3ICsxMTEsNyBAQCB0ZXN0OiBzZWxl Y3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJp dG1hcG9wcyBjb21ibwogIyBOQjogdGVtcC5zcWwgZG9lcyBhIHJlY29ubmVjdCB3aGljaCB0cmFu c2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtlZXAgdGhpcyBwYXJhbGxlbCBncm91 cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBsYW5jYWNoZSBsaW1p dCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRob3V0X29p ZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlzbSBy b3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6IHBsYW5jYWNoZSBs aW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRob3V0 X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlz bSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgc2NoZW1hX3ZhcmlhYmxl cwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdy ZXNzL3NlcmlhbF9zY2hlZHVsZQppbmRleCA0MjYzMmJlNjc1Li40MmJmNGVjYjNmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NlcmlhbF9zY2hlZHVsZQpAQCAtMTkxLDMgKzE5MSw0IEBAIHRlc3Q6IHBhcnRpdGlvbl9h Z2dyZWdhdGUKIHRlc3Q6IGV2ZW50X3RyaWdnZXIKIHRlc3Q6IGZhc3RfZGVmYXVsdAogdGVzdDog c3RhdHMKK3Rlc3Q6IHNjaGVtYV92YXJpYWJsZXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2NoZW1h X3ZhcmlhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGJl MzFlMWJiMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92 YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEsMzI4IEBACitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBp bnRlZ2VyOworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworCitEUk9QIFZBUklB QkxFIHZhcjEsIHZhcjI7CisKKy0tIGZ1bmN0aW9uYWwgaW50ZXJmYWNlCitDUkVBVEUgVkFSSUFC TEUgdmFyMSBBUyBudW1lcmljOworCitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworCitTRVQg Uk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHZhcjE7 CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFJFQUQgT04gVkFSSUFCTEUgdmFyMSBU TyB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxk IHRvIGZhaWwKK0xFVCB2YXIxID0gMTA7CistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIHZhcjE7 CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFdSSVRFIE9OIFZBUklBQkxFIHZhcjEg VE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hv dWxkIHRvIHdvcmsKK0xFVCB2YXIxID0gMzMzOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitS RVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9yb2xlOworCitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVSTlMgaW50IEFTICQkCisgIFNF TEVDVCBwdWJsaWMudmFyMTo6aW50OworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7 CisKK1NFTEVDVCBzZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisK Ky0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgcHVibGljLnZhcjE7CisKKy0tIHNob3VsZCB0byB3 b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3 IEFTIFNFTEVDVCB2YXIxOworCitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKworXGMg LQorCistLSBzaG91bGQgdG8gd29yayBzdGlsbCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5CitTRUxF Q1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKworTEVUIHZhcjEgPSBwaSgpOworCitTRUxFQ1Qg dmFyMTsKKworLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4KK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworCistLSBMRVQgY2FuIGJlIHByZXBhcmVk CitQUkVQQVJFIHZhcl9wcChpbnQsIG51bWVyaWMpIEFTIExFVCB2YXIxID0gJDEgKyAkMjsKKwor RVhFQ1VURSB2YXJfcHAoMTAwLCAxLjIzNDU2KTsKKworU0VMRUNUIHZhcjE7CisKK0NSRUFURSBW QVJJQUJMRSB2YXIzIEFTIGludDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaW5jKGlu dCkKK1JFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICBMRVQgcHVibGljLnZhcjMgPSBDT0FMRVND RShwdWJsaWMudmFyMyArICQxLCAkMSk7CisgIFJFVFVSTiB2YXIzOworRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKKworU0VMRUNUIGluYygxKTsKK1NFTEVDVCBpbmMoMSk7CitTRUxFQ1QgaW5j KDEpOworCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworCitTRVQg Uk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjMgPSAw OworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitEUk9QIFZJRVcgc2NoZW1hX3Zhcl92aWV3Owor CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUgdmFyMyBDQVNDQURF OworCistLSBjb21wb3NpdGUgdmFyaWFibGVzCisKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAoeCBp bnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgc3Zf eHl6OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHN2X3h5ejsKKworXGQgdjEKK1xkIHYyCisKK0xF VCB2MSA9ICgxLDIsMy4xNCk7CitMRVQgdjIgPSAoMTAsMjAsMy4xNCoxMCk7CisKKy0tIHNob3Vs ZCB0byB3b3JrIHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJlZCBjYXN0cworTEVUIHYxID0gKDEsMiwz LjE0KTsKKworU0VMRUNUIHYxOworU0VMRUNUIHYyOworU0VMRUNUICh2MSkuKjsKK1NFTEVDVCAo djIpLio7CisKK1NFTEVDVCB2MS54ICsgdjEuejsKK1NFTEVDVCB2Mi54ICsgdjIuejsKKworLS0g YWNjZXNzIHRvIGNvbXBvc2l0ZSBmaWVsZHMgc2hvdWxkIGJlIHNhZmUgdG9vCistLSBzaG91bGQg dG8gZmFpbAorU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VMRUNUIHYyLng7CisKK1NF VCBST0xFIFRPIERFRkFVTFQ7CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYy OworCitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2NhbGFyIHZhcmlhYmxlcyBzaG91 bGQgbm90IGJlIGluIGNvbmZsaWN0IHdpdGggcXVhbGlmaWVkIGNvbHVtbgorQ1JFQVRFIFZBUklB QkxFIHZhcnggQVMgdGV4dDsKK1NFTEVDVCB2YXJ4LnJlbG5hbWUgRlJPTSBwZ19jbGFzcyB2YXJ4 IFdIRVJFIHZhcngucmVsbmFtZSA9ICdwZ19jbGFzcyc7CisKKy0tIHNob3VsZCB0byBmYWlsCitT RUxFQ1QgdmFyeC54eHg7CisKKy0tIHZhcmlhYmxlcyBjYW4gYmUgdXBkYXRlZCB1bmRlciBSTyB0 cmFuc2FjdGlvbgorCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitMRVQgdmFy eCA9ICdoZWxsbyc7CitDT01NSVQ7CisKK1NFTEVDVCB2YXJ4OworCitEUk9QIFZBUklBQkxFIHZh cng7CisKK0NSRUFURSBUWVBFIHQxIEFTIChhIGludCwgYiBudW1lcmljLCBjIHRleHQpOworCitD UkVBVEUgVkFSSUFCTEUgdjEgQVMgdDE7CitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitT RUxFQ1QgdjE7CitMRVQgdjEuYiA9IDEwLjIyMjI7CitTRUxFQ1QgdjE7CisKKy0tIHNob3VsZCB0 byBmYWlsCitMRVQgdjEueCA9IDEwOworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBUWVBFIHQx OworCistLSBhcnJheXMgYXJlIHN1cHBvcnRlZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBudW1l cmljW107CitMRVQgdmExID0gQVJSQVlbMS4xLDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsKK1NF TEVDVCB2YTE7CisKK0NSRUFURSBUWVBFIHRhMiBBUyAoYSBudW1lcmljLCBiIG51bWVyaWNbXSk7 CitDUkVBVEUgVkFSSUFCTEUgdmEyIEFTIHRhMjsKK0xFVCB2YTIgPSAoMTAuMSwgQVJSQVlbMC4w LCAwLjBdKTsKK0xFVCB2YTIuYSA9IDEwLjI7CitTRUxFQ1QgdmEyOworTEVUIHZhMi5iWzFdID0g MTAuMzsKK1NFTEVDVCB2YTI7CisKK0RST1AgVkFSSUFCTEUgdmExOworRFJPUCBWQVJJQUJMRSB2 YTI7CitEUk9QIFRZUEUgdGEyOworCistLSBkZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklBQkxF IHYxIEFTIG51bWVyaWMgREVGQVVMVCBwaSgpOworTEVUIHYxID0gdjEgKiAyOworU0VMRUNUIHYx OworCitDUkVBVEUgVFlQRSB0MiBBUyAoYSBudW1lcmljLCBiIHRleHQpOworQ1JFQVRFIFZBUklB QkxFIHYyIEFTIHQyIERFRkFVTFQgKE5VTEwsICdIZWxsbycpOworTEVUIHB1YmxpYy52Mi5hID0g cGkoKTsKK1NFTEVDVCB2MjsKKworLS0gc2hvdWRsIGZhaWwgZHVlIGRlcGVuZGVuY3kKK0RST1Ag VFlQRSB0MjsKKworLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJ QUJMRSB2MjsKKworLS0gdGVzdHMgb2YgYWx0ZXJzCitDUkVBVEUgU0NIRU1BIHZhcl9zY2hlbWEx OworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMjsKKworQ1JFQVRFIFZBUklBQkxFIHZhcl9zY2hl bWExLnZhcjEgQVMgaW50ZWdlcjsKK0xFVCB2YXJfc2NoZW1hMS52YXIxID0gMTAwMDsKK1NFTEVD VCB2YXJfc2NoZW1hMS52YXIxOworQUxURVIgVkFSSUFCTEUgdmFyX3NjaGVtYTEudmFyMSBTRVQg U0NIRU1BIHZhcl9zY2hlbWEyOworU0VMRUNUIHZhcl9zY2hlbWEyLnZhcjE7CisKK0NSRUFURSBS T0xFIHZhcl90ZXN0X3JvbGU7CisKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjEgT1dO RVIgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNo b3VsZCBmYWlsLCBubyBhY2Nlc3MgdG8gc2NoZW1hIHZhcl9zY2hlbWEyLnZhcgorU0VMRUNUIHZh cl9zY2hlbWEyLnZhcjE7CitEUk9QIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjE7CisKK1NFVCBS T0xFIFRPIERFRkFVTFQ7CisKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjEgU0VUIFND SEVNQSBwdWJsaWM7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgcHVibGlj LnZhcjE7CisKK0FMVEVSIFZBUklBQkxFIHB1YmxpYy52YXIxIFJFTkFNRSBUTyB2YXIxX3JlbmFt ZWQ7CisKK1NFTEVDVCBwdWJsaWMudmFyMV9yZW5hbWVkOworCitEUk9QIFZBUklBQkxFIHB1Ymxp Yy52YXIxX3JlbmFtZWQ7CisKK1NFVCBST0xFIFRPIERFRkFVTHQ7CisKK0RST1AgUk9MRSB2YXJf dGVzdF9yb2xlOworCitDUkVBVEUgVkFSSUFCTEUgeHggQVMgdGV4dCBERUZBVUxUICdoZWxsbyc7 CisKK1NFTEVDVCB4eCwgdXBwZXIoeHgpOworCitMRVQgeHggPSAnSGknOworCitTRUxFQ1QgeHg7 CisKK0RST1AgVkFSSUFCTEUgeHg7CisKKy0tIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVCB0ZXN0 cworQ1JFQVRFIFZBUklBQkxFIHQxIEFTIGludCBERUZBVUxUIC0xIE9OIFRSQU5TQUNUSU9OIEVO RCBSRVNFVDsKKworQkVHSU47CisgIFNFTEVDVCB0MTsKKyAgTEVUIHQxID0gMTAwOworICBTRUxF Q1QgdDE7CitDT01NSVQ7CisKK1NFTEVDVCB0MTsKKworQkVHSU47CisgIFNFTEVDVCB0MTsKKyAg TEVUIHQxID0gMTAwOworICBTRUxFQ1QgdDE7CitST0xMQkFDSzsKKworU0VMRUNUIHQxOworCitE Uk9QIFZBUklBQkxFIHQxOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgaW50IERFRkFVTFQgMDsK K0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0ZXh0IERFRkFVTFQgJ25vbmUnOworCitMRVQgdjEgPSAx MDA7CitMRVQgdjIgPSAnSGVsbG8nOworU0VMRUNUIHYxLCB2MjsKK0xFVCB2MSA9IERFRkFVTFQ7 CitMRVQgdjIgPSBERUZBVUxUOworU0VMRUNUIHYxLCB2MjsKKworRFJPUCBWQVJJQUJMRSB2MTsK K0RST1AgVkFSSUFCTEUgdjI7CisKKy0tIE9OIENPTU1JVCBEUk9QIHRlc3RzCistLSBzaG91bGQg YmUgMCBhbHdheXMKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ZhcmlhYmxlOworCitDUkVBVEUg VEVNUCBWQVJJQUJMRSBnIEFTIGludCBPTiBDT01NSVQgRFJPUDsKKworU0VMRUNUIGNvdW50KCop IEZST00gcGdfdmFyaWFibGU7CisKK0JFR0lOOworICBDUkVBVEUgVEVNUCBWQVJJQUJMRSBnIEFT IGludCBPTiBDT01NSVQgRFJPUDsKK0NPTU1JVDsKKworU0VMRUNUIGNvdW50KCopIEZST00gcGdf dmFyaWFibGU7CisKK0JFR0lOOworICBDUkVBVEUgVEVNUCBWQVJJQUJMRSBnIEFTIGludCBPTiBD T01NSVQgRFJPUDsKK1JPTExCQUNLOworCitTRUxFQ1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJs ZTsKKworLS0gdGVzdCBvbiBxdWVyeSB3aXRoIHdvcmtlcnMKK2NyZWF0ZSB0YWJsZSBzdmFyX3Rl c3QoYSBpbnQpOworaW5zZXJ0IGludG8gc3Zhcl90ZXN0IHNlbGVjdCAqIGZyb20gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwMDAwMCk7CithbmFseXplIHN2YXJfdGVzdDsKK2NyZWF0ZSB2YXJpYWJsZSB6 ZXJvIGludDsKK2xldCB6ZXJvID0gMDsKKworLS0gcGFyYWxsZWwgd29ya2VycyBzaG91bGQgYmUg dXNlZAorZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgY291bnQoKikgZnJvbSBzdmFyX3Rlc3Qg d2hlcmUgYSUxMCA9IHplcm87CisKKy0tIHJlc3VsdCBzaG91bGQgYmUgMTAwMDAwCitzZWxlY3Qg Y291bnQoKikgZnJvbSBzdmFyX3Rlc3Qgd2hlcmUgYSUxMCA9IHplcm87CisKK2Ryb3AgdGFibGUg c3Zhcl90ZXN0OworZHJvcCB2YXJpYWJsZSB6ZXJvOworCg== --0000000000005b74510575db8dec--