Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vgeMX-00Glv5-0N for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Jan 2026 07:35:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vgeMV-0023xF-36 for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Jan 2026 07:35:16 +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.96) (envelope-from ) id 1vgeMV-0023ws-0Z for pgsql-hackers@lists.postgresql.org; Fri, 16 Jan 2026 07:35:15 +0000 Received: from mail-vs1-xe35.google.com ([2607:f8b0:4864:20::e35]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vgeMR-000iW7-1V for pgsql-hackers@postgresql.org; Fri, 16 Jan 2026 07:35:14 +0000 Received: by mail-vs1-xe35.google.com with SMTP id ada2fe7eead31-5ec838c33e6so887670137.0 for ; Thu, 15 Jan 2026 23:35:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768548911; x=1769153711; darn=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=W+gljrV8ds+r7rcvr61aX99RTbMLRVSScdvFZQ9yuv4=; b=PaFh5pDDaAdBFN6+nX4aFcheG4Y/87DR8xGC4QWmccxJD80wpfGuCbVOYwWffqzWot ePCmeynGdFGg5vrpTyY90ETrbUpwbmRmQtOzta1ylt3hqtymV3GV5yIKXUn2eSoqvEzQ Skko+sI8SIdpsJ9IdY8diMZl4FJMtJ6sEJHhMayYf6Xe7Ov7EIvfXoV2W2dU5cLyxMSs WA07T+UrQnT3iKFz2vGq/aAgnG4MBl8oQ+r8Zzy0VcoByV5ioXRv506P3m8XRetoK6pu l+jM8ILJ2mDgTYUf4F0mNTfG8Jj1uzix4lx2dqbMU6CP7NGj8sDiaDghOFl8FfJByPZ4 L+1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768548911; x=1769153711; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=W+gljrV8ds+r7rcvr61aX99RTbMLRVSScdvFZQ9yuv4=; b=FbTs6xXNgFOopie7HXgPghnSIZ+KWYd8qfcRawWjzvsMY2Q6GXJKrRgDke1oLcXeGX +IDuTgo5KeZm4wfkwssfTooDWn8ViL2vnQnNuG/ApfeA6plbJ+WorimZiMvdNeDRv418 ma12EZ0lZKXx8ubPxAF2tWw2RMI+XDQUBNyXeEVP37ByBN2hHdBqxjtsdwAPAY3oXAD7 QtaihC1hZAnyL6cm5kPx8qcvyYNg0SpjwUzXcH3zxN2PkX27aGt3StpiiI+23QYNBvLN az/XUiS4NlKSrYDE9/LXxUlPha2qdI5Gr2/iOlm348mLZyKUPFS6up+0C6+PeTaZMyQy peLA== X-Gm-Message-State: AOJu0YzfBqtx7xEjVpHNYo6vO6IUWku260AHbE39MmlIehrbzl6tM5/w tg9AXB8DK3CLOsghVPukeMUjn94QqvY4Pp0z99Mai5l2v0oVES4GCzN1Gq8aD7eiclM1M4jwu8i mCeG3s/an7AUVcJSTgVZSs6zXuhxoFgc= X-Gm-Gg: AY/fxX6dEsGuIIEX0Bf2vqrw5rM7C5eO4rXcWjiUJvsIRpWuaH40P+OorJqlXNcQSoy 7ROM2Z91A3R+TlVB45Kk1PvitfF+rjHam4YRBDeTvpLl1u7/DhfkAOMQcgnzWVzxks+sVwv6Mj5 sNUdDD/Vtq5RiUsagbaAGDgj/uYMPJ3fpDzs13rCRWsLjBMFhAPI9H6kp/py4rkRVkv1gbvP+Jm uu01j62s4A6af4KaDl2gGpHEpHGNWcUr1kz7rXyiLXEPdLuEIQ2wlszkZWaZOPMgKICxU7pLWTC GCZIF0fd+L1LSW8rD4Jb9cJLE7U+Tn8bycInyZhsuMmKxIHkpIwcSBtE3oYr6wyr0/D4RVpq02v hWbDbT1xKyc6B3RNDZW/B2k18YNm8lPR1wzMvkrFDyQQhOmAUe+RXPupFYt7AvMvHKeAkm8VzDc 2XySGgGs8V X-Received: by 2002:a05:6102:3748:b0:5db:3c3b:7767 with SMTP id ada2fe7eead31-5f1a558f76fmr720306137.16.1768548911389; Thu, 15 Jan 2026 23:35:11 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Fri, 16 Jan 2026 15:34:35 +0800 X-Gm-Features: AZwV_QjRiSKqIsGcUvNK0F2BFfqPp8ZbcXSTBnby68Kb1uBM-jm6gtk7Z3a3ugs Message-ID: Subject: Re: CREATE TABLE LIKE INCLUDING TRIGGERS To: Andrey Borodin Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a1bc5306487c6167" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a1bc5306487c6167 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jan 2, 2026 at 5:25=E2=80=AFPM Andrey Borodin wrote: > > + char *trigcomment; /* comment to apply to trigger, or NULL */ > No other Create*Stmt has a comment field. Comments seem to be handled thr= ough separate CommentStmt creation. > See CreateStatsStmt.stxcomment, IndexStmt.idxcomment. We need CreateTrigStmt.trigcomment, because if INCLUDING COMMENTS is specif= ied, CreateTrigStmt.trigcomment can be used to hold the source object's comments= . > Some nitpicking about tests: > 1. INSTEAD OF triggers on views - The error is tested, but should also te= st that statement-level VIEW triggers work ok. test added. > 2. Triggers on partitioned tables - What happens when you LIKE a partitio= ned table? Are partition triggers cloned? no. only the trigger on the partitioned table itself will be cloned. see tests ``create table parted_constr_copy (like parted_constr including all);`` > 3. Cross-schema trigger functions - The function name reconstruction hand= les schemas, but is it tested? > ok. test added. > + funcname =3D list_make2(makeString(schemaname),makeString(NameStr(procf= orm->proname))); > Other NameStr() are pstrdup()'d, maybe let's pstrdup() this too? > ok. > + /* Reconstruct trigger old transition table */ > Second instance of this comment is wrong. > ok. > + PG_KEYWORD("triggers", TRIGGERS, UNRESERVED_KEYWORD, BARE_LABEL) > Won't this break some user SQLs? it's marked as an un-reserved word, so it won't break any SQL, i think. v4-0001, v4-0002 was removed, as Robert said in [1], now I am using the same ugly hack consistently, now code is more aligned with INCLUDING INDEXES, INCLUDI= NG STATISTICS. pstrdup have been used in more places in generateClonedTriggerStmt. -- jian https://www.enterprisedb.com/ --000000000000a1bc5306487c6167 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0001-CREATE-TABLE-LIKE-INCLUDING-TRIGGERS.patch" Content-Disposition: attachment; filename="v5-0001-CREATE-TABLE-LIKE-INCLUDING-TRIGGERS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkgkc04s0 RnJvbSBhODNlMTYwMmE3MDY3M2E2ZjhhYjkwZGQwYzA4ZjFiMjA2ZjBmNDA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTYgSmFuIDIwMjYgMTU6MzE6MzMgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 IDEvMV0gQ1JFQVRFIFRBQkxFIExJS0UgSU5DTFVESU5HIFRSSUdHRVJTCgpUaGlzIHdpbGwgY29w eSBhbGwgc291cmNlIHRhYmxlJ3MgdHJpZ2dlciB0byB0aGUgbmV3IHRhYmxlLiBUaGlzIGZ1bmN0 aW9uYWxpdHkKYWxzbyBleHRlbmRzIHRvIENSRUFURSBGT1JFSUdOIFRBQkxFIExJS0Ugc3RhdGVt ZW50cy4KCkludGVybmFsIHRyaWdnZXIgKHN1Y2ggYXMgZm9yZWlnbiBrZXkgYXNzb2NpYXRlZCB0 cmlnZ2VyKSB3b24ndCBiZWluZyBjb3BpZWQgdG8KbmV3IHRhYmxlLiAgSG93ZXZlciB0aGlzIGNv bW1hbmQgd2lsbCBmYWlsIGlmIHRoZSBzb3VyY2UgdGFibGUncyB0cmlnZ2VyIGNvbnRhaW4Kd2hv bGUtcm93IHJlZmVyZW5jZS4KCklmIElOQ0xVRElORyBDT01NRU5UUyBpcyBzcGVjaWZpZWQsIHRy aWdnZXIgY29tbWVudHMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIG5ldwp0YWJsZS4KCmRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDSnVmeEhKQXIyRmpiZUI2Z2hnXy1ONWR4WDVKVm5q S1NMT1V4T3l0NFRlYUFXUWtnQG1haWwuZ21haWwuY29tCmNvbW1pdGZlc3Q6IGh0dHBzOi8vY29t bWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC82MDg3Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfZm9yZWlnbl90YWJsZS5zZ21sICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJp Z2dlci5jICAgICAgICAgICAgICAgIHwgMjMwICsrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAgMzcgKystCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy90cmlnZ2VyLmggICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQgICAgfCAgMTAgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90cmlnZ2Vycy5vdXQgICAgICAgIHwgMTMwICsrKysrKysrKy0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZV9saWtlLnNxbCAgICB8ICAgNyArCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC90cmlnZ2Vycy5zcWwgICAgICAgICAgICAgfCAgNjcgKysrKy0KIDE0IGZpbGVzIGNo YW5nZWQsIDUxOSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNnbWwKaW5kZXggMDhhOGNlZWFlNzUuLjY4ZDA2MDhi MGEzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZm9yZWlnbl90YWJsZS5zZ21sCkBAIC02 MCw3ICs2MCw3IEBAIENSRUFURSBGT1JFSUdOIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lCiAKIDxwaHJhc2U+YW5kIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5saWtlX29wdGlvbjwvcmVwbGFjZWFibGU+IGlzOjwv cGhyYXNlPgogCi17IElOQ0xVRElORyB8IEVYQ0xVRElORyB9IHsgQ09NTUVOVFMgfCBDT05TVFJB SU5UUyB8IERFRkFVTFRTIHwgR0VORVJBVEVEIHwgU1RBVElTVElDUyB8IEFMTCB9Cit7IElOQ0xV RElORyB8IEVYQ0xVRElORyB9IHsgQ09NTUVOVFMgfCBDT05TVFJBSU5UUyB8IERFRkFVTFRTIHwg R0VORVJBVEVEIHwgU1RBVElTVElDUyB8IFRSSUdHRVJTIHwgQUxMIH0KIAogPHBocmFzZT5hbmQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBs YWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKQEAgLTI4NCw2ICsyODQsMTUgQEAgV0lUSCAoIE1PRFVM VVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFj ZWFibGU+LCBSRU0KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPklOQ0xVRElO RyBUUklHR0VSUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg IDxwYXJhPgorICAgICAgICAgIEFsbCBub24taW50ZXJuYWwgdHJpZ2dlcnMgYXJlIGNvcGllZCB0 byB0aGUgbmV3IHRhYmxlLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAg PHRlcm0+PGxpdGVyYWw+SU5DTFVESU5HIEFMTDwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgIDxs aXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4IDc3YzVhNzYzZDQ1Li5j NmEwZjZkYWU5YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC04OCw3ICs4OCw3 IEBAIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0g WyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5saWtlX29wdGlvbjwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgog Ci17IElOQ0xVRElORyB8IEVYQ0xVRElORyB9IHsgQ09NTUVOVFMgfCBDT01QUkVTU0lPTiB8IENP TlNUUkFJTlRTIHwgREVGQVVMVFMgfCBHRU5FUkFURUQgfCBJREVOVElUWSB8IElOREVYRVMgfCBT VEFUSVNUSUNTIHwgU1RPUkFHRSB8IEFMTCB9Cit7IElOQ0xVRElORyB8IEVYQ0xVRElORyB9IHsg Q09NTUVOVFMgfCBDT01QUkVTU0lPTiB8IENPTlNUUkFJTlRTIHwgREVGQVVMVFMgfCBHRU5FUkFU RUQgfCBJREVOVElUWSB8IElOREVYRVMgfCBTVEFUSVNUSUNTIHwgU1RPUkFHRSB8IFRSSUdHRVJT IHwgQUxMIH0KIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKQEAgLTY3Miw3 ICs2NzIsNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgICA8dGVybT48bGl0ZXJh bD5JTkNMVURJTkcgQ09NTUVOVFM8L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+ CiAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICBDb21tZW50cyBmb3IgdGhlIGNvcGllZCBjb2x1 bW5zLCBjb25zdHJhaW50cywgYW5kIGluZGV4ZXMgd2lsbCBiZQorICAgICAgICAgIENvbW1lbnRz IGZvciB0aGUgY29waWVkIGNvbHVtbnMsIGNvbnN0cmFpbnRzLCBpbmRleGVzIGFuZCB0cmlnZ2Vy cyB3aWxsIGJlCiAgICAgICAgICAgY29waWVkLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8g ZXhjbHVkZSBjb21tZW50cywgcmVzdWx0aW5nIGluCiAgICAgICAgICAgdGhlIGNvcGllZCBjb2x1 bW5zIGFuZCBjb25zdHJhaW50cyBpbiB0aGUgbmV3IHRhYmxlIGhhdmluZyBubwogICAgICAgICAg IGNvbW1lbnRzLgpAQCAtNzc2LDYgKzc3NiwxNSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQog ICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICAgPHZh cmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLWxpa2Utb3B0LXRyaWdnZXJzIj4K KyAgICAgICAgPHRlcm0+PGxpdGVyYWw+SU5DTFVESU5HIFRSSUdHRVJTPC9saXRlcmFsPjwvdGVy bT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgQWxsIG5v bi1pbnRlcm5hbCB0cmlnZ2VycyBvbiB0aGUgb3JpZ2luYWwgdGFibGUgd2lsbCBiZSBjcmVhdGVk IG9uIHRoZSBuZXcgdGFibGUuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwt Y3JlYXRldGFibGUtcGFybXMtbGlrZS1vcHQtYWxsIj4KICAgICAgICAgPHRlcm0+PGxpdGVyYWw+ SU5DTFVESU5HIEFMTDwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXguYwppbmRleCA0M2RlNDJjZTM5ZS4uYjBiNWE4ODZmYTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK QEAgLTIwMzcsNiArMjAzNyw4IEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IHRydWU7CiAJCXRyaWdnZXItPmlu aXRkZWZlcnJlZCA9IGluaXRkZWZlcnJlZDsKIAkJdHJpZ2dlci0+Y29uc3RycmVsID0gTlVMTDsK KwkJdHJpZ2dlci0+dHJpZ2NvbW1lbnQgPSBOVUxMOworCQl0cmlnZ2VyLT50cmFuc2Zvcm1lZCA9 IHRydWU7CiAKIAkJKHZvaWQpIENyZWF0ZVRyaWdnZXIodHJpZ2dlciwgTlVMTCwgUmVsYXRpb25H ZXRSZWxpZChoZWFwUmVsYXRpb24pLAogCQkJCQkJCSBJbnZhbGlkT2lkLCBjb25PaWQsIGluZGV4 UmVsYXRpb25JZCwgSW52YWxpZE9pZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZjk3 NmMwZTVjN2UuLjZhMjVmNmI3NTUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTM4 NjQsNiArMTM4NjQsOCBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxPaWQsIE9pZCBy ZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOwogCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9 IE5VTEw7CisJZmtfdHJpZ2dlci0+dHJpZ2NvbW1lbnQgPSBOVUxMOworCWZrX3RyaWdnZXItPnRy YW5zZm9ybWVkID0gdHJ1ZTsKIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmln Z2VyLCBOVUxMLCBteVJlbE9pZCwgcmVmUmVsT2lkLAogCQkJCQkJCQljb25zdHJhaW50T2lkLCBp bmRleE9pZCwgSW52YWxpZE9pZCwKQEAgLTEzOTA5LDYgKzEzOTExLDggQEAgY3JlYXRlRm9yZWln bktleUFjdGlvblRyaWdnZXJzKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWlu dCAqZmtjb25zdHIKIAlma190cmlnZ2VyLT53aGVuQ2xhdXNlID0gTlVMTDsKIAlma190cmlnZ2Vy LT50cmFuc2l0aW9uUmVscyA9IE5JTDsKIAlma190cmlnZ2VyLT5jb25zdHJyZWwgPSBOVUxMOwor CWZrX3RyaWdnZXItPnRyaWdjb21tZW50ID0gTlVMTDsKKwlma190cmlnZ2VyLT50cmFuc2Zvcm1l ZCA9IHRydWU7CiAKIAlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKIAl7CkBA IC0xMzk2OSw2ICsxMzk3Myw4IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhPaWQg bXlSZWxPaWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyCiAJZmtfdHJpZ2dl ci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dlci0+dHJhbnNpdGlvblJlbHMgPSBOSUw7 CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVMTDsKKwlma190cmlnZ2VyLT50cmlnY29tbWVu dCA9IE5VTEw7CisJZmtfdHJpZ2dlci0+dHJhbnNmb3JtZWQgPSB0cnVlOwogCiAJc3dpdGNoIChm a2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCiAJewpAQCAtMjA5MTksNiArMjA5MjUsOCBAQCBD bG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24oUmVsYXRpb24gcGFyZW50LCBSZWxhdGlvbiBwYXJ0 aXRpb24pCiAJCXRyaWdTdG10LT5kZWZlcnJhYmxlID0gdHJpZ0Zvcm0tPnRnZGVmZXJyYWJsZTsK IAkJdHJpZ1N0bXQtPmluaXRkZWZlcnJlZCA9IHRyaWdGb3JtLT50Z2luaXRkZWZlcnJlZDsKIAkJ dHJpZ1N0bXQtPmNvbnN0cnJlbCA9IE5VTEw7IC8qIHBhc3NlZCBzZXBhcmF0ZWx5ICovCisJCXRy aWdTdG10LT50cmlnY29tbWVudCA9IE5VTEw7CisJCXRyaWdTdG10LT50cmFuc2Zvcm1lZCA9IHRy dWU7CiAKIAkJQ3JlYXRlVHJpZ2dlckZpcmluZ09uKHRyaWdTdG10LCBOVUxMLCBSZWxhdGlvbkdl dFJlbGlkKHBhcnRpdGlvbiksCiAJCQkJCQkJICB0cmlnRm9ybS0+dGdjb25zdHJyZWxpZCwgSW52 YWxpZE9pZCwgSW52YWxpZE9pZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Ry aWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCBkMzBmZGE2NjBl Yi4uMjg4MjkxMzA0YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTMwLDYgKzMwLDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdn ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9j b21tZW50LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC01ODksMTMgKzU5MCwy MSBAQCBDcmVhdGVUcmlnZ2VyRmlyaW5nT24oQ3JlYXRlVHJpZ1N0bXQgKnN0bXQsIGNvbnN0IGNo YXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCQkJCQkgICBmYWxzZSwgZmFsc2UpOwogCQlhZGROU0l0 ZW1Ub1F1ZXJ5KHBzdGF0ZSwgbnNpdGVtLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CiAKLQkJLyogVHJh bnNmb3JtIGV4cHJlc3Npb24uICBDb3B5IHRvIGJlIHN1cmUgd2UgZG9uJ3QgbW9kaWZ5IG9yaWdp bmFsICovCi0JCXdoZW5DbGF1c2UgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsCi0JCQkJ CQkJCQkJICBjb3B5T2JqZWN0KHN0bXQtPndoZW5DbGF1c2UpLAotCQkJCQkJCQkJCSAgRVhQUl9L SU5EX1RSSUdHRVJfV0hFTiwKLQkJCQkJCQkJCQkgICJXSEVOIik7Ci0JCS8qIHdlIGhhdmUgdG8g Zml4IGl0cyBjb2xsYXRpb25zIHRvbyAqLwotCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0 ZSwgd2hlbkNsYXVzZSk7CisJCWlmIChzdG10LT50cmFuc2Zvcm1lZCkKKwkJCXdoZW5DbGF1c2Ug PSBzdG10LT53aGVuQ2xhdXNlOworCQllbHNlCisJCXsKKwkJCS8qIFRyYW5zZm9ybSBleHByZXNz aW9uLiAgQ29weSB0byBiZSBzdXJlIHdlIGRvbid0IG1vZGlmeSBvcmlnaW5hbCAqLworCQkJd2hl bkNsYXVzZSA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJICBjb3B5 T2JqZWN0KHN0bXQtPndoZW5DbGF1c2UpLAorCQkJCQkJCQkJCQkgIEVYUFJfS0lORF9UUklHR0VS X1dIRU4sCisJCQkJCQkJCQkJCSAgIldIRU4iKTsKKworCQkJLyogd2UgaGF2ZSB0byBmaXggaXRz IGNvbGxhdGlvbnMgdG9vICovCisJCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgd2hl bkNsYXVzZSk7CisKKwkJCXN0bXQtPnRyYW5zZm9ybWVkID0gdHJ1ZTsKKwkJfQogCiAJCS8qCiAJ CSAqIENoZWNrIGZvciBkaXNhbGxvd2VkIHJlZmVyZW5jZXMgdG8gT0xEL05FVy4KQEAgLTEyMDQs NiArMTIxMywxMSBAQCBDcmVhdGVUcmlnZ2VyRmlyaW5nT24oQ3JlYXRlVHJpZ1N0bXQgKnN0bXQs IGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCS8qIEtlZXAgbG9jayBvbiB0YXJnZXQgcmVsIHVu dGlsIGVuZCBvZiB4YWN0ICovCiAJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCisJLyogQWRk IGFueSByZXF1ZXN0ZWQgY29tbWVudCAqLworCWlmIChzdG10LT50cmlnY29tbWVudCAhPSBOVUxM KQorCQlDcmVhdGVDb21tZW50cyh0cmlnb2lkLCBUcmlnZ2VyUmVsYXRpb25JZCwgMCwKKwkJCQkJ ICAgc3RtdC0+dHJpZ2NvbW1lbnQpOworCiAJcmV0dXJuIG15c2VsZjsKIH0KIApAQCAtNjcxNSwz ICs2NzI5LDIwNSBAQCBjaGVja19tb2RpZmllZF92aXJ0dWFsX2dlbmVyYXRlZChUdXBsZURlc2Mg dHVwZGVzYywgSGVhcFR1cGxlIHR1cGxlKQogCiAJcmV0dXJuIHR1cGxlOwogfQorCisvKgorICog RHVwbGljYXRlIHRoZSB0cmlnZ2VyIGRlZmluaXRpb24gZm9yIHRoZSBuZXcgcmVsYXRpb246IFVz ZSB0aGUgc291cmNlIHRyaWdnZXIKKyAqIChzb3VyY2VfdHJpZ2lkIGZyb20gc291cmNlX3JlbCkg dG8gaW5pdGlhbGl6ZSBhIENyZWF0ZVRyaWdTdG10IGZvciB0aGUgdGFyZ2V0CisgKiByZWxhdGlv biAoaGVhcFJlbCkuCisgKgorICogQXR0cmlidXRlIG51bWJlcnMgaW4gZXhwcmVzc2lvbiBWYXJz IGFyZSBhZGp1c3RlZCBhY2NvcmRpbmcgdG8gYXR0bWFwLgorICovCitDcmVhdGVUcmlnU3RtdCAq CitnZW5lcmF0ZUNsb25lZFRyaWdnZXJTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBPaWQgc291cmNl X3RyaWdpZCwKKwkJCQkJCSAgUmVsYXRpb24gc291cmNlX3JlbCwgY29uc3QgQXR0ck1hcCAqYXR0 bWFwKQoreworCUhlYXBUdXBsZQl0cmlnZ2VyVHVwbGU7CisJSGVhcFR1cGxlCXByb2N0dXA7CisJ Rm9ybV9wZ190cmlnZ2VyIHRyaWdGb3JtOworCUZvcm1fcGdfcHJvYyBwcm9jZm9ybTsKKwlSZWxh dGlvbglwZ190cmlnZ2VyOworCVJhbmdlVmFyICAgKmNvbnN0cnJlbCA9IE5VTEw7CisJU3lzU2Nh bkRlc2MgdGdzY2FuOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJRGF0dW0JCXZhbHVlOworCWJv b2wJCWlzbnVsbDsKKwlOb2RlCSAgICpxdWFsID0gTlVMTDsKKwlMaXN0CSAgICp0cmlnYXJncyA9 IE5JTDsKKwlMaXN0CSAgICpjb2xzID0gTklMOworCUxpc3QJICAgKmZ1bmNuYW1lID0gTklMOwor CUxpc3QJICAgKnRyYW5zaXRpb25SZWxzID0gTklMOworCWNoYXIJICAgKmZ1bmNzY2hlbWE7CisJ Q3JlYXRlVHJpZ1N0bXQgKnRyaWdTdG10OworCisJcGdfdHJpZ2dlciA9IHRhYmxlX29wZW4oVHJp Z2dlclJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBGaW5kIHRoZSB0cmlnZ2Vy IHRvIGNvcHkgKi8KKwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3RyaWdnZXJf b2lkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdl dERhdHVtKHNvdXJjZV90cmlnaWQpKTsKKworCXRnc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihw Z190cmlnZ2VyLCBUcmlnZ2VyT2lkSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkJTlVMTCwgMSwgc2tl eSk7CisKKwl0cmlnZ2VyVHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHRnc2Nhbik7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHRyaWdnZXJUdXBsZSkpCisJCWVsb2coRVJST1IsICJjb3VsZCBub3Qg ZmluZCB0dXBsZSBmb3IgdHJpZ2dlciAldSIsIHNvdXJjZV90cmlnaWQpOworCisJdHJpZ0Zvcm0g PSAoRm9ybV9wZ190cmlnZ2VyKSBHRVRTVFJVQ1QodHJpZ2dlclR1cGxlKTsKKworCS8qIFJlY29u c3RydWN0IHRyaWdnZXIgZnVuY3Rpb24gU3RyaW5nIGxpc3QgKi8KKwlwcm9jdHVwID0gU2VhcmNo U3lzQ2FjaGUxKFBST0NPSUQsIE9iamVjdElkR2V0RGF0dW0odHJpZ0Zvcm0tPnRnZm9pZCkpOwor CWlmICghSGVhcFR1cGxlSXNWYWxpZChwcm9jdHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1IiwgdHJpZ0Zvcm0tPnRnZm9pZCk7CisJcHJvY2Zv cm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCk7CisKKwlmdW5jc2NoZW1hID0g Z2V0X25hbWVzcGFjZV9uYW1lKHByb2Nmb3JtLT5wcm9uYW1lc3BhY2UpOworCWZ1bmNuYW1lID0g bGlzdF9tYWtlMihtYWtlU3RyaW5nKGZ1bmNzY2hlbWEpLAorCQkJCQkJICBtYWtlU3RyaW5nKHBz dHJkdXAoTmFtZVN0cihwcm9jZm9ybS0+cHJvbmFtZSkpKSk7CisJUmVsZWFzZVN5c0NhY2hlKHBy b2N0dXApOworCisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhIGNvbHVtbiBsaXN0LCB0cmFuc2Zvcm0g aXQgdG8gYSBsaXN0IG9mIGNvbHVtbiBuYW1lcy4gTm90ZQorCSAqIHdlIGRvbid0IG5lZWQgdG8g bWFwIHRoaXMgbGlzdCBpbiBhbnkgd2F5IC4uLgorCSAqLworCWlmICh0cmlnRm9ybS0+dGdhdHRy LmRpbTEgPiAwKQorCXsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCB0cmlnRm9ybS0+dGdhdHRyLmRp bTE7IGkrKykKKwkJeworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgY29sOworCisJCQljb2wgPSBUdXBs ZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3Ioc291cmNlX3JlbCksCisJCQkJCQkJCXRyaWdGb3Jt LT50Z2F0dHIudmFsdWVzW2ldIC0gMSk7CisJCQljb2xzID0gbGFwcGVuZChjb2xzLAorCQkJCQkJ ICAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoY29sLT5hdHRuYW1lKSkpKTsKKwkJfQorCX0K KworCS8qIFJlY29uc3RydWN0IHRyaWdnZXIgYXJndW1lbnRzIGxpc3QgKi8KKwlpZiAodHJpZ0Zv cm0tPnRnbmFyZ3MgPiAwKQorCXsKKwkJYnl0ZWEJICAgKnZhbDsKKwkJY2hhcgkgICAqcDsKKwor CQl2YWwgPSBEYXR1bUdldEJ5dGVhUFAoZmFzdGdldGF0dHIodHJpZ2dlclR1cGxlLAorCQkJCQkJ CQkJCSAgQW51bV9wZ190cmlnZ2VyX3RnYXJncywKKwkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0RGVz Y3IocGdfdHJpZ2dlciksCisJCQkJCQkJCQkJICAmaXNudWxsKSk7CisJCWlmIChpc251bGwpCisJ CQllbG9nKEVSUk9SLCAidGdhcmdzIGlzIG51bGwgaW4gdHJpZ2dlciBcIiVzXCIgZm9yIHJlbGF0 aW9uIFwiJXNcIiIsCisJCQkJIE5hbWVTdHIodHJpZ0Zvcm0tPnRnbmFtZSksCisJCQkJIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHNvdXJjZV9yZWwpKTsKKworCQlwID0gKGNoYXIgKikgVkFSREFU QV9BTlkodmFsKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IHRyaWdGb3JtLT50Z25hcmdzOyBp KyspCisJCXsKKwkJCXRyaWdhcmdzID0gbGFwcGVuZCh0cmlnYXJncywgbWFrZVN0cmluZyhwc3Ry ZHVwKHApKSk7CisJCQlwICs9IHN0cmxlbihwKSArIDE7CisJCX0KKwl9CisKKwkvKiBJZiB0aGUg dHJpZ2dlciBoYXMgYSBXSEVOIHF1YWxpZmljYXRpb24sIGFkZCB0aGF0ICovCisJdmFsdWUgPSBm YXN0Z2V0YXR0cih0cmlnZ2VyVHVwbGUsIEFudW1fcGdfdHJpZ2dlcl90Z3F1YWwsCisJCQkJCQlS ZWxhdGlvbkdldERlc2NyKHBnX3RyaWdnZXIpLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwl7 CisJCWJvb2wJCWZvdW5kX3dob2xlX3JvdzsKKworCQlxdWFsID0gc3RyaW5nVG9Ob2RlKFRleHRE YXR1bUdldENTdHJpbmcodmFsdWUpKTsKKworCQkvKiBBZGp1c3QgVmFycyB0byBtYXRjaCBuZXcg dGFibGUncyBjb2x1bW4gbnVtYmVyaW5nICovCisJCXF1YWwgPSBtYXBfdmFyaWFibGVfYXR0bm9z KHF1YWwsIFBSUzJfTkVXX1ZBUk5PLCAwLAorCQkJCQkJCQkgICBhdHRtYXAsCisJCQkJCQkJCSAg IEludmFsaWRPaWQsCisJCQkJCQkJCSAgICZmb3VuZF93aG9sZV9yb3cpOworCisJCS8qIEFzIGlu IGV4cGFuZFRhYmxlTGlrZUNsYXVzZSwgcmVqZWN0IHdob2xlLXJvdyB2YXJpYWJsZXMgKi8KKwkJ aWYgKGZvdW5kX3dob2xlX3JvdykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coImNhbm5vdCBjb252ZXJ0 IHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UiKSwKKwkJCQkJZXJyZGV0YWlsKCJUcmlnZ2VyIFwi JXNcIiBjb250YWlucyBhIHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UuIiwKKwkJCQkJCQkgIE5h bWVTdHIodHJpZ0Zvcm0tPnRnbmFtZSkpKTsKKworCQlxdWFsID0gbWFwX3ZhcmlhYmxlX2F0dG5v cyhxdWFsLCBQUlMyX09MRF9WQVJOTywgMCwKKwkJCQkJCQkJICAgYXR0bWFwLAorCQkJCQkJCQkg ICBJbnZhbGlkT2lkLAorCQkJCQkJCQkgICAmZm91bmRfd2hvbGVfcm93KTsKKworCQkvKiBBcyBp biBleHBhbmRUYWJsZUxpa2VDbGF1c2UsIHJlamVjdCB3aG9sZS1yb3cgdmFyaWFibGVzICovCisJ CWlmIChmb3VuZF93aG9sZV9yb3cpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgY29udmVy dCB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlIiksCisJCQkJCWVycmRldGFpbCgiVHJpZ2dlciBc IiVzXCIgY29udGFpbnMgYSB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlLiIsCisJCQkJCQkJICBO YW1lU3RyKHRyaWdGb3JtLT50Z25hbWUpKSk7CisJfQorCisJLyogUmVjb25zdHJ1Y3QgdHJpZ2dl ciBvbGQgdHJhbnNpdGlvbiB0YWJsZSAqLworCXZhbHVlID0gZmFzdGdldGF0dHIodHJpZ2dlclR1 cGxlLCBBbnVtX3BnX3RyaWdnZXJfdGdvbGR0YWJsZSwKKwkJCQkJCVJlbGF0aW9uR2V0RGVzY3Io cGdfdHJpZ2dlciksICZpc251bGwpOworCWlmICghaXNudWxsKQorCXsKKwkJVHJpZ2dlclRyYW5z aXRpb24gKm9sZCA9IG1ha2VOb2RlKFRyaWdnZXJUcmFuc2l0aW9uKTsKKworCQlvbGQtPmlzTmV3 ID0gZmFsc2U7CisJCW9sZC0+bmFtZSA9IHBzdHJkdXAoTmFtZVN0cigqRGF0dW1HZXROYW1lKHZh bHVlKSkpOworCQlvbGQtPmlzVGFibGUgPSB0cnVlOworCQl0cmFuc2l0aW9uUmVscyA9IGxhcHBl bmQodHJhbnNpdGlvblJlbHMsIG9sZCk7CisJfQorCisJLyogUmVjb25zdHJ1Y3QgdHJpZ2dlciBu ZXcgdHJhbnNpdGlvbiB0YWJsZSAqLworCXZhbHVlID0gZmFzdGdldGF0dHIodHJpZ2dlclR1cGxl LCBBbnVtX3BnX3RyaWdnZXJfdGduZXd0YWJsZSwKKwkJCQkJCVJlbGF0aW9uR2V0RGVzY3IocGdf dHJpZ2dlciksCisJCQkJCQkmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwl7CisJCVRyaWdnZXJU cmFuc2l0aW9uICpuZXcgPSBtYWtlTm9kZShUcmlnZ2VyVHJhbnNpdGlvbik7CisKKwkJbmV3LT5p c05ldyA9IHRydWU7CisJCW5ldy0+bmFtZSA9IHBzdHJkdXAoTmFtZVN0cigqRGF0dW1HZXROYW1l KHZhbHVlKSkpOworCQluZXctPmlzVGFibGUgPSB0cnVlOworCQl0cmFuc2l0aW9uUmVscyA9IGxh cHBlbmQodHJhbnNpdGlvblJlbHMsIG5ldyk7CisJfQorCisJLyogUmVjb25zdHJ1Y3QgdHJpZ2dl ciBjb25zdHJhaW50J3MgRlJPTSB0YWJsZSAqLworCWlmIChPaWRJc1ZhbGlkKHRyaWdGb3JtLT50 Z2NvbnN0cnJlbGlkKSkKKwl7CisJCS8qCisJCSAqIEFjcXVpcmUgdGhlIEFjY2Vzc1NoYXJlTG9j ayBsb2NrIG9uIHRnY29uc3RycmVsaWQgbm93LCBhcyBpdCB3aWxsCisJCSAqIGJlIHJlcXVpcmVk IGxhdGVyIGluIENyZWF0ZVRyaWdnZXJGaXJpbmdPbi4KKwkJICovCisJCUxvY2tSZWxhdGlvbk9p ZCh0cmlnRm9ybS0+dGdjb25zdHJyZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQljb25zdHJy ZWwgPQorCQkJbWFrZVJhbmdlVmFyKGdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFj ZSh0cmlnRm9ybS0+dGdjb25zdHJyZWxpZCkpLAorCQkJCQkJIGdldF9yZWxfbmFtZSh0cmlnRm9y bS0+dGdjb25zdHJyZWxpZCksCisJCQkJCQkgLTEpOworCX0KKworCXRyaWdTdG10ID0gbWFrZU5v ZGUoQ3JlYXRlVHJpZ1N0bXQpOworCXRyaWdTdG10LT5yZXBsYWNlID0gZmFsc2U7CisJdHJpZ1N0 bXQtPmlzY29uc3RyYWludCA9IE9pZElzVmFsaWQodHJpZ0Zvcm0tPnRnY29uc3RyYWludCk7CisJ dHJpZ1N0bXQtPnRyaWduYW1lID0gcHN0cmR1cChOYW1lU3RyKHRyaWdGb3JtLT50Z25hbWUpKTsK Kwl0cmlnU3RtdC0+cmVsYXRpb24gPSBoZWFwUmVsOworCXRyaWdTdG10LT5mdW5jbmFtZSA9IGZ1 bmNuYW1lOworCXRyaWdTdG10LT5hcmdzID0gdHJpZ2FyZ3M7CisJdHJpZ1N0bXQtPnJvdyA9IFRS SUdHRVJfRk9SX1JPVyh0cmlnRm9ybS0+dGd0eXBlKTsKKwl0cmlnU3RtdC0+dGltaW5nID0gdHJp Z0Zvcm0tPnRndHlwZSAmIFRSSUdHRVJfVFlQRV9USU1JTkdfTUFTSzsKKwl0cmlnU3RtdC0+ZXZl bnRzID0gdHJpZ0Zvcm0tPnRndHlwZSAmIFRSSUdHRVJfVFlQRV9FVkVOVF9NQVNLOworCXRyaWdT dG10LT5jb2x1bW5zID0gY29sczsKKwl0cmlnU3RtdC0+d2hlbkNsYXVzZSA9IHF1YWw7CisJdHJp Z1N0bXQtPnRyYW5zaXRpb25SZWxzID0gdHJhbnNpdGlvblJlbHM7CisJdHJpZ1N0bXQtPmRlZmVy cmFibGUgPSB0cmlnRm9ybS0+dGdkZWZlcnJhYmxlOworCXRyaWdTdG10LT5pbml0ZGVmZXJyZWQg PSB0cmlnRm9ybS0+dGdpbml0ZGVmZXJyZWQ7CisJdHJpZ1N0bXQtPmNvbnN0cnJlbCA9IGNvbnN0 cnJlbDsKKwl0cmlnU3RtdC0+dHJpZ2NvbW1lbnQgPSBOVUxMOworCXRyaWdTdG10LT50cmFuc2Zv cm1lZCA9IHRydWU7CisKKwlzeXN0YWJsZV9lbmRzY2FuKHRnc2Nhbik7CisJdGFibGVfY2xvc2Uo cGdfdHJpZ2dlciwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiB0cmlnU3RtdDsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CmluZGV4IDcxM2VlNWMxMGEyLi5lZTljYmJmYzZjNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC03 ODYsNyArNzg2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCVRBQkxFIFRBQkxFUyBU QUJMRVNBTVBMRSBUQUJMRVNQQUNFIFRBUkdFVCBURU1QIFRFTVBMQVRFIFRFTVBPUkFSWSBURVhU X1AgVEhFTgogCVRJRVMgVElNRSBUSU1FU1RBTVAgVE8gVFJBSUxJTkcgVFJBTlNBQ1RJT04gVFJB TlNGT1JNCi0JVFJFQVQgVFJJR0dFUiBUUklNIFRSVUVfUAorCVRSRUFUIFRSSUdHRVIgVFJJR0dF UlMgVFJJTSBUUlVFX1AKIAlUUlVOQ0FURSBUUlVTVEVEIFRZUEVfUCBUWVBFU19QCiAKIAlVRVND QVBFIFVOQk9VTkRFRCBVTkNPTkRJVElPTkFMIFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9O IFVOSVFVRSBVTktOT1dOCkBAIC00Mjk2LDYgKzQyOTYsNyBAQCBUYWJsZUxpa2VPcHRpb246CiAJ CQkJfCBJTkRFWEVTCQkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX0lOREVYRVM7IH0KIAkJCQl8 IFNUQVRJU1RJQ1MJCXsgJCQgPSBDUkVBVEVfVEFCTEVfTElLRV9TVEFUSVNUSUNTOyB9CiAJCQkJ fCBTVE9SQUdFCQkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX1NUT1JBR0U7IH0KKwkJCQl8IFRS SUdHRVJTCQkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX1RSSUdHRVJTOyB9CiAJCQkJfCBBTEwJ CQkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX0FMTDsgfQogCQk7CiAKQEAgLTYxNTAsNiArNjE1 MSw4IEBAIENyZWF0ZVRyaWdTdG10OgogCQkJCQluLT5kZWZlcnJhYmxlID0gZmFsc2U7CiAJCQkJ CW4tPmluaXRkZWZlcnJlZCA9IGZhbHNlOwogCQkJCQluLT5jb25zdHJyZWwgPSBOVUxMOworCQkJ CQluLT50cmlnY29tbWVudCA9IE5VTEw7CisJCQkJCW4tPnRyYW5zZm9ybWVkID0gZmFsc2U7CiAJ CQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCSAgfCBDUkVBVEUgb3B0X29yX3JlcGxhY2Ug Q09OU1RSQUlOVCBUUklHR0VSIG5hbWUgQUZURVIgVHJpZ2dlckV2ZW50cyBPTgpAQCAtNjIwMCw2 ICs2MjAzLDggQEAgQ3JlYXRlVHJpZ1N0bXQ6CiAJCQkJCQkJCSAgICZuLT5kZWZlcnJhYmxlLCAm bi0+aW5pdGRlZmVycmVkLCAmZHVtbXksCiAJCQkJCQkJCSAgIE5VTEwsIE5VTEwsIHl5c2Nhbm5l cik7CiAJCQkJCW4tPmNvbnN0cnJlbCA9ICQxMDsKKwkJCQkJbi0+dHJpZ2NvbW1lbnQgPSBOVUxM OworCQkJCQluLT50cmFuc2Zvcm1lZCA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQogCQk7CkBAIC0xODE5NCw2ICsxODE5OSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJ CXwgVFJBTlNBQ1RJT04KIAkJCXwgVFJBTlNGT1JNCiAJCQl8IFRSSUdHRVIKKwkJCXwgVFJJR0dF UlMKIAkJCXwgVFJVTkNBVEUKIAkJCXwgVFJVU1RFRAogCQkJfCBUWVBFX1AKQEAgLTE4ODQ3LDYg KzE4ODUzLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBUUkFOU0ZPUk0KIAkJCXwgVFJF QVQKIAkJCXwgVFJJR0dFUgorCQkJfCBUUklHR0VSUwogCQkJfCBUUklNCiAJCQl8IFRSVUVfUAog CQkJfCBUUlVOQ0FURQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggYjVmNGM3MjQ1 OWQuLmNhNDQ2ZDVlMmQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRp bGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTM5LDEy ICszOSwxNCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdnZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJj b21tYW5kcy90YWJsZWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisj aW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpA QCAtMTMyMSw3ICsxMzIzLDggQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRD b250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEKIAkJIENSRUFURV9U QUJMRV9MSUtFX0dFTkVSQVRFRCB8CiAJCSBDUkVBVEVfVEFCTEVfTElLRV9DT05TVFJBSU5UUyB8 CiAJCSBDUkVBVEVfVEFCTEVfTElLRV9JTkRFWEVTIHwKLQkJIENSRUFURV9UQUJMRV9MSUtFX1NU QVRJU1RJQ1MpKQorCQkgQ1JFQVRFX1RBQkxFX0xJS0VfU1RBVElTVElDUyB8CisJCSBDUkVBVEVf VEFCTEVfTElLRV9UUklHR0VSUykpCiAJewogCQl0YWJsZV9saWtlX2NsYXVzZS0+cmVsYXRpb25P aWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAkJY3h0LT5saWtlY2xhdXNlcyA9IGxh cHBlbmQoY3h0LT5saWtlY2xhdXNlcywgdGFibGVfbGlrZV9jbGF1c2UpOwpAQCAtMTYyNSw2ICsx NjI4LDM4IEBAIGV4cGFuZFRhYmxlTGlrZUNsYXVzZShSYW5nZVZhciAqaGVhcFJlbCwgVGFibGVM aWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYXVzZSkKIAkJbGlzdF9mcmVlKHBhcmVudF9leHRzdGF0 cyk7CiAJfQogCisJLyogUHJvY2VzcyB0cmlnZ2VycyBpZiByZXF1aXJlZCAqLworCWlmICgodGFi bGVfbGlrZV9jbGF1c2UtPm9wdGlvbnMgJiBDUkVBVEVfVEFCTEVfTElLRV9UUklHR0VSUykgJiYK KwkJcmVsYXRpb24tPnRyaWdkZXNjICE9IE5VTEwpCisJeworCQlib29sCQlpbmNsdWRlX2NvbW1l bnRzID0gKHRhYmxlX2xpa2VfY2xhdXNlLT5vcHRpb25zICYgQ1JFQVRFX1RBQkxFX0xJS0VfQ09N TUVOVFMpOworCisJCWZvciAoaW50IG50ID0gMDsgbnQgPCByZWxhdGlvbi0+dHJpZ2Rlc2MtPm51 bXRyaWdnZXJzOyBudCsrKQorCQl7CisJCQlUcmlnZ2VyICAgICp0cmlnID0gcmVsYXRpb24tPnRy aWdkZXNjLT50cmlnZ2VycyArIG50OworCQkJT2lkCQkJdHJpZ29pZCA9IHRyaWctPnRnb2lkOwor CQkJQ3JlYXRlVHJpZ1N0bXQgKnRyaWdfc3RtdDsKKworCQkJLyogV2UgZG8gbm90IGNvcHkgaW50 ZXJuYWwgdHJpZ2dlciB0byB0aGUgbmV3IHRhYmxlICovCisJCQlpZiAodHJpZy0+dGdpc2ludGVy bmFsKQorCQkJCWNvbnRpbnVlOworCisJCQl0cmlnX3N0bXQgPSBnZW5lcmF0ZUNsb25lZFRyaWdn ZXJTdG10KGhlYXBSZWwsIHRyaWdvaWQsCisJCQkJCQkJCQkJCQkgIHJlbGF0aW9uLCBhdHRtYXAp OworCisJCQkvKiBDb3B5IGNvbW1lbnQgb24gdHJpZ2dlciwgaWYgcmVxdWVzdGVkICovCisJCQlp ZiAoaW5jbHVkZV9jb21tZW50cykKKwkJCXsKKwkJCQljb21tZW50ID0gR2V0Q29tbWVudCh0cmln b2lkLCBUcmlnZ2VyUmVsYXRpb25JZCwgMCk7CisKKwkJCQkvKiBXZSBtYWtlIHVzZSBvZiBDcmVh dGVUcmlnU3RtdCdzIHRyaWdjb21tZW50IG9wdGlvbiAqLworCQkJCXRyaWdfc3RtdC0+dHJpZ2Nv bW1lbnQgPSBjb21tZW50OworCQkJfQorCisJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgdHJp Z19zdG10KTsKKwkJfQorCX0KKwogCS8qIERvbmUgd2l0aCBjaGlsZCByZWwgKi8KIAl0YWJsZV9j bG9zZShjaGlsZHJlbCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdHJpZ2dlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IGI2MDMx N2M3YTc1Li4yN2EwNDI2MmFjZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaApAQCAtMjY2LDYgKzI2 NiwxMCBAQCBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJCZWdpblN1YlhhY3Qodm9pZCk7CiBleHRl cm4gdm9pZCBBZnRlclRyaWdnZXJFbmRTdWJYYWN0KGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZv aWQgQWZ0ZXJUcmlnZ2VyU2V0U3RhdGUoQ29uc3RyYWludHNTZXRTdG10ICpzdG10KTsKIGV4dGVy biBib29sIEFmdGVyVHJpZ2dlclBlbmRpbmdPblJlbChPaWQgcmVsaWQpOworZXh0ZXJuIENyZWF0 ZVRyaWdTdG10ICpnZW5lcmF0ZUNsb25lZFRyaWdnZXJTdG10KFJhbmdlVmFyICpoZWFwUmVsLAor CQkJCQkJCQkJCQkJIE9pZCBzb3VyY2VfdHJpZ2lkLAorCQkJCQkJCQkJCQkJIFJlbGF0aW9uIHNv dXJjZV9yZWwsCisJCQkJCQkJCQkJCQkgY29uc3QgQXR0ck1hcCAqYXR0bWFwKTsKIAogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDY0NmQ2Y2VkNzYzLi41YzNkNTc5ODJkZSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaApAQCAtNzk1LDYgKzc5NSw3IEBAIHR5cGVkZWYgZW51bSBUYWJsZUxp a2VPcHRpb24KIAlDUkVBVEVfVEFCTEVfTElLRV9JTkRFWEVTID0gMSA8PCA2LAogCUNSRUFURV9U QUJMRV9MSUtFX1NUQVRJU1RJQ1MgPSAxIDw8IDcsCiAJQ1JFQVRFX1RBQkxFX0xJS0VfU1RPUkFH RSA9IDEgPDwgOCwKKwlDUkVBVEVfVEFCTEVfTElLRV9UUklHR0VSUyA9IDEgPDwgOSwKIAlDUkVB VEVfVEFCTEVfTElLRV9BTEwgPSBQR19JTlQzMl9NQVgKIH0gVGFibGVMaWtlT3B0aW9uOwogCkBA IC0zMTU0LDYgKzMxNTUsOSBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVUcmlnU3RtdAogCWJvb2wJ CWRlZmVycmFibGU7CQkvKiBbTk9UXSBERUZFUlJBQkxFICovCiAJYm9vbAkJaW5pdGRlZmVycmVk OwkvKiBJTklUSUFMTFkge0RFRkVSUkVEfElNTUVESUFURX0gKi8KIAlSYW5nZVZhciAgICpjb25z dHJyZWw7CQkvKiBvcHBvc2l0ZSByZWxhdGlvbiwgaWYgUkkgdHJpZ2dlciAqLworCWNoYXIJICAg KnRyaWdjb21tZW50OwkvKiBjb21tZW50IHRvIGFwcGx5IHRvIHRyaWdnZXIsIG9yIE5VTEwgKi8K Kwlib29sCQl0cmFuc2Zvcm1lZDsJLyogdHJ1ZSBtZWFucyBubyBuZWVkIGRvIHBhcnNlIGFuYWx5 c2lzIGZvcgkJCQkJCQkgKgorCQkJCQkJCQkgKiB3aGVuQ2xhdXNlICovCiB9IENyZWF0ZVRyaWdT dG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggZjc3 NTNjNWM4YTguLjAwYjg4MDNmNWFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC00NjQsNiArNDY0LDcg QEAgUEdfS0VZV09SRCgidHJhbnNhY3Rpb24iLCBUUkFOU0FDVElPTiwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidHJhbnNmb3JtIiwgVFJBTlNGT1JNLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0cmVhdCIsIFRSRUFULCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidHJpZ2dlciIsIFRSSUdH RVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInRyaWdnZXJz IiwgVFJJR0dFUlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InRyaW0iLCBUUklNLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi dHJ1ZSIsIFRSVUVfUCwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InRydW5jYXRlIiwgVFJVTkNBVEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3RhYmxlX2xpa2Uub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKaW5kZXgg ZDNjMzVjMTQ4NDcuLjA2NjY1NTZlNWU2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV90YWJsZV9saWtlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NyZWF0ZV90YWJsZV9saWtlLm91dApAQCAtNjMxLDYgKzYzMSwxMyBAQCBOb3QtbnVsbCBj b25zdHJhaW50czoKICAgICAiY3RsX3RhYmxlX2Ffbm90X251bGwiIE5PVCBOVUxMICJhIgogICAg ICJjdGxfdGFibGVfZF9ub3RfbnVsbCIgTk9UIE5VTEwgImQiCiAKKy0tIHRyaWdnZXJfZnVuYyB3 YXMgY3JlYXRlZCBpbiB0cmlnZ2Vycy5zcWwKK0NSRUFURSBUUklHR0VSIHRyaWd0ZXN0X2JlZm9y ZV9zdG10IEJFRk9SRSBERUxFVEUgT1IgVVBEQVRFIE9OIGN0bF90YWJsZQorRk9SIEVBQ0ggUk9X IFdIRU4gKE9MRC5hID4gMCkKK0VYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygndHJpZ3Rl c3RfYmVmb3JlX3N0bXQnKTsKK0NSRUFURSBUUklHR0VSIHRyaWd0ZXN0X2FmdGVyX3N0bXQgQUZU RVIgVVBEQVRFIE9GIGEsIGIgT04gY3RsX3RhYmxlCitGT1IgRUFDSCBTVEFURU1FTlQKK0VYRUNV VEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygndHJpZ3Rlc3RfYmVmb3JlX3N0bXQnKTsKIC0tIFRl c3QgRVhDTFVESU5HIEFMTAogQ1JFQVRFIEZPUkVJR04gVEFCTEUgY3RsX2ZvcmVpZ25fdGFibGUx KExJS0UgY3RsX3RhYmxlIEVYQ0xVRElORyBBTEwpIFNFUlZFUiBjdGxfczA7CiBcZCsgY3RsX2Zv cmVpZ25fdGFibGUxCkBAIC02NzksNiArNjg2LDkgQEAgU3RhdGlzdGljcyBvYmplY3RzOgogTm90 LW51bGwgY29uc3RyYWludHM6CiAgICAgImN0bF90YWJsZV9hX25vdF9udWxsIiBOT1QgTlVMTCAi YSIKICAgICAiY3RsX3RhYmxlX2Rfbm90X251bGwiIE5PVCBOVUxMICJkIgorVHJpZ2dlcnM6Cisg ICAgdHJpZ3Rlc3RfYWZ0ZXJfc3RtdCBBRlRFUiBVUERBVEUgT0YgYSwgYiBPTiBjdGxfZm9yZWln bl90YWJsZTIgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5j KCd0cmlndGVzdF9iZWZvcmVfc3RtdCcpCisgICAgdHJpZ3Rlc3RfYmVmb3JlX3N0bXQgQkVGT1JF IERFTEVURSBPUiBVUERBVEUgT04gY3RsX2ZvcmVpZ25fdGFibGUyIEZPUiBFQUNIIFJPVyBXSEVO IChvbGQuYSA+IDApIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCd0cmlndGVzdF9iZWZv cmVfc3RtdCcpCiBTZXJ2ZXI6IGN0bF9zMAogCiAtLSBcZCsgZG9lcyBub3QgcmVwb3J0IHRoZSB2 YWx1ZSBvZiBhdHRjb21wcmVzc2lvbiBmb3IgYSBmb3JlaWduIHRhYmxlLCBzbwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dAppbmRleCAxZWI4ZmJhMDk1My4uMWQ0NjhiYTI2ZDYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CkBAIC0xNjUsNiArMTY1LDcg QEAgZHJvcCB0YWJsZSB0cmlndGVzdDsKIENSRUFURSBUQUJMRSBsb2dfdGFibGUgKHRzdGFtcCB0 aW1lc3RhbXAgZGVmYXVsdCB0aW1lb2ZkYXkoKTo6dGltZXN0YW1wKTsKIENSRUFURSBUQUJMRSBt YWluX3RhYmxlIChhIGludCB1bmlxdWUsIGIgaW50KTsKIENPUFkgbWFpbl90YWJsZSAoYSxiKSBG Uk9NIHN0ZGluOworLS0gVGhpcyBmdW5jdGlvbiBhbHNvIHVzZWQgaW4gY3JlYXRlX3RhYmxlX2xp a2Uuc3FsLCBkb24ndCBkcm9wIGl0LgogQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygpIFJF VFVSTlMgdHJpZ2dlciBMQU5HVUFHRSBwbHBnc3FsIEFTICcKIEJFR0lOCiAJUkFJU0UgTk9USUNF ICcndHJpZ2dlcl9mdW5jKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0g JScnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CkBAIC0xNzQsNiArMTc1 LDIwIEBAIENSRUFURSBUUklHR0VSIGJlZm9yZV9pbnNfc3RtdF90cmlnIEJFRk9SRSBJTlNFUlQg T04gbWFpbl90YWJsZQogRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdn ZXJfZnVuYygnYmVmb3JlX2luc19zdG10Jyk7CiBDUkVBVEUgVFJJR0dFUiBhZnRlcl9pbnNfc3Rt dF90cmlnIEFGVEVSIElOU0VSVCBPTiBtYWluX3RhYmxlCiBGT1IgRUFDSCBTVEFURU1FTlQgRVhF Q1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCdhZnRlcl9pbnNfc3RtdCcpOworQ1JFQVRFIFRS SUdHRVIgd2hvbGV0cmlnIEJFRk9SRSBVUERBVEUgT04gbWFpbl90YWJsZSBGT1IgRUFDSCBST1cK K1dIRU4gKE9MRCBJUyBOT1QgTlVMTCkKK0VYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygn bW9kaWZpZWRfYScpOworQ1JFQVRFIFRBQkxFIG1haW5fdGFibGUxKExJS0UgbWFpbl90YWJsZSBJ TkNMVURJTkcgVFJJR0dFUlMpOyAtLWVycm9yLCB3aG9sZXJvdyByZWZlcmVuY2UKK0VSUk9SOiAg Y2Fubm90IGNvbnZlcnQgd2hvbGUtcm93IHRhYmxlIHJlZmVyZW5jZQorREVUQUlMOiAgVHJpZ2dl ciAid2hvbGV0cmlnIiBjb250YWlucyBhIHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UuCitEUk9Q IFRSSUdHRVIgd2hvbGV0cmlnIE9OIG1haW5fdGFibGU7CitDUkVBVEUgVFJJR0dFUiB3aG9sZXRy aWcgQkVGT1JFIFVQREFURSBPTiBtYWluX3RhYmxlIEZPUiBFQUNIIFJPVworV0hFTiAoTkVXIElT IE5PVCBOVUxMKQorRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCdtb2RpZmllZF9hJyk7 CitDUkVBVEUgVEFCTEUgbWFpbl90YWJsZTEoTElLRSBtYWluX3RhYmxlIElOQ0xVRElORyBUUklH R0VSUyk7IC0tZXJyb3IsIHdob2xlcm93IHJlZmVyZW5jZQorRVJST1I6ICBjYW5ub3QgY29udmVy dCB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlCitERVRBSUw6ICBUcmlnZ2VyICJ3aG9sZXRyaWci IGNvbnRhaW5zIGEgd2hvbGUtcm93IHRhYmxlIHJlZmVyZW5jZS4KK0RST1AgVFJJR0dFUiB3aG9s ZXRyaWcgT04gbWFpbl90YWJsZTsKIC0tCiAtLSBpZiBuZWl0aGVyICdGT1IgRUFDSCBST1cnIG5v ciAnRk9SIEVBQ0ggU1RBVEVNRU5UJyB3YXMgc3BlY2lmaWVkLAogLS0gQ1JFQVRFIFRSSUdHRVIg c2hvdWxkIGRlZmF1bHQgdG8gJ0ZPUiBFQUNIIFNUQVRFTUVOVCcKQEAgLTM5NCw2ICs0MDksNDQg QEAgTk9USUNFOiAgdHJpZ2dlcl9mdW5jKGFmdGVyX3VwZF9hX2Jfcm93KSBjYWxsZWQ6IGFjdGlv biA9IFVQREFURSwgd2hlbiA9IEFGVEVSLAogTk9USUNFOiAgdHJpZ2dlcl9mdW5jKGFmdGVyX3Vw ZF9iX3JvdykgY2FsbGVkOiBhY3Rpb24gPSBVUERBVEUsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBS T1cKIE5PVElDRTogIHRyaWdnZXJfZnVuYyhhZnRlcl91cGRfYl9zdG10KSBjYWxsZWQ6IGFjdGlv biA9IFVQREFURSwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAogTk9USUNFOiAgdHJp Z2dlcl9mdW5jKGFmdGVyX3VwZF9zdG10KSBjYWxsZWQ6IGFjdGlvbiA9IFVQREFURSwgd2hlbiA9 IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS1DUkVBVEUgVEFCTEUgTElLRSBJTkNMVURJTkcg VFJJR0dFUlMgdGVzdHMKK0NPTU1FTlQgT04gVFJJR0dFUiBiZWZvcmVfaW5zX3N0bXRfdHJpZyBP TiBtYWluX3RhYmxlIElTICd0cmlnZ2VyIGJlZm9yZV9pbnNfc3RtdF90cmlnJzsKK0NSRUFURSBU QUJMRSBtYWluX3RhYmxlMShjIGludCwgTElLRSBtYWluX3RhYmxlIElOQ0xVRElORyBUUklHR0VS UyBJTkNMVURJTkcgQ09NTUVOVFMpOworU0VMRUNUICBwZ19nZXRfdHJpZ2dlcmRlZihvaWQpCitG Uk9NICAgIHBnX3RyaWdnZXIKK1dIRVJFIE5PVCB0Z2lzaW50ZXJuYWwgQU5EIHRncmVsaWQgSU4g KCdtYWluX3RhYmxlJzo6cmVnY2xhc3MsICdtYWluX3RhYmxlMSc6OnJlZ2NsYXNzKQorT1JERVIg QlkgdGduYW1lLCB0Z3JlbGlkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF90cmlnZ2VyZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfaW5zX3N0bXRfdHJpZyBBRlRFUiBJTlNF UlQgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJ T04gdHJpZ2dlcl9mdW5jKCdhZnRlcl9pbnNfc3RtdCcpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJf aW5zX3N0bXRfdHJpZyBBRlRFUiBJTlNFUlQgT04gcHVibGljLm1haW5fdGFibGUxIEZPUiBFQUNI IFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYWZ0ZXJfaW5zX3N0bXQn KQorIENSRUFURSBUUklHR0VSIGFmdGVyX3VwZF9hX2Jfcm93X3RyaWcgQUZURVIgVVBEQVRFIE9G IGEsIGIgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04g dHJpZ2dlcl9mdW5jKCdhZnRlcl91cGRfYV9iX3JvdycpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJf dXBkX2FfYl9yb3dfdHJpZyBBRlRFUiBVUERBVEUgT0YgYSwgYiBPTiBwdWJsaWMubWFpbl90YWJs ZTEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCdhZnRlcl91cGRf YV9iX3JvdycpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfdXBkX2Jfcm93X3RyaWcgQUZURVIgVVBE QVRFIE9GIGIgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJ T04gdHJpZ2dlcl9mdW5jKCdhZnRlcl91cGRfYl9yb3cnKQorIENSRUFURSBUUklHR0VSIGFmdGVy X3VwZF9iX3Jvd190cmlnIEFGVEVSIFVQREFURSBPRiBiIE9OIHB1YmxpYy5tYWluX3RhYmxlMSBG T1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX3VwZF9iX3Jv dycpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfdXBkX2Jfc3RtdF90cmlnIEFGVEVSIFVQREFURSBP RiBiIE9OIHB1YmxpYy5tYWluX3RhYmxlIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNU SU9OIHRyaWdnZXJfZnVuYygnYWZ0ZXJfdXBkX2Jfc3RtdCcpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0 ZXJfdXBkX2Jfc3RtdF90cmlnIEFGVEVSIFVQREFURSBPRiBiIE9OIHB1YmxpYy5tYWluX3RhYmxl MSBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ2FmdGVy X3VwZF9iX3N0bXQnKQorIENSRUFURSBUUklHR0VSIGFmdGVyX3VwZF9zdG10X3RyaWcgQUZURVIg VVBEQVRFIE9OIHB1YmxpYy5tYWluX3RhYmxlIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZV TkNUSU9OIHRyaWdnZXJfZnVuYygnYWZ0ZXJfdXBkX3N0bXQnKQorIENSRUFURSBUUklHR0VSIGFm dGVyX3VwZF9zdG10X3RyaWcgQUZURVIgVVBEQVRFIE9OIHB1YmxpYy5tYWluX3RhYmxlMSBGT1Ig RUFDSCBTVEFURU1FTlQgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX3VwZF9z dG10JykKKyBDUkVBVEUgVFJJR0dFUiBiZWZvcmVfaW5zX3N0bXRfdHJpZyBCRUZPUkUgSU5TRVJU IE9OIHB1YmxpYy5tYWluX3RhYmxlIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9O IHRyaWdnZXJfZnVuYygnYmVmb3JlX2luc19zdG10JykKKyBDUkVBVEUgVFJJR0dFUiBiZWZvcmVf aW5zX3N0bXRfdHJpZyBCRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy5tYWluX3RhYmxlMSBGT1IgRUFD SCBTVEFURU1FTlQgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ2JlZm9yZV9pbnNfc3Rt dCcpCisgQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZF9hX3Jvd190cmlnIEJFRk9SRSBVUERBVEUg T0YgYSBPTiBwdWJsaWMubWFpbl90YWJsZSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0 cmlnZ2VyX2Z1bmMoJ2JlZm9yZV91cGRfYV9yb3cnKQorIENSRUFURSBUUklHR0VSIGJlZm9yZV91 cGRfYV9yb3dfdHJpZyBCRUZPUkUgVVBEQVRFIE9GIGEgT04gcHVibGljLm1haW5fdGFibGUxIEZP UiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYmVmb3JlX3VwZF9hX3Jv dycpCisgQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZF9hX3N0bXRfdHJpZyBCRUZPUkUgVVBEQVRF IE9GIGEgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVO Q1RJT04gdHJpZ2dlcl9mdW5jKCdiZWZvcmVfdXBkX2Ffc3RtdCcpCisgQ1JFQVRFIFRSSUdHRVIg YmVmb3JlX3VwZF9hX3N0bXRfdHJpZyBCRUZPUkUgVVBEQVRFIE9GIGEgT04gcHVibGljLm1haW5f dGFibGUxIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygn YmVmb3JlX3VwZF9hX3N0bXQnKQorKDE2IHJvd3MpCisKK1NFTEVDVCAgcGMucmVsbmFtZSwgcGQu dGduYW1lLCBvYmpfZGVzY3JpcHRpb24ocGQub2lkLCAncGdfdHJpZ2dlcicpCitGUk9NICAgIHBn X3RyaWdnZXIgcGQgSk9JTiBwZ19jbGFzcyBwYworT04gICAgICBwYy5vaWQgPSBwZC50Z3JlbGlk IEFORCBwZC50Z25hbWUgPSAnYmVmb3JlX2luc19zdG10X3RyaWcnCitPUkRFUiBCWSAxOworICAg cmVsbmFtZSAgIHwgICAgICAgIHRnbmFtZSAgICAgICAgfCAgICAgICBvYmpfZGVzY3JpcHRpb24g ICAgICAgIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIG1haW5fdGFibGUgIHwgYmVmb3JlX2luc19zdG10X3RyaWcg fCB0cmlnZ2VyIGJlZm9yZV9pbnNfc3RtdF90cmlnCisgbWFpbl90YWJsZTEgfCBiZWZvcmVfaW5z X3N0bXRfdHJpZyB8IHRyaWdnZXIgYmVmb3JlX2luc19zdG10X3RyaWcKKygyIHJvd3MpCisKK0NP TU1FTlQgT04gVFJJR0dFUiBiZWZvcmVfaW5zX3N0bXRfdHJpZyBPTiBtYWluX3RhYmxlIElTIE5V TEw7CiAtLQogLS0gVGVzdCBjYXNlIGZvciBidWcgd2l0aCBCRUZPUkUgdHJpZ2dlciBmb2xsb3dl ZCBieSBBRlRFUiB0cmlnZ2VyIHdpdGggV0hFTgogLS0KQEAgLTQyMiw2ICs0NzUsMjAgQEAgTk9U SUNFOiAgZHVtbXlfdXBkYXRlX2Z1bmMoYWZ0ZXJiKSBjYWxsZWQ6IGFjdGlvbiA9IFVQREFURSwg b2xkID0gKHQpLCBuZXcgPSAoZikKIFVQREFURSBzb21lX3QgU0VUIHNvbWVfY29sID0gVFJVRTsK IE5PVElDRTogIGR1bW15X3VwZGF0ZV9mdW5jKGJlZm9yZSkgY2FsbGVkOiBhY3Rpb24gPSBVUERB VEUsIG9sZCA9IChmKSwgbmV3ID0gKHQpCiBOT1RJQ0U6ICBkdW1teV91cGRhdGVfZnVuYyhhZnRl cmEpIGNhbGxlZDogYWN0aW9uID0gVVBEQVRFLCBvbGQgPSAoZiksIG5ldyA9ICh0KQorQ1JFQVRF IFRBQkxFIHNvbWVfdDEgKGMgSU5ULCBMSUtFIHNvbWVfdCBJTkNMVURJTkcgVFJJR0dFUlMgSU5D TFVESU5HIENPTU1FTlRTKTsKK1xkKyBzb21lX3QxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRhYmxlICJwdWJsaWMuc29tZV90MSIKKyAgQ29sdW1uICB8ICBUeXBlICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGMgICAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKKyBzb21lX2NvbCB8IGJvb2xlYW4gfCAgICAgICAgICAgfCBub3Qg bnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitOb3QtbnVsbCBjb25z dHJhaW50czoKKyAgICAic29tZV90X3NvbWVfY29sX25vdF9udWxsIiBOT1QgTlVMTCAic29tZV9j b2wiCitUcmlnZ2VyczoKKyAgICBzb21lX3RyaWdfYWZ0ZXJhIEFGVEVSIFVQREFURSBPTiBzb21l X3QxIEZPUiBFQUNIIFJPVyBXSEVOIChOT1Qgb2xkLnNvbWVfY29sIEFORCBuZXcuc29tZV9jb2wp IEVYRUNVVEUgRlVOQ1RJT04gZHVtbXlfdXBkYXRlX2Z1bmMoJ2FmdGVyYScpCisgICAgc29tZV90 cmlnX2FmdGVyYiBBRlRFUiBVUERBVEUgT04gc29tZV90MSBGT1IgRUFDSCBST1cgV0hFTiAoTk9U IG5ldy5zb21lX2NvbCkgRVhFQ1VURSBGVU5DVElPTiBkdW1teV91cGRhdGVfZnVuYygnYWZ0ZXJi JykKKyAgICBzb21lX3RyaWdfYmVmb3JlIEJFRk9SRSBVUERBVEUgT04gc29tZV90MSBGT1IgRUFD SCBST1cgRVhFQ1VURSBGVU5DVElPTiBkdW1teV91cGRhdGVfZnVuYygnYmVmb3JlJykKKwogRFJP UCBUQUJMRSBzb21lX3Q7CiAtLSBib2d1cyBjYXNlcwogQ1JFQVRFIFRSSUdHRVIgZXJyb3JfdXBk X2FuZF9jb2wgQkVGT1JFIFVQREFURSBPUiBVUERBVEUgT0YgYSBPTiBtYWluX3RhYmxlCkBAIC04 NjEsNiArOTI4LDkgQEAgQ1JFQVRFIFRSSUdHRVIgaW5zdGVhZF9vZl91cGRhdGVfdHJpZyBJTlNU RUFEIE9GIFVQREFURSBPTiBtYWluX3ZpZXcKIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSB2aWV3X3RyaWdnZXIoJ2luc3RlYWRfb2ZfdXBkJyk7CiBDUkVBVEUgVFJJR0dFUiBpbnN0ZWFk X29mX2RlbGV0ZV90cmlnIElOU1RFQUQgT0YgREVMRVRFIE9OIG1haW5fdmlldwogRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHZpZXdfdHJpZ2dlcignaW5zdGVhZF9vZl9kZWwnKTsKK0NS RUFURSBUQUJMRSBtYWluX3ZpZXdfdGFibGUoTElLRSBtYWluX3ZpZXcgSU5DTFVESU5HIFRSSUdH RVJTKTsgLS1lcnJvcgorRVJST1I6ICAibWFpbl92aWV3X3RhYmxlIiBpcyBhIHRhYmxlCitERVRB SUw6ICBUYWJsZXMgY2Fubm90IGhhdmUgSU5TVEVBRCBPRiB0cmlnZ2Vycy4KIC0tIFZhbGlkIEJF Rk9SRSBzdGF0ZW1lbnQgVklFVyB0cmlnZ2VycwogQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX2luc19z dG10X3RyaWcgQkVGT1JFIElOU0VSVCBPTiBtYWluX3ZpZXcKIEZPUiBFQUNIIFNUQVRFTUVOVCBF WEVDVVRFIFBST0NFRFVSRSB2aWV3X3RyaWdnZXIoJ2JlZm9yZV92aWV3X2luc19zdG10Jyk7CkBA IC0xNzY5LDkgKzE4MzksMjEgQEAgY3JlYXRlIHRyaWdnZXIgbXlfdHJpZ2dlciBhZnRlciB1cGRh dGUgb24gbXlfdmlldyByZWZlcmVuY2luZyBvbGQgdGFibGUgYXMgb2xkX3QKICAgIGZvciBlYWNo IHN0YXRlbWVudCBleGVjdXRlIHByb2NlZHVyZSBteV90cmlnZ2VyX2Z1bmN0aW9uKCk7CiBFUlJP UjogICJteV92aWV3IiBpcyBhIHZpZXcKIERFVEFJTDogIFRyaWdnZXJzIG9uIHZpZXdzIGNhbm5v dCBoYXZlIHRyYW5zaXRpb24gdGFibGVzLgotZHJvcCBmdW5jdGlvbiBteV90cmlnZ2VyX2Z1bmN0 aW9uKCk7CitjcmVhdGUgdHJpZ2dlciBteV90cmlnZ2VyMSBiZWZvcmUgdXBkYXRlIG9mIGkgb24g bXlfdmlldworICAgZm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1dGUgcHJvY2VkdXJlIG15X3RyaWdn ZXJfZnVuY3Rpb24oKTsKK2NyZWF0ZSB0YWJsZSBteV92aWV3X2NvcHkoTElLRSBteV92aWV3IGlu Y2x1ZGluZyB0cmlnZ2Vycyk7CitcZCBteV92aWV3X2NvcHkKKyAgICAgICAgICAgIFRhYmxlICJw dWJsaWMubXlfdmlld19jb3B5IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxs YWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK K1RyaWdnZXJzOgorICAgIG15X3RyaWdnZXIxIEJFRk9SRSBVUERBVEUgT0YgaSBPTiBteV92aWV3 X2NvcHkgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJT04gbXlfdHJpZ2dlcl9mdW5j dGlvbigpCisKIGRyb3AgdmlldyBteV92aWV3OwogZHJvcCB0YWJsZSBteV90YWJsZTsKK2Ryb3Ag dGFibGUgbXlfdmlld19jb3B5OworZHJvcCBmdW5jdGlvbiBteV90cmlnZ2VyX2Z1bmN0aW9uKCk7 CiAtLQogLS0gVmVyaWZ5IGNhc2VzIHRoYXQgYXJlIHVuc3VwcG9ydGVkIHdpdGggcGFydGl0aW9u ZWQgdGFibGVzCiAtLQpAQCAtMjMxOCw2ICsyNDAwLDIwIEBAIGNyZWF0ZSBjb25zdHJhaW50IHRy aWdnZXIgcGFydGVkX3RyaWdfdHdvIGFmdGVyIGluc2VydCBvbiBwYXJ0ZWRfY29uc3RyCiAgIGRl ZmVycmFibGUgaW5pdGlhbGx5IGRlZmVycmVkIGVuZm9yY2VkCiAgIGZvciBlYWNoIHJvdyB3aGVu IChiYXJrKG5ldy5iKSBBTkQgbmV3LmEgJSAyID0gMSkKICAgZXhlY3V0ZSBwcm9jZWR1cmUgdHJp Z2dlcl9ub3RpY2VfYWIoKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0ZWRfY29uc3RyX2NvcHkgKGxpa2Ug cGFydGVkX2NvbnN0ciBpbmNsdWRpbmcgYWxsKTsKK3NlbGVjdCAgcGdfZ2V0X3RyaWdnZXJkZWYo b2lkKQorZnJvbSAgICBwZ190cmlnZ2VyCit3aGVyZSAgIG5vdCB0Z2lzaW50ZXJuYWwgYW5kIHRn cmVsaWQgaW4gKCdwYXJ0ZWRfY29uc3RyX2NvcHknOjpyZWdjbGFzcywgJ3BhcnRlZF9jb25zdHIn OjpyZWdjbGFzcykKK29yZGVyIGJ5IHRnbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X3RyaWdnZXJkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVB VEUgQ09OU1RSQUlOVCBUUklHR0VSIHBhcnRlZF90cmlnIEFGVEVSIElOU0VSVCBPTiBwdWJsaWMu cGFydGVkX2NvbnN0ciBERUZFUlJBQkxFIElOSVRJQUxMWSBJTU1FRElBVEUgRk9SIEVBQ0ggUk9X IEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9ub3RpY2VfYWIoKQorIENSRUFURSBDT05TVFJBSU5U IFRSSUdHRVIgcGFydGVkX3RyaWcgQUZURVIgSU5TRVJUIE9OIHB1YmxpYy5wYXJ0ZWRfY29uc3Ry X2NvcHkgREVGRVJSQUJMRSBJTklUSUFMTFkgSU1NRURJQVRFIEZPUiBFQUNIIFJPVyBFWEVDVVRF IEZVTkNUSU9OIHRyaWdnZXJfbm90aWNlX2FiKCkKKyBDUkVBVEUgQ09OU1RSQUlOVCBUUklHR0VS IHBhcnRlZF90cmlnX3R3byBBRlRFUiBJTlNFUlQgT04gcHVibGljLnBhcnRlZF9jb25zdHIgREVG RVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQgRk9SIEVBQ0ggUk9XIFdIRU4gKChiYXJrKG5ldy5i KSBBTkQgKChuZXcuYSAlIDIpID0gMSkpKSBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfbm90aWNl X2FiKCkKKyBDUkVBVEUgQ09OU1RSQUlOVCBUUklHR0VSIHBhcnRlZF90cmlnX3R3byBBRlRFUiBJ TlNFUlQgT04gcHVibGljLnBhcnRlZF9jb25zdHJfY29weSBERUZFUlJBQkxFIElOSVRJQUxMWSBE RUZFUlJFRCBGT1IgRUFDSCBST1cgV0hFTiAoKGJhcmsobmV3LmIpIEFORCAoKG5ldy5hICUgMikg PSAxKSkpIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9ub3RpY2VfYWIoKQorKDQgcm93cykKKwor ZHJvcCB0YWJsZSBwYXJ0ZWRfY29uc3RyX2NvcHk7CiAtLSBUaGUgaW1tZWRpYXRlIGNvbnN0cmFp bnQgaXMgZmlyZWQgaW1tZWRpYXRlbHk7IHRoZSBXSEVOIGNsYXVzZSBvZiB0aGUKIC0tIGRlZmVy cmVkIGNvbnN0cmFpbnQgaXMgYWxzbyBjYWxsZWQgaW1tZWRpYXRlbHkuICBUaGUgZGVmZXJyZWQg Y29uc3RyYWludAogLS0gaXMgZmlyZWQgYXQgY29tbWl0IHRpbWUuCkBAIC0zMDkyLDYgKzMxODgs MTggQEAgY3JlYXRlIHRyaWdnZXIgaW9jZHVfdHRfcGFydGVkX2luc2VydF90cmlnCiBjcmVhdGUg dHJpZ2dlciBpb2NkdV90dF9wYXJ0ZWRfdXBkYXRlX3RyaWcKICAgYWZ0ZXIgdXBkYXRlIG9uIGlv Y2R1X3R0X3BhcnRlZCByZWZlcmVuY2luZyBvbGQgdGFibGUgYXMgb2xkX3RhYmxlIG5ldyB0YWJs ZSBhcyBuZXdfdGFibGUKICAgZm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1dGUgcHJvY2VkdXJlIGR1 bXBfdXBkYXRlKCk7CitDUkVBVEUgVEFCTEUgaW9jZHVfdHRfcGFydGVkX2NvcHkoTElLRSBpb2Nk dV90dF9wYXJ0ZWQgSU5DTFVESU5HIFRSSUdHRVJTKTsKK1xkIGlvY2R1X3R0X3BhcnRlZF9jb3B5 CisgICAgICAgIFRhYmxlICJwdWJsaWMuaW9jZHVfdHRfcGFydGVkX2NvcHkiCisgQ29sdW1uIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIGIgICAgICB8IHRleHQgICAgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorVHJpZ2dlcnM6CisgICAgaW9jZHVfdHRfcGFydGVkX2luc2VydF90cmln IEFGVEVSIElOU0VSVCBPTiBpb2NkdV90dF9wYXJ0ZWRfY29weSBSRUZFUkVOQ0lORyBORVcgVEFC TEUgQVMgbmV3X3RhYmxlIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIGR1bXBf aW5zZXJ0KCkKKyAgICBpb2NkdV90dF9wYXJ0ZWRfdXBkYXRlX3RyaWcgQUZURVIgVVBEQVRFIE9O IGlvY2R1X3R0X3BhcnRlZF9jb3B5IFJFRkVSRU5DSU5HIE9MRCBUQUJMRSBBUyBvbGRfdGFibGUg TkVXIFRBQkxFIEFTIG5ld190YWJsZSBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBGVU5DVElP TiBkdW1wX3VwZGF0ZSgpCisKK0RST1AgVEFCTEUgaW9jZHVfdHRfcGFydGVkX2NvcHk7CiAtLSBp bnNlcnRzIG9ubHkKIGluc2VydCBpbnRvIGlvY2R1X3R0X3BhcnRlZCB2YWx1ZXMgKDEsICdBQUEn KSwgKDIsICdCQkInKQogICBvbiBjb25mbGljdCAoYSkgZG8KQEAgLTM1NzQsNiArMzY4MiwyNiBA QCBiZWdpbgogZW5kOwogJCQ7CiBhbHRlciBmdW5jdGlvbiB3aG9hbWkoKSBvd25lciB0byByZWdy ZXNzX2ZuX293bmVyOworLS0gQ1JFQVRFIFRBQkxFIExJS0UgSU5DTFVESU5HIFRSSUdHRVJTIGZv ciBjb25zdHJhaW50IHRyaWdnZXIKK2NyZWF0ZSBzY2hlbWEgdGVzdF90cmlnOworY3JlYXRlIHRh YmxlIHRlc3RfdHJpZy50cmlnX3QxIChpZCBpbnRlZ2VyKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X3Ry aWcudHJpZ190MiAoaWQgaW50ZWdlcik7CithbHRlciBmdW5jdGlvbiB3aG9hbWkoKSBzZXQgc2No ZW1hIHRlc3RfdHJpZzsKK2NyZWF0ZSBjb25zdHJhaW50IHRyaWdnZXIgY29uX3RyaWdfdGVzdCBh ZnRlciBpbnNlcnQgb24gdGVzdF90cmlnLnRyaWdfdDEKK2Zyb20gdGVzdF90cmlnLnRyaWdfdDIK K2RlZmVycmFibGUgaW5pdGlhbGx5IGRlZmVycmVkCitmb3IgZWFjaCByb3cKK2V4ZWN1dGUgZnVu Y3Rpb24gdGVzdF90cmlnLndob2FtaSgpOworY3JlYXRlIHRhYmxlIHRyaWdfdDFfY29weShsaWtl IHRlc3RfdHJpZy50cmlnX3QxIGluY2x1ZGluZyB0cmlnZ2Vycyk7CitzZWxlY3QgcGdfZ2V0X3Ry aWdnZXJkZWYob2lkKSBmcm9tIHBnX3RyaWdnZXIgd2hlcmUgdGdyZWxpZCA9ICd0cmlnX3QxX2Nv cHknOjpyZWdjbGFzczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF90cmlnZ2VyZGVm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBDT05TVFJBSU5UIFRS SUdHRVIgY29uX3RyaWdfdGVzdCBBRlRFUiBJTlNFUlQgT04gcHVibGljLnRyaWdfdDFfY29weSBG Uk9NIHRlc3RfdHJpZy50cmlnX3QyIERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEIEZPUiBF QUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRlc3RfdHJpZy53aG9hbWkoKQorKDEgcm93KQorCith bHRlciBmdW5jdGlvbiB0ZXN0X3RyaWcud2hvYW1pKCkgc2V0IHNjaGVtYSBwdWJsaWM7Citkcm9w IHRhYmxlIHRlc3RfdHJpZy50cmlnX3QxLCB0ZXN0X3RyaWcudHJpZ190MiwgdHJpZ190MV9jb3B5 OworZHJvcCBzY2hlbWEgdGVzdF90cmlnOwogY3JlYXRlIHRhYmxlIGRlZmVyX3RyaWcgKGlkIGlu dGVnZXIpOwogZ3JhbnQgaW5zZXJ0IG9uIGRlZmVyX3RyaWcgdG8gcHVibGljOwogY3JlYXRlIGNv bnN0cmFpbnQgdHJpZ2dlciB3aG9hbWkgYWZ0ZXIgaW5zZXJ0IG9uIGRlZmVyX3RyaWcKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZV9saWtlLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZV9saWtlLnNxbAppbmRleCA5MzM4OWI1N2RiZi4u NzQ1N2U3ZDk2MWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJs ZV9saWtlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVfbGlrZS5z cWwKQEAgLTI1OCw2ICsyNTgsMTMgQEAgQUxURVIgVEFCTEUgY3RsX3RhYmxlIEFERCBDT05TVFJB SU5UIGZvbyBDSEVDSyAoYiA9ICd0ZXh0Jyk7CiBBTFRFUiBUQUJMRSBjdGxfdGFibGUgQUxURVIg Q09MVU1OIGIgU0VUIFNUT1JBR0UgTUFJTjsKIAogXGQrIGN0bF90YWJsZQorLS0gdHJpZ2dlcl9m dW5jIHdhcyBjcmVhdGVkIGluIHRyaWdnZXJzLnNxbAorQ1JFQVRFIFRSSUdHRVIgdHJpZ3Rlc3Rf YmVmb3JlX3N0bXQgQkVGT1JFIERFTEVURSBPUiBVUERBVEUgT04gY3RsX3RhYmxlCitGT1IgRUFD SCBST1cgV0hFTiAoT0xELmEgPiAwKQorRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCd0 cmlndGVzdF9iZWZvcmVfc3RtdCcpOworQ1JFQVRFIFRSSUdHRVIgdHJpZ3Rlc3RfYWZ0ZXJfc3Rt dCBBRlRFUiBVUERBVEUgT0YgYSwgYiBPTiBjdGxfdGFibGUKK0ZPUiBFQUNIIFNUQVRFTUVOVAor RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCd0cmlndGVzdF9iZWZvcmVfc3RtdCcpOwog CiAtLSBUZXN0IEVYQ0xVRElORyBBTEwKIENSRUFURSBGT1JFSUdOIFRBQkxFIGN0bF9mb3JlaWdu X3RhYmxlMShMSUtFIGN0bF90YWJsZSBFWENMVURJTkcgQUxMKSBTRVJWRVIgY3RsX3MwOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdHJpZ2dlcnMuc3FsCmluZGV4IDVmN2Y3NWQ3YmE1Li5hMWU5ZGJiYThiZCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbApAQCAtMTA4LDYgKzEwOCw3IEBAIENPUFkgbWFpbl90 YWJsZSAoYSxiKSBGUk9NIHN0ZGluOwogODAJMTUKIFwuCiAKKy0tIFRoaXMgZnVuY3Rpb24gYWxz byB1c2VkIGluIGNyZWF0ZV90YWJsZV9saWtlLnNxbCwgZG9uJ3QgZHJvcCBpdC4KIENSRUFURSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBB UyAnCiBCRUdJTgogCVJBSVNFIE5PVElDRSAnJ3RyaWdnZXJfZnVuYyglKSBjYWxsZWQ6IGFjdGlv biA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4s IFRHX0xFVkVMOwpAQCAtMTIwLDYgKzEyMSwxOCBAQCBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VU RSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCdiZWZvcmVfaW5zX3N0bXQnKTsKIENSRUFURSBUUklH R0VSIGFmdGVyX2luc19zdG10X3RyaWcgQUZURVIgSU5TRVJUIE9OIG1haW5fdGFibGUKIEZPUiBF QUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX2luc19z dG10Jyk7CiAKK0NSRUFURSBUUklHR0VSIHdob2xldHJpZyBCRUZPUkUgVVBEQVRFIE9OIG1haW5f dGFibGUgRk9SIEVBQ0ggUk9XCitXSEVOIChPTEQgSVMgTk9UIE5VTEwpCitFWEVDVVRFIFBST0NF RFVSRSB0cmlnZ2VyX2Z1bmMoJ21vZGlmaWVkX2EnKTsKK0NSRUFURSBUQUJMRSBtYWluX3RhYmxl MShMSUtFIG1haW5fdGFibGUgSU5DTFVESU5HIFRSSUdHRVJTKTsgLS1lcnJvciwgd2hvbGVyb3cg cmVmZXJlbmNlCitEUk9QIFRSSUdHRVIgd2hvbGV0cmlnIE9OIG1haW5fdGFibGU7CisKK0NSRUFU RSBUUklHR0VSIHdob2xldHJpZyBCRUZPUkUgVVBEQVRFIE9OIG1haW5fdGFibGUgRk9SIEVBQ0gg Uk9XCitXSEVOIChORVcgSVMgTk9UIE5VTEwpCitFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1 bmMoJ21vZGlmaWVkX2EnKTsKK0NSRUFURSBUQUJMRSBtYWluX3RhYmxlMShMSUtFIG1haW5fdGFi bGUgSU5DTFVESU5HIFRSSUdHRVJTKTsgLS1lcnJvciwgd2hvbGVyb3cgcmVmZXJlbmNlCitEUk9Q IFRSSUdHRVIgd2hvbGV0cmlnIE9OIG1haW5fdGFibGU7CisKIC0tCiAtLSBpZiBuZWl0aGVyICdG T1IgRUFDSCBST1cnIG5vciAnRk9SIEVBQ0ggU1RBVEVNRU5UJyB3YXMgc3BlY2lmaWVkLAogLS0g Q1JFQVRFIFRSSUdHRVIgc2hvdWxkIGRlZmF1bHQgdG8gJ0ZPUiBFQUNIIFNUQVRFTUVOVCcKQEAg LTIzNCw2ICsyNDcsMTkgQEAgU0VMRUNUIHBnX2dldF90cmlnZ2VyZGVmKG9pZCkgRlJPTSBwZ190 cmlnZ2VyIFdIRVJFIHRncmVsaWQgPSAnbWFpbl90YWJsZSc6OnJlZ2MKIFVQREFURSBtYWluX3Rh YmxlIFNFVCBhID0gNTA7CiBVUERBVEUgbWFpbl90YWJsZSBTRVQgYiA9IDEwOwogCistLUNSRUFU RSBUQUJMRSBMSUtFIElOQ0xVRElORyBUUklHR0VSUyB0ZXN0cworQ09NTUVOVCBPTiBUUklHR0VS IGJlZm9yZV9pbnNfc3RtdF90cmlnIE9OIG1haW5fdGFibGUgSVMgJ3RyaWdnZXIgYmVmb3JlX2lu c19zdG10X3RyaWcnOworQ1JFQVRFIFRBQkxFIG1haW5fdGFibGUxKGMgaW50LCBMSUtFIG1haW5f dGFibGUgSU5DTFVESU5HIFRSSUdHRVJTIElOQ0xVRElORyBDT01NRU5UUyk7CitTRUxFQ1QgIHBn X2dldF90cmlnZ2VyZGVmKG9pZCkKK0ZST00gICAgcGdfdHJpZ2dlcgorV0hFUkUgTk9UIHRnaXNp bnRlcm5hbCBBTkQgdGdyZWxpZCBJTiAoJ21haW5fdGFibGUnOjpyZWdjbGFzcywgJ21haW5fdGFi bGUxJzo6cmVnY2xhc3MpCitPUkRFUiBCWSB0Z25hbWUsIHRncmVsaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiOworU0VMRUNUICBwYy5yZWxuYW1lLCBwZC50Z25hbWUsIG9ial9kZXNjcmlw dGlvbihwZC5vaWQsICdwZ190cmlnZ2VyJykKK0ZST00gICAgcGdfdHJpZ2dlciBwZCBKT0lOIHBn X2NsYXNzIHBjCitPTiAgICAgIHBjLm9pZCA9IHBkLnRncmVsaWQgQU5EIHBkLnRnbmFtZSA9ICdi ZWZvcmVfaW5zX3N0bXRfdHJpZycKK09SREVSIEJZIDE7CitDT01NRU5UIE9OIFRSSUdHRVIgYmVm b3JlX2luc19zdG10X3RyaWcgT04gbWFpbl90YWJsZSBJUyBOVUxMOworCiAtLQogLS0gVGVzdCBj YXNlIGZvciBidWcgd2l0aCBCRUZPUkUgdHJpZ2dlciBmb2xsb3dlZCBieSBBRlRFUiB0cmlnZ2Vy IHdpdGggV0hFTgogLS0KQEAgLTI1OCw2ICsyODQsOCBAQCBJTlNFUlQgSU5UTyBzb21lX3QgVkFM VUVTIChUUlVFKTsKIFVQREFURSBzb21lX3QgU0VUIHNvbWVfY29sID0gVFJVRTsKIFVQREFURSBz b21lX3QgU0VUIHNvbWVfY29sID0gRkFMU0U7CiBVUERBVEUgc29tZV90IFNFVCBzb21lX2NvbCA9 IFRSVUU7CitDUkVBVEUgVEFCTEUgc29tZV90MSAoYyBJTlQsIExJS0Ugc29tZV90IElOQ0xVRElO RyBUUklHR0VSUyBJTkNMVURJTkcgQ09NTUVOVFMpOworXGQrIHNvbWVfdDEKIERST1AgVEFCTEUg c29tZV90OwogCiAtLSBib2d1cyBjYXNlcwpAQCAtNjIxLDYgKzY0OSw4IEBAIEZPUiBFQUNIIFJP VyBFWEVDVVRFIFBST0NFRFVSRSB2aWV3X3RyaWdnZXIoJ2luc3RlYWRfb2ZfdXBkJyk7CiBDUkVB VEUgVFJJR0dFUiBpbnN0ZWFkX29mX2RlbGV0ZV90cmlnIElOU1RFQUQgT0YgREVMRVRFIE9OIG1h aW5fdmlldwogRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHZpZXdfdHJpZ2dlcignaW5z dGVhZF9vZl9kZWwnKTsKIAorQ1JFQVRFIFRBQkxFIG1haW5fdmlld190YWJsZShMSUtFIG1haW5f dmlldyBJTkNMVURJTkcgVFJJR0dFUlMpOyAtLWVycm9yCisKIC0tIFZhbGlkIEJFRk9SRSBzdGF0 ZW1lbnQgVklFVyB0cmlnZ2VycwogQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX2luc19zdG10X3RyaWcg QkVGT1JFIElOU0VSVCBPTiBtYWluX3ZpZXcKIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBS T0NFRFVSRSB2aWV3X3RyaWdnZXIoJ2JlZm9yZV92aWV3X2luc19zdG10Jyk7CkBAIC0xMjE0LDkg KzEyNDQsMTQgQEAgY3JlYXRlIHZpZXcgbXlfdmlldyBhcyBzZWxlY3QgKiBmcm9tIG15X3RhYmxl OwogY3JlYXRlIGZ1bmN0aW9uIG15X3RyaWdnZXJfZnVuY3Rpb24oKSByZXR1cm5zIHRyaWdnZXIg YXMgJCQgYmVnaW4gZW5kOyAkJCBsYW5ndWFnZSBwbHBnc3FsOwogY3JlYXRlIHRyaWdnZXIgbXlf dHJpZ2dlciBhZnRlciB1cGRhdGUgb24gbXlfdmlldyByZWZlcmVuY2luZyBvbGQgdGFibGUgYXMg b2xkX3RhYmxlCiAgICBmb3IgZWFjaCBzdGF0ZW1lbnQgZXhlY3V0ZSBwcm9jZWR1cmUgbXlfdHJp Z2dlcl9mdW5jdGlvbigpOwotZHJvcCBmdW5jdGlvbiBteV90cmlnZ2VyX2Z1bmN0aW9uKCk7Citj cmVhdGUgdHJpZ2dlciBteV90cmlnZ2VyMSBiZWZvcmUgdXBkYXRlIG9mIGkgb24gbXlfdmlldwor ICAgZm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1dGUgcHJvY2VkdXJlIG15X3RyaWdnZXJfZnVuY3Rp b24oKTsKK2NyZWF0ZSB0YWJsZSBteV92aWV3X2NvcHkoTElLRSBteV92aWV3IGluY2x1ZGluZyB0 cmlnZ2Vycyk7CitcZCBteV92aWV3X2NvcHkKIGRyb3AgdmlldyBteV92aWV3OwogZHJvcCB0YWJs ZSBteV90YWJsZTsKK2Ryb3AgdGFibGUgbXlfdmlld19jb3B5OworZHJvcCBmdW5jdGlvbiBteV90 cmlnZ2VyX2Z1bmN0aW9uKCk7CiAKIC0tCiAtLSBWZXJpZnkgY2FzZXMgdGhhdCBhcmUgdW5zdXBw b3J0ZWQgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZXMKQEAgLTE2MDgsNiArMTY0MywxMyBAQCBjcmVh dGUgY29uc3RyYWludCB0cmlnZ2VyIHBhcnRlZF90cmlnX3R3byBhZnRlciBpbnNlcnQgb24gcGFy dGVkX2NvbnN0cgogICBmb3IgZWFjaCByb3cgd2hlbiAoYmFyayhuZXcuYikgQU5EIG5ldy5hICUg MiA9IDEpCiAgIGV4ZWN1dGUgcHJvY2VkdXJlIHRyaWdnZXJfbm90aWNlX2FiKCk7CiAKK2NyZWF0 ZSB0YWJsZSBwYXJ0ZWRfY29uc3RyX2NvcHkgKGxpa2UgcGFydGVkX2NvbnN0ciBpbmNsdWRpbmcg YWxsKTsKK3NlbGVjdCAgcGdfZ2V0X3RyaWdnZXJkZWYob2lkKQorZnJvbSAgICBwZ190cmlnZ2Vy Cit3aGVyZSAgIG5vdCB0Z2lzaW50ZXJuYWwgYW5kIHRncmVsaWQgaW4gKCdwYXJ0ZWRfY29uc3Ry X2NvcHknOjpyZWdjbGFzcywgJ3BhcnRlZF9jb25zdHInOjpyZWdjbGFzcykKK29yZGVyIGJ5IHRn bmFtZTsKK2Ryb3AgdGFibGUgcGFydGVkX2NvbnN0cl9jb3B5OworCiAtLSBUaGUgaW1tZWRpYXRl IGNvbnN0cmFpbnQgaXMgZmlyZWQgaW1tZWRpYXRlbHk7IHRoZSBXSEVOIGNsYXVzZSBvZiB0aGUK IC0tIGRlZmVycmVkIGNvbnN0cmFpbnQgaXMgYWxzbyBjYWxsZWQgaW1tZWRpYXRlbHkuICBUaGUg ZGVmZXJyZWQgY29uc3RyYWludAogLS0gaXMgZmlyZWQgYXQgY29tbWl0IHRpbWUuCkBAIC0yMjc4 LDYgKzIzMjAsMTAgQEAgY3JlYXRlIHRyaWdnZXIgaW9jZHVfdHRfcGFydGVkX3VwZGF0ZV90cmln CiAgIGFmdGVyIHVwZGF0ZSBvbiBpb2NkdV90dF9wYXJ0ZWQgcmVmZXJlbmNpbmcgb2xkIHRhYmxl IGFzIG9sZF90YWJsZSBuZXcgdGFibGUgYXMgbmV3X3RhYmxlCiAgIGZvciBlYWNoIHN0YXRlbWVu dCBleGVjdXRlIHByb2NlZHVyZSBkdW1wX3VwZGF0ZSgpOwogCitDUkVBVEUgVEFCTEUgaW9jZHVf dHRfcGFydGVkX2NvcHkoTElLRSBpb2NkdV90dF9wYXJ0ZWQgSU5DTFVESU5HIFRSSUdHRVJTKTsK K1xkIGlvY2R1X3R0X3BhcnRlZF9jb3B5CitEUk9QIFRBQkxFIGlvY2R1X3R0X3BhcnRlZF9jb3B5 OworCiAtLSBpbnNlcnRzIG9ubHkKIGluc2VydCBpbnRvIGlvY2R1X3R0X3BhcnRlZCB2YWx1ZXMg KDEsICdBQUEnKSwgKDIsICdCQkInKQogICBvbiBjb25mbGljdCAoYSkgZG8KQEAgLTI3MzUsNiAr Mjc4MSwyNSBAQCBlbmQ7CiAkJDsKIGFsdGVyIGZ1bmN0aW9uIHdob2FtaSgpIG93bmVyIHRvIHJl Z3Jlc3NfZm5fb3duZXI7CiAKKy0tIENSRUFURSBUQUJMRSBMSUtFIElOQ0xVRElORyBUUklHR0VS UyBmb3IgY29uc3RyYWludCB0cmlnZ2VyCitjcmVhdGUgc2NoZW1hIHRlc3RfdHJpZzsKK2NyZWF0 ZSB0YWJsZSB0ZXN0X3RyaWcudHJpZ190MSAoaWQgaW50ZWdlcik7CitjcmVhdGUgdGFibGUgdGVz dF90cmlnLnRyaWdfdDIgKGlkIGludGVnZXIpOworYWx0ZXIgZnVuY3Rpb24gd2hvYW1pKCkgc2V0 IHNjaGVtYSB0ZXN0X3RyaWc7CisKK2NyZWF0ZSBjb25zdHJhaW50IHRyaWdnZXIgY29uX3RyaWdf dGVzdCBhZnRlciBpbnNlcnQgb24gdGVzdF90cmlnLnRyaWdfdDEKK2Zyb20gdGVzdF90cmlnLnRy aWdfdDIKK2RlZmVycmFibGUgaW5pdGlhbGx5IGRlZmVycmVkCitmb3IgZWFjaCByb3cKK2V4ZWN1 dGUgZnVuY3Rpb24gdGVzdF90cmlnLndob2FtaSgpOworCitjcmVhdGUgdGFibGUgdHJpZ190MV9j b3B5KGxpa2UgdGVzdF90cmlnLnRyaWdfdDEgaW5jbHVkaW5nIHRyaWdnZXJzKTsKK3NlbGVjdCBw Z19nZXRfdHJpZ2dlcmRlZihvaWQpIGZyb20gcGdfdHJpZ2dlciB3aGVyZSB0Z3JlbGlkID0gJ3Ry aWdfdDFfY29weSc6OnJlZ2NsYXNzOworCithbHRlciBmdW5jdGlvbiB0ZXN0X3RyaWcud2hvYW1p KCkgc2V0IHNjaGVtYSBwdWJsaWM7Citkcm9wIHRhYmxlIHRlc3RfdHJpZy50cmlnX3QxLCB0ZXN0 X3RyaWcudHJpZ190MiwgdHJpZ190MV9jb3B5OworZHJvcCBzY2hlbWEgdGVzdF90cmlnOworCiBj cmVhdGUgdGFibGUgZGVmZXJfdHJpZyAoaWQgaW50ZWdlcik7CiBncmFudCBpbnNlcnQgb24gZGVm ZXJfdHJpZyB0byBwdWJsaWM7CiBjcmVhdGUgY29uc3RyYWludCB0cmlnZ2VyIHdob2FtaSBhZnRl ciBpbnNlcnQgb24gZGVmZXJfdHJpZwotLSAKMi4zNC4xCgo= --000000000000a1bc5306487c6167--