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 1sOvN3-00204T-Uh for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Jul 2024 08:29:46 +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 1sOvN1-006u4D-Nw for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Jul 2024 08:29:44 +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 1sOvN0-006u3v-I8 for pgsql-hackers@lists.postgresql.org; Wed, 03 Jul 2024 08:29:44 +0000 Received: from mail-yw1-x1136.google.com ([2607:f8b0:4864:20::1136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sOvMx-000Aca-SQ for pgsql-hackers@lists.postgresql.org; Wed, 03 Jul 2024 08:29:42 +0000 Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-6510c0c8e29so7490317b3.0 for ; Wed, 03 Jul 2024 01:29:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719995379; x=1720600179; 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=6DHZMj1OLLSrAGZH271YEWLIM5dPiYj365pdDt419JA=; b=LnNXFTJdtYaHPa5gg+Wuj0oM3n3c2bAXx+tzc76QEmp6Lq/qy0sm1D8jdgzJNXoV9X w84Xjwj8ijo5pxA5TjdpcR22LUWx1YVJOcmCH2JSqGxmJCTPbnEFLsURnWTxGqqWA8J5 dIrWXeZQ8XYo8NdNHJXR/lyIzSqmH5A5eaS+B+sdvn2h/iRCYM0m6jw8DnG0EysIO8eq gWCnquaixbDlDglgmsSjtTM/xJgNTJywihs+C3ke3EmZzmK/91m+ZLeqsN77PAac0Xud F9s9HgnKisvIER4JW95TdWYMYq+FzJ3vD7O+dv7FOwPNgYcwKqWIRKLfdU7NiyNDx+4P NJOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719995379; x=1720600179; 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=6DHZMj1OLLSrAGZH271YEWLIM5dPiYj365pdDt419JA=; b=g41xjJqcLCkzgzKCQAmcTSpwnilexAQbOz8+b5chNtd6SyHphXRjd16dcAYmkFgC8s CP38W1agEZ7RaWcLW0BMbSbmitCbFaPS8fGvFjP3Ki8bbUVhbfyRjwIKHg/Q6u4pzhLY 1P8JF7g8yONSz2keWf22r9bgQUuim143lC+zhQF041GlrQGh4g7oeaYlPjK9Ae9i7jJN lw+KULdbiRNR+9EqiMa43Im+kP4l4dJ2oTT3OXw+B4MkbIfSxZHDaRwkQtfRulHyoZs0 FfxrxRkCZyWS5VRdZuADs9sFAfb6Noyj0EB+ha5rYwb1gpQ3UuoBWf7xe8iuVSF7+cSN QUIQ== X-Forwarded-Encrypted: i=1; AJvYcCVqVcvwHYMfyvVwmgAJADlwZ4fDvtr3u7NeWGtgbBHY8QBsxrHwyJ3Zo8Uxssym+oGP3Xg4nqaIEh+3tAAu7MJ8R1S2AuWVUMUGLJgOD4WUY1te X-Gm-Message-State: AOJu0YzkpIph46VubT6gy5rh6TwZZMD35OSYb/qJcxMRNyoMLqe/aq6W kF0JwS3qSL/hhdq7IX0WV9IiIl63fokOmKR4m4aQQyZlHkr7Kc1Bkis4W+UMVX65uHCXHQfDUzZ ztjo025Hj31t6iN5LSy6vbyok0Lo= X-Google-Smtp-Source: AGHT+IEKt8QFmBK1iYhJAb4ghdjtDVlX9mEUQ15QwUIkZeQtk1FUyDbwtmPAAaHEbd9y1X1gdeWxnaqCfAdfVlx8J8o= X-Received: by 2002:a81:e207:0:b0:627:970a:fc1 with SMTP id 00721157ae682-64c7312fa54mr111778007b3.41.1719995378940; Wed, 03 Jul 2024 01:29:38 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Wed, 3 Jul 2024 16:29:27 +0800 Message-ID: Subject: Re: Eager aggregation, take 3 To: Andy Fan Cc: PostgreSQL-development , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000949c11061c53a1d6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000949c11061c53a1d6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 13, 2024 at 4:07=E2=80=AFPM Richard Guo wrote: > I spent some time testing this patchset and found a few more issues. > ... > Hence here is the v8 patchset, with fixes for all the above issues. I found an 'ORDER/GROUP BY expression not found in targetlist' error with this patchset, with the query below: create table t (a boolean); set enable_eager_aggregate to on; explain (costs off) select min(1) from t t1 left join t t2 on t1.a group by (not (not t1.a)), t1.a order by t1.a; ERROR: ORDER/GROUP BY expression not found in targetlist This happens because the two grouping items are actually the same and standard_qp_callback would remove one of them. The fully-processed groupClause is kept in root->processed_groupClause. However, when collecting grouping expressions in create_grouping_expr_infos, we are checking parse->groupClause, which is incorrect. The fix is straightforward: check root->processed_groupClause instead. Here is a new rebase with this fix. Thanks Richard --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0001-Introduce-RelInfoList-structure.patch" Content-Disposition: attachment; filename="v9-0001-Introduce-RelInfoList-structure.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5krn5l0 RnJvbSBhZjBhNDk4YTI0MzY4NDQ3OGMyYjA4ZDljYjFkY2YyZDVhOTc5YTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNTo1OToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDEvMTBdIEludHJvZHVjZSBSZWxJbmZvTGlzdCBzdHJ1Y3R1cmUKClRoaXMgY29tbWl0IGludHJv ZHVjZXMgdGhlIFJlbEluZm9MaXN0IHN0cnVjdHVyZSwgd2hpY2ggZW5jYXBzdWxhdGVzCmJvdGgg YSBsaXN0IGFuZCBhIGhhc2ggdGFibGUsIHNvIHRoYXQgd2UgY2FuIGxldmVyYWdlIHRoZSBoYXNo IHRhYmxlIGZvcgpmYXN0ZXIgbG9va3VwcyBub3Qgb25seSBmb3Igam9pbiByZWxhdGlvbnMgYnV0 IGFsc28gZm9yIHVwcGVyIHJlbGF0aW9ucy4KLS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYyAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19l dmFsLmMgfCAgMjAgKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jICB8 ICAgNyArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyAgfCAgIDUgKy0K IHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyAgIHwgMTY0ICsrKysrKysrKysr KysrLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgIHwg IDMxICsrKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCA5NyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBi L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IDBiYjlhNWFlOGYuLmU4 MmUxYmI1NTggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5j CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC02MDY5LDcgKzYw NjksOCBAQCBmb3JlaWduX2pvaW5fb2soUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpv aW5yZWwsIEpvaW5UeXBlIGpvaW50eXBlLAogCSAqLwogCUFzc2VydChmcGluZm8tPnJlbGF0aW9u X2luZGV4ID09IDApOwkvKiBzaG91bGRuJ3QgYmUgc2V0IHlldCAqLwogCWZwaW5mby0+cmVsYXRp b25faW5kZXggPQotCQlsaXN0X2xlbmd0aChyb290LT5wYXJzZS0+cnRhYmxlKSArIGxpc3RfbGVu Z3RoKHJvb3QtPmpvaW5fcmVsX2xpc3QpOworCQlsaXN0X2xlbmd0aChyb290LT5wYXJzZS0+cnRh YmxlKSArCisJCWxpc3RfbGVuZ3RoKHJvb3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1zKTsKIAogCXJl dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vx b19ldmFsLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYwppbmRleCBk MmY3ZjRlNWYzLi4xMTQxMTU2ODk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv Z2Vxby9nZXFvX2V2YWwuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2 YWwuYwpAQCAtODUsMTggKzg1LDE4IEBAIGdlcW9fZXZhbChQbGFubmVySW5mbyAqcm9vdCwgR2Vu ZSAqdG91ciwgaW50IG51bV9nZW5lKQogCSAqIHRydW5jYXRpbmcgdGhlIGxpc3QgdG8gaXRzIG9y aWdpbmFsIGxlbmd0aC4gIE5PVEUgdGhpcyBhc3N1bWVzIHRoYXQgYW55CiAJICogYWRkZWQgZW50 cmllcyBhcmUgYXBwZW5kZWQgYXQgdGhlIGVuZCEKIAkgKgotCSAqIFdlIGFsc28gbXVzdCB0YWtl IGNhcmUgbm90IHRvIG1lc3MgdXAgdGhlIG91dGVyIGpvaW5fcmVsX2hhc2gsIGlmIHRoZXJlCi0J ICogaXMgb25lLiAgV2UgY2FuIGRvIHRoaXMgYnkganVzdCB0ZW1wb3JhcmlseSBzZXR0aW5nIHRo ZSBsaW5rIHRvIE5VTEwuCi0JICogKElmIHdlIGFyZSBkZWFsaW5nIHdpdGggZW5vdWdoIGpvaW4g cmVscywgd2hpY2ggd2UgdmVyeSBsaWtlbHkgYXJlLCBhCi0JICogbmV3IGhhc2ggdGFibGUgd2ls bCBnZXQgYnVpbHQgYW5kIHVzZWQgbG9jYWxseS4pCisJICogV2UgYWxzbyBtdXN0IHRha2UgY2Fy ZSBub3QgdG8gbWVzcyB1cCB0aGUgb3V0ZXIgam9pbl9yZWxfbGlzdC0+aGFzaCwgaWYKKwkgKiB0 aGVyZSBpcyBvbmUuICBXZSBjYW4gZG8gdGhpcyBieSBqdXN0IHRlbXBvcmFyaWx5IHNldHRpbmcg dGhlIGxpbmsgdG8KKwkgKiBOVUxMLiAgKElmIHdlIGFyZSBkZWFsaW5nIHdpdGggZW5vdWdoIGpv aW4gcmVscywgd2hpY2ggd2UgdmVyeSBsaWtlbHkKKwkgKiBhcmUsIGEgbmV3IGhhc2ggdGFibGUg d2lsbCBnZXQgYnVpbHQgYW5kIHVzZWQgbG9jYWxseS4pCiAJICoKIAkgKiBqb2luX3JlbF9sZXZl bFtdIHNob3VsZG4ndCBiZSBpbiB1c2UsIHNvIGp1c3QgQXNzZXJ0IGl0IGlzbid0LgogCSAqLwot CXNhdmVsZW5ndGggPSBsaXN0X2xlbmd0aChyb290LT5qb2luX3JlbF9saXN0KTsKLQlzYXZlaGFz aCA9IHJvb3QtPmpvaW5fcmVsX2hhc2g7CisJc2F2ZWxlbmd0aCA9IGxpc3RfbGVuZ3RoKHJvb3Qt PmpvaW5fcmVsX2xpc3QtPml0ZW1zKTsKKwlzYXZlaGFzaCA9IHJvb3QtPmpvaW5fcmVsX2xpc3Qt Pmhhc2g7CiAJQXNzZXJ0KHJvb3QtPmpvaW5fcmVsX2xldmVsID09IE5VTEwpOwogCi0Jcm9vdC0+ am9pbl9yZWxfaGFzaCA9IE5VTEw7CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+aGFzaCA9IE5VTEw7 CiAKIAkvKiBjb25zdHJ1Y3QgdGhlIGJlc3QgcGF0aCBmb3IgdGhlIGdpdmVuIGNvbWJpbmF0aW9u IG9mIHJlbGF0aW9ucyAqLwogCWpvaW5yZWwgPSBnaW1tZV90cmVlKHJvb3QsIHRvdXIsIG51bV9n ZW5lKTsKQEAgLTEyMSw5ICsxMjEsOSBAQCBnZXFvX2V2YWwoUGxhbm5lckluZm8gKnJvb3QsIEdl bmUgKnRvdXIsIGludCBudW1fZ2VuZSkKIAkgKiBSZXN0b3JlIGpvaW5fcmVsX2xpc3QgdG8gaXRz IGZvcm1lciBzdGF0ZSwgYW5kIHB1dCBiYWNrIG9yaWdpbmFsCiAJICogaGFzaHRhYmxlIGlmIGFu eS4KIAkgKi8KLQlyb290LT5qb2luX3JlbF9saXN0ID0gbGlzdF90cnVuY2F0ZShyb290LT5qb2lu X3JlbF9saXN0LAotCQkJCQkJCQkJCXNhdmVsZW5ndGgpOwotCXJvb3QtPmpvaW5fcmVsX2hhc2gg PSBzYXZlaGFzaDsKKwlyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyA9IGxpc3RfdHJ1bmNhdGUo cm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMsCisJCQkJCQkJCQkJCSAgIHNhdmVsZW5ndGgpOwor CXJvb3QtPmpvaW5fcmVsX2xpc3QtPmhhc2ggPSBzYXZlaGFzaDsKIAogCS8qIHJlbGVhc2UgYWxs IHRoZSBtZW1vcnkgYWNxdWlyZWQgd2l0aGluIGdpbW1lX3RyZWUgKi8KIAlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3h0KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCmluZGV4 IDQ4OTVjZWU5OTQuLjcwZTJiNThkOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0 aHMuYwpAQCAtMzQwMyw5ICszNDAzLDEwIEBAIG1ha2VfcmVsX2Zyb21fam9pbmxpc3QoUGxhbm5l ckluZm8gKnJvb3QsIExpc3QgKmpvaW5saXN0KQogICogbmVlZGVkIGZvciB0aGVzZSBwYXRocyBu ZWVkIGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQuCiAgKgogICogTm90ZSB0byBwbHVnaW4gYXV0aG9y czogdGhlIGZ1bmN0aW9ucyBpbnZva2VkIGR1cmluZyBzdGFuZGFyZF9qb2luX3NlYXJjaCgpCi0g KiBtb2RpZnkgcm9vdC0+am9pbl9yZWxfbGlzdCBhbmQgcm9vdC0+am9pbl9yZWxfaGFzaC4gIElm IHlvdSB3YW50IHRvIGRvIG1vcmUKLSAqIHRoYW4gb25lIGpvaW4tb3JkZXIgc2VhcmNoLCB5b3Un bGwgcHJvYmFibHkgbmVlZCB0byBzYXZlIGFuZCByZXN0b3JlIHRoZQotICogb3JpZ2luYWwgc3Rh dGVzIG9mIHRob3NlIGRhdGEgc3RydWN0dXJlcy4gIFNlZSBnZXFvX2V2YWwoKSBmb3IgYW4gZXhh bXBsZS4KKyAqIG1vZGlmeSByb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyBhbmQgcm9vdC0+am9p bl9yZWxfbGlzdC0+aGFzaC4gIElmIHlvdQorICogd2FudCB0byBkbyBtb3JlIHRoYW4gb25lIGpv aW4tb3JkZXIgc2VhcmNoLCB5b3UnbGwgcHJvYmFibHkgbmVlZCB0byBzYXZlIGFuZAorICogcmVz dG9yZSB0aGUgb3JpZ2luYWwgc3RhdGVzIG9mIHRob3NlIGRhdGEgc3RydWN0dXJlcy4gIFNlZSBn ZXFvX2V2YWwoKSBmb3IKKyAqIGFuIGV4YW1wbGUuCiAgKi8KIFJlbE9wdEluZm8gKgogc3RhbmRh cmRfam9pbl9zZWFyY2goUGxhbm5lckluZm8gKnJvb3QsIGludCBsZXZlbHNfbmVlZGVkLCBMaXN0 ICppbml0aWFsX3JlbHMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubWFpbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYwppbmRleCBl MTdkMzFhNWMzLi5mZDhiMmIwY2EzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9wbGFubWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWlu LmMKQEAgLTY0LDggKzY0LDkgQEAgcXVlcnlfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwKIAkg KiBOT1RFOiBhcHBlbmRfcmVsX2xpc3Qgd2FzIHNldCB1cCBieSBzdWJxdWVyeV9wbGFubmVyLCBz byBkbyBub3QgdG91Y2gKIAkgKiBoZXJlLgogCSAqLwotCXJvb3QtPmpvaW5fcmVsX2xpc3QgPSBO SUw7Ci0Jcm9vdC0+am9pbl9yZWxfaGFzaCA9IE5VTEw7CisJcm9vdC0+am9pbl9yZWxfbGlzdCA9 IG1ha2VOb2RlKFJlbEluZm9MaXN0KTsKKwlyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyA9IE5J TDsKKwlyb290LT5qb2luX3JlbF9saXN0LT5oYXNoID0gTlVMTDsKIAlyb290LT5qb2luX3JlbF9s ZXZlbCA9IE5VTEw7CiAJcm9vdC0+am9pbl9jdXJfbGV2ZWwgPSAwOwogCXJvb3QtPmNhbm9uX3Bh dGhrZXlzID0gTklMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVs bm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IGUwNWIy MWM4ODQuLjgyNzlhYjBlMTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAg LTM1LDExICszNSwxNSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiAKLXR5cGVk ZWYgc3RydWN0IEpvaW5IYXNoRW50cnkKKy8qCisgKiBBbiBlbnRyeSBvZiBhIGhhc2ggdGFibGUg dGhhdCB3ZSB1c2UgdG8gbWFrZSBsb29rdXAgZm9yIFJlbE9wdEluZm8KKyAqIHN0cnVjdHVyZXMg bW9yZSBlZmZpY2llbnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IFJlbEluZm9FbnRyeQogewotCVJl bGlkcwkJam9pbl9yZWxpZHM7CS8qIGhhc2gga2V5IC0tLSBNVVNUIEJFIEZJUlNUICovCi0JUmVs T3B0SW5mbyAqam9pbl9yZWw7Ci19IEpvaW5IYXNoRW50cnk7CisJUmVsaWRzCQlyZWxpZHM7CQkJ LyogaGFzaCBrZXkgLS0tIE1VU1QgQkUgRklSU1QgKi8KKwlSZWxPcHRJbmZvICpyZWw7Cit9IFJl bEluZm9FbnRyeTsKIAogc3RhdGljIHZvaWQgYnVpbGRfam9pbnJlbF90bGlzdChQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJCQkJUmVsT3B0SW5mbyAqaW5wdXRf cmVsLApAQCAtNDc5LDExICs0ODMsMTEgQEAgZmluZF9iYXNlX3JlbF9pZ25vcmVfam9pbihQbGFu bmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKQogfQogCiAvKgotICogYnVpbGRfam9pbl9yZWxfaGFz aAotICoJICBDb25zdHJ1Y3QgdGhlIGF1eGlsaWFyeSBoYXNoIHRhYmxlIGZvciBqb2luIHJlbGF0 aW9ucy4KKyAqIGJ1aWxkX3JlbF9oYXNoCisgKgkgIENvbnN0cnVjdCB0aGUgYXV4aWxpYXJ5IGhh c2ggdGFibGUgZm9yIHJlbGF0aW9ucy4KICAqLwogc3RhdGljIHZvaWQKLWJ1aWxkX2pvaW5fcmVs X2hhc2goUGxhbm5lckluZm8gKnJvb3QpCitidWlsZF9yZWxfaGFzaChSZWxJbmZvTGlzdCAqbGlz dCkKIHsKIAlIVEFCCSAgICpoYXNodGFiOwogCUhBU0hDVEwJCWhhc2hfY3RsOwpAQCAtNDkxLDQ3 ICs0OTUsNDkgQEAgYnVpbGRfam9pbl9yZWxfaGFzaChQbGFubmVySW5mbyAqcm9vdCkKIAogCS8q IENyZWF0ZSB0aGUgaGFzaCB0YWJsZSAqLwogCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUmVs aWRzKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoSm9pbkhhc2hFbnRyeSk7CisJaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbEluZm9FbnRyeSk7CiAJaGFzaF9jdGwuaGFzaCA9 IGJpdG1hcF9oYXNoOwogCWhhc2hfY3RsLm1hdGNoID0gYml0bWFwX21hdGNoOwogCWhhc2hfY3Rs LmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQloYXNodGFiID0gaGFzaF9jcmVhdGUoIkpv aW5SZWxIYXNoVGFibGUiLAorCWhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiUmVsSGFzaFRhYmxlIiwK IAkJCQkJCSAgMjU2TCwKIAkJCQkJCSAgJmhhc2hfY3RsLAogCQkJCQkJICBIQVNIX0VMRU0gfCBI QVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKIAotCS8qIEluc2Vy dCBhbGwgdGhlIGFscmVhZHktZXhpc3Rpbmcgam9pbnJlbHMgKi8KLQlmb3JlYWNoKGwsIHJvb3Qt PmpvaW5fcmVsX2xpc3QpCisJLyogSW5zZXJ0IGFsbCB0aGUgYWxyZWFkeS1leGlzdGluZyByZWxh dGlvbnMgKi8KKwlmb3JlYWNoKGwsIGxpc3QtPml0ZW1zKQogCXsKIAkJUmVsT3B0SW5mbyAqcmVs ID0gKFJlbE9wdEluZm8gKikgbGZpcnN0KGwpOwotCQlKb2luSGFzaEVudHJ5ICpoZW50cnk7CisJ CVJlbEluZm9FbnRyeSAqaGVudHJ5OwogCQlib29sCQlmb3VuZDsKIAotCQloZW50cnkgPSAoSm9p bkhhc2hFbnRyeSAqKSBoYXNoX3NlYXJjaChoYXNodGFiLAotCQkJCQkJCQkJCQkgICAmKHJlbC0+ cmVsaWRzKSwKLQkJCQkJCQkJCQkJICAgSEFTSF9FTlRFUiwKLQkJCQkJCQkJCQkJICAgJmZvdW5k KTsKKwkJaGVudHJ5ID0gKFJlbEluZm9FbnRyeSAqKSBoYXNoX3NlYXJjaChoYXNodGFiLAorCQkJ CQkJCQkJCQkgICYocmVsLT5yZWxpZHMpLAorCQkJCQkJCQkJCQkgIEhBU0hfRU5URVIsCisJCQkJ CQkJCQkJCSAgJmZvdW5kKTsKIAkJQXNzZXJ0KCFmb3VuZCk7Ci0JCWhlbnRyeS0+am9pbl9yZWwg PSByZWw7CisJCWhlbnRyeS0+cmVsID0gcmVsOwogCX0KIAotCXJvb3QtPmpvaW5fcmVsX2hhc2gg PSBoYXNodGFiOworCWxpc3QtPmhhc2ggPSBoYXNodGFiOwogfQogCiAvKgotICogZmluZF9qb2lu X3JlbAotICoJICBSZXR1cm5zIHJlbGF0aW9uIGVudHJ5IGNvcnJlc3BvbmRpbmcgdG8gJ3JlbGlk cycgKGEgc2V0IG9mIFJUIGluZGV4ZXMpLAotICoJICBvciBOVUxMIGlmIG5vbmUgZXhpc3RzLiAg VGhpcyBpcyBmb3Igam9pbiByZWxhdGlvbnMuCisgKiBmaW5kX3JlbF9pbmZvCisgKgkgIEZpbmQg YW4gUmVsT3B0SW5mbyBlbnRyeS4KICAqLwotUmVsT3B0SW5mbyAqCi1maW5kX2pvaW5fcmVsKFBs YW5uZXJJbmZvICpyb290LCBSZWxpZHMgcmVsaWRzKQorc3RhdGljIFJlbE9wdEluZm8gKgorZmlu ZF9yZWxfaW5mbyhSZWxJbmZvTGlzdCAqbGlzdCwgUmVsaWRzIHJlbGlkcykKIHsKKwlpZiAobGlz dCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKwogCS8qCiAJICogU3dpdGNoIHRvIHVzaW5nIGhh c2ggbG9va3VwIHdoZW4gbGlzdCBncm93cyAidG9vIGxvbmciLiAgVGhlIHRocmVzaG9sZAogCSAq IGlzIGFyYml0cmFyeSBhbmQgaXMga25vd24gb25seSBoZXJlLgogCSAqLwotCWlmICghcm9vdC0+ am9pbl9yZWxfaGFzaCAmJiBsaXN0X2xlbmd0aChyb290LT5qb2luX3JlbF9saXN0KSA+IDMyKQot CQlidWlsZF9qb2luX3JlbF9oYXNoKHJvb3QpOworCWlmICghbGlzdC0+aGFzaCAmJiBsaXN0X2xl bmd0aChsaXN0LT5pdGVtcykgPiAzMikKKwkJYnVpbGRfcmVsX2hhc2gobGlzdCk7CiAKIAkvKgog CSAqIFVzZSBlaXRoZXIgaGFzaHRhYmxlIGxvb2t1cCBvciBsaW5lYXIgc2VhcmNoLCBhcyBhcHBy b3ByaWF0ZS4KQEAgLTU0MSwyMyArNTQ3LDIzIEBAIGZpbmRfam9pbl9yZWwoUGxhbm5lckluZm8g KnJvb3QsIFJlbGlkcyByZWxpZHMpCiAJICogc28gd291bGQgZm9yY2UgcmVsaWRzIG91dCBvZiBh IHJlZ2lzdGVyIGFuZCB0aHVzIHByb2JhYmx5IHNsb3cgZG93biB0aGUKIAkgKiBsaXN0LXNlYXJj aCBjYXNlLgogCSAqLwotCWlmIChyb290LT5qb2luX3JlbF9oYXNoKQorCWlmIChsaXN0LT5oYXNo KQogCXsKIAkJUmVsaWRzCQloYXNoa2V5ID0gcmVsaWRzOwotCQlKb2luSGFzaEVudHJ5ICpoZW50 cnk7CisJCVJlbEluZm9FbnRyeSAqaGVudHJ5OwogCi0JCWhlbnRyeSA9IChKb2luSGFzaEVudHJ5 ICopIGhhc2hfc2VhcmNoKHJvb3QtPmpvaW5fcmVsX2hhc2gsCi0JCQkJCQkJCQkJCSAgICZoYXNo a2V5LAotCQkJCQkJCQkJCQkgICBIQVNIX0ZJTkQsCi0JCQkJCQkJCQkJCSAgIE5VTEwpOworCQlo ZW50cnkgPSAoUmVsSW5mb0VudHJ5ICopIGhhc2hfc2VhcmNoKGxpc3QtPmhhc2gsCisJCQkJCQkJ CQkJCSAgJmhhc2hrZXksCisJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELAorCQkJCQkJCQkJCQkgIE5V TEwpOwogCQlpZiAoaGVudHJ5KQotCQkJcmV0dXJuIGhlbnRyeS0+am9pbl9yZWw7CisJCQlyZXR1 cm4gaGVudHJ5LT5yZWw7CiAJfQogCWVsc2UKIAl7CiAJCUxpc3RDZWxsICAgKmw7CiAKLQkJZm9y ZWFjaChsLCByb290LT5qb2luX3JlbF9saXN0KQorCQlmb3JlYWNoKGwsIGxpc3QtPml0ZW1zKQog CQl7CiAJCQlSZWxPcHRJbmZvICpyZWwgPSAoUmVsT3B0SW5mbyAqKSBsZmlyc3QobCk7CiAKQEAg LTU2OSw2ICs1NzUsNTQgQEAgZmluZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsaWRz IHJlbGlkcykKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIGZpbmRfam9pbl9yZWwKKyAqCSAg UmV0dXJucyByZWxhdGlvbiBlbnRyeSBjb3JyZXNwb25kaW5nIHRvICdyZWxpZHMnIChhIHNldCBv ZiBSVCBpbmRleGVzKSwKKyAqCSAgb3IgTlVMTCBpZiBub25lIGV4aXN0cy4gIFRoaXMgaXMgZm9y IGpvaW4gcmVsYXRpb25zLgorICovCitSZWxPcHRJbmZvICoKK2ZpbmRfam9pbl9yZWwoUGxhbm5l ckluZm8gKnJvb3QsIFJlbGlkcyByZWxpZHMpCit7CisJcmV0dXJuIGZpbmRfcmVsX2luZm8ocm9v dC0+am9pbl9yZWxfbGlzdCwgcmVsaWRzKTsKK30KKworLyoKKyAqIGFkZF9yZWxfaW5mbworICoJ CUFkZCBnaXZlbiByZWxhdGlvbiB0byB0aGUgZ2l2ZW4gbGlzdC4gQWxzbyBhZGQgaXQgdG8gdGhl IGF1eGlsaWFyeQorICoJCWhhc2h0YWJsZSBpZiB0aGVyZSBpcyBvbmUuCisgKi8KK3N0YXRpYyB2 b2lkCithZGRfcmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIFJlbE9wdEluZm8gKnJlbCkKK3sK KwkvKiBHRVFPIHJlcXVpcmVzIHVzIHRvIGFwcGVuZCB0aGUgbmV3IHJlbGF0aW9uIHRvIHRoZSBl bmQgb2YgdGhlIGxpc3QhICovCisJbGlzdC0+aXRlbXMgPSBsYXBwZW5kKGxpc3QtPml0ZW1zLCBy ZWwpOworCisJLyogc3RvcmUgaXQgaW50byB0aGUgYXV4aWxpYXJ5IGhhc2h0YWJsZSBpZiB0aGVy ZSBpcyBvbmUuICovCisJaWYgKGxpc3QtPmhhc2gpCisJeworCQlSZWxJbmZvRW50cnkgKmhlbnRy eTsKKwkJYm9vbAkJZm91bmQ7CisKKwkJaGVudHJ5ID0gKFJlbEluZm9FbnRyeSAqKSBoYXNoX3Nl YXJjaChsaXN0LT5oYXNoLAorCQkJCQkJCQkJCQkgICYocmVsLT5yZWxpZHMpLAorCQkJCQkJCQkJ CQkgIEhBU0hfRU5URVIsCisJCQkJCQkJCQkJCSAgJmZvdW5kKTsKKwkJQXNzZXJ0KCFmb3VuZCk7 CisJCWhlbnRyeS0+cmVsID0gcmVsOworCX0KK30KKworLyoKKyAqIGFkZF9qb2luX3JlbAorICoJ CUFkZCBnaXZlbiBqb2luIHJlbGF0aW9uIHRvIHRoZSBsaXN0IG9mIGpvaW4gcmVsYXRpb25zIGlu IHRoZSBnaXZlbgorICoJCVBsYW5uZXJJbmZvLgorICovCitzdGF0aWMgdm9pZAorYWRkX2pvaW5f cmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpqb2lucmVsKQoreworCWFkZF9yZWxf aW5mbyhyb290LT5qb2luX3JlbF9saXN0LCBqb2lucmVsKTsKK30KKwogLyoKICAqIHNldF9mb3Jl aWduX3JlbF9wcm9wZXJ0aWVzCiAgKgkJU2V0IHVwIGZvcmVpZ24tam9pbiBmaWVsZHMgaWYgb3V0 ZXIgYW5kIGlubmVyIHJlbGF0aW9uIGFyZSBmb3JlaWduCkBAIC02MTgsMzIgKzY3Miw2IEBAIHNl dF9mb3JlaWduX3JlbF9wcm9wZXJ0aWVzKFJlbE9wdEluZm8gKmpvaW5yZWwsIFJlbE9wdEluZm8g Km91dGVyX3JlbCwKIAl9CiB9CiAKLS8qCi0gKiBhZGRfam9pbl9yZWwKLSAqCQlBZGQgZ2l2ZW4g am9pbiByZWxhdGlvbiB0byB0aGUgbGlzdCBvZiBqb2luIHJlbGF0aW9ucyBpbiB0aGUgZ2l2ZW4K LSAqCQlQbGFubmVySW5mby4gQWxzbyBhZGQgaXQgdG8gdGhlIGF1eGlsaWFyeSBoYXNodGFibGUg aWYgdGhlcmUgaXMgb25lLgotICovCi1zdGF0aWMgdm9pZAotYWRkX2pvaW5fcmVsKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpqb2lucmVsKQotewotCS8qIEdFUU8gcmVxdWlyZXMgdXMg dG8gYXBwZW5kIHRoZSBuZXcgam9pbnJlbCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0ISAqLwotCXJv b3QtPmpvaW5fcmVsX2xpc3QgPSBsYXBwZW5kKHJvb3QtPmpvaW5fcmVsX2xpc3QsIGpvaW5yZWwp OwotCi0JLyogc3RvcmUgaXQgaW50byB0aGUgYXV4aWxpYXJ5IGhhc2h0YWJsZSBpZiB0aGVyZSBp cyBvbmUuICovCi0JaWYgKHJvb3QtPmpvaW5fcmVsX2hhc2gpCi0JewotCQlKb2luSGFzaEVudHJ5 ICpoZW50cnk7Ci0JCWJvb2wJCWZvdW5kOwotCi0JCWhlbnRyeSA9IChKb2luSGFzaEVudHJ5ICop IGhhc2hfc2VhcmNoKHJvb3QtPmpvaW5fcmVsX2hhc2gsCi0JCQkJCQkJCQkJCSAgICYoam9pbnJl bC0+cmVsaWRzKSwKLQkJCQkJCQkJCQkJICAgSEFTSF9FTlRFUiwKLQkJCQkJCQkJCQkJICAgJmZv dW5kKTsKLQkJQXNzZXJ0KCFmb3VuZCk7Ci0JCWhlbnRyeS0+am9pbl9yZWwgPSBqb2lucmVsOwot CX0KLX0KLQogLyoKICAqIGJ1aWxkX2pvaW5fcmVsCiAgKgkgIFJldHVybnMgcmVsYXRpb24gZW50 cnkgY29ycmVzcG9uZGluZyB0byB0aGUgdW5pb24gb2YgdHdvIGdpdmVuIHJlbHMsCkBAIC0xNDY5 LDIyICsxNDk3LDE0IEBAIHN1YmJ1aWxkX2pvaW5yZWxfam9pbmxpc3QoUmVsT3B0SW5mbyAqam9p bnJlbCwKIFJlbE9wdEluZm8gKgogZmV0Y2hfdXBwZXJfcmVsKFBsYW5uZXJJbmZvICpyb290LCBV cHBlclJlbGF0aW9uS2luZCBraW5kLCBSZWxpZHMgcmVsaWRzKQogeworCVJlbEluZm9MaXN0ICps aXN0ID0gJnJvb3QtPnVwcGVyX3JlbHNba2luZF07CiAJUmVsT3B0SW5mbyAqdXBwZXJyZWw7Ci0J TGlzdENlbGwgICAqbGM7Ci0KLQkvKgotCSAqIEZvciB0aGUgbW9tZW50LCBvdXIgaW5kZXhpbmcg ZGF0YSBzdHJ1Y3R1cmUgaXMganVzdCBhIExpc3QgZm9yIGVhY2gKLQkgKiByZWxhdGlvbiBraW5k LiAgSWYgd2UgZXZlciBnZXQgc28gbWFueSBvZiBvbmUga2luZCB0aGF0IHRoaXMgc3RvcHMKLQkg KiB3b3JraW5nIHdlbGwsIHdlIGNhbiBpbXByb3ZlIGl0LiAgTm8gY29kZSBvdXRzaWRlIHRoaXMg ZnVuY3Rpb24gc2hvdWxkCi0JICogYXNzdW1lIGFueXRoaW5nIGFib3V0IGhvdyB0byBmaW5kIGEg cGFydGljdWxhciB1cHBlcnJlbC4KLQkgKi8KIAogCS8qIElmIHdlIGFscmVhZHkgbWFkZSB0aGlz IHVwcGVycmVsIGZvciB0aGUgcXVlcnksIHJldHVybiBpdCAqLwotCWZvcmVhY2gobGMsIHJvb3Qt PnVwcGVyX3JlbHNba2luZF0pCisJaWYgKGxpc3QpCiAJewotCQl1cHBlcnJlbCA9IChSZWxPcHRJ bmZvICopIGxmaXJzdChsYyk7Ci0KLQkJaWYgKGJtc19lcXVhbCh1cHBlcnJlbC0+cmVsaWRzLCBy ZWxpZHMpKQorCQl1cHBlcnJlbCA9IGZpbmRfcmVsX2luZm8obGlzdCwgcmVsaWRzKTsKKwkJaWYg KHVwcGVycmVsKQogCQkJcmV0dXJuIHVwcGVycmVsOwogCX0KIApAQCAtMTUwMyw3ICsxNTIzLDcg QEAgZmV0Y2hfdXBwZXJfcmVsKFBsYW5uZXJJbmZvICpyb290LCBVcHBlclJlbGF0aW9uS2luZCBr aW5kLCBSZWxpZHMgcmVsaWRzKQogCXVwcGVycmVsLT5jaGVhcGVzdF91bmlxdWVfcGF0aCA9IE5V TEw7CiAJdXBwZXJyZWwtPmNoZWFwZXN0X3BhcmFtZXRlcml6ZWRfcGF0aHMgPSBOSUw7CiAKLQly b290LT51cHBlcl9yZWxzW2tpbmRdID0gbGFwcGVuZChyb290LT51cHBlcl9yZWxzW2tpbmRdLCB1 cHBlcnJlbCk7CisJYWRkX3JlbF9pbmZvKCZyb290LT51cHBlcl9yZWxzW2tpbmRdLCB1cHBlcnJl bCk7CiAKIAlyZXR1cm4gdXBwZXJyZWw7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDJiYTI5 N2MxMTcuLjA4MDVkZTY0ZDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC04MCw2ICs4MCwyNSBA QCB0eXBlZGVmIGVudW0gVXBwZXJSZWxhdGlvbktpbmQKIAkvKiBOQjogVVBQRVJSRUxfRklOQUwg bXVzdCBiZSBsYXN0IGVudW0gZW50cnk7IGl0J3MgdXNlZCB0byBzaXplIGFycmF5cyAqLwogfSBV cHBlclJlbGF0aW9uS2luZDsKIAorLyoKKyAqIEhhc2hlZCBsaXN0IHRvIHN0b3JlIHJlbGF0aW9u IHNwZWNpZmljIGluZm8gYW5kIHRvIHJldHJpZXZlIGl0IGJ5IHJlbGlkcy4KKyAqCisgKiBGb3Ig c21hbGwgcHJvYmxlbXMgd2UganVzdCBzY2FuIHRoZSBsaXN0IHRvIGRvIGxvb2t1cHMsIGJ1dCB3 aGVuIHRoZXJlIGFyZQorICogbWFueSByZWxhdGlvbnMgd2UgYnVpbGQgYSBoYXNoIHRhYmxlIGZv ciBmYXN0ZXIgbG9va3Vwcy4gIFRoZSBoYXNoIHRhYmxlIGlzCisgKiBwcmVzZW50IGFuZCB2YWxp ZCB3aGVuICdoYXNoJyBpcyBub3QgTlVMTC4gIE5vdGUgdGhhdCB3ZSBzdGlsbCBtYWludGFpbiB0 aGUKKyAqIGxpc3QgZXZlbiB3aGVuIHVzaW5nIHRoZSBoYXNoIHRhYmxlIGZvciBsb29rdXBzOyB0 aGlzIHNpbXBsaWZpZXMgbGlmZSBmb3IKKyAqIEdFUU8uCisgKi8KK3R5cGVkZWYgc3RydWN0IFJl bEluZm9MaXN0Cit7CisJcGdfbm9kZV9hdHRyKG5vX2NvcHlfZXF1YWwsIG5vX3JlYWQpCisKKwlO b2RlVGFnCQl0eXBlOworCisJTGlzdAkgICAqaXRlbXM7CisJc3RydWN0IEhUQUIgKmhhc2ggcGdf bm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlKTsKK30gUmVsSW5mb0xpc3Q7CisKIC8qLS0tLS0t LS0tLQogICogUGxhbm5lckdsb2JhbAogICoJCUdsb2JhbCBpbmZvcm1hdGlvbiBmb3IgcGxhbm5p bmcvb3B0aW1pemF0aW9uCkBAIC0yNzAsMTUgKzI4OSw5IEBAIHN0cnVjdCBQbGFubmVySW5mbwog CiAJLyoKIAkgKiBqb2luX3JlbF9saXN0IGlzIGEgbGlzdCBvZiBhbGwgam9pbi1yZWxhdGlvbiBS ZWxPcHRJbmZvcyB3ZSBoYXZlCi0JICogY29uc2lkZXJlZCBpbiB0aGlzIHBsYW5uaW5nIHJ1bi4g IEZvciBzbWFsbCBwcm9ibGVtcyB3ZSBqdXN0IHNjYW4gdGhlCi0JICogbGlzdCB0byBkbyBsb29r dXBzLCBidXQgd2hlbiB0aGVyZSBhcmUgbWFueSBqb2luIHJlbGF0aW9ucyB3ZSBidWlsZCBhCi0J ICogaGFzaCB0YWJsZSBmb3IgZmFzdGVyIGxvb2t1cHMuICBUaGUgaGFzaCB0YWJsZSBpcyBwcmVz ZW50IGFuZCB2YWxpZAotCSAqIHdoZW4gam9pbl9yZWxfaGFzaCBpcyBub3QgTlVMTC4gIE5vdGUg dGhhdCB3ZSBzdGlsbCBtYWludGFpbiB0aGUgbGlzdAotCSAqIGV2ZW4gd2hlbiB1c2luZyB0aGUg aGFzaCB0YWJsZSBmb3IgbG9va3VwczsgdGhpcyBzaW1wbGlmaWVzIGxpZmUgZm9yCi0JICogR0VR Ty4KKwkgKiBjb25zaWRlcmVkIGluIHRoaXMgcGxhbm5pbmcgcnVuLgogCSAqLwotCUxpc3QJICAg KmpvaW5fcmVsX2xpc3Q7Ci0Jc3RydWN0IEhUQUIgKmpvaW5fcmVsX2hhc2ggcGdfbm9kZV9hdHRy KHJlYWRfd3JpdGVfaWdub3JlKTsKKwlSZWxJbmZvTGlzdCAqam9pbl9yZWxfbGlzdDsJLyogbGlz dCBvZiBqb2luLXJlbGF0aW9uIFJlbE9wdEluZm9zICovCiAKIAkvKgogCSAqIFdoZW4gZG9pbmcg YSBkeW5hbWljLXByb2dyYW1taW5nLXN0eWxlIGpvaW4gc2VhcmNoLCBqb2luX3JlbF9sZXZlbFtr XQpAQCAtNDEzLDcgKzQyNiw3IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCSAqIFVwcGVyLXJlbCBS ZWxPcHRJbmZvcy4gVXNlIGZldGNoX3VwcGVyX3JlbCgpIHRvIGdldCBhbnkgcGFydGljdWxhcgog CSAqIHVwcGVyIHJlbC4KIAkgKi8KLQlMaXN0CSAgICp1cHBlcl9yZWxzW1VQUEVSUkVMX0ZJTkFM ICsgMV0gcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlKTsKKwlSZWxJbmZvTGlzdAkJdXBw ZXJfcmVsc1tVUFBFUlJFTF9GSU5BTCArIDFdIHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9y ZSk7CiAKIAkvKiBSZXN1bHQgdGxpc3RzIGNob3NlbiBieSBncm91cGluZ19wbGFubmVyIGZvciB1 cHBlci1zdGFnZSBwcm9jZXNzaW5nICovCiAJc3RydWN0IFBhdGhUYXJnZXQgKnVwcGVyX3Rhcmdl dHNbVVBQRVJSRUxfRklOQUwgKyAxXSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOwot LSAKMi40My4wCgo= --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0002-Introduce-RelAggInfo-structure-to-store-info-for-grouped-paths.patch" Content-Disposition: attachment; filename="v9-0002-Introduce-RelAggInfo-structure-to-store-info-for-grouped-paths.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5krwld1 RnJvbSAwNmUyOWEyMjA2ODE3YTgxMGJhYTRmOTE1NWYyZDA3MzI4ODVhMGY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNjowMToyNiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDIvMTBdIEludHJvZHVjZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZSB0byBzdG9yZSBpbmZvIGZvcgog Z3JvdXBlZCBwYXRocwoKVGhpcyBjb21taXQgaW50cm9kdWNlcyBSZWxBZ2dJbmZvIHN0cnVjdHVy ZSB0byBzdG9yZSBpbmZvcm1hdGlvbiBuZWVkZWQKdG8gY3JlYXRlIGdyb3VwZWQgcGF0aHMgZm9y IGJhc2UgYW5kIGpvaW4gcmVscy4gIEl0IGFsc28gcmV2aXNlcyB0aGUKUmVsSW5mb0xpc3QgcmVs YXRlZCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkCndp dGggUmVsQWdnSW5mb3MuCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5j IHwgNjYgKysrKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5v ZGVzLmggICAgICAgIHwgNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBj aGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IDgyNzlhYjBlMTEuLjg0MjBiODkzNmUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTM2LDEzICszNiwxMyBAQAogCiAKIC8qCi0g KiBBbiBlbnRyeSBvZiBhIGhhc2ggdGFibGUgdGhhdCB3ZSB1c2UgdG8gbWFrZSBsb29rdXAgZm9y IFJlbE9wdEluZm8KLSAqIHN0cnVjdHVyZXMgbW9yZSBlZmZpY2llbnQuCisgKiBBbiBlbnRyeSBv ZiBhIGhhc2ggdGFibGUgdGhhdCB3ZSB1c2UgdG8gbWFrZSBsb29rdXAgZm9yIFJlbE9wdEluZm8g b3IKKyAqIFJlbEFnZ0luZm8gc3RydWN0dXJlcyBtb3JlIGVmZmljaWVudC4KICAqLwogdHlwZWRl ZiBzdHJ1Y3QgUmVsSW5mb0VudHJ5CiB7CiAJUmVsaWRzCQlyZWxpZHM7CQkJLyogaGFzaCBrZXkg LS0tIE1VU1QgQkUgRklSU1QgKi8KLQlSZWxPcHRJbmZvICpyZWw7CisJdm9pZAkgICAqZGF0YTsK IH0gUmVsSW5mb0VudHJ5OwogCiBzdGF0aWMgdm9pZCBidWlsZF9qb2lucmVsX3RsaXN0KFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpqb2lucmVsLApAQCAtNDg0LDcgKzQ4NCw3IEBAIGZp bmRfYmFzZV9yZWxfaWdub3JlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCkKIAog LyoKICAqIGJ1aWxkX3JlbF9oYXNoCi0gKgkgIENvbnN0cnVjdCB0aGUgYXV4aWxpYXJ5IGhhc2gg dGFibGUgZm9yIHJlbGF0aW9ucy4KKyAqCSAgQ29uc3RydWN0IHRoZSBhdXhpbGlhcnkgaGFzaCB0 YWJsZSBmb3IgcmVsYXRpb24gc3BlY2lmaWMgZGF0YS4KICAqLwogc3RhdGljIHZvaWQKIGJ1aWxk X3JlbF9oYXNoKFJlbEluZm9MaXN0ICpsaXN0KQpAQCAtNTA0LDE5ICs1MDQsMjcgQEAgYnVpbGRf cmVsX2hhc2goUmVsSW5mb0xpc3QgKmxpc3QpCiAJCQkJCQkgICZoYXNoX2N0bCwKIAkJCQkJCSAg SEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7 CiAKLQkvKiBJbnNlcnQgYWxsIHRoZSBhbHJlYWR5LWV4aXN0aW5nIHJlbGF0aW9ucyAqLworCS8q IEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3RpbmcgcmVsYXRpb24gc3BlY2lmaWMgaW5mb3Mg Ki8KIAlmb3JlYWNoKGwsIGxpc3QtPml0ZW1zKQogCXsKLQkJUmVsT3B0SW5mbyAqcmVsID0gKFJl bE9wdEluZm8gKikgbGZpcnN0KGwpOworCQl2b2lkCSAgICppdGVtID0gbGZpcnN0KGwpOwogCQlS ZWxJbmZvRW50cnkgKmhlbnRyeTsKIAkJYm9vbAkJZm91bmQ7CisJCVJlbGlkcwkJcmVsaWRzOwor CisJCUFzc2VydChJc0EoaXRlbSwgUmVsT3B0SW5mbykgfHwgSXNBKGl0ZW0sIFJlbEFnZ0luZm8p KTsKKworCQlpZiAoSXNBKGl0ZW0sIFJlbE9wdEluZm8pKQorCQkJcmVsaWRzID0gKChSZWxPcHRJ bmZvICopIGl0ZW0pLT5yZWxpZHM7CisJCWVsc2UKKwkJCXJlbGlkcyA9ICgoUmVsQWdnSW5mbyAq KSBpdGVtKS0+cmVsaWRzOwogCiAJCWhlbnRyeSA9IChSZWxJbmZvRW50cnkgKikgaGFzaF9zZWFy Y2goaGFzaHRhYiwKLQkJCQkJCQkJCQkJICAmKHJlbC0+cmVsaWRzKSwKKwkJCQkJCQkJCQkJICAm cmVsaWRzLAogCQkJCQkJCQkJCQkgIEhBU0hfRU5URVIsCiAJCQkJCQkJCQkJCSAgJmZvdW5kKTsK IAkJQXNzZXJ0KCFmb3VuZCk7Ci0JCWhlbnRyeS0+cmVsID0gcmVsOworCQloZW50cnktPmRhdGEg PSBpdGVtOwogCX0KIAogCWxpc3QtPmhhc2ggPSBoYXNodGFiOwpAQCAtNTI0LDkgKzUzMiw5IEBA IGJ1aWxkX3JlbF9oYXNoKFJlbEluZm9MaXN0ICpsaXN0KQogCiAvKgogICogZmluZF9yZWxfaW5m bwotICoJICBGaW5kIGFuIFJlbE9wdEluZm8gZW50cnkuCisgKgkgIEZpbmQgYW4gUmVsT3B0SW5m byBvciBhIFJlbEFnZ0luZm8gZW50cnkuCiAgKi8KLXN0YXRpYyBSZWxPcHRJbmZvICoKK3N0YXRp YyB2b2lkICoKIGZpbmRfcmVsX2luZm8oUmVsSW5mb0xpc3QgKmxpc3QsIFJlbGlkcyByZWxpZHMp CiB7CiAJaWYgKGxpc3QgPT0gTlVMTCkKQEAgLTU1Nyw3ICs1NjUsNyBAQCBmaW5kX3JlbF9pbmZv KFJlbEluZm9MaXN0ICpsaXN0LCBSZWxpZHMgcmVsaWRzKQogCQkJCQkJCQkJCQkgIEhBU0hfRklO RCwKIAkJCQkJCQkJCQkJICBOVUxMKTsKIAkJaWYgKGhlbnRyeSkKLQkJCXJldHVybiBoZW50cnkt PnJlbDsKKwkJCXJldHVybiBoZW50cnktPmRhdGE7CiAJfQogCWVsc2UKIAl7CkBAIC01NjUsMTAg KzU3MywxOCBAQCBmaW5kX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCBSZWxpZHMgcmVsaWRz KQogCiAJCWZvcmVhY2gobCwgbGlzdC0+aXRlbXMpCiAJCXsKLQkJCVJlbE9wdEluZm8gKnJlbCA9 IChSZWxPcHRJbmZvICopIGxmaXJzdChsKTsKKwkJCXZvaWQJICAgKml0ZW0gPSBsZmlyc3QobCk7 CisJCQlSZWxpZHMJCWl0ZW1fcmVsaWRzID0gTlVMTDsKKworCQkJQXNzZXJ0KElzQShpdGVtLCBS ZWxPcHRJbmZvKSB8fCBJc0EoaXRlbSwgUmVsQWdnSW5mbykpOwogCi0JCQlpZiAoYm1zX2VxdWFs KHJlbC0+cmVsaWRzLCByZWxpZHMpKQotCQkJCXJldHVybiByZWw7CisJCQlpZiAoSXNBKGl0ZW0s IFJlbE9wdEluZm8pKQorCQkJCWl0ZW1fcmVsaWRzID0gKChSZWxPcHRJbmZvICopIGl0ZW0pLT5y ZWxpZHM7CisJCQllbHNlIGlmIChJc0EoaXRlbSwgUmVsQWdnSW5mbykpCisJCQkJaXRlbV9yZWxp ZHMgPSAoKFJlbEFnZ0luZm8gKikgaXRlbSktPnJlbGlkczsKKworCQkJaWYgKGJtc19lcXVhbChp dGVtX3JlbGlkcywgcmVsaWRzKSkKKwkJCQlyZXR1cm4gaXRlbTsKIAkJfQogCX0KIApAQCAtNTgz LDMyICs1OTksNDAgQEAgZmluZF9yZWxfaW5mbyhSZWxJbmZvTGlzdCAqbGlzdCwgUmVsaWRzIHJl bGlkcykKIFJlbE9wdEluZm8gKgogZmluZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVs aWRzIHJlbGlkcykKIHsKLQlyZXR1cm4gZmluZF9yZWxfaW5mbyhyb290LT5qb2luX3JlbF9saXN0 LCByZWxpZHMpOworCXJldHVybiAoUmVsT3B0SW5mbyAqKSBmaW5kX3JlbF9pbmZvKHJvb3QtPmpv aW5fcmVsX2xpc3QsIHJlbGlkcyk7CiB9CiAKIC8qCiAgKiBhZGRfcmVsX2luZm8KLSAqCQlBZGQg Z2l2ZW4gcmVsYXRpb24gdG8gdGhlIGdpdmVuIGxpc3QuIEFsc28gYWRkIGl0IHRvIHRoZSBhdXhp bGlhcnkKKyAqCQlBZGQgcmVsYXRpb24gc3BlY2lmaWMgaW5mbyB0byBhIGxpc3QsIGFuZCBhbHNv IGFkZCBpdCB0byB0aGUgYXV4aWxpYXJ5CiAgKgkJaGFzaHRhYmxlIGlmIHRoZXJlIGlzIG9uZS4K ICAqLwogc3RhdGljIHZvaWQKLWFkZF9yZWxfaW5mbyhSZWxJbmZvTGlzdCAqbGlzdCwgUmVsT3B0 SW5mbyAqcmVsKQorYWRkX3JlbF9pbmZvKFJlbEluZm9MaXN0ICpsaXN0LCB2b2lkICpkYXRhKQog eworCUFzc2VydChJc0EoZGF0YSwgUmVsT3B0SW5mbykgfHwgSXNBKGRhdGEsIFJlbEFnZ0luZm8p KTsKKwogCS8qIEdFUU8gcmVxdWlyZXMgdXMgdG8gYXBwZW5kIHRoZSBuZXcgcmVsYXRpb24gdG8g dGhlIGVuZCBvZiB0aGUgbGlzdCEgKi8KLQlsaXN0LT5pdGVtcyA9IGxhcHBlbmQobGlzdC0+aXRl bXMsIHJlbCk7CisJbGlzdC0+aXRlbXMgPSBsYXBwZW5kKGxpc3QtPml0ZW1zLCBkYXRhKTsKIAog CS8qIHN0b3JlIGl0IGludG8gdGhlIGF1eGlsaWFyeSBoYXNodGFibGUgaWYgdGhlcmUgaXMgb25l LiAqLwogCWlmIChsaXN0LT5oYXNoKQogCXsKKwkJUmVsaWRzCQlyZWxpZHM7CiAJCVJlbEluZm9F bnRyeSAqaGVudHJ5OwogCQlib29sCQlmb3VuZDsKIAorCQlpZiAoSXNBKGRhdGEsIFJlbE9wdElu Zm8pKQorCQkJcmVsaWRzID0gKChSZWxPcHRJbmZvICopIGRhdGEpLT5yZWxpZHM7CisJCWVsc2UK KwkJCXJlbGlkcyA9ICgoUmVsQWdnSW5mbyAqKSBkYXRhKS0+cmVsaWRzOworCiAJCWhlbnRyeSA9 IChSZWxJbmZvRW50cnkgKikgaGFzaF9zZWFyY2gobGlzdC0+aGFzaCwKLQkJCQkJCQkJCQkJICAm KHJlbC0+cmVsaWRzKSwKKwkJCQkJCQkJCQkJICAmcmVsaWRzLAogCQkJCQkJCQkJCQkgIEhBU0hf RU5URVIsCiAJCQkJCQkJCQkJCSAgJmZvdW5kKTsKIAkJQXNzZXJ0KCFmb3VuZCk7Ci0JCWhlbnRy eS0+cmVsID0gcmVsOworCQloZW50cnktPmRhdGEgPSBkYXRhOwogCX0KIH0KIApAQCAtMTUwMyw3 ICsxNTI3LDcgQEAgZmV0Y2hfdXBwZXJfcmVsKFBsYW5uZXJJbmZvICpyb290LCBVcHBlclJlbGF0 aW9uS2luZCBraW5kLCBSZWxpZHMgcmVsaWRzKQogCS8qIElmIHdlIGFscmVhZHkgbWFkZSB0aGlz IHVwcGVycmVsIGZvciB0aGUgcXVlcnksIHJldHVybiBpdCAqLwogCWlmIChsaXN0KQogCXsKLQkJ dXBwZXJyZWwgPSBmaW5kX3JlbF9pbmZvKGxpc3QsIHJlbGlkcyk7CisJCXVwcGVycmVsID0gKFJl bE9wdEluZm8gKikgZmluZF9yZWxfaW5mbyhsaXN0LCByZWxpZHMpOwogCQlpZiAodXBwZXJyZWwp CiAJCQlyZXR1cm4gdXBwZXJyZWw7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCAwODA1ZGU2 NGQ1Li4xOGQxYWU4Y2JjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTA3OCw2ICsxMDc4LDc5 IEBAIHR5cGVkZWYgc3RydWN0IFJlbE9wdEluZm8KIAkoKHJlbCktPnBhcnRfc2NoZW1lICYmIChy ZWwpLT5ib3VuZGluZm8gJiYgKHJlbCktPm5wYXJ0cyA+IDAgJiYgXAogCSAocmVsKS0+cGFydF9y ZWxzICYmIChyZWwpLT5wYXJ0ZXhwcnMgJiYgKHJlbCktPm51bGxhYmxlX3BhcnRleHBycykKIAor LyoKKyAqIFJlbEFnZ0luZm8KKyAqCQlJbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGdyb3Vw ZWQgcGF0aHMgZm9yIGJhc2UgYW5kIGpvaW4gcmVscy4KKyAqCisgKiAicmVsaWRzIiBpcyB0aGUg c2V0IG9mIHJlbGF0aW9uIGlkZW50aWZpZXJzIChSVCBpbmRleGVzKSwganVzdCBsaWtlIHdpdGgK KyAqIFJlbE9wdEluZm8uCisgKgorICogInRhcmdldCIgd2lsbCBiZSB1c2VkIGFzIHBhdGh0YXJn ZXQgaWYgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVkIHRvCisgKiBiYXNlIHJlbGF0aW9u IG9yIGpvaW4uIFRoZSBzYW1lIHRhcmdldCB3aWxsIGFsc28gLS0tIGlmIHRoZSByZWxhdGlvbiBp cyBhCisgKiBqb2luIC0tLSBiZSB1c2VkIHRvIGpvaW4gZ3JvdXBlZCBwYXRoIHRvIGEgbm9uLWdy b3VwZWQgb25lLiAgVGhpcyB0YXJnZXQgY2FuCisgKiBjb250YWluIHBsYWluLVZhciBncm91cGlu ZyBleHByZXNzaW9ucyBhbmQgQWdncmVmIG5vZGVzLgorICoKKyAqIE5vdGU6IFRoZXJlJ3MgYSBj b252ZW50aW9uIHRoYXQgQWdncmVmIGV4cHJlc3Npb25zIGFyZSBzdXBwb3NlZCB0byBmb2xsb3cK KyAqIHRoZSBvdGhlciBleHByZXNzaW9ucyBvZiB0aGUgdGFyZ2V0LiBJdGVyYXRpb25zIG9mIC0+ ZXhwcnMgbWF5IHJlbHkgb24gdGhpcworICogYXJyYW5nZW1lbnQuCisgKgorICogImFnZ19pbnB1 dCIgY29udGFpbnMgVmFycyB1c2VkIGVpdGhlciBhcyBncm91cGluZyBleHByZXNzaW9ucyBvciBh Z2dyZWdhdGUKKyAqIGFyZ3VtZW50cy4gUGF0aHMgcHJvdmlkaW5nIHRoZSBhZ2dyZWdhdGlvbiBw bGFuIHdpdGggaW5wdXQgZGF0YSBzaG91bGQgdXNlCisgKiB0aGlzIHRhcmdldC4gVGhlIG9ubHkg ZGlmZmVyZW5jZSBmcm9tIHJlbHRhcmdldCBvZiB0aGUgbm9uLWdyb3VwZWQgcmVsYXRpb24KKyAq IGlzIHRoYXQgc29tZSBpdGVtcyBjYW4gaGF2ZSBzb3J0Z3JvdXByZWYgaW5pdGlhbGl6ZWQuCisg KgorICogImlucHV0X3Jvd3MiIGlzIHRoZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIGlucHV0IHJvd3Mg Zm9yIEFnZ1BhdGguIEl0J3MKKyAqIGFjdHVhbGx5IGp1c3QgYSB3b3Jrc3BhY2UgZm9yIHVzZXJz IG9mIHRoZSBzdHJ1Y3R1cmUsIGkuZS4gbm90IGluaXRpYWxpemVkCisgKiB3aGVuIGluc3RhbmNl IG9mIHRoZSBzdHJ1Y3R1cmUgaXMgY3JlYXRlZC4KKyAqCisgKiAiZ3JvdXBlZF9yb3dzIiBpcyB0 aGUgZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgcm93cyBvZiB0aGUgQWdnUGF0aC4KKyAqCisg KiAiZ3JvdXBfY2xhdXNlcyIsICJncm91cF9leHBycyIgYW5kICJncm91cF9wYXRoa2V5cyIgYXJl IGxpc3RzIG9mCisgKiBTb3J0R3JvdXBDbGF1c2UsIHRoZSBjb3JyZXNwb25kaW5nIGdyb3VwaW5n IGV4cHJlc3Npb25zIGFuZCBQYXRoS2V5CisgKiByZXNwZWN0aXZlbHkuCisgKgorICogImFnZ19l eHBycyIgaXMgYSBsaXN0IG9mIEFnZ3JlZiBub2RlcyBmb3IgdGhlIGFnZ3JlZ2F0aW9uIG9mIHRo ZSByZWxhdGlvbidzCisgKiBwYXRocy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUmVsQWdnSW5mbwor eworCXBnX25vZGVfYXR0cihub19jb3B5X2VxdWFsLCBub19yZWFkLCBub19xdWVyeV9qdW1ibGUp CisKKwlOb2RlVGFnCQl0eXBlOworCisJLyoKKwkgKiB0aGUgc2FtZSBhcyBpbiBSZWxPcHRJbmZv OyBzZXQgb2YgYmFzZSArIE9KIHJlbGlkcyAocmFuZ2V0YWJsZSBpbmRleGVzKQorCSAqLworCVJl bGlkcwkJcmVsaWRzOworCisJLyoKKwkgKiB0aGUgdGFyZ2V0bGlzdCBmb3IgUGF0aHMgc2Nhbm5p bmcgdGhpcyBncm91cGVkIHJlbDsgbGlzdCBvZiBWYXJzL0V4cHJzLAorCSAqIGNvc3QsIHdpZHRo CisJICovCisJc3RydWN0IFBhdGhUYXJnZXQgKnRhcmdldDsKKworCS8qCisJICogdGhlIHRhcmdl dGxpc3QgZm9yIFBhdGhzIHRoYXQgZ2VuZXJhdGUgaW5wdXQgZm9yIHRoZSBncm91cGVkIHBhdGhz CisJICovCisJc3RydWN0IFBhdGhUYXJnZXQgKmFnZ19pbnB1dDsKKworCS8qIGVzdGltYXRlZCBu dW1iZXIgb2YgaW5wdXQgdHVwbGVzIGZvciB0aGUgZ3JvdXBlZCBwYXRocyAqLworCUNhcmRpbmFs aXR5CQlpbnB1dF9yb3dzOworCisJLyogZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVz IG9mIHRoZSBncm91cGVkIHJlbGF0aW9uKi8KKwlDYXJkaW5hbGl0eQkJZ3JvdXBlZF9yb3dzOwor CisJLyogYSBsaXN0IG9mIFNvcnRHcm91cENsYXVzZSdzICovCisJTGlzdAkgICAqZ3JvdXBfY2xh dXNlczsKKwkvKiBhIGxpc3Qgb2YgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpn cm91cF9leHByczsKKwkvKiBhIGxpc3Qgb2YgUGF0aEtleXMgKi8KKwlMaXN0CSAgICpncm91cF9w YXRoa2V5czsKKworCS8qIGEgbGlzdCBvZiBBZ2dyZWYgbm9kZXMgKi8KKwlMaXN0CSAgICphZ2df ZXhwcnM7Cit9IFJlbEFnZ0luZm87CisKIC8qCiAgKiBJbmRleE9wdEluZm8KICAqCQlQZXItaW5k ZXggaW5mb3JtYXRpb24gZm9yIHBsYW5uaW5nL29wdGltaXphdGlvbgotLSAKMi40My4wCgo= --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0003-Set-up-for-eager-aggregation-by-collecting-needed-infos.patch" Content-Disposition: attachment; filename="v9-0003-Set-up-for-eager-aggregation-by-collecting-needed-infos.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5ks3sm2 RnJvbSA1ZmMwNTM4OWJhNTIxYzNlZTczZWRkYTc3MGZhYjM5NzU2ZjI5OGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNjowMzowMCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDMvMTBdIFNldCB1cCBmb3IgZWFnZXIgYWdncmVnYXRpb24gYnkgY29sbGVjdGluZyBuZWVkZWQK IGluZm9zCgpUaGlzIGNvbW1pdCBjaGVja3MgaWYgZWFnZXIgYWdncmVnYXRpb24gaXMgYXBwbGlj YWJsZSwgYW5kIGlmIHNvLCBzZXRzCnVwIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCBhbmQgcm9vdC0+ Z3JvdXBfZXhwcl9saXN0IGJ5IGNvbGxlY3RpbmcKc3VpdGFibGUgYWdncmVnYXRlIGV4cHJlc3Np b25zIGFuZCBncm91cGluZyBleHByZXNzaW9ucyBpbiB0aGUgcXVlcnkuCi0tLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAgICAgICB8IDI1MCArKysrKysrKysrKysrKysr KysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMgICAgICAgICB8ICAgOCAr CiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAgMTAgKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNy Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA0MSArKysKIHNy Yy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAzICstCiA5IGZpbGVz IGNoYW5nZWQsIDMxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2FsbHBhdGhzLmMKaW5kZXggNzBlMmI1OGQ4Zi4uZDFiOTc0MzY3YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCkBAIC03Nyw2ICs3Nyw3IEBAIHR5cGVkZWYg ZW51bSBwdXNoZG93bl9zYWZlX3R5cGUKIAogLyogVGhlc2UgcGFyYW1ldGVycyBhcmUgc2V0IGJ5 IEdVQyAqLwogYm9vbAkJZW5hYmxlX2dlcW8gPSBmYWxzZTsJLyoganVzdCBpbiBjYXNlIEdVQyBk b2Vzbid0IHNldCBpdCAqLworYm9vbAkJZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSA9IGZhbHNlOwog aW50CQkJZ2Vxb190aHJlc2hvbGQ7CiBpbnQJCQltaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXpl OwogaW50CQkJbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vaW5pdHNwbGFuLmMKaW5kZXggZTJjNjhmZTZmOS4uNGU1MTIxMzQxMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqLwogI2lu Y2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC04MCw2ICs4MSw4IEBAIHR5cGVkZWYgc3RydWN0 IEpvaW5UcmVlSXRlbQogfSBKb2luVHJlZUl0ZW07CiAKIAorc3RhdGljIHZvaWQgY3JlYXRlX2Fn Z19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpOworc3RhdGljIHZvaWQgY3JlYXRlX2dy b3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgZXh0cmFj dF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmJyZWws CiAJCQkJCQkJCQkgICBJbmRleCBydGluZGV4KTsKIHN0YXRpYyBMaXN0ICpkZWNvbnN0cnVjdF9y ZWN1cnNlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpqdG5vZGUsCkBAIC0zMjcsNiArMzMwLDI1 MyBAQCBhZGRfdmFyc190b190YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICp2YXJz LAogCX0KIH0KIAorLyoKKyAqIHNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uCisgKgkgIENoZWNrIGlm IGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpY2FibGUsIGFuZCBpZiBzbyBjb2xsZWN0IHN1aXRh YmxlCisgKgkgIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgZ3JvdXBpbmcgZXhwcmVzc2lvbnMg aW4gdGhlIHF1ZXJ5LgorICovCit2b2lkCitzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbihQbGFubmVy SW5mbyAqcm9vdCkKK3sKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0aW9uIGlm IGRpc2FibGVkIGJ5IHVzZXIuCisJICovCisJaWYgKCFlbmFibGVfZWFnZXJfYWdncmVnYXRlKQor CQlyZXR1cm47CisKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0aW9uIGlmIHRo ZXJlIGFyZSBubyBHUk9VUCBCWSBjbGF1c2VzLgorCSAqLworCWlmICghcm9vdC0+cGFyc2UtPmdy b3VwQ2xhdXNlKQorCQlyZXR1cm47CisKKwkvKgorCSAqIEZvciBub3cgd2UgZG9uJ3QgdHJ5IHRv IHN1cHBvcnQgZ3JvdXBpbmcgc2V0cy4KKwkgKi8KKwlpZiAocm9vdC0+cGFyc2UtPmdyb3VwaW5n U2V0cykKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGb3Igbm93IHdlIGRvbid0IHRyeSB0byBzdXBw b3J0IERJU1RJTkNUIG9yIE9SREVSIEJZIGFnZ3JlZ2F0ZXMuCisJICovCisJaWYgKHJvb3QtPm51 bU9yZGVyZWRBZ2dzID4gMCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgYW55 IGFnZ3JlZ2F0ZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBwYXJ0aWFsIG1vZGUsIG9yIGFueQorCSAq IHBhcnRpYWwgYWdncmVnYXRlcyB0aGF0IGFyZSBub24tc2VyaWFsaXphYmxlLCBkbyBub3QgYXBw bHkgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlpZiAocm9vdC0+aGFzTm9uUGFydGlh bEFnZ3MgfHwgcm9vdC0+aGFzTm9uU2VyaWFsQWdncykKKwkJcmV0dXJuOworCisJLyoKKwkgKiBT UkYgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGFnZ3JlZ2F0ZSBhcmd1bWVudCBhbmQgd2UgZG9uJ3Qg ZXZlbiB3YW50IGl0CisJICogaW4gdGhlIEdST1VQIEJZIGNsYXVzZSwgc28gZm9yYmlkIGl0IGlu IGdlbmVyYWwuIEl0IG5lZWRzIHRvIGJlCisJICogYW5hbHl6ZWQgaWYgZXZhbHVhdGlvbiBvZiBh IEdST1VQIEJZIGNsYXVzZSBjb250YWluaW5nIFNSRiBiZWxvdyB0aGUKKwkgKiBxdWVyeSB0YXJn ZXRsaXN0IHdvdWxkIGJlIGNvcnJlY3QuIEN1cnJlbnRseSBpdCBkb2VzIG5vdCBzZWVtIHRvIGJl IGFuCisJICogaW1wb3J0YW50IHVzZSBjYXNlLgorCSAqLworCWlmIChyb290LT5wYXJzZS0+aGFz VGFyZ2V0U1JGcykKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDb2xsZWN0IGFnZ3JlZ2F0ZSBleHBy ZXNzaW9ucyB0aGF0IGFwcGVhciBpbiB0YXJnZXRsaXN0IGFuZCBoYXZpbmcKKwkgKiBjbGF1c2Vz LgorCSAqLworCWNyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zKHJvb3QpOworCisJLyoKKwkgKiBJZiB0 aGVyZSBhcmUgbm8gc3VpdGFibGUgYWdncmVnYXRlIGV4cHJlc3Npb25zLCB3ZSBjYW5ub3QgYXBw bHkgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlpZiAocm9vdC0+YWdnX2NsYXVzZV9s aXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDb2xsZWN0IGdyb3VwaW5nIGV4cHJl c3Npb25zIHRoYXQgYXBwZWFyIGluIGdyb3VwaW5nIGNsYXVzZXMuCisJICovCisJY3JlYXRlX2dy b3VwaW5nX2V4cHJfaW5mb3Mocm9vdCk7Cit9CisKKy8qCisgKiBDcmVhdGUgQWdnQ2xhdXNlSW5m byBmb3IgZWFjaCBhZ2dyZWdhdGUuCisgKgorICogSWYgYW55IGFnZ3JlZ2F0ZSBpcyBub3Qgc3Vp dGFibGUsIHNldCByb290LT5hZ2dfY2xhdXNlX2xpc3QgdG8gTklMIGFuZAorICogcmV0dXJuLgor ICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJv b3QpCit7CisJTGlzdAkgICAqdGxpc3RfZXhwcnM7CisJTGlzdENlbGwgICAqbGM7CisKKwlBc3Nl cnQocm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCk7CisKKwl0bGlzdF9leHBycyA9IHB1bGxf dmFyX2NsYXVzZSgoTm9kZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QsCisJCQkJCQkJCSAgUFZD X0lOQ0xVREVfQUdHUkVHQVRFUyB8CisJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfV0lORE9XRlVOQ1Mg fAorCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUyk7CisKKwkvKgorCSAqIEZvciBu b3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgR1JPVVBJTkcoKSBleHByZXNzaW9ucy4KKwkgKi8K Kwlmb3JlYWNoKGxjLCB0bGlzdF9leHBycykKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAq KSBsZmlyc3QobGMpOworCisJCWlmIChJc0EoZXhwciwgR3JvdXBpbmdGdW5jKSkKKwkJCXJldHVy bjsKKwl9CisKKwkvKgorCSAqIEFnZ3JlZ2F0ZXMgd2l0aGluIHRoZSBIQVZJTkcgY2xhdXNlIG5l ZWQgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZSBzYW1lIHdheQorCSAqIGFzIHRob3NlIGluIHRoZSB0 YXJnZXRsaXN0LiAgTm90ZSB0aGF0IEhBVklORyBjYW4gY29udGFpbiBBZ2dyZWZzIGJ1dAorCSAq IG5vdCBXaW5kb3dGdW5jcy4KKwkgKi8KKwlpZiAocm9vdC0+cGFyc2UtPmhhdmluZ1F1YWwgIT0g TlVMTCkKKwl7CisJCUxpc3QJICAgKmhhdmluZ19leHByczsKKworCQloYXZpbmdfZXhwcnMgPSBw dWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgcm9vdC0+cGFyc2UtPmhhdmluZ1F1YWwsCisJCQkJCQkJ CQkgICBQVkNfSU5DTFVERV9BR0dSRUdBVEVTIHwKKwkJCQkJCQkJCSAgIFBWQ19SRUNVUlNFX1BM QUNFSE9MREVSUyk7CisJCWlmIChoYXZpbmdfZXhwcnMgIT0gTklMKQorCQl7CisJCQl0bGlzdF9l eHBycyA9IGxpc3RfY29uY2F0KHRsaXN0X2V4cHJzLCBoYXZpbmdfZXhwcnMpOworCQkJbGlzdF9m cmVlKGhhdmluZ19leHBycyk7CisJCX0KKwl9CisKKwlmb3JlYWNoKGxjLCB0bGlzdF9leHBycykK Kwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlBZ2dyZWYJICAg KmFnZ3JlZjsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbzsKKworCQkvKgorCQkgKiB0bGlzdF9l eHBycyBtYXkgYWxzbyBjb250YWluIFZhcnMsIGJ1dCB3ZSBvbmx5IG5lZWQgQWdncmVmcy4KKwkJ ICovCisJCWlmIChJc0EoZXhwciwgVmFyKSkKKwkJCWNvbnRpbnVlOworCisJCWFnZ3JlZiA9IGNh c3ROb2RlKEFnZ3JlZiwgZXhwcik7CisKKwkJQXNzZXJ0KGFnZ3JlZi0+YWdnb3JkZXIgPT0gTklM KTsKKwkJQXNzZXJ0KGFnZ3JlZi0+YWdnZGlzdGluY3QgPT0gTklMKTsKKworCQlhY19pbmZvID0g bWFrZU5vZGUoQWdnQ2xhdXNlSW5mbyk7CisJCWFjX2luZm8tPmFnZ3JlZiA9IGFnZ3JlZjsKKwkJ YWNfaW5mby0+YWdnX2V2YWxfYXQgPSBwdWxsX3Zhcm5vcyhyb290LCAoTm9kZSAqKSBhZ2dyZWYp OworCisJCXJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9CisJCQlsaXN0X2FwcGVuZF91bmlxdWUocm9v dC0+YWdnX2NsYXVzZV9saXN0LCBhY19pbmZvKTsKKwl9CisKKwlsaXN0X2ZyZWUodGxpc3RfZXhw cnMpOworfQorCisvKgorICogQ3JlYXRlIEdyb3VwRXhwckluZm8gZm9yIGVhY2ggZXhwcmVzc2lv biB1c2FibGUgYXMgZ3JvdXBpbmcga2V5LgorICoKKyAqIElmIGFueSBncm91cGluZyBleHByZXNz aW9uIGlzIG5vdCBzdWl0YWJsZSwgc2V0IHJvb3QtPmdyb3VwX2V4cHJfbGlzdCB0byBOSUwKKyAq IGFuZCByZXR1cm4uCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZv cyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlMaXN0CSAgICpleHBycyA9IE5JTDsKKwlMaXN0CSAg ICpzb3J0Z3JvdXByZWZzID0gTklMOworCUxpc3QJICAgKmJ0cmVlX29wZmFtaWxpZXMgPSBOSUw7 CisJTGlzdENlbGwgICAqbGMsCisJCQkgICAqbGMxLAorCQkJICAgKmxjMiwKKwkJCSAgICpsYzM7 CisKKwlBc3NlcnQocm9vdC0+Z3JvdXBfZXhwcl9saXN0ID09IE5JTCk7CisKKwlmb3JlYWNoKGxj LCByb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1c2UpCisJeworCQlTb3J0R3JvdXBDbGF1c2UgKnNn YyA9IGxmaXJzdF9ub2RlKFNvcnRHcm91cENsYXVzZSwgbGMpOworCQlUYXJnZXRFbnRyeSAqdGxl ID0gZ2V0X3NvcnRncm91cGNsYXVzZV90bGUoc2djLCByb290LT5wcm9jZXNzZWRfdGxpc3QpOwor CQlUeXBlQ2FjaGVFbnRyeSAqdGNlOworCQlPaWQJCQkJZXF1YWxpbWFnZXByb2M7CisJCU9pZAkJ CQllcV9vcDsKKwkJTGlzdAkJICAgKmVxX29wZmFtaWxpZXM7CisJCU9pZAkJCQlidHJlZV9vcGZh bWlseTsKKworCQlBc3NlcnQodGxlLT5yZXNzb3J0Z3JvdXByZWYgPiAwKTsKKworCQkvKgorCQkg KiBGb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBwbGFpbiBWYXJzIGFzIGdyb3VwaW5nIGV4cHJlc3Np b25zLgorCQkgKi8KKwkJaWYgKCFJc0EodGxlLT5leHByLCBWYXIpKQorCQkJcmV0dXJuOworCisJ CS8qCisJCSAqIEVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG9ubHkgcG9zc2libGUgaWYgZXF1YWxpdHkg b2YgZ3JvdXBpbmcga2V5cworCQkgKiBwZXIgdGhlIGVxdWFsaXR5IG9wZXJhdG9yIGltcGxpZXMg Yml0d2lzZSBlcXVhbGl0eS4gT3RoZXJ3aXNlLCBpZgorCQkgKiB3ZSBwdXQga2V5cyBvZiBkaWZm ZXJlbnQgYnl0ZSBpbWFnZXMgaW50byB0aGUgc2FtZSBncm91cCwgd2UgbG9zZQorCQkgKiBzb21l IGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIG5lZWRlZCB0byBldmFsdWF0ZSBqb2luIGNsYXVzZXMg YWJvdmUKKwkJICogdGhlIHB1c2hlZC1kb3duIGFnZ3JlZ2F0ZSBub2RlLCBvciB0aGUgV0hFUkUg Y2xhdXNlLgorCQkgKgorCQkgKiBGb3IgZXhhbXBsZSwgdGhlIE5VTUVSSUMgZGF0YSB0eXBlIGlz IG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSB2YWx1ZXMKKwkJICogdGhhdCBmYWxsIGludG8gdGhlIHNh bWUgZ3JvdXAgYWNjb3JkaW5nIHRvIHRoZSBlcXVhbGl0eSBvcGVyYXRvcgorCQkgKiAoZS5nLiAw IGFuZCAwLjApIGNhbiBoYXZlIGRpZmZlcmVudCBzY2FsZS4KKwkJICovCisJCXRjZSA9IGxvb2t1 cF90eXBlX2NhY2hlKGV4cHJUeXBlKChOb2RlICopIHRsZS0+ZXhwciksCisJCQkJCQkJCVRZUEVD QUNIRV9CVFJFRV9PUEZBTUlMWSk7CisJCWlmICghT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29wZikg fHwKKwkJCSFPaWRJc1ZhbGlkKHRjZS0+YnRyZWVfb3BpbnR5cGUpKQorCQkJcmV0dXJuOworCisJ CWVxdWFsaW1hZ2Vwcm9jID0gZ2V0X29wZmFtaWx5X3Byb2ModGNlLT5idHJlZV9vcGYsCisJCQkJ CQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlwZSwKKwkJCQkJCQkJCQkgICB0Y2UtPmJ0cmVlX29w aW50eXBlLAorCQkJCQkJCQkJCSAgIEJURVFVQUxJTUFHRV9QUk9DKTsKKwkJaWYgKCFPaWRJc1Zh bGlkKGVxdWFsaW1hZ2Vwcm9jKSB8fAorCQkJIURhdHVtR2V0Qm9vbChPaWRGdW5jdGlvbkNhbGwx Q29sbChlcXVhbGltYWdlcHJvYywKKwkJCQkJCQkJCQkJICAgdGNlLT50eXBjb2xsYXRpb24sCisJ CQkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0odGNlLT5idHJlZV9vcGludHlwZSkpKSkKKwkJ CXJldHVybjsKKworCQkvKgorCQkgKiBHZXQgdGhlIG9wZXJhdG9yIGluIHRoZSBidHJlZSdzIG9w ZmFtaWx5LgorCQkgKi8KKwkJZXFfb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKHRjZS0+YnRyZWVf b3BmLAorCQkJCQkJCQkJdGNlLT5idHJlZV9vcGludHlwZSwKKwkJCQkJCQkJCXRjZS0+YnRyZWVf b3BpbnR5cGUsCisJCQkJCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQlpZiAoIU9pZElz VmFsaWQoZXFfb3ApKQorCQkJcmV0dXJuOworCQllcV9vcGZhbWlsaWVzID0gZ2V0X21lcmdlam9p bl9vcGZhbWlsaWVzKGVxX29wKTsKKwkJaWYgKCFlcV9vcGZhbWlsaWVzKQorCQkJcmV0dXJuOwor CQlidHJlZV9vcGZhbWlseSA9IGxpbml0aWFsX29pZChlcV9vcGZhbWlsaWVzKTsKKworCQlleHBy cyA9IGxhcHBlbmQoZXhwcnMsIHRsZS0+ZXhwcik7CisJCXNvcnRncm91cHJlZnMgPSBsYXBwZW5k X2ludChzb3J0Z3JvdXByZWZzLCB0bGUtPnJlc3NvcnRncm91cHJlZik7CisJCWJ0cmVlX29wZmFt aWxpZXMgPSBsYXBwZW5kX29pZChidHJlZV9vcGZhbWlsaWVzLCBidHJlZV9vcGZhbWlseSk7CisJ fQorCisJLyoKKwkgKiBDb25zdHJ1Y3QgR3JvdXBFeHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9u LgorCSAqLworCWZvcnRocmVlKGxjMSwgZXhwcnMsIGxjMiwgc29ydGdyb3VwcmVmcywgbGMzLCBi dHJlZV9vcGZhbWlsaWVzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChs YzEpOworCQlpbnQJCQlzb3J0Z3JvdXByZWYgPSBsZmlyc3RfaW50KGxjMik7CisJCU9pZAkJCWJ0 cmVlX29wZmFtaWx5ID0gbGZpcnN0X29pZChsYzMpOworCQlHcm91cEV4cHJJbmZvICpnZV9pbmZv OworCisJCWdlX2luZm8gPSBtYWtlTm9kZShHcm91cEV4cHJJbmZvKTsKKwkJZ2VfaW5mby0+ZXhw ciA9IChFeHByICopIGNvcHlPYmplY3QoZXhwcik7CisJCWdlX2luZm8tPnNvcnRncm91cHJlZiA9 IHNvcnRncm91cHJlZjsKKwkJZ2VfaW5mby0+YnRyZWVfb3BmYW1pbHkgPSBidHJlZV9vcGZhbWls eTsKKworCQlyb290LT5ncm91cF9leHByX2xpc3QgPSBsYXBwZW5kKHJvb3QtPmdyb3VwX2V4cHJf bGlzdCwgZ2VfaW5mbyk7CisJfQorfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYwppbmRleCBmZDhiMmIwY2EzLi41ZDJiY2E5MTRi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKQEAgLTc3LDYgKzc3LDggQEAg cXVlcnlfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwKIAlyb290LT5wbGFjZWhvbGRlcl9saXN0 ID0gTklMOwogCXJvb3QtPnBsYWNlaG9sZGVyX2FycmF5ID0gTlVMTDsKIAlyb290LT5wbGFjZWhv bGRlcl9hcnJheV9zaXplID0gMDsKKwlyb290LT5hZ2dfY2xhdXNlX2xpc3QgPSBOSUw7CisJcm9v dC0+Z3JvdXBfZXhwcl9saXN0ID0gTklMOwogCXJvb3QtPmZrZXlfbGlzdCA9IE5JTDsKIAlyb290 LT5pbml0aWFsX3JlbHMgPSBOSUw7CiAKQEAgLTI1OCw2ICsyNjAsMTIgQEAgcXVlcnlfcGxhbm5l cihQbGFubmVySW5mbyAqcm9vdCwKIAkgKi8KIAlleHRyYWN0X3Jlc3RyaWN0aW9uX29yX2NsYXVz ZXMocm9vdCk7CiAKKwkvKgorCSAqIENoZWNrIGlmIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGFwcGxp Y2FibGUsIGFuZCBpZiBzbywgc2V0IHVwCisJICogcm9vdC0+YWdnX2NsYXVzZV9saXN0IGFuZCBy b290LT5ncm91cF9leHByX2xpc3QuCisJICovCisJc2V0dXBfZWFnZXJfYWdncmVnYXRpb24ocm9v dCk7CisKIAkvKgogCSAqIE5vdyBleHBhbmQgYXBwZW5kcmVscyBieSBhZGRpbmcgIm90aGVycmVs cyIgZm9yIHRoZWlyIGNoaWxkcmVuLiAgV2UKIAkgKiBkZWxheSB0aGlzIHRvIHRoZSBlbmQgc28g dGhhdCB3ZSBoYXZlIGFzIG11Y2ggaW5mb3JtYXRpb24gYXMgcG9zc2libGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMKaW5kZXggZDI4YjBiY2I0MC4uZDNiMzdhZjgxYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTkzMSw2ICs5MzEsMTYgQEAgc3RydWN0IGNvbmZp Z19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJZmFsc2UsCiAJCU5VTEwsIE5VTEwsIE5V TEwKIAl9LAorCXsKKwkJeyJlbmFibGVfZWFnZXJfYWdncmVnYXRlIiwgUEdDX1VTRVJTRVQsIFFV RVJZX1RVTklOR19NRVRIT0QsCisJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgZWFnZXIgYWdncmVn YXRpb24uIiksCisJCQlOVUxMLAorCQkJR1VDX0VYUExBSU4KKwkJfSwKKwkJJmVuYWJsZV9lYWdl cl9hZ2dyZWdhdGUsCisJCWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKIAl7CiAJCXsi ZW5hYmxlX3BhcmFsbGVsX2FwcGVuZCIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfTUVUSE9E LAogCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIHRoZSBwbGFubmVyJ3MgdXNlIG9mIHBhcmFsbGVs IGFwcGVuZCBwbGFucy4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZQppbmRleCA5ZWM5Zjk3ZTkyLi4zZjAzZWYwNDM4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC00MTMsNiArNDEzLDcgQEAK ICNlbmFibGVfc29ydCA9IG9uCiAjZW5hYmxlX3RpZHNjYW4gPSBvbgogI2VuYWJsZV9ncm91cF9i eV9yZW9yZGVyaW5nID0gb24KKyNlbmFibGVfZWFnZXJfYWdncmVnYXRlID0gb2ZmCiAKICMgLSBQ bGFubmVyIENvc3QgQ29uc3RhbnRzIC0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCAxOGQxYWU4 Y2JjLi42ODNhYjUxZTZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMzg2LDYgKzM4NiwxMiBA QCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkvKiBsaXN0IG9mIFBsYWNlSG9sZGVySW5mb3MgKi8KIAlM aXN0CSAgICpwbGFjZWhvbGRlcl9saXN0OwogCisJLyogbGlzdCBvZiBBZ2dDbGF1c2VJbmZvcyAq LworCUxpc3QJICAgKmFnZ19jbGF1c2VfbGlzdDsKKworCS8qIExpc3Qgb2YgR3JvdXBFeHBySW5m b3MgKi8KKwlMaXN0CSAgICpncm91cF9leHByX2xpc3Q7CisKIAkvKiBhcnJheSBvZiBQbGFjZUhv bGRlckluZm9zIGluZGV4ZWQgYnkgcGhpZCAqLwogCXN0cnVjdCBQbGFjZUhvbGRlckluZm8gKipw bGFjZWhvbGRlcl9hcnJheSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUsIGFycmF5X3Np emUocGxhY2Vob2xkZXJfYXJyYXlfc2l6ZSkpOwogCS8qIGFsbG9jYXRlZCBzaXplIG9mIGFycmF5 ICovCkBAIC0zMjE5LDYgKzMyMjUsNDEgQEAgdHlwZWRlZiBzdHJ1Y3QgTWluTWF4QWdnSW5mbwog CVBhcmFtCSAgICpwYXJhbTsKIH0gTWluTWF4QWdnSW5mbzsKIAorLyoKKyAqIFRoZSBhZ2dyZWdh dGUgZXhwcmVzc2lvbnMgdGhhdCBhcHBlYXIgaW4gdGFyZ2V0bGlzdCBhbmQgaGF2aW5nIGNsYXVz ZXMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgQWdnQ2xhdXNlSW5mbworeworCXBnX25vZGVfYXR0cihu b19yZWFkLCBub19xdWVyeV9qdW1ibGUpCisKKwlOb2RlVGFnCQl0eXBlOworCisJLyogdGhlIEFn Z3JlZiBleHByICovCisJQWdncmVmCSAgICphZ2dyZWY7CisKKwkvKiBsb3dlc3QgbGV2ZWwgd2Ug Y2FuIGV2YWx1YXRlIHRoaXMgYWdncmVnYXRlIGF0ICovCisJUmVsaWRzCQlhZ2dfZXZhbF9hdDsK K30gQWdnQ2xhdXNlSW5mbzsKKworLyoKKyAqIFRoZSBncm91cGluZyBleHByZXNzaW9ucyB0aGF0 IGFwcGVhciBpbiBncm91cGluZyBjbGF1c2VzCisgKi8KK3R5cGVkZWYgc3RydWN0IEdyb3VwRXhw ckluZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fcmVhZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9k ZVRhZwkJdHlwZTsKKworCS8qIHRoZSByZXByZXNlbnRlZCBleHByZXNzaW9uICovCisJRXhwcgkg ICAqZXhwcjsKKworCS8qIHRoZSB0bGVTb3J0R3JvdXBSZWYgb2YgdGhlIGNvcnJlc3BvbmRpbmcg U29ydEdyb3VwQ2xhdXNlICovCisJSW5kZXgJCXNvcnRncm91cHJlZjsKKworCS8qIGJ0cmVlIG9w ZmFtaWx5IGRlZmluaW5nIHRoZSBvcmRlcmluZyAqLworCU9pZAkJCWJ0cmVlX29wZmFtaWx5Owor fSBHcm91cEV4cHJJbmZvOworCiAvKgogICogQXQgcnVudGltZSwgUEFSQU1fRVhFQyBzbG90cyBh cmUgdXNlZCB0byBwYXNzIHZhbHVlcyBhcm91bmQgZnJvbSBvbmUgcGxhbgogICogbm9kZSB0byBh bm90aGVyLiAgVGhleSBjYW4gYmUgdXNlZCB0byBwYXNzIHZhbHVlcyBkb3duIGludG8gc3VicXVl cmllcyAoZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCmluZGV4IDVlODhjMDIyNGEuLmQ4MTk5MzMzYzkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCisrKyBiL3NyYy9pbmNs dWRlL29wdGltaXplci9wYXRocy5oCkBAIC0yMSw2ICsyMSw3IEBACiAgKiBhbGxwYXRocy5jCiAg Ki8KIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9nZXFvOworZXh0ZXJuIFBHRExMSU1Q T1JUIGJvb2wgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg Z2Vxb190aHJlc2hvbGQ7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1pbl9wYXJhbGxlbF90YWJs ZV9zY2FuX3NpemU7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1pbl9wYXJhbGxlbF9pbmRleF9z Y2FuX3NpemU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCmluZGV4IGFhZmMxNzM3OTIuLmNlZGNk ODhlYmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCisrKyBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCkBAIC03Miw2ICs3Miw3IEBAIGV4dGVy biB2b2lkIGFkZF9vdGhlcl9yZWxzX3RvX3F1ZXJ5KFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVy biB2b2lkIGJ1aWxkX2Jhc2VfcmVsX3RsaXN0cyhQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqZmlu YWxfdGxpc3QpOwogZXh0ZXJuIHZvaWQgYWRkX3ZhcnNfdG9fdGFyZ2V0bGlzdChQbGFubmVySW5m byAqcm9vdCwgTGlzdCAqdmFycywKIAkJCQkJCQkJICAgUmVsaWRzIHdoZXJlX25lZWRlZCk7Citl eHRlcm4gdm9pZCBzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbihQbGFubmVySW5mbyAqcm9vdCk7CiBl eHRlcm4gdm9pZCBmaW5kX2xhdGVyYWxfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCk7CiBl eHRlcm4gdm9pZCBjcmVhdGVfbGF0ZXJhbF9qb2luX2luZm8oUGxhbm5lckluZm8gKnJvb3QpOwog ZXh0ZXJuIExpc3QgKmRlY29uc3RydWN0X2pvaW50cmVlKFBsYW5uZXJJbmZvICpyb290KTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5kZXggNzI5NjIwZGUxMy4uNDZkNjY0 NWJkOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTEzNiw2ICsx MzYsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUg bGlrZSAnZW5hYmxlJSc7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0KICBlbmFibGVfYXN5bmNfYXBwZW5kICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9iaXRtYXBz Y2FuICAgICAgICAgICAgICB8IG9uCisgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSAgICAgICAgIHwg b2ZmCiAgZW5hYmxlX2dhdGhlcm1lcmdlICAgICAgICAgICAgIHwgb24KICBlbmFibGVfZ3JvdXBf YnlfcmVvcmRlcmluZyAgICAgfCBvbgogIGVuYWJsZV9oYXNoYWdnICAgICAgICAgICAgICAgICB8 IG9uCkBAIC0xNTYsNyArMTU3LDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0 aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAgICAg ICAgICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24KICBlbmFi bGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDIyIHJvd3MpCisoMjMgcm93cykKIAog LS0gVGhlcmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0aW9ucyBmb3IgdmFyaW91cyB0 eXBlcy4gIEluamVjdGlvblBvaW50CiAtLSBtYXkgYmUgcHJlc2VudCBvciBhYnNlbnQsIGRlcGVu ZGluZyBvbiBoaXN0b3J5IHNpbmNlIGxhc3QgcG9zdG1hc3RlciBzdGFydC4KLS0gCjIuNDMuMAoK --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0004-Implement-functions-that-create-RelAggInfos-if-applicable.patch" Content-Disposition: attachment; filename="v9-0004-Implement-functions-that-create-RelAggInfos-if-applicable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5ksb5m3 RnJvbSA2MDQzNzE5ODE3NzcxOTc4MmQxM2M2MGNkMDMwOTQwNjA0NWU3MDdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNjowNDo0MSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDQvMTBdIEltcGxlbWVudCBmdW5jdGlvbnMgdGhhdCBjcmVhdGUgUmVsQWdnSW5mb3MgaWYKIGFw cGxpY2FibGUKClRoaXMgY29tbWl0IGltcGxlbWVudHMgdGhlIGZ1bmN0aW9ucyB0aGF0IGNoZWNr IGlmIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzCmFwcGxpY2FibGUgZm9yIGEgZ2l2ZW4gcmVsYXRpb24s IGFuZCBpZiBzbywgY3JlYXRlIFJlbEFnZ0luZm8gc3RydWN0dXJlCmZvciB0aGUgcmVsYXRpb24s IHVzaW5nIHRoZSBpbmZvcyBhYm91dCBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kCmdyb3VwaW5n IGV4cHJlc3Npb25zIHdlIGNvbGxlY3RlZCBlYXJsaWVyLgotLS0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2VxdWl2Y2xhc3MuYyB8ICAyNiArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vaW5pdHNwbGFuLmMgIHwgIDI0ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bWFpbi5jICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jICAg IHwgNjQ3ICsrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAg ICAgICAgICAgfCAgMTEgKy0KIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oICAgICAg ICB8ICAgNSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICAgfCAgIDMg Ky0KIDggZmlsZXMgY2hhbmdlZCwgNzA0IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwppbmRleCA1MWQ4MDYzMjZlLi5k ODcxMzk2ZTIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNs YXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jCkBAIC0y NDQzLDE1ICsyNDQzLDE3IEBAIGZpbmRfam9pbl9kb21haW4oUGxhbm5lckluZm8gKnJvb3QsIFJl bGlkcyByZWxpZHMpCiAgKgkgIERldGVjdCB3aGV0aGVyIHR3byBleHByZXNzaW9ucyBhcmUga25v d24gZXF1YWwgZHVlIHRvIGVxdWl2YWxlbmNlCiAgKgkgIHJlbGF0aW9uc2hpcHMuCiAgKgotICog QWN0dWFsbHksIHRoaXMgb25seSBzaG93cyB0aGF0IHRoZSBleHByZXNzaW9ucyBhcmUgZXF1YWwg YWNjb3JkaW5nCi0gKiB0byBzb21lIG9wZmFtaWx5J3Mgbm90aW9uIG9mIGVxdWFsaXR5IC0tLSBi dXQgd2Ugb25seSB1c2UgaXQgZm9yCi0gKiBzZWxlY3Rpdml0eSBlc3RpbWF0aW9uLCBzbyBhIGZ1 enp5IGlkZWEgb2YgZXF1YWxpdHkgaXMgT0suCisgKiBJZiBvcGZhbWlseSBpcyBnaXZlbiwgdGhl IGV4cHJlc3Npb25zIG11c3QgYmUga25vd24gZXF1YWwgcGVyIHRoZSBzZW1hbnRpY3MKKyAqIG9m IHRoYXQgb3BmYW1pbHkgKG5vdGUgaXQgaGFzIHRvIGJlIGEgYnRyZWUgb3BmYW1pbHksIHNpbmNl IHRob3NlIGFyZSB0aGUKKyAqIG9ubHkgb3BmYW1pbGllcyBlcXVpdmNsYXNzLmMgZGVhbHMgd2l0 aCkuICBJZiBvcGZhbWlseSBpcyBJbnZhbGlkT2lkLCB3ZSdsbAorICogcmV0dXJuIHRydWUgaWYg dGhleSdyZSBlcXVhbCBhY2NvcmRpbmcgdG8gYW55IG9wZmFtaWx5LCB3aGljaCBpcyBmdXp6eSBi dXQKKyAqIE9LIGZvciBlc3RpbWF0aW9uIHB1cnBvc2VzLgogICoKICAqIE5vdGU6IGRvZXMgbm90 IGJvdGhlciB0byBjaGVjayBmb3IgImVxdWFsKGl0ZW0xLCBpdGVtMikiOyBjYWxsZXIgbXVzdAog ICogY2hlY2sgdGhhdCBjYXNlIGlmIGl0J3MgcG9zc2libGUgdG8gcGFzcyBpZGVudGljYWwgaXRl bXMuCiAgKi8KIGJvb2wKLWV4cHJzX2tub3duX2VxdWFsKFBsYW5uZXJJbmZvICpyb290LCBOb2Rl ICppdGVtMSwgTm9kZSAqaXRlbTIpCitleHByc19rbm93bl9lcXVhbChQbGFubmVySW5mbyAqcm9v dCwgTm9kZSAqaXRlbTEsIE5vZGUgKml0ZW0yLCBPaWQgb3BmYW1pbHkpCiB7CiAJTGlzdENlbGwg ICAqbGMxOwogCkBAIC0yNDY2LDYgKzI0NjgsMTcgQEAgZXhwcnNfa25vd25fZXF1YWwoUGxhbm5l ckluZm8gKnJvb3QsIE5vZGUgKml0ZW0xLCBOb2RlICppdGVtMikKIAkJaWYgKGVjLT5lY19oYXNf dm9sYXRpbGUpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBJdCdzIG9rYXkgdG8gY29uc2lk ZXIgZWNfYnJva2VuIEVDcyBoZXJlLiAgQnJva2VubmVzcyBqdXN0IG1lYW5zIHdlCisJCSAqIGNv dWxkbid0IGRlcml2ZSBhbGwgdGhlIGltcGxpZWQgY2xhdXNlcyB3ZSdkIGhhdmUgbGlrZWQgdG87 IGl0IGRvZXMKKwkJICogbm90IGludmFsaWRhdGUgb3VyIGtub3dsZWRnZSB0aGF0IHRoZSBtZW1i ZXJzIGFyZSBlcXVhbC4KKwkJICovCisKKwkJLyogSWdub3JlIGlmIHRoaXMgRUMgZG9lc24ndCB1 c2Ugc3BlY2lmaWVkIG9wZmFtaWx5ICovCisJCWlmIChPaWRJc1ZhbGlkKG9wZmFtaWx5KSAmJgor CQkJIWxpc3RfbWVtYmVyX29pZChlYy0+ZWNfb3BmYW1pbGllcywgb3BmYW1pbHkpKQorCQkJY29u dGludWU7CisKIAkJZm9yZWFjaChsYzIsIGVjLT5lY19tZW1iZXJzKQogCQl7CiAJCQlFcXVpdmFs ZW5jZU1lbWJlciAqZW0gPSAoRXF1aXZhbGVuY2VNZW1iZXIgKikgbGZpcnN0KGxjMik7CkBAIC0y NDk0LDggKzI1MDcsNyBAQCBleHByc19rbm93bl9lcXVhbChQbGFubmVySW5mbyAqcm9vdCwgTm9k ZSAqaXRlbTEsIE5vZGUgKml0ZW0yKQogICogKEluIHByaW5jaXBsZSB0aGVyZSBtaWdodCBiZSBt b3JlIHRoYW4gb25lIG1hdGNoaW5nIGVjbGFzcyBpZiBtdWx0aXBsZQogICogY29sbGF0aW9ucyBh cmUgaW52b2x2ZWQsIGJ1dCBzaW5jZSBjb2xsYXRpb24gZG9lc24ndCBtYXR0ZXIgZm9yIGVxdWFs aXR5LAogICogd2UgaWdub3JlIHRoYXQgZmluZSBwb2ludCBoZXJlLikgIFRoaXMgaXMgbXVjaCBs aWtlIGV4cHJzX2tub3duX2VxdWFsLAotICogZXhjZXB0IHRoYXQgd2UgaW5zaXN0IG9uIHRoZSBj b21wYXJpc29uIG9wZXJhdG9yIG1hdGNoaW5nIHRoZSBlY2xhc3MsIHNvCi0gKiB0aGF0IHRoZSBy ZXN1bHQgaXMgZGVmaW5pdGUgbm90IGFwcHJveGltYXRlLgorICogZXhjZXB0IGZvciB0aGUgZm9y bWF0IG9mIHRoZSBpbnB1dC4KICAqCiAgKiBPbiBzdWNjZXNzLCB3ZSBhbHNvIHNldCBma2luZm8t PmVjbGFzc1tjb2xub10gdG8gdGhlIG1hdGNoaW5nIGVjbGFzcywKICAqIGFuZCBzZXQgZmtpbmZv LT5ma19lY2xhc3NfbWVtYmVyW2NvbG5vXSB0byB0aGUgZWNsYXNzIG1lbWJlciBmb3IgdGhlCkBA IC0yNTM2LDcgKzI1NDgsNyBAQCBtYXRjaF9lY2xhc3Nlc190b19mb3JlaWduX2tleV9jb2woUGxh bm5lckluZm8gKnJvb3QsCiAJCS8qIE5ldmVyIG1hdGNoIHRvIGEgdm9sYXRpbGUgRUMgKi8KIAkJ aWYgKGVjLT5lY19oYXNfdm9sYXRpbGUpCiAJCQljb250aW51ZTsKLQkJLyogTm90ZTogaXQgc2Vl bXMgb2theSB0byBtYXRjaCB0byAiYnJva2VuIiBlY2xhc3NlcyBoZXJlICovCisJCS8qIEl0J3Mg b2theSB0byBjb25zaWRlciAiYnJva2VuIiBFQ3MgaGVyZSwgc2VlIGV4cHJzX2tub3duX2VxdWFs ICovCiAKIAkJZm9yZWFjaChsYzIsIGVjLT5lY19tZW1iZXJzKQogCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2luaXRzcGxhbi5jCmluZGV4IDRlNTEyMTM0MTAuLjlmMDVlZGZiYWMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCkBAIC0zODEsOCArMzgxLDggQEAgc2V0 dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3QpCiAJCXJldHVybjsKIAogCS8q Ci0JICogQ29sbGVjdCBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgdGhhdCBhcHBlYXIgaW4gdGFyZ2V0 bGlzdCBhbmQgaGF2aW5nCi0JICogY2xhdXNlcy4KKwkgKiBDb2xsZWN0IGFnZ3JlZ2F0ZSBleHBy ZXNzaW9ucyBhbmQgcGxhaW4gVmFycyB0aGF0IGFwcGVhciBpbiB0YXJnZXRsaXN0CisJICogYW5k IGhhdmluZyBjbGF1c2VzLgogCSAqLwogCWNyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zKHJvb3QpOwog CkBAIC00MDAsMTAgKzQwMCw5IEBAIHNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKFBsYW5uZXJJbmZv ICpyb290KQogfQogCiAvKgotICogQ3JlYXRlIEFnZ0NsYXVzZUluZm8gZm9yIGVhY2ggYWdncmVn YXRlLgotICoKLSAqIElmIGFueSBhZ2dyZWdhdGUgaXMgbm90IHN1aXRhYmxlLCBzZXQgcm9vdC0+ YWdnX2NsYXVzZV9saXN0IHRvIE5JTCBhbmQKLSAqIHJldHVybi4KKyAqIGNyZWF0ZV9hZ2dfY2xh dXNlX2luZm9zCisgKgkgIFNlYXJjaCB0aGUgdGFyZ2V0bGlzdCBhbmQgaGF2aW5nUXVhbCBmb3Ig QWdncmVmcyBhbmQgcGxhaW4gVmFycywgYW5kCisgKgkgIGNyZWF0ZSBhbiBBZ2dDbGF1c2VJbmZv IGZvciBlYWNoIEFnZ3JlZiBub2RlLgogICovCiBzdGF0aWMgdm9pZAogY3JlYXRlX2FnZ19jbGF1 c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpCkBAIC00MTIsNiArNDExLDcgQEAgY3JlYXRlX2Fn Z19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlzdENlbGwgICAqbGM7CiAKIAlB c3NlcnQocm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCk7CisJQXNzZXJ0KHJvb3QtPnRsaXN0 X3ZhcnMgPT0gTklMKTsKIAogCXRsaXN0X2V4cHJzID0gcHVsbF92YXJfY2xhdXNlKChOb2RlICop IHJvb3QtPnByb2Nlc3NlZF90bGlzdCwKIAkJCQkJCQkJICBQVkNfSU5DTFVERV9BR0dSRUdBVEVT IHwKQEAgLTQ1NSwxMCArNDU1LDEzIEBAIGNyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zKFBsYW5uZXJJ bmZvICpyb290KQogCQlBZ2dDbGF1c2VJbmZvICphY19pbmZvOwogCiAJCS8qCi0JCSAqIHRsaXN0 X2V4cHJzIG1heSBhbHNvIGNvbnRhaW4gVmFycywgYnV0IHdlIG9ubHkgbmVlZCBBZ2dyZWZzLgor CQkgKiBjb2xsZWN0IHBsYWluIFZhcnMgZm9yIGZ1dHVyZSByZWZlcmVuY2UKIAkJICovCiAJCWlm IChJc0EoZXhwciwgVmFyKSkKKwkJeworCQkJcm9vdC0+dGxpc3RfdmFycyA9IGxpc3RfYXBwZW5k X3VuaXF1ZShyb290LT50bGlzdF92YXJzLCBleHByKTsKIAkJCWNvbnRpbnVlOworCQl9CiAKIAkJ YWdncmVmID0gY2FzdE5vZGUoQWdncmVmLCBleHByKTsKIApAQCAtNDc3LDEwICs0ODAsMTEgQEAg Y3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpCiB9CiAKIC8qCi0gKiBD cmVhdGUgR3JvdXBFeHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9uIHVzYWJsZSBhcyBncm91cGlu ZyBrZXkuCisgKiBjcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZvcworICoJICBDcmVhdGUgR3JvdXBF eHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9uIHVzYWJsZSBhcyBncm91cGluZyBrZXkuCiAgKgot ICogSWYgYW55IGdyb3VwaW5nIGV4cHJlc3Npb24gaXMgbm90IHN1aXRhYmxlLCBzZXQgcm9vdC0+ Z3JvdXBfZXhwcl9saXN0IHRvIE5JTAotICogYW5kIHJldHVybi4KKyAqIElmIGFueSBncm91cGlu ZyBleHByZXNzaW9uIGlzIG5vdCBzdWl0YWJsZSwgd2Ugd2lsbCBqdXN0IHJldHVybiB3aXRoCisg KiByb290LT5ncm91cF9leHByX2xpc3QgYmVpbmcgTklMLgogICovCiBzdGF0aWMgdm9pZAogY3Jl YXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm1haW4uYwppbmRleCA1ZDJiY2E5MTRiLi5lY2U2OTM2ZTIzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKQEAgLTY3LDYgKzY3LDkgQEAgcXVlcnlfcGxh bm5lcihQbGFubmVySW5mbyAqcm9vdCwKIAlyb290LT5qb2luX3JlbF9saXN0ID0gbWFrZU5vZGUo UmVsSW5mb0xpc3QpOwogCXJvb3QtPmpvaW5fcmVsX2xpc3QtPml0ZW1zID0gTklMOwogCXJvb3Qt PmpvaW5fcmVsX2xpc3QtPmhhc2ggPSBOVUxMOworCXJvb3QtPmFnZ19pbmZvX2xpc3QgPSBtYWtl Tm9kZShSZWxJbmZvTGlzdCk7CisJcm9vdC0+YWdnX2luZm9fbGlzdC0+aXRlbXMgPSBOSUw7CisJ cm9vdC0+YWdnX2luZm9fbGlzdC0+aGFzaCA9IE5VTEw7CiAJcm9vdC0+am9pbl9yZWxfbGV2ZWwg PSBOVUxMOwogCXJvb3QtPmpvaW5fY3VyX2xldmVsID0gMDsKIAlyb290LT5jYW5vbl9wYXRoa2V5 cyA9IE5JTDsKQEAgLTc5LDYgKzgyLDcgQEAgcXVlcnlfcGxhbm5lcihQbGFubmVySW5mbyAqcm9v dCwKIAlyb290LT5wbGFjZWhvbGRlcl9hcnJheV9zaXplID0gMDsKIAlyb290LT5hZ2dfY2xhdXNl X2xpc3QgPSBOSUw7CiAJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID0gTklMOworCXJvb3QtPnRsaXN0 X3ZhcnMgPSBOSUw7CiAJcm9vdC0+ZmtleV9saXN0ID0gTklMOwogCXJvb3QtPmluaXRpYWxfcmVs cyA9IE5JTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9k ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IDg0MjBiODkz NmUuLjI3Zjc3OWQ3NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jl bG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTg3 LDYgKzg3LDE1IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2NoaWxkX2pvaW5fcmVsdGFyZ2V0KFBsYW5u ZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAgUmVsT3B0SW5mbyAqY2hpbGRyZWwsCiAJCQkJCQkJ CQkgICBpbnQgbmFwcGluZm9zLAogCQkJCQkJCQkJICAgQXBwZW5kUmVsSW5mbyAqKmFwcGluZm9z KTsKK3N0YXRpYyBib29sIGVhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihQ bGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCQkJCQlSZWxPcHRJbmZvICpyZWwpOworc3RhdGlj IGJvb2wgaW5pdF9ncm91cGluZ190YXJnZXRzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwsCisJCQkJCQkJCSAgUGF0aFRhcmdldCAqdGFyZ2V0LCBQYXRoVGFyZ2V0ICphZ2dfaW5w dXQsCisJCQkJCQkJCSAgTGlzdCAqKmdyb3VwX2V4cHJzX2V4dHJhX3ApOworc3RhdGljIGJvb2wg aXNfdmFyX2luX2FnZ3JlZl9vbmx5KFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhcik7CitzdGF0 aWMgYm9vbCBpc192YXJfbmVlZGVkX2J5X2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFy LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCQkJCSAgYm9vbCAqc2FmZV90b19wdXNoKTsKK3N0YXRp YyBJbmRleCBnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYoUGxhbm5lckluZm8gKnJvb3QsIEV4 cHIgKmV4cHIpOwogCiAKIC8qCkBAIC02NDcsNiArNjU2LDU4IEBAIGFkZF9qb2luX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqam9pbnJlbCkKIAlhZGRfcmVsX2luZm8ocm9vdC0+ am9pbl9yZWxfbGlzdCwgam9pbnJlbCk7CiB9CiAKKy8qCisgKiBhZGRfZ3JvdXBlZF9yZWwKKyAq CQlBZGQgZ3JvdXBlZCBiYXNlIG9yIGpvaW4gcmVsYXRpb24gdG8gdGhlIGxpc3Qgb2YgZ3JvdXBl ZCByZWxhdGlvbnMgaW4KKyAqCQl0aGUgZ2l2ZW4gUGxhbm5lckluZm8uICBBbHNvIGFkZCB0aGUg Y29ycmVzcG9uZGluZyBSZWxBZ2dJbmZvIHRvCisgKgkJcm9vdC0+YWdnX2luZm9fbGlzdC4KKyAq Lwordm9pZAorYWRkX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsIFJlbEFnZ0luZm8gKmFnZ19pbmZvKQoreworCWFkZF9yZWxfaW5mbygmcm9vdC0+dXBwZXJf cmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10sIHJlbCk7CisJYWRkX3JlbF9pbmZvKHJv b3QtPmFnZ19pbmZvX2xpc3QsIGFnZ19pbmZvKTsKK30KKworLyoKKyAqIGZpbmRfZ3JvdXBlZF9y ZWwKKyAqCSAgUmV0dXJucyBncm91cGVkIHJlbGF0aW9uIGVudHJ5IChiYXNlIG9yIGpvaW4gcmVs YXRpb24pIGNvcnJlc3BvbmRpbmcgdG8KKyAqCSAgJ3JlbGlkcycgb3IgTlVMTCBpZiBub25lIGV4 aXN0cy4KKyAqCisgKiBJZiBhZ2dfaW5mb19wIGlzIG5vdCBOVUxMLCB0aGVuIGFsc28gdGhlIGNv cnJlc3BvbmRpbmcgUmVsQWdnSW5mbyAoaWYgb25lCisgKiBleGlzdHMpIHdpbGwgYmUgcmV0dXJu ZWQgaW4gKmFnZ19pbmZvX3AuCisgKi8KK1JlbE9wdEluZm8gKgorZmluZF9ncm91cGVkX3JlbChQ bGFubmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcywgUmVsQWdnSW5mbyAqKmFnZ19pbmZvX3Ap Cit7CisJUmVsT3B0SW5mbyAqcmVsOworCisJcmVsID0gKFJlbE9wdEluZm8gKikgZmluZF9yZWxf aW5mbygmcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10sCisJCQkJ CQkJCQkgICByZWxpZHMpOworCWlmIChyZWwgPT0gTlVMTCkKKwl7CisJCWlmIChhZ2dfaW5mb19w KQorCQkJKmFnZ19pbmZvX3AgPSBOVUxMOworCisJCXJldHVybiBOVUxMOworCX0KKworCS8qIGFs c28gcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIFJlbEFnZ0luZm8sIGlmIGFza2VkICovCisJaWYg KGFnZ19pbmZvX3ApCisJeworCQlSZWxBZ2dJbmZvICphZ2dfaW5mbzsKKworCQlhZ2dfaW5mbyA9 IChSZWxBZ2dJbmZvICopIGZpbmRfcmVsX2luZm8ocm9vdC0+YWdnX2luZm9fbGlzdCwgcmVsaWRz KTsKKworCQkvKiBUaGUgcmVsYXRpb24gZXhpc3RzLCBzbyB0aGUgYWdnX2luZm8gc2hvdWxkIGJl IHRoZXJlIHRvby4gKi8KKwkJQXNzZXJ0KGFnZ19pbmZvICE9IE5VTEwpOworCisJCSphZ2dfaW5m b19wID0gYWdnX2luZm87CisJfQorCisJcmV0dXJuIHJlbDsKK30KKwogLyoKICAqIHNldF9mb3Jl aWduX3JlbF9wcm9wZXJ0aWVzCiAgKgkJU2V0IHVwIGZvcmVpZ24tam9pbiBmaWVsZHMgaWYgb3V0 ZXIgYW5kIGlubmVyIHJlbGF0aW9uIGFyZSBmb3JlaWduCkBAIC0yNDgzLDMgKzI1NDQsNTg5IEBA IGJ1aWxkX2NoaWxkX2pvaW5fcmVsdGFyZ2V0KFBsYW5uZXJJbmZvICpyb290LAogCWNoaWxkcmVs LT5yZWx0YXJnZXQtPmNvc3QucGVyX3R1cGxlID0gcGFyZW50cmVsLT5yZWx0YXJnZXQtPmNvc3Qu cGVyX3R1cGxlOwogCWNoaWxkcmVsLT5yZWx0YXJnZXQtPndpZHRoID0gcGFyZW50cmVsLT5yZWx0 YXJnZXQtPndpZHRoOwogfQorCisvKgorICogY3JlYXRlX3JlbF9hZ2dfaW5mbworICoJICBDaGVj ayBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gY2FuIHByb2R1Y2UgZ3JvdXBlZCBwYXRocyBhbmQgcmV0 dXJuIHRoZQorICoJICBpbmZvcm1hdGlvbiBpdCdsbCBuZWVkIGZvciBpdC4gIFRoZSBnaXZlbiBy ZWxhdGlvbiBpcyB0aGUgbm9uLWdyb3VwZWQgb25lCisgKgkgIHdoaWNoIGhhcyB0aGUgcmVsdGFy Z2V0IGFscmVhZHkgY29uc3RydWN0ZWQuCisgKi8KK1JlbEFnZ0luZm8gKgorY3JlYXRlX3JlbF9h Z2dfaW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQoreworCUxpc3RDZWxs ICAgKmxjOworCVJlbEFnZ0luZm8gKnJlc3VsdDsKKwlQYXRoVGFyZ2V0ICphZ2dfaW5wdXQ7CisJ UGF0aFRhcmdldCAqdGFyZ2V0OworCUxpc3QJICAgKmdycF9leHByc19leHRyYSA9IE5JTDsKKwlM aXN0CSAgICpncm91cF9jbGF1c2VzX2ZpbmFsOworCWludAkJCWk7CisKKwkvKgorCSAqIFRoZSBs aXN0cyBvZiBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb25zIHNo b3VsZCBoYXZlCisJICogYmVlbiBjb25zdHJ1Y3RlZC4KKwkgKi8KKwlBc3NlcnQocm9vdC0+YWdn X2NsYXVzZV9saXN0ICE9IE5JTCk7CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCAhPSBO SUwpOworCisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgY2hpbGQgcmVsLCB0aGUgZ3JvdXBlZCByZWwg Zm9yIGl0cyBwYXJlbnQgcmVsIG11c3QgaGF2ZQorCSAqIGJlZW4gY3JlYXRlZCBpZiBpdCBjYW4u ICBTbyB3ZSBjYW4ganVzdCB1c2UgcGFyZW50J3MgUmVsQWdnSW5mbyBpZiB0aGVyZQorCSAqIGlz IG9uZSwgd2l0aCBhcHByb3ByaWF0ZSB2YXJpYWJsZSBzdWJzdGl0dXRpb25zLgorCSAqLworCWlm IChJU19PVEhFUl9SRUwocmVsKSkKKwl7CisJCVJlbE9wdEluZm8JICAgKnJlbF9ncm91cGVkOwor CQlSZWxBZ2dJbmZvCSAgICphZ2dfaW5mbzsKKworCQlBc3NlcnQoIWJtc19pc19lbXB0eShyZWwt PnRvcF9wYXJlbnRfcmVsaWRzKSk7CisJCXJlbF9ncm91cGVkID0gZmluZF9ncm91cGVkX3JlbChy b290LCByZWwtPnRvcF9wYXJlbnRfcmVsaWRzLCAmYWdnX2luZm8pOworCisJCWlmIChyZWxfZ3Jv dXBlZCA9PSBOVUxMKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJQXNzZXJ0KGFnZ19pbmZvICE9IE5V TEwpOworCQkvKiBNdXN0IGRvIG11bHRpLWxldmVsIHRyYW5zZm9ybWF0aW9uICovCisJCWFnZ19p bmZvID0gKFJlbEFnZ0luZm8gKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXVsdGlsZXZl bChyb290LAorCQkJCQkJCQkJCQkgIChOb2RlICopIGFnZ19pbmZvLAorCQkJCQkJCQkJCQkgIHJl bCwKKwkJCQkJCQkJCQkJICByZWwtPnRvcF9wYXJlbnQpOworCisJCWFnZ19pbmZvLT5pbnB1dF9y b3dzID0gcmVsLT5yb3dzOworCQlhZ2dfaW5mby0+Z3JvdXBlZF9yb3dzID0KKwkJCWVzdGltYXRl X251bV9ncm91cHMocm9vdCwgYWdnX2luZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQlhZ2dfaW5m by0+aW5wdXRfcm93cywgTlVMTCwgTlVMTCk7CisKKwkJcmV0dXJuIGFnZ19pbmZvOworCX0KKwor CS8qIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVjZSBncm91cGVkIHBhdGhzIGZvciB0 aGlzIHJlbGF0aW9uLiAqLworCWlmICghZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9yX3Jl bGF0aW9uKHJvb3QsIHJlbCkpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBDcmVhdGUgdGFy Z2V0cyBmb3IgdGhlIGdyb3VwZWQgcGF0aHMgYW5kIGZvciB0aGUgaW5wdXQgcGF0aHMgb2YgdGhl CisJICogZ3JvdXBlZCBwYXRocy4KKwkgKi8KKwl0YXJnZXQgPSBjcmVhdGVfZW1wdHlfcGF0aHRh cmdldCgpOworCWFnZ19pbnB1dCA9IGNyZWF0ZV9lbXB0eV9wYXRodGFyZ2V0KCk7CisKKwkvKiBp bml0aWFsaXplICd0YXJnZXQnIGFuZCAnYWdnX2lucHV0JyAqLworCWlmICghaW5pdF9ncm91cGlu Z190YXJnZXRzKHJvb3QsIHJlbCwgdGFyZ2V0LCBhZ2dfaW5wdXQsICZncnBfZXhwcnNfZXh0cmEp KQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEVhZ2VyIGFnZ3JlZ2F0aW9uIG1ha2VzIG5vIHNlbnNl IHcvbyBncm91cGluZyBleHByZXNzaW9ucyAqLworCWlmICgobGlzdF9sZW5ndGgodGFyZ2V0LT5l eHBycykgKyBsaXN0X2xlbmd0aChncnBfZXhwcnNfZXh0cmEpKSA9PSAwKQorCQlyZXR1cm4gTlVM TDsKKworCWdyb3VwX2NsYXVzZXNfZmluYWwgPSByb290LT5wYXJzZS0+Z3JvdXBDbGF1c2U7CisK KwkvKgorCSAqIElmIHRoZSBhZ2dyZWdhdGlvbiB0YXJnZXQgc2hvdWxkIGhhdmUgZXh0cmEgZ3Jv dXBpbmcgZXhwcmVzc2lvbnMgKGluCisJICogb3JkZXIgdG8gZW1pdCBpbnB1dCB2YXJzIGZvciBq b2luIGNvbmRpdGlvbnMpLCBhZGQgdGhlbSBub3cuIFRoaXMgc3RlcAorCSAqIGluY2x1ZGVzIGFz c2lnbm1lbnQgb2YgdGxlU29ydEdyb3VwUmVmJ3Mgd2hpY2ggd2UgY2FuIGdlbmVyYXRlIG5vdy4K KwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoZ3JwX2V4cHJzX2V4dHJhKSA+IDApCisJeworCQlJbmRl eAkJc29ydGdyb3VwcmVmOworCisJCS8qCisJCSAqIE1ha2UgYSBjb3B5IG9mIHRoZSBncm91cCBj bGF1c2VzIGFzIHdlJ2xsIG5lZWQgdG8gYWRkIHNvbWUgbW9yZQorCQkgKiBjbGF1c2VzLgorCQkg Ki8KKwkJZ3JvdXBfY2xhdXNlc19maW5hbCA9IGxpc3RfY29weShncm91cF9jbGF1c2VzX2ZpbmFs KTsKKworCQkvKiBmaW5kIG91dCB0aGUgY3VycmVudCBtYXggc29ydGdyb3VwcmVmICovCisJCXNv cnRncm91cHJlZiA9IDA7CisJCWZvcmVhY2gobGMsIHJvb3QtPnByb2Nlc3NlZF90bGlzdCkKKwkJ eworCQkJSW5kZXgJCXJlZiA9ICgoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKSktPnJlc3NvcnRn cm91cHJlZjsKKworCQkJaWYgKHJlZiA+IHNvcnRncm91cHJlZikKKwkJCQlzb3J0Z3JvdXByZWYg PSByZWY7CisJCX0KKworCQkvKgorCQkgKiBHZW5lcmF0ZSB0aGUgU29ydEdyb3VwQ2xhdXNlJ3Mg YW5kIGFkZCB0aGUgZXhwcmVzc2lvbnMgdG8gdGhlCisJCSAqIHRhcmdldC4KKwkJICovCisJCWZv cmVhY2gobGMsIGdycF9leHByc19leHRyYSkKKwkJeworCQkJVmFyCQkgICAqdmFyID0gbGZpcnN0 X25vZGUoVmFyLCBsYyk7CisJCQlTb3J0R3JvdXBDbGF1c2UgKmNsID0gbWFrZU5vZGUoU29ydEdy b3VwQ2xhdXNlKTsKKworCQkJLyoKKwkJCSAqIEluaXRpYWxpemUgdGhlIFNvcnRHcm91cENsYXVz ZS4KKwkJCSAqCisJCQkgKiBBcyB0aGUgZmluYWwgYWdncmVnYXRpb24gd2lsbCBub3QgdXNlIHRo aXMgZ3JvdXBpbmcgZXhwcmVzc2lvbiwKKwkJCSAqIHdlIGRvbid0IGNhcmUgd2hldGhlciBzb3J0 b3AgaXMgPCBvciA+LiBUaGUgdmFsdWUgb2YgbnVsbHNfZmlyc3QKKwkJCSAqIHNob3VsZCBub3Qg bWF0dGVyIGZvciB0aGUgc2FtZSByZWFzb24uCisJCQkgKi8KKwkJCWNsLT50bGVTb3J0R3JvdXBS ZWYgPSArK3NvcnRncm91cHJlZjsKKwkJCWdldF9zb3J0X2dyb3VwX29wZXJhdG9ycyh2YXItPnZh cnR5cGUsCisJCQkJCQkJCQkgZmFsc2UsIHRydWUsIGZhbHNlLAorCQkJCQkJCQkJICZjbC0+c29y dG9wLCAmY2wtPmVxb3AsIE5VTEwsCisJCQkJCQkJCQkgJmNsLT5oYXNoYWJsZSk7CisJCQlncm91 cF9jbGF1c2VzX2ZpbmFsID0gbGFwcGVuZChncm91cF9jbGF1c2VzX2ZpbmFsLCBjbCk7CisJCQlh ZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCAoRXhwciAqKSB2YXIsCisJCQkJCQkJCQkg Y2wtPnRsZVNvcnRHcm91cFJlZik7CisKKwkJCS8qCisJCQkgKiBUaGUgYWdncmVnYXRpb24gaW5w dXQgdGFyZ2V0IG11c3QgZW1pdCB0aGlzIHZhciB0b28uCisJCQkgKi8KKwkJCWFkZF9jb2x1bW5f dG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIChFeHByICopIHZhciwKKwkJCQkJCQkJCSBjbC0+dGxl U29ydEdyb3VwUmVmKTsKKwkJfQorCX0KKworCS8qCisJICogQnVpbGQgYSBsaXN0IG9mIGdyb3Vw aW5nIGV4cHJlc3Npb25zIGFuZCBhIGxpc3Qgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKwkgKiBTb3J0 R3JvdXBDbGF1c2VzLgorCSAqLworCWkgPSAwOworCXJlc3VsdCA9IG1ha2VOb2RlKFJlbEFnZ0lu Zm8pOworCWZvcmVhY2gobGMsIHRhcmdldC0+ZXhwcnMpCisJeworCQlJbmRleAkJc29ydGdyb3Vw cmVmID0gMDsKKwkJU29ydEdyb3VwQ2xhdXNlICpjbDsKKwkJRXhwcgkgICAqdGV4cHI7CisKKwkJ dGV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCUFzc2VydChJc0EodGV4cHIsIFZhcikp OworCisJCXNvcnRncm91cHJlZiA9IHRhcmdldC0+c29ydGdyb3VwcmVmc1tpKytdOworCQlpZiAo c29ydGdyb3VwcmVmID09IDApCisJCQljb250aW51ZTsKKworCQkvKiBmaW5kIHRoZSBTb3J0R3Jv dXBDbGF1c2UgaW4gZ3JvdXBfY2xhdXNlc19maW5hbCAqLworCQljbCA9IGdldF9zb3J0Z3JvdXBy ZWZfY2xhdXNlKHNvcnRncm91cHJlZiwgZ3JvdXBfY2xhdXNlc19maW5hbCk7CisKKwkJLyogZG8g bm90IGFkZCB0aGlzIFNvcnRHcm91cENsYXVzZSBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVk ICovCisJCWlmIChsaXN0X21lbWJlcihyZXN1bHQtPmdyb3VwX2NsYXVzZXMsIGNsKSkKKwkJCWNv bnRpbnVlOworCisJCXJlc3VsdC0+Z3JvdXBfY2xhdXNlcyA9IGxhcHBlbmQocmVzdWx0LT5ncm91 cF9jbGF1c2VzLCBjbCk7CisJCXJlc3VsdC0+Z3JvdXBfZXhwcnMgPSBsaXN0X2FwcGVuZF91bmlx dWUocmVzdWx0LT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkJCSB0ZXhwcik7CisJfQorCisJLyoK KwkgKiBDYWxjdWxhdGUgcGF0aGtleXMgdGhhdCByZXByZXNlbnQgdGhpcyBncm91cGluZyByZXF1 aXJlbWVudHMuCisJICovCisJcmVzdWx0LT5ncm91cF9wYXRoa2V5cyA9CisJCW1ha2VfcGF0aGtl eXNfZm9yX3NvcnRjbGF1c2VzKHJvb3QsIHJlc3VsdC0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJ CSAgbWFrZV90bGlzdF9mcm9tX3BhdGh0YXJnZXQodGFyZ2V0KSk7CisKKwkvKgorCSAqIEFkZCBh Z2dyZWdhdGVzIHRvIHRoZSBncm91cGluZyB0YXJnZXQuCisJICovCisJZm9yZWFjaChsYywgcm9v dC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxmaXJz dF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKwkJQWdncmVmICAgKmFnZ3JlZjsKKworCQlBc3Nl cnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisKKwkJYWdncmVmID0gKEFnZ3JlZiAq KSBjb3B5T2JqZWN0KGFjX2luZm8tPmFnZ3JlZik7CisJCW1hcmtfcGFydGlhbF9hZ2dyZWYoYWdn cmVmLCBBR0dTUExJVF9JTklUSUFMX1NFUklBTCk7CisKKwkJYWRkX2NvbHVtbl90b19wYXRodGFy Z2V0KHRhcmdldCwgKEV4cHIgKikgYWdncmVmLCAwKTsKKworCQlyZXN1bHQtPmFnZ19leHBycyA9 IGxhcHBlbmQocmVzdWx0LT5hZ2dfZXhwcnMsIGFnZ3JlZik7CisJfQorCisJLyoKKwkgKiBTaW5j ZSBuZWl0aGVyIHRhcmdldCBub3IgYWdnX2lucHV0IGlzIHN1cHBvc2VkIHRvIGJlIGlkZW50aWNh bCB0byB0aGUKKwkgKiBzb3VyY2UgcmVsdGFyZ2V0LCBjb21wdXRlIHRoZSB3aWR0aCBhbmQgY29z dCBhZ2Fpbi4KKwkgKi8KKwlzZXRfcGF0aHRhcmdldF9jb3N0X3dpZHRoKHJvb3QsIHRhcmdldCk7 CisJc2V0X3BhdGh0YXJnZXRfY29zdF93aWR0aChyb290LCBhZ2dfaW5wdXQpOworCisJcmVzdWx0 LT5yZWxpZHMgPSBibXNfY29weShyZWwtPnJlbGlkcyk7CisJcmVzdWx0LT50YXJnZXQgPSB0YXJn ZXQ7CisJcmVzdWx0LT5hZ2dfaW5wdXQgPSBhZ2dfaW5wdXQ7CisKKwkvKgorCSAqIFRoZSBudW1i ZXIgb2YgYWdncmVnYXRpb24gaW5wdXQgcm93cyBpcyBzaW1wbHkgdGhlIG51bWJlciBvZiByb3dz IG9mIHRoZQorCSAqIG5vbi1ncm91cGVkIHJlbGF0aW9uLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVu IGVzdGltYXRlZCBieSBub3cuCisJICovCisJcmVzdWx0LT5pbnB1dF9yb3dzID0gcmVsLT5yb3dz OworCisJLyogRXN0aW1hdGUgdGhlIG51bWJlciBvZiBncm91cHMgd2l0aCBlcXVhbCBncm91cGVk IGV4cHJzLiAqLworCXJlc3VsdC0+Z3JvdXBlZF9yb3dzID0gZXN0aW1hdGVfbnVtX2dyb3Vwcyhy b290LCByZXN1bHQtPmdyb3VwX2V4cHJzLAorCQkJCQkJCQkJCQkgICByZXN1bHQtPmlucHV0X3Jv d3MsIE5VTEwsIE5VTEwpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIGVhZ2VyX2Fn Z3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbgorICogCSAgQ2hlY2sgaWYgaXQncyBwb3Nz aWJsZSB0byBwcm9kdWNlIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbi4KKyAq Lworc3RhdGljIGJvb2wKK2VhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQoreworCUxpc3RDZWxsICAgKmxjOwor CisJLyoKKwkgKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBlYWdlciBhZ2dyZWdhdGlv biBjYW5ub3QgaGFuZGxlCisJICogUGxhY2VIb2xkZXJWYXIgKFBIVikuCisJICoKKwkgKiBJZiB3 ZSBrbmV3IHRoYXQgdGhlIFBIViBzaG91bGQgYmUgZXZhbHVhdGVkIGluIHRoaXMgdGFyZ2V0IChh bmQgb2YKKwkgKiBjb3Vyc2UsIGlmIGl0cyBleHByZXNzaW9uIG1hdGNoZWQgc29tZSBBZ2dyZWYg YXJndW1lbnQpLCB3ZSdkIGp1c3QgbGV0CisJICogaW5pdF9ncm91cGluZ190YXJnZXRzIGFkZCB0 aGF0IEFnZ3JlZi4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHdlIGtuZXcKKwkgKiB0aGF0IHRoZSBQ SFYgaXMgZXZhbHVhdGVkIGJlbG93IHRoZSBjdXJyZW50IHJlbCwgd2UgY291bGQgaWdub3JlIGl0 CisJICogYmVjYXVzZSB0aGUgcmVmZXJlbmNpbmcgQWdncmVmIHdvdWxkIHRha2UgY2FyZSBvZiBw cm9wYWdhdGlvbiBvZiB0aGUKKwkgKiB2YWx1ZSB0byB1cHBlciBqb2lucy4KKwkgKgorCSAqIFRo ZSBwcm9ibGVtIGlzIHRoYXQgdGhlIHNhbWUgUEhWIGNhbiBiZSBldmFsdWF0ZWQgaW4gdGhlIHRh cmdldCBvZiB0aGUKKwkgKiBjdXJyZW50IHJlbCBvciBpbiB0aGF0IG9mIGxvd2VyIHJlbCAtLS0g ZGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBwYXRocy4KKwkgKiBGb3IgZXhhbXBsZSwgY29uc2lkZXIg cmVsLT5yZWxpZHMgPSB7QSwgQiwgQ30gYW5kIGlmIHBoX2V2YWxfYXQgPSB7QiwKKwkgKiBDfS4g UGF0aCAiQSBKT0lOIChCIEpPSU4gQykiIGltcGxpZXMgdGhhdCB0aGUgUEhWIGlzIGV2YWx1YXRl ZCBieSB0aGUKKwkgKiAiKEIgSk9JTiBDKSIsIHdoaWxlIHBhdGggIihBIEpPSU4gQikgSk9JTiBD IiBldmFsdWF0ZXMgdGhlIFBIViBpdHNlbGYuCisJICovCisJZm9yZWFjaChsYywgcmVsLT5yZWx0 YXJnZXQtPmV4cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJaWYg KElzQShleHByLCBQbGFjZUhvbGRlclZhcikpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYg KElTX1NJTVBMRV9SRUwocmVsKSkKKwl7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJvb3QtPnNp bXBsZV9ydGVfYXJyYXlbcmVsLT5yZWxpZF07CisKKwkJLyoKKwkJICogcnRla2luZCAhPSBSVEVf UkVMQVRJT04gY2FzZSBpcyBub3Qgc3VwcG9ydGVkIHlldC4KKwkJICovCisJCWlmIChydGUtPnJ0 ZWtpbmQgIT0gUlRFX1JFTEFUSU9OKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIENhbGxl ciBzaG91bGQgb25seSBwYXNzIGJhc2UgcmVsYXRpb25zIG9yIGpvaW5zLiAqLworCUFzc2VydChy ZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX0JBU0VSRUwgfHwKKwkJICAgcmVsLT5yZWxvcHRraW5k ID09IFJFTE9QVF9KT0lOUkVMKTsKKworCS8qCisJICogQ2hlY2sgaWYgYWxsIGFnZ3JlZ2F0ZSBl eHByZXNzaW9ucyBjYW4gYmUgZXZhbHVhdGVkIG9uIHRoaXMgcmVsYXRpb24KKwkgKiBsZXZlbC4K KwkgKi8KKwlmb3JlYWNoKGxjLCByb290LT5hZ2dfY2xhdXNlX2xpc3QpCisJeworCQlBZ2dDbGF1 c2VJbmZvICphY19pbmZvID0gbGZpcnN0X25vZGUoQWdnQ2xhdXNlSW5mbywgbGMpOworCisJCUFz c2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsKKworCQkvKgorCQkgKiBHaXZlIHVw IGlmIGFueSBhZ2dyZWdhdGUgbmVlZHMgcmVsYXRpb25zIG90aGVyIHRoYW4gdGhlIGN1cnJlbnQg b25lLgorCQkgKgorCQkgKiBJZiB0aGUgYWdncmVnYXRlIG5lZWRzIHRoZSBjdXJyZW50IHJlbCBw bHVzIGFueXRoaW5nIGVsc2UsIHRoZW4gdGhlCisJCSAqIHByb2JsZW0gaXMgdGhhdCBncm91cGlu ZyBvZiB0aGUgY3VycmVudCByZWxhdGlvbiBjb3VsZCBtYWtlIHNvbWUKKwkJICogaW5wdXQgdmFy aWFibGVzIHVuYXZhaWxhYmxlIGZvciB0aGUgImhpZ2hlciBhZ2dyZWdhdGUiLCBhbmQgaXQnZAor CQkgKiBhbHNvIGRlY3JlYXNlIHRoZSBudW1iZXIgb2YgaW5wdXQgcm93cyB0aGUgImhpZ2hlciBh Z2dyZWdhdGUiCisJCSAqIHJlY2VpdmVzLgorCQkgKgorCQkgKiBJZiB0aGUgYWdncmVnYXRlIGRv ZXMgbm90IGV2ZW4gbmVlZCB0aGUgY3VycmVudCByZWwsIHRoZW4gdGhlCisJCSAqIGN1cnJlbnQg cmVsIHNob3VsZCBiZSBncm91cGVkIGJlY2F1c2Ugd2UgZG8gbm90IHN1cHBvcnQgam9pbiBvZiB0 d28KKwkJICogZ3JvdXBlZCByZWxhdGlvbnMuCisJCSAqLworCQlpZiAoIWJtc19pc19zdWJzZXQo YWNfaW5mby0+YWdnX2V2YWxfYXQsIHJlbC0+cmVsaWRzKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9 CisKKwkvKgorCSAqIENoZWNrIGlmIGFsbCBncm91cGluZyBleHByZXNzaW9ucyB0aGF0IGFyZSBh cHBsaWFibGUgdG8gdGhpcyByZWxhdGlvbgorCSAqIGNhbiBiZSBldmFsdWF0ZWQgb24gdGhpcyBy ZWxhdGlvbiBsZXZlbC4KKwkgKi8KKwlmb3JlYWNoKGxjLCByb290LT5ncm91cF9leHByX2xpc3Qp CisJeworCQlHcm91cEV4cHJJbmZvICpnZV9pbmZvID0gbGZpcnN0X25vZGUoR3JvdXBFeHBySW5m bywgbGMpOworCQlWYXIJCSAgICpnZV92YXIgPSBjYXN0Tm9kZShWYXIsIGdlX2luZm8tPmV4cHIp OworCisJCS8qCisJCSAqIE5vdCBpbnRlcmVzdGVkIGlmIHRoZSBncm91cGluZyBleHByZXNzaW9u IGlzIG5vdCBhcHBsaWFibGUgdG8gdGhpcworCQkgKiByZWxhdGlvbi4KKwkJICovCisJCWlmICgh Ym1zX2lzX21lbWJlcihnZV92YXItPnZhcm5vLCByZWwtPnJlbGlkcykpCisJCQljb250aW51ZTsK KworCQkvKgorCQkgKiBHaXZlIHVwIGlmIGFueSBncm91cGluZyBleHByZXNzaW9uIGNhbiBiZSBu dWxsZWQgYnkgYW4gb3V0ZXIgam9pbgorCQkgKiBhYm92ZSB0aGlzIHJlbGF0aW9uLgorCQkgKi8K KwkJaWYgKCFibXNfaXNfc3Vic2V0KGdlX3Zhci0+dmFybnVsbGluZ3JlbHMsIHJlbC0+cmVsaWRz KSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIGlu aXRfZ3JvdXBpbmdfdGFyZ2V0cworICoJICBJbml0aWFsaXplIHRhcmdldCBmb3IgZ3JvdXBlZCBw YXRocyAodGFyZ2V0KSBhcyB3ZWxsIGFzIGEgdGFyZ2V0IGZvcgorICoJICBwYXRocyB0aGF0IGdl bmVyYXRlIGlucHV0IGZvciB0aGUgZ3JvdXBlZCBwYXRocyAoYWdnX2lucHV0KS4KKyAqCisgKiBn cm91cF9leHByc19leHRyYV9wIHJlY2VpdmVzIGEgbGlzdCBvZiBWYXIgbm9kZXMgZm9yIHdoaWNo IHdlIG5lZWQgdG8KKyAqIGNvbnN0cnVjdCBTb3J0R3JvdXBDbGF1c2UuICBUaG9zZSBWYXJzIHdp bGwgdGhlbiBiZSB1c2VkIGFzIGFkZGl0aW9uYWwKKyAqIGdyb3VwaW5nIGV4cHJlc3Npb25zLCBm b3IgdGhlIHNha2Ugb2Ygam9pbiBjbGF1c2VzLgorICoKKyAqIFJldHVybiB0cnVlIGlmZiB0aGUg dGFyZ2V0cyBjb3VsZCBiZSBpbml0aWFsaXplZC4KKyAqLworc3RhdGljIGJvb2wKK2luaXRfZ3Jv dXBpbmdfdGFyZ2V0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAorCQkJCQkg IFBhdGhUYXJnZXQgKnRhcmdldCwgUGF0aFRhcmdldCAqYWdnX2lucHV0LAorCQkJCQkgIExpc3Qg Kipncm91cF9leHByc19leHRyYV9wKQoreworCUxpc3RDZWxsICAgKmxjOworCUxpc3QJICAgKnBv c3NpYmx5X2RlcGVuZGVudCA9IE5JTDsKKworCWZvcmVhY2gobGMsIHJlbC0+cmVsdGFyZ2V0LT5l eHBycykKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlJbmRl eAkJc29ydGdyb3VwcmVmOworCisJCS8qCisJCSAqIEdpdmVuIHRoYXQgUGxhY2VIb2xkZXJWYXIg Y3VycmVudGx5IHByZXZlbnRzIHVzIGZyb20gZG9pbmcgZWFnZXIKKwkJICogYWdncmVnYXRpb24s IHRoZSBzb3VyY2UgdGFyZ2V0IGNhbm5vdCBjb250YWluIGFueXRoaW5nIG1vcmUgY29tcGxleAor CQkgKiB0aGFuIGEgVmFyLgorCQkgKi8KKwkJQXNzZXJ0KElzQShleHByLCBWYXIpKTsKKworCQkv KiBHZXQgdGhlIHNvcnRncm91cHJlZiBpZiB0aGUgZXhwciBjYW4gYWN0IGFzIGdyb3VwaW5nIGV4 cHJlc3Npb24uICovCisJCXNvcnRncm91cHJlZiA9IGdldF9leHByZXNzaW9uX3NvcnRncm91cHJl Zihyb290LCBleHByKTsKKwkJaWYgKHNvcnRncm91cHJlZiA+IDApCisJCXsKKwkJCS8qCisJCQkg KiBJZiB0aGUgdGFyZ2V0IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgdGhlIGdyb3VwaW5nIGtl eSwgaXQKKwkJCSAqIHNob3VsZCBiZSBlbWl0dGVkIGJ5IHRoZSBncm91cGVkIHBhdGhzIHRoYXQg aGF2ZSBiZWVuIHB1c2hlZAorCQkJICogZG93biB0byB0aGlzIHJlbGF0aW9uIGxldmVsLgorCQkJ ICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCBleHByLCBzb3J0Z3JvdXBy ZWYpOworCisJCQkvKgorCQkJICogLi4uIGFuZCBpdCBhbHNvIHNob3VsZCBiZSBlbWl0dGVkIGJ5 IHRoZSBpbnB1dCBwYXRocworCQkJICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQoYWdn X2lucHV0LCBleHByLCBzb3J0Z3JvdXByZWYpOworCQl9CisJCWVsc2UKKwkJeworCQkJYm9vbAlz YWZlX3RvX3B1c2g7CisKKwkJCWlmIChpc192YXJfbmVlZGVkX2J5X2pvaW4ocm9vdCwgKFZhciAq KSBleHByLCByZWwsICZzYWZlX3RvX3B1c2gpKQorCQkJeworCQkJCS8qCisJCQkJICogR2l2ZSB1 cCBpZiB0aGlzIGV4cHJlc3Npb24gaXMgbm90IHNhZmUgdG8gYmUgdXNlZCBhcyBhCisJCQkJICog Z3JvdXBpbmcga2V5IGF0IHRoaXMgcmVsYXRpb24gbGV2ZWwuCisJCQkJICovCisJCQkJaWYgKCFz YWZlX3RvX3B1c2gpCisJCQkJCXJldHVybiBmYWxzZTsKKworCQkJCS8qCisJCQkJICogVGhlIGV4 cHJlc3Npb24gaXMgbmVlZGVkIGZvciBhIGpvaW4sIGhvd2V2ZXIgaXQncyBuZWl0aGVyIGluCisJ CQkJICogdGhlIEdST1VQIEJZIGNsYXVzZSBub3IgY2FuIGl0IGJlIGRlcml2ZWQgZnJvbSBpdCB1 c2luZyBFQy4KKwkJCQkgKiAoT3RoZXJ3aXNlIGl0IHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGFk ZGVkIHRvIHRoZSB0YXJnZXRzCisJCQkJICogYWJvdmUuKSAgV2UgbmVlZCB0byBjb25zdHJ1Y3Qg YSBzcGVjaWFsIFNvcnRHcm91cENsYXVzZSBmb3IKKwkJCQkgKiB0aGlzIGV4cHJlc3Npb24uCisJ CQkJICoKKwkJCQkgKiBOb3RlIHRoYXQgaXRzIHRsZVNvcnRHcm91cFJlZiBuZWVkcyB0byBiZSB1 bmlxdWUgd2l0aGluCisJCQkJICogYWdnX2lucHV0LCBzbyB3ZSBuZWVkIHRvIHBvc3Rwb25lIGNy ZWF0aW9uIG9mIHRoaXMKKwkJCQkgKiBTb3J0R3JvdXBDbGF1c2UgdW50aWwgd2UncmUgZG9uZSB3 aXRoIHRoZSBpdGVyYXRpb24gb2YKKwkJCQkgKiByZWwtPnJlbHRhcmdldC0+ZXhwcnMuICBBbmQg aXQgbWFrZXMgc2Vuc2UgZm9yIHRoZSBjYWxsZXIgdG8KKwkJCQkgKiBkbyBzb21lIG1vcmUgY2hl Y2tzIGJlZm9yZSBpdCBzdGFydHMgdG8gY3JlYXRlIHRob3NlCisJCQkJICogU29ydEdyb3VwQ2xh dXNlcy4KKwkJCQkgKi8KKwkJCQkqZ3JvdXBfZXhwcnNfZXh0cmFfcCA9IGxhcHBlbmQoKmdyb3Vw X2V4cHJzX2V4dHJhX3AsIGV4cHIpOworCQkJfQorCQkJZWxzZSBpZiAoaXNfdmFyX2luX2FnZ3Jl Zl9vbmx5KHJvb3QsIChWYXIgKikgZXhwcikpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBBbm90aGVy IHJlYXNvbiB3ZSBtaWdodCBuZWVkIHRoaXMgdmFyaWFibGUgaXMgdGhhdCBzb21lCisJCQkJICog YWdncmVnYXRlIHB1c2hlZCBkb3duIHRvIHRoaXMgcmVsYXRpb24gcmVmZXJlbmNlcyBpdC4gSW4K KwkJCQkgKiBzdWNoIGEgY2FzZSwgYWRkIGl0IHRvICJhZ2dfaW5wdXQiLCBidXQgbm90IHRvICJ0 YXJnZXQiLgorCQkJCSAqIEhvd2V2ZXIsIGlmIHRoZSBhZ2dyZWdhdGUgaXMgbm90IHRoZSBvbmx5 IHJlYXNvbiBmb3IgdGhlIHZhcgorCQkJCSAqIHRvIGJlIGluIHRoZSB0YXJnZXQsIHNvbWUgbW9y ZSBjaGVja3MgbmVlZCB0byBiZSBwZXJmb3JtZWQKKwkJCQkgKiBiZWxvdy4KKwkJCQkgKi8KKwkJ CQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgZXhwcik7CisJCQl9CisJ CQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBUaGUgVmFyIGNhbiBiZSBmdW5jdGlvbmFsbHkg ZGVwZW5kZW50IG9uIGFub3RoZXIgZXhwcmVzc2lvbgorCQkJCSAqIG9mIHRoZSB0YXJnZXQsIGJ1 dCB3ZSBjYW5ub3QgY2hlY2sgdGhhdCB1bnRpbCB3ZSd2ZSBidWlsdAorCQkJCSAqIGFsbCB0aGUg ZXhwcmVzc2lvbnMgZm9yIHRoZSB0YXJnZXQuCisJCQkJICovCisJCQkJcG9zc2libHlfZGVwZW5k ZW50ID0gbGFwcGVuZChwb3NzaWJseV9kZXBlbmRlbnQsIGV4cHIpOworCQkJfQorCQl9CisJfQor CisJLyoKKwkgKiBOb3cgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIGV4cHJlc3Npb24gaXMgZnVu Y3Rpb25hbGx5IGRlcGVuZGVudCBvbgorCSAqIGFub3RoZXIgb25lLgorCSAqLworCWZvcmVhY2go bGMsIHBvc3NpYmx5X2RlcGVuZGVudCkKKwl7CisJCVZhcgkJICAgKnR2YXI7CisJCUxpc3QJICAg KmRlcHMgPSBOSUw7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZTsKKworCQl0dmFyID0gbGZpcnN0X25v ZGUoVmFyLCBsYyk7CisJCXJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbdHZhci0+dmFybm9d OworCisJCS8qCisJCSAqIENoZWNrIGlmIHRoZSBWYXIgY2FuIGJlIGluIHRoZSBncm91cGluZyBr ZXkgZXZlbiB0aG91Z2ggaXQncyBub3QKKwkJICogbWVudGlvbmVkIGJ5IHRoZSBHUk9VUCBCWSBj bGF1c2UgKGFuZCBjb3VsZCBub3QgYmUgZGVyaXZlZCB1c2luZworCQkgKiBFQ3MpLgorCQkgKi8K KwkJaWYgKGNoZWNrX2Z1bmN0aW9uYWxfZ3JvdXBpbmcocnRlLT5yZWxpZCwgdHZhci0+dmFybm8s CisJCQkJCQkJCQkgIHR2YXItPnZhcmxldmVsc3VwLAorCQkJCQkJCQkJICB0YXJnZXQtPmV4cHJz LCAmZGVwcykpCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgdmFyIHNob3VsZG4ndCBiZSBhY3R1YWxs eSB1c2VkIGZvciBncm91cGluZyBrZXkgZXZhbHVhdGlvbgorCQkJICogKGluc3RlYWQsIHRoZSBv bmUgdGhpcyBkZXBlbmRzIG9uIHdpbGwgYmUpLCBzbyBzb3J0Z3JvdXByZWYKKwkJCSAqIHNob3Vs ZCBub3QgYmUgaW1wb3J0YW50LgorCQkJICovCisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFy Z2V0KHRhcmdldCwgKEV4cHIgKikgdHZhcik7CisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFy Z2V0KGFnZ19pbnB1dCwgKEV4cHIgKikgdHZhcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgor CQkJICogQXMgbG9uZyBhcyB0aGUgcXVlcnkgaXMgc2VtYW50aWNhbGx5IGNvcnJlY3QsIGFycml2 aW5nIGhlcmUKKwkJCSAqIG1lYW5zIHRoYXQgdGhlIHZhciBpcyByZWZlcmVuY2VkIGJ5IGEgZ2Vu ZXJpYyBncm91cGluZworCQkJICogZXhwcmVzc2lvbiBidXQgbm90IHJlZmVyZW5jZWQgYnkgYW55 IGpvaW4uCisJCQkgKgorCQkJICogSWYgdGhlIGVhZ2VyIGFnZ3JlZ2F0aW9uIHdpbGwgc3VwcG9y dCBnZW5lcmljIGdyb3VwaW5nCisJCQkgKiBleHByZXNzaW9uIGluIHRoZSBmdXR1cmUsIGNyZWF0 ZV9yZWxfYWdnX2luZm8oKSB3aWxsIGhhdmUgdG8gYWRkCisJCQkgKiB0aGlzIHZhcmlhYmxlIHRv ICJhZ2dfaW5wdXQiIHRhcmdldCBhbmQgYWxzbyBhZGQgdGhlIHdob2xlCisJCQkgKiBnZW5lcmlj IGV4cHJlc3Npb24gdG8gInRhcmdldCIuCisJCQkgKi8KKwkJCXJldHVybiBmYWxzZTsKKwkJfQor CX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogaXNfdmFyX2luX2FnZ3JlZl9vbmx5Cisg KgkgIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIFZhciBhcHBlYXJzIGluIGFnZ3JlZ2F0ZSBleHBy ZXNzaW9ucyBhbmQgbm90CisgKgkgIGVsc2V3aGVyZSBpbiB0aGUgdGFyZ2V0bGlzdCBhbmQgaGF2 aW5nUXVhbC4KKyAqLworc3RhdGljIGJvb2wKK2lzX3Zhcl9pbl9hZ2dyZWZfb25seShQbGFubmVy SW5mbyAqcm9vdCwgVmFyICp2YXIpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKgorCSAqIFNl YXJjaCB0aGUgbGlzdCBvZiBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBWYXIuCisJICov CisJZm9yZWFjaChsYywgcm9vdC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5m byAqYWNfaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKwkJTGlzdAkJICAq dmFyczsKKworCQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisKKwkJaWYg KCFibXNfaXNfbWVtYmVyKHZhci0+dmFybm8sIGFjX2luZm8tPmFnZ19ldmFsX2F0KSkKKwkJCWNv bnRpbnVlOworCisJCXZhcnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgYWNfaW5mby0+YWdn cmVmLAorCQkJCQkJCSAgIFBWQ19SRUNVUlNFX0FHR1JFR0FURVMgfAorCQkJCQkJCSAgIFBWQ19S RUNVUlNFX1dJTkRPV0ZVTkNTIHwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMp OworCisJCWlmIChsaXN0X21lbWJlcih2YXJzLCB2YXIpKQorCQl7CisJCQlsaXN0X2ZyZWUodmFy cyk7CisJCQlicmVhazsKKwkJfQorCisJCWxpc3RfZnJlZSh2YXJzKTsKKwl9CisKKwlyZXR1cm4g KGxjICE9IE5VTEwgJiYgIWxpc3RfbWVtYmVyKHJvb3QtPnRsaXN0X3ZhcnMsIHZhcikpOworfQor CisvKgorICogaXNfdmFyX25lZWRlZF9ieV9qb2luCisgKgkgIENoZWNrIGlmIHRoZSBnaXZlbiBW YXIgaXMgbmVlZGVkIGJ5IGpvaW5zIGFib3ZlIHRoZSBjdXJyZW50IHJlbC4gIFdlIGFsc28KKyAq CSAgcmV0dXJuIGluICcqc2FmZV90b19wdXNoJyB3aGV0aGVyIGl0J3Mgc2FmZSB0byB1c2UgdGhp cyBWYXIgYXMgYSBncm91cGluZworICoJICBrZXkgYXQgdGhpcyByZWwgbGV2ZWwuCisgKgorICog Q29uc2lkZXIgcHVzaGluZyB0aGUgYWdncmVnYXRlIGF2ZyhiLnkpIGRvd24gdG8gcmVsYXRpb24g YiBmb3IgdGhlIGZvbGxvd2luZworICogcXVlcnk6CisgKgorICogICAgU0VMRUNUIGEuaSwgYXZn KGIueSkKKyAqICAgIEZST00gYSBKT0lOIGIgT04gYS5qID0gYi5qCisgKiAgICBHUk9VUCBCWSBh Lmk7CisgKgorICogQ29sdW1uIGIuaiBuZWVkcyB0byBiZSB1c2VkIGFzIHRoZSBncm91cGluZyBr ZXkgYmVjYXVzZSBvdGhlcndpc2UgaXQgY2Fubm90CisgKiBmaW5kIGl0cyB3YXkgdG8gdGhlIGlu cHV0IG9mIHRoZSBqb2luIGV4cHJlc3Npb24uCisgKi8KK3N0YXRpYyBib29sCitpc192YXJfbmVl ZGVkX2J5X2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyLCBSZWxPcHRJbmZvICpyZWws CisJCQkJCSAgYm9vbCAqc2FmZV90b19wdXNoKQoreworCVJlbGlkcwkJcmVsaWRzOworCWludAkJ CWF0dG5vOworCVJlbE9wdEluZm8gKmJhc2VyZWw7CisKKwkvKgorCSAqIE5vdGUgdGhhdCB3aGVu IHdlIGFyZSBjaGVja2luZyBpZiB0aGUgVmFyIGlzIG5lZWRlZCBieSBqb2lucyBhYm92ZSwgd2UK KwkgKiB3YW50IHRvIGV4Y2x1ZGUgdGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgVmFyIGlzIG9ubHkg bmVlZGVkIGluIGZpbmFsCisJICogb3V0cHV0LiAgU28gaW5jbHVkZSAicmVsYXRpb24gMCIgaGVy ZS4KKwkgKi8KKwlyZWxpZHMgPSBibXNfY29weShyZWwtPnJlbGlkcyk7CisJcmVsaWRzID0gYm1z X2FkZF9tZW1iZXIocmVsaWRzLCAwKTsKKworCWJhc2VyZWwgPSBmaW5kX2Jhc2VfcmVsKHJvb3Qs IHZhci0+dmFybm8pOworCWF0dG5vID0gdmFyLT52YXJhdHRubyAtIGJhc2VyZWwtPm1pbl9hdHRy OworCisJLyoKKwkgKiBJZiB0aGUgYmFzZXJlbCB0aGlzIFZhciBiZWxvbmdzIHRvIGNhbiBiZSBu dWxsZWQgYnkgb3V0ZXIgam9pbnMgdGhhdCBhcmUKKwkgKiBhYm92ZSB0aGUgY3VycmVudCByZWws IHRoZW4gaXQgaXMgbm90IHNhZmUgdG8gdXNlIHRoaXMgVmFyIGFzIGEgZ3JvdXBpbmcKKwkgKiBr ZXkgYXQgY3VycmVudCByZWwgbGV2ZWwuCisJICovCisJKnNhZmVfdG9fcHVzaCA9IGJtc19pc19z dWJzZXQoYmFzZXJlbC0+bnVsbGluZ19yZWxpZHMsIHJlbC0+cmVsaWRzKTsKKworCXJldHVybiBi bXNfbm9uZW1wdHlfZGlmZmVyZW5jZShiYXNlcmVsLT5hdHRyX25lZWRlZFthdHRub10sIHJlbGlk cyk7Cit9CisKKy8qCisgKiBnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYKKyAqCSAgUmV0dXJu IHNvcnRncm91cHJlZiBpZiB0aGUgZ2l2ZW4gJ2V4cHInIGNhbiBiZSB1c2VkIGFzIGEgZ3JvdXBp bmcKKyAqCSAgZXhwcmVzc2lvbiBpbiBncm91cGVkIHBhdGhzIGZvciBiYXNlIG9yIGpvaW4gcmVs YXRpb25zLCBvciAwIG90aGVyd2lzZS4KKyAqCisgKiBOb3RlIHRoYXQgd2UgYWxzbyBuZWVkIHRv IGNoZWNrIGlmIHRoZSAnZXhwcicgaXMga25vd24gZXF1YWwgdG8gb3RoZXIgZXhwcnMKKyAqIGR1 ZSB0byBlcXVpdmFsZW5jZSByZWxhdGlvbnNoaXBzIHRoYXQgY2FuIGFjdCBhcyBncm91cGluZyBl eHByZXNzaW9ucy4KKyAqLworc3RhdGljIEluZGV4CitnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXBy ZWYoUGxhbm5lckluZm8gKnJvb3QsIEV4cHIgKmV4cHIpCit7CisJTGlzdENlbGwgICAqbGM7CisK Kwlmb3JlYWNoKGxjLCByb290LT5ncm91cF9leHByX2xpc3QpCisJeworCQlHcm91cEV4cHJJbmZv ICpnZV9pbmZvID0gbGZpcnN0X25vZGUoR3JvdXBFeHBySW5mbywgbGMpOworCisJCUFzc2VydChJ c0EoZ2VfaW5mby0+ZXhwciwgVmFyKSk7CisKKwkJaWYgKGVxdWFsKGdlX2luZm8tPmV4cHIsIGV4 cHIpIHx8CisJCQlleHByc19rbm93bl9lcXVhbChyb290LCAoTm9kZSAqKSBleHByLCAoTm9kZSAq KSBnZV9pbmZvLT5leHByLAorCQkJCQkJCSAgZ2VfaW5mby0+YnRyZWVfb3BmYW1pbHkpKQorCQl7 CisJCQlBc3NlcnQoZ2VfaW5mby0+c29ydGdyb3VwcmVmID4gMCk7CisKKwkJCXJldHVybiBnZV9p bmZvLT5zb3J0Z3JvdXByZWY7CisJCX0KKwl9CisKKwkvKiBUaGUgZXhwcmVzc2lvbiBjYW5ub3Qg YmUgdXNlZCBhcyBncm91cGluZyBrZXkuICovCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9z ZWxmdW5jcy5jCmluZGV4IDVmNWQ3OTU5ZDguLjg3N2E2MmE2MmUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9z ZWxmdW5jcy5jCkBAIC0zMzEzLDEwICszMzEzLDExIEBAIGFkZF91bmlxdWVfZ3JvdXBfdmFyKFBs YW5uZXJJbmZvICpyb290LCBMaXN0ICp2YXJpbmZvcywKIAogCQkvKgogCQkgKiBEcm9wIGtub3du LWVxdWFsIHZhcnMsIGJ1dCBvbmx5IGlmIHRoZXkgYmVsb25nIHRvIGRpZmZlcmVudAotCQkgKiBy ZWxhdGlvbnMgKHNlZSBjb21tZW50cyBmb3IgZXN0aW1hdGVfbnVtX2dyb3VwcykKKwkJICogcmVs YXRpb25zIChzZWUgY29tbWVudHMgZm9yIGVzdGltYXRlX251bV9ncm91cHMpLiAgV2UgYXJlbid0 IHRvbworCQkgKiBmdXNzeSBhYm91dCB0aGUgc2VtYW50aWNzIG9mICJlcXVhbCIgaGVyZS4KIAkJ ICovCiAJCWlmICh2YXJkYXRhLT5yZWwgIT0gdmFyaW5mby0+cmVsICYmCi0JCQlleHByc19rbm93 bl9lcXVhbChyb290LCB2YXIsIHZhcmluZm8tPnZhcikpCisJCQlleHByc19rbm93bl9lcXVhbChy b290LCB2YXIsIHZhcmluZm8tPnZhciwgSW52YWxpZE9pZCkpCiAJCXsKIAkJCWlmICh2YXJpbmZv LT5uZGlzdGluY3QgPD0gbmRpc3RpbmN0KQogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCA2 ODNhYjUxZTZiLi5mZDEwNDk4MDI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMzg5LDkgKzM4 OSwxMiBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkvKiBsaXN0IG9mIEFnZ0NsYXVzZUluZm9zICov CiAJTGlzdAkgICAqYWdnX2NsYXVzZV9saXN0OwogCi0JLyogTGlzdCBvZiBHcm91cEV4cHJJbmZv cyAqLworCS8qIGxpc3Qgb2YgR3JvdXBFeHBySW5mb3MgKi8KIAlMaXN0CSAgICpncm91cF9leHBy X2xpc3Q7CiAKKwkvKiBsaXN0IG9mIHBsYWluIFZhcnMgY29udGFpbmVkIGluIHRhcmdldGxpc3Qg YW5kIGhhdmluZ1F1YWwgKi8KKwlMaXN0CSAgICp0bGlzdF92YXJzOworCiAJLyogYXJyYXkgb2Yg UGxhY2VIb2xkZXJJbmZvcyBpbmRleGVkIGJ5IHBoaWQgKi8KIAlzdHJ1Y3QgUGxhY2VIb2xkZXJJ bmZvICoqcGxhY2Vob2xkZXJfYXJyYXkgcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlLCBh cnJheV9zaXplKHBsYWNlaG9sZGVyX2FycmF5X3NpemUpKTsKIAkvKiBhbGxvY2F0ZWQgc2l6ZSBv ZiBhcnJheSAqLwpAQCAtNDM0LDYgKzQzNywxMiBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkgKi8K IAlSZWxJbmZvTGlzdAkJdXBwZXJfcmVsc1tVUFBFUlJFTF9GSU5BTCArIDFdIHBnX25vZGVfYXR0 cihyZWFkX3dyaXRlX2lnbm9yZSk7CiAKKwkvKgorCSAqIGxpc3Qgb2YgZ3JvdXBlZCByZWxhdGlv biBSZWxBZ2dJbmZvcy4gT25lIGluc3RhbmNlIG9mIFJlbEFnZ0luZm8gcGVyCisJICogaXRlbSBv ZiB0aGUgdXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10gbGlzdC4KKwkgKi8K KwlSZWxJbmZvTGlzdCAqYWdnX2luZm9fbGlzdDsKKwogCS8qIFJlc3VsdCB0bGlzdHMgY2hvc2Vu IGJ5IGdyb3VwaW5nX3BsYW5uZXIgZm9yIHVwcGVyLXN0YWdlIHByb2Nlc3NpbmcgKi8KIAlzdHJ1 Y3QgUGF0aFRhcmdldCAqdXBwZXJfdGFyZ2V0c1tVUFBFUlJFTF9GSU5BTCArIDFdIHBnX25vZGVf YXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGlt aXplci9wYXRobm9kZS5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKaW5kZXgg MTEyZTdjMjNkNC4uMDJkYTY4YTc1MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKQEAgLTMx NCw2ICszMTQsMTAgQEAgZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWwoUGxhbm5lcklu Zm8gKnJvb3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbF9u b2VycihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZvICpm aW5kX2Jhc2VfcmVsX2lnbm9yZV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwog ZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlk cyByZWxpZHMpOworZXh0ZXJuIHZvaWQgYWRkX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCQkJUmVsQWdnSW5mbyAqYWdnX2luZm8pOworZXh0ZXJu IFJlbE9wdEluZm8gKmZpbmRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyBy ZWxpZHMsCisJCQkJCQkJCQlSZWxBZ2dJbmZvICoqYWdnX2luZm9fcCk7CiBleHRlcm4gUmVsT3B0 SW5mbyAqYnVpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCSAgUmVsaWRz IGpvaW5yZWxpZHMsCiAJCQkJCQkJCSAgUmVsT3B0SW5mbyAqb3V0ZXJfcmVsLApAQCAtMzQ4LDQg KzM1Miw1IEBAIGV4dGVybiBSZWxPcHRJbmZvICpidWlsZF9jaGlsZF9qb2luX3JlbChQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCQlSZWxPcHRJbmZvICpwYXJlbnRfam9pbnJlbCwgTGlzdCAq cmVzdHJpY3RsaXN0LAogCQkJCQkJCQkJCVNwZWNpYWxKb2luSW5mbyAqc2ppbmZvKTsKIAorZXh0 ZXJuIFJlbEFnZ0luZm8gKmNyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCk7CiAjZW5kaWYJCQkJCQkJLyogUEFUSE5PREVfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aHMuaAppbmRleCBkODE5OTMzM2M5Li5hZTdhOGVkNzQyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMu aApAQCAtMTU5LDcgKzE1OSw4IEBAIGV4dGVybiBMaXN0ICpnZW5lcmF0ZV9qb2luX2ltcGxpZWRf ZXF1YWxpdGllc19mb3JfZWNzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJCSAgUmVs aWRzIGpvaW5fcmVsaWRzLAogCQkJCQkJCQkJCQkJCSAgUmVsaWRzIG91dGVyX3JlbGlkcywKIAkJ CQkJCQkJCQkJCQkgIFJlbE9wdEluZm8gKmlubmVyX3JlbCk7Ci1leHRlcm4gYm9vbCBleHByc19r bm93bl9lcXVhbChQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqaXRlbTEsIE5vZGUgKml0ZW0yKTsK K2V4dGVybiBib29sIGV4cHJzX2tub3duX2VxdWFsKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpp dGVtMSwgTm9kZSAqaXRlbTIsCisJCQkJCQkJICBPaWQgb3BmYW1pbHkpOwogZXh0ZXJuIEVxdWl2 YWxlbmNlQ2xhc3MgKm1hdGNoX2VjbGFzc2VzX3RvX2ZvcmVpZ25fa2V5X2NvbChQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJCQkJICAgRm9yZWlnbktleU9wdEluZm8gKmZraW5mbywKIAkJ CQkJCQkJCQkJCQkJICAgaW50IGNvbG5vKTsKLS0gCjIuNDMuMAoK --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0005-Implement-functions-that-generate-paths-for-grouped-relations.patch" Content-Disposition: attachment; filename="v9-0005-Implement-functions-that-generate-paths-for-grouped-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5ksiif4 RnJvbSAwZGY2MGIxYTU1NjdlZWU1N2I3NDM3Njc3ZDEwZDc3YzcwNjBiYTQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNjowNTo1MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDUvMTBdIEltcGxlbWVudCBmdW5jdGlvbnMgdGhhdCBnZW5lcmF0ZSBwYXRocyBmb3IgZ3JvdXBl ZAogcmVsYXRpb25zCgpUaGlzIGNvbW1pdCBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbnMgdGhhdCBn ZW5lcmF0ZSBwYXRocyBmb3IgZ3JvdXBlZApyZWxhdGlvbnMgYnkgYWRkaW5nIHNvcnRlZCBhbmQg aGFzaGVkIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMgb24gdG9wCm9mIHBhdGhzIG9mIHRoZSBw bGFpbiBiYXNlIG9yIGpvaW4gcmVsYXRpb25zLgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2FsbHBhdGhzLmMgfCAzMDcgKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL29wdGlt aXplci9wYXRocy5oICAgICAgICAgfCAgIDQgKwogMyBmaWxlcyBjaGFuZ2VkLCAzMTUgaW5zZXJ0 aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMu YwppbmRleCBkMWI5NzQzNjdiLi4wYzJmYWU5NjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2FsbHBhdGhzLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aHMu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbmNhdC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9w bGFubmVyLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3ByZXAuaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvdGxpc3QuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xhdXNlLmgiCiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNldHJlZS5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUgInBvcnQvcGdf Yml0dXRpbHMuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCiAKIAogLyog Qml0bWFzayBmbGFncyBmb3IgcHVzaGRvd25fc2FmZXR5X2luZm8udW5zYWZlRmxhZ3MgKi8KQEAg LTMyOTYsNiArMzI5OCwzMTEgQEAgZ2VuZXJhdGVfdXNlZnVsX2dhdGhlcl9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBib29sIG92ZXJyaWRlX3IKIAl9CiB9CiAKKy8q CisgKiBnZW5lcmF0ZV9ncm91cGVkX3BhdGhzCisgKgkJR2VuZXJhdGUgcGF0aHMgZm9yIGEgZ3Jv dXBlZCByZWxhdGlvbiBieSBhZGRpbmcgc29ydGVkIGFuZCBoYXNoZWQKKyAqCQlwYXJ0aWFsIGFn Z3JlZ2F0aW9uIHBhdGhzIG9uIHRvcCBvZiBwYXRocyBvZiB0aGUgcGxhaW4gYmFzZSBvciBqb2lu CisgKgkJcmVsYXRpb24uCisgKgorICogVGhlIGluZm9ybWF0aW9uIG5lZWRlZCBhcmUgcHJvdmlk ZWQgYnkgdGhlIFJlbEFnZ0luZm8gc3RydWN0dXJlLgorICovCit2b2lkCitnZW5lcmF0ZV9ncm91 cGVkX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWxfZ3JvdXBlZCwKKwkJ CQkJICAgUmVsT3B0SW5mbyAqcmVsX3BsYWluLCBSZWxBZ2dJbmZvICphZ2dfaW5mbykKK3sKKwlB Z2dDbGF1c2VDb3N0cyBhZ2dfY29zdHM7CisJYm9vbAkJY2FuX2hhc2g7CisJYm9vbAkJY2FuX3Nv cnQ7CisJUGF0aAkgICAqY2hlYXBlc3RfdG90YWxfcGF0aCA9IE5VTEw7CisJUGF0aAkgICAqY2hl YXBlc3RfcGFydGlhbF9wYXRoID0gTlVMTDsKKwlkb3VibGUJCWROdW1Hcm91cHMgPSAwOworCWRv dWJsZQkJZE51bVBhcnRpYWxHcm91cHMgPSAwOworCisJaWYgKElTX0RVTU1ZX1JFTChyZWxfcGxh aW4pKQorCXsKKwkJbWFya19kdW1teV9yZWwocmVsX2dyb3VwZWQpOworCQlyZXR1cm47CisJfQor CisJTWVtU2V0KCZhZ2dfY29zdHMsIDAsIHNpemVvZihBZ2dDbGF1c2VDb3N0cykpOworCWdldF9h Z2dfY2xhdXNlX2Nvc3RzKHJvb3QsIEFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLCAmYWdnX2Nvc3Rz KTsKKworCS8qCisJICogRGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBwb3NzaWJsZSB0byBwZXJmb3Jt IHNvcnQtYmFzZWQgaW1wbGVtZW50YXRpb25zIG9mCisJICogZ3JvdXBpbmcuCisJICovCisJY2Fu X3NvcnQgPSBncm91cGluZ19pc19zb3J0YWJsZShhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcyk7CisK KwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBjb25zaWRlciBoYXNoLWJhc2Vk IGltcGxlbWVudGF0aW9ucyBvZgorCSAqIGdyb3VwaW5nLgorCSAqLworCUFzc2VydChyb290LT5u dW1PcmRlcmVkQWdncyA9PSAwKTsKKwljYW5faGFzaCA9IChhZ2dfaW5mby0+Z3JvdXBfY2xhdXNl cyAhPSBOSUwgJiYKKwkJCQlncm91cGluZ19pc19oYXNoYWJsZShhZ2dfaW5mby0+Z3JvdXBfY2xh dXNlcykpOworCisJLyoKKwkgKiBDb25zaWRlciB3aGV0aGVyIHdlIHNob3VsZCBnZW5lcmF0ZSBw YXJ0aWFsbHkgYWdncmVnYXRlZCBub24tcGFydGlhbAorCSAqIHBhdGhzLiAgV2UgY2FuIG9ubHkg ZG8gdGhpcyBpZiB3ZSBoYXZlIGEgbm9uLXBhcnRpYWwgcGF0aC4KKwkgKi8KKwlpZiAocmVsX3Bs YWluLT5wYXRobGlzdCAhPSBOSUwpCisJeworCQljaGVhcGVzdF90b3RhbF9wYXRoID0gcmVsX3Bs YWluLT5jaGVhcGVzdF90b3RhbF9wYXRoOworCQlBc3NlcnQoY2hlYXBlc3RfdG90YWxfcGF0aCAh PSBOVUxMKTsKKwl9CisKKwkvKgorCSAqIElmIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIGZvciBy ZWxfZ3JvdXBlZCwgdGhlbiB3ZSBzaG91bGQgY29uc2lkZXIKKwkgKiBnZW5lcmF0aW5nIHBhcnRp YWxseS1ncm91cGVkIHBhcnRpYWwgcGF0aHMuICBIb3dldmVyLCBpZiB0aGUgcGxhaW4gcmVsCisJ ICogaGFzIG5vIHBhcnRpYWwgcGF0aHMsIHRoZW4gd2UgY2FuJ3QuCisJICovCisJaWYgKHJlbF9n cm91cGVkLT5jb25zaWRlcl9wYXJhbGxlbCAmJiByZWxfcGxhaW4tPnBhcnRpYWxfcGF0aGxpc3Qg IT0gTklMKQorCXsKKwkJY2hlYXBlc3RfcGFydGlhbF9wYXRoID0gbGluaXRpYWwocmVsX3BsYWlu LT5wYXJ0aWFsX3BhdGhsaXN0KTsKKwkJQXNzZXJ0KGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBO VUxMKTsKKwl9CisKKwkvKiBFc3RpbWF0ZSBudW1iZXIgb2YgcGFydGlhbCBncm91cHMuICovCisJ aWYgKGNoZWFwZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwkJZE51bUdyb3VwcyA9IGVzdGltYXRl X251bV9ncm91cHMocm9vdCwKKwkJCQkJCQkJCQkgYWdnX2luZm8tPmdyb3VwX2V4cHJzLAorCQkJ CQkJCQkJCSBjaGVhcGVzdF90b3RhbF9wYXRoLT5yb3dzLAorCQkJCQkJCQkJCSBOVUxMLCBOVUxM KTsKKwlpZiAoY2hlYXBlc3RfcGFydGlhbF9wYXRoICE9IE5VTEwpCisJCWROdW1QYXJ0aWFsR3Jv dXBzID0gZXN0aW1hdGVfbnVtX2dyb3Vwcyhyb290LAorCQkJCQkJCQkJCQkJYWdnX2luZm8tPmdy b3VwX2V4cHJzLAorCQkJCQkJCQkJCQkJY2hlYXBlc3RfcGFydGlhbF9wYXRoLT5yb3dzLAorCQkJ CQkJCQkJCQkJTlVMTCwgTlVMTCk7CisKKwlpZiAoY2FuX3NvcnQgJiYgY2hlYXBlc3RfdG90YWxf cGF0aCAhPSBOVUxMKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJLyoKKwkJICogVXNlIGFu eSBhdmFpbGFibGUgc3VpdGFibHktc29ydGVkIHBhdGggYXMgaW5wdXQsIGFuZCBhbHNvIGNvbnNp ZGVyCisJCSAqIHNvcnRpbmcgdGhlIGNoZWFwZXN0LXRvdGFsIHBhdGguCisJCSAqLworCQlmb3Jl YWNoKGxjLCByZWxfcGxhaW4tPnBhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICppbnB1dF9wYXRo ID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQlib29sCQlpc19z b3J0ZWQ7CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRo ZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSB0aGUgbm9uLWdyb3VwZWQgcmVsYXRpb24gd2hpY2ggaXMK KwkJCSAqIG5vdCBhd2FyZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhh dCBpdCBwcm92aWRlcworCQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9yIHRoZSBwYXJ0aWFsIGFn Z3JlZ2F0aW9uLgorCQkJICovCisJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25f cGF0aChyb290LAorCQkJCQkJCQkJCQkJICAgcmVsX2dyb3VwZWQsCisJCQkJCQkJCQkJCQkgICBp bnB1dF9wYXRoLAorCQkJCQkJCQkJCQkJICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7CisKKwkJCWlz X3NvcnRlZCA9IHBhdGhrZXlzX2NvdW50X2NvbnRhaW5lZF9pbihhZ2dfaW5mby0+Z3JvdXBfcGF0 aGtleXMsCisJCQkJCQkJCQkJCQkJcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJJnByZXNv cnRlZF9rZXlzKTsKKwkJCWlmICghaXNfc29ydGVkKQorCQkJeworCQkJCS8qCisJCQkJICogVHJ5 IGF0IGxlYXN0IHNvcnRpbmcgdGhlIGNoZWFwZXN0IHBhdGggYW5kIGFsc28gdHJ5CisJCQkJICog aW5jcmVtZW50YWxseSBzb3J0aW5nIGFueSBwYXRoIHdoaWNoIGlzIHBhcnRpYWxseSBzb3J0ZWQK KwkJCQkgKiBhbHJlYWR5IChubyBuZWVkIHRvIGRlYWwgd2l0aCBwYXRocyB3aGljaCBoYXZlIHBy ZXNvcnRlZAorCQkJCSAqIGtleXMgd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkIHVu bGVzcyBpdCdzIHRoZQorCQkJCSAqIGNoZWFwZXN0IGlucHV0IHBhdGgpLgorCQkJCSAqLworCQkJ CWlmIChpbnB1dF9wYXRoICE9IGNoZWFwZXN0X3RvdGFsX3BhdGggJiYKKwkJCQkJKHByZXNvcnRl ZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJCQkJY29udGludWU7 CisKKwkJCQkvKgorCQkJCSAqIFdlJ3ZlIG5vIG5lZWQgdG8gY29uc2lkZXIgYm90aCBhIHNvcnQg YW5kIGluY3JlbWVudGFsIHNvcnQuCisJCQkJICogV2UnbGwganVzdCBkbyBhIHNvcnQgaWYgdGhl cmUgYXJlIG5vIHByZXNvcnRlZCBrZXlzIGFuZCBhbgorCQkJCSAqIGluY3JlbWVudGFsIHNvcnQg d2hlbiB0aGVyZSBhcmUgcHJlc29ydGVkIGtleXMuCisJCQkJICovCisJCQkJaWYgKHByZXNvcnRl ZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KQorCQkJCQlwYXRoID0gKFBh dGggKikgY3JlYXRlX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCSByZWxfZ3JvdXBlZCwK KwkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkgYWdnX2luZm8tPmdyb3VwX3BhdGhr ZXlzLAorCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJCQllbHNlCisJCQkJCXBhdGggPSAoUGF0aCAq KSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkJCQkJIHJl bF9ncm91cGVkLAorCQkJCQkJCQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJCQkJCQkJCQkJCSBhZ2df aW5mby0+Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCQkJIHByZXNvcnRlZF9rZXlzLAor CQkJCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIHF1YWwgaXMgTklM IGJlY2F1c2UgdGhlIEhBVklORyBjbGF1c2UgY2Fubm90IGJlIGV2YWx1YXRlZCB1bnRpbCB0aGUK KwkJCSAqIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25vd24uCisJCQkgKi8KKwkJ CXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJcmVsX2dy b3VwZWQsCisJCQkJCQkJCQkJCXBhdGgsCisJCQkJCQkJCQkJCWFnZ19pbmZvLT50YXJnZXQsCisJ CQkJCQkJCQkJCUFHR19TT1JURUQsCisJCQkJCQkJCQkJCUFHR1NQTElUX0lOSVRJQUxfU0VSSUFM LAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCQkJTklMLAor CQkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJCQkJCQkJCQlkTnVtR3JvdXBzKTsKKworCQkJYWRk X3BhdGgocmVsX2dyb3VwZWQsIHBhdGgpOworCQl9CisJfQorCisJaWYgKGNhbl9zb3J0ICYmIGNo ZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJ LyogU2ltaWxhciB0byBhYm92ZSBsb2dpYywgYnV0IGZvciBwYXJ0aWFsIHBhdGhzLiAqLworCQlm b3JlYWNoKGxjLCByZWxfcGxhaW4tPnBhcnRpYWxfcGF0aGxpc3QpCisJCXsKKwkJCVBhdGgJICAg KmlucHV0X3BhdGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOworCQkJUGF0aAkgICAqcGF0aDsKKwkJ CWJvb2wJCWlzX3NvcnRlZDsKKwkJCWludAkJCXByZXNvcnRlZF9rZXlzOworCisJCQkvKgorCQkJ ICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIHRoZSBub24tZ3JvdXBlZCByZWxhdGlv biB3aGljaCBpcworCQkJICogbm90IGF3YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0 IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVzCisJCQkgKiB0aGUgY29ycmVjdCBpbnB1dCBmb3IgdGhl IHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8KKwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVf cHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICByZWxfZ3JvdXBlZCwKKwkJCQkJ CQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0 KTsKKworCQkJaXNfc29ydGVkID0gcGF0aGtleXNfY291bnRfY29udGFpbmVkX2luKGFnZ19pbmZv LT5ncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQlwYXRoLT5wYXRoa2V5cywKKwkJCQkJCQkJ CQkJCQkmcHJlc29ydGVkX2tleXMpOworCisJCQlpZiAoIWlzX3NvcnRlZCkKKwkJCXsKKwkJCQkv KgorCQkJCSAqIFRyeSBhdCBsZWFzdCBzb3J0aW5nIHRoZSBjaGVhcGVzdCBwYXRoIGFuZCBhbHNv IHRyeQorCQkJCSAqIGluY3JlbWVudGFsbHkgc29ydGluZyBhbnkgcGF0aCB3aGljaCBpcyBwYXJ0 aWFsbHkgc29ydGVkCisJCQkJICogYWxyZWFkeSAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMg d2hpY2ggaGF2ZSBwcmVzb3J0ZWQKKwkJCQkgKiBrZXlzIHdoZW4gaW5jcmVtZW50YWwgc29ydCBp cyBkaXNhYmxlZCB1bmxlc3MgaXQncyB0aGUKKwkJCQkgKiBjaGVhcGVzdCBpbnB1dCBwYXRoKS4K KwkJCQkgKi8KKwkJCQlpZiAoaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF9wYXJ0aWFsX3BhdGggJiYK KwkJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkK KwkJCQkJY29udGludWU7CisKKwkJCQkvKgorCQkJCSAqIFdlJ3ZlIG5vIG5lZWQgdG8gY29uc2lk ZXIgYm90aCBhIHNvcnQgYW5kIGluY3JlbWVudGFsIHNvcnQuCisJCQkJICogV2UnbGwganVzdCBk byBhIHNvcnQgaWYgdGhlcmUgYXJlIG5vIHByZXNvcnRlZCBrZXlzIGFuZCBhbgorCQkJCSAqIGlu Y3JlbWVudGFsIHNvcnQgd2hlbiB0aGVyZSBhcmUgcHJlc29ydGVkIGtleXMuCisJCQkJICovCisJ CQkJaWYgKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KQor CQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJ CSByZWxfZ3JvdXBlZCwKKwkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkgYWdnX2lu Zm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJCQllbHNlCisJCQkJ CXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCisJCQkJ CQkJCQkJCQkJCQkJIHJlbF9ncm91cGVkLAorCQkJCQkJCQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJ CQkJCQkJCQkJCSBhZ2dfaW5mby0+Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCQkJIHBy ZXNvcnRlZF9rZXlzLAorCQkJCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJCX0KKworCQkJLyoKKwkJ CSAqIHF1YWwgaXMgTklMIGJlY2F1c2UgdGhlIEhBVklORyBjbGF1c2UgY2Fubm90IGJlIGV2YWx1 YXRlZCB1bnRpbCB0aGUKKwkJCSAqIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25v d24uCisJCQkgKi8KKwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKKwkJ CQkJCQkJCQkJcmVsX2dyb3VwZWQsCisJCQkJCQkJCQkJCXBhdGgsCisJCQkJCQkJCQkJCWFnZ19p bmZvLT50YXJnZXQsCisJCQkJCQkJCQkJCUFHR19TT1JURUQsCisJCQkJCQkJCQkJCUFHR1NQTElU X0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJ CQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJCQkJCQkJCQlkTnVtUGFy dGlhbEdyb3Vwcyk7CisKKwkJCWFkZF9wYXJ0aWFsX3BhdGgocmVsX2dyb3VwZWQsIHBhdGgpOwor CQl9CisJfQorCisJLyoKKwkgKiBBZGQgYSBwYXJ0aWFsbHktZ3JvdXBlZCBIYXNoQWdnIFBhdGgg d2hlcmUgcG9zc2libGUKKwkgKi8KKwlpZiAoY2FuX2hhc2ggJiYgY2hlYXBlc3RfdG90YWxfcGF0 aCAhPSBOVUxMKQorCXsKKwkJUGF0aCAgICpwYXRoOworCisJCS8qCisJCSAqIFNpbmNlIHRoZSBw YXRoIG9yaWdpbmF0ZXMgZnJvbSB0aGUgbm9uLWdyb3VwZWQgcmVsYXRpb24gd2hpY2ggaXMKKwkJ ICogbm90IGF3YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0 IHByb3ZpZGVzCisJCSAqIHRoZSBjb3JyZWN0IGlucHV0IGZvciB0aGUgcGFydGlhbCBhZ2dyZWdh dGlvbi4KKwkJICovCisJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJv b3QsCisJCQkJCQkJCQkJCSAgIHJlbF9ncm91cGVkLAorCQkJCQkJCQkJCQkgICBjaGVhcGVzdF90 b3RhbF9wYXRoLAorCQkJCQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkvKgor CQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFs dWF0ZWQgdW50aWwKKwkJICogdGhlIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25v d24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJ CQkJCQkJcmVsX2dyb3VwZWQsCisJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJCQlhZ2dfaW5mby0+ dGFyZ2V0LAorCQkJCQkJCQkJCUFHR19IQVNIRUQsCisJCQkJCQkJCQkJQUdHU1BMSVRfSU5JVElB TF9TRVJJQUwsCisJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJ TklMLAorCQkJCQkJCQkJCSZhZ2dfY29zdHMsCisJCQkJCQkJCQkJZE51bUdyb3Vwcyk7CisKKwkJ YWRkX3BhdGgocmVsX2dyb3VwZWQsIHBhdGgpOworCX0KKworCS8qCisJICogTm93IGFkZCBhIHBh cnRpYWxseS1ncm91cGVkIEhhc2hBZ2cgcGFydGlhbCBQYXRoIHdoZXJlIHBvc3NpYmxlCisJICov CisJaWYgKGNhbl9oYXNoICYmIGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQorCXsKKwkJ UGF0aCAgICpwYXRoOworCisJCS8qCisJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJv bSB0aGUgbm9uLWdyb3VwZWQgcmVsYXRpb24gd2hpY2ggaXMKKwkJICogbm90IGF3YXJlIG9mIGVh Z2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVzCisJCSAqIHRo ZSBjb3JyZWN0IGlucHV0IGZvciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkJICovCisJCXBh dGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCSAg IHJlbF9ncm91cGVkLAorCQkJCQkJCQkJCQkgICBjaGVhcGVzdF9wYXJ0aWFsX3BhdGgsCisJCQkJ CQkJCQkJCSAgIGFnZ19pbmZvLT5hZ2dfaW5wdXQpOworCisJCS8qCisJCSAqIHF1YWwgaXMgTklM IGJlY2F1c2UgdGhlIEhBVklORyBjbGF1c2UgY2Fubm90IGJlIGV2YWx1YXRlZCB1bnRpbAorCQkg KiB0aGUgZmluYWwgdmFsdWUgb2YgdGhlIGFnZ3JlZ2F0ZSBpcyBrbm93bi4KKwkJICovCisJCXBh dGggPSAoUGF0aCAqKSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKKwkJCQkJCQkJCQlyZWxfZ3JvdXBl ZCwKKwkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCWFnZ19pbmZvLT50YXJnZXQsCisJCQkJCQkJ CQkJQUdHX0hBU0hFRCwKKwkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKKwkJCQkJ CQkJCQlhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCQlOSUwsCisJCQkJCQkJCQkJ JmFnZ19jb3N0cywKKwkJCQkJCQkJCQlkTnVtUGFydGlhbEdyb3Vwcyk7CisKKwkJYWRkX3BhcnRp YWxfcGF0aChyZWxfZ3JvdXBlZCwgcGF0aCk7CisJfQorfQorCiAvKgogICogbWFrZV9yZWxfZnJv bV9qb2lubGlzdAogICoJICBCdWlsZCBhY2Nlc3MgcGF0aHMgdXNpbmcgYSAiam9pbmxpc3QiIHRv IGd1aWRlIHRoZSBqb2luIHBhdGggc2VhcmNoLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhu b2RlLmMKaW5kZXggYzQyNzQyZDJjNy4uOGRlOTgyNWY4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wYXRobm9kZS5jCkBAIC0yNzA5LDggKzI3MDksNyBAQCBjcmVhdGVfcHJvamVjdGlvbl9w YXRoKFBsYW5uZXJJbmZvICpyb290LAogCXBhdGhub2RlLT5wYXRoLnBhdGh0eXBlID0gVF9SZXN1 bHQ7CiAJcGF0aG5vZGUtPnBhdGgucGFyZW50ID0gcmVsOwogCXBhdGhub2RlLT5wYXRoLnBhdGh0 YXJnZXQgPSB0YXJnZXQ7Ci0JLyogRm9yIG5vdywgYXNzdW1lIHdlIGFyZSBhYm92ZSBhbnkgam9p bnMsIHNvIG5vIHBhcmFtZXRlcml6YXRpb24gKi8KLQlwYXRobm9kZS0+cGF0aC5wYXJhbV9pbmZv ID0gTlVMTDsKKwlwYXRobm9kZS0+cGF0aC5wYXJhbV9pbmZvID0gc3VicGF0aC0+cGFyYW1faW5m bzsKIAlwYXRobm9kZS0+cGF0aC5wYXJhbGxlbF9hd2FyZSA9IGZhbHNlOwogCXBhdGhub2RlLT5w YXRoLnBhcmFsbGVsX3NhZmUgPSByZWwtPmNvbnNpZGVyX3BhcmFsbGVsICYmCiAJCXN1YnBhdGgt PnBhcmFsbGVsX3NhZmUgJiYKQEAgLTI5NjIsOCArMjk2MSw3IEBAIGNyZWF0ZV9pbmNyZW1lbnRh bF9zb3J0X3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJcGF0aG5vZGUtPnBhdGgucGFyZW50ID0g cmVsOwogCS8qIFNvcnQgZG9lc24ndCBwcm9qZWN0LCBzbyB1c2Ugc291cmNlIHBhdGgncyBwYXRo dGFyZ2V0ICovCiAJcGF0aG5vZGUtPnBhdGgucGF0aHRhcmdldCA9IHN1YnBhdGgtPnBhdGh0YXJn ZXQ7Ci0JLyogRm9yIG5vdywgYXNzdW1lIHdlIGFyZSBhYm92ZSBhbnkgam9pbnMsIHNvIG5vIHBh cmFtZXRlcml6YXRpb24gKi8KLQlwYXRobm9kZS0+cGF0aC5wYXJhbV9pbmZvID0gTlVMTDsKKwlw YXRobm9kZS0+cGF0aC5wYXJhbV9pbmZvID0gc3VicGF0aC0+cGFyYW1faW5mbzsKIAlwYXRobm9k ZS0+cGF0aC5wYXJhbGxlbF9hd2FyZSA9IGZhbHNlOwogCXBhdGhub2RlLT5wYXRoLnBhcmFsbGVs X3NhZmUgPSByZWwtPmNvbnNpZGVyX3BhcmFsbGVsICYmCiAJCXN1YnBhdGgtPnBhcmFsbGVsX3Nh ZmU7CkBAIC0zMDA5LDggKzMwMDcsNyBAQCBjcmVhdGVfc29ydF9wYXRoKFBsYW5uZXJJbmZvICpy b290LAogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJlbDsKIAkvKiBTb3J0IGRvZXNuJ3QgcHJv amVjdCwgc28gdXNlIHNvdXJjZSBwYXRoJ3MgcGF0aHRhcmdldCAqLwogCXBhdGhub2RlLT5wYXRo LnBhdGh0YXJnZXQgPSBzdWJwYXRoLT5wYXRodGFyZ2V0OwotCS8qIEZvciBub3csIGFzc3VtZSB3 ZSBhcmUgYWJvdmUgYW55IGpvaW5zLCBzbyBubyBwYXJhbWV0ZXJpemF0aW9uICovCi0JcGF0aG5v ZGUtPnBhdGgucGFyYW1faW5mbyA9IE5VTEw7CisJcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9 IHN1YnBhdGgtPnBhcmFtX2luZm87CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfYXdhcmUgPSBm YWxzZTsKIAlwYXRobm9kZS0+cGF0aC5wYXJhbGxlbF9zYWZlID0gcmVsLT5jb25zaWRlcl9wYXJh bGxlbCAmJgogCQlzdWJwYXRoLT5wYXJhbGxlbF9zYWZlOwpAQCAtMzE2OCw4ICszMTY1LDcgQEAg Y3JlYXRlX2FnZ19wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCXBhdGhub2RlLT5wYXRoLnBhdGh0 eXBlID0gVF9BZ2c7CiAJcGF0aG5vZGUtPnBhdGgucGFyZW50ID0gcmVsOwogCXBhdGhub2RlLT5w YXRoLnBhdGh0YXJnZXQgPSB0YXJnZXQ7Ci0JLyogRm9yIG5vdywgYXNzdW1lIHdlIGFyZSBhYm92 ZSBhbnkgam9pbnMsIHNvIG5vIHBhcmFtZXRlcml6YXRpb24gKi8KLQlwYXRobm9kZS0+cGF0aC5w YXJhbV9pbmZvID0gTlVMTDsKKwlwYXRobm9kZS0+cGF0aC5wYXJhbV9pbmZvID0gc3VicGF0aC0+ cGFyYW1faW5mbzsKIAlwYXRobm9kZS0+cGF0aC5wYXJhbGxlbF9hd2FyZSA9IGZhbHNlOwogCXBh dGhub2RlLT5wYXRoLnBhcmFsbGVsX3NhZmUgPSByZWwtPmNvbnNpZGVyX3BhcmFsbGVsICYmCiAJ CXN1YnBhdGgtPnBhcmFsbGVsX3NhZmU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aHMuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCmluZGV4IGFlN2E4ZWQ3 NDIuLjQxM2MyNjkwOTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5o CisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCkBAIC01OCw2ICs1OCwxMCBAQCBl eHRlcm4gdm9pZCBnZW5lcmF0ZV9nYXRoZXJfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAkJCQkJCQkJICBib29sIG92ZXJyaWRlX3Jvd3MpOwogZXh0ZXJuIHZvaWQg Z2VuZXJhdGVfdXNlZnVsX2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcmVsLAogCQkJCQkJCQkJCSBib29sIG92ZXJyaWRlX3Jvd3MpOworZXh0ZXJuIHZvaWQgZ2Vu ZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJICAgUmVsT3B0 SW5mbyAqcmVsX2dyb3VwZWQsCisJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnJlbF9wbGFpbiwKKwkJ CQkJCQkJICAgUmVsQWdnSW5mbyAqYWdnX2luZm8pOwogZXh0ZXJuIGludAljb21wdXRlX3BhcmFs bGVsX3dvcmtlcihSZWxPcHRJbmZvICpyZWwsIGRvdWJsZSBoZWFwX3BhZ2VzLAogCQkJCQkJCQkJ ZG91YmxlIGluZGV4X3BhZ2VzLCBpbnQgbWF4X3dvcmtlcnMpOwogZXh0ZXJuIHZvaWQgY3JlYXRl X3BhcnRpYWxfYml0bWFwX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws Ci0tIAoyLjQzLjAKCg== --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0006-Build-grouped-relations-out-of-base-relations.patch" Content-Disposition: attachment; filename="v9-0006-Build-grouped-relations-out-of-base-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5ksrn55 RnJvbSAzOTc4NDBiNjRiNWQxODQ3ZDBkYmI2Mjk5MGMwMDJiYWRiYjljMjAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNjowNzozMiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDYvMTBdIEJ1aWxkIGdyb3VwZWQgcmVsYXRpb25zIG91dCBvZiBiYXNlIHJlbGF0aW9ucwoKVGhp cyBjb21taXQgYnVpbGRzIGdyb3VwZWQgcmVsYXRpb25zIGZvciBlYWNoIGJhc2UgcmVsYXRpb24g aWYgcG9zc2libGUsCmFuZCBnZW5lcmF0ZXMgYWdncmVnYXRpb24gcGF0aHMgZm9yIHRoZSBncm91 cGVkIGJhc2UgcmVsYXRpb25zLgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBh dGhzLmMgfCAgOTEgKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3JlbG5vZGUuYyAgfCAxMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9p bmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oICAgICAgfCAgIDQgKwogMyBmaWxlcyBjaGFuZ2Vk LCAxOTYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCmlu ZGV4IDBjMmZhZTk2MDguLjkyMTk4MTVlM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxs cGF0aHMuYwpAQCAtOTMsNiArOTMsNyBAQCBqb2luX3NlYXJjaF9ob29rX3R5cGUgam9pbl9zZWFy Y2hfaG9vayA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIHNldF9iYXNlX3JlbF9jb25zaWRlcl9zdGFy dHVwKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lkIHNldF9iYXNlX3JlbF9zaXplcyhQ bGFubmVySW5mbyAqcm9vdCk7CitzdGF0aWMgdm9pZCBzZXR1cF9iYXNlX2dyb3VwZWRfcmVscyhQ bGFubmVySW5mbyAqcm9vdCk7CiBzdGF0aWMgdm9pZCBzZXRfYmFzZV9yZWxfcGF0aGxpc3RzKFBs YW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lkIHNldF9yZWxfc2l6ZShQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJIEluZGV4IHJ0aSwgUmFuZ2VUYmxFbnRyeSAq cnRlKTsKQEAgLTExNyw2ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBzZXRfYXBwZW5kX3JlbF9zaXpl KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCUluZGV4IHJ0aSwg UmFuZ2VUYmxFbnRyeSAqcnRlKTsKIHN0YXRpYyB2b2lkIHNldF9hcHBlbmRfcmVsX3BhdGhsaXN0 KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQlJbmRleCBydGks IFJhbmdlVGJsRW50cnkgKnJ0ZSk7CitzdGF0aWMgdm9pZCBzZXRfZ3JvdXBlZF9yZWxfcGF0aGxp c3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CiBzdGF0aWMgdm9pZCBnZW5l cmF0ZV9vcmRlcmVkYXBwZW5kX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsCiAJCQkJCQkJCQkJIExpc3QgKmxpdmVfY2hpbGRyZWxzLAogCQkJCQkJCQkJCSBMaXN0ICph bGxfY2hpbGRfcGF0aGtleXMpOwpAQCAtMTg1LDYgKzE4NywxMSBAQCBtYWtlX29uZV9yZWwoUGxh bm5lckluZm8gKnJvb3QsIExpc3QgKmpvaW5saXN0KQogCSAqLwogCXNldF9iYXNlX3JlbF9zaXpl cyhyb290KTsKIAorCS8qCisJICogQnVpbGQgZ3JvdXBlZCBiYXNlIHJlbGF0aW9ucyBmb3IgZWFj aCBiYXNlIHJlbCBpZiBwb3NzaWJsZS4KKwkgKi8KKwlzZXR1cF9iYXNlX2dyb3VwZWRfcmVscyhy b290KTsKKwogCS8qCiAJICogV2Ugc2hvdWxkIG5vdyBoYXZlIHNpemUgZXN0aW1hdGVzIGZvciBl dmVyeSBhY3R1YWwgdGFibGUgaW52b2x2ZWQgaW4KIAkgKiB0aGUgcXVlcnksIGFuZCB3ZSBhbHNv IGtub3cgd2hpY2ggaWYgYW55IGhhdmUgYmVlbiBkZWxldGVkIGZyb20gdGhlCkBAIC0zMjYsNiAr MzMzLDU5IEBAIHNldF9iYXNlX3JlbF9zaXplcyhQbGFubmVySW5mbyAqcm9vdCkKIAl9CiB9CiAK Ky8qCisgKiBzZXR1cF9iYXNlX2dyb3VwZWRfcmVscworICoJICBGb3IgZWFjaCAicGxhaW4iIGJh c2UgcmVsYXRpb24gYnVpbGQgYSBncm91cGVkIGJhc2UgcmVsYXRpb24gaWYgZWFnZXIKKyAqCSAg YWdncmVnYXRpb24gaXMgcG9zc2libGUgYW5kIGlmIHRoaXMgcmVsYXRpb24gY2FuIHByb2R1Y2Ug Z3JvdXBlZCBwYXRocy4KKyAqLworc3RhdGljIHZvaWQKK3NldHVwX2Jhc2VfZ3JvdXBlZF9yZWxz KFBsYW5uZXJJbmZvICpyb290KQoreworCUluZGV4CQlydGk7CisKKwkvKgorCSAqIElmIHRoZXJl IGFyZSBubyBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgb3IgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVh Z2VyCisJICogYWdncmVnYXRpb24gaXMgbm90IHBvc3NpYmxlLgorCSAqLworCWlmIChyb290LT5h Z2dfY2xhdXNlX2xpc3QgPT0gTklMIHx8CisJCXJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwp CisJCXJldHVybjsKKworCS8qCisJICogRWFnZXIgYWdncmVnYXRpb24gb25seSBtYWtlcyBzZW5z ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgYmFzZSByZWxzIGluCisJICogdGhlIHF1ZXJ5LgorCSAq LworCWlmIChibXNfbWVtYmVyc2hpcChyb290LT5hbGxfYmFzZXJlbHMpICE9IEJNU19NVUxUSVBM RSkKKwkJcmV0dXJuOworCisJZm9yIChydGkgPSAxOyBydGkgPCByb290LT5zaW1wbGVfcmVsX2Fy cmF5X3NpemU7IHJ0aSsrKQorCXsKKwkJUmVsT3B0SW5mbwkgICAqcmVsID0gcm9vdC0+c2ltcGxl X3JlbF9hcnJheVtydGldOworCQlSZWxPcHRJbmZvCSAgICpyZWxfZ3JvdXBlZDsKKwkJUmVsQWdn SW5mbwkgICAqYWdnX2luZm87CisKKwkJLyogdGhlcmUgbWF5IGJlIGVtcHR5IHNsb3RzIGNvcnJl c3BvbmRpbmcgdG8gbm9uLWJhc2VyZWwgUlRFcyAqLworCQlpZiAocmVsID09IE5VTEwpCisJCQlj b250aW51ZTsKKworCQlBc3NlcnQocmVsLT5yZWxpZCA9PSBydGkpOyAvKiBzYW5pdHkgY2hlY2sg b24gYXJyYXkgKi8KKworCQkvKgorCQkgKiBJZ25vcmUgUlRFcyB0aGF0IGFyZSBub3Qgc2ltcGxl IHJlbHMuICBOb3RlIHRoYXQgd2UgbmVlZCB0byBjb25zaWRlcgorCQkgKiAib3RoZXIgcmVscyIg aGVyZS4KKwkJICovCisJCWlmICghSVNfU0lNUExFX1JFTChyZWwpKQorCQkJY29udGludWU7CisK KwkJcmVsX2dyb3VwZWQgPSBidWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwocm9vdCwgcmVsLT5yZWxp ZCwgJmFnZ19pbmZvKTsKKwkJaWYgKHJlbF9ncm91cGVkKQorCQl7CisJCQkvKiBNYWtlIHRoZSBn cm91cGVkIHJlbGF0aW9uIGF2YWlsYWJsZSBmb3Igam9pbmluZy4gKi8KKwkJCWFkZF9ncm91cGVk X3JlbChyb290LCByZWxfZ3JvdXBlZCwgYWdnX2luZm8pOworCQl9CisJfQorfQorCiAvKgogICog c2V0X2Jhc2VfcmVsX3BhdGhsaXN0cwogICoJICBGaW5kcyBhbGwgcGF0aHMgYXZhaWxhYmxlIGZv ciBzY2FubmluZyBlYWNoIGJhc2UtcmVsYXRpb24gZW50cnkuCkBAIC01NjIsNiArNjIyLDE1IEBA IHNldF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkv KiBOb3cgZmluZCB0aGUgY2hlYXBlc3Qgb2YgdGhlIHBhdGhzIGZvciB0aGlzIHJlbCAqLwogCXNl dF9jaGVhcGVzdChyZWwpOwogCisJLyoKKwkgKiBJZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRo aXMgcmVsIGV4aXN0cywgYnVpbGQgcGFydGlhbCBhZ2dyZWdhdGlvbgorCSAqIHBhdGhzIGZvciBp dC4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGlzIGNhbiBvbmx5IGhhcHBlbiBhZnRlciB3ZSd2ZSBj YWxsZWQgc2V0X2NoZWFwZXN0KCkgZm9yCisJICogdGhpcyBiYXNlIHJlbCwgYmVjYXVzZSB3ZSBu ZWVkIGl0cyBjaGVhcGVzdCBwYXRocy4KKwkgKi8KKwlzZXRfZ3JvdXBlZF9yZWxfcGF0aGxpc3Qo cm9vdCwgcmVsKTsKKwogI2lmZGVmIE9QVElNSVpFUl9ERUJVRwogCXBwcmludChyZWwpOwogI2Vu ZGlmCkBAIC0xMjg5LDYgKzEzNTgsMjggQEAgc2V0X2FwcGVuZF9yZWxfcGF0aGxpc3QoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbChy b290LCByZWwsIGxpdmVfY2hpbGRyZWxzKTsKIH0KIAorLyoKKyAqIHNldF9ncm91cGVkX3JlbF9w YXRobGlzdAorICoJICBJZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRoZSBnaXZlbiAncmVsJyBl eGlzdHMsIGJ1aWxkIHBhcnRpYWwKKyAqCSAgYWdncmVnYXRpb24gcGF0aHMgZm9yIGl0LgorICov CitzdGF0aWMgdm9pZAorc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAgICpyZWxfZ3JvdXBlZDsKKwlSZWxB Z2dJbmZvICAgKmFnZ19pbmZvOworCisJLyogQWRkIHBhdGhzIHRvIHRoZSBncm91cGVkIGJhc2Ug cmVsYXRpb24gaWYgb25lIGV4aXN0cy4gKi8KKwlyZWxfZ3JvdXBlZCA9IGZpbmRfZ3JvdXBlZF9y ZWwocm9vdCwgcmVsLT5yZWxpZHMsCisJCQkJCQkJCSAgICZhZ2dfaW5mbyk7CisJaWYgKHJlbF9n cm91cGVkKQorCXsKKwkJZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCByZWxfZ3JvdXBlZCwg cmVsLAorCQkJCQkJCSAgIGFnZ19pbmZvKTsKKwkJc2V0X2NoZWFwZXN0KHJlbF9ncm91cGVkKTsK Kwl9Cit9CisKIAogLyoKICAqIGFkZF9wYXRoc190b19hcHBlbmRfcmVsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggMjdmNzc5ZDc3OC4uZjhmMGMwZmM2OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSA8 bGltaXRzLmg+CiAKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJv cHRpbWl6ZXIvYXBwZW5kaW5mby5oIgpAQCAtMjcsMTIgKzI4LDE1IEBACiAjaW5jbHVkZSAib3B0 aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYWNlaG9sZGVyLmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5o IgogI2luY2x1ZGUgIm9wdGltaXplci9yZXN0cmljdGluZm8uaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvdGxpc3QuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgi CiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgorI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCiAKIAogLyoKQEAgLTQxOSw2ICs0MjMsMTAz IEBAIGJ1aWxkX3NpbXBsZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCwgUmVsT3B0 SW5mbyAqcGFyZW50KQogCXJldHVybiByZWw7CiB9CiAKKy8qCisgKiBidWlsZF9zaW1wbGVfZ3Jv dXBlZF9yZWwKKyAqCSAgQ29uc3RydWN0IGEgbmV3IFJlbE9wdEluZm8gZm9yIGEgZ3JvdXBlZCBi YXNlIHJlbGF0aW9uIG91dCBvZiBhbiBleGlzdGluZworICoJICBub24tZ3JvdXBlZCBiYXNlIHJl bGF0aW9uLgorICoKKyAqIE9uIHN1Y2Nlc3MsIHRoZSBuZXcgUmVsT3B0SW5mbyBpcyByZXR1cm5l ZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgUmVsQWdnSW5mbworICogaXMgc3RvcmVkIGluICphZ2df aW5mb19wLgorICovCitSZWxPcHRJbmZvICoKK2J1aWxkX3NpbXBsZV9ncm91cGVkX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLAorCQkJCQkJIFJlbEFnZ0luZm8gKiphZ2dfaW5mb19w KQoreworCVJlbE9wdEluZm8JICAgKnJlbF9wbGFpbjsKKwlSZWxPcHRJbmZvCSAgICpyZWxfZ3Jv dXBlZDsKKwlSZWxBZ2dJbmZvCSAgICphZ2dfaW5mbzsKKworCS8qCisJICogV2Ugc2hvdWxkIGhh dmUgYXZhaWxhYmxlIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgZ3JvdXBpbmcgZXhwcmVzc2lv bnMsCisJICogb3RoZXJ3aXNlIHdlIGNhbm5vdCByZWFjaCBoZXJlLgorCSAqLworCUFzc2VydChy b290LT5hZ2dfY2xhdXNlX2xpc3QgIT0gTklMKTsKKwlBc3NlcnQocm9vdC0+Z3JvdXBfZXhwcl9s aXN0ICE9IE5JTCk7CisKKwlyZWxfcGxhaW4gPSByb290LT5zaW1wbGVfcmVsX2FycmF5W3JlbGlk XTsKKwlBc3NlcnQocmVsX3BsYWluICE9IE5VTEwpOworCUFzc2VydChJU19TSU1QTEVfUkVMKHJl bF9wbGFpbikpOworCisJLyogbm90aGluZyB0byBkbyBmb3IgZHVtbXkgcmVsICovCisJaWYgKElT X0RVTU1ZX1JFTChyZWxfcGxhaW4pKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogUHJlcGFy ZSB0aGUgaW5mb3JtYXRpb24gd2UgbmVlZCB0byBjcmVhdGUgZ3JvdXBlZCBwYXRocyBmb3IgdGhp cyBiYXNlCisJICogcmVsYXRpb24uCisJICovCisJYWdnX2luZm8gPSBjcmVhdGVfcmVsX2FnZ19p bmZvKHJvb3QsIHJlbF9wbGFpbik7CisJaWYgKGFnZ19pbmZvID09IE5VTEwpCisJCXJldHVybiBO VUxMOworCisJLyogYnVpbGQgYSBncm91cGVkIHJlbGF0aW9uIG91dCBvZiB0aGUgcGxhaW4gcmVs YXRpb24gKi8KKwlyZWxfZ3JvdXBlZCA9IGJ1aWxkX2dyb3VwZWRfcmVsKHJvb3QsIHJlbF9wbGFp bik7CisJcmVsX2dyb3VwZWQtPnJlbHRhcmdldCA9IGFnZ19pbmZvLT50YXJnZXQ7CisJcmVsX2dy b3VwZWQtPnJvd3MgPSBhZ2dfaW5mby0+Z3JvdXBlZF9yb3dzOworCisJLyogcmV0dXJuIHRoZSBS ZWxBZ2dJbmZvIHN0cnVjdHVyZSAqLworCSphZ2dfaW5mb19wID0gYWdnX2luZm87CisKKwlyZXR1 cm4gcmVsX2dyb3VwZWQ7Cit9CisKKy8qCisgKiBidWlsZF9ncm91cGVkX3JlbAorICoJICBCdWls ZCBhIGdyb3VwZWQgcmVsYXRpb24gYnkgZmxhdCBjb3B5aW5nIGEgcGxhaW4gcmVsYXRpb24gYW5k IHJlc2V0dGluZworICoJICB0aGUgbmVjZXNzYXJ5IGZpZWxkcy4KKyAqLworUmVsT3B0SW5mbyAq CitidWlsZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsX3Bs YWluKQoreworCVJlbE9wdEluZm8gICAqcmVsX2dyb3VwZWQ7CisKKwlyZWxfZ3JvdXBlZCA9IG1h a2VOb2RlKFJlbE9wdEluZm8pOworCW1lbWNweShyZWxfZ3JvdXBlZCwgcmVsX3BsYWluLCBzaXpl b2YoUmVsT3B0SW5mbykpOworCisJLyoKKwkgKiBjbGVhciBwYXRoIGluZm8KKwkgKi8KKwlyZWxf Z3JvdXBlZC0+cGF0aGxpc3QgPSBOSUw7CisJcmVsX2dyb3VwZWQtPnBwaWxpc3QgPSBOSUw7CisJ cmVsX2dyb3VwZWQtPnBhcnRpYWxfcGF0aGxpc3QgPSBOSUw7CisJcmVsX2dyb3VwZWQtPmNoZWFw ZXN0X3N0YXJ0dXBfcGF0aCA9IE5VTEw7CisJcmVsX2dyb3VwZWQtPmNoZWFwZXN0X3RvdGFsX3Bh dGggPSBOVUxMOworCXJlbF9ncm91cGVkLT5jaGVhcGVzdF91bmlxdWVfcGF0aCA9IE5VTEw7CisJ cmVsX2dyb3VwZWQtPmNoZWFwZXN0X3BhcmFtZXRlcml6ZWRfcGF0aHMgPSBOSUw7CisKKwkvKgor CSAqIGNsZWFyIHBhcnRpdGlvbiBpbmZvCisJICovCisJcmVsX2dyb3VwZWQtPnBhcnRfc2NoZW1l ID0gTlVMTDsKKwlyZWxfZ3JvdXBlZC0+bnBhcnRzID0gLTE7CisJcmVsX2dyb3VwZWQtPmJvdW5k aW5mbyA9IE5VTEw7CisJcmVsX2dyb3VwZWQtPnBhcnRib3VuZHNfbWVyZ2VkID0gZmFsc2U7CisJ cmVsX2dyb3VwZWQtPnBhcnRpdGlvbl9xdWFsID0gTklMOworCXJlbF9ncm91cGVkLT5wYXJ0X3Jl bHMgPSBOVUxMOworCXJlbF9ncm91cGVkLT5saXZlX3BhcnRzID0gTlVMTDsKKwlyZWxfZ3JvdXBl ZC0+YWxsX3BhcnRyZWxzID0gTlVMTDsKKwlyZWxfZ3JvdXBlZC0+cGFydGV4cHJzID0gTlVMTDsK KwlyZWxfZ3JvdXBlZC0+bnVsbGFibGVfcGFydGV4cHJzID0gTlVMTDsKKwlyZWxfZ3JvdXBlZC0+ Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0gZmFsc2U7CisKKwkvKgorCSAqIGNsZWFyIHNp emUgZXN0aW1hdGVzCisJICovCisJcmVsX2dyb3VwZWQtPnJvd3MgPSAwOworCisJcmV0dXJuIHJl bF9ncm91cGVkOworfQorCiAvKgogICogZmluZF9iYXNlX3JlbAogICoJICBGaW5kIGEgYmFzZSBv ciBvdGhlcnJlbCByZWxhdGlvbiBlbnRyeSwgd2hpY2ggbXVzdCBhbHJlYWR5IGV4aXN0LgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aG5vZGUuaAppbmRleCAwMmRhNjhhNzUzLi41MjU0ODFmMjk2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aG5vZGUuaApAQCAtMzEwLDYgKzMxMCwxMCBAQCBleHRlcm4gdm9pZCBzZXR1 cF9zaW1wbGVfcmVsX2FycmF5cyhQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4gdm9pZCBleHBh bmRfcGxhbm5lcl9hcnJheXMoUGxhbm5lckluZm8gKnJvb3QsIGludCBhZGRfc2l6ZSk7CiBleHRl cm4gUmVsT3B0SW5mbyAqYnVpbGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJl bGlkLAogCQkJCQkJCQkJUmVsT3B0SW5mbyAqcGFyZW50KTsKK2V4dGVybiBSZWxPcHRJbmZvICpi dWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCwKKwkJ CQkJCQkJCQkJUmVsQWdnSW5mbyAqKmFnZ19pbmZvX3ApOworZXh0ZXJuIFJlbE9wdEluZm8gKmJ1 aWxkX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJIFJlbE9wdEluZm8g KnJlbF9wbGFpbik7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbChQbGFubmVySW5m byAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZvICpmaW5kX2Jhc2VfcmVsX25v ZXJyKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZp bmRfYmFzZV9yZWxfaWdub3JlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCk7Ci0t IAoyLjQzLjAKCg== --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0007-Build-grouped-relations-out-of-join-relations.patch" Content-Disposition: attachment; filename="v9-0007-Build-grouped-relations-out-of-join-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5kt1b46 RnJvbSAzNjM1MzIxNDYyYWVlOTk4YTk2ZDZhNGM3YTUyZmE3MWIwNTQ4MzM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNjowODoyMyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDcvMTBdIEJ1aWxkIGdyb3VwZWQgcmVsYXRpb25zIG91dCBvZiBqb2luIHJlbGF0aW9ucwoKVGhp cyBjb21taXQgYnVpbGRzIGdyb3VwZWQgcmVsYXRpb25zIGZvciBlYWNoIGp1c3QtcHJvY2Vzc2Vk IGpvaW4KcmVsYXRpb24gaWYgcG9zc2libGUsIGFuZCBnZW5lcmF0ZXMgYWdncmVnYXRpb24gcGF0 aHMgZm9yIHRoZSBncm91cGVkCmpvaW4gcmVsYXRpb25zLgoKVGhlIGNoYW5nZXMgbWFkZSB0byBt YWtlX2pvaW5fcmVsKCkgYXJlIHJlbGF0aXZlbHkgbWlub3IsIHdpdGggdGhlCmFkZGl0aW9uIG9m IGEgbmV3IGZ1bmN0aW9uIG1ha2VfZ3JvdXBlZF9qb2luX3JlbCgpLCB3aGljaCBmaW5kcyBvcgpj cmVhdGVzIGEgZ3JvdXBlZCByZWxhdGlvbiBmb3IgdGhlIGp1c3QtcHJvY2Vzc2VkIGpvaW5yZWws IGFuZCBnZW5lcmF0ZXMKZ3JvdXBlZCBwYXRocyBieSBqb2luaW5nIGEgZ3JvdXBlZCBpbnB1dCBy ZWxhdGlvbiB3aXRoIGEgbm9uLWdyb3VwZWQKaW5wdXQgcmVsYXRpb24uCgpUaGUgb3RoZXIgd2F5 IHRvIGdlbmVyYXRlIGdyb3VwZWQgcGF0aHMgaXMgYnkgYWRkaW5nIHNvcnRlZCBhbmQgaGFzaGVk CnBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMgb24gdG9wIG9mIHBhdGhzIG9mIHRoZSBqb2lucmVs LiAgVGhpcyBvY2N1cnMKaW4gc3RhbmRhcmRfam9pbl9zZWFyY2goKSwgYWZ0ZXIgd2UndmUgcnVu IHNldF9jaGVhcGVzdCgpIGZvciB0aGUKam9pbnJlbC4gIFRoZSByZWFzb24gZm9yIHBlcmZvcm1p bmcgdGhpcyBzdGVwIGFmdGVyIHNldF9jaGVhcGVzdCgpIGlzCnRoYXQgd2UgbmVlZCB0byBrbm93 IHRoZSBqb2lucmVsJ3MgY2hlYXBlc3QgcGF0aHMgKHNlZQpnZW5lcmF0ZV9ncm91cGVkX3BhdGhz KCkpLgoKVGhpcyBwYXRjaCBhbHNvIG1ha2VzIHRoZSBncm91cGVkIHJlbGF0aW9uIGZvciB0aGUg dG9wbW9zdCBqb2luIHJlbCBhY3QKYXMgdGhlIHVwcGVyIHJlbCByZXByZXNlbnRpbmcgdGhlIHJl c3VsdCBvZiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCBzbyB0aGF0CndlIGNhbiBhZGQgdGhlIGZpbmFs IGFnZ3JlZ2F0aW9uIG9uIHRvcCBvZiB0aGF0LiAgQWRkaXRpb25hbGx5LCB0aGlzCnBhdGNoIGV4 dGVuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgZWFnZXIgYWdncmVnYXRpb24gdG8gd29yayB3aXRo CnBhcnRpdGlvbndpc2Ugam9pbiBhbmQgZ2Vxby4KClRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBlYWdl ciBhZ2dyZWdhdGlvbiB3b3JrIHdpdGggb3V0ZXIgam9pbnMuICBXaXRoCm91dGVyIGpvaW5zLCB0 aGUgYWdncmVnYXRlIGNhbm5vdCBiZSBwdXNoZWQgZG93biBpZiBhbnkgY29sdW1uCnJlZmVyZW5j ZWQgYnkgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgb3IgYWdncmVnYXRlIGZ1bmN0aW9ucyBpcyBudWxs YWJsZSBieQphbiBvdXRlciBqb2luIGFib3ZlIHRoZSByZWxhdGlvbiB0byB3aGljaCB3ZSB3YW50 IHRvIGFwcGx5IHRoZSBwYXJ0aWFsCmFnZ3JlZ2F0aW9uLiAgVGhhbmtzIHRvIFRvbSdzIG91dGVy LWpvaW4tYXdhcmUtVmFyIGluZnJhc3RydWN0dXJlLCB3ZQpjYW4gZWFzaWx5IGlkZW50aWZ5IHN1 Y2ggc2l0dWF0aW9ucyBhbmQgc3Vic2VxdWVudGx5IHJlZnJhaW4gZnJvbQpwdXNoaW5nIGRvd24g dGhlIGFnZ3JlZ2F0ZXMuCgpTdGFydGluZyBmcm9tIHRoaXMgcGF0Y2gsIHlvdSBzaG91bGQgYmUg YWJsZSB0byBzZWUgcGxhbnMgd2l0aCBlYWdlcgphZ2dyZWdhdGlvbi4KLS0tCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYyAgfCAgODQgKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jICAgfCAgNDggKysrKysrKysrCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jICAgfCAxMzYgKysrKysrKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgfCAxMDAg KysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8u YyB8ICA2MCArKysrKysrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5j ICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICB8ICAg NiAtLQogNyBmaWxlcyBjaGFuZ2VkLCAzODUgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYwppbmRleCAxMTQxMTU2ODk5Li4y Nzg4NTdkNzY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2 YWwuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYwpAQCAtNjAs OCArNjAsMTIgQEAgZ2Vxb19ldmFsKFBsYW5uZXJJbmZvICpyb290LCBHZW5lICp0b3VyLCBpbnQg bnVtX2dlbmUpCiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJUmVsT3B0SW5mbyAqam9pbnJlbDsK IAlDb3N0CQlmaXRuZXNzOwotCWludAkJCXNhdmVsZW5ndGg7Ci0Jc3RydWN0IEhUQUIgKnNhdmVo YXNoOworCWludAkJCXNhdmVsZW5ndGhfam9pbl9yZWw7CisJc3RydWN0IEhUQUIgKnNhdmVoYXNo X2pvaW5fcmVsOworCWludAkJCXNhdmVsZW5ndGhfZ3JvdXBlZF9yZWw7CisJc3RydWN0IEhUQUIg KnNhdmVoYXNoX2dyb3VwZWRfcmVsOworCWludAkJCXNhdmVsZW5ndGhfZ3JvdXBlZF9pbmZvOwor CXN0cnVjdCBIVEFCICpzYXZlaGFzaF9ncm91cGVkX2luZm87CiAKIAkvKgogCSAqIENyZWF0ZSBh IHByaXZhdGUgbWVtb3J5IGNvbnRleHQgdGhhdCB3aWxsIGhvbGQgYWxsIHRlbXAgc3RvcmFnZQpA QCAtNzgsMjUgKzgyLDM4IEBAIGdlcW9fZXZhbChQbGFubmVySW5mbyAqcm9vdCwgR2VuZSAqdG91 ciwgaW50IG51bV9nZW5lKQogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhteWNvbnRl eHQpOwogCiAJLyoKLQkgKiBnaW1tZV90cmVlIHdpbGwgYWRkIGVudHJpZXMgdG8gcm9vdC0+am9p bl9yZWxfbGlzdCwgd2hpY2ggbWF5IG9yIG1heQotCSAqIG5vdCBhbHJlYWR5IGNvbnRhaW4gc29t ZSBlbnRyaWVzLiAgVGhlIG5ld2x5IGFkZGVkIGVudHJpZXMgd2lsbCBiZQotCSAqIHJlY3ljbGVk IGJ5IHRoZSBNZW1vcnlDb250ZXh0RGVsZXRlIGJlbG93LCBzbyB3ZSBtdXN0IGVuc3VyZSB0aGF0 IHRoZQotCSAqIGxpc3QgaXMgcmVzdG9yZWQgdG8gaXRzIGZvcm1lciBzdGF0ZSBiZWZvcmUgZXhp dGluZy4gIFdlIGNhbiBkbyB0aGlzIGJ5Ci0JICogdHJ1bmNhdGluZyB0aGUgbGlzdCB0byBpdHMg b3JpZ2luYWwgbGVuZ3RoLiAgTk9URSB0aGlzIGFzc3VtZXMgdGhhdCBhbnkKLQkgKiBhZGRlZCBl bnRyaWVzIGFyZSBhcHBlbmRlZCBhdCB0aGUgZW5kIQorCSAqIGdpbW1lX3RyZWUgd2lsbCBhZGQg ZW50cmllcyB0byByb290LT5qb2luX3JlbF9saXN0LCByb290LT5hZ2dfaW5mb19saXN0CisJICog YW5kIHJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9BR0ddLCB3aGljaCBt YXkgb3IgbWF5IG5vdAorCSAqIGFscmVhZHkgY29udGFpbiBzb21lIGVudHJpZXMuICBUaGUgbmV3 bHkgYWRkZWQgZW50cmllcyB3aWxsIGJlIHJlY3ljbGVkCisJICogYnkgdGhlIE1lbW9yeUNvbnRl eHREZWxldGUgYmVsb3csIHNvIHdlIG11c3QgZW5zdXJlIHRoYXQgZWFjaCBsaXN0IG9mCisJICog dGhlIFJlbEluZm9MaXN0IHN0cnVjdHVyZXMgaXMgcmVzdG9yZWQgdG8gaXRzIGZvcm1lciBzdGF0 ZSBiZWZvcmUKKwkgKiBleGl0aW5nLiAgV2UgY2FuIGRvIHRoaXMgYnkgdHJ1bmNhdGluZyBlYWNo IGxpc3QgdG8gaXRzIG9yaWdpbmFsIGxlbmd0aC4KKwkgKiBOT1RFIHRoaXMgYXNzdW1lcyB0aGF0 IGFueSBhZGRlZCBlbnRyaWVzIGFyZSBhcHBlbmRlZCBhdCB0aGUgZW5kIQogCSAqCi0JICogV2Ug YWxzbyBtdXN0IHRha2UgY2FyZSBub3QgdG8gbWVzcyB1cCB0aGUgb3V0ZXIgam9pbl9yZWxfbGlz dC0+aGFzaCwgaWYKLQkgKiB0aGVyZSBpcyBvbmUuICBXZSBjYW4gZG8gdGhpcyBieSBqdXN0IHRl bXBvcmFyaWx5IHNldHRpbmcgdGhlIGxpbmsgdG8KLQkgKiBOVUxMLiAgKElmIHdlIGFyZSBkZWFs aW5nIHdpdGggZW5vdWdoIGpvaW4gcmVscywgd2hpY2ggd2UgdmVyeSBsaWtlbHkKLQkgKiBhcmUs IGEgbmV3IGhhc2ggdGFibGUgd2lsbCBnZXQgYnVpbHQgYW5kIHVzZWQgbG9jYWxseS4pCisJICog V2UgYWxzbyBtdXN0IHRha2UgY2FyZSBub3QgdG8gbWVzcyB1cCB0aGUgb3V0ZXIgaGFzaCB0YWJs ZXMgb2YgdGhlCisJICogUmVsSW5mb0xpc3Qgc3RydWN0dXJlcywgaWYgYW55LiAgV2UgY2FuIGRv IHRoaXMgYnkganVzdCB0ZW1wb3JhcmlseQorCSAqIHNldHRpbmcgZWFjaCBsaW5rIHRvIE5VTEwu ICAoSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBlbm91Z2ggam9pbiByZWxzLAorCSAqIHdoaWNoIHdl IHZlcnkgbGlrZWx5IGFyZSwgbmV3IGhhc2ggdGFibGVzIHdpbGwgZ2V0IGJ1aWx0IGFuZCB1c2Vk CisJICogbG9jYWxseS4pCiAJICoKIAkgKiBqb2luX3JlbF9sZXZlbFtdIHNob3VsZG4ndCBiZSBp biB1c2UsIHNvIGp1c3QgQXNzZXJ0IGl0IGlzbid0LgogCSAqLwotCXNhdmVsZW5ndGggPSBsaXN0 X2xlbmd0aChyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyk7Ci0Jc2F2ZWhhc2ggPSByb290LT5q b2luX3JlbF9saXN0LT5oYXNoOworCXNhdmVsZW5ndGhfam9pbl9yZWwgPSBsaXN0X2xlbmd0aChy b290LT5qb2luX3JlbF9saXN0LT5pdGVtcyk7CisJc2F2ZWhhc2hfam9pbl9yZWwgPSByb290LT5q b2luX3JlbF9saXN0LT5oYXNoOworCisJc2F2ZWxlbmd0aF9ncm91cGVkX3JlbCA9CisJCWxpc3Rf bGVuZ3RoKHJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9BR0ddLml0ZW1z KTsKKwlzYXZlaGFzaF9ncm91cGVkX3JlbCA9CisJCXJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxf UEFSVElBTF9HUk9VUF9BR0ddLmhhc2g7CisKKwlzYXZlbGVuZ3RoX2dyb3VwZWRfaW5mbyA9IGxp c3RfbGVuZ3RoKHJvb3QtPmFnZ19pbmZvX2xpc3QtPml0ZW1zKTsKKwlzYXZlaGFzaF9ncm91cGVk X2luZm8gPSByb290LT5hZ2dfaW5mb19saXN0LT5oYXNoOworCiAJQXNzZXJ0KHJvb3QtPmpvaW5f cmVsX2xldmVsID09IE5VTEwpOwogCiAJcm9vdC0+am9pbl9yZWxfbGlzdC0+aGFzaCA9IE5VTEw7 CisJcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10uaGFzaCA9IE5V TEw7CisJcm9vdC0+YWdnX2luZm9fbGlzdC0+aGFzaCA9IE5VTEw7CiAKIAkvKiBjb25zdHJ1Y3Qg dGhlIGJlc3QgcGF0aCBmb3IgdGhlIGdpdmVuIGNvbWJpbmF0aW9uIG9mIHJlbGF0aW9ucyAqLwog CWpvaW5yZWwgPSBnaW1tZV90cmVlKHJvb3QsIHRvdXIsIG51bV9nZW5lKTsKQEAgLTExOCwxMiAr MTM1LDIyIEBAIGdlcW9fZXZhbChQbGFubmVySW5mbyAqcm9vdCwgR2VuZSAqdG91ciwgaW50IG51 bV9nZW5lKQogCQlmaXRuZXNzID0gREJMX01BWDsKIAogCS8qCi0JICogUmVzdG9yZSBqb2luX3Jl bF9saXN0IHRvIGl0cyBmb3JtZXIgc3RhdGUsIGFuZCBwdXQgYmFjayBvcmlnaW5hbAotCSAqIGhh c2h0YWJsZSBpZiBhbnkuCisJICogUmVzdG9yZSBlYWNoIG9mIHRoZSBsaXN0IGluIGpvaW5fcmVs X2xpc3QsIGFnZ19pbmZvX2xpc3QgYW5kCisJICogdXBwZXJfcmVsc1tVUFBFUlJFTF9QQVJUSUFM X0dST1VQX0FHR10gdG8gaXRzIGZvcm1lciBzdGF0ZSwgYW5kIHB1dCBiYWNrCisJICogb3JpZ2lu YWwgaGFzaHRhYmxlIGlmIGFueS4KIAkgKi8KIAlyb290LT5qb2luX3JlbF9saXN0LT5pdGVtcyA9 IGxpc3RfdHJ1bmNhdGUocm9vdC0+am9pbl9yZWxfbGlzdC0+aXRlbXMsCi0JCQkJCQkJCQkJCSAg IHNhdmVsZW5ndGgpOwotCXJvb3QtPmpvaW5fcmVsX2xpc3QtPmhhc2ggPSBzYXZlaGFzaDsKKwkJ CQkJCQkJCQkJICAgc2F2ZWxlbmd0aF9qb2luX3JlbCk7CisJcm9vdC0+am9pbl9yZWxfbGlzdC0+ aGFzaCA9IHNhdmVoYXNoX2pvaW5fcmVsOworCisJcm9vdC0+dXBwZXJfcmVsc1tVUFBFUlJFTF9Q QVJUSUFMX0dST1VQX0FHR10uaXRlbXMgPQorCQlsaXN0X3RydW5jYXRlKHJvb3QtPnVwcGVyX3Jl bHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9BR0ddLml0ZW1zLAorCQkJCQkgIHNhdmVsZW5ndGhf Z3JvdXBlZF9yZWwpOworCXJvb3QtPnVwcGVyX3JlbHNbVVBQRVJSRUxfUEFSVElBTF9HUk9VUF9B R0ddLmhhc2ggPSBzYXZlaGFzaF9ncm91cGVkX3JlbDsKKworCXJvb3QtPmFnZ19pbmZvX2xpc3Qt Pml0ZW1zID0gbGlzdF90cnVuY2F0ZShyb290LT5hZ2dfaW5mb19saXN0LT5pdGVtcywKKwkJCQkJ CQkJCQkJICAgc2F2ZWxlbmd0aF9ncm91cGVkX2luZm8pOworCXJvb3QtPmFnZ19pbmZvX2xpc3Qt Pmhhc2ggPSBzYXZlaGFzaF9ncm91cGVkX2luZm87CiAKIAkvKiByZWxlYXNlIGFsbCB0aGUgbWVt b3J5IGFjcXVpcmVkIHdpdGhpbiBnaW1tZV90cmVlICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN4dCk7CkBAIC0yNzksNiArMzA2LDI3IEBAIG1lcmdlX2NsdW1wKFBsYW5uZXJJbmZvICpy b290LCBMaXN0ICpjbHVtcHMsIENsdW1wICpuZXdfY2x1bXAsIGludCBudW1fZ2VuZSwKIAkJCQkv KiBGaW5kIGFuZCBzYXZlIHRoZSBjaGVhcGVzdCBwYXRocyBmb3IgdGhpcyBqb2lucmVsICovCiAJ CQkJc2V0X2NoZWFwZXN0KGpvaW5yZWwpOwogCisJCQkJLyoKKwkJCQkgKiBFeGNlcHQgZm9yIHRo ZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNpZGVyIGdlbmVyYXRpbmcKKwkJCQkgKiBwYXJ0 aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiBvbiB0b3Agb2Yg dGhlCisJCQkJICogcGF0aHMgb2YgdGhpcyByZWwuICBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNy ZWF0aW5nIHBhdGhzIGZvcgorCQkJCSAqIHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0 X2NoZWFwZXN0KCkuCisJCQkJICovCisJCQkJaWYgKCFibXNfZXF1YWwoam9pbnJlbC0+cmVsaWRz LCByb290LT5hbGxfcXVlcnlfcmVscykpCisJCQkJeworCQkJCQlSZWxPcHRJbmZvICAgKnJlbF9n cm91cGVkOworCQkJCQlSZWxBZ2dJbmZvICAgKmFnZ19pbmZvOworCisJCQkJCXJlbF9ncm91cGVk ID0gZmluZF9ncm91cGVkX3JlbChyb290LCBqb2lucmVsLT5yZWxpZHMsCisJCQkJCQkJCQkJCQkg ICAmYWdnX2luZm8pOworCQkJCQlpZiAocmVsX2dyb3VwZWQpCisJCQkJCXsKKwkJCQkJCWdlbmVy YXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgcmVsX2dyb3VwZWQsIGpvaW5yZWwsCisJCQkJCQkJCQkJ CSAgIGFnZ19pbmZvKTsKKwkJCQkJCXNldF9jaGVhcGVzdChyZWxfZ3JvdXBlZCk7CisJCQkJCX0K KwkJCQl9CisKIAkJCQkvKiBBYnNvcmIgbmV3IGNsdW1wIGludG8gb2xkICovCiAJCQkJb2xkX2Ns dW1wLT5qb2lucmVsID0gam9pbnJlbDsKIAkJCQlvbGRfY2x1bXAtPnNpemUgKz0gbmV3X2NsdW1w LT5zaXplOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKaW5kZXggOTIxOTgxNWUz ZC4uMzU5ZWVlMzQ4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxs cGF0aHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCkBAIC0z ODU0LDYgKzM4NTQsMTAgQEAgc3RhbmRhcmRfam9pbl9zZWFyY2goUGxhbm5lckluZm8gKnJvb3Qs IGludCBsZXZlbHNfbmVlZGVkLCBMaXN0ICppbml0aWFsX3JlbHMpCiAJCSAqCiAJCSAqIEFmdGVy IHRoYXQsIHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0aHMgZm9yIHRoZSBqb2lucmVsLCBzbyBydW4K IAkJICogc2V0X2NoZWFwZXN0KCkuCisJCSAqCisJCSAqIEluIGFkZGl0aW9uLCB3ZSBhbHNvIHJ1 biBnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKCkgZm9yIHRoZSBncm91cGVkCisJCSAqIHJlbGF0aW9u IG9mIGVhY2gganVzdC1wcm9jZXNzZWQgam9pbnJlbCwgYW5kIHJ1biBzZXRfY2hlYXBlc3QoKSBm b3IKKwkJICogdGhlIGdyb3VwZWQgcmVsYXRpb24gYWZ0ZXJ3YXJkcy4KIAkJICovCiAJCWZvcmVh Y2gobGMsIHJvb3QtPmpvaW5fcmVsX2xldmVsW2xldl0pCiAJCXsKQEAgLTM4NzQsNiArMzg3OCwy NyBAQCBzdGFuZGFyZF9qb2luX3NlYXJjaChQbGFubmVySW5mbyAqcm9vdCwgaW50IGxldmVsc19u ZWVkZWQsIExpc3QgKmluaXRpYWxfcmVscykKIAkJCS8qIEZpbmQgYW5kIHNhdmUgdGhlIGNoZWFw ZXN0IHBhdGhzIGZvciB0aGlzIHJlbCAqLwogCQkJc2V0X2NoZWFwZXN0KHJlbCk7CiAKKwkJCS8q CisJCQkgKiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNpZGVyIGdl bmVyYXRpbmcKKwkJCSAqIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMgZm9yIHRoZSBncm91cGVk IHJlbGF0aW9uIG9uIHRvcCBvZiB0aGUKKwkJCSAqIHBhdGhzIG9mIHRoaXMgcmVsLiAgQWZ0ZXIg dGhhdCwgd2UncmUgZG9uZSBjcmVhdGluZyBwYXRocyBmb3IKKwkJCSAqIHRoZSBncm91cGVkIHJl bGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCQkgKi8KKwkJCWlmICghYm1zX2VxdWFs KHJlbC0+cmVsaWRzLCByb290LT5hbGxfcXVlcnlfcmVscykpCisJCQl7CisJCQkJUmVsT3B0SW5m byAgICpyZWxfZ3JvdXBlZDsKKwkJCQlSZWxBZ2dJbmZvICAgKmFnZ19pbmZvOworCisJCQkJcmVs X2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIHJlbC0+cmVsaWRzLAorCQkJCQkJCQkJ CQkgICAmYWdnX2luZm8pOworCQkJCWlmIChyZWxfZ3JvdXBlZCkKKwkJCQl7CisJCQkJCWdlbmVy YXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgcmVsX2dyb3VwZWQsIHJlbCwKKwkJCQkJCQkJCQkgICBh Z2dfaW5mbyk7CisJCQkJCXNldF9jaGVhcGVzdChyZWxfZ3JvdXBlZCk7CisJCQkJfQorCQkJfQor CiAjaWZkZWYgT1BUSU1JWkVSX0RFQlVHCiAJCQlwcHJpbnQocmVsKTsKICNlbmRpZgpAQCAtNDc0 Miw2ICs0NzY3LDI5IEBAIGdlbmVyYXRlX3BhcnRpdGlvbndpc2Vfam9pbl9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQogCQlpZiAoSVNfRFVNTVlfUkVMKGNoaWxkX3Jl bCkpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNj YW4vam9pbiByZWwsIGNvbnNpZGVyIGdlbmVyYXRpbmcgcGFydGlhbAorCQkgKiBhZ2dyZWdhdGlv biBwYXRocyBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gb24gdG9wIG9mIHRoZSBwYXRocyBvZgor CQkgKiB0aGlzIHBhcnRpdGlvbmVkIGNoaWxkLWpvaW4uICBBZnRlciB0aGF0LCB3ZSdyZSBkb25l IGNyZWF0aW5nIHBhdGhzCisJCSAqIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiwgc28gcnVuIHNl dF9jaGVhcGVzdCgpLgorCQkgKi8KKwkJaWYgKCFibXNfZXF1YWwoSVNfT1RIRVJfUkVMKHJlbCkg PworCQkJCQkgICByZWwtPnRvcF9wYXJlbnRfcmVsaWRzIDogcmVsLT5yZWxpZHMsCisJCQkJCSAg IHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJeworCQkJUmVsT3B0SW5mbyAgICpyZWxfZ3JvdXBl ZDsKKwkJCVJlbEFnZ0luZm8gICAqYWdnX2luZm87CisKKwkJCXJlbF9ncm91cGVkID0gZmluZF9n cm91cGVkX3JlbChyb290LCBjaGlsZF9yZWwtPnJlbGlkcywKKwkJCQkJCQkJCQkgICAmYWdnX2lu Zm8pOworCQkJaWYgKHJlbF9ncm91cGVkKQorCQkJeworCQkJCWdlbmVyYXRlX2dyb3VwZWRfcGF0 aHMocm9vdCwgcmVsX2dyb3VwZWQsIGNoaWxkX3JlbCwKKwkJCQkJCQkJCSAgIGFnZ19pbmZvKTsK KwkJCQlzZXRfY2hlYXBlc3QocmVsX2dyb3VwZWQpOworCQkJfQorCQl9CisKICNpZmRlZiBPUFRJ TUlaRVJfREVCVUcKIAkJcHByaW50KGNoaWxkX3JlbCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9qb2lucmVscy5jCmluZGV4IGRiNDc1ZTI1YjEuLjc4YTg4YzlkM2IgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYwpAQCAtMTYsMTEgKzE2LDEzIEBACiAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgorI2lu Y2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2pvaW5pbmZvLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhub2RlLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Bh dGhzLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCiAKIAogc3RhdGlj IHZvaWQgbWFrZV9yZWxzX2J5X2NsYXVzZV9qb2lucyhQbGFubmVySW5mbyAqcm9vdCwKQEAgLTM1 LDYgKzM3LDkgQEAgc3RhdGljIGJvb2wgaGFzX2xlZ2FsX2pvaW5jbGF1c2UoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CiBzdGF0aWMgYm9vbCByZXN0cmljdGlvbl9pc19jb25z dGFudF9mYWxzZShMaXN0ICpyZXN0cmljdGxpc3QsCiAJCQkJCQkJCQkJICBSZWxPcHRJbmZvICpq b2lucmVsLAogCQkJCQkJCQkJCSAgYm9vbCBvbmx5X3B1c2hlZF9kb3duKTsKK3N0YXRpYyB2b2lk IG1ha2VfZ3JvdXBlZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs MSwKKwkJCQkJCQkJICBSZWxPcHRJbmZvICpyZWwyLCBSZWxPcHRJbmZvICpqb2lucmVsLAorCQkJ CQkJCQkgIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLCBMaXN0ICpyZXN0cmljdGxpc3QpOwogc3Rh dGljIHZvaWQgcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwxLAogCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8g KmpvaW5yZWwsCiAJCQkJCQkJCQkJU3BlY2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3Ry aWN0bGlzdCk7CkBAIC03NzEsNiArNzc2LDEwIEBAIG1ha2Vfam9pbl9yZWwoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsIFJlbE9wdEluZm8gKnJlbDIpCiAJCXJldHVybiBqb2lu cmVsOwogCX0KIAorCS8qIEJ1aWxkIGEgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGZvciAnam9pbnJl bCcgaWYgcG9zc2libGUuICovCisJbWFrZV9ncm91cGVkX2pvaW5fcmVsKHJvb3QsIHJlbDEsIHJl bDIsIGpvaW5yZWwsIHNqaW5mbywKKwkJCQkJCSAgcmVzdHJpY3RsaXN0KTsKKwogCS8qIEFkZCBw YXRocyB0byB0aGUgam9pbiByZWxhdGlvbi4gKi8KIAlwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0 aHMocm9vdCwgcmVsMSwgcmVsMiwgam9pbnJlbCwgc2ppbmZvLAogCQkJCQkJCQlyZXN0cmljdGxp c3QpOwpAQCAtODgyLDYgKzg5MSwxMjggQEAgYWRkX291dGVyX2pvaW5zX3RvX3JlbGlkcyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsaWRzIGlucHV0X3JlbGlkcywKIAlyZXR1cm4gaW5wdXRfcmVsaWRz OwogfQogCisvKgorICogbWFrZV9ncm91cGVkX2pvaW5fcmVsCisgKgkgIEJ1aWxkIGEgZ3JvdXBl ZCBqb2luIHJlbGF0aW9uIG91dCBvZiAnam9pbnJlbCcgaWYgZWFnZXIgYWdncmVnYXRpb24gaXMK KyAqCSAgcG9zc2libGUgYW5kIHRoZSAnam9pbnJlbCcgY2FuIHByb2R1Y2UgZ3JvdXBlZCBwYXRo cy4KKyAqCisgKiBXZSBhbHNvIGdlbmVyYXRlIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMgZm9y IHRoZSBncm91cGVkIHJlbGF0aW9uIGJ5CisgKiBqb2luaW5nIHRoZSBncm91cGVkIHBhdGhzIG9m ICdyZWwxJyB0byB0aGUgcGxhaW4gcGF0aHMgb2YgJ3JlbDInLCBvciBieQorICogam9pbmluZyB0 aGUgZ3JvdXBlZCBwYXRocyBvZiAncmVsMicgdG8gdGhlIHBsYWluIHBhdGhzIG9mICdyZWwxJy4K KyAqLworc3RhdGljIHZvaWQKK21ha2VfZ3JvdXBlZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsMSwKKwkJCQkJICBSZWxPcHRJbmZvICpyZWwyLCBSZWxPcHRJbmZv ICpqb2lucmVsLAorCQkJCQkgIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLCBMaXN0ICpyZXN0cmlj dGxpc3QpCit7CisJUmVsT3B0SW5mbwkgICAqcmVsX2dyb3VwZWQ7CisJUmVsQWdnSW5mbwkgICAq YWdnX2luZm8gPSBOVUxMOworCVJlbE9wdEluZm8JICAgKnJlbDFfZ3JvdXBlZDsKKwlSZWxPcHRJ bmZvCSAgICpyZWwyX2dyb3VwZWQ7CisJYm9vbAkJCXJlbDFfZW1wdHk7CisJYm9vbAkJCXJlbDJf ZW1wdHk7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMg b3IgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVhZ2VyCisJICogYWdncmVnYXRpb24gaXMgbm90IHBv c3NpYmxlLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMIHx8CisJCXJv b3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpCisJCXJldHVybjsKKworCS8qCisJICogU2VlIGlm IHdlIGFscmVhZHkgaGF2ZSBhIGdyb3VwZWQgam9pbnJlbCBmb3IgdGhpcyBqb2lucmVsLgorCSAq LworCXJlbF9ncm91cGVkID0gZmluZF9ncm91cGVkX3JlbChyb290LCBqb2lucmVsLT5yZWxpZHMs ICZhZ2dfaW5mbyk7CisKKwkvKgorCSAqIENvbnN0cnVjdCBhIG5ldyBSZWxPcHRJbmZvIGZvciB0 aGUgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGlmIHRoZXJlIGlzIG5vCisJICogZXhpc3Rpbmcgb25l LgorCSAqLworCWlmIChyZWxfZ3JvdXBlZCA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogUHJlcGFy ZSB0aGUgaW5mb3JtYXRpb24gd2UgbmVlZCB0byBjcmVhdGUgZ3JvdXBlZCBwYXRocyBmb3IgdGhp cworCQkgKiBqb2luIHJlbGF0aW9uLgorCQkgKi8KKwkJYWdnX2luZm8gPSBjcmVhdGVfcmVsX2Fn Z19pbmZvKHJvb3QsIGpvaW5yZWwpOworCQlpZiAoYWdnX2luZm8gPT0gTlVMTCkKKwkJCXJldHVy bjsKKworCQkvKiBidWlsZCBhIGdyb3VwZWQgcmVsYXRpb24gb3V0IG9mIHRoZSBwbGFpbiByZWxh dGlvbiAqLworCQlyZWxfZ3JvdXBlZCA9IGJ1aWxkX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwp OworCQlyZWxfZ3JvdXBlZC0+cmVsdGFyZ2V0ID0gYWdnX2luZm8tPnRhcmdldDsKKwkJcmVsX2dy b3VwZWQtPnJvd3MgPSBhZ2dfaW5mby0+Z3JvdXBlZF9yb3dzOworCisJCS8qCisJCSAqIE1ha2Ug dGhlIGdyb3VwZWQgcmVsYXRpb24gYXZhaWxhYmxlIGZvciBmdXJ0aGVyIGpvaW5pbmcgb3IgZm9y CisJCSAqIGFjdGluZyBhcyB0aGUgdXBwZXIgcmVsIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9m IHBhcnRpYWwKKwkJICogYWdncmVnYXRpb24uCisJCSAqLworCQlhZGRfZ3JvdXBlZF9yZWwocm9v dCwgcmVsX2dyb3VwZWQsIGFnZ19pbmZvKTsKKwl9CisKKwlBc3NlcnQoYWdnX2luZm8gIT0gTlVM TCk7CisKKwkvKgorCSAqIElmIHdlJ3ZlIGFscmVhZHkgcHJvdmVuIHRoaXMgZ3JvdXBlZCBqb2lu IHJlbGF0aW9uIGlzIGVtcHR5LCB3ZSBuZWVkbid0CisJICogY29uc2lkZXIgYW55IG1vcmUgcGF0 aHMgZm9yIGl0LgorCSAqLworCWlmIChJU19EVU1NWV9SRUwocmVsX2dyb3VwZWQpKQorCQlyZXR1 cm47CisKKwkvKiByZXRyaWV2ZSB0aGUgZ3JvdXBlZCByZWxhdGlvbnMgZm9yIHRoZSB0d28gaW5w dXQgcmVscyAqLworCXJlbDFfZ3JvdXBlZCA9IGZpbmRfZ3JvdXBlZF9yZWwocm9vdCwgcmVsMS0+ cmVsaWRzLCBOVUxMKTsKKwlyZWwyX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIHJl bDItPnJlbGlkcywgTlVMTCk7CisKKwlyZWwxX2VtcHR5ID0gKHJlbDFfZ3JvdXBlZCA9PSBOVUxM IHx8IElTX0RVTU1ZX1JFTChyZWwxX2dyb3VwZWQpKTsKKwlyZWwyX2VtcHR5ID0gKHJlbDJfZ3Jv dXBlZCA9PSBOVUxMIHx8IElTX0RVTU1ZX1JFTChyZWwyX2dyb3VwZWQpKTsKKworCS8qIE5vdGhp bmcgdG8gZG8gaWYgdGhlcmUncyBubyBncm91cGVkIHJlbGF0aW9uLiAqLworCWlmIChyZWwxX2Vt cHR5ICYmIHJlbDJfZW1wdHkpCisJCXJldHVybjsKKworCS8qCisJICogSm9pbiBvZiB0d28gZ3Jv dXBlZCByZWxhdGlvbnMgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuICBJbiBzdWNoIGEKKwkg KiBjYXNlLCBncm91cGluZyBvZiBvbmUgc2lkZSB3b3VsZCBjaGFuZ2UgdGhlIG9jY3VycmVuY2Ug b2YgdGhlIG90aGVyCisJICogc2lkZSdzIGFnZ3JlZ2F0ZSB0cmFuc2llbnQgc3RhdGVzIG9uIHRo ZSBpbnB1dCBvZiB0aGUgZmluYWwgYWdncmVnYXRpb24uCisJICogVGhpcyBjYW4gYmUgaGFuZGxl ZCBieSBhZGp1c3RpbmcgdGhlIHRyYW5zaWVudCBzdGF0ZXMsIGJ1dCBpdCdzIG5vdAorCSAqIHdv cnRoIHRoZSBlZmZvcnQgZm9yIG5vdy4KKwkgKi8KKwlpZiAoIXJlbDFfZW1wdHkgJiYgIXJlbDJf ZW1wdHkpCisJCXJldHVybjsKKworCS8qIGdlbmVyYXRlIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0 aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uICovCisJaWYgKCFyZWwxX2VtcHR5KQorCXsKKwkJ c2V0X2pvaW5yZWxfc2l6ZV9lc3RpbWF0ZXMocm9vdCwgcmVsX2dyb3VwZWQsIHJlbDFfZ3JvdXBl ZCwgcmVsMiwKKwkJCQkJCQkJICAgc2ppbmZvLCByZXN0cmljdGxpc3QpOworCQlwb3B1bGF0ZV9q b2lucmVsX3dpdGhfcGF0aHMocm9vdCwgcmVsMV9ncm91cGVkLCByZWwyLCByZWxfZ3JvdXBlZCwK KwkJCQkJCQkJCXNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwkJLyoKKwkJICogSXQgc2hvdWxkbid0 IGhhcHBlbiB0aGF0IHdlIGhhdmUgbWFya2VkIHJlbDFfZ3JvdXBlZCBhcyBkdW1teSBpbgorCQkg KiBwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMgZHVlIHRvIHByb3ZhYmx5IGNvbnN0YW50LWZh bHNlIGpvaW4KKwkJICogcmVzdHJpY3Rpb25zLCBoZW5jZSB3ZSB3b3VsZG4ndCBlbmQgdXAgd2l0 aCBhIHBsYW4gdGhhdCBoYXMgQWdncmVmCisJCSAqIGluIG5vbi1BZ2cgcGxhbiBub2RlLgorCQkg Ki8KKwkJQXNzZXJ0KCFJU19EVU1NWV9SRUwocmVsMV9ncm91cGVkKSk7CisJfQorCWVsc2UgaWYg KCFyZWwyX2VtcHR5KQorCXsKKwkJc2V0X2pvaW5yZWxfc2l6ZV9lc3RpbWF0ZXMocm9vdCwgcmVs X2dyb3VwZWQsIHJlbDEsIHJlbDJfZ3JvdXBlZCwKKwkJCQkJCQkJICAgc2ppbmZvLCByZXN0cmlj dGxpc3QpOworCQlwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMocm9vdCwgcmVsMSwgcmVsMl9n cm91cGVkLCByZWxfZ3JvdXBlZCwKKwkJCQkJCQkJCXNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwkJ LyoKKwkJICogSXQgc2hvdWxkbid0IGhhcHBlbiB0aGF0IHdlIGhhdmUgbWFya2VkIHJlbDJfZ3Jv dXBlZCBhcyBkdW1teSBpbgorCQkgKiBwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMgZHVlIHRv IHByb3ZhYmx5IGNvbnN0YW50LWZhbHNlIGpvaW4KKwkJICogcmVzdHJpY3Rpb25zLCBoZW5jZSB3 ZSB3b3VsZG4ndCBlbmQgdXAgd2l0aCBhIHBsYW4gdGhhdCBoYXMgQWdncmVmCisJCSAqIGluIG5v bi1BZ2cgcGxhbiBub2RlLgorCQkgKi8KKwkJQXNzZXJ0KCFJU19EVU1NWV9SRUwocmVsMl9ncm91 cGVkKSk7CisJfQorfQorCiAvKgogICogcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzCiAgKgkg IEFkZCBwYXRocyB0byB0aGUgZ2l2ZW4gam9pbnJlbCBmb3IgZ2l2ZW4gcGFpciBvZiBqb2luaW5n IHJlbGF0aW9ucy4gVGhlCkBAIC0xNjcxLDYgKzE4MDIsMTEgQEAgdHJ5X3BhcnRpdGlvbndpc2Vf am9pbihQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVs MiwKIAkJCQkJCSBhZGp1c3RfY2hpbGRfcmVsaWRzKGpvaW5yZWwtPnJlbGlkcywKIAkJCQkJCQkJ CQkJIG5hcHBpbmZvcywgYXBwaW5mb3MpKSk7CiAKKwkJLyogQnVpbGQgYSBncm91cGVkIGpvaW4g cmVsYXRpb24gZm9yICdjaGlsZF9qb2lucmVsJyBpZiBwb3NzaWJsZSAqLworCQltYWtlX2dyb3Vw ZWRfam9pbl9yZWwocm9vdCwgY2hpbGRfcmVsMSwgY2hpbGRfcmVsMiwKKwkJCQkJCQkgIGNoaWxk X2pvaW5yZWwsIGNoaWxkX3NqaW5mbywKKwkJCQkJCQkgIGNoaWxkX3Jlc3RyaWN0bGlzdCk7CisK IAkJLyogQW5kIG1ha2UgcGF0aHMgZm9yIHRoZSBjaGlsZCBqb2luICovCiAJCXBvcHVsYXRlX2pv aW5yZWxfd2l0aF9wYXRocyhyb290LCBjaGlsZF9yZWwxLCBjaGlsZF9yZWwyLAogCQkJCQkJCQkJ Y2hpbGRfam9pbnJlbCwgY2hpbGRfc2ppbmZvLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jCmluZGV4IDQ3MTFmOTEyMzkuLmI2OWVmYjNjZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMKQEAgLTIyNSw3ICsyMjUsNiBAQCBzdGF0aWMgdm9pZCBhZGRfcGF0aHNfdG9f Z3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJ CQkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcnRpYWxseV9ncm91cGVkX3JlbCwKIAkJCQkJCQkJCSAg Y29uc3QgQWdnQ2xhdXNlQ29zdHMgKmFnZ19jb3N0cywKIAkJCQkJCQkJCSAgZ3JvdXBpbmdfc2V0 c19kYXRhICpnZCwKLQkJCQkJCQkJCSAgZG91YmxlIGROdW1Hcm91cHMsCiAJCQkJCQkJCQkgIEdy b3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEpOwogc3RhdGljIFJlbE9wdEluZm8gKmNyZWF0ZV9wYXJ0 aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJIFJlbE9w dEluZm8gKmdyb3VwZWRfcmVsLApAQCAtMzk5OSw5ICszOTk4LDcgQEAgY3JlYXRlX29yZGluYXJ5 X2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWws CiAJCQkJCQkJICAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSwKIAkJCQkJCQkgICBSZWxPcHRJ bmZvICoqcGFydGlhbGx5X2dyb3VwZWRfcmVsX3ApCiB7Ci0JUGF0aAkgICAqY2hlYXBlc3RfcGF0 aCA9IGlucHV0X3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aDsKIAlSZWxPcHRJbmZvICpwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwgPSBOVUxMOwotCWRvdWJsZQkJZE51bUdyb3VwczsKIAlQYXJ0aXRpb253 aXNlQWdncmVnYXRlVHlwZSBwYXR5cGUgPSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9OT05FOwog CiAJLyoKQEAgLTQwODIsMjMgKzQwNzksMjEgQEAgY3JlYXRlX29yZGluYXJ5X2dyb3VwaW5nX3Bh dGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAKIAkvKiBHYXRo ZXIgYW55IHBhcnRpYWxseSBncm91cGVkIHBhcnRpYWwgcGF0aHMuICovCiAJaWYgKHBhcnRpYWxs eV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhcnRpYWxfcGF0aGxpc3Qp Ci0JewogCQlnYXRoZXJfZ3JvdXBpbmdfcGF0aHMocm9vdCwgcGFydGlhbGx5X2dyb3VwZWRfcmVs KTsKLQkJc2V0X2NoZWFwZXN0KHBhcnRpYWxseV9ncm91cGVkX3JlbCk7Ci0JfQogCiAJLyoKLQkg KiBFc3RpbWF0ZSBudW1iZXIgb2YgZ3JvdXBzLgorCSAqIE5vdyBjaG9vc2UgdGhlIGJlc3QgcGF0 aChzKSBmb3IgcGFydGlhbGx5X2dyb3VwZWRfcmVsLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBu b24tcGFydGlhbCBwYXRocyBjYW4gY29tZSBlaXRoZXIgZnJvbSB0aGUgR2F0aGVyIGFib3ZlIG9y CisJICogZnJvbSBlYWdlciBhZ2dyZWdhdGlvbi4KIAkgKi8KLQlkTnVtR3JvdXBzID0gZ2V0X251 bWJlcl9vZl9ncm91cHMocm9vdCwKLQkJCQkJCQkJCSAgY2hlYXBlc3RfcGF0aC0+cm93cywKLQkJ CQkJCQkJCSAgZ2QsCi0JCQkJCQkJCQkgIGV4dHJhLT50YXJnZXRMaXN0KTsKKwlpZiAocGFydGlh bGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCisJCXNl dF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCiAJLyogQnVpbGQgZmluYWwgZ3Jv dXBpbmcgcGF0aHMgKi8KIAlhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKHJvb3QsIGlucHV0X3Jl bCwgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIGFnZ19jb3N0 cywgZ2QsCi0JCQkJCQkJICBkTnVtR3JvdXBzLCBleHRyYSk7CisJCQkJCQkJICBleHRyYSk7CiAK IAkvKiBHaXZlIGEgaGVscGZ1bCBlcnJvciBpZiB3ZSBmYWlsZWQgdG8gZmluZCBhbnkgaW1wbGVt ZW50YXRpb24gKi8KIAlpZiAoZ3JvdXBlZF9yZWwtPnBhdGhsaXN0ID09IE5JTCkKQEAgLTY5Njcs MTYgKzY5NjIsNDIgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJICBSZWxPcHRJbmZvICpncm91cGVkX3Jl bCwKIAkJCQkJCSAgUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRfcmVsLAogCQkJCQkJICBj b25zdCBBZ2dDbGF1c2VDb3N0cyAqYWdnX2Nvc3RzLAotCQkJCQkJICBncm91cGluZ19zZXRzX2Rh dGEgKmdkLCBkb3VibGUgZE51bUdyb3VwcywKKwkJCQkJCSAgZ3JvdXBpbmdfc2V0c19kYXRhICpn ZCwKIAkJCQkJCSAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSkKIHsKIAlRdWVyeQkgICAqcGFy c2UgPSByb290LT5wYXJzZTsKIAlQYXRoCSAgICpjaGVhcGVzdF9wYXRoID0gaW5wdXRfcmVsLT5j aGVhcGVzdF90b3RhbF9wYXRoOworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVk X3BhdGggPSBOVUxMOwogCUxpc3RDZWxsICAgKmxjOwogCWJvb2wJCWNhbl9oYXNoID0gKGV4dHJh LT5mbGFncyAmIEdST1VQSU5HX0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5fc29ydCA9 IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAJTGlzdAkgICAq aGF2aW5nUXVhbCA9IChMaXN0ICopIGV4dHJhLT5oYXZpbmdRdWFsOwogCUFnZ0NsYXVzZUNvc3Rz ICphZ2dfZmluYWxfY29zdHMgPSAmZXh0cmEtPmFnZ19maW5hbF9jb3N0czsKKwlkb3VibGUJCWRO dW1Hcm91cHMgPSAwOworCWRvdWJsZQkJZE51bUZpbmFsR3JvdXBzID0gMDsKKworCS8qCisJICog RXN0aW1hdGUgbnVtYmVyIG9mIGdyb3VwcyBmb3Igbm9uLXNwbGl0IGFnZ3JlZ2F0aW9uLgorCSAq LworCWROdW1Hcm91cHMgPSBnZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290LAorCQkJCQkJCQkJICBj aGVhcGVzdF9wYXRoLT5yb3dzLAorCQkJCQkJCQkJICBnZCwKKwkJCQkJCQkJCSAgZXh0cmEtPnRh cmdldExpc3QpOworCisJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwtPnBhdGhsaXN0KQorCXsKKwkJY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0 aCA9CisJCQlwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7CisKKwkJ LyoKKwkJICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3VwcyBmb3IgZmluYWwgcGhhc2Ugb2YgcGFy dGlhbCBhZ2dyZWdhdGlvbi4KKwkJICovCisJCWROdW1GaW5hbEdyb3VwcyA9CisJCQlnZXRfbnVt YmVyX29mX2dyb3Vwcyhyb290LAorCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRf cGF0aC0+cm93cywKKwkJCQkJCQkJIGdkLAorCQkJCQkJCQkgZXh0cmEtPnRhcmdldExpc3QpOwor CX0KIAogCWlmIChjYW5fc29ydCkKIAl7CkBAIC03MDg4LDcgKzcxMDksNyBAQCBhZGRfcGF0aHNf dG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWws CiAJCQkJCXBhdGggPSBtYWtlX29yZGVyZWRfcGF0aChyb290LAogCQkJCQkJCQkJCQkgZ3JvdXBl ZF9yZWwsCiAJCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRf cmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoLAorCQkJCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5 X2dyb3VwZWRfcGF0aCwKIAkJCQkJCQkJCQkJIGluZm8tPnBhdGhrZXlzKTsKIAogCQkJCQlpZiAo cGF0aCA9PSBOVUxMKQpAQCAtNzEwNSw3ICs3MTI2LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5n X3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJ CQkJIGluZm8tPmNsYXVzZXMsCiAJCQkJCQkJCQkJCQkgaGF2aW5nUXVhbCwKIAkJCQkJCQkJCQkJ CSBhZ2dfZmluYWxfY29zdHMsCi0JCQkJCQkJCQkJCQkgZE51bUdyb3VwcykpOworCQkJCQkJCQkJ CQkJIGROdW1GaW5hbEdyb3VwcykpOwogCQkJCQllbHNlCiAJCQkJCQlhZGRfcGF0aChncm91cGVk X3JlbCwgKFBhdGggKikKIAkJCQkJCQkJIGNyZWF0ZV9ncm91cF9wYXRoKHJvb3QsCkBAIC03MTEz LDcgKzcxMzQsNyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkJCQkJCQkgICBwYXRoLAogCQkJCQkJCQkJ CQkJICAgaW5mby0+Y2xhdXNlcywKIAkJCQkJCQkJCQkJCSAgIGhhdmluZ1F1YWwsCi0JCQkJCQkJ CQkJCQkgICBkTnVtR3JvdXBzKSk7CisJCQkJCQkJCQkJCQkgICBkTnVtRmluYWxHcm91cHMpKTsK IAogCQkJCX0KIAkJCX0KQEAgLTcxNTUsMTkgKzcxNzYsMTcgQEAgYWRkX3BhdGhzX3RvX2dyb3Vw aW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkgKi8K IAkJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBh dGhsaXN0KQogCQl7Ci0JCQlQYXRoCSAgICpwYXRoID0gcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5j aGVhcGVzdF90b3RhbF9wYXRoOwotCiAJCQlhZGRfcGF0aChncm91cGVkX3JlbCwgKFBhdGggKikK IAkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAotCQkJ CQkJCQkJIHBhdGgsCisJCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCwK IAkJCQkJCQkJCSBncm91cGVkX3JlbC0+cmVsdGFyZ2V0LAogCQkJCQkJCQkJIEFHR19IQVNIRUQs CiAJCQkJCQkJCQkgQUdHU1BMSVRfRklOQUxfREVTRVJJQUwsCiAJCQkJCQkJCQkgcm9vdC0+cHJv Y2Vzc2VkX2dyb3VwQ2xhdXNlLAogCQkJCQkJCQkJIGhhdmluZ1F1YWwsCiAJCQkJCQkJCQkgYWdn X2ZpbmFsX2Nvc3RzLAotCQkJCQkJCQkJIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCSBkTnVtRmlu YWxHcm91cHMpKTsKIAkJfQogCX0KIApAQCAtNzIxNyw2ICs3MjM2LDIxIEBAIGNyZWF0ZV9wYXJ0 aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCWJvb2wJCWNhbl9oYXNoID0g KGV4dHJhLT5mbGFncyAmIEdST1VQSU5HX0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5f c29ydCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAKKwkv KgorCSAqIFRoZSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgY291bGQgaGF2ZSBiZWVuIGFscmVhZHkg Y3JlYXRlZCBkdWUgdG8gZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlwYXJ0aWFsbHlf Z3JvdXBlZF9yZWwgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIGlucHV0X3JlbC0+cmVsaWRzLCBO VUxMKTsKKwlBc3NlcnQoZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSB8fCBwYXJ0aWFsbHlfZ3JvdXBl ZF9yZWwgPT0gTlVMTCk7CisKKwkvKgorCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHBhcnRp YWxseV9ncm91cGVkX3JlbCBjcmVhdGVkIGJ5IGVhZ2VyCisJICogYWdncmVnYXRpb24gaXMgZHVt bXkuICBJbiB0aGlzIGNhc2Ugd2UganVzdCBzZXQgaXQgdG8gTlVMTC4gIEl0IG1pZ2h0IGJlCisJ ICogY3JlYXRlZCBhZ2FpbiBieSB0aGUgZm9sbG93aW5nIGxvZ2ljIGlmIHBvc3NpYmxlLgorCSAq LworCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgSVNfRFVNTVlfUkVMKHBhcnRpYWxseV9n cm91cGVkX3JlbCkpCisJCXBhcnRpYWxseV9ncm91cGVkX3JlbCA9IE5VTEw7CisKIAkvKgogCSAq IENvbnNpZGVyIHdoZXRoZXIgd2Ugc2hvdWxkIGdlbmVyYXRlIHBhcnRpYWxseSBhZ2dyZWdhdGVk IG5vbi1wYXJ0aWFsCiAJICogcGF0aHMuICBXZSBjYW4gb25seSBkbyB0aGlzIGlmIHdlIGhhdmUg YSBub24tcGFydGlhbCBwYXRoLCBhbmQgb25seSBpZgpAQCAtNzI0MCwxOSArNzI3NCwyNyBAQCBj cmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBJZiB3 ZSBjYW4ndCBwYXJ0aWFsbHkgYWdncmVnYXRlIHBhcnRpYWwgcGF0aHMsIGFuZCB3ZSBjYW4ndCBw YXJ0aWFsbHkKIAkgKiBhZ2dyZWdhdGUgbm9uLXBhcnRpYWwgcGF0aHMsIHRoZW4gZG9uJ3QgYm90 aGVyIGNyZWF0aW5nIHRoZSBuZXcKIAkgKiBSZWxPcHRJbmZvIGF0IGFsbCwgdW5sZXNzIHRoZSBj YWxsZXIgc3BlY2lmaWVkIGZvcmNlX3JlbF9jcmVhdGlvbi4KKwkgKgorCSAqIE5vdGUgdGhhdCB0 aGUgcGFydGlhbGx5X2dyb3VwZWRfcmVsIGNvdWxkIGhhdmUgYmVlbiBhbHJlYWR5IGNyZWF0ZWQg YW5kCisJICogcG9wdWxhdGVkIHdpdGggYXBwcm9wcmlhdGUgcGF0aHMgYnkgZWFnZXIgYWdncmVn YXRpb24uCiAJICovCiAJaWYgKGNoZWFwZXN0X3RvdGFsX3BhdGggPT0gTlVMTCAmJgogCQljaGVh cGVzdF9wYXJ0aWFsX3BhdGggPT0gTlVMTCAmJgorCQkocGFydGlhbGx5X2dyb3VwZWRfcmVsID09 IE5VTEwgfHwKKwkJIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QgPT0gTklMKSAmJgog CQkhZm9yY2VfcmVsX2NyZWF0aW9uKQogCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogQnVpbGQg YSBuZXcgdXBwZXIgcmVsYXRpb24gdG8gcmVwcmVzZW50IHRoZSByZXN1bHQgb2YgcGFydGlhbGx5 Ci0JICogYWdncmVnYXRpbmcgdGhlIHJvd3MgZnJvbSB0aGUgaW5wdXQgcmVsYXRpb24uCi0JICov Ci0JcGFydGlhbGx5X2dyb3VwZWRfcmVsID0gZmV0Y2hfdXBwZXJfcmVsKHJvb3QsCi0JCQkJCQkJ CQkJCVVQUEVSUkVMX1BBUlRJQUxfR1JPVVBfQUdHLAotCQkJCQkJCQkJCQlncm91cGVkX3JlbC0+ cmVsaWRzKTsKKwkgKiBhZ2dyZWdhdGluZyB0aGUgcm93cyBmcm9tIHRoZSBpbnB1dCByZWxhdGlv bi4gIFRoZSByZWxhdGlvbiBtYXkgYWxyZWFkeQorCSAqIGV4aXN0IGR1ZSB0byBlYWdlciBhZ2dy ZWdhdGlvbiwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBuZWVkIHRvIGNyZWF0ZQorCSAqIGl0Lgor CSAqLworCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgPT0gTlVMTCkKKwkJcGFydGlhbGx5X2dy b3VwZWRfcmVsID0gZmV0Y2hfdXBwZXJfcmVsKHJvb3QsCisJCQkJCQkJCQkJCQlVUFBFUlJFTF9Q QVJUSUFMX0dST1VQX0FHRywKKwkJCQkJCQkJCQkJCWdyb3VwZWRfcmVsLT5yZWxpZHMpOwogCXBh cnRpYWxseV9ncm91cGVkX3JlbC0+Y29uc2lkZXJfcGFyYWxsZWwgPQogCQlncm91cGVkX3JlbC0+ Y29uc2lkZXJfcGFyYWxsZWw7CiAJcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5yZWxvcHRraW5kID0g Z3JvdXBlZF9yZWwtPnJlbG9wdGtpbmQ7CkBAIC03MjYxLDYgKzczMDMsMTQgQEAgY3JlYXRlX3Bh cnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJcGFydGlhbGx5X2dyb3Vw ZWRfcmVsLT51c2VyaWRpc2N1cnJlbnQgPSBncm91cGVkX3JlbC0+dXNlcmlkaXNjdXJyZW50Owog CXBhcnRpYWxseV9ncm91cGVkX3JlbC0+ZmR3cm91dGluZSA9IGdyb3VwZWRfcmVsLT5mZHdyb3V0 aW5lOwogCisJLyoKKwkgKiBQYXJ0aWFsbHktZ3JvdXBlZCBwYXJ0aWFsIHBhdGhzIG1heSBoYXZl IGJlZW4gZ2VuZXJhdGVkIGJ5IGVhZ2VyCisJICogYWdncmVnYXRpb24uICBJZiB3ZSBmaW5kIHRo YXQgcGFyYWxsZWxpc20gaXMgbm90IHBvc3NpYmxlIGZvcgorCSAqIHBhcnRpYWxseV9ncm91cGVk X3JlbCwgd2UgbmVlZCB0byBkcm9wIHRoZXNlIHBhcnRpYWwgcGF0aHMuCisJICovCisJaWYgKCFw YXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNvbnNpZGVyX3BhcmFsbGVsKQorCQlwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwtPnBhcnRpYWxfcGF0aGxpc3QgPSBOSUw7CisKIAkvKgogCSAqIEJ1aWxkIHRhcmdl dCBsaXN0IGZvciBwYXJ0aWFsIGFnZ3JlZ2F0ZSBwYXRocy4gIFRoZXNlIHBhdGhzIGNhbm5vdCBq dXN0CiAJICogZW1pdCB0aGUgc2FtZSB0bGlzdCBhcyByZWd1bGFyIGFnZ3JlZ2F0ZSBwYXRocywg YmVjYXVzZSAoMSkgd2UgbXVzdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvYXBwZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5j CmluZGV4IDZiYTRlYmEyMjQuLjA4ZGU3N2Q0MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL2FwcGVuZGluZm8uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9hcHBlbmRpbmZvLmMKQEAgLTQ5NSw2ICs0OTUsNjYgQEAgYWRqdXN0X2FwcGVuZHJlbF9hdHRy c19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCXJldHVybiAoTm9kZSAqKSBuZXdpbmZvOwogCX0KIAor CS8qCisJICogV2UgaGF2ZSB0byBwcm9jZXNzIFJlbEFnZ0luZm8gbm9kZXMgc3BlY2lhbGx5Lgor CSAqLworCWlmIChJc0Eobm9kZSwgUmVsQWdnSW5mbykpCisJeworCQlSZWxBZ2dJbmZvICpvbGRp bmZvID0gKFJlbEFnZ0luZm8gKikgbm9kZTsKKwkJUmVsQWdnSW5mbyAqbmV3aW5mbyA9IG1ha2VO b2RlKFJlbEFnZ0luZm8pOworCisJCS8qIENvcHkgYWxsIGZsYXQtY29waWFibGUgZmllbGRzICov CisJCW1lbWNweShuZXdpbmZvLCBvbGRpbmZvLCBzaXplb2YoUmVsQWdnSW5mbykpOworCisJCW5l d2luZm8tPnJlbGlkcyA9IGFkanVzdF9jaGlsZF9yZWxpZHMob2xkaW5mby0+cmVsaWRzLAorCQkJ CQkJCQkJCQkgIGNvbnRleHQtPm5hcHBpbmZvcywKKwkJCQkJCQkJCQkJICBjb250ZXh0LT5hcHBp bmZvcyk7CisKKwkJbmV3aW5mby0+dGFyZ2V0ID0gKFBhdGhUYXJnZXQgKikKKwkJCWFkanVzdF9h cHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT50YXJnZXQsCisJCQkJCQkJ CQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+YWdnX2lucHV0ID0gKFBhdGhUYXJnZXQgKikK KwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT5hZ2df aW5wdXQsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBfY2xhdXNl cyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikg b2xkaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCQkgICBjb250ZXh0KTsKKworCQluZXdp bmZvLT5ncm91cF9leHBycyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211 dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJCQkJICAgY29udGV4 dCk7CisKKwkJcmV0dXJuIChOb2RlICopIG5ld2luZm87CisJfQorCisJLyoKKwkgKiBXZSBoYXZl IHRvIHByb2Nlc3MgUGF0aFRhcmdldCBub2RlcyBzcGVjaWFsbHkuCisJICovCisJaWYgKElzQShu b2RlLCBQYXRoVGFyZ2V0KSkKKwl7CisJCVBhdGhUYXJnZXQgKm9sZHRhcmdldCA9IChQYXRoVGFy Z2V0ICopIG5vZGU7CisJCVBhdGhUYXJnZXQgKm5ld3RhcmdldCA9IG1ha2VOb2RlKFBhdGhUYXJn ZXQpOworCisJCS8qIENvcHkgYWxsIGZsYXQtY29waWFibGUgZmllbGRzICovCisJCW1lbWNweShu ZXd0YXJnZXQsIG9sZHRhcmdldCwgc2l6ZW9mKFBhdGhUYXJnZXQpKTsKKworCQlpZiAob2xkdGFy Z2V0LT5zb3J0Z3JvdXByZWZzKQorCQl7CisJCQlTaXplCW5ieXRlcyA9IGxpc3RfbGVuZ3RoKG9s ZHRhcmdldC0+ZXhwcnMpICogc2l6ZW9mKEluZGV4KTsKKworCQkJbmV3dGFyZ2V0LT5leHBycyA9 IChMaXN0ICopCisJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2RlICopIG9s ZHRhcmdldC0+ZXhwcnMsCisJCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCQluZXd0YXJnZXQt PnNvcnRncm91cHJlZnMgPSAoSW5kZXggKikgcGFsbG9jKG5ieXRlcyk7CisJCQltZW1jcHkobmV3 dGFyZ2V0LT5zb3J0Z3JvdXByZWZzLCBvbGR0YXJnZXQtPnNvcnRncm91cHJlZnMsIG5ieXRlcyk7 CisJCX0KKworCQlyZXR1cm4gKE5vZGUgKikgbmV3dGFyZ2V0OworCX0KKwogCS8qCiAJICogTk9U RTogd2UgZG8gbm90IG5lZWQgdG8gcmVjdXJzZSBpbnRvIHN1YmxpbmtzLCBiZWNhdXNlIHRoZXkg c2hvdWxkCiAJICogYWxyZWFkeSBoYXZlIGJlZW4gY29udmVydGVkIHRvIHN1YnBsYW5zIGJlZm9y ZSB3ZSBzZWUgdGhlbS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jl bG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCBmOGYw YzBmYzY5Li45MTAxM2UxYTgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9yZWxub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCkBA IC0yODM0LDggKzI4MzQsNiBAQCBjcmVhdGVfcmVsX2FnZ19pbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwpCiAJCW1hcmtfcGFydGlhbF9hZ2dyZWYoYWdncmVmLCBBR0dTUExJ VF9JTklUSUFMX1NFUklBTCk7CiAKIAkJYWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdldCwg KEV4cHIgKikgYWdncmVmLCAwKTsKLQotCQlyZXN1bHQtPmFnZ19leHBycyA9IGxhcHBlbmQocmVz dWx0LT5hZ2dfZXhwcnMsIGFnZ3JlZik7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5k ZXggZmQxMDQ5ODAyOC4uNGNlNzBmMjU2ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTExMjMs OSArMTEyMyw2IEBAIHR5cGVkZWYgc3RydWN0IFJlbE9wdEluZm8KICAqICJncm91cF9jbGF1c2Vz IiwgImdyb3VwX2V4cHJzIiBhbmQgImdyb3VwX3BhdGhrZXlzIiBhcmUgbGlzdHMgb2YKICAqIFNv cnRHcm91cENsYXVzZSwgdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgYW5k IFBhdGhLZXkKICAqIHJlc3BlY3RpdmVseS4KLSAqCi0gKiAiYWdnX2V4cHJzIiBpcyBhIGxpc3Qg b2YgQWdncmVmIG5vZGVzIGZvciB0aGUgYWdncmVnYXRpb24gb2YgdGhlIHJlbGF0aW9uJ3MKLSAq IHBhdGhzLgogICovCiB0eXBlZGVmIHN0cnVjdCBSZWxBZ2dJbmZvCiB7CkBAIC0xMTYxLDkgKzEx NTgsNiBAQCB0eXBlZGVmIHN0cnVjdCBSZWxBZ2dJbmZvCiAJTGlzdAkgICAqZ3JvdXBfZXhwcnM7 CiAJLyogYSBsaXN0IG9mIFBhdGhLZXlzICovCiAJTGlzdAkgICAqZ3JvdXBfcGF0aGtleXM7Ci0K LQkvKiBhIGxpc3Qgb2YgQWdncmVmIG5vZGVzICovCi0JTGlzdAkgICAqYWdnX2V4cHJzOwogfSBS ZWxBZ2dJbmZvOwogCiAvKgotLSAKMi40My4wCgo= --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0008-Add-test-cases.patch" Content-Disposition: attachment; filename="v9-0008-Add-test-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5kt8qp7 RnJvbSAwMjliZTBmZDlkNzg0YmMyMTY3N2U0ODM3NWViZjU3YmFiMzdhZTU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNjoxNjoxNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDgvMTBdIEFkZCB0ZXN0IGNhc2VzCgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFn ZXJfYWdncmVnYXRlLm91dCB8IDEyOTMgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwgICAgICB8ICAxOTIgKysrCiAzIGZpbGVzIGNoYW5n ZWQsIDE0ODYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwKCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2EyODI4NzUyMgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dApAQCAtMCwwICsx LDEyOTMgQEAKKy0tCistLSBFQUdFUiBBR0dSRUdBVElPTgorLS0gVGVzdCB3ZSBjYW4gcHVzaCBh Z2dyZWdhdGlvbiBkb3duIGJlbG93IGpvaW4KKy0tCistLSBFbmFibGUgZWFnZXIgYWdncmVnYXRp b24sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX2VhZ2VyX2FnZ3Jl Z2F0ZSBUTyBvbjsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDEgKGEgaW50LCBiIGludCwgYyBk b3VibGUgcHJlY2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDIgKGEgaW50LCBiIGlu dCwgYyBkb3VibGUgcHJlY2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDMgKGEgaW50 LCBiIGludCwgYyBkb3VibGUgcHJlY2lzaW9uKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MSBT RUxFQ1QgaSwgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitJTlNFUlQgSU5U TyBlYWdlcl9hZ2dfdDIgU0VMRUNUIGksIGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MTAwMClpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QzIFNFTEVDVCBpJTEwLCBpJTEwLCBpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsKK0FOQUxZWkUgZWFnZXJfYWdnX3QxOworQU5B TFlaRSBlYWdlcl9hZ2dfdDI7CitBTkFMWVpFIGVhZ2VyX2FnZ190MzsKKy0tCistLSBUZXN0IGVh Z2VyIGFnZ3JlZ2F0aW9uIG92ZXIgYmFzZSByZWwKKy0tCistLSBQZXJmb3JtIHNjYW4gb2YgYSB0 YWJsZSwgYWdncmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVyIHRhYmxlCist LSBhbmQgZmluYWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVh Z2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRw dXQ6IHQxLmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgU29ydAorICAg ICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICBTb3J0IEtl eTogdDEuYQorICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0 MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5i ID0gdDIuYikKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3QxIHQxCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIs IChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFS VElBTCBhdmcodDIuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIu YgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu YSwgdDIuYiwgdDIuYworKDE4IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAg QlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2Cisg MiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAy CisgOCB8IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRo IHNvcnRpbmcgYWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJf YWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQx LmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmlu YWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91 cCBLZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFM IGF2Zyh0Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu YywgdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyLmIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLmMsIHQyLmIKKygyMSByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZS T00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5 NgorIDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8 IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0CisoOSByb3dzKQorCitSRVNFVCBlbmFibGVfaGFzaGFn ZzsKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tCistLSBQ ZXJmb3JtIGpvaW4gb2YgdGFibGVzLCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0 aGUgb3RoZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9N IGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lO IGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQx LmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFs aXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2ZygodDIuYyArIHQzLmMpKQor ICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAo UEFSVElBTCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElB TCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0g dDIuYikKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Qx IHQxCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQ QVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu YiwgUEFSVElBTCBhdmcoKHQyLmMgKyB0My5jKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0My5jLCB0 Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0My5hID0g dDIuYSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3QzIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQzLmEsIHQzLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQy LmEKKygyNSByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2Vy X2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2Vy X2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7Cisg YSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTcKKyAyIHwgNDk5CisgMyB8IDUwMQorIDQgfCA1 MDMKKyA1IHwgNTA1CisgNiB8IDUwNworIDcgfCA1MDkKKyA4IHwgNTExCisgOSB8IDUxMworKDkg cm93cykKKworLS0gUHJvZHVjZSByZXN1bHRzIHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VU IGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NF TEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFn ZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEg PSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dy ZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKCh0Mi5jICsgdDMuYykpCisgICBHcm91cCBLZXk6 IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zygo dDIuYyArIHQzLmMpKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2ZygodDIuYyAr IHQzLmMpKSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKCh0 Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBh dmcoKHQyLmMgKyB0My5jKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDMuYywgdDIuYgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIuYywgdDMuYywgdDIuYgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDMuYSA9IHQyLmEpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190MyB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0My5hLCB0My5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0Mi5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0Mgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi5jLCB0Mi5iLCB0Mi5hCisoMjggcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsg dDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9 IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBP UkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk3CisgMiB8IDQ5OQor IDMgfCA1MDEKKyA0IHwgNTAzCisgNSB8IDUwNQorIDYgfCA1MDcKKyA3IHwgNTA5CisgOCB8IDUx MQorIDkgfCA1MTMKKyg5IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworLS0KKy0tIFRl c3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3Igb3V0ZXIgam9pbgorLS0KKy0tIEVu c3VyZSBhZ2dyZWdhdGlvbiBjYW4gYmUgcHVzaGVkIGRvd24gdG8gdGhlIG5vbi1udWxsYWJsZSBz aWRlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMp IEZST00gZWFnZXJfYWdnX3QxIHQxIFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIg PSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisg ICBHcm91cCBLZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQ QVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAg SGFzaCBSaWdodCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2 Zyh0Mi5jKSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQy LmMpKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCiso MTggcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBS SUdIVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwgNDk3Cisg MyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAz CisgOSB8IDUwNAorICAgfCA1MDUKKygxMCByb3dzKQorCistLSBFbnN1cmUgYWdncmVnYXRpb24g Y2Fubm90IGJlIHB1c2hlZCBkb3duIHRvIHRoZSBudWxsYWJsZSBzaWRlCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIuYiwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3Qx IHQxIExFRlQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIu YiBPUkRFUiBCWSB0Mi5iOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQyLmIsIChhdmco dDIuYykpCisgICBTb3J0IEtleTogdDIuYgorICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAg IE91dHB1dDogdDIuYiwgYXZnKHQyLmMpCisgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAg ICAgIC0+ICBIYXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgdDIu YworICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIuYiA9IHQxLmIpCisgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5iCisgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MS5iCisoMTUgcm93cykKKworU0VMRUNUIHQyLmIsIGF2Zyh0Mi5j KSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIg PSB0Mi5iIEdST1VQIEJZIHQyLmIgT1JERVIgQlkgdDIuYjsKKyBiIHwgYXZnIAorLS0tKy0tLS0t CisgMSB8IDQ5NgorIDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwg NTAxCisgNyB8IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0CisgICB8ICAgIAorKDEwIHJvd3MpCisK Ky0tCistLSBUZXN0IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIHBhcmFsbGVsIHBs YW5zCistLQorU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q9MDsKK1NFVCBwYXJhbGxlbF90dXBsZV9j b3N0PTA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZT0wOworU0VUIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXI9NDsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9h Z2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6 ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcodDIuYykKKyAgIEdyb3VwIEtl eTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZn KHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgIC0+ICBHYXRoZXIKKyAg ICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAg ICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0 Mi5jKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwg dDEuYworICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMjEgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0 Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQor IDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUw MQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworUkVTRVQgcGFyYWxs ZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFy YWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlcjsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDI7 CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MzsKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9u IGZvciBwYXJ0aXRpb253aXNlIGpvaW4KKy0tCistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBhZ2dy ZWdhdGUsIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRpdGlv bndpc2VfYWdncmVnYXRlIFRPIHRydWU7CistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBqb2luLCB3 aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pv aW4gVE8gdHJ1ZTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMSh4IGludCwgeSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMSBQQVJU SVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworQ1JF QVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIx X3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyKHggaW50LCB5IGludCkgUEFSVElUSU9O IEJZIFJBTkdFKHkpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AxIFBBUlRJVElPTiBP RiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYjJfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDMgUEFS VElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitJ TlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMSBTRUxFQ1QgaSAlIDMwLCBpICUgMjAgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMCwgMjk5LCAyKSBpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjIgU0VM RUNUIGkgJSAyMCwgaSAlIDMwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDI5OSwgMykgaTsKK0FO QUxZWkUgZWFnZXJfYWdnX3RhYjE7CitBTkFMWVpFIGVhZ2VyX2FnZ190YWIyOworLS0gV2hlbiBH Uk9VUCBCWSBjbGF1c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9y IGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQx LngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdn X3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54Owor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0odDEueSkpLCAoY291bnQoKikpCisg ICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZpbmFsaXplIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgc3VtKHQxLnkpLCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1 bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBQ QVJUSUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHQxLnkKKyAgICAg ICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzEueCwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQx XzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0MV8xLngpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3Ay IHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55CisgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFSVElBTCBzdW0odDFf MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHQxXzEueQorICAgICAgICAg LT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54 LCBzdW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDMgdDJf MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBQQVJUSUFMIHN1bSh0MV8yLnkp LCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgdDFfMi55CisoNDkgcm93cykKKwor U0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwg ZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBC WSB0MS54OworIHggIHwgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0rLS0tLS0tLQorICAwIHwg IDUwMCB8ICAgMTAwCisgIDYgfCAxMTAwIHwgICAxMDAKKyAxMiB8ICA3MDAgfCAgIDEwMAorIDE4 IHwgMTMwMCB8ICAgMTAwCisgMjQgfCAgOTAwIHwgICAxMDAKKyg1IHJvd3MpCisKKy0tIEdST1VQ IEJZIGhhdmluZyBvdGhlciBtYXRjaGluZyBrZXkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCB0Mi55LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEg dDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnkgT1JE RVIgQlkgdDIueTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0Mi55LCAoc3VtKHQxLnkpKSwg KGNvdW50KCopKQorICAgU29ydCBLZXk6IHQyLnkKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHN1 bSh0MS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueQorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55 LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQyLnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEu eSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDEueCwgUEFSVElBTCBzdW0odDEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9w MSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS55 LCB0MS54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8xLnksIHN1bSh0MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0Ml8xLnkKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJU SUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0g dDFfMS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiMl9wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzEueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBB UlRJQUwgc3VtKHQxXzEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS55LCB0MV8x LngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzIueSwgc3VtKHQxXzIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQyXzIueQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwg Y291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8y LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWIyX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQo KikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElB TCBzdW0odDFfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLnksIHQxXzIueAor KDQ5IHJvd3MpCisKK1NFTEVDVCB0Mi55LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJf YWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZ IHQyLnkgT1JERVIgQlkgdDIueTsKKyB5ICB8IHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tKy0t LS0tLS0KKyAgMCB8ICA1MDAgfCAgIDEwMAorICA2IHwgMTEwMCB8ICAgMTAwCisgMTIgfCAgNzAw IHwgICAxMDAKKyAxOCB8IDEzMDAgfCAgIDEwMAorIDI0IHwgIDkwMCB8ICAgMTAwCisoNSByb3dz KQorCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dy ZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdl cl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAg QlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gMTAgT1JERVIgQlkgdDIueDsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0 Mi54LCAoc3VtKHQxLngpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQyLngKKyAgIC0+ICBG aW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHQyLngsIHN1bSh0MS54KSwg Y291bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAgICAgRmlsdGVyOiAoYXZn KHQxLngpID4gJzEwJzo6bnVtZXJpYykKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCAo UEFSVElBTCBzdW0odDFfMS54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQx XzEueCkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0MV8xLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWIyX3AxIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0 Ml8xLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJQUwgc3VtKHQxXzEueCkpLCAoUEFSVElBTCBj b3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8xLngpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEueCksIFBBUlRJQUwgY291bnQo KiksIFBBUlRJQUwgYXZnKHQxXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxXzEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJ QUwgc3VtKHQxXzIueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8yLngp KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi55ID0gdDFfMi54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9w MiB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDJfMi55 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0MV8yLngpKSwgKFBBUlRJQUwgY291bnQo KikpLCAoUEFSVElBTCBhdmcodDFfMi54KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54LCBQQVJUSUFMIHN1bSh0MV8yLngpLCBQQVJUSUFMIGNvdW50KCopLCBQ QVJUSUFMIGF2Zyh0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIChQQVJUSUFMIHN1 bSh0MV8zLngpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBhdmcodDFfMy54KSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzMueSA9IHQxXzMueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjJfcDMgdDJf MworICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQyXzMueQorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMy54LCAoUEFSVElBTCBzdW0odDFfMy54KSksIChQQVJUSUFMIGNvdW50KCopKSwg KFBBUlRJQUwgYXZnKHQxXzMueCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy dGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzMueCwgUEFSVElBTCBzdW0odDFfMy54KSwgUEFSVElBTCBjb3VudCgqKSwgUEFSVElB TCBhdmcodDFfMy54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngKKyg0NCByb3dzKQorCitTRUxFQ1QgdDIueCwg c3VtKHQxLngpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFi MiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi54IEhBVklORyBhdmcodDEueCkgPiAx MCBPUkRFUiBCWSB0Mi54OworIHggIHwgc3VtICB8IGNvdW50IAorLS0tLSstLS0tLS0rLS0tLS0t LQorICAyIHwgIDYwMCB8ICAgIDUwCisgIDQgfCAxMjAwIHwgICAgNTAKKyAgOCB8ICA5MDAgfCAg ICA1MAorIDEyIHwgIDYwMCB8ICAgIDUwCisgMTQgfCAxMjAwIHwgICAgNTAKKyAxOCB8ICA5MDAg fCAgICA1MAorKDYgcm93cykKKworLS0gQ2hlY2sgd2l0aCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVy IGpvaW4gcmVsCistLSBmdWxsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQx IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFi MSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKCh0Mi55ICsgdDMueSkpKQorICAg U29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSgodDIueSArIHQzLnkp KQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSgo dDIueSArIHQzLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0 Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54Cisg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi54LCB0My54LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLngsIFBBUlRJQUwgc3VtKCh0 Mi55ICsgdDMueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwg dDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDIueCA9IHQzLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgLT4g IEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBz dW0oKHQyXzEueSArIHQzXzEueSkpCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAor ICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0MV8xLnggPSB0Ml8xLngpCisgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEu eCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0 M18xLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8x LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngs IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQyXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf MS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQzXzEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf MS55LCB0M18xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKQorICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0oKHQyXzIueSAr IHQzXzIueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJf Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIu eAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfMi54LCB0M18yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55 KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54 LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54LCB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi54ID0gdDNfMi54KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiMV9wMyB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiMV9wMyB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisoNzAgcm93cykKKworU0VMRUNU IHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2Vy X2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIu eCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworIHggIHwgIHN1bSAgCistLS0t Ky0tLS0tLS0KKyAgMCB8IDEwMDAwCisgIDIgfCAxNDAwMAorICA0IHwgMTgwMDAKKyAgNiB8IDIy MDAwCisgIDggfCAyNjAwMAorIDEwIHwgMTAwMDAKKyAxMiB8IDE0MDAwCisgMTQgfCAxODAwMAor IDE2IHwgMjIwMDAKKyAxOCB8IDI2MDAwCisgMjAgfCAxMDAwMAorIDIyIHwgMTQwMDAKKyAyNCB8 IDE4MDAwCisgMjYgfCAyMjAwMAorIDI4IHwgMjYwMDAKKygxNSByb3dzKQorCistLSBwYXJ0aWFs IGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9h Z2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFn ZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55 OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQz LnksIHN1bSgodDIueSArIHQzLnkpKQorICAgR3JvdXAgS2V5OiB0My55CisgICAtPiAgU29ydAor ICAgICAgICAgT3V0cHV0OiB0My55LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisgICAg ICAgICBTb3J0IEtleTogdDMueQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIChQQVJU SUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0Ml8xLnggPSB0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBH cm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnks IHQyXzEueCwgdDNfMS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDNfMS55LCB0Ml8xLngsIHQzXzEueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0M18xLnksIHQyXzEueCwgdDNfMS54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDNfMS55LCB0Ml8xLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0M18xLnksIHQyXzEueCwg dDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0Ml8xLnggPSB0M18xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQyXzEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8x LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwg dDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQzXzEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18x LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MV8xCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIChQQVJUSUFMIHN1bSgodDJf Mi55ICsgdDNfMi55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLngg PSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQyXzIueCwgdDNf Mi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDNfMi55LCB0Ml8yLngsIHQzXzIueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMi55LCB0M18yLnksIHQyXzIueCwgdDNfMi54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTb3J0IEtleTogdDNfMi55LCB0Ml8yLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0M18yLnksIHQyXzIueCwgdDNfMi54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0 M18yLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQyXzIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQzXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55 KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0MV8zLngpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQyXzMueCwgdDNfMy54LCBQQVJUSUFM IHN1bSgodDJfMy55ICsgdDNfMy55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDNfMy55LCB0Ml8zLngsIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55 LCB0M18zLnksIHQyXzMueCwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTb3J0IEtleTogdDNfMy55LCB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMy55LCB0M18zLnksIHQyXzMueCwgdDNfMy54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0M18zLngpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWIxX3AzIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWIxX3AzIHQzXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiMV9wMyB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzMueAorKDczIHJvd3MpCisKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFn ZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lO IGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkg dDMueTsKKyB5ICB8ICBzdW0gIAorLS0tLSstLS0tLS0tCisgIDAgfCAgNzUwMAorICAyIHwgMTM1 MDAKKyAgNCB8IDE5NTAwCisgIDYgfCAyNTUwMAorICA4IHwgMzE1MDAKKyAxMCB8IDIyNTAwCisg MTIgfCAyODUwMAorIDE0IHwgMzQ1MDAKKyAxNiB8IDQwNTAwCisgMTggfCA0NjUwMAorKDEwIHJv d3MpCisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiMTsK K0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjI7CistLQorLS0gVGVzdCB3aXRoIG11bHRpLWxldmVs IHBhcnRpdGlvbmluZyBzY2hlbWUKKy0tCitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbCh4 IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9h Z2dfdGFiX21sX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyIFBBUlRJVElP TiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCkgUEFSVElU SU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDJfczEgUEFS VElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1 KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MyIFBBUlRJVElPTiBPRiBlYWdl cl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbF9wMyBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzX3MxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21s X3AzIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgyNSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbF9wM19zMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMyBGT1IgVkFMVUVT IEZST00gKDI1KSBUTyAoMzApOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYl9tbCBTRUxFQ1Qg aSAlIDMwLCBpICUgMzAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKK0FOQUxZWkUg ZWFnZXJfYWdnX3RhYl9tbDsKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1bGwg YWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZST00g ZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQy LnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6 IHQxLngsIChzdW0odDIueSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDEueAorICAgLT4g IEFwcGVuZAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIE91dHB1dDogdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0Mi55KSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQyLngpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIueCwgKFBBUlRJQUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIFBBUlRJQUwgc3VtKHQyLnkpLCBQQVJU SUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFz aEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1bSh0Ml8xLnkpLCBj b3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFS VElBTCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQxXzEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIChQQVJU SUFMIHN1bSh0Ml8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgUEFSVElBTCBzdW0odDJfMS55KSwgUEFSVElBTCBj b3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8x LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAtPiAgRmluYWxp emUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSh0Ml8y LnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngKKyAgICAgICAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54 LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQxXzIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54CisgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngs IChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgUEFSVElBTCBzdW0odDJfMi55KSwgUEFS VElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIHN1 bSh0Ml8zLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8zLngKKyAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMy54LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQx XzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8zLngsIChQQVJUSUFMIHN1bSh0Ml8zLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgUEFSVElBTCBzdW0odDJfMy55 KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAgICAg ICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80 LngsIHN1bSh0Ml80LnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV80 LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfNC54LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Az X3MyIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54CisgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml80LngsIChQQVJUSUFMIHN1bSh0Ml80LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgUEFSVElBTCBzdW0o dDJfNC55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0Ml80CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54Ciso Nzkgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9h Z2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9V UCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0t LS0tKy0tLS0tLS0KKyAgMCB8ICAgICAwIHwgIDEwODkKKyAgMSB8ICAxMTU2IHwgIDExNTYKKyAg MiB8ICAyMzEyIHwgIDExNTYKKyAgMyB8ICAzNDY4IHwgIDExNTYKKyAgNCB8ICA0NjI0IHwgIDEx NTYKKyAgNSB8ICA1NzgwIHwgIDExNTYKKyAgNiB8ICA2OTM2IHwgIDExNTYKKyAgNyB8ICA4MDky IHwgIDExNTYKKyAgOCB8ICA5MjQ4IHwgIDExNTYKKyAgOSB8IDEwNDA0IHwgIDExNTYKKyAxMCB8 IDExNTYwIHwgIDExNTYKKyAxMSB8IDExOTc5IHwgIDEwODkKKyAxMiB8IDEzMDY4IHwgIDEwODkK KyAxMyB8IDE0MTU3IHwgIDEwODkKKyAxNCB8IDE1MjQ2IHwgIDEwODkKKyAxNSB8IDE2MzM1IHwg IDEwODkKKyAxNiB8IDE3NDI0IHwgIDEwODkKKyAxNyB8IDE4NTEzIHwgIDEwODkKKyAxOCB8IDE5 NjAyIHwgIDEwODkKKyAxOSB8IDIwNjkxIHwgIDEwODkKKyAyMCB8IDIxNzgwIHwgIDEwODkKKyAy MSB8IDIyODY5IHwgIDEwODkKKyAyMiB8IDIzOTU4IHwgIDEwODkKKyAyMyB8IDI1MDQ3IHwgIDEw ODkKKyAyNCB8IDI2MTM2IHwgIDEwODkKKyAyNSB8IDI3MjI1IHwgIDEwODkKKyAyNiB8IDI4MzE0 IHwgIDEwODkKKyAyNyB8IDI5NDAzIHwgIDEwODkKKyAyOCB8IDMwNDkyIHwgIDEwODkKKyAyOSB8 IDMxNTgxIHwgIDEwODkKKygzMCByb3dzKQorCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBkb2Vz IG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFy dGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLnksIHN1bSh0 Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3Rh Yl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNvcnQKKyAgIE91dHB1dDogdDEueSwgKHN1bSh0Mi55KSksIChjb3VudCgqKSkKKyAgIFNv cnQgS2V5OiB0MS55CisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgT3V0 cHV0OiB0MS55LCBzdW0odDIueSksIGNvdW50KCopCisgICAgICAgICBHcm91cCBLZXk6IHQxLnkK KyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS55LCAoUEFSVElBTCBzdW0odDJfMS55KSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54 ID0gdDJfMS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiX21sX3AxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMS55LCB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMS54LCBQQVJUSUFMIHN1bSh0Ml8xLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AxIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMi55LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQQVJU SUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0g dDJfMi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AyX3MxIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMi55LCB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJQUwgc3VtKHQyXzIueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMi54LCBQQVJUSUFMIHN1bSh0Ml8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AyX3MxIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy55LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54 ID0gdDJfMy54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQxXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMy55LCB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgKFBBUlRJQUwgc3VtKHQyXzMu eSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMy54LCBQQVJUSUFMIHN1bSh0Ml8zLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AyX3MyIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC55LCAoUEFSVElBTCBzdW0odDJfNC55KSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFf NC54ID0gdDJfNC54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfNC55LCB0MV80LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgKFBBUlRJQUwgc3VtKHQy XzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfNC54LCBQQVJUSUFMIHN1bSh0Ml80LnkpLCBQQVJUSUFMIGNvdW50KCopCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AzX3MxIHQyXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNS55LCAoUEFSVElBTCBzdW0odDJfNS55 KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo dDFfNS54ID0gdDJfNS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQxXzUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDFfNS55LCB0MV81LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzUueCwgKFBBUlRJQUwgc3Vt KHQyXzUueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfNS54LCBQQVJUSUFMIHN1bSh0Ml81LnkpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzUueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AzX3MyIHQyXzUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfNS55LCB0Ml81LngKKyg2NyByb3dzKQorCitTRUxFQ1QgdDEueSwg c3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9h Z2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnkgT1JERVIgQlkgdDEueTsK KyB5ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgICAgIDAg fCAgMTA4OQorICAxIHwgIDExNTYgfCAgMTE1NgorICAyIHwgIDIzMTIgfCAgMTE1NgorICAzIHwg IDM0NjggfCAgMTE1NgorICA0IHwgIDQ2MjQgfCAgMTE1NgorICA1IHwgIDU3ODAgfCAgMTE1Ngor ICA2IHwgIDY5MzYgfCAgMTE1NgorICA3IHwgIDgwOTIgfCAgMTE1NgorICA4IHwgIDkyNDggfCAg MTE1NgorICA5IHwgMTA0MDQgfCAgMTE1NgorIDEwIHwgMTE1NjAgfCAgMTE1NgorIDExIHwgMTE5 NzkgfCAgMTA4OQorIDEyIHwgMTMwNjggfCAgMTA4OQorIDEzIHwgMTQxNTcgfCAgMTA4OQorIDE0 IHwgMTUyNDYgfCAgMTA4OQorIDE1IHwgMTYzMzUgfCAgMTA4OQorIDE2IHwgMTc0MjQgfCAgMTA4 OQorIDE3IHwgMTg1MTMgfCAgMTA4OQorIDE4IHwgMTk2MDIgfCAgMTA4OQorIDE5IHwgMjA2OTEg fCAgMTA4OQorIDIwIHwgMjE3ODAgfCAgMTA4OQorIDIxIHwgMjI4NjkgfCAgMTA4OQorIDIyIHwg MjM5NTggfCAgMTA4OQorIDIzIHwgMjUwNDcgfCAgMTA4OQorIDI0IHwgMjYxMzYgfCAgMTA4OQor IDI1IHwgMjcyMjUgfCAgMTA4OQorIDI2IHwgMjgzMTQgfCAgMTA4OQorIDI3IHwgMjk0MDMgfCAg MTA4OQorIDI4IHwgMzA0OTIgfCAgMTA4OQorIDI5IHwgMzE1ODEgfCAgMTA4OQorKDMwIHJvd3Mp CisKKy0tIENoZWNrIHdpdGggZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVs bCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngs IHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lO IGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21s IHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQx LngsIChzdW0oKHQyLnkgKyB0My55KSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDEueAor ICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgIE91dHB1dDogdDEueCwgc3VtKCh0Mi55ICsgdDMueSkpLCBjb3VudCgqKQorICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSgodDIueSAr IHQzLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDEueCA9IHQyLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsg dDMueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyLngsIHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpLCBQQVJUSUFM IGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQy LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwgdDMu eSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDIueCA9IHQzLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgIC0+ ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwg c3VtKCh0Ml8xLnkgKyB0M18xLnkpKSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDFfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54 ID0gdDJfMS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8x LnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueCwgUEFSVElBTCBzdW0oKHQyXzEueSArIHQz XzEueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8xLnksIHQyXzEueCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYl9tbF9wMl9zMSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AyX3MxIHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKCh0 Ml8yLnkgKyB0M18yLnkpKSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFf Mi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJf Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AyX3MyIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0 M18yLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkp LCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8y LnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wMl9zMiB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AyX3MyIHQzXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgc3VtKCh0Ml8zLnkg KyB0M18zLnkpKSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54Cisg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzMueCwgKFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AzX3MxIHQxXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8zLngsIHQzXzMueCwgKFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkp KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8zLngsIHQzXzMueCwgUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpLCBQQVJU SUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQy XzMueCwgdDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQyXzMueCA9IHQzXzMueCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w M19zMSB0Ml8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Az X3MxIHQzXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDNfMy55LCB0M18zLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgc3VtKCh0Ml80LnkgKyB0M180 LnkpKSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54CisgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQu eCwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Az X3MyIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54CisgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml80LngsIHQzXzQueCwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml80LngsIHQzXzQueCwgUEFSVElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpLCBQQVJUSUFMIGNv dW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueCwg dDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHQyXzQueCA9IHQzXzQueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0 Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzQueSwgdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQz XzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDNfNC55LCB0M180LngKKygxMTQgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55 ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2Fn Z190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQy LnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4ICB8ICAgc3VtICAgfCBj b3VudCAKKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAgIDAgfCAzNTkzNworICAx IHwgICA3ODYwOCB8IDM5MzA0CisgIDIgfCAgMTU3MjE2IHwgMzkzMDQKKyAgMyB8ICAyMzU4MjQg fCAzOTMwNAorICA0IHwgIDMxNDQzMiB8IDM5MzA0CisgIDUgfCAgMzkzMDQwIHwgMzkzMDQKKyAg NiB8ICA0NzE2NDggfCAzOTMwNAorICA3IHwgIDU1MDI1NiB8IDM5MzA0CisgIDggfCAgNjI4ODY0 IHwgMzkzMDQKKyAgOSB8ICA3MDc0NzIgfCAzOTMwNAorIDEwIHwgIDc4NjA4MCB8IDM5MzA0Cisg MTEgfCAgNzkwNjE0IHwgMzU5MzcKKyAxMiB8ICA4NjI0ODggfCAzNTkzNworIDEzIHwgIDkzNDM2 MiB8IDM1OTM3CisgMTQgfCAxMDA2MjM2IHwgMzU5MzcKKyAxNSB8IDEwNzgxMTAgfCAzNTkzNwor IDE2IHwgMTE0OTk4NCB8IDM1OTM3CisgMTcgfCAxMjIxODU4IHwgMzU5MzcKKyAxOCB8IDEyOTM3 MzIgfCAzNTkzNworIDE5IHwgMTM2NTYwNiB8IDM1OTM3CisgMjAgfCAxNDM3NDgwIHwgMzU5MzcK KyAyMSB8IDE1MDkzNTQgfCAzNTkzNworIDIyIHwgMTU4MTIyOCB8IDM1OTM3CisgMjMgfCAxNjUz MTAyIHwgMzU5MzcKKyAyNCB8IDE3MjQ5NzYgfCAzNTkzNworIDI1IHwgMTc5Njg1MCB8IDM1OTM3 CisgMjYgfCAxODY4NzI0IHwgMzU5MzcKKyAyNyB8IDE5NDA1OTggfCAzNTkzNworIDI4IHwgMjAx MjQ3MiB8IDM1OTM3CisgMjkgfCAyMDg0MzQ2IHwgMzU5MzcKKygzMCByb3dzKQorCistLSBwYXJ0 aWFsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMu eSwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpP SU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBT b3J0CisgICBPdXRwdXQ6IHQzLnksIChzdW0oKHQyLnkgKyB0My55KSkpLCAoY291bnQoKikpCisg ICBTb3J0IEtleTogdDMueQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAg IE91dHB1dDogdDMueSwgc3VtKCh0Mi55ICsgdDMueSkpLCBjb3VudCgqKQorICAgICAgICAgR3Jv dXAgS2V5OiB0My55CisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgKFBBUlRJQUwgc3Vt KCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxXzEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQyXzEu eCwgdDNfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDJf MS54LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSwgUEFSVElBTCBjb3Vu dCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0M18xLnks IHQyXzEueCwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzEueSwgdDNfMS55LCB0Ml8xLngsIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AxIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJf bWxfcDEgdDNfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIChQQVJUSUFMIHN1bSgodDJf Mi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0Ml8yLngs IHQzXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQyXzIu eCwgdDNfMi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSksIFBBUlRJQUwgY291bnQo KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDNfMi55LCB0 Ml8yLngsIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8y LnksIHQzXzIueSwgdDJfMi54LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh Yl9tbF9wMl9zMSB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AyX3MxIHQzXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCAoUEFSVElBTCBzdW0o KHQyXzMueSArIHQzXzMueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0MV8zLnggPSB0Ml8zLngpCisgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDFfMworICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDJf My54LCB0M18zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCB0 Ml8zLngsIHQzXzMueCwgUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpLCBQQVJUSUFMIGNv dW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQzXzMu eSwgdDJfMy54LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMy55LCB0M18zLnksIHQyXzMueCwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0M18zLngpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWJfbWxfcDJfczIgdDJfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wMl9zMiB0M18zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzQueSwgKFBBUlRJQUwg c3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQxXzQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54CisgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180Lnks IHQyXzQueCwgdDNfNC54LCAoUEFSVElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpKSwgKFBBUlRJ QUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzQu eSwgdDJfNC54LCB0M180LngsIFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 M180LnksIHQyXzQueCwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzQueSwgdDNfNC55LCB0Ml80LngsIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfNC54ID0gdDNfNC54KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AzX3MxIHQyXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDNfczEgdDNfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M181LnksIChQQVJU SUFMIHN1bSgodDJfNS55ICsgdDNfNS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzUueCA9IHQyXzUueCkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV81 CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzUueAorICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf NS55LCB0Ml81LngsIHQzXzUueCwgKFBBUlRJQUwgc3VtKCh0Ml81LnkgKyB0M181LnkpKSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 M181LnksIHQyXzUueCwgdDNfNS54LCBQQVJUSUFMIHN1bSgodDJfNS55ICsgdDNfNS55KSksIFBB UlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDNfNS55LCB0Ml81LngsIHQzXzUueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml81LnksIHQzXzUueSwgdDJfNS54LCB0M181LngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzUueCA9IHQzXzUueCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0Ml81CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzUueSwgdDJfNS54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M181LnksIHQzXzUueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQzXzUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNS55LCB0M181LngKKygxMDIgcm93cykK KworU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdn X3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBl YWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkg dDMueTsKKyB5ICB8ICAgc3VtICAgfCBjb3VudCAKKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyAg MCB8ICAgICAgIDAgfCAzNTkzNworICAxIHwgICA3ODYwOCB8IDM5MzA0CisgIDIgfCAgMTU3MjE2 IHwgMzkzMDQKKyAgMyB8ICAyMzU4MjQgfCAzOTMwNAorICA0IHwgIDMxNDQzMiB8IDM5MzA0Cisg IDUgfCAgMzkzMDQwIHwgMzkzMDQKKyAgNiB8ICA0NzE2NDggfCAzOTMwNAorICA3IHwgIDU1MDI1 NiB8IDM5MzA0CisgIDggfCAgNjI4ODY0IHwgMzkzMDQKKyAgOSB8ICA3MDc0NzIgfCAzOTMwNAor IDEwIHwgIDc4NjA4MCB8IDM5MzA0CisgMTEgfCAgNzkwNjE0IHwgMzU5MzcKKyAxMiB8ICA4NjI0 ODggfCAzNTkzNworIDEzIHwgIDkzNDM2MiB8IDM1OTM3CisgMTQgfCAxMDA2MjM2IHwgMzU5MzcK KyAxNSB8IDEwNzgxMTAgfCAzNTkzNworIDE2IHwgMTE0OTk4NCB8IDM1OTM3CisgMTcgfCAxMjIx ODU4IHwgMzU5MzcKKyAxOCB8IDEyOTM3MzIgfCAzNTkzNworIDE5IHwgMTM2NTYwNiB8IDM1OTM3 CisgMjAgfCAxNDM3NDgwIHwgMzU5MzcKKyAyMSB8IDE1MDkzNTQgfCAzNTkzNworIDIyIHwgMTU4 MTIyOCB8IDM1OTM3CisgMjMgfCAxNjUzMTAyIHwgMzU5MzcKKyAyNCB8IDE3MjQ5NzYgfCAzNTkz NworIDI1IHwgMTc5Njg1MCB8IDM1OTM3CisgMjYgfCAxODY4NzI0IHwgMzU5MzcKKyAyNyB8IDE5 NDA1OTggfCAzNTkzNworIDI4IHwgMjAxMjQ3MiB8IDM1OTM3CisgMjkgfCAyMDg0MzQ2IHwgMzU5 MzcKKygzMCByb3dzKQorCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWw7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQppbmRleCAyNDI5ZWMyYmJhLi5kNTY5N2U1NjU1IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExOSw3ICsxMTksNyBAQCB0ZXN0OiBwbGFuY2FjaGUg bGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVy c2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBu ZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0t LQotdGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxpdCBwYXJ0aXRpb25fam9pbiBw YXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2Fn Z3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1v aXplIHN0YXRzIHByZWRpY2F0ZQordGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxp dCBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5k ZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFp biBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBlYWdlcl9hZ2dyZWdhdGUKIAog IyBldmVudF90cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1 cnJlbnRseSB3aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9lYWdlcl9hZ2dyZWdhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjQwNTBlNGRmNDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9l YWdlcl9hZ2dyZWdhdGUuc3FsCkBAIC0wLDAgKzEsMTkyIEBACistLQorLS0gRUFHRVIgQUdHUkVH QVRJT04KKy0tIFRlc3Qgd2UgY2FuIHB1c2ggYWdncmVnYXRpb24gZG93biBiZWxvdyBqb2luCist LQorCistLSBFbmFibGUgZWFnZXIgYWdncmVnYXRpb24sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlz YWJsZWQuCitTRVQgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSBUTyBvbjsKKworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190MSAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRF IFRBQkxFIGVhZ2VyX2FnZ190MiAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOwor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MyAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNp b24pOworCitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDEgU0VMRUNUIGksIGksIGkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMClpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QyIFNFTEVDVCBp LCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsKK0lOU0VSVCBJTlRPIGVh Z2VyX2FnZ190MyBTRUxFQ1QgaSUxMCwgaSUxMCwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDAwKWk7CisKK0FOQUxZWkUgZWFnZXJfYWdnX3QxOworQU5BTFlaRSBlYWdlcl9hZ2dfdDI7CitB TkFMWVpFIGVhZ2VyX2FnZ190MzsKKworCistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBv dmVyIGJhc2UgcmVsCistLQorCistLSBQZXJmb3JtIHNjYW4gb2YgYSB0YWJsZSwgYWdncmVnYXRl IHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVyIHRhYmxlCistLSBhbmQgZmluYWxpemUg dGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQx LmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBP TiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwg YXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQx LmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworLS0gUHJvZHVjZSByZXN1 bHRzIHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsK KworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBG Uk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBH Uk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00g ZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQ IEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7CisKKworLS0K Ky0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0KKworLS0gUGVyZm9y bSBqb2luIG9mIHRhYmxlcywgYWdncmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90 aGVyIHRhYmxlCistLSBhbmQgZmluYWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdl cl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdl cl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOwor U0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBl YWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIu YSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCistLSBQcm9kdWNlIHJlc3Vs dHMgd2l0aCBzb3J0aW5nIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOwor CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0 My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2Fn Z190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2Fn Z190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisKK1JF U0VUIGVuYWJsZV9oYXNoYWdnOworCisKKy0tCistLSBUZXN0IHRoYXQgZWFnZXIgYWdncmVnYXRp b24gd29ya3MgZm9yIG91dGVyIGpvaW4KKy0tCisKKy0tIEVuc3VyZSBhZ2dyZWdhdGlvbiBjYW4g YmUgcHVzaGVkIGRvd24gdG8gdGhlIG5vbi1udWxsYWJsZSBzaWRlCitFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQx IFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEg T1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEg dDEgUklHSFQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEu YSBPUkRFUiBCWSB0MS5hOworCistLSBFbnN1cmUgYWdncmVnYXRpb24gY2Fubm90IGJlIHB1c2hl ZCBkb3duIHRvIHRoZSBudWxsYWJsZSBzaWRlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgdDIuYiwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBl YWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5i OworU0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBMRUZUIEpPSU4g ZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQyLmIgT1JERVIgQlkgdDIu YjsKKworCistLQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBwYXJh bGxlbCBwbGFucworLS0KKworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q9MDsKK1NFVCBwYXJhbGxl bF90dXBsZV9jb3N0PTA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZT0wOworU0VU IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI9NDsKKworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZ IHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4g ZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEu YTsKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nv c3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFs bGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKKworCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MTsKK0RS T1AgVEFCTEUgZWFnZXJfYWdnX3QyOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDM7CisKKworLS0K Ky0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gZm9yIHBhcnRpdGlvbndpc2Ugam9pbgorLS0KKwor LS0gRW5hYmxlIHBhcnRpdGlvbndpc2UgYWdncmVnYXRlLCB3aGljaCBieSBkZWZhdWx0IGlzIGRp c2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSBUTyB0cnVlOworLS0g RW5hYmxlIHBhcnRpdGlvbndpc2Ugam9pbiwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4K K1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CisKK0NSRUFURSBUQUJMRSBl YWdlcl9hZ2dfdGFiMSh4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFU RSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3Ay IFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjAp OworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2df dGFiMSBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWIyKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHkpOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWIyX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDIgUEFSVElU SU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVB VEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZP UiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMSBT RUxFQ1QgaSAlIDMwLCBpICUgMjAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgMjk5LCAyKSBpOwor SU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjIgU0VMRUNUIGkgJSAyMCwgaSAlIDMwIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDAsIDI5OSwgMykgaTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMTsKK0FO QUxZWkUgZWFnZXJfYWdnX3RhYjI7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7 IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCop IEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0 Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDEueSks IGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJF IHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gR1JPVVAgQlkg aGF2aW5nIG90aGVyIG1hdGNoaW5nIGtleQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwg ZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBC WSB0Mi55OworU0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2df dGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIu eSBPUkRFUiBCWSB0Mi55OworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRj aDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291 bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEu eCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gMTAgT1JERVIgQlkgdDIu eDsKK1NFTEVDVCB0Mi54LCBzdW0odDEueCksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEg dDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnggSEFW SU5HIGF2Zyh0MS54KSA+IDEwIE9SREVSIEJZIHQyLng7CisKKy0tIENoZWNrIHdpdGggZWFnZXIg YWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBl YWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpP SU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBC WSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFi MSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdn X3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCist LSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSkgRlJP TSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54 IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRF UiBCWSB0My55OworU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2df dGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJf YWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55Owor UkVTRVQgZW5hYmxlX2hhc2hhZ2c7CisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjE7CitEUk9Q IFRBQkxFIGVhZ2VyX2FnZ190YWIyOworCisKKy0tCistLSBUZXN0IHdpdGggbXVsdGktbGV2ZWwg cGFydGl0aW9uaW5nIHNjaGVtZQorLS0KK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sKHgg aW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWJfbWxfcDEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDIgUEFSVElUSU9O IE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSBQQVJUSVRJ T04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSBQQVJU SVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp OworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDJfczIgUEFSVElUSU9OIE9GIGVhZ2Vy X2FnZ190YWJfbWxfcDIgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKTsKK0NSRUFURSBUQUJM RSBlYWdlcl9hZ2dfdGFiX21sX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBW QUxVRVMgRlJPTSAoMjApIFRPICgzMCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190YWJfbWxfcDNfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxf cDMgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDI1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2df dGFiX21sX3AzX3MyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMg RlJPTSAoMjUpIFRPICgzMCk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiX21sIFNFTEVDVCBp ICUgMzAsIGkgJSAzMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworCitBTkFMWVpF IGVhZ2VyX2FnZ190YWJfbWw7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1 bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZS T00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9 IHQyLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0Mi55 KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9t bCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisKKy0tIFdo ZW4gR1JPVVAgQlkgY2xhdXNlIGRvZXMgbm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlz IHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJf bWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQx LnkgT1JERVIgQlkgdDEueTsKK1NFTEVDVCB0MS55LCBzdW0odDIueSksIGNvdW50KCopIEZST00g ZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQy LnggR1JPVVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworCistLSBDaGVjayB3aXRoIGVhZ2VyIGFn Z3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgq KSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQx LnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBC WSB0MS54IE9SREVSIEJZIHQxLng7CitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSwgY291 bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBP TiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JP VVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCistLSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSwg Y291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0 MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLngg R1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0 My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2df dGFiX21sOwotLSAKMi40My4wCgo= --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0009-Add-README.patch" Content-Disposition: attachment; filename="v9-0009-Add-README.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5ktg2b8 RnJvbSAwMzM4MjIxMmUyNzc0ODdiMjgxMDhiMzk0YTBhNDFlMzg2ZGI3MzJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNjoxNzoyNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjkg MDkvMTBdIEFkZCBSRUFETUUKCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRSB8IDg4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDg4 IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvUkVBRE1F IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRQppbmRleCAyYWI0ZjNkYmYzLi5kYWU3Yjg3 ZjMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvUkVBRE1FCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9SRUFETUUKQEAgLTE0OTcsMyArMTQ5Nyw5MSBAQCBicmVha2luZyBk b3duIGFnZ3JlZ2F0aW9uIG9yIGdyb3VwaW5nIG92ZXIgYSBwYXJ0aXRpb25lZCByZWxhdGlvbiBp bnRvCiBhZ2dyZWdhdGlvbiBvciBncm91cGluZyBvdmVyIGl0cyBwYXJ0aXRpb25zIGlzIGNhbGxl ZCBwYXJ0aXRpb253aXNlCiBhZ2dyZWdhdGlvbi4gIEVzcGVjaWFsbHkgd2hlbiB0aGUgcGFydGl0 aW9uIGtleXMgbWF0Y2ggdGhlIEdST1VQIEJZIGNsYXVzZSwKIHRoaXMgY2FuIGJlIHNpZ25pZmlj YW50bHkgZmFzdGVyIHRoYW4gdGhlIHJlZ3VsYXIgbWV0aG9kLgorCitFYWdlciBhZ2dyZWdhdGlv bgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgb2J2aW91cyB3YXkgdG8gZXZhbHVhdGUgYWdn cmVnYXRlcyBpcyB0byBldmFsdWF0ZSB0aGUgRlJPTSBjbGF1c2Ugb2YgdGhlCitTUUwgcXVlcnkg KHRoaXMgaXMgd2hhdCBxdWVyeV9wbGFubmVyIGRvZXMpIGFuZCB1c2UgdGhlIHJlc3VsdGluZyBw YXRocyBhcyB0aGUKK2lucHV0IG9mIEFnZyBub2RlLiBIb3dldmVyLCBpZiB0aGUgZ3JvdXBzIGFy ZSBsYXJnZSBlbm91Z2gsIGl0IG1heSBiZSBtb3JlCitlZmZpY2llbnQgdG8gYXBwbHkgdGhlIHBh cnRpYWwgYWdncmVnYXRpb24gdG8gdGhlIG91dHB1dCBvZiBiYXNlIHJlbGF0aW9uCitzY2FuLCBh bmQgZmluYWxpemUgaXQgd2hlbiB3ZSBoYXZlIGFsbCByZWxhdGlvbnMgb2YgdGhlIHF1ZXJ5IGpv aW5lZDoKKworIEVYUExBSU4gKENPU1RTIE9GRikKKyBTRUxFQ1QgYS5pLCBhdmcoYi55KQorIEZS T00gYSBKT0lOIGIgT04gYS5pID0gYi5qCisgR1JPVVAgQlkgYS5pOworCisgRmluYWxpemUgSGFz aEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiBhLmkKKyAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAg ICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBi LmoKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBiCisgICAgICAgICAtPiAgSW5kZXgg T25seSBTY2FuIHVzaW5nIGFfcGtleSBvbiBhCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo aSA9IGIuaikKKworVGh1cyB0aGUgam9pbiBhYm92ZSB0aGUgcGFydGlhbCBhZ2dyZWdhdGUgbm9k ZSByZWNlaXZlcyBmZXdlciBpbnB1dCByb3dzLCBhbmQKK3NvIHRoZSBudW1iZXIgb2Ygb3V0ZXIt dG8taW5uZXIgcGFpcnMgb2YgdHVwbGVzIHRvIGJlIGNoZWNrZWQgY2FuIGJlCitzaWduaWZpY2Fu dGx5IGxvd2VyLCB3aGljaCBjYW4gaW4gdHVybiBsZWFkIHRvIGNvbnNpZGVyYWJseSBsb3dlciBq b2luIGNvc3QuCisKK05vdGUgdGhhdCB0aGUgR1JPVVAgQlkgZXhwcmVzc2lvbiBtaWdodCBub3Qg YmUgdXNlZnVsIGZvciB0aGUgcGFydGlhbAorYWdncmVnYXRlLiBJbiB0aGUgZXhhbXBsZSBhYm92 ZSwgdGhlIGFnZ3JlZ2F0ZSBhdmcoYi55KSByZWZlcmVuY2VzIHRhYmxlICJiIiwKK2J1dCB0aGUg R1JPVVAgQlkgZXhwcmVzc2lvbiBtZW50aW9ucyAiYSIuIEhvd2V2ZXIsIHRoZSBlcXVpdmFsZW5j ZSBjbGFzcyB7YS5pLAorYi5qfSBhbGxvd3MgdXMgdG8gdXNlIHRoZSBiLmogY29sdW1uIGFzIGEg Z3JvdXBpbmcga2V5IGZvciB0aGUgcGFydGlhbAorYWdncmVnYXRpb24gb2YgdGhlICJiIiB0YWJs ZS4gVGhlIGVxdWl2YWxlbmNlIGNsYXNzIG1lY2hhbmlzbSBpcyBzdWl0YWJsZQorYmVjYXVzZSBp dCdzIGRlc2lnbmVkIHRvIGRlcml2ZSBqb2luIGNsYXVzZXMsIGFuZCBhdCB0aGUgc2FtZSB0aW1l IHRoZSBqb2luCitjbGF1c2VzIGRldGVybWluZSB0aGUgY2hvaWNlIG9mIGdyb3VwaW5nIGNvbHVt bnMgb2YgdGhlIHBhcnRpYWwgYWdncmVnYXRlOiB0aGUKK29ubHkgd2F5IGZvciB0aGUgcGFydGlh bCBhZ2dyZWdhdGUgdG8gcHJvdmlkZSB1cHBlciBqb2luKHMpIHdpdGggaW5wdXQgdmFsdWVzCitp cyB0byBoYXZlIHRoZSBqb2luIGlucHV0IGV4cHJlc3Npb24ocykgaW4gdGhlIGdyb3VwaW5nIGtl eTsgYmVzaWRlcyBncm91cGluZworY29sdW1ucywgdGhlIHBhcnRpYWwgYWdncmVnYXRlIGNhbiBv bmx5IHByb2R1Y2UgdGhlIHRyYW5zaWVudCBzdGF0ZXMgb2YgdGhlCithZ2dyZWdhdGUgZnVuY3Rp b25zLCBidXQgYWdncmVnYXRlIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBieSB0aGUg Sk9JTgorY2xhdXNlcy4KKworUmVnYXJkaW5nIGNvcnJlY3RuZXNzLCBqb2luIG5vZGUgY29uc2lk ZXJzIHRoZSBvdXRwdXQgb2YgdGhlIHBhcnRpYWwgYWdncmVnYXRlCit0byBiZSBlcXVpdmFsZW50 IHRvIHRoZSBvdXRwdXQgb2YgYSBwbGFpbiAobm9uLWFnZ3JlZ2F0ZWQpIHJlbGF0aW9uIHNjYW4u IFRoYXQKK2lzLCBhIGdyb3VwIChpLmUuIGEgcm93IG9mIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0ZSBv dXRwdXQpIG1hdGNoZXMgdGhlIG90aGVyCitzaWRlIG9mIHRoZSBqb2luIGlmIGFuZCBvbmx5IGlm IGVhY2ggcm93IG9mIHRoZSBub24tYWdncmVnYXRlIHJlbGF0aW9uCitkb2VzLiBJbiBvdGhlciB3 b3JkcywgYWxsIHJvd3MgYmVsb25naW5nIHRvIHRoZSBzYW1lIGdyb3VwIGhhdmUgdGhlIHNhbWUg dmFsdWUKK29mIHRoZSBqb2luIGNvbHVtbnMgKEFzIG1lbnRpb25lZCBhYm92ZSwgYSBqb2luIGNh bm5vdCByZWZlcmVuY2Ugb3RoZXIgb3V0cHV0CitleHByZXNzaW9ucyBvZiB0aGUgcGFydGlhbCBh Z2dyZWdhdGUgdGhhbiB0aGUgZ3JvdXBpbmcgZXhwcmVzc2lvbnMuKS4KKworSG93ZXZlciwgdGhl cmUncyBhIHJlc3RyaWN0aW9uIGZyb20gdGhlIGFnZ3JlZ2F0ZSdzIHBlcnNwZWN0aXZlOiB0aGUg YWdncmVnYXRlCitjYW5ub3QgYmUgcHVzaGVkIGRvd24gaWYgYW55IGNvbHVtbiByZWZlcmVuY2Vk IGJ5IGVpdGhlciBncm91cGluZyBleHByZXNzaW9uCitvciBhZ2dyZWdhdGUgZnVuY3Rpb24gY2Fu IGJlIHNldCB0byBOVUxMIGJ5IGFuIG91dGVyIGpvaW4gYWJvdmUgdGhlIHJlbGF0aW9uCit0byB3 aGljaCB3ZSB3YW50IHRvIGFwcGx5IHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLiBUaGUgcG9pbnQg aXMgdGhhdCB0aG9zZQorTlVMTCB2YWx1ZXMgd291bGQgbm90IGFwcGVhciBvbiB0aGUgaW5wdXQg b2YgdGhlIHB1c2hlZC1kb3duLCBzbyBpdCBjb3VsZAorZWl0aGVyIHB1dCB0aGUgcm93cyBpbnRv IGdyb3VwcyBpbiBhIGRpZmZlcmVudCB3YXkgdGhhbiB0aGUgYWdncmVnYXRlIGF0IHRoZQordG9w IG9mIHRoZSBwbGFuLCBvciBpdCBjb3VsZCBjb21wdXRlIHdyb25nIHZhbHVlcyBvZiB0aGUgYWdn cmVnYXRlIGZ1bmN0aW9ucy4KKworQmVzaWRlcyBiYXNlIHJlbGF0aW9uLCB0aGUgYWdncmVnYXRp b24gY2FuIGFsc28gYmUgcHVzaGVkIGRvd24gdG8gam9pbjoKKworIEVYUExBSU4gKENPU1RTIE9G RikKKyBTRUxFQ1QgYS5pLCBhdmcoYi55ICsgYy56KQorIEZST00gYSBKT0lOIGIgT04gYS5pID0g Yi5qCisgICAgICAgIEpPSU4gYyBPTiBiLmogPSBjLmkKKyBHUk9VUCBCWSBhLmk7CisKKyBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICBHcm91cCBLZXk6IGEuaQorICAgLT4gIE5lc3RlZCBMb29w CisgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBHcm91 cCBLZXk6IGIuagorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAoYi5qID0gYy5pKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIGIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYworICAgICAgICAgLT4gIEluZGV4IE9ubHkg U2NhbiB1c2luZyBhX3BrZXkgb24gYQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGkgPSBi LmopCisKK1doZXRoZXIgdGhlIEFnZyBub2RlIGlzIGNyZWF0ZWQgb3V0IG9mIGJhc2UgcmVsYXRp b24gb3Igb3V0IG9mIGpvaW4sIGl0J3MKK2FkZGVkIHRvIGEgc2VwYXJhdGUgUmVsT3B0SW5mbyB0 aGF0IHdlIGNhbGwgImdyb3VwZWQgcmVsYXRpb24iLiBHcm91cGVkCityZWxhdGlvbiBjYW4gYmUg am9pbmVkIHRvIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24sIHdoaWNoIHJlc3VsdHMgaW4gYSBncm91 cGVkCityZWxhdGlvbiB0b28uIEpvaW4gb2YgdHdvIGdyb3VwZWQgcmVsYXRpb25zIGRvZXMgbm90 IHNlZW0gdG8gYmUgdmVyeSB1c2VmdWwKK2FuZCBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4K KworSWYgcXVlcnlfcGxhbm5lciBwcm9kdWNlcyBhIGdyb3VwZWQgcmVsYXRpb24gdGhhdCBjb250 YWlucyB2YWxpZCBwYXRocywgdGhlc2UKK2FyZSBzaW1wbHkgYWRkZWQgdG8gdGhlIFVQUEVSUkVM X1BBUlRJQUxfR1JPVVBfQUdHIHJlbGF0aW9uLiBGdXJ0aGVyCitwcm9jZXNzaW5nIG9mIHRoZXNl IHBhdGhzIHRoZW4gZG9lcyBub3QgZGlmZmVyIGZyb20gcHJvY2Vzc2luZyBvZiBvdGhlcgorcGFy dGlhbGx5IGdyb3VwZWQgcGF0aHMuCi0tIAoyLjQzLjAKCg== --000000000000949c11061c53a1d6 Content-Type: application/octet-stream; name="v9-0010-Run-pgindent.patch" Content-Disposition: attachment; filename="v9-0010-Run-pgindent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5kto5e9 RnJvbSAzZjgwN2UwNjAxMjI0NjU0MDg1Zjk0N2JhYjVkNGRlZjNiZGU0ZmRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAzIEp1bCAyMDI0IDE2OjI0OjM5ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2OSAx MC8xMF0gUnVuIHBnaW5kZW50CgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9f ZXZhbC5jICB8IDE5ICsrKystLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhz LmMgICB8IDc0ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2pvaW5yZWxzLmMgICB8IDIwICsrKystLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2luaXRzcGxhbi5jICB8IDI0ICsrKystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMgICAgfCAgOCArLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVu ZGluZm8uYyB8ICAyICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICAg fCA2OSArKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmggICAgICAgICAgIHwgMTAgKystLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgIHwgIDQgKysKIDkgZmlsZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDExMSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFv X2V2YWwuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCmluZGV4IDI3 ODg1N2Q3NjcuLjI4NTFiZWQyODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9n ZXFvL2dlcW9fZXZhbC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZh bC5jCkBAIC04Nyw4ICs4Nyw5IEBAIGdlcW9fZXZhbChQbGFubmVySW5mbyAqcm9vdCwgR2VuZSAq dG91ciwgaW50IG51bV9nZW5lKQogCSAqIGFscmVhZHkgY29udGFpbiBzb21lIGVudHJpZXMuICBU aGUgbmV3bHkgYWRkZWQgZW50cmllcyB3aWxsIGJlIHJlY3ljbGVkCiAJICogYnkgdGhlIE1lbW9y eUNvbnRleHREZWxldGUgYmVsb3csIHNvIHdlIG11c3QgZW5zdXJlIHRoYXQgZWFjaCBsaXN0IG9m CiAJICogdGhlIFJlbEluZm9MaXN0IHN0cnVjdHVyZXMgaXMgcmVzdG9yZWQgdG8gaXRzIGZvcm1l ciBzdGF0ZSBiZWZvcmUKLQkgKiBleGl0aW5nLiAgV2UgY2FuIGRvIHRoaXMgYnkgdHJ1bmNhdGlu ZyBlYWNoIGxpc3QgdG8gaXRzIG9yaWdpbmFsIGxlbmd0aC4KLQkgKiBOT1RFIHRoaXMgYXNzdW1l cyB0aGF0IGFueSBhZGRlZCBlbnRyaWVzIGFyZSBhcHBlbmRlZCBhdCB0aGUgZW5kIQorCSAqIGV4 aXRpbmcuICBXZSBjYW4gZG8gdGhpcyBieSB0cnVuY2F0aW5nIGVhY2ggbGlzdCB0byBpdHMgb3Jp Z2luYWwKKwkgKiBsZW5ndGguIE5PVEUgdGhpcyBhc3N1bWVzIHRoYXQgYW55IGFkZGVkIGVudHJp ZXMgYXJlIGFwcGVuZGVkIGF0IHRoZQorCSAqIGVuZCEKIAkgKgogCSAqIFdlIGFsc28gbXVzdCB0 YWtlIGNhcmUgbm90IHRvIG1lc3MgdXAgdGhlIG91dGVyIGhhc2ggdGFibGVzIG9mIHRoZQogCSAq IFJlbEluZm9MaXN0IHN0cnVjdHVyZXMsIGlmIGFueS4gIFdlIGNhbiBkbyB0aGlzIGJ5IGp1c3Qg dGVtcG9yYXJpbHkKQEAgLTEzNiw4ICsxMzcsOCBAQCBnZXFvX2V2YWwoUGxhbm5lckluZm8gKnJv b3QsIEdlbmUgKnRvdXIsIGludCBudW1fZ2VuZSkKIAogCS8qCiAJICogUmVzdG9yZSBlYWNoIG9m IHRoZSBsaXN0IGluIGpvaW5fcmVsX2xpc3QsIGFnZ19pbmZvX2xpc3QgYW5kCi0JICogdXBwZXJf cmVsc1tVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHR10gdG8gaXRzIGZvcm1lciBzdGF0ZSwgYW5k IHB1dCBiYWNrCi0JICogb3JpZ2luYWwgaGFzaHRhYmxlIGlmIGFueS4KKwkgKiB1cHBlcl9yZWxz W1VQUEVSUkVMX1BBUlRJQUxfR1JPVVBfQUdHXSB0byBpdHMgZm9ybWVyIHN0YXRlLCBhbmQgcHV0 CisJICogYmFjayBvcmlnaW5hbCBoYXNodGFibGUgaWYgYW55LgogCSAqLwogCXJvb3QtPmpvaW5f cmVsX2xpc3QtPml0ZW1zID0gbGlzdF90cnVuY2F0ZShyb290LT5qb2luX3JlbF9saXN0LT5pdGVt cywKIAkJCQkJCQkJCQkJICAgc2F2ZWxlbmd0aF9qb2luX3JlbCk7CkBAIC0zMDgsMTQgKzMwOSwx NCBAQCBtZXJnZV9jbHVtcChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqY2x1bXBzLCBDbHVtcCAq bmV3X2NsdW1wLCBpbnQgbnVtX2dlbmUsCiAKIAkJCQkvKgogCQkJCSAqIEV4Y2VwdCBmb3IgdGhl IHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJhdGluZwotCQkJCSAqIHBhcnRp YWwgYWdncmVnYXRpb24gcGF0aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uIG9uIHRvcCBvZiB0 aGUKLQkJCQkgKiBwYXRocyBvZiB0aGlzIHJlbC4gIEFmdGVyIHRoYXQsIHdlJ3JlIGRvbmUgY3Jl YXRpbmcgcGF0aHMgZm9yCi0JCQkJICogdGhlIGdyb3VwZWQgcmVsYXRpb24sIHNvIHJ1biBzZXRf Y2hlYXBlc3QoKS4KKwkJCQkgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3Jv dXBlZCByZWxhdGlvbiBvbiB0b3AKKwkJCQkgKiBvZiB0aGUgcGF0aHMgb2YgdGhpcyByZWwuICBB ZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nCisJCQkJICogcGF0aHMgZm9yIHRoZSBncm91 cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCiAJCQkJICovCiAJCQkJaWYgKCFi bXNfZXF1YWwoam9pbnJlbC0+cmVsaWRzLCByb290LT5hbGxfcXVlcnlfcmVscykpCiAJCQkJewot CQkJCQlSZWxPcHRJbmZvICAgKnJlbF9ncm91cGVkOwotCQkJCQlSZWxBZ2dJbmZvICAgKmFnZ19p bmZvOworCQkJCQlSZWxPcHRJbmZvICpyZWxfZ3JvdXBlZDsKKwkJCQkJUmVsQWdnSW5mbyAqYWdn X2luZm87CiAKIAkJCQkJcmVsX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5y ZWwtPnJlbGlkcywKIAkJCQkJCQkJCQkJCSAgICZhZ2dfaW5mbyk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvYWxscGF0aHMuYwppbmRleCAzNTllZWUzNDg2Li4zNjAyZGNhY2ZhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKQEAgLTM2MCwxOSArMzYwLDE5IEBAIHNldHVwX2Jh c2VfZ3JvdXBlZF9yZWxzKFBsYW5uZXJJbmZvICpyb290KQogCiAJZm9yIChydGkgPSAxOyBydGkg PCByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemU7IHJ0aSsrKQogCXsKLQkJUmVsT3B0SW5mbwkg ICAqcmVsID0gcm9vdC0+c2ltcGxlX3JlbF9hcnJheVtydGldOwotCQlSZWxPcHRJbmZvCSAgICpy ZWxfZ3JvdXBlZDsKLQkJUmVsQWdnSW5mbwkgICAqYWdnX2luZm87CisJCVJlbE9wdEluZm8gKnJl bCA9IHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlbcnRpXTsKKwkJUmVsT3B0SW5mbyAqcmVsX2dyb3Vw ZWQ7CisJCVJlbEFnZ0luZm8gKmFnZ19pbmZvOwogCiAJCS8qIHRoZXJlIG1heSBiZSBlbXB0eSBz bG90cyBjb3JyZXNwb25kaW5nIHRvIG5vbi1iYXNlcmVsIFJURXMgKi8KIAkJaWYgKHJlbCA9PSBO VUxMKQogCQkJY29udGludWU7CiAKLQkJQXNzZXJ0KHJlbC0+cmVsaWQgPT0gcnRpKTsgLyogc2Fu aXR5IGNoZWNrIG9uIGFycmF5ICovCisJCUFzc2VydChyZWwtPnJlbGlkID09IHJ0aSk7CS8qIHNh bml0eSBjaGVjayBvbiBhcnJheSAqLwogCiAJCS8qCi0JCSAqIElnbm9yZSBSVEVzIHRoYXQgYXJl IG5vdCBzaW1wbGUgcmVscy4gIE5vdGUgdGhhdCB3ZSBuZWVkIHRvIGNvbnNpZGVyCi0JCSAqICJv dGhlciByZWxzIiBoZXJlLgorCQkgKiBJZ25vcmUgUlRFcyB0aGF0IGFyZSBub3Qgc2ltcGxlIHJl bHMuICBOb3RlIHRoYXQgd2UgbmVlZCB0bworCQkgKiBjb25zaWRlciAib3RoZXIgcmVscyIgaGVy ZS4KIAkJICovCiAJCWlmICghSVNfU0lNUExFX1JFTChyZWwpKQogCQkJY29udGludWU7CkBAIC0x MzY2LDggKzEzNjYsOCBAQCBzZXRfYXBwZW5kX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsLAogc3RhdGljIHZvaWQKIHNldF9ncm91cGVkX3JlbF9wYXRobGlz dChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQogewotCVJlbE9wdEluZm8gICAq cmVsX2dyb3VwZWQ7Ci0JUmVsQWdnSW5mbyAgICphZ2dfaW5mbzsKKwlSZWxPcHRJbmZvICpyZWxf Z3JvdXBlZDsKKwlSZWxBZ2dJbmZvICphZ2dfaW5mbzsKIAogCS8qIEFkZCBwYXRocyB0byB0aGUg Z3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIG9uZSBleGlzdHMuICovCiAJcmVsX2dyb3VwZWQgPSBm aW5kX2dyb3VwZWRfcmVsKHJvb3QsIHJlbC0+cmVsaWRzLApAQCAtMzQxOSw4ICszNDE5LDggQEAg Z2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs X2dyb3VwZWQsCiAJZ2V0X2FnZ19jbGF1c2VfY29zdHMocm9vdCwgQUdHU1BMSVRfSU5JVElBTF9T RVJJQUwsICZhZ2dfY29zdHMpOwogCiAJLyoKLQkgKiBEZXRlcm1pbmUgd2hldGhlciBpdCdzIHBv c3NpYmxlIHRvIHBlcmZvcm0gc29ydC1iYXNlZCBpbXBsZW1lbnRhdGlvbnMgb2YKLQkgKiBncm91 cGluZy4KKwkgKiBEZXRlcm1pbmUgd2hldGhlciBpdCdzIHBvc3NpYmxlIHRvIHBlcmZvcm0gc29y dC1iYXNlZCBpbXBsZW1lbnRhdGlvbnMKKwkgKiBvZiBncm91cGluZy4KIAkgKi8KIAljYW5fc29y dCA9IGdyb3VwaW5nX2lzX3NvcnRhYmxlKGFnZ19pbmZvLT5ncm91cF9jbGF1c2VzKTsKIApAQCAt MzQ4MSw5ICszNDgxLDkgQEAgZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsX2dyb3VwZWQsCiAJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKIAog CQkJLyoKLQkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSB0aGUgbm9uLWdyb3Vw ZWQgcmVsYXRpb24gd2hpY2ggaXMKLQkJCSAqIG5vdCBhd2FyZSBvZiBlYWdlciBhZ2dyZWdhdGlv biwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcwotCQkJICogdGhlIGNvcnJlY3QgaW5w dXQgZm9yIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgorCQkJICogU2luY2UgdGhlIHBhdGggb3Jp Z2luYXRlcyBmcm9tIHRoZSBub24tZ3JvdXBlZCByZWxhdGlvbiB3aGljaAorCQkJICogaXMgbm90 IGF3YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0CisJCQkg KiBwcm92aWRlcyB0aGUgY29ycmVjdCBpbnB1dCBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRpb24u CiAJCQkgKi8KIAkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3Qs CiAJCQkJCQkJCQkJCQkgICByZWxfZ3JvdXBlZCwKQEAgLTM1MjcsOCArMzUyNyw4IEBAIGdlbmVy YXRlX2dyb3VwZWRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbF9ncm91 cGVkLAogCQkJfQogCiAJCQkvKgotCQkJICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5H IGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsIHRoZQotCQkJICogZmluYWwgdmFsdWUg b2YgdGhlIGFnZ3JlZ2F0ZSBpcyBrbm93bi4KKwkJCSAqIHF1YWwgaXMgTklMIGJlY2F1c2UgdGhl IEhBVklORyBjbGF1c2UgY2Fubm90IGJlIGV2YWx1YXRlZCB1bnRpbAorCQkJICogdGhlIGZpbmFs IHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25vd24uCiAJCQkgKi8KIAkJCXBhdGggPSAoUGF0 aCAqKSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKIAkJCQkJCQkJCQkJcmVsX2dyb3VwZWQsCkBAIC0z NTU4LDkgKzM1NTgsOSBAQCBnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWxfZ3JvdXBlZCwKIAkJCWludAkJCXByZXNvcnRlZF9rZXlzOwogCiAJ CQkvKgotCQkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIHRoZSBub24tZ3JvdXBl ZCByZWxhdGlvbiB3aGljaCBpcwotCQkJICogbm90IGF3YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9u LCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVzCi0JCQkgKiB0aGUgY29ycmVjdCBpbnB1 dCBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKiBTaW5jZSB0aGUgcGF0aCBvcmln aW5hdGVzIGZyb20gdGhlIG5vbi1ncm91cGVkIHJlbGF0aW9uIHdoaWNoCisJCQkgKiBpcyBub3Qg YXdhcmUgb2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQgaXQKKwkJCSAq IHByb3ZpZGVzIHRoZSBjb3JyZWN0IGlucHV0IGZvciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbi4K IAkJCSAqLwogCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgocm9vdCwK IAkJCQkJCQkJCQkJCSAgIHJlbF9ncm91cGVkLApAQCAtMzYwNSw4ICszNjA1LDggQEAgZ2VuZXJh dGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsX2dyb3Vw ZWQsCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcg Y2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwgdGhlCi0JCQkgKiBmaW5hbCB2YWx1ZSBv ZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUg SEFWSU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsCisJCQkgKiB0aGUgZmluYWwg dmFsdWUgb2YgdGhlIGFnZ3JlZ2F0ZSBpcyBrbm93bi4KIAkJCSAqLwogCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJCQlyZWxfZ3JvdXBlZCwKQEAgLTM2 MjgsMTIgKzM2MjgsMTIgQEAgZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsX2dyb3VwZWQsCiAJICovCiAJaWYgKGNhbl9oYXNoICYmIGNoZWFw ZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKIAl7Ci0JCVBhdGggICAqcGF0aDsKKwkJUGF0aAkgICAq cGF0aDsKIAogCQkvKgogCQkgKiBTaW5jZSB0aGUgcGF0aCBvcmlnaW5hdGVzIGZyb20gdGhlIG5v bi1ncm91cGVkIHJlbGF0aW9uIHdoaWNoIGlzCi0JCSAqIG5vdCBhd2FyZSBvZiBlYWdlciBhZ2dy ZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcwotCQkgKiB0aGUgY29ycmVj dCBpbnB1dCBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqIG5vdCBhd2FyZSBvZiBl YWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcyB0aGUKKwkJ ICogY29ycmVjdCBpbnB1dCBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRpb24uCiAJCSAqLwogCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAogCQkJCQkJCQkJCQkg ICByZWxfZ3JvdXBlZCwKQEAgLTM2NDEsOCArMzY0MSw4IEBAIGdlbmVyYXRlX2dyb3VwZWRfcGF0 aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbF9ncm91cGVkLAogCQkJCQkJCQkJ CQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKIAogCQkvKgotCQkgKiBxdWFsIGlzIE5JTCBiZWNh dXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKLQkJICogdGhl IGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25vd24uCisJCSAqIHF1YWwgaXMgTklM IGJlY2F1c2UgdGhlIEhBVklORyBjbGF1c2UgY2Fubm90IGJlIGV2YWx1YXRlZCB1bnRpbCB0aGUK KwkJICogZmluYWwgdmFsdWUgb2YgdGhlIGFnZ3JlZ2F0ZSBpcyBrbm93bi4KIAkJICovCiAJCXBh dGggPSAoUGF0aCAqKSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKIAkJCQkJCQkJCQlyZWxfZ3JvdXBl ZCwKQEAgLTM2NjMsMTIgKzM2NjMsMTIgQEAgZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsX2dyb3VwZWQsCiAJICovCiAJaWYgKGNhbl9oYXNo ICYmIGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQogCXsKLQkJUGF0aCAgICpwYXRoOwor CQlQYXRoCSAgICpwYXRoOwogCiAJCS8qCiAJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMg ZnJvbSB0aGUgbm9uLWdyb3VwZWQgcmVsYXRpb24gd2hpY2ggaXMKLQkJICogbm90IGF3YXJlIG9m IGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVzCi0JCSAq IHRoZSBjb3JyZWN0IGlucHV0IGZvciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkJICogbm90 IGF3YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3Zp ZGVzIHRoZQorCQkgKiBjb3JyZWN0IGlucHV0IGZvciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbi4K IAkJICovCiAJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCiAJ CQkJCQkJCQkJCSAgIHJlbF9ncm91cGVkLApAQCAtMzY3Niw4ICszNjc2LDggQEAgZ2VuZXJhdGVf Z3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsX2dyb3VwZWQs CiAJCQkJCQkJCQkJCSAgIGFnZ19pbmZvLT5hZ2dfaW5wdXQpOwogCiAJCS8qCi0JCSAqIHF1YWwg aXMgTklMIGJlY2F1c2UgdGhlIEhBVklORyBjbGF1c2UgY2Fubm90IGJlIGV2YWx1YXRlZCB1bnRp bAotCQkgKiB0aGUgZmluYWwgdmFsdWUgb2YgdGhlIGFnZ3JlZ2F0ZSBpcyBrbm93bi4KKwkJICog cXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVk IHVudGlsIHRoZQorCQkgKiBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgog CQkgKi8KIAkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJ CXJlbF9ncm91cGVkLApAQCAtMzg4MCwxNCArMzg4MCwxNCBAQCBzdGFuZGFyZF9qb2luX3NlYXJj aChQbGFubmVySW5mbyAqcm9vdCwgaW50IGxldmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxfcmVs cykKIAogCQkJLyoKIAkJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwg Y29uc2lkZXIgZ2VuZXJhdGluZwotCQkJICogcGFydGlhbCBhZ2dyZWdhdGlvbiBwYXRocyBmb3Ig dGhlIGdyb3VwZWQgcmVsYXRpb24gb24gdG9wIG9mIHRoZQotCQkJICogcGF0aHMgb2YgdGhpcyBy ZWwuICBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzIGZvcgotCQkJICogdGhl IGdyb3VwZWQgcmVsYXRpb24sIHNvIHJ1biBzZXRfY2hlYXBlc3QoKS4KKwkJCSAqIHBhcnRpYWwg YWdncmVnYXRpb24gcGF0aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uIG9uIHRvcCBvZgorCQkJ ICogdGhlIHBhdGhzIG9mIHRoaXMgcmVsLiAgQWZ0ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVhdGlu ZyBwYXRocworCQkJICogZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFw ZXN0KCkuCiAJCQkgKi8KIAkJCWlmICghYm1zX2VxdWFsKHJlbC0+cmVsaWRzLCByb290LT5hbGxf cXVlcnlfcmVscykpCiAJCQl7Ci0JCQkJUmVsT3B0SW5mbyAgICpyZWxfZ3JvdXBlZDsKLQkJCQlS ZWxBZ2dJbmZvICAgKmFnZ19pbmZvOworCQkJCVJlbE9wdEluZm8gKnJlbF9ncm91cGVkOworCQkJ CVJlbEFnZ0luZm8gKmFnZ19pbmZvOwogCiAJCQkJcmVsX2dyb3VwZWQgPSBmaW5kX2dyb3VwZWRf cmVsKHJvb3QsIHJlbC0+cmVsaWRzLAogCQkJCQkJCQkJCQkgICAmYWdnX2luZm8pOwpAQCAtNDc3 Nyw4ICs0Nzc3LDggQEAgZ2VuZXJhdGVfcGFydGl0aW9ud2lzZV9qb2luX3BhdGhzKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCiAJCQkJCSAgIHJlbC0+dG9wX3BhcmVudF9yZWxp ZHMgOiByZWwtPnJlbGlkcywKIAkJCQkJICAgcm9vdC0+YWxsX3F1ZXJ5X3JlbHMpKQogCQl7Ci0J CQlSZWxPcHRJbmZvICAgKnJlbF9ncm91cGVkOwotCQkJUmVsQWdnSW5mbyAgICphZ2dfaW5mbzsK KwkJCVJlbE9wdEluZm8gKnJlbF9ncm91cGVkOworCQkJUmVsQWdnSW5mbyAqYWdnX2luZm87CiAK IAkJCXJlbF9ncm91cGVkID0gZmluZF9ncm91cGVkX3JlbChyb290LCBjaGlsZF9yZWwtPnJlbGlk cywKIAkJCQkJCQkJCQkgICAmYWdnX2luZm8pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvam9pbnJlbHMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5y ZWxzLmMKaW5kZXggNzhhODhjOWQzYi4uMjNiYmVmMTVmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9qb2lucmVscy5jCkBAIC05MDUsMTIgKzkwNSwxMiBAQCBtYWtlX2dyb3VwZWRfam9pbl9y ZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCiAJCQkJCSAgUmVsT3B0SW5m byAqcmVsMiwgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJICBTcGVjaWFsSm9pbkluZm8gKnNq aW5mbywgTGlzdCAqcmVzdHJpY3RsaXN0KQogewotCVJlbE9wdEluZm8JICAgKnJlbF9ncm91cGVk OwotCVJlbEFnZ0luZm8JICAgKmFnZ19pbmZvID0gTlVMTDsKLQlSZWxPcHRJbmZvCSAgICpyZWwx X2dyb3VwZWQ7Ci0JUmVsT3B0SW5mbwkgICAqcmVsMl9ncm91cGVkOwotCWJvb2wJCQlyZWwxX2Vt cHR5OwotCWJvb2wJCQlyZWwyX2VtcHR5OworCVJlbE9wdEluZm8gKnJlbF9ncm91cGVkOworCVJl bEFnZ0luZm8gKmFnZ19pbmZvID0gTlVMTDsKKwlSZWxPcHRJbmZvICpyZWwxX2dyb3VwZWQ7CisJ UmVsT3B0SW5mbyAqcmVsMl9ncm91cGVkOworCWJvb2wJCXJlbDFfZW1wdHk7CisJYm9vbAkJcmVs Ml9lbXB0eTsKIAogCS8qCiAJICogSWYgdGhlcmUgYXJlIG5vIGFnZ3JlZ2F0ZSBleHByZXNzaW9u cyBvciBncm91cGluZyBleHByZXNzaW9ucywgZWFnZXIKQEAgLTk3NSw5ICs5NzUsOSBAQCBtYWtl X2dyb3VwZWRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCiAJ LyoKIAkgKiBKb2luIG9mIHR3byBncm91cGVkIHJlbGF0aW9ucyBpcyBjdXJyZW50bHkgbm90IHN1 cHBvcnRlZC4gIEluIHN1Y2ggYQogCSAqIGNhc2UsIGdyb3VwaW5nIG9mIG9uZSBzaWRlIHdvdWxk IGNoYW5nZSB0aGUgb2NjdXJyZW5jZSBvZiB0aGUgb3RoZXIKLQkgKiBzaWRlJ3MgYWdncmVnYXRl IHRyYW5zaWVudCBzdGF0ZXMgb24gdGhlIGlucHV0IG9mIHRoZSBmaW5hbCBhZ2dyZWdhdGlvbi4K LQkgKiBUaGlzIGNhbiBiZSBoYW5kbGVkIGJ5IGFkanVzdGluZyB0aGUgdHJhbnNpZW50IHN0YXRl cywgYnV0IGl0J3Mgbm90Ci0JICogd29ydGggdGhlIGVmZm9ydCBmb3Igbm93LgorCSAqIHNpZGUn cyBhZ2dyZWdhdGUgdHJhbnNpZW50IHN0YXRlcyBvbiB0aGUgaW5wdXQgb2YgdGhlIGZpbmFsCisJ ICogYWdncmVnYXRpb24uIFRoaXMgY2FuIGJlIGhhbmRsZWQgYnkgYWRqdXN0aW5nIHRoZSB0cmFu c2llbnQgc3RhdGVzLCBidXQKKwkgKiBpdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IGZvciBub3cu CiAJICovCiAJaWYgKCFyZWwxX2VtcHR5ICYmICFyZWwyX2VtcHR5KQogCQlyZXR1cm47CkBAIC05 ODksNiArOTg5LDcgQEAgbWFrZV9ncm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwxLAogCQkJCQkJCQkgICBzamluZm8sIHJlc3RyaWN0bGlzdCk7CiAJCXBv cHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocyhyb290LCByZWwxX2dyb3VwZWQsIHJlbDIsIHJlbF9n cm91cGVkLAogCQkJCQkJCQkJc2ppbmZvLCByZXN0cmljdGxpc3QpOworCiAJCS8qCiAJCSAqIEl0 IHNob3VsZG4ndCBoYXBwZW4gdGhhdCB3ZSBoYXZlIG1hcmtlZCByZWwxX2dyb3VwZWQgYXMgZHVt bXkgaW4KIAkJICogcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzIGR1ZSB0byBwcm92YWJseSBj b25zdGFudC1mYWxzZSBqb2luCkBAIC0xMDAzLDYgKzEwMDQsNyBAQCBtYWtlX2dyb3VwZWRfam9p bl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCiAJCQkJCQkJCSAgIHNq aW5mbywgcmVzdHJpY3RsaXN0KTsKIAkJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3Qs IHJlbDEsIHJlbDJfZ3JvdXBlZCwgcmVsX2dyb3VwZWQsCiAJCQkJCQkJCQlzamluZm8sIHJlc3Ry aWN0bGlzdCk7CisKIAkJLyoKIAkJICogSXQgc2hvdWxkbid0IGhhcHBlbiB0aGF0IHdlIGhhdmUg bWFya2VkIHJlbDJfZ3JvdXBlZCBhcyBkdW1teSBpbgogCQkgKiBwb3B1bGF0ZV9qb2lucmVsX3dp dGhfcGF0aHMgZHVlIHRvIHByb3ZhYmx5IGNvbnN0YW50LWZhbHNlIGpvaW4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKaW5kZXggOWYwNWVkZmJhYy4uZjA5M2VmMGYxMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKQEAgLTQzMCw5ICs0MzAsOSBAQCBj cmVhdGVfYWdnX2NsYXVzZV9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCkKIAl9CiAKIAkvKgotCSAq IEFnZ3JlZ2F0ZXMgd2l0aGluIHRoZSBIQVZJTkcgY2xhdXNlIG5lZWQgdG8gYmUgcHJvY2Vzc2Vk IGluIHRoZSBzYW1lIHdheQotCSAqIGFzIHRob3NlIGluIHRoZSB0YXJnZXRsaXN0LiAgTm90ZSB0 aGF0IEhBVklORyBjYW4gY29udGFpbiBBZ2dyZWZzIGJ1dAotCSAqIG5vdCBXaW5kb3dGdW5jcy4K KwkgKiBBZ2dyZWdhdGVzIHdpdGhpbiB0aGUgSEFWSU5HIGNsYXVzZSBuZWVkIHRvIGJlIHByb2Nl c3NlZCBpbiB0aGUgc2FtZQorCSAqIHdheSBhcyB0aG9zZSBpbiB0aGUgdGFyZ2V0bGlzdC4gIE5v dGUgdGhhdCBIQVZJTkcgY2FuIGNvbnRhaW4gQWdncmVmcworCSAqIGJ1dCBub3QgV2luZG93RnVu Y3MuCiAJICovCiAJaWYgKHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsICE9IE5VTEwpCiAJewpAQCAt NTA0LDEwICs1MDQsMTAgQEAgY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lckluZm8g KnJvb3QpCiAJCVNvcnRHcm91cENsYXVzZSAqc2djID0gbGZpcnN0X25vZGUoU29ydEdyb3VwQ2xh dXNlLCBsYyk7CiAJCVRhcmdldEVudHJ5ICp0bGUgPSBnZXRfc29ydGdyb3VwY2xhdXNlX3RsZShz Z2MsIHJvb3QtPnByb2Nlc3NlZF90bGlzdCk7CiAJCVR5cGVDYWNoZUVudHJ5ICp0Y2U7Ci0JCU9p ZAkJCQllcXVhbGltYWdlcHJvYzsKLQkJT2lkCQkJCWVxX29wOwotCQlMaXN0CQkgICAqZXFfb3Bm YW1pbGllczsKLQkJT2lkCQkJCWJ0cmVlX29wZmFtaWx5OworCQlPaWQJCQllcXVhbGltYWdlcHJv YzsKKwkJT2lkCQkJZXFfb3A7CisJCUxpc3QJICAgKmVxX29wZmFtaWxpZXM7CisJCU9pZAkJCWJ0 cmVlX29wZmFtaWx5OwogCiAJCUFzc2VydCh0bGUtPnJlc3NvcnRncm91cHJlZiA+IDApOwogCkBA IC01MTgsMTEgKzUxOCwxMSBAQCBjcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZvcyhQbGFubmVySW5m byAqcm9vdCkKIAkJCXJldHVybjsKIAogCQkvKgotCQkgKiBFYWdlciBhZ2dyZWdhdGlvbiBpcyBv bmx5IHBvc3NpYmxlIGlmIGVxdWFsaXR5IG9mIGdyb3VwaW5nIGtleXMKLQkJICogcGVyIHRoZSBl cXVhbGl0eSBvcGVyYXRvciBpbXBsaWVzIGJpdHdpc2UgZXF1YWxpdHkuIE90aGVyd2lzZSwgaWYK LQkJICogd2UgcHV0IGtleXMgb2YgZGlmZmVyZW50IGJ5dGUgaW1hZ2VzIGludG8gdGhlIHNhbWUg Z3JvdXAsIHdlIGxvc2UKLQkJICogc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1heSBiZSBuZWVkZWQg dG8gZXZhbHVhdGUgam9pbiBjbGF1c2VzIGFib3ZlCi0JCSAqIHRoZSBwdXNoZWQtZG93biBhZ2dy ZWdhdGUgbm9kZSwgb3IgdGhlIFdIRVJFIGNsYXVzZS4KKwkJICogRWFnZXIgYWdncmVnYXRpb24g aXMgb25seSBwb3NzaWJsZSBpZiBlcXVhbGl0eSBvZiBncm91cGluZyBrZXlzIHBlcgorCQkgKiB0 aGUgZXF1YWxpdHkgb3BlcmF0b3IgaW1wbGllcyBiaXR3aXNlIGVxdWFsaXR5LiBPdGhlcndpc2Us IGlmIHdlCisJCSAqIHB1dCBrZXlzIG9mIGRpZmZlcmVudCBieXRlIGltYWdlcyBpbnRvIHRoZSBz YW1lIGdyb3VwLCB3ZSBsb3NlIHNvbWUKKwkJICogaW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgbmVl ZGVkIHRvIGV2YWx1YXRlIGpvaW4gY2xhdXNlcyBhYm92ZSB0aGUKKwkJICogcHVzaGVkLWRvd24g YWdncmVnYXRlIG5vZGUsIG9yIHRoZSBXSEVSRSBjbGF1c2UuCiAJCSAqCiAJCSAqIEZvciBleGFt cGxlLCB0aGUgTlVNRVJJQyBkYXRhIHR5cGUgaXMgbm90IHN1cHBvcnRlZCBiZWNhdXNlIHZhbHVl cwogCQkgKiB0aGF0IGZhbGwgaW50byB0aGUgc2FtZSBncm91cCBhY2NvcmRpbmcgdG8gdGhlIGVx dWFsaXR5IG9wZXJhdG9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggYjY5 ZWZiM2NkMS4uNzJhNDVmMWIwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpA QCAtNDA4NCw4ICs0MDg0LDggQEAgY3JlYXRlX29yZGluYXJ5X2dyb3VwaW5nX3BhdGhzKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJLyoKIAkgKiBOb3cgY2hvb3Nl IHRoZSBiZXN0IHBhdGgocykgZm9yIHBhcnRpYWxseV9ncm91cGVkX3JlbC4KIAkgKgotCSAqIE5v dGUgdGhhdCB0aGUgbm9uLXBhcnRpYWwgcGF0aHMgY2FuIGNvbWUgZWl0aGVyIGZyb20gdGhlIEdh dGhlciBhYm92ZSBvcgotCSAqIGZyb20gZWFnZXIgYWdncmVnYXRpb24uCisJICogTm90ZSB0aGF0 IHRoZSBub24tcGFydGlhbCBwYXRocyBjYW4gY29tZSBlaXRoZXIgZnJvbSB0aGUgR2F0aGVyIGFi b3ZlCisJICogb3IgZnJvbSBlYWdlciBhZ2dyZWdhdGlvbi4KIAkgKi8KIAlpZiAocGFydGlhbGx5 X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCiAJCXNldF9j aGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwpAQCAtNzI0NSw4ICs3MjQ1LDggQEAgY3Jl YXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAkvKgogCSAq IEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHBhcnRpYWxseV9ncm91cGVkX3JlbCBjcmVhdGVkIGJ5 IGVhZ2VyCi0JICogYWdncmVnYXRpb24gaXMgZHVtbXkuICBJbiB0aGlzIGNhc2Ugd2UganVzdCBz ZXQgaXQgdG8gTlVMTC4gIEl0IG1pZ2h0IGJlCi0JICogY3JlYXRlZCBhZ2FpbiBieSB0aGUgZm9s bG93aW5nIGxvZ2ljIGlmIHBvc3NpYmxlLgorCSAqIGFnZ3JlZ2F0aW9uIGlzIGR1bW15LiAgSW4g dGhpcyBjYXNlIHdlIGp1c3Qgc2V0IGl0IHRvIE5VTEwuICBJdCBtaWdodAorCSAqIGJlIGNyZWF0 ZWQgYWdhaW4gYnkgdGhlIGZvbGxvd2luZyBsb2dpYyBpZiBwb3NzaWJsZS4KIAkgKi8KIAlpZiAo cGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIElTX0RVTU1ZX1JFTChwYXJ0aWFsbHlfZ3JvdXBlZF9y ZWwpKQogCQlwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvYXBwZW5kaW5mby5jCmluZGV4IDA4ZGU3N2Q0MzkuLjI3YWM4NTNjMGEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKQEAgLTU0Miw3ICs1NDIsNyBAQCBhZGp1 c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAogCQlpZiAob2xkdGFyZ2V0 LT5zb3J0Z3JvdXByZWZzKQogCQl7Ci0JCQlTaXplCW5ieXRlcyA9IGxpc3RfbGVuZ3RoKG9sZHRh cmdldC0+ZXhwcnMpICogc2l6ZW9mKEluZGV4KTsKKwkJCVNpemUJCW5ieXRlcyA9IGxpc3RfbGVu Z3RoKG9sZHRhcmdldC0+ZXhwcnMpICogc2l6ZW9mKEluZGV4KTsKIAogCQkJbmV3dGFyZ2V0LT5l eHBycyA9IChMaXN0ICopCiAJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2Rl ICopIG9sZHRhcmdldC0+ZXhwcnMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9yZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKaW5k ZXggOTEwMTNlMWE4MC4uNTVmZjA4MmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5v ZGUuYwpAQCAtNDcsNyArNDcsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWxJbmZvRW50cnkKIHsKIAlS ZWxpZHMJCXJlbGlkczsJCQkvKiBoYXNoIGtleSAtLS0gTVVTVCBCRSBGSVJTVCAqLwogCXZvaWQJ ICAgKmRhdGE7Ci19IFJlbEluZm9FbnRyeTsKK30JCQlSZWxJbmZvRW50cnk7CiAKIHN0YXRpYyB2 b2lkIGJ1aWxkX2pvaW5yZWxfdGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpv aW5yZWwsCiAJCQkJCQkJCVJlbE9wdEluZm8gKmlucHV0X3JlbCwKQEAgLTQzNSwxMyArNDM1LDEz IEBAIFJlbE9wdEluZm8gKgogYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpy b290LCBpbnQgcmVsaWQsCiAJCQkJCQkgUmVsQWdnSW5mbyAqKmFnZ19pbmZvX3ApCiB7Ci0JUmVs T3B0SW5mbwkgICAqcmVsX3BsYWluOwotCVJlbE9wdEluZm8JICAgKnJlbF9ncm91cGVkOwotCVJl bEFnZ0luZm8JICAgKmFnZ19pbmZvOworCVJlbE9wdEluZm8gKnJlbF9wbGFpbjsKKwlSZWxPcHRJ bmZvICpyZWxfZ3JvdXBlZDsKKwlSZWxBZ2dJbmZvICphZ2dfaW5mbzsKIAogCS8qCi0JICogV2Ug c2hvdWxkIGhhdmUgYXZhaWxhYmxlIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgZ3JvdXBpbmcg ZXhwcmVzc2lvbnMsCi0JICogb3RoZXJ3aXNlIHdlIGNhbm5vdCByZWFjaCBoZXJlLgorCSAqIFdl IHNob3VsZCBoYXZlIGF2YWlsYWJsZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5n CisJICogZXhwcmVzc2lvbnMsIG90aGVyd2lzZSB3ZSBjYW5ub3QgcmVhY2ggaGVyZS4KIAkgKi8K IAlBc3NlcnQocm9vdC0+YWdnX2NsYXVzZV9saXN0ICE9IE5JTCk7CiAJQXNzZXJ0KHJvb3QtPmdy b3VwX2V4cHJfbGlzdCAhPSBOSUwpOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIGJ1aWxkX3NpbXBsZV9n cm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLAogUmVsT3B0SW5mbyAqCiBi dWlsZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsX3BsYWlu KQogewotCVJlbE9wdEluZm8gICAqcmVsX2dyb3VwZWQ7CisJUmVsT3B0SW5mbyAqcmVsX2dyb3Vw ZWQ7CiAKIAlyZWxfZ3JvdXBlZCA9IG1ha2VOb2RlKFJlbE9wdEluZm8pOwogCW1lbWNweShyZWxf Z3JvdXBlZCwgcmVsX3BsYWluLCBzaXplb2YoUmVsT3B0SW5mbykpOwpAQCAtMjY3MiwxMyArMjY3 MiwxMyBAQCBjcmVhdGVfcmVsX2FnZ19pbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwpCiAKIAkvKgogCSAqIElmIHRoaXMgaXMgYSBjaGlsZCByZWwsIHRoZSBncm91cGVkIHJl bCBmb3IgaXRzIHBhcmVudCByZWwgbXVzdCBoYXZlCi0JICogYmVlbiBjcmVhdGVkIGlmIGl0IGNh bi4gIFNvIHdlIGNhbiBqdXN0IHVzZSBwYXJlbnQncyBSZWxBZ2dJbmZvIGlmIHRoZXJlCi0JICog aXMgb25lLCB3aXRoIGFwcHJvcHJpYXRlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbnMuCisJICogYmVl biBjcmVhdGVkIGlmIGl0IGNhbi4gIFNvIHdlIGNhbiBqdXN0IHVzZSBwYXJlbnQncyBSZWxBZ2dJ bmZvIGlmCisJICogdGhlcmUgaXMgb25lLCB3aXRoIGFwcHJvcHJpYXRlIHZhcmlhYmxlIHN1YnN0 aXR1dGlvbnMuCiAJICovCiAJaWYgKElTX09USEVSX1JFTChyZWwpKQogCXsKLQkJUmVsT3B0SW5m bwkgICAqcmVsX2dyb3VwZWQ7Ci0JCVJlbEFnZ0luZm8JICAgKmFnZ19pbmZvOworCQlSZWxPcHRJ bmZvICpyZWxfZ3JvdXBlZDsKKwkJUmVsQWdnSW5mbyAqYWdnX2luZm87CiAKIAkJQXNzZXJ0KCFi bXNfaXNfZW1wdHkocmVsLT50b3BfcGFyZW50X3JlbGlkcykpOwogCQlyZWxfZ3JvdXBlZCA9IGZp bmRfZ3JvdXBlZF9yZWwocm9vdCwgcmVsLT50b3BfcGFyZW50X3JlbGlkcywgJmFnZ19pbmZvKTsK QEAgLTI3NjEsOCArMjc2MSw4IEBAIGNyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCkKIAkJCSAqIEluaXRpYWxpemUgdGhlIFNvcnRHcm91cENsYXVz ZS4KIAkJCSAqCiAJCQkgKiBBcyB0aGUgZmluYWwgYWdncmVnYXRpb24gd2lsbCBub3QgdXNlIHRo aXMgZ3JvdXBpbmcgZXhwcmVzc2lvbiwKLQkJCSAqIHdlIGRvbid0IGNhcmUgd2hldGhlciBzb3J0 b3AgaXMgPCBvciA+LiBUaGUgdmFsdWUgb2YgbnVsbHNfZmlyc3QKLQkJCSAqIHNob3VsZCBub3Qg bWF0dGVyIGZvciB0aGUgc2FtZSByZWFzb24uCisJCQkgKiB3ZSBkb24ndCBjYXJlIHdoZXRoZXIg c29ydG9wIGlzIDwgb3IgPi4gVGhlIHZhbHVlIG9mCisJCQkgKiBudWxsc19maXJzdCBzaG91bGQg bm90IG1hdHRlciBmb3IgdGhlIHNhbWUgcmVhc29uLgogCQkJICovCiAJCQljbC0+dGxlU29ydEdy b3VwUmVmID0gKytzb3J0Z3JvdXByZWY7CiAJCQlnZXRfc29ydF9ncm91cF9vcGVyYXRvcnModmFy LT52YXJ0eXBlLApAQCAtMjgyNiw3ICsyODI2LDcgQEAgY3JlYXRlX3JlbF9hZ2dfaW5mbyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQogCWZvcmVhY2gobGMsIHJvb3QtPmFnZ19j bGF1c2VfbGlzdCkKIAl7CiAJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm8gPSBsZmlyc3Rfbm9kZShB Z2dDbGF1c2VJbmZvLCBsYyk7Ci0JCUFnZ3JlZiAgICphZ2dyZWY7CisJCUFnZ3JlZgkgICAqYWdn cmVmOwogCiAJCUFzc2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsKIApAQCAtMjg0 OCw4ICsyODQ4LDggQEAgY3JlYXRlX3JlbF9hZ2dfaW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsKQogCXJlc3VsdC0+YWdnX2lucHV0ID0gYWdnX2lucHV0OwogCiAJLyoKLQkg KiBUaGUgbnVtYmVyIG9mIGFnZ3JlZ2F0aW9uIGlucHV0IHJvd3MgaXMgc2ltcGx5IHRoZSBudW1i ZXIgb2Ygcm93cyBvZiB0aGUKLQkgKiBub24tZ3JvdXBlZCByZWxhdGlvbiwgd2hpY2ggc2hvdWxk IGhhdmUgYmVlbiBlc3RpbWF0ZWQgYnkgbm93LgorCSAqIFRoZSBudW1iZXIgb2YgYWdncmVnYXRp b24gaW5wdXQgcm93cyBpcyBzaW1wbHkgdGhlIG51bWJlciBvZiByb3dzIG9mCisJICogdGhlIG5v bi1ncm91cGVkIHJlbGF0aW9uLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIGVzdGltYXRlZCBieSBu b3cuCiAJICovCiAJcmVzdWx0LT5pbnB1dF9yb3dzID0gcmVsLT5yb3dzOwogCkBAIC0yOTIwLDcg KzI5MjAsOCBAQCBlYWdlcl9hZ2dyZWdhdGlvbl9wb3NzaWJsZV9mb3JfcmVsYXRpb24oUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKIAkJQXNzZXJ0KElzQShhY19pbmZvLT5hZ2dy ZWYsIEFnZ3JlZikpOwogCiAJCS8qCi0JCSAqIEdpdmUgdXAgaWYgYW55IGFnZ3JlZ2F0ZSBuZWVk cyByZWxhdGlvbnMgb3RoZXIgdGhhbiB0aGUgY3VycmVudCBvbmUuCisJCSAqIEdpdmUgdXAgaWYg YW55IGFnZ3JlZ2F0ZSBuZWVkcyByZWxhdGlvbnMgb3RoZXIgdGhhbiB0aGUgY3VycmVudAorCQkg KiBvbmUuCiAJCSAqCiAJCSAqIElmIHRoZSBhZ2dyZWdhdGUgbmVlZHMgdGhlIGN1cnJlbnQgcmVs IHBsdXMgYW55dGhpbmcgZWxzZSwgdGhlbiB0aGUKIAkJICogcHJvYmxlbSBpcyB0aGF0IGdyb3Vw aW5nIG9mIHRoZSBjdXJyZW50IHJlbGF0aW9uIGNvdWxkIG1ha2Ugc29tZQpAQCAtMzAxMiw3ICsz MDEzLDcgQEAgaW5pdF9ncm91cGluZ190YXJnZXRzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpyZWwsCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlib29sCXNhZmVfdG9fcHVzaDsKKwkJCWJv b2wJCXNhZmVfdG9fcHVzaDsKIAogCQkJaWYgKGlzX3Zhcl9uZWVkZWRfYnlfam9pbihyb290LCAo VmFyICopIGV4cHIsIHJlbCwgJnNhZmVfdG9fcHVzaCkpCiAJCQl7CkBAIC0zMDI0LDE3ICszMDI1 LDE3IEBAIGluaXRfZ3JvdXBpbmdfdGFyZ2V0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcmVsLAogCQkJCQlyZXR1cm4gZmFsc2U7CiAKIAkJCQkvKgotCQkJCSAqIFRoZSBleHByZXNz aW9uIGlzIG5lZWRlZCBmb3IgYSBqb2luLCBob3dldmVyIGl0J3MgbmVpdGhlciBpbgotCQkJCSAq IHRoZSBHUk9VUCBCWSBjbGF1c2Ugbm9yIGNhbiBpdCBiZSBkZXJpdmVkIGZyb20gaXQgdXNpbmcg RUMuCi0JCQkJICogKE90aGVyd2lzZSBpdCB3b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBhZGRlZCB0 byB0aGUgdGFyZ2V0cwotCQkJCSAqIGFib3ZlLikgIFdlIG5lZWQgdG8gY29uc3RydWN0IGEgc3Bl Y2lhbCBTb3J0R3JvdXBDbGF1c2UgZm9yCi0JCQkJICogdGhpcyBleHByZXNzaW9uLgorCQkJCSAq IFRoZSBleHByZXNzaW9uIGlzIG5lZWRlZCBmb3IgYSBqb2luLCBob3dldmVyIGl0J3MgbmVpdGhl cgorCQkJCSAqIGluIHRoZSBHUk9VUCBCWSBjbGF1c2Ugbm9yIGNhbiBpdCBiZSBkZXJpdmVkIGZy b20gaXQgdXNpbmcKKwkJCQkgKiBFQy4gKE90aGVyd2lzZSBpdCB3b3VsZCBoYXZlIGFscmVhZHkg YmVlbiBhZGRlZCB0byB0aGUKKwkJCQkgKiB0YXJnZXRzIGFib3ZlLikgIFdlIG5lZWQgdG8gY29u c3RydWN0IGEgc3BlY2lhbAorCQkJCSAqIFNvcnRHcm91cENsYXVzZSBmb3IgdGhpcyBleHByZXNz aW9uLgogCQkJCSAqCiAJCQkJICogTm90ZSB0aGF0IGl0cyB0bGVTb3J0R3JvdXBSZWYgbmVlZHMg dG8gYmUgdW5pcXVlIHdpdGhpbgogCQkJCSAqIGFnZ19pbnB1dCwgc28gd2UgbmVlZCB0byBwb3N0 cG9uZSBjcmVhdGlvbiBvZiB0aGlzCiAJCQkJICogU29ydEdyb3VwQ2xhdXNlIHVudGlsIHdlJ3Jl IGRvbmUgd2l0aCB0aGUgaXRlcmF0aW9uIG9mCi0JCQkJICogcmVsLT5yZWx0YXJnZXQtPmV4cHJz LiAgQW5kIGl0IG1ha2VzIHNlbnNlIGZvciB0aGUgY2FsbGVyIHRvCi0JCQkJICogZG8gc29tZSBt b3JlIGNoZWNrcyBiZWZvcmUgaXQgc3RhcnRzIHRvIGNyZWF0ZSB0aG9zZQorCQkJCSAqIHJlbC0+ cmVsdGFyZ2V0LT5leHBycy4gIEFuZCBpdCBtYWtlcyBzZW5zZSBmb3IgdGhlIGNhbGxlcgorCQkJ CSAqIHRvIGRvIHNvbWUgbW9yZSBjaGVja3MgYmVmb3JlIGl0IHN0YXJ0cyB0byBjcmVhdGUgdGhv c2UKIAkJCQkgKiBTb3J0R3JvdXBDbGF1c2VzLgogCQkJCSAqLwogCQkJCSpncm91cF9leHByc19l eHRyYV9wID0gbGFwcGVuZCgqZ3JvdXBfZXhwcnNfZXh0cmFfcCwgZXhwcik7CkBAIC0zMDQ1LDkg KzMwNDYsOSBAQCBpbml0X2dyb3VwaW5nX3RhcmdldHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAkJCQkgKiBBbm90aGVyIHJlYXNvbiB3ZSBtaWdodCBuZWVkIHRoaXMgdmFy aWFibGUgaXMgdGhhdCBzb21lCiAJCQkJICogYWdncmVnYXRlIHB1c2hlZCBkb3duIHRvIHRoaXMg cmVsYXRpb24gcmVmZXJlbmNlcyBpdC4gSW4KIAkJCQkgKiBzdWNoIGEgY2FzZSwgYWRkIGl0IHRv ICJhZ2dfaW5wdXQiLCBidXQgbm90IHRvICJ0YXJnZXQiLgotCQkJCSAqIEhvd2V2ZXIsIGlmIHRo ZSBhZ2dyZWdhdGUgaXMgbm90IHRoZSBvbmx5IHJlYXNvbiBmb3IgdGhlIHZhcgotCQkJCSAqIHRv IGJlIGluIHRoZSB0YXJnZXQsIHNvbWUgbW9yZSBjaGVja3MgbmVlZCB0byBiZSBwZXJmb3JtZWQK LQkJCQkgKiBiZWxvdy4KKwkJCQkgKiBIb3dldmVyLCBpZiB0aGUgYWdncmVnYXRlIGlzIG5vdCB0 aGUgb25seSByZWFzb24gZm9yIHRoZQorCQkJCSAqIHZhciB0byBiZSBpbiB0aGUgdGFyZ2V0LCBz b21lIG1vcmUgY2hlY2tzIG5lZWQgdG8gYmUKKwkJCQkgKiBwZXJmb3JtZWQgYmVsb3cuCiAJCQkJ ICovCiAJCQkJYWRkX25ld19jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIGV4cHIpOwog CQkJfQpAQCAtMzEwMSw4ICszMTAyLDggQEAgaW5pdF9ncm91cGluZ190YXJnZXRzKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkgKiBleHByZXNzaW9uIGJ1dCBub3QgcmVm ZXJlbmNlZCBieSBhbnkgam9pbi4KIAkJCSAqCiAJCQkgKiBJZiB0aGUgZWFnZXIgYWdncmVnYXRp b24gd2lsbCBzdXBwb3J0IGdlbmVyaWMgZ3JvdXBpbmcKLQkJCSAqIGV4cHJlc3Npb24gaW4gdGhl IGZ1dHVyZSwgY3JlYXRlX3JlbF9hZ2dfaW5mbygpIHdpbGwgaGF2ZSB0byBhZGQKLQkJCSAqIHRo aXMgdmFyaWFibGUgdG8gImFnZ19pbnB1dCIgdGFyZ2V0IGFuZCBhbHNvIGFkZCB0aGUgd2hvbGUK KwkJCSAqIGV4cHJlc3Npb24gaW4gdGhlIGZ1dHVyZSwgY3JlYXRlX3JlbF9hZ2dfaW5mbygpIHdp bGwgaGF2ZSB0bworCQkJICogYWRkIHRoaXMgdmFyaWFibGUgdG8gImFnZ19pbnB1dCIgdGFyZ2V0 IGFuZCBhbHNvIGFkZCB0aGUgd2hvbGUKIAkJCSAqIGdlbmVyaWMgZXhwcmVzc2lvbiB0byAidGFy Z2V0Ii4KIAkJCSAqLwogCQkJcmV0dXJuIGZhbHNlOwpAQCAtMzEyOCw3ICszMTI5LDcgQEAgaXNf dmFyX2luX2FnZ3JlZl9vbmx5KFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhcikKIAlmb3JlYWNo KGxjLCByb290LT5hZ2dfY2xhdXNlX2xpc3QpCiAJewogCQlBZ2dDbGF1c2VJbmZvICphY19pbmZv ID0gbGZpcnN0X25vZGUoQWdnQ2xhdXNlSW5mbywgbGMpOwotCQlMaXN0CQkgICp2YXJzOworCQlM aXN0CSAgICp2YXJzOwogCiAJCUFzc2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsK IApAQCAtMzE4OCw5ICszMTg5LDkgQEAgaXNfdmFyX25lZWRlZF9ieV9qb2luKFBsYW5uZXJJbmZv ICpyb290LCBWYXIgKnZhciwgUmVsT3B0SW5mbyAqcmVsLAogCWF0dG5vID0gdmFyLT52YXJhdHRu byAtIGJhc2VyZWwtPm1pbl9hdHRyOwogCiAJLyoKLQkgKiBJZiB0aGUgYmFzZXJlbCB0aGlzIFZh ciBiZWxvbmdzIHRvIGNhbiBiZSBudWxsZWQgYnkgb3V0ZXIgam9pbnMgdGhhdCBhcmUKLQkgKiBh Ym92ZSB0aGUgY3VycmVudCByZWwsIHRoZW4gaXQgaXMgbm90IHNhZmUgdG8gdXNlIHRoaXMgVmFy IGFzIGEgZ3JvdXBpbmcKLQkgKiBrZXkgYXQgY3VycmVudCByZWwgbGV2ZWwuCisJICogSWYgdGhl IGJhc2VyZWwgdGhpcyBWYXIgYmVsb25ncyB0byBjYW4gYmUgbnVsbGVkIGJ5IG91dGVyIGpvaW5z IHRoYXQKKwkgKiBhcmUgYWJvdmUgdGhlIGN1cnJlbnQgcmVsLCB0aGVuIGl0IGlzIG5vdCBzYWZl IHRvIHVzZSB0aGlzIFZhciBhcyBhCisJICogZ3JvdXBpbmcga2V5IGF0IGN1cnJlbnQgcmVsIGxl dmVsLgogCSAqLwogCSpzYWZlX3RvX3B1c2ggPSBibXNfaXNfc3Vic2V0KGJhc2VyZWwtPm51bGxp bmdfcmVsaWRzLCByZWwtPnJlbGlkcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggNGNlNzBm MjU2ZC4uZTMyZDk2NzY5YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTI5MSw3ICsyOTEsNyBA QCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkgKiBqb2luX3JlbF9saXN0IGlzIGEgbGlzdCBvZiBhbGwg am9pbi1yZWxhdGlvbiBSZWxPcHRJbmZvcyB3ZSBoYXZlCiAJICogY29uc2lkZXJlZCBpbiB0aGlz IHBsYW5uaW5nIHJ1bi4KIAkgKi8KLQlSZWxJbmZvTGlzdCAqam9pbl9yZWxfbGlzdDsJLyogbGlz dCBvZiBqb2luLXJlbGF0aW9uIFJlbE9wdEluZm9zICovCisJUmVsSW5mb0xpc3QgKmpvaW5fcmVs X2xpc3Q7IC8qIGxpc3Qgb2Ygam9pbi1yZWxhdGlvbiBSZWxPcHRJbmZvcyAqLwogCiAJLyoKIAkg KiBXaGVuIGRvaW5nIGEgZHluYW1pYy1wcm9ncmFtbWluZy1zdHlsZSBqb2luIHNlYXJjaCwgam9p bl9yZWxfbGV2ZWxba10KQEAgLTQzNSw3ICs0MzUsNyBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAkg KiBVcHBlci1yZWwgUmVsT3B0SW5mb3MuIFVzZSBmZXRjaF91cHBlcl9yZWwoKSB0byBnZXQgYW55 IHBhcnRpY3VsYXIKIAkgKiB1cHBlciByZWwuCiAJICovCi0JUmVsSW5mb0xpc3QJCXVwcGVyX3Jl bHNbVVBQRVJSRUxfRklOQUwgKyAxXSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOwor CVJlbEluZm9MaXN0IHVwcGVyX3JlbHNbVVBQRVJSRUxfRklOQUwgKyAxXSBwZ19ub2RlX2F0dHIo cmVhZF93cml0ZV9pZ25vcmUpOwogCiAJLyoKIAkgKiBsaXN0IG9mIGdyb3VwZWQgcmVsYXRpb24g UmVsQWdnSW5mb3MuIE9uZSBpbnN0YW5jZSBvZiBSZWxBZ2dJbmZvIHBlcgpAQCAtMTE0NywxMCAr MTE0NywxMCBAQCB0eXBlZGVmIHN0cnVjdCBSZWxBZ2dJbmZvCiAJc3RydWN0IFBhdGhUYXJnZXQg KmFnZ19pbnB1dDsKIAogCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgaW5wdXQgdHVwbGVzIGZvciB0 aGUgZ3JvdXBlZCBwYXRocyAqLwotCUNhcmRpbmFsaXR5CQlpbnB1dF9yb3dzOworCUNhcmRpbmFs aXR5IGlucHV0X3Jvd3M7CiAKLQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMg b2YgdGhlIGdyb3VwZWQgcmVsYXRpb24qLwotCUNhcmRpbmFsaXR5CQlncm91cGVkX3Jvd3M7CisJ LyogZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVzIG9mIHRoZSBncm91cGVkIHJlbGF0 aW9uICovCisJQ2FyZGluYWxpdHkgZ3JvdXBlZF9yb3dzOwogCiAJLyogYSBsaXN0IG9mIFNvcnRH cm91cENsYXVzZSdzICovCiAJTGlzdAkgICAqZ3JvdXBfY2xhdXNlczsKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggZTZjMWNhZjY0OS4uNDAxOWE1ZmVlOSAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTQxLDYgKzQxLDcgQEAgQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YQogQWZ0ZXJU cmlnZ2Vyc1RyYW5zRGF0YQogQWdnCiBBZ2dDbGF1c2VDb3N0cworQWdnQ2xhdXNlSW5mbwogQWdn SW5mbwogQWdnUGF0aAogQWdnU3BsaXQKQEAgLTEwNTgsNiArMTA1OSw3IEBAIEdyYW50VGFyZ2V0 VHlwZQogR3JvdXAKIEdyb3VwQnlPcmRlcmluZwogR3JvdXBDbGF1c2UKK0dyb3VwRXhwckluZm8K IEdyb3VwUGF0aAogR3JvdXBQYXRoRXh0cmFEYXRhCiBHcm91cFJlc3VsdFBhdGgKQEAgLTIzNjQs MTIgKzIzNjYsMTQgQEAgUmVpbmRleE9iamVjdFR5cGUKIFJlaW5kZXhQYXJhbXMKIFJlaW5kZXhT dG10CiBSZWluZGV4VHlwZQorUmVsQWdnSW5mbwogUmVsRmlsZUxvY2F0b3IKIFJlbEZpbGVMb2Nh dG9yQmFja2VuZAogUmVsRmlsZU51bWJlcgogUmVsSWRDYWNoZUVudAogUmVsSW5mbwogUmVsSW5m b0FycgorUmVsSW5mb0xpc3QKIFJlbE1hcEZpbGUKIFJlbE1hcHBpbmcKIFJlbE9wdEluZm8KLS0g CjIuNDMuMAoK --000000000000949c11061c53a1d6--