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 1vYNIZ-0021kt-0d for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Dec 2025 11:45:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vYNIY-004XZE-0V for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Dec 2025 11:44:58 +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 1vYNIX-004XZ6-1s for pgsql-hackers@lists.postgresql.org; Wed, 24 Dec 2025 11:44:58 +0000 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vYNIV-002OG6-2j for pgsql-hackers@postgresql.org; Wed, 24 Dec 2025 11:44:56 +0000 Received: by mail-ot1-x32e.google.com with SMTP id 46e09a7af769-7c6dbdaced8so4674025a34.1 for ; Wed, 24 Dec 2025 03:44:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1766576694; x=1767181494; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=l8Qqw9gBoQf8BL4s9ci7V8Guu7duNZtQ/ptnpu+Ttbs=; b=bAQE4Xr4l6kmmbmy/X2Sm/fcpHgcNg4j97/g4Gl7HeGUYVo5mGGaaZfUk3SjIAODth VJDvrRmqGwyO8vDRNwnm5PQSmIillRprqfU61Ysf7vg29F8XINpkKpJDz/Ly2Pt3WeNy deQfpVcNlLOgAFGeyvSri/ghFULwmjsikHIxOL1BzXir15U+mgV5Q0bqYYNman4p4Fyj NYWZECy2yHEO+Jh+RPesRI+cyjpjOhZ2y3nj0j4vd4dVnvCB8Db3KJY4W6N4qVMoBLf7 9bni48/KGmbxb2DiRZXOSnR3kzd8fjEoHxIT9Gq4XIH06J4K7Fbwv3vVKuID54I5q1Ut S2Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766576694; x=1767181494; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=l8Qqw9gBoQf8BL4s9ci7V8Guu7duNZtQ/ptnpu+Ttbs=; b=tDRiZU276NjruV0gbcCKu8S6S+w3MEPzKGGOXJC8E7ic2HV4CnedxFDHqhNm1D7Xt6 pKYZZEWFlecROc7+cx77AfNACynyr7UROWCPPiKFNWI+19TjvKLJxjI0I8rjWd5aoMK6 ahY5r5aKfH1VQSwB24Wt3iXN6JsB/NsMAkcGV0MwmEOauYbCBu7CzFBH3GL2I03UOH0Q gHkJPUOYhAdPV21/J9Yw2lhISGsJsPtqyOw93XQ3u+LVoCxaVWUDCI/d8tH1PqSbx54b 5BcKkDXQCrgu0VqaRdmu5qHufFZb/lKHM06bzNuLmRApivdUUCGvMpLkRK7SlgfY4dHd MJwg== X-Gm-Message-State: AOJu0Yy8wyFZmQtnp4wZlm4VLO/J6qVMb+50Yc3onzq9QRBtyLIAUIM3 hE+czcXvp9BFXFKeoF07zcs/3uhRX6LFwGgHasA5p+F+Irvyi8fPHSxX5H+vXZGCCxeuV+S/jk4 o3+CMXrr4SzTfMo3PTrutb2cbtIs0mOF0T3E8cSlRQEoEIWO8PAHJ8Q== X-Gm-Gg: AY/fxX7KFvLB/3pZqgAE+f4ylYQf7d8F4cwCr/2tpaMup5r63FQPIWsvpRnpQpdGmdc 1xT7hpt1c/Gt9/3Geow9Hobw6S36yfXXsnnmh1uwJEY1FSrCNZzYUbBU6IPYJkYBauJysKANglx N7oxF7Gngj45fEtD7CurvGk1FVgyHlM1VpvYa5bQmsZUferUQJFkqmLkipD2iVIVmjBGhSpe8+W Cn/83xloReq6vSWAbPT2hUp2zjxLoDakU0cmpdlj/yvCeGBibpVsW8FCM+Ta3af1upr2lt/zg== X-Google-Smtp-Source: AGHT+IH4DwVKoQZrXczAzfDU5JYgJ6NDoUZu54oM9OP5MITrikSStr+guzOP3IH9+HCqRqlgSI3UXMALoAdocr9M6aY= X-Received: by 2002:a05:6830:82ca:b0:7cc:4d72:586f with SMTP id 46e09a7af769-7cc66a9564dmr10276099a34.31.1766576694401; Wed, 24 Dec 2025 03:44:54 -0800 (PST) MIME-Version: 1.0 From: Jeevan Chalke Date: Wed, 24 Dec 2025 17:14:18 +0530 X-Gm-Features: AQt7F2qrLZBkS5Aoc4tqHgr6_zdSUFs2LVHK6ghxAie_1FCfG2xtLZFukTmhrCw Message-ID: Subject: Add --extra-dependencies and immediate data dumping for pg_dump/pg_upgrade To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000056c6d90646b130a4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000056c6d90646b130a4 Content-Type: multipart/alternative; boundary="00000000000056c6d80646b130a2" --00000000000056c6d80646b130a2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Hackers, We have identified a dependency issue=E2=80=94most notably observed with th= e PostGIS extension=E2=80=94where a table's column definition relies on data = existing in another table's catalog at restore time. Because pg_dump typically separates schema and data into distinct sections, these implicit data-level dependencies are not captured, leading to failures during pg_upgrade or pg_restore. Jakub Wartak previously reported a detailed example of this issue here: https://www.postgresql.org/message-id/CAKZiRmwWyh-yGM8Hrvuuo04JiYFy8S4TLM-3= Mn-zi9Rfqc744Q%40mail.gmail.com Following a discussion with Alvaro Herrera, we have developed a patch based on his suggestions. The Problem In certain extension-heavy schemas, an object's schema definition cannot be created unless another table's data is already populated. Current pg_dump logic handles schema-to-schema dependencies via pg_depend, but it lacks a mechanism to: 1. Enforce a specific order for dependencies not recorded in pg_depend. 2. Interleave data loading with schema creation for specific tables. Proposed Solution This patch introduces a new option, --extra-dependencies, for pg_dump and pg_upgrade. *1. Dependency Hinting:* The option allows users to provide manual dependency hints in the format table#referenced_table. Internally, pg_dump treats these as "faked" dependencies, ensuring the referenced table is sorted before the dependent object in the dump graph, similar to standard pg_depend entries. *2. Immediate Data Dumping:* To satisfy the data-level requirement, the patch ensures that any table referenced via this option has its data dumped immediately following its definition (utilizing the dumpTableData() infrastructure) rather than in the general DATA section of the dump. Use Case While this is a specialized tool intended for unrecorded dependencies (like those in PostGIS), it provides a necessary safety valve for migrations that currently require manual intervention or complex workarounds. Attached are the patches (PoC) for review. We look forward to your thoughts and suggestions. Regards, --=20 *Jeevan Chalke* *Principal Engineer, Engineering Manager* *Product Development* enterprisedb.com --00000000000056c6d80646b130a2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hello Hackers,

We have identified a dependency issue=E2=80= =94most notably observed with the PostGIS extension=E2=80=94where a table&#= 39;s column definition relies on data existing in another table's catal= og at restore time. Because pg_dump typically separates schema= and data into distinct sections, these implicit data-level dependencies ar= e not captured, leading to failures during pg_upgrade or pg_restore.

Jakub Wartak previously reported a detailed examp= le of this issue here: https://www.postgresql.org/message-id/CAKZiRmwWyh-y= GM8Hrvuuo04JiYFy8S4TLM-3Mn-zi9Rfqc744Q%40mail.gmail.com

