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 1tdIux-006EcK-Qp for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Jan 2025 01:00:29 +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 1tdIuv-009UTo-IH for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Jan 2025 01:00:25 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tdIut-009UTg-W1 for pgsql-hackers@lists.postgresql.org; Thu, 30 Jan 2025 01:00:24 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tdIuo-002CbP-2z for pgsql-hackers@postgresql.org; Thu, 30 Jan 2025 01:00:22 +0000 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-5d3bdccba49so347658a12.1 for ; Wed, 29 Jan 2025 17:00:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738198818; x=1738803618; 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=Zd7lcwJpAOuhY2eeHb+toLJMIIzEJvQD9AnhvbLf6mU=; b=MQWXJY8TdwO6Iukz2Zh/gx150lF5ii4RpzMFpaCFnJNer9XEBp7dJnFIK/slIPUWn9 BD/f6u3oCczuWWqXGzHHskhwC76xs2cc0lMouSg7vb94871PWqnklL7fouoWMBKhCbUH enB4wm88nnx0LkAD5Fiq9gJ1EzxtdLjlmoHRpaqxbsQdfgeRe42byY2nr+k1KtMg0shh VM8g7faWzgjIHjl9UcfWxuymEieQ1eQZM2N1906DvsKYGZR6AlAa/wG5GD+13S2npoE7 kvXxmjuDDmUYZTW9Vj5k/q0WrIFD4HoJmaQxI+PMwBvfIetwNbIl+ElW3tWgFaWxMW97 lHGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738198818; x=1738803618; 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=Zd7lcwJpAOuhY2eeHb+toLJMIIzEJvQD9AnhvbLf6mU=; b=UtM+jZOxsLd83NVTvjyxSaGkzT31LcIdDP/HY2YpnweoU87imHqD+6c18Qoote2uaF va2V2rjo4VF0phrIMMuM7JZ4GPbdz5d8v6177/uxKt2bEI2LLJHHwbWQ9ciyriovdFMw s4cXrS8hRyzCFbUBgG7YpiSN6FNzBngusmUnjxatmkE2QeANTxTzJidmBIsEI7sr7ITL We8fatL//QK1LWSbiMgy40f+J1rf0GtxAZq7JM9jHu0/I0ymmI/GGMBEI4XM31l9glkm zFyvlBmG9bfcLISZa15aaylcsiAfizl4Ob6+rrW5gnQbXO1MnaGJnzzcuUYWOXUxBtab 3RHQ== X-Forwarded-Encrypted: i=1; AJvYcCX0/1qf4gdus2l3mwxcV12NHXDTbvfCPUAtSK3VzFojFef6qxm8A4JRpBZDWsiIqYirs/Z5NY+cPCWitWR+@postgresql.org X-Gm-Message-State: AOJu0YxaDxqIC200lpiLgD4NEWR/evLJXjWlv2jF9OJC43H0dpdMLgDB JnA1oH4xTPvw4hlwyQUV1H+G340mVy+wM8kfKTCDEBTER8I0E4daCYz3mProdW4UN9YpAIzXE0G +G0tAQgOtrktLHkAUAZivOkAH+TUOjxxN4Kg= X-Gm-Gg: ASbGnctr88vv0Zj0IO9JWlBaqI65POSjls/LToARIUaGapJiK+11FAcDTw446kEy0+m wjtQnSO0JItLE+CUGm3pCYpYafMqgS1aRORCy87IUPhU7HPaWpGy+fycNr7Pja0QsVcvBAtpI X-Google-Smtp-Source: AGHT+IFxhW45JXgzHxzE8zHmDL7lSknpE8AkhYkooPyGaQkh1mx+WMo9Ewp923nuzlhkaB/Xa9ew6FMkIKT3bbU4xLI= X-Received: by 2002:a05:6402:3511:b0:5dc:5c18:6c7 with SMTP id 4fb4d7f45d1cf-5dc5efa8f1emr5233647a12.5.1738198817197; Wed, 29 Jan 2025 17:00:17 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Michail Nikolaev Date: Thu, 30 Jan 2025 02:00:00 +0100 X-Gm-Features: AWEUYZldSG6ut7eVWP5LYp2gbmMB3GkWPZAtjE7mHsWkQu4cIuM4MJ57RcERNGI Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Matthias van de Meent Cc: Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman Content-Type: multipart/mixed; boundary="0000000000000cac62062ce1f3d0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000cac62062ce1f3d0 Content-Type: multipart/alternative; boundary="0000000000000cac61062ce1f3ce" --0000000000000cac61062ce1f3ce Content-Type: text/plain; charset="UTF-8" Hello, everyone! > It was a wrong assumption. It looks like it is happening because of prefetching. I'll try to add it in the validation phase. This is an updated patch set, now prefetching is implemented. Not validation works that way: 1) TIDs which are present in STIR auxiliary index but not present in target index are loaded into tuplestore in sorted way 2) Then tuples from tuplestore are fetched one by one, but with underlying prefetching of corresponding pages Benchmark setups are the same as in [0]. Results show it works really well (see attachments). I was unable to achieve consistent results for a few tests on the AWS (io2) environment (and it was costly :) ) So, my next plan is: 1) wait a little bit for some comments from someone who still watches that 1-year going mainly solo thread :) 2) prepare a fresh new letter with patches, explanation, benchmark results and so on. Best regards, Mikhail. [0]: https://www.postgresql.org/message-id/flat/CANtu0ojHAputNCH73TEYN_RUtjLGYsEyW1aSXmsXyvwf%3D3U4qQ%40mail.gmail.com#b18fb8efab086bc22af1cb015e187cb7 > --0000000000000cac61062ce1f3ce Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, everyone!

> It was= a=C2=A0wrong assumption. It looks=C2=A0like it is happening because of pre= fetching. I'll try to add it in the=C2=A0validation phase.
Th= is is an updated patch set, now prefetching is implemented.

<= /div>
Not validation works that way:
1) TIDs which are presen= t in STIR auxiliary index but not present in target index are loaded into t= uplestore in sorted way
2) Then tuples from tuplestore are fetche= d one by one, but with underlying prefetching of corresponding pages
<= div>
Benchmark setups are the same as in [0].
Resul= ts show it works really well (see attachments).
I was unable to a= chieve=C2=A0consistent results for a few tests on the AWS (io2) environment= (and it was costly=C2=A0:) )

So, my next plan is:=
1) wait a little bit for some comments from someone who still wa= tches that 1-year going mainly solo thread :)
2) prepare a fresh= =C2=A0new letter with patches, explanation, benchmark results and so on.

Best regards,
Mikhail.
--0000000000000cac61062ce1f3ce-- --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0001-Add-stress-tests-for-concurrent-index-operations.patch" Content-Disposition: attachment; filename="v13-0001-Add-stress-tests-for-concurrent-index-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauns0 RnJvbSA2NjU5YmQyOTFiNTQxMmRlNjJlY2RhZTc2ZDhjYWMzMGYwZjg0ODdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDAx LzExXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMKCkFk ZCBjb21wcmVoZW5zaXZlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zLCBmb2N1c2luZyBvbjoKKiBUZXN0aW5nIENSRUFURS9SRUlOREVYL0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIHVuZGVyIGhlYXZ5IHdyaXRlIGxvYWQKKiBWZXJpZnlpbmcgaW5kZXggaW50ZWdy aXR5IGR1cmluZyBjb25jdXJyZW50IEhPVCB1cGRhdGVzCiogVGVzdGluZyB2YXJpb3VzIGluZGV4 IHR5cGVzIGluY2x1ZGluZyB1bmlxdWUgYW5kIHBhcnRpYWwgaW5kZXhlcwoqIFZhbGlkYXRpbmcg aW5kZXggY29ycmVjdG5lc3MgdXNpbmcgYW1jaGVjawoqIEV4ZXJjaXNpbmcgcGFyYWxsZWwgd29y a2VyIGNvbmZpZ3VyYXRpb25zCgpUaGVzZSBzdHJlc3MgdGVzdHMgaGVscCBlbnN1cmUgcmVsaWFi aWxpdHkgb2YgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zCnVuZGVyIGhlYXZ5IGxvYWQgY29u ZGl0aW9ucy4KLS0tCiBzcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQgIHwgICAxICsKIHNy Yy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgfCAxODkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29u LmJ1aWxkCmluZGV4IDMxNmVhMGQ0MGI4Li43ZGYxNTQzNWZiYiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2hlY2sucGwn LAogICAgICAgJ3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwnLAogICAgICAgJ3QvMDA1X29wY2xhc3Nf ZGFtYWdlLnBsJywKKyAgICAgICd0LzAwNl9jaWMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsIGIvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YTk1NTlkYmUzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsCkBAIC0wLDAgKzEsMTg5IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IFJFSU5ERVggQ09OQ1VSUkVOVExZ IHdpdGggY29uY3VycmVudCBtb2RpZmljYXRpb25zIGFuZCBIT1QgdXBkYXRlcwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworVGVzdDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBp ZiBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2Rl LCAkcmVzdWx0KTsKKworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5zdGFydDsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2sp KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50 IHByaW1hcnkga2V5LAorCQkJCQkJCQljMSBtb25leSBkZWZhdWx0IDAsIGMyIG1vbmV5IGRlZmF1 bHQgMCwKKwkJCQkJCQkJYzMgbW9uZXkgZGVmYXVsdCAwLCB1cGRhdGVkX2F0IHRpbWVzdGFtcCwK KwkJCQkJCQkJaWEgaW50NFtdLCBwIHBvaW50KSkpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KTspKTsKKyMgY3JlYXRlIHNlcXVlbmNlCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo Q1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIGluX3Jvd19yZWJ1aWxkIFNUQVJUIDEgSU5DUkVNRU5U IDE7KSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIG5leHR2YWwoJ2lu X3Jvd19yZWJ1aWxkJyk7KSk7CisKKyMgQ3JlYXRlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHByZWRp Y2F0ZSB0ZXN0cworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBGVU5D VElPTiBwcmVkaWNhdGVfc3RhYmxlKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCUxBTkdVQUdF IHBscGdzcWwgQVMgJCQKKwlCRUdJTgorCQlFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCkn OworCQlSRVRVUk4gdHJ1ZTsKKwlFTkQ7ICQkOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX2NvbnN0KGludGVnZXIpIFJF VFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJ UkVUVVJOIE1PRCgkMSwgMikgPSAwOworCUVORDsgJCQ7CispKTsKKworIyBSdW4gQ0lDL1JJQyBp biBkaWZmZXJlbnQgb3B0aW9ucyBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdi ZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0 IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAor CVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFknLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzJyA9PiBxKAorCQkJU0VM RUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJ CQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBs YXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCB2YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQg cGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxU RVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJXGlm IDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0 YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJl ZGljYXRlX3N0YWJsZSgpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDIKKwkJCQkJCUNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIE1PRChp LCAyKSA9IDA7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2Nv bnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4XzIgT04gdGJsKHByZWRpY2F0ZV9jb25zdChpKSk7CisJCQkJCVxlbGlmIDp2 YXJpYW50ID0gNQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0Ymwo aSwgcHJlZGljYXRlX2NvbnN0KGkpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3Qo aSk7CisJCQkJCVxlbmRpZgorCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4 X2NoZWNrKCdpZHhfMicsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRy dWUpOworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQkJXHNsZWVw IDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhl ZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzI7CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0 Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVH SU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAs MCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSww LDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0 ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVt KSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20o KSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAx KTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZv ciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2go CisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRy YW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7 XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRSRUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3Vu aXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRl Z2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFs KCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVs cyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxF IHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yIE9OIHRibChpKTsKKwkJCQkJXHNsZWVwIDEwIG1z CisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9PiB0 cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgaWR4XzI7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2so J2lkeF8yJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJ CQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yOworCQkJCVxlbmRpZgorCQkJCVNFTEVD VCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20o MSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhm bG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8g VVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93 X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgorCQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9y ICBHSU4vR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2Vy dHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpvYnM9NCAt LWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0dWFsbHkg cHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJF SU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQ R0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfaWR4JyA9PiBxKAorCQkJU0VMRUNUIHBnX3Ry eV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdv dGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVl IFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJXGlmIDpsYXN0X3Zh bHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJh bGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDQpCisJCQkJCVxpZiA6dmFyaWFu dCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5H IEdJTiAoaWEpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDEKKwkJCQkJCUNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEdJU1QgKHApOworCQkJCQlcZWxpZiA6dmFy aWFudCA9IDIKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVT SU5HIEJSSU4gKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRf YXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIFNQR0lTVCAocCk7CisJCQkJCVxlbmRpZgorCQkJCQlc c2xlZXAgMTAgbXMKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJ CVxzbGVlcCAxMCBtcworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQlc ZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJ XHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJ TlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9O IENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVD VCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCisk bm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK LS0gCjIuNDMuMAoK --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0005-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Disposition: attachment; filename="v13-0005-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauo44 RnJvbSA1OGM2YzgzYzM1YmI0NDE2MWM0NTAwOTk1YWQ0MTNmY2UwOTM4YjNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDA1 LzExXSBBZGQgU1RJUiAoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzCiBtZXRo b2QKClRoaXMgcGF0Y2ggcHJvdmlkZXMgZm91bmRhdGlvbmFsIGluZnJhc3RydWN0dXJlIGZvciB1 cGNvbWluZyBlbmhhbmNlbWVudHMgdG8KY29uY3VycmVudCBpbmRleCBidWlsZHMgYnkgaW50cm9k dWNpbmc6CgotICoqaWlfQXV4aWxpYXJ5KiogaW4gYEluZGV4SW5mb2A6IEluZGljYXRlcyB0aGF0 IGFuIGluZGV4IGlzIGFuIGF1eGlsaWFyeQogIGluZGV4LCBzcGVjaWZpY2FsbHkgZm9yIHVzZSBk dXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZHMuCi0gKip2YWxpZGF0ZV9pbmRleCoqIGluIGBJ bmRleFZhY3V1bUluZm9gOiBTaWduYWxzIHdoZW4gYSB2YWN1dW0gb3IgY2xlYW51cAogIG9wZXJh dGlvbiBpcyB2YWxpZGF0aW5nIGEgbmV3bHkgYnVpbHQgaW5kZXggKGUuZy4sIGR1cmluZyBjb25j dXJyZW50IGJ1aWxkKS4KCkFkZGl0aW9uYWxseSwgYSBuZXcgKipTVElSIChTaG9ydC1UZXJtIElu ZGV4IFJlcGxhY2VtZW50KSoqIGFjY2VzcyBtZXRob2QgaXMKaW50cm9kdWNlZCwgaW50ZW5kZWQg c29sZWx5IGZvciBzaG9ydC1saXZlZCwgYXV4aWxpYXJ5IHVzYWdlLiBTVElSIGZ1bmN0aW9ucwph cyBhbiBlcGhlbWVyYWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVt cG9yYXJpbHkgc3RvcmluZyBUSURzCndpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVz IG9mIGEgdHlwaWNhbCBpbmRleC4gQXMgc3VjaCwgaXQgcmFpc2VzCndhcm5pbmdzIG9yIGVycm9y cyB3aGVuIGFjY2Vzc2VkIG91dHNpZGUgaXRzIHNwZWNpYWxpemVkIHVzYWdlIHBhdGguCgpUaGVz ZSBjaGFuZ2VzIGxheSBlc3NlbnRpYWwgZ3JvdW5kd29yayBmb3IgZnVydGhlciBpbXByb3ZlbWVu dHMgdG8gY29uY3VycmVudAppbmRleCBidWlsZHMuCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9w Z3N0YXR0dXBsZS5jICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZCAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUgICAgICAgICB8ICAxOCAr CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZCAgICAgIHwgICA1ICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYyAgICAgICAgICAgfCA1NzMgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0 aW9ucy5oICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oICAgICAg ICAgICAgICAgIHwgMTE3ICsrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgICAgICAg fCAgIDQgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQgICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbXV0aWxzLm91dCAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vcHJfc2FuaXR5Lm91dCB8ICAgNyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dCAgICAgICB8ICAyNCArLQogMjMgZmlsZXMgY2hhbmdlZCwgNzc3IGluc2VydGlvbnMoKyks IDE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv bWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9z dGlyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IGZmN2NjMDdkZjk5Li4wMDdlZmM0ZWQwYyAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMjgyLDYgKzI4Miw5IEBAIHBnc3RhdF9yZWxh dGlvbihSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJY2FzZSBTUEdJ U1RfQU1fT0lEOgogCQkJCWVyciA9ICJzcGdpc3QgaW5kZXgiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBTVElSX0FNX09JRDoKKwkJCQllcnIgPSAic3RpciBpbmRleCI7CisJCQkJYnJlYWs7CiAJCQlj YXNlIEJSSU5fQU1fT0lEOgogCQkJCWVyciA9ICJicmluIGluZGV4IjsKIAkJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9NYWtlZmlsZQppbmRleCAxOTMyZDExZDE1NC4uY2Q2NTI0YTU0YWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZp bGUKQEAgLTksNiArOSw2IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMJICAgID0gYnJpbiBjb21t b24gZ2luIGdpc3QgaGFzaCBoZWFwIGluZGV4IG5idHJlZSBybWdyZGVzYyBzcGdpc3QgXAotCQkJ ICBzZXF1ZW5jZSB0YWJsZSB0YWJsZXNhbXBsZSB0cmFuc2FtCisJCQkgIHN0aXIgc2VxdWVuY2Ug dGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMDlm YWIwOGI4ZTEuLmFhZjU1ZDY4OWQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0yNTM4LDYgKzI1MzgsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5k cmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVs ID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZv LnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0g ZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBA IC0yNTg5LDYgKzI1OTAsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJl bCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJ aXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0 cmFjZWJhY2sgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVz b24uYnVpbGQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKaW5kZXggN2EyZDBkZGI2 ODkuLmExNTZjZGRmZjM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVp bGQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBA IHN1YmRpcignbmJ0cmVlJykKIHN1YmRpcigncm1ncmRlc2MnKQogc3ViZGlyKCdzZXF1ZW5jZScp CiBzdWJkaXIoJ3NwZ2lzdCcpCitzdWJkaXIoJ3N0aXInKQogc3ViZGlyKCd0YWJsZScpCiBzdWJk aXIoJ3RhYmxlc2FtcGxlJykKIHN1YmRpcigndHJhbnNhbScpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYWU1ODk4YjhkNwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCkBAIC0w LDAgKzEsMTggQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlLS0KKyMgICAgTWFr ZWZpbGUgZm9yIGFjY2Vzcy9zdGlyCisjCisjIElERU5USUZJQ0FUSU9OCisjICAgIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIg PSBzcmMvYmFja2VuZC9hY2Nlc3Mvc3RpcgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2lu Y2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlz dGlyLm8KKworaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5YzZlY2E4NDhkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKQEAgLTAsMCAr MSw1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorCSdzdGlyLmMnLAorKQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL3N0aXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjg0NGJjYjIxZDcKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKQEAgLTAsMCArMSw1NzMgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHN0aXIuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiBTaG9y dC1UZXJtIEluZGV4IFJlcGxhY2VtZW50LgorICoKKyAqIFNUSVIgaXMgYSBzcGVjaWFsaXplZCBh Y2Nlc3MgbWV0aG9kIHR5cGUgZGVzaWduZWQgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBvZiBU SUQgdmFsdWVzIGR1cmluZyBjb25jdXJlcm50IGluZGV4IGJ1aWxkIG9wZXJhdGlvbnMuCisgKgor ICogVGhlIHR5cGljYWwgbGlmZWN5Y2xlIG9mIGEgU1RJUiBpbmRleCBpczoKKyAqIDEuIGNyZWF0 ZWQgYXMgYW4gYXV4aWxpYXJ5IGluZGV4IGZvciBDSUMvUklDCisgKiAyLiBhY2NlcHRzIGluc2Vy dHMgZm9yIGEgcGVyaW9kCisgKiAzLiBzdGlyYnVsa2RlbGV0ZSBjYWxsZWQgZHVyaW5nIGluZGV4 IHZhbGlkYXRpb24gcGhhc2UKKyAqIDUuIGdldHMgZHJvcHBlZAorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3Mvc3Rpci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUg ImFjY2Vzcy9hbXZhbGlkYXRlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgor I2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFz cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKKyNpbmNsdWRlICJjb21tYW5k cy92YWN1dW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0 aWxzL2luZGV4X3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWdwcm9jLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoK KyAqIFN0aXIgaGFuZGxlciBmdW5jdGlvbjogcmV0dXJuIEluZGV4QW1Sb3V0aW5lIHdpdGggYWNj ZXNzIG1ldGhvZCBwYXJhbWV0ZXJzCisgKiBhbmQgY2FsbGJhY2tzLgorICovCitEYXR1bQorc3Rp cmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlJbmRleEFtUm91dGluZSAqYW1yb3V0aW5l ID0gbWFrZU5vZGUoSW5kZXhBbVJvdXRpbmUpOworCisJLyogU2V0IFNUSVItc3BlY2lmaWMgc3Ry YXRlZ3kgYW5kIHByb2NlZHVyZSBudW1iZXJzICovCisJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMg PSBTVElSX05TVFJBVEVHSUVTOworCWFtcm91dGluZS0+YW1zdXBwb3J0ID0gU1RJUl9OUFJPQzsK KwlhbXJvdXRpbmUtPmFtb3B0c3Byb2NudW0gPSBTVElSX09QVElPTlNfUFJPQzsKKworCS8qIFNU SVIgZG9lc24ndCBzdXBwb3J0IG1vc3QgaW5kZXggb3BlcmF0aW9ucyAqLworCWFtcm91dGluZS0+ YW1jYW5vcmRlciA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtY2FuYmFja3dhcmQgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FudW5p cXVlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1ZTsKKwlhbXJvdXRp bmUtPmFtb3B0aW9uYWxrZXkgPSB0cnVlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IGZh bHNlOworCWFtcm91dGluZS0+YW1zZWFyY2hudWxscyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1z dG9yYWdlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CisJYW1y b3V0aW5lLT5hbXByZWRsb2NrcyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5wYXJhbGxlbCA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5idWlsZHBhcmFsbGVsID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbWNhbmluY2x1ZGUgPSB0cnVlOworCWFtcm91dGluZS0+YW11c2VtYWludGVuYW5jZXdv cmttZW0gPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtcGFyYWxsZWx2YWN1dW1vcHRpb25zID0KKwkJ CVZBQ1VVTV9PUFRJT05fUEFSQUxMRUxfQlVMS0RFTCB8IFZBQ1VVTV9PUFRJT05fUEFSQUxMRUxf Q0xFQU5VUDsKKwlhbXJvdXRpbmUtPmFta2V5dHlwZSA9IEludmFsaWRPaWQ7CisKKwkvKiBTZXQg dXAgZnVuY3Rpb24gY2FsbGJhY2tzICovCisJYW1yb3V0aW5lLT5hbWJ1aWxkID0gc3RpcmJ1aWxk OworCWFtcm91dGluZS0+YW1idWlsZGVtcHR5ID0gc3RpcmJ1aWxkZW1wdHk7CisJYW1yb3V0aW5l LT5hbWluc2VydCA9IHN0aXJpbnNlcnQ7CisJYW1yb3V0aW5lLT5hbWluc2VydGNsZWFudXAgPSBO VUxMOworCWFtcm91dGluZS0+YW1idWxrZGVsZXRlID0gc3RpcmJ1bGtkZWxldGU7CisJYW1yb3V0 aW5lLT5hbXZhY3V1bWNsZWFudXAgPSBzdGlydmFjdXVtY2xlYW51cDsKKwlhbXJvdXRpbmUtPmFt Y2FucmV0dXJuID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtY29zdGVzdGltYXRlID0gc3RpcmNvc3Rl c3RpbWF0ZTsKKwlhbXJvdXRpbmUtPmFtb3B0aW9ucyA9IHN0aXJvcHRpb25zOworCWFtcm91dGlu ZS0+YW1wcm9wZXJ0eSA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWJ1aWxkcGhhc2VuYW1lID0gTlVM TDsKKwlhbXJvdXRpbmUtPmFtdmFsaWRhdGUgPSBzdGlydmFsaWRhdGU7CisJYW1yb3V0aW5lLT5h bWFkanVzdG1lbWJlcnMgPSBOVUxMOworCWFtcm91dGluZS0+YW1iZWdpbnNjYW4gPSBzdGlyYmVn aW5zY2FuOworCWFtcm91dGluZS0+YW1yZXNjYW4gPSBzdGlycmVzY2FuOworCWFtcm91dGluZS0+ YW1nZXR0dXBsZSA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWdldGJpdG1hcCA9IE5VTEw7CisJYW1y b3V0aW5lLT5hbWVuZHNjYW4gPSBzdGlyZW5kc2NhbjsKKwlhbXJvdXRpbmUtPmFtbWFya3BvcyA9 IE5VTEw7CisJYW1yb3V0aW5lLT5hbXJlc3RycG9zID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZXN0 aW1hdGVwYXJhbGxlbHNjYW4gPSBOVUxMOworCWFtcm91dGluZS0+YW1pbml0cGFyYWxsZWxzY2Fu ID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMOworCisJUEdfUkVU VVJOX1BPSU5URVIoYW1yb3V0aW5lKTsKK30KKworLyoKKyAqIFZhbGlkYXRlcyBvcGVyYXRvciBj bGFzcyBmb3IgU1RJUiBpbmRleC4KKyAqCisgKiBTVElSIGlzIG5vdCBhbiByZWFsIGluZGV4LCBz byB2YWxpZGF0aW8gbWF5IGJlIHNraXBwZWQuCisgKiBCdXQgd2UgZG8gaXQganVzdCBmb3IgY29u c2lzdGVuY3kuCisgKi8KK2Jvb2wKK3N0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKK3sKKwli b29sIHJlc3VsdCA9IHRydWU7CisJSGVhcFR1cGxlIGNsYXNzdHVwOworCUZvcm1fcGdfb3BjbGFz cyBjbGFzc2Zvcm07CisJT2lkIG9wZmFtaWx5b2lkOworCUhlYXBUdXBsZSBmYW1pbHl0dXA7CisJ Rm9ybV9wZ19vcGZhbWlseSBmYW1pbHlmb3JtOworCWNoYXIgKm9wZmFtaWx5bmFtZTsKKwlDYXRD TGlzdCAqcHJvY2xpc3QsCisJCQkqb3BybGlzdDsKKwlpbnQgaTsKKworCS8qIEZldGNoIG9wY2xh c3MgaW5mb3JtYXRpb24gKi8KKwljbGFzc3R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9i amVjdElkR2V0RGF0dW0ob3BjbGFzc29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFz c3R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBj bGFzcyAldSIsIG9wY2xhc3NvaWQpOworCWNsYXNzZm9ybSA9IChGb3JtX3BnX29wY2xhc3MpIEdF VFNUUlVDVChjbGFzc3R1cCk7CisKKwlvcGZhbWlseW9pZCA9IGNsYXNzZm9ybS0+b3BjZmFtaWx5 OworCisKKwkvKiBGZXRjaCBvcGZhbWlseSBpbmZvcm1hdGlvbiAqLworCWZhbWlseXR1cCA9IFNl YXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChmYW1pbHl0dXApKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgZmFtaWx5ICV1Iiwgb3BmYW1pbHlvaWQpOwor CWZhbWlseWZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKGZhbWlseXR1cCk7CisK KwlvcGZhbWlseW5hbWUgPSBOYW1lU3RyKGZhbWlseWZvcm0tPm9wZm5hbWUpOworCisJLyogRmV0 Y2ggYWxsIG9wZXJhdG9ycyBhbmQgc3VwcG9ydCBmdW5jdGlvbnMgb2YgdGhlIG9wZmFtaWx5ICov CisJb3BybGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdl dERhdHVtKG9wZmFtaWx5b2lkKSk7CisJcHJvY2xpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFN UFJPQ05VTSwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCisJLyogQ2hlY2sgaW5k aXZpZHVhbCBvcGVyYXRvcnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgb3BybGlzdC0+bl9tZW1iZXJz OyBpKyspCisJeworCQlIZWFwVHVwbGUgb3BydHVwID0gJm9wcmxpc3QtPm1lbWJlcnNbaV0tPnR1 cGxlOworCQlGb3JtX3BnX2Ftb3Agb3ByZm9ybSA9IChGb3JtX3BnX2Ftb3ApIEdFVFNUUlVDVChv cHJ0dXApOworCisJCS8qIENoZWNrIGl0J3MgYWxsb3dlZCBzdHJhdGVneSBmb3Igc3RpciAqLwor CQlpZiAob3ByZm9ybS0+YW1vcHN0cmF0ZWd5IDwgMSB8fAorCQkJb3ByZm9ybS0+YW1vcHN0cmF0 ZWd5ID4gU1RJUl9OU1RSQVRFR0lFUykKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygi c3RpciBvcGZhbWlseSAlcyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIGludmFsaWQgc3RyYXRl Z3kgbnVtYmVyICVkIiwKKwkJCQkJCQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3Jt YXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wciksCisJCQkJCQkJCSAgIG9wcmZvcm0tPmFtb3Bz dHJhdGVneSkpKTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogc3RpciBkb2Vzbid0 IHN1cHBvcnQgT1JERVIgQlkgb3BlcmF0b3JzICovCisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9z ZSAhPSBBTU9QX1NFQVJDSCB8fAorCQkJT2lkSXNWYWxpZChvcHJmb3JtLT5hbW9wc29ydGZhbWls eSkpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29u dGFpbnMgaW52YWxpZCBPUkRFUiBCWSBzcGVjaWZpY2F0aW9uIGZvciBvcGVyYXRvciAlcyIsCisJ CQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZv cm0tPmFtb3BvcHIpKSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBDaGVjayBv cGVyYXRvciBzaWduYXR1cmUgLS0tIHNhbWUgZm9yIGFsbCBzdGlyIHN0cmF0ZWdpZXMgKi8KKwkJ aWYgKCFjaGVja19hbW9wX3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBCT09MT0lELAorCQkJ CQkJCQkgIG9wcmZvcm0tPmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmln aHR0eXBlKSkKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAl cyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCSAg IG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3Bv cHIpKSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKwl9CisKKworCVJlbGVhc2VDYXRDYWNo ZUxpc3QocHJvY2xpc3QpOworCVJlbGVhc2VDYXRDYWNoZUxpc3Qob3BybGlzdCk7CisJUmVsZWFz ZVN5c0NhY2hlKGZhbWlseXR1cCk7CisJUmVsZWFzZVN5c0NhY2hlKGNsYXNzdHVwKTsKKworCXJl dHVybiByZXN1bHQ7Cit9CisKKworLyoKKyAqIEluaXRpYWxpemUgbWV0YXBhZ2Ugb2YgYSBTVElS IGluZGV4LgorICogVGhlIHNraXBJbnNlcnRzIGZsYWcgZGV0ZXJtaW5lcyBpZiBuZXcgaW5zZXJ0 cyB3aWxsIGJlIGFjY2VwdGVkIG9yIHNraXBwZWQuCisgKi8KK3ZvaWQKK1N0aXJGaWxsTWV0YXBh Z2UoUmVsYXRpb24gaW5kZXgsIFBhZ2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpCit7CisJ U3Rpck1ldGFQYWdlRGF0YSAqbWV0YWRhdGE7CisKKwlTdGlySW5pdFBhZ2UobWV0YVBhZ2UsIFNU SVJfTUVUQSk7CisJbWV0YWRhdGEgPSBTdGlyUGFnZUdldE1ldGEobWV0YVBhZ2UpOworCW1lbXNl dChtZXRhZGF0YSwgMCwgc2l6ZW9mKFN0aXJNZXRhUGFnZURhdGEpKTsKKwltZXRhZGF0YS0+bWFn aWNrTnVtYmVyID0gU1RJUl9NQUdJQ0tfTlVNQkVSOworCW1ldGFkYXRhLT5za2lwSW5zZXJ0cyA9 IHNraXBJbnNlcnRzOworCSgoUGFnZUhlYWRlcikgbWV0YVBhZ2UpLT5wZF9sb3dlciArPSBzaXpl b2YoU3Rpck1ldGFQYWdlRGF0YSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUg dGhlIG1ldGFwYWdlIGZvciBhIFNUSVIgaW5kZXguCisgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcg aW5kZXggY3JlYXRpb24uCisgKi8KK3ZvaWQKK1N0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5k ZXgsIEZvcmtOdW1iZXIgZm9ya251bSkKK3sKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1l dGFQYWdlOworCisJQXNzZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJLyoKKwkgKiBN YWtlIGEgbmV3IHBhZ2U7IHNpbmNlIGl0IGlzIGZpcnN0IHBhZ2UgaXQgc2hvdWxkIGJlIGFzc29j aWF0ZWQgd2l0aAorCSAqIGJsb2NrIG51bWJlciAwIChTVElSX01FVEFQQUdFX0JMS05PKS4gIE5v IG5lZWQgdG8gaG9sZCB0aGUgZXh0ZW5zaW9uCisJICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5v dCBiZSBjb25jdXJyZW50IGluc2VydGVycyB5ZXQuCisJICovCisJbWV0YUJ1ZmZlciA9IFJlYWRC dWZmZXJFeHRlbmRlZChpbmRleCwgZm9ya251bSwgUF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOwor CVNUQVJUX0NSSVRfU0VDVElPTigpOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xP Q0tfRVhDTFVTSVZFKTsKKwlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZlcikg PT0gU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwltZXRhUGFnZSA9ICBCdWZmZXJHZXRQYWdlKG1l dGFCdWZmZXIpOworCVN0aXJGaWxsTWV0YXBhZ2UoaW5kZXgsIG1ldGFQYWdlLCBmb3JrbnVtID09 IElOSVRfRk9SS05VTSk7CisKKwlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7CisJRU5EX0NS SVRfU0VDVElPTigpOworCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKKy8q CisgKiBJbml0aWFsaXplIGFueSBwYWdlIG9mIGEgc3RpciBpbmRleC4KKyAqLwordm9pZAorU3Rp ckluaXRQYWdlKFBhZ2UgcGFnZSwgdWludDE2IGZsYWdzKQoreworCVN0aXJQYWdlT3BhcXVlIG9w YXF1ZTsKKworCVBhZ2VJbml0KHBhZ2UsIEJMQ0tTWiwgc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0 YSkpOworCisJb3BhcXVlID0gU3RpclBhZ2VHZXRPcGFxdWUocGFnZSk7CisJb3BhcXVlLT5mbGFn cyA9IGZsYWdzOworCW9wYXF1ZS0+c3Rpcl9wYWdlX2lkID0gU1RJUl9QQUdFX0lEOworfQorCisv KgorICogQWRkIGEgdHVwbGUgdG8gYSBTVElSIHBhZ2UuIFJldHVybnMgZmFsc2UgaWYgdHVwbGUg ZG9lc24ndCBmaXQuCisgKiBUaGUgdHVwbGUgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgcGFn ZS4KKyAqLworc3RhdGljIGJvb2wKK1N0aXJQYWdlQWRkSXRlbShQYWdlIHBhZ2UsIFN0aXJUdXBs ZSAqdHVwbGUpCit7CisJU3RpclR1cGxlICppdHVwOworCVN0aXJQYWdlT3BhcXVlIG9wYXF1ZTsK KwlQb2ludGVyIHB0cjsKKworCS8qIFdlIHNob3VsZG4ndCBiZSBwb2ludGVkIHRvIGFuIGludmFs aWQgcGFnZSAqLworCUFzc2VydCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCS8qIERvZXMgbmV3IHR1 cGxlIGZpdCBvbiB0aGUgcGFnZT8gKi8KKwlpZiAoU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUs IHBhZ2UpIDwgc2l6ZW9mKFN0aXJUdXBsZSkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIENvcHkg bmV3IHR1cGxlIHRvIHRoZSBlbmQgb2YgcGFnZSAqLworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3Bh cXVlKHBhZ2UpOworCWl0dXAgPSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9wYXF1ZS0+bWF4b2Zm ICsgMSk7CisJbWVtY3B5KChQb2ludGVyKSBpdHVwLCAoUG9pbnRlcikgdHVwbGUsIHNpemVvZihT dGlyVHVwbGUpKTsKKworCS8qIEFkanVzdCBtYXhvZmYgYW5kIHBkX2xvd2VyICovCisJb3BhcXVl LT5tYXhvZmYrKzsKKwlwdHIgPSAoUG9pbnRlcikgU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFx dWUtPm1heG9mZiArIDEpOworCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyID0gcHRyIC0g cGFnZTsKKworCS8qIEFzc2VydCB3ZSBkaWRuJ3Qgb3ZlcnJ1biBhdmFpbGFibGUgc3BhY2UgKi8K KwlBc3NlcnQoKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPD0gKChQYWdlSGVhZGVyKSBw YWdlKS0+cGRfdXBwZXIpOworCXJldHVybiB0cnVlOworfQorCisvKgorICogSW5zZXJ0IGEgbmV3 IHR1cGxlIGludG8gYSBTVElSIGluZGV4LgorICovCitib29sCitzdGlyaW5zZXJ0KFJlbGF0aW9u IGluZGV4LCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsCisJCSAgSXRlbVBvaW50ZXIgaHRf Y3RpZCwgUmVsYXRpb24gaGVhcFJlbCwKKwkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVl LAorCQkgIGJvb2wgaW5kZXhVbmNoYW5nZWQsCisJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJ bmZvKQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlNZW1vcnlDb250ZXh0IG9sZEN0eDsKKwlNZW1v cnlDb250ZXh0IGluc2VydEN0eDsKKwlTdGlyTWV0YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZm ZXIgYnVmZmVyLAorCQkJbWV0YUJ1ZmZlcjsKKwlQYWdlIHBhZ2U7CisJdWludDE2IGJsa05vOwor CisJLyogQ3JlYXRlIHRlbXBvcmFyeSBjb250ZXh0IGZvciBpbnNlcnQgb3BlcmF0aW9uICovCisJ aW5zZXJ0Q3R4ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAor CQkJCQkJCQkJICAiU3RpciBpbnNlcnQgdGVtcG9yYXJ5IGNvbnRleHQiLAorCQkJCQkJCQkJICBB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhpbnNlcnRDdHgpOworCisJLyogQ3JlYXRlIG5ldyB0dXBsZSB3aXRoIGhlYXAgcG9pbnRlciAq LworCWl0dXAgPSAoU3RpclR1cGxlICopIHBhbGxvYzAoc2l6ZW9mKFN0aXJUdXBsZSkpOworCWl0 dXAtPmhlYXBQdHIgPSAqaHRfY3RpZDsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRl eCkpOworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05P KTsKKworCWZvciAoOzspCisJeworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NL X1NIQVJFKTsKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRh QnVmZmVyKSk7CisJCS8qIENoZWNrIGlmIGluc2VydHMgYXJlIGFsbG93ZWQgKi8KKwkJaWYgKG1l dGFEYXRhLT5za2lwSW5zZXJ0cykKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVm ZmVyKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlibGtObyA9IG1ldGFEYXRhLT5sYXN0Qmxr Tm87CisJCS8qIERvbid0IGhvbGQgbWV0YWJ1ZmZlciBsb2NrIHdoaWxlIGRvaW5nIGluc2VydCAq LworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkJaWYg KGJsa05vID4gMCkKKwkJeworCQkJYnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgYmxrTm8pOwor CQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJCQlTVEFSVF9D UklUX1NFQ1RJT04oKTsKKworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKworCQkJ QXNzZXJ0KCFQYWdlSXNOZXcocGFnZSkpOworCisJCQkvKiBUcnkgdG8gYWRkIHR1cGxlIHRvIGV4 aXN0aW5nIHBhZ2UgKi8KKwkJCWlmIChTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7 CisJCQkJLyogU3VjY2VzcyEgIEFwcGx5IHRoZSBjaGFuZ2UsIGNsZWFuIHVwLCBhbmQgZXhpdCAq LworCQkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQkJCUVORF9DUklUX1NFQ1RJT04oKTsK KworCQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCQlSZWxlYXNlQnVmZmVyKG1l dGFCdWZmZXIpOworCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQkJCU1lbW9y eUNvbnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJ CUVORF9DUklUX1NFQ1RJT04oKTsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJ fQorCisJCS8qIE5lZWQgdG8gYWRkIG5ldyBwYWdlIC0gZ2V0IGV4Y2x1c2l2ZSBsb2NrIG9uIG1l dGEgcGFnZSAqLworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7CisKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRhQnVm ZmVyKSk7CisJCS8qIENoZWNrIGlmIGFub3RoZXIgYmFja2VuZCBhbHJlYWR5IGV4dGVuZGVkIHRo ZSBpbmRleCAqLworCisJCWlmIChibGtObyAhPSBtZXRhRGF0YS0+bGFzdEJsa05vKQorCQl7CisJ CQlBc3NlcnQoYmxrTm8gPCBtZXRhRGF0YS0+bGFzdEJsa05vKTsKKwkJCS8qIFNvbWVvbmUgZWxz ZSBpbnNlcnRlZCB0aGUgbmV3IHBhZ2UgaW50byB0aGUgaW5kZXgsIGxldHMgdHJ5IGFnYWluICov CisJCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQljb250 aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE11c3QgZXh0ZW5kIHRoZSBmaWxlICovCisJ CQlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9GT1JLTlVN LCBOVUxMLAorCQkJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CisJCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOworCQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJCVN0aXJJbml0UGFn ZShwYWdlLCAwKTsKKworCQkJaWYgKCFTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7 CisJCQkJLyogV2Ugc2hvdWxkbid0IGJlIGhlcmUgc2luY2Ugd2UncmUgaW5zZXJ0aW5nIHRvIGFu IGVtcHR5IHBhZ2UgKi8KKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGFkZCBuZXcgc3RpciB0 dXBsZSB0byBlbXB0eSBwYWdlIik7CisJCQl9CisKKwkJCS8qIFVwZGF0ZSBtZXRhIHBhZ2Ugd2l0 aCBuZXcgbGFzdCBibG9jayBudW1iZXIgKi8KKwkJCW1ldGFEYXRhLT5sYXN0QmxrTm8gPSBCdWZm ZXJHZXRCbG9ja051bWJlcihidWZmZXIpOworCisJCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZl cik7CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQkJRU5EX0NSSVRfU0VDVElPTigp OworCisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQlVbmxvY2tSZWxlYXNlQnVm ZmVyKG1ldGFCdWZmZXIpOworCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJ CU1lbW9yeUNvbnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorfQorCisvKgorICogU1RJUiBkb2Vzbid0IHN1cHBvcnQgc2NhbnMgLSB0aGVzZSBmdW5j dGlvbnMgYWxsIGVycm9yIG91dAorICovCitJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVs YXRpb24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJST1IsIChl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMg bm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQKK3N0aXJyZXNj YW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJ CSAgU2NhbktleSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAo ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlz IG5vdCBhIG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkIHN0aXJlbmRz Y2FuKEluZGV4U2NhbkRlc2Mgc2NhbikKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBp bXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCisvKgorICogQnVpbGQgYSBTVElSIGluZGV4 IC0gb25seSBhbGxvd2VkIGZvciBhdXhpbGlhcnkgaW5kZXhlcy4KKyAqIEp1c3QgaW5pdGlhbGl6 ZXMgdGhlIG1ldGEgcGFnZSB3aXRob3V0IGFueSBoZWFwIHNjYW5zLgorICovCitJbmRleEJ1aWxk UmVzdWx0ICpzdGlyYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCisJCQkJCQkg ICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pCit7CisJSW5kZXhCdWlsZFJlc3VsdCAqcmVz dWx0OworCisJaWYgKCFpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwg KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlNUSVIgaW5k ZXhlcyBhcmUgbm90IHN1cHBvcnRlZCB0byBiZSBidWlsdCIpKSk7CisKKwlTdGlySW5pdE1ldGFw YWdlKGluZGV4LCBNQUlOX0ZPUktOVU0pOworCisJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQg KikgcGFsbG9jKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0LT5oZWFwX3R1cGxl cyA9IDA7CisJcmVzdWx0LT5pbmRleF90dXBsZXMgPSAwOworCXJldHVybiByZXN1bHQ7Cit9CisK K3ZvaWQgc3RpcmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpCit7CisJU3RpckluaXRNZXRhcGFn ZShpbmRleCwgSU5JVF9GT1JLTlVNKTsKK30KKworSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGly YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cywKKwkJCQkJCQkJCSBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxs YmFjaywKKwkJCQkJCQkJCSB2b2lkICpjYWxsYmFja19zdGF0ZSkKK3sKKwlSZWxhdGlvbiBpbmRl eCA9IGluZm8tPmluZGV4OworCUJsb2NrTnVtYmVyIGJsa25vLCBucGFnZXM7CisJQnVmZmVyIGJ1 ZmZlcjsKKwlQYWdlIHBhZ2U7CisKKwkvKiBGb3Igbm9ybWFsIFZBQ1VVTSwgbWFyayB0byBza2lw IGluc2VydHMgYW5kIHdhcm4gYWJvdXQgaW5kZXggZHJvcCBuZWVkZWQgKi8KKwlpZiAoIWluZm8t PnZhbGlkYXRlX2luZGV4KQorCXsKKwkJU3Rpck1hcmtBc1NraXBJbnNlcnRzKGluZGV4KTsKKwor CQllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQsIHNlZW1zIGxp a2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRyb3BwZWQiLCBfX2Z1bmNfXykpKTsKKwkJcmV0dXJu IE5VTEw7CisJfQorCisJaWYgKHN0YXRzID09IE5VTEwpCisJCXN0YXRzID0gKEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwor CS8qCisJICogSXRlcmF0ZSBvdmVyIHRoZSBwYWdlcy4gV2UgZG9uJ3QgY2FyZSBhYm91dCBjb25j dXJyZW50bHkgYWRkZWQgcGFnZXMsCisJICogYmVjYXVzZSBpbmRleCBpcyBtYXJrZWQgYXMgbm90 LXJlYWR5IGZvciB0aGF0IG1vbW1lbnQgYW5kIGluZGV4IG5vdAorCSAqIHVzZWQgZm9yIGluc2Vy dC4KKwkgKi8KKwlucGFnZXMgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKGluZGV4KTsKKwlm b3IgKGJsa25vID0gU1RJUl9IRUFEX0JMS05POyBibGtubyA8IG5wYWdlczsgYmxrbm8rKykKKwl7 CisJCVN0aXJUdXBsZSAqaXR1cCwgKml0dXBFbmQ7CisKKwkJdmFjdXVtX2RlbGF5X3BvaW50KCk7 CisKKwkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlOX0ZPUktOVU0sIGJs a25vLAorCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCisJCUxvY2tCdWZm ZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CisKKwkJaWYgKFBhZ2VJc05ldyhwYWdlKSkKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1 ZmZlcihidWZmZXIpOworCQkJY29udGludWU7CisJCX0KKworCQlpdHVwID0gU3RpclBhZ2VHZXRU dXBsZShwYWdlLCBGaXJzdE9mZnNldE51bWJlcik7CisJCWl0dXBFbmQgPSBTdGlyUGFnZUdldFR1 cGxlKHBhZ2UsIE9mZnNldE51bWJlck5leHQoU3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkpKTsK KwkJd2hpbGUgKGl0dXAgPCBpdHVwRW5kKQorCQl7CisJCQkvKiBEbyB3ZSBoYXZlIHRvIGRlbGV0 ZSB0aGlzIHR1cGxlPyAqLworCQkJaWYgKGNhbGxiYWNrKCZpdHVwLT5oZWFwUHRyLCBjYWxsYmFj a19zdGF0ZSkpCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIndlIG5ldmVyIGRlbGV0ZSBpbiBzdGlyIikpKTsK KwkJCX0KKworCQkJaXR1cCA9IFN0aXJQYWdlR2V0TmV4dFR1cGxlKGl0dXApOworCQl9CisKKwkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCX0KKworCXJldHVybiBzdGF0czsKK30KKwor LyoKKyAqIE1hcmsgYSBTVElSIGluZGV4IHRvIHNraXAgZnV0dXJlIGluc2VydHMKKyAqLwordm9p ZCBTdGlyTWFya0FzU2tpcEluc2VydHMoUmVsYXRpb24gaW5kZXgpCit7CisJU3Rpck1ldGFQYWdl RGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFnZTsKKwor CUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCW1ldGFCdWZmZXIgPSBSZWFkQnVm ZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05PKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIs IEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwltZXRh UGFnZSA9IEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcik7CisJbWV0YURhdGEgPSBTdGlyUGFnZUdl dE1ldGEobWV0YVBhZ2UpOworCisJaWYgKCFtZXRhRGF0YS0+c2tpcEluc2VydHMpCisJeworCQlt ZXRhRGF0YS0+c2tpcEluc2VydHMgPSB0cnVlOworCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZl cik7CisJfQorCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKK0luZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RpcnZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLAor CQkJCQkJCQkJCUluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCit7CisJU3Rpck1hcmtBc1Nr aXBJbnNlcnRzKGluZm8tPmluZGV4KTsKKwllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5v dCBpbXBsZW1lbnRlZCwgc2VlbXMgbGlrZSB0aGlzIGluZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIs IF9fZnVuY19fKSkpOworCXJldHVybiBOVUxMOworfQorCitieXRlYSAqc3Rpcm9wdGlvbnMoRGF0 dW0gcmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSkKK3sKKwlyZXR1cm4gTlVMTDsKK30KKwordm9p ZCBzdGlyY29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgsCisJ CQkJCSBkb3VibGUgbG9vcF9jb3VudCwgQ29zdCAqaW5kZXhTdGFydHVwQ29zdCwKKwkJCQkJIENv c3QgKmluZGV4VG90YWxDb3N0LCBTZWxlY3Rpdml0eSAqaW5kZXhTZWxlY3Rpdml0eSwKKwkJCQkJ IGRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwgZG91YmxlICppbmRleFBhZ2VzKQoreworCWVyZXBv cnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNn KCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGQ5MzdiYTY1YzljLi4y ZGJmOGY4MjE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzQwMyw2ICszNDAzLDcgQEAgdmFsaWRh dGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2 aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBo ZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7 CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1ZTsKIAogCS8qCiAJICogRW5jb2RlIFRJRHMg YXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5n CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggMmE3NzY5YjFmZDEuLmYyN2Q5MDQxZTJjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYW5hbHl6ZS5jCkBAIC03MTgsNiArNzE4LDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVs YXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCWl2aW5mby5tZXNzYWdlX2xl dmVsID0gZWxldmVsOwogCQkJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IG9uZXJlbC0+cmRfcmVs LT5yZWx0dXBsZXM7CiAJCQlpdmluZm8uc3RyYXRlZ3kgPSB2YWNfc3RyYXRlZ3k7CisJCQlpdmlu Zm8udmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCQkJc3RhdHMgPSBpbmRleF92YWN1dW1fY2xl YW51cCgmaXZpbmZvLCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMK aW5kZXggMGQ5MmU2OTRkNmEuLmEzOWQzNmMzNTM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKQEAgLTg4NCw2ICs4ODQsNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19v bmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaXZp bmZvLmVzdGltYXRlZF9jb3VudCA9IHB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQ7CiAJaXZp bmZvLm51bV9oZWFwX3R1cGxlcyA9IHB2cy0+c2hhcmVkLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0 cmF0ZWd5ID0gcHZzLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7 CiAKIAkvKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uICovCiAJcHZzLT5pbmRu YW1lID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFr ZWZ1bmNzLmMKaW5kZXggNmI2NmJjMTgyODYuLjY5NGEyNTE4YmE1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVu Y3MuYwpAQCAtODI1LDYgKzgyNSw3IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQg bnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJLyogaW5pdGlhbGl6 ZSBpbmRleC1idWlsZCBzdGF0ZSB0byBkZWZhdWx0ICovCiAJbi0+aWlfQnJva2VuSG90Q2hhaW4g PSBmYWxzZTsKIAluLT5paV9QYXJhbGxlbFdvcmtlcnMgPSAwOworCW4tPmlpX0F1eGlsaWFyeSA9 IGZhbHNlOwogCiAJLyogc2V0IHVwIGZvciBwb3NzaWJsZSB1c2UgYnkgaW5kZXggQU0gKi8KIAlu LT5paV9BbSA9IGFtb2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCAxYmU4NzM5NTczZi4uNDRmOGEwZDU2 MDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9nZW5hbS5oCkBAIC01Miw2ICs1Miw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4 VmFjdXVtSW5mbwogCWJvb2wJCWVzdGltYXRlZF9jb3VudDsJLyogbnVtX2hlYXBfdHVwbGVzIGlz IGFuIGVzdGltYXRlICovCiAJaW50CQkJbWVzc2FnZV9sZXZlbDsJLyogZXJlcG9ydCBsZXZlbCBm b3IgcHJvZ3Jlc3MgbWVzc2FnZXMgKi8KIAlkb3VibGUJCW51bV9oZWFwX3R1cGxlczsJLyogdHVw bGVzIHJlbWFpbmluZyBpbiBoZWFwICovCisJYm9vbAkJdmFsaWRhdGVfaW5kZXg7IC8qIHZhbGlk YXRpbmcgY29uY3VycmVudGx5IGJ1aWx0IGluZGV4PyAqLwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IHN0cmF0ZWd5OwkvKiBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHJlYWRzICovCiB9IEluZGV4VmFjdXVt SW5mbzsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKaW5kZXggNDM0NDVjZGNjNmMuLjI2ZGRkNWVj NTc3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKQEAgLTUxLDggKzUxLDkgQEAgdHlwZWRlZiBl bnVtIHJlbG9wdF9raW5kCiAJUkVMT1BUX0tJTkRfVklFVyA9ICgxIDw8IDkpLAogCVJFTE9QVF9L SU5EX0JSSU4gPSAoMSA8PCAxMCksCiAJUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQgPSAoMSA8PCAx MSksCisJUkVMT1BUX0tJTkRfU1RJUiA9ICgxIDw8IDEyKSwKIAkvKiBpZiB5b3UgYWRkIGEgbmV3 IGtpbmQsIG1ha2Ugc3VyZSB5b3UgdXBkYXRlICJsYXN0X2RlZmF1bHQiIHRvbyAqLwotCVJFTE9Q VF9LSU5EX0xBU1RfREVGQVVMVCA9IFJFTE9QVF9LSU5EX1BBUlRJVElPTkVELAorCVJFTE9QVF9L SU5EX0xBU1RfREVGQVVMVCA9IFJFTE9QVF9LSU5EX1NUSVIsCiAJLyogc29tZSBjb21waWxlcnMg dHJlYXQgZW51bXMgYXMgc2lnbmVkIGludHMsIHNvIHdlIGNhbid0IHVzZSAxIDw8IDMxICovCiAJ UkVMT1BUX0tJTkRfTUFYID0gKDEgPDwgMzApCiB9IHJlbG9wdF9raW5kOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk5NDNjNDJhOTdlCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaApAQCAtMCwwICsxLDExNyBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc3Rpci5oCisgKgkgIGhlYWRlciBmaWxlIGZvciBw b3N0Z3JlcyBzdGlyIGFjY2VzcyBtZXRob2QgaW1wbGVtZW50YXRpb24uCisgKgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqCisgKiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgX1NUSVJfSF8KKyNkZWZpbmUgX1NUSVJfSF8KKworI2luY2x1 ZGUgImFtYXBpLmgiCisjaW5jbHVkZSAieGxvZy5oIgorI2luY2x1ZGUgImdlbmVyaWNfeGxvZy5o IgorI2luY2x1ZGUgIml0dXAuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMv cGF0aG5vZGVzLmgiCisKKy8qIFN1cHBvcnQgcHJvY2VkdXJlcyBudW1iZXJzICovCisjZGVmaW5l IFNUSVJfTlBST0MJCQkJMAorCisvKiBTY2FuIHN0cmF0ZWdpZXMgKi8KKyNkZWZpbmUgU1RJUl9O U1RSQVRFR0lFUwkJMQorCisjZGVmaW5lIFNUSVJfT1BUSU9OU19QUk9DCQkJCTAKKworLyogTWFj cm9zIGZvciBhY2Nlc3Npbmcgc3RpciBwYWdlIHN0cnVjdHVyZXMgKi8KKyNkZWZpbmUgU3RpclBh Z2VHZXRPcGFxdWUocGFnZSkgKChTdGlyUGFnZU9wYXF1ZSkgUGFnZUdldFNwZWNpYWxQb2ludGVy KHBhZ2UpKQorI2RlZmluZSBTdGlyUGFnZUdldE1heE9mZnNldChwYWdlKSAoU3RpclBhZ2VHZXRP cGFxdWUocGFnZSktPm1heG9mZikKKyNkZWZpbmUgU3RpclBhZ2VJc01ldGEocGFnZSkgXAorCSgo U3RpclBhZ2VHZXRPcGFxdWUocGFnZSktPmZsYWdzICYgU1RJUl9NRVRBKSAhPSAwKQorI2RlZmlu ZSBTdGlyUGFnZUdldERhdGEocGFnZSkJCSgoU3RpclR1cGxlICopUGFnZUdldENvbnRlbnRzKHBh Z2UpKQorI2RlZmluZSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9mZnNldCkgXAorCSgoU3RpclR1 cGxlICopKFBhZ2VHZXRDb250ZW50cyhwYWdlKSBcCisJCSsgc2l6ZW9mKFN0aXJUdXBsZSkgKiAo KG9mZnNldCkgLSAxKSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0TmV4dFR1cGxlKHR1cGxlKSBcCisJ KChTdGlyVHVwbGUgKikoKFBvaW50ZXIpKHR1cGxlKSArIHNpemVvZihTdGlyVHVwbGUpKSkKKwor CisKKy8qIFByZXNlcnZlZCBwYWdlIG51bWJlcnMgKi8KKyNkZWZpbmUgU1RJUl9NRVRBUEFHRV9C TEtOTwkoMCkKKyNkZWZpbmUgU1RJUl9IRUFEX0JMS05PCQkoMSkgLyogZmlyc3QgZGF0YSBwYWdl ICovCisKKworLyogT3BhcXVlIGZvciBzdGlyIHBhZ2VzICovCit0eXBlZGVmIHN0cnVjdCBTdGly UGFnZU9wYXF1ZURhdGEKK3sKKwlPZmZzZXROdW1iZXIgbWF4b2ZmOwkJLyogbnVtYmVyIG9mIGlu ZGV4IHR1cGxlcyBvbiBwYWdlICovCisJdWludDE2CQlmbGFnczsJCQkvKiBzZWUgYml0IGRlZmlu aXRpb25zIGJlbG93ICovCisJdWludDE2CQl1bnVzZWQ7CQkJLyogcGxhY2Vob2xkZXIgdG8gZm9y Y2UgbWF4YWxpZ25pbmcgb2Ygc2l6ZSBvZgorCQkJCQkJCQkgKiBTdGlyUGFnZU9wYXF1ZURhdGEg YW5kIHRvIHBsYWNlCisJCQkJCQkJCSAqIHN0aXJfcGFnZV9pZCBleGFjdGx5IGF0IHRoZSBlbmQg b2YgcGFnZSAqLworCXVpbnQxNgkJc3Rpcl9wYWdlX2lkOwkvKiBmb3IgaWRlbnRpZmljYXRpb24g b2YgU1RJUiBpbmRleGVzICovCit9IFN0aXJQYWdlT3BhcXVlRGF0YTsKKworLyogU3RpciBwYWdl IGZsYWdzICovCisjZGVmaW5lIFNUSVJfTUVUQQkJKDE8PDApCisKK3R5cGVkZWYgU3RpclBhZ2VP cGFxdWVEYXRhICpTdGlyUGFnZU9wYXF1ZTsKKworI2RlZmluZSBTVElSX1BBR0VfSUQJCTB4RkY4 NAorCisvKiBNZXRhZGF0YSBvZiBzdGlyIGluZGV4ICovCit0eXBlZGVmIHN0cnVjdCBTdGlyTWV0 YVBhZ2VEYXRhCit7CisJdWludDMyCQltYWdpY2tOdW1iZXI7CisJdWludDE2CQlsYXN0QmxrTm87 CisJYm9vbAkJc2tpcEluc2VydHM7CS8qIHNob3VsZCB3ZSBqdXN0IGV4aXQgd2l0aG91dCBhbnkg aW5zZXJ0cyAqLworfSBTdGlyTWV0YVBhZ2VEYXRhOworCisvKiBNYWdpYyBudW1iZXIgdG8gZGlz dGluZ3Vpc2ggc3RpciBwYWdlcyBmcm9tIG90aGVycyAqLworI2RlZmluZSBTVElSX01BR0lDS19O VU1CRVIgKDB4REJBQzBERUYpCisKKyNkZWZpbmUgU3RpclBhZ2VHZXRNZXRhKHBhZ2UpCSgoU3Rp ck1ldGFQYWdlRGF0YSAqKSBQYWdlR2V0Q29udGVudHMocGFnZSkpCisKK3R5cGVkZWYgc3RydWN0 IFN0aXJUdXBsZQoreworCUl0ZW1Qb2ludGVyRGF0YSBoZWFwUHRyOworfSBTdGlyVHVwbGU7CisK KyNkZWZpbmUgU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUsIHBhZ2UpIFwKKwkoQkxDS1NaIC0g TUFYQUxJR04oU2l6ZU9mUGFnZUhlYWRlckRhdGEpIFwKKwkJLSBTdGlyUGFnZUdldE1heE9mZnNl dChwYWdlKSAqIChzaXplb2YoU3RpclR1cGxlKSkgXAorCQktIE1BWEFMSUdOKHNpemVvZihTdGly UGFnZU9wYXF1ZURhdGEpKSkKKworZXh0ZXJuIHZvaWQgU3RpckZpbGxNZXRhcGFnZShSZWxhdGlv biBpbmRleCwgUGFnZSBtZXRhUGFnZSwgYm9vbCBza2lwSW5zZXJ0cyk7CitleHRlcm4gdm9pZCBT dGlySW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pOworZXh0 ZXJuIHZvaWQgU3RpckluaXRQYWdlKFBhZ2UgcGFnZSwgdWludDE2IGZsYWdzKTsKK2V4dGVybiB2 b2lkIFN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCk7CisKKy8qIGluZGV4IGFj Y2VzcyBtZXRob2QgaW50ZXJmYWNlIGZ1bmN0aW9ucyAqLworZXh0ZXJuIGJvb2wgc3RpcnZhbGlk YXRlKE9pZCBvcGNsYXNzb2lkKTsKK2V4dGVybiBib29sIHN0aXJpbnNlcnQoUmVsYXRpb24gaW5k ZXgsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCwKKwkJCQkJIEl0ZW1Qb2ludGVyIGh0X2N0 aWQsIFJlbGF0aW9uIGhlYXBSZWwsCisJCQkJCSBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVl LAorCQkJCQkgYm9vbCBpbmRleFVuY2hhbmdlZCwKKwkJCQkJIHN0cnVjdCBJbmRleEluZm8gKmlu ZGV4SW5mbyk7CitleHRlcm4gSW5kZXhTY2FuRGVzYyBzdGlyYmVnaW5zY2FuKFJlbGF0aW9uIHIs IGludCBua2V5cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gdm9pZCBzdGlycmVzY2FuKEluZGV4 U2NhbkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAorCQkJCQkgU2Nh bktleSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gdm9pZCBzdGlyZW5kc2NhbihJ bmRleFNjYW5EZXNjIHNjYW4pOworZXh0ZXJuIEluZGV4QnVpbGRSZXN1bHQgKnN0aXJidWlsZChS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKKwkJCQkJCQkJIHN0cnVjdCBJbmRleEluZm8g KmluZGV4SW5mbyk7CitleHRlcm4gdm9pZCBzdGlyYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCk7 CitleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlyYnVsa2RlbGV0ZShJbmRleFZhY3V1 bUluZm8gKmluZm8sCisJCQkJCQkJCQkJICAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywg SW5kZXhCdWxrRGVsZXRlQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJICAgdm9pZCAqY2Fs bGJhY2tfc3RhdGUpOworZXh0ZXJuIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RpcnZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJCQkgIEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCAqc3RhdHMpOworZXh0ZXJuIGJ5dGVhICpzdGlyb3B0aW9ucyhEYXR1bSByZWxvcHRp b25zLCBib29sIHZhbGlkYXRlKTsKKworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2FtLmRhdAppbmRleCAyNmQxNTkyOGExNS4uYTVlY2Y5MjA4YWQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW0uZGF0CkBAIC0zMyw1ICszMyw4IEBACiB7IG9pZCA9PiAnMzU4MCcsIG9pZF9z eW1ib2wgPT4gJ0JSSU5fQU1fT0lEJywKICAgZGVzY3IgPT4gJ2Jsb2NrIHJhbmdlIGluZGV4IChC UklOKSBhY2Nlc3MgbWV0aG9kJywKICAgYW1uYW1lID0+ICdicmluJywgYW1oYW5kbGVyID0+ICdi cmluaGFuZGxlcicsIGFtdHlwZSA9PiAnaScgfSwKK3sgb2lkID0+ICc1NTU1Jywgb2lkX3N5bWJv bCA9PiAnU1RJUl9BTV9PSUQnLAorICBkZXNjciA9PiAnc2hvcnQgdGVybSBpbmRleCByZXBsYWNl bWVudCBhY2Nlc3MgbWV0aG9kJywKKyAgYW1uYW1lID0+ICdzdGlyJywgYW1oYW5kbGVyID0+ICdz dGlyaGFuZGxlcicsIGFtdHlwZSA9PiAnaScgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFz cy5kYXQKaW5kZXggNGE5NjI0ODAyYWEuLjYyMjdjNTY1OGZjIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf b3BjbGFzcy5kYXQKQEAgLTQ4OCw0ICs0ODgsOCBAQAogCiAjIG5vIGJyaW4gb3BjbGFzcyBmb3Ig dGhlIGdlb21ldHJpYyB0eXBlcyBleGNlcHQgYm94CiAKKyMgYWxsb3cgYW55IHR5cGVzIGZvciBT VElSCit7IG9wY21ldGhvZCA9PiAnc3RpcicsIG9pZF9zeW1ib2wgPT4gJ0FOWV9TVElSX09QU19P SUQnLCBvcGNuYW1lID0+ICdzdGlyX29wcycsCisgIG9wY2ZhbWlseSA9PiAnc3Rpci9hbnlfb3Bz Jywgb3BjaW50eXBlID0+ICdhbnknfSwKKwogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19vcGZhbWlseS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRh dAppbmRleCBmN2RjYjk2YjQzYy4uODM4YWQzMmM5MzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3Bm YW1pbHkuZGF0CkBAIC0zMDQsNSArMzA0LDcgQEAKICAgb3BmbWV0aG9kID0+ICdoYXNoJywgb3Bm bmFtZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCiB7IG9pZCA9PiAnNjE1OCcsCiAgIG9wZm1ldGhv ZCA9PiAnZ2lzdCcsIG9wZm5hbWUgPT4gJ211bHRpcmFuZ2Vfb3BzJyB9LAoreyBvaWQgPT4gJzU1 NTgnLAorICBvcGZtZXRob2QgPT4gJ3N0aXInLCBvcGZuYW1lID0+ICdhbnlfb3BzJyB9LAogCiBd CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBiMzdlOGE2Zjg4Mi4uNWVhMmIxMmJmMGEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtOTM1LDYgKzkzNSwxMCBAQAogICBwcm9uYW1lID0+ ICdicmluaGFuZGxlcicsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAnaW5k ZXhfYW1faGFuZGxlcicsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsCiAgIHByb3NyYyA9PiAn YnJpbmhhbmRsZXInIH0sCit7IG9pZCA9PiAnNTU1NicsIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGlu ZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QgaGFuZGxlcicsCisgIHByb25hbWUgPT4gJ3N0 aXJoYW5kbGVyJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICdpbmRleF9h bV9oYW5kbGVyJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKKyAgcHJvc3JjID0+ICdzdGly aGFuZGxlcicgfSwKIHsgb2lkID0+ICczOTUyJywgZGVzY3IgPT4gJ2JyaW46IHN0YW5kYWxvbmUg c2NhbiBuZXcgdGFibGUgcGFnZXMnLAogICBwcm9uYW1lID0+ICdicmluX3N1bW1hcml6ZV9uZXdf dmFsdWVzJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9wYXJhbGxlbCA9PiAndScsIHByb3Jl dHR5cGUgPT4gJ2ludDQnLCBwcm9hcmd0eXBlcyA9PiAncmVnY2xhc3MnLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAppbmRleCBiM2Y3YWEyOTlmNS4uN2JmZTBhY2I5MWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CkBAIC0xNzIsMTIgKzE3MiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKICAqCQlCcm9r ZW5Ib3RDaGFpbgkJZGlkIHdlIGRldGVjdCBhbnkgYnJva2VuIEhPVCBjaGFpbnM/CiAgKgkJU3Vt bWFyaXppbmcJCQlpcyBpdCBhIHN1bW1hcml6aW5nIGluZGV4PwogICoJCVBhcmFsbGVsV29ya2Vy cwkJIyBvZiB3b3JrZXJzIHJlcXVlc3RlZCAoZXhjbHVkZXMgbGVhZGVyKQorICoJCUF1eGlsaWFy eQkJCSMgaW5kZXgtaGVscGVyIGZvciBjb25jdXJyZW50IGJ1aWxkPwogICoJCUFtCQkJCQlPaWQg b2YgaW5kZXggQU0KICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXgg QU0KICAqCQlDb250ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8K ICAqCi0gKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVs V29ya2VycyBhcmUgdXNlZCBvbmx5Ci0gKiBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29u dmVudGlvbmFsbHkgemVyb2VkIG90aGVyd2lzZS4KKyAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tl bkhvdENoYWluLCBpaV9BdXhpbGlhcnkgYW5kIGlpX1BhcmFsbGVsV29ya2VycworICogYXJlIHVz ZWQgb25seSBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2Vk IG90aGVyd2lzZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5k ZXhJbmZvCkBAIC0yMDYsNiArMjA3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCiAJYm9v bAkJaWlfU3VtbWFyaXppbmc7CiAJYm9vbAkJaWlfV2l0aG91dE92ZXJsYXBzOwogCWludAkJCWlp X1BhcmFsbGVsV29ya2VyczsKKwlib29sCQlpaV9BdXhpbGlhcnk7CiAJT2lkCQkJaWlfQW07CiAJ dm9pZAkgICAqaWlfQW1DYWNoZTsKIAlNZW1vcnlDb250ZXh0IGlpX0NvbnRleHQ7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oIGIvc3JjL2luY2x1ZGUvdXRp bHMvaW5kZXhfc2VsZnVuY3MuaAppbmRleCA2YzY0ZGI2ZDQ1Ni4uZTBkOTM5ZDY4NTcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaApAQCAtNjIsNiArNjIsMTQgQEAgZXh0ZXJuIHZvaWQg c3BnY29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlTZWxlY3Rp dml0eSAqaW5kZXhTZWxlY3Rpdml0eSwKIAkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24s CiAJCQkJCQkJZG91YmxlICppbmRleFBhZ2VzKTsKK2V4dGVybiB2b2lkIHN0aXJjb3N0ZXN0aW1h dGUoc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCXN0cnVjdCBJbmRleFBhdGggKnBh dGgsCisJCQkJCQkJZG91YmxlIGxvb3BfY291bnQsCisJCQkJCQkJQ29zdCAqaW5kZXhTdGFydHVw Q29zdCwKKwkJCQkJCQlDb3N0ICppbmRleFRvdGFsQ29zdCwKKwkJCQkJCQlTZWxlY3Rpdml0eSAq aW5kZXhTZWxlY3Rpdml0eSwKKwkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCisJCQkJ CQkJZG91YmxlICppbmRleFBhZ2VzKTsKIGV4dGVybiB2b2lkIGdpbmNvc3Rlc3RpbWF0ZShzdHJ1 Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0aCwKIAkJ CQkJCQlkb3VibGUgbG9vcF9jb3VudCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYW11dGlscy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0 CmluZGV4IDdhYjYxMTNjNjE5Li45MmMwMzNhMjAxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2FtdXRpbHMub3V0CkBAIC0xNzMsNyArMTczLDEzIEBAIHNlbGVjdCBhbW5hbWUsIHByb3AsIHBn X2luZGV4YW1faGFzX3Byb3BlcnR5KGEub2lkLCBwcm9wKSBhcyBwCiAgc3BnaXN0IHwgY2FuX2V4 Y2x1ZGUgICB8IHQKICBzcGdpc3QgfCBjYW5faW5jbHVkZSAgIHwgdAogIHNwZ2lzdCB8IGJvZ3Vz ICAgICAgICAgfCAKLSgzNiByb3dzKQorIHN0aXIgICB8IGNhbl9vcmRlciAgICAgfCBmCisgc3Rp ciAgIHwgY2FuX3VuaXF1ZSAgICB8IGYKKyBzdGlyICAgfCBjYW5fbXVsdGlfY29sIHwgdAorIHN0 aXIgICB8IGNhbl9leGNsdWRlICAgfCBmCisgc3RpciAgIHwgY2FuX2luY2x1ZGUgICB8IHQKKyBz dGlyICAgfCBib2d1cyAgICAgICAgIHwgCisoNDIgcm93cykKIAogLS0KIC0tIGFkZGl0aW9uYWwg Y2hlY2tzIGZvciBwZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCBiNjczNjQyYWQxZC4uMjY0NWQ5NzA2MjkgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMjExOSw5ICsyMTE5 LDEwIEBAIEZST00gcGdfb3BjbGFzcyBBUyBjMQogV0hFUkUgTk9UIEVYSVNUUyhTRUxFQ1QgMSBG Uk9NIHBnX2Ftb3AgQVMgYTEKICAgICAgICAgICAgICAgICAgV0hFUkUgYTEuYW1vcGZhbWlseSA9 IGMxLm9wY2ZhbWlseQogICAgICAgICAgICAgICAgICAgIEFORCBiaW5hcnlfY29lcmNpYmxlKGMx Lm9wY2ludHlwZSwgYTEuYW1vcGxlZnR0eXBlKSk7Ci0gb3BjbmFtZSB8IG9wY2ZhbWlseSAKLS0t LS0tLS0tLSstLS0tLS0tLS0tLQotKDAgcm93cykKKyBvcGNuYW1lICB8IG9wY2ZhbWlseSAKKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBzdGlyX29wcyB8ICAgICAgNTU1OAorKDEgcm93KQogCiAt LSBDaGVjayB0aGF0IGVhY2ggb3BlcmF0b3IgbGlzdGVkIGluIHBnX2Ftb3AgaGFzIGFuIGFzc29j aWF0ZWQgb3BjbGFzcywKIC0tIHRoYXQgaXMgb25lIHdob3NlIG9wY2ludHlwZSBtYXRjaGVzIG9w cmxlZnQgKHBvc3NpYmx5IGJ5IGNvZXJjaW9uKS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CmluZGV4IDM2ZGMzMWMxNmM0Li5hNmQ4NmNiNGNhMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bz cWwub3V0CkBAIC01MDc0LDcgKzUwNzQsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVh cCAgIHwgVGFibGUKICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQor IHN0aXIgICB8IEluZGV4CisoOSByb3dzKQogCiBcZEEgKgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9k cwpAQCAtNTA4OCw3ICs1MDg5LDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8 IFRhYmxlCiAgaGVhcDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDggcm93cykKKyBzdGly ICAgfCBJbmRleAorKDkgcm93cykKIAogXGRBIGgqCiBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCkBA IC01MTEzLDkgKzUxMTUsOSBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAKIFxkQTogZXh0cmEg YXJndW1lbnQgImJhciIgaWdub3JlZAogXGRBKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCi0gIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVy ICAgICAgICB8ICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IGFjY2VzcyBtZXRob2RzCisgIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8 ICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogIGJyaW4gICB8IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAg fCBibG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4 IHwgYnRoYW5kbGVyICAgICAgICAgICAgfCBiLXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdp biAgICB8IEluZGV4IHwgZ2luaGFuZGxlciAgICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1l dGhvZApAQCAtNTEyNCwxMiArNTEyNiwxMyBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVh cCAgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNjZXNzIG1l dGhvZAogIGhlYXAyICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBzcGdpc3Qg fCBJbmRleCB8IHNwZ2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0 aG9kCi0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAgICAgfCBz aG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3MpCiAKIFxk QSsgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2Rz Ci0gIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICBE ZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgIE5hbWUg IHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICAgIERlc2NyaXB0 aW9uICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGJyaW4g ICB8IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBibG9jayByYW5nZSBpbmRleCAoQlJJ TikgYWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwgYnRoYW5kbGVyICAgICAgICAgICAg fCBiLXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAgICB8IEluZGV4IHwgZ2luaGFuZGxl ciAgICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhvZApAQCAtNTEzOCw3ICs1MTQxLDgg QEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlIHwgaGVhcF90YWJsZWFt X2hhbmRsZXIgfCBoZWFwIHRhYmxlIGFjY2VzcyBtZXRob2QKICBoZWFwMiAgfCBUYWJsZSB8IGhl YXBfdGFibGVhbV9oYW5kbGVyIHwgCiAgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5kbGVyICAgICAg ICAgICB8IFNQLUdpU1QgaW5kZXggYWNjZXNzIG1ldGhvZAotKDggcm93cykKKyBzdGlyICAgfCBJ bmRleCB8IHN0aXJoYW5kbGVyICAgICAgICAgIHwgc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVu dCBhY2Nlc3MgbWV0aG9kCisoOSByb3dzKQogCiBcZEErIGgqCiAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCi0tIAoyLjQzLjAKCg== --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0003-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Disposition: attachment; filename="v13-0003-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauo12 RnJvbSA0ZWQxMjgyYmVhNmEwNTE1ZjllOTE0MjFkYTQ2ZDg4Njg4MDc1MzA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTMgMDMv MTFdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBkdXJpbmcgcGFyYWxsZWwgY29uY3VycmVudAogaW5k ZXggYnVpbGRzCgpQcmV2aW91c2x5LCBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRz IGluIHBhcmFsbGVsIG1vZGUgcmVxdWlyZWQgYQpjb25zaXN0ZW50IE1WQ0Mgc25hcHNob3QgdGhy b3VnaG91dCB0aGUgYnVpbGQsIHdoaWNoIGNvdWxkIGhvbGQgYmFjayB0aGUgeG1pbgpob3Jpem9u IGFuZCBwcmV2ZW50IGRlYWQgdHVwbGUgY2xlYW51cC4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBw cmV2aW91cyB3b3JrCm9uIHNuYXBzaG90IHJlc2V0cyAoaW50cm9kdWNlZCBmb3Igbm9uLXBhcmFs bGVsIGJ1aWxkcykgdG8gYWxzbyBzdXBwb3J0CnBhcmFsbGVsIGJ1aWxkcy4KCktleSBjaGFuZ2Vz OgotIEFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlvbiBpbiBw YXJhbGxlbCB3b3JrZXJzCi0gRXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRpb24gdG8g c3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSBXYWl0IGZvciBwYXJhbGxlbCB3b3Jr ZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2NlZWRpbmcg d2l0aCBzY2FuCi0gQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8gdmVyaWZ5IGJlaGF2aW9yIHdpdGgg dmFyaW91cyBpbmRleCB0eXBlcwoKVGhlIHNuYXBzaG90IHJlc2V0IGFwcHJvYWNoIGlzIHNhZmUg Zm9yIG5vbi11bmlxdWUgaW5kZXhlcyBzaW5jZSB0aGV5IGRvbid0Cm5lZWQgc25hcHNob3QgY29u c2lzdGVuY3kgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gRm9yIHVuaXF1ZSBpbmRleGVzLCB3ZQpj b250aW51ZSB0byBtYWludGFpbiBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8gcHJvcGVybHkgZW5m b3JjZSB1bmlxdWVuZXNzCmNvbnN0cmFpbnRzLgoKVGhpcyBoZWxwcyByZWR1Y2UgdGhlIHhtaW4g aG9yaXpvbiBpbXBhY3Qgb2YgbG9uZy1ydW5uaW5nIGNvbmN1cnJlbnQgaW5kZXgKYnVpbGRzIGlu IHBhcmFsbGVsIG1vZGUsIGltcHJvdmluZyBWQUNVVU0ncyBhYmlsaXR5IHRvIGNsZWFuIHVwIGRl YWQgdHVwbGVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAg ICAgICB8IDQ5ICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9oYW5kbGVyLmMgICAgICB8IDEyICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jICAgICAgICAgICB8IDU3ICsrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAgICB8IDM3ICsrKysrKysrKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgNTAgKysrKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8ICAzICst CiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAgICAgfCAgOCAtLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAgICB8ICAzICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgOSArLS0KIC4uLi9l eHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDI1ICsrKysrKystCiAu Li4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAgNyArKy0KIDEz IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKaW5kZXggYzIxNjA4YTZmZDguLmU1ODA0ODNhN2NiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCkBAIC0xNDMsNyArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkxlYWRl cgogCSAqLwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29y dDsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJV c2FnZSAqYnVmZmVydXNhZ2U7CiB9IEJyaW5MZWFkZXI7CkBAIC0yMzEsNyArMjMwLDcgQEAgc3Rh dGljIHZvaWQgYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhCcmluQnVpbGRTdGF0ZSAqc3RhdGUsCiBz dGF0aWMgdm9pZCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCSBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpOwogc3RhdGljIHZvaWQgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5M ZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgU2l6ZSBf YnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25h cHNob3QpOworc3RhdGljIFNpemUgX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0 aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9oZWFwc2NhbihCcmluQnVp bGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9tZXJnZShCcmlu QnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRl X2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKQEAgLTEyNDQsNyArMTI0Myw2 IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICpp bmRleEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJICAgc3Rh dGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5nZVN0YXJ0 KTsKLQkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2VzICovCkBA IC0xMjU5LDYgKzEyNTcsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1 cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGlkeHR1cGxlczsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQp KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0yMzU5LDcgKzIzNTgsNiBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiB7CiAJUGFyYWxsZWxDb250ZXh0ICpwY3h0OwogCWludAkJCXNjYW50dXBs ZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJc25hcHNob3Q7CiAJU2l6ZQkJZXN0YnJpbnNoYXJlZDsK IAlTaXplCQllc3Rzb3J0OwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CkBAIC0yMzkwLDI1ICsy Mzg4LDI1IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9m IHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAq IFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBv dXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJF Q0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtl IGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBh Y2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxh ciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRl eCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAor CSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29uY3Vy cmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3QgPSBT bmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVs c2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGltYXRl IHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVEIHdvcmtzcGFjZS4KIAkg Ki8KLQllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAs IHNuYXBzaG90KTsKKwllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hh cmVkKGhlYXApOwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0 YnJpbnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1 cGxlc29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBlc3Rzb3J0KTsKQEAgLTI0NDgsOCArMjQ0Niw2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJy aW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAl7CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hv dCgpOwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBh cmFsbGVsTW9kZSgpOwogCQlyZXR1cm47CkBAIC0yNDc0LDcgKzI0NzAsOCBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJ CQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJ CQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hv dCA6IFNuYXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0 b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVk IHNwYWNlLgpAQCAtMjUyMCw3ICsyNTE3LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQli cmlubGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJYnJpbmxlYWRlci0+YnJpbnNo YXJlZCA9IGJyaW5zaGFyZWQ7CiAJYnJpbmxlYWRlci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7 Ci0JYnJpbmxlYWRlci0+c25hcHNob3QgPSBzbmFwc2hvdDsKIAlicmlubGVhZGVyLT53YWx1c2Fn ZSA9IHdhbHVzYWdlOwogCWJyaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAK QEAgLTI1MzYsNiArMjUzMiwxMyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBs ZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICov CiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gYnJpbmxlYWRlcjsKIAorCS8qCisJICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNuYXBzaG90cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVy aW9kaWNhbGx5LgorCSAqIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRl ZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2Fu IG91cnNlbHZlcyAqLwogCWlmIChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9w YXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU0NCw3 ICsyNTQ3LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVkcyB0byB3 YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBz dXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIu CiAJICovCi0JV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghaXNj b25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2Up OwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiB9CkBAIC0yNTY3LDkgKzI1NzEsNiBAQCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAq YnJpbmxlYWRlciwgQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlu bGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxs ZWxRdWVyeSgmYnJpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2Fn ZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9u ZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkp Ci0JCVVucmVnaXN0ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBh cmFsbGVsQ29udGV4dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9 CkBAIC0yNzY5LDE0ICsyNzcwLDE0IEBAIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0 YXRlICpzdGF0ZSkKIAogLyoKICAqIFJldHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVp cmVkIHRvIHN0b3JlIHN0YXRlIGZvciBhIHBhcmFsbGVsCi0gKiBicmluIGluZGV4IGJ1aWxkIGJh c2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGJyaW4g aW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNob3QpCitfYnJpbl9wYXJhbGxlbF9l c3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2Nh dGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVG RkVSQUxJR04oc2l6ZW9mKEJyaW5TaGFyZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2Vz dGltYXRlKGhlYXAsIHNuYXBzaG90KSk7CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0 ZShoZWFwLCBJbnZhbGlkU25hcHNob3QpKTsKIH0KIAogLyoKQEAgLTI3OTgsNiArMjc5OSw3IEBA IF9icmluX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlCiAJLyogUGVyZm9ybSB3b3JrIGNvbW1vbiB0byBhbGwg cGFydGljaXBhbnRzICovCiAJX2JyaW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0 ZSwgYnJpbmxlYWRlci0+YnJpbnNoYXJlZCwKIAkJCQkJCQkJICBicmlubGVhZGVyLT5zaGFyZWRz b3J0LCBoZWFwLCBpbmRleCwgc29ydG1lbSwgdHJ1ZSk7CisJQXNzZXJ0KCFicmlubGVhZGVyLT5i cmluc2hhcmVkLT5pc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eGlkKSk7CiB9CiAKIC8qCkBAIC0yOTM4LDYgKzI5NDAsMTMgQEAgX2JyaW5fcGFyYWxsZWxfYnVp bGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfYnJpbl9wYXJhbGxl bF9zY2FuX2FuZF9idWlsZChidWlsZHN0YXRlLCBicmluc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJ CQkJCQkgIGhlYXBSZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7CisJaWYgKGJyaW5zaGFy ZWQtPmlzY29uY3VycmVudCkKKwl7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRh dGVDYXRhbG9nU25hcHNob3QoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhpZCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhl Y3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tF WV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCmluZGV4IDU4MGVjN2Y5YWE4Li4zYjNjYmU1NzFhYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjMxLDE0ICsxMjMxLDEzIEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBTbmFwc2hv dEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0 aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9E RUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0 cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90Ci0JICogYW5kIGluZGV4IHdoYXRl dmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBs aXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3QgaXMgcmVzZXQKKwkgKiBl dmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4KS4KIAkgKi8KIAlPbGRl c3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgogCSAqIEZvciB1bmlxdWUgaW5k ZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KLQkgKiBJ biBjYXNlIG9mIHBhcmFsbGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJl cXVpcmVkCi0JICogdG8gcGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2gg aXMgbm90IHlldCByZWFkeS4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgJiYKIAkJCQkJICAhaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKQEAgLTEzMDAs OCArMTI5OSwxMSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNz ZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3NuYXBzaG90OwotCQlQdXNo QWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0 cnVlOworCQlpZiAoIXJlc2V0X3NuYXBzaG90cykKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBzaG90 KHNuYXBzaG90KTsKKwkJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJCX0KIAl9 CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jCmluZGV4IGI0OTBkYTBlZWVlLi44MTBmODBmYzhlNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKQEAgLTMyMSwyMiArMzIxLDIwIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGluZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2Fu KGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKLQlBc3NlcnQoaW5kZXhJbmZv LT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKLQkJICAhaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlp X1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgog CSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNw b29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVl IHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwg aXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICov Ci0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWlu ZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7 CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nw b29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJ CV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0 bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOwotCUFzc2Vy dChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8 fAotCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhC dWlsZFJlc3VsdCkpOwogCkBAIC00ODUsOCArNDgzLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAog CQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJ CQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1Nu YXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBm b3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVyCkBAIC0xNDIxLDYgKzE0 MTgsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29s IGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwog CWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90ID0gdHJ1ZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxl bjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzgsMTIgKzE0 MzYsMjEgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxl YWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAorICAgIC8qCisJICog Rm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2Fs bHkgcmVzZXQgc25hcHNob3RzCisJICogdG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZh bmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0CisJICogcmVxdWlyZSBh IGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBz dGlsbCBuZWVkCisJICogYSBzdGFibGUgc25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlx dWVuZXNzIGNvbnN0cmFpbnRzLgorICAgICAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJy ZW50ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKKwogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBv ZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkg KiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8g b3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBS RUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFr ZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUg YWNjb3JkaW5nIHRvIHRoYXQuCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhh dCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5IGluCisJICogY2FzZSBvZiBub24t dW5pcXVlIGluZGV4LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTEsNiAr MTQ1OCwxMSBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7 CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNl dF9zbmFwc2hvdCkKKwl7CisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJ c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBA IC0xNTExLDcgKzE1MjMsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJewogCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAm JiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNo b3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxNb2Rl KCk7CkBAIC0xNTM4LDcgKzE1NTAsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQt PmJyb2tlbmhvdGNoYWluID0gZmFsc2U7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUo YnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChi dHNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJ CQkJCQkgIHJlc2V0X3NuYXBzaG90KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29y dC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjE0LDYg KzE2MjcsMTMgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5v dyB0aGF0IGl0J3MgY2xlYXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUt PmJ0bGVhZGVyID0gYnRsZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBi dWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBX YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJ aWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4 dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVy cGFydGljaXBhdGVzKQogCQlfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0 YXRlKTsKQEAgLTE2MjIsNyArMTY0Miw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBDYWxs ZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSByZXR1cm4u ICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3Qg aGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0 KTsKKwlpZiAoIXJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0xNjQ2LDcgKzE2NjcsNyBAQCBfYnRfZW5kX3BhcmFsbGVs KEJUTGVhZGVyICpidGxlYWRlcikKIAkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVy LT5idWZmZXJ1c2FnZVtpXSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKIAkvKiBGcmVlIGxh c3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJ c01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQorCWlmIChidGxlYWRlci0+c25hcHNo b3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KGJ0bGVhZGVyLT5zbmFwc2hv dCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpOwogCURlc3Ryb3lQ YXJhbGxlbENvbnRleHQoYnRsZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAg LTE4OTYsNiArMTkxNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGU7CiAJ QlRCdWlsZFN0YXRlIGJ1aWxkc3RhdGU7CiAJVGFibGVTY2FuRGVzYyBzY2FuOworCVBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJlbHR1cGxlczsKIAlJbmRleEluZm8gICpp bmRleEluZm87CiAKQEAgLTE5NTAsMTEgKzE5NzIsMTUgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5k X3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJLyogSm9pbiBwYXJh bGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oYnRzcG9vbC0+aW5kZXgp OwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQ7Ci0J c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpKTsKKwlwc2NhbiA9IFBhcmFs bGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKTsKKwlzY2FuID0gdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsIHBzY2FuKTsKIAlyZWx0dXBsZXMgPSB0YWJsZV9p bmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBpbmRleEluZm8s CiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2NhbGxiYWNrLAogCQkJCQkJ CQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsK KwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsK KwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogRXhlY3V0ZSB0aGlzIHdvcmtlcidzIHBhcnQgb2Yg dGhlIHNvcnQgKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0xOTkwLDQgKzIwMTYsNyBAQCBfYnRfcGFy YWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwK IAl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wtPnNvcnRzdGF0ZSk7CiAJaWYgKGJ0c3Bvb2wyKQogCQl0 dXBsZXNvcnRfZW5kKGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOworCUFzc2VydCghcHNjYW4tPnBoc19y ZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJ aWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5k ZXggZTE4YThmODI1MGYuLmI1YjdiZTYwYTVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMKQEAgLTEzMSwxMCArMTMxLDEwIEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxh dGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVNpemUJCXN6ID0gMDsKIAotCWlmIChJ c01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hv dCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXN6ID0gYWRkX3NpemUoc3osIEVzdGlt YXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVsc2UKLQkJQXNzZXJ0KHNuYXBzaG90ID09 IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IHNuYXBz aG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9IGFkZF9zaXplKHN6LCByZWwtPnJkX3Rh YmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwpKTsKIApAQCAtMTQzLDIxICsxNDMsMzYg QEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25h cHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJl bCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgYm9vbCByZXNldF9zbmFwc2hvdCkKIHsK IAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9pbml0 aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYgPSBzbmFwc2hv dF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCS8qCisJICogSW5pdGlh bGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBGb3Igbm9ybWFsIHNjYW5zIHdpdGggYSBy ZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFsaXplIHRoZSBzbmFwc2hvdCBpbmZvLiBG b3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhl IHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJQXNz ZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CisJCXBzY2FuLT5waHNfc25hcHNob3Rf YW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSB0cnVlOworCQlJTkpF Q1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplIik7CisJfQorCWVsc2Ug aWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAl7CiAJCVNlcmlhbGl6ZVNuYXBzaG90KHNu YXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKIAkJcHNj YW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFwc2hv dCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RB bnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90KTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9h bnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogfQog CkBAIC0xNzAsNyArMTg1LDE5IEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCiAJQXNzZXJ0KFJlbEZpbGVM b2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsK IAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCisJLyoKKwkgKiBGb3Igc2NhbnMgdGhh dAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3Jk aW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJICogc25hcHNob3QgYXMgdGhlIGluaXRpYWwgc3Rh dGUuCisJICovCisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJeworCQlBc3NlcnQo QWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZsYWdzIHw9IFNPX1JFU0VUX1NOQVBTSE9UOworCQkv KiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LiAqLworCQlzbmFwc2hvdCA9IEdl dEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UgaWYgKCFwc2Nhbi0+cGhzX3NuYXBzaG90X2Fu eSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBzZXJpYWxpemVkIC0tIHJlc3RvcmUgaXQgKi8KIAkJ c25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QoKGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+cGhzX3Nu YXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJh bGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCA3ODE3 YmVkYzJlZi4uZTljMGE0NmZkNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwu YwpAQCAtNzYsNiArNzYsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUkVMTUFQUEVSX1NUQVRF CQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9V TkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEUpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZG MDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVECQlVSU5UNjRDT05T VCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUgcGFyYWxsZWwgc3RhdGUuICov CiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAgLTMwMSw2ICszMDIsMTAgQEAg SW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJCQkJCQlw Y3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRv ciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBtdWxf c2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndvcmtlcnMpKTsKKwkJc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJCS8qIEVzdGltYXRlIGhv dyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGluZm8uICovCiAJCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVuKHBjeHQtPmxpYnJhcnlfbmFt ZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9uYW1lKSArIDIpOwpAQCAtMzcy LDYgKzM3Nyw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQp CiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkgICAqdW5jb21taXR0ZWRlbnVt c3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNlOworCQlib29sCSAgICpzbmFw c2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47CiAKIAkJLyogU2VyaWFsaXpl IHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBAIC00ODcsNiArNDkzLDE5IEBA IEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCXN0cmNweShl bnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJCXN0cmNweShlbnRyeXBvaW50 c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25hbWUpOwogCQlzaG1fdG9jX2lu c2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5ULCBlbnRyeXBvaW50c3RhdGUp OworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgdG8gcGFzcyBp bmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25hcHNob3QuCisJCSAqLworCQlz bmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2Ms IG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJZm9yIChpID0gMDsg aSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQtPndvcmtlcltpXS5zbmFwc2hv dF9yZXN0b3JlZCA9IHNuYXBzaG90X3NldF9mbGFnX3NwYWNlICsgaSAqIHNpemVvZihib29sKTsK KwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBmYWxzZTsKKwkJfQorCQlz aG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwg c25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0ZSBud29ya2Vyc190b19s YXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4gKi8KQEAgLTU0Miw2ICs1 NjEsMTcgQEAgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQog CQkJcGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHBjeHQtPnNl ZywgTlVMTCk7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVzdG9yZWQgZmxhZyB0byBm YWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJYm9vbAkgICAqc25hcHNo b3RfcmVzdG9yZWRfc3BhY2U7CisJCWludAkJCWk7CisJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl ID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9S RVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7ICsraSkK KwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJfQogfQogCiAvKgpAQCAt NjU3LDYgKzY4NywxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRvIHRoZWlyIGVycm9yIHF1 ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2VyIGZhaWxzIHRvIGRvIHRo aXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRoZXIgZWFjaCBwYXJhbGxl bCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRzIHNuYXBzaG90LiBUaGlz IGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0cyB0byBlbnN1cmUg YWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBzaG90IGJlZm9yZSBwcm9j ZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4gYXNzdW1lIHRoYXQgaWYg dGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0aGUKICAqIG51bWJlciBv ZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIGhhdmUgaW5pdGlhbGl6 ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMuICBXaGV0aGVyIG9yIG5v dCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02ODYsNyArNzIwLDcgQEAgTGF1bmNo UGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIGNhbGwgdGhpcyBmdW5j dGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQ YXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFy YWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KQogewogCWludAkJCWk7 CiAKQEAgLTczMCw5ICs3NjQsMTIgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBh cmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRfcXVldWUocGN4dC0+d29y a2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2VuZGVyKG1xKSAhPSBOVUxM KQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hlZC4gKi8K LQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7Ci0JCQkJCSsrcGN4 dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2FpdF9mb3Jfc25hcHNob3Qg fHwgKihwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQpKQorCQkJCQl7CisJCQkJCQkv KiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLworCQkJCQkJcGN4dC0+a25v d25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRh Y2hlZF93b3JrZXJzOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxzZSBpZiAoc3RhdHVzID09 IEJHV0hfU1RPUFBFRCkKQEAgLTEyOTEsNiArMTMyOCw3IEBAIFBhcmFsbGVsV29ya2VyTWFpbihE YXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQYXJhbGxlbFN0YXRlICpm cHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkgICAqc25hcHNob3RfcmVz dG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFuZGxlICptcWg7CiAJY2hh cgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTQ5NSw2ICsxNTMzLDEwIEBAIFBhcmFsbGVsV29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wZ3By b2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJLyogU25hcHNob3QgaXMg cmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJvdXQgaXQuICovCisJc25h cHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9T TkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW1BhcmFs bGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisKIAkvKgogCSAqIFdlJ3ZlIGNoYW5nZWQgd2hpY2gg dHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9yZSBpbnZhbGlkYXRlCiAJICogc3lz dGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA4YzZkZmVjZjUxNS4uNzA3ZmYzOWVmNDAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGluZGV4X2NvbmN1cnJlbnRs eV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25h cHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwot CUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9V bmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQo aW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBm dW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IGZhMmQ1MjJiMjVmLi5lZjRkMGFlMmZhYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0yNjIsNyArMjYyLDggQEAgRXhlY1NlcVNj YW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwK LQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3Nu YXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5v ZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv c25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKaW5kZXggM2QwMThj M2ExZTguLjRjZDUzNmU5ODhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3Nu YXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwpAQCAtMjgzLDE0 ICsyODMsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBTbmFwc2hvdAogR2V0TGF0 ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJlIGFibGUgdG8gcmVsYXgg dGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29yawotCSAqIG5lZWRzIGl0 LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2coRVJST1IsCi0JCQkgImNh bm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFyYWxsZWwgb3BlcmF0aW9u Iik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMgcmVxdWlyaW5nIHN1cHBv cnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9naWNhbCBkZWNvZGluZywg YnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVkLgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxs ZWwuaAppbmRleCA4ODExNjE4YWNiNy4uZjVjYWUzOWM4NWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5o CkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsV29ya2VySW5mbwogewog CUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1fbXFfaGFuZGxlICplcnJv cl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBhcmFsbGVsV29ya2VySW5m bzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02NSw3ICs2Niw3IEBAIGV4 dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpOwog ZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0 KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRl eHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJuIHZvaWQgTGF1bmNoUGFy YWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRlcm4gdm9pZCBXYWl0Rm9y UGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKK2V4dGVybiB2 b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQs IGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBEZXN0cm95 UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gYm9vbCBQYXJh bGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBkYzZlMDE4NDI4 NC4uODUyOWI4MDhhZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODIsNiArODIsNyBAQCB0eXBl ZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVsRmlsZUxvY2F0b3IgcGhz X2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8KIAlib29sCQlwaHNfc3lu Y3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dpYz8gKi8KIAlib29sCQlw aHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19zbmFwc2hvdF9kYXRhPyAq LworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JFU0VUX1NOQVBTSE9UPyAq LwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNuYXBzaG90ICovCiB9IFBh cmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBl Yzg5MjhhZDkwYi4uOWE5YjA5NGYzZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90 YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTE4MCw3ICsx MTgwLDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9u IHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9pZCB0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wgcmVzZXRfc25hcHNob3Qp OwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5gIG5lZWRzIHRvIGhhdmUg YmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xNzk4LDkgKzE3OTksOSBAQCB0YWJsZV9zY2FuX2Fu YWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1p Z2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgot ICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVu dCBidWlsZAotICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRo YXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhlIGZseSB0byBhbGxvdyB4 bWluIGhvcml6b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJl bnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKKyAqIGZvciB0aGUg c2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxs b3cgeG1pbgorICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91Ymxl CiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5NDhkMTIzMmFhMC4uNTk1YTQwMDBjZTAgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNf cmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3LDYgKzE3LDEyIEBAIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7Cisg aW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CiBJTlNFUlQgSU5UTyBj aWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMCkgcyhpKTsKQEAgLTcyLDMwICs3OCw0NSBAQCBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhlIHNhbWUg aW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFy YWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBw YXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl Jyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBT Q0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8g MyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRleCA1MDcyNTM1YjM1 NS4uMjk0MWFhN2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtMyw3ICszLDcg QEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMn LCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jl c2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkg a2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CiAKKy0tIERl dGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBs ZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisKIENSRUFURSBVTklRVUUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CkBAIC04Myw0ICs4Niw0IEBAIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIAogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3Nu YXAgQ0FTQ0FERTsKIAotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK0RST1AgRVhU RU5TSU9OIGluamVjdGlvbl9wb2ludHM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAK Mi40My4wCgo= --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0004-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Disposition: attachment; filename="v13-0004-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauo33 RnJvbSAzMWY2MmU3Y2Q2N2NiMDI0NDllZDAyZTVjZjdkNWQ0ODlhZDdmMjBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCA3IERlYyAyMDI0IDIzOjI3OjM0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTMgMDQv MTFdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleAogYnVp bGRzCgpQcmV2aW91c2x5LCBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMgdXNlZCBhIGZp eGVkIHNuYXBzaG90IGZvciB0aGUgZW50aXJlCnNjYW4gdG8gZW5zdXJlIHByb3BlciB1bmlxdWVu ZXNzIGNoZWNrcy4gVGhpcyBjb3VsZCBkZWxheSB2YWN1dW0ncyBhYmlsaXR5IHRvCmNsZWFuIHVw IGRlYWQgdHVwbGVzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJpb2RpY2FsbHkgZHVyaW5nIGNv bmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUKc3RpbGwgbWFpbnRhaW5pbmcgdW5p cXVlbmVzcyBieToKCjEuIElnbm9yaW5nIGRlYWQgdHVwbGVzIGR1cmluZyB1bmlxdWVuZXNzIGNo ZWNrcyBpbiB0dXBsZXNvcnQKMi4gQWRkaW5nIGEgdW5pcXVlbmVzcyBjaGVjayBpbiBfYnRfbG9h ZCB0aGF0IGRldGVjdHMgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIHdpdGggdGhlIHNhbWUga2V5IHZh bHVlcwoKVGhpcyBpbXByb3ZlcyB2YWN1dW0gZWZmZWN0aXZlbmVzcyBkdXJpbmcgbG9uZy1ydW5u aW5nIGluZGV4IGJ1aWxkcyB3aXRob3V0CmNvbXByb21pc2luZyBpbmRleCB1bmlxdWVuZXNzIGVu Zm9yY2VtZW50LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAg ICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAg ICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAg ICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAg ICB8IDE5MiArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c3BsaXRsb2MuYyAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1 dGlscy5jICAgICAgICAgIHwgIDI5ICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAg ICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYyAgICB8ICA2OSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgg ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgg ICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0Lmgg ICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3Rz Lm91dCAgICAgICAgICB8ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygr KSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv UkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRl NDA3ZjM3NWEuLjgyOWRhZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAg LTM4NiwxMiArMzg2LDEyIEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQg YmVmb3JlIHdlIHN0YXJ0IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5n IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUg aW5kZXgKLWZvciBhbGwgcm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAg QW55IHR1cGxlcyB2aXNpYmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQg Zm9yd2FyZC1ncm93aW5nIEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1Qg dXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3Ig dGhlIHNhbWUKLXJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBh Ym92ZSwgd2UgcG9pbnQgdGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVw ZGF0ZSBjaGFpbiBidXQgd2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUu Citmb3IgYWxsIHJvd3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2gg aXMgdXBkYXRlZCBldmVyeSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25h cHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAg KFRoZXkgbWlnaHQgaGF2ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUg YnJva2VuLAorYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEg cmVndWxhciBpbmRleCBidWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5 IGF0IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkg dmFsdWUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3Ig aW5zZXJ0cyAoYnV0IHN0aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdh aXQgZm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0 YWtlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAzYjNjYmU1 NzFhYy4uYmMzZDM3MzhlZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwpAQCAtMTIzMiwxNSArMTIzMiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2 ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1 aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90 CiAJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0 aGF0IHNuYXBzaG90IGlzIHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9u LXVuaXF1ZSBpbmRleCkuCisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5l ZWQgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1 cnJlbnQgYnVpbGRzIG9mIG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9k aWNhbGx5CisJICogcmVzZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0 dXBsZXMuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 ICYmCi0JCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9j YXRhbG9nOyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6 eSBWQUNVVU1zIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0ZGVkdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCA1 MzM2M2VlNjk1YS4uZjg5NzZkZTY3ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0ZGVkdXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVw LmMKQEAgLTE0OCw3ICsxNDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsIEluZGV4VHVwbGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBf c3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0 ZS0+ZGVkdXBsaWNhdGUgJiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5i YXNlLCBpdHVwKSA+IG5rZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBz dGF0ZS0+YmFzZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2 ZV9odGlkKHN0YXRlLCBpdHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRf Ym90dG9tdXBkZWxfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBS ZWwsCiAJCQkvKiBpdHVwIHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRf ZGVkdXBfc3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlm IChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMg JiYKKwkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVw LCBOVUxMKSA+IG5rZXlhdHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0 dXApKQogCQl7CiAJCQkvKiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBw ZW5kaW5nIGludGVydmFsICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFs KFJlbGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0g UGFnZUdldEl0ZW1JZChwYWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdl dEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3 aXRlbSwgaXR1cCkgPiBua2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRl bUlkKHBhZ2UsIFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4 VHVwbGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRz X2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0 dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4g dHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggODEwZjgwZmM4 ZTYuLjhiMjM2YzhjY2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODMs NiArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9v bAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9k ZWFkX2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwog CWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwog CWJvb2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0y MDMsMTUgKzIwNSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0 cnVjdCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3Rf ZGlzdGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAg ICpzcG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4 IGlzIGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIg aW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAq IHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBh bmQgYnVpbGQgbm9uLWNvbmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8g c3Bvb2wyIGluc3RlYWQgb2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVj ay4KIAkgKi8KIAlCVFNwb29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0y NTgsNyArMjU4LDcgQEAgc3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNw b29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJ dGVtUG9pbnRlciBzZWxmLAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1z dGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bv b2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCk7CiBz dGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVy IHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJ c0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3Bh Z2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMDMsOCArMzAzLDYg QEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRl eEluZm8pCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9TVEFU UyAqLwogCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwotCWJ1 aWxkc3RhdGUubnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3Rp bmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBo ZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIxLDIwICszMTksMjAgQEAgYnRi dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9i dF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwot CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVl IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNv cnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxl cyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxz LiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxs ZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRl LnNwb29sMiwgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVu dCk7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwg aW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUu c3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWls ZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFy YWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxk UmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC0zODEsNiAr Mzc5LDExIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4Owog CWJ0c3Bvb2wtPmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVs bHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworICAgIC8q CisgICAgICogV2UgbmVlZCB0byBpZ25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3Mg aW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLgorICAgICAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1 c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Ygc25hcHNob3QuCisgICAgICovCisJYnRzcG9vbC0+dW5p cXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8t PmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMgcHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUt PnNwb29sID0gYnRzcG9vbDsKQEAgLTQyOSw4ICs0MzIsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2Fu KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs CiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlzbSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwog CWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3RhdGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhf YnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3RhdGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRz dGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUo aGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5pcXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNf bm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJ CQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVT T1JUX05PTkUpOwogCkBAIC00MzgsOCArNDQyLDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkg KiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRleCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25k IHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdl IGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bvb2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24n dCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJ biBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJl IHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRl ciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBkdXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFz ZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlf VW5pcXVlICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpi dHNwb29sMiA9IChCVFNwb29sICopIHBhbGxvYzAoc2l6ZW9mKEJUU3Bvb2wpKTsKIAkJU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxMOwpAQCAtNDcwLDcgKzQ3OCw3IEBAIF9idF9zcG9v bHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAq LwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5f aW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgd29ya19tZW0sCisJCQl0dXBs ZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3JkaW5hdGUyLCBUVVBMRVNPUlRfTk9ORSk7CiAJfQog CkBAIC00ODMsNyArNDkxLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBf YnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8t PmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZv LT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK IAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAg UmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtNTM5LDcgKzU0Nyw3IEBAIF9idF9zcG9vbChCVFNw b29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251 bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9z bmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bv b2wyLCBib29sIGlzY29uY3VycmVudCkKIHsKIAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01 NjEsNyArNTY5LDcgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpi dHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVf UEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+ c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9v bC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKQEAgLTU3NSw3ICs1ODMs NyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBi b29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0Vf TEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2ws IGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1NCwxMyArMTE2MiwxMTcgQEAgX2J0X2xvYWQoQlRXcml0 ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNv cnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVk dXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1 bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVN KTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRlLT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0 c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4 KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVhZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBh YnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhp c3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGluZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVw bGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBmZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRk ZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVh ZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQorCWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkK Kwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZhbHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7 CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBN YWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAor CQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hU YWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsK KworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlxdWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKwor CQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRfZ2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3Rh dGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJCQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOwor CisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2Ug Ki8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQorCQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3Rh dGUsIDApOworCisJCQlpZiAocHJldiAhPSBOVUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1 cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNfbnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdh aW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhpbmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0 IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJCQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJE YXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMgdHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNf ZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZo YXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2Vl cF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251 bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFuZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLwor CQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJ dHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJCQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJ CQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUgaWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZf dGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBw cmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxpdmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShm ZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOwor CQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOworCQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZh bHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3RpZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5k ZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdh aW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBhcmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVj dGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJCQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUp CisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9kZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9 IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5pbmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRF WF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJ CQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJ CQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwg dmFsdWVzLCBpc251bGwpOworCisJCQkJCQkvKiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdp dGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9O KSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNc IiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgp KSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQu Iiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0 LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29uc3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJ CQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJ CQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYg KCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJc2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZf dGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJCV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBp dHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJlZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhU dXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJ CQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChz bG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewog CQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wgZm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdl IGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjEsNyArMTQzMyw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0 ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJ CQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJCX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRz X2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRlLT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtl eXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5VTEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1 cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkKIAkJCXsKIAkJCQkvKgpAQCAtMTQxOCw3ICsxNTMw LDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBp c2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAli b29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47 CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2LDIxICsxNTQ3 LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFk ZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZv ciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5 IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5j ZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBj b25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3Rp bGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVl bmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8KLQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVu dCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICog U25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91 ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVD RU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2Ug YSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFj Y29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2Rp Y2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRp bmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5 LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTgsMTYgKzE1NjAsMTYgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3Qp CisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBj YW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBo b3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMgc2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QK KwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgor CQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9 IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2 ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91 ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzNyw2 ICsxNjM5LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0g UmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5pbmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0g YnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9 IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9 IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBs ZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lk KCk7CkBAIC0xNTUxLDcgKzE2NTQsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRh YmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJ CQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgog CSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJl c2VydmVkIHNwYWNlLgpAQCAtMTYzMSw3ICsxNzM0LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJl IHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVk IGluaXRpYWwgc25hcHNob3QuCiAJICovCi0JaWYgKHJlc2V0X3NuYXBzaG90KQorCWlmIChpc2Nv bmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsK IAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwpAQCAtMTY0Miw3ICsxNzQ1LDcgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1 bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZh aWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JaWYgKCFy ZXNldF9zbmFwc2hvdCkKKwlpZiAoIWlzY29uY3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpAQCAtMTc0NSw2ICsxODQ4LDcgQEAgX2J0X2xlYWRl cl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRl cndvcmtlci0+aW5kZXggPSBidWlsZHN0YXRlLT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2Vy LT5pc3VuaXF1ZSA9IGJ1aWxkc3RhdGUtPnNwb29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXIt Pm51bGxzX25vdF9kaXN0aW5jdCA9IGJ1aWxkc3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGlu Y3Q7CisJbGVhZGVyd29ya2VyLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bv b2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAKIAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwg aWYgcmVxdWlyZWQgKi8KIAlpZiAoIWJ0bGVhZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0x ODQ4LDExICsxOTUyLDEyIEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29sLT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wt PmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0 aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2Rl YWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1 cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBs ZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlz dW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJl bnQpCiAJewogCQlidHNwb29sMiA9IE5VTEw7CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5 MzIsNiArMjAzNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJ CQkJCQkJCQkJCQkgYnRzcG9vbC0+aXN1bmlxdWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51 bGxzX25vdF9kaXN0aW5jdCwKKwkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdu b3JlZCwKIAkJCQkJCQkJCQkJCQkgc29ydG1lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkg VFVQTEVTT1JUX05PTkUpOwogCkBAIC0xOTU0LDE0ICsyMDYwLDEyIEBAIF9idF9wYXJhbGxlbF9z Y2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29y ZGluYXRlMi0+blBhcnRpY2lwYW50cyA9IC0xOwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9 IHNoYXJlZHNvcnQyOwogCQlidHNwb29sMi0+c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdp bl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNl LAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wt PmluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3Jr X21lbSksIGNvb3JkaW5hdGUyLAogCQkJCQkJCQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGlu IGJ1aWxkc3RhdGUgZm9yIF9idF9idWlsZF9jYWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3Vu aXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsKLQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5j dCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9 IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5z cG9vbCA9IGJ0c3Bvb2w7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNwbGl0bG9jLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5k ZXggZTZjOWFhYTA0NTQuLjdjYjFmM2UxYmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzcGxpdGxvYy5jCkBAIC02ODcsNyArNjg3LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5k U3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBh Z2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdlLCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBs ZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdwYWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBf YnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlr ZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5l d2l0ZW0sIE5VTEwpOwogCiAJCWlmIChrZWVwbmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5 YXR0cykKIAkJewpAQCAtNzE4LDcgKzcxOCw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNw bGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJlciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlk KCZ0dXAtPnRfdGlkLCAmc3RhdGUtPm5ld2l0ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwog CS8qIENoZWNrIHNhbWUgY29uZGl0aW9ucyBhcyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8K LQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUt Pm5ld2l0ZW0pOworCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwg dHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVw bmF0dHMgPD0gbmtleWF0dHMpCiAJewpAQCAtOTY3LDcgKzk2Nyw3IEBAIF9idF9zdHJhdGVneShG aW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBw ZW5kaW5nIGEgaGVhcCBUSUQgaW4gbmV3IGhpZ2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNw bGl0CiAJICogd2l0aCBkZWZhdWx0IHN0cmF0ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFs LgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAg LTk4OCw3ICs5ODgsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0 UG9pbnQgKmxlZnRwYWdlLAogCSAqIElmIHBhZ2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNh dGVzLCBhIHNpbmdsZSB2YWx1ZSBzdHJhdGVneSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVk LgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9E VVBMSUNBVEVTOwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERh dGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1J ZChzdGF0ZS0+b3JpZ3BhZ2UsIFBfSElLRVkpOwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdl R2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5u ZXdpdGVtKTsKKwkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZB TFVFOwogCQllbHNlCkBAIC0xMTQ5LDcgKzExNDksNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5k U3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3Bs aXRfbGFzdGxlZnQoc3RhdGUsIHNwbGl0KTsKIAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0 cmlnaHQoc3RhdGUsIHNwbGl0KTsKIAotCXJldHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRl LT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFz dChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5kZXggMDBlMTdhMWYwZjkuLjY0N2Y4ZTdiM2Fm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC0xMDAsOCArMTAwLDYgQEAg c3RhdGljIGJvb2wgX2J0X2NoZWNrX3Jvd2NvbXBhcmUoU2NhbktleSBza2V5LAogCQkJCQkJCQkg U2NhbkRpcmVjdGlvbiBkaXIsIGJvb2wgKmNvbnRpbnVlc2Nhbik7CiBzdGF0aWMgdm9pZCBfYnRf Y2hlY2trZXlzX2xvb2tfYWhlYWQoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUg KnBzdGF0ZSwKIAkJCQkJCQkJCSBpbnQgdHVwbmF0dHMsIFR1cGxlRGVzYyB0dXBkZXNjKTsKLXN0 YXRpYyBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0 LAotCQkJCQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkp OwogCiAKIC8qCkBAIC00Njg0LDcgKzQ2ODIsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFC VHJlZVR1cGxlSXNQaXZvdChsYXN0bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmln aHQpKTsKIAogCS8qIERldGVybWluZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBp biB0cnVuY2F0ZWQgdHVwbGUgKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxh c3RsZWZ0LCBmaXJzdHJpZ2h0LCBpdHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0 dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYg REVCVUdfTk9fVFJVTkNBVEUKIAkvKiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZl IGZvciB0ZXN0aW5nIHB1cnBvc2VzICovCkBAIC00ODAyLDE3ICs0ODAwLDI0IEBAIF9idF90cnVu Y2F0ZShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKIC8qCiAgKiBfYnRfa2VlcF9uYXR0cyAtIGhvdyBtYW55IGtleSBhdHRyaWJ1dGVzIHRv IGtlZXAgd2hlbiB0cnVuY2F0aW5nLgogICoKKyAqIFRoaXMgaXMgZXhwb3J0ZWQgdG8gYmUgdXNl ZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25jdXJyZW50CisgKiB1bmlxdWUgaW5k ZXggYnVpbGQgaW4gY2FzZSBfYnRfa2VlcF9uYXR0c19mYXN0IGlzIG5vdCBzdWl0YWJsZSBiZWNh dXNlCisgKiBjb2xsYXRpb24gaXMgbm90ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNh ZmUuCisgKgogICogQ2FsbGVyIHByb3ZpZGVzIHR3byB0dXBsZXMgdGhhdCBlbmNsb3NlIGEgc3Bs aXQgcG9pbnQuICBDYWxsZXIncyBpbnNlcnRpb24KICAqIHNjYW5rZXkgaXMgdXNlZCB0byBjb21w YXJlIHRoZSB0dXBsZXM7IHRoZSBzY2Fua2V5J3MgYXJndW1lbnQgdmFsdWVzIGFyZQogICogbm90 IGNvbnNpZGVyZWQgaGVyZS4KICAqCisgKiBoYXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBj YXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBhbnkgdHVwbGUuCisgKgogICogVGhpcyBjYW4gcmV0 dXJuIGEgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgdGhhdCBpcyBvbmUgZ3JlYXRlciB0aGFuIHRoZQog ICogbnVtYmVyIG9mIGtleSBhdHRyaWJ1dGVzIGZvciB0aGUgaW5kZXggcmVsYXRpb24uICBUaGlz IGluZGljYXRlcyB0aGF0IHRoZQogICogY2FsbGVyIG11c3QgdXNlIGEgaGVhcCBUSUQgYXMgYSB1 bmlxdWUtaWZpZXIgaW4gbmV3IHBpdm90IHR1cGxlLgogICovCi1zdGF0aWMgaW50CitpbnQKIF9i dF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBs ZSBmaXJzdHJpZ2h0LAotCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KQorCQkJICAgQlRTY2Fu SW5zZXJ0IGl0dXBfa2V5LAorCQkJICAgYm9vbCAqaGFzbnVsbHMpCiB7CiAJaW50CQkJbmtleWF0 dHMgPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CiAJVHVwbGVE ZXNjCWl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwpAQCAtNDgzOCw2ICs0ODQzLDgg QEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRl eFR1cGxlIGZpcnN0cmlnaHQsCiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwg YXR0bnVtLCBpdHVwZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZp cnN0cmlnaHQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQor CQkJKCpoYXNudWxscykgfD0gKGlzTnVsbDEgfHwgaXNOdWxsMik7CiAKIAkJaWYgKGlzTnVsbDEg IT0gaXNOdWxsMikKIAkJCWJyZWFrOwpAQCAtNDg1Nyw3ICs0ODY0LDcgQEAgX2J0X2tlZXBfbmF0 dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQsCiAJICogZXhwZWN0ZWQgaW4gYW4gYWxsZXF1YWxpbWFnZSBpbmRleC4KIAkgKi8KIAlBc3Nl cnQoIWl0dXBfa2V5LT5hbGxlcXVhbGltYWdlIHx8Ci0JCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2Vl cF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpKTsKKwkJICAga2VlcG5hdHRz ID09IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCkp OwogCiAJcmV0dXJuIGtlZXBuYXR0czsKIH0KQEAgLTQ4NjgsNyArNDg3NSw4IEBAIF9idF9rZWVw X25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJz dHJpZ2h0LAogICogVGhpcyBpcyBleHBvcnRlZCBzbyB0aGF0IGEgY2FuZGlkYXRlIHNwbGl0IHBv aW50IGNhbiBoYXZlIGl0cyBlZmZlY3Qgb24KICAqIHN1ZmZpeCB0cnVuY2F0aW9uIGluZXhwZW5z aXZlbHkgZXZhbHVhdGVkIGFoZWFkIG9mIHRpbWUgd2hlbiBmaW5kaW5nIGEKICAqIHNwbGl0IGxv Y2F0aW9uLiAgQSBuYWl2ZSBiaXR3aXNlIGFwcHJvYWNoIHRvIGRhdHVtIGNvbXBhcmlzb25zIGlz IHVzZWQgdG8KLSAqIHNhdmUgY3ljbGVzLgorICogc2F2ZSBjeWNsZXMuIEFsc28sIGl0IG1heSBi ZSB1c2VkIGFzIGNvbXBhcmlzb24gZnVuY3Rpb24gZHVyaW5nIGNvbmN1cnJlbnQKKyAqIGJ1aWxk IG9mIHVuaXF1ZSBpbmRleC4KICAqCiAgKiBUaGUgYXBwcm9hY2ggdGFrZW4gaGVyZSB1c3VhbGx5 IHByb3ZpZGVzIHRoZSBzYW1lIGFuc3dlciBhcyBfYnRfa2VlcF9uYXR0cwogICogd2lsbCAoZm9y IHRoZSBzYW1lIHBhaXIgb2YgdHVwbGVzIGZyb20gYSBoZWFwa2V5c3BhY2UgaW5kZXgpLCBzaW5j ZSB0aGUKQEAgLTQ4NzcsNiArNDg4NSw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogICogImVxdWFsIGlt YWdlIiBjb2x1bW5zLCByb3V0aW5lIGlzIGd1YXJhbnRlZWQgdG8gZ2l2ZSB0aGUgc2FtZSByZXN1 bHQgYXMKICAqIF9idF9rZWVwX25hdHRzIHdvdWxkLgogICoKKyAqIGhhc251bGxzIHZhbHVlIHNl dCB0byB0cnVlIGluIGNhc2Ugb2YgYW55IG51bGwgY29sdW1uIGluIGFueSB0dXBsZS4KKyAqCiAg KiBDYWxsZXJzIGNhbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYXR0cmlidXRlcyBjb25zaWRlcmVk IGVxdWFsIGhlcmUgYXJlCiAgKiBkZWZpbml0ZWx5IGFsc28gZXF1YWwgYWNjb3JkaW5nIHRvIF9i dF9rZWVwX25hdHRzLCBldmVuIHdoZW4gdGhlIGluZGV4IHVzZXMKICAqIGFuIG9wY2xhc3Mgb3Ig Y29sbGF0aW9uIHRoYXQgaXMgbm90ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNhZmUu CkBAIC00ODg1LDcgKzQ4OTUsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4 VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIG1vcmUgYmFsYW5jZWQg c3BsaXQgcG9pbnQuCiAgKi8KIGludAotX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKK19idF9rZWVwX25h dHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZp cnN0cmlnaHQsCisJCQkJCWJvb2wgKmhhc251bGxzKQogewogCVR1cGxlRGVzYwlpdHVwZGVzYyA9 IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAlpbnQJCQlrZXlzeiA9IEluZGV4UmVsYXRpb25HZXRO dW1iZXJPZktleUF0dHJpYnV0ZXMocmVsKTsKQEAgLTQ5MDIsNiArNDkxMyw4IEBAIF9idF9rZWVw X25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxl IGZpcnN0cmlnaHQpCiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwgYXR0bnVt LCBpdHVwZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZpcnN0cmln aHQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQorCQkJKmhh c251bGxzIHw9IChpc051bGwxIHwgaXNOdWxsMik7CiAJCWF0dCA9IFR1cGxlRGVzY0NvbXBhY3RB dHRyKGl0dXBkZXNjLCBhdHRudW0gLSAxKTsKIAogCQlpZiAoaXNOdWxsMSAhPSBpc051bGwyKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCmluZGV4IDcwN2ZmMzllZjQwLi5kOTM3YmE2NWM5YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYwpAQCAtMTUzMSw3ICsxNTMxLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBo ZWFwUmVsYXRpb25JZCwKIAogCS8qIEludmFsaWRhdGUgY2F0YWxvZyBzbmFwc2hvdCBqdXN0IGZv ciBhc3NlcnQgKi8KIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK KwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9s bCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlB dEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKQEAgLTMyOTMsOSArMzI5Myw5IEBA IEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogaWYgd2UgdXNl ZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRl eCB0aGF0CiAgKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxl IHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KICAqCi0gKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBv ZiBub24tdW5pcXVlIGluZGV4IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlCi0gKiBz Y2FuLCB3aGljaCBjYXVzZXMgbmV3IHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkg c28gb2Z0ZW4uIFRoZSByZWFzb24KLSAqIGZvciB0aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1p biBob3Jpem9uIGZvcndhcmQuCisgKiBGdXJ0aGVybW9yZSwgd2Ugc2V0IFNPX1JFU0VUX1NOQVBT SE9UIGZvciB0aGUgc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldworICogc25hcHNob3QgdG8gYmUgc2V0 IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNvbiAgZm9yIHRoYXQgaXMgdG8KKyAq IHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCiAgKgogICogTmV4dCwgd2UgbWFy ayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90ICJpbmRpc3ZhbGlkIikgYW5k CiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFn YWluIHdlIHdhaXQgZm9yIGFsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBjOGU3ODgw Zjk1NC4uNTkyMWRjZjY4YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNjcwLDgg KzE2NzAsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjaGFpbnMgY2FuIGJlIGNy ZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBj aGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2UgYnVpbGQgdGhlIGlu ZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKLQkg KiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkg SE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0 aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxlCisJICogcmVmcmVzaGluZyBzbmFwc2hvdHMu IFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVz IHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFk ZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBh cmUgbm93IGNvbW1pdHRlZCBvcgogCSAqIHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxl IHR1cGxlIGlzIGVpdGhlciB0aGUgZW5kIG9mIGl0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90 dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4IDkxM2M0ZWY0NTVlLi4wYjI1OTI2YmM1NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwpAQCAtMzAsNiArMzAsNyBA QAogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog CiAKIC8qIHNvcnQtdHlwZSBjb2RlcyBmb3Igc29ydF9fc3RhcnQgcHJvYmVzICovCkBAIC0xMjMs NiArMTI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogCWJvb2wJCWVuZm9yY2VVbmlxdWU7CS8qIGNv bXBsYWluIGlmIHdlIGZpbmQgZHVwbGljYXRlIHR1cGxlcyAqLwogCWJvb2wJCXVuaXF1ZU51bGxz Tm90RGlzdGluY3Q7IC8qIHVuaXF1ZSBjb25zdHJhaW50IG51bGwgdHJlYXRtZW50ICovCisJYm9v bAkJdW5pcXVlRGVhZElnbm9yZWQ7IC8qIGlnbm9yZSBkZWFkIHR1cGxlcyBpbiB1bmlxdWUgY2hl Y2sgKi8KIH0gVHVwbGVzb3J0SW5kZXhCVHJlZUFyZzsKIAogLyoKQEAgLTM0OSw2ICszNTEsNyBA QCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJCQlS ZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQlib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJYm9v bCB1bmlxdWVOdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWJvb2wgdW5pcXVlRGVhZElnbm9yZWQs CiAJCQkJCQkJaW50IHdvcmtNZW0sCiAJCQkJCQkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZSwK IAkJCQkJCQlpbnQgc29ydG9wdCkKQEAgLTM5MSw2ICszOTQsNyBAQCB0dXBsZXNvcnRfYmVnaW5f aW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAlhcmctPmluZGV4LmluZGV4UmVsID0gaW5k ZXhSZWw7CiAJYXJnLT5lbmZvcmNlVW5pcXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1 ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVOdWxsc05vdERpc3RpbmN0OworCWFyZy0+dW5pcXVl RGVhZElnbm9yZWQgPSB1bmlxdWVEZWFkSWdub3JlZDsKIAogCWluZGV4U2NhbktleSA9IF9idF9t a3NjYW5rZXkoaW5kZXhSZWwsIE5VTEwpOwogCkBAIC0xNTIwLDYgKzE1MjQsNyBAQCBjb21wYXJl dHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBsZSAqYSwgY29uc3QgU29ydFR1 cGxlICpiLAogCQlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKIAkJYm9vbAkJaXNudWxs W0lOREVYX01BWF9LRVlTXTsKIAkJY2hhcgkgICAqa2V5X2Rlc2M7CisJCWJvb2wJCXVuaXF1ZUNo ZWNrRmFpbCA9IHRydWU7CiAKIAkJLyoKIAkJICogU29tZSByYXRoZXIgYnJhaW4tZGVhZCBpbXBs ZW1lbnRhdGlvbnMgb2YgcXNvcnQgKHN1Y2ggYXMgdGhlIG9uZSBpbgpAQCAtMTUyOSwxOCArMTUz NCw1OCBAQCBjb21wYXJldHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBsZSAq YSwgY29uc3QgU29ydFR1cGxlICpiLAogCQkgKi8KIAkJQXNzZXJ0KHR1cGxlMSAhPSB0dXBsZTIp OwogCi0JCWluZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEsIHR1cERlcywgdmFsdWVzLCBpc251bGwp OwotCi0JCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5p bmRleFJlbCwgdmFsdWVzLCBpc251bGwpOwotCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgY3Jl YXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo YXJnLT5pbmRleC5pbmRleFJlbCkpLAotCQkJCSBrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVz IGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKLQkJCQkgZXJyZGV0YWlsKCJEdXBsaWNhdGUg a2V5cyBleGlzdC4iKSwKLQkJCQkgZXJydGFibGVjb25zdHJhaW50KGFyZy0+aW5kZXguaGVhcFJl bCwKLQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwp KSkpOworCQkvKiBUaGlzIGlzIGZhaWwtZmFzdCBjaGVjaywgc2VlIF9idF9sb2FkIGZvciBkZXRh aWxzLiAqLworCQlpZiAoYXJnLT51bmlxdWVEZWFkSWdub3JlZCkKKwkJeworCQkJYm9vbAlhbnlf dHVwbGVfZGVhZCwKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlLAorCQkJCQlpZ25vcmVkOworCisJ CQlUdXBsZVRhYmxlU2xvdAkqc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlv bkdldERlc2NyKGFyZy0+aW5kZXguaGVhcFJlbCksCisJCQkJCQkJCQkJCQkJCQkgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSk7CisJCQlJdGVtUG9pbnRlckRhdGEgdGlkID0gdHVwbGUxLT50X3RpZDsK KworCQkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdp bihhcmctPmluZGV4LmhlYXBSZWwpOworCQkJYW55X3R1cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhf ZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4s ICZpZ25vcmVkKTsKKworCQkJaWYgKCFhbnlfdHVwbGVfZGVhZCkKKwkJCXsKKwkJCQljYWxsX2Fn YWluID0gZmFsc2U7CisJCQkJdGlkID0gdHVwbGUyLT50X3RpZDsKKwkJCQlhbnlfdHVwbGVfZGVh ZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnR1cGxlMi0+dF90aWQsIFNuYXBz aG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sCisJCQkJCQkJCQkJCQkJCSAgJmlnbm9yZWQpOwor CQkJfQorCisJCQlpZiAoYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJZWxvZyhERUJVRzUsICJz a2lwcGluZyBkdXBsaWNhdGUgdmFsdWVzIGJlY2F1c2Ugc29tZSBvZiB0aGVtIGFyZSBkZWFkOiAo JXUsJXUpIHZzICgldSwldSkiLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVw bGUxLT50X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUxLT50 X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZ0dXBsZTItPnRfdGlkKSwK KwkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0dXBsZTItPnRfdGlkKSk7CisKKwkJ CQl1bmlxdWVDaGVja0ZhaWwgPSBmYWxzZTsKKwkJCX0KKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3Qoc2xvdCk7CisJCQl0YWJsZV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gpOworCQkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwkJfQorCQlpZiAodW5p cXVlQ2hlY2tGYWlsKQorCQl7CisJCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMs IHZhbHVlcywgaXNudWxsKTsKKworCQkJa2V5X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNjcmlw dGlvbihhcmctPmluZGV4LmluZGV4UmVsLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCS8qIGtlZXAg dGhpcyBlcnJvciBtZXNzYWdlIGluIHN5bmMgd2l0aCB0aGUgc2FtZSBpbiBfYnRfbG9hZCAqLwor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9O KSwKKwkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIs CisJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwp KSwKKwkJCQkJCQlrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwg a2V5X2Rlc2MpIDoKKwkJCQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAor CQkJCQkJCWVycnRhYmxlY29uc3RyYWludChhcmctPmluZGV4LmhlYXBSZWwsCisJCQkJCQkJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSkpOworCQl9 CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAppbmRleCBiODhiZDQ0MzU1NC4uZTc1NmFkOWI1YjAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvbmJ0cmVlLmgKQEAgLTEyOTcsOCArMTI5NywxMCBAQCBleHRlcm4gYm9vbCBidHBy b3BlcnR5KE9pZCBpbmRleF9vaWQsIGludCBhdHRubywKIGV4dGVybiBjaGFyICpidGJ1aWxkcGhh c2VuYW1lKGludDY0IHBoYXNlbnVtKTsKIGV4dGVybiBJbmRleFR1cGxlIF9idF90cnVuY2F0ZShS ZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCiAJCQkJCQkJICAgSW5kZXhUdXBsZSBm aXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkpOworZXh0ZXJuIGludAlfYnRfa2VlcF9u YXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKKwkJCQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgYm9vbCAqaGFzbnVsbHMpOwog ZXh0ZXJuIGludAlfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwKLQkJCQkJCQkJSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KTsKKwkJCQkJCQkJSW5kZXhU dXBsZSBmaXJzdHJpZ2h0LCBib29sICpoYXNudWxscyk7CiBleHRlcm4gYm9vbCBfYnRfY2hlY2tf bmF0dHMoUmVsYXRpb24gcmVsLCBib29sIGhlYXBrZXlzcGFjZSwgUGFnZSBwYWdlLAogCQkJCQkJ CU9mZnNldE51bWJlciBvZmZudW0pOwogZXh0ZXJuIHZvaWQgX2J0X2NoZWNrX3RoaXJkX3BhZ2Uo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggOWE5YjA5 NGYzZjEuLmQ2OWJhYWEzNjRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTE3OTksOSArMTc5OSw4 IEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJh bnNhY3Rpb25JZCBPbGRlc3RYbWluLAogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBzZW5zZSBm b3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9yIG90aGVy IEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgY29uY3VycmVudCAgaW5k ZXggYnVpbGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZAotICogZm9yIHRoZSBzY2FuLiBU aGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4bWlu Ci0gKiBob3Jpem9uIHByb3BhZ2F0ZS4KKyAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBpbmRleCBi dWlsZCBTT19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkIGZvciB0aGUgc2Nhbi4KKyAqIFRoYXQg bGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9y aXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRleF9i dWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5kZXggYzYz ZjFlNWQ2ZGEuLjc2MTMxYjZmMmUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBs ZXNvcnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAtNDI4LDYgKzQy OCw3IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVl KFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwKIAkJ CQkJCQkJCQkJCSAgIGJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgdW5p cXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQkJCQkJCSAgIGJvb2wJdW5pcXVlRGVhZElnbm9y ZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwgU29ydENvb3JkaW5hdGUgY29vcmRpbmF0 ZSwKIAkJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAq dHVwbGVzb3J0X2JlZ2luX2luZGV4X2hhc2goUmVsYXRpb24gaGVhcFJlbCwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA1OTVhNDAwMGNlMC4uOWYwM2ZhMzAzM2MgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNf cmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTQxLDcgKzQxLDExIEBAIEVO RDsgJCQ7CiAtLS0tLS0tLS0tLS0tLS0tCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9y ZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwpAQCAtODYsNyArOTAsOSBAQCBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUnKTsKICgxIHJvdykKIAogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKLS0gCjIuNDMuMAoK --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0002-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Disposition: attachment; filename="v13-0002-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauo01 RnJvbSAwNzM1NDU2OWI4OGVmNWJkZTkwYzdmNTZmZGFjZGM2ODIxODkxZjY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDAy LzExXSBBbGxvdyBhZHZhbmNpbmcgeG1pbiBkdXJpbmcgbm9uLXVuaXF1ZSwKIG5vbi1wYXJhbGxl bCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHNuYXBz aG90cwoKTG9uZy1ydW5uaW5nIHRyYW5zYWN0aW9ucyBsaWtlIHRob3NlIHVzZWQgYnkgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2FuIGhvbGQgYmFj ayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbiwgcHJldmVudGluZyBWQUNVVU0gZnJvbSBjbGVhbmlu ZyB1cCBkZWFkIHR1cGxlcyBhbmQgcG90ZW50aWFsbHkgbGVhZGluZyB0byB0cmFuc2FjdGlvbiBJ RCB3cmFwYXJvdW5kIGlzc3Vlcy4gSW4gUG9zdGdyZVNRTCAxNCwgY29tbWl0IGQ5ZDA3NjIyMmY1 YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBpbmRleGluZyB0cmFuc2FjdGlv bnMgd2l0aCBDT05DVVJSRU5UTFkgdG8gbWl0aWdhdGUgdGhpcyBwcm9ibGVtLiBIb3dldmVyLCB0 aGlzIHdhcyByZXZlcnRlZCBpbiBjb21taXQgZTI4YmI4ODUxOTY5IGJlY2F1c2UgaXQgY291bGQg Y2F1c2UgaW5kZXhlcyB0byBtaXNzIGhlYXAgdHVwbGVzIHRoYXQgd2VyZSBIT1QtdXBkYXRlZCBh bmQgSE9ULXBydW5lZCBkdXJpbmcgdGhlIGluZGV4IGNyZWF0aW9uLCBsZWFkaW5nIHRvIGluZGV4 IGNvcnJ1cHRpb24uCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzYWZlIGFsdGVybmF0aXZlIGJ5 IHBlcmlvZGljYWxseSByZXNldHRpbmcgdGhlIHNuYXBzaG90IHVzZWQgZHVyaW5nIG5vbi11bmlx dWUsIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcy4gQnkgcmVzZXR0aW5nIHRo ZSBzbmFwc2hvdCBldmVyeSBOIHBhZ2VzIGR1cmluZyB0aGUgaGVhcCBzY2FuLCB3ZSBhbGxvdyB0 aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2Ugd2l0aG91dCByaXNraW5nIGluZGV4IGNvcnJ1cHRp b24uIFRoaXMgYXBwcm9hY2ggaXMgc2FmZSBmb3Igbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMgYmVj YXVzZSB0aGV5IGRvIG5vdCBlbmZvcmNlIHVuaXF1ZW5lc3MgY29uc3RyYWludHMgdGhhdCByZXF1 aXJlIGEgY29uc2lzdGVudCBzbmFwc2hvdCBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgoKQ3VycmVu dGx5LCB0aGlzIHRlY2huaXF1ZSBpcyBhcHBsaWVkIHRvOgoKTm9uLXBhcmFsbGVsIGluZGV4IGJ1 aWxkczogUGFyYWxsZWwgaW5kZXggYnVpbGRzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBhbmQgd2ls bCBiZSBhZGRyZXNzZWQgaW4gYSBmdXR1cmUgY29tbWl0LgpOb24tdW5pcXVlIGluZGV4ZXM6IFVu aXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8g ZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCBhbmQgc3VwcG9ydCBmb3IgdGhlbSBtYXkg YmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KT25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhl IGhlYXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2Vz IGEgc2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcy4KClRvIGltcGxl bWVudCB0aGlzLCBhIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNFVF9TTkFQU0hPVCBpcyBpbnRyb2R1 Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hvdCB0byBiZSByZXNldCBldmVyeSBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBkdXJpbmcgdGhlIHNjYW4uIFRoZSBo ZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBwb3J0IHRoaXMgb3B0aW9uLCBhbmQgdGhl IGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8gdXNlIGl0IGZvciBhcHBsaWNhYmxlIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5vdCBvbiBzeXN0ZW0gY2F0YWxvZ3MgYW5k IG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgoKVGhpcyBhZGRyZXNzZXMgdGhlIGlzc3VlcyB0 aGF0IGxlZCB0byB0aGUgcmV2ZXJzaW9uIG9mIGNvbW1pdCBkOWQwNzYyMjJmNWIsIHByb3ZpZGlu ZyBhIHNhZmUgd2F5IHRvIGFsbG93IHhtaW4gYWR2YW5jZW1lbnQgZHVyaW5nIGxvbmctcnVubmlu ZyBub24tdW5pcXVlLCBub24tcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgd2hpbGUg ZW5zdXJpbmcgaW5kZXggY29ycmVjdG5lc3MuCgpSZWdyZXNzaW9uIHRlc3RzIGFyZSBhZGRlZCB0 byB2ZXJpZnkgdGhlIGJlaGF2aW9yLgotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgICAgICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBs ZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgICAgICAgICAgICAgfCAgMTYgKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxk LmMgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAg ICAgICAgICAgfCAgNDUgKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgICAgICB8ICA1NyArKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv Z2VuYW0uYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGdpbnNlcnQuYyAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyAgICAgICAgICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE0ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jICAgICAgICAgIHwgICA5ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKystCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvTWFrZWZpbGUgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCAgICAgICAgICB8IDEwNSArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSArCiAuLi4vc3FsL2NpY19y ZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAgODYgKysrKysrKysrKysrKysKIDIw IGZpbGVzIGNoYW5nZWQsIDQwNyBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQv Y2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCgpkaWZmIC0t Z2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKaW5kZXggN2Y3YjU1ZDkwMmEuLmEwMjZmYmM2OTJhIDEwMDY0NAotLS0g YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKQEAgLTY4OSw3ICs2ODksOCBAQCBidF9jaGVja19ldmVyeV9sZXZlbChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCQkJCQkJ CQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkg Ki8KIAkJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJ CQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHRydWUsIC8qIHN5bmNz Y2FuIE9LPyAqLworCQkJCQkJCQkJIGZhbHNlKTsKIAogCQkvKgogCQkgKiBTY2FuIHdpbGwgYmVo YXZlIGFzIHRoZSBmaXJzdCBzY2FuIG9mIGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWQpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IDQ4Y2I4ZjU5YzRmLi5mZjdjYzA3ZGY5OSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMzMyLDcgKzMzMiw3IEBAIHBnc3RhdF9oZWFw KFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCQkJIGVycm1zZygib25s eSBoZWFwIEFNIGlzIHN1cHBvcnRlZCIpKSk7CiAKIAkvKiBEaXNhYmxlIHN5bmNzY2FuIGJlY2F1 c2Ugd2UgYXNzdW1lIHdlIHNjYW4gZnJvbSBibG9jayB6ZXJvIHVwd2FyZHMgKi8KLQlzY2FuID0g dGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRydWUsIGZh bHNlKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RBbnksIDAs IE5VTEwsIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2Fu OwogCiAJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3REaXJ0eSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMKaW5kZXggOWE5ODQ1NDc1NzguLmMyMTYwOGE2ZmQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5j CkBAIC0xMjI0LDYgKzEyMjQsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9i dWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJ CSAgIGJyaW5idWlsZENhbGxiYWNrLCBzdGF0ZSwgTlVMTCk7CiAKKwkJSW52YWxpZGF0ZUNhdGFs b2dTbmFwc2hvdCgpOwogCQkvKgogCQkgKiBwcm9jZXNzIHRoZSBmaW5hbCBiYXRjaAogCQkgKgpA QCAtMTI0Myw2ICsxMjQ0LDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0 ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfY3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUt PmJzX21heFJhbmdlU3RhcnQpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFz ZSByZXNvdXJjZXMgKi8KQEAgLTIzNjYsNiArMjM2OCw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJ Ym9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFE RVJfUEFSVElDSVBBVElPTgpAQCAtMjM5MSw5ICsyMzk0LDE2IEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgogCSAqLwogCWlmICghaXNjb25jdXJy ZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlzbmFwc2hvdCA9IFNu YXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKKwl9CiAJZWxz ZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwor CX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlJJ Tl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtMjQzNiw2ICsyNDQ2LDggQEAgX2JyaW5fYmVnaW5fcGFy YWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChk byBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJ c01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMjUxNSw2ICsyNTI3LDggQEAg X2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVs bHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKGJyaW5sZWFk ZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAtMjUzMSw2ICsyNTQ1LDggQEAgX2JyaW5fYmVn aW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdp bGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2gocGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25h cHNob3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IDhlMTc4 OGRiY2Y3Li45N2VmMTBjMDA5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0y MSw2ICsyMSw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAKQEAgLTM3NSw2ICszNzYsNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRzdGF0ZS5hY2N1 bS5naW5zdGF0ZSA9ICZidWlsZHN0YXRlLmdpbnN0YXRlOwogCWdpbkluaXRCQSgmYnVpbGRzdGF0 ZS5hY2N1bSk7CiAKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAkvKgogCSAqIERvIHRoZSBoZWFwIHNjYW4u ICBXZSBkaXNhbGxvdyBzeW5jIHNjYW4gaGVyZSBiZWNhdXNlIGRhdGFQbGFjZVRvUGFnZQogCSAq IHByZWZlcnMgdG8gcmVjZWl2ZSB0dXBsZXMgaW4gVElEIG9yZGVyLgpAQCAtNDIzLDYgKzQyNSw3 IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmlu ZGV4SW5mbykKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5k ZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CiAKKwlBc3NlcnQoIWluZGV4SW5mby0+ aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAly ZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IDll NzA3MTY3ZDk4Li41Njk4MTE0N2FlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMK QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0yNTksNiArMjYwLDcgQEAgZ2lzdGJ1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWls ZHN0YXRlLmluZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0ZS5pbmR0dXBsZXNTaXplID0gMDsKIAor CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhpZCkpOwogCWlmIChidWlsZHN0YXRlLmJ1aWxkTW9kZSA9PSBHSVNUX1NPUlRF RF9CVUlMRCkKIAl7CiAJCS8qCkBAIC0zNTAsNiArMzUyLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAogCXJlc3VsdC0+ aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSAoZG91Ymxl KSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCXJldHVybiByZXN1 bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggZjk1MGI5OTI1ZjUuLjkwMWFhNjY3YWEw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCkBAIC0xOTEsNiArMTkxLDcgQEAgaGFzaGJ1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAogCXJl c3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBi dWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCXJldHVybiByZXN1bHQ7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDQ4NTUyNWY0ZDY0Li44NjI4NmRjODlj MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRl ICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRp bHMvc3BjY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogCiBz dGF0aWMgSGVhcFR1cGxlIGhlYXBfcHJlcGFyZV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhl YXBUdXBsZSB0dXAsCkBAIC01NjgsNiArNTY5LDM2IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihU YWJsZVNjYW5EZXNjIHNzY2FuKQogCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxP Q0spOwogfQogCisvKgorICogUmVzZXQgdGhlIGFjdGl2ZSBzbmFwc2hvdCBkdXJpbmcgYSBzY2Fu LgorICogVGhpcyBlbnN1cmVzIHRoZSB4bWluIGhvcml6b24gY2FuIGFkdmFuY2Ugd2hpbGUgbWFp bnRhaW5pbmcgc2FmZSB0dXBsZSB2aXNpYmlsaXR5LgorICogTm90ZTogTm8gb3RoZXIgc25hcHNo b3Qgc2hvdWxkIGJlIGFjdGl2ZSBkdXJpbmcgdGhpcyBvcGVyYXRpb24uCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZAoraGVhcF9yZXNldF9zY2FuX3NuYXBzaG90KFRhYmxlU2NhbkRlc2Mgc3NjYW4p Cit7CisJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMgYWN0aXZlLiAq LworCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hvdCk7CisJ LyogQW5kIG1ha2Ugc3VyZSBhY3RpdmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICovCisJ QXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJUG9wQWN0aXZl U25hcHNob3QoKTsKKworCXNzY2FuLT5yc19zbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsgLyog anVzdCBvdCBiZSB0aWR5ICovCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZlU25hcHNo b3QoKSk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCisJLyogR29hbCBvZiBzbmFw c2hvdCByZXNldCBpcyB0byBhbGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICovCisJQXNzZXJ0KCFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0VfSU5KRUNUSU9OX1BP SU5UUworCS8qIEluIHNvbWUgY2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3NpYmxlIGR1ZSB4aWQg YXNzaWduLiAqLworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKQorCQlJ TkpFQ1RJT05fUE9JTlQoImhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUiKTsKKyNl bmRpZgorCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNzY2Fu LT5yc19zbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBoZWFwX2Zl dGNoX25leHRfYnVmZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2NrIGZyb20gTUFJTl9G T1JLTlVNLgogICoKQEAgLTYwOSw3ICs2NDAsMTIgQEAgaGVhcF9mZXRjaF9uZXh0X2J1ZmZlcihI ZWFwU2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2FuLT5yc19jYnVmID0g cmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0sIE5VTEwpOwogCWlm IChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+cnNfY2Jsb2NrID0g QnVmZmVyR2V0QmxvY2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisJCWlmICgoc2Nhbi0+cnNfYmFz ZS5yc19mbGFncyAmIFNPX1JFU0VUX1NOQVBTSE9UKSAmJgorCQkJKHNjYW4tPnJzX2NibG9jayAl IFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDApKQorCQkJaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90KChUYWJsZVNjYW5EZXNjKSBzY2FuKTsKKwl9CiB9CiAKIC8qCkBAIC0xMjM2LDYg KzEyNzIsMTUgQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJaWYgKHNjYW4t PnJzX3BhcmFsbGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlwZnJlZShzY2FuLT5yc19wYXJhbGxl bHdvcmtlcmRhdGEpOwogCisJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNFVF9T TkFQU0hPVCkKKwl7CisJCUFzc2VydCghKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1Q X1NOQVBTSE9UKSk7CisJCS8qIE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFz IGFjdGl2ZS4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3Nu YXBzaG90KTsKKwkJLyogQW5kIG1ha2Ugc3VyZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4g Ki8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJfQor CiAJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9UKQogCQlVbnJl Z2lzdGVyU25hcHNob3Qoc2Nhbi0+cnNfYmFzZS5yc19zbmFwc2hvdCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGU4MTdmOGY4Zjg0Li41ODBlYzdmOWFh OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMTkwLDYg KzExOTAsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJRXhwckNvbnRleHQgKmVjb250ZXh0OwogCVNuYXBzaG90CXNuYXBzaG90OwogCWJv b2wJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IGZhbHNlOworCWJvb2wJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCWJvb2wJCXJlc2V0X3NuYXBzaG90cyA9IGZhbHNlOwog CVRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbjsKIAlCbG9ja051bWJlciBwcmV2aW91c19ibGtubyA9 IEludmFsaWRCbG9ja051bWJlcjsKIAlCbG9ja051bWJlciByb290X2Jsa25vID0gSW52YWxpZEJs b2NrTnVtYmVyOwpAQCAtMTIyNCw5ICsxMjI2LDYgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jhbmdl X3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCS8qIEFycmFuZ2UgZm9yIGVjb250ZXh0J3Mg c2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZvciBwcmVk aWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZv LT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICog U25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91 ciBvd24gdGltZQpAQCAtMTIzNiw2ICsxMjM1LDE1IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5n ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAKKwkvKgorCSAqIEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBjb25z aXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KKwkgKiBJbiBjYXNlIG9mIHBhcmFs bGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJlcXVpcmVkCisJICogdG8g cGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCByZWFk eS4KKwkgKi8KKwlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYK KwkJCQkJICAhaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKKwkJCQkJICAhaXNfc3lzdGVtX2NhdGFs b2c7IC8qIGp1c3QgZm9yIHRoZSBjYXNlICovCisKIAkvKiBva2F5IHRvIGlnbm9yZSBsYXp5IFZB Q1VVTXMgaGVyZSAqLwogCWlmICghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpICYmICFpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1vdmFi bGVUcmFuc2FjdGlvbklkKGhlYXBSZWxhdGlvbik7CkBAIC0xMjQ0LDI0ICsxMjUyLDQxIEBAIGhl YXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAl7CiAJ CS8qCiAJCSAqIFNlcmlhbCBpbmRleCBidWlsZC4KLQkJICoKLQkJICogTXVzdCBiZWdpbiBvdXIg b3duIGhlYXAgc2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCi0JCSAqIHJl Z2lzdGVyIGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250 cm9sLgogCQkgKi8KIAkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSkKIAkJ ewotCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3Qo KSk7Ci0JCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJc25hcHNob3QgPSBH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCk7CisJCQkvKgorCQkJICogTXVzdCBiZWdpbiBvdXIgb3du IGhlYXAgc2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCisJCQkgKiByZWdp c3RlciBhIHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29udHJv bC4KKwkJCSAqIEluIGNhc2Ugb2YgcmVzZXR0aW5nIG9mIHNuYXBzaG90IGR1cmluZyB0aGUgc2Nh biByZWdpc3RyYXRpb24gaXMKKwkJCSAqIG5vdCBhbGxvd2VkIGJlY2F1c2Ugc25hcHNob3QgaXMg Z29pbmcgdG8gYmUgY2hhbmdlZCBldmVyeSBzbworCQkJICogb2Z0ZW4uCisJCQkgKi8KKwkJCWlm ICghcmVzZXRfc25hcHNob3RzKQorCQkJeworCQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChzbmFwc2hvdCk7CisJCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCX0K KwkJCUFzc2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qo c25hcHNob3QpOworCQkJLyogc3RvcmUgbGluayB0byBzbmFwc2hvdCBiZWNhdXNlIGl0IG1heSBi ZSBjb3BpZWQgKi8KKwkJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwkJCW5lZWRf cG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJCX0KIAkJZWxzZQorCQl7CisJCQlBc3NlcnQo IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55Owor CQl9CiAKIAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVsYXRpb24sCS8qIHJl bGF0aW9uICovCiAJCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJCQkJCQkg MCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwog CQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJ CSBhbGxvd19zeW5jKTsJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgYWxsb3dfc3luYywJ Lyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgcmVzZXRfc25hcHNob3RzIC8qIHJlc2V0IHNu YXBzaG90cz8gKi8pOwogCX0KIAllbHNlCiAJewpAQCAtMTI3NSw2ICsxMzAwLDggQEAgaGVhcGFt X2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3NlcnQo IUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsKIAkJ c25hcHNob3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBz aG90KTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAl9CiAKIAloc2NhbiA9 IChIZWFwU2NhbkRlc2MpIHNjYW47CkBAIC0xMjg5LDYgKzEzMTYsMTMgQEAgaGVhcGFtX2luZGV4 X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCUFzc2VydChzbmFwc2hv dCA9PSBTbmFwc2hvdEFueSA/IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pIDoKIAkJ ICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKTsKIAlBc3NlcnQoc25hcHNob3Qg PT0gU25hcHNob3RBbnkgfHwgIWFueXZpc2libGUpOworCUFzc2VydChzbmFwc2hvdCA9PSBTbmFw c2hvdEFueSB8fCBBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNldCB1cCBleGVjdXRpb24g c3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLworCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJl UXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwkvKiBDbGVhciByZWZlcmVu Y2UgdG8gc25hcHNob3Qgc2luY2UgaXQgbWF5IGJlIGNoYW5nZWQgYnkgdGhlIHNjYW4gaXRzZWxm LiAqLworCWlmIChyZXNldF9zbmFwc2hvdHMpCisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90 OwogCiAJLyogUHVibGlzaCBudW1iZXIgb2YgYmxvY2tzIHRvIHNjYW4gKi8KIAlpZiAocHJvZ3Jl c3MpCkBAIC0xNzI0LDYgKzE3NTgsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOwogCisJaWYgKG5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkvKiB3ZSBj YW4gbm93IGZvcmdldCBvdXIgc25hcHNob3QsIGlmIHNldCBhbmQgcmVnaXN0ZXJlZCBieSB1cyAq LwogCWlmIChuZWVkX3VucmVnaXN0ZXJfc25hcHNob3QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChz bmFwc2hvdCk7CkBAIC0xNzk2LDcgKzE4MzIsOCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAq LwogCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZl ciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIGZhbHNlKTsJLyogc3luY3NjYW4gbm90 IE9LICovCisJCQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCisJCQkJCQkJCSBm YWxzZSk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJcGdzdGF0X3Byb2dyZXNz X3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19UT1RBTCwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2dlbmFtLmMKaW5kZXggMDdiYWUzNDJlMjUuLjBkMjYyYTQxODhkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvZ2VuYW0uYwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJCSAqLwogCQlzeXNzY2FuLT5zY2FuID0gdGFibGVfYmVnaW5zY2Fu X3N0cmF0KGhlYXBSZWxhdGlvbiwgc25hcHNob3QsCiAJCQkJCQkJCQkJCSAgbmtleXMsIGtleSwK LQkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSk7CisJCQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UsIGZh bHNlKTsKIAkJc3lzc2Nhbi0+aXNjYW4gPSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwppbmRleCA3YWJhODUyZGI5MC4uYjQ5MGRhMGVlZWUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0yNTgsNyArMjU4LDcgQEAgc3RhdGljIGRvdWJsZSBfYnRf c3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIHZv aWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9idF9z cG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLAogCQkJCQkgIERhdHVtICp2 YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKTsKK3N0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQo QlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNob3Rz KTsKIHN0YXRpYyB2b2lkIF9idF9idWlsZF9jYWxsYmFjayhSZWxhdGlvbiBpbmRleCwgSXRlbVBv aW50ZXIgdGlkLCBEYXR1bSAqdmFsdWVzLAogCQkJCQkJCSAgIGJvb2wgKmlzbnVsbCwgYm9vbCB0 dXBsZUlzQWxpdmUsIHZvaWQgKnN0YXRlKTsKIHN0YXRpYyBCdWxrV3JpdGVCdWZmZXIgX2J0X2Js bmV3cGFnZShCVFdyaXRlU3RhdGUgKndzdGF0ZSwgdWludDMyIGxldmVsKTsKQEAgLTMyMSwxOCAr MzIxLDIyIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5m byAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4KSk7CiAKIAly ZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0ZSwg aW5kZXhJbmZvKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5k ZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogRmluaXNoIHRo ZSBidWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBvZiB0aGUgc3Bvb2wgZmlsZSwgKDIp CiAJICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGludG8gYnRyZWUgcGFnZXMgYW5kICgz KSBidWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBGaW5hbGx5LCBpdCBtYXkgYWxzbyBi ZSBuZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlzbS4KIAkgKi8KLQlfYnRfbGVhZmJ1 aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyKTsKKwlfYnRfbGVhZmJ1aWxk KGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAhaW5kZXhJbmZvLT5paV9QYXJh bGxlbFdvcmtlcnMgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0 cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nw b29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIp CiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7CisJQXNzZXJ0KGluZGV4 SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8CisJCSAg IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CiAKIAlyZXN1bHQgPSAoSW5kZXhCdWlsZFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9m KEluZGV4QnVpbGRSZXN1bHQpKTsKIApAQCAtNDgwLDYgKzQ4NCw5IEBAIF9idF9zcG9vbHNfaGVh cHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwKIAllbHNlCiAJCXJlbHR1cGxlcyA9IF9idF9wYXJhbGxlbF9oZWFwc2NhbihidWlsZHN0 YXRlLAogCQkJCQkJCQkJCSAgJmluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4pOworCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJ ICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQgdGhl IGJsb2NrIG51bWJlcgpAQCAtNTM1LDcgKzU0Miw3IEBAIF9idF9zcG9vbChCVFNwb29sICpidHNw b29sLCBJdGVtUG9pbnRlciBzZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwpCiAgKiBj cmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChC VFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKK19idF9sZWFmYnVpbGQoQlRTcG9v bCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNob3RzKQogewog CUJUV3JpdGVTdGF0ZSB3c3RhdGU7CiAKQEAgLTU1NywxOCArNTY0LDIxIEBAIF9idF9sZWFmYnVp bGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJCQkJCQkJCQkgUFJPR1JF U1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChi dHNwb29sMi0+c29ydHN0YXRlKTsKIAl9CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJd3N0YXRlLmhlYXAgPSBidHNw b29sLT5oZWFwOwogCXdzdGF0ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4OwogCXdzdGF0ZS5pbnNr ZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CiAJLyogX2J0X21rc2Nhbmtl eSgpIHdvbid0IHNldCBhbGxlcXVhbGltYWdlIHdpdGhvdXQgbWV0YXBhZ2UgKi8KIAl3c3RhdGUu aW5za2V5LT5hbGxlcXVhbGltYWdlID0gX2J0X2FsbGVxdWFsaW1hZ2Uod3N0YXRlLmluZGV4LCB0 cnVlKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAKIAkvKiByZXNlcnZlIHRoZSBt ZXRhcGFnZSAqLwogCXdzdGF0ZS5idHdzX3BhZ2VzX2FsbG9jZWQgPSBCVFJFRV9NRVRBUEFHRSAr IDE7CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9T VUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX0xFQUZfTE9BRCk7CisJQXNz ZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTQx MCw2ICsxNDIwLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCVdhbFVzYWdlICAgKndhbHVzYWdl OwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMg PSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJ cXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM1 LDkgKzE0NDYsMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIGxpdmUgYWNjb3JkaW5nIHRv IHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25h cHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90 KHNuYXBzaG90KTsKKwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFS QUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTQ5MSw2ICsxNTA5LDgg QEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2Nv bmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFi bGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxM KQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMTU4 NSw2ICsxNjA1LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElmIG5vIHdvcmtlcnMgd2Vy ZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJ aWYgKHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2J0X2VuZF9wYXJhbGxl bChidGxlYWRlcik7CiAJCXJldHVybjsKIAl9CkBAIC0xNjAxLDYgKzE2MjMsOCBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2ls bCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFj aChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFw c2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGdpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKaW5kZXgg NmE2MWUwOTNmYTAuLjA2YzAxY2YzMzYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ2luc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5z ZXJ0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVsa193cml0ZS5o IgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKQEAgLTE0Myw2ICsxNDQsNyBAQCBzcGdidWlsZChS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJcmVz dWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWlsZFJlc3Vs dCkpOwogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90 dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1 cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDIyMWZiYjRlMjg2Li44YzZkZmVjZjUx NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNzksNiArNzksNyBAQAogI2luY2x1ZGUgInV0aWxzL3Nu YXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R1 cGxlc29ydC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAvKiBQb3RlbnRpYWxseSBz ZXQgYnkgcGdfdXBncmFkZV9zdXBwb3J0IGZ1bmN0aW9ucyAqLwogT2lkCQkJYmluYXJ5X3VwZ3Jh ZGVfbmV4dF9pbmRleF9wZ19jbGFzc19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtMTQ5MSw4ICsxNDky LDggQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlSZWxh dGlvbglpbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAotCS8qIFRoaXMg aGFkIGJldHRlciBtYWtlIHN1cmUgdGhhdCBhIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwotCUFzc2Vy dChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQp KTsKIAogCS8qIE9wZW4gYW5kIGxvY2sgdGhlIHBhcmVudCBoZWFwIHJlbGF0aW9uICovCiAJaGVh cFJlbCA9IHRhYmxlX29wZW4oaGVhcFJlbGF0aW9uSWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9j ayk7CkBAIC0xNTEwLDE5ICsxNTExLDI4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQg aGVhcFJlbGF0aW9uSWQsCiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleFJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCisJLyogQnVpbGRJbmRleEluZm8gbWF5IHJlcXVp cmUgYXMgc25hcHNob3QgZm9yIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzICovCisJUHVzaEFj dGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBXZSBoYXZl IHRvIHJlLWJ1aWxkIHRoZSBJbmRleEluZm8gc3RydWN0LCBzaW5jZSBpdCB3YXMgbG9zdCBpbiB0 aGUKIAkgKiBjb21taXQgb2YgdGhlIHRyYW5zYWN0aW9uIHdoZXJlIHRoaXMgY29uY3VycmVudCBp bmRleCB3YXMgY3JlYXRlZCBhdAogCSAqIHRoZSBjYXRhbG9nIGxldmVsLgogCSAqLwogCWluZGV4 SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCS8qIERvbmUgd2l0aCBzbmFw c2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJQXNzZXJ0KCFpbmRleEluZm8tPmlpX1Jl YWR5Rm9ySW5zZXJ0cyk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKIAlpbmRl eEluZm8tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIE5vdyBidWlsZCB0aGUgaW5kZXggKi8KIAlp bmRleF9idWlsZChoZWFwUmVsLCBpbmRleFJlbGF0aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0cnVl KTsKIAorCS8qIEludmFsaWRhdGUgY2F0YWxvZyBzbmFwc2hvdCBqdXN0IGZvciBhc3NlcnQgKi8K KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KChpbmRleEluZm8tPmlpX1Bh cmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSkgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBl eGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVf bmVzdGxldmVsKTsKIApAQCAtMTUzMywxMiArMTU0MywxOSBAQCBpbmRleF9jb25jdXJyZW50bHlf YnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCXRhYmxlX2Nsb3NlKGhlYXBSZWwsIE5vTG9jayk7 CiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAorCS8qCisJICogVXBkYXRp bmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3 ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3Qo R2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgogCSAqIFVwZGF0ZSB0aGUgcGdfaW5kZXgg cm93IHRvIG1hcmsgdGhlIGluZGV4IGFzIHJlYWR5IGZvciBpbnNlcnRzLiBPbmNlIHdlCiAJICog Y29tbWl0IHRoaXMgdHJhbnNhY3Rpb24sIGFueSBuZXcgdHJhbnNhY3Rpb25zIHRoYXQgb3BlbiB0 aGUgdGFibGUgbXVzdAogCSAqIGluc2VydCBuZXcgZW50cmllcyBpbnRvIHRoZSBpbmRleCBmb3Ig aW5zZXJ0aW9ucyBhbmQgbm9uLUhPVCB1cGRhdGVzLgogCSAqLwogCWluZGV4X3NldF9zdGF0ZV9m bGFncyhpbmRleFJlbGF0aW9uSWQsIElOREVYX0NSRUFURV9TRVRfUkVBRFkpOworCS8qIHdlIGNh biBkbyBhd2F5IHdpdGggb3VyIHNuYXBzaG90ICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0K IAogLyoKQEAgLTMyMDYsNyArMzIyMyw4IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJ IE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0 cmF0ZWd5IE9LICovCi0JCQkJCQkJCSB0cnVlKTsgLyogc3luY3NjYW4gT0sgKi8KKwkJCQkJCQkJ IHRydWUsIC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSBmYWxzZSk7CiAKIAl3aGlsZSAodGFi bGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJ ewpAQCAtMzI2OSwxMiArMzI4NywxNiBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKICAqIGFzIG9mIHRoZSBzdGFydCBvZiB0aGUgc2NhbiAoc2VlIHRhYmxlX2lu ZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFzIGEgbm9ybWFsCiAgKiBidWlsZCB0YWtlcyBjYXJlIHRv IGluY2x1ZGUgcmVjZW50bHktZGVhZCB0dXBsZXMuICBUaGlzIGlzIE9LIGJlY2F1c2UKICAqIHdl IHdvbid0IG1hcmsgdGhlIGluZGV4IHZhbGlkIHVudGlsIGFsbCB0cmFuc2FjdGlvbnMgdGhhdCBt aWdodCBiZSBhYmxlCi0gKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgVGhlIHJlYXNv biBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAorICogdG8gc2VlIHRob3NlIHR1cGxlcyBhcmUg Z29uZS4gIE9uZSBvZiByZWFzb25zIGZvciBkb2luZyB0aGF0IGlzIHRvIGF2b2lkCiAgKiBib2d1 cyB1bmlxdWUtaW5kZXggZmFpbHVyZXMgZHVlIHRvIGNvbmN1cnJlbnQgVVBEQVRFcyAod2UgbWln aHQgc2VlCiAgKiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcm93IGFzIGJlaW5nIHZh bGlkIHdoZW4gd2UgcGFzcyBvdmVyIHRoZW0sCiAgKiBpZiB3ZSB1c2VkIEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bSkuICBUaGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRoYXQKICAqIGRvZXMg bm90IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQg dGhlIGluZGV4LgogICoKKyAqIEZ1cnRoZXJtb3JlLCBpbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5k ZXggd2Ugc2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUKKyAqIHNjYW4sIHdoaWNoIGNhdXNl cyBuZXcgc25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJl YXNvbgorICogZm9yIHRoYXQgaXMgdG8gcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9yd2Fy ZC4KKyAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIgKGJ1dCBzdGls bCBub3QgImluZGlzdmFsaWQiKSBhbmQKICAqIGNvbW1pdCB0aGUgc2Vjb25kIHRyYW5zYWN0aW9u IGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0cmFuc2FjdGlv bnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJtaW5hdGUu ICBOb3cKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggMGZmNDk4YzRlMTQuLmM4ZTc4ODBm OTU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTY3MCwyMyArMTY3MCwxNyBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUg dGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRp ZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2Ugbm93IHRha2UgYSBuZXcgc25hcHNob3Qs IGFuZCBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0JICogYXJlIHZpc2li bGUgaW4gdGhpcyBzbmFwc2hvdC4gIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVz IHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlz aWJsZSB1c2luZyBzaW5nbGUgb3IKKwkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4g V2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMg d2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRl CiAJICogYnkgdHJhbnNhY3Rpb25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFy ZSBub3cgY29tbWl0dGVkIG9yCiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUg dHVwbGUgaXMgZWl0aGVyIHRoZSBlbmQgb2YgaXRzCiAJICogSE9ULWNoYWluIG9yIHRoZSBleHRl bnNpb24gb2YgdGhlIGNoYWluIGlzIEhPVC1zYWZlIGZvciB0aGlzIGluZGV4LgogCSAqLwogCi0J LyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkg bmVlZCBpdCAqLwotCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwotCiAJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIGluZGV4ICovCiAJaW5kZXhfY29u Y3VycmVudGx5X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCk7CiAKLQkvKiB3ZSBjYW4g ZG8gYXdheSB3aXRoIG91ciBzbmFwc2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0KIAkv KgogCSAqIENvbW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkgdXBk YXRlIHZpc2libGUuCiAJICovCkBAIC00MDg0LDkgKzQwNzgsNiBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Mo KTsKIAotCQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRl eGVzIG1heSBuZWVkIGl0ICovCi0JCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRv IGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAg LTQxMDEsNyArNDA5Miw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWlu ZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCS8qIFBlcmZvcm0g Y29uY3VycmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8KIAkJaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkKTsKIAotCQlQb3BBY3RpdmVTbmFw c2hvdCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYwppbmRleCBlOTJlMTA4YjZiNi4uYTI2ZTA4MzJlMzggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1 dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIAogLyogR1VDIHBh cmFtZXRlcnMgKi8KIGRvdWJsZQkJY3Vyc29yX3R1cGxlX2ZyYWN0aW9uID0gREVGQVVMVF9DVVJT T1JfVFVQTEVfRlJBQ1RJT047CkBAIC02Nzc4LDYgKzY3NzksNyBAQCBwbGFuX2NyZWF0ZV9pbmRl eF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCVJlbGF0aW9uCWhlYXA7CiAJ UmVsYXRpb24JaW5kZXg7CiAJUmVsT3B0SW5mbyAqcmVsOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IGZhbHNlOwogCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7CiAJQmxvY2tOdW1i ZXIgaGVhcF9ibG9ja3M7CiAJZG91YmxlCQlyZWx0dXBsZXM7CkBAIC02ODMzLDYgKzY4MzUsMTEg QEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkK IAloZWFwID0gdGFibGVfb3Blbih0YWJsZU9pZCwgTm9Mb2NrKTsKIAlpbmRleCA9IGluZGV4X29w ZW4oaW5kZXhPaWQsIE5vTG9jayk7CiAKKwkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVu Y3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCisJaWYgKCFBY3RpdmVTbmFwc2hv dFNldCgpKSB7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOworCX0KIAkvKgogCSAqIERldGVy bWluZSBpZiBpdCdzIHNhZmUgdG8gcHJvY2VlZC4KIAkgKgpAQCAtNjg5MCw2ICs2ODk3LDggQEAg cGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAkJ cGFyYWxsZWxfd29ya2Vycy0tOwogCiBkb25lOgorCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJaW5kZXhfY2xvc2UoaW5kZXgsIE5vTG9jayk7 CiAJdGFibGVfY2xvc2UoaGVhcCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDdkMDZk YWQ4M2ZjLi40M2JkZjYyYjk0NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIsOCBAQAog I2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XCQkoMSA8PCAwKQogI2RlZmlu ZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEpCiAKKyNkZWZpbmUgU09fUkVTRVRf U05BUFNIT1RfRUFDSF9OX1BBR0UJCTQwOTYKKwogdHlwZWRlZiBzdHJ1Y3QgQnVsa0luc2VydFN0 YXRlRGF0YSAqQnVsa0luc2VydFN0YXRlOwogc3RydWN0IFR1cGxlVGFibGVTbG90Owogc3RydWN0 IFZhY3V1bUN1dG9mZnM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAwOWI5YjM5NGUwZS4uZWM4OTI4 YWQ5MGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1 dGlscy9zbmFwc2hvdC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAK ICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjksNiArNzAs MTcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAJICogbmVlZGVkLiBJZiB0YWJsZSBkYXRh IG1heSBiZSBuZWVkZWQsIHNldCBTT19ORUVEX1RVUExFUy4KIAkgKi8KIAlTT19ORUVEX1RVUExF UyA9IDEgPDwgMTAsCisJLyoKKwkgKiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90IGV2 ZXJ5IHNvIG9mdGVuPyBJZiBzbywgZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9Q QUdFIHBhZ2VzIGFjdGl2ZSBzbmFwc2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFwc2hv dCBpbnZhbGlkYXRlZCwgbGF0ZXN0IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoKKwkg KiBBdCB0aGUgZW5kIG9mIHRoZSBzY2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICogR29h bCBvZiBzdWNoIG1vZGUgaXMga2VlcCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2FyZC4K KwkgKgorCSAqIHNlZSBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJICov CisJU09fUkVTRVRfU05BUFNIT1QgPSAxIDw8IDExLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpA QCAtOTM1LDcgKzk0Nyw4IEBAIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9j YXRhbG9nKFJlbGF0aW9uIHJlbGF0aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRhYmxl U2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAogCQkJCQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksCi0JCQkJ CSAgYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxsb3df c3RyYXQsIGJvb2wgYWxsb3dfc3luYywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQogewog CXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIApA QCAtOTQzLDYgKzk1NiwxNSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBT bmFwc2hvdCBzbmFwc2hvdCwKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFsbG93 X3N5bmMpCiAJCWZsYWdzIHw9IFNPX0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90KQor CXsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzIik7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8KKwkJ QXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUgc25h cHNob3Qgc2hvdWxkIG5vdCBiZSByZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGluZy4g Ki8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJCWZs YWdzIHw9IChTT19SRVNFVF9TTkFQU0hPVCk7CisJfQogCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVh bS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9 CkBAIC0xNzc1LDYgKzE3OTcsMTAgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFi bGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiB2ZXJ5IGhhcmQg dG8gZGV0ZWN0IHdoZXRoZXIgdGhleSdyZSByZWFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIGNo YWluIHRpcC4KICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0 IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCisg KgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3Vy cmVudCBidWlsZAorICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4u IFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cworICogb24gdGhlIGZseSB0byBhbGxv dyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFi bGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKaW5kZXggMDc1M2E5ZGY1OGMuLjIyMjVjZDBiZjg3 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0xMCw3 ICsxMCw3IEBAIEVYVEVOU0lPTiA9IGluamVjdGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25f cG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVNDID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0 eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAotUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgcmVp bmRleF9jb25jCitSRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyByZWluZGV4X2NvbmMgY2ljX3Jl c2V0X3NuYXBzaG90cwogUkVHUkVTU19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3Ny Yy90ZXN0L3JlZ3Jlc3MKIAogSVNPTEFUSU9OID0gYmFzaWMgaW5wbGFjZQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFw c2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2Np Y19yZXNldF9zbmFwc2hvdHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi45NDhkMTIzMmFhMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApAQCAtMCwwICsx LDEwNSBAQAorQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworU0VMRUNUIGluamVj dGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScsICdu b3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOworIGluamVjdGlv bl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9z bmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jlc2V0 X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMo aSk7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRl Z2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwg QVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBS RVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNl dF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxF CisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAn U0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gZmFsc2U7CitFTkQ7ICQkOworLS0t LS0tLS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxs ZWxfd29ya2Vycz0wKTsKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0g MDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2lj X3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNl dF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25h cC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwg MiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5f c3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9z bmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0 YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVTQyBO VUxMUyBMQVNUKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkp OworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBTQ0hFTUEgY2ljX3Jl c2V0X3NuYXAgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmpl Y3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNpY19yZXNldF9zbmFwLnRibAor ZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxl KGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGVfbm9fcGFyYW0oKQorRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRleCA5 ODliNGRiMjI2Yi4uZmIxMzEyNzA2NjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM1LDYgKzM1LDcgQEAgdGVzdHMgKz0gewogICAgICdz cWwnOiBbCiAgICAgICAnaW5qZWN0aW9uX3BvaW50cycsCiAgICAgICAncmVpbmRleF9jb25jJywK KyAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAgICBdLAogICAgICdyZWdyZXNzX2FyZ3Mn OiBbJy0tZGxwYXRoJywgbWVzb24uYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwK ICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVzdGVyLXdpZGUsIHNvIGRpc2FibGUg aW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNTA3MjUzNWIzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3Fs CkBAIC0wLDAgKzEsODYgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwor U0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CitTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNl Jyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVz ZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBr ZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAq IEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworCitDUkVBVEUgRlVOQ1RJT04g Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1N VVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhF Q1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7 CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0 YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VB R0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50 KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CisKKy0tLS0tLS0tLS0tLS0tLS0KK0FM VEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CisK K0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsK K1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7 CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBt b2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJz PTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAy KSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19w YXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExB U1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0 X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0gCjIu NDMuMAoK --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0006-tuplestore-add-support-for-storing-Datum-values.patch" Content-Disposition: attachment; filename="v13-0006-tuplestore-add-support-for-storing-Datum-values.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauo55 RnJvbSA4MTJiNThmOTEwMTE5Y2NlYzZjMDAyM2ZhMGY3YTg5ZDQ5YzA3ODY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDA2 LzExXSB0dXBsZXN0b3JlOiBhZGQgc3VwcG9ydCBmb3Igc3RvcmluZyBEYXR1bSB2YWx1ZXMKCkFk ZCBhYmlsaXR5IHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmRpdmlkdWFsIERhdHVtIHZhbHVlcyBp biB0dXBsZXN0b3JlLCBvcHRpbWl6aW5nIHN0b3JhZ2UgYmFzZWQgb24gdHlwZToKCi0gRml4ZWQt bGVuZ3RoOiBzdG9yZXMgcmF3IGJ5dGVzIHdpdGhvdXQgbGVuZ3RoIHByZWZpeAotIFZhcmlhYmxl LWxlbmd0aDogaW5jbHVkZXMgbGVuZ3RoIHByZWZpeC9zdWZmaXgKLSBCeS12YWx1ZSB0eXBlcyBo YW5kbGVkIGlubGluZQoKVGhpcyBleHRlbmRzIHR1cGxlc3RvcmUgYmV5b25kIGp1c3QgaGFuZGxp bmcgdHVwbGVzLCBwbGFubmVkIHRvIGJlIHVzZWQgaW4gbmV4dCBwYXRjaC4KLS0tCiBzcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyB8IDI3MCArKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmggICAgICB8ICAzMyArKy0tCiAy IGZpbGVzIGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jCmluZGV4IGFhY2VjOGI3OTkzLi40ZWQxM2RhNjA0NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKQEAgLTEsMTYgKzEsMTkgQEAKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKICAqIHR1cGxlc3RvcmUuYwotICoJICBHZW5lcmFsaXplZCByb3V0 aW5lcyBmb3IgdGVtcG9yYXJ5IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRp bmVzIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KKyAqCisgKiBU aGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIGVpdGhlciB0dXBsZXMgb3Ig c2luZ2xlCisgKiBEYXR1bSB2YWx1ZXMgZm9yIHB1cnBvc2VzIHN1Y2ggYXMgTWF0ZXJpYWxpemUg bm9kZXMsIGhhc2hqb2luIGJhdGNoCisgKiBmaWxlcywgZXRjLiBJdCBpcyBlc3NlbnRpYWxseSBh IGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7CisgKiBpdCBkb2VzIG5vIHNvcnRp bmcgb2YgdHVwbGVzIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5j ZQorICogb2YgdHVwbGVzLiAgSG93ZXZlciwgYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBp dCBpcyBhbGxvd2VkIHRvIHN0YXJ0CisgKiByZWFkaW5nIHRoZSBzZXF1ZW5jZSBiZWZvcmUgaXQg aGFzIGFsbCBiZWVuIHdyaXR0ZW4uCisgKgorICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs IGZvciBjdXJzb3JzLCBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzCisgKiB3aXRoaW4g dGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcgdG8g cHJvY2VzcworICogdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICoKLSAqIFRo aXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3Nl cyBzdWNoCi0gKiBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0 Yy4gIEl0IGlzIGVzc2VudGlhbGx5Ci0gKiBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVz b3J0LmM7IGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9y ZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5jZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVj YXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcg dGhlIHNlcXVlbmNlCi0gKiBiZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlz IHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyBy YW5kb20gYWNjZXNzIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEg cXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJvY2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNv bXBsZXRpb24uCiAgKiBBbHNvLCBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGlu ZGVwZW5kZW50IHJlYWQgcG9pbnRlcnMuCiAgKgogICogQSB0ZW1wb3JhcnkgZmlsZSBpcyB1c2Vk IHRvIGhhbmRsZSB0aGUgZGF0YSBpZiBpdCBleGNlZWRzIHRoZQpAQCAtNjEsNiArNjQsOCBAQAog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKQEAgLTExNSwxNiArMTIwLDE1IEBAIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUKIAlCdWZGaWxlICAgICpteWZpbGU7CQkJLyogdW5kZXJseWluZyBm aWxlLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CQkvKiBtZW1v cnkgY29udGV4dCBmb3IgaG9sZGluZyB0dXBsZXMgKi8KIAlSZXNvdXJjZU93bmVyIHJlc293bmVy OwkJLyogcmVzb3duZXIgZm9yIGhvbGRpbmcgdGVtcCBmaWxlcyAqLworCU9pZAkJCWRhdHVtVHlw ZTsJCS8qIEludmFsaWRPaWQgb3Igb2lkIG9mIERhdHVtJ3MgdG8gYmUgc3RvcmVkICovCisJaW50 MTYJCWRhdHVtVHlwZUxlbjsJLyogdHlwZWxlbiBvZiB0aGF0IERhdHVtICovCisJYm9vbAkJZGF0 dW1UeXBlQnlWYWw7IC8qIGJ5LXZhbHVlIG9mIHRoYXQgYXR1bSAqLwogCiAJLyoKIAkgKiBUaGVz ZSBmdW5jdGlvbiBwb2ludGVycyBkZWNvdXBsZSB0aGUgcm91dGluZXMgdGhhdCBtdXN0IGtub3cg d2hhdCBraW5kCiAJICogb2YgdHVwbGUgd2UgYXJlIGhhbmRsaW5nIGZyb20gdGhlIHJvdXRpbmVz IHRoYXQgZG9uJ3QgbmVlZCB0byBrbm93IGl0LgogCSAqIFRoZXkgYXJlIHNldCB1cCBieSB0aGUg dHVwbGVzdG9yZV9iZWdpbl94eHggcm91dGluZXMuCiAJICoKLQkgKiAoQWx0aG91Z2ggdHVwbGVz dG9yZS5jIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGhlYXAgdHVwbGVzLCBJJ3ZlIGNvcGllZAot CSAqIHRoaXMgcGFydCBvZiB0dXBsZXNvcnQuYyBzbyB0aGF0IGV4dGVuc2lvbiB0byBvdGhlciBr aW5kcyBvZiBvYmplY3RzCi0JICogd2lsbCBiZSBlYXN5IGlmIGl0J3MgZXZlciBuZWVkZWQuKQot CSAqCiAJICogRnVuY3Rpb24gdG8gY29weSBhIHN1cHBsaWVkIGlucHV0IHR1cGxlIGludG8gcGFs bG9jJ2Qgc3BhY2UuIChOQjogd2UKIAkgKiBhc3N1bWUgdGhhdCBhIHNpbmdsZSBwZnJlZSgpIGlz IGVub3VnaCB0byByZWxlYXNlIHRoZSB0dXBsZSBsYXRlciwgc28KIAkgKiB0aGUgcmVwcmVzZW50 YXRpb24gbXVzdCBiZSAiZmxhdCIgaW4gb25lIHBhbGxvYyBjaHVuay4pIHN0YXRlLT5hdmFpbE1l bQpAQCAtMTQzLDEyICsxNDcsMTggQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogCiAJLyoKIAkg KiBGdW5jdGlvbiB0byByZWFkIGEgc3RvcmVkIHR1cGxlIGZyb20gdGFwZSBiYWNrIGludG8gbWVt b3J5LiAnbGVuJyBpcwotCSAqIHRoZSBhbHJlYWR5LXJlYWQgbGVuZ3RoIG9mIHRoZSBzdG9yZWQg dHVwbGUuICBDcmVhdGUgYW5kIHJldHVybiBhCi0JICogcGFsbG9jJ2QgY29weSwgYW5kIGRlY3Jl YXNlIHN0YXRlLT5hdmFpbE1lbSBieSB0aGUgYW1vdW50IG9mIG1lbW9yeQotCSAqIHNwYWNlIGNv bnN1bWVkLgorCSAqIHRoZSBhbHJlYWR5LWtub3duIChyZWFkIG9mIGNvbnN0YW50KSBsZW5ndGgg b2YgdGhlIHN0b3JlZCB0dXBsZS4KKwkgKiBDcmVhdGUgYW5kIHJldHVybiBhIHBhbGxvYydkIGNv cHksIGFuZCBkZWNyZWFzZSBzdGF0ZS0+YXZhaWxNZW0gYnkgdGhlCisJICogYW1vdW50IG9mIG1l bW9yeSBzcGFjZSBjb25zdW1lZC4KIAkgKi8KIAl2b2lkCSAgICooKnJlYWR0dXApIChUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKTsKIAorCS8qCisJICogRnVuY3Rpb24g dG8gZ2V0IGxlbmdoIG9mIHR1cGxlIGZyb20gdGFwZS4gVXNlZCB0byBwcm92aWRlICdsZW4nIGFy Z3VtZW50CisJICogZm9yIHJlYWR0dXAgKHNlZSBhYm92ZSkuCisJICovCisJdW5zaWduZWQgaW50 KCpsZW50dXApKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworCiAJLyoKIAkg KiBUaGlzIGFycmF5IGhvbGRzIHBvaW50ZXJzIHRvIHR1cGxlcyBpbiBtZW1vcnkgaWYgd2UgYXJl IGluIHN0YXRlIElOTUVNLgogCSAqIEluIHN0YXRlcyBXUklURUZJTEUgYW5kIFJFQURGSUxFIGl0 J3Mgbm90IHVzZWQuCkBAIC0xODUsNiArMTk1LDcgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQog I2RlZmluZSBDT1BZVFVQKHN0YXRlLHR1cCkJKCgqKHN0YXRlKS0+Y29weXR1cCkgKHN0YXRlLCB0 dXApKQogI2RlZmluZSBXUklURVRVUChzdGF0ZSx0dXApICgoKihzdGF0ZSktPndyaXRldHVwKSAo c3RhdGUsIHR1cCkpCiAjZGVmaW5lIFJFQURUVVAoc3RhdGUsbGVuKQkoKCooc3RhdGUpLT5yZWFk dHVwKSAoc3RhdGUsIGxlbikpCisjZGVmaW5lIExFTlRVUChzdGF0ZSxlb2ZPSykJKCgqKHN0YXRl KS0+bGVudHVwKSAoc3RhdGUsIGVvZk9LKSkKICNkZWZpbmUgTEFDS01FTShzdGF0ZSkJCSgoc3Rh dGUpLT5hdmFpbE1lbSA8IDApCiAjZGVmaW5lIFVTRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5h dmFpbE1lbSAtPSAoYW10KSkKICNkZWZpbmUgRlJFRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5h dmFpbE1lbSArPSAoYW10KSkKQEAgLTE5Myw5ICsyMDQsOSBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0 YXRlCiAgKgogICogTk9URVMgYWJvdXQgb24tdGFwZSByZXByZXNlbnRhdGlvbiBvZiB0dXBsZXM6 CiAgKgotICogV2UgcmVxdWlyZSB0aGUgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9yZWQg dHVwbGUgdG8gYmUgdGhlIHRvdGFsIHNpemUKLSAqIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBpbmNs dWRpbmcgaXRzZWxmIChzbyBpdCBpcyBuZXZlciB6ZXJvKS4KLSAqIFRoZSByZW1haW5kZXIgb2Yg dGhlIHN0b3JlZCB0dXBsZQorICogSW4gY2FzZSBvZiB0dXBsZXMgd2UgdXNlIGZpcnN0ICJ1bnNp Z25lZCBpbnQiIG9mIGEgc3RvcmVkIHR1cGxlCisgKiB0byBiZSB0aGUgdG90YWwgc2l6ZSBvbi10 YXBlIG9mIHRoZSB0dXBsZSwgaW5jbHVkaW5nIGl0c2VsZgorICogKHNvIGl0IGlzIG5ldmVyIHpl cm8pLiBUaGUgcmVtYWluZGVyIG9mIHRoZSBzdG9yZWQgdHVwbGUKICAqIG1heSBvciBtYXkgbm90 IG1hdGNoIHRoZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR1cGxlIC0tLQogICog YW55IGNvbnZlcnNpb24gbmVlZGVkIGlzIHRoZSBqb2Igb2YgdGhlIHdyaXRldHVwIGFuZCByZWFk dHVwIHJvdXRpbmVzLgogICoKQEAgLTIwNiwxMCArMjE3LDEzIEBAIHN0cnVjdCBUdXBsZXN0b3Jl c3RhdGUKICAqIHN0YXRlLT5iYWNrd2FyZCBpcyBub3Qgc2V0LCB0aGUgd3JpdGUvcmVhZCByb3V0 aW5lcyBtYXkgb21pdCB0aGUgZXh0cmEKICAqIGxlbmd0aCB3b3JkLgogICoKKyAqIEluIGNhc2Ug b2YgRGF0dW0gd2l0aCBjb25zdGFudCBsZW5naHQgYm90aCAidW5zaWduZWQgaW50IiBhcmUgb21t aXR0ZWQuCisgKgogICogd3JpdGV0dXAgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgYm90aCBsZW5ndGgg d29yZHMgYXMgd2VsbCBhcyB0aGUgdHVwbGUKICAqIGRhdGEuICBXaGVuIHJlYWR0dXAgaXMgY2Fs bGVkLCB0aGUgdGFwZSBpcyBwb3NpdGlvbmVkIGp1c3QgYWZ0ZXIgdGhlCi0gKiBmcm9udCBsZW5n dGggd29yZDsgcmVhZHR1cCBtdXN0IHJlYWQgdGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFz dAotICogdGhlIGJhY2sgbGVuZ3RoIHdvcmQgKGlmIHByZXNlbnQpLgorICogZnJvbnQgbGVuZ3Ro IHdvcmQgKGlmIGl0IG5vdCBvbW1pdHRlZCBsaWtlIGluIGNhc2Ugb2YgY29udGFudC1zaXplIERh dHVtKTsKKyAqIHJlYWR0dXAgbXVzdCByZWFkIHRoZSB0dXBsZSBkYXRhIGFuZCBhZHZhbmNlIHBh c3QgdGhlIGJhY2sgbGVuZ3RoIHdvcmQKKyAqIChpZiBwcmVzZW50KS4KICAqCiAgKiBUaGUgd3Jp dGUvcmVhZCByb3V0aW5lcyBjYW4gbWFrZSB1c2Ugb2YgdGhlIHR1cGxlIGRlc2NyaXB0aW9uIGRh dGEKICAqIHN0b3JlZCBpbiB0aGUgVHVwbGVzdG9yZXN0YXRlIHJlY29yZCwgaWYgbmVlZGVkLiBU aGV5IGFyZSBhbHNvIGV4cGVjdGVkCkBAIC0yNDEsMTEgKzI1NSwxNiBAQCBzdGF0aWMgVHVwbGVz dG9yZXN0YXRlICp0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihpbnQgZWZsYWdzLAogc3RhdGljIHZv aWQgdHVwbGVzdG9yZV9wdXR0dXBsZV9jb21tb24oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9p ZCAqdHVwbGUpOwogc3RhdGljIHZvaWQgZHVtcHR1cGxlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRl KTsKIHN0YXRpYyB2b2lkIHR1cGxlc3RvcmVfdXBkYXRlbWF4KFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUpOwotc3RhdGljIHVuc2lnbmVkIGludCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwg Ym9vbCBlb2ZPSyk7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGVudHVwX2hlYXAoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CiBzdGF0aWMgdm9pZCAqY29weXR1cF9oZWFwKFR1 cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCB3cml0ZXR1cF9o ZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCAqcmVh ZHR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCitz dGF0aWMgdW5zaWduZWQgaW50IGxlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBi b29sIGVvZk9LKTsKK3N0YXRpYyB2b2lkICpjb3B5dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIHZvaWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkIHdyaXRldHVwX2RhdHVtKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIHZvaWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkICpyZWFkdHVwX2RhdHVt KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCiAvKgogICoJCXR1 cGxlc3RvcmVfYmVnaW5feHh4CkBAIC0yNjgsNiArMjg3LDEyIEBAIHR1cGxlc3RvcmVfYmVnaW5f Y29tbW9uKGludCBlZmxhZ3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQogCXN0YXRl LT5hbGxvd2VkTWVtID0gbWF4S0J5dGVzICogMTAyNEw7CiAJc3RhdGUtPmF2YWlsTWVtID0gc3Rh dGUtPmFsbG93ZWRNZW07CiAJc3RhdGUtPm15ZmlsZSA9IE5VTEw7CisJLyoKKwkgKiBTZXQgRGF0 dW0gcmVsYXRlZCBkYXRhIHRvIGludmFsaWQgYnkgZGVmYXVsdC4KKwkgKi8KKwlzdGF0ZS0+ZGF0 dW1UeXBlID0gSW52YWxpZE9pZDsKKwlzdGF0ZS0+ZGF0dW1UeXBlTGVuID0gIDA7CisJc3RhdGUt PmRhdHVtVHlwZUJ5VmFsID0gZmFsc2U7CiAKIAkvKgogCSAqIFRoZSBwYWxsb2MvcGZyZWUgcGF0 dGVybiBmb3IgdHVwbGUgbWVtb3J5IGlzIGluIGEgRklGTyBwYXR0ZXJuLiAgQQpAQCAtMzQ1LDYg KzM3MCwzNiBAQCB0dXBsZXN0b3JlX2JlZ2luX2hlYXAoYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wg aW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQogCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9oZWFw OwogCXN0YXRlLT53cml0ZXR1cCA9IHdyaXRldHVwX2hlYXA7CiAJc3RhdGUtPnJlYWR0dXAgPSBy ZWFkdHVwX2hlYXA7CisJc3RhdGUtPmxlbnR1cCA9IGxlbnR1cF9oZWFwOworCisJcmV0dXJuIHN0 YXRlOworfQorCisvKgorICogVGhlIHNhbWUgYXMgdHVwbGVzdG9yZV9iZWdpbl9oZWFwIGJ1dCBj cmVhdGUgc3RvcmUgZm9yIERhdHVtIHZhbHVlcy4KKyAqLworVHVwbGVzdG9yZXN0YXRlICoKK3R1 cGxlc3RvcmVfYmVnaW5fZGF0dW0oT2lkIGRhdHVtVHlwZSwgYm9vbCByYW5kb21BY2Nlc3MsIGJv b2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQoreworCVR1cGxlc3RvcmVzdGF0ZSAqc3RhdGU7 CisJaW50CQkJZWZsYWdzOworCisJLyoKKwkgKiBUaGlzIGludGVycHJldGF0aW9uIG9mIHRoZSBt ZWFuaW5nIG9mIHJhbmRvbUFjY2VzcyBpcyBjb21wYXRpYmxlIHdpdGgKKwkgKiB0aGUgcHJlLTgu MyBiZWhhdmlvciBvZiB0dXBsZXN0b3Jlcy4KKwkgKi8KKwllZmxhZ3MgPSByYW5kb21BY2Nlc3Mg PworCQkoRVhFQ19GTEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX1JFV0lORCkgOgorCQkoRVhFQ19G TEFHX1JFV0lORCk7CisKKwlzdGF0ZSA9IHR1cGxlc3RvcmVfYmVnaW5fY29tbW9uKGVmbGFncywg aW50ZXJYYWN0LCBtYXhLQnl0ZXMpOworCXN0YXRlLT5kYXR1bVR5cGUgPSBkYXR1bVR5cGU7CisJ Z2V0X3R5cGxlbmJ5dmFsKHN0YXRlLT5kYXR1bVR5cGUsICZzdGF0ZS0+ZGF0dW1UeXBlTGVuLCAm c3RhdGUtPmRhdHVtVHlwZUJ5VmFsKTsKKworCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9kYXR1 bTsKKwlzdGF0ZS0+d3JpdGV0dXAgPSB3cml0ZXR1cF9kYXR1bTsKKwlzdGF0ZS0+cmVhZHR1cCA9 IHJlYWR0dXBfZGF0dW07CisJc3RhdGUtPmxlbnR1cCA9IGxlbnR1cF9kYXR1bTsKIAogCXJldHVy biBzdGF0ZTsKIH0KQEAgLTc3Niw2ICs4MzEsMjUgQEAgdHVwbGVzdG9yZV9wdXR0dXBsZShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlLCBIZWFwVHVwbGUgdHVwbGUpCiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN4dCk7CiB9CiAKKy8qCisgKiBMaWtlIHR1cGxlc3RvcmVfcHV0dHVwbGVzbG90IGJ1 dCBmb3Igc2luZ2xlIERhdHVtLgorICovCit2b2lkCit0dXBsZXN0b3JlX3B1dGRhdHVtKFR1cGxl c3RvcmVzdGF0ZSAqc3RhdGUsIERhdHVtIGRhdHVtKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0YXRlLT5jb250ZXh0KTsKKworCS8qCisJICogQ29w eSB0aGUgRGF0dW0uICAoTXVzdCBkbyB0aGlzIGV2ZW4gaW4gV1JJVEVGSUxFIGNhc2UuICBOb3Rl IHRoYXQKKwkgKiBDT1BZVFVQIGluY2x1ZGVzIFVTRU1FTSwgc28gd2UgbmVlZG4ndCBkbyB0aGF0 IGhlcmUuKQorCSAqLworCWRhdHVtID0gUG9pbnRlckdldERhdHVtKENPUFlUVVAoc3RhdGUsIERh dHVtR2V0UG9pbnRlcihkYXR1bSkpKTsKKworCXR1cGxlc3RvcmVfcHV0dHVwbGVfY29tbW9uKHN0 YXRlLCBEYXR1bUdldFBvaW50ZXIoZGF0dW0pKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjeHQpOworfQorCiAvKgogICogU2ltaWxhciB0byB0dXBsZXN0b3JlX3B1dHR1cGxlKCksIGJ1 dCB3b3JrIGZyb20gdmFsdWVzICsgbnVsbHMgYXJyYXlzLgogICogVGhpcyBhdm9pZHMgYW4gZXh0 cmEgdHVwbGUtY29uc3RydWN0aW9uIG9wZXJhdGlvbi4KQEAgLTEwMzAsNyArMTEwNCw3IEBAIHR1 cGxlc3RvcmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAog CQkJKnNob3VsZF9mcmVlID0gdHJ1ZTsKIAkJCWlmIChmb3J3YXJkKQogCQkJewotCQkJCWlmICgo dHVwbGVuID0gZ2V0bGVuKHN0YXRlLCB0cnVlKSkgIT0gMCkKKwkJCQlpZiAoKHR1cGxlbiA9IExF TlRVUChzdGF0ZSwgdHJ1ZSkpICE9IDApCiAJCQkJewogCQkJCQl0dXAgPSBSRUFEVFVQKHN0YXRl LCB0dXBsZW4pOwogCQkJCQlyZXR1cm4gdHVwOwpAQCAtMTA1OSw3ICsxMTMzLDcgQEAgdHVwbGVz dG9yZV9nZXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkJ QXNzZXJ0KCFzdGF0ZS0+dHJ1bmNhdGVkKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KLQkJCXR1 cGxlbiA9IGdldGxlbihzdGF0ZSwgZmFsc2UpOworCQkJdHVwbGVuID0gTEVOVFVQKHN0YXRlLCBm YWxzZSk7CiAKIAkJCWlmIChyZWFkcHRyLT5lb2ZfcmVhY2hlZCkKIAkJCXsKQEAgLTEwOTAsNyAr MTE2NCw3IEBAIHR1cGxlc3RvcmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9v bCBmb3J3YXJkLAogCQkJCQlBc3NlcnQoIXN0YXRlLT50cnVuY2F0ZWQpOwogCQkJCQlyZXR1cm4g TlVMTDsKIAkJCQl9Ci0JCQkJdHVwbGVuID0gZ2V0bGVuKHN0YXRlLCBmYWxzZSk7CisJCQkJdHVw bGVuID0gTEVOVFVQKHN0YXRlLCBmYWxzZSk7CiAJCQl9CiAKIAkJCS8qCkBAIC0xMTUyLDYgKzEy MjYsMjUgQEAgdHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwg Ym9vbCBmb3J3YXJkLAogCX0KIH0KIAorZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3Vs ZF9mcmVlLCBEYXR1bSAqcmVzdWx0KQoreworCURhdHVtIGRhdHVtOworCSpzaG91bGRfZnJlZSA9 IGZhbHNlOworCisJZGF0dW0gPSAoRGF0dW0pIHR1cGxlc3RvcmVfZ2V0dHVwbGUoc3RhdGUsIGZv cndhcmQsIHNob3VsZF9mcmVlKTsKKwlpZiAoZGF0dW0pCisJeworCQkqcmVzdWx0ID1kYXR1bTsK KwkJcmV0dXJuIHRydWU7CisJfQorCWVsc2UKKwl7CisJCSpyZXN1bHQgPSBQb2ludGVyR2V0RGF0 dW0oTlVMTCk7CisJCXJldHVybiBmYWxzZTsKKwl9Cit9CisKIC8qCiAgKiB0dXBsZXN0b3JlX2Fk dmFuY2UgLSBleHBvcnRlZCBmdW5jdGlvbiB0byBhZGp1c3QgcG9zaXRpb24gd2l0aG91dCBmZXRj aGluZwogICoKQEAgLTE1NTYsMjUgKzE2NDksNiBAQCB0dXBsZXN0b3JlX2luX21lbW9yeShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlKQogCXJldHVybiAoc3RhdGUtPnN0YXR1cyA9PSBUU1NfSU5NRU0p OwogfQogCi0KLS8qCi0gKiBUYXBlIGludGVyZmFjZSByb3V0aW5lcwotICovCi0KLXN0YXRpYyB1 bnNpZ25lZCBpbnQKLWdldGxlbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQot ewotCXVuc2lnbmVkIGludCBsZW47Ci0Jc2l6ZV90CQluYnl0ZXM7Ci0KLQluYnl0ZXMgPSBCdWZG aWxlUmVhZE1heWJlRU9GKHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7 Ci0JaWYgKG5ieXRlcyA9PSAwKQotCQlyZXR1cm4gMDsKLQllbHNlCi0JCXJldHVybiBsZW47Ci19 Ci0KLQogLyoKICAqIFJvdXRpbmVzIHNwZWNpYWxpemVkIGZvciBIZWFwVHVwbGUgY2FzZQogICoK QEAgLTE1ODUsNiArMTY1OSwxOSBAQCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9v bCBlb2ZPSykKICAqIHRvIHdyaXRlIHRoYXQgc2VwYXJhdGVseS4KICAqLwogCitzdGF0aWMgdW5z aWduZWQgaW50CitsZW50dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9L KQoreworCXVuc2lnbmVkIGludCBsZW47CisJc2l6ZV90CQluYnl0ZXM7CisKKwluYnl0ZXMgPSBC dWZGaWxlUmVhZE1heWJlRU9GKHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZP Syk7CisJaWYgKG5ieXRlcyA9PSAwKQorCQlyZXR1cm4gMDsKKwllbHNlCisJCXJldHVybiBsZW47 Cit9CisKIHN0YXRpYyB2b2lkICoKIGNvcHl0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRl LCB2b2lkICp0dXApCiB7CkBAIC0xNjMxLDMgKzE3MTgsOTggQEAgcmVhZHR1cF9oZWFwKFR1cGxl c3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pCiAJCUJ1ZkZpbGVSZWFkRXhhY3Qo c3RhdGUtPm15ZmlsZSwgJnR1cGxlbiwgc2l6ZW9mKHR1cGxlbikpOwogCXJldHVybiB0dXBsZTsK IH0KKworLyoKKyAqIFJvdXRpbmVzIHNwZWNpYWxpemVkIGZvciBEYXR1bSBjYXNlLgorICoKKyAq IEhhbmRsZXMgYm90aCBmaXhlZCBhbmQgdmFyaWFibGUtbGVuZ3RoIERhdHVtcyBlZmZpY2llbnRs eToKKyAqIC0gRml4ZWQtbGVuZ3RoOiBzdG9yZXMgcmF3IGJ5dGVzIHdpdGhvdXQgbGVuZ3RoIHBy ZWZpeAorICogLSBWYXJpYWJsZS1sZW5ndGg6IGluY2x1ZGVzIGxlbmd0aCBwcmVmaXggKGFuZCBz dWZmaXggaWYgYmFja3dhcmQgc2NhbikKKyAqIC0gQnktdmFsdWUgdHlwZXMgaGFuZGxlZCBpbmxp bmUgd2l0aG91dCBleHRyYSBjb3B5aW5nCisgKi8KKworc3RhdGljIHVuc2lnbmVkIGludAorbGVu dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCit7CisJdW5zaWdu ZWQgaW50IGxlbjsKKwlzaXplX3QJCW5ieXRlczsKKworCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBl ICE9IEludmFsaWRPaWQpOworCisJaWYgKHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKQorCQlyZXR1 cm4gc3RhdGUtPmRhdHVtVHlwZUxlbjsKKworCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkTWF5YmVFT0Yo c3RhdGUtPm15ZmlsZSwgJmxlbiwgc2l6ZW9mKGxlbiksIGVvZk9LKTsKKwlpZiAobmJ5dGVzID09 IDApCisJCXJldHVybiAwOworCWVsc2UKKwkJcmV0dXJuIGxlbjsKK30KKworc3RhdGljIHZvaWQg KgorY29weXR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sK KwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRh dHVtVHlwZUJ5VmFsKQorCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKFBvaW50ZXJHZXREYXR1bShk YXR1bSkpOworCWVsc2UKKwl7CisJCURhdHVtIGQgPSBkYXR1bUNvcHkoUG9pbnRlckdldERhdHVt KGRhdHVtKSwgc3RhdGUtPmRhdHVtVHlwZUJ5VmFsLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJ VVNFTUVNKHN0YXRlLCBHZXRNZW1vcnlDaHVua1NwYWNlKERhdHVtR2V0UG9pbnRlcihkKSkpOwor CQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKGQpOworCX0KK30KKworc3RhdGljIHZvaWQKK3dyaXRl dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQqIGRhdHVtKQoreworCUFzc2Vy dChzdGF0ZS0+ZGF0dW1UeXBlICE9IEludmFsaWRPaWQpOworCWlmIChzdGF0ZS0+ZGF0dW1UeXBl QnlWYWwpCisJeworCQlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZUxlbiA+IDApOworCQlCdWZGaWxl V3JpdGUoc3RhdGUtPm15ZmlsZSwgZGF0dW0sIHN0YXRlLT5kYXR1bVR5cGVMZW4pOworCX0KKwll bHNlCisJeworCQlTaXplIHNpemUgPSBzdGF0ZS0+ZGF0dW1UeXBlTGVuOworCQlpZiAoc3RhdGUt PmRhdHVtVHlwZUxlbiA8IDApCisJCXsKKwkJCUJ1ZkZpbGVXcml0ZShzdGF0ZS0+bXlmaWxlLCAm c2l6ZSwgc2l6ZW9mKHNpemUpKTsKKwkJCXNpemUgPSBkYXR1bUdldFNpemUoUG9pbnRlckdldERh dHVtKGRhdHVtKSwgc3RhdGUtPmRhdHVtVHlwZUJ5VmFsLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsK KwkJfQorCisJCUJ1ZkZpbGVXcml0ZShzdGF0ZS0+bXlmaWxlLCBkYXR1bSwgc2l6ZSk7CisKKwkJ LyogbmVlZCB0cmFpbGluZyBsZW5ndGggd29yZD8gKi8KKwkJaWYgKHN0YXRlLT5iYWNrd2FyZCAm JiBzdGF0ZS0+ZGF0dW1UeXBlTGVuIDwgMCkKKwkJCUJ1ZkZpbGVXcml0ZShzdGF0ZS0+bXlmaWxl LCAmc2l6ZSwgc2l6ZW9mKHNpemUpKTsKKworCQlGUkVFTUVNKHN0YXRlLCBHZXRNZW1vcnlDaHVu a1NwYWNlKGRhdHVtKSk7CisJCXBmcmVlKGRhdHVtKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkKgor cmVhZHR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQor eworCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlICE9IEludmFsaWRPaWQpOworCWlmIChzdGF0ZS0+ ZGF0dW1UeXBlQnlWYWwpCisJeworCQlEYXR1bSBkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShOVUxM KTsKKwkJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKTsKKwkJQXNzZXJ0KGxlbiA9PSBz dGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJQnVmRmlsZVJlYWRFeGFjdChzdGF0ZS0+bXlmaWxlLCAm ZGF0dW0sIHN0YXRlLT5kYXR1bVR5cGVMZW4pOworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKGRh dHVtKTsKKwl9CisJZWxzZQorCXsKKwkJRGF0dW0gKmRhdHVtcyA9IHBhbGxvYyhsZW4pOworCQlC dWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUsICZkYXR1bXMsIGxlbik7CisKKwkJLyogbmVl ZCB0cmFpbGluZyBsZW5ndGggd29yZD8gKi8KKwkJaWYgKHN0YXRlLT5iYWNrd2FyZCAmJiBzdGF0 ZS0+ZGF0dW1UeXBlTGVuIDwgMCkKKwkJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwg Jmxlbiwgc2l6ZW9mKGxlbikpOworCisJCXJldHVybiBEYXR1bUdldFBvaW50ZXIoKmRhdHVtcyk7 CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzdG9yZS5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvdHVwbGVzdG9yZS5oCmluZGV4IGVkN2M0NTRmNDRlLi4xZjQzMTg2MzM4 NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzdG9yZS5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaApAQCAtMSwxNyArMSwxOCBAQAogLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKgogICogdHVwbGVzdG9yZS5oCi0gKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZv ciB0ZW1wb3JhcnkgdHVwbGUgc3RvcmFnZS4KKyAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9y IHRlbXBvcmFyeSBzdG9yYWdlIG9mIHR1cGxlcyBhbmQgRGF0dW1zLgogICoKLSAqIFRoaXMgbW9k dWxlIGhhbmRsZXMgdGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3NlcyBzdWNo Ci0gKiBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0Yy4gIEl0 IGlzIGVzc2VudGlhbGx5Ci0gKiBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7 IGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQg cmVndXJnaXRhdGUgYSBzZXF1ZW5jZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVjYXVzZSBu byBzb3J0IGlzIHJlcXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcgdGhlIHNl cXVlbmNlCi0gKiBiZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlzIHBhcnRp Y3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20g YWNjZXNzIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEgcXVlcnkg d2l0aG91dCBoYXZpbmcgdG8gcHJvY2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNvbXBsZXRp b24uCi0gKiBBbHNvLCBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGluZGVwZW5k ZW50IHJlYWQgcG9pbnRlcnMuCisgKiBUaGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9y YWdlIG9mIGVpdGhlciB0dXBsZXMgb3Igc2luZ2xlCisgKiBEYXR1bSB2YWx1ZXMgZm9yIHB1cnBv c2VzIHN1Y2ggYXMgTWF0ZXJpYWxpemUgbm9kZXMsIGhhc2hqb2luIGJhdGNoCisgKiBmaWxlcywg ZXRjLiBJdCBpcyBlc3NlbnRpYWxseSBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0 LmM7CisgKiBpdCBkb2VzIG5vIHNvcnRpbmcgb2YgdHVwbGVzIGJ1dCBjYW4gb25seSBzdG9yZSBh bmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5jZQorICogb2YgdHVwbGVzLiAgSG93ZXZlciwgYmVjYXVz ZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0CisgKiByZWFkaW5n IHRoZSBzZXF1ZW5jZSBiZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uCisgKgorICogVGhp cyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjdXJzb3JzLCBiZWNhdXNlIGl0IGFsbG93cyBy YW5kb20gYWNjZXNzCisgKiB3aXRoaW4gdGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mIGEg cXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJvY2VzcworICogdGhlIHVuZGVybHlpbmcgc2NhbiB0 byBjb21wbGV0aW9uLgogICoKICAqIEEgdGVtcG9yYXJ5IGZpbGUgaXMgdXNlZCB0byBoYW5kbGUg dGhlIGRhdGEgaWYgaXQgZXhjZWVkcyB0aGUKICAqIHNwYWNlIGxpbWl0IHNwZWNpZmllZCBieSB0 aGUgY2FsbGVyLgpAQCAtMzksMTQgKzQwLDEzIEBACiAgKi8KIHR5cGVkZWYgc3RydWN0IFR1cGxl c3RvcmVzdGF0ZSBUdXBsZXN0b3Jlc3RhdGU7CiAKLS8qCi0gKiBDdXJyZW50bHkgd2Ugb25seSBu ZWVkIHRvIHN0b3JlIE1pbmltYWxUdXBsZXMsIGJ1dCBpdCB3b3VsZCBiZSBlYXN5Ci0gKiB0byBz dXBwb3J0IHRoZSBzYW1lIGJlaGF2aW9yIGZvciBJbmRleFR1cGxlcyBhbmQvb3IgYmFyZSBEYXR1 bXMuCi0gKi8KLQogZXh0ZXJuIFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9yZV9iZWdpbl9oZWFw KGJvb2wgcmFuZG9tQWNjZXNzLAogCQkJCQkJCQkJCQkgIGJvb2wgaW50ZXJYYWN0LAogCQkJCQkJ CQkJCQkgIGludCBtYXhLQnl0ZXMpOworZXh0ZXJuIFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9y ZV9iZWdpbl9kYXR1bShPaWQgZGF0dW1UeXBlLAorCQkJCQkJCQkJCQkgYm9vbCByYW5kb21BY2Nl c3MsCisJCQkJCQkJCQkJCSBib29sIGludGVyWGFjdCwKKwkJCQkJCQkJCQkJIGludCBtYXhLQnl0 ZXMpOwogCiBleHRlcm4gdm9pZCB0dXBsZXN0b3JlX3NldF9lZmxhZ3MoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgaW50IGVmbGFncyk7CiAKQEAgLTU1LDYgKzU1LDcgQEAgZXh0ZXJuIHZvaWQgdHVw bGVzdG9yZV9wdXR0dXBsZXNsb3QoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwKIGV4dGVybiB2b2lk IHR1cGxlc3RvcmVfcHV0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgSGVhcFR1cGxlIHR1 cGxlKTsKIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0dmFsdWVzKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIFR1cGxlRGVzYyB0ZGVzYywKIAkJCQkJCQkJIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNv bnN0IGJvb2wgKmlzbnVsbCk7CitleHRlcm4gdm9pZCB0dXBsZXN0b3JlX3B1dGRhdHVtKFR1cGxl c3RvcmVzdGF0ZSAqc3RhdGUsIERhdHVtIGRhdHVtKTsKIAogZXh0ZXJuIGludAl0dXBsZXN0b3Jl X2FsbG9jX3JlYWRfcG9pbnRlcihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBpbnQgZWZsYWdzKTsK IApAQCAtNzIsNiArNzMsOCBAQCBleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2luX21lbW9yeShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlKTsKIAogZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXR0dXBsZXNs b3QoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCQkJCQkJYm9vbCBj b3B5LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CitleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2dldGRh dHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKKwkJCQkJCQkJYm9vbCAq c2hvdWxkX2ZyZWUsIERhdHVtICpyZXN1bHQpOwogCiBleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2Fk dmFuY2UoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkKTsKIAotLSAKMi40My4w Cgo= --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Disposition: attachment; filename="v13-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauo66 RnJvbSBkNzU5MDk1ZWNkOTQ2Njk2NmZjM2QxZTIwZjZkYzI5NGU0NGM3NDE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDA3 LzExXSBJbXByb3ZlIENSRUFURS9SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB1c2luZwogYXV4 aWxpYXJ5IGluZGV4CgpNb2RpZnkgdGhlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRpbmcgcHJvY2Vz cyB0byB1c2UgYW4gYXV4aWxpYXJ5IHVubG9nZ2VkIGluZGV4CmR1cmluZyBjb25zdHJ1Y3Rpb24u IFRoaXMgaW1wcm92ZXMgZWZmaWNpZW5jeSBvZiBjb25jdXJyZW50CmluZGV4IG9wZXJhdGlvbnMg Ynk6CgotIENyZWF0aW5nIGFuIGF1eGlsaWFyeSBTVElSIChTaG9ydCBUZXJtIEluZGV4IFJlcGxh Y2VtZW50KSBpbmRleCB0byB0cmFjayBuZXcgdHVwbGVzIGR1cmluZyB0aGUgbWFpbiBpbmRleCBi dWlsZAotIFVzaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggdG8gY2F0Y2ggYWxsIHR1cGxlcyBpbnNl cnRlZCBkdXJpbmcgdGhlIGJ1aWxkIHBoYXNlIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHNlY29u ZCBoZWFwIHNjYW4KLSBNZXJnaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggY29udGVudCB3aXRoIHRo ZSBtYWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uCi0gQXV0b21hdGljYWxseSBjbGVhbmluZyB1 cCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFmdGVyIHRoZSBtYWluIGluZGV4IGlzIHJlYWR5CgpUaGlz IGFwcHJvYWNoIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2Nh biBkdXJpbmcgaW5kZXgKdmFsaWRhdGlvbiwgbWFraW5nIHRoZSBwcm9jZXNzIG1vcmUgZWZmaWNp ZW50IGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4KVGhlIGF1eGlsaWFyeSBpbmRleCBpcyBh dXRvbWF0aWNhbGx5IGRyb3BwZWQgYWZ0ZXIgdGhlIG1haW4gaW5kZXggYmVjb21lcyB2YWxpZC4K ClRoaXMgY2hhbmdlIGFmZmVjdHMgYm90aCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGFuZCBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWQpvcGVyYXRpb25zLiBUaGUgU1RJUiBhY2Nlc3MgbWV0 aG9kIGlzIGFkZGVkIHNwZWNpZmljYWxseSBmb3IgdGhlc2UgYXV4aWxpYXJ5CmluZGV4ZXMgYW5k IGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGJ5IHVzZXJzLgotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAyNiArLQogZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCAgICAgICAgICAgIHwgIDMzICstCiBkb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbCAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgNTkzICsrKysrKysrKysrKy0tLS0tLQogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgMzEyICsrKysrKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDE3ICstCiBz cmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8IDM3NiArKysrKysr Ky0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMzEg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAxMiAr LQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCAgICAgICAgICAgICAgIHwgIDEzICst CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICAgICB8ICAgMyArLQog Li4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwgIDI4ICsKIC4u Li9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgICAgfCAgNDIgKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDE3ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgICAgfCAgMjEgKwogMjEgZmlsZXMg Y2hhbmdlZCwgMTE5NSBpbnNlcnRpb25zKCspLCA0MDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwKaW5kZXggZDBkMTc2Y2M1NGYuLmNmN2EzYmY1MjcxIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK QEAgLTYyMDIsNiArNjIwMiwxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBB UyBiYWNrZW5kaWQ7CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8 L2VudHJ5PgogICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD53 YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZPC9jb21tYW5kPiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4g aXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0ZSBsb2NrcyB0aGF0 IGNhbiBwb3RlbnRpYWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8gZW5zdXJlIHVzZSBv ZiBhdXhpbGlhcnkgaW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBmdXR1cmUgdHJhbnNh Y3Rpb25zLgorICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJy ZW50IG1vZGUuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9zdHJ1 Y3RuYW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgorICAgICAgIGFu ZCA8c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhl IHByb2dyZXNzCisgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5idWls ZGluZyBpbmRleDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpAQCAtNjI0MiwxMyAr NjI1NCwxMiBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KLSAgICAgIDxlbnRyeT48 bGl0ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhl czwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHNjYW5uaW5nIHRoZSB0YWJsZQotICAg ICAgIHRvIHZhbGlkYXRlIHRoZSBpbmRleCB0dXBsZXMgY29sbGVjdGVkIGluIHRoZSBwcmV2aW91 cyB0d28gcGhhc2VzLgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8 L2NvbW1hbmQ+IG1lcmdpbmcgY29udGVudCBvZiBhdXhpbGlhcnkgaW5kZXggd2l0aCB0aGUgdGFy Z2V0IGluZGV4LgogICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25j dXJyZW50IG1vZGUuCi0gICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5ibG9ja3NfdG90YWw8L3N0 cnVjdG5hbWU+IChzZXQgdG8gdGhlIHRvdGFsIHNpemUgb2YgdGhlIHRhYmxlKQotICAgICAgIGFu ZCA8c3RydWN0bmFtZT5ibG9ja3NfZG9uZTwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jl c3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFt ZT50dXBsZXNfdG90YWw8L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIG51bWJlciBvZiB0dXBsZXMg dG8gYmUgbWVyZ2VkKQorICAgICAgIGFuZCA8c3RydWN0bmFtZT50dXBsZXNfZG9uZTwvc3RydWN0 bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAg ICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KQEAgLTYyNjUsOCArNjI3Niw5 IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAg PHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBt YXJraW5nIGRlYWQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29t bWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNh Y3Rpb25zCi0gICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJl Zm9yZSBtYXJraW5nIHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMK KyAgICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBt YXJraW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5SRUlO REVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJraW5n IHRoZSBvbGQgaW5kZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hl biBub3QgaW4gY29uY3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9j a2Vyc190b3RhbDwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0 bmFtZT4KICAgICAgICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3Ru YW1lPiBjb250YWluIHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5k ZXggMjA4Mzg5ZTgwMDYuLmUzMzM0NWY2YTM0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNn bWwKQEAgLTYxNCwyNSArNjE0LDI0IEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VS UkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAgb3V0 IHdyaXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAgICA8 bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVBVEUg SU5ERVg8L2NvbW1hbmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMg b2YgdGhlIHRhYmxlLCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFsbCBl eGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlmeSBv ciB1c2UgdGhlIGluZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCByZXF1 aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0YWtl cwotICAgIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNvbXBsZXRlLiAgSG93ZXZlciwgc2luY2Ug aXQgYWxsb3dzIG5vcm1hbAorICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFt ZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25zaXN0 ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KKyAgICBU aGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4 IGJ1aWxkIGFuZCB0YWtlcworICAgIGxvbmdlciB0byBjb21wbGV0ZS4gIEhvd2V2ZXIsIHNpbmNl IGl0IGFsbG93cyBub3JtYWwKICAgICBvcGVyYXRpb25zIHRvIGNvbnRpbnVlIHdoaWxlIHRoZSBp bmRleCBpcyBidWlsdCwgdGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvcgogICAgIGFkZGluZyBuZXcg aW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuICBPZiBjb3Vyc2UsIHRoZSBleHRy YSBDUFUKICAgICBhbmQgSS9PIGxvYWQgaW1wb3NlZCBieSB0aGUgaW5kZXggY3JlYXRpb24gbWln aHQgc2xvdyBvdGhlciBvcGVyYXRpb25zLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJ biBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBpbmRleCBpcyBhY3R1YWxseSBlbnRlcmVk IGFzIGFuCisgICAgSW4gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkLCB0aGUgbWFpbiBhbmQgYXV4 aWxpYXJ5IGluZGV4ZXMgaXMgYWN0dWFsbHkgZW50ZXJlZCBhcyBhbgogICAgIDxxdW90ZT5pbnZh bGlkPC9xdW90ZT4gaW5kZXggaW50bwotICAgIHRoZSBzeXN0ZW0gY2F0YWxvZ3MgaW4gb25lIHRy YW5zYWN0aW9uLCB0aGVuIHR3byB0YWJsZSBzY2FucyBvY2N1ciBpbgotICAgIHR3byBtb3JlIHRy YW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHRhYmxlIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0 CisgICAgdGhlIHN5c3RlbSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHBo YXNlcyBvY2N1ciBpbgorICAgIG11bHRpcGxlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHBo YXNlLCB0aGUgaW5kZXggYnVpbGQgbXVzdAogICAgIHdhaXQgZm9yIGV4aXN0aW5nIHRyYW5zYWN0 aW9ucyB0aGF0IGhhdmUgbW9kaWZpZWQgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4KLSAgICBBZnRl ciB0aGUgc2Vjb25kIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFu c2FjdGlvbnMKKyAgICBBZnRlciB0aGUgc2Vjb25kIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQgbXVz dCB3YWl0IGZvciBhbnkgdHJhbnNhY3Rpb25zCiAgICAgdGhhdCBoYXZlIGEgc25hcHNob3QgKHNl ZSA8eHJlZiBsaW5rZW5kPSJtdmNjIi8+KSBwcmVkYXRpbmcgdGhlIHNlY29uZAotICAgIHNjYW4g dG8gdGVybWluYXRlLCBpbmNsdWRpbmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNlIG9m IGNvbmN1cnJlbnQKKyAgICBwaGFzZSB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2FjdGlv bnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAogICAgIGluZGV4IGJ1aWxkcyBvbiBv dGhlciB0YWJsZXMsIGlmIHRoZSBpbmRleGVzIGludm9sdmVkIGFyZSBwYXJ0aWFsIG9yIGhhdmUK ICAgICBjb2x1bW5zIHRoYXQgYXJlIG5vdCBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuCiAgICAg VGhlbiBmaW5hbGx5IHRoZSBpbmRleCBjYW4gYmUgbWFya2VkIDxxdW90ZT52YWxpZDwvcXVvdGU+ IGFuZCByZWFkeSBmb3IgdXNlLApAQCAtNjQ1LDEwICs2NDQsMTEgQEAgQ1JFQVRFIFsgVU5JUVVF IF0gSU5ERVggWyBDT05DVVJSRU5UTFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0KICAgIDxwYXJhPgogICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgc2Nhbm5p bmcgdGhlIHRhYmxlLCBzdWNoIGFzIGEgZGVhZGxvY2sgb3IgYQogICAgIHVuaXF1ZW5lc3Mgdmlv bGF0aW9uIGluIGEgdW5pcXVlIGluZGV4LCB0aGUgPGNvbW1hbmQ+Q1JFQVRFIElOREVYPC9jb21t YW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmlu dmFsaWQ8L3F1b3RlPiBpbmRleC4gVGhpcyBpbmRleAotICAgIHdpbGwgYmUgaWdub3JlZCBmb3Ig cXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOwotICAgIGhv d2V2ZXIgaXQgd2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZSBvdmVyaGVhZC4gVGhlIDxhcHBsaWNh dGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4KLSAgICA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFu ZCB3aWxsIHJlcG9ydCBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+ OgorICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFs aWQ8L3F1b3RlPiBpbmRleCBhbmQgaXRzCisgICAgYXNzb2NpYXRlZCBhdXhpbGlhcnkgaW5kZXgu IFRoZXNlIGluZGV4ZXMKKyAgICB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2Vz IGJlY2F1c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOworICAgIGhvd2V2ZXIgdGhleSB3aWxs IHN0aWxsIGNvbnN1bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2Fw cGxpY2F0aW9uPgorICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0 IHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1s aXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTY1OCwxMSArNjU4LDEyIEBAIHBvc3RncmVz PSMgXGQgdGFiCiAgY29sICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKIElu ZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0 aXIgKGNvbCkgSU5WQUxJRAogPC9wcm9ncmFtbGlzdGluZz4KIAogICAgIFRoZSByZWNvbW1lbmRl ZCByZWNvdmVyeQotICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4 IGFuZCB0cnkgYWdhaW4gdG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LiAgKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKKyAgICBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBw ZXJmb3JtCisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4u IChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCiAgICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8 Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgogICAgPC9wYXJh PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDViM2M3Njk4MDBlLi42YTA1NjIwYmQ2NyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwKQEAgLTM2OCwxMSArMzY4LDEwIEBAIFJFSU5ERVggWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSB7IERBCiAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0 cyByZWJ1aWxkaW5nIGluZGV4ZXMgd2l0aCBtaW5pbXVtIGxvY2tpbmcKICAgICBvZiB3cml0ZXMu ICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxpdGVyYWw+ Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFu ZD4uIFdoZW4gdGhpcyBvcHRpb24KLSAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNR TDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxlCi0gICAg Zm9yIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB0byBiZSByZWJ1aWx0IGFuZCB3YWl0IGZvciB0ZXJt aW5hdGlvbiBvZgotICAgIGFsbCBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3Rl bnRpYWxseSB1c2UgdGhlIGluZGV4LgorICAgIGlzIHVzZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3Jl U1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRh dGEKKyAgICBjb25zaXN0ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBj b250aW51ZS4KICAgICBUaGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBh IHN0YW5kYXJkIGluZGV4Ci0gICAgcmVidWlsZCBhbmQgdGFrZXMgc2lnbmlmaWNhbnRseSBsb25n ZXIgdG8gY29tcGxldGUgYXMgaXQgbmVlZHMgdG8gd2FpdAorICAgIHJlYnVpbGQgYW5kIHRha2Vz IGxvbmdlciB0byBjb21wbGV0ZSBhcyBpdCBuZWVkcyB0byB3YWl0CiAgICAgZm9yIHVuZmluaXNo ZWQgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgbW9kaWZ5IHRoZSBpbmRleC4gSG93ZXZlciwgc2lu Y2UKICAgICBpdCBhbGxvd3Mgbm9ybWFsIG9wZXJhdGlvbnMgdG8gY29udGludWUgd2hpbGUgdGhl IGluZGV4IGlzIGJlaW5nIHJlYnVpbHQsIHRoaXMKICAgICBtZXRob2QgaXMgdXNlZnVsIGZvciBy ZWJ1aWxkaW5nIGluZGV4ZXMgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LiBPZgpAQCAtMzg4 LDcgKzM4Nyw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5v cHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPG9yZGVyZWRsaXN0Pgog ICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIG5ldyB0cmFuc2llbnQgaW5k ZXggZGVmaW5pdGlvbiBpcyBhZGRlZCB0byB0aGUgY2F0YWxvZworICAgICAgIEEgbmV3IHRyYW5z aWVudCBpbmRleCBkZWZpbml0aW9uIGFuZCBhbiBhdXhpbGlhcnkgaW5kZXggYXJlIGFkZGVkIHRv IHRoZSBjYXRhbG9nCiAgICAgICAgPGxpdGVyYWw+cGdfaW5kZXg8L2xpdGVyYWw+LiAgVGhpcyBk ZWZpbml0aW9uIHdpbGwgYmUgdXNlZCB0byByZXBsYWNlCiAgICAgICAgdGhlIG9sZCBpbmRleC4g IEEgPGxpdGVyYWw+U0hBUkUgVVBEQVRFIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBhdAogICAg ICAgIHNlc3Npb24gbGV2ZWwgaXMgdGFrZW4gb24gdGhlIGluZGV4ZXMgYmVpbmcgcmVpbmRleGVk IGFzIHdlbGwgYXMgdGhlaXIKQEAgLTM5OCw3ICszOTcsMTUgQEAgUkVJTkRFWCBbICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBd IHsgREEKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIGZpcnN0IHBh c3MgdG8gYnVpbGQgdGhlIGluZGV4IGlzIGRvbmUgZm9yIGVhY2ggbmV3IGluZGV4LiAgT25jZSB0 aGUKKyAgICAgICBUaGUgYXV4aWxpYXJ5IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkgZm9yIGlu c2VydHMiLCBtYWtpbmcKKyAgICAgICBpdCB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zLiBUaGlz IGluZGV4IGVmZmljaWVudGx5IHRyYWNrcyBhbGwgbmV3CisgICAgICAgdHVwbGVzIGR1cmluZyB0 aGUgcmVpbmRleCBwcm9jZXNzLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisg ICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBuZXcgbWFpbiBpbmRleCBp cyBidWlsdCBieSBzY2FubmluZyB0aGUgdGFibGUuICBPbmNlIHRoZQogICAgICAgIGluZGV4IGlz IGJ1aWx0LCBpdHMgZmxhZyA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBp cwogICAgICAgIHN3aXRjaGVkIHRvIDxxdW90ZT50cnVlPC9xdW90ZT4gdG8gbWFrZSBpdCByZWFk eSBmb3IgaW5zZXJ0cywgbWFraW5nIGl0CiAgICAgICAgdmlzaWJsZSB0byBvdGhlciBzZXNzaW9u cyBvbmNlIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHBlcmZvcm1lZCB0aGUgYnVpbGQKQEAgLTQwOSw5 ICs0MTYsOSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0 aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAg ICAgIDxwYXJhPgotICAgICAgIFRoZW4gYSBzZWNvbmQgcGFzcyBpcyBwZXJmb3JtZWQgdG8gYWRk IHR1cGxlcyB0aGF0IHdlcmUgYWRkZWQgd2hpbGUgdGhlCi0gICAgICAgZmlyc3QgcGFzcyB3YXMg cnVubmluZy4gIFRoaXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZQotICAgICAgIHRy YW5zYWN0aW9uIGZvciBlYWNoIGluZGV4LgorICAgICAgIEEgdmFsaWRhdGlvbiBwaGFzZSBtZXJn ZXMgYW55IG1pc3NpbmcgZW50cmllcyBmcm9tIHRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAgICBp bnRvIHRoZSBtYWluIGluZGV4LCBlbnN1cmluZyBhbGwgY29uY3VycmVudCBjaGFuZ2VzIGFyZSBj YXB0dXJlZC4KKyAgICAgICBUaGlzIHN0ZXAgaXMgYWxzbyBkb25lIGluIGEgc2VwYXJhdGUgdHJh bnNhY3Rpb24gZm9yIGVhY2ggaW5kZXguCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+ CiAKQEAgLTQyOCw3ICs0MzUsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxs aXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBoYXZlIDxsaXRl cmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCisgICAgICAgVGhl IG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3Jl YWR5PC9saXRlcmFsPiBzd2l0Y2hlZCB0bwogICAgICAgIDxxdW90ZT5mYWxzZTwvcXVvdGU+IHRv IHByZXZlbnQgYW55IG5ldyB0dXBsZSBpbnNlcnRpb25zLCBhZnRlciB3YWl0aW5nCiAgICAgICAg Zm9yIHJ1bm5pbmcgcXVlcmllcyB0aGF0IG1pZ2h0IHJlZmVyZW5jZSB0aGUgb2xkIGluZGV4IHRv IGNvbXBsZXRlLgogICAgICAgPC9wYXJhPgpAQCAtNDM2LDcgKzQ0Myw3IEBAIFJFSU5ERVggWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAu Li5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhl IG9sZCBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQorICAg ICAgIFRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRl cmFsPlNIQVJFIFVQREFURQogICAgICAgIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gc2Vzc2lvbiBsb2Nr cyBmb3IgdGhlIGluZGV4ZXMgYW5kIHRoZSB0YWJsZSBhcmUKICAgICAgICByZWxlYXNlZC4KICAg ICAgIDwvcGFyYT4KQEAgLTQ0NywxMSArNDU0LDExIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERB CiAgICA8cGFyYT4KICAgICBJZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHJlYnVpbGRpbmcgdGhl IGluZGV4ZXMsIHN1Y2ggYXMgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVl IGluZGV4LCB0aGUgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdpbGwg ZmFpbCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4 IGluIGFkZGl0aW9uIHRvCi0gICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoaXMgaW5kZXggd2ls bCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcwotICAgIGJlY2F1c2UgaXQgbWlnaHQg YmUgaW5jb21wbGV0ZTsgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlCisgICAg Y29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVv dGU+IG5ldyBpbmRleCBhbmQgaXRzIGF1eGlsaWFyeSBpbmRleCBpbiBhZGRpdGlvbiB0bworICAg IHRoZSBwcmUtZXhpc3Rpbmcgb25lLiBUaGVzZSBpbmRleGVzIHdpbGwgYmUgaWdub3JlZCBmb3Ig cXVlcnlpbmcgcHVycG9zZXMKKyAgICBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5jb21wbGV0ZTsg aG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKICAgICBvdmVyaGVhZC4gVGhl IDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNv bW1hbmQgd2lsbCByZXBvcnQKLSAgICBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8 L2xpdGVyYWw+OgorICAgIHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFs PjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTQ2MiwxMiArNDY5 LDE0IEBAIHBvc3RncmVzPSMgXGQgdGFiCiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChjb2wp CiAgICAgImlkeF9jY25ldyIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0 aXIgKGNvbCkgSU5WQUxJRAorCiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgSWYgdGhlIGluZGV4 IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBpcyBzdWZmaXhlZAotICAgIDxsaXRl cmFsPmNjbmV3PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50 CisgICAgPGxpdGVyYWw+Y2NuZXc8L2xpdGVyYWwgb3IgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+ LCB0aGVuIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAgICAg aW5kZXggY3JlYXRlZCBkdXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJl Y29tbWVuZGVkCi0gICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVy YWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3Ag dGhlc2UgaW5kZXhlcyB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAgICB0 aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWlu LgogICAgIElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+ Y2NvbGQ8L2xpdGVyYWw+LAogICAgIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBpbmRl eCB3aGljaCBjb3VsZCBub3QgYmUgZHJvcHBlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U CmluZGV4IDgyOWRhZDExOTRlLi5kNDE2MDljOTdjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9UCkBAIC0zNzUsNiArMzc1LDExIEBAIGNvbnN0cmFpbnQgb24gd2hpY2ggdXBkYXRlcyBj YW4gYmUgSE9ULiAgT3RoZXIgdHJhbnNhY3Rpb25zIG11c3QgaW5jbHVkZQogc3VjaCBhbiBpbmRl eCB3aGVuIGRldGVybWluaW5nIEhPVC1zYWZldHkgb2YgdXBkYXRlcywgZXZlbiB0aG91Z2ggdGhl eQogbXVzdCBpZ25vcmUgaXQgZm9yIGJvdGggaW5zZXJ0aW9uIGFuZCBzZWFyY2hpbmcgcHVycG9z ZXMuCiAKK0Fsc28sIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4IGlzIGNyZWF0ZWQgdGhlIHNhbWUg d2F5LiBJdCBtYXJrZWQgYXMKKyJyZWFkeSBmb3IgaW5zZXJ0cyIgd2l0aG91dCBhbnkgYWN0dWFs IHRhYmxlIHNjYW4uIEl0cyBwdXJwb3NlIGlzIGNvbGxlY3QKK25ldyB0dXBsZXMgaW5zZXJ0ZWQg aW50byB0YWJsZSB3aGlsZSBvdXIgdGFyZ2V0IGluZGV4IGlzIHN0aWxsICJub3QgcmVhZHkKK2Zv ciBpbnNlcnRzIgorCiBXZSBtdXN0IGRvIHRoaXMgdG8gYXZvaWQgbWFraW5nIGluY29ycmVjdCBp bmRleCBlbnRyaWVzLiAgRm9yIGV4YW1wbGUsCiBzdXBwb3NlIHdlIGFyZSBidWlsZGluZyBhbiBp bmRleCBvbiBjb2x1bW4gWCBhbmQgd2UgbWFrZSBhbiBpbmRleCBlbnRyeSBmb3IKIGEgbm9uLUhP VCB0dXBsZSB3aXRoIFg9MS4gIFRoZW4gc29tZSBvdGhlciBiYWNrZW5kLCB1bmF3YXJlIHRoYXQg WCBpcyBhbgpAQCAtMzk0LDE0ICszOTksMTQgQEAgQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRl eCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UKIHVzZSB0 aGUga2V5IHZhbHVlIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAKIFdlIG1hcmsgdGhlIGluZGV4IG9w ZW4gZm9yIGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCi13ZSBh Z2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRo ZW4gd2UgdGFrZQotYSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGFuZCB2YWxpZGF0ZSB0aGUg aW5kZXguICBUaGlzIHNlYXJjaGVzIGZvcgotdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXgs IGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMuICBBZ2FpbiwKLXRoZSBpbmRleCBlbnRyaWVz IGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAord2Ug YWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBU aGVuIHZhbGlkYXRlCit0aGUgaW5kZXguICBUaGlzIHNlYXJjaGVzIGZvciB0dXBsZXMgbWlzc2lu ZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKK2luZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlz c2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byBmcmVzaCBzbmFwc2hvdC4KK0FnYWluLCB0aGUg aW5kZXggZW50cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBU SURzLCBidXQKIHRoZSB2YWx1ZSB0byBiZSBpbnNlcnRlZCBpcyB0aGUgb25lIGZyb20gdGhlIGxp dmUgdHVwbGUuCiAKIFRoZW4gd2Ugd2FpdCB1bnRpbCBldmVyeSB0cmFuc2FjdGlvbiB0aGF0IGNv dWxkIGhhdmUgYSBzbmFwc2hvdCBvbGRlciB0aGFuCi10aGUgc2Vjb25kIHJlZmVyZW5jZSBzbmFw c2hvdCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9keSBpcwordGhlIGxhdGVz dCB1c2VkIHNuYXBzaG90IGlzIGZpbmlzaGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQgbm9ib2R5IGlz CiBhbGl2ZSBhbnkgbG9uZ2VyIHdobyBjb3VsZCBuZWVkIHRvIHNlZSBhbnkgdHVwbGVzIHRoYXQg bWlnaHQgYmUgbWlzc2luZwogZnJvbSB0aGUgaW5kZXgsIGFzIHdlbGwgYXMgZW5zdXJpbmcgdGhh dCBubyBvbmUgY2FuIHNlZSBhbnkgaW5jb25zaXN0ZW50CiByb3dzIGluIGEgYnJva2VuIEhPVCBj aGFpbiAodGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBzdHJvbmdlciB0aGFuIHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYmMzZDM3MzhlZGUuLjk2YzA0ZTlh ZGQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTQxLDYg KzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTE3NzcsMjQ2ICsx Nzc4LDQ1MiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0KIAotc3RhdGljIHZvaWQKKy8qCisgKiBDYWxj dWxhdGUgc2V0IGRpZmZlcmVuY2UgKHJlbGF0aXZlIGNvbXBsZW1lbnQpIG9mIG1haW4gYW5kIGF1 eAorICogc2V0cy4KKyAqCisgKiBBbGwgcmVjb3JkcyB3aGljaCBhcmUgcHJlc2VudCBpbiBhdXhs aWFyeSB0dXBsZXNvcnQgYnV0IG5vdCBpcworICogbWFpbiBhcmUgYWRkZWQgdG8gdGhlIHN0b3Jl LgorICoKKyAqIEluIHNldCB0aGVvcnkgbm90YXRpb24gc3RvcmUgPSBhdXggLSBtYWluIG9yIHN0 b3JlID0gYXV4IC8gbWFpbi4KKyAqCisgKiByZXR1cm5zIG51bWJlciBvZiBpdGVtcyBhZGRlZCB0 byBzdG9yZQorICovCitzdGF0aWMgaW50CitoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0 X2RpZmZlcmVuY2UoVHVwbGVzb3J0c3RhdGUgICptYWluLAorCQkJCQkJCQkJCSAgIFR1cGxlc29y dHN0YXRlICAqYXV4LAorCQkJCQkJCQkJCSAgIFR1cGxlc3RvcmVzdGF0ZSAqc3RvcmUpCit7CisJ aW50CQkJCW51bSA9IDA7CisJLyogc3RhdGUgdmFyaWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KKwlJ dGVtUG9pbnRlciAJaW5kZXhjdXJzb3IgPSBOVUxMLAorCQkJCQlhdXhpbmRleGN1cnNvciA9IE5V TEw7CisJSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQsCisJCQkJCWF1eGRlY29kZWQsCisJCQkJCWZl dGNoZWQ7CisJYm9vbAkJCXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNv cnRfZW1wdHkgPSBmYWxzZTsKKworCS8qIEluaXRpYWxpemUgcG9pbnRlcnMuICovCisJSXRlbVBv aW50ZXJTZXRJbnZhbGlkKCZkZWNvZGVkKTsKKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRl Y29kZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmZmV0Y2hlZCk7CisKKwkvKgorCSAqIE1h aW4gbG9vcDogd2Ugc3RlcCB0aHJvdWdoIHRoZSBhdXhpbGlhcnkgc29ydCAoYXV4U3RhdGUtPnR1 cGxlc29ydCksCisJICogd2hpY2ggaG9sZHMgVElEcyB0aGF0IG11c3QgY29tcGFyZWQgdG8gdGhv c2UgZnJvbSB0aGUgIm1haW4iIHNvcnQKKwkgKiAoc3RhdGUtPnR1cGxlc29ydCkuCisJICovCisJ d2hpbGUgKCFhdXh0dXBsZXNvcnRfZW1wdHkpCisJeworCQlEYXR1bQkJdHNfdmFsOworCQlib29s CQl0c19pc251bGw7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJKiBBdHRl bXB0IHRvIGZldGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBhdXhpbGlhcnkgc29ydC4gSWYgaXQn cworCQkqIGVtcHR5LCB3ZSBzZXQgYXV4aW5kZXhjdXJzb3IgdG8gTlVMTC4KKwkJKi8KKwkJYXV4 dHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShhdXgsIHRydWUsCisJCQkJCQkJ CQkJCQkgZmFsc2UsICZ0c192YWwsICZ0c19pc251bGwsCisJCQkJCQkJCQkJCQkgTlVMTCk7CisJ CUFzc2VydChhdXh0dXBsZXNvcnRfZW1wdHkgfHwgIXRzX2lzbnVsbCk7CisJCWlmICghYXV4dHVw bGVzb3J0X2VtcHR5KQorCQl7CisJCQlpdGVtcHRyX2RlY29kZSgmYXV4ZGVjb2RlZCwgRGF0dW1H ZXRJbnQ2NCh0c192YWwpKTsKKwkJCWF1eGluZGV4Y3Vyc29yID0gJmF1eGRlY29kZWQ7CisJCX0K KwkJZWxzZQorCQl7CisJCQlhdXhpbmRleGN1cnNvciA9IE5VTEw7CisJCX0KKworCQkvKgorCQkq IElmIHRoZSBhdXhpbGlhcnkgc29ydCBpcyBub3QgeWV0IGVtcHR5LCB3ZSBub3cgdHJ5IHRvIHN5 bmNocm9uaXplCisJCSogdGhlICJtYWluIiBzb3J0IGN1cnNvciAoaW5kZXhjdXJzb3IpIHdpdGgg YXV4aW5kZXhjdXJzb3IuIFdlIGFkdmFuY2UKKwkJKiB0aGUgbWFpbiBzb3J0IGN1cnNvciB1bnRp bCB3ZSd2ZSByZWFjaGVkIG9yIHBhc3NlZCB0aGUgYXV4aWxpYXJ5IFRJRC4KKwkJKi8KKwkJaWYg KCFhdXh0dXBsZXNvcnRfZW1wdHkpCisJCXsKKwkJCS8qCisJCQkgKiBNb3ZlIHRoZSBtYWluIHNv cnQgZm9yd2FyZCB3aGlsZToKKwkJCSAqICAgKDEpIEl0J3Mgbm90IGV4aGF1c3RlZCAodHVwbGVz b3J0X2VtcHR5ID09IGZhbHNlKSwgYW5kCisJCQkgKiAgICgyKSBFaXRoZXIgaW5kZXhjdXJzb3Ig aXMgTlVMTCAoZmlyc3QgaXRlcmF0aW9uKSBvcgorCQkJICogICAgICAgaW5kZXhjdXJzb3IgPCBh dXhpbmRleGN1cnNvciBpbiBUSUQgb3JkZXIuCisJCQkgKi8KKwkJCXdoaWxlICghdHVwbGVzb3J0 X2VtcHR5ICYmIChpbmRleGN1cnNvciA9PSBOVUxMIHx8IC8qIG51bGwgb24gZmlyc3QgdGltZSBo ZXJlICovCisJCQkJCQlJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsIGF1eGluZGV4Y3Vy c29yKSA8IDApKQorCQkJeworCQkJCS8qCisJCQkJICogR2V0IHRoZSBuZXh0IFRJRCBmcm9tIHRo ZSBtYWluIHNvcnQuIElmIGl0J3MgZW1wdHksCisJCQkJICogd2Ugc2V0IGluZGV4Y3Vyc29yIHRv IE5VTEwuCisJCQkJICovCisJCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1 bShtYWluLCB0cnVlLAorCQkJCQkJCQkJCQkJCSAgZmFsc2UsICZ0c192YWwsICZ0c19pc251bGws CisJCQkJCQkJCQkJCQkJICBOVUxMKTsKKwkJCQlBc3NlcnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0 c19pc251bGwpOworCisJCQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCisJCQkJeworCQkJCQlpdGVt cHRyX2RlY29kZSgmZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192YWwpKTsKKwkJCQkJaW5kZXhj dXJzb3IgPSAmZGVjb2RlZDsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaW5kZXhjdXJz b3IgPSBOVUxMOworCQkJCX0KKworCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCQl9CisK KwkJCS8qCisJCQkgKiBOb3csIGlmIGVpdGhlcjoKKwkJCSAqICAtIHRoZSBtYWluIHNvcnQgaXMg ZW1wdHksIG9yCisJCQkgKiAgLSBpbmRleGN1cnNvciA+IGF1eGluZGV4Y3Vyc29yLAorCQkJICoK KwkJCSAqIHRoZW4gYXV4aW5kZXhjdXJzb3IgaWRlbnRpZmllcyBhIFRJRCB0aGF0IGRvZXNuJ3Qg YXBwZWFyIGluCisJCQkgKiB0aGUgbWFpbiBzb3J0LiBXZSBsaWtlbHkgbmVlZCB0byBpbnNlcnQg aXQKKwkJCSAqIGludG8gdGhlIHRhcmdldCBpbmRleCBpZiBpdOKAmXMgdmlzaWJsZSBpbiB0aGUg aGVhcC4KKwkJCSAqLworCQkJaWYgKHR1cGxlc29ydF9lbXB0eSB8fCBJdGVtUG9pbnRlckNvbXBh cmUoaW5kZXhjdXJzb3IsIGF1eGluZGV4Y3Vyc29yKSA+IDApCisJCQl7CisJCQkJdHVwbGVzdG9y ZV9wdXRkYXR1bShzdG9yZSwgSW50NjRHZXREYXR1bShpdGVtcHRyX2VuY29kZShhdXhpbmRleGN1 cnNvcikpKTsKKwkJCQludW0rKzsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBudW07Cit9CisK K3R5cGVkZWYgc3RydWN0IFZhbGlkYXRlSW5kZXhTY2FuU3RhdGUKK3sKKwlUdXBsZXN0b3Jlc3Rh dGUJCSpzdG9yZTsKKwlCbG9ja051bWJlcgkJCXByZXZfYmxvY2tfbnVtYmVyOworCU9mZnNldE51 bWJlcgkJcHJldl9vZmZfb2Zmc2V0X251bWJlcjsKK30gVmFsaWRhdGVJbmRleFNjYW5TdGF0ZTsK KworLyoKKyAqIFRoaXMgaXMgUmVhZFN0cmVhbUJsb2NrTnVtYmVyQ0IgaW1wbGVtZW50YXRpb24g d2hpY2ggd29ya3MgYXMgZm9sbG93czoKKyAqCisgKiAxKSBJdCBpdGVyYXRlcyBvdmVyIGEgc29y dGVkIHR1cGxlc3RvcmUsIHdoZXJlIGVhY2ggZWxlbWVudCBpcyBhbiBlbmNvZGVkCisgKiAgICBJ dGVtUG9pbnRlcgorICoKKyAqIDIpIEl0IHJldHVybnMgdGhlIGN1cnJlbnQgQmxvY2tOdW1iZXIg YW5kIGNvbGxlY3RzIGFsbCBPZmZzZXROdW1iZXJzCisgKiAgICBmb3IgdGhhdCBibG9jayBpbiBw ZXJfYnVmZmVyX2RhdGEuCisgKgorICogMykgT25jZSB0aGUgY29kZSBlbmNvdW50ZXJzIGEgbmV3 IEJsb2NrTnVtYmVyLCBpdCBzdG9wcyByZWFkaW5nIG1vcmUKKyAqICAgIG9mZnNldHMgYW5kIHNh dmVzIHRoZSBPZmZzZXROdW1iZXIgb2YgdGhlIG5ldyBibG9jayBmb3IgdGhlIG5leHQgY2FsbC4K KyAqCisgKiA0KSBUaGUgbGlzdCBvZiBvZmZzZXRzIGZvciBhIGJsb2NrIGlzIGFsd2F5cyB0ZXJt aW5hdGVkIHdpdGggSW52YWxpZE9mZnNldE51bWJlci4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlz IGludGVuZGVkIHRvIGJlIHJlcGVhdGVkbHkgY2FsbGVkLCBlYWNoIHRpbWUgcmV0dXJuaW5nCisg KiB0aGUgbmV4dCBibG9jayBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgc2V0IG9mIG9mZnNldHMuCisg Ki8KK3N0YXRpYyBCbG9ja051bWJlcgoraGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fcmVhZF9z dHJlYW1fbmV4dCgKKwkJCQkJCQkJICBSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJCSAgdm9p ZCAqdm9pZF9jYWxsYmFja19wcml2YXRlX2RhdGEsCisJCQkJCQkJCSAgdm9pZCAqdm9pZF9wZXJf YnVmZmVyX2RhdGEKKwkJCQkJCQkJICApCit7CisJYm9vbCBzaG91ZF9mcmVlOworCURhdHVtIGRh dHVtOworCUJsb2NrTnVtYmVyIHJlc3VsdCA9IEludmFsaWRCbG9ja051bWJlcjsKKwlpbnQgaSA9 IDA7CisKKwkvKgorCSAqIFJldHJpZXZlIHRoZSBzcGVjaWFsaXplZCBjYWxsYmFjayBzdGF0ZSBh bmQgdGhlIG91dHB1dCBidWZmZXIuCisJICogY2FsbGJhY2tfcHJpdmF0ZV9kYXRhIGtlZXBzIHRy YWNrIG9mIHRoZSBwcmV2aW91cyBibG9jayBhbmQgb2Zmc2V0CisJICogZnJvbSBhIHByaW9yIGlu dm9jYXRpb24sIGlmIGFueS4KKwkgKi8KKwlWYWxpZGF0ZUluZGV4U2NhblN0YXRlICpjYWxsYmFj a19wcml2YXRlX2RhdGEgPSB2b2lkX2NhbGxiYWNrX3ByaXZhdGVfZGF0YTsKKwlPZmZzZXROdW1i ZXIgKnBlcl9idWZmZXJfZGF0YSA9IHZvaWRfcGVyX2J1ZmZlcl9kYXRhOworCisJLyoKKwkgKiBJ ZiB0aGVyZSBpcyBhICJsZWZ0b3ZlciIgb2Zmc2V0IG51bWJlciBmcm9tIHRoZSBwcmV2aW91cyBp bnZvY2F0aW9uLAorCSAqIGl0IG1lYW5zIHdlIGhhZCBzd2l0Y2hlZCB0byBhIG5ldyBibG9jayBp biB0aGUgbWlkZGxlIG9mIHRoZSBsYXN0IGNhbGwuCisJICogV2UgcGxhY2UgdGhhdCBsZWZ0b3Zl ciBvZmZzZXQgbnVtYmVyIGludG8gdGhlIGJ1ZmZlciBmaXJzdC4KKwkgKi8KKwlpZiAoY2FsbGJh Y2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVtYmVyICE9IEludmFsaWRPZmZzZXRO dW1iZXIpCisJeworCQlBc3NlcnQoY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251 bWJlciAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOworCQkvKgorCQkgKiAncmVzdWx0JyBpcyB0aGUg YmxvY2sgbnVtYmVyIHRvIHJldHVybi4gV2Ugc2V0IGl0IHRvIHRoZSBibG9jaworCQkgKiBmcm9t IHRoZSBwcmV2aW91cyBsZWZ0b3ZlciBvZmZzZXQuCisJCSAqLworCQlyZXN1bHQgPSBjYWxsYmFj a19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyOworCQkvKiBQbGFjZSBsZWZ0b3ZlciBv ZmZzZXQgbnVtYmVyIGluIHRoZSBvdXRwdXQgYnVmZmVyLiAqLworCQlwZXJfYnVmZmVyX2RhdGFb aSsrXSA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlcjsKKwkJ LyoKKwkJICogQ2xlYXIgdGhlIGxlZnRvdmVyIG9mZnNldCBudW1iZXIgc28gaXQgd29uJ3QgYmUg cmV1c2VkIHVubGVzcworCQkgKiB3ZSBlbmNvdW50ZXIgYW5vdGhlciBibG9jayBjaGFuZ2UuCisJ CSAqLworCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1iZXIgPSBJ bnZhbGlkT2Zmc2V0TnVtYmVyOworCX0KKworCS8qCisJICogUmVhZCBmcm9tIHRoZSB0dXBsZXN0 b3JlIHVudGlsIHdlIGVpdGhlciBydW4gb3V0IG9mIHR1cGxlcyBvciB3ZQorCSAqIGVuY291bnRl ciBhIGJsb2NrIGNoYW5nZS4gRm9yIGVhY2ggdHVwbGU6CisJICoKKwkgKiAgIDEpIERlY29kZSBp dHMgYmxvY2svb2Zmc2V0IGZyb20gdGhlIERhdHVtLgorCSAqICAgMikgSWYgaXQncyB0aGUgZmly c3QgdGltZSBpbiB0aGlzIGNhbGwgKHByZXZfYmxvY2tfbnVtYmVyID09IEludmFsaWRCbG9ja051 bWJlciksCisJICogICAgICBpbml0aWFsaXplIHByZXZfYmxvY2tfbnVtYmVyLgorCSAqICAgMykg SWYgdGhlIGJsb2NrIG51bWJlciBtYXRjaGVzIHRoZSBjdXJyZW50IGJsb2NrLCBjb2xsZWN0IHRo ZSBvZmZzZXQuCisJICogICA0KSBJZiB0aGUgYmxvY2sgbnVtYmVyIGRpZmZlcnMsIHNhdmUgdGhh dCBvZmZzZXQgYXMgbGVmdG92ZXIgYW5kIGJyZWFrCisJICogICAgICBzbyB0aGF0IHRoZSBuZXh0 IGNhbGwgY2FuIGhhbmRsZSB0aGUgbmV3IGJsb2NrLgorCSAqLworCXdoaWxlICh0dXBsZXN0b3Jl X2dldGRhdHVtKGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+c3RvcmUsIHRydWUsICZzaG91ZF9mcmVl LCAmZGF0dW0pKQorCXsKKwkJQmxvY2tOdW1iZXIgbmV4dF9ibG9ja19udW1iZXI7CisJCUl0ZW1Q b2ludGVyRGF0YSBuZXh0X2RhdGE7CisKKwkJLyogRGVjb2RlIHRoZSBkYXR1bSBpbnRvIGFuIEl0 ZW1Qb2ludGVyIChibG9jayArIG9mZnNldCkuICovCisJCWl0ZW1wdHJfZGVjb2RlKCZuZXh0X2Rh dGEsIERhdHVtR2V0SW50NjQoZGF0dW0pKTsKKwkJbmV4dF9ibG9ja19udW1iZXIgPSBJdGVtUG9p bnRlckdldEJsb2NrTnVtYmVyKCZuZXh0X2RhdGEpOworCisJCS8qCisJCSAqIElmIHdlIGhhdmVu J3Qgc2V0IGEgYmxvY2sgbnVtYmVyIHlldCB0aGlzIHJvdW5kLCBpbml0aWFsaXplIGl0CisJCSAq IHVzaW5nIHRoZSBmaXJzdCB0dXBsZSB3ZSByZWFkLgorCQkgKi8KKwkJaWYgKGNhbGxiYWNrX3By aXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPT0gSW52YWxpZEJsb2NrTnVtYmVyKQorCQkJ Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlciA9IG5leHRfYmxvY2tfbnVt YmVyOworCisJCS8qCisJCSAqIEFsd2F5cyBzZXQgdGhlIHJlc3VsdCB0byBiZSB0aGUgImN1cnJl bnQiIGJsb2NrIG51bWJlcgorCQkgKiB3ZSBhcmUgZmlsbGluZyBvZmZzZXRzIGZvci4KKwkJICov CisJCXJlc3VsdCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXI7CisK KwkJLyoKKwkJICogSWYgdGhpcyB0dXBsZSBpcyBmcm9tIHRoZSBzYW1lIGJsb2NrLCBqdXN0IHN0 b3JlIGl0cyBvZmZzZXQKKwkJICogaW4gb3VyIHBlcl9idWZmZXJfZGF0YSBhcnJheS4KKwkJICov CisJCWlmIChuZXh0X2Jsb2NrX251bWJlciA9PSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZf YmxvY2tfbnVtYmVyKQorCQl7CisJCQlwZXJfYnVmZmVyX2RhdGFbaSsrXSA9IEl0ZW1Qb2ludGVy R2V0T2Zmc2V0TnVtYmVyKCZuZXh0X2RhdGEpOworCisJCQkvKiBGcmVlIHRoZSBkYXR1bSBpZiBu ZWVkZWQuICovCisJCQlpZiAoc2hvdWRfZnJlZSkKKwkJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIo ZGF0dW0pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGUgYmxvY2sganVz dCBjaGFuZ2VkLCBzdG9yZSB0aGUgb2Zmc2V0IG9mIHRoZSBuZXcgYmxvY2sKKwkJCSAqIGFzIGxl ZnRvdmVyIGZvciB0aGUgbmV4dCBpbnZvY2F0aW9uIGFuZCBicmVhayBvdXQuCisJCQkgKi8KKwkJ CWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPSBuZXh0X2Jsb2NrX251 bWJlcjsKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlciA9 ICBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9kYXRhKTsKKworCQkJLyogRnJlZSB0 aGUgZGF0dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3VkX2ZyZWUpCisJCQkJcGZyZWUoRGF0 dW1HZXRQb2ludGVyKGRhdHVtKSk7CisKKwkJCS8qIEJyZWFrIHRvIGxldCB0aGUgbmV4dCBjYWxs IGhhbmRsZSB0aGUgbmV3IGJsb2NrLiAqLworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKgorCSAq IFRlcm1pbmF0ZSB0aGUgbGlzdCBvZiBvZmZzZXRzIGZvciB0aGlzIGJsb2NrIHdpdGggYW4gSW52 YWxpZE9mZnNldE51bWJlci4KKwkgKi8KKwlwZXJfYnVmZmVyX2RhdGFbaV0gPSBJbnZhbGlkT2Zm c2V0TnVtYmVyOworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBUcmFuc2FjdGlvbklkCiBo ZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkg ICBSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJICAgSW5kZXhJbmZvICppbmRleEluZm8s Ci0JCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0 ZSAqc3RhdGUpCisJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJICAg VmFsaWRhdGVJbmRleFN0YXRlICphdXhTdGF0ZSkKIHsKLQlUYWJsZVNjYW5EZXNjIHNjYW47Ci0J SGVhcFNjYW5EZXNjIGhzY2FuOwotCUhlYXBUdXBsZQloZWFwVHVwbGU7CisJVHJhbnNhY3Rpb25J ZCBsaW1pdFhtaW47CisKIAlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKIAlib29sCQlp c251bGxbSU5ERVhfTUFYX0tFWVNdOwotCUV4cHJTdGF0ZSAgKnByZWRpY2F0ZTsKLQlUdXBsZVRh YmxlU2xvdCAqc2xvdDsKLQlFU3RhdGUJICAgKmVzdGF0ZTsKLQlFeHByQ29udGV4dCAqZWNvbnRl eHQ7Ci0JQmxvY2tOdW1iZXIgcm9vdF9ibGtubyA9IEludmFsaWRCbG9ja051bWJlcjsKLQlPZmZz ZXROdW1iZXIgcm9vdF9vZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKLQlib29sCQlpbl9p bmRleFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JQmxvY2tOdW1iZXIgcHJldmlvdXNfYmxrbm8g PSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0KLQkvKiBzdGF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBtZXJn ZSAqLwotCUl0ZW1Qb2ludGVyIGluZGV4Y3Vyc29yID0gTlVMTDsKLQlJdGVtUG9pbnRlckRhdGEg ZGVjb2RlZDsKLQlib29sCQl0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZTsKKworCVNuYXBzaG90CQlz bmFwc2hvdDsKKwlUdXBsZVRhYmxlU2xvdCAgKnNsb3Q7CisJRVN0YXRlCQkJKmVzdGF0ZTsKKwlF eHByQ29udGV4dAkJKmVjb250ZXh0OworCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSA9 IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CisKKwlpbnQJCQkJbnVtX3RvX2NoZWNr OworCVR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzX2Zvcl9jaGVjazsKKwlWYWxpZGF0ZUluZGV4U2Nh blN0YXRlIGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKKworCUJ1ZmZlciBidWY7CisJT2Zmc2V0TnVt YmVyKiB0dXBsZXM7CisJUmVhZFN0cmVhbSAqcmVhZF9zdHJlYW07CisKKwkvKiBVc2UgMTAlIG9m IG1lbW9yeSBmb3IgdHVwbGUgc3RvcmUuICovCisJaW50CQlzdG9yZV93b3JrX21lbV9wYXJ0ID0g bWFpbnRlbmFuY2Vfd29ya19tZW0gLyAxMDsKKworCS8qCisJICogTm93IHRha2UgdGhlIHNuYXBz aG90IHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUKKwkgKiB0dXBsZXMu CisJICoKKwkgKiBCZXdhcmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNl IHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbgorCSAqIGFzIGluLXByb2dyZXNzIHRoYXQgb3Vy IHRlbXBvcmFyeSBzbmFwc2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLgorCSAqCisJICogSWYgc3Vj aCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbiBkZWxldGVkIHR1cGxlcyBpbiB0aGUg dGFibGUsCisJICogd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0IHRo b3NlIHRyYW5zYWN0aW9ucyB3aGljaAorCSAqIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxs LWluLXByb2dyZXNzIHdpbGwgZXhwZWN0IHN1Y2ggdHVwbGVzIHRvCisJICogYmUgdGhlcmUgb25j ZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KKwkgKgorCSAqIFdlIHNvbHZlIHRoaXMgYnkg d2FpdGluZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVmb3JlCisJ ICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQsIGZvciB0aGF0IHJlYXNvbiBsaW1pdFhtaW4g aXMgc3VwcG9ydGVkLgorCSAqCisJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3QgdG8gdGhp cyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKKwkgKiBuZWVkIGEgc25hcHNo b3QuCisJICovCisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwlsaW1pdFhtaW4gPSBz bmFwc2hvdC0+eG1pbjsKKworCS8qCisJICogRW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9y IHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCisJICogaXRlbSBwb2ludGVy cy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVjYXVzZSBU SUQKKwkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jtcywgd2hl cmVhcyBpbnQ4IGlzCisJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4KKwkgKi8K Kwl0dXBsZXNfZm9yX2NoZWNrID0gIHR1cGxlc3RvcmVfYmVnaW5fZGF0dW0oSU5UOE9JRCwgZmFs c2UsIGZhbHNlLCBzdG9yZV93b3JrX21lbV9wYXJ0KTsKIAogCS8qCiAJICogc2FuaXR5IGNoZWNr cwogCSAqLwogCUFzc2VydChPaWRJc1ZhbGlkKGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsYW0p KTsKIAotCS8qCi0JICogTmVlZCBhbiBFU3RhdGUgZm9yIGV2YWx1YXRpb24gb2YgaW5kZXggZXhw cmVzc2lvbnMgYW5kIHBhcnRpYWwtaW5kZXgKLQkgKiBwcmVkaWNhdGVzLiAgQWxzbyBhIHNsb3Qg dG8gaG9sZCB0aGUgY3VycmVudCB0dXBsZS4KLQkgKi8KKwludW1fdG9fY2hlY2sgPSBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0X2RpZmZlcmVuY2Uoc3RhdGUtPnR1cGxlc29ydCwKKwkJ CQkJCQkJCQkJCQkJIGF1eFN0YXRlLT50dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCSB0dXBsZXNf Zm9yX2NoZWNrKTsKKworCS8qIEl0IGlzIG91ciByZXNwb25zaWJpbGl0eSB0byBzbG9lIHR1cGxl IHNvcnQgYXMgZmFzdCBhcyB3ZSBjYW4gKi8KKwl0dXBsZXNvcnRfZW5kKHN0YXRlLT50dXBsZXNv cnQpOworCXR1cGxlc29ydF9lbmQoYXV4U3RhdGUtPnR1cGxlc29ydCk7CisKKwlzdGF0ZS0+dHVw bGVzb3J0ID0gYXV4U3RhdGUtPnR1cGxlc29ydCA9IE5VTEw7CisKIAllc3RhdGUgPSBDcmVhdGVF eGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0 ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKGhl YXBSZWxhdGlvbiksCi0JCQkJCQkJCQkmVFRTT3BzSGVhcFR1cGxlKTsKKwkJCQkJCQkJCSZUVFNP cHNCdWZmZXJIZWFwVHVwbGUpOwogCiAJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1 cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1 cGxlID0gc2xvdDsKIAotCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwg aWYgYW55LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1By ZWRpY2F0ZSwgZXN0YXRlKTsKLQogCS8qCi0JICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFz ZSByZWxhdGlvbi4gIFdlIG5lZWQganVzdCB0aG9zZSB0dXBsZXMKLQkgKiBzYXRpc2Z5aW5nIHRo ZSBwYXNzZWQtaW4gcmVmZXJlbmNlIHNuYXBzaG90LiAgV2UgbXVzdCBkaXNhYmxlIHN5bmNzY2Fu Ci0JICogaGVyZSwgYmVjYXVzZSBpdCdzIGNyaXRpY2FsIHRoYXQgd2UgcmVhZCBmcm9tIGJsb2Nr IHplcm8gZm9yd2FyZCB0bwotCSAqIG1hdGNoIHRoZSBzb3J0ZWQgVElEcy4KKwkgKiBQcmVwYXJl IHRvIGZldGNoIGhlYXAgdHVwbGVzIGluIGluZGV4IHN0eWxlLiBUaGlzIGhlbHBzIHRvIHJlY29u c3RydWN0CisJICogYSB0dXBsZSBmcm9tIHRoZSBoZWFwIHdoZW4gd2Ugb25seSBoYXZlIGFuIEl0 ZW1Qb2ludGVyLgogCSAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0 aW9uLAkvKiByZWxhdGlvbiAqLwotCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICovCi0J CQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwotCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBr ZXkgKi8KLQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJ CQkJCQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBub3QgT0sgKi8KLQkJCQkJCQkJIGZhbHNlKTsKLQlo c2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CisJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLnByZXZf YmxvY2tfbnVtYmVyID0gSW52YWxpZEJsb2NrTnVtYmVyOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0 YS5zdG9yZSA9IHR1cGxlc19mb3JfY2hlY2s7CisJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLnByZXZf b2ZmX29mZnNldF9udW1iZXIgPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOwogCi0JcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19UT1RBTCwKLQkJCQkJCQkJIGhz Y2FuLT5yc19uYmxvY2tzKTsKKwlyZWFkX3N0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0 aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFLCBic3RyYXRlZ3ksCisJCQkJCQkJCQkJCQkJCSBo ZWFwUmVsYXRpb24sIE1BSU5fRk9SS05VTSwKKwkJCQkJCQkJCQkJCQkJIGhlYXBhbV9pbmRleF92 YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQsCisJCQkJCQkJCQkJCQkJCSAmY2FsbGJhY2tf cHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkJCQkJCQkgKE1heEhlYXBUdXBsZXNQZXJQYWdlICsgMSkg KiBzaXplb2YoT2Zmc2V0TnVtYmVyKSk7CiAKLQkvKgotCSAqIFNjYW4gYWxsIHR1cGxlcyBtYXRj aGluZyB0aGUgc25hcHNob3QuCi0JICovCi0Jd2hpbGUgKChoZWFwVHVwbGUgPSBoZWFwX2dldG5l eHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxMKQorCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19UT1RBTCwgbnVtX3RvX2No ZWNrKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9U VVBMRVNfRE9ORSwgMCk7CisKKwl3aGlsZSAoKGJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVy KHJlYWRfc3RyZWFtLCAodm9pZCopICZ0dXBsZXMpKSAhPSBJbnZhbGlkQnVmZmVyKQogCXsKLQkJ SXRlbVBvaW50ZXIgaGVhcGN1cnNvciA9ICZoZWFwVHVwbGUtPnRfc2VsZjsKLQkJSXRlbVBvaW50 ZXJEYXRhIHJvb3RUdXBsZTsKLQkJT2Zmc2V0TnVtYmVyIHJvb3Rfb2ZmbnVtOworCQlIZWFwVHVw bGVEYXRhCWhlYXBfdHVwbGVfZGF0YVtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisJCWludCBpOwor CQlPZmZzZXROdW1iZXIgb2ZmOworCQlCbG9ja051bWJlciBibG9ja19udW1iZXI7CiAKIAkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlzdGF0ZS0+aHR1cHMgKz0gMTsKKwkJTG9ja0J1ZmZl cihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJYmxvY2tfbnVtYmVyID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoYnVmKTsKIAotCQlpZiAoKHByZXZpb3VzX2Jsa25vID09IEludmFsaWRCbG9ja051 bWJlcikgfHwKLQkJCShoc2Nhbi0+cnNfY2Jsb2NrICE9IHByZXZpb3VzX2Jsa25vKSkKKwkJaSA9 IDA7CisJCXdoaWxlICgob2ZmID0gdHVwbGVzW2ldKSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQog CQl7Ci0JCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tT X0RPTkUsCi0JCQkJCQkJCQkJIGhzY2FuLT5yc19jYmxvY2spOwotCQkJcHJldmlvdXNfYmxrbm8g PSBoc2Nhbi0+cnNfY2Jsb2NrOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKwkJCWJvb2wJCWFs bF9kZWFkLCBmb3VuZDsKKwkJCUl0ZW1Qb2ludGVyU2V0KCZ0aWQsIGJsb2NrX251bWJlciwgb2Zm KTsKKworCQkJZm91bmQgPSBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKCZ0aWQsIGhlYXBSZWxhdGlv biwgYnVmLCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgICAmaGVhcF90dXBsZV9kYXRhW2ldLCAmYWxs X2RlYWQsIHRydWUpOworCQkJaWYgKCFmb3VuZCkKKwkJCQlJdGVtUG9pbnRlclNldEludmFsaWQo JmhlYXBfdHVwbGVfZGF0YVtpXS50X3NlbGYpOworCQkJaSsrOwogCQl9CisJCUxvY2tCdWZmZXIo YnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCi0JCS8qCi0JCSAqIEFzIGNvbW1lbnRlZCBpbiB0 YWJsZV9pbmRleF9idWlsZF9zY2FuLCB3ZSBzaG91bGQgaW5kZXggaGVhcC1vbmx5Ci0JCSAqIHR1 cGxlcyB1bmRlciB0aGUgVElEcyBvZiB0aGVpciByb290IHR1cGxlczsgc28gd2hlbiB3ZSBhZHZh bmNlIG9udG8KLQkJICogYSBuZXcgaGVhcCBwYWdlLCBidWlsZCBhIG1hcCBvZiByb290IGl0ZW0g b2Zmc2V0cyBvbiB0aGUgcGFnZS4KLQkJICoKLQkJICogVGhpcyBjb21wbGljYXRlcyBtZXJnaW5n IGFnYWluc3QgdGhlIHR1cGxlc29ydCBvdXRwdXQ6IHdlIHdpbGwKLQkJICogdmlzaXQgdGhlIGxp dmUgdHVwbGVzIGluIG9yZGVyIGJ5IHRoZWlyIG9mZnNldHMsIGJ1dCB0aGUgcm9vdAotCQkgKiBv ZmZzZXRzIHRoYXQgd2UgbmVlZCB0byBjb21wYXJlIGFnYWluc3QgdGhlIGluZGV4IGNvbnRlbnRz IG1pZ2h0IGJlCi0JCSAqIG9yZGVyZWQgZGlmZmVyZW50bHkuICBTbyB3ZSBtaWdodCBoYXZlIHRv ICJsb29rIGJhY2siIHdpdGhpbiB0aGUKLQkJICogdHVwbGVzb3J0IG91dHB1dCwgYnV0IG9ubHkg d2l0aGluIHRoZSBjdXJyZW50IHBhZ2UuICBXZSBoYW5kbGUgdGhhdAotCQkgKiBieSBrZWVwaW5n IGEgYm9vbCBhcnJheSBpbl9pbmRleFtdIHNob3dpbmcgYWxsIHRoZQotCQkgKiBhbHJlYWR5LXBh c3NlZC1vdmVyIHR1cGxlc29ydCBvdXRwdXQgVElEcyBvZiB0aGUgY3VycmVudCBwYWdlLiBXZQot CQkgKiBjbGVhciB0aGF0IGFycmF5IGhlcmUsIHdoZW4gYWR2YW5jaW5nIG9udG8gYSBuZXcgaGVh cCBwYWdlLgotCQkgKi8KLQkJaWYgKGhzY2FuLT5yc19jYmxvY2sgIT0gcm9vdF9ibGtubykKKwkJ aSA9IDA7CisJCXdoaWxlICgob2ZmID0gdHVwbGVzW2ldKSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVy KQogCQl7Ci0JCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShoc2Nhbi0+cnNfY2J1Zik7Ci0K LQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKLQkJCWhl YXBfZ2V0X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7Ci0JCQlMb2NrQnVmZmVyKGhz Y2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwotCi0JCQltZW1zZXQoaW5faW5kZXgs IDAsIHNpemVvZihpbl9pbmRleCkpOwotCi0JCQlyb290X2Jsa25vID0gaHNjYW4tPnJzX2NibG9j azsKLQkJfQotCi0JCS8qIENvbnZlcnQgYWN0dWFsIHR1cGxlIFRJRCB0byByb290IFRJRCAqLwot CQlyb290VHVwbGUgPSAqaGVhcGN1cnNvcjsKLQkJcm9vdF9vZmZudW0gPSBJdGVtUG9pbnRlckdl dE9mZnNldE51bWJlcihoZWFwY3Vyc29yKTsKLQotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seSho ZWFwVHVwbGUpKQotCQl7Ci0JCQlyb290X29mZm51bSA9IHJvb3Rfb2Zmc2V0c1tyb290X29mZm51 bSAtIDFdOwotCQkJaWYgKCFPZmZzZXROdW1iZXJJc1ZhbGlkKHJvb3Rfb2ZmbnVtKSkKLQkJCQll cmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0J CQkJCQkgZXJybXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhl YXAtb25seSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJCQkJIEl0 ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJCQkJIEl0ZW1Qb2lu dGVyR2V0T2Zmc2V0TnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShoZWFwUmVsYXRpb24pKSkpOwotCQkJSXRlbVBvaW50ZXJTZXRPZmZzZXROdW1i ZXIoJnJvb3RUdXBsZSwgcm9vdF9vZmZudW0pOwotCQl9Ci0KLQkJLyoKLQkJICogIm1lcmdlIiBi eSBza2lwcGluZyB0aHJvdWdoIHRoZSBpbmRleCB0dXBsZXMgdW50aWwgd2UgZmluZCBvciBwYXNz Ci0JCSAqIHRoZSBjdXJyZW50IHJvb3QgdHVwbGUuCi0JCSAqLwotCQl3aGlsZSAoIXR1cGxlc29y dF9lbXB0eSAmJgotCQkJICAgKCFpbmRleGN1cnNvciB8fAotCQkJCUl0ZW1Qb2ludGVyQ29tcGFy ZShpbmRleGN1cnNvciwgJnJvb3RUdXBsZSkgPCAwKSkKLQkJewotCQkJRGF0dW0JCXRzX3ZhbDsK LQkJCWJvb2wJCXRzX2lzbnVsbDsKLQotCQkJaWYgKGluZGV4Y3Vyc29yKQorCQkJaWYgKEl0ZW1Q b2ludGVySXNWYWxpZCgmaGVhcF90dXBsZV9kYXRhW2ldLnRfc2VsZikpCiAJCQl7CisJCQkJSXRl bVBvaW50ZXJEYXRhIHJvb3RfdGlkOworCQkJCUl0ZW1Qb2ludGVyU2V0KCZyb290X3RpZCwgYmxv Y2tfbnVtYmVyLCBvZmYpOworCisJCQkJLyogUmVzZXQgdGhlIHBlci10dXBsZSBtZW1vcnkgY29u dGV4dCBmb3IgdGhlIG5leHQgZmV0Y2guICovCisJCQkJTWVtb3J5Q29udGV4dFJlc2V0KGVjb250 ZXh0LT5lY3h0X3Blcl90dXBsZV9tZW1vcnkpOworCQkJCUV4ZWNTdG9yZUJ1ZmZlckhlYXBUdXBs ZSgmaGVhcF90dXBsZV9kYXRhW2ldLCBzbG90LCBidWYpOworCisJCQkJLyogQ29tcHV0ZSB0aGUg a2V5IHZhbHVlcyBhbmQgbnVsbCBmbGFncyBmb3IgdGhpcyB0dXBsZS4gKi8KKwkJCQlGb3JtSW5k ZXhEYXR1bShpbmRleEluZm8sCisJCQkJCQkJICAgc2xvdCwKKwkJCQkJCQkgICBlc3RhdGUsCisJ CQkJCQkJICAgdmFsdWVzLAorCQkJCQkJCSAgIGlzbnVsbCk7CisKIAkJCQkvKgotCQkJCSAqIFJl bWVtYmVyIGluZGV4IGl0ZW1zIHNlZW4gZWFybGllciBvbiB0aGUgY3VycmVudCBoZWFwIHBhZ2UK KwkJCQkgKiBJbnNlcnQgdGhlIHR1cGxlIGludG8gdGhlIHRhcmdldCBpbmRleC4KIAkJCQkgKi8K LQkJCQlpZiAoSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihpbmRleGN1cnNvcikgPT0gcm9vdF9i bGtubykKLQkJCQkJaW5faW5kZXhbSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaW5kZXhjdXJz b3IpIC0gMV0gPSB0cnVlOwotCQkJfQotCi0JCQl0dXBsZXNvcnRfZW1wdHkgPSAhdHVwbGVzb3J0 X2dldGRhdHVtKHN0YXRlLT50dXBsZXNvcnQsIHRydWUsCi0JCQkJCQkJCQkJCQkgIGZhbHNlLCAm dHNfdmFsLCAmdHNfaXNudWxsLAotCQkJCQkJCQkJCQkJICBOVUxMKTsKLQkJCUFzc2VydCh0dXBs ZXNvcnRfZW1wdHkgfHwgIXRzX2lzbnVsbCk7Ci0JCQlpZiAoIXR1cGxlc29ydF9lbXB0eSkKLQkJ CXsKLQkJCQlpdGVtcHRyX2RlY29kZSgmZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192YWwpKTsK LQkJCQlpbmRleGN1cnNvciA9ICZkZWNvZGVkOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCS8q IEJlIHRpZHkgKi8KLQkJCQlpbmRleGN1cnNvciA9IE5VTEw7CisJCQkJaW5kZXhfaW5zZXJ0KGlu ZGV4UmVsYXRpb24sCisJCQkJCQkJIHZhbHVlcywKKwkJCQkJCQkgaXNudWxsLAorCQkJCQkJCSAm cm9vdF90aWQsIC8qIGluc2VydCByb290IHR1cGxlICovCisJCQkJCQkJIGhlYXBSZWxhdGlvbiwK KwkJCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPworCQkJCQkJCSBVTklRVUVfQ0hFQ0tfWUVT IDogVU5JUVVFX0NIRUNLX05PLAorCQkJCQkJCSBmYWxzZSwKKwkJCQkJCQkgaW5kZXhJbmZvKTsK IAkJCX0KKwkJCXN0YXRlLT5odHVwcyArPSAxOworCQkJcGdzdGF0X3Byb2dyZXNzX2luY3JfcGFy YW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19ET05FLCAxKTsKKwkJCWkrKzsKIAkJfQogCi0J CS8qCi0JCSAqIElmIHRoZSB0dXBsZXNvcnQgaGFzIG92ZXJzaG90ICphbmQqIHdlIGRpZG4ndCBz ZWUgYSBtYXRjaCBlYXJsaWVyLAotCQkgKiB0aGVuIHRoaXMgdHVwbGUgaXMgbWlzc2luZyBmcm9t IHRoZSBpbmRleCwgc28gaW5zZXJ0IGl0LgotCQkgKi8KLQkJaWYgKCh0dXBsZXNvcnRfZW1wdHkg fHwKLQkJCSBJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290VHVwbGUpID4gMCkg JiYKLQkJCSFpbl9pbmRleFtyb290X29mZm51bSAtIDFdKQotCQl7Ci0JCQlNZW1vcnlDb250ZXh0 UmVzZXQoZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7Ci0KLQkJCS8qIFNldCB1cCBm b3IgcHJlZGljYXRlIG9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLwotCQkJRXhlY1N0b3JlSGVh cFR1cGxlKGhlYXBUdXBsZSwgc2xvdCwgZmFsc2UpOwotCi0JCQkvKgotCQkJICogSW4gYSBwYXJ0 aWFsIGluZGV4LCBkaXNjYXJkIHR1cGxlcyB0aGF0IGRvbid0IHNhdGlzZnkgdGhlCi0JCQkgKiBw cmVkaWNhdGUuCi0JCQkgKi8KLQkJCWlmIChwcmVkaWNhdGUgIT0gTlVMTCkKLQkJCXsKLQkJCQlp ZiAoIUV4ZWNRdWFsKHByZWRpY2F0ZSwgZWNvbnRleHQpKQotCQkJCQljb250aW51ZTsKLQkJCX0K LQotCQkJLyoKLQkJCSAqIEZvciB0aGUgY3VycmVudCBoZWFwIHR1cGxlLCBleHRyYWN0IGFsbCB0 aGUgYXR0cmlidXRlcyB3ZSB1c2UKLQkJCSAqIGluIHRoaXMgaW5kZXgsIGFuZCBub3RlIHdoaWNo IGFyZSBudWxsLiAgVGhpcyBhbHNvIHBlcmZvcm1zCi0JCQkgKiBldmFsdWF0aW9uIG9mIGFueSBl eHByZXNzaW9ucyBuZWVkZWQuCi0JCQkgKi8KLQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywK LQkJCQkJCSAgIHNsb3QsCi0JCQkJCQkgICBlc3RhdGUsCi0JCQkJCQkgICB2YWx1ZXMsCi0JCQkJ CQkgICBpc251bGwpOwotCi0JCQkvKgotCQkJICogWW91J2QgdGhpbmsgd2Ugc2hvdWxkIGdvIGFo ZWFkIGFuZCBidWlsZCB0aGUgaW5kZXggdHVwbGUgaGVyZSwKLQkJCSAqIGJ1dCBzb21lIGluZGV4 IEFNcyB3YW50IHRvIGRvIGZ1cnRoZXIgcHJvY2Vzc2luZyBvbiB0aGUgZGF0YQotCQkJICogZmly c3QuIFNvIHBhc3MgdGhlIHZhbHVlc1tdIGFuZCBpc251bGxbXSBhcnJheXMsIGluc3RlYWQuCi0J CQkgKi8KLQotCQkJLyoKLQkJCSAqIElmIHRoZSB0dXBsZSBpcyBhbHJlYWR5IGNvbW1pdHRlZCBk ZWFkLCB5b3UgbWlnaHQgdGhpbmsgd2UKLQkJCSAqIGNvdWxkIHN1cHByZXNzIHVuaXF1ZW5lc3Mg Y2hlY2tpbmcsIGJ1dCB0aGlzIGlzIG5vIGxvbmdlciB0cnVlCi0JCQkgKiBpbiB0aGUgcHJlc2Vu Y2Ugb2YgSE9ULCBiZWNhdXNlIHRoZSBpbnNlcnQgaXMgYWN0dWFsbHkgYSBwcm94eQotCQkJICog Zm9yIGEgdW5pcXVlbmVzcyBjaGVjayBvbiB0aGUgd2hvbGUgSE9ULWNoYWluLiAgVGhhdCBpcywg dGhlCi0JCQkgKiB0dXBsZSB3ZSBoYXZlIGhlcmUgY291bGQgYmUgZGVhZCBiZWNhdXNlIGl0IHdh cyBhbHJlYWR5Ci0JCQkgKiBIT1QtdXBkYXRlZCwgYW5kIGlmIHNvIHRoZSB1cGRhdGluZyB0cmFu c2FjdGlvbiB3aWxsIG5vdCBoYXZlCi0JCQkgKiB0aG91Z2h0IGl0IHNob3VsZCBpbnNlcnQgaW5k ZXggZW50cmllcy4gIFRoZSBpbmRleCBBTSB3aWxsCi0JCQkgKiBjaGVjayB0aGUgd2hvbGUgSE9U LWNoYWluIGFuZCBjb3JyZWN0bHkgZGV0ZWN0IGEgY29uZmxpY3QgaWYKLQkJCSAqIHRoZXJlIGlz IG9uZS4KLQkJCSAqLwotCi0JCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwKLQkJCQkJCSB2 YWx1ZXMsCi0JCQkJCQkgaXNudWxsLAotCQkJCQkJICZyb290VHVwbGUsCi0JCQkJCQkgaGVhcFJl bGF0aW9uLAotCQkJCQkJIGluZGV4SW5mby0+aWlfVW5pcXVlID8KLQkJCQkJCSBVTklRVUVfQ0hF Q0tfWUVTIDogVU5JUVVFX0NIRUNLX05PLAotCQkJCQkJIGZhbHNlLAotCQkJCQkJIGluZGV4SW5m byk7Ci0KLQkJCXN0YXRlLT50dXBzX2luc2VydGVkICs9IDE7Ci0JCX0KKwkJUmVsZWFzZUJ1ZmZl cihidWYpOwogCX0KIAotCXRhYmxlX2VuZHNjYW4oc2Nhbik7Ci0KIAlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KHNsb3QpOwogCiAJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKIAorCXJl YWRfc3RyZWFtX2VuZChyZWFkX3N0cmVhbSk7CisJdHVwbGVzdG9yZV9lbmQodHVwbGVzX2Zvcl9j aGVjayk7CisKKwkvKgorCSAqIERyb3AgdGhlIGxhdGVzdCBzbmFwc2hvdC4gIFdlIG11c3QgZG8g dGhpcyBiZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKKwkgKiBzbmFwc2hvdCBob2xkZXJzLCBlbHNl IHdlIHdpbGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbworCSAqIGRvaW5n IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIgc25hcHNob3Qg YXMgb25lCisJICogdGhleSBtdXN0IHdhaXQgZm9yLgorCSAqLworCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1Nu YXBzaG90KCk7CisJQXNzZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7 CisjaWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwlpZiAoTXlQcm9jLT54aWQgPT0gSW52YWxpZFRy YW5zYWN0aW9uSWQpCisJCUlOSkVDVElPTl9QT0lOVCgiaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3Nj YW5fbm9feGlkIik7CisjZW5kaWYKIAkvKiBUaGVzZSBtYXkgaGF2ZSBiZWVuIHBvaW50aW5nIHRv IHRoZSBub3ctZ29uZSBlc3RhdGUgKi8KIAlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUg PSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7CisKKwlyZXR1cm4g bGltaXRYbWluOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDJkYmY4ZjgyMTQxLi4zYTg5 ZDE4NTA1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNzE0LDExICs3MTQsMTYgQEAgVXBkYXRlSW5k ZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAgKgkJCWFscmVhZHkgZXhpc3RzLgogICoJCUlOREVY X0NSRUFURV9QQVJUSVRJT05FRDoKICAqCQkJY3JlYXRlIGEgcGFydGl0aW9uZWQgaW5kZXggKHRh YmxlIG11c3QgYmUgcGFydGl0aW9uZWQpCisgKgkJSU5ERVhfQ1JFQVRFX0FVWElMSUFSWToKKyAq CQkJbWFyayBpbmRleCBhcyBhdXhpbGlhcnkgaW5kZXgKICAqIGNvbnN0cl9mbGFnczogZmxhZ3Mg cGFzc2VkIHRvIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlCiAgKgkJKG9ubHkgaWYgSU5ERVhfQ1JF QVRFX0FERF9DT05TVFJBSU5UIGlzIHNldCkKICAqIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOiBh bGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nCiAgKiBpc19pbnRlcm5hbDogaWYgdHJ1 ZSwgcG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgaW5kZXgKICAqIGNvbnN0cmFpbnRJZDogaWYg bm90IE5VTEwsIHJlY2VpdmVzIE9JRCBvZiBjcmVhdGVkIGNvbnN0cmFpbnQKKyAqIHJlbHBlcnNp c3RlbmNlOiBwZXJzaXN0ZW5jZSBsZXZlbCB0byB1c2UgZm9yIGluZGV4LiBJbiBtb3N0IG9mIHRo ZQorICoJCWNhc2VzIGl0IGlzIHNob3VsZCBiZSBlcXVhbCB0byBwZXJzaXN0ZW5jZSBsZXZlbCBv ZiB0YWJsZSwKKyAqCQlhdXhpbGlhcnkgaW5kZXhlcyBhcmUgb25seSBleGNlcHRpb24gaGVyZS4K ICAqCiAgKiBSZXR1cm5zIHRoZSBPSUQgb2YgdGhlIGNyZWF0ZWQgaW5kZXguCiAgKi8KQEAgLTc0 Myw3ICs3NDgsOCBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJIGJp dHMxNiBjb25zdHJfZmxhZ3MsCiAJCQkgYm9vbCBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywKIAkJ CSBib29sIGlzX2ludGVybmFsLAotCQkJIE9pZCAqY29uc3RyYWludElkKQorCQkJIE9pZCAqY29u c3RyYWludElkLAorCQkJIGNoYXIgcmVscGVyc2lzdGVuY2UpCiB7CiAJT2lkCQkJaGVhcFJlbGF0 aW9uSWQgPSBSZWxhdGlvbkdldFJlbGlkKGhlYXBSZWxhdGlvbik7CiAJUmVsYXRpb24JcGdfY2xh c3M7CkBAIC03NTQsMTEgKzc2MCwxMSBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCWJvb2wJCWlzX2V4Y2x1c2lvbjsKIAlPaWQJCQluYW1lc3BhY2VJZDsKIAlpbnQJCQlp OwotCWNoYXIJCXJlbHBlcnNpc3RlbmNlOwogCWJvb2wJCWlzcHJpbWFyeSA9IChmbGFncyAmIElO REVYX0NSRUFURV9JU19QUklNQVJZKSAhPSAwOwogCWJvb2wJCWludmFsaWQgPSAoZmxhZ3MgJiBJ TkRFWF9DUkVBVEVfSU5WQUxJRCkgIT0gMDsKIAlib29sCQljb25jdXJyZW50ID0gKGZsYWdzICYg SU5ERVhfQ1JFQVRFX0NPTkNVUlJFTlQpICE9IDA7CiAJYm9vbAkJcGFydGl0aW9uZWQgPSAoZmxh Z3MgJiBJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQpICE9IDA7CisJYm9vbAkJYXV4aWxpYXJ5ID0g KGZsYWdzICYgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSkgIT0gMDsKIAljaGFyCQlyZWxraW5kOwog CVRyYW5zYWN0aW9uSWQgcmVsZnJvemVueGlkOwogCU11bHRpWGFjdElkIHJlbG1pbm14aWQ7CkBA IC03ODQsNyArNzkwLDYgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlu YW1lc3BhY2VJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKGhlYXBSZWxhdGlvbik7CiAJc2hhcmVk X3JlbGF0aW9uID0gaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzc2hhcmVkOwogCW1hcHBlZF9y ZWxhdGlvbiA9IFJlbGF0aW9uSXNNYXBwZWQoaGVhcFJlbGF0aW9uKTsKLQlyZWxwZXJzaXN0ZW5j ZSA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKIAogCS8qCiAJICogY2hl Y2sgcGFyYW1ldGVycwpAQCAtNzkyLDYgKzc5NywxMSBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCWlmIChpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnMgPCAxKQogCQll bG9nKEVSUk9SLCAibXVzdCBpbmRleCBhdCBsZWFzdCBvbmUgY29sdW1uIik7CiAKKwlpZiAoaW5k ZXhJbmZvLT5paV9BbSA9PSBTVElSX0FNX09JRCAmJiAhYXV4aWxpYXJ5KQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkg ZXJybXNnKCJ1c2VyLWRlZmluZWQgaW5kZXhlcyB3aXRoIFNUSVIgYWNjZXNzIG1ldGhvZCBhcmUg bm90IHN1cHBvcnRlZCIpKSk7CisKIAlpZiAoIWFsbG93X3N5c3RlbV90YWJsZV9tb2RzICYmCiAJ CUlzU3lzdGVtUmVsYXRpb24oaGVhcFJlbGF0aW9uKSAmJgogCQlJc05vcm1hbFByb2Nlc3NpbmdN b2RlKCkpCkBAIC0xMzk3LDcgKzE0MDcsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2Nv cHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJCQlmYWxzZSwJ Lyogbm90IHJlYWR5IGZvciBpbnNlcnRzICovCiAJCQkJCQkJdHJ1ZSwKIAkJCQkJCQlpbmRleFJl bGF0aW9uLT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZywKLQkJCQkJCQlvbGRJbmZvLT5paV9XaXRo b3V0T3ZlcmxhcHMpOworCQkJCQkJCW9sZEluZm8tPmlpX1dpdGhvdXRPdmVybGFwcywKKwkJCQkJ CQlmYWxzZSk7CiAKIAkvKgogCSAqIEV4dHJhY3QgdGhlIGxpc3Qgb2YgY29sdW1uIG5hbWVzIGFu ZCB0aGUgY29sdW1uIG51bWJlcnMgZm9yIHRoZSBuZXcKQEAgLTE0NjIsNyArMTQ3Myw4IEBAIGlu ZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBv bGRJbmRleElkLAogCQkJCQkJCSAgMCwKIAkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRv IGJlIGEgc3lzdGVtIGNhdGFsb2c/ICovCiAJCQkJCQkJICBmYWxzZSwJLyogaXNfaW50ZXJuYWw/ ICovCi0JCQkJCQkJICBOVUxMKTsKKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBoZWFwUmVsYXRp b24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOwogCiAJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1 c2VkIGFuZCBjbGVhbiB1cCAqLwogCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7 CkBAIC0xNDcyLDYgKzE0ODQsMTU1IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCXJldHVybiBuZXdJbmRleElk OwogfQogCisvKgorICogaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgKKyAqCisgKiBDcmVh dGUgY29uY3VycmVudGx5IGFuIGF1eGlsaWFyeSBpbmRleCBiYXNlZCBvbiB0aGUgZGVmaW5pdGlv biBvZiB0aGUgb25lCisgKiBwcm92aWRlZCBieSBjYWxsZXIuICBUaGUgaW5kZXggaXMgaW5zZXJ0 ZWQgaW50byBjYXRhbG9ncyBhbmQgbmVlZHMgdG8gYmUKKyAqIGJ1aWx0IGxhdGVyIG9uLiBUaGlz IGlzIGNhbGxlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4IHByb2Nlc3NpbmcuCisgKgorICog InRhYmxlc3BhY2VPaWQiIGlzIHRoZSB0YWJsZXNwYWNlIHRvIHVzZSBmb3IgdGhpcyBpbmRleC4K KyAqLworT2lkCitpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBtYWluSW5kZXhJZCwKKwkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwgY29u c3QgY2hhciAqbmV3TmFtZSkKK3sKKwlSZWxhdGlvbglpbmRleFJlbGF0aW9uOworCUluZGV4SW5m byAgKm9sZEluZm8sCisJCQkqbmV3SW5mbzsKKwlPaWQJCQluZXdJbmRleElkID0gSW52YWxpZE9p ZDsKKwlIZWFwVHVwbGUJaW5kZXhUdXBsZTsKKworCUxpc3QJICAgKmluZGV4Q29sTmFtZXMgPSBO SUw7CisJTGlzdAkgICAqaW5kZXhFeHBycyA9IE5JTDsKKwlMaXN0CSAgICppbmRleFByZWRzID0g TklMOworCisJT2lkICphdXhPcGNsYXNzSWRzOworCWludDE2ICphdXhDb2xvcHRpb25zOworCisJ aW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obWFpbkluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJLyogVGhlIG5ldyBpbmRleCBuZWVkcyBzb21lIGluZm9ybWF0aW9uIGZyb20gdGhlIG9s ZCBpbmRleCAqLworCW9sZEluZm8gPSBCdWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwor CS8qCisJICogQnVpbGQgb2YgYW4gYXV4aWxpYXJ5IGluZGV4IHdpdGggZXhjbHVzaW9uIGNvbnN0 cmFpbnRzIGlzIG5vdAorCSAqIHN1cHBvcnRlZC4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhj bHVzaW9uT3BzICE9IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJhdXhpbGlhcnkgaW5kZXgg Y3JlYXRpb24gZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3Qgc3VwcG9ydGVkIikpKTsK KworCS8qIEdldCB0aGUgYXJyYXkgb2YgY2xhc3MgYW5kIGNvbHVtbiBvcHRpb25zIElEcyBmcm9t IGluZGV4IGluZm8gKi8KKwlpbmRleFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQs IE9iamVjdElkR2V0RGF0dW0obWFpbkluZGV4SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo aW5kZXhUdXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRl eCAldSIsIG1haW5JbmRleElkKTsKKworCisJLyoKKwkgKiBGZXRjaCB0aGUgbGlzdCBvZiBleHBy ZXNzaW9ucyBhbmQgcHJlZGljYXRlcyBkaXJlY3RseSBmcm9tIHRoZQorCSAqIGNhdGFsb2dzLiAg VGhpcyBjYW5ub3QgcmVseSBvbiB0aGUgaW5mb3JtYXRpb24gZnJvbSBJbmRleEluZm8gb2YgdGhl CisJICogb2xkIGluZGV4IGFzIHRoZXNlIGhhdmUgYmVlbiBmbGF0dGVuZWQgZm9yIHRoZSBwbGFu bmVyLgorCSAqLworCWlmIChvbGRJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwpCisJeworCQlE YXR1bQkJZXhwckRhdHVtOworCQljaGFyCSAgICpleHByU3RyaW5nOworCisJCWV4cHJEYXR1bSA9 IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoSU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJ CQkgICBBbnVtX3BnX2luZGV4X2luZGV4cHJzKTsKKwkJZXhwclN0cmluZyA9IFRleHREYXR1bUdl dENTdHJpbmcoZXhwckRhdHVtKTsKKwkJaW5kZXhFeHBycyA9IChMaXN0ICopIHN0cmluZ1RvTm9k ZShleHByU3RyaW5nKTsKKwkJcGZyZWUoZXhwclN0cmluZyk7CisJfQorCWlmIChvbGRJbmZvLT5p aV9QcmVkaWNhdGUgIT0gTklMKQorCXsKKwkJRGF0dW0JCXByZWREYXR1bTsKKwkJY2hhcgkgICAq cHJlZFN0cmluZzsKKworCQlwcmVkRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVY UkVMSUQsIGluZGV4VHVwbGUsCisJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRwcmVkKTsK KwkJcHJlZFN0cmluZyA9IFRleHREYXR1bUdldENTdHJpbmcocHJlZERhdHVtKTsKKwkJaW5kZXhQ cmVkcyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShwcmVkU3RyaW5nKTsKKworCQkvKiBBbHNvIGNv bnZlcnQgdG8gaW1wbGljaXQtQU5EIGZvcm1hdCAqLworCQlpbmRleFByZWRzID0gbWFrZV9hbmRz X2ltcGxpY2l0KChFeHByICopIGluZGV4UHJlZHMpOworCQlwZnJlZShwcmVkU3RyaW5nKTsKKwl9 CisKKwkvKgorCSAqIEJ1aWxkIHRoZSBpbmRleCBpbmZvcm1hdGlvbiBmb3IgdGhlIG5ldyBpbmRl eC4gIE5vdGUgdGhhdCByZWJ1aWxkIG9mCisJICogaW5kZXhlcyB3aXRoIGV4Y2x1c2lvbiBjb25z dHJhaW50cyBpcyBub3Qgc3VwcG9ydGVkLCBoZW5jZSB0aGVyZSBpcyBubworCSAqIG5lZWQgdG8g ZmlsbCBhbGwgdGhlIGlpX0V4Y2x1c2lvbiogZmllbGRzLgorCSAqLworCW5ld0luZm8gPSBtYWtl SW5kZXhJbmZvKG9sZEluZm8tPmlpX051bUluZGV4QXR0cnMsCisJCQkJCQkJb2xkSW5mby0+aWlf TnVtSW5kZXhLZXlBdHRycywKKwkJCQkJCQlTVElSX0FNX09JRCwgLyogc3BlY2lhbCBBTSBmb3Ig YXV4IGluZGV4ZXMgKi8KKwkJCQkJCQlpbmRleEV4cHJzLAorCQkJCQkJCWluZGV4UHJlZHMsCisJ CQkJCQkJZmFsc2UsCS8qIGF1eCBpbmRleCBhcmUgbm90IHVuaXF1ZSAqLworCQkJCQkJCW9sZElu Zm8tPmlpX051bGxzTm90RGlzdGluY3QsCisJCQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBmb3Ig aW5zZXJ0cyAqLworCQkJCQkJCXRydWUsCisJCQkJCQkJZmFsc2UsCS8qIGF1eCBhcmUgbm90IHN1 bW1hcml6aW5nICovCisJCQkJCQkJZmFsc2UsCS8qIGF1eCBhcmUgbm90IHdpdGhvdXQgb3Zlcmxh cHMgKi8KKwkJCQkJCQl0cnVlCS8qIGF1eGlsaWFyeSAqLyk7CisKKwkvKgorCSAqIEV4dHJhY3Qg dGhlIGxpc3Qgb2YgY29sdW1uIG5hbWVzIGFuZCB0aGUgY29sdW1uIG51bWJlcnMgZm9yIHRoZSBu ZXcKKwkgKiBpbmRleCBpbmZvcm1hdGlvbi4gIEFsbCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUg dXNlZCBmb3IgdGhlIGluZGV4CisJICogY3JlYXRpb24uCisJICovCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJzOyBpKyspCisJeworCQlUdXBsZURlc2MJaW5k ZXhUdXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihpbmRleFJlbGF0aW9uKTsKKwkJRm9ybV9wZ19h dHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihpbmRleFR1cERlc2MsIGkpOworCisJCWluZGV4 Q29sTmFtZXMgPSBsYXBwZW5kKGluZGV4Q29sTmFtZXMsIE5hbWVTdHIoYXR0LT5hdHRuYW1lKSk7 CisJCW5ld0luZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbaV0gPSBvbGRJbmZvLT5paV9JbmRleEF0 dHJOdW1iZXJzW2ldOworCX0KKworCWF1eE9wY2xhc3NJZHMgPSBwYWxsb2MwKHNpemVvZihPaWQp ICogbmV3SW5mby0+aWlfTnVtSW5kZXhBdHRycyk7CisJYXV4Q29sb3B0aW9ucyA9IHBhbGxvYzAo c2l6ZW9mKGludDE2KSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCisJLyogRmlsbCB3 aXRoICJhbnkgb3BzIiAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbmV3SW5mby0+aWlfTnVtSW5k ZXhBdHRyczsgaSsrKQorCXsKKwkJYXV4T3BjbGFzc0lkc1tpXSA9IEFOWV9TVElSX09QU19PSUQ7 CisJCWF1eENvbG9wdGlvbnNbaV0gPSAwOworCX0KKworCW5ld0luZGV4SWQgPSBpbmRleF9jcmVh dGUoaGVhcFJlbGF0aW9uLAorCQkJCQkJCSAgbmV3TmFtZSwKKwkJCQkJCQkgIEludmFsaWRPaWQs ICAgIC8qIGluZGV4UmVsYXRpb25JZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFy ZW50SW5kZXhSZWxpZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3Ry YWludElkICovCisJCQkJCQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJl ciAqLworCQkJCQkJCSAgbmV3SW5mbywKKwkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCisJCQkJCQkJ ICBTVElSX0FNX09JRCwKKwkJCQkJCQkgIHRhYmxlc3BhY2VPaWQsCisJCQkJCQkJICBpbmRleFJl bGF0aW9uLT5yZF9pbmRjb2xsYXRpb24sCisJCQkJCQkJICBhdXhPcGNsYXNzSWRzLAorCQkJCQkJ CSAgTlVMTCwKKwkJCQkJCQkgIGF1eENvbG9wdGlvbnMsCisJCQkJCQkJICBOVUxMLAorCQkJCQkJ CSAgKERhdHVtKSAwLAorCQkJCQkJCSAgSU5ERVhfQ1JFQVRFX1NLSVBfQlVJTEQgfCBJTkRFWF9D UkVBVEVfQ09OQ1VSUkVOVCB8IElOREVYX0NSRUFURV9BVVhJTElBUlksCisJCQkJCQkJICAwLAor CQkJCQkJCSAgdHJ1ZSwgLyogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZz8gKi8K KwkJCQkJCQkgIGZhbHNlLCAgICAvKiBpc19pbnRlcm5hbD8gKi8KKwkJCQkJCQkgIE5VTEwsCisJ CQkJCQkJICBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCk7IC8qIGF1eCBpbmRleGVzIHVubG9nZ2Vk ICovCisKKwkvKiBDbG9zZSB0aGUgcmVsYXRpb25zIHVzZWQgYW5kIGNsZWFuIHVwICovCisJaW5k ZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKKwlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhU dXBsZSk7CisKKwlyZXR1cm4gbmV3SW5kZXhJZDsKK30KKwogLyoKICAqIGluZGV4X2NvbmN1cnJl bnRseV9idWlsZAogICoKQEAgLTI0NjcsNyArMjYyOCw4IEBAIEJ1aWxkSW5kZXhJbmZvKFJlbGF0 aW9uIGluZGV4KQogCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNyZWFkeSwKIAkJCQkJICAgZmFs c2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZywKLQkJCQkJICAgaW5k ZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSk7CisJ CQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1 bmlxdWUsCisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1 eGlsaWFyeSBpZmYgU1RJUiAqLyk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICov CiAJZm9yIChpID0gMDsgaSA8IG51bUF0dHM7IGkrKykKQEAgLTI1MjcsNyArMjY4OSw4IEBAIEJ1 aWxkRHVtbXlJbmRleEluZm8oUmVsYXRpb24gaW5kZXgpCiAJCQkJCSAgIGluZGV4U3RydWN0LT5p bmRpc3JlYWR5LAogCQkJCQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1 bW1hcml6aW5nLAotCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhT dHJ1Y3QtPmluZGlzdW5pcXVlKTsKKwkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9u ICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSwKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVs YW0gPT0gU1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovKTsKIAogCS8qIGZpbGwg aW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpA QCAtMzI3NiwxMiArMzQzOSwyMSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKICAqCiAgKiBXZSBkbyBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgYnkgZmlyc3Qg aW5zZXJ0aW5nIHRoZSBjYXRhbG9nIGVudHJ5IGZvciB0aGUKICAqIGluZGV4IHZpYSBpbmRleF9j cmVhdGUoKSwgbWFya2luZyBpdCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQuCisg KiBUaGVuIHdlIGNyZWF0ZSBzcGVjaWFsIGF1eGlsaWFyeSBpbmRleCB0aGUgc2FtZSB3YXkuIEl0 IGJhc2VkIG9uIFNUSVIgQU0uCiAgKiBUaGVuIHdlIGNvbW1pdCBvdXIgdHJhbnNhY3Rpb24gYW5k IHN0YXJ0IGEgbmV3IG9uZSwgdGhlbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0 aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5v dwotICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1ZW50bHktc3RhcnRlZCB0cmFuc2FjdGlvbnMg d2lsbCBzZWUgdGhlIGluZGV4IGFuZAorICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1ZW50bHkt c3RhcnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgaW5kZXhlcyBhbmQKICAqIGhvbm9yIGl0cyBj b25zdHJhaW50cyBvbiBIT1QgdXBkYXRlczsgc28gd2hpbGUgZXhpc3RpbmcgSE9ULWNoYWlucyBt aWdodAogICogYmUgYnJva2VuIHdpdGggcmVzcGVjdCB0byB0aGUgaW5kZXgsIG5vIGN1cnJlbnRs eSBsaXZlIHR1cGxlIHdpbGwgaGF2ZSBhbgotICogaW5jb21wYXRpYmxlIEhPVCB1cGRhdGUgZG9u ZSB0byBpdC4gIFdlIG5vdyBidWlsZCB0aGUgaW5kZXggbm9ybWFsbHkgdmlhCisgKiBpbmNvbXBh dGlibGUgSE9UIHVwZGF0ZSBkb25lIHRvIGl0LgorICoKKyAqIEFmdGVyIHdlIGJ1aWxkIGF1eGls aWFyeSBpbmRleC4gSXQgaXMgZmFzdCBvcGVyYXRpb24gd2l0aG91dCBhbnkgYWN0dWFsCisgKiB0 YWJsZSBzY2FuLiBBcyByZXN1bHQsIHdlIGhhdmUgZW1wdHkgU1RJUiBpbmRleC4gV2UgY29tbWl0 IHRyYW5zYWN0aW9uIGFuZAorICogYWdhaW4gd2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9ucyB0aGF0 IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlCisgKiB0byB0ZXJtaW5hdGUuIEF0 IHRoYXQgbW9tZW50IGFsbCBuZXcgdHVwbGVzIGFyZSBnb2luZyB0byBiZSBpbnNlcnRlZCBpbnRv CisgKiBhdXhpbGlhcnkgaW5kZXguCisgKgorICogV2Ugbm93IGJ1aWxkIHRoZSBpbmRleCBub3Jt YWxseSB2aWEKICAqIGluZGV4X2J1aWxkKCksIHdoaWxlIGhvbGRpbmcgYSB3ZWFrIGxvY2sgdGhh dCBhbGxvd3MgY29uY3VycmVudAogICogaW5zZXJ0L3VwZGF0ZS9kZWxldGUuICBBbHNvLCB3ZSBp bmRleCBvbmx5IHR1cGxlcyB0aGF0IGFyZSB2YWxpZAogICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRo ZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2NhbiksIHdoZXJlYXMgYSBub3JtYWwKQEAg LTMyOTEsMTggKzM0NjMsMjEgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAgKiBib2d1cyB1bmlxdWUtaW5kZXggZmFpbHVyZXMgZHVlIHRvIGNvbmN1cnJlbnQg VVBEQVRFcyAod2UgbWlnaHQgc2VlCiAgKiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUg cm93IGFzIGJlaW5nIHZhbGlkIHdoZW4gd2UgcGFzcyBvdmVyIHRoZW0sCiAgKiBpZiB3ZSB1c2Vk IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSkuICBUaGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4 IHRoYXQKLSAqIGRvZXMgbm90IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUg d2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4LgorICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVz IGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXgKKyAqICh1dCB0aGVz ZSB0dXBsZXMgY29udGFpbmVkIGluIGF1eGlsaWFyeSBpbmRleCkuCiAgKgogICogRnVydGhlcm1v cmUsIHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBu ZXcKICAqIHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSBy ZWFzb24gIGZvciB0aGF0IGlzIHRvCiAgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3 YXJkLgogICoKICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0 aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAotICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rp b24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKKyAqIGNvbW1pdCB0 aGUgdGhpcmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgZm91cnRoLiAgQWdhaW4gd2Ugd2FpdCBm b3IgYWxsCiAgKiB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRo ZSB0YWJsZSB0byB0ZXJtaW5hdGUuICBOb3cKICAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVu dGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKLSAqIGluc2Vy dCB0aGVpciBuZXcgdHVwbGVzIGludG8gaXQuICBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNl IHNuYXBzaG90Ci0gKiB3aGljaCBpcyBwYXNzZWQgdG8gdmFsaWRhdGVfaW5kZXgoKS4gIEFueSB0 dXBsZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCisgKiBpbnNlcnQgdGhlaXIgbmV3IHR1cGxl cyBpbnRvIGl0LiBBdCB0aGUgc2FtZSBtb21lbnQgd2UgY2xlYXIgImluZGlzcmVhZHkiIGZvcgor ICogYXV4aWxpYXJ5IGluZGV4LCBzaW5jZSBpdCBpcyBubyBtb3JlIHJlcXVpcmVkLgorICoKKyAq IFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ugc25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBh cmUgdmFsaWQgYWNjb3JkaW5nCiAgKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBp bmRleCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5kZXguCiAgKiAoQW55IHR1cGxlcyBjb21taXR0 ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlCiAgKiBpbmRl eCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4gIEFueSB0dXBsZXMgY29tbWl0dGVk IGRlYWQgYmVmb3JlCkBAIC0zMzEwLDEyICszNDg1LDE0IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogdGhhdCBtaWdodCBjYXJlIGFib3V0IHRoZW0gYmVm b3JlIHdlIG1hcmsgdGhlIGluZGV4IHZhbGlkLikKICAqCiAgKiB2YWxpZGF0ZV9pbmRleCgpIHdv cmtzIGJ5IGZpcnN0IGdhdGhlcmluZyBhbGwgdGhlIFRJRHMgY3VycmVudGx5IGluIHRoZQotICog aW5kZXgsIHVzaW5nIGEgYnVsa2RlbGV0ZSBjYWxsYmFjayB0aGF0IGp1c3Qgc3RvcmVzIHRoZSBU SURzIGFuZCBkb2Vzbid0CisgKiBpbmRleGVzLCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sg dGhhdCBqdXN0IHN0b3JlcyB0aGUgVElEcyBhbmQgZG9lc24ndAogICogZXZlciBzYXkgImRlbGV0 ZSBpdCIuICAoVGhpcyBzaG91bGQgYmUgZmFzdGVyIHRoYW4gYSBwbGFpbiBpbmRleHNjYW47CiAg KiBhbHNvLCBub3QgYWxsIGluZGV4IEFNcyBzdXBwb3J0IGZ1bGwtaW5kZXggaW5kZXhzY2FuLikg IFRoZW4gd2Ugc29ydCB0aGUKLSAqIFRJRHMsIGFuZCBmaW5hbGx5IHNjYW4gdGhlIHRhYmxlIGRv aW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QgdGhlIFRJRCBsaXN0Ci0gKiB0byBzZWUgd2hpY2gg dHVwbGVzIGFyZSBtaXNzaW5nIGZyb20gdGhlIGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0 aGF0Ci0gKiBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUgcmVmZXJlbmNlIHNuYXBz aG90IGFyZSBpbiB0aGUgaW5kZXguCisgKiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJn ZXQgaW5kZXhlcywgYW5kIGRvaW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QKKyAqIHRoZSBUSUQg bGlzdHMgdG8gc2VlIHdoaWNoIHR1cGxlcyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2lu ZyBmcm9tIHRoZQorICogdGFyZ2V0IGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFs bCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZQorICogcmVmZXJlbmNlIHNuYXBzaG90IGFy ZSBpbiB0aGUgaW5kZXguIE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisg KiBwYXJ0aWN1bGFyIG9yZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0LgogICoKICAq IEJ1aWxkaW5nIGEgdW5pcXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWlnaHQgdHJ5 IHRvIGluc2VydCBhCiAgKiB0dXBsZSB0aGF0IGlzIGFscmVhZHkgZGVhZCBvciBpcyBpbiBwcm9j ZXNzIG9mIGJlaW5nIGRlbGV0ZWQsIGFuZCB3ZQpAQCAtMzMzMywyMiArMzUxMCwyNyBAQCBJbmRl eENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIG5vdCBpbmRleCkuICBU aGVuIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3ZhbGlkIiBhbmQgY29tbWl0LiAgU3Vic2VxdWVu dAogICogdHJhbnNhY3Rpb25zIHdpbGwgYmUgYWJsZSB0byB1c2UgaXQgZm9yIHF1ZXJpZXMuCiAg KgotICogRG9pbmcgdHdvIGZ1bGwgdGFibGUgc2NhbnMgaXMgYSBicnV0ZS1mb3JjZSBzdHJhdGVn eS4gIFdlIGNvdWxkIHRyeSB0byBiZQotICogY2xldmVyZXIsIGVnIHN0b3JpbmcgbmV3IHR1cGxl cyBpbiBhIHNwZWNpYWwgYXJlYSBvZiB0aGUgdGFibGUgKHBlcmhhcHMKLSAqIG1ha2luZyB0aGUg dGFibGUgYXBwZW5kLW9ubHkgYnkgc2V0dGluZyB1c2VfZnNtKS4gIEhvd2V2ZXIgdGhhdCB3b3Vs ZAotICogYWRkIHlldCBtb3JlIGxvY2tpbmcgaXNzdWVzLgorICogQWxzbywgc29tZSBhY3Rpb25z IHRvIGNvbmN1cnJlbnQgZHJvcCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFyZSBwZXJmb3JtZWQuCiAg Ki8KLXZvaWQKLXZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKK1RyYW5zYWN0aW9uSWQKK3ZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9p ZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIHsKIAlSZWxhdGlvbgloZWFwUmVsYXRpb24sCi0J CQkJaW5kZXhSZWxhdGlvbjsKKwkJCQlpbmRleFJlbGF0aW9uLAorCQkJCWF1eEluZGV4UmVsYXRp b247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwotCUluZGV4VmFjdXVtSW5mbyBpdmluZm87Ci0J VmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlOworCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOworCUlu ZGV4VmFjdXVtSW5mbyBpdmluZm8sIGF1eGl2aW5mbzsKKwlWYWxpZGF0ZUluZGV4U3RhdGUgc3Rh dGUsIGF1eFN0YXRlOwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRl eHQ7CiAJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CisJLyogVXNlIDgwJSBvZiBtYWludGVuYW5jZV93 b3JrX21lbSB0byB0YXJnZXQgaW5kZXggc29ydGluZyBhbmQKKwkgKiAxMCUgcmVzdCBmb3IgYXV4 aWxpYXJ5LgorCSAqCisJICogUmVzdCAxMCUgd2lsbCBiZSB1c2VkIGZvciB0dXBsZXN0b3JlIGxh dGVyLiAqLworCWludDY0CQltYWluX3dvcmtfbWVtX3BhcnQgPSAoaW50NjQpIG1haW50ZW5hbmNl X3dvcmtfbWVtICogOCAvIDEwOworCWludAkJCWF1eF93b3JrX21lbV9wYXJ0ID0gbWFpbnRlbmFu Y2Vfd29ya19tZW0gLyAxMDsKIAogCXsKIAkJY29uc3QgaW50CXByb2dyZXNzX2luZGV4W10gPSB7 CkBAIC0zMzgxLDEyICszNTYzLDE2IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBp bmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAogCWlu ZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCWF1 eEluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OwogCiAJLyoKIAkgKiBGZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlvdSBt aWdodCB0aGluayB0aGlzIHNob3VsZCBiZQogCSAqIHBhc3NlZCBpbiBmcm9tIERlZmluZUluZGV4 LCBidXQgaXRzIGNvcHkgaXMgbG9uZyBnb25lIGR1ZSB0byBoYXZpbmcKIAkgKiBiZWVuIGJ1aWx0 IGluIGEgcHJldmlvdXMgdHJhbnNhY3Rpb24uKQorCSAqCisJICogV2UgbWlnaHQgbmVlZCBzbmFw c2hvdCBmb3IgaW5kZXggZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRlcy4KIAkgKi8KKwlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBCdWls ZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKIAogCS8qIG1hcmsgYnVpbGQgaXMgY29uY3VycmVu dCBqdXN0IGZvciBjb25zaXN0ZW5jeSAqLwpAQCAtMzQwNSwxNSArMzU5MSwzMCBAQCB2YWxpZGF0 ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZp bmZvLnN0cmF0ZWd5ID0gTlVMTDsKIAlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCisJ LyoKKwkgKiBDb3B5IGFsbCBpbmZvIHRvIGF1eGlsaWFyeSBpbmZvLCBjaGFuZ2luZyBvbmx5IHJl bGF0aW9uLgorCSAqLworCWF1eGl2aW5mbyA9IGl2aW5mbzsKKwlhdXhpdmluZm8uaW5kZXggPSBh dXhJbmRleFJlbGF0aW9uOworCiAJLyoKIAkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBm b3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKIAkgKiBpdGVtIHBvaW50 ZXJzLiAgVGhpcyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIsIHByaW1hcmlseSBiZWNhdXNl IFRJRAogCSAqIGlzIGEgcGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBvbiBhbGwgcGxhdGZvcm1zLCB3 aGVyZWFzIGludDggaXMKIAkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1vc3QgcGxhdGZvcm1zLgogCSAq LworCWF1eFN0YXRlLnR1cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9kYXR1bShJTlQ4T0lELCBJ bnQ4TGVzc09wZXJhdG9yLAorCQkJCQkJCQkJCSAgIEludmFsaWRPaWQsIGZhbHNlLAorCQkJCQkJ CQkJCSAgIGF1eF93b3JrX21lbV9wYXJ0LAorCQkJCQkJCQkJCSAgIE5VTEwsIFRVUExFU09SVF9O T05FKTsKKwlhdXhTdGF0ZS5odHVwcyA9IGF1eFN0YXRlLml0dXBzID0gYXV4U3RhdGUudHVwc19p bnNlcnRlZCA9IDA7CisKKwkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVM TCwKKwkJCQkJCQkgdmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CisKIAlzdGF0 ZS50dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVy YXRvciwKIAkJCQkJCQkJCQkJSW52YWxpZE9pZCwgZmFsc2UsCi0JCQkJCQkJCQkJCW1haW50ZW5h bmNlX3dvcmtfbWVtLAorCQkJCQkJCQkJCQkoaW50KSBtYWluX3dvcmtfbWVtX3BhcnQsCiAJCQkJ CQkJCQkJCU5VTEwsIFRVUExFU09SVF9OT05FKTsKIAlzdGF0ZS5odHVwcyA9IHN0YXRlLml0dXBz ID0gc3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CiAKQEAgLTM0MzYsMjcgKzM2MzcsMzMgQEAgdmFs aWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQog CQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDMsIHByb2dyZXNzX2luZGV4LCBw cm9ncmVzc192YWxzKTsKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxlc29y dCk7CisJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7CisKKwlQb3BB Y3RpdmVTbmFwc2hvdCgpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKLQkgKiBOb3cgc2Nh biB0aGUgaGVhcCBhbmQgIm1lcmdlIiBpdCB3aXRoIHRoZSBpbmRleAorCSAqIE5vdyBtZXJnZSBi b3RoIGluZGV4ZXMKIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJ REFURV9UQUJMRVNDQU4pOwotCXRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9u LAotCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwKLQkJCQkJCQkgIGluZGV4SW5mbywKLQkJCQkJCQkg IHNuYXBzaG90LAotCQkJCQkJCSAgJnN0YXRlKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9WQUxJREFURV9JRFhNRVJHRSk7CisJbGltaXRYbWluID0gdGFibGVfaW5kZXhfdmFs aWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJICBpbmRleFJlbGF0aW9uLAorCQkJ CQkJCQkJCSAgaW5kZXhJbmZvLAorCQkJCQkJCQkJCSAgJnN0YXRlLAorCQkJCQkJCQkJCSAgJmF1 eFN0YXRlKTsKIAotCS8qIERvbmUgd2l0aCB0dXBsZXNvcnQgb2JqZWN0ICovCi0JdHVwbGVzb3J0 X2VuZChzdGF0ZS50dXBsZXNvcnQpOworCS8qIFR1cGxlIHNvcnQgY2xvc2VkIGJ5IHRhYmxlX2lu ZGV4X3ZhbGlkYXRlX3NjYW4gKi8KKwlBc3NlcnQoc3RhdGUudHVwbGVzb3J0ID09IE5VTEwgJiYg YXV4U3RhdGUudHVwbGVzb3J0ID09IE5VTEwpOwogCiAJLyogTWFrZSBzdXJlIHRvIHJlbGVhc2Ug cmVzb3VyY2VzIGNhY2hlZCBpbiBpbmRleEluZm8gKGlmIG5lZWRlZCkuICovCiAJaW5kZXhfaW5z ZXJ0X2NsZWFudXAoaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvKTsKIAogCWVsb2coREVCVUcyLAot CQkgInZhbGlkYXRlX2luZGV4IGZvdW5kICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVw bGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKLQkJIHN0YXRlLmh0dXBzLCBzdGF0 ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CisJCSAidmFsaWRhdGVfaW5kZXggZmV0Y2hl ZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1cGxlczsiCisJCQkJCQkiICUuMGYgYXV4 IGluZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCisJCSBzdGF0ZS5o dHVwcywgc3RhdGUuaXR1cHMsIGF1eFN0YXRlLml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVkKTsK IAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rp b25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zNDY1LDgg KzM2NzIsMTIgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBz aG90IHNuYXBzaG90KQogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVf c2VjX2NvbnRleHQpOwogCiAJLyogQ2xvc2UgcmVscywgYnV0IGtlZXAgbG9ja3MgKi8KKwlpbmRl eF9jbG9zZShhdXhJbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4UmVs YXRpb24sIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOworCisJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlyZXR1cm4gbGlt aXRYbWluOwogfQogCiAvKgpAQCAtMzUyNSw2ICszNzM2LDExIEBAIGluZGV4X3NldF9zdGF0ZV9m bGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0aW9uIGFjdGlvbikKIAkJCUFzc2Vy dCghaW5kZXhGb3JtLT5pbmRpc3ZhbGlkKTsKIAkJCWluZGV4Rm9ybS0+aW5kaXN2YWxpZCA9IHRy dWU7CiAJCQlicmVhazsKKwkJY2FzZSBJTkRFWF9EUk9QX0NMRUFSX1JFQURZOgorCQkJLyogQ2xl YXIgaW5kaXNyZWFkeSBkdXJpbmcgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIHNlcXVlbmNl ICovCisJCQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2YWxpZCk7CisJCQlpbmRleEZvcm0tPmlu ZGlzcmVhZHkgPSBmYWxzZTsKKwkJCWJyZWFrOwogCQljYXNlIElOREVYX0RST1BfQ0xFQVJfVkFM SUQ6CiAKIAkJCS8qCkBAIC0zNzk2LDYgKzQwMTIsMTMgQEAgcmVpbmRleF9pbmRleChjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9u U3RyYXRzID0gTlVMTDsKIAl9CiAKKwkvKiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgbm90IGFsbG93 ZWQgdG8gYmUgcmVidWlsdCAqLworCWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCSBlcnJtc2coInJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3VwcG9y dGVkIiwKKwkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaVJlbCkpKSk7CisKIAkvKiBTdXBw cmVzcyB1c2Ugb2YgdGhlIHRhcmdldCBpbmRleCB3aGlsZSByZWJ1aWxkaW5nIGl0ICovCiAJU2V0 UmVpbmRleFByb2Nlc3NpbmcoaGVhcElkLCBpbmRleElkKTsKIApAQCAtNDAzOCw2ICs0MjYxLDcg QEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBp bnQgZmxhZ3MsCiAJewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7CiAJ CU9pZAkJCWluZGV4TmFtZXNwYWNlSWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRleE9pZCk7CisJ CU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKIAogCQkvKgogCQkgKiBT a2lwIGFueSBpbnZhbGlkIGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5 IGJlCkBAIC00MDYzLDYgKzQyODcsMTggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4 U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCisJ CWlmIChpbmRleEFtID09IFNUSVJfQU1fT0lEKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1z Zygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJ CQlnZXRfbmFtZXNwYWNlX25hbWUoaW5kZXhOYW1lc3BhY2VJZCksCisJCQkJCQkJZ2V0X3JlbF9u YW1lKGluZGV4T2lkKSkpKTsKKwkJCWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lO REVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhpbmRleE9pZCk7CisJCQljb250aW51 ZTsKKwkJfQorCiAJCXJlaW5kZXhfaW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlO REVYX1JFTF9DSEVDS19DT05TVFJBSU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA3YTU5NWM4NGRiOS4uMGU0 ZDk3N2RiODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyNjUsMTYg KzEyNjUsMTcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9wcm9ncmVzc19jcmVhdGVfaW5kZXggQVMK ICAgICAgICAgICAgICAgICAgICAgICBFTkQgQVMgY29tbWFuZCwKICAgICAgICAgQ0FTRSBTLnBh cmFtMTAgV0hFTiAwIFRIRU4gJ2luaXRpYWxpemluZycKICAgICAgICAgICAgICAgICAgICAgICAg V0hFTiAxIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIGJ1aWxkJwotICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDIgVEhFTiAnYnVpbGRpbmcgaW5kZXgnIHx8CisgICAgICAgICAg ICAgICAgICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhp bGlhcnkgaW5kZXgnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdidWlsZGlu ZyBpbmRleCcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPQUxFU0NFKCgnOiAnIHx8 IHBnX2luZGV4YW1fcHJvZ3Jlc3NfcGhhc2VuYW1lKFMucGFyYW05OjpvaWQsIFMucGFyYW0xMSkp LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgICAgICAg ICAgICAgICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0 aW9uJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDQgVEhFTiAnaW5kZXggdmFsaWRhdGlv bjogc2Nhbm5pbmcgaW5kZXgnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNSBUSEVOICdp bmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcycKLSAgICAgICAgICAgICAgICAgICAgICAg V0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJwotICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDcgVEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycKLSAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVm b3JlIG1hcmtpbmcgZGVhZCcKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dh aXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJworICAgICAgICAgICAgICAgICAgICAg ICBXSEVOIDQgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbicKKyAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5u aW5nIGluZGV4JworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5kZXggdmFs aWRhdGlvbjogc29ydGluZyB0dXBsZXMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNyBU SEVOICdpbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5nIGluZGV4ZXMnCisgICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJworICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDkgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFy a2luZyBkZWFkJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDEwIFRIRU4gJ3dhaXRpbmcg Zm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJwogICAgICAgICAgICAgICAgICAgICAgICBFTkQg YXMgcGhhc2UsCiAgICAgICAgIFMucGFyYW00IEFTIGxvY2tlcnNfdG90YWwsCiAgICAgICAgIFMu cGFyYW01IEFTIGxvY2tlcnNfZG9uZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv dG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwppbmRleCA4NzRhOGZj ODlhZC4uMGVlMmZkNWU3ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3Rp bmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAgLTMyNSw3ICszMjUs OCBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0 b2FzdEluZGV4T2lkLAogCQkJCSBCVFJFRV9BTV9PSUQsCiAJCQkJIHJlbC0+cmRfcmVsLT5yZWx0 YWJsZXNwYWNlLAogCQkJCSBjb2xsYXRpb25JZHMsIG9wY2xhc3NJZHMsIE5VTEwsIGNvbG9wdGlv bnMsIE5VTEwsIChEYXR1bSkgMCwKLQkJCQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlksIDAsIHRy dWUsIHRydWUsIE5VTEwpOworCQkJCSBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSwgMCwgdHJ1ZSwg dHJ1ZSwgTlVMTCwKKwkJCQkgdG9hc3RfcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAog CXRhYmxlX2Nsb3NlKHRvYXN0X3JlbCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwppbmRleCA1OTIxZGNmNjhhMS4uY2QwZDYzZGVkODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jCkBAIC0xODMsNiArMTgzLDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAog CQkJCQkgYm9vbCBpc1dpdGhvdXRPdmVybGFwcykKIHsKIAlib29sCQlpc2NvbnN0cmFpbnQ7CisJ Ym9vbAkJaXNhdXhpbGlhcnk7CiAJT2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRp b25JZHM7CiAJT2lkCQkgICAqb3BjbGFzc0lkczsKQEAgLTIzMyw2ICsyMzQsNyBAQCBDaGVja0lu ZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAKIAlhbWNhbm9yZGVyID0gYW1Sb3V0aW5lLT5hbWNh bm9yZGVyOwogCWFtc3VtbWFyaXppbmcgPSBhbVJvdXRpbmUtPmFtc3VtbWFyaXppbmc7CisJaXNh dXhpbGlhcnkgPSBhY2Nlc3NNZXRob2RJZCA9PSBTVElSX0FNX09JRDsKIAogCS8qCiAJICogQ29t cHV0ZSB0aGUgb3BlcmF0b3IgY2xhc3NlcywgY29sbGF0aW9ucywgYW5kIGV4Y2x1c2lvbiBvcGVy YXRvcnMgZm9yCkBAIC0yNDQsNyArMjQ2LDggQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9s ZElkLAogCSAqLwogCWluZGV4SW5mbyA9IG1ha2VJbmRleEluZm8obnVtYmVyT2ZBdHRyaWJ1dGVz LCBudW1iZXJPZkF0dHJpYnV0ZXMsCiAJCQkJCQkJICBhY2Nlc3NNZXRob2RJZCwgTklMLCBOSUws IGZhbHNlLCBmYWxzZSwKLQkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJpemluZywgaXNX aXRob3V0T3ZlcmxhcHMpOworCQkJCQkJCSAgZmFsc2UsIGZhbHNlLCBhbXN1bW1hcml6aW5nLAor CQkJCQkJCSAgaXNXaXRob3V0T3ZlcmxhcHMsIGlzYXV4aWxpYXJ5KTsKIAl0eXBlSWRzID0gcGFs bG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxs b2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCW9wY2xhc3NJZHMgPSBwYWxsb2Nf YXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtNTU0LDYgKzU1Nyw3IEBAIERlZmlu ZUluZGV4KE9pZCB0YWJsZUlkLAogewogCWJvb2wJCWNvbmN1cnJlbnQ7CiAJY2hhcgkgICAqaW5k ZXhSZWxhdGlvbk5hbWU7CisJY2hhcgkgICAqYXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBOVUxMOwog CWNoYXIJICAgKmFjY2Vzc01ldGhvZE5hbWU7CiAJT2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAg ICpjb2xsYXRpb25JZHM7CkBAIC01NjMsNiArNTY3LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJT2lkCQkJdGFibGVzcGFjZUlkOwogCU9pZAkJCWNy ZWF0ZWRDb25zdHJhaW50SWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCWF1eEluZGV4UmVsYXRpb25J ZCA9IEludmFsaWRPaWQ7CiAJTGlzdAkgICAqaW5kZXhDb2xOYW1lczsKIAlMaXN0CSAgICphbGxJ bmRleFBhcmFtczsKIAlSZWxhdGlvbglyZWw7CkBAIC01ODQsMTAgKzU4OSwxMCBAQCBEZWZpbmVJ bmRleChPaWQgdGFibGVJZCwKIAlpbnQJCQludW1iZXJPZktleUF0dHJpYnV0ZXM7CiAJVHJhbnNh Y3Rpb25JZCBsaW1pdFhtaW47CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCU9iamVjdEFkZHJl c3MgYXV4QWRkcmVzczsKIAlMb2NrUmVsSWQJaGVhcHJlbGlkOwogCUxPQ0tUQUcJCWhlYXBsb2Nr dGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwotCVNuYXBzaG90CXNuYXBzaG90OwogCU9pZAkJCXJv b3Rfc2F2ZV91c2VyaWQ7CiAJaW50CQkJcm9vdF9zYXZlX3NlY19jb250ZXh0OwogCWludAkJCXJv b3Rfc2F2ZV9uZXN0bGV2ZWw7CkBAIC04MzQsNiArODM5LDE1IEBAIERlZmluZUluZGV4KE9pZCB0 YWJsZUlkLAogCQkJCQkJCQkJCQlzdG10LT5leGNsdWRlT3BOYW1lcywKIAkJCQkJCQkJCQkJc3Rt dC0+cHJpbWFyeSwKIAkJCQkJCQkJCQkJc3RtdC0+aXNjb25zdHJhaW50KTsKKwkvKgorCSAqIFNl bGVjdCBuYW1lIGZvciBhdXhpbGlhcnkgaW5kZXgKKwkgKi8KKwlpZiAoY29uY3VycmVudCkKKwkJ YXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBDaG9vc2VSZWxhdGlvbk5hbWUoaW5kZXhSZWxhdGlvbk5h bWUsCisJCQkJCQkJCQkJCQkgIE5VTEwsCisJCQkJCQkJCQkJCQkgICJjY2F1eCIsCisJCQkJCQkJ CQkJCQkgIG5hbWVzcGFjZUlkLAorCQkJCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkvKgogCSAqIGxv b2sgdXAgdGhlIGFjY2VzcyBtZXRob2QsIHZlcmlmeSBpdCBjYW4gaGFuZGxlIHRoZSByZXF1ZXN0 ZWQgZmVhdHVyZXMKQEAgLTkyOSw3ICs5NDMsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAkJCQkJCQkgICFjb25jdXJyZW50LAogCQkJCQkJCSAgY29uY3VycmVudCwKIAkJCQkJCQkgIGFt aXNzdW1tYXJpemluZywKLQkJCQkJCQkgIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzKTsKKwkJCQkJ CQkgIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzLAorCQkJCQkJCSAgZmFsc2UpOwogCiAJdHlwZUlk cyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRz ID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTEyMjcsNyArMTI0 Miw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkgY29sb3B0aW9ucywgTlVMTCwg cmVsb3B0aW9ucywKIAkJCQkJIGZsYWdzLCBjb25zdHJfZmxhZ3MsCiAJCQkJCSBhbGxvd1N5c3Rl bVRhYmxlTW9kcywgIWNoZWNrX3JpZ2h0cywKLQkJCQkJICZjcmVhdGVkQ29uc3RyYWludElkKTsK KwkJCQkJICZjcmVhdGVkQ29uc3RyYWludElkLAorCQkJCQkgcmVsLT5yZF9yZWwtPnJlbHBlcnNp c3RlbmNlKTsKIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklk LCBpbmRleFJlbGF0aW9uSWQpOwogCkBAIC0xNTY5LDYgKzE1ODUsMTYgQEAgRGVmaW5lSW5kZXgo T2lkIHRhYmxlSWQsCiAJCXJldHVybiBhZGRyZXNzOwogCX0KIAorCS8qCisJICogSW4gY2FzZSBv ZiBjb25jdXJyZW50IGJ1aWxkIC0gY3JlYXRlIGF1eGlsaWFyeSBpbmRleCByZWNvcmQuCisJICov CisJaWYgKGNvbmN1cnJlbnQpCisJeworCQlhdXhJbmRleFJlbGF0aW9uSWQgPSBpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2F1eChyZWwsIGluZGV4UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJdGFi bGVzcGFjZUlkLCBhdXhJbmRleFJlbGF0aW9uTmFtZSk7CisJCU9iamVjdEFkZHJlc3NTZXQoYXV4 QWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCX0KKwog CUF0RU9YYWN0X0dVQyhmYWxzZSwgcm9vdF9zYXZlX25lc3RsZXZlbCk7CiAJU2V0VXNlcklkQW5k U2VjQ29udGV4dChyb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQpOwogCkBA IC0xNTk3LDExICsxNjIzLDExIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qCiAJICog Rm9yIGEgY29uY3VycmVudCBidWlsZCwgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSB0aGUgY2F0YWxv ZyBlbnRyaWVzCiAJICogdmlzaWJsZSB0byBvdGhlciB0cmFuc2FjdGlvbnMgYmVmb3JlIHdlIHN0 YXJ0IHRvIGJ1aWxkIHRoZSBpbmRleC4gVGhhdAotCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20g bWFraW5nIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlcy4gIFRoZSBuZXcgaW5kZXgKLQkgKiB3aWxs IGJlIG1hcmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsIHNvIHRoYXQgbm8g b25lIGVsc2UKLQkgKiB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZv ciBxdWVyaWVzLgorCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGluY29tcGF0aWJs ZSBIT1QgdXBkYXRlcy4gTmV3IGluZGV4ZXMKKwkgKiAobWFpbiBhbmQgYXV4aWxpYXJ5KSB3aWxs IGJlIG1hcmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsCisJICogc28gdGhh dCBubyBvbmUgZWxzZSB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZv ciBxdWVyaWVzLgogCSAqCi0JICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNhY3Rp b24gc28gdGhhdCB0aGUgaW5kZXggYmVjb21lcworCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJy ZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIGluZGV4ZXMgYmVjb21lcwogCSAqIHZpc2libGU7 IHRoZW4gc3RhcnQgYW5vdGhlci4gIE5vdGUgdGhhdCBhbGwgdGhlIGRhdGEgc3RydWN0dXJlcyB3 ZSBqdXN0CiAJICogYnVpbHQgYXJlIGxvc3QgaW4gdGhlIGNvbW1pdC4gIFRoZSBvbmx5IGRhdGEg d2Uga2VlcCBwYXN0IGhlcmUgYXJlIHRoZQogCSAqIHJlbGF0aW9uIElEcy4KQEAgLTE2MTEsNyAr MTYzNyw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNhbm5vdCBibG9jaywgZXZl biBpZiBzb21lb25lIGVsc2UgaXMgd2FpdGluZyBmb3IgYWNjZXNzLCBiZWNhdXNlIHdlCiAJICog YWxyZWFkeSBoYXZlIHRoZSBzYW1lIGxvY2sgd2l0aGluIG91ciB0cmFuc2FjdGlvbi4KIAkgKgot CSAqIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIgd2l0aCBhIHNlc3Npb24gbG9jayBv biB0aGUgaW5kZXgsCisJICogTm90ZTogd2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEg c2Vzc2lvbiBsb2NrIG9uIHRoZSBpbmRleGVzLAogCSAqIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG9w ZXJhdGlvbnMgdGhhdCBjb3VsZCBjaGFuZ2UgaXRzIHN0YXRlIHdoaWxlIHdlCiAJICogaG9sZCBs b2NrIG9uIHRoZSBwYXJlbnQgdGFibGUuICBUaGlzIG1pZ2h0IG5lZWQgdG8gY2hhbmdlIGxhdGVy LgogCSAqLwpAQCAtMTY1MCw3ICsxNjc2LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJ ICogd2l0aCB0aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4gIFVzZSBTaGFyZUxvY2sgdG8gY29uc2lk ZXIgcnVubmluZwogCSAqIHRyYW5zYWN0aW9ucyB0aGF0IGhvbGQgbG9ja3MgdGhhdCBwZXJtaXQg d3JpdGluZyB0byB0aGUgdGFibGUuICBOb3RlIHdlCiAJICogZG8gbm90IG5lZWQgdG8gd29ycnkg YWJvdXQgeGFjdHMgdGhhdCBvcGVuIHRoZSB0YWJsZSBmb3Igd3JpdGluZyBhZnRlcgotCSAqIHRo aXMgcG9pbnQ7IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBpbmRleCB3aGVuIHRoZXkgb3BlbiBpdC4K KwkgKiB0aGlzIHBvaW50OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXhlcyB3aGVuIHRoZXkg b3BlbiBpdC4KIAkgKgogCSAqIE5vdGU6IHRoZSByZWFzb24gd2UgdXNlIGFjdHVhbCBsb2NrIGFj cXVpc2l0aW9uIGhlcmUsIHJhdGhlciB0aGFuIGp1c3QKIAkgKiBjaGVja2luZyB0aGUgUHJvY0Fy cmF5IGFuZCBzbGVlcGluZywgaXMgdGhhdCBkZWFkbG9jayBpcyBwb3NzaWJsZSBpZgpAQCAtMTY2 MiwxNSArMTY4OCwzOSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCS8qCiAJICogQXQg dGhpcyBtb21lbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdp dGggdGhlCi0JICogdGFibGUgb3BlbiBmb3Igd3JpdGUgdGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3 IGluZGV4IGluIHRoZWlyIGxpc3Qgb2YKKwkgKiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRv bid0IGhhdmUgdGhpcyBuZXcgaW5kZXhlcyBpbiB0aGVpciBsaXN0IG9mCiAJICogaW5kZXhlcy4g IFdlIGhhdmUgd2FpdGVkIG91dCBhbGwgdGhlIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyBhbmQgYW55 IG5ldwotCSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSB0aGUgbmV3IGluZGV4IGluIGl0cyBsaXN0 LCBidXQgdGhlIGluZGV4IGlzIHN0aWxsCi0JICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWlu c2VydHMiLiAgVGhlIGluZGV4IGlzIGNvbnN1bHRlZCB3aGlsZQorCSAqIHRyYW5zYWN0aW9uIHdp bGwgaGF2ZSBib3RoIG5ldyBpbmRleGVzIGluIGl0cyBsaXN0LCBidXQgaW5kZXhlcyBhcmUgc3Rp bGwKKwkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuIFRoZSBpbmRleGVzIGFy ZSBjb25zdWx0ZWQgd2hpbGUKIAkgKiBkZWNpZGluZyBIT1Qtc2FmZXR5IHRob3VnaC4gIFRoaXMg YXJyYW5nZW1lbnQgZW5zdXJlcyB0aGF0IG5vIG5ldyBIT1QKIAkgKiBjaGFpbnMgY2FuIGJlIGNy ZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBj aGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2UgYnVpbGQgdGhlIGlu ZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAq IE5vdyBjYWxsIGJ1aWxkIG9uIGF1eGlsaWFyeSBpbmRleC4gSW5kZXggd2lsbCBiZSBjcmVhdGVk IGVtcHR5IHdpdGhvdXQKKwkgKiBhbnkgYWN0dWFsIGhlYXAgc2NhbiwgYnV0IG1hcmtlZCBhcyAi cmVhZHktZm9yLWluc2VydHMiLiBUaGUgZ29hbCBvZgorCSAqIHRoYXQgaW5kZXggaXMgYWNjdW11 bGF0ZSBuZXcgdHVwbGVzIHdoaWxlIG1haW4gaW5kZXggaXMgYWN0dWFsbHkgYnVpbHQuCisJICov CisJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7 CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlm IGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkv KgorCSAqIE5vdyB3ZSBuZWVkIHRvIGVuc3VyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhl IHdpdGggYXV4aWxpYXJ5IGluZGV4CisJICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2Vy dHMiLgorCSAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBTaGFyZUxvY2ssIHRydWUp OworCisJLyoKKwkgKiBBdCB0aGlzIG1vbWVudCB3ZSBhcmUgc3VyZSB3aGF0IGFsbCBuZXcgdHVw bGVzIGluIHRhYmxlIGFyZSBpbnNlcnRlZCBpbnRvCisJICogYXV4aWxpYXJ5IGluZGV4LiBOb3cg aXQgaXMgdGltZSB0byBidWlsZCB0aGUgdGFyZ2V0IGluZGV4IGl0c2VsZi4KKwkgKgorCSAqIFdl IGJ1aWxkIHRoYXQgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5n IG11bHRpcGxlCiAJICogcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQg YW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3 aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5IHRyYW5zYWN0aW9u cyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUgbm93IGNvbW1pdHRlZCBvcgpA QCAtMTY5OCw0MyArMTc0OCwzMSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB0aGUg aW5kZXggbWFya2VkIGFzIHJlYWQtb25seSBmb3IgdXBkYXRlcy4KIAkgKi8KIAlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfMyk7CiAJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIFNoYXJlTG9j aywgdHJ1ZSk7CiAKIAkvKgotCSAqIE5vdyB0YWtlIHRoZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0 aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgpCi0JICogdG8gZmlsdGVyIGNhbmRp ZGF0ZSB0dXBsZXMuICBCZXdhcmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4K LQkgKiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0aW9uIGFzIGluLXByb2dyZXNzIHRoYXQg b3VyIHJlZmVyZW5jZQotCSAqIHNuYXBzaG90IHRyZWF0cyBhcyBjb21taXR0ZWQuICBJZiBzdWNo IGEgcmVjZW50bHktY29tbWl0dGVkIHRyYW5zYWN0aW9uCi0JICogZGVsZXRlZCB0dXBsZXMgaW4g dGhlIHRhYmxlLCB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRoZW0gaW4gdGhlIGluZGV4OyB5ZXQKLQkg KiB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2ggc2VlIHRoZSBkZWxldGluZyBvbmUgYXMgc3RpbGwt aW4tcHJvZ3Jlc3Mgd2lsbAotCSAqIGV4cGVjdCBzdWNoIHR1cGxlcyB0byBiZSB0aGVyZSBvbmNl IHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAqCi0JICogV2Ugc29sdmUgdGhpcyBieSB3 YWl0aW5nIGZvciBhbGwgZW5kYW5nZXJlZCB0cmFuc2FjdGlvbnMgdG8gZXhpdCBiZWZvcmUKLQkg KiB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgotCSAqIFdlIGFsc28gc2V0IEFjdGl2 ZVNuYXBzaG90IHRvIHRoaXMgc25hcCwgc2luY2UgZnVuY3Rpb25zIGluIGluZGV4ZXMgbWF5Ci0J ICogbmVlZCBhIHNuYXBzaG90LgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUg VE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNo b3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7Ci0JUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQorCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCi0JICogU2NhbiB0aGUgaW5k ZXggYW5kIHRoZSBoZWFwLCBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KKwkgKiBO b3cgdGFyZ2V0IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkiIGZvciBhbGwgdHJhbnNhY3Rpb25z LiBTbywgYXV4aWxpYXJ5CisJICogaW5kZXggaXMgbm90IG1vcmUgbmVlZGVkLiBTbywgc3RhcnQg cmVtb3ZpbmcgcHJvY2VzcyBieSByZXZlcnRpbmcgInJlYWR5IgorCSAqIGZsYWcuCiAJICovCi0J dmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBzbmFwc2hvdCk7Ci0KLQkv KgotCSAqIERyb3AgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdlIG11c3QgZG8gdGhpcyBiZWZv cmUgd2FpdGluZyBvdXQgb3RoZXIKLQkgKiBzbmFwc2hvdCBob2xkZXJzLCBlbHNlIHdlIHdpbGwg ZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbwotCSAqIGRvaW5nIENSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIgc25hcHNob3QgYXMgb25lCi0J ICogdGhleSBtdXN0IHdhaXQgZm9yLiAgQnV0IGZpcnN0LCBzYXZlIHRoZSBzbmFwc2hvdCdzIHht aW4gdG8gdXNlIGFzCi0JICogbGltaXRYbWluIGZvciBHZXRDdXJyZW50VmlydHVhbFhJRHMoKS4K LQkgKi8KLQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKLQorCWluZGV4X3NldF9zdGF0ZV9m bGFncyhhdXhJbmRleFJlbGF0aW9uSWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOwogCVBvcEFj dGl2ZVNuYXBzaG90KCk7Ci0JVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJLyog VGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxp ZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwor CS8qCisJICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzIC0g aW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCisJICovCisJbGltaXRYbWluID0gdmFs aWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQp OwogCiAJLyoKIAkgKiBUaGUgc25hcHNob3Qgc3Vic3lzdGVtIGNvdWxkIHN0aWxsIGNvbnRhaW4g cmVnaXN0ZXJlZCBzbmFwc2hvdHMgdGhhdApAQCAtMTc1NywxMiArMTc5NSwxMiBAQCBEZWZpbmVJ bmRleChPaWQgdGFibGVJZCwKIAkvKgogCSAqIFRoZSBpbmRleCBpcyBub3cgdmFsaWQgaW4gdGhl IHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1cnJlbnRseQogCSAqIGludGVyZXN0aW5nIHR1 cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZCBqdXN0 Ci0JICogYmVmb3JlIHRoZSByZWZlcmVuY2Ugc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2Fp dCBvdXQgYW55Ci0JICogdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hv dHMuCisJICogYmVmb3JlIHRoZSBsYXN0IHNuYXBzaG90IGR1cmluZyB2YWxpZGF0aW5nIHdhcyB0 YWtlbiwgd2UgaGF2ZSB0byB3YWl0CisJICogb3V0IGFueSB0cmFuc2FjdGlvbnMgdGhhdCBtaWdo dCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KIAlJTkpFQ1RJT05fUE9JTlQoImRlZmluZV9p bmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF8zKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOwog CVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwogCiAJLyoKQEAgLTE3ODcs NiArMTgyNSw1MyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB0byByZXBsYW47IHNv IHJlbGNhY2hlIGZsdXNoIG9uIHRoZSBpbmRleCBpdHNlbGYgd2FzIHN1ZmZpY2llbnQuKQogCSAq LwogCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQnlSZWxpZChoZWFwcmVsaWQucmVsSWQpOworCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CisJLyogTm93 IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBzZWUgYXV4aWxpYXJ5IGFzICJub24tcmVhZHkg Zm9yIGluc2VydHMiICovCisJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2ssIHRydWUpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQg aW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxp ZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKKwkvKiBOb3cgaXQgaXMgdGltZSB0byBtYXJrIGF1eGlsaWFyeSBpbmRleCBhcyBk ZWFkICovCisJaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKHRhYmxlSWQsIGF1eEluZGV4UmVs YXRpb25JZCk7CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1cnJl bnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYg KHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNik7CisJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFu c2FjdGlvbiB0byBpZ25vcmUgYXV4aWxpYXJ5IGJlY2F1c2UgaXQgaXMgZGVhZCAqLworCVdhaXRG b3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKKworCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkvKgorCSAqIERyb3AgYXV4aWxpYXJ5IGluZGV4LgorCSAqCisJICogVXNlIFBFUkZPUk1fREVM RVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRoYXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhlCisJICog cmlnaHQgbG9jayBsZXZlbC4KKwkgKi8KKwlwZXJmb3JtRGVsZXRpb24oJmF1eEFkZHJlc3MsIERS T1BfUkVTVFJJQ1QsCisJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHwg UEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CiAKIAkvKgogCSAqIExhc3QgdGhpbmcgdG8gZG8g aXMgcmVsZWFzZSB0aGUgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIHRoZSBwYXJlbnQgdGFibGUuCkBA IC0zNTQyLDYgKzM2MjcsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCXR5cGVkZWYgc3Ry dWN0IFJlaW5kZXhJbmRleEluZm8KIAl7CiAJCU9pZAkJCWluZGV4SWQ7CisJCU9pZAkJCWF1eElu ZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7CiAJCWJvb2wJCXNhZmU7CQkv KiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KQEAgLTM2NDcsOCArMzczMywxNSBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQlPaWQJCQljZWxsT2lkID0gbGZpcnN0X29pZChs Yyk7CiAJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGNlbGxPaWQsCiAJ CQkJCQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkJCUluZGV4SW5m byoJaW5kZXhJbmZvID0gQnVpbGREdW1teUluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKIAotCQkJ CQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQorCisJCQkJCWlmIChp bmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJCQkJCWVyZXBvcnQoV0FSTklORywoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygic2tpcHBpbmcg cmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJCWdldF9uYW1l c3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShjZWxsT2lkKSksCisJCQkJCQkJCQlnZXRfcmVs X25hbWUoY2VsbE9pZCkpKSk7CisJCQkJCWVsc2UgaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRl eC0+aW5kaXN2YWxpZCkKIAkJCQkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJCQkJCSBlcnJt c2coInNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCBcIiVzLiVzXCIiLApAQCAtMzcw MCw4ICszNzkzLDE1IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4 U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQlPaWQJCQljZWxs T2lkID0gbGZpcnN0X29pZChsYzIpOwogCQkJCQkJUmVsYXRpb24JaW5kZXhSZWxhdGlvbiA9IGlu ZGV4X29wZW4oY2VsbE9pZCwKIAkJCQkJCQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVzaXZl TG9jayk7CisJCQkJCQlJbmRleEluZm8qCWluZGV4SW5mbyA9IEJ1aWxkRHVtbXlJbmRleEluZm8o aW5kZXhSZWxhdGlvbik7CiAKLQkJCQkJCWlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmlu ZGlzdmFsaWQpCisJCQkJCQlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCQkJCQkJZXJl cG9ydChXQVJOSU5HLAorCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkg aW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9yZWxf bmFtZXNwYWNlKGNlbGxPaWQpKSwKKwkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lKGNlbGxPaWQpKSkp OworCQkJCQkJZWxzZSBpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQog CQkJCQkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJCQkJIGVycm1zZygic2tpcHBpbmcg cmVpbmRleCBvZiBpbnZhbGlkIGluZGV4IFwiJXMuJXNcIiIsCkBAIC0zNzYyLDYgKzM4NjIsMTMg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkJIGVycm1zZygiY2Fubm90IHJlaW5kZXggaW52YWxp ZCBpbmRleCBvbiBUT0FTVCB0YWJsZSIpKSk7CiAKKwkJCQkvKiBBdXhpbGlhcnkgaW5kZXhlcyBh cmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWlsdCAqLworCQkJCWlmIChnZXRfcmVsX3JlbGFtKHJl bGF0aW9uT2lkKSA9PSBTVElSX0FNX09JRCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coInJl aW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJCQkJ Z2V0X3JlbF9uYW1lKHJlbGF0aW9uT2lkKSkpKTsKKwogCQkJCS8qCiAJCQkJICogQ2hlY2sgaWYg cGFyZW50IHJlbGF0aW9uIGNhbiBiZSBsb2NrZWQgYW5kIGlmIGl0IGV4aXN0cywKIAkJCQkgKiB0 aGlzIG5lZWRzIHRvIGJlIGRvbmUgYXQgdGhpcyBzdGFnZSBhcyB0aGUgbGlzdCBvZiBpbmRleGVz CkBAIC0zODY1LDE1ICszOTcyLDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJZm9yZWFj aChsYywgaW5kZXhJZHMpCiAJewogCQljaGFyCSAgICpjb25jdXJyZW50TmFtZTsKKwkJY2hhcgkg ICAqYXV4Q29uY3VycmVudE5hbWU7CiAJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9IGxmaXJzdChs Yyk7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeDsKIAkJT2lkCQkJbmV3SW5kZXhJZDsKKwkJ T2lkCQkJYXV4SW5kZXhJZDsKIAkJUmVsYXRpb24JaW5kZXhSZWw7CiAJCVJlbGF0aW9uCWhlYXBS ZWw7CiAJCU9pZAkJCXNhdmVfdXNlcmlkOwogCQlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCQlp bnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CisJCVJlbGF0aW9u CWF1eEluZGV4UmVsOwogCQlMb2NrUmVsSWQgICpsb2NrcmVsaWQ7CiAJCU9pZAkJCXRhYmxlc3Bh Y2VpZDsKIApAQCAtMzkyNCw2ICs0MDM0LDExIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJ CQkJCQkJCQkJCSJjY25ldyIsCiAJCQkJCQkJCQkJCWdldF9yZWxfbmFtZXNwYWNlKGluZGV4UmVs LT5yZF9pbmRleC0+aW5kcmVsaWQpLAogCQkJCQkJCQkJCQlmYWxzZSk7CisJCWF1eENvbmN1cnJl bnROYW1lID0gQ2hvb3NlUmVsYXRpb25OYW1lKGdldF9yZWxfbmFtZShpZHgtPmluZGV4SWQpLAor CQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkiY2NhdXgiLAorCQkJCQkJCQkJCQlnZXRfcmVs X25hbWVzcGFjZShpbmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlkKSwKKwkJCQkJCQkJCQkJZmFs c2UpOwogCiAJCS8qIENob29zZSB0aGUgbmV3IHRhYmxlc3BhY2UsIGluZGV4ZXMgb2YgdG9hc3Qg dGFibGVzIGFyZSBub3QgbW92ZWQgKi8KIAkJaWYgKE9pZElzVmFsaWQocGFyYW1zLT50YWJsZXNw YWNlT2lkKSAmJgpAQCAtMzkzNywxMiArNDA1MiwxNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJy ZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVp bgogCQkJCQkJCQkJCQkJCWlkeC0+aW5kZXhJZCwKIAkJCQkJCQkJCQkJCQl0YWJsZXNwYWNlaWQs CiAJCQkJCQkJCQkJCQkJY29uY3VycmVudE5hbWUpOworCQlhdXhJbmRleElkID0gaW5kZXhfY29u Y3VycmVudGx5X2NyZWF0ZV9hdXgoaGVhcFJlbCwKKwkJCQkJCQkJCQkJCSAgIG5ld0luZGV4SWQs CisJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQsCisJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJy ZW50TmFtZSk7CiAKIAkJLyoKIAkJICogTm93IG9wZW4gdGhlIHJlbGF0aW9uIG9mIHRoZSBuZXcg aW5kZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIGlzCiAJCSAqIGFsc28gbmVlZGVkIG9uIGl0Lgog CQkgKi8KIAkJbmV3SW5kZXhSZWwgPSBpbmRleF9vcGVuKG5ld0luZGV4SWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCWF1eEluZGV4UmVsID0gaW5kZXhfb3BlbihhdXhJbmRleElkLCBT aGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCiAJCS8qCiAJCSAqIFNhdmUgdGhlIGxpc3Qgb2Yg T0lEcyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBjb250ZXh0CkBAIC0zOTUxLDYgKzQwNzEsNyBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRl eEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CisJCW5ld2lkeC0+ YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7CiAJCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CkBAIC0zOTY5LDEwICs0MDkwLDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWxv Y2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKIAkJKmxvY2tyZWxpZCA9IG5ld0lu ZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CiAJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5k KHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCWxvY2tyZWxpZCA9IHBhbGxvY19vYmplY3Qo TG9ja1JlbElkKTsKKwkJKmxvY2tyZWxpZCA9IGF1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2Nr UmVsSWQ7CisJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxp ZCk7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Ns b3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpbmRleF9jbG9zZShhdXhJbmRleFJlbCwgTm9Mb2Nr KTsKIAkJaW5kZXhfY2xvc2UobmV3SW5kZXhSZWwsIE5vTG9jayk7CiAKIAkJLyogUm9sbCBiYWNr IGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KQEAgLTQwNTMs MTMgKzQxNzgsNTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBkb2luZyB0aGF0LCB3 YWl0IHVudGlsIG5vIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGNvdWxkIGhhdmUgdGhlIHRhYmxlIG9m CiAJICogdGhlIGluZGV4IG9wZW4gd2l0aCB0aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4gIFNlZSAi cGhhc2UgMiIgaW4KIAkgKiBEZWZpbmVJbmRleCgpIGZvciBtb3JlIGRldGFpbHMuCisJKi8KKwlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJ CQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7CisJV2FpdEZvckxvY2tlcnNN dWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCS8qCisJICogTm93IGJ1aWxkIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQg bWFyayB0aGVtIGFzICJyZWFkeS1mb3ItaW5zZXJ0cyIuCisJICovCisJZm9yZWFjaChsYywgbmV3 SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwor CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVz ZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcwor CQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVz IHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4K KwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogVGVsbCBjb25jdXJyZW50 IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJCWlmIChuZXdp ZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJCS8qIEJ1aWxkIGF1 eGlsaWFyeSBpbmRleCwgaXQgaXMgZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVhbCBoZWFwIHNjYW4s IGp1c3QgYW4gZW1wdHkgaW5kZXguICovCisJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChuZXdp ZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisJfQorCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICog QmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwgdGhl cmUncyBubyBuZWVkCisJICogdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgog CSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xKTsKKwkJCQkJ CQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCS8qCisJICogV2FpdCB1bnRp bCBhbGwgYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIHRha2VuIGludG8gYWNjb3VudCBieSBhbGwKKwkg KiB0cmFuc2FjdGlvbnMuCisJICovCiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywg U2hhcmVMb2NrLCB0cnVlKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAorCS8qIE5v dyBpdCBpcyB0aW1lIHRvIHBlcmZvcm0gdGFyZ2V0IGluZGV4IGJ1aWxkLiAqLwogCWZvcmVhY2go bGMsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0 KGxjKTsKQEAgLTQxMDIsMjQgKzQyNjksNTIgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkg KiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkgKi8KIAorCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJ CQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJV2FpdEZvckxvY2tlcnNN dWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCS8qCisJICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFy ZSBtYXJrZWQgYXMgInJlYWR5LXRvLWluc2VydCIuIFNvLAorCSAqIHdlIGFyZSBmcmVlIHRvIHN0 YXJ0IHByb2Nlc3Mgb2YgZHJvcHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICovCisJZm9yZWFj aChsYywgbmV3SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmly c3QobGMpOworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkvKgorCQkgKiBDaGVjayBm b3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNv IGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVu c3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFi b3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKiBUZWxsIGNvbmN1 cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwkJaWYg KG5ld2lkeC0+c2FmZSkKKwkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwkJLyoKKwkJ ICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNv IGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJCSAqLworCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJaW5kZXhfc2V0X3N0YXRl X2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQor CiAJLyoKIAkgKiBQaGFzZSAzIG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkgKiBEdXJp bmcgdGhpcyBwaGFzZSB0aGUgb2xkIGluZGV4ZXMgY2F0Y2ggdXAgd2l0aCBhbnkgbmV3IHR1cGxl cyB0aGF0CisJICogRHVyaW5nIHRoaXMgcGhhc2UgdGhlIG5ldyBpbmRleGVzIGNhdGNoIHVwIHdp dGggYW55IG5ldyB0dXBsZXMgdGhhdAogCSAqIHdlcmUgY3JlYXRlZCBkdXJpbmcgdGhlIHByZXZp b3VzIHBoYXNlLiAgU2VlICJwaGFzZSAzIiBpbiBEZWZpbmVJbmRleCgpCiAJICogZm9yIG1vcmUg ZGV0YWlscy4KIAkgKi8KLQotCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf Mik7Ci0JV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsK LQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRz KQogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKIAkJVHJhbnNh Y3Rpb25JZCBsaW1pdFhtaW47Ci0JCVNuYXBzaG90CXNuYXBzaG90OwogCiAJCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAKQEAgLTQxMzQsMTMgKzQzMjksNiBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Mo KTsKIAotCQkvKgotCQkgKiBUYWtlIHRoZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwg YmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgpCi0JCSAqIHRvIGZpbHRlciBjYW5kaWRhdGUgdHVw bGVzLgotCQkgKi8KLQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7Ci0JCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkJLyoKIAkJ ICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNvcnJl Y3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAtNDE1MiwxNiArNDM0MCw4IEBAIFJl aW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJl bGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXByb2dyZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFtSWQ7 CiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgs IHByb2dyZXNzX3ZhbHMpOwogCi0JCXZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFibGVJZCwgbmV3 aWR4LT5pbmRleElkLCBzbmFwc2hvdCk7Ci0KLQkJLyoKLQkJICogV2UgY2FuIG5vdyBkbyBhd2F5 IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwgd2Ugc3RpbGwgbmVlZCB0byBzYXZlCi0JCSAqIHRo ZSB4bWluIGxpbWl0IHRvIHdhaXQgZm9yIG9sZGVyIHNuYXBzaG90cy4KLQkJICovCi0JCWxpbWl0 WG1pbiA9IHNuYXBzaG90LT54bWluOwotCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JCVVucmVn aXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCWxpbWl0WG1pbiA9IHZhbGlkYXRlX2luZGV4KG5l d2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJCS8qCiAJCSAq IFRvIGVuc3VyZSBubyBkZWFkbG9ja3MsIHdlIG11c3QgY29tbWl0IGFuZCBzdGFydCB5ZXQgYW5v dGhlcgpAQCAtNDE4MSw3ICs0MzYxLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICog dGhlcmUncyBubyBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkJ ICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFLAotCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOworCQkJCQkJ CQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOwogCQlXYWl0Rm9yT2xkZXJTbmFw c2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK QEAgLTQyNzEsMTQgKzQ0NTEsMTQgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkvKgogCSAq IFBoYXNlIDUgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgotCSAqIE1hcmsgdGhlIG9sZCBp bmRleGVzIGFzIGRlYWQuICBGaXJzdCB3ZSBtdXN0IHdhaXQgdW50aWwgbm8gcnVubmluZwotCSAq IHRyYW5zYWN0aW9uIGNvdWxkIGJlIHVzaW5nIHRoZSBpbmRleCBmb3IgYSBxdWVyeS4gIFNlZSBh bHNvCisJICogTWFyayB0aGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBhcyBkZWFkLiBGaXJz dCB3ZSBtdXN0IHdhaXQgdW50aWwgbm8KKwkgKiBydW5uaW5nIHRyYW5zYWN0aW9uIGNvdWxkIGJl IHVzaW5nIHRoZSBpbmRleCBmb3IgYSBxdWVyeS4gIFNlZSBhbHNvCiAJICogaW5kZXhfZHJvcCgp IGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAKIAlJTkpFQ1RJT05fUE9JTlQoInJlaW5kZXhfcmVs YXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCIpOwogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF81KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCB0cnVlKTsKIAogCWZvcmVhY2gobGMsIGluZGV4SWRzKQpAQCAtNDMwMyw2ICs0 NDgzLDI4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiAJfQogCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZv ICpuZXdpZHggPSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIENoZWNrIGZvciB1c2VyLXJlcXVl c3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28gYXMKKwkJICogeGFj dC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5zdXJlcyB0aGF0CisJ CSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJvcnQuCisJCSAqLwor CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4 IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2 ZSBhIHZhbGlkIHNuYXBzaG90LgorCQkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CisKKwkJaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKG5ld2lk eC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKworCQlQb3BBY3RpdmVTbmFwc2hvdCgp OworCX0KKwogCS8qIENvbW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIHVwZGF0ZXMg dmlzaWJsZS4gKi8KIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwpAQCAtNDMxNiwxMSArNDUxOCwxMSBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCS8qCiAJICogUGhhc2UgNiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0JICog RHJvcCB0aGUgb2xkIGluZGV4ZXMuCisJICogRHJvcCB0aGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5k ZXhlcy4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7 CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82KTsKIAlXYWl0Rm9yTG9j a2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKIAogCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtNDM0MCw2ICs0 NTQyLDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2Fk ZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CiAJCX0KIAorCQlmb3JlYWNoKGxjLCBuZXdJbmRleElk cykKKwkJeworCQkJUmVpbmRleEluZGV4SW5mbyAqaWR4ID0gbGZpcnN0KGxjKTsKKwkJCU9iamVj dEFkZHJlc3Mgb2JqZWN0OworCisJCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25J ZDsKKwkJCW9iamVjdC5vYmplY3RJZCA9IGlkeC0+YXV4SW5kZXhJZDsKKwkJCW9iamVjdC5vYmpl Y3RTdWJJZCA9IDA7CisKKwkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmpl Y3RzKTsKKwkJfQorCiAJCS8qCiAJCSAqIFVzZSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRf TE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRoZQogCQkgKiByaWdodCBsb2NrIGxldmVs LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCA2OTRhMjUxOGJhNS4uNGFmM2QzZjc0NTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCkBAIC03ODQsNyArNzg0LDcgQEAgSW5kZXhJbmZvICoKIG1ha2VJbmRl eEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhw cmVzc2lvbnMsCiAJCQkgIExpc3QgKnByZWRpY2F0ZXMsIGJvb2wgdW5pcXVlLCBib29sIG51bGxz X25vdF9kaXN0aW5jdCwKIAkJCSAgYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsIGJvb2wg c3VtbWFyaXppbmcsCi0JCQkgIGJvb2wgd2l0aG91dG92ZXJsYXBzKQorCQkJICBib29sIHdpdGhv dXRvdmVybGFwcywgYm9vbCBhdXhpbGlhcnkpCiB7CiAJSW5kZXhJbmZvICAqbiA9IG1ha2VOb2Rl KEluZGV4SW5mbyk7CiAKQEAgLTgwMCw2ICs4MDAsNyBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1h dHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCW4t PmlpX0NvbmN1cnJlbnQgPSBjb25jdXJyZW50OwogCW4tPmlpX1N1bW1hcml6aW5nID0gc3VtbWFy aXppbmc7CiAJbi0+aWlfV2l0aG91dE92ZXJsYXBzID0gd2l0aG91dG92ZXJsYXBzOworCW4tPmlp X0F1eGlsaWFyeSA9IGF1eGlsaWFyeTsKIAogCS8qIHN1bW1hcml6aW5nIGluZGV4ZXMgY2Fubm90 IGNvbnRhaW4gbm9uLWtleSBhdHRyaWJ1dGVzICovCiAJQXNzZXJ0KCFzdW1tYXJpemluZyB8fCAo bnVta2V5YXR0cnMgPT0gbnVtYXR0cnMpKTsKQEAgLTgyNSw3ICs4MjYsNiBAQCBtYWtlSW5kZXhJ bmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJl c3Npb25zLAogCS8qIGluaXRpYWxpemUgaW5kZXgtYnVpbGQgc3RhdGUgdG8gZGVmYXVsdCAqLwog CW4tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJbi0+aWlfUGFyYWxsZWxXb3JrZXJzID0g MDsKLQluLT5paV9BdXhpbGlhcnkgPSBmYWxzZTsKIAogCS8qIHNldCB1cCBmb3IgcG9zc2libGUg dXNlIGJ5IGluZGV4IEFNICovCiAJbi0+aWlfQW0gPSBhbW9pZDsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmlu ZGV4IGQ2OWJhYWEzNjRmLi5lMmMwZmM4ZmQ2NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC03MTQs MTEgKzcxNCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkJCSAg IFRhYmxlU2NhbkRlc2Mgc2Nhbik7CiAKIAkvKiBzZWUgdGFibGVfaW5kZXhfdmFsaWRhdGVfc2Nh biBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMgKi8KLQl2b2lkCQkoKmluZGV4X3ZhbGlk YXRlX3NjYW4pIChSZWxhdGlvbiB0YWJsZV9yZWwsCi0JCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhf cmVsLAotCQkJCQkJCQkJCXN0cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCi0JCQkJCQkJCQkJ U25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAq c3RhdGUpOworCVRyYW5zYWN0aW9uSWQgCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlv biB0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCisJCQkJCQkJCQkJ CQlzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlk YXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0 YXRlICphdXhfc3RhdGUpOwogCiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4NjIsMjIgKzE4 NjIsMjUgQEAgdGFibGVfaW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWws CiB9CiAKIC8qCi0gKiB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIC0gc2Vjb25kIHRhYmxlIHNj YW4gZm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKKyAqIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3Nj YW4gLSB2YWxpZGF0aW9uIHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKICAqCiAgKiBT ZWUgdmFsaWRhdGVfaW5kZXgoKSBmb3IgYW4gZXhwbGFuYXRpb24uCisgKgorICogTm90ZTogaXQg aXMgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBmdW5jdGlvbiB0byBjbG9zZSBzb3J0c3RhdGVzIGlu CisgKiBib3RoIHN0YXRlIGFuZCBhdXhzdGF0ZS4KICAqLwotc3RhdGljIGlubGluZSB2b2lkCitz dGF0aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQKIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVs YXRpb24gdGFibGVfcmVsLAogCQkJCQkJICBSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkgIHN0 cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCi0JCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAot CQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSkKKwkJCQkJCSAgc3RydWN0 IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4 U3RhdGUgKmF1eHN0YXRlKQogewotCXRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRh dGVfc2Nhbih0YWJsZV9yZWwsCi0JCQkJCQkJCQkJCSAgIGluZGV4X3JlbCwKLQkJCQkJCQkJCQkJ ICAgaW5kZXhfaW5mbywKLQkJCQkJCQkJCQkJICAgc25hcHNob3QsCi0JCQkJCQkJCQkJCSAgIHN0 YXRlKTsKKwlyZXR1cm4gdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2Fu KHRhYmxlX3JlbCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X3JlbCwKKwkJCQkJCQkJCQkJCQkgIGlu ZGV4X2luZm8sCisJCQkJCQkJCQkJCQkJICBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgIGF1eHN0YXRl KTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggNGRhYThiZWY1ZWUuLjAxZjg1ZTU3ZWEyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9pbmRleC5oCkBAIC0yNSw2ICsyNSw3IEBAIHR5cGVkZWYgZW51bQogewogCUlOREVY X0NSRUFURV9TRVRfUkVBRFksCiAJSU5ERVhfQ1JFQVRFX1NFVF9WQUxJRCwKKwlJTkRFWF9EUk9Q X0NMRUFSX1JFQURZLAogCUlOREVYX0RST1BfQ0xFQVJfVkFMSUQsCiAJSU5ERVhfRFJPUF9TRVRf REVBRCwKIH0gSW5kZXhTdGF0ZUZsYWdzQWN0aW9uOwpAQCAtNjUsNiArNjYsNyBAQCBleHRlcm4g dm9pZCBpbmRleF9jaGVja19wcmltYXJ5X2tleShSZWxhdGlvbiBoZWFwUmVsLAogI2RlZmluZQlJ TkRFWF9DUkVBVEVfSUZfTk9UX0VYSVNUUwkJCSgxIDw8IDQpCiAjZGVmaW5lCUlOREVYX0NSRUFU RV9QQVJUSVRJT05FRAkJCSgxIDw8IDUpCiAjZGVmaW5lIElOREVYX0NSRUFURV9JTlZBTElECQkJ CSgxIDw8IDYpCisjZGVmaW5lIElOREVYX0NSRUFURV9BVVhJTElBUlkJCQkJKDEgPDwgNykKIAog ZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIGNv bnN0IGNoYXIgKmluZGV4UmVsYXRpb25OYW1lLApAQCAtODYsNyArODgsOCBAQCBleHRlcm4gT2lk CWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkgYml0czE2IGNvbnN0 cl9mbGFncywKIAkJCQkJCSBib29sIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzLAogCQkJCQkJIGJv b2wgaXNfaW50ZXJuYWwsCi0JCQkJCQkgT2lkICpjb25zdHJhaW50SWQpOworCQkJCQkJIE9pZCAq Y29uc3RyYWludElkLAorCQkJCQkJIGNoYXIgcmVscGVyc2lzdGVuY2UpOwogCiAjZGVmaW5lCUlO REVYX0NPTlNUUl9DUkVBVEVfTUFSS19BU19QUklNQVJZCSgxIDw8IDApCiAjZGVmaW5lCUlOREVY X0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRQkJKDEgPDwgMSkKQEAgLTEwMCw2ICsxMDMsMTEgQEAg ZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQkJCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJCSAgIGNv bnN0IGNoYXIgKm5ld05hbWUpOwogCitleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVh dGVfYXV4KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIE9pZCBtYWluSW5kZXhJ ZCwKKwkJCQkJCQkJCQkgIE9pZCB0YWJsZXNwYWNlT2lkLAorCQkJCQkJCQkJCSAgY29uc3QgY2hh ciAqbmV3TmFtZSk7CisKIGV4dGVybiB2b2lkIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQg aGVhcFJlbGF0aW9uSWQsCiAJCQkJCQkJCQkgT2lkIGluZGV4UmVsYXRpb25JZCk7CiAKQEAgLTE0 NSw3ICsxNTMsNyBAQCBleHRlcm4gdm9pZCBpbmRleF9idWlsZChSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJCQkJCQlib29sIGlzcmVpbmRleCwKIAkJCQkJCWJvb2wgcGFyYWxsZWwpOwogCi1leHRl cm4gdm9pZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qg c25hcHNob3QpOworZXh0ZXJuIFRyYW5zYWN0aW9uSWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJ ZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkKTsKIAogZXh0ZXJuIHZvaWQgaW5kZXhfc2V0 X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0aW9uKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKaW5kZXggMThlMzE3OWVmNjMuLjRjM2VhNjg2NDk0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKQEAgLTkyLDE0ICs5MiwxNSBAQAogCiAvKiBQaGFzZXMg b2YgQ1JFQVRFIElOREVYIChhcyBhZHZlcnRpc2VkIHZpYSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UpICovCiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzEJCQkxCi0jZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRAkJCTIKLSNkZWZpbmUgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfMgkJCTMKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1ZBTElEQVRFX0lEWFNDQU4JNAotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf VkFMSURBVEVfU09SVAkJNQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURB VEVfVEFCTEVTQ0FOCTYKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMwkJ CTcKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMgkJCTIKKyNkZWZpbmUg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX0JVSUxECQkJMworI2RlZmluZSBQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0VfV0FJVF8zCQkJNAorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf VkFMSURBVEVfSURYU0NBTgk1CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJ REFURV9TT1JUCQk2CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9J RFhNRVJHRQk3CiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQJCQk4CiAj ZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUJCQk5CisjZGVmaW5lIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYJCQkxMAogCiAvKgogICogU3VicGhhc2VzIG9mIENS RUFURSBJTkRFWCwgZm9yIGluZGV4X2J1aWxkLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA3YmZl MGFjYjkxYy4uOGFiNzRlMmIxZDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xNzcsOCArMTc3 LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJQW1DYWNoZQkJCQlwcml2YXRlIGNh Y2hlIGFyZWEgZm9yIGluZGV4IEFNCiAgKgkJQ29udGV4dAkJCQltZW1vcnkgY29udGV4dCBob2xk aW5nIHRoaXMgSW5kZXhJbmZvCiAgKgotICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hh aW4sIGlpX0F1eGlsaWFyeSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCi0gKiBhcmUgdXNlZCBvbmx5 IGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3 aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGFuZCBpaV9QYXJhbGxl bFdvcmtlcnMgYXJlIHVzZWQgb25seQorICogZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3JlIGNv bnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCiAgKiAtLS0tLS0tLS0tLS0tLS0tCiAgKi8K IHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv bWFrZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAppbmRleCA1NDczY2U5 YTI4OC4uNDkwNDc0OGY1ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5j cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC05OSw3ICs5OSw4IEBA IGV4dGVybiBJbmRleEluZm8gKm1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5 YXR0cnMsIE9pZCBhbW9pZCwKIAkJCQkJCQkJTGlzdCAqZXhwcmVzc2lvbnMsIExpc3QgKnByZWRp Y2F0ZXMsCiAJCQkJCQkJCWJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwKIAkJ CQkJCQkJYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsCi0JCQkJCQkJCWJvb2wgc3VtbWFy aXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzKTsKKwkJCQkJCQkJYm9vbCBzdW1tYXJpemluZywg Ym9vbCB3aXRob3V0b3ZlcmxhcHMsCisJCQkJCQkJCWJvb2wgYXV4aWxpYXJ5KTsKIAogZXh0ZXJu IE5vZGUgKm1ha2VTdHJpbmdDb25zdChjaGFyICpzdHIsIGludCBsb2NhdGlvbik7CiBleHRlcm4g RGVmRWxlbSAqbWFrZURlZkVsZW0oY2hhciAqbmFtZSwgTm9kZSAqYXJnLCBpbnQgbG9jYXRpb24p OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVk L2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CmluZGV4IDlmMDNmYTMwMzNjLi43 ODAzMTNmNDc3YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApAQCAtMjMs NiArMjMsMTIgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2UnKTsKICAKICgxIHJvdykKIAorU0VMRUNUIGluamVj dGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQnLCAn bm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVB VEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CiBJ TlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTQzLDMwICs0OSwzOCBAQCBBTFRFUiBUQUJMRSBj aWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5f c3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0 ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2lu ZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIp ID0gMDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9p bmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAg LTc2LDkgKzkwLDExIEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBV U0lORyBCUklOKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nh bl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVs IG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtl cnM9Mik7CkBAIC05MSwyMyArMTA3LDMxIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOwogCiBDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRh dGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp KTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2lu ZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0 aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBX SEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4 X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJh bSgpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCkBAIC0xMTYsMTMgKzE0MCwxNyBAQCBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0Mg TlVMTFMgTEFTVCk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQK IFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBTQ0hFTUEg Y2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhl ciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv c3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRleCAyOTQxYWE3YWUzOC4uMjQ5 ZDEwNjFhZGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9z cWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtNCw2ICs0LDcgQEAgU0VM RUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7 CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOworU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQn LCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFC TEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKaW5kZXggODAxMWMxNDFiZjguLjM0 MzMxZTRkNDhiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9p bmRleC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 CkBAIC0xNDIzLDYgKzE0MjMsNyBAQCBERVRBSUw6ICBLZXkgKGYxKT0oYikgYWxyZWFkeSBleGlz dHMuCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXgzIE9OIGNv bmN1cl9oZWFwKGYyKTsKIEVSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNv bmN1cl9pbmRleDMiCiBERVRBSUw6ICBLZXkgKGYyKT0oYikgaXMgZHVwbGljYXRlZC4KK0RST1Ag SU5ERVggY29uY3VyX2luZGV4M19jY2F1eDsKIC0tIHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3b3JrIGNvbmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7 CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAo ZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTMwMjgsNiArMzAyOSw3IEBAIElOU0VSVCBJTlRPIGNvbmN1 cl9yZWluZGV4X3RhYjQgVkFMVUVTICgxKSwgKDEpLCAoMik7CiBDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3RhYjQg KGMxKTsKIEVSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9yZWlu ZGV4X2luZDUiCiBERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5E RVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIC0tIFJlaW5kZXhpbmcgY29uY3VycmVudGx5 IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0aGUgc2FtZSBmYWlsdXJlLgogLS0gVGhlIGV4dHJhIGlu ZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGludmFsaWQsIGFuZCBjYW4gYmUgZHJvcHBlZC4KIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CkBAIC0zMDQwLDggKzMw NDIsMTAgQEAgREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCiAgYzEgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCiBJbmRleGVzOgogICAgICJjb25jdXJf cmVpbmRleF9pbmQ1IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJjb25jdXJfcmVp bmRleF9pbmQ1X2NjYXV4IiBzdGlyIChjMSkgSU5WQUxJRAogICAgICJjb25jdXJfcmVpbmRleF9p bmQ1X2NjbmV3IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAogCitEUk9QIElOREVYIGNvbmN1 cl9yZWluZGV4X2luZDVfY2NhdXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2Nu ZXc7CiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBp bmRleCBjYW4gYmVjb21lIHZhbGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBX SEVSRSBjMSA9IDE7CkBAIC0zMDY5LDYgKzMwNzMsNDQgQEAgSW5kZXhlczoKICAgICAiY29uY3Vy X3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBidHJlZSAoYzEpCiAKIERST1AgVEFCTEUgY29uY3VyX3Jl aW5kZXhfdGFiNDsKKy0tIENoZWNrIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVB VEUgVEFCTEUgYXV4X2luZGV4X3RhYjUgKGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhf dGFiNSBWQUxVRVMgKDEpLCAoMSksICgyKTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZh bGlkIGluZGV4IGFuZCBhdXhpbGlhcnkgaW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJS T1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRB SUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KK1xkIGF1eF9pbmRleF90YWI1CisgICAg ICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8 IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwg YnRyZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkg SU5WQUxJRAorCistLSBOb3QgYWxsb3dlZCB0byByZWluZGV4IGF1eGlsaWFyeSBpbmRleAorUkVJ TkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKK0VSUk9SOiAgcmVpbmRleCBvZiBhdXhp bGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCistLSBDb25j dXJyZW50bHkgYWxzbworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZf Y2NhdXg7CitFUlJPUjogIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5k Nl9jY2F1eCIgbm90IHN1cHBvcnRlZAorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVy ZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGNv bmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworRVJST1I6ICByZWxhdGlvbiAiY29uY3Vy X3JlaW5kZXhfdGFiNCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogREVMRVRFIEZST00gY29uY3Vy X3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CisgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNo b3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4CitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90 YWI1OworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2lu ZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFNob3VsZCBiZSBz a2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVO VExZIGF1eF9pbmRleF90YWI1OworV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxp ZCBpbmRleCAicHVibGljLmF1eF9pbmRleF9pbmQ2IgorSElOVDogIFVzZSBEUk9QIElOREVYIG9y IFJFSU5ERVggSU5ERVguCitXQVJOSU5HOiAgc2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkg aW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNl9jY2F1eCIKK05PVElDRTogIHRhYmxlICJhdXhf aW5kZXhfdGFiNSIgaGFzIG5vIGluZGV4ZXMgdGhhdCBjYW4gYmUgcmVpbmRleGVkIGNvbmN1cnJl bnRseQorRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGlu ZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlv bnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBk ZWZpbml0aW9ucy4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhp bmcub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKaW5kZXggYmNm MWRiMTFkNzMuLjNmZWNhYTM4ODUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2luZGV4aW5nLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5n Lm91dApAQCAtMTU4NSwxMCArMTU4NSwxMSBAQCBzZWxlY3QgaW5kZXhyZWxpZDo6cmVnY2xhc3Ms IGluZGlzdmFsaWQsCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogIHBhcnRlZF9pc3ZhbGlkX2lkeCAgICAgICAgICAgICB8IGYgICAgICAgICAgfCBwYXJ0ZWRf aXN2YWxpZF90YWIgICAgfCAKICBwYXJ0ZWRfaXN2YWxpZF9pZHhfMTEgICAgICAgICAgfCBmICAg ICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzExIHwgcGFydGVkX2lzdmFsaWRfdGFiXzFfZXhw cl9pZHgKKyBwYXJ0ZWRfaXN2YWxpZF9pZHhfMTFfY2NhdXggICAgfCBmICAgICAgICAgIHwgcGFy dGVkX2lzdmFsaWRfdGFiXzExIHwgCiAgcGFydGVkX2lzdmFsaWRfdGFiXzEyX2V4cHJfaWR4IHwg dCAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMiB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8x X2V4cHJfaWR4CiAgcGFydGVkX2lzdmFsaWRfdGFiXzFfZXhwcl9pZHggIHwgZiAgICAgICAgICB8 IHBhcnRlZF9pc3ZhbGlkX3RhYl8xICB8IHBhcnRlZF9pc3ZhbGlkX2lkeAogIHBhcnRlZF9pc3Zh bGlkX3RhYl8yX2V4cHJfaWR4ICB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMiAg fCBwYXJ0ZWRfaXN2YWxpZF9pZHgKLSg1IHJvd3MpCisoNiByb3dzKQogCiBkcm9wIHRhYmxlIHBh cnRlZF9pc3ZhbGlkX3RhYjsKIC0tIENoZWNrIHN0YXRlIG9mIHJlcGxpY2EgaW5kZXhlcyB3aGVu IGF0dGFjaGluZyBhIHBhcnRpdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5k ZXggMzAxNGQwNDdmZWYuLmUwYTQ2YzBhNDJhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dApAQCAtMjAxMywxNCArMjAxMywxNSBAQCBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRl eHwgU0VMRUNUIHMucGlkLAogICAgICAgICBDQVNFIHMucGFyYW0xMAogICAgICAgICAgICAgV0hF TiAwIFRIRU4gJ2luaXRpYWxpemluZyc6OnRleHQKICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd3 YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSBidWlsZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4g MiBUSEVOICgnYnVpbGRpbmcgaW5kZXgnOjp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8 IHBnX2luZGV4YW1fcHJvZ3Jlc3NfcGhhc2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTEx KSksICcnOjp0ZXh0KSkKLSAgICAgICAgICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIGZvciB3cml0 ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4Jzo6dGV4dAotICAgICAgICAgICAgV0hFTiA1 IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAotICAgICAgICAg ICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJzo6dGV4dAot ICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnOjp0ZXh0 Ci0gICAgICAgICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFy a2luZyBkZWFkJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJl YWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ3dh aXRpbmcgZm9yIHdyaXRlcnMgdG8gdXNlIGF1eGlsaWFyeSBpbmRleCc6OnRleHQKKyAgICAgICAg ICAgIFdIRU4gMyBUSEVOICgnYnVpbGRpbmcgaW5kZXgnOjp0ZXh0IHx8IENPQUxFU0NFKCgnOiAn Ojp0ZXh0IHx8IHBnX2luZGV4YW1fcHJvZ3Jlc3NfcGhhc2VuYW1lKChzLnBhcmFtOSk6Om9pZCwg cy5wYXJhbTExKSksICcnOjp0ZXh0KSkKKyAgICAgICAgICAgIFdIRU4gNCBUSEVOICd3YWl0aW5n IGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA1 IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4Jzo6dGV4dAorICAgICAgICAg ICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAor ICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhl cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNo b3RzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMg YmVmb3JlIG1hcmtpbmcgZGVhZCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMTAgVEhFTiAnd2Fp dGluZyBmb3IgcmVhZGVycyBiZWZvcmUgZHJvcHBpbmcnOjp0ZXh0CiAgICAgICAgICAgICBFTFNF IE5VTEw6OnRleHQKICAgICAgICAgRU5EIEFTIHBoYXNlLAogICAgIHMucGFyYW00IEFTIGxvY2tl cnNfdG90YWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXgu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCAwNjhjNjZi OTVhNS4uYjQxMGZhNWM1NDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0 ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApA QCAtNDk5LDYgKzQ5OSw3IEBAIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIElGIE5P VCBFWElTVFMgY29uY3VyX2luZGV4MiBPTiBjb25jdXJfaGVhcChmMSk7CiBJTlNFUlQgSU5UTyBj b25jdXJfaGVhcCBWQUxVRVMgKCdiJywneCcpOwogLS0gY2hlY2sgaWYgY29uc3RyYWludCBpcyBl bmZvcmNlZCBwcm9wZXJseSBhdCBidWlsZCB0aW1lCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBjb25jdXJfaW5kZXgzIE9OIGNvbmN1cl9oZWFwKGYyKTsKK0RST1AgSU5ERVggY29u Y3VyX2luZGV4M19jY2F1eDsKIC0tIHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBh cnRpYWwgaW5kZXhlcyB3b3JrIGNvbmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBjb25jdXJfaW5kZXg0IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJF IGYxPSd4JzsKQEAgLTEyNDQsMTAgKzEyNDUsMTIgQEAgQ1JFQVRFIFRBQkxFIGNvbmN1cl9yZWlu ZGV4X3RhYjQgKGMxIGludCk7CiBJTlNFUlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVF UyAoMSksICgxKSwgKDIpOwogLS0gVGhpcyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5kZXgu CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1IE9O IGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxKTsKK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5k NV9jY2F1eDsKIC0tIFJlaW5kZXhpbmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0 aCB0aGUgc2FtZSBmYWlsdXJlLgogLS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxm IGludmFsaWQsIGFuZCBjYW4gYmUgZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNvbmN1cl9yZWluZGV4X2luZDU7CiBcZCBjb25jdXJfcmVpbmRleF90YWI0CitEUk9QIElOREVY IGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2lu ZDVfY2NuZXc7CiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNv IHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhf dGFiNCBXSEVSRSBjMSA9IDE7CkBAIC0xMjU5LDYgKzEyNjIsMjQgQEAgUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNTsKIFxkIGNvbmN1cl9yZWluZGV4X3RhYjQK IERST1AgVEFCTEUgY29uY3VyX3JlaW5kZXhfdGFiNDsKIAorLS0gQ2hlY2sgaGFuZGxpbmcgb2Yg YXV4aWxpYXJ5IGluZGV4ZXMKK0NSRUFURSBUQUJMRSBhdXhfaW5kZXhfdGFiNSAoYzEgaW50KTsK K0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKSwgKDIpOworLS0gVGhp cyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5kZXggYW5kIGF1eGlsaWFyeSBpbmRleCBmb3Ig aXQKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1 eF9pbmRleF90YWI1IChjMSk7CitcZCBhdXhfaW5kZXhfdGFiNQorLS0gTm90IGFsbG93ZWQgdG8g cmVpbmRleCBhdXhpbGlhcnkgaW5kZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2Nh dXg7CistLSBDb25jdXJyZW50bHkgYWxzbworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4 X2luZGV4X2luZDZfY2NhdXg7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdv IGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gY29uY3Vy X3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcg cmVpbmRleAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIFNob3VsZCBiZSBza2lw cGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZ IGF1eF9pbmRleF90YWI1OworRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKwogLS0gQ2hlY2sg aGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhl CiAtLSBkZWZpbml0aW9ucyBvZiB0aGUgcmVidWlsdCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUg b3JpZ2luYWwKIC0tIGRlZmluaXRpb25zLgotLSAKMi40My4wCgo= --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0009-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v13-0009-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauo88 RnJvbSA1MTliZmQwM2YwNzZhMzM5YTc3NDYyYmZjYWIxM2QyY2FjNWY4ZjMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDA5 LzExXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKUmVtb3ZlIHRoZSBvcHRp bWl6YXRpb24gdGhhdCBhbGxvd2VkIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSBv dGhlcgpjb25jdXJyZW50IGJ1aWxkcyBvZiAic2FmZSIgaW5kZXhlcyAodGhvc2Ugd2l0aG91dCBl eHByZXNzaW9ucyBvciBwcmVkaWNhdGVzKS4KVGhpcyBvcHRpbWl6YXRpb24gaXMgbm8gbG9uZ2Vy IG5lZWRlZCB3aXRoIHRoZSBuZXcgc25hcHNob3QgaGFuZGxpbmcgYXBwcm9hY2gKdGhhdCB1c2Vz IHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGluc3RlYWQgb2YgYSBzaW5nbGUgcmVm ZXJlbmNlCnNuYXBzaG90LgoKVGhlIGNoYW5nZSBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBSZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lD IHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBSZW1vdmluZyBhbGwgc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKSBjYWxscyBhbmQgcmVsYXRlZCBsb2dpYwotIFJlbW92aW5nIHNwZWNpYWwgY2FzZSBoYW5k bGluZyBpbiBHZXRDdXJyZW50VmlydHVhbFhJRHMoKQotIFJlbW92aW5nIHJlbGF0ZWQgdGVzdCBj YXNlcyBhbmQgaW5qZWN0aW9uIHBvaW50cwoKVGhpcyBpcyBwYXJ0IG9mIGltcHJvdmluZyBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0byBiZXR0ZXIgaGFuZGxlIHhtaW4KcHJvcGFnYXRpb24gZHVy aW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYyAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyAgICAgICAgICAgICAgfCAxNDIgKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVk L3JlaW5kZXhfY29uYy5vdXQgICAgICAgICAgICAgICAgIHwgIDUxIC0tLS0tLS0KIHNyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSAtCiAuLi4vaW5qZWN0 aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbCAgICAgfCAgMjggLS0tLQogOCBmaWxlcyBj aGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhf Y29uYy5vdXQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggZTU4 MDQ4M2E3Y2IuLmI0YjM2YmRhMDE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODg1LDEx ICsyODg1LDkgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJaW50CQkJc29ydG1lbTsKIAogCS8qCi0JICogVGhlIG9ubHkgcG9zc2li bGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIgaXMK LQkgKiBQUk9DX0lOX1NBRkVfSUMuCisJICogVGhlcmUgYXJlIG5vIHBvc3NpYmxlIHN0YXR1cyBm bGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyLgogCSAqLwotCUFzc2Vy dCgoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAwKSB8fAotCQkgICAoTXlQcm9jLT5zdGF0dXNGbGFn cyA9PSBQUk9DX0lOX1NBRkVfSUMpKTsKKwlBc3NlcnQoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAw KTsKIAogCS8qIFNldCBkZWJ1Z19xdWVyeV9zdHJpbmcgZm9yIGluZGl2aWR1YWwgd29ya2VycyBm aXJzdCAqLwogCXNoYXJlZHF1ZXJ5ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf UVVFUllfVEVYVCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDYy ZTk3NTAxNmFkLi4xZWI0Mjk5ODI2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMK QEAgLTE5MTEsMTEgKzE5MTEsOSBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAjZW5kaWYJCQkJCQkJLyogQlRSRUVfQlVJTERfU1RBVFMg Ki8KIAogCS8qCi0JICogVGhlIG9ubHkgcG9zc2libGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUg c2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIgaXMKLQkgKiBQUk9DX0lOX1NBRkVfSUMuCisJICog VGhlcmUgYXJlIG5vIHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUg cGFyYWxsZWwgd29ya2VyLgogCSAqLwotCUFzc2VydCgoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAw KSB8fAotCQkgICAoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSBQUk9DX0lOX1NBRkVfSUMpKTsKKwlB c3NlcnQoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAwKTsKIAogCS8qIFNldCBkZWJ1Z19xdWVyeV9z dHJpbmcgZm9yIGluZGl2aWR1YWwgd29ya2VycyBmaXJzdCAqLwogCXNoYXJlZHF1ZXJ5ID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUVVFUllfVEVYVCwgdHJ1ZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCmluZGV4IGUxMGY2MDk4ZjU4Li5iOTg4NTFhOWUzNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKQEAgLTExNiw3ICsxMTYsNiBAQCBzdGF0aWMgYm9vbCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJ T2lkIHJlbGF0aW9uT2lkLAogCQkJCQkJCQkJCWNvbnN0IFJlaW5kZXhQYXJhbXMgKnBhcmFtcyk7 CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGF0aW9uSWQsIGJvb2wg bmV3dmFsKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncyh2b2lk KTsKIAogLyoKICAqIGNhbGxiYWNrIGFyZ3VtZW50IHR5cGUgZm9yIFJhbmdlVmFyQ2FsbGJhY2tG b3JSZWluZGV4SW5kZXgoKQpAQCAtNDE5LDEwICs0MTgsNyBAQCBDb21wYXJlT3BjbGFzc09wdGlv bnMoY29uc3QgRGF0dW0gKm9wdHMxLCBjb25zdCBEYXR1bSAqb3B0czIsIGludCBuYXR0cykKICAq IGxhenkgVkFDVVVNcywgYmVjYXVzZSB0aGV5IHdvbid0IGJlIGZhemVkIGJ5IG1pc3NpbmcgaW5k ZXggZW50cmllcwogICogZWl0aGVyLiAgKE1hbnVhbCBBTkFMWVpFcywgaG93ZXZlciwgY2FuJ3Qg YmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5CiAgKiBtaWdodCBiZSB3aXRoaW4gdHJhbnNhY3Rpb25z IHRoYXQgYXJlIGdvaW5nIHRvIGRvIGFyYml0cmFyeSBvcGVyYXRpb25zCi0gKiBsYXRlci4pICBQ cm9jZXNzZXMgcnVubmluZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVggQ09O Q1VSUkVOVExZCi0gKiBvbiBpbmRleGVzIHRoYXQgYXJlIG5laXRoZXIgZXhwcmVzc2lvbmFsIG5v ciBwYXJ0aWFsIGFyZSBhbHNvIHNhZmUgdG8KLSAqIGlnbm9yZSwgc2luY2Ugd2Uga25vdyB0aGF0 IHRob3NlIHByb2Nlc3NlcyB3b24ndCBleGFtaW5lIGFueSBkYXRhCi0gKiBvdXRzaWRlIHRoZSB0 YWJsZSB0aGV5J3JlIGluZGV4aW5nLgorICogbGF0ZXIuKQogICoKICAqIEFsc28sIEdldEN1cnJl bnRWaXJ0dWFsWElEcyBuZXZlciByZXBvcnRzIG91ciBvd24gdnhpZCwgc28gd2UgbmVlZCBub3QK ICAqIGNoZWNrIGZvciB0aGF0LgpAQCAtNDQzLDggKzQzOSw3IEBAIFdhaXRGb3JPbGRlclNuYXBz aG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykKIAlWaXJ0dWFsVHJh bnNhY3Rpb25JZCAqb2xkX3NuYXBzaG90czsKIAogCW9sZF9zbmFwc2hvdHMgPSBHZXRDdXJyZW50 VmlydHVhbFhJRHMobGltaXRYbWluLCB0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkgIFBST0NfSVNf QVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNCi0JCQkJCQkJCQkJICB8IFBST0NfSU5fU0FGRV9J QywKKwkJCQkJCQkJCQkgIFBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJ CQkJCQkJCSAgJm5fb2xkX3NuYXBzaG90cyk7CiAJaWYgKHByb2dyZXNzKQogCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1dBSVRGT1JfVE9UQUwsIG5fb2xkX3NuYXBzaG90 cyk7CkBAIC00NjQsOCArNDU5LDcgQEAgV2FpdEZvck9sZGVyU25hcHNob3RzKFRyYW5zYWN0aW9u SWQgbGltaXRYbWluLCBib29sIHByb2dyZXNzKQogCiAJCQluZXdlcl9zbmFwc2hvdHMgPSBHZXRD dXJyZW50VmlydHVhbFhJRHMobGltaXRYbWluLAogCQkJCQkJCQkJCQkJCXRydWUsIGZhbHNlLAot CQkJCQkJCQkJCQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNCi0JCQkJCQkJ CQkJCQkJfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJCQkJUFJPQ19JU19BVVRPVkFDVVVN IHwgUFJPQ19JTl9WQUNVVU0sCiAJCQkJCQkJCQkJCQkJJm5fbmV3ZXJfc25hcHNob3RzKTsKIAkJ CWZvciAoaiA9IGk7IGogPCBuX29sZF9zbmFwc2hvdHM7IGorKykKIAkJCXsKQEAgLTU3OSw3ICs1 NzMsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlhbW9wdGlvbnNfZnVuY3Rpb24gYW1v cHRpb25zOwogCWJvb2wJCWV4Y2x1c2lvbjsKIAlib29sCQlwYXJ0aXRpb25lZDsKLQlib29sCQlz YWZlX2luZGV4OwogCURhdHVtCQlyZWxvcHRpb25zOwogCWludDE2CSAgICpjb2xvcHRpb25zOwog CUluZGV4SW5mbyAgKmluZGV4SW5mbzsKQEAgLTExNTcsMTAgKzExNTAsNiBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkJfQogCX0KIAotCS8qIElzIGluZGV4IHNhZmUgZm9yIG90aGVycyB0 byBpZ25vcmU/ICBTZWUgc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKSAqLwotCXNhZmVfaW5kZXgg PSBpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zID09IE5JTCAmJgotCQlpbmRleEluZm8tPmlpX1By ZWRpY2F0ZSA9PSBOSUw7Ci0KIAkvKgogCSAqIFJlcG9ydCBpbmRleCBjcmVhdGlvbiBpZiBhcHBy b3ByaWF0ZSAoZGVsYXkgdGhpcyB0aWxsIGFmdGVyIG1vc3Qgb2YgdGhlCiAJICogZXJyb3IgY2hl Y2tzKQpAQCAtMTY0NywxMCArMTYzNiw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7Ci0KIAkvKgogCSAqIFRoZSBpbmRleCBpcyBub3cgdmlzaWJsZSwgc28gd2UgY2FuIHJlcG9y dCB0aGUgT0lELiAgV2hpbGUgb24gaXQsCiAJICogaW5jbHVkZSB0aGUgcmVwb3J0IGZvciB0aGUg YmVnaW5uaW5nIG9mIHBoYXNlIDIuCkBAIC0xNzA1LDkgKzE2OTAsNiBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25v cmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8yKTsKIAkvKgpAQCAtMTczNywxMCArMTcxOSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYg aW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7Ci0KIAkvKgogCSAqIFBoYXNlIDMgb2YgY29uY3VycmVudCBpbmRleCBidWlsZAog CSAqCkBAIC0xNzY2LDkgKzE3NDQsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0J LyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1 YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygp OworCiAJLyoKIAkgKiBNZXJnZSBjb250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4 ZXMgLSBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KIAkgKi8KQEAgLTE3ODUsOSAr MTc2MSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJl bnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYg KHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKIAkvKiBXZSBzaG91 bGQgbm93IGRlZmluaXRlbHkgbm90IGJlIGFkdmVydGlzaW5nIGFueSB4bWluLiAqLwogCUFzc2Vy dChNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwpAQCAtMTgyOCwxMCArMTgw MSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQg aW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNh ZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CiAJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2Fj dGlvbiB0byBzZWUgYXV4aWxpYXJ5IGFzICJub24tcmVhZHkgZm9yIGluc2VydHMiICovCkBAIC0x ODUyLDEwICsxODIxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwg Y29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMg Ki8KLQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82KTsKIAkvKiBOb3cgd2FpdCBmb3Ig YWxsIHRyYW5zYWN0aW9uIHRvIGlnbm9yZSBhdXhpbGlhcnkgYmVjYXVzZSBpdCBpcyBkZWFkICov CkBAIC0zNjMwLDcgKzM1OTUsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlPaWQJCQlh dXhJbmRleElkOwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwotCQlib29sCQlzYWZl OwkJLyogZm9yIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCiAJfSBSZWluZGV4SW5kZXhJbmZv OwogCUxpc3QJICAgKmhlYXBSZWxhdGlvbklkcyA9IE5JTDsKIAlMaXN0CSAgICppbmRleElkcyA9 IE5JTDsKQEAgLTQwMDIsMTcgKzM5NjYsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlz YXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwogCQlSZXN0cmljdFNlYXJjaFBhdGgo KTsKIAotCQkvKiBkZXRlcm1pbmUgc2FmZXR5IG9mIHRoaXMgaW5kZXggZm9yIHNldF9pbmRleHNh ZmVfcHJvY2ZsYWdzICovCi0JCWlkeC0+c2FmZSA9IChSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lv bnMoaW5kZXhSZWwpID09IE5JTCAmJgotCQkJCQkgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShp bmRleFJlbCkgPT0gTklMKTsKLQotI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCi0JCWlmIChp ZHgtPnNhZmUpCi0JCQlJTkpFQ1RJT05fUE9JTlQoInJlaW5kZXgtY29uYy1pbmRleC1zYWZlIik7 Ci0JCWVsc2UKLQkJCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZl Iik7Ci0jZW5kaWYKLQogCQlpZHgtPnRhYmxlSWQgPSBSZWxhdGlvbkdldFJlbGlkKGhlYXBSZWwp OwogCQlpZHgtPmFtSWQgPSBpbmRleFJlbC0+cmRfcmVsLT5yZWxhbTsKIApAQCAtNDA3Miw3ICs0 MDI1LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJbmV3aWR4ID0gcGFsbG9jX29iamVj dChSZWluZGV4SW5kZXhJbmZvKTsKIAkJbmV3aWR4LT5pbmRleElkID0gbmV3SW5kZXhJZDsKIAkJ bmV3aWR4LT5hdXhJbmRleElkID0gYXV4SW5kZXhJZDsKLQkJbmV3aWR4LT5zYWZlID0gaWR4LT5z YWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5ld2lkeC0+YW1JZCA9 IGlkeC0+YW1JZDsKIApAQCAtNDE2NSwxMSArNDExNyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhp cyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lOX1NB RkVfSUMgZmxhZyBoZXJlLgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSAyIG9mIFJFSU5ERVggQ09O Q1VSUkVOVExZCiAJICoKQEAgLTQyMDAsMTAgKzQxNDcsNiBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1 cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYg KG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyogQnVp bGQgYXV4aWxpYXJ5IGluZGV4LCBpdCBpcyBmYXN0IC0gd2l0aG91dCBhbnkgYWN0dWFsIGhlYXAg c2NhbiwganVzdCBhbiBlbXB0eSBpbmRleC4gKi8KIAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxk KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKIApAQCAtNDIxMiwxMSArNDE1 NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyoKLQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0aGlz IHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKLQkgKiB0byBzZXQgdGhlIFBST0NfSU5fU0FG RV9JQyBmbGFnIGhlcmUuCi0JICovCi0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOwogCS8qCkBAIC00MjQxLDEwICs0MTc5LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25j dXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlm IChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qCiAJ CSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3Jy ZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQyNjQsMTEgKzQxOTgsNiBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAot CS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMg dHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8KLQkgKiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZF X0lDIGZsYWcgaGVyZS4KLQkgKi8KLQogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfMyk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0 cnVlKTsKQEAgLTQyODksMTAgKzQyMTgsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkg Ki8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5k ZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYgKG5ld2lkeC0+ c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyoKIAkJICogVXBkYXRp bmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3 ZQogCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCkBAIC00MzI1LDEwICs0MjUwLDYgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAK LQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVh bGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFn cygpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxk LCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQzNTYs OSArNDI3Nyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqIGludGVyZXN0aW5nIHR1 cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAogCQkg KiBqdXN0IGJlZm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQg b3V0IGFueQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90 cy4KLQkJICoKLQkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGlu IHRoaXMgdHJhbnNhY3Rpb24sCi0JCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0Nf SU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF80KTsKQEAgLTQzODAsMTMgKzQyOTgsNiBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlf YmVmb3JlX3N3YXAiKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoKLQkgKiBC ZWNhdXNlIHRoaXMgdHJhbnNhY3Rpb24gb25seSBkb2VzIGNhdGFsb2cgbWFuaXB1bGF0aW9ucyBh bmQgZG9lc24ndCBkbwotCSAqIGFueSBpbmRleCBvcGVyYXRpb25zLCB3ZSBjYW4gc2V0IHRoZSBQ Uk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlCi0JICogdW5jb25kaXRpb25hbGx5LgotCSAqLwotCXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlmb3Jib3RoKGxjLCBpbmRleElkcywgbGMyLCBu ZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm9sZGlkeCA9IGxmaXJzdChsYyk7 CkBAIC00NDQyLDEyICs0MzUzLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoK LQkgKiBXaGlsZSB3ZSBjb3VsZCBzZXQgUFJPQ19JTl9TQUZFX0lDIGlmIGFsbCBpbmRleGVzIHF1 YWxpZmllZCwgdGhlcmUncyBubwotCSAqIHJlYWwgbmVlZCBmb3IgdGhhdCwgYmVjYXVzZSB3ZSBv bmx5IGFjcXVpcmUgYW4gWGlkIGFmdGVyIHRoZSB3YWl0IGlzCi0JICogZG9uZSwgYW5kIHRoYXQg bGFzdHMgZm9yIGEgdmVyeSBzaG9ydCBwZXJpb2QuCi0JICovCi0KIAkvKgogCSAqIFBoYXNlIDUg b2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDUwOSwxMiArNDQxNCw2IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogV2hpbGUgd2UgY291bGQgc2V0IFBST0Nf SU5fU0FGRV9JQyBpZiBhbGwgaW5kZXhlcyBxdWFsaWZpZWQsIHRoZXJlJ3Mgbm8KLQkgKiByZWFs IG5lZWQgZm9yIHRoYXQsIGJlY2F1c2Ugd2Ugb25seSBhY3F1aXJlIGFuIFhpZCBhZnRlciB0aGUg d2FpdCBpcwotCSAqIGRvbmUsIGFuZCB0aGF0IGxhc3RzIGZvciBhIHZlcnkgc2hvcnQgcGVyaW9k LgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoK QEAgLTQ3NzQsMzYgKzQ2NzMsMyBAQCB1cGRhdGVfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGF0aW9u SWQsIGJvb2wgbmV3dmFsKQogCXRhYmxlX2Nsb3NlKGNsYXNzUmVsLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIH0KIAotLyoKLSAqIFNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaW4gTXlQcm9jLT5z dGF0dXNGbGFncy4KLSAqCi0gKiBXaGVuIGRvaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3 ZSBjYW4gc2V0IHRoaXMgZmxhZwotICogdG8gdGVsbCBvdGhlciBwcm9jZXNzZXMgY29uY3VycmVu dGx5IHJ1bm5pbmcgQ1JFQVRFCi0gKiBJTkRFWCBDT05DVVJSRU5UTFkgb3IgUkVJTkRFWCBDT05D VVJSRU5UTFkgdG8gaWdub3JlIHVzIHdoZW4KLSAqIGRvaW5nIHRoZWlyIHdhaXRzIGZvciBjb25j dXJyZW50IHNuYXBzaG90cy4gIE9uIG9uZSBoYW5kIGl0Ci0gKiBhdm9pZHMgcG9pbnRsZXNzbHkg d2FpdGluZyBmb3IgYSBwcm9jZXNzIHRoYXQncyBub3QgaW50ZXJlc3RpbmcKLSAqIGFueXdheTsg YnV0IG1vcmUgaW1wb3J0YW50bHkgaXQgYXZvaWRzIGRlYWRsb2NrcyBpbiBzb21lIGNhc2VzLgot ICoKLSAqIFRoaXMgY2FuIGJlIGRvbmUgc2FmZWx5IG9ubHkgZm9yIGluZGV4ZXMgdGhhdCBkb24n dCBleGVjdXRlIGFueQotICogZXhwcmVzc2lvbnMgdGhhdCBjb3VsZCBhY2Nlc3Mgb3RoZXIgdGFi bGVzLCBzbyBpbmRleCBtdXN0IG5vdCBiZQotICogZXhwcmVzc2lvbmFsIG5vciBwYXJ0aWFsLiAg Q2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBvbmx5IGNhbGxpbmcKLSAqIHRoaXMgcm91dGluZSB3 aGVuIHRoYXQgYXNzdW1wdGlvbiBob2xkcyB0cnVlLgotICoKLSAqIChUaGUgZmxhZyBpcyByZXNl dCBhdXRvbWF0aWNhbGx5IGF0IHRyYW5zYWN0aW9uIGVuZCwgc28gaXQgbXVzdCBiZQotICogc2V0 IGZvciBlYWNoIHRyYW5zYWN0aW9uLikKLSAqLwotc3RhdGljIGlubGluZSB2b2lkCi1zZXRfaW5k ZXhzYWZlX3Byb2NmbGFncyh2b2lkKQotewotCS8qCi0JICogVGhpcyBzaG91bGQgb25seSBiZSBj YWxsZWQgYmVmb3JlIGluc3RhbGxpbmcgeGlkIG9yIHhtaW4gaW4gTXlQcm9jOwotCSAqIG90aGVy d2lzZSwgY29uY3VycmVudCBwcm9jZXNzZXMgY291bGQgc2VlIGFuIFhtaW4gdGhhdCBtb3ZlcyBi YWNrd2FyZHMuCi0JICovCi0JQXNzZXJ0KE15UHJvYy0+eGlkID09IEludmFsaWRUcmFuc2FjdGlv bklkICYmCi0JCSAgIE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7Ci0KLQlM V0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX0VYQ0xVU0lWRSk7Ci0JTXlQcm9jLT5zdGF0 dXNGbGFncyB8PSBQUk9DX0lOX1NBRkVfSUM7Ci0JUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbTXlQ cm9jLT5wZ3hhY3RvZmZdID0gTXlQcm9jLT5zdGF0dXNGbGFnczsKLQlMV0xvY2tSZWxlYXNlKFBy b2NBcnJheUxvY2spOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCAyMDc3N2Y3ZDVhZS4uNGJkMjRiYzAy ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC01NiwxMCArNTYsNiBAQCBzdHJ1Y3QgWGlkQ2FjaGUKICAq LwogI2RlZmluZQkJUFJPQ19JU19BVVRPVkFDVVVNCTB4MDEJLyogaXMgaXQgYW4gYXV0b3ZhYyB3 b3JrZXI/ICovCiAjZGVmaW5lCQlQUk9DX0lOX1ZBQ1VVTQkJMHgwMgkvKiBjdXJyZW50bHkgcnVu bmluZyBsYXp5IHZhY3V1bSAqLwotI2RlZmluZQkJUFJPQ19JTl9TQUZFX0lDCQkweDA0CS8qIGN1 cnJlbnRseSBydW5uaW5nIENSRUFURSBJTkRFWAotCQkJCQkJCQkJCSAqIENPTkNVUlJFTlRMWSBv ciBSRUlOREVYCi0JCQkJCQkJCQkJICogQ09OQ1VSUkVOVExZIG9uIG5vbi1leHByZXNzaW9uYWws Ci0JCQkJCQkJCQkJICogbm9uLXBhcnRpYWwgaW5kZXggKi8KICNkZWZpbmUJCVBST0NfVkFDVVVN X0ZPUl9XUkFQQVJPVU5ECTB4MDgJLyogc2V0IGJ5IGF1dG92YWMgb25seSAqLwogI2RlZmluZQkJ UFJPQ19JTl9MT0dJQ0FMX0RFQ09ESU5HCTB4MTAJLyogY3VycmVudGx5IGRvaW5nIGxvZ2ljYWwK IAkJCQkJCQkJCQkJCSAqIGRlY29kaW5nIG91dHNpZGUgeGFjdCAqLwpAQCAtNjksMTMgKzY1LDEz IEBAIHN0cnVjdCBYaWRDYWNoZQogCiAvKiBmbGFncyByZXNldCBhdCBFT1hhY3QgKi8KICNkZWZp bmUJCVBST0NfVkFDVVVNX1NUQVRFX01BU0sgXAotCShQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5f U0FGRV9JQyB8IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EKQorCShQUk9DX0lOX1ZBQ1VVTSB8 IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EKQogCiAvKgogICogWG1pbi1yZWxhdGVkIGZsYWdz LiBNYWtlIHN1cmUgYW55IGZsYWdzIHRoYXQgYWZmZWN0IGhvdyB0aGUgcHJvY2VzcycgWG1pbgog ICogdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYnkgVkFDVVVNIGFyZSBpbmNsdWRlZCBoZXJlLgogICov Ci0jZGVmaW5lCQlQUk9DX1hNSU5fRkxBR1MgKFBST0NfSU5fVkFDVVVNIHwgUFJPQ19JTl9TQUZF X0lDKQorI2RlZmluZQkJUFJPQ19YTUlOX0ZMQUdTIChQUk9DX0lOX1ZBQ1VVTSkKIAogLyoKICAq IFdlIGFsbG93IGEgbGltaXRlZCBudW1iZXIgb2YgIndlYWsiIHJlbGF0aW9uIGxvY2tzIChBY2Nl c3NTaGFyZUxvY2ssCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUK aW5kZXggMjIyNWNkMGJmODcuLmIyNTdhMDM0NGE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0xMCw3ICsxMCw3IEBAIEVYVEVOU0lPTiA9IGluamVj dGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVND ID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAot UkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgcmVpbmRleF9jb25jIGNpY19yZXNldF9zbmFwc2hv dHMKK1JFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGNpY19yZXNldF9zbmFwc2hvdHMKIFJFR1JF U1NfT1BUUyA9IC0tZGxwYXRoPSQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdC9yZWdyZXNzCiAKIElT T0xBVElPTiA9IGJhc2ljIGlucGxhY2UKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0IGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGRiOGRlNGJiZTg1Li4wMDAwMDAwMDAwMAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dAorKysg L2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJF TlRMWQotQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLS0gQ2hlY2sgc2FmZXR5 IG9mIGluZGV4ZXMgd2l0aCBwcmVkaWNhdGVzIGFuZCBleHByZXNzaW9ucy4KLVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwotIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwot IGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAot KDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1ub3Qtc2FmZScsICdub3RpY2UnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotQ1JFQVRFIFNDSEVNQSByZWlu ZGV4X2luajsKLUNSRUFURSBUQUJMRSByZWluZGV4X2luai50YmwoaSBpbnQgcHJpbWFyeSBrZXks IHVwZGF0ZWRfYXQgdGltZXN0YW1wKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3NpbXBsZSBP TiByZWluZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByIE9OIHJl aW5kZXhfaW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJlZCBPTiBy ZWluZGV4X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklRVUUgSU5E RVggaW5kX2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBtb2QoaSwg MikgPSAwOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3NpbXBs ZTsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCByZWluZGV4 LWNvbmMtaW5kZXgtc2FmZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmou aW5kX2V4cHI7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBy ZWluZGV4X2luai5pbmRfcHJlZDsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCByZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUKLVJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByX3ByZWQ7Ci1OT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi0t LSBDbGVhbnVwCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1zYWZlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2gg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLURST1AgVEFCTEUgcmVp bmRleF9pbmoudGJsOwotRFJPUCBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1EUk9QIEVYVEVOU0lPTiBp bmplY3Rpb25fcG9pbnRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21l c29uLmJ1aWxkCmluZGV4IGZiMTMxMjcwNjY4Li4wNTFiM2U3ODljMSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzQsNyArMzQsNiBAQCB0 ZXN0cyArPSB7CiAgICdyZWdyZXNzJzogewogICAgICdzcWwnOiBbCiAgICAgICAnaW5qZWN0aW9u X3BvaW50cycsCi0gICAgICAncmVpbmRleF9jb25jJywKICAgICAgICdjaWNfcmVzZXRfc25hcHNo b3RzJywKICAgICBdLAogICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVp bGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbCBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNmNmMjExZTZkNWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbAorKysgL2Rldi9u dWxsCkBAIC0xLDI4ICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJFTlRMWQot Q1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotCi0tLSBDaGVjayBzYWZldHkgb2Yg aW5kZXhlcyB3aXRoIHByZWRpY2F0ZXMgYW5kIGV4cHJlc3Npb25zLgotU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Jl aW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwotU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7Ci0KLUNS RUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1DUkVBVEUgVEFCTEUgcmVpbmRleF9pbmoudGJsKGkg aW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7Ci0KLUNSRUFURSBVTklRVUUg SU5ERVggaW5kX3NpbXBsZSBPTiByZWluZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElO REVYIGluZF9leHByIE9OIHJlaW5kZXhfaW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJ TkRFWCBpbmRfcHJlZCBPTiByZWluZGV4X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsK LUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJz KGkpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBy ZWluZGV4X2luai5pbmRfc2ltcGxlOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRl eF9pbmouaW5kX2V4cHI7Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5p bmRfcHJlZDsKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHBy X3ByZWQ7Ci0KLS0tIENsZWFudXAKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVp bmRleC1jb25jLWluZGV4LXNhZmUnKTsKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJyk7Ci1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRi bDsKLURST1AgU0NIRU1BIHJlaW5kZXhfaW5qOwotCi1EUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25f cG9pbnRzOwotLSAKMi40My4wCgo= --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0008-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Disposition: attachment; filename="v13-0008-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauo77 RnJvbSAwNjhjMGE0MzMyMGMxZjRhMGY5YzYzYjllNmRiNTdjMjgwMDY3NjIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKYW4gMjAyNSAxNzoyMToyOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDA4 LzExXSBDb25jdXJyZW50bHkgYnVpbHQgaW5kZXggdmFsaWRhdGlvbiB1c2VzIGZyZXNoCiBzbmFw c2hvdHMKClRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIHRvIHVzZSBmcmVzaCBzbmFwc2hvdHMgaW5zdGVhZCBv ZiBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuCgpUaGUgcHJldmlvdXMgYXBwcm9hY2ggb2Yg dXNpbmcgYSBzaW5nbGUgcmVmZXJlbmNlIHNuYXBzaG90IGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdp dGggeG1pbiBwcm9wYWdhdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgaW5kZXggYnVpbGQgdG9v ayBhIGxvbmcgdGltZSwgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdCdzIHhtaW4gY291bGQgYmVjb21l IG91dGRhdGVkLCBjYXVzaW5nIHRoZSBpbmRleCB0byBtaXNzIHR1cGxlcyB0aGF0IHdlcmUgZGVs ZXRlZCBieSB0cmFuc2FjdGlvbnMgdGhhdCBjb21taXR0ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBz bmFwc2hvdCB3YXMgdGFrZW4uCgpUbyBhZGRyZXNzIHRoaXMsIHRoZSB2YWxpZGF0aW9uIHByb2Nl c3Mgbm93IHBlcmlvZGljYWxseSByZXBsYWNlcyB0aGUgc25hcHNob3Qgd2l0aCBhIG5ld2VyIG9u ZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGluZGV4J3MgeG1pbiBpcyBrZXB0IHVwLXRvLWRhdGUg YW5kIHRoYXQgYWxsIHJlbGV2YW50IHR1cGxlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGluZGV4Lgot LS0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgfCAxMSArKystCiBk b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAgICAgICAgIHwgMTEgKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8IDc3ICsrKysrKysrKysrKysrKy0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgIHwgMTIgKysrLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8IDE0ICsrKy0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy90cmFuc2FtLmggICAgICAgICAgICAgfCAxNSArKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA5 NyBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXgu c2dtbAppbmRleCBlMzMzNDVmNmEzNC4uNTQ1NjYyMjNjYjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf aW5kZXguc2dtbApAQCAtODY4LDkgKzg2OCwxNCBAQCBJbmRleGVzOgogICA8L3BhcmE+CiAKICAg PHBhcmE+Ci0gICBMaWtlIGFueSBsb25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIDxjb21tYW5kPkNS RUFURSBJTkRFWDwvY29tbWFuZD4gb24gYQotICAgdGFibGUgY2FuIGFmZmVjdCB3aGljaCB0dXBs ZXMgY2FuIGJlIHJlbW92ZWQgYnkgY29uY3VycmVudAotICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21t YW5kPiBvbiBhbnkgb3RoZXIgdGFibGUuCisgICBEdWUgdG8gdGhlIGltcHJvdmVkIGltcGxlbWVu dGF0aW9uIHVzaW5nIHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGFuZAorICAgYXV4 aWxpYXJ5IGluZGV4ZXMsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGhhdmUgbWluaW1hbCBpbXBh Y3Qgb24gY29uY3VycmVudAorICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvcGVyYXRpb25z LiBUaGUgc3lzdGVtIGF1dG9tYXRpY2FsbHkgYWR2YW5jZXMgaXRzCisgICBpbnRlcm5hbCB0cmFu c2FjdGlvbiBob3Jpem9uIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcywgYWxsb3dpbmcKKyAgIDxj b21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gdG8gcmVtb3ZlIGRlYWQgdHVwbGVzIG9uIG90aGVyIHRh YmxlcyB3aXRob3V0CisgICBoYXZpbmcgdG8gd2FpdCBmb3IgdGhlIGVudGlyZSBpbmRleCBidWls ZCB0byBjb21wbGV0ZS4gT25seSBkdXJpbmcgdmVyeSBicmllZgorICAgcGVyaW9kcyB3aGVuIHNu YXBzaG90cyBhcmUgYmVpbmcgcmVmcmVzaGVkIG1pZ2h0IHRoZXJlIGJlIGFueSB0ZW1wb3Jhcnkg ZWZmZWN0CisgICBvbiBjb25jdXJyZW50IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gb3BlcmF0 aW9ucy4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRleCA2YTA1 NjIwYmQ2Ny4uNjRjNjMzZTAzOTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRl eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC00OTUsMTAgKzQ5 NSwxMyBAQCBJbmRleGVzOgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBMaWtlIGFueSBs b25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIDxjb21tYW5kPlJFSU5ERVg8L2NvbW1hbmQ+IG9uIGEg dGFibGUKLSAgICBjYW4gYWZmZWN0IHdoaWNoIHR1cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25j dXJyZW50Ci0gICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvbiBhbnkgb3RoZXIgdGFibGUu Ci0gICA8L3BhcmE+CisgICAgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+ IGhhcyBtaW5pbWFsCisgICAgaW1wYWN0IG9uIHdoaWNoIHR1cGxlcyBjYW4gYmUgcmVtb3ZlZCBi eSBjb25jdXJyZW50IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4KKyAgICBvcGVyYXRpb25zIG9u IG90aGVyIHRhYmxlcy4gVGhpcyBpcyBhY2hpZXZlZCB0aHJvdWdoIHBlcmlvZGljIHNuYXBzaG90 CisgICAgcmVmcmVzaGVzIGFuZCB0aGUgdXNlIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZyB0 aGUgcmVidWlsZCBwcm9jZXNzLAorICAgIGFsbG93aW5nIHRoZSBzeXN0ZW0gdG8gYWR2YW5jZSBp dHMgdHJhbnNhY3Rpb24gaG9yaXpvbiByZWd1bGFybHkgcmF0aGVyIHRoYW4KKyAgICBtYWludGFp bmluZyBhIHNpbmdsZSBsb25nLXJ1bm5pbmcgc25hcHNob3QuCisgIDwvcGFyYT4KIAogICAgPHBh cmE+CiAgICAgPGNvbW1hbmQ+UkVJTkRFWCBTWVNURU08L2NvbW1hbmQ+IGRvZXMgbm90IHN1cHBv cnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDk2YzA0ZTlh ZGQ3Li5mODM5MzRjZjZkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCkBAIC0xNzkxLDggKzE3OTEsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKi8KIHN0YXRpYyBpbnQKIGhlYXBhbV9pbmRleF92YWxp ZGF0ZV90dXBsZXNvcnRfZGlmZmVyZW5jZShUdXBsZXNvcnRzdGF0ZSAgKm1haW4sCi0JCQkJCQkJ CQkJICAgVHVwbGVzb3J0c3RhdGUgICphdXgsCi0JCQkJCQkJCQkJICAgVHVwbGVzdG9yZXN0YXRl ICpzdG9yZSkKKwkJCQkJCQkJCSAgVHVwbGVzb3J0c3RhdGUgICphdXgsCisJCQkJCQkJCQkgIFR1 cGxlc3RvcmVzdGF0ZSAqc3RvcmUpCiB7CiAJaW50CQkJCW51bSA9IDA7CiAJLyogc3RhdGUgdmFy aWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KQEAgLTIwNTAsNyArMjA1MCw4IEBAIGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHByQ29udGV4dAkJKmVj b250ZXh0OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0 ZWd5KEJBU19CVUxLUkVBRCk7CiAKLQlpbnQJCQkJbnVtX3RvX2NoZWNrOworCWludAkJCQludW1f dG9fY2hlY2ssCisJCQkJCXBhZ2VfcmVhZF9jb3VudGVyID0gMTsgLyogc2V0IHRvIDEgdG8gc2tp cCBzbmFwc2hvdCByZXNlcnQgYXQgc3RhcnQgKi8KIAlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc19m b3JfY2hlY2s7CiAJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2RhdGE7 CiAKQEAgLTIwNjEsOSArMjA2MiwzNSBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJLyogVXNlIDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3Jl LiAqLwogCWludAkJc3RvcmVfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8g MTA7CiAKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwor CXR1cGxlc19mb3JfY2hlY2sgPSAgdHVwbGVzdG9yZV9iZWdpbl9kYXR1bShJTlQ4T0lELCBmYWxz ZSwgZmFsc2UsIHN0b3JlX3dvcmtfbWVtX3BhcnQpOworCisJUG9wQWN0aXZlU25hcHNob3QoKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKKwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVk T3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCiAJLyoKLQkgKiBOb3cgdGFrZSB0aGUgc25hcHNob3QgdGhhdCB3aWxsIGJl IHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRpZGF0ZQotCSAqIHR1cGxlcy4KKwkgKiBzYW5pdHkgY2hl Y2tzCisJICovCisJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxh bSkpOworCisJbnVtX3RvX2NoZWNrID0gaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9k aWZmZXJlbmNlKHN0YXRlLT50dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCQkgIGF1eFN0YXRlLT50 dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCQkgIHR1cGxlc19mb3JfY2hlY2spOworCisJLyogSXQg aXMgb3VyIHJlc3BvbnNpYmlsaXR5IHRvIHNsb2UgdHVwbGUgc29ydCBhcyBmYXN0IGFzIHdlIGNh biAqLworCXR1cGxlc29ydF9lbmQoc3RhdGUtPnR1cGxlc29ydCk7CisJdHVwbGVzb3J0X2VuZChh dXhTdGF0ZS0+dHVwbGVzb3J0KTsKKworCXN0YXRlLT50dXBsZXNvcnQgPSBhdXhTdGF0ZS0+dHVw bGVzb3J0ID0gTlVMTDsKKworCS8qCisJICogTm93IHRha2UgdGhlIGZpcnN0IHNuYXBzaG90IHRo YXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUKKwkgKiB0dXBsZXMuIFdlIGFy ZSBnb2luZyB0byByZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuCisJ ICogdG8gcHJvcGFnYXRlIGhvcml6b24uCiAJICoKIAkgKiBCZXdhcmUhICBUaGVyZSBtaWdodCBz dGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbgogCSAq IGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFwc2hvdCB0cmVhdHMgYXMgY29t bWl0dGVkLgpAQCAtMjA3OSwzMyArMjEwNiwxMCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3Qg dG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKIAkgKiBuZWVkIGEg c25hcHNob3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNu YXBzaG90KCkpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAJbGltaXRYbWluID0g c25hcHNob3QtPnhtaW47CiAKLQkvKgotCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwotCSAqIGl0ZW0gcG9pbnRl cnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2Ug VElECi0JICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdo ZXJlYXMgaW50OCBpcwotCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCi0JICov Ci0JdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhPSUQsIGZh bHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7Ci0KLQkvKgotCSAqIHNhbml0eSBjaGVj a3MKLQkgKi8KLQlBc3NlcnQoT2lkSXNWYWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFt KSk7Ci0KLQludW1fdG9fY2hlY2sgPSBoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0X2Rp ZmZlcmVuY2Uoc3RhdGUtPnR1cGxlc29ydCwKLQkJCQkJCQkJCQkJCQkJIGF1eFN0YXRlLT50dXBs ZXNvcnQsCi0JCQkJCQkJCQkJCQkJCSB0dXBsZXNfZm9yX2NoZWNrKTsKLQotCS8qIEl0IGlzIG91 ciByZXNwb25zaWJpbGl0eSB0byBzbG9lIHR1cGxlIHNvcnQgYXMgZmFzdCBhcyB3ZSBjYW4gKi8K LQl0dXBsZXNvcnRfZW5kKHN0YXRlLT50dXBsZXNvcnQpOwotCXR1cGxlc29ydF9lbmQoYXV4U3Rh dGUtPnR1cGxlc29ydCk7Ci0KLQlzdGF0ZS0+dHVwbGVzb3J0ID0gYXV4U3RhdGUtPnR1cGxlc29y dCA9IE5VTEw7Ci0KIAllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQg PSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBs ZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCkBAIC0yMTQyLDYgKzIx NDYsNyBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJYmxvY2tfbnVtYmVy ID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKKwkJcGFnZV9yZWFkX2NvdW50ZXIrKzsKIAog CQlpID0gMDsKIAkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1i ZXIpCkBAIC0yMTk2LDYgKzIyMDEsMjAgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCQl9CiAKIAkJUmVsZWFzZUJ1ZmZlcihidWYpOworCisJCWlm IChwYWdlX3JlYWRfY291bnRlciAlIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDAp CisJCXsKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOworCQkJLyogdG8gbWFrZSBzdXJlIHdlIHByb3BhZ2F0ZSB4bWluICovCisJCQlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCisJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0 ZXN0U25hcHNob3QoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQkJLyog eG1pbiBzaG91bGQgbm90IGdvIGJhY2t3YXJkcywgYnV0IGp1c3QgZm9yIHRoZSBjYXNlKi8KKwkJ CWxpbWl0WG1pbiA9IFRyYW5zYWN0aW9uSWROZXdlcihsaW1pdFhtaW4sIHNuYXBzaG90LT54bWlu KTsKKwkJfQogCX0KIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDhiMjM2YzhjY2Q2Li42MmU5NzUwMTZhZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTQ0NCw3ICs0NDQsNyBAQCBfYnRf c3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsCiAJICogZGVhZCB0dXBsZXMpIHdvbid0IGdldCB2ZXJ5IGZ1bGwsIHNv IHdlIGdpdmUgaXQgb25seSB3b3JrX21lbS4KIAkgKgogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVu dCBidWlsZCBkZWFkIHR1cGxlcyBhcmUgbm90IG5lZWQgdG8gYmUgcHV0IGludG8gaW5kZXgKLQkg KiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9sZGVyIHRoYW4gcmVmZXJlbmNlIHNu YXBzaG90IGR1cmluZyB0aGUKKwkgKiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9s ZGVyIHRoYW4gbGF0ZXN0IHNuYXBzaG90IGR1cmluZyB0aGUKIAkgKiB2YWxpZGF0aW9uIHBoYXNl LgogCSAqLwogCWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggODk0YWVmYTE5 ZTEuLjZhNmIxZjg3OTdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAg LTE5MCwxNCArMTkwLDE2IEBAIHZhY3V1bUxlYWZQYWdlKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRz LCBSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlciwKIAkJCSAqIEFkZCB0YXJnZXQgVElEIHRv IHBlbmRpbmcgbGlzdCBpZiB0aGUgcmVkaXJlY3Rpb24gY291bGQgaGF2ZQogCQkJICogaGFwcGVu ZWQgc2luY2UgVkFDVVVNIHN0YXJ0ZWQuICAoSWYgeGlkIGlzIGludmFsaWQsIGFzc3VtZSBpdAog CQkJICogbXVzdCBoYXZlIGhhcHBlbmVkIGJlZm9yZSBWQUNVVU0gc3RhcnRlZCwgc2luY2UgUkVJ TkRFWAotCQkJICogQ09OQ1VSUkVOVExZIGxvY2tzIG91dCBWQUNVVU0uKQorCQkJICogQ09OQ1VS UkVOVExZIGxvY2tzIG91dCBWQUNVVU0sIGlmIG15WG1pbiBpcyBpbnZhbGlkIGl0IGlzCisJCQkg KiB2YWxpZGF0aW9uIHNjYW4uKQogCQkJICoKIAkJCSAqIE5vdGU6IHdlIGNvdWxkIG1ha2UgYSB0 aWdodGVyIHRlc3QgYnkgc2VlaW5nIGlmIHRoZSB4aWQgaXMKIAkJCSAqICJydW5uaW5nIiBhY2Nv cmRpbmcgdG8gdGhlIGFjdGl2ZSBzbmFwc2hvdDsgYnV0IHNuYXBtZ3IuYwogCQkJICogZG9lc24n dCBjdXJyZW50bHkgZXhwb3J0IGEgc3VpdGFibGUgQVBJLCBhbmQgaXQncyBub3QgZW50aXJlbHkK IAkJCSAqIGNsZWFyIHRoYXQgYSB0aWdodGVyIHRlc3QgaXMgd29ydGggdGhlIGN5Y2xlcyBhbnl3 YXkuCiAJCQkgKi8KLQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQs IGJkcy0+bXlYbWluKSkKKwkJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYmRzLT5teVhtaW4p IHx8CisJCQkJCVRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoZHQtPnhpZCwgYmRzLT5teVht aW4pKQogCQkJCXNwZ0FkZFBlbmRpbmdUSUQoYmRzLCAmZHQtPnBvaW50ZXIpOwogCQl9CiAJCWVs c2UKQEAgLTgxMSw3ICs4MTMsNiBAQCBzcGd2YWN1dW1zY2FuKHNwZ0J1bGtEZWxldGVTdGF0ZSAq YmRzKQogCS8qIEZpbmlzaCBzZXR0aW5nIHVwIHNwZ0J1bGtEZWxldGVTdGF0ZSAqLwogCWluaXRT cEdpc3RTdGF0ZSgmYmRzLT5zcGdzdGF0ZSwgaW5kZXgpOwogCWJkcy0+cGVuZGluZ0xpc3QgPSBO VUxMOwotCWJkcy0+bXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsKIAliZHMtPmxh c3RGaWxsZWRCbG9jayA9IFNQR0lTVF9MQVNUX0ZJWEVEX0JMS05POwogCiAJLyoKQEAgLTkyNSw2 ICs5MjYsMTAgQEAgc3BnYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJYmRzLnN0YXRzID0gc3RhdHM7CiAJYmRzLmNhbGxiYWNr ID0gY2FsbGJhY2s7CiAJYmRzLmNhbGxiYWNrX3N0YXRlID0gY2FsbGJhY2tfc3RhdGU7CisJaWYg KGluZm8tPnZhbGlkYXRlX2luZGV4KQorCQliZHMubXlYbWluID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisJZWxzZQorCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsKIAog CXNwZ3ZhY3V1bXNjYW4oJmJkcyk7CiAKQEAgLTk2NSw2ICs5NzAsNyBAQCBzcGd2YWN1dW1jbGVh bnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykK IAkJYmRzLnN0YXRzID0gc3RhdHM7CiAJCWJkcy5jYWxsYmFjayA9IGR1bW15X2NhbGxiYWNrOwog CQliZHMuY2FsbGJhY2tfc3RhdGUgPSBOVUxMOworCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25h cHNob3QoKS0+eG1pbjsKIAogCQlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YwppbmRleCAzYTg5ZDE4NTA1Yy4uMTk0M2RkNDYyNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM0 NzcsOCArMzQ3Nyw5IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50 IHdlIGNsZWFyICJpbmRpc3JlYWR5IiBmb3IKICAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQg aXMgbm8gbW9yZSByZXF1aXJlZC4KICAqCi0gKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNl IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwotICogdG8gdGhp cyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGlu ZGV4LgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJl IHZhbGlkIGFjY29yZGluZworICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5k ZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LiBJbgorICogb3JkZXIgdG8gcHJvcGFnYXRl IHhtaW4gd2UgcmVzZXQgdGhhdCBzbmFwc2hvdCBldmVyeSBmZXcgc28gb2Z0ZW4uCiAgKiAoQW55 IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2VydGVkIGlu dG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4gIEFueSB0 dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCiAgKiB0aGUgc25hcCBuZWVkIG5vdCBiZSBpbmRl eGVkLCBiZWNhdXNlIHdlIHdpbGwgd2FpdCBvdXQgYWxsIHRyYW5zYWN0aW9ucwpAQCAtMzQ5MSw3 ICszNDkyLDcgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAg KiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRvaW5nIGEg Im1lcmdlIGpvaW4iIGFnYWluc3QKICAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNoIHR1cGxl cyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQogICogdGFyZ2V0IGlu ZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5n IHRvIHRoZQotICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5vdGljZSB3 ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBsYXRlc3Qgc25hcHNob3QgYXJlIGlu IHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKICAqIHBh cnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxhc3QuCiAgKgogICogQnVp bGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3ZSBtaWdodCB0cnkgdG8g aW5zZXJ0IGEKQEAgLTM1NzQsNiArMzU3NSw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQs IE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkgKi8KIAlQdXNoQWN0aXZlU25hcHNob3Qo R2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhp bmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogbWFyayBidWlsZCBp cyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5kZXhJbmZvLT5paV9Db25j dXJyZW50ID0gdHJ1ZTsKQEAgLTM2MDksNiArMzYxMSw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkJCQkJCQkJCQkgICBOVUxMLCBU VVBMRVNPUlRfTk9ORSk7CiAJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0 YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSBy ZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7 CisKIAkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKIAkJCQkJCQkg dmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CiAKQEAgLTM2MzgsOSArMzY0Myw2 IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJ ZCkKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxlc29ydCk7CiAJdHVwbGVz b3J0X3BlcmZvcm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7Ci0KLQlQb3BBY3RpdmVTbmFwc2hv dCgpOwotCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAlBc3NlcnQoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMK aW5kZXggY2QwZDYzZGVkODIuLmUxMGY2MDk4ZjU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwpAQCAtNDM1NCw3ICs0MzU0LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyoKIAkJ ICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBjb250YWlucyBh bGwgY3VycmVudGx5CiAJCSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdo dCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAotCQkgKiBqdXN0IGJlZm9yZSB0aGUgcmVmZXJl bmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQorCQkgKiBqdXN0IGJl Zm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQog CQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkJICoK IAkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMgdHJh bnNhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCAwY2FiODY1M2YxYi4uM2Q4ZGI5OThjMGIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzU1LDYgKzM1NSwyMSBAQCBOb3JtYWxUcmFuc2FjdGlv bklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlvbklkIGIpCiAJcmV0dXJuIGI7CiB9 CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJRHMgKi8KK3N0YXRpYyBpbmxpbmUg VHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5ld2VyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNh Y3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYSkpCisJCXJldHVybiBi OworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiKSkKKwkJcmV0dXJuIGE7CisKKwlpZiAo VHJhbnNhY3Rpb25JZEZvbGxvd3MoYSwgYikpCisJCXJldHVybiBhOworCXJldHVybiBiOworfQor CiAvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURzICovCiBzdGF0aWMgaW5saW5lIEZ1 bGxUcmFuc2FjdGlvbklkCiBGdWxsVHJhbnNhY3Rpb25JZE5ld2VyKEZ1bGxUcmFuc2FjdGlvbklk IGEsIEZ1bGxUcmFuc2FjdGlvbklkIGIpCi0tIAoyLjQzLjAKCg== --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0010-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Disposition: attachment; filename="v13-0010-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauoa9 RnJvbSA4M2RiMjVkZjQ2ZjllNzYzNDg3ZDdjYzE2N2NlYjA2NWI3ZjI5M2RjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDEw LzExXSBBZGQgcHJvcGVyIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZwogRFJP UC9SRUlOREVYIG9wZXJhdGlvbnMKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMs IGFuIGF1eGlsaWFyeSBpbmRleCBtYXkgYmUgY3JlYXRlZCB0byBoZWxwCndpdGggdGhlIHByb2Nl c3MuIEluIGNhc2Ugb2YgZXJyb3IgZHVyaW5nIHRoZSBidWlsZGluZyBwcm9jZXNzIChmb3IgZXhh bXBsZSBpbiBjYXNlIG9mIGluZGV4IGNvbnN0cmFpbnQgdmlvbGF0aW9uKSBzdWNoIGluZGV4ZXMg YmVjYW1lIGp1bmstaW5kZXhlcyB3aXRob3V0IGFueSBmdW5jdGlvbi4gVGhpcyBwYXRjaCBpbXBy b3ZlcyB0aGUgaGFuZGxpbmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKCiogQWRkIGF1eGls aWFyeUZvckluZGV4SWQgcGFyYW1ldGVyIHRvIGluZGV4X2NyZWF0ZSgpIHRvIHRyYWNrIGRlcGVu ZGVuY2llcwoqIEF1dG9tYXRpY2FsbHkgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBt YWluIGluZGV4IGlzIGRyb3BwZWQKKiBEZWxldGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9w ZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRpb25zCiogQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8g dmVyaWZ5IG5ldyBiZWhhdmlvdXIKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sICAgICAgICAgfCAgMTQgKystCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAg ICAgICAgICAgfCAgMTkgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAg ICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAg ICAgfCAgNjQgKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAg ICAgICAgICAgIHwgIDU3ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j ICAgICAgICAgICB8ICAzNSArKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyAgICAgICAgICAgfCAgNDggKysrKysrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQgfCAxMDUgKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9j cmVhdGVfaW5kZXguc3FsICAgICAgfCAgNTcgKysrKysrKysrKy0KIDEyIGZpbGVzIGNoYW5nZWQs IDM2MyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5k ZXguc2dtbAppbmRleCA1NDU2NjIyM2NiMC4uZmI3Y2QxNWY1ZmUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbApAQCAtNjYxLDEwICs2NjEsMTYgQEAgSW5kZXhlczoKICAgICAiaWR4X2Nj YXV4IiBzdGlyIChjb2wpIElOVkFMSUQKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKLSAgICBUaGUgcmVj b21tZW5kZWQgcmVjb3ZlcnkKLSAgICBtZXRob2QgaW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRo ZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRF IElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCi0g ICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNV UlJFTlRMWTwvY29tbWFuZD4pLgorICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZSBpbmRleCB3aXRoCisgICAgPGNvbW1hbmQ+RFJP UCBJTkRFWDwvY29tbWFuZD4uIFRoZSBhdXhpbGlhcnkgaW5kZXggKHN1ZmZpeGVkIHdpdGgKKyAg ICA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVk IHdoZW4gdGhlIG1haW4KKyAgICBpbmRleCBpcyBkcm9wcGVkLiBBZnRlciBkcm9wcGluZyB0aGUg aW5kZXhlcywgeW91IGNhbiB0cnkgYWdhaW4gdG8gcGVyZm9ybQorICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0 bworICAgIHJlYnVpbGQgdGhlIGluZGV4IHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LAorICAgIHdoaWNoIHdpbGwgYWxzbyBoYW5kbGUgY2xlYW51cCBv ZiBhbnkgaW52YWxpZCBhdXhpbGlhcnkgaW5kZXhlcy4pCisgICAgSWYgdGhlIG9ubHkgaW52YWxp ZCBpbmRleCBpcyBvbmUgc3VmZml4ZWQgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+CisgICAgcmVj b21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGlzIGp1c3QgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4KKyAgICBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCmluZGV4IDY0YzYzM2UwMzk4Li5jNmRiNWQ1NzE2NyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKQEAgLTQ3NCwxNCArNDc0LDE3IEBAIEluZGV4ZXM6CiA8L3Byb2dyYW1saXN0aW5n PgogCiAgICAgSWYgdGhlIGluZGV4IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBp cyBzdWZmaXhlZAotICAgIDxsaXRlcmFsPmNjbmV3PC9saXRlcmFsIG9yIDxsaXRlcmFsPmNjYXV4 PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9yIGF1eGls aWFyeQotICAgIGluZGV4IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbiwg YW5kIHRoZSByZWNvbW1lbmRlZAotICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIHRoZXNl IGluZGV4ZXMgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCi0gICAgdGhlbiBh dHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4KLSAg ICBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZpeGVkIDxsaXRlcmFsPmNjb2xk PC9saXRlcmFsPiwKLSAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hp Y2ggY291bGQgbm90IGJlIGRyb3BwZWQ7Ci0gICAgdGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1l dGhvZCBpcyB0byBqdXN0IGRyb3Agc2FpZCBpbmRleCwgc2luY2UgdGhlCi0gICAgcmVidWlsZCBw cm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4KKyAgICA8bGl0ZXJhbD5jY25ldzwvbGl0ZXJhbD4s IHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBpbmRleAorICAgIGNyZWF0ZWQg ZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbi4gVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5 CisgICAgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4sIHRoZW4gYXR0ZW1wdAorICAgIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9j b21tYW5kPiBhZ2Fpbi4gVGhlIGF1eGlsaWFyeSBpbmRleAorICAgIChzdWZmaXhlZCB3aXRoIDxs aXRlcmFsPmNjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQKKyAg ICBhbG9uZyB3aXRoIGl0cyBtYWluIGluZGV4LiBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0 ZWFkIHN1ZmZpeGVkCisgICAgPGxpdGVyYWw+Y2NvbGQ8L2xpdGVyYWw+LCBpdCBjb3JyZXNwb25k cyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2gKKyAgICBjb3VsZCBub3QgYmUgZHJvcHBlZDsg dGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBqdXN0IGRyb3AKKyAgICBzYWlk IGluZGV4LCBzaW5jZSB0aGUgcmVidWlsZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4gSWYg dGhlIG9ubHkKKyAgICBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1 eDwvbGl0ZXJhbD4gcmVjb21tZW5kZWQKKyAgICByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0 ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAog ICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDA5NmI2OGM3ZjM5Li4xYzJj ZmM5NGI1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTI4Niw3ICsyODYsNyBAQCBw ZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCSAqIEFjcXVpcmUg ZGVsZXRpb24gbG9jayBvbiB0aGUgdGFyZ2V0IG9iamVjdC4gIChJZGVhbGx5IHRoZSBjYWxsZXIg aGFzCiAJICogZG9uZSB0aGlzIGFscmVhZHksIGJ1dCBtYW55IHBsYWNlcyBhcmUgc2xvcHB5IGFi b3V0IGl0LikKIAkgKi8KLQlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgMCk7CisJQWNxdWly ZURlbGV0aW9uTG9jayhvYmplY3QsIGZsYWdzKTsKIAogCS8qCiAJICogQ29uc3RydWN0IGEgbGlz dCBvZiBvYmplY3RzIHRvIGRlbGV0ZSAoaWUsIHRoZSBnaXZlbiBvYmplY3QgcGx1cwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCmluZGV4IDE5NDNkZDQ2MjQzLi5iN2Q0MmM2OTY1ZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpA QCAtNjg3LDYgKzY4Nyw4IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJ CXBhcmVudCBpbmRleDsgb3RoZXJ3aXNlIEludmFsaWRPaWQuCiAgKiBwYXJlbnRDb25zdHJhaW50 SWQ6IGlmIGNyZWF0aW5nIGEgY29uc3RyYWludCBvbiBhIHBhcnRpdGlvbiwgdGhlIE9JRAogICoJ CW9mIHRoZSBjb25zdHJhaW50IGluIHRoZSBwYXJlbnQ7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgor ICogYXV4aWxpYXJ5Rm9ySW5kZXhJZDogaWYgY3JlYXRpbmcgYXV4aWxpYXJ5IGluZGV4LCB0aGUg T0lEIG9mIHRoZSBtYWluCisgKgkJaW5kZXg7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgogICogcmVs RmlsZU51bWJlcjogbm9ybWFsbHksIHBhc3MgSW52YWxpZFJlbEZpbGVOdW1iZXIgdG8gZ2V0IG5l dyBzdG9yYWdlLgogICoJCU1heSBiZSBub256ZXJvIHRvIGF0dGFjaCBhbiBleGlzdGluZyB2YWxp ZCBidWlsZC4KICAqIGluZGV4SW5mbzogc2FtZSBpbmZvIGV4ZWN1dG9yIHVzZXMgdG8gaW5zZXJ0 IGludG8gdGhlIGluZGV4CkBAIC03MzMsNiArNzM1LDcgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCSBPaWQgaW5kZXhSZWxhdGlvbklkLAogCQkJIE9pZCBwYXJlbnRJ bmRleFJlbGlkLAogCQkJIE9pZCBwYXJlbnRDb25zdHJhaW50SWQsCisJCQkgT2lkIGF1eGlsaWFy eUZvckluZGV4SWQsCiAJCQkgUmVsRmlsZU51bWJlciByZWxGaWxlTnVtYmVyLAogCQkJIEluZGV4 SW5mbyAqaW5kZXhJbmZvLAogCQkJIGNvbnN0IExpc3QgKmluZGV4Q29sTmFtZXMsCkBAIC03NzUs NiArNzc4LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICAgKChm bGFncyAmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCkgIT0gMCkpOwogCS8qIHBhcnRpdGlv bmVkIGluZGV4ZXMgbXVzdCBuZXZlciBiZSAiYnVpbHQiIGJ5IHRoZW1zZWx2ZXMgKi8KIAlBc3Nl cnQoIXBhcnRpdGlvbmVkIHx8IChmbGFncyAmIElOREVYX0NSRUFURV9TS0lQX0JVSUxEKSk7CisJ LyogYXV4aWxpYXJ5Rm9ySW5kZXhJZCBhbmQgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSBhcmUgcmVx dWlyZWQgYm90aCBvciBuZWl0aGVyICovCisJQXNzZXJ0KE9pZElzVmFsaWQoYXV4aWxpYXJ5Rm9y SW5kZXhJZCkgPT0gYXV4aWxpYXJ5KTsKIAogCXJlbGtpbmQgPSBwYXJ0aXRpb25lZCA/IFJFTEtJ TkRfUEFSVElUSU9ORURfSU5ERVggOiBSRUxLSU5EX0lOREVYOwogCWlzX2V4Y2x1c2lvbiA9IChp bmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKTsKQEAgLTExNzYsNiArMTE4MSwxNSBA QCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJcmVjb3JkRGVwZW5kZW5j eU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX1BBUlRJVElPTl9TRUMpOwogCQl9 CiAKKwkJLyoKKwkJICogUmVjb3JkIGRlcGVuZGVuY3kgb24gdGhlIG1haW4gaW5kZXggaW4gY2Fz ZSBvZiBhdXhpbGlhcnkgaW5kZXguCisJCSAqLworCQlpZiAoT2lkSXNWYWxpZChhdXhpbGlhcnlG b3JJbmRleElkKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlv blJlbGF0aW9uSWQsIGF1eGlsaWFyeUZvckluZGV4SWQpOworCQkJcmVjb3JkRGVwZW5kZW5jeU9u KCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCQl9CisKIAkJLyogcGxh Y2Vob2xkZXIgZm9yIG5vcm1hbCBkZXBlbmRlbmNpZXMgKi8KIAkJYWRkcnMgPSBuZXdfb2JqZWN0 X2FkZHJlc3NlcygpOwogCkBAIC0xNDU4LDYgKzE0NzIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlf Y3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJ CQkgIEludmFsaWRPaWQsCS8qIGluZGV4UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9p ZCwJLyogcGFyZW50SW5kZXhSZWxpZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogcGFyZW50 Q29uc3RyYWludElkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBhdXhpbGlhcnlGb3JJbmRl eElkICovCiAJCQkJCQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAq LwogCQkJCQkJCSAgbmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0xNjA4LDYg KzE2MjMsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBtYWluSW5kZXhJZCwKIAkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIGluZGV4 UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50SW5kZXhSZWxp ZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3RyYWludElkICovCisJ CQkJCQkJICBtYWluSW5kZXhJZCwgICAvKiBhdXhpbGlhcnlGb3JJbmRleElkICovCiAJCQkJCQkJ ICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAqLwogCQkJCQkJCSAgbmV3 SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0zODI0LDYgKzM4NDAsNyBAQCByZWlu ZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJCQloZWFw UmVsYXRpb247CiAJT2lkCQkJaGVhcElkOwogCU9pZAkJCXNhdmVfdXNlcmlkOworCU9pZAkJCWp1 bmtBdXhJbmRleElkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0 bGV2ZWw7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtMzg4MCw2ICszODk3LDE5IEBAIHJl aW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIHByb2dyZXNzX2NvbHMsIHByb2dyZXNz X3ZhbHMpOwogCX0KIAorCS8qIENoZWNrIGZvciB0aGUgYXV4aWxpYXJ5IGluZGV4IGZvciB0aGF0 IGluZGV4LCBpdCBuZWVkcyB0byBkcm9wcGVkICovCisJanVua0F1eEluZGV4SWQgPSBnZXRfYXV4 aWxpYXJ5X2luZGV4KGluZGV4SWQpOworCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkK Kwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9u UmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdElkID0ganVua0F1eEluZGV4SWQ7CisJCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RS SUNULAorCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQkJCSBQRVJG T1JNX0RFTEVUSU9OX1FVSUVUTFkpOworCX0KKwogCS8qCiAJICogT3BlbiB0aGUgdGFyZ2V0IGlu ZGV4IHJlbGF0aW9uIGFuZCBnZXQgYW4gZXhjbHVzaXZlIGxvY2sgb24gaXQsIHRvCiAJICogZW5z dXJlIHRoYXQgbm8gb25lIGVsc2UgaXMgdG91Y2hpbmcgdGhpcyBwYXJ0aWN1bGFyIGluZGV4LgpA QCAtNDE2OCw3ICs0MTk4LDggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiB7CiAJUmVsYXRpb24JcmVsOwogCU9pZAkJCXRv YXN0X3JlbGlkOwotCUxpc3QJICAgKmluZGV4SWRzOworCUxpc3QJICAgKmluZGV4SWRzLAorCQkJ ICAgKmF1eEluZGV4SWRzID0gTklMOwogCWNoYXIJCXBlcnNpc3RlbmNlOwogCWJvb2wJCXJlc3Vs dCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmluZGV4SWQ7CkBAIC00MjU3LDEzICs0Mjg4LDMwIEBA IHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50 IGZsYWdzLAogCWVsc2UKIAkJcGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVu Y2U7CiAKKwlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQorCXsKKwkJT2lkCQkJaW5kZXhPaWQg PSBsZmlyc3Rfb2lkKGluZGV4SWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShp bmRleE9pZCk7CisKKwkJLyogQWxsIFNUSVIgaW5kZXhlcyBhcmUgYXV4aWxpYXJ5IGluZGV4ZXMg Ki8KKwkJaWYgKGluZGV4QW0gPT0gU1RJUl9BTV9PSUQpCisJCXsKKwkJCWlmIChmbGFncyAmIFJF SU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhp bmRleE9pZCk7CisJCQlhdXhJbmRleElkcyA9IGxhcHBlbmRfb2lkKGF1eEluZGV4SWRzLCBpbmRl eE9pZCk7CisJCX0KKwl9CisKIAkvKiBSZWluZGV4IGFsbCB0aGUgaW5kZXhlcy4gKi8KIAlpID0g MTsKIAlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBs Zmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlkID0gZ2V0X3JlbF9u YW1lc3BhY2UoaW5kZXhPaWQpOwotCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShpbmRl eE9pZCk7CisKKwkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIGdvaW5nIHRvIGJlIGRyb3BwZWQg ZHVyaW5nIG1haW4gaW5kZXggcmVidWlsZCAqLworCQlpZiAobGlzdF9tZW1iZXJfb2lkKGF1eElu ZGV4SWRzLCBpbmRleE9pZCkpCisJCQljb250aW51ZTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBp bnZhbGlkIGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00 Mjg5LDE4ICs0MzM3LDYgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChpbmRl eEFtID09IFNUSVJfQU1fT0lEKQotCQl7Ci0JCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1zZygic2tpcHBp bmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKLQkJCQkJCQlnZXRfbmFt ZXNwYWNlX25hbWUoaW5kZXhOYW1lc3BhY2VJZCksCi0JCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4 T2lkKSkpKTsKLQkJCWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkK LQkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhpbmRleE9pZCk7Ci0JCQljb250aW51ZTsKLQkJfQot CiAJCXJlaW5kZXhfaW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9D SEVDS19DT05TVFJBSU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCmluZGV4IGM4YjExZjg4N2UyLi4xYzI3NWVmMzczZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCkBAIC0xMDM1LDYgKzEwMzUsNjMgQEAgZ2V0X2luZGV4X2NvbnN0cmFp bnQoT2lkIGluZGV4SWQpCiAJcmV0dXJuIGNvbnN0cmFpbnRJZDsKIH0KIAorLyoKKyAqIGdldF9h dXhpbGlhcnlfaW5kZXgKKyAqCQlHaXZlbiB0aGUgT0lEIG9mIGFuIGluZGV4LCByZXR1cm4gdGhl IE9JRCBvZiBpdHMgYXV4aWxpYXJ5CisgKgkJaW5kZXgsIG9yIEludmFsaWRPaWQgaWYgdGhlcmUg aXMgbm8gYXV4aWxpYXJ5IGluZGV4LgorICovCitPaWQKK2dldF9hdXhpbGlhcnlfaW5kZXgoT2lk IGluZGV4SWQpCit7CisJT2lkCQkJYXV4aWxpYXJ5SW5kZXhPaWQgPSBJbnZhbGlkT2lkOworCVJl bGF0aW9uCWRlcFJlbDsKKwlTY2FuS2V5RGF0YSBrZXlbM107CisJU3lzU2NhbkRlc2Mgc2NhbjsK KwlIZWFwVHVwbGUJdHVwOworCisJLyogU2VhcmNoIHRoZSBkZXBlbmRlbmN5IHRhYmxlIGZvciB0 aGUgaW5kZXggKi8KKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfZGVwZW5k X3JlZmNsYXNzaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9i amVjdElkR2V0RGF0dW0oUmVsYXRpb25SZWxhdGlvbklkKSk7CisJU2NhbktleUluaXQoJmtleVsx XSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmppZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShpbmRleElkKSk7CisJU2NhbktleUlu aXQoJmtleVsyXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmpzdWJpZCwKKwkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfSU5UNEVRLAorCQkJCUludDMyR2V0RGF0dW0oMCkpOworCisJc2Nh biA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZFJlZmVyZW5jZUluZGV4SWQsIHRy dWUsCisJCQkJCQkJICBOVUxMLCAzLCBrZXkpOworCisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxp ZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfZGVwZW5kIGRl cHJlYyA9IChGb3JtX3BnX2RlcGVuZCkgR0VUU1RSVUNUKHR1cCk7CisKKwkJLyoKKwkJICogV2Ug YXNzdW1lIGFueSBBVVRPIGRlcGVuZGVuY3kgb24gaW5kZXggd2l0aCByZWxfa2luZAorCQkgKiBv ZiBSRUxLSU5EX0lOREVYIGlzIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yLgorCQkgKi8KKwkJaWYg KGRlcHJlYy0+Y2xhc3NpZCA9PSBSZWxhdGlvblJlbGF0aW9uSWQgJiYKKwkJCShkZXByZWMtPmRl cHR5cGUgPT0gREVQRU5ERU5DWV9BVVRPKSAmJgorCQkJZ2V0X3JlbF9yZWxraW5kKGRlcHJlYy0+ b2JqaWQpID09IFJFTEtJTkRfSU5ERVgpCisJCXsKKwkJCWF1eGlsaWFyeUluZGV4T2lkID0gZGVw cmVjLT5vYmppZDsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2Fu KTsKKwl0YWJsZV9jbG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gYXV4 aWxpYXJ5SW5kZXhPaWQ7Cit9CisKIC8qCiAgKiBnZXRfaW5kZXhfcmVmX2NvbnN0cmFpbnRzCiAg KgkJR2l2ZW4gdGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBPSUQgb2YgYWxsIGZvcmVp Z24ga2V5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggMGVlMmZkNWU3ZGUuLjBlZThjYmY0Y2E2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMTksNyArMzE5LDcgQEAgY3JlYXRlX3RvYXN0 X3RhYmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlj b2xvcHRpb25zWzFdID0gMDsKIAogCWluZGV4X2NyZWF0ZSh0b2FzdF9yZWwsIHRvYXN0X2lkeG5h bWUsIHRvYXN0SW5kZXhPaWQsIEludmFsaWRPaWQsCi0JCQkJIEludmFsaWRPaWQsIEludmFsaWRP aWQsCisJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCiAJCQkJIGluZGV4 SW5mbywKIAkJCQkgbGlzdF9tYWtlMigiY2h1bmtfaWQiLCAiY2h1bmtfc2VxIiksCiAJCQkJIEJU UkVFX0FNX09JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYjk4ODUxYTllMzUuLmFi NmRiZDMyZDlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTIyNCw3ICsxMjI0LDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRl eF9jcmVhdGUocmVsLCBpbmRleFJlbGF0aW9uTmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJ bmRleElkLAotCQkJCQkgcGFyZW50Q29uc3RyYWludElkLAorCQkJCQkgcGFyZW50Q29uc3RyYWlu dElkLCBJbnZhbGlkT2lkLAogCQkJCQkgc3RtdC0+b2xkTnVtYmVyLCBpbmRleEluZm8sIGluZGV4 Q29sTmFtZXMsCiAJCQkJCSBhY2Nlc3NNZXRob2RJZCwgdGFibGVzcGFjZUlkLAogCQkJCQkgY29s bGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBvcGNsYXNzT3B0aW9ucywKQEAgLTM1OTMsNiArMzU5Myw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlPaWQJCQlpbmRleElkOwogCQlPaWQJ CQlhdXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsK IAkJT2lkCQkJYW1JZDsKIAl9IFJlaW5kZXhJbmRleEluZm87CkBAIC0zOTQxLDYgKzM5NDIsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJ CU9pZAkJCW5ld0luZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJ bmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lk CQkJc2F2ZV91c2VyaWQ7CkBAIC0zOTQ4LDYgKzM5NTAsNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJ CVJlbGF0aW9uCWF1eEluZGV4UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxv Y2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MDEwLDEy ICs0MDEzLDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJs ZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2Vh cmNoIGZvciBhdXhpbGlhcnkgaW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAq LworCQlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsK KwogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBz ZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQlu ZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVM b2NrKTsKIAkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1 bmtBdXhJbmRleFJlbCA9IGluZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2Nr cyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTQwMjUsNiArNDAzMyw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJ CW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1 eEluZGV4SWQ7CisJCW5ld2lkeC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CiAKQEAgLTQwNDUsMTAgKzQwNTQsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ bG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3JlbGlkID0gYXV4 SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBl bmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eElu ZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJ CQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJ CQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQl9 CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3Nl KGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJ CQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKGF1 eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsK IApAQCAtNDIwNSw3ICs0MjIyLDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCS8qCiAJ ICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5 LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJv cHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2Vz cyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1ZGluZworCSAqIGp1c3QgaW5k ZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQog CXsKQEAgLTQyMjQsNiArNDI0Miw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkJaW5kZXhf c2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFE WSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBhcyBub24tcmVhZHkgKi8KKwkJ aWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9zZXRfc3Rh dGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7 CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CkBAIC00NDA2LDYgKzQ0MjcsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAogCQlpbmRleF9jb25jdXJy ZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlp ZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X2NvbmN1cnJl bnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+anVua0F1eEluZGV4SWQpOwog CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDQ1MSw2ICs0NDc0LDE0IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwogCiAJCQlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisKKwkJCWlmIChPaWRJc1Zh bGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJb2JqZWN0Lm9iamVjdElkID0g aWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCWFk ZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJCX0KIAkJfQogCiAJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQxODFjMTEwZWI3Li5lOWI2ZGVkNmE1 NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE0OTIsNiArMTQ5Miw4IEBAIFJlbW92 ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAgICpjZWxsOwogCWludAkJCWZs YWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJTWVt b3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRjb250ZXh0OwogCiAJLyogRFJP UCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQgaGFzIHNvbWUgcmVzdHJpY3Rp b25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTUyLDkgKzE1NTQsMjAgQEAgUmVt b3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2luZCA9IDA7CQkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkgKiBDcmVhdGUgYSBtZW1vcnkg Y29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29tbWl0cyB3ZQor CSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggZHJv cCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxDb250ZXh0LCBpdCB3aWxsIGdv IGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVyIGFuIGVycm9yOyB0aGVyZSdz IG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dpYy4KKwkgKi8KKwlwcml2YXRl X2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJ CQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK IAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsK IAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBidWlsZCBhIGxpc3Qgb2Ygb2Jq ZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZvcmVhY2goY2VsbCwgZHJvcC0+ b2JqZWN0cykKIAl7CkBAIC0xNjA2LDYgKzE2MTksMzQgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BT dG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFk7CiAJ CX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgcmVxdWlyZXMgdG8gYmUgdGhl IGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3ZSBoYXZlIGp1bmsgYXV4aWxp YXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5kIGFsc28KKwkJICogaW4gYSBj b25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNpbGVudCBpbnRlcm5hbCBkZWxl dGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0b3JlIHRyYW5zYWN0aW9uIHN0 YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBsb29wIGJlY2F1c2UgdGhlcmUg aXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3RzLgorCQkgKi8KKwkJaWYgKChm bGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAhPSAwICYmCisJCQlzdGF0ZS5h Y3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlPaWQganVua0F1eEluZGV4 T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJaWYgKE9pZElzVmFsaWQoanVu a0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJCQlvYmpl Y3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBq dW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQlwZXJmb3Jt RGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxF VElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFM IHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwkJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCVByZXZlbnRJ blRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCQl9 CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgY2Fubm90IGJlIHVzZWQg d2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIuCkBAIC0xNjM0LDEyICsxNjc1 LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJb2JqLm9iamVjdElkID0g cmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAwOwogCisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkJYWRkX2V4YWN0X29iamVjdF9hZGRy ZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9sdmUgbXVsdGlwbGUgY29tbWl0cywgc28sIHN3 aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMob2JqZWN0 cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNzZXMob2JqZWN0cyk7CisJTWVtb3J5Q29udGV4 dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aAppbmRleCAwZWE3Y2NmNTI0My4uMDJiY2Y1ZTkzMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5j eS5oCkBAIC0xODAsNiArMTgwLDcgQEAgZXh0ZXJuIExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9p ZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb24gcmVsLCBB dHRyTnVtYmVyIGF0dG51bSwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIE9pZAlnZXRfaW5k ZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCk7CitleHRlcm4gT2lkCWdldF9hdXhpbGlhcnlfaW5k ZXgoT2lkIGluZGV4SWQpOwogCiBleHRlcm4gTGlzdCAqZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50 cyhPaWQgaW5kZXhJZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCAwMWY4NWU1N2VhMi4uOGZlMGFj YzFlNmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTczLDYgKzczLDcgQEAgZXh0ZXJuIE9pZAlpbmRl eF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQsCiAJCQkJCQkgT2lkIHBhcmVudEluZGV4UmVsaWQsCiAJCQkJCQkgT2lkIHBhcmVudENvbnN0 cmFpbnRJZCwKKwkJCQkJCSBPaWQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCwKIAkJCQkJCSBSZWxGaWxl TnVtYmVyIHJlbEZpbGVOdW1iZXIsCiAJCQkJCQkgSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJ CQkgY29uc3QgTGlzdCAqaW5kZXhDb2xOYW1lcywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2luZGV4Lm91dAppbmRleCAzNDMzMWU0ZDQ4Yi4uZDg1ODU0NWRiYTMgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTMwOTYsMjAgKzMwOTYs MTA5IEBAIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2 X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5k ZXhfaW5kNl9jY2F1eDsKIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9p bmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91 cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgotREVMRVRF IEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7Ci1FUlJPUjogIHJlbGF0aW9u ICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5vdCBleGlzdAotTElORSAxOiBERUxFVEUgRlJP TSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKLSAgICAgICAgICAgICAgICAgICAg XgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJl IHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2lu ZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRl eF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2lu ZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0g SW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVF UyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEp OworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYi CitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFrZXMgdGhl IHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQu CitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBTaG91bGQgYmUg c2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKLUVS Uk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgotREVU QUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCi0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKIFdBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXgg InB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKIEhJTlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVY IElOREVYLgogV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJw dWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCiBOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3Rh YjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKKy0t IE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAg ICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRy ZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5W QUxJRAorCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhf aW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVgg YXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVk LgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5k ZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMx ID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBh dXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisK K0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2Fpbgor SU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGlu dmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9p bmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVh dGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBp cyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5 LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90 YWI1IFdIRVJFIGMxID0gMTsKKy0tIERyb3AgbWFpbiBpbmRleCBDT05DVVJSRU5UTFkKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFy eSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CitFUlJPUjogIGluZGV4ICJhdXhfaW5k ZXhfaW5kNiIgZG9lcyBub3QgZXhpc3QKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNF UlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxp ZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1 bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1 cGxpY2F0ZWQuCistLSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7 CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhf dGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsK IC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGlj YXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQg bWF0Y2ggdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRl eCBiNDEwZmE1YzU0MS4uOTVlNmY3MmZkNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbApAQCAtMTI3MywxMSArMTI3Myw2MiBAQCBSRUlOREVYIElOREVYIGF1eF9pbmRleF9p bmQ2X2NjYXV4OwogLS0gQ29uY3VycmVudGx5IGFsc28KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KLURFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworREVMRVRFIEZST00gYXV4X2luZGV4 X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgg YW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9p bmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4 X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdh aW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1 eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdv IGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2lu ZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwogLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5k ZXgKLVJFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7Ci0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRl eF90YWI1CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisK Ky0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBW QUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVO SVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUg KGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhl IGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVS RSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBl ZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1 cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1 eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJl IGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4 X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBtYWluIGluZGV4IENPTkNVUlJFTlRM WQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorRFJPUCBJTkRF WCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJ TlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGlu ZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gRHJvcCBtYWluIGluZGV4CitEUk9QIElOREVY IGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRv bworXGQgYXV4X2luZGV4X3RhYjUKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIAogLS0g Q2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVz LiAgVGhlCi0tIAoyLjQzLjAKCg== --0000000000000cac62062ce1f3d0 Content-Type: application/octet-stream; name="v13-0011-Updates-index-insert-and-value-computation-logic.patch" Content-Disposition: attachment; filename="v13-0011-Updates-index-insert-and-value-computation-logic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijauob10 RnJvbSAyNGNjYjJmODZhMzhkZGNkYTZmMWUyZTViOTYxZTQ2OGQ3ODEwMGEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogTW9uLCAzMCBE ZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDExLzExXSBVcGRhdGVz IGluZGV4IGluc2VydCBhbmQgdmFsdWUgY29tcHV0YXRpb24gbG9naWMgdG8KIG9wdGltaXplIGF1 eGlsaWFyeSBpbmRleCBoYW5kbGluZy4KCiogU2tpcCBpbmRleCB2YWx1ZSBjb21wdXRhdGlvbiBm b3IgYXV4aWxpYXJ5IGluZGljZXMgc2luY2UgdGhleSBhcmUgbm90IG5lZWRlZAoqIFNldCBpbmRl eFVuY2hhbmdlZD1mYWxzZSBmb3IgYXV4aWxpYXJ5IGluZGljZXMgdG8gYXZvaWQgdW5uZWNlc3Nh cnkgY2hlY2tzCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSAr KysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysr KysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCBiN2Q0MmM2OTY1Zi4uMjZlZjRkZmVhMjcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKQEAgLTI5MjksNiArMjkyOSwxNyBAQCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8g KmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRleHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8q IEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVkIGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQg Ki8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChp ID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1 ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9 CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwg JiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IGFlMTFjMWRkNDYzLi5kMDcwZjgwNzk1ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTQzNCwxMSArNDM0LDE0IEBAIEV4ZWNJ bnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVy ZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4gaW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhp cwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFU RSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1 ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAqCisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5 IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9wdGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4 VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVs SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZv LAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRpb24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVw ZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5k ZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBl c3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5k ZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29uc3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQo aW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24gKi8KLS0gCjIuNDMuMAoK --0000000000000cac62062ce1f3d0 Content-Type: image/png; name="io2.png" Content-Disposition: attachment; filename="io2.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijf6kk13 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 5KPyhWfhOXlcXnVFeqT/t8PdRdKmCSwiotY67xDxzP9qMHu0CrdP8iWk6hWe8eIvG2qx5GcaTB3m S14BwFPv1WBwH9/thKhLYJ0868Xvbg3Cj0UeXDfCNwZWZbWI3/6/GtwWrcKtvU7BtvIVuPJ8vUJb iwksImqoLRNYREREROceuKvNklf1Oto5TJvfQkhEdKXqnyY4KlKJ+XW3B9YrPOPF8x/WIHGiyi95 BQA/M6qw7ZAbR6xeWMu9yC3yYMJAJTxeYO23Tny6xw1RBPad8MBRK2JIHwXE6iqIVQ6/+RARERER EQWitk5edURMYBFRwPjmiBtHT3vxSa5vzKobVvheG3904dM9bljOi0jb7JTKb/mrA7sLPJg9RoVZ RhV+83/VuP9f1RjaV4H5MWr07S5g2Y1B+OgH3/z++pkT916ngbGPB66jh+Ap9r8dh4iIiIiIiAIT byEkoi6n9rttcLy9qs3Gv0IH7H5LRO2LtxASERFRWyqNj5UXtVpHO4dhDywi6nIqn3+iTZNXRERE RERE1L6YwCIiIiIiIiIiooDGBBYREREREREREQU0JrCIiIiIiIiIiCigMYFFREREREREREQBjQks IiIiIiIiIiIKaExgERERERERERFRQGMCi4iIiIiIiIiIAhoTWEREREREREREFNCYwCIiIiIiIiIi ooDGBBYREREREREREQU0JrCIiIiIiIiIiCigMYFFREREREREREQBTUhPTxeXLFkiLyciuqoKSrx4 4eManDgryqtazBilxOM3azCkry9nXxofK2/SahFZu+VFRNSFrV69GoyviIiIqK3wHIY9sIgoQLVV 8goATMUe/P0Lp7yYiIiIiIiIOggmsIgoILVV8qqeqdgjLyIiIiIiIqIOggksIiIiIiIiIiIKaExg ERERERERERFRQGMCi4iIiIiIiIiIAhoTWEREREREREREFNCYwCIiIiIiIiIiooDGBBYRERERERER EQU0JrCIiIiIiIiIiCigMYFFREREREREREQBjQksIiIiIiIiIroqvKVn4PjPv3Du3rmo3fqVX539 H6kojY+VXueXJkF02OG1VaLi979F6Y1TUDZnJqreywBEEQDgOrgP55LuQOnsKTh7+2zUfP6xVEcd GxNYRERERNSpXerkqF7N5x+jbP4NcO3fCwB+J0dnb5+N2m1Zfu09J80oX/4wSm+ejpotX/jVERFR 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 LS0NAJCYmIilS5ciMjISMTExSEtLa7JHV2fDkyMiIqKOiwksIiIiog5Cr9dj7969fsmm+icUiqII h8PhV6fX62E2myGKIrKzs6HT6aS6lJQUiKIIURSRmJgolRMREREFIiawiIiIiIiIiIgooDGBRURE REREREREAY0JLCIiIiIiIiIiCmhMYBERERERERERUUBjAouIiIiIiIiIiAIaE1hERERERERERBTQ mMAiIiIiIiIiIqKAxgQWEREREREREREFNCawiIiIiIiIiIgooDGBRUREREREREREAY0JLCIiIiIi IiIiCmhMYBERERERERERUUBjAouIiIiIiIiIiAIaE1hERERERERERBTQmMAiIiIiIiIiIqKAxgQW EREREREREREFNCawiIiIiIiIiIgooDGBRUREREREREREAY0JLCIiIiIiIiIiCmhMYBERERERERER UUBjAouIiIiIiIiIiAIaE1hERERERERERBTQmMAiIiIiIiIiIqKA1m4JLKvVivHjxyM3N1cqy83N hVarhSAIEAQBBoMBVqtVam8wGCAIAuLi4mC326XpUlNTpWkyMzOlciIiIiIiIiIi6vzaJYFltVox ZcoU5Ofn+5VbLBZMmjQJNpsNoijCbDZDr9fDbrdj0aJFWLp0KURRhMFgQHJyMgAgMzMTq1atgsVi QU5ODpKTk/2SYkRERERERERE1Lm1eQIrNzcXQ4cOxdNPP41hw4b51ZlMJhgMBuh0Or9ym82G8vJy xMfHAwAWLFiA7OxsWK1WmEwmxMXFQa/XY8SIERg8eDCysrL8piciIiIiIiIios6rzRNY0dHRcDgc mDt3rrwKJpMJa9eubXQ7oMViAQBERkZK/4qiCIvFApPJBKPRCADQ6XQwGAwwmUwN5kpERERERERE RJ1ZmyewLsZut8NsNuPll1+GKIrYuHEjFi5ciNzcXFgsFpw/f14+CaqqqmA2m+XFRERERERERETU hQjp6enikiVL5OWtZrVakZCQgDVr1iA6OlpeDbvdjjlz5iAhIQHx8fFYvHgxNm3aBL1ej9zcXMyf Px8bNmzAypUrYTQakZKSAgBISkoCAGRkZMjm6GO1WqUeXUTUcT355Uh5Uau9ctNhAMCAlIflVa12 IvVNeRERdUCRkZHQ6/Xy4hZbvXo12iO+otYpjY+VF7VaRNZueREREV0B7qMvjesnABJYy5cvR0xM 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 6tJLL21yvdZSWVkph8OhEydOaM+ePerdu7emTp0qwzC0Z88e7d69W3FxcQoODpaasb7h4eGy2+06 duyYxo8fr4kTJ6p///7q06ePysrKlJ+frylTpighIUHR0dFyuVx66aWXtGnTJoWHh2vq1KmKjY3V oUOHtHXrVkVERJh31I8fP65du3Zp//796tGjh6655hpFREToyiuvlJ+fnwzDUFlZmbZv367+/fub gT4AoHW19iDuvuKKix1rnTp1Sp9++qnCw8P11Vdf6V//+pfeeecdZWZmKigoSNHR0WayZNu2bTpx 4oQmTpyo7t27eyynpKREO3fuVEhIiK688kqPaXVVVlbqxRdf1KZNm8zkQ58+ffTFF19o+/btGjx4 sLp166bjx49r9+7dGjFihKKiony2X1PO26o9v+7Zs0cHDx7U0aNHNWnSJA0fPlynTp3S7t27VVBQ oCuuuKLN4rKqqipt3LhR5eXluu6668zYQ7UxY90Y1OVy6Z133tFrr70mwzA0efJkDR8+XMePH1dm ZqYqKyt1+eWXm0mdpnyvptZrLe6/V25urg4ePKgxY8Zo7NixysvL044dO3T69GnFxcXJZrM1eX1t NpsiIyPrxVqxsbHq3r17vb9Zt27ddPDgQf31r3/ViRMnNGLECE2cOFGVlZXasWOH9u/f7/FinB07 dujrr7/WgQMHNHr0aA0fPlwxMTGKjY2Vam9YZmVlqaCgoNVfDgQAXUGbPUJYVVWltLQ0nTt3Tjff fLPuvPNOjR8/XjNnztQPfvADlZSUKD09vdFxDiorK7Vp0yaVlpa2+K0qAQEBmj17tkaNGqX169fr 4Ycf1m9+8xt99dVXmjFjhr797W97z+LB5XJp48aNKigo0C233KK7775bEyZM0A9/+ENNmDBBBw4c 0N69e71na5DL5dJ7772ns2fPmstyt8k999yjoqIipaWleYw/4XQ6NWjQIP34xz/WhAkTNH36dN12 221yuVzavXu3JKl79+4aNWqU/P39FRkZqbFjxyomJkY5OTk6fvy4Jk6caI51MX36dN1xxx3y9/fX vn376ny7pjt8+LACAgLOe1e3OetbUFCgAwcOaOjQoUpNTdX48eM1bdo0/cd//Ie6deum/fv3q7Ky ssn1Wlt5ebkmTZqkuXPnavz48brrrrs0Y8YMnT171hwQvTnrO2jQIF122WWSpMsuu0xXXXWVIiIi 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 KvKeBAAAmoH4qmHEVwCsigQWgAs2cuRIbdiwQX379vWeBAAAgBYgvgIATySwgC7I+26V+/dly5ZJ tXehYmJiFBMTo8svv1w7d+406/z0pz81p/30pz+VvO4Q+rJhwwZzvpiYmAu+U9ZW3Hc477nnHsXE xGjcuHHmeuXl5WncuHEe619UVKR58+YpKytLt956q3mXsG471V3Xzz//XJdffrliYmLM9lZtG7rL 636m6rTd5ZdfLofDYZYDAADrIL7yjfgKQGsggQV0QaGhoZo6dareeOMNSZLT6VRBQYGuvfZabdiw QatWrdLnn3+uY8eO6cYbb9TKlSvNeY8dO6avvvpKzz//vNavX99ot263nTt36uGHH1Z6erqOHTum hx9+WMuXL7dsN+1PPvlE8fHxOnbsmCZMmKAnn3zSDKRSU1N17Ngxpaen6+OPP9aBAwe0bNkyxcXF 6ZVXXtHIkSPNwMld7w9/+INOnDghSfrss8+0Y8cOPf/883rqqae0c+dO5eXl6Uc/+pGeffZZ8zPn zZunoqIi7dy5Uz/5yU/0/PPPa8eOHTp37pzXtwUAAFZAfNU44isAF4oEFtBFDRkyRJ988ony8vK0 c+dORUREaNCgQbr++uu1detWs7v6kCFDPOabOnWqQkNDNXLkSA0cONBjmi8jR47UZ599ppEjR0oN LNNqYmJilJKSIkmaM2eOsrKy5HQ6tXbtWs2bN0+S1LdvX0VGRnrNWXO3ddOmTZo+fbpUp/t/nz59 JB/t5w5S3e0zZ84cFRQUyOl0Ki8vT6NHj9bEiRMVGhqqe++91/wsAABgLcRXvhFfAbhQJLCALmrk yJGKiIhQXl6e3njjDfPE7+7K7u6e/eSTT3rM19LgqG6X77vvvtt7sqX0799fYWFh3sUe3fSvuuoq HTp0yLuKnE6njhw54l1s8tV+x44d01VXXaWYmBglJSXp0KFDysvL01dffeVdFQAAWBTxlW/EVwAu FAksoIvq27ev4uLilJ6ersLCQl177bWSpOeff16S9NVXX5nd0S/Uhg0b9Mknn5jd5t2fYVVHjhyR 0+mUasdlKCgo0MmTJ/WrX/1Kzz//vI4dO6bPP/+8wTukYWFh6t+/v3fxeU2YMMFs82PHjmn//v0a OXKkz4AMAABYD/GVb8RXAC4UCSygC5s+fbqWLl2qc+fOadCgQd6TlZeXp1WrVnkXX5CioiItX77c u9hSjh07ZnY7f+ONNzRhwgT17t3bo87atWsbvEMYGhqqmJgYc/yLnTt3auzYsdq9e7d3VdPIkSN1 5MgRffzxx1LtIK/ugUbrTusIbQcAQFdHfNUw4isAF4oEFtCFjRw5UjExMWb3dklKSUnRkSNHNGTI ECUnJ+uBBx7QsWPHVFxc7D17k02cOFH9+/fXVVddpVGjRummm24yxyCwori4OP3hD39QTEyMjh07 pieffFJ9+/ZVamqq7r77bsXExMjpdGr06NHKy8tTWFiYIiIizLfkPPnkkzp27JjZXf3JJ5/UlVde 6f0xpr59++q5557TT37yE8XExOipp57Sc889p759+6pv37763e9+p7vvvltDhgzR2LFj1a1bN+9F AAAAiyC+ahjxFYALZSxfvtw1d+5c73IAFlK6MV2Fi37jXexT0LQkhT/0/7yLO51NWZV64rUy72Kf psbZ9eubA72LPWzYsEHLly/XqlWrzKATAFpixYoVIsYCrIv4qmHEVwCsih5YQAfgP/xK+UVfIltE 9/P+GKFh8o8f772ITml4jJ9iuhuKDDn/T0igoYTL/LwXAQAAuijiq4YRXwGwKnpgAQAAtAF6YAEA ALQeemABAAAAAADA0khgAQAAAAAAwNJIYAEAAAAAAMDSSGABAAAAAADA0khgAQAAAAAAwNJIYAEA AAAAAMDSSGABAAAAAADA0khgAQAAAAAAwNJIYAEAAAAAAMDSSGABAAAAAADA0khgAQAAAAAAwNJI YAEAAAAAAMDS2iyBlZubq9GjR8vhcHiUp6amyjAMhYaGekzLzc1VbGysDMNQYmKinE6nJMnhcCg0 NFSGYSgtLc2sv3jxYi1evNj8HQAAoLMjvgIAAF1VmySwcnNzdfXVV2vfvn0e5YsXL1Z2drYKCwu1 Zs0a3XrrrcrNzZXT6dSsWbN03333yeVyKTY2VvPmzZMkLV26VGvWrFFmZqZWrlwpp9Op3Nxcpaen a/bs2R7LBwAA6KyIrwAAQFfW6gksh8Ohyy+/XL/85S81ePBgj2lZWVlKSkpSWFiYEhISJEmZmZkq LCxUfn6+pk2bJklKSUlRRkaG9u/fr4KCAkVHRys6Olr5+fkqLCzU6tWrlZSUpKioKI/lAwAAdEbE VwAAoKtr9QRWfHy8ioqKdNNNN3mUO51OZWdnKy4uTpIUHh6ugQMHKisrSzk5OZKk6Oho81+Xy6WC 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 0L7ZEdS9+1v3rpT7/+seO937Ut1tpm57JSYm6uabb9bixYvr3eHKzc3V6NGjzXZ2OBxme3m3ZVvy tb6NHReasr7ed53rzuP+vaFt6nx8bVcNLS8tLU0PPfSQVq9eXe+8i86B+KrtNLSvpRFfeSC+aljd fYf4qkZzj0UNtY9bQ/tmR+Ar3nD/P/FV09aX+Or8SGBdIKfTqVmzZum+++6Ty+VSZmamNm3aZO5U +/bt07lz5+RyufToo49qwYIFcjqdmjdvnmJjY+VyuZSTk6NDhw5p06ZNHst2OByaN2+eMjMz5XK5 tGjRIi1ZssTcULdt26b9+/crMzNTn332mTm/e6N0f59HHnlEubm5Hp+5bt06zZw50/yeVvWPf/zD XMdly5aZ3/f06dN6//33lZGRoaCgII95fLVLZ+RwOLRs2TJlZmZq//792rZtm3cVqXY7TEpKksvl 0uzZsz22o84oNzdX999/v9atW6fCwkJlZ2d7V9Hx48f1yCOPmPvXfffdp9WrV2vhwoWaPXu2Fi1a 1KnusO7bt0+XXHKJXC6XUlJSznssys3NbbB93D788EPl5eVp3bp1euyxxyx/LGmq7OxsFRYWat26 dVq7dm299Vq2bJkkqbCwUEuWLNGGDRs8pjckNzdXt956q9asWSOXy6XExETNmjXrou+DTTkutGR9 6567CgsLJUnz5s3zrtaghrYrh8OhmTNnmvuzapeXnJysRYsWafbs2Vq1apX3otDBEV+1LeKrxhFf NYz4qj7iq6YhviK+ai0ksC5QWFiYMjIyzANxdHS0evToYU7v2bOn5s+fL0maPXu28vPztXfvXq1a tcrcIMLDwzVw4EBzHrf4+HgdOXJE8fHxkqS4uDiP6YmJiYqKitLQoUM1duxYqTbgS09PV0pKirmM 7du3S5IyMjLM8qlTp2rs2LHKycmps0True+++xQVFaX4+HhNnTpVGzdulCT16tVL0dHR3tUlH+3S WW3cuFFTp05VfHy8oqKidN9993lXkWq3w2nTpkmSuQ10ZpmZmRo4cKCmTp2qsLAwLViwwLtKPQsX LuxUAZU3X9tAU45FaqB9kpKSFBYWpoSEBA0ePNijbkfW2HoVFRUpPT3drBMfH9+k/SkzM1OSlJCQ IEmaP3++8vPzzWDhYvG1Tbi1dH03btyoyy67TEOHDjX3v+zs7HrBW0Maav+cnByNHTvWY3/OyMho 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 A2Mf0c/z5HMeAAAAAElFTkSuQmCC --0000000000000cac62062ce1f3d0 Content-Type: image/png; name="local.png" Content-Disposition: attachment; filename="local.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ijf6kn14 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 fPzxx/jggw8CXl999RX8fn+zv6W1O25+v/+id/3Gjh0rdX12u93Ys2cP3nzzTTz77LP49NNP2wye PB4Pampq5MUtaryIf/PNN80+1+rVq3GmYSJZl8sFtVqNBx54APfeey+io6NRWVmJzZs349VXX8WL L74oPUq7ve1aUltbi6VLl+J3v/tdwCs/P1/etF0EQZACVbfb3aHP2xGNibGysrJm6/3ggw/w7bff thgstxXUhoSEQK1Ww+Fw8K4fEZFCdPb4qi2NiYa6ujpUVVVJN1IaP3NToijC7/dDq9VK8zteSbW1 taiqqoLX68WmTZuaXWc3bNgAt9uNmpoaeDweabnOEIt1JIZob4zV3natyc/PbxaLLV26FLW1tfKm FyWPxTryeTviUuP1tmIxtVoNrVbLWIyI6EonsFQqFQRBCOrdgqqqKqxatQpnz57FnXfeiaeeegpL lizBU089hWnTpgU1mHO73fD7/S0GHjqdDjExMS0GVFdCaGgoIiMj0bt3bzz99NN46aWXWnw1Poku WBISEvDoo4/i+eefxyOPPILExEQIgoBNmzahqKhI3lzSeLeoPRrvvt59993NPk/j64UXXpCe/qPR aHDrrbfiiSeewLPPPos5c+Zg4MCBuHDhAnJzc3HmzJkOtbvSfD4f3G63FGB39PO2V2MX87FjxzZb X9NXR54W1dhTLDIyEqGhofJqIiK6Bjp7fIUmvYPk/H4/vF4vVCoVVCoVwsLCEBYW1uKP97q6Ojgc DqnNldYYi0VERODxxx9vdn1tfD322GNB/XuuRizW0RiivTFWe9tdafJYrKOft72uRLzu8/ng8XgY ixERXekEVkxMDMLDw1FaWhpwJwoNJ+OTJ08iLCwMvXr1QnR0NMLDw1FVVdXszsr58+exePFirFq1 ClarFRUVFbj++utxxx13ICoqShrjXlFR0Sy4uRwRERHQaDSorKxslqSqqalBZWWlFES2pk+fPvB4 PC12Qf7444/x//7f/8Phw4flVc2EhIQgIiICDoejxfH4//vf//D73/8eW7ZskVddkqqqKrz66qtY vnw5PB4PNBoNEhIS8OCDD2LmzJlAw/ZujUajQWhoKC5cuNDs+5RrfLpLaWlps+3scrnw5z//WRq+ cODAATz77LMoLCwEGr6jm266CY8++ihMJhPq6urgcrna3a4lYWFheOyxx5oFG00fM90ah8PR7G6n 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 6CEMGDBAWm9Lx0ZTjXfde/TogaSkpDbvbhMR0XeudAILXSC+io+Px/Dhw2Gz2bB//35YLBb4fD4k JSVhxowZAUkZlUqF4cOHw+1245tvvpGSXrfffjtSU1OlRFdrghmLNa6rf//+sFqt2LdvHw4dOgRB EDBlyhSkpqZCo9G0ur5G8lgMDb2gTp8+jSNHjuDw4cMYOnQoBg0adNViscb95GIxRHtjrPa2C5aO xmLt/bxoJRa77rrrWvzOevXq1e54vaXjqClRFKUekHfeeWebyUoiou5AEJv2me1GCgsLcerUKcye PVteRUEiiiI++ugj7Nu3D7/4xS+adcMmZTt69CjefPNNpKamYsKECfJqIiJqxYoVKzBv3jx5cbfA +EpZGIt1bmfOnMHy5csxatQo3HvvvfJqIqJuJ3i3PToRp9OJ/fv3Y+DAgfIqCiJBEGA2m+Hz+bBP Nu8GKZsoitixYwd69uyJESNGyKuJiIiaYXylPIzFOrd9+/ZBFEXeSCQiatAtE1hWqxWRkZFSl3G6 cuLj4zF+/HgUFRVddAJRUo6ysjIcOXIEkydPvujwBCIiIjC+UizGYp1TVVUVioqKMG7cuHY/ZICI qKvrlgmsG2+8Eenp6YiIiJBXUZAJgoCkpCTodDps27ZNXk0K5PP5sGnTJiQkJFx0DhMiIqJGjK+U ibFY57R161bodDpMnjxZXkVE1G112zmwiIiIiK6E7jwHFhEREdGV0i17YBERERERERERUefBBBYR ERERERERESkaE1hERERERERERKRoTGAREREREREREZGiMYFFRERERERERESKxgQWEREREREREREp GhNYRERERERERESkaExgERERERERERGRojGBRUREREREREREisYEFhERERERERERKZogiqIoLyQi ZblQA/jbeahGRwjyom7NX1khL2qRoFZDiOwhLyYi6rAVK1Zg3rx58mIiUhjGV5eO8RURXQtMYBEp 3DdlfizIqZEXt+rnU0Iwe6JWXtwtVb/zJlwrl8mLW9VzWQ40198gLyYi6hAmsIiUj/HVpWN8RUTX CocQEilcWYVfXtSmkvKOtW+v06dPY+rUqdi7d6+8SuJyuTBr1ixs2LBBXtUh2dnZmDVrFlwul7yq Q3zHj8qL2uQtOyEvuqI2bNiAWbNmoby8XNpue/fuxdSpU3H69Gl5cyIiIgoSxleXjvEVEV0rTGAR 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 v7wzBJHhAk6e9+PxVbWorA68BIwdqMbLP6gfLkhElyaYPbDkmg4hbIyV0tPTsWrVKsZXRERE1KUF LYFFRERERFc2gUVERETUXQV1CCEREREREREREVGwMYFFRERERERERESKxgQWEREREREREREpGhNY RERERERERESkaExgERERERERERGRojGBRUREREREREREisYEFhERERERERERKZogiqIoLyQiIiKi S7NixQrMmzdPXkxERN2U99gRXHjhKfhOfCuv6jDtDSOg/9UT0AweKq8i6vKYwCIiIgkDLKLLxwQW ERE1df4nDwQltmqkvWEEov/6T3kxUZfHIYRERCQJVvIKADzf7IfztRflxURERETdSrBiq0aeb/bL i4i6BSawiIhIwgCLiIiIiIiUiAksIiIiIiIiIiJSNCawiIiIiIiIiIhI0ZjAIiIiIiIiIiIiReNT CImIOpljp/144cNalJ4Lzul7xdxwDO5bfz+jPHm8vPqyxRZslxcRdWl8CiERETXF+IooONgDi4io kwlm8goA5q2skRcREREREREpChNYRESdTDCTV0RERERERJ0BE1hERERERERERKRoTGARERERERER EZGiMYFFRERERERERESKxgQWEREREREREREpGhNYRERERERERESkaExgERERERERERGRojGBRURE REREREREisYEFhERERERERERKRoTWEREREREREREpGhMYBERERERERERkaIxgUVERERERERERIrG BBYRERERERERESkaE1hERERERERERKRoTGAREREREREREZGiMYFFRERERERERESKxgQWERERERER EREpGhNYRERERERERESkaExgERERERERERGRogU1gVVcXAydTgdBECAIArKysgLq09PTIQgCdDod iouLpXK73Q6j0QhBEJCUlASn0ynVZWVlSevLy8uTyomIiIiIiIiIqHsIWgLL6XTi+eefx5YtWyCK IoqKipCdnS0lqrKysmC1WuFwOPDuu+9i5syZsNvtcDqdmDNnDubPnw9RFGE0GpGRkQEAyMvLw7Jl y2Cz2VBUVISMjIyAxBcREREREREREXV9QUtg6fV6fPjhh0hMTAQADBs2DAkJCSgoKAAAWCwWpKSk QK/Xw2w2AwCKiorgcDhQWVmJ5ORkAMCsWbNQWFgIu90Oi8WCpKQkGAyGZusjIiIiIiIiIqLuIWgJ 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 AQDAYrEgJSUFer0eZrMZAFBUVASHw4HKykokJycDAGbNmoXCwkLY7XZYLBYkJSXBYDA0Wx8RERGR UjGBRURERNRJOBwOlJSUwGQywel0wmq1wmQyAQAiIyMxaNAgWCwW2Gw2AEBcXJz0X1EUYbPZYLFY pGX0ej2MRiMsFkuTdyEiIiJSHiawiIiIiDqJRYsWISkpCWlpaVIyqyU2mw0VFRXyYlRXV8NqtcqL iYiIiBRPEEVRlBcSEZFy3bHYJS+6bBuf1AEAypPHy6suW2zBdnkRUZe2YsUKzJs3T1582dLT02G1 WrFu3Tro9Xo4nU6kpqZi4cKFSEtLk/6dkpKC5ORkzJ07F/n5+TAYDCguLsaMGTOwZs0aLF26FCaT CZmZmdJ6ASAnJ0f2jvXsdrvUo4uIqKv63frh8qLL9tK0gwCAAZmPyqsuW2nWG/IiIkWKi4uDwWCQ F18SJrCIiDoZJrCIlO1KJLBaSzKlp6dLySi73Y4JEybg9ddfh9lsRkpKClauXInExETk5eVhwYIF 2LZtG1atWgWLxYKcnJyApFdjQouIqDtifEWkfBxCSERERKRgrSWvAMBkMiE/Px9OpxNFRUUAALPZ jMjISERHR0uTs+fm5koTt5tMJmlC90OHDuH48ePSZO9ERERESsUEFhEREZFC2e12FBYWYtWqVRAE QXplZWUBADIzM2E0GhEZGYnZs2dj9erVMBgM0Ov1eOedd7Bs2TIIggCr1Yrs7GwAQFpaGubPn4+4 uDiYzWZkZ2dLTzkkIiIiUioOISQi6mTYxZ1I2a7EEEIiIrqyGF8RKR97YBERERERERERkaIxgUVE RERERERERIrGBBYRERERERERESkaE1hERERERERERKRoTGAREREREREREZGiMYFFRERERERERESK xgQWEREREREREREpGhNYRERERERERESkaExgERERERERERGRojGBRUREREREREREisYEFhERERER ERERKRoTWEREREREREREpGhMYBERERERERERkaJdkQSW3W7HmDFjUFxcHFCenp4OQRCg0+kC6ux2 O4xGIwRBQFJSEpxOp1SXlZUFQRAgCALy8vKkciIiIiIiIiIi6h6CnsCy2+2YMGECjhw5ElCelZUF q9UKh8OBd999FzNnzoTdbofT6cScOXMwf/58iKIIo9GIjIwMAEBeXh6WLVsGm82GoqIiZGRkNEuK ERERERERERFR1xbUBFZxcTGGDBmCJ554AkOHDg2os1gsSElJgV6vh9lsBgAUFRXB4XCgsrISycnJ AIBZs2ahsLAQdrsdFosFSUlJMBgMGDZsGBISElBQUBCwXiIiIiIiIiIi6tqCmsBKTEyEy+XCvffe G1DudDphtVphMpkAAJGRkRg0aBAsFgtsNhsAIC4uTvqvKIqw2WywWCzSMnq9HkajERaLpcmaiYiI iIiIiIioqwtqAqs1DocDJSUl8mIAgM1mQ0VFhbwY1dXVsFqt8mIiIiIiIiIiIupmBFEURXnh5bLb 7UhJScHKlSuRmJgIp9OJ1NRULFy4EGlpadK/U1JSkJycjLlz5yI/Px8GgwHFxcWYMWMG1qxZg6VL l8JkMiEzMxNomAQeAHJycmTvWM9ut0s9uoiIuqrfrR8uL7psL007CAAYkPmovOqylWa9IS8iUqS4 uDgYDAZ5cYetWLEC8+bNkxcTEZGC3bHYJS+6bBuf1AEAypPHy6suW2zBdnkRUZd3VRJYaEg+NSaj Gid6f/3112E2mwPa5uXlYcGCBdi2bRtWrVoFi8WCnJycgKRXY0KLiKg7YoBFpGxMYBERdT6Mr4iU 76oMIQQAk8mE/Px8OJ1OFBUVAQDMZjMiIyMRHR0tTc6em5srTdxuMpmkCd0PHTqE48ePS5O9ExER ERERERFR93DVEliZmZkwGo2IjIzE7NmzsXr1ahgMBuj1erzzzjtYtmwZBEGA1WpFdnY2ACAtLQ3z 589HXFwczGYzsrOzpR5dRERERERERETUPVyRBJbBYMDu3bubJZtycnIgiiJcLldAncFggNVqhSiK KCwshF6vl+oyMzMhiiJEUURaWppUTkRERERERERE3cMVSWAREREREREREREFCxNYRERERERERESk aExgERERERERERGRojGBRUREREREREREisYEFhERERERERERKRoTWEREREREREREpGhMYBERERER ERERkaIxgUVERERERERERIrGBBYRERERERERESkaE1hERERERERERKRoTGAREREREREREZGiMYFF RERERERERESKxgQWEREREREREREpGhNYRERERERERESkaExgERERERERERGRojGBRURERERERERE isYEFhERERERERERKRoTWEREREREREREpGhMYBERERERERERkaIxgUVERERERERERIrGBBYRERER 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 SnM0dGZLlixBSUkJIiMjsXLlyma9Oy4mMzMTSUlJiIuLw8yZMwPmu3jllVeQm5vb7Jg0GAxYvXo1 Zs+eDUEQ8Nxzz2H16tVXZXsmJibimWeeafN4aEvj3/7cc89BEARUVVVJczSkpaVh1qxZMJvNmDBh QsCwrWBfe5pud7PZjGeeeQZpaWmIjIxEdHS0op+SQ+3H+OrKYnzVPoyvWsb4qv3aOt8wvmoZ4yvG Vx0liKIoyguJqHPIy8vDggULsG3btqty0u5MGh87e6nda4nakp6eDpPJdFnBQ2dSXFyMuXPnIj8/ n+eadlixYgXmzZsnLyaiToLxVesYX9GVxPiKLoY9sIg6EafTiaSkJAgNE/jNnj37qt1xULqmEwAL ggCr1So9mpeIrh35sdn01R0m+iUi5WN81Tr5OZzxFZEyyI/N7hJfsQcWERERURCxBxYRERFR8LEH FhERERERERERKRoTWEREREREREREpGhMYBERERERERERkaIxgUVERERERERERIrGBBYRERERERER ESkaE1hERERERERERKRoTGAREREREREREZGiMYFFRERERERERESKxgQWEREREREREREpGhNYRERE RERERESkaExgERERERERERGRojGBRUREREREREREisYEFhERERERERERKRoTWEREREREREREpGhM YBERERERERERkaIxgUVERERERERERIrGBBYRERERERERESkaE1hERERERERERKRoTGAR0SVLT09H VlYWACAvLw9JSUlwOp3yZkF1Ke9TXFyMMWPGwG63t7q83W6H0WhEXl5eQLlca8u3JS8vD0ajEXa7 XV5FREREFIDxVfswviLqfpjAIqKgSEtLQ2FhIfR6vbzqmktMTMTu3bthMBjkVR2m5M9JREREXYuS 4w7GV0R0tTGBRUSXJCsrC6tWrcKiRYuQlZUl3Tk7ffo0kpKS8PTTT0On00EQBGRlZSE9PR2CIATc KXM6nUhKSoIgCBAE4aJ355p66KGHAtbXuK7GddjtdowZMwbFxcUBdwibavr+c+bMCahrjfxzNn4u QRCQnp4utSsuLpY+f25ubrN1NC7TeLdR/jdeyp1IIiIi6twYXzG+IqLWMYFFRJckMzMTDz/8MJYs WYLMzEx5Nb788kucPn0aa9euxaJFi2AymeBwODBo0CCsWrUKAJCRkQGj0fj/27vz+Kjqe//j7zMz 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 /avCw8M1b948RUREuJfVf/aWl5frnnvuUZcuXTy2bcg7p9F55GLer2WapmJjYzV16lSPGDU3F6vf j0OHDrn/3i5duui+++5TTExMu+Zi3v3EVw7R3Byrueu1hpbkYs3Z36Zyse9///tav359k+9ZbGxs s/P1s+VipmnqhRde0L59+3T33XerV69e7m0BoDNq1Unci4qKtG3bNvXv3989IeSxY8f09NNP69Ch Qxo+fLiuuuoqhYaGKjc3V9u3b1dCQoL7A+LYsWN66qmn9NVXX2nIkCG66qqrVF1drR07dujQoUMa NWqUrFar3n//fa1Zs0ZWq1VXX321Lr30UkVFRembb77R7t271adPH/cJ/vDhw9q1a5dGjRp1zpOM GoYhm82mnJwcHTp0SIMGDVJkZKR2796tt99+W9HR0br++us9kilvpmnq7bff1muvvSbDMDRp0iQN GjRI+/bt02effeb+W5uK3Y4dO3Ty5EmNGzdOXbt2VU1NjV588UVt2rRJ0dHRmjJlihISEnTgwAFt 3bpVMTEx6tu3r9TgvTh8+LB2796t5ORkjRs3TiUlJdqzZ4/y8vI0evRohYeHq2vXrjp8+LAiIiL0 7W9/W4mJierWrZu2bdumf/7znwoPD1dKSoouueQSFRUVKTc3V/n5+Ro9erTfCb5zcnKUk5OjyZMn e8xl0dS+fvXVV/rb3/6mo0ePatSoUbriiitUU1OjHTt2aN++fe4JLGtra/Xyyy/rk08+0eDBgzVp 0iT169dPBw8e1Pbt22W323XRRRc1e73WUlNTo+zsbB09elS7d+9Wz549NWXKFBmGod27d2vXrl1K TEx095Xm7m90dLRsNpvy8/N12WWX6YorrlBCQoJ69+7d5Ht27Ngx/e///q/279+vIUOGaNKkSe7j befOnRo+fLjsdrtUd2zk5ORo37596tatm6666irFxMRo5MiRslqtslqtOnbsmPbu3auhQ4e2+eS1 ABBMWnMS96Y+NztyfiVJW7Zs0cmTJxUWFqZXX31Vb7zxhjIzM1VQUKCEhAR3Yaa4uFhbtmxRr169 GhU8rFarPv/8cx0/flwjR470WcBqzVzMNE298847Hq81YsQIHT58WFlZWaqpqdHFF18swzCanYvZ bDbFxsaqsrJSRUVFmjx5spKTkxUfH6+dO3e2Wy7W3ByiuTlWc9drLeeaizV3f5vKxfr3769evXo1 +Z6ZptnsfP1suZhhGKqsrNT27dvVv3//Fh1rABBM2rSAVVtbq5deekmFhYWaOXOmUlNT1a9fP40c OVJxcXH67LPPdPToUfeH79q1a5WXl6eZM2dq2rRpuuiiizR27FiVlpYqJydH8fHx6tKlizZu3CjD MHTPPfdoxIgR6tu3rxITE9W7d2/l5OSopqbGPXfC+SZYvXr10oABA/Tvf/9bmzdv1saNG7Vjxw7F xcVp7ty5Z/1Sf+jQIa1du1a9evXSfffdp2HDhmnQoEEaMWKEtm/frqNHj2rs2LEqKSlplEh4J025 ubnauHGjEhMT9R//8R8aOHCgBg0apOTkZH355ZfavXu3RowYIbvd7n4vqqurNWfOHF1++eXueO7f v19Hjx7V8OHD1aNHD/Xo0UM5OTkKDQ3VtGnT1KtXL5mmqfXr16u8vFx33323hg8frosuukjjxo3T oUOHdOLECQ0bNkxRUVHeu+z24Ycf6uTJk7ryyis9rnh595OqqiqtWbNGRUVFuuuuu9wJztixYxUd Ha2tW7eqqqpKw4cPV1FRkdavX69BgwbpzjvvVL9+/TRo0CANGzZMu3fvVm1trS655BKdPn26Wev5 S/rORX3SdOrUKU2aNEmzZs1Sv379NGbMGEVGRmr79u0yTVPDhw8/p/3t1q2bKisr3XN/jBs3TlFR UT7fszfeeEMHDhxwH0P1x9uAAQO0detWHTt2zH281SdNffv2dV9ZHjp0qMfTnMrLy7Vjxw717NlT AwYM8NhnAIBvbVnA6uj5VWVlpT788EOdOHFCx44d07hx4zRu3DhVV1drz549ysnJcRcPjh49qqys LPXo0UNjx471eB3DMLRz504dP35cY8aM8ZmTtWYulp+fr7Vr16pnz57u10pISNCECRN05MgRbdu2 TQkJCerWrVuzc7GYmBj17NlThw8f1qFDh3Tddddp+PDhslgs7ZaLnUsOUVxc3KwcK5BzsXPZ3+7d uzfKxcLDw5t8z6xW6znl683Jxaqrq7Vz505ZLBaNHDnSY58BoLNpnU8MHw4fPqyDBw9q0KBBGjdu nMeyYcOGacCAASooKFBhYaFOnz6tAwcOKD4+3mPiTsMwNGbMGEVEROjrr79WRESEfvSjH2nRokWN JqKMj49XZGSknE6nR/v5+Oqrr/Tss8/K6XRq0qRJuvXWW5WYmKhDhw7p+eefV1lZmfcmHj7//HNV VFTo6quv9rgFq74w5nA4dOrUKY9tmmKapj777DP3VdGGjwaOjIzUhAkTVFJSov3793ts169fP4/C Q2hoqAYMGKCamhqPW9B8qays1KFDh2TW3Wlqs9k0d+5cLVq0SL179/Ze3a1+/rDQ0NBG75O3/Px8 HTp0SEOHDtWgQYM8lo0cOVI9e/bUvn37VFpa6m4/deqUTp486f5379699Ytf/EJz5szxiE1z12st 0dHRja4QjxkzRr169XLvQ0v2tzmKioq0b9++RseQJA0YMEAJCQn65ptvdOLEiUbLQkNDPdrqdenS RSEhIfrmm2+8FwEALpCOnl9VVlaqurpa3bp10/33369p06Zp4sSJmjt3riZPnqyioiKtW7eu1ea1 aq1cTHUjmsrLyxu9ls1m02WXXSbTNJWTk+OxTUfIxVqSQzQ3x2rueq2lOblYS/a3OVqar/vLxWJi YhQaGqrjx4+rsrLSezEAdCptWsA6fvy4ysvLFR8f73ElQXXDvvv166eKigqdPHlSJ0+eVFlZmWJi Yhrdzz9w4ED96le/0vTp091tpmmquLhYu3bt0nvvvacVK1boz3/+s06fPu2x7fkoLi7Wyy+/LNM0 lZ6ermnTpumyyy5Tenq6br75Zh08eFDr1q1zJxRNKSwsVEhISKOrgoZhaM6cOWdNPurVD1G2Wq06 ePCgPv30U4+fo0ePukfVNBQdHd0o9haLRTU1NX6Lb/WJbW1trZ577jn9+te/1vPPP6/c3NxmPSq4 pqZGlZWV6tKlS6P301tRUZGqqqpUW1urrKwsj/3KycmRaZpyOBwqLS1VTEyMBg8erMOHD+v3v/+9 fve73+nNN99UYWGhx/vQ3PVaW0xMTKNbGCIjI9WtWzeVlJSoqKjonPb3XBQVFam8vNydPDd83c8+ +0zV1dWqrKxslKR369bN498N2e12hYSEqKampk3jBgBovo6eX3Xp0kU/+clP9MADD6hnz57u9vpb 8nr16qX8/HwVFxd7bNdSrZWLqW5OKavVqiNHjjTKxQ4ePCiLxaLjx497FN86Si7W3ByiuTlWc9dr bc3NxZq7v+eipfm6v1wsJCREERERqq2tbbUiMgB0VG1awHI6nTJNs9WGBtcrLCzUH//4R/32t7/V qlWrtH79eh0+fFiDBg3yOx/VuTp06JBOnTqlESNGaPDgwe52wzA0atQo9ezZU/v372/VpM6XiooK nT59WuXl5XrzzTf18ssve/x89NFHcjqdjf4WX1fcnE7nWa/6jRs3zj30uaqqSjt27NAzzzyjX/3q V3r77bf9Jk/V1dUqLy/3bm5S/Yf4559/3mi/XnnlFR2tm0i2tLRUVqtVt912m2666SbFxsaqqKhI mzdv1hNPPKHf/e537kdpN3e9plRUVGjp0qX67//+b4+fjIwM71WbxTAMd6JaVVV1Tvt7LuoLY/n5 +Y1e9+WXX9bXX3/dZLLsL6kNDQ2V1WpVSUkJV/0AIEB09PzKn/pCQ2VlpYqLi90XUur3uSHTNOV0 OhUSEuKe37EtVVRUqLi4WDU1Ndq0aVOjz9kNGzaoqqpK5eXlqq6udm/XEXKxc8khmptjNXc9XzIy MhrlYkuXLlVFRYX3qmflnYudy/6ei5bm6/5yMavVqpCQEHIxAGjrApbFYpFhGK16taC4uFirVq3S 8ePHdd111+kXv/iFHn/8cf3iF7/Q9ddf36rJXFVVlZxOZ5OJh91uV48ePZpMqNpCWFiYoqOj1b17 d/3yl7/U73//+yZ/6p9E11oGDRqke+65R4888oh+9KMfKSkpSYZhaNOmTcrKyvJe3a3+alFz1F99 veGGGxrtT/3Po48+6n76j81m05VXXqmf//zn+tWvfqXZs2drwIABOn36tNasWaOjR4+e03ptrba2 VlVVVe4E+1z3t7nqh5iPGzeu0es1/DmXp0XVjxSLjo5WWFiY92IAwAXQ0fMrNRgd5M3pdKqmpkYW i0UWi0Xh4eEKDw9v8st7ZWWlSkpK3Ou0tfpcLDIyUv/5n//Z6PO1/mfBggWt+ve0Ry52rjlEc3Os 5q7X1rxzsXPd3+Zqi3y9trZW1dXV5GIA0NYFrB49eigiIkIHDx70uBKlupPxoUOHFB4erm7duik2 NlYREREqLi5udGXl5MmTeuyxx7Rq1Srl5eXp1KlTGjp0qK655hrFxMS473E/depUo+TmfERGRspm s6moqKhRkaq8vFxFRUXuJNKXXr16qbq6uskhyG+++ab+3//7f/ryyy+9FzUSGhqqyMhIlZSUNHk/ /ieffKKHHnpI77//vveiFikuLtYTTzyhp59+WtXV1bLZbBo0aJBuv/123XLLLVJdvH2x2WwKCwvT 6dOnG72f3uqf7nLw4MFGcS4tLdUf//hH9+0Lu3fv1q9+9StlZmZKde/RpZdeqnvuuUeJiYmqrKxU aWlps9drSnh4uBYsWNAo2Wj4mGlfSkpKGl3tdDgcOnHihKKiojyeZtOc/T0XUVFRCgkJ0dGjRxvF vLa2Vn//+9/1+OOP61CDRz6fTWlpqfv999fPAQDtp6PnV7t379Yvf/lLvfjii40+B+s/M2NiYtSj Rw/3hZ9Tp041+lw8ffq0Tp06pZ49e/odgdVauZhhGIqNjVV5ebmOHDnivVh79uzRr371K/3rX//y XtQi7ZmLnUsO0dwcq7nr+ZKamtooF2tOcbA5udi57O+5aIt8vX4kndVqbfVCMgB0NG16FuzTp4/6 9+/vflxuQ3v27NHXX3+t3r17Ky4uTrGxsRo0aJAKCwsbTX75xRdfqLi4WH379lVYWJgsFouqq6s9 5heoqKjQpk2b3EODGy5rqYsuukg9evTQF198oa+++spj2a5du3T48GENHjy40X32DY0cOVLh4eH6 +OOPPYYhOxwOffHFFwoLC2vWvAtWq1WXXnqpampq9P7773sMOS8qKtL7778vi8VyzqN2GjJN051I RkVFKSYmRt98840OHjzosV5ZWZlM0/R7VS8sLEw9evRQVVXVWeewSEhIUJ8+ffTll19q79697nbT NLVlyxYdOXJEvXr1UnR0tHr27CmbzaYdO3Z4xLO2tlYVFRWy2WwKDQ1t9nqt7fTp09qyZYs7jqZp 6uOPP9apU6eUmJgou91+TvvbUFN9uuF71r17dw0aNEgFBQXuJ+3U2717t/bv36/o6Gj1qnsEenPU D7FvzcdcAwDOT0fPr/r166fY2Fjt37/fI78yTVMfffSRTp486f7MtFqtGj16tMrLy5WVldXo87W8 vFzjx49vNMdUQ62Vi0nS2LFjFRISog8++EAOh8PdXlFRoffee0+VlZUaOnSoxzbn6kLkYueSQzQ3 x2rueq2tObnYuexvQ776f/32bZGvnzp1ShUVFerRowcjsAB0etZf//rXv/ZubKkir0fyWiwW9evX T7t379bOnTtVWFio8vJyffjhh9q4caNCQkKUlpamHj16yDAM9enTx73usWPHVFpaqo0bN+qjjz7S RRddpBkzZqhr167as2eP8vLylJ+f754P4JVXXlFZWZlCQkJks9l06aWXymaz6XATj3netm2bnnji CRUUFDR6JHNDISEh6tWrl3bs2KHPPvvM42/64IMP1LVrV91yyy1+r/p16dJFFRUV2rlzp3vSzb17 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 QkKCDMNQSkqKHA6HJCk7O1t2u12GYWjdunXu9RcvXqzFixc3eAUAAAA0RH4FAACCyQUvYDkcDs2e PVv33nuvTNNUQkKC5s+fL0launSpXnjhBWVlZWnFihVyOBwqLCxURkaG5syZ4/1SAAAAIL8CAABB 6IIXsEpKSlRUVKSpU6dKktLS0pSZmal9+/apuLhY8fHxio+PV1FRkUpKSrRq1SqlpqYqLi7O+6UA AABAfgUAAILQBS9gFRQUSJLi4+Pd/2uapoqLixUTE6OCggIVFBQoNjZWDodDubm57iuIAAAAaIz8 CgAABJuAKGCdOnXKu1mStGDBAs2aNUuTJk3SQw89pEcffVRpaWmaP39+o/kcAAAA4EJ+BQAAgo1h mqbp3diesrOzNXfuXGVkZCguLk7Z2dmaOXOmXn31VSUlJXms98gjj+jHP/6x/vSnP+m5557T/Pnz lZaWpunTp3u8Zr3ly5dr+fLl3s0AAACNzJs3T/PmzfNubpHly5e32mu1BPkVAAAIBK2ZX13wAlZh YaFSU1O1YsUKJSUlad26dbrvvvu0ZcsWj3kY0tPTlZaWJklas2aNVq5c6X5SzqJFi9zrAQAAXGgX uoBFfgUAAILNBb+FMDo6WrGxsdq4caNUlzylpKR4JFfZ2dkqLi7WlClTFB8fr+LiYvd8DYmJiQ1e DQAAAORXAAAg2FzwAlZUVJRWr16tp556SoZhKC8vT8uWLXMvdzgcWrhwoebOnauoqCglJSUpJiZG 0dHRkuRzeDsAAEBnRX4FAACCzQW/hRAAACDYXOhbCAEAAILNBR+BBQAAAAAAAPhDAQsAAAAAAAAB jQJWG8nOztbYsWNVWFjovcgnh8OhlJQUrVu3zntRp3IucVi3bp1SUlLkcDi8F3Vq6enp7qdI4Yzm 9Jdgi11LzkW+nMuxGSya02eCyYXY35b2q8WLFys9Pd27GUGuJee0lvaxYHMucbgQ54KOINhyhNbS nP4SbLFrybnIl3M5NoNFc/pMMLkQ+9vSfhXo+RUFLHRo06dPV2ZmpqKiorwXdWorV67k8edNoL/g XHW2PtPZ9hdA0zgXNI38qmn0F5yrztZnOtv+tiUKWOepsLBQCQkJMgxDhmE0qlY+9thjMgxDdrtd 2dnZUoNqaP02vqqx69atc69jGIa7epqenq6bb75Zdru9ye3T09MbbeP9O8+1Ensh/Pvf/3bvY/0V m3Xr1ql///6y2+1KSUnRyy+/7N7/s8UlGC1evNjdv26++WZ3/6u/ylV/daijvffnq+Gxk56e7u4L Da9+NFwnISFBhYWFWrx4sVatWqUHHnggqK4SqgXnoqbiU6+pY7MjaHj1t+FVqfr/v+G5s/5Yathn GsYrJSVFN998sxYvXtzoCldhYaHGjh3rjnN2drY7Xt6xbEu+9tffeaE5++t91bnhNvX/bqpPnY2v ftXU661bt04PPPCAVq1a1ehzF8GB/KrtNHWsrSO/8kB+1bSGxw75lcu5nouaik+9po7NjsBXvlH/ /5NfNW9/ya+ahwLWeXA4HJo9e7buvfdemaaprKwsbdq0yX1Q7d27V6dPn5Zpmnr44Ye1cOFCORwO zZ8/XwkJCTJNUwUFBTpw4IA2bdrk8drZ2dmaP3++srKyZJqmHn/8cS1ZssTdUbdt26Z9+/YpKytL n376qXv7+k5Z//c89NBDKiws9Pida9eu1axZs9x/Z6B69tln3fu4bNky99974sQJvf/++8rMzFR4 eLjHNr7iEoyys7O1bNkyZWVlad++fdq2bZv3KlJdP0xNTZVpmpozZ45HPwpGhYWFuu+++7R27VqV lJQoLy/PexUdPnxYDz30kPv4uvfee7Vq1SotWrRIc+bM0eOPPx5UV1j37t2rfv36yTRNpaWlnfVc VFhY2GR86n344Yc6cuSI1q5dq9/85jcBfy5prry8PJWUlGjt2rVas2ZNo/1atmyZJKmkpERLlizR hg0bPJY3pbCwULfccoteeOEFmaaplJQUzZ49+4Ifg805L7Rkfxt+dpWUlEiS5s+f771ak5rqV9nZ 2Zo1a5b7eFbd602fPl2PP/645syZo5UrV3q/FDo48qu2RX7lH/lV08ivGiO/ah7yK/Kr1kQB6zxE RUUpMzPTfSKOj49Xt27d3Mu7d++uBQsWSJLmzJmjoqIi7dmzRytXrnR3iOjoaA0cONC9Tb2kpCQd PHhQSUlJkqTExESP5SkpKYqLi9OwYcM0fvx4qS7hy8jIUFpamvs1tm/fLknKzMx0t0+ZMkXjx49X QUFBg1cMPPfee6/i4uKUlJSkKVOmaOPGjZKkHj16KD4+3nt1yUdcgtXGjRs1ZcoUJSUlKS4uTvfe e6/3KlJdP5w6daokuftAMMvKytLAgQM1ZcoURUVFaeHChd6rNLJo0aKgSqi8+eoDzTkXqYn4pKam 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 --0000000000000cac62062ce1f3d0--