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 1rewxe-00ET2Y-5V for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Feb 2024 12:53: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 1rewxc-002q5F-JQ for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Feb 2024 12:53:29 +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 1rewxc-002q57-7O for pgsql-hackers@lists.postgresql.org; Tue, 27 Feb 2024 12:53:28 +0000 Received: from mail-io1-xd36.google.com ([2607:f8b0:4864:20::d36]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rewxZ-001SN2-6m for pgsql-hackers@lists.postgresql.org; Tue, 27 Feb 2024 12:53:28 +0000 Received: by mail-io1-xd36.google.com with SMTP id ca18e2360f4ac-7c7770fd687so237891539f.3 for ; Tue, 27 Feb 2024 04:53:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709038403; x=1709643203; 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=xujtnzrNpUVxvOgWNGQE5kz5e6UfTxju2LArWeypw9Y=; b=Lr9AS2Ki5NDVjlOm7kcwqj2NI97SejXANKvvkH47VvQKAuqj/RJjgxMvjgkxabi0sq jvKHcC2Eh/3DBhzWSWAOthGX3ERpfe8EHq0JU7k9ulMO3qmC+7V8GHv6lUs2ufLhxbhw yHHMdN10wWKybTl0YYGyk7rQIbydYolLI1IRFyWz36/TRYW4gOXLrYLnEE6HdIIifd3D Quj047E9OfQLH2I4onVgskhk+PuJXV62XHniptYlnmMZU3fIbfdtjfJA0Ewy6ul4fEGh isZrENKSq7q3/YBuPz7mbqE6Wv53o0vW5K7Zw2oEfV8Id2hdmXQgFMpZFfCfEwYj0FKA dzHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709038403; x=1709643203; 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=xujtnzrNpUVxvOgWNGQE5kz5e6UfTxju2LArWeypw9Y=; b=A1GeknoJznJ3AZvvVtZwZJZGqNeNIo886zXvENgtgmZ7vLvUzaVc8PR4BVLwL+XS57 S1iej8UVCx5M81G5rrHvWibf2BMHZtKKUWbuw6YK2ji2CfhOlejfNzyp7d1QG4CRoSSy hKh3kYreAx6FrbfAJv87PjI8QyadOsQ0JMd49geLJKmYRAuP0t1qwLUlh1SMfreZicmu eqoB71SdqKounRIWceDTpPESVWgdZEs34muih9gcE7qt3gvs0IMyeDzbalJ5QS3VukWv WP2AFlPSnKwU3zc76hDrtTYwf0bvQCi/xASl4hYg722qWqrol3pQk3I4RphvbHfIgh8x p85Q== X-Forwarded-Encrypted: i=1; AJvYcCUj8JzFK6um1UEacARldbhIlRlZkF/nnZbhAsOqYaF4ZS1JtmJK2kqujtXp/G7/sA48ydFIBzIFBdnAknxGcbcIJ49KkhyC1e4M0koXYen09IGu X-Gm-Message-State: AOJu0YxrMEuGRk/lyqabsEW+iw1+c2c6gu7CqgOp/mFcbzjzbuvuWmsL X/OFDrjN4lVLwBsiMqHNUMtj4pcM2XMXJx92WXUPA9Z7KdVtv3c2DWEUoP5dnBLsxQRZtxUtC+8 NSchmlZzjPQCxHp0nRhBHGxXTcVc= X-Google-Smtp-Source: AGHT+IGW9USf/QIajrBjYPixzFNcUN+lwt9ygEtWua/oD2w0XM7J30JJA6akzUfokQGhHBEJRlwWOjHq8ZBHtxE7JsQ= X-Received: by 2002:a6b:ec06:0:b0:7c7:ec0d:5fa5 with SMTP id c6-20020a6bec06000000b007c7ec0d5fa5mr925222ioh.2.1709038403151; Tue, 27 Feb 2024 04:53:23 -0800 (PST) MIME-Version: 1.0 References: <551454.1708618854@sss.pgh.pa.us> <711158.1708647157@sss.pgh.pa.us> In-Reply-To: <711158.1708647157@sss.pgh.pa.us> From: Dean Rasheed Date: Tue, 27 Feb 2024 12:53:10 +0000 Message-ID: Subject: Re: bug report: some issues about pg_15_stable(8fa4a1ac61189efffb8b851ee77e1bc87360c445) To: Tom Lane Cc: zwj , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000ed87ca06125c8222" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ed87ca06125c8222 Content-Type: text/plain; charset="UTF-8" On Fri, 23 Feb 2024 at 00:12, Tom Lane wrote: > > So after studying this for awhile, I see that the planner is emitting > a PlanRowMark that presumes that the UNION ALL subquery will be > scanned as though it's a base relation; but since we've converted it > to an appendrel, the executor just ignores that rowmark, and the wrong > things happen. I think the really right fix would be to teach the > executor to honor such PlanRowMarks, by getting nodeAppend.c and > nodeMergeAppend.c to perform EPQ row substitution. Yes, I agree that's a much better solution, if it can be made to work, though I have been really struggling to see how. > the planner produces targetlists like > > Output: src_1.val, src_1.id, ROW(src_1.id, src_1.val) > > and as you can see the order of the columns doesn't match. > I can see three ways we might attack that: > > 1. Persuade the planner to build output tlists that always match > the row identity Var. > > 2. Change generation of the ROW() expression so that it lists only > the values we're going to output, in the order we're going to > output them. > > 3. Fix the executor to remap what it gets out of the ROW() into the > order of the subquery tlists. This is probably do-able but I'm > not certain; it may be that the executor hasn't enough info. > We might need to teach the planner to produce a mapping projection > and attach it to the Append node, which carries some ABI risk (but > in the past we've gotten away with adding new fields to the ends > of plan nodes in the back branches). Another objection is that > adding cycles to execution rather than planning might be a poor > tradeoff --- although if we only do the work when EPQ is invoked, > maybe it'd be the best way. > Of those, option 3 feels like the best one, though I'm really not sure. I played around with it and convinced myself that the executor doesn't have the information it needs to make it work, but I think all it needs is the Append node's original targetlist, as it is just before it's rewritten by set_dummy_tlist_references(), which rewrites the attribute numbers sequentially. In the original targetlist, all the Vars have the right attribute numbers, so it can be used to build the required projection (I think). Attached is a very rough patch. It seemed better to build the projection in the executor rather than the planner, since then the extra work can be avoided, if EPQ is not invoked. It seems to work (it passes the isolation tests, and I couldn't break it in ad hoc testing), but it definitely needs tidying up, and it's hard to be sure that it's not overlooking something. Regards, Dean --000000000000ed87ca06125c8222 Content-Type: text/x-patch; charset="US-ASCII"; name="appendrel-row-locks-wip.v2.patch" Content-Disposition: attachment; filename="appendrel-row-locks-wip.v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt4d2im30 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzA1 OWU3Li5jY2Q5OTRjCi0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTI3NSw2ICsyNzUsOCBAQCBF eGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0CiAJLyogRm9yIHBhcmFsbGVs IHF1ZXJ5LCB0aGlzIHdpbGwgYmUgb3ZlcnJpZGRlbiBsYXRlci4gKi8KIAlhcHBlbmRzdGF0ZS0+ Y2hvb3NlX25leHRfc3VicGxhbiA9IGNob29zZV9uZXh0X3N1YnBsYW5fbG9jYWxseTsKIAorCWFw cGVuZHN0YXRlLT5hc19lcHFfdHVwZGVzYyA9IE5VTEw7CisKIAlyZXR1cm4gYXBwZW5kc3RhdGU7 CiB9CiAKQEAgLTI4OCw4ICsyOTAsMTA3IEBAIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCiBFeGVj QXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogewogCUFwcGVuZFN0YXRlICpub2RlID0gY2FzdE5v ZGUoQXBwZW5kU3RhdGUsIHBzdGF0ZSk7CisJRVN0YXRlCSAgICplc3RhdGUgPSBub2RlLT5wcy5z dGF0ZTsKIAlUdXBsZVRhYmxlU2xvdCAqcmVzdWx0OwogCisJaWYgKGVzdGF0ZS0+ZXNfZXBxX2Fj dGl2ZSAhPSBOVUxMKQorCXsKKwkJLyoKKwkJICogV2UgYXJlIGluc2lkZSBhbiBFdmFsUGxhblF1 YWwgcmVjaGVjay4gIElmIHRoZXJlIGlzIGEgcmVsZXZhbnQKKwkJICogcm93bWFyayBmb3IgdGhl IGFwcGVuZCByZWxhdGlvbiwgcmV0dXJuIHRoZSB0ZXN0IHR1cGxlIGlmIG9uZSBpcworCQkgKiBh dmFpbGFibGUuCisJCSAqLworCQlFUFFTdGF0ZSAgICplcHFzdGF0ZSA9IGVzdGF0ZS0+ZXNfZXBx X2FjdGl2ZTsKKwkJaW50CQkJc2NhbnJlbGlkOworCisJCWlmIChibXNfZ2V0X3NpbmdsZXRvbl9t ZW1iZXIoY2FzdE5vZGUoQXBwZW5kLCBub2RlLT5wcy5wbGFuKS0+YXBwcmVsaWRzLAorCQkJCQkJ CQkJICZzY2FucmVsaWQpKQorCQl7CisJCQlpZiAoZXBxc3RhdGUtPnJlbHN1YnNfZG9uZVtzY2Fu cmVsaWQgLSAxXSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFJldHVybiBlbXB0eSBzbG90LCBhcyBl aXRoZXIgdGhlcmUgaXMgbm8gRVBRIHR1cGxlIGZvciB0aGlzCisJCQkJICogcmVsIG9yIHdlIGFs cmVhZHkgcmV0dXJuZWQgaXQuCisJCQkJICovCisJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3QgPSBu b2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3Q7CisKKwkJCQlyZXR1cm4gRXhlY0NsZWFyVHVwbGUo c2xvdCk7CisJCQl9CisJCQllbHNlIGlmIChlcHFzdGF0ZS0+cmVsc3Vic19zbG90W3NjYW5yZWxp ZCAtIDFdICE9IE5VTEwpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBSZXR1cm4gcmVwbGFjZW1lbnQg dHVwbGUgcHJvdmlkZWQgYnkgdGhlIEVQUSBjYWxsZXIuCisJCQkJICovCisJCQkJVHVwbGVUYWJs ZVNsb3QgKnNsb3QgPSBlcHFzdGF0ZS0+cmVsc3Vic19zbG90W3NjYW5yZWxpZCAtIDFdOworCisJ CQkJQXNzZXJ0KGVwcXN0YXRlLT5yZWxzdWJzX3Jvd21hcmtbc2NhbnJlbGlkIC0gMV0gPT0gTlVM TCk7CisKKwkJCQkvKiBNYXJrIHRvIHJlbWVtYmVyIHRoYXQgd2Ugc2hvdWxkbid0IHJldHVybiBp dCBhZ2FpbiAqLworCQkJCWVwcXN0YXRlLT5yZWxzdWJzX2RvbmVbc2NhbnJlbGlkIC0gMV0gPSB0 cnVlOworCisJCQkJcmV0dXJuIHNsb3Q7CisJCQl9CisJCQllbHNlIGlmIChlcHFzdGF0ZS0+cmVs c3Vic19yb3dtYXJrW3NjYW5yZWxpZCAtIDFdICE9IE5VTEwpCisJCQl7CisJCQkJLyoKKwkJCQkg KiBGZXRjaCBhbmQgcmV0dXJuIHJlcGxhY2VtZW50IHR1cGxlIHVzaW5nIGEgbm9uLWxvY2tpbmcK KwkJCQkgKiByb3dtYXJrLgorCQkJCSAqLworCQkJCUV4ZWNBdXhSb3dNYXJrICplYXJtID0gZXBx c3RhdGUtPnJlbHN1YnNfcm93bWFya1tzY2FucmVsaWQgLSAxXTsKKwkJCQlFeGVjUm93TWFyayAq ZXJtID0gZWFybS0+cm93bWFyazsKKwkJCQlEYXR1bQkJZGF0dW07CisJCQkJYm9vbAkJaXNOdWxs OworCQkJCVR1cGxlVGFibGVTbG90ICpzbG90OworCisJCQkJQXNzZXJ0KGVybS0+bWFya1R5cGUg PT0gUk9XX01BUktfQ09QWSk7CisKKwkJCQlkYXR1bSA9IEV4ZWNHZXRKdW5rQXR0cmlidXRlKGVw cXN0YXRlLT5vcmlnc2xvdCwKKwkJCQkJCQkJCQkJIGVhcm0tPndob2xlQXR0Tm8sCisJCQkJCQkJ CQkJCSAmaXNOdWxsKTsKKwkJCQlpZiAoaXNOdWxsKQorCQkJCQlyZXR1cm4gTlVMTDsKKworCQkJ CWlmIChub2RlLT5hc19lcHFfdHVwZGVzYyA9PSBOVUxMKQorCQkJCXsKKwkJCQkJSGVhcFR1cGxl SGVhZGVyIHR1cGxlOworCQkJCQlPaWQJCQl0dXBUeXBlOworCQkJCQlpbnQzMgkJdHVwVHlwbW9k OworCQkJCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwkJCQkJdHVwbGUgPSBEYXR1bUdl dEhlYXBUdXBsZUhlYWRlcihkYXR1bSk7CisJCQkJCXR1cFR5cGUgPSBIZWFwVHVwbGVIZWFkZXJH ZXRUeXBlSWQodHVwbGUpOworCQkJCQl0dXBUeXBtb2QgPSBIZWFwVHVwbGVIZWFkZXJHZXRUeXBN b2QodHVwbGUpOworCisJCQkJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0 YXRlLT5lc19xdWVyeV9jeHQpOworCisJCQkJCW5vZGUtPmFzX2VwcV90dXBkZXNjID0gbG9va3Vw X3Jvd3R5cGVfdHVwZGVzY19jb3B5KHR1cFR5cGUsIHR1cFR5cG1vZCk7CisKKwkJCQkJRXhlY0Fz c2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgJm5vZGUtPnBzKTsKKworCQkJCQlub2RlLT5wcy5wc19Q cm9qSW5mbyA9CisJCQkJCQlFeGVjQnVpbGRQcm9qZWN0aW9uSW5mbyhjYXN0Tm9kZShBcHBlbmQs IG5vZGUtPnBzLnBsYW4pLT5lcHFfdGFyZ2V0bGlzdCwKKwkJCQkJCQkJCQkJCW5vZGUtPnBzLnBz X0V4cHJDb250ZXh0LAorCQkJCQkJCQkJCQkJbm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90LAor CQkJCQkJCQkJCQkJJm5vZGUtPnBzLAorCQkJCQkJCQkJCQkJTlVMTCk7CisKKwkJCQkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQkJCX0KKworCQkJCXNsb3QgPSBNYWtlVHVw bGVUYWJsZVNsb3Qobm9kZS0+YXNfZXBxX3R1cGRlc2MsCisJCQkJCQkJCQkJICAmVFRTT3BzVmly dHVhbCk7CisJCQkJRXhlY1N0b3JlSGVhcFR1cGxlRGF0dW0oZGF0dW0sIHNsb3QpOworCisJCQkJ LyogTWFyayB0byByZW1lbWJlciB0aGF0IHdlIHNob3VsZG4ndCByZXR1cm4gbW9yZSAqLworCQkJ CWVwcXN0YXRlLT5yZWxzdWJzX2RvbmVbc2NhbnJlbGlkIC0gMV0gPSB0cnVlOworCisJCQkJbm9k ZS0+cHMucHNfRXhwckNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKKworCQkJCXJldHVy biBFeGVjUHJvamVjdChub2RlLT5wcy5wc19Qcm9qSW5mbyk7CisJCQl9CisJCX0KKwl9CisKIAkv KgogCSAqIElmIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwgYWZ0ZXIgSW5pdCBvciBSZVNjYW4sIHdl IG5lZWQgdG8gZG8gdGhlCiAJICogaW5pdGlhbGl6YXRpb24gd29yay4KQEAgLTQwNSw2ICs1MDYs NyBAQCBFeGVjRW5kQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogdm9pZAogRXhlY1JlU2NhbkFw cGVuZChBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnBz LnN0YXRlOwogCWludAkJCW5hc3luY3BsYW5zID0gbm9kZS0+YXNfbmFzeW5jcGxhbnM7CiAJaW50 CQkJaTsKIApAQCAtNDQzLDYgKzU0NSwyMyBAQCBFeGVjUmVTY2FuQXBwZW5kKEFwcGVuZFN0YXRl ICpub2RlKQogCQkJRXhlY1JlU2NhbihzdWJub2RlKTsKIAl9CiAKKwkvKgorCSAqIFJlc2NhbiBF dmFsUGxhblF1YWwgdHVwbGUocykgaWYgd2UncmUgaW5zaWRlIGFuIEV2YWxQbGFuUXVhbCByZWNo ZWNrLgorCSAqIEJ1dCBkb24ndCBsb3NlIHRoZSAiYmxvY2tlZCIgc3RhdHVzIG9mIGJsb2NrZWQg dGFyZ2V0IHJlbGF0aW9ucy4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlICE9IE5V TEwpCisJeworCQlFUFFTdGF0ZSAgICplcHFzdGF0ZSA9IGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZTsK KwkJaW50CQkJc2NhbnJlbGlkOworCisJCWlmIChibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIoY2Fz dE5vZGUoQXBwZW5kLCBub2RlLT5wcy5wbGFuKS0+YXBwcmVsaWRzLAorCQkJCQkJCQkJICZzY2Fu cmVsaWQpKQorCQl7CisJCQllcHFzdGF0ZS0+cmVsc3Vic19kb25lW3NjYW5yZWxpZCAtIDFdID0K KwkJCQllcHFzdGF0ZS0+cmVsc3Vic19ibG9ja2VkW3NjYW5yZWxpZCAtIDFdOworCQl9CisJfQor CiAJLyogUmVzZXQgYXN5bmMgc3RhdGUgKi8KIAlpZiAobmFzeW5jcGxhbnMgPiAwKQogCXsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDgxNzg2OC4uMmMwY2FlZQotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAt MTg3LDYgKzE4Nyw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEUK IAkgKi8KIAltZXJnZXN0YXRlLT5tc19pbml0aWFsaXplZCA9IGZhbHNlOwogCisJbWVyZ2VzdGF0 ZS0+bXNfZXBxX3R1cGRlc2MgPSBOVUxMOworCiAJcmV0dXJuIG1lcmdlc3RhdGU7CiB9CiAKQEAg LTIwMCwxMSArMjAyLDExMCBAQCBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgogRXhlY01lcmdlQXBw ZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogewogCU1lcmdlQXBwZW5kU3RhdGUgKm5vZGUgPSBjYXN0 Tm9kZShNZXJnZUFwcGVuZFN0YXRlLCBwc3RhdGUpOworCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9k ZS0+cHMuc3RhdGU7CiAJVHVwbGVUYWJsZVNsb3QgKnJlc3VsdDsKIAlTbG90TnVtYmVyCWk7CiAK IAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCisJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSAh PSBOVUxMKQorCXsKKwkJLyoKKwkJICogV2UgYXJlIGluc2lkZSBhbiBFdmFsUGxhblF1YWwgcmVj aGVjay4gIElmIHRoZXJlIGlzIGEgcmVsZXZhbnQKKwkJICogcm93bWFyayBmb3IgdGhlIGFwcGVu ZCByZWxhdGlvbiwgcmV0dXJuIHRoZSB0ZXN0IHR1cGxlIGlmIG9uZSBpcworCQkgKiBhdmFpbGFi bGUuCisJCSAqLworCQlFUFFTdGF0ZSAgICplcHFzdGF0ZSA9IGVzdGF0ZS0+ZXNfZXBxX2FjdGl2 ZTsKKwkJaW50CQkJc2NhbnJlbGlkOworCisJCWlmIChibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIo Y2FzdE5vZGUoTWVyZ2VBcHBlbmQsIG5vZGUtPnBzLnBsYW4pLT5hcHByZWxpZHMsCisJCQkJCQkJ CQkgJnNjYW5yZWxpZCkpCisJCXsKKwkJCWlmIChlcHFzdGF0ZS0+cmVsc3Vic19kb25lW3NjYW5y ZWxpZCAtIDFdKQorCQkJeworCQkJCS8qCisJCQkJICogUmV0dXJuIGVtcHR5IHNsb3QsIGFzIGVp dGhlciB0aGVyZSBpcyBubyBFUFEgdHVwbGUgZm9yIHRoaXMKKwkJCQkgKiByZWwgb3Igd2UgYWxy ZWFkeSByZXR1cm5lZCBpdC4KKwkJCQkgKi8KKwkJCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCA9IG5v ZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdDsKKworCQkJCXJldHVybiBFeGVjQ2xlYXJUdXBsZShz bG90KTsKKwkJCX0KKwkJCWVsc2UgaWYgKGVwcXN0YXRlLT5yZWxzdWJzX3Nsb3Rbc2NhbnJlbGlk IC0gMV0gIT0gTlVMTCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFJldHVybiByZXBsYWNlbWVudCB0 dXBsZSBwcm92aWRlZCBieSB0aGUgRVBRIGNhbGxlci4KKwkJCQkgKi8KKwkJCQlUdXBsZVRhYmxl U2xvdCAqc2xvdCA9IGVwcXN0YXRlLT5yZWxzdWJzX3Nsb3Rbc2NhbnJlbGlkIC0gMV07CisKKwkJ CQlBc3NlcnQoZXBxc3RhdGUtPnJlbHN1YnNfcm93bWFya1tzY2FucmVsaWQgLSAxXSA9PSBOVUxM KTsKKworCQkJCS8qIE1hcmsgdG8gcmVtZW1iZXIgdGhhdCB3ZSBzaG91bGRuJ3QgcmV0dXJuIGl0 IGFnYWluICovCisJCQkJZXBxc3RhdGUtPnJlbHN1YnNfZG9uZVtzY2FucmVsaWQgLSAxXSA9IHRy dWU7CisKKwkJCQlyZXR1cm4gc2xvdDsKKwkJCX0KKwkJCWVsc2UgaWYgKGVwcXN0YXRlLT5yZWxz dWJzX3Jvd21hcmtbc2NhbnJlbGlkIC0gMV0gIT0gTlVMTCkKKwkJCXsKKwkJCQkvKgorCQkJCSAq IEZldGNoIGFuZCByZXR1cm4gcmVwbGFjZW1lbnQgdHVwbGUgdXNpbmcgYSBub24tbG9ja2luZwor CQkJCSAqIHJvd21hcmsuCisJCQkJICovCisJCQkJRXhlY0F1eFJvd01hcmsgKmVhcm0gPSBlcHFz dGF0ZS0+cmVsc3Vic19yb3dtYXJrW3NjYW5yZWxpZCAtIDFdOworCQkJCUV4ZWNSb3dNYXJrICpl cm0gPSBlYXJtLT5yb3dtYXJrOworCQkJCURhdHVtCQlkYXR1bTsKKwkJCQlib29sCQlpc051bGw7 CisJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisKKwkJCQlBc3NlcnQoZXJtLT5tYXJrVHlwZSA9 PSBST1dfTUFSS19DT1BZKTsKKworCQkJCWRhdHVtID0gRXhlY0dldEp1bmtBdHRyaWJ1dGUoZXBx c3RhdGUtPm9yaWdzbG90LAorCQkJCQkJCQkJCQkgZWFybS0+d2hvbGVBdHRObywKKwkJCQkJCQkJ CQkJICZpc051bGwpOworCQkJCWlmIChpc051bGwpCisJCQkJCXJldHVybiBOVUxMOworCisJCQkJ aWYgKG5vZGUtPm1zX2VwcV90dXBkZXNjID09IE5VTEwpCisJCQkJeworCQkJCQlIZWFwVHVwbGVI ZWFkZXIgdHVwbGU7CisJCQkJCU9pZAkJCXR1cFR5cGU7CisJCQkJCWludDMyCQl0dXBUeXBtb2Q7 CisJCQkJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCQkJCQl0dXBsZSA9IERhdHVtR2V0 SGVhcFR1cGxlSGVhZGVyKGRhdHVtKTsKKwkJCQkJdHVwVHlwZSA9IEhlYXBUdXBsZUhlYWRlckdl dFR5cGVJZCh0dXBsZSk7CisJCQkJCXR1cFR5cG1vZCA9IEhlYXBUdXBsZUhlYWRlckdldFR5cE1v ZCh0dXBsZSk7CisKKwkJCQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3Rh dGUtPmVzX3F1ZXJ5X2N4dCk7CisKKwkJCQkJbm9kZS0+bXNfZXBxX3R1cGRlc2MgPSBsb29rdXBf cm93dHlwZV90dXBkZXNjX2NvcHkodHVwVHlwZSwgdHVwVHlwbW9kKTsKKworCQkJCQlFeGVjQXNz aWduRXhwckNvbnRleHQoZXN0YXRlLCAmbm9kZS0+cHMpOworCisJCQkJCW5vZGUtPnBzLnBzX1By b2pJbmZvID0KKwkJCQkJCUV4ZWNCdWlsZFByb2plY3Rpb25JbmZvKGNhc3ROb2RlKE1lcmdlQXBw ZW5kLCBub2RlLT5wcy5wbGFuKS0+ZXBxX3RhcmdldGxpc3QsCisJCQkJCQkJCQkJCQlub2RlLT5w cy5wc19FeHByQ29udGV4dCwKKwkJCQkJCQkJCQkJCW5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xv dCwKKwkJCQkJCQkJCQkJCSZub2RlLT5wcywKKwkJCQkJCQkJCQkJCU5VTEwpOworCisJCQkJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJCQl9CisKKwkJCQlzbG90ID0gTWFr ZVR1cGxlVGFibGVTbG90KG5vZGUtPm1zX2VwcV90dXBkZXNjLAorCQkJCQkJCQkJCSAgJlRUU09w c1ZpcnR1YWwpOworCQkJCUV4ZWNTdG9yZUhlYXBUdXBsZURhdHVtKGRhdHVtLCBzbG90KTsKKwor CQkJCS8qIE1hcmsgdG8gcmVtZW1iZXIgdGhhdCB3ZSBzaG91bGRuJ3QgcmV0dXJuIG1vcmUgKi8K KwkJCQllcHFzdGF0ZS0+cmVsc3Vic19kb25lW3NjYW5yZWxpZCAtIDFdID0gdHJ1ZTsKKworCQkJ CW5vZGUtPnBzLnBzX0V4cHJDb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CisKKwkJCQly ZXR1cm4gRXhlY1Byb2plY3Qobm9kZS0+cHMucHNfUHJvakluZm8pOworCQkJfQorCQl9CisJfQor CiAJaWYgKCFub2RlLT5tc19pbml0aWFsaXplZCkKIAl7CiAJCS8qIE5vdGhpbmcgdG8gZG8gaWYg YWxsIHN1YnBsYW5zIHdlcmUgcHJ1bmVkICovCkBAIC0zMzksNiArNDQwLDcgQEAgRXhlY0VuZE1l cmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZAogdm9pZAogRXhlY1JlU2Nhbk1lcmdlQXBw ZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpCiB7CisJRVN0YXRlCSAgICplc3RhdGUgPSBub2Rl LT5wcy5zdGF0ZTsKIAlpbnQJCQlpOwogCiAJLyoKQEAgLTM3Miw2ICs0NzQsMjQgQEAgRXhlY1Jl U2Nhbk1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKgogCQlpZiAoc3Vibm9kZS0+Y2hnUGFy YW0gPT0gTlVMTCkKIAkJCUV4ZWNSZVNjYW4oc3Vibm9kZSk7CiAJfQorCisJLyoKKwkgKiBSZXNj YW4gRXZhbFBsYW5RdWFsIHR1cGxlKHMpIGlmIHdlJ3JlIGluc2lkZSBhbiBFdmFsUGxhblF1YWwg cmVjaGVjay4KKwkgKiBCdXQgZG9uJ3QgbG9zZSB0aGUgImJsb2NrZWQiIHN0YXR1cyBvZiBibG9j a2VkIHRhcmdldCByZWxhdGlvbnMuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSAh PSBOVUxMKQorCXsKKwkJRVBRU3RhdGUgICAqZXBxc3RhdGUgPSBlc3RhdGUtPmVzX2VwcV9hY3Rp dmU7CisJCWludAkJCXNjYW5yZWxpZDsKKworCQlpZiAoYm1zX2dldF9zaW5nbGV0b25fbWVtYmVy KGNhc3ROb2RlKE1lcmdlQXBwZW5kLCBub2RlLT5wcy5wbGFuKS0+YXBwcmVsaWRzLAorCQkJCQkJ CQkJICZzY2FucmVsaWQpKQorCQl7CisJCQllcHFzdGF0ZS0+cmVsc3Vic19kb25lW3NjYW5yZWxp ZCAtIDFdID0KKwkJCQllcHFzdGF0ZS0+cmVsc3Vic19ibG9ja2VkW3NjYW5yZWxpZCAtIDFdOwor CQl9CisJfQorCiAJYmluYXJ5aGVhcF9yZXNldChub2RlLT5tc19oZWFwKTsKIAlub2RlLT5tc19p bml0aWFsaXplZCA9IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYTFmYTIuLmJiMDdjYTQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3NldHJlZnMuYwpAQCAtMTc2MSw4ICsxNzYxLDkgQEAgc2V0X2FwcGVuZF9yZWZlcmVuY2Vz KFBsYW5uZXJJbmZvICpyb290LAogCS8qCiAJICogT3RoZXJ3aXNlLCBjbGVhbiB1cCB0aGUgQXBw ZW5kIGFzIG5lZWRlZC4gIEl0J3Mgb2theSB0byBkbyB0aGlzIGFmdGVyCiAJICogcmVjdXJzaW5n IHRvIHRoZSBjaGlsZHJlbiwgYmVjYXVzZSBzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcyBkb2Vz bid0Ci0JICogbG9vayBhdCB0aG9zZS4KKwkgKiBsb29rIGF0IHRob3NlLiAgU2F2ZSB0aGUgb3Jp Z2luYWwgdGFyZ2V0bGlzdCBmb3IgRVBRIGNoZWNraW5nLgogCSAqLworCWFwbGFuLT5lcHFfdGFy Z2V0bGlzdCA9IGFwbGFuLT5wbGFuLnRhcmdldGxpc3Q7CiAJc2V0X2R1bW15X3RsaXN0X3JlZmVy ZW5jZXMoKFBsYW4gKikgYXBsYW4sIHJ0b2Zmc2V0KTsKIAogCWFwbGFuLT5hcHByZWxpZHMgPSBv ZmZzZXRfcmVsaWRfc2V0KGFwbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKQEAgLTE4MzcsOCAr MTgzOCw5IEBAIHNldF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICoKIAkvKgog CSAqIE90aGVyd2lzZSwgY2xlYW4gdXAgdGhlIE1lcmdlQXBwZW5kIGFzIG5lZWRlZC4gIEl0J3Mg b2theSB0byBkbyB0aGlzCiAJICogYWZ0ZXIgcmVjdXJzaW5nIHRvIHRoZSBjaGlsZHJlbiwgYmVj YXVzZSBzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcwotCSAqIGRvZXNuJ3QgbG9vayBhdCB0aG9z ZS4KKwkgKiBkb2Vzbid0IGxvb2sgYXQgdGhvc2UuICBTYXZlIHRoZSBvcmlnaW5hbCB0YXJnZXRs aXN0IGZvciBFUFEgY2hlY2tpbmcuCiAJICovCisJbXBsYW4tPmVwcV90YXJnZXRsaXN0ID0gbXBs YW4tPnBsYW4udGFyZ2V0bGlzdDsKIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygoUGxhbiAq KSBtcGxhbiwgcnRvZmZzZXQpOwogCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9yZWxpZF9z ZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA0NDRhNWYwLi42YzNjYTZlCi0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0x Mzc3LDYgKzEzNzcsNyBAQCBzdHJ1Y3QgQXBwZW5kU3RhdGUKIAlCaXRtYXBzZXQgICphc192YWxp ZF9zdWJwbGFuczsKIAlCaXRtYXBzZXQgICphc192YWxpZF9hc3luY3BsYW5zOwkvKiB2YWxpZCBh c3luY2hyb25vdXMgcGxhbnMgaW5kZXhlcyAqLwogCWJvb2wJCSgqY2hvb3NlX25leHRfc3VicGxh bikgKEFwcGVuZFN0YXRlICopOworCVR1cGxlRGVzYwlhc19lcHFfdHVwZGVzYzsgLyogd2hvbGVy b3cgdHVwbGUgZGVzY3JpcHRvciBmb3IgRVBRIGNoZWNrICovCiB9OwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tCkBAIC0xNDA2LDYgKzE0MDcsNyBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZFN0 YXRlCiAJYm9vbAkJbXNfaW5pdGlhbGl6ZWQ7IC8qIGFyZSBzdWJwbGFucyBzdGFydGVkPyAqLwog CXN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlICptc19wcnVuZV9zdGF0ZTsKIAlCaXRtYXBzZXQg ICptc192YWxpZF9zdWJwbGFuczsKKwlUdXBsZURlc2MJbXNfZXBxX3R1cGRlc2M7IC8qIHdob2xl cm93IHR1cGxlIGRlc2NyaXB0b3IgZm9yIEVQUSBjaGVjayAqLwogfSBNZXJnZUFwcGVuZFN0YXRl OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGI0ZWY2YmMuLmUxNzgxNzUKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTI3NSw2ICsy NzUsOCBAQCB0eXBlZGVmIHN0cnVjdCBBcHBlbmQKIAogCS8qIEluZm8gZm9yIHJ1bi10aW1lIHN1 YnBsYW4gcHJ1bmluZzsgTlVMTCBpZiB3ZSdyZSBub3QgZG9pbmcgdGhhdCAqLwogCXN0cnVjdCBQ YXJ0aXRpb25QcnVuZUluZm8gKnBhcnRfcHJ1bmVfaW5mbzsKKworCUxpc3QJICAgKmVwcV90YXJn ZXRsaXN0OyAvKiBUYXJnZXRsaXN0IGZvciBFUFEgY2hlY2tpbmcgKi8KIH0gQXBwZW5kOwogCiAv KiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0zMTAsNiArMzEyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgTWVy Z2VBcHBlbmQKIAogCS8qIEluZm8gZm9yIHJ1bi10aW1lIHN1YnBsYW4gcHJ1bmluZzsgTlVMTCBp ZiB3ZSdyZSBub3QgZG9pbmcgdGhhdCAqLwogCXN0cnVjdCBQYXJ0aXRpb25QcnVuZUluZm8gKnBh cnRfcHJ1bmVfaW5mbzsKKworCUxpc3QJICAgKmVwcV90YXJnZXRsaXN0OyAvKiBUYXJnZXRsaXN0 IGZvciBFUFEgY2hlY2tpbmcgKi8KIH0gTWVyZ2VBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tZXJnZS1qb2luLm91 dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tZXJnZS1qb2luLm91dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA1N2YwNDhjLi5hOWI0OWE3Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9tZXJnZS1qb2luLm91dAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0 ZWQvbWVyZ2Utam9pbi5vdXQKQEAgLTE0NiwzICsxNDYsMTQ0IEBAIGlkfHZhbAogIDN8IDMwCiAo MyByb3dzKQogCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBiMSBiMiBtMSBoaiBleHUgbTJ1IGMx IGMyIHMxCitzdGVwIGIxOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBDT01NSVRURUQ7Citz dGVwIGIyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBDT01NSVRURUQ7CitzdGVwIG0xOiBN RVJHRSBJTlRPIHRndCBVU0lORyBzcmMgT04gdGd0LmlkID0gc3JjLmlkCisgICAgICAgICAgICAg V0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIFNFVCB2YWwgPSBzcmMudmFsCisgICAgICAgICAgICAg V0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKHNyYy5pZCwgc3JjLnZhbCk7Citz dGVwIGhqOiBTRVQgTE9DQUwgZW5hYmxlX21lcmdlam9pbiA9IG9mZjsgU0VUIExPQ0FMIGVuYWJs ZV9uZXN0bG9vcCA9IG9mZjsKK3N0ZXAgZXh1OiBFWFBMQUlOICh2ZXJib3NlLCBjb3N0cyBvZmYp CisgICAgICAgICAgIE1FUkdFIElOVE8gdGd0IFVTSU5HIChTRUxFQ1QgKiBGUk9NIHNyYworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JT04gQUxMCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTRUxFQ1QgKiBGUk9NIHNyYzIpIHNyYyBPTiB0Z3QuaWQgPSBzcmMu aWQKKyAgICAgICAgICAgICBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIHZhbCA9IHNyYy52 YWwKKyAgICAgICAgICAgICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIFZBTFVFUyAoc3Jj LmlkLCBzcmMudmFsKTsKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK01lcmdl IG9uIHB1YmxpYy50Z3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgLT4gIEhhc2ggTGVmdCBKb2luICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgT3V0cHV0OiB0Z3QuY3RpZCwg c3JjXzEudmFsLCBzcmNfMS5pZCwgKFJPVyhzcmNfMS5pZCwgc3JjXzEudmFsKSkKKyAgICAgICAg SW5uZXIgVW5pcXVlOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgSGFzaCBDb25kOiAoc3JjXzEuaWQgPSB0Z3QuaWQpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5zcmMgc3JjXzEgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBzcmNfMS52YWwsIHNyY18xLmlkLCBS T1coc3JjXzEuaWQsIHNyY18xLnZhbCkKKyAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5zcmMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiBzcmMyLnZhbCwgc3JjMi5pZCwgUk9XKHNyYzIuaWQsIHNyYzIudmFsKSAg ICAKKyAgICAgICAgLT4gIEhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgT3V0cHV0OiB0Z3QuY3RpZCwgdGd0 LmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy50Z3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Z3QuY3RpZCwgdGd0LmlkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKygxNCByb3dzKQorCitzdGVwIG0ydTogTUVSR0UgSU5UTyB0Z3Qg VVNJTkcgKFNFTEVDVCAqIEZST00gc3JjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBVTklPTiBBTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCAqIEZS T00gc3JjMikgc3JjIE9OIHRndC5pZCA9IHNyYy5pZAorICAgICAgICAgICAgIFdIRU4gTUFUQ0hF RCBUSEVOIFVQREFURSBTRVQgdmFsID0gc3JjLnZhbAorICAgICAgICAgICAgIFdIRU4gTk9UIE1B VENIRUQgVEhFTiBJTlNFUlQgVkFMVUVTIChzcmMuaWQsIHNyYy52YWwpOyA8d2FpdGluZyAuLi4+ CitzdGVwIGMxOiBDT01NSVQ7CitzdGVwIG0ydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIGMyOiBD T01NSVQ7CitzdGVwIHMxOiBTRUxFQ1QgKiBGUk9NIHRndDsKK2lkfHZhbAorLS0rLS0tCisgMXwg MTAKKyAyfCAyMAorIDN8IDMwCisoMyByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBi MSBiMiBtMSBtaiBleHUgbTJ1IGMxIGMyIHMxCitzdGVwIGIxOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgUkVBRCBDT01NSVRURUQ7CitzdGVwIGIyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBD T01NSVRURUQ7CitzdGVwIG0xOiBNRVJHRSBJTlRPIHRndCBVU0lORyBzcmMgT04gdGd0LmlkID0g c3JjLmlkCisgICAgICAgICAgICAgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIFNFVCB2YWwgPSBz cmMudmFsCisgICAgICAgICAgICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMg KHNyYy5pZCwgc3JjLnZhbCk7CitzdGVwIG1qOiBTRVQgTE9DQUwgZW5hYmxlX2hhc2hqb2luID0g b2ZmOyBTRVQgTE9DQUwgZW5hYmxlX25lc3Rsb29wID0gb2ZmOworc3RlcCBleHU6IEVYUExBSU4g KHZlcmJvc2UsIGNvc3RzIG9mZikKKyAgICAgICAgICAgTUVSR0UgSU5UTyB0Z3QgVVNJTkcgKFNF TEVDVCAqIEZST00gc3JjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTklPTiBB TEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCAqIEZST00gc3JjMikg c3JjIE9OIHRndC5pZCA9IHNyYy5pZAorICAgICAgICAgICAgIFdIRU4gTUFUQ0hFRCBUSEVOIFVQ REFURSBTRVQgdmFsID0gc3JjLnZhbAorICAgICAgICAgICAgIFdIRU4gTk9UIE1BVENIRUQgVEhF TiBJTlNFUlQgVkFMVUVTIChzcmMuaWQsIHNyYy52YWwpOworUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorTWVyZ2Ugb24gcHVibGljLnRndCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgTWVyZ2UgTGVmdCBKb2luICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICBPdXRwdXQ6IHRndC5jdGlkLCBzcmNfMS52YWwsIHNyY18xLmlkLCAoUk9XKHNyY18xLmlkLCBz cmNfMS52YWwpKQorICAgICAgICBJbm5lciBVbmlxdWU6IHRydWUgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBNZXJnZSBDb25kOiAoc3JjXzEu aWQgPSB0Z3QuaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAt PiAgTWVyZ2UgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICBTb3J0IEtleTogc3JjXzEuaWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1 c2luZyBzcmNfcGtleSBvbiBwdWJsaWMuc3JjIHNyY18xICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHNyY18xLnZhbCwgc3JjXzEuaWQsIFJPVyhzcmNfMS5pZCwgc3JjXzEu dmFsKQorICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBzcmMyX3BrZXkgb24gcHVi bGljLnNyYzIgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHNyYzIu dmFsLCBzcmMyLmlkLCBST1coc3JjMi5pZCwgc3JjMi52YWwpICAgIAorICAgICAgICAtPiAgSW5k ZXggU2NhbiB1c2luZyB0Z3RfcGtleSBvbiBwdWJsaWMudGd0ICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICBPdXRwdXQ6IHRndC5jdGlkLCB0Z3QuaWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorKDEzIHJvd3MpCisKK3N0ZXAgbTJ1OiBNRVJHRSBJTlRPIHRn dCBVU0lORyAoU0VMRUNUICogRlJPTSBzcmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFVOSU9OIEFMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUICog RlJPTSBzcmMyKSBzcmMgT04gdGd0LmlkID0gc3JjLmlkCisgICAgICAgICAgICAgV0hFTiBNQVRD SEVEIFRIRU4gVVBEQVRFIFNFVCB2YWwgPSBzcmMudmFsCisgICAgICAgICAgICAgV0hFTiBOT1Qg TUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKHNyYy5pZCwgc3JjLnZhbCk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgYzE6IENPTU1JVDsKK3N0ZXAgbTJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgYzI6 IENPTU1JVDsKK3N0ZXAgczE6IFNFTEVDVCAqIEZST00gdGd0OworaWR8dmFsCistLSstLS0KKyAx fCAxMAorIDJ8IDIwCisgM3wgMzAKKygzIHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IGIxIGIyIG0xIG5sIGV4dSBtMnUgYzEgYzIgczEKK3N0ZXAgYjE6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBSRUFEIENPTU1JVFRFRDsKK3N0ZXAgYjI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRUFE IENPTU1JVFRFRDsKK3N0ZXAgbTE6IE1FUkdFIElOVE8gdGd0IFVTSU5HIHNyYyBPTiB0Z3QuaWQg PSBzcmMuaWQKKyAgICAgICAgICAgICBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIHZhbCA9 IHNyYy52YWwKKyAgICAgICAgICAgICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIFZBTFVF UyAoc3JjLmlkLCBzcmMudmFsKTsKK3N0ZXAgbmw6IFNFVCBMT0NBTCBlbmFibGVfaGFzaGpvaW4g PSBvZmY7IFNFVCBMT0NBTCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc3RlcCBleHU6IEVYUExB SU4gKHZlcmJvc2UsIGNvc3RzIG9mZikKKyAgICAgICAgICAgTUVSR0UgSU5UTyB0Z3QgVVNJTkcg KFNFTEVDVCAqIEZST00gc3JjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTklP TiBBTEwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCAqIEZST00gc3Jj Mikgc3JjIE9OIHRndC5pZCA9IHNyYy5pZAorICAgICAgICAgICAgIFdIRU4gTUFUQ0hFRCBUSEVO IFVQREFURSBTRVQgdmFsID0gc3JjLnZhbAorICAgICAgICAgICAgIFdIRU4gTk9UIE1BVENIRUQg VEhFTiBJTlNFUlQgVkFMVUVTIChzcmMuaWQsIHNyYy52YWwpOworUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorTWVyZ2Ugb24gcHVibGljLnRndCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgTmVzdGVkIExvb3AgTGVm dCBKb2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICBPdXRwdXQ6IHRndC5jdGlkLCBzcmNfMS52YWwsIHNyY18xLmlkLCAoUk9XKHNyY18xLmlk LCBzcmNfMS52YWwpKQorICAgICAgICBJbm5lciBVbmlxdWU6IHRydWUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQXBwZW5kICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnNyYyBzcmNfMSAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHNyY18xLnZhbCwgc3JjXzEu aWQsIFJPVyhzcmNfMS5pZCwgc3JjXzEudmFsKQorICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLnNyYzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHNyYzIudmFsLCBzcmMyLmlkLCBST1coc3JjMi5pZCwgc3JjMi52 YWwpICAgIAorICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyB0Z3RfcGtleSBvbiBwdWJsaWMu dGd0ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBPdXRwdXQ6IHRndC5jdGlk LCB0Z3QuaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodGd0LmlkID0gc3JjXzEuaWQpICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorKDEyIHJvd3MpCisKK3N0ZXAgbTJ1OiBNRVJHRSBJTlRPIHRndCBVU0lORyAoU0VMRUNU ICogRlJPTSBzcmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOSU9OIEFMTAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUICogRlJPTSBzcmMyKSBzcmMg T04gdGd0LmlkID0gc3JjLmlkCisgICAgICAgICAgICAgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRF IFNFVCB2YWwgPSBzcmMudmFsCisgICAgICAgICAgICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElO U0VSVCBWQUxVRVMgKHNyYy5pZCwgc3JjLnZhbCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgYzE6IENP TU1JVDsKK3N0ZXAgbTJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgYzI6IENPTU1JVDsKK3N0ZXAg czE6IFNFTEVDVCAqIEZST00gdGd0OworaWR8dmFsCistLSstLS0KKyAxfCAxMAorIDJ8IDIwCisg M3wgMzAKKygzIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9t ZXJnZS1qb2luLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvbWVyZ2Utam9pbi5zcGVj Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzM2EwMmMuLjU2NDcwMmIKLS0tIGEvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL21lcmdlLWpvaW4uc3BlYworKysgYi9zcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvbWVyZ2Utam9pbi5zcGVjCkBAIC02LDYgKzYsNyBAQAogc2V0dXAKIHsKICAgQ1JF QVRFIFRBQkxFIHNyYyAoaWQgaW50IFBSSU1BUlkgS0VZLCB2YWwgaW50KTsKKyAgQ1JFQVRFIFRB QkxFIHNyYzIgKGlkIGludCBQUklNQVJZIEtFWSwgdmFsIGludCk7CiAgIENSRUFURSBUQUJMRSB0 Z3QgKGlkIGludCBQUklNQVJZIEtFWSwgdmFsIGludCk7CiAgIElOU0VSVCBJTlRPIHNyYyBTRUxF Q1QgeCwgeCoxMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDMpIGcoeCk7CiAgIElOU0VSVCBJTlRP IHRndCBTRUxFQ1QgeCwgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDMpIGcoeCk7CkBAIC0xMyw3 ICsxNCw3IEBAIHNldHVwCiAKIHRlYXJkb3duCiB7Ci0gIERST1AgVEFCTEUgc3JjLCB0Z3Q7Cisg IERST1AgVEFCTEUgc3JjLCBzcmMyLCB0Z3Q7CiB9CiAKIHNlc3Npb24gczEKQEAgLTM2LDYgKzM3 LDE3IEBAIHN0ZXAgZXggIHsgRVhQTEFJTiAodmVyYm9zZSwgY29zdHMgb2ZmKQogc3RlcCBtMiAg eyBNRVJHRSBJTlRPIHRndCBVU0lORyBzcmMgT04gdGd0LmlkID0gc3JjLmlkCiAgICAgICAgICAg ICAgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIFNFVCB2YWwgPSBzcmMudmFsCiAgICAgICAgICAg ICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKHNyYy5pZCwgc3JjLnZhbCk7 IH0KK3N0ZXAgZXh1IHsgRVhQTEFJTiAodmVyYm9zZSwgY29zdHMgb2ZmKQorICAgICAgICAgICBN RVJHRSBJTlRPIHRndCBVU0lORyAoU0VMRUNUICogRlJPTSBzcmMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFVOSU9OIEFMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU0VMRUNUICogRlJPTSBzcmMyKSBzcmMgT04gdGd0LmlkID0gc3JjLmlkCisgICAgICAgICAg ICAgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIFNFVCB2YWwgPSBzcmMudmFsCisgICAgICAgICAg ICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKHNyYy5pZCwgc3JjLnZhbCk7 IH0KK3N0ZXAgbTJ1IHsgTUVSR0UgSU5UTyB0Z3QgVVNJTkcgKFNFTEVDVCAqIEZST00gc3JjCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTklPTiBBTEwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNFTEVDVCAqIEZST00gc3JjMikgc3JjIE9OIHRndC5pZCA9IHNy Yy5pZAorICAgICAgICAgICAgIFdIRU4gTUFUQ0hFRCBUSEVOIFVQREFURSBTRVQgdmFsID0gc3Jj LnZhbAorICAgICAgICAgICAgIFdIRU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgVkFMVUVTIChz cmMuaWQsIHNyYy52YWwpOyB9CiBzdGVwIHMyICB7IFNFTEVDVCAqIEZST00gdGd0OyB9CiBzdGVw IGMyICB7IENPTU1JVDsgfQogCkBAIC00MywzICs1NSw2IEBAIHBlcm11dGF0aW9uIGIxIG0xIHMx IGMxIGIyIG0yIHMyIGMyCiBwZXJtdXRhdGlvbiBiMSBiMiBtMSBoaiBleCBtMiBjMSBjMiBzMQog cGVybXV0YXRpb24gYjEgYjIgbTEgbWogZXggbTIgYzEgYzIgczEKIHBlcm11dGF0aW9uIGIxIGIy IG0xIG5sIGV4IG0yIGMxIGMyIHMxCitwZXJtdXRhdGlvbiBiMSBiMiBtMSBoaiBleHUgbTJ1IGMx IGMyIHMxCitwZXJtdXRhdGlvbiBiMSBiMiBtMSBtaiBleHUgbTJ1IGMxIGMyIHMxCitwZXJtdXRh dGlvbiBiMSBiMiBtMSBubCBleHUgbTJ1IGMxIGMyIHMxCg== --000000000000ed87ca06125c8222--