Following a discussion with Alvaro Herrera, we have developed a patch = based on his suggestions.

The Problem

In certain extension-he= avy schemas, an object's schema definition cannot be created unless ano= ther table's data is already populated. Current pg_dump lo= gic handles schema-to-schema dependencies via pg_depend, but i= t lacks a mechanism to:

  1. Enforce a specific order = for dependencies not recorded in pg_depend.

  2. Int= erleave data loading with schema creation for specific tables.

  3. Proposed Solution

    This patch introduces a new option, --e= xtra-dependencies, for pg_dump and pg_upgrade.

    1. Dependency Hinting: The option allows users to provide manual dependency hints in the format table#referenced_table. Internally, pg_dump treats = these as "faked" dependencies, ensuring the referenced table is s= orted before the dependent object in the dump graph, similar to standard pg_depend entries.

    2. Immediate Data Dumping: To satisfy the data-level requirement, the patch ensures that any table ref= erenced via this option has its data dumped immediately following its defin= ition (utilizing the dumpTableData() infrastructure) rather th= an in the general DATA section of the dump.

    Use Case

    While th= is is a specialized tool intended for unrecorded dependencies (like those i= n PostGIS), it provides a necessary safety valve for migrations that curren= tly require manual intervention or complex workarounds.

    Attached are = the patches (PoC) for review. We look forward to your thoughts and suggesti= ons.

    Regards,


--
Jeevan Chalke
Principal Engineer, Engineering Manager
Product Dev= elopment


