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 1uof2W-007iDj-D5 for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Aug 2025 09:23:30 +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 1uof2V-006kly-Pq for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Aug 2025 09:23:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uof2V-006klp-8p for pgsql-hackers@lists.postgresql.org; Wed, 20 Aug 2025 09:23:28 +0000 Received: from mail-ua1-x932.google.com ([2607:f8b0:4864:20::932]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uof2T-000ous-0f for pgsql-hackers@lists.postgresql.org; Wed, 20 Aug 2025 09:23:26 +0000 Received: by mail-ua1-x932.google.com with SMTP id a1e0cc1a2514c-890190b1aabso3721149241.2 for ; Wed, 20 Aug 2025 02:23:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755681805; x=1756286605; 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=N8F7vtcgqqOmDZToDyL+y9DhOxtNLwvOtug2++zYQQ4=; b=MvMW4I8tfDKh4bsDJLJdAGDEXmkM+ldTyrCLl8Cm8Om+jBezvDDCQR1NkWInEacQqU N0d3Sko2P1yTDe+++CjZwPCItzAjL5sUgAqcOTWB0PH+yRQ1Q/RMTKPLwtQnyP1S+E7t lIHzI+2v4K13gvcGKGZ3aja65UJQuEc/jBjw2kl5QaBW8PhlnC1dVn95h1cLaEMycw1a MG8ln8ehIa1TCHNZnDJ9WIlRNa8f/kTwix3/LrNTJPIIDDoVx1CjOuK5xBNEek1YasYz ka9rd9T/HURsLW9bG2J6cR3pjoR6/rNVxu7BTLipTWE/Qexq4p8KWQhbSkTj64JpVpyt NrUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755681805; x=1756286605; 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=N8F7vtcgqqOmDZToDyL+y9DhOxtNLwvOtug2++zYQQ4=; b=r/GwCGnt1n7T6TTqvMLD/EYG02jdIb+DySrsqmQzz8VqXFpKsNDfP+pa3ozWPZs7N2 sNlWp3ItU2dhAnAidlxGsvJY3hQduF36Pbwjy92bre9qqDUQFQWTcTBee72/vbWrduNw jrrnEWD8l4+dlz5524Wf5b6KS5rUDwBpoPtS26ZFT5bjecZQdus3sm9B1wNjTfRAjyhq M7cLyEhSTmiL2RU/gkrxdb54oR+pn6dvklEUbeA72KdUGOE0kfQi27ZuIR9vLO0gDCR1 U0sJmrTkMJqmr36FpMJAJwKh1BVUgfG+/bUtksdf3ZyHazibyNJTDVQs17gC8AIQ4F7l uVUA== X-Forwarded-Encrypted: i=1; AJvYcCWeGfLo/3Hqr79lxoPV3/28Eb65fdtmMDCrOInLDT2w42/Xf6htAUq5l22IZbIDwbjxf9u7XPpFJ3o5Z/9i@lists.postgresql.org X-Gm-Message-State: AOJu0YyF1rMVY2pBdemsYO5fBS8wSmL9s51lPuS06YYS9BOA6XXYp9Pq FfQn0npVqL+2zTOIvrRjADDeFnDq2rdCBXlYbWDpUZmdWJUZYsrfC5g5rZF2T6foBkIw54Jn/ZG P0W5ESeDjtsESiVbxrXXTnwtLbxyDDy0= X-Gm-Gg: ASbGncsgDo7k1q47wsy+ETZx+eEzEMbj0QcdxCFNJ8qfV23ERCzzSSHxA5U2irydSSo TGLCxI5hOj20wyj8Zrzd+zbuL/qRRWIrT55s5VYNn9XfDmmJqDgbIqgLjM+9F6iuHfhHBfsYAaQ 5lyegYQxL9zGflZbIA2/U2961xjCcctjiFSfXYavIUGbIv+nmQOFGc3Q3w0dKC1gUW4F/As7lmW 9I9v7OovxXMz+csqQonM4acWNhYn+fi9XiREEU= X-Google-Smtp-Source: AGHT+IEbSwNDJ4hTkY4P2CpgdANfm1t3PB2Ql0rBqIB+HauWc0NMRyTYzD/yWaDzKjGpCBqTtYe5aROCLZkLf8nGRi0= X-Received: by 2002:a05:6102:32c3:b0:4e5:9c40:824d with SMTP id ada2fe7eead31-51a51391ce7mr656324137.16.1755681804685; Wed, 20 Aug 2025 02:23:24 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> <4f19550b-eb41-4649-8bf5-566dc020a720@postgrespro.ru> <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> In-Reply-To: From: jian he Date: Wed, 20 Aug 2025 17:22:47 +0800 X-Gm-Features: Ac12FXxl9qIYJ1MojoUdkzR0LcxFJ2p2Bw_IsQqc9rI3PeFAVJqu_aSGfUilMg0 Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: Alexander Korotkov , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000004f614b063cc8860b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004f614b063cc8860b Content-Type: text/plain; charset="UTF-8" hi. this time, I only checked v52-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch typedef struct PartitionCmd { NodeTag type; RangeVar *name; /* name of partition to attach/detach/merge */ PartitionBoundSpec *bound; /* FOR VALUES, if attaching */ List *partlist; /* list of partitions, for MERGE PARTITION * command */ bool concurrent; } PartitionCmd; The field "partlist" comments are not very helpful, IMO. I think the following is more descriptive. /* list of partitions to be merged, used only in ALTER TABLE MERGE PARTITION */ + /* + * Search DEFAULT partition in the list. Open and lock partitions + * before calculating the boundary for resulting partition, we also + * check for ownership along the way. We need to use + * AccessExclusiveLock here, because these merged partitions will be + * detached then dropped in ATExecMergePartitions. + */ + partOid = RangeVarGetRelidExtended(name, + AccessExclusiveLock, + false, + RangeVarCallbackOwnsRelation, + NULL); here "false" should be "0"? + /* Ranges of partitions should not overlap. */ + for (i = 1; i < nparts; i++) + { + int index = lower_bounds[i]->index; + int prev_index = lower_bounds[i - 1]->index; + check_two_partitions_bounds_range(parent, + (RangeVar *) list_nth(partNames, prev_index), + (PartitionBoundSpec *) list_nth(bounds, prev_index), + (RangeVar *) list_nth(partNames, index), + (PartitionBoundSpec *) list_nth(bounds, index), + pstate); + } the comment should be + /* Ranges of partitions should be adjacent */ --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -102,11 +102,11 @@ static ObjectAddress AddNewRelationType(const char *typeName, Oid new_row_type, Oid new_array_type); static void RelationRemoveInheritance(Oid relid); +static void StoreConstraints(Relation rel, List *cooked_constraints, + bool is_internal); -static void StoreConstraints(Relation rel, List *cooked_constraints, - bool is_internal); Is this change necessary? in createPartitionTable + /* Create the relation. */ + newRelId = heap_create_with_catalog(newPartName->relname, + namespaceId, + parent_rel->rd_rel->reltablespace, .... + newPartName->relpersistence, .... + + /* + * We intended to create the partition with the same persistence as the + * parent table, but we still need to recheck because that might be + * affected by the search_path. If the parent is permanent, so must be + * all of its partitions. + */ + if (parent_rel->rd_rel->relpersistence != RELPERSISTENCE_TEMP && + newRel->rd_rel->relpersistence == RELPERSISTENCE_TEMP) + ereport(ERROR, + errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("cannot create a temporary relation as partition of permanent relation \"%s\"", + RelationGetRelationName(parent_rel))); + + /* Permanent rels cannot be partitions belonging to temporary parent */ + if (newRel->rd_rel->relpersistence != RELPERSISTENCE_TEMP && + parent_rel->rd_rel->relpersistence == RELPERSISTENCE_TEMP) + ereport(ERROR, + errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("cannot create a permanent relation as partition of temporary relation \"%s\"", + RelationGetRelationName(parent_rel))); i raised this question in [1], you replied at [2]. I still think it's not intuitive. parent->relpersistence is fixed. and newRel->relpersistence is the same as the same as newPartName->relpersistence, see heap_create_with_catalog. These relpersistence error checks can happen before heap_create_with_catalog. I added a regress test for src/test/modules/test_ddl_deparse. I refactored regress to make src/test/regress/expected/partition_merge.out less verbose. [1] https://postgr.es/m/CACJufxHM0sD8opy2hUxXLcdY3CQOCaMfsQtJs7yF3TS2YxSqKg@mail.gmail.com [2] https://postgr.es/m/195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru --0000000000004f614b063cc8860b Content-Type: application/octet-stream; name="v52-0001-misc-minor-fix.no-cfbot" Content-Disposition: attachment; filename="v52-0001-misc-minor-fix.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mejrl8qv0 RnJvbSAxZmNmYTFkMWE3ZWUwM2FlODU5MWQwNDExN2JkOGYxMzg0MmM2N2UwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjAgQXVnIDIwMjUgMTU6MjU6MzUgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 MiAxLzFdIG1pc2MgbWlub3IgZml4CgoqIG1pc2MgcmVncmVzcyB0ZXN0cyBmaXgKKiBjaGVjayBw ZXJzaXN0ZW5jZSBiZWZvcmUgY2FsbCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2cgaW4KY3JlYXRl UGFydGl0aW9uVGFibGUKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAg ICAgICAgICAgfCAgNDIgKysrLS0tLQogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0 ZXJfdGFibGUub3V0IHwgICA1ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJs ZS5zcWwgICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9t ZXJnZS5vdXQgfCAxMDcgKysrKystLS0tLS0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fbWVyZ2Uuc3FsICAgICAgfCAgMTIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgNTcgaW5z ZXJ0aW9ucygrKSwgMTEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5k ZXggMDc5YjE3MjVjZjEuLjFkMzVhY2Y0ZTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpA QCAtMjI0OTgsNiArMjI0OTgsMjcgQEAgY3JlYXRlUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1 ZSwgUmFuZ2VWYXIgKm5ld1BhcnROYW1lLAogCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVf VEFCTEUpLAogCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgbmV3 UGFydE5hbWUtPnJlbG5hbWUpKTsKIAorCS8qCisJICogV2UgaW50ZW5kZWQgdG8gY3JlYXRlIHRo ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBwZXJzaXN0ZW5jZSBhcyB0aGUKKwkgKiBwYXJlbnQg dGFibGUsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHJlY2hlY2sgYmVjYXVzZSB0aGF0IG1pZ2h0IGJl CisJICogYWZmZWN0ZWQgYnkgdGhlIHNlYXJjaF9wYXRoLiAgSWYgdGhlIHBhcmVudCBpcyBwZXJt YW5lbnQsIHNvIG11c3QgYmUKKwkgKiBhbGwgb2YgaXRzIHBhcnRpdGlvbnMuCisJICovCisJaWYg KHBhcmVudF9yZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCAmJgorCQluZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZ UEUpLAorCQkJCWVycm1zZygiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBw YXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7CisKKwkvKiBQZXJtYW5lbnQgcmVscyBjYW5u b3QgYmUgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8gdGVtcG9yYXJ5IHBhcmVudCAqLworCWlmIChu ZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQlw YXJlbnRfcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVAp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFy dGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSkpOworCiAJLyogQ3JlYXRlIHRoZSByZWxhdGlvbi4g Ki8KIAluZXdSZWxJZCA9IGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFtZS0+cmVs bmFtZSwKIAkJCQkJCQkJCQluYW1lc3BhY2VJZCwKQEAgLTIyNTM2LDI3ICsyMjU1Nyw2IEBAIGNy ZWF0ZVBhcnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwK IAkvKiBGaW5kIG9yIGNyZWF0ZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciBuZXdseSBjcmVhdGVkIHRh YmxlLiAqLwogCW5ld19wYXJ0cmVsX3RhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIG5ld1Jl bCk7CiAKLQkvKgotCSAqIFdlIGludGVuZGVkIHRvIGNyZWF0ZSB0aGUgcGFydGl0aW9uIHdpdGgg dGhlIHNhbWUgcGVyc2lzdGVuY2UgYXMgdGhlCi0JICogcGFyZW50IHRhYmxlLCBidXQgd2Ugc3Rp bGwgbmVlZCB0byByZWNoZWNrIGJlY2F1c2UgdGhhdCBtaWdodCBiZQotCSAqIGFmZmVjdGVkIGJ5 IHRoZSBzZWFyY2hfcGF0aC4gIElmIHRoZSBwYXJlbnQgaXMgcGVybWFuZW50LCBzbyBtdXN0IGJl Ci0JICogYWxsIG9mIGl0cyBwYXJ0aXRpb25zLgotCSAqLwotCWlmIChwYXJlbnRfcmVsLT5yZF9y ZWwtPnJlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKLQkJbmV3UmVsLT5y ZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCi0JCWVyZXBvcnQo RVJST1IsCi0JCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKLQkJCQllcnJt c2coImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBl cm1hbmVudCByZWxhdGlvbiBcIiVzXCIiLAotCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShwYXJlbnRfcmVsKSkpOwotCi0JLyogUGVybWFuZW50IHJlbHMgY2Fubm90IGJlIHBhcnRpdGlv bnMgYmVsb25naW5nIHRvIHRlbXBvcmFyeSBwYXJlbnQgKi8KLQlpZiAobmV3UmVsLT5yZF9yZWwt PnJlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKLQkJcGFyZW50X3JlbC0+ cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQotCQllcmVwb3J0 KEVSUk9SLAotCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCi0JCQkJZXJy bXNnKCJjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0 ZW1wb3JhcnkgcmVsYXRpb24gXCIlc1wiIiwKLQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocGFyZW50X3JlbCkpKTsKLQogCS8qIENyZWF0ZSBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1 ZXMgYW5kIGdlbmVyYXRlZCB2YWx1ZXMgKi8KIAljcmVhdGVUYWJsZUNvbnN0cmFpbnRzKHdxdWV1 ZSwgbmV3X3BhcnRyZWxfdGFiLCBwYXJlbnRfcmVsLCBuZXdSZWwpOwogCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0 IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxl Lm91dAppbmRleCA1MGQwMzU0YTM0MS4uYzQwM2MyZjU2OWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91 dApAQCAtNTYsNiArNTYsMTEgQEAgQUxURVIgVEFCTEUgcGFydCBERVRBQ0ggUEFSVElUSU9OIHBh cnQyOwogTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJM RQogTk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIERFVEFDSCBQQVJUSVRJT04gZGVzYyB0YWJs ZSBwYXJ0MgogRFJPUCBUQUJMRSBwYXJ0MjsKK0NSRUFURSBUQUJMRSBwYXJ0MiBQQVJUSVRJT04g T0YgcGFydCBGT1IgVkFMVUVTIEZST00gKDEwMCkgdG8gKDIwMCk7CitOT1RJQ0U6ICBEREwgdGVz dDogdHlwZSBzaW1wbGUsIHRhZyBDUkVBVEUgVEFCTEUKK0FMVEVSIFRBQkxFIHBhcnQgTUVSR0Ug UEFSVElUSU9OUyAocGFydDEsIHBhcnQyKSBJTlRPIHBhcnQxOworTk9USUNFOiAgRERMIHRlc3Q6 IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJMRQorTk9USUNFOiAgICBzdWJjb21tYW5k OiB0eXBlIE1FUkdFIFBBUlRJVElPTlMgZGVzYyA8TlVMTD4KIEFMVEVSIFRBQkxFIHBhcnQgQURE IFBSSU1BUlkgS0VZIChhKTsKIE5PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0 YWcgQUxURVIgVEFCTEUKIE5PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBBREQgQ09OU1RSQUlO VCAoYW5kIHJlY3Vyc2UpIGRlc2MgY29uc3RyYWludCBwYXJ0X2Ffbm90X251bGwgb24gdGFibGUg cGFydApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9h bHRlcl90YWJsZS5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2Fs dGVyX3RhYmxlLnNxbAppbmRleCA5YWQxY2Y5MDhkNC4uMzFlNjkxMDBhMzAgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3Fs CkBAIC0zNSw2ICszNSw5IEBAIEFMVEVSIFRBQkxFIHBhcnQgQVRUQUNIIFBBUlRJVElPTiBwYXJ0 MiBGT1IgVkFMVUVTIEZST00gKDEwMSkgdG8gKDIwMCk7CiBBTFRFUiBUQUJMRSBwYXJ0IERFVEFD SCBQQVJUSVRJT04gcGFydDI7CiBEUk9QIFRBQkxFIHBhcnQyOwogCitDUkVBVEUgVEFCTEUgcGFy dDIgUEFSVElUSU9OIE9GIHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApOworQUxU RVIgVEFCTEUgcGFydCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7 CisKIEFMVEVSIFRBQkxFIHBhcnQgQUREIFBSSU1BUlkgS0VZIChhKTsKIAogQUxURVIgVEFCTEUg cGFyZW50IEFMVEVSIENPTFVNTiBhIFNFVCBOT1QgTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAppbmRleCA1MTU5ZmQzN2Q4Mi4uMjFhMDc4ZjEz OGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdl Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQK QEAgLTI1NCw5NSArMjU0LDQwIEBAIElOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMCiAgICgnTWFuYWdl cjEnLCAyMDIyLCAzLCAzKSwKICAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAogICAoJ01hbmFn ZXIzJywgMjAyMiwgNSwgMSk7Ci1TRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7Ci0gc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2Rh dGUgfCBzYWxlc19kZXBhcnRtZW50IAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K LSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3 IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMiAgICAgICAgIHwgICAg ICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRl cGFydG1lbnQKLSBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwg ICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMiAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8 IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5h Z2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAy Mi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1l bnQKLSBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAg ICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMyAgICAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVz IGRlcGFydG1lbnQKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRl OworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVz X21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19kZWMy MDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAg ICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMiB8IE1h bmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAy MDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMyAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxl cyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0 bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19vdGhlciAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3Ro ZXIgICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAg ICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBN YW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwg MjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKICg5IHJvd3MpCiAKLVNFTEVDVCAqIEZST00g c2FsZXNfZGVjMjAyMjsKLSBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21v bnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCi0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQotIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIx IHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVu dAotIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAg IDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAotKDIgcm93cykKLQotU0VMRUNUICog RlJPTSBzYWxlc19qYW4yMDIyOwotIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2Fs ZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCi0gTWFuYWdlcjMgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBh cnRtZW50Ci0gTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Ci0oMiByb3dzKQotCi1TRUxF Q1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Ci0gc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIg fCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50 IAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KLSBNYW5hZ2VyMSAgICAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVz IGRlcGFydG1lbnQKLSBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAy IHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKLSgyIHJvd3MpCi0K LVNFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7Ci0gc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3ll YXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRt ZW50IAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KLSBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNh bGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2Vy MyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4w NS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKLSgzIHJvd3MpCi0KIEFMVEVSIFRBQkxFIHNhbGVzX2Rh dGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBz YWxlc19qYW5fZmViMjAyMjsKIElOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFt ZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCiAgICgnTWFuYWdl cjEnLCAyMDIyLCAxLCAxMCksCiAgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7Ci1TRUxFQ1Qg KiBGUk9NIHNhbGVzX2RhdGU7Ci0gc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxl c19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAotLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KLSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAg MjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFy dG1lbnQKLSBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAg ICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMyAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNh bGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2Vy MSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4w Mi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQK LSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEw IHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMiAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRl cGFydG1lbnQKLSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwg ICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMiAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8 IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlOworICAgICB0YWJsZW9pZCAg ICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVz X2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjIgICAgIHwg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8 IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMiAgICAgfCBNYW5h Z2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAy MS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAx LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIg fCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNh bGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBh cnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1l bnQKKyBzYWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAor IHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2Fs ZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKICgxMSByb3dz KQogCi1TRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Ci0gc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19k ZXBhcnRtZW50IAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KLSBNYW5hZ2VyMSAg ICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4w NyB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKLSgy IHJvd3MpCi0KLVNFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7Ci0gc2FsZXNwZXJzb25f bmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUg fCBzYWxlc19kZXBhcnRtZW50IAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KLSBN YW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwg MjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFy dG1lbnQKLSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAg ICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMyAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNh bGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2Vy MiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4w Mi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKLSg2IHJvd3MpCi0KLVNFTEVDVCAqIEZST00gc2FsZXNf b3RoZXI7Ci0gc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNh bGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAotLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KLSBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5h Z2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAy Mi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKLSBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1l bnQKLSgzIHJvd3MpCi0KIERST1AgVEFCTEUgc2FsZXNfZGF0ZTsKIC0tCiAtLSBUZXN0OiBtZXJn ZSBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCmluZGV4IGJiNTM4NmZlMzgxLi5mZWY1OWZi YzVkNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCkBAIC0xODcs MTEgKzE4Nyw3IEBAIElOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2Fs ZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMCiAgICgnTWFuYWdlcjInLCAyMDIy LCAzLCA0KSwKICAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOwogCi1TRUxFQ1QgKiBGUk9NIHNh bGVzX2RhdGU7Ci1TRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Ci1TRUxFQ1QgKiBGUk9NIHNh bGVzX2phbjIwMjI7Ci1TRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Ci1TRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2Rh dGU7CiAKIEFMVEVSIFRBQkxFIHNhbGVzX2RhdGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFu MjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19qYW5fZmViMjAyMjsKIApAQCAtMTk5LDEx ICsxOTUsNyBAQCBJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTAogICAoJ01hbmFnZXIxJywgMjAyMiwg MSwgMTApLAogICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOwogCi1TRUxFQ1QgKiBGUk9NIHNh bGVzX2RhdGU7Ci1TRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Ci1TRUxFQ1QgKiBGUk9NIHNh bGVzX2phbl9mZWIyMDIyOwotU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKLQorU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGU7CiBEUk9QIFRBQkxFIHNhbGVzX2Rh dGU7CiAKIC0tCi0tIAoyLjM0LjEKCg== --0000000000004f614b063cc8860b--