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 1wfh13-005awo-0a for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Jul 2026 16:45:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wfh11-008WE9-2p for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Jul 2026 16:45:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wfh11-008WE0-1H for pgsql-hackers@lists.postgresql.org; Fri, 03 Jul 2026 16:45:23 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wfh0y-00000001UH5-2yLr for pgsql-hackers@lists.postgresql.org; Fri, 03 Jul 2026 16:45:22 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-39b03d41976so6413981fa.3 for ; Fri, 03 Jul 2026 09:45:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783097119; cv=none; d=google.com; s=arc-20260327; b=YA84fKEz6U1+q0ofBd4Jl1hZIJG2H1TTeOuceULx9noZtS9DvaCaHGPlDEqbzOmwra E3Wf+JXvJHpS+pldl4f1X2kvNsmBHLhCzEoH9vvyFHp5yMgOPNKpjugnyZhd2YsCfpis DMagZquu76XeC5FUE/tcA0Eyyy9zbzMnpjjDdGmUBE8vL9xEBSWPOHHvP5dqqgAM2iqR jFjapphFTh7eVR6xIeopLzZ3kK87MdT2eJFI56zUPmMBSWsscB1jPHURpi0Xqsl0MKkG 84n3J9HJPu2CA6Fl1Rp7JpAIEEz/AcLf5hR7UVysTucqZ2Q0jMWyW67nyE+b64tjX3IP xIHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=9bEafhLE12S8+olyCGlI3t4zv0oShqWeD9eecmlVO80=; fh=BxU7DEmyzIJlCJX0HXTsRZycqUOKIOWlCnqXCuODtO4=; b=Sbs4XVCBIDZ9PC7h72odpL1i0ONO0fKjNzyVFM9Jv8Xd5OKdwgwx8103hYNx3bBdwi Y++pga3L/3ynzlxlA/69/4ki4EsIkewOFfQd0waGMsLpdhKKs/NuVTESGY899oDSnNhC 33PvKO8r6L7Z9pT9tJNwogHyBHBp3ZXE1MXesDM0MU/epjSFMtm+4gltl3SsFXLlO1fv urwdV55CgyuY7guo43ae7cIi2urBt1XAWmuoXEignsqY8bCDMAmilyUBS/b/5BSIqkmk lQATJ+E3j/yjx1DfH2DEgM0+GjtF2/hPRBrOkXKMUjhM2wuGsjwPH3oeq1C3eDa5ftof /mRA==; 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=20251104; t=1783097119; x=1783701919; darn=lists.postgresql.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=9bEafhLE12S8+olyCGlI3t4zv0oShqWeD9eecmlVO80=; b=KoBTXpQe0+HBGMR6/kFddZ1RKFmxnA12fsLTUXLcrdeV22JKZCKMdABnrwEuQ11oRj 33kBX0bKToJ9hHKUBbqJU51krCcZq94oIvMTiQdqyA8OCjqE8VBtFkcRZSlc8VEyIm9F DczMyojXCwau85+RiGeLovq6XYT7S12mGEy77bchFQIPiJUhZpY2cxq1QNU1oxyUfg1a MKf1gNqSgmAZl2P5yLZe2nalTtmbgf3aRqXoxpiWVCQVoFvn7n+Z2i9Qt3TTUknynkkK IDkYGamC9nrJ5TBUvj8qdv7ITraqjkpDMv0Q4EKSSLpDh5urOaqPiUihEosL9/WA7apW G4uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783097119; x=1783701919; h=content-type: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:content-type; bh=9bEafhLE12S8+olyCGlI3t4zv0oShqWeD9eecmlVO80=; b=qDyS8cCyNevB5YS99+F5ep8RRrn4ZtnJQ5cA4PzLt0oaemtNBJhsY85u3qdqDKKDhh 3UL+gHjurq/8JaCtP9UzxJcmR/rjXrzHHf5Tmex+w35LmopmgIPnHxl87u7p2YIWPcHK jY/rFkNOROPUygjyAs/iTlzeWzW+lFg2TrOjx30ruoGFoVVg49rxiBpQeO7G4Sm+53uy N3megUFGVOY3HQ9CTlP/L/ERkyKIBFrL5N5s9scBBCIfqV7J66enR8Zs6RHF2CxAC390 FDub2R3nQJyfxjQCBfXfnQh7jHabzf+PAGk9x5Hhg1mGJV0t1za0cra3wObkT+pRyW1M VrOA== X-Forwarded-Encrypted: i=1; AHgh+RoUdfB+o2Q2ROzdECNphe4BXoCX7wp8XpEhSiill1rHtue3MApIuldK9RRMKbolzOzzLGvgRySG0c/uxQc0@lists.postgresql.org X-Gm-Message-State: AOJu0Yy2Wqn8zijr0ZKWB4ldzhsy6G4/edFLOMoaQ1/7OzsPWAPgZzQN NDwbRKvX/v/dslhxKIu25LCPvyalaemA2uTc8mFzU/Q3IwtA1PtknIuUHoJ8kQcaqYGOjQHGy71 nSNlpsf1Vove+qyqn1Xusn6w8NiuYTw== X-Gm-Gg: AfdE7cmTll3uD/6Tb8H+6Y/uS4rw9E+n9TeSE2n53FA+I44Fo25jeZM+GQpkEYp/OUy zUmrWFoIfM/a3qxDxkt1+9FrPCwjPxnTFrG6crN7bweFWiFK1z3GwritbVLGYnfJHphtPg+/ji0 S1609Vcob4vSEZdsKkgNGS8hD61q6oZsUmlObZUWQ8QJi9AThgwd17ZTsZFUdACIyLAvSBDxRpr 0l406Ia50ym2DMxT7wheKJXhBIy1694kqxVYneCmRSZqQ9DGdecMV3uULJvllTHfm2302QvbZtp 6aU= X-Received: by 2002:a05:651c:1591:b0:39b:2a66:4be2 with SMTP id 38308e7fff4ca-39b36eb7641mr23739321fa.22.1783097118319; Fri, 03 Jul 2026 09:45:18 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Fri, 3 Jul 2026 22:15:03 +0530 X-Gm-Features: AVVi8CcJqZ3GGqQ9dZOYbPQGKtZUD4X-xuVyuUpiADghOIKHK0tCsH7ZphmU21I Message-ID: Subject: Re: Support EXCEPT for TABLES IN SCHEMA publications To: shveta malik Cc: Peter Smith , Amit Kapila , Zsolt Parragi , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000568c980655b7a62b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000568c980655b7a62b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jul 2, 2026 at 2:19=E2=80=AFPM shveta malik wrote: > > A few comments: > > 1) > postgres=3D# alter publication pub1 add table s2.t1; > ERROR: table "s2.t1" cannot be added because it is excluded from > publication "pub1" > > It will be good to add hint in above error. > > Suggestion: > ERROR: cannot add table "s2.t1" to publication "pub1" > DETAIL: Table "s2.t1" is currently in EXCEPT list > HINT: Change EXCEPT list using ALTER PUBLICATION ..SET TABLES IN > SCHEMA .. EXCEPT > > Please rephrase above as needed. Look earlier such messages/hints > already added for ALL TABLES. > Updated the error as suggested, with a slight change in DETAIL message. > From the user's perspective, it seems slightly odd that if he has > excluded a table from publication, he can not add it back using 'add > table'. Was this point discussed earlier? > This hasn't been discussed yet. I kept the current behavior, as IMO, it is hard to tell whether the user is trying to re-include a table or whether the ADD is unintended and should be blocked. To avoid ambiguity, I think EXCEPT entries should be modified only through the EXCEPT (...) clause itself, such as ALTER PUBLICATION ... ADD/SET ... EXCEPT(TABLE ...), or by omitting EXCEPT in the SET case. This would also keep the behavior of ADD TABLE and DROP TABLE aligned, as both would operate only on the include list without touching the EXCEPT list. I think this also aligns with FOR ALL TABLES, where ADD TABLE is disallowed, so the EXCEPT list can only be modified through SET .. EXCEPT (...). Thoughts? > 2) > Currently: > postgres=3D# alter publication pub1 drop table s2.t1; > ERROR: relation "t1" is not part of the publication > > s2.t1 is EXCEPT list here. > > Should we have below error for this case rather than above generic > error, it will be more intuitive for user. Plus both add and drop > table commands will have similar error-style for EXCEPT list. > Thoughts? > > ERROR: cannot drop table "s2.t1" from publication "pub1" > DETAIL: Table "s2.t1" is currently in EXCEPT list > HINT: Change EXCEPT list using ALTER PUBLICATION ..SET TABLES IN > SCHEMA .. EXCEPT > Makes sense. Fixed. > 3) > Please see below test: > > --Setting Except list for pub1 which has all tables of s2 included: > alter publication pub1 set tables in schema s2 EXCEPT ( TABLE t1, t2); > > --pg_publication_rel entries: > pubname | schema_name | table_name | prexcept > --------+-------------+------------+--------- > pub1 | s2 | t1 | t > pub1 | s2 | t2 | t > > > --Then added a partition: > alter publication pub1 add table s2.tab_part_1_p2; > > --pg_publication_rel entries: > pubname | schema_name | table_name | prexcept > --------+-------------+---------------+--------- > pub1 | s2 | t1 | t > pub1 | s2 | t2 | t > pub1 | s2 | tab_part_1_p2 | f > > > --Then changed pub1 to exclude tab_root (parent of tab_part_1_p2) as well= : > > alter publication pub1 set tables in schema s2 EXCEPT ( TABLE t1, t2, tab= _root); > > --pg_publication_rel entries: > pubname | schema_name | table_name | prexcept > --------+-------------+------------+--------- > pub1 | s2 | t1 | t > pub1 | s2 | t2 | t > pub1 | s2 | tab_root | t > > Note theoutput above, tab_part_1_p2 is removed internally as part of > earlier command since its parent tab_root is now excluded. > > --Now add parition back, it allowed to add it: > alter publication pub1 add table s2.tab_part_1_p2; > > pg_publication_rel entries: > pubname | schema_name | table_name | prexcept > --------+-------------+---------------+--------- > pub1 | s2 | t1 | t > pub1 | s2 | t2 | t > pub1 | s2 | tab_root | t > pub1 | s2 | tab_part_1_p2 | f > > > FOR ALL TABLES publicaiton, if root is excluded, there is no way > publication can have parition included independently. Same should hold > true here. Thoughts? Right, based on the discussion at [1], since we follow "all partitions are excluded if the root is excluded", a partition child should not be allowed to be added when its partition root is already excluded from the publication. Fixed. Such an operation will now raise an error: postgres=3D# alter publication pub2 add table t_part_p1; ERROR: cannot add table "public.t_part_p1" to publication "pub2" DETAIL: Partition ancestor "public.t_part" of table "public.t_part_p1" is currently listed in the EXCEPT clause of the publication. HINT: Change EXCEPT list using ALTER PUBLICATION ... SET TABLES IN SCHEMA ... EXCEPT. ~~~ Attached are the updated patches v18. [1] https://www.postgresql.org/message-id/CAA4eK1%2BNmQRjSHPLr0X8YBuC6joivF= qgsY3_qJ5-RnuuwNGkRQ%40mail.gmail.com -- Thanks, Nisha --000000000000568c980655b7a62b Content-Type: application/x-patch; name="v18-0001-Support-EXCEPT-clause-for-schema-level-publicati.patch" Content-Disposition: attachment; filename="v18-0001-Support-EXCEPT-clause-for-schema-level-publicati.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr55ldxj0 RnJvbSBkMGJlNmNiOWUwYjc3NzI4NjU5ZjdiN2YzMjUwNzUyMzI5NGU1Y2JhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUdWUsIDE2IEp1biAyMDI2IDEwOjU4OjQ5ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MTggMS80XSBTdXBwb3J0IEVYQ0VQVCBjbGF1c2UgZm9yIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlv bnMKCkV4dGVuZCB0YWJsZSBleGNsdXNpb24gc3VwcG9ydCBpbiBwdWJsaWNhdGlvbnMgdG8gYWxs b3cgc3BlY2lmaWMKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gc2NoZW1hLWxldmVsIHB1Ymxp Y2F0aW9ucyB1c2luZyBhbgpFWENFUFQgY2xhdXNlIGluIENSRUFURSBQVUJMSUNBVElPTi4KClN1 cHBvcnRlZCBzeW50YXg6CkNSRUFURSBQVUJMSUNBVElPTiA8cHViPiBGT1IgVEFCTEVTIElOIFND SEVNQSBzIEVYQ0VQVCAoVEFCTEUgdDEsLi4uKTsKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMgICAgICAgIHwgMjQ0ICsrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgIHwgMTYyICsrKysrKysrKysrKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgfCAgMTEgKwogc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICB8ICA1NCArKysrLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8ICAzOSArKystCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgIHwgIDQxICsrLS0KIHNyYy9i aW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysKIHNyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgfCAgMzUgKystCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wdWJsaWNhdGlvbi5vdXQgICB8IDE4MCArKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgfCAxMDcgKysrKysrKystCiBzcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsICAgICAgIHwgMTMzICsrKysrKysrKystCiAx NCBmaWxlcyBjaGFuZ2VkLCA5NDMgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDFlYzk0Yzg1MWIyLi5jZTBmNmQ1Yjhj MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtNTMsOSArNTMsMTAgQEAg dHlwZWRlZiBzdHJ1Y3QKICAqIGVycm9yIGlmIG5vdC4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNr X3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKK2NoZWNr X3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSwgT2lkIHB1 YmlkKQogewogCVJlbGF0aW9uCXRhcmdldHJlbCA9IHByaS0+cmVsYXRpb247CisJT2lkCQkJcmVs aWQgPSBSZWxhdGlvbkdldFJlbGlkKHRhcmdldHJlbCk7CiAJY29uc3QgY2hhciAqcmVsbmFtZTsK IAljb25zdCBjaGFyICplcnJvcm1zZzsKIApAQCAtMTEwLDYgKzExMSw0OCBAQCBjaGVja19wdWJs aWNhdGlvbl9hZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZyhlcnJvcm1z ZywgcmVsbmFtZSksCiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBv cnRlZCBmb3IgdW5sb2dnZWQgdGFibGVzLiIpKSk7CisKKwkvKgorCSAqIEEgcGFydGl0aW9uIGNh bm5vdCBiZSBpbmRlcGVuZGVudGx5IGluY2x1ZGVkIHdoZW4gYW55IG9mIGl0cyBwYXJ0aXRpb24K KwkgKiBhbmNlc3RvcnMgaXMgaW4gdGhpcyBwdWJsaWNhdGlvbidzIEVYQ0VQVCBsaXN0LiAgRG9p bmcgc28gd291bGQgbGVhdmUKKwkgKiB0aGUgY2F0YWxvZyBpbmNvbnNpc3RlbnQgKHJvb3QgZXhj bHVkZWQsIHBhcnRpdGlvbiBleHBsaWNpdGx5IGluY2x1ZGVkKQorCSAqIGFuZCB0aGUgYW5jZXN0 b3ItY2FzY2FkZSBydWxlIHdvdWxkIHNpbGVudGx5IG92ZXJyaWRlIHRoZSBpbmNsdWRlIGF0CisJ ICogcmVwbGljYXRpb24gdGltZS4gIEluZGl2aWR1YWwgcGFydGl0aW9ucyBjYW5ub3QgYXBwZWFy IGluIEVYQ0VQVAorCSAqIChyZWplY3RlZCBhYm92ZSksIHNvIHRoaXMgY2hlY2sgb25seSBhcHBs aWVzIHRvIG5vbi1FWENFUFQgYWRkcy4KKwkgKi8KKwlpZiAoIXByaS0+ZXhjZXB0ICYmIHRhcmdl dHJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKKwl7CisJCUxpc3QJICAgKmFuY2VzdG9ycyA9 IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKworCQlmb3JlYWNoX29pZChhbmNlc3Rv ciwgYW5jZXN0b3JzKQorCQl7CisJCQlIZWFwVHVwbGUJYXR1cDsKKwkJCWJvb2wJCWFuY2VzdG9y X2V4Y2VwdDsKKworCQkJYXR1cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwK KwkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShhbmNlc3RvciksCisJCQkJCQkJCSAgIE9iamVj dElkR2V0RGF0dW0ocHViaWQpKTsKKwkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChhdHVwKSkKKwkJ CQljb250aW51ZTsKKworCQkJYW5jZXN0b3JfZXhjZXB0ID0gKChGb3JtX3BnX3B1YmxpY2F0aW9u X3JlbCkgR0VUU1RSVUNUKGF0dXApKS0+cHJleGNlcHQ7CisJCQlSZWxlYXNlU3lzQ2FjaGUoYXR1 cCk7CisKKwkJCWlmIChhbmNlc3Rvcl9leGNlcHQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJjYW5u b3QgYWRkIHRhYmxlIFwiJXNcIiB0byBwdWJsaWNhdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlSZWxh dGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLAorCQkJCQkJCQlnZXRfcHVi bGljYXRpb25fbmFtZShwdWJpZCwgZmFsc2UpKSwKKwkJCQkJCSBlcnJkZXRhaWwoIlBhcnRpdGlv biBhbmNlc3RvciBcIiVzXCIgb2YgdGFibGUgXCIlc1wiIGlzIGN1cnJlbnRseSBsaXN0ZWQgaW4g dGhlIEVYQ0VQVCBjbGF1c2Ugb2YgdGhlIHB1YmxpY2F0aW9uLiIsCisJCQkJCQkJCSAgIHF1b3Rl X3F1YWxpZmllZF9pZGVudGlmaWVyKGdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFj ZShhbmNlc3RvcikpLAorCQkJCQkJCQkJCQkJCQkJICBnZXRfcmVsX25hbWUoYW5jZXN0b3IpKSwK KwkJCQkJCQkJICAgUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSks CisJCQkJCQkgZXJyaGludCgiQ2hhbmdlIEVYQ0VQVCBsaXN0IHVzaW5nIEFMVEVSIFBVQkxJQ0FU SU9OIC4uLiBTRVQgVEFCTEVTIElOIFNDSEVNQSAuLi4gRVhDRVBULiIpKSk7CisJCX0KKworCQls aXN0X2ZyZWUoYW5jZXN0b3JzKTsKKwl9CiB9CiAKIC8qCkBAIC0zNDAsMTkgKzM4MywyMCBAQCBp c190YWJsZV9wdWJsaWNhdGlvbihPaWQgcHViaWQpCiAJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nh bihwdWJyZWxzcmVsLAogCQkJCQkJCSAgUHVibGljYXRpb25SZWxQcnB1YmlkSW5kZXhJZCwKIAkJ CQkJCQkgIHRydWUsIE5VTEwsIDEsICZzY2Fua2V5KTsKLQl0dXAgPSBzeXN0YWJsZV9nZXRuZXh0 KHNjYW4pOwotCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCi0JewotCQlGb3JtX3BnX3B1Ymxp Y2F0aW9uX3JlbCBwdWJyZWw7Ci0KLQkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVs KSBHRVRTVFJVQ1QodHVwKTsKIAotCQkvKgotCQkgKiBGb3IgYW55IHB1YmxpY2F0aW9uLCBwZ19w dWJsaWNhdGlvbl9yZWwgY29udGFpbnMgZWl0aGVyIG9ubHkgRVhDRVBUCi0JCSAqIGVudHJpZXMg b3Igb25seSBleHBsaWNpdGx5IGluY2x1ZGVkIHRhYmxlcy4gVGhlcmVmb3JlLCBleGFtaW5pbmcK LQkJICogdGhlIGZpcnN0IHR1cGxlIGlzIHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lIHRhYmxlIGlu Y2x1c2lvbi4KLQkJICovCi0JCXJlc3VsdCA9ICFwdWJyZWwtPnByZXhjZXB0OworCS8qCisJICog QSBwdWJsaWNhdGlvbiBjYW4gaG9sZCBib3RoIGV4cGxpY2l0LWluY2x1ZGUgKHByZXhjZXB0PWZh bHNlKQorCSAqIGFuZCBFWENFUFQgKHByZXhjZXB0PXRydWUpIHJvd3MgZm9yIHRoZSBzYW1lIHB1 YmlkLiAgU2NhbiB1bnRpbAorCSAqIHdlIGZpbmQgYW4gZXhwbGljaXQtaW5jbHVkZSByb3csIHJh dGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIGZpcnN0IHJvdydzCisJICogcHJleGNlcHQgdmFsdWUu CisJICovCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChz Y2FuKSkpCisJeworCQlpZiAoISgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0 dXApKS0+cHJleGNlcHQpCisJCXsKKwkJCXJlc3VsdCA9IHRydWU7CisJCQlicmVhazsKKwkJfQog CX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC00NTQsMTQgKzQ5OCwyNyBAQCBHZXRQ dWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQsCiAgKgogICogTm90ZSB0aGF0IHRoZSBsaXN0IG9mIGFuY2VzdG9ycyBz aG91bGQgYmUgb3JkZXJlZCBzdWNoIHRoYXQgdGhlIHRvcG1vc3QKICAqIGFuY2VzdG9yIGlzIGF0 IHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgKgorICogZXhjZXB0X3B1YmlkcyBpcyBhIGxpc3Qgb2Yg cHVibGljYXRpb24gT0lEcyB3aG9zZSBzY2hlbWEgbWVtYmVyc2hpcAorICogc2hvdWxkIGJlIGln bm9yZWQgZm9yIHRoZSBhbmNlc3RvciAoYmVjYXVzZSB0aGUgYW5jZXN0b3IgaXMgaW4gdGhlaXIK KyAqIEVYQ0VQVCBjbGF1c2UpLgogICovCiBPaWQKLUdldFRvcE1vc3RBbmNlc3RvckluUHVibGlj YXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsKQor R2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3Rv cnMsCisJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwsIExpc3QgKmV4Y2VwdF9wdWJpZHMpCiB7 CiAJTGlzdENlbGwgICAqbGM7CiAJT2lkCQkJdG9wbW9zdF9yZWxpZCA9IEludmFsaWRPaWQ7CiAJ aW50CQkJbGV2ZWwgPSAwOwogCisJLyoKKwkgKiBleGNlcHRfcHViaWRzIGlzIGNvbXB1dGVkIG9u Y2UgZnJvbSB0aGUgcGFydGl0aW9uIHJvb3QgYW5kIHJldXNlZAorCSAqIGFjcm9zcyB0aGUgYW5j ZXN0b3Igd2Fsay4gUmUtZmV0Y2hpbmcgZXhjbHVzaW9uIGluZm9ybWF0aW9uIGZvciBlYWNoCisJ ICogYW5jZXN0b3IgaXMgdW5uZWNlc3NhcnkgYmVjYXVzZSBvbmx5IHRoZSByb290IGNhbiBoYXZl IHByZXhjZXB0PXRydWU7CisJICogcGFydGl0aW9ucyB0aGVtc2VsdmVzIGNhbm5vdCBiZSBhZGRl ZCB0byBFWENFUFQuCisJICovCisJYm9vbAkJY2hlY2tfc2NoZW1hcyA9ICFsaXN0X21lbWJlcl9v aWQoZXhjZXB0X3B1YmlkcywgcHVib2lkKTsKKwogCS8qCiAJICogRmluZCB0aGUgInRvcG1vc3Qi IGFuY2VzdG9yIHRoYXQgaXMgaW4gdGhpcyBwdWJsaWNhdGlvbi4KIAkgKi8KQEAgLTQ4MCw3ICs1 MzcsNyBAQCBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3Qg KmFuY2VzdG9ycywgaW50ICphbmNlc3Rvcl9sZXZlbAogCQkJaWYgKGFuY2VzdG9yX2xldmVsKQog CQkJCSphbmNlc3Rvcl9sZXZlbCA9IGxldmVsOwogCQl9Ci0JCWVsc2UKKwkJZWxzZSBpZiAoY2hl Y2tfc2NoZW1hcykKIAkJewogCQkJYXNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9u cyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3RvcikpOwogCQkJaWYgKGxpc3RfbWVtYmVyX29pZChh c2NoZW1hUHViaWRzLCBwdWJvaWQpKQpAQCAtNTU1LDIxICs2MTIsMzYgQEAgcHVibGljYXRpb25f YWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJICogZHVw bGljYXRlcywgaXQncyBoZXJlIGp1c3QgdG8gcHJvdmlkZSBuaWNlciBlcnJvciBtZXNzYWdlIGlu IGNvbW1vbgogCSAqIGNhc2UuIFRoZSByZWFsIHByb3RlY3Rpb24gaXMgdGhlIHVuaXF1ZSBrZXkg b24gdGhlIGNhdGFsb2cuCiAJICovCi0JaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNB VElPTlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCi0JCQkJCQkJICBPYmplY3RJZEdl dERhdHVtKHB1YmlkKSkpCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQ LCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJp ZCkpOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKIAl7CisJCWJvb2wJCWlzX2V4Y2Vw dCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJleGNlcHQ7 CisKKwkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CiAJCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVz aXZlTG9jayk7CiAKIAkJaWYgKGlmX25vdF9leGlzdHMpCiAJCQlyZXR1cm4gSW52YWxpZE9iamVj dEFkZHJlc3M7CiAKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJ Q0FURV9PQkpFQ1QpLAotCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBhbHJlYWR5IG1l bWJlciBvZiBwdWJsaWNhdGlvbiBcIiVzXCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOworCQlpZiAoaXNfZXhjZXB0KQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJ IGVycm1zZygiY2Fubm90IGFkZCB0YWJsZSBcIiVzXCIgdG8gcHVibGljYXRpb24gXCIlc1wiIiwK KwkJCQkJCQlSZWxhdGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLAorCQkJ CQkJCXB1Yi0+bmFtZSksCisJCQkJCSBlcnJkZXRhaWwoIlRhYmxlIFwiJXNcIiBpcyBjdXJyZW50 bHkgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIHRoZSBwdWJsaWNhdGlvbi4iLAorCQkJ CQkJCSAgIFJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJ CQkgZXJyaGludCgiQ2hhbmdlIEVYQ0VQVCBsaXN0IHVzaW5nIEFMVEVSIFBVQkxJQ0FUSU9OIC4u LiBTRVQgVEFCTEVTIElOIFNDSEVNQSAuLi4gRVhDRVBULiIpKSk7CisJCWVsc2UKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJ CSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlv biBcIiVzXCIiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksIHB1 Yi0+bmFtZSkpKTsKIAl9CiAKLQljaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHJpKTsK KwljaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHJpLCBwdWJpZCk7CiAKIAkvKiBWYWxp ZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1lcyBpbnRvIGEgQml0bWFwc2V0IG9mIGF0dG51 bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKHByaS0+cmVsYXRpb24sIHBy aS0+Y29sdW1ucyk7CkBAIC05OTIsMTIgKzEwNjQsMTMgQEAgR2V0SW5jbHVkZWRQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKICAq IEdldHMgbGlzdCBvZiB0YWJsZSBvaWRzIHRoYXQgd2VyZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQ VCBjbGF1c2UgZm9yIGEKICAqIHB1YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkg YmUgdXNlZCBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCisgKiBUaGlzIGlzIHVzZWQgZm9y IEZPUiBBTEwgVEFCTEVTIGFuZCBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbnMsCisg KiBib3RoIG9mIHdoaWNoIHN1cHBvcnQgRVhDRVBUIFRBQkxFLgogICovCiBMaXN0ICoKIEdldEV4 Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHVi X3BhcnRvcHQpCiB7Ci0JQXNzZXJ0KEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsK KwlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMgfHwgaXNfc2NoZW1hX3B1 YmxpY2F0aW9uKHB1YmlkKSk7CiAKIAlyZXR1cm4gZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhw dWJpZCwgcHViX3BhcnRvcHQsIHRydWUpOwogfQpAQCAtMTA1OSwxNSArMTEzMiwxNSBAQCBHZXRB bGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2 aWFyb290KQogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJTGlzdAkg ICAqcmVzdWx0ID0gTklMOwotCUxpc3QJICAgKmV4Y2VwdGxpc3QgPSBOSUw7CisJTGlzdAkgICAq ZXhjZXB0X3JlbGlkcyA9IE5JTDsKIAogCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFV RU5DRSAmJiBwdWJ2aWFyb290KSk7CiAKIAkvKiBFWENFUFQgZmlsdGVyaW5nIGFwcGxpZXMgb25s eSB0byByZWxhdGlvbnMsIG5vdCBzZXF1ZW5jZXMgKi8KIAlpZiAocmVsa2luZCA9PSBSRUxLSU5E X1JFTEFUSU9OKQotCQlleGNlcHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhw dWJpZCwgcHVidmlhcm9vdCA/Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6 Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCWV4Y2VwdF9yZWxpZHMg PSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBwdWJ2aWFyb290ID8KKwkJCQkJ CQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJ T05fUEFSVF9MRUFGKTsKIAogCWNsYXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9u SWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKQEAgLTEwODUsNyArMTE1OCw3IEBAIEdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3Qp CiAKIAkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgogCQkJIShy ZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSAmJgotCQkJIWxpc3RfbWVtYmVy X29pZChleGNlcHRsaXN0LCByZWxpZCkpCisJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9yZWxp ZHMsIHJlbGlkKSkKIAkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOwogCX0K IApAQCAtMTEwNyw3ICsxMTgwLDcgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1 YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAogCQkJaWYgKGlzX3B1Ymxpc2hh YmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgogCQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlv biAmJgotCQkJCSFsaXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQorCQkJCSFsaXN0 X21lbWJlcl9vaWQoZXhjZXB0X3JlbGlkcywgcmVsaWQpKQogCQkJCXJlc3VsdCA9IGxhcHBlbmRf b2lkKHJlc3VsdCwgcmVsaWQpOwogCQl9CiAKQEAgLTEyNDIsMjIgKzEzMTUsNjggQEAgR2V0U2No ZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQpCiAKIC8qCiAgKiBHZXRzIHRoZSBsaXN0IG9mIGFsbCByZWxhdGlvbnMgcHVi bGlzaGVkIGJ5IEZPUiBUQUJMRVMgSU4gU0NIRU1BCi0gKiBwdWJsaWNhdGlvbi4KKyAqIHB1Ymxp Y2F0aW9uLCBleGNsdWRpbmcgYW55IHRhYmxlcyBsaXN0ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2Uu CiAgKi8KIExpc3QgKgogR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0g TklMOwogCUxpc3QJICAgKnB1YnNjaGVtYWxpc3QgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHVi aWQpOworCUxpc3QJICAgKmV4Y2VwdF9yZWxpZHMgPSBOSUw7CiAJTGlzdENlbGwgICAqY2VsbDsK IAorCS8qIGdldCB0aGUgbGlzdCBvZiB0YWJsZXMgZXhjbHVkZWQgdmlhIEVYQ0VQVCBUQUJMRSBm b3IgdGhpcyBwdWJsaWNhdGlvbiAqLworCWlmIChwdWJzY2hlbWFsaXN0ICE9IE5JTCkKKwkJZXhj ZXB0X3JlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1Yl9wYXJ0 b3B0KTsKKwogCWZvcmVhY2goY2VsbCwgcHVic2NoZW1hbGlzdCkKIAl7CiAJCU9pZAkJCXNjaGVt YWlkID0gbGZpcnN0X29pZChjZWxsKTsKIAkJTGlzdAkgICAqc2NoZW1hUmVscyA9IE5JTDsKIAog CQlzY2hlbWFSZWxzID0gR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoc2NoZW1haWQsIHB1 Yl9wYXJ0b3B0KTsKLQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBzY2hlbWFSZWxzKTsK KworCQlpZiAoZXhjZXB0X3JlbGlkcyAhPSBOSUwpCisJCXsKKwkJCS8qIGZpbHRlciBvdXQgYW55 IHRhYmxlcyB0aGF0IGFwcGVhciBpbiB0aGUgRVhDRVBUIGxpc3QgKi8KKwkJCUxpc3RDZWxsICAg KnJsYzsKKworCQkJZm9yZWFjaChybGMsIHNjaGVtYVJlbHMpCisJCQl7CisJCQkJT2lkCQkJcmVs aWQgPSBsZmlyc3Rfb2lkKHJsYyk7CisJCQkJYm9vbAkJZXhjbHVkZWQgPSBsaXN0X21lbWJlcl9v aWQoZXhjZXB0X3JlbGlkcywgcmVsaWQpOworCisJCQkJLyoKKwkJCQkgKiBBIHBhcnRpdGlvbiB3 aG9zZSBhbmNlc3RvciBpcyBpbiB0aGUgcHVibGljYXRpb24ncyBFWENFUFQKKwkJCQkgKiBsaXN0 IGlzIGFsc28gZXhjbHVkZWQsIGV2ZW4gaWYgdGhlIHBhcnRpdGlvbiBpdHNlbGYgbGl2ZXMKKwkJ CQkgKiBpbiBhIGRpZmZlcmVudCAoaW5jbHVkZWQpIHNjaGVtYS4gIEluZGl2aWR1YWwgcGFydGl0 aW9ucworCQkJCSAqIGNhbm5vdCBhcHBlYXIgaW4gRVhDRVBULCBzbyBjYXNjYWRpbmcgZnJvbSB0 aGUgcm9vdCBpcyB0aGUKKwkJCQkgKiBvbmx5IHdheSB0byBleGNsdWRlIGEgcGFydGl0aW9uOyB0 aGlzIG1hdGNoZXMgdGhlIEFMTAorCQkJCSAqIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJvb3QpIGJl aGF2aW9yLgorCQkJCSAqLworCQkJCWlmICghZXhjbHVkZWQgJiYgZ2V0X3JlbF9yZWxpc3BhcnRp dGlvbihyZWxpZCkpCisJCQkJeworCQkJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0 aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCQkJCUxpc3RDZWxsICAgKmFsYzsKKworCQkJCQlmb3Jl YWNoKGFsYywgYW5jZXN0b3JzKQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGV4 Y2VwdF9yZWxpZHMsIGxmaXJzdF9vaWQoYWxjKSkpCisJCQkJCQl7CisJCQkJCQkJZXhjbHVkZWQg PSB0cnVlOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWxpc3RfZnJlZShh bmNlc3RvcnMpOworCQkJCX0KKworCQkJCWlmICghZXhjbHVkZWQpCisJCQkJCXJlc3VsdCA9IGxh cHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOworCQkJfQorCQkJbGlzdF9mcmVlKHNjaGVtYVJlbHMp OworCQl9CisJCWVsc2UKKwkJCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgc2NoZW1hUmVs cyk7CiAJfQogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTEzMzQsNiArMTQ1Myw3IEBAIGlzX3RhYmxl X3B1Ymxpc2hhYmxlX2luX3B1YmxpY2F0aW9uKE9pZCByZWxpZCwgUHVibGljYXRpb24gKnB1YikK IHsKIAlib29sCQlyZWxpc3BhcnRpdGlvbjsKIAlMaXN0CSAgICphbmNlc3RvcnMgPSBOSUw7CisJ SGVhcFR1cGxlCXR1cDsKIAogCS8qCiAJICogRm9yIG5vbi1wdWJ2aWFyb290IHB1YmxpY2F0aW9u cywgYSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBuZXZlciB0aGUKQEAgLTEzOTAsMjAgKzE1MTAsNjIg QEAgaXNfdGFibGVfcHVibGlzaGFibGVfaW5fcHVibGljYXRpb24oT2lkIHJlbGlkLCBQdWJsaWNh dGlvbiAqcHViKQogCSAqIElmIGl0J3MgZmFsc2UsIHRoZSBwYXJ0aXRpb24gaXMgY292ZXJlZCBi eSBpdHMgYW5jZXN0b3IncyBwcmVzZW5jZSBpbgogCSAqIHRoZSBwdWJsaWNhdGlvbiwgaXQgc2hv dWxkIGJlIGluY2x1ZGVkIChyZXR1cm4gdHJ1ZSkuCiAJICovCi0JaWYgKHJlbGlzcGFydGl0aW9u ICYmCi0JCU9pZElzVmFsaWQoR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWItPm9p ZCwgYW5jZXN0b3JzLCBOVUxMKSkpCi0JCXJldHVybiAhcHViLT5wdWJ2aWFyb290OworCWlmIChy ZWxpc3BhcnRpdGlvbikKKwl7CisJCU9pZAkJCWFuY2VzdG9yX29pZDsKKworCQlhbmNlc3Rvcl9v aWQgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLCBhbmNlc3RvcnMs IE5VTEwsIE5JTCk7CisJCWlmIChPaWRJc1ZhbGlkKGFuY2VzdG9yX29pZCkpCisJCXsKKwkJCS8q CisJCQkgKiBUaGUgYW5jZXN0b3Igd2FzIGZvdW5kIGluIHRoZSBwdWJsaWNhdGlvbiAodmlhIGV4 cGxpY2l0CisJCQkgKiBtZW1iZXJzaGlwIG9yIHNjaGVtYSBtZW1iZXJzaGlwKSwgYnV0IGl0IG1h eSBiZSBleGNsdWRlZC4gQ2hlY2sKKwkJCSAqIGZvciBhIHByZXhjZXB0IHJvdyBiZWZvcmUgY29u Y2x1ZGluZyB0aGUgcGFydGl0aW9uIGlzCisJCQkgKiBwdWJsaXNoZWQuCisJCQkgKi8KKwkJCXR1 cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJICBPYmplY3RJ ZEdldERhdHVtKGFuY2VzdG9yX29pZCksCisJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWIt Pm9pZCkpOworCQkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCXsKKwkJCQlib29sCQlp c19leGNlcHQ7CisKKwkJCQlpc19leGNlcHQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBH RVRTVFJVQ1QodHVwKSktPnByZXhjZXB0OworCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQkJ CWlmIChpc19leGNlcHQpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJCXJldHVybiAhcHVi LT5wdWJ2aWFyb290OworCQl9CisJfQogCiAJLyoKIAkgKiBDaGVjayB3aGV0aGVyIHRoZSB0YWJs ZSBpcyBleHBsaWNpdGx5IHB1Ymxpc2hlZCB2aWEgcGdfcHVibGljYXRpb25fcmVsCiAJICogb3Ig cGdfcHVibGljYXRpb25fbmFtZXNwYWNlLgorCSAqCisJICogQSBwZ19wdWJsaWNhdGlvbl9yZWwg cm93IHdpdGggcHJleGNlcHQ9dHJ1ZSBtZWFucyB0aGUgdGFibGUgaXMKKwkgKiBleHBsaWNpdGx5 IGV4Y2x1ZGVkIHZpYSBFWENFUFQgYW5kIG11c3Qgbm90IGJlIHJlcG9ydGVkIGFzIHB1Ymxpc2hl ZCwKKwkgKiBldmVuIGlmIGl0cyBzY2hlbWEgaXMgb3RoZXJ3aXNlIGluY2x1ZGVkLiAgQSByb3cg d2l0aCBwcmV4Y2VwdD1mYWxzZQorCSAqIG1lYW5zIGl0IGlzIGV4cGxpY2l0bHkgaW5jbHVkZWQu ICBJZiBubyBwZ19wdWJsaWNhdGlvbl9yZWwgcm93IGV4aXN0cywKKwkgKiB0aGUgdGFibGUgaXMg cHVibGlzaGVkIGlmZiBpdHMgc2NoZW1hIGFwcGVhcnMgaW4KKwkgKiBwZ19wdWJsaWNhdGlvbl9u YW1lc3BhY2UuCiAJICovCi0JcmV0dXJuIChTZWFyY2hTeXNDYWNoZUV4aXN0czIoUFVCTElDQVRJ T05SRUxNQVAsCi0JCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCi0JCQkJCQkJCSAg T2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpIHx8Ci0JCQlTZWFyY2hTeXNDYWNoZUV4aXN0czIo UFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCi0JCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShnZXRf cmVsX25hbWVzcGFjZShyZWxpZCkpLAotCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViLT5v aWQpKSk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1 Yi0+b2lkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJCWJvb2wJCWlzX2V4 Y2VwdDsKKworCQlpc19leGNlcHQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJV Q1QodHVwKSktPnByZXhjZXB0OworCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJcmV0dXJuICFp c19leGNlcHQ7CisJfQorCisJcmV0dXJuIFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElP Tk5BTUVTUEFDRU1BUCwKKwkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0oZ2V0X3JlbF9uYW1lc3Bh Y2UocmVsaWQpKSwKKwkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocHViLT5vaWQpKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggNDQwYWRiMzU2YWQu LjQ1YThhNWMzZjcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlv bmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAt NzEsNiArNzEsNyBAQCBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1Ymlk LCBMaXN0ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMsCiAJCQkJCQkJCSAgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQpOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhP aWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgY2hhciBk ZWZHZXRHZW5lcmF0ZWRDb2xzT3B0aW9uKERlZkVsZW0gKmRlZik7CitzdGF0aWMgdm9pZCBDaGVj a0V4Y2VwdE5vdEluVGFibGVMaXN0KExpc3QgKmV4Y2VwdF9yZWxzLCBMaXN0ICpleHBsaWNpdHJl bGlkcyk7CiAKIAogc3RhdGljIHZvaWQKQEAgLTE4MSw3ICsxODIsNyBAQCBwYXJzZV9wdWJsaWNh dGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKICAqLwogc3RhdGljIHZvaWQKIE9iamVj dHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAq cHN0YXRlLAotCQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHRyZWxzLCBMaXN0ICoq c2NoZW1hcykKKwkJCQkJCSAgIExpc3QgKipyZWxzLCBMaXN0ICoqZXhjZXB0X3B1YnRhYmxlcywg TGlzdCAqKnNjaGVtYXMpCiB7CiAJTGlzdENlbGwgICAqY2VsbDsKIAlQdWJsaWNhdGlvbk9ialNw ZWMgKnB1Ym9iajsKQEAgLTIwMCw3ICsyMDEsNyBAQCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lk cyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJewogCQkJY2Fz ZSBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEU6CiAJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhj ZXB0ID0gdHJ1ZTsKLQkJCQkqZXhjZXB0cmVscyA9IGxhcHBlbmQoKmV4Y2VwdHJlbHMsIHB1Ym9i ai0+cHVidGFibGUpOworCQkJCSpleGNlcHRfcHVidGFibGVzID0gbGFwcGVuZCgqZXhjZXB0X3B1 YnRhYmxlcywgcHVib2JqLT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FU SU9OT0JKX1RBQkxFOgogCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNlOwpAQCAt MjI0LDYgKzIyNSwzOCBAQCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpz cGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQkJCS8qIEZpbHRlciBvdXQgZHVwbGlj YXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIgKi8KIAkJCQkqc2NoZW1hcyA9IGxp c3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKKworCQkJCS8qCisJCQkJ ICogUXVhbGlmeSB1bnF1YWxpZmllZCBFWENFUFQgdGFibGUgbmFtZXMgd2l0aCB0aGUgcmVzb2x2 ZWQKKwkJCQkgKiBjdXJyZW50IHNjaGVtYSBhbmQgcmVqZWN0IGFueSBleHBsaWNpdGx5IGNyb3Nz LXNjaGVtYQorCQkJCSAqIGVudHJpZXMuICBUaGlzIG1pcnJvcnMgdGhlIHBhcnNlLXRpbWUgaGFu ZGxpbmcgZG9uZSBmb3IKKwkJCQkgKiBUQUJMRVNfSU5fU0NIRU1BIGluIHByZXByb2Nlc3NfcHVi b2JqX2xpc3QoKSwgZGVmZXJyZWQgaGVyZQorCQkJCSAqIGJlY2F1c2UgQ1VSUkVOVF9TQ0hFTUEg aXMgbm90IGtub3duIHVudGlsIGV4ZWN1dGlvbiB0aW1lLgorCQkJCSAqLworCQkJCWlmIChwdWJv YmotPmV4Y2VwdF90YWJsZXMgIT0gTklMKQorCQkJCXsKKwkJCQkJY2hhcgkgICAqY3VyX3NjaGVt YV9uYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHNjaGVtYWlkKTsKKworCQkJCQlmb3JlYWNoX3B0 cihQdWJsaWNhdGlvbk9ialNwZWMsIGVvYmosIHB1Ym9iai0+ZXhjZXB0X3RhYmxlcykKKwkJCQkJ eworCQkJCQkJY29uc3QgY2hhciAqZW9ial9zY2hlbWFuYW1lID0KKwkJCQkJCQllb2JqLT5wdWJ0 YWJsZS0+cmVsYXRpb24tPnNjaGVtYW5hbWU7CisJCQkJCQljb25zdCBjaGFyICplb2JqX3JlbG5h bWUgPQorCQkJCQkJCWVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+cmVsbmFtZTsKKworCQkJCQkJ aWYgKGVvYmpfc2NoZW1hbmFtZSA9PSBOVUxMKQorCQkJCQkJCWVvYmotPnB1YnRhYmxlLT5yZWxh dGlvbi0+c2NoZW1hbmFtZSA9IGN1cl9zY2hlbWFfbmFtZTsKKwkJCQkJCWVsc2UgaWYgKHN0cmNt cChlb2JqX3NjaGVtYW5hbWUsIGN1cl9zY2hlbWFfbmFtZSkgIT0gMCkKKwkJCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkJCQkJZXJybXNnKCJ0YWJsZSBcIiVzXCIgaW4gRVhDRVBUIGNsYXVzZSBkb2Vz IG5vdCBiZWxvbmcgdG8gc2NoZW1hIFwiJXNcIiIsCisJCQkJCQkJCQkJICAgcXVvdGVfcXVhbGlm aWVkX2lkZW50aWZpZXIoZW9ial9zY2hlbWFuYW1lLCBlb2JqX3JlbG5hbWUpLAorCQkJCQkJCQkJ CSAgIGN1cl9zY2hlbWFfbmFtZSkpOworCisJCQkJCQkqZXhjZXB0X3B1YnRhYmxlcyA9IGxhcHBl bmQoKmV4Y2VwdF9wdWJ0YWJsZXMsCisJCQkJCQkJCQkJCQkJZW9iai0+cHVidGFibGUpOworCQkJ CQl9CisJCQkJfQogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBzaG91bGRuJ3QgaGFw cGVuICovCkBAIC0zMDUsNyArMzM4LDcgQEAgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1u KE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKIAlpZiAocHVi dmlhcm9vdCAmJiByZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAl7CiAJCXB1Ymxp c2hfYXNfcmVsaWQKLQkJCT0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwg YW5jZXN0b3JzLCBOVUxMKTsKKwkJCT0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihw dWJpZCwgYW5jZXN0b3JzLCBOVUxMLCBOSUwpOwogCiAJCWlmICghT2lkSXNWYWxpZChwdWJsaXNo X2FzX3JlbGlkKSkKIAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKQEAgLTM4OSw3ICs0MjIs NyBAQCBwdWJfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxh dGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCSAqLwogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9u LT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKLQkJcHVibGlzaF9hc19yZWxpZCA9IEdldFRv cE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCk7CisJCXB1 Ymxpc2hfYXNfcmVsaWQgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBh bmNlc3RvcnMsIE5VTEwsIE5JTCk7CiAKIAkJaWYgKCFPaWRJc1ZhbGlkKHB1Ymxpc2hfYXNfcmVs aWQpKQogCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAtNzcwLDYgKzgwMywyMyBAQCBU cmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMoTGlzdCAqdGFibGVzLCBjb25zdCBjaGFyICpxdWVyeVN0 cmluZywKIAl9CiB9CiAKKy8qCisgKiBDaGVjayB0aGF0IG5vIHJlbGF0aW9uIGluIGV4Y2VwdF9y ZWxzIGlzIGFsc28gcHJlc2VudCBpbiBleHBsaWNpdHJlbGlkcywKKyAqIHRoZSBsaXN0IG9mIE9J RHMgYWRkZWQgdG8gdGhlIHB1YmxpY2F0aW9uIGJ5IHRoZSBleHBsaWNpdCBUQUJMRSBsaXN0LiAg QQorICogdGFibGUgY2Fubm90IGJlIGJvdGggZXhwbGljaXRseSBwdWJsaXNoZWQgYW5kIGV4Y2x1 ZGVkIGluIHRoZSBzYW1lIERETC4KKyAqLworc3RhdGljIHZvaWQKK0NoZWNrRXhjZXB0Tm90SW5U YWJsZUxpc3QoTGlzdCAqZXhjZXB0X3JlbHMsIExpc3QgKmV4cGxpY2l0cmVsaWRzKQoreworCWZv cmVhY2hfcHRyKFB1YmxpY2F0aW9uUmVsSW5mbywgcHJpLCBleGNlcHRfcmVscykKKwl7CisJCWlm IChsaXN0X21lbWJlcl9vaWQoZXhwbGljaXRyZWxpZHMsIFJlbGF0aW9uR2V0UmVsaWQocHJpLT5y ZWxhdGlvbikpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJ0YWJsZSBcIiVzXCIgY2Fubm90IGFw cGVhciBpbiBib3RoIHRoZSB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZSIsCisJCQkJ CQkgICBSZWxhdGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZShwcmktPnJlbGF0aW9uKSkpOwor CX0KK30KIAogLyoKICAqIEdpdmVuIGEgbGlzdCBvZiB0YWJsZXMgdGhhdCBhcmUgZ29pbmcgdG8g YmUgYWRkZWQgdG8gYSBwdWJsaWNhdGlvbiwKQEAgLTg0OSw3ICs4OTksNyBAQCBDcmVhdGVQdWJs aWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkK IAljaGFyCQlwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7 CiAJTGlzdAkgICAqcmVsYXRpb25zID0gTklMOwotCUxpc3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9 IE5JTDsKKwlMaXN0CSAgICpleGNlcHRfcHVidGFibGVzID0gTklMOwogCUxpc3QJICAgKnNjaGVt YWlkbGlzdCA9IE5JTDsKIAogCS8qIG11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9uIGRhdGFi YXNlICovCkBAIC05MzYsMTYgKzk4NiwxNiBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAogCS8qIEFzc29jaWF0ZSBv YmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLwogCU9iamVjdHNJblB1YmxpY2F0aW9uVG9P aWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKLQkJCQkJCQkgICAmZXhj ZXB0cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0KTsKKwkJCQkJCQkgICAmZXhjZXB0X3B1YnRhYmxl cywgJnNjaGVtYWlkbGlzdCk7CiAKIAlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJewogCQkv KiBQcm9jZXNzIEVYQ0VQVCB0YWJsZSBsaXN0ICovCi0JCWlmIChleGNlcHRyZWxhdGlvbnMgIT0g TklMKQorCQlpZiAoZXhjZXB0X3B1YnRhYmxlcyAhPSBOSUwpCiAJCXsKIAkJCUxpc3QJICAgKnJl bHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KGV4Y2VwdHJlbGF0aW9ucyk7CisJCQlyZWxz ID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVidGFibGVzKTsKIAkJCVB1YmxpY2F0aW9uQWRkVGFi bGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CiAJCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsK IAkJfQpAQCAtOTU5LDYgKzEwMDksOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAl9CiAJZWxzZSBpZiAoIXN0bXQt PmZvcl9hbGxfc2VxdWVuY2VzKQogCXsKKwkJTGlzdAkgICAqZXhwbGljaXRyZWxpZHMgPSBOSUw7 CisKIAkJLyogRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCiAJCWlm IChzY2hlbWFpZGxpc3QgIT0gTklMICYmICFzdXBlcnVzZXIoKSkKIAkJCWVyZXBvcnQoRVJST1Is CkBAIC05NzcsNiArMTAyOSwxOSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCQkJCSAgIHNjaGVtYWlkbGlz dCAhPSBOSUwsCiAJCQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKKwkJ CS8qCisJCQkgKiBDb2xsZWN0IGV4cGxpY2l0IHRhYmxlIE9JRHMgbm93LCBiZWZvcmUgd2UgY2xv c2UgdGhlIHJlbGF0aW9uCisJCQkgKiBsaXN0LCBzbyB0aGF0IGV4Y2VwdC10YWJsZSB2YWxpZGF0 aW9uIGJlbG93IGNhbiBjaGVjayBmb3IKKwkJCSAqIGNvbnRyYWRpY3Rpb25zIHdpdGhvdXQgcmVs eWluZyBvbiBhIGNhdGFsb2cgc2NhbiB0aGF0IG1pZ2h0IG5vdAorCQkJICogeWV0IHNlZSB0aGUg anVzdC1pbnNlcnRlZCByb3dzLgorCQkJICovCisJCQlpZiAoZXhjZXB0X3B1YnRhYmxlcyAhPSBO SUwpCisJCQl7CisJCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIHJlbHMp CisJCQkJCWV4cGxpY2l0cmVsaWRzID0gbGFwcGVuZF9vaWQoZXhwbGljaXRyZWxpZHMsCisJCQkJ CQkJCQkJCQkgUmVsYXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKSk7CisJCQl9CisKIAkJCVB1 YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CiAJCQlDbG9zZVRh YmxlTGlzdChyZWxzKTsKIAkJfQpAQCAtOTg5LDYgKzEwNTQsMjUgQEAgQ3JlYXRlUHVibGljYXRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkg Ki8KIAkJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7CiAJCQlQdWJsaWNhdGlvbkFkZFNj aGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOworCisJCQlpZiAoZXhjZXB0 X3B1YnRhYmxlcyAhPSBOSUwpCisJCQl7CisJCQkJTGlzdAkgICAqZXhjZXB0X3JlbHM7CisKKwkJ CQlleGNlcHRfcmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0X3B1YnRhYmxlcyk7CisKKwkJCQkv KgorCQkJCSAqIFZhbGlkYXRlIHRoYXQgZWFjaCBleGNsdWRlZCB0YWJsZSBpcyBub3QgYWxzbyBp biB0aGUKKwkJCQkgKiBleHBsaWNpdCB0YWJsZSBsaXN0ICh3aGljaCB3b3VsZCBiZSBjb250cmFk aWN0b3J5KS4gVXNlIHRoZQorCQkJCSAqIGluLW1lbW9yeSBleHBsaWNpdHJlbGlkcyBjb2xsZWN0 ZWQgYWJvdmUgcmF0aGVyIHRoYW4KKwkJCQkgKiByZS1yZWFkaW5nIHRoZSBjYXRhbG9nLCB3aGlj aCBtYXkgbm90IHlldCBzZWUgdGhlCisJCQkJICoganVzdC1pbnNlcnRlZCByb3dzLgorCQkJCSAq LworCQkJCUNoZWNrRXhjZXB0Tm90SW5UYWJsZUxpc3QoZXhjZXB0X3JlbHMsIGV4cGxpY2l0cmVs aWRzKTsKKworCQkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgZXhjZXB0X3JlbHMsIHRy dWUsIE5VTEwpOworCQkJCUNsb3NlVGFibGVMaXN0KGV4Y2VwdF9yZWxzKTsKKwkJCX0KIAkJfQog CX0KIApAQCAtMTY4MywxMiArMTc2NywxMiBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJZWxzZQogCXsKIAkJTGlzdAkg ICAqcmVsYXRpb25zID0gTklMOwotCQlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJ CUxpc3QJICAgKmV4Y2VwdF9wdWJ0YWJsZXMgPSBOSUw7CiAJCUxpc3QJICAgKnNjaGVtYWlkbGlz dCA9IE5JTDsKIAkJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkJT2JqZWN0c0luUHVi bGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJ CQkJCQkgICAmZXhjZXB0cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0KTsKKwkJCQkJCQkJICAgJmV4 Y2VwdF9wdWJ0YWJsZXMsICZzY2hlbWFpZGxpc3QpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlv bihzdG10LCB0dXAsIHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIApAQCAtMTcxMSw3ICsxNzk1 LDcgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBl eGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlzdF9j b25jYXQocmVsYXRpb25zLCBleGNlcHRyZWxhdGlvbnMpOworCQlyZWxhdGlvbnMgPSBsaXN0X2Nv bmNhdChyZWxhdGlvbnMsIGV4Y2VwdF9wdWJ0YWJsZXMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFi bGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkg ICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwg dHVwLCBzY2hlbWFpZGxpc3QpOwpAQCAtMTgyOSw2ICsxOTEzLDYyIEBAIFJlbW92ZVB1YmxpY2F0 aW9uU2NoZW1hQnlJZChPaWQgcHNvaWQpCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKIH0KIAorLyoKKyAqIFJlbW92ZSBhbnkgRVhDRVBUIGNsYXVzZSBlbnRyaWVzIGZvciBh IHJlbGF0aW9uIGZyb20gc2NoZW1hIHB1YmxpY2F0aW9ucy4KKyAqIENhbGxlZCB3aGVuIGEgdGFi bGUgY2hhbmdlcyBzY2hlbWEgKEFMVEVSIFRBQkxFIC4uLiBTRVQgU0NIRU1BKSwgc28gdGhhdAor ICogYSBzY2hlbWEtc2NvcGVkIGV4Y2x1c2lvbiBkb2VzIG5vdCBzaWxlbnRseSBmb2xsb3cgdGhl IHRhYmxlIHRvIGl0cyBuZXcKKyAqIHNjaGVtYS4KKyAqLwordm9pZAorUmVtb3ZlU2NoZW1hUHVi RXhjZXB0Rm9yUmVsKE9pZCByZWxpZCwgT2lkIG9sZE5zcE9pZCwgT2lkIG5ld05zcE9pZCkKK3sK KwlMaXN0CSAgICpwdWJpZHM7CisKKwkvKgorCSAqIElmIHRoZSB0YWJsZSBpcyBub3QgYWN0dWFs bHkgbW92aW5nIHRvIGEgZGlmZmVyZW50IHNjaGVtYSAobm8tb3AKKwkgKiBBTFRFUiBUQUJMRSAu Li4gU0VUIFNDSEVNQSA8Y3VycmVudF9zY2hlbWE+KSwgdGhlcmUgaXMgbm90aGluZyB0byBkby4K KwkgKi8KKwlpZiAob2xkTnNwT2lkID09IG5ld05zcE9pZCkKKwkJcmV0dXJuOworCisJcHViaWRz ID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhyZWxpZCk7CisKKwlmb3JlYWNoX29p ZChwdWJpZCwgcHViaWRzKQorCXsKKwkJT2lkCQkJcHJvaWQ7CisKKwkJLyoKKwkJICogVGhpcyBw cm9ibGVtIGRvZXMgbm90IGFwcGx5IHRvIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucywgYmVj YXVzZQorCQkgKiB0aGVpciBFWENFUFQgY2xhdXNlIGlzIHB1YmxpY2F0aW9uLXNjb3BlZCwgbm90 IHNjaGVtYS1zY29wZWQ6IHRoZQorCQkgKiBleGNsdXNpb24gc2hvdWxkIHBlcnNpc3QgcmVnYXJk bGVzcyBvZiB3aGF0IHNjaGVtYSB0aGUgdGFibGUgaXMgaW4uCisJCSAqLworCQlpZiAoIWlzX3Nj aGVtYV9wdWJsaWNhdGlvbihwdWJpZCkpCisJCQljb250aW51ZTsKKworCQlwcm9pZCA9IEdldFN5 c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJQW51bV9wZ19wdWJsaWNhdGlv bl9yZWxfb2lkLAorCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCQkJT2Jq ZWN0SWRHZXREYXR1bShwdWJpZCkpOworCQlpZiAoT2lkSXNWYWxpZChwcm9pZCkpCisJCXsKKwkJ CU9iamVjdEFkZHJlc3Mgb2JqOworCisJCQlPYmplY3RBZGRyZXNzU2V0KG9iaiwgUHVibGljYXRp b25SZWxSZWxhdGlvbklkLCBwcm9pZCk7CisKKwkJCWVyZXBvcnQoREVCVUcyLAorCQkJCQllcnJt c2dfaW50ZXJuYWwoImF1dG8tcmVtb3ZlIGV4Y2x1c2lvbiBvZiB0YWJsZSBcIiVzLiVzXCIgZnJv bSBwdWJsaWNhdGlvbiBcIiVzXCI6IHRhYmxlIG1vdmVkIHRvIHNjaGVtYSBcIiVzXCIiLAorCQkJ CQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKG9sZE5zcE9pZCksCisJCQkJCQkJCQlnZXRfcmVsX25h bWUocmVsaWQpLAorCQkJCQkJCQkJZ2V0X3B1YmxpY2F0aW9uX25hbWUocHViaWQsIGZhbHNlKSwK KwkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShuZXdOc3BPaWQpKSk7CisKKwkJCXBlcmZvcm1E ZWxldGlvbigmb2JqLCBEUk9QX0NBU0NBREUsIDApOworCQl9CisJfQorCisJbGlzdF9mcmVlKHB1 Ymlkcyk7Cit9CisKIC8qCiAgKiBPcGVuIHJlbGF0aW9ucyBzcGVjaWZpZWQgYnkgYSBQdWJsaWNh dGlvblRhYmxlIGxpc3QuCiAgKiBUaGUgcmV0dXJuZWQgdGFibGVzIGFyZSBsb2NrZWQgaW4gU2hh cmVVcGRhdGVFeGNsdXNpdmVMb2NrIG1vZGUgaW4gb3JkZXIgdG8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggOTVhYmFmNDg5MGMuLmE2YWZiMjYyOTY3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9leHRlbnNpb24uaCIKICNpbmNsdWRlICJjb21tYW5k cy9yZXBhY2suaCIKKyNpbmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNs dWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKQEAgLTE5NTY5LDYgKzE5NTcwLDE2 IEBAIEFsdGVyVGFibGVOYW1lc3BhY2VJbnRlcm5hbChSZWxhdGlvbiByZWwsIE9pZCBvbGROc3BP aWQsIE9pZCBuc3BPaWQsCiAJQWx0ZXJDb25zdHJhaW50TmFtZXNwYWNlcyhSZWxhdGlvbkdldFJl bGlkKHJlbCksIG9sZE5zcE9pZCwgbnNwT2lkLAogCQkJCQkJCSAgZmFsc2UsIG9ianNNb3ZlZCk7 CiAKKwkvKgorCSAqIFJlbW92ZSBhbnkgRVhDRVBUIGNsYXVzZSBlbnRyaWVzIGZvciB0aGlzIHJl bGF0aW9uIGZyb20gc2NoZW1hCisJICogcHVibGljYXRpb25zLiAgQSBzY2hlbWEtc2NvcGVkIGV4 Y2x1c2lvbiBpcyBubyBsb25nZXIgbWVhbmluZ2Z1bCBvbmNlCisJICogdGhlIHRhYmxlIG1vdmVz IHRvIGEgZGlmZmVyZW50IHNjaGVtYS4KKwkgKi8KKwlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQg PT0gUkVMS0lORF9SRUxBVElPTiB8fAorCQlyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFKQorCQlSZW1vdmVTY2hlbWFQdWJFeGNlcHRGb3JSZWwoUmVsYXRp b25HZXRSZWxpZChyZWwpLCBvbGROc3BPaWQsCisJCQkJCQkJCQluc3BPaWQpOworCiAJdGFibGVf Y2xvc2UoY2xhc3NSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBm ZjRlMTM4OGM1NS4uNmE3YTFiYzVmOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTgsNiArNTgsNyBAQAog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5o IgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCiAK QEAgLTExMjcyLDcgKzExMjczLDcgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBh Z2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICogcHViX29iaiBpcyBv bmUgb2Y6CiAgKgogICoJCVRBQkxFIHRhYmxlIFssIC4uLl0KLSAqCQlUQUJMRVMgSU4gU0NIRU1B IHNjaGVtYSBbLCAuLi5dCisgKgkJVEFCTEVTIElOIFNDSEVNQSBzY2hlbWEgW0VYQ0VQVCAoVEFC TEUgdGFibGUgWywgLi4uXSApXSBbLCAuLi5dCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwog CkBAIC0xMTMzMiwyMyArMTEzMzMsMjYgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+ cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9 ICQ0OwogCQkJCX0KLQkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENvbElkCisJCQl8IFRBQkxFUyBJ Tl9QIFNDSEVNQSBDb2xJZCBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJCQl7CiAJCQkJCSQkID0g bWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJM SUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOwogCQkJCQkkJC0+bmFtZSA9ICQ0OworCQkJCQkk JC0+ZXhjZXB0X3RhYmxlcyA9ICQ1OwogCQkJCQkkJC0+bG9jYXRpb24gPSBANDsKIAkJCQl9Ci0J CQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQQorCQkJfCBUQUJMRVMgSU5fUCBT Q0hFTUEgQ1VSUkVOVF9TQ0hFTUEgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJewogCQkJCQkk JCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0g UFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CisJCQkJCSQkLT5leGNlcHRfdGFi bGVzID0gJDU7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEA0OwogCQkJCX0KLQkJCXwgQ29sSWQgb3B0 X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCisJCQl8IENvbElkIG9wdF9jb2x1bW5fbGlzdCBP cHRXaGVyZUNsYXVzZSBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJCQl7CiAJCQkJCSQkID0gbWFr ZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNB VElPTk9CSl9DT05USU5VQVRJT047CisJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDQ7CiAJCQkJ CS8qCiAJCQkJCSAqIElmIGVpdGhlciBhIHJvdyBmaWx0ZXIgb3IgY29sdW1uIGxpc3QgaXMgc3Bl Y2lmaWVkLCBjcmVhdGUKIAkJCQkJICogYSBQdWJsaWNhdGlvblRhYmxlIG9iamVjdC4KQEAgLTEx MzkyLDEwICsxMTM5NiwxMSBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5wdWJ0YWJs ZS0+Y29sdW1ucyA9ICQyOwogCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDM7CiAJ CQkJfQotCQkJfCBDVVJSRU5UX1NDSEVNQQorCQkJfCBDVVJSRU5UX1NDSEVNQSBvcHRfcHViX2V4 Y2VwdF9jbGF1c2UKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVj KTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CisJ CQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDI7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJ CX0KIAkJCQk7CkBAIC0yMDc4NCw2ICsyMDc4OSw4IEBAIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0 eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMsCiAvKgog ICogUHJvY2VzcyBwdWJvYmpzcGVjX2xpc3QgdG8gY2hlY2sgZm9yIGVycm9ycyBpbiBhbnkgb2Yg dGhlIG9iamVjdHMgYW5kCiAgKiBjb252ZXJ0IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTiBp bnRvIGFwcHJvcHJpYXRlIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUuCisgKiBBbHNvIGZsYXR0ZW5z IGV4Y2VwdF90YWJsZXMgZnJvbSBUQUJMRVMgSU4gU0NIRU1BIG5vZGVzIGludG8gdGhlIGxpc3Qg c28KKyAqIHRoYXQgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoKSBzZWVzIHRoZW0gYXMgdG9w LWxldmVsIEVYQ0VQVF9UQUJMRSBlbnRyaWVzLgogICovCiBzdGF0aWMgdm9pZAogcHJlcHJvY2Vz c19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2Fu bmVyKQpAQCAtMjA4MTIsNiArMjA4MTksMTMgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0 ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCiAJCWlmIChwdWJv YmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEUpCiAJCXsKKwkJCS8qIEVYQ0VQ VCBpcyBub3QgdmFsaWQgZm9yIHRhYmxlIG9iamVjdHMgKi8KKwkJCWlmIChwdWJvYmotPmV4Y2Vw dF90YWJsZXMgIT0gTklMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiRVhDRVBUIGlzIG5vdCBhbGxvd2VkIGZv ciBUQUJMRSBwdWJsaWNhdGlvbiBvYmplY3RzIiksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o cHVib2JqLT5sb2NhdGlvbikpOworCiAJCQkvKiByZWxhdGlvbiBuYW1lIG9yIHB1YnRhYmxlIG11 c3QgYmUgc2V0IGZvciB0aGlzIHR5cGUgb2Ygb2JqZWN0ICovCiAJCQlpZiAoIXB1Ym9iai0+bmFt ZSAmJiAhcHVib2JqLT5wdWJ0YWJsZSkKIAkJCQllcmVwb3J0KEVSUk9SLApAQCAtMjA4NjAsNiAr MjA4NzQsMzYgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3Qs IGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCiAJCQkJCQllcnJtc2coImludmFsaWQgc2NoZW1hIG5hbWUiKSwKIAkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwdWJvYmotPmxvY2F0aW9uKSk7CisKKwkJCS8qCisJCQkgKiBGb3IgVEFC TEVTX0lOX1NDSEVNQSwgcXVhbGlmeSB1bnF1YWxpZmllZCBFWENFUFQgdGFibGUgbmFtZXMKKwkJ CSAqIHdpdGggdGhlIHBhcmVudCBzY2hlbWEgYW5kIHJlamVjdCBjcm9zcy1zY2hlbWEgZW50cmll cyBhdCBwYXJzZQorCQkJICogdGltZSwgdGhlbiBmbGF0dGVuIGludG8gdGhlIHRvcC1sZXZlbCBs aXN0LgorCQkJICoKKwkJCSAqIEZvciBUQUJMRVNfSU5fQ1VSX1NDSEVNQSB0aGUgc2NoZW1hIG5h bWUgaXMgbm90IHlldCBrbm93biwgc28KKwkJCSAqIHNraXAgYm90aCBzdGVwcyBoZXJlOyBPYmpl Y3RzSW5QdWJsaWNhdGlvblRvT2lkcygpIHdpbGwKKwkJCSAqIHF1YWxpZnkgbmFtZXMgYW5kIHZh bGlkYXRlIHNjaGVtYSBtZW1iZXJzaGlwIGF0IGV4ZWN1dGlvbiB0aW1lLgorCQkJICovCisJCQlp ZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUEp CisJCQl7CisJCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25PYmpTcGVjLCBlb2JqLCBwdWJvYmot PmV4Y2VwdF90YWJsZXMpCisJCQkJeworCQkJCQljb25zdCBjaGFyICplb2JqX3NjaGVtYW5hbWUg PSBlb2JqLT5wdWJ0YWJsZS0+cmVsYXRpb24tPnNjaGVtYW5hbWU7CisJCQkJCWNvbnN0IGNoYXIg KmVvYmpfcmVsbmFtZSA9IGVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+cmVsbmFtZTsKKworCQkJ CQlpZiAoZW9ial9zY2hlbWFuYW1lID09IE5VTEwpCisJCQkJCQllb2JqLT5wdWJ0YWJsZS0+cmVs YXRpb24tPnNjaGVtYW5hbWUgPSBwdWJvYmotPm5hbWU7CisJCQkJCWVsc2UgaWYgKHN0cmNtcChl b2JqX3NjaGVtYW5hbWUsIHB1Ym9iai0+bmFtZSkgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkJCQkJZXJybXNnKCJ0YWJsZSBcIiVzXCIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxv bmcgdG8gc2NoZW1hIFwiJXNcIiIsCisJCQkJCQkJCQkgICBxdW90ZV9xdWFsaWZpZWRfaWRlbnRp Zmllcihlb2JqX3NjaGVtYW5hbWUsIGVvYmpfcmVsbmFtZSksCisJCQkJCQkJCQkgICBwdWJvYmot Pm5hbWUpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oZW9iai0+bG9jYXRpb24pKTsKKwkJ CQl9CisJCQkJcHVib2Jqc3BlY19saXN0ID0gbGlzdF9jb25jYXQocHVib2Jqc3BlY19saXN0LCBw dWJvYmotPmV4Y2VwdF90YWJsZXMpOworCQkJCXB1Ym9iai0+ZXhjZXB0X3RhYmxlcyA9IE5JTDsK KwkJCX0KIAkJfQogCiAJCXByZXZvYmp0eXBlID0gcHVib2JqLT5wdWJvYmp0eXBlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggNGVjZmNiZmY3YWIu LmIwOTgzNzc1YTAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKQEAgLTIwOTcsNiArMjA5Nyw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERh dGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkgKiBhcmUgYWJzb3JiZWQgd2hpbGUgZGVj b2RpbmcgV0FMLgogCQkgKi8KIAkJTGlzdAkgICAqc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVi bGljYXRpb25zKHNjaGVtYUlkKTsKKwkJTGlzdAkgICAqZXhjZXB0X3B1YmlkczsKIAkJTGlzdENl bGwgICAqbGM7CiAJCU9pZAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKIAkJaW50CQkJcHVi bGlzaF9hbmNlc3Rvcl9sZXZlbCA9IDA7CkBAIC0yMTA0LDYgKzIxMDUsMjggQEAgZ2V0X3JlbF9z eW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWNoYXIJ CXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOwogCQlMaXN0CSAgICpyZWxfcHVibGlj YXRpb25zID0gTklMOwogCisJCS8qCisJCSAqIEZvciB0aGUgc2NoZW1hIEVYQ0VQVCBjaGVjaywg d2UgbXVzdCBsb29rIHVwIHRoZSB0b3AtbW9zdCBhbmNlc3RvcgorCQkgKiByYXRoZXIgdGhhbiB0 aGUgcmVsYXRpb24gaXRzZWxmLiAgY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKCkKKwkJ ICogcHJldmVudHMgaW5kaXZpZHVhbCBwYXJ0aXRpb25zIGZyb20gYXBwZWFyaW5nIGluIHRoZSBF WENFUFQgY2xhdXNlLAorCQkgKiBzbyBvbmx5IGEgcm9vdCAobm9uLXBhcnRpdGlvbikgdGFibGUg Y2FuIGhhdmUgcHJleGNlcHQgPSB0cnVlLgorCQkgKiBVc2luZyB0aGUgcGFydGl0aW9uJ3Mgb3du IE9JRCB3b3VsZCBhbHdheXMgcmV0dXJuIE5JTCBhbmQgbWlzcyB0aGUKKwkJICogZXhjbHVzaW9u LgorCQkgKi8KKwkJT2lkCQkJcm9vdF9yZWxpZDsKKworCQlpZiAoYW1fcGFydGl0aW9uKQorCQl7 CisJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7 CisKKwkJCXJvb3RfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKKwkJCWxpc3RfZnJlZShh bmNlc3RvcnMpOworCQl9CisJCWVsc2UKKwkJCXJvb3RfcmVsaWQgPSByZWxpZDsKKworCQlleGNl cHRfcHViaWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhyb290X3JlbGlkKTsK KwogCQkvKiBSZWxvYWQgcHVibGljYXRpb25zIGlmIG5lZWRlZCBiZWZvcmUgdXNlLiAqLwogCQlp ZiAoIXB1YmxpY2F0aW9uc192YWxpZCkKIAkJewpAQCAtMjI2NSw5ICsyMjg4LDE5IEBAIGdldF9y ZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJ CQlpbnQJCQlsZXZlbDsKIAkJCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9h bmNlc3RvcnMocmVsaWQpOwogCisJCQkJCS8qCisJCQkJCSAqIFJlYWNoIGhlcmUgZm9yIEZPUiBU QUJMRSwgRk9SIFRBQkxFUyBJTiBTQ0hFTUEsIG9yCisJCQkJCSAqIG1peGVkIHB1YmxpY2F0aW9u cy4gZXhjZXB0X3B1YmlkcyBsZXRzCisJCQkJCSAqIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGlj YXRpb24oKSBza2lwIHNjaGVtYS1iYXNlZAorCQkJCQkgKiBhbmNlc3RvciBtYXRjaGVzIHdoZW4g dGhlIHBhcnRpdGlvbiByb290IGlzIGV4Y2x1ZGVkCisJCQkJCSAqIHZpYSB0aGlzIHB1YmxpY2F0 aW9uJ3MgRVhDRVBUIGNsYXVzZS4gSXQgaGFzIG5vIGVmZmVjdAorCQkJCQkgKiBmb3IgcHVyZSBG T1IgVEFCTEUgcHVibGljYXRpb25zLCB3aGljaCBjYW5ub3QgaGF2ZQorCQkJCQkgKiBwcmV4Y2Vw dCByb3dzLgorCQkJCQkgKi8KIAkJCQkJYW5jZXN0b3IgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1 YmxpY2F0aW9uKHB1Yi0+b2lkLAogCQkJCQkJCQkJCQkJCQkJICAgYW5jZXN0b3JzLAotCQkJCQkJ CQkJCQkJCQkJICAgJmxldmVsKTsKKwkJCQkJCQkJCQkJCQkJCSAgICZsZXZlbCwKKwkJCQkJCQkJ CQkJCQkJCSAgIGV4Y2VwdF9wdWJpZHMpOwogCiAJCQkJCWlmIChhbmNlc3RvciAhPSBJbnZhbGlk T2lkKQogCQkJCQl7CkBAIC0yMjgxLDcgKzIzMTQsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdP dXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCQl9CiAKIAkJCQlpZiAobGlz dF9tZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpIHx8Ci0JCQkJCWxpc3RfbWVtYmVyX29pZChz Y2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAorCQkJCQkobGlzdF9tZW1iZXJfb2lkKHNjaGVtYVB1 YmlkcywgcHViLT5vaWQpICYmCisJCQkJCSAhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9wdWJpZHMs IHB1Yi0+b2lkKSkgfHwKIAkJCQkJYW5jZXN0b3JfcHVibGlzaGVkKQogCQkJCQlwdWJsaXNoID0g dHJ1ZTsKIAkJCX0KQEAgLTIzNjAsNiArMjM5NCw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091 dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJCWxpc3RfZnJlZShwdWJpZHMp OwogCQlsaXN0X2ZyZWUoc2NoZW1hUHViaWRzKTsKKwkJbGlzdF9mcmVlKGV4Y2VwdF9wdWJpZHMp OwogCQlsaXN0X2ZyZWUocmVsX3B1YmxpY2F0aW9ucyk7CiAKIAkJZW50cnktPnJlcGxpY2F0ZV92 YWxpZCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCBmYjRlMDQyYmU4 YS4uOTJmZjg5ZmEyYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTg0NSwx NiArNTg0NSwyOSBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0 aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJLyogRmV0Y2ggdGhlIHB1YmxpY2F0aW9u IG1lbWJlcnNoaXAgaW5mby4gKi8KIAlwdWJvaWRzID0gR2V0UmVsYXRpb25JbmNsdWRlZFB1Ymxp Y2F0aW9ucyhyZWxpZCk7CiAJc2NoZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlv bik7Ci0JcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0U2NoZW1h UHVibGljYXRpb25zKHNjaGVtYWlkKSk7CiAKIAlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsaXNw YXJ0aXRpb24pCiAJewotCQlPaWQJCQlsYXN0X2FuY2VzdG9yX3JlbGlkOwotCi0JCS8qIEFkZCBw dWJsaWNhdGlvbnMgdGhhdCB0aGUgYW5jZXN0b3JzIGFyZSBpbiB0b28uICovCiAJCWFuY2VzdG9y cyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKLQkJbGFzdF9hbmNlc3Rvcl9yZWxp ZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOworCQlleGNlcHRwdWJvaWRzID0gR2V0UmVsYXRpb25F eGNsdWRlZFB1YmxpY2F0aW9ucyhsbGFzdF9vaWQoYW5jZXN0b3JzKSk7CisJfQorCWVsc2UKKwkJ ZXhjZXB0cHVib2lkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMocmVsaWQpOwog CisJLyoKKwkgKiBTdWJ0cmFjdCBleGNlcHRwdWJvaWRzIGZyb20gdGhlIHNjaGVtYS1wdWJsaWNh dGlvbiBjb250cmlidXRpb24gc28gdGhhdAorCSAqIGEgcmVsYXRpb24gRVhDRVBUJ2QgZnJvbSBh IHNjaGVtYSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBpbmhlcml0IHRoYXQKKwkgKiBwdWJsaWNhdGlv bidzIHB1YmFjdGlvbnMuICBXaXRob3V0IHRoaXMgZmlsdGVyLAorCSAqIENoZWNrQ21kUmVwbGlj YUlkZW50aXR5KCkgd291bGQgZGVtYW5kIFJFUExJQ0EgSURFTlRJVFkgZm9yCisJICogVVBEQVRF L0RFTEVURSBldmVuIG9uIGEgZXhwbGljaXRseSBleGNsdWRlZCB0YWJsZS4KKwkgKi8KKwlwdWJv aWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAorCQkJCQkJCQkJIGxpc3RfZGlm ZmVyZW5jZV9vaWQoR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSwKKwkJCQkJCQkJCQkJ CQkJIGV4Y2VwdHB1Ym9pZHMpKTsKKworCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3BhcnRp dGlvbikKKwl7CisJCS8qIEFkZCBwdWJsaWNhdGlvbnMgdGhhdCB0aGUgYW5jZXN0b3JzIGFyZSBp biB0b28uICovCiAJCWZvcmVhY2gobGMsIGFuY2VzdG9ycykKIAkJewogCQkJT2lkCQkJYW5jZXN0 b3IgPSBsZmlyc3Rfb2lkKGxjKTsKQEAgLTU4NjMsMjMgKzU4NzYsOSBAQCBSZWxhdGlvbkJ1aWxk UHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRl c2MpCiAJCQkJCQkJCQkJCSBHZXRSZWxhdGlvbkluY2x1ZGVkUHVibGljYXRpb25zKGFuY2VzdG9y KSk7CiAJCQlzY2hlbWFpZCA9IGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKTsKIAkJCXB1Ym9p ZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCi0JCQkJCQkJCQkJCSBHZXRTY2hl bWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwkJCQkJCQkJCQkJIGxpc3RfZGlmZmVyZW5jZV9v aWQoR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSwKKwkJCQkJCQkJCQkJCQkJCQkgZXhj ZXB0cHVib2lkcykpOwogCQl9Ci0KLQkJLyoKLQkJICogT25seSB0aGUgdG9wLW1vc3QgYW5jZXN0 b3IgY2FuIGFwcGVhciBpbiB0aGUgRVhDRVBUIGNsYXVzZS4KLQkJICogVGhlcmVmb3JlLCBmb3Ig YSBwYXJ0aXRpb24sIGV4Y2x1c2lvbiBtdXN0IGJlIGV2YWx1YXRlZCBhdCB0aGUKLQkJICogdG9w LW1vc3QgYW5jZXN0b3IuCi0JCSAqLwotCQlleGNlcHRwdWJvaWRzID0gR2V0UmVsYXRpb25FeGNs dWRlZFB1YmxpY2F0aW9ucyhsYXN0X2FuY2VzdG9yX3JlbGlkKTsKLQl9Ci0JZWxzZQotCXsKLQkJ LyoKLQkJICogRm9yIGEgcmVndWxhciB0YWJsZSBvciBhIHJvb3QgcGFydGl0aW9uZWQgdGFibGUs IGNoZWNrIGV4Y2x1c2lvbiBvbgotCQkgKiB0YWJsZSBpdHNlbGYuCi0JCSAqLwotCQlleGNlcHRw dWJvaWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhyZWxpZCk7CiAJfQogCiAJ YWxsdGFibGVzcHVib2lkcyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpOwpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRl eCBmZWY4NmI0Y2NhMy4uNzJlOGY1OGZjM2UgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC02ODE1LDYgKzY4MTUsMjQg QEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQlpZiAoIWFk ZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlcyBmcm9tIHNjaGVtYXM6Iiks CiAJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCisJ CQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICog R2V0IHRhYmxlcyBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgdGhpcyBzY2hlbWEKKwkJCQkJICog cHVibGljYXRpb24uCisJCQkJCSAqLworCQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJ CQkJCQkJICAiU0VMRUNUIGNvbmNhdChjLnJlbG5hbWVzcGFjZTo6cmVnbmFtZXNwYWNlLCAnLics IGMucmVsbmFtZSlcbiIKKwkJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4i CisJCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIg T04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0g JyVzJ1xuIgorCQkJCQkJCQkJICAiICBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJCSAgIk9S REVSIEJZIDEiLCBwdWJpZCk7CisJCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2Mo JmJ1ZiwgXygiRXhjZXB0IHRhYmxlczoiKSwKKwkJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCisJ CQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCQl9CiAJCQl9CiAJCX0KIAkJZWxzZQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCmluZGV4IGU0YmMyYzkzMTQ1Li41ZmQ0Zjg2Y2U3MCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuaW4uYwpAQCAtMTA2NSw2ICsxMDY1LDI0IEBAIHN0YXRpYyBjb25zdCBTY2hlbWFRdWVy eSBRdWVyeV9mb3JfdHJpZ2dlcl9vZl90YWJsZSA9IHsKICJTRUxFQ1QgbnNwbmFtZSBGUk9NIHBn X2NhdGFsb2cucGdfbmFtZXNwYWNlICJcCiAiIFdIRVJFIG5zcG5hbWUgTElLRSAnJXMnIgogCisj ZGVmaW5lIFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9zY2hlbWEgXAorIlNFTEVDVCBuLm5z cG5hbWUgfHwgJy4nIHx8IGMucmVsbmFtZSAiXAorIiAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMgIlwKKyIgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0g Yy5yZWxuYW1lc3BhY2UgIlwKKyIgV0hFUkUgYy5yZWxraW5kIElOICgiIENwcEFzU3RyaW5nMihS RUxLSU5EX1JFTEFUSU9OKSAiLCAiIFwKKwkJCQkJCUNwcEFzU3RyaW5nMihSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKSAiKSAiXAorIiAgIEFORCAobi5uc3BuYW1lIHx8ICcuJyB8fCBjLnJlbG5h bWUpIExJS0UgJyVzJyAiXAorIiAgIEFORCBuLm5zcG5hbWUgPSAnJXMnIgorCisjZGVmaW5lIFF1 ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9jdXJyZW50X3NjaGVtYSBcCisiU0VMRUNUIGMucmVs bmFtZSAiXAorIiAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgIlwKKyIgICAgICAgSk9JTiBw Z19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1lc3BhY2UgIlwKKyIg V0hFUkUgYy5yZWxraW5kIElOICgiIENwcEFzU3RyaW5nMihSRUxLSU5EX1JFTEFUSU9OKSAiLCAi IFwKKwkJCQkJCUNwcEFzU3RyaW5nMihSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAiKSAiXAor IiAgIEFORCBjLnJlbG5hbWUgTElLRSAnJXMnICJcCisiICAgQU5EIG4ubnNwbmFtZSA9IHBnX2Nh dGFsb2cuY3VycmVudF9zY2hlbWEoKSIKKwogLyogVXNlIENPTVBMRVRFX1dJVEhfUVVFUllfVkVS QkFUSU0gd2l0aCB0aGVzZSBxdWVyaWVzIGZvciBHVUMgbmFtZXM6ICovCiAjZGVmaW5lIFF1ZXJ5 X2Zvcl9saXN0X29mX2FsdGVyX3N5c3RlbV9zZXRfdmFycyBcCiAiU0VMRUNUIHBnX2NhdGFsb2cu bG93ZXIobmFtZSkgRlJPTSBwZ19jYXRhbG9nLnBnX3NldHRpbmdzICJcCkBAIC0zNzc0LDggKzM3 OTIsMjEgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRF X1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAiIEFO RCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCiAJCQkJCQkJCSAiQ1VSUkVOVF9TQ0hF TUEiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmICghZW5kc193 aXRoKHByZXZfd2QsICcsJykpKQotCQlDT01QTEVURV9XSVRIKCJXSVRIICgiKTsKKwllbHNlIGlm IChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJM RVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywn KSkKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUICggVEFCTEUiLCAiV0lUSCAoIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFC TEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJ VEgoIiggVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJF WENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJ TiIsICJTQ0hFTUEiLCAiQ1VSUkVOVF9TQ0hFTUEiLCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiKSkK KwkJQ09NUExFVEVfV0lUSF9RVUVSWV9WRVJCQVRJTShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNf aW5fY3VycmVudF9zY2hlbWEpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFu eSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVu Y2UocHJldjRfd2QpOworCQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9s aXN0X29mX3RhYmxlc19pbl9zY2hlbWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1B IiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNf d2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7CiAJLyogQ29tcGxldGUg IkNSRUFURSBQVUJMSUNBVElPTiA8bmFtZT4gWy4uLl0gV0lUSCIgKi8KIAllbHNlIGlmIChNYXRj aGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueU4sICJXSVRIIiwgIigiKSkKIAkJ Q09NUExFVEVfV0lUSCgicHVibGlzaCIsICJwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zIiwgInB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290Iik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKaW5kZXggODliNGJiMTRmNjIuLjUzZTNkN2M2ZjNkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oCkBAIC0xOTEsNyArMTkxLDggQEAgZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRp dGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiAJCQkJCQkJCQkJCVB1YmxpY2F0aW9u UGFydE9wdCBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJ R2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3Rv cnMsCi0JCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwpOworCQkJCQkJCQkJCQlpbnQgKmFu Y2VzdG9yX2xldmVsLAorCQkJCQkJCQkJCQlMaXN0ICpleGNlcHRfcHViaWRzKTsKIAogZXh0ZXJu IGJvb2wgaXNfcHVibGlzaGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29s IGlzX3NjaGVtYV9wdWJsaWNhdGlvbihPaWQgcHViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuaAppbmRleCA0Y2Y0NWMxN2NjNS4uZmIxNzAzYWE2NzUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCkBAIC0yNyw2ICsyNyw4IEBAIGV4dGVybiB2b2lk IEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCk7CiBleHRlcm4gdm9pZCBSZW1vdmVQdWJsaWNhdGlvbkJ5SWQoT2lkIHB1YmlkKTsK IGV4dGVybiB2b2lkIFJlbW92ZVB1YmxpY2F0aW9uUmVsQnlJZChPaWQgcHJvaWQpOwogZXh0ZXJu IHZvaWQgUmVtb3ZlUHVibGljYXRpb25TY2hlbWFCeUlkKE9pZCBwc29pZCk7CitleHRlcm4gdm9p ZCBSZW1vdmVTY2hlbWFQdWJFeGNlcHRGb3JSZWwoT2lkIHJlbGlkLCBPaWQgb2xkTnNwT2lkLAor CQkJCQkJCQkJCU9pZCBuZXdOc3BPaWQpOwogCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlclB1 YmxpY2F0aW9uT3duZXIoY29uc3QgY2hhciAqbmFtZSwgT2lkIG5ld093bmVySWQpOwogZXh0ZXJu IHZvaWQgQWx0ZXJQdWJsaWNhdGlvbk93bmVyX29pZChPaWQgcHViaWQsIE9pZCBuZXdPd25lcklk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBlMDM1NTYzOTlhYi4uMWYzNjk3Y2NkMjMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQ0ODksNiArNDQ4OSw4IEBAIHR5cGVkZWYgc3RydWN0 IFB1YmxpY2F0aW9uT2JqU3BlYwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgcHVib2JqdHlwZTsJ LyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwogCWNoYXIJICAgKm5hbWU7CiAJ UHVibGljYXRpb25UYWJsZSAqcHVidGFibGU7CisJTGlzdAkgICAqZXhjZXB0X3RhYmxlczsJLyog dGFibGVzIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSAoZm9yCisJCQkJCQkJCSAqIFRB QkxFUyBJTiBTQ0hFTUEpICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlv biwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbk9ialNwZWM7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMjllNTRiMjE0YTAuLmI0MTA0 ZTgyMjBhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAt MjcwLDYgKzI3MCwxMiBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdAogRVJST1I6ICBzeW50YXgg ZXJyb3IgYXQgb3IgbmVhciAidGVzdHB1Yl90YmwxIgogTElORSAxOiAuLi5fZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRlc3RwdWJfdGIuLi4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBmYWlsIC0gRVhDRVBUIGlzIG5vdCBhbGxvd2VkIGZvciBGT1IgVEFCTEUgcHVibGljYXRp b25zCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfZXJyCisgICAgRk9SIFRBQkxF IHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmwzKTsK K0VSUk9SOiAgRVhDRVBUIGlzIG5vdCBhbGxvd2VkIGZvciBUQUJMRSBwdWJsaWNhdGlvbiBvYmpl Y3RzCitMSU5FIDI6ICAgICBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIgRVhD RVBUIChUQUJMRSB0ZXN0cC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBTRVQg QUxMIFRBQkxFUy9TRVFVRU5DRVMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpAQCAtNDcwLDcgKzQ3NiwxMzkgQEAgSElOVDogIENoYW5nZSB0aGUgcHVibGlj YXRpb24ncyBFWENFUFQgY2xhdXNlIHVzaW5nIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgQUwK IFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVz dHB1Yl9wYXJ0MSwgdGFiX21haW47CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwotLS0tIFRl c3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIHRlc3RzIGZvciBUQUJMRVMgSU4g U0NIRU1BCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NF VCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKKy0tIENyZWF0ZSB0YWJsZXMgaW4gcHVi X3Rlc3QgZm9yIHRoZXNlIHRlc3RzCitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90Ymxf czEgKGEgaW50IHByaW1hcnkga2V5LCBiIHRleHQpOworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfdGJsX3MyICh4IGludCBwcmltYXJ5IGtleSwgeSB0ZXh0KTsKKy0tIENyZWF0ZSBzYW1l LW5hbWVkIHRhYmxlcyBpbiBwdWJsaWMgdG8gdmVyaWZ5IHVucXVhbGlmaWVkIEVYQ0VQVCBlbnRy aWVzCistLSBhcmUgcXVhbGlmaWVkIHdpdGggdGhlIG5hbWVkIHNjaGVtYSwgbm90IHB1YmxpYwor Q1JFQVRFIFRBQkxFIHRlc3RwdWJfbm9wayAoZm9vIGludCwgYmFyIGludCk7CitDUkVBVEUgVEFC TEUgdGVzdHB1Yl90YmxfczEgKGEgaW50IHByaW1hcnkga2V5LCBiIHRleHQpOworLS0gQmFzaWM6 IGV4Y2x1ZGUgb25lIHRhYmxlIGZyb20gYSBzY2hlbWEgcHVibGljYXRpb24KK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0 ZXN0cHViX3NjaGVtYV9leGNlcHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1u cyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIK K0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIgorCistLSBFeGNs dWRlIG11bHRpcGxlIHRhYmxlcyB1c2luZyB1bnF1YWxpZmllZCBuYW1lczsgc2FtZS1uYW1lZCB0 YWJsZXMgZXhpc3QgaW4KKy0tIHB1YmxpYyB0byBjb25maXJtIHVucXVhbGlmaWVkIG5hbWVzIHJl c29sdmUgdG8gcHViX3Rlc3QsIG5vdCBwdWJsaWMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X3NjaGVtYV9leGNlcHQyCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBU IChUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJfc2No ZW1hX2V4Y2VwdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJv b3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAg ICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRh YmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgorICAgICJwdWJfdGVzdC50ZXN0cHVi X3RibF9zMSIKKworLS0gZmFpbDogRVhDRVBUIHRhYmxlIGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQg c2NoZW1hCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfd3JvbmdzY2hlbWEKKyAg ICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXN0 cHViX3RibDEpOworRVJST1I6ICB0YWJsZSAicHVibGljLnRlc3RwdWJfdGJsMSIgaW4gRVhDRVBU IGNsYXVzZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hICJwdWJfdGVzdCIKK0xJTkUgMjogICAg IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3Rw Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIGZhaWw6IGNyb3NzLXNjaGVtYSBFWENFUFQgbm90IGFsbG93ZWQ7IGVhY2ggRVhD RVBUIGlzIGJvdW5kIHRvIGl0cyBpbW1lZGlhdGUgc2NoZW1hCitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9leGNlcHRfY3Jvc3NzY2hlbWEKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdCwgcHVibGljIEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Ymxp Yy50ZXN0cHViX3RibDEpOworRVJST1I6ICB0YWJsZSAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEi IGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSAicHVibGljIgorTElO RSAyOiAuLi5SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIHB1YmxpYyBFWENFUFQgKFRBQkxF IHB1Yl90ZXN0LnQuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBNdWx0aXBsZSBzY2hlbWFzIGVhY2ggd2l0aCB0aGVp ciBvd24gRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4 Y2VwdF9tdWx0aQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpLAorICAgICAgICAgICAgICAgICAgcHVibGljIEVY Q0VQVCAoVEFCTEUgdGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9t dWx0aQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAg IHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKKyAgICAicHVibGljIgor RXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisgICAgInB1Ymxp Yy50ZXN0cHViX3RibDEiCisKKy0tIEFMVEVSIFRBQkxFIC4uLiBTRVQgU0NIRU1BIG9uIGEgdGFi bGUgZXhjbHVkZWQgYnkgYSBzY2hlbWEgcHVibGljYXRpb246CistLSB0aGUgc2NoZW1hLXNjb3Bl ZCBleGNsdXNpb24gaXMgbm8gbG9uZ2VyIG1lYW5pbmdmdWwgb25jZSB0aGUgdGFibGUgbW92ZXMK Ky0tIG91dCBvZiBpdHMgc2NoZW1hLCBzbyB0aGUgZXhjbHVzaW9uIGlzIGF1dG8tcmVtb3ZlZC4K K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfc2V0c2NoCisgICAgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3RibF9zMik7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHRfc2V0c2NoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX3NjaGVtYV9leGNlcHRfc2V0c2NoCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJv bSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0 LnRlc3RwdWJfdGJsX3MyIgorCitBTFRFUiBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMiBT RVQgU0NIRU1BIHB1YmxpYzsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2gKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1Rh YmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorCitEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2g7CistLSBSZXN0b3JlIGZvciBmdXJ0aGVyIHRlc3Rz CitBTFRFUiBUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmxfczIgU0VUIFNDSEVNQSBwdWJfdGVzdDsK Ky0tIGZhaWw6IHRhYmxlIGFwcGVhcnMgaW4gYm90aCB0aGUgZXhwbGljaXQgdGFibGUgbGlzdCBh bmQgdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9j b25mbGljdAorICAgIEZPUiBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsK K0VSUk9SOiAgdGFibGUgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIiBjYW5ub3QgYXBwZWFyIGlu IGJvdGggdGhlIHRhYmxlIGxpc3QgYW5kIHRoZSBFWENFUFQgY2xhdXNlCistLSBmYWlsOiBub25l eGlzdGVudCB0YWJsZSBpbiBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9leGNlcHRfbm9yZWwKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQg KFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlKTsKK0VSUk9SOiAgcmVsYXRpb24gInB1 Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlIiBkb2VzIG5vdCBleGlzdAorLS0gZmFpbDogcGFydGl0 aW9uIGNhbm5vdCBhcHBlYXIgaW4gRVhDRVBUIGNsYXVzZTsgb25seSByb290IHRhYmxlcyBhcmUg YWxsb3dlZAorQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgKGEgaW50KSBQ QVJUSVRJT04gQlkgTElTVCAoYSk7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0 X3MgUEFSVElUSU9OIE9GIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgRk9SIFZBTFVFUyBJTiAo MSk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfcGFydGl0aW9uCisgICAgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3BhcnRfcyk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IHJlbGF0aW9uICJwdWJfdGVzdC50ZXN0 cHViX3BhcnRfcyIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UKK0RFVEFJTDogIFRo aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGluZGl2aWR1YWwgcGFydGl0aW9ucy4K Ky0tIGZhaWw6IFRBQkxFIGtleXdvcmQgaXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJzdCBlbnRyeSBp biB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X25v a3cKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9w ayk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ0ZXN0cHViX25vcGsiCitMSU5F IDI6ICAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9w ayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIGVycm9yOiBBREQgVEFCTEUgZm9yIGEgcGFydGl0aW9uIGlzIHJlamVjdGVkIHdoZW4gYSBw YXJ0aXRpb24gYW5jZXN0b3IKKy0tIGlzIGN1cnJlbnRseSBpbiB0aGUgcHVibGljYXRpb24ncyBF WENFUFQgbGlzdC4KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9hbmNlc3Rvcgor ICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3Qu dGVzdHB1Yl9wYXJ0ZWRfcyk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9hbmNl c3RvciBBREQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3M7CitFUlJPUjogIGNhbm5vdCBh ZGQgdGFibGUgInB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zIiB0byBwdWJsaWNhdGlvbiAidGVzdHB1 Yl9leGNlcHRfYW5jZXN0b3IiCitERVRBSUw6ICBQYXJ0aXRpb24gYW5jZXN0b3IgInB1Yl90ZXN0 LnRlc3RwdWJfcGFydGVkX3MiIG9mIHRhYmxlICJwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyIgaXMg Y3VycmVudGx5IGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiB0aGUgcHVibGljYXRpb24u CitISU5UOiAgQ2hhbmdlIEVYQ0VQVCBsaXN0IHVzaW5nIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBT RVQgVEFCTEVTIElOIFNDSEVNQSAuLi4gRVhDRVBULgorRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi X2V4Y2VwdF9hbmNlc3RvcjsKKy0tIENsZWFudXAKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CitEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMjsKK0RST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyBDQVNDQURFOworRFJP UCBUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJfdGJsX3MxOworRFJPUCBQVUJMSUNBVElPTiB0 ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3Nj aGVtYV9leGNlcHRfbXVsdGk7CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFNFUVVFTkNF IHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJf c2VxMTsKIC0tIEZPUiBBTEwgU0VRVUVOQ0VTCkBAIC0xOTUzLDYgKzIwOTEsMjcgQEAgQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIGZvbywg YmFyIChhLCBiKTsKIEVSUk9SOiAgY29sdW1uIHNwZWNpZmljYXRpb24gbm90IGFsbG93ZWQgZm9y IHNjaGVtYQogTElORSAxOiAuLi5USU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElO IFNDSEVNQSBmb28sIGJhciAoYSwgYikuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFWENFUFQgY2xhdXNlIHdpdGgg Q1VSUkVOVF9TQ0hFTUE6IGNyb3NzLXNjaGVtYSBlbnRyeSBtdXN0IGJlIHJlamVjdGVkCitTRVQg c2VhcmNoX3BhdGggPSBwdWJfdGVzdDE7CistLSBxdWFsaWZpZWQgbmFtZSBmcm9tIHdyb25nIHNj aGVtYSAtPiBlcnJvcgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY3Vyc2NoX2V4Y2VwdCBG T1IgVEFCTEVTIElOIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0 Mi50YmwxKTsKK0VSUk9SOiAgdGFibGUgInB1Yl90ZXN0Mi50YmwxIiBpbiBFWENFUFQgY2xhdXNl IGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEgInB1Yl90ZXN0MSIKKy0tIHVucXVhbGlmaWVkIG5h bWUgaW1wbGljaXRseSBxdWFsaWZpZWQgd2l0aCBjdXJyZW50IHNjaGVtYSAocHViX3Rlc3QxLnRi bCkKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2N1cnNjaF9leGNlcHQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgQ1VSUkVOVF9TQ0hF TUEgRVhDRVBUIChUQUJMRSB0YmwpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkUnAr IHRlc3RwdWJfY3Vyc2NoX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9jdXJzY2hfZXhjZXB0Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1u cyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdDEi CitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdDEudGJsIgorCitEUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWJfY3Vyc2NoX2V4Y2VwdDsKK1JFU0VUIHNlYXJjaF9wYXRoOwogLS0gY2xlYW51cCBw dWJfdGVzdDEgc2NoZW1hIGZvciBpbnZhbGlkYXRpb24gdGVzdHMKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWIyX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEsIHRlc3RwdWI0X2ZvcnNjaGVtYSwgdGVz dHB1YjVfZm9yc2NoZW1hLCB0ZXN0cHViNl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9ydGFibGU7CkBA IC0yMzA0LDYgKzI0NjMsNyBAQCBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyX2R1 bW15OwogLS0gVGVzdCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKHRleHRbXSwgb2lkKSBmdW5j dGlvbgogQ1JFQVRFIFNDSEVNQSBncHRfdGVzdF9zY2g7CiBDUkVBVEUgVEFCTEUgZ3B0X3Rlc3Rf c2NoLnRibF9zY2ggKGlkIGludCk7CitDUkVBVEUgVEFCTEUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gy IChpZCBpbnQpOwogQ1JFQVRFIFRBQkxFIHRibF9ub3JtYWwgKGlkIGludCk7CiBDUkVBVEUgVEFC TEUgdGJsX3BhcmVudCAoaWQxIGludCwgaWQyIGludCwgaWQzIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpZDEpOwogQ1JFQVRFIFRBQkxFIHRibF9wYXJ0MSBQQVJUSVRJT04gT0YgdGJsX3BhcmVu dCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CkBAIC0yMzE0LDYgKzI0NzQsNyBAQCBDUkVB VEUgUFVCTElDQVRJT04gcHViX2FsbF9ub192aWFyb290IEZPUiBBTEwgVEFCTEVTIFdJVEggKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbgogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0IEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGJsX3BhcmVudCwgZ3B0X3Rlc3Rfc2NoLnRibF9z Y2gpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CiBDUkVBVEUgUFVC TElDQVRJT04gcHViX2FsbF9leGNlcHRfbm9fdmlhcm9vdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQg KFRBQkxFIHRibF9wYXJlbnQsIGdwdF90ZXN0X3NjaC50Ymxfc2NoKSBXSVRIIChwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWJfc2NoZW1h IEZPUiBUQUJMRVMgSU4gU0NIRU1BIGdwdF90ZXN0X3NjaDsKK0NSRUFURSBQVUJMSUNBVElPTiBw dWJfc2NoZW1hX2V4Y2VwdCBGT1IgVEFCTEVTIElOIFNDSEVNQSBncHRfdGVzdF9zY2ggRVhDRVBU IChUQUJMRSBncHRfdGVzdF9zY2gudGJsX3NjaCk7CiBDUkVBVEUgUFVCTElDQVRJT04gcHViX25v cm1hbCBGT1IgVEFCTEUgdGJsX25vcm1hbCBXSEVSRSAoaWQgPCAxMCk7CiBDUkVBVEUgUFVCTElD QVRJT04gcHViX3BhcnRfbGVhZiBGT1IgVEFCTEUgdGJsX3BhcnQxIFdJVEggKHB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3Bh cmVudCBGT1IgVEFCTEUgdGJsX3BhcmVudCAoaWQxLCBpZDIpIFdIRVJFIChpZDEgPSAxMCkgV0lU SCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKQEAgLTI0NjUsNiArMjYyNiwx OCBAQCBTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdF9ub192aWFy b290J10sICd0YmxfcGFydDEnKTsgLS0gbm8gcgogLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t Ky0tLS0tLQogKDAgcm93cykKIAorLS0gdGVzdCBmb3IgRVhDRVBUIGNsYXVzZSB3aXRoIHNjaGVt YSBwdWJsaWNhdGlvbgorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3NjaGVtYV9l eGNlcHQnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVkZWQp CisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZ WydwdWJfc2NoZW1hX2V4Y2VwdCddLCAnZ3B0X3Rlc3Rfc2NoLnRibF9zY2gyJyk7IC0tIG9uZSBy b3cgKGluY2x1ZGVkIHZpYSBzY2hlbWEpCisgICAgICBwdWJuYW1lICAgICAgfCByZWxuYW1lICB8 IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKy0t LS0tLQorIHB1Yl9zY2hlbWFfZXhjZXB0IHwgdGJsX3NjaDIgfCAxICAgICB8IAorKDEgcm93KQor CiAtLSB0d28gcm93cyB3aXRoIGRpZmZlcmVudCByb3cgZmlsdGVyCiBTRUxFQ1QgKiBGUk9NIHRl c3RfZ3B0KEFSUkFZWydwdWJfYWxsJywgJ3B1Yl9ub3JtYWwnXSwgJ3RibF9ub3JtYWwnKTsKICAg cHVibmFtZSAgIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICBxdWFsICAgIApAQCAtMjUxNyw2ICsy NjkwLDcgQEAgRFJPUCBQVUJMSUNBVElPTiBwdWJfYWxsX25vX3ZpYXJvb3Q7CiBEUk9QIFBVQkxJ Q0FUSU9OIHB1Yl9hbGxfZXhjZXB0OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdF9u b192aWFyb290OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfc2NoZW1hOworRFJPUCBQVUJMSUNBVElP TiBwdWJfc2NoZW1hX2V4Y2VwdDsKIERST1AgUFVCTElDQVRJT04gcHViX25vcm1hbDsKIERST1Ag UFVCTElDQVRJT04gcHViX3BhcnRfbGVhZjsKIERST1AgUFVCTElDQVRJT04gcHViX3BhcnRfcGFy ZW50OwpAQCAtMjUyNSw3ICsyNjk5LDkgQEAgRFJPUCBQVUJMSUNBVElPTiBwdWJfcGFydF9wYXJl bnRfY2hpbGQ7CiBEUk9QIFZJRVcgZ3B0X3Rlc3RfdmlldzsKIERST1AgVEFCTEUgdGJsX25vcm1h bCwgdGJsX3BhcmVudCwgdGJsX3BhcnQxOwogRFJPUCBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoIENBU0NB REU7Ci1OT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGdwdF90ZXN0X3NjaC50Ymxfc2No CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDIgb3RoZXIgb2JqZWN0cworREVUQUlMOiAgZHJv cCBjYXNjYWRlcyB0byB0YWJsZSBncHRfdGVzdF9zY2gudGJsX3NjaAorZHJvcCBjYXNjYWRlcyB0 byB0YWJsZSBncHRfdGVzdF9zY2gudGJsX3NjaDIKIC0tIHN0YWdlIG9iamVjdHMgZm9yIHBnX2R1 bXAgdGVzdHMKIENSRUFURSBTQ0hFTUEgcHVibWUgQ1JFQVRFIFRBQkxFIHQwIChjIGludCwgZCBp bnQpIENSRUFURSBUQUJMRSB0MSAoYyBpbnQpOwogQ1JFQVRFIFNDSEVNQSBwdWJtZTIgQ1JFQVRF IFRBQkxFIHQwIChjIGludCwgZCBpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3Fs CmluZGV4IDA0MWUxNGE0ZGU2Li4wMTNkNzI0OWIyNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbApAQCAtMTIzLDYgKzEyMyw5IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMCiBc ZCB0ZXN0cHViX3RibDEKIC0tIGZhaWwgLSBmaXJzdCB0YWJsZSBpbiB0aGUgRVhDRVBUIGxpc3Qg c2hvdWxkIHVzZSBUQUJMRSBrZXl3b3JkCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jh bGx0YWJsZXNfZXhjZXB0dGFibGUyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90Ymwx LCB0ZXN0cHViX3RibDIpOworLS0gZmFpbCAtIEVYQ0VQVCBpcyBub3QgYWxsb3dlZCBmb3IgRk9S IFRBQkxFIHB1YmxpY2F0aW9ucworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2Vy cgorICAgIEZPUiBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMiBFWENFUFQgKFRBQkxF IHRlc3RwdWJfdGJsMyk7CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogLS0gU0VUIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCkBAIC0yMjAsNyArMjIzLDkwIEBA IFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVz dHB1Yl9wYXJ0MSwgdGFiX21haW47CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogCi0tLS0g VGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIFRBQkxFUyBJ TiBTQ0hFTUEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gQ3JlYXRlIHRhYmxlcyBpbiBw dWJfdGVzdCBmb3IgdGhlc2UgdGVzdHMKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3Qu dGVzdHB1Yl90YmxfczIgKHggaW50IHByaW1hcnkga2V5LCB5IHRleHQpOworLS0gQ3JlYXRlIHNh bWUtbmFtZWQgdGFibGVzIGluIHB1YmxpYyB0byB2ZXJpZnkgdW5xdWFsaWZpZWQgRVhDRVBUIGVu dHJpZXMKKy0tIGFyZSBxdWFsaWZpZWQgd2l0aCB0aGUgbmFtZWQgc2NoZW1hLCBub3QgcHVibGlj CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9ub3BrIChmb28gaW50LCBiYXIgaW50KTsKK0NSRUFURSBU QUJMRSB0ZXN0cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CisKKy0tIEJh c2ljOiBleGNsdWRlIG9uZSB0YWJsZSBmcm9tIGEgc2NoZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MQorICAgIEZPUiBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworXGRS cCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MQorCistLSBFeGNsdWRlIG11bHRpcGxlIHRhYmxlcyB1 c2luZyB1bnF1YWxpZmllZCBuYW1lczsgc2FtZS1uYW1lZCB0YWJsZXMgZXhpc3QgaW4KKy0tIHB1 YmxpYyB0byBjb25maXJtIHVucXVhbGlmaWVkIG5hbWVzIHJlc29sdmUgdG8gcHViX3Rlc3QsIG5v dCBwdWJsaWMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQyCisgICAg Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX25vcGss IHRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKworLS0gZmFp bDogRVhDRVBUIHRhYmxlIGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQgc2NoZW1hCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9leGNlcHRfd3JvbmdzY2hlbWEKKyAgICBGT1IgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXN0cHViX3RibDEpOworCistLSBm YWlsOiBjcm9zcy1zY2hlbWEgRVhDRVBUIG5vdCBhbGxvd2VkOyBlYWNoIEVYQ0VQVCBpcyBib3Vu ZCB0byBpdHMgaW1tZWRpYXRlIHNjaGVtYQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhj ZXB0X2Nyb3Nzc2NoZW1hCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIHB1Ymxp YyBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJsaWMudGVzdHB1Yl90 YmwxKTsKKworLS0gTXVsdGlwbGUgc2NoZW1hcyBlYWNoIHdpdGggdGhlaXIgb3duIEVYQ0VQVCBj bGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKyAg ICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfdGJsX3MxKSwKKyAgICAgICAgICAgICAgICAgIHB1YmxpYyBFWENFUFQgKFRBQkxFIHRl c3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKworLS0gQUxU RVIgVEFCTEUgLi4uIFNFVCBTQ0hFTUEgb24gYSB0YWJsZSBleGNsdWRlZCBieSBhIHNjaGVtYSBw dWJsaWNhdGlvbjoKKy0tIHRoZSBzY2hlbWEtc2NvcGVkIGV4Y2x1c2lvbiBpcyBubyBsb25nZXIg bWVhbmluZ2Z1bCBvbmNlIHRoZSB0YWJsZSBtb3ZlcworLS0gb3V0IG9mIGl0cyBzY2hlbWEsIHNv IHRoZSBleGNsdXNpb24gaXMgYXV0by1yZW1vdmVkLgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2gKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKK1xkUnArIHRlc3RwdWJf c2NoZW1hX2V4Y2VwdF9zZXRzY2gKK0FMVEVSIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3My IFNFVCBTQ0hFTUEgcHVibGljOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X3NldHNjaAor RFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfc2V0c2NoOworLS0gUmVzdG9y ZSBmb3IgZnVydGhlciB0ZXN0cworQUxURVIgVEFCTEUgcHVibGljLnRlc3RwdWJfdGJsX3MyIFNF VCBTQ0hFTUEgcHViX3Rlc3Q7CisKKy0tIGZhaWw6IHRhYmxlIGFwcGVhcnMgaW4gYm90aCB0aGUg ZXhwbGljaXQgdGFibGUgbGlzdCBhbmQgdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX2V4Y2VwdF9jb25mbGljdAorICAgIEZPUiBUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX3RibF9zMSwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MxKTsKKworLS0gZmFpbDogbm9uZXhpc3RlbnQgdGFibGUgaW4gRVhD RVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X25vcmVsCisgICAg Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC5ub25l eGlzdGVudF90YWJsZSk7CisKKy0tIGZhaWw6IHBhcnRpdGlvbiBjYW5ub3QgYXBwZWFyIGluIEVY Q0VQVCBjbGF1c2U7IG9ubHkgcm9vdCB0YWJsZXMgYXJlIGFsbG93ZWQKK0NSRUFURSBUQUJMRSBw dWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIChhIGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwor Q1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zIFBBUlRJVElPTiBPRiBwdWJfdGVz dC50ZXN0cHViX3BhcnRlZF9zIEZPUiBWQUxVRVMgSU4gKDEpOworQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZXhjZXB0X3BhcnRpdGlvbgorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MpOworCistLSBmYWlsOiBU QUJMRSBrZXl3b3JkIGlzIHJlcXVpcmVkIGZvciB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIEVYQ0VQ VCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub2t3CisgICAgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vcGspOworCistLSBl cnJvcjogQUREIFRBQkxFIGZvciBhIHBhcnRpdGlvbiBpcyByZWplY3RlZCB3aGVuIGEgcGFydGl0 aW9uIGFuY2VzdG9yCistLSBpcyBjdXJyZW50bHkgaW4gdGhlIHB1YmxpY2F0aW9uJ3MgRVhDRVBU IGxpc3QuCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfYW5jZXN0b3IKKyAgICBG T1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3Rw dWJfcGFydGVkX3MpOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfYW5jZXN0b3Ig QUREIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViX2V4Y2VwdF9hbmNlc3RvcjsKKworLS0gQ2xlYW51cAorUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKK0RST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3Rw dWJfdGJsX3MyOworRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIENBU0NBREU7 CitEUk9QIFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczE7CitEUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRlc3Rw dWJfc2NoZW1hX2V4Y2VwdF9tdWx0aTsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VT CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBT RVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jl c3NfcHViX3NlcTE7CiAKQEAgLTExODksNiArMTI3NSwxOCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVz dDE7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJTiBT Q0hFTUEgZm9vIChhLCBiKTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBB REQgVEFCTEVTIElOIFNDSEVNQSBmb28sIGJhciAoYSwgYik7CiAKKy0tIEVYQ0VQVCBjbGF1c2Ug d2l0aCBDVVJSRU5UX1NDSEVNQTogY3Jvc3Mtc2NoZW1hIGVudHJ5IG11c3QgYmUgcmVqZWN0ZWQK K1NFVCBzZWFyY2hfcGF0aCA9IHB1Yl90ZXN0MTsKKy0tIHF1YWxpZmllZCBuYW1lIGZyb20gd3Jv bmcgc2NoZW1hIC0+IGVycm9yCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfZXhj ZXB0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIENVUlJFTlRfU0NIRU1BIEVYQ0VQVCAoVEFCTEUgcHVi X3Rlc3QyLnRibDEpOworLS0gdW5xdWFsaWZpZWQgbmFtZSBpbXBsaWNpdGx5IHF1YWxpZmllZCB3 aXRoIGN1cnJlbnQgc2NoZW1hIChwdWJfdGVzdDEudGJsKQorU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY3Vyc2NoX2V4Y2VwdCBG T1IgVEFCTEVTIElOIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHRibCk7CitS RVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworXGRScCsgdGVzdHB1Yl9jdXJzY2hfZXhjZXB0CitE Uk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY3Vyc2NoX2V4Y2VwdDsKK1JFU0VUIHNlYXJjaF9wYXRo OworCiAtLSBjbGVhbnVwIHB1Yl90ZXN0MSBzY2hlbWEgZm9yIGludmFsaWRhdGlvbiB0ZXN0cwog QUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjJfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdDE7CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYSwgdGVzdHB1 YjRfZm9yc2NoZW1hLCB0ZXN0cHViNV9mb3JzY2hlbWEsIHRlc3RwdWI2X2ZvcnNjaGVtYSwgdGVz dHB1Yl9mb3J0YWJsZTsKQEAgLTE0NDMsNiArMTU0MSw3IEBAIERST1AgUk9MRSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXJfZHVtbXk7CiAtLSBUZXN0IHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMo dGV4dFtdLCBvaWQpIGZ1bmN0aW9uCiBDUkVBVEUgU0NIRU1BIGdwdF90ZXN0X3NjaDsKIENSRUFU RSBUQUJMRSBncHRfdGVzdF9zY2gudGJsX3NjaCAoaWQgaW50KTsKK0NSRUFURSBUQUJMRSBncHRf dGVzdF9zY2gudGJsX3NjaDIgKGlkIGludCk7CiBDUkVBVEUgVEFCTEUgdGJsX25vcm1hbCAoaWQg aW50KTsKIENSRUFURSBUQUJMRSB0YmxfcGFyZW50IChpZDEgaW50LCBpZDIgaW50LCBpZDMgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkMSk7CiBDUkVBVEUgVEFCTEUgdGJsX3BhcnQxIFBBUlRJ VElPTiBPRiB0YmxfcGFyZW50IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKQEAgLTE0NTQs NiArMTU1Myw3IEBAIENSRUFURSBQVUJMSUNBVElPTiBwdWJfYWxsX25vX3ZpYXJvb3QgRk9SIEFM TCBUQUJMRVMgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uCiBDUkVBVEUgUFVCTElDQVRJT04g cHViX2FsbF9leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB0YmxfcGFyZW50LCBn cHRfdGVzdF9zY2gudGJsX3NjaCkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0 cnVlKTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290IEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGJsX3BhcmVudCwgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gp IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOwogQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1Yl9zY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoOworQ1JF QVRFIFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWFfZXhjZXB0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIGdw dF90ZXN0X3NjaCBFWENFUFQgKFRBQkxFIGdwdF90ZXN0X3NjaC50Ymxfc2NoKTsKIENSRUFURSBQ VUJMSUNBVElPTiBwdWJfbm9ybWFsIEZPUiBUQUJMRSB0Ymxfbm9ybWFsIFdIRVJFIChpZCA8IDEw KTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWJfcGFydF9sZWFmIEZPUiBUQUJMRSB0YmxfcGFydDEg V0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CiBDUkVBVEUgUFVCTElD QVRJT04gcHViX3BhcnRfcGFyZW50IEZPUiBUQUJMRSB0YmxfcGFyZW50IChpZDEsIGlkMikgV0hF UkUgKGlkMSA9IDEwKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwpA QCAtMTUxMCw2ICsxNjEwLDEwIEBAIFNFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9h bGxfZXhjZXB0X25vX3ZpYXJvb3QnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2NoCiBTRUxFQ1QgKiBG Uk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290J10sICd0YmxfcGFy ZW50Jyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVkZWQpCiBTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFS UkFZWydwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290J10sICd0YmxfcGFydDEnKTsgLS0gbm8gcmVz dWx0CiAKKy0tIHRlc3QgZm9yIEVYQ0VQVCBjbGF1c2Ugd2l0aCBzY2hlbWEgcHVibGljYXRpb24K K1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9zY2hlbWFfZXhjZXB0J10sICdncHRf dGVzdF9zY2gudGJsX3NjaCcpOyAtLSBubyByZXN1bHQgKGV4Y2x1ZGVkKQorU0VMRUNUICogRlJP TSB0ZXN0X2dwdChBUlJBWVsncHViX3NjaGVtYV9leGNlcHQnXSwgJ2dwdF90ZXN0X3NjaC50Ymxf c2NoMicpOyAtLSBvbmUgcm93IChpbmNsdWRlZCB2aWEgc2NoZW1hKQorCiAtLSB0d28gcm93cyB3 aXRoIGRpZmZlcmVudCByb3cgZmlsdGVyCiBTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydw dWJfYWxsJywgJ3B1Yl9ub3JtYWwnXSwgJ3RibF9ub3JtYWwnKTsKIApAQCAtMTUzOCw2ICsxNjQy LDcgQEAgRFJPUCBQVUJMSUNBVElPTiBwdWJfYWxsX25vX3ZpYXJvb3Q7CiBEUk9QIFBVQkxJQ0FU SU9OIHB1Yl9hbGxfZXhjZXB0OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdF9ub192 aWFyb290OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfc2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiBw dWJfc2NoZW1hX2V4Y2VwdDsKIERST1AgUFVCTElDQVRJT04gcHViX25vcm1hbDsKIERST1AgUFVC TElDQVRJT04gcHViX3BhcnRfbGVhZjsKIERST1AgUFVCTElDQVRJT04gcHViX3BhcnRfcGFyZW50 OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5kZXggOGM1OGQyODJlZWUuLjE4 YzdiMmMxZmNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0 LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKQEAgLTI0LDE0 ICsyNCwxNyBAQCBteSAkcmVzdWx0OwogCiBzdWIgdGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24K IHsKLQlteSAoJHB1YnZpYXJvb3QpID0gQF87CisJbXkgKCRwdWJ2aWFyb290LCAkcHVic3FsKSA9 IEBfOworCSRwdWJzcWwgLy89CisJICAiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJvb3QxKSI7CisJJHB1YnNxbCAuPSAiIFdJVEgg KHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gJHB1YnZpYXJvb3QpIjsKIAogCSMgSWYgdGhl IHJvb3QgcGFydGl0aW9uZWQgdGFibGUgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsIGFsbCBpdHMK IAkjIHBhcnRpdGlvbnMgYXJlIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24sIHJlZ2FyZGxlc3Mg b2YgdGhlCiAJIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBzZXR0aW5nLgogCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxcSgKLQkJQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJvb3QxKSBXSVRI IChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICRwdWJ2aWFyb290KTsKKwkJJHB1YnNxbDsK IAkJSU5TRVJUIElOVE8gcm9vdDEgVkFMVUVTICgxKSwgKDEwMSk7CiAJKSk7CiAJJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0yMjMsNiArMjI2LDEzMSBAQCAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiB0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbignZmFs c2UnKTsKIHRlc3RfZXhjZXB0X3Jvb3RfcGFydGl0aW9uKCd0cnVlJyk7CiAKKyMgU2FtZSB2YWxp ZGF0aW9uIHVzaW5nIFRBQkxFUyBJTiBTQ0hFTUEgaW5zdGVhZCBvZiBGT1IgQUxMIFRBQkxFUy4K K215ICRzY2hlbWFfcHViID0KKyAgIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljIEVYQ0VQVCAoVEFCTEUgcHVibGljLnJvb3QxKSI7Cit0 ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbignZmFsc2UnLCAkc2NoZW1hX3B1Yik7Cit0ZXN0X2V4 Y2VwdF9yb290X3BhcnRpdGlvbigndHJ1ZScsICRzY2hlbWFfcHViKTsKKworIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQgdGVzdCBjYXNlcyBm b3IgVEFCTEVTIElOIFNDSEVNQQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCisjIENyZWF0ZSBhIGRlZGljYXRlZCBzY2hlbWEgd2l0aCB0d28gdGFibGVz OiBvbmUgdG8gYmUgcHVibGlzaGVkIGFuZCBvbmUgdG8gYmUKKyMgZXhjbHVkZWQuICBBbHNvIGNy ZWF0ZSBpbmhlcml0ZWQgdGFibGVzIHRvIHZlcmlmeSBPTkxZIHNlbWFudGljcy4KKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2No MTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWJfcHVibGlzaGVkIEFTIFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMSw1KSBBUyBhOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYl9leGNsdWRlZCBBUyBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzKDEsNSkgQVMgYTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJlbnQg KGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5jaGlsZCAoYiBpbnQpIElOSEVSSVRTIChzY2gx LnBhcmVudCk7CispKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWJfcHVi bGlzaGVkIChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEudGFiX2V4Y2x1ZGVkIChhIGludCk7 CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFyZW50IChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEu Y2hpbGQgKGIgaW50KSBJTkhFUklUUyAoc2NoMS5wYXJlbnQpOworKSk7CisKKyMgQmFzaWMgdGVz dDogaW5pdGlhbCBzeW5jIHJlc3BlY3RzIEVYQ0VQVC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiBzY2hfcHViIEZPUiBUQUJMRVMg SU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBzY2gxLnRhYl9leGNsdWRlZCkiCispOworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJ T04gc2NoX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNj aF9wdWIiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMo JG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEu dGFiX3B1Ymxpc2hlZCIpOworaXMoJHJlc3VsdCwgcXEoNSksCisJJ1RBQkxFUyBJTiBTQ0hFTUEg RVhDRVBUOiBpbml0aWFsIHN5bmMgY29waWVzIGluY2x1ZGVkIHRhYmxlJyk7CiskcmVzdWx0ID0K KyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknVEFC TEVTIElOIFNDSEVNQSBFWENFUFQ6IGluaXRpYWwgc3luYyBza2lwcyBleGNsdWRlZCB0YWJsZScp OworCisjIERNTDogb25seSB0aGUgaW5jbHVkZWQgdGFibGUgc2hvdWxkIGJlIHJlcGxpY2F0ZWQu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQg SU5UTyBzY2gxLnRhYl9wdWJsaXNoZWQgVkFMVUVTICg2KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnRh Yl9leGNsdWRlZCBWQUxVRVMgKDYpOworKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9wdWJsaXNo ZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDYpLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogRE1M IG9uIGluY2x1ZGVkIHRhYmxlIGlzIHJlcGxpY2F0ZWQnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00g c2NoMS50YWJfZXhjbHVkZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdUQUJMRVMgSU4gU0NI RU1BIEVYQ0VQVDogRE1MIG9uIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCByZXBsaWNhdGVkJyk7CisK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJ T04gc2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RS T1AgUFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIEluaGVyaXRlZCB0YWJsZXM6IGV4Y2x1ZGlu ZyB0aGUgcGFyZW50ICh3aXRob3V0IE9OTFkpIGFsc28gZXhjbHVkZXMgdGhlIGNoaWxkLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHNjaF9wdWIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSBFWENFUFQgKFRBQkxFIHNjaDEucGFy ZW50KSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFNVQlNDUklQVElPTiBzY2hfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gc2NoX3B1YiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJz Y3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEuY2hpbGQgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoMSw1KSwgZ2VuZXJhdGVfc2VyaWVzKDEsNSkpIgorKTsKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOworCiskcmVzdWx0ID0K KyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBzY2gxLmNoaWxkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknVEFCTEVTIElOIFND SEVNQSBFWENFUFQ6IGV4Y2x1ZGluZyBwYXJlbnQgKHdpdGhvdXQgT05MWSkgYWxzbyBleGNsdWRl cyBjaGlsZCcKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn RFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIFRlc3QgdGhhdCBF WENFUFQgKFRBQkxFIE9OTFkgcGFyZW50KSBleGNsdWRlcyBvbmx5IHRoZSBwYXJlbnQgaXRzZWxm LCBub3QgaXRzCisjIGNoaWxkLiAgVHJ1bmNhdGUgY2hpbGQgZmlyc3Qgc28gcm93cyBmcm9tIHRo ZSBwcmV2aW91cyB0ZXN0IGFyZSBub3QgY29waWVkIGJ5CisjIHRoZSBpbml0aWFsIHRhYmxlIHN5 bmMgb2YgdGhlIG5leHQgc3Vic2NyaXB0aW9uLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ1RSVU5DQVRFIHNjaDEuY2hpbGQnKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgc2NoMS5jaGlsZCcpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNjaF9wdWIg Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSBFWENFUFQgKFRBQkxFIE9OTFkgc2NoMS5wYXJlbnQp IgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHNjaF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJM SUNBVElPTiBzY2hfcHViIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlw dGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS5jaGlsZCBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygxLDUpLCBnZW5lcmF0ZV9zZXJpZXMoMSw1KSkiCispOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHNjaDEuY2hpbGQiKTsKK2lzKCRyZXN1bHQsIHFxKDUpLAorCSdUQUJMRVMgSU4gU0NIRU1B IEVYQ0VQVDogT05MWSBwYXJlbnQgaW4gRVhDRVBUIGRvZXMgbm90IGV4Y2x1ZGUgY2hpbGQnKTsK KworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQ VElPTiBzY2hfc3ViJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn RFJPUCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CisKKyMgQ2xlYW51cCBzY2hlbWEgdGFibGVzIGJl Zm9yZSB0aGUgbXVsdGktcHVibGljYXRpb24gc2VjdGlvbi4KKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNDSEVNQSBzY2gxIENBU0NBREUnKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURF Jyk7CisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMg VGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1Ymxp Y2F0aW9ucwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpA QCAtMjU0LDYgKzM4Miw3IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCURST1AgUFVC TElDQVRJT04gdGFwX3B1YjI7CiAJVFJVTkNBVEUgdGFiMTsKICkpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViJyk7CiAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVFJVTkNBVEUgdGFiMSkp OwogCiAjIE9LIHdoZW4gYSB0YWJsZSBpcyBleGNsdWRlZCBieSBwdWIxIEVYQ0VQVCBjbGF1c2Us IGJ1dCBpdCBpcyBpbmNsdWRlZCBieSBwdWIyCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000568c980655b7a62b Content-Type: application/x-patch; name="v18-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABL.patch" Content-Disposition: attachment; filename="v18-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr55lgl61 RnJvbSAwY2E1OTE2ZmMwN2JkYTg3MmRjOTVjODNhZWIyMWQxN2NlYTAxMjBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBGcmksIDMgSnVsIDIwMjYgMTk6NDI6MjUgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx OCAyLzRdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBBREQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCB0aGUgRVhDRVBUIGNsYXVzZSBzdXBwb3J0IHRvIGFsbG93IHRh YmxlcyB0byBiZSBleGNsdWRlZCB3aGVuCmFkZGluZyBhIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9u IHZpYSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gQURELgoKU3ludGF4OgogIEFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBBREQgVEFCTEVTIElOIFNDSEVNQSBzIEVYQ0VQVCAoVEFCTEUgcy50MSk7CgpTaW5j ZSBwZ19kdW1wIHVzZXMgQUxURVIgUFVCTElDQVRJT04gLi4uIEFERCwgc3VwcG9ydCBmb3IgaXQg aXMKaW5jbHVkZWQgaW4gdGhpcyBwYXRjaC4KLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmMgICAgICB8IDE5ICsrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYyAgICB8IDk4ICsrKysrKysrKysrKysrKysrKysrKystCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICB8IDMwICsrKysrKy0KIHNyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgIHwgMjQgKysrKysrCiBzcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8IDE3ICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgMzIgKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3B1YmxpY2F0aW9uLnNxbCAgICAgIHwgMjAgKysrKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzN19leGNlcHQucGwgICAgIHwgMzIgKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjU4IGlu c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRp b24uYwppbmRleCBjZTBmNmQ1YjhjMS4uYWU1MWQ3ODM3OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKQEAgLTcxMywxNSArNzEzLDE4IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxh dGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCSAqIGhlcmUsIGFzIENy ZWF0ZVB1YmxpY2F0aW9uKCkgZnVuY3Rpb24gaW52YWxpZGF0ZXMgYWxsIHJlbGF0aW9ucyBhcyBw YXJ0CiAJICogb2YgZGVmaW5pbmcgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KIAkgKgot CSAqIEZvciBBTFRFUiBQVUJMSUNBVElPTiwgaW52YWxpZGF0aW9uIGlzIG5lZWRlZCBvbmx5IHdo ZW4gYWRkaW5nIGFuCi0JICogRVhDRVBUIHRhYmxlIHRvIGEgcHVibGljYXRpb24gYWxyZWFkeSBt YXJrZWQgYXMgQUxMIFRBQkxFUy4gRm9yCi0JICogcHVibGljYXRpb25zIHRoYXQgd2VyZSBvcmln aW5hbGx5IGVtcHR5IG9yIGRlZmluZWQgYXMgQUxMIFNFUVVFTkNFUyBhbmQKLQkgKiBhcmUgYmVp bmcgY29udmVydGVkIHRvIEFMTCBUQUJMRVMsIGludmFsaWRhdGlvbiBpcyBza2lwcGVkIGhlcmUs IGFzCi0JICogQWx0ZXJQdWJsaWNhdGlvbkFsbEZsYWdzKCkgZnVuY3Rpb24gaW52YWxpZGF0ZXMg YWxsIHJlbGF0aW9ucyB3aGlsZQotCSAqIG1hcmtpbmcgdGhlIHB1YmxpY2F0aW9uIGFzIEFMTCBU QUJMRVMgcHVibGljYXRpb24uCisJICogRm9yIEFMVEVSIFBVQkxJQ0FUSU9OLCBpbnZhbGlkYXRp b24gaXMgbmVlZGVkIHdoZW4gYWRkaW5nIGFuIEVYQ0VQVAorCSAqIHRhYmxlIHRvIGVpdGhlciBh IEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIChwdWItPmFsbHRhYmxlcyBpcyB0cnVlKQorCSAq IG9yIGEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRpb24gKGlzX3NjaGVtYV9wdWJsaWNh dGlvbiBpcyB0cnVlKS4KKwkgKiBUaGUgZXhjZXB0aW9uOiB3aGVuIGEgcHVibGljYXRpb24gaXMg YmVpbmcgY29udmVydGVkIHRvIEZPUiBBTEwgVEFCTEVTCisJICogKHB1Yi0+YWxsdGFibGVzIGlz IHN0aWxsIGZhbHNlIGF0IHRoaXMgcG9pbnQpLAorCSAqIEFsdGVyUHVibGljYXRpb25BbGxGbGFn cygpIHdpbGwgcGVyZm9ybSBhIGZ1bGwgaW52YWxpZGF0aW9uLCBzbyB3ZSBza2lwCisJICogaXQg aGVyZS4KIAkgKi8KLQlpbnZhbF9leGNlcHRfdGFibGUgPSAoYWx0ZXJfc3RtdCAhPSBOVUxMKSAm JiBwdWItPmFsbHRhYmxlcyAmJgotCQkoYWx0ZXJfc3RtdC0+Zm9yX2FsbF90YWJsZXMgJiYgcHJp LT5leGNlcHQpOworCWludmFsX2V4Y2VwdF90YWJsZSA9IChhbHRlcl9zdG10ICE9IE5VTEwpICYm IHByaS0+ZXhjZXB0ICYmCisJCShwdWItPmFsbHRhYmxlcworCQkgPyBhbHRlcl9zdG10LT5mb3Jf YWxsX3RhYmxlcworCQkgOiBpc19zY2hlbWFfcHVibGljYXRpb24ocHViaWQpKTsKIAogCWlmICgh cHJpLT5leGNlcHQgfHwgaW52YWxfZXhjZXB0X3RhYmxlKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMKaW5kZXggNDVhOGE1YzNmNzEuLjU0MjU3OWRhZTg2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNzAsNiArNzAsMTMgQEAgc3RhdGlj IHZvaWQgUHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBt aXNzaW5nX29rKTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQs IExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCQkJCQkJICBBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9p ZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyB2b2lkIEFs dGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAorCQkJCQkJ CQkJSGVhcFR1cGxlIHR1cCwgTGlzdCAqc2NoZW1haWRsaXN0LAorCQkJCQkJCQkJTGlzdCAqZXhj ZXB0X3B1YnRhYmxlcyk7CitzdGF0aWMgdm9pZCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0 VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAorCQkJCQkJCQkJCQkgICBIZWFwVHVw bGUgdHVwLAorCQkJCQkJCQkJCQkgICBMaXN0ICpleGNlcHRfcHVidGFibGVzLAorCQkJCQkJCQkJ CQkgICBMaXN0ICpzY2hlbWFpZGxpc3QpOwogc3RhdGljIGNoYXIgZGVmR2V0R2VuZXJhdGVkQ29s c09wdGlvbihEZWZFbGVtICpkZWYpOwogc3RhdGljIHZvaWQgQ2hlY2tFeGNlcHROb3RJblRhYmxl TGlzdChMaXN0ICpleGNlcHRfcmVscywgTGlzdCAqZXhwbGljaXRyZWxpZHMpOwogCkBAIC0xNTA5 LDcgKzE1MTYsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogICovCiBzdGF0aWMgdm9pZAogQWx0ZXJQdWJsaWNhdGlv blNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCi0JCQkJCQlIZWFwVHVwbGUgdHVw LCBMaXN0ICpzY2hlbWFpZGxpc3QpCisJCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFp ZGxpc3QsCisJCQkJCQlMaXN0ICpleGNlcHRfcHVidGFibGVzKQogewogCUZvcm1fcGdfcHVibGlj YXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIApA QCAtMTU4Niw2ICsxNTk0LDg4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCQkgKi8KIAkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0t Pm9pZCwgc2NoZW1haWRsaXN0LCB0cnVlLCBzdG10KTsKIAl9CisKKwkvKgorCSAqIEluY3JlbWVu dCB0aGUgY29tbWFuZCBjb3VudGVyIHNvIHRoYXQgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgaW4K KwkgKiBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKCkgY2FuIHNlZSB0aGUganVzdC1pbnNl cnRlZCBzY2hlbWEKKwkgKiByb3dzIHdoZW4gQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRh YmxlcyBydW5zIG5leHQuCisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3Rz IHx8IHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKQorCQlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOworCisJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhzdG10LCB0dXAs IGV4Y2VwdF9wdWJ0YWJsZXMsIHNjaGVtYWlkbGlzdCk7Cit9CisKKy8qCisgKiBBbHRlciB0aGUg RVhDRVBUIGxpc3Qgb2YgYSBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb24uCisgKgorICogQWRkcywg cmVtb3Zlcywgb3IgcmVwbGFjZXMgZXhjZXB0LXRhYmxlIGVudHJpZXMgaW4gcGdfcHVibGljYXRp b25fcmVsCisgKiAocm93cyB3aXRoIHByZXhjZXB0ID0gdHJ1ZSkuICBUaGVzZSBlbnRyaWVzIHN1 cHByZXNzIHB1YmxpY2F0aW9uIG9mIHRoZQorICogbmFtZWQgdGFibGVzIHRoYXQgd291bGQgb3Ro ZXJ3aXNlIGJlIGNvdmVyZWQgYnkgYSBGT1IgVEFCTEVTIElOIFNDSEVNQQorICogY2xhdXNlLgor ICovCitzdGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKKwkJCQkJCQkgSGVhcFR1cGxlIHR1cCwgTGlzdCAqZXhj ZXB0X3B1YnRhYmxlcywKKwkJCQkJCQkgTGlzdCAqc2NoZW1haWRsaXN0KQoreworCUZvcm1fcGdf cHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVw KTsKKwlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKKworCS8qCisJICogTm90aGluZyB0byBk byBpZiBubyBFWENFUFQgZW50cmllcy4KKwkgKi8KKwlpZiAoIWV4Y2VwdF9wdWJ0YWJsZXMpCisJ CXJldHVybjsKKworCS8qCisJICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIEVYQ0VQVCBlbnRyaWVz IGZvciBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb25zCisJICogb25seS4gIEZvciBGT1IgQUxMIFRB QkxFUyBwdWJsaWNhdGlvbnMsIEVYQ0VQVCBlbnRyaWVzIGFyZSBhbHJlYWR5CisJICogcHJvY2Vz c2VkIGJ5IEFsdGVyUHVibGljYXRpb25UYWJsZXMoKS4KKwkgKi8KKwlpZiAoc2NoZW1haWRsaXN0 ID09IE5JTCAmJiAhaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSkKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBEcm9wcGluZyBhIHNjaGVtYSBmcm9tIGEgcHVibGljYXRpb24gcmVtb3ZlcyBhbGwg aXRzIEVYQ0VQVCBlbnRyaWVzIHZpYQorCSAqIGNhc2NhZGUuIFRoZSBjb25jZXB0IG9mICJkcm9w IGFsbCBzY2hlbWEgdGFibGVzIGZyb20gdGhlIHB1YmxpY2F0aW9uCisJICogRVhDRVBUIHRoZXNl IG9uZXMiIGlzIG5vdCBzdXBwb3J0ZWQuCisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9E cm9wT2JqZWN0cykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3Vw cG9ydGVkIHdpdGggRFJPUCBpbiBBTFRFUiBQVUJMSUNBVElPTiIpKSk7CisKKwkvKgorCSAqIFhY WCBFWENFUFQgd2l0aCBTRVQgaXMgbm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZC4gIFdvcmthcm91 bmQ6IERST1AgYW5kCisJICogcmUtQUREIHRoZSBzY2hlbWEgd2l0aCB0aGUgZGVzaXJlZCBFWENF UFQgbGlzdC4KKwkgKi8KKwlpZiAoc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIFNFVCBp biBBTFRFUiBQVUJMSUNBVElPTiIpLAorCQkJCSBlcnJoaW50KCJEcm9wIGFuZCByZS1hZGQgdGhl IHNjaGVtYSB3aXRoIHRoZSBkZXNpcmVkIEVYQ0VQVCBsaXN0LiIpKSk7CisKKwlpZiAoc3RtdC0+ YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCisJeworCQlMaXN0CSAgICpyZWxzOworCQlMaXN0CSAg ICpleHBsaWNpdHJlbGlkczsKKworCQlyZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVidGFi bGVzKTsKKworCQlleHBsaWNpdHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlv bnMocHViaWQsCisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJCS8q CisJCSAqIFZhbGlkYXRlIHRoYXQgZWFjaCBleGNsdWRlZCB0YWJsZSBpcyBub3QgYWxzbyBpbiB0 aGUgZXhwbGljaXQgdGFibGUKKwkJICogbGlzdCAod2hpY2ggd291bGQgYmUgY29udHJhZGljdG9y eSkuCisJCSAqLworCQlDaGVja0V4Y2VwdE5vdEluVGFibGVMaXN0KHJlbHMsIGV4cGxpY2l0cmVs aWRzKTsKKworCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQp OworCisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCX0KIH0KIAogLyoKQEAgLTE3OTUsMTAgKzE4 ODUsMTIgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlz dF9jb25jYXQocmVsYXRpb25zLCBleGNlcHRfcHVidGFibGVzKTsKKwkJaWYgKHN0bXQtPmZvcl9h bGxfdGFibGVzKQorCQkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25zLCBleGNlcHRf cHVidGFibGVzKTsKKwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRp b25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklM KTsKLQkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOwor CQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCwgZXhjZXB0 X3B1YnRhYmxlcyk7CiAJCUFsdGVyUHVibGljYXRpb25BbGxGbGFncyhzdG10LCByZWwsIHR1cCk7 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwppbmRleCBmNjdkYWY4NTkxMS4uMDA3YTFlYWRjYWEgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwpAQCAtNDk3Myw2ICs0OTczLDcgQEAgZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uU2NoZW1hSW5mbyAqcHVic2luZm8pCiAJUHVibGlj YXRpb25JbmZvICpwdWJpbmZvID0gcHVic2luZm8tPnB1YmxpY2F0aW9uOwogCVBRRXhwQnVmZmVy IHF1ZXJ5OwogCWNoYXIJICAgKnRhZzsKKwlib29sCQloYXNfZXhjZXB0ID0gZmFsc2U7CiAKIAkv KiBEbyBub3RoaW5nIGlmIG5vdCBkdW1waW5nIHNjaGVtYSAqLwogCWlmICghZG9wdC0+ZHVtcFNj aGVtYSkKQEAgLTQ5ODMsNyArNDk4NCwzNCBAQCBkdW1wUHVibGljYXRpb25OYW1lc3BhY2UoQXJj aGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25TY2hlbWFJbmZvICpwdWJzaW5mbykKIAlxdWVy eSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFM VEVSIFBVQkxJQ0FUSU9OICVzICIsIGZtdElkKHB1YmluZm8tPmRvYmoubmFtZSkpOwotCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUREIFRBQkxFUyBJTiBTQ0hFTUEgJXM7XG4iLCBmbXRJZChz Y2hlbWFpbmZvLT5kb2JqLm5hbWUpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFERCBU QUJMRVMgSU4gU0NIRU1BICVzIiwgZm10SWQoc2NoZW1haW5mby0+ZG9iai5uYW1lKSk7CisKKwkv KgorCSAqIEFwcGVuZCBFWENFUFQgY2xhdXNlIGZvciBhbnkgdGFibGVzIHRoYXQgYmVsb25nIHRv IHRoaXMgc2NoZW1hCisJICogYW5kIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4K KwkgKi8KKwlmb3IgKFNpbXBsZVB0ckxpc3RDZWxsICpjZWxsID0gcHViaW5mby0+ZXhjZXB0X3Rh Ymxlcy5oZWFkOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dCkKKwl7CisJCVRhYmxlSW5mbyAgKnRi aW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCWlmIChzdHJjbXAodGJpbmZvLT5k b2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLCBzY2hlbWFpbmZvLT5kb2JqLm5hbWUpID09IDApCisJ CXsKKwkJCWlmICghaGFzX2V4Y2VwdCkKKwkJCXsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiBFWENFUFQgKCIpOworCQkJCWhhc19leGNlcHQgPSB0cnVlOworCQkJfQorCQkJZWxz ZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCAiKTsKKworCQkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksICJUQUJMRSBPTkxZICVzIiwgZm10SWQodGJpbmZvLT5kb2JqLm5hbWUp KTsKKwkJfQorCX0KKworCWlmIChoYXNfZXhjZXB0KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIikiKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiO1xuIik7CiAKIAkv KgogCSAqIFRoZXJlIGlzIG5vIHBvaW50IGluIGNyZWF0aW5nIGRyb3AgcXVlcnkgYXMgdGhlIGRy b3AgaXMgZG9uZSBieSBzY2hlbWEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9w Z19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggOTI1ODk0 OGI1ODMuLmQxOGIzYjBkN2I5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMzI4Myw2 ICszMjgzLDMwIEBAIG15ICV0ZXN0cyA9ICgKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rp b25fcG9zdF9kYXRhID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTEn ID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFU RSBQVUJMSUNBVElPTiBwdWIxMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QgRVhDRVBU IChUQUJMRSB0ZXN0X3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVC TElDQVRJT04gcHViMTEgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0 cnVuY2F0ZScpO1xFCisJCQkuKj8KKwkJCVxRQUxURVIgUFVCTElDQVRJT04gcHViMTEgQUREIFRB QkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0IEVYQ0VQVCAoVEFCTEUgT05MWSB0ZXN0X3RhYmxlKTtc RQorCQkJL3htcywKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+ IDEsIH0sCisJfSwKKworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTInID0+IHsKKwkJY3JlYXRl X29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBw dWIxMiBGT1IgVEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0X3Rh YmxlLCBkdW1wX3Rlc3QudGVzdF9zZWNvbmRfdGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJ CQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBk YXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS4qPworCQkJXFFBTFRFUiBQVUJMSUNBVElP TiBwdWIxMiBBREQgVEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSBPTkxZ IHRlc3RfdGFibGUsIFRBQkxFIE9OTFkgdGVzdF9zZWNvbmRfdGFibGUpO1xFCisJCQkveG1zLAor CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAor CiAJJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAs CiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCmluZGV4IDVmZDRmODZjZTcwLi4xYjljYzkyNmQ4MSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwpAQCAtMjM1OSw2ICsyMzU5LDIzIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0 ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2No ZW1hcwogCQkJCQkJCQkgIiBBTkQgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLAogCQkJ CQkJCQkgIkNVUlJFTlRfU0NIRU1BIik7CisJLyogQWZ0ZXIgYSBzaW5nbGUgc2NoZW1hIG5hbWUg aW4gQUREIGNvbnRleHQsIG9mZmVyIEVYQ0VQVCAoIFRBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hl cygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4i LCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmCisJCQkgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQor CQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwgIlND SEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsK KwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQURE IiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJ CUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgIkNV UlJFTlRfU0NIRU1BIiwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhf UVVFUllfVkVSQkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX2N1cnJlbnRfc2NoZW1h KTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi QUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwg IlRBQkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOworCQlD T01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9z Y2hlbWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQ VCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykp CisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VU ICggKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCBNYXRjaEFueU4sICJTRVQiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNoIiwgInB1 Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMiLCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggYjQxMDRlODIy MGEuLmIxN2VhOTMzYjc2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dApAQCAtNjAwLDEyICs2MDAsNDIgQEAgRVJST1I6ICBjYW5ub3QgYWRkIHRhYmxlICJwdWJf dGVzdC50ZXN0cHViX3BhcnRfcyIgdG8gcHVibGljYXRpb24gInRlc3RwdWJfZXhjZXAKIERFVEFJ TDogIFBhcnRpdGlvbiBhbmNlc3RvciAicHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyIgb2YgdGFi bGUgInB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zIiBpcyBjdXJyZW50bHkgbGlzdGVkIGluIHRoZSBF WENFUFQgY2xhdXNlIG9mIHRoZSBwdWJsaWNhdGlvbi4KIEhJTlQ6ICBDaGFuZ2UgRVhDRVBUIGxp c3QgdXNpbmcgQUxURVIgUFVCTElDQVRJT04gLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIC4uLiBF WENFUFQuCiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2FuY2VzdG9yOworLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMg Zm9yIEFMVEVSIFBVQkxJQ0FUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdDsKKy0t IGZhaWw6IG5vbi1leGlzdGluZyB0YWJsZSBpbiBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlKTsKK0VSUk9SOiAgcmVsYXRp b24gInB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlIiBkb2VzIG5vdCBleGlzdAorLS0gZmFpbDog RVhDRVBUIHRhYmxlIGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQgc2NoZW1hCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKFRBQkxFIHB1YmxpYy50ZXN0cHViX3RibDEpOworRVJST1I6ICB0YWJsZSAicHVibGlj LnRlc3RwdWJfdGJsMSIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1h ICJwdWJfdGVzdCIKK0xJTkUgMTogLi4ueGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rl c3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbDogVEFCTEUga2V5 d29yZCBpcyByZXF1aXJlZCBmb3IgdGhlIGZpcnN0IGVudHJ5IGluIEVYQ0VQVCBjbGF1c2UKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0 IG9yIG5lYXIgInRlc3RwdWJfbm9wayIKK0xJTkUgMTogLi4ubHRlcl9leGNlcHQgQUREIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gQURE OiBxdWFsaWZpZWQgYW5kIHVucXVhbGlmaWVkIG5hbWVzOyB1bnF1YWxpZmllZCBpcyBpbXBsaWNp dGx5IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf YWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHRlc3RwdWJfdGJsX3MyKTsKK1xkUnArIHRlc3RwdWJf YWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJv b3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAg ICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRh YmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisgICAgInB1Yl90ZXN0LnRlc3Rw dWJfdGJsX3MyIgorCiAtLSBDbGVhbnVwCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJP UCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rlc3QudGVzdHB1Yl90YmxfczI7 CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgQ0FTQ0FERTsKIERST1AgVEFC TEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1 Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9zY2hlbWFf ZXhjZXB0X211bHRpOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0 ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGksIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0OwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAtLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbAppbmRleCAwMTNkNzI0OWIyNy4uMDQ4NjA5YmJjOTYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI5NywxMiArMjk3LDMwIEBAIENSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9hbmNlc3RvcgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9leGNlcHRfYW5jZXN0b3IgQUREIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zOwogRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9hbmNlc3RvcjsKIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIEFMVEVS IFBVQkxJQ0FUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdDsKKworLS0gZmFpbDog bm9uLWV4aXN0aW5nIHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAo VEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUpOworCistLSBmYWlsOiBFWENFUFQgdGFi bGUgYmVsb25ncyB0byBhIGRpZmZlcmVudCBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFC TEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CisKKy0tIGZhaWw6IFRBQkxFIGtleXdvcmQgaXMgcmVx dWlyZWQgZm9yIHRoZSBmaXJzdCBlbnRyeSBpbiBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKHRlc3RwdWJfbm9wayk7CisKKy0tIEFERDogcXVhbGlmaWVkIGFuZCB1bnF1YWxpZmll ZCBuYW1lczsgdW5xdWFsaWZpZWQgaXMgaW1wbGljaXRseSBxdWFsaWZpZWQgd2l0aCB0aGUgc2No ZW1hCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCB0 ZXN0cHViX3RibF9zMik7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCiAtLSBDbGVhbnVw CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3RibF9zMSwgcHViX3Rlc3QudGVzdHB1Yl90YmxfczI7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfcGFydGVkX3MgQ0FTQ0FERTsKIERST1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHVi X3RibF9zMTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1 Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpOworRFJPUCBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0 ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGksIHRlc3RwdWJfYWx0ZXJfZXhjZXB0OwogCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIFRlc3RzIGZvciBw dWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0 LnBsCmluZGV4IDE4YzdiMmMxZmNhLi4wYmE2ZDZmOGJiMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzdfZXhjZXB0LnBsCkBAIC0zNDcsNiArMzQ3LDM4IEBAIGlzKCRyZXN1bHQsIHFxKDUpLAog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElP TiBzY2hfc3ViJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJP UCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CiAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKyMgQUxURVIgUFVCTElDQVRJT04gRVhDRVBUIGZvciBUQUJMRVMg SU4gU0NIRU1BCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisKKyMgVHJ1bmNhdGUgc3Vic2NyaWJlciB0YWJsZXMgdG8gcmVtb3ZlIGRhdGEgYWNjdW11bGF0 ZWQgZnJvbSBwcmV2aW91cyB0ZXN0cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSdUUlVOQ0FURSBzY2gxLnRhYl9wdWJsaXNoZWQsIHNjaDEudGFiX2V4Y2x1ZGVk LCBzY2gxLnBhcmVudCwgc2NoMS5jaGlsZCcpOworCisjIEFERDogYWRkIGEgc2NoZW1hIHdpdGgg YW4gZXhjZXB0ZWQgdGFibGU7IHZlcmlmeSB0aGUgZXhjZXB0IGVudHJ5IHRha2VzIGVmZmVjdC4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgUFVCTElDQVRJ T04gc2NoX3B1YiIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki QUxURVIgUFVCTElDQVRJT04gc2NoX3B1YiBBREQgVEFCTEVTIElOIFNDSEVNQSBzY2gxIEVYQ0VQ VCAoVEFCTEUgc2NoMS50YWJfZXhjbHVkZWQpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHNjaF9zdWIgQ09OTkVDVElP TiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBzY2hfcHViIgorKTsKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3Nj aF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQiKTsKK2lz KCRyZXN1bHQsIHFxKDYpLAorCSdBTFRFUiAuLi4gQUREIFRBQkxFUyBJTiBTQ0hFTUEgRVhDRVBU OiBpbmNsdWRlZCB0YWJsZSBzeW5jZWQnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJf ZXhjbHVkZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdBTFRFUiAuLi4gQUREIFRBQkxFUyBJ TiBTQ0hFTUEgRVhDRVBUOiBleGNsdWRlZCB0YWJsZSBub3Qgc3luY2VkJyk7CisKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1 YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElD QVRJT04gc2NoX3B1YicpOworCiAjIENsZWFudXAgc2NoZW1hIHRhYmxlcyBiZWZvcmUgdGhlIG11 bHRpLXB1YmxpY2F0aW9uIHNlY3Rpb24uCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURFJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU0NIRU1BIHNjaDEgQ0FTQ0FERScpOwotLSAKMi41 MC4xIChBcHBsZSBHaXQtMTU1KQoK --000000000000568c980655b7a62b Content-Type: application/x-patch; name="v18-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABL.patch" Content-Disposition: attachment; filename="v18-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr55lisj2 RnJvbSA3M2VlZjgwNjE3YmUzNTNlNjAxYzkyZTU0MTAyNDM0YWYwY2JjOTI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUaHUsIDE4IEp1biAyMDI2IDExOjMyOjMyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MTggMy80XSBBZGQgRVhDRVBUIHN1cHBvcnQgdG8gQUxURVIgUFVCTElDQVRJT04gU0VUIFRBQkxF UyBJTgogU0NIRU1BCgpFeHRlbmQgQWx0ZXJQdWJsaWNhdGlvbkV4Y2VwdFRhYmxlcygpIHdpdGgg dGhlIEFQX1NldE9iamVjdHMgY2FzZSwKd2hpY2ggcmVkZWZpbmVzIHRoZSBwdWJsaWNhdGlvbiBh bmQgcmVwbGFjZXMgdGhlIGVudGlyZSBFWENFUFQgbGlzdC4KClN5bnRheDoKQUxURVIgUFVCTElD QVRJT04gcHViIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHMgRVhDRVBUIChUQUJMRSB0MSk7CgpUaGlz IHBhdGNoIGFsc28gY2xlYW5zIHVwIEVYQ0VQVCBlbnRyaWVzIHdoZW4gYSBzY2hlbWEgaXMgZHJv cHBlZApmcm9tIHRoZSBwdWJsaWNhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYyAgICB8IDE4MSArKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNyArKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgfCAxMDUgKysrKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgfCAgNDQgKysrKysrCiBzcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsICAgICB8ICA4NSArKysrKysrKysrCiA1IGZpbGVz IGNoYW5nZWQsIDQwNyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDU0MjU3OWRhZTg2Li40MjNkYmMxNTJlNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTY2LDcgKzY2LDggQEAg c3RhdGljIHZvaWQgQ2xvc2VUYWJsZUxpc3QoTGlzdCAqcmVscyk7CiBzdGF0aWMgdm9pZCBMb2Nr U2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRk VGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQkJCQkJ CQkgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwotc3RhdGljIHZvaWQgUHVibGljYXRpb25E cm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRp YyB2b2lkIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wg bWlzc2luZ19vaywKKwkJCQkJCQkJICBib29sIGRlbGV0ZV9leGNsdWRlZCk7CiBzdGF0aWMgdm9p ZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlm X25vdF9leGlzdHMsCiAJCQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogc3Rh dGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMs IGJvb2wgbWlzc2luZ19vayk7CkBAIC0xMzYwLDcgKzEzNjEsNyBAQCBBbHRlclB1YmxpY2F0aW9u VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJs aWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOwogCX0KIAllbHNlIGlm IChzdG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxl cyhwdWJpZCwgcmVscywgZmFsc2UpOworCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIHJl bHMsIGZhbHNlLCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7CiAJ CUxpc3QJICAgKm9sZHJlbGlkcyA9IE5JTDsKQEAgLTE0OTUsNyArMTQ5Niw3IEBAIEFsdGVyUHVi bGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAs CiAJCX0KIAogCQkvKiBBbmQgZHJvcCB0aGVtLiAqLwotCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMo cHViaWQsIGRlbHJlbHMsIHRydWUpOworCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIGRl bHJlbHMsIHRydWUsIHRydWUpOwogCiAJCS8qCiAJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGlu ZyB0aGUgZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKQEAgLTE1OTcsOCAr MTU5OCw4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LAogCiAJLyoKIAkgKiBJbmNyZW1lbnQgdGhlIGNvbW1hbmQgY291bnRlciBzbyB0aGF0IGlz X3NjaGVtYV9wdWJsaWNhdGlvbigpIGluCi0JICogR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxl cygpIGNhbiBzZWUgdGhlIGp1c3QtaW5zZXJ0ZWQgc2NoZW1hCi0JICogcm93cyB3aGVuIEFsdGVy UHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMgcnVucyBuZXh0LgorCSAqIEdldEV4Y2x1ZGVk UHVibGljYXRpb25UYWJsZXMoKSBjYW4gc2VlIHRoZSBqdXN0LWluc2VydGVkIHNjaGVtYSByb3dz CisJICogd2hlbiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0VGFibGVzIHJ1bnMgbmV4dC4K IAkgKi8KIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMgfHwgc3RtdC0+YWN0aW9u ID09IEFQX1NldE9iamVjdHMpCiAJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CkBAIC0xNjE2 LDE2ICsxNjE3LDE4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LAogICovCiBzdGF0aWMgdm9pZAogQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2Vw dFRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKLQkJCQkJCQkgSGVhcFR1cGxlIHR1 cCwgTGlzdCAqZXhjZXB0X3B1YnRhYmxlcywKLQkJCQkJCQkgTGlzdCAqc2NoZW1haWRsaXN0KQor CQkJCQkJCQkgICBIZWFwVHVwbGUgdHVwLCBMaXN0ICpleGNlcHRfcHVidGFibGVzLAorCQkJCQkJ CQkgICBMaXN0ICpzY2hlbWFpZGxpc3QpCiB7CiAJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3Jt ID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwogCU9pZAkJCXB1YmlkID0g cHViZm9ybS0+b2lkOwogCiAJLyoKLQkgKiBOb3RoaW5nIHRvIGRvIGlmIG5vIEVYQ0VQVCBlbnRy aWVzLgorCSAqIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIEVYQ0VQVCBlbnRyaWVzLCB1 bmxlc3MgaGFuZGxpbmcgdGhlIFNFVAorCSAqIGNvbW1hbmQsIGJlY2F1c2UgaWYgdGhlIHVzZXIg aGFzIHJlbW92ZWQgYWxsIGV4Y2VwdGlvbnMgd2UgbmVlZCB0byBkcm9wCisJICogYW55IGV4aXN0 aW5nIG9uZXMuCiAJICovCi0JaWYgKCFleGNlcHRfcHVidGFibGVzKQorCWlmICghZXhjZXB0X3B1 YnRhYmxlcyAmJiBzdG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCiAJ LyoKQEAgLTE2NDYsMTYgKzE2NDksNiBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0VGFi bGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJFWENFUFQgY2xhdXNlIGlzIG5vdCBz dXBwb3J0ZWQgd2l0aCBEUk9QIGluIEFMVEVSIFBVQkxJQ0FUSU9OIikpKTsKIAotCS8qCi0JICog WFhYIEVYQ0VQVCB3aXRoIFNFVCBpcyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkLiAgV29ya2Fy b3VuZDogRFJPUCBhbmQKLQkgKiByZS1BREQgdGhlIHNjaGVtYSB3aXRoIHRoZSBkZXNpcmVkIEVY Q0VQVCBsaXN0LgotCSAqLwotCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykKLQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCi0JCQkJIGVycm1zZygiRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggU0VU IGluIEFMVEVSIFBVQkxJQ0FUSU9OIiksCi0JCQkJIGVycmhpbnQoIkRyb3AgYW5kIHJlLWFkZCB0 aGUgc2NoZW1hIHdpdGggdGhlIGRlc2lyZWQgRVhDRVBUIGxpc3QuIikpKTsKLQogCWlmIChzdG10 LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cykKIAl7CiAJCUxpc3QJICAgKnJlbHM7CkBAIC0xNjc0 LDYgKzE2NjcsNzUgQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAogCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVs cywgZmFsc2UsIHN0bXQpOwogCisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCX0KKwllbHNlCQkJ CQkJLyogQVBfU2V0T2JqZWN0cyAqLworCXsKKwkJTGlzdAkgICAqb2xkZXhjZXB0cmVsaWRzID0g TklMOworCQlMaXN0CSAgICpuZXdleGNlcHRyZWxpZHMgPSBOSUw7CisJCUxpc3QJICAgKmRlbHJl bGlkcyA9IE5JTDsKKwkJTGlzdAkgICAqcmVsczsKKwkJTGlzdAkgICAqZXhwbGljaXRyZWxpZHM7 CisKKwkJcmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0X3B1YnRhYmxlcyk7CisKKwkJLyogQ29s bGVjdCBPSURzIG9mIHRoZSBkZXNpcmVkIG5ldyBFWENFUFQgbGlzdC4gKi8KKwkJZm9yZWFjaF9w dHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIHJlbHMpCisJCQluZXdleGNlcHRyZWxpZHMgPSBs YXBwZW5kX29pZChuZXdleGNlcHRyZWxpZHMsCisJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlk KHByaS0+cmVsYXRpb24pKTsKKworCQlleHBsaWNpdHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGlj YXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JP T1QpOworCisJCS8qCisJCSAqIFZhbGlkYXRlIHRoYXQgZWFjaCBleGNsdWRlZCB0YWJsZSBpcyBu b3QgYWxzbyBpbiB0aGUgZXhwbGljaXQgdGFibGUKKwkJICogbGlzdCAod2hpY2ggd291bGQgYmUg Y29udHJhZGljdG9yeSkuCisJCSAqLworCQlDaGVja0V4Y2VwdE5vdEluVGFibGVMaXN0KHJlbHMs IGV4cGxpY2l0cmVsaWRzKTsKKworCQkvKgorCQkgKiBHZXQgdGhlIGN1cnJlbnQgc2V0IG9mIEVY Q0VQVCBlbnRyaWVzLiAgT25seSBGT1IgQUxMIFRBQkxFUyBhbmQKKwkJICogc2NoZW1hLWxldmVs IHB1YmxpY2F0aW9ucyBjYW4gaGF2ZSBFWENFUFQgZW50cmllczsgZm9yIGFueSBvdGhlcgorCQkg KiBwdWJsaWNhdGlvbiB0eXBlIG9sZGV4Y2VwdHJlbGlkcyBzdGF5cyBOSUwuCisJCSAqCisJCSAq IE5vdGU6IHdlIGNoZWNrIGlzX3NjaGVtYV9wdWJsaWNhdGlvbigpIGFnYWluc3QgdGhlIGN1cnJl bnQgY2F0YWxvZworCQkgKiBzdGF0ZSAoYmVmb3JlIEFsdGVyUHVibGljYXRpb25TY2hlbWFzIGhh cyBydW4pLCBzbyBpZiB0aGUgY2FsbGVyIGlzCisJCSAqIGRvaW5nIFNFVCBUQUJMRSB0MSB0byBj b252ZXJ0IGEgc2NoZW1hIHB1YmxpY2F0aW9uIGludG8gYSBwbGFpbgorCQkgKiB0YWJsZSBwdWJs aWNhdGlvbiwgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgc3RpbGwgcmV0dXJucyB0cnVlIGhlcmUu CisJCSAqIFRoYXQgaXMgaW50ZW50aW9uYWw6IGl0IGxldHMgdXMgZGlzY292ZXIgYW5kIGNsZWFu IHVwIGFueSBzdGFsZQorCQkgKiBFWENFUFQgZW50cmllcyB0aGF0IGJlbG9uZyB0byB0aGUgb2xk IHNjaGVtYSBkZWZpbml0aW9uLgorCQkgKi8KKwkJaWYgKEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+ YWxsdGFibGVzIHx8IGlzX3NjaGVtYV9wdWJsaWNhdGlvbihwdWJpZCkpCisJCQlvbGRleGNlcHRy ZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLAorCQkJCQkJCQkJCQkJ CQkgICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJCS8qIEJ1aWxkIGEgbGlzdCBvZiBvbGQg RVhDRVBUIGVudHJpZXMgbm90IHByZXNlbnQgaW4gdGhlIG5ldyBsaXN0LiAqLworCQlmb3JlYWNo X29pZChvbGRyZWxpZCwgb2xkZXhjZXB0cmVsaWRzKQorCQl7CisJCQlpZiAoIWxpc3RfbWVtYmVy X29pZChuZXdleGNlcHRyZWxpZHMsIG9sZHJlbGlkKSkKKwkJCQlkZWxyZWxpZHMgPSBsYXBwZW5k X29pZChkZWxyZWxpZHMsIG9sZHJlbGlkKTsKKwkJfQorCisJCS8qIERyb3Agb2xkIEVYQ0VQVCBl bnRyaWVzIG5vdCBwcmVzZW50IGluIHRoZSBuZXcgbGlzdC4gKi8KKwkJZm9yZWFjaF9vaWQocmVs aWQsIGRlbHJlbGlkcykKKwkJeworCQkJT2lkCQkJcHJvaWQ7CisJCQlPYmplY3RBZGRyZXNzIG9i ajsKKworCQkJcHJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJ CQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9vaWQsCisJCQkJCQkJCQlPYmplY3RJZEdldERh dHVtKHJlbGlkKSwKKwkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwkJCWlmIChP aWRJc1ZhbGlkKHByb2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzU2V0KG9iaiwgUHVibGlj YXRpb25SZWxSZWxhdGlvbklkLCBwcm9pZCk7CisJCQkJcGVyZm9ybURlbGV0aW9uKCZvYmosIERS T1BfQ0FTQ0FERSwgMCk7CisJCQl9CisJCX0KKworCQkvKiBBZGQgbmV3IEVYQ0VQVCBlbnRyaWVz LCBza2lwcGluZyBhbnkgYWxyZWFkeSBwcmVzZW50LiAqLworCQlQdWJsaWNhdGlvbkFkZFRhYmxl cyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CisKIAkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CiAJ fQogfQpAQCAtMjI5NywzMyArMjM1OSw2OSBAQCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHVi aWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAogLyoKICAqIFJlbW92ZSBsaXN0 ZWQgdGFibGVzIGZyb20gdGhlIHB1YmxpY2F0aW9uLgorICoKKyAqIGRlbGV0ZV9leGNsdWRlZCBj b250cm9scyBob3cgRVhDRVBUIChwcmV4Y2VwdD10cnVlKSByb3dzIGFyZSBoYW5kbGVkOgorICog ICB0cnVlICAtIGRlbGV0ZSB0aGVtIHNpbGVudGx5LiAgVXNlZCBieSB0aGUgU0VUIHBhdGggdG8g Y2xlYXIgc3RhbGUKKyAqICAgICAgICAgICBFWENFUFQgcm93cyB0aGF0IGFyZSBiZWluZyByZXBs YWNlZCBieSBhIG5ldyBFWENFUFQgbGlzdC4KKyAqICAgZmFsc2UgLSB0cmVhdCB0aGVtIGFzICJu b3QgYSBtZW1iZXIiLiBVc2VkIGJ5IEFMVEVSIC4uLiBEUk9QIFRBQkxFOiBhbgorICogICAgICAg ICAgIEVYQ0VQVCBlbnRyeSBpcyBub3Qgc29tZXRoaW5nIERST1AgVEFCTEUgaXMgZXhwZWN0ZWQg dG8gcmVtb3ZlLgogICovCiBzdGF0aWMgdm9pZAotUHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBw dWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKQorUHVibGljYXRpb25Ecm9wVGFibGVz KE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rLAorCQkJCQkgIGJvb2wgZGVs ZXRlX2V4Y2x1ZGVkKQogewogCU9iamVjdEFkZHJlc3Mgb2JqOwogCUxpc3RDZWxsICAgKmxjOwot CU9pZAkJCXByaWQ7CiAKIAlmb3JlYWNoKGxjLCByZWxzKQogCXsKIAkJUHVibGljYXRpb25SZWxJ bmZvICpwdWJyZWwgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxmaXJzdChsYyk7CiAJCVJlbGF0 aW9uCXJlbCA9IHB1YnJlbC0+cmVsYXRpb247CiAJCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRS ZWxpZChyZWwpOworCQlIZWFwVHVwbGUJdHVwOworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBw dWJyZWxmb3JtOworCQlPaWQJCQlwcmlkID0gSW52YWxpZE9pZDsKKwkJYm9vbAkJaXNfZXhjZXB0 ID0gZmFsc2U7CiAKIAkJaWYgKHB1YnJlbC0+Y29sdW1ucykKIAkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQllcnJtc2coImNvbHVtbiBs aXN0IG11c3Qgbm90IGJlIHNwZWNpZmllZCBpbiBBTFRFUiBQVUJMSUNBVElPTiAuLi4gRFJPUCIp KTsKIAotCQlwcmlkID0gR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OUkVMTUFQLCBBbnVtX3Bn X3B1YmxpY2F0aW9uX3JlbF9vaWQsCi0JCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCks Ci0JCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOwotCQlpZiAoIU9pZElzVmFsaWQo cHJpZCkpCisJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShw dWJpZCkpOworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQl7CisJCQlwdWJyZWxmb3Jt ID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJCWlzX2V4Y2Vw dCA9IHB1YnJlbGZvcm0tPnByZXhjZXB0OworCQkJcHJpZCA9IHB1YnJlbGZvcm0tPm9pZDsKKwkJ CVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQl9CisKKwkJLyoKKwkJICogRFJPUCBUQUJMRSBvcGVy YXRlcyBvbmx5IG9uIHJlZ3VsYXIgbWVtYmVyIHJvd3MuICBBIG1pc3Npbmcgcm93CisJCSAqIGFu ZCBhbiBFWENFUFQgcm93IGJvdGggbWVhbiB0aGUgdGFibGUgaXNuJ3QgY3VycmVudGx5IHB1Ymxp c2hlZCwKKwkJICogYnV0IHdlIGRpc3Rpbmd1aXNoIHRoZW0gc28gdGhlIEVYQ0VQVCBjYXNlIGNh biBjYXJyeSBhIGhpbnQKKwkJICogcG9pbnRpbmcgdGhlIHVzZXIgYXQgdGhlIEVYQ0VQVCBsaXN0 LiAgVGhlIFNFVC1jbGVhbnVwIGNhbGxlcgorCQkgKiAoZGVsZXRlX2V4Y2x1ZGVkID0gdHJ1ZSkg aW50ZW5kcyB0byByZW1vdmUgRVhDRVBUIHJvd3MgYW5kIHNvCisJCSAqIGJ5cGFzc2VzIHRoZSBF WENFUFQgaGFsZiBvZiB0aGlzIGNoZWNrLgorCQkgKi8KKwkJaWYgKCFPaWRJc1ZhbGlkKHByaWQp IHx8IChpc19leGNlcHQgJiYgIWRlbGV0ZV9leGNsdWRlZCkpCiAJCXsKIAkJCWlmIChtaXNzaW5n X29rKQogCQkJCWNvbnRpbnVlOwogCisJCQlpZiAoaXNfZXhjZXB0KQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkJIGVy cm1zZygiY2Fubm90IGRyb3AgdGFibGUgXCIlc1wiIGZyb20gcHVibGljYXRpb24gXCIlc1wiIiwK KwkJCQkJCQkJUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5hbWUocmVsKSwKKwkJCQkJCQkJ Z2V0X3B1YmxpY2F0aW9uX25hbWUocHViaWQsIGZhbHNlKSksCisJCQkJCQkgZXJyZGV0YWlsKCJU YWJsZSBcIiVzXCIgaXMgY3VycmVudGx5IGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiB0 aGUgcHVibGljYXRpb24uIiwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlv bk5hbWUocmVsKSksCisJCQkJCQkgZXJyaGludCgiQ2hhbmdlIEVYQ0VQVCBsaXN0IHVzaW5nIEFM VEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgVEFCTEVTIElOIFNDSEVNQSAuLi4gRVhDRVBULiIpKSk7 CisKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09C SkVDVCksCiAJCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBub3QgcGFydCBvZiB0aGUg cHVibGljYXRpb24iLApAQCAtMjM3OSw2ICsyNDc3LDcgQEAgUHVibGljYXRpb25Ecm9wU2NoZW1h cyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vaykKIAlmb3JlYWNoKGxj LCBzY2hlbWFzKQogCXsKIAkJT2lkCQkJc2NoZW1haWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJTGlz dAkgICAqZXhjZXB0X3JlbGlkczsKIAogCQlwc2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FU SU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCSAgIEFudW1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNl X29pZCwKQEAgLTIzOTUsOCArMjQ5NCw0MCBAQCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBw dWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKQogCQkJCQkJCWdldF9uYW1lc3Bh Y2VfbmFtZShzY2hlbWFpZCkpKSk7CiAJCX0KIAorCQkvKgorCQkgKiBDb2xsZWN0IEVYQ0VQVCBl bnRyaWVzIGZvciB0YWJsZXMgYmVsb25naW5nIHRvIHRoaXMgc2NoZW1hIGJlZm9yZQorCQkgKiBy ZW1vdmluZyB0aGUgc2NoZW1hIGVudHJ5LgorCQkgKi8KKwkJZXhjZXB0X3JlbGlkcyA9IEdldEV4 Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisK IAkJT2JqZWN0QWRkcmVzc1NldChvYmosIFB1YmxpY2F0aW9uTmFtZXNwYWNlUmVsYXRpb25JZCwg cHNpZCk7CiAJCXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9QX0NBU0NBREUsIDApOworCisJCS8q CisJCSAqIERyb3AgYW55IHByZXhjZXB0IHJvd3MgZm9yIHRhYmxlcyBiZWxvbmdpbmcgdG8gdGhp cyBzY2hlbWEuIFRoZXNlCisJCSAqIHJvd3MgaGF2ZSBubyBwZ19kZXBlbmQgZW50cnkgcG9pbnRp bmcgYXQgdGhlCisJCSAqIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSByb3csIHNvIHRoZXkgYXJl IG5vdCBjYXNjYWRlZCBieSB0aGUKKwkJICogcGVyZm9ybURlbGV0aW9uKCkgY2FsbCBhYm92ZSBh bmQgbXVzdCBiZSBjbGVhbmVkIHVwIGV4cGxpY2l0bHkuCisJCSAqLworCQlmb3JlYWNoX29pZChy ZWxpZCwgZXhjZXB0X3JlbGlkcykKKwkJeworCQkJT2lkCQkJcHJvaWQ7CisKKwkJCWlmIChnZXRf cmVsX25hbWVzcGFjZShyZWxpZCkgIT0gc2NoZW1haWQpCisJCQkJY29udGludWU7CisKKwkJCXBy b2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkJQW51bV9w Z19wdWJsaWNhdGlvbl9yZWxfb2lkLAorCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCks CisJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJCQlpZiAoT2lkSXNWYWxpZChw cm9pZCkpCisJCQl7CisJCQkJT2JqZWN0QWRkcmVzc1NldChvYmosIFB1YmxpY2F0aW9uUmVsUmVs YXRpb25JZCwgcHJvaWQpOworCQkJCXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9QX0NBU0NBREUs IDApOworCQkJfQorCQl9CisKKwkJbGlzdF9mcmVlKGV4Y2VwdF9yZWxpZHMpOwogCX0KIH0KIApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDFiOWNjOTI2ZDgxLi43ZTc2OTYzOGFjZCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwpAQCAtMjM3Niw2ICsyMzc2LDIzIEBAIG1hdGNoX3ByZXZpb3VzX3dv cmRzKGludCBwYXR0ZXJuX2lkLAogCX0KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRj aEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHBy ZXZfd2QsICcsJykpCiAJCUNPTVBMRVRFX1dJVEgoIikiKTsKKwkvKiBBZnRlciBhIHNpbmdsZSBz Y2hlbWEgbmFtZSBpbiBTRVQgY29udGV4dCwgb2ZmZXIgRVhDRVBUICggVEFCTEUgKi8KKwllbHNl IGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIlRB QkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgJiYKKwkJCSAhZW5kc193aXRoKHByZXZf d2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCAoIFRBQkxFIik7CisJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJUQUJMRVMi LCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgi KCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBU IiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJT Q0hFTUEiLCAiQ1VSUkVOVF9TQ0hFTUEiLCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiKSkKKwkJQ09N UExFVEVfV0lUSF9RVUVSWV9WRVJCQVRJTShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNfaW5fY3Vy cmVudF9zY2hlbWEpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhD RVBUIiwgIigiLCAiVEFCTEUiKSkKKwl7CisJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2 NF93ZCk7CisJCUNPTVBMRVRFX1dJVEhfUVVFUllfVkVSQkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2Zf dGFibGVzX2luX3NjaGVtYSk7CisJfQorCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNo QW55LCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJl dl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgiKSIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9O IDxuYW1lPiBTRVQgKCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksIE1hdGNoQW55TiwgIlNFVCIsICIoIikpCiAJCUNPTVBMRVRFX1dJVEgoInB1 Ymxpc2giLCAicHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucyIsICJwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNh dGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRl eCBiMTdlYTkzM2I3Ni4uOTg0MTU5NjU3ZjYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0CkBAIC02MzAsNiArNjMwLDExMSBAQCBFeGNlcHQgdGFibGVzOgogICAg ICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKICAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczIi CiAKKy0tIFNFVDogcmVwbGFjZSB0aGUgZXhjZXB0IGxpc3QgKGtlZXAgc2FtZSBzY2hlbWEsIGRp ZmZlcmVudCBleGNlcHQgdGFibGUpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4 Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0 LnRlc3RwdWJfdGJsX3MyKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNj aGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVz dHB1Yl90YmxfczIiCisKKy0tIGZhaWw6IHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UgYWxzbyBhcHBl YXJzIGluIHRoZSBleHBsaWNpdCB0YWJsZSBsaXN0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7 CitFUlJPUjogIHRhYmxlICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIgY2Fubm90IGFwcGVhciBp biBib3RoIHRoZSB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZQorLS0gZXJyb3I6IGV4 Y2VwdCB0YWJsZSdzIHNjaGVtYSAocHVibGljKSBub3QgaW4gdGhlIHB1YmxpY2F0aW9uJ3Mgc2No ZW1hIGxpc3QgKHB1Yl90ZXN0KQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNl cHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVz dHB1Yl90YmwxKTsKK0VSUk9SOiAgdGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiIGluIEVYQ0VQ VCBjbGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSAicHViX3Rlc3QiCitMSU5FIDE6IC4u LnhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGlj LnRlcy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIFNFVDogdW5xdWFsaWZpZWQgbmFtZSBpbiBFWENFUFQgaXMgaW1w bGljaXRseSBxdWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9t IHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3Qu dGVzdHB1Yl90YmxfczEiCisKKy0tIFNFVCB3aXRob3V0IEVYQ0VQVCBjbGVhcnMgdGhlIGV4aXN0 aW5nIGV4Y2VwdCBsaXN0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBT RVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1Rh YmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorCistLSBTRVQgdG8gYSBkaWZmZXJl bnQgc2NoZW1hIHJlbW92ZXMgb2xkIHNjaGVtYSdzIEVYQ0VQVCBlbnRyaWVzCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsX3MxKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKK1xkUnArIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1YmxpYyIKKworLS0gZmFp bDogbm9uZXhpc3RlbnQgdGFibGUgaW4gRVhDRVBUIGNsYXVzZSAoU0VUIHBhdGgpCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlKTsKK0VSUk9SOiAg cmVsYXRpb24gInB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlIiBkb2VzIG5vdCBleGlzdAorLS0g U0VUOiBtdWx0aXBsZSBzY2hlbWFzIGVhY2ggd2l0aCB0aGVpciBvd24gRVhDRVBUIGNsYXVzZQor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHVibGljIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorICAgICJw dWJsaWMiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKKyAg ICAicHVibGljLnRlc3RwdWJfdGJsMSIKKworLS0gZXJyb3I6IEFMVEVSIFBVQkxJQ0FUSU9OIC4u LiBEUk9QIFRBQkxFIG9uIGFuIGV4Y2x1ZGVkIHRhYmxlIGlzIHJlamVjdGVkCistLSB3aXRoIGFu IEVYQ0VQVC1zcGVjaWZpYyBlcnJvcjsgYW4gRVhDRVBUIGVudHJ5IGlzIG5vdCBhIG1lbWJlci4K K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl90YmxfczE7CitFUlJPUjogIGNhbm5vdCBkcm9wIHRhYmxlICJwdWJfdGVzdC50 ZXN0cHViX3RibF9zMSIgZnJvbSBwdWJsaWNhdGlvbiAidGVzdHB1Yl9hbHRlcl9leGNlcHQiCitE RVRBSUw6ICBUYWJsZSAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiIGlzIGN1cnJlbnRseSBsaXN0 ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2YgdGhlIHB1YmxpY2F0aW9uLgorSElOVDogIENoYW5n ZSBFWENFUFQgbGlzdCB1c2luZyBBTFRFUiBQVUJMSUNBVElPTiAuLi4gU0VUIFRBQkxFUyBJTiBT Q0hFTUEgLi4uIEVYQ0VQVC4KKy0tIHRoZSBFWENFUFQgZW50cnkgaXMgc3RpbGwgcHJlc2VudCBh ZnRlciB0aGUgcmVqZWN0ZWQgRFJPUCBUQUJMRQorXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0 aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFi bGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCisgICAgInB1YmxpYyIKK0V4Y2VwdCB0 YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIgorICAgICJwdWJsaWMudGVzdHB1 Yl90YmwxIgorCistLSBlcnJvcjogRVhDRVBUIGlzIG5vdCBhbGxvd2VkIHdpdGggRFJPUAorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIpOworRVJST1I6 ICBFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBEUk9QIGluIEFMVEVSIFBVQkxJ Q0FUSU9OCistLSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcmVtb3ZlcyBhc3NvY2lhdGVkIEVYQ0VQ VCBlbnRyaWVzCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBEUk9QIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMg ZnJvbSBzY2hlbWFzOgorICAgICJwdWJsaWMiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMu dGVzdHB1Yl90YmwxIgorCiAtLSBDbGVhbnVwCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwog RFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rlc3QudGVzdHB1Yl90Ymxf czI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggMDQ4NjA5YmJjOTYuLjVj MTc0YTU4ZGY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0zMTUsNiAr MzE1LDUwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCB0ZXN0cHViX3RibF9zMik7CiBcZFJwKyB0ZXN0 cHViX2FsdGVyX2V4Y2VwdAogCistLSBTRVQ6IHJlcGxhY2UgdGhlIGV4Y2VwdCBsaXN0IChrZWVw IHNhbWUgc2NoZW1hLCBkaWZmZXJlbnQgZXhjZXB0IHRhYmxlKQorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBU IChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMik7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4 Y2VwdAorCistLSBmYWlsOiB0YWJsZSBpbiBFWENFUFQgY2xhdXNlIGFsc28gYXBwZWFycyBpbiB0 aGUgZXhwbGljaXQgdGFibGUgbGlzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9l eGNlcHQgU0VUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworCistLSBl cnJvcjogZXhjZXB0IHRhYmxlJ3Mgc2NoZW1hIChwdWJsaWMpIG5vdCBpbiB0aGUgcHVibGljYXRp b24ncyBzY2hlbWEgbGlzdCAocHViX3Rlc3QpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Fs dGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1 YmxpYy50ZXN0cHViX3RibDEpOworCistLSBTRVQ6IHVucXVhbGlmaWVkIG5hbWUgaW4gRVhDRVBU IGlzIGltcGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggdGhlIHNjaGVtYQorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhD RVBUIChUQUJMRSB0ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAor CistLSBTRVQgd2l0aG91dCBFWENFUFQgY2xlYXJzIHRoZSBleGlzdGluZyBleGNlcHQgbGlzdAor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCistLSBTRVQgdG8gYSBk aWZmZXJlbnQgc2NoZW1hIHJlbW92ZXMgb2xkIHNjaGVtYSdzIEVYQ0VQVCBlbnRyaWVzCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBw dWJfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsX3MxKTsKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKK1xkUnAr IHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisKKy0tIGZhaWw6IG5vbmV4aXN0ZW50IHRhYmxlIGluIEVY Q0VQVCBjbGF1c2UgKFNFVCBwYXRoKQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9l eGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVz dC5ub25leGlzdGVudF90YWJsZSk7CisKKy0tIFNFVDogbXVsdGlwbGUgc2NoZW1hcyBlYWNoIHdp dGggdGhlaXIgb3duIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0 ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl90YmxfczEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBFWENFUFQgKFRBQkxF IHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCistLSBlcnJvcjog QUxURVIgUFVCTElDQVRJT04gLi4uIERST1AgVEFCTEUgb24gYW4gZXhjbHVkZWQgdGFibGUgaXMg cmVqZWN0ZWQKKy0tIHdpdGggYW4gRVhDRVBULXNwZWNpZmljIGVycm9yOyBhbiBFWENFUFQgZW50 cnkgaXMgbm90IGEgbWVtYmVyLgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNl cHQgRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMTsKKy0tIHRoZSBFWENFUFQgZW50 cnkgaXMgc3RpbGwgcHJlc2VudCBhZnRlciB0aGUgcmVqZWN0ZWQgRFJPUCBUQUJMRQorXGRScCsg dGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gZXJyb3I6IEVYQ0VQVCBpcyBub3QgYWxsb3dlZCB3 aXRoIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1AgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MyKTsKKworLS0gRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHJlbW92ZXMgYXNzb2NpYXRlZCBFWENF UFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKwog LS0gQ2xlYW51cAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzN19leGNlcHQucGwKaW5kZXggMGJhNmQ2ZjhiYjIuLjAxZWFmYjViN2M4IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCisrKyBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKQEAgLTM3Niw2ICszNzYsNjEgQEAgJHJl c3VsdCA9CiBpcygkcmVzdWx0LCBxcSgwKSwKIAknQUxURVIgLi4uIEFERCBUQUJMRVMgSU4gU0NI RU1BIEVYQ0VQVDogZXhjbHVkZWQgdGFibGUgbm90IHN5bmNlZCcpOwogCisjIFNFVDogcmVwbGFj ZSB0aGUgZXhjZXB0IGxpc3Q7IHRhYl9leGNsdWRlZCBpcyBub3cgaW5jbHVkZWQgYW5kIHRhYl9w dWJsaXNoZWQgaXMgZXhjbHVkZWQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiBzY2hfcHViIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHNj aDEgRVhDRVBUIChUQUJMRSBzY2gxLnRhYl9wdWJsaXNoZWQpIgorKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gc2NoX3N1YiBS RUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3Jp cHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHNjaDEudGFiX3B1 Ymxpc2hlZCBWQUxVRVMgKDcpOworCUlOU0VSVCBJTlRPIHNjaDEudGFiX2V4Y2x1ZGVkIFZBTFVF UyAoNyk7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2NoX3N1Yicp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIFdIRVJFIGEgPSA3Iik7 CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIEVY Q0VQVDogbmV3bHkgaW5jbHVkZWQgdGFibGUgaXMgcmVwbGljYXRlZCcKKyk7CiskcmVzdWx0ID0K KyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCBXSEVSRSBhID0gNyIpOworaXMoJHJlc3VsdCwg cXEoMCksCisJJ0FMVEVSIC4uLiBTRVQgVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IG5vdy1leGNs dWRlZCB0YWJsZSBpcyBub3QgcmVwbGljYXRlZCcKKyk7CisKKyMgU0VUIHdpdGhvdXQgRVhDRVBU OiBjbGVhcnMgdGhlIGV4Y2VwdCBsaXN0OyBib3RoIHRhYmxlcyBhcmUgbm93IHB1Ymxpc2hlZC4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FU SU9OIHNjaF9wdWIgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSIpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiBzY2hfc3ViIFJF RlJFU0ggUFVCTElDQVRJT04iKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlw dGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gc2NoMS50YWJfcHVi bGlzaGVkIFZBTFVFUyAoOCk7CisJSU5TRVJUIElOVE8gc2NoMS50YWJfZXhjbHVkZWQgVkFMVUVT ICg4KTsKKykpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzY2hfc3ViJyk7 CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfcHVibGlzaGVkIFdIRVJFIGEgPSA4Iik7 CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIChu byBFWENFUFQpOiB0YWJfcHVibGlzaGVkIHJlcGxpY2F0ZWQgYWZ0ZXIgZXhjZXB0IGxpc3QgY2xl YXJlZCcKKyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIFdIRVJFIGEg PSA4Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NI RU1BIChubyBFWENFUFQpOiB0YWJfZXhjbHVkZWQgcmVwbGljYXRlZCBhZnRlciBleGNlcHQgbGlz dCBjbGVhcmVkJworKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CiAKQEAgLTQ0Myw2ICs0 OTgsMzYgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNV QlNDUklQVElPTiB0YXBfc3ViJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMScpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjInKTsKIAorIyBPSyB3 aGVuIGEgdGFibGUgaXMgZXhjbHVkZWQgYnkgYSBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVCBwdWJs aWNhdGlvbiwKKyMgYnV0IGlzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcHVibGljYXRpb24uCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgdGFiMScpOworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSB0YWIxJyk7CisK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWMgRVhDRVBUIChU QUJMRSBwdWJsaWMudGFiMSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBUQUJM RSB0YWIxOworCUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVTKDEpOworKSk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05O RUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHVi MiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9k ZV9wdWJsaXNoZXIsICd0YXBfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxKElOU0VSVCBJTlRPIHRhYjEgVkFMVUVTKDIpKSk7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0YWIxIE9SREVS IEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyKSwKKwkiVEFCTEVTIElOIFNDSEVNQSBFWENF UFQ6IHRhYmxlIGV4Y2x1ZGVkIGluIHNjaGVtYSBwdWIgYnV0IGluY2x1ZGVkIGJ5IGFub3RoZXIg cHViIGlzIHJlcGxpY2F0ZWQiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIxJyk7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBf cHViMicpOworCiAkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKIAogZG9uZV90ZXN0aW5n KCk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000568c980655b7a62b Content-Type: application/x-patch; name="v18-0004-Documentation-Patch.patch" Content-Disposition: attachment; filename="v18-0004-Documentation-Patch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr55ll5i3 RnJvbSA2ZmQzZGRjMGQzNmI3MjJjYjgzMzEzNjIwNTMxZjM5MDllYWUxNDBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUaHUsIDE4IEp1biAyMDI2IDA5OjAzOjA4ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MTggNC80XSBEb2N1bWVudGF0aW9uIFBhdGNoCgotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgICAgfCAgMyArLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNh dGlvbi5zZ21sICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrLQogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCB8IDQwICsrKysrKysrKysrKy0tLS0KIDMgZmlsZXMg Y2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dp Y2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggZjIxMjM5YWY2YjguLmM5OTE4Nzg4YzdmIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExNyw3ICsxMTcsOCBAQAogICAg b3IgPGxpdGVyYWw+Rk9SIEFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBVbmxpa2UgdGFibGVzLCBz ZXF1ZW5jZXMgY2FuIGJlCiAgICBzeW5jaHJvbml6ZWQgYXQgYW55IHRpbWUuIEZvciBtb3JlIGlu Zm9ybWF0aW9uLCBzZWUKICAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2Vx dWVuY2VzIi8+LiBXaGVuIGEgcHVibGljYXRpb24gaXMKLSAgIGNyZWF0ZWQgd2l0aCA8bGl0ZXJh bD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIGEgdGFibGUgb3Igc2V0IG9mIHRhYmxlcyBjYW4K KyAgIGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IKKyAg IDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgYSB0YWJsZSBvciBzZXQg b2YgdGFibGVzIGNhbgogICAgYmUgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9u IHVzaW5nIHRoZQogICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFt cy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+PC9saW5rPgogICAg Y2xhdXNlLgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDUyMTE0 YTE2YTM5Li4wMzdkZGZhOTQwNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w dWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24u c2dtbApAQCAtMzEsNyArMzEsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogPHBocmFzZT53 aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9y ZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0KLSAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCisg ICAgVEFCTEVTIElOIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVz X2luX3NjaGVtYTwvcmVwbGFjZWFibGU+IFssIC4uLiBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0PC9yZXBsYWNlYWJs ZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC00Nyw2ICs0NywxMCBAQCBBTFRFUiBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJF TkFNRSBUTyA8cgogCiAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX29i amVjdDwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdCiAKKzxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZXNfaW5fc2NoZW1hPC9y ZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbIEVY Q0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9w aHJhc2U+CiAKICAgICBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf b2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KQEAgLTY5LDYgKzczLDkgQEAgQUxURVIgUFVC TElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PiBSRU5BTUUgVE8gPHIKICAgIFRoZSBmaXJzdCB0d28gdmFyaWFudHMgbW9kaWZ5IHdoaWNoIHRh Ymxlcy9zY2hlbWFzIGFyZSBwYXJ0IG9mIHRoZQogICAgcHVibGljYXRpb24uIFRoZSA8bGl0ZXJh bD5BREQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5EUk9QPC9saXRlcmFsPiBjbGF1c2VzCiAgICB3 aWxsIGFkZCBhbmQgcmVtb3ZlIG9uZSBvciBtb3JlIHRhYmxlcy9zY2hlbWFzIGZyb20gdGhlIHB1 YmxpY2F0aW9uLgorICAgVGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBi ZSB1c2VkIHdpdGgKKyAgIDxsaXRlcmFsPkFERCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiB0 byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBmcm9tIGEKKyAgIHNjaGVtYS1sZXZlbCBwdWJsaWNh dGlvbi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtOTMsNyArMTAwLDExIEBAIEFMVEVSIFBV QkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4gUkVOQU1FIFRPIDxyCiAgICB1c2VkIHdpdGggYSBwdWJsaWNhdGlvbiBkZWZpbmVkIHdpdGgg PGxpdGVyYWw+Rk9SIFRBQkxFPC9saXRlcmFsPiBvcgogICAgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJ TiBTQ0hFTUE8L2xpdGVyYWw+LCByZXBsYWNlcyB0aGUgbGlzdCBvZiB0YWJsZXMvc2NoZW1hcwog ICAgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBsaXN0OyB0aGUgZXhpc3Rp bmcgdGFibGVzIG9yIHNjaGVtYXMKLSAgIHRoYXQgd2VyZSBwcmVzZW50IGluIHRoZSBwdWJsaWNh dGlvbiB3aWxsIGJlIHJlbW92ZWQuCisgICB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUgcHVibGlj YXRpb24gd2lsbCBiZSByZW1vdmVkLiAgV2hlbgorICAgPGxpdGVyYWw+U0VUIFRBQkxFUyBJTiBT Q0hFTUE8L2xpdGVyYWw+IGlzIHVzZWQgd2l0aCBhbgorICAgPGxpdGVyYWw+RVhDRVBUPC9saXRl cmFsPiBjbGF1c2UsIHRoZSBleGNsdWRlZCB0YWJsZXMgZm9yIGVhY2ggc2NoZW1hIGFyZQorICAg cmVwbGFjZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3Q7IGlmIDxsaXRlcmFsPkVYQ0VQVDwvbGl0 ZXJhbD4gaXMgb21pdHRlZAorICAgZm9yIGEgc2NoZW1hLCBhbnkgZXhpc3RpbmcgZXhjbHVzaW9u cyBmb3IgdGhhdCBzY2hlbWEgYXJlIGNsZWFyZWQuCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KQEAg LTE5OCw2ICsyMDksMjcgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgICA8L2xpc3RpdGVt PgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxp dGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgV2hlbiB1c2VkIHdpdGggPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBTQ0hFTUE8L2xp dGVyYWw+CisgICAgICBvciA8bGl0ZXJhbD5TRVQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4s IHNwZWNpZmllcworICAgICAgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0 aW9uLiAgRWFjaCBuYW1lZAorICAgICAgdGFibGUgbXVzdCBiZWxvbmcgdG8gdGhlIHNjaGVtYSBz cGVjaWZpZWQgaW4gdGhlIHNhbWUKKyAgICAgIDxsaXRlcmFsPlRBQkxFUyBJTiBTQ0hFTUE8L2xp dGVyYWw+IGNsYXVzZS4gIFRhYmxlIG5hbWVzIG1heSBiZQorICAgICAgc2NoZW1hLXF1YWxpZmll ZCBvciB1bnF1YWxpZmllZDsgdW5xdWFsaWZpZWQgbmFtZXMgYXJlIGltcGxpY2l0bHkKKyAgICAg IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEgbmFtZWQgaW4gdGhlIHNhbWUgY2xhdXNlLiAgU2Vl CisgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24iLz4gZm9yIGZ1cnRo ZXIgZGV0YWlscyBvbiB0aGUKKyAgICAgIHNlbWFudGljcyBvZiA8bGl0ZXJhbD5FWENFUFQ8L2xp dGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgRHJvcHBpbmcgYSB0YWJs ZSBhbHdheXMgcmVtb3ZlcyBpdCBmcm9tIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+Cisg ICAgICBjbGF1c2UuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+U0VUICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFj ZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFi bGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC0yODgs NiArMzIwLDI4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEFERCBUQUJM RVMgSU4gU0NIRU1BIG1hcmtldGluZywgc2FsZXM7CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3Bh cmE+CiAKKyAgPHBhcmE+CisgICBBZGQgc2NoZW1hIDxzdHJ1Y3RuYW1lPnNhbGVzPC9zdHJ1Y3Ru YW1lPiB0byB0aGUgcHVibGljYXRpb24KKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzX3B1YmxpY2F0aW9u PC9zdHJ1Y3RuYW1lPiwgZXhjbHVkaW5nIHRoZQorICAgPHN0cnVjdG5hbWU+c2FsZXMuaW50ZXJu YWw8L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5hbWU+c2FsZXMuZHJhZnRzPC9zdHJ1Y3Ru YW1lPiB0YWJsZXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBzYWxlc19w dWJsaWNhdGlvbiBBREQgVEFCTEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQgKFRBQkxFIGludGVy bmFsLCBkcmFmdHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgUmVwbGFjZSB0aGUgc2NoZW1hIGxpc3Qgb2YgPHN0cnVjdG5hbWU+c2FsZXNfcHVibGljYXRp b248L3N0cnVjdG5hbWU+IHdpdGgKKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzPC9zdHJ1Y3RuYW1lPiwg ZXhjbHVkaW5nIG9ubHkKKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzLmRyYWZ0czwvc3RydWN0bmFtZT4u IE90aGVyIHRoYW4KKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzLmRyYWZ0czwvc3RydWN0bmFtZT4sIGFu eSBwcmV2aW91c2x5IGV4Y2x1ZGVkIHRhYmxlcyBmb3Igc2NoZW1hCisgICA8c3RydWN0bmFtZT5z YWxlczwvc3RydWN0bmFtZT4gYXJlIG5vIGxvbmdlciBleGNsdWRlZC4gQW55IHNjaGVtYXMgcHJl dmlvdXNseSBpbgorICAgPHN0cnVjdG5hbWU+c2FsZXNfcHVibGljYXRpb248L3N0cnVjdG5hbWU+ IGFyZSByZW1vdmVkOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gc2FsZXNf cHVibGljYXRpb24gU0VUIFRBQkxFUyBJTiBTQ0hFTUEgc2FsZXMgRVhDRVBUIChUQUJMRSBkcmFm dHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQWRkIHRh YmxlcyA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCiAgICA8c3RydWN0bmFtZT5kZXBh cnRtZW50czwvc3RydWN0bmFtZT4gYW5kIHNjaGVtYQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1 YmxpY2F0aW9uLnNnbWwKaW5kZXggODVjZmNhZGRhZmEuLjU4MjcwNmU1YThlIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTI4LDcgKzI4LDcgQEAgQ1JFQVRF IFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4KIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1Ymxp Y2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAogICAgIFRB QkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVw bGFjZWFibGU+IFssIC4uLiBdCi0gICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hF TUEgfSBbLCAuLi4gXQorICAgIFRBQkxFUyBJTiBTQ0hFTUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlc19pbl9zY2hlbWE8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQogCiA8cGhy YXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fYWxsX29i amVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMzksNiArMzksMTAg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4KIAogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXQogCis8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVzX2luX3NjaGVt YTwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NIRU1BIH0g WyBFWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29i amVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlz OjwvcGhyYXNlPgogCiAgICAgVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdCkBAIC0xNDIsNiArMTQ2LDggQEAgQ1JF QVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4KICAgICAgPHBhcmE+CiAgICAgICBNYXJrcyB0aGUgcHVibGljYXRpb24gYXMgb25l IHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIGluCiAgICAgICB0aGUgc3Bl Y2lmaWVkIGxpc3Qgb2Ygc2NoZW1hcywgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBm dXR1cmUuCisgICAgICBUYWJsZXMgbGlzdGVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVy YWw+IGNsYXVzZSBmb3IgYSBnaXZlbiBzY2hlbWEKKyAgICAgIGFyZSBleGNsdWRlZCBmcm9tIHRo ZSBwdWJsaWNhdGlvbi4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpAQCAtMTczLDcgKzE3 OSw3IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgIDxwYXJhPgogICAgICAgTWFya3MgdGhlIHB1YmxpY2F0 aW9uIGFzIG9uZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRhYmxlcyBpbgogICAg ICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4g VGFibGVzIGxpc3RlZCBpbgotICAgICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBjbGF1c2Ug YXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgorICAgICAgdGhlIDxsaXRlcmFsPkVY Q0VQVDwvbGl0ZXJhbD4gY2xhdXNlIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4K ICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE5 OCwxMyArMjA0LDIxIEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4K ICAgICAgIFRoaXMgY2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1 ZGVkIGZyb20gdGhlCi0gICAgICBwdWJsaWNhdGlvbi4KKyAgICAgIHB1YmxpY2F0aW9uLiBJdCBj YW4gYmUgdXNlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBvcgorICAg ICAgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LiBGb3IgPGxpdGVyYWw+ Rk9SIFRBQkxFUyBJTgorICAgICAgU0NIRU1BPC9saXRlcmFsPiwgdGhlIGV4Y2x1c2lvbiBhcHBs aWVzIG9ubHkgdG8gdGFibGVzIGluIHRoZSBzY2hlbWEKKyAgICAgIGFzc29jaWF0ZWQgd2l0aCB0 aGUgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4K LSAgICAgIE9uY2UgYSB0YWJsZSBpcyBleGNsdWRlZCwgdGhlIGV4Y2x1c2lvbiBhcHBsaWVzIHRv IHRoYXQgdGFibGUKLSAgICAgIHJlZ2FyZGxlc3Mgb2YgaXRzIG5hbWUgb3Igc2NoZW1hLiBSZW5h bWluZyB0aGUgdGFibGUgb3IgbW92aW5nIGl0IHRvCi0gICAgICBhbm90aGVyIHNjaGVtYSB1c2lu ZyA8Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gU0VUIFNDSEVNQTwvY29tbWFuZD4gZG9lcwotICAg ICAgbm90IHJlbW92ZSB0aGUgZXhjbHVzaW9uLgorICAgICAgT25jZSBhIHRhYmxlIGlzIGV4Y2x1 ZGVkIHVuZGVyIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiwgdGhlCisgICAgICBl eGNsdXNpb24gYXBwbGllcyB0byB0aGF0IHRhYmxlIHJlZ2FyZGxlc3Mgb2YgaXRzIG5hbWUgb3Ig c2NoZW1hLgorICAgICAgUmVuYW1pbmcgdGhlIHRhYmxlIG9yIG1vdmluZyBpdCB0byBhbm90aGVy IHNjaGVtYSB1c2luZworICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNFVCBTQ0hFTUE8 L2NvbW1hbmQ+IGRvZXMgbm90IHJlbW92ZSB0aGUKKyAgICAgIGV4Y2x1c2lvbi4gSG93ZXZlciwg Zm9yIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgYmVjYXVzZQorICAg ICAgdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gaXMgc2NoZW1hLXNjb3BlZCwgbW92aW5n IGEgc2NoZW1hLWV4Y2x1ZGVkCisgICAgICB0YWJsZSB0byBhbm90aGVyIHNjaGVtYSBkb2VzIHJl bW92ZSB0aGUgZXhjbHVzaW9uOyBpZiB0aGUgdGFibGUgaXMgbGF0ZXIKKyAgICAgIG1vdmVkIGJh Y2ssIHRoZSBleGNsdXNpb24gaXMgbm90IHJlc3RvcmVkIGFuZCBtdXN0IGJlIHJlLWVzdGFibGlz aGVkCisgICAgICB3aXRoIDxjb21tYW5kPkFMVEVSIFBVQkxJQ0FUSU9OPC9jb21tYW5kPi4KICAg ICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgIEZvciBpbmhlcml0ZWQgdGFibGVzLCBpZiA8 bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgYmVmb3JlIHRoZQpAQCAtMjE3LDcg KzIzMSw4IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgIDxwYXJhPgogICAgICAgRm9yIHBhcnRpdGlvbmVk IHRhYmxlcywgb25seSB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBtYXkgYmUgc3BlY2lmaWVk CiAgICAgICBpbiA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+LiBEb2luZyBzbyBleGNsdWRlcyB0 aGUgcm9vdCB0YWJsZSBhbmQKLSAgICAgIGFsbCBvZiBpdHMgcGFydGl0aW9ucyBmcm9tIHJlcGxp Y2F0aW9uLiBUaGUgb3B0aW9uYWwKKyAgICAgIGFsbCBvZiBpdHMgcGFydGl0aW9ucyBmcm9tIHJl cGxpY2F0aW9uLCBldmVuIGFueSBwYXJ0aXRpb24gdGhhdCBsaXZlcworICAgICAgaW4gYSBzY2hl bWEgd2hpY2ggaXMgaXRzZWxmIGluY2x1ZGVkIGluIHRoZSBwdWJsaWNhdGlvbi4gVGhlIG9wdGlv bmFsCiAgICAgICA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+KjwvbGl0ZXJh bD4gaGFzIG5vIGVmZmVjdCBmb3IKICAgICAgIHBhcnRpdGlvbmVkIHRhYmxlcy4KICAgICAgPC9w YXJhPgpAQCAtNTIxLDYgKzUzNiwxNSBAQCBDUkVBVEUgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9w dWJsaWNhdGlvbiBGT1IgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzLCBUQUJMRVMgSQogQ1JFQVRF IFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEZPUiBUQUJMRVMgSU4gU0NIRU1BIG1hcmtl dGluZywgc2FsZXM7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIENy ZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGZvciBhbGwgdGhl IHRhYmxlcyBwcmVzZW50IGluCisgICB0aGUgc2NoZW1hIDxzdHJ1Y3RuYW1lPnNhbGVzPC9zdHJ1 Y3RuYW1lPiwgZXhjZXB0CisgICA8c3RydWN0bmFtZT5pbnRlcm5hbDwvc3RydWN0bmFtZT4gYW5k IDxzdHJ1Y3RuYW1lPmRyYWZ0czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgUFVCTElDQVRJT04gc2FsZXNfZmlsdGVyZWQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2FsZXMg RVhDRVBUIChUQUJMRSBpbnRlcm5hbCwgZHJhZnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwv cGFyYT4KKwogICA8cGFyYT4KICAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVz IGFsbCBjaGFuZ2VzIGZvciB0YWJsZSA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCiAg ICBidXQgcmVwbGljYXRlcyBvbmx5IGNvbHVtbnMgPHN0cnVjdG5hbWU+dXNlcl9pZDwvc3RydWN0 bmFtZT4gYW5kCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000568c980655b7a62b--