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 1q1Vt2-00073s-TA for pgsql-hackers@arkaria.postgresql.org; Tue, 23 May 2023 17:33:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q1Vt1-0000M3-P3 for pgsql-hackers@arkaria.postgresql.org; Tue, 23 May 2023 17:33:27 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q1Vt1-0000Lu-4J for pgsql-hackers@lists.postgresql.org; Tue, 23 May 2023 17:33:27 +0000 Received: from mail-oa1-x2e.google.com ([2001:4860:4864:20::2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q1Vsx-001Ud6-Qy for pgsql-hackers@postgresql.org; Tue, 23 May 2023 17:33:25 +0000 Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-19a308a045aso2798573fac.0 for ; Tue, 23 May 2023 10:33:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon-tech.20221208.gappssmtp.com; s=20221208; t=1684863203; x=1687455203; h=to:from:subject:message-id:date:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=z1ADVWwDL3d1HgmEc9d/d1FtkZBylaIOHWXjmbE1Ue8=; b=iBTSLnaBSEnnc1UvWmkBv6LFnUb2UIsRea8v25YejT8+JYl7242gYhH2wJ7Em/tS/Z iYIxjESUHHhuML9/oQv8nlGlE0LPj89QQX+ljAOu48jgdM2tuqCFmgv7OavxVtTesqaW psMg+Zx5eAqKxuRB4CgHwLUIjmPFEsxGaR3vUB2LoVByTL++rfUeg2DhHP7W57LVe3Gq 0aImqpkOHltwdr2oo9eEZySjVJomLRuZMf4goQMGICvERY+EmuDrcm35ho7u7lo4PCrm oNqFQiVU2Rsv5BaqXXE++xJl8Az85aStrEDFQZYK29HhxZY6jYMld7UzhdSEVZgqKLR6 8R2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684863203; x=1687455203; h=to:from:subject:message-id:date:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=z1ADVWwDL3d1HgmEc9d/d1FtkZBylaIOHWXjmbE1Ue8=; b=lDEvwJclHKJ5JSuwsBQWUrrlprlFXAbVRxss0C6Ijib/wJn7SPYqhFVmCAuStdQnH9 l7wrEWks2ZWyeMdPunn15UCHP3ZpwxtYosiHYYIdyVYGrhguLYYE76BKXicAOlyaiDF6 M6WyakVssALP0CJtH9v5hQWFJdDbCHtBBv86HcTRfdBSNQdXRyif/SR0NPiXrKVv99ZG IKSgqR8TIK32NhB2Tjr6Qn6bJIC9IEg+Eq/KAtUfNlH/KyhskqoNw8zvAxY/YCM5f/W3 MZD53j+XyYL5ttEmWaQXV7wSg5FFK+SlgBem6QAG+EGQ6wYipdTDeCmaYJrrNioB+wv9 hYIw== X-Gm-Message-State: AC+VfDyAQarItEHkRdragW96atHrUcmpW0EsuGXdU1j+GIGCWpnqVmQl 5v+QLDWnIU530rydSa2VIfta4HmOaAhhrAA7cZs= X-Google-Smtp-Source: ACHHUZ4JNbDX3S0/vpAaAfukRIxODr2MUXJsje2+U3Cp3o0I0lHOi4eg8ejDXrZL7hFkrN+SQRcp8A== X-Received: by 2002:a05:6870:5792:b0:19e:34f8:4d4f with SMTP id i18-20020a056870579200b0019e34f84d4fmr4726652oap.32.1684863202628; Tue, 23 May 2023 10:33:22 -0700 (PDT) Received: from localhost ([2607:fb90:e602:57ee:8a4:550b:a504:c1ba]) by smtp.gmail.com with ESMTPSA id a21-20020a056870e35500b0017fea9c156esm3777294oae.18.2023.05.23.10.33.21 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 23 May 2023 10:33:22 -0700 (PDT) Content-Type: multipart/mixed; boundary=296d5fd5f1b584b38f0eb82ddb6faae35008cf7a97ad45ece90cba9765dc Mime-Version: 1.0 Date: Tue, 23 May 2023 12:33:21 -0500 Message-Id: Subject: Use COPY for populating all pgbench tables From: "Tristan Partin" To: X-Mailer: aerc 0.14.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --296d5fd5f1b584b38f0eb82ddb6faae35008cf7a97ad45ece90cba9765dc Content-Type: multipart/alternative; boundary=4e6350ae8de7dd5c45518b72120be8f6527414b9f7d2f9260dcf910af0a1 --4e6350ae8de7dd5c45518b72120be8f6527414b9f7d2f9260dcf910af0a1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 Hello, We (Neon) have noticed that pgbench can be quite slow to populate data in regard to higher latency connections. Higher scale factors exacerbate this problem. Some employees work on a different continent than the databases they might be benchmarking. By moving pgbench to use COPY for populating all tables, we can reduce some of the time pgbench takes for this particular step.=20 I wanted to come with benchmarks, but unfortunately I won't have them until next month. I can follow-up in a future email. --=20 Tristan Partin Neon (https://neon.tech) --4e6350ae8de7dd5c45518b72120be8f6527414b9f7d2f9260dcf910af0a1-- --296d5fd5f1b584b38f0eb82ddb6faae35008cf7a97ad45ece90cba9765dc Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0001-Move-constant-into-format-string.patch Content-Type: text/x-patch; charset=utf-8; name=v1-0001-Move-constant-into-format-string.patch RnJvbSA0OThmNWM3ZmRkY2VhZmVkM2Y4MzE5NjNkZmNhMTIyNTY3NDYzOTBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMjMgTWF5IDIwMjMgMDk6MjE6NTUgLTA1MDAKU3ViamVjdDogW1BBVENIIHBvc3Rn cmVzIHYxIDEvMl0gTW92ZSBjb25zdGFudCBpbnRvIGZvcm1hdCBzdHJpbmcKCklmIHdlIGFyZSBh bHdheXMgZ29pbmcgdG8gd3JpdGUgYSAwLCBqdXN0IHB1dCB0aGUgMCBpbiB0aGUgZm9ybWF0CnN0 cmluZy4KLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgNCArKy0tCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDcw ZWQwMzRlNzAuLjBmYmI5YTI2MTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNDkzOSw4ICs0OTM5LDggQEAg aW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAKIAkJLyogImZpbGxlciIg Y29sdW1uIGRlZmF1bHRzIHRvIGJsYW5rIHBhZGRlZCBlbXB0eSBzdHJpbmcgKi8KIAkJcHJpbnRm UFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAgSU5UNjRfRk9STUFUICJcdCIgSU5UNjRfRk9STUFU ICJcdCVkXHRcbiIsCi0JCQkJCQkgIGosIGsgLyBuYWNjb3VudHMgKyAxLCAwKTsKKwkJCQkJCSAg SU5UNjRfRk9STUFUICJcdCIgSU5UNjRfRk9STUFUICJcdDBcdFxuIiwKKwkJCQkJCSAgaiwgayAv IG5hY2NvdW50cyArIDEpOwogCQlpZiAoUFFwdXRsaW5lKGNvbiwgc3FsLmRhdGEpKQogCQkJcGdf ZmF0YWwoIlBRcHV0bGluZSBmYWlsZWQiKTsKIAotLSAKLS0gClRyaXN0YW4gUGFydGluCk5lb24g KGh0dHBzOi8vbmVvbi50ZWNoKQoK --296d5fd5f1b584b38f0eb82ddb6faae35008cf7a97ad45ece90cba9765dc Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0002-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch Content-Type: text/x-patch; charset=utf-8; name=v1-0002-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch RnJvbSA2YTMyNmQ2ZTMxOTcxNDJlZTAzMTQwNjc5ZWJlZGM5NzhlZTE0ODVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMjMgTWF5IDIwMjMgMTE6NDg6MTYgLTA1MDAKU3ViamVjdDogW1BBVENIIHBvc3Rn cmVzIHYxIDIvMl0gVXNlIENPUFkgaW5zdGVhZCBvZiBJTlNFUlQgZm9yIHBvcHVsYXRpbmcgYWxs CiB0YWJsZXMKCkNPUFkgaXMgYSBiZXR0ZXIgaW50ZXJmYWNlIGZvciBidWxrIGxvYWRpbmcgYW5k L29yIGhpZ2ggbGF0ZW5jeQpjb25uZWN0aW9ucy4gUHJldmlvdXNseSBDT1BZIHdhcyBvbmx5IHVz ZWQgZm9yIHRoZSBwZ2JlbmNoX2FjY291bnRzCnRhYmxlIGJlY2F1c2UgdGhlIGFtb3VudCBvZiBk YXRhIHdhcyBzbyBtdWNoIGxhcmdlciB0aGFuIHRoZSBvdGhlcgp0YWJsZXMuIEhvd2V2ZXIsIGFz IGFscmVhZHkgc2FpZCB0aGVyZSBhcmUgYWxzbyBnYWlucyB0byBiZSBoYWQgaW4gdGhlCmhpZ2gg bGF0ZW5jeSBjYXNlLCBzdWNoIGFzIGxvYWRpbmcgZGF0YSBhY3Jvc3MgY29udGluZW50cy4KLS0t CiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMTUyICsrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgNjQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMGZiYjlhMjYxNi4uNmM3ZjE0M2U4NiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCkBAIC00ODYxLDE3ICs0ODYxLDQ2IEBAIGluaXRUcnVuY2F0ZVRhYmxlcyhQR2Nvbm4g KmNvbikKIAkJCQkJICJwZ2JlbmNoX3RlbGxlcnMiKTsKIH0KIAotLyoKLSAqIEZpbGwgdGhlIHN0 YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgYW5kIHNlbnQgZnJvbSB0aGUg Y2xpZW50Ci0gKi8KK3R5cGVkZWYgdm9pZCBpbml0Um93KFBHY29ubiAqY29uLCBQUUV4cEJ1ZmZl ckRhdGEgKnNxbCwgaW50NjQgY3Vycik7CisKIHN0YXRpYyB2b2lkCi1pbml0R2VuZXJhdGVEYXRh Q2xpZW50U2lkZShQR2Nvbm4gKmNvbikKK2luaXRCcmFuY2goUEdjb25uICpjb24sIFBRRXhwQnVm ZmVyRGF0YSAqc3FsLCBpbnQ2NCBjdXJyKQogewotCVBRRXhwQnVmZmVyRGF0YSBzcWw7CisJLyog ImZpbGxlciIgY29sdW1uIGRlZmF1bHRzIHRvIE5VTEwgKi8KKwlwcmludGZQUUV4cEJ1ZmZlcihz cWwsCisJCQkJCSAgSU5UNjRfRk9STUFUICJcdDBcdFxuIiwKKwkJCQkJICBjdXJyICsgMSk7Cit9 CisKK3N0YXRpYyB2b2lkCitpbml0VGVsbGVyKFBHY29ubiAqY29uLCBQUUV4cEJ1ZmZlckRhdGEg KnNxbCwgaW50NjQgY3VycikKK3sKKwkvKiAiZmlsbGVyIiBjb2x1bW4gZGVmYXVsdHMgdG8gTlVM TCAqLworCXByaW50ZlBRRXhwQnVmZmVyKHNxbCwKKwkJCQkJICBJTlQ2NF9GT1JNQVQgIlx0IiBJ TlQ2NF9GT1JNQVQgIlx0MFx0XG4iLAorCQkJCQkgIGN1cnIgKyAxLCBjdXJyIC8gbnRlbGxlcnMg KyAxKTsKK30KKworc3RhdGljIHZvaWQKK2luaXRBY2NvdW50KFBHY29ubiAqY29uLCBQUUV4cEJ1 ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKK3sKKwkvKiAiZmlsbGVyIiBjb2x1bW4gZGVmYXVs dHMgdG8gYmxhbmsgcGFkZGVkIGVtcHR5IHN0cmluZyAqLworCXByaW50ZlBRRXhwQnVmZmVyKHNx bCwKKwkJCQkJICBJTlQ2NF9GT1JNQVQgIlx0IiBJTlQ2NF9GT1JNQVQgIlx0MFx0XG4iLAorCQkJ CQkgIGN1cnIgKyAxLCBjdXJyIC8gbmFjY291bnRzICsgMSk7Cit9CisKK3N0YXRpYyB2b2lkCitp bml0UG9wdWxhdGVUYWJsZShQR2Nvbm4gKmNvbiwgY29uc3QgY2hhciAqdGFibGUsIGludDY0IGJh c2UsIGluaXRSb3cgKmluaXRfcm93KQoreworCWludCAJCW47CisJaW50NjQgCQlrOwogCVBHcmVz dWx0ICAgKnJlczsKLQlpbnQJCQlpOwotCWludDY0CQlrOwotCWNoYXIJICAgKmNvcHlfc3RhdGVt ZW50OworCVBRRXhwQnVmZmVyRGF0YSBzcWw7CisJYm9vbAkJcHJpbnRlZCA9IGZhbHNlOworCWNo YXIgCQljb3B5X3N0YXRlbWVudFsyNTZdOworCWNvbnN0IGNoYXIgKmNvcHlfc3RhdGVtZW50X2Zt dDsKKwljb25zdCBpbnQ2NCB0b3RhbCA9IGJhc2UgKiBzY2FsZTsKIAogCS8qIHVzZWQgdG8gdHJh Y2sgZWxhcHNlZCB0aW1lIGFuZCBlc3RpbWF0ZSBvZiB0aGUgcmVtYWluaW5nIHRpbWUgKi8KIAlw Z190aW1lX3VzZWNfdCBzdGFydDsKQEAgLTQ4ODAsNTAgKzQ5MDksMTkgQEAgaW5pdEdlbmVyYXRl RGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAJLyogU3RheSBvbiB0aGUgc2FtZSBsaW5lIGlm IHJlcG9ydGluZyB0byBhIHRlcm1pbmFsICovCiAJY2hhcgkJZW9sID0gaXNhdHR5KGZpbGVubyhz dGRlcnIpKSA/ICdccicgOiAnXG4nOwogCi0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRh dGEgKGNsaWVudC1zaWRlKS4uLlxuIik7Ci0KLQkvKgotCSAqIHdlIGRvIGFsbCBvZiB0aGlzIGlu IG9uZSB0cmFuc2FjdGlvbiB0byBlbmFibGUgdGhlIGJhY2tlbmQncwotCSAqIGRhdGEtbG9hZGlu ZyBvcHRpbWl6YXRpb25zCi0JICovCi0JZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIpOwot Ci0JLyogdHJ1bmNhdGUgYXdheSBhbnkgb2xkIGRhdGEgKi8KLQlpbml0VHJ1bmNhdGVUYWJsZXMo Y29uKTsKLQogCWluaXRQUUV4cEJ1ZmZlcigmc3FsKTsKIAotCS8qCi0JICogZmlsbCBicmFuY2hl cywgdGVsbGVycywgYWNjb3VudHMgaW4gdGhhdCBvcmRlciBpbiBjYXNlIGZvcmVpZ24ga2V5cwot CSAqIGFscmVhZHkgZXhpc3QKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbmJyYW5jaGVzICogc2Nh bGU7IGkrKykKLQl7Ci0JCS8qICJmaWxsZXIiIGNvbHVtbiBkZWZhdWx0cyB0byBOVUxMICovCi0J CXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2Jy YW5jaGVzKGJpZCxiYmFsYW5jZSkgdmFsdWVzKCVkLDApIiwKLQkJCQkJCSAgaSArIDEpOwotCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwotCX0KLQotCWZvciAoaSA9IDA7IGkgPCBu dGVsbGVycyAqIHNjYWxlOyBpKyspCi0JewotCQkvKiAiZmlsbGVyIiBjb2x1bW4gZGVmYXVsdHMg dG8gTlVMTCAqLwotCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkJICAiaW5zZXJ0IGlu dG8gcGdiZW5jaF90ZWxsZXJzKHRpZCxiaWQsdGJhbGFuY2UpIHZhbHVlcyAoJWQsJWQsMCkiLAot CQkJCQkJICBpICsgMSwgaSAvIG50ZWxsZXJzICsgMSk7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29u LCBzcWwuZGF0YSk7Ci0JfQotCi0JLyoKLQkgKiBhY2NvdW50cyBpcyBiaWcgZW5vdWdoIHRvIGJl IHdvcnRoIHVzaW5nIENPUFkgYW5kIHRyYWNraW5nIHJ1bnRpbWUKLQkgKi8KLQogCS8qIHVzZSBD T1BZIHdpdGggRlJFRVpFIG9uIHYxNCBhbmQgbGF0ZXIgd2l0aG91dCBwYXJ0aXRpb25pbmcgKi8K IAlpZiAocGFydGl0aW9ucyA9PSAwICYmIFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAwMCkK LQkJY29weV9zdGF0ZW1lbnQgPSAiY29weSBwZ2JlbmNoX2FjY291bnRzIGZyb20gc3RkaW4gd2l0 aCAoZnJlZXplIG9uKSI7CisJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzIGZyb20gc3Rk aW4gd2l0aCAoZnJlZXplIG9uKSI7CiAJZWxzZQotCQljb3B5X3N0YXRlbWVudCA9ICJjb3B5IHBn YmVuY2hfYWNjb3VudHMgZnJvbSBzdGRpbiI7CisJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5 ICVzIGZyb20gc3RkaW4iOworCisJbiA9IHBnX3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXpl b2YoY29weV9zdGF0ZW1lbnQpLCBjb3B5X3N0YXRlbWVudF9mbXQsIHRhYmxlKTsKKwlpZiAobiA+ PSBzaXplb2YoY29weV9zdGF0ZW1lbnQpKQorCQlwZ19mYXRhbCgiaW52YWxpZCBidWZmZXIgc2l6 ZTogbXVzdCBiZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzIGxvbmciLCBuKTsKKwllbHNlIGlmIChu ID09IC0xKQorCQlwZ19mYXRhbCgiaW52YWxpZCBmb3JtYXQgc3RyaW5nIik7CiAKIAlyZXMgPSBQ UWV4ZWMoY29uLCBjb3B5X3N0YXRlbWVudCk7CiAKQEAgLTQ5MzMsMTQgKzQ5MzEsMTEgQEAgaW5p dEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAKIAlzdGFydCA9IHBnX3RpbWVf bm93KCk7CiAKLQlmb3IgKGsgPSAwOyBrIDwgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZTsgaysr KQorCWZvciAoayA9IDA7IGsgPCB0b3RhbDsgaysrKQogCXsKLQkJaW50NjQJCWogPSBrICsgMTsK KwkJY29uc3QgaW50NjQgCQlqID0gayArIDE7CiAKLQkJLyogImZpbGxlciIgY29sdW1uIGRlZmF1 bHRzIHRvIGJsYW5rIHBhZGRlZCBlbXB0eSBzdHJpbmcgKi8KLQkJcHJpbnRmUFFFeHBCdWZmZXIo JnNxbCwKLQkJCQkJCSAgSU5UNjRfRk9STUFUICJcdCIgSU5UNjRfRk9STUFUICJcdDBcdFxuIiwK LQkJCQkJCSAgaiwgayAvIG5hY2NvdW50cyArIDEpOworCQlpbml0X3Jvdyhjb24sICZzcWwsIGsp OwogCQlpZiAoUFFwdXRsaW5lKGNvbiwgc3FsLmRhdGEpKQogCQkJcGdfZmF0YWwoIlBRcHV0bGlu ZSBmYWlsZWQiKTsKIApAQCAtNDk1NCwyNSArNDk0OSwyOCBAQCBpbml0R2VuZXJhdGVEYXRhQ2xp ZW50U2lkZShQR2Nvbm4gKmNvbikKIAkJaWYgKCghdXNlX3F1aWV0KSAmJiAoaiAlIDEwMDAwMCA9 PSAwKSkKIAkJewogCQkJZG91YmxlCQllbGFwc2VkX3NlYyA9IFBHX1RJTUVfR0VUX0RPVUJMRShw Z190aW1lX25vdygpIC0gc3RhcnQpOwotCQkJZG91YmxlCQlyZW1haW5pbmdfc2VjID0gKChkb3Vi bGUpIHNjYWxlICogbmFjY291bnRzIC0gaikgKiBlbGFwc2VkX3NlYyAvIGo7CisJCQlkb3VibGUJ CXJlbWFpbmluZ19zZWMgPSAoKGRvdWJsZSkgdG90YWwgLSBqKSAqIGVsYXBzZWRfc2VjIC8gajsK IAotCQkJZnByaW50ZihzdGRlcnIsIElOVDY0X0ZPUk1BVCAiIG9mICIgSU5UNjRfRk9STUFUICIg dHVwbGVzICglZCUlKSBkb25lIChlbGFwc2VkICUuMmYgcywgcmVtYWluaW5nICUuMmYgcyklYyIs Ci0JCQkJCWosIChpbnQ2NCkgbmFjY291bnRzICogc2NhbGUsCi0JCQkJCShpbnQpICgoKGludDY0 KSBqICogMTAwKSAvIChuYWNjb3VudHMgKiAoaW50NjQpIHNjYWxlKSksCi0JCQkJCWVsYXBzZWRf c2VjLCByZW1haW5pbmdfc2VjLCBlb2wpOworCQkJcHJpbnRlZCA9IHRydWU7CisJCQlmcHJpbnRm KHN0ZGVyciwgSU5UNjRfRk9STUFUICIgb2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBsZXMgKCVkJSUp IG9mICVzIGRvbmUgKGVsYXBzZWQgJS4yZiBzLCByZW1haW5pbmcgJS4yZiBzKSVjIiwKKwkJCQkJ aiwgdG90YWwsCisJCQkJCShpbnQpICgoaiAqIDEwMCkgLyB0b3RhbCksCisJCQkJCXRhYmxlLCBl bGFwc2VkX3NlYywgcmVtYWluaW5nX3NlYywgZW9sKTsKIAkJfQogCQkvKiBsZXQncyBub3QgY2Fs bCB0aGUgdGltaW5nIGZvciBlYWNoIHJvdywgYnV0IG9ubHkgZWFjaCAxMDAgcm93cyAqLwogCQll bHNlIGlmICh1c2VfcXVpZXQgJiYgKGogJSAxMDAgPT0gMCkpCiAJCXsKIAkJCWRvdWJsZQkJZWxh cHNlZF9zZWMgPSBQR19USU1FX0dFVF9ET1VCTEUocGdfdGltZV9ub3coKSAtIHN0YXJ0KTsKLQkJ CWRvdWJsZQkJcmVtYWluaW5nX3NlYyA9ICgoZG91YmxlKSBzY2FsZSAqIG5hY2NvdW50cyAtIGop ICogZWxhcHNlZF9zZWMgLyBqOworCQkJZG91YmxlCQlyZW1haW5pbmdfc2VjID0gKChkb3VibGUp IHRvdGFsIC0gaikgKiBlbGFwc2VkX3NlYyAvIGo7CiAKIAkJCS8qIGhhdmUgd2UgcmVhY2hlZCB0 aGUgbmV4dCBpbnRlcnZhbCAob3IgZW5kKT8gKi8KLQkJCWlmICgoaiA9PSBzY2FsZSAqIG5hY2Nv dW50cykgfHwgKGVsYXBzZWRfc2VjID49IGxvZ19pbnRlcnZhbCAqIExPR19TVEVQX1NFQ09ORFMp KQorCQkJaWYgKChqID09IHRvdGFsKSB8fCAoZWxhcHNlZF9zZWMgPj0gbG9nX2ludGVydmFsICog TE9HX1NURVBfU0VDT05EUykpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIElOVDY0X0ZPUk1B VCAiIG9mICIgSU5UNjRfRk9STUFUICIgdHVwbGVzICglZCUlKSBkb25lIChlbGFwc2VkICUuMmYg cywgcmVtYWluaW5nICUuMmYgcyklYyIsCi0JCQkJCQlqLCAoaW50NjQpIG5hY2NvdW50cyAqIHNj YWxlLAotCQkJCQkJKGludCkgKCgoaW50NjQpIGogKiAxMDApIC8gKG5hY2NvdW50cyAqIChpbnQ2 NCkgc2NhbGUpKSwgZWxhcHNlZF9zZWMsIHJlbWFpbmluZ19zZWMsIGVvbCk7CisJCQkJcHJpbnRl ZCA9IHRydWU7CisJCQkJZnByaW50ZihzdGRlcnIsIElOVDY0X0ZPUk1BVCAiIG9mICIgSU5UNjRf Rk9STUFUICIgdHVwbGVzICglZCUlKSBvZiAlcyBkb25lIChlbGFwc2VkICUuMmYgcywgcmVtYWlu aW5nICUuMmYgcyklYyIsCisJCQkJCQlqLCB0b3RhbCwKKwkJCQkJCShpbnQpICgoaiAqIDEwMCkg LyB0b3RhbCksCisJCQkJCQl0YWJsZSwgZWxhcHNlZF9zZWMsIHJlbWFpbmluZ19zZWMsIGVvbCk7 CiAKIAkJCQkvKiBza2lwIHRvIHRoZSBuZXh0IGludGVydmFsICovCiAJCQkJbG9nX2ludGVydmFs ID0gKGludCkgY2VpbChlbGFwc2VkX3NlYyAvIExPR19TVEVQX1NFQ09ORFMpOwpAQCAtNDk4MCw3 ICs0OTc4LDcgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAJCX0K IAl9CiAKLQlpZiAoZW9sICE9ICdcbicpCisJaWYgKHByaW50ZWQgJiYgZW9sICE9ICdcbicpCiAJ CWZwdXRjKCdcbicsIHN0ZGVycik7CS8qIE5lZWQgdG8gbW92ZSB0byBuZXh0IGxpbmUgKi8KIAog CWlmIChQUXB1dGxpbmUoY29uLCAiXFwuXG4iKSkKQEAgLTQ5ODksNiArNDk4NywzMiBAQCBpbml0 R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIAkJcGdfZmF0YWwoIlBRZW5kY29w eSBmYWlsZWQiKTsKIAogCXRlcm1QUUV4cEJ1ZmZlcigmc3FsKTsKK30KKworLyoKKyAqIEZpbGwg dGhlIHN0YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgYW5kIHNlbnQgZnJv bSB0aGUgY2xpZW50CisgKi8KK3N0YXRpYyB2b2lkCitpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lk ZShQR2Nvbm4gKmNvbikKK3sKKwlmcHJpbnRmKHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0YSAoY2xp ZW50LXNpZGUpLi4uXG4iKTsKKworCS8qCisJICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRy YW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCisJICogZGF0YS1sb2FkaW5nIG9wdGlt aXphdGlvbnMKKwkgKi8KKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CisKKwkvKiB0 cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLworCWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwor CisJLyoKKwkgKiBmaWxsIGJyYW5jaGVzLCB0ZWxsZXJzLCBhY2NvdW50cyBpbiB0aGF0IG9yZGVy IGluIGNhc2UgZm9yZWlnbiBrZXlzCisJICogYWxyZWFkeSBleGlzdAorCSAqLworCWluaXRQb3B1 bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hfYnJhbmNoZXMiLCBuYnJhbmNoZXMsIGluaXRCcmFuY2gp OworCWluaXRQb3B1bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hfdGVsbGVycyIsIG50ZWxsZXJzLCBp bml0VGVsbGVyKTsKKwlpbml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX2FjY291bnRzIiwg bmFjY291bnRzLCBpbml0QWNjb3VudCk7CiAKIAlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1p dCIpOwogfQotLSAKLS0gClRyaXN0YW4gUGFydGluCk5lb24gKGh0dHBzOi8vbmVvbi50ZWNoKQoK --296d5fd5f1b584b38f0eb82ddb6faae35008cf7a97ad45ece90cba9765dc--