Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nkP20-0003FI-H2 for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Apr 2022 11:43:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nkP1y-0008CF-JI for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Apr 2022 11:43:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nkP1y-0008BR-1L for pgsql-hackers@lists.postgresql.org; Fri, 29 Apr 2022 11:43:26 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nkP1p-0003hw-VQ for pgsql-hackers@lists.postgresql.org; Fri, 29 Apr 2022 11:43:25 +0000 Received: by mail-ed1-x52d.google.com with SMTP id y21so8770790edo.2 for ; Fri, 29 Apr 2022 04:43:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=9VCjM0yKguXZzH+sqQ2rQoR3cu3CFmgY9VSGWkDH/w0=; b=OGUF5M32rf0eoztspTc2Y8Q1yplOjQ56m8HkEx4DW4v8HoYiqp3SZd5ymYq98yLLLP E7DGVgLQoFcYU91HIZZEzZw6k3H9DUslrpm7fDQNBJh01j5GrC6VNiaWnSmm98Itri6J 8Yel2QidMgUqYt8OpDvm1pYmGSWKL5hIXb/agVJnyqrPmsulbbk7je+usEB/VXpdMiCF auBw6k4GFlGRUJbLi0drOn49yhhjOUsl4ZVlLM13JIQ6aKtWSsDln5rw5YCfSoSHKeyY Xb4Qf2tJQS2xh7hp7q7SoBrG2d+wRMxPqVoqJ2QIXLbP7rhlGGsEsfaOZgHymX6mtXAJ jZXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=9VCjM0yKguXZzH+sqQ2rQoR3cu3CFmgY9VSGWkDH/w0=; b=hZh5vUn7azP1o70Eq+Wx6l63ed0pUvkEdAKdQvbMBs74AO2nbEHmlrsQCdnwD7cgwr M1jd4WM2183mQJ3kbdCJQyLy9h9MwRxvnyIhVuDlzcVctEthviaRxQ+/qeAAJ/HTNP3d JnxuZ42wHsJk3n5K28HEKwwu+ZmGMDNOSPS1ZE2acQ1DdMugBgceYYQ3K33Gqmvkn/Cs hNtI0ngtyYKA20e1iQpytnWeF/jqWe6191IQVQ226DUGG3Xl5iq6q7aSw16eifiU53Sm PpnQxL//r6EM4jC9OwFDOw1Y8wjKUwBgPJKlegbpY+/MaywYidb9XWuoM2FDWpUbrcH8 E/tQ== X-Gm-Message-State: AOAM530ZVCkul4QOt80F9OuyMhFI4jm9iomqicNhxDOd3TYklfR7oji0 MSsPSOnwqMFDFK2YZ75LTox+sHBCQSetpKTQNJ4= X-Google-Smtp-Source: ABdhPJx+wvjh8FLUpQH6oRXp5hLkYjnEBYE97nhQLIExI82wBA7/4kXwsH3oJSCkg2YzL1PVZa7L1hHq17VA6v4yFhU= X-Received: by 2002:a05:6402:294e:b0:425:f016:24e7 with SMTP id ed14-20020a056402294e00b00425f01624e7mr24512319edb.111.1651232596682; Fri, 29 Apr 2022 04:43:16 -0700 (PDT) MIME-Version: 1.0 References: <00afeb42-19b3-47a6-821e-e78d366eb0b0@www.fastmail.com> In-Reply-To: From: vignesh C Date: Fri, 29 Apr 2022 17:12:59 +0530 Message-ID: Subject: Re: Skipping schema changes in publication To: "osumi.takamichi@fujitsu.com" Cc: Amit Kapila , Euler Taveira , Peter Eisentraut , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000005e543d05ddc98c75" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005e543d05ddc98c75 Content-Type: text/plain; charset="UTF-8" On Thu, Apr 28, 2022 at 4:50 PM osumi.takamichi@fujitsu.com wrote: > > On Wednesday, April 27, 2022 9:50 PM vignesh C wrote: > > Thanks for the comments, the attached v3 patch has the changes for the same. > Hi > > Thank you for updating the patch. Several minor comments on v3. > > (1) commit message > > The new syntax allows specifying schemas. For example: > CREATE PUBLICATION pub1 FOR ALL TABLES EXCEPT TABLE t1,t2; > OR > ALTER PUBLICATION pub1 ADD EXCEPT TABLE t1,t2; > > We have above sentence, but it looks better > to make the description a bit more accurate. > > Kindly change > From : > "The new syntax allows specifying schemas" > To : > "The new syntax allows specifying excluded relations" > > Also, kindly change "OR" to "or", > because this description is not syntax. Slightly reworded and modified > (2) publication_add_relation > > @@ -396,6 +400,9 @@ publication_add_relation(Oid pubid, PublicationRelInfo *pri, > ObjectIdGetDatum(pubid); > values[Anum_pg_publication_rel_prrelid - 1] = > ObjectIdGetDatum(relid); > + values[Anum_pg_publication_rel_prexcept - 1] = > + BoolGetDatum(pri->except); > + > > /* Add qualifications, if available */ > > It would be better to remove the blank line, > because with this change, we'll have two blank > lines in a row. Modified > (3) pg_dump.h & pg_dump_sort.c > > @@ -80,6 +80,7 @@ typedef enum > DO_REFRESH_MATVIEW, > DO_POLICY, > DO_PUBLICATION, > + DO_PUBLICATION_EXCEPT_REL, > DO_PUBLICATION_REL, > DO_PUBLICATION_TABLE_IN_SCHEMA, > DO_SUBSCRIPTION > > @@ -90,6 +90,7 @@ enum dbObjectTypePriorities > PRIO_FK_CONSTRAINT, > PRIO_POLICY, > PRIO_PUBLICATION, > + PRIO_PUBLICATION_EXCEPT_REL, > PRIO_PUBLICATION_REL, > PRIO_PUBLICATION_TABLE_IN_SCHEMA, > PRIO_SUBSCRIPTION, > @@ -144,6 +145,7 @@ static const int dbObjectTypePriority[] = > PRIO_REFRESH_MATVIEW, /* DO_REFRESH_MATVIEW */ > PRIO_POLICY, /* DO_POLICY */ > PRIO_PUBLICATION, /* DO_PUBLICATION */ > + PRIO_PUBLICATION_EXCEPT_REL, /* DO_PUBLICATION_EXCEPT_REL */ > PRIO_PUBLICATION_REL, /* DO_PUBLICATION_REL */ > PRIO_PUBLICATION_TABLE_IN_SCHEMA, /* DO_PUBLICATION_TABLE_IN_SCHEMA */ > PRIO_SUBSCRIPTION /* DO_SUBSCRIPTION */ > > How about having similar order between > pg_dump.h and pg_dump_sort.c, like > we'll add DO_PUBLICATION_EXCEPT_REL > after DO_PUBLICATION_REL in pg_dump.h ? > Modified > (4) GetAllTablesPublicationRelations > > + /* > + * pg_publication_rel and pg_publication_namespace will only have except > + * tables in case of all tables publication, no need to pass except flag > + * to get the relations. > + */ > + List *exceptpubtablelist = GetPublicationRelations(pubid, PUBLICATION_PART_ALL); > + > > There is one unnecessary space in a comment > "...pg_publication_namespace will only have...". Kindly remove it. > > Then, how about diving the variable declaration and > the insertion of the return value of GetPublicationRelations ? > That might be aligned with other places in this file. Modified > (5) GetTopMostAncestorInPublication > > > @@ -302,8 +303,9 @@ GetTopMostAncestorInPublication(Oid puboid, List *ancestors, int *ancestor_level > foreach(lc, ancestors) > { > Oid ancestor = lfirst_oid(lc); > - List *apubids = GetRelationPublications(ancestor); > + List *apubids = GetRelationPublications(ancestor, false); > List *aschemaPubids = NIL; > + List *aexceptpubids; > > level++; > > @@ -317,7 +319,9 @@ GetTopMostAncestorInPublication(Oid puboid, List *ancestors, int *ancestor_level > else > { > aschemaPubids = GetSchemaPublications(get_rel_namespace(ancestor)); > - if (list_member_oid(aschemaPubids, puboid)) > + aexceptpubids = GetRelationPublications(ancestor, true); > + if (list_member_oid(aschemaPubids, puboid) || > + (puballtables && !list_member_oid(aexceptpubids, puboid))) > { > topmost_relid = ancestor; > > It seems we forgot to call list_free for "aexceptpubids". Modified The attached v4 patch has the changes for the same. Regards, Vignesh --0000000000005e543d05ddc98c75 Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0001-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch" Content-Disposition: attachment; filename="v4-0001-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l2kd8m4m0 RnJvbSBiOTAwYzk0NjhiYzVjOWRlYjM0MTIzNjFjN2E3ODkxMzUyYjBmZmI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMCBBcHIgMjAyMiAxMToxOTo1MCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjRd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyBvcHRpb24gIkVYQ0VQVCBUQUJMRSIgaW4gQ3JlYXRlL0FsdGVyIFB1YmxpY2F0aW9uIGFs bG93cwpvbmUgb3IgbW9yZSB0YWJsZXMgdG8gYmUgZXhjbHVkZWQsIHB1Ymxpc2hlciB3aWxsIGV4 Y2x1ZGUgc2VuZGluZyB0aGUgZGF0YQpvZiB0aGUgZXhjbHVkZWQgdGFibGVzIHRvIHRoZSBzdWJz Y3JpYmVyLgoKVGhlIG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZSByZWxhdGlv bnMgd2hpbGUgY3JlYXRpbmcgYSBwdWJsaWNhdGlvbgpvciBhZGQvZHJvcC9zZXQgZXhjbHVkZSBy ZWxhdGlvbnMgaW4gYWx0ZXIgcHVibGljYXRpb24uIEZvciBleGFtcGxlOgpDUkVBVEUgUFVCTElD QVRJT04gcHViMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgdDEsdDI7Cm9yCkFMVEVSIFBV QkxJQ0FUSU9OIHB1YjEgQUREIEVYQ0VQVCBUQUJMRSB0MSx0MjsKb3IKQUxURVIgUFVCTElDQVRJ T04gcHViMSBEUk9QIEVYQ0VQVCBUQUJMRSB0MSx0MjsKb3IKQUxURVIgUFVCTElDQVRJT04gcHVi MSBTRVQgRVhDRVBUIFRBQkxFIHQxLHQyOwoKQSBuZXcgY29sdW1uIHByZXhjZXB0IGlzIGFkZGVk IHRvIHRhYmxlICJwZ19wdWJsaWNhdGlvbl9yZWwiLCB0byBtYWludGFpbgp0aGUgcmVsYXRpb25z IHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gZXhjbHVkZSBwdWJsaXNoaW5nIHRocm91Z2ggdGhlIHB1 YmxpY2F0aW9uLgpNb2RpZmllZCB0aGUgb3V0cHV0IHBsdWdpbiAocGdvdXRwdXQpIHRvIGV4Y2x1 ZGUgcHVibGlzaGluZyB0aGUgY2hhbmdlcyBvZiB0aGUKZXhjbHVkZWQgdGFibGVzLgoKVXBkYXRl cyBwZ19kdW1wIHRvIGlkZW50aWZ5IGFuZCBkdW1wIHRoZSBleGNsdWRlZCB0YWJsZXMgb2YgdGhl IHB1YmxpY2F0aW9ucy4KVXBkYXRlcyB0aGUgXGQgZmFtaWx5IG9mIGNvbW1hbmRzIHRvIGRpc3Bs YXkgZXhjbHVkZWQgdGFibGVzIG9mIHRoZQpwdWJsaWNhdGlvbnMgYW5kIFxkUnArIHZhcmlhbnQg d2lsbCBub3cgZGlzcGxheSBhc3NvY2lhdGVkIGV4Y2VwdCB0YWJsZXMgaWYgYW55LgoKQnVtcCBj YXRhbG9nIHZlcnNpb24uCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAg ICAgICAgICAgIHwgICA5ICsrCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s ICAgICAgICAgfCAgIDggKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dt bCAgICAgICB8ICAxNCArKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwgICAgICB8ICAyOSArKysrLQogZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICAg ICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMg ICAgICAgICAgfCAgMzggKysrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMgICAgICAgIHwgMTA2ICsrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNzggKysrKysrKysrKystLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgIDI1ICsrLS0tCiBzcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMTcgKystCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKysrKysrLS0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv YmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgICAgICAgICAgICAgICAgfCAgIDcgKysKIHNyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAgICB8ICAyMyArKysrCiBzcmMv YmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNTIgKysrKysrKy0t CiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAgICAgfCAgMTUgKyst CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgICAgfCAgIDcgKy0K IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCAgICAgICAgfCAgIDQgKy0KIHNy Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICAgfCAgODEgKysrKysrKysr KysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICAgIHwgIDQw ICsrKysrKy0KIC4uLi90LzAzM19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgICAgICAgICB8 ICA5NyArKysrKysrKysrKysrKysrCiAyNCBmaWxlcyBjaGFuZ2VkLCA1OTAgaW5zZXJ0aW9ucygr KSwgMTE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzM19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4 IGE1MzNhMjE1M2UuLjc4ZThjMjJhNTkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02NDI2LDYgKzY0MjYs MTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8 L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIGlmIHRoZXJlIGlzIG5vIHB1Ymxp Y2F0aW9uIHF1YWxpZnlpbmcgY29uZGl0aW9uLjwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4K IAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgIDxzdHJ1Y3RmaWVsZD5wcmV4Y2Vw dDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoZSB0YWJsZSBtdXN0IGJlIGV4Y2x1ZGVkCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CiAgICAgICAgPHN0cnVjdGZpZWxkPnByYXR0cnM8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQydmVj dG9yPC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggMTQ1ZWE3 MWQ2MS4uZmJlZDczNTA2NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBA IC0xMTY1LDEwICsxMTY1LDEwIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZv ciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgIDwvcGFyYT4K IAogICA8cGFyYT4KLSAgIFRvIGFkZCB0YWJsZXMgdG8gYSBwdWJsaWNhdGlvbiwgdGhlIHVzZXIg bXVzdCBoYXZlIG93bmVyc2hpcCByaWdodHMgb24gdGhlCi0gICB0YWJsZS4gVG8gYWRkIGFsbCB0 YWJsZXMgaW4gc2NoZW1hIHRvIGEgcHVibGljYXRpb24sIHRoZSB1c2VyIG11c3QgYmUgYQotICAg c3VwZXJ1c2VyLiBUbyBjcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgdGFi bGVzIG9yIGFsbCB0YWJsZXMgaW4KLSAgIHNjaGVtYSBhdXRvbWF0aWNhbGx5LCB0aGUgdXNlciBt dXN0IGJlIGEgc3VwZXJ1c2VyLgorICAgVG8gYWRkIHRhYmxlcyBvciBleGNsdWRlIHRhYmxlcyB0 byBhIHB1YmxpY2F0aW9uLCB0aGUgdXNlciBtdXN0IGhhdmUKKyAgIG93bmVyc2hpcCByaWdodHMg b24gdGhlIHRhYmxlLiBUbyBhZGQgYWxsIHRhYmxlcyBpbiBzY2hlbWEgdG8gYSBwdWJsaWNhdGlv biwKKyAgIHRoZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIuIFRvIGNyZWF0ZSBhIHB1YmxpY2F0 aW9uIHRoYXQgcHVibGlzaGVzIGFsbAorICAgdGFibGVzIG9yIGFsbCB0YWJsZXMgaW4gc2NoZW1h IGF1dG9tYXRpY2FsbHksIHRoZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIuCiAgIDwvcGFyYT4K IAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRp b24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCBl MmNjZTQ5NDcxLi4yYThlNGUwNDFiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlv bi5zZ21sCkBAIC0zMCw3ICszMCw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAKIDxwaHJh c2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVj dDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIFRBQkxFIFsgT05MWSBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KKyAgICBbRVhDRVBU XSBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdIFssIC4u LiBdCiAgICAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NIRU1BIH0gWywgLi4u IF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KQEAgLTcwLDggKzcwLDggQEAgQUxU RVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPiBSRU5BTUUgVE8gPHIKIAogICA8cGFyYT4KICAgIFlvdSBtdXN0IG93biB0aGUgcHVi bGljYXRpb24gdG8gdXNlIDxjb21tYW5kPkFMVEVSIFBVQkxJQ0FUSU9OPC9jb21tYW5kPi4KLSAg IEFkZGluZyBhIHRhYmxlIHRvIGEgcHVibGljYXRpb24gYWRkaXRpb25hbGx5IHJlcXVpcmVzIG93 bmluZyB0aGF0IHRhYmxlLgotICAgVGhlIDxsaXRlcmFsPkFERCBBTEwgVEFCTEVTIElOIFNDSEVN QTwvbGl0ZXJhbD4gYW5kCisgICBBZGRpbmcgYSB0YWJsZSBvciBleGNsdWRpbmcgYSB0YWJsZSB0 byBhIHB1YmxpY2F0aW9uIGFkZGl0aW9uYWxseSByZXF1aXJlcworICAgb3duaW5nIHRoYXQgdGFi bGUuIFRoZSA8bGl0ZXJhbD5BREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGFuZAog ICAgPGxpdGVyYWw+U0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiB0byBhIHB1Ymxp Y2F0aW9uIHJlcXVpcmVzIHRoZQogICAgaW52b2tpbmcgdXNlciB0byBiZSBhIHN1cGVydXNlci4g IFRvIGFsdGVyIHRoZSBvd25lciwgeW91IG11c3QgYWxzbyBiZSBhCiAgICBkaXJlY3Qgb3IgaW5k aXJlY3QgbWVtYmVyIG9mIHRoZSBuZXcgb3duaW5nIHJvbGUuIFRoZSBuZXcgb3duZXIgbXVzdCBo YXZlCkBAIC0yMDAsNiArMjAwLDE0IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0 aW9uIEFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSBtYXJrZXRpbmcsIHNhbGVzOwogPC9wcm9ncmFt bGlzdGluZz4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgQWRkaW5nIHRhYmxlcyA8c3RydWN0 bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCisgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwv c3RydWN0bmFtZT4gdGhhdCBtdXN0IGJlIGV4Y2x1ZGVkIGZyb20gdGhlCisgICBwdWJsaWNhdGlv biA8c3RydWN0bmFtZT5wcm9kdWN0aW9uX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPjoKKzxwcm9n cmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gQURE IEVYQ0VQVCBUQUJMRSB1c2VycywgZGVwYXJ0bWVudHMgcHJvZHVjdGlvbjsKKzwvcHJvZ3JhbWxp c3Rpbmc+PC9wYXJhPgorCiAgIDxwYXJhPgogICAgQWRkIHRhYmxlcyA8c3RydWN0bmFtZT51c2Vy czwvc3RydWN0bmFtZT4sCiAgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT4g YW5kIHNjaGVtYQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRp b24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXgg MWE4MjhlOGQyZi4uZjkzNDQ3MmRiMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNh dGlvbi5zZ21sCkBAIC0yMiw3ICsyMiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogIDxy ZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgWyBGT1IgQUxMIFRB QkxFUworICAgIFsgRk9SIEFMTCBUQUJMRVMgW0VYQ0VQVCBUQUJMRSBbIE9OTFkgXSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdXQog ICAgICAgfCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29i amVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdIF0KICAgICBbIFdJVEggKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4u LiBdICkgXQogCkBAIC0xNTYsNiArMTU2LDI0IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9uZSB0aGF0IGV4Y2x1 ZGVzIHJlcGxpY2F0aW5nIGNoYW5nZXMgZm9yIHRoZQorICAgICAgc3BlY2lmaWVkIHRhYmxlcy4K KyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgPGxpdGVyYWw+RVhDRVBUIFRBQkxF PC9saXRlcmFsPiBjYW4gYmUgc3BlY2lmaWVkIG9ubHkgZm9yCisgICAgICA8bGl0ZXJhbD5GT1Ig QUxMIFRBQkxFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24uIEl0IGlzIG5vdCBzdXBwb3J0ZWQgZm9y CisgICAgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgPC9saXRlcmFsPiBwdWJs aWNhdGlvbiBhbmQKKyAgICAgIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gcHVibGljYXRp b24uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSCAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBb PSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywg Li4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMzUxLDYgKzM2OSwx NSBAQCBDUkVBVEUgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlvbiBGT1IgVEFCTEUg dXNlcnMsIGRlcGFydG1lbnRzLCBBTEwgVEFCTAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHNhbGVzX3B1 YmxpY2F0aW9uIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBtYXJrZXRpbmcsIHNhbGVzOwogPC9w cm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlv biB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBpbiBhbGwgdGhlIHRhYmxlcyBleGNlcHQgZm9y CisgICB0aGUgY2hhbmdlcyBvZiA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCisg ICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT4gdGFibGU6Cis8cHJvZ3JhbWxp c3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBGT1IgQUxMIFRBQkxFIEVY Q0VQVCBUQUJMRSB1c2VycywgZGVwYXJ0bWVudHM7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisKICAgPHBhcmE+CiAgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBh bGwgY2hhbmdlcyBmb3IgdGFibGUgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+LAogICAg YnV0IHJlcGxpY2F0ZXMgb25seSBjb2x1bW5zIDxzdHJ1Y3RuYW1lPnVzZXJfaWQ8L3N0cnVjdG5h bWU+IGFuZApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmluZGV4IDVmYzZiMTAzNGEuLjM4ODk3OTZiM2Yg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKQEAgLTE4NjgsOCArMTg2OCw5IEBAIHRlc3RkYj0mZ3Q7 CiAgICAgICAgIElmIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBs YWNlYWJsZT4gaXMKICAgICAgICAgc3BlY2lmaWVkLCBvbmx5IHRob3NlIHB1YmxpY2F0aW9ucyB3 aG9zZSBuYW1lcyBtYXRjaCB0aGUgcGF0dGVybiBhcmUKICAgICAgICAgbGlzdGVkLgotICAgICAg ICBJZiA8bGl0ZXJhbD4rPC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1l LCB0aGUgdGFibGVzIGFuZAotICAgICAgICBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1 YmxpY2F0aW9uIGFyZSBzaG93biBhcyB3ZWxsLgorICAgICAgICBJZiA8bGl0ZXJhbD4rPC9saXRl cmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgdGFibGVzLAorICAgICAg ICBleGNsdWRlZCB0YWJsZXMgYW5kIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGlj YXRpb24gYXJlIHNob3duIGFzCisgICAgICAgIHdlbGwuCiAgICAgICAgIDwvcGFyYT4KICAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jCmluZGV4IDI2MzE1NThmZjEuLjhkY2Y0ZTU0ODQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTI5MCw3ICsyOTAsOCBAQCBHZXRQdWJQYXJ0aXRpb25P cHRpb25SZWxhdGlvbnMoTGlzdCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRv cHQsCiAgKiBhbmNlc3RvciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICovCiBPaWQKLUdl dFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3Jz LCBpbnQgKmFuY2VzdG9yX2xldmVsKQorR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihP aWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCisJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWws IGJvb2wgcHViYWxsdGFibGVzKQogewogCUxpc3RDZWxsICAgKmxjOwogCU9pZAkJCXRvcG1vc3Rf cmVsaWQgPSBJbnZhbGlkT2lkOwpAQCAtMzAyLDggKzMwMyw5IEBAIEdldFRvcE1vc3RBbmNlc3Rv ckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9y X2xldmVsCiAJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3IgPSBs Zmlyc3Rfb2lkKGxjKTsKLQkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRp b25zKGFuY2VzdG9yKTsKKwkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRp b25zKGFuY2VzdG9yLCBmYWxzZSk7CiAJCUxpc3QJICAgKmFzY2hlbWFQdWJpZHMgPSBOSUw7CisJ CUxpc3QJICAgKmFleGNlcHRwdWJpZHMgPSBOSUw7CiAKIAkJbGV2ZWwrKzsKIApAQCAtMzE3LDcg KzMxOSw5IEBAIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlz dCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsCiAJCWVsc2UKIAkJewogCQkJYXNjaGVt YVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3Rv cikpOwotCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhc2NoZW1hUHViaWRzLCBwdWJvaWQpKQorCQkJ YWV4Y2VwdHB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCB0cnVlKTsK KwkJCWlmIChsaXN0X21lbWJlcl9vaWQoYXNjaGVtYVB1YmlkcywgcHVib2lkKSB8fAorCQkJCShw dWJhbGx0YWJsZXMgJiYgIWxpc3RfbWVtYmVyX29pZChhZXhjZXB0cHViaWRzLCBwdWJvaWQpKSkK IAkJCXsKIAkJCQl0b3Btb3N0X3JlbGlkID0gYW5jZXN0b3I7CiAKQEAgLTMyOCw2ICszMzIsNyBA QCBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2Vz dG9ycywgaW50ICphbmNlc3Rvcl9sZXZlbAogCiAJCWxpc3RfZnJlZShhcHViaWRzKTsKIAkJbGlz dF9mcmVlKGFzY2hlbWFQdWJpZHMpOworCQlsaXN0X2ZyZWUoYWV4Y2VwdHB1Ymlkcyk7CiAJfQog CiAJcmV0dXJuIHRvcG1vc3RfcmVsaWQ7CkBAIC0zOTYsNiArNDAxLDggQEAgcHVibGljYXRpb25f YWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCU9iamVj dElkR2V0RGF0dW0ocHViaWQpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnJl bGlkIC0gMV0gPQogCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKTsKKwl2YWx1ZXNbQW51bV9wZ19w dWJsaWNhdGlvbl9yZWxfcHJleGNlcHQgLSAxXSA9CisJCUJvb2xHZXREYXR1bShwcmktPmV4Y2Vw dCk7CiAKIAkvKiBBZGQgcXVhbGlmaWNhdGlvbnMsIGlmIGF2YWlsYWJsZSAqLwogCWlmIChwcmkt PndoZXJlQ2xhdXNlICE9IE5VTEwpCkBAIC02NjYsNyArNjczLDcgQEAgcHVibGljYXRpb25fYWRk X3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwgYm9vbCBpZl9ub3RfZXhpc3RzKQogCiAv KiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgYSByZWxhdGlvbiAqLwogTGlzdCAq Ci1HZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCitHZXRSZWxhdGlvblB1YmxpY2F0 aW9ucyhPaWQgcmVsaWQsIGJvb2wgYmV4Y2VwdCkKIHsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7 CiAJQ2F0Q0xpc3QgICAqcHVicmVsbGlzdDsKQEAgLTY4MCw3ICs2ODcsOCBAQCBHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAJCUhlYXBUdXBsZQl0dXAgPSAmcHVicmVsbGlzdC0+ bWVtYmVyc1tpXS0+dHVwbGU7CiAJCU9pZAkJCXB1YmlkID0gKChGb3JtX3BnX3B1YmxpY2F0aW9u X3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5wcnB1YmlkOwogCi0JCXJlc3VsdCA9IGxhcHBlbmRfb2lk KHJlc3VsdCwgcHViaWQpOworCQlpZiAoYmV4Y2VwdCA9PSAoKEZvcm1fcGdfcHVibGljYXRpb25f cmVsKSBHRVRTVFJVQ1QodHVwKSktPnByZXhjZXB0KQorCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQo cmVzdWx0LCBwdWJpZCk7CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlTGlzdChwdWJyZWxsaXN0KTsK QEAgLTc3OSw3ICs3ODcsNyBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCkKICAqIHJv b3QgcGFydGl0aW9uZWQgdGFibGVzLgogICovCiBMaXN0ICoKLUdldEFsbFRhYmxlc1B1YmxpY2F0 aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCkKK0dldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVs YXRpb25zKE9pZCBwdWJpZCwgYm9vbCBwdWJ2aWFyb290KQogewogCVJlbGF0aW9uCWNsYXNzUmVs OwogCVNjYW5LZXlEYXRhIGtleVsxXTsKQEAgLTc4Nyw2ICs3OTUsMTUgQEAgR2V0QWxsVGFibGVz UHVibGljYXRpb25SZWxhdGlvbnMoYm9vbCBwdWJ2aWFyb290KQogCUhlYXBUdXBsZQl0dXBsZTsK IAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAKKwkvKgorCSAqIHBnX3B1YmxpY2F0aW9uX3JlbCBh bmQgcGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHdpbGwgb25seSBoYXZlIGV4Y2x1ZGVkCisJICog dGFibGVzIGluIGNhc2Ugb2YgYWxsIHRhYmxlcyBwdWJsaWNhdGlvbiwgbm8gbmVlZCB0byBwYXNz IGV4Y2VwdCBmbGFnCisJICogdG8gZ2V0IHRoZSByZWxhdGlvbnMuCisJICovCisJTGlzdAkgICAq ZXhjZXB0cHVidGFibGVsaXN0OworCisJZXhjZXB0cHVidGFibGVsaXN0ID0gR2V0UHVibGljYXRp b25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwogCWNsYXNzUmVsID0g dGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKIAlTY2Fu S2V5SW5pdCgma2V5WzBdLApAQCAtODAyLDcgKzgxOSw4IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0 aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCkKIAkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5v aWQ7CiAKIAkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgotCQkJ IShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSkKKwkJCSEocmVsRm9ybS0+ cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkgJiYKKwkJCSFsaXN0X21lbWJlcl9vaWQoZXhj ZXB0cHVidGFibGVsaXN0LCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQs IHJlbGlkKTsKIAl9CiAKQEAgLTgyMyw3ICs4NDEsOCBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlv blJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpCiAJCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0tPm9p ZDsKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgotCQkJ CSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24g JiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdHB1YnRhYmxlbGlzdCwgcmVsaWQpKQogCQkJ CXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOwogCQl9CiAKQEAgLTExMDcsNyAr MTEyNiw4IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJ ICovCiAJCWlmIChwdWJsaWNhdGlvbi0+YWxsdGFibGVzKQogCQl7Ci0JCQl0YWJsZXMgPSBHZXRB bGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJsaWNhdGlvbi0+cHVidmlhcm9vdCk7CisJ CQl0YWJsZXMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJsaWNhdGlvbi0+ b2lkLAorCQkJCQkJCQkJCQkJCSAgcHVibGljYXRpb24tPnB1YnZpYXJvb3QpOwogCQl9CiAJCWVs c2UKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA2ZGYwZTY2 NzBmLi4yNTdlNjY5ZTQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpA QCAtMjk3LDcgKzI5Nyw3IEBAIGNvbnRhaW5faW52YWxpZF9yZmNvbHVtbl93YWxrZXIoTm9kZSAq bm9kZSwgcmZfY29udGV4dCAqY29udGV4dCkKICAqLwogYm9vbAogcHViX3JmX2NvbnRhaW5zX2lu dmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9y cywKLQkJCQkJCSBib29sIHB1YnZpYXJvb3QpCisJCQkJCQkJICAgYm9vbCBwdWJ2aWFyb290LCBi b29sIHB1YmFsbHRhYmxlcykKIHsKIAlIZWFwVHVwbGUJcmZ0dXBsZTsKIAlPaWQJCQlyZWxpZCA9 IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwpAQCAtMzI0LDcgKzMyNCw4IEBAIHB1Yl9yZl9j b250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0 ICphbmNlc3RvcnMsCiAJaWYgKHB1YnZpYXJvb3QgJiYgcmVsYXRpb24tPnJkX3JlbC0+cmVsaXNw YXJ0aXRpb24pCiAJewogCQlwdWJsaXNoX2FzX3JlbGlkCi0JCQk9IEdldFRvcE1vc3RBbmNlc3Rv ckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCk7CisJCQk9IEdldFRvcE1vc3RB bmNlc3RvckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCwKKwkJCQkJCQkJCQkJ ICBwdWJhbGx0YWJsZXMpOwogCiAJCWlmICghT2lkSXNWYWxpZChwdWJsaXNoX2FzX3JlbGlkKSkK IAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKQEAgLTM3Myw3ICszNzQsNyBAQCBwdWJfcmZf Y29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlz dCAqYW5jZXN0b3JzLAogICovCiBib29sCiBwdWJfY29sbGlzdF9jb250YWluc19pbnZhbGlkX2Nv bHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCi0JCQkJ CQkgYm9vbCBwdWJ2aWFyb290KQorCQkJCQkJCQkJYm9vbCBwdWJ2aWFyb290LCBib29sIHB1YmFs bHRhYmxlcykKIHsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdl dFJlbGlkKHJlbGF0aW9uKTsKQEAgLTM5Miw3ICszOTMsNyBAQCBwdWJfY29sbGlzdF9jb250YWlu c19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNl c3RvcgogCSAqLwogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFy dGl0aW9uKQogCXsKLQkJcHVibGlzaF9hc19yZWxpZCA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVi bGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCk7CisJCXB1Ymxpc2hfYXNfcmVsaWQgPSBH ZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwsIHB1 YmFsbHRhYmxlcyk7CiAKIAkJaWYgKCFPaWRJc1ZhbGlkKHB1Ymxpc2hfYXNfcmVsaWQpKQogCQkJ cHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAtODM1LDU0ICs4MzYsNTMgQEAgQ3JlYXRlUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQp CiAJLyogTWFrZSB0aGUgY2hhbmdlcyB2aXNpYmxlLiAqLwogCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CiAKLQkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8K LQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCi0JewotCQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hl IHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLwotCQlDYWNoZUludmFsaWRh dGVSZWxjYWNoZUFsbCgpOwotCX0KLQllbHNlCi0JewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRv T2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZz Y2hlbWFpZGxpc3QpOworCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVj dHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKKwkJCQkJCQkJJnNjaGVtYWlkbGlzdCk7CiAKLQkJLyog Rk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAqLwotCQlpZiAobGlz dF9sZW5ndGgoc2NoZW1haWRsaXN0KSA+IDAgJiYgIXN1cGVydXNlcigpKQotCQkJZXJlcG9ydChF UlJPUiwKLQkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAotCQkJ CQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgQUxMIFRBQkxFUyBJTiBT Q0hFTUEgcHVibGljYXRpb24iKSk7CisJLyogRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHJlcXVp cmVzIHN1cGVydXNlciAqLworCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxpc3QpID4gMCAmJiAh c3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VG RklDSUVOVF9QUklWSUxFR0UpLAorCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gY3Jl YXRlIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKIAotCQlpZiAobGlz dF9sZW5ndGgocmVsYXRpb25zKSA+IDApCi0JCXsKLQkJCUxpc3QJICAgKnJlbHM7CisJaWYgKGxp c3RfbGVuZ3RoKHJlbGF0aW9ucykgPiAwKQorCXsKKwkJTGlzdAkgICAqcmVsczsKIAotCQkJcmVs cyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKLQkJCUNoZWNrT2JqU2NoZW1hTm90QWxyZWFk eUluUHVibGljYXRpb24ocmVscywgc2NoZW1haWRsaXN0LAotCQkJCQkJCQkJCQkJICBQVUJMSUNB VElPTk9CSl9UQUJMRSk7CisJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7CisJCUNo ZWNrT2JqU2NoZW1hTm90QWxyZWFkeUluUHVibGljYXRpb24ocmVscywgc2NoZW1haWRsaXN0LAor CQkJCQkJCQkJCQkJUFVCTElDQVRJT05PQkpfVEFCTEUpOwogCi0JCQlUcmFuc2Zvcm1QdWJXaGVy ZUNsYXVzZXMocmVscywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCi0JCQkJCQkJCQkgcHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QpOworCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0 YXRlLT5wX3NvdXJjZXRleHQsCisJCQkJCQkJCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7 CiAKLQkJCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0 ZXh0LAotCQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CisJCUNoZWNrUHVi UmVsYXRpb25Db2x1bW5MaXN0KHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJCQlw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKLQkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1 Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7Ci0JCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKLQkJfQor CQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOworCQlDbG9z ZVRhYmxlTGlzdChyZWxzKTsKKwl9CiAKLQkJaWYgKGxpc3RfbGVuZ3RoKHNjaGVtYWlkbGlzdCkg PiAwKQotCQl7Ci0JCQkvKgotCQkJICogU2NoZW1hIGxvY2sgaXMgaGVsZCB1bnRpbCB0aGUgcHVi bGljYXRpb24gaXMgY3JlYXRlZCB0byBwcmV2ZW50Ci0JCQkgKiBjb25jdXJyZW50IHNjaGVtYSBk ZWxldGlvbi4KLQkJCSAqLwotCQkJTG9ja1NjaGVtYUxpc3Qoc2NoZW1haWRsaXN0KTsKLQkJCVB1 YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7Ci0J CX0KKwkvKiB0YWJsZXMgYWRkZWQgdGhyb3VnaCBhIHNjaGVtYSAqLworCWlmIChsaXN0X2xlbmd0 aChzY2hlbWFpZGxpc3QpID4gMCkKKwl7CisJCS8qCisJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQg dW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAorCQkgKiBjb25jdXJy ZW50IHNjaGVtYSBkZWxldGlvbi4KKwkJICovCisJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlz dCk7CisJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwg TlVMTCk7CiAJfQogCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAorCS8q IEFzc29jaWF0ZSBvYmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLworCWlmIChzdG10LT5m b3JfYWxsX3RhYmxlcykKKwl7CisJCS8qIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJs aWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuICovCisJCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQWxs KCk7CisJfQorCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soUHVibGljYXRpb25SZWxhdGlv bklkLCBwdWJvaWQsIDApOwogCiAJaWYgKHdhbF9sZXZlbCAhPSBXQUxfTEVWRUxfTE9HSUNBTCkK QEAgLTEzNTUsNiArMTM1NSwxOSBAQCBDaGVja0FsdGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0 ICpzY2hlbWFpZGxpc3QpCiB7CiAJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtID0gKEZvcm1f cGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOworCUxpc3RDZWxsICAgKmxjOworCWJvb2wJ CW5vbmV4Y2VwdHRhYmxlID0gZmFsc2U7CisJYm9vbAkJZXhjZXB0dGFibGUgPSBmYWxzZTsKKwor CWZvcmVhY2gobGMsIHRhYmxlcykKKwl7CisJCVB1YmxpY2F0aW9uVGFibGUgKnB1Yl90YWJsZSA9 IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uVGFibGUsIGxjKTsKKworCQlpZiAoIXB1Yl90YWJsZS0+ ZXhjZXB0KQorCQkJbm9uZXhjZXB0dGFibGUgPSB0cnVlOworCQllbHNlCisJCQlleGNlcHR0YWJs ZSA9IHRydWU7CisJfQogCiAJaWYgKChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cyB8fCBz dG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykgJiYKIAkJc2NoZW1haWRsaXN0ICYmICFzdXBl cnVzZXIoKSkKQEAgLTEzNzQsMTIgKzEzODcsMTkgQEAgQ2hlY2tBbHRlclB1YmxpY2F0aW9uKEFs dGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCSBlcnJkZXRhaWwo IlRhYmxlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Ig c2V0IG9uIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4iKSkpOwogCiAJLyogQ2hlY2sgdGhh dCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24gdGFibGVzLiAq LwotCWlmICh0YWJsZXMgJiYgcHViZm9ybS0+cHViYWxsdGFibGVzKQorCWlmIChub25leGNlcHR0 YWJsZSAmJiB0YWJsZXMgJiYgcHViZm9ybS0+cHViYWxsdGFibGVzKQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAogCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwg VEFCTEVTIiwKIAkJCQkJCU5hbWVTdHIocHViZm9ybS0+cHVibmFtZSkpLAogCQkJCSBlcnJkZXRh aWwoIlRhYmxlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9ucy4iKSkpOworCisJaWYgKGV4Y2VwdHRhYmxlICYmICFwdWJmb3JtLT5w dWJhbGx0YWJsZXMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygicHVibGljYXRpb24g XCIlc1wiIGlzIG5vdCBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTIiwKKwkJCQkJCU5hbWVTdHIo cHViZm9ybS0+cHVibmFtZSkpLAorCQkJCSBlcnJkZXRhaWwoImV4Y2VwdCB0YWJsZSBjYW5ub3Qg YmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFCTEVTIHB1Ymxp Y2F0aW9ucy4iKSkpOwogfQogCiAvKgpAQCAtMTY1Niw2ICsxNjc2LDcgQEAgT3BlblRhYmxlTGlz dChMaXN0ICp0YWJsZXMpCiAJCXB1Yl9yZWwtPnJlbGF0aW9uID0gcmVsOwogCQlwdWJfcmVsLT53 aGVyZUNsYXVzZSA9IHQtPndoZXJlQ2xhdXNlOwogCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29s dW1uczsKKwkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQlyZWxzID0gbGFwcGVuZChy ZWxzLCBwdWJfcmVsKTsKIAkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBteXJlbGlkKTsK IApAQCAtMTcyOCw2ICsxNzQ5LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAKIAkJ CQkvKiBjaGlsZCBpbmhlcml0cyBjb2x1bW4gbGlzdCBmcm9tIHBhcmVudCAqLwogCQkJCXB1Yl9y ZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQkJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2Vw dDsKIAkJCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJCQlyZWxpZHMgPSBsYXBw ZW5kX29pZChyZWxpZHMsIGNoaWxkcmVsaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDJjZDg1NDZkNDcuLjRkNjYwZGU1NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBA IC0xNjI3NCw3ICsxNjI3NCw3IEBAIEFUUHJlcENoYW5nZVBlcnNpc3RlbmNlKFJlbGF0aW9uIHJl bCwgYm9vbCB0b0xvZ2dlZCkKIAkgKiBVTkxPR0dFRCBhcyBVTkxPR0dFRCB0YWJsZXMgY2FuJ3Qg YmUgcHVibGlzaGVkLgogCSAqLwogCWlmICghdG9Mb2dnZWQgJiYKLQkJbGlzdF9sZW5ndGgoR2V0 UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKSkgPiAwKQorCQlsaXN0 X2xlbmd0aChHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCksIGZh bHNlKSkgPiAwKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2Ug dGFibGUgXCIlc1wiIHRvIHVubG9nZ2VkIGJlY2F1c2UgaXQgaXMgcGFydCBvZiBhIHB1YmxpY2F0 aW9uIiwKQEAgLTE2NDExLDcgKzE2NDExLDcgQEAgQWx0ZXJUYWJsZU5hbWVzcGFjZShBbHRlck9i amVjdFNjaGVtYVN0bXQgKnN0bXQsIE9pZCAqb2xkc2NoZW1hKQogCXsKIAkJTGlzdENlbGwgICAq bGM7CiAJCUxpc3QJICAgKnNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhuc3BP aWQpOwotCQlMaXN0CSAgICpyZWxQdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxh dGlvbkdldFJlbGlkKHJlbCkpOworCQlMaXN0CSAgICpyZWxQdWJpZHMgPSBHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCksIGZhbHNlKTsKIAogCQlmb3JlYWNoKGxj LCByZWxQdWJpZHMpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGM5OTQxZDljYjQuLjRhMmQ4M2RhY2Qg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtMjE5LDYgKzIxOSw4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NDQVNi aXRzKGludCBjYXNfYml0cywgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyICpjb25zdHJUeXBlLAog CQkJICAgYm9vbCAqbm9faW5oZXJpdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGlj IHZvaWQgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsCiAJCQkJ CQkJCSAgIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKK3N0YXRpYyB2b2lkIGNoZWNrX2V4Y2Vw dF9wdWJvYmpzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIs CisJCQkJCQkJCSBib29sIGFsbHRhYmxlcyk7CiBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAl fQpAQCAtNDU1LDcgKzQ1Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJdHJhbnNm b3JtX2VsZW1lbnRfbGlzdCB0cmFuc2Zvcm1fdHlwZV9saXN0CiAJCQkJVHJpZ2dlclRyYW5zaXRp b25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1 dW1fcmVsYXRpb25fbGlzdAotCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0CisJCQkJ ZHJvcF9vcHRpb25fbGlzdCBwdWJfb2JqX2xpc3QgZXhjZXB0X3B1Yl9vYmpfbGlzdAogCiAldHlw ZSA8bm9kZT4Jb3B0X3JvdXRpbmVfYm9keQogJXR5cGUgPGdyb3VwY2xhdXNlPiBncm91cF9jbGF1 c2UKQEAgLTQ5Myw3ICs0OTUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPGxp c3Q+CW9wdF9pbnRlcnZhbCBpbnRlcnZhbF9zZWNvbmQKICV0eXBlIDxzdHI+CQl1bmljb2RlX25v cm1hbF9mb3JtCiAKLSV0eXBlIDxib29sZWFuPiBvcHRfaW5zdGVhZAorJXR5cGUgPGJvb2xlYW4+ IG9wdF9pbnN0ZWFkIG9wdF9leGNlcHQKICV0eXBlIDxib29sZWFuPiBvcHRfdW5pcXVlIG9wdF9j b25jdXJyZW50bHkgb3B0X3ZlcmJvc2Ugb3B0X2Z1bGwKICV0eXBlIDxib29sZWFuPiBvcHRfZnJl ZXplIG9wdF9hbmFseXplIG9wdF9kZWZhdWx0IG9wdF9yZWNoZWNrCiAldHlwZSA8ZGVmZWx0Pglv cHRfYmluYXJ5IGNvcHlfZGVsaW1pdGVyCkBAIC05ODc5LDEyICs5ODgxLDE1IEBAIENyZWF0ZVB1 YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+b3B0aW9ucyA9ICQ0OwogCQkJCQkkJCA9IChOb2RlICop bjsKIAkJCQl9Ci0JCQl8IENSRUFURSBQVUJMSUNBVElPTiBuYW1lIEZPUiBBTEwgVEFCTEVTIG9w dF9kZWZpbml0aW9uCisJCQl8IENSRUFURSBQVUJMSUNBVElPTiBuYW1lIEZPUiBBTEwgVEFCTEVT IGV4Y2VwdF9wdWJfb2JqX2xpc3Qgb3B0X2RlZmluaXRpb24KIAkJCQl7CiAJCQkJCUNyZWF0ZVB1 YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVB1YmxpY2F0aW9uU3RtdCk7CiAJCQkJ CW4tPnB1Ym5hbWUgPSAkMzsKLQkJCQkJbi0+b3B0aW9ucyA9ICQ3OworCQkJCQluLT5vcHRpb25z ID0gJDg7CisJCQkJCW4tPnB1Ym9iamVjdHMgPSAoTGlzdCAqKSQ3OwogCQkJCQluLT5mb3JfYWxs X3RhYmxlcyA9IHRydWU7CisJCQkJCXByZXByb2Nlc3NfcHVib2JqX2xpc3Qobi0+cHVib2JqZWN0 cywgeXlzY2FubmVyKTsKKwkJCQkJY2hlY2tfZXhjZXB0X3B1Ym9ianMobi0+cHVib2JqZWN0cywg eXlzY2FubmVyLCB0cnVlKTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQogCQkJfCBDUkVB VEUgUFVCTElDQVRJT04gbmFtZSBGT1IgcHViX29ial9saXN0IG9wdF9kZWZpbml0aW9uCkBAIC05 ODk0LDYgKzk4OTksNyBAQCBDcmVhdGVQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4tPm9wdGlvbnMg PSAkNjsKIAkJCQkJbi0+cHVib2JqZWN0cyA9IChMaXN0ICopJDU7CiAJCQkJCXByZXByb2Nlc3Nf cHVib2JqX2xpc3Qobi0+cHVib2JqZWN0cywgeXlzY2FubmVyKTsKKwkJCQkJY2hlY2tfZXhjZXB0 X3B1Ym9ianMobi0+cHVib2JqZWN0cywgeXlzY2FubmVyLCBmYWxzZSk7CiAJCQkJCSQkID0gKE5v ZGUgKiluOwogCQkJCX0KIAkJOwpAQCAtOTkxMiwyNiArOTkxOCwzMCBAQCBDcmVhdGVQdWJsaWNh dGlvblN0bXQ6CiAgKiByZWxhdGlvbl9leHByIGhlcmUuCiAgKi8KIFB1YmxpY2F0aW9uT2JqU3Bl YzoKLQkJCVRBQkxFIHJlbGF0aW9uX2V4cHIgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNl CisJCQlvcHRfZXhjZXB0IFRBQkxFIHJlbGF0aW9uX2V4cHIgb3B0X2NvbHVtbl9saXN0IE9wdFdo ZXJlQ2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7 CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEU7CiAJCQkJCSQkLT5w dWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVidGFibGUt PnJlbGF0aW9uID0gJDI7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwotCQkJCQkk JC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5leGNlcHQgPSAkMTsKKwkJ CQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQzOworCQkJCQkkJC0+cHVidGFibGUtPmNvbHVt bnMgPSAkNDsKKwkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ1OworCQkJCQkkJC0+ bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQl8IEFMTCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQK IAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQt PnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOwogCQkJCQkkJC0+ bmFtZSA9ICQ1OworCQkJCQkkJC0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJCSQkLT5sb2NhdGlvbiA9 IEA1OwogCQkJCX0KIAkJCXwgQUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQQog CQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+ cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOworCQkJCQkk JC0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEA1OwogCQkJCX0KIAkJCXwg Q29sSWQgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCkBAIC05OTk1LDYgKzEwMDA1LDE3 IEBAIHB1Yl9vYmpfbGlzdDogCVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVu ZCgkMSwgJDMpOyB9CiAJOwogCisgZXhjZXB0X3B1Yl9vYmpfbGlzdDoJcHViX29ial9saXN0CisJ CQkJCXsgJCQgPSAkMTsgfQorCQkJfCAvKkVNUFRZKi8KKwkJCQkJeyAkJCA9IE5VTEw7IH0KKwk7 CisKK29wdF9leGNlcHQ6CisJCQlFWENFUFQJCQkJCQkJCQl7ICQkID0gdHJ1ZTsgfQorCQkJfCAv KkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBmYWxzZTsgfQorCQk7CisKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgogICoKICAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUICggb3B0aW9ucyApCkBAIC0x ODcxMiw2ICsxODczMyw3IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3Bl Y19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1 YmxpY2F0aW9uT2JqU3BlYyAqcHVib2JqOwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgcHJldm9i anR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CisJYm9vbCBwcmV2ZXhjZXB0b2Jq ID0gZmFsc2U7CiAKIAlpZiAoIXB1Ym9ianNwZWNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTg3Mjks NyArMTg3NTEsMTAgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xp c3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQlwdWJvYmogPSAoUHVibGljYXRpb25PYmpT cGVjICopIGxmaXJzdChjZWxsKTsKIAogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJ Q0FUSU9OT0JKX0NPTlRJTlVBVElPTikKKwkJewogCQkJcHVib2JqLT5wdWJvYmp0eXBlID0gcHJl dm9ianR5cGU7CisJCQlwdWJvYmotPmV4Y2VwdCA9IHByZXZleGNlcHRvYmo7CisJCX0KIAogCQlp ZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFKQogCQl7CkBAIC0x ODc1MCw2ICsxODc3NSw4IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3Bl Y19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJCQlwdWJvYmotPnB1YnRhYmxlID0g cHVidGFibGU7CiAJCQkJcHVib2JqLT5uYW1lID0gTlVMTDsKIAkJCX0KKworCQkJcHVib2JqLT5w dWJ0YWJsZS0+ZXhjZXB0ID0gcHVib2JqLT5leGNlcHQ7CiAJCX0KIAkJZWxzZSBpZiAocHVib2Jq LT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUEgfHwKIAkJCQkg cHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1B KQpAQCAtMTg3ODQsNiArMTg4MTEsNDEgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpw dWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQl9CiAKIAkJcHJldm9i anR5cGUgPSBwdWJvYmotPnB1Ym9ianR5cGU7CisJCXByZXZleGNlcHRvYmogPSBwdWJvYmotPmV4 Y2VwdDsKKwl9Cit9CisKKy8qCisgKiBQcm9jZXNzIHB1Ym9ianNwZWNfbGlzdCB0byBjaGVjayBp ZiAiRVhDRVBUIFRBQkxFUyIgaXMgc3BlY2lmaWVkIG9ubHkKKyAqIHdpdGggIkFMTCBUQUJMRVMi IGFuZCAiRVhDRVBUIFRBQkxFUyIgYXJlIG5vdCBzcGVjaWZpZWQgd2l0aCAiTk9OIEFMTCBUQUJM RVMiCisgKiBwdWJsaWNhdGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19leGNlcHRfcHVi b2JqcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyLAorCQkJ CQkJCWJvb2wgYWxsdGFibGVzKQoreworCUxpc3RDZWxsICAgKmNlbGw7CisJUHVibGljYXRpb25P YmpTcGVjICpwdWJvYmo7CisKKwlpZiAoIXB1Ym9ianNwZWNfbGlzdCkKKwkJcmV0dXJuOworCisJ Zm9yZWFjaChjZWxsLCBwdWJvYmpzcGVjX2xpc3QpCisJeworCQlwdWJvYmogPSAoUHVibGljYXRp b25PYmpTcGVjICopIGxmaXJzdChjZWxsKTsKKworCQkvKiBFWENFUFQgVEFCTEUgb3B0aW9uIHN1 cHBvcnRlZCBvbmx5IHdpdGggQUxMIFRBQkxFUyAqLworCQlpZiAoIWFsbHRhYmxlcyAmJiBwdWJv YmotPmV4Y2VwdCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCQllcnJtc2coIkVYQ0VQVCBUQUJMRSBjYW4gYmUgc3BlY2lmaWVkIG9u bHkgd2l0aCBBTEwgVEFCTEVTIG9wdGlvbiIpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVi b2JqLT5sb2NhdGlvbikpOworCQkvKiBPbmx5IEVYQ0VQVCBUQUJMRSBvcHRpb24gc3VwcG9ydGVk IHdpdGggQUxMIFRBQkxFUyAqLworCQllbHNlIGlmIChhbGx0YWJsZXMgJiYgIXB1Ym9iai0+ZXhj ZXB0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCWVycm1zZygib25seSBFWENFUFQgVEFCTEUgY2FuIGJlIHNwZWNpZmllZCB3aXRo IEFMTCBUQUJMRVMgb3B0aW9uIiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwdWJvYmotPmxv Y2F0aW9uKSk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYwppbmRleCBiMTk3YmZkNTY1Li40ZGNkMzVkMWY1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE5ODgsNyArMTk4OCw4IEBAIGdldF9y ZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCWlm ICghZW50cnktPnJlcGxpY2F0ZV92YWxpZCkKIAl7CiAJCU9pZAkJCXNjaGVtYUlkID0gZ2V0X3Jl bF9uYW1lc3BhY2UocmVsaWQpOwotCQlMaXN0CSAgICpwdWJpZHMgPSBHZXRSZWxhdGlvblB1Ymxp Y2F0aW9ucyhyZWxpZCk7CisJCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRp b25zKHJlbGlkLCBmYWxzZSk7CisJCUxpc3QJICAgKmV4Y2VwdFRhYmxlUHViaWRzID0gR2V0UmVs YXRpb25QdWJsaWNhdGlvbnMocmVsaWQsIHRydWUpOwogCiAJCS8qCiAJCSAqIFdlIGRvbid0IGFj cXVpcmUgYSBsb2NrIG9uIHRoZSBuYW1lc3BhY2Ugc3lzdGVtIHRhYmxlIGFzIHdlIGJ1aWxkCkBA IC0yMDc3LDIyICsyMDc4LDYgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0 YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQlPaWQJcHViX3JlbGlkID0gcmVsaWQ7CiAJCQlpbnQJ YW5jZXN0b3JfbGV2ZWwgPSAwOwogCi0JCQkvKgotCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwg VEFCTEVTIHB1YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24gcm9vdAotCQkJICogYW5kIHNl dCB0aGUgYW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCi0JCQkgKi8KLQkJCWlmIChwdWItPmFs bHRhYmxlcykKLQkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAocHViLT5wdWJ2aWFy b290ICYmIGFtX3BhcnRpdGlvbikKLQkJCQl7Ci0JCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdl dF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKLQotCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9v aWQoYW5jZXN0b3JzKTsKLQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3Rv cnMpOwotCQkJCX0KLQkJCX0KLQogCQkJaWYgKCFwdWJsaXNoKQogCQkJewogCQkJCWJvb2wJCWFu Y2VzdG9yX3B1Ymxpc2hlZCA9IGZhbHNlOwpAQCAtMjExMSw3ICsyMDk2LDggQEAgZ2V0X3JlbF9z eW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCQkJ YW5jZXN0b3IgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLAogCQkJ CQkJCQkJCQkJCQkJICAgYW5jZXN0b3JzLAotCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsKTsKKwkJ CQkJCQkJCQkJCQkJCSAgICZsZXZlbCwKKwkJCQkJCQkJCQkJCQkJCSAgIHB1Yi0+YWxsdGFibGVz KTsKIAogCQkJCQlpZiAoYW5jZXN0b3IgIT0gSW52YWxpZE9pZCkKIAkJCQkJewpAQCAtMjEyNiw2 ICsyMTEyLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRp b24gcmVsYXRpb24pCiAKIAkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQp IHx8CiAJCQkJCWxpc3RfbWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAorCQkJ CQkocHViLT5hbGx0YWJsZXMgJiYKKwkJCQkJICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0VGFibGVQ dWJpZHMsIHB1Yi0+b2lkKSkgfHwKIAkJCQkJYW5jZXN0b3JfcHVibGlzaGVkKQogCQkJCQlwdWJs aXNoID0gdHJ1ZTsKIAkJCX0KQEAgLTIyMDEsNiArMjE4OSw3IEBAIGdldF9yZWxfc3luY19lbnRy eShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJCWxpc3RfZnJlZShw dWJpZHMpOwogCQlsaXN0X2ZyZWUoc2NoZW1hUHViaWRzKTsKKwkJbGlzdF9mcmVlKGV4Y2VwdFRh YmxlUHViaWRzKTsKIAkJbGlzdF9mcmVlKHJlbF9wdWJsaWNhdGlvbnMpOwogCiAJCWVudHJ5LT5y ZXBsaWNhdGVfdmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXgg NDNmMTRjMjMzZC4uNTY1OTJhZmFjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBA IC01NTYyLDYgKzU1NjIsOCBAQCB2b2lkCiBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJl bGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiB7CiAJTGlzdAkgICAq cHVib2lkczsKKwlMaXN0CSAgICphbGx0YWJsZXNwdWJvaWRzOworCUxpc3QJICAgKmV4Y2VwdHB1 Ym9pZHMgPSBOSUw7CiAJTGlzdENlbGwgICAqbGM7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJ T2lkCQkJc2NoZW1haWQ7CkBAIC01NTk1LDcgKzU1OTcsNyBAQCBSZWxhdGlvbkJ1aWxkUHVibGlj YXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJ cHViZGVzYy0+Y29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsKIAogCS8qIEZldGNoIHRoZSBw dWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCi0JcHVib2lkcyA9IEdldFJlbGF0aW9uUHVi bGljYXRpb25zKHJlbGlkKTsKKwlwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVs aWQsIGZhbHNlKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsK IAlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJs aWNhdGlvbnMoc2NoZW1haWQpKTsKIApAQCAtNTYwOSwxNCArNTYxMSwxOSBAQCBSZWxhdGlvbkJ1 aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1 YmRlc2MpCiAJCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOwogCiAJCQlwdWJvaWRz ID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAotCQkJCQkJCQkJCQkgR2V0UmVsYXRp b25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCQkJCQkJCQkJIEdldFJlbGF0aW9uUHVibGlj YXRpb25zKGFuY2VzdG9yLCBmYWxzZSkpOwogCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFj ZShhbmNlc3Rvcik7CiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRz LAogCQkJCQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CisJCQlleGNl cHRwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChleGNlcHRwdWJvaWRzLAorCQkJCQkJ CQkJCQkJICAgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsIHRydWUpKTsKIAkJfQog CX0KLQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJs ZXNQdWJsaWNhdGlvbnMoKSk7CiAKKwlhbGx0YWJsZXNwdWJvaWRzID0gR2V0QWxsVGFibGVzUHVi bGljYXRpb25zKCk7CisJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywK KwkJCQkJCQkJCSBsaXN0X2RpZmZlcmVuY2Vfb2lkKGFsbHRhYmxlc3B1Ym9pZHMsCisJCQkJCQkJ CQkJCQkJCSBleGNlcHRwdWJvaWRzKSk7CiAJZm9yZWFjaChsYywgcHVib2lkcykKIAl7CiAJCU9p ZAkJCXB1YmlkID0gbGZpcnN0X29pZChsYyk7CkBAIC01NjQ1LDcgKzU2NTIsNyBAQCBSZWxhdGlv bkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2Mg KnB1YmRlc2MpCiAJCWlmICghcHViZm9ybS0+cHViYWxsdGFibGVzICYmCiAJCQkocHViZm9ybS0+ cHVidXBkYXRlIHx8IHB1YmZvcm0tPnB1YmRlbGV0ZSkgJiYKIAkJCXB1Yl9yZl9jb250YWluc19p bnZhbGlkX2NvbHVtbihwdWJpZCwgcmVsYXRpb24sIGFuY2VzdG9ycywKLQkJCQkJCQkJCSBwdWJm b3JtLT5wdWJ2aWFyb290KSkKKwkJCQkJCQkJCQkgICBwdWJmb3JtLT5wdWJ2aWFyb290LCBwdWJm b3JtLT5wdWJhbGx0YWJsZXMpKQogCQl7CiAJCQlpZiAocHViZm9ybS0+cHVidXBkYXRlKQogCQkJ CXB1YmRlc2MtPnJmX3ZhbGlkX2Zvcl91cGRhdGUgPSBmYWxzZTsKQEAgLTU2NjIsNyArNTY2OSw3 IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1Ymxp Y2F0aW9uRGVzYyAqcHViZGVzYykKIAkJaWYgKCFwdWJmb3JtLT5wdWJhbGx0YWJsZXMgJiYKIAkJ CShwdWJmb3JtLT5wdWJ1cGRhdGUgfHwgcHViZm9ybS0+cHViZGVsZXRlKSAmJgogCQkJcHViX2Nv bGxpc3RfY29udGFpbnNfaW52YWxpZF9jb2x1bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3RvcnMs Ci0JCQkJCQkJCQkgcHViZm9ybS0+cHVidmlhcm9vdCkpCisJCQkJCQkJCQkJCQlwdWJmb3JtLT5w dWJ2aWFyb290LCBwdWJmb3JtLT5wdWJhbGx0YWJsZXMpKQogCQl7CiAJCQlpZiAocHViZm9ybS0+ cHVidXBkYXRlKQogCQkJCXB1YmRlc2MtPmNvbHNfdmFsaWRfZm9yX3VwZGF0ZSA9IGZhbHNlOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKaW5kZXggNzg2ZDU5MmUyYi4uYTBiMTAxMTI2OSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0y ODUsNyArMjg1LDggQEAgc3RhdGljIHZvaWQgZHVtcEJsb2IoQXJjaGl2ZSAqZm91dCwgY29uc3Qg QmxvYkluZm8gKmJpbmZvKTsKIHN0YXRpYyBpbnQJZHVtcEJsb2JzKEFyY2hpdmUgKmZvdXQsIGNv bnN0IHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCBkdW1wUG9saWN5KEFyY2hpdmUgKmZvdXQsIGNv bnN0IFBvbGljeUluZm8gKnBvbGluZm8pOwogc3RhdGljIHZvaWQgZHVtcFB1YmxpY2F0aW9uKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbyk7Ci1zdGF0aWMgdm9p ZCBkdW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblJl bEluZm8gKnB1YnJpbmZvKTsKK3N0YXRpYyB2b2lkIGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8sCisJCQkJCQkJCSBi b29sIGJleGNlcHQpOwogc3RhdGljIHZvaWQgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0 LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBEYXRh YmFzZShBcmNoaXZlICpBSCk7CiBzdGF0aWMgdm9pZCBkdW1wRGF0YWJhc2VDb25maWcoQXJjaGl2 ZSAqQUgsIFBRRXhwQnVmZmVyIG91dGJ1ZiwKQEAgLTQxNTEsNiArNDE1Miw3IEBAIGdldFB1Ymxp Y2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1U YWJsZXMpCiAJaW50CQkJaV9wcnJlbGlkOwogCWludAkJCWlfcHJyZWxxdWFsOwogCWludAkJCWlf cHJhdHRyczsKKwlpbnQJCQlpX3ByZXhjZXB0OwogCWludAkJCWksCiAJCQkJaiwKIAkJCQludHVw czsKQEAgLTQxNjIsOCArNDE2NCwxNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJLyogQ29sbGVjdCBh bGwgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCWlmIChmb3V0LT5yZW1vdGVWZXJz aW9uID49IDE1MDAwMCkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJ CSJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCxcbiIpOworCisJCS8qIEZJ WE1FOiAxNTAwMDAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gMTYwMDAwIGxhdGVyIGZvciBQRzE2LiAq LworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCisJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBwcmV4Y2VwdCxcbiIpOworCQllbHNlCisJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBwcmV4Y2VwdCxcbiIpOworCiAJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQs IHBycmVsaWQsICIKIAkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIocHJxdWFsLCBwcnJl bGlkKSBBUyBwcnJlbHF1YWwsICIKIAkJCQkJCQkgIihDQVNFXG4iCiAJCQkJCQkJICIgIFdIRU4g cHIucHJhdHRycyBJUyBOT1QgTlVMTCBUSEVOXG4iCkBAIC00MTc0LDYgKzQxODUsNyBAQCBnZXRQ dWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQg bnVtVGFibGVzKQogCQkJCQkJCSAiICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFO RCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCSAiICBFTFNFIE5VTEwgRU5EKSBwcmF0 dHJzICIKIAkJCQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIiKTsK Kwl9CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVD VCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCkBAIC00MTg5LDYgKzQyMDEsNyBA QCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1td LCBpbnQgbnVtVGFibGVzKQogCWlfcHJyZWxpZCA9IFBRZm51bWJlcihyZXMsICJwcnJlbGlkIik7 CiAJaV9wcnJlbHF1YWwgPSBQUWZudW1iZXIocmVzLCAicHJyZWxxdWFsIik7CiAJaV9wcmF0dHJz ID0gUFFmbnVtYmVyKHJlcywgInByYXR0cnMiKTsKKwlpX3ByZXhjZXB0ID0gUFFmbnVtYmVyKHJl cywgInByZXhjZXB0Iik7CiAKIAkvKiB0aGlzIGFsbG9jYXRpb24gbWF5IGJlIG1vcmUgdGhhbiB3 ZSBuZWVkICovCiAJcHVicmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVibGljYXRp b25SZWxJbmZvKSk7CkBAIC00MjAwLDYgKzQyMTMsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQlPaWQJ CQlwcnJlbGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3BycmVsaWQpKTsKIAkJUHVi bGljYXRpb25JbmZvICpwdWJpbmZvOwogCQlUYWJsZUluZm8gICp0YmluZm87CisJCWNoYXIgICAg ICAgKnByZXhjZXB0ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ByZXhjZXB0KSk7 CiAKIAkJLyoKIAkJICogSWdub3JlIGFueSBlbnRyaWVzIGZvciB3aGljaCB3ZSBhcmVuJ3QgaW50 ZXJlc3RlZCBpbiBlaXRoZXIgdGhlCkBAIC00MjIwLDcgKzQyMzQsMTEgQEAgZ2V0UHVibGljYXRp b25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxl cykKIAkJCWNvbnRpbnVlOwogCiAJCS8qIE9LLCBtYWtlIGEgRHVtcGFibGVPYmplY3QgZm9yIHRo aXMgcmVsYXRpb25zaGlwICovCi0JCXB1YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERPX1BVQkxJ Q0FUSU9OX1JFTDsKKwkJaWYgKHN0cmNtcChwcmV4Y2VwdCwgImYiKSA9PSAwKQorCQkJcHVicmlu Zm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05fUkVMOworCQllbHNlCisJCQlwdWJy aW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9FWENFUFRfUkVMOworCiAJCXB1 YnJpbmZvW2pdLmRvYmouY2F0SWQudGFibGVvaWQgPQogCQkJYXRvb2lkKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3RhYmxlb2lkKSk7CiAJCXB1YnJpbmZvW2pdLmRvYmouY2F0SWQub2lkID0gYXRvb2lk KFBRZ2V0dmFsdWUocmVzLCBpLCBpX29pZCkpOwpAQCAtNDMxNCwxMyArNDMzMiwxNSBAQCBkdW1w UHVibGljYXRpb25OYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25TY2hl bWFJbmZvICpwdWJzaW5mbykKICAqCSAgZHVtcCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZ2l2ZW4g cHVibGljYXRpb24gdGFibGUgbWFwcGluZwogICovCiBzdGF0aWMgdm9pZAotZHVtcFB1YmxpY2F0 aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25SZWxJbmZvICpwdWJyaW5m bykKK2R1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9u UmVsSW5mbyAqcHVicmluZm8sCisJCQkJCSBib29sIGJleGNlcHQpCiB7CiAJRHVtcE9wdGlvbnMg KmRvcHQgPSBmb3V0LT5kb3B0OwogCVB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbyA9IHB1YnJpbmZv LT5wdWJsaWNhdGlvbjsKIAlUYWJsZUluZm8gICp0YmluZm8gPSBwdWJyaW5mby0+cHVidGFibGU7 CiAJUFFFeHBCdWZmZXIgcXVlcnk7CiAJY2hhcgkgICAqdGFnOworCWNoYXIJICAgKmRlc2NyaXB0 aW9uOwogCiAJLyogRG8gbm90aGluZyBpbiBkYXRhLW9ubHkgZHVtcCAqLwogCWlmIChkb3B0LT5k YXRhT25seSkKQEAgLTQzMzAsOCArNDM1MCwxNSBAQCBkdW1wUHVibGljYXRpb25UYWJsZShBcmNo aXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblJlbEluZm8gKnB1YnJpbmZvKQogCiAJcXVlcnkg PSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCi0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFRF UiBQVUJMSUNBVElPTiAlcyBBREQgVEFCTEUgT05MWSIsCisJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksICJBTFRFUiBQVUJMSUNBVElPTiAlcyBBREQgIiwKIAkJCQkJICBmbXRJZChwdWJpbmZvLT5k b2JqLm5hbWUpKTsKKworCWlmIChiZXhjZXB0KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIkVYQ0VQVCAiKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiVEFCTEUgT05M WSIpOworCWRlc2NyaXB0aW9uID0gKGJleGNlcHQpID8gIlBVQkxJQ0FUSU9OIEVYQ0VQVCBUQUJM RSIgOiAiUFVCTElDQVRJT04gVEFCTEUiOworCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIg JXMiLAogCQkJCQkgIGZtdFF1YWxpZmllZER1bXBhYmxlKHRiaW5mbykpOwogCkBAIC00MzYwLDcg KzQzODcsNyBAQCBkdW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJs aWNhdGlvblJlbEluZm8gKnB1YnJpbmZvKQogCQkJCQkgQVJDSElWRV9PUFRTKC50YWcgPSB0YWcs CiAJCQkJCQkJCSAgLm5hbWVzcGFjZSA9IHRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFt ZSwKIAkJCQkJCQkJICAub3duZXIgPSBwdWJpbmZvLT5yb2xuYW1lLAotCQkJCQkJCQkgIC5kZXNj cmlwdGlvbiA9ICJQVUJMSUNBVElPTiBUQUJMRSIsCisJCQkJCQkJCSAgLmRlc2NyaXB0aW9uID0g ZGVzY3JpcHRpb24sCiAJCQkJCQkJCSAgLnNlY3Rpb24gPSBTRUNUSU9OX1BPU1RfREFUQSwKIAkJ CQkJCQkJICAuY3JlYXRlU3RtdCA9IHF1ZXJ5LT5kYXRhKSk7CiAKQEAgLTk5MzUsOCArOTk2Miwx MSBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRv YmopCiAJCWNhc2UgRE9fUFVCTElDQVRJT046CiAJCQlkdW1wUHVibGljYXRpb24oZm91dCwgKGNv bnN0IFB1YmxpY2F0aW9uSW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1BVQkxJ Q0FUSU9OX0VYQ0VQVF9SRUw6CisJCQlkdW1wUHVibGljYXRpb25UYWJsZShmb3V0LCAoY29uc3Qg UHVibGljYXRpb25SZWxJbmZvICopIGRvYmosIHRydWUpOworCQkJYnJlYWs7CiAJCWNhc2UgRE9f UFVCTElDQVRJT05fUkVMOgotCQkJZHVtcFB1YmxpY2F0aW9uVGFibGUoZm91dCwgKGNvbnN0IFB1 YmxpY2F0aW9uUmVsSW5mbyAqKSBkb2JqKTsKKwkJCWR1bXBQdWJsaWNhdGlvblRhYmxlKGZvdXQs IChjb25zdCBQdWJsaWNhdGlvblJlbEluZm8gKikgZG9iaiwgZmFsc2UpOwogCQkJYnJlYWs7CiAJ CWNhc2UgRE9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BOgogCQkJZHVtcFB1YmxpY2F0aW9u TmFtZXNwYWNlKGZvdXQsCkBAIC0xNzg2OCw2ICsxNzg5OCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5k ZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoqZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19E RUZBVUxUX0FDTDoKIAkJCWNhc2UgRE9fUE9MSUNZOgogCQkJY2FzZSBET19QVUJMSUNBVElPTjoK KwkJCWNhc2UgRE9fUFVCTElDQVRJT05fRVhDRVBUX1JFTDoKIAkJCWNhc2UgRE9fUFVCTElDQVRJ T05fUkVMOgogCQkJY2FzZSBET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUE6CiAJCQljYXNl IERPX1NVQlNDUklQVElPTjoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDFkMjFjMjkwNmYuLjA3YTUwZWNlNjgg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaApAQCAtODAsNiArODAsNyBAQCB0eXBlZGVmIGVudW0KIAlET19SRUZSRVNI X01BVFZJRVcsCiAJRE9fUE9MSUNZLAogCURPX1BVQkxJQ0FUSU9OLAorCURPX1BVQkxJQ0FUSU9O X0VYQ0VQVF9SRUwsCiAJRE9fUFVCTElDQVRJT05fUkVMLAogCURPX1BVQkxJQ0FUSU9OX1RBQkxF X0lOX1NDSEVNQSwKIAlET19TVUJTQ1JJUFRJT04KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wX3NvcnQuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCA1 ZGUzMjQxZWI0Li5hNjU5NWYyNWE2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC05MCw2ICs5 MCw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fRktfQ09OU1RSQUlOVCwK IAlQUklPX1BPTElDWSwKIAlQUklPX1BVQkxJQ0FUSU9OLAorCVBSSU9fUFVCTElDQVRJT05fRVhD RVBUX1JFTCwKIAlQUklPX1BVQkxJQ0FUSU9OX1JFTCwKIAlQUklPX1BVQkxJQ0FUSU9OX1RBQkxF X0lOX1NDSEVNQSwKIAlQUklPX1NVQlNDUklQVElPTiwKQEAgLTE0NCw2ICsxNDUsNyBAQCBzdGF0 aWMgY29uc3QgaW50IGRiT2JqZWN0VHlwZVByaW9yaXR5W10gPQogCVBSSU9fUkVGUkVTSF9NQVRW SUVXLAkJLyogRE9fUkVGUkVTSF9NQVRWSUVXICovCiAJUFJJT19QT0xJQ1ksCQkJCS8qIERPX1BP TElDWSAqLwogCVBSSU9fUFVCTElDQVRJT04sCQkJLyogRE9fUFVCTElDQVRJT04gKi8KKwlQUklP X1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUwsCS8qIERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUwgKi8K IAlQUklPX1BVQkxJQ0FUSU9OX1JFTCwJCS8qIERPX1BVQkxJQ0FUSU9OX1JFTCAqLwogCVBSSU9f UFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BLAkvKiBET19QVUJMSUNBVElPTl9UQUJMRV9JTl9T Q0hFTUEgKi8KIAlQUklPX1NVQlNDUklQVElPTgkJCS8qIERPX1NVQlNDUklQVElPTiAqLwpAQCAt MTQ4Myw2ICsxNDg1LDExIEBAIGRlc2NyaWJlRHVtcGFibGVPYmplY3QoRHVtcGFibGVPYmplY3Qg Km9iaiwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJICJQVUJMSUNBVElPTiAoSUQgJWQg T0lEICV1KSIsCiAJCQkJCSBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCQkJcmV0dXJu OworCQljYXNlIERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUw6CisJCQlzbnByaW50ZihidWYsIGJ1 ZnNpemUsCisJCQkJCSAiUFVCTElDQVRJT04gRVhDRVBUIFRBQkxFIChJRCAlZCBPSUQgJXUpIiwK KwkJCQkJIG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CisJCQlyZXR1cm47CiAJCWNhc2Ug RE9fUFVCTElDQVRJT05fUkVMOgogCQkJc25wcmludGYoYnVmLCBidWZzaXplLAogCQkJCQkgIlBV QkxJQ0FUSU9OIFRBQkxFIChJRCAlZCBPSUQgJXUpIiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwK aW5kZXggM2IzMWUxM2Y2Mi4uOWIwMzdkMWViNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwK QEAgLTI0NTQsNiArMjQ1NCwxNSBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4geyAlZnVsbF9y dW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCiAKKwknQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjUnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsICAgPT4g J0NSRUFURSBQVUJMSUNBVElPTiBwdWI1IEZPUiBBTEwgVEFCTEVTOycsCisJCXJlZ2V4cCA9PiBx ci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI1IEZPUiBBTEwgVEFCTEVTIFdJVEggKHB1 Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAor CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAor CiAJJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAs CiAJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxCkBAIC0yNTU4LDYg KzI1NjcsMjAgQEAgbXkgJXRlc3RzID0gKAogCQl1bmxpa2UgPT4geyBleGNsdWRlX2R1bXBfdGVz dF9zY2hlbWEgPT4gMSwgfSwKIAl9LAogCisJJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjUgQUREIEVY Q0VQVCBUQUJMRSB0ZXN0X3RhYmxlJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1MiwKKwkJY3Jl YXRlX3NxbCA9PgorCQkgICdBTFRFUiBQVUJMSUNBVElPTiBwdWI1IEFERCBFWENFUFQgVEFCTEUg ZHVtcF90ZXN0LnRlc3RfdGFibGU7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxURVIgUFVC TElDQVRJT04gcHViNSBBREQgRVhDRVBUIFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGU7 XEUKKwkJCS94bSwKKwkJbGlrZSAgID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEg PT4gMSwgfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAx LAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlICAgICAgID0+IDEsCisJCX0sCisJfSwKKwogCSdDUkVB VEUgU0NIRU1BIHB1YmxpYycgPT4gewogCQlyZWdleHAgPT4gcXIvXkNSRUFURSBTQ0hFTUEgcHVi bGljOy9tLAogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCmluZGV4IDQzNjlmMjIzNWIuLjEwNTdlOWU3Y2YgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBA IC0yOTUyLDE1ICsyOTUyLDMyIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIg KnNjaGVtYW5hbWUsCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBw XG4iCiAJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBP TiBwLm9pZCA9IHByLnBycHViaWRcbiIKIAkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdf Y2xhc3MgYyBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkJICAiV0hFUkUgcHIucHJy ZWxpZCA9ICclcydcbiIKLQkJCQkJCQkJICAiVU5JT05cbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIu cHJyZWxpZCA9ICclcyciLAorCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQpOworCisJCQkJLyogRklY TUU6IDE1MDAwMCBzaG91bGQgYmUgY2hhbmdlZCB0byAxNjAwMDAgbGF0ZXIgZm9yIFBHMTYuICov CisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmYnVmLCAiIEFORCBwci5wcmV4Y2VwdCA9ICdmJ1xuIik7CisKKwkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmYnVmLCAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKIAkJ CQkJCQkJICAiCQksIE5VTExcbiIKIAkJCQkJCQkJICAiCQksIE5VTExcbiIKIAkJCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiV0hFUkUgcC5w dWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVz JylcbiIKLQkJCQkJCQkJICAiT1JERVIgQlkgMTsiLAotCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQs IG9pZCk7CisJCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBn X3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iLAorCQkJCQkJCQkgIG9pZCk7CisKKwkJ CQkvKiBGSVhNRTogMTUwMDAwIHNob3VsZCBiZSBjaGFuZ2VkIHRvIDE2MDAwMCBsYXRlciBmb3Ig UEcxNi4gKi8KKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCQkJCWFwcGVuZFBR RXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICIJCUFORCBOT1QgRVhJU1RTIChTRUxFQ1QgMVxu IgorCQkJCQkJCQkJICAiCQkJCQkJCUZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwg cHJcbiIKKwkJCQkJCQkJCSAgIgkJCQkJCQkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBjXG4i CisJCQkJCQkJCQkgICIJICAJIAkJCQkJCU9OIHByLnBycmVsaWQgPSBwYy5vaWRcbiIKKwkJCQkJ CQkJCSAgIgkJCQkJCQlXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIucHJwdWJpZCA9IHAu b2lkKVxuIiwKKwkJCQkJCQkJCSAgb2lkKTsKKworCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsICJPUkRFUiBCWSAxOyIpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtNjMwMiw4ICs2MzE5 LDEzIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJ ICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgogCQkJCQkJCSAgIldI RVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIKIAkJCQkJCQkgICIgIEFORCBjLm9pZCA9IHBy LnBycmVsaWRcbiIKLQkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIgotCQkJCQkJ CSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKKwkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0g JyVzJ1xuIiwgcHViaWQpOworCisJCQkvKiBGSVhNRTogMTUwMDAwIHNob3VsZCBiZSBjaGFuZ2Vk IHRvIDE2MDAwMCBsYXRlciBmb3IgUEcxNi4gKi8KKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1 MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICBBTkQgcHIucHJleGNlcHQgPSAn ZidcbiIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiT1JERVIgQlkgMSwyIik7CiAJ CQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlczoiKSwgZmFs c2UsICZjb250KSkKIAkJCQlnb3RvIGVycm9yX3JldHVybjsKIApAQCAtNjMyMiw2ICs2MzQ0LDIy IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQl9CiAJCX0K IAorCQkvKiBGSVhNRTogMTUwMDAwIHNob3VsZCBiZSBjaGFuZ2VkIHRvIDE2MDAwMCBsYXRlciBm b3IgUEcxNi4gKi8KKwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQl7CisJCQkvKiBH ZXQgdGhlIGV4Y2x1ZGVkIHRhYmxlcyBmb3IgdGhlIHNwZWNpZmllZCBwdWJsaWNhdGlvbiAqLwor CQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgY29uY2F0KGMucmVs bmFtZXNwYWNlOjpyZWduYW1lc3BhY2UsICcuJywgYy5yZWxuYW1lKVxuIgorCQkJCQkJCSAgIkZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4iCisJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFs b2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJ CSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnXG4iCisJCQkJCQkJICAiICBBTkQgcHIucHJleGNl cHQgPSAndCdcbiIKKwkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOworCQkJaWYgKCFhZGRG b290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCAiRXhjZXB0IHRhYmxlczoiLAorCQkJCQkJCQkJ CQl0cnVlLCAmY29udCkpCisJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCX0KKwogCQlwcmludFRh YmxlKCZjb250LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CiAJCXByaW50 VGFibGVDbGVhbnVwKCZjb250KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDU4OGMwODQxZmUuLjc4 NzBlMTZhY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTE4MjIsOCArMTgyMiwxMSBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQlDT01QTEVU RV9XSVRIKCJBREQiLCAiRFJPUCIsICJPV05FUiBUTyIsICJSRU5BTUUgVE8iLCAiU0VUIik7CiAJ LyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiKSkKKwkJQ09NUExFVEVfV0lUSCgi QUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiRVhDRVBUIFRBQkxFIiwgIlRBQkxFIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJFWENF UFQiKSkKIAkJQ09NUExFVEVfV0lUSCgiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsK IAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQURE fFNFVCIsICJUQUJMRSIpIHx8CisJCQkgTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkFERHxTRVQiLCAiRVhDRVBUIiwgIlRBQkxFIikgfHwKIAkJCSAoSGVhZE1hdGNo ZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFIikg JiYKIAkJCSAgZW5kc193aXRoKHByZXZfd2QsICcsJykpKQogCQlDT01QTEVURV9XSVRIX1NDSEVN QV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwpAQCAtMTg0NSwxMCArMTg0OCwxNCBA QCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQog CQlDT01QTEVURV9XSVRIKCIsIik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IERST1Ag Ki8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi RFJPUCIpKQotCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIp OworCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJFWENFUFQgVEFCTEUi LCAiVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiRFJPUCIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUiKTsKIAkv KiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIpKQotCQlDT01QTEVURV9XSVRIKCIo IiwgIkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJCUNPTVBMRVRFX1dJVEgoIigi LCAiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiRVhDRVBUIFRBQkxFIiwgIlRBQkxFIik7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJF WENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIkFMTCIsICJU QUJMRVMiLCAiSU4iLCAiU0NIRU1BIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUllfUExVUyhRdWVy eV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAiIEFORCBuc3BuYW1lIE5PVCBMSUtFIEUn cGdcXFxcXyUlJyIsCkBAIC0yOTg1LDcgKzI5OTIsOSBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFU RSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIpKQogCQlDT01QTEVURV9X SVRIKCJUQUJMRVMiLCAiVEFCTEVTIElOIFNDSEVNQSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNS RUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiKSkK LQkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIiwgIldJVEggKCIpOworCQlDT01QTEVURV9XSVRI KCJJTiBTQ0hFTUEiLCAiV0lUSCAoIiwgIkVYQ0VQVCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJM RVMiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CiAJZWxzZSBpZiAoTWF0 Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUiLCBN YXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCJX SEVSRSAoIiwgIldJVEggKCIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5h bWU+IEZPUiBUQUJMRSIgd2l0aCAiPHRhYmxlPiwgLi4uIiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oCmluZGV4IDI5YjE4NTY2NjUuLmVlZWU5NmY0MmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTEwOCwxMSArMTA4LDEyIEBAIHR5cGVkZWYgc3RydWN0 IFB1YmxpY2F0aW9uUmVsSW5mbwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCU5vZGUJICAgKndoZXJl Q2xhdXNlOwogCUxpc3QJICAgKmNvbHVtbnM7CisJYm9vbAkJZXhjZXB0OwogfSBQdWJsaWNhdGlv blJlbEluZm87CiAKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRpb24oT2lkIHB1Ymlk KTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRpb25CeU5hbWUoY29uc3QgY2hhciAq cHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKLWV4dGVybiBMaXN0ICpHZXRSZWxhdGlvblB1Ymxp Y2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25z KE9pZCByZWxpZCwgYm9vbCBiZXhjZXB0KTsKIAogLyotLS0tLS0tLS0KICAqIEV4cGVjdGVkIHZh bHVlcyBmb3IgcHViX3BhcnRvcHQgcGFyYW1ldGVyIG9mIEdldFJlbGF0aW9uUHVibGljYXRpb25z KCksCkBAIC0xMzIsNyArMTMzLDcgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAog CiBleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNh dGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1Ymxp Y2F0aW9ucyh2b2lkKTsKLWV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0 aW9ucyhib29sIHB1YnZpYXJvb3QpOworZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgYm9vbCBwdWJ2aWFyb290KTsKIGV4dGVybiBMaXN0ICpH ZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQ dWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNh dGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsCkBAIC0xNDMsNyArMTQ0LDcgQEAgZXh0ZXJuIExp c3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiAJCQkJCQkJ CQkJCVB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJT2lkIHJlbGlk KTsKIGV4dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lk LCBMaXN0ICphbmNlc3RvcnMsCi0JCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwpOworCQkJ CQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsLCBib29sIHB1YmFsbHRhYmxlcyk7CiAKIGV4dGVy biBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gYm9v bCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uX3JlbC5oCmluZGV4IDRmZWI1ODE4OTkuLjJlYjFmYmVhYmQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAtMzEsNiArMzEsNyBAQCBDQVRB TE9HKHBnX3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCkKIAlP aWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcHJwdWJpZCBCS0lfTE9PS1VQKHBnX3B1Ymxp Y2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCU9pZAkJCXBycmVsaWQgQktJ X0xPT0tVUChwZ19jbGFzcyk7CS8qIE9pZCBvZiB0aGUgcmVsYXRpb24gKi8KKwlib29sCQlwcmV4 Y2VwdCBCS0lfREVGQVVMVChmKTsJLyogZXhjZXB0IHRoZSByZWxhdGlvbiAqLwogCiAjaWZkZWYJ Q0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8K IAlwZ19ub2RlX3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmgKaW5kZXggYWU4N2NhZjA4OS4uYTUxNWNkYjgwMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKQEAgLTMyLDggKzMyLDggQEAgZXh0 ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJQdWJsaWNhdGlvbk93bmVyKGNvbnN0IGNoYXIgKm5hbWUs IE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEFsdGVyUHVibGljYXRpb25Pd25lcl9vaWQo T2lkIHB1YmlkLCBPaWQgbmV3T3duZXJJZCk7CiBleHRlcm4gdm9pZCBJbnZhbGlkYXRlUHVibGlj YXRpb25SZWxzKExpc3QgKnJlbGlkcyk7CiBleHRlcm4gYm9vbCBwdWJfcmZfY29udGFpbnNfaW52 YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCSBMaXN0 ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9vdCk7CisJCQkJCQkJCQkJICAgTGlzdCAqYW5jZXN0 b3JzLCBib29sIHB1YnZpYXJvb3QsIGJvb2wgYWxsdGFibGVzKTsKIGV4dGVybiBib29sIHB1Yl9j b2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRp b24sCi0JCQkJCQkJCQkgTGlzdCAqYW5jZXN0b3JzLCBib29sIHB1YnZpYXJvb3QpOworCQkJCQkJ CQkJCQkJTGlzdCAqYW5jZXN0b3JzLCBib29sIHB1YnZpYXJvb3QsIGJvb2wgYWxsdGFibGVzKTsK IAogI2VuZGlmCQkJCQkJCS8qIFBVQkxJQ0FUSU9OQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKaW5kZXggZGEwMjY1OGM4MS4uMzA4ZDNjMDdhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApA QCAtNDAwMyw2ICs0MDAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQogCVJh bmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gYmUgcHVibGlzaGVkICovCiAJTm9k ZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJTGlzdAkgICAqY29sdW1u czsJCS8qIExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxlICovCisJYm9vbAkJ ZXhjZXB0OwkJCS8qIGV4Y2VwdCByZWxhdGlvbiAqLwogfSBQdWJsaWNhdGlvblRhYmxlOwogCiAv KgpAQCAtNDAyMyw2ICs0MDI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25PYmpTcGVj CiAJUHVibGljYXRpb25PYmpTcGVjVHlwZSBwdWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVi bGljYXRpb24gb2JqZWN0ICovCiAJY2hhcgkgICAqbmFtZTsKIAlQdWJsaWNhdGlvblRhYmxlICpw dWJ0YWJsZTsKKwlib29sCQlleGNlcHQ7CiAJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2Nh dGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbk9ialNwZWM7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMzk4YzBmMzhmNi4uNjMw ODMwYThjZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAg LTExNiw2ICsxMTYsMzUgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQg QUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAg ICJwdWJfdGVzdCIKIAorLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIGV4Y2VwdCB0YWJsZSB0byAn Rk9SIEFMTCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cmFsbHRhYmxlcyBBREQgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKK1xkUnArIHRlc3RwdWJf Zm9yYWxsdGFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcmFsbHRhYmxlcworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0t IHNob3VsZCBiZSBhYmxlIHRvIHNldCBleGNlcHQgdGFibGUgdG8gJ0ZPUiBBTEwgVEFCTEVTJyBw dWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgU0VUIEVY Q0VQVCBUQUJMRSB0ZXN0cHViX3RibDI7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJs ZXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCitFeGNlcHQg dGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgorCistLSBzaG91bGQgYmUgYWJsZSB0 byBkcm9wIGV4Y2VwdCB0YWJsZSBmcm9tICdGT1IgQUxMIFRBQkxFUycgcHVibGljYXRpb24KK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIERST1AgRVhDRVBUIFRBQkxFIHRl c3RwdWJfdGJsMjsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlcworICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKygxIHJvdykKKwogU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y c2NoZW1hIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CkBAIC0xNDEsNiArMTcwLDMwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yc2NoZW1hIFNFVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBUYWJsZXM6CiAg ICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIAorLS0gZmFpbCAtIGNhbid0IGFkZCBleGNlcHQg dGFibGUgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGUgQUREIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CitFUlJPUjogIHB1Ymxp Y2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIiBpcyBub3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxF UworREVUQUlMOiAgZXhjZXB0IHRhYmxlIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9t LCBvciBzZXQgb24gTk9OIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0 IGRyb3AgZXhjZXB0IHRhYmxlIGZyb20gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90Ymwx OworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YWJsZSIgaXMgbm90IGRlZmluZWQg YXMgRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIGV4Y2VwdCB0YWJsZSBjYW5ub3QgYmUgYWRkZWQg dG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4K Ky0tIGZhaWwgLSBjYW4ndCBzZXQgZXhjZXB0IHRhYmxlIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0 aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBFWENFUFQgVEFCTEUg dGVzdHB1Yl90YmwxOworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YWJsZSIgaXMg bm90IGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIGV4Y2VwdCB0YWJsZSBjYW5u b3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFCTEVTIHB1 YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4ndCBhZGQgZXhjZXB0IHRhYmxlIHRvIHNjaGVtYSBw dWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIEVYQ0VQ VCBUQUJMRSB0ZXN0cHViX3RibDE7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNj aGVtYSIgaXMgbm90IGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIGV4Y2VwdCB0 YWJsZSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwg VEFCTEVTIHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4ndCBkcm9wIGV4Y2VwdCB0YWJsZSBm cm9tIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hl bWEgRFJPUCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworRVJST1I6ICBwdWJsaWNhdGlvbiAi dGVzdHB1Yl9mb3JzY2hlbWEiIGlzIG5vdCBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTCitERVRB SUw6ICBleGNlcHQgdGFibGUgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNl dCBvbiBOT04gQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2FuJ3Qgc2V0IGV4 Y2VwdCB0YWJsZSB0byBzY2hlbWEgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yc2NoZW1hIFNFVCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworRVJST1I6ICBwdWJs aWNhdGlvbiAidGVzdHB1Yl9mb3JzY2hlbWEiIGlzIG5vdCBkZWZpbmVkIGFzIEZPUiBBTEwgVEFC TEVTCitERVRBSUw6ICBleGNlcHQgdGFibGUgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZy b20sIG9yIHNldCBvbiBOT04gQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCiBTRUxFQ1QgcHVibmFt ZSwgcHViYWxsdGFibGVzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0ZXN0 cHViX2ZvcmFsbHRhYmxlcyc7CiAgICAgICAgcHVibmFtZSAgICAgICAgfCBwdWJhbGx0YWJsZXMg CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCkBAIC0xNjUsOCArMjE4LDM0 IEBAIFB1YmxpY2F0aW9uczoKICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQog CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFIHRlc3RwdWJfdGJsMTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitcZFJwKyB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgorCistLSBmYWlsIC0gY2FuJ3Qgc3BlY2lmeSBleGNlcHQgdGFibGUg YWxvbmcgd2l0aCB0YWJsZSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9ydGFibGVfZXhjZXB0dGFibGUgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9waywgRVhD RVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKK0VSUk9SOiAgRVhDRVBUIFRBQkxFIGNhbiBiZSBzcGVj aWZpZWQgb25seSB3aXRoIEFMTCBUQUJMRVMgb3B0aW9uCitMSU5FIDE6IC4uLmFibGVfZXhjZXB0 dGFibGUgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9waywgRVhDRVBUIFRBQi4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIGZhaWwgLSBjYW4ndCBzcGVjaWZ5IGV4Y2VwdCB0YWJsZSBhbG9uZyB3aXRoIHNjaGVt YSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfZXhjZXB0 dGFibGUgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBFWENFUFQgVEFCTEUgdGVz dHB1Yl90YmwxOworRVJST1I6ICBFWENFUFQgVEFCTEUgY2FuIGJlIHNwZWNpZmllZCBvbmx5IHdp dGggQUxMIFRBQkxFUyBvcHRpb24KK0xJTkUgMTogLi4ubGVfZXhjZXB0dGFibGUgRk9SIEFMTCBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBFWENFUFQgVEFCLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbCAt IGNhbid0IHNwZWNpZnkgb25seSBleGNlcHQgdGFibGUgd2hpbGUgY3JlYXRlIHB1YmxpY2F0aW9u CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZV9leGNlcHR0YWJsZSBGT1IgRVhD RVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKK0VSUk9SOiAgRVhDRVBUIFRBQkxFIGNhbiBiZSBzcGVj aWZpZWQgb25seSB3aXRoIEFMTCBUQUJMRVMgb3B0aW9uCitMSU5FIDE6IC4uLkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3J0YWJsZV9leGNlcHR0YWJsZSBGT1IgRVhDRVBUIFRBQi4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KIERST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWE7CitEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHVi X2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGU7CiBDUkVBVEUgVEFC TEUgdGVzdHB1Yl90YmwzIChhIGludCk7CiBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0 ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA5ZWI4NmZkNTRm Li43NDYwOThlY2I0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlv bi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC03MSw2 ICs3MSwxNiBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgQUxMIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRh YmxlIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJfZm9y dGFibGUKIAorLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIGV4Y2VwdCB0YWJsZSB0byAnRk9SIEFM TCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRh YmxlcyBBREQgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKK1xkUnArIHRlc3RwdWJfZm9yYWxs dGFibGVzCistLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgZXhjZXB0IHRhYmxlIHRvICdGT1IgQUxM IFRBQkxFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzIFNFVCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwyOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0 YWJsZXMKKy0tIHNob3VsZCBiZSBhYmxlIHRvIGRyb3AgZXhjZXB0IHRhYmxlIGZyb20gJ0ZPUiBB TEwgVEFCTEVTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0 YWJsZXMgRFJPUCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwyOworXGRScCsgdGVzdHB1Yl9mb3Jh bGx0YWJsZXMKKwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdDsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CkBAIC04NSwxMiArOTUsNDAgQEAgQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX25vcGs7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKIAorLS0gZmFp bCAtIGNhbid0IGFkZCBleGNlcHQgdGFibGUgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIEVYQ0VQVCBUQUJMRSB0ZXN0cHVi X3RibDE7CistLSBmYWlsIC0gY2FuJ3QgZHJvcCBleGNlcHQgdGFibGUgZnJvbSAnRk9SIFRBQkxF JyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBEUk9QIEVY Q0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CistLSBmYWlsIC0gY2FuJ3Qgc2V0IGV4Y2VwdCB0YWJs ZSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBTRVQgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKKworLS0gZmFpbCAtIGNhbid0 IGFkZCBleGNlcHQgdGFibGUgdG8gc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnNjaGVtYSBBREQgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKKy0tIGZh aWwgLSBjYW4ndCBkcm9wIGV4Y2VwdCB0YWJsZSBmcm9tIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRFJPUCBFWENFUFQgVEFCTEUgdGVzdHB1 Yl90YmwxOworLS0gZmFpbCAtIGNhbid0IHNldCBleGNlcHQgdGFibGUgdG8gc2NoZW1hIHB1Ymxp Y2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgRVhDRVBUIFRB QkxFIHRlc3RwdWJfdGJsMTsKIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMgRlJPTSBwZ19w dWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZm9yYWxsdGFibGVzJzsKIFxkKyB0 ZXN0cHViX3RibDIKIFxkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCiAKK1NFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRh Ymxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgdGVzdHB1Yl90Ymwx OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJs ZXNfZXhjZXB0dGFibGUKKworLS0gZmFpbCAtIGNhbid0IHNwZWNpZnkgZXhjZXB0IHRhYmxlIGFs b25nIHdpdGggdGFibGUgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlX2V4Y2VwdHRhYmxlIEZPUiBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGssIEVYQ0VQ VCBUQUJMRSB0ZXN0cHViX3RibDE7CisKKy0tIGZhaWwgLSBjYW4ndCBzcGVjaWZ5IGV4Y2VwdCB0 YWJsZSBhbG9uZyB3aXRoIHNjaGVtYSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9ydGFibGVfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0LCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworCistLSBmYWlsIC0gY2FuJ3Qgc3BlY2lm eSBvbmx5IGV4Y2VwdCB0YWJsZSB3aGlsZSBjcmVhdGUgcHVibGljYXRpb24KK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2V4Y2VwdHRhYmxlIEZPUiBFWENFUFQgVEFCTEUgdGVz dHB1Yl90YmwxOworCiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKLURST1AgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1h OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJs ZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlOwog CiBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7CiBDUkVBVEUgVEFCTEUgdGVzdHB1 Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzM19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzNfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjFmNjE0MWNlY2EKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzNfcmVwX2NoYW5nZXNfZXhjZXB0 X3RhYmxlLnBsCkBAIC0wLDAgKzEsOTcgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0 aW9uIHRlc3RzIGZvciBleGNlcHQgdGFibGUgcHVibGljYXRpb25zCit1c2Ugc3RyaWN0OwordXNl IHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1Ymxpc2hl ciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNj cmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3Ry ZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBUZXN0 IHJlcGxpY2F0aW9uIHdpdGggcHVibGljYXRpb25zIGNyZWF0ZWQgdXNpbmcgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFCisjIG9wdGlvbi4KKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBv biBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVB VEUgU0NIRU1BIHNjaDEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkNSRUFURSBUQUJMRSBzY2gxLnRhYjEgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEw KSBBUyBhIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVEFCTEUgcHVibGljLnRhYjEoYSBpbnQpIik7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRh YmxlcyBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkNSRUFURSBTQ0hFTUEgc2NoMSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGludCkiKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHB1YmxpYy50YWIxIChh IGludCkiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nv bm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHNjaDEudGFiMSIp OworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViX3NjaGVtYSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIn IFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOworCisjIEFsc28gd2FpdCBmb3IgaW5pdGlh bCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorbXkgJHN5bmNlZF9xdWVyeSA9CisgICJTRUxFQ1QgY291 bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0YXRlIE5PVCBJ TiAoJ3InLCAncycpOyI7Ciskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsICRzeW5jZWRfcXVlcnkpCisgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcg Zm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0YSI7CisKKyMgQ2hlY2sgdGhlIHRhYmxl IGRhdGEgZG9lcyBub3Qgc3luYyBmb3IgZXhjbHVkZWQgdGFibGUKK215ICRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBt aW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2No ZWNrIHRhYmxlc3luYyBpcyBleGNsdWRlZCBmb3IgZXhjbHVkZWQgdGFibGVzJyk7CisKKyMgSW5z ZXJ0IHNvbWUgZGF0YSBpbnRvIGZldyB0YWJsZXMgYW5kIHZlcmlmeSB0aGF0IGluc2VydGVkIGRh dGEgaXMgbm90CisjIHJlcGxpY2F0ZWQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDEx LDIwKSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3Nj aGVtYScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsK K2lzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2Ny aWJlcicpOworCisjIEFsdGVyIHB1YmxpY2F0aW9uIHRvIGV4Y2x1ZGUgZGF0YSBjaGFuZ2VzIGlu IHB1YmxpYy50YWIxIGFuZCB2ZXJpZnkgdGhhdAorIyBzdWJzY3JpYmVyIGRvZXMgbm90IGdldCB0 aGUgbmV3IHRhYmxlIGRhdGEuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorICAgICAgICAiQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgYWRkIEVYQ0VQVCBU QUJMRSBwdWJsaWMudGFiMSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKyAgICAgICAgIklOU0VSVCBJTlRPIHB1YmxpYy50YWIxIFZBTFVFUyhnZW5lcmF0ZV9zZXJp ZXMoMSwxMCkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1 Yl9zY2hlbWEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gcHVibGljLnRh YjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByb3dzIG9uIHN1YnNjcmliZXIgY2F0 Y2h1cCcpOworCisjIEFsdGVyIHB1YmxpY2F0aW9uIHRvIGRyb3AgZXhjZXB0IHRhYmxlIHB1Ymxp Yy50YWIxIGFuZCB2ZXJpZnkgdGhhdCBzdWJzY3JpYmVyCisjIGdldHMgdGhlIG5ldyB0YWJsZSBk YXRhLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAgICAgIkFM VEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIGRyb3AgRVhDRVBUIFRBQkxFIHB1YmxpYy50 YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICAgICAi SU5TRVJUIElOVE8gcHVibGljLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxLDEwKSkiKTsK KworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOwor CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAg ICAgICJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gcHVibGljLnRhYjEiKTsK K2lzKCRyZXN1bHQsIHFxKDEwfDF8MTApLCAnY2hlY2sgcm93cyBvbiBzdWJzY3JpYmVyIGNhdGNo dXAnKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOworJG5vZGVfcHVibGlzaGVy LT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zMi4wCgo= --0000000000005e543d05ddc98c75--