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 1w60Yx-003r0h-3A for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 06:20:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w60Yv-007vPz-1A for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 06:20:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w60Yu-007vPq-2E for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 06:20:53 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w60Yp-00000001Gr8-16Dc for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 06:20:52 +0000 Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-5a12cd0bd79so2038539e87.2 for ; Thu, 26 Mar 2026 23:20:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774592445; cv=none; d=google.com; s=arc-20240605; b=lOf/Ys6vSXaLJVQLQP0Rwtokh6u7HKrTBuNoL4PE96fsNce30MM9Nr3P92LNGw2+SQ YPzZCBoZhiCctAfidrRuU7hKhtDXk8UgmaX/peLVBQ+6IG87rXYbWRDzxwO0hCaDLOkC 7I1IwtOjCM/h69Mc24S9pNPWxxkEGVSuQOjeULgXA9hMhsRmDKriyhfdcJBOZiAlTdjo qde4MXgoZEk/mUFj9AJfUvYSAi/X6zG1iEQvlGlJBzt31cYPH1C4yC4wWu1pdOFzUMj8 jgh34PR6OTBtRF3cTK3aN+fgg7CllASJ5+PLje2U55/zBSOFmKL4kgHPsBtErCHUxXNe wUwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=W7LmkF5VNLgG1icA1/wwVraMmtpMDnQy1UbNAH0KzoU=; fh=ghfVjq+jJTWKpcDD7AmcDvO/YDeo46uR8tRM91ZVDFI=; b=YcqpUVv1o8fWQKvxIBx36N4OhvgTWCn8T7R3SqyHO5enSU/fo1esgkT84QkTChiV6V dxj2gFoTTjo1UqhrJGmQm0HnGBLuG7/9ZMlDUm8VoXLaFzrOtzLPPQc60SxpLJE+bWne z5Fgut9Tpv8ZcyosCVdqZRon6SUMpkBWyBxakoUrWqpFS5mkIfacRR3K3DxXDpbXyWBC v6ktORuzjFcMmyzOcoxRiHtaO/Yo9IQOaDLvdPeG15rhmw2dEoR8aA6N5caL/ZXi6OIx cAQDl6x9lKA57/s1ZhHAyZh/LxVyjsKxSdtruZn1YPGGlXwUmyGakfi6LvJyCRSYflmo FV8w==; 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=1774592445; x=1775197245; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=W7LmkF5VNLgG1icA1/wwVraMmtpMDnQy1UbNAH0KzoU=; b=EckHyR+vrl3hlChlh18IOznKRbVGHMsyjnx8qCjTMxJx90wAzYyAGjyDTOAVnTpT/q 3OWYtDAqeCt2E0l3oeB0weKvcPuBkh0fX76pFYP6NPbsUrXkHkTY8ENBV+wP2uqM1d+c Mj/NUoU+PLbOQ/RhcciOl6nE25WMH4kW8RmdDqSsdsv+3L6RObBtfcaVXr7sNLllCQAm M38uHKm8xLAHoTXZjGVN6c5BrEdjDSX+jNYsBOeIBwvnwxjYaJjuKdSa5YjOkyoD/Q/Y ggUBcBCRiYcvty1WdWrXEy/zg+q4EvZNyuUaN5lZ82/HfBRE3qx83hhEupH0uHYGnCvU VYHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774592445; x=1775197245; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=W7LmkF5VNLgG1icA1/wwVraMmtpMDnQy1UbNAH0KzoU=; b=RGZKcRGC3x4dwkHKlZofP/9Io/BitMWyvf3KM/yTEs3eq1cMbBOnmgwG1r5RLCHGw5 oBcaMFLo6eW+JvVsDIJDGx7NmtsH7PzNaYIZiDU8acW3ZYj4NtW7Rc8x6H/Hylf8yE9o rSkbAy4HrPbVA4CZVkAAnAycXq72Fk5ArbditAn0IfrQmPA10bzOFWDNDYuJ0+ovo2ek N3HsM48BnNoLiUleO/OwZa7H+jKTFaouT4Gt1gtnSiT+jbVooc3YSlXlSlHgf00hUkYp MJNC3z7b9aPtn2CzXdrxdHYafUAzSMLt6ETcL/S4XkqjfrTdzHqE4L7c2Goj89APNYa0 67Pw== X-Forwarded-Encrypted: i=1; AJvYcCXMEqHpaAqEabe9auScCl/sPJ33SSLn7q7ut+NF7yclCC/yrm5ZZtnsTPGYIYcp6CtpyM0g4sILUzeOd1qM@lists.postgresql.org X-Gm-Message-State: AOJu0Yx0LxKXf1yReL108ArdhH8nu/zhcjo6L4DMTw7uD/ow/G+tKq3C SLjoZEH/JAJ2vPTPWU7XDbKtgl4h7+xt6yNKBIwBrmuDNy9TJT760eHZJGDC45n7EjWkhSsXddu MhzDCuVNUrXjyWaGl6vqFnjOss17FA4JxrVgV X-Gm-Gg: ATEYQzxncgW3aOPmzZTicM26qxo95fIkcPJjWPfEoQ7QREiHOLQ+tr3skHoBDgc5VJ8 jQ8VfDcot6JyonGpaKxUx3RIgJihhtIoBiF5YT91ShbeEL90RYqCGYIxkWVJSfzmYjRZyu8WPKw eucjBWeLB/qKIAX3GwmoeFb33RWDKyFSmVPCbp0G89DugVXuV50xpkVe1bYqY9EZAkLnnMsO9b4 dZVktsIJOA7nAE8PYdNvhs6tfH/U1I0wJotZIETLYnNhg30CeayHSnNjzy3BAoXdUjQNBRUZZU1 ZZh0ECmf X-Received: by 2002:a05:6512:3a8e:b0:5a2:9cb4:9729 with SMTP id 2adb3069b0e04-5a2ab5fa109mr476355e87.2.1774592444248; Thu, 26 Mar 2026 23:20:44 -0700 (PDT) MIME-Version: 1.0 References: <0c28fbd1-3320-4e9b-815c-6d62753aa063@wi3ck.info> In-Reply-To: From: Masahiko Sawada Date: Thu, 26 Mar 2026 23:20:07 -0700 X-Gm-Features: AQROBzC_0x4jSGX3HxeF9XW3IH7S6L9O5Ej7zy6WkcpkVzSvCbgRoePxwaNgOmg Message-ID: Subject: Re: Initial COPY of Logical Replication is too slow To: Amit Kapila Cc: "Hayato Kuroda (Fujitsu)" , Jan Wieck , "pgsql-hackers@lists.postgresql.org" Content-Type: multipart/mixed; boundary="00000000000042cf35064dfb801d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000042cf35064dfb801d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Mar 26, 2026 at 8:51=E2=80=AFPM Amit Kapila wrote: > > On Fri, Mar 27, 2026 at 8:46=E2=80=AFAM Hayato Kuroda (Fujitsu) > wrote: > > > > Dear Sawada-san, > > > > > When passing a non-existent publication name, the current behavior > > > raises an error while the new behavior does nothing (i.e., the > > > difference is calling GetPublicationByName() with missing_ok =3D true= or > > > false). > > > > To confirm; It's because in PG18-, p.pubname was chosen from the pg_pub= lication > > in the publisher, but this patch the name list is taken from the subscr= iber, right? > > If some publications are dropped on the publisher, the ERROR could be r= aised. > > > > For the backward compatibility I suggest switching the policy based on = the API > > version. E.g., > > > > ``` > > static Datum > > pg_get_publication_tables(FunctionCallInfo fcinfo, ArrayType *pubnames= , > > - Oid target_relid) > > + Oid target_relid, boo= l missing_ok) > > ... > > @@ -1631,7 +1631,7 @@ Datum > > pg_get_publication_tables_a(PG_FUNCTION_ARGS) > > { > > /* Get the information of the tables in the given publications = */ > > - return pg_get_publication_tables(fcinfo, PG_GETARG_ARRAYTYPE_P(= 0), InvalidOid); > > + return pg_get_publication_tables(fcinfo, PG_GETARG_ARRAYTYPE_P(= 0), InvalidOid, false); > > ``` > > > > Sounds like a good idea for backward compatibility. +1. I've attached the updated patch. I believe I've addressed all comments I got so far. In addition to that, I've refactored is_table_publishable_in_publication() and added more regression tests. Regards, --=20 Masahiko Sawada Amazon Web Services: https://aws.amazon.com --00000000000042cf35064dfb801d Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0001-Avoid-full-table-scans-when-getting-publication-t.patch" Content-Disposition: attachment; filename="v5-0001-Avoid-full-table-scans-when-getting-publication-t.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8igztn0 RnJvbSA2MDFjNzY0YjI3ZGY4OTk0YzgwMWQzY2VkODFjNTgyMWJhMTQwMGM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyNyBGZWIgMjAyNiAxNTo0MjozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0gg djVdIEF2b2lkIGZ1bGwgdGFibGUgc2NhbnMgd2hlbiBnZXR0aW5nIHB1YmxpY2F0aW9uIHRhYmxl CiBpbmZvcm1hdGlvbiBieSB0YWJsZXN5bmMgd29ya2Vycy4KClJlcG9ydGVkLWJ5OiBNYXJjb3Mg UGVnb3Jhcm8gPG1hcmNvc0BmMTAuY29tLmJyPgpSZXZpZXdlZC1ieTogWmhpamllIEhvdSA8aG91 emouZm5zdEBmdWppdHN1LmNvbT4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRo ZXVzc3NpbHY5N0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbWl0IEthcGlsYSA8YW1pdC5rYXBp bGExNkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBQZXRlciBTbWl0aCA8c21pdGhwYjIyNTBAZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogSGF5YXRvIEt1cm9kYSA8a3Vyb2RhLmhheWF0b0BmdWppdHN1 LmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FCLUpMd2JCRk51QVN5RW5aV1AwVGNrOXVOa3Ro QlpxaTZXb1hOZXZVVDYrbVY4WG1BQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICB8IDIxMyArKysrKysrKysrKysrKystLS0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgfCAgNzAgKysrKy0tCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgIHwgIDExICstCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgIHwgMjI1ICsrKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgIHwg MTA3ICsrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNTc2IGluc2VydGlvbnMoKyksIDUwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRp b24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCBjOTJmZjNm NTFjMy4uYjM4MmUzMWY3YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAg LTEyNjQsMTIgKzEyNjQsMTIwIEBAIEdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1 Ym5hbWUsIGJvb2wgbWlzc2luZ19vaykKIH0KIAogLyoKLSAqIEdldCBpbmZvcm1hdGlvbiBvZiB0 aGUgdGFibGVzIGluIHRoZSBnaXZlbiBwdWJsaWNhdGlvbiBhcnJheS4KKyAqIFJldHVybnMgdHJ1 ZSBpZiB0aGUgdGFibGUgb2YgdGhlIGdpdmVuIHJlbGlkIGlzIHB1Ymxpc2hlZCBmb3IgdGhlIHNw ZWNpZmllZAorICogcHVibGljYXRpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBldmFsdWF0ZXMg dGhlIGVmZmVjdGl2ZSBwdWJsaXNoZWQgT0lEIGJhc2VkIG9uIHRoZQorICogcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3Qgc2V0dGluZywgcmF0aGVyIHRoYW4ganVzdCBjaGVja2luZyBjYXRhbG9n IGVudHJpZXMKKyAqIChlLmcuLCBwZ19wdWJsaWNhdGlvbl9yZWwpLiBGb3IgaW5zdGFuY2UsIHdo ZW4gcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgaXMKKyAqIGZhbHNlLCBpdCByZXR1cm5zIGZh bHNlIGZvciBhIHBhcmVudCBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgdHJ1ZSBmb3IgaXRzIGxlYWYK KyAqIHBhcnRpdGlvbnMsIGV2ZW4gaWYgdGhlIHBhcmVudCBpcyB0aGUgb25lIGV4cGxpY2l0bHkg YWRkZWQgdG8gdGhlIHB1YmxpY2F0aW9uLgogICoKLSAqIFJldHVybnMgcHViaWQsIHJlbGlkLCBj b2x1bW4gbGlzdCwgcm93IGZpbHRlciBmb3IgZWFjaCB0YWJsZS4KKyAqIEZvciBwZXJmb3JtYW5j ZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGF2b2lkcyB0aGUgb3ZlcmhlYWQgb2YgY29uc3RydWN0 aW5nCisgKiB0aGUgY29tcGxldGUgbGlzdCBvZiBwdWJsaXNoZWQgdGFibGVzIGR1cmluZyB0aGUg ZXZhbHVhdGlvbi4gSXQgY2FuIGV4ZWN1dGUKKyAqIHF1aWNrbHkgZXZlbiB3aGVuIHRoZSBwdWJs aWNhdGlvbiBjb250YWlucyBhIGxhcmdlIG51bWJlciBvZiByZWxhdGlvbnMuCiAgKi8KLURhdHVt Ci1wZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCitzdGF0aWMgYm9v bAoraXNfdGFibGVfcHVibGlzaGFibGVfaW5fcHVibGljYXRpb24oT2lkIHJlbGlkLCBQdWJsaWNh dGlvbiAqcHViKQoreworCWJvb2wJCXJlbGlzcGFydGl0aW9uOworCisJLyoKKwkgKiBGb3Igbm9u LXB1YnZpYXJvb3QgcHVibGljYXRpb25zLCBhIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5ldmVyIHRo ZQorCSAqIGVmZmVjdGl2ZSBwdWJsaXNoZWQgT0lEOyBvbmx5IGl0cyBsZWFmIHBhcnRpdGlvbnMg Y2FuIGJlLgorCSAqLworCWlmICghcHViLT5wdWJ2aWFyb290ICYmIGdldF9yZWxfcmVsa2luZChy ZWxpZCkgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJcmV0dXJuIGZhbHNlOworCisJ cmVsaXNwYXJ0aXRpb24gPSBnZXRfcmVsX3JlbGlzcGFydGl0aW9uKHJlbGlkKTsKKworCWlmIChw dWItPmFsbHRhYmxlcykKKwl7CisJCU9pZAkJCXRhcmdldF9yZWxpZCA9IHJlbGlkOworCisJCWlm IChwdWItPnB1YnZpYXJvb3QpCisJCXsKKwkJCS8qCisJCQkgKiBBTEwgVEFCTEVTIHdpdGggcHVi dmlhcm9vdCBpbmNsdWRlcyBvbmx5IHJlZ3VsYXIgdGFibGVzIG9yCisJCQkgKiB0b3AtbW9zdCBw YXJ0aXRpb25lZCB0YWJsZXMgLS0gbmV2ZXIgY2hpbGQgcGFydGl0aW9ucy4KKwkJCSAqLworCQkJ aWYgKHJlbGlzcGFydGl0aW9uKQorCQkJCXJldHVybiBmYWxzZTsKKwkJfQorCQllbHNlIGlmIChy ZWxpc3BhcnRpdGlvbikKKwkJeworCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlv bl9hbmNlc3RvcnMocmVsaWQpOworCisJCQkvKgorCQkJICogT25seSB0aGUgdG9wLW1vc3QgYW5j ZXN0b3IgY2FuIGFwcGVhciBpbiB0aGUgRVhDRVBUIGNsYXVzZS4KKwkJCSAqIFRoZXJlZm9yZSwg Zm9yIGEgcGFydGl0aW9uLCBleGNsdXNpb24gbXVzdCBiZSBldmFsdWF0ZWQgYXQgdGhlCisJCQkg KiB0b3AtbW9zdCBhbmNlc3Rvci4KKwkJCSAqLworCQkJdGFyZ2V0X3JlbGlkID0gbGxhc3Rfb2lk KGFuY2VzdG9ycyk7CisJCQlsaXN0X2ZyZWUoYW5jZXN0b3JzKTsKKwkJfQorCisJCS8qCisJCSAq IFRoZSB0YWJsZSBpcyBwdWJsaXNoZWQgdW5sZXNzIGl0IGFwcGVhcnMgaW4gdGhlIEVYQ0VQVCBj bGF1c2UuIEFMTAorCQkgKiBUQUJMRVMgcHVibGljYXRpb25zIHN0b3JlIG9ubHkgRVhDRVBUJ2Vk IHRhYmxlcyBpbgorCQkgKiBwZ19wdWJsaWNhdGlvbl9yZWwsIHNvIGNoZWNraW5nIGV4aXN0ZW5j ZSBpcyBzdWZmaWNpZW50LgorCQkgKi8KKwkJcmV0dXJuICFTZWFyY2hTeXNDYWNoZUV4aXN0czIo UFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0odGFyZ2V0X3Jl bGlkKSwKKwkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpOworCX0KKworCS8q CisJICogTm9uLWFsbHRhYmxlcworCSAqLworCWlmIChyZWxpc3BhcnRpdGlvbikKKwl7CisJCUxp c3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKwkJT2lk CQkJdG9wbW9zdCA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViLT5vaWQsIGFu Y2VzdG9ycywgTlVMTCk7CisKKwkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7CisKKwkJaWYgKE9pZElz VmFsaWQodG9wbW9zdCkpCisJCXsKKwkJCS8qCisJCQkgKiBJZiBwdWJ2aWFyb290IGlzIHRydWUs IHRoZSBhbmNlc3RvciBpcyBwdWJsaXNoZWQgaW5zdGVhZCBvZiB0aGUKKwkJCSAqIHBhcnRpdGlv biwgc28gZXhjbHVkZSBpdC4gT3RoZXJ3aXNlLCB0aGUgYW5jZXN0b3IgY292ZXJzIHRoZQorCQkJ ICogcGFydGl0aW9uLCBzbyBpbmNsdWRlIGl0LgorCQkJICovCisJCQlyZXR1cm4gIXB1Yi0+cHVi dmlhcm9vdDsKKwkJfQorCisJCS8qIEFuY2VzdG9yIG5vdCBwdWJsaXNoZWQ7IGZhbGwgdGhyb3Vn aCB0byBjaGVjayB0aGUgcGFydGl0aW9uIGl0c2VsZiAqLworCX0KKworCS8qCisJICogQ2hlY2sg d2hldGhlciB0aGUgdGFibGUgaXMgZXhwbGljaXRseSBwdWJsaXNoZWQgdmlhIHBnX3B1YmxpY2F0 aW9uX3JlbAorCSAqIG9yIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS4KKwkgKi8KKwlyZXR1cm4g KFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJICBPYmpl Y3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lk KSkgfHwKKwkJCVNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTk5BTUVTUEFDRU1BUCwK KwkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKSksCisJ CQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpKTsKK30KKworLyoKKyAqIEhlbHBl ciBmdW5jdGlvbiB0byBnZXQgaW5mb3JtYXRpb24gb2YgdGhlIHRhYmxlcyBpbiB0aGUgZ2l2ZW4K KyAqIHB1YmxpY2F0aW9uKHMpLgorICoKKyAqIElmIGZpbHRlcl9ieV9yZWxpZCBpcyB0cnVlLCBv bmx5IHRoZSByb3cgZm9yIHRhcmdldF9yZWxpZCBpcyByZXR1cm5lZDsKKyAqIGlmIHRhcmdldF9y ZWxpZCBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcGFydCBvZiB0aGUgcHVibGljYXRpb25zLCB6 ZXJvCisgKiByb3dzIGFyZSByZXR1cm5lZC4gIElmIGZpbHRlcl9ieV9yZWxpZCBpcyBmYWxzZSwg cm93cyBmb3IgYWxsIHRhYmxlcworICogd2l0aGluIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb25z IGFyZSByZXR1cm5lZCBhbmQgdGFyZ2V0X3JlbGlkIGlzCisgKiBpZ25vcmVkLgorICoKKyAqIFJl dHVybnMgcHViaWQsIHJlbGlkLCBjb2x1bW4gbGlzdCwgYW5kIHJvdyBmaWx0ZXIgZm9yIGVhY2gg dGFibGUuCisgKi8KK3N0YXRpYyBEYXR1bQorcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgQXJyYXlUeXBlICpwdWJuYW1lcywKKwkJCQkJCSAgT2lkIHRh cmdldF9yZWxpZCwgYm9vbCBmaWx0ZXJfYnlfcmVsaWQsCisJCQkJCQkgIGJvb2wgcHViX21pc3Np bmdfb2spCiB7CiAjZGVmaW5lIE5VTV9QVUJMSUNBVElPTl9UQUJMRVNfRUxFTQk0CiAJRnVuY0Nh bGxDb250ZXh0ICpmdW5jY3R4OwpAQCAtMTI4MCwxMSArMTM4OCwxMSBAQCBwZ19nZXRfcHVibGlj YXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQlUdXBsZURlc2MJdHVwZGVzYzsK IAkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwotCQlBcnJheVR5cGUgICphcnI7CiAJCURhdHVt CSAgICplbGVtczsKIAkJaW50CQkJbmVsZW1zLAogCQkJCQlpOwogCQlib29sCQl2aWFyb290ID0g ZmFsc2U7CisJCWNoYXIJCXJlbGtpbmQgPSAnXDAnOwogCiAJCS8qIGNyZWF0ZSBhIGZ1bmN0aW9u IGNvbnRleHQgZm9yIGNyb3NzLWNhbGwgcGVyc2lzdGVuY2UgKi8KIAkJZnVuY2N0eCA9IFNSRl9G SVJTVENBTExfSU5JVCgpOwpAQCAtMTI5MiwxMiArMTQwMCwxNiBAQCBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCS8qIHN3aXRjaCB0byBtZW1vcnkgY29udGV4 dCBhcHByb3ByaWF0ZSBmb3IgbXVsdGlwbGUgZnVuY3Rpb24gY2FsbHMgKi8KIAkJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgp OwogCisJCUFzc2VydChwdWJuYW1lcyAhPSBOVUxMKTsKKwogCQkvKgogCQkgKiBEZWNvbnN0cnVj dCB0aGUgcGFyYW1ldGVyIGludG8gZWxlbWVudHMgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGEKIAkJ ICogcHVibGljYXRpb24gbmFtZS4KIAkJICovCi0JCWFyciA9IFBHX0dFVEFSR19BUlJBWVRZUEVf UCgwKTsKLQkJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihhcnIsIFRFWFRPSUQsICZlbGVtcywg TlVMTCwgJm5lbGVtcyk7CisJCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4ocHVibmFtZXMsIFRF WFRPSUQsICZlbGVtcywgTlVMTCwgJm5lbGVtcyk7CisKKwkJaWYgKGZpbHRlcl9ieV9yZWxpZCkK KwkJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQodGFyZ2V0X3JlbGlkKTsKIAogCQkvKiBHZXQg T2lkcyBvZiB0YWJsZXMgZnJvbSBlYWNoIHB1YmxpY2F0aW9uLiAqLwogCQlmb3IgKGkgPSAwOyBp IDwgbmVsZW1zOyBpKyspCkBAIC0xMzA2LDMyICsxNDE4LDQ5IEBAIHBnX2dldF9wdWJsaWNhdGlv bl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCUxpc3QJICAgKnB1Yl9lbGVtX3RhYmxlcyA9 IE5JTDsKIAkJCUxpc3RDZWxsICAgKmxjOwogCi0JCQlwdWJfZWxlbSA9IEdldFB1YmxpY2F0aW9u QnlOYW1lKFRleHREYXR1bUdldENTdHJpbmcoZWxlbXNbaV0pLCBmYWxzZSk7CisJCQlwdWJfZWxl bSA9IEdldFB1YmxpY2F0aW9uQnlOYW1lKFRleHREYXR1bUdldENTdHJpbmcoZWxlbXNbaV0pLAor CQkJCQkJCQkJCQlwdWJfbWlzc2luZ19vayk7CiAKLQkJCS8qCi0JCQkgKiBQdWJsaWNhdGlvbnMg c3VwcG9ydCBwYXJ0aXRpb25lZCB0YWJsZXMuIElmCi0JCQkgKiBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCBpcyBmYWxzZSwgYWxsIGNoYW5nZXMgYXJlIHJlcGxpY2F0ZWQKLQkJCSAqIHVzaW5n IGxlYWYgcGFydGl0aW9uIGlkZW50aXR5IGFuZCBzY2hlbWEsIHNvIHdlIG9ubHkgbmVlZAotCQkJ ICogdGhvc2UuIE90aGVyd2lzZSwgZ2V0IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYuCi0J CQkgKi8KLQkJCWlmIChwdWJfZWxlbS0+YWxsdGFibGVzKQotCQkJCXB1Yl9lbGVtX3RhYmxlcyA9 IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCi0JCQkJCQkJCQkJCQkJ CQkgUkVMS0lORF9SRUxBVElPTiwKLQkJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9v dCk7CisJCQlpZiAocHViX2VsZW0gPT0gTlVMTCkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGZp bHRlcl9ieV9yZWxpZCkKKwkJCXsKKwkJCQkvKiBDaGVjayBpZiB0aGUgZ2l2ZW4gdGFibGUgaXMg cHVibGlzaGVkIGZvciB0aGUgcHVibGljYXRpb24gKi8KKwkJCQlpZiAoKHJlbGtpbmQgPT0gUkVM S0lORF9SRUxBVElPTiB8fCByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICYm CisJCQkJCWlzX3RhYmxlX3B1Ymxpc2hhYmxlX2luX3B1YmxpY2F0aW9uKHRhcmdldF9yZWxpZCwg cHViX2VsZW0pKQorCQkJCXsKKwkJCQkJcHViX2VsZW1fdGFibGVzID0gbGlzdF9tYWtlMV9vaWQo dGFyZ2V0X3JlbGlkKTsKKwkJCQl9CisJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJTGlzdAkgICAq cmVsaWRzLAotCQkJCQkJICAgKnNjaGVtYXJlbGlkczsKLQotCQkJCXJlbGlkcyA9IEdldEluY2x1 ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKLQkJCQkJCQkJCQkJCQkJIHB1 Yl9lbGVtLT5wdWJ2aWFyb290ID8KLQkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9P VCA6Ci0JCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwotCQkJCXNjaGVtYXJl bGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCi0J CQkJCQkJCQkJCQkJCQkJcHViX2VsZW0tPnB1YnZpYXJvb3QgPwotCQkJCQkJCQkJCQkJCQkJCVBV QkxJQ0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9M RUFGKTsKLQkJCQlwdWJfZWxlbV90YWJsZXMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHJlbGlk cywgc2NoZW1hcmVsaWRzKTsKKwkJCQkvKgorCQkJCSAqIFB1YmxpY2F0aW9ucyBzdXBwb3J0IHBh cnRpdGlvbmVkIHRhYmxlcy4gSWYKKwkJCQkgKiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBp cyBmYWxzZSwgYWxsIGNoYW5nZXMgYXJlCisJCQkJICogcmVwbGljYXRlZCB1c2luZyBsZWFmIHBh cnRpdGlvbiBpZGVudGl0eSBhbmQgc2NoZW1hLCBzbyB3ZQorCQkJCSAqIG9ubHkgbmVlZCB0aG9z ZS4gT3RoZXJ3aXNlLCBnZXQgdGhlIHBhcnRpdGlvbmVkIHRhYmxlCisJCQkJICogaXRzZWxmLgor CQkJCSAqLworCQkJCWlmIChwdWJfZWxlbS0+YWxsdGFibGVzKQorCQkJCQlwdWJfZWxlbV90YWJs ZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJCQkJCQkJ CQkJCQkJCSBSRUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVi dmlhcm9vdCk7CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJTGlzdAkgICAqcmVsaWRzLAorCQkJCQkJ CSAgICpzY2hlbWFyZWxpZHM7CisKKwkJCQkJcmVsaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlv blJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2 aWFyb290ID8KKwkJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJ CQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQkJCXNjaGVtYXJlbGlkcyA9IEdl dEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJCQkJCQkJ CQkJCQkJCXB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJ T05fUEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGKTsK KwkJCQkJcHViX2VsZW1fdGFibGVzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChyZWxpZHMsIHNj aGVtYXJlbGlkcyk7CisJCQkJfQogCQkJfQogCiAJCQkvKgpAQCAtMTQ5MSw2ICsxNjIwLDMwIEBA IHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAlTUkZfUkVUVVJO X0RPTkUoZnVuY2N0eCk7CiB9CiAKK0RhdHVtCitwZ19nZXRfcHVibGljYXRpb25fdGFibGVzX2Eo UEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIEdldCBpbmZvcm1hdGlvbiBmb3IgYWxsIHRh YmxlcyBpbiB0aGUgZ2l2ZW4gcHVibGljYXRpb25zLgorCSAqIGZpbHRlcl9ieV9yZWxpZCBpcyBm YWxzZSBzbyBhbGwgdGFibGVzIGFyZSByZXR1cm5lZDsgcHViX21pc3Npbmdfb2sgaXMKKwkgKiBm YWxzZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKwkgKi8KKwlyZXR1cm4gcGdfZ2V0X3B1 YmxpY2F0aW9uX3RhYmxlcyhmY2luZm8sIFBHX0dFVEFSR19BUlJBWVRZUEVfUCgwKSwKKwkJCQkJ CQkJCSBJbnZhbGlkT2lkLCBmYWxzZSwgZmFsc2UpOworfQorCitEYXR1bQorcGdfZ2V0X3B1Ymxp Y2F0aW9uX3RhYmxlc19iKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBHZXQgaW5mb3Jt YXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUgaW4gdGhlIGdpdmVuIHB1YmxpY2F0aW9ucy4g VGhlCisJICogU1FMLWxldmVsIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIFNUUklDVCwgc28gdGFyZ2V0 X3JlbGlkIGlzIGd1YXJhbnRlZWQgdG8KKwkgKiBiZSBub24tTlVMTCBoZXJlLgorCSAqLworCXJl dHVybiBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKGZjaW5mbywgUEdfR0VUQVJHX0FSUkFZVFlQ RV9QKDApLAorCQkJCQkJCQkJIFBHX0dFVEFSR19PSUQoMSksIHRydWUsIHRydWUpOworfQorCiAv KgogICogUmV0dXJucyBPaWRzIG9mIHNlcXVlbmNlcyBpbiBhIHB1YmxpY2F0aW9uLgogICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBmNDlhNDg1 MmVjYi4uZWI3MTgxMTQyOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYwpAQCAtNzk4LDE3ICs3OTgsMzUgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8o Y2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAog CQkgKiBwdWJsaWNhdGlvbnMpLgogCQkgKi8KIAkJcmVzZXRTdHJpbmdJbmZvKCZjbWQpOwotCQlh cHBlbmRTdHJpbmdJbmZvKCZjbWQsCi0JCQkJCQkgIlNFTEVDVCBESVNUSU5DVCIKLQkJCQkJCSAi ICAoQ0FTRSBXSEVOIChhcnJheV9sZW5ndGgoZ3B0LmF0dHJzLCAxKSA9IGMucmVsbmF0dHMpIgot CQkJCQkJICIgICBUSEVOIE5VTEwgRUxTRSBncHQuYXR0cnMgRU5EKSIKLQkJCQkJCSAiICBGUk9N IHBnX3B1YmxpY2F0aW9uIHAsIgotCQkJCQkJICIgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9u X3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCwiCi0JCQkJCQkgIiAgcGdfY2xhc3MgYyIKLQkJCQkJCSAi IFdIRVJFIGdwdC5yZWxpZCA9ICV1IEFORCBjLm9pZCA9IGdwdC5yZWxpZCIKLQkJCQkJCSAiICAg QU5EIHAucHVibmFtZSBJTiAoICVzICkiLAotCQkJCQkJIGxyZWwtPnJlbW90ZWlkLAotCQkJCQkJ IHB1Yl9uYW1lcy0+ZGF0YSk7CisKKwkJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE5MDAwMCkKKwkJ eworCQkJLyoKKwkJCSAqIFdlIGNhbiBwYXNzIGJvdGggcHVibGljYXRpb24gbmFtZXMgYW5kIHJl bGlkIHRvCisJCQkgKiBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKCkgc2luY2UgdmVyc2lvbiAx OS4KKwkJCSAqLworCQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLAorCQkJCQkJCSAiU0VMRUNUIERJ U1RJTkNUIgorCQkJCQkJCSAiICAoQ0FTRSBXSEVOIChhcnJheV9sZW5ndGgoZ3B0LmF0dHJzLCAx KSA9IGMucmVsbmF0dHMpIgorCQkJCQkJCSAiICAgVEhFTiBOVUxMIEVMU0UgZ3B0LmF0dHJzIEVO RCkiCisJCQkJCQkJICIgIEZST00gcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhBUlJBWVslc10s ICV1KSBncHQsIgorCQkJCQkJCSAiICBwZ19jbGFzcyBjIgorCQkJCQkJCSAiIFdIRVJFIGMub2lk ID0gZ3B0LnJlbGlkIiwKKwkJCQkJCQkgcHViX25hbWVzLT5kYXRhLAorCQkJCQkJCSBscmVsLT5y ZW1vdGVpZCk7CisJCX0KKwkJZWxzZQorCQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLAorCQkJCQkJ CSAiU0VMRUNUIERJU1RJTkNUIgorCQkJCQkJCSAiICAoQ0FTRSBXSEVOIChhcnJheV9sZW5ndGgo Z3B0LmF0dHJzLCAxKSA9IGMucmVsbmF0dHMpIgorCQkJCQkJCSAiICAgVEhFTiBOVUxMIEVMU0Ug Z3B0LmF0dHJzIEVORCkiCisJCQkJCQkJICIgIEZST00gcGdfcHVibGljYXRpb24gcCwiCisJCQkJ CQkJICIgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCwi CisJCQkJCQkJICIgIHBnX2NsYXNzIGMiCisJCQkJCQkJICIgV0hFUkUgZ3B0LnJlbGlkID0gJXUg QU5EIGMub2lkID0gZ3B0LnJlbGlkIgorCQkJCQkJCSAiICAgQU5EIHAucHVibmFtZSBJTiAoICVz ICkiLAorCQkJCQkJCSBscmVsLT5yZW1vdGVpZCwKKwkJCQkJCQkgcHViX25hbWVzLT5kYXRhKTsK IAogCQlwdWJyZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBjbWQuZGF0 YSwKIAkJCQkJCQkgbGVuZ3Rob2YoYXR0cnNSb3cpLCBhdHRyc1Jvdyk7CkBAIC05ODIsMTQgKzEw MDAsMjggQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVs bmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCiAJCS8qIENoZWNrIGZvciByb3cgZmls dGVycy4gKi8KIAkJcmVzZXRTdHJpbmdJbmZvKCZjbWQpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZj bWQsCi0JCQkJCQkgIlNFTEVDVCBESVNUSU5DVCBwZ19nZXRfZXhwcihncHQucXVhbCwgZ3B0LnJl bGlkKSIKLQkJCQkJCSAiICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAsIgotCQkJCQkJICIgIExBVEVS QUwgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCIKLQkJCQkJCSAiIFdI RVJFIGdwdC5yZWxpZCA9ICV1IgotCQkJCQkJICIgICBBTkQgcC5wdWJuYW1lIElOICggJXMgKSIs Ci0JCQkJCQkgbHJlbC0+cmVtb3RlaWQsCi0JCQkJCQkgcHViX25hbWVzLT5kYXRhKTsKKworCQlp ZiAoc2VydmVyX3ZlcnNpb24gPj0gMTkwMDAwKQorCQl7CisJCQkvKgorCQkJICogV2UgY2FuIHBh c3MgYm90aCBwdWJsaWNhdGlvbiBuYW1lcyBhbmQgcmVsaWQgdG8KKwkJCSAqIHBnX2dldF9wdWJs aWNhdGlvbl90YWJsZXMoKSBzaW5jZSB2ZXJzaW9uIDE5LgorCQkJICovCisJCQlhcHBlbmRTdHJp bmdJbmZvKCZjbWQsCisJCQkJCQkJICJTRUxFQ1QgRElTVElOQ1QgcGdfZ2V0X2V4cHIoZ3B0LnF1 YWwsIGdwdC5yZWxpZCkiCisJCQkJCQkJICIgIEZST00gcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxl cyhBUlJBWVslc10sICV1KSBncHQiLAorCQkJCQkJCSBwdWJfbmFtZXMtPmRhdGEsCisJCQkJCQkJ IGxyZWwtPnJlbW90ZWlkKTsKKwkJfQorCQllbHNlCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQs CisJCQkJCQkJICJTRUxFQ1QgRElTVElOQ1QgcGdfZ2V0X2V4cHIoZ3B0LnF1YWwsIGdwdC5yZWxp ZCkiCisJCQkJCQkJICIgIEZST00gcGdfcHVibGljYXRpb24gcCwiCisJCQkJCQkJICIgIExBVEVS QUwgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCIKKwkJCQkJCQkgIiBX SEVSRSBncHQucmVsaWQgPSAldSIKKwkJCQkJCQkgIiAgIEFORCBwLnB1Ym5hbWUgSU4gKCAlcyAp IiwKKwkJCQkJCQkgbHJlbC0+cmVtb3RlaWQsCisJCQkJCQkJIHB1Yl9uYW1lcy0+ZGF0YSk7CiAK IAkJcmVzID0gd2FscmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgY21kLmRhdGEsIDEs IHF1YWxSb3cpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAwMTE4ZTk3MGRkYS4uN2Vj NDMwMzRiNzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTI0NjgsNyArMTI0NjgsMTYg QEAKICAgcHJvYWxsYXJndHlwZXMgPT4gJ3tfdGV4dCxvaWQsb2lkLGludDJ2ZWN0b3IscGdfbm9k ZV90cmVlfScsCiAgIHByb2FyZ21vZGVzID0+ICd7dixvLG8sbyxvfScsCiAgIHByb2FyZ25hbWVz ID0+ICd7cHVibmFtZSxwdWJpZCxyZWxpZCxhdHRycyxxdWFsfScsCi0gIHByb3NyYyA9PiAncGdf Z2V0X3B1YmxpY2F0aW9uX3RhYmxlcycgfSwKKyAgcHJvc3JjID0+ICdwZ19nZXRfcHVibGljYXRp b25fdGFibGVzX2EnIH0sCit7IG9pZCA9PiAnODA2MCcsCisgIGRlc2NyID0+ICdnZXQgaW5mb3Jt YXRpb24gb2YgdGhlIHNwZWNpZmllZCB0YWJsZSB0aGF0IGlzIHBhcnQgb2YgdGhlIHNwZWNpZmll ZCBwdWJsaWNhdGlvbnMnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfcHVibGljYXRpb25fdGFibGVz JywgcHJvcm93cyA9PiAnMTAnLAorICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAn cycsCisgIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdfdGV4dCBvaWQn LAorICBwcm9hbGxhcmd0eXBlcyA9PiAne190ZXh0LG9pZCxvaWQsb2lkLGludDJ2ZWN0b3IscGdf bm9kZV90cmVlfScsCisgIHByb2FyZ21vZGVzID0+ICd7aSxpLG8sbyxvLG99JywKKyAgcHJvYXJn bmFtZXMgPT4gJ3twdWJuYW1lcyx0YXJnZXRfcmVsaWQscHViaWQscmVsaWQsYXR0cnMscXVhbH0n LAorICBwcm9zcmMgPT4gJ3BnX2dldF9wdWJsaWNhdGlvbl90YWJsZXNfYicgfSwKIHsgb2lkID0+ ICc4MDUyJywgZGVzY3IgPT4gJ2dldCBPSURzIG9mIHNlcXVlbmNlcyBpbiBhIHB1YmxpY2F0aW9u JywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcycsIHByb3Jvd3Mg PT4gJzEwMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAogICBwcm92b2xhdGlsZSA9PiAncycsIHByb3Jl dHR5cGUgPT4gJ29pZCcsIHByb2FyZ3R5cGVzID0+ICd0ZXh0JywKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggYTIyMGY0OGIyODUuLmRmMzhkNmQ0NWRiIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMjI3MSw2ICsy MjcxLDIzMSBAQCBEUk9QIFRBQkxFIHRlc3RwdWJfbWVyZ2VfcGs7CiBSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyLCByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcl9k dW1teTsKKy0tIFRlc3QgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyh0ZXh0W10sIG9pZCkgZnVu Y3Rpb24KK0NSRUFURSBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoOworQ1JFQVRFIFRBQkxFIGdwdF90ZXN0 X3NjaC50Ymxfc2NoIChpZCBpbnQpOworQ1JFQVRFIFRBQkxFIHRibF9ub3JtYWwgKGlkIGludCk7 CitDUkVBVEUgVEFCTEUgdGJsX3BhcmVudCAoaWQxIGludCwgaWQyIGludCwgaWQzIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChpZDEpOworQ1JFQVRFIFRBQkxFIHRibF9wYXJ0MSBQQVJUSVRJT04g T0YgdGJsX3BhcmVudCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVklFVyBn cHRfdGVzdF92aWV3IEFTIFNFTEVDVCAqIEZST00gdGJsX25vcm1hbDsKK1NFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfYWxsIEZPUiBBTEwg VEFCTEVTIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CitDUkVBVEUg UFVCTElDQVRJT04gcHViX2FsbF9ub192aWFyb290IEZPUiBBTEwgVEFCTEVTIFdJVEggKHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9h bGxfZXhjZXB0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGJsX3BhcmVudCwgZ3B0X3Rl c3Rfc2NoLnRibF9zY2gpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2Up OworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIFRBQkxFICh0YmxfcGFyZW50LCBncHRfdGVzdF9zY2gudGJsX3NjaCkgV0lU SCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKK0NSRUFURSBQVUJMSUNBVElP TiBwdWJfc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIGdwdF90ZXN0X3NjaDsKK0NSRUFURSBQ VUJMSUNBVElPTiBwdWJfbm9ybWFsIEZPUiBUQUJMRSB0Ymxfbm9ybWFsIFdIRVJFIChpZCA8IDEw KTsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfcGFydF9sZWFmIEZPUiBUQUJMRSB0YmxfcGFydDEg V0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CitDUkVBVEUgUFVCTElD QVRJT04gcHViX3BhcnRfcGFyZW50IEZPUiBUQUJMRSB0YmxfcGFyZW50IChpZDEsIGlkMikgV0hF UkUgKGlkMSA9IDEwKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwor Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudF9ub192aWFyb290IEZPUiBUQUJMRSB0 YmxfcGFyZW50IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOworQ1JF QVRFIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudF9jaGlsZCBGT1IgVEFCTEUgdGJsX3BhcmVu dCwgdGJsX3BhcnQxIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CitS RVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfZ3B0KHB1Ym5h bWVzIHRleHRbXSwgcmVsbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAoCisgIHB1Ym5hbWUgdGV4 dCwKKyAgcmVsbmFtZSBuYW1lLAorICBhdHRycyB0ZXh0LAorICBxdWFsIHRleHQKKykKK0JFR0lO IEFUT01JQworICBTRUxFQ1QgcC5wdWJuYW1lLCBjLnJlbG5hbWUsIGdwdC5hdHRyczo6dGV4dCwg cGdfZ2V0X2V4cHIoZ3B0LnF1YWwsIGdwdC5yZWxpZCkKKyAgICBGUk9NIHBnX2dldF9wdWJsaWNh dGlvbl90YWJsZXMocHVibmFtZXMsIHJlbG5hbWU6OnJlZ2NsYXNzOjpvaWQpIGdwdAorICAgIEpP SU4gcGdfcHVibGljYXRpb24gcCBPTiBwLm9pZCA9IGdwdC5wdWJpZAorICAgIEpPSU4gcGdfY2xh c3MgYyBPTiBjLm9pZCA9IGdwdC5yZWxpZAorICBPUkRFUiBCWSBwLnB1Ym5hbWUsIGMucmVsbmFt ZTsKK0VORDsKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9ub3JtYWwnXSwgJ3Ri bF9ub3JtYWwnKTsKKyAgcHVibmFtZSAgIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICBxdWFsICAg IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tCisgcHViX25v cm1hbCB8IHRibF9ub3JtYWwgfCAxICAgICB8IChpZCA8IDEwKQorKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfbm9ybWFsJ10sICdncHRfdGVzdF9zY2gudGJsX3Nj aCcpOyAtLSBubyByZXN1bHQKKyBwdWJuYW1lIHwgcmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9zY2hlbWEnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7 CisgIHB1Ym5hbWUgICB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tCisgcHViX3NjaGVtYSB8IHRibF9zY2ggfCAxICAgICB8IAor KDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfc2NoZW1hJ10sICd0 Ymxfbm9ybWFsJyk7IC0tIG5vIHJlc3VsdAorIHB1Ym5hbWUgfCByZWxuYW1lIHwgYXR0cnMgfCBx dWFsIAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLQorKDAgcm93cykKKworU0VM RUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3BhcnRfcGFyZW50J10sICd0YmxfcGFyZW50 Jyk7CisgICAgIHB1Ym5hbWUgICAgIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICAgcXVhbCAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLQorIHB1 Yl9wYXJ0X3BhcmVudCB8IHRibF9wYXJlbnQgfCAxIDIgICB8IChpZDEgPSAxMCkKKygxIHJvdykK KworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3BhcnRfcGFyZW50J10sICd0Ymxf cGFydDEnKTsgLS0gbm8gcmVzdWx0CisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwg CistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9wYXJlbnRfbm9fdmlhcm9vdCddLCAndGJs X3BhcnQxJyk7CisgICAgICAgICAgcHVibmFtZSAgICAgICAgICAgfCAgcmVsbmFtZSAgfCBhdHRy cyB8IHF1YWwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tCisgcHViX3BhcnRfcGFyZW50X25vX3ZpYXJvb3QgfCB0YmxfcGFydDEgfCAxIDIg MyB8IAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9w YXJlbnRfbm9fdmlhcm9vdCddLCAndGJsX3BhcmVudCcpOyAtLSBubyByZXN1bHQKKyBwdWJuYW1l IHwgcmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9wYXJ0 X2xlYWYnXSwgJ3RibF9wYXJ0MScpOworICAgIHB1Ym5hbWUgICAgfCAgcmVsbmFtZSAgfCBhdHRy cyB8IHF1YWwgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKyBw dWJfcGFydF9sZWFmIHwgdGJsX3BhcnQxIHwgMSAyIDMgfCAKKygxIHJvdykKKworU0VMRUNUICog RlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3BhcnRfbGVhZiddLCAndGJsX3BhcmVudCcpOyAtLSBu byByZXN1bHQKKyBwdWJuYW1lIHwgcmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9n cHQoQVJSQVlbJ3B1Yl9hbGwnXSwgJ3RibF9wYXJlbnQnKTsKKyBwdWJuYW1lIHwgIHJlbG5hbWUg ICB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0K KyBwdWJfYWxsIHwgdGJsX3BhcmVudCB8IDEgMiAzIHwgCisoMSByb3cpCisKK1NFTEVDVCAqIEZS T00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGwnXSwgJ3RibF9wYXJ0MScpOyAtLSBubyByZXN1bHQK KyBwdWJuYW1lIHwgcmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlb J3B1Yl9hbGxfbm9fdmlhcm9vdCddLCAndGJsX3BhcnQxJyk7CisgICAgICBwdWJuYW1lICAgICAg IHwgIHJlbG5hbWUgIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0KKyBwdWJfYWxsX25vX3ZpYXJvb3QgfCB0YmxfcGFydDEgfCAx IDIgMyB8IAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxs X25vX3ZpYXJvb3QnXSwgJ3RibF9wYXJlbnQnKTsgLS0gbm8gcmVzdWx0CisgcHVibmFtZSB8IHJl bG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t CisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9wYXJl bnRfY2hpbGQnXSwgJ3RibF9wYXJlbnQnKTsKKyAgICAgICAgcHVibmFtZSAgICAgICAgfCAgcmVs bmFtZSAgIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tCisgcHViX3BhcnRfcGFyZW50X2NoaWxkIHwgdGJsX3BhcmVudCB8 IDEgMiAzIHwgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9w YXJ0X3BhcmVudF9jaGlsZCddLCAndGJsX3BhcnQxJyk7IC0tIG5vIHJlc3VsdAorIHB1Ym5hbWUg fCByZWxuYW1lIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tKy0t LS0tLQorKDAgcm93cykKKworLS0gdGVzdCBmb3IgdGhlIEVYQ0xVREUgY2xhdXNlCitTRUxFQ1Qg KiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdCddLCAndGJsX25vcm1hbCcpOwor ICAgIHB1Ym5hbWUgICAgIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisgcHViX2FsbF9leGNlcHQgfCB0Ymxf bm9ybWFsIHwgMSAgICAgfCAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJB WVsncHViX2FsbF9leGNlcHQnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7IC0tIG5vIHJlc3Vs dCAoZXhjbHVkZWQpCisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRl c3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdCddLCAndGJsX3BhcmVudCcpOyAtLSBubyByZXN1 bHQgKGV4Y2x1ZGVkKQorIHB1Ym5hbWUgfCByZWxuYW1lIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLQorKDAgcm93cykKKworU0VMRUNUICogRlJPTSB0 ZXN0X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHQnXSwgJ3RibF9wYXJ0MScpOyAtLSBubyByZXN1 bHQKKyBwdWJuYW1lIHwgcmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJS QVlbJ3B1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QnXSwgJ3RibF9ub3JtYWwnKTsKKyAgICAgICAg ICBwdWJuYW1lICAgICAgICAgIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKyBwdWJfYWxs X2V4Y2VwdF9ub192aWFyb290IHwgdGJsX25vcm1hbCB8IDEgICAgIHwgCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QnXSwg J2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVkZWQpCisgcHVibmFt ZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxs X2V4Y2VwdF9ub192aWFyb290J10sICd0YmxfcGFyZW50Jyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVk ZWQpCisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFS UkFZWydwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290J10sICd0YmxfcGFydDEnKTsgLS0gbm8gcmVz dWx0CisgcHVibmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCistLSB0d28gcm93cyB3aXRoIGRpZmZlcmVu dCByb3cgZmlsdGVyCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsJywgJ3B1 Yl9ub3JtYWwnXSwgJ3RibF9ub3JtYWwnKTsKKyAgcHVibmFtZSAgIHwgIHJlbG5hbWUgICB8IGF0 dHJzIHwgICBxdWFsICAgIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tCisgcHViX2FsbCAgICB8IHRibF9ub3JtYWwgfCAxICAgICB8IAorIHB1Yl9ub3JtYWwg fCB0Ymxfbm9ybWFsIHwgMSAgICAgfCAoaWQgPCAxMCkKKygyIHJvd3MpCisKKy0tIG9uZSByb3cg d2l0aCAncHViX3BhcnRfcGFyZW50JworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHVi X3BhcnRfcGFyZW50JywgJ3B1Yl9wYXJ0X3BhcmVudF9ub192aWFyb290J10sICd0YmxfcGFyZW50 Jyk7CisgICAgIHB1Ym5hbWUgICAgIHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICAgcXVhbCAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLQorIHB1 Yl9wYXJ0X3BhcmVudCB8IHRibF9wYXJlbnQgfCAxIDIgICB8IChpZDEgPSAxMCkKKygxIHJvdykK KworLS0gbm8gcmVzdWx0LCB0YmxfcGFyZW50IGlzIHRoZSBlZmZlY3RpdmUgcHVibGlzaGVkIE9J RCBkdWUgdG8gcHVidmlhcm9vdAorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3Bh cnRfcGFyZW50JywgJ3B1Yl9hbGwnXSwgJ3RibF9wYXJ0MScpOworIHB1Ym5hbWUgfCByZWxuYW1l IHwgYXR0cnMgfCBxdWFsIAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLQorKDAg cm93cykKKworLS0gbm8gcmVzdWx0LCBub24tZXhpc3RlbnQgcHVibGljYXRpb24KK1NFTEVDVCAq IEZST00gdGVzdF9ncHQoQVJSQVlbJ25vX3N1Y2hfcHViJ10sICd0Ymxfbm9ybWFsJyk7CisgcHVi bmFtZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tCisoMCByb3dzKQorCistLSBubyByZXN1bHQsIG5vbi10YWJsZSBvYmplY3QKK1NF TEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGwnXSwgJ2dwdF90ZXN0X3ZpZXcnKTsK KyBwdWJuYW1lIHwgcmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKKy0tIG5vIHJlc3VsdCwgZW1wdHkgcHVibGljYXRp b24gYXJyYXkKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbXTo6dGV4dFtdLCAndGJsX25v cm1hbCcpOworIHB1Ym5hbWUgfCByZWxuYW1lIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLQorKDAgcm93cykKKworLS0gbm8gcmVzdWx0LCBPSUQgMCBh cyB0YXJnZXRfcmVsaWQKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhB UlJBWVsncHViX25vcm1hbCddLCAwOjpvaWQpOworIHB1YmlkIHwgcmVsaWQgfCBhdHRycyB8IHF1 YWwgCistLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKKy0tIENsZWFu IHVwCitEUk9QIEZVTkNUSU9OIHRlc3RfZ3B0KHRleHRbXSwgdGV4dCk7CitEUk9QIFBVQkxJQ0FU SU9OIHB1Yl9hbGw7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdDsKK0RST1Ag UFVCTElDQVRJT04gcHViX2FsbF9leGNlcHQ7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhj ZXB0X25vX3ZpYXJvb3Q7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWE7CitEUk9QIFBVQkxJ Q0FUSU9OIHB1Yl9ub3JtYWw7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X2xlYWY7CitEUk9Q IFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudDsKK0RST1AgUFVCTElDQVRJT04gcHViX3BhcnRf cGFyZW50X25vX3ZpYXJvb3Q7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudF9jaGls ZDsKK0RST1AgVklFVyBncHRfdGVzdF92aWV3OworRFJPUCBUQUJMRSB0Ymxfbm9ybWFsLCB0Ymxf cGFyZW50LCB0YmxfcGFydDE7CitEUk9QIFNDSEVNQSBncHRfdGVzdF9zY2ggQ0FTQ0FERTsKK05P VElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gKIC0tIHN0 YWdlIG9iamVjdHMgZm9yIHBnX2R1bXAgdGVzdHMKIENSRUFURSBTQ0hFTUEgcHVibWUgQ1JFQVRF IFRBQkxFIHQwIChjIGludCwgZCBpbnQpIENSRUFURSBUQUJMRSB0MSAoYyBpbnQpOwogQ1JFQVRF IFNDSEVNQSBwdWJtZTIgQ1JFQVRFIFRBQkxFIHQwIChjIGludCwgZCBpbnQpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDIyZTBhMzBiNWM3Li4wNTdlMzY0Yzc1MyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTQyOSw2ICsxNDI5LDExMyBAQCBS RVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyLCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlcl9kdW1teTsKIAorLS0gVGVzdCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVz KHRleHRbXSwgb2lkKSBmdW5jdGlvbgorQ1JFQVRFIFNDSEVNQSBncHRfdGVzdF9zY2g7CitDUkVB VEUgVEFCTEUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2ggKGlkIGludCk7CitDUkVBVEUgVEFCTEUgdGJs X25vcm1hbCAoaWQgaW50KTsKK0NSRUFURSBUQUJMRSB0YmxfcGFyZW50IChpZDEgaW50LCBpZDIg aW50LCBpZDMgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkMSk7CitDUkVBVEUgVEFCTEUgdGJs X3BhcnQxIFBBUlRJVElPTiBPRiB0YmxfcGFyZW50IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEw KTsKK0NSRUFURSBWSUVXIGdwdF90ZXN0X3ZpZXcgQVMgU0VMRUNUICogRlJPTSB0Ymxfbm9ybWFs OworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJ T04gcHViX2FsbCBGT1IgQUxMIFRBQkxFUyBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCA9IHRydWUpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdCBGT1IgQUxM IFRBQkxFUyBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKK0NSRUFU RSBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg KHRibF9wYXJlbnQsIGdwdF90ZXN0X3NjaC50Ymxfc2NoKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCA9IGZhbHNlKTsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdF9u b192aWFyb290IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGJsX3BhcmVudCwgZ3B0X3Rl c3Rfc2NoLnRibF9zY2gpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7 CitDUkVBVEUgUFVCTElDQVRJT04gcHViX3NjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBncHRf dGVzdF9zY2g7CitDUkVBVEUgUFVCTElDQVRJT04gcHViX25vcm1hbCBGT1IgVEFCTEUgdGJsX25v cm1hbCBXSEVSRSAoaWQgPCAxMCk7CitDUkVBVEUgUFVCTElDQVRJT04gcHViX3BhcnRfbGVhZiBG T1IgVEFCTEUgdGJsX3BhcnQxIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFs c2UpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudCBGT1IgVEFCTEUgdGJsX3Bh cmVudCAoaWQxLCBpZDIpIFdIRVJFIChpZDEgPSAxMCkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSB0cnVlKTsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfcGFydF9wYXJlbnRfbm9f dmlhcm9vdCBGT1IgVEFCTEUgdGJsX3BhcmVudCBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCA9IGZhbHNlKTsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfcGFydF9wYXJlbnRfY2hpbGQg Rk9SIFRBQkxFIHRibF9wYXJlbnQsIHRibF9wYXJ0MSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCA9IHRydWUpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworQ1JFQVRFIEZV TkNUSU9OIHRlc3RfZ3B0KHB1Ym5hbWVzIHRleHRbXSwgcmVsbmFtZSB0ZXh0KQorUkVUVVJOUyBU QUJMRSAoCisgIHB1Ym5hbWUgdGV4dCwKKyAgcmVsbmFtZSBuYW1lLAorICBhdHRycyB0ZXh0LAor ICBxdWFsIHRleHQKKykKK0JFR0lOIEFUT01JQworICBTRUxFQ1QgcC5wdWJuYW1lLCBjLnJlbG5h bWUsIGdwdC5hdHRyczo6dGV4dCwgcGdfZ2V0X2V4cHIoZ3B0LnF1YWwsIGdwdC5yZWxpZCkKKyAg ICBGUk9NIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMocHVibmFtZXMsIHJlbG5hbWU6OnJlZ2Ns YXNzOjpvaWQpIGdwdAorICAgIEpPSU4gcGdfcHVibGljYXRpb24gcCBPTiBwLm9pZCA9IGdwdC5w dWJpZAorICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9IGdwdC5yZWxpZAorICBPUkRFUiBC WSBwLnB1Ym5hbWUsIGMucmVsbmFtZTsKK0VORDsKKworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChB UlJBWVsncHViX25vcm1hbCddLCAndGJsX25vcm1hbCcpOworU0VMRUNUICogRlJPTSB0ZXN0X2dw dChBUlJBWVsncHViX25vcm1hbCddLCAnZ3B0X3Rlc3Rfc2NoLnRibF9zY2gnKTsgLS0gbm8gcmVz dWx0CisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9zY2hlbWEnXSwgJ2dwdF90 ZXN0X3NjaC50Ymxfc2NoJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfc2No ZW1hJ10sICd0Ymxfbm9ybWFsJyk7IC0tIG5vIHJlc3VsdAorCitTRUxFQ1QgKiBGUk9NIHRlc3Rf Z3B0KEFSUkFZWydwdWJfcGFydF9wYXJlbnQnXSwgJ3RibF9wYXJlbnQnKTsKK1NFTEVDVCAqIEZS T00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9wYXJ0X3BhcmVudCddLCAndGJsX3BhcnQxJyk7IC0tIG5v IHJlc3VsdAorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9wYXJlbnRf bm9fdmlhcm9vdCddLCAndGJsX3BhcnQxJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZ WydwdWJfcGFydF9wYXJlbnRfbm9fdmlhcm9vdCddLCAndGJsX3BhcmVudCcpOyAtLSBubyByZXN1 bHQKKworU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3BhcnRfbGVhZiddLCAndGJs X3BhcnQxJyk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfcGFydF9sZWFmJ10s ICd0YmxfcGFyZW50Jyk7IC0tIG5vIHJlc3VsdAorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFS UkFZWydwdWJfYWxsJ10sICd0YmxfcGFyZW50Jyk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFS UkFZWydwdWJfYWxsJ10sICd0YmxfcGFydDEnKTsgLS0gbm8gcmVzdWx0CisKK1NFTEVDVCAqIEZS T00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfbm9fdmlhcm9vdCddLCAndGJsX3BhcnQxJyk7CitT RUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX25vX3ZpYXJvb3QnXSwgJ3RibF9w YXJlbnQnKTsgLS0gbm8gcmVzdWx0CisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1 Yl9wYXJ0X3BhcmVudF9jaGlsZCddLCAndGJsX3BhcmVudCcpOworU0VMRUNUICogRlJPTSB0ZXN0 X2dwdChBUlJBWVsncHViX3BhcnRfcGFyZW50X2NoaWxkJ10sICd0YmxfcGFydDEnKTsgLS0gbm8g cmVzdWx0CisKKy0tIHRlc3QgZm9yIHRoZSBFWENMVURFIGNsYXVzZQorU0VMRUNUICogRlJPTSB0 ZXN0X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHQnXSwgJ3RibF9ub3JtYWwnKTsKK1NFTEVDVCAq IEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfZXhjZXB0J10sICdncHRfdGVzdF9zY2gudGJs X3NjaCcpOyAtLSBubyByZXN1bHQgKGV4Y2x1ZGVkKQorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChB UlJBWVsncHViX2FsbF9leGNlcHQnXSwgJ3RibF9wYXJlbnQnKTsgLS0gbm8gcmVzdWx0IChleGNs dWRlZCkKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfZXhjZXB0J10sICd0 YmxfcGFydDEnKTsgLS0gbm8gcmVzdWx0CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydw dWJfYWxsX2V4Y2VwdF9ub192aWFyb290J10sICd0Ymxfbm9ybWFsJyk7CitTRUxFQ1QgKiBGUk9N IHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290J10sICdncHRfdGVzdF9z Y2gudGJsX3NjaCcpOyAtLSBubyByZXN1bHQgKGV4Y2x1ZGVkKQorU0VMRUNUICogRlJPTSB0ZXN0 X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHRfbm9fdmlhcm9vdCddLCAndGJsX3BhcmVudCcpOyAt LSBubyByZXN1bHQgKGV4Y2x1ZGVkKQorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHVi X2FsbF9leGNlcHRfbm9fdmlhcm9vdCddLCAndGJsX3BhcnQxJyk7IC0tIG5vIHJlc3VsdAorCist LSB0d28gcm93cyB3aXRoIGRpZmZlcmVudCByb3cgZmlsdGVyCitTRUxFQ1QgKiBGUk9NIHRlc3Rf Z3B0KEFSUkFZWydwdWJfYWxsJywgJ3B1Yl9ub3JtYWwnXSwgJ3RibF9ub3JtYWwnKTsKKworLS0g b25lIHJvdyB3aXRoICdwdWJfcGFydF9wYXJlbnQnCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFS UkFZWydwdWJfcGFydF9wYXJlbnQnLCAncHViX3BhcnRfcGFyZW50X25vX3ZpYXJvb3QnXSwgJ3Ri bF9wYXJlbnQnKTsKKworLS0gbm8gcmVzdWx0LCB0YmxfcGFyZW50IGlzIHRoZSBlZmZlY3RpdmUg cHVibGlzaGVkIE9JRCBkdWUgdG8gcHVidmlhcm9vdAorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChB UlJBWVsncHViX3BhcnRfcGFyZW50JywgJ3B1Yl9hbGwnXSwgJ3RibF9wYXJ0MScpOworCistLSBu byByZXN1bHQsIG5vbi1leGlzdGVudCBwdWJsaWNhdGlvbgorU0VMRUNUICogRlJPTSB0ZXN0X2dw dChBUlJBWVsnbm9fc3VjaF9wdWInXSwgJ3RibF9ub3JtYWwnKTsKKworLS0gbm8gcmVzdWx0LCBu b24tdGFibGUgb2JqZWN0CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsJ10s ICdncHRfdGVzdF92aWV3Jyk7CisKKy0tIG5vIHJlc3VsdCwgZW1wdHkgcHVibGljYXRpb24gYXJy YXkKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbXTo6dGV4dFtdLCAndGJsX25vcm1hbCcp OworCistLSBubyByZXN1bHQsIE9JRCAwIGFzIHRhcmdldF9yZWxpZAorU0VMRUNUICogRlJPTSBw Z19nZXRfcHVibGljYXRpb25fdGFibGVzKEFSUkFZWydwdWJfbm9ybWFsJ10sIDA6Om9pZCk7CisK Ky0tIENsZWFuIHVwCitEUk9QIEZVTkNUSU9OIHRlc3RfZ3B0KHRleHRbXSwgdGV4dCk7CitEUk9Q IFBVQkxJQ0FUSU9OIHB1Yl9hbGw7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9v dDsKK0RST1AgUFVCTElDQVRJT04gcHViX2FsbF9leGNlcHQ7CitEUk9QIFBVQkxJQ0FUSU9OIHB1 Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3Q7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWE7CitE Uk9QIFBVQkxJQ0FUSU9OIHB1Yl9ub3JtYWw7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X2xl YWY7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudDsKK0RST1AgUFVCTElDQVRJT04g cHViX3BhcnRfcGFyZW50X25vX3ZpYXJvb3Q7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3Bh cmVudF9jaGlsZDsKK0RST1AgVklFVyBncHRfdGVzdF92aWV3OworRFJPUCBUQUJMRSB0Ymxfbm9y bWFsLCB0YmxfcGFyZW50LCB0YmxfcGFydDE7CitEUk9QIFNDSEVNQSBncHRfdGVzdF9zY2ggQ0FT Q0FERTsKKwogLS0gc3RhZ2Ugb2JqZWN0cyBmb3IgcGdfZHVtcCB0ZXN0cwogQ1JFQVRFIFNDSEVN QSBwdWJtZSBDUkVBVEUgVEFCTEUgdDAgKGMgaW50LCBkIGludCkgQ1JFQVRFIFRBQkxFIHQxIChj IGludCk7CiBDUkVBVEUgU0NIRU1BIHB1Ym1lMiBDUkVBVEUgVEFCTEUgdDAgKGMgaW50LCBkIGlu dCk7Ci0tIAoyLjUzLjAKCg== --00000000000042cf35064dfb801d--