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 1wcKo6-003GrJ-2h for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jun 2026 10:26:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcKn5-000ElO-1Q for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jun 2026 10:25:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcKn5-000ElF-04 for pgsql-hackers@lists.postgresql.org; Wed, 24 Jun 2026 10:25:07 +0000 Received: from mail-qv1-xf2d.google.com ([2607:f8b0:4864:20::f2d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wcKn2-000000000dt-009L for pgsql-hackers@lists.postgresql.org; Wed, 24 Jun 2026 10:25:06 +0000 Received: by mail-qv1-xf2d.google.com with SMTP id 6a1803df08f44-8dc09919aa2so15220956d6.3 for ; Wed, 24 Jun 2026 03:25:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782296702; cv=none; d=google.com; s=arc-20240605; b=f/3S+BJ+3yMlJQKqU7XbnMAW7A5x2XMab9ZtIZtA5PT3derRYZ7baGqbagKHOq8LEO G2h+brSDB4TNgJk6A/ekLacP4UU2QlREUvJIRMqazRHQ2EL+zO5Lp6S87KuGdFc6dkpW CMXs6adiYQ/1PXh8YKu+uOW3RImxYoFV5m3UigKC6511OnooF4IizYlJhAiMcUrF6DSM VFq1h7VPySjuiioxBEXdVGUiHuz0HCLYI/emZcZRQP3qf1P9hoCjjEs0oPSZRgdqnDLt 1KB7wKUuHEZ75b2JXH+8EHM/s2QsgaoDyfL8Jx3EQTLhwgbjyNlFcpc2oVB7LzuXNTUp 1kcQ== 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=POgOf3bPOFe61C3/BFUyoglNoF9EJ4TDv0iqdbu+uAE=; fh=Wx24BI5iP6muu3nEXaHBv9Ec5k6TAhpWX+2f2QpSfu0=; b=Rg2P37pjPHLg2BNkDvb4JwTBvM4zUz42KKQQnKWkHLTK1JwgR0kvps51PAnP0nZYzw 2fxut1fQBJHuj7ow2xXw3+Bh9Zh8WqOJ8fDKMHR6e1YJeYATwHCpJkLEdQs5genoEnyu miyl4JkZlPviDgd0M+LKKTsLUMPdeWE0Uq8Kr5Y267J27kBdoAWcMfzTYfRrt6G9XznU sSioklI0Ty/KXq9PzmgwrNbVxObT3oGsSWceX344SxQhSVOS2KD8uW4i2/PbT5eSC+Nn 8Fuub4hKpUlhrcMk1axB+CAc+DnFnnKs9DaO0O+Vu/0uyYvXG/GPzjJR3+zzmoXYEYJU SuPQ==; 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=1782296702; x=1782901502; 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=POgOf3bPOFe61C3/BFUyoglNoF9EJ4TDv0iqdbu+uAE=; b=KlKZk30La2iLlznJ68rgu6GEBoUdiAZMY6FytUVTyKLb8Lczr44h1LYi5kI9fxcvnC j5Hh3kEM2ScB/hRrzgnlj9uhzZU+HWHPsmksMaB4vIf560IHa3/jmmXd/mJZcMuBJSDx LMT+Wi36BI37nzNhbbO2WGS8dqNgvyE6GhAO1YtE3mtriCheTLWJDzJEdFjxsD5ARw08 kaBmDEPNrGbsif5cdaPDd6hzJ4qvmde2PAgQ3EGHz7UdaZa7F2LhN4xzFuiLIdpxI+4R mq0NAxlE52C/qOeuuIeBY09DMGvg6XcSWy1APr9UVqRPYXirfPDMYDmB+64mBnuM97cN s4Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782296702; x=1782901502; 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=POgOf3bPOFe61C3/BFUyoglNoF9EJ4TDv0iqdbu+uAE=; b=qehZ+NxwefMacg7nc0EpiMnoojAD2tqiMA+ZIQ6fUTZgbJ6iR39Gu9QtKIJR3YiLGH 7WUcri4OxD+KDrvdZEpmgu7CJxmDt4k/CoDiDN0IpfeVoctg99rnzOV/yBHq4WU9B0vw A8Q/cxTD7Kbp4dpZevIAUBi+Ul+IL+hmhgM67tJmswzBcoeULl4prWlI7WwUrhjwVcim RNPp6t2tFggtGp2hXz9iSUBuERqQgVHPsS07DHjK7v78M7p/gEBJONIEDxxBdS0X3CUm S/Wp3nqtIODj4a7+MACfyBxLVXnO3JKO2VWley/yvHZXQ7v7dqDc4mt1aKhbDKJG2cLv 6V7w== X-Forwarded-Encrypted: i=1; AHgh+Rq2B6AtMHgg7YEomm6kivjOaWF2PGLx9N3NRDjIOxnxBju7iwZXJYw4s/J+7A01qASV5+lDpERH1004tVrW@lists.postgresql.org X-Gm-Message-State: AOJu0YxEHNZJtMFaV8+FjpNP4Uxf1alxGWPNpx32zjmaWJbXH3OPndC3 3SBfcOWA0tchib3HzuhoAdQBSe/hyB/2DV20ippDSCutSkBJ98ihx7C8VCCM9uG9O8lRzW/Lg/T ce02PKziUWDfLLzkJ69vhkhCFkO3xvn4= X-Gm-Gg: AfdE7cne0j5/BzjN8pY5ka4184KOZLktws5Hbu5zRGuDKvuUgVXo1PdQKqmeelN9Tvm M4o2l2IZp0L3rlFsTsGxT4ccuduqHeZdtrnSIg+hbSirQwdRexOMsA5HoAlKBf5eomy9iU+BY46 13WSsAIrVe2vQLi62WM10DGomDIEq0OfPZ3j0FYwoYzkkrOfJfN+RNf3S9c9SLkP3KUGtB2/4re QBjMWJuZqHpEJfeJ+YAbM+G5tV2O6OHxG6jnWaUmi4AAFyR4Dq7OQ4zi95x06CTuHHnFndca/4n KAHlFte+egcumo1Uk5TA8zJ6qYMSNnwCGKGxtjbIlnmHS6r/U6ndUlWNAXT+9WkhAOWnNXs= X-Received: by 2002:a05:6214:cc2:b0:8dc:31c5:7a1 with SMTP id 6a1803df08f44-8e53140110dmr51487556d6.43.1782296701559; Wed, 24 Jun 2026 03:25:01 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexander Korotkov Date: Wed, 24 Jun 2026 13:24:49 +0300 X-Gm-Features: AVVi8Cd3BKxvYEcRbBq59m582GeBFDqlkDfE3y23pRlX335bfhzOM8nGFSjUoqA Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Pavel Borisov Cc: Justin Pryzby , Dmitry Koval , Alexander Lakhin , pgsql-hackers@lists.postgresql.org, Tomas Vondra , Alvaro Herrera Content-Type: multipart/mixed; boundary="000000000000c813410654fd4946" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c813410654fd4946 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jun 22, 2026 at 1:44=E2=80=AFPM Pavel Borisov wrote: > On Sun, 21 Jun 2026 at 16:11, Alexander Korotkov w= rote: > > > > On Thu, Jun 18, 2026 at 6:49=E2=80=AFPM Justin Pryzby wrote: > > > On Thu, Jun 18, 2026 at 10:31:11AM +0300, Alexander Korotkov wrote: > > > > Pushed with your suggestions accepted. > > > > > > Thanks. When I went back to test this, I merged ~25 partitions that > > > were all on the same tablespace, but the merged table was created on = the > > > default tablespace. > > > > > > I tried again with default_tablespace set, but it was ignored. I thi= nk > > > that's wrong. It's good to follow the tablespace of the parent table= , > > > but if it has no tablespace set, default_tablespace should be obeyed. > > > See surrounding logic in DefineRelation. > > > > > > I see the docs say this: > > > + ALTER TABLE MERGE PARTITION uses the parti= tioned > > > + table itself as the template to construct the new partition. > > > + The new partition will inherit the same table access method, = persistence > > > + type, and tablespace as the partitioned table. > > > > Correct, please see the attached patch, it makes > > createPartitionTable() deal with tablespaces the same was as > > DefineRelation() does. > > Thank you for working on this feature! > I've looked into the last v1 patch. > > Does it also worth inheriting DefineRelation()'s check and error for > the case if (tablespaceId =3D=3D GLOBALTABLESPACE_OID)? > A brief look for default_tablespace GUC doesn't reveal a way why it > could not be set to global tablespace in a session. Thank you for catching this. I've added this check and corresponding tests= . ------ Regards, Alexander Korotkov Supabase --000000000000c813410654fd4946 Content-Type: application/octet-stream; name="v2-0001-Take-into-account-default_tablespace-during-MERGE.patch" Content-Disposition: attachment; filename="v2-0001-Take-into-account-default_tablespace-during-MERGE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqrxfcoa0 RnJvbSBmOTk1ZjdiYzY0Y2VlYTk0ZGJhNGI1NzZiNGFhZDJmYWE4YTA4MzRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogVGh1LCAxOCBKdW4gMjAyNiAyMTo1MzozMiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjJdIFRha2UgaW50byBhY2NvdW50IGRlZmF1bHRfdGFibGVzcGFjZSBkdXJpbmcgTUVS R0UvU1BMSVQKIFBBUlRJVElPTihTKQoKY3JlYXRlUGFydGl0aW9uVGFibGUoKSBwYXNzZWQgdGhl IHBhcnRpdGlvbmVkIHBhcmVudCdzIHJlbHRhYmxlc3BhY2Ugc3RyYWlnaHQKdG8gaGVhcF9jcmVh dGVfd2l0aF9jYXRhbG9nKCksIGJ5cGFzc2luZyB0aGUgZGVmYXVsdF90YWJsZXNwYWNlIEdVQyBm YWxsYmFjawp0aGF0IERlZmluZVJlbGF0aW9uKCkgYXBwbGllcyBmb3IgQ1JFQVRFIFRBQkxFIC4u LiBQQVJUSVRJT04gT0YuICBXaGVuIHRoZQpwYXJlbnQgaGFkIG5vIGV4cGxpY2l0IHRhYmxlc3Bh Y2UgKHJlbHRhYmxlc3BhY2UgPSAwKSwgdGhlIG5ldyBwYXJ0aXRpb24KdW5jb25kaXRpb25hbGx5 IGxhbmRlZCBpbiB0aGUgZGF0YWJhc2UgZGVmYXVsdCwgZXZlbiBpZiBkZWZhdWx0X3RhYmxlc3Bh Y2UKd2FzIHNldCB0byBzb21ldGhpbmcgZWxzZTsgbWVyZ2luZyBvciBzcGxpdHRpbmcgYSBzZXQg b2YgcGFydGl0aW9ucyB0aGF0IGFsbApsaXZlZCBpbiBhIG5vbi1kZWZhdWx0IHRhYmxlc3BhY2Ug cHJvZHVjZWQgYSBuZXcgcGFydGl0aW9uIGluIHRoZSBkYXRhYmFzZQpkZWZhdWx0LgoKTWlycm9y IERlZmluZVJlbGF0aW9uKCkncyBsb2dpYzogdGFrZSBwYXJlbnQncyByZWx0YWJsZXNwYWNlIGlm IHNldCwKb3RoZXJ3aXNlIGNoZWNrIEdldERlZmF1bHRUYWJsZXNwYWNlKCkgKHdoaWNoIHJlYWRz IGRlZmF1bHRfdGFibGVzcGFjZQphbmQgbm9ybWFsaXNlcyBwZ19kZWZhdWx0IC8gTXlEYXRhYmFz ZVRhYmxlU3BhY2UgdG8gSW52YWxpZE9pZCkuICBBbHNvCmFkZCB0aGUgQ1JFQVRFIEFDTCBjaGVj ayBvbiB0aGUgcmVzb2x2ZWQgdGFibGVzcGFjZSBhbmQgdGhlIHBnX2dsb2JhbApyZWplY3Rpb24s IG1hdGNoaW5nIERlZmluZVJlbGF0aW9uKCkncyBiZWhhdmlvci4KClVwZGF0ZSB0aGUgZG9jdW1l bnRhdGlvbiBmb3IgTUVSR0UvU1BMSVQgUEFSVElUSU9OIHRvIHNwZWxsIG91dCB0aGUKdGFibGVz cGFjZS1zZWxlY3Rpb24gcnVsZSBleHBsaWNpdGx5LgoKUmVwb3J0ZWQtYnk6IEp1c3RpbiBQcnl6 YnkgPHByeXpieUB0ZWxzYXNvZnQuY29tPgpSZXZpZXdlZC1ieTogUGF2ZWwgQm9yaXNvdiA8cGFz aGtpbi5lbGZlQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9halFU a2x2OFFBcnpUcDNoJTQwcHJ5emJ5ajIwMjMKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Rh YmxlLnNnbWwgICAgICAgICAgICAgfCAxOCArKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgICAgICAgICAgICAgIHwgMzEgKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCA1NCArKysrKysrKysrKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8IDY5ICsrKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8IDQx ICsrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsICAg ICAgfCA1MyArKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygr KSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Rh YmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggZGVjMzQz MzdkMWEuLjM2Yzg0MGY2OGQ4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Rh YmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC0xMjMz LDggKzEyMzMsMTMgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgPHBhcmE+CiAgICAg ICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OPC9jb21tYW5kPiB1c2VzIHRo ZSBwYXJ0aXRpb25lZAogICAgICAgIHRhYmxlIGl0c2VsZiBhcyB0aGUgdGVtcGxhdGUgdG8gY29u c3RydWN0IHRoZSBuZXcgcGFydGl0aW9uLgotICAgICAgIFRoZSBuZXcgcGFydGl0aW9uIHdpbGwg aW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0ZW5jZQotICAgICAg IHR5cGUsIGFuZCB0YWJsZXNwYWNlIGFzIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4KKyAgICAgICBU aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyB0aGUgdGFibGUgYWNjZXNzIG1ldGhvZCBhbmQgcGVy c2lzdGVuY2UgdHlwZQorICAgICAgIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4gIEl0cyB0YWJs ZXNwYWNlIGlzIHNlbGVjdGVkIGFzIGZvciBhCisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxF IC4uLiBQQVJUSVRJT04gT0Y8L2NvbW1hbmQ+IGNvbW1hbmQgaXNzdWVkCisgICAgICAgd2l0aG91 dCBhIDxsaXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+IGNsYXVzZTogaWYgdGhlIHBhcnRpdGlv bmVkCisgICAgICAgdGFibGUgaGFzIGFuIGV4cGxpY2l0IHRhYmxlc3BhY2UsIHRoZSBuZXcgcGFy dGl0aW9uIHVzZXMgaXQ7CisgICAgICAgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBvZiA8eHJlZiBsaW5r ZW5kPSJndWMtZGVmYXVsdC10YWJsZXNwYWNlIi8+IGlzCisgICAgICAgdGFrZW4gaW50byBhY2Nv dW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGRhdGFiYXNlJ3MgZGVmYXVsdCB0YWJsZXNwYWNlLgog CiAgICAgICAgQ29uc3RyYWludHMsIGNvbHVtbiBkZWZhdWx0cywgY29sdW1uIGdlbmVyYXRpb24g ZXhwcmVzc2lvbnMsIGlkZW50aXR5CiAgICAgICAgY29sdW1ucywgaW5kZXhlcywgYW5kIHRyaWdn ZXJzIGFyZSBjb3BpZWQgZnJvbSB0aGUgcGFydGl0aW9uZWQgdGFibGUgdG8KQEAgLTEzMzEsOCAr MTMzNiwxMyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICA8cGFyYT4KICAgICAgICA8 Y29tbWFuZD5BTFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IHVzZXMgdGhlIHBh cnRpdGlvbmVkCiAgICAgICAgdGFibGUgaXRzZWxmIGFzIHRoZSB0ZW1wbGF0ZSB0byBjb25zdHJ1 Y3QgbmV3IHBhcnRpdGlvbnMuCi0gICAgICAgTmV3IHBhcnRpdGlvbnMgd2lsbCBpbmhlcml0IHRo ZSBzYW1lIHRhYmxlIGFjY2VzcyBtZXRob2QsIHBlcnNpc3RlbmNlCi0gICAgICAgdHlwZSwgYW5k IHRhYmxlc3BhY2UgYXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlLgorICAgICAgIE5ldyBwYXJ0aXRp b25zIGluaGVyaXQgdGhlIHRhYmxlIGFjY2VzcyBtZXRob2QgYW5kIHBlcnNpc3RlbmNlIHR5cGUg b2YKKyAgICAgICB0aGUgcGFydGl0aW9uZWQgdGFibGUuICBUaGVpciB0YWJsZXNwYWNlIGlzIHNl bGVjdGVkIGFzIGZvciBhCisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIC4uLiBQQVJUSVRJ T04gT0Y8L2NvbW1hbmQ+IGNvbW1hbmQgaXNzdWVkCisgICAgICAgd2l0aG91dCBhIDxsaXRlcmFs PlRBQkxFU1BBQ0U8L2xpdGVyYWw+IGNsYXVzZTogaWYgdGhlIHBhcnRpdGlvbmVkCisgICAgICAg dGFibGUgaGFzIGFuIGV4cGxpY2l0IHRhYmxlc3BhY2UsIHRoZSBuZXcgcGFydGl0aW9ucyB1c2Ug aXQ7CisgICAgICAgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBvZiA8eHJlZiBsaW5rZW5kPSJndWMtZGVm YXVsdC10YWJsZXNwYWNlIi8+IGlzCisgICAgICAgdGFrZW4gaW50byBhY2NvdW50LCBmYWxsaW5n IGJhY2sgdG8gdGhlIGRhdGFiYXNlJ3MgZGVmYXVsdCB0YWJsZXNwYWNlLgogICAgICA8L3BhcmE+ CiAKICAgICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDI2NWRjZmU3ZmRh Li4zM2UwNjVkNjFjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIyNzM1LDYgKzIy NzM1LDcgQEAgY3JlYXRlUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmFuZ2VWYXIgKm5l d1BhcnROYW1lLAogCVJlbGF0aW9uCW5ld1JlbDsKIAlPaWQJCQluZXdSZWxJZDsKIAlPaWQJCQll eGlzdGluZ1JlbGlkOworCU9pZAkJCXRhYmxlc3BhY2VJZDsKIAlUdXBsZURlc2MJZGVzY3JpcHRv cjsKIAlMaXN0CSAgICpjb2xMaXN0ID0gTklMOwogCU9pZAkJCXJlbGFtSWQ7CkBAIC0yMjc4Niwx MCArMjI3ODcsMzggQEAgY3JlYXRlUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmFuZ2VW YXIgKm5ld1BhcnROYW1lLAogCQkJCWVycm1zZygiY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCBy ZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7CiAKKwkvKgorCSAqIFNl bGVjdCB0aGUgdGFibGVzcGFjZSBmb3IgdGhlIG5ldyBwYXJ0aXRpb24uICBNaXJyb3IgdGhlIGxv Z2ljIHRoYXQKKwkgKiBDUkVBVEUgVEFCTEUgZm9vIFBBUlRJVElPTiBPRiAuLi4gdXNlcyBpbiBE ZWZpbmVSZWxhdGlvbjogdGFrZSB0aGUKKwkgKiBwYXJ0aXRpb25lZCBwYXJlbnQncyBleHBsaWNp dCB0YWJsZXNwYWNlIGlmIGl0IGhhcyBvbmUsIG90aGVyd2lzZSB0YWtlCisJICogZGVmYXVsdF90 YWJsZXNwYWNlIGludG8gYWNjb3VudCwgYW5kIGZpbmFsbHkgdXNlIHRoZSBkYXRhYmFzZSBkZWZh dWx0LgorCSAqLworCXRhYmxlc3BhY2VJZCA9IHBhcmVudF9yZWxmb3JtLT5yZWx0YWJsZXNwYWNl OworCWlmICghT2lkSXNWYWxpZCh0YWJsZXNwYWNlSWQpKQorCQl0YWJsZXNwYWNlSWQgPSBHZXRE ZWZhdWx0VGFibGVzcGFjZShuZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2UsIGZhbHNlKTsKKwor CS8qIENoZWNrIHBlcm1pc3Npb25zIGV4Y2VwdCB3aGVuIHVzaW5nIGRhdGFiYXNlJ3MgZGVmYXVs dCAqLworCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2VJZCkgJiYgdGFibGVzcGFjZUlkICE9IE15 RGF0YWJhc2VUYWJsZVNwYWNlKQorCXsKKwkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKworCQlhY2xy ZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVGFibGVTcGFjZVJlbGF0aW9uSWQsIHRhYmxlc3BhY2VJ ZCwKKwkJCQkJCQkJCUdldFVzZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKKwkJaWYgKGFjbHJlc3VsdCAh PSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1RBQkxF U1BBQ0UsCisJCQkJCQkgICBnZXRfdGFibGVzcGFjZV9uYW1lKHRhYmxlc3BhY2VJZCkpOworCX0K KworCS8qIEluIGFsbCBjYXNlcyBkaXNhbGxvdyBwbGFjaW5nIHVzZXIgcmVsYXRpb25zIGluIHBn X2dsb2JhbCAqLworCWlmICh0YWJsZXNwYWNlSWQgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCisJCQkJIGVycm1zZygib25seSBzaGFyZWQgcmVsYXRpb25zIGNhbiBiZSBwbGFjZWQg aW4gcGdfZ2xvYmFsIHRhYmxlc3BhY2UiKSkpOworCiAJLyogQ3JlYXRlIHRoZSByZWxhdGlvbi4g Ki8KIAluZXdSZWxJZCA9IGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFtZS0+cmVs bmFtZSwKIAkJCQkJCQkJCQluYW1lc3BhY2VJZCwKLQkJCQkJCQkJCQlwYXJlbnRfcmVsZm9ybS0+ cmVsdGFibGVzcGFjZSwKKwkJCQkJCQkJCQl0YWJsZXNwYWNlSWQsCiAJCQkJCQkJCQkJSW52YWxp ZE9pZCwKIAkJCQkJCQkJCQlJbnZhbGlkT2lkLAogCQkJCQkJCQkJCUludmFsaWRPaWQsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKaW5kZXggNGY0MmFm YzNkYzcuLmQwZTE4MDRjMjRmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9tZXJnZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fbWVyZ2Uub3V0CkBAIC0xMTE0LDYgKzExMTQsNjAgQEAgU0VMRUNUIGxlbmd0aChhKSBG Uk9NIHQ7CiAgIDEwMDAwCiAoMSByb3cpCiAKK0RST1AgVEFCTEUgdDsKKy0tIFRhYmxlc3BhY2Ug c2VsZWN0aW9uIGZvciB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24gbWlycm9ycworLS0gQ1JFQVRF IFRBQkxFIC4uLiBQQVJUSVRJT04gT0Y6IHRoZSBwYXJ0aXRpb25lZCByb290J3MgZXhwbGljaXQK Ky0tIHRhYmxlc3BhY2Ugd2luczsgb3RoZXJ3aXNlIGRlZmF1bHRfdGFibGVzcGFjZSBhcHBsaWVz OyBvdGhlcndpc2UgdGhlCistLSBkYXRhYmFzZSBkZWZhdWx0IGlzIHVzZWQuCitDUkVBVEUgVEFC TEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF81IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIHRwXzVfMTAgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICg1KSBUTyAoMTApOworSU5TRVJUIElOVE8gdCBTRUxFQ1QgZ2VuZXJhdGVfc2Vy aWVzKDAsIDkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzUsIHRwXzVf MTApIElOVE8gdHBfbWVyZ2VkOworU0VMRUNUIHNwY25hbWUgRlJPTSBwZ19jbGFzcyBjIExFRlQg Sk9JTiBwZ190YWJsZXNwYWNlIHMKKyAgT04gYy5yZWx0YWJsZXNwYWNlID0gcy5vaWQgV0hFUkUg Yy5yZWxuYW1lID0gJ3RwX21lcmdlZCc7CisgICAgIHNwY25hbWUgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2UKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworLS0g UGFyZW50IGhhcyBubyBleHBsaWNpdCB0YWJsZXNwYWNlLCBidXQgZGVmYXVsdF90YWJsZXNwYWNl IGlzIHNldDogdGhlCistLSBuZXcgcGFydGl0aW9uIGxhbmRzIG9uIGRlZmF1bHRfdGFibGVzcGFj ZS4KK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGkpOworQ1JFQVRF IFRBQkxFIHRwXzBfNSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsK K0NSRUFURSBUQUJMRSB0cF81XzEwIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoNSkg VE8gKDEwKTsKK0lOU0VSVCBJTlRPIHQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLCA5KTsKK1NF VCBkZWZhdWx0X3RhYmxlc3BhY2UgVE8gcmVncmVzc190YmxzcGFjZTsKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF81LCB0cF81XzEwKSBJTlRPIHRwX21lcmdlZDsKK1JFU0VU IGRlZmF1bHRfdGFibGVzcGFjZTsKK1NFTEVDVCBzcGNuYW1lIEZST00gcGdfY2xhc3MgYyBMRUZU IEpPSU4gcGdfdGFibGVzcGFjZSBzCisgIE9OIGMucmVsdGFibGVzcGFjZSA9IHMub2lkIFdIRVJF IGMucmVsbmFtZSA9ICd0cF9tZXJnZWQnOworICAgICBzcGNuYW1lICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKKy0t IFBhcmVudCBoYXMgbm8gZXhwbGljaXQgdGFibGVzcGFjZSBhbmQgZGVmYXVsdF90YWJsZXNwYWNl IGlzIGVtcHR5OiB0aGUKKy0tIG5ldyBwYXJ0aXRpb24gdXNlcyB0aGUgZGF0YWJhc2UgZGVmYXVs dCAocmVsdGFibGVzcGFjZSA9IDApLiAgQWxzbworLS0gZXhlcmNpc2UgdGhlIHBnX2dsb2JhbCBy ZWplY3Rpb24gcGF0aCB3aXRoIGRlZmF1bHRfdGFibGVzcGFjZSBwb2ludGluZworLS0gYXQgdGhl IHNoYXJlZCB0YWJsZXNwYWNlLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF81IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIHRwXzVfMTAgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworSU5TRVJUIElOVE8gdCBTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzKDAsIDkpOworU0VUIGRlZmF1bHRfdGFibGVzcGFjZSBUTyBwZ19nbG9iYWw7CitBTFRF UiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfNSwgdHBfNV8xMCkgSU5UTyB0cF9tZXJn ZWQ7CS0tIGZhaWxzCitFUlJPUjogIG9ubHkgc2hhcmVkIHJlbGF0aW9ucyBjYW4gYmUgcGxhY2Vk IGluIHBnX2dsb2JhbCB0YWJsZXNwYWNlCitSRVNFVCBkZWZhdWx0X3RhYmxlc3BhY2U7CitBTFRF UiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfNSwgdHBfNV8xMCkgSU5UTyB0cF9tZXJn ZWQ7CitTRUxFQ1QgcmVsdGFibGVzcGFjZSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAn dHBfbWVyZ2VkJzsKKyByZWx0YWJsZXNwYWNlIAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgMAorKDEgcm93KQorCiBEUk9QIFRBQkxFIHQ7CiBSRVNFVCBzZWFyY2hfcGF0aDsKIC0tCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKaW5kZXggZmFh ZjMyZWQyMGEuLjU4MjQxYTAzZDNmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fc3BsaXQub3V0CkBAIC0xNjgzLDYgKzE2ODMsNzUgQEAgU0VMRUNUIGxlbmd0aChh KSBGUk9NIHQ7CiAgIDEwMDAwCiAoMSByb3cpCiAKK0RST1AgVEFCTEUgdDsKKy0tIFRhYmxlc3Bh Y2Ugc2VsZWN0aW9uIGZvciB0aGUgbmV3IHBhcnRpdGlvbnMgbWlycm9ycworLS0gQ1JFQVRFIFRB QkxFIC4uLiBQQVJUSVRJT04gT0Y6IHRoZSBwYXJ0aXRpb25lZCByb290J3MgZXhwbGljaXQKKy0t IHRhYmxlc3BhY2Ugd2luczsgb3RoZXJ3aXNlIGRlZmF1bHRfdGFibGVzcGFjZSBhcHBsaWVzOyBv dGhlcndpc2UgdGhlCistLSBkYXRhYmFzZSBkZWZhdWx0IGlzIHVzZWQuCitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2U7CitDUkVBVEUgVEFCTEUgdHBfYWxsIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEwKTsKK0lOU0VSVCBJTlRPIHQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLCA5KTsK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX2FsbCBJTlRPICgKKyAgICBQQVJUSVRJ T04gdHBfbG8gRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSksCisgICAgUEFSVElUSU9OIHRwX2hp IEZPUiBWQUxVRVMgRlJPTSAoNSkgVE8gKDEwKQorKTsKK1NFTEVDVCBjLnJlbG5hbWUsIHMuc3Bj bmFtZSBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RhYmxlc3BhY2UgcworICBPTiBjLnJl bHRhYmxlc3BhY2UgPSBzLm9pZCBXSEVSRSBjLnJlbG5hbWUgSU4gKCd0cF9sbycsICd0cF9oaScp CisgIE9SREVSIEJZIGMucmVsbmFtZTsKKyByZWxuYW1lIHwgICAgIHNwY25hbWUgICAgICAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF9oaSAgIHwgcmVncmVzc190YmxzcGFjZQor IHRwX2xvICAgfCByZWdyZXNzX3RibHNwYWNlCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7Cist LSBQYXJlbnQgaGFzIG5vIGV4cGxpY2l0IHRhYmxlc3BhY2UsIGJ1dCBkZWZhdWx0X3RhYmxlc3Bh Y2UgaXMgc2V0OiB0aGUKKy0tIG5ldyBwYXJ0aXRpb25zIGxhbmQgb24gZGVmYXVsdF90YWJsZXNw YWNlLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaSk7CitDUkVB VEUgVEFCTEUgdHBfYWxsIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEw KTsKK0lOU0VSVCBJTlRPIHQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLCA5KTsKK1NFVCBkZWZh dWx0X3RhYmxlc3BhY2UgVE8gcmVncmVzc190YmxzcGFjZTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwX2FsbCBJTlRPICgKKyAgICBQQVJUSVRJT04gdHBfbG8gRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoNSksCisgICAgUEFSVElUSU9OIHRwX2hpIEZPUiBWQUxVRVMgRlJPTSAoNSkg VE8gKDEwKQorKTsKK1JFU0VUIGRlZmF1bHRfdGFibGVzcGFjZTsKK1NFTEVDVCBjLnJlbG5hbWUs IHMuc3BjbmFtZSBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RhYmxlc3BhY2UgcworICBP TiBjLnJlbHRhYmxlc3BhY2UgPSBzLm9pZCBXSEVSRSBjLnJlbG5hbWUgSU4gKCd0cF9sbycsICd0 cF9oaScpCisgIE9SREVSIEJZIGMucmVsbmFtZTsKKyByZWxuYW1lIHwgICAgIHNwY25hbWUgICAg ICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF9oaSAgIHwgcmVncmVzc190Ymxz cGFjZQorIHRwX2xvICAgfCByZWdyZXNzX3RibHNwYWNlCisoMiByb3dzKQorCitEUk9QIFRBQkxF IHQ7CistLSBQYXJlbnQgaGFzIG5vIGV4cGxpY2l0IHRhYmxlc3BhY2UgYW5kIGRlZmF1bHRfdGFi bGVzcGFjZSBpcyBlbXB0eTogbmV3CistLSBwYXJ0aXRpb25zIHVzZSB0aGUgZGF0YWJhc2UgZGVm YXVsdCAocmVsdGFibGVzcGFjZSA9IDApLiAgQWxzbyBleGVyY2lzZQorLS0gdGhlIHBnX2dsb2Jh bCByZWplY3Rpb24gcGF0aCB3aXRoIGRlZmF1bHRfdGFibGVzcGFjZSBwb2ludGluZyBhdCB0aGUK Ky0tIHNoYXJlZCB0YWJsZXNwYWNlLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UoaSk7CitDUkVBVEUgVEFCTEUgdHBfYWxsIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEwKTsKK0lOU0VSVCBJTlRPIHQgU0VMRUNUIGdlbmVyYXRlX3Nlcmll cygwLCA5KTsKK1NFVCBkZWZhdWx0X3RhYmxlc3BhY2UgVE8gcGdfZ2xvYmFsOworQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfYWxsIElOVE8gKAorICAgIFBBUlRJVElPTiB0cF9sbyBG T1IgVkFMVUVTIEZST00gKDApIFRPICg1KSwKKyAgICBQQVJUSVRJT04gdHBfaGkgRk9SIFZBTFVF UyBGUk9NICg1KSBUTyAoMTApCispOwktLSBmYWlscworRVJST1I6ICBvbmx5IHNoYXJlZCByZWxh dGlvbnMgY2FuIGJlIHBsYWNlZCBpbiBwZ19nbG9iYWwgdGFibGVzcGFjZQorUkVTRVQgZGVmYXVs dF90YWJsZXNwYWNlOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfYWxsIElOVE8g KAorICAgIFBBUlRJVElPTiB0cF9sbyBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KSwKKyAgICBQ QVJUSVRJT04gdHBfaGkgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApCispOworU0VMRUNUIHJl bG5hbWUsIHJlbHRhYmxlc3BhY2UgRlJPTSBwZ19jbGFzcworICBXSEVSRSByZWxuYW1lIElOICgn dHBfbG8nLCAndHBfaGknKSBPUkRFUiBCWSByZWxuYW1lOworIHJlbG5hbWUgfCByZWx0YWJsZXNw YWNlIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIHRwX2hpICAgfCAgICAgICAgICAgICAw CisgdHBfbG8gICB8ICAgICAgICAgICAgIDAKKygyIHJvd3MpCisKIERST1AgVEFCTEUgdDsKIFJF U0VUIHNlYXJjaF9wYXRoOwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bh cnRpdGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uu c3FsCmluZGV4IDRjOGM2MjVmOTdiLi5kODU3YjRkMmZiNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCkBAIC03OTgsNiArNzk4LDQ3IEBAIFNFTEVDVCByZWx0b2Fz dHJlbGlkIDw+IDAgQVMgaGFzX3RvYXN0LAogU0VMRUNUIGxlbmd0aChhKSBGUk9NIHQ7CiBEUk9Q IFRBQkxFIHQ7CiAKKy0tIFRhYmxlc3BhY2Ugc2VsZWN0aW9uIGZvciB0aGUgbmV3IG1lcmdlZCBw YXJ0aXRpb24gbWlycm9ycworLS0gQ1JFQVRFIFRBQkxFIC4uLiBQQVJUSVRJT04gT0Y6IHRoZSBw YXJ0aXRpb25lZCByb290J3MgZXhwbGljaXQKKy0tIHRhYmxlc3BhY2Ugd2luczsgb3RoZXJ3aXNl IGRlZmF1bHRfdGFibGVzcGFjZSBhcHBsaWVzOyBvdGhlcndpc2UgdGhlCistLSBkYXRhYmFzZSBk ZWZhdWx0IGlzIHVzZWQuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RShpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF81IFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIHRw XzVfMTAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworSU5TRVJU IElOVE8gdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDAsIDkpOworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzUsIHRwXzVfMTApIElOVE8gdHBfbWVyZ2VkOworU0VMRUNUIHNw Y25hbWUgRlJPTSBwZ19jbGFzcyBjIExFRlQgSk9JTiBwZ190YWJsZXNwYWNlIHMKKyAgT04gYy5y ZWx0YWJsZXNwYWNlID0gcy5vaWQgV0hFUkUgYy5yZWxuYW1lID0gJ3RwX21lcmdlZCc7CitEUk9Q IFRBQkxFIHQ7CisKKy0tIFBhcmVudCBoYXMgbm8gZXhwbGljaXQgdGFibGVzcGFjZSwgYnV0IGRl ZmF1bHRfdGFibGVzcGFjZSBpcyBzZXQ6IHRoZQorLS0gbmV3IHBhcnRpdGlvbiBsYW5kcyBvbiBk ZWZhdWx0X3RhYmxlc3BhY2UuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRShpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzUgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoNSk7CitDUkVBVEUgVEFCTEUgdHBfNV8xMCBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDUpIFRPICgxMCk7CitJTlNFUlQgSU5UTyB0IFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMCwgOSk7CitTRVQgZGVmYXVsdF90YWJsZXNwYWNlIFRPIHJlZ3Jlc3NfdGJsc3BhY2U7 CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfNSwgdHBfNV8xMCkgSU5UTyB0 cF9tZXJnZWQ7CitSRVNFVCBkZWZhdWx0X3RhYmxlc3BhY2U7CitTRUxFQ1Qgc3BjbmFtZSBGUk9N IHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RhYmxlc3BhY2UgcworICBPTiBjLnJlbHRhYmxlc3Bh Y2UgPSBzLm9pZCBXSEVSRSBjLnJlbG5hbWUgPSAndHBfbWVyZ2VkJzsKK0RST1AgVEFCTEUgdDsK KworLS0gUGFyZW50IGhhcyBubyBleHBsaWNpdCB0YWJsZXNwYWNlIGFuZCBkZWZhdWx0X3RhYmxl c3BhY2UgaXMgZW1wdHk6IHRoZQorLS0gbmV3IHBhcnRpdGlvbiB1c2VzIHRoZSBkYXRhYmFzZSBk ZWZhdWx0IChyZWx0YWJsZXNwYWNlID0gMCkuICBBbHNvCistLSBleGVyY2lzZSB0aGUgcGdfZ2xv YmFsIHJlamVjdGlvbiBwYXRoIHdpdGggZGVmYXVsdF90YWJsZXNwYWNlIHBvaW50aW5nCistLSBh dCB0aGUgc2hhcmVkIHRhYmxlc3BhY2UuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRShpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzUgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoNSk7CitDUkVBVEUgVEFCTEUgdHBfNV8xMCBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCk7CitJTlNFUlQgSU5UTyB0IFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMCwgOSk7CitTRVQgZGVmYXVsdF90YWJsZXNwYWNlIFRPIHBnX2dsb2JhbDsK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF81LCB0cF81XzEwKSBJTlRPIHRw X21lcmdlZDsJLS0gZmFpbHMKK1JFU0VUIGRlZmF1bHRfdGFibGVzcGFjZTsKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF81LCB0cF81XzEwKSBJTlRPIHRwX21lcmdlZDsKK1NF TEVDVCByZWx0YWJsZXNwYWNlIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICd0cF9tZXJn ZWQnOworRFJPUCBUQUJMRSB0OworCiAKIFJFU0VUIHNlYXJjaF9wYXRoOwogCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbAppbmRleCA5ZTQ0YWE5Y2FmMC4uZTczODExNjcw Y2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbApAQCAtMTIwNCw2 ICsxMjA0LDU5IEBAIFNFTEVDVCByZWxuYW1lLAogU0VMRUNUIGxlbmd0aChhKSBGUk9NIHQ7CiBE Uk9QIFRBQkxFIHQ7CiAKKy0tIFRhYmxlc3BhY2Ugc2VsZWN0aW9uIGZvciB0aGUgbmV3IHBhcnRp dGlvbnMgbWlycm9ycworLS0gQ1JFQVRFIFRBQkxFIC4uLiBQQVJUSVRJT04gT0Y6IHRoZSBwYXJ0 aXRpb25lZCByb290J3MgZXhwbGljaXQKKy0tIHRhYmxlc3BhY2Ugd2luczsgb3RoZXJ3aXNlIGRl ZmF1bHRfdGFibGVzcGFjZSBhcHBsaWVzOyBvdGhlcndpc2UgdGhlCistLSBkYXRhYmFzZSBkZWZh dWx0IGlzIHVzZWQuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShp KSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfYWxsIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0lOU0VSVCBJTlRPIHQgU0VM RUNUIGdlbmVyYXRlX3NlcmllcygwLCA5KTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwX2FsbCBJTlRPICgKKyAgICBQQVJUSVRJT04gdHBfbG8gRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoNSksCisgICAgUEFSVElUSU9OIHRwX2hpIEZPUiBWQUxVRVMgRlJPTSAoNSkgVE8gKDEwKQor KTsKK1NFTEVDVCBjLnJlbG5hbWUsIHMuc3BjbmFtZSBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lO IHBnX3RhYmxlc3BhY2UgcworICBPTiBjLnJlbHRhYmxlc3BhY2UgPSBzLm9pZCBXSEVSRSBjLnJl bG5hbWUgSU4gKCd0cF9sbycsICd0cF9oaScpCisgIE9SREVSIEJZIGMucmVsbmFtZTsKK0RST1Ag VEFCTEUgdDsKKworLS0gUGFyZW50IGhhcyBubyBleHBsaWNpdCB0YWJsZXNwYWNlLCBidXQgZGVm YXVsdF90YWJsZXNwYWNlIGlzIHNldDogdGhlCistLSBuZXcgcGFydGl0aW9ucyBsYW5kIG9uIGRl ZmF1bHRfdGFibGVzcGFjZS4KK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFKGkpOworQ1JFQVRFIFRBQkxFIHRwX2FsbCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxMCk7CitJTlNFUlQgSU5UTyB0IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMCwg OSk7CitTRVQgZGVmYXVsdF90YWJsZXNwYWNlIFRPIHJlZ3Jlc3NfdGJsc3BhY2U7CitBTFRFUiBU QUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF9hbGwgSU5UTyAoCisgICAgUEFSVElUSU9OIHRwX2xv IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpLAorICAgIFBBUlRJVElPTiB0cF9oaSBGT1IgVkFM VUVTIEZST00gKDUpIFRPICgxMCkKKyk7CitSRVNFVCBkZWZhdWx0X3RhYmxlc3BhY2U7CitTRUxF Q1QgYy5yZWxuYW1lLCBzLnNwY25hbWUgRlJPTSBwZ19jbGFzcyBjIExFRlQgSk9JTiBwZ190YWJs ZXNwYWNlIHMKKyAgT04gYy5yZWx0YWJsZXNwYWNlID0gcy5vaWQgV0hFUkUgYy5yZWxuYW1lIElO ICgndHBfbG8nLCAndHBfaGknKQorICBPUkRFUiBCWSBjLnJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7 CisKKy0tIFBhcmVudCBoYXMgbm8gZXhwbGljaXQgdGFibGVzcGFjZSBhbmQgZGVmYXVsdF90YWJs ZXNwYWNlIGlzIGVtcHR5OiBuZXcKKy0tIHBhcnRpdGlvbnMgdXNlIHRoZSBkYXRhYmFzZSBkZWZh dWx0IChyZWx0YWJsZXNwYWNlID0gMCkuICBBbHNvIGV4ZXJjaXNlCistLSB0aGUgcGdfZ2xvYmFs IHJlamVjdGlvbiBwYXRoIHdpdGggZGVmYXVsdF90YWJsZXNwYWNlIHBvaW50aW5nIGF0IHRoZQor LS0gc2hhcmVkIHRhYmxlc3BhY2UuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRShpKTsKK0NSRUFURSBUQUJMRSB0cF9hbGwgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMTApOworSU5TRVJUIElOVE8gdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDAsIDkpOworU0VUIGRlZmF1bHRfdGFibGVzcGFjZSBUTyBwZ19nbG9iYWw7CitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cF9hbGwgSU5UTyAoCisgICAgUEFSVElUSU9OIHRwX2xvIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpLAorICAgIFBBUlRJVElPTiB0cF9oaSBGT1IgVkFMVUVT IEZST00gKDUpIFRPICgxMCkKKyk7CS0tIGZhaWxzCitSRVNFVCBkZWZhdWx0X3RhYmxlc3BhY2U7 CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF9hbGwgSU5UTyAoCisgICAgUEFSVElU SU9OIHRwX2xvIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpLAorICAgIFBBUlRJVElPTiB0cF9o aSBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCkKKyk7CitTRUxFQ1QgcmVsbmFtZSwgcmVsdGFi bGVzcGFjZSBGUk9NIHBnX2NsYXNzCisgIFdIRVJFIHJlbG5hbWUgSU4gKCd0cF9sbycsICd0cF9o aScpIE9SREVSIEJZIHJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7CisKIFJFU0VUIHNlYXJjaF9wYXRo OwogCiAtLQotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000c813410654fd4946--