Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tsdJh-003lnM-Tg for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Mar 2025 07:49:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tsdJg-006sbQ-7U for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Mar 2025 07:49:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tsdJf-006sY0-Oi for pgsql-hackers@lists.postgresql.org; Thu, 13 Mar 2025 07:49:19 +0000 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tsdJb-002bUw-28; Thu, 13 Mar 2025 07:49:19 +0000 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7273f35b201so408267a34.1; Thu, 13 Mar 2025 00:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741852155; x=1742456955; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=erXU87LwJixzhYaoOVeV9Hk4un+fVAnuUT6WbA+g2eg=; b=M8iDDdru7Y458WuWTmKlwFWN01ODcL2mAk8MJ5MpPeb2WJm9m96XfSbCn1eB35KgKe +vmCyJp977szavG8Oc1jPKiyg7e9Hqm8Xzd0b8WWFsyCxcep6RNuaagJ3AkByetqxYEK lG5SKYTTEv4KwlCcfZ88Y+i9gQYe9F0wkc7MEiuTUHSfisgvNisk9CVSAD4Y/uZhHaiZ kesuMiK6oxZhRG0d5+JhT0cVTGo016Zl+JOD7qF7fGeHl6JvOoMTZX/Ne9XmL5mMkuSa 43OInUBiItEwH6ecE5xTAR+kYVW9k0g8nUXjOd5+qK2A+JOl2Ds9Ps5sh+20StbI6Dsc VE/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741852155; x=1742456955; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=erXU87LwJixzhYaoOVeV9Hk4un+fVAnuUT6WbA+g2eg=; b=U/PZPtvbDOtLtOBggQ4CHONNll8Qkcg3yT+Osye97cwsst9Qf+PCj0MflMPn4ZcmBF aRwU7x5+arWoWjdsjtckIsWx+IzJdymy344eltA44FZVGPsANNzsJyqVW/OeiMlmOu0D KbIir7E1fAHxyBVY+Uw4Kn9vNf2NIJGNJB9W2xHl7shqYxEt4BlWVmI7suOp3DJi9e2m 4/hV8YvrfKm9eu6MPvFsZBlKSnT7ODii8i/rwyRg5iISoWa1/0w1mf+u27j56jpBEbRh o495i2wBdSeonXjX+euZ2FqOh8iQnc7e4RlycjpUuMrTIOOckS20WspTaLE/C7bUvTTh N39w== X-Forwarded-Encrypted: i=1; AJvYcCUgBg2lHnmR2zVva9oVcNIthd+JtCOjlNtxz5KNlBxKGxJ8cLJU78CJBF1RYfH8fA62HHCX6J6sgkDyagAC@postgresql.org X-Gm-Message-State: AOJu0YzzxqYHQXlhijL8TPLaX4frZUrhoV2Ii/JunyEe+3HA7sVGJXk7 vgqt6a0ujZID7q9TYSdLRJZhWPD20Q3r/j9mC/e5MdF/x/6XByHSGSjAWRh/e7GrfX5J9G8nDyS TxPTL2mnwo5vAKBaReAxDsIfW0xTmFU2PY90= X-Gm-Gg: ASbGncuCdZA3aKC2SDeDeUGmRbwWPifhd44QWTfkNpf7HcGQFrcmK4qf/019ujzglnd xPHpBpHGuWlGswsEYb93qSx0+9dqzrtEQvZw3iyHClAPOZYhwsoUKjsUggtce67wC63sWMlMBlZ r2VS0fRdXZnP+yn2hwLmhKA3hT X-Google-Smtp-Source: AGHT+IENsIvUYhpYKNfWuSg/6LUhTYJaaGfL1iyS2n8rjrlYqS0YhbeUgpkY2fX6AyN9lGsKru97Z/1KAc6IDcsnXtU= X-Received: by 2002:a05:6808:1b13:b0:3f7:28ac:8068 with SMTP id 5614622812f47-3f728ac86fcmr9919684b6e.13.1741852154628; Thu, 13 Mar 2025 00:49:14 -0700 (PDT) MIME-Version: 1.0 References: <20250228.204851.1356677729897999622.ishii@postgresql.org> <20250309.153957.1921541382600841592.ishii@postgresql.org> In-Reply-To: From: Oliver Ford Date: Thu, 13 Mar 2025 07:49:03 +0000 X-Gm-Features: AQ5f1JqMFSQ6UtGrBwSo8DjgrxuN0tf8deaonFnSzsVaAfLQv4pSGCyZKE1llw0 Message-ID: Subject: Re: Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options To: Tatsuo Ishii Cc: Krasiyan Andreev , Tom Lane , Vik Fearing , Pg Hackers , andrew@tao11.riddles.org.uk, David Fetter Content-Type: multipart/mixed; boundary="000000000000eda7bc0630348e67" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000eda7bc0630348e67 Content-Type: multipart/alternative; boundary="000000000000eda7ba0630348e65" --000000000000eda7ba0630348e65 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, 9 Mar 2025, 20:07 Oliver Ford, wrote: > On Sun, Mar 9, 2025 at 6:40=E2=80=AFAM Tatsuo Ishii wrote: > >> > Attached version removes the non-nulls array. That seems to speed >> > everything up. Running the above query with 1 million rows averages >> 450ms, >> > similar when using lead/lag. >> >> Great. However, CFbot complains about the patch: >> >> https://cirrus-ci.com/task/6364194477441024 >> >> > Attached fixes the headerscheck locally. > v11 attached because the previous version was broken by commit 8b1b342 > --000000000000eda7ba0630348e65 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Sun, 9 Mar 2025, 20:07 Oliver= Ford, <ojford@gmail.com> wro= te:
On Sun, Mar 9, 2025 at 6:40=E2=80=AFAM Tatsuo Ishii <ishii@postgres= ql.org> wrote:
> Attached version removes the non-nulls ar= ray. That seems to speed
> everything up.=C2=A0 Running the above query with 1 million rows avera= ges 450ms,
> similar when using lead/lag.

Great. However, CFbot complains about the patch:

https://cirrus-ci.com/task/6364194477441024


