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 1wgzQY-006XMl-1a for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2026 06:37:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wgzQX-004rLC-10 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2026 06:37:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wgzQW-004rL4-2m for pgsql-hackers@lists.postgresql.org; Tue, 07 Jul 2026 06:37:04 +0000 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wgzQU-00000002CBv-19Ac for pgsql-hackers@lists.postgresql.org; Tue, 07 Jul 2026 06:37:04 +0000 Received: by mail-ot1-x336.google.com with SMTP id 46e09a7af769-7e6b554044fso2965570a34.0 for ; Mon, 06 Jul 2026 23:37:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783406220; cv=none; d=google.com; s=arc-20260327; b=JmiZkLv7kz8bk9u9WVDiGpdL10zzbrNaHIuhTUXQx04GD5ENzIr9F/LXZlGEXshfIF S7etbGSyxcy77HrmKfVHtPUji78LijORo6IQdM4EQ/8X7lhJdzxV2a1yA8AXwy4wJfW/ eHD/JgwMSIQmk9n7Vqi68m876OyCjmsJmmzw451Iiwuz1odVXQoFeHHQZah0rfWGGL4K tSUt7P3cpk2F4i5Sm2iHYFeTM9K/u0oL18fa08Ga0N45HwY/TlUDptz6MsvV1NFmHsVI HwOonY2HLeAJtKiZ18S5Q039HXy6No8vIjPhsRWV7X3p16a8yAp8RA8KrUoApehX6U8h y5mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=STYhGe45s4WtCREmYmLAPqHELpnigxsx9BJuHF6N2/4=; fh=5spV5qyrt1IOKXmDrzA0/jq/Dmxl9U01OBUUpgP39qs=; b=EIKUUMp6V/WGiZshUTqXXw03BPadUjgrK3FVLNj2BasBnpX/knGw+1zW9S+wdT0FGT G/C9TPSiSXXC+LEHJFF8tym/KR1Wsu9NvkWVJKDw8csNEaG8Fdw3UjGiPu/VUiXMK3Bt oh0Gfk3SsDkJER3RPdPvx2ff6i8nQFwG06r/WwEPdkWyHdEWHCGTNBOsT3XYFPo04q/K MR7vV4ntph8OcY1G4JgHEIK3gdm7cOBs66GzWNunbMFSTzQ1cfjpnq0P5il+Xqiuel1K tRYflP7ItY096yax4/05Mv52b5+a7tuwTN3XupeTRt7035yWldBHERENe5P2FudT+MKz fbJQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783406220; x=1784011020; 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=STYhGe45s4WtCREmYmLAPqHELpnigxsx9BJuHF6N2/4=; b=P7QQ98SKywldW/iZHYI6eZBX2+9jIJoQR155Bg+MI47l7gz2wlNWPZbs/Mfx9iQw9U TLbKOcw4ilVayX2lcM/7o0MtOI+afF//gibvQd61eFSxyu8euNeucUGbVEEETNEO9NLR 6/ulBtBO88e7qcVhSUbgsEazdpAdHzI+kSv9ds5ZAVk2pBKi6MyGNoomCYuO3mQ5bmxk y9hzf5qvh4PRgs4PqbKztvmXvDLNiPshm/IJGhBhSEdPQdQFYGXldSGYCrklHjnLyJpO ExfDR0fHrlgyIQBCtzxIL4du5mTv0aXw8bOlkyUxOf1Ex02msi0OeZMZ25mKHP50NWJ6 V95g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783406220; x=1784011020; 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=STYhGe45s4WtCREmYmLAPqHELpnigxsx9BJuHF6N2/4=; b=DkGni/mJF8i7kGw7keD+iioKkAk2cS2N1syqGNjqWyWIbRaf03Eefm6rNoTFVmEKfK DTqkLE0Hv/Euvx8YLl80DpbbRYcXZZ/jbDN37dUUxi+S0HhiwkXCqro9ZLMWX5Vgzjm/ P5/m2rIK6q3M8Vri8f9PtKL08ouW88vM6xxgg6Vz2qDrSLN8osRVpZYtET2+KIscY/Mw RDd/VkInaMCan3NsMY2zHNAdbwuaRwWux3luPQVhWECa2uTAHgTGA9lm7k5Z+f2a9cbY DPhrkfjps3qHKUByMaW8c3VK4i+n1V00W0Kccm7FhJ5JxUVIzFiO6jTYy0MK0KFEpzdu vWWw== X-Forwarded-Encrypted: i=1; AFNElJ+moW4zMjLCw8AGGWs3+6Ifg+aqMcQH3xLZIUo2xTiTPukCo5490rnO0JJSmQ1xbnrWik6vKF82lXnDXg4P@lists.postgresql.org X-Gm-Message-State: AOJu0YxOi7Zjejmc6L7ViVjHW4w5S2A4SONHzM/LNybcsax6SCtfHq3N Ab1HSZPF367g2WFW7NlYA1pU4Anig0cJHwhgdb+7cxusfhZB0QMaE+Nkk6noL7ZTxl7DWBZqOwx j5GcR0Oe7pJ+mfjJbrOUgMguREmup2UI= X-Gm-Gg: AfdE7clfQdyRuO7vcGGc02pVGLf6jamn4vVvXlcJ0dZGxKV7iwtDgoL5zXlEdO9gI6y mkaO3MpeSV0dD/W+4oSRXdST9Fb/Wy4yHa8vmmbAfJpBTfZc5zd6M/SWSf15iVDOeKNPhHMcg8O sL1EKXfii3gareNwJQSgDxWzVuluZJ64t3alAPPX8yzdfdvsaiqA3MyLh6DAxKNZWzS7WVMIXTp fpJB3LOtYzkiMCAIz0xJKAWYCOsOxYAjXGVJ57Xdilj55Hh01N9d3KJnStDtoX4nUsxiFHxF5Y= X-Received: by 2002:a05:6830:488b:b0:7e9:b4d0:df75 with SMTP id 46e09a7af769-7ebb23a365amr2943258a34.29.1783406220474; Mon, 06 Jul 2026 23:37:00 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Tue, 7 Jul 2026 12:06:48 +0530 X-Gm-Features: AVVi8CcQCSnBBFZP12IXaRvW0AK9g6-9Y0BQ_o9N7VFiT_CGbVDsRKQo-LT2DMk Message-ID: Subject: Re: Support EXCEPT for ALL SEQUENCES publications To: Ashutosh Sharma Cc: Peter Smith , shveta malik , vignesh C , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000433dd70655ff9e5e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000433dd70655ff9e5e Content-Type: text/plain; charset="UTF-8" On Mon, 6 Jul 2026 at 11:34, Ashutosh Sharma wrote: > > Thanks for fixing this. I found a few cosmetics issues while reviewing > the latest patches, please see if these make sense to you: > > +# Check ALTER PUBLICATION ... ALL SEQUENCES (EXCEPT SEQUENCE ...) > +$node_publisher->safe_psql( > > The placement of the EXCEPT clause here doesn't match the actual > supported syntax. The correct form is: > > CREATE PUBLICATION combined_pub_seq FOR ALL SEQUENCES EXCEPT ( SEQUENCE ... ) > > -- > > + * Get the list of tables and sequences for publications specified in > + * the EXCEPT clause. > > Above comment doesn't look clearer to me. Perhaps something like "for > tables and sequences specified in the publication's EXCEPT clause" > would read more clearly. What do you think? > > -- > > + /* Print publications where the sequence is in the EXCEPT clause */ > + if (pset.sversion >= 200000) > > This doesn't read well as well, how about "Print publications whose > EXCEPT clause contains this sequence"? > > -- > > + * In FOR ALL TABLES/ FOR ALL SEQUENCES mode, relations are > > This seems to be having uneven spacing. I would rather replace '/' > with 'or' here. > Hi Ashutosh, Thanks for reviewing the patch. I agree with your comments and addressed it in the lastest v19 patch. I also noticed that the CI runs are failing. It is failing because of the new test added in 0002 patch. After we alter the publication and change the sequences in the EXCEPT list, we should run 'ALTER SUBSCRIPTION ... REFRESH PUBLICATION' on the subscription, so the same is reflected on the pg_subscription_rel. I have made the change for the same in the updated patch. Thanks Shlok Kyal --000000000000433dd70655ff9e5e Content-Type: application/octet-stream; name="v19-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLIC.patch" Content-Disposition: attachment; filename="v19-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLIC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mra9vm2c1 RnJvbSBjNzYyNDZiMjkwMmUzYzc0M2JlZmMzYmNiNTkwYTgwMTc0OTlhOGZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMSBKdWwgMjAyNiAxMjoxMjo0NyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjE5 IDIvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQUxURVIgUFVCTElDQVRJ T04KCkV4dGVuZCBBTFRFUiBQVUJMSUNBVElPTiB0byBzdXBwb3J0IGFuIEVYQ0VQVCBjbGF1c2Ug d2hlbiB1c2luZwpBTEwgU0VRVUVOQ0VTLCBhbGxvd2luZyBzcGVjaWZpYyBzZXF1ZW5jZXMgdG8g YmUgZXhjbHVkZWQgZnJvbSB0aGUKcHVibGljYXRpb24uCgpJZiB0aGUgRVhDRVBUIGNsYXVzZSBp cyBzcGVjaWZpZWQsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBmb3IgdGhlCnB1YmxpY2F0 aW9uIGlzIHJlcGxhY2VkIHdpdGggdGhlIHByb3ZpZGVkIHNlcXVlbmNlcy4gSWYgdGhlIEVYQ0VQ VApjbGF1c2UgaXMgb21pdHRlZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHNlcXVlbmNl cyBhcmUgY2xlYXJlZC4KCkV4YW1wbGU6CgogIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgU0VUIEFM TCBTRVFVRU5DRVM7CgpUaGlzIGNsZWFycyBhbnkgZXhpc3Rpbmcgc2VxdWVuY2UgZXhjbHVzaW9u cyBmb3IgdGhlIHB1YmxpY2F0aW9uLgoKICBBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFNFVCBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEsIHMyKTsKClRoaXMgc2V0cyB0aGUgZXhjbHVz aW9uIGxpc3QgdG8gdGhlIHNwZWNpZmllZCBzZXF1ZW5jZXMuCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgfCAgNTEgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgMzYgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyAgICB8IDI2OCArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgfCAgMTQgKysKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHVibGljYXRpb24uaCAgICAgIHwgICA2ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3B1YmxpY2F0aW9uLm91dCB8ICAzNSArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbCAgICAgIHwgIDEzICsrCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhj ZXB0LnBsICAgICB8ICAyMCArKwogOSBmaWxlcyBjaGFuZ2VkLCAyOTIgaW5zZXJ0aW9ucygrKSwg MTUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVi bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApp bmRleCA1MjExNGExNmEzOS4uZDgyZmYzMDc5ZGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwKQEAgLTM2LDcgKzM2LDcgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIK IDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9h bGxfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgQUxMIFRB QkxFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFi bGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCi0gICAgQUxMIFNFUVVFTkNFUwor ICAgIEFMTCBTRVFVRU5DRVMgWyBFWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhjZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogCiA8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fZHJv cF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTU0LDYgKzU0 LDEwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+ CiAKICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0KKworPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmV4Y2VwdF9zZXF1ZW5jZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFz ZT4KKworICAgIFNFUVVFTkNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5j ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNp c2Rpdj4KIApAQCAtNzMsOSArNzcsOSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogCiAgIDxw YXJhPgogICAgVGhlIHRoaXJkIHZhcmlhbnQgZWl0aGVyIG1vZGlmaWVzIHRoZSBpbmNsdWRlZCB0 YWJsZXMvc2NoZW1hcwotICAgb3IgbWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIDxsaXRlcmFsPkZP UiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBvcgotICAgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8 L2xpdGVyYWw+LCBvcHRpb25hbGx5IHVzaW5nCi0gICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+ IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVzLiBUaGUKKyAgIG9yIG1hcmtzIHRoZSBwdWJsaWNh dGlvbiBhcyA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IKKyAgIDxsaXRlcmFs PkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiwgb3B0aW9uYWxseSB1c2luZworICAgPGxpdGVy YWw+RVhDRVBUPC9saXRlcmFsPiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBvciBzZXF1ZW5j ZXMuIFRoZQogICAgPGxpdGVyYWw+U0VUIEFMTCBUQUJMRVM8L2xpdGVyYWw+IGNsYXVzZSBjYW4g dHJhbnNmb3JtIGFuIGVtcHR5IHB1YmxpY2F0aW9uLAogICAgb3Igb25lIGRlZmluZWQgZm9yIDxs aXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+IChvciBib3RoCiAgICA8bGl0ZXJhbD5BTEwg VEFCTEVTPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4pLCBp bnRvCkBAIC04NiwxMSArOTAsMTUgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgIHB1Ymxp Y2F0aW9uIGRlZmluZWQgZm9yIDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBJbiBh ZGRpdGlvbiwKICAgIDxsaXRlcmFsPlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiBjYW4gYmUgdXNl ZCB0byB1cGRhdGUgdGhlIHRhYmxlcyBzcGVjaWZpZWQKICAgIGluIHRoZSA8bGl0ZXJhbD5FWENF UFQ8L2xpdGVyYWw+IGNsYXVzZSBvZiBhCi0gICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0 ZXJhbD4gcHVibGljYXRpb24uIElmIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgIGlzIHNw ZWNpZmllZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlz dCBpcyByZXBsYWNlZAotICAgd2l0aCB0aGUgc3BlY2lmaWVkIHRhYmxlcy4gSWYgPGxpdGVyYWw+ RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUKLSAgIGV4aXN0aW5nIGV4Y2x1c2lvbiBs aXN0IGlzIGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbgot ICAgdXNlZCB3aXRoIGEgcHVibGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJM RTwvbGl0ZXJhbD4gb3IKKyAgIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBwdWJs aWNhdGlvbiBhbmQKKyAgIDxsaXRlcmFsPlNFVCBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBjYW4g YmUgdXNlZCB0byB1cGRhdGUgdGhlIHNlcXVlbmNlcworICAgc3BlY2lmaWVkIGluIHRoZSA8bGl0 ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBvZiBhCisgICA8bGl0ZXJhbD5GT1IgQUxMIFNF UVVFTkNFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24uIElmCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xp dGVyYWw+IGlzIHNwZWNpZmllZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMgb3Igc2VxdWVuY2VzLAor ICAgdGhlIGV4aXN0aW5nIGV4Y2x1c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNp ZmllZCB0YWJsZXMgb3IKKyAgIHNlcXVlbmNlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFs PiBpcyBvbWl0dGVkLCB0aGUgZXhpc3RpbmcgZXhjbHVzaW9uCisgICBsaXN0IGlzIGNsZWFyZWQu IFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbiB1c2VkIHdpdGggYQorICAg cHVibGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IK ICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgcmVwbGFjZXMgdGhl IGxpc3Qgb2YgdGFibGVzL3NjaGVtYXMKICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBz cGVjaWZpZWQgbGlzdDsgdGhlIGV4aXN0aW5nIHRhYmxlcyBvciBzY2hlbWFzCiAgICB0aGF0IHdl cmUgcHJlc2VudCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgpAQCAtMjczLDEw ICsyODEsMzEgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgQUxMIFRBQkxF UyBFWENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cykKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9w YXJhPgogCiAgIDxwYXJhPgotICAgUmVzZXQgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGEgPGxpdGVy YWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+IHB1YmxpY2F0aW9uCi0gICB3aXRoIG5vIGV4Y2x1 ZGVkIHRhYmxlczoKKyAgIFJlc2V0IHRoZSBwdWJsaWNhdGlvbiB0byBiZSA8bGl0ZXJhbD5GT1Ig QUxMIFRBQkxFUzwvbGl0ZXJhbD4gd2l0aCBubworICAgZXhjbHVzaW9uczoKIDxwcm9ncmFtbGlz dGluZz4KIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gU0VUIEFMTCBUQUJMRVM7Cis8 L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJlc2V0IHRoZSBwdWJsaWNh dGlvbiB0byBiZSA8bGl0ZXJhbD5BTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiB3aXRoIG5vCisgICBl eGNsdXNpb25zOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNh dGlvbiBTRVQgQUxMIFNFUVVFTkNFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxw YXJhPgorICAgUmVwbGFjZSB0aGUgc2VxdWVuY2UgbGlzdCBpbiB0aGUgcHVibGljYXRpb24ncyA8 bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+CisgICBjbGF1c2U6Cis8cHJvZ3JhbWxpc3Rpbmc+CitB TFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAo U0VRVUVOQ0Ugc2VxMSwgc2VxMik7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFy YT4KKyAgIFJlcGxhY2UgdGhlIHRhYmxlIGFuZCBzZXF1ZW5jZSBsaXN0IGluIHRoZSBwdWJsaWNh dGlvbidzCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZXM6Cis8cHJvZ3JhbWxp c3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFCTEVTIEVY Q0VQVCAoVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzKSwgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNF UVVFTkNFIHNlcTEsIHNlcTIpOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAgPHBhcmE+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWViNGRlNzQ0ZGUuLjMyODUw MDAyZTU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC05NTYsNyArOTU2 LDcgQEAgR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAgKi8KIHN0 YXRpYyBMaXN0ICoKIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNh dGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCi0JCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcpCisJCQkJ CQkgIGJvb2wgZXhjZXB0X2ZsYWcsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0CSAgICpyZXN1 bHQ7CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTk2NCw2ICs5NjQsOCBAQCBnZXRfcHVibGlj YXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 LAogCVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2VydChwdWJyZWxr aW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcHVicmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNF KTsKKwogCS8qIEZpbmQgYWxsIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0 aW9uLiAqLwogCXB1YnJlbHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtOTgzLDggKzk4NSwxNSBAQCBnZXRfcHVibGljYXRp b25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAog CQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwogCiAJ CWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQotCQkJcmVzdWx0ID0gR2V0UHVi UGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJCQkJ CQkJcHVicmVsLT5wcnJlbGlkKTsKKwkJeworCQkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVs a2luZChwdWJyZWwtPnBycmVsaWQpOworCisJCQlpZiAoKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9S RUxBVElPTiAmJgorCQkJCSAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8IHJlbGtpbmQg PT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkpIHx8CisJCQkJKHB1YnJlbGtpbmQgPT0gUkVM S0lORF9TRVFVRU5DRSAmJiByZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpKQorCQkJCXJlc3Vs dCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAor CQkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOworCQl9CiAJfQogCiAJc3lzdGFibGVfZW5k c2NhbihzY2FuKTsKQEAgLTEwMDAsMTUgKzEwMDksMTYgQEAgZ2V0X3B1YmxpY2F0aW9uX3JlbGF0 aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKIC8qCiAgKiBH ZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBwdWJs aWNhdGlvbi4KICAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFIHB1Ymxp Y2F0aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUwotICogc2hvdWxkIHVzZSBHZXRB bGxQdWJsaWNhdGlvblJlbGF0aW9ucygpLgorICogVGhpcyBpcyBtYWlubHkgdXNlZCBmb3IgRk9S IFRBQkxFIHB1YmxpY2F0aW9ucyBhbmQgbXVzdCBub3QgYmUgY2FsbGVkIGZvcgorICogQUxMIFRB QkxFUyBwdWJsaWNhdGlvbnMuIEZvciBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucywgdGhlIHJl c3VsdCBpcyBhbgorICogZW1wdHkgbGlzdC4KICAqLwogTGlzdCAqCiBHZXRJbmNsdWRlZFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQogewogCUFzc2VydCghR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMpOwogCi0JcmV0 dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCBmYWxzZSk7 CisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCBm YWxzZSwgUkVMS0lORF9SRUxBVElPTik7CiB9CiAKIC8qCkBAIC0xMDE2LDcgKzEwMjYsOCBAQCBH ZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0KQogICogJ0ZPUiBBTEwgVEFCTEVTJyBvciBhICdGT1IgQUxMIFNFUVVF TkNFUycgcHVibGljYXRpb24uCiAgKi8KIExpc3QgKgotR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK0dldEV4 Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQsCisJCQkJCQkJCWNoYXIgcHVicmVsa2luZCkKIHsKICNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCiAJUHVibGljYXRpb24gKnB1YiA9IEdldFB1YmxpY2F0aW9uKHB1YmlkKTsK QEAgLTEwMjQsNyArMTAzNSw3IEBAIEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lk IHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJQXNzZXJ0KHB1Yi0+YWxs dGFibGVzIHx8IHB1Yi0+YWxsc2VxdWVuY2VzKTsKICNlbmRpZgogCi0JcmV0dXJuIGdldF9wdWJs aWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKKwlyZXR1cm4gZ2V0 X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUsIHB1YnJlbGtp bmQpOwogfQogCiAvKgpAQCAtMTA3OCw3ICsxMDg5LDcgQEAgR2V0QWxsVGFibGVzUHVibGljYXRp b25zKHZvaWQpCiAgKiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMgc3BlY2lmaWVkIGluIHRoZSBFWENF UFQgY2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBw dWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitHZXRBbGxQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcHVicmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogewog CVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKQEAgLTEwODcsMTggKzEw OTgsMTkgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtp bmQsIGJvb2wgcHVidmlhcm9vdCkKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJTGlzdAkgICAq ZXhjZXB0bGlzdCA9IE5JTDsKIAotCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5D RSAmJiBwdWJ2aWFyb290KSk7CisJQXNzZXJ0KCEocHVicmVsa2luZCA9PSBSRUxLSU5EX1NFUVVF TkNFICYmIHB1YnZpYXJvb3QpKTsKIAogCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQkJ CQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJCQkJCQkJIHB1YnJlbGtpbmQp OwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKIAogCVNjYW5LZXlJbml0KCZrZXlbMF0sCiAJCQkJQW51bV9wZ19jbGFzc19yZWxr aW5kLAogCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9DSEFSRVEsCi0JCQkJQ2hhckdldERh dHVtKHJlbGtpbmQpKTsKKwkJCQlDaGFyR2V0RGF0dW0ocHVicmVsa2luZCkpOwogCiAJc2NhbiA9 IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBrZXkpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IGJkMTcxZjllNDhlLi5iZDFmMWNjZWQzNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTY2LDcgKzY2LDcgQEAg c3RhdGljIHZvaWQgQ2xvc2VSZWxhdGlvbkxpc3QoTGlzdCAqcmVscyk7CiBzdGF0aWMgdm9pZCBM b2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9u QWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAog CQkJCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNoYXIgcHVicmVsa2luZCk7Ci1z dGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBi b29sIG1pc3Npbmdfb2spOworc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKE9p ZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyB2b2lkIFB1Ymxp Y2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4 aXN0cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBzdGF0aWMgdm9p ZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBt aXNzaW5nX29rKTsKQEAgLTEyNTMsMjYgKzEyNTMsMTMxIEBAIEludmFsaWRhdGVQdWJsaWNhdGlv blJlbHMoTGlzdCAqcmVsaWRzKQogfQogCiAvKgotICogQWRkIG9yIHJlbW92ZSB0YWJsZSB0by9m cm9tIHB1YmxpY2F0aW9uLgorICogUmV0dXJuIHRoZSBsaXN0IG9mIHRhYmxlcy9zZXF1ZW5jZXMg dG8gYmUgcmVtb3ZlZCBmcm9tIGEgcHVibGljYXRpb24gZHVyaW5nCisgKiBBTFRFUiBQVUJMSUNB VElPTiAuLi4gU0VULgorICoKKyAqICdyZWxzJyBjb250YWlucyB0aGUgcmVsYXRpb25zIHNwZWNp ZmllZCBieSB0aGUgU0VUIGNvbW1hbmQsIGFuZCAnb2xkcmVsaWRzJworICogY29udGFpbnMgdGhl IGV4aXN0aW5nIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uIFRoZSBmdW5jdGlvbiByZXR1 cm5zIHRoZQorICogZXhpc3RpbmcgcmVsYXRpb25zIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluICdy ZWxzJyBhbmQgdGhlcmVmb3JlIG5lZWQgdG8gYmUKKyAqIHJlbW92ZWQuCisgKi8KK3N0YXRpYyBM aXN0ICoKK2dldF9kZWxldGVfcmVscyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIExpc3QgKm9sZHJl bGlkcykKK3sKKwlMaXN0CSAgICpkZWxyZWxzID0gTklMOworCisJZm9yZWFjaF9vaWQob2xkcmVs aWQsIG9sZHJlbGlkcykKKwl7CisJCUxpc3RDZWxsICAgKm5ld2xjOworCQlQdWJsaWNhdGlvblJl bEluZm8gKm9sZHJlbDsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJSGVhcFR1cGxlCXJmdHVw bGU7CisJCU5vZGUJICAgKm9sZHJlbHdoZXJlY2xhdXNlID0gTlVMTDsKKwkJQml0bWFwc2V0ICAq b2xkY29sdW1ucyA9IE5VTEw7CisKKwkJLyogTG9vayB1cCB0aGUgY2FjaGUgZm9yIHRoZSBvbGQg cmVsbWFwICovCisJCXJmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAs CisJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShvbGRyZWxpZCksCisJCQkJCQkJCSAgT2JqZWN0 SWRHZXREYXR1bShwdWJpZCkpOworCisJCS8qCisJCSAqIFNlZSBpZiB0aGUgZXhpc3RpbmcgcmVs YXRpb24gY3VycmVudGx5IGhhcyBhIFdIRVJFIGNsYXVzZSBvciBhCisJCSAqIGNvbHVtbiBsaXN0 LiBXZSBuZWVkIHRvIGNvbXBhcmUgdGhvc2UgdG9vLgorCQkgKi8KKwkJaWYgKEhlYXBUdXBsZUlz VmFsaWQocmZ0dXBsZSkpCisJCXsKKwkJCWJvb2wJCWlzbnVsbCA9IHRydWU7CisJCQlEYXR1bQkJ d2hlcmVDbGF1c2VEYXR1bTsKKwkJCURhdHVtCQljb2x1bW5MaXN0RGF0dW07CisKKwkJCS8qIExv YWQgdGhlIFdIRVJFIGNsYXVzZSBmb3IgdGhpcyB0YWJsZS4gKi8KKwkJCXdoZXJlQ2xhdXNlRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJmdHVwbGUsCisJCQkJCQkJ CQkJCSAgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycXVhbCwKKwkJCQkJCQkJCQkJICAgJmlz bnVsbCk7CisJCQlpZiAoIWlzbnVsbCkKKwkJCQlvbGRyZWx3aGVyZWNsYXVzZSA9IHN0cmluZ1Rv Tm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHdoZXJlQ2xhdXNlRGF0dW0pKTsKKworCQkJLyogVHJh bnNmb3JtIHRoZSBpbnQydmVjdG9yIGNvbHVtbiBsaXN0IHRvIGEgYml0bWFwLiAqLworCQkJY29s dW1uTGlzdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxl LAorCQkJCQkJCQkJCQkgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMsCisJCQkJCQkJ CQkJCSAgJmlzbnVsbCk7CisKKwkJCWlmICghaXNudWxsKQorCQkJCW9sZGNvbHVtbnMgPSBwdWJf Y29sbGlzdF90b19iaXRtYXBzZXQoTlVMTCwgY29sdW1uTGlzdERhdHVtLCBOVUxMKTsKKworCQkJ UmVsZWFzZVN5c0NhY2hlKHJmdHVwbGUpOworCQl9CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgYW55 IG9mIHRoZSBuZXcgc2V0IG9mIHJlbGF0aW9ucyBtYXRjaGVzIHdpdGggdGhlIGV4aXN0aW5nCisJ CSAqIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uIEFkZGl0aW9uYWxseSwgaWYgdGhlIHJl bGF0aW9uIGhhcyBhbgorCQkgKiBhc3NvY2lhdGVkIFdIRVJFIGNsYXVzZSwgY2hlY2sgdGhlIFdI RVJFIGV4cHJlc3Npb25zIGFsc28gbWF0Y2guCisJCSAqIFNhbWUgZm9yIHRoZSBjb2x1bW4gbGlz dC4gRHJvcCB0aGUgcmVzdC4KKwkJICovCisJCWZvcmVhY2gobmV3bGMsIHJlbHMpCisJCXsKKwkJ CVB1YmxpY2F0aW9uUmVsSW5mbyAqbmV3cHVicmVsOworCQkJT2lkCQkJbmV3cmVsaWQ7CisJCQlC aXRtYXBzZXQgICpuZXdjb2x1bW5zID0gTlVMTDsKKworCQkJbmV3cHVicmVsID0gKFB1YmxpY2F0 aW9uUmVsSW5mbyAqKSBsZmlyc3QobmV3bGMpOworCQkJbmV3cmVsaWQgPSBSZWxhdGlvbkdldFJl bGlkKG5ld3B1YnJlbC0+cmVsYXRpb24pOworCisJCQkvKgorCQkJICogVmFsaWRhdGUgdGhlIGNv bHVtbiBsaXN0LiAgSWYgdGhlIGNvbHVtbiBsaXN0IG9yIFdIRVJFIGNsYXVzZQorCQkJICogY2hh bmdlcywgdGhlbiB0aGUgdmFsaWRhdGlvbiBkb25lIGhlcmUgd2lsbCBiZSBkdXBsaWNhdGVkCisJ CQkgKiBpbnNpZGUgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoKS4gIFRoZSB2YWxpZGF0aW9uIGlz IGNoZWFwCisJCQkgKiBlbm91Z2ggdGhhdCB0aGF0IHNlZW1zIGhhcm1sZXNzLgorCQkJICovCisJ CQluZXdjb2x1bW5zID0gcHViX2NvbGxpc3RfdmFsaWRhdGUobmV3cHVicmVsLT5yZWxhdGlvbiwK KwkJCQkJCQkJCQkJICBuZXdwdWJyZWwtPmNvbHVtbnMpOworCisJCQlmb3VuZCA9IChuZXdyZWxp ZCA9PSBvbGRyZWxpZCkgJiYKKwkJCQllcXVhbChvbGRyZWx3aGVyZWNsYXVzZSwgbmV3cHVicmVs LT53aGVyZUNsYXVzZSkgJiYKKwkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3Y29sdW1ucyk7 CisKKwkJCWlmIChmb3VuZCkKKwkJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIEFkZCBub24t bWF0Y2hpbmcgcmVsYXRpb25zIHRvIHRoZSBkcm9wIGxpc3QuIFRoZSByZWxhdGlvbiB3aWxsIGJl CisJCSAqIGRyb3BwZWQgaXJyZXNwZWN0aXZlIG9mIHRoZSBjb2x1bW4gbGlzdCBhbmQgV0hFUkUg Y2xhdXNlLgorCQkgKi8KKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJb2xkcmVsID0gcGFsbG9jMF9v YmplY3QoUHVibGljYXRpb25SZWxJbmZvKTsKKwkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9v cGVuKG9sZHJlbGlkLAorCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJ CWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7CisJCX0KKwl9CisKKwlyZXR1cm4g ZGVscmVsczsKK30KKworLyoKKyAqIEFkZCBvciByZW1vdmUgdGFibGUgb3Igc2VxdWVuY2UgdG8v ZnJvbSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLUFsdGVyUHVibGljYXRpb25UYWJs ZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJCSAgIExp c3QgKnRhYmxlcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCi0JCQkJCSAgIGJvb2wgcHVibGlz aF9zY2hlbWEpCitBbHRlclB1YmxpY2F0aW9uUmVsYXRpb25zKEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LCBIZWFwVHVwbGUgdHVwLAorCQkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnNlcXVl bmNlcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCisJCQkJCQkgIGJvb2wgcHVibGlzaF9zY2hl bWEpCiB7CiAJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlMaXN0CSAgICpzZXFzID0gTklMOwogCUZv cm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJV Q1QodHVwKTsKIAlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKIAogCS8qCi0JICogTm90aGlu ZyB0byBkbyBpZiBubyBvYmplY3RzLCBleGNlcHQgaW4gU0VUOiBmb3IgdGhhdCBpdCBpcyBxdWl0 ZQotCSAqIHBvc3NpYmxlIHRoYXQgdXNlciBoYXMgbm90IHNwZWNpZmllZCBhbnkgdGFibGVzIGlu IHdoaWNoIGNhc2Ugd2UgbmVlZAotCSAqIHRvIHJlbW92ZSBhbGwgdGhlIGV4aXN0aW5nIHRhYmxl cy4KKwkgKiBOb3RoaW5nIHRvIGRvIGlmIG5vIG9iamVjdHMgd2VyZSBzcGVjaWZpZWQsIHVubGVz cyB0aGlzIGlzIGEgU0VUCisJICogY29tbWFuZCwgd2hpY2ggbWF5IG5lZWQgdG8gcmVtb3ZlIGFs bCBleGlzdGluZyB0YWJsZXMgYW5kIHNlcXVlbmNlcy4KIAkgKi8KLQlpZiAoIXRhYmxlcyAmJiBz dG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKKwlpZiAoIXRhYmxlcyAmJiAhc2VxdWVuY2Vz ICYmIHN0bXQtPmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQogCQlyZXR1cm47CiAKIAlyZWxzID0g T3BlblJlbGF0aW9uTGlzdCh0YWJsZXMpOworCXNlcXMgPSBPcGVuUmVsYXRpb25MaXN0KHNlcXVl bmNlcyk7CiAKIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCiAJewpAQCAtMTI4 NiwyOSArMTM5MSwzMyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJp ZCwgcmVscywgZmFsc2UsIHN0bXQsIFJFTEtJTkRfUkVMQVRJT04pOwogCX0KIAllbHNlIGlmIChz dG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhw dWJpZCwgcmVscywgZmFsc2UpOworCQlQdWJsaWNhdGlvbkRyb3BSZWxhdGlvbnMocHViaWQsIHJl bHMsIGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0cyAqLwogCXsKIAkJTGlzdAkg ICAqb2xkcmVsaWRzID0gTklMOworCQlMaXN0CSAgICpvbGRzZXFpZHMgPSBOSUw7CiAJCUxpc3QJ ICAgKmRlbHJlbHMgPSBOSUw7Ci0JCUxpc3RDZWxsICAgKm9sZGxjOwogCiAJCWlmIChzdG10LT5m b3JfYWxsX3RhYmxlcyB8fCBzdG10LT5mb3JfYWxsX3NlcXVlbmNlcykKIAkJewogCQkJLyoKLQkJ CSAqIEluIEZPUiBBTEwgVEFCTEVTIG1vZGUsIHJlbGF0aW9ucyBhcmUgdHJhY2tlZCBhcyBleGNs dXNpb25zCi0JCQkgKiAoRVhDRVBUIGNsYXVzZSkuIEZldGNoIHRoZSBjdXJyZW50IGV4Y2x1ZGVk IHJlbGF0aW9ucyBzbyB0aGV5Ci0JCQkgKiBjYW4gYmUgcmVjb25jaWxlZCB3aXRoIHRoZSBzcGVj aWZpZWQgRVhDRVBUIGxpc3QuCisJCQkgKiBJbiBGT1IgQUxMIFRBQkxFUyBvciBGT1IgQUxMIFNF UVVFTkNFUyBtb2RlLCByZWxhdGlvbnMgYXJlCisJCQkgKiB0cmFja2VkIGFzIGV4Y2x1c2lvbnMg KEVYQ0VQVCBjbGF1c2UpLiBGZXRjaCB0aGUgY3VycmVudAorCQkJICogZXhjbHVkZWQgcmVsYXRp b25zIHNvIHRoZXkgY2FuIGJlIHJlY29uY2lsZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisJCQkgKiBF WENFUFQgbGlzdC4KIAkJCSAqCiAJCQkgKiBUaGlzIGFwcGxpZXMgb25seSBpZiB0aGUgZXhpc3Rp bmcgcHVibGljYXRpb24gaXMgYWxyZWFkeQotCQkJICogZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxF Uzsgb3RoZXJ3aXNlLCB0aGVyZSBhcmUgbm8gZXhjbHVzaW9uCi0JCQkgKiBlbnRyaWVzIHRvIHBy b2Nlc3MuCisJCQkgKiBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTIG9yIEZPUiBBTEwgU0VRVUVO Q0VTOyBvdGhlcndpc2UsCisJCQkgKiB0aGVyZSBhcmUgbm8gZXhjbHVzaW9uIGVudHJpZXMgdG8g cHJvY2Vzcy4KIAkJCSAqLwogCQkJaWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKLQkJCXsKIAkJ CQlvbGRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAotCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKLQkJCX0KKwkJCQkJCQkJCQkJCQkJ CVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwKKwkJCQkJCQkJCQkJCQkJCVJFTEtJTkRfUkVMQVRJT04p OworCQkJaWYgKHB1YmZvcm0tPnB1YmFsbHNlcXVlbmNlcykKKwkJCQlvbGRzZXFpZHMgPSBHZXRF eGNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJCQkJUFVCTElD QVRJT05fUEFSVF9ST09ULAorCQkJCQkJCQkJCQkJCQkJUkVMS0lORF9TRVFVRU5DRSk7CiAJCX0K IAkJZWxzZQogCQl7CkBAIC0xMzIxLDExOCArMTQzMCwyNSBAQCBBbHRlclB1YmxpY2F0aW9uVGFi bGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCQkJCQkJ ICAgcHViZm9ybS0+cHVidmlhcm9vdCk7CiAJCX0KIAotCQkvKgotCQkgKiBUbyByZWNyZWF0ZSB0 aGUgcmVsYXRpb24gbGlzdCBmb3IgdGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvcgotCQkgKiBleGlz dGluZyByZWxhdGlvbnMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSBkcm9wcGVkLgotCQkgKi8KLQkJ Zm9yZWFjaChvbGRsYywgb2xkcmVsaWRzKQotCQl7Ci0JCQlPaWQJCQlvbGRyZWxpZCA9IGxmaXJz dF9vaWQob2xkbGMpOwotCQkJTGlzdENlbGwgICAqbmV3bGM7Ci0JCQlQdWJsaWNhdGlvblJlbElu Zm8gKm9sZHJlbDsKLQkJCWJvb2wJCWZvdW5kID0gZmFsc2U7Ci0JCQlIZWFwVHVwbGUJcmZ0dXBs ZTsKLQkJCU5vZGUJICAgKm9sZHJlbHdoZXJlY2xhdXNlID0gTlVMTDsKLQkJCUJpdG1hcHNldCAg Km9sZGNvbHVtbnMgPSBOVUxMOwotCi0JCQkvKiBsb29rIHVwIHRoZSBjYWNoZSBmb3IgdGhlIG9s ZCByZWxtYXAgKi8KLQkJCXJmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxN QVAsCi0JCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ob2xkcmVsaWQpLAotCQkJCQkJCQkJICBP YmplY3RJZEdldERhdHVtKHB1YmlkKSk7Ci0KLQkJCS8qCi0JCQkgKiBTZWUgaWYgdGhlIGV4aXN0 aW5nIHJlbGF0aW9uIGN1cnJlbnRseSBoYXMgYSBXSEVSRSBjbGF1c2Ugb3IgYQotCQkJICogY29s dW1uIGxpc3QuIFdlIG5lZWQgdG8gY29tcGFyZSB0aG9zZSB0b28uCi0JCQkgKi8KLQkJCWlmIChI ZWFwVHVwbGVJc1ZhbGlkKHJmdHVwbGUpKQotCQkJewotCQkJCWJvb2wJCWlzbnVsbCA9IHRydWU7 Ci0JCQkJRGF0dW0JCXdoZXJlQ2xhdXNlRGF0dW07Ci0JCQkJRGF0dW0JCWNvbHVtbkxpc3REYXR1 bTsKLQotCQkJCS8qIExvYWQgdGhlIFdIRVJFIGNsYXVzZSBmb3IgdGhpcyB0YWJsZS4gKi8KLQkJ CQl3aGVyZUNsYXVzZURhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCBy ZnR1cGxlLAotCQkJCQkJCQkJCQkJICAgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJxdWFsLAot CQkJCQkJCQkJCQkJICAgJmlzbnVsbCk7Ci0JCQkJaWYgKCFpc251bGwpCi0JCQkJCW9sZHJlbHdo ZXJlY2xhdXNlID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcod2hlcmVDbGF1c2VE YXR1bSkpOwotCi0JCQkJLyogVHJhbnNmb3JtIHRoZSBpbnQydmVjdG9yIGNvbHVtbiBsaXN0IHRv IGEgYml0bWFwLiAqLwotCQkJCWNvbHVtbkxpc3REYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJM SUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKLQkJCQkJCQkJCQkJCSAgQW51bV9wZ19wdWJsaWNhdGlv bl9yZWxfcHJhdHRycywKLQkJCQkJCQkJCQkJCSAgJmlzbnVsbCk7Ci0KLQkJCQlpZiAoIWlzbnVs bCkKLQkJCQkJb2xkY29sdW1ucyA9IHB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChOVUxMLCBjb2x1 bW5MaXN0RGF0dW0sIE5VTEwpOwotCi0JCQkJUmVsZWFzZVN5c0NhY2hlKHJmdHVwbGUpOwotCQkJ fQotCi0JCQlmb3JlYWNoKG5ld2xjLCByZWxzKQotCQkJewotCQkJCVB1YmxpY2F0aW9uUmVsSW5m byAqbmV3cHVicmVsOwotCQkJCU9pZAkJCW5ld3JlbGlkOwotCQkJCUJpdG1hcHNldCAgKm5ld2Nv bHVtbnMgPSBOVUxMOwotCi0JCQkJbmV3cHVicmVsID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBs Zmlyc3QobmV3bGMpOwotCQkJCW5ld3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChuZXdwdWJyZWwt PnJlbGF0aW9uKTsKLQotCQkJCS8qCi0JCQkJICogVmFsaWRhdGUgdGhlIGNvbHVtbiBsaXN0LiAg SWYgdGhlIGNvbHVtbiBsaXN0IG9yIFdIRVJFCi0JCQkJICogY2xhdXNlIGNoYW5nZXMsIHRoZW4g dGhlIHZhbGlkYXRpb24gZG9uZSBoZXJlIHdpbGwgYmUKLQkJCQkgKiBkdXBsaWNhdGVkIGluc2lk ZSBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucygpLiAgVGhlCi0JCQkJICogdmFsaWRhdGlvbiBpcyBj aGVhcCBlbm91Z2ggdGhhdCB0aGF0IHNlZW1zIGhhcm1sZXNzLgotCQkJCSAqLwotCQkJCW5ld2Nv bHVtbnMgPSBwdWJfY29sbGlzdF92YWxpZGF0ZShuZXdwdWJyZWwtPnJlbGF0aW9uLAotCQkJCQkJ CQkJCQkJICBuZXdwdWJyZWwtPmNvbHVtbnMpOwotCi0JCQkJLyoKLQkJCQkgKiBDaGVjayBpZiBh bnkgb2YgdGhlIG5ldyBzZXQgb2YgcmVsYXRpb25zIG1hdGNoZXMgd2l0aCB0aGUKLQkJCQkgKiBl eGlzdGluZyByZWxhdGlvbnMgaW4gdGhlIHB1YmxpY2F0aW9uLiBBZGRpdGlvbmFsbHksIGlmIHRo ZQotCQkJCSAqIHJlbGF0aW9uIGhhcyBhbiBhc3NvY2lhdGVkIFdIRVJFIGNsYXVzZSwgY2hlY2sg dGhlIFdIRVJFCi0JCQkJICogZXhwcmVzc2lvbnMgYWxzbyBtYXRjaC4gU2FtZSBmb3IgdGhlIGNv bHVtbiBsaXN0LiBEcm9wIHRoZQotCQkJCSAqIHJlc3QuCi0JCQkJICovCi0JCQkJaWYgKG5ld3Jl bGlkID09IG9sZHJlbGlkKQotCQkJCXsKLQkJCQkJaWYgKGVxdWFsKG9sZHJlbHdoZXJlY2xhdXNl LCBuZXdwdWJyZWwtPndoZXJlQ2xhdXNlKSAmJgotCQkJCQkJYm1zX2VxdWFsKG9sZGNvbHVtbnMs IG5ld2NvbHVtbnMpKQotCQkJCQl7Ci0JCQkJCQlmb3VuZCA9IHRydWU7Ci0JCQkJCQlicmVhazsK LQkJCQkJfQotCQkJCX0KLQkJCX0KLQotCQkJLyoKLQkJCSAqIEFkZCB0aGUgbm9uLW1hdGNoZWQg cmVsYXRpb25zIHRvIGEgbGlzdCBzbyB0aGF0IHRoZXkgY2FuIGJlCi0JCQkgKiBkcm9wcGVkLgot CQkJICovCi0JCQlpZiAoIWZvdW5kKQotCQkJewotCQkJCW9sZHJlbCA9IHBhbGxvY19vYmplY3Qo UHVibGljYXRpb25SZWxJbmZvKTsKLQkJCQlvbGRyZWwtPndoZXJlQ2xhdXNlID0gTlVMTDsKLQkJ CQlvbGRyZWwtPmNvbHVtbnMgPSBOSUw7Ci0JCQkJb2xkcmVsLT5leGNlcHQgPSBmYWxzZTsKLQkJ CQlvbGRyZWwtPnJlbGF0aW9uID0gdGFibGVfb3BlbihvbGRyZWxpZCwKLQkJCQkJCQkJCQkJICBT aGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwotCQkJCWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMs IG9sZHJlbCk7Ci0JCQl9Ci0JCX0KKwkJLyogR2V0IHRhYmxlcyBhbmQgc2VxdWVuY2VzIHRvIGJl IGRyb3BwZWQgKi8KKwkJZGVscmVscyA9IGdldF9kZWxldGVfcmVscyhwdWJpZCwgcmVscywgb2xk cmVsaWRzKTsKKwkJZGVscmVscyA9IGxpc3RfY29uY2F0KGRlbHJlbHMsIGdldF9kZWxldGVfcmVs cyhwdWJpZCwgc2Vxcywgb2xkc2VxaWRzKSk7CiAKIAkJLyogQW5kIGRyb3AgdGhlbS4gKi8KLQkJ UHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCBkZWxyZWxzLCB0cnVlKTsKKwkJUHVibGljYXRp b25Ecm9wUmVsYXRpb25zKHB1YmlkLCBkZWxyZWxzLCB0cnVlKTsKIAogCQkvKgogCQkgKiBEb24n dCBib3RoZXIgY2FsY3VsYXRpbmcgdGhlIGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0 Y2ggYW5kCiAJCSAqIHNraXAgZXhpc3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRl LgogCQkgKi8KIAkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIHRydWUsIHN0 bXQsIFJFTEtJTkRfUkVMQVRJT04pOworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwg c2VxcywgdHJ1ZSwgc3RtdCwgUkVMS0lORF9TRVFVRU5DRSk7CiAKIAkJQ2xvc2VSZWxhdGlvbkxp c3QoZGVscmVscyk7CiAJfQogCiAJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CisJQ2xvc2VSZWxh dGlvbkxpc3Qoc2Vxcyk7CiB9CiAKIC8qCkBAIC0xNzA4LDExICsxNzI0LDkgQEAgQWx0ZXJQdWJs aWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQog CQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZy ZWxhdGlvbnMsCiAJCQkJCQkJCSAgICZleGNlcHR0YmxzLCAmZXhjZXB0c2VxcywgJnNjaGVtYWlk bGlzdCk7CiAKLQkJLyoKLQkJICogVE9ETzogRVhDRVBUIChTRVFVRU5DRSAuLi4pIGlzIG5vdCB5 ZXQgc3VwcG9ydGVkIHdpdGggQUxURVIKLQkJICogUFVCTElDQVRJT04uCi0JCSAqLwotCQlBc3Nl cnQoZXhjZXB0c2VxcyA9PSBOSUwpOworCQkvKiBFWENFUFQgY2xhdXNlIGlzIG9ubHkgc3VwcG9y dGVkIGZvciBBTFRFUiBQVUJMSUNBVElPTiAuLi4gU0VUICovCisJCUFzc2VydCgoZXhjZXB0dGJs cyA9PSBOSUwgJiYgZXhjZXB0c2VxcyA9PSBOSUwpIHx8CisJCQkgICBzdG10LT5hY3Rpb24gPT0g QVBfU2V0T2JqZWN0cyk7CiAKIAkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVs YXRpb25zLCBzY2hlbWFpZGxpc3QpOwogCkBAIC0xNzM2LDggKzE3NTAsOCBAQCBBbHRlclB1Ymxp Y2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJ CQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKIAkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVs YXRpb25zLCBleGNlcHR0YmxzKTsKLQkJQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0dXAs IHJlbGF0aW9ucywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCi0JCQkJCQkJICAgc2NoZW1haWRsaXN0 ICE9IE5JTCk7CisJCUFsdGVyUHVibGljYXRpb25SZWxhdGlvbnMoc3RtdCwgdHVwLCByZWxhdGlv bnMsIGV4Y2VwdHNlcXMsCisJCQkJCQkJCSAgcHN0YXRlLT5wX3NvdXJjZXRleHQsIHNjaGVtYWlk bGlzdCAhPSBOSUwpOwogCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVt YWlkbGlzdCk7CiAJCUFsdGVyUHVibGljYXRpb25BbGxGbGFncyhzdG10LCByZWwsIHR1cCk7CiAJ fQpAQCAtMjA5MiwxMCArMjEwNiwxMCBAQCBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhPaWQgcHVi aWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKIH0KIAogLyoKLSAqIFJlbW92ZSBs aXN0ZWQgdGFibGVzIGZyb20gdGhlIHB1YmxpY2F0aW9uLgorICogUmVtb3ZlIGxpc3RlZCByZWxh dGlvbnMgZnJvbSB0aGUgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyB2b2lkCi1QdWJsaWNhdGlv bkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spCitQdWJs aWNhdGlvbkRyb3BSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdf b2spCiB7CiAJT2JqZWN0QWRkcmVzcyBvYmo7CiAJTGlzdENlbGwgICAqbGM7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpp bmRleCBmMGJlMjJlZDk0MS4uMTg1Nzc5MDhkZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTE0OTksNyAr MTE0OTksNyBAQCBwdWJfZXhjZXB0X3NlcV9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMK ICAqIHB1Yl9hbGxfb2JqX3R5cGUgaXMgb25lIG9mOgogICoKICAqCQlBTEwgVEFCTEVTIFsgRVhD RVBUICggVEFCTEUgdGFibGVfbmFtZSBbLCAuLi5dICkgXQotICoJCUFMTCBTRVFVRU5DRVMKKyAq CQlBTEwgU0VRVUVOQ0VTIFsgRVhDRVBUICggU0VRVUVOQ0Ugc2VxdWVuY2VfbmFtZSBbLCAuLi5d ICkgXQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmlu ZGV4IDE1NTA4N2Y1NzJiLi4xMDVhZGI4Nzg3NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAt MjMzNyw2ICsyMzM3LDIwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAog CQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQi LCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYg IWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCIpIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwi LCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlNFUVVFTkNF Iik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIikpCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCAoIFNF UVVFTkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9X SVRIKCIoIFNFUVVFTkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIikp CisJCUNPTVBMRVRFX1dJVEgoIlNFUVVFTkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVY Q0VQVCIsICIoIiwgIlNFUVVFTkNFIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQ VCIsICIoIiwgIlNFUVVFTkNFIiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgocHJldl93ZCwgJywn KSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2VxdWVu Y2VzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigiLCAiU0VRVUVOQ0UiLCBN YXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgi KSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJBRER8RFJPUHxTRVQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIpKQogCQlDT01QTEVURV9X SVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hcwogCQkJCQkJCQkgIiBBTkQg bnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCmluZGV4IDQ5YzI5YTg3NjMwLi4yMWExNTI3YmNjNyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb24uaApAQCAtMTc4LDkgKzE3OCwxMSBAQCB0eXBlZGVmIGVudW0gUHVibGlj YXRpb25QYXJ0T3B0CiBleHRlcm4gTGlzdCAqR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9u cyhPaWQgcHViaWQsCiAJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQp OwogZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LAotCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKKwkJCQkJCQkJ CQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJIGNoYXIgcHVi cmVsa2luZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwot ZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBy ZWxraW5kLCBib29sIHB1YnZpYXJvb3QpOworZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBwdWJyZWxraW5kLAorCQkJCQkJCQkJCWJvb2wgcHVi dmlhcm9vdCk7CiBleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25TY2hlbWFzKE9pZCBwdWJpZCk7 CiBleHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25zKE9pZCBzY2hlbWFpZCk7CiBleHRl cm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlkLApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA2NDQyYjg3ZDAzOC4u NGEwMjQ4OGJmZmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CkBAIC01NzcsNiArNTc3LDI1IEBAIEV4Y2VwdCBzZXF1ZW5jZXM6CiAgICAgInB1Yl90ZXN0LnJl Z3Jlc3Nfc2VxMiIKICAgICAicHVibGljLnJlZ3Jlc3Nfc2VxMCIKIAorLS0gTW9kaWZ5IHRoZSBz ZXF1ZW5jZSBsaXN0IGluIHRoZSBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNBVElPTiByZWdy ZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAo U0VRVUVOQ0UgcmVncmVzc19zZXEwKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNl c19leGNlcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAKK0V4Y2VwdCBzZXF1ZW5jZXM6CisgICAgInB1YmxpYy5yZWdyZXNzX3NlcTAi CisKKy0tIENsZWFyIHRoZSBzZXF1ZW5jZSBsaXN0IGluIHRoZSBFWENFUFQgY2xhdXNlCitBTFRF UiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IFNFVCBBTEwg U0VRVUVOQ0VTOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g cmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAor KDEgcm93KQorCiAtLSBUZXN0IGNvbWJpbmF0aW9uIG9mIEFMTCBTRVFVRU5DRVMgYW5kIEFMTCBU QUJMRVMgd2l0aCBFWENFUFQgY2xhdXNlCiBDUkVBVEUgVEFCTEUgcmVncmVzc190YWIxKGEgaW50 KTsKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRh Ymxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3RhYjEpLCBB TEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19zZXEwKTsKQEAgLTU5NiwyNCAr NjE1LDQwIEBAIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgKHJlZ3Jlc3Nfc2VxMCwKIEVSUk9SOiAgc3ludGF4IGVycm9yIGF0 IG9yIG5lYXIgInJlZ3Jlc3Nfc2VxMCIKIExJTkUgMTogLi4uT04gcmVncmVzc19wdWJfc2hvdWxk X2ZhaWwgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChyZWdyZXNzX3NlLi4uCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQUxURVIg UFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdCBTRVQgQUxMIFNF UVVFTkNFUyBFWENFUFQgKHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVzc19zZXExKTsKK0VS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInJlZ3Jlc3Nfc2VxMCIKK0xJTkUgMTogLi4u X2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChyZWdyZXNz X3NlLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgogLS0gZmFpbCAtIHVubG9nZ2VkIHNlcXVlbmNlIGlzIHNwZWNpZmllZCBp biBFWENFUFQgc2VxdWVuY2UgbGlzdAogQ1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIHJlZ3Jlc3Nf c2VxX3VubG9nZ2VkOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWls IEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19zZXFfdW5sb2dnZWQp OwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3Nfc2VxX3VubG9nZ2VkIiBp biB0aGUgcHVibGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCiBERVRBSUw6ICBUaGlz IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCBzZXF1ZW5jZXMuCitBTFRF UiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IFNFVCBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19zZXFfdW5sb2dnZWQpOworRVJST1I6 ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3Nfc2VxX3VubG9nZ2VkIiBpbiB0aGUgcHVi bGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCitERVRBSUw6ICBUaGlzIG9wZXJhdGlv biBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCBzZXF1ZW5jZXMuCiAtLSBmYWlsIC0gdGVt cG9yYXJ5IHNlcXVlbmNlIGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAogQ1JF QVRFIFRFTVBPUkFSWSBTRVFVRU5DRSByZWdyZXNzX3NlcV90ZW1wOwogQ1JFQVRFIFBVQkxJQ0FU SU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VR VUVOQ0UgcmVncmVzc19zZXFfdGVtcCk7CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwZ190ZW1w LnJlZ3Jlc3Nfc2VxX3RlbXAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBj bGF1c2UKIERFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFyeSBzZXF1ZW5jZXMuCitBTFRFUiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1 ZW5jZXNfZXhjZXB0IFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19z ZXFfdGVtcCk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwZ190ZW1wLnJlZ3Jlc3Nfc2VxX3Rl bXAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKK0RFVEFJTDog IFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFyeSBzZXF1ZW5jZXMu CiAtLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgdGFibGUg bGlzdAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc19zZXEwKTsKIEVSUk9SOiAgY2Fubm90IHNwZWNp ZnkgInB1YmxpYy5yZWdyZXNzX3NlcTAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxF KSBjbGF1c2UKIERFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNl cXVlbmNlcy4KK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19l eGNlcHQgU0VUIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3NlcTApOworRVJST1I6 ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3Nfc2VxMCIgaW4gdGhlIHB1YmxpY2F0aW9u IEVYQ0VQVCAoVEFCTEUpIGNsYXVzZQorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1 cHBvcnRlZCBmb3Igc2VxdWVuY2VzLgogLS0gZmFpbCAtIHRhYmxlIG9iamVjdCBpcyBzcGVjaWZp ZWQgaW4gRVhDRVBUIHNlcXVlbmNlIGxpc3QKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1 Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3Nf dGFiMSk7CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwdWJsaWMucmVncmVzc190YWIxIiBpbiB0 aGUgcHVibGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCiBERVRBSUw6ICBUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCitBTFRFUiBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQ VCAoU0VRVUVOQ0UgcmVncmVzc190YWIxKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1Ymxp Yy5yZWdyZXNzX3RhYjEiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1 c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4K IERST1AgU0VRVUVOQ0UgcmVncmVzc19zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3NlcTEsIHB1Yl90 ZXN0LnJlZ3Jlc3Nfc2VxMiwgcmVncmVzc19zZXFfdW5sb2dnZWQsIHJlZ3Jlc3Nfc2VxX3RlbXA7 CiBEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczE7CiBEUk9QIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczI7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwKaW5kZXggMTFjMjBlNjUxNDMuLjkyZWNmYzgzYWEyIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0yNjksNiArMjY5LDE0IEBAIENSRUFURSBQVUJM SUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVO Q0VTIEVYQ0VQVCAoCiBBTFRFUiBTRVFVRU5DRSByZWdyZXNzX3NlcTIgU0VUIFNDSEVNQSBwdWJf dGVzdDsKIFxkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQKIAorLS0gTW9k aWZ5IHRoZSBzZXF1ZW5jZSBsaXN0IGluIHRoZSBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNB VElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IFNFVCBBTEwgU0VRVUVOQ0VT IEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19zZXEwKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFs bHNlcXVlbmNlc19leGNlcHQKKworLS0gQ2xlYXIgdGhlIHNlcXVlbmNlIGxpc3QgaW4gdGhlIEVY Q0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNl c19leGNlcHQgU0VUIEFMTCBTRVFVRU5DRVM7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1 ZW5jZXNfZXhjZXB0CisKIC0tIFRlc3QgY29tYmluYXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQg QUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1c2UKIENSRUFURSBUQUJMRSByZWdyZXNzX3RhYjEo YSBpbnQpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNf YWxsdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfdGFi MSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcTApOwpAQCAtMjc3 LDIwICsyODUsMjUgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIAogLS0gZmFpbCAtIGZp cnN0IHNlcXVlbmNlIGluIHRoZSBFWENFUFQgbGlzdCBzaG91bGQgdXNlIFNFUVVFTkNFIGtleXdv cmQKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFRB QkxFUyBFWENFUFQgKHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVzc19zZXExKTsKK0FMVEVS IFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBT RVFVRU5DRVMgRVhDRVBUIChyZWdyZXNzX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3Nfc2VxMSk7CiAK IC0tIGZhaWwgLSB1bmxvZ2dlZCBzZXF1ZW5jZSBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHNlcXVl bmNlIGxpc3QKIENSRUFURSBVTkxPR0dFRCBTRVFVRU5DRSByZWdyZXNzX3NlcV91bmxvZ2dlZDsK IENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFNFUVVF TkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxX3VubG9nZ2VkKTsKK0FMVEVSIFBVQkxJ Q0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFVRU5D RVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcV91bmxvZ2dlZCk7CiAKIC0tIGZhaWwgLSB0 ZW1wb3Jhcnkgc2VxdWVuY2UgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0CiBD UkVBVEUgVEVNUE9SQVJZIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxX3RlbXA7CiBDUkVBVEUgUFVCTElD QVRJT04gcmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChT RVFVRU5DRSByZWdyZXNzX3NlcV90ZW1wKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlc19leGNlcHQgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5D RSByZWdyZXNzX3NlcV90ZW1wKTsKIAogLS0gZmFpbCAtIHNlcXVlbmNlIG9iamVjdCBpcyBzcGVj aWZpZWQgaW4gRVhDRVBUIHRhYmxlIGxpc3QKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1 Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3Nfc2VxMCk7 CitBTFRFUiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IFNF VCBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc19zZXEwKTsKIAogLS0gZmFpbCAtIHRh YmxlIG9iamVjdCBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHNlcXVlbmNlIGxpc3QKIENSRUFURSBQ VUJMSUNBVElPTiByZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFNFUVVFTkNFUyBFWENF UFQgKFNFUVVFTkNFIHJlZ3Jlc3NfdGFiMSk7CitBTFRFUiBQVUJMSUNBVElPTiByZWdyZXNzX3B1 Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVO Q0UgcmVncmVzc190YWIxKTsKIAogRFJPUCBTRVFVRU5DRSByZWdyZXNzX3NlcTAsIHB1Yl90ZXN0 LnJlZ3Jlc3Nfc2VxMSwgcHViX3Rlc3QucmVncmVzc19zZXEyLCByZWdyZXNzX3NlcV91bmxvZ2dl ZCwgcmVncmVzc19zZXFfdGVtcDsKIERST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxs c2VxdWVuY2VzMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNl cHQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IGMyMjBk MmEwYjVkLi43N2ZkMDliMjIyZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDM3X2V4Y2VwdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBs CkBAIC0yODksNiArMjg5LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3Rn cmVzJywgcXEgKAogCUNSRUFURSBUQUJMRSBzZXFfdGVzdCAodiBCSUdJTlQpOwogCUNSRUFURSBT RVFVRU5DRSBzZXFfZXhjbHVkZWRfaW5fcHViMTsKKwlDUkVBVEUgU0VRVUVOQ0Ugc2VxX2V4Y2x1 ZGVkX2luX3B1YjFfMjsKIAlDUkVBVEUgU0VRVUVOQ0Ugc2VxX2V4Y2x1ZGVkX2luX3B1YjI7CiAJ SU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcV9leGNsdWRlZF9pbl9wdWIx JykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOwogCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNF TEVDVCBuZXh0dmFsKCdzZXFfZXhjbHVkZWRfaW5fcHViMicpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwKTsKQEAgLTI5Nyw2ICsyOTgsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlDUkVBVEUg U0VRVUVOQ0Ugc2VxX2V4Y2x1ZGVkX2luX3B1YjE7CisJQ1JFQVRFIFNFUVVFTkNFIHNlcV9leGNs dWRlZF9pbl9wdWIxXzI7CiAJQ1JFQVRFIFNFUVVFTkNFIHNlcV9leGNsdWRlZF9pbl9wdWIyOwog CUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9hbGxfc2VxX2V4Y2VwdCBDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfYWxsX3NlcV9leGNlcHQxOwog KSk7CkBAIC0zMTYsNiArMzE4LDI0IEBAICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNl cV9leGNsdWRlZF9pbl9wdWIyIik7CiBpcygkcmVzdWx0LCAnMTAwfHQnLCAnaW5pdGlhbCB0ZXN0 IGRhdGEgcmVwbGljYXRlZCBmb3Igc2VxX2V4Y2x1ZGVkX2luX3B1YjInKTsKIAorIyBDaGVjayBB TFRFUiBQVUJMSUNBVElPTiAuLi4gQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIC4uLikK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUFMVEVSIFBV QkxJQ0FUSU9OIHRhcF9wdWJfYWxsX3NlcV9leGNlcHQxIFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQ VCAoU0VRVUVOQ0Ugc2VxX2V4Y2x1ZGVkX2luX3B1YjEsIHNlcV9leGNsdWRlZF9pbl9wdWIxXzIp OworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzZXFfZXhjbHVkZWRfaW5f cHViMV8yJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworKSk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWJfYWxsX3NlcV9leGNlcHQgUkVGUkVTSCBQVUJMSUNBVElPTjsKKwlBTFRFUiBTVUJTQ1JJ UFRJT04gdGFwX3N1Yl9hbGxfc2VxX2V4Y2VwdCBSRUZSRVNIIFNFUVVFTkNFUzsKKykpOworJG5v ZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5 KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5 bmNocm9uaXplIGRhdGEiOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSBzZXFfZXhj bHVkZWRfaW5fcHViMV8yIik7CitpcygkcmVzdWx0LCAnMXxmJywgJ3NlcXVlbmNlcyBpbiB0aGUg RVhDRVBUIGxpc3QgYXJlIGV4Y2x1ZGVkJyk7CisKICMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KICMgVGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNj cmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0aW9ucwogIyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLSAKMi4zNC4xCgo= --000000000000433dd70655ff9e5e Content-Type: application/octet-stream; name="v19-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLI.patch" Content-Disposition: attachment; filename="v19-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLI.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mra9vm220 RnJvbSBiMTNiYjEzYzUzYjRkN2U2OTA3NmZiODdjM2I1MDkyMTVmMjFhZWE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjYgTWF5IDIwMjYgMTA6NTE6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx OSAxLzJdIFN1cHBvcnQgRVhDRVBUIGZvciBBTEwgU0VRVUVOQ0VTIGluIENSRUFURQogUFVCTElD QVRJT04KCkV4dGVuZCBDUkVBVEUgUFVCTElDQVRJT04gLi4uIEZPUiBBTEwgU0VRVUVOQ0VTIHRv IHN1cHBvcnQgdGhlCkVYQ0VQVCBzeW50YXguIFRoaXMgYWxsb3dzIG9uZSBvciBtb3JlIHNlcXVl bmNlcyB0byBiZSBleGNsdWRlZC4gVGhlCnB1Ymxpc2hlciB3aWxsIG5vdCBzZW5kIHRoZSBkYXRh IG9mIGV4Y2x1ZGVkIHNlcXVlbmNlcyB0byB0aGUgc3Vic2NyaWJlci4KCkV4YW1wbGU6CkNSRUFU RSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEs IHMyKTsKLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICB8ICAg OCArLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgfCAgIDggKy0K IGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgIHwgIDQ2ICsrKysrKy0t LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgNzAgKysrKysr KystLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAxMTgg KysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAg ICAgICAgICB8IDExOSArKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jICAgICAgICAgICAgICAgICB8ICA2NSArKysrKysrKystLS0KIHNyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsICAgICAgICAgIHwgIDIyICsrKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5j ICAgICAgICAgICAgICAgICAgIHwgIDg5ICsrKysrKysrKysrKysrLS0KIHNyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgIHwgIDEyICsrKwogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCAgICAgICAgICAgIHwgIDE1ICstLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQgfCAgOTkgKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICB8ICA1MiArKysrKysrKystCiBzcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsICAgICB8ICA3NyArKysrKysrKysrKysrKwogc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgIDIgKy0KIDE3IGZpbGVzIGNo YW5nZWQsIDYzNCBpbnNlcnRpb25zKCspLCAxNzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApp bmRleCA0YjQ3NGMxMzkxNy4uNDNhMzU2NmRkYTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03MDk5LDcg KzcwOTksNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50 Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgIChyZWZlcmVuY2VzIDxs aW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1 Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQogICAgICAgPC9w YXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgUmVmZXJlbmNlIHRvIHRhYmxlCisgICAgICAgUmVm ZXJlbmNlIHRvIHRhYmxlIG9yIHNlcXVlbmNlCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CiAKQEAgLTcxMDgsOCArNzEwOCw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxl PiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAg ICAgICA8c3RydWN0ZmllbGQ+cHJleGNlcHQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBl PgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgVHJ1ZSBpZiB0aGUgdGFibGUg aXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uIFNlZQotICAgICAgIDxsaW5rIGxpbmtl bmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVy YWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4uCisgICAgICAgVHJ1ZSBpZiB0aGUgdGFibGUgb3Ig c2VxdWVuY2UgaXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uIFNlZQorICAgICAgIDxs aW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdCI+PGxp dGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4uCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTcxMTgsNyArNzExOCw3IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2Vh YmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZs CiAgICAgICA8c3RydWN0ZmllbGQ+cHJxdWFsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbm9kZV90 cmVlPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+RXhwcmVzc2lvbiB0cmVlIChp biA8ZnVuY3Rpb24+bm9kZVRvU3RyaW5nKCk8L2Z1bmN0aW9uPgotICAgICAgcmVwcmVzZW50YXRp b24pIGZvciB0aGUgcmVsYXRpb24ncyBwdWJsaWNhdGlvbiBxdWFsaWZ5aW5nIGNvbmRpdGlvbi4g TnVsbAorICAgICAgcmVwcmVzZW50YXRpb24pIGZvciB0aGUgdGFibGUncyBwdWJsaWNhdGlvbiBx dWFsaWZ5aW5nIGNvbmRpdGlvbi4gTnVsbAogICAgICAgaWYgdGhlcmUgaXMgbm8gcHVibGljYXRp b24gcXVhbGlmeWluZyBjb25kaXRpb24uPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBmMjEyMzlhZjZiOC4uYTI5NjFi ZDNjNDEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTE4LDggKzEx OCwxMiBAQAogICAgc3luY2hyb25pemVkIGF0IGFueSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlv biwgc2VlCiAgICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIv Pi4gV2hlbiBhIHB1YmxpY2F0aW9uIGlzCiAgICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFM TCBUQUJMRVM8L2xpdGVyYWw+LCBhIHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2FuCi0gICBiZSBl eHBsaWNpdGx5IGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCi0gICA8bGluayBs aW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L2xpbms+CisgICBiZSBleHBsaWNpdGx5IGV4Y2x1ZGVk IGZyb20gdGhlIHB1YmxpY2F0aW9uIHVzaW5nIHRoZQorICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0Ij48bGl0ZXJhbD5FWENFUFQ8L2xpdGVy YWw+PC9saW5rPgorICAgY2xhdXNlLiBTaW1pbGFybHksIHdoZW4gYSBwdWJsaWNhdGlvbiBpcyBj cmVhdGVkIHdpdGgKKyAgIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiwgYSBz ZXF1ZW5jZSBvciBzZXQgb2Ygc2VxdWVuY2VzIGNhbiBiZQorICAgZXhwbGljaXRseSBleGNsdWRl ZCBmcm9tIHRoZSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1j cmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdCI+PGxpdGVyYWw+RVhDRVBUPC9saXRl cmFsPjwvbGluaz4KICAgIGNsYXVzZS4KICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHVibGljYXRpb24uc2dtbAppbmRleCA4NWNmY2FkZGFmYS4uMzYwZGM3ZWRhNmEgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMzMsNyArMzMsNyBAQCBD UkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1 YmxpY2F0aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAK ICAgICBBTEwgVEFCTEVTIFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KLSAgICBBTEwg U0VRVUVOQ0VTCisgICAgQUxMIFNFUVVFTkNFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNlcHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gKSBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCkBAIC00Niw2ICs0Niwx MCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKiBdCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNl cHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICBTRVFV RU5DRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFj ZWFibGU+IFssIC4uLiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTE4 OSwyMiArMTkzLDI2IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgIDxwYXJhPgogICAgICAgT25seSBwZXJz aXN0ZW50IHNlcXVlbmNlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9uLiBUZW1wb3Jh cnkKICAgICAgIHNlcXVlbmNlcyBhbmQgdW5sb2dnZWQgc2VxdWVuY2VzIGFyZSBleGNsdWRlZCBm cm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAgICAgIFNlcXVlbmNlcyBsaXN0ZWQgaW4gdGhlIDxsaXRl cmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNlIGFyZSBleGNsdWRlZCBmcm9tCisgICAgICB0aGUg cHVibGljYXRpb24uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CiAKLSAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJh bXMtZm9yLWV4Y2VwdC10YWJsZSI+CisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVi bGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVDwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFRoaXMg Y2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhl CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgdGhlIHRhYmxlcyBvciBzZXF1ZW5jZXMgdG8g YmUgZXhjbHVkZWQgZnJvbSBhbgorICAgICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4g b3IgPGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4KICAgICAgIHB1YmxpY2F0aW9uLgog ICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgT25jZSBhIHRhYmxlIGlzIGV4Y2x1ZGVk LCB0aGUgZXhjbHVzaW9uIGFwcGxpZXMgdG8gdGhhdCB0YWJsZQotICAgICAgcmVnYXJkbGVzcyBv ZiBpdHMgbmFtZSBvciBzY2hlbWEuIFJlbmFtaW5nIHRoZSB0YWJsZSBvciBtb3ZpbmcgaXQgdG8K LSAgICAgIGFub3RoZXIgc2NoZW1hIHVzaW5nIDxjb21tYW5kPkFMVEVSIFRBQkxFIC4uLiBTRVQg U0NIRU1BPC9jb21tYW5kPiBkb2VzCi0gICAgICBub3QgcmVtb3ZlIHRoZSBleGNsdXNpb24uCisg ICAgICBPbmNlIGEgdGFibGUgb3Igc2VxdWVuY2UgaXMgZXhjbHVkZWQsIHRoZSBleGNsdXNpb24g YXBwbGllcyB0byB0aGF0CisgICAgICBvYmplY3QgcmVnYXJkbGVzcyBvZiBpdHMgbmFtZSBvciBz Y2hlbWEuIFJlbmFtaW5nIHRoZSBvYmplY3Qgb3IgbW92aW5nCisgICAgICBpdCB0byBhbm90aGVy IHNjaGVtYSB1c2luZyA8Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gU0VUIFNDSEVNQTwvY29tbWFu ZD4KKyAgICAgIG9yIDxjb21tYW5kPkFMVEVSIFNFUVVFTkNFIC4uLiBTRVQgU0NIRU1BPC9jb21t YW5kPiBkb2VzIG5vdCByZW1vdmUgdGhlCisgICAgICBleGNsdXNpb24uCiAgICAgIDwvcGFyYT4K ICAgICAgPHBhcmE+CiAgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+T05M WTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKQEAgLTIyMyw5ICsyMzEsMTAgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgIFRoZXJlIGNhbiBi ZSBhIGNhc2Ugd2hlcmUgYSBzdWJzY3JpcHRpb24gaW5jbHVkZXMgbXVsdGlwbGUgcHVibGljYXRp b25zLgotICAgICAgSW4gc3VjaCBhIGNhc2UsIGEgdGFibGUgb3IgcGFydGl0aW9uIHRoYXQgaXMg aW5jbHVkZWQgaW4gb25lIHB1YmxpY2F0aW9uCi0gICAgICBidXQgZXhjbHVkZWQgKGV4cGxpY2l0 bHkgb3IgaW1wbGljaXRseSkgYnkgdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgICAg IGNsYXVzZSBvZiBhbm90aGVyIGlzIGNvbnNpZGVyZWQgaW5jbHVkZWQgZm9yIHJlcGxpY2F0aW9u LgorICAgICAgSW4gc3VjaCBhIGNhc2UsIGEgdGFibGUsIHBhcnRpdGlvbiBvciBzZXF1ZW5jZSB0 aGF0IGlzIGluY2x1ZGVkIGluIG9uZQorICAgICAgcHVibGljYXRpb24gYnV0IGV4Y2x1ZGVkIChl eHBsaWNpdGx5IG9yIGltcGxpY2l0bHkpIGJ5IHRoZQorICAgICAgPGxpdGVyYWw+RVhDRVBUPC9s aXRlcmFsPiBjbGF1c2Ugb2YgYW5vdGhlciBpcyBjb25zaWRlcmVkIGluY2x1ZGVkIGZvcgorICAg ICAgcmVwbGljYXRpb24uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CkBAIC01NTMsMTEgKzU2MiwyMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gYWxsX3Rh Ymxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB1c2VycywgZGVwYXJ0bQog ICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxp c2hlcyBhbGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb24sIGFuZAotICAgYWxsIGNoYW5n ZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFu ZAotICAgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorICAgQ3JlYXRlIGEg cHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0 aW9uIGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+c2VxMTwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1Y3Ru YW1lPnNlcTI8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FU SU9OIGFsbF9zZXF1ZW5jZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVO Q0Ugc2VxMSwgc2VxMik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+ CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVuY2VzIGZv ciBzeW5jaHJvbml6YXRpb24gZXhjZXB0CisgICA8c3RydWN0bmFtZT5zZXExPC9zdHJ1Y3RuYW1l PiBhbmQgPHN0cnVjdG5hbWU+c2VxMjwvc3RydWN0bmFtZT4sIGFuZCBhbGwKKyAgIGNoYW5nZXMg aW4gYWxsIHRhYmxlcyBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBh bmQgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgogPHByb2dyYW1saXN0aW5n PgotQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXNfdGFibGVzX2V4Y2VwdCBGT1IgQUxM IFNFUVVFTkNFUywgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cyk7 CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxMSwgc2VxMiksIEFMTCBUQUJMRVMgRVhDRVBU IChUQUJMRSB1c2VycywgZGVwYXJ0bWVudHMpOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJh PgogIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggMWVj OTRjODUxYjIuLjVlYjRkZTc0NGRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CkBAIC00OSwyMCArNDksMjggQEAgdHlwZWRlZiBzdHJ1Y3QKIH0gcHVibGlzaGVkX3JlbDsKIAog LyoKLSAqIENoZWNrIGlmIHJlbGF0aW9uIGNhbiBiZSBpbiBnaXZlbiBwdWJsaWNhdGlvbiBhbmQg dGhyb3dzIGFwcHJvcHJpYXRlCi0gKiBlcnJvciBpZiBub3QuCisgKiBDaGVjayBpZiB0aGUgdGFy Z2V0IHJlbGF0aW9uIGlzIGFsbG93ZWQgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBnaXZlbgorICog cHVibGljYXRpb24gYW5kIHRocm93IGFuIGVycm9yIGlmIG5vdC4KKyAqCisgKiAncHVicmVsa2lu ZCcgaXMgdGhlIHJlbGtpbmQgYWNjZXB0ZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGNsYXVzZS4gVGhl IHJlbGtpbmQKKyAqIG9mIHRoZSByZWxhdGlvbiBpbiAncHJpJyBpcyBjaGVja2VkIGZvciBjb21w YXRpYmlsaXR5IGFnYWluc3QgaXQuIEVycm9yIGlzCisgKiByYWlzZWQgaWYgdGhleSBhcmUgbm90 IGNvbXBhdGlibGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVja19wdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCitjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmksIGNoYXIgcHVicmVsa2luZCkKIHsKIAlSZWxh dGlvbgl0YXJnZXRyZWwgPSBwcmktPnJlbGF0aW9uOworCWNoYXIJCXRhcmdldHJlbGtpbmQgPSBS ZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZDsKIAljb25zdCBjaGFyICpyZWxuYW1l OwogCWNvbnN0IGNoYXIgKmVycm9ybXNnOwogCiAJaWYgKHByaS0+ZXhjZXB0KQogCXsKIAkJcmVs bmFtZSA9IFJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25OYW1lKHRhcmdldHJlbCk7Ci0JCWVy cm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3Qgc3BlY2lmeSByZWxhdGlvbiBcIiVzXCIgaW4g dGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UiKTsKKwkJaWYgKHB1YnJlbGtpbmQgPT0gUkVM S0lORF9TRVFVRU5DRSkKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3Qgc3BlY2lm eSBcIiVzXCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZSIpOwor CQllbHNlCisJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90IHNwZWNpZnkgXCIlc1wi IGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UiKTsKIAl9CiAJZWxzZQog CXsKQEAgLTc3LDEzICs4NSwyMyBAQCBjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUHVi bGljYXRpb25SZWxJbmZvICpwcmkpCiAJCQkJIGVycm1zZyhlcnJvcm1zZywgcmVsbmFtZSksCiAJ CQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgaW5kaXZp ZHVhbCBwYXJ0aXRpb25zLiIpKSk7CiAKLQkvKiBNdXN0IGJlIGEgcmVndWxhciBvciBwYXJ0aXRp b25lZCB0YWJsZSAqLwotCWlmIChSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCAh PSBSRUxLSU5EX1JFTEFUSU9OICYmCi0JCVJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxr aW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJLyoKKwkgKiBNdXN0IGJlIGEgcmVn dWxhciBvciBwYXJ0aXRpb25lZCB0YWJsZSB3aGVuIHNwZWNpZmllZCBpbiBGT1IgVEFCTEUgb3IK KwkgKiBFWENFUFQgdGFibGUgbGlzdAorCSAqLworCWlmIChwdWJyZWxraW5kID09IFJFTEtJTkRf UkVMQVRJT04gJiYgdGFyZ2V0cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCisJCXRhcmdl dHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJy bXNnKGVycm9ybXNnLCByZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBv cnRlZCh0YXJnZXRyZWxraW5kKSkpOworCisJLyogTXVzdCBiZSBhIHNlcXVlbmNlIGlmIHNwZWNp ZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdCAqLworCWlmIChwdWJyZWxraW5kID09IFJFTEtJ TkRfU0VRVUVOQ0UgJiYgdGFyZ2V0cmVsa2luZCAhPSBSRUxLSU5EX1NFUVVFTkNFKQogCQllcmVw b3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAotCQkJCSBlcnJkZXRhaWxfcmVsa2lu ZF9ub3Rfc3VwcG9ydGVkKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kKSkpOwor CQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKHRhcmdldHJlbGtpbmQpKSk7CiAK IAkvKiBDYW4ndCBiZSBzeXN0ZW0gdGFibGUgKi8KIAlpZiAoSXNDYXRhbG9nUmVsYXRpb24odGFy Z2V0cmVsKSkKQEAgLTEwNCwxMSArMTIyLDE1IEBAIGNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxh dGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKGVycm9y bXNnLCByZWxuYW1lKSwKKwkJCQkgdGFyZ2V0cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFID8K KwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0ZW1w b3Jhcnkgc2VxdWVuY2VzLiIpIDoKIAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBu b3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhcnkgdGFibGVzLiIpKSk7CiAJZWxzZSBpZiAodGFyZ2V0 cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAorCQkJCSB0YXJnZXRyZWxr aW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgPworCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2VkIHNlcXVlbmNlcy4iKSA6CiAJCQkJIGVycmRl dGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdW5sb2dnZWQgdGFibGVz LiIpKSk7CiB9CiAKQEAgLTUzMSw3ICs1NTMsOCBAQCBhdHRudW1zdG9pbnQydmVjdG9yKEJpdG1h cHNldCAqYXR0cnMpCiAgKi8KIE9iamVjdEFkZHJlc3MKIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlv bihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAotCQkJCQkJIGJvb2wgaWZfbm90 X2V4aXN0cywgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKmFsdGVyX3N0bXQpCisJCQkJCQkgYm9vbCBp Zl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCwKKwkJCQkJCSBj aGFyIHB1YnJlbGtpbmQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBsZQl0dXA7CkBAIC01 NjksNyArNTkyLDcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGlj YXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRy ZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9u KHByaSk7CisJY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHByaSwgcHVicmVsa2luZCk7 CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1lcyBpbnRvIGEgQml0bWFw c2V0IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKHByaS0+ cmVsYXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC05ODksMTUgKzEwMTIsMTcgQEAgR2V0SW5jbHVk ZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJf cGFydG9wdCkKIH0KIAogLyoKLSAqIEdldHMgbGlzdCBvZiB0YWJsZSBvaWRzIHRoYXQgd2VyZSBz cGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIGEKLSAqIHB1YmxpY2F0aW9uLgotICoK LSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMu CisgKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyB0aGF0IHdlcmUgc3BlY2lmaWVkIGluIHRo ZSBFWENFUFQgY2xhdXNlIGZvciBhCisgKiAnRk9SIEFMTCBUQUJMRVMnIG9yIGEgJ0ZPUiBBTEwg U0VRVUVOQ0VTJyBwdWJsaWNhdGlvbi4KICAqLwogTGlzdCAqCi1HZXRFeGNsdWRlZFB1YmxpY2F0 aW9uVGFibGVzKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQorR2V0 RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCkKIHsKLQlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJs ZXMpOworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlQdWJsaWNhdGlvbiAqcHViID0gR2V0 UHVibGljYXRpb24ocHViaWQpOworCisJQXNzZXJ0KHB1Yi0+YWxsdGFibGVzIHx8IHB1Yi0+YWxs c2VxdWVuY2VzKTsKKyNlbmRpZgogCiAJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMo cHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKIH0KQEAgLTEwNDgsOCArMTA3Myw5IEBAIEdldEFs bFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMuIFRo aXMgaXMgbm90IGFwcGxpY2FibGUgdG8gRk9SIEFMTCBTRVFVRU5DRVMKICAqIHB1YmxpY2F0aW9u LgogICoKLSAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQg bGlzdCBleGNsdWRlcyB0YWJsZXMgbWVudGlvbmVkCi0gKiBpbiB0aGUgRVhDRVBUIGNsYXVzZS4K KyAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBl eGNsdWRlcyB0YWJsZXMKKyAqIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZS4gRm9yIGEg Rk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24sCisgKiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMg c3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlLgogICovCiBMaXN0ICoKIEdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3Qp CkBAIC0xMDYzLDExICsxMDg5LDkgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1 YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAogCUFzc2VydCghKHJlbGtpbmQg PT0gUkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290KSk7CiAKLQkvKiBFWENFUFQgZmlsdGVy aW5nIGFwcGxpZXMgb25seSB0byByZWxhdGlvbnMsIG5vdCBzZXF1ZW5jZXMgKi8KLQlpZiAocmVs a2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQlleGNlcHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJs aWNhdGlvblRhYmxlcyhwdWJpZCwgcHVidmlhcm9vdCA/Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FU SU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJ ZXhjZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsIHB1YnZp YXJvb3QgPworCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJ CQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAogCWNsYXNzUmVsID0gdGFibGVfb3BlbihSZWxh dGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmMKaW5kZXggNDQwYWRiMzU2YWQuLmJkMTcxZjllNDhlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNjEsMTEgKzYxLDExIEBAIHR5cGVkZWYg c3RydWN0IHJmX2NvbnRleHQKIAlPaWQJCQlwYXJlbnRpZDsJCS8qIHJlbGlkIG9mIHRoZSBwYXJl bnQgcmVsYXRpb24gKi8KIH0gcmZfY29udGV4dDsKIAotc3RhdGljIExpc3QgKk9wZW5UYWJsZUxp c3QoTGlzdCAqdGFibGVzKTsKLXN0YXRpYyB2b2lkIENsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMp Oworc3RhdGljIExpc3QgKk9wZW5SZWxhdGlvbkxpc3QoTGlzdCAqdGFibGVzKTsKK3N0YXRpYyB2 b2lkIENsb3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMpOwogc3RhdGljIHZvaWQgTG9ja1NjaGVt YUxpc3QoTGlzdCAqc2NoZW1hbGlzdCk7Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFRhYmxl cyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKLQkJCQkJCQkJIEFs dGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKK3N0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRkUmVs YXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJ CQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNoYXIgcHVicmVsa2luZCk7CiBzdGF0aWMg dm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1p c3Npbmdfb2spOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25BZGRTY2hlbWFzKE9pZCBwdWJpZCwg TGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQkJCQkJCQkgIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10KTsKQEAgLTE3NiwxMiArMTc2LDEzIEBAIHBhcnNlX3B1YmxpY2F0aW9u X29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogfQogCiAvKgotICogQ29udmVydCB0aGUgUHVi bGljYXRpb25PYmpTcGVjVHlwZSBsaXN0IGludG8gc2NoZW1hIG9pZCBsaXN0IGFuZAotICogUHVi bGljYXRpb25UYWJsZSBsaXN0LgorICogQ29udmVydCB0aGUgUHVibGljYXRpb25PYmpTcGVjVHlw ZSBsaXN0IGludG8gUHVibGljYXRpb25SZWxhdGlvbiBsaXN0cworICogKGByZWxzYCwgYGV4Y2Vw dHRibHNgLCBgZXhjZXB0c2Vxc2ApIGFuZCBhIHNjaGVtYSBvaWQgbGlzdCAoYHNjaGVtYXNgKS4K ICAqLwogc3RhdGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9i anNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAgTGlzdCAqKnJlbHMsIExp c3QgKipleGNlcHRyZWxzLCBMaXN0ICoqc2NoZW1hcykKKwkJCQkJCSAgIExpc3QgKipyZWxzLCBM aXN0ICoqZXhjZXB0dGJscywgTGlzdCAqKmV4Y2VwdHNlcXMsCisJCQkJCQkgICBMaXN0ICoqc2No ZW1hcykKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVib2Jq OwpAQCAtMTk5LDEyICsyMDAsMTYgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAq cHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXN3aXRjaCAocHVib2JqLT5w dWJvYmp0eXBlKQogCQl7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRToKLQkJ CQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwotCQkJCSpleGNlcHRyZWxzID0gbGFw cGVuZCgqZXhjZXB0cmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJcHVib2JqLT5wdWJyZWxh dGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqZXhjZXB0dGJscyA9IGxhcHBlbmQoKmV4Y2VwdHRi bHMsIHB1Ym9iai0+cHVicmVsYXRpb24pOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElP Tk9CSl9FWENFUFRfU0VRVUVOQ0U6CisJCQkJcHVib2JqLT5wdWJyZWxhdGlvbi0+ZXhjZXB0ID0g dHJ1ZTsKKwkJCQkqZXhjZXB0c2VxcyA9IGxhcHBlbmQoKmV4Y2VwdHNlcXMsIHB1Ym9iai0+cHVi cmVsYXRpb24pOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKLQkJ CQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKLQkJCQkqcmVscyA9IGxhcHBlbmQo KnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOworCQkJCXB1Ym9iai0+cHVicmVsYXRpb24tPmV4Y2Vw dCA9IGZhbHNlOworCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJyZWxhdGlv bik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6 CiAJCQkJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJvYmotPm5hbWUsIGZhbHNlKTsK QEAgLTg0OSw3ICs4NTQsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAljaGFyCQlwdWJsaXNoX2dlbmVyYXRlZF9j b2x1bW5zOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJTGlzdAkgICAqcmVsYXRpb25zID0gTklM OwotCUxpc3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHR0Ymxz ID0gTklMOworCUxpc3QJICAgKmV4Y2VwdHNlcXMgPSBOSUw7CiAJTGlzdAkgICAqc2NoZW1haWRs aXN0ID0gTklMOwogCiAJLyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ugb24gZGF0YWJhc2Ug Ki8KQEAgLTkzNiwxOCArOTQyLDI5IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJLyogQXNzb2NpYXRlIG9iamVj dHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCiAJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMo c3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCSAgICZleGNlcHRy ZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCSAgICZleGNlcHR0YmxzLCAmZXhjZXB0 c2VxcywgJnNjaGVtYWlkbGlzdCk7CisKKwlpZiAoc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCisJ eworCQkvKiBQcm9jZXNzIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0ICovCisJCWlmIChleGNlcHRzZXFz ICE9IE5JTCkKKwkJeworCQkJTGlzdAkgICAqcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QoZXhjZXB0 c2Vxcyk7CisKKwkJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1Ym9pZCwgcmVscywgdHJ1ZSwg TlVMTCwgUkVMS0lORF9TRVFVRU5DRSk7CisJCQlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKKwkJ fQorCX0KIAogCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKIAl7CiAJCS8qIFByb2Nlc3MgRVhD RVBUIHRhYmxlIGxpc3QgKi8KLQkJaWYgKGV4Y2VwdHJlbGF0aW9ucyAhPSBOSUwpCisJCWlmIChl eGNlcHR0YmxzICE9IE5JTCkKIAkJewotCQkJTGlzdAkgICAqcmVsczsKKwkJCUxpc3QJICAgKnJl bHMgPSBPcGVuUmVsYXRpb25MaXN0KGV4Y2VwdHRibHMpOwogCi0JCQlyZWxzID0gT3BlblRhYmxl TGlzdChleGNlcHRyZWxhdGlvbnMpOwotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCBy ZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJUHVibGljYXRp b25BZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMLCBSRUxLSU5EX1JFTEFUSU9O KTsKKwkJCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwogCQl9CiAKIAkJLyoKQEAgLTk2OSw3ICs5 ODYsNyBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAkJewogCQkJTGlzdAkgICAqcmVsczsKIAotCQkJcmVscyA9IE9w ZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKKwkJCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0KHJlbGF0 aW9ucyk7CiAJCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRlLT5wX3NvdXJj ZXRleHQsCiAJCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCkBAIC05Nzcs OCArOTk0LDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQ dWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMLAog CQkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlQdWJsaWNhdGlv bkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxpc3Qo cmVscyk7CisJCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJvaWQsIHJlbHMsIHRydWUsIE5V TEwsIFJFTEtJTkRfUkVMQVRJT04pOworCQkJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CiAJCX0K IAogCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKQEAgLTEyNTUsNyArMTI3Miw3IEBAIEFsdGVy UHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0 dXAsCiAJaWYgKCF0YWJsZXMgJiYgc3RtdC0+YWN0aW9uICE9IEFQX1NldE9iamVjdHMpCiAJCXJl dHVybjsKIAotCXJlbHMgPSBPcGVuVGFibGVMaXN0KHRhYmxlcyk7CisJcmVscyA9IE9wZW5SZWxh dGlvbkxpc3QodGFibGVzKTsKIAogCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cykK IAl7CkBAIC0xMjY2LDcgKzEyODMsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlDaGVja1B1YlJlbGF0aW9uQ29s dW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxzLCBwdWJsaXNoX3NjaGVtYSwKIAkJCQkJCQkJICAg cHViZm9ybS0+cHVidmlhcm9vdCk7CiAKLQkJUHVibGljYXRpb25BZGRUYWJsZXMocHViaWQsIHJl bHMsIGZhbHNlLCBzdG10KTsKKwkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMs IGZhbHNlLCBzdG10LCBSRUxLSU5EX1JFTEFUSU9OKTsKIAl9CiAJZWxzZSBpZiAoc3RtdC0+YWN0 aW9uID09IEFQX0Ryb3BPYmplY3RzKQogCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIHJl bHMsIGZhbHNlKTsKQEAgLTEyODksOCArMTMwNiw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkgKi8KIAkJCWlm IChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCiAJCQl7Ci0JCQkJb2xkcmVsaWRzID0gR2V0RXhjbHVk ZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwKLQkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BB UlRfUk9PVCk7CisJCQkJb2xkcmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAJCQl9CiAJ CX0KIAkJZWxzZQpAQCAtMTM2Myw4ICsxMzgwLDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkvKgogCQkJCSAq IFZhbGlkYXRlIHRoZSBjb2x1bW4gbGlzdC4gIElmIHRoZSBjb2x1bW4gbGlzdCBvciBXSEVSRQog CQkJCSAqIGNsYXVzZSBjaGFuZ2VzLCB0aGVuIHRoZSB2YWxpZGF0aW9uIGRvbmUgaGVyZSB3aWxs IGJlCi0JCQkJICogZHVwbGljYXRlZCBpbnNpZGUgUHVibGljYXRpb25BZGRUYWJsZXMoKS4gIFRo ZSB2YWxpZGF0aW9uCi0JCQkJICogaXMgY2hlYXAgZW5vdWdoIHRoYXQgdGhhdCBzZWVtcyBoYXJt bGVzcy4KKwkJCQkgKiBkdXBsaWNhdGVkIGluc2lkZSBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucygp LiAgVGhlCisJCQkJICogdmFsaWRhdGlvbiBpcyBjaGVhcCBlbm91Z2ggdGhhdCB0aGF0IHNlZW1z IGhhcm1sZXNzLgogCQkJCSAqLwogCQkJCW5ld2NvbHVtbnMgPSBwdWJfY29sbGlzdF92YWxpZGF0 ZShuZXdwdWJyZWwtPnJlbGF0aW9uLAogCQkJCQkJCQkJCQkJICBuZXdwdWJyZWwtPmNvbHVtbnMp OwpAQCAtMTQxMCwxMiArMTQyNywxMiBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkgKiBEb24ndCBib3RoZXIgY2Fs Y3VsYXRpbmcgdGhlIGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCiAJCSAq IHNraXAgZXhpc3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRlLgogCQkgKi8KLQkJ UHVibGljYXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQpOworCQlQdWJsaWNh dGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCwgUkVMS0lORF9SRUxBVElP Tik7CiAKLQkJQ2xvc2VUYWJsZUxpc3QoZGVscmVscyk7CisJCUNsb3NlUmVsYXRpb25MaXN0KGRl bHJlbHMpOwogCX0KIAotCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCUNsb3NlUmVsYXRpb25MaXN0 KHJlbHMpOwogfQogCiAvKgpAQCAtMTY1MSw3ICsxNjY4LDcgQEAgQWx0ZXJQdWJsaWNhdGlvbkFs bEZsYWdzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBSZWxhdGlvbiByZWwsCiAgKiBBbHRl ciB0aGUgZXhpc3RpbmcgcHVibGljYXRpb24uCiAgKgogICogVGhpcyBpcyBkaXNwYXRjaGVyIGZ1 bmN0aW9uIGZvciBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucywKLSAqIEFsdGVyUHVibGljYXRpb25T Y2hlbWFzIGFuZCBBbHRlclB1YmxpY2F0aW9uVGFibGVzLgorICogQWx0ZXJQdWJsaWNhdGlvblNj aGVtYXMgYW5kIEFsdGVyUHVibGljYXRpb25SZWxhdGlvbnMuCiAgKi8KIHZvaWQKIEFsdGVyUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkK QEAgLTE2ODMsMTIgKzE3MDAsMTkgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCWVsc2UKIAl7CiAJCUxpc3QJICAgKnJl bGF0aW9ucyA9IE5JTDsKLQkJTGlzdAkgICAqZXhjZXB0cmVsYXRpb25zID0gTklMOworCQlMaXN0 CSAgICpleGNlcHR0YmxzID0gTklMOworCQlMaXN0CSAgICpleGNlcHRzZXFzID0gTklMOwogCQlM aXN0CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAJCU9pZAkJCXB1YmlkID0gcHViZm9ybS0+b2lk OwogCiAJCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0 ZSwgJnJlbGF0aW9ucywKLQkJCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlz dCk7CisJCQkJCQkJCSAgICZleGNlcHR0YmxzLCAmZXhjZXB0c2VxcywgJnNjaGVtYWlkbGlzdCk7 CisKKwkJLyoKKwkJICogVE9ETzogRVhDRVBUIChTRVFVRU5DRSAuLi4pIGlzIG5vdCB5ZXQgc3Vw cG9ydGVkIHdpdGggQUxURVIKKwkJICogUFVCTElDQVRJT04uCisJCSAqLworCQlBc3NlcnQoZXhj ZXB0c2VxcyA9PSBOSUwpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsIHJl bGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIApAQCAtMTcxMSw3ICsxNzM1LDcgQEAgQWx0ZXJQdWJs aWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQog CQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkg ICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25z LCBleGNlcHRyZWxhdGlvbnMpOworCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMs IGV4Y2VwdHRibHMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRp b25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklM KTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOwpA QCAtMTgzMCwxMiArMTg1NCwxMiBAQCBSZW1vdmVQdWJsaWNhdGlvblNjaGVtYUJ5SWQoT2lkIHBz b2lkKQogfQogCiAvKgotICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEgUHVibGljYXRp b25UYWJsZSBsaXN0LgotICogVGhlIHJldHVybmVkIHRhYmxlcyBhcmUgbG9ja2VkIGluIFNoYXJl VXBkYXRlRXhjbHVzaXZlTG9jayBtb2RlIGluIG9yZGVyIHRvCi0gKiBhZGQgdGhlbSB0byBhIHB1 YmxpY2F0aW9uLgorICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEgUHVibGljYXRpb25S ZWxhdGlvbiBsaXN0LgorICogVGhlIHJldHVybmVkIHJlbGF0aW9ucyBhcmUgbG9ja2VkIGluIFNo YXJlVXBkYXRlRXhjbHVzaXZlTG9jayBtb2RlIGluIG9yZGVyCisgKiB0byBhZGQgdGhlbSB0byBh IHB1YmxpY2F0aW9uLgogICovCiBzdGF0aWMgTGlzdCAqCi1PcGVuVGFibGVMaXN0KExpc3QgKnRh YmxlcykKK09wZW5SZWxhdGlvbkxpc3QoTGlzdCAqdGFibGVzKQogewogCUxpc3QJICAgKnJlbGlk cyA9IE5JTDsKIAlMaXN0CSAgICpyZWxzID0gTklMOwpAQCAtMTg0OCw3ICsxODcyLDcgQEAgT3Bl blRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJICovCiAJZm9yZWFjaChsYywgdGFibGVzKQogCXsK LQkJUHVibGljYXRpb25UYWJsZSAqdCA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uVGFibGUsIGxj KTsKKwkJUHVibGljYXRpb25SZWxhdGlvbiAqdCA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uUmVs YXRpb24sIGxjKTsKIAkJYm9vbAkJcmVjdXJzZSA9IHQtPnJlbGF0aW9uLT5pbmg7CiAJCVJlbGF0 aW9uCXJlbDsKIAkJT2lkCQkJbXlyZWxpZDsKQEAgLTE5ODcsNyArMjAxMSw3IEBAIE9wZW5UYWJs ZUxpc3QoTGlzdCAqdGFibGVzKQogICogQ2xvc2UgYWxsIHJlbGF0aW9ucyBpbiB0aGUgbGlzdC4K ICAqLwogc3RhdGljIHZvaWQKLUNsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpCitDbG9zZVJlbGF0 aW9uTGlzdChMaXN0ICpyZWxzKQogewogCUxpc3RDZWxsICAgKmxjOwogCkBAIC0yMDMyLDExICsy MDU2LDE1IEBAIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpCiB9CiAKIC8qCi0gKiBB ZGQgbGlzdGVkIHRhYmxlcyB0byB0aGUgcHVibGljYXRpb24uCisgKiBBZGQgbGlzdGVkIHJlbGF0 aW9ucyB0byB0aGUgcHVibGljYXRpb24uCisgKgorICogJ3B1YnJlbGtpbmQnIGlzIHRoZSByZWxr aW5kIGFjY2VwdGVkIGJ5IHRoZSBwdWJsaWNhdGlvbiBjbGF1c2UuCisgKiBUaGUgcmVsa2luZCBv ZiBlYWNoIHJlbGF0aW9uIGluICdyZWxzJyBpcyBjaGVja2VkIGZvciBjb21wYXRpYmlsaXR5Cisg KiBhZ2FpbnN0IGl0LgogICovCiBzdGF0aWMgdm9pZAotUHVibGljYXRpb25BZGRUYWJsZXMoT2lk IHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCi0JCQkJCSBBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKK1B1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlz dCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIApAQCAtMjA0Niwx MiArMjA3NCwxMiBAQCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMs IGJvb2wgaWZfbm90X2V4aXN0cywKIAkJUmVsYXRpb24JcmVsID0gcHViX3JlbC0+cmVsYXRpb247 CiAJCU9iamVjdEFkZHJlc3Mgb2JqOwogCi0JCS8qIE11c3QgYmUgb3duZXIgb2YgdGhlIHRhYmxl IG9yIHN1cGVydXNlci4gKi8KKwkJLyogTXVzdCBiZSBvd25lciBvZiB0aGUgcmVsYXRpb24gb3Ig c3VwZXJ1c2VyLiAqLwogCQlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9uUmVsYXRpb25J ZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBHZXRVc2VySWQoKSkpCiAJCQlhY2xjaGVja19lcnJv cihBQ0xDSEVDS19OT1RfT1dORVIsIGdldF9yZWxraW5kX29ianR5cGUocmVsLT5yZF9yZWwtPnJl bGtpbmQpLAogCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CiAKLQkJb2Jq ID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1YmlkLCBwdWJfcmVsLCBpZl9ub3RfZXhpc3Rz LCBzdG10KTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1YmlkLCBwdWJfcmVs LCBpZl9ub3RfZXhpc3RzLCBzdG10LCBwdWJyZWxraW5kKTsKIAkJaWYgKHN0bXQpCiAJCXsKIAkJ CUV2ZW50VHJpZ2dlckNvbGxlY3RTaW1wbGVDb21tYW5kKG9iaiwgSW52YWxpZE9iamVjdEFkZHJl c3MsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQppbmRleCBmZjRlMTM4OGM1NS4uZjBiZTIyZWQ5NDEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQpAQCAtNDU3LDcgKzQ1Nyw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJVHJpZ2dl clRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0 IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9s aXN0IHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAotCQkJCXB1Yl9leGNlcHRfb2JqX2xpc3Qgb3B0X3B1 Yl9leGNlcHRfY2xhdXNlCisJCQkJcHViX2V4Y2VwdF90YmxfbGlzdCBvcHRfcHViX2V4Y2VwdF90 YmxfY2xhdXNlCisJCQkJcHViX2V4Y2VwdF9zZXFfbGlzdCBvcHRfcHViX2V4Y2VwdF9zZXFfY2xh dXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVybmluZ19jbGF1c2UKICV0eXBlIDxub2RlPgly ZXR1cm5pbmdfb3B0aW9uCkBAIC01OTcsNyArNTk4LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVjPiBh dXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGljYXRpb25vYmpl Y3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKLSV0eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNwZWM+ IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYworJXR5cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4g UHVibGljYXRpb25FeGNlcHRUYmxTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQ dWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMKICV0eXBlIDxwdWJsaWNhdGlvbmFsbG9iamVjdHNwZWM+ IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5yZXNlcnZlZF9rZXl3 b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKQEAgLTExMjY1LDcgKzExMjY3LDcgQEAgQWx0ZXJP d25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBU TyBSb2xlU3BlYwogICogcHViX2FsbF9vYmpfdHlwZSBpcyBvbmUgb2Y6CiAgKgogICoJCVRBQkxF UyBbRVhDRVBUIChUQUJMRSB0YWJsZSBbLCAuLi5dICldCi0gKgkJU0VRVUVOQ0VTCisgKgkJU0VR VUVOQ0VTIFtFWENFUFQgKFNFUVVFTkNFIHNlcXVlbmNlIFssIC4uLl0gKV0KICAqCiAgKiBDUkVB VEUgUFVCTElDQVRJT04gRk9SIHB1Yl9vYmogWywgLi4uXSBbV0lUSCBvcHRpb25zXQogICoKQEAg LTExMzI3LDEwICsxMTMyOSwxMCBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJewogCQkJCQkk JCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0g UFVCTElDQVRJT05PQkpfVEFCTEU7Ci0JCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDI7Ci0JCQkJCSQk LT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwotCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNl ID0gJDQ7CisJCQkJCSQkLT5wdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRp b24pOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gJDI7CisJCQkJCSQkLT5wdWJy ZWxhdGlvbi0+Y29sdW1ucyA9ICQzOworCQkJCQkkJC0+cHVicmVsYXRpb24tPndoZXJlQ2xhdXNl ID0gJDQ7CiAJCQkJfQogCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQKIAkJCQl7CkBAIC0x MTM1MSw3ICsxMTM1Myw3IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1Ym9ianR5 cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CiAJCQkJCS8qCiAJCQkJCSAqIElmIGVp dGhlciBhIHJvdyBmaWx0ZXIgb3IgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkLCBjcmVhdGUKLQkJ CQkJICogYSBQdWJsaWNhdGlvblRhYmxlIG9iamVjdC4KKwkJCQkJICogYSBQdWJsaWNhdGlvblJl bGF0aW9uIG9iamVjdC4KIAkJCQkJICovCiAJCQkJCWlmICgkMiB8fCAkMykKIAkJCQkJewpAQCAt MTEzNjEsMTAgKzExMzYzLDEwIEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJCSAqIGVycm9y IHdpbGwgYmUgdGhyb3duIGxhdGVyIHZpYQogCQkJCQkJICogcHJlcHJvY2Vzc19wdWJvYmpfbGlz dCgpLgogCQkJCQkJICovCi0JCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlv blRhYmxlKTsKLQkJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSBtYWtlUmFuZ2VWYXIoTlVM TCwgJDEsIEAxKTsKLQkJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwotCQkJCQkJJCQt PnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQzOworCQkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFr ZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7CisJCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0 aW9uID0gbWFrZVJhbmdlVmFyKE5VTEwsICQxLCBAMSk7CisJCQkJCQkkJC0+cHVicmVsYXRpb24t PmNvbHVtbnMgPSAkMjsKKwkJCQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkMzsK IAkJCQkJfQogCQkJCQllbHNlCiAJCQkJCXsKQEAgLTExMzc2LDEwICsxMTM3OCwxMCBAQCBQdWJs aWNhdGlvbk9ialNwZWM6CiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2Jq U3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9O OwotCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKLQkJCQkJ JCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9IG1ha2VSYW5nZVZhckZyb21RdWFsaWZpZWROYW1lKCQx LCAkMiwgQDEsIHl5c2Nhbm5lcik7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwot CQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5wdWJyZWxhdGlv biA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24t PnJlbGF0aW9uID0gbWFrZVJhbmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlz Y2FubmVyKTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5jb2x1bW5zID0gJDM7CisJCQkJCSQkLT5w dWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkNDsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJ CQkJfQogCQkJLyogZ3JhbW1hciBsaWtlIHRhYmxlbmFtZSAqICwgT05MWSB0YWJsZW5hbWUsIE9O TFkgKCB0YWJsZW5hbWUgKSAqLwpAQCAtMTEzODcsMTAgKzExMzg5LDEwIEBAIFB1YmxpY2F0aW9u T2JqU3BlYzoKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsK IAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047Ci0JCQkJ CSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVi dGFibGUtPnJlbGF0aW9uID0gJDE7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwot CQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDM7CisJCQkJCSQkLT5wdWJyZWxhdGlv biA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24t PnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29sdW1ucyA9ICQyOworCQkJ CQkkJC0+cHVicmVsYXRpb24tPndoZXJlQ2xhdXNlID0gJDM7CiAJCQkJfQogCQkJfCBDVVJSRU5U X1NDSEVNQQogCQkJCXsKQEAgLTExNDA2LDIzICsxMTQwOCwyOSBAQCBwdWJfb2JqX2xpc3Q6CVB1 YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCi1v cHRfcHViX2V4Y2VwdF9jbGF1c2U6Ci0JCQlFWENFUFQgJygnIFRBQkxFIHB1Yl9leGNlcHRfb2Jq X2xpc3QgJyknCXsgJCQgPSAkNDsgfQorb3B0X3B1Yl9leGNlcHRfdGJsX2NsYXVzZToKKwkJCUVY Q0VQVCAnKCcgVEFCTEUgcHViX2V4Y2VwdF90YmxfbGlzdCAnKScJeyAkJCA9ICQ0OyB9CisJCQl8 IC8qRU1QVFkqLwkJCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCitvcHRfcHViX2V4Y2VwdF9z ZXFfY2xhdXNlOgorCQkJRVhDRVBUICcoJyBTRVFVRU5DRSBwdWJfZXhjZXB0X3NlcV9saXN0ICcp Jwl7ICQkID0gJDQ7IH0KIAkJCXwgLypFTVBUWSovCQkJCQkJCQkJeyAkJCA9IE5JTDsgfQogCQk7 CiAKIFB1YmxpY2F0aW9uQWxsT2JqU3BlYzoKLQkJCQlBTEwgVEFCTEVTIG9wdF9wdWJfZXhjZXB0 X2NsYXVzZQorCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfdGJsX2NsYXVzZQogCQkJCQl7 CiAJCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uQWxsT2JqU3BlYyk7CiAJCQkJCQkkJC0+ cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OX0FMTF9UQUJMRVM7Ci0JCQkJCQkkJC0+ZXhjZXB0X3Rh YmxlcyA9ICQzOworCQkJCQkJJCQtPmV4Y2VwdF9yZWxhdGlvbnMgPSAkMzsKIAkJCQkJCSQkLT5s b2NhdGlvbiA9IEAxOwogCQkJCQl9Ci0JCQkJfCBBTEwgU0VRVUVOQ0VTCisJCQkJfCBBTEwgU0VR VUVOQ0VTIG9wdF9wdWJfZXhjZXB0X3NlcV9jbGF1c2UKIAkJCQkJewogCQkJCQkJJCQgPSBtYWtl Tm9kZShQdWJsaWNhdGlvbkFsbE9ialNwZWMpOwogCQkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJM SUNBVElPTl9BTExfU0VRVUVOQ0VTOworCQkJCQkJJCQtPmV4Y2VwdF9yZWxhdGlvbnMgPSAkMzsK IAkJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCQl9CiAJCQkJCTsKQEAgLTExNDMzLDIxICsx MTQ0MSw0MSBAQCBwdWJfYWxsX29ial90eXBlX2xpc3Q6CVB1YmxpY2F0aW9uQWxsT2JqU3BlYwog CQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCi1QdWJsaWNhdGlvbkV4Y2VwdE9i alNwZWM6CitQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWM6CiAJCQkgcmVsYXRpb25fZXhwcgogCQkJ CXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVi b2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRTsKLQkJCQkJJCQtPnB1YnRhYmxl ID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0 ID0gdHJ1ZTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+cHVi cmVsYXRpb24gPSBtYWtlTm9kZShQdWJsaWNhdGlvblJlbGF0aW9uKTsKKwkJCQkJJCQtPnB1YnJl bGF0aW9uLT5leGNlcHQgPSB0cnVlOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0g JDE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJCX0KKwk7CisKK1B1YmxpY2F0aW9uRXhj ZXB0U2VxU3BlYzoKKwkJCSBxdWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9k ZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9O T0JKX0VYQ0VQVF9TRVFVRU5DRTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVi bGljYXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+ZXhjZXB0ID0gdHJ1ZTsK KwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5yZWxhdGlvbiA9ICQxOwogCQkJCQkkJC0+bG9jYXRpb24g PSBAMTsKIAkJCQl9CiAJOwogCi1wdWJfZXhjZXB0X29ial9saXN0OiBQdWJsaWNhdGlvbkV4Y2Vw dE9ialNwZWMKK3B1Yl9leGNlcHRfdGJsX2xpc3Q6IFB1YmxpY2F0aW9uRXhjZXB0VGJsU3BlYwor CQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgcHViX2V4Y2VwdF90YmxfbGlzdCAn LCcgb3B0X3RhYmxlIFB1YmxpY2F0aW9uRXhjZXB0VGJsU3BlYworCQkJCQl7ICQkID0gbGFwcGVu ZCgkMSwgJDQpOyB9CisJOworCitwdWJfZXhjZXB0X3NlcV9saXN0OiBQdWJsaWNhdGlvbkV4Y2Vw dFNlcVNwZWMKIAkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9Ci0JCQl8IHB1Yl9leGNlcHRf b2JqX2xpc3QgJywnIG9wdF90YWJsZSBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCXwgcHVi X2V4Y2VwdF9zZXFfbGlzdCAnLCcgUHVibGljYXRpb25FeGNlcHRTZXFTcGVjCisJCQkJCXsgJCQg PSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJCXwgcHViX2V4Y2VwdF9zZXFfbGlzdCAnLCcgU0VRVUVO Q0UgUHVibGljYXRpb25FeGNlcHRTZXFTcGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkNCk7 IH0KIAk7CiAKQEAgLTIwNzQ3LDEyICsyMDc3NSwxMiBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2Jq dHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogCQkJ CQkJCQlib29sICphbGxfdGFibGVzLCBib29sICphbGxfc2VxdWVuY2VzLAogCQkJCQkJCQljb3Jl X3l5c2Nhbl90IHl5c2Nhbm5lcikKIHsKLQlpZiAoIWFsbF9vYmplY3RzX2xpc3QpCi0JCXJldHVy bjsKLQogCSphbGxfdGFibGVzID0gZmFsc2U7CiAJKmFsbF9zZXF1ZW5jZXMgPSBmYWxzZTsKIAor CWlmICghYWxsX29iamVjdHNfbGlzdCkKKwkJcmV0dXJuOworCiAJZm9yZWFjaF9wdHIoUHVibGlj YXRpb25BbGxPYmpTcGVjLCBvYmosIGFsbF9vYmplY3RzX2xpc3QpCiAJewogCQlpZiAob2JqLT5w dWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OX0FMTF9UQUJMRVMpCkBAIC0yMDc2NSw3ICsyMDc5Myw3 IEBAIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlz dCwgTGlzdCAqKnB1Ym9iamVjdHMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2Nh dGlvbikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7Ci0JCQkqcHVib2JqZWN0cyA9IGxpc3Rf Y29uY2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOworCQkJKnB1Ym9iamVjdHMg PSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNlcHRfcmVsYXRpb25zKTsKIAkJfQog CQllbHNlIGlmIChvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05fQUxMX1NFUVVFTkNFUykK IAkJewpAQCAtMjA3NzcsNiArMjA4MDUsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9s aXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKG9iai0+bG9jYXRpb24pKTsKIAogCQkJKmFsbF9zZXF1ZW5jZXMgPSB0 cnVlOworCQkJKnB1Ym9iamVjdHMgPSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNl cHRfcmVsYXRpb25zKTsKIAkJfQogCX0KIH0KQEAgLTIwODEyLDggKzIwODQxLDggQEAgcHJlcHJv Y2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlz Y2FubmVyKQogCiAJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFC TEUpCiAJCXsKLQkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVidGFibGUgbXVzdCBiZSBzZXQgZm9y IHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KLQkJCWlmICghcHVib2JqLT5uYW1lICYmICFwdWJvYmot PnB1YnRhYmxlKQorCQkJLyogUmVsYXRpb24gbmFtZSBvciBwdWJyZWxhdGlvbiBtdXN0IGJlIHNl dCBmb3IgdGhpcyB0eXBlIG9mIG9iamVjdCAqLworCQkJaWYgKCFwdWJvYmotPm5hbWUgJiYgIXB1 Ym9iai0+cHVicmVsYXRpb24pCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRhYmxlIG5hbWUiKSwK QEAgLTIwODIxLDEyICsyMDg1MCwxMiBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1 Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJCWlmIChwdWJvYmot Pm5hbWUpCiAJCQl7Ci0JCQkJLyogY29udmVydCBpdCB0byBQdWJsaWNhdGlvblRhYmxlICovCi0J CQkJUHVibGljYXRpb25UYWJsZSAqcHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxl KTsKKwkJCQkvKiBDb252ZXJ0IGl0IHRvIFB1YmxpY2F0aW9uUmVsYXRpb24gKi8KKwkJCQlQdWJs aWNhdGlvblJlbGF0aW9uICpwdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRp b24pOwogCi0JCQkJcHVidGFibGUtPnJlbGF0aW9uID0KKwkJCQlwdWJyZWxhdGlvbi0+cmVsYXRp b24gPQogCQkJCQltYWtlUmFuZ2VWYXIoTlVMTCwgcHVib2JqLT5uYW1lLCBwdWJvYmotPmxvY2F0 aW9uKTsKLQkJCQlwdWJvYmotPnB1YnRhYmxlID0gcHVidGFibGU7CisJCQkJcHVib2JqLT5wdWJy ZWxhdGlvbiA9IHB1YnJlbGF0aW9uOwogCQkJCXB1Ym9iai0+bmFtZSA9IE5VTEw7CiAJCQl9CiAJ CX0KQEAgLTIwODM0LDE0ICsyMDg2MywxNCBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3Qg KnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJIHB1Ym9iai0+ cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSkKIAkJewog CQkJLyogV0hFUkUgY2xhdXNlIGlzIG5vdCBhbGxvd2VkIG9uIGEgc2NoZW1hIG9iamVjdCAqLwot CQkJaWYgKHB1Ym9iai0+cHVidGFibGUgJiYgcHVib2JqLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2Up CisJCQlpZiAocHVib2JqLT5wdWJyZWxhdGlvbiAmJiBwdWJvYmotPnB1YnJlbGF0aW9uLT53aGVy ZUNsYXVzZSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCiAJCQkJCQllcnJtc2coIldIRVJFIGNsYXVzZSBub3QgYWxsb3dlZCBmb3Igc2No ZW1hIiksCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOwogCiAJ CQkvKiBDb2x1bW4gbGlzdCBpcyBub3QgYWxsb3dlZCBvbiBhIHNjaGVtYSBvYmplY3QgKi8KLQkJ CWlmIChwdWJvYmotPnB1YnRhYmxlICYmIHB1Ym9iai0+cHVidGFibGUtPmNvbHVtbnMpCisJCQlp ZiAocHVib2JqLT5wdWJyZWxhdGlvbiAmJiBwdWJvYmotPnB1YnJlbGF0aW9uLT5jb2x1bW5zKQog CQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK IAkJCQkJCWVycm1zZygiY29sdW1uIHNwZWNpZmljYXRpb24gbm90IGFsbG93ZWQgZm9yIHNjaGVt YSIpLApAQCAtMjA4NDksMTEgKzIwODc4LDExIEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlz dCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAogCQkJLyoKIAkJ CSAqIFdlIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgdHlwZSBvZiBzY2hl bWEgb2JqZWN0cwotCQkJICogYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJ0YWJsZSBpcyBz ZXQuCisJCQkgKiBiYXNlZCBvbiB3aGV0aGVyIG5hbWUgYW5kIHB1YnJlbGF0aW9uIGlzIHNldC4K IAkJCSAqLwogCQkJaWYgKHB1Ym9iai0+bmFtZSkKIAkJCQlwdWJvYmotPnB1Ym9ianR5cGUgPSBQ VUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOwotCQkJZWxzZSBpZiAoIXB1Ym9iai0+bmFt ZSAmJiAhcHVib2JqLT5wdWJ0YWJsZSkKKwkJCWVsc2UgaWYgKCFwdWJvYmotPm5hbWUgJiYgIXB1 Ym9iai0+cHVicmVsYXRpb24pCiAJCQkJcHVib2JqLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05P QkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCmluZGV4IGY2N2RhZjg1OTExLi41Y2YyZWFkNmQxZiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00 NTcxLDIzICs0NTcxLDMxIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0KQogCQl7CiAJ CQlOVUxMLCBOVUxMCiAJCX07CisJCXB1YmluZm9baV0uZXhjZXB0X3NlcXVlbmNlcyA9IChTaW1w bGVQdHJMaXN0KQorCQl7CisJCQlOVUxMLCBOVUxMCisJCX07CiAKIAkJLyogRGVjaWRlIHdoZXRo ZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYocHViaW5m b1tpXS5kb2JqKSwgZm91dCk7CiAKIAkJLyoKLQkJICogR2V0IHRoZSBsaXN0IG9mIHRhYmxlcyBm b3IgcHVibGljYXRpb25zIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUCi0JCSAqIFRBQkxFIGNsYXVz ZS4KKwkJICogR2V0IHRoZSBsaXN0IG9mIHRhYmxlcyBhbmQgc2VxdWVuY2VzIHNwZWNpZmllZCBp biB0aGUgcHVibGljYXRpb24ncworCQkgKiBFWENFUFQgY2xhdXNlLgogCQkgKgotCQkgKiBBbHRo b3VnaCBpbmRpdmlkdWFsIHRhYmxlIGVudHJpZXMgaW4gRVhDRVBUIGxpc3QgY291bGQgYmUgc3Rv cmVkIGluCi0JCSAqIFB1YmxpY2F0aW9uUmVsSW5mbywgZHVtcFB1YmxpY2F0aW9uVGFibGUgY2Fu bm90IGJlIHVzZWQgdG8gZW1pdAotCQkgKiB0aGVtLCBiZWNhdXNlIHRoZXJlIGlzIG5vIEFMVEVS IFBVQkxJQ0FUSU9OIC4uLiBBREQgY29tbWFuZCB0byBhZGQKLQkJICogaW5kaXZpZHVhbCB0YWJs ZSBlbnRyaWVzIHRvIHRoZSBFWENFUFQgbGlzdC4KKwkJICogQWx0aG91Z2ggaW5kaXZpZHVhbCB0 YWJsZS9zZXF1ZW5jZSBlbnRyaWVzIGluIEVYQ0VQVCBsaXN0IGNvdWxkIGJlCisJCSAqIHN0b3Jl ZCBpbiBQdWJsaWNhdGlvblJlbEluZm8sIGR1bXBQdWJsaWNhdGlvblRhYmxlIGNhbm5vdCBiZSB1 c2VkCisJCSAqIHRvIGVtaXQgdGhlbSwgYmVjYXVzZSB0aGVyZSBpcyBubyBBTFRFUiBQVUJMSUNB VElPTiAuLi4gQUREIGNvbW1hbmQKKwkJICogdG8gYWRkIGluZGl2aWR1YWwgdGFibGUgZW50cmll cyB0byB0aGUgRVhDRVBUIGxpc3QuCiAJCSAqCiAJCSAqIFRoZXJlZm9yZSwgdGhlIGFwcHJvYWNo IGlzIHRvIGR1bXAgdGhlIGNvbXBsZXRlIEVYQ0VQVCBsaXN0IGluIGEKIAkJICogc2luZ2xlIENS RUFURSBQVUJMSUNBVElPTiBzdGF0ZW1lbnQuIFB1YmxpY2F0aW9uSW5mbyBpcyB1c2VkIHRvCiAJ CSAqIGNvbGxlY3QgdGhpcyBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgdGhlbiBlbWl0dGVkIGJ5CiAJ CSAqIGR1bXBQdWJsaWNhdGlvbigpLgorCQkgKgorCQkgKiBOb3RlOiBFWENFUFQgKFRBQkxFIC4u Likgd2FzIGludHJvZHVjZWQgaW4gUEcxOSwgd2hlcmVhcyBFWENFUFQKKwkJICogKFNFUVVFTkNF IC4uLikgd2FzIGludHJvZHVjZWQgaW4gUEcyMC4gSGVuY2UsIHRoZSB2ZXJzaW9uIGNoZWNrcwor CQkgKiBiZWxvdyBkaWZmZXIuCiAJCSAqLwogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAx OTAwMDApCiAJCXsKQEAgLTQ1OTYsOSArNDYwNCwxMCBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2 ZSAqZm91dCkKIAogCQkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxdWVyeSwKLQkJCQkJCQkgICJTRUxFQ1QgcHJyZWxpZFxuIgotCQkJCQkJCSAgIkZST00g cGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWxcbiIKLQkJCQkJCQkgICJXSEVSRSBwcnB1Ymlk ID0gJXUgQU5EIHByZXhjZXB0IiwKKwkJCQkJCQkgICJTRUxFQ1QgcHIucHJyZWxpZCwgcGMucmVs a2luZFxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJc biIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgcGMgT04gcHIucHJyZWxpZCA9 IHBjLm9pZFxuIgorCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAldSBBTkQgcHIucHJleGNl cHQiLAogCQkJCQkJCSAgcHViaW5mb1tpXS5kb2JqLmNhdElkLm9pZCk7CiAKIAkJCXJlc190Ymxz ID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpA QCAtNDYwOCwxNCArNDYxNywyNiBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJ CWZvciAoaW50IGogPSAwOyBqIDwgbnRibHM7IGorKykKIAkJCXsKIAkJCQlPaWQJCQlwcnJlbGlk OworCQkJCWNoYXIJCXJlbGtpbmQ7CiAJCQkJVGFibGVJbmZvICAqdGJpbmZvOwogCiAJCQkJcHJy ZWxpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlc190YmxzLCBqLCAwKSk7CisJCQkJcmVsa2luZCA9 ICpQUWdldHZhbHVlKHJlc190YmxzLCBqLCAxKTsKIAogCQkJCXRiaW5mbyA9IGZpbmRUYWJsZUJ5 T2lkKHBycmVsaWQpOwogCiAJCQkJaWYgKHRiaW5mbyAhPSBOVUxMKQotCQkJCQlzaW1wbGVfcHRy X2xpc3RfYXBwZW5kKCZwdWJpbmZvW2ldLmV4Y2VwdF90YWJsZXMsIHRiaW5mbyk7CisJCQkJewor CQkJCQkvKiBFWENFUFQgKFNFUVVFTkNFIC4uLikgaXMgc3VwcG9ydGVkIGZyb20gUEcyMCBvbndh cmRzLiAqLworCQkJCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAyMDAwMDAgJiYKKwkJCQkJ CXJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBl bmQoJnB1YmluZm9baV0uZXhjZXB0X3NlcXVlbmNlcywgdGJpbmZvKTsKKwkJCQkJZWxzZSBpZiAo cmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCQkJCQkJIHJlbGtpbmQgPT0gUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJnB1Ymlu Zm9baV0uZXhjZXB0X3RhYmxlcywgdGJpbmZvKTsKKwkJCQkJZWxzZQorCQkJCQkJQXNzZXJ0KGZh bHNlKTsKKwkJCQl9CiAJCQl9CiAKIAkJCVBRY2xlYXIocmVzX3RibHMpOwpAQCAtNDY3NSwxMiAr NDY5NiwzMCBAQCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRp b25JbmZvICpwdWJpbmZvKQogCQl9CiAJCWlmIChuX2V4Y2VwdCA+IDApCiAJCQlhcHBlbmRQUUV4 cEJ1ZmZlckNoYXIocXVlcnksICcpJyk7CisJfQorCWlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5j ZXMpCisJeworCQlpbnQJCQluX2V4Y2VwdCA9IDA7CiAKLQkJaWYgKHB1YmluZm8tPnB1YmFsbHNl cXVlbmNlcykKKwkJaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKIAkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiLCBBTEwgU0VRVUVOQ0VTIik7CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CisKKwkJLyogSW5jbHVkZSBF WENFUFQgKFNFUVVFTkNFKSBjbGF1c2UgaWYgdGhlcmUgYXJlIGV4Y2VwdF9zZXF1ZW5jZXMuICov CisJCWZvciAoU2ltcGxlUHRyTGlzdENlbGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRfc2VxdWVu Y2VzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7CisJCQlUYWJsZUluZm8gICp0 YmluZm8gPSAoVGFibGVJbmZvICopIGNlbGwtPnB0cjsKKwkJCWNvbnN0IGNoYXIgKnNlcW5hbWUg PSBmbXRRdWFsaWZpZWREdW1wYWJsZSh0YmluZm8pOworCisJCQlpZiAoKytuX2V4Y2VwdCA9PSAx KQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIEVYQ0VQVCAoU0VRVUVOQ0UgJXMiLCBz ZXFuYW1lKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgJXMiLCBz ZXFuYW1lKTsKKwkJfQorCQlpZiAobl9leGNlcHQgPiAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJD aGFyKHF1ZXJ5LCAnKScpOwogCX0KLQllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMp Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CiAK IAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSVRIIChwdWJsaXNoID0gJyIpOwogCWlm IChwdWJpbmZvLT5wdWJpbnNlcnQpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA1YTY3MjZkOGIxMi4uOGU4Njlm ZTc5MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjc5LDYgKzY3OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9Q dWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBw dWJnZW5jb2xzX3R5cGU7CiAJU2ltcGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOworCVNpbXBsZVB0 ckxpc3QgZXhjZXB0X3NlcXVlbmNlczsKIH0gUHVibGljYXRpb25JbmZvOwogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbAppbmRleCA5MjU4OTQ4YjU4My4uOWEwNjczNTc1ZDIgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjgzLDYgKzMyODMsMjYgQEAgbXkgJXRlc3RzID0gKAog CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LAog CisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gOTIs CisJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTRVFVRU5DRSB0ZXN0X2V4Y2VwdF9zZXE7CisJCSAg IENSRUFURSBQVUJMSUNBVElPTiBwdWIxMSBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVF TkNFIHB1YmxpYy50ZXN0X3RhYmxlX2NvbDFfc2VxLCBwdWJsaWMudGVzdF9leGNlcHRfc2VxKTsn LAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTEgRk9SIEFM TCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBwdWJsaWMudGVzdF90YWJsZV9jb2wxX3NlcSwg cHVibGljLnRlc3RfZXhjZXB0X3NlcSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwg ZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBz ZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 YjEyJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdD UkVBVEUgUFVCTElDQVRJT04gcHViMTIgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSBkdW1w X3Rlc3QudGVzdF90YWJsZSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBwdWJsaWMu dGVzdF90YWJsZV9jb2wxX3NlcSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBV QkxJQ0FUSU9OIHB1YjEyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgT05MWSBkdW1wX3Rl c3QudGVzdF90YWJsZSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBwdWJsaWMudGVz dF90YWJsZV9jb2wxX3NlcSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRl LCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9u X3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKIAknQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxJyA9 PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFNVQlND UklQVElPTiBzdWIxCkBAIC00MDgyLDYgKzQxMDIsOCBAQCBteSAldGVzdHMgPSAoCiAJfSwKIAog CSdDUkVBVEUgU0VRVUVOQ0UgdGVzdF90YWJsZV9jb2wxX3NlcScgPT4geworCQljcmVhdGVfb3Jk ZXIgPT4gOTAsCisJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTRVFVRU5DRSB0ZXN0X3RhYmxlX2Nv bDFfc2VxJywKIAkJcmVnZXhwID0+IHFyL14KIAkJCVxRQ1JFQVRFIFNFUVVFTkNFIGR1bXBfdGVz dC50ZXN0X3RhYmxlX2NvbDFfc2VxXEUKIAkJCVxuXHMrXFFBUyBpbnRlZ2VyXEUKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5k ZXggZmVmODZiNGNjYTMuLmU4YWQ3MWJhNTgzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTY3Miw3ICsxNjcyLDcg QEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAl7CiAJ CVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7CiAJCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0 LnBvcHQ7Ci0JCWNoYXIJICAgKmZvb3RlcnNbM10gPSB7TlVMTCwgTlVMTCwgTlVMTH07CisJCWNo YXIJICAgKmZvb3RlcnNbNF0gPSB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH07CiAKIAkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgc2VxdWVuY2UgaW5mb3JtYXRp b24iKSk7CiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCkBAIC0xNzUwLDEyICsxNzUwLDI4IEBA IGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCXsKIAkJ CXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwKIAkJCQkJCQkgIF8oIkdldCBw dWJsaWNhdGlvbnMgY29udGFpbmluZyB0aGlzIHNlcXVlbmNlIikpOwotCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwgIlNFTEVDVCBwdWJuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlv biBwIgorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwLnB1Ym5hbWUgRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHAiCiAJCQkJCQkJICAiXG5XSEVSRSBwLnB1YmFsbHNl cXVlbmNlcyIKLQkJCQkJCQkgICJcbiBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJs aXNoYWJsZSgnJXMnKSIKLQkJCQkJCQkgICJcbk9SREVSIEJZIDEiLAorCQkJCQkJCSAgIlxuIEFO RCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpIiwKIAkJCQkJCQkg IG9pZCk7CiAKKwkJCS8qCisJCQkgKiBTa2lwIGVudHJpZXMgd2hlcmUgdGhpcyBzZXF1ZW5jZSBh cHBlYXJzIGluIHRoZSBwdWJsaWNhdGlvbidzCisJCQkgKiBFWENFUFQgbGlzdC4KKwkJCSAqLwor CQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMjAwMDAwKQorCQkJeworCQkJCWFwcGVuZFBRRXhwQnVm ZmVyKCZidWYsCisJCQkJCQkJCSAgIlxuIEFORCBOT1QgRVhJU1RTICgiCisJCQkJCQkJCSAgIlxu IAlTRUxFQ1QgMSIKKwkJCQkJCQkJICAiXG4gCUZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlv bl9yZWwgcHIiCisJCQkJCQkJCSAgIlxuIAlXSEVSRSBwci5wcnB1YmlkID0gcC5vaWQgQU5EIgor CQkJCQkJCQkgICJcbiAJcHIucHJyZWxpZCA9ICclcycgQU5EIHByLnByZXhjZXB0KSIsCisJCQkJ CQkJCSAgb2lkKTsKKwkJCX0KKworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlxuT1JERVIg QlkgMSIpOworCiAJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CiAJCQlpZiAocmVzdWx0 KQogCQkJewpAQCAtMTc4MCw2ICsxNzk2LDQyIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQl9CiAJCX0KIAorCQkvKiBQcmludCBwdWJsaWNhdGlv bnMgd2hvc2UgRVhDRVBUIGNsYXVzZSBjb250YWlucyB0aGlzIHNlcXVlbmNlICovCisJCWlmIChw c2V0LnN2ZXJzaW9uID49IDIwMDAwMCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCQkgICJTRUxFQ1QgcC5wdWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfcHVibGlj YXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCSAgIldIRVJFIHBy LnBycmVsaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7 Iiwgb2lkKTsKKworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKHJlc3Vs dCkKKwkJCXsKKwkJCQlpbnQJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJCWlm ICh0dXBsZXMgPiAwKQorCQkJCXsKKwkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRtcGJ1ZiwgXygi RXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbnM6IikpOworCisJCQkJCS8qIE1pZ2h0IGJlIGFuIGVt cHR5IHNldCAtIHRoYXQncyBvayAqLworCQkJCQlmb3IgKGkgPSAwOyBpIDwgdHVwbGVzOyBpKysp CisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmdG1wYnVmLCAiXG4gICAgXCIlc1wiIiwgUFFnZXR2 YWx1ZShyZXN1bHQsIGksIDApKTsKKworCQkJCQlpZiAoZm9vdGVyc1swXSA9PSBOVUxMKQorCQkJ CQkJZm9vdGVyc1swXSA9IHBnX3N0cmR1cCh0bXBidWYuZGF0YSk7CisJCQkJCWVsc2UgaWYgKGZv b3RlcnNbMV0gPT0gTlVMTCkKKwkJCQkJCWZvb3RlcnNbMV0gPSBwZ19zdHJkdXAodG1wYnVmLmRh dGEpOworCQkJCQllbHNlCisJCQkJCQlmb290ZXJzWzJdID0gcGdfc3RyZHVwKHRtcGJ1Zi5kYXRh KTsKKwkJCQkJcmVzZXRQUUV4cEJ1ZmZlcigmdG1wYnVmKTsKKwkJCQl9CisKKwkJCQlQUWNsZWFy KHJlc3VsdCk7CisJCQl9CisJCX0KKwogCQlpZiAodGFibGVpbmZvLnJlbHBlcnNpc3RlbmNlID09 IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKQogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBf KCJVbmxvZ2dlZCBzZXF1ZW5jZSBcIiVzLiVzXCIiKSwKIAkJCQkJCQkgIHNjaGVtYW5hbWUsIHJl bGF0aW9ubmFtZSk7CkBAIC0xNzk2LDYgKzE4NDgsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWls cyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCiAJCXBnX2ZyZWUoZm9vdGVyc1swXSk7CiAJCXBn X2ZyZWUoZm9vdGVyc1sxXSk7CisJCXBnX2ZyZWUoZm9vdGVyc1syXSk7CiAKIAkJcmV0dmFsID0g dHJ1ZTsKIAkJZ290byBlcnJvcl9yZXR1cm47CQkvKiBub3QgYW4gZXJyb3IsIGp1c3QgcmV0dXJu IGVhcmx5ICovCkBAIC02NzI3LDYgKzY3ODAsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25z dCBjaGFyICpwYXR0ZXJuKQogCQljaGFyCSAgICpwdWJpZCA9IFBRZ2V0dmFsdWUocmVzLCBpLCAw KTsKIAkJY2hhcgkgICAqcHVibmFtZSA9IFBRZ2V0dmFsdWUocmVzLCBpLCAxKTsKIAkJYm9vbAkJ cHViYWxsdGFibGVzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCAzKSwgInQiKSA9PSAwOwor CQlib29sCQlwdWJhbGxzZXF1ZW5jZXMgPSBzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIDQpLCAi dCIpID09IDA7CiAJCXByaW50VGFibGVPcHQgbXlvcHQgPSBwc2V0LnBvcHQudG9wdDsKIAogCQlp bml0UFFFeHBCdWZmZXIoJnRpdGxlKTsKQEAgLTY3NjMsNyArNjgxNyw3IEBAIGRlc2NyaWJlUHVi bGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29u dCwgUFFnZXR2YWx1ZShyZXMsIGksIDEwKSwgZmFsc2UsIGZhbHNlKTsKIAkJcHJpbnRUYWJsZUFk ZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMSksIGZhbHNlLCBmYWxzZSk7CiAKLQkJ aWYgKCFwdWJhbGx0YWJsZXMpCisJCWlmICghcHViYWxsdGFibGVzICYmICFwdWJhbGxzZXF1ZW5j ZXMpCiAJCXsKIAkJCS8qIEdldCB0aGUgdGFibGVzIGZvciB0aGUgc3BlY2lmaWVkIHB1YmxpY2F0 aW9uICovCiAJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsCkBAIC02ODE3 LDcgKzY4NzEsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQog CQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQotCQllbHNlCisKKwkJaWYgKHB1YmFs bHRhYmxlcykKIAkJewogCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQogCQkJewpAQCAt NjgyOSw3ICs2ODg0LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy bikKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKIAkJCQkJCQkJICAi ICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVz cGFjZVxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9y ZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJCQkJCSAgIldIRVJFIHByLnBycHVi aWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1Ymlk ID0gJyVzJyBBTkQgcHIucHJleGNlcHQgQU5EIGMucmVsa2luZCBJTiAoJ3InLCdwJylcbiIKIAkJ CQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKIAkJCQlpZiAoIWFkZEZvb3RlclRvUHVibGlj YXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6IiksCiAJCQkJCQkJCQkJCQl0cnVlLCAm Y29udCkpCkBAIC02ODM3LDYgKzY4OTIsMjYgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3Qg Y2hhciAqcGF0dGVybikKIAkJCX0KIAkJfQogCisJCWlmIChwdWJhbGxzZXF1ZW5jZXMpCisJCXsK KwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDIwMDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgc2VxdWVu Y2VzIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciB0aGlzIHB1YmxpY2F0aW9uICovCisJCQkJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLAorCQkJCQkJCQkgIF8oIkdldCBzZXF1 ZW5jZXMgZXhjbHVkZWQgYnkgdGhpcyBwdWJsaWNhdGlvbiIpKTsKKwkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLAorCQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIHx8ICcuJyB8fCBjLnJlbG5h bWVcbiIKKwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJCQkJ ICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5h bWVzcGFjZVxuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlv bl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBy cHViaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdCBBTkQgYy5yZWxraW5kID0gJ1MnXG4iCisJCQkJ CQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0 aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgc2VxdWVuY2VzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwg JmNvbnQpKQorCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCX0KKwkJfQorCiAJCXByaW50VGFi bGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRU YWJsZUNsZWFudXAoJmNvbnQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNDllYTU4NGNk NGYuLjE1NTA4N2Y1NzJiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zNzQ4LDYgKzM3NDgs MTggQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJ VEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CiAJZWxzZSBpZiAoTWF0 Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRB QkxFUyIsICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChw cmV2X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCIpIik7CisJZWxzZSBpZiAoTWF0Y2hlcygi Q1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNFUVVFTkNF UyIpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBTRVFVRU5DRSIsICJXSVRIICgiKTsKKwll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCIoIFNFUVVF TkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hB bnksICJGT1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVU RV9XSVRIKCJTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigi LCAiU0VRVUVOQ0UiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xp c3Rfb2Zfc2VxdWVuY2VzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIiwg IlNFUVVFTkNFIiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09N UExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2VxdWVuY2VzKTsKKwll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIsICIoIiwgIlNFUVVFTkNFIiwgTWF0Y2hBbnlO KSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJUQUJMRVMiKSkKIAkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoTWF0 Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUiLCBN YXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oCmluZGV4IDg5YjRiYjE0ZjYyLi40OWMyOWE4NzYzMCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTc3LDggKzE3Nyw4IEBAIHR5cGVkZWYgZW51bSBQ dWJsaWNhdGlvblBhcnRPcHQKIAogZXh0ZXJuIExpc3QgKkdldEluY2x1ZGVkUHVibGljYXRpb25S ZWxhdGlvbnMoT2lkIHB1YmlkLAogCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9w YXJ0b3B0KTsKLWV4dGVybiBMaXN0ICpHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKE9pZCBw dWJpZCwKLQkJCQkJCQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CitleHRl cm4gTGlzdCAqR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsCisJCQkJ CQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3QgKkdl dEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKIGV4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNh dGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsK IGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKQEAgLTIwMCw3 ICsyMDAsOCBAQCBleHRlcm4gYm9vbCBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVibGlj YXRpb24gKnB1YiwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwgQml0 bWFwc2V0ICoqY29scyk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJCQkJCQkJCQkJICBi b29sIGlmX25vdF9leGlzdHMsCi0JCQkJCQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKmFs dGVyX3N0bXQpOworCQkJCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICphbHRlcl9zdG10 LAorCQkJCQkJCQkJCQkgIGNoYXIgcHVicmVsa2luZCk7CiBleHRlcm4gQml0bWFwc2V0ICpwdWJf Y29sbGlzdF92YWxpZGF0ZShSZWxhdGlvbiB0YXJnZXRyZWwsIExpc3QgKmNvbHVtbnMpOwogZXh0 ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBz Y2hlbWFpZCwKIAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaAppbmRleCBlMDM1NTYzOTlhYi4uMjQ2YmQ0NGU2YWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKQEAgLTQ0NjEsMTQgKzQ0NjEsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJUU0NvbmZpZ3Vy YXRpb25TdG10CiAJYm9vbAkJbWlzc2luZ19vazsJCS8qIGZvciBEUk9QIC0gc2tpcCBlcnJvciBp ZiBtaXNzaW5nPyAqLwogfSBBbHRlclRTQ29uZmlndXJhdGlvblN0bXQ7CiAKLXR5cGVkZWYgc3Ry dWN0IFB1YmxpY2F0aW9uVGFibGUKK3R5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsYXRpb24K IHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcHVibGljYXRp b24gcmVsYXRpb24gKi8KLQlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMg Ki8KKwlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHB1YmxpY2F0aW9uIHRhYmxlL3NlcXVlbmNl ICovCisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zIGZvciBwdWJsaWNh dGlvbiB0YWJsZSAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBMaXN0IG9mIGNvbHVtbnMgaW4g YSBwdWJsaWNhdGlvbiB0YWJsZSAqLwogCWJvb2wJCWV4Y2VwdDsJCQkvKiBUcnVlIGlmIGxpc3Rl ZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLwotfSBQdWJsaWNhdGlvblRhYmxlOworfSBQdWJsaWNh dGlvblJlbGF0aW9uOwogCiAvKgogICogUHVibGljYXRpb24gb2JqZWN0IHR5cGUKQEAgLTQ0Nzcs NiArNDQ3Nyw3IEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiB7CiAJUFVC TElDQVRJT05PQkpfVEFCTEUsCQkvKiBBIHRhYmxlICovCiAJUFVCTElDQVRJT05PQkpfRVhDRVBU X1RBQkxFLAkvKiBBIHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJUFVCTElDQVRJT05P QkpfRVhDRVBUX1NFUVVFTkNFLCAvKiBBIHNlcXVlbmNlIGluIHRoZSBFWENFUFQgY2xhdXNlICov CiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBzY2hl bWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSwJLyogQWxsIHRhYmxl cyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCkBAIC00 NDg4LDcgKzQ0ODksNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbk9ialNwZWMKIAlOb2Rl VGFnCQl0eXBlOwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgcHVib2JqdHlwZTsJLyogdHlwZSBv ZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwogCWNoYXIJICAgKm5hbWU7Ci0JUHVibGljYXRp b25UYWJsZSAqcHVidGFibGU7CisJUHVibGljYXRpb25SZWxhdGlvbiAqcHVicmVsYXRpb247CiAJ UGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAq LwogfSBQdWJsaWNhdGlvbk9ialNwZWM7CiAKQEAgLTQ1MDUsNyArNDUwNiw5IEBAIHR5cGVkZWYg c3RydWN0IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogewogCU5vZGVUYWcJCXR5cGU7CiAJUHVibGlj YXRpb25BbGxPYmpUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhpcyBwdWJsaWNhdGlvbiBv YmplY3QgKi8KLQlMaXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiB0YWJsZXMgc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgY2xhdXNlICovCisJTGlzdAkgICAqZXhjZXB0X3JlbGF0aW9uczsJLyogZGVw ZW5kaW5nIG9uIHRoZSAncHVib2JqdHlwZScsIHRoaXMgaXMKKwkJCQkJCQkJCSAqIGEgbGlzdCBv ZiBlaXRoZXIgdGFibGVzIG9yIHNlcXVlbmNlcworCQkJCQkJCQkJICogc3BlY2lmaWVkIGluIHRo ZSBFWENFUFQgY2xhdXNlICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlv biwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbkFsbE9ialNwZWM7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMjllNTRiMjE0YTAuLjY0 NDJiODdkMDM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApA QCAtNDU4LDcgKzQ1OCw3IEBAIEV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb25zOgogTnVtYmVyIG9m IHBhcnRpdGlvbnM6IDEgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikKIAogQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl9wYXJ0MSk7 Ci1FUlJPUjogIGNhbm5vdCBzcGVjaWZ5IHJlbGF0aW9uICJwdWJsaWMudGVzdHB1Yl9wYXJ0MSIg aW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkg InB1YmxpYy50ZXN0cHViX3BhcnQxIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJMRSkg Y2xhdXNlCiBERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRp dmlkdWFsIHBhcnRpdGlvbnMuCiBDUkVBVEUgVEFCTEUgdGFiX21haW4gKGEgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UoYSk7CiAtLSBBdHRhY2hpbmcgYSBwYXJ0aXRpb24gaXMgbm90IGFsbG93ZWQg aWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVhcnMgaW4gYQpAQCAtNDcxLDggKzQ3MSw5IEBA IFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVz dHB1Yl9wYXJ0MSwgdGFiX21haW47CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogLS0tIFRl c3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKLUNSRUFURSBTRVFVRU5DRSByZWdy ZXNzX3B1Yl9zZXEwOwotQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7 CitDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19zZXEwOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0 LnJlZ3Jlc3Nfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSByZWdyZXNzX3NlcTI7CiAtLSBGT1IgQUxM IFNFUVVFTkNFUwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczEgRk9SIEFMTCBTRVFVRU5DRVM7 CkBAIC00ODMsOCArNDg0LDggQEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHViYWxs c2VxdWVuY2VzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZQogIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczEgfCBmICAgICAgICAgICAgfCB0CiAoMSByb3cpCiAKLVxkKyByZWdy ZXNzX3B1Yl9zZXEwCi0gICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1YmxpYy5yZWdy ZXNzX3B1Yl9zZXEwIgorXGQrIHJlZ3Jlc3Nfc2VxMAorICAgICAgICAgICAgICAgICAgICAgICAg U2VxdWVuY2UgInB1YmxpYy5yZWdyZXNzX3NlcTAiCiAgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVt IHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKIC0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLQogIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIw MzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKQEAgLTUwMiw4ICs1MDMs OCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJ T04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMiBGT1IgQUxMIFNFUVVFTkNFUzsKIFJFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CiAtLSBjaGVjayB0aGF0IGRlc2NyaWJlIHNlcXVlbmNlIGxp c3RzIGJvdGggcHVibGljYXRpb25zIHRoZSBzZXF1ZW5jZSBiZWxvbmdzIHRvCi1cZCsgcHViX3Rl c3QucmVncmVzc19wdWJfc2VxMQotICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90 ZXN0LnJlZ3Jlc3NfcHViX3NlcTEiCitcZCsgcHViX3Rlc3QucmVncmVzc19zZXExCisgICAgICAg ICAgICAgICAgICAgICAgIFNlcXVlbmNlICJwdWJfdGVzdC5yZWdyZXNzX3NlcTEiCiAgIFR5cGUg IHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5 Y2xlcz8gfCBDYWNoZSAKIC0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQogIGJpZ2ludCB8ICAgICAxIHwg ICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAg IDEKQEAgLTUzNCwxMCArNTM1LDkyIEBAIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMsIHB1 YmFsbHNlcXVlbmNlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUKICByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IHN0b3JlZCAgICAgICAgICAgIHwgZiAg ICAgICAgfCAKICgxIHJvdykKIAotRFJPUCBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJf dGVzdC5yZWdyZXNzX3B1Yl9zZXExOworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSBFWENFUFQgY2xhdXNlIHRlc3RzIGZvciBzZXF1ZW5jZXMKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFs bHNlcXVlbmNlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdy ZXNzX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3Nfc2VxMSwgU0VRVUVOQ0UgcmVncmVzc19zZXEyKTsK K1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlc19leGNlcHQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlc19leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCBzZXF1 ZW5jZXM6CisgICAgInB1Yl90ZXN0LnJlZ3Jlc3Nfc2VxMSIKKyAgICAicHVibGljLnJlZ3Jlc3Nf c2VxMCIKKyAgICAicHVibGljLnJlZ3Jlc3Nfc2VxMiIKKworLS0gQ2hlY2sgdGhhdCB0aGUgc2Vx dWVuY2UgZGVzY3JpcHRpb24gc2hvd3MgdGhlIHB1YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBsaXN0 ZWQKKy0tIGluIHRoZSBFWENFUFQgY2xhdXNlCitcZCsgcmVncmVzc19zZXEwCisgICAgICAgICAg ICAgICAgICAgICAgICBTZXF1ZW5jZSAicHVibGljLnJlZ3Jlc3Nfc2VxMCIKKyAgVHlwZSAgfCBT dGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVz PyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAg ICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQor SW5jbHVkZWQgaW4gcHVibGljYXRpb25zOgorICAgICJyZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVu Y2VzX2FsbHRhYmxlcyIKKyAgICAicmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMSIKKyAgICAi cmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMiIKK0V4Y2x1ZGVkIGZyb20gcHVibGljYXRpb25z OgorICAgICJyZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0IgorCistLSBWZXJpZnkg dGhhdCBhbiBleGNsdWRlZCBzZXF1ZW5jZSByZW1haW5zIGV4Y2x1ZGVkIGFmdGVyIGJlaW5nIG1v dmVkIHRvCistLSBhbm90aGVyIHNjaGVtYS4KK0FMVEVSIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxMiBT RVQgU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4 Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdAorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9v dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAg ICAgICB8IAorRXhjZXB0IHNlcXVlbmNlczoKKyAgICAicHViX3Rlc3QucmVncmVzc19zZXExIgor ICAgICJwdWJfdGVzdC5yZWdyZXNzX3NlcTIiCisgICAgInB1YmxpYy5yZWdyZXNzX3NlcTAiCisK Ky0tIFRlc3QgY29tYmluYXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRo IEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RhYjEoYSBpbnQpOworQ1JFQVRF IFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzX2V4Y2Vw dCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfdGFiMSksIEFMTCBTRVFVRU5D RVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9y X2FsbHNlcXVlbmNlc19hbGx0YWJsZXNfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2Vz X2FsbHRhYmxlc19leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAg ICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCB0YWJsZXM6Cisg ICAgInB1YmxpYy5yZWdyZXNzX3RhYjEiCitFeGNlcHQgc2VxdWVuY2VzOgorICAgICJwdWJsaWMu cmVncmVzc19zZXEwIgorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0gZmFpbCAtIGZp cnN0IHNlcXVlbmNlIGluIHRoZSBFWENFUFQgbGlzdCBzaG91bGQgdXNlIFNFUVVFTkNFIGtleXdv cmQKK0NSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFRB QkxFUyBFWENFUFQgKHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVzc19zZXExKTsKK0VSUk9S OiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInJlZ3Jlc3Nfc2VxMCIKK0xJTkUgMTogLi4uT04g cmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChyZWdyZXNzX3Nl Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gZmFpbCAtIHVubG9nZ2VkIHNlcXVlbmNlIGlzIHNwZWNpZmllZCBpbiBF WENFUFQgc2VxdWVuY2UgbGlzdAorQ1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIHJlZ3Jlc3Nfc2Vx X3VubG9nZ2VkOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZP UiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19zZXFfdW5sb2dnZWQpOwor RVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3Nfc2VxX3VubG9nZ2VkIiBpbiB0 aGUgcHVibGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCitERVRBSUw6ICBUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCBzZXF1ZW5jZXMuCistLSBmYWls IC0gdGVtcG9yYXJ5IHNlcXVlbmNlIGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlz dAorQ1JFQVRFIFRFTVBPUkFSWSBTRVFVRU5DRSByZWdyZXNzX3NlcV90ZW1wOworQ1JFQVRFIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQ VCAoU0VRVUVOQ0UgcmVncmVzc19zZXFfdGVtcCk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJw Z190ZW1wLnJlZ3Jlc3Nfc2VxX3RlbXAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVF TkNFKSBjbGF1c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IHRlbXBvcmFyeSBzZXF1ZW5jZXMuCistLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlzIHNwZWNp ZmllZCBpbiBFWENFUFQgdGFibGUgbGlzdAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X3Nob3VsZF9mYWlsIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc19zZXEwKTsK K0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3NlcTAiIGluIHRoZSBwdWJs aWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgZm9yIHNlcXVlbmNlcy4KKy0tIGZhaWwgLSB0YWJsZSBvYmplY3QgaXMg c3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0CitDUkVBVEUgUFVCTElDQVRJT04gcmVn cmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSBy ZWdyZXNzX3RhYjEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3NfdGFi MSIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZQorREVUQUlMOiAg VGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorRFJPUCBTRVFVRU5D RSByZWdyZXNzX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3Nfc2VxMSwgcHViX3Rlc3QucmVncmVzc19z ZXEyLCByZWdyZXNzX3NlcV91bmxvZ2dlZCwgcmVncmVzc19zZXFfdGVtcDsKIERST1AgUFVCTElD QVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMTsKIERST1AgUFVCTElDQVRJT04gcmVn cmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMjsKK0RST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJf Zm9yYWxsc2VxdWVuY2VzX2V4Y2VwdDsKIERST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9y X2FsbHNlcXVlbmNlc19hbGx0YWJsZXM7CitEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zv cl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzX2V4Y2VwdDsKK0RST1AgVEFCTEUgcmVncmVzc190YWIx OwogLS0gZmFpbCAtIFNwZWNpZnlpbmcgQUxMIFRBQkxFUyBtb3JlIHRoYW4gb25jZQogQ1JFQVRF IFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzIEZPUiBB TEwgU0VRVUVOQ0VTLCBBTEwgVEFCTEVTLCBBTEwgVEFCTEVTOwogRVJST1I6ICBpbnZhbGlkIHB1 YmxpY2F0aW9uIG9iamVjdCBsaXN0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5k ZXggMDQxZTE0YTRkZTYuLjExYzIwZTY1MTQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsCkBAIC0yMjEsOCArMjIxLDkgQEAgRFJPUCBUQUJMRSB0ZXN0cHViX3Jvb3QsIHRlc3Rw dWJfcGFydDEsIHRhYl9tYWluOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIAogLS0tIFRl c3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKLUNSRUFURSBTRVFVRU5DRSByZWdy ZXNzX3B1Yl9zZXEwOwotQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7 CitDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19zZXEwOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0 LnJlZ3Jlc3Nfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSByZWdyZXNzX3NlcTI7CiAKIC0tIEZPUiBB TEwgU0VRVUVOQ0VTCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CkBAIC0yMzAs NyArMjMxLDcgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNl czEgRk9SIEFMTCBTRVFVRU5DRVM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogCiBTRUxF Q1QgcHVibmFtZSwgcHViYWxsdGFibGVzLCBwdWJhbGxzZXF1ZW5jZXMgRlJPTSBwZ19wdWJsaWNh dGlvbiBXSEVSRSBwdWJuYW1lID0gJ3JlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczEnOwotXGQr IHJlZ3Jlc3NfcHViX3NlcTAKK1xkKyByZWdyZXNzX3NlcTAKIFxkUnArIHJlZ3Jlc3NfcHViX2Zv cmFsbHNlcXVlbmNlczEKIAogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwpAQCAt MjM4LDcgKzIzOSw3IEBAIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1 ZW5jZXMyIEZPUiBBTEwgU0VRVUVOQ0VTOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIAog LS0gY2hlY2sgdGhhdCBkZXNjcmliZSBzZXF1ZW5jZSBsaXN0cyBib3RoIHB1YmxpY2F0aW9ucyB0 aGUgc2VxdWVuY2UgYmVsb25ncyB0bwotXGQrIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEKK1xk KyBwdWJfdGVzdC5yZWdyZXNzX3NlcTEKIAogLS0tIFNwZWNpZnlpbmcgYm90aCBBTEwgVEFCTEVT IGFuZCBBTEwgU0VRVUVOQ0VTCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CkBA IC0yNTMsMTAgKzI1NCw1MSBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogU0VMRUNUIHB1 Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHViYWxsc2VxdWVuY2VzIEZST00gcGdfcHVibGljYXRpb24g V0hFUkUgcHVibmFtZSA9ICdyZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlcyc7 CiBcZFJwKyByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlcwogCi1EUk9QIFNF UVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCBjbGF1 c2UgdGVzdHMgZm9yIHNlcXVlbmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUg UFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzX2V4Y2VwdCBGT1IgQUxMIFNF UVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVzc19z ZXExLCBTRVFVRU5DRSByZWdyZXNzX3NlcTIpOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2Vx dWVuY2VzX2V4Y2VwdAorLS0gQ2hlY2sgdGhhdCB0aGUgc2VxdWVuY2UgZGVzY3JpcHRpb24gc2hv d3MgdGhlIHB1YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBsaXN0ZWQKKy0tIGluIHRoZSBFWENFUFQg Y2xhdXNlCitcZCsgcmVncmVzc19zZXEwCisKKy0tIFZlcmlmeSB0aGF0IGFuIGV4Y2x1ZGVkIHNl cXVlbmNlIHJlbWFpbnMgZXhjbHVkZWQgYWZ0ZXIgYmVpbmcgbW92ZWQgdG8KKy0tIGFub3RoZXIg c2NoZW1hLgorQUxURVIgU0VRVUVOQ0UgcmVncmVzc19zZXEyIFNFVCBTQ0hFTUEgcHViX3Rlc3Q7 CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0CisKKy0tIFRlc3QgY29t YmluYXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1 c2UKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RhYjEoYSBpbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9O IHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFRB QkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfdGFiMSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChT RVFVRU5DRSByZWdyZXNzX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNl c19hbGx0YWJsZXNfZXhjZXB0CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCistLSBmYWls IC0gZmlyc3Qgc2VxdWVuY2UgaW4gdGhlIEVYQ0VQVCBsaXN0IHNob3VsZCB1c2UgU0VRVUVOQ0Ug a2V5d29yZAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX3Nob3VsZF9mYWlsIEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCAocmVncmVzc19zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3NlcTEpOwor CistLSBmYWlsIC0gdW5sb2dnZWQgc2VxdWVuY2UgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1 ZW5jZSBsaXN0CitDUkVBVEUgVU5MT0dHRUQgU0VRVUVOQ0UgcmVncmVzc19zZXFfdW5sb2dnZWQ7 CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBTRVFV RU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3NlcV91bmxvZ2dlZCk7CisKKy0tIGZhaWwg LSB0ZW1wb3Jhcnkgc2VxdWVuY2UgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0 CitDUkVBVEUgVEVNUE9SQVJZIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxX3RlbXA7CitDUkVBVEUgUFVC TElDQVRJT04gcmVncmVzc19wdWJfc2hvdWxkX2ZhaWwgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBU IChTRVFVRU5DRSByZWdyZXNzX3NlcV90ZW1wKTsKKworLS0gZmFpbCAtIHNlcXVlbmNlIG9iamVj dCBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHRhYmxlIGxpc3QKK0NSRUFURSBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9zaG91bGRfZmFpbCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jl c3Nfc2VxMCk7CisKKy0tIGZhaWwgLSB0YWJsZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQ VCBzZXF1ZW5jZSBsaXN0CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfc2hvdWxkX2Zh aWwgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3RhYjEpOworCitE Uk9QIFNFUVVFTkNFIHJlZ3Jlc3Nfc2VxMCwgcHViX3Rlc3QucmVncmVzc19zZXExLCBwdWJfdGVz dC5yZWdyZXNzX3NlcTIsIHJlZ3Jlc3Nfc2VxX3VubG9nZ2VkLCByZWdyZXNzX3NlcV90ZW1wOwog RFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMxOwogRFJPUCBQVUJM SUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMyOworRFJPUCBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXNfZXhjZXB0OwogRFJPUCBQVUJMSUNBVElPTiByZWdy ZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczsKK0RST1AgUFVCTElDQVRJT04gcmVn cmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXNfZXhjZXB0OworRFJPUCBUQUJMRSBy ZWdyZXNzX3RhYjE7CiAKIC0tIGZhaWwgLSBTcGVjaWZ5aW5nIEFMTCBUQUJMRVMgbW9yZSB0aGFu IG9uY2UKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2Fs bHRhYmxlcyBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxFUywgQUxMIFRBQkxFUzsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IDhjNThkMjgyZWVlLi5jMjIwZDJhMGI1 ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCkBAIC0yODIsNiArMjgyLDgz IEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJ UFRJT04gdGFwX3N1YicpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CiAKKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIGNsYXVzZSB0ZXN0 IGNhc2VzIGZvciBzZXF1ZW5jZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx ICgKKwlDUkVBVEUgVEFCTEUgc2VxX3Rlc3QgKHYgQklHSU5UKTsKKwlDUkVBVEUgU0VRVUVOQ0Ug c2VxX2V4Y2x1ZGVkX2luX3B1YjE7CisJQ1JFQVRFIFNFUVVFTkNFIHNlcV9leGNsdWRlZF9pbl9w dWIyOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzZXFfZXhjbHVkZWRf aW5fcHViMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlJTlNFUlQgSU5UTyBzZXFf dGVzdCBTRUxFQ1QgbmV4dHZhbCgnc2VxX2V4Y2x1ZGVkX2luX3B1YjInKSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwMCk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfYWxsX3NlcV9leGNl cHQxIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxX2V4Y2x1ZGVkX2luX3B1 YjEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJQ1JFQVRFIFNFUVVFTkNFIHNlcV9leGNsdWRlZF9pbl9wdWIxOworCUNSRUFURSBTRVFVRU5D RSBzZXFfZXhjbHVkZWRfaW5fcHViMjsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfYWxs X3NlcV9leGNlcHQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0 YXBfcHViX2FsbF9zZXFfZXhjZXB0MTsKKykpOworCisjIFdhaXQgZm9yIGluaXRpYWwgc3luYyB0 byBmaW5pc2gKK215ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9N IHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJyk7IjsKKyRu b2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVy eSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBz eW5jaHJvbml6ZSBkYXRhIjsKKworIyBDaGVjayB0aGUgaW5pdGlhbCBkYXRhIG9uIHN1YnNjcmli ZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcV9leGNsdWRlZF9pbl9wdWIxIik7 CitpcygkcmVzdWx0LCAnMXxmJywgJ3NlcXVlbmNlcyBpbiB0aGUgRVhDRVBUIGxpc3QgYXJlIGV4 Y2x1ZGVkJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcV9leGNsdWRlZF9p bl9wdWIyIik7CitpcygkcmVzdWx0LCAnMTAwfHQnLCAnaW5pdGlhbCB0ZXN0IGRhdGEgcmVwbGlj YXRlZCBmb3Igc2VxX2V4Y2x1ZGVkX2luX3B1YjInKTsKKworIyA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHdoZW4gYSBzdWJzY3JpcHRpb24gaXMg c3Vic2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGljYXRpb25zCisjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgn c2VxX2V4Y2x1ZGVkX2luX3B1YjEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5T RVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcV9leGNsdWRlZF9pbl9wdWIyJykg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHVi X2FsbF9zZXFfZXhjZXB0MiBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHNlcV9l eGNsdWRlZF9pbl9wdWIyKTsKKykpOworCisjIFN1YnNjcmliZSB0byBtdWx0aXBsZSBwdWJsaWNh dGlvbnMgd2l0aCBkaWZmZXJlbnQgRVhDRVBUIHNlcXVlbmNlIGxpc3RzCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWJfYWxsX3NlcV9leGNlcHQgU0VUIFBVQkxJQ0FUSU9OIHRhcF9wdWJfYWxsX3NlcV9leGNl cHQxLCB0YXBfcHViX2FsbF9zZXFfZXhjZXB0MjsKKwlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9hbGxfc2VxX2V4Y2VwdCBSRUZSRVNIIFNFUVVFTkNFUzsKKykpOworJG5vZGVfc3Vic2NyaWJl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRh dGEiOworCisjIHNlcV9leGNsdWRlZF9pbl9wdWIxIGlzIGV4Y2x1ZGVkIGluIHRhcF9wdWJfYWxs X3NlcV9leGNlcHQxIGJ1dCBpbmNsdWRlZCBpbgorIyB0YXBfcHViX2FsbF9zZXFfZXhjZXB0Miwg c28gb3ZlcmFsbCB0aGUgc3Vic2NyaXB0aW9uIHRyZWF0cyBpdCBhcyBpbmNsdWRlZC4KKyRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGxh c3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcV9leGNsdWRlZF9pbl9wdWIxIik7CitpcygkcmVz dWx0LCAnMjAwfHQnLAorCSdjaGVjayByZXBsaWNhdGlvbiBvZiBhIHNlcXVlbmNlIGluIHRoZSBF WENFUFQgY2xhdXNlIG9mIG9uZSBwdWJsaWNhdGlvbiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlcicK Kyk7CisKKyMgc2VxX2V4Y2x1ZGVkX2luX3B1YjIgaXMgZXhjbHVkZWQgaW4gdGFwX3B1Yl9hbGxf c2VxX2V4Y2VwdDIgYnV0IGluY2x1ZGVkIGluCisjIHRhcF9wdWJfYWxsX3NlcV9leGNlcHQxLCBz byBvdmVyYWxsIHRoZSBzdWJzY3JpcHRpb24gdHJlYXRzIGl0IGFzIGluY2x1ZGVkLgorJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFz dF92YWx1ZSwgaXNfY2FsbGVkIEZST00gc2VxX2V4Y2x1ZGVkX2luX3B1YjIiKTsKK2lzKCRyZXN1 bHQsICcyMDB8dCcsCisJJ2NoZWNrIHJlcGxpY2F0aW9uIG9mIGEgc2VxdWVuY2UgaW4gdGhlIEVY Q0VQVCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBieSBhbm90aGVyJwor KTsKKworIyBDbGVhbnVwCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwknRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9hbGxfc2VxX2V4Y2VwdCcpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknRFJPUCBQVUJMSUNBVElPTiB0YXBfcHVi X2FsbF9zZXFfZXhjZXB0MScpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwknRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX2FsbF9zZXFfZXhjZXB0MicpOworCiAkbm9k ZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IGZmYjQxM2FiNjEyLi5mZWFjZDg4MGJkOSAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTI0NzUsOCArMjQ3NSw4IEBAIFB1YmxpY2F0aW9uT2JqU3BlY1R5 cGUKIFB1YmxpY2F0aW9uUGFydE9wdAogUHVibGljYXRpb25SZWxJbmZvCiBQdWJsaWNhdGlvblJl bEtpbmQKK1B1YmxpY2F0aW9uUmVsYXRpb24KIFB1YmxpY2F0aW9uU2NoZW1hSW5mbwotUHVibGlj YXRpb25UYWJsZQogUHVibGlzaEdlbmNvbHNUeXBlCiBQdWxsRmlsdGVyCiBQdWxsRmlsdGVyT3Bz Ci0tIAoyLjM0LjEKCg== --000000000000433dd70655ff9e5e--