Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pFeSO-0005uW-TU for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Jan 2023 17:00:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pFeSN-0004gS-R4 for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Jan 2023 17:00:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pFeSN-0004gJ-DO for pgsql-hackers@lists.postgresql.org; Wed, 11 Jan 2023 17:00:07 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pFeSK-00086h-LP for pgsql-hackers@postgresql.org; Wed, 11 Jan 2023 17:00:07 +0000 Received: by mail-wm1-x32a.google.com with SMTP id ay12-20020a05600c1e0c00b003d9ea12bafcso9466905wmb.3 for ; Wed, 11 Jan 2023 09:00:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=migops.com; s=google; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=5Cr79eWziKcUut0vEvcsbuMU0OEnTFAdXUtjzd8tWeg=; b=MYcBFger3eZFRuWTGNGA0FmThfQTrwWazKVTZK+aY8Hbx3/wJNwkR1xX8qvZNt25QO hLP43PPlixULz0Thhhz6AOnyIPilewbU3SYNlZRDmIrhaRVUrGi9cSgE8cQO2V+c7auN dRRQVsxcCjrVSsEd7q0X44OpJBPsFcSvPVvWsnicuSpGQTn70PZ0ggLdt1mSBafwRy4u yv1xxqeSP9y1pVL9nwkMUMPD/zkYG/x7CUrD5YZ9NADlQaoTVw07YGXCSnF42zUzwEON IUa3XAn3tqH+B2sAh9/5LSa56UYG/J0JoO1tvnWUBcSUT+nMoBTF5ZmUby+lYbR73VRA FQUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5Cr79eWziKcUut0vEvcsbuMU0OEnTFAdXUtjzd8tWeg=; b=sNTEa017uu+QbUFTQWhQjcUKWdn4xi1x8LoDOcO6o/yoAIfWwJKIzmrYmN+TlBPH0f Nkui9OGUaRl4eLG3fLSoJf46xgNbgMS6MIRJZcPAzozUHgmKi0hnJRtpHzdkPaA+DQJm i/YyhK6bT0G7RfQ1MNY6zFtg3l34/1t0iZCcFSxKPkn1PO3jG1hhgjNPQVprI4LG5KSy FfZbSLxbbk6guTaiYABmJ3L8+AqBR1KPlEo3S+wu3Tw1dBw1BoWg57Qhph2zo7f666kD GwZfMK+JpSqG/khKh8wjU39qbI7ShDls3nwlV6s7eifeQVq2wg42ClUsltsDUVo4uHgO QliQ== X-Gm-Message-State: AFqh2kpx8ET0p6HSdEQlzt5azrEWKC5n89PeT+4n8P6vCNFmNFQUlQ9/ qv/TsOPYsD0S0P/qrznbVJsCjAxpaQt0i3KN X-Google-Smtp-Source: AMrXdXu7fP5Blf4592mRv0nObXtf6g2oLxE/eGdAVODn2FOlD+qxBIB4iXLGTUXGiozV8lPjjpuaow== X-Received: by 2002:a05:600c:3b2a:b0:3d9:f42c:56d0 with SMTP id m42-20020a05600c3b2a00b003d9f42c56d0mr7888096wms.16.1673456400859; Wed, 11 Jan 2023 09:00:00 -0800 (PST) Received: from ?IPV6:2a01:cb14:51d:5100:e962:4e3d:15c9:2b00? ([2a01:cb14:51d:5100:e962:4e3d:15c9:2b00]) by smtp.gmail.com with ESMTPSA id s23-20020a1cf217000000b003d1e3b1624dsm23431906wmc.2.2023.01.11.09.00.00 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 11 Jan 2023 09:00:00 -0800 (PST) Content-Type: multipart/mixed; boundary="------------cjaoItaTlPTtayMKywdL10K9" Message-ID: <5aa393b5-5f67-8447-b83e-544516990ee2@migops.com> Date: Wed, 11 Jan 2023 17:59:59 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Content-Language: en-US To: PostgreSQL Hackers From: Gilles Darold Subject: [Proposal] Allow pg_dump to include all child tables with the root table List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------cjaoItaTlPTtayMKywdL10K9 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi all, I would like to propose a new pg_dump option called --with-child to include or exclude from a dump all child and partition tables when a parent table is specified using option -t/--table or -T/--exclude-table. The whole tree is dumped with the root table. To include all partitions or child tables with inheritance in a table dump we usually use the wildcard, for example:     pg_dump -d mydb -t "root_tbname*" > out.sql This suppose that all child/partition tables use the prefix root_tbname in their object name. This is often the case but, if you are as lucky as me, the partitions could have a total different name. No need to say that for inheritance this is rarely the case. The other problem is that with the wildcard you can also dump relations that are not concerned at all by what you want to dump. Using the --with-child option will allow to just specify the root relation and all child/partition definitions and/or data will be parts of dump.     pg_dump -d mydb --table "root_tbname" --with-childs > out.sql To exclude a whole inheritance tree from a dump:     pg_dump -d mydb --exclude-table "root_tbname" --with-childs > out.sql Here in attachment the patch that adds this feature to pg_dump. Is there is any interest for this feature? Best regards, -- Gilles Darold https://www.migops.com/ --------------cjaoItaTlPTtayMKywdL10K9 Content-Type: text/x-patch; charset=UTF-8; name="0001-dump-with-child-v1.patch" Content-Disposition: attachment; filename="0001-dump-with-child-v1.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9wZ19kdW1wLnNnbWwKaW5kZXggMmM5MzhjZDdlMS4uZjk2MzU0NDJmOSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9wZ19kdW1wLnNnbWwKQEAgLTExNzIsNiArMTE3MiwxNyBAQCBQb3N0Z3JlU1FM IGRvY3VtZW50YXRpb24KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi0td2l0aC1j aGlsZHM8L29wdGlvbj48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ CisgICAgICAgIEluY2x1ZGUgb3IgZXhjbHVkZSBmcm9tIGEgZHVtcCBhbGwgY2hpbGQgYW5k IHBhcnRpdGlvbiB0YWJsZXMgd2hlbiBhIHBhcmVudAorICAgICAgICB0YWJsZSBpcyBzcGVj aWZpZWQgdXNpbmcgb3B0aW9uIDxvcHRpb24+LXQ8L29wdGlvbj4vPG9wdGlvbj4tLXRhYmxl PC9vcHRpb24+CisgICAgICAgIG9yIDxvcHRpb24+LVQ8L29wdGlvbj4vPG9wdGlvbj4tLWV4 Y2x1ZGUtdGFibGU8L29wdGlvbj4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRl bT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAg ICA8dGVybT48b3B0aW9uPi0/PC9vcHRpb24+PC90ZXJtPgogICAgICAgIDx0ZXJtPjxvcHRp b24+LS1oZWxwPC9vcHRpb24+PC90ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IGFiYTc4 MGVmNGIuLjA5Mjg0YzgyYmUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKQEAgLTIwMCw2ICsyMDAs NyBAQCB0eXBlZGVmIHN0cnVjdCBfZHVtcE9wdGlvbnMKIAogCWludAkJCXNlcXVlbmNlX2Rh dGE7CS8qIGR1bXAgc2VxdWVuY2UgZGF0YSBldmVuIGluIHNjaGVtYS1vbmx5IG1vZGUgKi8K IAlpbnQJCQlkb19ub3RoaW5nOworCWJvb2wJCQl3aXRoX2NoaWxkczsKIH0gRHVtcE9wdGlv bnM7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA1ZTgwMGRjNzlhLi44M2MwOTIwODBlIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKQEAgLTQyMSw2ICs0MjEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAkJeyJvbi1jb25mbGljdC1kby1ub3RoaW5nIiwgbm9fYXJndW1lbnQsICZk b3B0LmRvX25vdGhpbmcsIDF9LAogCQl7InJvd3MtcGVyLWluc2VydCIsIHJlcXVpcmVkX2Fy Z3VtZW50LCBOVUxMLCAxMH0sCiAJCXsiaW5jbHVkZS1mb3JlaWduLWRhdGEiLCByZXF1aXJl ZF9hcmd1bWVudCwgTlVMTCwgMTF9LAorCQl7IndpdGgtY2hpbGRzIiwgbm9fYXJndW1lbnQs IE5VTEwsIDEyfSwKIAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwpAQCAtNjMxLDYgKzYz MiwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkJCQkJCQkgIG9wdGFy Zyk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgMTI6CQkJCS8qIGR1bXAgY2hpbGQgdGFibGUg dG9vICovCisJCQkJZG9wdC53aXRoX2NoaWxkcyA9IHRydWU7CisJCQkJYnJlYWs7CisKIAkJ CWRlZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xvbmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxh aW50ICovCiAJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKQEAgLTgxMCw2ICs4MTUsMTQgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJCQkJCWZhbHNlKTsKIAkvKiBub24tbWF0 Y2hpbmcgZXhjbHVzaW9uIHBhdHRlcm5zIGFyZW4ndCBhbiBlcnJvciAqLwogCisJLyoKKwkg KiBUaGUgaW5jbHVkZSBjaGlsZCBvcHRpb24gcmVxdWlyZSB0aGF0IHRoZXJlIGlzCisJICog YXQgbGVhc3Qgb25lIHRhYmxlIGluY2x1c2lvbgorCSAqLworCWlmIChkb3B0LndpdGhfY2hp bGRzICYmIHRhYmxlX2luY2x1ZGVfcGF0dGVybnMuaGVhZCA9PSBOVUxMCisJCQkmJiB0YWJs ZV9leGNsdWRlX3BhdHRlcm5zLmhlYWQgPT0gTlVMTCkKKwkJcGdfZmF0YWwoIm9wdGlvbiAt LXdpdGgtY2hpbGRzIHJlcXVpcmVzIG9wdGlvbiAtdC8tLXRhYmxlIG9yIC1ULy0tZXhjbHVk ZS10YWJsZSIpOworCiAJLyogRXhwYW5kIHRhYmxlIHNlbGVjdGlvbiBwYXR0ZXJucyBpbnRv IE9JRCBsaXN0cyAqLwogCWlmICh0YWJsZV9pbmNsdWRlX3BhdHRlcm5zLmhlYWQgIT0gTlVM TCkKIAl7CkBAIC0xMDg4LDYgKzExMDEsOSBAQCBoZWxwKGNvbnN0IGNoYXIgKnByb2duYW1l KQogCXByaW50ZihfKCIgIC0tdXNlLXNldC1zZXNzaW9uLWF1dGhvcml6YXRpb25cbiIKIAkJ CSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIGNvbW1hbmRzIGluc3RlYWQgb2ZcbiIKIAkJCSAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEFMVEVSIE9XTkVSIGNvbW1hbmRzIHRvIHNldCBvd25lcnNoaXBc biIpKTsKKwlwcmludGYoXygiICAtLXdpdGgtY2hpbGRzICAgICAgICAgICAgICAgIGluY2x1 ZGUgb3IgZXhjbHVkZSBmcm9tIGEgZHVtcCBhbGwgY2hpbGQgYW5kIHBhcnRpdGlvblxuIgor CQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVzIHdoZW4gYSBwYXJl bnQgdGFibGUgaXMgc3BlY2lmaWVkIHVzaW5nXG4iCisJCQkgIiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtdC8tLXRhYmxlIG9yIC1ULy0tZXhjbHVkZS10YWJsZVxuIikpOwog CiAJcHJpbnRmKF8oIlxuQ29ubmVjdGlvbiBvcHRpb25zOlxuIikpOwogCXByaW50ZihfKCIg IC1kLCAtLWRibmFtZT1EQk5BTUUgICAgICBkYXRhYmFzZSB0byBkdW1wXG4iKSk7CkBAIC0x NTIwLDYgKzE1MzYsMTUgQEAgZXhwYW5kX3RhYmxlX25hbWVfcGF0dGVybnMoQXJjaGl2ZSAq Zm91dCwKIAkJUFFFeHBCdWZmZXJEYXRhIGRiYnVmOwogCQlpbnQJCQlkb3RjbnQ7CiAKKwkJ LyoKKwkJICogV2l0aCAtLWluY2x1ZGVfY2hpbGQgd2UgbG9vayByZWN1cnNpdmVseSB0byB0 aGUgaW5oZXJpdGFuY2UKKwkJICogdHJlZSB0byBmaW5kIHRoZSBjaGlsZHMgdGFibGVzIG9m IHRoZSBtYXRjaGluZyBpbmNsdWRlIGZpbHRlcgorCQkgKi8KKwkJaWYgKGZvdXQtPmRvcHQt PndpdGhfY2hpbGRzKQorCQl7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIldJVEgg UkVDVVJTSVZFIGNoaWxkX3RyZWUgKHJlbGlkKSBBUyAoXG4iKTsKKwkJfQorCiAJCS8qCiAJ CSAqIFF1ZXJ5IG11c3QgcmVtYWluIEFCU09MVVRFTFkgZGV2b2lkIG9mIHVucXVhbGlmaWVk IG5hbWVzLiAgVGhpcwogCQkgKiB3b3VsZCBiZSB1bm5lY2Vzc2FyeSBnaXZlbiBhIHBnX3Rh YmxlX2lzX3Zpc2libGUoKSB2YXJpYW50IHRha2luZyBhCkBAIC0xNTQ3LDYgKzE1NzIsMjAg QEAgZXhwYW5kX3RhYmxlX25hbWVfcGF0dGVybnMoQXJjaGl2ZSAqZm91dCwKIAkJCXByb2hp Yml0X2Nyb3NzZGJfcmVmcyhHZXRDb25uZWN0aW9uKGZvdXQpLCBkYmJ1Zi5kYXRhLCBjZWxs LT52YWwpOwogCQl0ZXJtUFFFeHBCdWZmZXIoJmRiYnVmKTsKIAorCQlpZiAoZm91dC0+ZG9w dC0+d2l0aF9jaGlsZHMpCisJCXsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiXG4g IFVOSU9OIEFMTCIKKwkJCQkJCSAiXG4gICAgU0VMRUNUIGMub2lkIEFTIHJlbGlkIgorCQkJ CQkJICJcbiAgICBGUk9NIGNoaWxkX3RyZWUgQVMgcCIKKwkJCQkJCSAiXG4gICAgICBKT0lO IHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgQVMgaSIKKwkJCQkJCSAiXG4gICAgICAgIE9OIChw LnJlbGlkIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSkgaS5pbmhwYXJlbnQpIgorCQkJCQkJICJc biAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBBUyBjIgorCQkJCQkJICJcbiAgICAg ICAgT04gKGMub2lkIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSkgaS5pbmhyZWxpZCkiCisJCQkJ CQkgIlxuKSIKKwkJCQkJCSAiXG5TRUxFQ1QgcmVsaWQgRlJPTSBjaGlsZF90cmVlIik7CisK KwkJfQorCiAJCUV4ZWN1dGVTcWxTdGF0ZW1lbnQoZm91dCwgIlJFU0VUIHNlYXJjaF9wYXRo Iik7CiAJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNf VFVQTEVTX09LKTsKIAkJUFFjbGVhcihFeGVjdXRlU3FsUXVlcnlGb3JTaW5nbGVSb3coZm91 dCwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3Jj L2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggMmVlZWYyYTQ3OC4uNmY0ZWNj NDIxMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTMxOSw2ICszMTksMTcg QEAgbXkgJXBnZHVtcF9ydW5zID0gKAogCQkJJy0tZXhjbHVkZS10YWJsZT1kdW1wX3Rlc3Qu dGVzdF90YWJsZScsICdwb3N0Z3JlcycsCiAJCV0sCiAJfSwKKwlleGNsdWRlX2NoaWxkX3Rh YmxlID0+IHsKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLAorCQkJJy0tbm8tc3lu YycsCisJCQknLS13aXRoLWNoaWxkcycsCisJCQkiLS1maWxlPSR0ZW1wZGlyL2V4Y2x1ZGVf Y2hpbGRfdGFibGUuc3FsIiwKKwkJCSctLWV4Y2x1ZGUtdGFibGU9ZHVtcF90ZXN0Lm1lYXN1 cmVtZW50JywKKwkJCSdwb3N0Z3JlcycsCisJCV0sCisJfSwKKwogCWV4Y2x1ZGVfdGVzdF90 YWJsZV9kYXRhID0+IHsKIAkJZHVtcF9jbWQgPT4gWwogCQkJJ3BnX2R1bXAnLApAQCAtNDEz LDYgKzQyNCwxOCBAQCBteSAlcGdkdW1wX3J1bnMgPSAoCiAJCQkncG9zdGdyZXMnLAogCQld LAogCX0sCisJaW5jbHVkZV9jaGlsZF90YWJsZSA9PiB7CisJCWR1bXBfY21kID0+IFsKKwkJ CSdwZ19kdW1wJywKKwkJCSctLW5vLXN5bmMnLAorCQkJJy0td2l0aC1jaGlsZHMnLAorCQkJ Ii0tZmlsZT0kdGVtcGRpci9pbmNsdWRlX2NoaWxkX3RhYmxlLnNxbCIsCisJCQknLS10YWJs ZT1kdW1wX3Rlc3QubWVhc3VyZW1lbnQnLAorCQkJJy0tbG9jay13YWl0LXRpbWVvdXQ9Jwor CQkJICAuICgxMDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1 bHQpLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwl9LAogCXJvbGUgPT4gewogCQlkdW1wX2Nt ZCA9PiBbCiAJCQkncGdfZHVtcCcsCkBAIC01NDEsNiArNTY0LDcgQEAgbXkgJWZ1bGxfcnVu cyA9ICgKIAljb21wcmVzc2lvbiAgICAgICAgICAgICAgPT4gMSwKIAljcmVhdGVkYiAgICAg ICAgICAgICAgICAgPT4gMSwKIAlkZWZhdWx0cyAgICAgICAgICAgICAgICAgPT4gMSwKKwll eGNsdWRlX2NoaWxkX3RhYmxlICAgICAgPT4gMSwKIAlleGNsdWRlX2R1bXBfdGVzdF9zY2hl bWEgPT4gMSwKIAlleGNsdWRlX3Rlc3RfdGFibGUgICAgICAgPT4gMSwKIAlleGNsdWRlX3Rl c3RfdGFibGVfZGF0YSAgPT4gMSwKQEAgLTkzNiw2ICs5NjAsMTAgQEAgbXkgJXRlc3RzID0g KAogCQkJcm9sZSAgICAgICAgICAgICA9PiAxLAogCQkJc2VjdGlvbl9wcmVfZGF0YSA9PiAx LAogCQkJYmluYXJ5X3VwZ3JhZGUgICA9PiAxLAorCQkJaW5jbHVkZV9jaGlsZF90YWJsZSA9 PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9jaGlsZF90YWJsZSA9PiAx LAogCQl9LAogCSAgfSwKIApAQCAtMTAyNSwxMSArMTA1MywxNiBAQCBteSAldGVzdHMgPSAo CiAKIAknQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQgT1dORVIgVE8nID0+IHsKIAkJcmVnZXhw ID0+IHFyL15cUUFMVEVSIFRBQkxFIGR1bXBfdGVzdC5tZWFzdXJlbWVudCBPV05FUiBUTyBc RS4rOy9tLAotCQlsaWtlID0+Ci0JCSAgeyAlZnVsbF9ydW5zLCAlZHVtcF90ZXN0X3NjaGVt YV9ydW5zLCBzZWN0aW9uX3ByZV9kYXRhID0+IDEsIH0sCisJCWxpa2UgPT4geworCQkJJWZ1 bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3ByZV9k YXRhID0+IDEsCisJCQlpbmNsdWRlX2NoaWxkX3RhYmxlID0+IDEsCisJCX0sCiAJCXVubGlr ZSA9PiB7CiAJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKIAkJCW5vX293bmVy ICAgICAgICAgICAgICAgICA9PiAxLAorCQkJZXhjbHVkZV9jaGlsZF90YWJsZSAgICAgID0+ IDEsCiAJCX0sCiAJfSwKIApAQCAtMTA0MCw4ICsxMDczLDEyIEBAIG15ICV0ZXN0cyA9ICgK IAkJCSVmdWxsX3J1bnMsCiAJCQlyb2xlICAgICAgICAgICAgID0+IDEsCiAJCQlzZWN0aW9u X3ByZV9kYXRhID0+IDEsCisJCQlpbmNsdWRlX2NoaWxkX3RhYmxlID0+IDEsCisJCX0sCisJ CXVubGlrZSA9PiB7CisJCQlub19vd25lciA9PiAxLAorCQkJZXhjbHVkZV9jaGlsZF90YWJs ZSA9PiAxLAogCQl9LAotCQl1bmxpa2UgPT4geyBub19vd25lciA9PiAxLCB9LAogCX0sCiAK IAknQUxURVIgRk9SRUlHTiBUQUJMRSBmb3JlaWduX3RhYmxlIE9XTkVSIFRPJyA9PiB7CkBA IC0yNzkzLDExICsyODMwLDE2IEBAIG15ICV0ZXN0cyA9ICgKIAkJCVwpXG4KIAkJCVxRUEFS VElUSU9OIEJZIFJBTkdFIChsb2dkYXRlKTtcRVxuCiAJCQkveG0sCi0JCWxpa2UgPT4KLQkJ ICB7ICVmdWxsX3J1bnMsICVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsIHNlY3Rpb25fcHJlX2Rh dGEgPT4gMSwgfSwKKwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVz dF9zY2hlbWFfcnVucywKKwkJCXNlY3Rpb25fcHJlX2RhdGEgPT4gMSwKKwkJCWluY2x1ZGVf Y2hpbGRfdGFibGUgPT4gMSwKKwkJfSwKIAkJdW5saWtlID0+IHsKIAkJCWJpbmFyeV91cGdy YWRlICAgICAgICAgICA9PiAxLAogCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEs CisJCQlleGNsdWRlX2NoaWxkX3RhYmxlICAgICAgPT4gMSwKIAkJfSwKIAl9LAogCkBAIC0y ODI0LDYgKzI4NjYsMTAgQEAgbXkgJXRlc3RzID0gKAogCQkJc2VjdGlvbl9wcmVfZGF0YSA9 PiAxLAogCQkJcm9sZSAgICAgICAgICAgICA9PiAxLAogCQkJYmluYXJ5X3VwZ3JhZGUgICA9 PiAxLAorCQkJaW5jbHVkZV9jaGlsZF90YWJsZSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4g eworCQkJZXhjbHVkZV9jaGlsZF90YWJsZSA9PiAxLAogCQl9LAogCX0sCiAKQEAgLTI4Mzgs MTAgKzI4ODQsMTQgQEAgbXkgJXRlc3RzID0gKAogCQkJXFFFWEVDVVRFIEZVTkNUSU9OIGR1 bXBfdGVzdC50cmlnZ2VyX2Z1bmMoKTtcRQogCQkJL3htLAogCQlsaWtlID0+IHsKLQkJCSVm dWxsX3J1bnMsICVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+ IDEsCisJCQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCXNl Y3Rpb25fcG9zdF9kYXRhID0+IDEsCisJCQlpbmNsdWRlX2NoaWxkX3RhYmxlID0+IDEsCiAJ CX0sCiAJCXVubGlrZSA9PiB7CiAJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwK KwkJCWV4Y2x1ZGVfY2hpbGRfdGFibGUgPT4gMSwKIAkJfSwKIAl9LAogCkBAIC0yODY5LDYg KzI5MTksMTAgQEAgbXkgJXRlc3RzID0gKAogCQkJc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwK IAkJCXJvbGUgICAgICAgICAgICAgID0+IDEsCiAJCQliaW5hcnlfdXBncmFkZSAgICA9PiAx LAorCQkJaW5jbHVkZV9jaGlsZF90YWJsZSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4gewor CQkJZXhjbHVkZV9jaGlsZF90YWJsZSA9PiAxLAogCQl9LAogCX0sCiAKQEAgLTI4ODEsNiAr MjkzNSwxMCBAQCBteSAldGVzdHMgPSAoCiAJCQlzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLAog CQkJcm9sZSAgICAgICAgICAgICAgPT4gMSwKIAkJCWJpbmFyeV91cGdyYWRlICAgID0+IDEs CisJCQlpbmNsdWRlX2NoaWxkX3RhYmxlID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7CisJ CQlleGNsdWRlX2NoaWxkX3RhYmxlID0+IDEsCiAJCX0sCiAJfSwKIApAQCAtMjg5Myw2ICsy OTUxLDEwIEBAIG15ICV0ZXN0cyA9ICgKIAkJCXNlY3Rpb25fcG9zdF9kYXRhID0+IDEsCiAJ CQlyb2xlICAgICAgICAgICAgICA9PiAxLAogCQkJYmluYXJ5X3VwZ3JhZGUgICAgPT4gMSwK KwkJCWluY2x1ZGVfY2hpbGRfdGFibGUgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJ CWV4Y2x1ZGVfY2hpbGRfdGFibGUgPT4gMSwKIAkJfSwKIAl9LAogCkBAIC0zMjUwLDYgKzMz MTIsNyBAQCBteSAldGVzdHMgPSAoCiAJCQlzY2hlbWFfb25seSAgICAgICAgICAgICA9PiAx LAogCQkJc2VjdGlvbl9wb3N0X2RhdGEgICAgICAgPT4gMSwKIAkJCXRlc3Rfc2NoZW1hX3Bs dXNfbGFyZ2Vfb2JqZWN0cyA9PiAxLAorCQkJaW5jbHVkZV9jaGlsZF90YWJsZSA9PiAxLAog CQl9LAogCQl1bmxpa2UgPT4gewogCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEs CkBAIC0zMjU4LDYgKzMzMjEsNyBAQCBteSAldGVzdHMgPSAoCiAJCQlwZ19kdW1wYWxsX2ds b2JhbHNfY2xlYW4gPT4gMSwKIAkJCXJvbGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAog CQkJc2VjdGlvbl9wcmVfZGF0YSAgICAgICAgID0+IDEsCisJCQlleGNsdWRlX2NoaWxkX3Rh YmxlICAgICAgPT4gMSwKIAkJfSwKIAl9LAogCkBAIC0zMjcxLDkgKzMzMzUsMTYgQEAgbXkg JXRlc3RzID0gKAogCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC5tZWFzdXJlbWVu dFxFIFxuXlxzKwogCQkJXFFBREQgQ09OU1RSQUlOVCBtZWFzdXJlbWVudF9wa2V5IFBSSU1B UlkgS0VZIChjaXR5X2lkLCBsb2dkYXRlKTtcRQogCQkveG0sCi0JCWxpa2UgPT4KLQkJICB7 ICVmdWxsX3J1bnMsICVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRh ID0+IDEsIH0sCi0JCXVubGlrZSA9PiB7IGV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAx LCB9LAorCQlsaWtlID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJCQklZHVtcF90ZXN0X3NjaGVt YV9ydW5zLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwKKwkJCWluY2x1ZGVfY2hpbGRf dGFibGUgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0 X3NjaGVtYSA9PiAxLAorCQkJZXhjbHVkZV9jaGlsZF90YWJsZSA9PiAxLAorCQl9LAogCX0s CiAKIAknQ1JFQVRFIElOREVYIC4uLiBPTiBtZWFzdXJlbWVudF95MjAwNl9tMicgPT4gewpA QCAtMzI4NCw2ICszMzU1LDEwIEBAIG15ICV0ZXN0cyA9ICgKIAkJCSVmdWxsX3J1bnMsCiAJ CQlyb2xlICAgICAgICAgICAgICA9PiAxLAogCQkJc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwK KwkJCWluY2x1ZGVfY2hpbGRfdGFibGUgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJ CWV4Y2x1ZGVfY2hpbGRfdGFibGUgPT4gMSwKIAkJfSwKIAl9LAogCkBAIC0zMjk1LDYgKzMz NzAsMTAgQEAgbXkgJXRlc3RzID0gKAogCQkJJWZ1bGxfcnVucywKIAkJCXJvbGUgICAgICAg ICAgICAgID0+IDEsCiAJCQlzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLAorCQkJaW5jbHVkZV9j aGlsZF90YWJsZSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9jaGls ZF90YWJsZSA9PiAxLAogCQl9LAogCX0sCiAKQEAgLTMzMjQsNiArMzQwMyw3IEBAIG15ICV0 ZXN0cyA9ICgKIAkJCXJvbGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogCQkJc2NoZW1h X29ubHkgICAgICAgICAgICAgID0+IDEsCiAJCQlzZWN0aW9uX3Bvc3RfZGF0YSAgICAgICAg PT4gMSwKKwkJCWluY2x1ZGVfY2hpbGRfdGFibGUgICAgICA9PiAxLAogCQl9LAogCQl1bmxp a2UgPT4gewogCQkJb25seV9kdW1wX3Rlc3Rfc2NoZW1hICAgID0+IDEsCkBAIC0zMzMyLDYg KzM0MTIsNyBAQCBteSAldGVzdHMgPSAoCiAJCQlwZ19kdW1wYWxsX2dsb2JhbHNfY2xlYW4g PT4gMSwKIAkJCXNlY3Rpb25fcHJlX2RhdGEgICAgICAgICA9PiAxLAogCQkJdGVzdF9zY2hl bWFfcGx1c19sYXJnZV9vYmplY3RzID0+IDEsCisJCQlleGNsdWRlX2NoaWxkX3RhYmxlICAg ICAgPT4gMSwKIAkJfSwKIAl9LAogCkBAIC0zNjE0LDExICszNjk1LDE2IEBAIG15ICV0ZXN0 cyA9ICgKIAkJCQkJCSAgIFRPIHJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGU7JywKIAkJcmVnZXhw ID0+CiAJCSAgcXIvXlxRR1JBTlQgU0VMRUNUIE9OIFRBQkxFIGR1bXBfdGVzdC5tZWFzdXJl bWVudCBUTyByZWdyZXNzX2R1bXBfdGVzdF9yb2xlO1xFL20sCi0JCWxpa2UgPT4KLQkJICB7 ICVmdWxsX3J1bnMsICVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsIHNlY3Rpb25fcHJlX2RhdGEg PT4gMSwgfSwKKwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9z Y2hlbWFfcnVucywKKwkJCXNlY3Rpb25fcHJlX2RhdGEgPT4gMSwKKwkJCWluY2x1ZGVfY2hp bGRfdGFibGUgPT4gMSwKKwkJfSwKIAkJdW5saWtlID0+IHsKIAkJCWV4Y2x1ZGVfZHVtcF90 ZXN0X3NjaGVtYSA9PiAxLAogCQkJbm9fcHJpdnMgICAgICAgICAgICAgICAgID0+IDEsCisJ CQlleGNsdWRlX2NoaWxkX3RhYmxlICAgICAgPT4gMSwKIAkJfSwKIAl9LAogCkBAIC0zNjM2 LDggKzM3MjIsMTIgQEAgbXkgJXRlc3RzID0gKAogCQkJJWZ1bGxfcnVucywKIAkJCXJvbGUg ICAgICAgICAgICAgPT4gMSwKIAkJCXNlY3Rpb25fcHJlX2RhdGEgPT4gMSwKKwkJCWluY2x1 ZGVfY2hpbGRfdGFibGUgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCW5vX3ByaXZz ID0+IDEsCisJCQlleGNsdWRlX2NoaWxkX3RhYmxlID0+IDEsCiAJCX0sCi0JCXVubGlrZSA9 PiB7IG5vX3ByaXZzID0+IDEsIH0sCiAJfSwKIAogCSdHUkFOVCBBTEwgT04gTEFSR0UgT0JK RUNUIC4uLicgPT4gewpAQCAtMzg4NCw2ICszOTc0LDcgQEAgbXkgJXRlc3RzID0gKAogCQkJ b25seV9kdW1wX3Rlc3RfdGFibGUgPT4gMSwKIAkJCXJvbGUgICAgICAgICAgICAgICAgID0+ IDEsCiAJCQlzZWN0aW9uX3ByZV9kYXRhICAgICA9PiAxLAorCQkJaW5jbHVkZV9jaGlsZF90 YWJsZSAgPT4gMSwKIAkJfSwKIAkJdW5saWtlID0+IHsgbm9fcHJpdnMgPT4gMSwgfSwKIAl9 LApAQCAtNDEwNiw2ICs0MTk3LDEzIEBAICRub2RlLT5jb21tYW5kX2ZhaWxzX2xpa2UoCiAJ cXIvcGdfZHVtcGFsbDogZXJyb3I6IGltcHJvcGVyIHF1YWxpZmllZCBuYW1lIFwodG9vIG1h bnkgZG90dGVkIG5hbWVzXCk6IG15aG9zdFwubXlkYi8sCiAJJ3BnX2R1bXBhbGw6IG9wdGlv biAtLWV4Y2x1ZGUtZGF0YWJhc2UgcmVqZWN0cyBtdWx0aXBhcnQgZGF0YWJhc2UgbmFtZXMn KTsKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCBpbnZhbGlkIHVzZSBvZiAtLXdpdGgtY2hpbGRzCiskbm9kZS0+Y29tbWFuZF9mYWlsc19s aWtlKAorCVsgJ3BnX2R1bXAnLCAnLXAnLCAiJHBvcnQiLCAnLS13aXRoLWNoaWxkcycgXSwK Kwlxci9wZ19kdW1wOiBlcnJvcjogb3B0aW9uIC0td2l0aC1jaGlsZHMgcmVxdWlyZXMgb3B0 aW9uIC10XC8tLXRhYmxlIG9yIC1UXC8tLWV4Y2x1ZGUtdGFibGUvLAorCSdwZ19kdW1wOiBv cHRpb24gLS13aXRoLWNoaWxkcyByZXF1aXJlIGluY2x1c2lvbiBvciBleGNsdXNpb24gb2Yg dGFibGVzJyk7CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIFRlc3QgdmFsaWQgZGF0YWJhc2UgZXhjbHVzaW9uIHBhdHRlcm5zCiAK --------------cjaoItaTlPTtayMKywdL10K9--