--000000000000eda7ba0630348e65-- --000000000000eda7bc0630348e67 Content-Type: text/x-diff; charset="US-ASCII"; name="0011-ignore-nulls.patch" Content-Disposition: attachment; filename="0011-ignore-nulls.patch" Content-Transfer-Encoding: base64 Content-ID: <1958e7a560d2038c2f81> X-Attachment-Id: 1958e7a560d2038c2f81 RnJvbSBiZjRkZGFhODNjMTAwNGE5NjQ3MTEwNmJhYmY2YTA2MDIyYzQyMjhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgRm9yZCA8b2xpdmVyLmZAYXJnb2Rldm9wcy5jby51 az4KRGF0ZTogV2VkLCAxMiBNYXIgMjAyNSAxMzozNDozMCArMDAwMApTdWJqZWN0OiBbUEFUQ0hd IGlnbm9yZSBudWxscwoKLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAgICAg fCAgMzggKystLQogZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sICAgICAgICAgICAgIHwgIDEwICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgfCAgIDIgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDIyNSArKysrKysrKysrKysrKysrKystCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgfCAgIDEgKwogc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueSAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j ICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYyAgfCAgMTAg Kwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICB8ICAxMyArKwogc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3dpbmRvd2FwaS5oICAgICAg ICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQgfCAz MTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5k b3cuc3FsICAgICAgfCAxNDcgKysrKysrKysrKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgNzczIGlu c2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDUxZGQ4YWQ2NTcxLi5kOGNm OGIwMzlkNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvZnVuYy5zZ21sCkBAIC0yMzQ0Miw3ICsyMzQ0Miw3IEBAIFNFTEVDVCBjb3VudCgqKSBG Uk9NIHNvbWV0YWJsZTsKICAgICAgICAgPC9pbmRleHRlcm0+CiAgICAgICAgIDxmdW5jdGlvbj5s YWc8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55Y29t cGF0aWJsZTwvdHlwZT4KICAgICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPm9mZnNldDwv cGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2VyPC90eXBlPgotICAgICAgICAgIDxvcHRpb25hbD4sIDxw YXJhbWV0ZXI+ZGVmYXVsdDwvcGFyYW1ldGVyPiA8dHlwZT5hbnljb21wYXRpYmxlPC90eXBlPiA8 L29wdGlvbmFsPjwvb3B0aW9uYWw+ICkKKyAgICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVy PmRlZmF1bHQ8L3BhcmFtZXRlcj4gPHR5cGU+YW55Y29tcGF0aWJsZTwvdHlwZT4gPC9vcHRpb25h bD48L29wdGlvbmFsPiApIDxvcHRpb25hbD4gPHBhcmFtZXRlcj5udWxsIHRyZWF0bWVudDwvcGFy YW1ldGVyPiA8L29wdGlvbmFsPgogICAgICAgICA8cmV0dXJudmFsdWU+YW55Y29tcGF0aWJsZTwv cmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgpAQCAtMjM0NjcsNyAr MjM0NjcsNyBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSBzb21ldGFibGU7CiAgICAgICAgIDwvaW5k ZXh0ZXJtPgogICAgICAgICA8ZnVuY3Rpb24+bGVhZDwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj52 YWx1ZTwvcGFyYW1ldGVyPiA8dHlwZT5hbnljb21wYXRpYmxlPC90eXBlPgogICAgICAgICAgIDxv cHRpb25hbD4sIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IDx0eXBlPmludGVnZXI8L3R5 cGU+Ci0gICAgICAgICAgPG9wdGlvbmFsPiwgPHBhcmFtZXRlcj5kZWZhdWx0PC9wYXJhbWV0ZXI+ IDx0eXBlPmFueWNvbXBhdGlibGU8L3R5cGU+IDwvb3B0aW9uYWw+PC9vcHRpb25hbD4gKQorICAg ICAgICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+ZGVmYXVsdDwvcGFyYW1ldGVyPiA8dHlwZT5h bnljb21wYXRpYmxlPC90eXBlPiA8L29wdGlvbmFsPjwvb3B0aW9uYWw+ICkgPG9wdGlvbmFsPiA8 cGFyYW1ldGVyPm51bGwgdHJlYXRtZW50PC9wYXJhbWV0ZXI+IDwvb3B0aW9uYWw+CiAgICAgICAg IDxyZXR1cm52YWx1ZT5hbnljb21wYXRpYmxlPC9yZXR1cm52YWx1ZT4KICAgICAgICA8L3BhcmE+ CiAgICAgICAgPHBhcmE+CkBAIC0yMzQ5MCw3ICsyMzQ5MCw3IEBAIFNFTEVDVCBjb3VudCgqKSBG Uk9NIHNvbWV0YWJsZTsKICAgICAgICAgPGluZGV4dGVybT4KICAgICAgICAgIDxwcmltYXJ5PmZp cnN0X3ZhbHVlPC9wcmltYXJ5PgogICAgICAgICA8L2luZGV4dGVybT4KLSAgICAgICAgPGZ1bmN0 aW9uPmZpcnN0X3ZhbHVlPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+ IDx0eXBlPmFueWVsZW1lbnQ8L3R5cGU+ICkKKyAgICAgICAgPGZ1bmN0aW9uPmZpcnN0X3ZhbHVl PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBlPmFueWVsZW1l bnQ8L3R5cGU+ICkgPG9wdGlvbmFsPiA8cGFyYW1ldGVyPm51bGwgdHJlYXRtZW50PC9wYXJhbWV0 ZXI+IDwvb3B0aW9uYWw+CiAgICAgICAgIDxyZXR1cm52YWx1ZT5hbnllbGVtZW50PC9yZXR1cm52 YWx1ZT4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CkBAIC0yMzUwNCw3ICsyMzUwNCw3 IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHNvbWV0YWJsZTsKICAgICAgICAgPGluZGV4dGVybT4K ICAgICAgICAgIDxwcmltYXJ5Pmxhc3RfdmFsdWU8L3ByaW1hcnk+CiAgICAgICAgIDwvaW5kZXh0 ZXJtPgotICAgICAgICA8ZnVuY3Rpb24+bGFzdF92YWx1ZTwvZnVuY3Rpb24+ICggPHBhcmFtZXRl cj52YWx1ZTwvcGFyYW1ldGVyPiA8dHlwZT5hbnllbGVtZW50PC90eXBlPiApCisgICAgICAgIDxm dW5jdGlvbj5sYXN0X3ZhbHVlPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0 ZXI+IDx0eXBlPmFueWVsZW1lbnQ8L3R5cGU+ICkgPG9wdGlvbmFsPiA8cGFyYW1ldGVyPm51bGwg dHJlYXRtZW50PC9wYXJhbWV0ZXI+IDwvb3B0aW9uYWw+CiAgICAgICAgIDxyZXR1cm52YWx1ZT5h bnllbGVtZW50PC9yZXR1cm52YWx1ZT4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CkBA IC0yMzUxOCw3ICsyMzUxOCw3IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHNvbWV0YWJsZTsKICAg ICAgICAgPGluZGV4dGVybT4KICAgICAgICAgIDxwcmltYXJ5Pm50aF92YWx1ZTwvcHJpbWFyeT4K ICAgICAgICAgPC9pbmRleHRlcm0+Ci0gICAgICAgIDxmdW5jdGlvbj5udGhfdmFsdWU8L2Z1bmN0 aW9uPiAoIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlw ZT4sIDxwYXJhbWV0ZXI+bjwvcGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2VyPC90eXBlPiApCisgICAg ICAgIDxmdW5jdGlvbj5udGhfdmFsdWU8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+dmFsdWU8L3Bh cmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4sIDxwYXJhbWV0ZXI+bjwvcGFyYW1ldGVy PiA8dHlwZT5pbnRlZ2VyPC90eXBlPiApIDxvcHRpb25hbD4gPHBhcmFtZXRlcj5udWxsIHRyZWF0 bWVudDwvcGFyYW1ldGVyPiA8L29wdGlvbmFsPgogICAgICAgICA8cmV0dXJudmFsdWU+YW55ZWxl bWVudDwvcmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgpAQCAtMjM1 NjcsMTggKzIzNTY3LDI2IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHNvbWV0YWJsZTsKICAgIE90 aGVyIGZyYW1lIHNwZWNpZmljYXRpb25zIGNhbiBiZSB1c2VkIHRvIG9idGFpbiBvdGhlciBlZmZl Y3RzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUaGUgPGxpdGVyYWw+bnVsbCB0cmVhdG1l bnQ8L2xpdGVyYWw+IG9wdGlvbiBtdXN0IGJlIG9uZSBvZjoKKzxzeW5vcHNpcz4KKyAgUkVTUEVD VCBOVUxMUworICBJR05PUkUgTlVMTFMKKzwvc3lub3BzaXM+CisgICBJZiB1bnNwZWNpZmllZCwg dGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+UkVTUEVDVCBOVUxMUzwvbGl0ZXJhbD4gd2hpY2ggaW5j bHVkZXMgTlVMTAorICAgdmFsdWVzIGluIGFueSByZXN1bHQgY2FsY3VsYXRpb24uIDxsaXRlcmFs PklHTk9SRSBOVUxMUzwvbGl0ZXJhbD4gaWdub3JlcyBOVUxMIHZhbHVlcy4KKyAgIFRoaXMgb3B0 aW9uIGlzIG9ubHkgYWxsb3dlZCBmb3IgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6IDxmdW5jdGlv bj5sYWc8L2Z1bmN0aW9uPiwKKyAgIDxmdW5jdGlvbj5sZWFkPC9mdW5jdGlvbj4sIDxmdW5jdGlv bj5maXJzdF92YWx1ZTwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+bGFzdF92YWx1ZTwvZnVuY3Rpb24+ LAorICAgPGZ1bmN0aW9uPm50aF92YWx1ZTwvZnVuY3Rpb24+LgorICA8L3BhcmE+CisKICAgPG5v dGU+CiAgICA8cGFyYT4KLSAgICBUaGUgU1FMIHN0YW5kYXJkIGRlZmluZXMgYSA8bGl0ZXJhbD5S RVNQRUNUIE5VTExTPC9saXRlcmFsPiBvcgotICAgIDxsaXRlcmFsPklHTk9SRSBOVUxMUzwvbGl0 ZXJhbD4gb3B0aW9uIGZvciA8ZnVuY3Rpb24+bGVhZDwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+bGFn PC9mdW5jdGlvbj4sCi0gICAgPGZ1bmN0aW9uPmZpcnN0X3ZhbHVlPC9mdW5jdGlvbj4sIDxmdW5j dGlvbj5sYXN0X3ZhbHVlPC9mdW5jdGlvbj4sIGFuZAotICAgIDxmdW5jdGlvbj5udGhfdmFsdWU8 L2Z1bmN0aW9uPi4gIFRoaXMgaXMgbm90IGltcGxlbWVudGVkIGluCi0gICAgPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPjogdGhlIGJlaGF2aW9yIGlzIGFsd2F5cyB0aGUKLSAg ICBzYW1lIGFzIHRoZSBzdGFuZGFyZCdzIGRlZmF1bHQsIG5hbWVseSA8bGl0ZXJhbD5SRVNQRUNU IE5VTExTPC9saXRlcmFsPi4KLSAgICBMaWtld2lzZSwgdGhlIHN0YW5kYXJkJ3MgPGxpdGVyYWw+ RlJPTSBGSVJTVDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+RlJPTSBMQVNUPC9saXRlcmFsPgotICAg IG9wdGlvbiBmb3IgPGZ1bmN0aW9uPm50aF92YWx1ZTwvZnVuY3Rpb24+IGlzIG5vdCBpbXBsZW1l bnRlZDogb25seSB0aGUKLSAgICBkZWZhdWx0IDxsaXRlcmFsPkZST00gRklSU1Q8L2xpdGVyYWw+ IGJlaGF2aW9yIGlzIHN1cHBvcnRlZC4gIChZb3UgY2FuIGFjaGlldmUKLSAgICB0aGUgcmVzdWx0 IG9mIDxsaXRlcmFsPkZST00gTEFTVDwvbGl0ZXJhbD4gYnkgcmV2ZXJzaW5nIHRoZSA8bGl0ZXJh bD5PUkRFUiBCWTwvbGl0ZXJhbD4KKyAgICBUaGUgU1FMIHN0YW5kYXJkIGRlZmluZXMgYSA8bGl0 ZXJhbD5GUk9NIEZJUlNUPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5GUk9NIExBU1Q8L2xpdGVyYWw+ CisgICAgb3B0aW9uIGZvciA8ZnVuY3Rpb24+bnRoX3ZhbHVlPC9mdW5jdGlvbj4uIFRoaXMgaXMg bm90IGltcGxlbWVudGVkIGluCisgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3Ru YW1lPjogb25seSB0aGUgZGVmYXVsdCA8bGl0ZXJhbD5GUk9NIEZJUlNUPC9saXRlcmFsPgorICAg IGJlaGF2aW9yIGlzIHN1cHBvcnRlZC4gKFlvdSBjYW4gYWNoaWV2ZSB0aGUgcmVzdWx0IG9mIDxs aXRlcmFsPkZST00gTEFTVDwvbGl0ZXJhbD4gYnkKKyAgICByZXZlcnNpbmcgdGhlIDxsaXRlcmFs Pk9SREVSIEJZPC9saXRlcmFsPgogICAgIG9yZGVyaW5nLikKICAgIDwvcGFyYT4KICAgPC9ub3Rl PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5 bnRheC5zZ21sCmluZGV4IDkxNjE4OWE3ZDY4Li4yMzdkNzMwNmZlOCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3N5bnRheC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbApAQCAt MTgzNCw4ICsxODM0LDggQEAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgcyhpKTsKICAg ICBUaGUgc3ludGF4IG9mIGEgd2luZG93IGZ1bmN0aW9uIGNhbGwgaXMgb25lIG9mIHRoZSBmb2xs b3dpbmc6CiAKIDxzeW5vcHNpcz4KLTxyZXBsYWNlYWJsZT5mdW5jdGlvbl9uYW1lPC9yZXBsYWNl YWJsZT4gKDxvcHRpb25hbD48cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxv cHRpb25hbD4sIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gLi4uIDwvb3B0 aW9uYWw+PC9vcHRpb25hbD4pIFsgRklMVEVSICggV0hFUkUgPHJlcGxhY2VhYmxlPmZpbHRlcl9j bGF1c2U8L3JlcGxhY2VhYmxlPiApIF0gT1ZFUiA8cmVwbGFjZWFibGU+d2luZG93X25hbWU8L3Jl cGxhY2VhYmxlPgotPHJlcGxhY2VhYmxlPmZ1bmN0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiAoPG9w dGlvbmFsPjxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiwg PHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiAuLi4gPC9vcHRpb25hbD48L29w dGlvbmFsPikgWyBGSUxURVIgKCBXSEVSRSA8cmVwbGFjZWFibGU+ZmlsdGVyX2NsYXVzZTwvcmVw bGFjZWFibGU+ICkgXSBPVkVSICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpbmRv d19kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4gKQorPHJlcGxhY2VhYmxlPmZ1bmN0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPiAoPG9wdGlvbmFsPjxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gPG9wdGlvbmFsPiwgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiAu Li4gPC9vcHRpb25hbD48L29wdGlvbmFsPikgPG9wdGlvbmFsPm51bGwgdHJlYXRtZW50PC9vcHRp b25hbD4gWyBGSUxURVIgKCBXSEVSRSA8cmVwbGFjZWFibGU+ZmlsdGVyX2NsYXVzZTwvcmVwbGFj ZWFibGU+ICkgXSBPVkVSIDxyZXBsYWNlYWJsZT53aW5kb3dfbmFtZTwvcmVwbGFjZWFibGU+Cis8 cmVwbGFjZWFibGU+ZnVuY3Rpb25fbmFtZTwvcmVwbGFjZWFibGU+ICg8b3B0aW9uYWw+PHJlcGxh Y2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCA8cmVwbGFjZWFibGU+ ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IC4uLiA8L29wdGlvbmFsPjwvb3B0aW9uYWw+KSA8b3B0 aW9uYWw+bnVsbCB0cmVhdG1lbnQ8L29wdGlvbmFsPiBbIEZJTFRFUiAoIFdIRVJFIDxyZXBsYWNl YWJsZT5maWx0ZXJfY2xhdXNlPC9yZXBsYWNlYWJsZT4gKSBdIE9WRVIgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+d2luZG93X2RlZmluaXRpb248L3JlcGxhY2VhYmxlPiApCiA8cmVw bGFjZWFibGU+ZnVuY3Rpb25fbmFtZTwvcmVwbGFjZWFibGU+ICggKiApIFsgRklMVEVSICggV0hF UkUgPHJlcGxhY2VhYmxlPmZpbHRlcl9jbGF1c2U8L3JlcGxhY2VhYmxlPiApIF0gT1ZFUiA8cmVw bGFjZWFibGU+d2luZG93X25hbWU8L3JlcGxhY2VhYmxlPgogPHJlcGxhY2VhYmxlPmZ1bmN0aW9u X25hbWU8L3JlcGxhY2VhYmxlPiAoICogKSBbIEZJTFRFUiAoIFdIRVJFIDxyZXBsYWNlYWJsZT5m aWx0ZXJfY2xhdXNlPC9yZXBsYWNlYWJsZT4gKSBdIE9WRVIgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+d2luZG93X2RlZmluaXRpb248L3JlcGxhY2VhYmxlPiApCiA8L3N5bm9wc2lz PgpAQCAtMTg3Myw3ICsxODczLDkgQEAgRVhDTFVERSBOTyBPVEhFUlMKIAogICAgPHBhcmE+CiAg ICAgSGVyZSwgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiByZXByZXNlbnRz IGFueSB2YWx1ZQotICAgIGV4cHJlc3Npb24gdGhhdCBkb2VzIG5vdCBpdHNlbGYgY29udGFpbiB3 aW5kb3cgZnVuY3Rpb24gY2FsbHMuCisgICAgZXhwcmVzc2lvbiB0aGF0IGRvZXMgbm90IGl0c2Vs ZiBjb250YWluIHdpbmRvdyBmdW5jdGlvbiBjYWxscy4gU29tZQorICAgIG5vbi1hZ2dyZWdhdGUg ZnVuY3Rpb25zIGFsbG93IGEgPGxpdGVyYWw+bnVsbCB0cmVhdG1lbnQ8L2xpdGVyYWw+IGNsYXVz ZSwKKyAgICBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXdpbmRvdyIvPi4K ICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CkBAIC0yMDQ4LDcgKzIwNTAsNyBAQCBFWENMVURFIE5P IE9USEVSUwogCiAgICA8cGFyYT4KICAgICBUaGUgYnVpbHQtaW4gd2luZG93IGZ1bmN0aW9ucyBh cmUgZGVzY3JpYmVkIGluIDx4cmVmCi0gICAgbGlua2VuZD0iZnVuY3Rpb25zLXdpbmRvdy10YWJs ZSIvPi4gIE90aGVyIHdpbmRvdyBmdW5jdGlvbnMgY2FuIGJlIGFkZGVkIGJ5CisgICAgbGlua2Vu ZD0iZnVuY3Rpb25zLXdpbmRvdy10YWJsZSIvPi4gT3RoZXIgd2luZG93IGZ1bmN0aW9ucyBjYW4g YmUgYWRkZWQgYnkKICAgICB0aGUgdXNlci4gIEFsc28sIGFueSBidWlsdC1pbiBvciB1c2VyLWRl ZmluZWQgZ2VuZXJhbC1wdXJwb3NlIG9yCiAgICAgc3RhdGlzdGljYWwgYWdncmVnYXRlIGNhbiBi ZSB1c2VkIGFzIGEgd2luZG93IGZ1bmN0aW9uLiAgKE9yZGVyZWQtc2V0CiAgICAgYW5kIGh5cG90 aGV0aWNhbC1zZXQgYWdncmVnYXRlcyBjYW5ub3QgcHJlc2VudGx5IGJlIHVzZWQgYXMgd2luZG93 IGZ1bmN0aW9ucy4pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJl cy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXggMmYyNTBk MmM1N2IuLjQ2YTg5NTljYjJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9m ZWF0dXJlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBA IC01MTgsNyArNTE4LDcgQEAgVDYxMglBZHZhbmNlZCBPTEFQIG9wZXJhdGlvbnMJCQlZRVMKIFQ2 MTMJU2FtcGxpbmcJCQlZRVMJCiBUNjE0CU5USUxFIGZ1bmN0aW9uCQkJWUVTCQogVDYxNQlMRUFE IGFuZCBMQUcgZnVuY3Rpb25zCQkJWUVTCQotVDYxNglOdWxsIHRyZWF0bWVudCBvcHRpb24gZm9y IExFQUQgYW5kIExBRyBmdW5jdGlvbnMJCQlOTwkKK1Q2MTYJTnVsbCB0cmVhdG1lbnQgb3B0aW9u IGZvciBMRUFEIGFuZCBMQUcgZnVuY3Rpb25zCQkJWUVTCQogVDYxNwlGSVJTVF9WQUxVRSBhbmQg TEFTVF9WQUxVRSBmdW5jdGlvbnMJCQlZRVMJCiBUNjE4CU5USF9WQUxVRSBmdW5jdGlvbgkJCU5P CWZ1bmN0aW9uIGV4aXN0cywgYnV0IHNvbWUgb3B0aW9ucyBtaXNzaW5nCiBUNjE5CU5lc3RlZCB3 aW5kb3cgZnVuY3Rpb25zCQkJTk8JCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5k ZXggOWExYWNjZTJiNWQuLjE0OTMzM2JiNjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jCkBAIC02OSw2ICs2OSw3IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd09iamVjdERhdGEK IAlpbnQJCQlyZWFkcHRyOwkJLyogdHVwbGVzdG9yZSByZWFkIHBvaW50ZXIgZm9yIHRoaXMgZm4g Ki8KIAlpbnQ2NAkJbWFya3BvczsJCS8qIHJvdyB0aGF0IG1hcmtwdHIgaXMgcG9zaXRpb25lZCBv biAqLwogCWludDY0CQlzZWVrcG9zOwkJLyogcm93IHRoYXQgcmVhZHB0ciBpcyBwb3NpdGlvbmVk IG9uICovCisJaW50CQkJaWdub3JlX251bGxzOwkvKiBpZ25vcmUgbnVsbHMgKi8KIH0gV2luZG93 T2JqZWN0RGF0YTsKIAogLyoKQEAgLTk2LDYgKzk3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93 U3RhdGVQZXJGdW5jRGF0YQogCiAJYm9vbAkJcGxhaW5fYWdnOwkJLyogaXMgaXQganVzdCBhIHBs YWluIGFnZ3JlZ2F0ZSBmdW5jdGlvbj8gKi8KIAlpbnQJCQlhZ2dubzsJCQkvKiBpZiBzbywgaW5k ZXggb2YgaXRzIFdpbmRvd1N0YXRlUGVyQWdnRGF0YSAqLworCWludAkJCWlnbm9yZV9udWxsczsJ LyogaWdub3JlIG51bGxzICovCiAKIAlXaW5kb3dPYmplY3Qgd2lub2JqOwkJLyogb2JqZWN0IHVz ZWQgaW4gd2luZG93IGZ1bmN0aW9uIEFQSSAqLwogfQkJCVdpbmRvd1N0YXRlUGVyRnVuY0RhdGE7 CkBAIC0xOTgsNiArMjAwLDEzIEBAIHN0YXRpYyBib29sIGFyZV9wZWVycyhXaW5kb3dBZ2dTdGF0 ZSAqd2luc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90MSwKIHN0YXRpYyBib29sIHdpbmRvd19n ZXR0dXBsZXNsb3QoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLAogCQkJCQkJCQlUdXBs ZVRhYmxlU2xvdCAqc2xvdCk7CiAKK3N0YXRpYyBEYXR1bSBpZ25vcmVudWxsc19nZXRmdW5jYXJn aW5wYXJ0aXRpb24oV2luZG93T2JqZWN0IHdpbm9iaiwgaW50IGFyZ25vLAorCQkJCQkJCQkJCQkg ICBpbnQgcmVscG9zLCBpbnQgc2Vla3R5cGUsCisJCQkJCQkJCQkJCSAgIGJvb2wgKmlzbnVsbCwg Ym9vbCAqaXNvdXQpOworc3RhdGljIERhdHVtIGlnbm9yZW51bGxzX2dldGZ1bmNhcmdpbmZyYW1l KFdpbmRvd09iamVjdCB3aW5vYmosIGludCBhcmdubywKKwkJCQkJCQkJCQkgICBpbnQgcmVscG9z LCBpbnQgc2Vla3R5cGUsCisJCQkJCQkJCQkJICAgYm9vbCBzZXRfbWFyaywgIGJvb2wgKmlzbnVs bCwKKwkJCQkJCQkJCQkgICBib29sICppc291dCk7CiAKIC8qCiAgKiBpbml0aWFsaXplX3dpbmRv d2FnZ3JlZ2F0ZQpAQCAtMjYxOSwxNCArMjYyOCwxNyBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5k b3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJZWxvZyhFUlJPUiwg IldpbmRvd0Z1bmMgd2l0aCB3aW5yZWYgJXUgYXNzaWduZWQgdG8gV2luZG93QWdnIHdpdGggd2lu cmVmICV1IiwKIAkJCQkgd2Z1bmMtPndpbnJlZiwgbm9kZS0+d2lucmVmKTsKIAotCQkvKiBMb29r IGZvciBhIHByZXZpb3VzIGR1cGxpY2F0ZSB3aW5kb3cgZnVuY3Rpb24gKi8KKwkJLyoKKwkJICog TG9vayBmb3IgYSBwcmV2aW91cyBkdXBsaWNhdGUgd2luZG93IGZ1bmN0aW9uLCB3aGljaCBuZWVk cyB0aGUgc2FtZQorCQkgKiBpZ25vcmVfbnVsbHMgdmFsdWUKKwkJICovCiAJCWZvciAoaSA9IDA7 IGkgPD0gd2Z1bmNubzsgaSsrKQogCQl7CiAJCQlpZiAoZXF1YWwod2Z1bmMsIHBlcmZ1bmNbaV0u d2Z1bmMpICYmCiAJCQkJIWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIHdmdW5j KSkKIAkJCQlicmVhazsKIAkJfQotCQlpZiAoaSA8PSB3ZnVuY25vKQorCQlpZiAoaSA8PSB3ZnVu Y25vICYmIHdmdW5jLT5pZ25vcmVfbnVsbHMgPT0gcGVyZnVuY1tpXS5pZ25vcmVfbnVsbHMpCiAJ CXsKIAkJCS8qIEZvdW5kIGEgbWF0Y2ggdG8gYW4gZXhpc3RpbmcgZW50cnksIHNvIGp1c3QgbWFy ayBpdCAqLwogCQkJd2Z1bmNzdGF0ZS0+d2Z1bmNubyA9IGk7CkBAIC0yNjc5LDYgKzI2OTEsNyBA QCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCQkJd2lub2JqLT5hcmdzdGF0ZXMgPSB3ZnVuY3N0YXRlLT5hcmdzOwogCQkJd2lu b2JqLT5sb2NhbG1lbSA9IE5VTEw7CiAJCQlwZXJmdW5jc3RhdGUtPndpbm9iaiA9IHdpbm9iajsK KwkJCXdpbm9iai0+aWdub3JlX251bGxzID0gd2Z1bmMtPmlnbm9yZV9udWxsczsKIAogCQkJLyog SXQncyBhIHJlYWwgd2luZG93IGZ1bmN0aW9uLCBzbyBzZXQgdXAgdG8gY2FsbCBpdC4gKi8KIAkJ CWZtZ3JfaW5mb19jeHQod2Z1bmMtPndpbmZub2lkLCAmcGVyZnVuY3N0YXRlLT5mbGluZm8sCkBA IC0zMjE0LDEyICszMjI3LDIxMiBAQCB3aW5kb3dfZ2V0dHVwbGVzbG90KFdpbmRvd09iamVjdCB3 aW5vYmosIGludDY0IHBvcywgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJcmV0dXJuIHRydWU7CiB9 CiAKKy8qCisgKiBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5wYXJ0aXRpb24KKyAqIEZvciBJR05P UkUgTlVMTFMsIGdldCB0aGUgbmV4dCBub25udWxsIHZhbHVlIGluIHRoZSBwYXJ0aXRpb24sIG1v dmluZyBmb3J3YXJkIG9yIGJhY2t3YXJkCisgKiB1bnRpbCB3ZSBmaW5kIGEgdmFsdWUgb3IgcmVh Y2ggdGhlIHBhcnRpdGlvbidzIGVuZC4KKyAqLworc3RhdGljIERhdHVtCitpZ25vcmVudWxsc19n ZXRmdW5jYXJnaW5wYXJ0aXRpb24oV2luZG93T2JqZWN0IHdpbm9iaiwgaW50IGFyZ25vLAorCQkJ CQkJCQkgIGludCByZWxwb3MsIGludCBzZWVrdHlwZSwgYm9vbCAqaXNudWxsLAorCQkJCQkJCQkg IGJvb2wgKmlzb3V0KQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKwlFeHByQ29udGV4 dCAqZWNvbnRleHQ7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJRGF0dW0JCWRhdHVtOworCWJv b2wJCWdvdHR1cGxlOworCWludDY0CQlhYnNfcG9zOworCWludAkJCW5vdG51bGxfb2Zmc2V0Owor CWludAkJCW5vdG51bGxfcmVscG9zOworCWludAkJCWZvcndhcmQ7CisKKwlBc3NlcnQoV2luZG93 T2JqZWN0SXNWYWxpZCh3aW5vYmopKTsKKwl3aW5zdGF0ZSA9IHdpbm9iai0+d2luc3RhdGU7CisJ ZWNvbnRleHQgPSB3aW5zdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CisJc2xvdCA9IHdpbnN0 YXRlLT50ZW1wX3Nsb3RfMTsKKwlub3RudWxsX29mZnNldCA9IDA7CisJbm90bnVsbF9yZWxwb3Mg PSBhYnMocmVscG9zKTsKKwlmb3J3YXJkID0gcmVscG9zID4gMCA/IDEgOiAtMTsKKworCXN3aXRj aCAoc2Vla3R5cGUpCisJeworCQljYXNlIFdJTkRPV19TRUVLX0NVUlJFTlQ6CisJCQlhYnNfcG9z ID0gd2luc3RhdGUtPmN1cnJlbnRwb3M7CisJCQlicmVhazsKKwkJY2FzZSBXSU5ET1dfU0VFS19I RUFEOgorCQkJYWJzX3BvcyA9IDA7CisJCQlicmVhazsKKwkJY2FzZSBXSU5ET1dfU0VFS19UQUlM OgorCQkJc3Bvb2xfdHVwbGVzKHdpbnN0YXRlLCAtMSk7CisJCQlhYnNfcG9zID0gd2luc3RhdGUt PnNwb29sZWRfcm93cyAtIDEgKyByZWxwb3M7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgd2luZG93IHNlZWsgdHlwZTogJWQiLCBzZWVrdHlwZSk7 CisJCQlhYnNfcG9zID0gMDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWJyZWFrOwor CX0KKworCWRvCisJeworCQlhYnNfcG9zICs9IGZvcndhcmQ7CisJCWdvdHR1cGxlID0gd2luZG93 X2dldHR1cGxlc2xvdCh3aW5vYmosIGFic19wb3MsIHNsb3QpOworCisJCWlmICghZ290dHVwbGUp CisJCXsKKwkJCWlmIChpc291dCkKKwkJCQkqaXNvdXQgPSB0cnVlOworCQkJKmlzbnVsbCA9IHRy dWU7CisJCQlyZXR1cm4gKERhdHVtKSAwOworCQl9CisKKwkJaWYgKGlzb3V0KQorCQkJKmlzb3V0 ID0gZmFsc2U7CisJCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgPSBzbG90OworCQlkYXR1bSA9 IEV4ZWNFdmFsRXhwcigoRXhwclN0YXRlICopIGxpc3RfbnRoKHdpbm9iai0+YXJnc3RhdGVzLCBh cmdubyksCisJCQkJCQkJIGVjb250ZXh0LCBpc251bGwpOworCisJCWlmICghKmlzbnVsbCkKKwkJ CSsrbm90bnVsbF9vZmZzZXQ7CisJfSB3aGlsZSAobm90bnVsbF9vZmZzZXQgPCBub3RudWxsX3Jl bHBvcyk7CisKKwlyZXR1cm4gZGF0dW07Cit9CisKKy8qCisgKiBpZ25vcmVudWxsc19nZXRmdW5j YXJnaW5mcmFtZQorICogRm9yIElHTk9SRSBOVUxMUywgZ2V0IHRoZSBuZXh0IG5vbm51bGwgdmFs dWUgaW4gdGhlIGZyYW1lLCBtb3ZpbmcgZm9yd2FyZCBvciBiYWNrd2FyZAorICogdW50aWwgd2Ug ZmluZCBhIHZhbHVlIG9yIHJlYWNoIHRoZSBmcmFtZSdzIGVuZC4KKyAqLworc3RhdGljIERhdHVt CitpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQg YXJnbm8sCisJCQkJCQkJICBpbnQgcmVscG9zLCBpbnQgc2Vla3R5cGUsIGJvb2wgc2V0X21hcmss CisJCQkJCQkJICBib29sICppc251bGwsIGJvb2wgKmlzb3V0KQoreworCVdpbmRvd0FnZ1N0YXRl ICp3aW5zdGF0ZTsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJVHVwbGVUYWJsZVNsb3QgKnNs b3Q7CisJRGF0dW0JCWRhdHVtOworCWludDY0CQlhYnNfcG9zOworCWludDY0CQltYXJrX3BvczsK KwlpbnQJCQlub3RudWxsX29mZnNldDsKKwlpbnQJCQlub3RudWxsX3JlbHBvczsKKwlpbnQJCQlm b3J3YXJkOworCisJQXNzZXJ0KFdpbmRvd09iamVjdElzVmFsaWQod2lub2JqKSk7CisJd2luc3Rh dGUgPSB3aW5vYmotPndpbnN0YXRlOworCWVjb250ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBzX0V4 cHJDb250ZXh0OworCXNsb3QgPSB3aW5zdGF0ZS0+dGVtcF9zbG90XzE7CisJZGF0dW0gPSAoRGF0 dW0pIDA7CisJbm90bnVsbF9vZmZzZXQgPSAwOworCW5vdG51bGxfcmVscG9zID0gYWJzKHJlbHBv cyk7CisKKwlzd2l0Y2ggKHNlZWt0eXBlKQorCXsKKwkJY2FzZSBXSU5ET1dfU0VFS19DVVJSRU5U OgorCQkJZWxvZyhFUlJPUiwgIldJTkRPV19TRUVLX0NVUlJFTlQgaXMgbm90IHN1cHBvcnRlZCBm b3IgV2luR2V0RnVuY0FyZ0luRnJhbWUiKTsKKwkJCWFic19wb3MgPSBtYXJrX3BvcyA9IDA7IC8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWJyZWFrOworCQljYXNlIFdJTkRPV19TRUVLX0hF QUQ6CisJCQkvKiByZWplY3RpbmcgcmVscG9zIDwgMCBpcyBlYXN5IGFuZCBzaW1wbGlmaWVzIGNv ZGUgYmVsb3cgKi8KKwkJCWlmIChyZWxwb3MgPCAwKQorCQkJCWdvdG8gb3V0X29mX2ZyYW1lOwor CQkJdXBkYXRlX2ZyYW1laGVhZHBvcyh3aW5zdGF0ZSk7CisJCQlhYnNfcG9zID0gd2luc3RhdGUt PmZyYW1laGVhZHBvczsKKwkJCW1hcmtfcG9zID0gd2luc3RhdGUtPmZyYW1laGVhZHBvczsKKwkJ CWZvcndhcmQgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgV0lORE9XX1NFRUtfVEFJTDoKKwkJCS8q IHJlamVjdGluZyByZWxwb3MgPiAwIGlzIGVhc3kgYW5kIHNpbXBsaWZpZXMgY29kZSBiZWxvdyAq LworCQkJaWYgKHJlbHBvcyA+IDApCisJCQkJZ290byBvdXRfb2ZfZnJhbWU7CisJCQl1cGRhdGVf ZnJhbWV0YWlscG9zKHdpbnN0YXRlKTsKKwkJCWFic19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWV0YWls cG9zIC0gMTsKKwkJCW1hcmtfcG9zID0gMDsgLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCQkJ Zm9yd2FyZCA9IC0xOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIHdpbmRvdyBzZWVrIHR5cGU6ICVkIiwgc2Vla3R5cGUpOworCQkJYWJzX3BvcyA9 IG1hcmtfcG9zID0gMDsgLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCQkJYnJlYWs7CisJfQor CisJZG8KKwl7CisJCWludAkJCWluZnJhbWU7CisKKwkJaWYgKCF3aW5kb3dfZ2V0dHVwbGVzbG90 KHdpbm9iaiwgYWJzX3Bvcywgc2xvdCkpCisJCQlnb3RvIG91dF9vZl9mcmFtZTsKKworCQlpbmZy YW1lID0gcm93X2lzX2luX2ZyYW1lKHdpbnN0YXRlLCBhYnNfcG9zLCBzbG90KTsKKwkJaWYgKGlu ZnJhbWUgPT0gLTEpCisJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJZWxzZSBpZiAoaW5mcmFtZSA9 PSAwKQorCQkJZ290byBhZHZhbmNlOworCisJCWlmIChpc291dCkKKwkJCSppc291dCA9IGZhbHNl OworCQllY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlID0gc2xvdDsKKwkJZGF0dW0gPSBFeGVjRXZh bEV4cHIoKEV4cHJTdGF0ZSAqKSBsaXN0X250aCh3aW5vYmotPmFyZ3N0YXRlcywgYXJnbm8pLAor CQkJCQkJCSBlY29udGV4dCwgaXNudWxsKTsKKworCQlpZiAoISppc251bGwpCisJCQkrK25vdG51 bGxfb2Zmc2V0OworCithZHZhbmNlOgorCQlhYnNfcG9zICs9IGZvcndhcmQ7CisJfSB3aGlsZSAo bm90bnVsbF9vZmZzZXQgPD0gbm90bnVsbF9yZWxwb3MpOworCisJaWYgKHNldF9tYXJrKQorCQlX aW5TZXRNYXJrUG9zaXRpb24od2lub2JqLCBtYXJrX3Bvcyk7CisKKwlyZXR1cm4gZGF0dW07CisK K291dF9vZl9mcmFtZToKKwlpZiAoaXNvdXQpCisJCSppc291dCA9IHRydWU7CisJKmlzbnVsbCA9 IHRydWU7CisJcmV0dXJuIChEYXR1bSkgMDsKK30KKwogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEFQ SSBleHBvc2VkIHRvIHdpbmRvdyBmdW5jdGlvbnMKICAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogCisvKgor ICogV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVudAorICoJCUNoZWNrIG51bGwgdHJl YXRtZW50IGNsYXVzZSBhbmQgc2V0cyBpZ25vcmVfbnVsbHMKKyAqCisgKiBXaW5kb3cgZnVuY3Rp b25zIHNob3VsZCBjYWxsIHRoaXMgdG8gY2hlY2sgaWYgdGhleSBhcmUgYmVpbmcgY2FsbGVkIHdp dGgKKyAqIGEgbnVsbCB0cmVhdG1lbnQgY2xhdXNlIHdoZW4gdGhleSBkb24ndCBhbGxvdyBpdCwg b3IgdG8gc2V0IGlnbm9yZV9udWxscy4KKyAqLwordm9pZAorV2luQ2hlY2tBbmRJbml0aWFsaXpl TnVsbFRyZWF0bWVudChXaW5kb3dPYmplY3Qgd2lub2JqLAorCQkJCQkJCQkgICBib29sIGFsbG93 TnVsbFRyZWF0bWVudCwKKwkJCQkJCQkJICAgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCit7CisJ aWYgKHdpbm9iai0+aWdub3JlX251bGxzICE9IE5PX05VTExUUkVBVE1FTlQgJiYgIWFsbG93TnVs bFRyZWF0bWVudCkKKwl7CisJCUhlYXBUdXBsZQlwcm9jdHVwOworCQlGb3JtX3BnX3Byb2MgcHJv Y2Zvcm07CisJCU9pZAkJCWZ1bmNpZDsKKworCQlmdW5jaWQgPSBmY2luZm8tPmZsaW5mby0+Zm5f b2lkOworCQlwcm9jdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsCisJCQkJCQkJCSAgT2Jq ZWN0SWRHZXREYXR1bShmdW5jaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHByb2N0dXAp KQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1Iiwg ZnVuY2lkKTsKKwkJcHJvY2Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCk7 CisJCWVsb2coRVJST1IsICJmdW5jdGlvbiAlcyBkb2VzIG5vdCBhbGxvdyBSRVNQRUNUL0lHTk9S RSBOVUxMUyIsCisJCQkgTmFtZVN0cihwcm9jZm9ybS0+cHJvbmFtZSkpOworCX0KKwllbHNlIGlm ICh3aW5vYmotPmlnbm9yZV9udWxscyA9PSBQQVJTRVJfSUdOT1JFX05VTExTKQorCQl3aW5vYmot Pmlnbm9yZV9udWxscyA9IElHTk9SRV9OVUxMUzsKKworfQorCiAvKgogICogV2luR2V0UGFydGl0 aW9uTG9jYWxNZW1vcnkKICAqCQlHZXQgd29ya2luZyBtZW1vcnkgdGhhdCBsaXZlcyB0aWxsIGVu ZCBvZiBwYXJ0aXRpb24gcHJvY2Vzc2luZwpAQCAtMzM4OCw2ICszNjAxLDEwIEBAIFdpbkdldEZ1 bmNBcmdJblBhcnRpdGlvbihXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAJZWNvbnRl eHQgPSB3aW5zdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CiAJc2xvdCA9IHdpbnN0YXRlLT50 ZW1wX3Nsb3RfMTsKIAorCWlmICh3aW5vYmotPmlnbm9yZV9udWxscyA9PSBJR05PUkVfTlVMTFMg JiYgcmVscG9zICE9IDApCisJCXJldHVybiBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5wYXJ0aXRp b24od2lub2JqLCBhcmdubywgcmVscG9zLCBzZWVrdHlwZSwKKwkJCQkJCQkJCQkJCSBpc251bGws IGlzb3V0KTsKKwogCXN3aXRjaCAoc2Vla3R5cGUpCiAJewogCQljYXNlIFdJTkRPV19TRUVLX0NV UlJFTlQ6CkBAIC0zNDc2LDYgKzM2OTMsMTAgQEAgV2luR2V0RnVuY0FyZ0luRnJhbWUoV2luZG93 T2JqZWN0IHdpbm9iaiwgaW50IGFyZ25vLAogCWVjb250ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBz X0V4cHJDb250ZXh0OwogCXNsb3QgPSB3aW5zdGF0ZS0+dGVtcF9zbG90XzE7CiAKKwlpZiAod2lu b2JqLT5pZ25vcmVfbnVsbHMgPT0gSUdOT1JFX05VTExTKQorCQlyZXR1cm4gaWdub3JlbnVsbHNf Z2V0ZnVuY2FyZ2luZnJhbWUod2lub2JqLCBhcmdubywgcmVscG9zLCBzZWVrdHlwZSwKKwkJCQkJ CQkJCQkJIHNldF9tYXJrLCBpc251bGwsIGlzb3V0KTsKKwogCXN3aXRjaCAoc2Vla3R5cGUpCiAJ ewogCQljYXNlIFdJTkRPV19TRUVLX0NVUlJFTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1 c2VzLmMKaW5kZXggNDNkZmVjZmI0N2YuLmU3MDkxZDc0NjhjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvY2xhdXNlcy5jCkBAIC0yNTcwLDYgKzI1NzAsNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Np b25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQluZXdleHByLT53aW5yZWYgPSBleHByLT53aW5y ZWY7CiAJCQkJbmV3ZXhwci0+d2luc3RhciA9IGV4cHItPndpbnN0YXI7CiAJCQkJbmV3ZXhwci0+ d2luYWdnID0gZXhwci0+d2luYWdnOworCQkJCW5ld2V4cHItPmlnbm9yZV9udWxscyA9IGV4cHIt Pmlnbm9yZV9udWxsczsKIAkJCQluZXdleHByLT5sb2NhdGlvbiA9IGV4cHItPmxvY2F0aW9uOwog CiAJCQkJcmV0dXJuIChOb2RlICopIG5ld2V4cHI7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAyNzFhZTI2Y2Jh Zi4uMTliMWU2MWQxMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNjMyLDcgKzYzMiw3IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bGlzdD4Jd2luZG93X2NsYXVzZSB3aW5kb3dfZGVmaW5p dGlvbl9saXN0IG9wdF9wYXJ0aXRpb25fY2xhdXNlCiAldHlwZSA8d2luZGVmPgl3aW5kb3dfZGVm aW5pdGlvbiBvdmVyX2NsYXVzZSB3aW5kb3dfc3BlY2lmaWNhdGlvbgogCQkJCW9wdF9mcmFtZV9j bGF1c2UgZnJhbWVfZXh0ZW50IGZyYW1lX2JvdW5kCi0ldHlwZSA8aXZhbD4Jb3B0X3dpbmRvd19l eGNsdXNpb25fY2xhdXNlCisldHlwZSA8aXZhbD4JbnVsbF90cmVhdG1lbnQgb3B0X3dpbmRvd19l eGNsdXNpb25fY2xhdXNlCiAldHlwZSA8c3RyPgkJb3B0X2V4aXN0aW5nX3dpbmRvd19uYW1lCiAl dHlwZSA8Ym9vbGVhbj4gb3B0X2lmX25vdF9leGlzdHMKICV0eXBlIDxib29sZWFuPiBvcHRfdW5p cXVlX251bGxfdHJlYXRtZW50CkBAIC03MzAsNyArNzMwLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKIAogCUhBTkRMRVIgSEFWSU5HIEhFQURFUl9QIEhPTEQgSE9VUl9QCiAKLQlJREVOVElU WV9QIElGX1AgSUxJS0UgSU1NRURJQVRFIElNTVVUQUJMRSBJTVBMSUNJVF9QIElNUE9SVF9QIElO X1AgSU5DTFVERQorCUlERU5USVRZX1AgSUZfUCBJR05PUkVfUCBJTElLRSBJTU1FRElBVEUgSU1N VVRBQkxFIElNUExJQ0lUX1AgSU1QT1JUX1AgSU5fUCBJTkNMVURFCiAJSU5DTFVESU5HIElOQ1JF TUVOVCBJTkRFTlQgSU5ERVggSU5ERVhFUyBJTkhFUklUIElOSEVSSVRTIElOSVRJQUxMWSBJTkxJ TkVfUAogCUlOTkVSX1AgSU5PVVQgSU5QVVRfUCBJTlNFTlNJVElWRSBJTlNFUlQgSU5TVEVBRCBJ TlRfUCBJTlRFR0VSCiAJSU5URVJTRUNUIElOVEVSVkFMIElOVE8gSU5WT0tFUiBJUyBJU05VTEwg SVNPTEFUSU9OCkBAIC03NjUsNyArNzY1LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAog CVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lHTiBSRUNVUlNJVkUgUkVGX1AgUkVGRVJFTkNFUyBSRUZF UkVOQ0lORwogCVJFRlJFU0ggUkVJTkRFWCBSRUxBVElWRV9QIFJFTEVBU0UgUkVOQU1FIFJFUEVB VEFCTEUgUkVQTEFDRSBSRVBMSUNBCi0JUkVTRVQgUkVTVEFSVCBSRVNUUklDVCBSRVRVUk4gUkVU VVJOSU5HIFJFVFVSTlMgUkVWT0tFIFJJR0hUIFJPTEUgUk9MTEJBQ0sgUk9MTFVQCisJUkVTRVQg UkVTUEVDVF9QIFJFU1RBUlQgUkVTVFJJQ1QgUkVUVVJOIFJFVFVSTklORyBSRVRVUk5TIFJFVk9L RSBSSUdIVCBST0xFIFJPTExCQUNLIFJPTExVUAogCVJPVVRJTkUgUk9VVElORVMgUk9XIFJPV1Mg UlVMRQogCiAJU0FWRVBPSU5UIFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNF Q09ORF9QIFNFQ1VSSVRZIFNFTEVDVApAQCAtMTU3NTgsNyArMTU3NTgsNyBAQCBmdW5jX2FwcGxp Y2F0aW9uOiBmdW5jX25hbWUgJygnICcpJwogICogKE5vdGUgdGhhdCBtYW55IG9mIHRoZSBzcGVj aWFsIFNRTCBmdW5jdGlvbnMgd291bGRuJ3QgYWN0dWFsbHkgbWFrZSBhbnkKICAqIHNlbnNlIGFz IGZ1bmN0aW9uYWwgaW5kZXggZW50cmllcywgYnV0IHdlIGlnbm9yZSB0aGF0IGNvbnNpZGVyYXRp b24gaGVyZS4pCiAgKi8KLWZ1bmNfZXhwcjogZnVuY19hcHBsaWNhdGlvbiB3aXRoaW5fZ3JvdXBf Y2xhdXNlIGZpbHRlcl9jbGF1c2Ugb3Zlcl9jbGF1c2UKK2Z1bmNfZXhwcjogZnVuY19hcHBsaWNh dGlvbiB3aXRoaW5fZ3JvdXBfY2xhdXNlIGZpbHRlcl9jbGF1c2UgbnVsbF90cmVhdG1lbnQgb3Zl cl9jbGF1c2UKIAkJCQl7CiAJCQkJCUZ1bmNDYWxsICAgKm4gPSAoRnVuY0NhbGwgKikgJDE7CiAK QEAgLTE1NzkxLDcgKzE1NzkxLDggQEAgZnVuY19leHByOiBmdW5jX2FwcGxpY2F0aW9uIHdpdGhp bl9ncm91cF9jbGF1c2UgZmlsdGVyX2NsYXVzZSBvdmVyX2NsYXVzZQogCQkJCQkJbi0+YWdnX3dp dGhpbl9ncm91cCA9IHRydWU7CiAJCQkJCX0KIAkJCQkJbi0+YWdnX2ZpbHRlciA9ICQzOwotCQkJ CQluLT5vdmVyID0gJDQ7CisJCQkJCW4tPmlnbm9yZV9udWxscyA9ICQ0OworCQkJCQluLT5vdmVy ID0gJDU7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IGpzb25fYWdncmVnYXRl X2Z1bmMgZmlsdGVyX2NsYXVzZSBvdmVyX2NsYXVzZQpAQCAtMTYzODcsNiArMTYzODgsMTIgQEAg ZmlsdGVyX2NsYXVzZToKIC8qCiAgKiBXaW5kb3cgRGVmaW5pdGlvbnMKICAqLworbnVsbF90cmVh dG1lbnQ6CisJCQlJR05PUkVfUCBOVUxMU19QCQkJCQkJeyAkJCA9IFBBUlNFUl9JR05PUkVfTlVM TFM7IH0KKwkJCXwgUkVTUEVDVF9QIE5VTExTX1AJCQkJCQl7ICQkID0gUEFSU0VSX1JFU1BFQ1Rf TlVMTFM7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTk9fTlVMTFRSRUFUTUVOVDsg fQorCQk7CisKIHdpbmRvd19jbGF1c2U6CiAJCQlXSU5ET1cgd2luZG93X2RlZmluaXRpb25fbGlz dAkJCXsgJCQgPSAkMjsgfQogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOSUw7IH0KQEAg LTE3ODI0LDYgKzE3ODMxLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBIT1VSX1AKIAkJ CXwgSURFTlRJVFlfUAogCQkJfCBJRl9QCisJCQl8IElHTk9SRV9QCiAJCQl8IElNTUVESUFURQog CQkJfCBJTU1VVEFCTEUKIAkJCXwgSU1QTElDSVRfUApAQCAtMTc5NDEsNiArMTc5NDksNyBAQCB1 bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFJFUExBQ0UKIAkJCXwgUkVQTElDQQogCQkJfCBSRVNF VAorCQkJfCBSRVNQRUNUX1AKIAkJCXwgUkVTVEFSVAogCQkJfCBSRVNUUklDVAogCQkJfCBSRVRV Uk4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDU4M2JiYmYyMzJmLi4zNzcyYzUxNGIxZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC05OCw2ICs5OCw3IEBAIFBhcnNlRnVuY09yQ29s dW1uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZnVuY25hbWUsIExpc3QgKmZhcmdzLAogCWJv b2wJCWFnZ19zdGFyID0gKGZuID8gZm4tPmFnZ19zdGFyIDogZmFsc2UpOwogCWJvb2wJCWFnZ19k aXN0aW5jdCA9IChmbiA/IGZuLT5hZ2dfZGlzdGluY3QgOiBmYWxzZSk7CiAJYm9vbAkJZnVuY192 YXJpYWRpYyA9IChmbiA/IGZuLT5mdW5jX3ZhcmlhZGljIDogZmFsc2UpOworCWludAkJCWlnbm9y ZV9udWxscyA9IChmbiA/IGZuLT5pZ25vcmVfbnVsbHMgOiAwKTsKIAlDb2VyY2lvbkZvcm0gZnVu Y2Zvcm1hdCA9IChmbiA/IGZuLT5mdW5jZm9ybWF0IDogQ09FUkNFX0VYUExJQ0lUX0NBTEwpOwog CWJvb2wJCWNvdWxkX2JlX3Byb2plY3Rpb247CiAJT2lkCQkJcmV0dHlwZTsKQEAgLTUxNCw2ICs1 MTUsMTMgQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5j bmFtZSwgTGlzdCAqZmFyZ3MsCiAJCQkJCQkgZXJybXNnKCIlcyBpcyBub3QgYW4gb3JkZXJlZC1z ZXQgYWdncmVnYXRlLCBzbyBpdCBjYW5ub3QgaGF2ZSBXSVRISU4gR1JPVVAiLAogCQkJCQkJCQlO YW1lTGlzdFRvU3RyaW5nKGZ1bmNuYW1lKSksCiAJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgbG9jYXRpb24pKSk7CisKKwkJCS8qIEl0IGFsc28gY2FuJ3QgdHJlYXQgbnVsbHMgYXMg YSB3aW5kb3cgZnVuY3Rpb24gKi8KKwkJCWlmIChpZ25vcmVfbnVsbHMgIT0gTk9fTlVMTFRSRUFU TUVOVCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGRvIG5vdCBh Y2NlcHQgUkVTUEVDVC9JR05PUkUgTlVMTFMiKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBsb2NhdGlvbikpKTsKIAkJfQogCX0KIAllbHNlIGlmIChmZHJlc3VsdCA9PSBGVU5D REVUQUlMX1dJTkRPV0ZVTkMpCkBAIC04MzQsNiArODQyLDcgQEAgUGFyc2VGdW5jT3JDb2x1bW4o UGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlzdCAqZmFyZ3MsCiAJCXdmdW5j LT53aW5zdGFyID0gYWdnX3N0YXI7CiAJCXdmdW5jLT53aW5hZ2cgPSAoZmRyZXN1bHQgPT0gRlVO Q0RFVEFJTF9BR0dSRUdBVEUpOwogCQl3ZnVuYy0+YWdnZmlsdGVyID0gYWdnX2ZpbHRlcjsKKwkJ d2Z1bmMtPmlnbm9yZV9udWxscyA9IGlnbm9yZV9udWxsczsKIAkJd2Z1bmMtPnJ1bkNvbmRpdGlv biA9IE5JTDsKIAkJd2Z1bmMtPmxvY2F0aW9uID0gbG9jYXRpb247CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYwppbmRleCA5ZTkwYWNlZGI5MS4uYWM5N2EzNWFkNDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKQEAgLTExMDgwLDcgKzExMDgwLDEyIEBAIGdldF93aW5kb3dmdW5jX2V4 cHJfaGVscGVyKFdpbmRvd0Z1bmMgKndmdW5jLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJ CWdldF9ydWxlX2V4cHIoKE5vZGUgKikgd2Z1bmMtPmFnZ2ZpbHRlciwgY29udGV4dCwgZmFsc2Up OwogCX0KIAotCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKSBPVkVSICIpOworCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKSAiKTsKKworCWlmICh3ZnVuYy0+aWdub3JlX251bGxz ID09IFBBUlNFUl9JR05PUkVfTlVMTFMpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAi SUdOT1JFIE5VTExTICIpOworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJPVkVSICIp OwogCiAJaWYgKGNvbnRleHQtPndpbmRvd0NsYXVzZSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5k b3dmdW5jcy5jCmluZGV4IGJiMzVmM2JjNGE5Li45NjlmMDJhYTU5YiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3dpbmRvd2Z1bmNzLmMKQEAgLTg2LDYgKzg2LDcgQEAgd2luZG93X3Jvd19udW1iZXIoUEdf RlVOQ1RJT05fQVJHUykKIAlXaW5kb3dPYmplY3Qgd2lub2JqID0gUEdfV0lORE9XX09CSkVDVCgp OwogCWludDY0CQljdXJwb3MgPSBXaW5HZXRDdXJyZW50UG9zaXRpb24od2lub2JqKTsKIAorCVdp bkNoZWNrQW5kSW5pdGlhbGl6ZU51bGxUcmVhdG1lbnQod2lub2JqLCBmYWxzZSwgZmNpbmZvKTsK IAlXaW5TZXRNYXJrUG9zaXRpb24od2lub2JqLCBjdXJwb3MpOwogCVBHX1JFVFVSTl9JTlQ2NChj dXJwb3MgKyAxKTsKIH0KQEAgLTE0MSw2ICsxNDIsNyBAQCB3aW5kb3dfcmFuayhQR19GVU5DVElP Tl9BUkdTKQogCXJhbmtfY29udGV4dCAqY29udGV4dDsKIAlib29sCQl1cDsKIAorCVdpbkNoZWNr QW5kSW5pdGlhbGl6ZU51bGxUcmVhdG1lbnQod2lub2JqLCBmYWxzZSwgZmNpbmZvKTsKIAl1cCA9 IHJhbmtfdXAod2lub2JqKTsKIAljb250ZXh0ID0gKHJhbmtfY29udGV4dCAqKQogCQlXaW5HZXRQ YXJ0aXRpb25Mb2NhbE1lbW9yeSh3aW5vYmosIHNpemVvZihyYW5rX2NvbnRleHQpKTsKQEAgLTIw Myw2ICsyMDUsNyBAQCB3aW5kb3dfZGVuc2VfcmFuayhQR19GVU5DVElPTl9BUkdTKQogCXJhbmtf Y29udGV4dCAqY29udGV4dDsKIAlib29sCQl1cDsKIAorCVdpbkNoZWNrQW5kSW5pdGlhbGl6ZU51 bGxUcmVhdG1lbnQod2lub2JqLCBmYWxzZSwgZmNpbmZvKTsKIAl1cCA9IHJhbmtfdXAod2lub2Jq KTsKIAljb250ZXh0ID0gKHJhbmtfY29udGV4dCAqKQogCQlXaW5HZXRQYXJ0aXRpb25Mb2NhbE1l bW9yeSh3aW5vYmosIHNpemVvZihyYW5rX2NvbnRleHQpKTsKQEAgLTI2Niw2ICsyNjksNyBAQCB3 aW5kb3dfcGVyY2VudF9yYW5rKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW50NjQJCXRvdGFscm93cyA9 IFdpbkdldFBhcnRpdGlvblJvd0NvdW50KHdpbm9iaik7CiAKIAlBc3NlcnQodG90YWxyb3dzID4g MCk7CisJV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVudCh3aW5vYmosIGZhbHNlLCBm Y2luZm8pOwogCiAJdXAgPSByYW5rX3VwKHdpbm9iaik7CiAJY29udGV4dCA9IChyYW5rX2NvbnRl eHQgKikKQEAgLTMzNSw2ICszMzksNyBAQCB3aW5kb3dfY3VtZV9kaXN0KFBHX0ZVTkNUSU9OX0FS R1MpCiAJaW50NjQJCXRvdGFscm93cyA9IFdpbkdldFBhcnRpdGlvblJvd0NvdW50KHdpbm9iaik7 CiAKIAlBc3NlcnQodG90YWxyb3dzID4gMCk7CisJV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRy ZWF0bWVudCh3aW5vYmosIGZhbHNlLCBmY2luZm8pOwogCiAJdXAgPSByYW5rX3VwKHdpbm9iaik7 CiAJY29udGV4dCA9IChyYW5rX2NvbnRleHQgKikKQEAgLTQxMyw2ICs0MTgsNyBAQCB3aW5kb3df bnRpbGUoUEdfRlVOQ1RJT05fQVJHUykKIAlXaW5kb3dPYmplY3Qgd2lub2JqID0gUEdfV0lORE9X X09CSkVDVCgpOwogCW50aWxlX2NvbnRleHQgKmNvbnRleHQ7CiAKKwlXaW5DaGVja0FuZEluaXRp YWxpemVOdWxsVHJlYXRtZW50KHdpbm9iaiwgZmFsc2UsIGZjaW5mbyk7CiAJY29udGV4dCA9IChu dGlsZV9jb250ZXh0ICopCiAJCVdpbkdldFBhcnRpdGlvbkxvY2FsTWVtb3J5KHdpbm9iaiwgc2l6 ZW9mKG50aWxlX2NvbnRleHQpKTsKIApAQCAtNTM1LDYgKzU0MSw3IEBAIGxlYWRsYWdfY29tbW9u KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCWJvb2wJCWlzbnVsbDsKIAlib29sCQlpc291dDsK IAorCVdpbkNoZWNrQW5kSW5pdGlhbGl6ZU51bGxUcmVhdG1lbnQod2lub2JqLCB0cnVlLCBmY2lu Zm8pOwogCWlmICh3aXRob2Zmc2V0KQogCXsKIAkJb2Zmc2V0ID0gRGF0dW1HZXRJbnQzMihXaW5H ZXRGdW5jQXJnQ3VycmVudCh3aW5vYmosIDEsICZpc251bGwpKTsKQEAgLTY1Miw2ICs2NTksNyBA QCB3aW5kb3dfZmlyc3RfdmFsdWUoUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkJcmVzdWx0Owog CWJvb2wJCWlzbnVsbDsKIAorCVdpbkNoZWNrQW5kSW5pdGlhbGl6ZU51bGxUcmVhdG1lbnQod2lu b2JqLCB0cnVlLCBmY2luZm8pOwogCXJlc3VsdCA9IFdpbkdldEZ1bmNBcmdJbkZyYW1lKHdpbm9i aiwgMCwKIAkJCQkJCQkJICAwLCBXSU5ET1dfU0VFS19IRUFELCB0cnVlLAogCQkJCQkJCQkgICZp c251bGwsIE5VTEwpOwpAQCAtNjczLDYgKzY4MSw3IEBAIHdpbmRvd19sYXN0X3ZhbHVlKFBHX0ZV TkNUSU9OX0FSR1MpCiAJRGF0dW0JCXJlc3VsdDsKIAlib29sCQlpc251bGw7CiAKKwlXaW5DaGVj a0FuZEluaXRpYWxpemVOdWxsVHJlYXRtZW50KHdpbm9iaiwgdHJ1ZSwgZmNpbmZvKTsKIAlyZXN1 bHQgPSBXaW5HZXRGdW5jQXJnSW5GcmFtZSh3aW5vYmosIDAsCiAJCQkJCQkJCSAgMCwgV0lORE9X X1NFRUtfVEFJTCwgdHJ1ZSwKIAkJCQkJCQkJICAmaXNudWxsLCBOVUxMKTsKQEAgLTY5Niw2ICs3 MDUsNyBAQCB3aW5kb3dfbnRoX3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJYm9vbAkJaXNudWxs OwogCWludDMyCQludGg7CiAKKwlXaW5DaGVja0FuZEluaXRpYWxpemVOdWxsVHJlYXRtZW50KHdp bm9iaiwgdHJ1ZSwgZmNpbmZvKTsKIAludGggPSBEYXR1bUdldEludDMyKFdpbkdldEZ1bmNBcmdD dXJyZW50KHdpbm9iaiwgMSwgJmlzbnVsbCkpOwogCWlmIChpc251bGwpCiAJCVBHX1JFVFVSTl9O VUxMKCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMjNjOWUzYzVhYmYuLmIxM2E3YmZlNjc0 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00MzksNiArNDM5LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgRnVuY0NhbGwKIAlMaXN0CSAgICphZ2dfb3JkZXI7CQkvKiBPUkRFUiBCWSAobGlzdCBvZiBT b3J0QnkpICovCiAJTm9kZQkgICAqYWdnX2ZpbHRlcjsJCS8qIEZJTFRFUiBjbGF1c2UsIGlmIGFu eSAqLwogCXN0cnVjdCBXaW5kb3dEZWYgKm92ZXI7CQkvKiBPVkVSIGNsYXVzZSwgaWYgYW55ICov CisJaW50CQkJaWdub3JlX251bGxzOwkvKiBpZ25vcmUgbnVsbHMgZm9yIHdpbmRvdyBmdW5jdGlv biAqLwogCWJvb2wJCWFnZ193aXRoaW5fZ3JvdXA7CS8qIE9SREVSIEJZIGFwcGVhcmVkIGluIFdJ VEhJTiBHUk9VUCAqLwogCWJvb2wJCWFnZ19zdGFyOwkJLyogYXJndW1lbnQgd2FzIHJlYWxseSAn KicgKi8KIAlib29sCQlhZ2dfZGlzdGluY3Q7CS8qIGFyZ3VtZW50cyB3ZXJlIGxhYmVsZWQgRElT VElOQ1QgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggZDA1NzZkYTNlMjUuLjY1MDgxNjE2NDAy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNTc3LDYgKzU3NywxNyBAQCB0eXBlZGVmIHN0cnVj dCBHcm91cGluZ0Z1bmMKICAqIENvbGxhdGlvbiBpbmZvcm1hdGlvbiBpcyBpcnJlbGV2YW50IGZv ciB0aGUgcXVlcnkganVtYmxpbmcsIGFzIGlzIHRoZQogICogaW50ZXJuYWwgc3RhdGUgaW5mb3Jt YXRpb24gb2YgdGhlIG5vZGUgbGlrZSAid2luc3RhciIgYW5kICJ3aW5hZ2ciLgogICovCisKKy8q CisgKiBOdWxsIFRyZWF0bWVudCBvcHRpb25zLiBJZiBzcGVjaWZpZWQsIGluaXRpYWxseSBzZXQg dG8gUEFSU0VSX0lHTk9SRV9OVUxMUworICogd2hpY2ggaXMgdGhlbiBjb252ZXJ0ZWQgdG8gSUdO T1JFX05VTExTIGlmIHRoZSB3aW5kb3cgZnVuY3Rpb24gYWxsb3dzIHRoZQorICogbnVsbCB0cmVh dG1lbnQgY2xhdXNlLgorICovCisjZGVmaW5lIE5PX05VTExUUkVBVE1FTlQgMAorI2RlZmluZSBQ QVJTRVJfSUdOT1JFX05VTExTIDEKKyNkZWZpbmUgUEFSU0VSX1JFU1BFQ1RfTlVMTFMgMgorI2Rl ZmluZSBJR05PUkVfTlVMTFMgMworCiB0eXBlZGVmIHN0cnVjdCBXaW5kb3dGdW5jCiB7CiAJRXhw cgkJeHByOwpAQCAtNjAwLDYgKzYxMSw4IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0Z1bmMKIAli b29sCQl3aW5zdGFyIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBpcyBm dW5jdGlvbiBhIHNpbXBsZSBhZ2dyZWdhdGU/ICovCiAJYm9vbAkJd2luYWdnIHBnX25vZGVfYXR0 cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBpZ25vcmUgbnVsbHMuIE9uZSBvZiB0aGUgTnVs bCBUcmVhdG1lbnQgb3B0aW9ucyAqLworCWludAkJCWlnbm9yZV9udWxsczsKIAkvKiB0b2tlbiBs b2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwogfSBXaW5k b3dGdW5jOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDQwY2YwOTBjZTYxLi4zYmEwMGEzOWU1ZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaApAQCAtMjAyLDYgKzIwMiw3IEBAIFBHX0tFWVdPUkQoImhvbGQiLCBIT0xE LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJob3VyIiwgSE9V Ul9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgiaWRlbnRpdHki LCBJREVOVElUWV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJpZiIsIElGX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo Imlnbm9yZSIsIElHTk9SRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZ V09SRCgiaWxpa2UiLCBJTElLRSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImltbWVkaWF0ZSIsIElNTUVESUFURSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW1tdXRhYmxlIiwgSU1NVVRBQkxFLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zNzcsNiArMzc4LDcgQEAgUEdfS0VZV09SRCgicmVw ZWF0YWJsZSIsIFJFUEVBVEFCTEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInJlcGxhY2UiLCBSRVBMQUNFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJyZXBsaWNhIiwgUkVQTElDQSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmVzZXQiLCBSRVNFVCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicmVzcGVjdCIsIFJFU1BFQ1RfUCwgVU5SRVNFUlZF RF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInJlc3RhcnQiLCBSRVNUQVJULCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZXN0cmljdCIsIFJFU1RS SUNULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZXR1cm4i LCBSRVRVUk4sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3dpbmRvd2FwaS5oIGIvc3JjL2luY2x1ZGUvd2luZG93YXBpLmgKaW5kZXggY2Iy ZWNlMTY2YjYuLjIwY2ZkOWU5ZGQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS93aW5kb3dhcGku aAorKysgYi9zcmMvaW5jbHVkZS93aW5kb3dhcGkuaApAQCAtMjgsNiArMjgsOCBAQAogI2lmbmRl ZiBXSU5ET1dBUElfSAogI2RlZmluZSBXSU5ET1dBUElfSAogCisjaW5jbHVkZSAiZm1nci5oIgor CiAvKiB2YWx1ZXMgb2YgInNlZWt0eXBlIiAqLwogI2RlZmluZSBXSU5ET1dfU0VFS19DVVJSRU5U IDAKICNkZWZpbmUgV0lORE9XX1NFRUtfSEVBRCAxCkBAIC00MSw2ICs0MywxMCBAQCB0eXBlZGVm IHN0cnVjdCBXaW5kb3dPYmplY3REYXRhICpXaW5kb3dPYmplY3Q7CiAjZGVmaW5lIFdpbmRvd09i amVjdElzVmFsaWQod2lub2JqKSBcCiAJKCh3aW5vYmopICE9IE5VTEwgJiYgSXNBKHdpbm9iaiwg V2luZG93T2JqZWN0RGF0YSkpCiAKK2V4dGVybiB2b2lkIFdpbkNoZWNrQW5kSW5pdGlhbGl6ZU51 bGxUcmVhdG1lbnQoV2luZG93T2JqZWN0IHdpbm9iaiwKKwkJCQkJCQkJCQkJICAgYm9vbCBhbGxv d051bGxUcmVhdG1lbnQsCisJCQkJCQkJCQkJCSAgIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKTsK KwogZXh0ZXJuIHZvaWQgKldpbkdldFBhcnRpdGlvbkxvY2FsTWVtb3J5KFdpbmRvd09iamVjdCB3 aW5vYmosIFNpemUgc3opOwogCiBleHRlcm4gaW50NjQgV2luR2V0Q3VycmVudFBvc2l0aW9uKFdp bmRvd09iamVjdCB3aW5vYmopOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC93aW5kb3cub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aW5kb3cub3V0CmluZGV4 IGI4NmI2NjhmNDMzLi5mOTI5ZDgxYmM4YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aW5kb3cub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2luZG93 Lm91dApAQCAtNTQ1MywzICs1NDUzLDMxNCBAQCBTRUxFQ1QgKiBGUk9NIHBnX3RlbXAuZigyKTsK ICB7NX0KICg1IHJvd3MpCiAKKy0tIElHTk9SRSBOVUxMUyB0ZXN0cworQ1JFQVRFIFRFTVBPUkFS WSBUQUJMRSBwbGFuZXRzICgKKyAgICBuYW1lIHRleHQsCisgICAgZGlzdGFuY2UgdGV4dCwKKyAg ICBvcmJpdCBpbnRlZ2VyCispOworSU5TRVJUIElOVE8gcGxhbmV0cyBWQUxVRVMKKyAgKCdtZXJj dXJ5JywgJ2Nsb3NlJywgODgpLAorICAoJ3ZlbnVzJywgJ2Nsb3NlJywgMjI0KSwKKyAgKCdlYXJ0 aCcsICdjbG9zZScsIE5VTEwpLAorICAoJ21hcnMnLCAnY2xvc2UnLCBOVUxMKSwKKyAgKCdqdXBp dGVyJywgJ2Nsb3NlJywgNDMzMiksCisgICgnc2F0dXJuJywgJ2ZhcicsIDI0NDkxKSwKKyAgKCd1 cmFudXMnLCAnZmFyJywgTlVMTCksCisgICgnbmVwdHVuZScsICdmYXInLCA2MDE4MiksCisgICgn cGx1dG8nLCAnZmFyJywgOTA1NjApLAorICAoJ3h5enp5JywgJ2ZhcicsIE5VTEwpOworLS0gdGVz dCBydWxldXRpbHMKK0NSRUFURSBWSUVXIHBsYW5ldHNfdmlldyBBUworU0VMRUNUIG5hbWUsCisg ICAgICAgb3JiaXQsCisgICAgICAgbGFnKG9yYml0KSBPVkVSIHcgQVMgbGFnLAorICAgICAgIGxh ZyhvcmJpdCkgUkVTUEVDVCBOVUxMUyBPVkVSIHcgQVMgbGFnX3Jlc3BlY3QsCisgICAgICAgbGFn KG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxhZ19pZ25vcmUKK0ZST00gcGxhbmV0cwor V0lORE9XIHcgQVMgKE9SREVSIEJZIG5hbWUpCis7CitOT1RJQ0U6ICB2aWV3ICJwbGFuZXRzX3Zp ZXciIHdpbGwgYmUgYSB0ZW1wb3JhcnkgdmlldworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdwbGFu ZXRzX3ZpZXcnKTsKKyAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICBTRUxFQ1QgbmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgb3JiaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGxh ZyhvcmJpdCkgT1ZFUiB3IEFTIGxhZywgICAgICAgICAgICAgICAgICAgKworICAgICBsYWcob3Ji aXQpIE9WRVIgdyBBUyBsYWdfcmVzcGVjdCwgICAgICAgICAgICsKKyAgICAgbGFnKG9yYml0KSBJ R05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxhZ19pZ25vcmUrCisgICAgRlJPTSBwbGFuZXRzICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIG5h bWUpOworKDEgcm93KQorCistLSBsYWcKK1NFTEVDVCBuYW1lLAorICAgICAgIG9yYml0LAorICAg ICAgIGxhZyhvcmJpdCkgT1ZFUiB3IEFTIGxhZywKKyAgICAgICBsYWcob3JiaXQpIFJFU1BFQ1Qg TlVMTFMgT1ZFUiB3IEFTIGxhZ19yZXNwZWN0LAorICAgICAgIGxhZyhvcmJpdCkgSUdOT1JFIE5V TExTIE9WRVIgdyBBUyBsYWdfaWdub3JlCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBuYW1lKQorOworICBuYW1lICAgfCBvcmJpdCB8ICBsYWcgIHwgbGFnX3Jlc3BlY3QgfCBs YWdfaWdub3JlIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorIGVhcnRoICAgfCAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisganVwaXRlciB8ICA0MzMyIHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBtYXJzICAgIHwgICAgICAgfCAgNDMzMiB8ICAgICAgICA0MzMyIHwgICAgICAgNDMzMgorIG1l cmN1cnkgfCAgICA4OCB8ICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICA0MzMyCisgbmVwdHVu ZSB8IDYwMTgyIHwgICAgODggfCAgICAgICAgICA4OCB8ICAgICAgICAgODgKKyBwbHV0byAgIHwg OTA1NjAgfCA2MDE4MiB8ICAgICAgIDYwMTgyIHwgICAgICA2MDE4MgorIHNhdHVybiAgfCAyNDQ5 MSB8IDkwNTYwIHwgICAgICAgOTA1NjAgfCAgICAgIDkwNTYwCisgdXJhbnVzICB8ICAgICAgIHwg MjQ0OTEgfCAgICAgICAyNDQ5MSB8ICAgICAgMjQ0OTEKKyB2ZW51cyAgIHwgICAyMjQgfCAgICAg ICB8ICAgICAgICAgICAgIHwgICAgICAyNDQ5MQorIHh5enp5ICAgfCAgICAgICB8ICAgMjI0IHwg ICAgICAgICAyMjQgfCAgICAgICAgMjI0CisoMTAgcm93cykKKworLS0gbGVhZAorU0VMRUNUIG5h bWUsCisgICAgICAgb3JiaXQsCisgICAgICAgbGVhZChvcmJpdCkgT1ZFUiB3IEFTIGxlYWQsCisg ICAgICAgbGVhZChvcmJpdCkgUkVTUEVDVCBOVUxMUyBPVkVSIHcgQVMgbGVhZF9yZXNwZWN0LAor ICAgICAgIGxlYWQob3JiaXQpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbGVhZF9pZ25vcmUKK0ZS T00gcGxhbmV0cworV0lORE9XIHcgQVMgKE9SREVSIEJZIG5hbWUpCis7CisgIG5hbWUgICB8IG9y Yml0IHwgbGVhZCAgfCBsZWFkX3Jlc3BlY3QgfCBsZWFkX2lnbm9yZSAKKy0tLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGVhcnRoICAgfCAgICAg ICB8ICA0MzMyIHwgICAgICAgICA0MzMyIHwgICAgICAgIDQzMzIKKyBqdXBpdGVyIHwgIDQzMzIg fCAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgIDg4CisgbWFycyAgICB8ICAgICAgIHwg ICAgODggfCAgICAgICAgICAgODggfCAgICAgICAgICA4OAorIG1lcmN1cnkgfCAgICA4OCB8IDYw MTgyIHwgICAgICAgIDYwMTgyIHwgICAgICAgNjAxODIKKyBuZXB0dW5lIHwgNjAxODIgfCA5MDU2 MCB8ICAgICAgICA5MDU2MCB8ICAgICAgIDkwNTYwCisgcGx1dG8gICB8IDkwNTYwIHwgMjQ0OTEg fCAgICAgICAgMjQ0OTEgfCAgICAgICAyNDQ5MQorIHNhdHVybiAgfCAyNDQ5MSB8ICAgICAgIHwg ICAgICAgICAgICAgIHwgICAgICAgICAyMjQKKyB1cmFudXMgIHwgICAgICAgfCAgIDIyNCB8ICAg ICAgICAgIDIyNCB8ICAgICAgICAgMjI0CisgdmVudXMgICB8ICAgMjI0IHwgICAgICAgfCAgICAg ICAgICAgICAgfCAgICAgICAgICAgIAorIHh5enp5ICAgfCAgICAgICB8ICAgICAgIHwgICAgICAg ICAgICAgIHwgICAgICAgICAgICAKKygxMCByb3dzKQorCistLSBmaXJzdF92YWx1ZQorU0VMRUNU IG5hbWUsCisgICAgICAgb3JiaXQsCisgICAgICAgZmlyc3RfdmFsdWUob3JiaXQpIFJFU1BFQ1Qg TlVMTFMgT1ZFUiB3MSwKKyAgICAgICBmaXJzdF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9W RVIgdzEsCisgICAgICAgZmlyc3RfdmFsdWUob3JiaXQpIFJFU1BFQ1QgTlVMTFMgT1ZFUiB3MiwK KyAgICAgICBmaXJzdF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdzIKK0ZST00gcGxh bmV0cworV0lORE9XIHcxIEFTIChPUkRFUiBCWSBuYW1lIFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQg UFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSwKKyAgICAgICB3MiBBUyAoT1JERVIg QlkgbmFtZSBST1dTIEJFVFdFRU4gMiBQUkVDRURJTkcgQU5EIDIgRk9MTE9XSU5HKQorOworICBu YW1lICAgfCBvcmJpdCB8IGZpcnN0X3ZhbHVlIHwgZmlyc3RfdmFsdWUgfCBmaXJzdF92YWx1ZSB8 IGZpcnN0X3ZhbHVlIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGVhcnRoICAgfCAgICAgICB8ICAgICAg ICAgICAgIHwgICAgICAgIDQzMzIgfCAgICAgICAgICAgICB8ICAgICAgICA0MzMyCisganVwaXRl ciB8ICA0MzMyIHwgICAgICAgICAgICAgfCAgICAgICAgNDMzMiB8ICAgICAgICAgICAgIHwgICAg ICAgIDQzMzIKKyBtYXJzICAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICA0MzMyIHwg ICAgICAgICAgICAgfCAgICAgICAgNDMzMgorIG1lcmN1cnkgfCAgICA4OCB8ICAgICAgICAgICAg IHwgICAgICAgIDQzMzIgfCAgICAgICAgNDMzMiB8ICAgICAgICA0MzMyCisgbmVwdHVuZSB8IDYw MTgyIHwgICAgICAgICAgICAgfCAgICAgICAgNDMzMiB8ICAgICAgICAgICAgIHwgICAgICAgICAg ODgKKyBwbHV0byAgIHwgOTA1NjAgfCAgICAgICAgICAgICB8ICAgICAgICA0MzMyIHwgICAgICAg ICAgODggfCAgICAgICAgICA4OAorIHNhdHVybiAgfCAyNDQ5MSB8ICAgICAgICAgICAgIHwgICAg ICAgIDQzMzIgfCAgICAgICA2MDE4MiB8ICAgICAgIDYwMTgyCisgdXJhbnVzICB8ICAgICAgIHwg ICAgICAgICAgICAgfCAgICAgICAgNDMzMiB8ICAgICAgIDkwNTYwIHwgICAgICAgOTA1NjAKKyB2 ZW51cyAgIHwgICAyMjQgfCAgICAgICAgICAgICB8ICAgICAgICA0MzMyIHwgICAgICAgMjQ0OTEg fCAgICAgICAyNDQ5MQorIHh5enp5ICAgfCAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgIDQz MzIgfCAgICAgICAgICAgICB8ICAgICAgICAgMjI0CisoMTAgcm93cykKKworLS0gbnRoX3ZhbHVl CitTRUxFQ1QgbmFtZSwKKyAgICAgICBvcmJpdCwKKyAgICAgICBudGhfdmFsdWUob3JiaXQsIDIp IFJFU1BFQ1QgTlVMTFMgT1ZFUiB3MSwKKyAgICAgICBudGhfdmFsdWUob3JiaXQsIDIpIElHTk9S RSBOVUxMUyBPVkVSIHcxLAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgUkVTUEVDVCBOVUxM UyBPVkVSIHcyLAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgSUdOT1JFIE5VTExTIE9WRVIg dzIKK0ZST00gcGxhbmV0cworV0lORE9XIHcxIEFTIChPUkRFUiBCWSBuYW1lIFJPV1MgQkVUV0VF TiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSwKKyAgICAgICB3 MiBBUyAoT1JERVIgQlkgbmFtZSBST1dTIEJFVFdFRU4gMiBQUkVDRURJTkcgQU5EIDIgRk9MTE9X SU5HKQorOworICBuYW1lICAgfCBvcmJpdCB8IG50aF92YWx1ZSB8IG50aF92YWx1ZSB8IG50aF92 YWx1ZSB8IG50aF92YWx1ZSAKKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgZWFydGggICB8ICAgICAgIHwgICAgICA0MzMy IHwgICAgICAgIDg4IHwgICAgICA0MzMyIHwgICAgICAgICAgCisganVwaXRlciB8ICA0MzMyIHwg ICAgICA0MzMyIHwgICAgICAgIDg4IHwgICAgICA0MzMyIHwgICAgICAgIDg4CisgbWFycyAgICB8 ICAgICAgIHwgICAgICA0MzMyIHwgICAgICAgIDg4IHwgICAgICA0MzMyIHwgICAgICAgIDg4Cisg bWVyY3VyeSB8ICAgIDg4IHwgICAgICA0MzMyIHwgICAgICAgIDg4IHwgICAgICAgICAgIHwgICAg ICAgIDg4CisgbmVwdHVuZSB8IDYwMTgyIHwgICAgICA0MzMyIHwgICAgICAgIDg4IHwgICAgICAg IDg4IHwgICAgIDYwMTgyCisgcGx1dG8gICB8IDkwNTYwIHwgICAgICA0MzMyIHwgICAgICAgIDg4 IHwgICAgIDYwMTgyIHwgICAgIDYwMTgyCisgc2F0dXJuICB8IDI0NDkxIHwgICAgICA0MzMyIHwg ICAgICAgIDg4IHwgICAgIDkwNTYwIHwgICAgIDkwNTYwCisgdXJhbnVzICB8ICAgICAgIHwgICAg ICA0MzMyIHwgICAgICAgIDg4IHwgICAgIDI0NDkxIHwgICAgIDI0NDkxCisgdmVudXMgICB8ICAg MjI0IHwgICAgICA0MzMyIHwgICAgICAgIDg4IHwgICAgICAgICAgIHwgICAgICAgMjI0CisgeHl6 enkgICB8ICAgICAgIHwgICAgICA0MzMyIHwgICAgICAgIDg4IHwgICAgICAgMjI0IHwgICAgICAg ICAgCisoMTAgcm93cykKKworLS0gbGFzdF92YWx1ZQorU0VMRUNUIG5hbWUsCisgICAgICAgb3Ji aXQsCisgICAgICAgbGFzdF92YWx1ZShvcmJpdCkgUkVTUEVDVCBOVUxMUyBPVkVSIHcxLAorICAg ICAgIGxhc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxMUyBPVkVSIHcxLAorICAgICAgIGxhc3Rf dmFsdWUob3JiaXQpIFJFU1BFQ1QgTlVMTFMgT1ZFUiB3MiwKKyAgICAgICBsYXN0X3ZhbHVlKG9y Yml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3MgorRlJPTSBwbGFuZXRzCitXSU5ET1cgdzEgQVMgKE9S REVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpLAorICAgICAgIHcyIEFTIChPUkRFUiBCWSBuYW1lIFJPV1MgQkVUV0VFTiAy IFBSRUNFRElORyBBTkQgMiBGT0xMT1dJTkcpCis7CisgIG5hbWUgICB8IG9yYml0IHwgbGFzdF92 YWx1ZSB8IGxhc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIGVhcnRoICAgfCAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgMjI0IHwgICAgICAgICAg ICB8ICAgICAgIDQzMzIKKyBqdXBpdGVyIHwgIDQzMzIgfCAgICAgICAgICAgIHwgICAgICAgIDIy NCB8ICAgICAgICAgODggfCAgICAgICAgIDg4CisgbWFycyAgICB8ICAgICAgIHwgICAgICAgICAg ICB8ICAgICAgICAyMjQgfCAgICAgIDYwMTgyIHwgICAgICA2MDE4MgorIG1lcmN1cnkgfCAgICA4 OCB8ICAgICAgICAgICAgfCAgICAgICAgMjI0IHwgICAgICA5MDU2MCB8ICAgICAgOTA1NjAKKyBu ZXB0dW5lIHwgNjAxODIgfCAgICAgICAgICAgIHwgICAgICAgIDIyNCB8ICAgICAgMjQ0OTEgfCAg ICAgIDI0NDkxCisgcGx1dG8gICB8IDkwNTYwIHwgICAgICAgICAgICB8ICAgICAgICAyMjQgfCAg ICAgICAgICAgIHwgICAgICAyNDQ5MQorIHNhdHVybiAgfCAyNDQ5MSB8ICAgICAgICAgICAgfCAg ICAgICAgMjI0IHwgICAgICAgIDIyNCB8ICAgICAgICAyMjQKKyB1cmFudXMgIHwgICAgICAgfCAg ICAgICAgICAgIHwgICAgICAgIDIyNCB8ICAgICAgICAgICAgfCAgICAgICAgMjI0CisgdmVudXMg ICB8ICAgMjI0IHwgICAgICAgICAgICB8ICAgICAgICAyMjQgfCAgICAgICAgICAgIHwgICAgICAg IDIyNAorIHh5enp5ICAgfCAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgMjI0IHwgICAgICAg ICAgICB8ICAgICAgICAyMjQKKygxMCByb3dzKQorCistLSBleGNsdWRlIGN1cnJlbnQgcm93CitT RUxFQ1QgbmFtZSwKKyAgICAgICBvcmJpdCwKKyAgICAgICBmaXJzdF92YWx1ZShvcmJpdCkgSUdO T1JFIE5VTExTIE9WRVIgdywKKyAgICAgICBsYXN0X3ZhbHVlKG9yYml0KSBJR05PUkUgTlVMTFMg T1ZFUiB3LAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgSUdOT1JFIE5VTExTIE9WRVIgdywK KyAgICAgICBsZWFkKG9yYml0LCAxKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxlYWRfaWdub3Jl LAorICAgICAgIGxhZyhvcmJpdCwgMSkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsYWdfaWdub3Jl CitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBuYW1lIFJPV1MgQkVUV0VFTiAy IFBSRUNFRElORyBBTkQgMiBGT0xMT1dJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykKKzsKKyAgbmFt ZSAgIHwgb3JiaXQgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBudGhfdmFsdWUgfCBsZWFk X2lnbm9yZSB8IGxhZ19pZ25vcmUgCistLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGVhcnRo ICAgfCAgICAgICB8ICAgICAgICA0MzMyIHwgICAgICAgNDMzMiB8ICAgICAgICAgICB8ICAgICAg ICA0MzMyIHwgICAgICAgICAgIAorIGp1cGl0ZXIgfCAgNDMzMiB8ICAgICAgICAgIDg4IHwgICAg ICAgICA4OCB8ICAgICAgICAgICB8ICAgICAgICAgIDg4IHwgICAgICAgICAgIAorIG1hcnMgICAg fCAgICAgICB8ICAgICAgICA0MzMyIHwgICAgICA2MDE4MiB8ICAgICAgICA4OCB8ICAgICAgICAg IDg4IHwgICAgICAgNDMzMgorIG1lcmN1cnkgfCAgICA4OCB8ICAgICAgICA0MzMyIHwgICAgICA5 MDU2MCB8ICAgICA2MDE4MiB8ICAgICAgIDYwMTgyIHwgICAgICAgNDMzMgorIG5lcHR1bmUgfCA2 MDE4MiB8ICAgICAgICAgIDg4IHwgICAgICAyNDQ5MSB8ICAgICA5MDU2MCB8ICAgICAgIDkwNTYw IHwgICAgICAgICA4OAorIHBsdXRvICAgfCA5MDU2MCB8ICAgICAgICAgIDg4IHwgICAgICAyNDQ5 MSB8ICAgICA2MDE4MiB8ICAgICAgIDI0NDkxIHwgICAgICA2MDE4MgorIHNhdHVybiAgfCAyNDQ5 MSB8ICAgICAgIDYwMTgyIHwgICAgICAgIDIyNCB8ICAgICA5MDU2MCB8ICAgICAgICAgMjI0IHwg ICAgICA5MDU2MAorIHVyYW51cyAgfCAgICAgICB8ICAgICAgIDkwNTYwIHwgICAgICAgIDIyNCB8 ICAgICAyNDQ5MSB8ICAgICAgICAgMjI0IHwgICAgICAyNDQ5MQorIHZlbnVzICAgfCAgIDIyNCB8 ICAgICAgIDI0NDkxIHwgICAgICAyNDQ5MSB8ICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAg ICAyNDQ5MQorIHh5enp5ICAgfCAgICAgICB8ICAgICAgICAgMjI0IHwgICAgICAgIDIyNCB8ICAg ICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgIDIyNAorKDEwIHJvd3MpCisKKy0tIHZhbGlk IGFuZCBpbnZhbGlkIGZ1bmN0aW9ucworU0VMRUNUIHN1bShvcmJpdCkgT1ZFUiAoKSBGUk9NIHBs YW5ldHM7IC0tIHN1Y2NlZWRzCisgIHN1bSAgIAorLS0tLS0tLS0KKyAxNzk4NzcKKyAxNzk4NzcK KyAxNzk4NzcKKyAxNzk4NzcKKyAxNzk4NzcKKyAxNzk4NzcKKyAxNzk4NzcKKyAxNzk4NzcKKyAx Nzk4NzcKKyAxNzk4NzcKKygxMCByb3dzKQorCitTRUxFQ1Qgc3VtKG9yYml0KSBSRVNQRUNUIE5V TExTIE9WRVIgKCkgRlJPTSBwbGFuZXRzOyAtLSBmYWlscworRVJST1I6ICBhZ2dyZWdhdGUgZnVu Y3Rpb25zIGRvIG5vdCBhY2NlcHQgUkVTUEVDVC9JR05PUkUgTlVMTFMKK0xJTkUgMTogU0VMRUNU IHN1bShvcmJpdCkgUkVTUEVDVCBOVUxMUyBPVkVSICgpIEZST00gcGxhbmV0czsKKyAgICAgICAg ICAgICAgIF4KK1NFTEVDVCBzdW0ob3JiaXQpIElHTk9SRSBOVUxMUyBPVkVSICgpIEZST00gcGxh bmV0czsgLS0gZmFpbHMKK0VSUk9SOiAgYWdncmVnYXRlIGZ1bmN0aW9ucyBkbyBub3QgYWNjZXB0 IFJFU1BFQ1QvSUdOT1JFIE5VTExTCitMSU5FIDE6IFNFTEVDVCBzdW0ob3JiaXQpIElHTk9SRSBO VUxMUyBPVkVSICgpIEZST00gcGxhbmV0czsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCByb3df bnVtYmVyKCkgT1ZFUiAoKSBGUk9NIHBsYW5ldHM7IC0tIHN1Y2NlZWRzCisgcm93X251bWJlciAK Ky0tLS0tLS0tLS0tLQorICAgICAgICAgIDEKKyAgICAgICAgICAyCisgICAgICAgICAgMworICAg ICAgICAgIDQKKyAgICAgICAgICA1CisgICAgICAgICAgNgorICAgICAgICAgIDcKKyAgICAgICAg ICA4CisgICAgICAgICAgOQorICAgICAgICAgMTAKKygxMCByb3dzKQorCitTRUxFQ1Qgcm93X251 bWJlcigpIFJFU1BFQ1QgTlVMTFMgT1ZFUiAoKSBGUk9NIHBsYW5ldHM7IC0tIGZhaWxzCitFUlJP UjogIGZ1bmN0aW9uIHJvd19udW1iZXIgZG9lcyBub3QgYWxsb3cgUkVTUEVDVC9JR05PUkUgTlVM TFMKK1NFTEVDVCByb3dfbnVtYmVyKCkgSUdOT1JFIE5VTExTIE9WRVIgKCkgRlJPTSBwbGFuZXRz OyAtLSBmYWlscworRVJST1I6ICBmdW5jdGlvbiByb3dfbnVtYmVyIGRvZXMgbm90IGFsbG93IFJF U1BFQ1QvSUdOT1JFIE5VTExTCistLSB0ZXN0IHR3byBjb25zZWN1dGl2ZSBudWxscwordXBkYXRl IHBsYW5ldHMgc2V0IG9yYml0PW51bGwgd2hlcmUgbmFtZT0nanVwaXRlcic7CitTRUxFQ1QgbmFt ZSwKKyAgICAgICBvcmJpdCwKKyAgICAgICBmaXJzdF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExT IE9WRVIgdywKKyAgICAgICBsYXN0X3ZhbHVlKG9yYml0KSBJR05PUkUgTlVMTFMgT1ZFUiB3LAor ICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgSUdOT1JFIE5VTExTIE9WRVIgdywKKyAgICAgICBs ZWFkKG9yYml0LCAxKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxlYWRfaWdub3JlLAorICAgICAg IGxhZyhvcmJpdCwgMSkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsYWdfaWdub3JlCitGUk9NIHBs YW5ldHMKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBuYW1lIFJPV1MgQkVUV0VFTiAyIFBSRUNFRElO RyBBTkQgMiBGT0xMT1dJTkcpCis7CisgIG5hbWUgICB8IG9yYml0IHwgZmlyc3RfdmFsdWUgfCBs YXN0X3ZhbHVlIHwgbnRoX3ZhbHVlIHwgbGVhZF9pZ25vcmUgfCBsYWdfaWdub3JlIAorLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBlYXJ0aCAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICA4OCB8ICAgICAgICAgICAKKyBqdXBpdGVy IHwgICAgICAgfCAgICAgICAgICA4OCB8ICAgICAgICAgODggfCAgICAgICAgICAgfCAgICAgICAg ICA4OCB8ICAgICAgICAgICAKKyBtYXJzICAgIHwgICAgICAgfCAgICAgICAgICA4OCB8ICAgICAg NjAxODIgfCAgICAgNjAxODIgfCAgICAgICAgICA4OCB8ICAgICAgICAgICAKKyBtZXJjdXJ5IHwg ICAgODggfCAgICAgICAgICA4OCB8ICAgICAgOTA1NjAgfCAgICAgNjAxODIgfCAgICAgICA2MDE4 MiB8ICAgICAgICAgICAKKyBuZXB0dW5lIHwgNjAxODIgfCAgICAgICAgICA4OCB8ICAgICAgMjQ0 OTEgfCAgICAgNjAxODIgfCAgICAgICA5MDU2MCB8ICAgICAgICAgODgKKyBwbHV0byAgIHwgOTA1 NjAgfCAgICAgICAgICA4OCB8ICAgICAgMjQ0OTEgfCAgICAgNjAxODIgfCAgICAgICAyNDQ5MSB8 ICAgICAgNjAxODIKKyBzYXR1cm4gIHwgMjQ0OTEgfCAgICAgICA2MDE4MiB8ICAgICAgICAyMjQg fCAgICAgOTA1NjAgfCAgICAgICAgIDIyNCB8ICAgICAgOTA1NjAKKyB1cmFudXMgIHwgICAgICAg fCAgICAgICA5MDU2MCB8ICAgICAgICAyMjQgfCAgICAgMjQ0OTEgfCAgICAgICAgIDIyNCB8ICAg ICAgMjQ0OTEKKyB2ZW51cyAgIHwgICAyMjQgfCAgICAgICAyNDQ5MSB8ICAgICAgICAyMjQgfCAg ICAgICAyMjQgfCAgICAgICAgICAgICB8ICAgICAgMjQ0OTEKKyB4eXp6eSAgIHwgICAgICAgfCAg ICAgICAgIDIyNCB8ICAgICAgICAyMjQgfCAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAg ICAyMjQKKygxMCByb3dzKQorCistLSB0ZXN0IHBhcnRpdGlvbnMKK1NFTEVDVCBuYW1lLAorICAg ICAgIGRpc3RhbmNlLAorICAgICAgIG9yYml0LAorICAgICAgIGZpcnN0X3ZhbHVlKG9yYml0KSBJ R05PUkUgTlVMTFMgT1ZFUiB3LAorICAgICAgIGxhc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxM UyBPVkVSIHcsCisgICAgICAgbnRoX3ZhbHVlKG9yYml0LCAyKSBJR05PUkUgTlVMTFMgT1ZFUiB3 LAorICAgICAgIGxlYWQob3JiaXQsIDEpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbGVhZF9pZ25v cmUsCisgICAgICAgbGFnKG9yYml0LCAxKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxhZ19pZ25v cmUKK0ZST00gcGxhbmV0cworV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBkaXN0YW5jZSBPUkRF UiBCWSBuYW1lIFJPV1MgQkVUV0VFTiAyIFBSRUNFRElORyBBTkQgMiBGT0xMT1dJTkcpCis7Cisg IG5hbWUgICB8IGRpc3RhbmNlIHwgb3JiaXQgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBu dGhfdmFsdWUgfCBsZWFkX2lnbm9yZSB8IGxhZ19pZ25vcmUgCistLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgZWFydGggICB8IGNsb3NlICAgIHwgICAgICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICA4OCB8ICAgICAgICAgICAK KyBqdXBpdGVyIHwgY2xvc2UgICAgfCAgICAgICB8ICAgICAgICAgIDg4IHwgICAgICAgICA4OCB8 ICAgICAgICAgICB8ICAgICAgICAgIDg4IHwgICAgICAgICAgIAorIG1hcnMgICAgfCBjbG9zZSAg ICB8ICAgICAgIHwgICAgICAgICAgODggfCAgICAgICAgMjI0IHwgICAgICAgMjI0IHwgICAgICAg ICAgODggfCAgICAgICAgICAgCisgbWVyY3VyeSB8IGNsb3NlICAgIHwgICAgODggfCAgICAgICAg ICA4OCB8ICAgICAgICAyMjQgfCAgICAgICAyMjQgfCAgICAgICAgIDIyNCB8ICAgICAgICAgICAK KyB2ZW51cyAgIHwgY2xvc2UgICAgfCAgIDIyNCB8ICAgICAgICAgIDg4IHwgICAgICAgIDIyNCB8 ICAgICAgIDIyNCB8ICAgICAgICAgICAgIHwgICAgICAgICA4OAorIG5lcHR1bmUgfCBmYXIgICAg ICB8IDYwMTgyIHwgICAgICAgNjAxODIgfCAgICAgIDI0NDkxIHwgICAgIDkwNTYwIHwgICAgICAg OTA1NjAgfCAgICAgICAgICAgCisgcGx1dG8gICB8IGZhciAgICAgIHwgOTA1NjAgfCAgICAgICA2 MDE4MiB8ICAgICAgMjQ0OTEgfCAgICAgOTA1NjAgfCAgICAgICAyNDQ5MSB8ICAgICAgNjAxODIK KyBzYXR1cm4gIHwgZmFyICAgICAgfCAyNDQ5MSB8ICAgICAgIDYwMTgyIHwgICAgICAyNDQ5MSB8 ICAgICA5MDU2MCB8ICAgICAgICAgICAgIHwgICAgICA5MDU2MAorIHVyYW51cyAgfCBmYXIgICAg ICB8ICAgICAgIHwgICAgICAgOTA1NjAgfCAgICAgIDI0NDkxIHwgICAgIDI0NDkxIHwgICAgICAg ICAgICAgfCAgICAgIDI0NDkxCisgeHl6enkgICB8IGZhciAgICAgIHwgICAgICAgfCAgICAgICAy NDQ5MSB8ICAgICAgMjQ0OTEgfCAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgMjQ0OTEK KygxMCByb3dzKQorCistLSBudGhfdmFsdWUgd2l0aG91dCBudWxscworU0VMRUNUIHgsCisgICAg ICAgbnRoX3ZhbHVlKHgsMikgSUdOT1JFIE5VTExTIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSw1KSBnKHgpCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgeCBST1dTIEJFVFdFRU4gMiBQUkVD RURJTkcgQU5EIDIgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpOworIHggfCBudGhfdmFs dWUgCistLS0rLS0tLS0tLS0tLS0KKyAxIHwgICAgICAgICAzCisgMiB8ICAgICAgICAgMworIDMg fCAgICAgICAgIDIKKyA0IHwgICAgICAgICAzCisgNSB8ICAgICAgICAgNAorKDUgcm93cykKKwor U0VMRUNUIHgsCisgICAgICAgbnRoX3ZhbHVlKHgsMikgSUdOT1JFIE5VTExTIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBnKHgpCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgeCBST1dT IEJFVFdFRU4gMiBQUkVDRURJTkcgQU5EIDIgRk9MTE9XSU5HKTsKKyB4IHwgbnRoX3ZhbHVlIAor LS0tKy0tLS0tLS0tLS0tCisgMSB8ICAgICAgICAgMgorIDIgfCAgICAgICAgIDIKKyAzIHwgICAg ICAgICAyCisgNCB8ICAgICAgICAgMworIDUgfCAgICAgICAgIDQKKyg1IHJvd3MpCisKKy0tY2xl YW51cAorRFJPUCBUQUJMRSBwbGFuZXRzIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVz IHRvIHZpZXcgcGxhbmV0c192aWV3CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93 aW5kb3cuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2luZG93LnNxbAppbmRleCAwMmYxMDVm MDcwZS4uMWY4Yzg2Njk0MzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpbmRv dy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2luZG93LnNxbApAQCAtMTk1OCwzICsx OTU4LDE1MCBAQCAkJCBMQU5HVUFHRSBTUUwgU1RBQkxFOwogCiBFWFBMQUlOIChjb3N0cyBvZmYp IFNFTEVDVCAqIEZST00gcGdfdGVtcC5mKDIpOwogU0VMRUNUICogRlJPTSBwZ190ZW1wLmYoMik7 CisKKy0tIElHTk9SRSBOVUxMUyB0ZXN0cworCitDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHBsYW5l dHMgKAorICAgIG5hbWUgdGV4dCwKKyAgICBkaXN0YW5jZSB0ZXh0LAorICAgIG9yYml0IGludGVn ZXIKKyk7CisKK0lOU0VSVCBJTlRPIHBsYW5ldHMgVkFMVUVTCisgICgnbWVyY3VyeScsICdjbG9z ZScsIDg4KSwKKyAgKCd2ZW51cycsICdjbG9zZScsIDIyNCksCisgICgnZWFydGgnLCAnY2xvc2Un LCBOVUxMKSwKKyAgKCdtYXJzJywgJ2Nsb3NlJywgTlVMTCksCisgICgnanVwaXRlcicsICdjbG9z ZScsIDQzMzIpLAorICAoJ3NhdHVybicsICdmYXInLCAyNDQ5MSksCisgICgndXJhbnVzJywgJ2Zh cicsIE5VTEwpLAorICAoJ25lcHR1bmUnLCAnZmFyJywgNjAxODIpLAorICAoJ3BsdXRvJywgJ2Zh cicsIDkwNTYwKSwKKyAgKCd4eXp6eScsICdmYXInLCBOVUxMKTsKKworLS0gdGVzdCBydWxldXRp bHMKK0NSRUFURSBWSUVXIHBsYW5ldHNfdmlldyBBUworU0VMRUNUIG5hbWUsCisgICAgICAgb3Ji aXQsCisgICAgICAgbGFnKG9yYml0KSBPVkVSIHcgQVMgbGFnLAorICAgICAgIGxhZyhvcmJpdCkg UkVTUEVDVCBOVUxMUyBPVkVSIHcgQVMgbGFnX3Jlc3BlY3QsCisgICAgICAgbGFnKG9yYml0KSBJ R05PUkUgTlVMTFMgT1ZFUiB3IEFTIGxhZ19pZ25vcmUKK0ZST00gcGxhbmV0cworV0lORE9XIHcg QVMgKE9SREVSIEJZIG5hbWUpCis7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3BsYW5ldHNfdmll dycpOworCistLSBsYWcKK1NFTEVDVCBuYW1lLAorICAgICAgIG9yYml0LAorICAgICAgIGxhZyhv cmJpdCkgT1ZFUiB3IEFTIGxhZywKKyAgICAgICBsYWcob3JiaXQpIFJFU1BFQ1QgTlVMTFMgT1ZF UiB3IEFTIGxhZ19yZXNwZWN0LAorICAgICAgIGxhZyhvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIg dyBBUyBsYWdfaWdub3JlCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBuYW1l KQorOworCistLSBsZWFkCitTRUxFQ1QgbmFtZSwKKyAgICAgICBvcmJpdCwKKyAgICAgICBsZWFk KG9yYml0KSBPVkVSIHcgQVMgbGVhZCwKKyAgICAgICBsZWFkKG9yYml0KSBSRVNQRUNUIE5VTExT IE9WRVIgdyBBUyBsZWFkX3Jlc3BlY3QsCisgICAgICAgbGVhZChvcmJpdCkgSUdOT1JFIE5VTExT IE9WRVIgdyBBUyBsZWFkX2lnbm9yZQorRlJPTSBwbGFuZXRzCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgbmFtZSkKKzsKKworLS0gZmlyc3RfdmFsdWUKK1NFTEVDVCBuYW1lLAorICAgICAgIG9yYml0 LAorICAgICAgIGZpcnN0X3ZhbHVlKG9yYml0KSBSRVNQRUNUIE5VTExTIE9WRVIgdzEsCisgICAg ICAgZmlyc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxMUyBPVkVSIHcxLAorICAgICAgIGZpcnN0 X3ZhbHVlKG9yYml0KSBSRVNQRUNUIE5VTExTIE9WRVIgdzIsCisgICAgICAgZmlyc3RfdmFsdWUo b3JiaXQpIElHTk9SRSBOVUxMUyBPVkVSIHcyCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3MSBBUyAo T1JERVIgQlkgbmFtZSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyksCisgICAgICAgdzIgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVO IDIgUFJFQ0VESU5HIEFORCAyIEZPTExPV0lORykKKzsKKworLS0gbnRoX3ZhbHVlCitTRUxFQ1Qg bmFtZSwKKyAgICAgICBvcmJpdCwKKyAgICAgICBudGhfdmFsdWUob3JiaXQsIDIpIFJFU1BFQ1Qg TlVMTFMgT1ZFUiB3MSwKKyAgICAgICBudGhfdmFsdWUob3JiaXQsIDIpIElHTk9SRSBOVUxMUyBP VkVSIHcxLAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgUkVTUEVDVCBOVUxMUyBPVkVSIHcy LAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgSUdOT1JFIE5VTExTIE9WRVIgdzIKK0ZST00g cGxhbmV0cworV0lORE9XIHcxIEFTIChPUkRFUiBCWSBuYW1lIFJPV1MgQkVUV0VFTiBVTkJPVU5E RUQgUFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSwKKyAgICAgICB3MiBBUyAoT1JE RVIgQlkgbmFtZSBST1dTIEJFVFdFRU4gMiBQUkVDRURJTkcgQU5EIDIgRk9MTE9XSU5HKQorOwor CistLSBsYXN0X3ZhbHVlCitTRUxFQ1QgbmFtZSwKKyAgICAgICBvcmJpdCwKKyAgICAgICBsYXN0 X3ZhbHVlKG9yYml0KSBSRVNQRUNUIE5VTExTIE9WRVIgdzEsCisgICAgICAgbGFzdF92YWx1ZShv cmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdzEsCisgICAgICAgbGFzdF92YWx1ZShvcmJpdCkgUkVT UEVDVCBOVUxMUyBPVkVSIHcyLAorICAgICAgIGxhc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxM UyBPVkVSIHcyCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgbmFtZSBST1dT IEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyksCisg ICAgICAgdzIgQVMgKE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIDIgUFJFQ0VESU5HIEFORCAy IEZPTExPV0lORykKKzsKKworLS0gZXhjbHVkZSBjdXJyZW50IHJvdworU0VMRUNUIG5hbWUsCisg ICAgICAgb3JiaXQsCisgICAgICAgZmlyc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxMUyBPVkVS IHcsCisgICAgICAgbGFzdF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyAgICAg ICBudGhfdmFsdWUob3JiaXQsIDIpIElHTk9SRSBOVUxMUyBPVkVSIHcsCisgICAgICAgbGVhZChv cmJpdCwgMSkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsZWFkX2lnbm9yZSwKKyAgICAgICBsYWco b3JiaXQsIDEpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbGFnX2lnbm9yZQorRlJPTSBwbGFuZXRz CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgbmFtZSBST1dTIEJFVFdFRU4gMiBQUkVDRURJTkcgQU5E IDIgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpCis7CisKKy0tIHZhbGlkIGFuZCBpbnZh bGlkIGZ1bmN0aW9ucworU0VMRUNUIHN1bShvcmJpdCkgT1ZFUiAoKSBGUk9NIHBsYW5ldHM7IC0t IHN1Y2NlZWRzCitTRUxFQ1Qgc3VtKG9yYml0KSBSRVNQRUNUIE5VTExTIE9WRVIgKCkgRlJPTSBw bGFuZXRzOyAtLSBmYWlscworU0VMRUNUIHN1bShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgKCkg RlJPTSBwbGFuZXRzOyAtLSBmYWlscworU0VMRUNUIHJvd19udW1iZXIoKSBPVkVSICgpIEZST00g cGxhbmV0czsgLS0gc3VjY2VlZHMKK1NFTEVDVCByb3dfbnVtYmVyKCkgUkVTUEVDVCBOVUxMUyBP VkVSICgpIEZST00gcGxhbmV0czsgLS0gZmFpbHMKK1NFTEVDVCByb3dfbnVtYmVyKCkgSUdOT1JF IE5VTExTIE9WRVIgKCkgRlJPTSBwbGFuZXRzOyAtLSBmYWlscworCistLSB0ZXN0IHR3byBjb25z ZWN1dGl2ZSBudWxscwordXBkYXRlIHBsYW5ldHMgc2V0IG9yYml0PW51bGwgd2hlcmUgbmFtZT0n anVwaXRlcic7CitTRUxFQ1QgbmFtZSwKKyAgICAgICBvcmJpdCwKKyAgICAgICBmaXJzdF92YWx1 ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyAgICAgICBsYXN0X3ZhbHVlKG9yYml0KSBJ R05PUkUgTlVMTFMgT1ZFUiB3LAorICAgICAgIG50aF92YWx1ZShvcmJpdCwgMikgSUdOT1JFIE5V TExTIE9WRVIgdywKKyAgICAgICBsZWFkKG9yYml0LCAxKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFT IGxlYWRfaWdub3JlLAorICAgICAgIGxhZyhvcmJpdCwgMSkgSUdOT1JFIE5VTExTIE9WRVIgdyBB UyBsYWdfaWdub3JlCitGUk9NIHBsYW5ldHMKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBuYW1lIFJP V1MgQkVUV0VFTiAyIFBSRUNFRElORyBBTkQgMiBGT0xMT1dJTkcpCis7CisKKy0tIHRlc3QgcGFy dGl0aW9ucworU0VMRUNUIG5hbWUsCisgICAgICAgZGlzdGFuY2UsCisgICAgICAgb3JiaXQsCisg ICAgICAgZmlyc3RfdmFsdWUob3JiaXQpIElHTk9SRSBOVUxMUyBPVkVSIHcsCisgICAgICAgbGFz dF92YWx1ZShvcmJpdCkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyAgICAgICBudGhfdmFsdWUob3Ji aXQsIDIpIElHTk9SRSBOVUxMUyBPVkVSIHcsCisgICAgICAgbGVhZChvcmJpdCwgMSkgSUdOT1JF IE5VTExTIE9WRVIgdyBBUyBsZWFkX2lnbm9yZSwKKyAgICAgICBsYWcob3JiaXQsIDEpIElHTk9S RSBOVUxMUyBPVkVSIHcgQVMgbGFnX2lnbm9yZQorRlJPTSBwbGFuZXRzCitXSU5ET1cgdyBBUyAo UEFSVElUSU9OIEJZIGRpc3RhbmNlIE9SREVSIEJZIG5hbWUgUk9XUyBCRVRXRUVOIDIgUFJFQ0VE SU5HIEFORCAyIEZPTExPV0lORykKKzsKKworLS0gbnRoX3ZhbHVlIHdpdGhvdXQgbnVsbHMKK1NF TEVDVCB4LAorICAgICAgIG50aF92YWx1ZSh4LDIpIElHTk9SRSBOVUxMUyBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsNSkgZyh4KQorV0lORE9XIHcgQVMgKE9SREVSIEJZIHggUk9XUyBC RVRXRUVOIDIgUFJFQ0VESU5HIEFORCAyIEZPTExPV0lORyBFWENMVURFIENVUlJFTlQgUk9XKTsK K1NFTEVDVCB4LAorICAgICAgIG50aF92YWx1ZSh4LDIpIElHTk9SRSBOVUxMUyBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgZyh4KQorV0lORE9XIHcgQVMgKE9SREVSIEJZIHggUk9X UyBCRVRXRUVOIDIgUFJFQ0VESU5HIEFORCAyIEZPTExPV0lORyk7CisKKy0tY2xlYW51cAorRFJP UCBUQUJMRSBwbGFuZXRzIENBU0NBREU7Ci0tIAoyLjQzLjAKCg== --000000000000eda7bc0630348e67--