Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sYsoh-00EmMf-1b for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jul 2024 19:47:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sYsof-00D4b3-JD for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jul 2024 19:47:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sYsoH-00D0wD-Uv for pgsql-hackers@lists.postgresql.org; Tue, 30 Jul 2024 19:47:02 +0000 Received: from mail-lj1-x230.google.com ([2a00:1450:4864:20::230]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sYso7-002J9Y-Pm for pgsql-hackers@lists.postgresql.org; Tue, 30 Jul 2024 19:47:01 +0000 Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2eeb1ba0468so77557161fa.0 for ; Tue, 30 Jul 2024 12:46:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20230601.gappssmtp.com; s=20230601; t=1722368810; x=1722973610; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=CfT07cZ/PheEz5tAXH1r5g738641PK5AMQc9W2kHVNY=; b=CCWU/dZxxnG+Gi9QMtsslz+sR5Kjo6RVNWqaMxtmXf0HBovQc8gsEjvKveJ3k7mXST OFsN3I31Cc9E/w6BUwkPNgTTWB75LtxEkv9lPPq3fj+ILN/B0SS+wCdWUlx1IRTHf8HV bkXtTcM9UJ5pEijhVGrq56fzKaJSNDCW+YOrkI42uWok5E4UMnXQ4bjYGC/p61j+NVzW SklqcBj6TPRXnM07FN7CslZdioksBd7lnGlJdVq+r9lolRzCDKM9xScY3m7S3Sh6BzBi aL2hylJzRw9+srzUreSgwRCKjDfa9ljCTG2bILKsvxNr5CenbFWFLuYi4ypeAOXQJHlf jfNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722368810; x=1722973610; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CfT07cZ/PheEz5tAXH1r5g738641PK5AMQc9W2kHVNY=; b=OhmTVhS+VQHoPYhY/TGtQ71zFGiGvhpxBvZAoA3YhYWGQAmSoaIJzcbXjYELeHLW7T pDZO5CrVkmPVLNe3Lclj4ya/J3tJ76mu1n20lJ7spvM+tHtHLSX1njHnvRPBKTD0sN1R 3/f0O9xgsNrLnNJG6ntwmeOXDbZqH91Gh3OsLzYC/ejnk1ibyltr+wn2fzUr/x5+T2+f pLr6M7CjLvO0KXFlI795sopOc872nlDCGjDwNloAzZyvUMK3p5HI6MFF8UlHITAfjN70 k9DRg9YN8MvKJFrXG9TdfbIEUCtAyYbF+ircKIapmB1Cij9mESPueBrPs9WqF07/mWKY 62Ng== X-Forwarded-Encrypted: i=1; AJvYcCWIeL/onwuFpwPp0lSOjhKasboKZdec9xUNxA4h+rlXly0zyyGuXfNCeVh9cOWKOh9dVLLgpMrfJKUUF5r4TVT14iS035hxh7uT1L8Kd8ATiNI7 X-Gm-Message-State: AOJu0YwR0K8pUva0DJiyMxOHkiR9UmM5MgTLGW9kUPH0InFYOLgAt4IH A2x92U5j9O1YIqkZ4j5NtaHJVwJDfnPWJOt5gqsGEZjU6KnxrYRiwkY3zpobnek= X-Google-Smtp-Source: AGHT+IEdakM8nc1cc8zByCS9iAqWBs7sEBEaw5bB87cSohQTJIem04zYs+lfRgJDztseqz3HgB+yTQ== X-Received: by 2002:a2e:868c:0:b0:2ef:1bd5:bac3 with SMTP id 38308e7fff4ca-2f12ee55a92mr80305431fa.41.1722368808752; Tue, 30 Jul 2024 12:46:48 -0700 (PDT) Received: from dynamic-pd01.res.v6.highway.a1.net ([2001:871:260:194:69a0:c22d:cd82:b639]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5b0044c72d4sm5748791a12.70.2024.07.30.12.46.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jul 2024 12:46:47 -0700 (PDT) Message-ID: <67aa68a7e6dfb44c0cbbdf7f97cadfede4269ce5.camel@cybertec.at> Subject: Re: proposal: schema variables From: Laurenz Albe To: Pavel Stehule Cc: Erik Rijkers , Michael Paquier , Amit Kapila , DUVAL REMI , PostgreSQL Hackers Date: Tue, 30 Jul 2024 21:46:46 +0200 In-Reply-To: <6996931e8c9edf3b82223e74e92326a7ed06c1d6.camel@cybertec.at> References: <20200924035637.GF28585@paquier.xyz> <20201001033824.GC8130@paquier.xyz> <51a9a68e8a998d04df17417d45c1dbd4@xs4all.nl> <89817942c99da01cd5e7850fe418436b@xs4all.nl> <56ca532c37eb0b540961f74a7bd5db39@xs4all.nl> <8181bd3abc647bdae5a4f78e71e62478a98c75f4.camel@cybertec.at> <9e67d49deb18270eddb95e602c83f02b98459843.camel@cybertec.at> <3b662dc5b615d4c20a55e8e2fbe6fc00fe00609d.camel@cybertec.at> <6996931e8c9edf3b82223e74e92326a7ed06c1d6.camel@cybertec.at> Content-Type: multipart/mixed; boundary="=-DQq/vrD+rFBJ6zCltjUS" User-Agent: Evolution 3.52.3 (3.52.3-1.fc40) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-DQq/vrD+rFBJ6zCltjUS Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is my review of the second patch in the series. Again, I mostly changed code comments and documentation. Noteworthy remarks: - A general reminder: single line comments should start with a lower case letter and have to period in the end: /* this is a typical single line comment */ - Variable as parameter: CREATE VARIABLE var AS date; LET var =3D current_date; PREPARE stmt(date) AS SELECT $1; EXECUTE stmt(var); ERROR: paramid of PARAM_VARIABLE param is out of range Is that working as intended? I don't understand the error message. Perhaps there is a bug in src/backend/executor/execExpr.c. - IdentifyVariable > --- a/src/backend/catalog/namespace.c > +++ b/src/backend/catalog/namespace.c > [...] > +/* > + * IdentifyVariable - try to find variable identified by list of names= . > [...] The function comment doesn't make clear to me what the function does. Perhaps that is so confusing because the function seems to serve several purposes (during parsing, in ANALYZE, and to identify shadowed variables in a later patch). I rewrote the function comment, but didn't touch the code or code comment= s. Perhaps part of the reason why this function is so complicated is that you support things like this: CREATE SCHEMA sch; CREATE TYPE cp AS (a integer, b integer); CREATE VARIABLE sch.v AS cp; LET sch.v =3D (1, 2); SELECT sch.v.b; b=20 =E2=95=90=E2=95=90=E2=95=90 2 (1 row) test=3D# SELECT test.sch.v.b; b=20 =E2=95=90=E2=95=90=E2=95=90 2 (1 row) We don't support that for tables: CREATE TABLE tab (c cp); INSERT INTO tab VALUES (ROW(42, 43)); SELECT tab.c.b FROM tab; ERROR: cross-database references are not implemented: tab.c.b You have to use extra parentheses: SELECT (tab.c).b FROM tab; b =20 =E2=95=90=E2=95=90=E2=95=90=E2=95=90 43 (1 row) I'd say that this should be the same for session variables. What do you think? Code comments: - There are lots of variables declared at the beginning, but they are onl= y used in code blocks further down. For clarity, you should declare a variable in the code block where it is used. - + /* + * In this case, "a" is used as catalog name - chec= k it. + */ + if (strcmp(a, get_database_name(MyDatabaseId)) !=3D= 0) + { + if (!noerror) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPOR= TED), + errmsg("cross-database references = are not implemented: %s", + NameListToString(names)))); + } + else + { There needn't be an "else", since the ereport() will never return. Less indentation is better. - src/backend/commands/session_variable.c There is one comment that confuses me and that I did not edit: > +Datum > +GetSessionVariable(Oid varid, bool *isNull, Oid *typid) > +{ > + SVariable svar; > + > + svar =3D get_session_variable(varid); > + > + /* > + * Although svar is freshly validated in this point, the svar->is_v= alid can > + * be false, due possible accepting invalidation message inside dom= ain > + * check. Now, the validation is done after lock, that can also acc= ept > + * invalidation message, so validation should be trustful. > + * > + * For now, we don't need to repeat validation. Only svar should be= valid > + * pointer. > + */ > + Assert(svar); > + > + *typid =3D svar->typid; > + > + return copy_session_variable_value(svar, isNull); > +} - src/backend/executor/execMain.c > @@ -196,6 +198,51 @@ standard_ExecutorStart(QueryDesc *queryDesc, int e= flags) > Assert(queryDesc->sourceText !=3D NULL); > estate->es_sourceText =3D queryDesc->sourceText; > > + /* > + * The executor doesn't work with session variables directly. Value= s of > + * related session variables are copied to dedicated array, and thi= s array > + * is passed to executor. > + */ Why? Is that a performance measure? The comment should explain that. - parallel safety > --- a/src/backend/optimizer/util/clauses.c > +++ b/src/backend/optimizer/util/clauses.c > @@ -935,6 +936,13 @@ max_parallel_hazard_walker(Node *node, max_paralle= l_hazard_context *context) > if (param->paramkind =3D=3D PARAM_EXTERN) > return false; > > + /* We doesn't support passing session variables to workers */ > + if (param->paramkind =3D=3D PARAM_VARIABLE) > + { > + if (max_parallel_hazard_test(PROPARALLEL_RESTRICTED, contex= t)) > + return true; > + } Even if a later patch alleviates that restriction, this patch should docu= ment that session variables imply "parallel restricted". I have added that to doc/= src/sgml/parallel.sgml. Attached are the first two patches with my edits (the first patch is unchan= ged; I just add it again to keep the cfbot happy. I hope to get to review the other patches at some later time. Yours, Laurenz Albe --=-DQq/vrD+rFBJ6zCltjUS Content-Disposition: attachment; filename*0=v20240730-0001-Enhancing-catalog-for-support-session-vari.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v20240730-0001-Enhancing-catalog-for-support-session-vari.patch"; charset="UTF-8" RnJvbSA0NzA1ZGIwZGUzZjlmNTAzMWZhODIzODkwODQyMWQyMTdhNzdlMjkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogVHVlLCAzMCBKdWwgMjAyNCAyMTozOToxMiArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjQwNzMwIDEvMl0gRW5oYW5jaW5nIGNhdGFsb2cgZm9yIHN1cHBvcnQgc2Vzc2lvbiB2YXJp YWJsZXMKIGFuZCByZWxhdGVkIHN1cHBvcnQKClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgc3lz dGVtIGNhdGFsb2cgdGFibGUgcGdfdmFyaWFibGUuIFRoaXMgdGFibGUgaG9sZHMgbWV0YWRhdGEg YWJvdXQKc2Vzc2lvbiB2YXJpYWJsZXMgY3JlYXRlZCBieSBjb21tYW5kIENSRUFURSBWQVJJQUJM RSwgYW5kIGRyb3BwZWQgYnkgY29tbWFuZCBEUk9QIFZBUklBQkxFLgpCb3RoIGNvbW1hbmRzIGFy ZSBpbXBsZW1lbnRlZCBieSB0aGlzIHBhdGNoLiBQb3NzaWJpbGl0eSB0byBjaGFuZ2Ugb3duZXIs IHNjaGVtYSBvciByZW5hbWUuCgpBY2Nlc3MgdG8gc2Vzc2lvbiB2YXJpYWJsZXMgY2FuIGJlIGNv bnRyb2xsZWQgYnkgU0VMRUNUIG9yIFVQREFURSByaWdodHMuIEJvdGggcmlnaHRzIGFyZQppbnRy b2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggdG9vLgoKVGhpcyBwYXRjaCBlbmhhbmNpbmcgcGdfZHVtcCBh bmQgcHNxbCB0byBzdXBwb3J0IHNlc3Npb24gdmFyaWFibGVzLiBUaGUgY2hhbmdlcyBhcmUgcmVs YXRlZAp0byBzeXN0ZW0gY2F0YWxvZy4KClRoaXMgcGF0Y2ggaXMgbm90IHNob3J0LCBidXQgdGhl IGNvZGUgaXMgc2ltcGxlLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAg ICAgICAgICAgICB8IDEyMCArKysrKysrKysKIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAzMSArKysKIGRvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNn bWwgICAgICAgICAgICAgICB8ICAyNCArKwogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDEzICsKIGRvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sICAgICAg ICAgICAgICAgICAgICB8ICAxNSArKwogZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sICAg ICAgICAgICAgICAgIHwgICAzICsKIC4uLi9zZ21sL3JlZi9hbHRlcl9kZWZhdWx0X3ByaXZpbGVn ZXMuc2dtbCAgICB8ICAyNiArLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21s ICAgICAgICAgIHwgMTc4ICsrKysrKysrKysrKwogZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNn bWwgICAgICAgICAgICAgICAgIHwgICAxICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVt YS5zZ21sICAgICAgICAgICB8ICAgNyArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbCAgICAgICAgIHwgMTUxICsrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvcmVmL2Ryb3Bf dmFyaWFibGUuc2dtbCAgICAgICAgICAgfCAxMTcgKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYv Z3JhbnQuc2dtbCAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBkb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDcgKwogZG9jL3NyYy9zZ21sL3JlZmVyZW5j ZS5zZ21sICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNo ay5jICAgICAgICAgICAgICAgICAgfCAgNzcgKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2Rl cGVuZGVuY3kuYyAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNv bi5idWlsZCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNw YWNlLmMgICAgICAgICAgICAgICB8IDEzNSArKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYyAgICAgICAgICAgfCAxMjEgKysrKysrKystCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX3NoZGVwZW5kLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ192YXJpYWJsZS5jICAgICAgICAgICAgIHwgMjU1ICsrKysrKysrKysrKysrKysrKwog c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMv YmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgICAgfCAgIDQgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MSArKysKIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8IDEwNSArKysrKysrLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDEyICsKIHNyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAgICAgICAgICB8ICAxNiArKwogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FjbC5jICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgICAgICB8IDExMyArKysrKysrKwogc3Jj L2Jpbi9wZ19kdW1wL2NvbW1vbi5jICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9i aW4vcGdfZHVtcC9kdW1wdXRpbHMuYyAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwLmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICA5ICsKIHNyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE5NSArKysrKysrKysrKysrLQog c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgICAgICAgICAgICAgICAgfCAgIDYgKwogc3Jj L2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDY0ICsrKysrCiBz cmMvYmluL3BzcWwvY29tbWFuZC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDk2ICsrKysrKysK IHNyYy9iaW4vcHNxbC9kZXNjcmliZS5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBz cmMvYmluL3BzcWwvaGVscC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAgICAgICAgICAgIHwgIDQ0ICsrLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMv aW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaCAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ192YXJpYWJsZS5oICAgICAgICAgICAgIHwgIDgxICsrKysrKwogc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDE2ICsrCiBzcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv dGNvcC9jbWR0YWdsaXN0LmggICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2FjbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGls cy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9kZXBlbmRlbmN5Lm91dCAgICAgIHwgIDE3ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29pZGpvaW5zLm91dCAgICAgICAgfCAgIDQgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wc3FsLm91dCAgICAgICAgICAgIHwgIDUwICsrKysKIC4uLi9yZWdyZXNzL2V4cGVjdGVk L3Nlc3Npb25fdmFyaWFibGVzLm91dCAgICB8ICA1NyArKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2RlcGVuZGVuY3kuc3FsICAgICAgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w c3FsLnNxbCAgICAgICAgICAgICAgICAgfCAgMjEgKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nl c3Npb25fdmFyaWFibGVzLnNxbCAgICB8ICA2MSArKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICA0ICsKIDY2IGZpbGVzIGNoYW5nZWQsIDIzOTAg aW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9z cmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmlu ZGV4IGI2NTRmYWUxYjIuLmRlMTIyZTU0M2YgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0zNjksNiArMzY5 LDExIEBACiAgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy11c2VyLW1hcHBp bmciPjxzdHJ1Y3RuYW1lPnBnX3VzZXJfbWFwcGluZzwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRy eT4KICAgICAgIDxlbnRyeT5tYXBwaW5ncyBvZiB1c2VycyB0byBmb3JlaWduIHNlcnZlcnM8L2Vu dHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaW5rIGxpbmtl bmQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPjxzdHJ1Y3RuYW1lPnBnX3ZhcmlhYmxlPC9zdHJ1Y3Ru YW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnNlc3Npb24gdmFyaWFibGVzPC9lbnRy eT4KKyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpA QCAtOTcyNiw0ICs5NzMxLDExOSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRl cmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICA8L3RhYmxl PgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICA8dGl0 bGU+PHN0cnVjdG5hbWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5k ZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICAgPHByaW1hcnk+cGdfdmFyaWFi bGU8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIGNhdGFsb2cg PHN0cnVjdG5hbWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+IHN0b3JlcyBpbmZvcm1hdGlvbiBh Ym91dAorICAgc2Vzc2lvbiB2YXJpYWJsZXMuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8 dGl0bGU+PHN0cnVjdG5hbWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxl PgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor ICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJ0eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90 eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctdHlwZSI+ PHN0cnVjdG5hbWU+cGdfdHlwZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8 L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBP SUQgb2YgdGhlIHZhcmlhYmxlJ3MgZGF0YSB0eXBlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPnZhcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZQorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJuYW1lc3BhY2U8L3N0cnVjdGZpZWxkPiA8dHlw ZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1w Zy1uYW1lc3BhY2UiPjxzdHJ1Y3RuYW1lPnBnX25hbWVzcGFjZTwvc3RydWN0bmFtZT48L2xpbms+ LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIHRoaXMg dmFyaWFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFyb3duZXI8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0i Y2F0YWxvZy1wZy1hdXRoaWQiPjxzdHJ1Y3RuYW1lPnBnX2F1dGhpZDwvc3RydWN0bmFtZT48L2xp bms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIE93bmVyIG9mIHRoZSB2YXJpYWJsZQorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ0PC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwv c3RydWN0ZmllbGQ+IHJlY29yZHMgdHlwZS1zcGVjaWZpYyBkYXRhCisgICAgICAgc3VwcGxpZWQg YXQgdmFyaWFibGUgY3JlYXRpb24gdGltZSAoZm9yIGV4YW1wbGUsIHRoZSBtYXhpbXVtCisgICAg ICAgbGVuZ3RoIG9mIGEgPHR5cGU+dmFyY2hhcjwvdHlwZT4gY29sdW1uKS4gIEl0IGlzIHBhc3Nl ZCB0bworICAgICAgIHR5cGUtc3BlY2lmaWMgaW5wdXQgZnVuY3Rpb25zIGFuZCBsZW5ndGggY29l cmNpb24gZnVuY3Rpb25zLgorICAgICAgIFRoZSB2YWx1ZSB3aWxsIGdlbmVyYWxseSBiZSAtMSBm b3IgdHlwZXMgdGhhdCBkbyBub3QgbmVlZCA8c3RydWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3Rm aWVsZD4uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcmNvbGxhdGlvbjwvc3RydWN0 ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5k PSJjYXRhbG9nLXBnLWNvbGxhdGlvbiI+PHN0cnVjdG5hbWU+cGdfY29sbGF0aW9uPC9zdHJ1Y3Ru YW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGRlZmluZWQgY29sbGF0aW9uIG9mIHRoZSB2YXJp YWJsZSwgb3IgemVybyBpZiB0aGUgdmFyaWFibGUgaXMKKyAgICAgICBub3Qgb2YgYSBjb2xsYXRh YmxlIGRhdGEgdHlwZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFyYWNsPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+YWNsaXRlbVtdPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgQWNjZXNzIHByaXZpbGVnZXM7IHNlZQorICAgICAgIDx4cmVmIGxpbmtlbmQ9 InNxbC1ncmFudCIvPiBhbmQKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtcmV2b2tlIi8+Cisg ICAgICAgZm9yIGRldGFpbHMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgogPC9jaGFw dGVyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2Rk bC5zZ21sCmluZGV4IDYyNmQzNTUxNGMuLjc1MzFkZTE3ZmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKQEAgLTUyOTgsNiArNTI5 OCwzNyBAQCBFWFBMQUlOIFNFTEVDVCBjb3VudCgqKSBGUk9NIG1lYXN1cmVtZW50IFdIRVJFIGxv Z2RhdGUgJmd0Oz0gREFURSAnMjAwOC0wMS0wMSc7CiAgICA8L3BhcmE+CiAgPC9zZWN0MT4KIAor ICA8c2VjdDEgaWQ9ImRkbC1zZXNzaW9uLXZhcmlhYmxlcyI+CisgICA8dGl0bGU+U2Vzc2lvbiBW YXJpYWJsZXM8L3RpdGxlPgorCisgICA8aW5kZXh0ZXJtIHpvbmU9ImRkbC1zZXNzaW9uLXZhcmlh YmxlcyI+CisgICAgPHByaW1hcnk+U2Vzc2lvbiB2YXJpYWJsZXM8L3ByaW1hcnk+CisgICA8L2lu ZGV4dGVybT4KKworICAgPGluZGV4dGVybT4KKyAgICA8cHJpbWFyeT5zZXNzaW9uIHZhcmlhYmxl PC9wcmltYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgorICAgIFNlc3Npb24gdmFy aWFibGVzIGFyZSBkYXRhYmFzZSBvYmplY3RzIHRoYXQgY2FuIGhvbGQgYSB2YWx1ZS4KKyAgICBT ZXNzaW9uIHZhcmlhYmxlcywgbGlrZSByZWxhdGlvbnMsIGV4aXN0IHdpdGhpbiBhIHNjaGVtYSBh bmQgdGhlaXIgYWNjZXNzCisgICAgaXMgY29udHJvbGxlZCB2aWEgPGNvbW1hbmQ+R1JBTlQ8L2Nv bW1hbmQ+IGFuZCA8Y29tbWFuZD5SRVZPS0U8L2NvbW1hbmQ+CisgICAgY29tbWFuZHMuICBBIHNl c3Npb24gdmFyaWFibGUgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlIDxjb21tYW5kPkNSRUFURQorICAg IFZBUklBQkxFPC9jb21tYW5kPiBjb21tYW5kLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAg ICBJbnNpZGUgYSBxdWVyeSBvciBhbiBleHByZXNzaW9uLCBhIHNlc3Npb24gdmFyaWFibGUgY2Fu IGJlCisgICAgPHF1b3RlPnNoYWRvd2VkPC9xdW90ZT4gYnkgYSBjb2x1bW4gd2l0aCB0aGUgc2Ft ZSBuYW1lLiAgU2ltaWxhcmx5LCB0aGUKKyAgICBuYW1lIG9mIGEgZnVuY3Rpb24gb3IgcHJvY2Vk dXJlIGFyZ3VtZW50IG9yIGEgUEwvcGdTUUwgdmFyaWFibGUgKHNlZQorICAgIDx4cmVmIGxpbmtl bmQ9InBscGdzcWwtZGVjbGFyYXRpb25zIi8+KSBjYW4gc2hhZG93IGEgc2Vzc2lvbiB2YXJpYWJs ZQorICAgIGluIHRoZSByb3V0aW5lJ3MgYm9keS4gIFN1Y2ggY29sbGlzaW9ucyBvZiBpZGVudGlm aWVycyBjYW4gYmUgcmVzb2x2ZWQKKyAgICBieSB1c2luZyBxdWFsaWZpZWQgaWRlbnRpZmllcnM6 IFNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBxdWFsaWZpZWQgd2l0aAorICAgIHRoZSBzY2hlbWEg bmFtZSwgY29sdW1ucyBjYW4gdXNlIHRhYmxlIGFsaWFzZXMsIHJvdXRpbmUgdmFyaWFibGVzIGNh biB1c2UKKyAgICBibG9jayBsYWJlbHMsIGFuZCByb3V0aW5lIGFyZ3VtZW50cyBjYW4gdXNlIHRo ZSByb3V0aW5lIG5hbWUuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9ImRk bC1vdGhlcnMiPgogICA8dGl0bGU+T3RoZXIgRGF0YWJhc2UgT2JqZWN0czwvdGl0bGU+CiAKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwv ZXZlbnQtdHJpZ2dlci5zZ21sCmluZGV4IDhlMDA5Y2NhMDUuLjE1YjJhZjk5ZGMgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2V2 ZW50LXRyaWdnZXIuc2dtbApAQCAtNDI0LDYgKzQyNCwxNCBAQAogICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBWQVJJQUJMRTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5BTFRFUiBWSUVXPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CkBAIC03MTIsNiArNzIw LDE0IEBACiAgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkNSRUFURSBWQVJJQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVklFVzwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgpAQCAtMTAwMCw2ICsxMDE2LDE0IEBACiAgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVkFSSUFCTEU8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+RFJPUCBWSUVXPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCBiMzlmOTdk YzhkLi5jM2M0ZmJiM2Q5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTI1NjQ3LDYgKzI1NjQ3LDE5IEBAIFNFTEVDVCBy ZWxuYW1lIEZST00gcGdfY2xhc3MgV0hFUkUgcGdfdGFibGVfaXNfdmlzaWJsZShvaWQpOwogICAg ICAgICBJcyB0eXBlIChvciBkb21haW4pIHZpc2libGUgaW4gc2VhcmNoIHBhdGg/CiAgICAgICAg PC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50 cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgor ICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfdmFyaWFibGVfaXNfdmlz aWJsZTwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5w Z192YXJpYWJsZV9pc192aXNpYmxlPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhcmlhYmxlPC9w YXJhbWV0ZXI+IDx0eXBlPm9pZDwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+Ym9vbGVh bjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBJ cyBzZXNzaW9uIHZhcmlhYmxlIHZpc2libGUgaW4gc2VhcmNoIHBhdGg/CisgICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8L3Rncm91cD4KICAg IDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dtbCBiL2RvYy9z cmMvc2dtbC9nbG9zc2FyeS5zZ21sCmluZGV4IDQwNWZlNmRjOGIuLmQ1ZjRiY2M2ZTAgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9nbG9z c2FyeS5zZ21sCkBAIC0xNjU0LDYgKzE2NTQsMjEgQEAKICAgIDwvZ2xvc3NkZWY+CiAgIDwvZ2xv c3NlbnRyeT4KIAorICA8Z2xvc3NlbnRyeSBpZD0iZ2xvc3Nhcnktc2Vzc2lvbi12YXJpYWJsZSI+ CisgICA8Z2xvc3N0ZXJtPlNlc3Npb24gdmFyaWFibGU8L2dsb3NzdGVybT4KKyAgIDxnbG9zc2Rl Zj4KKyAgICA8cGFyYT4KKyAgICAgQSBwZXJzaXN0ZW50IGRhdGFiYXNlIG9iamVjdCB0aGF0IGhv bGRzIGEgdmFsdWUgaW4gc2Vzc2lvbiBtZW1vcnkuICBUaGlzCisgICAgIHZhbHVlIGlzIHByaXZh dGUgdG8gZWFjaCBzZXNzaW9uIGFuZCBpcyByZWxlYXNlZCB3aGVuIHRoZSBzZXNzaW9uIGVuZHMu CisgICAgIFJlYWQgb3Igd3JpdGUgYWNjZXNzIHRvIHNlc3Npb24gdmFyaWFibGVzIGlzIGNvbnRy b2xsZWQgYnkgcHJpdmlsZWdlcywKKyAgICAgc2ltaWxhciB0byBvdGhlciBkYXRhYmFzZSBvYmpl Y3RzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24s IHNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtc2Vzc2lvbi12YXJpYWJsZXMiLz4uCisgICAgPC9wYXJh PgorICAgPC9nbG9zc2RlZj4KKyAgPC9nbG9zc2VudHJ5PgorCiAgIDxnbG9zc2VudHJ5IGlkPSJn bG9zc2FyeS1zaGFyZWQtbWVtb3J5Ij4KICAgIDxnbG9zc3Rlcm0+U2hhcmVkIG1lbW9yeTwvZ2xv c3N0ZXJtPgogICAgPGdsb3NzZGVmPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxm aWxlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IGY1YmU2Mzg4 NjcuLjJmNjdkZTNlMjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKQEAgLTQ3LDYgKzQ3LDcgQEAg Q29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3Rv cnkuCiA8IUVOVElUWSBhbHRlclR5cGUgICAgICAgICAgU1lTVEVNICJhbHRlcl90eXBlLnNnbWwi PgogPCFFTlRJVFkgYWx0ZXJVc2VyICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdXNlci5zZ21sIj4K IDwhRU5USVRZIGFsdGVyVXNlck1hcHBpbmcgICBTWVNURU0gImFsdGVyX3VzZXJfbWFwcGluZy5z Z21sIj4KKzwhRU5USVRZIGFsdGVyVmFyaWFibGUgICAgICBTWVNURU0gImFsdGVyX3ZhcmlhYmxl LnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJWaWV3ICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdmlldy5z Z21sIj4KIDwhRU5USVRZIGFuYWx5emUgICAgICAgICAgICBTWVNURU0gImFuYWx5emUuc2dtbCI+ CiA8IUVOVElUWSBiZWdpbiAgICAgICAgICAgICAgU1lTVEVNICJiZWdpbi5zZ21sIj4KQEAgLTk5 LDYgKzEwMCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGlu IHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgY3JlYXRlVHlwZSAgICAgICAgIFNZU1RFTSAiY3Jl YXRlX3R5cGUuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVVc2VyICAgICAgICAgU1lTVEVNICJjcmVh dGVfdXNlci5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVzZXJNYXBwaW5nICBTWVNURU0gImNyZWF0 ZV91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVOVElUWSBjcmVhdGVWYXJpYWJsZSAgICAgU1lTVEVN ICJjcmVhdGVfdmFyaWFibGUuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVWaWV3ICAgICAgICAgU1lT VEVNICJjcmVhdGVfdmlldy5zZ21sIj4KIDwhRU5USVRZIGRlYWxsb2NhdGUgICAgICAgICBTWVNU RU0gImRlYWxsb2NhdGUuc2dtbCI+CiA8IUVOVElUWSBkZWNsYXJlICAgICAgICAgICAgU1lTVEVN ICJkZWNsYXJlLnNnbWwiPgpAQCAtMTQ3LDYgKzE0OSw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNh YmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJvcFR5 cGUgICAgICAgICAgIFNZU1RFTSAiZHJvcF90eXBlLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXIg ICAgICAgICAgIFNZU1RFTSAiZHJvcF91c2VyLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXJNYXBw aW5nICAgIFNZU1RFTSAiZHJvcF91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVOVElUWSBkcm9wVmFy aWFibGUgICAgICAgU1lTVEVNICJkcm9wX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgZHJvcFZp ZXcgICAgICAgICAgIFNZU1RFTSAiZHJvcF92aWV3LnNnbWwiPgogPCFFTlRJVFkgZW5kICAgICAg ICAgICAgICAgIFNZU1RFTSAiZW5kLnNnbWwiPgogPCFFTlRJVFkgZXhlY3V0ZSAgICAgICAgICAg IFNZU1RFTSAiZXhlY3V0ZS5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfZGVmYXVsdF9wcml2aWxlZ2VzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2RlZmF1 bHRfcHJpdmlsZWdlcy5zZ21sCmluZGV4IDg5YWFjZWM0ZmEuLjA0MWM3OGQ0MzIgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfZGVmYXVsdF9wcml2aWxlZ2VzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9kZWZhdWx0X3ByaXZpbGVnZXMuc2dtbApAQCAtNTEsNiAr NTEsMTAgQEAgR1JBTlQgeyB7IFVTQUdFIHwgQ1JFQVRFIH0KICAgICBPTiBTQ0hFTUFTCiAgICAg VE8geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwv cmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXSBbIFdJVEggR1JBTlQgT1BUSU9OIF0KIAor R1JBTlQgeyBTRUxFQ1QgfCBVUERBVEUgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZB UklBQkxFUworICAgIFRPIHsgWyBHUk9VUCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiB8IFBVQkxJQyB9IFssIC4uLl0gWyBXSVRIIEdSQU5U IE9QVElPTiBdCisKIFJFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQogICAgIHsgeyBTRUxFQ1Qg fCBJTlNFUlQgfCBVUERBVEUgfCBERUxFVEUgfCBUUlVOQ0FURSB8IFJFRkVSRU5DRVMgfCBUUklH R0VSIHwgTUFJTlRBSU4gfQogICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQpAQCAt ODMsNiArODcsMTIgQEAgUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCiAgICAgT04gU0NIRU1B UwogICAgIEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJv bGVfbmFtZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQogICAgIFsgQ0FTQ0FERSB8 IFJFU1RSSUNUIF0KKworUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCisgICAgeyB7IFNFTEVD VCB8IFVQREFURSB9IFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklB QkxFUworICAgIEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FE RSB8IFJFU1RSSUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTE3 LDE0ICsxMjcsMTQgQEAgUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCiAgIDxwYXJhPgogICAg Q3VycmVudGx5LAogICAgb25seSB0aGUgcHJpdmlsZWdlcyBmb3Igc2NoZW1hcywgdGFibGVzIChp bmNsdWRpbmcgdmlld3MgYW5kIGZvcmVpZ24KLSAgIHRhYmxlcyksIHNlcXVlbmNlcywgZnVuY3Rp b25zLCBhbmQgdHlwZXMgKGluY2x1ZGluZyBkb21haW5zKSBjYW4gYmUKLSAgIGFsdGVyZWQuICBG b3IgdGhpcyBjb21tYW5kLCBmdW5jdGlvbnMgaW5jbHVkZSBhZ2dyZWdhdGVzIGFuZCBwcm9jZWR1 cmVzLgotICAgVGhlIHdvcmRzIDxsaXRlcmFsPkZVTkNUSU9OUzwvbGl0ZXJhbD4gYW5kIDxsaXRl cmFsPlJPVVRJTkVTPC9saXRlcmFsPiBhcmUKLSAgIGVxdWl2YWxlbnQgaW4gdGhpcyBjb21tYW5k LiAgKDxsaXRlcmFsPlJPVVRJTkVTPC9saXRlcmFsPiBpcyBwcmVmZXJyZWQKLSAgIGdvaW5nIGZv cndhcmQgYXMgdGhlIHN0YW5kYXJkIHRlcm0gZm9yIGZ1bmN0aW9ucyBhbmQgcHJvY2VkdXJlcyB0 YWtlbgotICAgdG9nZXRoZXIuICBJbiBlYXJsaWVyIFBvc3RncmVTUUwgcmVsZWFzZXMsIG9ubHkg dGhlCi0gICB3b3JkIDxsaXRlcmFsPkZVTkNUSU9OUzwvbGl0ZXJhbD4gd2FzIGFsbG93ZWQuICBJ dCBpcyBub3QgcG9zc2libGUgdG8gc2V0Ci0gICBkZWZhdWx0IHByaXZpbGVnZXMgZm9yIGZ1bmN0 aW9ucyBhbmQgcHJvY2VkdXJlcyBzZXBhcmF0ZWx5LikKKyAgIHRhYmxlcyksIHNlcXVlbmNlcywg ZnVuY3Rpb25zLCB0eXBlcyAoaW5jbHVkaW5nIGRvbWFpbnMpLCBhbmQgc2Vzc2lvbgorICAgdmFy aWFibGVzIGNhbiBiZSBhbHRlcmVkLiAgRm9yIHRoaXMgY29tbWFuZCwgZnVuY3Rpb25zIGluY2x1 ZGUgYWdncmVnYXRlcworICAgYW5kIHByb2NlZHVyZXMuICBUaGUgd29yZHMgPGxpdGVyYWw+RlVO Q1RJT05TPC9saXRlcmFsPiBhbmQKKyAgIDxsaXRlcmFsPlJPVVRJTkVTPC9saXRlcmFsPiBhcmUg ZXF1aXZhbGVudCBpbiB0aGlzIGNvbW1hbmQuCisgICAoPGxpdGVyYWw+Uk9VVElORVM8L2xpdGVy YWw+IGlzIHByZWZlcnJlZCBnb2luZyBmb3J3YXJkIGFzIHRoZSBzdGFuZGFyZAorICAgdGVybSBm b3IgZnVuY3Rpb25zIGFuZCBwcm9jZWR1cmVzIHRha2VuIHRvZ2V0aGVyLiAgSW4gZWFybGllciBQ b3N0Z3JlU1FMCisgICByZWxlYXNlcywgb25seSB0aGUgd29yZCA8bGl0ZXJhbD5GVU5DVElPTlM8 L2xpdGVyYWw+IHdhcyBhbGxvd2VkLiAgSXQgaXMgbm90CisgICBwb3NzaWJsZSB0byBzZXQgZGVm YXVsdCBwcml2aWxlZ2VzIGZvciBmdW5jdGlvbnMgYW5kIHByb2NlZHVyZXMgc2VwYXJhdGVseS4p CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kODc1NzBlN2Q4Ci0tLSAvZGV2 L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCkBAIC0wLDAg KzEsMTc4IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNnbWwKK1Bv c3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWFsdGVydmFy aWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWFsdGVydmFyaWFibGUiPgorICA8cHJpbWFy eT5BTFRFUiBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxpbmRleHRlcm0+ CisgIDxwcmltYXJ5PnNlc3Npb24gdmFyaWFibGU8L3ByaW1hcnk+CisgIDxzZWNvbmRhcnk+YWx0 ZXJpbmc8L3NlY29uZGFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50 cnl0aXRsZT5BTFRFUiBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9t YW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZt aXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIg VkFSSUFCTEU8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPgorICAgY2hhbmdlIHRoZSBkZWZpbml0 aW9uIG9mIGEgc2Vzc2lvbiB2YXJpYWJsZQorICA8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2 PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQUxURVIgVkFSSUFCTEUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBPV05FUiBUTyB7IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPiB8IENV UlJFTlRfUk9MRSB8IENVUlJFTlRfVVNFUiB8IFNFU1NJT05fVVNFUiB9CitBTFRFUiBWQVJJQUJM RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFN RSBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X25hbWU8L3JlcGxhY2VhYmxl PgorQUxURVIgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBTRVQgU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdf c2NoZW1hPC9yZXBsYWNlYWJsZT4KKzwvc3lub3BzaXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKwor IDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFRoZSA8Y29tbWFuZD5BTFRFUiBWQVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZCBjaGFuZ2VzIHRo ZSBkZWZpbml0aW9uIG9mIGFuCisgICBleGlzdGluZyBzZXNzaW9uIHZhcmlhYmxlLiBUaGVyZSBh cmUgc2V2ZXJhbCBzdWJmb3JtczoKKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT48bGl0ZXJhbD5PV05FUjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBjaGFuZ2VzIHRoZSBvd25lciBvZiB0 aGUgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5S RU5BTUU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGlzIGZvcm0gY2hhbmdlcyB0aGUgbmFtZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZS4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1vdmVzIHRo ZSBzZXNzaW9uIHZhcmlhYmxlIGludG8gYW5vdGhlciBzY2hlbWEuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+Cisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIE9ubHkgdGhlIG93bmVyIG9yIGEgc3VwZXJ1c2VyIGlz IGFsbG93ZWQgdG8gYWx0ZXIgYSBzZXNzaW9uIHZhcmlhYmxlLgorICAgSW4gb3JkZXIgdG8gbW92 ZSBhIHNlc3Npb24gdmFyaWFibGUgZnJvbSBvbmUgc2NoZW1hIHRvIGFub3RoZXIsIHRoZSB1c2Vy CisgICBtdXN0IGFsc28gaGF2ZSB0aGUgPGxpdGVyYWw+Q1JFQVRFPC9saXRlcmFsPiBwcml2aWxl Z2Ugb24gdGhlIG5ldyBzY2hlbWEgKG9yCisgICBiZSBhIHN1cGVydXNlcikuCisKKyAgIEluIG9y ZGVyIHRvIG1vdmUgdGhlIHNlc3Npb24gdmFyaWFibGUgb3duZXJzaGlwIGZyb20gb25lIHJvbGUg dG8gYW5vdGhlciwKKyAgIHRoZSB1c2VyIG11c3QgYWxzbyBiZSBhIGRpcmVjdCBvciBpbmRpcmVj dCBtZW1iZXIgb2YgdGhlIG5ldworICAgb3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVzdCBo YXZlIHRoZSA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHByaXZpbGVnZQorICAgb24gdGhlIHNl c3Npb24gdmFyaWFibGUncyBzY2hlbWEgKG9yIGJlIGEgc3VwZXJ1c2VyKS4gVGhlc2UgcmVzdHJp Y3Rpb25zCisgICBlbmZvcmNlIHRoYXQgYWx0ZXJpbmcgdGhlIG93bmVyIGRvZXNuJ3QgZG8gYW55 dGhpbmcgeW91IGNvdWxkbid0IGRvIGJ5CisgICBkcm9wcGluZyBhbmQgcmVjcmVhdGluZyB0aGUg c2Vzc2lvbiB2YXJpYWJsZS4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgPHZhcmlhYmxl bGlzdD4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuYW1lIChwb3NzaWJseSBzY2hlbWEtcXVhbGlm aWVkKSBvZiB0aGUgZXhpc3Rpbmcgc2Vzc2lvbiB2YXJpYWJsZQorICAgICAgICB0byBhbHRlci4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXcgbmFtZSBmb3IgdGhlIHNlc3Npb24gdmFy aWFibGUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHVzZXIgbmFtZSBvZiB0aGUgbmV3 IG93bmVyIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwv bGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3NjaGVtYTwvcmVw bGFjZWFibGU+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAg ICBUaGUgbmV3IHNjaGVtYSBmb3IgdGhlIHNlc3Npb24gdmFyaWFibGUuCisgICAgICAgPC9wYXJh PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJs ZWxpc3Q+CisgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRs ZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW5hbWUgYSBzZXNzaW9uIHZh cmlhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVkFSSUFCTEUgZm9vIFJFTkFNRSBUTyBi b287Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBjaGFu Z2UgdGhlIG93bmVyIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlIDxsaXRlcmFsPmJvbzwvbGl0ZXJh bD4gdG8KKyAgIDxsaXRlcmFsPmpvZTwvbGl0ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBWQVJJQUJMRSBib28gT1dORVIgVE8gam9lOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgVG8gY2hhbmdlIHRoZSBzY2hlbWEgb2YgdGhlIHNlc3Npb24gdmFy aWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPiB0bworICAgPGxpdGVyYWw+cHJpdmF0ZTwvbGl0 ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBWQVJJQUJMRSBib28gU0VUIFNDSEVNQSBw cml2YXRlOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAg IFNlc3Npb24gdmFyaWFibGVzIGFuZCB0aGlzIGNvbW1hbmQgaW4gcGFydGljdWxhciBhcmUgYSBQ b3N0Z3JlU1FMIGV4dGVuc2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2Vj dDEgaWQ9InNxbC1hbHRlcnZhcmlhYmxlLXNlZS1hbHNvIj4KKyAgPHRpdGxlPlNlZSBBbHNvPC90 aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBs aW5rZW5kPSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYg bGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+Cisg PC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Nv bW1lbnQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCmluZGV4IDViNDNjNTZi MTMuLjIxY2Q4MDgxOGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCkBAIC02NSw2ICs2NSw3IEBAIENP TU1FTlQgT04KICAgVFJBTlNGT1JNIEZPUiA8cmVwbGFjZWFibGU+dHlwZV9uYW1lPC9yZXBsYWNl YWJsZT4gTEFOR1VBR0UgPHJlcGxhY2VhYmxlPmxhbmdfbmFtZTwvcmVwbGFjZWFibGU+IHwKICAg VFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBs YWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3Jl cGxhY2VhYmxlPiB8CiAgIFRZUEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVj dF9uYW1lPC9yZXBsYWNlYWJsZT4gfAorICBWQVJJQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFZJRVcgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4KIH0gSVMgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RyaW5nX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiB8 IE5VTEwgfQogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zY2hlbWEuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5zZ21sCmluZGV4IGVkNjkyOThjY2Mu LmE4MzRjODc2YmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5zZ21sCkBAIC0xMDMsOSAr MTAzLDEwIEBAIENSRUFURSBTQ0hFTUEgSUYgTk9UIEVYSVNUUyBBVVRIT1JJWkFUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwCiAgICAgICAgIHNjaGVtYS4gQ3VycmVu dGx5LCBvbmx5IDxjb21tYW5kPkNSRUFURQogICAgICAgICBUQUJMRTwvY29tbWFuZD4sIDxjb21t YW5kPkNSRUFURSBWSUVXPC9jb21tYW5kPiwgPGNvbW1hbmQ+Q1JFQVRFCiAgICAgICAgIElOREVY PC9jb21tYW5kPiwgPGNvbW1hbmQ+Q1JFQVRFIFNFUVVFTkNFPC9jb21tYW5kPiwgPGNvbW1hbmQ+ Q1JFQVRFCi0gICAgICAgIFRSSUdHRVI8L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5HUkFOVDwvY29t bWFuZD4gYXJlIGFjY2VwdGVkIGFzIGNsYXVzZXMKLSAgICAgICAgd2l0aGluIDxjb21tYW5kPkNS RUFURSBTQ0hFTUE8L2NvbW1hbmQ+LiBPdGhlciBraW5kcyBvZiBvYmplY3RzIG1heQotICAgICAg ICBiZSBjcmVhdGVkIGluIHNlcGFyYXRlIGNvbW1hbmRzIGFmdGVyIHRoZSBzY2hlbWEgaXMgY3Jl YXRlZC4KKyAgICAgICAgVFJJR0dFUjwvY29tbWFuZD4sIDxjb21tYW5kPkdSQU5UPC9jb21tYW5k PiBhbmQgPGNvbW1hbmQ+Q1JFQVRFCisgICAgICAgIFZBUklBQkxFPC9jb21tYW5kPiBhcmUgYWNj ZXB0ZWQgYXMgY2xhdXNlcyB3aXRoaW4gPGNvbW1hbmQ+Q1JFQVRFCisgICAgICAgIFNDSEVNQTwv Y29tbWFuZD4uIE90aGVyIGtpbmRzIG9mIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgaW4gc2VwYXJh dGUKKyAgICAgICAgY29tbWFuZHMgYWZ0ZXIgdGhlIHNjaGVtYSBpcyBjcmVhdGVkLgogICAgICAg IDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uZWMxNjVhYjk2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxNTEgQEAKKzwhLS0KK2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+ CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJtIHpvbmU9 InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNSRUFURSBWQVJJQUJMRTwvcHJpbWFy eT4KKyA8L2luZGV4dGVybT4KKworIDxpbmRleHRlcm0+CisgIDxwcmltYXJ5PnNlc3Npb24gdmFy aWFibGU8L3ByaW1hcnk+CisgIDxzZWNvbmRhcnk+ZGVmaW5pbmc8L3NlY29uZGFyeT4KKyA8L2lu ZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5DUkVBVEUgVkFSSUFCTEU8 L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2lu Zm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgor CisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkNSRUFURSBWQVJJQUJMRTwvcmVmbmFtZT4KKyAg PHJlZnB1cnBvc2U+ZGVmaW5lIGEgc2Vzc2lvbiB2YXJpYWJsZTwvcmVmcHVycG9zZT4KKyA8L3Jl Zm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitDUkVBVEUgVkFSSUFC TEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFf dHlwZTwvcmVwbGFjZWFibGU+IF0gWyBDT0xMQVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2xsYXRpb248L3JlcGxhY2VhYmxlPiBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3Bz aXNkaXY+CisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxw YXJhPgorICAgVGhlIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZCBj cmVhdGVzIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgIFNlc3Npb24gdmFyaWFibGVzLCBsaWtlIHJl bGF0aW9ucywgZXhpc3Qgd2l0aGluIGEgc2NoZW1hIGFuZCB0aGVpciBhY2Nlc3MgaXMKKyAgIGNv bnRyb2xsZWQgdmlhIHRoZSBjb21tYW5kcyA8Y29tbWFuZD5HUkFOVDwvY29tbWFuZD4gYW5kIDxj b21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSB2 YWx1ZSBvZiBhIHNlc3Npb24gdmFyaWFibGUgaXMgbG9jYWwgdG8gdGhlIGN1cnJlbnQgc2Vzc2lv bi4gIFJldHJpZXZpbmcKKyAgIGEgc2Vzc2lvbiB2YXJpYWJsZSdzIHZhbHVlIHJldHVybnMgTlVM TCwgdW5sZXNzIGl0cyB2YWx1ZSBpcyBzZXQgdG8KKyAgIHNvbWV0aGluZyBlbHNlIGluIHRoZSBj dXJyZW50IHNlc3Npb24gd2l0aCBhIDxjb21tYW5kPkxFVDwvY29tbWFuZD4gY29tbWFuZC4KKyAg IFRoZSBjb250ZW50IG9mIGEgc2Vzc2lvbiB2YXJpYWJsZSBpcyBub3QgdHJhbnNhY3Rpb25hbC4g VGhpcyBpcyB0aGUgc2FtZSBhcworICAgcmVndWxhciB2YXJpYWJsZXMgaW4gcHJvY2VkdXJhbCBs YW5ndWFnZXMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFNlc3Npb24gdmFyaWFibGVzIGFy ZSByZXRyaWV2ZWQgYnkgdGhlIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4KKyAgIGNvbW1hbmQu ICBUaGVpciB2YWx1ZSBpcyBzZXQgd2l0aCB0aGUgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPiBjb21t YW5kLgorICA8L3BhcmE+CisKKyAgPG5vdGU+CisgICA8cGFyYT4KKyAgICBTZXNzaW9uIHZhcmlh YmxlcyBjYW4gYmUgPHF1b3RlPnNoYWRvd2VkPC9xdW90ZT4gYnkgb3RoZXIgaWRlbnRpZmllcnMu CisgICAgRm9yIGRldGFpbHMsIHNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtc2Vzc2lvbi12YXJpYWJs ZXMiLz4uCisgICA8L3BhcmE+CisgIDwvbm90ZT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3Qx PgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKworICAg PHZhcmxpc3RlbnRyeSAgaWQ9InNxbC1jcmVhdGV2YXJpYWJsZS1pZi1ub3QtZXhpc3RzIj4KKyAg ICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFuIGVycm9yIGlmIHRoZSBu YW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQgaW4KKyAgICAgIHRoaXMgY2Fz ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxlLW5hbWUiPgorICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lLCBvcHRpb25hbGx5 IHNjaGVtYS1xdWFsaWZpZWQsIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtY3JlYXRldmFyaWFibGUtZGF0YV90eXBlIj4KKyAgICA8dGVybT48cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lLCBvcHRpb25hbGx5IHNjaGVt YS1xdWFsaWZpZWQsIG9mIHRoZSBkYXRhIHR5cGUgb2YgdGhlIHNlc3Npb24KKyAgICAgIHZhcmlh YmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldmFyaWFibGUtY29sbGF0ZSI+CisgICAg PHRlcm0+PGxpdGVyYWw+Q09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9yZXBsYWNlYWJs ZT48L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgPGxpdGVyYWw+Q09MTEFURTwvbGl0ZXJhbD4gY2xhdXNlIGFzc2lnbnMgYSBjb2xsYXRpb24g dG8gdGhlIHNlc3Npb24KKyAgICAgIHZhcmlhYmxlICh3aGljaCBtdXN0IGJlIG9mIGEgY29sbGF0 YWJsZSBkYXRhIHR5cGUpLiAgSWYgbm90IHNwZWNpZmllZCwKKyAgICAgIHRoZSBkYXRhIHR5cGUn cyBkZWZhdWx0IGNvbGxhdGlvbiBpcyB1c2VkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+ CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBV c2UgdGhlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IGNvbW1hbmQgdG8gcmVtb3Zl IGEgc2Vzc2lvbgorICAgdmFyaWFibGUuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJl ZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgQ3JlYXRl IGFuIGRhdGUgc2Vzc2lvbiB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRlcmFsPjoKKzxwcm9n cmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGRhdGU7CitMRVQgdmFyMSA9IGN1 cnJlbnRfZGF0ZTsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3Rp dGxlPgorCisgIDxwYXJhPgorICAgVGhlIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFu ZD4gY29tbWFuZCBpcyBhCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IGV4dGVuc2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAg IDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48L21lbWJlcj4KKyAg IDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8 L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9w X3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWJk YjM1NjBmMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJs ZS5zZ21sCkBAIC0wLDAgKzEsMTE3IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFy aWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlk PSJzcWwtZHJvcHZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1kcm9wdmFyaWFibGUi PgorICA8cHJpbWFyeT5EUk9QIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisg PGluZGV4dGVybT4KKyAgPHByaW1hcnk+c2Vzc2lvbiB2YXJpYWJsZTwvcHJpbWFyeT4KKyAgPHNl Y29uZGFyeT5yZW1vdmluZzwvc2Vjb25kYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+ CisgIDxyZWZlbnRyeXRpdGxlPkRST1AgVkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52 b2xudW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVt ZW50czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZu YW1lPkRST1AgVkFSSUFCTEU8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPnJlbW92ZSBhIHNlc3Np b24gdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lz ZGl2PgorPHN5bm9wc2lzPgorRFJPUCBWQVJJQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIENBU0NBREUg fCBSRVNUUklDVCBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2Vj dDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFu ZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAg IEEgc2Vzc2lvbiB2YXJpYWJsZSBjYW4gb25seSBiZSByZW1vdmVkIGJ5IGl0cyBvd25lciBvciBh IHN1cGVydXNlci4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBFWElTVFM8L2xpdGVyYWw+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEbyBub3QgdGhyb3cgYW4gZXJyb3IgaWYg dGhlIHNlc3Npb24gdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90aWNlIGlzCisgICAgICBp c3N1ZWQgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lLCBvcHRpb25hbGx5IHNjaGVtYS1xdWFs aWZpZWQsIG9mIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgQXV0b21hdGljYWxseSBkcm9wIG9iamVjdHMgdGhhdCBkZXBlbmQgb24gdGhl IHNlc3Npb24gdmFyaWFibGUgKHN1Y2ggYXMKKyAgICAgIHZpZXdzKSwgYW5kIGluIHR1cm4gYWxs IG9iamVjdHMgdGhhdCBkZXBlbmQgb24gdGhvc2Ugb2JqZWN0cworICAgICAgKHNlZSA8eHJlZiBs aW5rZW5kPSJkZGwtZGVwZW5kIi8+KS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJh bD5SRVNUUklDVDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFJlZnVzZSB0byBkcm9wIHRoZSBzZXNzaW9uIHZhcmlhYmxlIGlmIGFueSBvYmplY3Rz IGRlcGVuZCBvbiBpdC4gIFRoaXMgaXMKKyAgICAgIHRoZSBkZWZhdWx0LgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4K KyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgor CisgIDxwYXJhPgorICAgVG8gcmVtb3ZlIHRoZSBzZXNzaW9uIHZhcmlhYmxlIDxsaXRlcmFsPnZh cjE8L2xpdGVyYWw+OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEUk9QIFZBUklBQkxFIHZhcjE7Cis8 L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8 dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+ RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZCBpcyBhCisgICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+IGV4dGVuc2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+ CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxp c3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFy aWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZh cmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3Jl ZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9ncmFudC5zZ21sCmluZGV4IDk5OWY2NTdkNWMuLjc4ZmYxMGZjZjUgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2dyYW50LnNnbWwKQEAgLTEwMSw2ICsxMDEsMTIgQEAgR1JBTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8gPHJlcGxhY2UK ICAgICBbIFdJVEggeyBBRE1JTiB8IElOSEVSSVQgfCBTRVQgfSB7IE9QVElPTiB8IFRSVUUgfCBG QUxTRSB9IF0KICAgICBbIEdSQU5URUQgQlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IF0KIAorR1JBTlQgeyBTRUxFQ1QgfCBV UERBVEUgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNlYWJs ZT52YXJpYWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgICAgIHwgQUxMIFZBUklB QkxFUyBJTiBTQ0hFTUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXSB9CisgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdS QU5UIE9QVElPTiBdCisgICAgWyBHUkFOVEVEIEJZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBdCisKIDxwaHJhc2U+d2hlcmUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFj ZWFibGU+IGNhbiBiZTo8L3BocmFzZT4KIAogICAgIFsgR1JPVVAgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sCmlu ZGV4IDhkZjQ5MjI4MWEuLjYyNmMwMjMxZDAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv cmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbApAQCAtMTM3LDYg KzEzNywxMyBAQCBSRVZPS0UgWyB7IEFETUlOIHwgSU5IRVJJVCB8IFNFVCB9IE9QVElPTiBGT1Ig XQogICB8IENVUlJFTlRfUk9MRQogICB8IENVUlJFTlRfVVNFUgogICB8IFNFU1NJT05fVVNFUgor CitSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KKyAgICB7IHsgU0VMRUNUIHwgVVBEQVRFIH0g WywgLi4uXSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9CisgICAgT04gVkFSSUFCTEUgPHJlcGxhY2Vh YmxlPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgfCBBTEwgVkFS SUFCTEVTIElOIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIH0KKyAgICBGUk9NIHsgWyBHUk9VUCBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiB8IFBVQkxJQyB9 IFssIC4uLl0KKyAgICBbIENBU0NBREUgfCBSRVNUUklDVCBdCiA8L3N5bm9wc2lzPgogIDwvcmVm c3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAppbmRleCBmZjg1YWNlODNmLi4yNTU3OGYzOTQ2 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZmVyZW5jZS5zZ21sCkBAIC03NSw2ICs3NSw3IEBACiAgICAmYWx0ZXJUeXBlOwogICAg JmFsdGVyVXNlcjsKICAgICZhbHRlclVzZXJNYXBwaW5nOworICAgJmFsdGVyVmFyaWFibGU7CiAg ICAmYWx0ZXJWaWV3OwogICAgJmFuYWx5emU7CiAgICAmYmVnaW47CkBAIC0xMjcsNiArMTI4LDcg QEAKICAgICZjcmVhdGVUeXBlOwogICAgJmNyZWF0ZVVzZXI7CiAgICAmY3JlYXRlVXNlck1hcHBp bmc7CisgICAmY3JlYXRlVmFyaWFibGU7CiAgICAmY3JlYXRlVmlldzsKICAgICZkZWFsbG9jYXRl OwogICAgJmRlY2xhcmU7CkBAIC0xNzUsNiArMTc3LDcgQEAKICAgICZkcm9wVHlwZTsKICAgICZk cm9wVXNlcjsKICAgICZkcm9wVXNlck1hcHBpbmc7CisgICAmZHJvcFZhcmlhYmxlOwogICAgJmRy b3BWaWV3OwogICAgJmVuZDsKICAgICZleGVjdXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKaW5kZXggMTU4 OWE3NWZkNS4uN2E5MGZjZmM0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtl ZmlsZQorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCkBAIC00NSw2ICs0NSw3IEBA IE9CSlMgPSBcCiAJcGdfc2hkZXBlbmQubyBcCiAJcGdfc3Vic2NyaXB0aW9uLm8gXAogCXBnX3R5 cGUubyBcCisJcGdfdmFyaWFibGUubyBcCiAJc3RvcmFnZS5vIFwKIAl0b2FzdGluZy5vCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2FjbGNoay5jCmluZGV4IGE0NGNjZWUzYjYuLjY5NjhiMWU2ZWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xj aGsuYwpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlw ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5k cy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAtMjkwLDYgKzI5MSw5IEBAIHJlc3RyaWN0X2Fu ZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2YWlsX2dvcHRpb25zLCBib29s IGFsbF9wcml2cywKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKIAkJCXdob2xlX21hc2sg PSBBQ0xfQUxMX1JJR0hUU19QQVJBTUVURVJfQUNMOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNU X1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0 eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBpbGVy IHF1aWV0ICovCkBAIC01MzQsNiArNTM4LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRTdG10 ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19QQVJBTUVURVJfQUNM OwogCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMg Zm9yIHBhcmFtZXRlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ YWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0g Z2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzZXNzaW9uIHZhcmlh YmxlIik7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgc3RtdC0+b2JqdHlwZSk7CkBA IC02MzksNiArNjQ3LDkgQEAgRXhlY0dyYW50U3RtdF9vaWRzKEludGVybmFsR3JhbnQgKmlzdG10 KQogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgogCQkJRXhlY0dyYW50X1BhcmFtZXRlcihp c3RtdCk7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlFeGVjR3JhbnRf Y29tbW9uKGlzdG10LCBWYXJpYWJsZVJlbGF0aW9uSWQsIEFDTF9BTExfUklHSFRTX1ZBUklBQkxF LCBOVUxMKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpc3RtdC0+b2JqdHlwZSk7 CkBAIC04MjksNiArODQwLDE4IEBAIG9iamVjdE5hbWVzVG9PaWRzKE9iamVjdFR5cGUgb2JqdHlw ZSwgTGlzdCAqb2JqbmFtZXMsIGJvb2wgaXNfZ3JhbnQpCiAJCQkJCW9iamVjdHMgPSBsYXBwZW5k X29pZChvYmplY3RzLCBwYXJhbWV0ZXJJZCk7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CisJCQlmb3JlYWNoKGNlbGwsIG9iam5hbWVzKQorCQkJeworCQkJCVJhbmdl VmFyICAgKnZhcnZhciA9IChSYW5nZVZhciAqKSBsZmlyc3QoY2VsbCk7CisJCQkJT2lkCQkJcmVs T2lkOworCisJCQkJcmVsT2lkID0gTG9va3VwVmFyaWFibGUodmFydmFyLT5zY2hlbWFuYW1lLAor CQkJCQkJCQkJCXZhcnZhci0+cmVsbmFtZSwKKwkJCQkJCQkJCQlmYWxzZSk7CisJCQkJb2JqZWN0 cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIHJlbE9pZCk7CisJCQl9CisJCQlicmVhazsKIAkJZGVm YXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVk IiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC05MTgsNiArOTQxLDMyIEBAIG9iamVjdHNJblNj aGVtYVRvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm5zcG5hbWVzKQogCQkJCQl0YWJs ZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2Fz ZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJeworCQkJCQlTY2FuS2V5RGF0YSBrZXk7CisJCQkJCVJl bGF0aW9uCXJlbDsKKwkJCQkJVGFibGVTY2FuRGVzYyBzY2FuOworCQkJCQlIZWFwVHVwbGUJdHVw bGU7CisKKwkJCQkJU2NhbktleUluaXQoJmtleSwKKwkJCQkJCQkJQW51bV9wZ192YXJpYWJsZV92 YXJuYW1lc3BhY2UsCisJCQkJCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJ CQkJCQkJT2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJCQkJCXJlbCA9IHRhYmxl X29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlzY2FuID0g dGFibGVfYmVnaW5zY2FuX2NhdGFsb2cocmVsLCAxLCAma2V5KTsKKworCQkJCQl3aGlsZSAoKHR1 cGxlID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkK KwkJCQkJeworCQkJCQkJT2lkCQkJb2lkID0gKChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVCh0dXBs ZSkpLT5vaWQ7CisKKwkJCQkJCW9iamVjdHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCBvaWQpOwor CQkJCQl9CisKKwkJCQkJdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJCQkJdGFibGVfY2xvc2UocmVs LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCX0KKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJ Lyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdy YW50U3RtdC5vYmp0eXBlOiAlZCIsCkBAIC0xMDc3LDYgKzExMjYsMTAgQEAgRXhlY0FsdGVyRGVm YXVsdFByaXZpbGVnZXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJEZWZhdWx0UHJpdmls ZWdlc1N0bXQgKnMKIAkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfU0NIRU1BOwog CQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9y IHNjaGVtYSIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJYWxsX3By aXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0gZ2V0dGV4 dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzZXNzaW9uIHZhcmlhYmxlIik7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3Jh bnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgYWN0aW9uLT5vYmp0eXBlKTsKQEAgLTEy NjgsNiArMTMyMSwxMiBAQCBTZXREZWZhdWx0QUNMKEludGVybmFsRGVmYXVsdEFDTCAqaWFjbHMp CiAJCQkJdGhpc19wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfU0NIRU1BOwogCQkJYnJlYWs7 CiAKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlvYmp0eXBlID0gREVGQUNMT0JKX1ZBUklB QkxFOworCQkJaWYgKGlhY2xzLT5hbGxfcHJpdnMgJiYgdGhpc19wcml2aWxlZ2VzID09IEFDTF9O T19SSUdIVFMpCisJCQkJdGhpc19wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7 CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBv YmplY3QgdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+b2JqdHlwZSk7CkBAIC0xNTExLDYg KzE1NzAsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9sZWlkLCBPaWQgY2xhc3Np ZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJCWlhY2xzLm9i anR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOworCQkJY2FzZSBERUZBQ0xPQkpfVkFS SUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQlicmVhazsK IAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJlICovCiAJCQkJZWxvZyhFUlJP UiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQiLApAQCAtMTU3MSw2ICsxNjMzLDkg QEAgUmVtb3ZlUm9sZUZyb21PYmplY3RBQ0woT2lkIHJvbGVpZCwgT2lkIGNsYXNzaWQsIE9pZCBv YmppZCkKIAkJCWNhc2UgUGFyYW1ldGVyQWNsUmVsYXRpb25JZDoKIAkJCQlpc3RtdC5vYmp0eXBl ID0gT0JKRUNUX1BBUkFNRVRFUl9BQ0w7CiAJCQkJYnJlYWs7CisJCQljYXNlIFZhcmlhYmxlUmVs YXRpb25JZDoKKwkJCQlpc3RtdC5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCWJyZWFr OwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBvYmplY3QgY2xhc3Mg JXUiLCBjbGFzc2lkKTsKIAkJCQlicmVhazsKQEAgLTI4MTAsNiArMjg3NSw5IEBAIGFjbGNoZWNr X2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBP QkpFQ1RfVFlQRToKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQg Zm9yIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToK KwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlc3Npb24g dmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJ CQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdmlldyAlcyIpOwog CQkJCQkJYnJlYWs7CkBAIC0yOTIxLDYgKzI5ODksOSBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1 bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1RZUEU6CiAJ CQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3duZXIgb2YgdHlwZSAlcyIpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4 dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHNlc3Npb24gdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJy ZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzA2OSw2ICszMTQw LDggQEAgcGdfYWNsbWFzayhPYmplY3RUeXBlIG9ianR5cGUsIE9pZCBvYmplY3Rfb2lkLCBBdHRy TnVtYmVyIGF0dG51bSwgT2lkIHJvbGVpZCwKIAkJCXJldHVybiBBQ0xfTk9fUklHSFRTOwogCQlj YXNlIE9CSkVDVF9UWVBFOgogCQkJcmV0dXJuIG9iamVjdF9hY2xtYXNrKFR5cGVSZWxhdGlvbklk LCBvYmplY3Rfb2lkLCByb2xlaWQsIG1hc2ssIGhvdyk7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJcmV0dXJuIG9iamVjdF9hY2xtYXNrKFZhcmlhYmxlUmVsYXRpb25JZCwgb2JqZWN0X29p ZCwgcm9sZWlkLCBtYXNrLCBob3cpOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBvYmplY3QgdHlwZTogJWQiLAogCQkJCSAoaW50KSBvYmp0eXBlKTsKQEAgLTQzMzYs NiArNDQwOSwxMCBAQCBnZXRfdXNlcl9kZWZhdWx0X2FjbChPYmplY3RUeXBlIG9ianR5cGUsIE9p ZCBvd25lcklkLCBPaWQgbnNwX29pZCkKIAkJCWRlZmFjbG9ianR5cGUgPSBERUZBQ0xPQkpfTkFN RVNQQUNFOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlkZWZhY2xv Ymp0eXBlID0gREVGQUNMT0JKX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJ CXJldHVybiBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5k ZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggMDQ4OWNiYWJj Yi4uYzlkNjg2NjY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTY1LDEyICs2NSwx NCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50 LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZl bnRfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4dGVuc2lvbi5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3BvbGljeS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9z ZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdHJpZ2dlci5oIgpAQCAtMTQ0NCw2ICsxNDQ2LDEwIEBAIGRvRGVsZXRpb24oY29uc3Qg T2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBpbnQgZmxhZ3MpCiAJCQlSZW1vdmVQdWJsaWNhdGlvbkJ5 SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIFZhcmlhYmxlUmVsYXRp b25JZDoKKwkJCURyb3BWYXJpYWJsZUJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CisJCQlicmVhazsK KwogCQljYXNlIENhc3RSZWxhdGlvbklkOgogCQljYXNlIENvbGxhdGlvblJlbGF0aW9uSWQ6CiAJ CWNhc2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCAy ZjNkZWQ4YTBlLi5iZmRiNGRhMzMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL21l c29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTMyLDYg KzMyLDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGdfc2hkZXBlbmQuYycsCiAg ICdwZ19zdWJzY3JpcHRpb24uYycsCiAgICdwZ190eXBlLmMnLAorICAncGdfdmFyaWFibGUuYycs CiAgICdzdG9yYWdlLmMnLAogICAndG9hc3RpbmcuYycsCiApCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2Uu YwppbmRleCA0M2I3MDc2OTlkLi44NzUyZTE2NDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMK QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3BhcnNlci5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1vbi9oYXNoZm5fdW5zdGFibGUuaCIKICNp bmNsdWRlICJmdW5jYXBpLmgiCkBAIC05NzEsNiArOTcyLDY5IEBAIFJlbGF0aW9uSXNWaXNpYmxl RXh0KE9pZCByZWxpZCwgYm9vbCAqaXNfbWlzc2luZykKIAlyZXR1cm4gdmlzaWJsZTsKIH0KIAor LyoKKyAqIFZhcmlhYmxlSXNWaXNpYmxlCisgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgYSB2YXJpYWJs ZSAoaWRlbnRpZmllZCBieSBPSUQpIGlzIHZpc2libGUgaW4gdGhlCisgKgkJY3VycmVudCBzZWFy Y2ggcGF0aC4gVmlzaWJsZSBtZWFucyAid291bGQgYmUgZm91bmQgYnkgc2VhcmNoaW5nCisgKgkJ Zm9yIHRoZSB1bnF1YWxpZmllZCB2YXJpYWJsZSBuYW1lIi4KKyAqLworYm9vbAorVmFyaWFibGVJ c1Zpc2libGUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQl2YXJ0dXA7CisJRm9ybV9wZ192YXJp YWJsZSB2YXJmb3JtOworCU9pZAkJCXZhcm5hbWVzcGFjZTsKKwlib29sCQl2aXNpYmxlOworCisJ dmFydHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZh cmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHZhcnR1cCkpCisJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciBzZXNzaW9uIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCXZh cmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHZhcnR1cCk7CisKKwlyZWNvbXB1 dGVOYW1lc3BhY2VQYXRoKCk7CisKKwkvKgorCSAqIFF1aWNrIGNoZWNrOiBpZiBpdCBhaW4ndCBp biB0aGUgcGF0aCBhdCBhbGwsIGl0IGFpbid0IHZpc2libGUuIEl0ZW1zIGluCisJICogdGhlIHN5 c3RlbSBuYW1lc3BhY2UgYXJlIHN1cmVseSBpbiB0aGUgcGF0aCBhbmQgc28gd2UgbmVlZG4ndCBl dmVuIGRvCisJICogbGlzdF9tZW1iZXJfb2lkKCkgZm9yIHRoZW0uCisJICovCisJdmFybmFtZXNw YWNlID0gdmFyZm9ybS0+dmFybmFtZXNwYWNlOworCWlmICh2YXJuYW1lc3BhY2UgIT0gUEdfQ0FU QUxPR19OQU1FU1BBQ0UgJiYKKwkJIWxpc3RfbWVtYmVyX29pZChhY3RpdmVTZWFyY2hQYXRoLCB2 YXJuYW1lc3BhY2UpKQorCQl2aXNpYmxlID0gZmFsc2U7CisJZWxzZQorCXsKKwkJLyoKKwkJICog SWYgaXQgaXMgaW4gdGhlIHBhdGgsIGl0IG1pZ2h0IHN0aWxsIG5vdCBiZSB2aXNpYmxlOyBpdCBj b3VsZCBiZQorCQkgKiBoaWRkZW4gYnkgYW5vdGhlciB2YXJpYWJsZSBvZiB0aGUgc2FtZSBuYW1l IGVhcmxpZXIgaW4gdGhlIHBhdGguIFNvCisJCSAqIHdlIG11c3QgZG8gYSBzbG93IGNoZWNrIGZv ciBjb25mbGljdGluZyByZWxhdGlvbnMuCisJCSAqLworCQljaGFyCSAgICp2YXJuYW1lID0gTmFt ZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKwkJTGlzdENlbGwgICAqbDsKKworCQl2aXNpYmxlID0g ZmFsc2U7CisJCWZvcmVhY2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJT2lkCQkJbmFt ZXNwYWNlSWQgPSBsZmlyc3Rfb2lkKGwpOworCisJCQlpZiAobmFtZXNwYWNlSWQgPT0gdmFybmFt ZXNwYWNlKQorCQkJeworCQkJCS8qIEZvdW5kIGl0IGZpcnN0IGluIHBhdGggKi8KKwkJCQl2aXNp YmxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChPaWRJc1ZhbGlkKGdldF92YXJu YW1lX3ZhcmlkKHZhcm5hbWUsIG5hbWVzcGFjZUlkKSkpCisJCQl7CisJCQkJLyogRm91bmQgc29t ZXRoaW5nIGVsc2UgZmlyc3QgaW4gcGF0aCAqLworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQor CisJUmVsZWFzZVN5c0NhY2hlKHZhcnR1cCk7CisKKwlyZXR1cm4gdmlzaWJsZTsKK30KIAogLyoK ICAqIFR5cGVuYW1lR2V0VHlwaWQKQEAgLTMyNzQsNiArMzMzOCw2NiBAQCBUU0NvbmZpZ0lzVmlz aWJsZUV4dChPaWQgY2ZnaWQsIGJvb2wgKmlzX21pc3NpbmcpCiAJcmV0dXJuIHZpc2libGU7CiB9 CiAKKy8qCisgKiBSZXR1cm5zIG9pZCBvZiBzZXNzaW9uIHZhcmlhYmxlIHNwZWNpZmllZCBieSBw b3NzaWJseSBxdWFsaWZpZWQgaWRlbnRpZmllci4KKyAqCisgKiBJZiBub3QgZm91bmQsIHJldHVy bnMgSW52YWxpZE9pZCBpZiBtaXNzaW5nX29rLCBlbHNlIHRocm93cyBlcnJvci4KKyAqLworT2lk CitMb29rdXBWYXJpYWJsZShjb25zdCBjaGFyICpuc3BuYW1lLAorCQkJICAgY29uc3QgY2hhciAq dmFybmFtZSwKKwkJCSAgIGJvb2wgbWlzc2luZ19vaykKK3sKKwlPaWQJCQluYW1lc3BhY2VJZDsK KwlPaWQJCQl2YXJvaWQgPSBJbnZhbGlkT2lkOworCUxpc3RDZWxsICAgKmw7CisKKwlpZiAobnNw bmFtZSkKKwl7CisJCW5hbWVzcGFjZUlkID0gTG9va3VwRXhwbGljaXROYW1lc3BhY2UobnNwbmFt ZSwgbWlzc2luZ19vayk7CisKKwkJLyogaWYgbnNwbmFtZSBpcyBhIGtub3duIG5hbWVzcGFjZSwg dGhlIHZhcmlhYmxlIG11c3QgYmUgdGhlcmUgKi8KKwkJaWYgKE9pZElzVmFsaWQobmFtZXNwYWNl SWQpKQorCQl7CisJCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLCBB bnVtX3BnX3ZhcmlhYmxlX29pZCwKKwkJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0odmFybmFtZSks CisJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCQl9CisJfQorCWVs c2UKKwl7CisJCS8qIGl0ZXJhdGUgb3ZlciB0aGUgc2NoZW1hcyBvbiB0aGUgc2VhcmNoX3BhdGgg Ki8KKwkJcmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJCWZvcmVhY2gobCwgYWN0aXZlU2Vh cmNoUGF0aCkKKwkJeworCQkJbmFtZXNwYWNlSWQgPSBsZmlyc3Rfb2lkKGwpOworCisJCQl2YXJv aWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLCBBbnVtX3BnX3ZhcmlhYmxlX29p ZCwKKwkJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkJCQkgT2JqZWN0 SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJCQlpZiAoT2lkSXNWYWxpZCh2YXJvaWQpKQor CQkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKHZhcm9pZCkgJiYgIW1pc3Np bmdfb2spCisJeworCQlpZiAobnNwbmFtZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coInNlc3Npb24gdmFy aWFibGUgXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQluc3BuYW1lLCB2YXJuYW1l KSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VO REVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJzZXNzaW9uIHZhcmlhYmxlIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsCisJCQkJCQkJdmFybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdmFyb2lk OworfQogCiAvKgogICogRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lCkBAIC01MDc1LDMgKzUxOTks MTQgQEAgcGdfaXNfb3RoZXJfdGVtcF9zY2hlbWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JF VFVSTl9CT09MKGlzT3RoZXJUZW1wTmFtZXNwYWNlKG9pZCkpOwogfQorCitEYXR1bQorcGdfdmFy aWFibGVfaXNfdmlzaWJsZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCW9pZCA9IFBHX0dF VEFSR19PSUQoMCk7CisKKwlpZiAoIVNlYXJjaFN5c0NhY2hlRXhpc3RzMShWQVJJQUJMRU9JRCwg T2JqZWN0SWRHZXREYXR1bShvaWQpKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVS Tl9CT09MKFZhcmlhYmxlSXNWaXNpYmxlKG9pZCkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYwppbmRleCA4NWE3YjdlNjQxLi5lZTcwZWVlZWQ0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29i amVjdGFkZHJlc3MuYwpAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNf dGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVm cmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAtNjM2LDYgKzYz NywyMCBAQCBzdGF0aWMgY29uc3QgT2JqZWN0UHJvcGVydHlUeXBlIE9iamVjdFByb3BlcnR5W10g PQogCQlPQkpFQ1RfVVNFUl9NQVBQSU5HLAogCQlmYWxzZQogCX0sCisJeworCQkic2Vzc2lvbiB2 YXJpYWJsZSIsCisJCVZhcmlhYmxlUmVsYXRpb25JZCwKKwkJVmFyaWFibGVPaWRJbmRleElkLAor CQlWQVJJQUJMRU9JRCwKKwkJVkFSSUFCTEVOQU1FTlNQLAorCQlBbnVtX3BnX3ZhcmlhYmxlX29p ZCwKKwkJQW51bV9wZ192YXJpYWJsZV92YXJuYW1lLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5h bWVzcGFjZSwKKwkJQW51bV9wZ192YXJpYWJsZV92YXJvd25lciwKKwkJQW51bV9wZ192YXJpYWJs ZV92YXJhY2wsCisJCU9CSkVDVF9WQVJJQUJMRSwKKwkJdHJ1ZQorCX0KIH07CiAKIC8qCkBAIC04 MzEsNiArODQ2LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlwZV9tYXAKIAl9LAog CXsKIAkJInN0YXRpc3RpY3Mgb2JqZWN0IiwgT0JKRUNUX1NUQVRJU1RJQ19FWFQKKwl9LAorCXsK KwkJInNlc3Npb24gdmFyaWFibGUiLCBPQkpFQ1RfVkFSSUFCTEUKIAl9CiB9OwogCkBAIC04NTYs NiArODc0LDcgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX2F0dHJk ZWYoT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQkJCQkJCQkJYm9vbCBtaXNzaW5nX29rKTsKIHN0 YXRpYyBPYmplY3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc190eXBlKE9iamVjdFR5cGUgb2Jq dHlwZSwKIAkJCQkJCQkJCQkJIFR5cGVOYW1lICp0eXBlbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsK K3N0YXRpYyBPYmplY3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShMaXN0ICpv YmplY3QsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0 X2FkZHJlc3Nfb3BjZihPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQkJCQkJ CQkJIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2Fk ZHJlc3Nfb3BmX21lbWJlcihPYmplY3RUeXBlIG9ianR5cGUsCkBAIC0xMTI2LDYgKzExNDUsOSBA QCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJ CQkJCQkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJCQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7 CiAJCQkJYnJlYWs7CisJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQlhZGRyZXNzID0gZ2V0 X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKGNhc3ROb2RlKExpc3QsIG9iamVjdCksIG1pc3Npbmdf b2spOworCQkJCWJyZWFrOwogCQkJCS8qIG5vIGRlZmF1bHQsIHRvIGxldCBjb21waWxlciB3YXJu IGFib3V0IG1pc3NpbmcgY2FzZSAqLwogCQl9CiAKQEAgLTIwMDAsMTYgKzIwMjIsMjAgQEAgZ2V0 X29iamVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJ Y2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJ CQlicmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2 YXJpYWJsZXMiOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1z ZygidW5yZWNvZ25pemVkIGRlZmF1bHQgQUNMIG9iamVjdCB0eXBlIFwiJWNcIiIsIG9ianR5cGUp LAotCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwg XCIlY1wiLCBcIiVjXCIsIFwiJWNcIi4iLAorCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5 cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLiIs CiAJCQkJCQkJIERFRkFDTE9CSl9SRUxBVElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1NFUVVFTkNF LAogCQkJCQkJCSBERUZBQ0xPQkpfRlVOQ1RJT04sCiAJCQkJCQkJIERFRkFDTE9CSl9UWVBFLAot CQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFKSkpOworCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQ QUNFLAorCQkJCQkJCSBERUZBQ0xPQkpfVkFSSUFCTEUpKSk7CiAJfQogCiAJLyoKQEAgLTIwOTMs NiArMjExOSwyNCBAQCB0ZXh0YXJyYXlfdG9fc3RydmFsdWVsaXN0KEFycmF5VHlwZSAqYXJyKQog CXJldHVybiBsaXN0OwogfQogCisvKgorICogRmluZCB0aGUgT2JqZWN0QWRkcmVzcyBmb3IgYSBz ZXNzaW9uIHZhcmlhYmxlCisgKi8KK3N0YXRpYyBPYmplY3RBZGRyZXNzCitnZXRfb2JqZWN0X2Fk ZHJlc3NfdmFyaWFibGUoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCit7CisJT2JqZWN0 QWRkcmVzcyBhZGRyZXNzOworCWNoYXIJICAgKm5zcG5hbWUgPSBOVUxMOworCWNoYXIJICAgKnZh cm5hbWUgPSBOVUxMOworCisJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBWYXJpYWJsZVJlbGF0 aW9uSWQsIEludmFsaWRPaWQpOworCisJRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKG9iamVjdCwg Jm5zcG5hbWUsICZ2YXJuYW1lKTsKKwlhZGRyZXNzLm9iamVjdElkID0gTG9va3VwVmFyaWFibGUo bnNwbmFtZSwgdmFybmFtZSwgbWlzc2luZ19vayk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKwog LyoKICAqIFNRTC1jYWxsYWJsZSB2ZXJzaW9uIG9mIGdldF9vYmplY3RfYWRkcmVzcwogICovCkBA IC0yMjg3LDYgKzIzMzEsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05fQVJH UykKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoK IAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJb2Jq bm9kZSA9IChOb2RlICopIG5hbWU7CiAJCQlicmVhazsKIAkJY2FzZSBPQkpFQ1RfQUNDRVNTX01F VEhPRDoKQEAgLTI0NTgsNiArMjUwMyw3IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJv bGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBlLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2Ug T0JKRUNUX1NUQVRJU1RJQ19FWFQ6CiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2Fz ZSBPQkpFQ1RfVFNDT05GSUdVUkFUSU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCWlm ICghb2JqZWN0X293bmVyY2hlY2soYWRkcmVzcy5jbGFzc0lkLCBhZGRyZXNzLm9iamVjdElkLCBy b2xlaWQpKQogCQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwK IAkJCQkJCQkgICBOYW1lTGlzdFRvU3RyaW5nKGNhc3ROb2RlKExpc3QsIG9iamVjdCkpKTsKQEAg LTM0NDYsNiArMzQ5MiwzMiBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNl IFZhcmlhYmxlUmVsYXRpb25JZDoKKwkJCXsKKwkJCQljaGFyCSAgICpuc3BuYW1lOworCQkJCUhl YXBUdXBsZQl0dXA7CisJCQkJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCisJCQkJdHVwID0g U2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2Jq ZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCQkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgJXUiLAorCQkJCQkJ IG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBH RVRTVFJVQ1QodHVwKTsKKworCQkJCWlmIChWYXJpYWJsZUlzVmlzaWJsZShvYmplY3QtPm9iamVj dElkKSkKKwkJCQkJbnNwbmFtZSA9IE5VTEw7CisJCQkJZWxzZQorCQkJCQluc3BuYW1lID0gZ2V0 X25hbWVzcGFjZV9uYW1lKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisKKwkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWZmZXIsIF8oInNlc3Npb24gdmFyaWFibGUgJXMiKSwKKwkJCQkJCQkJIHF1b3Rl X3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHZh cmZvcm0tPnZhcm5hbWUpKSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVh azsKKwkJCX0KKwogCQljYXNlIFRTUGFyc2VyUmVsYXRpb25JZDoKIAkJCXsKIAkJCQlIZWFwVHVw bGUJdHVwOwpAQCAtMzc5OCw2ICszODcwLDE2IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0 IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJCQkJCQkJCSBfKCJk ZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwK IAkJCQkJCQkJCQkgcm9sZW5hbWUpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JK X1ZBUklBQkxFOgorCQkJCQkJaWYgKG5zcG5hbWUpCisJCQkJCQkJYXBwZW5kU3RyaW5nSW5mbygm YnVmZmVyLAorCQkJCQkJCQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5ldyBzZXNzaW9u IHZhcmlhYmxlcyBiZWxvbmdpbmcgdG8gcm9sZSAlcyBpbiBzY2hlbWEgJXMiKSwKKwkJCQkJCQkJ CQkJIHJvbGVuYW1lLCBuc3BuYW1lKTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlhcHBlbmRTdHJpbmdJ bmZvKCZidWZmZXIsCisJCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNl c3Npb24gdmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIiksCisJCQkJCQkJCQkJCSByb2xl bmFtZSk7CisJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCS8qIHNob3VsZG4ndCBn ZXQgaGVyZSAqLwogCQkJCQkJaWYgKG5zcG5hbWUpCkBAIC00NjE0LDYgKzQ2OTYsMTAgQEAgZ2V0 T2JqZWN0VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBt aXNzaW5nX29rKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCAidHJhbnNmb3Jt Iik7CiAJCQlicmVhazsKIAorCQljYXNlIFZhcmlhYmxlUmVsYXRpb25JZDoKKwkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInNlc3Npb24gdmFyaWFibGUiKTsKKwkJCWJyZWFrOwor CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb2JqZWN0IGNsYXNzOiAl dSIsIG9iamVjdC0+Y2xhc3NJZCk7CiAJfQpAQCAtNTcyMCw2ICs1ODA2LDEwIEBAIGdldE9iamVj dElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAogCQkJCQkJCQkJCQkgICAiIG9uIHNjaGVtYXMiKTsK IAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgIiBvbiBzZXNzaW9uIHZh cmlhYmxlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJCQkJaWYgKG9iam5hbWUpCkBAIC01 OTYwLDYgKzYwNTAsMzMgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QsCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFZhcmlhYmxlUmVsYXRpb25J ZDoKKwkJCXsKKwkJCQljaGFyCSAgICpzY2hlbWE7CisJCQkJY2hhcgkgICAqdmFybmFtZTsKKwkJ CQlIZWFwVHVwbGUJdHVwOworCQkJCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKworCQkJCXR1 cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3Qt Pm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCQkJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzZXNzaW9uIHZhcmlhYmxlICV1IiwKKwkJ CQkJCSBvYmplY3QtPm9iamVjdElkKTsKKworCQkJCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJs ZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlzY2hlbWEgPSBnZXRfbmFtZXNwYWNlX25hbWVfb3Jf dGVtcCh2YXJmb3JtLT52YXJuYW1lc3BhY2UpOworCQkJCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZv cm0tPnZhcm5hbWUpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCAiJXMiLAorCQkJ CQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoc2NoZW1hLCB2YXJuYW1lKSk7CisKKwkJ CQlpZiAob2JqbmFtZSkKKwkJCQkJKm9iam5hbWUgPSBsaXN0X21ha2UyKHNjaGVtYSwgdmFybmFt ZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9iamVjdCBjbGFzczogJXUiLCBv YmplY3QtPmNsYXNzSWQpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf c2hkZXBlbmQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc2hkZXBlbmQuYwppbmRleCA3NTNh ZmI4ODQ1Li4xZWEzZDZkYjA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3No ZGVwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zaGRlcGVuZC5jCkBAIC00Niw2 ICs0Niw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19kaWN0LmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYWx0ZXIu aCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGVmcmVtLmgiCkBAIC0xNzE0LDYgKzE3MTUsNyBAQCBzaGRlcFJlYXNzaWduT3duZWRfT3duZXIo Rm9ybV9wZ19zaGRlcGVuZCBzZGVwRm9ybSwgT2lkIG5ld3JvbGUpCiAJCWNhc2UgRGF0YWJhc2VS ZWxhdGlvbklkOgogCQljYXNlIFRTQ29uZmlnUmVsYXRpb25JZDoKIAkJY2FzZSBUU0RpY3Rpb25h cnlSZWxhdGlvbklkOgorCQljYXNlIFZhcmlhYmxlUmVsYXRpb25JZDoKIAkJCUFsdGVyT2JqZWN0 T3duZXJfaW50ZXJuYWwoc2RlcEZvcm0tPmNsYXNzaWQsCiAJCQkJCQkJCQkgIHNkZXBGb3JtLT5v YmppZCwKIAkJCQkJCQkJCSAgbmV3cm9sZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3ZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjY1MTIxNDQwYQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYwpAQCAtMCwwICsxLDI1 NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfdmFyaWFibGUuYworICoJCXNlc3Np b24gdmFyaWFibGVzCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkJc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9kZXBlbmRlbmN5Lmgi CisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNw YWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbGxhdGlvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgor I2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgorCitzdGF0aWMgT2JqZWN0QWRkcmVzcyBjcmVhdGVfdmFyaWFibGUoY29uc3QgY2hhciAq dmFyTmFtZSwKKwkJCQkJCQkJCSBPaWQgdmFyTmFtZXNwYWNlLAorCQkJCQkJCQkJIE9pZCB2YXJU eXBlLAorCQkJCQkJCQkJIGludDMyIHZhclR5cG1vZCwKKwkJCQkJCQkJCSBPaWQgdmFyT3duZXIs CisJCQkJCQkJCQkgT2lkIHZhckNvbGxhdGlvbiwKKwkJCQkJCQkJCSBib29sIGlmX25vdF9leGlz dHMpOworCisKKy8qCisgKiBDcmVhdGVzIGVudHJ5IGluIHBnX3ZhcmlhYmxlIHRhYmxlCisgKi8K K3N0YXRpYyBPYmplY3RBZGRyZXNzCitjcmVhdGVfdmFyaWFibGUoY29uc3QgY2hhciAqdmFyTmFt ZSwKKwkJCQlPaWQgdmFyTmFtZXNwYWNlLAorCQkJCU9pZCB2YXJUeXBlLAorCQkJCWludDMyIHZh clR5cG1vZCwKKwkJCQlPaWQgdmFyT3duZXIsCisJCQkJT2lkIHZhckNvbGxhdGlvbiwKKwkJCQli b29sIGlmX25vdF9leGlzdHMpCit7CisJQWNsCQkgICAqdmFyYWNsOworCU5hbWVEYXRhCXZhcm5h bWU7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfdmFyaWFibGVdOworCURhdHVtCQl2YWx1ZXNbTmF0 dHNfcGdfdmFyaWFibGVdOworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCVR1cGxl RGVzYwl0dXBkZXNjOworCU9iamVjdEFkZHJlc3MgbXlzZWxmLAorCQkJCXJlZmVyZW5jZWQ7CisJ T2JqZWN0QWRkcmVzc2VzICphZGRyczsKKwlPaWQJCQl2YXJpZDsKKworCUFzc2VydCh2YXJOYW1l KTsKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXJOYW1lc3BhY2UpKTsKKwlBc3NlcnQoT2lkSXNWYWxp ZCh2YXJUeXBlKSk7CisJQXNzZXJ0KE9pZElzVmFsaWQodmFyT3duZXIpKTsKKworCXJlbCA9IHRh YmxlX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qCisJ ICogQ2hlY2sgZm9yIGR1cGxpY2F0ZXMuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHJlYWxseSBw cmV2ZW50CisJICogZHVwbGljYXRlcywgaXQncyBoZXJlIGp1c3QgdG8gcHJvdmlkZSBuaWNlciBl cnJvciBtZXNzYWdlIGluIGNvbW1vbgorCSAqIGNhc2UuIFRoZSByZWFsIHByb3RlY3Rpb24gaXMg dGhlIHVuaXF1ZSBrZXkgb24gdGhlIGNhdGFsb2cuCisJICovCisJaWYgKFNlYXJjaFN5c0NhY2hl RXhpc3RzMihWQVJJQUJMRU5BTUVOU1AsCisJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0odmFyTmFt ZSksCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSkpKQorCXsKKwkJaWYg KGlmX25vdF9leGlzdHMpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSBcIiVz XCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJCQl2YXJOYW1lKSkpOworCQllbHNl CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpF Q1QpLAorCQkJCQkgZXJybXNnKCJzZXNzaW9uIHZhcmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0 cyIsCisJCQkJCQkJdmFyTmFtZSkpKTsKKworCQl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVzczsKKwl9CisKKwltZW1zZXQo dmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9m KG51bGxzKSk7CisKKwluYW1lc3RyY3B5KCZ2YXJuYW1lLCB2YXJOYW1lKTsKKworCXZhcmlkID0g R2V0TmV3T2lkV2l0aEluZGV4KHJlbCwgVmFyaWFibGVPaWRJbmRleElkLCBBbnVtX3BnX3Zhcmlh YmxlX29pZCk7CisKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV9vaWQgLSAxXSA9IE9iamVjdElk R2V0RGF0dW0odmFyaWQpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWUgLSAxXSA9 IE5hbWVHZXREYXR1bSgmdmFybmFtZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFt ZXNwYWNlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSk7CisJdmFsdWVzW0Fu dW1fcGdfdmFyaWFibGVfdmFydHlwZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJUeXBlKTsK Kwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJ0eXBtb2QgLSAxXSA9IEludDMyR2V0RGF0dW0o dmFyVHlwbW9kKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJvd25lciAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bSh2YXJPd25lcik7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyY29s bGF0aW9uIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhckNvbGxhdGlvbik7CisKKwl2YXJhY2wg PSBnZXRfdXNlcl9kZWZhdWx0X2FjbChPQkpFQ1RfVkFSSUFCTEUsIHZhck93bmVyLAorCQkJCQkJ CQkgIHZhck5hbWVzcGFjZSk7CisJaWYgKHZhcmFjbCAhPSBOVUxMKQorCQl2YWx1ZXNbQW51bV9w Z192YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50ZXJHZXREYXR1bSh2YXJhY2wpOworCWVsc2UK KwkJbnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IHRydWU7CisKKwl0dXBkZXNj ID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCisJdHVwID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRl c2MsIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChyZWwsIHR1cCk7CisJQXNz ZXJ0KE9pZElzVmFsaWQodmFyaWQpKTsKKworCWFkZHJzID0gbmV3X29iamVjdF9hZGRyZXNzZXMo KTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlk KTsKKworCS8qIGRlcGVuZGVuY3kgb24gbmFtZXNwYWNlICovCisJT2JqZWN0QWRkcmVzc1NldChy ZWZlcmVuY2VkLCBOYW1lc3BhY2VSZWxhdGlvbklkLCB2YXJOYW1lc3BhY2UpOworCWFkZF9leGFj dF9vYmplY3RfYWRkcmVzcygmcmVmZXJlbmNlZCwgYWRkcnMpOworCisJLyogZGVwZW5kZW5jeSBv biB1c2VkIHR5cGUgKi8KKwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIFR5cGVSZWxhdGlv bklkLCB2YXJUeXBlKTsKKwlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlZmVyZW5jZWQsIGFk ZHJzKTsKKworCS8qIGRlcGVuZGVuY3kgb24gY29sbGF0aW9uICovCisJaWYgKE9pZElzVmFsaWQo dmFyQ29sbGF0aW9uKSAmJgorCQl2YXJDb2xsYXRpb24gIT0gREVGQVVMVF9DT0xMQVRJT05fT0lE KQorCXsKKwkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBDb2xsYXRpb25SZWxhdGlvbklk LCB2YXJDb2xsYXRpb24pOworCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlZmVyZW5jZWQs IGFkZHJzKTsKKwl9CisKKwlyZWNvcmRfb2JqZWN0X2FkZHJlc3NfZGVwZW5kZW5jaWVzKCZteXNl bGYsIGFkZHJzLCBERVBFTkRFTkNZX05PUk1BTCk7CisJZnJlZV9vYmplY3RfYWRkcmVzc2VzKGFk ZHJzKTsKKworCS8qIGRlcGVuZGVuY3kgb24gb3duZXIgKi8KKwlyZWNvcmREZXBlbmRlbmN5T25P d25lcihWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCB2YXJPd25lcik7CisKKwkvKiBkZXBlbmRl bmNpZXMgb24gcm9sZXMgbWVudGlvbmVkIGluIGRlZmF1bHQgQUNMICovCisJcmVjb3JkRGVwZW5k ZW5jeU9uTmV3QWNsKFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIDAsIHZhck93bmVyLCB2YXJh Y2wpOworCisJLyogZGVwZW5kZW5jeSBvbiBleHRlbnNpb24gKi8KKwlyZWNvcmREZXBlbmRlbmN5 T25DdXJyZW50RXh0ZW5zaW9uKCZteXNlbGYsIGZhbHNlKTsKKworCWhlYXBfZnJlZXR1cGxlKHR1 cCk7CisKKwkvKiBQb3N0IGNyZWF0aW9uIGhvb2sgZm9yIG5ldyBmdW5jdGlvbiAqLworCUludm9r ZU9iamVjdFBvc3RDcmVhdGVIb29rKFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIDApOworCisJ dGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBteXNlbGY7Cit9 CisKKy8qCisgKiBDcmVhdGVzIGEgbmV3IHZhcmlhYmxlCisgKgorICogVXNlZCBieSBDUkVBVEUg VkFSSUFCTEUgY29tbWFuZAorICovCitPYmplY3RBZGRyZXNzCitDcmVhdGVWYXJpYWJsZShQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNlc3Npb25WYXJTdG10ICpzdG10KQoreworCU9pZAkJCW5h bWVzcGFjZWlkOworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJ CXR5cG1vZDsKKwlPaWQJCQl2YXJvd25lciA9IEdldFVzZXJJZCgpOworCU9pZAkJCWNvbGxhdGlv bjsKKwlPaWQJCQl0eXBjb2xsYXRpb247CisJT2JqZWN0QWRkcmVzcyB2YXJpYWJsZTsKKworCW5h bWVzcGFjZWlkID0KKwkJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHN0bXQt PnZhcmlhYmxlLCBOb0xvY2ssIE5VTEwpOworCisJdHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRl LCBzdG10LT50eXBlTmFtZSwgJnR5cGlkLCAmdHlwbW9kKTsKKworCS8qIERpc2FsbG93IHBzZXVk b3R5cGVzICovCisJaWYgKGdldF90eXB0eXBlKHR5cGlkKSA9PSBUWVBUWVBFX1BTRVVETykKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwK KwkJCQkgZXJybXNnKCJzZXNzaW9uIHZhcmlhYmxlIGNhbm5vdCBiZSBwc2V1ZG8tdHlwZSAlcyIs CisJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCkpKSk7CisKKwlhY2xyZXN1bHQgPSBvYmplY3Rf YWNsY2hlY2soVHlwZVJlbGF0aW9uSWQsIHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsK KwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcl90eXBlKGFj bHJlc3VsdCwgdHlwaWQpOworCisJdHlwY29sbGF0aW9uID0gZ2V0X3R5cGNvbGxhdGlvbih0eXBp ZCk7CisKKwlpZiAoc3RtdC0+Y29sbENsYXVzZSkKKwkJY29sbGF0aW9uID0gTG9va3VwQ29sbGF0 aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCXN0bXQtPmNvbGxDbGF1c2UtPmNvbGxuYW1lLAorCQkJCQkJ CQkJc3RtdC0+Y29sbENsYXVzZS0+bG9jYXRpb24pOworCWVsc2UKKwkJY29sbGF0aW9uID0gdHlw Y29sbGF0aW9uOzsKKworCS8qIENvbXBsYWluIGlmIENPTExBVEUgaXMgYXBwbGllZCB0byBhbiB1 bmNvbGxhdGFibGUgdHlwZSAqLworCWlmIChPaWRJc1ZhbGlkKGNvbGxhdGlvbikgJiYgIU9pZElz VmFsaWQodHlwY29sbGF0aW9uKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJjb2xsYXRpb25zIGFyZSBub3Qg c3VwcG9ydGVkIGJ5IHR5cGUgJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUodHlwaWQpKSwKKwkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+Y29sbENsYXVzZS0+bG9jYXRpb24p KSk7CisKKwl2YXJpYWJsZSA9IGNyZWF0ZV92YXJpYWJsZShzdG10LT52YXJpYWJsZS0+cmVsbmFt ZSwKKwkJCQkJCQkgICBuYW1lc3BhY2VpZCwKKwkJCQkJCQkgICB0eXBpZCwKKwkJCQkJCQkgICB0 eXBtb2QsCisJCQkJCQkJICAgdmFyb3duZXIsCisJCQkJCQkJICAgY29sbGF0aW9uLAorCQkJCQkJ CSAgIHN0bXQtPmlmX25vdF9leGlzdHMpOworCisJZWxvZyhERUJVRzEsICJyZWNvcmQgZm9yIHNl c3Npb24gdmFyaWFibGUgXCIlc1wiIChvaWQ6JWQpIHdhcyBjcmVhdGVkIGluIHBnX3ZhcmlhYmxl IiwKKwkJIHN0bXQtPnZhcmlhYmxlLT5yZWxuYW1lLCB2YXJpYWJsZS5vYmplY3RJZCk7CisKKwkv KiBXZSB3YW50IFNlc3Npb25WYXJpYWJsZUNyZWF0ZVBvc3Rwcm9jZXNzIHRvIHNlZSB0aGUgY2F0 YWxvZyBjaGFuZ2VzLiAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwlyZXR1cm4g dmFyaWFibGU7Cit9CisKKy8qCisgKiBEcm9wIHZhcmlhYmxlIGJ5IE9JRCwgYW5kIHJlZ2lzdGVy IHRoZSBuZWVkZWQgc2Vzc2lvbiB2YXJpYWJsZQorICogY2xlYW51cC4KKyAqLwordm9pZAorRHJv cFZhcmlhYmxlQnlJZChPaWQgdmFyaWQpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0 dXA7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0 RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwlD YXRhbG9nVHVwbGVEZWxldGUocmVsLCAmdHVwLT50X3NlbGYpOworCisJUmVsZWFzZVN5c0NhY2hl KHR1cCk7CisKKwl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FsdGVyLmMKaW5kZXggNGY5OWViYjQ0Ny4uNjNmYTk5ZmFkMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5j CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19kaWN0LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3Rl bXBsYXRlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2FsdGVyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29sbGF0aW9uY21kcy5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKQEAgLTEzOSw2ICsxNDAsMTAgQEAgcmVwb3J0 X25hbWVzcGFjZV9jb25mbGljdChPaWQgY2xhc3NJZCwgY29uc3QgY2hhciAqbmFtZSwgT2lkIG5z cE9pZCkKIAkJCUFzc2VydChPaWRJc1ZhbGlkKG5zcE9pZCkpOwogCQkJbXNnZm10ID0gZ2V0dGV4 dF9ub29wKCJ0ZXh0IHNlYXJjaCBjb25maWd1cmF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyBp biBzY2hlbWEgXCIlc1wiIik7CiAJCQlicmVhazsKKwkJY2FzZSBWYXJpYWJsZVJlbGF0aW9uSWQ6 CisJCQlBc3NlcnQoT2lkSXNWYWxpZChuc3BPaWQpKTsKKwkJCW1zZ2ZtdCA9IGdldHRleHRfbm9v cCgic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMgaW4gc2NoZW1hIFwiJXNc IiIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQg b2JqZWN0IGNsYXNzOiAldSIsIGNsYXNzSWQpOwogCQkJYnJlYWs7CkBAIC00MTgsNiArNDIzLDcg QEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfVFNURU1Q TEFURToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1NVQlNDUklQ VElPTjoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJT2JqZWN0QWRkcmVzcyBh ZGRyZXNzOwogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CkBAIC01NjEsNiArNTY3LDcgQEAgRXhlY0Fs dGVyT2JqZWN0U2NoZW1hU3RtdChBbHRlck9iamVjdFNjaGVtYVN0bXQgKnN0bXQsCiAJCWNhc2Ug T0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1RfVFNQQVJTRVI6CiAJCWNhc2UgT0JK RUNUX1RTVEVNUExBVEU6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJewogCQkJCVJlbGF0 aW9uCWNhdGFsb2c7CiAJCQkJUmVsYXRpb24JcmVsYXRpb247CkBAIC02NDUsNiArNjUyLDcgQEAg QWx0ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BP aWQsCiAJCWNhc2UgVFNEaWN0aW9uYXJ5UmVsYXRpb25JZDoKIAkJY2FzZSBUU1RlbXBsYXRlUmVs YXRpb25JZDoKIAkJY2FzZSBUU0NvbmZpZ1JlbGF0aW9uSWQ6CisJCWNhc2UgVmFyaWFibGVSZWxh dGlvbklkOgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAKQEAgLTg3NSw2ICs4ODMsNyBA QCBFeGVjQWx0ZXJPd25lclN0bXQoQWx0ZXJPd25lclN0bXQgKnN0bXQpCiAJCWNhc2UgT0JKRUNU X1RBQkxFU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1Rf VFNDT05GSUdVUkFUSU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlSZWxh dGlvbglyZWxhdGlvbjsKIAkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJv cGNtZHMuYwppbmRleCA4NWVlYzdlMzk0Li4zY2NlMTdlOTJhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3Bj bWRzLmMKQEAgLTQ3Niw2ICs0NzYsMTAgQEAgZG9lc19ub3RfZXhpc3Rfc2tpcHBpbmcoT2JqZWN0 VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QpCiAJCQltc2cgPSBnZXR0ZXh0X25vb3AoInB1Ymxp Y2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmciKTsKIAkJCW5hbWUgPSBzdHJW YWwob2JqZWN0KTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCW1zZyA9 IGdldHRleHRfbm9vcCgic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNr aXBwaW5nIik7CisJCQluYW1lID0gTmFtZUxpc3RUb1N0cmluZyhjYXN0Tm9kZShMaXN0LCBvYmpl Y3QpKTsKKwkJCWJyZWFrOwogCiAJCWNhc2UgT0JKRUNUX0NPTFVNTjoKIAkJY2FzZSBPQkpFQ1Rf REFUQUJBU0U6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2Vy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggN2E1ZWQ2Yjk4 NS4uNmQ0MWFhN2VjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMjE1 Niw2ICsyMTU2LDggQEAgc3RyaW5naWZ5X2dyYW50X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBl KQogCQkJcmV0dXJuICJUQUJMRVNQQUNFIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJldHVy biAiVFlQRSI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJWQVJJQUJMRSI7 CiAJCQkvKiB0aGVzZSBjdXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJY2FzZSBPQkpFQ1RfQUND RVNTX01FVEhPRDoKIAkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpAQCAtMjIzOSw2ICsyMjQxLDgg QEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJCXJl dHVybiAiVEFCTEVTUEFDRVMiOwogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJcmV0dXJuICJUWVBF UyI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJWQVJJQUJMRVMiOwogCQkJ LyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19N RVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCmlu ZGV4IDU2MDcyNzNiZjkuLmMwMjZhYjVkY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAt OTIsNiArOTIsNyBAQCBTZWNMYWJlbFN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5 cGUpCiAJCWNhc2UgT0JKRUNUX1RTUEFSU0VSOgogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgog CQljYXNlIE9CSkVDVF9VU0VSX01BUFBJTkc6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJ cmV0dXJuIGZhbHNlOwogCiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAwYjJh NTI0NjNmLi5mMzU2NGU2MDE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNTEsNiAr NTEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2VfeGxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvdG9h c3RpbmcuaCIKQEAgLTY3MjMsNiArNjcyNCw3IEBAIEFUVHlwZWRUYWJsZVJlY3Vyc2lvbihMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKICAqIChwb3NzaWJs eSBuZXN0ZWQgc2V2ZXJhbCBsZXZlbHMgZGVlcCBpbiBjb21wb3NpdGUgdHlwZXMsIGFycmF5cywg ZXRjISkuCiAgKiBFdmVudHVhbGx5LCB3ZSdkIGxpa2UgdG8gcHJvcGFnYXRlIHRoZSBjaGVjayBv ciByZXdyaXRlIG9wZXJhdGlvbgogICogaW50byBzdWNoIHRhYmxlcywgYnV0IGZvciBub3csIGp1 c3QgZXJyb3Igb3V0IGlmIHdlIGZpbmQgYW55LgorICogQWxzbywgY2hlY2sgaWYgInR5cGVPaWQi IGlzIHVzZWQgYXMgdHlwZSBvZiBzb21lIHNlc3Npb24gdmFyaWFibGUuCiAgKgogICogQ2FsbGVy IHNob3VsZCBwcm92aWRlIGVpdGhlciB0aGUgYXNzb2NpYXRlZCByZWxhdGlvbiBvZiBhIHJvd3R5 cGUsCiAgKiBvciBhIHR5cGUgbmFtZSAobm90IGJvdGgpIGZvciB1c2UgaW4gdGhlIGVycm9yIG1l c3NhZ2UsIGlmIGFueS4KQEAgLTY3ODYsNiArNjc4OCw0NSBAQCBmaW5kX2NvbXBvc2l0ZV90eXBl X2RlcGVuZGVuY2llcyhPaWQgdHlwZU9pZCwgUmVsYXRpb24gb3JpZ1JlbGF0aW9uLAogCQkJY29u dGludWU7CiAJCX0KIAorCQkvKiBjaGVjayBpZiB0aGUgdHlwZSBpcyB1c2VkIGFzIHR5cGUgb2Yg c29tZSBzZXNzaW9uIHZhcmlhYmxlICovCisJCWlmIChwZ19kZXBlbmQtPmNsYXNzaWQgPT0gVmFy aWFibGVSZWxhdGlvbklkKQorCQl7CisJCQlPaWQJCQl2YXJpZCA9IHBnX2RlcGVuZC0+b2JqaWQ7 CisKKwkJCWlmIChvcmlnVHlwZU5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNhbm5v dCBhbHRlciB0eXBlIFwiJXNcIiBiZWNhdXNlIHNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wiIHVz ZXMgaXQiLAorCQkJCQkJCQlvcmlnVHlwZU5hbWUsCisJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFt ZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCQkJZ2V0X3Nl c3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCkpKSk7CisJCQllbHNlIGlmIChvcmlnUmVsYXRpb24t PnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX0NPTVBPU0lURV9UWVBFKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgdHlwZSBcIiVzXCIgYmVjYXVzZSBzZXNzaW9uIHZh cmlhYmxlIFwiJXMuJXNcIiB1c2VzIGl0IiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUob3JpZ1JlbGF0aW9uKSwKKwkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9u X3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCQlnZXRfc2Vzc2lvbl92YXJpYWJs ZV9uYW1lKHZhcmlkKSkpKTsKKwkJCWVsc2UgaWYgKG9yaWdSZWxhdGlvbi0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygi Y2Fubm90IGFsdGVyIGZvcmVpZ24gdGFibGUgXCIlc1wiIGJlY2F1c2Ugc2Vzc2lvbiB2YXJpYWJs ZSBcIiVzLiVzXCIgdXNlcyBpdCIsCisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKG9y aWdSZWxhdGlvbiksCisJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJp YWJsZV9uYW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCQkJZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFt ZSh2YXJpZCkpKSk7CisJCQllbHNlIGlmIChvcmlnUmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCQkJCSBvcmlnUmVsYXRpb24tPnJkX3JlbC0+cmVsa2lu ZCA9PSBSRUxLSU5EX01BVFZJRVcgfHwKKwkJCQkJIG9yaWdSZWxhdGlvbi0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJt c2coImNhbm5vdCBhbHRlciB0YWJsZSBcIiVzXCIgYmVjYXVzZSBzZXNzaW9uIHZhcmlhYmxlIFwi JXMuJXNcIiB1c2VzIGl0IiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUob3JpZ1Jl bGF0aW9uKSwKKwkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3ZhcmlhYmxl X25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCQlnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZh cmlkKSkpKTsKKworCQkJY29udGludWU7CisJCX0KKwogCQkvKiBFbHNlLCBpZ25vcmUgZGVwZW5k ZWVzIHRoYXQgYXJlbid0IHJlbGF0aW9ucyAqLwogCQlpZiAocGdfZGVwZW5kLT5jbGFzc2lkICE9 IFJlbGF0aW9uUmVsYXRpb25JZCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYTA0M2Zk NGM2Ni4uM2YyYzU5MGNlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJs ZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Ry aWdnZXIuaCIKICNpbmNsdWRlICJncmFtcGFyc2UuaCIKQEAgLTI5NSw4ICsyOTYsOCBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25zdHJhaW50c1NldFN0bXQgQ29weVN0bXQgQ3JlYXRl QXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNyZWF0ZURvbWFpblN0bXQgQ3JlYXRlRXh0ZW5zaW9u U3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRlT3BDbGFzc1N0bXQKIAkJQ3JlYXRlT3BGYW1pbHlT dG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0ZVBMYW5nU3RtdAotCQlDcmVhdGVTY2hlbWFTdG10 IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQgQ3JlYXRlVGFibGVTcGFj ZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3Jl aWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTZXNz aW9uVmFyU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdAorCQlDcmVhdGVUYWJsZVNwYWNl U3RtdCBDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZvcmVpZ25U YWJsZVN0bXQKIAkJQ3JlYXRlQXNzZXJ0aW9uU3RtdCBDcmVhdGVUcmFuc2Zvcm1TdG10IENyZWF0 ZVRyaWdTdG10IENyZWF0ZUV2ZW50VHJpZ1N0bXQKIAkJQ3JlYXRlVXNlclN0bXQgQ3JlYXRlVXNl ck1hcHBpbmdTdG10IENyZWF0ZVJvbGVTdG10IENyZWF0ZVBvbGljeVN0bXQKIAkJQ3JlYXRlZGJT dG10IERlY2xhcmVDdXJzb3JTdG10IERlZmluZVN0bXQgRGVsZXRlU3RtdCBEaXNjYXJkU3RtdCBE b1N0bXQKQEAgLTc5MCw4ICs3OTEsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVVFU0NB UEUgVU5CT1VOREVEIFVOQ09ORElUSU9OQUwgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04g VU5JUVVFIFVOS05PV04KIAlVTkxJU1RFTiBVTkxPR0dFRCBVTlRJTCBVUERBVEUgVVNFUiBVU0lO RwogCi0JVkFDVVVNIFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJD SEFSIFZBUklBRElDIFZBUllJTkcKLQlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFU SUxFCisJVkFDVVVNIFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJD SEFSIFZBUklBQkxFIFZBUklBQkxFUworCVZBUklBRElDIFZBUllJTkcgVkVSQk9TRSBWRVJTSU9O X1AgVklFVyBWSUVXUyBWT0xBVElMRQogCiAJV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9X IFdJVEggV0lUSElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAKQEAgLTEwNjEsNiArMTA2 Miw3IEBAIHN0bXQ6CiAJCQl8IENyZWF0ZVBvbGljeVN0bXQKIAkJCXwgQ3JlYXRlUExhbmdTdG10 CiAJCQl8IENyZWF0ZVNjaGVtYVN0bXQKKwkJCXwgQ3JlYXRlU2Vzc2lvblZhclN0bXQKIAkJCXwg Q3JlYXRlU2VxU3RtdAogCQkJfCBDcmVhdGVTdG10CiAJCQl8IENyZWF0ZVN1YnNjcmlwdGlvblN0 bXQKQEAgLTE2MDUsNiArMTYwNyw3IEBAIHNjaGVtYV9zdG10OgogCQkJfCBDcmVhdGVUcmlnU3Rt dAogCQkJfCBHcmFudFN0bXQKIAkJCXwgVmlld1N0bXQKKwkJCXwgQ3JlYXRlU2Vzc2lvblZhclN0 bXQKIAkJOwogCiAKQEAgLTUyMDIsNiArNTIwNSwzNCBAQCBjcmVhdGVfZXh0ZW5zaW9uX29wdF9p dGVtOgogCQkJCX0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVFUlkg OgorICoJCQkJQ1JFQVRFIFZBUklBQkxFIHZhcm5hbWUgW0FTXSB0eXBlCisgKgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCitDcmVhdGVTZXNzaW9uVmFyU3RtdDoKKwkJCUNSRUFURSBWQVJJQUJM RSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0X2NvbGxhdGVfY2xhdXNlCisJCQkJ eworCQkJCQlDcmVhdGVTZXNzaW9uVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNlc3Npb25W YXJTdG10KTsKKwkJCQkJbi0+dmFyaWFibGUgPSAkMzsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkNTsK KwkJCQkJbi0+Y29sbENsYXVzZSA9IChDb2xsYXRlQ2xhdXNlICopICQ2OworCQkJCQluLT5pZl9u b3RfZXhpc3RzID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IENS RUFURSBWQVJJQUJMRSBJRl9QIE5PVCBFWElTVFMgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVu YW1lIG9wdF9jb2xsYXRlX2NsYXVzZQorCQkJCXsKKwkJCQkJQ3JlYXRlU2Vzc2lvblZhclN0bXQg Km4gPSBtYWtlTm9kZShDcmVhdGVTZXNzaW9uVmFyU3RtdCk7CisJCQkJCW4tPnZhcmlhYmxlID0g JDY7CisJCQkJCW4tPnR5cGVOYW1lID0gJDg7CisJCQkJCW4tPmNvbGxDbGF1c2UgPSAoQ29sbGF0 ZUNsYXVzZSAqKSAkOTsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICog QUxURVIgRVhURU5TSU9OIG5hbWUgVVBEQVRFIFsgVE8gdmVyc2lvbiBdCkBAIC03MDA2LDYgKzcw MzcsNyBAQCBvYmplY3RfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9QIFNFQVJDSCBESUNUSU9O QVJZCQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0gg VEVNUExBVEUJCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CiAJCQl8IFRFWFRfUCBTRUFS Q0ggQ09ORklHVVJBVElPTgkJCXsgJCQgPSBPQkpFQ1RfVFNDT05GSUdVUkFUSU9OOyB9CisJCQl8 IFZBUklBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyoKQEAg LTc4ODIsNiArNzkxNCwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpzID0gJDI7 CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IFZBUklBQkxFIHF1YWxpZmllZF9uYW1lX2xpc3QK KwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9m KFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKKwkJ CQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqcyA9ICQyOworCQkJ CQkkJCA9IG47CisJCQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NIRU1BIG5hbWVfbGlzdAog CQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2Yo UHJpdlRhcmdldCkpOwpAQCAtNzkyNyw2ICs3OTY3LDE0IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJ CQkJCW4tPm9ianMgPSAkNTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJCXwgQUxMIFZBUklBQkxF UyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJp dlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUg PSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFS SUFCTEU7CisJCQkJCW4tPm9ianMgPSAkNTsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJOwogCiAK QEAgLTgxMjQsNiArODE3Miw3IEBAIGRlZmFjbF9wcml2aWxlZ2VfdGFyZ2V0OgogCQkJfCBTRVFV RU5DRVMJCXsgJCQgPSBPQkpFQ1RfU0VRVUVOQ0U7IH0KIAkJCXwgVFlQRVNfUAkJeyAkJCA9IE9C SkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1RfU0NIRU1BOyB9CisJCQl8 IFZBUklBQkxFUwkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIApAQCAtOTkwNiw2 ICs5OTU1LDI0IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9h cmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJ CSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFueV9uYW1lIFJF TkFNRSBUTyBuYW1lCisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1l U3RtdCk7CisJCQkJCW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9i amVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5uZXduYW1lID0gJDY7CisJCQkJCW4tPm1pc3Np bmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBBTFRFUiBW QVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJCXsKKwkJCQkJ UmVuYW1lU3RtdCAqbiA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQluLT5yZW5hbWVUeXBl ID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJCQkJ bi0+bmV3bmFtZSA9ICQ4OworCQkJCQluLT5taXNzaW5nX29rID0gdHJ1ZTsKKwkJCQkJJCQgPSAo Tm9kZSAqKW47CisJCQkJfQogCQk7CiAKIG9wdF9jb2x1bW46IENPTFVNTgpAQCAtMTAyNjcsNiAr MTAzMzQsMjQgQEAgQWx0ZXJPYmplY3RTY2hlbWFTdG10OgogCQkJCQluLT5taXNzaW5nX29rID0g ZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxF IGFueV9uYW1lIFNFVCBTQ0hFTUEgbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJPYmplY3RTY2hlbWFT dG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPYmplY3RTY2hlbWFTdG10KTsKKwkJCQkJbi0+b2JqZWN0 VHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJ CQkJCW4tPm5ld3NjaGVtYSA9ICQ2OworCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJ CSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgSUZfUCBFWElTVFMg YW55X25hbWUgU0VUIFNDSEVNQSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0 bXQgKm4gPSBtYWtlTm9kZShBbHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJCQluLT5vYmplY3RU eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJ CQkJbi0+bmV3c2NoZW1hID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOworCQkJCQkk JCA9IChOb2RlICopbjsKKwkJCQl9CiAJCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0x MDU0OCw2ICsxMDYzMywxNCBAQCBBbHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3Jl Z2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAJCQkJCW4tPm5ld293bmVyID0g JDY7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFu eV9uYW1lIE9XTkVSIFRPIFJvbGVTcGVjCisJCQkJeworCQkJCQlBbHRlck93bmVyU3RtdCAqbiA9 IG1ha2VOb2RlKEFsdGVyT3duZXJTdG10KTsKKwkJCQkJbi0+b2JqZWN0VHlwZSA9IE9CSkVDVF9W QVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJCQkJCW4tPm5ld293bmVy ID0gJDY7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJOwogCiAKQEAgLTE3ODc4LDYg KzE3OTcxLDggQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWQUxJREFURQogCQkJfCBWQUxJ REFUT1IKIAkJCXwgVkFMVUVfUAorCQkJfCBWQVJJQUJMRQorCQkJfCBWQVJJQUJMRVMKIAkJCXwg VkFSWUlORwogCQkJfCBWRVJTSU9OX1AKIAkJCXwgVklFVwpAQCAtMTg1MzMsNiArMTg2MjgsOCBA QCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFZBTFVFX1AKIAkJCXwgVkFMVUVTCiAJCQl8IFZB UkNIQVIKKwkJCXwgVkFSSUFCTEUKKwkJCXwgVkFSSUFCTEVTCiAJCQl8IFZBUklBRElDCiAJCQl8 IFZFUkJPU0UKIAkJCXwgVkVSU0lPTl9QCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRl eCBkNWMyYjJmZjBiLi4yZmJhOTBjOTVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK QEAgLTEwNyw2ICsxMDcsNyBAQCB0eXBlZGVmIHN0cnVjdAogCUxpc3QJICAgKmluZGV4ZXM7CQkv KiBDUkVBVEUgSU5ERVggaXRlbXMgKi8KIAlMaXN0CSAgICp0cmlnZ2VyczsJCS8qIENSRUFURSBU UklHR0VSIGl0ZW1zICovCiAJTGlzdAkgICAqZ3JhbnRzOwkJCS8qIEdSQU5UIGl0ZW1zICovCisJ TGlzdAkgICAqdmFyaWFibGVzOwkJLyogQ1JFQVRFIFZBUklBQkxFIGl0ZW1zICovCiB9IENyZWF0 ZVNjaGVtYVN0bXRDb250ZXh0OwogCiAKQEAgLTM5NjYsNiArMzk2Nyw3IEBAIHRyYW5zZm9ybUNy ZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyhMaXN0ICpzY2hlbWFFbHRzLCBjb25zdCBjaGFyICpzY2hl bWFOYW1lKQogCWN4dC5pbmRleGVzID0gTklMOwogCWN4dC50cmlnZ2VycyA9IE5JTDsKIAljeHQu Z3JhbnRzID0gTklMOworCWN4dC52YXJpYWJsZXMgPSBOSUw7CiAKIAkvKgogCSAqIFJ1biB0aHJv dWdoIGVhY2ggc2NoZW1hIGVsZW1lbnQgaW4gdGhlIHNjaGVtYSBlbGVtZW50IGxpc3QuIFNlcGFy YXRlCkBAIC00MDM0LDYgKzQwMzYsMTUgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3RtdEVsZW1l bnRzKExpc3QgKnNjaGVtYUVsdHMsIGNvbnN0IGNoYXIgKnNjaGVtYU5hbWUpCiAJCQkJY3h0Lmdy YW50cyA9IGxhcHBlbmQoY3h0LmdyYW50cywgZWxlbWVudCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNh c2UgVF9DcmVhdGVTZXNzaW9uVmFyU3RtdDoKKwkJCQl7CisJCQkJCUNyZWF0ZVNlc3Npb25WYXJT dG10ICplbHAgPSAoQ3JlYXRlU2Vzc2lvblZhclN0bXQgKikgZWxlbWVudDsKKworCQkJCQlzZXRT Y2hlbWFOYW1lKGN4dC5zY2hlbWFuYW1lLCAmZWxwLT52YXJpYWJsZS0+c2NoZW1hbmFtZSk7CisJ CQkJCWN4dC52YXJpYWJsZXMgPSBsYXBwZW5kKGN4dC52YXJpYWJsZXMsIGVsZW1lbnQpOworCQkJ CX0KKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIG5vZGUgdHlwZTogJWQiLAogCQkJCQkgKGludCkgbm9kZVRhZyhlbGVtZW50KSk7CkBAIC00 MDQ3LDYgKzQwNTgsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTY2hlbWFTdG10RWxlbWVudHMoTGlzdCAq c2NoZW1hRWx0cywgY29uc3QgY2hhciAqc2NoZW1hTmFtZSkKIAlyZXN1bHQgPSBsaXN0X2NvbmNh dChyZXN1bHQsIGN4dC5pbmRleGVzKTsKIAlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsIGN4 dC50cmlnZ2Vycyk7CiAJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBjeHQuZ3JhbnRzKTsK KwlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsIGN4dC52YXJpYWJsZXMpOwogCiAJcmV0dXJu IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggZmE2NmI4MDE3ZS4uY2U4ZGI3Y2RhNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFj ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19pbmhlcml0cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3RvYXN0aW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYWx0ZXIuaCIKICNpbmNs dWRlICJjb21tYW5kcy9hc3luYy5oIgpAQCAtMTgyLDYgKzE4Myw3IEBAIENsYXNzaWZ5VXRpbGl0 eUNvbW1hbmRBc1JlYWRPbmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBUX0NyZWF0ZVJhbmdl U3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVJvbGVTdG10OgogCQljYXNlIFRfQ3JlYXRlU2NoZW1hU3Rt dDoKKwkJY2FzZSBUX0NyZWF0ZVNlc3Npb25WYXJTdG10OgogCQljYXNlIFRfQ3JlYXRlU2VxU3Rt dDoKIAkJY2FzZSBUX0NyZWF0ZVN0YXRzU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVN0bXQ6CkBAIC0x Mzg2LDYgKzEzODgsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQl9CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9DcmVhdGVTZXNzaW9uVmFyU3RtdDoKKwkJ CQlhZGRyZXNzID0gQ3JlYXRlVmFyaWFibGUocHN0YXRlLCAoQ3JlYXRlU2Vzc2lvblZhclN0bXQg KikgcGFyc2V0cmVlKTsKKwkJCQlicmVhazsKKwogCQkJCS8qCiAJCQkJICogKioqKioqKioqKioq KiBvYmplY3QgY3JlYXRpb24gLyBkZXN0cnVjdGlvbiAqKioqKioqKioqKioqKgogCQkJCSAqLwpA QCAtMjMzOCw2ICsyMzQ0LDkgQEAgQWx0ZXJPYmplY3RUeXBlQ29tbWFuZFRhZyhPYmplY3RUeXBl IG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19FWFQ6CiAJCQl0YWcgPSBDTURUQUdf QUxURVJfU1RBVElTVElDUzsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJ CXRhZyA9IENNRFRBR19BTFRFUl9WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJ dGFnID0gQ01EVEFHX1VOS05PV047CiAJCQlicmVhazsKQEAgLTI2NDYsNiArMjY1NSw5IEBAIENy ZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgT0JKRUNUX1NUQVRJU1RJ Q19FWFQ6CiAJCQkJCXRhZyA9IENNRFRBR19EUk9QX1NUQVRJU1RJQ1M7CiAJCQkJCWJyZWFrOwor CQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQl0YWcgPSBDTURUQUdfRFJPUF9WQVJJQUJM RTsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJdGFnID0gQ01EVEFHX1VOS05PV047 CiAJCQl9CkBAIC0zMjIyLDYgKzMyMzQsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJz ZXRyZWUpCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFRfQ3JlYXRlU2Vzc2lvblZhclN0bXQ6 CisJCQl0YWcgPSBDTURUQUdfQ1JFQVRFX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVs dDoKIAkJCWVsb2coV0FSTklORywgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkg KGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9hY2wuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCBkN2IzOTE0MGIz Li41ZjgwYWY0ZjVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCkBAIC04NTAsNiArODUwLDEwIEBAIGFjbGRl ZmF1bHQoT2JqZWN0VHlwZSBvYmp0eXBlLCBPaWQgb3duZXJJZCkKIAkJCXdvcmxkX2RlZmF1bHQg PSBBQ0xfTk9fUklHSFRTOwogCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1BBUkFN RVRFUl9BQ0w7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9k ZWZhdWx0ID0gQUNMX05PX1JJR0hUUzsKKwkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hU U19WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBvYmplY3QgdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCXdvcmxkX2RlZmF1 bHQgPSBBQ0xfTk9fUklHSFRTOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC05NDcsNiAr OTUxLDkgQEAgYWNsZGVmYXVsdF9zcWwoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2FzZSAnVCc6CiAJ CQlvYmp0eXBlID0gT0JKRUNUX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQlvYmp0 eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlIGFiYnJldmlhdGlvbjogJWMiLCBvYmp0eXBl Yyk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCA0OGEyODBkMDg5Li4y ZWVkOTQ4OWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzgsNiArMzgs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKQEAgLTM3 MTQsMyArMzcxNSwxMTUgQEAgZ2V0X3N1YnNjcmlwdGlvbl9uYW1lKE9pZCBzdWJpZCwgYm9vbCBt aXNzaW5nX29rKQogCiAJcmV0dXJuIHN1Ym5hbWU7CiB9CisKKy8qCQkJCS0tLS0tLS0tLS0gUEdf VkFSSUFCTEUgQ0FDSEUgLS0tLS0tLS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF92YXJuYW1lX3Zh cmlkCisgKgkJR2l2ZW4gbmFtZSBhbmQgbmFtZXNwYWNlIG9mIHZhcmlhYmxlLCBsb29rIHVwIHRo ZSBPSUQuCisgKi8KK09pZAorZ2V0X3Zhcm5hbWVfdmFyaWQoY29uc3QgY2hhciAqdmFybmFtZSwg T2lkIHZhcm5hbWVzcGFjZSkKK3sKKwlyZXR1cm4gR2V0U3lzQ2FjaGVPaWQyKFZBUklBQkxFTkFN RU5TUCwgQW51bV9wZ192YXJpYWJsZV9vaWQsCisJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0odmFy bmFtZSksCisJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHZhcm5hbWVzcGFjZSkpOworfQorCisv KgorICogZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZQorICoJCVJldHVybnMgYSBwYWxsb2MnZCBj b3B5IG9mIHRoZSBuYW1lIG9mIGEgZ2l2ZW4gc2Vzc2lvbiB2YXJpYWJsZS4KKyAqLworY2hhciAq CitnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJdHVw OworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyCSAgICp2YXJuYW1lOworCisJdHVw ID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7 CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3Jt ID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IHBzdHJk dXAoTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsK KworCXJldHVybiB2YXJuYW1lOworfQorCisvKgorICogZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFt ZXNwYWNlCisgKgkJUmV0dXJucyB0aGUgcGdfbmFtZXNwYWNlIE9JRCBhc3NvY2lhdGVkIHdpdGgg YSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlLgorICovCitPaWQKK2dldF9zZXNzaW9uX3ZhcmlhYmxl X25hbWVzcGFjZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX3Zhcmlh YmxlIHZhcmZvcm07CisJT2lkCQkJdmFybmFtZXNwYWNlOworCisJdHVwID0gU2VhcmNoU3lzQ2Fj aGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBU dXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBH RVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWVzcGFjZSA9IHZhcmZvcm0tPnZhcm5hbWVzcGFjZTsK KworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuIHZhcm5hbWVzcGFjZTsKK30KKwor LyoKKyAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGdpdmVuIHNlc3Npb24gdmFyaWFibGUuCisg Ki8KK09pZAorZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZShPaWQgdmFyaWQpCit7CisJSGVhcFR1 cGxlCXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJT2lkCQkJdmFydHlwZTsKKwor CXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXJp ZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBzZXNzaW9uIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFy Zm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcnR5cGUgPSB2 YXJmb3JtLT52YXJ0eXBlOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFy dHlwZTsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIHR5cGUsIHR5cG1vZCBhbmQgY29sbGlkIG9m IHRoZSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlLgorICovCit2b2lkCitnZXRfc2Vzc2lvbl92YXJp YWJsZV90eXBlX3R5cG1vZF9jb2xsaWQoT2lkIHZhcmlkLCBPaWQgKnR5cGlkLCBpbnQzMiAqdHlw bW9kLAorCQkJCQkJCQkJCU9pZCAqY29sbGlkKQoreworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9w Z192YXJpYWJsZSB2YXJmb3JtOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lE LCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw KSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlc3Npb24gdmFyaWFi bGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVD VCh0dXApOworCisJKnR5cGlkID0gdmFyZm9ybS0+dmFydHlwZTsKKwkqdHlwbW9kID0gdmFyZm9y bS0+dmFydHlwbW9kOworCSpjb2xsaWQgPSB2YXJmb3JtLT52YXJjb2xsYXRpb247CisKKwlSZWxl YXNlU3lzQ2FjaGUodHVwKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24u YyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwppbmRleCBjMzIzYjViZDNkLi40MDc5YWQ2MDNh IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL2NvbW1vbi5jCkBAIC0yNDcsNiArMjQ3LDkgQEAgZ2V0U2NoZW1hRGF0YShBcmNoaXZlICpm b3V0LCBpbnQgKm51bVRhYmxlc1B0cikKIAlwZ19sb2dfaW5mbygicmVhZGluZyBzdWJzY3JpcHRp b24gbWVtYmVyc2hpcCBvZiB0YWJsZXMiKTsKIAlnZXRTdWJzY3JpcHRpb25UYWJsZXMoZm91dCk7 CiAKKwlwZ19sb2dfaW5mbygicmVhZGluZyB2YXJpYWJsZXMiKTsKKwlnZXRWYXJpYWJsZXMoZm91 dCk7CisKIAlmcmVlKGluaGluZm8pOwkJCQkvKiBub3QgbmVlZGVkIGFueSBsb25nZXIgKi8KIAog CSpudW1UYWJsZXNQdHIgPSBudW1UYWJsZXM7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv ZHVtcHV0aWxzLmMgYi9zcmMvYmluL3BnX2R1bXAvZHVtcHV0aWxzLmMKaW5kZXggNTY0OTg1OWFh MS4uNTBkZTVkMGVhMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2R1bXB1dGlscy5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9kdW1wdXRpbHMuYwpAQCAtNTExLDYgKzUxMSwxMiBAQCBkbyB7 IFwKIAkJQ09OVkVSVF9QUklWKCdyJywgIlNFTEVDVCIpOwogCQlDT05WRVJUX1BSSVYoJ3cnLCAi VVBEQVRFIik7CiAJfQorCWVsc2UgaWYgKHN0cmNtcCh0eXBlLCAiVkFSSUFCTEUiKSA9PSAwIHx8 CisJCQkgc3RyY21wKHR5cGUsICJWQVJJQUJMRVMiKSA9PSAwKQorCXsKKwkJQ09OVkVSVF9QUklW KCdyJywgIlNFTEVDVCIpOworCQlDT05WRVJUX1BSSVYoJ3cnLCAiVVBEQVRFIik7CisJfQogCWVs c2UKIAkJYWJvcnQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5o IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IGZiZjVmMWM1MTUuLmU4MWNmZGUy NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAorKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwLmgKQEAgLTEzMywxMiArMTMzLDE0IEBAIHR5cGVkZWYgc3RydWN0 IF9yZXN0b3JlT3B0aW9ucwogCWludAkJCXNlbEZ1bmN0aW9uOwogCWludAkJCXNlbFRyaWdnZXI7 CiAJaW50CQkJc2VsVGFibGU7CisJaW50CQkJc2VsVmFyaWFibGU7CiAJU2ltcGxlU3RyaW5nTGlz dCBpbmRleE5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3QgZnVuY3Rpb25OYW1lczsKIAlTaW1wbGVT dHJpbmdMaXN0IHNjaGVtYU5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3Qgc2NoZW1hRXhjbHVkZU5h bWVzOwogCVNpbXBsZVN0cmluZ0xpc3QgdHJpZ2dlck5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3Qg dGFibGVOYW1lczsKKwlTaW1wbGVTdHJpbmdMaXN0IHZhcmlhYmxlTmFtZXM7CiAKIAlpbnQJCQl1 c2VEQjsKIAlDb25uUGFyYW1zCWNwYXJhbXM7CQkvKiBwYXJhbWV0ZXJzIHRvIHVzZSBpZiB1c2VE QiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IDhjMjBjMjYzYzQuLjZm MDEyYTFiNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTMwOTgsNiAr MzA5OCwxNCBAQCBfdG9jRW50cnlSZXF1aXJlZChUb2NFbnRyeSAqdGUsIHRlU2VjdGlvbiBjdXJT ZWN0aW9uLCBBcmNoaXZlSGFuZGxlICpBSCkKIAkJCQkJIXNpbXBsZV9zdHJpbmdfbGlzdF9tZW1i ZXIoJnJvcHQtPnRyaWdnZXJOYW1lcywgdGUtPnRhZykpCiAJCQkJCXJldHVybiAwOwogCQkJfQor CQkJZWxzZSBpZiAoc3RyY21wKHRlLT5kZXNjLCAiVkFSSUFCTEUiKSA9PSAwKQorCQkJeworCQkJ CWlmICghcm9wdC0+c2VsVmFyaWFibGUpCisJCQkJCXJldHVybiAwOworCQkJCWlmIChyb3B0LT52 YXJpYWJsZU5hbWVzLmhlYWQgIT0gTlVMTCAmJgorCQkJCQkhc2ltcGxlX3N0cmluZ19saXN0X21l bWJlcigmcm9wdC0+dmFyaWFibGVOYW1lcywgdGUtPnRhZykpCisJCQkJCXJldHVybiAwOworCQkJ fQogCQkJZWxzZQogCQkJCXJldHVybiAwOwogCQl9CkBAIC0zNjQ3LDYgKzM2NTUsNyBAQCBfZ2V0 T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBUb2NFbnRyeSAqdGUpCiAJ CXN0cmNtcCh0eXBlLCAiVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIpID09IDAgfHwKIAkJc3RyY21w KHR5cGUsICJURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIikgPT0gMCB8fAogCQlzdHJjbXAodHlw ZSwgIlRZUEUiKSA9PSAwIHx8CisJCXN0cmNtcCh0eXBlLCAiVkFSSUFCTEUiKSA9PSAwIHx8CiAJ CXN0cmNtcCh0eXBlLCAiVklFVyIpID09IDAgfHwKIAkvKiBub24tc2NoZW1hLXNwZWNpZmllZCBv YmplY3RzICovCiAJCXN0cmNtcCh0eXBlLCAiREFUQUJBU0UiKSA9PSAwIHx8CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpp bmRleCAyYjAyMTQ4NTU5Li5kOGM3NGY0ZTJlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTMyNCw2ICszMjQs NyBAQCBzdGF0aWMgdm9pZCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVi bGljYXRpb25JbmZvICpwdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBQdWJsaWNhdGlvblRhYmxl KEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8pOwogc3Rh dGljIHZvaWQgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRp b25JbmZvICpzdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBTdWJzY3JpcHRpb25UYWJsZShBcmNo aXZlICpmb3V0LCBjb25zdCBTdWJSZWxJbmZvICpzdWJyaW5mbyk7CitzdGF0aWMgdm9pZCBkdW1w VmFyaWFibGUoQXJjaGl2ZSAqZm91dCwgY29uc3QgVmFyaWFibGVJbmZvICp2YXJpbmZvKTsKIHN0 YXRpYyB2b2lkIGR1bXBEYXRhYmFzZShBcmNoaXZlICpmb3V0KTsKIHN0YXRpYyB2b2lkIGR1bXBE YXRhYmFzZUNvbmZpZyhBcmNoaXZlICpBSCwgUFFFeHBCdWZmZXIgb3V0YnVmLAogCQkJCQkJCSAg IGNvbnN0IGNoYXIgKmRibmFtZSwgT2lkIGRib2lkKTsKQEAgLTUzMTMsNiArNTMxNCwxOTAgQEAg Z2V0X25leHRfcG9zc2libGVfZnJlZV9wZ190eXBlX29pZChBcmNoaXZlICpmb3V0LCBQUUV4cEJ1 ZmZlciB1cGdyYWRlX3F1ZXJ5KQogCXJldHVybiBuZXh0X3Bvc3NpYmxlX2ZyZWVfb2lkOwogfQog CisvKgorICogZ2V0VmFyaWFibGVzCisgKgkgIGdldCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJs ZXMKKyAqLwordm9pZAorZ2V0VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQpCit7CisJUFFFeHBCdWZm ZXIgcXVlcnk7CisJUEdyZXN1bHQgICAqcmVzOworCVZhcmlhYmxlSW5mbyAqdmFyaW5mbzsKKwlp bnQJCQlpX3RhYmxlb2lkOworCWludAkJCWlfb2lkOworCWludAkJCWlfdmFybmFtZTsKKwlpbnQJ CQlpX3Zhcm5hbWVzcGFjZTsKKwlpbnQJCQlpX3ZhcnR5cGU7CisJaW50CQkJaV92YXJ0eXBuYW1l OworCWludAkJCWlfdmFyb3duZXI7CisJaW50CQkJaV92YXJjb2xsYXRpb247CisJaW50CQkJaV92 YXJhY2w7CisJaW50CQkJaV9hY2xkZWZhdWx0OworCWludAkJCWksCisJCQkJbnR1cHM7CisKKwlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA8IDE4MDAwMCkKKwkJcmV0dXJuOworCisJcXVlcnkgPSBj cmVhdGVQUUV4cEJ1ZmZlcigpOworCisJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisKKwkvKiBH ZXQgdGhlIHZhcmlhYmxlcyBpbiBjdXJyZW50IGRhdGFiYXNlLiAqLworCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LAorCQkJCQkgICJTRUxFQ1Qgdi50YWJsZW9pZCwgdi5vaWQsIHYudmFybmFtZSxc biIKKwkJCQkJICAiICAgICAgIHYudmFybmFtZXNwYWNlLCB2LnZhcnR5cGUsXG4iCisJCQkJCSAg IiAgICAgICBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHYudmFydHlwZSwgdi52YXJ0eXBtb2QpIGFz IHZhcnR5cG5hbWUsXG4iCisJCQkJCSAgIiAgICAgICBDQVNFIFdIRU4gdi52YXJjb2xsYXRpb24g PD4gdC50eXBjb2xsYXRpb24gIgorCQkJCQkgICIgICAgICAgICAgICBUSEVOIHYudmFyY29sbGF0 aW9uXG4iCisJCQkJCSAgIiAgICAgICAgICAgIEVMU0UgMFxuIgorCQkJCQkgICIgICAgICAgRU5E IEFTIHZhcmNvbGxhdGlvbixcbiIKKwkJCQkJICAiICAgICAgIHYudmFyb3duZXIsIHYudmFyYWNs LFxuIgorCQkJCQkgICIgICAgICAgYWNsZGVmYXVsdCgnVicsIHYudmFyb3duZXIpIEFTIGFjbGRl ZmF1bHRcbiIKKwkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlIHZcbiIKKwkJCQkJ ICAiSk9JTiBwZ19jYXRhbG9nLnBnX3R5cGUgdCAiCisJCQkJCSAgIk9OICh2LnZhcnR5cGUgPSB0 Lm9pZCkiKTsKKworCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdS RVNfVFVQTEVTX09LKTsKKworCW50dXBzID0gUFFudHVwbGVzKHJlcyk7CisKKwlpX3RhYmxlb2lk ID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CisJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAi b2lkIik7CisJaV92YXJuYW1lID0gUFFmbnVtYmVyKHJlcywgInZhcm5hbWUiKTsKKwlpX3Zhcm5h bWVzcGFjZSA9IFBRZm51bWJlcihyZXMsICJ2YXJuYW1lc3BhY2UiKTsKKwlpX3ZhcnR5cGUgPSBQ UWZudW1iZXIocmVzLCAidmFydHlwZSIpOworCWlfdmFydHlwbmFtZSA9IFBRZm51bWJlcihyZXMs ICJ2YXJ0eXBuYW1lIik7CisJaV92YXJjb2xsYXRpb24gPSBQUWZudW1iZXIocmVzLCAidmFyY29s bGF0aW9uIik7CisKKwlpX3Zhcm93bmVyID0gUFFmbnVtYmVyKHJlcywgInZhcm93bmVyIik7CisJ aV92YXJhY2wgPSBQUWZudW1iZXIocmVzLCAidmFyYWNsIik7CisJaV9hY2xkZWZhdWx0ID0gUFFm bnVtYmVyKHJlcywgImFjbGRlZmF1bHQiKTsKKworCXZhcmluZm8gPSBwZ19tYWxsb2MobnR1cHMg KiBzaXplb2YoVmFyaWFibGVJbmZvKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnR1cHM7IGkrKykK Kwl7CisJCVR5cGVJbmZvICAgKnZ0eXBlOworCisJCXZhcmluZm9baV0uZG9iai5vYmpUeXBlID0g RE9fVkFSSUFCTEU7CisJCXZhcmluZm9baV0uZG9iai5jYXRJZC50YWJsZW9pZCA9CisJCQlhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdGFibGVvaWQpKTsKKwkJdmFyaW5mb1tpXS5kb2JqLmNh dElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9vaWQpKTsKKwkJQXNzaWduRHVt cElkKCZ2YXJpbmZvW2ldLmRvYmopOworCQl2YXJpbmZvW2ldLmRvYmoubmFtZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJuYW1lKSk7CisJCXZhcmluZm9baV0uZG9iai5uYW1l c3BhY2UgPQorCQkJZmluZE5hbWVzcGFjZShhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFy bmFtZXNwYWNlKSkpOworCisJCXZhcmluZm9baV0udmFydHlwZSA9IGF0b29pZChQUWdldHZhbHVl KHJlcywgaSwgaV92YXJ0eXBlKSk7CisJCXZhcmluZm9baV0udmFydHlwbmFtZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJ0eXBuYW1lKSk7CisJCXZhcmluZm9baV0udmFyY29s bGF0aW9uID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcmNvbGxhdGlvbikpOworCisJ CXZhcmluZm9baV0uZGFjbC5hY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFy YWNsKSk7CisJCXZhcmluZm9baV0uZGFjbC5hY2xkZWZhdWx0ID0gcGdfc3RyZHVwKFBRZ2V0dmFs dWUocmVzLCBpLCBpX2FjbGRlZmF1bHQpKTsKKwkJdmFyaW5mb1tpXS5kYWNsLnByaXZ0eXBlID0g MDsKKwkJdmFyaW5mb1tpXS5kYWNsLmluaXRwcml2cyA9IE5VTEw7CisJCXZhcmluZm9baV0ucm9s bmFtZSA9IGdldFJvbGVOYW1lKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zhcm93bmVyKSk7CisKKwkJ LyogRG8gbm90IHRyeSB0byBkdW1wIEFDTCBpZiBubyBBQ0wgZXhpc3RzLiAqLworCQlpZiAoIVBR Z2V0aXNudWxsKHJlcywgaSwgaV92YXJhY2wpKQorCQkJdmFyaW5mb1tpXS5kb2JqLmNvbXBvbmVu dHMgfD0gRFVNUF9DT01QT05FTlRfQUNMOworCisJCWlmIChzdHJsZW4odmFyaW5mb1tpXS5yb2xu YW1lKSA9PSAwKQorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIHZhcmlhYmxlIFwiJXNcIiBh cHBlYXJzIHRvIGJlIGludmFsaWQiLAorCQkJCQkJICAgdmFyaW5mb1tpXS5kb2JqLm5hbWUpOwor CisJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLworCQlzZWxlY3REdW1w YWJsZU9iamVjdCgmKHZhcmluZm9baV0uZG9iaiksIGZvdXQpOworCisJCXZ0eXBlID0gZmluZFR5 cGVCeU9pZCh2YXJpbmZvW2ldLnZhcnR5cGUpOworCQlhZGRPYmplY3REZXBlbmRlbmN5KCZ2YXJp bmZvW2ldLmRvYmosIHZ0eXBlLT5kb2JqLmR1bXBJZCk7CisJfQorCVBRY2xlYXIocmVzKTsKKwor CWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7Cit9CisKKy8qCisgKiBkdW1wVmFyaWFibGUKKyAq CSAgZHVtcCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZ2l2ZW4gc2Vzc2lvbiB2YXJpYWJsZQorICov CitzdGF0aWMgdm9pZAorZHVtcFZhcmlhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFZhcmlhYmxl SW5mbyAqdmFyaW5mbykKK3sKKwlEdW1wT3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisKKwlQ UUV4cEJ1ZmZlciBkZWxxOworCVBRRXhwQnVmZmVyIHF1ZXJ5OworCWNoYXIJICAgKnF1YWx2YXJu YW1lOworCWNvbnN0IGNoYXIgKnZhcnR5cG5hbWU7CisJT2lkCQkJdmFyY29sbGF0aW9uOworCisJ LyogU2tpcCBpZiBub3QgdG8gYmUgZHVtcGVkICovCisJaWYgKCF2YXJpbmZvLT5kb2JqLmR1bXAg fHwgZG9wdC0+ZGF0YU9ubHkpCisJCXJldHVybjsKKworCWRlbHEgPSBjcmVhdGVQUUV4cEJ1ZmZl cigpOworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCXF1YWx2YXJuYW1lID0gcGdf c3RyZHVwKGZtdFF1YWxpZmllZER1bXBhYmxlKHZhcmluZm8pKTsKKwl2YXJ0eXBuYW1lID0gdmFy aW5mby0+dmFydHlwbmFtZTsKKwl2YXJjb2xsYXRpb24gPSB2YXJpbmZvLT52YXJjb2xsYXRpb247 CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiRFJPUCBWQVJJQUJMRSAlcztcbiIsCisJCQkJ CSAgcXVhbHZhcm5hbWUpOworCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgVkFS SUFCTEUgJXMgQVMgJXMiLAorCQkJCQkgIHF1YWx2YXJuYW1lLCB2YXJ0eXBuYW1lKTsKKworCWlm IChPaWRJc1ZhbGlkKHZhcmNvbGxhdGlvbikpCisJeworCQlDb2xsSW5mbyAgICpjb2xsOworCisJ CWNvbGwgPSBmaW5kQ29sbGF0aW9uQnlPaWQodmFyY29sbGF0aW9uKTsKKwkJaWYgKGNvbGwpCisJ CQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBDT0xMQVRFICVzIiwKKwkJCQkJCQkgIGZtdFF1 YWxpZmllZER1bXBhYmxlKGNvbGwpKTsKKwl9CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwg IjtcbiIpOworCisJaWYgKHZhcmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0RFRklO SVRJT04pCisJCUFyY2hpdmVFbnRyeShmb3V0LCB2YXJpbmZvLT5kb2JqLmNhdElkLCB2YXJpbmZv LT5kb2JqLmR1bXBJZCwKKwkJCQkJIEFSQ0hJVkVfT1BUUygudGFnID0gdmFyaW5mby0+ZG9iai5u YW1lLAorCQkJCQkJCQkgIC5uYW1lc3BhY2UgPSB2YXJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9i ai5uYW1lLAorCQkJCQkJCQkgIC5vd25lciA9IHZhcmluZm8tPnJvbG5hbWUsCisJCQkJCQkJCSAg LmRlc2NyaXB0aW9uID0gIlZBUklBQkxFIiwKKwkJCQkJCQkJICAuc2VjdGlvbiA9IFNFQ1RJT05f UFJFX0RBVEEsCisJCQkJCQkJCSAgLmNyZWF0ZVN0bXQgPSBxdWVyeS0+ZGF0YSwKKwkJCQkJCQkJ ICAuZHJvcFN0bXQgPSBkZWxxLT5kYXRhKSk7CisKKwkvKiBEdW1wIGNvbW1lbnQgaWYgYW55ICov CisJaWYgKHZhcmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0NPTU1FTlQpCisJCWR1 bXBDb21tZW50KGZvdXQsICJWQVJJQUJMRSIsIHF1YWx2YXJuYW1lLAorCQkJCQlOVUxMLCB2YXJp bmZvLT5yb2xuYW1lLAorCQkJCQl2YXJpbmZvLT5kb2JqLmNhdElkLCAwLCB2YXJpbmZvLT5kb2Jq LmR1bXBJZCk7CisKKwkvKiBEdW1wIEFDTCBpZiBhbnkgKi8KKwlpZiAodmFyaW5mby0+ZG9iai5k dW1wICYgRFVNUF9DT01QT05FTlRfQUNMKQorCXsKKwkJY2hhcgkgICAqcXZhcm5hbWUgPSBwZ19z dHJkdXAoZm10SWQodmFyaW5mby0+ZG9iai5uYW1lKSk7CisKKwkJZHVtcEFDTChmb3V0LCB2YXJp bmZvLT5kb2JqLmR1bXBJZCwgSW52YWxpZER1bXBJZCwgIlZBUklBQkxFIiwKKwkJCQlxdmFybmFt ZSwgTlVMTCwKKwkJCQl2YXJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLCBOVUxMLCB2 YXJpbmZvLT5yb2xuYW1lLAorCQkJCSZ2YXJpbmZvLT5kYWNsKTsKKworCQlmcmVlKHF2YXJuYW1l KTsKKwl9CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoZGVscSk7CisJZGVzdHJveVBRRXhwQnVmZmVy KHF1ZXJ5KTsKKworCWZyZWUocXVhbHZhcm5hbWUpOworfQorCiBzdGF0aWMgdm9pZAogYmluYXJ5 X3VwZ3JhZGVfc2V0X3R5cGVfb2lkc19ieV90eXBlX29pZChBcmNoaXZlICpmb3V0LAogCQkJCQkJ CQkJCSBQUUV4cEJ1ZmZlciB1cGdyYWRlX2J1ZmZlciwKQEAgLTk4NzUsNyArMTAwNjAsOCBAQCBn ZXRBZGRpdGlvbmFsQUNMcyhBcmNoaXZlICpmb3V0KQogCQkJCQlkb2JqLT5vYmpUeXBlID09IERP X1RBQkxFIHx8CiAJCQkJCWRvYmotPm9ialR5cGUgPT0gRE9fUFJPQ0xBTkcgfHwKIAkJCQkJZG9i ai0+b2JqVHlwZSA9PSBET19GRFcgfHwKLQkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19GT1JFSUdO X1NFUlZFUikKKwkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19GT1JFSUdOX1NFUlZFUiB8fAorCQkJ CQlkb2JqLT5vYmpUeXBlID09IERPX1ZBUklBQkxFKQogCQkJCXsKIAkJCQkJRHVtcGFibGVPYmpl Y3RXaXRoQWNsICpkYW9iaiA9IChEdW1wYWJsZU9iamVjdFdpdGhBY2wgKikgZG9iajsKIApAQCAt MTA0NzQsNiArMTA2NjAsOSBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVt cGFibGVPYmplY3QgKmRvYmopCiAJCWNhc2UgRE9fU1VCU0NSSVBUSU9OX1JFTDoKIAkJCWR1bXBT dWJzY3JpcHRpb25UYWJsZShmb3V0LCAoY29uc3QgU3ViUmVsSW5mbyAqKSBkb2JqKTsKIAkJCWJy ZWFrOworCQljYXNlIERPX1ZBUklBQkxFOgorCQkJZHVtcFZhcmlhYmxlKGZvdXQsIChWYXJpYWJs ZUluZm8gKikgZG9iaik7CisJCQlicmVhazsKIAkJY2FzZSBET19QUkVfREFUQV9CT1VOREFSWToK IAkJY2FzZSBET19QT1NUX0RBVEFfQk9VTkRBUlk6CiAJCQkvKiBuZXZlciBkdW1wZWQsIG5vdGhp bmcgdG8gZG8gKi8KQEAgLTE0OTIzLDYgKzE1MTEyLDkgQEAgZHVtcERlZmF1bHRBQ0woQXJjaGl2 ZSAqZm91dCwgY29uc3QgRGVmYXVsdEFDTEluZm8gKmRhY2xpbmZvKQogCQljYXNlIERFRkFDTE9C Sl9OQU1FU1BBQ0U6CiAJCQl0eXBlID0gIlNDSEVNQVMiOwogCQkJYnJlYWs7CisJCWNhc2UgREVG QUNMT0JKX1ZBUklBQkxFOgorCQkJdHlwZSA9ICJWQVJJQUJMRVMiOworCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCXBnX2ZhdGFsKCJ1bnJlY29n bml6ZWQgb2JqZWN0IHR5cGUgaW4gZGVmYXVsdCBwcml2aWxlZ2VzOiAlZCIsCkBAIC0xODQzMiw2 ICsxODYyNCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoqZG9i anMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19DT05WRVJTSU9OOgogCQkJY2FzZSBET19UQUJM RToKIAkJCWNhc2UgRE9fVEFCTEVfQVRUQUNIOgorCQkJY2FzZSBET19WQVJJQUJMRToKIAkJCWNh c2UgRE9fQVRUUkRFRjoKIAkJCWNhc2UgRE9fUFJPQ0xBTkc6CiAJCQljYXNlIERPX0NBU1Q6CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaAppbmRleCA0YjJlNTg3MGE5Li4zNmE2OWEwODMyIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTUy LDYgKzUyLDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fVEFCTEUsCiAJRE9fVEFCTEVfQVRUQUNILAog CURPX0FUVFJERUYsCisJRE9fVkFSSUFCTEUsCiAJRE9fSU5ERVgsCiAJRE9fSU5ERVhfQVRUQUNI LAogCURPX1NUQVRTRVhULApAQCAtNjkyLDYgKzY5MywyMyBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vi UmVsSW5mbwogCWNoYXIJICAgKnNyc3VibHNuOwogfSBTdWJSZWxJbmZvOwogCisvKgorICogVGhl IFZhcmlhYmxlSW5mbyBzdHJ1Y3QgaXMgdXNlZCB0byByZXByZXNlbnQgc2Vzc2lvbiB2YXJpYWJs ZXMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX1ZhcmlhYmxlSW5mbworeworCUR1bXBhYmxlT2JqZWN0 IGRvYmo7CisJRHVtcGFibGVBY2wgZGFjbDsKKwlPaWQJCQl2YXJ0eXBlOworCWNoYXIJICAgKnZh cnR5cG5hbWU7CisJY2hhcgkgICAqdmFyYWNsOworCWNoYXIJICAgKnJ2YXJhY2w7CisJY2hhcgkg ICAqaW5pdHZhcmFjbDsKKwljaGFyCSAgICppbml0cnZhcmFjbDsKKwlPaWQJCQl2YXJjb2xsYXRp b247CisJY29uc3QgY2hhciAqcm9sbmFtZTsJCS8qIG5hbWUgb2Ygb3duZXIsIG9yIGVtcHR5IHN0 cmluZyAqLworfSBWYXJpYWJsZUluZm87CisKIC8qCiAgKgljb21tb24gdXRpbGl0eSBmdW5jdGlv bnMKICAqLwpAQCAtNzc1LDUgKzc5Myw2IEBAIGV4dGVybiB2b2lkIGdldFB1YmxpY2F0aW9uVGFi bGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sCiAJCQkJCQkJCSBpbnQgbnVt VGFibGVzKTsKIGV4dGVybiB2b2lkIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCk7CiBl eHRlcm4gdm9pZCBnZXRTdWJzY3JpcHRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCk7CitleHRlcm4g dm9pZCBnZXRWYXJpYWJsZXMoQXJjaGl2ZSAqZm91dCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQR19E VU1QX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCA0Y2I3NTRjYWE1Li5lYmI5YmYwMzdj IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC03OCw2ICs3OCw3IEBAIGVudW0gZGJPYmplY3RU eXBlUHJpb3JpdGllcwogCVBSSU9fRFVNTVlfVFlQRSwKIAlQUklPX0FUVFJERUYsCiAJUFJJT19M QVJHRV9PQkpFQ1QsCisJUFJJT19WQVJJQUJMRSwKIAlQUklPX1BSRV9EQVRBX0JPVU5EQVJZLAkJ LyogYm91bmRhcnkhICovCiAJUFJJT19UQUJMRV9EQVRBLAogCVBSSU9fU0VRVUVOQ0VfU0VULApA QCAtMTE5LDYgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJpb3JpdHlb XSA9CiAJW0RPX1RBQkxFXSA9IFBSSU9fVEFCTEUsCiAJW0RPX1RBQkxFX0FUVEFDSF0gPSBQUklP X1RBQkxFX0FUVEFDSCwKIAlbRE9fQVRUUkRFRl0gPSBQUklPX0FUVFJERUYsCisJW0RPX1ZBUklB QkxFXSA9IFBSSU9fVkFSSUFCTEUsCiAJW0RPX0lOREVYXSA9IFBSSU9fSU5ERVgsCiAJW0RPX0lO REVYX0FUVEFDSF0gPSBQUklPX0lOREVYX0FUVEFDSCwKIAlbRE9fU1RBVFNFWFRdID0gUFJJT19T VEFUU0VYVCwKQEAgLTE0OTAsNiArMTQ5MiwxMCBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1 bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiUE9TVC1E QVRBIEJPVU5EQVJZICAoSUQgJWQpIiwKIAkJCQkJIG9iai0+ZHVtcElkKTsKIAkJCXJldHVybjsK KwkJY2FzZSBET19WQVJJQUJMRToKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJW QVJJQUJMRSAlcyAgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJ ZCwgb2JqLT5jYXRJZC5vaWQpOwogCX0KIAkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAlzbnBy aW50ZihidWYsIGJ1ZnNpemUsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDViY2MyMjQ0 ZDUuLjBkMzc2NWVlZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC03ODksNiArNzg5 LDE2IEBAIG15ICV0ZXN0cyA9ICgKIAkJdW5saWtlID0+IHsgbm9fcHJpdnMgPT4gMSwgfSwKIAkg IH0sCiAKKwknQUxURVIgREVGQVVMVCBQUklWSUxFR0VTIEZPUiBST0xFIHJlZ3Jlc3NfZHVtcF90 ZXN0X3JvbGUgR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFUyBUTyBQVUJMSUMnCisJICA9PiB7CisJ CWNyZWF0ZV9vcmRlciA9PiA1NiwKKwkJY3JlYXRlX3NxbCAgID0+ICdBTFRFUiBERUZBVUxUIFBS SVZJTEVHRVMgRk9SIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZSBHUkFOVCBTRUxFQ1QgT04g VkFSSUFCTEVTIFRPIFBVQkxJQzsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBERUZB VUxUIFBSSVZJTEVHRVMgRk9SIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZSBHUkFOVCBTRUxF Q1QgT04gVkFSSUFCTEVTIFRPIFBVQkxJQztcRS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMs IHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJCXVubGlrZSA9PiB7IG5vX3ByaXZzID0+IDEs IH0sCisJICB9LAorCiAJJ0FMVEVSIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZScgPT4gewog CQlyZWdleHAgPT4gcXIvXgogCQkJXFFBTFRFUiBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGUg V0lUSCBcRQpAQCAtMTYzOCw2ICsxNjQ4LDIzIEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAog CisJJ0NPTU1FTlQgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMScgPT4geworCQljcmVh dGVfb3JkZXIgPT4gNzEsCisJCWNyZWF0ZV9zcWwgICA9PiAnQ09NTUVOVCBPTiBWQVJJQUJMRSBk dW1wX3Rlc3QudmFyaWFibGUxCisJCQkJCSAgIElTIFwnY29tbWVudCBvbiB2YXJpYWJsZVwnOycs CisJCXJlZ2V4cCA9PgorCQkgIHFyL15cUUNPTU1FTlQgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZh cmlhYmxlMSBJUyAnY29tbWVudCBvbiB2YXJpYWJsZSc7XEUvbSwKKwkJbGlrZSA9PiB7CisJCQkl ZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCXNlY3Rpb25fcHJlX2Rh dGEgICAgID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9z Y2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF9tZWFzdXJlbWVudCAgICA9PiAxLAorCQl9LAorCX0s CisKIAknQ09QWSB0ZXN0X3RhYmxlJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA0LAogCQljcmVh dGVfc3FsID0+ICdJTlNFUlQgSU5UTyBkdW1wX3Rlc3QudGVzdF90YWJsZSAoY29sMSkgJwpAQCAt Mzg5Niw2ICszOTIzLDI0IEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJJ0NSRUFURSBW QVJJQUJMRSB0ZXN0X3ZhcmlhYmxlJyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAxLAorCQljYXRj aF9hbGwgICAgPT4gJ0NSRUFURSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3JkZXIgPT4gNjEs CisJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZTEg QVMgaW50ZWdlcjsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgVkFSSUFCTEUgZHVt cF90ZXN0LnZhcmlhYmxlMSBBUyBpbnRlZ2VyO1xFL3htLAorCQlsaWtlID0+IHsKKwkJCSVmdWxs X3J1bnMsCisJCQklZHVtcF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2VjdGlvbl9wcmVfZGF0YSA9 PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+ IDEsCisJCQlvbmx5X2R1bXBfbWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJfSwKKwl9LAorCiAJJ0NS RUFURSBWSUVXIHRlc3RfdmlldycgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNjEsCiAJCWNyZWF0 ZV9zcWwgPT4gJ0NSRUFURSBWSUVXIGR1bXBfdGVzdC50ZXN0X3ZpZXcKQEAgLTQzNTgsNiArNDQw MywyNSBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4ge30sCiAJfSwKIAorCSdHUkFOVCBTRUxF Q1QgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMScgPT4geworCQljcmVhdGVfb3JkZXIg PT4gNzMsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIGR1 bXBfdGVzdC52YXJpYWJsZTEgVE8gcmVncmVzc19kdW1wX3Rlc3Rfcm9sZTsnLAorCQlyZWdleHAg PT4gcXIvXgorCQkJXFFHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxl MSBUTyByZWdyZXNzX2R1bXBfdGVzdF9yb2xlO1xFCisJCQkveG0sCisJCWxpa2UgPT4geworCQkJ JWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3ByZV9k YXRhID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hl bWEgPT4gMSwKKwkJCW5vX3ByaXZzICAgICAgICAgICAgICAgICA9PiAxLAorCQkJb25seV9kdW1w X21lYXN1cmVtZW50ICAgID0+IDEsCisJCX0sCisJfSwKKwogCSdSRUZSRVNIIE1BVEVSSUFMSVpF RCBWSUVXIG1hdHZpZXcnID0+IHsKIAkJcmVnZXhwID0+IHFyL15cUVJFRlJFU0ggTUFURVJJQUxJ WkVEIFZJRVcgZHVtcF90ZXN0Lm1hdHZpZXc7XEUvbSwKIAkJbGlrZSA9PgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggMTgw NzgxZWNkMC4uMjZhOWEzZmFjNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwor KysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC05ODYsNiArOTg2LDkgQEAgZXhlY19jb21t YW5kX2QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0 IGNoYXIgKmNtZCkKIAkJCQkJCWJyZWFrOwogCQkJCX0KIAkJCQlicmVhazsKKwkJCWNhc2UgJ1Yn OgkJCS8qIFZhcmlhYmxlcyAqLworCQkJCXN1Y2Nlc3MgPSBsaXN0VmFyaWFibGVzKHBhdHRlcm4s IHNob3dfdmVyYm9zZSk7CisJCQkJYnJlYWs7CiAJCQljYXNlICd4JzoJCQkvKiBFeHRlbnNpb25z ICovCiAJCQkJaWYgKHNob3dfdmVyYm9zZSkKIAkJCQkJc3VjY2VzcyA9IGxpc3RFeHRlbnNpb25D b250ZW50cyhwYXR0ZXJuKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggN2M5YTFmMjM0Yy4uYWRmODNlZDE5NyAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKQEAgLTUxNDgsNiArNTE0OCwxMDIgQEAgZXJyb3JfcmV0dXJuOgogCXJldHVybiBmYWxz ZTsKIH0KIAorLyoKKyAqIFxkVgorICoKKyAqIGxpc3RWYXJpYWJsZXMoKQorICovCitib29sCits aXN0VmFyaWFibGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKK3sKKwlQUUV4 cEJ1ZmZlckRhdGEgYnVmOworCVBHcmVzdWx0ICAgKnJlczsKKwlwcmludFF1ZXJ5T3B0IG15b3B0 ID0gcHNldC5wb3B0OworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7 ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OworCisJaWYg KHBzZXQuc3ZlcnNpb24gPCAxODAwMDApCisJeworCQljaGFyCQlzdmVyYnVmWzMyXTsKKworCQlw Z19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc2Vz c2lvbiB2YXJpYWJsZXMuIiwKKwkJCQkJIGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJz aW9uLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKKwkJ cmV0dXJuIHRydWU7CisJfQorCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSBhcyBcIiVzXCIsXG4iCisJ CQkJCSAgIiAgdi52YXJuYW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLmZv cm1hdF90eXBlKHYudmFydHlwZSwgdi52YXJ0eXBtb2QpIGFzIFwiJXNcIixcbiIKKwkJCQkJICAi ICAoU0VMRUNUIGMuY29sbG5hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbiBjLCBwZ19j YXRhbG9nLnBnX3R5cGUgYnRcbiIKKwkJCQkJICAiICAgV0hFUkUgYy5vaWQgPSB2LnZhcmNvbGxh dGlvbiBBTkQgYnQub2lkID0gdi52YXJ0eXBlIEFORCB2LnZhcmNvbGxhdGlvbiA8PiBidC50eXBj b2xsYXRpb24pIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF91c2Vy YnlpZCh2LnZhcm93bmVyKSBhcyBcIiVzXCJcbiIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJTY2hl bWEiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk5hbWUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3Ao IlR5cGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkNvbGxhdGlvbiIpLAorCQkJCQkgIGdldHRl eHRfbm9vcCgiT3duZXIiKSk7CisKKwlpZiAodmVyYm9zZSkKKwl7CisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZidWYsICIsXG4gICIpOworCQlwcmludEFDTENvbHVtbigmYnVmLCAidi52YXJhY2wi KTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIixcbiAgcGdfY2F0YWxvZy5v YmpfZGVzY3JpcHRpb24odi5vaWQsICdwZ192YXJpYWJsZScpIEFTIFwiJXNcIiIsCisJCQkJCQkg IGdldHRleHRfbm9vcCgiRGVzY3JpcHRpb24iKSk7CisJfQorCisJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwKKwkJCQkJCSAiXG5GUk9NIHBnX2NhdGFsb2cucGdfdmFyaWFibGUgdiIKKwkJCQkJ CSAiXG4gICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0g di52YXJuYW1lc3BhY2UiKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJcbldIRVJF IHRydWVcbiIpOworCWlmICghcGF0dGVybikKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1Ziwg IiAgICAgIEFORCBuLm5zcG5hbWUgPD4gJ3BnX2NhdGFsb2cnXG4iCisJCQkJCQkJICIgICAgICBB TkQgbi5uc3BuYW1lIDw+ICdpbmZvcm1hdGlvbl9zY2hlbWEnXG4iKTsKKworCWlmICghdmFsaWRh dGVTUUxOYW1lUGF0dGVybigmYnVmLCBwYXR0ZXJuLCB0cnVlLCBmYWxzZSwKKwkJCQkJCQkJIm4u bnNwbmFtZSIsICJ2LnZhcm5hbWUiLCBOVUxMLAorCQkJCQkJCQkicGdfY2F0YWxvZy5wZ192YXJp YWJsZV9pc192aXNpYmxlKHYub2lkKSIsCisJCQkJCQkJCU5VTEwsIDMpKQorCQlyZXR1cm4gZmFs c2U7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMSwyOyIpOworCisJ cmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAo IXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBNb3N0IGZ1bmN0aW9ucyBpbiB0aGlz IGZpbGUgYXJlIGNvbnRlbnQgdG8gcHJpbnQgYW4gZW1wdHkgdGFibGUgd2hlbgorCSAqIHRoZXJl IGFyZSBubyBtYXRjaGluZyBvYmplY3RzLiAgV2UgaW50ZW50aW9uYWxseSBkZXZpYXRlIGZyb20g dGhhdAorCSAqIGhlcmUsIGJ1dCBvbmx5IGluICFxdWlldCBtb2RlLCBmb3IgaGlzdG9yaWNhbCBy ZWFzb25zLgorCSAqLworCWlmIChQUW50dXBsZXMocmVzKSA9PSAwICYmICFwc2V0LnF1aWV0KQor CXsKKwkJaWYgKHBhdHRlcm4pCisJCQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2Vz c2lvbiB2YXJpYWJsZSBuYW1lZCBcIiVzXCIuIiwKKwkJCQkJCSBwYXR0ZXJuKTsKKwkJZWxzZQor CQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHNlc3Npb24gdmFyaWFibGVzLiIpOwor CX0KKwllbHNlCisJeworCQlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCQlteW9wdC50aXRsZSA9 IF8oIkxpc3Qgb2YgdmFyaWFibGVzIik7CisJCW15b3B0LnRyYW5zbGF0ZV9oZWFkZXIgPSB0cnVl OworCQlteW9wdC50cmFuc2xhdGVfY29sdW1ucyA9IHRyYW5zbGF0ZV9jb2x1bW5zOworCQlteW9w dC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMpOworCisJ CXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dm aWxlKTsKKwl9CisKKwlQUWNsZWFyKHJlcyk7CisJcmV0dXJuIHRydWU7Cit9CiAKIC8qCiAgKiBc ZEZwCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaCBiL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5oCmluZGV4IDI3M2Y5NzQ1MzguLjRlMTVhMTgwZWEgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5oCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCkBAIC0xNDks NCArMTQ5LDcgQEAgZXh0ZXJuIGJvb2wgbGlzdE9wRmFtaWx5RnVuY3Rpb25zKGNvbnN0IGNoYXIg KmFjY2Vzc19tZXRob2RfcGF0dGVybiwKIC8qIFxkbCBvciBcbG9fbGlzdCAqLwogZXh0ZXJuIGJv b2wgbGlzdExhcmdlT2JqZWN0cyhib29sIHZlcmJvc2UpOwogCisvKiBcZFYgKi8KK2V4dGVybiBi b29sIGxpc3RWYXJpYWJsZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2YXJib3NlKTsKKwog I2VuZGlmCQkJCQkJCS8qIERFU0NSSUJFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9o ZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmluZGV4IDZmNThhMTEwNzQuLmJkYzMyN2ZmZTMg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAu YwpAQCAtMjY1LDYgKzI2NSw3IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2Vy KQogCUhFTFAwKCIgIFxcZFRbUytdIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YSB0eXBlc1xuIik7 CiAJSEVMUDAoIiAgXFxkdVtTK10gW1BBVFRFUk5dICAgICAgbGlzdCByb2xlc1xuIik7CiAJSEVM UDAoIiAgXFxkdltTK10gW1BBVFRFUk5dICAgICAgbGlzdCB2aWV3c1xuIik7CisJSEVMUDAoIiAg XFxkViAgICAgW1BBVFRFUk5dICAgICAgbGlzdCBzZXNzaW9uIHZhcmlhYmxlc1xuIik7CiAJSEVM UDAoIiAgXFxkeFsrXSAgW1BBVFRFUk5dICAgICAgbGlzdCBleHRlbnNpb25zXG4iKTsKIAlIRUxQ MCgiICBcXGRYICAgICBbUEFUVEVSTl0gICAgICBsaXN0IGV4dGVuZGVkIHN0YXRpc3RpY3NcbiIp OwogCUhFTFAwKCIgIFxcZHlbK10gIFtQQVRURVJOXSAgICAgIGxpc3QgZXZlbnQgdHJpZ2dlcnNc biIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDAyNDQ2OTQ3NGQuLjg3M2E4M2ZhNWEgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKQEAgLTk2Myw2ICs5NjMsMTMgQEAgc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1 ZXJ5X2Zvcl90cmlnZ2VyX29mX3RhYmxlID0gewogCS5yZWZuYW1lc3BhY2UgPSAiYzEucmVsbmFt ZXNwYWNlIiwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9v Zl92YXJpYWJsZXMgPSB7CisJLm1pbl9zZXJ2ZXJfdmVyc2lvbiA9IDE4MDAwMCwKKwkuY2F0bmFt ZSA9ICJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlIHYiLAorCS52aXNjb25kaXRpb24gPSAicGdfY2F0 YWxvZy5wZ192YXJpYWJsZV9pc192aXNpYmxlKHYub2lkKSIsCisJLm5hbWVzcGFjZSA9ICJ2LnZh cm5hbWVzcGFjZSIsCisJLnJlc3VsdCA9ICJ2LnZhcm5hbWUiLAorfTsKIAogLyoKICAqIFF1ZXJp ZXMgdG8gZ2V0IGxpc3RzIG9mIG5hbWVzIG9mIHZhcmlvdXMga2luZHMgb2YgdGhpbmdzLCBwb3Nz aWJseQpAQCAtMTI4Myw2ICsxMjkwLDcgQEAgc3RhdGljIGNvbnN0IHBnc3FsX3RoaW5nX3Qgd29y ZHNfYWZ0ZXJfY3JlYXRlW10gPSB7CiAJCQkJCQkJCQkJCQkJCQkJCQkJICogVEFCTEUgLi4uICov CiAJeyJVU0VSIiwgUXVlcnlfZm9yX2xpc3Rfb2Zfcm9sZXMsIE5VTEwsIE5VTEwsIEtleXdvcmRz X2Zvcl91c2VyX3RoaW5nfSwKIAl7IlVTRVIgTUFQUElORyBGT1IiLCBOVUxMLCBOVUxMLCBOVUxM fSwKKwl7IlZBUklBQkxFIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxl c30sCiAJeyJWSUVXIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzfSwKIAl7 TlVMTH0JCQkJCQkvKiBlbmQgb2YgbGlzdCAqLwogfTsKQEAgLTE3MjIsNyArMTczMCw3IEBAIHBz cWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJc XGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0IiwgIlxcZGciLCAiXFxkaSIsICJcXGRsIiwg IlxcZEwiLAogCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIiwgIlxcZFAi LCAiXFxkUGkiLCAiXFxkUHQiLAogCQkiXFxkcmRzIiwgIlxcZHJnIiwgIlxcZFJzIiwgIlxcZFJw IiwgIlxcZHMiLAotCQkiXFxkdCIsICJcXGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxc ZFgiLCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIsICJcXGR1IiwgIlxcZHgiLCAi XFxkWCIsICJcXGR5IiwgIlxcZFYiLAogCQkiXFxlY2hvIiwgIlxcZWRpdCIsICJcXGVmIiwgIlxc ZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNvZGluZyIsCiAJCSJcXGVuZGlmIiwgIlxcZXJydmVyYm9z ZSIsICJcXGV2IiwKIAkJIlxcZiIsCkBAIC0yMjI0LDYgKzIyMzIsOSBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJCSAgIkFM TCIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlNZU1RFTSIsICJTRVQiLCBNYXRjaEFu eSkpCiAJCUNPTVBMRVRFX1dJVEgoIlRPIik7CisJLyogQUxURVIgVkFSSUFCTEUgPG5hbWU+ICov CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNP TVBMRVRFX1dJVEgoIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIsICJTRVQgU0NIRU1BIik7CiAJLyog QUxURVIgVklFVyA8bmFtZT4gKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJWSUVXIiwg TWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJBTFRFUiBDT0xVTU4iLCAiT1dORVIgVE8iLCAi UkVOQU1FIiwgIlJFU0VUIiwgIlNFVCIpOwpAQCAtMjgwNCw3ICsyODE1LDcgQEAgcHNxbF9jb21w bGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCQkJICAiUk9V VElORSIsICJSVUxFIiwgIlNDSEVNQSIsICJTRVFVRU5DRSIsICJTRVJWRVIiLAogCQkJCQkgICJT VEFUSVNUSUNTIiwgIlNVQlNDUklQVElPTiIsICJUQUJMRSIsCiAJCQkJCSAgIlRBQkxFU1BBQ0Ui LCAiVEVYVCBTRUFSQ0giLCAiVFJBTlNGT1JNIEZPUiIsCi0JCQkJCSAgIlRSSUdHRVIiLCAiVFlQ RSIsICJWSUVXIik7CisJCQkJCSAgIlRSSUdHRVIiLCAiVFlQRSIsICJWQVJJQUJMRSIsICJWSUVX Iik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09NTUVOVCIsICJPTiIsICJBQ0NFU1MiLCAiTUVUSE9E IikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWNjZXNzX21ldGhv ZHMpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPTU1FTlQiLCAiT04iLCAiQ09OU1RSQUlOVCIpKQpA QCAtMzI2Niw3ICszMjc3LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGlu dCBzdGFydCwgaW50IGVuZCkKIC8qIENSRUFURSBUQUJMRSAtLS0gaXMgYWxsb3dlZCBpbnNpZGUg Q1JFQVRFIFNDSEVNQSwgc28gdXNlIFRhaWxNYXRjaGVzICovCiAJLyogQ29tcGxldGUgIkNSRUFU RSBURU1QL1RFTVBPUkFSWSIgd2l0aCB0aGUgcG9zc2libGUgdGVtcCBvYmplY3RzICovCiAJZWxz ZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURSIsICJURU1QfFRFTVBPUkFSWSIpKQotCQlDT01QTEVU RV9XSVRIKCJTRVFVRU5DRSIsICJUQUJMRSIsICJWSUVXIik7CisJCUNPTVBMRVRFX1dJVEgoIlNF UVVFTkNFIiwgIlRBQkxFIiwgIlZBUklBQkxFIiwgIlZJRVciKTsKIAkvKiBDb21wbGV0ZSAiQ1JF QVRFIFVOTE9HR0VEIiB3aXRoIFRBQkxFIG9yIFNFUVVFTkNFICovCiAJZWxzZSBpZiAoVGFpbE1h dGNoZXMoIkNSRUFURSIsICJVTkxPR0dFRCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJMRSIsICJT RVFVRU5DRSIpOwpAQCAtMzU4MCw2ICszNTkxLDEzIEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCI9 IiwgTWF0Y2hBbnlFeGNlcHQoIiopIikpKQogCQkJQ09NUExFVEVfV0lUSCgiLCIsICIpIik7CiAJ fQorLyogQ1JFQVRFIFZBUklBQkxFIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1B LCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KKwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5h bWU+IHdpdGggQVMgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiQ1JFQVRFIiwgIlZBUklBQkxF IiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJBUyIpOworCWVsc2UgaWYgKFRhaWxNYXRj aGVzKCJWQVJJQUJMRSIsIE1hdGNoQW55LCAiQVMiKSkKKwkJLyogQ29tcGxldGUgQ1JFQVRFIFZB UklBQkxFIDxuYW1lPiB3aXRoIEFTIHR5cGVzICovCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FV RVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcyk7CiAKIC8qIENSRUFURSBWSUVXIC0tLSBp cyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KIAkv KiBDb21wbGV0ZSBDUkVBVEUgWyBPUiBSRVBMQUNFIF0gVklFVyA8bmFtZT4gd2l0aCBBUyBvciBX SVRIICovCkBAIC0zODQzLDYgKzM4NjEsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIg KnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzKCJEUk9QIiwgIlRS QU5TRk9STSIsICJGT1IiLCBNYXRjaEFueSwgIkxBTkdVQUdFIiwgTWF0Y2hBbnkpKQogCQlDT01Q TEVURV9XSVRIKCJDQVNDQURFIiwgIlJFU1RSSUNUIik7CiAKKwkvKiBEUk9QIFZBUklBQkxFICov CisJZWxzZSBpZiAoTWF0Y2hlcygiRFJPUCIsICJWQVJJQUJMRSIpKQorCQlDT01QTEVURV9XSVRI X1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMpOworCWVsc2UgaWYgKE1h dGNoZXMoIkRST1AiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgoIkNB U0NBREUiLCAiUkVTVFJJQ1QiKTsKKwogLyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMo IkVYRUNVVEUiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcmVw YXJlZF9zdGF0ZW1lbnRzKTsKQEAgLTQwNDYsNyArNDA3MCw3IEBAIHBzcWxfY29tcGxldGlvbihj b25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSAqIG9iamVjdHMgc3VwcG9y dGVkLgogCQkgKi8KIAkJaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJERUZBVUxUIiwgIlBSSVZJ TEVHRVMiKSkKLQkJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIsICJTRVFVRU5DRVMiLCAiRlVOQ1RJ T05TIiwgIlBST0NFRFVSRVMiLCAiUk9VVElORVMiLCAiVFlQRVMiLCAiU0NIRU1BUyIpOworCQkJ Q09NUExFVEVfV0lUSCgiVEFCTEVTIiwgIlNFUVVFTkNFUyIsICJGVU5DVElPTlMiLCAiUFJPQ0VE VVJFUyIsICJST1VUSU5FUyIsICJUWVBFUyIsICJTQ0hFTUFTIiwgIlZBUklBQkxFUyIpOwogCQll bHNlCiAJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29m X2dyYW50YWJsZXMsCiAJCQkJCQkJCQkJCSJBTEwgRlVOQ1RJT05TIElOIFNDSEVNQSIsCkBAIC00 MDY4LDcgKzQwOTIsOCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0 YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJCQkiU0VRVUVOQ0UiLAogCQkJCQkJCQkJCQkiVEFCTEUi LAogCQkJCQkJCQkJCQkiVEFCTEVTUEFDRSIsCi0JCQkJCQkJCQkJCSJUWVBFIik7CisJCQkJCQkJ CQkJCSJUWVBFIiwKKwkJCQkJCQkJCQkJIlZBUklBQkxFIik7CiAJfQogCWVsc2UgaWYgKFRhaWxN YXRjaGVzKCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkFMTCIpIHx8CiAJCQkgVGFp bE1hdGNoZXMoIlJFVk9LRSIsICJHUkFOVCIsICJPUFRJT04iLCAiRk9SIiwgTWF0Y2hBbnksICJP TiIsICJBTEwiKSkKQEAgLTQwNzYsNyArNDEwMSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQkJCSAgIlBST0NFRFVSRVMgSU4gU0NI RU1BIiwKIAkJCQkJICAiUk9VVElORVMgSU4gU0NIRU1BIiwKIAkJCQkJICAiU0VRVUVOQ0VTIElO IFNDSEVNQSIsCi0JCQkJCSAgIlRBQkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJICAiVEFCTEVTIElO IFNDSEVNQSIsCisJCQkJCSAgIlZBUklBQkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChUYWls TWF0Y2hlcygiR1JBTlR8UkVWT0tFIiwgTWF0Y2hBbnksICJPTiIsICJGT1JFSUdOIikgfHwKIAkJ CSBUYWlsTWF0Y2hlcygiUkVWT0tFIiwgIkdSQU5UIiwgIk9QVElPTiIsICJGT1IiLCBNYXRjaEFu eSwgIk9OIiwgIkZPUkVJR04iKSkKIAkJQ09NUExFVEVfV0lUSCgiREFUQSBXUkFQUEVSIiwgIlNF UlZFUiIpOwpAQCAtNDExMiw2ICs0MTM4LDggQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIg KnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlf Zm9yX2xpc3Rfb2ZfdGFibGVzcGFjZXMpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiVFlQRSIp KQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5 cGVzKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlZBUklBQkxFIikpCisJCQlDT01QTEVURV9X SVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMpOwogCQllbHNlIGlm IChUYWlsTWF0Y2hlcygiR1JBTlQiLCBNYXRjaEFueSwgTWF0Y2hBbnksIE1hdGNoQW55KSkKIAkJ CUNPTVBMRVRFX1dJVEgoIlRPIik7CiAJCWVsc2UKQEAgLTQ0MTUsNyArNDQ0Myw3IEBAIHBzcWxf Y29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIFBS RVBBUkUgeHggQVMgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJQUkVQQVJFIiwgTWF0Y2hBbnksICJB UyIpKQotCQlDT01QTEVURV9XSVRIKCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCBJTlRPIiwg IkRFTEVURSBGUk9NIik7CisJCUNPTVBMRVRFX1dJVEgoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5T RVJUIElOVE8iLCAiREVMRVRFIEZST00iLCAiTEVUIik7CiAKIC8qCiAgKiBQUkVQQVJFIFRSQU5T QUNUSU9OIGlzIG1pc3Npbmcgb24gcHVycG9zZS4gSXQncyBpbnRlbmRlZCBmb3IgdHJhbnNhY3Rp b24KQEAgLTQ4ODMsNiArNDkxMSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0 LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xp c3Rfb2Zfcm9sZXMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZHYqIikpCiAJCUNPTVBM RVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzKTsKKwllbHNlIGlm IChUYWlsTWF0Y2hlc0NTKCJcXGRWKiIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShR dWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxc ZHgqIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZXh0ZW5zaW9u cyk7CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygiXFxkWCoiKSkKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvTWFrZWZpbGUgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL01ha2VmaWxlCmlu ZGV4IDE2N2Y5MWE2ZTMuLjUwN2YzODA4MjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvTWFrZWZpbGUKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZQpAQCAtODEsNyAr ODEsOCBAQCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5o IFwKIAlwZ19wdWJsaWNhdGlvbl9yZWwuaCBcCiAJcGdfc3Vic2NyaXB0aW9uLmggXAotCXBnX3N1 YnNjcmlwdGlvbl9yZWwuaAorCXBnX3N1YnNjcmlwdGlvbl9yZWwuaCBcCisJcGdfdmFyaWFibGUu aAogCiBHRU5FUkFURURfSEVBREVSUyA6PSAkKENBVEFMT0dfSEVBREVSUzolLmg9JV9kLmgpCiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL21lc29uLmJ1aWxkCmluZGV4IGY3MGQxZGFiYTUuLjZlZWM3OWQyZWUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9tZXNvbi5idWlsZApAQCAtNjksNiArNjksNyBAQCBjYXRhbG9nX2hlYWRlcnMgPSBb CiAgICdwZ19wdWJsaWNhdGlvbl9yZWwuaCcsCiAgICdwZ19zdWJzY3JpcHRpb24uaCcsCiAgICdw Z19zdWJzY3JpcHRpb25fcmVsLmgnLAorICAncGdfdmFyaWFibGUuaCcsCiBdCiAKICMgVGhlIC5k YXQgZmlsZXMgd2UgbmVlZCBjYW4ganVzdCBiZSBsaXN0ZWQgYWxwaGFiZXRpY2FsbHkuCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9uYW1lc3BhY2UuaAppbmRleCA4ZDQzNGQ0OGQ1Li4xOGVhNmFjODNhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvbmFtZXNwYWNlLmgKQEAgLTk3LDYgKzk3LDggQEAgZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5 cGlkKGNvbnN0IGNoYXIgKnR5cG5hbWUpOwogZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5cGlkRXh0 ZW5kZWQoY29uc3QgY2hhciAqdHlwbmFtZSwgYm9vbCB0ZW1wX29rKTsKIGV4dGVybiBib29sIFR5 cGVJc1Zpc2libGUoT2lkIHR5cGlkKTsKIAorZXh0ZXJuIGJvb2wgVmFyaWFibGVJc1Zpc2libGUo T2lkIHZhcmlkKTsKKwogZXh0ZXJuIEZ1bmNDYW5kaWRhdGVMaXN0IEZ1bmNuYW1lR2V0Q2FuZGlk YXRlcyhMaXN0ICpuYW1lcywKIAkJCQkJCQkJCQkJICAgaW50IG5hcmdzLCBMaXN0ICphcmduYW1l cywKIAkJCQkJCQkJCQkJICAgYm9vbCBleHBhbmRfdmFyaWFkaWMsCkBAIC0xNjksNiArMTcxLDgg QEAgZXh0ZXJuIFNlYXJjaFBhdGhNYXRjaGVyICpHZXRTZWFyY2hQYXRoTWF0Y2hlcihNZW1vcnlD b250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIFNlYXJjaFBhdGhNYXRjaGVyICpDb3B5U2VhcmNoUGF0 aE1hdGNoZXIoU2VhcmNoUGF0aE1hdGNoZXIgKnBhdGgpOwogZXh0ZXJuIGJvb2wgU2VhcmNoUGF0 aE1hdGNoZXNDdXJyZW50RW52aXJvbm1lbnQoU2VhcmNoUGF0aE1hdGNoZXIgKnBhdGgpOwogCitl eHRlcm4gT2lkCUxvb2t1cFZhcmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIg KnZhcm5hbWUsIGJvb2wgbWlzc2luZ19vayk7CisKIGV4dGVybiBPaWQJZ2V0X2NvbGxhdGlvbl9v aWQoTGlzdCAqY29sbG5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gT2lkCWdldF9jb252 ZXJzaW9uX29pZChMaXN0ICpjb25uYW1lLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIE9pZAlG aW5kRGVmYXVsdENvbnZlcnNpb25Qcm9jKGludDMyIGZvcl9lbmNvZGluZywgaW50MzIgdG9fZW5j b2RpbmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCmluZGV4IGQyNzJjZGYwOGIu LjUyOWQ1M2M2YmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9h Y2wuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKQEAgLTY4LDYg KzY4LDcgQEAgTUFLRV9TWVNDQUNIRShERUZBQ0xST0xFTlNQT0JKLCBwZ19kZWZhdWx0X2FjbF9y b2xlX25zcF9vYmpfaW5kZXgsIDgpOwogI2RlZmluZSBERUZBQ0xPQkpfRlVOQ1RJT04JCSdmJyAv KiBmdW5jdGlvbiAqLwogI2RlZmluZSBERUZBQ0xPQkpfVFlQRQkJCSdUJyAvKiB0eXBlICovCiAj ZGVmaW5lIERFRkFDTE9CSl9OQU1FU1BBQ0UJCSduJyAvKiBuYW1lc3BhY2UgKi8KKyNkZWZpbmUg REVGQUNMT0JKX1ZBUklBQkxFCQknVicgLyogdmFyaWFibGUgKi8KIAogI2VuZGlmCQkJCQkJCS8q IEVYUE9TRV9UT19DTElFTlRfQ09ERSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAw NmIyZjRiYTY2Li44MzdkOGRmYWUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTY0NzIs NiArNjQ3Miw5IEBACiAgIHByb25hbWUgPT4gJ3BnX2NvbGxhdGlvbl9pc192aXNpYmxlJywgcHJv Y29zdCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ2Jvb2wn LCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19jb2xsYXRpb25faXNfdmlz aWJsZScgfSwKK3sgb2lkID0+ICc5MjIxJywgZGVzY3IgPT4gJ2lzIHNlc3Npb24gdmFyaWFibGUg dmlzaWJsZSBpbiBzZWFyY2ggcGF0aD8nLAorICBwcm9uYW1lID0+ICdwZ192YXJpYWJsZV9pc192 aXNpYmxlJywgcHJvY29zdCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5 cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywgcHJvc3JjID0+ICdwZ192YXJpYWJs ZV9pc192aXNpYmxlJyB9LAogCiB7IG9pZCA9PiAnMjg1NCcsIGRlc2NyID0+ICdnZXQgT0lEIG9m IGN1cnJlbnQgc2Vzc2lvblwncyB0ZW1wIHNjaGVtYSwgaWYgYW55JywKICAgcHJvbmFtZSA9PiAn cGdfbXlfdGVtcF9zY2hlbWEnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdy JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4zODEwZTA0MGYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ192YXJpYWJsZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHBnX3ZhcmlhYmxlLmgKKyAqCSAgZGVmaW5pdGlvbiBvZiBzZXNzaW9uIHZhcmlhYmxl cyBzeXN0ZW0gY2F0YWxvZyAocGdfdmFyaWFibGVzKQorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5o CisgKgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmls ZSBhbmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfVkFSSUFCTEVfSAorI2RlZmluZSBQR19WQVJJQUJMRV9I CisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0 YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGVfZC5oIgorI2luY2x1ZGUg InV0aWxzL2FjbC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfdmFyaWFibGUgZGVm aW5pdGlvbi4gIGNwcCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0 YV9wZ192YXJpYWJsZQorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBnX3Zhcmlh YmxlLDkyMjIsVmFyaWFibGVSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8K KworCS8qIE9JRCBvZiBlbnRyeSBpbiBwZ190eXBlIGZvciB2YXJpYWJsZSdzIHR5cGUgKi8KKwlP aWQJCQl2YXJ0eXBlIEJLSV9MT09LVVAocGdfdHlwZSk7CisKKwkvKiB2YXJpYWJsZSBuYW1lICov CisJTmFtZURhdGEJdmFybmFtZTsKKworCS8qIE9JRCBvZiBuYW1lc3BhY2UgY29udGFpbmluZyB2 YXJpYWJsZSBjbGFzcyAqLworCU9pZAkJCXZhcm5hbWVzcGFjZSBCS0lfTE9PS1VQKHBnX25hbWVz cGFjZSk7CisKKwkvKiB2YXJpYWJsZSBvd25lciAqLworCU9pZAkJCXZhcm93bmVyIEJLSV9MT09L VVAocGdfYXV0aGlkKTsKKworCS8qIHR5cG1vZCBmb3IgdmFyaWFibGUncyB0eXBlICovCisJaW50 MzIJCXZhcnR5cG1vZCBCS0lfREVGQVVMVCgtMSk7CisKKwkvKiB2YXJpYWJsZSBjb2xsYXRpb24g Ki8KKwlPaWQJCQl2YXJjb2xsYXRpb24gQktJX0RFRkFVTFQoMCkgQktJX0xPT0tVUF9PUFQocGdf Y29sbGF0aW9uKTsKKworCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5n dGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KKworCS8qIGFjY2VzcyBwZXJtaXNzaW9ucyAqLworCWFj bGl0ZW0JCXZhcmFjbFsxXSBCS0lfREVGQVVMVChfbnVsbF8pOworCisjZW5kaWYKK30gRm9ybURh dGFfcGdfdmFyaWFibGU7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3Zhcmlh YmxlIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9y bWF0IG9mIHRoZSBwZ192YXJpYWJsZSByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAq LwordHlwZWRlZiBGb3JtRGF0YV9wZ192YXJpYWJsZSAqRm9ybV9wZ192YXJpYWJsZTsKKworREVD TEFSRV9UT0FTVChwZ192YXJpYWJsZSwgOTIyMywgOTIyNCk7CisKK0RFQ0xBUkVfVU5JUVVFX0lO REVYX1BLRVkocGdfdmFyaWFibGVfb2lkX2luZGV4LCA5MjI1LCBWYXJpYWJsZU9pZEluZGV4SWQs IHBnX3ZhcmlhYmxlLCBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgo cGdfdmFyaWFibGVfdmFybmFtZV9uc3BfaW5kZXgsIDkyMjYsIFZhcmlhYmxlTmFtZU5zcEluZGV4 SWQsIHBnX3ZhcmlhYmxlLCBidHJlZSh2YXJuYW1lIG5hbWVfb3BzLCB2YXJuYW1lc3BhY2Ugb2lk X29wcykpOworCitleHRlcm4gT2JqZWN0QWRkcmVzcyBDcmVhdGVWYXJpYWJsZShQYXJzZVN0YXRl ICpwc3RhdGUsCisJCQkJCQkJCQlDcmVhdGVTZXNzaW9uVmFyU3RtdCAqc3RtdCk7CitleHRlcm4g dm9pZCBEcm9wVmFyaWFibGVCeUlkKE9pZCB2YXJpZCk7CisKK01BS0VfU1lTQ0FDSEUoVkFSSUFC TEVOQU1FTlNQLCBwZ192YXJpYWJsZV92YXJuYW1lX25zcF9pbmRleCwgOCk7CitNQUtFX1NZU0NB Q0hFKFZBUklBQkxFT0lELCBwZ192YXJpYWJsZV9vaWRfaW5kZXgsIDgpOworCisjZW5kaWYJCQkJ CQkJLyogUEdfVkFSSUFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDg1YTYyYjUz OGUuLjgwZWE1OTI4ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIzMDksNiArMjMwOSw3 IEBAIHR5cGVkZWYgZW51bSBPYmplY3RUeXBlCiAJT0JKRUNUX1RTVEVNUExBVEUsCiAJT0JKRUNU X1RZUEUsCiAJT0JKRUNUX1VTRVJfTUFQUElORywKKwlPQkpFQ1RfVkFSSUFCTEUsCiAJT0JKRUNU X1ZJRVcsCiB9IE9iamVjdFR5cGU7CiAKQEAgLTM0MjUsNiArMzQyNiwyMSBAQCB0eXBlZGVmIHN0 cnVjdCBBbHRlclN0YXRzU3RtdAogCWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBza2lwIGVycm9yIGlm IHN0YXRpc3RpY3Mgb2JqZWN0IGlzIG1pc3NpbmcgKi8KIH0gQWx0ZXJTdGF0c1N0bXQ7CiAKKwor LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCXtDcmVhdGV8QWx0ZXJ9IFZBUklBQkxFIFN0 YXRlbWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBD cmVhdGVTZXNzaW9uVmFyU3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJUmFuZ2VWYXIgICAqdmFy aWFibGU7CQkvKiB0aGUgdmFyaWFibGUgdG8gY3JlYXRlICovCisJVHlwZU5hbWUgICAqdHlwZU5h bWU7CQkvKiB0aGUgdHlwZSBvZiB2YXJpYWJsZSAqLworCUNvbGxhdGVDbGF1c2UgKmNvbGxDbGF1 c2U7CisJYm9vbAkJaWZfbm90X2V4aXN0czsJLyogZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4 aXN0cyAqLworfSBDcmVhdGVTZXNzaW9uVmFyU3RtdDsKKworCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKgkJQ3JlYXRlIEZ1bmN0aW9uIFN0YXRlbWVudAogICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGY3ZmU4MzRjZjQuLmM4ODRjZDVjNDYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmgKQEAgLTQ4Niw2ICs0ODYsOCBAQCBQR19LRVlXT1JEKCJ2YWxpZGF0b3IiLCBW QUxJREFUT1IsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZh bHVlIiwgVkFMVUVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgidmFsdWVzIiwgVkFMVUVTLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgidmFyY2hhciIsIFZBUkNIQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJ2YXJpYWJsZSIsIFZBUklBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJ2YXJpYWJsZXMiLCBWQVJJQUJMRVMsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZhcmlhZGljIiwgVkFSSUFESUMsIFJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ2YXJ5aW5nIiwgVkFSWUlORywg VU5SRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInZlcmJvc2UiLCBWRVJC T1NFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3Qu aAppbmRleCA3ZmRjZWM2ZGQ5Li45NDY1ZGY3YjJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90 Y29wL2NtZHRhZ2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAt NjgsNiArNjgsNyBAQCBQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RSQU5TRk9STSwgIkFMVEVSIFRS QU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQUxURVJfVFJJ R0dFUiwgIkFMVEVSIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01E VEFHX0FMVEVSX1RZUEUsICJBTFRFUiBUWVBFIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCiBQR19DTURU QUcoQ01EVEFHX0FMVEVSX1VTRVJfTUFQUElORywgIkFMVEVSIFVTRVIgTUFQUElORyIsIHRydWUs IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVkFSSUFCTEUsICJBTFRFUiBW QVJJQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQUxURVJfVklF VywgIkFMVEVSIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0FO QUxZWkUsICJBTkFMWVpFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdf QkVHSU4sICJCRUdJTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCkBAIC0xMjMsNiArMTI0LDcgQEAg UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFJBTlNGT1JNLCAiQ1JFQVRFIFRSQU5TRk9STSIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSSUdHRVIsICJDUkVB VEUgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1RZUEUsICJDUkVBVEUgVFlQRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX1VTRVJfTUFQUElORywgIkNSRUFURSBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9WQVJJQUJMRSwgIkNSRUFURSBWQVJJ QUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1ZJRVcs ICJDUkVBVEUgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfREVB TExPQ0FURSwgIkRFQUxMT0NBVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENN RFRBR19ERUFMTE9DQVRFX0FMTCwgIkRFQUxMT0NBVEUgQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKQEAgLTE3NSw2ICsxNzcsNyBAQCBQR19DTURUQUcoQ01EVEFHX0RST1BfVFJBTlNGT1JNLCAi RFJPUCBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0RS T1BfVFJJR0dFUiwgIkRST1AgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRB RyhDTURUQUdfRFJPUF9UWVBFLCAiRFJPUCBUWVBFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdf Q01EVEFHKENNRFRBR19EUk9QX1VTRVJfTUFQUElORywgIkRST1AgVVNFUiBNQVBQSU5HIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1ZBUklBQkxFLCAiRFJPUCBW QVJJQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfRFJPUF9WSUVX LCAiRFJPUCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19FWEVD VVRFLCAiRVhFQ1VURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0VY UExBSU4sICJFWFBMQUlOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL2FjbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKaW5kZXggNzMxZDg0 YjJhOS4uOThhYWI5ODIyOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKQEAgLTE2OSw2ICsxNjksNyBAQCB0eXBlZGVmIHN0 cnVjdCBBcnJheVR5cGUgQWNsOwogI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUEJCShBQ0xf VVNBR0V8QUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVEFCTEVTUEFDRQkoQUNM X0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVFlQRQkJCShBQ0xfVVNBR0UpCisjZGVm aW5lIEFDTF9BTExfUklHSFRTX1ZBUklBQkxFCQkoQUNMX1NFTEVDVHxBQ0xfVVBEQVRFKQogCiAv KiBvcGVyYXRpb24gY29kZXMgZm9yIHBnXypfYWNsbWFzayAqLwogdHlwZWRlZiBlbnVtCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oCmluZGV4IDIwNDQ2ZjZmODMuLjhhMzY4NGU3MTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgZXh0ZXJuIGNoYXIgZ2V0X2Z1bmNfcHJva2luZChP aWQgZnVuY2lkKTsKIGV4dGVybiBib29sIGdldF9mdW5jX2xlYWtwcm9vZihPaWQgZnVuY2lkKTsK IGV4dGVybiBSZWdQcm9jZWR1cmUgZ2V0X2Z1bmNfc3VwcG9ydChPaWQgZnVuY2lkKTsKIGV4dGVy biBPaWQJZ2V0X3JlbG5hbWVfcmVsaWQoY29uc3QgY2hhciAqcmVsbmFtZSwgT2lkIHJlbG5hbWVz cGFjZSk7CitleHRlcm4gT2lkCWdldF92YXJuYW1lX3ZhcmlkKGNvbnN0IGNoYXIgKnZhcm5hbWUs IE9pZCB2YXJuYW1lc3BhY2UpOwogZXh0ZXJuIGNoYXIgKmdldF9yZWxfbmFtZShPaWQgcmVsaWQp OwogZXh0ZXJuIE9pZAlnZXRfcmVsX25hbWVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAln ZXRfcmVsX3R5cGVfaWQoT2lkIHJlbGlkKTsKQEAgLTIwNiw2ICsyMDcsMTQgQEAgZXh0ZXJuIGNo YXIgKmdldF9wdWJsaWNhdGlvbl9uYW1lKE9pZCBwdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4 dGVybiBPaWQJZ2V0X3N1YnNjcmlwdGlvbl9vaWQoY29uc3QgY2hhciAqc3VibmFtZSwgYm9vbCBt aXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpnZXRfc3Vic2NyaXB0aW9uX25hbWUoT2lkIHN1Ymlk LCBib29sIG1pc3Npbmdfb2spOwogCitleHRlcm4gY2hhciAqZ2V0X3Nlc3Npb25fdmFyaWFibGVf bmFtZShPaWQgdmFyaWQpOworZXh0ZXJuIE9pZAlnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3Bh Y2UoT2lkIHZhcmlkKTsKK2V4dGVybiBPaWQJZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZShPaWQg dmFyaWQpOworZXh0ZXJuIHZvaWQgZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZV90eXBtb2RfY29s bGlkKE9pZCB2YXJpZCwKKwkJCQkJCQkJCQkJCQlPaWQgKnR5cGlkLAorCQkJCQkJCQkJCQkJCWlu dDMyICp0eXBtb2QsCisJCQkJCQkJCQkJCQkJT2lkICpjb2xsaWQpOworCiAjZGVmaW5lIHR5cGVf aXNfYXJyYXkodHlwaWQpICAoZ2V0X2VsZW1lbnRfdHlwZSh0eXBpZCkgIT0gSW52YWxpZE9pZCkK IC8qIHR5cGVfaXNfYXJyYXlfZG9tYWluIGFjY2VwdHMgYm90aCBwbGFpbiBhcnJheXMgYW5kIGRv bWFpbnMgb3ZlciBhcnJheXMgKi8KICNkZWZpbmUgdHlwZV9pc19hcnJheV9kb21haW4odHlwaWQp ICAoZ2V0X2Jhc2VfZWxlbWVudF90eXBlKHR5cGlkKSAhPSBJbnZhbGlkT2lkKQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kZXBlbmRlbmN5Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZGVwZW5kZW5jeS5vdXQKaW5kZXggNzRkOWZmMjk5OC4uYzMzNmY2N2E1 OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kZXBlbmRlbmN5Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RlcGVuZGVuY3kub3V0CkBAIC0xNTEsMyAr MTUxLDIwIEBAIG93bmVyIG9mIHR5cGUgZGVwdGVzdF90CiBEUk9QIE9XTkVEIEJZIHJlZ3Jlc3Nf ZGVwX3VzZXIyLCByZWdyZXNzX2RlcF91c2VyMDsKIERST1AgVVNFUiByZWdyZXNzX2RlcF91c2Vy MjsKIERST1AgVVNFUiByZWdyZXNzX2RlcF91c2VyMDsKKy0tIGRlcGVuZGVuY3kgb24gdHlwZQor Q1JFQVRFIERPTUFJTiB2YXJkb21haW4gQVMgaW50OworQ1JFQVRFIFRZUEUgdmFydHlwZSBBUyAo YSBpbnQsIGIgaW50LCBjIHZhcmRvbWFpbik7CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyB2YXJ0 eXBlOworLS0gc2hvdWxkIGZhaWwKK0RST1AgRE9NQUlOIHZhcmRvbWFpbjsKK0VSUk9SOiAgY2Fu bm90IGRyb3AgdHlwZSB2YXJkb21haW4gYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBp dAorREVUQUlMOiAgY29sdW1uIGMgb2YgY29tcG9zaXRlIHR5cGUgdmFydHlwZSBkZXBlbmRzIG9u IHR5cGUgdmFyZG9tYWluCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUg ZGVwZW5kZW50IG9iamVjdHMgdG9vLgorRFJPUCBUWVBFIHZhcnR5cGU7CitFUlJPUjogIGNhbm5v dCBkcm9wIHR5cGUgdmFydHlwZSBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitE RVRBSUw6ICBzZXNzaW9uIHZhcmlhYmxlIHZhcjEgZGVwZW5kcyBvbiB0eXBlIHZhcnR5cGUKK0hJ TlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0 b28uCistLSBjbGVhbiB1cAorRFJPUCBWQVJJQUJMRSB2YXIxOworRFJPUCBUWVBFIHZhcnR5cGU7 CitEUk9QIERPTUFJTiB2YXJkb21haW47CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29pZGpvaW5zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMu b3V0CmluZGV4IDIxNWViODk5YmUuLmQ5OTUzMzIxNDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvb2lkam9pbnMub3V0CkBAIC0yNjYsMyArMjY2LDcgQEAgTk9USUNFOiAgY2hlY2tpbmcgcGdf c3Vic2NyaXB0aW9uIHtzdWJkYmlkfSA9PiBwZ19kYXRhYmFzZSB7b2lkfQogTk9USUNFOiAgY2hl Y2tpbmcgcGdfc3Vic2NyaXB0aW9uIHtzdWJvd25lcn0gPT4gcGdfYXV0aGlkIHtvaWR9CiBOT1RJ Q0U6ICBjaGVja2luZyBwZ19zdWJzY3JpcHRpb25fcmVsIHtzcnN1YmlkfSA9PiBwZ19zdWJzY3Jp cHRpb24ge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3N1YnNjcmlwdGlvbl9yZWwge3NycmVs aWR9ID0+IHBnX2NsYXNzIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ192YXJpYWJsZSB7dmFy dHlwZX0gPT4gcGdfdHlwZSB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfdmFyaWFibGUge3Zh cm5hbWVzcGFjZX0gPT4gcGdfbmFtZXNwYWNlIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ192 YXJpYWJsZSB7dmFyb3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcg cGdfdmFyaWFibGUge3ZhcmNvbGxhdGlvbn0gPT4gcGdfY29sbGF0aW9uIHtvaWR9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wc3FsLm91dAppbmRleCAzYmJlNGM1Zjk3Li5jODkwNjc0OTBmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTU4MjgsNiArNTgyOCwzMCBAQCBDT01NSVQ7CiAj IGZpbmFsIE9OX0VSUk9SX1JPTExCQUNLOiBvZmYKIERST1AgVEFCTEUgYmxhOwogRFJPUCBGVU5D VElPTiBwc3FsX2Vycm9yOworLS0gc2Vzc2lvbiB2YXJpYWJsZSB0ZXN0CitDUkVBVEUgUk9MRSBy ZWdyZXNzX3ZhcmlhYmxlX293bmVyOworU0VUIFJPTEUgVE8gcmVncmVzc192YXJpYWJsZV9vd25l cjsKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIHZhcmNoYXIgQ09MTEFURSAiQyI7CitcZFYrIHZh cjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB2 YXJpYWJsZXMKKyBTY2hlbWEgfCBOYW1lIHwgICAgICAgVHlwZSAgICAgICAgfCBDb2xsYXRpb24g fCAgICAgICAgIE93bmVyICAgICAgICAgIHwgQWNjZXNzIHByaXZpbGVnZXMgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBw dWJsaWMgfCB2YXIxIHwgY2hhcmFjdGVyIHZhcnlpbmcgfCBDICAgICAgICAgfCByZWdyZXNzX3Zh cmlhYmxlX293bmVyIHwgICAgICAgICAgICAgICAgICAgfCAKKygxIHJvdykKKworR1JBTlQgU0VM RUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gUFVCTElDOworQ09NTUVOVCBPTiBWQVJJQUJMRSB2YXIx IElTICdzb21lIGRlc2NyaXB0aW9uJzsKK1xkVisgdmFyMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHZhcmlhYmxl cworIFNjaGVtYSB8IE5hbWUgfCAgICAgICBUeXBlICAgICAgICB8IENvbGxhdGlvbiB8ICAgICAg ICAgT3duZXIgICAgICAgICAgfCAgICAgICAgICAgICAgICBBY2Nlc3MgcHJpdmlsZWdlcyAgICAg ICAgICAgICAgICAgfCAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIHB1YmxpYyB8IHZhcjEgfCBjaGFyYWN0ZXIgdmFyeWluZyB8IEMgICAgICAgICB8IHJl Z3Jlc3NfdmFyaWFibGVfb3duZXIgfCByZWdyZXNzX3ZhcmlhYmxlX293bmVyPXJ3L3JlZ3Jlc3Nf dmFyaWFibGVfb3duZXIrfCBzb21lIGRlc2NyaXB0aW9uCisgICAgICAgIHwgICAgICB8ICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ID1yL3Jl Z3Jlc3NfdmFyaWFibGVfb3duZXIgICAgICAgICAgICAgICAgICAgICAgICB8IAorKDEgcm93KQor CitEUk9QIFZBUklBQkxFIHZhcjE7CitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBST0xFIHJl Z3Jlc3NfdmFyaWFibGVfb3duZXI7CiAtLSBjaGVjayBkZXNjcmliaW5nIGludmFsaWQgbXVsdGlw YXJ0IG5hbWVzCiBcZEEgcmVncmVzc2lvbi5oZWFwCiBpbXByb3BlciBxdWFsaWZpZWQgbmFtZSAo dG9vIG1hbnkgZG90dGVkIG5hbWVzKTogcmVncmVzc2lvbi5oZWFwCkBAIC02MDQ5LDYgKzYwNzMs MTIgQEAgY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiBub25l c3VjaC5wdWJsaWMuZnVuY19kZXBzX3N0YXQKIGltcHJvcGVyIHF1YWxpZmllZCBuYW1lICh0b28g bWFueSBkb3R0ZWQgbmFtZXMpOiByZWdyZXNzaW9uLm15ZXZ0CiBcZHkgbm9uZXN1Y2gubXlldnQK IGltcHJvcGVyIHF1YWxpZmllZCBuYW1lICh0b28gbWFueSBkb3R0ZWQgbmFtZXMpOiBub25lc3Vj aC5teWV2dAorXGRWIGhvc3QucmVncmVzc2lvbi5wdWJsaWMudmFyCitpbXByb3BlciBxdWFsaWZp ZWQgbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogaG9zdC5yZWdyZXNzaW9uLnB1YmxpYy52 YXIKK1xkViByZWdyZXNzaW9ufG15ZGIucHVibGljLnZhcgorY3Jvc3MtZGF0YWJhc2UgcmVmZXJl bmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiByZWdyZXNzaW9ufG15ZGIucHVibGljLnZhcgorXGRW IG5vbmVzdWNoLnB1YmxpYy52YXIKK2Nyb3NzLWRhdGFiYXNlIHJlZmVyZW5jZXMgYXJlIG5vdCBp bXBsZW1lbnRlZDogbm9uZXN1Y2gucHVibGljLnZhcgogLS0gY2hlY2sgdGhhdCBkb3RzIHdpdGhp biBxdW90ZWQgbmFtZSBzZWdtZW50cyBhcmUgbm90IGNvdW50ZWQKIFxkQSAibm8uc3VjaC5hY2Nl c3MubWV0aG9kIgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwpAQCAtNjI4Myw2ICs2MzEzLDEyIEBA IExpc3Qgb2Ygc2NoZW1hcwogLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0KICgwIHJvd3MpCiAKK1xkViAibm8uc3VjaC52YXJpYWJsZSIKKyAgICAgICAg ICAgIExpc3Qgb2YgdmFyaWFibGVzCisgU2NoZW1hIHwgTmFtZSB8IFR5cGUgfCBDb2xsYXRpb24g fCBPd25lciAKKy0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLQorKDAg cm93cykKKwogLS0gYWdhaW4sIGJ1dCB3aXRoIGRvdHRlZCBzY2hlbWEgcXVhbGlmaWNhdGlvbnMu CiBcZEEgIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5hY2Nlc3MubWV0aG9kIgogaW1wcm9wZXIg cXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICJuby5zdWNoLnNjaGVtYSIu Im5vLnN1Y2guYWNjZXNzLm1ldGhvZCIKQEAgLTY0NTIsNiArNjQ4OCwxMiBAQCBpbXByb3BlciBx dWFsaWZpZWQgbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogIm5vLnN1Y2guc2NoZW1hIi4i bm8uc3VjaC5pbnN0YQogCiBcZHkgIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5ldmVudC50cmln Z2VyIgogaW1wcm9wZXIgcXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICJu by5zdWNoLnNjaGVtYSIuIm5vLnN1Y2guZXZlbnQudHJpZ2dlciIKK1xkViAibm8uc3VjaC5zY2hl bWEiLiJuby5zdWNoLnZhcmlhYmxlIgorICAgICAgICAgICAgTGlzdCBvZiB2YXJpYWJsZXMKKyBT Y2hlbWEgfCBOYW1lIHwgVHlwZSB8IENvbGxhdGlvbiB8IE93bmVyIAorLS0tLS0tLS0rLS0tLS0t Ky0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tCisoMCByb3dzKQorCiAtLSBhZ2FpbiwgYnV0IHdp dGggY3VycmVudCBkYXRhYmFzZSBhbmQgZG90dGVkIHNjaGVtYSBxdWFsaWZpY2F0aW9ucy4KIFxk dCByZWdyZXNzaW9uLiJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2gudGFibGUucmVsYXRpb24iCiAg ICAgICBMaXN0IG9mIHJlbGF0aW9ucwpAQCAtNjU4NSw2ICs2NjI3LDEyIEBAIExpc3Qgb2YgdGV4 dCBzZWFyY2ggdGVtcGxhdGVzCiAtLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tCiAoMCByb3dzKQogCitcZFYgcmVncmVzc2lvbi4ibm8u c3VjaC5zY2hlbWEiLiJuby5zdWNoLnZhcmlhYmxlIgorICAgICAgICAgICAgTGlzdCBvZiB2YXJp YWJsZXMKKyBTY2hlbWEgfCBOYW1lIHwgVHlwZSB8IENvbGxhdGlvbiB8IE93bmVyIAorLS0tLS0t LS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tCisoMCByb3dzKQorCiAtLSBhZ2Fp biwgYnV0IHdpdGggZG90dGVkIGRhdGFiYXNlIGFuZCBkb3R0ZWQgc2NoZW1hIHF1YWxpZmljYXRp b25zLgogXGR0ICJuby5zdWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLnRh YmxlLnJlbGF0aW9uIgogY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVu dGVkOiAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC50YWJsZS5y ZWxhdGlvbiIKQEAgLTY2MzIsNiArNjY4MCw4IEBAIGNyb3NzLWRhdGFiYXNlIHJlZmVyZW5jZXMg YXJlIG5vdCBpbXBsZW1lbnRlZDogIm5vLnN1Y2guZGF0YWJhc2UiLiJuby5zdWNoLnNjaGVtCiBj cm9zcy1kYXRhYmFzZSByZWZlcmVuY2VzIGFyZSBub3QgaW1wbGVtZW50ZWQ6ICJuby5zdWNoLmRh dGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLmRhdGEudHlwZSIKIFxkWCAibm8uc3Vj aC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5zdGF0aXN0aWNz IgogY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAibm8uc3Vj aC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5zdGF0aXN0aWNz IgorXGRWICJuby5zdWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLnZhcmlh YmxlIgorY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAibm8u c3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC52YXJpYWJsZSIKIC0tIGNo ZWNrIFxkcmcgYW5kIFxkdQogQ1JFQVRFIFJPTEUgcmVncmVzc19kdV9yb2xlMDsKIENSRUFURSBS T0xFIHJlZ3Jlc3NfZHVfcm9sZTE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Nlc3Npb25fdmFyaWFibGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vz c2lvbl92YXJpYWJsZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmFjYTc2NjA0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Nlc3Npb25fdmFyaWFibGVzLm91dApAQCAtMCwwICsxLDU3IEBACitDUkVBVEUgUk9MRSByZWdy ZXNzX3ZhcmlhYmxlX293bmVyOworLS0gc2hvdWxkIGJlIG9rCitDUkVBVEUgVkFSSUFCTEUgdmFy MSBBUyBpbnQ7CistLSBzaG91bGQgZmFpbCwgcHNldWRvdHlwZXMgYXJlIG5vdCBhbGxvd2VkCitD UkVBVEUgVkFSSUFCTEUgdmFyMiBBUyBhbnllbGVtZW50OworRVJST1I6ICBzZXNzaW9uIHZhcmlh YmxlIGNhbm5vdCBiZSBwc2V1ZG8tdHlwZSBhbnllbGVtZW50CistLSBzaG91bGQgYmUgb2ssIGRv IG5vdGhpbmcKK0RST1AgVkFSSUFCTEUgSUYgRVhJU1RTIHZhcjI7CitOT1RJQ0U6ICBzZXNzaW9u IHZhcmlhYmxlICJ2YXIyIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcKKy0tIGRvIG5vdGhpbmcK K0NSRUFURSBWQVJJQUJMRSBJRiBOT1QgRVhJU1RTIHZhcjEgQVMgaW50OworTk9USUNFOiAgc2Vz c2lvbiB2YXJpYWJsZSAidmFyMSIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nCistLSBzaG91bGQg ZmFpbAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworRVJST1I6ICBzZXNzaW9uIHZhcmlh YmxlICJ2YXIxIiBhbHJlYWR5IGV4aXN0cworLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxF IElGIEVYSVNUUyB2YXIxOworLS0gY2hlY2sgY29tbWVudCBvbiB2YXJpYWJsZQorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50OworQ09NTUVOVCBPTiBWQVJJQUJMRSB2YXIxIElTICdzb21lIHZh cmlhYmxlIGNvbW1lbnQnOworU0VMRUNUIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKG9pZCwg J3BnX3ZhcmlhYmxlJykgRlJPTSBwZ192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3ZhcjEnOwor ICAgIG9ial9kZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc29tZSB2 YXJpYWJsZSBjb21tZW50CisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdmFyMTsKKy0tLSBjaGVj ayBhY2Nlc3MgcmlnaHRzIGFuZCBzdXBwb3J0ZWQgQUxURVIKK0NSRUFURSBTQ0hFTUEgc3ZhcnRl c3Q7CitHUkFOVCBBTEwgT04gU0NIRU1BIHN2YXJ0ZXN0IFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3du ZXI7CitDUkVBVEUgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMSBBUyBpbnQ7CitDUkVBVEUgUk9MRSBy ZWdyZXNzX3ZhcmlhYmxlX3JlYWRlcjsKK0dSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSBzdmFydGVz dC52YXIxIFRPIHJlZ3Jlc3NfdmFyaWFibGVfcmVhZGVyOworUkVWT0tFIEFMTCBPTiBWQVJJQUJM RSBzdmFydGVzdC52YXIxIEZST00gcmVncmVzc192YXJpYWJsZV9yZWFkZXI7CitBTFRFUiBWQVJJ QUJMRSBzdmFydGVzdC52YXIxIE9XTkVSIFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7CitBTFRF UiBWQVJJQUJMRSBzdmFydGVzdC52YXIxIFJFTkFNRSBUTyB2YXJ4eDsKK0FMVEVSIFZBUklBQkxF IHN2YXJ0ZXN0LnZhcnh4IFNFVCBTQ0hFTUEgcHVibGljOworRFJPUCBWQVJJQUJMRSBwdWJsaWMu dmFyeHg7CitBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMKKyAgIEZPUiBST0xFIHJlZ3Jlc3NfdmFy aWFibGVfb3duZXIKKyAgIElOIFNDSEVNQSBzdmFydGVzdAorICAgR1JBTlQgU0VMRUNUIE9OIFZB UklBQkxFUyBUTyByZWdyZXNzX3ZhcmlhYmxlX3JlYWRlcjsKKy0tIGNyZWF0aW5nIHZhcmlhYmxl IHdpdGggZGVmYXVsdCBwcml2aWxlZ2VzCitTRVQgUk9MRSBUTyByZWdyZXNzX3ZhcmlhYmxlX293 bmVyOworQ1JFQVRFIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjEgQVMgaW50OworU0VUIFJPTEUgVE8g REVGQVVMVDsKK1xkVisgc3ZhcnRlc3QudmFyMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHZhcmlhYmxlcworICBTY2hlbWEg IHwgTmFtZSB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCAgICAgICAgIE93bmVyICAgICAgICAgIHwg ICAgICAgICAgICAgICAgQWNjZXNzIHByaXZpbGVnZXMgICAgICAgICAgICAgICAgIHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBzdmFydGVzdCB8IHZhcjEgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgcmVncmVzc192YXJpYWJsZV9vd25lciB8IHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI9 cncvcmVncmVzc192YXJpYWJsZV9vd25lcit8IAorICAgICAgICAgIHwgICAgICB8ICAgICAgICAg fCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVncmVzc192YXJpYWJsZV9y ZWFkZXI9ci9yZWdyZXNzX3ZhcmlhYmxlX293bmVyIHwgCisoMSByb3cpCisKK0RST1AgVkFSSUFC TEUgc3ZhcnRlc3QudmFyMTsKK0RST1AgU0NIRU1BIHN2YXJ0ZXN0OworRFJPUCBST0xFIHJlZ3Jl c3NfdmFyaWFibGVfb3duZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAyNDI5 ZWMyYmJhLi5lZDY4OTNkNDc5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEx MSw3ICsxMTEsNyBAQCB0ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2RpbmcganNvbnBhdGgganNv bnBhdGhfZW5jb2RpbmcganNvbmJfanNvbnBhdGggc3FsanNvbgogIyBOQjogdGVtcC5zcWwgZG9l cyBhIHJlY29ubmVjdCB3aGljaCB0cmFuc2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNv IGtlZXAgdGhpcyBwYXJhbGxlbCBncm91cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0t LS0KLXRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdl ZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBv bHltb3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6 IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJl cGFyZSBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlz bSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgc2Vzc2lvbl92YXJpYWJs ZXMKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2RlcGVuZGVuY3kuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZGVwZW5kZW5jeS5zcWwKaW5kZXggOGQ3NGVkNzEyMi4uNmMxOGI3Zjg0MCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGVwZW5kZW5jeS5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZGVwZW5kZW5jeS5zcWwKQEAgLTExNCwzICsxMTQsMTcgQEAgRFJP UCBVU0VSIHJlZ3Jlc3NfZGVwX3VzZXIyOwogRFJPUCBPV05FRCBCWSByZWdyZXNzX2RlcF91c2Vy MiwgcmVncmVzc19kZXBfdXNlcjA7CiBEUk9QIFVTRVIgcmVncmVzc19kZXBfdXNlcjI7CiBEUk9Q IFVTRVIgcmVncmVzc19kZXBfdXNlcjA7CisKKy0tIGRlcGVuZGVuY3kgb24gdHlwZQorQ1JFQVRF IERPTUFJTiB2YXJkb21haW4gQVMgaW50OworQ1JFQVRFIFRZUEUgdmFydHlwZSBBUyAoYSBpbnQs IGIgaW50LCBjIHZhcmRvbWFpbik7CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyB2YXJ0eXBlOwor CistLSBzaG91bGQgZmFpbAorRFJPUCBET01BSU4gdmFyZG9tYWluOworRFJPUCBUWVBFIHZhcnR5 cGU7CisKKy0tIGNsZWFuIHVwCitEUk9QIFZBUklBQkxFIHZhcjE7CitEUk9QIFRZUEUgdmFydHlw ZTsKK0RST1AgRE9NQUlOIHZhcmRvbWFpbjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BzcWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKaW5kZXggM2IzYzZm NmUyOS4uYjgwZDU2YTI3YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKQEAgLTE1OTEsNiArMTU5MSwx OSBAQCBDT01NSVQ7CiBEUk9QIFRBQkxFIGJsYTsKIERST1AgRlVOQ1RJT04gcHNxbF9lcnJvcjsK IAorLS0gc2Vzc2lvbiB2YXJpYWJsZSB0ZXN0CitDUkVBVEUgUk9MRSByZWdyZXNzX3ZhcmlhYmxl X293bmVyOworU0VUIFJPTEUgVE8gcmVncmVzc192YXJpYWJsZV9vd25lcjsKK0NSRUFURSBWQVJJ QUJMRSB2YXIxIEFTIHZhcmNoYXIgQ09MTEFURSAiQyI7CitcZFYrIHZhcjEKK0dSQU5UIFNFTEVD VCBPTiBWQVJJQUJMRSB2YXIxIFRPIFBVQkxJQzsKK0NPTU1FTlQgT04gVkFSSUFCTEUgdmFyMSBJ UyAnc29tZSBkZXNjcmlwdGlvbic7CitcZFYrIHZhcjEKK0RST1AgVkFSSUFCTEUgdmFyMTsKKwor U0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgUk9MRSByZWdyZXNzX3ZhcmlhYmxlX293bmVyOwor CiAtLSBjaGVjayBkZXNjcmliaW5nIGludmFsaWQgbXVsdGlwYXJ0IG5hbWVzCiBcZEEgcmVncmVz c2lvbi5oZWFwCiBcZEEgbm9uZXN1Y2guaGVhcApAQCAtMTcwMiw2ICsxNzE1LDkgQEAgRFJPUCBG VU5DVElPTiBwc3FsX2Vycm9yOwogXGRYIG5vbmVzdWNoLnB1YmxpYy5mdW5jX2RlcHNfc3RhdAog XGR5IHJlZ3Jlc3Npb24ubXlldnQKIFxkeSBub25lc3VjaC5teWV2dAorXGRWIGhvc3QucmVncmVz c2lvbi5wdWJsaWMudmFyCitcZFYgcmVncmVzc2lvbnxteWRiLnB1YmxpYy52YXIKK1xkViBub25l c3VjaC5wdWJsaWMudmFyCiAKIC0tIGNoZWNrIHRoYXQgZG90cyB3aXRoaW4gcXVvdGVkIG5hbWUg c2VnbWVudHMgYXJlIG5vdCBjb3VudGVkCiBcZEEgIm5vLnN1Y2guYWNjZXNzLm1ldGhvZCIKQEAg LTE3NDMsNiArMTc1OSw4IEBAIERST1AgRlVOQ1RJT04gcHNxbF9lcnJvcjsKIFxkeCAibm8uc3Vj aC5pbnN0YWxsZWQuZXh0ZW5zaW9uIgogXGRYICJuby5zdWNoLmV4dGVuZGVkLnN0YXRpc3RpY3Mi CiBcZHkgIm5vLnN1Y2guZXZlbnQudHJpZ2dlciIKK1xkViAibm8uc3VjaC52YXJpYWJsZSIKKwog CiAtLSBhZ2FpbiwgYnV0IHdpdGggZG90dGVkIHNjaGVtYSBxdWFsaWZpY2F0aW9ucy4KIFxkQSAi bm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLmFjY2Vzcy5tZXRob2QiCkBAIC0xNzgzLDYgKzE4MDEs NyBAQCBEUk9QIEZVTkNUSU9OIHBzcWxfZXJyb3I7CiBcZHggIm5vLnN1Y2guc2NoZW1hIi4ibm8u c3VjaC5pbnN0YWxsZWQuZXh0ZW5zaW9uIgogXGRYICJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2gu ZXh0ZW5kZWQuc3RhdGlzdGljcyIKIFxkeSAibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLmV2ZW50 LnRyaWdnZXIiCitcZFYgIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC52YXJpYWJsZSIKIAogLS0g YWdhaW4sIGJ1dCB3aXRoIGN1cnJlbnQgZGF0YWJhc2UgYW5kIGRvdHRlZCBzY2hlbWEgcXVhbGlm aWNhdGlvbnMuCiBcZHQgcmVncmVzc2lvbi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLnRhYmxl LnJlbGF0aW9uIgpAQCAtMTgwNyw2ICsxODI2LDcgQEAgRFJPUCBGVU5DVElPTiBwc3FsX2Vycm9y OwogXGRQIHJlZ3Jlc3Npb24uIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5wYXJ0aXRpb25lZC5y ZWxhdGlvbiIKIFxkVCByZWdyZXNzaW9uLiJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2guZGF0YS50 eXBlIgogXGRYIHJlZ3Jlc3Npb24uIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5z dGF0aXN0aWNzIgorXGRWIHJlZ3Jlc3Npb24uIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC52YXJp YWJsZSIKIAogLS0gYWdhaW4sIGJ1dCB3aXRoIGRvdHRlZCBkYXRhYmFzZSBhbmQgZG90dGVkIHNj aGVtYSBxdWFsaWZpY2F0aW9ucy4KIFxkdCAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2No ZW1hIi4ibm8uc3VjaC50YWJsZS5yZWxhdGlvbiIKQEAgLTE4MzIsNiArMTg1Miw3IEBAIERST1Ag RlVOQ1RJT04gcHNxbF9lcnJvcjsKIFxkUCAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2No ZW1hIi4ibm8uc3VjaC5wYXJ0aXRpb25lZC5yZWxhdGlvbiIKIFxkVCAibm8uc3VjaC5kYXRhYmFz ZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5kYXRhLnR5cGUiCiBcZFggIm5vLnN1Y2guZGF0 YWJhc2UiLiJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2guZXh0ZW5kZWQuc3RhdGlzdGljcyIKK1xk ViAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC52YXJpYWJsZSIK IAogLS0gY2hlY2sgXGRyZyBhbmQgXGR1CiBDUkVBVEUgUk9MRSByZWdyZXNzX2R1X3JvbGUwOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQyZGZiOTVhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwKQEAgLTAsMCArMSw2MSBA QAorQ1JFQVRFIFJPTEUgcmVncmVzc192YXJpYWJsZV9vd25lcjsKKworLS0gc2hvdWxkIGJlIG9r CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7CisKKy0tIHNob3VsZCBmYWlsLCBwc2V1ZG90 eXBlcyBhcmUgbm90IGFsbG93ZWQKK0NSRUFURSBWQVJJQUJMRSB2YXIyIEFTIGFueWVsZW1lbnQ7 CisKKy0tIHNob3VsZCBiZSBvaywgZG8gbm90aGluZworRFJPUCBWQVJJQUJMRSBJRiBFWElTVFMg dmFyMjsKKworLS0gZG8gbm90aGluZworQ1JFQVRFIFZBUklBQkxFIElGIE5PVCBFWElTVFMgdmFy MSBBUyBpbnQ7CisKKy0tIHNob3VsZCBmYWlsCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7 CisKKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSBJRiBFWElTVFMgdmFyMTsKKworLS0g Y2hlY2sgY29tbWVudCBvbiB2YXJpYWJsZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50Owor Q09NTUVOVCBPTiBWQVJJQUJMRSB2YXIxIElTICdzb21lIHZhcmlhYmxlIGNvbW1lbnQnOworU0VM RUNUIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKG9pZCwgJ3BnX3ZhcmlhYmxlJykgRlJPTSBw Z192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3ZhcjEnOworCitEUk9QIFZBUklBQkxFIHZhcjE7 CisKKy0tLSBjaGVjayBhY2Nlc3MgcmlnaHRzIGFuZCBzdXBwb3J0ZWQgQUxURVIKK0NSRUFURSBT Q0hFTUEgc3ZhcnRlc3Q7CitHUkFOVCBBTEwgT04gU0NIRU1BIHN2YXJ0ZXN0IFRPIHJlZ3Jlc3Nf dmFyaWFibGVfb3duZXI7CisKK0NSRUFURSBWQVJJQUJMRSBzdmFydGVzdC52YXIxIEFTIGludDsK KworQ1JFQVRFIFJPTEUgcmVncmVzc192YXJpYWJsZV9yZWFkZXI7CisKK0dSQU5UIFNFTEVDVCBP TiBWQVJJQUJMRSBzdmFydGVzdC52YXIxIFRPIHJlZ3Jlc3NfdmFyaWFibGVfcmVhZGVyOworUkVW T0tFIEFMTCBPTiBWQVJJQUJMRSBzdmFydGVzdC52YXIxIEZST00gcmVncmVzc192YXJpYWJsZV9y ZWFkZXI7CisKK0FMVEVSIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjEgT1dORVIgVE8gcmVncmVzc192 YXJpYWJsZV9vd25lcjsKK0FMVEVSIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjEgUkVOQU1FIFRPIHZh cnh4OworQUxURVIgVkFSSUFCTEUgc3ZhcnRlc3QudmFyeHggU0VUIFNDSEVNQSBwdWJsaWM7CisK K0RST1AgVkFSSUFCTEUgcHVibGljLnZhcnh4OworCitBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMK KyAgIEZPUiBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXIKKyAgIElOIFNDSEVNQSBzdmFydGVz dAorICAgR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFUyBUTyByZWdyZXNzX3ZhcmlhYmxlX3JlYWRl cjsKKworLS0gY3JlYXRpbmcgdmFyaWFibGUgd2l0aCBkZWZhdWx0IHByaXZpbGVnZXMKK1NFVCBS T0xFIFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7CitDUkVBVEUgVkFSSUFCTEUgc3ZhcnRlc3Qu dmFyMSBBUyBpbnQ7CitTRVQgUk9MRSBUTyBERUZBVUxUOworCitcZFYrIHN2YXJ0ZXN0LnZhcjEK KworRFJPUCBWQVJJQUJMRSBzdmFydGVzdC52YXIxOworCitEUk9QIFNDSEVNQSBzdmFydGVzdDsK KworRFJPUCBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7CmRpZmYgLS1naXQgYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CmluZGV4IDNkZWI2MTEzYjguLjgzN2U1YjgzYTMgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC01MzMsNiArNTMzLDcgQEAgQ3JlYXRlUm9sZVN0bXQKIENyZWF0ZVNjaGVtYVN0bXQK IENyZWF0ZVNjaGVtYVN0bXRDb250ZXh0CiBDcmVhdGVTZXFTdG10CitDcmVhdGVTZXNzaW9uVmFy U3RtdAogQ3JlYXRlU3RhdHNTdG10CiBDcmVhdGVTdG10CiBDcmVhdGVTdG10Q29udGV4dApAQCAt ODcyLDYgKzg3Myw3IEBAIEZvcm1EYXRhX3BnX3RzX3BhcnNlcgogRm9ybURhdGFfcGdfdHNfdGVt cGxhdGUKIEZvcm1EYXRhX3BnX3R5cGUKIEZvcm1EYXRhX3BnX3VzZXJfbWFwcGluZworRm9ybURh dGFfcGdfdmFyaWFibGUKIEZvcm1FeHRyYURhdGFfcGdfYXR0cmlidXRlCiBGb3JtX3BnX2FnZ3Jl Z2F0ZQogRm9ybV9wZ19hbQpAQCAtOTMxLDYgKzkzMyw3IEBAIEZvcm1fcGdfdHNfcGFyc2VyCiBG b3JtX3BnX3RzX3RlbXBsYXRlCiBGb3JtX3BnX3R5cGUKIEZvcm1fcGdfdXNlcl9tYXBwaW5nCitG b3JtX3BnX3ZhcmlhYmxlCiBGb3JtYXROb2RlCiBGcmVlQmxvY2tOdW1iZXJBcnJheQogRnJlZUxp c3REYXRhCkBAIC0zMDYxLDYgKzMwNjQsNyBAQCBWYXJTdHJpbmcKIFZhclN0cmluZ1NvcnRTdXBw b3J0CiBWYXJpYWJsZQogVmFyaWFibGVBc3NpZ25Ib29rCitWYXJpYWJsZUluZm8KIFZhcmlhYmxl U2V0S2luZAogVmFyaWFibGVTZXRTdG10CiBWYXJpYWJsZVNob3dTdG10Ci0tIAoyLjQ1LjIKCg== --=-DQq/vrD+rFBJ6zCltjUS Content-Disposition: attachment; filename*0=v20240730-0002-Storage-for-session-variables-and-SQL-inte.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v20240730-0002-Storage-for-session-variables-and-SQL-inte.patch"; charset="UTF-8" RnJvbSA0ZDMwYmRkZDRjMmY4YjBlZjlhMWI0YjZhYjcxNzVjNjdkZDg0OWVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogVHVlLCAzMCBKdWwgMjAyNCAyMTo0Mjo0MCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjQwNzMwIDIvMl0gU3RvcmFnZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMgYW5kIFNRTCBpbnRl cmZhY2UKClNlc3Npb24gdmFyaWFibGVzIGFyZSBzdG9yZWQgaW4gc2Vzc2lvbiBtZW1vcnkgaW4g YSBkZWRpY2F0ZWQgaGFzaCB0YWJsZS4KVGhleSBhcmUgc2V0IGJ5IHRoZSBMRVQgY29tbWFuZCBh bmQgcmVhZCBieSB0aGUgU0VMRUNUIGNvbW1hbmQuClRoZSBhY2Nlc3MgcmlnaHRzIHNob3VsZCBi ZSBjaGVja2VkLgoKVGhlIGlkZW50aWZpZXJzIG9mIHNlc3Npb24gdmFyaWFibGVzIHNob3VsZCBh bHdheXMgYmUgc2hhZG93ZWQgYnkgcG9zc2libGUKY29sdW1uIGlkZW50aWZpZXJzOiB3ZSBkb24n dCB3YW50IHRvIGJyZWFrIGFuIGFwcGxpY2F0aW9uIGJ5IGNyZWF0aW5nIHNvbWUKYmFkbHkgbmFt ZWQgc2Vzc2lvbiB2YXJpYWJsZS4KClRoZSBsaW1pdHMgb2YgdGhpcyBwYXRjaCAoc29sdmVkIGJ5 IG90aGVyIHBhdGNoZXMpOgoKLSBzZXNzaW9uIHZhcmlhYmxlcyBibG9jayBwYXJhbGxlbCBleGVj dXRpb24KLSBzZXNzaW9uIHZhcmlhYmxlcyBibG9ja3Mgc2ltcGxlIGV4cHJlc3Npb24gZXZhbHVh dGlvbiAoaW4gcGxwZ3NxbCkKLSBTUUwgZnVuY3Rpb25zIHdpdGggc2Vzc2lvbiB2YXJpYWJsZXMg YXJlIG5vdCBpbmxpbmVkCi0gQ0FMTCBzdGF0ZW1lbnQgaXMgbm90IHN1cHBvcnRlZCAodXNhZ2Ug b2YgZGlyZWN0IGFjY2VzcyB0byBleHByZXNzIGV4ZWN1dG9yKQotIG1lbW9yeSB1c2VkIGJ5IGRy b3BwZWQgc2Vzc2lvbiB2YXJpYWJsZXMgaXMgbm90IHJlbGVhc2VkCgpJbXBsZW1lbnRhdGlvbnMg b2YgRVhQTEFJTiBMRVQgYW5kIFBSRVBBUkUgTEVUIHN0YXRlbWVudHMKYXJlIGluIHNlcGFyYXRl IHBhdGNoZXMgKGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkpCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDEzICsKIGRvYy9zcmMvc2dtbC9kZGwuc2dt bCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMiArCiBkb2Mvc3JjL3NnbWwvZXZlbnQtdHJp Z2dlci5zZ21sICAgICAgICAgICAgICAgfCAgMjQgKwogZG9jL3NyYy9zZ21sL3BhcmFsbGVsLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGRvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAxNCArCiBkb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNn bWwgICAgICAgICAgICAgICAgfCAgIDEgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJs ZS5zZ21sICAgICAgICAgIHwgICAxICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxl LnNnbWwgICAgICAgICB8ICAgMSArCiBkb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dt bCAgICAgICAgICAgfCAgIDEgKwogZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jICAgICAg ICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jICAgICAgICAg ICAgICAgfCAzMTcgKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMgICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICAg IHwgIDQyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8 ICA0NyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDEw ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAgOSAr CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgICAgICAgfCAxMzUgKyst CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYyAgICAgfCAgIDMgKwog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICAgICAgICAgIHwgIDM1ICstCiBz cmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAgICAgICAgICAgICAgfCAyNjQgKysrKy0K IHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0OSArLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICAgIHwgICA5ICsKIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAgICB8IDIyMCArKysrLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL3Rjb3AvZGVzdC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMv YmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2Jh Y2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAgICAgIHwgIDE2ICsKIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICA0NiArCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAgfCAgNDEgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2ZtZ3IvZm1nci5jICAgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5jICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9j YXRhbG9nL25hbWVzcGFjZS5oICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ192YXJpYWJsZS5oICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMTYgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oICAgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1h aW4uaCAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgg ICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaCAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmggICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgICAgICAgICAg ICAgICAgICB8ICAgMyArLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92YXJpYWJsZXMu b3V0ICAgIHwgOTEyICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vz c2lvbl92YXJpYWJsZXMuc3FsICAgIHwgNjI1ICsrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICA1ICsKIDUzIGZpbGVzIGNoYW5nZWQs IDI5NzQgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBk ZTEyMmU1NDNmLi5hYzNiMDRmZjkxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtOTc3Nyw2ICs5Nzc3LDE5 IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9y ZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk PnZhcmNyZWF0ZV9sc248L3N0cnVjdGZpZWxkPiA8dHlwZT5YTG9nUmVjUHRyPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB3 aGVyZSB0aGUgdmFyaWFibGUgd2FzIGNyZWF0ZWQuCisgICAgICAgPHN0cnVjdGZpZWxkPnZhcmNy ZWF0ZV9sc248L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgICA8c3RydWN0ZmllbGQ+b2lkPC9zdHJ1 Y3RmaWVsZD4gdG9nZXRoZXIgZm9ybSB0aGUgYWxsLXRpbWUgdW5pcXVlCisgICAgICAgaWRlbnRp ZmllciAoPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IGFsb25lIGlzIG5vdCBlbm91Z2gs IHNpbmNlCisgICAgICAgb2JqZWN0IGlkZW50aWZpZXJzIGNhbiBnZXQgcmV1c2VkKS4KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+dmFybmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8 L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKaW5kZXggNzUzMWRlMTdmZC4uNTc0NTQwY2E2ZiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAtNTMxNyw2ICs1 MzE3LDM4IEBAIEVYUExBSU4gU0VMRUNUIGNvdW50KCopIEZST00gbWVhc3VyZW1lbnQgV0hFUkUg bG9nZGF0ZSAmZ3Q7PSBEQVRFICcyMDA4LTAxLTAxJzsKICAgICBWQVJJQUJMRTwvY29tbWFuZD4g Y29tbWFuZC4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgVGhlIHZhbHVlIG9mIGEgc2Vz c2lvbiB2YXJpYWJsZSBpcyBzZXQgd2l0aCB0aGUgU1FMIHN0YXRlbWVudAorICAgIDxjb21tYW5k PkxFVDwvY29tbWFuZD4uICBUaGUgdmFsdWUgb2YgYSBzZXNzaW9uIHZhcmlhYmxlIGNhbiBiZSBy ZXRyaWV2ZWQKKyAgICB3aXRoIHRoZSBTUUwgc3RhdGVtZW50IDxjb21tYW5kPlNFTEVDVDwvY29t bWFuZD4uCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBkYXRlOwor TEVUIHZhcjEgPSBjdXJyZW50X2RhdGU7CitTRUxFQ1QgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisKKyAgICBvcgorCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLmN1 cnJlbnRfdXNlcl9pZCBBUyBpbnRlZ2VyOworR1JBTlQgUkVBRCBPTiBWQVJJQUJMRSBwdWJsaWMu Y3VycmVudF91c2VyX2lkIFRPIFBVQkxJQzsKK0xFVCBjdXJyZW50X3VzZXJfaWQgPSAoU0VMRUNU IGlkIEZST00gdXNlcnMgV0hFUkUgdXNlbmFtZSA9IHNlc3Npb25fdXNlcik7CitTRUxFQ1QgY3Vy cmVudF91c2VyX2lkOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+ CisgICAgVGhlIHZhbHVlIG9mIGEgc2Vzc2lvbiB2YXJpYWJsZSBpcyBsb2NhbCB0byB0aGUgY3Vy cmVudCBzZXNzaW9uLiBSZXRyaWV2aW5nCisgICAgYSB2YXJpYWJsZSdzIHZhbHVlIHJldHVybnMg YSA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiwgdW5sZXNzIGl0cyB2YWx1ZSBoYXMKKyAgICBiZWVu IHNldCB0byBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY3VycmVudCBzZXNzaW9uIHVzaW5nIHRoZQor ICAgIDxjb21tYW5kPkxFVDwvY29tbWFuZD4gY29tbWFuZC4gIFNlc3Npb24gdmFyaWFibGVzIGFy ZSBub3QgdHJhbnNhY3Rpb25hbDoKKyAgICBhbnkgY2hhbmdlcyBtYWRlIHRvIHRoZSB2YWx1ZSBv ZiBhIHNlc3Npb24gdmFyaWFibGUgaW4gYSB0cmFuc2FjdGlvbiB3b24ndAorICAgIGJlIHVuZG9u ZSBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgcm9sbGVkIGJhY2sgKGp1c3QgbGlrZSB2YXJpYWJsZXMg aW4KKyAgICBwcm9jZWR1cmFsIGxhbmd1YWdlcykuICBTZXNzaW9uIHZhcmlhYmxlcyB0aGVtc2Vs dmVzIGFyZSBwZXJzaXN0ZW50LCBidXQKKyAgICB0aGVpciB2YWx1ZXMgYXJlIG5laXRoZXIgcGVy c2lzdGVudCBub3Igc2hhcmVkIChsaWtlIHRoZSBjb250ZW50IG9mCisgICAgdGVtcG9yYXJ5IHRh YmxlcykuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIEluc2lkZSBhIHF1ZXJ5IG9yIGFu IGV4cHJlc3Npb24sIGEgc2Vzc2lvbiB2YXJpYWJsZSBjYW4gYmUKICAgICA8cXVvdGU+c2hhZG93 ZWQ8L3F1b3RlPiBieSBhIGNvbHVtbiB3aXRoIHRoZSBzYW1lIG5hbWUuICBTaW1pbGFybHksIHRo ZQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2V2ZW50LXRyaWdnZXIuc2dtbCBiL2RvYy9zcmMv c2dtbC9ldmVudC10cmlnZ2VyLnNnbWwKaW5kZXggMTViMmFmOTlkYy4uNTc4Yjk3YWZlZSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2V2ZW50LXRyaWdnZXIuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZXZlbnQtdHJpZ2dlci5zZ21sCkBAIC00MzIsNiArNDMyLDE0IEBACiAgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFZBUklBQkxFPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KQEAgLTcyOCw2 ICs3MzYsMTQgQEAKICAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+Q1JFQVRFIFZBUklBQkxFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KICAgICAgICA8 cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBWSUVXPC9s aXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CkBAIC0xMDI0LDYgKzEwNDAsMTQgQEAKICAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBWQVJJQUJMRTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CisgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5EUk9QIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9wYXJhbGxlbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3BhcmFsbGVsLnNnbWwK aW5kZXggNTkwY2IzODVkZC4uYTVjZWY0Y2Q3OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Bh cmFsbGVsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BhcmFsbGVsLnNnbWwKQEAgLTUyMSw2ICs1 MjEsMTIgQEAgRVhQTEFJTiBTRUxFQ1QgKiBGUk9NIHBnYmVuY2hfYWNjb3VudHMgV0hFUkUgZmls bGVyIExJS0UgJyV4JSc7CiAgICAgICAgIFBsYW4gbm9kZXMgdGhhdCByZWZlcmVuY2UgYSBjb3Jy ZWxhdGVkIDxsaXRlcmFsPlN1YlBsYW48L2xpdGVyYWw+LgogICAgICAgPC9wYXJhPgogICAgIDwv bGlzdGl0ZW0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICAgUGxhbiBu b2RlcyB0aGF0IHVzZSBhIHNlc3Npb24gdmFyaWFibGUuCisgICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KICAgPC9pdGVtaXplZGxpc3Q+CiAKICA8c2VjdDIgaWQ9InBhcmFsbGVsLWxhYmVs aW5nIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcGxwZ3NxbC5zZ21sCmluZGV4IGE2NzU5MjM4NjcuLmMxMTk2YzcxMDcgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dt bApAQCAtNjAzNCw2ICs2MDM0LDIwIEBAICQkIExBTkdVQUdFIHBscGdzcWwgU1RSSUNUIElNTVVU QUJMRTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9wYXJhPgogICAgPC9zZWN0Mz4KKworICAg PHNlY3QzIGlkPSJwbHBnc3FsLXBvcnRpbmctcGFja2FnZS12YXJpYWJsZXMiPgorICAgIDx0aXRs ZT48Y29tbWFuZD5QYWNrYWdlcyBhbmQgcGFja2FnZSB2YXJpYWJsZXM8L2NvbW1hbmQ+PC90aXRs ZT4KKworICAgIDxwYXJhPgorICAgICBUaGUgPGFwcGxpY2F0aW9uPlBML3BnU1FMPC9hcHBsaWNh dGlvbj4gbGFuZ3VhZ2UgaGFzIG5vIHBhY2thZ2VzLCBhbmQKKyAgICAgdGhlcmVmb3JlIG5vIHBh Y2thZ2UgdmFyaWFibGVzIG9yIHBhY2thZ2UgY29uc3RhbnRzLgorICAgICBZb3UgY2FuIGNvbnNp ZGVyIHRyYW5zbGF0aW5nIGFuIE9yYWNsZSBwYWNrYWdlIGludG8gYSBzY2hlbWEgaW4KKyAgICAg PHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPi4gIFBhY2thZ2UgZnVuY3Rpb25z IGFuZCBwcm9jZWR1cmVzCisgICAgIHdvdWxkIHRoZW4gYmVjb21lIGZ1bmN0aW9ucyBhbmQgcHJv Y2VkdXJlcyBpbiB0aGF0IHNjaGVtYSwgYW5kIHBhY2thZ2UKKyAgICAgdmFyaWFibGVzIGNvdWxk IGJlIHRyYW5zbGF0ZWQgdG8gc2Vzc2lvbiB2YXJpYWJsZXMgaW4gdGhhdCBzY2hlbWEuCisgICAg IChzZWUgPHhyZWYgbGlua2VuZD0iZGRsLXNlc3Npb24tdmFyaWFibGVzIlw+KS4KKyAgICA8L3Bh cmE+CisgICA8L3NlY3QzPgogICA8L3NlY3QyPgogCiAgIDxzZWN0MiBpZD0icGxwZ3NxbC1wb3J0 aW5nLWFwcGVuZGl4Ij4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCAyZjY3ZGUzZTIxLi5jYzNi ZDVhYjU0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCkBAIC0xNTgsNiArMTU4LDcgQEAgQ29tcGxl dGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8 IUVOVElUWSBncmFudCAgICAgICAgICAgICAgU1lTVEVNICJncmFudC5zZ21sIj4KIDwhRU5USVRZ IGltcG9ydEZvcmVpZ25TY2hlbWEgU1lTVEVNICJpbXBvcnRfZm9yZWlnbl9zY2hlbWEuc2dtbCI+ CiA8IUVOVElUWSBpbnNlcnQgICAgICAgICAgICAgU1lTVEVNICJpbnNlcnQuc2dtbCI+Cis8IUVO VElUWSBsZXQgICAgICAgICAgICAgICAgU1lTVEVNICJsZXQuc2dtbCI+CiA8IUVOVElUWSBsaXN0 ZW4gICAgICAgICAgICAgU1lTVEVNICJsaXN0ZW4uc2dtbCI+CiA8IUVOVElUWSBsb2FkICAgICAg ICAgICAgICAgU1lTVEVNICJsb2FkLnNnbWwiPgogPCFFTlRJVFkgbG9jayAgICAgICAgICAgICAg IFNZU1RFTSAibG9jay5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf dmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbAppbmRl eCBkODc1NzBlN2Q4Li5kMjAzNjM1MWU1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3ZhcmlhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5z Z21sCkBAIC0xNzMsNiArMTczLDcgQEAgQUxURVIgVkFSSUFCTEUgYm9vIFNFVCBTQ0hFTUEgcHJp dmF0ZTsKICAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KICAgIDxtZW1iZXI+PHhyZWYgbGlu a2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CiAgICA8bWVtYmVyPjx4cmVmIGxp bmtlbmQ9InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlu a2VuZD0ic3FsLWxldCIvPjwvbWVtYmVyPgogICA8L3NpbXBsZWxpc3Q+CiAgPC9yZWZzZWN0MT4K IDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbAppbmRleCBlYzE2 NWFiOTZmLi4wNWJmNjdlMzQxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV92 YXJpYWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwK QEAgLTE0NSw2ICsxNDUsNyBAQCBTRUxFQ1QgdmFyMTsKICAgPHNpbXBsZWxpc3QgdHlwZT0iaW5s aW5lIj4KICAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48L21l bWJlcj4KICAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVt YmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtbGV0Ii8+PC9tZW1iZXI+CiAgIDwv c2ltcGxlbGlzdD4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2Ryb3BfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21s CmluZGV4IDViZGIzNTYwZjAuLjY3OTg4YjVmY2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvZHJvcF92YXJpYWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJs ZS5zZ21sCkBAIC0xMTEsNiArMTExLDcgQEAgRFJPUCBWQVJJQUJMRSB2YXIxOwogICA8c2ltcGxl bGlzdCB0eXBlPSJpbmxpbmUiPgogICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ2 YXJpYWJsZSIvPjwvbWVtYmVyPgogICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRl dmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWxldCIv PjwvbWVtYmVyPgogICA8L3NpbXBsZWxpc3Q+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CmluZGV4IDI1NTc4ZjM5NDYuLjEzZTRhZGM1ZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTE4Niw2 ICsxODYsNyBAQAogICAgJmdyYW50OwogICAgJmltcG9ydEZvcmVpZ25TY2hlbWE7CiAgICAmaW5z ZXJ0OworICAgJmxldDsKICAgICZsaXN0ZW47CiAgICAmbG9hZDsKICAgICZsb2NrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2RlcGVuZGVuY3kuYwppbmRleCBjOWQ2ODY2NjVkLi4xNDg3MTllNDkwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2RlcGVuZGVuY3kuYwpAQCAtMTg2NCw2ICsxODY0LDExIEBAIGZpbmRfZXhwcl9yZWZlcmVu Y2VzX3dhbGtlcihOb2RlICpub2RlLAogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICop IG5vZGU7CiAKKwkJLyogYSB2YXJpYWJsZSBwYXJhbWV0ZXIgZGVwZW5kcyBvbiB0aGUgc2Vzc2lv biB2YXJpYWJsZSAqLworCQlpZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9WQVJJQUJMRSkK KwkJCWFkZF9vYmplY3RfYWRkcmVzcyhWYXJpYWJsZVJlbGF0aW9uSWQsIHBhcmFtLT5wYXJhbXZh cmlkLCAwLAorCQkJCQkJCSAgIGNvbnRleHQtPmFkZHJzKTsKKwogCQkvKiBBIHBhcmFtZXRlciBt dXN0IGRlcGVuZCBvbiB0aGUgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KIAkJYWRkX29iamVjdF9h ZGRyZXNzKFR5cGVSZWxhdGlvbklkLCBwYXJhbS0+cGFyYW10eXBlLCAwLAogCQkJCQkJICAgY29u dGV4dC0+YWRkcnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2Uu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggODc1MmUxNjQ2ZS4uMmUx MjhlZjdlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC0zMzk5LDYgKzMzOTksMzIzIEBA IExvb2t1cFZhcmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsCiAJcmV0dXJuIHZhcm9pZDsKIH0K IAorLyoKKyAqIFRoZSBpbnB1dCBsaXN0IGNvbnRhaW5zIG5hbWVzIHdpdGggaW5kaXJlY3Rpb24g ZXhwcmVzc2lvbnMgdXNlZCBhcyB0aGUgbGVmdAorICogcGFydCBvZiBMRVQgc3RhdGVtZW50LiBU aGUgZm9sbG93aW5nIHJvdXRpbmUgcmV0dXJucyBhIG5ldyBsaXN0IHdpdGggb25seQorICogaW5p dGlhbCBzdHJpbmdzIChuYW1lcykgLSB3aXRob3V0IGluZGlyZWN0aW9uIGV4cHJlc3Npb25zLgor ICovCitMaXN0ICoKK05hbWVzRnJvbUxpc3QoTGlzdCAqbmFtZXMpCit7CisJTGlzdENlbGwgICAq bDsKKwlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisKKwlmb3JlYWNoKGwsIG5hbWVzKQorCXsKKwkJ Tm9kZQkgICAqbiA9IGxmaXJzdChsKTsKKworCQlpZiAoSXNBKG4sIFN0cmluZykpCisJCXsKKwkJ CXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBuKTsKKwkJfQorCQllbHNlCisJCQlicmVhazsKKwl9 CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKiAtLS0tLQorICogSWRlbnRpZnlWYXJpYWJsZSAt IHRyeSB0byBmaW5kIGEgdmFyaWFibGUgZnJvbSBhIGxpc3Qgb2YgaWRlbnRpZmllcnMKKyAqCisg KiBSZXR1cm5zIHRoZSBPSUQgb2YgdGhlIHZhcmlhYmxlIGZvdW5kLCBvciBJbnZhbGlkT2lkLgor ICoKKyAqICJuYW1lcyIgaXMgYSBsaXN0IG9mIHVwIHRvIGZvdXIgaWRlbnRpZmllcnM7IHBvc3Np YmxlIG1lYW5pbmdzIGFyZToKKyAqIC0gdmFyaWFibGUgIChzZWFyY2hlZCBvbiB0aGUgc2VhcmNo X3BhdGgpCisgKiAtIHNjaGVtYS52YXJpYWJsZQorICogLSB2YXJpYWJsZS5hdHRyaWJ1dGUgIChz ZWFyY2hlZCBvbiB0aGUgc2VhcmNoX3BhdGgpCisgKiAtIHNjaGVtYS52YXJpYWJsZS5hdHRyaWJ1 dGUKKyAqIC0gZGF0YWJhc2Uuc2NoZW1hLnZhcmlhYmxlCisgKiAtIGRhdGFiYXNlLnNjaGVtYS52 YXJpYWJsZS5hdHRyaWJ1dGUKKyAqCisgKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHdheSB0 byBpZGVudGlmeSBhIHZhcmlhYmxlLCAibm90X3VuaXF1ZSIgd2lsbCBiZQorICogc2V0IHRvIHRy dWUuCisgKgorICogVW5sZXNzICJub2Vycm9yIiBpcyB0cnVlLCBhbiBlcnJvciBpcyByYWlzZWQg aWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBmb3VyCisgKiAgaWRlbnRpZmllcnMgaW4gdGhlIGxpc3Qs IG9yIGlmIHRoZSBuYW1lZCBkYXRhYmFzZSBpcyBub3QgdGhlIGN1cnJlbnQgb25lLgorICogVGhp cyBpcyB1c2VmdWwgaWYgd2Ugd2FudCB0byBpZGVudGlmeSBhIHNoYWRvd2VkIHZhcmlhYmxlLgor ICoKKyAqIElmIGFuIGF0dHJpYnV0ZSBpcyBpZGVudGlmaWVkLCBpdCBpcyBzdG9yZWQgaW4gImF0 dHJuYW1lIiwgb3RoZXJ3aXNlIHRoZQorICogcGFyYW1ldGVyIGlzIHNldCB0byBOVUxMLgorICoK KyAqIFRoZSBpZGVudGlmaWVkIHNlc3Npb24gdmFyaWFibGUgd2lsbCBiZSBsb2NrZWQgd2l0aCBh biBBY2Nlc3NTaGFyZUxvY2suCisgKiAtLS0tLQorICovCitPaWQKK0lkZW50aWZ5VmFyaWFibGUo TGlzdCAqbmFtZXMsIGNoYXIgKiphdHRybmFtZSwgYm9vbCAqbm90X3VuaXF1ZSwgYm9vbCBub2Vy cm9yKQoreworCU5vZGUJICAgKmZpZWxkMSA9IE5VTEw7CisJTm9kZQkgICAqZmllbGQyID0gTlVM TDsKKwlOb2RlCSAgICpmaWVsZDMgPSBOVUxMOworCU5vZGUJICAgKmZpZWxkNCA9IE5VTEw7CisJ Y2hhcgkgICAqYSA9IE5VTEw7CisJY2hhcgkgICAqYiA9IE5VTEw7CisJY2hhcgkgICAqYyA9IE5V TEw7CisJY2hhcgkgICAqZCA9IE5VTEw7CisJT2lkCQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCU9p ZAkJCW9sZF92YXJpZCA9IEludmFsaWRPaWQ7CisJdWludDY0CQlpbnZhbF9jb3VudDsKKwlib29s CQlyZXRyeSA9IGZhbHNlOworCisJLyoKKwkgKiBEREwgb3BlcmF0aW9ucyBjYW4gY2hhbmdlIHRo ZSByZXN1bHRzIG9mIGEgbmFtZSBsb29rdXAuICBTaW5jZSBhbGwgc3VjaAorCSAqIG9wZXJhdGlv bnMgd2lsbCBnZW5lcmF0ZSBpbnZhbGlkYXRpb24gbWVzc2FnZXMsIHdlIGtlZXAgdHJhY2sgb2YK KwkgKiB3aGV0aGVyIGFueSBzdWNoIG1lc3NhZ2VzIHNob3cgdXAgd2hpbGUgd2UncmUgcGVyZm9y bWluZyB0aGUgb3BlcmF0aW9uLAorCSAqIGFuZCByZXRyeSB1bnRpbCBlaXRoZXIgKDEpIG5vIG1v cmUgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIHNob3cgdXAgb3IgKDIpCisJICogdGhlIGFuc3dlciBk b2Vzbid0IGNoYW5nZS4KKwkgKi8KKwlmb3IgKDs7KQorCXsKKwkJT2lkCQkJdmFyb2lkX3dpdGhv dXRfYXR0ciA9IEludmFsaWRPaWQ7CisJCU9pZAkJCXZhcm9pZF93aXRoX2F0dHIgPSBJbnZhbGlk T2lkOworCisJCSpub3RfdW5pcXVlID0gZmFsc2U7CisJCSphdHRybmFtZSA9IE5VTEw7CisJCXZh cmlkID0gSW52YWxpZE9pZDsKKworCQlpbnZhbF9jb3VudCA9IFNoYXJlZEludmFsaWRNZXNzYWdl Q291bnRlcjsKKworCQlzd2l0Y2ggKGxpc3RfbGVuZ3RoKG5hbWVzKSkKKwkJeworCQkJY2FzZSAx OgorCQkJCWZpZWxkMSA9IGxpbml0aWFsKG5hbWVzKTsKKworCQkJCUFzc2VydChJc0EoZmllbGQx LCBTdHJpbmcpKTsKKworCQkJCXZhcmlkID0gTG9va3VwVmFyaWFibGUoTlVMTCwgc3RyVmFsKGZp ZWxkMSksIHRydWUpOworCQkJCWJyZWFrOworCisJCQljYXNlIDI6CisJCQkJZmllbGQxID0gbGlu aXRpYWwobmFtZXMpOworCQkJCWZpZWxkMiA9IGxzZWNvbmQobmFtZXMpOworCisJCQkJQXNzZXJ0 KElzQShmaWVsZDEsIFN0cmluZykpOworCQkJCWEgPSBzdHJWYWwoZmllbGQxKTsKKworCQkJCWlm IChJc0EoZmllbGQyLCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJLyogd2hlbiBib3RoIGZpZWxkcyBh cmUgb2Ygc3RyaW5nIHR5cGUgKi8KKwkJCQkJYiA9IHN0clZhbChmaWVsZDIpOworCisJCQkJCS8q CisJCQkJCSAqIGEuYiBjYW4gbWVhbiAic2NoZW1hIi4idmFyaWFibGUiIG9yICJ2YXJpYWJsZSIu ImZpZWxkIi4KKwkJCQkJICogQ2hlY2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVybnMgSW52YWxp ZE9pZCB3aXRoCisJCQkJCSAqIG5vdF91bmlxdWUgZmxhZywgd2hlbiBib3RoIGludGVycHJldGF0 aW9ucyBhcmUKKwkJCQkJICogcG9zc2libGUuCisJCQkJCSAqLworCQkJCQl2YXJvaWRfd2l0aG91 dF9hdHRyID0gTG9va3VwVmFyaWFibGUoYSwgYiwgdHJ1ZSk7CisJCQkJCXZhcm9pZF93aXRoX2F0 dHIgPSBMb29rdXBWYXJpYWJsZShOVUxMLCBhLCB0cnVlKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJ CXsKKwkJCQkJLyogVGhlIGxhc3QgZmllbGQgb2YgbGlzdCBjYW4gYmUgc3RhciB0b28uICovCisJ CQkJCUFzc2VydChJc0EoZmllbGQyLCBBX1N0YXIpKTsKKworCQkJCQkvKgorCQkJCQkgKiBJbiB0 aGlzIGNhc2UsIHRoZSBmaWVsZDEgc2hvdWxkIGJlIHZhcmlhYmxlIG5hbWUuIEJ1dAorCQkJCQkg KiBkaXJlY3QgdW5ib3hpbmcgb2YgY29tcG9zaXRlIHNlc3Npb24gdmFyaWFibGVzIGlzIG5vdAor CQkJCQkgKiBzdXBwb3J0ZWQgbm93LCBhbmQgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIHRyeSBsb29r dXAKKwkJCQkJICogcmVsYXRlZCB2YXJpYWJsZS4KKwkJCQkJICoKKwkJCQkJICogVW5ib3hpbmcg aXMgc3VwcG9ydGVkIGJ5IHN5bnRheCAodmFyKS4qCisJCQkJCSAqLworCQkJCQlyZXR1cm4gSW52 YWxpZE9pZDsKKwkJCQl9CisKKwkJCQlpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91dF9hdHRy KSAmJiBPaWRJc1ZhbGlkKHZhcm9pZF93aXRoX2F0dHIpKQorCQkJCXsKKwkJCQkJKm5vdF91bmlx dWUgPSB0cnVlOworCQkJCQl2YXJpZCA9IHZhcm9pZF93aXRob3V0X2F0dHI7CisJCQkJfQorCQkJ CWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikpCisJCQkJeworCQkJCQl2 YXJpZCA9IHZhcm9pZF93aXRob3V0X2F0dHI7CisJCQkJfQorCQkJCWVsc2UgaWYgKE9pZElzVmFs aWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQkJeworCQkJCQkqYXR0cm5hbWUgPSBiOworCQkJCQl2 YXJpZCA9IHZhcm9pZF93aXRoX2F0dHI7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIDM6 CisJCQkJeworCQkJCQlib29sCQlmaWVsZDFfaXNfY2F0YWxvZyA9IGZhbHNlOworCisJCQkJCWZp ZWxkMSA9IGxpbml0aWFsKG5hbWVzKTsKKwkJCQkJZmllbGQyID0gbHNlY29uZChuYW1lcyk7CisJ CQkJCWZpZWxkMyA9IGx0aGlyZChuYW1lcyk7CisKKwkJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0 cmluZykpOworCQkJCQlBc3NlcnQoSXNBKGZpZWxkMiwgU3RyaW5nKSk7CisKKwkJCQkJYSA9IHN0 clZhbChmaWVsZDEpOworCQkJCQliID0gc3RyVmFsKGZpZWxkMik7CisKKwkJCQkJaWYgKElzQShm aWVsZDMsIFN0cmluZykpCisJCQkJCXsKKwkJCQkJCWMgPSBzdHJWYWwoZmllbGQzKTsKKworCQkJ CQkJLyoKKwkJCQkJCSAqIGEuYi5jIGNhbiBtZWFuIGNhdGFsb2cuc2NoZW1hLnZhcmlhYmxlIG9y CisJCQkJCQkgKiBzY2hlbWEudmFyaWFibGUuZmllbGQuCisJCQkJCQkgKgorCQkJCQkJICogQ2hl Y2sgYm90aCB2YXJpYW50cywgYW5kIHNldCBub3RfdW5pcXVlIGZsYWcsIHdoZW4KKwkJCQkJCSAq IGJvdGggaW50ZXJwcmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCQkJCSAqCisJCQkJCQkgKiBX aGVuIHRoaXJkIG5vZGUgaXMgc3Rhciwgb25seSBwb3NzaWJsZQorCQkJCQkJICogaW50ZXJwcmV0 YXRpb24gaXMgc2NoZW1hLnZhcmlhYmxlLiosIGJ1dCB0aGlzCisJCQkJCQkgKiBwYXR0ZXJuIGlz IG5vdCBzdXBwb3J0ZWQgbm93LgorCQkJCQkJICovCisJCQkJCQl2YXJvaWRfd2l0aF9hdHRyID0g TG9va3VwVmFyaWFibGUoYSwgYiwgdHJ1ZSk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBjaGVjayBw YXR0ZXJuIGNhdGFsb2cuc2NoZW1hLnZhcmlhYmxlIG9ubHkgd2hlbgorCQkJCQkJICogdGhlcmUg aXMgcG9zc2liaWxpdHkgdG8gc3VjY2Vzcy4KKwkJCQkJCSAqLworCQkJCQkJaWYgKHN0cmNtcChh LCBnZXRfZGF0YWJhc2VfbmFtZShNeURhdGFiYXNlSWQpKSA9PSAwKQorCQkJCQkJeworCQkJCQkJ CWZpZWxkMV9pc19jYXRhbG9nID0gdHJ1ZTsKKwkJCQkJCQl2YXJvaWRfd2l0aG91dF9hdHRyID0g TG9va3VwVmFyaWFibGUoYiwgYywgdHJ1ZSk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZQor CQkJCQl7CisJCQkJCQlBc3NlcnQoSXNBKGZpZWxkMywgQV9TdGFyKSk7CisJCQkJCQlyZXR1cm4g SW52YWxpZE9pZDsKKwkJCQkJfQorCisJCQkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0 X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQkJCXsKKwkJCQkJCSpu b3RfdW5pcXVlID0gdHJ1ZTsKKwkJCQkJCXZhcmlkID0gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJ CQkJfQorCQkJCQllbHNlIGlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpKQorCQkJ CQl7CisJCQkJCQl2YXJpZCA9IHZhcm9pZF93aXRob3V0X2F0dHI7CisJCQkJCX0KKwkJCQkJZWxz ZSBpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aF9hdHRyKSkKKwkJCQkJeworCQkJCQkJKmF0dHJu YW1lID0gYzsKKwkJCQkJCXZhcmlkID0gdmFyb2lkX3dpdGhfYXR0cjsKKwkJCQkJfQorCisJCQkJ CS8qCisJCQkJCSAqIFdoZW4gd2UgZGlkbid0IGZpbmQgdmFyaWFibGUsIHdlIGNhbiAod2hlbiBp dCBpcworCQkJCQkgKiBhbGxvd2VkKSByYWlzZSBjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2UgZXJy b3IuCisJCQkJCSAqLworCQkJCQlpZiAoIU9pZElzVmFsaWQodmFyaWQpICYmICFub2Vycm9yICYm ICFmaWVsZDFfaXNfY2F0YWxvZykKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkJIGVycm1zZygiY3Jv c3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJ CQkJTmFtZUxpc3RUb1N0cmluZyhuYW1lcykpKSk7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQlj YXNlIDQ6CisJCQkJeworCQkJCQlmaWVsZDEgPSBsaW5pdGlhbChuYW1lcyk7CisJCQkJCWZpZWxk MiA9IGxzZWNvbmQobmFtZXMpOworCQkJCQlmaWVsZDMgPSBsdGhpcmQobmFtZXMpOworCQkJCQlm aWVsZDQgPSBsZm91cnRoKG5hbWVzKTsKKworCQkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3RyaW5n KSk7CisJCQkJCUFzc2VydChJc0EoZmllbGQyLCBTdHJpbmcpKTsKKwkJCQkJQXNzZXJ0KElzQShm aWVsZDMsIFN0cmluZykpOworCisJCQkJCWEgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQkJYiA9IHN0 clZhbChmaWVsZDIpOworCQkJCQljID0gc3RyVmFsKGZpZWxkMyk7CisKKwkJCQkJLyoKKwkJCQkJ ICogSW4gdGhpcyBjYXNlLCAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUgLSBjaGVjayBpdC4K KwkJCQkJICovCisJCQkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFz ZUlkKSkgIT0gMCkKKwkJCQkJeworCQkJCQkJaWYgKCFub2Vycm9yKQorCQkJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJCQkJCQkgZXJybXNnKCJjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2VzIGFyZSBub3QgaW1w bGVtZW50ZWQ6ICVzIiwKKwkJCQkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhuYW1lcykpKSk7CisJ CQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQlpZiAoSXNBKGZpZWxkNCwgU3RyaW5nKSkK KwkJCQkJCXsKKwkJCQkJCQlkID0gc3RyVmFsKGZpZWxkNCk7CisJCQkJCQl9CisJCQkJCQllbHNl CisJCQkJCQl7CisJCQkJCQkJQXNzZXJ0KElzQShmaWVsZDQsIEFfU3RhcikpOworCQkJCQkJCXJl dHVybiBJbnZhbGlkT2lkOworCQkJCQkJfQorCisJCQkJCQkqYXR0cm5hbWUgPSBkOworCQkJCQkJ dmFyaWQgPSBMb29rdXBWYXJpYWJsZShiLCBjLCB0cnVlKTsKKwkJCQkJfQorCQkJCX0KKwkJCQli cmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQlpZiAoIW5vZXJyb3IpCisJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCSBlcnJt c2coImltcHJvcGVyIHF1YWxpZmllZCBuYW1lICh0b28gbWFueSBkb3R0ZWQgbmFtZXMpOiAlcyIs CisJCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSkpKTsKKwkJCQlyZXR1cm4gSW52YWxp ZE9pZDsKKwkJfQorCisJCS8qCisJCSAqIElmLCB1cG9uIHJldHJ5LCB3ZSBnZXQgYmFjayB0aGUg c2FtZSBPSUQgd2UgZGlkIGxhc3QgdGltZSwgdGhlbiB0aGUKKwkJICogaW52YWxpZGF0aW9uIG1l c3NhZ2VzIHdlIHByb2Nlc3NlZCBkaWQgbm90IGNoYW5nZSB0aGUgZmluYWwgYW5zd2VyLgorCQkg KiBTbyB3ZSdyZSBkb25lLgorCQkgKgorCQkgKiBJZiB3ZSBnb3QgYSBkaWZmZXJlbnQgT0lELCB3 ZSd2ZSBsb2NrZWQgdGhlIHZhcmlhYmxlIHRoYXQgdXNlZCB0bworCQkgKiBoYXZlIHRoaXMgbmFt ZSByYXRoZXIgdGhhbiB0aGUgb25lIHRoYXQgZG9lcyBub3cuICBTbyByZWxlYXNlIHRoZQorCQkg KiBsb2NrLgorCQkgKi8KKwkJaWYgKHJldHJ5KQorCQl7CisJCQlpZiAob2xkX3ZhcmlkID09IHZh cmlkKQorCQkJCWJyZWFrOworCisJCQlpZiAoT2lkSXNWYWxpZChvbGRfdmFyaWQpKQorCQkJCVVu bG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRpb25JZCwgb2xkX3ZhcmlkLCAwLCBBY2Nl c3NTaGFyZUxvY2spOworCQl9CisKKwkJLyoKKwkJICogTG9jayB0aGUgdmFyaWFibGUuICBUaGlz IHdpbGwgYWxzbyBhY2NlcHQgYW55IHBlbmRpbmcgaW52YWxpZGF0aW9uCisJCSAqIG1lc3NhZ2Vz LiAgSWYgd2UgZ290IGJhY2sgSW52YWxpZE9pZCwgaW5kaWNhdGluZyBub3QgZm91bmQsIHRoZW4K KwkJICogdGhlcmUncyBub3RoaW5nIHRvIGxvY2ssIGJ1dCB3ZSBhY2NlcHQgaW52YWxpZGF0aW9u IG1lc3NhZ2VzCisJCSAqIGFueXdheSwgdG8gZmx1c2ggYW55IG5lZ2F0aXZlIGNhdGNhY2hlIGVu dHJpZXMgdGhhdCBtYXkgYmUKKwkJICogbGluZ2VyaW5nLgorCQkgKi8KKwkJaWYgKCFPaWRJc1Zh bGlkKHZhcmlkKSkKKwkJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJCWVsc2UgaWYg KE9pZElzVmFsaWQodmFyaWQpKQorCQkJTG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRp b25JZCwgdmFyaWQsIDAsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJaWYgKGludmFsX2NvdW50ID09 IFNoYXJlZEludmFsaWRNZXNzYWdlQ291bnRlcikKKwkJCWJyZWFrOworCisJCXJldHJ5ID0gdHJ1 ZTsKKwkJb2xkX3ZhcmlkID0gdmFyaWQ7CisJCXZhcmlkID0gSW52YWxpZE9pZDsKKwl9CisKKwly ZXR1cm4gdmFyaWQ7Cit9CisKIC8qCiAgKiBEZWNvbnN0cnVjdFF1YWxpZmllZE5hbWUKICAqCQlH aXZlbiBhIHBvc3NpYmx5LXF1YWxpZmllZCBuYW1lIGV4cHJlc3NlZCBhcyBhIGxpc3Qgb2YgU3Ry aW5nIG5vZGVzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCmluZGV4IGY2NTEyMTQ0MGEuLjFj NzMxODFjM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMKQEAgLTI2LDYgKzI2LDcgQEAK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbHNu LmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogc3RhdGljIE9iamVjdEFkZHJlc3Mg Y3JlYXRlX3ZhcmlhYmxlKGNvbnN0IGNoYXIgKnZhck5hbWUsCkBAIC0xMDEsNiArMTAyLDcgQEAg Y3JlYXRlX3ZhcmlhYmxlKGNvbnN0IGNoYXIgKnZhck5hbWUsCiAJdmFyaWQgPSBHZXROZXdPaWRX aXRoSW5kZXgocmVsLCBWYXJpYWJsZU9pZEluZGV4SWQsIEFudW1fcGdfdmFyaWFibGVfb2lkKTsK IAogCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX29pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2 YXJpZCk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyY3JlYXRlX2xzbiAtIDFdID0gTFNO R2V0RGF0dW0oR2V0WExvZ0luc2VydFJlY1B0cigpKTsKIAl2YWx1ZXNbQW51bV9wZ192YXJpYWJs ZV92YXJuYW1lIC0gMV0gPSBOYW1lR2V0RGF0dW0oJnZhcm5hbWUpOwogCXZhbHVlc1tBbnVtX3Bn X3ZhcmlhYmxlX3Zhcm5hbWVzcGFjZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJOYW1lc3Bh Y2UpOwogCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcnR5cGUgLSAxXSA9IE9iamVjdElkR2V0 RGF0dW0odmFyVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmls ZSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDQ4ZjczNDhmOTEuLjFjZmFl Y2E1MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCkBAIC01MCw2ICs1MCw3IEBAIE9CSlMgPSBcCiAJ c2NoZW1hY21kcy5vIFwKIAlzZWNsYWJlbC5vIFwKIAlzZXF1ZW5jZS5vIFwKKwlzZXNzaW9uX3Zh cmlhYmxlLm8gXAogCXN0YXRzY21kcy5vIFwKIAlzdWJzY3JpcHRpb25jbWRzLm8gXAogCXRhYmxl Y21kcy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKaW5kZXggNmRkMDBhNGFiZC4uY2E2MjFi ZTVlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKQEAgLTM4LDYgKzM4LDcgQEAgYmFja2Vu ZF9zb3VyY2VzICs9IGZpbGVzKAogICAnc2NoZW1hY21kcy5jJywKICAgJ3NlY2xhYmVsLmMnLAog ICAnc2VxdWVuY2UuYycsCisgICdzZXNzaW9uX3ZhcmlhYmxlLmMnLAogICAnc3RhdHNjbWRzLmMn LAogICAnc3Vic2NyaXB0aW9uY21kcy5jJywKICAgJ3RhYmxlY21kcy5jJywKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFr ZWZpbGUKaW5kZXggMTExMThkMGNlMC4uNzEyNDhhMzRmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUK QEAgLTc2LDYgKzc2LDcgQEAgT0JKUyA9IFwKIAlub2RlV2luZG93QWdnLm8gXAogCW5vZGVXb3Jr dGFibGVzY2FuLm8gXAogCXNwaS5vIFwKKwlzdmFyaWFibGVSZWNlaXZlci5vIFwKIAl0cXVldWUu byBcCiAJdHN0b3JlUmVjZWl2ZXIubwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCA5YjUy YmFiNTJmLi4zZmRkOWNiNjMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTM0LDYgKzM0 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjRXhwci5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAt OTg4LDYgKzk4OSw0NyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpz dGF0ZSwKIAkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10eXBl OwogCQkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCQkJYnJlYWs7 CisKKwkJCQkJY2FzZSBQQVJBTV9WQVJJQUJMRToKKwkJCQkJCXsKKwkJCQkJCQlpbnQJCQllc19u dW1fc2Vzc2lvbl92YXJpYWJsZXMgPSAwOworCQkJCQkJCVNlc3Npb25WYXJpYWJsZVZhbHVlICpl c19zZXNzaW9uX3ZhcmlhYmxlcyA9IE5VTEw7CisJCQkJCQkJU2Vzc2lvblZhcmlhYmxlVmFsdWUg KnZhcjsKKworCQkJCQkJCWlmIChzdGF0ZS0+cGFyZW50ICYmIHN0YXRlLT5wYXJlbnQtPnN0YXRl KQorCQkJCQkJCXsKKwkJCQkJCQkJZXNfc2Vzc2lvbl92YXJpYWJsZXMgPSBzdGF0ZS0+cGFyZW50 LT5zdGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXM7CisJCQkJCQkJCWVzX251bV9zZXNzaW9uX3Zh cmlhYmxlcyA9IHN0YXRlLT5wYXJlbnQtPnN0YXRlLT5lc19udW1fc2Vzc2lvbl92YXJpYWJsZXM7 CisJCQkJCQkJfQorCisJCQkJCQkJQXNzZXJ0KGVzX3Nlc3Npb25fdmFyaWFibGVzKTsKKworCQkJ CQkJCS8qCisJCQkJCQkJICogVXNlIGJ1ZmZlcmVkIHNlc3Npb24gdmFyaWFibGVzIHdoZW4gdGhl CisJCQkJCQkJICogYnVmZmVyIHdpdGggY29waWVkIHZhbHVlcyBpcyBhdmFpYWJsZQorCQkJCQkJ CSAqIChzdGFuZGFyZCBxdWVyeSBleGVjdXRvciBtb2RlKQorCQkJCQkJCSAqLworCisJCQkJCQkJ LyogUGFyYW1ldGVyIHNhbml0eSBjaGVja3MuICovCisJCQkJCQkJaWYgKHBhcmFtLT5wYXJhbWlk ID49IGVzX251bV9zZXNzaW9uX3ZhcmlhYmxlcykKKwkJCQkJCQkJZWxvZyhFUlJPUiwgInBhcmFt aWQgb2YgUEFSQU1fVkFSSUFCTEUgcGFyYW0gaXMgb3V0IG9mIHJhbmdlIik7CisKKwkJCQkJCQl2 YXIgPSAmZXNfc2Vzc2lvbl92YXJpYWJsZXNbcGFyYW0tPnBhcmFtaWRdOworCisJCQkJCQkJaWYg KHZhci0+dHlwaWQgIT0gcGFyYW0tPnBhcmFtdHlwZSkKKwkJCQkJCQkJZWxvZyhFUlJPUiwgInR5 cGUgb2YgYnVmZmVyZWQgdmFsdWUgaXMgZGlmZmVyZW50IHRoYW4gUEFSQU1fVkFSSUFCTEUgdHlw ZSIpOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBJbiB0aGlzIGNhc2UsIHBhc3MgdGhlIHZhbHVl IGxpa2UgYQorCQkJCQkJCSAqIGNvbnN0YW50LgorCQkJCQkJCSAqLworCQkJCQkJCXNjcmF0Y2gu b3Bjb2RlID0gRUVPUF9DT05TVDsKKwkJCQkJCQlzY3JhdGNoLmQuY29uc3R2YWwudmFsdWUgPSB2 YXItPnZhbHVlOworCQkJCQkJCXNjcmF0Y2guZC5jb25zdHZhbC5pc251bGwgPSB2YXItPmlzbnVs bDsKKwkJCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJCQl9CisJ CQkJCQlicmVhazsKKwogCQkJCQljYXNlIFBBUkFNX0VYVEVSTjoKIAogCQkJCQkJLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCmluZGV4IDRkN2M5MmQ2M2MuLmYyZmI2ODBkZWYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtNDMsNyArNDMsOSBAQAogI2luY2x1ZGUgImFjY2Vzcy94YWN0Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BhcnRp dGlvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21t YW5kcy9tYXR2aWV3LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRv ci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCkBAIC0xOTYsNiArMTk4LDUx IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MpCiAJQXNzZXJ0KHF1ZXJ5RGVzYy0+c291cmNlVGV4dCAhPSBOVUxMKTsKIAllc3RhdGUtPmVz X3NvdXJjZVRleHQgPSBxdWVyeURlc2MtPnNvdXJjZVRleHQ7CiAKKwkvKgorCSAqIFRoZSBleGVj dXRvciBkb2Vzbid0IHdvcmsgd2l0aCBzZXNzaW9uIHZhcmlhYmxlcyBkaXJlY3RseS4gVmFsdWVz IG9mCisJICogcmVsYXRlZCBzZXNzaW9uIHZhcmlhYmxlcyBhcmUgY29waWVkIHRvIGRlZGljYXRl ZCBhcnJheSwgYW5kIHRoaXMgYXJyYXkKKwkgKiBpcyBwYXNzZWQgdG8gZXhlY3V0b3IuCisJICov CisJaWYgKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnNlc3Npb25WYXJpYWJsZXMpCisJeworCQlM aXN0Q2VsbCAgICpsYzsKKwkJaW50CQkJblNlc3Npb25WYXJpYWJsZXM7CisJCWludAkJCWkgPSAw OworCisJCS8qCisJCSAqIEluIHRoaXMgY2FzZSwgdGhlIHF1ZXJ5IHVzZXMgc2Vzc2lvbiB2YXJp YWJsZXMsIGJ1dCB3ZSBoYXZlIHRvCisJCSAqIHByZXBhcmUgdGhlIGFycmF5IHdpdGggcGFzc2Vk IHZhbHVlcyAob2YgdXNlZCBzZXNzaW9uIHZhcmlhYmxlcykKKwkJICogZmlyc3QuCisJCSAqLwor CQlBc3NlcnQoIUlzUGFyYWxsZWxXb3JrZXIoKSk7CisJCW5TZXNzaW9uVmFyaWFibGVzID0gbGlz dF9sZW5ndGgocXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+c2Vzc2lvblZhcmlhYmxlcyk7CisKKwkJ LyogQ3JlYXRlIHRoZSBhcnJheSB1c2VkIGZvciBwYXNzaW5nIHZhbHVlcyBvZiB1c2VkIHNlc3Np b24gdmFyaWFibGVzICovCisJCWVzdGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXMgPSAoU2Vzc2lv blZhcmlhYmxlVmFsdWUgKikKKwkJCXBhbGxvYyhuU2Vzc2lvblZhcmlhYmxlcyAqIHNpemVvZihT ZXNzaW9uVmFyaWFibGVWYWx1ZSkpOworCisJCS8qIEZpbGwgdGhlIGFycmF5ICovCisJCWZvcmVh Y2gobGMsIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnNlc3Npb25WYXJpYWJsZXMpCisJCXsKKwkJ CUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJCQlPaWQJCQl2YXJpZCA9IGxmaXJzdF9vaWQobGMpOwor CisJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklkLCB2YXJp ZCwgR2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpOworCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVD S19PSykKKwkJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwKKwkJ CQkJCQkgICBnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSk7CisKKwkJCWVzdGF0ZS0+ ZXNfc2Vzc2lvbl92YXJpYWJsZXNbaV0udmFyaWQgPSB2YXJpZDsKKwkJCWVzdGF0ZS0+ZXNfc2Vz c2lvbl92YXJpYWJsZXNbaV0udmFsdWUgPSBHZXRTZXNzaW9uVmFyaWFibGUodmFyaWQsCisJCQkJ CQkJCQkJCQkJCQkJCSAgICZlc3RhdGUtPmVzX3Nlc3Npb25fdmFyaWFibGVzW2ldLmlzbnVsbCwK KwkJCQkJCQkJCQkJCQkJCQkJICAgJmVzdGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXNbaV0udHlw aWQpOworCisJCQlpKys7CisJCX0KKworCQllc3RhdGUtPmVzX251bV9zZXNzaW9uX3ZhcmlhYmxl cyA9IG5TZXNzaW9uVmFyaWFibGVzOworCX0KKwogCS8qCiAJICogRmlsbCBpbiB0aGUgcXVlcnkg ZW52aXJvbm1lbnQsIGlmIGFueSwgZnJvbSBxdWVyeURlc2MuCiAJICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21l c29uLmJ1aWxkCmluZGV4IGI1MTFhNDI5YWQuLmI2NjYyYzZlOGYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21l c29uLmJ1aWxkCkBAIC02NCw2ICs2NCw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAg J25vZGVXaW5kb3dBZ2cuYycsCiAgICdub2RlV29ya3RhYmxlc2Nhbi5jJywKICAgJ3NwaS5jJywK KyAgJ3N2YXJpYWJsZVJlY2VpdmVyLmMnLAogICAndHF1ZXVlLmMnLAogICAndHN0b3JlUmVjZWl2 ZXIuYycsCiApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGQyZTJhZjRmODEuLjA3ZmUwNWRlYWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC00MzI4LDYgKzQzMjgsMTYgQEAgcmF3X2V4cHJlc3Np b25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0K IAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJCXsKKwkJCQlMZXRTdG10ICAgICpzdG10 ID0gKExldFN0bXQgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKHN0bXQtPnRhcmdldCkpCisJCQkJ CXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHN0bXQtPnF1ZXJ5KSkKKwkJCQkJcmV0dXJuIHRy dWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX1BMQXNzaWduU3RtdDoKIAkJCXsKIAkJCQlQ TEFzc2lnblN0bXQgKnN0bXQgPSAoUExBc3NpZ25TdG10ICopIG5vZGU7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggOTQ4YWZkOTA5NC4uZTUwMjRmMzNhNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMzIzLDYgKzMyMyw3IEBAIHN0YW5kYXJkX3Bs YW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JP cHRpb25zLAogCWdsb2ItPmxhc3RQbGFuTm9kZUlkID0gMDsKIAlnbG9iLT50cmFuc2llbnRQbGFu ID0gZmFsc2U7CiAJZ2xvYi0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOworCWdsb2ItPnNlc3Npb25W YXJpYWJsZXMgPSBOSUw7CiAKIAkvKgogCSAqIEFzc2VzcyB3aGV0aGVyIGl0J3MgZmVhc2libGUg dG8gdXNlIHBhcmFsbGVsIG1vZGUgZm9yIHRoaXMgcXVlcnkuIFdlCkBAIC01NTcsNiArNTU4LDcg QEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmlu ZywgaW50IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0LT5wYXJhbUV4ZWNUeXBlcyA9IGdsb2ItPnBh cmFtRXhlY1R5cGVzOwogCS8qIHV0aWxpdHlTdG10IHNob3VsZCBiZSBudWxsLCBidXQgd2UgbWln aHQgYXMgd2VsbCBjb3B5IGl0ICovCiAJcmVzdWx0LT51dGlsaXR5U3RtdCA9IHBhcnNlLT51dGls aXR5U3RtdDsKKwlyZXN1bHQtPnNlc3Npb25WYXJpYWJsZXMgPSBnbG9iLT5zZXNzaW9uVmFyaWFi bGVzOwogCXJlc3VsdC0+c3RtdF9sb2NhdGlvbiA9IHBhcnNlLT5zdG10X2xvY2F0aW9uOwogCXJl c3VsdC0+c3RtdF9sZW4gPSBwYXJzZS0+c3RtdF9sZW47CiAKQEAgLTcyNyw2ICs3MjksMTMgQEAg c3VicXVlcnlfcGxhbm5lcihQbGFubmVyR2xvYmFsICpnbG9iLCBRdWVyeSAqcGFyc2UsIFBsYW5u ZXJJbmZvICpwYXJlbnRfcm9vdCwKIAkgKi8KIAlwdWxsX3VwX3N1YnF1ZXJpZXMocm9vdCk7CiAK KwkvKgorCSAqIENoZWNrIGlmIHNvbWUgc3VicXVlcnkgdXNlcyBhIHNlc3Npb24gdmFyaWFibGUu ICBUaGUgZmxhZworCSAqIGhhc1Nlc3Npb25WYXJpYWJsZXMgc2hvdWxkIGJlIHRydWUgaWYgdGhl IHF1ZXJ5IG9yIHNvbWUgc3VicXVlcnkgdXNlcyBhCisJICogc2Vzc2lvbiB2YXJpYWJsZS4KKwkg Ki8KKwlwdWxsX3VwX2hhc19zZXNzaW9uX3ZhcmlhYmxlcyhyb290KTsKKwogCS8qCiAJICogSWYg dGhpcyBpcyBhIHNpbXBsZSBVTklPTiBBTEwgcXVlcnksIGZsYXR0ZW4gaXQgaW50byBhbiBhcHBl bmRyZWwuIFdlCiAJICogZG8gdGhpcyBub3cgYmVjYXVzZSBpdCByZXF1aXJlcyBhcHBseWluZyBw dWxsX3VwX3N1YnF1ZXJpZXMgdG8gdGhlIGxlYWYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYwppbmRleCA3YWVkODQ1ODRjLi45NWNkYTQ3MjZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc2V0cmVmcy5jCkBAIC0yMDksNiArMjA5LDkgQEAgc3RhdGljIExpc3QgKnNldF9yZXR1cm5p bmdfY2xhdXNlX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiBzdGF0aWMgTGlzdCAqc2V0 X3dpbmRvd2FnZ19ydW5jb25kaXRpb25fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCQkJCQkJCSAgIExpc3QgKnJ1bmNvbmRpdGlvbiwKIAkJCQkJCQkJCQkJCSAgIFBsYW4gKnBs YW4pOworc3RhdGljIGJvb2wgcHVsbF91cF9oYXNfc2Vzc2lvbl92YXJpYWJsZXNfd2Fsa2VyKE5v ZGUgKm5vZGUsCisJCQkJCQkJCQkJCQkgUGxhbm5lckluZm8gKnJvb3QpOworc3RhdGljIHZvaWQg cmVjb3JkX3BsYW5fdmFyaWFibGVfZGVwZW5kZW5jeShQbGFubmVySW5mbyAqcm9vdCwgT2lkIHZh cmlkKTsKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEzMDgsNiArMTMxMSw1MCBAQCBz ZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQp CiAJcmV0dXJuIHBsYW47CiB9CiAKKy8qCisgKiBTZWFyY2ggdXNhZ2Ugb2Ygc2Vzc2lvbiB2YXJp YWJsZXMgaW4gc3VicXVlcmllcworICovCit2b2lkCitwdWxsX3VwX2hhc19zZXNzaW9uX3Zhcmlh YmxlcyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlRdWVyeQkgICAqcXVlcnkgPSByb290LT5wYXJz ZTsKKworCWlmIChxdWVyeS0+aGFzU2Vzc2lvblZhcmlhYmxlcykKKwl7CisJCXJvb3QtPmhhc1Nl c3Npb25WYXJpYWJsZXMgPSB0cnVlOworCX0KKwllbHNlCisJeworCQkodm9pZCkgcXVlcnlfdHJl ZV93YWxrZXIocXVlcnksCisJCQkJCQkJCSBwdWxsX3VwX2hhc19zZXNzaW9uX3ZhcmlhYmxlc193 YWxrZXIsCisJCQkJCQkJCSAodm9pZCAqKSByb290LCAwKTsKKwl9Cit9CisKK3N0YXRpYyBib29s CitwdWxsX3VwX2hhc19zZXNzaW9uX3ZhcmlhYmxlc193YWxrZXIoTm9kZSAqbm9kZSwgUGxhbm5l ckluZm8gKnJvb3QpCit7CisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCWlm IChJc0Eobm9kZSwgUXVlcnkpKQorCXsKKwkJUXVlcnkJICAgKnF1ZXJ5ID0gKFF1ZXJ5ICopIG5v ZGU7CisKKwkJaWYgKHF1ZXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzKQorCQl7CisJCQlyb290LT5o YXNTZXNzaW9uVmFyaWFibGVzID0gdHJ1ZTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCS8q IFJlY3Vyc2UgaW50byBzdWJzZWxlY3RzICovCisJCXJldHVybiBxdWVyeV90cmVlX3dhbGtlcigo UXVlcnkgKikgbm9kZSwKKwkJCQkJCQkJIHB1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzX3dh bGtlciwKKwkJCQkJCQkJICh2b2lkICopIHJvb3QsIDApOworCX0KKwlyZXR1cm4gZXhwcmVzc2lv bl90cmVlX3dhbGtlcihub2RlLCBwdWxsX3VwX2hhc19zZXNzaW9uX3ZhcmlhYmxlc193YWxrZXIs CisJCQkJCQkJCSAgKHZvaWQgKikgcm9vdCk7Cit9CisKIC8qCiAgKiBzZXRfaW5kZXhvbmx5c2Nh bl9yZWZlcmVuY2VzCiAgKgkJRG8gc2V0X3BsYW5fcmVmZXJlbmNlcyBwcm9jZXNzaW5nIG9uIGFu IEluZGV4T25seVNjYW4KQEAgLTE5NTYsOCArMjAwMyw5IEBAIGNvcHlWYXIoVmFyICp2YXIpCiAg KiBUaGlzIGlzIGNvZGUgdGhhdCBpcyBjb21tb24gdG8gYWxsIHZhcmlhbnRzIG9mIGV4cHJlc3Np b24tZml4aW5nLgogICogV2UgbXVzdCBsb29rIHVwIG9wZXJhdG9yIG9wY29kZSBpbmZvIGZvciBP cEV4cHIgYW5kIHJlbGF0ZWQgbm9kZXMsCiAgKiBhZGQgT0lEcyBmcm9tIHJlZ2NsYXNzIENvbnN0 IG5vZGVzIGludG8gcm9vdC0+Z2xvYi0+cmVsYXRpb25PaWRzLCBhbmQKLSAqIGFkZCBQbGFuSW52 YWxJdGVtcyBmb3IgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBpbnRvIHJvb3QtPmdsb2ItPmludmFs SXRlbXMuCi0gKiBXZSBhbHNvIGZpbGwgaW4gY29sdW1uIGluZGV4IGxpc3RzIGZvciBHUk9VUElO RygpIGV4cHJlc3Npb25zLgorICogYWRkIFBsYW5JbnZhbEl0ZW1zIGZvciB1c2VyLWRlZmluZWQg ZnVuY3Rpb25zIGFuZCBzZXNzaW9uIHZhcmlhYmxlcyBpbnRvCisgKiByb290LT5nbG9iLT5pbnZh bEl0ZW1zLiAgV2UgYWxzbyBmaWxsIGluIGNvbHVtbiBpbmRleCBsaXN0cyBmb3IgR1JPVVBJTkco KQorICogZXhwcmVzc2lvbnMuCiAgKgogICogV2UgYXNzdW1lIGl0J3Mgb2theSB0byB1cGRhdGUg b3Bjb2RlIGluZm8gaW4tcGxhY2UuICBTbyB0aGlzIGNvdWxkIHBvc3NpYmx5CiAgKiBzY3JpYmJs ZSBvbiB0aGUgcGxhbm5lcidzIGlucHV0IGRhdGEgc3RydWN0dXJlcywgYnV0IGl0J3MgT0suCkBA IC0yMDQ3LDYgKzIwOTUsMTMgQEAgZml4X2V4cHJfY29tbW9uKFBsYW5uZXJJbmZvICpyb290LCBO b2RlICpub2RlKQogCQkJCWctPmNvbHMgPSBjb2xzOwogCQl9CiAJfQorCWVsc2UgaWYgKElzQShu b2RlLCBQYXJhbSkpCisJeworCQlQYXJhbQkgICAqcCA9IChQYXJhbSAqKSBub2RlOworCisJCWlm IChwLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUpCisJCQlyZWNvcmRfcGxhbl92YXJpYWJs ZV9kZXBlbmRlbmN5KHJvb3QsIHAtPnBhcmFtdmFyaWQpOworCX0KIH0KIAogLyoKQEAgLTIwNTYs NiArMjExMSwxMCBAQCBmaXhfZXhwcl9jb21tb24oUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5v ZGUpCiAgKiBJZiBpdCdzIGEgUEFSQU1fTVVMVElFWFBSLCByZXBsYWNlIGl0IHdpdGggdGhlIGFw cHJvcHJpYXRlIFBhcmFtIGZyb20KICAqIHJvb3QtPm11bHRpZXhwcl9wYXJhbXM7IG90aGVyd2lz ZSBubyBjaGFuZ2UgaXMgbmVlZGVkLgogICogSnVzdCBmb3IgcGFyYW5vaWEncyBzYWtlLCB3ZSBt YWtlIGEgY29weSBvZiB0aGUgbm9kZSBpbiBlaXRoZXIgY2FzZS4KKyAqCisgKiBJZiBpdCdzIGEg UEFSQU1fVkFSSUFCTEUsIHRoZW4gd2UgY29sbGVjdCB1c2VkIHNlc3Npb24gdmFyaWFibGVzIGlu CisgKiB0aGUgbGlzdCByb290LT5nbG9iLT5zZXNzaW9uVmFyaWFibGUuICBBbHNvLCBhc3NpZ24g dGhlIHBhcmFtZXRlcidzCisgKiAicGFyYW1pZCIgdG8gdGhlIHBhcmFtZXRlcidzIHBvc2l0aW9u IGluIHRoYXQgbGlzdC4KICAqLwogc3RhdGljIE5vZGUgKgogZml4X3BhcmFtX25vZGUoUGxhbm5l ckluZm8gKnJvb3QsIFBhcmFtICpwKQpAQCAtMjA3NCw2ICsyMTMzLDQxIEBAIGZpeF9wYXJhbV9u b2RlKFBsYW5uZXJJbmZvICpyb290LCBQYXJhbSAqcCkKIAkJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIFBBUkFNX01VTFRJRVhQUiBJRDogJWQiLCBwLT5wYXJhbWlkKTsKIAkJcmV0dXJuIGNvcHlP YmplY3QobGlzdF9udGgocGFyYW1zLCBjb2xubyAtIDEpKTsKIAl9CisKKwlpZiAocC0+cGFyYW1r aW5kID09IFBBUkFNX1ZBUklBQkxFKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisJCWludAkJCW4g PSAwOworCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCS8qIFdlIHdpbGwgbW9kaWZ5IG9iamVj dCAqLworCQlwID0gKFBhcmFtICopIGNvcHlPYmplY3QocCk7CisKKwkJLyoKKwkJICogTm93LCB3 ZSBjYW4gYWN0dWFsaXplIGxpc3Qgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMsIGFuZCB3ZSBjYW4KKwkJ ICogY29tcGxldGUgcGFyYW1pZCBwYXJhbWV0ZXIuCisJCSAqLworCQlmb3JlYWNoKGxjLCByb290 LT5nbG9iLT5zZXNzaW9uVmFyaWFibGVzKQorCQl7CisJCQlpZiAobGZpcnN0X29pZChsYykgPT0g cC0+cGFyYW12YXJpZCkKKwkJCXsKKwkJCQlwLT5wYXJhbWlkID0gbjsKKwkJCQlmb3VuZCA9IHRy dWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQluICs9IDE7CisJCX0KKworCQlpZiAoIWZvdW5kKQor CQl7CisJCQlyb290LT5nbG9iLT5zZXNzaW9uVmFyaWFibGVzID0gbGFwcGVuZF9vaWQocm9vdC0+ Z2xvYi0+c2Vzc2lvblZhcmlhYmxlcywKKwkJCQkJCQkJCQkJCQkgICBwLT5wYXJhbXZhcmlkKTsK KwkJCXAtPnBhcmFtaWQgPSBuOworCQl9CisKKwkJcmV0dXJuIChOb2RlICopIHA7CisJfQorCiAJ cmV0dXJuIChOb2RlICopIGNvcHlPYmplY3QocCk7CiB9CiAKQEAgLTIxMzUsNyArMjIyOSwxMCBA QCBmaXhfYWx0ZXJuYXRpdmVfc3VicGxhbihQbGFubmVySW5mbyAqcm9vdCwgQWx0ZXJuYXRpdmVT dWJQbGFuICphc3BsYW4sCiAgKiByZXBsYWNpbmcgQWdncmVmIG5vZGVzIHRoYXQgc2hvdWxkIGJl IHJlcGxhY2VkIGJ5IGluaXRwbGFuIG91dHB1dCBQYXJhbXMsCiAgKiBjaG9vc2luZyB0aGUgYmVz dCBpbXBsZW1lbnRhdGlvbiBmb3IgQWx0ZXJuYXRpdmVTdWJQbGFucywKICAqIGxvb2tpbmcgdXAg b3BlcmF0b3Igb3Bjb2RlIGluZm8gZm9yIE9wRXhwciBhbmQgcmVsYXRlZCBub2RlcywKLSAqIGFu ZCBhZGRpbmcgT0lEcyBmcm9tIHJlZ2NsYXNzIENvbnN0IG5vZGVzIGludG8gcm9vdC0+Z2xvYi0+ cmVsYXRpb25PaWRzLgorICogYWRkaW5nIE9JRHMgZnJvbSByZWdjbGFzcyBDb25zdCBub2RlcyBp bnRvIHJvb3QtPmdsb2ItPnJlbGF0aW9uT2lkcywKKyAqIGFzc2lnbmluZyBwYXJhbXZhcmlkIHRv IFBBUkFNX1ZBUklBQkxFIHBhcmFtcywgYW5kIGNvbGxlY3RpbmcgdGhlCisgKiBPSURzIG9mIHNl c3Npb24gdmFyaWFibGVzIGluIHRoZSByb290LT5nbG9iLT5zZXNzaW9uVmFyaWFibGVzIGxpc3QK KyAqIChwYXJhbXZhcmlkIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBp biB0aGlzIGxpc3QpLgogICoKICAqICdub2RlJzogdGhlIGV4cHJlc3Npb24gdG8gYmUgbW9kaWZp ZWQKICAqICdydG9mZnNldCc6IGhvdyBtdWNoIHRvIGluY3JlbWVudCB2YXJub3MgYnkKQEAgLTIx NTcsNyArMjI1NCw4IEBAIGZpeF9zY2FuX2V4cHIoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5v ZGUsIGludCBydG9mZnNldCwgZG91YmxlIG51bV9leGVjKQogCQlyb290LT5tdWx0aWV4cHJfcGFy YW1zICE9IE5JTCB8fAogCQlyb290LT5nbG9iLT5sYXN0UEhJZCAhPSAwIHx8CiAJCXJvb3QtPm1p bm1heF9hZ2dzICE9IE5JTCB8fAotCQlyb290LT5oYXNBbHRlcm5hdGl2ZVN1YlBsYW5zKQorCQly b290LT5oYXNBbHRlcm5hdGl2ZVN1YlBsYW5zIHx8CisJCXJvb3QtPmhhc1Nlc3Npb25WYXJpYWJs ZXMpCiAJewogCQlyZXR1cm4gZml4X3NjYW5fZXhwcl9tdXRhdG9yKG5vZGUsICZjb250ZXh0KTsK IAl9CkBAIC0zNTIwLDYgKzM2MTgsMjUgQEAgcmVjb3JkX3BsYW5fdHlwZV9kZXBlbmRlbmN5KFBs YW5uZXJJbmZvICpyb290LCBPaWQgdHlwaWQpCiAJfQogfQogCisvKgorICogUmVjb3JkIGRlcGVu ZGVuY3kgb24gYSBzZXNzaW9uIHZhcmlhYmxlLiAgVGhlIHZhcmlhYmxlIGNhbiBiZSB1c2VkIGFz IGEKKyAqIHNlc3Npb24gdmFyaWFibGUgaW4gYW4gZXhwcmVzc2lvbiBsaXN0LCBvciBhcyB0aGUg dGFyZ2V0IG9mIGEgTEVUIHN0YXRlbWVudC4KKyAqLworc3RhdGljIHZvaWQKK3JlY29yZF9wbGFu X3ZhcmlhYmxlX2RlcGVuZGVuY3koUGxhbm5lckluZm8gKnJvb3QsIE9pZCB2YXJpZCkKK3sKKwlQ bGFuSW52YWxJdGVtICppbnZhbF9pdGVtID0gbWFrZU5vZGUoUGxhbkludmFsSXRlbSk7CisKKwkv KiBwYXJhbWlkIGlzIHN0aWxsIHNlc3Npb24gdmFyaWFibGUgaWQgKi8KKwlpbnZhbF9pdGVtLT5j YWNoZUlkID0gVkFSSUFCTEVPSUQ7CisJaW52YWxfaXRlbS0+aGFzaFZhbHVlID0gR2V0U3lzQ2Fj aGVIYXNoVmFsdWUxKFZBUklBQkxFT0lELAorCQkJCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVt KHZhcmlkKSk7CisKKwkvKiBBcHBlbmQgdGhpcyB2YXJpYWJsZSB0byBnbG9iYWwsIHJlZ2lzdGVy IGRlcGVuZGVuY3kgKi8KKwlyb290LT5nbG9iLT5pbnZhbEl0ZW1zID0gbGFwcGVuZChyb290LT5n bG9iLT5pbnZhbEl0ZW1zLAorCQkJCQkJCQkJIGludmFsX2l0ZW0pOworfQorCiAvKgogICogZXh0 cmFjdF9xdWVyeV9kZXBlbmRlbmNpZXMKICAqCQlHaXZlbiBhIHJld3JpdHRlbiwgYnV0IG5vdCB5 ZXQgcGxhbm5lZCwgcXVlcnkgb3IgcXVlcmllcwpAQCAtMzYwNSw5ICszNzIyLDkgQEAgZXh0cmFj dF9xdWVyeV9kZXBlbmRlbmNpZXNfd2Fsa2VyKE5vZGUgKm5vZGUsIFBsYW5uZXJJbmZvICpjb250 ZXh0KQogCQkJfQogCiAJCQkvKgotCQkJICogSWdub3JlIG90aGVyIHV0aWxpdHkgc3RhdGVtZW50 cywgZXhjZXB0IHRob3NlIChzdWNoIGFzIEVYUExBSU4pCi0JCQkgKiB0aGF0IGNvbnRhaW4gYSBw YXJzZWQtYnV0LW5vdC1wbGFubmVkIHF1ZXJ5LiAgRm9yIHRob3NlLCB3ZQotCQkJICoganVzdCBu ZWVkIHRvIHRyYW5zZmVyIG91ciBhdHRlbnRpb24gdG8gdGhlIGNvbnRhaW5lZCBxdWVyeS4KKwkJ CSAqIElnbm9yZSBvdGhlciB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBh cyBFWFBMQUlOCisJCQkgKiBvciBMRVQpIHRoYXQgY29udGFpbiBhIHBhcnNlZC1idXQtbm90LXBs YW5uZWQgcXVlcnkuICBGb3IgdGhvc2UsCisJCQkgKiB3ZSBqdXN0IG5lZWQgdG8gdHJhbnNmZXIg b3VyIGF0dGVudGlvbiB0byB0aGUgY29udGFpbmVkIHF1ZXJ5LgogCQkJICovCiAJCQlxdWVyeSA9 IFV0aWxpdHlDb250YWluc1F1ZXJ5KHF1ZXJ5LT51dGlsaXR5U3RtdCk7CiAJCQlpZiAocXVlcnkg PT0gTlVMTCkKQEAgLTM2MzAsNiArMzc0NywxMCBAQCBleHRyYWN0X3F1ZXJ5X2RlcGVuZGVuY2ll c193YWxrZXIoTm9kZSAqbm9kZSwgUGxhbm5lckluZm8gKmNvbnRleHQpCiAJCQkJCWxhcHBlbmRf b2lkKGNvbnRleHQtPmdsb2ItPnJlbGF0aW9uT2lkcywgcnRlLT5yZWxpZCk7CiAJCX0KIAorCQkv KiByZWNvcmQgZGVwZW5kZW5jeSBvbiB0aGUgdGFyZ2V0IHZhcmlhYmxlIG9mIGEgTEVUIGNvbW1h bmQgKi8KKwkJaWYgKE9pZElzVmFsaWQocXVlcnktPnJlc3VsdFZhcmlhYmxlKSkKKwkJCXJlY29y ZF9wbGFuX3ZhcmlhYmxlX2RlcGVuZGVuY3koY29udGV4dCwgcXVlcnktPnJlc3VsdFZhcmlhYmxl KTsKKwogCQkvKiBBbmQgcmVjdXJzZSBpbnRvIHRoZSBxdWVyeSdzIHN1YmV4cHJlc3Npb25zICov CiAJCXJldHVybiBxdWVyeV90cmVlX3dhbGtlcihxdWVyeSwgZXh0cmFjdF9xdWVyeV9kZXBlbmRl bmNpZXNfd2Fsa2VyLAogCQkJCQkJCQkgKHZvaWQgKikgY29udGV4dCwgMCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jCmluZGV4IDk2OWUyNTdmNzAuLjA2MWFjMmRj N2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jCkBAIC0xMzE0 LDYgKzEzMTQsOSBAQCBwdWxsX3VwX3NpbXBsZV9zdWJxdWVyeShQbGFubmVySW5mbyAqcm9vdCwg Tm9kZSAqanRub2RlLCBSYW5nZVRibEVudHJ5ICpydGUsCiAJLyogSWYgc3VicXVlcnkgaGFkIGFu eSBSTFMgY29uZGl0aW9ucywgbm93IG1haW4gcXVlcnkgZG9lcyB0b28gKi8KIAlwYXJzZS0+aGFz Um93U2VjdXJpdHkgfD0gc3VicXVlcnktPmhhc1Jvd1NlY3VyaXR5OwogCisJLyogaWYgdGhlIHN1 YnF1ZXJ5IGhhZCBzZXNzaW9uIHZhcmlhYmxlcywgdGhlIG1haW4gcXVlcnkgZG9lcyB0b28gKi8K KwlwYXJzZS0+aGFzU2Vzc2lvblZhcmlhYmxlcyB8PSBzdWJxdWVyeS0+aGFzU2Vzc2lvblZhcmlh YmxlczsKKwogCS8qCiAJICogc3VicXVlcnkgd29uJ3QgYmUgcHVsbGVkIHVwIGlmIGl0IGhhc0Fn Z3MsIGhhc1dpbmRvd0Z1bmNzLCBvcgogCSAqIGhhc1RhcmdldFNSRnMsIHNvIG5vIHdvcmsgbmVl ZGVkIG9uIHRob3NlIGZsYWdzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXgg YjRlMDg1ZTlkNC4uMDA2M2IyYjYzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMu YwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK KyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9mdW5jdGlvbnMuaCIKICNpbmNsdWRl ICJmdW5jYXBpLmgiCkBAIC05MzUsNiArOTM2LDEzIEBAIG1heF9wYXJhbGxlbF9oYXphcmRfd2Fs a2VyKE5vZGUgKm5vZGUsIG1heF9wYXJhbGxlbF9oYXphcmRfY29udGV4dCAqY29udGV4dCkKIAkJ aWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOKQogCQkJcmV0dXJuIGZhbHNlOwog CisJCS8qIHdlIGRvbid0IHN1cHBvcnQgcGFzc2luZyBzZXNzaW9uIHZhcmlhYmxlcyB0byB3b3Jr ZXJzICovCisJCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQorCQl7CisJ CQlpZiAobWF4X3BhcmFsbGVsX2hhemFyZF90ZXN0KFBST1BBUkFMTEVMX1JFU1RSSUNURUQsIGNv bnRleHQpKQorCQkJCXJldHVybiB0cnVlOworCQl9CisKIAkJaWYgKHBhcmFtLT5wYXJhbWtpbmQg IT0gUEFSQU1fRVhFQyB8fAogCQkJIWxpc3RfbWVtYmVyX2ludChjb250ZXh0LT5zYWZlX3BhcmFt X2lkcywgcGFyYW0tPnBhcmFtaWQpKQogCQl7CkBAIC0yMzg5LDYgKzIzOTcsNyBAQCBjb252ZXJ0 X3Nhb3BfdG9faGFzaGVkX3Nhb3Bfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAg KgkgIHZhbHVlIG9mIHRoZSBQYXJhbS4KICAqIDIuIEZvbGQgc3RhYmxlLCBhcyB3ZWxsIGFzIGlt bXV0YWJsZSwgZnVuY3Rpb25zIHRvIGNvbnN0YW50cy4KICAqIDMuIFJlZHVjZSBQbGFjZUhvbGRl clZhciBub2RlcyB0byB0aGVpciBjb250YWluZWQgZXhwcmVzc2lvbnMuCisgKiA0LiBDdXJyZW50 IHZhbHVlIG9mIHNlc3Npb24gdmFyaWFibGUgY2FuIGJlIHVzZWQgZm9yIGVzdGltYXRpb24gdG9v LgogICotLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBOb2RlICoKQEAgLTI1MTUsNiArMjUyNCwy OSBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQkJCX0K IAkJCQkJfQogCQkJCX0KKwkJCQllbHNlIGlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1ZB UklBQkxFICYmCisJCQkJCQkgY29udGV4dC0+ZXN0aW1hdGUpCisJCQkJeworCQkJCQlpbnQxNgkJ dHlwTGVuOworCQkJCQlib29sCQl0eXBCeVZhbDsKKwkJCQkJRGF0dW0JCXB2YWw7CisJCQkJCWJv b2wJCWlzbnVsbDsKKworCQkJCQlnZXRfdHlwbGVuYnl2YWwocGFyYW0tPnBhcmFtdHlwZSwKKwkJ CQkJCQkJCSZ0eXBMZW4sICZ0eXBCeVZhbCk7CisKKwkJCQkJcHZhbCA9IEdldFNlc3Npb25WYXJp YWJsZVdpdGhUeXBlQ2hlY2socGFyYW0tPnBhcmFtdmFyaWQsCisJCQkJCQkJCQkJCQkJCSAgICZp c251bGwsCisJCQkJCQkJCQkJCQkJCSAgIHBhcmFtLT5wYXJhbXR5cGUpOworCisJCQkJCXJldHVy biAoTm9kZSAqKSBtYWtlQ29uc3QocGFyYW0tPnBhcmFtdHlwZSwKKwkJCQkJCQkJCQkJICBwYXJh bS0+cGFyYW10eXBtb2QsCisJCQkJCQkJCQkJCSAgcGFyYW0tPnBhcmFtY29sbGlkLAorCQkJCQkJ CQkJCQkgIChpbnQpIHR5cExlbiwKKwkJCQkJCQkJCQkJICBwdmFsLAorCQkJCQkJCQkJCQkgIGlz bnVsbCwKKwkJCQkJCQkJCQkJICB0eXBCeVZhbCk7CisJCQkJfQogCiAJCQkJLyoKIAkJCQkgKiBO b3QgcmVwbGFjZWFibGUsIHNvIGp1c3QgY29weSB0aGUgUGFyYW0gKG5vIG5lZWQgdG8KQEAgLTQ3 MDYsNyArNDczOCw4IEBAIGlubGluZV9mdW5jdGlvbihPaWQgZnVuY2lkLCBPaWQgcmVzdWx0X3R5 cGUsIE9pZCByZXN1bHRfY29sbGlkLAogCQlxdWVyeXRyZWUtPmxpbWl0T2Zmc2V0IHx8CiAJCXF1 ZXJ5dHJlZS0+bGltaXRDb3VudCB8fAogCQlxdWVyeXRyZWUtPnNldE9wZXJhdGlvbnMgfHwKLQkJ bGlzdF9sZW5ndGgocXVlcnl0cmVlLT50YXJnZXRMaXN0KSAhPSAxKQorCQkobGlzdF9sZW5ndGgo cXVlcnl0cmVlLT50YXJnZXRMaXN0KSAhPSAxKSB8fAorCQlxdWVyeXRyZWUtPmhhc1Nlc3Npb25W YXJpYWJsZXMpCiAJCWdvdG8gZmFpbDsKIAogCS8qIElmIHRoZSBmdW5jdGlvbiByZXN1bHQgaXMg Y29tcG9zaXRlLCByZXNvbHZlIGl0ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv YW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCAyOGZlZDlkODdm Li4wNjMwNTAzNjk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTI1LDkgKzI1LDEyIEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vz c2lvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVz L21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtNTAsNiArNTMs NyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNr ZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKIApAQCAtODIsNiArODYsOCBAQCBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUNy ZWF0ZVRhYmxlQXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgQ3JlYXRlVGFi bGVBc1N0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1DYWxsU3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkJCUNhbGxTdG10ICpzdG10KTsKK3N0YXRpYyBRdWVyeSAqdHJh bnNmb3JtTGV0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJICAgTGV0U3RtdCAqc3Rt dCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Mb2NraW5nQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgUXVlcnkgKnFyeSwKIAkJCQkJCQkJICAgTG9ja2luZ0NsYXVzZSAqbGMsIGJvb2wgcHVzaGVk RG93bik7CiAjaWZkZWYgUkFXX0VYUFJFU1NJT05fQ09WRVJBR0VfVEVTVApAQCAtMzI1LDYgKzMz MSw3IEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUp CiAJCWNhc2UgVF9VcGRhdGVTdG10OgogCQljYXNlIFRfRGVsZXRlU3RtdDoKIAkJY2FzZSBUX01l cmdlU3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJCQkodm9pZCkgdGVzdF9yYXdfZXhwcmVzc2lv bl9jb3ZlcmFnZShwYXJzZVRyZWUsIE5VTEwpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC00 MDMsNiArNDEwLDExIEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpw YXJzZVRyZWUpCiAJCQkJCQkJCQkgICAoQ2FsbFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJyZWFr OwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJcmVzdWx0ID0gdHJhbnNmb3JtTGV0U3RtdChwc3Rh dGUsCisJCQkJCQkJCQkgIChMZXRTdG10ICopIHBhcnNlVHJlZSk7CisJCQlicmVhazsKKwogCQlk ZWZhdWx0OgogCiAJCQkvKgpAQCAtNDU0LDYgKzQ2Niw3IEBAIHN0bXRfcmVxdWlyZXNfcGFyc2Vf YW5hbHlzaXMoUmF3U3RtdCAqcGFyc2VUcmVlKQogCQljYXNlIFRfU2VsZWN0U3RtdDoKIAkJY2Fz ZSBUX1JldHVyblN0bXQ6CiAJCWNhc2UgVF9QTEFzc2lnblN0bXQ6CisJCWNhc2UgVF9MZXRTdG10 OgogCQkJcmVzdWx0ID0gdHJ1ZTsKIAkJCWJyZWFrOwogCkBAIC01NjIsNiArNTc1LDcgQEAgdHJh bnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpCiAJ cXJ5LT5oYXNXaW5kb3dGdW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKIAlxcnktPmhh c1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc0FnZ3MgPSBw c3RhdGUtPnBfaGFzQWdnczsKKwlxcnktPmhhc1Nlc3Npb25WYXJpYWJsZXMgPSBwc3RhdGUtPnBf aGFzU2Vzc2lvblZhcmlhYmxlczsKIAogCWFzc2lnbl9xdWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwg cXJ5KTsKIApAQCAtOTg4LDYgKzEwMDIsNyBAQCB0cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSW5zZXJ0U3RtdCAqc3RtdCkKIAogCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBz dGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwogCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFz U3ViTGlua3M7CisJcXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hhc1Nlc3Np b25WYXJpYWJsZXM7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAK QEAgLTE0NTMsNiArMTQ2OCw3IEBAIHRyYW5zZm9ybVNlbGVjdFN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCXFyeS0+aGFzV2luZG93RnVuY3MgPSBwc3RhdGUtPnBf aGFzV2luZG93RnVuY3M7CiAJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1Rhcmdl dFNSRnM7CiAJcXJ5LT5oYXNBZ2dzID0gcHN0YXRlLT5wX2hhc0FnZ3M7CisJcXJ5LT5oYXNTZXNz aW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hhc1Nlc3Npb25WYXJpYWJsZXM7CiAKIAlmb3JlYWNo KGwsIHN0bXQtPmxvY2tpbmdDbGF1c2UpCiAJewpAQCAtMTY3OSwxMiArMTY5NSwyMzUgQEAgdHJh bnNmb3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCkK IAlxcnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgTlVMTCk7 CiAKIAlxcnktPmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCXFyeS0+aGFz U2Vzc2lvblZhcmlhYmxlcyA9IHBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzOwogCiAJYXNz aWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCiAJcmV0dXJuIHFyeTsKIH0KIAor LyoKKyAqIHRyYW5zZm9ybUxldFN0bXQgLQorICoJICB0cmFuc2Zvcm0gYW4gTGV0IFN0YXRlbWVu dAorICovCitzdGF0aWMgUXVlcnkgKgordHJhbnNmb3JtTGV0U3RtdChQYXJzZVN0YXRlICpwc3Rh dGUsIExldFN0bXQgKnN0bXQpCit7CisJUXVlcnkJICAgKnF1ZXJ5OworCVF1ZXJ5CSAgICpyZXN1 bHQ7CisJTGlzdAkgICAqZXhwckxpc3QgPSBOSUw7CisJTGlzdAkgICAqZXhwckxpc3RDb2VyID0g TklMOworCUxpc3RDZWxsICAgKmxjOworCUxpc3RDZWxsICAgKmluZGlyZWN0aW9uX2hlYWQgPSBO VUxMOworCVF1ZXJ5CSAgICpzZWxlY3RRdWVyeTsKKwlPaWQJCQl2YXJpZDsKKwljaGFyCSAgICph dHRybmFtZSA9IE5VTEw7CisJYm9vbAkJbm90X3VuaXF1ZTsKKwlib29sCQlpc19yb3d0eXBlOwor CU9pZAkJCXR5cGlkOworCWludDMyCQl0eXBtb2Q7CisJT2lkCQkJY29sbGlkOworCUFjbFJlc3Vs dAlhY2xyZXN1bHQ7CisJTGlzdAkgICAqbmFtZXMgPSBOVUxMOworCWludAkJCWluZGlyZWN0aW9u X3N0YXJ0OworCWludAkJCWkgPSAwOworCisJLyogVGhlcmUgY2FuJ3QgYmUgYW55IG91dGVyIFdJ VEggdG8gd29ycnkgYWJvdXQgKi8KKwlBc3NlcnQocHN0YXRlLT5wX2N0ZW5hbWVzcGFjZSA9PSBO SUwpOworCisJbmFtZXMgPSBOYW1lc0Zyb21MaXN0KHN0bXQtPnRhcmdldCk7CisKKwkvKiBsb2Nr cyB0aGUgdmFyaWFibGUgd2l0aCBhbiBBY2Nlc3NTaGFyZUxvY2sgKi8KKwl2YXJpZCA9IElkZW50 aWZ5VmFyaWFibGUobmFtZXMsICZhdHRybmFtZSwgJm5vdF91bmlxdWUsIGZhbHNlKTsKKwlpZiAo bm90X3VuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklH VU9VU19QQVJBTUVURVIpLAorCQkJCSBlcnJtc2coInRhcmdldCBcIiVzXCIgb2YgTEVUIGNvbW1h bmQgaXMgYW1iaWd1b3VzIiwKKwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSwKKwkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlpZiAoIU9p ZElzVmFsaWQodmFyaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIg ZG9lc24ndCBleGlzdCIsCisJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSksCisJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJLyoKKwkgKiBD YWxjdWxhdGUgc3RhcnQgb2YgcG9zc2libGUgcG9zaXRpb24gb2YgYW4gaW5kaXJlY3Rpb24gaW4g bGlzdCwgYW5kCisJICogd2hlbiBpdCBpcyBpbnNpZGUgdGhlIGxpc3QsIHN0b3JlIHBvaW50ZXIg b24gZmlyc3Qgbm9kZSBvZiBpbmRpcmVjdGlvbi4KKwkgKi8KKwlpbmRpcmVjdGlvbl9zdGFydCA9 IGxpc3RfbGVuZ3RoKG5hbWVzKSAtIChhdHRybmFtZSA/IDEgOiAwKTsKKwlpZiAobGlzdF9sZW5n dGgoc3RtdC0+dGFyZ2V0KSA+IGluZGlyZWN0aW9uX3N0YXJ0KQorCQlpbmRpcmVjdGlvbl9oZWFk ID0gbGlzdF9udGhfY2VsbChzdG10LT50YXJnZXQsIGluZGlyZWN0aW9uX3N0YXJ0KTsKKworCWdl dF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZCh2YXJpZCwgJnR5cGlkLCAmdHlw bW9kLCAmY29sbGlkKTsKKworCWlzX3Jvd3R5cGUgPSB0eXBlX2lzX3Jvd3R5cGUodHlwaWQpOwor CisJaWYgKGF0dHJuYW1lICYmICFpc19yb3d0eXBlKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coInR5cGUgXCIl c1wiIG9mIHRhcmdldCBzZXNzaW9uIHZhcmlhYmxlIFwiJXMuJXNcIiBpcyBub3QgYSBjb21wb3Np dGUgdHlwZSIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCksCisJCQkJCQlnZXRfbmFtZXNw YWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHZhcmlkKSksCisJCQkJCQln ZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNo ZWNrKFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIEdldFVzZXJJZCgpLCBBQ0xfVVBEQVRFKTsK KwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcihhY2xyZXN1 bHQsIE9CSkVDVF9WQVJJQUJMRSwgTmFtZUxpc3RUb1N0cmluZyhuYW1lcykpOworCisJcHN0YXRl LT5wX2V4cHJfa2luZCA9IEVYUFJfS0lORF9MRVRfVEFSR0VUOworCisJLyogd2UgbmVlZCB0byBw b3N0cG9uZSBjb252ZXJzaW9uIG9mICJ1bmtub3duIiB0byB0ZXh0ICovCisJcHN0YXRlLT5wX3Jl c29sdmVfdW5rbm93bnMgPSBmYWxzZTsKKworCXNlbGVjdFF1ZXJ5ID0gdHJhbnNmb3JtU3RtdChw c3RhdGUsIHN0bXQtPnF1ZXJ5KTsKKworCS8qIHRoZSBncmFtbWFyIHNob3VsZCBoYXZlIHByb2R1 Y2VkIGEgU0VMRUNUICovCisJQXNzZXJ0KElzQShzZWxlY3RRdWVyeSwgUXVlcnkpICYmIHNlbGVj dFF1ZXJ5LT5jb21tYW5kVHlwZSA9PSBDTURfU0VMRUNUKTsKKworCS8qCisJICogR2VuZXJhdGUg YW4gZXhwcmVzc2lvbiBsaXN0IGZvciB0aGUgTEVUIHRoYXQgc2VsZWN0cyBhbGwgdGhlIG5vbi1y ZXNqdW5rCisJICogY29sdW1ucyBmcm9tIHRoZSBzdWJxdWVyeS4KKwkgKi8KKwlleHByTGlzdCA9 IE5JTDsKKwlmb3JlYWNoKGxjLCBzZWxlY3RRdWVyeS0+dGFyZ2V0TGlzdCkKKwl7CisJCVRhcmdl dEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKTsKKworCQlpZiAodGxlLT5y ZXNqdW5rKQorCQkJY29udGludWU7CisKKwkJZXhwckxpc3QgPSBsYXBwZW5kKGV4cHJMaXN0LCB0 bGUtPmV4cHIpOworCX0KKworCS8qIGRvbid0IGFsbG93IG11bHRpY29sdW1uIHJlc3VsdCAqLwor CWlmIChsaXN0X2xlbmd0aChleHByTGlzdCkgIT0gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZ19wbHVyYWwoImFzc2ln bm1lbnQgZXhwcmVzc2lvbiByZXR1cm5lZCAlZCBjb2x1bW4iLAorCQkJCQkJCSAgICJhc3NpZ25t ZW50IGV4cHJlc3Npb24gcmV0dXJuZWQgJWQgY29sdW1ucyIsCisJCQkJCQkJICAgbGlzdF9sZW5n dGgoZXhwckxpc3QpLAorCQkJCQkJCSAgIGxpc3RfbGVuZ3RoKGV4cHJMaXN0KSksCisJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCQlleHByTG9jYXRpb24oKE5vZGUgKikg ZXhwckxpc3QpKSkpOworCisJZXhwckxpc3RDb2VyID0gTklMOworCisJZm9yZWFjaChsYywgZXhw ckxpc3QpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJRXhw cgkgICAqY29lcmNlZF9leHByOworCQlQYXJhbQkgICAqcGFyYW07CisJCU9pZAkJCWV4cHJ0eXBp ZDsKKworCQkvKiBub3cgd2UgY2FuIHJlYWQgdGhlIHR5cGUgb2YgdGhlIGV4cHJlc3Npb24gKi8K KwkJZXhwcnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikgZXhwcik7CisKKwkJcGFyYW0gPSBtYWtl Tm9kZShQYXJhbSk7CisJCXBhcmFtLT5wYXJhbWtpbmQgPSBQQVJBTV9WQVJJQUJMRTsKKwkJcGFy YW0tPnBhcmFtdmFyaWQgPSB2YXJpZDsKKwkJcGFyYW0tPnBhcmFtdHlwZSA9IHR5cGlkOworCQlw YXJhbS0+cGFyYW10eXBtb2QgPSB0eXBtb2Q7CisKKwkJaWYgKGluZGlyZWN0aW9uX2hlYWQpCisJ CXsKKwkJCWJvb2wJCXRhcmdldElzQXJyYXk7CisJCQljaGFyCSAgICp0YXJnZXROYW1lOworCisJ CQl0YXJnZXROYW1lID0gZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCk7CisJCQl0YXJn ZXRJc0FycmF5ID0gT2lkSXNWYWxpZChnZXRfZWxlbWVudF90eXBlKHR5cGlkKSk7CisKKwkJCXBz dGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzID0gdHJ1ZTsKKworCQkJY29lcmNlZF9leHByID0g KEV4cHIgKikKKwkJCQl0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24ocHN0YXRlLAorCQkJ CQkJCQkJCQkgICAoTm9kZSAqKSBwYXJhbSwKKwkJCQkJCQkJCQkJICAgdGFyZ2V0TmFtZSwKKwkJ CQkJCQkJCQkJICAgdGFyZ2V0SXNBcnJheSwKKwkJCQkJCQkJCQkJICAgdHlwaWQsCisJCQkJCQkJ CQkJCSAgIHR5cG1vZCwKKwkJCQkJCQkJCQkJICAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJICAg c3RtdC0+dGFyZ2V0LAorCQkJCQkJCQkJCQkgICBpbmRpcmVjdGlvbl9oZWFkLAorCQkJCQkJCQkJ CQkgICAoTm9kZSAqKSBleHByLAorCQkJCQkJCQkJCQkgICBDT0VSQ0lPTl9BU1NJR05NRU5ULAor CQkJCQkJCQkJCQkgICBzdG10LT5sb2NhdGlvbik7CisJCX0KKwkJZWxzZQorCQkJY29lcmNlZF9l eHByID0gKEV4cHIgKikKKwkJCQljb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLAorCQkJCQkJ CQkJICAoTm9kZSAqKSBleHByLAorCQkJCQkJCQkJICBleHBydHlwaWQsCisJCQkJCQkJCQkgIHR5 cGlkLCB0eXBtb2QsCisJCQkJCQkJCQkgIENPRVJDSU9OX0FTU0lHTk1FTlQsCisJCQkJCQkJCQkg IENPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJCQkJCQkJICBzdG10LT5sb2NhdGlvbik7CisKKwkJ aWYgKGNvZXJjZWRfZXhwciA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInZhcmlhYmxlIFwi JXMuJXNcIiBpcyBvZiB0eXBlICVzLCIKKwkJCQkJCQkiIGJ1dCBleHByZXNzaW9uIGlzIG9mIHR5 cGUgJXMiLAorCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9u YW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCQlnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlk KSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCksCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUo ZXhwcnR5cGlkKSksCisJCQkJCSBlcnJoaW50KCJZb3Ugd2lsbCBuZWVkIHRvIHJld3JpdGUgb3Ig Y2FzdCB0aGUgZXhwcmVzc2lvbi4iKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IGV4cHJMb2NhdGlvbigoTm9kZSAqKSBleHByKSkpKTsKKworCQlleHByTGlzdENvZXIgPSBsYXBw ZW5kKGV4cHJMaXN0Q29lciwgY29lcmNlZF9leHByKTsKKwl9CisKKwkvKiBnZW5lcmF0ZSBxdWVy eSdzIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBjb21wdXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zICov CisJcXVlcnkgPSBtYWtlTm9kZShRdWVyeSk7CisJcXVlcnktPmNvbW1hbmRUeXBlID0gQ01EX1NF TEVDVDsKKworCWZvcmVhY2gobGMsIGV4cHJMaXN0Q29lcikKKwl7CisJCUV4cHIJICAgKmV4cHIg PSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlUYXJnZXRFbnRyeSAqdGxlOworCisJCXRsZSA9IG1h a2VUYXJnZXRFbnRyeShleHByLAorCQkJCQkJCSAgaSArIDEsCisJCQkJCQkJICBGaWd1cmVDb2xu YW1lKChOb2RlICopIGV4cHIpLAorCQkJCQkJCSAgZmFsc2UpOworCQlxdWVyeS0+dGFyZ2V0TGlz dCA9IGxhcHBlbmQocXVlcnktPnRhcmdldExpc3QsIHRsZSk7CisJfQorCisJLyogZG9uZSBidWls ZGluZyB0aGUgcmFuZ2UgdGFibGUgYW5kIGpvaW50cmVlICovCisJcXVlcnktPnJ0YWJsZSA9IHBz dGF0ZS0+cF9ydGFibGU7CisJcXVlcnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+ cF9qb2lubGlzdCwgTlVMTCk7CisKKwlxdWVyeS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9o YXNUYXJnZXRTUkZzOworCXF1ZXJ5LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5r czsKKwlxdWVyeS0+aGFzU2Vzc2lvblZhcmlhYmxlcyA9IHBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFy aWFibGVzOworCisJLyogdGhpcyBpcyB0b3AtbGV2ZWwgcXVlcnkgKi8KKwlxdWVyeS0+Y2FuU2V0 VGFnID0gdHJ1ZTsKKworCS8qCisJICogU2F2ZSB0YXJnZXQgc2Vzc2lvbiB2YXJpYWJsZSBJRC4g IFRoaXMgdmFsdWUgaXMgdXNlZCBtdWx0aXBsZSB0aW1lczogYnkKKwkgKiB0aGUgcXVlcnkgcmV3 cml0ZXIgKGZvciBnZXR0aW5nIHJlbGF0ZWQgZGVmZXhwciksIGJ5IHBsYW5uZXIgKGZvcgorCSAq IGFjcXVpcmluZyBhbiBBY2Nlc3NTaGFyZUxvY2sgb24gdGFyZ2V0IHZhcmlhYmxlKSwgYW5kIGJ5 IHRoZSBleGVjdXRvcgorCSAqICh3ZSBuZWVkIHRvIGtub3cgdGhlIHRhcmdldCB2YXJpYWJsZSBJ RCkuCisJICovCisJcXVlcnktPnJlc3VsdFZhcmlhYmxlID0gdmFyaWQ7CisKKwlhc3NpZ25fcXVl cnlfY29sbGF0aW9ucyhwc3RhdGUsIHF1ZXJ5KTsKKworCXN0bXQtPnF1ZXJ5ID0gKE5vZGUgKikg cXVlcnk7CisKKwkvKiByZXByZXNlbnQgdGhlIGNvbW1hbmQgYXMgYSB1dGlsaXR5IFF1ZXJ5ICov CisJcmVzdWx0ID0gbWFrZU5vZGUoUXVlcnkpOworCXJlc3VsdC0+Y29tbWFuZFR5cGUgPSBDTURf VVRJTElUWTsKKwlyZXN1bHQtPnV0aWxpdHlTdG10ID0gKE5vZGUgKikgc3RtdDsKKworCXJldHVy biByZXN1bHQ7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1TZXRPcGVyYXRpb25TdG10IC0KICAqCSAg dHJhbnNmb3JtcyBhIHNldC1vcGVyYXRpb25zIHRyZWUKQEAgLTE5MzAsNiArMjE2OSw3IEBAIHRy YW5zZm9ybVNldE9wZXJhdGlvblN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpz dG10KQogCXFyeS0+aGFzV2luZG93RnVuY3MgPSBwc3RhdGUtPnBfaGFzV2luZG93RnVuY3M7CiAJ cXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CiAJcXJ5LT5oYXNB Z2dzID0gcHN0YXRlLT5wX2hhc0FnZ3M7CisJcXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0 YXRlLT5wX2hhc1Nlc3Npb25WYXJpYWJsZXM7CiAKIAlmb3JlYWNoKGwsIGxvY2tpbmdDbGF1c2Up CiAJewpAQCAtMjQwNCw2ICsyNjQ0LDcgQEAgdHJhbnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIFJldHVyblN0bXQgKnN0bXQpCiAJcXJ5LT5oYXNXaW5kb3dGdW5jcyA9IHBzdGF0 ZS0+cF9oYXNXaW5kb3dGdW5jczsKIAlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFz VGFyZ2V0U1JGczsKIAlxcnktPmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFzQWdnczsKKwlxcnktPmhh c1Nlc3Npb25WYXJpYWJsZXMgPSBwc3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlhYmxlczsKIAogCWFz c2lnbl9xdWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwgcXJ5KTsKIApAQCAtMjQ3MSw2ICsyNzEyLDcg QEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0 bXQpCiAKIAlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKIAlx cnktPmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCXFyeS0+aGFzU2Vzc2lv blZhcmlhYmxlcyA9IHBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzOwogCiAJYXNzaWduX3F1 ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC0yNjU4LDkgKzI5MDAsMTUgQEAgdHJh bnNmb3JtUExBc3NpZ25TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUExBc3NpZ25TdG10ICpzdG10 KQogCS8qCiAJICogVHJhbnNmb3JtIHRoZSB0YXJnZXQgcmVmZXJlbmNlLiAgVHlwaWNhbGx5IHdl IHdpbGwgZ2V0IGJhY2sgYSBQYXJhbQogCSAqIG5vZGUsIGJ1dCB0aGVyZSdzIG5vIHJlYXNvbiB0 byBiZSB0b28gcGlja3kgYWJvdXQgaXRzIHR5cGUuCisJICoKKwkgKiBTZXNzaW9uIHZhcmlhYmxl cyBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGFyZ2V0IG9mIGEgUEwvcGdTUUwgYXNzaWduCisJICog c3RhdGVtZW50LiAgU28gd2Ugc2hvdWxkIHVzZSBhIGRlZGljYXRlZCBleHByZXNzaW9uIGtpbmQg YW5kIGRpc2FsbG93CisJICogc2Vzc2lvbiB2YXJpYWJsZXMgdGhlcmUuICBUaGUgZGVkaWNhdGVk IGNvbnRleHQgYWxsb3dzIHRvIGVsaW1pbmF0ZQorCSAqIHVuZGVzaXJhYmxlIHdhcm5pbmdzIGFi b3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBhIHRhcmdldCBQTC9wZ1NRTCB2YXJpYWJsZQorCSAqIHNo YWRvd2luZyBhIHNlc3Npb24gdmFyaWFibGUuCiAJICovCiAJdGFyZ2V0ID0gdHJhbnNmb3JtRXhw cihwc3RhdGUsIChOb2RlICopIGNyZWYsCi0JCQkJCQkgICBFWFBSX0tJTkRfVVBEQVRFX1RBUkdF VCk7CisJCQkJCQkgICBFWFBSX0tJTkRfQVNTSUdOX1RBUkdFVCk7CiAJdGFyZ2V0dHlwZSA9IGV4 cHJUeXBlKHRhcmdldCk7CiAJdGFyZ2V0dHlwbW9kID0gZXhwclR5cG1vZCh0YXJnZXQpOwogCXRh cmdldGNvbGxhdGlvbiA9IGV4cHJDb2xsYXRpb24odGFyZ2V0KTsKQEAgLTI3MDIsNiArMjk1MCwx MCBAQCB0cmFuc2Zvcm1QTEFzc2lnblN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQTEFzc2lnblN0 bXQgKnN0bXQpCiAJICovCiAJdHlwZV9pZCA9IGV4cHJUeXBlKChOb2RlICopIHRsZS0+ZXhwcik7 CiAKKwkvKgorCSAqIEZvciBpbmRpcmVjdGlvbiBwcm9jZXNzaW5nIGFuZCBhZGRpdGlvbmFsIGNh c3RzIHdlIGNhbiB1c2UgZXhwcl9raW5kCisJICogRVhQUl9LSU5EX1VQREFURV9UQVJHRVQuCisJ ICovCiAJcHN0YXRlLT5wX2V4cHJfa2luZCA9IEVYUFJfS0lORF9VUERBVEVfVEFSR0VUOwogCiAJ aWYgKGluZGlyZWN0aW9uKQpAQCAtMjg0NCw2ICszMDk2LDggQEAgdHJhbnNmb3JtUExBc3NpZ25T dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUExBc3NpZ25TdG10ICpzdG10KQogCQkJCQkJCSAgIChM b2NraW5nQ2xhdXNlICopIGxmaXJzdChsKSwgZmFsc2UpOwogCX0KIAorCXFyeS0+aGFzU2Vzc2lv blZhcmlhYmxlcyA9IHBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzOworCiAJYXNzaWduX3F1 ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCiAJLyogdGhpcyBtdXN0IGJlIGRvbmUgYWZ0 ZXIgY29sbGF0aW9ucywgZm9yIHJlbGlhYmxlIGNvbXBhcmlzb24gb2YgZXhwcnMgKi8KQEAgLTMx MTcsNiArMzM3MSwxNCBAQCB0cmFuc2Zvcm1DYWxsU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIENh bGxTdG10ICpzdG10KQogCQkJCQkJCSB0cnVlLAogCQkJCQkJCSBzdG10LT5mdW5jY2FsbC0+bG9j YXRpb24pOwogCisJLyoKKwkgKiBUaGUgYXJndW1lbnRzIG9mIENBTEwgc3RhdGVtZW50IGFyZSBl dmFsdWF0ZWQgYnkgYSBkaXJlY3QgZXhwcmVzc2lvbgorCSAqIGV4ZWN1dG9yIGNhbGwuICBUaGlz IHBhdGggaXMgdW5zdXBwb3J0ZWQgeWV0LCBzbyBibG9jayBpdC4gIEl0IHdpbGwgYmUKKwkgKiBl bmFibGVkIGxhdGVyLgorCSAqLworCWlmIChwc3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlhYmxlcykK KwkJZWxvZyhFUlJPUiwgInNlc3Npb24gdmFyaWFibGUgY2Fubm90IGJlIHVzZWQgYXMgYW4gYXJn dW1lbnQiKTsKKwogCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCBub2RlKTsKIAogCWZl eHByID0gY2FzdE5vZGUoRnVuY0V4cHIsIG5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggM2YyYzU5MGNl My4uNTc4NzQwMmQzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAkJRHJvcFRyYW5zZm9ybVN0bXQKIAkJRHJvcFVzZXJNYXBwaW5nU3Rt dCBFeHBsYWluU3RtdCBGZXRjaFN0bXQKIAkJR3JhbnRTdG10IEdyYW50Um9sZVN0bXQgSW1wb3J0 Rm9yZWlnblNjaGVtYVN0bXQgSW5kZXhTdG10IEluc2VydFN0bXQKLQkJTGlzdGVuU3RtdCBMb2Fk U3RtdCBMb2NrU3RtdCBNZXJnZVN0bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFy YWJsZVN0bXQKKwkJTGV0U3RtdCBMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE1lcmdlU3Rt dCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3RtdAogCQlDcmVhdGVGdW5j dGlvblN0bXQgQWx0ZXJGdW5jdGlvblN0bXQgUmVpbmRleFN0bXQgUmVtb3ZlQWdnclN0bXQKIAkJ UmVtb3ZlRnVuY1N0bXQgUmVtb3ZlT3BlclN0bXQgUmVuYW1lU3RtdCBSZXR1cm5TdG10IFJldm9r ZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVsZUFjdGlvblN0bXQgUnVsZUFjdGlvblN0bXRPckVt cHR5IFJ1bGVTdG10CkBAIC00NTcsNiArNDU3LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAkJCQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJCQkJdmFjdXVtX3Jl bGF0aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CiAJCQkJZHJvcF9vcHRpb25fbGlz dCBwdWJfb2JqX2xpc3QKKwkJCQlsZXRfdGFyZ2V0CiAKICV0eXBlIDxub2RlPglvcHRfcm91dGlu ZV9ib2R5CiAldHlwZSA8Z3JvdXBjbGF1c2U+IGdyb3VwX2NsYXVzZQpAQCAtNzQ5LDcgKzc1MCw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJS0VFUCBLRVkgS0VZUwogCiAJTEFCRUwgTEFO R1VBR0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCi0JTEVBRElORyBMRUFLUFJPT0YgTEVBU1Qg TEVGVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCisJTEVBRElORyBMRUFLUFJP T0YgTEVBU1QgTEVGVCBMRVQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAogCUxP Q0FMVElNRSBMT0NBTFRJTUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRAogCiAJ TUFQUElORyBNQVRDSCBNQVRDSEVEIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVJHRSBNRVJHRV9B Q1RJT04gTUVUSE9ECkBAIC0xMTAwLDYgKzExMDEsNyBAQCBzdG10OgogCQkJfCBJbXBvcnRGb3Jl aWduU2NoZW1hU3RtdAogCQkJfCBJbmRleFN0bXQKIAkJCXwgSW5zZXJ0U3RtdAorCQkJfCBMZXRT dG10CiAJCQl8IExpc3RlblN0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10CiAJCQl8IExvYWRT dG10CkBAIC0xMjc2OCw2ICsxMjc3MCw0NyBAQCBvcHRfaG9sZDogLyogRU1QVFkgKi8JCQkJCQl7 ICQkID0gMDsgfQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQgPSAwOyB9CiAJCTsKIAorLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJTEVUIFNUQVRFTUVOVAor ICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KK0xldFN0bXQ6CUxFVCBsZXRfdGFyZ2V0ICc9JyBh X2V4cHIKKwkJCQl7CisJCQkJCUxldFN0bXQJICAgKm4gPSBtYWtlTm9kZShMZXRTdG10KTsKKwkJ CQkJU2VsZWN0U3RtdCAqc2VsZWN0OworCQkJCQlSZXNUYXJnZXQgICpyZXM7CisKKwkJCQkJbi0+ dGFyZ2V0ID0gJDI7CisKKwkJCQkJc2VsZWN0ID0gbWFrZU5vZGUoU2VsZWN0U3RtdCk7CisJCQkJ CXJlcyA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisKKwkJCQkJLyogQ3JlYXRlIHRhcmdldCBsaXN0 IGZvciBpbXBsaWNpdCBxdWVyeSAqLworCQkJCQlyZXMtPm5hbWUgPSBOVUxMOworCQkJCQlyZXMt PmluZGlyZWN0aW9uID0gTklMOworCQkJCQlyZXMtPnZhbCA9IChOb2RlICopICQ0OworCQkJCQly ZXMtPmxvY2F0aW9uID0gQDQ7CisKKwkJCQkJc2VsZWN0LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtl MShyZXMpOworCQkJCQluLT5xdWVyeSA9IChOb2RlICopIHNlbGVjdDsKKworCQkJCQluLT5sb2Nh dGlvbiA9IEAyOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK2xldF90YXJn ZXQ6CisJCQlDb2xJZCBvcHRfaW5kaXJlY3Rpb24KKwkJCQl7CisJCQkJCSQkID0gbGlzdF9tYWtl MShtYWtlU3RyaW5nKCQxKSk7CisJCQkJCWlmICgkMikKKwkJCQkJCSAgJCQgPSBsaXN0X2NvbmNh dCgkJCwKKwkJCQkJCQkJCQkgICBjaGVja19pbmRpcmVjdGlvbigkMiwgeXlzY2FubmVyKSk7CisJ CQkJfQorCQk7CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCQlRVUVSWToKQEAgLTE3 Nzk5LDYgKzE3ODQyLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBMQVJHRV9QCiAJCQl8 IExBU1RfUAogCQkJfCBMRUFLUFJPT0YKKwkJCXwgTEVUCiAJCQl8IExFVkVMCiAJCQl8IExJU1RF TgogCQkJfCBMT0FECkBAIC0xODQxMiw2ICsxODQ1Niw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoK IAkJCXwgTEVBS1BST09GCiAJCQl8IExFQVNUCiAJCQl8IExFRlQKKwkJCXwgTEVUCiAJCQl8IExF VkVMCiAJCQl8IExJS0UKIAkJCXwgTElTVEVOCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggYmVl N2Q4MzQ2YS4uYjQ5NGM4ODVlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNTc3LDYgKzU3 NywxMSBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqZXhwcikKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBF WFBSX0tJTkRfQVNTSUdOX1RBUkdFVDoKKwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKKwkJ CWVycmtpbmQgPSB0cnVlOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRl bnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKIAkJCSAqIGNvbXBp bGVyIHdpbGwgd2FybiBpZiB3ZSBhZGQgYSBuZXcgUGFyc2VFeHByS2luZCB3aXRob3V0CkBAIC05 NjcsNiArOTcyLDEwIEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQll cnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9BU1NJR05fVEFSR0VU OgorCQljYXNlIEVYUFJfS0lORF9MRVRfVEFSR0VUOgorCQkJZXJya2luZCA9IHRydWU7CisJCQli cmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDog Y2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggZDJkYjY5 YTNmOS4uYjUwYWM4MDFhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xOCw2ICsxOCw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMzQs MTIgKzM1LDE0IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgi CisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNp bmNsdWRlICJ1dGlscy9qc29uYi5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMveG1sLmgiCiAKIC8qIEdVQyBwYXJhbWV0ZXJzICovCkBAIC0xMDgsNiAr MTExLDkgQEAgc3RhdGljIEV4cHIgKm1ha2VfZGlzdGluY3Rfb3AoUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpvcG5hbWUsCiAJCQkJCQkJICBOb2RlICpsdHJlZSwgTm9kZSAqcnRyZWUsIGludCBs b2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZV9udWxsdGVzdF9mcm9tX2Rpc3RpbmN0KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgQV9FeHByICpkaXN0aW5jdGEsIE5vZGUgKmFyZyk7 CitzdGF0aWMgTm9kZSAqbWFrZVBhcmFtU2Vzc2lvblZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKKwkJCQkJCQkJCSAgT2lkIHZhcmlkLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgT2lkIGNv bGxpZCwKKwkJCQkJCQkJCSAgY2hhciAqYXR0cm5hbWUsIGludCBsb2NhdGlvbik7CiAKIAogLyoK QEAgLTUwMSw2ICs1MDcsODkgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBraW5kIGlzIHZhbGlkIGZvciBzZXNz aW9uIHZhcmlhYmxlcy4KKyAqIFNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSB1c2VkIGV2ZXJ5d2hl cmUgd2hlcmUgZXh0ZXJuYWwgcGFyYW1ldGVycyBjYW4gYmUKKyAqIHVzZWQuICBTZXNzaW9uIHZh cmlhYmxlcyBhcmUgbm90IGFsbG93ZWQgaW4gRERMIGNvbW1hbmRzIG9yIGluIGNvbnN0cmFpbnRz LgorICoKKyAqIEFuIGlkZW50aWZpZXIgY2FuIGJlIHBhcnNlZCBhcyBhIHNlc3Npb24gdmFyaWFi bGUgb25seSBmb3IgZXhwcmVzc2lvbiBraW5kcworICogd2hlcmUgc2Vzc2lvbiB2YXJpYWJsZXMg YXJlIGFsbG93ZWQuICBUaGlzIGlzIHRoZSBwcmltYXJ5IHVzYWdlIG9mIHRoaXMKKyAqIGZ1bmN0 aW9uLgorICoKKyAqIFRoZSBzZWNvbmQgdXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBkZWNp ZGUgd2hldGhlciBhICJjb2x1bW4gZG9lcyBub3QKKyAqIGV4aXN0IiBvciBhICJjb2x1bW4gb3Ig dmFyaWFibGUgZG9lcyBub3QgZXhpc3QiIGVycm9yIG1lc3NhZ2Ugc2hvdWxkIGJlCisgKiBwcmlu dGVkLiAgV2hlbiB3ZSBhcmUgaW4gYW4gZXhwcmVzc2lvbiB3aGVyZSBzZXNzaW9uIHZhcmlhYmxl cyBjYW5ub3QgYmUKKyAqIHVzZWQsIHdlIHJhaXNlIHRoZSBmaXJzdCBmb3JtIG9mIGVycm9yIG1l c3NhZ2UuCisgKi8KK3N0YXRpYyBib29sCitleHByX2tpbmRfYWxsb3dzX3Nlc3Npb25fdmFyaWFi bGVzKFBhcnNlRXhwcktpbmQgcF9leHByX2tpbmQpCit7CisJYm9vbAkJcmVzdWx0ID0gZmFsc2U7 CisKKwlzd2l0Y2ggKHBfZXhwcl9raW5kKQorCXsKKwkJY2FzZSBFWFBSX0tJTkRfTk9ORToKKwkJ CUFzc2VydChmYWxzZSk7CQkvKiBjYW4ndCBoYXBwZW4gKi8KKwkJCXJldHVybiBmYWxzZTsKKwor CQkvKiBzZXNzaW9uIHZhcmlhYmxlcyBhbGxvd2VkICovCisJCWNhc2UgRVhQUl9LSU5EX09USEVS OgorCQljYXNlIEVYUFJfS0lORF9KT0lOX09OOgorCQljYXNlIEVYUFJfS0lORF9GUk9NX1NVQlNF TEVDVDoKKwkJY2FzZSBFWFBSX0tJTkRfRlJPTV9GVU5DVElPTjoKKwkJY2FzZSBFWFBSX0tJTkRf V0hFUkU6CisJCWNhc2UgRVhQUl9LSU5EX0hBVklORzoKKwkJY2FzZSBFWFBSX0tJTkRfRklMVEVS OgorCQljYXNlIEVYUFJfS0lORF9XSU5ET1dfUEFSVElUSU9OOgorCQljYXNlIEVYUFJfS0lORF9X SU5ET1dfT1JERVI6CisJCWNhc2UgRVhQUl9LSU5EX1dJTkRPV19GUkFNRV9SQU5HRToKKwkJY2Fz ZSBFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX1JPV1M6CisJCWNhc2UgRVhQUl9LSU5EX1dJTkRPV19G UkFNRV9HUk9VUFM6CisJCWNhc2UgRVhQUl9LSU5EX1NFTEVDVF9UQVJHRVQ6CisJCWNhc2UgRVhQ Ul9LSU5EX0lOU0VSVF9UQVJHRVQ6CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9TT1VSQ0U6CisJ CWNhc2UgRVhQUl9LSU5EX1VQREFURV9UQVJHRVQ6CisJCWNhc2UgRVhQUl9LSU5EX01FUkdFX1dI RU46CisJCWNhc2UgRVhQUl9LSU5EX01FUkdFX1JFVFVSTklORzoKKwkJY2FzZSBFWFBSX0tJTkRf R1JPVVBfQlk6CisJCWNhc2UgRVhQUl9LSU5EX09SREVSX0JZOgorCQljYXNlIEVYUFJfS0lORF9E SVNUSU5DVF9PTjoKKwkJY2FzZSBFWFBSX0tJTkRfTElNSVQ6CisJCWNhc2UgRVhQUl9LSU5EX09G RlNFVDoKKwkJY2FzZSBFWFBSX0tJTkRfUkVUVVJOSU5HOgorCQljYXNlIEVYUFJfS0lORF9WQUxV RVM6CisJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFU19TSU5HTEU6CisJCWNhc2UgRVhQUl9LSU5EX0FM VEVSX0NPTF9UUkFOU0ZPUk06CisJCWNhc2UgRVhQUl9LSU5EX0VYRUNVVEVfUEFSQU1FVEVSOgor CQljYXNlIEVYUFJfS0lORF9QT0xJQ1k6CisJCWNhc2UgRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQ6 CisJCWNhc2UgRVhQUl9LSU5EX0NPUFlfV0hFUkU6CisJCWNhc2UgRVhQUl9LSU5EX0xFVF9UQVJH RVQ6CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJLyogc2Vzc2lvbiB2YXJpYWJs ZXMgbm90IGFsbG93ZWQgKi8KKwkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlOVDoKKwkJ Y2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgorCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVG QVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJ TkRfSU5ERVhfRVhQUkVTU0lPTjoKKwkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfUFJFRElDQVRFOgor CQljYXNlIEVYUFJfS0lORF9TVEFUU19FWFBSRVNTSU9OOgorCQljYXNlIEVYUFJfS0lORF9UUklH R0VSX1dIRU46CisJCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9CT1VORDoKKwkJY2FzZSBFWFBS X0tJTkRfUEFSVElUSU9OX0VYUFJFU1NJT046CisJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9D T0xVTU46CisJCWNhc2UgRVhQUl9LSU5EX0pPSU5fVVNJTkc6CisJCWNhc2UgRVhQUl9LSU5EX0NZ Q0xFX01BUks6CisJCWNhc2UgRVhQUl9LSU5EX0FTU0lHTl9UQVJHRVQ6CisJCQlyZXN1bHQgPSBm YWxzZTsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBUcmFu c2Zvcm0gYSBDb2x1bW5SZWYuCiAgKgpAQCAtNTc3LDYgKzY2Niw4IEBAIHRyYW5zZm9ybUNvbHVt blJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJ TkRfQ09QWV9XSEVSRToKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJY2Fz ZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKKwkJY2FzZSBFWFBSX0tJTkRfQVNTSUdOX1RBUkdFVDoK KwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKIAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFrOwog CkBAIC04NDksOCArOTQwLDYxIEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3Rh dGUsIENvbHVtblJlZiAqY3JlZikKIAl9CiAKIAkvKgotCSAqIFRocm93IGVycm9yIGlmIG5vIHRy YW5zbGF0aW9uIGZvdW5kLgorCSAqIFRoZXJlIGFyZSBjb250ZXh0cyB3aGVyZSBzZXNzaW9uIHZh cmlhYmxlcyBhcmUgbm90IGFsbG93ZWQuICBXZSBkb24ndAorCSAqIG5lZWQgdG8gaWRlbnRpZnkg c2Vzc2lvbiB2YXJpYWJsZXMgaW4gc3VjaCBhIGNvbnRleHQsIGJ1dCBpZGVudGlmeWluZworCSAq IHRoZW0gYWxsb3dzIHVzIHRvIHJhaXNlIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZXMgbGlrZSAi eW91IGNhbm5vdCB1c2UKKwkgKiBzZXNzaW9uIHZhcmlhYmxlcyBoZXJlIi4KIAkgKi8KKwlpZiAo ZXhwcl9raW5kX2FsbG93c19zZXNzaW9uX3ZhcmlhYmxlcyhwc3RhdGUtPnBfZXhwcl9raW5kKSkK Kwl7CisJCU9pZAkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwkJY2hhcgkgICAqYXR0cm5hbWUgPSBO VUxMOworCQlib29sCQlub3RfdW5pcXVlOworCisJCS8qIC0tLS0tCisJCSAqIFNlc3Npb24gdmFy aWFibGVzIGFyZSBzaGFkb3dlZCBieSBjb2x1bW5zLCByb3V0aW5lIHZhcmlhYmxlcyBvcgorCQkg KiByb3V0aW5lIGFyZ3VtZW50cy4gIFdlIGNlcnRhaW5seSBkb24ndCB3YW50IHRvIHVzZSBhIHNl c3Npb24gdmFyaWFibGUKKwkJICogd2hlbiBpdCBpcyBleGFjdGx5IHNoYWRvd2VkLCBidXQgYSBS VEUgbGlrZSB0aGlzIGlzIGNvbmNlaXZhYmxlOgorCQkgKgorCQkgKiBDUkVBVEUgVFlQRSB0IEFT IChjIGludCk7CisJCSAqIENSRUFURSBWQVJJQUJMRSBmb28gQVMgdDsKKwkJICogQ1JFQVRFIFRB QkxFIGZvbyhhIGludCwgYiBpbnQpOworCQkgKgorCQkgKiBTRUxFQ1QgZm9vLmEsIGZvby5iLCBm b28uYyBGUk9NIGZvbzsKKwkJICoKKwkJICogSG93ZXZlciwgdGhhdCBpcyB2ZXJ5IGNvbmZ1c2lu Zywgc28gd2UgZGlzYWxsb3cgaXQuICBXZSBkb24ndCB0cnkgdG8KKwkJICogaWRlbnRpZnkgYSB2 YXJpYWJsZSBpZiB3ZSBrbm93IHRoYXQgaXQgd291bGQgYmUgc2hhZG93ZWQuCisJCSAqIC0tLS0t CisJCSAqLworCQlpZiAoIW5vZGUgJiYgIShyZWxuYW1lICYmIGNyZXJyID09IENSRVJSX05PX0NP TFVNTikpCisJCXsKKwkJCS8qIHRha2VzIGFuIEFjY2Vzc1NoYXJlTG9jayBvbiB0aGUgc2Vzc2lv biB2YXJpYWJsZSAqLworCQkJdmFyaWQgPSBJZGVudGlmeVZhcmlhYmxlKGNyZWYtPmZpZWxkcywg JmF0dHJuYW1lLCAmbm90X3VuaXF1ZSwgZmFsc2UpOworCisJCQlpZiAoT2lkSXNWYWxpZCh2YXJp ZCkpCisJCQl7CisJCQkJT2lkCQkJdHlwaWQ7CisJCQkJaW50MzIJCXR5cG1vZDsKKwkJCQlPaWQJ CQljb2xsaWQ7CisKKwkJCQlpZiAobm90X3VuaXF1ZSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19QQVJBTUVURVIpLAorCQkJCQkJCSBlcnJt c2coInNlc3Npb24gdmFyaWFibGUgcmVmZXJlbmNlIFwiJXNcIiBpcyBhbWJpZ3VvdXMiLAorCQkJ CQkJCQkJTmFtZUxpc3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwKKwkJCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CisKKwkJCQlnZXRfc2Vzc2lvbl92 YXJpYWJsZV90eXBlX3R5cG1vZF9jb2xsaWQodmFyaWQsICZ0eXBpZCwgJnR5cG1vZCwKKwkJCQkJ CQkJCQkJCQkJJmNvbGxpZCk7CisKKwkJCQlub2RlID0gbWFrZVBhcmFtU2Vzc2lvblZhcmlhYmxl KHBzdGF0ZSwKKwkJCQkJCQkJCQkJCXZhcmlkLCB0eXBpZCwgdHlwbW9kLCBjb2xsaWQsCisJCQkJ CQkJCQkJCQlhdHRybmFtZSwgY3JlZi0+bG9jYXRpb24pOworCQkJfQorCQl9CisJfQorCisJLyog dGhyb3cgYW4gZXJyb3IgaWYgbm8gdHJhbnNsYXRpb24gd2FzIGZvdW5kICovCiAJaWYgKG5vZGUg PT0gTlVMTCkKIAl7CiAJCXN3aXRjaCAoY3JlcnIpCkBAIC04ODIsNiArMTAyNiw3MiBAQCB0cmFu c2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJcmV0 dXJuIG5vZGU7CiB9CiAKKy8qCisgKiBHZW5lcmF0ZSBwYXJhbSB2YXJpYWJsZSBmb3IgcmVmZXJl bmNlIHRvIHNlc3Npb24gdmFyaWFibGUKKyAqLworc3RhdGljIE5vZGUgKgorbWFrZVBhcmFtU2Vz c2lvblZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCSBPaWQgdmFyaWQsIE9pZCB0 eXBpZCwgaW50MzIgdHlwbW9kLCBPaWQgY29sbGlkLAorCQkJCQkJIGNoYXIgKmF0dHJuYW1lLCBp bnQgbG9jYXRpb24pCit7CisJUGFyYW0JICAgKnBhcmFtOworCisJcGFyYW0gPSBtYWtlTm9kZShQ YXJhbSk7CisKKwlwYXJhbS0+cGFyYW1raW5kID0gUEFSQU1fVkFSSUFCTEU7CisJcGFyYW0tPnBh cmFtdmFyaWQgPSB2YXJpZDsKKwlwYXJhbS0+cGFyYW10eXBlID0gdHlwaWQ7CisJcGFyYW0tPnBh cmFtdHlwbW9kID0gdHlwbW9kOworCXBhcmFtLT5wYXJhbWNvbGxpZCA9IGNvbGxpZDsKKworCXBz dGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzID0gdHJ1ZTsKKworCWlmIChhdHRybmFtZSAhPSBO VUxMKQorCXsKKwkJVHVwbGVEZXNjCXR1cGRlc2M7CisJCWludAkJCWk7CisKKwkJdHVwZGVzYyA9 IGxvb2t1cF9yb3d0eXBlX3R1cGRlc2Nfbm9lcnJvcih0eXBpZCwgdHlwbW9kLCB0cnVlKTsKKwkJ aWYgKCF0dXBkZXNjKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9X Uk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCSBlcnJtc2coInZhcmlhYmxlIFwiJXMuJXNcIiBpcyBv ZiB0eXBlIFwiJXNcIiwgd2hpY2ggaXMgbm90IGEgY29tcG9zaXRlIHR5cGUiLAorCQkJCQkJCWdl dF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwK KwkJCQkJCQlnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSwKKwkJCQkJCQlmb3JtYXRf dHlwZV9iZSh0eXBpZCkpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRp b24pKSk7CisKKwkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJCXsKKwkJ CUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisKKwkJ CWlmIChzdHJjbXAoYXR0cm5hbWUsIE5hbWVTdHIoYXR0LT5hdHRuYW1lKSkgPT0gMCAmJgorCQkJ CSFhdHQtPmF0dGlzZHJvcHBlZCkKKwkJCXsKKwkJCQkvKiBTdWNjZXNzLCBzbyBnZW5lcmF0ZSBh IEZpZWxkU2VsZWN0IGV4cHJlc3Npb24gKi8KKwkJCQlGaWVsZFNlbGVjdCAqZnNlbGVjdCA9IG1h a2VOb2RlKEZpZWxkU2VsZWN0KTsKKworCQkJCWZzZWxlY3QtPmFyZyA9IChFeHByICopIHBhcmFt OworCQkJCWZzZWxlY3QtPmZpZWxkbnVtID0gaSArIDE7CisJCQkJZnNlbGVjdC0+cmVzdWx0dHlw ZSA9IGF0dC0+YXR0dHlwaWQ7CisJCQkJZnNlbGVjdC0+cmVzdWx0dHlwbW9kID0gYXR0LT5hdHR0 eXBtb2Q7CisJCQkJLyogc2F2ZSBhdHRyaWJ1dGUncyBjb2xsYXRpb24gZm9yIHBhcnNlX2NvbGxh dGUuYyAqLworCQkJCWZzZWxlY3QtPnJlc3VsdGNvbGxpZCA9IGF0dC0+YXR0Y29sbGF0aW9uOwor CisJCQkJUmVsZWFzZVR1cGxlRGVzYyh0dXBkZXNjKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgZnNl bGVjdDsKKwkJCX0KKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgY29s dW1uIFwiJXNcIiBpbiB2YXJpYWJsZSIsIGF0dHJuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJfQorCisJcmV0dXJuIChOb2RlICopIHBhcmFtOwor fQorCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1QYXJhbVJlZihQYXJzZVN0YXRlICpwc3RhdGUs IFBhcmFtUmVmICpwcmVmKQogewpAQCAtMTgxNiw2ICsyMDI2LDcgQEAgdHJhbnNmb3JtU3ViTGlu ayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5E X1ZBTFVFUzoKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTX1NJTkdMRToKIAkJY2FzZSBFWFBSX0tJ TkRfQ1lDTEVfTUFSSzoKKwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKIAkJCS8qIG9rYXkg Ki8KIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DSEVDS19DT05TVFJBSU5UOgpAQCAtMTg1 OSw2ICsyMDcwLDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1Ykxp bmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CiAJCQllcnIg PSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24i KTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9BU1NJR05fVEFSR0VUOgorCQkJZXJyID0g XygiY2Fubm90IHVzZSBzdWJxdWVyeSBhcyB0YXJnZXQgb2YgYXNzaWduIHN0YXRlbWVudCIpOwor CQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1 bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTMxOTYsNiArMzQxMCwxMCBAQCBQYXJzZUV4 cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJHRU5FUkFURUQg QVMiOwogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJcmV0dXJuICJDWUNMRSI7CisJ CWNhc2UgRVhQUl9LSU5EX0FTU0lHTl9UQVJHRVQ6CisJCQlyZXR1cm4gIkFTU0lHTiI7CisJCWNh c2UgRVhQUl9LSU5EX0xFVF9UQVJHRVQ6CisJCQlyZXR1cm4gIkxFVCI7CiAKIAkJCS8qCiAJCQkg KiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDliMjMzNDRhM2IuLjlhYTRmNjA3NjggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjY1Niw2ICsyNjU2LDggQEAgY2hlY2tfc3JmX2Nh bGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2Nh dGlvbikKIAkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9ucyIpOwogCQkJYnJlYWs7CiAJCWNhc2Ug RVhQUl9LSU5EX0NZQ0xFX01BUks6CisJCWNhc2UgRVhQUl9LSU5EX0FTU0lHTl9UQVJHRVQ6CisJ CWNhc2UgRVhQUl9LSU5EX0xFVF9UQVJHRVQ6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFr OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYyBiL3NyYy9iYWNrZW5kL3Rj b3AvZGVzdC5jCmluZGV4IDk2ZjgwYjMwNDYuLmRhYzc4YmE1Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Rjb3AvZGVzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvZGVzdC5jCkBAIC0zOCw2 ICszOCw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvdHF1ZXVlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKKyNp bmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgogI2luY2x1ZGUgImxpYnBxL2xp YnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKIApAQCAtMTU1LDYgKzE1Niw5IEBA IENyZWF0ZURlc3RSZWNlaXZlcihDb21tYW5kRGVzdCBkZXN0KQogCiAJCWNhc2UgRGVzdEV4cGxh aW5TZXJpYWxpemU6CiAJCQlyZXR1cm4gQ3JlYXRlRXhwbGFpblNlcmlhbGl6ZURlc3RSZWNlaXZl cihOVUxMKTsKKworCQljYXNlIERlc3RWYXJpYWJsZToKKwkJCXJldHVybiBDcmVhdGVWYXJpYWJs ZURlc3RSZWNlaXZlcihJbnZhbGlkT2lkKTsKIAl9CiAKIAkvKiBzaG91bGQgbmV2ZXIgZ2V0IGhl cmUgKi8KQEAgLTE5MSw2ICsxOTUsNyBAQCBFbmRDb21tYW5kKGNvbnN0IFF1ZXJ5Q29tcGxldGlv biAqcWMsIENvbW1hbmREZXN0IGRlc3QsIGJvb2wgZm9yY2VfdW5kZWNvcmF0ZWRfbwogCQljYXNl IERlc3RUcmFuc2llbnRSZWw6CiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CiAJCWNhc2UgRGVzdEV4 cGxhaW5TZXJpYWxpemU6CisJCWNhc2UgRGVzdFZhcmlhYmxlOgogCQkJYnJlYWs7CiAJfQogfQpA QCAtMjM3LDYgKzI0Miw3IEBAIE51bGxDb21tYW5kKENvbW1hbmREZXN0IGRlc3QpCiAJCWNhc2Ug RGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKIAkJY2FzZSBEZXN0RXhw bGFpblNlcmlhbGl6ZToKKwkJY2FzZSBEZXN0VmFyaWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBA IC0yODEsNiArMjg3LDcgQEAgUmVhZHlGb3JRdWVyeShDb21tYW5kRGVzdCBkZXN0KQogCQljYXNl IERlc3RUcmFuc2llbnRSZWw6CiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CiAJCWNhc2UgRGVzdEV4 cGxhaW5TZXJpYWxpemU6CisJCWNhc2UgRGVzdFZhcmlhYmxlOgogCQkJYnJlYWs7CiAJfQogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3Av cHF1ZXJ5LmMKaW5kZXggMGM0NWZjZjMxOC4uODViODA5Y2IwNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC04 Niw2ICs4Niw5IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAJ cWQtPnF1ZXJ5RW52ID0gcXVlcnlFbnY7CiAJcWQtPmluc3RydW1lbnRfb3B0aW9ucyA9IGluc3Ry dW1lbnRfb3B0aW9uczsJLyogaW5zdHJ1bWVudGF0aW9uIHdhbnRlZD8gKi8KIAorCXFkLT5udW1f c2Vzc2lvbl92YXJpYWJsZXMgPSAwOworCXFkLT5zZXNzaW9uX3ZhcmlhYmxlcyA9IE5VTEw7CisK IAkvKiBudWxsIHRoZXNlIGZpZWxkcyB1bnRpbCBzZXQgYnkgRXhlY3V0b3JTdGFydCAqLwogCXFk LT50dXBEZXNjID0gTlVMTDsKIAlxZC0+ZXN0YXRlID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXgg Y2U4ZGI3Y2RhNC4uNjYyZGJjZDFkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGls aXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTQ5LDYgKzQ5LDcgQEAK ICNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWFjbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2Vj bGFiZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2luY2x1ZGUgImNvbW1h bmRzL3Nlc3Npb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25j bWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvdGFibGVzcGFjZS5oIgpAQCAtMjM1LDYgKzIzNiw3IEBAIENsYXNzaWZ5VXRpbGl0eUNvbW1h bmRBc1JlYWRPbmx5KE5vZGUgKnBhcnNldHJlZSkKIAogCQljYXNlIFRfQ2FsbFN0bXQ6CiAJCWNh c2UgVF9Eb1N0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJewogCQkJCS8qCiAJCQkJICogQ29t bWFuZHMgaW5zaWRlIHRoZSBETyBibG9jayBvciB0aGUgY2FsbGVkIHByb2NlZHVyZSBtaWdodApA QCAtMTA2NCw2ICsxMDY2LDExIEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10 ICpwc3RtdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCUV4ZWN1 dGVMZXRTdG10KHBzdGF0ZSwgKExldFN0bXQgKikgcGFyc2V0cmVlLCBwYXJhbXMsCisJCQkJCQkg ICBxdWVyeUVudiwgcWMpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCS8qIEFsbCBvdGhl ciBzdGF0ZW1lbnQgdHlwZXMgaGF2ZSBldmVudCB0cmlnZ2VyIHN1cHBvcnQgKi8KIAkJCVByb2Nl c3NVdGlsaXR5U2xvdyhwc3RhdGUsIHBzdG10LCBxdWVyeVN0cmluZywKQEAgLTIyMDMsNiArMjIx MCwxMCBAQCBVdGlsaXR5Q29udGFpbnNRdWVyeShOb2RlICpwYXJzZXRyZWUpCiAJCQkJcmV0dXJu IFV0aWxpdHlDb250YWluc1F1ZXJ5KHFyeS0+dXRpbGl0eVN0bXQpOwogCQkJcmV0dXJuIHFyeTsK IAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXFyeSA9IGNhc3ROb2RlKFF1ZXJ5LCAoKExldFN0bXQg KikgcGFyc2V0cmVlKS0+cXVlcnkpOworCQkJcmV0dXJuIHFyeTsKKwogCQlkZWZhdWx0OgogCQkJ cmV0dXJuIE5VTEw7CiAJfQpAQCAtMjQwMSw2ICsyNDEyLDEwIEBAIENyZWF0ZUNvbW1hbmRUYWco Tm9kZSAqcGFyc2V0cmVlKQogCQkJdGFnID0gQ01EVEFHX1NFTEVDVDsKIAkJCWJyZWFrOwogCisJ CWNhc2UgVF9MZXRTdG10OgorCQkJdGFnID0gQ01EVEFHX0xFVDsKKwkJCWJyZWFrOworCiAJCQkv KiB1dGlsaXR5IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3IgY29va2VkICovCiAJ CWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CiAJCQl7CkBAIC0zMjg2LDYgKzMzMDEsNyBAQCBHZXRD b21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFyc2V0cmVlKQogCQkJYnJlYWs7CiAKIAkJY2FzZSBUX1BM QXNzaWduU3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJ CWJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggNjUzNjg1YmZmYy4uYTBl ZGQ1ZTA0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzcsNiArMzcsNyBAQAog I2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNs dWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbW9uL2tleXdvcmRzLmgi CkBAIC01MTksNiArNTIwLDcgQEAgc3RhdGljIGNoYXIgKmdlbmVyYXRlX2Z1bmN0aW9uX25hbWUo T2lkIGZ1bmNpZCwgaW50IG5hcmdzLAogc3RhdGljIGNoYXIgKmdlbmVyYXRlX29wZXJhdG9yX25h bWUoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIHN0YXRpYyB2b2lkIGFkZF9jYXN0 X3RvKFN0cmluZ0luZm8gYnVmLCBPaWQgdHlwaWQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX3F1 YWxpZmllZF90eXBlX25hbWUoT2lkIHR5cGlkKTsKK3N0YXRpYyBjaGFyICpnZW5lcmF0ZV9zZXNz aW9uX3ZhcmlhYmxlX25hbWUoT2lkIHZhcmlkKTsKIHN0YXRpYyB0ZXh0ICpzdHJpbmdfdG9fdGV4 dChjaGFyICpzdHIpOwogc3RhdGljIGNoYXIgKmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQp Owogc3RhdGljIHZvaWQgZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9w dGlvbnMpOwpAQCAtODM1MSw2ICs4MzUzLDE0IEBAIGdldF9wYXJhbWV0ZXIoUGFyYW0gKnBhcmFt LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCXJldHVybjsKIAl9CiAKKwkvKiB0cmFuc2xh dGUgcGFyYW12YXJpZCB0byBzZXNzaW9uIHZhcmlhYmxlIG5hbWUgKi8KKwlpZiAocGFyYW0tPnBh cmFta2luZCA9PSBQQVJBTV9WQVJJQUJMRSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4 dC0+YnVmLCAiJXMiLAorCQkJCQkJIGdlbmVyYXRlX3Nlc3Npb25fdmFyaWFibGVfbmFtZShwYXJh bS0+cGFyYW12YXJpZCkpOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBBbHRlcm5hdGl2ZWx5 LCBtYXliZSBpdCdzIGEgc3VicGxhbiBvdXRwdXQsIHdoaWNoIHdlIHByaW50IGFzIGEKIAkgKiBy ZWZlcmVuY2UgdG8gdGhlIHN1YnBsYW4uICAoV2UgY291bGQgZHJpbGwgZG93biBpbnRvIHRoZSBz dWJwbGFuIGFuZApAQCAtMTMxMzEsNiArMTMxNDEsNDIgQEAgZ2VuZXJhdGVfY29sbGF0aW9uX25h bWUoT2lkIGNvbGxpZCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogZ2VuZXJhdGVfc2Vz c2lvbl92YXJpYWJsZV9uYW1lCisgKgkJQ29tcHV0ZSB0aGUgbmFtZSB0byBkaXNwbGF5IGZvciBh IHNlc3Npb24gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IE9JRAorICoKKyAqIFRoZSByZXN1bHQgaW5j bHVkZXMgYWxsIG5lY2Vzc2FyeSBxdW90aW5nIGFuZCBzY2hlbWEtcHJlZml4aW5nLgorICovCitz dGF0aWMgY2hhciAqCitnZW5lcmF0ZV9zZXNzaW9uX3ZhcmlhYmxlX25hbWUoT2lkIHZhcmlkKQor eworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCWNoYXIJICAg KnZhcm5hbWU7CisJY2hhcgkgICAqbnNwbmFtZTsKKwljaGFyCSAgICpyZXN1bHQ7CisKKwl0dXAg PSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsK KworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1f cGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IE5hbWVTdHIodmFyZm9y bS0+dmFybmFtZSk7CisKKwlpZiAoIVZhcmlhYmxlSXNWaXNpYmxlKHZhcmlkKSkKKwkJbnNwbmFt ZSA9IGdldF9uYW1lc3BhY2VfbmFtZV9vcl90ZW1wKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisJ ZWxzZQorCQluc3BuYW1lID0gTlVMTDsKKworCXJlc3VsdCA9IHF1b3RlX3F1YWxpZmllZF9pZGVu dGlmaWVyKG5zcG5hbWUsIHZhcm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwly ZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogR2l2ZW4gYSBDIHN0cmluZywgcHJvZHVjZSBhIFRF WFQgZGF0dW0uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCA1YWYxYTE2 OGVjLi43ZTFlOWUyOGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFu Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtNTgs NiArNTgsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJjYXRh bG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNs dWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtMTYyLDYgKzE2Myw3IEBAIEluaXRQbGFuQ2FjaGUo dm9pZCkKIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhBTU9QT1BJRCwgUGxhbkNhY2hl U3lzQ2FsbGJhY2ssIChEYXR1bSkgMCk7CiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2so Rk9SRUlHTlNFUlZFUk9JRCwgUGxhbkNhY2hlU3lzQ2FsbGJhY2ssIChEYXR1bSkgMCk7CiAJQ2Fj aGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soRk9SRUlHTkRBVEFXUkFQUEVST0lELCBQbGFuQ2Fj aGVTeXNDYWxsYmFjaywgKERhdHVtKSAwKTsKKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFj ayhWQVJJQUJMRU9JRCwgUGxhbkNhY2hlT2JqZWN0Q2FsbGJhY2ssIChEYXR1bSkgMCk7CiB9CiAK IC8qCkBAIC0xOTAzLDE4ICsxOTA1LDMzIEBAIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJz ZXRyZWUsIGJvb2wgYWNxdWlyZSkKIAogCS8qCiAJICogUmVjdXJzZSBpbnRvIHN1Ymxpbmsgc3Vi cXVlcmllcywgdG9vLiAgQnV0IHdlIGFscmVhZHkgZGlkIHRoZSBvbmVzIGluCi0JICogdGhlIHJ0 YWJsZSBhbmQgY3RlTGlzdC4KKwkgKiB0aGUgcnRhYmxlIGFuZCBjdGVMaXN0LiAgV2UgbmVlZCB0 byBmb3JjZSBhIHJlY3Vyc2l2ZSBjYWxsIGZvciBzZXNzaW9uCisJICogdmFyaWFibGVzIHRvbywg dG8gZmluZCBhbmQgbG9jayB2YXJpYWJsZXMgdXNlZCBpbiB0aGUgcXVlcnkgKHNlZQorCSAqIFNj YW5RdWVyeVdhbGtlcikuCiAJICovCi0JaWYgKHBhcnNldHJlZS0+aGFzU3ViTGlua3MpCisJaWYg KHBhcnNldHJlZS0+aGFzU3ViTGlua3MgfHwKKwkJcGFyc2V0cmVlLT5oYXNTZXNzaW9uVmFyaWFi bGVzKQogCXsKIAkJcXVlcnlfdHJlZV93YWxrZXIocGFyc2V0cmVlLCBTY2FuUXVlcnlXYWxrZXIs CiAJCQkJCQkgICh2b2lkICopICZhY3F1aXJlLAogCQkJCQkJICBRVFdfSUdOT1JFX1JDX1NVQlFV RVJJRVMpOwogCX0KKworCS8qIHByb2Nlc3Mgc2Vzc2lvbiB2YXJpYWJsZXMgKi8KKwlpZiAoT2lk SXNWYWxpZChwYXJzZXRyZWUtPnJlc3VsdFZhcmlhYmxlKSkKKwl7CisJCWlmIChhY3F1aXJlKQor CQkJTG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRpb25JZCwgcGFyc2V0cmVlLT5yZXN1 bHRWYXJpYWJsZSwKKwkJCQkJCQkgICAwLCBBY2Nlc3NTaGFyZUxvY2spOworCQllbHNlCisJCQlV bmxvY2tEYXRhYmFzZU9iamVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHBhcnNldHJlZS0+cmVzdWx0 VmFyaWFibGUsCisJCQkJCQkJCSAwLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KIH0KIAogLyoKLSAq IFdhbGtlciB0byBmaW5kIHN1Ymxpbmsgc3VicXVlcmllcyBmb3IgU2NhblF1ZXJ5Rm9yTG9ja3MK KyAqIFdhbGtlciB0byBmaW5kIHN1Ymxpbmsgc3VicXVlcmllcyBvciByZWZlcmVuY2VkIHNlc3Np b24gdmFyaWFibGVzCisgKiBmb3IgU2NhblF1ZXJ5Rm9yTG9ja3MKICAqLwogc3RhdGljIGJvb2wK IFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBib29sICphY3F1aXJlKQpAQCAtMTkyOSw2ICsx OTQ2LDIwIEBAIFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBib29sICphY3F1aXJlKQogCQlT Y2FuUXVlcnlGb3JMb2NrcyhjYXN0Tm9kZShRdWVyeSwgc3ViLT5zdWJzZWxlY3QpLCAqYWNxdWly ZSk7CiAJCS8qIEZhbGwgdGhyb3VnaCB0byBwcm9jZXNzIGxlZnRoYW5kIGFyZ3Mgb2YgU3ViTGlu ayAqLwogCX0KKwllbHNlIGlmIChJc0Eobm9kZSwgUGFyYW0pKQorCXsKKwkJUGFyYW0JICAgKnAg PSAoUGFyYW0gKikgbm9kZTsKKworCQlpZiAocC0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxF KQorCQl7CisJCQlpZiAoYWNxdWlyZSkKKwkJCQlMb2NrRGF0YWJhc2VPYmplY3QoVmFyaWFibGVS ZWxhdGlvbklkLCBwLT5wYXJhbXZhcmlkLAorCQkJCQkJCQkgICAwLCBBY2Nlc3NTaGFyZUxvY2sp OworCQkJZWxzZQorCQkJCVVubG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRpb25JZCwg cC0+cGFyYW12YXJpZCwKKwkJCQkJCQkJCSAwLCBBY2Nlc3NTaGFyZUxvY2spOworCQl9CisJfQog CiAJLyoKIAkgKiBEbyBOT1QgcmVjdXJzZSBpbnRvIFF1ZXJ5IG5vZGVzLCBiZWNhdXNlIFNjYW5R dWVyeUZvckxvY2tzIGFscmVhZHkKQEAgLTIwNjAsNyArMjA5MSw5IEBAIFBsYW5DYWNoZVJlbENh bGxiYWNrKERhdHVtIGFyZywgT2lkIHJlbGlkKQogCiAvKgogICogUGxhbkNhY2hlT2JqZWN0Q2Fs bGJhY2sKLSAqCQlTeXNjYWNoZSBpbnZhbCBjYWxsYmFjayBmdW5jdGlvbiBmb3IgUFJPQ09JRCBh bmQgVFlQRU9JRCBjYWNoZXMKKyAqCQlTeXNjYWNoZSBpbnZhbCBjYWxsYmFjayBmdW5jdGlvbiBm b3IgVFlQRU9JRCwgUFJPQ09JRCwgTkFNRVNQQUNFT0lELAorICoJCU9QRVJPSUQsIEFNT1BPUElE LCBGT1JFSUdOU0VSVkVST0lELCBGT1JFSUdOREFUQVdSQVBQRVJPSUQgYW5kCisgKgkJVkFSSUFC TEVPSUQgY2FjaGVzLgogICoKICAqIEludmFsaWRhdGUgYWxsIHBsYW5zIG1lbnRpb25pbmcgdGhl IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgaGFzaCB2YWx1ZSwKICAqIG9yIGFsbCBwbGFucyBt ZW50aW9uaW5nIGFueSBtZW1iZXIgb2YgdGhpcyBjYWNoZSBpZiBoYXNodmFsdWUgPT0gMC4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvZm1nci9mbWdyLmMKaW5kZXggZTQ4YTg2YmU1NC4uZWFhZTBjNWE5MyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1n ci9mbWdyLmMKQEAgLTIwMjYsOSArMjAyNiwxMyBAQCBnZXRfY2FsbF9leHByX2FyZ19zdGFibGUo Tm9kZSAqZXhwciwgaW50IGFyZ251bSkKIAkgKi8KIAlpZiAoSXNBKGFyZywgQ29uc3QpKQogCQly ZXR1cm4gdHJ1ZTsKLQlpZiAoSXNBKGFyZywgUGFyYW0pICYmCi0JCSgoUGFyYW0gKikgYXJnKS0+ cGFyYW1raW5kID09IFBBUkFNX0VYVEVSTikKLQkJcmV0dXJuIHRydWU7CisJaWYgKElzQShhcmcs IFBhcmFtKSkKKwl7CisJCVBhcmFtCSAgICpwID0gKFBhcmFtICopIGFyZzsKKworCQlpZiAocC0+ cGFyYW1raW5kID09IFBBUkFNX0VYVEVSTiB8fCBwLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFC TEUpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CiAKIAlyZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMKaW5kZXggODczYTgzZmE1YS4uYTY0MjkyNjE4MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMTcw OSw4ICsxNzA5LDggQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFy dCwgaW50IGVuZCkKIAkJIkFCT1JUIiwgIkFMVEVSIiwgIkFOQUxZWkUiLCAiQkVHSU4iLCAiQ0FM TCIsICJDSEVDS1BPSU5UIiwgIkNMT1NFIiwgIkNMVVNURVIiLAogCQkiQ09NTUVOVCIsICJDT01N SVQiLCAiQ09QWSIsICJDUkVBVEUiLCAiREVBTExPQ0FURSIsICJERUNMQVJFIiwKIAkJIkRFTEVU RSBGUk9NIiwgIkRJU0NBUkQiLCAiRE8iLCAiRFJPUCIsICJFTkQiLCAiRVhFQ1VURSIsICJFWFBM QUlOIiwKLQkJIkZFVENIIiwgIkdSQU5UIiwgIklNUE9SVCBGT1JFSUdOIFNDSEVNQSIsICJJTlNF UlQgSU5UTyIsICJMSVNURU4iLCAiTE9BRCIsICJMT0NLIiwKLQkJIk1FUkdFIElOVE8iLCAiTU9W RSIsICJOT1RJRlkiLCAiUFJFUEFSRSIsCisJCSJGRVRDSCIsICJHUkFOVCIsICJJTVBPUlQgRk9S RUlHTiBTQ0hFTUEiLCAiSU5TRVJUIElOVE8iLCAiTEVUIiwKKwkJIkxJU1RFTiIsICJMT0FEIiwg IkxPQ0siLCAiTUVSR0UgSU5UTyIsICJNT1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKIAkJIlJF QVNTSUdOIiwgIlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVciLCAiUkVJTkRFWCIsICJSRUxFQVNF IiwKIAkJIlJFU0VUIiwgIlJFVk9LRSIsICJST0xMQkFDSyIsCiAJCSJTQVZFUE9JTlQiLCAiU0VD VVJJVFkgTEFCRUwiLCAiU0VMRUNUIiwgIlNFVCIsICJTSE9XIiwgIlNUQVJUIiwKQEAgLTQyODIs NiArNDI4MiwxNCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0 LCBpbnQgZW5kKQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJWQUxVRVMiKSAmJiAhVGFpbE1hdGNo ZXMoIkRFRkFVTFQiLCAiVkFMVUVTIikpCiAJCUNPTVBMRVRFX1dJVEgoIigiKTsKIAorLyogTEVU ICovCisJLyogSWYgcHJldi4gd29yZCBpcyBMRVQgc3VnZ2VzdCBhIGxpc3Qgb2YgdmFyaWFibGVz ICovCisJZWxzZSBpZiAoTWF0Y2hlcygiTEVUIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FV RVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcyk7CisJLyogQ29tcGxldGUgTEVUIDx2YXJp YWJsZT4gd2l0aCAiPSIgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiTEVUIiwgTWF0Y2hBbnkp KQorCQlDT01QTEVURV9XSVRIKCI9Iik7CisKIC8qIExPQ0sgKi8KIAkvKiBDb21wbGV0ZSBMT0NL IFtUQUJMRV0gW09OTFldIHdpdGggYSBsaXN0IG9mIHRhYmxlcyAqLwogCWVsc2UgaWYgKE1hdGNo ZXMoIkxPQ0siKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCmluZGV4IDE4ZWE2YWM4M2EuLmRlZjY5 MWRhZmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaApAQCAtMTcxLDcgKzE3MSw5IEBAIGV4dGVy biBTZWFyY2hQYXRoTWF0Y2hlciAqR2V0U2VhcmNoUGF0aE1hdGNoZXIoTWVtb3J5Q29udGV4dCBj b250ZXh0KTsKIGV4dGVybiBTZWFyY2hQYXRoTWF0Y2hlciAqQ29weVNlYXJjaFBhdGhNYXRjaGVy KFNlYXJjaFBhdGhNYXRjaGVyICpwYXRoKTsKIGV4dGVybiBib29sIFNlYXJjaFBhdGhNYXRjaGVz Q3VycmVudEVudmlyb25tZW50KFNlYXJjaFBhdGhNYXRjaGVyICpwYXRoKTsKIAorZXh0ZXJuIExp c3QgKk5hbWVzRnJvbUxpc3QoTGlzdCAqbmFtZXMpOwogZXh0ZXJuIE9pZAlMb29rdXBWYXJpYWJs ZShjb25zdCBjaGFyICpuc3BuYW1lLCBjb25zdCBjaGFyICp2YXJuYW1lLCBib29sIG1pc3Npbmdf b2spOworZXh0ZXJuIE9pZAlJZGVudGlmeVZhcmlhYmxlKExpc3QgKm5hbWVzLCBjaGFyICoqYXR0 cm5hbWUsIGJvb2wgKm5vdF91bmlxdWUsIGJvb2wgbm9lcnJvcik7CiAKIGV4dGVybiBPaWQJZ2V0 X2NvbGxhdGlvbl9vaWQoTGlzdCAqY29sbG5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4g T2lkCWdldF9jb252ZXJzaW9uX29pZChMaXN0ICpjb25uYW1lLCBib29sIG1pc3Npbmdfb2spOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oCmluZGV4IDM4MTBlMDQwZjIuLmRiNTkzY2Q1YmUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmgKQEAgLTM1LDYgKzM1LDE0IEBAIENBVEFMT0cocGdf dmFyaWFibGUsOTIyMixWYXJpYWJsZVJlbGF0aW9uSWQpCiAJLyogT0lEIG9mIGVudHJ5IGluIHBn X3R5cGUgZm9yIHZhcmlhYmxlJ3MgdHlwZSAqLwogCU9pZAkJCXZhcnR5cGUgQktJX0xPT0tVUChw Z190eXBlKTsKIAorCS8qCisJICogVXNlZCBmb3IgaWRlbnRpdHkgY2hlY2sgW29pZCwgY3JlYXRl X2xzbl0uCisJICoKKwkgKiBUaGlzIGNvbHVtbiBvZiB0aGUgOC1ieXRlIFhsb2dSZWNQdHIgdHlw ZSBzaG91bGQgYmUgYXQgYW4gYWRkcmVzcyB0aGF0CisJICogaXMgZGl2aXNpYmxlIGJ5IDgsIGJ1 dCBiZWZvcmUgYW55IGNvbHVtbiBvZiB0eXBlIE5hbWVEYXRhLgorCSAqLworCVhMb2dSZWNQdHIJ dmFyY3JlYXRlX2xzbjsKKwogCS8qIHZhcmlhYmxlIG5hbWUgKi8KIAlOYW1lRGF0YQl2YXJuYW1l OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCAwYTcyNzRlMjZjLi5kMWIyZjU5ZTBjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTQ4LDYgKzQ4LDEwIEBAIHR5cGVkZWYgc3RydWN0 IFF1ZXJ5RGVzYwogCUVTdGF0ZQkgICAqZXN0YXRlOwkJCS8qIGV4ZWN1dG9yJ3MgcXVlcnktd2lk ZSBzdGF0ZSAqLwogCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHRyZWUgb2YgcGVyLXBsYW4t bm9kZSBzdGF0ZSAqLwogCisJLyogcmVmZXJlbmNlIHRvIHNlc3Npb24gdmFyaWFibGVzIGJ1ZmZl ciAqLworCWludAkJCW51bV9zZXNzaW9uX3ZhcmlhYmxlczsKKwlTZXNzaW9uVmFyaWFibGVWYWx1 ZSAqc2Vzc2lvbl92YXJpYWJsZXM7CisKIAkvKiBUaGlzIGZpZWxkIGlzIHNldCBieSBFeGVjdXRv clJ1biAqLwogCWJvb2wJCWFscmVhZHlfZXhlY3V0ZWQ7CS8qIHRydWUgaWYgcHJldmlvdXNseSBl eGVjdXRlZCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGNhYzY4NGQ5YjMuLjQ0OTA1MGY3 ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MDksNiArNjA5LDE4IEBAIHR5cGVkZWYgc3Ry dWN0IEFzeW5jUmVxdWVzdAogCQkJCQkJCQkgKiB0dXBsZXMpICovCiB9IEFzeW5jUmVxdWVzdDsK IAorLyogLS0tLS0tLS0tLS0tLS0tLQorICogU2Vzc2lvblZhcmlhYmxlVmFsdWUKKyAqIC0tLS0t LS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2Vzc2lvblZhcmlhYmxlVmFsdWUKK3sK KwlPaWQJCQl2YXJpZDsKKwlPaWQJCQl0eXBpZDsKKwlib29sCQlpc251bGw7CisJRGF0dW0JCXZh bHVlOworfSBTZXNzaW9uVmFyaWFibGVWYWx1ZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJ ICBFU3RhdGUgaW5mb3JtYXRpb24KICAqCkBAIC02NjEsNiArNjczLDEwIEBAIHR5cGVkZWYgc3Ry dWN0IEVTdGF0ZQogCVBhcmFtTGlzdEluZm8gZXNfcGFyYW1fbGlzdF9pbmZvOwkvKiB2YWx1ZXMg b2YgZXh0ZXJuYWwgcGFyYW1zICovCiAJUGFyYW1FeGVjRGF0YSAqZXNfcGFyYW1fZXhlY192YWxz OwkvKiB2YWx1ZXMgb2YgaW50ZXJuYWwgcGFyYW1zICovCiAKKwkvKiBTZXNzaW9uIHZhcmlhYmxl cyBpbmZvOiAqLworCWludAkJCWVzX251bV9zZXNzaW9uX3ZhcmlhYmxlczsJCS8qIG51bWJlciBv ZiB1c2VkIHZhcmlhYmxlcyAqLworCVNlc3Npb25WYXJpYWJsZVZhbHVlICplc19zZXNzaW9uX3Zh cmlhYmxlczsJLyogYXJyYXkgb2YgY29waWVzIG9mIHZhbHVlcyAqLworCiAJUXVlcnlFbnZpcm9u bWVudCAqZXNfcXVlcnlFbnY7CS8qIHF1ZXJ5IGVudmlyb25tZW50ICovCiAKIAkvKiBPdGhlciB3 b3JraW5nIHN0YXRlOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDgwZWE1OTI4ZWUuLjc0 YmY1YWY3NzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE0Miw2ICsxNDIsOSBAQCB0eXBl ZGVmIHN0cnVjdCBRdWVyeQogCSAqLwogCWludAkJCXJlc3VsdFJlbGF0aW9uIHBnX25vZGVfYXR0 cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAorCS8qIHRhcmdldCB2YXJpYWJsZSBvZiBMRVQgc3Rh dGVtZW50ICovCisJT2lkCQkJcmVzdWx0VmFyaWFibGU7CisKIAkvKiBoYXMgYWdncmVnYXRlcyBp biB0bGlzdCBvciBoYXZpbmdRdWFsICovCiAJYm9vbAkJaGFzQWdncyBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2lnbm9yZSk7CiAJLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8K QEAgLTE2MCw2ICsxNjMsOCBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeQogCWJvb2wJCWhhc0ZvclVw ZGF0ZSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAJLyogcmV3cml0ZXIgaGFz IGFwcGxpZWQgc29tZSBSTFMgcG9saWN5ICovCiAJYm9vbAkJaGFzUm93U2VjdXJpdHkgcGdfbm9k ZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCS8qIHVzZXMgc2Vzc2lvbiB2YXJpYWJsZXMg Ki8KKwlib29sCQloYXNTZXNzaW9uVmFyaWFibGVzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVf aWdub3JlKTsKIAkvKiBpcyBhIFJFVFVSTiBzdGF0ZW1lbnQgKi8KIAlib29sCQlpc1JldHVybiBw Z19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKQEAgLTIwOTUsNiArMjEwMCwxOCBA QCB0eXBlZGVmIHN0cnVjdCBNZXJnZVN0bXQKIAlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyog V0lUSCBjbGF1c2UgKi8KIH0gTWVyZ2VTdG10OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgkJTGV0IFN0YXRlbWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBl ZGVmIHN0cnVjdCBMZXRTdG10Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlMaXN0CSAgICp0YXJnZXQ7 CQkJLyogdGFyZ2V0IHZhcmlhYmxlICovCisJTm9kZQkgICAqcXVlcnk7CQkJLyogc291cmNlIGV4 cHJlc3Npb24gKi8KKwlpbnQJCQlsb2NhdGlvbjsKK30gTGV0U3RtdDsKKwogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoJCVNlbGVjdCBTdGF0ZW1lbnQKICAqCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CmluZGV4IDE0Y2NmYzFhYzEuLmMxNjM4NTUxMmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0x NjMsNiArMTYzLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCiAJLyogcGFydGl0 aW9uIGRlc2NyaXB0b3JzICovCiAJUGFydGl0aW9uRGlyZWN0b3J5IHBhcnRpdGlvbl9kaXJlY3Rv cnkgcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlKTsKKworCS8qIGxpc3Qgb2YgdXNlZCBz ZXNzaW9uIHZhcmlhYmxlcyAqLworCUxpc3QJICAgKnNlc3Npb25WYXJpYWJsZXM7CiB9IFBsYW5u ZXJHbG9iYWw7CiAKIC8qIG1hY3JvIGZvciBmZXRjaGluZyB0aGUgUGxhbiBhc3NvY2lhdGVkIHdp dGggYSBTdWJQbGFuIG5vZGUgKi8KQEAgLTUwOCw2ICs1MTEsOCBAQCBzdHJ1Y3QgUGxhbm5lcklu Zm8KIAlib29sCQlwbGFjZWhvbGRlcnNGcm96ZW47CiAJLyogdHJ1ZSBpZiBwbGFubmluZyBhIHJl Y3Vyc2l2ZSBXSVRIIGl0ZW0gKi8KIAlib29sCQloYXNSZWN1cnNpb247CisJLyogdHJ1ZSBpZiBz ZXNzaW9uIHZhcmlhYmxlcyB3ZXJlIHVzZWQgKi8KKwlib29sCQloYXNTZXNzaW9uVmFyaWFibGVz OwogCiAJLyoKIAkgKiBJbmZvcm1hdGlvbiBhYm91dCBhZ2dyZWdhdGVzLiBGaWxsZWQgYnkgcHJl cHJvY2Vzc19hZ2dyZWZzKCkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDFhZWVhZWM5NWUuLjZi OWI5OTA0ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC00OSw3ICs0OSw3IEBAIHR5cGVkZWYg c3RydWN0IFBsYW5uZWRTdG10CiAKIAlOb2RlVGFnCQl0eXBlOwogCi0JQ21kVHlwZQkJY29tbWFu ZFR5cGU7CS8qIHNlbGVjdHxpbnNlcnR8dXBkYXRlfGRlbGV0ZXxtZXJnZXx1dGlsaXR5ICovCisJ Q21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxsZXR8aW5zZXJ0fHVwZGF0ZXxkZWxldGV8 bWVyZ2V8dXRpbGl0eSAqLwogCiAJdWludDY0CQlxdWVyeUlkOwkJLyogcXVlcnkgaWRlbnRpZmll ciAoY29waWVkIGZyb20gUXVlcnkpICovCiAKQEAgLTk0LDYgKzk0LDggQEAgdHlwZWRlZiBzdHJ1 Y3QgUGxhbm5lZFN0bXQKIAogCU5vZGUJICAgKnV0aWxpdHlTdG10OwkvKiBub24tbnVsbCBpZiB0 aGlzIGlzIHV0aWxpdHkgc3RtdCAqLwogCisJTGlzdAkgICAqc2Vzc2lvblZhcmlhYmxlczsJLyog T0lEcyBmb3IgUEFSQU1fVkFSSUFCTEUgUGFyYW1zICovCisKIAkvKiBzdGF0ZW1lbnQgbG9jYXRp b24gaW4gc291cmNlIHN0cmluZyAoY29waWVkIGZyb20gUXVlcnkpICovCiAJUGFyc2VMb2MJc3Rt dF9sb2NhdGlvbjsJLyogc3RhcnQgbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIAlQYXJz ZUxvYwlzdG10X2xlbjsJCS8qIGxlbmd0aCBpbiBieXRlczsgMCBtZWFucyAicmVzdCBvZiBzdHJp bmciICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IGVhNDc2NTJhZGIuLjVmN2I4M2QxM2YgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0zNjEsNiArMzYxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29u c3QKICAqCQkJCW9mIHRoZSBgcGFyYW1pZCcgZmllbGQgY29udGFpbiB0aGUgU3ViTGluaydzIHN1 YkxpbmtJZCwgYW5kCiAgKgkJCQl0aGUgbG93LW9yZGVyIDE2IGJpdHMgY29udGFpbiB0aGUgY29s dW1uIG51bWJlci4gIChUaGlzIHR5cGUKICAqCQkJCW9mIFBhcmFtIGlzIGFsc28gY29udmVydGVk IHRvIFBBUkFNX0VYRUMgZHVyaW5nIHBsYW5uaW5nLikKKyAqCisgKgkJUEFSQU1fVkFSSUFCTEU6 ICBUaGUgcGFyYW1ldGVyIGlzIGEgcmVmZXJlbmNlIHRvIGEgc2Vzc2lvbiB2YXJpYWJsZQorICoJ CQkJKHBhcmFtaWQgaG9sZHMgdGhlIHZhcmlhYmxlJ3MgT0lEKS4KICAqLwogdHlwZWRlZiBlbnVt IFBhcmFtS2luZAogewpAQCAtMzY4LDYgKzM3MSw3IEBAIHR5cGVkZWYgZW51bSBQYXJhbUtpbmQK IAlQQVJBTV9FWEVDLAogCVBBUkFNX1NVQkxJTkssCiAJUEFSQU1fTVVMVElFWFBSLAorCVBBUkFN X1ZBUklBQkxFLAogfSBQYXJhbUtpbmQ7CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFtCkBAIC0zODAs NiArMzg0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYW0KIAlpbnQzMgkJcGFyYW10eXBtb2QgcGdf bm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIE9JRCBvZiBjb2xsYXRpb24sIG9y IEludmFsaWRPaWQgaWYgbm9uZSAqLwogCU9pZAkJCXBhcmFtY29sbGlkIHBnX25vZGVfYXR0cihx dWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBPSUQgb2Ygc2Vzc2lvbiB2YXJpYWJsZSBpZiBpdCBp cyB1c2VkICovCisJT2lkCQkJcGFyYW12YXJpZDsKIAkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwogfSBQYXJhbTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BsYW5tYWluLmgKaW5kZXggYWFmYzE3Mzc5Mi4uZGU0NzE2OTJlOCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BsYW5tYWluLmgKQEAgLTEyMCw0ICsxMjAsNiBAQCBleHRlcm4gdm9pZCByZWNvcmRfcGxhbl9m dW5jdGlvbl9kZXBlbmRlbmN5KFBsYW5uZXJJbmZvICpyb290LCBPaWQgZnVuY2lkKTsKIGV4dGVy biB2b2lkIHJlY29yZF9wbGFuX3R5cGVfZGVwZW5kZW5jeShQbGFubmVySW5mbyAqcm9vdCwgT2lk IHR5cGlkKTsKIGV4dGVybiBib29sIGV4dHJhY3RfcXVlcnlfZGVwZW5kZW5jaWVzX3dhbGtlcihO b2RlICpub2RlLCBQbGFubmVySW5mbyAqY29udGV4dCk7CiAKK2V4dGVybiB2b2lkIHB1bGxfdXBf aGFzX3Nlc3Npb25fdmFyaWFibGVzKFBsYW5uZXJJbmZvICpyb290KTsKKwogI2VuZGlmCQkJCQkJ CS8qIFBMQU5NQUlOX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBjODg0Y2Q1YzQ2Li4yZTg4ZDdk OTUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0yNTYsNiArMjU2LDcgQEAgUEdfS0VZV09SRCgibGVh ZGluZyIsIExFQURJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJsZWFrcHJvb2YiLCBMRUFLUFJPT0YsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImxlYXN0IiwgTEVBU1QsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJsZWZ0IiwgTEVGVCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9M QUJFTCkKK1BHX0tFWVdPUkQoImxldCIsIExFVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgibGV2ZWwiLCBMRVZFTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgibGlrZSIsIExJS0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsaW1pdCIsIExJTUlULCBSRVNFUlZFRF9LRVlXT1JE LCBBU19MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDViNzgxZDg3YTkuLjZkOTM2 OTE5NjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtODIsNiArODIsOCBAQCB0eXBlZGVm IGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9DT1BZX1dIRVJFLAkJLyogV0hFUkUgY29u ZGl0aW9uIGluIENPUFkgRlJPTSAqLwogCUVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OLCAvKiBn ZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGEgY29sdW1uICovCiAJRVhQUl9LSU5EX0NZQ0xFX01B UkssCQkvKiBjeWNsZSBtYXJrIHZhbHVlICovCisJRVhQUl9LSU5EX0FTU0lHTl9UQVJHRVQsCS8q IFBML3BnU1FMIGFzc2lnbm1lbnQgdGFyZ2V0ICovCisJRVhQUl9LSU5EX0xFVF9UQVJHRVQsCQkv KiBMRVQgdGFyZ2V0ICovCiB9IFBhcnNlRXhwcktpbmQ7CiAKIApAQCAtMjI1LDYgKzIyNyw3IEBA IHN0cnVjdCBQYXJzZVN0YXRlCiAJYm9vbAkJcF9oYXNUYXJnZXRTUkZzOwogCWJvb2wJCXBfaGFz U3ViTGlua3M7CiAJYm9vbAkJcF9oYXNNb2RpZnlpbmdDVEU7CisJYm9vbAkJcF9oYXNTZXNzaW9u VmFyaWFibGVzOwogCiAJTm9kZQkgICAqcF9sYXN0X3NyZjsJCS8qIG1vc3QgcmVjZW50IHNldC1y ZXR1cm5pbmcgZnVuYy9vcCBmb3VuZCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29w L2NtZHRhZ2xpc3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCmluZGV4IDk0NjVk ZjdiMmYuLmE5MjFhZjI0ODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlz dC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCkBAIC0xODYsNiArMTg2LDcg QEAgUEdfQ01EVEFHKENNRFRBR19HUkFOVCwgIkdSQU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQog UEdfQ01EVEFHKENNRFRBR19HUkFOVF9ST0xFLCAiR1JBTlQgUk9MRSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0lNUE9SVF9GT1JFSUdOX1NDSEVNQSwgIklNUE9SVCBG T1JFSUdOIFNDSEVNQSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfSU5T RVJULCAiSU5TRVJUIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19MRVQs ICJMRVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19MSVNURU4sICJM SVNURU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19MT0FELCAiTE9B RCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0xPQ0tfVEFCTEUsICJM T0NLIFRBQkxFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3Rjb3AvZGVzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmgKaW5kZXggYTNkNTIxYjZmOS4u MzhjYzg3ZjRlNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmgKKysrIGIvc3Jj L2luY2x1ZGUvdGNvcC9kZXN0LmgKQEAgLTk3LDYgKzk3LDcgQEAgdHlwZWRlZiBlbnVtCiAJRGVz dFRyYW5zaWVudFJlbCwJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHJhbnNpZW50IHJlbGF0aW9uICov CiAJRGVzdFR1cGxlUXVldWUsCQkJCS8qIHJlc3VsdHMgc2VudCB0byB0dXBsZSBxdWV1ZSAqLwog CURlc3RFeHBsYWluU2VyaWFsaXplLAkJLyogcmVzdWx0cyBhcmUgc2VyaWFsaXplZCBhbmQgZGlz Y2FyZGVkICovCisJRGVzdFZhcmlhYmxlLAkJCQkvKiByZXN1bHRzIHNlbnQgdG8gc2Vzc2lvbiB2 YXJpYWJsZSAqLwogfSBDb21tYW5kRGVzdDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t Z2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9w bF9leGVjLmMKaW5kZXggMjM5YjMyNTBhOS4uYTllMWUzMjNhZCAxMDA2NDQKLS0tIGEvc3JjL3Bs L3BscGdzcWwvc3JjL3BsX2V4ZWMuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5j CkBAIC04MTAxLDcgKzgxMDEsOCBAQCBleGVjX2lzX3NpbXBsZV9xdWVyeShQTHBnU1FMX2V4cHIg KmV4cHIpCiAJCXF1ZXJ5LT5zb3J0Q2xhdXNlIHx8CiAJCXF1ZXJ5LT5saW1pdE9mZnNldCB8fAog CQlxdWVyeS0+bGltaXRDb3VudCB8fAotCQlxdWVyeS0+c2V0T3BlcmF0aW9ucykKKwkJcXVlcnkt PnNldE9wZXJhdGlvbnMgfHwKKwkJcXVlcnktPmhhc1Nlc3Npb25WYXJpYWJsZXMpCiAJCXJldHVy biBmYWxzZTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nl c3Npb25fdmFyaWFibGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92 YXJpYWJsZXMub3V0CmluZGV4IGFjYTc2NjA0MmQuLjI4NzYyOGVkZTYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92YXJpYWJsZXMub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92YXJpYWJsZXMub3V0CkBAIC01NSwzICs1NSw5 MTUgQEAgU0VUIFJPTEUgVE8gREVGQVVMVDsKIERST1AgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMTsK IERST1AgU0NIRU1BIHN2YXJ0ZXN0OwogRFJPUCBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7 CistLSBjaGVjayBhY2Nlc3MgcmlnaHRzCitDUkVBVEUgUk9MRSByZWdyZXNzX25vb3duZXI7CitD UkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBz cWxmeChpbnQpCitSRVRVUk5TIGludCBBUyAkJCBTRUxFQ1QgJDEgKyB2YXIxICQkIExBTkdVQUdF IHNxbDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHNxbGZ4X3NkKGludCkKK1JFVFVSTlMg aW50IEFTICQkIFNFTEVDVCAkMSArIHZhcjEgJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklO RVI7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwbHBnc3FsZngoaW50KQorUkVUVVJOUyBp bnQgQVMgJCQgQkVHSU4gUkVUVVJOICQxICsgdmFyMTsgRU5EICQkIExBTkdVQUdFIHBscGdzcWw7 CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwbHBnc3FsZnhfc2QoaW50KQorUkVUVVJOUyBp bnQgQVMgJCQgQkVHSU4gUkVUVVJOICQxICsgdmFyMTsgRU5EICQkIExBTkdVQUdFIHBscGdzcWwg U0VDVVJJVFkgREVGSU5FUjsKK0xFVCB2YXIxID0gMTA7CistLSBzaG91bGQgYmUgb2sKK1NFTEVD VCB2YXIxOworIHZhcjEgCistLS0tLS0KKyAgIDEwCisoMSByb3cpCisKK1NFTEVDVCBzcWxmeCgy MCk7Cisgc3FsZnggCistLS0tLS0tCisgICAgMzAKKygxIHJvdykKKworU0VMRUNUIHNxbGZ4X3Nk KDIwKTsKKyBzcWxmeF9zZCAKKy0tLS0tLS0tLS0KKyAgICAgICAzMAorKDEgcm93KQorCitTRUxF Q1QgcGxwZ3NxbGZ4KDIwKTsKKyBwbHBnc3FsZnggCistLS0tLS0tLS0tLQorICAgICAgICAzMAor KDEgcm93KQorCitTRUxFQ1QgcGxwZ3NxbGZ4X3NkKDIwKTsKKyBwbHBnc3FsZnhfc2QgCistLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAzMAorKDEgcm93KQorCistLSBzaG91bGQgZmFpbAorU0VU IFJPTEUgVE8gcmVncmVzc19ub293bmVyOworU0VMRUNUIHZhcjE7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciBzZXNzaW9uIHZhcmlhYmxlIHZhcjEKK1NFTEVDVCBzcWxmeCgyMCk7CitF UlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXNzaW9uIHZhcmlhYmxlIHZhcjEKK0NPTlRF WFQ6ICBTUUwgZnVuY3Rpb24gInNxbGZ4IiBzdGF0ZW1lbnQgMQorU0VMRUNUIHBscGdzcWxmeCgy MCk7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXNzaW9uIHZhcmlhYmxlIHZhcjEK K0NPTlRFWFQ6ICBTUUwgZXhwcmVzc2lvbiAiJDEgKyB2YXIxIgorUEwvcGdTUUwgZnVuY3Rpb24g cGxwZ3NxbGZ4KGludGVnZXIpIGxpbmUgMSBhdCBSRVRVUk4KKy0tIHNob3VsZCBiZSBvaworU0VM RUNUIHNxbGZ4X3NkKDIwKTsKKyBzcWxmeF9zZCAKKy0tLS0tLS0tLS0KKyAgICAgICAzMAorKDEg cm93KQorCitTRUxFQ1QgcGxwZ3NxbGZ4X3NkKDIwKTsKKyBwbHBnc3FsZnhfc2QgCistLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAzMAorKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOwor R1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gcmVncmVzc19ub293bmVyOworLS0gc2hv dWxkIGJlIG9rCitTRVQgUk9MRSBUTyByZWdyZXNzX25vb3duZXI7CitTRUxFQ1QgdmFyMTsKKyB2 YXIxIAorLS0tLS0tCisgICAxMAorKDEgcm93KQorCitTRUxFQ1Qgc3FsZngoMjApOworIHNxbGZ4 IAorLS0tLS0tLQorICAgIDMwCisoMSByb3cpCisKK1NFTEVDVCBwbHBnc3FsZngoMjApOworIHBs cGdzcWxmeCAKKy0tLS0tLS0tLS0tCisgICAgICAgIDMwCisoMSByb3cpCisKK1NFVCBST0xFIFRP IERFRkFVTFQ7CitEUk9QIFZBUklBQkxFIHZhcjE7CitEUk9QIEZVTkNUSU9OIHNxbGZ4KGludCk7 CitEUk9QIEZVTkNUSU9OIHBscGdzcWxmeChpbnQpOworRFJPUCBGVU5DVElPTiBzcWxmeF9zZChp bnQpOworRFJPUCBGVU5DVElPTiBwbHBnc3FsZnhfc2QoaW50KTsKK0RST1AgUk9MRSByZWdyZXNz X25vb3duZXI7CistLSB1c2UgdmFyaWFibGVzIGluc2lkZSB2aWV3cworQ1JFQVRFIFZBUklBQkxF IHZhcjEgQVMgbnVtZXJpYzsKKy0tIHVzZSB2YXJpYWJsZXMgaW4gdmlld3MKK0NSRUFURSBWSUVX IHRlc3RfdmlldyBBUyBTRUxFQ1QgQ09BTEVTQ0UodmFyMSArIHYsIDApIEFTIHJlc3VsdCBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDIpIGcodik7CitTRUxFQ1QgKiBGUk9NIHRlc3RfdmlldzsKKyBy ZXN1bHQgCistLS0tLS0tLQorICAgICAgMAorICAgICAgMAorKDIgcm93cykKKworTEVUIHZhcjEg PSAzLjE0OworU0VMRUNUICogRlJPTSB0ZXN0X3ZpZXc7CisgcmVzdWx0IAorLS0tLS0tLS0KKyAg IDQuMTQKKyAgIDUuMTQKKygyIHJvd3MpCisKKy0tIHN0YXJ0IGEgbmV3IHNlc3Npb24KK1xjCitT RUxFQ1QgKiBGUk9NIHRlc3RfdmlldzsKKyByZXN1bHQgCistLS0tLS0tLQorICAgICAgMAorICAg ICAgMAorKDIgcm93cykKKworTEVUIHZhcjEgPSAzLjE0OworU0VMRUNUICogRlJPTSB0ZXN0X3Zp ZXc7CisgcmVzdWx0IAorLS0tLS0tLS0KKyAgIDQuMTQKKyAgIDUuMTQKKygyIHJvd3MpCisKKy0t IHNob3VsZCBmYWlsLCBkZXBlbmRlbmN5CitEUk9QIFZBUklBQkxFIHZhcjE7CitFUlJPUjogIGNh bm5vdCBkcm9wIHNlc3Npb24gdmFyaWFibGUgdmFyMSBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVw ZW5kIG9uIGl0CitERVRBSUw6ICB2aWV3IHRlc3RfdmlldyBkZXBlbmRzIG9uIHNlc3Npb24gdmFy aWFibGUgdmFyMQorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVu ZGVudCBvYmplY3RzIHRvby4KKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2YXIxIENB U0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHZpZXcgdGVzdF92aWV3CitDUkVBVEUg VkFSSUFCTEUgdmFyMSB0ZXh0OworQ1JFQVRFIFZBUklBQkxFIHZhcjIgdGV4dDsKKy0tIHVzZSB2 YXJpYWJsZXMgaW4gU1FMIGZ1bmN0aW9ucworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc3Fs ZngxKHZhcmNoYXIpCitSRVRVUk5TIHZhcmNoYXIgQVMgJCQgU0VMRUNUIHZhcjEgfHwgJywgJyB8 fCAkMSAkJCBMQU5HVUFHRSBzcWw7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzcWxmeDIo IHZhcmNoYXIpCitSRVRVUk5TIHZhcmNoYXIgQVMgJCQgU0VMRUNUIHZhcjIgfHwgJywgJyB8fCAk MSAkJCBMQU5HVUFHRSBzcWw7CitMRVQgdmFyMSA9ICdzdHIxJzsKK0xFVCB2YXIyID0gJ3N0cjIn OworU0VMRUNUIHNxbGZ4MShzcWxmeDIoJ0hlbGxvJykpOworICAgICAgc3FsZngxICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLQorIHN0cjEsIHN0cjIsIEhlbGxvCisoMSByb3cpCisKKy0tIGlu bGluaW5nIGlzIGJsb2NrZWQKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUIHNx bGZ4MShzcWxmeDIoJ0hlbGxvJykpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE91dHB1dDogc3FsZngxKHNxbGZ4Mign SGVsbG8nOjpjaGFyYWN0ZXIgdmFyeWluZykpCisoMiByb3dzKQorCitEUk9QIEZVTkNUSU9OIHNx bGZ4MSh2YXJjaGFyKTsKK0RST1AgRlVOQ1RJT04gc3FsZngyKHZhcmNoYXIpOworRFJPUCBWQVJJ QUJMRSB2YXIxOworRFJPUCBWQVJJQUJMRSB2YXIyOworLS0gYWNjZXNzIGZyb20gY2FjaGVkIHBs YW5zIHNob3VsZCB3b3JrCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gcGxwZ3NxbGZ4KCkKK1JFVFVSTlMgbnVtZXJpYyBBUyAkJCBC RUdJTiBSRVRVUk4gdmFyMTsgRU5EICQkIExBTkdVQUdFIHBscGdzcWw7CitzZXQgcGxhbl9jYWNo ZV9tb2RlIFRPIGZvcmNlX2dlbmVyaWNfcGxhbjsKK0xFVCB2YXIxID0gMy4xNDsKK1NFTEVDVCBw bHBnc3FsZngoKTsKKyBwbHBnc3FsZnggCistLS0tLS0tLS0tLQorICAgICAgMy4xNAorKDEgcm93 KQorCitMRVQgdmFyMSA9IDMuMTQgKiAyOworU0VMRUNUIHBscGdzcWxmeCgpOworIHBscGdzcWxm eCAKKy0tLS0tLS0tLS0tCisgICAgICA2LjI4CisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdmFy MTsKKy0tIGRlcGVuZGVuY3kgKHBsYW4gaW52YWxpZGF0aW9uKSBzaG91bGQgd29yaworQ1JFQVRF IFZBUklBQkxFIHZhcjEgQVMgbnVtZXJpYzsKK0xFVCB2YXIxID0gMy4xNCAqIDM7CitTRUxFQ1Qg cGxwZ3NxbGZ4KCk7CisgcGxwZ3NxbGZ4IAorLS0tLS0tLS0tLS0KKyAgICAgIDkuNDIKKygxIHJv dykKKworTEVUIHZhcjEgPSAzLjE0ICogNDsKK1NFTEVDVCBwbHBnc3FsZngoKTsKKyBwbHBnc3Fs ZnggCistLS0tLS0tLS0tLQorICAgICAxMi41NgorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZh cjE7CitEUk9QIEZVTkNUSU9OIHBscGdzcWxmeCgpOworc2V0IHBsYW5fY2FjaGVfbW9kZSBUTyBE RUZBVUxUOworLS0gdXNhZ2UgTEVUIHN0YXRlbWVudCBpbiBwbHBnc3FsIHNob3VsZCB3b3JrCitD UkVBVEUgVkFSSUFCTEUgdmFyMSBpbnQ7CitDUkVBVEUgVkFSSUFCTEUgdmFyMiBudW1lcmljW107 CitETyAkJAorQkVHSU4KKyAgTEVUIHZhcjIgPSAne30nOjppbnRbXTsKKyAgRk9SIGkgSU4gMS4u MTAKKyAgTE9PUAorICAgIExFVCB2YXIxID0gaTsKKyAgICBMRVQgdmFyMlt2YXIxXSA9IGk7Cisg IEVORCBMT09QOworICBSQUlTRSBOT1RJQ0UgJ3Jlc3VsdCBhcnJheTogJScsIHZhcjI7CitFTkQ7 CiskJDsKK05PVElDRTogIHJlc3VsdCBhcnJheTogezEsMiwzLDQsNSw2LDcsOCw5LDEwfQorRFJP UCBWQVJJQUJMRSB2YXIxOworRFJPUCBWQVJJQUJMRSB2YXIyOworLS0gQ0FMTCBzdGF0ZW1lbnQg aXMgbm90IHN1cHBvcnRlZCB5ZXQKKy0tIHJlcXVpcmVzIGRpcmVjdCBhY2Nlc3MgdG8gc2Vzc2lv biB2YXJpYWJsZSBmcm9tIGV4cHJlc3Npb24gZXhlY3V0b3IKK0NSRUFURSBWQVJJQUJMRSB2IGlu dDsKK0NSRUFURSBQUk9DRURVUkUgcChhcmcgaW50KSBBUyAkJCBCRUdJTiBSQUlTRSBOT1RJQ0Ug JyUnLCBhcmc7IEVORCAkJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gc2hvdWxkIG5vdCBjcmFzaCAo YnV0IGlzIG5vdCBzdXBwb3J0ZWQgeWV0KQorQ0FMTCBwKHYpOworRVJST1I6ICBzZXNzaW9uIHZh cmlhYmxlIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGFyZ3VtZW50CitETyAkJCBCRUdJTiBDQUxMIHAo dik7IEVORCAkJDsKK0VSUk9SOiAgc2Vzc2lvbiB2YXJpYWJsZSBjYW5ub3QgYmUgdXNlZCBhcyBh biBhcmd1bWVudAorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIkNBTEwgcCh2KSIKK1BML3BnU1FM IGZ1bmN0aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgMSBhdCBDQUxMCitEUk9QIFBST0NFRFVS RSBwKGludCk7CitEUk9QIFZBUklBQkxFIHY7CistLSB0ZXN0IHNlYXJjaCBwYXRoCitDUkVBVEUg U0NIRU1BIHN2YXJ0ZXN0OworQ1JFQVRFIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjEgQVMgbnVtZXJp YzsKKy0tIHNob3VsZCBmYWlsCitMRVQgdmFyMSA9IHBpKCk7CitFUlJPUjogIHNlc3Npb24gdmFy aWFibGUgInZhcjEiIGRvZXNuJ3QgZXhpc3QKK0xJTkUgMTogTEVUIHZhcjEgPSBwaSgpOworICAg ICAgICAgICAgXgorU0VMRUNUIHZhcjE7CitFUlJPUjogIGNvbHVtbiAidmFyMSIgZG9lcyBub3Qg ZXhpc3QKK0xJTkUgMTogU0VMRUNUIHZhcjE7CisgICAgICAgICAgICAgICBeCistLSBzaG91bGQg YmUgb2sKK0xFVCBzdmFydGVzdC52YXIxID0gcGkoKTsKK1NFTEVDVCBzdmFydGVzdC52YXIxOwor ICAgICAgIHZhcjEgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAzLjE0MTU5MjY1MzU4OTc5 CisoMSByb3cpCisKK1NFVCBzZWFyY2hfcGF0aCBUTyBzdmFydGVzdDsKKy0tIHNob3VsZCBiZSBv aworTEVUIHZhcjEgPSBwaSgpICsgMTA7CitTRUxFQ1QgdmFyMTsKKyAgICAgICB2YXIxICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tCisgMTMuMTQxNTkyNjUzNTg5OAorKDEgcm93KQorCitSRVNF VCBzZWFyY2hfcGF0aDsKK0RST1AgU0NIRU1BIHN2YXJ0ZXN0IENBU0NBREU7CitOT1RJQ0U6ICBk cm9wIGNhc2NhZGVzIHRvIHNlc3Npb24gdmFyaWFibGUgc3ZhcnRlc3QudmFyMQorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgdGV4dDsKKy0tIHZhcmlhYmxlcyBjYW4gYmUgdXBkYXRlZCB1bmRlciBS TyB0cmFuc2FjdGlvbgorQkVHSU47CitTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZOworTEVUIHZh cjEgPSAnaGVsbG8nOworQ09NTUlUOworU0VMRUNUIHZhcjE7CisgdmFyMSAgCistLS0tLS0tCisg aGVsbG8KKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YXIxOworLS0gdGVzdCBvZiBkb21haW5z CitDUkVBVEUgRE9NQUlOIGludF9kb21haW4gQVMgaW50IE5PVCBOVUxMIENIRUNLIChWQUxVRSA+ IDEwMCk7CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRfZG9tYWluOworLS0gc2hvdWxkIGZh aWwKK1NFTEVDVCB2YXIxOworRVJST1I6ICBkb21haW4gaW50X2RvbWFpbiBkb2VzIG5vdCBhbGxv dyBudWxsIHZhbHVlcworLS0gc2hvdWxkIGJlIG9rCitMRVQgdmFyMSA9IDEwMDA7CitTRUxFQ1Qg dmFyMTsKKyB2YXIxIAorLS0tLS0tCisgMTAwMAorKDEgcm93KQorCistLSBzaG91bGQgZmFpbAor TEVUIHZhcjEgPSAxMDsKK0VSUk9SOiAgdmFsdWUgZm9yIGRvbWFpbiBpbnRfZG9tYWluIHZpb2xh dGVzIGNoZWNrIGNvbnN0cmFpbnQgImludF9kb21haW5fY2hlY2siCistLSBzaG91bGQgZmFpbAor TEVUIHZhcjEgPSBOVUxMOworRVJST1I6ICBkb21haW4gaW50X2RvbWFpbiBkb2VzIG5vdCBhbGxv dyBudWxsIHZhbHVlcworLS0gbm90ZSAtIGRvbWFpbiBkZWZhdWx0cyBhcmUgbm90IHN1cHBvcnRl ZCB5ZXQgKGxpa2UgUExwZ1NRTCkKK0RST1AgVkFSSUFCTEUgdmFyMTsKK0RST1AgRE9NQUlOIGlu dF9kb21haW47CistLSB0aGUgZXhwcmVzc2lvbiBzaG91bGQgcmVtYWluICJ1bmtub3duIgorQ1JF QVRFIFZBUklBQkxFIHZhcjEgQVMgaW50NG11bHRpcmFuZ2VbXTsKKy0tIHNob3VsZCBiZSBvawor TEVUIHZhcjEgPSBOVUxMOworTEVUIHZhcjEgPSAneyJ7WzIsOCksWzExLDE0KX0iLCJ7WzUsOCks WzEyLDE0KX0ifSc7CitMRVQgdmFyMVsyXSA9ICd7WzUsOCksWzEyLDEwMCl9JzsKK1NFTEVDVCB2 YXIxOworICAgICAgICAgICAgICAgICAgdmFyMSAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsie1syLDgpLFsxMSwxNCl9Iiwie1s1 LDgpLFsxMiwxMDApfSJ9CisoMSByb3cpCisKKy0tSXQgc2hvdWxkIHdvcmsgaW4gcGxwZ3NxbCB0 b28KK0RPICQkCitCRUdJTgorICBMRVQgdmFyMSA9IE5VTEw7CisgIExFVCB2YXIxID0gJ3sie1sy LDgpLFsxMSwxNCl9Iiwie1s1LDgpLFsxMiwxNCl9In0nOworICBMRVQgdmFyMVsyXSA9ICd7WzUs OCksWzEyLDEwMCl9JzsKKworICBSQUlTRSBOT1RJQ0UgJyUnLCB2YXIxOworRU5EOworJCQ7CitO T1RJQ0U6ICB7IntbMiw4KSxbMTEsMTQpfSIsIntbNSw4KSxbMTIsMTAwKX0ifQorRFJPUCBWQVJJ QUJMRSB2YXIxOworQ1JFQVRFIFNDSEVNQSBzdmFydGVzdCBDUkVBVEUgVkFSSUFCTEUgdmFyMSBB UyBpbnQgQ1JFQVRFIFRBQkxFIGZvbyhhIGludCk7CitMRVQgc3ZhcnRlc3QudmFyMSA9IDEwMDsK K1NFTEVDVCBzdmFydGVzdC52YXIxOworIHZhcjEgCistLS0tLS0KKyAgMTAwCisoMSByb3cpCisK K1NFVCBzZWFyY2hfcGF0aCB0byBwdWJsaWMsIHN2YXJ0ZXN0OworU0VMRUNUIHZhcjE7CisgdmFy MSAKKy0tLS0tLQorICAxMDAKKygxIHJvdykKKworRFJPUCBTQ0hFTUEgc3ZhcnRlc3QgQ0FTQ0FE RTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMiBvdGhlciBvYmplY3RzCitERVRBSUw6ICBk cm9wIGNhc2NhZGVzIHRvIHRhYmxlIGZvbworZHJvcCBjYXNjYWRlcyB0byBzZXNzaW9uIHZhcmlh YmxlIHZhcjEKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludDsKK0NSRUFURSBWQVJJQUJMRSB2 YXIyIEFTIGludFtdOworTEVUIHZhcjEgPSAyOworTEVUIHZhcjIgPSAne30nOjppbnRbXTsKK0xF VCB2YXIyW3ZhcjFdID0gMDsKK1NFTEVDVCB2YXIyOworICAgdmFyMiAgICAKKy0tLS0tLS0tLS0t CisgWzI6Ml09ezB9CisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKK0NSRUFU RSBWQVJJQUJMRSB2YXIxIEFTIGludDsKK0NSRUFURSBWQVJJQUJMRSB2YXIyIEFTIGludFtdOwor TEVUIHZhcjEgPSAyOworTEVUIHZhcjIgPSAne30nOjppbnRbXTsKK1NFTEVDVCB2YXIyOworIHZh cjIgCistLS0tLS0KKyB7fQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7Cist LSB0aGUgTEVUIHN0YXRlbWVudCBzaG91bGQgYmUgZGlzYWxsb3dlZCBpbiBDVEUKK0NSRUFURSBW QVJJQUJMRSB2YXIxIEFTIGludDsKK1dJVEggeCBBUyAoTEVUIHZhcjEgPSAxMDApIFNFTEVDVCAq IEZST00geDsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkxFVCIKK0xJTkUgMTog V0lUSCB4IEFTIChMRVQgdmFyMSA9IDEwMCkgU0VMRUNUICogRlJPTSB4OworICAgICAgICAgICAg ICAgICAgIF4KKy0tIHNob3VsZCBiZSBvaworTEVUIHZhcjEgPSBnZW5lcmF0ZV9zZXJpZXMoMSwg MSk7CistLSBzaG91bGQgZmFpbAorTEVUIHZhcjEgPSBnZW5lcmF0ZV9zZXJpZXMoMSwgMik7CitF UlJPUjogIGV4cHJlc3Npb24gcmV0dXJuZWQgbW9yZSB0aGFuIG9uZSByb3cKK0xFVCB2YXIxID0g Z2VuZXJhdGVfc2VyaWVzKDEsIDApOworRVJST1I6ICBleHByZXNzaW9uIHJldHVybmVkIG5vIHJv d3MKK0RST1AgVkFSSUFCTEUgdmFyMTsKKy0tIGNvbXBvc2l0ZSB2YXJpYWJsZXMKK0NSRUFURSBU WVBFIHN2X3h5eiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworQ1JFQVRFIFZB UklBQkxFIHYxIEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBzdl94eXo7CitMRVQg djEgPSAoMSwgMiwgMy4xNCk7CitMRVQgdjIgPSAoMTAsIDIwLCAzLjE0ICogMTApOworLS0gc2hv dWxkIHdvcmsgdG9vIC0gdGhlcmUgYXJlIHByZXBhcmVkIGNhc3RzCitMRVQgdjEgPSAoMSwgMiwg Myk7CitTRUxFQ1QgdjE7CisgICAgIHYxICAgICAKKy0tLS0tLS0tLS0tLQorICgxLDIsMy4wMCkK KygxIHJvdykKKworU0VMRUNUIHYyOworICAgICAgdjIgICAgICAgCistLS0tLS0tLS0tLS0tLS0K KyAoMTAsMjAsMzEuNDApCisoMSByb3cpCisKK1NFTEVDVCAodjEpLio7CisgeCB8IHkgfCAgeiAg IAorLS0tKy0tLSstLS0tLS0KKyAxIHwgMiB8IDMuMDAKKygxIHJvdykKKworU0VMRUNUICh2Miku KjsKKyB4ICB8IHkgIHwgICB6ICAgCistLS0tKy0tLS0rLS0tLS0tLQorIDEwIHwgMjAgfCAzMS40 MAorKDEgcm93KQorCitTRUxFQ1QgdjEueCArIHYxLno7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgICAgIDQuMDAKKygxIHJvdykKKworU0VMRUNUIHYyLnggKyB2Mi56OworID9jb2x1bW4/IAor LS0tLS0tLS0tLQorICAgIDQxLjQwCisoMSByb3cpCisKKy0tIGFjY2VzcyB0byBjb21wb3NpdGUg ZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbworQ1JFQVRFIFJPTEUgcmVncmVzc192YXJfdGVzdF9y b2xlOworU0VUIFJPTEUgVE8gcmVncmVzc192YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIGZhaWwK K1NFTEVDVCB2Mi54OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2Vzc2lvbiB2YXJp YWJsZSB2MgorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZB UklBQkxFIHYyOworRFJPUCBST0xFIHJlZ3Jlc3NfdmFyX3Rlc3Rfcm9sZTsKK0NSRUFURSBUWVBF IHQxIEFTIChhIGludCwgYiBudW1lcmljLCBjIHRleHQpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFT IHQxOworTEVUIHYxID0gKDEsIHBpKCksICdoZWxsbycpOworU0VMRUNUIHYxOworICAgICAgICAg ICAgIHYxICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDMu MTQxNTkyNjUzNTg5NzksaGVsbG8pCisoMSByb3cpCisKK0xFVCB2MS5iID0gMTAuMjIyMjsKK1NF TEVDVCB2MTsKKyAgICAgICAgdjEgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwx MC4yMjIyLGhlbGxvKQorKDEgcm93KQorCistLSBzaG91bGQgZmFpbCwgYXR0cmlidXRlIGRvZXNu J3QgZXhpc3QKK0xFVCB2MS54ID0gMTA7CitFUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQg IngiIG9mIGNvbHVtbiAidjEiIGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCBjb2x1bW4gaW4gZGF0 YSB0eXBlIHQxCitMSU5FIDE6IExFVCB2MS54ID0gMTA7CisgICAgICAgICAgICBeCistLSBzaG91 bGQgZmFpbCwgZG9uJ3QgYWxsb3cgbXVsdGkgY29sdW1uIHF1ZXJ5CitMRVQgdjEgPSAoTlVMTDo6 dDEpLio7CitFUlJPUjogIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiByZXR1cm5lZCAzIGNvbHVtbnMK K0xJTkUgMTogTEVUIHYxID0gKE5VTEw6OnQxKS4qOworICAgICAgICAgICAgICAgICAgXgorLS0g YWxsb3cgRFJPUCBvciBBREQgQVRUUklCVVRFIG9uIGNvbXBvc2l0ZSB0eXBlcworLS0gc2hvdWxk IGJlIG9rCitBTFRFUiBUWVBFIHQxIERST1AgQVRUUklCVVRFIGM7CitTRUxFQ1QgdjE7CisgICAg IHYxICAgICAgCistLS0tLS0tLS0tLS0tCisgKDEsMTAuMjIyMikKKygxIHJvdykKKworLS0gc2hv dWxkIGJlIG9rCitBTFRFUiBUWVBFIHQxIEFERCBBVFRSSUJVVEUgYyBpbnQ7CitTRUxFQ1QgdjE7 CisgICAgICB2MSAgICAgIAorLS0tLS0tLS0tLS0tLS0KKyAoMSwxMC4yMjIyLCkKKygxIHJvdykK KworTEVUIHYxID0gKDEwLCAxMC4zLCAyMCk7CitTRUxFQ1QgdjE7CisgICAgICB2MSAgICAgIAor LS0tLS0tLS0tLS0tLS0KKyAoMTAsMTAuMywyMCkKKygxIHJvdykKKworLS0gc2hvdWxkIGJlIG9r CitBTFRFUiBUWVBFIHQxIERST1AgQVRUUklCVVRFIGI7CitTRUxFQ1QgdjE7CisgICB2MSAgICAK Ky0tLS0tLS0tLQorICgxMCwyMCkKKygxIHJvdykKKworLS0gc2hvdWxkIGZhaWwsIGRpc2FsbG93 IGRhdGEgdHlwZSBjaGFuZ2UKK0FMVEVSIFRZUEUgdDEgQUxURVIgQVRUUklCVVRFIGMgVFlQRSBp bnQ7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0eXBlICJ0MSIgYmVjYXVzZSBzZXNzaW9uIHZhcmlh YmxlICJwdWJsaWMudjEiIHVzZXMgaXQKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZUEUgdDE7 CistLSB0aGUgdGFibGUgdHlwZSBjYW4gYmUgdXNlZCBhcyBjb21wb3NpdGUgdHlwZSB0b28KK0NS RUFURSBUQUJMRSBzdmFyX3Rlc3QoYSBpbnQsIGIgbnVtZXJpYywgYyBkYXRlKTsKK0NSRUFURSBW QVJJQUJMRSB2YXIxIEFTIHN2YXJfdGVzdDsKK0xFVCB2YXIxID0gKDEwLCBwaSgpLCAnMjAyMy0w NS0yNicpOworU0VMRUNUIHZhcjE7CisgICAgICAgICAgICAgICB2YXIxICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEwLDMuMTQxNTkyNjUzNTg5 NzksMDUtMjYtMjAyMykKKygxIHJvdykKKworLS0gc2hvdWxkIGZhaWwgZHVlIGRlcGVuZGVuY3kK K0FMVEVSIFRBQkxFIHN2YXJfdGVzdCBBTFRFUiBDT0xVTU4gYSBUWVBFIHRleHQ7CitFUlJPUjog IGNhbm5vdCBhbHRlciB0YWJsZSAic3Zhcl90ZXN0IiBiZWNhdXNlIHNlc3Npb24gdmFyaWFibGUg InB1YmxpYy52YXIxIiB1c2VzIGl0CistLSBzaG91bGQgZmFpbAorRFJPUCBUQUJMRSBzdmFyX3Rl c3Q7CitFUlJPUjogIGNhbm5vdCBkcm9wIHRhYmxlIHN2YXJfdGVzdCBiZWNhdXNlIG90aGVyIG9i amVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBzZXNzaW9uIHZhcmlhYmxlIHZhcjEgZGVwZW5k cyBvbiB0eXBlIHN2YXJfdGVzdAorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3Ag dGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK0RST1AgVkFSSUFCTEUgdmFyMTsKK0RST1AgVEFC TEUgc3Zhcl90ZXN0OworLS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJMRSB2 YXIxIEFTIG51bWVyaWNbXTsKK0xFVCB2YXIxID0gQVJSQVlbMS4xLDIuMV07CitMRVQgdmFyMVsx XSA9IDEwLjE7CitTRUxFQ1QgdmFyMTsKKyAgICB2YXIxICAgIAorLS0tLS0tLS0tLS0tCisgezEw LjEsMi4xfQorKDEgcm93KQorCistLSBMRVQgdGFyZ2V0IGRvZXNuJ3QgYWxsb3cgc3JmLCBzaG91 bGQgZmFpbAorTEVUIHZhcjFbZ2VuZXJhdGVfc2VyaWVzKDEsMyldID0gMTAwOworRVJST1I6ICBz ZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gTEVUCitMSU5FIDE6IExF VCB2YXIxW2dlbmVyYXRlX3NlcmllcygxLDMpXSA9IDEwMDsKKyAgICAgICAgICAgICAgICAgXgor RFJPUCBWQVJJQUJMRSB2YXIxOworLS0gYXJyYXlzIGluc2lkZSBjb21wb3NpdGUKK0NSRUFURSBU WVBFIHQxIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NSRUFURSBWQVJJQUJMRSB2YXIx IEFTIHQxOworTEVUIHZhcjEgPSAoMTAuMSwgQVJSQVlbMC4wLCAwLjBdKTsKK0xFVCB2YXIxLmEg PSAxMC4yOworU0VMRUNUIHZhcjE7CisgICAgICAgIHZhcjEgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAoMTAuMiwiezAuMCwwLjB9IikKKygxIHJvdykKKworTEVUIHZhcjEuYlsxXSA9 IDEwLjM7CitTRUxFQ1QgdmFyMTsKKyAgICAgICAgdmFyMSAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKDEwLjIsInsxMC4zLDAuMH0iKQorKDEgcm93KQorCitEUk9QIFZBUklBQkxF IHZhcjE7CitEUk9QIFRZUEUgdDE7CistLSBFbmNvdXJhZ2UgdXNlIG9mIHBhcmFsbGVsIHBsYW5z CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdCA9 IDA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgbWF4X3BhcmFs bGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CistLSB0ZXN0IG9uIHF1ZXJ5IHdpdGggd29ya2Vy cworQ1JFQVRFIFRBQkxFIHN2YXJfdGVzdChhIGludCk7CitJTlNFUlQgSU5UTyBzdmFyX3Rlc3Qg U0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKTsKK0FOQUxZWkUgc3Zhcl90ZXN0 OworQ1JFQVRFIFZBUklBQkxFIHplcm8gaW50OworTEVUIHplcm8gPSAwOworLS0gcmVzdWx0IHNo b3VsZCBiZSAxMDAKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHN2YXJfdGVzdCBXSEVSRSBhJTEwID0g emVybzsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDEwMAorKDEgcm93KQorCistLSBwYXJhbGxlbCBl eGVjdXRpb24gaXMgbm90IHN1cHBvcnRlZCB5ZXQKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU IGNvdW50KCopIEZST00gc3Zhcl90ZXN0IFdIRVJFIGElMTAgPSB6ZXJvOworICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQWdncmVnYXRlCisgICAtPiAgU2VxIFNjYW4gb24gc3Zhcl90ZXN0CisgICAgICAgICBG aWx0ZXI6ICgoYSAlIDEwKSA9IHplcm8pCisoMyByb3dzKQorCitMRVQgemVybyA9IChTRUxFQ1Qg Y291bnQoKikgRlJPTSBzdmFyX3Rlc3QpOworLS0gcmVzdWx0IHNob3VsZCBiZSAxMDAwCitTRUxF Q1QgemVybzsKKyB6ZXJvIAorLS0tLS0tCisgMTAwMAorKDEgcm93KQorCitEUk9QIFZBUklBQkxF IHplcm87CitEUk9QIFRBQkxFIHN2YXJfdGVzdDsKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7 CitSRVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CistLSB0aGUg cmVzdWx0IG9mIHZpZXcgc2hvdWxkIGJlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZSB0b28KK0NSRUFU RSBWQVJJQUJMRSB2YXIxIEFTIGludDsKK0xFVCB2YXIxID0gMTA7CitDUkVBVEUgVklFVyB2YXIx dmlldyBBUyBTRUxFQ1QgQ09BTEVTQ0UodmFyMSwgMCkgQVMgcmVzdWx0OworU0VMRUNUICogRlJP TSB2YXIxdmlldzsKKyByZXN1bHQgCistLS0tLS0tLQorICAgICAxMAorKDEgcm93KQorCitTRVQg ZGVidWdfcGFyYWxsZWxfcXVlcnkgVE8gb247CitTRUxFQ1QgKiBGUk9NIHZhcjF2aWV3OworIHJl c3VsdCAKKy0tLS0tLS0tCisgICAgIDEwCisoMSByb3cpCisKK1NFVCBkZWJ1Z19wYXJhbGxlbF9x dWVyeSBUTyBvZmY7CitEUk9QIFZJRVcgdmFyMXZpZXc7CitEUk9QIFZBUklBQkxFIHZhcjE7CitD UkVBVEUgVkFSSUFCTEUgdmFyaWQgaW50OworQ1JFQVRFIFRBQkxFIHN2YXJfdGVzdChpZCBpbnQs IHYgaW50KTsKK0xFVCB2YXJpZCA9IDE7CitJTlNFUlQgSU5UTyBzdmFyX3Rlc3QgVkFMVUVTKHZh cmlkLCAxMDApOworU0VMRUNUICogRlJPTSBzdmFyX3Rlc3Q7CisgaWQgfCAgdiAgCistLS0tKy0t LS0tCisgIDEgfCAxMDAKKygxIHJvdykKKworVVBEQVRFIHN2YXJfdGVzdCBTRVQgdiA9IDIwMCBX SEVSRSBpZCA9IHZhcmlkOworU0VMRUNUICogRlJPTSBzdmFyX3Rlc3Q7CisgaWQgfCAgdiAgCist LS0tKy0tLS0tCisgIDEgfCAyMDAKKygxIHJvdykKKworREVMRVRFIEZST00gc3Zhcl90ZXN0IFdI RVJFIGlkID0gdmFyaWQ7CitTRUxFQ1QgKiBGUk9NIHN2YXJfdGVzdDsKKyBpZCB8IHYgCistLS0t Ky0tLQorKDAgcm93cykKKworRFJPUCBUQUJMRSBzdmFyX3Rlc3Q7CitEUk9QIFZBUklBQkxFIHZh cmlkOworLS0gdmlzaWJpbGl0eSBjaGVjaworLS0gdmFyaWFibGVzIHNob3VsZCBiZSBzaGFkb3dl ZCBhbHdheXMKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIHRleHQ7CitTRUxFQ1QgdmFyMS5yZWxu YW1lIEZST00gcGdfY2xhc3MgdmFyMSBXSEVSRSB2YXIxLnJlbG5hbWUgPSAncGdfY2xhc3MnOwor IHJlbG5hbWUgIAorLS0tLS0tLS0tLQorIHBnX2NsYXNzCisoMSByb3cpCisKK0RST1AgVkFSSUFC TEUgdmFyMTsKK0NSRUFURSBUQUJMRSB4eHRhYihhdmFyIGludCk7CitJTlNFUlQgSU5UTyB4eHRh YiBWQUxVRVMoMzMzKTsKK0NSRUFURSBUWVBFIHh4dHlwZSBBUyAoYXZhciBpbnQpOworQ1JFQVRF IFZBUklBQkxFIHh4dGFiIEFTIHh4dHlwZTsKK0lOU0VSVCBJTlRPIHh4dGFiIFZBTFVFUygxMCk7 CistLSBpdCBpcyBhbWJpZ3VvdXMsIGJ1dCBjb2x1bW5zIGFyZSBwcmVmZXJyZWQKK1NFTEVDVCB4 eHRhYi5hdmFyIEZST00geHh0YWI7CisgYXZhciAKKy0tLS0tLQorICAzMzMKKyAgIDEwCisoMiBy b3dzKQorCistLSBzaG91bGQgYmUgb2sKK1NFTEVDVCBhdmFyIEZST00geHh0YWI7CisgYXZhciAK Ky0tLS0tLQorICAzMzMKKyAgIDEwCisoMiByb3dzKQorCitDUkVBVEUgVkFSSUFCTEUgcHVibGlj LmF2YXIgQVMgaW50OworLS0gc2hvdWxkIGJlIG9rLCBzZWUgdGhlIHRhYmxlCitTRUxFQ1QgYXZh ciBGUk9NIHh4dGFiOworIGF2YXIgCistLS0tLS0KKyAgMzMzCisgICAxMAorKDIgcm93cykKKwor LS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLmF2YXIgRlJPTSB4eHRhYjsKKyBhdmFyIAor LS0tLS0tCisgICAgIAorICAgICAKKygyIHJvd3MpCisKK0RST1AgVkFSSUFCTEUgeHh0YWI7CitT RUxFQ1QgeHh0YWIuYXZhciBGUk9NIHh4dGFiOworIGF2YXIgCistLS0tLS0KKyAgMzMzCisgICAx MAorKDIgcm93cykKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuYXZhcjsKK0RST1AgVFlQRSB4eHR5 cGU7CitEUk9QIFRBQkxFIHh4dGFiOworLS0gVGhlIHZhcmlhYmxlIGNhbiBiZSBzaGFkb3dlZCBi eSB0YWJsZSBvciBieSBhbGlhcworQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJfdHlwZSBBUyAoYSBp bnQsIGIgaW50LCBjIGludCk7CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgcHVibGlj LnN2YXJfdHlwZTsKK0NSRUFURSBUQUJMRSBwdWJsaWMuc3ZhcihhIGludCwgYiBpbnQpOworSU5T RVJUIElOVE8gcHVibGljLnN2YXIgVkFMVUVTKDEwLCAyMCk7CitMRVQgcHVibGljLnN2YXIgPSAo MTAwLCAyMDAsIDMwMCk7CistLSBzaG91bGQgYmUgb2sKKy0tIHNob3cgdGFibGUKK1NFTEVDVCAq IEZST00gcHVibGljLnN2YXI7CisgYSAgfCBiICAKKy0tLS0rLS0tLQorIDEwIHwgMjAKKygxIHJv dykKKworU0VMRUNUIHN2YXIuYSBGUk9NIHB1YmxpYy5zdmFyOworIGEgIAorLS0tLQorIDEwCiso MSByb3cpCisKK1NFTEVDVCBzdmFyLiogRlJPTSBwdWJsaWMuc3ZhcjsKKyBhICB8IGIgIAorLS0t LSstLS0tCisgMTAgfCAyMAorKDEgcm93KQorCistLSBzaG93IHZhcmlhYmxlCitTRUxFQ1QgcHVi bGljLnN2YXI7CisgICAgIHN2YXIgICAgICAKKy0tLS0tLS0tLS0tLS0tLQorICgxMDAsMjAwLDMw MCkKKygxIHJvdykKKworU0VMRUNUIHB1YmxpYy5zdmFyLmM7CisgIGMgIAorLS0tLS0KKyAzMDAK KygxIHJvdykKKworU0VMRUNUIChwdWJsaWMuc3ZhcikuKjsKKyAgYSAgfCAgYiAgfCAgYyAgCist LS0tLSstLS0tLSstLS0tLQorIDEwMCB8IDIwMCB8IDMwMAorKDEgcm93KQorCistLSB0aGUgdmFy aWFibGUgaXMgc2hhZG93ZWQsIHJhaXNlIGVycm9yCitTRUxFQ1QgcHVibGljLnN2YXIuYyBGUk9N IHB1YmxpYy5zdmFyOworRVJST1I6ICBjb2x1bW4gc3Zhci5jIGRvZXMgbm90IGV4aXN0CitMSU5F IDE6IFNFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00gcHVibGljLnN2YXI7CisgICAgICAgICAgICAg ICBeCistLSBjYW4gYmUgZml4ZWQgYnkgYWxpYXMKK1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00g cHVibGljLnN2YXIgeDsKKyAgYyAgCistLS0tLQorIDMwMAorKDEgcm93KQorCitTRUxFQ1Qgc3Zh ci5hIEZST00gcHVibGljLnN2YXI7CisgYSAgCistLS0tCisgMTAKKygxIHJvdykKKworU0VMRUNU IHN2YXIuKiBGUk9NIHB1YmxpYy5zdmFyOworIGEgIHwgYiAgCistLS0tKy0tLS0KKyAxMCB8IDIw CisoMSByb3cpCisKKy0tIHNob3cgdmFyaWFibGUKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKyAgICAg c3ZhciAgICAgIAorLS0tLS0tLS0tLS0tLS0tCisgKDEwMCwyMDAsMzAwKQorKDEgcm93KQorCitT RUxFQ1QgcHVibGljLnN2YXIuYzsKKyAgYyAgCistLS0tLQorIDMwMAorKDEgcm93KQorCitTRUxF Q1QgKHB1YmxpYy5zdmFyKS4qOworICBhICB8ICBiICB8ICBjICAKKy0tLS0tKy0tLS0tKy0tLS0t CisgMTAwIHwgMjAwIHwgMzAwCisoMSByb3cpCisKKy0tIHRoZSB2YXJpYWJsZSBpcyBzaGFkb3dl ZCwgcmFpc2UgZXJyb3IKK1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00gcHVibGljLnN2YXI7CitF UlJPUjogIGNvbHVtbiBzdmFyLmMgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUIHB1Ymxp Yy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhcjsKKyAgICAgICAgICAgICAgIF4KKy0tIGNhbiBiZSBm aXhlZCBieSBhbGlhcworU0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhciB4Owor ICBjICAKKy0tLS0tCisgMzAwCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7 CitEUk9QIFRBQkxFIHB1YmxpYy5zdmFyOworRFJPUCBUWVBFIHB1YmxpYy5zdmFyX3R5cGU7CitD UkVBVEUgVFlQRSBhYiBBUyAoYSBpbnRlZ2VyLCBiIGludGVnZXIpOworQ1JFQVRFIFZBUklBQkxF IHZfYWIgQVMgYWI7CitDUkVBVEUgVEFCTEUgdl9hYiAoYSBpbnRlZ2VyLCBiIGludGVnZXIpOwor SU5TRVJUIElOVE8gdl9hYiBWQUxVRVMoMTAsMjApOworLS0gd2Ugc2hvdWxkIHNlZSB0YWJsZQor U0VMRUNUIHZfYWIuYSBGUk9NIHZfYWI7CisgYSAgCistLS0tCisgMTAKKygxIHJvdykKKworQ1JF QVRFIFNDSEVNQSB2X2FiOworQ1JFQVRFIFZBUklBQkxFIHZfYWIuYSBBUyBpbnRlZ2VyOworLS0g d2Ugc2hvdWxkIHNlZSB0YWJsZQorU0VMRUNUIHZfYWIuYSBGUk9NIHZfYWI7CisgYSAgCistLS0t CisgMTAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2X2FiOworRFJPUCBUQUJMRSB2X2FiOwor RFJPUCBUWVBFIGFiOworQ1JFQVRFIFRZUEUgdF9hbV90eXBlIEFTIChiIGludCk7CitDUkVBVEUg U0NIRU1BIHh4eF9hbTsKK1NFVCBzZWFyY2hfcGF0aCBUTyBwdWJsaWM7CitDUkVBVEUgVkFSSUFC TEUgeHh4X2FtIEFTIHRfYW1fdHlwZTsKK0xFVCB4eHhfYW0gPSBST1coMTApOworLS0gc2hvdWxk IGJlIG9rCitTRUxFQ1QgeHh4X2FtOworIHh4eF9hbSAKKy0tLS0tLS0tCisgKDEwKQorKDEgcm93 KQorCitDUkVBVEUgVkFSSUFCTEUgeHh4X2FtLmIgQVMgaW50OworTEVUIDoiREJOQU1FIi54eHhf YW0uYiA9IDIwOworLS0gc2hvdWxkIGJlIHN0aWxsIG9rCitTRUxFQ1QgeHh4X2FtOworIHh4eF9h bSAKKy0tLS0tLS0tCisgKDEwKQorKDEgcm93KQorCistLSBzaG91bGQgZmFpbCwgdGhlIHJlZmVy ZW5jZSBzaG91bGQgYmUgYW1iaWd1b3VzCitTRUxFQ1QgeHh4X2FtLmI7CitFUlJPUjogIHNlc3Np b24gdmFyaWFibGUgcmVmZXJlbmNlICJ4eHhfYW0uYiIgaXMgYW1iaWd1b3VzCitMSU5FIDE6IFNF TEVDVCB4eHhfYW0uYjsKKyAgICAgICAgICAgICAgIF4KKy0tIGVuaGFuY2VkIHJlZmVyZW5jZXMg c2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLnh4eF9hbS5iOworIGIgIAorLS0tLQorIDEwCiso MSByb3cpCisKK1NFTEVDVCA6IkRCTkFNRSIueHh4X2FtLmI7CisgYiAgCistLS0tCisgMjAKKygx IHJvdykKKworQ1JFQVRFIFRBQkxFIHh4eF9hbShiICBpbnQpOworSU5TRVJUIElOVE8geHh4X2Ft IFZBTFVFUygxMCk7CistLSB3ZSBzaG91bGQgc2VlIHRhYmxlCitTRUxFQ1QgeHh4X2FtLmIgRlJP TSB4eHhfYW07CisgYiAgCistLS0tCisgMTAKKygxIHJvdykKKworU0VMRUNUIHguYiBGUk9NIHh4 eF9hbSB4OworIGIgIAorLS0tLQorIDEwCisoMSByb3cpCisKK0RST1AgVEFCTEUgeHh4X2FtOwor RFJPUCBWQVJJQUJMRSBwdWJsaWMueHh4X2FtOworRFJPUCBWQVJJQUJMRSB4eHhfYW0uYjsKK0RS T1AgU0NIRU1BIHh4eF9hbTsKK0NSRUFURSBTQ0hFTUEgOiJEQk5BTUUiOworQ1JFQVRFIFZBUklB QkxFIDoiREJOQU1FIi46IkRCTkFNRSIuOiJEQk5BTUUiIEFTIHRfYW1fdHlwZTsKK0NSRUFURSBW QVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUiLmIgQVMgaW50OworU0VUIHNlYXJjaF9wYXRoIFRP IDoiREJOQU1FIjsKKy0tIHNob3VsZCBiZSBhbWJpZ3VvdXMKK1NFTEVDVCA6IkRCTkFNRSIuYjsK K0VSUk9SOiAgc2Vzc2lvbiB2YXJpYWJsZSByZWZlcmVuY2UgInJlZ3Jlc3Npb24uYiIgaXMgYW1i aWd1b3VzCitMSU5FIDE6IFNFTEVDVCAicmVncmVzc2lvbiIuYjsKKyAgICAgICAgICAgICAgIF4K Ky0tIHNob3VsZCBiZSBhbWJpZ3VvdXMgdG9vCitTRUxFQ1QgOiJEQk5BTUUiLjoiREJOQU1FIi5i OworRVJST1I6ICBzZXNzaW9uIHZhcmlhYmxlIHJlZmVyZW5jZSAicmVncmVzc2lvbi5yZWdyZXNz aW9uLmIiIGlzIGFtYmlndW91cworTElORSAxOiBTRUxFQ1QgInJlZ3Jlc3Npb24iLiJyZWdyZXNz aW9uIi5iOworICAgICAgICAgICAgICAgXgorQ1JFQVRFIFRBQkxFIDoiREJOQU1FIihiIGludCk7 CistLSBzaG91bGQgYmUgb2sKK1NFTEVDVCA6IkRCTkFNRSIuYiBGUk9NIDoiREJOQU1FIjsKKyBi IAorLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIDoiREJOQU1FIjsKK0RST1AgVkFSSUFCTEUg OiJEQk5BTUUiLjoiREJOQU1FIi5iOworRFJPUCBWQVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUi LjoiREJOQU1FIjsKK0RST1AgU0NIRU1BIDoiREJOQU1FIjsKK1JFU0VUIHNlYXJjaF9wYXRoOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsCmluZGV4IDQyZGZiOTVh MDIuLmRiNWJhMTc2ZGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nlc3Npb25f dmFyaWFibGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxl cy5zcWwKQEAgLTU5LDMgKzU5LDYyOCBAQCBEUk9QIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjE7CiBE Uk9QIFNDSEVNQSBzdmFydGVzdDsKIAogRFJPUCBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7 CisKKy0tIGNoZWNrIGFjY2VzcyByaWdodHMKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfbm9vd25lcjsK KworQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5D VElPTiBzcWxmeChpbnQpCitSRVRVUk5TIGludCBBUyAkJCBTRUxFQ1QgJDEgKyB2YXIxICQkIExB TkdVQUdFIHNxbDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc3FsZnhfc2QoaW50KQor UkVUVVJOUyBpbnQgQVMgJCQgU0VMRUNUICQxICsgdmFyMSAkJCBMQU5HVUFHRSBzcWwgU0VDVVJJ VFkgREVGSU5FUjsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcGxwZ3NxbGZ4KGludCkK K1JFVFVSTlMgaW50IEFTICQkIEJFR0lOIFJFVFVSTiAkMSArIHZhcjE7IEVORCAkJCBMQU5HVUFH RSBwbHBnc3FsOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwbHBnc3FsZnhfc2QoaW50 KQorUkVUVVJOUyBpbnQgQVMgJCQgQkVHSU4gUkVUVVJOICQxICsgdmFyMTsgRU5EICQkIExBTkdV QUdFIHBscGdzcWwgU0VDVVJJVFkgREVGSU5FUjsKKworTEVUIHZhcjEgPSAxMDsKKy0tIHNob3Vs ZCBiZSBvaworU0VMRUNUIHZhcjE7CitTRUxFQ1Qgc3FsZngoMjApOworU0VMRUNUIHNxbGZ4X3Nk KDIwKTsKK1NFTEVDVCBwbHBnc3FsZngoMjApOworU0VMRUNUIHBscGdzcWxmeF9zZCgyMCk7CisK Ky0tIHNob3VsZCBmYWlsCitTRVQgUk9MRSBUTyByZWdyZXNzX25vb3duZXI7CisKK1NFTEVDVCB2 YXIxOworU0VMRUNUIHNxbGZ4KDIwKTsKK1NFTEVDVCBwbHBnc3FsZngoMjApOworCistLSBzaG91 bGQgYmUgb2sKK1NFTEVDVCBzcWxmeF9zZCgyMCk7CitTRUxFQ1QgcGxwZ3NxbGZ4X3NkKDIwKTsK KworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0dSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2YXIxIFRP IHJlZ3Jlc3Nfbm9vd25lcjsKKworLS0gc2hvdWxkIGJlIG9rCitTRVQgUk9MRSBUTyByZWdyZXNz X25vb3duZXI7CisKK1NFTEVDVCB2YXIxOworU0VMRUNUIHNxbGZ4KDIwKTsKK1NFTEVDVCBwbHBn c3FsZngoMjApOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWQVJJQUJMRSB2YXIxOwor RFJPUCBGVU5DVElPTiBzcWxmeChpbnQpOworRFJPUCBGVU5DVElPTiBwbHBnc3FsZngoaW50KTsK K0RST1AgRlVOQ1RJT04gc3FsZnhfc2QoaW50KTsKK0RST1AgRlVOQ1RJT04gcGxwZ3NxbGZ4X3Nk KGludCk7CisKK0RST1AgUk9MRSByZWdyZXNzX25vb3duZXI7CisKKy0tIHVzZSB2YXJpYWJsZXMg aW5zaWRlIHZpZXdzCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworCistLSB1c2Ug dmFyaWFibGVzIGluIHZpZXdzCitDUkVBVEUgVklFVyB0ZXN0X3ZpZXcgQVMgU0VMRUNUIENPQUxF U0NFKHZhcjEgKyB2LCAwKSBBUyByZXN1bHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwyKSBnKHYp OworU0VMRUNUICogRlJPTSB0ZXN0X3ZpZXc7CitMRVQgdmFyMSA9IDMuMTQ7CitTRUxFQ1QgKiBG Uk9NIHRlc3RfdmlldzsKKworLS0gc3RhcnQgYSBuZXcgc2Vzc2lvbgorXGMKKworU0VMRUNUICog RlJPTSB0ZXN0X3ZpZXc7CitMRVQgdmFyMSA9IDMuMTQ7CitTRUxFQ1QgKiBGUk9NIHRlc3Rfdmll dzsKKworLS0gc2hvdWxkIGZhaWwsIGRlcGVuZGVuY3kKK0RST1AgVkFSSUFCTEUgdmFyMTsKKwor LS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKKworQ1JFQVRFIFZB UklBQkxFIHZhcjEgdGV4dDsKK0NSRUFURSBWQVJJQUJMRSB2YXIyIHRleHQ7CisKKy0tIHVzZSB2 YXJpYWJsZXMgaW4gU1FMIGZ1bmN0aW9ucworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc3Fs ZngxKHZhcmNoYXIpCitSRVRVUk5TIHZhcmNoYXIgQVMgJCQgU0VMRUNUIHZhcjEgfHwgJywgJyB8 fCAkMSAkJCBMQU5HVUFHRSBzcWw7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHNxbGZ4 MiggdmFyY2hhcikKK1JFVFVSTlMgdmFyY2hhciBBUyAkJCBTRUxFQ1QgdmFyMiB8fCAnLCAnIHx8 ICQxICQkIExBTkdVQUdFIHNxbDsKKworTEVUIHZhcjEgPSAnc3RyMSc7CitMRVQgdmFyMiA9ICdz dHIyJzsKKworU0VMRUNUIHNxbGZ4MShzcWxmeDIoJ0hlbGxvJykpOworCistLSBpbmxpbmluZyBp cyBibG9ja2VkCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCBzcWxmeDEoc3Fs ZngyKCdIZWxsbycpKTsKKworRFJPUCBGVU5DVElPTiBzcWxmeDEodmFyY2hhcik7CitEUk9QIEZV TkNUSU9OIHNxbGZ4Mih2YXJjaGFyKTsKK0RST1AgVkFSSUFCTEUgdmFyMTsKK0RST1AgVkFSSUFC TEUgdmFyMjsKKworLS0gYWNjZXNzIGZyb20gY2FjaGVkIHBsYW5zIHNob3VsZCB3b3JrCitDUkVB VEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBwbHBnc3FsZngoKQorUkVUVVJOUyBudW1lcmljIEFTICQkIEJFR0lOIFJFVFVSTiB2YXIxOyBF TkQgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworc2V0IHBsYW5fY2FjaGVfbW9kZSBUTyBmb3JjZV9n ZW5lcmljX3BsYW47CisKK0xFVCB2YXIxID0gMy4xNDsKK1NFTEVDVCBwbHBnc3FsZngoKTsKK0xF VCB2YXIxID0gMy4xNCAqIDI7CitTRUxFQ1QgcGxwZ3NxbGZ4KCk7CisKK0RST1AgVkFSSUFCTEUg dmFyMTsKKworLS0gZGVwZW5kZW5jeSAocGxhbiBpbnZhbGlkYXRpb24pIHNob3VsZCB3b3JrCitD UkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworCitMRVQgdmFyMSA9IDMuMTQgKiAzOwor U0VMRUNUIHBscGdzcWxmeCgpOworTEVUIHZhcjEgPSAzLjE0ICogNDsKK1NFTEVDVCBwbHBnc3Fs ZngoKTsKKworRFJPUCBWQVJJQUJMRSB2YXIxOworRFJPUCBGVU5DVElPTiBwbHBnc3FsZngoKTsK Kworc2V0IHBsYW5fY2FjaGVfbW9kZSBUTyBERUZBVUxUOworCistLSB1c2FnZSBMRVQgc3RhdGVt ZW50IGluIHBscGdzcWwgc2hvdWxkIHdvcmsKK0NSRUFURSBWQVJJQUJMRSB2YXIxIGludDsKK0NS RUFURSBWQVJJQUJMRSB2YXIyIG51bWVyaWNbXTsKKworRE8gJCQKK0JFR0lOCisgIExFVCB2YXIy ID0gJ3t9Jzo6aW50W107CisgIEZPUiBpIElOIDEuLjEwCisgIExPT1AKKyAgICBMRVQgdmFyMSA9 IGk7CisgICAgTEVUIHZhcjJbdmFyMV0gPSBpOworICBFTkQgTE9PUDsKKyAgUkFJU0UgTk9USUNF ICdyZXN1bHQgYXJyYXk6ICUnLCB2YXIyOworRU5EOworJCQ7CisKK0RST1AgVkFSSUFCTEUgdmFy MTsKK0RST1AgVkFSSUFCTEUgdmFyMjsKKworLS0gQ0FMTCBzdGF0ZW1lbnQgaXMgbm90IHN1cHBv cnRlZCB5ZXQKKy0tIHJlcXVpcmVzIGRpcmVjdCBhY2Nlc3MgdG8gc2Vzc2lvbiB2YXJpYWJsZSBm cm9tIGV4cHJlc3Npb24gZXhlY3V0b3IKK0NSRUFURSBWQVJJQUJMRSB2IGludDsKKworQ1JFQVRF IFBST0NFRFVSRSBwKGFyZyBpbnQpIEFTICQkIEJFR0lOIFJBSVNFIE5PVElDRSAnJScsIGFyZzsg RU5EICQkIExBTkdVQUdFIHBscGdzcWw7CisKKy0tIHNob3VsZCBub3QgY3Jhc2ggKGJ1dCBpcyBu b3Qgc3VwcG9ydGVkIHlldCkKK0NBTEwgcCh2KTsKKworRE8gJCQgQkVHSU4gQ0FMTCBwKHYpOyBF TkQgJCQ7CisKK0RST1AgUFJPQ0VEVVJFIHAoaW50KTsKK0RST1AgVkFSSUFCTEUgdjsKKworLS0g dGVzdCBzZWFyY2ggcGF0aAorQ1JFQVRFIFNDSEVNQSBzdmFydGVzdDsKK0NSRUFURSBWQVJJQUJM RSBzdmFydGVzdC52YXIxIEFTIG51bWVyaWM7CisKKy0tIHNob3VsZCBmYWlsCitMRVQgdmFyMSA9 IHBpKCk7CitTRUxFQ1QgdmFyMTsKKworLS0gc2hvdWxkIGJlIG9rCitMRVQgc3ZhcnRlc3QudmFy MSA9IHBpKCk7CitTRUxFQ1Qgc3ZhcnRlc3QudmFyMTsKKworU0VUIHNlYXJjaF9wYXRoIFRPIHN2 YXJ0ZXN0OworCistLSBzaG91bGQgYmUgb2sKK0xFVCB2YXIxID0gcGkoKSArIDEwOworU0VMRUNU IHZhcjE7CisKK1JFU0VUIHNlYXJjaF9wYXRoOworRFJPUCBTQ0hFTUEgc3ZhcnRlc3QgQ0FTQ0FE RTsKKworQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgdGV4dDsKKworLS0gdmFyaWFibGVzIGNhbiBi ZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0aW9uCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBS RUFEIE9OTFk7CitMRVQgdmFyMSA9ICdoZWxsbyc7CitDT01NSVQ7CisKK1NFTEVDVCB2YXIxOwor CitEUk9QIFZBUklBQkxFIHZhcjE7CisKKy0tIHRlc3Qgb2YgZG9tYWlucworQ1JFQVRFIERPTUFJ TiBpbnRfZG9tYWluIEFTIGludCBOT1QgTlVMTCBDSEVDSyAoVkFMVUUgPiAxMDApOworQ1JFQVRF IFZBUklBQkxFIHZhcjEgQVMgaW50X2RvbWFpbjsKKworLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCB2 YXIxOworCistLSBzaG91bGQgYmUgb2sKK0xFVCB2YXIxID0gMTAwMDsKK1NFTEVDVCB2YXIxOwor CistLSBzaG91bGQgZmFpbAorTEVUIHZhcjEgPSAxMDsKKworLS0gc2hvdWxkIGZhaWwKK0xFVCB2 YXIxID0gTlVMTDsKKworLS0gbm90ZSAtIGRvbWFpbiBkZWZhdWx0cyBhcmUgbm90IHN1cHBvcnRl ZCB5ZXQgKGxpa2UgUExwZ1NRTCkKKworRFJPUCBWQVJJQUJMRSB2YXIxOworRFJPUCBET01BSU4g aW50X2RvbWFpbjsKKworLS0gdGhlIGV4cHJlc3Npb24gc2hvdWxkIHJlbWFpbiAidW5rbm93biIK K0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludDRtdWx0aXJhbmdlW107CistLSBzaG91bGQgYmUg b2sKK0xFVCB2YXIxID0gTlVMTDsKK0xFVCB2YXIxID0gJ3sie1syLDgpLFsxMSwxNCl9Iiwie1s1 LDgpLFsxMiwxNCl9In0nOworTEVUIHZhcjFbMl0gPSAne1s1LDgpLFsxMiwxMDApfSc7CitTRUxF Q1QgdmFyMTsKKworLS1JdCBzaG91bGQgd29yayBpbiBwbHBnc3FsIHRvbworRE8gJCQKK0JFR0lO CisgIExFVCB2YXIxID0gTlVMTDsKKyAgTEVUIHZhcjEgPSAneyJ7WzIsOCksWzExLDE0KX0iLCJ7 WzUsOCksWzEyLDE0KX0ifSc7CisgIExFVCB2YXIxWzJdID0gJ3tbNSw4KSxbMTIsMTAwKX0nOwor CisgIFJBSVNFIE5PVElDRSAnJScsIHZhcjE7CitFTkQ7CiskJDsKKworRFJPUCBWQVJJQUJMRSB2 YXIxOworCitDUkVBVEUgU0NIRU1BIHN2YXJ0ZXN0IENSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGlu dCBDUkVBVEUgVEFCTEUgZm9vKGEgaW50KTsKK0xFVCBzdmFydGVzdC52YXIxID0gMTAwOworU0VM RUNUIHN2YXJ0ZXN0LnZhcjE7CisKK1NFVCBzZWFyY2hfcGF0aCB0byBwdWJsaWMsIHN2YXJ0ZXN0 OworCitTRUxFQ1QgdmFyMTsKKworRFJPUCBTQ0hFTUEgc3ZhcnRlc3QgQ0FTQ0FERTsKKworQ1JF QVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworQ1JFQVRFIFZBUklBQkxFIHZhcjIgQVMgaW50W107 CisKK0xFVCB2YXIxID0gMjsKK0xFVCB2YXIyID0gJ3t9Jzo6aW50W107CisKK0xFVCB2YXIyW3Zh cjFdID0gMDsKKworU0VMRUNUIHZhcjI7CisKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKKwor Q1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworQ1JFQVRFIFZBUklBQkxFIHZhcjIgQVMgaW50 W107CisKK0xFVCB2YXIxID0gMjsKK0xFVCB2YXIyID0gJ3t9Jzo6aW50W107CisKK1NFTEVDVCB2 YXIyOworCitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CisKKy0tIHRoZSBMRVQgc3RhdGVtZW50 IHNob3VsZCBiZSBkaXNhbGxvd2VkIGluIENURQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50 OworV0lUSCB4IEFTIChMRVQgdmFyMSA9IDEwMCkgU0VMRUNUICogRlJPTSB4OworCistLSBzaG91 bGQgYmUgb2sKK0xFVCB2YXIxID0gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpOworCistLSBzaG91bGQg ZmFpbAorTEVUIHZhcjEgPSBnZW5lcmF0ZV9zZXJpZXMoMSwgMik7CitMRVQgdmFyMSA9IGdlbmVy YXRlX3NlcmllcygxLCAwKTsKKworRFJPUCBWQVJJQUJMRSB2YXIxOworCistLSBjb21wb3NpdGUg dmFyaWFibGVzCitDUkVBVEUgVFlQRSBzdl94eXogQVMgKHggaW50LCB5IGludCwgeiBudW1lcmlj KDEwLDIpKTsKKworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJQUJM RSB2MiBBUyBzdl94eXo7CisKK0xFVCB2MSA9ICgxLCAyLCAzLjE0KTsKK0xFVCB2MiA9ICgxMCwg MjAsIDMuMTQgKiAxMCk7CisKKy0tIHNob3VsZCB3b3JrIHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJl ZCBjYXN0cworTEVUIHYxID0gKDEsIDIsIDMpOworCitTRUxFQ1QgdjE7CitTRUxFQ1QgdjI7CitT RUxFQ1QgKHYxKS4qOworU0VMRUNUICh2MikuKjsKKworU0VMRUNUIHYxLnggKyB2MS56OworU0VM RUNUIHYyLnggKyB2Mi56OworCistLSBhY2Nlc3MgdG8gY29tcG9zaXRlIGZpZWxkcyBzaG91bGQg YmUgc2FmZSB0b28KK0NSRUFURSBST0xFIHJlZ3Jlc3NfdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJP TEUgVE8gcmVncmVzc192YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgZmFpbAorU0VMRUNUIHYy Lng7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZB UklBQkxFIHYyOworCitEUk9QIFJPTEUgcmVncmVzc192YXJfdGVzdF9yb2xlOworCitDUkVBVEUg VFlQRSB0MSBBUyAoYSBpbnQsIGIgbnVtZXJpYywgYyB0ZXh0KTsKKworQ1JFQVRFIFZBUklBQkxF IHYxIEFTIHQxOworTEVUIHYxID0gKDEsIHBpKCksICdoZWxsbycpOworU0VMRUNUIHYxOworTEVU IHYxLmIgPSAxMC4yMjIyOworU0VMRUNUIHYxOworCistLSBzaG91bGQgZmFpbCwgYXR0cmlidXRl IGRvZXNuJ3QgZXhpc3QKK0xFVCB2MS54ID0gMTA7CisKKy0tIHNob3VsZCBmYWlsLCBkb24ndCBh bGxvdyBtdWx0aSBjb2x1bW4gcXVlcnkKK0xFVCB2MSA9IChOVUxMOjp0MSkuKjsKKworLS0gYWxs b3cgRFJPUCBvciBBREQgQVRUUklCVVRFIG9uIGNvbXBvc2l0ZSB0eXBlcworLS0gc2hvdWxkIGJl IG9rCitBTFRFUiBUWVBFIHQxIERST1AgQVRUUklCVVRFIGM7CitTRUxFQ1QgdjE7CisKKy0tIHNo b3VsZCBiZSBvaworQUxURVIgVFlQRSB0MSBBREQgQVRUUklCVVRFIGMgaW50OworU0VMRUNUIHYx OworCitMRVQgdjEgPSAoMTAsIDEwLjMsIDIwKTsKK1NFTEVDVCB2MTsKKworLS0gc2hvdWxkIGJl IG9rCitBTFRFUiBUWVBFIHQxIERST1AgQVRUUklCVVRFIGI7CitTRUxFQ1QgdjE7CisKKy0tIHNo b3VsZCBmYWlsLCBkaXNhbGxvdyBkYXRhIHR5cGUgY2hhbmdlCitBTFRFUiBUWVBFIHQxIEFMVEVS IEFUVFJJQlVURSBjIFRZUEUgaW50OworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBUWVBFIHQx OworCistLSB0aGUgdGFibGUgdHlwZSBjYW4gYmUgdXNlZCBhcyBjb21wb3NpdGUgdHlwZSB0b28K K0NSRUFURSBUQUJMRSBzdmFyX3Rlc3QoYSBpbnQsIGIgbnVtZXJpYywgYyBkYXRlKTsKK0NSRUFU RSBWQVJJQUJMRSB2YXIxIEFTIHN2YXJfdGVzdDsKKworTEVUIHZhcjEgPSAoMTAsIHBpKCksICcy MDIzLTA1LTI2Jyk7CitTRUxFQ1QgdmFyMTsKKworLS0gc2hvdWxkIGZhaWwgZHVlIGRlcGVuZGVu Y3kKK0FMVEVSIFRBQkxFIHN2YXJfdGVzdCBBTFRFUiBDT0xVTU4gYSBUWVBFIHRleHQ7CisKKy0t IHNob3VsZCBmYWlsCitEUk9QIFRBQkxFIHN2YXJfdGVzdDsKKworRFJPUCBWQVJJQUJMRSB2YXIx OworRFJPUCBUQUJMRSBzdmFyX3Rlc3Q7CisKKy0tIGFycmF5cyBhcmUgc3VwcG9ydGVkCitDUkVB VEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljW107CitMRVQgdmFyMSA9IEFSUkFZWzEuMSwyLjFd OworTEVUIHZhcjFbMV0gPSAxMC4xOworU0VMRUNUIHZhcjE7CisKKy0tIExFVCB0YXJnZXQgZG9l c24ndCBhbGxvdyBzcmYsIHNob3VsZCBmYWlsCitMRVQgdmFyMVtnZW5lcmF0ZV9zZXJpZXMoMSwz KV0gPSAxMDA7CisKK0RST1AgVkFSSUFCTEUgdmFyMTsKKworLS0gYXJyYXlzIGluc2lkZSBjb21w b3NpdGUKK0NSRUFURSBUWVBFIHQxIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NSRUFU RSBWQVJJQUJMRSB2YXIxIEFTIHQxOworTEVUIHZhcjEgPSAoMTAuMSwgQVJSQVlbMC4wLCAwLjBd KTsKK0xFVCB2YXIxLmEgPSAxMC4yOworU0VMRUNUIHZhcjE7CitMRVQgdmFyMS5iWzFdID0gMTAu MzsKK1NFTEVDVCB2YXIxOworCitEUk9QIFZBUklBQkxFIHZhcjE7CitEUk9QIFRZUEUgdDE7CisK Ky0tIEVuY291cmFnZSB1c2Ugb2YgcGFyYWxsZWwgcGxhbnMKK1NFVCBwYXJhbGxlbF9zZXR1cF9j b3N0ID0gMDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK1NFVCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy ID0gMjsKKworLS0gdGVzdCBvbiBxdWVyeSB3aXRoIHdvcmtlcnMKK0NSRUFURSBUQUJMRSBzdmFy X3Rlc3QoYSBpbnQpOworSU5TRVJUIElOVE8gc3Zhcl90ZXN0IFNFTEVDVCAqIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwMCk7CitBTkFMWVpFIHN2YXJfdGVzdDsKK0NSRUFURSBWQVJJQUJMRSB6 ZXJvIGludDsKK0xFVCB6ZXJvID0gMDsKKworLS0gcmVzdWx0IHNob3VsZCBiZSAxMDAKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHN2YXJfdGVzdCBXSEVSRSBhJTEwID0gemVybzsKKworLS0gcGFyYWxs ZWwgZXhlY3V0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgeWV0CitFWFBMQUlOIChDT1NUUyBPRkYpIFNF TEVDVCBjb3VudCgqKSBGUk9NIHN2YXJfdGVzdCBXSEVSRSBhJTEwID0gemVybzsKKworTEVUIHpl cm8gPSAoU0VMRUNUIGNvdW50KCopIEZST00gc3Zhcl90ZXN0KTsKKworLS0gcmVzdWx0IHNob3Vs ZCBiZSAxMDAwCitTRUxFQ1QgemVybzsKKworRFJPUCBWQVJJQUJMRSB6ZXJvOworRFJPUCBUQUJM RSBzdmFyX3Rlc3Q7CisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxl bF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VU IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CisKKy0tIHRoZSByZXN1bHQgb2Ygdmll dyBzaG91bGQgYmUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlIHRvbworQ1JFQVRFIFZBUklBQkxFIHZh cjEgQVMgaW50OworTEVUIHZhcjEgPSAxMDsKKworQ1JFQVRFIFZJRVcgdmFyMXZpZXcgQVMgU0VM RUNUIENPQUxFU0NFKHZhcjEsIDApIEFTIHJlc3VsdDsKKworU0VMRUNUICogRlJPTSB2YXIxdmll dzsKKworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5IFRPIG9uOworCitTRUxFQ1QgKiBGUk9NIHZh cjF2aWV3OworCitTRVQgZGVidWdfcGFyYWxsZWxfcXVlcnkgVE8gb2ZmOworCitEUk9QIFZJRVcg dmFyMXZpZXc7CitEUk9QIFZBUklBQkxFIHZhcjE7CisKK0NSRUFURSBWQVJJQUJMRSB2YXJpZCBp bnQ7CitDUkVBVEUgVEFCTEUgc3Zhcl90ZXN0KGlkIGludCwgdiBpbnQpOworCitMRVQgdmFyaWQg PSAxOworSU5TRVJUIElOVE8gc3Zhcl90ZXN0IFZBTFVFUyh2YXJpZCwgMTAwKTsKK1NFTEVDVCAq IEZST00gc3Zhcl90ZXN0OworVVBEQVRFIHN2YXJfdGVzdCBTRVQgdiA9IDIwMCBXSEVSRSBpZCA9 IHZhcmlkOworU0VMRUNUICogRlJPTSBzdmFyX3Rlc3Q7CitERUxFVEUgRlJPTSBzdmFyX3Rlc3Qg V0hFUkUgaWQgPSB2YXJpZDsKK1NFTEVDVCAqIEZST00gc3Zhcl90ZXN0OworCitEUk9QIFRBQkxF IHN2YXJfdGVzdDsKK0RST1AgVkFSSUFCTEUgdmFyaWQ7CisKKworLS0gdmlzaWJpbGl0eSBjaGVj aworLS0gdmFyaWFibGVzIHNob3VsZCBiZSBzaGFkb3dlZCBhbHdheXMKK0NSRUFURSBWQVJJQUJM RSB2YXIxIEFTIHRleHQ7CitTRUxFQ1QgdmFyMS5yZWxuYW1lIEZST00gcGdfY2xhc3MgdmFyMSBX SEVSRSB2YXIxLnJlbG5hbWUgPSAncGdfY2xhc3MnOworCitEUk9QIFZBUklBQkxFIHZhcjE7CisK K0NSRUFURSBUQUJMRSB4eHRhYihhdmFyIGludCk7CisKK0lOU0VSVCBJTlRPIHh4dGFiIFZBTFVF UygzMzMpOworCitDUkVBVEUgVFlQRSB4eHR5cGUgQVMgKGF2YXIgaW50KTsKKworQ1JFQVRFIFZB UklBQkxFIHh4dGFiIEFTIHh4dHlwZTsKKworSU5TRVJUIElOVE8geHh0YWIgVkFMVUVTKDEwKTsK KworLS0gaXQgaXMgYW1iaWd1b3VzLCBidXQgY29sdW1ucyBhcmUgcHJlZmVycmVkCitTRUxFQ1Qg eHh0YWIuYXZhciBGUk9NIHh4dGFiOworCistLSBzaG91bGQgYmUgb2sKK1NFTEVDVCBhdmFyIEZS T00geHh0YWI7CisKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuYXZhciBBUyBpbnQ7CisKKy0tIHNo b3VsZCBiZSBvaywgc2VlIHRoZSB0YWJsZQorU0VMRUNUIGF2YXIgRlJPTSB4eHRhYjsKKworLS0g c2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLmF2YXIgRlJPTSB4eHRhYjsKKworRFJPUCBWQVJJ QUJMRSB4eHRhYjsKKworU0VMRUNUIHh4dGFiLmF2YXIgRlJPTSB4eHRhYjsKKworRFJPUCBWQVJJ QUJMRSBwdWJsaWMuYXZhcjsKKworRFJPUCBUWVBFIHh4dHlwZTsKKworRFJPUCBUQUJMRSB4eHRh YjsKKworLS0gVGhlIHZhcmlhYmxlIGNhbiBiZSBzaGFkb3dlZCBieSB0YWJsZSBvciBieSBhbGlh cworQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJfdHlwZSBBUyAoYSBpbnQsIGIgaW50LCBjIGludCk7 CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgcHVibGljLnN2YXJfdHlwZTsKKworQ1JF QVRFIFRBQkxFIHB1YmxpYy5zdmFyKGEgaW50LCBiIGludCk7CisKK0lOU0VSVCBJTlRPIHB1Ymxp Yy5zdmFyIFZBTFVFUygxMCwgMjApOworCitMRVQgcHVibGljLnN2YXIgPSAoMTAwLCAyMDAsIDMw MCk7CisKKy0tIHNob3VsZCBiZSBvaworLS0gc2hvdyB0YWJsZQorU0VMRUNUICogRlJPTSBwdWJs aWMuc3ZhcjsKK1NFTEVDVCBzdmFyLmEgRlJPTSBwdWJsaWMuc3ZhcjsKK1NFTEVDVCBzdmFyLiog RlJPTSBwdWJsaWMuc3ZhcjsKKworLS0gc2hvdyB2YXJpYWJsZQorU0VMRUNUIHB1YmxpYy5zdmFy OworU0VMRUNUIHB1YmxpYy5zdmFyLmM7CitTRUxFQ1QgKHB1YmxpYy5zdmFyKS4qOworCistLSB0 aGUgdmFyaWFibGUgaXMgc2hhZG93ZWQsIHJhaXNlIGVycm9yCitTRUxFQ1QgcHVibGljLnN2YXIu YyBGUk9NIHB1YmxpYy5zdmFyOworCistLSBjYW4gYmUgZml4ZWQgYnkgYWxpYXMKK1NFTEVDVCBw dWJsaWMuc3Zhci5jIEZST00gcHVibGljLnN2YXIgeDsKKworU0VMRUNUIHN2YXIuYSBGUk9NIHB1 YmxpYy5zdmFyOworU0VMRUNUIHN2YXIuKiBGUk9NIHB1YmxpYy5zdmFyOworCistLSBzaG93IHZh cmlhYmxlCitTRUxFQ1QgcHVibGljLnN2YXI7CitTRUxFQ1QgcHVibGljLnN2YXIuYzsKK1NFTEVD VCAocHVibGljLnN2YXIpLio7CisKKy0tIHRoZSB2YXJpYWJsZSBpcyBzaGFkb3dlZCwgcmFpc2Ug ZXJyb3IKK1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00gcHVibGljLnN2YXI7CisKKy0tIGNhbiBi ZSBmaXhlZCBieSBhbGlhcworU0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhciB4 OworCitEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyOworRFJPUCBUQUJMRSBwdWJsaWMuc3ZhcjsK K0RST1AgVFlQRSBwdWJsaWMuc3Zhcl90eXBlOworCitDUkVBVEUgVFlQRSBhYiBBUyAoYSBpbnRl Z2VyLCBiIGludGVnZXIpOworCitDUkVBVEUgVkFSSUFCTEUgdl9hYiBBUyBhYjsKKworQ1JFQVRF IFRBQkxFIHZfYWIgKGEgaW50ZWdlciwgYiBpbnRlZ2VyKTsKK0lOU0VSVCBJTlRPIHZfYWIgVkFM VUVTKDEwLDIwKTsKKworLS0gd2Ugc2hvdWxkIHNlZSB0YWJsZQorU0VMRUNUIHZfYWIuYSBGUk9N IHZfYWI7CisKK0NSRUFURSBTQ0hFTUEgdl9hYjsKKworQ1JFQVRFIFZBUklBQkxFIHZfYWIuYSBB UyBpbnRlZ2VyOworCistLSB3ZSBzaG91bGQgc2VlIHRhYmxlCitTRUxFQ1Qgdl9hYi5hIEZST00g dl9hYjsKKworRFJPUCBWQVJJQUJMRSB2X2FiOworRFJPUCBUQUJMRSB2X2FiOworRFJPUCBUWVBF IGFiOworCitDUkVBVEUgVFlQRSB0X2FtX3R5cGUgQVMgKGIgaW50KTsKK0NSRUFURSBTQ0hFTUEg eHh4X2FtOworCitTRVQgc2VhcmNoX3BhdGggVE8gcHVibGljOworCitDUkVBVEUgVkFSSUFCTEUg eHh4X2FtIEFTIHRfYW1fdHlwZTsKK0xFVCB4eHhfYW0gPSBST1coMTApOworCistLSBzaG91bGQg YmUgb2sKK1NFTEVDVCB4eHhfYW07CisKK0NSRUFURSBWQVJJQUJMRSB4eHhfYW0uYiBBUyBpbnQ7 CitMRVQgOiJEQk5BTUUiLnh4eF9hbS5iID0gMjA7CisKKy0tIHNob3VsZCBiZSBzdGlsbCBvawor U0VMRUNUIHh4eF9hbTsKKworLS0gc2hvdWxkIGZhaWwsIHRoZSByZWZlcmVuY2Ugc2hvdWxkIGJl IGFtYmlndW91cworU0VMRUNUIHh4eF9hbS5iOworCistLSBlbmhhbmNlZCByZWZlcmVuY2VzIHNo b3VsZCBiZSBvaworU0VMRUNUIHB1YmxpYy54eHhfYW0uYjsKK1NFTEVDVCA6IkRCTkFNRSIueHh4 X2FtLmI7CisKK0NSRUFURSBUQUJMRSB4eHhfYW0oYiAgaW50KTsKK0lOU0VSVCBJTlRPIHh4eF9h bSBWQUxVRVMoMTApOworCistLSB3ZSBzaG91bGQgc2VlIHRhYmxlCitTRUxFQ1QgeHh4X2FtLmIg RlJPTSB4eHhfYW07CitTRUxFQ1QgeC5iIEZST00geHh4X2FtIHg7CisKK0RST1AgVEFCTEUgeHh4 X2FtOworRFJPUCBWQVJJQUJMRSBwdWJsaWMueHh4X2FtOworRFJPUCBWQVJJQUJMRSB4eHhfYW0u YjsKK0RST1AgU0NIRU1BIHh4eF9hbTsKKworQ1JFQVRFIFNDSEVNQSA6IkRCTkFNRSI7CisKK0NS RUFURSBWQVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUiLjoiREJOQU1FIiBBUyB0X2FtX3R5cGU7 CitDUkVBVEUgVkFSSUFCTEUgOiJEQk5BTUUiLjoiREJOQU1FIi5iIEFTIGludDsKKworU0VUIHNl YXJjaF9wYXRoIFRPIDoiREJOQU1FIjsKKworLS0gc2hvdWxkIGJlIGFtYmlndW91cworU0VMRUNU IDoiREJOQU1FIi5iOworCistLSBzaG91bGQgYmUgYW1iaWd1b3VzIHRvbworU0VMRUNUIDoiREJO QU1FIi46IkRCTkFNRSIuYjsKKworQ1JFQVRFIFRBQkxFIDoiREJOQU1FIihiIGludCk7CisKKy0t IHNob3VsZCBiZSBvaworU0VMRUNUIDoiREJOQU1FIi5iIEZST00gOiJEQk5BTUUiOworCitEUk9Q IFRBQkxFIDoiREJOQU1FIjsKKworRFJPUCBWQVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUiLmI7 CitEUk9QIFZBUklBQkxFIDoiREJOQU1FIi46IkRCTkFNRSIuOiJEQk5BTUUiOworRFJPUCBTQ0hF TUEgOiJEQk5BTUUiOworCitSRVNFVCBzZWFyY2hfcGF0aDsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggODM3ZTViODNhMy4uYmMzZGJkNzI2MCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTE0OTQsNiArMTQ5NCw3IEBAIExhcmdlT2JqZWN0RGVzYwogTGF0Y2gKIExhdW5jaGVy TGFzdFN0YXJ0VGltZXNFbnRyeQogTGVycEZ1bmMKK0xldFN0bXQKIExleERlc2NyCiBMZXhlbWVF bnRyeQogTGV4ZW1lSGFzaEtleQpAQCAtMjU5MCw2ICsyNTkxLDcgQEAgU2VyaWFsaXplZFRyYW5z YWN0aW9uU3RhdGUKIFNlc3Npb24KIFNlc3Npb25CYWNrdXBTdGF0ZQogU2Vzc2lvbkVuZFR5cGUK K1Nlc3Npb25WYXJpYWJsZVZhbHVlCiBTZXRDb25zdHJhaW50U3RhdGUKIFNldENvbnN0cmFpbnRT dGF0ZURhdGEKIFNldENvbnN0cmFpbnRUcmlnZ2VyRGF0YQpAQCAtMjc4Miw2ICsyNzg0LDkgQEAg U3VwcG9ydFJlcXVlc3RSb3dzCiBTdXBwb3J0UmVxdWVzdFNlbGVjdGl2aXR5CiBTdXBwb3J0UmVx dWVzdFNpbXBsaWZ5CiBTdXBwb3J0UmVxdWVzdFdGdW5jTW9ub3RvbmljCitTVmFyaWFibGUKK1NW YXJpYWJsZURhdGEKK1NWYXJpYWJsZVN0YXRlCiBTeW4KIFN5bmNPcHMKIFN5bmNSZXBDb25maWdE YXRhCi0tIAoyLjQ1LjIKCg== --=-DQq/vrD+rFBJ6zCltjUS--