enterprisedb.com
--00000000000056c6d80646b130a2-- --00000000000056c6d90646b130a4 Content-Type: application/octet-stream; name="v1-0001-pg_dump-Add-extra-dependencies-option.patch" Content-Disposition: attachment; filename="v1-0001-pg_dump-Add-extra-dependencies-option.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjjxysca0 RnJvbSBlYjQxYjA0MmUyNTE0OTZiNDYyNTA0YjQ3Mzc1NmVjZjBjZDdmNDRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWV2YW4gQ2hhbGtlIDxqZWV2YW4uY2hhbGtlQGVudGVycHJp c2VkYi5jb20+CkRhdGU6IFdlZCwgMjQgRGVjIDIwMjUgMTM6MzE6MTcgKzA1MzAKU3ViamVjdDog W1BBVENIIHYxIDEvMl0gcGdfZHVtcDogQWRkIC0tZXh0cmEtZGVwZW5kZW5jaWVzIG9wdGlvbgoK VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBuZXcgLS1leHRyYS1kZXBlbmRlbmNpZXMgb3B0aW9u IHRvIHBnX2R1bXAuClRoaXMgYWxsb3dzIHVzZXJzIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBkZXBl bmRlbmN5IGhpbnRzIGZvcgpyZW9yZGVyaW5nIGR1bXBhYmxlIG9iamVjdHMuICBUaGUgZ29hbCBp cyB0byBvdmVyY29tZSBwZ191cGdyYWRlCmZhaWx1cmVzIHRoYXQgb2NjdXIgd2hlbiBleHRlbnNp b25zIGhhdmUgZGVwZW5kZW5jaWVzIG5vdCBmdWxseQp0cmFja2VkIGluIHBnX2RlcGVuZC4KClRo ZSBvcHRpb24gYWNjZXB0cyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGRlcGVuZGVuY2llcyBp biB0aGUKZm9ybWF0OiAidGFibGUtbmFtZSNyZWYtdGFibGUtbmFtZSIuCgpXaGVuIHRoaXMgb3B0 aW9uIGlzIHVzZWQsIHRoZSBkYXRhIGZvciB0aGUgcmVmZXJyZWQgdGFibGUKKHJlZi10YWJsZS1u YW1lKSBpcyBkdW1wZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXRzIGRlZmluaXRpb24gaXMKY3JlYXRl ZCwgdXRpbGl6aW5nIHRoZSBkdW1wVGFibGVEYXRhKCkgaW5mcmFzdHJ1Y3R1cmUuICBUaGlzIGVu c3VyZXMKdGhhdCBhbnkgc3Vic2VxdWVudCBvYmplY3QgdGhhdCBkZXBlbmRzIG9uIHRoZSBkYXRh IG9mIHRoZSByZWZlcnJlZAp0YWJsZSAoYW5kIG5vdCBqdXN0IGl0cyBzY2hlbWEpIGRvZXMgbm90 IGZhaWwgZHVyaW5nIHJlc3RvcmUuCgpGb3Igbm93LCBmaWx0ZXIgY29uZGl0aW9ucyBhcmUgaWdu b3JlZCBkdXJpbmcgdGhpcyBpbW1lZGlhdGUgZHVtcC4KT25jZSB0aGUgZGF0YSBpcyBkdW1wZWQs IHRoZSBjb3JyZXNwb25kaW5nIGR1bXAgb2JqZWN0IChkb2JqLmR1bXApCmlzIHNldCB0byBEVU1Q X0NPTVBPTkVOVF9OT05FIHRvIHByZXZlbnQgdGhlIGRhdGEgZnJvbSBiZWluZyBkdW1wZWQKYWdh aW4gZHVyaW5nIHRoZSByZWd1bGFyIGZsb3cuCgpKZWV2YW4gQ2hhbGtlLCBwZXIgc3VnZ2VzdGlv biBmcm9tIEFsdmFybyBIZXJyZXJhLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21s ICAgICAgICB8ICAyNCArKysrCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMg fCAgIDMgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgIHwgMTY1ICsrKysr KysrKysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAxODcgaW5zZXJ0aW9ucygr KSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCmluZGV4IDY4OGUyM2MwZTkwLi4w N2QxNTBhMTUyZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwKQEAgLTg2Nyw2ICs4NjcsMzAgQEAgUG9z dGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tLWV4dHJh LWRlcGVuZGVuY2llcz08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGVwZW5kZW5jeWxp c3Q8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHRvIHNwZWNpZnkgYWRkaXRpb25hbCBk ZXBlbmRlbmNpZXMgd2hlbiBkZXRlcm1pbmluZworICAgICAgICB0aGUgdGFibGUgZHVtcCBvcmRl ci4gIEVhY2ggZGVwZW5kZW5jeSBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBmb3JtYXQKKyAgICAg ICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlbmFtZSNyZWZlcnJlZHRhYmxl bmFtZTwvcmVwbGFjZWFibGU+LAorICAgICAgICB3aXRoIG11bHRpcGxlIHBhaXJzIHNlcGFyYXRl ZCBieSBjb21tYXMuICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUKKyAgICAgICAgcmVmZXJyZWQgdGFi bGUgaXMgZHVtcGVkIGFuZCBpdHMgZGF0YSBsb2FkZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXRzCisg ICAgICAgIGNyZWF0aW9uLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg VGhpcyBpcyBhIHNwZWNpYWwtcHVycG9zZSBvcHRpb24gaW50ZW5kZWQgZm9yIGNhc2VzIHdoZXJl IGEgcmVxdWlyZWQKKyAgICAgICAgZGVwZW5kZW5jeSBpcyBub3QgcmVjb3JkZWQgaW4gdGhlIDxs aXRlcmFsPnBnX2RlcGVuZDwvbGl0ZXJhbD4gc3lzdGVtCisgICAgICAgIGNhdGFsb2csIHN1Y2gg YXMgd2l0aCBjZXJ0YWluIDxhcHBsaWNhdGlvbj5Qb3N0R0lTPC9hcHBsaWNhdGlvbj4KKyAgICAg ICAgY29uZmlndXJhdGlvbnMuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICBOb3RlIHRoYXQgYW55IHRhYmxlIGZpbHRlcnMgYXJlIGlnbm9yZWQgZHVyaW5nIHRoaXMgUFJF LWR1bXAgcGhhc2U7CisgICAgICAgIGRhdGEgaXMgZXhwb3J0ZWQgd2l0aG91dCByZWdhcmQgdG8g ZXhpc3RpbmcgZmlsdGVyIGNvbmRpdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlz dGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg ICA8dGVybT48b3B0aW9uPi0tZXh0cmEtZmxvYXQtZGlnaXRzPTxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uZGlnaXRzPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVy LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggNGE2M2Y3Mzky YWUuLmJmOTZiMTg2YzgwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2Fy Y2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0z MzAwLDEwICszMzAwLDEzIEBAIF90b2NFbnRyeVJlcXVpcmVkKFRvY0VudHJ5ICp0ZSwgdGVTZWN0 aW9uIGN1clNlY3Rpb24sIEFyY2hpdmVIYW5kbGUgKkFIKQogCQkgKiBvdXQgbGFyZ2Ugb2JqZWN0 cy4gIChPbmx5IGxhcmdlIG9iamVjdCBkZWZpbml0aW9ucywgY29tbWVudHMgYW5kCiAJCSAqIG90 aGVyIG1ldGFkYXRhIHNob3VsZCBiZSBnZW5lcmF0ZWQgaW4gYmluYXJ5LXVwZ3JhZGUgbW9kZSwg bm90IHRoZQogCQkgKiBhY3R1YWwgZGF0YSwgYnV0IHRoYXQgbmVlZCBub3QgY29uY2VybiB1cyBo ZXJlLikKKwkJICoKKwkJICogRm9yY2UgaW1tZWRpYXRlIGRhdGEgZHVtcCBpZiByZXF1ZXN0ZWQs IGV2ZW4gd2l0aCBkdW1wRGF0YSBpcyB1bnNldC4KIAkJICovCiAJCWlmICghKHJvcHQtPnNlcXVl bmNlX2RhdGEgJiYgc3RyY21wKHRlLT5kZXNjLCAiU0VRVUVOQ0UgU0VUIikgPT0gMCkgJiYKIAkJ CSEocm9wdC0+YmluYXJ5X3VwZ3JhZGUgJiYKIAkJCSAgKHN0cmNtcCh0ZS0+ZGVzYywgIkJMT0Ii KSA9PSAwIHx8CisJCQkgICBzdHJjbXAodGUtPmRlc2MsICJJTU1FRElBVEUgVEFCTEUgREFUQSIp ID09IDAgfHwKIAkJCSAgIHN0cmNtcCh0ZS0+ZGVzYywgIkJMT0IgTUVUQURBVEEiKSA9PSAwIHx8 CiAJCQkgICAoc3RyY21wKHRlLT5kZXNjLCAiQUNMIikgPT0gMCAmJgogCQkJCXN0cm5jbXAodGUt PnRhZywgIkxBUkdFIE9CSkVDVCIsIDEyKSA9PSAwKSB8fApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMjdmNmJl M2YwZjguLjM0OWM2MzkwOWVhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTE3Niw2ICsxNzYsNyBAQCBzdGF0 aWMgU2ltcGxlT2lkTGlzdCB0YWJsZV9leGNsdWRlX29pZHMgPSB7TlVMTCwgTlVMTH07CiBzdGF0 aWMgU2ltcGxlU3RyaW5nTGlzdCB0YWJsZWRhdGFfZXhjbHVkZV9wYXR0ZXJucyA9IHtOVUxMLCBO VUxMfTsKIHN0YXRpYyBTaW1wbGVTdHJpbmdMaXN0IHRhYmxlZGF0YV9leGNsdWRlX3BhdHRlcm5z X2FuZF9jaGlsZHJlbiA9IHtOVUxMLCBOVUxMfTsKIHN0YXRpYyBTaW1wbGVPaWRMaXN0IHRhYmxl ZGF0YV9leGNsdWRlX29pZHMgPSB7TlVMTCwgTlVMTH07CitzdGF0aWMgU2ltcGxlT2lkTGlzdCBp bW1lZGlhdGVfdGFibGVkYXRhX29pZHMgPSB7TlVMTCwgTlVMTH07CiAKIHN0YXRpYyBTaW1wbGVT dHJpbmdMaXN0IGZvcmVpZ25fc2VydmVyc19pbmNsdWRlX3BhdHRlcm5zID0ge05VTEwsIE5VTEx9 Owogc3RhdGljIFNpbXBsZU9pZExpc3QgZm9yZWlnbl9zZXJ2ZXJzX2luY2x1ZGVfb2lkcyA9IHtO VUxMLCBOVUxMfTsKQEAgLTI2Niw3ICsyNjcsOCBAQCBzdGF0aWMgdm9pZCBwcm9oaWJpdF9jcm9z c2RiX3JlZnMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkYm5hbWUsCiAJCQkJCQkJCSAgY29u c3QgY2hhciAqcGF0dGVybik7CiAKIHN0YXRpYyBOYW1lc3BhY2VJbmZvICpmaW5kTmFtZXNwYWNl KE9pZCBuc29pZCk7Ci1zdGF0aWMgdm9pZCBkdW1wVGFibGVEYXRhKEFyY2hpdmUgKmZvdXQsIGNv bnN0IFRhYmxlRGF0YUluZm8gKnRkaW5mbyk7CitzdGF0aWMgdm9pZCBkdW1wVGFibGVEYXRhKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlRGF0YUluZm8gKnRkaW5mbywKKwkJCQkJCSAgYm9vbCBp c1ByZSk7CiBzdGF0aWMgdm9pZCByZWZyZXNoTWF0Vmlld0RhdGEoQXJjaGl2ZSAqZm91dCwgY29u c3QgVGFibGVEYXRhSW5mbyAqdGRpbmZvKTsKIHN0YXRpYyBjb25zdCBjaGFyICpnZXRSb2xlTmFt ZShjb25zdCBjaGFyICpyb2xlb2lkX3N0cik7CiBzdGF0aWMgdm9pZCBjb2xsZWN0Um9sZU5hbWVz KEFyY2hpdmUgKmZvdXQpOwpAQCAtMzUwLDYgKzM1Miw4IEBAIHN0YXRpYyB2b2lkIGZpbmREdW1w YWJsZURlcGVuZGVuY2llcyhBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgRHVtcGFibGVPYmplY3Qg KmRvCiBzdGF0aWMgRHVtcGFibGVPYmplY3QgKmNyZWF0ZUJvdW5kYXJ5T2JqZWN0cyh2b2lkKTsK IHN0YXRpYyB2b2lkIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoqZG9i anMsIGludCBudW1PYmpzLAogCQkJCQkJCQkJRHVtcGFibGVPYmplY3QgKmJvdW5kYXJ5T2Jqcyk7 CitzdGF0aWMgdm9pZCBhZGRFeHRyYURlcGVuZGVuY2llcyhBcmNoaXZlICpmb3V0LCBEdW1wT3B0 aW9ucyAqZG9wdCwKKwkJCQkJCQkJIGNoYXIgKmV4dHJhX2RlcGVuZGVuY2llcyk7CiAKIHN0YXRp YyB2b2lkIGFkZENvbnN0ckNoaWxkSWR4RGVwcyhEdW1wYWJsZU9iamVjdCAqZG9iaiwgY29uc3Qg SW5keEluZm8gKnJlZmlkeCk7CiBzdGF0aWMgdm9pZCBnZXREb21haW5Db25zdHJhaW50cyhBcmNo aXZlICpmb3V0LCBUeXBlSW5mbyAqdHlpbmZvKTsKQEAgLTQ1Myw2ICs0NTcsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAlib29sCQlub19kYXRhID0gZmFsc2U7CiAJYm9vbAkJbm9f c2NoZW1hID0gZmFsc2U7CiAJYm9vbAkJbm9fc3RhdGlzdGljcyA9IGZhbHNlOworCWNoYXIJICAg KmV4dHJhX2RlcGVuZGVuY2llcyA9IE5VTEw7CiAKIAlzdGF0aWMgRHVtcE9wdGlvbnMgZG9wdDsK IApAQCAtNTM4LDYgKzU0Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7ImV4 Y2x1ZGUtZXh0ZW5zaW9uIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDE3fSwKIAkJeyJzZXF1 ZW5jZS1kYXRhIiwgbm9fYXJndW1lbnQsICZkb3B0LnNlcXVlbmNlX2RhdGEsIDF9LAogCQl7InJl c3RyaWN0LWtleSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAyNX0sCisJCXsiZXh0cmEtZGVw ZW5kZW5jaWVzIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDI2fSwKIAogCQl7TlVMTCwgMCwg TlVMTCwgMH0KIAl9OwpAQCAtODAyLDYgKzgwOCwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAkJCQlkb3B0LnJlc3RyaWN0X2tleSA9IHBnX3N0cmR1cChvcHRhcmcpOwogCQkJCWJy ZWFrOwogCisJCQljYXNlIDI2OgorCQkJCWV4dHJhX2RlcGVuZGVuY2llcyA9IHBnX3N0cmR1cChv cHRhcmcpOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCS8qIGdldG9wdF9sb25nIGFs cmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwogCQkJCXBnX2xvZ19lcnJvcl9oaW50KCJUcnkg XCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7CkBAIC0xMTc1 LDYgKzExODUsMTggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaWYgKGRvcHQub3V0 cHV0TE9zIHx8IGRvcHQuYmluYXJ5X3VwZ3JhZGUpCiAJCWdldExPcyhmb3V0KTsKIAorCS8qCisJ ICogQWRkIHVzZXIgZ2l2ZW4gZGVwZW5kZW5jaWVzLCBpZiBhbnkuCisJICoKKwkgKiBFbnN1cmUg dGhlIHJlZmVyZW5jZWQgdGFibGUgaXMgZHVtcGVkIGJlZm9yZSB0aGUgZGVwZW5kZW50IHRhYmxl LiAgV2hlbgorCSAqIHRoaXMgb3B0aW9uIGlzIHVzZWQsIHRoZSByZWZlcmVuY2VkIHRhYmxlJ3Mg ZGF0YSBpcyBkdW1wZWQgaW1tZWRpYXRlbHkKKwkgKiBhZnRlciBpdHMgZGVmaW5pdGlvbiB2aWEg ZHVtcFRhYmxlRGF0YSgpLiAgVGhpcyBwcmV2ZW50cyByZXN0b3JlLXRpbWUKKwkgKiBmYWlsdXJl cyBmb3Igb2JqZWN0cyB0aGF0IGRlcGVuZCBvbiB0aGUgdGFibGUncyBkYXRhIHJhdGhlciB0aGFu IGp1c3QKKwkgKiBpdHMgc2NoZW1hLiAgU2VlIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBt b3JlIGRldGFpbHMuCisJICovCisJaWYgKGV4dHJhX2RlcGVuZGVuY2llcykKKwkJYWRkRXh0cmFE ZXBlbmRlbmNpZXMoZm91dCwgJmRvcHQsIGV4dHJhX2RlcGVuZGVuY2llcyk7CisKIAkvKgogCSAq IENvbGxlY3QgZGVwZW5kZW5jeSBkYXRhIHRvIGFzc2lzdCBpbiBvcmRlcmluZyB0aGUgb2JqZWN0 cy4KIAkgKi8KQEAgLTEzNjgsNiArMTM5MCw4IEBAIGhlbHAoY29uc3QgY2hhciAqcHJvZ25hbWUp CiAJcHJpbnRmKF8oIiAgLS1leGNsdWRlLXRhYmxlLWRhdGEtYW5kLWNoaWxkcmVuPVBBVFRFUk5c biIKIAkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIE5PVCBkdW1wIGRhdGEg Zm9yIHRoZSBzcGVjaWZpZWQgdGFibGUocyksXG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbmNsdWRpbmcgY2hpbGQgYW5kIHBhcnRpdGlvbiB0YWJsZXNcbiIpKTsKKwlw cmludGYoXygiICAtLWV4dHJhLWRlcGVuZGVuY2llcz1ERVBFTkRFTkNZTElTVFxuIgorCQkJICIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lkZXIgdGhlc2UgZXh0cmEgZGVwZW5k ZW5jaWVzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1leHRyYS1mbG9hdC1kaWdpdHM9TlVNICAgICBv dmVycmlkZSBkZWZhdWx0IHNldHRpbmcgZm9yIGV4dHJhX2Zsb2F0X2RpZ2l0c1xuIikpOwogCXBy aW50ZihfKCIgIC0tZmlsdGVyPUZJTEVOQU1FICAgICAgICAgICAgaW5jbHVkZSBvciBleGNsdWRl IG9iamVjdHMgYW5kIGRhdGEgZnJvbSBkdW1wXG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBiYXNlZCBvbiBleHByZXNzaW9ucyBpbiBGSUxFTkFNRVxuIikpOwpAQCAtMjg2 Nyw3ICsyODkxLDcgQEAgZm9yY2VQYXJ0aXRpb25Sb290TG9hZChjb25zdCBUYWJsZUluZm8gKnRi aW5mbykKICAqIEFjdHVhbGx5LCB0aGlzIGp1c3QgbWFrZXMgYW4gQXJjaGl2ZUVudHJ5IGZvciB0 aGUgdGFibGUgY29udGVudHMuCiAgKi8KIHN0YXRpYyB2b2lkCi1kdW1wVGFibGVEYXRhKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFRhYmxlRGF0YUluZm8gKnRkaW5mbykKK2R1bXBUYWJsZURhdGEoQXJj aGl2ZSAqZm91dCwgY29uc3QgVGFibGVEYXRhSW5mbyAqdGRpbmZvLCBib29sIGlzUHJlKQogewog CUR1bXBPcHRpb25zICpkb3B0ID0gZm91dC0+ZG9wdDsKIAlUYWJsZUluZm8gICp0YmluZm8gPSB0 ZGluZm8tPnRkdGFibGU7CkBAIC0yOTM2LDggKzI5NjAsOCBAQCBkdW1wVGFibGVEYXRhKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFRhYmxlRGF0YUluZm8gKnRkaW5mbykKIAkJCQkJCSAgQVJDSElWRV9P UFRTKC50YWcgPSB0YmluZm8tPmRvYmoubmFtZSwKIAkJCQkJCQkJCSAgIC5uYW1lc3BhY2UgPSB0 YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsCiAJCQkJCQkJCQkgICAub3duZXIgPSB0 YmluZm8tPnJvbG5hbWUsCi0JCQkJCQkJCQkgICAuZGVzY3JpcHRpb24gPSAiVEFCTEUgREFUQSIs Ci0JCQkJCQkJCQkgICAuc2VjdGlvbiA9IFNFQ1RJT05fREFUQSwKKwkJCQkJCQkJCSAgIC5kZXNj cmlwdGlvbiA9IGlzUHJlID8gIklNTUVESUFURSBUQUJMRSBEQVRBIjogIlRBQkxFIERBVEEiLAor CQkJCQkJCQkJICAgLnNlY3Rpb24gPSBpc1ByZSA/IFNFQ1RJT05fUFJFX0RBVEEgOiBTRUNUSU9O X0RBVEEsCiAJCQkJCQkJCQkgICAuY3JlYXRlU3RtdCA9IHRkRGVmbiwKIAkJCQkJCQkJCSAgIC5j b3B5U3RtdCA9IGNvcHlTdG10LAogCQkJCQkJCQkJICAgLmRlcHMgPSAmKHRiaW5mby0+ZG9iai5k dW1wSWQpLApAQCAtMTE3NTgsNyArMTE3ODIsNyBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2 ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCQlkdW1wU2VxdWVuY2VEYXRhKGZvdXQs IChjb25zdCBUYWJsZURhdGFJbmZvICopIGRvYmopOwogCQkJYnJlYWs7CiAJCWNhc2UgRE9fVEFC TEVfREFUQToKLQkJCWR1bXBUYWJsZURhdGEoZm91dCwgKGNvbnN0IFRhYmxlRGF0YUluZm8gKikg ZG9iaik7CisJCQlkdW1wVGFibGVEYXRhKGZvdXQsIChjb25zdCBUYWJsZURhdGFJbmZvICopIGRv YmosIGZhbHNlKTsKIAkJCWJyZWFrOwogCQljYXNlIERPX0RVTU1ZX1RZUEU6CiAJCQkvKiB0YWJs ZSByb3d0eXBlcyBhbmQgYXJyYXkgdHlwZXMgYXJlIG5ldmVyIGR1bXBlZCBzZXBhcmF0ZWx5ICov CkBAIC0xODA4MSw2ICsxODEwNSwzNCBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwg Y29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQlkdW1wVGFibGVDb25zdHJhaW50Q29tbWVudChm b3V0LCBjb25zdHIpOwogCX0KIAorCS8qCisJICogRHVtcCB0YWJsZSBkYXRhIGltbWVkaWF0ZWx5 IGlmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgaXQgYW5kIGl0IGhhcyBub3QKKwkgKiBiZWVuIGV4 cGxpY2l0bHkgZXhjbHVkZWQuCisJICoKKwkgKiBGSVhNRTogRHVyaW5nIHRoaXMgUFJFIGR1bXAs IHdlIHRlbXBvcmFyaWx5IGlnbm9yZSBhbnkgZmlsdGVyIGNvbmRpdGlvbnMKKwkgKiAoYnkgc2F2 aW5nIGFuZCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsIGZpbHRlcmNvbmQgcG9pbnRlcikuICBTaG91 bGQgdGhpcworCSAqIGJlIGNvbmRpdGlvbmFsPyBJZiBzbywgd2hhdCBsb2dpYyBvciBuZXcgcGdf ZHVtcCBvcHRpb24gd291bGQgZHJpdmUgdGhhdAorCSAqIGRlY2lzaW9uPworCSAqCisJICogTk9U RTogVGhlIGZpbHRlciBjb25kaXRpb24gbXVzdCBiZSBpZ25vcmVkIGluIHRoZSBQb3N0R0lTIGlz c3VlIGNhc2UuCisJICovCisJaWYgKHRiaW5mby0+ZGF0YU9iaiAmJiBzaW1wbGVfb2lkX2xpc3Rf bWVtYmVyKCZpbW1lZGlhdGVfdGFibGVkYXRhX29pZHMsCisJCQkJCQkJCQkJCQkgIHRiaW5mby0+ ZG9iai5jYXRJZC5vaWQpKQorCXsKKwkJVGFibGVEYXRhSW5mbyAqdGRpbmZvID0gdGJpbmZvLT5k YXRhT2JqOworCQljaGFyCSAgICpzYXZlZGZpbHRlcmNvbmQgPSB0ZGluZm8tPmZpbHRlcmNvbmQ7 CisKKwkJLyogUmVzZXQgZmlsdGVyIGNvbmRpdGlvbiAqLworCQl0ZGluZm8tPmZpbHRlcmNvbmQg PSBOVUxMOworCQlkdW1wVGFibGVEYXRhKGZvdXQsIHRkaW5mbywgdHJ1ZSk7CisKKwkJLyogUmVz dG9yZSBmaWx0ZXIgY29uZGl0aW9uICovCisJCXRkaW5mby0+ZmlsdGVyY29uZCA9IHNhdmVkZmls dGVyY29uZDsKKworCQkvKiBEb24ndCBkdW1wIGl0IGFnYWluIGxhdGVyIE9SIHNob3VsZCB3ZT8g Rm9yIG5vdywgTk8gKi8KKwkJdGRpbmZvLT5kb2JqLmR1bXAgPSBEVU1QX0NPTVBPTkVOVF9OT05F OworCX0KKwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxKTsKIAlkZXN0cm95UFFFeHBCdWZmZXIoZGVs cSk7CiAJZGVzdHJveVBRRXhwQnVmZmVyKGV4dHJhKTsKQEAgLTIwNTgyLDMgKzIwNjM0LDEwNiBA QCByZWFkX2R1bXBfZmlsdGVycyhjb25zdCBjaGFyICpmaWxlbmFtZSwgRHVtcE9wdGlvbnMgKmRv cHQpCiAKIAlmaWx0ZXJfZnJlZSgmZnN0YXRlKTsKIH0KKworLyoKKyAqIGFkZEV4dHJhRGVwZW5k ZW5jaWVzCisgKgkJQWRkIHVzZXIgZ2l2ZW4gZXh0cmEgZGVwZW5kZW5jaWVzLgorICoKKyAqIE5v dGU6IFBhcmFtZXRlciBleHRyYV9kZXBlbmRlbmNpZXMgbXVzdCBiZSBhIGNvbW1hLXNlcGFyYXRl ZCBsaXN0IG9mCisgKiBkZXBlbmRlbmNpZXMgaW4gdGhlIGZvcm1hdDogInRhYmxlLW5hbWUjcmVm LXRhYmxlLW5hbWUiLgorICovCitzdGF0aWMgdm9pZAorYWRkRXh0cmFEZXBlbmRlbmNpZXMoQXJj aGl2ZSAqZm91dCwgRHVtcE9wdGlvbnMgKmRvcHQsIGNoYXIgKmV4dHJhX2RlcGVuZGVuY2llcykK K3sKKwlTaW1wbGVTdHJpbmdMaXN0IGV4dHJhX2RlcGVuZGVuY2llc19wYXR0ZXJucyA9IHtOVUxM LCBOVUxMfTsKKwlTaW1wbGVPaWRMaXN0IGV4dHJhX2RlcGVuZGVuY2llc19vaWRzID0ge05VTEws IE5VTEx9OworCVNpbXBsZU9pZExpc3RDZWxsICpjZWxsOworCWNoYXIJICAqKmRlcGVuZGxpc3Q7 CisJY2hhcgkgICoqZGVwZW5kcHRyOworCWludAkJCWNvdW50ID0gMDsKKworCS8qCisJICogU2Vw YXJhdGUgbXVsdGlwbGUgZGVwZW5kZW5jaWVzLgorCSAqCisJICogV2Ugc3RvcmUgaW4gdGhlIHNp bXBsZSBzdHJpbmcgbGlzdCB3aXRoIHRhYmxlIG5hbWUgYW5kIGl0cyBkZXBlbmRlbnQKKwkgKiB0 YWJsZSBuYW1lIG9uZSBhZnRlciBhbm90aGVyLiAgU28sIGV2ZXJ5IGVudHJ5IHNob3VsZCBoYXZl IHR3byB0YWJsZQorCSAqIG5hbWVzIHNlcGFyYXRlZCBieSAnIycuICBBbmQgbXVsdGlwbGUgc3Vj aCBlbnRyaWVzIGFyZSBzZXBhcmF0ZWQgYnkgJywnLgorCSAqIFRoZSBjb3VudCBvZiBlbnRyaWVz IHRodXMgaXMgYWx3YXlzIG11bHRpcGxlIG9mIHR3by4KKwkgKi8KKwlpZiAoU3BsaXRHVUNMaXN0 KGV4dHJhX2RlcGVuZGVuY2llcywgJywnLCAmZGVwZW5kbGlzdCkpCisJeworCQlmb3IgKGRlcGVu ZHB0ciA9IGRlcGVuZGxpc3Q7ICpkZXBlbmRwdHI7IGRlcGVuZHB0cisrKQorCQl7CisJCQljaGFy CSAgKiplbGVtbGlzdDsKKwkJCWNoYXIJICAqKmVsZW1wdHI7CisKKwkJCS8qIFBhcnNlIGRlcGVu ZGVuY3kgZWxlbWVudCAqLworCQkJaWYgKFNwbGl0R1VDTGlzdCgqZGVwZW5kcHRyLCAnIycsICZl bGVtbGlzdCkpCisJCQl7CisJCQkJZm9yIChlbGVtcHRyID0gZWxlbWxpc3Q7ICplbGVtcHRyOyBl bGVtcHRyKyspCisJCQkJeworCQkJCQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKCZleHRyYV9k ZXBlbmRlbmNpZXNfcGF0dGVybnMsCisJCQkJCQkJCQkJCSAgKmVsZW1wdHIpOworCQkJCQljb3Vu dCsrOworCQkJCX0KKwkJCX0KKworCQkJcGdfZnJlZShlbGVtbGlzdCk7CisKKwkJCWlmICgoY291 bnQgJSAyKSAhPSAwKQorCQkJeworCQkJCS8qIE1pc21hdGNoIGVudHJpZXMuICBSZXR1cm4uICov CisJCQkJcGdfZnJlZShkZXBlbmRsaXN0KTsKKworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0K KworCXBnX2ZyZWUoZGVwZW5kbGlzdCk7CisKKwkvKiBDb3VudCBzaG91bGQgYmUgbXVsdGlwbGUg b2YgdHdvICovCisJQXNzZXJ0KChjb3VudCAlIDIpID09IDApOworCisJLyoKKwkgKiBDb252ZXJ0 IHRhYmxlIG5hbWVzIHRvIHRoZWlyIG9pZHMuCisJICovCisJZXhwYW5kX3RhYmxlX25hbWVfcGF0 dGVybnMoZm91dCwgJmV4dHJhX2RlcGVuZGVuY2llc19wYXR0ZXJucywKKwkJCQkJCQkgICAmZXh0 cmFfZGVwZW5kZW5jaWVzX29pZHMsCisJCQkJCQkJICAgZmFsc2UsIGZhbHNlKTsKKworCWZvciAo Y2VsbCA9IGV4dHJhX2RlcGVuZGVuY2llc19vaWRzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5u ZXh0KQorCXsKKwkJT2lkCQkJb2JqaWQ7CisJCU9pZAkJCXJlZmlkOworCQlUYWJsZUluZm8gICpv Ymp0YmluZm87CisJCVRhYmxlSW5mbyAgKnJlZnRiaW5mbzsKKworCQkvKiBXZSBzaG91bGQgYmUg aGF2aW5nIHR3byB0YWJsZSBvaWRzIGJhY2sgdG8gYmFjayAqLworCQlvYmppZCA9IGNlbGwtPnZh bDsKKwkJY2VsbCA9IGNlbGwtPm5leHQ7CisJCUFzc2VydChjZWxsKTsKKwkJcmVmaWQgPSBjZWxs LT52YWw7CisKKwkJLyogRmluZCB0YWJsZSBpbmZvIGZvciB0aGVzZSB0YWJsZXMgcmVmZXJyZWQg Ynkgb2lkcyAqLworCQlvYmp0YmluZm8gPSBmaW5kVGFibGVCeU9pZChvYmppZCk7CisJCXJlZnRi aW5mbyA9IGZpbmRUYWJsZUJ5T2lkKHJlZmlkKTsKKworCQkvKgorCQkgKiBXZSBzaG91bGQgbWFy ayBkZXBlbmRlbmN5IG9uIHRoZSByZWZlcmVuY2UgdGFibGUuICBXZSBjYW5ub3QgYWRkCisJCSAq IGRlcGVuZGVuY3kgb24gdGhlIHRhYmxlIGRhdGEgYXMgUFJFLURBVEEgQk9VTkRBUlkgb2JqZWN0 IGNhdXNlcyBhCisJCSAqIGRlcGVuZGVuY3kgbG9vcC4gIFNvLCB3ZSBuZWVkIHRvIGR1bXAgdGFi bGUgZGF0YSBpbW1lZGlhdGVseSBhZnRlcgorCQkgKiBjcmVhdGluZyB0aGUgdGFibGUgZGVmaW5p dGlvbi4gIEFkZCB0aG9zZSBvaWRzIGluIHRoZQorCQkgKiBpbW1lZGlhdGVfdGFibGVkYXRhX29p ZHMgbGlzdCB0byBkdW1wIHRoYXQgbGF0ZXIuCisJCSAqLworCQlhZGRPYmplY3REZXBlbmRlbmN5 KCZvYmp0YmluZm8tPmRvYmosIHJlZnRiaW5mby0+ZG9iai5kdW1wSWQpOworCQlzaW1wbGVfb2lk X2xpc3RfYXBwZW5kKCZpbW1lZGlhdGVfdGFibGVkYXRhX29pZHMsIHJlZmlkKTsKKworCQkvKgor CQkgKiBGb3IgYmluYXJ5LXVwZ3JhZGVzLCBjcmVhdGUgdGhlIFRhYmxlRGF0YUluZm8gZm9yIHRo ZSByZWZlcmVuY2VkCisJCSAqIHRhYmxlIHRvIGVuc3VyZSBpdCBpcyBkdW1wZWQgaW1tZWRpYXRl bHkuCisJCSAqLworCQlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUgJiYgZm91dC0+cmVtb3RlVmVy c2lvbiA+PSAxOTAwMDApCisJCQltYWtlVGFibGVEYXRhSW5mbyhkb3B0LCByZWZ0YmluZm8pOwor CX0KK30KLS0gCjIuNDMuMAoK --00000000000056c6d90646b130a4 Content-Type: application/octet-stream; name="v1-0002-pg_upgrade-Add-extra-dependencies-option.patch" Content-Disposition: attachment; filename="v1-0002-pg_upgrade-Add-extra-dependencies-option.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjjxyscg1 RnJvbSA0ZDNkNDE5YTYwMDUyMDk0MmJhYTc2ZjM1OWY0YzgwMTNiNDY5YTZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWV2YW4gQ2hhbGtlIDxqZWV2YW4uY2hhbGtlQGVudGVycHJp c2VkYi5jb20+CkRhdGU6IFdlZCwgMjQgRGVjIDIwMjUgMTM6MzE6MTcgKzA1MzAKU3ViamVjdDog W1BBVENIIHYxIDIvMl0gcGdfdXBncmFkZTogQWRkIC0tZXh0cmEtZGVwZW5kZW5jaWVzIG9wdGlv bgoKVGhpcyBjb21taXQgYWRkcyBhIG5ldyAtLWV4dHJhLWRlcGVuZGVuY2llcyBjb21tYW5kLWxp bmUgb3B0aW9uIHRvCnBnX3VwZ3JhZGUuICBUaGUgb3B0aW9uIGFsbG93cyB1c2VycyB0byBwcm92 aWRlIG1hbnVhbCBkZXBlbmRlbmN5CmhpbnRzIHRvIGNvbnRyb2wgdGhlIG9yZGVyIGluIHdoaWNo IG9iamVjdHMgYXJlIGR1bXBlZCBieSBwZ19kdW1wLgoKVGhpcyBpcyBwcmltYXJpbHkgaW50ZW5k ZWQgdG8gcmVzb2x2ZSB1cGdyYWRlIGZhaWx1cmVzIHdoZXJlIGNlcnRhaW4KZXh0ZW5zaW9ucyBv ciBjb21wbGV4IHNjaGVtYXMgaGF2ZSBmdW5jdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IGFyZQpu b3QgZXhwbGljaXRseSB0cmFja2VkIGluIHBnX2RlcGVuZC4KClRoZSBvcHRpb24gYWNjZXB0cyBh IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHBhaXJzIGluIHRoZSBmb3JtYXQKInRhYmxlI3JlZmVy ZW5jZWRfdGFibGUiLiAgVGhpcyB2YWx1ZSBpcyBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlCnVuZGVy bHlpbmcgcGdfZHVtcCBjYWxscyBkdXJpbmcgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4KCkplZXZhbiBD aGFsa2UsIHBlciBzdWdnZXN0aW9uIGZyb20gQWx2YXJvIEhlcnJlcmEuCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9wZ3VwZ3JhZGUuc2dtbCB8IDE3ICsrKysrKysrKysrKysrKysrCiBzcmMvYmluL3Bn X3VwZ3JhZGUvZHVtcC5jICAgICAgIHwgIDkgKysrKysrKystCiBzcmMvYmluL3BnX3VwZ3JhZGUv b3B0aW9uLmMgICAgIHwgIDcgKysrKysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUu aCB8ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGd1cGdyYWRlLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL3BndXBncmFkZS5zZ21sCmluZGV4IDM4Y2EwOWI0MjNjLi40NjgwMDMyMjAyOSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ3VwZ3JhZGUuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL3BndXBncmFkZS5zZ21sCkBAIC0yNjIsNiArMjYyLDIzIEBAIFBvc3RncmVTUUwg ZG9jdW1lbnRhdGlvbgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1leHRyYS1kZXBlbmRl bmNpZXM9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRlcGVuZGVuY3lsaXN0PC9yZXBs YWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFVzZSB0aGlzIG9wdGlvbiB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgZGVwZW5kZW5j aWVzIHdoZW4gZGV0ZXJtaW5pbmcKKyAgICAgICAgdGhlIHRhYmxlIGR1bXAgb3JkZXIuICBFYWNo IGRlcGVuZGVuY3kgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgZm9ybWF0CisgICAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZW5hbWUjcmVmZXJyZWR0YWJsZW5hbWU8L3Jl cGxhY2VhYmxlPiwKKyAgICAgICAgd2l0aCBtdWx0aXBsZSBwYWlycyBzZXBhcmF0ZWQgYnkgY29t bWFzLiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlCisgICAgICAgIHJlZmVycmVkIHRhYmxlIGlzIGR1 bXBlZCBhbmQgaXRzIGRhdGEgbG9hZGVkIGltbWVkaWF0ZWx5IGFmdGVyIGl0cworICAgICAgICBj cmVhdGlvbi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgdmFs dWUgaXMgcHJvcGFnYXRlZCB1bmNoYW5nZWQgdG8gPGFwcGxpY2F0aW9uPnBnX2R1bXA8L2FwcGxp Y2F0aW9uPi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tLW5v LXN0YXRpc3RpY3M8L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3VwZ3JhZGUvZHVtcC5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2R1bXAuYwpp bmRleCA1NWY2ZTdiNGQ5Yy4uNmQ5ZjI3ZWVmZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBn cmFkZS9kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2R1bXAuYwpAQCAtMzksNiArMzks NyBAQCBnZW5lcmF0ZV9vbGRfZHVtcCh2b2lkKQogCQlEYkluZm8JICAgKm9sZF9kYiA9ICZvbGRf Y2x1c3Rlci5kYmFyci5kYnNbZGJudW1dOwogCQlQUUV4cEJ1ZmZlckRhdGEgY29ubnN0ciwKIAkJ CQkJZXNjYXBlZF9jb25uc3RyOworCQlQUUV4cEJ1ZmZlckRhdGEgZXh0cmFfZGVwZW5kZW5jaWVz OwogCiAJCWluaXRQUUV4cEJ1ZmZlcigmY29ubnN0cik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZjb25uc3RyLCAiZGJuYW1lPSIpOwpAQCAtNDYsNiArNDcsMTAgQEAgZ2VuZXJhdGVfb2xkX2R1 bXAodm9pZCkKIAkJaW5pdFBRRXhwQnVmZmVyKCZlc2NhcGVkX2Nvbm5zdHIpOwogCQlhcHBlbmRT aGVsbFN0cmluZygmZXNjYXBlZF9jb25uc3RyLCBjb25uc3RyLmRhdGEpOwogCQl0ZXJtUFFFeHBC dWZmZXIoJmNvbm5zdHIpOworCQlpbml0UFFFeHBCdWZmZXIoJmV4dHJhX2RlcGVuZGVuY2llcyk7 CisJCWlmICh1c2VyX29wdHMuZXh0cmFfZGVwZW5kZW5jaWVzKQorCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmV4dHJhX2RlcGVuZGVuY2llcywgIi0tZXh0cmEtZGVwZW5kZW5jaWVzPSclcyciLAorCQkJ CQkJCSAgdXNlcl9vcHRzLmV4dHJhX2RlcGVuZGVuY2llcyk7CiAKIAkJcGdfbG9nKFBHX1NUQVRV UywgIiVzIiwgb2xkX2RiLT5kYl9uYW1lKTsKIAkJc25wcmludGYoc3FsX2ZpbGVfbmFtZSwgc2l6 ZW9mKHNxbF9maWxlX25hbWUpLCBEQl9EVU1QX0ZJTEVfTUFTSywgb2xkX2RiLT5kYl9vaWQpOwpA QCAtNTMsMTYgKzU4LDE4IEBAIGdlbmVyYXRlX29sZF9kdW1wKHZvaWQpCiAKIAkJcGFyYWxsZWxf ZXhlY19wcm9nKGxvZ19maWxlX25hbWUsIE5VTEwsCiAJCQkJCQkgICAiXCIlcy9wZ19kdW1wXCIg JXMgLS1uby1kYXRhICVzICVzIC0tcXVvdGUtYWxsLWlkZW50aWZpZXJzICIKLQkJCQkJCSAgICIt LWJpbmFyeS11cGdyYWRlIC0tZm9ybWF0PWN1c3RvbSAlcyAtLW5vLXN5bmMgLS1maWxlPVwiJXMv JXNcIiAlcyIsCisJCQkJCQkgICAiLS1iaW5hcnktdXBncmFkZSAtLWZvcm1hdD1jdXN0b20gJXMg JXMgLS1uby1zeW5jIC0tZmlsZT1cIiVzLyVzXCIgJXMiLAogCQkJCQkJICAgbmV3X2NsdXN0ZXIu YmluZGlyLCBjbHVzdGVyX2Nvbm5fb3B0cygmb2xkX2NsdXN0ZXIpLAogCQkJCQkJICAgKHVzZXJf b3B0cy50cmFuc2Zlcl9tb2RlID09IFRSQU5TRkVSX01PREVfU1dBUCkgPwogCQkJCQkJICAgIiIg OiAiLS1zZXF1ZW5jZS1kYXRhIiwKIAkJCQkJCSAgIGxvZ19vcHRzLnZlcmJvc2UgPyAiLS12ZXJi b3NlIiA6ICIiLAogCQkJCQkJICAgdXNlcl9vcHRzLmRvX3N0YXRpc3RpY3MgPyAiLS1zdGF0aXN0 aWNzIiA6ICItLW5vLXN0YXRpc3RpY3MiLAorCQkJCQkJICAgZXh0cmFfZGVwZW5kZW5jaWVzLmRh dGEsCiAJCQkJCQkgICBsb2dfb3B0cy5kdW1wZGlyLAogCQkJCQkJICAgc3FsX2ZpbGVfbmFtZSwg ZXNjYXBlZF9jb25uc3RyLmRhdGEpOwogCiAJCXRlcm1QUUV4cEJ1ZmZlcigmZXNjYXBlZF9jb25u c3RyKTsKKwkJdGVybVBRRXhwQnVmZmVyKCZleHRyYV9kZXBlbmRlbmNpZXMpOwogCX0KIAogCS8q IHJlYXAgYWxsIGNoaWxkcmVuICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvb3B0 aW9uLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvb3B0aW9uLmMKaW5kZXggN2ZkN2YxZDMzZmMuLjU1 YjIzZTBiZWMzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvb3B0aW9uLmMKKysrIGIv c3JjL2Jpbi9wZ191cGdyYWRlL29wdGlvbi5jCkBAIC02Myw2ICs2Myw3IEBAIHBhcnNlQ29tbWFu ZExpbmUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJeyJuby1zdGF0aXN0aWNzIiwgbm9fYXJn dW1lbnQsIE5VTEwsIDV9LAogCQl7InNldC1jaGFyLXNpZ25lZG5lc3MiLCByZXF1aXJlZF9hcmd1 bWVudCwgTlVMTCwgNn0sCiAJCXsic3dhcCIsIG5vX2FyZ3VtZW50LCBOVUxMLCA3fSwKKwkJeyJl eHRyYS1kZXBlbmRlbmNpZXMiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgOH0sCiAKIAkJe05V TEwsIDAsIE5VTEwsIDB9CiAJfTsKQEAgLTIzNCw2ICsyMzUsMTAgQEAgcGFyc2VDb21tYW5kTGlu ZShpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCXVzZXJfb3B0cy50cmFuc2Zlcl9tb2RlID0g VFJBTlNGRVJfTU9ERV9TV0FQOwogCQkJCWJyZWFrOwogCisJCQljYXNlIDg6CisJCQkJdXNlcl9v cHRzLmV4dHJhX2RlcGVuZGVuY2llcyA9IHBnX3N0cmR1cChvcHRhcmcpOworCQkJCWJyZWFrOwor CiAJCQlkZWZhdWx0OgogCQkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBm b3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCQkJb3NfaW5mby5wcm9nbmFtZSk7CkBAIC0z MjgsNiArMzMzLDggQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiICAtLWNsb25lICAgICAgICAg ICAgICAgICAgICAgICBjbG9uZSBpbnN0ZWFkIG9mIGNvcHlpbmcgZmlsZXMgdG8gbmV3IGNsdXN0 ZXJcbiIpKTsKIAlwcmludGYoXygiICAtLWNvcHkgICAgICAgICAgICAgICAgICAgICAgICBjb3B5 IGZpbGVzIHRvIG5ldyBjbHVzdGVyIChkZWZhdWx0KVxuIikpOwogCXByaW50ZihfKCIgIC0tY29w eS1maWxlLXJhbmdlICAgICAgICAgICAgIGNvcHkgZmlsZXMgdG8gbmV3IGNsdXN0ZXIgd2l0aCBj b3B5X2ZpbGVfcmFuZ2VcbiIpKTsKKwlwcmludGYoXygiICAtLWV4dHJhLWRlcGVuZGVuY2llcz1E RVBFTkRFTkNZTElTVFxuIgorCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnNpZGVyIHRoZXNlIGV4dHJhIGRlcGVuZGVuY2llc1xuIikpOwogCXByaW50ZihfKCIgIC0tbm8t c3RhdGlzdGljcyAgICAgICAgICAgICAgIGRvIG5vdCBpbXBvcnQgc3RhdGlzdGljcyBmcm9tIG9s ZCBjbHVzdGVyXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1zZXQtY2hhci1zaWduZWRuZXNzPU9QVElP TiAgc2V0IG5ldyBjbHVzdGVyIGNoYXIgc2lnbmVkbmVzcyB0byBcInNpZ25lZFwiIG9yXG4iCiAJ CQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ1bnNpZ25lZFwiXG4iKSk7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL3BnX3VwZ3JhZGUuaAppbmRleCBiZTMwZGNlZWQ1Yy4uN2FhZmM1ZmZkMGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL3BnX3VwZ3JhZGUuaApAQCAtMzQ5LDYgKzM0OSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJ aW50CQkJY2hhcl9zaWduZWRuZXNzOwkvKiBkZWZhdWx0IGNoYXIgc2lnbmVkbmVzczogLTEgZm9y IGluaXRpYWwKIAkJCQkJCQkJCSAqIHZhbHVlLCAxIGZvciAic2lnbmVkIiBhbmQgMCBmb3IKIAkJ CQkJCQkJCSAqICJ1bnNpZ25lZCIgKi8KKwljaGFyCSAgICpleHRyYV9kZXBlbmRlbmNpZXM7CS8q IGNvbnNpZGVyIHRoZXNlIGV4dHJhIGRlcGVuZGVuY2llcyAqLwogfSBVc2VyT3B0czsKIAogdHlw ZWRlZiBzdHJ1Y3QKLS0gCjIuNDMuMAoK --00000000000056c6d90646b130a4--