Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnY3l-008ePX-2V for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Feb 2026 08:16:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vnY3k-009vuf-2u for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Feb 2026 08:16:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnY3j-009vuN-2y for pgsql-hackers@lists.postgresql.org; Wed, 04 Feb 2026 08:16:24 +0000 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vnY3f-00000000UYd-1UZ1 for pgsql-hackers@lists.postgresql.org; Wed, 04 Feb 2026 08:16:22 +0000 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-4043b27ddeaso3729754fac.1 for ; Wed, 04 Feb 2026 00:16:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770192978; cv=none; d=google.com; s=arc-20240605; b=PFibI/6buaq/OK7vAB9170P4/jqa+LA5ZYh0qAq0FUdUgSxvD4Lbghbo0M0A6XLEoT LYIBVGe+dHzell9NprG+mcszmIaAbFbBLwpdAWEM4MvBFhqb/SHLFRxzDnDB3trxtLjR 6R4gSCCADh33KKzw6jtEpBBk9oNBWr6FuBBxdLQzI2iuEx23Ckd+nuuOMdOzj4DjwWCQ be/4KsUkeHWr7g/1jYAB0W9Bim0q9gliZgB02s2H/S8JxcEbPyO4rJv/CFbyKs4wGioz zMpTHR7wIDuOe075v+NvJ+CnXFlhQcHG93S+Fvd8Yjk1Nb0Wgt+IXje3IMjAmLkuAzz8 QJIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=5MeXUkTxgZC83yNBuavw57Jg6JxqGlK9H4kS0NoYXoc=; fh=oagor4EUG2cOC7+eC5dasIQVBOavzLbq+xyElbxTbHo=; b=elmCb1UWzfg5vzdqHtf+u0nWfTEFHnpxrcTo5qC3n4yPvWCVMPvvRP00tCKFkV9udZ 1n6dqbvY2S+dsglL9VDmpNxGT+78xXJEd8cllkY0Z/mOmuAum0CAd16n2cQv0vxO4kMy rwvtSEhedHztANEmhHzjbTZlbCcfy5GZ1WPwjOnkoVRRAmoQL9IV/D76tYJdkvCKloRH ymxZ0++5x7kJ+sbTGQcruQdagD0rC/3h0qr1y92FhdLRkGlnpg3zjyAYtcnGqjszVMBp 0UzoH7UJN00YUBH91rsIKEl/btsW0D7FL2VrSJXVffF83MV3Tm0IR8z+qlQC0HJPpD6j vYPg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770192978; x=1770797778; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5MeXUkTxgZC83yNBuavw57Jg6JxqGlK9H4kS0NoYXoc=; b=h9V0WAhO7l7Edx111l7V2yc1gIZ2rzXVQ5McayiQ7VfEEWwAXONPXRI33lWnma9g3V aHaN2XlZby2L8enAkA+cz0viJBdNLgfZNiezwV3r906ikKAajj0EfN77oueoRyXlbr4h AH3bIu0SJL6ueWCDq+UJSBAvF5qaxlHxwwqP+jddFThNCnQJyg8+GVJxIQM256czqKNp v9Tkg3gXZjnsgYIvg1+SvPEJpFCNMlduDKVRp413j5OQdlzwO8P9jzVO9tr+YcLbsnwo mDiHwuU7OMwHtHx/RGcj5G+Wh7RXGh5NcmciYDzB9IylAl0Szyq4+YaSnlEz2Odi4GIm P1Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770192978; x=1770797778; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5MeXUkTxgZC83yNBuavw57Jg6JxqGlK9H4kS0NoYXoc=; b=SNO3+xNmhS7HSc2ldy5VU9U1xpzKVfPjtC2jP7Ld6GVjWaT062mZnIop6HYS48p6V8 BDrfhcq84hNs7S4xnm5V7sFaXww6tf8IUHD3crl29e3qikXiXvjbkrNCwKucomuM8AZZ gkJVWw/0ZYYe2r90mwSj4QTw0Rk7kK8urK0dxJ7wzoFjQ9GZZO52tTJST1BKmf37k1Yd zCBYJkbL1eKxBx3kWEDrXBdVpz3/W4YHPtOAZi572M/DpNXzr84lQ26YONAmpanifmp+ tzpm7igWV64J+r61zCfLrRf6evlviZ95xJzftSlXN7r8HySIRh2hyNascnpcQ6PS92sV gxfg== X-Forwarded-Encrypted: i=1; AJvYcCUPDaeQNkRgBfgobncxSy2Xrieooge3NEK9Ss0q0Ax0GeQCf8aLf6O713qqP3iyQY+AF9GuV6t+CWnrork4@lists.postgresql.org X-Gm-Message-State: AOJu0YzD6YmszC+2PTyQ7BQuOEYBzE+2tnSBmilMItNw8wh47R6W6WNo jibdecQE8Ap7RVikErDkN4xFIqyIXtykd/ohMjQHMM2hQJdePr7NwBm7lFx9tmQ/dpgI/pN6luh mK3xKFWFIcG4JUaVQ1sflmqKNamWSN4c= X-Gm-Gg: AZuq6aJUI0d2GKvYK+F3OgY9veEFRt9u1Y4bsglHtGsJewE7oESveV874nItGprKIuq Ssiw56u+QeDyZvOBG2Y5hw62F7fME7mepMmKkoT/MFeFDDBIv5voZ46PBMZ9SeBG3FNQ5NLyn2F cx4oFo//+n5qfmZ/4fGwIr7OCFiuPOGlnG9kD+TYXglzaXfQTbLKrOmCXn63Cz/S59PRW9FwUm+ F3YBMNsY6HIBBR0S5bTYjLjXhwkiPEyjGL1LmGA6GgetNxfpd4O3hLZcNXZ18dDSWxGr2FOmA== X-Received: by 2002:a05:6808:4446:b0:450:390e:61da with SMTP id 5614622812f47-462d58858bcmr1147665b6e.5.1770192978227; Wed, 04 Feb 2026 00:16:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Wed, 4 Feb 2026 13:46:06 +0530 X-Gm-Features: AZwV_QigRhxmg3sQi1YhdPnhQVfzW9Qp4os9nm_UmJ93QoMemjfSgovIHbd5a1M Message-ID: Subject: Re: Skipping schema changes in publication To: vignesh C Cc: shveta malik , Dilip Kumar , Amit Kapila , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a6f6620649fb2b9e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a6f6620649fb2b9e Content-Type: text/plain; charset="UTF-8" On Tue, 3 Feb 2026 at 22:23, vignesh C wrote: > > On Mon, 2 Feb 2026 at 17:18, Shlok Kyal wrote: > > > > I reviewed v38-0002-handle-EXCEPT-TABLE-correctly-with-partitioned-approach-1.patch > > patch. Here are my comments: > > > > 4. While testing, I noticed that the new query introduced in tablesync > > can be invoked for "FOR TABLE". SHould we only call it for "ALL > > TABLES" publications? > > + if (server_version >= 190000 && !is_partition && > > + lrel->relkind == RELKIND_PARTITIONED_TABLE) > > + { > > + resetStringInfo(&cmd); > > + > > + /* > > + * This query recursively traverses the inheritance (partition) tree > > + * starting from the given table OID and determines which leaf > > + * relations should be included for replication. Exclusion propagates > > + * from parent to child, and a relation is also treated as excluded if > > + * it is explicitly marked with prexcept = true in pg_publication_rel > > + * for the specified publications. The final result returns only > > + * non excluded leaf relations. > > + */ > > Test: > > Create publication for table sc1.t1 using (publish_via_partition_root > > = true) and create subscription on it. In subscriber logs we can see > > the logs for the new query. > > sc1.t1 has the same structure as in comment 1. > > We will not know if it is a table publication or all tables > publication from here. Also there can be a possibility of multiple > publications. We will invoke it and handle it from the publisher to > return appropriate tables. > > Thanks for the review and detailed comments. All remaining feedback > has been addressed in the attached v39 patch. > > In addition, the SQL query previously used to compute the set of > effective tables has been replaced with a C implementation. The SQL > approach had become increasingly complex and difficult to reason > about, especially as more publication combinations were added. > Implementing this logic in C significantly improves readability and > maintainability, and makes it easier to handle complex scenarios, such > as: > a) Multiple publications where one publication has no EXCEPT tables > and another does. > b) Multiple publications where one publication is an ALL TABLES > publication with EXCEPT, while another is a table-specific > publication. > c) Multiple publications where none of the publications define any > EXCEPT tables. > > Peter's comments from [1] and Shveta's comments form [2] will be > addressed in the next version. > [1] - https://www.postgresql.org/message-id/CAHut%2BPsiWwmNSuCXTWM0iPDm3yGskLts-fukELTB__rbBids-A%40mail.gmail.com > [2] - https://www.postgresql.org/message-id/CAJpy0uAOvtMBP-oV9Tgoznt5-UsE2dzAjZW3eJmgKcU-X-vEzg%40mail.gmail.com > Hi Vignesh, Thanks for providing the updated patch. While testing the patch I have found a small bug: ``` + if (am_partition) { List *ancestors = get_partition_ancestors(relid); - pub_relid = llast_oid(ancestors); - ancestor_level = list_length(ancestors); + foreach_oid(ancestor, ancestors) + GetRelationPublications(ancestor, NULL, &exceptpubids); + + if (pub->pubviaroot) + { + pub_relid = llast_oid(ancestors); + ancestor_level = list_length(ancestors); + } } GetRelationPublications(pub_relid, NULL, &exceptpubids); ``` Here at last "GetRelationPublications" should be called for 'relid', instead of 'pub_relid'. The call for function "GetRelationPublications" can be skipped for table which is not root partitioned but is specified explicitly in the EXCEPT TABLE list. Test: The partition structure is as: sc1.t1 - sc1.child1 - sc1.child1_1 - sc1.child1_2 - sc1.child2 Suppose we create two publications. CREATE PUBLICATION pub1 FOR ALL TABLES EXCEPT TABLE (sc1.child2) WITH (publish_via_partition_root = true); CREATE PUBLICATION pub2 FOR TABLE sc1.child1_1 WITH (publish_via_partition_root = true); And on subscriber node we create a subscriber as: CREATE SUBSCRIPTION sub1 CONNECTION 'host=localhost port=5432 dbname=postgres' PUBLICATION pub1, pub2; Ideally changes of 'sc1.child2' should not be replicated, but increment sync replicates the data for 'sc1.child2'. I have fixed this in the latest version of patch. I have also added extended tests for this patch as 0003 patch. The last test in the file tests the above issue. I have also addressed Peter's comment in [1]. For comment: > 3. > + appendPQExpBuffer(query, "ONLY %s", fmtQualifiedDumpable(tbinfo)); > > I think that unconditionally choosing "ONLY" here may not be the right > thing to do, particularly when the excluded table is a partitioned > table. (e.g. this is related to off-list discussions about how to > EXCEPT partition tables). The ONLY clause has no effect with partition tables but ONLY clause is required for inherited tables. And ALTER PUBLICATION ... ADD TABLE also uses ONLY clause unconditionally. So, I think this behaviour is consistent with ALTER PUBLICATION ... ADD TABLE According to the latest discussion, I think we are proceeding with Approach 1 in [2]. And EXCEPT TABLE is independent of ONLY. So, I think we can keep it. [1]: https://www.postgresql.org/message-id/CAHut+PvmCPdbScDoGV3jX42STm2F3DUWbj7nnbn5Y_zs6w8XWA@mail.gmail.com [2]: https://www.postgresql.org/message-id/CAJpy0uD81HRrMYr7S-6AV4W2PtbGKM-nf2D89zsoMHJ9jZssUg@mail.gmail.com Thanks, Shlok Kyal --000000000000a6f6620649fb2b9e Content-Type: application/octet-stream; name="v40-0002-handle-EXCEPT-TABLE-correctly-with-partitioned-t.patch" Content-Disposition: attachment; filename="v40-0002-handle-EXCEPT-TABLE-correctly-with-partitioned-t.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml7qohs41 RnJvbSAwOWY1MDRkYjAwMjhjYTM1ZjRiMWNiYTc3OWEyNmNlNmViM2RlYzQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxMjoyNjoyMSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjQw IDIvM10gaGFuZGxlIEVYQ0VQVCBUQUJMRSBjb3JyZWN0bHkgd2l0aCBwYXJ0aXRpb25lZCB0YWJs ZXMKCldoZW4gYSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHdpdGggRVhDRVBUIFRBQkxFLCBhZGp1 c3QgbG9naWNhbCByZXBsaWNhdGlvbgpzbyB0aGF0IGRhdGEgc3luY2hyb25pemF0aW9uIGFuZCBj aGFuZ2UgcmVwbGljYXRpb24gY29ycmVjdGx5IHJlc3BlY3QKZXhjbHVzaW9ucyBmb3IgcGFydGl0 aW9uZWQgdGFibGVzLgoKT24gdGhlIHN1YnNjcmliZXIgc2lkZSwgZXh0ZW5kIGZldGNoX3JlbW90 ZV90YWJsZV9pbmZvKCkgdG8gY29tcHV0ZSB0aGUKZWZmZWN0aXZlIHNldCBvZiByZWxhdGlvbnMg dXNlZCBmb3IgdGhlIGluaXRpYWwgQ09QWS4gV2hlbiBleGNsdXNpb25zIGFyZQpwcmVzZW50LCB0 aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgZGlyZWN0bHk7 IGluc3RlYWQsCmRlcml2ZSB0aGUgbGlzdCBvZiBub24tZXhjbHVkZWQgbGVhZiBwYXJ0aXRpb25z IGFuZCBjb21iaW5lIHRoZW0gd2l0aApVTklPTiBBTEwuIFdoZW4gbm8gZXhjbHVzaW9ucyBleGlz dCwgcmV0YWluIHRoZSBleGlzdGluZyBiZWhhdmlvciBhbmQgY29weQpmcm9tIHRoZSByb290IHJl bGF0aW9uIGFzIGJlZm9yZS4KClRoaXMgaXMgYmFzZWQgb24gYXBwcm9hY2ggMSBkaXNjdXNzZWQg YXQ6Cmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FKcHkwdUQ4MUhSck1Z cjdTLTZBVjRXMlB0YkdLTS1uZjJEODl6c29NSEo5alpzc1VnQG1haWwuZ21haWwuY29tCgpUaGlz IHBhdGNoIGlzIGEgdG9wdXAgcGF0Y2ggb24gdG9wIG9mIDAwMDEgcGF0Y2guCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICAgIHwgIDE3ICstCiBzcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCA0NDggKysrKysrKysrKysr KysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgMTUw ICsrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwg IDI1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAg IDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgICA2 ICsKIC4uLi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgICAgICAgICB8IDE1NiAr KystLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAg MSArCiA5IGZpbGVzIGNoYW5nZWQsIDY4OCBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggMWUwOTFiYjNj NmQuLjczMGI5YzRiY2VkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJs aWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwKQEAgLTIwNSwxNiArMjA1LDE1IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICB0YWJsZXMgYXJlIGV4 Y2x1ZGVkLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgRm9yIHBhcnRpdGlvbmVk IHRhYmxlcywgd2hlbiA8bGl0ZXJhbD5wdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJh bD4KLSAgICAgIGlzIHNldCB0byA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiwgc3BlY2lmeWluZyBh IHJvb3QgcGFydGl0aW9uZWQgdGFibGUgaW4KLSAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwv bGl0ZXJhbD4gZXhjbHVkZXMgaXQgYW5kIGFsbCBpdHMgcGFydGl0aW9ucyBmcm9tCi0gICAgICBy ZXBsaWNhdGlvbi4gU3BlY2lmeWluZyBhIGxlYWYgcGFydGl0aW9uIGhhcyBubyBlZmZlY3QsIGFz IGl0cyBjaGFuZ2VzIGFyZQotICAgICAgc3RpbGwgcmVwbGljYXRlZCB2aWEgdGhlIHJvb3QgcGFy dGl0aW9uZWQgdGFibGUuIFdoZW4KKyAgICAgIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdoZW4g YSB0YWJsZSBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIFRBQkxFLCB0aGVuCisgICAgICBjaGFuZ2Vz IHRvIHRoYXQgdGFibGUgYW5kIGFsbCBvZiBpdHMgcGFydGl0aW9ucyAodGhhdCBpcywgdGhlIGVu dGlyZQorICAgICAgcGFydGl0aW9uIHN1YnRyZWUgcm9vdGVkIGF0IHRoYXQgdGFibGUpIGFyZSBu b3QgcmVwbGljYXRlZC4gVGhpcyBiZWhhdmlvcgorICAgICAgaXMgdGhlIHNhbWUgcmVnYXJkbGVz cyBvZiB3aGV0aGVyCiAgICAgICA8bGl0ZXJhbD5wdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwv bGl0ZXJhbD4gaXMgc2V0IHRvCi0gICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4sIHNwZWNp ZnlpbmcgYSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGhhcyBubwotICAgICAgZWZmZWN0LCBhcyBj aGFuZ2VzIGFyZSByZXBsaWNhdGVkIHZpYSB0aGUgbGVhZiBwYXJ0aXRpb25zLiBTcGVjaWZ5aW5n IGEKLSAgICAgIGxlYWYgcGFydGl0aW9uIGV4Y2x1ZGVzIG9ubHkgdGhhdCBwYXJ0aXRpb24gZnJv bSByZXBsaWNhdGlvbi4gVGhlIG9wdGlvbmFsCi0gICAgICA8bGl0ZXJhbD4qPC9saXRlcmFsPiBo YXMgbm8gbWVhbmluZyBmb3IgcGFydGl0aW9uZWQgdGFibGVzLgorICAgICAgPGxpdGVyYWw+dHJ1 ZTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LiBUaGUKKyAgICAgIDxsaXRl cmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPiBzZXR0aW5nIG9ubHkgZGV0 ZXJtaW5lcworICAgICAgd2hpY2ggcmVsYXRpb24gaXMgdXNlZCBhcyB0aGUgcHVibGlzaGluZyBy ZWxhdGlvbiBmb3IgcmVwbGljYXRlZCBjaGFuZ2VzLAorICAgICAgYW5kIGRvZXMgbm90IGFmZmVj dCBleGNsdXNpb24gc2VtYW50aWNzLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDA5 YzY5MDA1MTIyLi5kZDhkYjIxNjVmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24u YwpAQCAtNDY4LDI2ICs0NjgsNiBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHRhcmdldHJlbCksIHB1Yi0+bmFtZSkpKTsKIAl9CiAKLQkvKgotCSAqIEhhbmRsZSB0aGUgY2Fz ZSB3aGVyZSBhIHBhcnRpdGlvbiBpcyBleGNsdWRlZCBieSBFWENFUFQgVEFCTEUgd2hpbGUKLQkg KiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCi0JICovCi0JaWYgKHB1Yi0+YWxs dGFibGVzICYmIHB1Yi0+cHVidmlhcm9vdCAmJiBwcmktPmV4Y2VwdCAmJgotCQl0YXJnZXRyZWwt PnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCi0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJybXNn KCJwYXJ0aXRpb24gXCIlc1wiIG1pZ2h0IGJlIHJlcGxpY2F0ZWQgYXMgcHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgaXMgXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRh cmdldHJlbCksICJ0cnVlIikpKTsKLQotCS8qCi0JICogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEg cGFydGl0aW9uZWQgdGFibGUgaXMgZXhjbHVkZWQgYnkgRVhDRVBUIFRBQkxFCi0JICogd2hpbGUg cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZS4KLQkgKi8KLQlpZiAocHViLT5hbGx0 YWJsZXMgJiYgIXB1Yi0+cHVidmlhcm9vdCAmJiBwcmktPmV4Y2VwdCAmJgotCQl0YXJnZXRyZWwt PnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQllcmVwb3J0 KFdBUk5JTkcsCi0JCQkJKGVycm1zZygicGFydGl0aW9uZWQgdGFibGUgXCIlc1wiIG1pZ2h0IGJl IHJlcGxpY2F0ZWQgYXMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMgXCIlc1wiIiwKLQkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksICJmYWxzZSIpKSk7Ci0KIAlj aGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24odGFyZ2V0cmVsKTsKIAogCS8qIFZhbGlkYXRl IGFuZCB0cmFuc2xhdGUgY29sdW1uIG5hbWVzIGludG8gYSBCaXRtYXBzZXQgb2YgYXR0bnVtcy4g Ki8KQEAgLTk2MCw4ICs5NDAsOCBAQCBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhQdWJsaWNh dGlvbiAqcHViLCBjaGFyIHJlbGtpbmQpCiAKIAlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFU SU9OKQogCQlleGNlcHRsaXN0ID0gR2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRhYmxlcyhwdWJp ZCwgcHVidmlhcm9vdCA/Ci0JCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMIDoKLQkJ CQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJCQkJCQkJCQkJCQkgUFVCTElD QVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsK IAogCWNsYXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJl TG9jayk7CiAKQEAgLTEyMDUsNiArMTE4NSw0MzAgQEAgR2V0UHVibGljYXRpb25CeU5hbWUoY29u c3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKQogCXJldHVybiBPaWRJc1ZhbGlkKG9p ZCkgPyBHZXRQdWJsaWNhdGlvbihvaWQpIDogTlVMTDsKIH0KIAorCisvKiBIZWxwZXI6IFJlc29s dmUgdGhlIGltbWVkaWF0ZSBwYXJlbnQgb2YgYSBwYXJ0aXRpb24gKi8KK3N0YXRpYyBPaWQKK2dl dF9wYXJlbnRfb2lkKE9pZCByZWxpZCkKK3sKKwlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFy dGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisKKwlpZiAoYW5jZXN0b3JzID09IE5JTCkKKwkJcmV0 dXJuIEludmFsaWRPaWQ7CisJcmV0dXJuIGxpbml0aWFsX29pZChhbmNlc3RvcnMpOworfQorCisv KiBIZWxwZXI6IENoZWNrIHN5c2NhY2hlIGZvciBwcmV4Y2VwdCBmbGFnICovCitzdGF0aWMgYm9v bAoraXNfcmVsaWRfcHVibGlzaGVkX2FzX2V4Y2VwdChPaWQgcmVsaWQsIE9pZCBwdWJpZCkKK3sK KwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCXJlc3VsdCA9IGZhbHNlOworCisJdHVwID0gU2VhcmNo U3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwgT2Jq ZWN0SWRHZXREYXR1bShwdWJpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJewor CQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwcmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9y ZWwpIEdFVFNUUlVDVCh0dXApOworCisJCXJlc3VsdCA9IHByZm9ybS0+cHJleGNlcHQ7CisJCVJl bGVhc2VTeXNDYWNoZSh0dXApOworCX0KKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogcHVi bGljYXRpb25faGFzX2FueV9leGNlcHRpb24KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdp dmVuIHB1YmxpY2F0aW9uIE9JRCBoYXMgYXQgbGVhc3Qgb25lIGVudHJ5IGluCisgKiBwZ19wdWJs aWNhdGlvbl9yZWwgbWFya2VkIGFzIGFuIGV4Y2VwdGlvbiAocHJleGNlcHQgPSB0cnVlKS4KKyAq Lworc3RhdGljIGJvb2wKK3B1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0aW9uKE9pZCBwdWJpZCkK K3sKKwlSZWxhdGlvbglwdWJSZWw7CisJU2NhbktleURhdGEgc2tleTsKKwlTeXNTY2FuRGVzYyBz Y2FuOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCS8qIE9wZW4g cGdfcHVibGljYXRpb25fcmVsIHdpdGggQWNjZXNzU2hhcmVMb2NrICovCisJcHViUmVsID0gdGFi bGVfb3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkv KgorCSAqICogTG9vayB1cCBieSBwdWJsaWNhdGlvbiBPSUQuIFVzaW5nIHRoZSBpbmRleCBvbiAo cHJwdWJpZCkgaXMgaGlnaGx5CisJICogZWZmaWNpZW50LgorCSAqLworCVNjYW5LZXlJbml0KCZz a2V5LAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycHViaWQsCisJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwor CXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocHViUmVsLAorCQkJCQkJCSAgUHVibGljYXRpb25S ZWxQcnJlbGlkUHJwdWJpZEluZGV4SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAmc2tleSk7 CisKKwkvKiBXZSBvbmx5IG5lZWQgdG8gZmluZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBwcmV4 Y2VwdCA9IHRydWUgKi8KKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9n ZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbGZvcm0g PSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCisJCWlmIChwdWJy ZWxmb3JtLT5wcmV4Y2VwdCkKKwkJeworCQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0K Kwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHB1YlJlbCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBmb3VuZDsKK30KKworLyoKKyAqIGlzX3JlbGlkX3B1 Ymxpc2hlZF9leHBsaWNpdGx5CisgKgorICogQ2hlY2tzIGlmIHRoZSBnaXZlbiByZWxhdGlvbiBP SUQgaXMgZXhwbGljaXRseSBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbi4KKyAqIFRoaXMgY29ycmVz cG9uZHMgdG8gdGhlICdGT1IgVEFCTEUnIHN5bnRheC4KKyAqLworc3RhdGljIGJvb2wKK2lzX3Jl bGlkX3B1Ymxpc2hlZF9leHBsaWNpdGx5KE9pZCByZWxpZCwgT2lkIHB1YmlkKQoreworCS8qCisJ ICogU2VhcmNoIHRoZSBzeXNjYWNoZSBmb3IgcGdfcHVibGljYXRpb25fcmVsIHVzaW5nIHRoZSAo cmVsaWQsIHB1YmlkKQorCSAqIGluZGV4LgorCSAqLworCXJldHVybiBTZWFyY2hTeXNDYWNoZUV4 aXN0czIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlk KSwKKwkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKK30KKworLyoKKyAqIGlzX3Nj aGVtYV9wdWJsaXNoZWQKKyAqCisgKiBDaGVja3MgaWYgdGhlIGdpdmVuIG5hbWVzcGFjZSBPSUQg aXMgcGFydCBvZiB0aGUgcHVibGljYXRpb24ncworICogc2NoZW1hIGxpc3QuIFRoaXMgY29ycmVz cG9uZHMgdG8gdGhlICdGT1IgVEFCTEVTIElOIFNDSEVNQScgc3ludGF4LgorICovCitzdGF0aWMg Ym9vbAoraXNfc2NoZW1hX3B1Ymxpc2hlZChPaWQgbnNwaWQsIE9pZCBwdWJpZCkKK3sKKwkvKgor CSAqIFNlYXJjaCB0aGUgc3lzY2FjaGUgZm9yIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSB1c2lu ZyB0aGUgKG5zcGlkLAorCSAqIHB1YmlkKSBpbmRleC4KKwkgKi8KKwlyZXR1cm4gU2VhcmNoU3lz Q2FjaGVFeGlzdHMyKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAorCQkJCQkJCQkgT2JqZWN0SWRH ZXREYXR1bShuc3BpZCksCisJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7Cit9CisK Ky8qCisgKiBwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0aXZlX3RhYmxlcworICoKKyAqIEdpdmVu IGEgcm9vdCByZWxhdGlvbiBhbmQgYSBsaXN0IG9mIHB1YmxpY2F0aW9ucywgY2FsY3VsYXRlIHRo ZSBzZXQgb2YKKyAqIHJlbGF0aW9ucyB0aGF0IGFyZSBlZmZlY3RpdmVseSBwdWJsaXNoZWQuIFRo aXMgaXMgbmVjZXNzYXJ5IGZvcgorICogIkZPUiBBTEwgVEFCTEVTIiBwdWJsaWNhdGlvbnMgdGhh dCB1c2UgIkVYQ0VQVCBUQUJMRSIgZmlsdGVycy4KKyAqCisgKiBUaGUgZnVuY3Rpb24gcmVzb2x2 ZXMgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIHNldCBvZiBhbmNlc3RvcnMgdGhhdCBjb3ZlcgorICog YWxsIG5vbi1leGNsdWRlZCBsZWFmIHBhcnRpdGlvbnMuCisgKi8KK0RhdHVtCitwZ19nZXRfcHVi bGljYXRpb25fZWZmZWN0aXZlX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQoreworCUZ1bmNDYWxs Q29udGV4dCAqZnVuY2N0eDsKKwlMaXN0CSAgICpyZXN1bHRzOworCisJaWYgKFNSRl9JU19GSVJT VENBTEwoKSkKKwl7CisJCU9pZAkJCXJvb3RfcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOworCQlB cnJheVR5cGUgICpwdWJfbmFtZXNfYXJyYXkgPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoMSk7CisJ CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwkJTGlzdAkgICAqcHViX29pZHMgPSBOSUw7CisJ CURhdHVtCSAgICpwdWJfZGF0dW1zOworCQlib29sCSAgICpwdWJfbnVsbHM7CisJCWludAkJCXB1 Yl9jb3VudDsKKwkJVHVwbGVEZXNjCXR1cGRlc2M7CisJCUxpc3QJICAgKmZpbmFsX291dHB1dCA9 IE5JTDsKKwkJYm9vbAkJaGFzX2NsZWFuX2FsbF90YWJsZXNfcHViID0gZmFsc2U7CisJCWJvb2wJ CWhhc19hbnlfZXhjbHVzaW9uID0gZmFsc2U7CisJCUxpc3RDZWxsICAgKmxjOworCisJCWZ1bmNj dHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKKworCQlkZWNvbnN0cnVjdF9hcnJheShwdWJfbmFt ZXNfYXJyYXksIFRFWFRPSUQsIC0xLCBmYWxzZSwgJ2knLAorCQkJCQkJICAmcHViX2RhdHVtcywg JnB1Yl9udWxscywgJnB1Yl9jb3VudCk7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgcHViX2NvdW50 OyBpKyspCisJCXsKKwkJCWlmICghcHViX251bGxzW2ldKQorCQkJeworCQkJCWNoYXIJICAgKnB1 Ym5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHB1Yl9kYXR1bXNbaV0pOworCisJCQkJcHViX29p ZHMgPSBsYXBwZW5kX29pZChwdWJfb2lkcywgZ2V0X3B1YmxpY2F0aW9uX29pZChwdWJuYW1lLCBm YWxzZSkpOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogRGV0ZXJtaW5lIGlmIHdlIGNhbiBhdm9p ZCB0aGUgZXhwZW5zaXZlIGV4cGFuc2lvbi4gSWYgYW55CisJCSAqIHB1YmxpY2F0aW9uIGlzICdG T1IgQUxMIFRBQkxFUycgd2l0aCBubyBleGNlcHRpb25zLCBvciBpZgorCQkgKiBhYnNvbHV0ZWx5 IG5vIGV4Y2VwdGlvbnMgZXhpc3QgYWNyb3NzIGFsbCBwdWJzLCB0aGUgcm9vdCBpcyB0aGUKKwkJ ICogcmVzdWx0LgorCQkgKi8KKwkJZm9yZWFjaChsYywgcHViX29pZHMpCisJCXsKKwkJCU9pZAkJ CXB1Ym9pZCA9IGxmaXJzdF9vaWQobGMpOworCQkJSGVhcFR1cGxlCXB1YlR1cDsKKwkJCUZvcm1f cGdfcHVibGljYXRpb24gcHViZm9ybTsKKworCQkJcHViVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBV QkxJQ0FUSU9OT0lELCBPYmplY3RJZEdldERhdHVtKHB1Ym9pZCkpOworCQkJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKHB1YlR1cCkpCisJCQkJY29udGludWU7CisKKwkJCXB1YmZvcm0gPSAoRm9ybV9w Z19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHB1YlR1cCk7CisKKwkJCS8qIENoZWNrIGZvciBhbnkg ZXhjbHVzaW9uIGVudHJpZXMgaW4gdGhpcyBwdWJsaWNhdGlvbiAqLworCQkJaWYgKHB1YmxpY2F0 aW9uX2hhc19hbnlfZXhjZXB0aW9uKHB1Ym9pZCkpCisJCQkJaGFzX2FueV9leGNsdXNpb24gPSB0 cnVlOworCQkJZWxzZSBpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQorCQkJeworCQkJCS8qCisJ CQkJICogRm91bmQgYSBwdWJsaWNhdGlvbiB0aGF0IGluY2x1ZGVzIGV2ZXJ5dGhpbmcgd2l0aG91 dAorCQkJCSAqIGV4Y2VwdGlvbgorCQkJCSAqLworCQkJCWhhc19jbGVhbl9hbGxfdGFibGVzX3B1 YiA9IHRydWU7CisJCQkJUmVsZWFzZVN5c0NhY2hlKHB1YlR1cCk7CisJCQkJYnJlYWs7CisJCQl9 CisJCQlSZWxlYXNlU3lzQ2FjaGUocHViVHVwKTsKKwkJfQorCisJCS8qIFJldHVybiByb290IGlt bWVkaWF0ZWx5IGlmIG5vIGZpbHRlcmluZyBsb2dpYyBpcyBuZWVkZWQgKi8KKwkJaWYgKGhhc19j bGVhbl9hbGxfdGFibGVzX3B1YiB8fCAhaGFzX2FueV9leGNsdXNpb24pCisJCXsKKwkJCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlf Y3R4KTsKKwkJCWZpbmFsX291dHB1dCA9IGxpc3RfbWFrZTFfb2lkKHJvb3RfcmVsaWQpOworCQkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQl9CisJCWVsc2UKKwkJeworCQkJ TGlzdAkgICAqYWxsX3RhYmxlczsKKwkJCUxpc3QJICAgKmFsbF9sZWF2ZXMgPSBOSUw7CisJCQlM aXN0CSAgICpleGNsdWRlZF9sZWF2ZXMgPSBOSUw7CisJCQlMaXN0CSAgICphbGxvd2VkX2xlYXZl cyA9IE5JTDsKKwkJCUxpc3QJICAgKmNhbmRpZGF0ZV9saXN0ID0gTklMOworCisJCQkvKiBHZXQg YWxsIHRoZSBsZWFmIHJlbGF0aW9ucyAqLworCQkJYWxsX2xlYXZlcyA9IEdldFB1YlBhcnRpdGlv bk9wdGlvblJlbGF0aW9ucyhhbGxfbGVhdmVzLAorCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9Q QVJUX0xFQUYsCisJCQkJCQkJCQkJCQkJCXJvb3RfcmVsaWQpOworCisJCQkvKgorCQkJICogSWRl bnRpZnkgY29tbW9uIGV4Y2x1ZGVkIHJlbGF0aW9ucyAoSW5oZXJpdGFuY2UtYXdhcmUpLiBBIHRh YmxlCisJCQkgKiBpcyBleGNsdWRlZCBvbmx5IGlmIGV2ZXJ5IHB1YmxpY2F0aW9uIGV4Y2x1ZGVz IGl0LCBlaXRoZXIKKwkJCSAqIGV4cGxpY2l0bHkgb3IgYnkgZXhjbHVkaW5nIG9uZSBvZiBpdHMg YW5jZXN0b3JzLgorCQkJICovCisJCQlmb3JlYWNoKGxjLCBhbGxfbGVhdmVzKQorCQkJeworCQkJ CU9pZAkJCWN1cnJfcmVsaWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJCQlMaXN0Q2VsbCAgICpscDsK KwkJCQlib29sCQlpc19jb3ZlcmVkX2J5X2FueV9wdWIgPSBmYWxzZTsKKworCQkJCS8qIEdldCB0 aGUgaW5oZXJpdGFuY2UgY2hhaW4gZm9yIHRoZSBjdXJyZW50IHRhYmxlIG9uY2UgKi8KKwkJCQlM aXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhjdXJyX3JlbGlkKTsK KworCQkJCWZvcmVhY2gobHAsIHB1Yl9vaWRzKQorCQkJCXsKKwkJCQkJT2lkCQkJcHViaWQgPSBs Zmlyc3Rfb2lkKGxwKTsKKwkJCQkJSGVhcFR1cGxlICAgcHViVHVwOworCQkJCQlGb3JtX3BnX3B1 YmxpY2F0aW9uIHB1YmZvcm07CisJCQkJCWJvb2wgICAgICAgIGlzX2FsbF90YWJsZXM7CisKKwkJ CQkJcHViVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBVQkxJQ0FUSU9OT0lELCBPYmplY3RJZEdldERh dHVtKHB1YmlkKSk7CisJCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwdWJUdXApKQorCQkJCQkJ Y29udGludWU7CisKKwkJCQkJcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJV Q1QocHViVHVwKTsKKwkJCQkJaXNfYWxsX3RhYmxlcyA9IHB1YmZvcm0tPnB1YmFsbHRhYmxlczsK KwkJCQkJUmVsZWFzZVN5c0NhY2hlKHB1YlR1cCk7CisKKwkJCQkJaWYgKGlzX2FsbF90YWJsZXMp CisJCQkJCXsKKwkJCQkJCS8qIEZPUiBBTEwgVEFCTEVTOiBDaGVjayB0aGF0IGl0IGlzbid0IGV4 Y2x1ZGVkICovCisJCQkJCQlib29sCQlpc19leGNsdWRlZCA9IGZhbHNlOworCisJCQkJCQlpZiAo aXNfcmVsaWRfcHVibGlzaGVkX2FzX2V4Y2VwdChjdXJyX3JlbGlkLCBwdWJpZCkpCisJCQkJCQkJ aXNfZXhjbHVkZWQgPSB0cnVlOworCQkJCQkJZWxzZQorCQkJCQkJeworCQkJCQkJCUxpc3RDZWxs ICAgKmxhOworCisJCQkJCQkJZm9yZWFjaChsYSwgYW5jZXN0b3JzKQorCQkJCQkJCXsKKwkJCQkJ CQkJaWYgKGlzX3JlbGlkX3B1Ymxpc2hlZF9hc19leGNlcHQobGZpcnN0X29pZChsYSksIHB1Ymlk KSkKKwkJCQkJCQkJeworCQkJCQkJCQkJaXNfZXhjbHVkZWQgPSB0cnVlOworCQkJCQkJCQkJYnJl YWs7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisKKwkJCQkJCWlmICghaXNfZXhjbHVk ZWQpCisJCQkJCQl7CisJCQkJCQkJaXNfY292ZXJlZF9ieV9hbnlfcHViID0gdHJ1ZTsKKwkJCQkJ CQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCS8qCisJ CQkJCQkgKiBDaGVjayBpZiB0aGUgdGFibGUgaXRzZWxmIG9yIGl0cyBzY2hlbWEgaXMgaW4KKwkJ CQkJCSAqIHRoZSBwdWIuCisJCQkJCQkgKi8KKwkJCQkJCWlmIChpc19yZWxpZF9wdWJsaXNoZWRf ZXhwbGljaXRseShjdXJyX3JlbGlkLCBwdWJpZCkgfHwKKwkJCQkJCQlpc19zY2hlbWFfcHVibGlz aGVkKGdldF9yZWxfbmFtZXNwYWNlKGN1cnJfcmVsaWQpLCBwdWJpZCkpCisJCQkJCQl7CisJCQkJ CQkJaXNfY292ZXJlZF9ieV9hbnlfcHViID0gdHJ1ZTsKKwkJCQkJCX0KKwkJCQkJCWVsc2UKKwkJ CQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJCSAqIENoZWNrIGlmIGFueSBhbmNlc3RvciBvciBhbiBh bmNlc3RvcidzIHNjaGVtYSBpcworCQkJCQkJCSAqIGluIHRoZSBwdWIuCisJCQkJCQkJICovCisJ CQkJCQkJTGlzdENlbGwgICAqbGE7CisKKwkJCQkJCQlmb3JlYWNoKGxhLCBhbmNlc3RvcnMpCisJ CQkJCQkJeworCQkJCQkJCQlPaWQJCQlhbmNfb2lkID0gbGZpcnN0X29pZChsYSk7CisKKwkJCQkJ CQkJaWYgKGlzX3JlbGlkX3B1Ymxpc2hlZF9leHBsaWNpdGx5KGFuY19vaWQsIHB1YmlkKSB8fAor CQkJCQkJCQkJaXNfc2NoZW1hX3B1Ymxpc2hlZChnZXRfcmVsX25hbWVzcGFjZShhbmNfb2lkKSwg cHViaWQpKQorCQkJCQkJCQl7CisJCQkJCQkJCQlpc19jb3ZlcmVkX2J5X2FueV9wdWIgPSB0cnVl OworCQkJCQkJCQkJYnJlYWs7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0K KworCQkJCQkvKgorCQkJCQkgKiBJZiBhbnkgcHVibGljYXRpb24gY292ZXJzIHRoaXMgdGFibGUs IHdlIGNhbiBzdG9wCisJCQkJCSAqIGNoZWNraW5nIG90aGVycworCQkJCQkgKi8KKwkJCQkJaWYg KGlzX2NvdmVyZWRfYnlfYW55X3B1YikKKwkJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCS8qCisJ CQkJICogSW5zdGVhZCBvZiBpZGVudGlmeWluZyAnZXhjbHVkZWQnLCB3ZSBpZGVudGlmeSAnYWxs b3dlZCcuCisJCQkJICogSWYgbm8gcHVibGljYXRpb24gY292ZXJzIHRoaXMgdGFibGUsIGl0J3Mg ZWZmZWN0aXZlbHkKKwkJCQkgKiBleGNsdWRlZC4KKwkJCQkgKi8KKwkJCQlpZiAoIWlzX2NvdmVy ZWRfYnlfYW55X3B1YikKKwkJCQkJZXhjbHVkZWRfbGVhdmVzID0gbGFwcGVuZF9vaWQoZXhjbHVk ZWRfbGVhdmVzLCBjdXJyX3JlbGlkKTsKKworCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOworCQkJ fQorCisJCQkvKiBDYWxjdWxhdGUgYWxsb3dlZCBsZWF2ZXMgKFRvdGFsIC0gRXhjbHVkZWQpICov CisJCQlmb3JlYWNoKGxjLCBhbGxfbGVhdmVzKQorCQkJeworCQkJCU9pZAkJCWN1cnJfcmVsaWQg PSBsZmlyc3Rfb2lkKGxjKTsKKworCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4Y2x1ZGVkX2xl YXZlcywgY3Vycl9yZWxpZCkpCisJCQkJCWFsbG93ZWRfbGVhdmVzID0gbGFwcGVuZF9vaWQoYWxs b3dlZF9sZWF2ZXMsIGN1cnJfcmVsaWQpOworCQkJfQorCisJCQkvKiBCb3R0b20tVXAgQ29sbGFw c2UuIENoZWNrIGlmIHBhcmVudHMgY2FuIHJlcHJlc2VudCBjaGlsZHJlbiAqLworCQkJYWxsX3Rh YmxlcyA9IGZpbmRfYWxsX2luaGVyaXRvcnMocm9vdF9yZWxpZCwgQWNjZXNzU2hhcmVMb2NrLCBO VUxMKTsKKwkJCWNhbmRpZGF0ZV9saXN0ID0gbGlzdF9jb3B5KGFsbG93ZWRfbGVhdmVzKTsKKwkJ CWZvcmVhY2gobGMsIGFsbF90YWJsZXMpCisJCQl7CisJCQkJT2lkCQkJY3Vycl9yZWxpZCA9IGxm aXJzdF9vaWQobGMpOworCisJCQkJaWYgKGdldF9yZWxfcmVsa2luZChjdXJyX3JlbGlkKSA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQkJCXsKKwkJCQkJTGlzdAkgICAqYnJhbmNoX3Ry ZWUgPSBmaW5kX2FsbF9pbmhlcml0b3JzKGN1cnJfcmVsaWQsIEFjY2Vzc1NoYXJlTG9jaywgTlVM TCk7CisJCQkJCUxpc3QJICAgKmJyYW5jaF9sZWF2ZXMgPSBOSUw7CisJCQkJCUxpc3RDZWxsICAg KmxjYjsKKwkJCQkJYm9vbAkJYWxsX2FsbG93ZWQgPSB0cnVlOworCisJCQkJCWZvcmVhY2gobGNi LCBicmFuY2hfdHJlZSkKKwkJCQkJeworCQkJCQkJT2lkCQkJYl9vaWQgPSBsZmlyc3Rfb2lkKGxj Yik7CisKKwkJCQkJCWlmIChnZXRfcmVsX3JlbGtpbmQoYl9vaWQpICE9IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUpCisJCQkJCQkJYnJhbmNoX2xlYXZlcyA9IGxhcHBlbmRfb2lkKGJyYW5jaF9s ZWF2ZXMsIGJfb2lkKTsKKwkJCQkJfQorCisJCQkJCWlmIChsaXN0X2xlbmd0aChicmFuY2hfbGVh dmVzKSA9PSAwKQorCQkJCQkJYWxsX2FsbG93ZWQgPSBmYWxzZTsKKwkJCQkJZWxzZQorCQkJCQl7 CisJCQkJCQlmb3JlYWNoKGxjYiwgYnJhbmNoX2xlYXZlcykKKwkJCQkJCXsKKwkJCQkJCQlpZiAo IWxpc3RfbWVtYmVyX29pZChhbGxvd2VkX2xlYXZlcywgbGZpcnN0X29pZChsY2IpKSkKKwkJCQkJ CQl7CisJCQkJCQkJCWFsbF9hbGxvd2VkID0gZmFsc2U7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJ CX0KKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCWlmIChhbGxfYWxsb3dlZCkKKwkJCQkJCWNhbmRp ZGF0ZV9saXN0ID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZChjYW5kaWRhdGVfbGlzdCwgY3Vycl9y ZWxpZCk7CisJCQkJfQorCQkJfQorCisJCQkvKgorCQkJICogRGVkdXBsaWNhdGU6IE9ubHkga2Vl cCB0aGUgaGlnaGVzdCBsZXZlbCByZXByZXNlbnRhdGl2ZSBvZiBhbnkKKwkJCSAqIGJyYW5jaAor CQkJICovCisJCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11 bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisJCQlmb3JlYWNoKGxjLCBjYW5kaWRhdGVfbGlzdCkKKwkJ CXsKKwkJCQlPaWQJCQljdXJyX3JlbGlkID0gbGZpcnN0X29pZChsYyk7CisJCQkJT2lkCQkJcGFy ZW50X29pZCA9IGdldF9wYXJlbnRfb2lkKGN1cnJfcmVsaWQpOworCisJCQkJaWYgKHBhcmVudF9v aWQgPT0gSW52YWxpZE9pZCB8fCAhbGlzdF9tZW1iZXJfb2lkKGNhbmRpZGF0ZV9saXN0LCBwYXJl bnRfb2lkKSkKKwkJCQkJZmluYWxfb3V0cHV0ID0gbGFwcGVuZF9vaWQoZmluYWxfb3V0cHV0LCBj dXJyX3JlbGlkKTsKKwkJCX0KKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCQl9CisKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5t dWx0aV9jYWxsX21lbW9yeV9jdHgpOworCQkvKiBDb25zdHJ1Y3QgYSB0dXBsZSBkZXNjcmlwdG9y IGZvciB0aGUgcmVzdWx0IHJvd3MuICovCisJCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxl RGVzYygyKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAi c2NoZW1hbmFtZSIsCisJCQkJCQkgICBURVhUT0lELCAtMSwgMCk7CisJCVR1cGxlRGVzY0luaXRF bnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgInJlbG5hbWUiLAorCQkJCQkJICAgVEVYVE9J RCwgLTEsIDApOworCisJCWZ1bmNjdHgtPnR1cGxlX2Rlc2MgPSBCbGVzc1R1cGxlRGVzYyh0dXBk ZXNjKTsKKwkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gZmluYWxfb3V0cHV0OworCisJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwkvKiBTUkYgUGVyLWNhbGwgUmVzdW1l ICovCisJZnVuY2N0eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7CisJcmVzdWx0cyA9IChMaXN0ICop IGZ1bmNjdHgtPnVzZXJfZmN0eDsKKworCWlmIChmdW5jY3R4LT5jYWxsX2NudHIgPCBsaXN0X2xl bmd0aChyZXN1bHRzKSkKKwl7CisJCU9pZAkJCWN1cnJlbnRfcmVsaWQgPSBsaXN0X250aF9vaWQo cmVzdWx0cywgKGludCkgZnVuY2N0eC0+Y2FsbF9jbnRyKTsKKwkJSGVhcFR1cGxlCXJldHR1cGxl OworCQlEYXR1bQkJdmFsdWVzWzJdOworCQlib29sCQludWxsc1syXSA9IHtmYWxzZSwgZmFsc2V9 OworCisJCXZhbHVlc1swXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oZ2V0X25hbWVzcGFjZV9uYW1l KGdldF9yZWxfbmFtZXNwYWNlKGN1cnJlbnRfcmVsaWQpKSk7CisJCXZhbHVlc1sxXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0oZ2V0X3JlbF9uYW1lKGN1cnJlbnRfcmVsaWQpKTsKKworCQlyZXR0dXBs ZSA9IGhlYXBfZm9ybV90dXBsZShmdW5jY3R4LT50dXBsZV9kZXNjLCB2YWx1ZXMsIG51bGxzKTsK KwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIEhlYXBUdXBsZUdldERhdHVtKHJldHR1cGxlKSk7 CisJfQorCisJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworfQorCiAvKgogICogR2V0IGluZm9y bWF0aW9uIG9mIHRoZSB0YWJsZXMgaW4gdGhlIGdpdmVuIHB1YmxpY2F0aW9uIGFycmF5LgogICoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCAwYjNjODQ5OWI0OS4u ODA0YWUyZjM0OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlv bmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAg LTI5NDAsNiArMjk0MCw4IEBAIGZldGNoX3JlbGF0aW9uX2xpc3QoV2FsUmVjZWl2ZXJDb25uICp3 cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucykKIAkJCQkJCSBwdWJfbmFtZXMuZGF0YSk7CiAJfQog CisJZWxvZyhMT0csICJmZXRjaF9yZWxhdGlvbl9saXN0OiBleGVjdXRpbmcgcXVlcnkgdG8gZmV0 Y2ggZWZmZWN0aXZlcmVsYXRpb25zOiBcbiVzIiwKKwkJIGNtZC5kYXRhKTsKIAlwZnJlZShwdWJf bmFtZXMuZGF0YSk7CiAKIAlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4sIGNtZC5kYXRhLCBjb2x1 bW5fY291bnQsIHRhYmxlUm93KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jCmluZGV4IDE5YTNjMjFhODYzLi5jNDFmZTQxZWE3YSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC03MTYsMjEgKzcxNiwyOCBAQCBj b3B5X3JlYWRfZGF0YSh2b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBpbnQgbWF4cmVhZCkKICAq IG1lc3NhZ2UgcHJvdmlkZXMgZHVyaW5nIHJlcGxpY2F0aW9uLgogICoKICAqIFRoaXMgZnVuY3Rp b24gYWxzbyByZXR1cm5zIChhKSB0aGUgcmVsYXRpb24gcXVhbGlmaWNhdGlvbnMgdG8gYmUgdXNl ZCBpbgotICogdGhlIENPUFkgY29tbWFuZCwgYW5kIChiKSB3aGV0aGVyIHRoZSByZW1vdGUgcmVs YXRpb24gaGFzIHB1Ymxpc2hlZCBhbnkKLSAqIGdlbmVyYXRlZCBjb2x1bW4uCisgKiB0aGUgQ09Q WSBjb21tYW5kLCAoYikgd2hldGhlciB0aGUgcmVtb3RlIHJlbGF0aW9uIGhhcyBwdWJsaXNoZWQg YW55CisgKiBnZW5lcmF0ZWQgY29sdW1uLCBhbmQgKGMpIGNvbXB1dGVzIHRoZSBlZmZlY3RpdmUg c2V0IG9mIHJlbGF0aW9ucyB0byBiZSB1c2VkCisgKiBhcyBDT1BZIHNvdXJjZXMgd2hlbiBleGNs dXNpb25zIGFyZSBwcmVzZW50LiBXaGVuIG5vIGV4Y2x1c2lvbnMgZXhpc3QsIHRoZQorICogbGlz dCByZW1haW5zIGVtcHR5IGFuZCB0aGUgcm9vdCByZWxhdGlvbiBpcyB1c2VkIGFzLWlzLiBXaGVu IGV4Y2x1c2lvbnMKKyAqIGV4aXN0LCB0aGUgbGlzdCBjb250YWlucyBsZWFmIHJlbGF0aW9ucyB0 aGF0IGFyZSBub3QgZXhjbHVkZWQgYW5kIG11c3QgYmUKKyAqIGNvbWJpbmVkIHVzaW5nIFVOSU9O IEFMTC4KICAqLwogc3RhdGljIHZvaWQKIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5z cG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBSZWxhdGlvbiAqbHJlbCwKLQkJCQkJCUxp c3QgKipxdWFsLCBib29sICpnZW5jb2xfcHVibGlzaGVkKQorCQkJCQkJTGlzdCAqKnF1YWwsIGJv b2wgKmdlbmNvbF9wdWJsaXNoZWQsCisJCQkJCQlMaXN0ICoqZWZmZWN0aXZlX3JlbGF0aW9ucykK IHsKIAlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CiAJU3RyaW5nSW5mb0RhdGEgY21kOwogCVR1cGxl VGFibGVTbG90ICpzbG90OwotCU9pZAkJCXRhYmxlUm93W10gPSB7T0lET0lELCBDSEFST0lELCBD SEFST0lEfTsKKwlPaWQJCQl0YWJsZVJvd1tdID0ge09JRE9JRCwgQ0hBUk9JRCwgQ0hBUk9JRCwg Qk9PTE9JRH07CiAJT2lkCQkJYXR0clJvd1tdID0ge0lOVDJPSUQsIFRFWFRPSUQsIE9JRE9JRCwg Qk9PTE9JRCwgQk9PTE9JRH07CiAJT2lkCQkJcXVhbFJvd1tdID0ge1RFWFRPSUR9OworCU9pZAkJ CWZpbHRlcnRhYmxlUm93W10gPSB7VEVYVE9JRCwgVEVYVE9JRH07CiAJYm9vbAkJaXNudWxsOwog CWludAkJCW5hdHQ7CisJYm9vbAkJaXNfcGFydGl0aW9uOwogCVN0cmluZ0luZm8JcHViX25hbWVz ID0gTlVMTDsKIAlCaXRtYXBzZXQgICppbmNsdWRlZF9jb2xzID0gTlVMTDsKIAlpbnQJCQlzZXJ2 ZXJfdmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25u KTsKQEAgLTc0MCw3ICs3NDcsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3Bu YW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCiAKIAkvKiBGaXJz dCBmZXRjaCBPaWQgYW5kIHJlcGxpY2EgaWRlbnRpdHkuICovCiAJaW5pdFN0cmluZ0luZm8oJmNt ZCk7Ci0JYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiU0VMRUNUIGMub2lkLCBjLnJlbHJlcGxpZGVu dCwgYy5yZWxraW5kIgorCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIlNFTEVDVCBjLm9pZCwgYy5y ZWxyZXBsaWRlbnQsIGMucmVsa2luZCwgYy5yZWxpc3BhcnRpdGlvbiIKIAkJCQkJICIgIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjIgogCQkJCQkgIiAgSU5ORVIgSk9JTiBwZ19jYXRhbG9nLnBn X25hbWVzcGFjZSBuIgogCQkJCQkgIiAgICAgICAgT04gKGMucmVsbmFtZXNwYWNlID0gbi5vaWQp IgpAQCAtNzcwLDYgKzc3Nyw4IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5h bWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBSZWxhdGlvbiAqbHJlbCwKIAlBc3NlcnQoIWlz bnVsbCk7CiAJbHJlbC0+cmVsa2luZCA9IERhdHVtR2V0Q2hhcihzbG90X2dldGF0dHIoc2xvdCwg MywgJmlzbnVsbCkpOwogCUFzc2VydCghaXNudWxsKTsKKwlpc19wYXJ0aXRpb24gPSBEYXR1bUdl dEJvb2woc2xvdF9nZXRhdHRyKHNsb3QsIDQsICZpc251bGwpKTsKKwlBc3NlcnQoIWlzbnVsbCk7 CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCXdhbHJjdl9jbGVhcl9y ZXN1bHQocmVzKTsKQEAgLTk1NCw2ICs5NjMsNzUgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8o Y2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAog CiAJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOwogCisJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE5 MDAwMCAmJiAhaXNfcGFydGl0aW9uICYmCisJCWxyZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSkKKwl7CisJCXJlc2V0U3RyaW5nSW5mbygmY21kKTsKKworCQkvKgorCQkg KiBUaGlzIHF1ZXJ5IHJlY3Vyc2l2ZWx5IHRyYXZlcnNlcyB0aGUgaW5oZXJpdGFuY2UgKHBhcnRp dGlvbikgdHJlZQorCQkgKiBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiB0YWJsZSBPSUQgYW5kIGRl dGVybWluZXMgd2hpY2ggbGVhZgorCQkgKiByZWxhdGlvbnMgc2hvdWxkIGJlIGluY2x1ZGVkIGZv ciByZXBsaWNhdGlvbi4gRXhjbHVzaW9uIHByb3BhZ2F0ZXMKKwkJICogZnJvbSBwYXJlbnQgdG8g Y2hpbGQsIGFuZCBhIHJlbGF0aW9uIGlzIGFsc28gdHJlYXRlZCBhcyBleGNsdWRlZCBpZgorCQkg KiBpdCBpcyBleHBsaWNpdGx5IG1hcmtlZCB3aXRoIHByZXhjZXB0ID0gdHJ1ZSBpbiBwZ19wdWJs aWNhdGlvbl9yZWwKKwkJICogZm9yIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb25zLiBUaGUgZmlu YWwgcmVzdWx0IHJldHVybnMgb25seQorCQkgKiBub24gZXhjbHVkZWQgbGVhZiByZWxhdGlvbnMu CisJCSAqLworCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJTRUxFQ1Qgc2NoZW1hbmFtZSwgcmVs bmFtZSBGUk9NIHBnX2dldF9wdWJsaWNhdGlvbl9lZmZlY3RpdmVfdGFibGVzKCV1LCBBUlJBWVsl c10pOyIsCisJCQkJCQkgbHJlbC0+cmVtb3RlaWQsCisJCQkJCQkgcHViX25hbWVzLT5kYXRhKTsK KworCQllbG9nKExPRywgIkV4ZWN1dGluZyBxdWVyeSB0byBnZXQgdGhlIHRhYmxlczpcbiVzIiwg Y21kLmRhdGEpOworCQlyZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBj bWQuZGF0YSwKKwkJCQkJCSAgbGVuZ3Rob2YoZmlsdGVydGFibGVSb3cpLCBmaWx0ZXJ0YWJsZVJv dyk7CisKKwkJaWYgKHJlcy0+c3RhdHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKKwkJCQkJ ZXJybXNnKCJjb3VsZCBub3QgZ2V0IG5vbiBleGNsdWRlZCB0YWJsZSBsaXN0IGZvciB0YWJsZSBc IiVzLiVzXCIgZnJvbSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJCQluc3BuYW1lLCByZWxuYW1lLCBy ZXMtPmVycikpOworCisJCS8qCisJCSAqIFN0b3JlIHRoZSB0YWJsZXMgYXMgYSBsaXN0IG9mIHNj aGVtYW5hbWUgYW5kIHRhYmxlbmFtZS4KKwkJICovCisJCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QocmVzLT50dXBsZWRlc2MsICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCQl3aGlsZSAo dHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0cnVlLCBmYWxzZSwgc2xv dCkpCisJCXsKKwkJCVF1YWxpZmllZFJlbGF0aW9uTmFtZSAqcmVsaW5mbyA9IHBhbGxvY19vYmpl Y3QoUXVhbGlmaWVkUmVsYXRpb25OYW1lKTsKKworCQkJcmVsaW5mby0+c2NoZW1hbmFtZSA9IFRl eHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZpc251bGwpKTsKKwkJCUFz c2VydCghaXNudWxsKTsKKwkJCXJlbGluZm8tPnJlbG5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5n KHNsb3RfZ2V0YXR0cihzbG90LCAyLCAmaXNudWxsKSk7CisJCQlBc3NlcnQoIWlzbnVsbCk7CisK KwkJCSplZmZlY3RpdmVfcmVsYXRpb25zID0gbGFwcGVuZCgqZWZmZWN0aXZlX3JlbGF0aW9ucywg cmVsaW5mbyk7CisKKwkJCUV4ZWNDbGVhclR1cGxlKHNsb3QpOworCQl9CisKKwkJRXhlY0Ryb3BT aW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCQkvKgorCQkgKiBJZiB0aGVyZSBpcyBleGFj dGx5IG9uZSBpdGVtIGluIHRoZSBlZmZlY3RpdmVfcmVsYXRpb25zIGxpc3QgYW5kIGl0CisJCSAq IGVxdWFscyB0aGUgdGFibGUgYmVpbmcgcHJvY2Vzc2VkLCB0aGF0IG1lYW5zIG5vIGFjdHVhbCBl eGNsdXNpb24KKwkJICogb2NjdXJyZWQuCisJCSAqLworCQlpZiAobGlzdF9sZW5ndGgoKmVmZmVj dGl2ZV9yZWxhdGlvbnMpID09IDEpCisJCXsKKwkJCVF1YWxpZmllZFJlbGF0aW9uTmFtZSAqcmVs aW5mbzsKKworCQkJcmVsaW5mbyA9IGxpbml0aWFsKCplZmZlY3RpdmVfcmVsYXRpb25zKTsKKwkJ CWlmIChzdHJjbXAobnNwbmFtZSwgcmVsaW5mby0+c2NoZW1hbmFtZSkgPT0gMCAmJgorCQkJCXN0 cmNtcChyZWxuYW1lLCByZWxpbmZvLT5yZWxuYW1lKSA9PSAwKQorCQkJeworCQkJCXBmcmVlKHJl bGluZm8tPnNjaGVtYW5hbWUpOworCQkJCXBmcmVlKHJlbGluZm8tPnJlbG5hbWUpOworCQkJCWxp c3RfZnJlZV9kZWVwKCplZmZlY3RpdmVfcmVsYXRpb25zKTsKKwkJCQkqZWZmZWN0aXZlX3JlbGF0 aW9ucyA9IE5JTDsKKwkJCX0KKwkJfQorCX0KKwogCS8qCiAJICogR2V0IHJlbGF0aW9uJ3Mgcm93 IGZpbHRlciBleHByZXNzaW9ucy4gRElTVElOQ1QgYXZvaWRzIHRoZSBzYW1lCiAJICogZXhwcmVz c2lvbiBvZiBhIHRhYmxlIGluIG11bHRpcGxlIHB1YmxpY2F0aW9ucyBmcm9tIGJlaW5nIGluY2x1 ZGVkCkBAIC0xMDQzLDYgKzExMjEsNyBAQCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkKIAlMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKnJlbG1hcGVudHJ5OwogCUxvZ2ljYWxSZXBSZWxhdGlvbiBscmVs OwogCUxpc3QJICAgKnF1YWwgPSBOSUw7CisJTGlzdAkgICAqZWZmZWN0aXZlX3JlbGF0aW9ucyA9 IE5JTDsKIAlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CiAJU3RyaW5nSW5mb0RhdGEgY21kOwogCUNv cHlGcm9tU3RhdGUgY3N0YXRlOwpAQCAtMTA1NCw3ICsxMTMzLDcgQEAgY29weV90YWJsZShSZWxh dGlvbiByZWwpCiAJLyogR2V0IHRoZSBwdWJsaXNoZXIgcmVsYXRpb24gaW5mby4gKi8KIAlmZXRj aF9yZW1vdGVfdGFibGVfaW5mbyhnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3Bh Y2UocmVsKSksCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgJmxyZWwsICZx dWFsLAotCQkJCQkJCSZnZW5jb2xfcHVibGlzaGVkKTsKKwkJCQkJCQkmZ2VuY29sX3B1Ymxpc2hl ZCwgJmVmZmVjdGl2ZV9yZWxhdGlvbnMpOwogCiAJLyogUHV0IHRoZSByZWxhdGlvbiBpbnRvIHJl bG1hcC4gKi8KIAlsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoJmxyZWwpOwpAQCAtMTA2NiwxMiAr MTE0NSw2NCBAQCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkKIAkvKiBTdGFydCBjb3B5IG9uIHRo ZSBwdWJsaXNoZXIuICovCiAJaW5pdFN0cmluZ0luZm8oJmNtZCk7CiAKKworCWlmIChlZmZlY3Rp dmVfcmVsYXRpb25zICYmIGxpc3RfbGVuZ3RoKGVmZmVjdGl2ZV9yZWxhdGlvbnMpKQorCXsKKwkJ Ym9vbCBmaXJzdCA9IHRydWU7CisKKwkJLyoKKwkJICogQnVpbGQgYSBzaW5nbGUgQ09QWSBjb21t YW5kIHRvIHN5bmNocm9uaXplIGFsbCByZXNvbHZlZCByZWxhdGlvbnMKKwkJICogaW50byB0aGUg cm9vdCB0YWJsZS4KKwkJICoKKwkJICogVGhlIGFycmF5ICdlZmZlY3RpdmVfcmVsYXRpb25zJyBj b250YWlucyB0aGUgbGVhZiB0YWJsZXMgb2YKKwkJICogcGFydGl0aW9uIGhpZXJhcmNoaWVzLCB3 aXRoIGV4Y2x1ZGVkIHN1YnRyZWVzIHJlbW92ZWQgYWNjb3JkaW5nIHRvCisJCSAqIHRoZSBFWENF UFQgY2xhdXNlcy4gVGhpcyBhcHBsaWVzIG9ubHkgd2hlbgorCQkgKiAncHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QnIGlzIGVuYWJsZWQsIHNpbmNlIHRoZSBpbml0aWFsIHN5bmMgbXVzdAorCQkg KiByb3V0ZSBhbGwgY2hhbmdlcyB0byB0aGUgcm9vdCB0YWJsZS4KKwkJICoKKwkJICogV2UgY29u c3RydWN0IGEgVU5JT04gQUxMIHF1ZXJ5IHRoYXQgY29tYmluZXMgZGF0YSBmcm9tIG11bHRpcGxl IGxlYWYKKwkJICogcmVsYXRpb25zIGludG8gb25lIHN1Yi1DT1BZIHN0YXRlbWVudCwgZW5zdXJp bmcgYWxsIHJvd3MgYXJlIGNvcGllZAorCQkgKiBjb25zaXN0ZW50bHkgaW50byB0aGUgcm9vdCB0 YWJsZS4KKwkJICovCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIkNPUFkgKFxuIik7 CisJCWZvcmVhY2hfcHRyKFF1YWxpZmllZFJlbGF0aW9uTmFtZSwgcmVsaW5mbywgZWZmZWN0aXZl X3JlbGF0aW9ucykKKwkJeworCQkJaWYgKCFmaXJzdCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsICJVTklPTiBBTExcbiIpOworCisJCQlmaXJzdCA9IGZhbHNlOworCisJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICJTRUxFQ1QgIik7CisKKwkJCS8qIElmIHRoZSB0YWJs ZSBoYXMgY29sdW1ucywgdGhlbiBzcGVjaWZ5IHRoZSBjb2x1bW5zICovCisJCQlpZiAobHJlbC5u YXR0cykKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IGxyZWwubmF0dHM7IGkrKykKKwkJ CQl7CisJCQkJCWlmIChpID4gMCkKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwg IiwgIik7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCBxdW90ZV9pZGVudGlm aWVyKGxyZWwuYXR0bmFtZXNbaV0pKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmY21kLCAiICogIik7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmNt ZCwgIiBGUk9NICAlc1xuIiwKKwkJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIocmVs aW5mby0+c2NoZW1hbmFtZSwKKwkJCQkJCQkJCQkJCQkJcmVsaW5mby0+cmVsbmFtZSkpOworCQl9 CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiKVxuIik7CisJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmNtZCwgIlRPIFNURE9VVCIpOworCX0KIAkvKiBSZWd1bGFyIG9yIHBhcnRp dGlvbmVkIHRhYmxlIHdpdGggbm8gcm93IGZpbHRlciBvciBnZW5lcmF0ZWQgY29sdW1ucyAqLwot CWlmICgobHJlbC5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwgbHJlbC5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCi0JCSYmIHF1YWwgPT0gTklMICYmICFnZW5jb2xf cHVibGlzaGVkKQorCWVsc2UgaWYgKChscmVsLnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8 fAorCQkJICBscmVsLnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkgJiYKKwkJ CSBxdWFsID09IE5JTCAmJiAhZ2VuY29sX3B1Ymxpc2hlZCkKIAl7CiAJCWFwcGVuZFN0cmluZ0lu Zm8oJmNtZCwgIkNPUFkgJXMiLAotCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGxy ZWwubnNwbmFtZSwgbHJlbC5yZWxuYW1lKSk7CisJCQkJCQlxdW90ZV9xdWFsaWZpZWRfaWRlbnRp ZmllcihscmVsLm5zcG5hbWUsIGxyZWwucmVsbmFtZSkpOwogCiAJCS8qIElmIHRoZSB0YWJsZSBo YXMgY29sdW1ucywgdGhlbiBzcGVjaWZ5IHRoZSBjb2x1bW5zICovCiAJCWlmIChscmVsLm5hdHRz KQpAQCAtMTE1Nyw2ICsxMjg4LDcgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAJfQogCiAJ cmVzID0gd2FscmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgY21kLmRhdGEsIDAsIE5V TEwpOworCWVsb2coTE9HLCAiVGFibGVzeW5jIHdvcmtlcjogRXhlY3V0aW5nIHF1ZXJ5IHRvIGdl dCB0aGUgaW5pdGlhbCBzeW5jIGRhdGE6XG4lcyIsIGNtZC5kYXRhKTsKIAlwZnJlZShjbWQuZGF0 YSk7CiAJaWYgKHJlcy0+c3RhdHVzICE9IFdBTFJDVl9PS19DT1BZX09VVCkKIAkJZXJlcG9ydChF UlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4 IDllMWRjNzY0ZDY1Li5mMDFjOWE0MGZhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCkBAIC0yMjA4LDEzICsyMjA4LDEwIEBAIGdldF9yZWxfc3luY19l bnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJICogSWYgdGhp cyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIGFuZCBpdCBoYXMgYW4gRVhDRVBUCiAJ CQkgKiBUQUJMRSBsaXN0OgogCQkJICoKLQkJCSAqIDEuIElmIHB1YnZpYXJvb3QgaXMgc2V0IGFu ZCB0aGUgcmVsYXRpb24gaXMgYSBwYXJ0aXRpb24sIGNoZWNrCi0JCQkgKiB3aGV0aGVyIHRoZSBw YXJ0aXRpb24gcm9vdCBpcyBpbmNsdWRlZCBpbiB0aGUgRVhDRVBUIFRBQkxFCi0JCQkgKiBsaXN0 LiBJZiBzbywgZG8gbm90IHB1Ymxpc2ggdGhlIGNoYW5nZS4KLQkJCSAqCi0JCQkgKiAyLiBJZiBw dWJ2aWFyb290IGlzIG5vdCBzZXQsIGNoZWNrIHdoZXRoZXIgdGhlIHJlbGF0aW9uIGl0c2VsZgot CQkJICogaXMgaW5jbHVkZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRSBsaXN0LiBJZiBzbywgZG8gbm90 IHB1Ymxpc2ggdGhlCi0JCQkgKiBjaGFuZ2UuCisJCQkgKiBJZiB0aGUgcmVsYXRpb24gaXMgYSBw YXJ0aXRpb24sIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQKKwkJCSAqIHJlbGF0aW9uIG9yIGFu eSBvZiB0aGUgYW5jZXN0b3JzIGlzIGluY2x1ZGVkIGluIHRoZSBFWENFUFQKKwkJCSAqIFRBQkxF IGxpc3QuIElmIHNvLCBkbyBub3QgcHVibGlzaCB0aGUgY2hhbmdlLiBUaGlzIGlzIGRvbmUKKwkJ CSAqIGlycmVzcGVjdGl2ZSBvZiBwdWJ2aWFyb290IHNldHRpbmcuCiAJCQkgKgogCQkJICogIkRv IG5vdCBwdWJsaXNoIHRoZSBjaGFuZ2UiIGlzIGFjaGlldmVkIGJ5IGtlZXBpbmcgdGhlIHZhcmlh YmxlCiAJCQkgKiAicHVibGlzaCIgc2V0IHRvIGZhbHNlLiBBbmQgZXZlbnR1YWxseSwgZW50cnkt PnB1YmFjdGlvbnMgd2lsbApAQCAtMjIyNCwxNSArMjIyMSwyMSBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCXsKIAkJCQlMaXN0 CSAgICpleGNlcHRwdWJpZHMgPSBOSUw7CiAKLQkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYmIGFt X3BhcnRpdGlvbikKKwkJCQlpZiAoYW1fcGFydGl0aW9uKQogCQkJCXsKIAkJCQkJTGlzdAkgICAq YW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOwogCi0JCQkJCXB1Yl9y ZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOwotCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxpc3Rf bGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJCWZvcmVhY2hfb2lkKGFuY2VzdG9yLCBhbmNlc3RvcnMp CisJCQkJCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgTlVMTCwgJmV4Y2VwdHB1 Ymlkcyk7CisKKwkJCQkJaWYgKHB1Yi0+cHVidmlhcm9vdCkKKwkJCQkJeworCQkJCQkJcHViX3Jl bGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7CisJCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxpc3Rf bGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJCX0KIAkJCQl9CiAKLQkJCQlHZXRSZWxhdGlvblB1Ymxp Y2F0aW9ucyhwdWJfcmVsaWQsIE5VTEwsICZleGNlcHRwdWJpZHMpOworCQkJCUdldFJlbGF0aW9u UHVibGljYXRpb25zKHJlbGlkLCBOVUxMLCAmZXhjZXB0cHViaWRzKTsKIAogCQkJCWlmICghbGlz dF9tZW1iZXJfb2lkKGV4Y2VwdHB1YmlkcywgcHViLT5vaWQpKQogCQkJCQlwdWJsaXNoID0gdHJ1 ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDVlNWUzM2Y2NGZjLi42YjU0YzI5MGJkMyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjMzNiw2ICsxMjMzNiwxMyBAQAogICBwcm9u YW1lID0+ICdwZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZScsIHByb3ZvbGF0aWxlID0+ICdzJywK ICAgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCiAgIHBy b3NyYyA9PiAncGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUnIH0sCit7IG9pZCA9PiAnOTAwMics IGRlc2NyID0+ICdnZXQgZWZmZWN0aXZlIHRhYmxlcyBmb3IgcHVibGljYXRpb24nLAorICBwcm9u YW1lID0+ICdwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0aXZlX3RhYmxlcycsICBwcm9yb3dzID0+ ICcxMDAwJywKKyAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9y ZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkIF90ZXh0JywKKyAgcHJvYWxs YXJndHlwZXMgPT4gJ3tvaWQsX3RleHQsdGV4dCx0ZXh0fScsIHByb2FyZ21vZGVzID0+ICd7aSxp LG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3Jvb3RfcmVsaWQscHViX25hbWVzLHNjaGVtYW5h bWUscmVsbmFtZX0nLAorICBwcm9zcmMgPT4gJ3BnX2dldF9wdWJsaWNhdGlvbl9lZmZlY3RpdmVf dGFibGVzJyB9LAogCiAjIHJscwogeyBvaWQgPT4gJzMyOTgnLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBjMTI4NWZkZDFiYy4uY2FiOTc1MzEyNzYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMzQsNiArMjM0 LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCiAJUGFyYWxsZWxB cHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOwogfSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbzsKIAor dHlwZWRlZiBzdHJ1Y3QgUXVhbGlmaWVkUmVsYXRpb25OYW1lCit7CisJY2hhcgkgICAqc2NoZW1h bmFtZTsKKwljaGFyCSAgICpyZWxuYW1lOworfSBRdWFsaWZpZWRSZWxhdGlvbk5hbWU7CisKIC8q IE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmluZyB3 b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBs eUNvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBf Y2hhbmdlc19leGNlcHRfdGFibGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVw X2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCmluZGV4IGY0Yzk3MTRiZjFjLi42NjI5ZjMxMTVmYiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2Vw dF90YWJsZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNf ZXhjZXB0X3RhYmxlLnBsCkBAIC05MCw4ICs5MCwxMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIik7CiAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlDUkVBVEUgVEFC TEUgc2NoMS50MShhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOwotCUNSRUFURSBUQUJMRSBz Y2gxLnBhcnQxIFBBUlRJVElPTiBPRiBzY2gxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUp OwotCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyIFBBUlRJVElPTiBPRiBzY2gxLnQxIEZPUiBWQUxV RVMgRlJPTSAoNikgVE8gKDEwKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MSBQQVJUSVRJT04g T0Ygc2NoMS50MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOworCUNSRUFURSBUQUJMRSBz Y2gxLnBhcnQyKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CisJQ1JFQVRFIFRBQkxFIHNj aDEucGFydDJfMSBQQVJUSVRJT04gT0Ygc2NoMS5wYXJ0MiBGT1IgVkFMVUVTIEZST00gKDEwMSkg VE8gKDE1MCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMiBQQVJUSVRJT04gT0Ygc2NoMS5w YXJ0MiBGT1IgVkFMVUVTIEZST00gKDE1MSkgVE8gKDIwMCk7CisJQUxURVIgVEFCTEUgc2NoMS50 MSBBVFRBQ0ggUEFSVElUSU9OIHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDEpIFRPICgy MDApOwogKSk7CiAKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKQEAgLTk5LDE0MiArMTAy LDE0OSBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJQ1JFQVRFIFRBQkxFIHNjaDEu dDEoYSBpbnQpOwogCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQxKGEgaW50KTsKIAlDUkVBVEUgVEFC TEUgc2NoMS5wYXJ0MihhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMShhIGludCk7 CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMihhIGludCk7CiApKTsKIAotIyBFWENFUFQgVEFC TEUgKHNjaDEucGFydDEpIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZQot IyBFeGNsdWRpbmcgYSBwYXJ0aXRpb24gd2hpbGUgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qg PSBmYWxzZSBwcmV2ZW50cwotIyByZXBsaWNhdGlvbiBvZiByb3dzIGluc2VydGVkIGludG8gdGhl IHBhcnRpdGlvbmVkIHRhYmxlIGZvciB0aGF0IHBhcnRpY3VsYXIKLSMgcGFydGl0aW9uLgorIyBF eGNsdWRpbmcgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgZXhjbHVkZXMgYWxsIGl0cyBwYXJ0 aXRpb25zIGFzIHdlbGwgd2hlbgorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNl LgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCi0JQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNj aDEucGFydDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOwotCUlO U0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgxKSwgKDYpOworCUNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnQxKSBXSVRIIChw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQx IFZBTFVFUyAoMSksICgxMDEpLCAoMTUxKTsKICkpOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5F Q1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgogKTsK ICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxp c2hlciwgJ3RhcF9zdWJfcGFydCcpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDIpLCAoNyk7Iik7CisJIlNFTEVD VCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xvdCcs IHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCispOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDIpLCAoMTAyKSwgKDE1 MikiKTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZSBpcyBub3QgcHVibGlzaGVkIHdoZW4gaXQgaXMKKyMgZXhjbHVkZWQgd2l0aCBwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCiskcmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2lj YWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90 b192ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3B1Yl9wYXJ0JykiCisp OwogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKIAor IyBDaGVjayB0aGF0IG5vIHJvd3MgYXJlIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgogJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJP TSBzY2gxLnQxIik7Ci1pcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25l ZCB0YWJsZScpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcm9vdCB0YWJsZScp OwogCiAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKLWlzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dz IG9uIGV4Y2x1ZGVkIHBhcnRpdGlvbicpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mg b24gdGFibGUgc2NoMS5wYXJ0MScpOwogCiAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKLWlzKCAkcmVz dWx0LCBxcSg2Ci03KSwgJ2NoZWNrIHJvd3Mgb24gb3RoZXIgcGFydGl0aW9uJyk7CitpcygkcmVz dWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyJyk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZS T00gc2NoMS5wYXJ0Ml8xIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJs ZSBzY2gxLnBhcnQyXzEnKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzIiKTsKK2lzKCRyZXN1 bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMicpOwogCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgc2NoMS50MSIpOwotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9wYXJ0Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQ VUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7CiAKLSMgRVhDRVBUIFRBQkxFIChzY2gxLnQxKSB3 aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UKLSMgRXhjbHVkaW5nIHRoZSBw YXJ0aXRpb25lZCB0YWJsZSBzdGlsbCBhbGxvd3Mgcm93cyBpbnNlcnRlZCBpbnRvIHRoZQotIyBw YXJ0aXRpb25lZCB0YWJsZSB0byBiZSByZXBsaWNhdGVkIHZpYSBpdHMgcGFydGl0aW9ucy4KKyMg RXhjbHVkaW5nIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGV4Y2x1ZGVzIGFsbCBpdHMgcGFy dGl0aW9ucyBhcyB3ZWxsIHdoZW4KKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVl LgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCi0JQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNj aDEudDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOwotCUlOU0VS VCBJTlRPIHNjaDEudDEgVkFMVUVTICgxKSwgKDYpOworCUNSRUFURSBQVUJMSUNBVElPTiB0YXBf cHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnQxKSBXSVRIIChwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwogKSk7CiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQi CiApOwogJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVf cHVibGlzaGVyLCAndGFwX3N1Yl9wYXJ0Jyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMiksICg3KTsiKTsKKwki U0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgndGVzdF9z bG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMyksICgxMDMp LCAoMTUzKTsiKTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBwYXJ0aXRp b25lZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkIHdoZW4gaXQgaXMKKyMgZXhjbHVkZWQgd2l0aCBw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCiskcmVzdWx0ID0gJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHBn X2xvZ2ljYWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEws ICdwcm90b192ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3B1Yl9wYXJ0 JykiCispOwogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQn KTsKIAorIyBDaGVjayB0aGF0IG5vIHJvd3MgYXJlIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgog JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU ICogRlJPTSBzY2gxLnQxIik7Ci1pcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0 aXRpb25lZCB0YWJsZScpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcm9vdCB0 YWJsZScpOwogCiAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKLWlzKCAkcmVzdWx0LCBxcSgxCi0yKSwg J2NoZWNrIHJvd3Mgb24gZmlyc3QgcGFydGl0aW9uJyk7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hl Y2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQxJyk7CiAKICRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MiIpOwot aXMoICRyZXN1bHQsIHFxKDYKLTcpLCAnY2hlY2sgcm93cyBvbiBzZWNvbmQgcGFydGl0aW9uJyk7 CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyJyk7CisK KyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8xIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93 cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzEnKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzIiKTsK K2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMicpOwog Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgc2NoMS50 MSIpOwotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsK ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJ T04gdGFwX3N1Yl9wYXJ0Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRp b25fc2xvdF9hZHZhbmNlKCd0ZXN0X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSk7IgogKTsK IAotIyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QgPSB0cnVlCi0jIFdoZW4gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIGV4Y2x1ZGVkIGFuZCBw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBpcyB0cnVlLAotIyBubyByb3dzIGZyb20gdGhlIHRh YmxlIG9yIGl0cyBwYXJ0aXRpb25zIGFyZSByZXBsaWNhdGVkLgorIyBFeGNsdWRpbmcgb25lIG9m IHRoZSBjaGlsZCBwYXJ0aXRpb24gdGFibGUgd2l0aAorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCA9IHRydWUgc2hvdWxkIHJlcGxpY2F0ZSB0aGUgb3RoZXIgcGFydGl0aW9ucy4KICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAotCUNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnQxKSBX SVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7Ci0JSU5TRVJUIElOVE8gc2NoMS50MSBW QUxVRVMgKDEpLCAoNik7CisJVFJVTkNBVEUgc2NoMS50MTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQx IFZBTFVFUyAoMyksICgxMDMpLCAoMTUzKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9w YXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MikgV0lUSCAocHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVRSVU5DQVRFIHNjaDEudDE7CisJQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQ VUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7CiApKTsKLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKLSk7CiAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNo ZXIsICd0YXBfc3ViX3BhcnQnKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDcpOyIpOwotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKwkiU0VMRUNUIHNsb3Rf bmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3Vy cmVudF93YWxfbHNuKCkpOyIKKyk7CiAKICMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCB0byB0 aGUgcGFydGl0aW9uZWQgdGFibGUgaXMgbm90IHB1Ymxpc2hlZCB3aGVuIGl0IGlzCiAjIGV4Y2x1 ZGVkIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlLgogJHJlc3VsdCA9ICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBjb3VudCgqKSA9 IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBO VUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25hbWVzJywgJ3Rh cF9wdWJfcGFydCcpIgogKTsKLWlzKCRyZXN1bHQsIHFxKHQpLCAnY2hlY2sgbm8gY2hhbmdlcyBm b3IgZXhjbHVkZWQgdGFibGUgaW4gcmVwbGljYXRpb24gc2xvdCcpOworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKIAorIyBDaGVjayB0aGF0IHRhYmxl IGRhdGEgMTAzIGFuZCAxNTMgd2hpY2ggaXMgcHJlc2VudCBpbiBzY2gxLnNjaDEucGFydDIgc2hv dWxkCisjIG5vdCBiZSByZXBsaWNhdGVkLgogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIik7Ci1pcygkcmVzdWx0 LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0YWJsZScpOworaXMoJHJlc3VsdCwg cXEoMyksICdjaGVjayByb3dzIG9uIHJvb3QgdGFibGUnKTsKIAogJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQx Iik7Ci1pcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBmaXJzdCBwYXJ0aXRpb24nKTsK K2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDEnKTsKIAog JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU ICogRlJPTSBzY2gxLnBhcnQyIik7Ci1pcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBz ZWNvbmQgcGFydGl0aW9uJyk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJUUlVOQ0FURSBzY2gxLnQxIik7Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJ3RhcF9zdWJfcGFydCcpOwotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQiKTsKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDsiKTsK LQotIyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDEpIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QgPSB0cnVlCi0jIFdoZW4gYSBwYXJ0aXRpb24gaXMgZXhjbHVkZWQgYnV0IHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290IGlzIHRydWUsCi0jIHJvd3MgcHVibGlzaGVkIHRocm91Z2ggdGhl IHBhcnRpdGlvbmVkIHRhYmxlIGNhbiBzdGlsbCBiZSByZXBsaWNhdGVkLgotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCi0JQ1JFQVRFIFBVQkxJQ0FUSU9OIHRh cF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEucGFydDEpIFdJVEgg KHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKLQlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVF UyAoMSksICg2KQotKSk7Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hl cl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiCi0pOwotJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9w YXJ0Jyk7Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQg SU5UTyBzY2gxLnQxIFZBTFVFUyAoMiksICg3KTsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93 cyBvbiB0YWJsZSBzY2gxLnBhcnQyJyk7CiAKICRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSBPUkRFUiBCWSBh Iik7Ci1pcyggJHJlc3VsdCwgcXEoMQotMgotNgotNyksICdjaGVjayByb3dzIG9uIHBhcnRpdGlv bmVkIHRhYmxlJyk7CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayBy b3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMScpOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKLWlz KCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIGV4Y2x1ZGVkIHBhcnRpdGlvbicpOworJHJl c3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU ICogRlJPTSBzY2gxLnBhcnQyXzIiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9u IHRhYmxlIHNjaDEucGFydDJfMicpOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKLWlzKCRyZXN1 bHQsIHFxKCksICdjaGVjayByb3dzIG9uIG90aGVyIHBhcnRpdGlvbicpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3Bh cnQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJ Q0FUSU9OIHRhcF9wdWJfcGFydDsiKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcp OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5ZjVlZThmZDQ4Mi4uYjU0ZmE4NGEwMjUgMTAwNjQ0 Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNDE4LDYgKzI0MTgsNyBAQCBRVE5vZGUKIFFVRVJZ VFlQRQogUXVhbENvc3QKIFF1YWxJdGVtCitRdWFsaWZpZWRSZWxhdGlvbk5hbWUKIFF1ZXJ5CiBR dWVyeUNvbXBsZXRpb24KIFF1ZXJ5RGVzYwotLSAKMi4zNC4xCgo= --000000000000a6f6620649fb2b9e Content-Type: application/octet-stream; name="v40-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v40-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml7qohro0 RnJvbSBkNjEzZDZhMTNhZTJjMzcwODUwNWYzM2I2MTU3YTM4MWUyMzc0MmIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjggSmFuIDIwMjYgMTA6NDc6MDIgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0MCAxLzNd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURSBQVUJMSUNBVElPTiBhbGxvd3Mg b25lIG9yIG1vcmUKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlzaGVyIHdpbGwgbm90 IHNlbmQgdGhlIGRhdGEgb2YgZXhjbHVkZWQKdGFibGVzIHRvIHRoZSBzdWJzY3JpYmVyLgoKVGhl IG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRpb25zIHdoZW4gY3Jl YXRpbmcgYQpwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWIx IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodDEsdDIpOwoKQSBuZXcgY29sdW1uICJwcmV4 Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBnX3B1YmxpY2F0aW9uX3JlbCIsIHRvIGZsYWcKdGhl IHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGlj YXRpb25zLgoKcGdfZHVtcCBpcyB1cGRhdGVkIGZvciB0aGUgbmV3IEVYQ0VQVCBUQUJMRSBzeW50 YXguCgpUaGUgcHNxbCBcZCBmYW1pbHkgb2YgY29tbWFuZHMgY2FuIG5vdyBkaXNwbGF5IGV4Y2x1 ZGVkIHRhYmxlcy4KCkJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDYgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8ICA1NiArKystCiBkb2Mvc3JjL3NnbWwvcmVmL3Bz cWwtcmVmLnNnbWwgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYyAgICAgICAgICB8IDE0MyArKysrKysrKystLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICAgIHwgMTA5ICsrKystLS0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0MiArKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAzNSArKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8ICAyMSArLQogc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDY4ICsrKysrCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9w Z19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDMwICsrKwogc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKy0KIHNyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICAgIHwgIDEzICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8ICA5MiArKysrKystCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgMzYgKystCiBzcmMvdGVz dC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3QvMDM3 X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCAgICAgICAgIHwgMjQwICsrKysrKysrKysrKysr KysrKwogMjIgZmlsZXMgY2hhbmdlZCwgODg2IGluc2VydGlvbnMoKyksIDEyOSBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2No YW5nZXNfZXhjZXB0X3RhYmxlLnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCAzMzIxOTM1NjVlMi4uZDQw ZTVjYzEwOTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02NTgxLDYgKzY1ODEsMTYgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8 cmVwbGFjZWFibGU+JmwKICAgICAgIGlmIHRoZXJlIGlzIG5vIHB1YmxpY2F0aW9uIHF1YWxpZnlp bmcgY29uZGl0aW9uLjwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgIDxzdHJ1Y3RmaWVsZD5wcmV4Y2VwdDwvc3RydWN0ZmllbGQ+ IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU cnVlIGlmIHRoZSByZWxhdGlvbiBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gU2Vl CisgICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3It ZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC9saW5rPi4KKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+cHJhdHRyczwvc3RydWN0ZmllbGQ+IDx0eXBlPmlu dDJ2ZWN0b3I8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA1 MDI4ZmU5YWYwOS4uZjAxMjgxZmQ0ZjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbApAQCAtMTE2LDcgKzExNiwxMSBAQAogICAgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hF TUE8L2xpdGVyYWw+LCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sCiAgICBvciA8 bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4uIFVubGlrZSB0YWJsZXMsIHNlcXVl bmNlcyBjYW4gYmUKICAgIHN5bmNocm9uaXplZCBhdCBhbnkgdGltZS4gRm9yIG1vcmUgaW5mb3Jt YXRpb24sIHNlZQotICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5j ZXMiLz4uCisgICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIv Pi4gV2hlbiBhIHB1YmxpY2F0aW9uIGlzCisgICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFM TCBUQUJMRVM8L2xpdGVyYWw+LCB0YWJsZXMgY2FuIGJlIGV4cGxpY2l0bHkKKyAgIGV4Y2x1ZGVk IGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRl cHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVCBUQUJM RTwvbGl0ZXJhbD48L2xpbms+CisgICBjbGF1c2UuCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDZlZmJiOTE1Y2VjLi4x ZTA5MWJiM2M2ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBA IC0zMiwxMiArMzIsMTYgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBp cyBvbmUgb2Y6PC9waHJhc2U+CiAKLSAgICBBTEwgVEFCTEVTCisgICAgQUxMIFRBQkxFUyBbIEVY Q0VQVCBbIFRBQkxFIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3Rh YmxlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogICAgIEFMTCBTRVFVRU5DRVMK IAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9j b2x1bW5zPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKICAgICBbIE9OTFkgXSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9w aHJhc2U+CisKKyAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNk aXY+CiAKQEAgLTE2NCw3ICsxNjgsOCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDxsaXN0aXRlbT4KICAg ICAgPHBhcmE+CiAgICAgICBNYXJrcyB0aGUgcHVibGljYXRpb24gYXMgb25lIHRoYXQgcmVwbGlj YXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIGluCi0gICAgICB0aGUgZGF0YWJhc2UsIGluY2x1 ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgdGhlIGRhdGFiYXNlLCBp bmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4gVGFibGVzIGxpc3RlZCBpbgor ICAgICAgRVhDRVBUIFRBQkxFIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE4NCw2 ICsxODksMzYgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMt Zm9yLWV4Y2VwdC10YWJsZSI+CisgICAgPHRlcm0+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRl cmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1 c2Ugc3BlY2lmaWVzIGEgbGlzdCBvZiB0YWJsZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUKKyAg ICAgIHB1YmxpY2F0aW9uLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgRm9yIGlu aGVyaXRlZCB0YWJsZXMsIGlmIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCBi ZWZvcmUgdGhlCisgICAgICB0YWJsZSBuYW1lLCBvbmx5IHRoYXQgdGFibGUgaXMgZXhjbHVkZWQg ZnJvbSB0aGUgcHVibGljYXRpb24uIElmCisgICAgICA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBp cyBub3Qgc3BlY2lmaWVkLCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudAorICAgICAg dGFibGVzIChpZiBhbnkpIGFyZSBleGNsdWRlZC4gT3B0aW9uYWxseSwgPGxpdGVyYWw+KjwvbGl0 ZXJhbD4gY2FuIGJlCisgICAgICBzcGVjaWZpZWQgYWZ0ZXIgdGhlIHRhYmxlIG5hbWUgdG8gZXhw bGljaXRseSBpbmRpY2F0ZSB0aGF0IGRlc2NlbmRhbnQKKyAgICAgIHRhYmxlcyBhcmUgZXhjbHVk ZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBGb3IgcGFydGl0aW9uZWQgdGFi bGVzLCB3aGVuIDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPgor ICAgICAgaXMgc2V0IHRvIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCBzcGVjaWZ5aW5nIGEgcm9v dCBwYXJ0aXRpb25lZCB0YWJsZSBpbgorICAgICAgPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRl cmFsPiBleGNsdWRlcyBpdCBhbmQgYWxsIGl0cyBwYXJ0aXRpb25zIGZyb20KKyAgICAgIHJlcGxp Y2F0aW9uLiBTcGVjaWZ5aW5nIGEgbGVhZiBwYXJ0aXRpb24gaGFzIG5vIGVmZmVjdCwgYXMgaXRz IGNoYW5nZXMgYXJlCisgICAgICBzdGlsbCByZXBsaWNhdGVkIHZpYSB0aGUgcm9vdCBwYXJ0aXRp b25lZCB0YWJsZS4gV2hlbgorICAgICAgPGxpdGVyYWw+cHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3Q8L2xpdGVyYWw+IGlzIHNldCB0bworICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCBz cGVjaWZ5aW5nIGEgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgbm8KKyAgICAgIGVmZmVjdCwg YXMgY2hhbmdlcyBhcmUgcmVwbGljYXRlZCB2aWEgdGhlIGxlYWYgcGFydGl0aW9ucy4gU3BlY2lm eWluZyBhCisgICAgICBsZWFmIHBhcnRpdGlvbiBleGNsdWRlcyBvbmx5IHRoYXQgcGFydGl0aW9u IGZyb20gcmVwbGljYXRpb24uIFRoZSBvcHRpb25hbAorICAgICAgPGxpdGVyYWw+KjwvbGl0ZXJh bD4gaGFzIG5vIG1lYW5pbmcgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy13aXRoIj4KICAgICA8dGVybT48bGl0ZXJh bD5XSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFt ZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1 ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0 ZW0+CkBAIC00ODksNiArNTI0LDIzIEBAIENSRUFURSBQVUJMSUNBVElPTiBhbGxfc2VxdWVuY2Vz IEZPUiBBTEwgU0VRVUVOQ0VTOwogICAgYWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9u OgogPHByb2dyYW1saXN0aW5nPgogQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfc2VxdWVu Y2VzIEZPUiBBTEwgVEFCTEVTLCBBTEwgU0VRVUVOQ0VTOworPC9wcm9ncmFtbGlzdGluZz4KKyAg PC9wYXJhPgorCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNo ZXMgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJz PC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+Ogor PHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfZXhjZXB0IEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCAodXNlcnMsIGRlcGFydG1lbnRzKTsKKzwvcHJvZ3JhbWxpc3Rp bmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQg cHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbiwgYW5kCisgICBhbGwg Y2hhbmdlcyBpbiBhbGwgdGFibGVzIGV4Y2VwdCA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFt ZT4gYW5kCisgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3Jh bWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlc190YWJsZXNfZXhjZXB0 IEZPUiBBTEwgU0VRVUVOQ0VTLCBBTEwgVEFCTEVTIEVYQ0VQVCAodXNlcnMsIGRlcGFydG1lbnRz KTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCmluZGV4IDhiMWQ5NDhiYTA1Li4xMDQ1YmM2YTAyYyAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1y ZWYuc2dtbApAQCAtMjEwMyw4ICsyMTAzLDkgQEAgU0VMRUNUICQxIFxwYXJzZSBzdG10MQogICAg ICAgICBsaXN0ZWQuCiAgICAgICAgIElmIDxsaXRlcmFsPng8L2xpdGVyYWw+IGlzIGFwcGVuZGVk IHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSByZXN1bHRzCiAgICAgICAgIGFyZSBkaXNwbGF5ZWQg aW4gZXhwYW5kZWQgbW9kZS4KLSAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBw ZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcyBhbmQKLSAgICAgICAgc2NoZW1h cyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24gYXMgd2VsbC4KKyAg ICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQg bmFtZSwgdGhlIHRhYmxlcywKKyAgICAgICAgZXhjbHVkZWQgdGFibGVzLCBhbmQgc2NoZW1hcyBh c3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24KKyAgICAgICAgYXMgd2Vs bC4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0 ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggOWE0NzkxYzU3M2Uu LjA5YzY5MDA1MTIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0zNjYs OSArMzY2LDExIEBAIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwg TGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsCiAJZm9yZWFjaChsYywgYW5jZXN0 b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKLQkJTGlzdAkgICAq YXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKTsKKwkJTGlzdAkgICAq YXB1YmlkcyA9IE5JTDsKIAkJTGlzdAkgICAqYXNjaGVtYVB1YmlkcyA9IE5JTDsKIAorCQlHZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgJmFwdWJpZHMsIE5VTEwpOworCiAJCWxldmVs Kys7CiAKIAkJaWYgKGxpc3RfbWVtYmVyX29pZChhcHViaWRzLCBwdWJvaWQpKQpAQCAtNDY2LDYg KzQ2OCwyNiBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlv blJlbEluZm8gKnByaSwKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCks IHB1Yi0+bmFtZSkpKTsKIAl9CiAKKwkvKgorCSAqIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIHBh cnRpdGlvbiBpcyBleGNsdWRlZCBieSBFWENFUFQgVEFCTEUgd2hpbGUKKwkgKiBwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCisJICovCisJaWYgKHB1Yi0+YWxsdGFibGVzICYmIHB1 Yi0+cHVidmlhcm9vdCAmJiBwcmktPmV4Y2VwdCAmJgorCQl0YXJnZXRyZWwtPnJkX3JlbC0+cmVs aXNwYXJ0aXRpb24pCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJwYXJ0aXRpb24g XCIlc1wiIG1pZ2h0IGJlIHJlcGxpY2F0ZWQgYXMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qg aXMgXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksICJ0 cnVlIikpKTsKKworCS8qCisJICogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEgcGFydGl0aW9uZWQg dGFibGUgaXMgZXhjbHVkZWQgYnkgRVhDRVBUIFRBQkxFCisJICogd2hpbGUgcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSBmYWxzZS4KKwkgKi8KKwlpZiAocHViLT5hbGx0YWJsZXMgJiYgIXB1 Yi0+cHVidmlhcm9vdCAmJiBwcmktPmV4Y2VwdCAmJgorCQl0YXJnZXRyZWwtPnJkX3JlbC0+cmVs a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQllcmVwb3J0KFdBUk5JTkcsCisJ CQkJKGVycm1zZygicGFydGl0aW9uZWQgdGFibGUgXCIlc1wiIG1pZ2h0IGJlIHJlcGxpY2F0ZWQg YXMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMgXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksICJmYWxzZSIpKSk7CisKIAljaGVja19wdWJsaWNh dGlvbl9hZGRfcmVsYXRpb24odGFyZ2V0cmVsKTsKIAogCS8qIFZhbGlkYXRlIGFuZCB0cmFuc2xh dGUgY29sdW1uIG5hbWVzIGludG8gYSBCaXRtYXBzZXQgb2YgYXR0bnVtcy4gKi8KQEAgLTQ4Miw2 ICs1MDQsOCBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlv blJlbEluZm8gKnByaSwKIAkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCk7CiAJdmFsdWVzW0FudW1f cGdfcHVibGljYXRpb25fcmVsX3BycmVsaWQgLSAxXSA9CiAJCU9iamVjdElkR2V0RGF0dW0ocmVs aWQpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2VwdCAtIDFdID0KKwkJ Qm9vbEdldERhdHVtKHByaS0+ZXhjZXB0KTsKIAogCS8qIEFkZCBxdWFsaWZpY2F0aW9ucywgaWYg YXZhaWxhYmxlICovCiAJaWYgKHByaS0+d2hlcmVDbGF1c2UgIT0gTlVMTCkKQEAgLTc0OSwzOCAr NzczLDU4IEBAIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQs IGJvb2wgaWZfbm90X2V4aXN0cykKIAlyZXR1cm4gbXlzZWxmOwogfQogCi0vKiBHZXRzIGxpc3Qg b2YgcHVibGljYXRpb24gb2lkcyBmb3IgYSByZWxhdGlvbiAqLwotTGlzdCAqCi1HZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCisvKgorICogR2V0IHRoZSBsaXN0IG9mIHB1YmxpY2F0 aW9uIG9pZHMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWVkIHJlbGF0aW9uLgorICoKKyAqIFBh cmFtZXRlciAncHViaWRzJyByZXR1cm5zIHRoZSBPaWRzIG9mIHRoZSBwdWJsaWNhdGlvbnMgdGhl IHJlbGF0aW9uIGlzIHBhcnQKKyAqIG9mLiBQYXJhbWV0ZXIgJ2V4Y2VwdF9wdWJpZHMnIHJldHVy bnMgdGhlIE9pZHMgb2YgcHVibGljYXRpb25zIHRoZSByZWxhdGlvbgorICogaXMgZXhjbHVkZWQg ZnJvbS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgcmVsYXRpb24g aXMgcGFydCBvZiBhbnkgcHVibGljYXRpb24uCisgKi8KK2Jvb2wKK0dldFJlbGF0aW9uUHVibGlj YXRpb25zKE9pZCByZWxpZCwgTGlzdCAqKnB1YmlkcywgTGlzdCAqKmV4Y2VwdF9wdWJpZHMpCiB7 Ci0JTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUNhdENMaXN0ICAgKnB1YnJlbGxpc3Q7Ci0JaW50 CQkJaTsKKwlib29sCQlmb3VuZCA9IGZhbHNlOwogCiAJLyogRmluZCBhbGwgcHVibGljYXRpb25z IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVsYXRpb24uICovCiAJcHVicmVsbGlzdCA9IFNlYXJjaFN5 c0NhY2hlTGlzdDEoUFVCTElDQVRJT05SRUxNQVAsCiAJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1 bShyZWxpZCkpOwotCWZvciAoaSA9IDA7IGkgPCBwdWJyZWxsaXN0LT5uX21lbWJlcnM7IGkrKykK Kwlmb3IgKGludCBpID0gMDsgaSA8IHB1YnJlbGxpc3QtPm5fbWVtYmVyczsgaSsrKQogCXsKIAkJ SGVhcFR1cGxlCXR1cCA9ICZwdWJyZWxsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsKLQkJT2lkCQkJ cHViaWQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKSktPnBycHVi aWQ7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0 aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7CisJCU9pZAkJCXB1YmlkID0gcHVicmVsLT5wcnB1Ymlk OwogCi0JCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQpOworCQlpZiAocHVicmVs LT5wcmV4Y2VwdCkKKwkJeworCQkJaWYgKGV4Y2VwdF9wdWJpZHMpCisJCQkJKmV4Y2VwdF9wdWJp ZHMgPSBsYXBwZW5kX29pZCgqZXhjZXB0X3B1YmlkcywgcHViaWQpOworCQl9CisJCWVsc2UKKwkJ eworCQkJaWYgKHB1YmlkcykKKwkJCQkqcHViaWRzID0gbGFwcGVuZF9vaWQoKnB1YmlkcywgcHVi aWQpOworCQkJZm91bmQgPSB0cnVlOworCQl9CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlTGlzdChw dWJyZWxsaXN0KTsKIAotCXJldHVybiByZXN1bHQ7CisJcmV0dXJuIGZvdW5kOwogfQogCiAvKgot ICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgZm9yIGEgcHVibGljYXRpb24uCisgKiBJbnRl cm5hbCBmdW5jdGlvbiB0byBnZXQgdGhlIGxpc3Qgb2YgcmVsYXRpb24gT2lkcyBmb3IgYSBwdWJs aWNhdGlvbi4KICAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFIHB1Ymxp Y2F0aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUwotICogc2hvdWxkIHVzZSBHZXRB bGxQdWJsaWNhdGlvblJlbGF0aW9ucygpLgorICogSWYgZXhjZXB0X2ZsYWcgaXMgdHJ1ZSwgcmV0 dXJucyB0aGUgbGlzdCBvZiByZWxhdGlvbnMgZXhjbHVkZWQgZnJvbSB0aGUKKyAqIHB1YmxpY2F0 aW9uOyBvdGhlcndpc2UsIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zIGluY2x1ZGVkIGlu IHRoZQorICogcHVibGljYXRpb24uCiAgKi8KLUxpc3QgKgotR2V0UHVibGljYXRpb25SZWxhdGlv bnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCitzdGF0aWMgTGlz dCAqCitnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJICBib29sIGV4Y2VwdF9mbGFnKQogewogCUxpc3QJICAg KnJlc3VsdDsKIAlSZWxhdGlvbglwdWJyZWxzcmVsOwpAQCAtODA1LDggKzg0OSwxMCBAQCBHZXRQ dWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCkKIAkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsOwogCiAJCXB1YnJlbCA9IChG b3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7Ci0JCXJlc3VsdCA9IEdldFB1 YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAotCQkJCQkJCQkJ CQkJcHVicmVsLT5wcnJlbGlkKTsKKworCQlpZiAoZXhjZXB0X2ZsYWcgPT0gcHVicmVsLT5wcmV4 Y2VwdCkKKwkJCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQs IHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CiAJfQogCiAJc3lz dGFibGVfZW5kc2NhbihzY2FuKTsKQEAgLTgxOSw2ICs4NjUsMzYgQEAgR2V0UHVibGljYXRpb25S ZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJcmV0 dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgbGlzdCBvZiByZWxhdGlvbiBPaWRz IGZvciBhIHB1YmxpY2F0aW9uLgorICoKKyAqIEZvciBhIEZPUiBUQUJMRSBwdWJsaWNhdGlvbiwg dGhpcyByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBleHBsaWNpdGx5CisgKiBpbmNsdWRl ZCBpbiB0aGUgcHVibGljYXRpb24uCisgKgorICogUHVibGljYXRpb25zIGRlY2xhcmVkIHdpdGgg Rk9SIEFMTCBUQUJMRVMgc2hvdWxkIHVzZQorICogR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMo KSB0byBvYnRhaW4gdGhlIGNvbXBsZXRlIHNldCBvZiB0YWJsZXMgY292ZXJlZCBieQorICogdGhl IHB1YmxpY2F0aW9uLgorICovCitMaXN0ICoKK0dldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxhdGlv bnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCit7CisJQXNzZXJ0 KCFHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyk7CisKKwlyZXR1cm4gZ2V0X3B1Ymxp Y2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIGZhbHNlKTsKK30KKworLyoKKyAq IFJldHVybiB0aGUgbGlzdCBvZiB0YWJsZXMgT2lkcyBleGNsdWRlZCBmcm9tIGEgcHVibGljYXRp b24uCisgKiBUaGlzIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgRk9SIEFMTCBUQUJMRVMgcHVibGlj YXRpb25zLgorICovCitMaXN0ICoKK0dldEFsbFB1YmxpY2F0aW9uRXhjbHVkZWRUYWJsZXMoT2lk IHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCit7CisJQXNzZXJ0KEdldFB1 YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKKworCXJldHVybiBnZXRfcHVibGljYXRpb25f cmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1ZSk7Cit9CisKIC8qCiAgKiBHZXRzIGxp c3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgcHVibGljYXRpb25zIG1hcmtlZCBhcyBGT1IgQUxM IFRBQkxFUy4KICAqLwpAQCAtODY0LDE4ICs5NDAsMjkgQEAgR2V0QWxsVGFibGVzUHVibGljYXRp b25zKHZvaWQpCiAgKiBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgZXhjbHVkZSBwYXJ0aXRp b25zIGluIGZhdm9yIG9mIGluY2x1ZGluZyB0aGUKICAqIHJvb3QgcGFydGl0aW9uZWQgdGFibGVz LiBUaGlzIGlzIG5vdCBhcHBsaWNhYmxlIHRvIEZPUiBBTEwgU0VRVUVOQ0VTCiAgKiBwdWJsaWNh dGlvbi4KKyAqCisgKiBGb3IgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiwgdGhlIHJldHVy bmVkIGxpc3QgZXhjbHVkZXMgdGFibGVzIG1lbnRpb25lZAorICogaW4gRVhDRVBUIFRBQkxFIGNs YXVzZS4KICAqLwogTGlzdCAqCi1HZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtp bmQsIGJvb2wgcHVidmlhcm9vdCkKK0dldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFB1YmxpY2F0 aW9uICpwdWIsIGNoYXIgcmVsa2luZCkKIHsKIAlSZWxhdGlvbgljbGFzc1JlbDsKIAlTY2FuS2V5 RGF0YSBrZXlbMV07CiAJVGFibGVTY2FuRGVzYyBzY2FuOwogCUhlYXBUdXBsZQl0dXBsZTsKIAlM aXN0CSAgICpyZXN1bHQgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0bGlzdCA9IE5JTDsKKwlib29s CQlwdWJ2aWFyb290ID0gcHViLT5wdWJ2aWFyb290OworCU9pZAkJCXB1YmlkID0gcHViLT5vaWQ7 CiAKIAlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgcHVidmlhcm9vdCkp OwogCisJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikKKwkJZXhjZXB0bGlzdCA9IEdl dEFsbFB1YmxpY2F0aW9uRXhjbHVkZWRUYWJsZXMocHViaWQsIHB1YnZpYXJvb3QgPworCQkJCQkJ CQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCA6CisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9O X1BBUlRfUk9PVCk7CisKIAljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklk LCBBY2Nlc3NTaGFyZUxvY2spOwogCiAJU2NhbktleUluaXQoJmtleVswXSwKQEAgLTg5MSw3ICs5 NzgsOCBAQCBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVi dmlhcm9vdCkKIAkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJaWYgKGlzX3B1Ymxp c2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgotCQkJIShyZWxGb3JtLT5yZWxpc3BhcnRp dGlvbiAmJiBwdWJ2aWFyb290KSkKKwkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVi dmlhcm9vdCkgJiYKKwkJCSFsaXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQogCQkJ cmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJfQogCkBAIC05MTIsNyArMTAw MCw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2 aWFyb290KQogCQkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJCWlmIChpc19wdWJs aXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0 aXRpb24pCisJCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmCisJCQkJIWxpc3RfbWVtYmVy X29pZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0 LCByZWxpZCk7CiAJCX0KIApAQCAtMTE2OCwxNyArMTI1NywxNyBAQCBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiB0aG9zZS4gT3RoZXJ3aXNlLCBnZXQg dGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZi4KIAkJCSAqLwogCQkJaWYgKHB1Yl9lbGVtLT5h bGx0YWJsZXMpCi0JCQkJcHViX2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlv bnMoUkVMS0lORF9SRUxBVElPTiwKLQkJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9v dCk7CisJCQkJcHViX2VsZW1fdGFibGVzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMocHVi X2VsZW0sCisJCQkJCQkJCQkJCQkJCQkgUkVMS0lORF9SRUxBVElPTik7CiAJCQllbHNlCiAJCQl7 CiAJCQkJTGlzdAkgICAqcmVsaWRzLAogCQkJCQkJICAgKnNjaGVtYXJlbGlkczsKIAotCQkJCXJl bGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCi0JCQkJCQkJCQkJ CQkgcHViX2VsZW0tPnB1YnZpYXJvb3QgPwotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRf Uk9PVCA6Ci0JCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCQlyZWxpZHMg PSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJCQkJ CQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAkJ CQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxl bS0+b2lkLAogCQkJCQkJCQkJCQkJCQkJCXB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KIAkJCQkJCQkJ CQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgpAQCAtMTM2Nyw3ICsxNDU2LDcgQEAgcGdf Z2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQR19GVU5DVElPTl9BUkdTKQogCQlwdWJsaWNhdGlv biA9IEdldFB1YmxpY2F0aW9uQnlOYW1lKHB1Ym5hbWUsIGZhbHNlKTsKIAogCQlpZiAocHVibGlj YXRpb24tPmFsbHNlcXVlbmNlcykKLQkJCXNlcXVlbmNlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKFJFTEtJTkRfU0VRVUVOQ0UsIGZhbHNlKTsKKwkJCXNlcXVlbmNlcyA9IEdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9uLCBSRUxLSU5EX1NFUVVFTkNFKTsKIAogCQlm dW5jY3R4LT51c2VyX2ZjdHggPSBzZXF1ZW5jZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMKaW5kZXggZmMzYTRjMTllNjUuLjZiYjgxNmIyMTljIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMTk4LDcgKzE5OCwxMiBAQCBPYmplY3RzSW5Q dWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlwZSkKIAkJeworCQkJY2FzZSBQVUJMSUNB VElPTk9CSl9FWENFUFRfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1 ZTsKKwkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOworCQkJCWJy ZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKKwkJCQlwdWJvYmotPnB1YnRhYmxl LT5leGNlcHQgPSBmYWxzZTsKIAkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVi dGFibGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NI RU1BOgpAQCAtNTE5LDggKzUyNCw4IEBAIEludmFsaWRhdGVQdWJSZWxTeW5jQ2FjaGUoT2lkIHB1 YmlkLCBib29sIHB1YmFsbHRhYmxlcykKIAkJICogYSB0YXJnZXQuIEhvd2V2ZXIsIFdBTCByZWNv cmRzIGZvciBUUlVOQ0FURSBzcGVjaWZ5IGJvdGggYSByb290IGFuZAogCQkgKiBpdHMgbGVhdmVz LgogCQkgKi8KLQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJ CQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJcmVsaWRzID0gR2V0UHVibGljYXRpb25J bmNsdWRlZFJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FM TCk7CiAJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1 YmlkLAogCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAKQEAgLTkyOSw1NSAr OTM0LDYxIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVi bGljYXRpb25TdG10ICpzdG10KQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKIAkvKiBB c3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KLQlpZiAoc3RtdC0+Zm9y X2FsbF90YWJsZXMpCisJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0 cywgcHN0YXRlLCAmcmVsYXRpb25zLAorCQkJCQkJCSAgICZzY2hlbWFpZGxpc3QpOworCisJLyog Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCisJaWYgKHNjaGVtYWlk bGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQllcnJtc2coIm11c3QgYmUg c3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsK KworCS8qIEFkZCByZWxhdGlvbnMgKHRhYmxlcykgdG8gdGhlIHB1YmxpY2F0aW9uLiAqLworCWlm IChyZWxhdGlvbnMgIT0gTklMKQogCXsKIAkJLyoKLQkJICogSW52YWxpZGF0ZSByZWxjYWNoZSBz byB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4gU2VxdWVuY2VzCi0JCSAqIHB1Ymxp Y2F0aW9uIGRvZXNuJ3QgcmVxdWlyZSBpbnZhbGlkYXRpb24sIGFzIHJlcGxpY2EgaWRlbnRpdHkK LQkJICogY2hlY2tzIGRvbid0IGFwcGx5IHRvIHRoZW0uCisJCSAqIFRoZSAncmVsYXRpb25zJyBs aXN0IGNhbiBiZSBub24tZW1wdHkgaW4gb25seSB0d28gY2FzZXM6CisJCSAqCisJCSAqIDEuIENS RUFURSBQVUJMSUNBVElPTiAuLi4gRk9SIFRBQkxFIEluIHRoaXMgY2FzZSwgJ3JlbGF0aW9ucycK KwkJICogY29udGFpbnMgdGhlIGxpc3Qgb2Ygc3BlY2lmaWVkIHRhYmxlcy4KKwkJICoKKwkJICog Mi4gQ1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgQUxMIFRBQkxFUyBJbiB0aGlzIGNhc2UsICdy ZWxhdGlvbnMnCisJCSAqIGNvbnRhaW5zIHRoZSBsaXN0IG9mIHRhYmxlcyBzcGVjaWZpZWQgaW4g dGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCisJCSAqIER1cmluZyBwYXJzaW5nLCB0aGUgJ2V4Y2Vw dCcgZmxhZyBpcyBzZXQgZm9yIHRoZSBhc3NvY2lhdGVkCisJCSAqIFB1YmxpY2F0aW9uUmVsSW5m byBvYmplY3RzLgogCQkgKi8KLQkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVBbGwoKTsKLQl9Ci0J ZWxzZSBpZiAoIXN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKQotCXsKLQkJT2JqZWN0c0luUHVibGlj YXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJ CQkgICAmc2NoZW1haWRsaXN0KTsKKwkJTGlzdAkgICAqcmVsczsKIAotCQkvKiBGT1IgVEFCTEVT IElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KLQkJaWYgKHNjaGVtYWlkbGlzdCAhPSBO SUwgJiYgIXN1cGVydXNlcigpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJZXJyY29kZShFUlJD T0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAotCQkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1 c2VyIHRvIGNyZWF0ZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKLQotCQlp ZiAocmVsYXRpb25zICE9IE5JTCkKLQkJewotCQkJTGlzdAkgICAqcmVsczsKKwkJcmVscyA9IE9w ZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKKwkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMs IHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QpOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOwotCQkJVHJhbnNmb3Jt UHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAotCQkJCQkJCQkJIHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qo c3RtdC0+cHVibmFtZSwgcmVscywKKwkJCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKKwkJ CQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlDaGVja1B1YlJlbGF0 aW9uQ29sdW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxzLAotCQkJCQkJCQkJICAgc2NoZW1haWRs aXN0ICE9IE5JTCwKLQkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKLQot CQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNs b3NlVGFibGVMaXN0KHJlbHMpOwotCQl9CisJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwg cmVscywgdHJ1ZSwgTlVMTCk7CisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCX0KIAotCQlpZiAo c2NoZW1haWRsaXN0ICE9IE5JTCkKLQkJewotCQkJLyoKLQkJCSAqIFNjaGVtYSBsb2NrIGlzIGhl bGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAotCQkJICogY29u Y3VycmVudCBzY2hlbWEgZGVsZXRpb24uCi0JCQkgKi8KLQkJCUxvY2tTY2hlbWFMaXN0KHNjaGVt YWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3Qs IHRydWUsIE5VTEwpOwotCQl9CisJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwpCisJeworCQkvKgor CQkgKiBTY2hlbWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVk IHRvIHByZXZlbnQKKwkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCisJCSAqLworCQlM b2NrU2NoZW1hTGlzdChzY2hlbWFpZGxpc3QpOworCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVi b2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwogCX0KIAogCXRhYmxlX2Nsb3NlKHJlbCwg Um93RXhjbHVzaXZlTG9jayk7CiAKKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJeworCQkv KiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0 LiAqLworCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOworCX0KKwogCUludm9rZU9iamVj dFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgcHVib2lkLCAwKTsKIAogCS8q CkBAIC0xMDUwLDggKzEwNjEsOCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQlMb2NrRGF0YWJhc2VPYmpl Y3QoUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJmb3JtLT5vaWQsIDAsCiAJCQkJCQkgICBBY2Nl c3NTaGFyZUxvY2spOwogCi0JCXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMo cHViZm9ybS0+b2lkLAotCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCXJv b3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhwdWJmb3JtLT5vaWQs CisJCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCiAJCWZvcmVhY2gobGMs IHJvb3RfcmVsaWRzKQogCQl7CkBAIC0xMTcwLDggKzExODEsOCBAQCBBbHRlclB1YmxpY2F0aW9u T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAog CQkgKiB0cmVlcywgbm90IGp1c3QgdGhvc2UgZXhwbGljaXRseSBtZW50aW9uZWQgaW4gdGhlIHB1 YmxpY2F0aW9uLgogCQkgKi8KIAkJaWYgKHJvb3RfcmVsaWRzID09IE5JTCkKLQkJCXJlbGlkcyA9 IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKLQkJCQkJCQkJCQkJIFBVQkxJ Q0FUSU9OX1BBUlRfQUxMKTsKKwkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxh dGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7 CiAJCWVsc2UKIAkJewogCQkJLyoKQEAgLTEyNTYsOCArMTI2Nyw4IEBAIEFsdGVyUHVibGljYXRp b25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCVB1 YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UpOwogCWVsc2UJCQkJCQkvKiBB UF9TZXRPYmplY3RzICovCiAJewotCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlv blJlbGF0aW9ucyhwdWJpZCwKLQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsK KwkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhw dWJpZCwKKwkJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCQlMaXN0CSAg ICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIApAQCAtMTM1OCw2ICsxMzY5 LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwg SGVhcFR1cGxlIHR1cCwKIAkJCQlvbGRyZWwgPSBwYWxsb2Nfb2JqZWN0KFB1YmxpY2F0aW9uUmVs SW5mbyk7CiAJCQkJb2xkcmVsLT53aGVyZUNsYXVzZSA9IE5VTEw7CiAJCQkJb2xkcmVsLT5jb2x1 bW5zID0gTklMOworCQkJCW9sZHJlbC0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJb2xkcmVsLT5yZWxh dGlvbiA9IHRhYmxlX29wZW4ob2xkcmVsaWQsCiAJCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNs dXNpdmVMb2NrKTsKIAkJCQlkZWxyZWxzID0gbGFwcGVuZChkZWxyZWxzLCBvbGRyZWwpOwpAQCAt MTQwOCw3ICsxNDIwLDggQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsCiAJCUxpc3RDZWxsICAgKmxjOwogCQlMaXN0CSAgICpyZWxvaWRzOwogCi0J CXJlbG9pZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsIFBVQkxJQ0FU SU9OX1BBUlRfUk9PVCk7CisJCXJlbG9pZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRp b25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsK IAogCQlmb3JlYWNoKGxjLCByZWxvaWRzKQogCQl7CkBAIC0xNzcxLDYgKzE3ODQsNyBAQCBPcGVu VGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkJcHViX3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCXB1 Yl9yZWwtPndoZXJlQ2xhdXNlID0gdC0+d2hlcmVDbGF1c2U7CiAJCXB1Yl9yZWwtPmNvbHVtbnMg PSB0LT5jb2x1bW5zOworCQlwdWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCXJlbHMgPSBs YXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIG15 cmVsaWQpOwogCkBAIC0xODQzLDYgKzE4NTcsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxl cykKIAogCQkJCS8qIGNoaWxkIGluaGVyaXRzIGNvbHVtbiBsaXN0IGZyb20gcGFyZW50ICovCiAJ CQkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCQkJcHViX3JlbC0+ZXhjZXB0ID0g dC0+ZXhjZXB0OwogCQkJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQkJCXJlbGlk cyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgY2hpbGRyZWxpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggZjk3NmMwZTVjN2UuLmE1MzUxZmM1OWM2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtODY4OCw3ICs4Njg4LDcgQEAgQVRFeGVjU2V0RXhwcmVzc2lvbihBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkgKiBl eHByZXNzaW9ucy4KIAkgKi8KIAlpZiAoYXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFU RURfVklSVFVBTCAmJgotCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlk KHJlbCkpICE9IE5JTCkKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxp ZChyZWwpLCBOVUxMLCBOVUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiQUxURVIgVEFCTEUgLyBT RVQgRVhQUkVTU0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1 bW5zIGluIHRhYmxlcyB0aGF0IGFyZSBwYXJ0IG9mIGEgcHVibGljYXRpb24iKSwKQEAgLTE4ODg0 LDcgKzE4ODg0LDcgQEAgQVRQcmVwQ2hhbmdlUGVyc2lzdGVuY2UoQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLCBSZWxhdGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICogVU5MT0dHRUQsIGFzIFVOTE9H R0VEIHRhYmxlcyBjYW4ndCBiZSBwdWJsaXNoZWQuCiAJICovCiAJaWYgKCF0b0xvZ2dlZCAmJgot CQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpICE9IE5JTCkK KwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBOVUxMLCBO VUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxl IFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNhdXNlIGl0IGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQppbmRleCA3MTNlZTVjMTBhMi4uZDNjM2U5ZjU5YzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpA QCAtMjAzLDYgKzIwMyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NDQVNiaXRzKGludCBjYXNfYml0 cywgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyICpjb25zdHJUeXBlLAogc3RhdGljIFBhcnRpdGlv blN0cmF0ZWd5IHBhcnNlUGFydGl0aW9uU3RyYXRlZ3koY2hhciAqc3RyYXRlZ3ksIGludCBsb2Nh dGlvbiwKIAkJCQkJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyB2b2lk IHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwK KwkJCQkJCQkJCQkJTGlzdCAqKnB1Ym9iamVjdHMsCiAJCQkJCQkJCQkJCWJvb2wgKmFsbF90YWJs ZXMsCiAJCQkJCQkJCQkJCWJvb2wgKmFsbF9zZXF1ZW5jZXMsCiAJCQkJCQkJCQkJCWNvcmVfeXlz Y2FuX3QgeXlzY2FubmVyKTsKQEAgLTQ1NSw2ICs0NTYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQl2YWN1 dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKIAkJCQlkcm9wX29wdGlv bl9saXN0IHB1Yl9vYmpfbGlzdCBwdWJfYWxsX29ial90eXBlX2xpc3QKKwkJCQlwdWJfZXhjZXB0 X29ial9saXN0IG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCiAldHlwZSA8cmV0Y2xhdXNlPiByZXR1 cm5pbmdfY2xhdXNlCiAldHlwZSA8bm9kZT4JcmV0dXJuaW5nX29wdGlvbgpAQCAtNTkyLDYgKzU5 NCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JdmFyX3ZhbHVlIHpv bmVfdmFsdWUKICV0eXBlIDxyb2xlc3BlYz4gYXV0aF9pZGVudCBSb2xlU3BlYyBvcHRfZ3JhbnRl ZF9ieQogJXR5cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRpb25PYmpTcGVjCisl dHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKICV0 eXBlIDxwdWJsaWNhdGlvbmFsbG9iamVjdHNwZWM+IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAl dHlwZSA8a2V5d29yZD4gdW5yZXNlcnZlZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQK QEAgLTEwNzkyLDcgKzEwNzk1LDcgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBh Z2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICoKICAqIHB1Yl9hbGxf b2JqX3R5cGUgaXMgb25lIG9mOgogICoKLSAqCQlUQUJMRVMKKyAqCQlUQUJMRVMgW0VYQ0VQVCBb VEFCTEVdICggdGFibGUgWywgLi4uXSApXQogICoJCVNFUVVFTkNFUwogICoKICAqIENSRUFURSBQ VUJMSUNBVElPTiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9wdGlvbnNdCkBAIC0xMDgxOCw3 ICsxMDgyMSw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJQ3JlYXRlUHVibGljYXRp b25TdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlUHVibGljYXRpb25TdG10KTsKIAogCQkJCQluLT5w dWJuYW1lID0gJDM7Ci0JCQkJCXByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoJDUsICZu LT5mb3JfYWxsX3RhYmxlcywKKwkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdCgk NSwgJm4tPnB1Ym9iamVjdHMsCisJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxfdGFibGVzLAogCQkJ CQkJCQkJCQkJCSZuLT5mb3JfYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJCQl5eXNjYW5uZXIp OwogCQkJCQluLT5vcHRpb25zID0gJDY7CkBAIC0xMDg1OCw2ICsxMDg2Miw3IEBAIFB1YmxpY2F0 aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOwogCQkJCQkkJC0+ cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9 ICQ0OworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQl8IFRBQkxFUyBJTl9QIFND SEVNQSBDb2xJZAogCQkJCXsKQEAgLTEwOTMzLDExICsxMDkzOCwxOSBAQCBwdWJfb2JqX2xpc3Q6 CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwog CitvcHRfcHViX2V4Y2VwdF9jbGF1c2U6CisJCQlFWENFUFQgb3B0X3RhYmxlICcoJyBwdWJfZXhj ZXB0X29ial9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQkJCXsg JCQgPSBOSUw7IH0KKwkJOworCiBQdWJsaWNhdGlvbkFsbE9ialNwZWM6Ci0JCQkJQUxMIFRBQkxF UworCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJCXsKIAkJCQkJCSQk ID0gbWFrZU5vZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJvYmp0eXBl ID0gUFVCTElDQVRJT05fQUxMX1RBQkxFUzsKKwkJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDM7 CisJCQkJCQlpZigkJC0+ZXhjZXB0X3RhYmxlcyAhPSBOVUxMKQorCQkJCQkJCXByZXByb2Nlc3Nf cHVib2JqX2xpc3QoJCQtPmV4Y2VwdF90YWJsZXMsIHl5c2Nhbm5lcik7CiAJCQkJCQkkJC0+bG9j YXRpb24gPSBAMTsKIAkJCQkJfQogCQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAtMTA5NTQsNiArMTA5 NjcsMjMgQEAgcHViX2FsbF9vYmpfdHlwZV9saXN0OglQdWJsaWNhdGlvbkFsbE9ialNwZWMKIAkJ CQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorUHVibGljYXRpb25FeGNlcHRPYmpT cGVjOgorCQkJIHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGlj YXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9FWENF UFRfVEFCTEU7CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUp OworCQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJ0YWJsZS0+ cmVsYXRpb24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsKKworcHVi X2V4Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisJCQkJCXsgJCQgPSBs aXN0X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcsJyBQdWJsaWNhdGlv bkV4Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCTsKIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk3OTQsOCArMTk4MjQsOSBAQCBwYXJzZVBhcnRp dGlvblN0cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sIGNvcmVfeXlzY2FuX3Qg eXlzY2FubmVyKQogICogQWxzbywgY2hlY2tzIGlmIHRoZSBwdWJfb2JqZWN0X3R5cGUgaGFzIGJl ZW4gc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgogICovCiBzdGF0aWMgdm9pZAotcHJlcHJvY2Vz c19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBib29sICphbGxf dGFibGVzLAotCQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLCBjb3JlX3l5c2Nhbl90IHl5c2Nh bm5lcikKK3ByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNf bGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMsCisJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsIGJvb2wg KmFsbF9zZXF1ZW5jZXMsCisJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogewogCWlm ICghYWxsX29iamVjdHNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTk4MTUsNiArMTk4NDYsNyBAQCBw cmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIGJv b2wgKmFsbF90YWJsZXMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2NhdGlvbikp OwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7CisJCQkqcHVib2JqZWN0cyA9IGxpc3RfY29uY2F0 KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOwogCQl9CiAJCWVsc2UgaWYgKG9iai0+ cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTl9BTExfU0VRVUVOQ0VTKQogCQl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCBlMDE2ZjY0ZTBiMy4uOWUx ZGM3NjRkNjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwpAQCAtMjA4OCw3ICsyMDg4LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRyeS0+cmVwbGljYXRlX3ZhbGlkKQog CXsKIAkJT2lkCQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVzcGFjZShyZWxpZCk7Ci0JCUxpc3QJ ICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwkJTGlzdAkgICAq cHViaWRzID0gTklMOwogCiAJCS8qCiAJCSAqIFdlIGRvbid0IGFjcXVpcmUgYSBsb2NrIG9uIHRo ZSBuYW1lc3BhY2Ugc3lzdGVtIHRhYmxlIGFzIHdlIGJ1aWxkCkBAIC0yMTAzLDYgKzIxMDMsOCBA QCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlv bikKIAkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CiAJCUxpc3QJICAg KnJlbF9wdWJsaWNhdGlvbnMgPSBOSUw7CiAKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVs aWQsICZwdWJpZHMsIE5VTEwpOworCiAJCS8qIFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVk IGJlZm9yZSB1c2UuICovCiAJCWlmICghcHVibGljYXRpb25zX3ZhbGlkKQogCQl7CkBAIC0yMjAy LDEwICsyMjA0LDI2IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJl bGF0aW9uIHJlbGF0aW9uKQogCQkJLyoKIAkJCSAqIElmIHRoaXMgaXMgYSBGT1IgQUxMIFRBQkxF UyBwdWJsaWNhdGlvbiwgcGljayB0aGUgcGFydGl0aW9uCiAJCQkgKiByb290IGFuZCBzZXQgdGhl IGFuY2VzdG9yIGxldmVsIGFjY29yZGluZ2x5LgorCQkJICoKKwkJCSAqIElmIHRoaXMgaXMgYSBG T1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiBhbmQgaXQgaGFzIGFuIEVYQ0VQVAorCQkJICogVEFC TEUgbGlzdDoKKwkJCSAqCisJCQkgKiAxLiBJZiBwdWJ2aWFyb290IGlzIHNldCBhbmQgdGhlIHJl bGF0aW9uIGlzIGEgcGFydGl0aW9uLCBjaGVjaworCQkJICogd2hldGhlciB0aGUgcGFydGl0aW9u IHJvb3QgaXMgaW5jbHVkZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRQorCQkJICogbGlzdC4gSWYgc28s IGRvIG5vdCBwdWJsaXNoIHRoZSBjaGFuZ2UuCisJCQkgKgorCQkJICogMi4gSWYgcHVidmlhcm9v dCBpcyBub3Qgc2V0LCBjaGVjayB3aGV0aGVyIHRoZSByZWxhdGlvbiBpdHNlbGYKKwkJCSAqIGlz IGluY2x1ZGVkIGluIHRoZSBFWENFUFQgVEFCTEUgbGlzdC4gSWYgc28sIGRvIG5vdCBwdWJsaXNo IHRoZQorCQkJICogY2hhbmdlLgorCQkJICoKKwkJCSAqICJEbyBub3QgcHVibGlzaCB0aGUgY2hh bmdlIiBpcyBhY2hpZXZlZCBieSBrZWVwaW5nIHRoZSB2YXJpYWJsZQorCQkJICogInB1Ymxpc2gi IHNldCB0byBmYWxzZS4gQW5kIGV2ZW50dWFsbHksIGVudHJ5LT5wdWJhY3Rpb25zIHdpbGwKKwkJ CSAqIHJlbWFpbiBhbGwgZmFsc2UgZm9yIHRoaXMgcHVibGljYXRpb24uCiAJCQkgKi8KIAkJCWlm IChwdWItPmFsbHRhYmxlcykKIAkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKKwkJCQlMaXN0CSAg ICpleGNlcHRwdWJpZHMgPSBOSUw7CisKIAkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYmIGFtX3Bh cnRpdGlvbikKIAkJCQl7CiAJCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25f YW5jZXN0b3JzKHJlbGlkKTsKQEAgLTIyMTMsOSArMjIzMSwxNSBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCQkJcHViX3JlbGlk ID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7CiAJCQkJCWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5n dGgoYW5jZXN0b3JzKTsKIAkJCQl9Ci0JCQl9CiAKLQkJCWlmICghcHVibGlzaCkKKwkJCQlHZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhwdWJfcmVsaWQsIE5VTEwsICZleGNlcHRwdWJpZHMpOworCisJ CQkJaWYgKCFsaXN0X21lbWJlcl9vaWQoZXhjZXB0cHViaWRzLCBwdWItPm9pZCkpCisJCQkJCXB1 Ymxpc2ggPSB0cnVlOworCisJCQkJbGlzdF9mcmVlKGV4Y2VwdHB1Ymlkcyk7CisJCQl9CisJCQll bHNlIGlmICghcHVibGlzaCkKIAkJCXsKIAkJCQlib29sCQlhbmNlc3Rvcl9wdWJsaXNoZWQgPSBm YWxzZTsKIApAQCAtMjI1OSw2ICsyMjgzLDkgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkgKiBEb24ndCBwdWJsaXNoIGNoYW5n ZXMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgYmVjYXVzZQogCQkJICogcHVibGlzaGluZyB0aG9z ZSBvZiBpdHMgcGFydGl0aW9ucyBzdWZmaWNlcywgdW5sZXNzIHBhcnRpdGlvbgogCQkJICogY2hh bmdlcyB3b24ndCBiZSBwdWJsaXNoZWQgZHVlIHRvIHB1YnZpYXJvb3QgYmVpbmcgc2V0LgorCQkJ ICoKKwkJCSAqIElmIHRoZSByZWxhdGlvbiBpcyBwYXJ0IG9mIEVYQ0VQVCBUQUJMRSBsaXN0IG9m IGEgcHVibGljYXRpb24sCisJCQkgKiB0aGUgJ3B1Ymxpc2gnIHZhcmlhYmxlIGlzIGFscmVhZHkg c2V0IHRvIGZhbHNlLgogCQkJICovCiAJCQlpZiAocHVibGlzaCAmJgogCQkJCShyZWxraW5kICE9 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgfHwgcHViLT5wdWJ2aWFyb290KSkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYxLi5kYzAyMWRiYjZjZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01Nzg4LDcgKzU3ODgsOSBAQCBSZWxhdGlvbkdl dEV4Y2x1c2lvbkluZm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIHZvaWQKIFJlbGF0aW9uQnVp bGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHVi ZGVzYykKIHsKLQlMaXN0CSAgICpwdWJvaWRzOworCUxpc3QJICAgKnB1Ym9pZHMgPSBOSUw7CisJ TGlzdAkgICAqZXhjZXB0cHVib2lkcyA9IE5JTDsKKwlMaXN0CSAgICphbGx0YWJsZXNwdWJvaWRz OwogCUxpc3RDZWxsICAgKmxjOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCU9pZAkJCXNjaGVt YWlkOwpAQCAtNTgyNiw3ICs1ODI4LDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhS ZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCXB1YmRlc2MtPmdl bmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSA9IHRydWU7CiAKIAkvKiBGZXRjaCB0aGUgcHVibGljYXRp b24gbWVtYmVyc2hpcCBpbmZvLiAqLwotCXB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9u cyhyZWxpZCk7CisJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsICZwdWJvaWRzLCAmZXhj ZXB0cHVib2lkcyk7CiAJc2NoZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlvbik7 CiAJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0U2NoZW1hUHVi bGljYXRpb25zKHNjaGVtYWlkKSk7CiAKQEAgLTU4MzgsMTYgKzU4NDAsMjUgQEAgUmVsYXRpb25C dWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpw dWJkZXNjKQogCQlmb3JlYWNoKGxjLCBhbmNlc3RvcnMpCiAJCXsKIAkJCU9pZAkJCWFuY2VzdG9y ID0gbGZpcnN0X29pZChsYyk7CisJCQlMaXN0CSAgICphbmNlc3Rvcl9wdWJvaWRzID0gTklMOwor CQkJTGlzdAkgICAqYW5jZXN0b3JfZXhjZXB0cHVib2lkcyA9IE5JTDsKIAotCQkJcHVib2lkcyA9 IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJCQkJCQkJIEdldFJlbGF0aW9u UHVibGljYXRpb25zKGFuY2VzdG9yKSk7CisJCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNl c3RvciwgJmFuY2VzdG9yX3B1Ym9pZHMsCisJCQkJCQkJCQkmYW5jZXN0b3JfZXhjZXB0cHVib2lk cyk7CisKKwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIGFuY2Vz dG9yX3B1Ym9pZHMpOwogCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShhbmNlc3Rvcik7 CiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAogCQkJCQkJCQkJ CQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CisJCQlleGNlcHRwdWJvaWRzID0g bGlzdF9jb25jYXRfdW5pcXVlX29pZChleGNlcHRwdWJvaWRzLAorCQkJCQkJCQkJCQkJICAgYW5j ZXN0b3JfZXhjZXB0cHVib2lkcyk7CiAJCX0KIAl9Ci0JcHVib2lkcyA9IGxpc3RfY29uY2F0X3Vu aXF1ZV9vaWQocHVib2lkcywgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCkpOwogCisJYWxsdGFi bGVzcHVib2lkcyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpOworCXB1Ym9pZHMgPSBsaXN0 X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNlX29p ZChhbGx0YWJsZXNwdWJvaWRzLAorCQkJCQkJCQkJCQkJCQkgZXhjZXB0cHVib2lkcykpOwogCWZv cmVhY2gobGMsIHB1Ym9pZHMpCiAJewogCQlPaWQJCQlwdWJpZCA9IGxmaXJzdF9vaWQobGMpOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKaW5kZXggMmJlYmVmZDBiYTIuLjk5ZTAxMDdmOTU1IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAg LTQ2NDgsOSArNDY0OCw1NSBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCShz dHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidmlhcm9vdCksICJ0IikgPT0gMCk7CiAJCXB1 YmluZm9baV0ucHViZ2VuY29sc190eXBlID0KIAkJCSooUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVi Z2VuY29scykpOworCQlwdWJpbmZvW2ldLmV4Y2VwdF90YWJsZXMgPSAoU2ltcGxlUHRyTGlzdCkK KwkJeworCQkJTlVMTCwgTlVMTAorCQl9OwogCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQg dG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKHB1YmluZm9baV0uZG9iaiks IGZvdXQpOworCisJCS8qCisJCSAqIEdldCB0aGUgbGlzdCBvZiB0YWJsZXMgZm9yIHB1YmxpY2F0 aW9ucyBzcGVjaWZpZWQgd2l0aCB0aGUgRVhDRVBUCisJCSAqIFRBQkxFIGNsYXVzZS4gVGhpcyBp cyBpbnRyb2R1Y2VkIGluIFBvc3RncmVTUUwgMTkuCisJCSAqCisJCSAqIEVYQ0VQVCBUQUJMRVMg aXMgcHJvY2Vzc2VkIGhlcmUgYW5kIG91dHB1dCBkaXJlY3RseSBieQorCQkgKiBkdW1wUHVibGlj YXRpb24oKS4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIGFwcHJvYWNoIHVzZWQgaW4KKwkJICogZHVt cFB1YmxpY2F0aW9uVGFibGUoKSBhbmQgZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKCksIHNpbmNl IHRoYXQKKwkJICogYXBwcm9hY2ggd291bGQgcmVxdWlyZSBFWENFUFQgVEFCTEUgc3VwcG9ydCBm b3IgQUxURVIgUFVCTElDQVRJT04sCisJCSAqIHdoaWNoIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9y dGVkLgorCQkgKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTkwMDAwKQorCQl7CisJ CQlpbnQJCQludGJsczsKKwkJCVBHcmVzdWx0ICAgKnJlc190YmxzOworCisJCQlyZXNldFBRRXhw QnVmZmVyKHF1ZXJ5KTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJCSAgIlNF TEVDVCBwcnJlbGlkXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X3JlbFxuIgorCQkJCQkJCSAgIldIRVJFIHBycHViaWQgPSAldSBhbmQgcHJleGNlcHQiLAorCQkJ CQkJCSAgcHViaW5mb1tpXS5kb2JqLmNhdElkLm9pZCk7CisKKwkJCXJlc190YmxzID0gRXhlY3V0 ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOworCisJCQludGJs cyA9IFBRbnR1cGxlcyhyZXNfdGJscyk7CisKKwkJCWZvciAoaW50IGogPSAwOyBqIDwgbnRibHM7 IGorKykKKwkJCXsKKwkJCQlPaWQJCQlwcnJlbGlkOworCQkJCVRhYmxlSW5mbyAgKnRiaW5mbzsK KworCQkJCXBycmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXNfdGJscywgaiwgMCkpOworCisJ CQkJdGJpbmZvID0gZmluZFRhYmxlQnlPaWQocHJyZWxpZCk7CisKKwkJCQlpZiAodGJpbmZvICE9 IE5VTEwpCisJCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3Rh YmxlcywgdGJpbmZvKTsKKwkJCX0KKworCQkJUFFjbGVhcihyZXNfdGJscyk7CisJCX0KIAl9CiAK IGNsZWFudXA6CkBAIC00NjkwLDcgKzQ3MzYsMjUgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUg KmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAlpZiAocHViaW5mby0+cHVi YWxsdGFibGVzICYmIHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMsIEFMTCBTRVFVRU5DRVMiKTsKIAllbHNlIGlm IChwdWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJeworCQlpbnQJCQluX2V4Y2x1ZGVkID0gMDsKKwog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUyIpOworCisJCS8q IEluY2x1ZGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpZiB0aGVyZSBhcmUgZXhjZXB0X3RhYmxlcy4g Ki8KKwkJZm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4Y2VwdF90YWJs ZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJCXsKKwkJCVRhYmxlSW5mbyAgKnRi aW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCQlpZiAoKytuX2V4Y2x1ZGVkID09 IDEpCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRVhDRVBUIFRBQkxFICgiKTsK KwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisJCQlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwgIk9OTFkgJXMiLCBmbXRRdWFsaWZpZWREdW1wYWJsZSh0Ymlu Zm8pKTsKKwkJfQorCQlpZiAobl9leGNsdWRlZCA+IDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIikiKTsKKwl9CiAJZWxzZSBpZiAocHViaW5mby0+cHViYWxsc2VxdWVuY2VzKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFNFUVVFTkNFUyIpOwogCkBA IC00ODcwLDYgKzQ5MzQsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJLyogQ29sbGVjdCBhbGwgcHVi bGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE1MDAwMCkKKwl7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VM RUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKIAkJCQkJCQkgInBnX2NhdGFs b2cucGdfZ2V0X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBwcnJlbHF1YWwsICIKQEAgLTQ4ODIs NiArNDk0Nyw5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJCQkJICIgICAgICBXSEVSRSBhdHRyZWxp ZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4iCiAJCQkJCQkJICIgIEVM U0UgTlVMTCBFTkQpIHByYXR0cnMgIgogCQkJCQkJCSAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uX3JlbCBwciIpOworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDApCisJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSEVSRSBOT1QgcHIucHJleGNlcHQiKTsK Kwl9CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVD VCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA0YzRi MTRlNWZjNy4uZDE0MWViNjZkMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjc2LDYgKzY3Niw3IEBAIHR5 cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ0cnVuY2F0ZTsKIAlib29s CQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBwdWJnZW5jb2xzX3R5cGU7CisJU2lt cGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOwogfSBQdWJsaWNhdGlvbkluZm87CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGE4ZGNjMmI1Yzc1Li41NGVhZTU3N2M5MSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTMxNzAsNiArMzE3MCwzNiBAQCBteSAldGVzdHMgPSAo CiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0s CiAKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjgnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUw LAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCAoZHVtcF90ZXN0LnRlc3RfdGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9e CisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSAoT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVw ZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9y dW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjknID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJ CSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo ZHVtcF90ZXN0LnRlc3RfdGFibGUsIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSk7JywKKwkJ cmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlLCBPTkxZIGR1bXBfdGVz dC50ZXN0X3NlY29uZF90YWJsZSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVs ZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0 aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEw JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVB VEUgUFVCTElDQVRJT04gcHViMTAgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rl c3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNS RUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkg ZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFyZW50LCBPTkxZIGR1bXBfdGVzdC50ZXN0X2lu aGVyaXRhbmNlX2NoaWxkKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUs IHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25f cG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+ IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NS SVBUSU9OIHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggMzU4NGM0ZTE0MjguLjFiZmVjMGJkM2VmIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwpAQCAtMzA3MywxNyArMzA3MywzNCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBj aGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIgICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBw ci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCQkgICIgICAgICAg IEVMU0UgTlVMTCBFTkQpICIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uIHBcbiIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJX SEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCisJCQkJCQkJCSAg IgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJ CQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iLAorCQkJCQkJCQkgIG9pZCwgb2lk LCBvaWQpOworCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cigmYnVmLCAiIEFORCBOT1QgcHIucHJleGNlcHRcbiIpOworCisJCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VM RUNUIHB1Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKLQkJCQkJCQkJICAiICAg ICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExc biIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJ CQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNf cHVibGlzaGFibGUoJyVzJylcbiIKLQkJCQkJCQkJICAiT1JERVIgQlkgMTsiLAotCQkJCQkJCQkg IG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFO RCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iLAorCQkJCQkJ CQkgIG9pZCk7CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICIgICAgIEFORCBOT1QgRVhJU1RTIChcbiIK KwkJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJCQkJCQkJCSAgIgkJRlJPTSBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cu cGdfY2xhc3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkJT04gcHIucHJyZWxpZCA9IHBjLm9pZFxuIgor CQkJCQkJCQkJICAiCQlXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIucHJwdWJpZCA9IHAu b2lkKVxuIiwKKwkJCQkJCQkJCSAgb2lkKTsKKworCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsICJPUkRFUiBCWSAxOyIpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzEzNCw2ICszMTUx LDM1IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CQlQUWNsZWFyKHJlc3VsdCk7CiAJCX0KIAorCQkvKiBQcmludCBwdWJsaWNhdGlvbnMgdGhhdCB0 aGUgdGFibGUgaXMgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tICovCisJCWlmIChwc2V0LnN2ZXJz aW9uID49IDE5MDAwMCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkg ICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbiBwXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBw ciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0g JyVzJ1xuIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7Iiwgb2lkKTsK KworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFyZXN1bHQpCisJCQkJ Z290byBlcnJvcl9yZXR1cm47CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3Vs dCk7CisKKwkJCWlmICh0dXBsZXMgPiAwKQorCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQs IF8oIkV4Y2VwdCBQdWJsaWNhdGlvbnM6IikpOworCisJCQkvKiBNaWdodCBiZSBhbiBlbXB0eSBz ZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykKKwkJCXsK KwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsIFBRZ2V0dmFsdWUocmVz dWx0LCBpLCAwKSk7CisKKwkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7 CisJCQl9CisJCQlQUWNsZWFyKHJlc3VsdCk7CisJCX0KKwogCQkvKgogCQkgKiBJZiB2ZXJib3Nl LCBwcmludCBOT1QgTlVMTCBjb25zdHJhaW50cy4KIAkJICovCkBAIC02NzUzLDggKzY3OTksMTIg QEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkgICIg ICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCiAJCQkJCQkJICAiV0hFUkUg Yy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJCSAgIiAgQU5EIGMub2lkID0gcHIucHJy ZWxpZFxuIgotCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4iCi0JCQkJCQkJICAi T1JERVIgQlkgMSwyIiwgcHViaWQpOworCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMn XG4iLCBwdWJpZCk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLCAiICBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsKKworCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIk9SREVSIEJZIDEsMiIpOwogCQkJaWYgKCFhZGRGb290ZXJU b1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6IiksIGZhbHNlLCAmY29udCkpCiAJCQkJ Z290byBlcnJvcl9yZXR1cm47CiAKQEAgLTY3NzIsNiArNjgyMiwyMyBAQCBkZXNjcmliZVB1Ymxp Y2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJ CX0KIAkJfQorCQllbHNlCisJCXsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJ CXsKKwkJCQkvKiBHZXQgdGhlIGV4Y2x1ZGVkIHRhYmxlcyBmb3IgdGhlIHNwZWNpZmllZCBwdWJs aWNhdGlvbiAqLworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIlNFTEVD VCBjb25jYXQoYy5yZWxuYW1lc3BhY2U6OnJlZ25hbWVzcGFjZSwgJy4nLCBjLnJlbG5hbWUpXG4i CisJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4iCisJCQkJCQkJCSAgIiAg ICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBjLm9pZCA9IHByLnBy cmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJwdWJpZCA9ICclcydcbiIKKwkJCQkJCQkJ ICAiICBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsK KwkJCQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJs ZXM6IiksCisJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCisJCQkJCWdvdG8gZXJyb3JfcmV0dXJu OworCQkJfQorCQl9CiAKIAkJcHJpbnRUYWJsZSgmY29udCwgcHNldC5xdWVyeUZvdXQsIGZhbHNl LCBwc2V0LmxvZ2ZpbGUpOwogCQlwcmludFRhYmxlQ2xlYW51cCgmY29udCk7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKaW5kZXggOGI5MWJjMDAwNjIuLjM5NDA0ZWEwZjY5IDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCkBAIC0zNjY5LDcgKzM2NjksMTcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBh dHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJGT1IiLCAiQUxMIikpCiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIsICJTRVFVRU5D RVMiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIikpCi0JCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOwor CQlDT01QTEVURV9XSVRIKCJFWENFUFQgVEFCTEUgKCIsICJXSVRIICgiKTsKKwllbHNlIGlmIChN YXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAi VEFCTEVTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSAoIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxM IiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCIpOwor CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9S IiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigiKSkKKwkJQ09NUExFVEVf V0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChN YXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAi VEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgo cHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xp c3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIo IiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJ VEgoIikiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJUQUJMRVMiKSkKIAkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIik7CiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1Ii LCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDM2OGJlY2NhODk5Li41MTI2Yzk5NmZmNyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTQ2LDE0ICsxNDYsMTYgQEAg dHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCiAJUmVsYXRpb24JcmVsYXRpb247CiAJ Tm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTGlzdAkgICAqY29sdW1uczsKKwlib29sCQlleGNlcHQ7 CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNh dGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbkJ5TmFt ZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwotZXh0ZXJuIExpc3QgKkdl dFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIExpc3QgKipwdWJpZHMsIExpc3QgKipleGNlcHRfcHVi aWRzKTsKIAogLyotLS0tLS0tLS0KLSAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRvcHQg cGFyYW1ldGVyIG9mIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKCksCisgKiBFeHBlY3RlZCB2YWx1 ZXMgZm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZgorICogR2V0UHVibGljYXRpb25JbmNsdWRl ZFJlbGF0aW9ucygpLCBhbmQgR2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRhYmxlcygpLAogICog d2hpY2ggYWxsb3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3aGljaCBwYXJ0aXRpb25zIG9mIHBhcnRp dGlvbmVkIHRhYmxlcwogICogbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbiB0aGV5IGV4cGVj dCB0byBzZWUuCiAgKgpAQCAtMTY4LDkgKzE3MCwxMiBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRp b25QYXJ0T3B0CiAJUFVCTElDQVRJT05fUEFSVF9BTEwsCiB9IFB1YmxpY2F0aW9uUGFydE9wdDsK IAotZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvbklu Y2x1ZGVkUmVsYXRpb25zKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRh YmxlcyhPaWQgcHViaWQsCisJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRv cHQpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVy biBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVi dmlhcm9vdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUHVibGlj YXRpb24gKnB1YiwgY2hhciByZWxraW5kKTsKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNj aGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lk IHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhP aWQgc2NoZW1haWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uX3JlbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAppbmRl eCAzYTg3OTBlODQ4Mi4uZTNjY2JhNWVjNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHVibGljYXRpb25fcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbl9yZWwuaApAQCAtMzEsNiArMzEsNyBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uX3Jl bCw2MTA2LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICov CiAJT2lkCQkJcHJwdWJpZCBCS0lfTE9PS1VQKHBnX3B1YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRo ZSBwdWJsaWNhdGlvbiAqLwogCU9pZAkJCXBycmVsaWQgQktJX0xPT0tVUChwZ19jbGFzcyk7CS8q IE9pZCBvZiB0aGUgcmVsYXRpb24gKi8KKwlib29sCQlwcmV4Y2VwdCBCS0lfREVGQVVMVChmKTsJ LyogZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIAogI2lmZGVmCUNBVEFMT0dfVkFSTEVOCQkJLyog dmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJcGdfbm9kZV90cmVlIHBycXVh bDsJCS8qIHF1YWxpZmljYXRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNjQ2ZDZj ZWQ3NjMuLjUyODI0MjViNGRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00MzAwLDYgKzQz MDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCiAJUmFuZ2VWYXIgICAqcmVs YXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQgKi8KIAlOb2RlCSAgICp3aGVyZUNs YXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KIAlMaXN0CSAgICpjb2x1bW5zOwkJLyogTGlzdCBv ZiBjb2x1bW5zIGluIGEgcHVibGljYXRpb24gdGFibGUgKi8KKwlib29sCQlleGNlcHQ7CQkJLyog ZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIH0gUHVibGljYXRpb25UYWJsZTsKIAogLyoKQEAgLTQz MDgsNiArNDMwOSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uVGFibGUKIHR5cGVkZWYg ZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiB7CiAJUFVCTElDQVRJT05PQkpfVEFCTEUsCQkv KiBBIHRhYmxlICovCisJUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFLAkvKiBBIHRhYmxlIHRv IGJlIGV4Y2x1ZGVkICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSwJLyogQWxs IHRhYmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVN QSwJLyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJj aF9wYXRoICovCkBAIC00MzM2LDYgKzQzMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlv bkFsbE9ialNwZWMKIHsKIAlOb2RlVGFnCQl0eXBlOwogCVB1YmxpY2F0aW9uQWxsT2JqVHlwZSBw dWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGljYXRpb24gb2JqZWN0ICovCisJTGlzdAkg ICAqZXhjZXB0X3RhYmxlczsJLyogTGlzdCBvZiB0YWJsZXMgdG8gYmUgZXhjbHVkZWQgKi8KIAlQ YXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICov CiB9IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAppbmRleCA3ZmI0OWFhZjI5Yi4uYThlMjFlOGU5YjEgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yMTMsMzMgKzIxMywxMDMgQEAg Tm90LW51bGwgY29uc3RyYWludHM6CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKICgxIHJvdykKIAotRFJPUCBUQUJMRSB0ZXN0 cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHVi X2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKLUNS RUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3Ri bDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0 ZXN0cHViX3RibDM7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkg dGVzdHB1Yl90YmwzOworLS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3Ri bDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAg ICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90Ymwx IgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgorCistLSBFeGNsdWRlIHRhYmxlcyB1c2luZyBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKHRhYmxlbGlzdCkKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0 cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0t IENoZWNrIHRoYXQgdGhlIHRhYmxlIGRlc2NyaXB0aW9uIGxpc3RzIHdoYXQgcHVibGljYXRpb25z IGFyZSBleGNsdWRpbmcgaXQKK1xkIHRlc3RwdWJfdGJsMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRhYmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCBuZXh0dmFsKCd0ZXN0cHViX3RibDFfaWRfc2VxJzo6cmVn Y2xhc3MpCisgZGF0YSAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRl eGVzOgorICAgICJ0ZXN0cHViX3RibDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpZCkKK1B1 YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMiCitFeGNlcHQgUHVibGljYXRp b25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSIKKyAgICAidGVzdHB1 Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIgorCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y YWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9m b3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJf Zm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9wYXJl bnQgKGEgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9jaGlsZCAoYiB0ZXh0KSBJTkhF UklUUyAodGVzdHB1Yl90YmxfcGFyZW50KTsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VS Uk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90Ymxf cGFyZW50OwogXGRScCsgdGVzdHB1YjMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCiAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290 IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IG5vbmUgICAgICAgICAgICAgIHwgZgogVGFibGVzOgotICAgICJwdWJsaWMudGVzdHB1Yl90 YmwzIgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKKyAgICAicHVibGljLnRlc3RwdWJfdGJs X2NoaWxkIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsg dGVzdHB1YjQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAg ICAgICAgIHwgZgogVGFibGVzOgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgorICAgICJwdWJs aWMudGVzdHB1Yl90YmxfcGFyZW50IgogCi1EUk9QIFRBQkxFIHRlc3RwdWJfdGJsMywgdGVzdHB1 Yl90YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0OworLS0gRXhjbHVk ZSBwYXJlbnQgdGFibGUsIG9taXR0aW5nIGJvdGggb2YgJ09OTFknIGFuZCAnKicKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJf dGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJs aWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisK Ky0tIEVYQ0VQVCB3aXRoICcqJzogZXhjbHVkZSB0YWJsZSBhbmQgYWxsIGRlc2NlbmRhbnRzCitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0 ZXN0cHViX3RibF9wYXJlbnQgKik7CitcZFJwKyB0ZXN0cHViNgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjYK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1 bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgor ICAgICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9w YXJlbnQiCisKKy0tIEVYQ0VQVCB3aXRoIE9OTFk6IGV4Y2x1ZGUgdGFibGUgYnV0IG5vdCBkZXNj ZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAoT05MWSB0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI3CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBH ZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhj ZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVudCIKKworUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50LCB0ZXN0cHVi X3RibF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0LCB0ZXN0cHVi NSwgdGVzdHB1YjYsIHRlc3RwdWI3OwogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBT RVFVRU5DRVMKIENSRUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVF TkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlv bi5zcWwKaW5kZXggODViMDBiZDY3YzguLmY3OTBmZTQ5NTE4IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsCkBAIC0xMDUsMjAgKzEwNSw0MCBAQCBTRUxFQ1QgcHVibmFtZSwgcHVi YWxsdGFibGVzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0ZXN0cHViX2Zv cmFsbAogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKIAorU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZQorLS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcgRk9SIEFMTCBUQUJM RVMgRVhDRVBUICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90YmwxKTsK K1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorLS0gQ2hlY2sgdGhhdCB0 aGUgdGFibGUgZGVzY3JpcHRpb24gbGlzdHMgd2hhdCBwdWJsaWNhdGlvbnMgYXJlIGV4Y2x1ZGlu ZyBpdAorXGQgdGVzdHB1Yl90YmwxCisKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9Q IFRBQkxFIHRlc3RwdWJfdGJsMjsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJs ZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxf c2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9m b3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEsIHRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZTE7CiAKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKLUNSRUFURSBUQUJM RSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOworQ1JFQVRF IFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJf dGJsX2NoaWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibF9wYXJlbnQpOwogU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIz IEZPUiBUQUJMRSB0ZXN0cHViX3RibDM7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9S IFRBQkxFIE9OTFkgdGVzdHB1Yl90YmwzOwotUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50Owog XGRScCsgdGVzdHB1YjMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05M WSB0ZXN0cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViNAorLS0gRXhjbHVkZSBwYXJlbnQg dGFibGUsIG9taXR0aW5nIGJvdGggb2YgJ09OTFknIGFuZCAnKicKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVu dCk7CitcZFJwKyB0ZXN0cHViNQorLS0gRVhDRVBUIHdpdGggJyonOiBleGNsdWRlIHRhYmxlIGFu ZCBhbGwgZGVzY2VuZGFudHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRlc3RwdWI2 CistLSBFWENFUFQgd2l0aCBPTkxZOiBleGNsdWRlIHRhYmxlIGJ1dCBub3QgZGVzY2VuZGFudHMK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg KE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3RwdWI3CiAKLURST1AgVEFCTEUg dGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywg dGVzdHB1YjQ7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHVi X3RibF9wYXJlbnQsIHRlc3RwdWJfdGJsX2NoaWxkOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi MywgdGVzdHB1YjQsIHRlc3RwdWI1LCB0ZXN0cHViNiwgdGVzdHB1Yjc7CiAKIC0tLSBUZXN0cyBm b3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19w dWJfc2VxMDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBhNGM3ZGJhZmY1OS4uMDcy ODJhYTNjMTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ2LDYgKzQ2LDcgQEAg dGVzdHMgKz0gewogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAgICd0LzAzNV9jb25m bGljdHMucGwnLAogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCisgICAgICAndC8wMzdfcmVw X2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBd LAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFu Z2VzX2V4Y2VwdF90YWJsZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hh bmdlc19leGNlcHRfdGFibGUucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmY0Yzk3MTRiZjFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbApAQCAtMCwwICsxLDI0MCBAQAorCisj IENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorCisjIExvZ2ljYWwgcmVwbGljYXRpb24gdGVzdHMgZm9yIEVYQ0VQVCBUQUJMRSBwdWJs aWNhdGlvbnMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3Jl OworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNo ZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVy LT5zdGFydDsKKworIyBJbml0aWFsaXplIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2Ny aWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5v ZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBFWENFUFQgVEFCTEUgdGVzdCBjYXNlcyBmb3Igbm9ybWFsIHRhYmxl cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDcmVh dGUgc2NoZW1hcyBhbmQgdGFibGVzIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFNDSEVNQSBzY2gxOworCUNSRUFURSBU QUJMRSBzY2gxLnRhYjEgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBhOworKSk7 CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFNDSEVNQSBzY2gx OworCUNSRUFURSBUQUJMRSBzY2gxLnRhYjEgKGEgaW50KTsKKykpOworCisjIFNldHVwIGxvZ2lj YWwgcmVwbGljYXRpb24sIGFuZCBjcmVhdGUgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgdG8g aGVscCB3aXRoCisjIGxhdGVyIHRlc3RzLgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVf cHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2No ZW1hIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50YWIxKSIKKyk7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVhdGVfbG9n aWNhbF9yZXBsaWNhdGlvbl9zbG90KCd0ZXN0X3Nsb3QnLCAncGdvdXRwdXQnKSIpOworCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViX3NjaGVtYSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FU SU9OIHRhcF9wdWJfc2NoZW1hIgorKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMg dG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygk bm9kZV9wdWJsaXNoZXIsCisJJ3RhcF9zdWJfc2NoZW1hJyk7CisKKyMgQ2hlY2sgdGhlIHRhYmxl IGRhdGEgZG9lcyBub3Qgc3luYyBmb3IgZXhjbHVkZWQgdGFibGUKK215ICRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBt aW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwKKwkn Y2hlY2sgdGhlcmUgaXMgbm8gaW5pdGlhbCBkYXRhIGNvcGllZCBmb3IgdGhlIGV4Y2x1ZGVkIHRh YmxlJyk7CisKKyMgSW5zZXJ0IHNvbWUgZGF0YSB0byB0aGUgZXhjbHVkZWQgdGFibGUuCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnRh YjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCkpIik7CisKKyMgVmVyaWZ5IHRoYXQgZGF0 YSBpbnNlcnRlZCB0byBleGNsdWRlZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkLgorJHJlc3VsdCA9 ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgq KSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0X3Nsb3Qn LCBOVUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25hbWVzJywg J3RhcF9zdWJfc2NoZW1hJykiCispOworaXMoJHJlc3VsdCwgcXEodCksICdjaGVjayBubyBjaGFu Z2VzIGZvciBleGNsdWRlZCB0YWJsZSBpbiByZXBsaWNhdGlvbiBzbG90Jyk7CisKKyMgVmVyaWZ5 IHRoYXQgZGF0YSBpbnNlcnRlZCB0byB0aGUgZXhjbHVkZWQgdGFibGUgaXMgbm90IHJlcGxpY2F0 ZWQuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1hJyk7 CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJl c3VsdCwgcXEoMHx8KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7 CisKKyMgY2xlYW51cAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9zY2hlbWEiKTsKKwor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQg VEFCTEUgdGVzdCBjYXNlcyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCisjIENoZWNrIGJlaGF2aW9y IG9mIEVYQ0VQVCBUQUJMRSB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IG9uIGEKKyMg cGFydGl0aW9uZWQgdGFibGUgYW5kIGl0cyBwYXJ0aXRpb25zLgorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBTZXR1cCBwYXJ0aXRpb25lZCB0YWJsZSBh bmQgcGFydGl0aW9ucyBvbiB0aGUgcHVibGlzaGVyIHRoYXQgbWFwIHRvIG5vcm1hbAorIyB0YWJs ZXMgb24gdGhlIHN1YnNjcmliZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSBzY2gxLnQxKGEgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UoYSk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEgUEFSVElUSU9OIE9GIHNjaDEudDEgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDIgUEFSVElU SU9OIE9GIHNjaDEudDEgRk9SIFZBTFVFUyBGUk9NICg2KSBUTyAoMTApOworKSk7CisKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUg c2NoMS50MShhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEoYSBpbnQpOworCUNSRUFU RSBUQUJMRSBzY2gxLnBhcnQyKGEgaW50KTsKKykpOworCisjIEVYQ0VQVCBUQUJMRSAoc2NoMS5w YXJ0MSkgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlCisjIEV4Y2x1ZGlu ZyBhIHBhcnRpdGlvbiB3aGlsZSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlIHBy ZXZlbnRzCisjIHJlcGxpY2F0aW9uIG9mIHJvd3MgaW5zZXJ0ZWQgaW50byB0aGUgcGFydGl0aW9u ZWQgdGFibGUgZm9yIHRoYXQgcGFydGljdWxhcgorIyBwYXJ0aXRpb24uCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFw X3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MSkgV0lUSCAo cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CisJSU5TRVJUIElOVE8gc2NoMS50 MSBWQUxVRVMgKDEpLCAoNik7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKKyk7Ciskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0 YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwgKDcpOyIpOworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIik7 CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0YWJsZScpOwor CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgKiBGUk9NIHNjaDEucGFydDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9u IGV4Y2x1ZGVkIHBhcnRpdGlvbicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKK2lzKCAkcmVz dWx0LCBxcSg2Cis3KSwgJ2NoZWNrIHJvd3Mgb24gb3RoZXIgcGFydGl0aW9uJyk7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBzY2gxLnQxIik7Cisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBf c3ViX3BhcnQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9Q IFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDsiKTsKKworIyBFWENFUFQgVEFCTEUgKHNjaDEudDEp IHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZQorIyBFeGNsdWRpbmcgdGhl IHBhcnRpdGlvbmVkIHRhYmxlIHN0aWxsIGFsbG93cyByb3dzIGluc2VydGVkIGludG8gdGhlCisj IHBhcnRpdGlvbmVkIHRhYmxlIHRvIGJlIHJlcGxpY2F0ZWQgdmlhIGl0cyBwYXJ0aXRpb25zLgor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEu dDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOworCUlOU0VSVCBJ TlRPIHNjaDEudDEgVkFMVUVTICgxKSwgKDYpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgQ09O TkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQiCisp OworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVi bGlzaGVyLCAndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMiksICg3KTsiKTsKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00g c2NoMS50MSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9uZWQg dGFibGUnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7CitpcyggJHJlc3VsdCwgcXEoMQorMiks ICdjaGVjayByb3dzIG9uIGZpcnN0IHBhcnRpdGlvbicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIi KTsKK2lzKCAkcmVzdWx0LCBxcSg2Cis3KSwgJ2NoZWNrIHJvd3Mgb24gc2Vjb25kIHBhcnRpdGlv bicpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg c2NoMS50MSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3Bh cnQnKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJT Q1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVw bGljYXRpb25fc2xvdF9hZHZhbmNlKCd0ZXN0X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSk7 IgorKTsKKworIyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIHdpdGggcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSB0cnVlCisjIFdoZW4gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIGV4Y2x1ZGVk IGFuZCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBpcyB0cnVlLAorIyBubyByb3dzIGZyb20g dGhlIHRhYmxlIG9yIGl0cyBwYXJ0aXRpb25zIGFyZSByZXBsaWNhdGVkLgorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRh cF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIFdJVEggKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAo MSksICg2KTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJf Y29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgorKTsKKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFy dCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElO VE8gc2NoMS50MSBWQUxVRVMgKDIpLCAoNyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQg dG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbiBpdCBpcworIyBl eGNsdWRlZCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4KKyRyZXN1bHQg PSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQo KikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90 JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycs ICd0YXBfcHViX3BhcnQnKSIKKyk7CitpcygkcmVzdWx0LCBxcSh0KSwgJ2NoZWNrIG5vIGNoYW5n ZXMgZm9yIGV4Y2x1ZGVkIHRhYmxlIGluIHJlcGxpY2F0aW9uIHNsb3QnKTsKKworJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBz Y2gxLnQxIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0 YWJsZScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVj ayByb3dzIG9uIGZpcnN0IHBhcnRpdGlvbicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKK2lz KCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHNlY29uZCBwYXJ0aXRpb24nKTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIHNjaDEudDEiKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRh cF9zdWJfcGFydCIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0OyIpOworCisjIEVYQ0VQVCBUQUJMRSAoc2NoMS5w YXJ0MSkgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUKKyMgV2hlbiBhIHBh cnRpdGlvbiBpcyBleGNsdWRlZCBidXQgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMgdHJ1 ZSwKKyMgcm93cyBwdWJsaXNoZWQgdGhyb3VnaCB0aGUgcGFydGl0aW9uZWQgdGFibGUgY2FuIHN0 aWxsIGJlIHJlcGxpY2F0ZWQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QpOworCUlOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgxKSwgKDYpCispKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRh cF9zdWJfcGFydCBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRh cF9wdWJfcGFydCIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwg KDcpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQn KTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIE9SREVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgx CisyCis2Cis3KSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9uZWQgdGFibGUnKTsKKworJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJP TSBzY2gxLnBhcnQxIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBleGNsdWRl ZCBwYXJ0aXRpb24nKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyIik7CitpcygkcmVzdWx0LCBxcSgp LCAnY2hlY2sgcm93cyBvbiBvdGhlciBwYXJ0aXRpb24nKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ c3RvcCgnZmFzdCcpOworJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVz dGluZygpOwotLSAKMi4zNC4xCgo= --000000000000a6f6620649fb2b9e Content-Type: application/octet-stream; name="v40-0003-Extended-tests-for-EXCEPT-TABLE-patch.patch" Content-Disposition: attachment; filename="v40-0003-Extended-tests-for-EXCEPT-TABLE-patch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml7qohsb2 RnJvbSA1Yzg1MWY5NTVkYTQzNjg2OGQzMzUxMWMwNmMzNjJlYWI4NjAwMmViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxMjoyNzo1NyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjQw IDMvM10gRXh0ZW5kZWQgdGVzdHMgZm9yIEVYQ0VQVCBUQUJMRSBwYXRjaAoKVGhpcyBwYXRjaCBj b250YWlucyBleHRyYSB0ZXN0cyBmb3IgRVhDRVBUIFRBQkxFIHBhdGNoLiBQdXJwb3NlIG9mIHRo aXMKdGVzdHMgdG8ga2VlcCB0cmFjayBvZiB0ZXN0cyB3aGljaCBvbmNlIGJyb2tlIHRoZSBwYXRj aC4KCkJhc2VkIG9uIGRpc2N1c3Npb24gaW4gZnV0dXJlIHdlIG1heSBwaWNrIHVwIHNvbWUgdGVz dCB0byBpbmNsdWRlIGluCnRoZSBtYWluIHBhdGNoLgotLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzEwMV90ZXN0LnBsIHwgMTM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmls ZSBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzEwMV90ZXN0LnBsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMTAxX3Rlc3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8xMDFfdGVzdC5w bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjE3ZmYxMDE3M2YKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8xMDFfdGVzdC5wbApAQCAt MCwwICsxLDEzOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisjCisjIEV4dGVuZGVkIHRlc3QgZm9yIEVYQ0VQVCBUQUJMRQorCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCisjIC0tLS0tLS0tCisjIFB1Ymxpc2hlcgorIyAtLS0tLS0tLQorbXkgJHB1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiskcHVi bGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRwdWJsaXNoZXIt PmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxKAord2FsX2xldmVsID0gbG9naWNh bAorbG9nX21pbl9tZXNzYWdlcyA9IElORk8KK2xvZ19zdGF0ZW1lbnQgPSBhbGwKK3dhbF9yZWNl aXZlcl90aW1lb3V0ID0gMAord2FsX3NlbmRlcl90aW1lb3V0ID0gMAorKSk7CiskcHVibGlzaGVy LT5zdGFydDsKKworIyBDcmVhdGUgYSBwYXJ0aXRpb24gc3RydWN0dXJlOgorIyBzYzEudDEKKyMg ICAtIHNjMS5jaGlsZDEKKyMgICAgICAgLSBzYzEuY2hpbGQxXzEKKyMgICAgICAgLSBzYzEuY2hp bGQxXzIKKyMgICAtIHNjMS5jaGlsZDIKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxKAorCUNSRUFURSBTQ0hFTUEgc2MxOworCUNSRUFURSBUQUJMRSBzYzEudDEoaWQgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UoaWQpOworCUNSRUFURSBUQUJMRSBzYzEuY2hpbGQxKGlkIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKKwlDUkVBVEUgVEFCTEUgc2MxLmNoaWxkMiBQQVJU SVRJT04gT0Ygc2MxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAoMjAwKTsKKwlDUkVBVEUg VEFCTEUgc2MxLmNoaWxkMV8xIFBBUlRJVElPTiBPRiBzYzEuY2hpbGQxIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDUwKTsKKwlDUkVBVEUgVEFCTEUgc2MxLmNoaWxkMV8yIFBBUlRJVElPTiBPRiBz YzEuY2hpbGQxIEZPUiBWQUxVRVMgRlJPTSAoNTEpIFRPICgxMDApOworCUFMVEVSIFRBQkxFIHNj MS50MSBBVFRBQ0ggUEFSVElUSU9OIHNjMS5jaGlsZDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MTAwKTsKKwlJTlNFUlQgSU5UTyBzYzEudDEgVkFMVUVTICgxKSwgKDUxKSwgKDEwMSk7CispKTsK KworIyAtLS0tLS0tLS0tCisjIFN1YnNjcmliZXIKKyMgLS0tLS0tLS0tLQorbXkgJGNvbm5zdHIg PSAkcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworbXkgJHN1YnNjcmli ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRzdWJz Y3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRzdWJzY3JpYmVy LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcSgKK3dhbF9sZXZlbCA9IGxvZ2lj YWwKK2xvZ19taW5fbWVzc2FnZXMgPSBJTkZPCitsb2dfc3RhdGVtZW50ID0gYWxsCit3YWxfcmVj ZWl2ZXJfdGltZW91dCA9IDAKK3dhbF9zZW5kZXJfdGltZW91dCA9IDAKKykpOworJHN1YnNjcmli ZXItPnN0YXJ0OworCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHEoCisJ Q1JFQVRFIFNDSEVNQSBzYzE7CisJQ1JFQVRFIFRBQkxFIHNjMS50MShpZCBpbnQpOworCUNSRUFU RSBUQUJMRSBzYzEuY2hpbGQxKGlkIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjMS5jaGlsZDFfMShp ZCBpbnQpOworCUNSRUFURSBUQUJMRSBzYzEuY2hpbGQxXzIoaWQgaW50KTsKKwlDUkVBVEUgVEFC TEUgc2MxLmNoaWxkMihpZCBpbnQpOworKSk7CisKKyMgVGVzdDogMQorIyBDcmVhdGUgdHdvIHB1 YmxpY2F0aW9ucyB3aXRoICJBTEwgVEFCTEUgRVhDRVBUIiBhbmQgRVhDRVBUIGlzIG9uIGRpZmZl cmVudAorIyBub2RlcyBvZiBhIHBhcnRpdGlvbiB0cmVlCiskcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHNjMS5jaGlsZDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gdHJ1ZSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFIChzYzEudDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1 ZSk7CispKTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNV QlNDUklQVElPTiBzdWIxIENPTk5FQ1RJT04gJyRjb25uc3RyJyBQVUJMSUNBVElPTiBwdWIxLCBw dWIyOyIpOworCisjIFdhaXQgZm9yIGluaXRpYWwgc3luYworJHN1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWIxJyk7CisKKyMgQ2hlY2sgaWYgdGFi bGVzeW5jIGdpdmVzIGNvcnJlY3Qgb3V0cHV0CitteSAkcmVzdWx0ID0gJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzYzEudDEiKTsKK2lzKCRyZXN1bHQs IHFxKDEwMSksICdjaGVjayBkYXRhIGFmdGVyIHRhYmxlc3luYycpOworCisjIENoZWNrIGZvciBp bmNyZW1lbnRhbCBzeW5jCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5T RVJUIElOVE8gc2MxLnQxIFZBTFVFUyAoMSksICg1MSksICgxMDEpIik7Ciskc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YjEnKTsKKyRyZXN1bHQg PSAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjMS50 MSIpOworaXMoICRyZXN1bHQsIHFxKDEwMQorMTAxKSwgJ2NoZWNrIGRhdGEgYWZ0ZXIgaW5jcmVt ZW50YWwgc3luYycpOworCisjIGNsZWFudXAKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxKAorCURST1AgUFVCTElDQVRJT04gcHViMSwgcHViMjsKKwlUUlVOQ0FURSBzYzEu dDE7CispKTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcSgKKwlEUk9Q IFNVQlNDUklQVElPTiBzdWIxOworCVRSVU5DQVRFIHNjMS50MTsKKykpOworCisjIFRlc3QgMjoK KyMgQ3JlYXRlIHR3byBwdWJsaWNhdGlvbnMsIG9uZSB3aXRoICJBTEwgVEFCTEVTIEVYQ0VQVCIs IG90aGVyIHdpdGggIkZPUiBUQUJMRSIKKyMgVGFibGVzIHNwZWNpZmllZCBpbiAiRVhDRVBUIiBh bmQgIkZPUiBUQUJMRSIgYXJlIHBhcnQgb2Ygc2FtZSBwYXJ0aXRpb24gdHJlZQorJHB1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHEoCisJSU5TRVJUIElOVE8gc2MxLnQxIFZBTFVF UyAoMSksICg1MSksICgxMDEpOworCUNSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFC TEVTIEVYQ0VQVCBUQUJMRSAoc2MxLmNoaWxkMikgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QgPSB0cnVlKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViMiBGT1IgVEFCTEUgc2MxLmNo aWxkMV8xIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKKyRz dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBz dWIxIENPTk5FQ1RJT04gJyRjb25uc3RyJyBQVUJMSUNBVElPTiBwdWIxLCBwdWIyOyIpOworCisj IENoZWNrIGZvciB0YWJsZXN5bmMKKyRzdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYygkcHVibGlzaGVyLCAnc3ViMScpOworJHJlc3VsdCA9CisgICRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2MxLnQxIE9SREVSIEJZIGlkIik7Citp cyggJHJlc3VsdCwgcXEoMQorNTEpLCAnY2hlY2sgZGF0YSBhZnRlciB0YWJsZXN5bmMnKTsKKwor IyBDaGVjayBmb3IgaW5jcmVtZW50YWwgc3luYworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjMS50MSBWQUxVRVMgKDEpLCAoNTEpLCAoMTAxKSIpOwor JHN1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWIx Jyk7CiskcmVzdWx0ID0KKyAgJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUICogRlJPTSBzYzEudDEgT1JERVIgQlkgaWQiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisxCis1 MQorNTEpLCAnY2hlY2sgZGF0YSBhZnRlciBpbmNyZW1lbnRhbCBzeW5jJyk7CisKK2RvbmVfdGVz dGluZygpOwotLSAKMi4zNC4xCgo= --000000000000a6f6620649fb2b9e--