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.94.2) (envelope-from ) id 1uymiF-00Ci6T-J7 for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Sep 2025 07:36:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uymiC-005MsB-27 for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Sep 2025 07:36:20 +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.94.2) (envelope-from ) id 1uymiB-005Ms3-Iy for pgsql-hackers@lists.postgresql.org; Wed, 17 Sep 2025 07:36:20 +0000 Received: from mail-vs1-xe2a.google.com ([2607:f8b0:4864:20::e2a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uymi8-001H4h-0y for pgsql-hackers@lists.postgresql.org; Wed, 17 Sep 2025 07:36:19 +0000 Received: by mail-vs1-xe2a.google.com with SMTP id ada2fe7eead31-52af5df0fdaso2118823137.1 for ; Wed, 17 Sep 2025 00:36:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758094576; x=1758699376; 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=CUt0mYTcTnRznm5S9qcEzr04kS3EIh7VqNKlmYvap9Q=; b=U5yyqwCcenz0k9atdP3LiPDqXbI9nQ6sN1DYfvbhPVHSluQg3bwgFxjSXMtF4kbLXj q0P/NKFAg4RXtOhDtofKZgT7cwgvEZ8sRiU5ih/JsujiWt8EHEfn0WfsqeorbZGftmoV /rQmFi2FajpQil549h035B9+c6KoIabUp/O26MrQHD581aY3zNJ4F1x9BlNazuHRXjxJ JyG+vdKmlCTE7gNq24HNu9Mm8PvaCiTuAIskvxBxm3tRGoH47lfLanmWKOLHvKFji75V 4gDSRXw8Hn4xP1hxECBoSmRVWjxlowHcY1e8q1AcLADbQalFF8Qm9/8Buq21Vbo4Q3Bz kElg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758094576; x=1758699376; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CUt0mYTcTnRznm5S9qcEzr04kS3EIh7VqNKlmYvap9Q=; b=p5rRt/iviuHGP4yKh4Jd+IXv0yqWUSNe0b+rbJCZZ3xJYeHsiobNgFDGEw29936WFi /H87sdjrB+EZE8vDACwsfcd2vCb6R0jgAL0BCy7fGEEZFst4BuGjbEhyWdwJm8RxjNFu MU5GrZPHmMyWc+pYwhMNfeRjPOVzstWxvVUNUE6rXnOhw9Ims3+EBG0DtrhLRDuMiwcI j3Cis0Pf1IXZc3LnDHMti7SjyQdo9FUEhriZNx4eXJoyR7SfnRE2NjIqzcKehe3TIRW0 uT3BaxyfDleIwUQiF9cYxImE6tOcw8A3bVbQo9aE+q+BijaaUYEfU1wacwKGVy6jsXpC r2Sg== X-Gm-Message-State: AOJu0Yzmljw1o7ZRZmh25oH2YCmlOhrW/dFqY8s39gCiLlV/jaxHl1VK IPx2cPz/6s+UYE8nQj3DWQmLzHB3mJCgNJNOIjL5n8xN4IDtQWM9v07qvCpg5OujUop2/RwywDD rGQ3oEXp+NjswUYkXo26BzERlChnpiSQ= X-Gm-Gg: ASbGncszFP4wkcZ4rF5yGFnyS3RzGQNYHLtEkNd9vcLJycSVnsTR+V1QIkIp4t7rfiK ne4OGMVDmn/uhJzafWmGEkdIIYCXNUZQo8kyMmvlqIzHIQF9VXCUkZ9yRmjojh8uxQhiOelOlKw t4rjTQ2eMWGPSD7irgrH+NhegduFpxRjvG16XCZAWjSDXVIdqasPSV4qWX/C55S7znsX3AERrmI f6B20zi+A8ukqrX/RRD4s55OAzaO/MJHNST0q4= X-Google-Smtp-Source: AGHT+IHicwMWqUYAYZq+ovkMR0i+JdKaoLwyvbIyr+fA7bhflJzh98h+SeHW9CKYl59utupRdPGK3Z26uCFXnIlYLn8= X-Received: by 2002:a05:6102:32cf:b0:529:96b9:1fcc with SMTP id ada2fe7eead31-56d67e52061mr238286137.24.1758094575649; Wed, 17 Sep 2025 00:36:15 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> In-Reply-To: <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> From: jian he Date: Wed, 17 Sep 2025 15:35:34 +0800 X-Gm-Features: AS18NWC9X4WlgNvVKoCpw7qLs09P73LPvgmWcNZZXmD_MKx7NZOqKvaonYRuh7o Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000aa063d063efa4a93" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000aa063d063efa4a93 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Sep 17, 2025 at 6:08=E2=80=AFAM Dmitry Koval wrote: > > 2. Patch v56-0001-refactor-v56-check_partitions_for_split.no-cfbot > applied with cosmetic changes. > hi. check_two_partitions_bounds_range ereport(ERROR, errcode(ERRCODE_INVALID_OBJECT_DEFINITION), merge_split ? errmsg("can not merge partition \"%s\" together with partition \"%s\"", second_name->relname, first_name->relname) : errmsg("can not split to partition \"%s\" together with partition \"%s\"", second_name->relname, first_name->relname), errdetail("lower bound of partition \"%s\" is not equal to the upper bound of partition \"%s\"", second_name->relname, first_name->relname), merge_split ? errhint("ALTER TABLE ... MERGE PARTITIONS requires the partition bounds to be adjacent.") : errhint("ALTER TABLE ... SPLIT PARTITIONS requires the partition bounds to be adjacent."), parser_errposition(pstate, datum->location)); This is too much...., also bad for translation, so I refactored this. I also refactored check_partition_bounds_for_split_range. In ATExecSplitPartition, "char relname[NAMEDATALEN];" is not necessary? --000000000000aa063d063efa4a93 Content-Type: application/octet-stream; name="v57-0001-refactor-for-v57.no-cfbot" Content-Disposition: attachment; filename="v57-0001-refactor-for-v57.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfno2jmy0 RnJvbSAyN2JjNjU4MWQ1YTc0ZWNiMTMwYzMyMmJhYWU5MGZkN2MwOWYzNmM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTcgU2VwIDIwMjUgMTU6MzE6NTUgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 NyAxLzFdIHJlZmFjdG9yIGZvciB2NTcKCm1haW5seSByZWZhY3RvcmluZyB0aGVzZSBmdW5jdGlv biBjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UgYW5kCmNoZWNrX3BhcnRpdGlvbl9i b3VuZHNfZm9yX3NwbGl0X3JhbmdlLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuYyAgICAgICAgIHwgMTQ3ICsrKysrKysrKy0tLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IHwgIDEyICstCiAzIGZpbGVzIGNoYW5nZWQs IDgyIGluc2VydGlvbnMoKyksIDgyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKaW5kZXggZDYxYjczZTlkZDEuLjlhNTJhMzZlZGJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwpAQCAtMjMyMTYsNyArMjMyMTYsNiBAQCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIHsKIAlSZWxhdGlv bglzcGxpdFJlbDsKIAlPaWQJCQlzcGxpdFJlbE9pZDsKLQljaGFyCQlyZWxuYW1lW05BTUVEQVRB TEVOXTsKIAlMaXN0Q2VsbCAgICpsaXN0cHRyLAogCQkJICAgKmxpc3RwdHIyOwogCWJvb2wJCWlz U2FtZU5hbWUgPSBmYWxzZTsKQEAgLTIzMjQzLDggKzIzMjQyLDYgQEAgQVRFeGVjU3BsaXRQYXJ0 aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWws CiAJewogCQlPaWQJCQlleGlzdGluZ1JlbGlkOwogCi0JCXN0cmxjcHkocmVsbmFtZSwgc3BzLT5u YW1lLT5yZWxuYW1lLCBOQU1FREFUQUxFTik7Ci0KIAkJLyogTG9vayB1cCBleGlzdGluZyByZWxh dGlvbiBieSBuZXcgcGFydGl0aW9uIG5hbWUuICovCiAJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVh dGlvbk5hbWVzcGFjZShzcHMtPm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOwogCkBAIC0y MzI1OCw3ICsyMzI1NSw3IEBAIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQllbHNlIGlmIChPaWRJc1ZhbGlk KGV4aXN0aW5nUmVsaWQpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJZXJyY29kZShFUlJDT0RF X0RVUExJQ0FURV9UQUJMRSksCi0JCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkg ZXhpc3RzIiwgcmVsbmFtZSkpOworCQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5 IGV4aXN0cyIsIHNwcy0+bmFtZS0+cmVsbmFtZSkpOwogCX0KIAogCS8qIERldGFjaCBzcGxpdCBw YXJ0aXRpb24uICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCBhNzJj ZDdmNDI4Mi4uOWFjMDBkMmZmNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu YwpAQCAtNTAwMCw4ICs1MDAwLDggQEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZVTkNU SU9OX0FSR1MpCiAgKiBzZWNvbmRfbmFtZToJCW5hbWUgb2Ygc2Vjb25kIHBhcnRpdGlvbgogICog c2Vjb25kX2JvdW5kOglib3VuZCBvZiBzZWNvbmQgcGFydGl0aW9uCiAgKiBkZWZhdWx0UGFydDoJ CXRydWUgaWYgb25lIG9mIG5ldyBwYXJ0aXRpb25zIGlzIERFRkFVTFQKLSAqIG1lcmdlX29yX3Nw bGl0OiAgdHJ1ZSBpbmRpY2F0ZSB0aGUgb3ByYXRpb24gaXMgIkFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIgotICogZmFsc2UgaW5kaWNhdGUgdGhlIG9wcmF0aW9uIGlzICJBTFRFUiBU QUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyIuCisgKiBpc19tZXJnZTogICAgICAgIHRydWUgaW5k aWNhdGVzIHRoZSBvcGVyYXRpb24gaXMgTUVSR0UgUEFSVElUSU9OUzsKKyAqIAkJCQkJZmFsc2Ug aW5kaWNhdGVzIHRoZSBvcGVyYXRpb24gaXMgU1BMSVQgUEFSVElUSU9OLgogICogcHN0YXRlOgkJ CXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVycm9yIHBvc2l0 aW9uCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC01MDExLDcgKzUwMTEsNyBAQCBjaGVja190d29fcGFy dGl0aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkgIFJhbmdlVmFy ICpzZWNvbmRfbmFtZSwKIAkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3Vu ZCwKIAkJCQkJCQkJICBib29sIGRlZmF1bHRQYXJ0LAotCQkJCQkJCQkgIGJvb2wgbWVyZ2Vfc3Bs aXQsCisJCQkJCQkJCSAgYm9vbCBpc19tZXJnZSwKIAkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3Rh dGUpCiB7CiAJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVu dCk7CkBAIC01MDM3LDE5ICs1MDM3LDI0IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19y YW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJewogCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9 IGxpbml0aWFsKHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMpOwogCi0JCWVyZXBvcnQoRVJST1Is Ci0JCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAotCQkJCW1l cmdlX3NwbGl0Ci0JCQkJPyBlcnJtc2coImNhbiBub3QgbWVyZ2UgcGFydGl0aW9uIFwiJXNcIiB0 b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAotCQkJCQkJIHNlY29uZF9uYW1lLT5yZWxu YW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKQotCQkJCTogZXJybXNnKCJjYW4gbm90IHNwbGl0IHRv IHBhcnRpdGlvbiBcIiVzXCIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gXCIlc1wiIiwKLQkJCQkJ CSBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCi0JCQkJZXJyZGV0 YWlsKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byB0aGUg dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCi0JCQkJCQkgIHNlY29uZF9uYW1lLT5y ZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKLQkJCQltZXJnZV9zcGxpdAotCQkJCT8gZXJy aGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRp dGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuIikKLQkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxF IC4uLiBTUExJVCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LiIpLAotCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2Nh dGlvbikpOworCQlpZiAoaXNfbWVyZ2UpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCWVycm1zZygiY2FuIG5v dCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uIFwiJXNcIiIs CisJCQkJCQkJc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJ CQllcnJkZXRhaWwoImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFs IHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCQkgIHNlY29u ZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQkJZXJyaGludCgiQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3Vu ZHMgdG8gYmUgYWRqYWNlbnQuIiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRh dHVtLT5sb2NhdGlvbikpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCWVycm1zZygiY2FuIG5v dCBzcGxpdCB0byBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uIFwiJXNc IiIsCisJCQkJCQkgICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSks CisJCQkJCWVycmRldGFpbCgibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3Qg ZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJCSAg c2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCQllcnJoaW50 KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9u IGJvdW5kcyB0byBiZSBhZGphY2VudC4iKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CiAJfQogfQogCkBAIC01MjEyLDcgKzUyMTcsNiBAQCBjaGVj a19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkg IFBhcnNlU3RhdGUgKnBzdGF0ZSkKIHsKIAlQYXJ0aXRpb25LZXkga2V5IFBHX1VTRURfRk9SX0FT U0VSVFNfT05MWSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7Ci0JaW50CQkJb3Zl cmxhcF9sb2NhdGlvbiA9IC0xOwogCWludAkJCWksCiAJCQkJajsKIAlTaW5nbGVQYXJ0aXRpb25T cGVjICpzcHMxLApAQCAtNTIzOCwxMiArNTI0MiwxMSBAQCBjaGVja19wYXJ0aXRpb25zX25vdF9v dmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAogCQkJewogCQkJCUNvbnN0CSAgICp2YWwgPSAo Q29uc3QgKikgbGZpcnN0KGxpc3RfaGVhZChvdmVybGFwKSk7CiAKLQkJCQlvdmVybGFwX2xvY2F0 aW9uID0gdmFsLT5sb2NhdGlvbjsKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAogCQkJCQkJZXJybXNnKCJuZXcgcGFy dGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uIFwi JXNcIiIsCiAJCQkJCQkJICAgc3BzMS0+bmFtZS0+cmVsbmFtZSwgc3BzMi0+bmFtZS0+cmVsbmFt ZSksCi0JCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7 CisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikg dmFsKSkpOwogCQkJfQogCQl9CiAJfQpAQCAtNTMxNSw3ICs1MzE4LDcgQEAgY2hlY2tfcGFydGl0 aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCWVycmRldGFp bCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB1 cHBlciBib3VuZCAlcy4iLAogCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhzcGVj LT5sb3dlcmRhdHVtcyksCiAJCQkJCQkgIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMt PnVwcGVyZGF0dW1zKSksCi0JCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxv Y2F0aW9uKSk7CisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChO b2RlICopZGF0dW0pKSk7CiAJfQogCiAJLyogTmVlZCB0byBjaGVjayBmaXJzdCBhbmQgbGFzdCBw YXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcgcGFydGl0aW9ucykgKi8KQEAgLTUzMzUsMzUgKzUz MzgsMzMgQEAgY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UoUmVsYXRpb24g cGFyZW50LAogCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJCQkJCQkJCSAgbG93 ZXItPmRhdHVtcywgbG93ZXItPmtpbmQsCiAJCQkJCQkJCQkJICB0cnVlLCBzcGxpdF9sb3dlcik7 CisJCQlpZiAoY21wdmFsICE9IDApCisJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRh dHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKIAogCQkJLyoKLQkJCSAqIExvd2VyIGJvdW5kIG9mICJz cGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAotCQkJICogaW4g Y2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24u Ci0JCQkgKi8KLQkJCWlmICghZGVmYXVsdFBhcnQpCi0JCQl7Ci0JCQkJaWYgKGNtcHZhbCAhPSAw KQotCQkJCXsKLQkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNt cHZhbCkgLSAxKTsKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCi0JCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24iLAotCQkJCQkJCQkgICByZWxuYW1lKSwKLQkJCQkJCQlwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKLQkJCQl9Ci0JCQl9Ci0JCQllbHNlCi0JCQl7 Ci0JCQkJaWYgKGNtcHZhbCA8IDApCi0JCQkJewotCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMt Pmxvd2VyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOwotCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKLQkJCQkJCQll cnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbGVzcyB0aGFuIGxvd2Vy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCi0JCQkJCQkJCSAgIHJlbG5hbWUpLAotCQkJCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOwotCQkJCX0KLQkJ CX0KKwkJCSAqIFRoZSBsb3dlciBib3VuZCBvZiAic3BlYyIgbXVzdCBlcXVhbCB0byB0aGUgbG93 ZXIgYm91bmQgb2YgdGhlCisJCQkgKiBzcGxpdCBwYXJ0aXRpb24uICBIb3dldmVyLCBpZiBvbmUg b2YgdGhlIG5ldyBwYXJ0aXRpb25zIGlzCisJCQkgKiBERUZBVUxULCB0aGVuIGl0IGlzIG9rIGZv ciB0aGUgbmV3IHBhcnRpdGlvbidzIGxvd2VyIGJvdW5kIHRvIGJlCisJCQkgKiBncmVhdGVyIHRo YW4gdGhhdCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uLgorCQkJKi8KKwkJCWlmICghZGVmYXVsdFBh cnQgJiYgY21wdmFsICE9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygibG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3Bs aXQgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkJCXJlbG5hbWUsCisJCQkJCQkJCWdldF9yZWxf bmFtZShzcGxpdFBhcnRPaWQpKSwKKwkJCQkJCWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmluZWQg Ym91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2Yg dGhlIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFS VElUSU9OUyIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9u KChOb2RlICopZGF0dW0pKSk7CisJCQllbHNlIGlmIChjbXB2YWwgPCAwKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiks CisJCQkJCQllcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbGVzcyB0 aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJCSAgIHJl bG5hbWUsCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAorCQkJCQkJZXJy aGludCgiJXMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBl eGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJ IkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIiksCisJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKilkYXR1bSkpKTsKIAkJfQogCQllbHNl CiAJCXsKQEAgLTUzNzYsMzUgKzUzNzcsMzMgQEAgY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jf c3BsaXRfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0 aW9uLAogCQkJCQkJCQkJCSAgdXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQsCiAJCQkJCQkJCQkJ ICBmYWxzZSwgc3BsaXRfdXBwZXIpOworCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCWRhdHVtID0g bGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CiAKIAkJCS8qCi0J CQkgKiBVcHBlciBib3VuZCBvZiAic3BlYyIgc2hvdWxkIGJlIGVxdWFsIChvciBsZXNzIHRoYW4g b3IgZXF1YWwgaW4KLQkJCSAqIGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gdXBwZXIgYm91bmQg b2Ygc3BsaXQgcGFydGl0aW9uLgotCQkJICovCi0JCQlpZiAoIWRlZmF1bHRQYXJ0KQotCQkJewot CQkJCWlmIChjbXB2YWwgIT0gMCkKLQkJCQl7Ci0JCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+ dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7Ci0JCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAotCQkJCQkJCWVy cm1zZygidXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1YWwgdG8gdXBw ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKLQkJCQkJCQkJICAgcmVsbmFtZSksCi0JCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7Ci0JCQkJfQot CQkJfQotCQkJZWxzZQotCQkJewotCQkJCWlmIChjbXB2YWwgPiAwKQotCQkJCXsKLQkJCQkJZGF0 dW0gPSBsaXN0X250aChzcGVjLT51cHBlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKLQkJCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCi0JCQkJCQkJZXJybXNnKCJ1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wi IGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAotCQkJCQkJ CQkgICByZWxuYW1lKSwKLQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+ bG9jYXRpb24pKTsKLQkJCQl9Ci0JCQl9CisJCQkgKiBUaGUgdXBwZXIgYm91bmQgb2YgInNwZWMi IG11c3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHRoZQorCQkJICogc3BsaXQgcGFydGl0 aW9uLiAgSG93ZXZlciwgaWYgb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBpcworCQkJICogREVG QVVMVCwgdGhlbiBpdCBpcyBvayBmb3IgdGhlIG5ldyBwYXJ0aXRpb24ncyB1cHBlciBib3VuZCB0 byBiZQorCQkJICogbGVzcyB0aGFuIHRoYXQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbi4KKwkJCSov CisJCQlpZiAoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCAhPSAwKQorCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJ CQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRv IHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlyZWxuYW1l LAorCQkJCQkJCQlnZXRfcmVsX25hbWUoc3BsaXRQYXJ0T2lkKSksCisJCQkJCQllcnJoaW50KCIl cyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkg bWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkiQUxURVIg VEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMiKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKWRhdHVtKSkpOworCQkJZWxzZSBpZiAoY21wdmFs ID4gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJ1cHBlciBib3VuZCBvZiBwYXJ0aXRp b24gXCIlc1wiIGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24g XCIlc1wiIiwKKwkJCQkJCQkgICByZWxuYW1lLAorCQkJCQkJCSAgIGdldF9yZWxfbmFtZShzcGxp dFBhcnRPaWQpKSwKKwkJCQkJCWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9m IG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0 IHBhcnRpdGlvbiIsCisJCQkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyIp LAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICop ZGF0dW0pKSk7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9zcGxpdC5vdXQKaW5kZXggN2JhZmQ5M2UyZjYuLmM5MzMzMzJmYWNiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC01Myw5ICs1Mywx MCBAQCBBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK ICAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSk7Ci1FUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRp dGlvbgorRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlz IG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9t YXJfYXByMjAyMiIKIExJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQ QVJUSVRJT05TIHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3Qg ZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgogLS0gRVJST1I6 ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkg dXNlZAogLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBz cGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0aGUg c2FtZSBuYW1lKQogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCkBAIC05NCw5ICs5NSwxMCBAQCBBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KICAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7 Ci1FUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90 IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorRVJST1I6ICB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKIExJTkUgNDog Li4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNi0wLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05T IHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBt YXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgogLS0gRVJST1I6ICBjYW4gbm90 IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRp b24gInNhbGVzX2ZlYjIwMjIiCiBBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKQEAgLTEx NCw5ICsxMTYsMTAgQEAgQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAxJyksCiAgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCiAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwotRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBz cGxpdCBwYXJ0aXRpb24KK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJz YWxlc19mZWJfbWFyX2FwcjIwMjIiCiBMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTy4uLgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAu Li4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24K IC0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgKIFNF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CiBBTFRFUiBU QUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCkBAIC0xNTExLDkgKzE1MTQs MTAgQEAgQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCiAgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CiAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA2LTAxJykpOwotRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24KK0VSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBp cyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJf bWFyX2FwcjIwMjIiCiBMSU5FIDQ6IC4uLiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMC4uLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFy dGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRp b24KIERST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CiAtLSBUZXN0IGZvciBzcGxpdCBwYXJ0aXRpb24g cHJvcGVydGllczoKIC0tICogU1RBVElTVElDUyBpcyBlbXB0eQotLSAKMi4zNC4xCgo= --000000000000aa063d063efa4a93--