<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>46325</bug_id>
          
          <creation_ts>2023-05-31 09:09:24 +0300</creation_ts>
          <short_desc>vis update to 0.8 version</short_desc>
          <delta_ts>2023-06-06 22:33:54 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>vis</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>NOTABUG</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="VikaB">vikabu2002</reporter>
          <assigned_to name="Nobody&apos;s working on this, feel free to take it">nobody</assigned_to>
          <cc>vikabu2002</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>226752</commentid>
    <comment_count>0</comment_count>
      <attachid>13321</attachid>
    <who name="VikaB">vikabu2002</who>
    <bug_when>2023-05-31 09:09:24 +0300</bug_when>
    <thetext>Created attachment 13321
patch update to 0.6 =&gt; 0.8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226753</commentid>
    <comment_count>1</comment_count>
      <attachid>13322</attachid>
    <who name="VikaB">vikabu2002</who>
    <bug_when>2023-05-31 09:09:52 +0300</bug_when>
    <thetext>Created attachment 13322
patch for spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226980</commentid>
    <comment_count>2</comment_count>
      <attachid>13367</attachid>
    <who name="VikaB">vikabu2002</who>
    <bug_when>2023-06-04 14:28:03 +0300</bug_when>
    <thetext>Created attachment 13367
patch for spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226981</commentid>
    <comment_count>3</comment_count>
    <who name="VikaB">vikabu2002</who>
    <bug_when>2023-06-04 14:31:38 +0300</bug_when>
    <thetext>исходники текущей версии: https://codeload.github.com/martanne/vis/tar.gz/refs/tags/v0.6
исходники новой версии: https://codeload.github.com/martanne/vis/tar.gz/refs/tags/v0.8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227147</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2023-06-06 22:33:54 +0300</bug_when>
    <thetext>Передайте, пожалуйста, тем, кто предложил такой вариант участия, что от отправки такого рода патчей на спеки таким образом нет практической пользы ни для мантейнеров, ни для репозитория.  Процесс сопровождения пакетов в репозитории устроен совершенно иначе.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13321</attachid>
            <date>2023-05-31 09:09:24 +0300</date>
            <delta_ts>2023-05-31 09:09:24 +0300</delta_ts>
            <desc>patch update to 0.6 =&gt; 0.8</desc>
            <filename>vis-0.8.patch</filename>
            <type>text/plain</type>
            <size>177102</size>
            <attacher name="VikaB">vikabu2002</attacher>
            
              <data encoding="base64">ZGlmZiAtdXIgdmlzLTAuNi8uZ2l0aHViL3dvcmtmbG93cy9jb3Zlcml0eS1zY2FuLnltbCB2aXMt
MC44Ly5naXRodWIvd29ya2Zsb3dzL2NvdmVyaXR5LXNjYW4ueW1sCi0tLSB2aXMtMC42Ly5naXRo
dWIvd29ya2Zsb3dzL2NvdmVyaXR5LXNjYW4ueW1sCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZp
cy0wLjgvLmdpdGh1Yi93b3JrZmxvd3MvY292ZXJpdHktc2Nhbi55bWwJMjAyMi0xMS0wMSAxNjo1
MDoxMApAQCAtMjQsOSArMjQsMTQgQEAKIAogICAgIC0gbmFtZTogRG93bmxvYWQgQ292ZXJpdHkg
QnVpbGQgVG9vbAogICAgICAgcnVuOiB8Ci0gICAgICAgIHdnZXQgLXEgaHR0cHM6Ly9zY2FuLmNv
dmVyaXR5LmNvbS9kb3dubG9hZC9jeHgvbGludXg2NCAtLXBvc3QtZGF0YSAidG9rZW49JFRPS0VO
JnByb2plY3Q9bWFydGFubmUvdmlzIiAtTyBjb3YtYW5hbHlzaXMtbGludXg2NC50YXIuZ3oKKyAg
ICAgICAgd2dldCAtcSBodHRwczovL3NjYW4uY292ZXJpdHkuY29tL2Rvd25sb2FkL2N4eC9saW51
eDY0IC0tcG9zdC1kYXRhICJ0b2tlbj0kVE9LRU4mcHJvamVjdD1tYXJ0YW5uZS92aXMiIC1PIGNv
dmVyaXR5X3Rvb2wudGd6CisgICAgICAgIHdnZXQgLXEgaHR0cHM6Ly9zY2FuLmNvdmVyaXR5LmNv
bS9kb3dubG9hZC9jeHgvbGludXg2NCAtLXBvc3QtZGF0YSAidG9rZW49JFRPS0VOJnByb2plY3Q9
bWFydGFubmUvdmlzJm1kNT0xIiAtTyBjb3Zlcml0eV90b29sLm1kNQorICAgICAgICBpZiAhIChj
YXQgY292ZXJpdHlfdG9vbC5tZDU7IGVjaG8gIiAgY292ZXJpdHlfdG9vbC50Z3oiKSB8IG1kNXN1
bSAtYyAtLXN0YXR1czsgdGhlbgorICAgICAgICAgIGVjaG8gIkRvd25sb2FkIGNoZWNrc3VtIHZl
cmlmaWNhdGlvbiBmYWlsZWQiCisgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCiAgICAgICAg
IG1rZGlyIGNvdi1hbmFseXNpcy1saW51eDY0Ci0gICAgICAgIHRhciB4emYgY292LWFuYWx5c2lz
LWxpbnV4NjQudGFyLmd6IC0tc3RyaXAgMSAtQyBjb3YtYW5hbHlzaXMtbGludXg2NAorICAgICAg
ICB0YXIgeHpmIGNvdmVyaXR5X3Rvb2wudGd6IC0tc3RyaXAgMSAtQyBjb3YtYW5hbHlzaXMtbGlu
dXg2NAogICAgICAgZW52OgogICAgICAgICBUT0tFTjogJHt7IHNlY3JldHMuQ09WRVJJVFlfU0NB
Tl9UT0tFTiB9fQogCmRpZmYgLXVyIHZpcy0wLjYvLmdpdGh1Yi93b3JrZmxvd3MvbWFjb3MueW1s
IHZpcy0wLjgvLmdpdGh1Yi93b3JrZmxvd3MvbWFjb3MueW1sCi0tLSB2aXMtMC42Ly5naXRodWIv
d29ya2Zsb3dzL21hY29zLnltbAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44Ly5naXRo
dWIvd29ya2Zsb3dzL21hY29zLnltbAkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC00OSw0ICs0OSwx
MCBAQAogICAgICAgZW52OgogICAgICAgICBDT0RFQ09WX1RPS0VOOiAke3sgc2VjcmV0cy5DT0RF
Q09WX1RPS0VOIH19CiAgICAgICBydW46IHwKLSAgICAgICAgYmFzaCA8KGN1cmwgLXMgaHR0cHM6
Ly9jb2RlY292LmlvL2Jhc2gpCisgICAgICAgIGN1cmwgLXMgaHR0cHM6Ly9jb2RlY292LmlvL2Jh
c2ggPiBjb2RlY292CisgICAgICAgIGN1cmwgLXMgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRl
bnQuY29tL2NvZGVjb3YvY29kZWNvdi1iYXNoL21hc3Rlci9TSEEyNTZTVU0gPiBjb2RlY292LnNo
YTI1NgorICAgICAgICBpZiAhIHNoYTI1NnN1bSAtYyAtLWlnbm9yZS1taXNzaW5nIC0tc3RhdHVz
IGNvZGVjb3Yuc2hhMjU2IDsgdGhlbgorICAgICAgICAgIGVjaG8gIkRvd25sb2FkIGNoZWNrc3Vt
IHZlcmlmaWNhdGlvbiBmYWlsZWQiCisgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCisgICAg
ICAgIGJhc2ggPCBjb2RlY292CmRpZmYgLXVyIHZpcy0wLjYvLmdpdGh1Yi93b3JrZmxvd3MvdWJ1
bnR1LnltbCB2aXMtMC44Ly5naXRodWIvd29ya2Zsb3dzL3VidW50dS55bWwKLS0tIHZpcy0wLjYv
LmdpdGh1Yi93b3JrZmxvd3MvdWJ1bnR1LnltbAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMt
MC44Ly5naXRodWIvd29ya2Zsb3dzL3VidW50dS55bWwJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAt
NTUsNCArNTUsMTAgQEAKICAgICAgIGVudjoKICAgICAgICAgQ09ERUNPVl9UT0tFTjogJHt7IHNl
Y3JldHMuQ09ERUNPVl9UT0tFTiB9fQogICAgICAgcnVuOiB8Ci0gICAgICAgIGJhc2ggPChjdXJs
IC1zIGh0dHBzOi8vY29kZWNvdi5pby9iYXNoKQorICAgICAgICBjdXJsIC1zIGh0dHBzOi8vY29k
ZWNvdi5pby9iYXNoID4gY29kZWNvdgorICAgICAgICBjdXJsIC1zIGh0dHBzOi8vcmF3LmdpdGh1
YnVzZXJjb250ZW50LmNvbS9jb2RlY292L2NvZGVjb3YtYmFzaC9tYXN0ZXIvU0hBMjU2U1VNID4g
Y29kZWNvdi5zaGEyNTYKKyAgICAgICAgaWYgISBzaGEyNTZzdW0gLWMgLS1pZ25vcmUtbWlzc2lu
ZyAtLXN0YXR1cyBjb2RlY292LnNoYTI1NiA7IHRoZW4KKyAgICAgICAgICBlY2hvICJEb3dubG9h
ZCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIgorICAgICAgICAgIGV4aXQgMQorICAgICAg
ICBmaQorICAgICAgICBiYXNoIDwgY29kZWNvdgpkaWZmIC11ciB2aXMtMC42Ly5naXRodWIvd29y
a2Zsb3dzL3dpbmRvd3MueW1sIHZpcy0wLjgvLmdpdGh1Yi93b3JrZmxvd3Mvd2luZG93cy55bWwK
LS0tIHZpcy0wLjYvLmdpdGh1Yi93b3JrZmxvd3Mvd2luZG93cy55bWwJMjAyMC0wNi0wNyAxMzoy
NToyMAorKysgdmlzLTAuOC8uZ2l0aHViL3dvcmtmbG93cy93aW5kb3dzLnltbAkyMDIyLTExLTAx
IDE2OjUwOjEwCkBAIC0yMSw4ICsyMSwxMSBAQAogICAgICAgcnVuOiB8CiAgICAgICAgIGNob2Nv
IGluc3RhbGwgLS1uby1wcm9ncmVzcyAtLXllcyAtLWZvcmNlIC0tc291cmNlPWN5Z3dpbiBnY2Mt
Y29yZSxsaWJ0b29sLG1ha2Usd2dldCxwa2ctY29uZmlnCiAgICAgICAgIGNob2NvIGluc3RhbGwg
LS1uby1wcm9ncmVzcyAtLXllcyAtLWZvcmNlIC0tc291cmNlPWN5Z3dpbiBsdWEsbHVhLWRldmVs
LGx1YS1scGVnLGxpYm5jdXJzZXMtZGV2ZWwKLSAgICAgICAgZWNobyAnOjphZGQtcGF0aDo6Qzpc
dG9vbHNcY3lnd2luXGJpbicKIAorICAgIC0gbmFtZTogU2V0dXAgJFBBVEgKKyAgICAgIHNoZWxs
OiBiYXNoCisgICAgICBydW46IGVjaG8gJ0M6XHRvb2xzXGN5Z3dpblxiaW4nID4+ICRHSVRIVUJf
UEFUSAorCiAgICAgLSBuYW1lOiBHaXQgY29uZmlndXJhdGlvbgogICAgICAgcnVuOiB8CiAgICAg
ICAgIGdpdCBjb25maWcgLS1nbG9iYWwgY29yZS5hdXRvY3JsZiBpbnB1dApAQCAtNTEsNCArNTQs
MTEgQEAKICAgICAgIHNoZWxsOiBiYXNoCiAgICAgICBlbnY6CiAgICAgICAgIENPREVDT1ZfVE9L
RU46ICR7eyBzZWNyZXRzLkNPREVDT1ZfVE9LRU4gfX0KLSAgICAgIHJ1bjogYmFzaCA8KGN1cmwg
LXMgaHR0cHM6Ly9jb2RlY292LmlvL2Jhc2gpCisgICAgICBydW46IHwKKyAgICAgICAgY3VybCAt
cyBodHRwczovL2NvZGVjb3YuaW8vYmFzaCA+IGNvZGVjb3YKKyAgICAgICAgY3VybCAtcyBodHRw
czovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY29kZWNvdi9jb2RlY292LWJhc2gvbWFzdGVy
L1NIQTI1NlNVTSA+IGNvZGVjb3Yuc2hhMjU2CisgICAgICAgIGlmICEgc2hhMjU2c3VtIC1jIC0t
aWdub3JlLW1pc3NpbmcgLS1zdGF0dXMgY29kZWNvdi5zaGEyNTYgOyB0aGVuCisgICAgICAgICAg
ZWNobyAiRG93bmxvYWQgY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGZhaWxlZCIKKyAgICAgICAgICBl
eGl0IDEKKyAgICAgICAgZmkKKyAgICAgICAgYmFzaCA8IGNvZGVjb3YKZGlmZiAtdXIgdmlzLTAu
Ni8uZ2l0aWdub3JlIHZpcy0wLjgvLmdpdGlnbm9yZQotLS0gdmlzLTAuNi8uZ2l0aWdub3JlCTIw
MjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvLmdpdGlnbm9yZQkyMDIyLTExLTAxIDE2OjUw
OjEwCkBAIC0xMiw1ICsxMiwzIEBACiAqLmdjb3YKICouaHRtbAogKi5vCi0qLnN3bwotKi5zd3AK
ZGlmZiAtdXIgdmlzLTAuNi9Eb2NrZXJmaWxlIHZpcy0wLjgvRG9ja2VyZmlsZQotLS0gdmlzLTAu
Ni9Eb2NrZXJmaWxlCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvRG9ja2VyZmlsZQky
MDIyLTExLTAxIDE2OjUwOjEwCkBAIC0xLDUgKzEsNSBAQAogIyBSdW4gJ21ha2UgZG9ja2VyJyB0
byBidWlsZCBhIHN0YXRpY2FsbHkgbGlua2VkIHZpcyBleGVjdXRhYmxlIQotRlJPTSBpMzg2L2Fs
cGluZTozLjEyCitGUk9NIGkzODYvYWxwaW5lOjMuMTMKIFJVTiBhcGsgdXBkYXRlICYmIGFwayBh
ZGQgLS11cGdyYWRlIC0tbm8tY2FjaGUgXAogCWFjbC1kZXYgXAogCWFjbC1zdGF0aWMgXApkaWZm
IC11ciB2aXMtMC42L0xJQ0VOU0UgdmlzLTAuOC9MSUNFTlNFCi0tLSB2aXMtMC42L0xJQ0VOU0UJ
MjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC9MSUNFTlNFCTIwMjItMTEtMDEgMTY6NTA6
MTAKQEAgLTEsNiArMSw2IEBACiB2aXMgYXMgYSB3aG9sZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
Zm9sbG93aW5nIHN0YW5kYXJkIElTQyBsaWNlbnNlOgogCi0gQ29weXJpZ2h0IMKpIDIwMTQtMjAx
OCBNYXJjIEFuZHLDqSBUYW5uZXIsIGV0IGFsLgorIENvcHlyaWdodCDCqSAyMDE0LTIwMjAgTWFy
YyBBbmRyw6kgVGFubmVyLCBldCBhbC4KIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogIHB1cnBvc2Ugd2l0
aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJv
dmUKZGlmZiAtdXIgdmlzLTAuNi9NYWtlZmlsZSB2aXMtMC44L01ha2VmaWxlCi0tLSB2aXMtMC42
L01ha2VmaWxlCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvTWFrZWZpbGUJMjAyMi0x
MS0wMSAxNjo1MDoxMApAQCAtMiwxMCArMiwzMSBAQAogCiBSRUdFWF9TUkMgPz0gdGV4dC1yZWdl
eC5jCiAKLVNSQyA9IGFycmF5LmMgYnVmZmVyLmMgbGlidXRmLmMgbWFpbi5jIG1hcC5jIFwKLQlz
YW0uYyB0ZXh0LmMgdGV4dC1tb3Rpb25zLmMgdGV4dC1vYmplY3RzLmMgdGV4dC11dGlsLmMgXAot
CXVpLXRlcm1pbmFsLmMgdmlldy5jIHZpcy5jIHZpcy1sdWEuYyB2aXMtbW9kZXMuYyB2aXMtbW90
aW9ucy5jIFwKLQl2aXMtb3BlcmF0b3JzLmMgdmlzLXJlZ2lzdGVycy5jIHZpcy1tYXJrcy5jIHZp
cy1wcm9tcHQuYyB2aXMtdGV4dC1vYmplY3RzLmMgJChSRUdFWF9TUkMpCitTUkMgPSBhcnJheS5j
IFwKKwlidWZmZXIuYyBcCisJbGlidXRmLmMgXAorCW1haW4uYyBcCisJbWFwLmMgXAorCXNhbS5j
IFwKKwl0ZXh0LmMgXAorCXRleHQtY29tbW9uLmMgXAorCXRleHQtaW8uYyBcCisJdGV4dC1pdGVy
YXRvci5jIFwKKwl0ZXh0LW1vdGlvbnMuYyBcCisJdGV4dC1vYmplY3RzLmMgXAorCXRleHQtdXRp
bC5jIFwKKwl1aS10ZXJtaW5hbC5jIFwKKwl2aWV3LmMgXAorCXZpcy5jIFwKKwl2aXMtbHVhLmMg
XAorCXZpcy1tYXJrcy5jIFwKKwl2aXMtbW9kZXMuYyBcCisJdmlzLW1vdGlvbnMuYyBcCisJdmlz
LW9wZXJhdG9ycy5jIFwKKwl2aXMtcHJvbXB0LmMgXAorCXZpcy1yZWdpc3RlcnMuYyBcCisJdmlz
LXRleHQtb2JqZWN0cy5jIFwKKwkkKFJFR0VYX1NSQykKIAogRUxGID0gdmlzIHZpcy1tZW51IHZp
cy1kaWdyYXBoCiBFWEVDVVRBQkxFUyA9ICQoRUxGKSB2aXMtY2xpcGJvYXJkIHZpcy1jb21wbGV0
ZSB2aXMtb3BlbgpAQCAtMTQsNyArMzUsNyBAQAogCiBET0NVTUVOVEFUSU9OID0gTElDRU5TRSBS
RUFETUUubWQKIAotVkVSU0lPTiA9IHYwLjYKK1ZFUlNJT04gPSAwLjgKIAogQ09ORklHX0hFTFAg
Pz0gMQogQ09ORklHX0NVUlNFUyA/PSAxCkBAIC0xMjEsMTEgKzE0MiwxOSBAQAogCVsgLWUgdGVz
dC9NYWtlZmlsZSBdIHx8ICQoTUFLRSkgdGVzdC11cGRhdGUKIAlAJChNQUtFKSAtQyB0ZXN0CiAK
K3Rlc3RjbGVhbjoKKwlAZWNobyBjbGVhbmluZyB0aGUgdGVzdCBhcnRpZmFjdHMKKwlbICEgLWUg
dGVzdC9NYWtlZmlsZSBdIHx8ICQoTUFLRSkgLUMgdGVzdCBjbGVhbgorCiBjbGVhbjoKIAlAZWNo
byBjbGVhbmluZwogCUBybSAtZiAkKEVMRikgdmlzLXNpbmdsZSB2aXMtc2luZ2xlLXBheWxvYWQu
aW5jIHZpcy0qLnRhci5neiAqLmdjb3YgKi5nY2RhICouZ2NubwogCi1kaXN0OiBjbGVhbgorZGlz
dGNsZWFuOiBjbGVhbiB0ZXN0Y2xlYW4KKwlAZWNobyBjbGVhbmluZyBidWlsZCBjb25maWd1cmF0
aW9uCisJQHJtIC1mIGNvbmZpZy5oIGNvbmZpZy5taworCitkaXN0OiBkaXN0Y2xlYW4KIAlAZWNo
byBjcmVhdGluZyBkaXN0IHRhcmJhbGwKIAlAZ2l0IGFyY2hpdmUgLS1wcmVmaXg9dmlzLSR7VkVS
U0lPTn0vIC1vIHZpcy0ke1ZFUlNJT059LnRhci5neiBIRUFECiAKQEAgLTE5Miw0ICsyMjEsNCBA
QAogCUBlY2hvIHJlbW92aW5nIHN1cHBvcnQgZmlsZXMgZnJvbSAke0RFU1RESVJ9JHtTSEFSRVBS
RUZJWH0vdmlzCiAJQHJtIC1yZiAke0RFU1RESVJ9JHtTSEFSRVBSRUZJWH0vdmlzCiAKLS5QSE9O
WTogYWxsIGNsZWFuIGRpc3QgaW5zdGFsbCBpbnN0YWxsLXN0cmlwIHVuaW5zdGFsbCBkZWJ1ZyBw
cm9maWxlIGNvdmVyYWdlIHRlc3QgdGVzdC11cGRhdGUgbHVhZG9jIGx1YWRvYy1hbGwgbHVhY2hl
Y2sgbWFuIGRvY2tlci1raWxsIGRvY2tlciBkb2NrZXItY2xlYW4KKy5QSE9OWTogYWxsIGNsZWFu
IHRlc3RjbGVhbiBkaXN0IGRpc3RjbGVhbiBpbnN0YWxsIGluc3RhbGwtc3RyaXAgdW5pbnN0YWxs
IGRlYnVnIHByb2ZpbGUgY292ZXJhZ2UgdGVzdCB0ZXN0LXVwZGF0ZSBsdWFkb2MgbHVhZG9jLWFs
bCBsdWFjaGVjayBtYW4gZG9ja2VyLWtpbGwgZG9ja2VyIGRvY2tlci1jbGVhbgpkaWZmIC11ciB2
aXMtMC42L1JFQURNRS5tZCB2aXMtMC44L1JFQURNRS5tZAotLS0gdmlzLTAuNi9SRUFETUUubWQJ
MjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC9SRUFETUUubWQJMjAyMi0xMS0wMSAxNjo1
MDoxMApAQCAtMSwxMCArMSwxMCBAQAogIyBWaXMgLSBDb21iaW5pbmcgTW9kYWwgRWRpdGluZyB3
aXRoIFN0cnVjdHVyYWwgUmVndWxhciBFeHByZXNzaW9ucwogCi1bIVtidWlsZHMuc3IuaHQgc3Rh
dHVzXShodHRwczovL2J1aWxkcy5zci5odC9+bWFydGFubmUvdmlzLnN2ZyldKGh0dHBzOi8vYnVp
bGRzLnNyLmh0L35tYXJ0YW5uZS92aXMpCitbIVtidWlsZHMuc3IuaHQgc3RhdHVzXShodHRwczov
L2J1aWxkcy5zci5odC9+bWFydGFubmUvdmlzL2NvbW1pdHMuc3ZnKV0oaHR0cHM6Ly9idWlsZHMu
c3IuaHQvfm1hcnRhbm5lL3Zpcy9jb21taXRzPykKIFshW0NvdmVyaXR5IFNjYW4gQnVpbGQgU3Rh
dHVzXShodHRwczovL3NjYW4uY292ZXJpdHkuY29tL3Byb2plY3RzLzM5MzkvYmFkZ2Uuc3ZnKV0o
aHR0cHM6Ly9zY2FuLmNvdmVyaXR5LmNvbS9wcm9qZWN0cy8zOTM5KQogWyFbY29kZWNvdl0oaHR0
cHM6Ly9jb2RlY292LmlvL2doL21hcnRhbm5lL3Zpcy9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdl
LnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9tYXJ0YW5uZS92aXMpCiBbIVtEb2N1bWVudGF0
aW9uIFN0YXR1c10oaHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvdmlzL2JhZGdlLz92
ZXJzaW9uPW1hc3RlcildKGh0dHA6Ly92aXMucmVhZHRoZWRvY3MuaW8vZW4vbWFzdGVyLz9iYWRn
ZT1tYXN0ZXIpCi1bIVsjdmlzLWVkaXRvciBvbiBmcmVlbm9kZV0oaHR0cHM6Ly9pbWcuc2hpZWxk
cy5pby9iYWRnZS9JUkMtJTIzdmlzLS1lZGl0b3ItYmx1ZS5zdmcpXShpcmM6Ly9pcmMuZnJlZW5v
ZGUubmV0L3Zpcy1lZGl0b3IpCitbIVsjdmlzLWVkaXRvciBvbiBsaWJlcmFdKGh0dHBzOi8vaW1n
LnNoaWVsZHMuaW8vYmFkZ2UvSVJDLSUyM3Zpcy0tZWRpdG9yLWJsdWUuc3ZnKV0oaXJjczovL2ly
Yy5saWJlcmEuY2hhdDo2Njk3L3Zpcy1lZGl0b3IpCiAKIFZpcyBhaW1zIHRvIGJlIGEgbW9kZXJu
LCBsZWdhY3ktZnJlZSwgc2ltcGxlIHlldCBlZmZpY2llbnQgZWRpdG9yLAogY29tYmluaW5nIHRo
ZSBzdHJlbmd0aHMgb2YgYm90aCB2aShtKSBhbmQgc2FtLgpAQCAtNjAsOCArNjAsOCBAQAogICAg
ICQgLi9jb25maWd1cmUgJiYgbWFrZSAmJiBzdWRvIG1ha2UgaW5zdGFsbAogCiBCeSBkZWZhdWx0
IHRoZSBgY29uZmlndXJlYCBzY3JpcHQgd2lsbCB0cnkgdG8gYXV0byBkZXRlY3Qgc3VwcG9ydCBm
b3IKLUx1YS4gU2VlIGBjb25maWd1cmUgLS1oZWxwYCBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBv
cHRpb25zLiBZb3UgY2FuCi1hbHNvIG1hbnVhbGx5IHR3ZWFrIHRoZSBnZW5lcmF0ZWQgYGNvbmZp
Zy5ta2AgZmlsZS4KK0x1YSB1c2luZyBgcGtnLWNvbmZpZygxKWAuIFNlZSBgY29uZmlndXJlIC0t
aGVscGAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQKK29wdGlvbnMuIFlvdSBjYW4gYWxzbyBtYW51
YWxseSB0d2VhayB0aGUgZ2VuZXJhdGVkIGBjb25maWcubWtgIGZpbGUuCiAKIE9yIHNpbXBseSB1
c2Ugb25lIG9mIHRoZQogW2Rpc3RyaWJ1dGlvbiBwcm92aWRlZCBwYWNrYWdlc10oaHR0cHM6Ly9n
aXRodWIuY29tL21hcnRhbm5lL3Zpcy93aWtpL0Rpc3RyaWJ1dGlvbi1QYWNrYWdlcykuCkBAIC0x
MjcsNCArMTI3LDQgQEAKIAogQ2hlY2tvdXQgdGhlIFtEZXZlbG9wZXIgT3ZlcnZpZXddKGh0dHBz
Oi8vZ2l0aHViLmNvbS9tYXJ0YW5uZS92aXMvd2lraS9EZXZlbG9wZXItT3ZlcnZpZXcpCiB0byBn
ZXQgc3RhcnRlZCBhbmQgZG8gbm90IGhlc2l0YXRlIHRvIGFzayBxdWVzdGlvbiBpbiB0aGUgYCN2
aXMtZWRpdG9yYAotSVJDIGNoYW5uZWwgb24gZnJlZW5vZGUuCitJUkMgY2hhbm5lbCBvbiBsaWJl
cmEgKFtqb2luIHZpYSB5b3VyIGJyb3dzZXJdKGh0dHBzOi8vd2ViLmxpYmVyYS5jaGF0LyN2aXMt
ZWRpdG9yKSkuCmRpZmYgLXVyIHZpcy0wLjYvYXJyYXkuYyB2aXMtMC44L2FycmF5LmMKLS0tIHZp
cy0wLjYvYXJyYXkuYwkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L2FycmF5LmMJMjAy
Mi0xMS0wMSAxNjo1MDoxMApAQCAtMTEsNyArMTEsNyBAQAogCWFycmF5X2luaXRfc2l6ZWQoYXJy
LCBzaXplb2Yodm9pZCopKTsKIH0KIAotdm9pZCBhcnJheV9pbml0X2Zyb20oQXJyYXkgKmFyciwg
QXJyYXkgKmZyb20pIHsKK3ZvaWQgYXJyYXlfaW5pdF9mcm9tKEFycmF5ICphcnIsIGNvbnN0IEFy
cmF5ICpmcm9tKSB7CiAJYXJyYXlfaW5pdF9zaXplZChhcnIsIGZyb20tPmVsZW1fc2l6ZSk7CiB9
CiAKQEAgLTU1LDcgKzU1LDcgQEAKIAkJbWVtc2V0KGFyci0+aXRlbXMsIDAsIGFyci0+Y291bnQg
KiBhcnItPmVsZW1fc2l6ZSk7CiB9CiAKLXZvaWQgKmFycmF5X2dldChBcnJheSAqYXJyLCBzaXpl
X3QgaWR4KSB7Cit2b2lkICphcnJheV9nZXQoY29uc3QgQXJyYXkgKmFyciwgc2l6ZV90IGlkeCkg
ewogCWlmIChpZHggPj0gYXJyLT5sZW4pIHsKIAkJZXJybm8gPSBFSU5WQUw7CiAJCXJldHVybiBO
VUxMOwpAQCAtNjMsNyArNjMsNyBAQAogCXJldHVybiBhcnItPml0ZW1zICsgKGlkeCAqIGFyci0+
ZWxlbV9zaXplKTsKIH0KIAotdm9pZCAqYXJyYXlfZ2V0X3B0cihBcnJheSAqYXJyLCBzaXplX3Qg
aWR4KSB7Cit2b2lkICphcnJheV9nZXRfcHRyKGNvbnN0IEFycmF5ICphcnIsIHNpemVfdCBpZHgp
IHsKIAlpZiAoYXJyLT5lbGVtX3NpemUgIT0gc2l6ZW9mKHZvaWQqKSkgewogCQllcnJubyA9IEVO
T1RTVVA7CiAJCXJldHVybiBOVUxMOwpAQCAtMTI0LDExICsxMjQsMTEgQEAKIAlyZXR1cm4gdHJ1
ZTsKIH0KIAotc2l6ZV90IGFycmF5X2xlbmd0aChBcnJheSAqYXJyKSB7CitzaXplX3QgYXJyYXlf
bGVuZ3RoKGNvbnN0IEFycmF5ICphcnIpIHsKIAlyZXR1cm4gYXJyLT5sZW47CiB9CiAKLXNpemVf
dCBhcnJheV9jYXBhY2l0eShBcnJheSAqYXJyKSB7CitzaXplX3QgYXJyYXlfY2FwYWNpdHkoY29u
c3QgQXJyYXkgKmFycikgewogCXJldHVybiBhcnItPmNvdW50OwogfQogCkBAIC0xNjUsNyArMTY1
LDcgQEAKIAlyZXR1cm4gaXRlbTsKIH0KIAotdm9pZCAqYXJyYXlfcGVlayhBcnJheSAqYXJyKSB7
Cit2b2lkICphcnJheV9wZWVrKGNvbnN0IEFycmF5ICphcnIpIHsKIAlpZiAoYXJyLT5sZW4gPT0g
MCkKIAkJcmV0dXJuIE5VTEw7CiAJcmV0dXJuIGFycmF5X2dldChhcnIsIGFyci0+bGVuIC0gMSk7
CmRpZmYgLXVyIHZpcy0wLjYvYXJyYXkuaCB2aXMtMC44L2FycmF5LmgKLS0tIHZpcy0wLjYvYXJy
YXkuaAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L2FycmF5LmgJMjAyMi0xMS0wMSAx
Njo1MDoxMApAQCAtNDQsNyArNDQsNyBAQAogICovCiB2b2lkIGFycmF5X2luaXRfc2l6ZWQoQXJy
YXkqLCBzaXplX3QgZWxlbV9zaXplKTsKIC8qKiBJbml0aWFsaXplIEFycmF5IGJ5IHVzaW5nIHRo
ZSBzYW1lIGVsZW1lbnQgc2l6ZSBhcyBpbiBgYGZyb21gYC4gKi8KLXZvaWQgYXJyYXlfaW5pdF9m
cm9tKEFycmF5KiwgQXJyYXkgKmZyb20pOwordm9pZCBhcnJheV9pbml0X2Zyb20oQXJyYXkqLCBj
b25zdCBBcnJheSAqZnJvbSk7CiAvKiogUmVsZWFzZSBzdG9yYWdlIHNwYWNlLiBSZWluaXRpYWxp
emVzIEFycmF5IG9iamVjdC4gKi8KIHZvaWQgYXJyYXlfcmVsZWFzZShBcnJheSopOwogLyoqCkBA
IC02Niw3ICs2Niw3IEBACiAgKiAgICAgICAgICAgICAgb2YgbmV3IGVsZW1lbnRzKSBtaWdodCBp
bnZhbGlkYXRlIHRoZSBwb2ludGVyLgogICogQGVuZHJzdAogICovCi12b2lkICphcnJheV9nZXQo
QXJyYXkqLCBzaXplX3QgaWR4KTsKK3ZvaWQgKmFycmF5X2dldChjb25zdCBBcnJheSosIHNpemVf
dCBpZHgpOwogLyoqCiAgKiBTZXQgYXJyYXkgZWxlbWVudC4KICAqIEByc3QKQEAgLTc2LDcgKzc2
LDcgQEAKICAqLwogYm9vbCBhcnJheV9zZXQoQXJyYXkqLCBzaXplX3QgaWR4LCB2b2lkICppdGVt
KTsKIC8qKiBEZXJlZmVyZW5jZSBwb2ludGVyIHN0b3JlZCBpbiBhcnJheSBlbGVtZW50LiAqLwot
dm9pZCAqYXJyYXlfZ2V0X3B0cihBcnJheSosIHNpemVfdCBpZHgpOwordm9pZCAqYXJyYXlfZ2V0
X3B0cihjb25zdCBBcnJheSosIHNpemVfdCBpZHgpOwogLyoqIFN0b3JlIHRoZSBhZGRyZXNzIHRv
IHdoaWNoIGBgaXRlbWBgIHBvaW50cyB0byBpbnRvIHRoZSBhcnJheS4gKi8KIGJvb2wgYXJyYXlf
c2V0X3B0cihBcnJheSosIHNpemVfdCBpZHgsIHZvaWQgKml0ZW0pOwogLyoqIEFkZCBlbGVtZW50
IHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiAqLwpAQCAtOTEsMTYgKzkxLDE2IEBACiAgKi8KIGJv
b2wgYXJyYXlfcmVtb3ZlKEFycmF5Kiwgc2l6ZV90IGlkeCk7CiAvKiogTnVtYmVyIG9mIGVsZW1l
bnRzIGN1cnJlbnRseSBzdG9yZWQgaW4gdGhlIGFycmF5LiAqLwotc2l6ZV90IGFycmF5X2xlbmd0
aChBcnJheSopOworc2l6ZV90IGFycmF5X2xlbmd0aChjb25zdCBBcnJheSopOwogLyoqIE51bWJl
ciBvZiBlbGVtZW50cyB3aGljaCBjYW4gYmUgc3RvcmVkIHdpdGhvdXQgZW5sYXJnaW5nIHRoZSBh
cnJheS4gKi8KLXNpemVfdCBhcnJheV9jYXBhY2l0eShBcnJheSopOworc2l6ZV90IGFycmF5X2Nh
cGFjaXR5KGNvbnN0IEFycmF5Kik7CiAvKiogUmVtb3ZlIGFsbCBlbGVtZW50cyB3aXRoIGluZGV4
IGdyZWF0ZXIgb3IgZXF1YWwgdG8gYGBsZW5ndGhgYCwga2VlcCBhbGxvY2F0ZWQgbWVtb3J5LiAq
LwogYm9vbCBhcnJheV90cnVuY2F0ZShBcnJheSosIHNpemVfdCBsZW5ndGgpOwogLyoqCiAgKiBD
aGFuZ2UgbGVuZ3RoLgogICogQHJzdAogICogLi4gbm90ZTo6IEhhcyB0byBiZSBsZXNzIG9yIGVx
dWFsIHRoYW4gdGhlIGNhcGFjaXR5LgotICogICAgICAgICAgIE5ld2x5IGFjY2VzaWJsZSBlbGVt
ZW50cyBwcmVzZXJ2ZSB0aGVpciBwcmV2aW91cyB2YWx1ZXMuCisgKiAgICAgICAgICAgTmV3bHkg
YWNjZXNzaWJsZSBlbGVtZW50cyBwcmVzZXJ2ZSB0aGVpciBwcmV2aW91cyB2YWx1ZXMuCiAgKiBA
ZW5kcnN0CiAgKi8KIGJvb2wgYXJyYXlfcmVzaXplKEFycmF5Kiwgc2l6ZV90IGxlbmd0aCk7CkBA
IC0xMjgsNiArMTI4LDYgQEAKICAqIC4uIHdhcm5pbmc6OiBUaGUgc2FtZSBvd25lcnNoaXAgcnVs
ZXMgYXMgZm9yIGBgYXJyYXlfZ2V0YGAgYXBwbHkuCiAgKiBAZW5kcnN0CiAgKi8KLXZvaWQgKmFy
cmF5X3BlZWsoQXJyYXkqKTsKK3ZvaWQgKmFycmF5X3BlZWsoY29uc3QgQXJyYXkqKTsKIAogI2Vu
ZGlmCmRpZmYgLXVyIHZpcy0wLjYvYnVmZmVyLmggdmlzLTAuOC9idWZmZXIuaAotLS0gdmlzLTAu
Ni9idWZmZXIuaAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L2J1ZmZlci5oCTIwMjIt
MTEtMDEgMTY6NTA6MTAKQEAgLTQ0LDExICs0NCwxMSBAQAogYm9vbCBidWZmZXJfaW5zZXJ0MChC
dWZmZXIqLCBzaXplX3QgcG9zLCBjb25zdCBjaGFyICpkYXRhKTsKIC8qKiBBcHBlbmQgZnVydGhl
ciBjb250ZW50IHRvIHRoZSBlbmQuICovCiBib29sIGJ1ZmZlcl9hcHBlbmQoQnVmZmVyKiwgY29u
c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7Ci0vKiogQXBwZW5kIE5VbC10ZXJtaW5hdGVkIGRh
dGEuICovCisvKiogQXBwZW5kIE5VTC10ZXJtaW5hdGVkIGRhdGEuICovCiBib29sIGJ1ZmZlcl9h
cHBlbmQwKEJ1ZmZlciosIGNvbnN0IGNoYXIgKmRhdGEpOwotLyoqIEluc2VydCBgYGxlbmBgIGJ5
dGVzIG9mIGBgZGF0YWBgIGF0IHRoZSBiZWdpbi4gKi8KKy8qKiBJbnNlcnQgYGBsZW5gYCBieXRl
cyBvZiBgYGRhdGFgYCBhdCB0aGUgc3RhcnQuICovCiBib29sIGJ1ZmZlcl9wcmVwZW5kKEJ1ZmZl
ciosIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwotLyoqIEluc2VydCBOVUwtdGVybWlu
YXRlZCBkYXRhIGF0IHRoZSBiZWdpbi4gKi8KKy8qKiBJbnNlcnQgTlVMLXRlcm1pbmF0ZWQgZGF0
YSBhdCB0aGUgc3RhcnQuICovCiBib29sIGJ1ZmZlcl9wcmVwZW5kMChCdWZmZXIqLCBjb25zdCBj
aGFyICpkYXRhKTsKIC8qKiBTZXQgZm9ybWF0dGVkIGJ1ZmZlciBjb250ZW50LCBlbnN1cmVzIE5V
TCB0ZXJtaW5hdGlvbiBvbiBzdWNjZXNzLiAqLwogYm9vbCBidWZmZXJfcHJpbnRmKEJ1ZmZlcios
IGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAyLCAz
KSkpOwpAQCAtNzUsNyArNzUsNyBAQAogLyoqCiAgKiBCb3Jyb3cgdW5kZXJseWluZyBidWZmZXIg
ZGF0YS4KICAqIEByc3QKLSAqIC4uIHdhcm5pbmc6OiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxl
IHRvIGBmcmVlKDMpYCBpdC4KKyAqIC4uIHdhcm5pbmc6OiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNp
YmxlIHRvIGBgZnJlZSgzKWBgIGl0LgogICogQGVuZHJzdAogICovCiBjaGFyICpidWZmZXJfbW92
ZShCdWZmZXIqKTsKZGlmZiAtdXIgdmlzLTAuNi9jb25maWcuZGVmLmggdmlzLTAuOC9jb25maWcu
ZGVmLmgKLS0tIHZpcy0wLjYvY29uZmlnLmRlZi5oCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZp
cy0wLjgvY29uZmlnLmRlZi5oCTIwMjItMTEtMDEgMTY6NTA6MTAKQEAgLTQ1LDIwICs0NSwxMiBA
QAogCXsgIiwiLCAgICAgICAgICAgICAgICAgIEFDVElPTihUT1RJTExfUkVWRVJTRSkgICAgICAg
ICAgICAgICAgICAgICAgfSwKIAl7ICIrIiwgICAgICAgICAgICAgICAgICBBTElBUygial4iKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAiLSIsICAgICAgICAgICAgICAg
ICAgQUxJQVMoImteIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCXsgIiAi
LCAgICAgICAgICAgICAgICAgIEFMSUFTKCI8U3BhY2U+IikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKLQl7ICI8U3BhY2U+IiwgICAgICAgICAgICBBTElBUygibCIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCi0JeyAiPEJhY2tzcGFjZT4iLCAgICAgICAgQUxJQVMo
ImgiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogCXsgIkIiLCAgICAgICAg
ICAgICAgICAgIEFDVElPTihDVVJTT1JfTE9OR1dPUkRfU1RBUlRfUFJFVikgICAgICAgICAgfSwK
IAl7ICJiIiwgICAgICAgICAgICAgICAgICBBQ1RJT04oQ1VSU09SX1dPUkRfU1RBUlRfUFJFVikg
ICAgICAgICAgICAgIH0sCi0JeyAiPEMtaD4iLCAgICAgICAgICAgICAgQUxJQVMoIjxCYWNrc3Bh
Y2U+IikgICAgICAgICAgICAgICAgICAgICAgICB9LAotCXsgIjxDLWo+IiwgICAgICAgICAgICAg
IEFMSUFTKCJqIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQl7ICI8Qy1u
PiIsICAgICAgICAgICAgICBBTElBUygiaiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCi0JeyAiPEMtcD4iLCAgICAgICAgICAgICAgQUxJQVMoImsiKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAogCXsgIkUiLCAgICAgICAgICAgICAgICAgIEFDVElPTihD
VVJTT1JfTE9OR1dPUkRfRU5EX05FWFQpICAgICAgICAgICAgfSwKIAl7ICJlIiwgICAgICAgICAg
ICAgICAgICBBQ1RJT04oQ1VSU09SX1dPUkRfRU5EX05FWFQpICAgICAgICAgICAgICAgIH0sCi0J
eyAiPEVudGVyPiIsICAgICAgICAgICAgQUxJQVMoImoiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAotCXsgIkYiLCAgICAgICAgICAgICAgICAgIEFDVElPTihUT19MRUZUKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQl7ICJmIiwgICAgICAgICAgICAgICAgICBB
Q1RJT04oVE9fUklHSFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisJeyAiRiIsICAg
ICAgICAgICAgICAgICAgQUNUSU9OKFRPX0xJTkVfTEVGVCkgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorCXsgImYiLCAgICAgICAgICAgICAgICAgIEFDVElPTihUT19MSU5FX1JJR0hUKSAgICAg
ICAgICAgICAgICAgICAgICAgfSwKIAl7ICJnbyIsICAgICAgICAgICAgICAgICBBQ1RJT04oQ1VS
U09SX0JZVEUpICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAiZ0giLCAgICAgICAgICAg
ICAgICAgQUNUSU9OKENVUlNPUl9CWVRFX0xFRlQpICAgICAgICAgICAgICAgICAgICB9LAogCXsg
ImdMIiwgICAgICAgICAgICAgICAgIEFDVElPTihDVVJTT1JfQllURV9SSUdIVCkgICAgICAgICAg
ICAgICAgICAgfSwKQEAgLTgzLDggKzc1LDggQEAKIAl7ICJNIiwgICAgICAgICAgICAgICAgICBB
Q1RJT04oQ1VSU09SX1dJTkRPV19MSU5FX01JRERMRSkgICAgICAgICAgIH0sCiAJeyAibiIsICAg
ICAgICAgICAgICAgICAgQUNUSU9OKENVUlNPUl9TRUFSQ0hfUkVQRUFUX0ZPUldBUkQpICAgICAg
ICB9LAogCXsgIk4iLCAgICAgICAgICAgICAgICAgIEFDVElPTihDVVJTT1JfU0VBUkNIX1JFUEVB
VF9CQUNLV0FSRCkgICAgICAgfSwKLQl7ICJUIiwgICAgICAgICAgICAgICAgICBBQ1RJT04oVElM
TF9MRUZUKSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0JeyAidCIsICAgICAgICAgICAg
ICAgICAgQUNUSU9OKFRJTExfUklHSFQpICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCXsg
IlQiLCAgICAgICAgICAgICAgICAgIEFDVElPTihUSUxMX0xJTkVfTEVGVCkgICAgICAgICAgICAg
ICAgICAgICAgfSwKKwl7ICJ0IiwgICAgICAgICAgICAgICAgICBBQ1RJT04oVElMTF9MSU5FX1JJ
R0hUKSAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAiVyIsICAgICAgICAgICAgICAgICAgQUNU
SU9OKENVUlNPUl9MT05HV09SRF9TVEFSVF9ORVhUKSAgICAgICAgICB9LAogCXsgInciLCAgICAg
ICAgICAgICAgICAgIEFDVElPTihDVVJTT1JfV09SRF9TVEFSVF9ORVhUKSAgICAgICAgICAgICAg
fSwKIAl7IDAgLyogZW1wdHkgbGFzdCBlbGVtZW50LCBhcnJheSB0ZXJtaW5hdG9yICovICAgICAg
ICAgICAgICAgICAgICAgIH0sCkBAIC0xMDQsNyArOTYsNiBAQAogCXsgImF9IiwgICAgICAgICAg
ICAgICAgIEFMSUFTKCJheyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIAl7
ICJhYiIsICAgICAgICAgICAgICAgICBBTElBUygiYSgiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCiAJeyAiYUIiLCAgICAgICAgICAgICAgICAgQUxJQVMoImF7IikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCXsgImFlIiwgICAgICAgICAgICAgICAgIEFD
VElPTihURVhUX09CSkVDVF9FTlRJUkVfT1VURVIpICAgICAgICAgICAgfSwKIAl7ICJhbCIsICAg
ICAgICAgICAgICAgICBBQ1RJT04oVEVYVF9PQkpFQ1RfTElORV9PVVRFUikgICAgICAgICAgICAg
IH0sCiAJeyAiYXAiLCAgICAgICAgICAgICAgICAgQUNUSU9OKFRFWFRfT0JKRUNUX1BBUkFHUkFQ
SF9PVVRFUikgICAgICAgICB9LAogCXsgImFzIiwgICAgICAgICAgICAgICAgIEFDVElPTihURVhU
X09CSkVDVF9TRU5URU5DRSkgICAgICAgICAgICAgICAgfSwKQEAgLTEyNiw3ICsxMTcsNiBAQAog
CXsgIml9IiwgICAgICAgICAgICAgICAgIEFMSUFTKCJpeyIpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKIAl7ICJpYiIsICAgICAgICAgICAgICAgICBBTElBUygiaSgiKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAiaUIiLCAgICAgICAgICAgICAgICAg
QUxJQVMoIml7IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCXsgImllIiwg
ICAgICAgICAgICAgICAgIEFDVElPTihURVhUX09CSkVDVF9FTlRJUkVfSU5ORVIpICAgICAgICAg
ICAgfSwKIAl7ICJpbCIsICAgICAgICAgICAgICAgICBBQ1RJT04oVEVYVF9PQkpFQ1RfTElORV9J
Tk5FUikgICAgICAgICAgICAgIH0sCiAJeyAiaXAiLCAgICAgICAgICAgICAgICAgQUNUSU9OKFRF
WFRfT0JKRUNUX1BBUkFHUkFQSCkgICAgICAgICAgICAgICB9LAogCXsgImlzIiwgICAgICAgICAg
ICAgICAgIEFDVElPTihURVhUX09CSkVDVF9TRU5URU5DRSkgICAgICAgICAgICAgICAgfSwKQEAg
LTE0MSwxNiArMTMxLDggQEAKIAl7ICJNIiwgICAgICAgICAgICAgICAgICBBQ1RJT04oU0VMRUNU
SU9OU19SRVNUT1JFKSAgICAgICAgICAgICAgICAgIH0sCiAJeyAifCIsICAgICAgICAgICAgICAg
ICAgQUNUSU9OKFNFTEVDVElPTlNfVU5JT04pICAgICAgICAgICAgICAgICAgICB9LAogCXsgIiYi
LCAgICAgICAgICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX0lOVEVSU0VDVCkgICAgICAgICAg
ICAgICAgfSwKLQl7ICIhIiwgICAgICAgICAgICAgICAgICBBQ1RJT04oU0VMRUNUSU9OU19DT01Q
TEVNRU5UKSAgICAgICAgICAgICAgIH0sCisJeyAifiIsICAgICAgICAgICAgICAgICAgQUNUSU9O
KFNFTEVDVElPTlNfQ09NUExFTUVOVCkgICAgICAgICAgICAgICB9LAogCXsgIlxcIiwgICAgICAg
ICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX01JTlVTKSAgICAgICAgICAgICAgICAgICAgfSwK
LQl7ICJ6fCIsICAgICAgICAgICAgICAgICBBQ1RJT04oU0VMRUNUSU9OU19DT01CSU5FX1VOSU9O
KSAgICAgICAgICAgIH0sCi0JeyAieiYiLCAgICAgICAgICAgICAgICAgQUNUSU9OKFNFTEVDVElP
TlNfQ09NQklORV9JTlRFUlNFQ1QpICAgICAgICB9LAotCXsgInorIiwgICAgICAgICAgICAgICAg
IEFDVElPTihTRUxFQ1RJT05TX0NPTUJJTkVfTE9OR0VSKSAgICAgICAgICAgfSwKLQl7ICJ6LSIs
ICAgICAgICAgICAgICAgICBBQ1RJT04oU0VMRUNUSU9OU19DT01CSU5FX1NIT1JURVIpICAgICAg
ICAgIH0sCi0JeyAiejwiLCAgICAgICAgICAgICAgICAgQUNUSU9OKFNFTEVDVElPTlNfQ09NQklO
RV9MRUZUTU9TVCkgICAgICAgICB9LAotCXsgIno+IiwgICAgICAgICAgICAgICAgIEFDVElPTihT
RUxFQ1RJT05TX0NPTUJJTkVfUklHSFRNT1NUKSAgICAgICAgfSwKLS8vCXsgIi0iLCAgICAgICAg
ICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX1JPVEFURV9MRUZUKSAgICAgICAgICAgICAgfSwK
LS8vCXsgIisiLCAgICAgICAgICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX1JPVEFURV9SSUdI
VCkgICAgICAgICAgICAgfSwKIAl7ICJfIiwgICAgICAgICAgICAgICAgICBBQ1RJT04oU0VMRUNU
SU9OU19UUklNKSAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAiPFMtVGFiPiIsICAgICAgICAg
ICAgQUNUSU9OKFNFTEVDVElPTlNfQUxJR05fSU5ERU5UX1JJR0hUKSAgICAgICB9LAogCXsgIjxU
YWI+IiwgICAgICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX0FMSUdOX0lOREVOVF9MRUZUKSAg
ICAgICAgfSwKQEAgLTE3MSw3ICsxNTMsNiBAQAogCXsgIjciLCAgICAgICAgICAgICAgICAgIEFD
VElPTihDT1VOVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIAl7ICI4IiwgICAg
ICAgICAgICAgICAgICBBQ1RJT04oQ09VTlQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCiAJeyAiOSIsICAgICAgICAgICAgICAgICAgQUNUSU9OKENPVU5UKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAotCXsgIn4iLCAgICAgICAgICAgICAgICAgIEFMSUFTKCJnfiIp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIAl7ICI9IiwgICAgICAgICAgICAg
ICAgICBBTElBUygiOnxmbXQ8RW50ZXI+IikgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAi
PCIsICAgICAgICAgICAgICAgICAgQUNUSU9OKE9QRVJBVE9SX1NISUZUX0xFRlQpICAgICAgICAg
ICAgICAgICB9LAogCXsgIj4iLCAgICAgICAgICAgICAgICAgIEFDVElPTihPUEVSQVRPUl9TSElG
VF9SSUdIVCkgICAgICAgICAgICAgICAgfSwKQEAgLTIwMywxNyArMTg0LDExIEBACiAJeyAiPEMt
aj4iLCAgICAgICAgICAgICAgQUNUSU9OKFNFTEVDVElPTlNfTkVXX0xJTkVfQkVMT1cpICAgICAg
ICAgICB9LAogCXsgIjxDLWs+IiwgICAgICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX05FV19M
SU5FX0FCT1ZFKSAgICAgICAgICAgfSwKIAl7ICI8Qy1sPiIsICAgICAgICAgICAgICBBQ1RJT04o
U0VMRUNUSU9OU19SRU1PVkVfQ09MVU1OX0VYQ0VQVCkgICAgIH0sCi0JeyAiPEMtbj4iLCAgICAg
ICAgICAgICAgQUNUSU9OKFNFTEVDVElPTlNfTUFUQ0hfV09SRCkgICAgICAgICAgICAgICB9LAor
CXsgIjxDLW4+IiwgICAgICAgICAgICAgIEFMSUFTKCJ2aXciKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKIAl7ICI8Qy1wPiIsICAgICAgICAgICAgICBBQ1RJT04oU0VMRUNUSU9O
U19SRU1PVkVfTEFTVCkgICAgICAgICAgICAgIH0sCiAJeyAiPEMtcj4iLCAgICAgICAgICAgICAg
QUNUSU9OKFJFRE8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogCXsgIjxDLXU+
IiwgICAgICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX1BSRVYpICAgICAgICAgICAgICAgICAg
ICAgfSwKLQl7ICI8Qy13PjxCYWNrc3BhY2U+IiwgICBBTElBUygiPEMtdz5rIikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCiAJeyAiPEMtdz5jIiwgICAgICAgICAgICAgQUxJQVMoIjpx
PEVudGVyPiIpICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCXsgIjxDLXc+PEMtaD4iLCAg
ICAgICAgIEFMSUFTKCI8Qy13PmsiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQl7
ICI8Qy13PjxDLWo+IiwgICAgICAgICBBTElBUygiPEMtdz5qIikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCi0JeyAiPEMtdz48Qy1rPiIsICAgICAgICAgQUxJQVMoIjxDLXc+ayIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCXsgIjxDLXc+PEMtbD4iLCAgICAgICAgIEFM
SUFTKCI8Qy13PmoiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQl7ICI8Qy13PjxD
LXc+IiwgICAgICAgICBBTElBUygiPEMtdz5qIikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCiAJeyAiPEMtdz5oIiwgICAgICAgICAgICAgQUxJQVMoIjxDLXc+ayIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAogCXsgIjxDLXc+aiIsICAgICAgICAgICAgIEFDVElPTihXSU5E
T1dfTkVYVCkgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIAl7ICI8Qy13PmsiLCAgICAgICAg
ICAgICBBQ1RJT04oV0lORE9XX1BSRVYpICAgICAgICAgICAgICAgICAgICAgICAgIH0sCkBAIC0y
MjEsMTAgKzE5Niw4IEBACiAJeyAiPEMtdz5uIiwgICAgICAgICAgICAgQUxJQVMoIjpvcGVuPEVu
dGVyPiIpICAgICAgICAgICAgICAgICAgICAgICB9LAogCXsgIjxDLXc+cyIsICAgICAgICAgICAg
IEFMSUFTKCI6c3BsaXQ8RW50ZXI+IikgICAgICAgICAgICAgICAgICAgICAgfSwKIAl7ICI8Qy13
PnYiLCAgICAgICAgICAgICBBTElBUygiOnZzcGxpdDxFbnRlcj4iKSAgICAgICAgICAgICAgICAg
ICAgIH0sCi0JeyAiPEMtdz53IiwgICAgICAgICAgICAgQUxJQVMoIjxDLXc+aiIpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAogCXsgIjxDLXk+IiwgICAgICAgICAgICAgIEFDVElPTihX
SU5ET1dfU0xJREVfRE9XTikgICAgICAgICAgICAgICAgICAgfSwKIAl7ICJEIiwgICAgICAgICAg
ICAgICAgICBBTElBUygiZCQiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0J
eyAiPERlbGV0ZT4iLCAgICAgICAgICAgQUxJQVMoIngiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAogCXsgIjxFc2NhcGU+IiwgICAgICAgICAgIEFDVElPTihNT0RFX05PUk1B
TF9FU0NBUEUpICAgICAgICAgICAgICAgICAgfSwKIAl7ICI8RjE+IiwgICAgICAgICAgICAgICBB
TElBUygiOmhlbHA8RW50ZXI+IikgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAiZ2EiLCAg
ICAgICAgICAgICAgICAgQUNUSU9OKFVOSUNPREVfSU5GTykgICAgICAgICAgICAgICAgICAgICAg
ICB9LApAQCAtMjcwLDEyICsyNDMsMTEgQEAKIAl7ICIrIiwgICAgICAgICAgICAgICAgICBBQ1RJ
T04oU0VMRUNUSU9OU19ST1RBVEVfUklHSFQpICAgICAgICAgICAgIH0sCiAJeyAiPCIsICAgICAg
ICAgICAgICAgICAgQUxJQVMoIjx2aXMtb3BlcmF0b3Itc2hpZnQtbGVmdD5ndiIpICAgICAgICB9
LAogCXsgIj4iLCAgICAgICAgICAgICAgICAgIEFMSUFTKCI8dmlzLW9wZXJhdG9yLXNoaWZ0LXJp
Z2h0Pmd2IikgICAgICAgfSwKLQl7ICI8QmFja3NwYWNlPiIsICAgICAgICBBTElBUygiZCIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisJeyAiPEMtYT4iLCAgICAgICAgICAg
ICAgQUNUSU9OKFNFTEVDVElPTlNfTkVXX01BVENIX0FMTCkgICAgICAgICAgICB9LAogCXsgIjxD
LWI+IiwgICAgICAgICAgICAgIEFMSUFTKCI8UGFnZVVwPiIpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKIAl7ICI8Qy1jPiIsICAgICAgICAgICAgICBBQ1RJT04oU0VMRUNUSU9OU19SRU1P
VkVfQ09MVU1OKSAgICAgICAgICAgIH0sCiAJeyAiPEMtZD4iLCAgICAgICAgICAgICAgQUNUSU9O
KFNFTEVDVElPTlNfTkVYVCkgICAgICAgICAgICAgICAgICAgICB9LAogCXsgIjxDLWY+IiwgICAg
ICAgICAgICAgIEFMSUFTKCI8UGFnZURvd24+IikgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
LQl7ICI8Qy1oPiIsICAgICAgICAgICAgICBBTElBUygiPEJhY2tzcGFjZT4iKSAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCiAJeyAiPEMtaj4iLCAgICAgICAgICAgICAgQUxJQVMoIjxDLWQ+Iikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogCXsgIjxDLWs+IiwgICAgICAgICAgICAg
IEFMSUFTKCI8Qy11PiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIAl7ICI8Qy1s
PiIsICAgICAgICAgICAgICBBQ1RJT04oU0VMRUNUSU9OU19SRU1PVkVfQ09MVU1OX0VYQ0VQVCkg
ICAgIH0sCkBAIC0yODMsNyArMjU1LDYgQEAKIAl7ICI8Qy1wPiIsICAgICAgICAgICAgICBBQ1RJ
T04oU0VMRUNUSU9OU19SRU1PVkVfTEFTVCkgICAgICAgICAgICAgIH0sCiAJeyAiPEMtdT4iLCAg
ICAgICAgICAgICAgQUNUSU9OKFNFTEVDVElPTlNfUFJFVikgICAgICAgICAgICAgICAgICAgICB9
LAogCXsgIjxDLXg+IiwgICAgICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX05FV19NQVRDSF9T
S0lQKSAgICAgICAgICAgfSwKLQl7ICI8RGVsZXRlPiIsICAgICAgICAgICBBTElBUygiPEJhY2tz
cGFjZT4iKSAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAiPEVzY2FwZT4iLCAgICAgICAg
ICAgQUNUSU9OKE1PREVfVklTVUFMX0VTQ0FQRSkgICAgICAgICAgICAgICAgICB9LAogCXsgIkki
LCAgICAgICAgICAgICAgICAgIEFDVElPTihTRUxFQ1RJT05TX05FV19MSU5FU19CRUdJTikgICAg
ICAgICAgfSwKIAl7ICJKIiwgICAgICAgICAgICAgICAgICBBQ1RJT04oSk9JTl9MSU5FUykgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCkBAIC0zMTQsNiArMjg1LDggQEAKIAl7ICI8Qy11PiIs
ICAgICAgICAgICAgICBBQ1RJT04oREVMRVRFX0xJTkVfQkVHSU4pICAgICAgICAgICAgICAgICAg
IH0sCiAJeyAiPEMtdj4iLCAgICAgICAgICAgICAgQUNUSU9OKElOU0VSVF9WRVJCQVRJTSkgICAg
ICAgICAgICAgICAgICAgICB9LAogCXsgIjxDLXc+IiwgICAgICAgICAgICAgIEFDVElPTihERUxF
VEVfV09SRF9QUkVWKSAgICAgICAgICAgICAgICAgICAgfSwKKwl7ICI8Qy1lPiIsICAgICAgICAg
ICAgICBBQ1RJT04oQ1VSU09SX0xJTkVfRU5EKSAgICAgICAgICAgICAgICAgICAgIH0sCisJeyAi
PEMtYT4iLCAgICAgICAgICAgICAgQUNUSU9OKENVUlNPUl9MSU5FX1NUQVJUKSAgICAgICAgICAg
ICAgICAgICB9LAogCXsgIjxEZWxldGU+IiwgICAgICAgICAgIEFDVElPTihERUxFVEVfQ0hBUl9O
RVhUKSAgICAgICAgICAgICAgICAgICAgfSwKIAl7ICI8RXNjYXBlPiIsICAgICAgICAgICBBQ1RJ
T04oTU9ERV9OT1JNQUwpICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJeyAwIC8qIGVtcHR5
IGxhc3QgZWxlbWVudCwgYXJyYXkgdGVybWluYXRvciAqLyAgICAgICAgICAgICAgICAgICAgICB9
LApkaWZmIC11ciB2aXMtMC42L2NvbmZpZ3VyZSB2aXMtMC44L2NvbmZpZ3VyZQotLS0gdmlzLTAu
Ni9jb25maWd1cmUJMjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC9jb25maWd1cmUJMjAy
Mi0xMS0wMSAxNjo1MDoxMApAQCAtMjI3LDYgKzIyNyw3IEBACiAKIGNhc2UgIiRPUyIgaW4KIEZy
ZWVCU0R8RHJhZ29uRmx5KSBDRkxBR1NfU1REPSIkQ0ZMQUdTX1NURCAtRF9CU0RfU09VUkNFIC1E
X19CU0RfVklTSUJMRT0xIiA7OworTmV0QlNEKSAgQ0ZMQUdTX1NURD0iJENGTEFHU19TVEQgLURf
TkVUQlNEX1NPVVJDRSIgOzsKICpCU0QpICAgIENGTEFHU19TVEQ9IiRDRkxBR1NfU1REIC1EX0JT
RF9TT1VSQ0UiIDs7CiBEYXJ3aW4pICBDRkxBR1NfU1REPSIkQ0ZMQUdTX1NURCAtRF9EQVJXSU5f
Q19TT1VSQ0UiIDs7CiBBSVgpICAgICBDRkxBR1NfU1REPSIkQ0ZMQUdTX1NURCAtRF9BTExfU09V
UkNFIiA7OwpAQCAtMzA5LDcgKzMxMCw3IEBACiB9CiBFT0YKIAotCWZvciBsaWJjdXJzZXMgaW4g
bmN1cnNlc3cgbmN1cnNlcyBsaWJjdXJzZXM7IGRvCisJZm9yIGxpYmN1cnNlcyBpbiBuY3Vyc2Vz
dyBuY3Vyc2VzIGN1cnNlczsgZG8KIAkJcHJpbnRmICIgY2hlY2tpbmcgZm9yICVzLi4uICIgIiRs
aWJjdXJzZXMiCiAKIAkJaWYgdGVzdCAiJGhhdmVfcGtnY29uZmlnIiA9ICJ5ZXMiIDsgdGhlbgpA
QCAtNDQyLDcgKzQ0Myw3IEBACiB9CiBFT0YKIAotCWZvciBsaWJsdWEgaW4gbHVhIGx1YTUuMyBs
dWE1LjIgbHVhLTUuMyBsdWEtNS4yIGx1YTUzIGx1YTUyOyBkbworCWZvciBsaWJsdWEgaW4gbHVh
IGx1YTUuNCBsdWE1LjMgbHVhNS4yIGx1YS01LjMgbHVhLTUuMiBsdWE1NCBsdWE1MyBsdWE1Mjsg
ZG8KIAkJcHJpbnRmICIgY2hlY2tpbmcgZm9yICVzLi4uICIgIiRsaWJsdWEiCiAKIAkJaWYgdGVz
dCAiJGhhdmVfcGtnY29uZmlnIiA9ICJ5ZXMiIDsgdGhlbgpAQCAtNDc0LDcgKzQ3NSw3IEBACiAJ
dGVzdCAiJGx1YSIgPSAieWVzIiAtYSAkQ09ORklHX0xVQSAtbmUgMSAmJiBmYWlsICIkMDogY2Fu
bm90IGZpbmQgbGlibHVhIgogCiAJaWYgdGVzdCAkQ09ORklHX0xVQSAtZXEgMTsgdGhlbgotCQlD
RkxBR1NfTFVBPSIkQ0ZMQUdTX0xVQSAtRExVQV9DT01QQVRfNV8xIC1ETFVBX0NPTVBBVF81XzIg
LURMVUFfQ09NUEFUX0FMTCIKKwkJQ0ZMQUdTX0xVQT0iJENGTEFHU19MVUEgLURMVUFfQ09NUEFU
XzVfMSAtRExVQV9DT01QQVRfNV8yIC1ETFVBX0NPTVBBVF81XzMgLURMVUFfQ09NUEFUX0FMTCIK
IAlmaQogZmkKIApAQCAtNjE4LDcgKzYxOSw3IEBACiB9CiBFT0YKIAotaWYgJENDICRDRkxBR1Mg
IiR0bXBjIiAkTERGTEFHUyAtbyAiJHRtcG8iID4vZGV2L251bGwgMj4mMTsgdGhlbgoraWYgJEND
ICRDRkxBR1MgJENGTEFHU19TVEQgIiR0bXBjIiAkTERGTEFHUyAtbyAiJHRtcG8iID4vZGV2L251
bGwgMj4mMTsgdGhlbgogCUhBVkVfTUVNUkNIUj0xCiAJcHJpbnRmICIlc1xuIiAieWVzIgogZWxz
ZQpkaWZmIC11ciB2aXMtMC42L2RvYy9Eb3h5ZmlsZSB2aXMtMC44L2RvYy9Eb3h5ZmlsZQotLS0g
dmlzLTAuNi9kb2MvRG94eWZpbGUJMjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC9kb2Mv
RG94eWZpbGUJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtMSw0ICsxLDQgQEAKLSMgRG94eWZpbGUg
MS44LjEzCisjIERveHlmaWxlIDEuOC4xOAogCiAjIFRoaXMgZmlsZSBkZXNjcmliZXMgdGhlIHNl
dHRpbmdzIHRvIGJlIHVzZWQgYnkgdGhlIGRvY3VtZW50YXRpb24gc3lzdGVtCiAjIGRveHlnZW4g
KHd3dy5kb3h5Z2VuLm9yZykgZm9yIGEgcHJvamVjdC4KQEAgLTE3LDExICsxNywxMSBAQAogIyBQ
cm9qZWN0IHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zCiAjLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLSMgVGhpcyB0YWcgc3BlY2lmaWVzIHRoZSBlbmNvZGluZyB1c2VkIGZvciBhbGwgY2hhcmFj
dGVycyBpbiB0aGUgY29uZmlnIGZpbGUKLSMgdGhhdCBmb2xsb3cuIFRoZSBkZWZhdWx0IGlzIFVU
Ri04IHdoaWNoIGlzIGFsc28gdGhlIGVuY29kaW5nIHVzZWQgZm9yIGFsbCB0ZXh0Ci0jIGJlZm9y
ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGlzIHRhZy4gRG94eWdlbiB1c2VzIGxpYmljb252
IChvciB0aGUgaWNvbnYKLSMgYnVpbHQgaW50byBsaWJjKSBmb3IgdGhlIHRyYW5zY29kaW5nLiBT
ZWUgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmljb252Ci0jIGZvciB0aGUgbGlzdCBv
ZiBwb3NzaWJsZSBlbmNvZGluZ3MuCisjIFRoaXMgdGFnIHNwZWNpZmllcyB0aGUgZW5jb2Rpbmcg
dXNlZCBmb3IgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24KKyMgZmlsZSB0aGF0
IGZvbGxvdy4gVGhlIGRlZmF1bHQgaXMgVVRGLTggd2hpY2ggaXMgYWxzbyB0aGUgZW5jb2Rpbmcg
dXNlZCBmb3IgYWxsCisjIHRleHQgYmVmb3JlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoaXMg
dGFnLiBEb3h5Z2VuIHVzZXMgbGliaWNvbnYgKG9yIHRoZQorIyBpY29udiBidWlsdCBpbnRvIGxp
YmMpIGZvciB0aGUgdHJhbnNjb2RpbmcuIFNlZQorIyBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3
YXJlL2xpYmljb252LyBmb3IgdGhlIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLgogIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogVVRGLTguCiAKIERPWFlGSUxFX0VOQ09ESU5HICAgICAgPSBVVEYt
OApAQCAtMzgsNyArMzgsNyBAQAogIyBjb3VsZCBiZSBoYW5keSBmb3IgYXJjaGl2aW5nIHRoZSBn
ZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpZiBzb21lIHZlcnNpb24KICMgY29udHJvbCBzeXN0
ZW0gaXMgdXNlZC4KIAotUFJPSkVDVF9OVU1CRVIgICAgICAgICA9IDAuNQorUFJPSkVDVF9OVU1C
RVIgICAgICAgICA9IDAuOAogCiAjIFVzaW5nIHRoZSBQUk9KRUNUX0JSSUVGIHRhZyBvbmUgY2Fu
IHByb3ZpZGUgYW4gb3B0aW9uYWwgb25lIGxpbmUgZGVzY3JpcHRpb24KICMgZm9yIGEgcHJvamVj
dCB0aGF0IGFwcGVhcnMgYXQgdGhlIHRvcCBvZiBlYWNoIHBhZ2UgYW5kIHNob3VsZCBnaXZlIHZp
ZXdlciBhCkBAIC05Myw2ICs5MywxNCBAQAogCiBPVVRQVVRfTEFOR1VBR0UgICAgICAgID0gRW5n
bGlzaAogCisjIFRoZSBPVVRQVVRfVEVYVF9ESVJFQ1RJT04gdGFnIGlzIHVzZWQgdG8gc3BlY2lm
eSB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIGFsbAorIyBkb2N1bWVudGF0aW9uIGdlbmVyYXRlZCBi
eSBkb3h5Z2VuIGlzIHdyaXR0ZW4uIERveHlnZW4gd2lsbCB1c2UgdGhpcworIyBpbmZvcm1hdGlv
biB0byBnZW5lcmF0ZSBhbGwgZ2VuZXJhdGVkIG91dHB1dCBpbiB0aGUgcHJvcGVyIGRpcmVjdGlv
bi4KKyMgUG9zc2libGUgdmFsdWVzIGFyZTogTm9uZSwgTFRSLCBSVEwgYW5kIENvbnRleHQuCisj
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOb25lLgorCitPVVRQVVRfVEVYVF9ESVJFQ1RJT04gID0g
Tm9uZQorCiAjIElmIHRoZSBCUklFRl9NRU1CRVJfREVTQyB0YWcgaXMgc2V0IHRvIFlFUywgZG94
eWdlbiB3aWxsIGluY2x1ZGUgYnJpZWYgbWVtYmVyCiAjIGRlc2NyaXB0aW9ucyBhZnRlciB0aGUg
bWVtYmVycyB0aGF0IGFyZSBsaXN0ZWQgaW4gdGhlIGZpbGUgYW5kIGNsYXNzCiAjIGRvY3VtZW50
YXRpb24gKHNpbWlsYXIgdG8gSmF2YWRvYykuIFNldCB0byBOTyB0byBkaXNhYmxlIHRoaXMuCkBA
IC0xODksNiArMTk3LDE2IEBACiAKIEpBVkFET0NfQVVUT0JSSUVGICAgICAgPSBZRVMKIAorIyBJ
ZiB0aGUgSkFWQURPQ19CQU5ORVIgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwg
aW50ZXJwcmV0IGEgbGluZQorIyBzdWNoIGFzCisjIC8qKioqKioqKioqKioqKioKKyMgYXMgYmVp
bmcgdGhlIGJlZ2lubmluZyBvZiBhIEphdmFkb2Mtc3R5bGUgY29tbWVudCAiYmFubmVyIi4gSWYg
c2V0IHRvIE5PLCB0aGUKKyMgSmF2YWRvYy1zdHlsZSB3aWxsIGJlaGF2ZSBqdXN0IGxpa2UgcmVn
dWxhciBjb21tZW50cyBhbmQgaXQgd2lsbCBub3QgYmUKKyMgaW50ZXJwcmV0ZWQgYnkgZG94eWdl
bi4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorCitKQVZBRE9DX0JBTk5FUiAgICAgICAg
ID0gTk8KKwogIyBJZiB0aGUgUVRfQVVUT0JSSUVGIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94
eWdlbiB3aWxsIGludGVycHJldCB0aGUgZmlyc3QKICMgbGluZSAodW50aWwgdGhlIGZpcnN0IGRv
dCkgb2YgYSBRdC1zdHlsZSBjb21tZW50IGFzIHRoZSBicmllZiBkZXNjcmlwdGlvbi4gSWYKICMg
c2V0IHRvIE5PLCB0aGUgUXQtc3R5bGUgd2lsbCBiZWhhdmUganVzdCBsaWtlIHJlZ3VsYXIgUXQt
c3R5bGUgY29tbWVudHMgKHRodXMKQEAgLTIzNiwxNyArMjU0LDE2IEBACiAjIHdpbGwgYWxsb3cg
eW91IHRvIHB1dCB0aGUgY29tbWFuZCBcc2lkZWVmZmVjdCAob3IgQHNpZGVlZmZlY3QpIGluIHRo
ZQogIyBkb2N1bWVudGF0aW9uLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBhIHVzZXItZGVmaW5lZCBw
YXJhZ3JhcGggd2l0aCBoZWFkaW5nCiAjICJTaWRlIEVmZmVjdHM6Ii4gWW91IGNhbiBwdXQgXG4n
cyBpbiB0aGUgdmFsdWUgcGFydCBvZiBhbiBhbGlhcyB0byBpbnNlcnQKLSMgbmV3bGluZXMuCisj
IG5ld2xpbmVzIChpbiB0aGUgcmVzdWx0aW5nIG91dHB1dCkuIFlvdSBjYW4gcHV0IF5eIGluIHRo
ZSB2YWx1ZSBwYXJ0IG9mIGFuCisjIGFsaWFzIHRvIGluc2VydCBhIG5ld2xpbmUgYXMgaWYgYSBw
aHlzaWNhbCBuZXdsaW5lIHdhcyBpbiB0aGUgb3JpZ2luYWwgZmlsZS4KKyMgV2hlbiB5b3UgbmVl
ZCBhIGxpdGVyYWwgeyBvciB9IG9yICwgaW4gdGhlIHZhbHVlIHBhcnQgb2YgYW4gYWxpYXMgeW91
IGhhdmUgdG8KKyMgZXNjYXBlIHRoZW0gYnkgbWVhbnMgb2YgYSBiYWNrc2xhc2ggKFwpLCB0aGlz
IGNhbiBsZWFkIHRvIGNvbmZsaWN0cyB3aXRoIHRoZQorIyBjb21tYW5kcyBceyBhbmQgXH0gZm9y
IHRoZXNlIGl0IGlzIGFkdmlzZWQgdG8gdXNlIHRoZSB2ZXJzaW9uIEB7IGFuZCBAfSBvciB1c2UK
KyMgYSBkb3VibGUgZXNjYXBlIChcXHsgYW5kIFxcfSkKIAogQUxJQVNFUyAgICAgICAgICAgICAg
ICA9ICJyc3Q9XHZlcmJhdGltIGVtYmVkOnJzdDpsZWFkaW5nLWFzdGVyaXNrIiBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgImVuZHJzdD1cZW5kdmVyYmF0aW0iCiAKLSMgVGhpcyB0YWcgY2Fu
IGJlIHVzZWQgdG8gc3BlY2lmeSBhIG51bWJlciBvZiB3b3JkLWtleXdvcmQgbWFwcGluZ3MgKFRD
TCBvbmx5KS4KLSMgQSBtYXBwaW5nIGhhcyB0aGUgZm9ybSAibmFtZT12YWx1ZSIuIEZvciBleGFt
cGxlIGFkZGluZyAiY2xhc3M9aXRjbDo6Y2xhc3MiCi0jIHdpbGwgYWxsb3cgeW91IHRvIHVzZSB0
aGUgY29tbWFuZCBjbGFzcyBpbiB0aGUgaXRjbDo6Y2xhc3MgbWVhbmluZy4KLQotVENMX1NVQlNU
ICAgICAgICAgICAgICA9Ci0KICMgU2V0IHRoZSBPUFRJTUlaRV9PVVRQVVRfRk9SX0MgdGFnIHRv
IFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2YgQyBzb3VyY2VzCiAjIG9ubHkuIERveHln
ZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIG1vcmUgdGFpbG9yZWQgZm9yIEMu
IEZvcgogIyBpbnN0YW5jZSwgc29tZSBvZiB0aGUgbmFtZXMgdGhhdCBhcmUgdXNlZCB3aWxsIGJl
IGRpZmZlcmVudC4gVGhlIGxpc3Qgb2YgYWxsCkBAIC0yNzUsMTcgKzI5MiwyNiBAQAogCiBPUFRJ
TUlaRV9PVVRQVVRfVkhETCAgID0gTk8KIAorIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9TTElD
RSB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBTbGljZQorIyBzb3VyY2Vz
IG9ubHkuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIG1vcmUgdGFp
bG9yZWQgZm9yIHRoYXQKKyMgbGFuZ3VhZ2UuIEZvciBpbnN0YW5jZSwgbmFtZXNwYWNlcyB3aWxs
IGJlIHByZXNlbnRlZCBhcyBtb2R1bGVzLCB0eXBlcyB3aWxsIGJlCisjIHNlcGFyYXRlZCBpbnRv
IG1vcmUgZ3JvdXBzLCBldGMuCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKworT1BUSU1J
WkVfT1VUUFVUX1NMSUNFICA9IE5PCisKICMgRG94eWdlbiBzZWxlY3RzIHRoZSBwYXJzZXIgdG8g
dXNlIGRlcGVuZGluZyBvbiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBmaWxlcyBpdAogIyBwYXJzZXMu
IFdpdGggdGhpcyB0YWcgeW91IGNhbiBhc3NpZ24gd2hpY2ggcGFyc2VyIHRvIHVzZSBmb3IgYSBn
aXZlbgogIyBleHRlbnNpb24uIERveHlnZW4gaGFzIGEgYnVpbHQtaW4gbWFwcGluZywgYnV0IHlv
dSBjYW4gb3ZlcnJpZGUgb3IgZXh0ZW5kIGl0CiAjIHVzaW5nIHRoaXMgdGFnLiBUaGUgZm9ybWF0
IGlzIGV4dD1sYW5ndWFnZSwgd2hlcmUgZXh0IGlzIGEgZmlsZSBleHRlbnNpb24sIGFuZAotIyBs
YW5ndWFnZSBpcyBvbmUgb2YgdGhlIHBhcnNlcnMgc3VwcG9ydGVkIGJ5IGRveHlnZW46IElETCwg
SmF2YSwgSmF2YXNjcmlwdCwKLSMgQyMsIEMsIEMrKywgRCwgUEhQLCBPYmplY3RpdmUtQywgUHl0
aG9uLCBGb3J0cmFuIChmaXhlZCBmb3JtYXQgRm9ydHJhbjoKLSMgRm9ydHJhbkZpeGVkLCBmcmVl
IGZvcm1hdHRlZCBGb3J0cmFuOiBGb3J0cmFuRnJlZSwgdW5rbm93biBmb3JtYXR0ZWQgRm9ydHJh
bjoKLSMgRm9ydHJhbi4gSW4gdGhlIGxhdGVyIGNhc2UgdGhlIHBhcnNlciB0cmllcyB0byBndWVz
cyB3aGV0aGVyIHRoZSBjb2RlIGlzIGZpeGVkCi0jIG9yIGZyZWUgZm9ybWF0dGVkIGNvZGUsIHRo
aXMgaXMgdGhlIGRlZmF1bHQgZm9yIEZvcnRyYW4gdHlwZSBmaWxlcyksIFZIREwuIEZvcgotIyBp
bnN0YW5jZSB0byBtYWtlIGRveHlnZW4gdHJlYXQgLmluYyBmaWxlcyBhcyBGb3J0cmFuIGZpbGVz
IChkZWZhdWx0IGlzIFBIUCksCi0jIGFuZCAuZiBmaWxlcyBhcyBDIChkZWZhdWx0IGlzIEZvcnRy
YW4pLCB1c2U6IGluYz1Gb3J0cmFuIGY9Qy4KKyMgbGFuZ3VhZ2UgaXMgb25lIG9mIHRoZSBwYXJz
ZXJzIHN1cHBvcnRlZCBieSBkb3h5Z2VuOiBJREwsIEphdmEsIEphdmFTY3JpcHQsCisjIENzaGFy
cCAoQyMpLCBDLCBDKyssIEQsIFBIUCwgbWQgKE1hcmtkb3duKSwgT2JqZWN0aXZlLUMsIFB5dGhv
biwgU2xpY2UsIFZIREwsCisjIEZvcnRyYW4gKGZpeGVkIGZvcm1hdCBGb3J0cmFuOiBGb3J0cmFu
Rml4ZWQsIGZyZWUgZm9ybWF0dGVkIEZvcnRyYW46CisjIEZvcnRyYW5GcmVlLCB1bmtub3duIGZv
cm1hdHRlZCBGb3J0cmFuOiBGb3J0cmFuLiBJbiB0aGUgbGF0ZXIgY2FzZSB0aGUgcGFyc2VyCisj
IHRyaWVzIHRvIGd1ZXNzIHdoZXRoZXIgdGhlIGNvZGUgaXMgZml4ZWQgb3IgZnJlZSBmb3JtYXR0
ZWQgY29kZSwgdGhpcyBpcyB0aGUKKyMgZGVmYXVsdCBmb3IgRm9ydHJhbiB0eXBlIGZpbGVzKS4g
Rm9yIGluc3RhbmNlIHRvIG1ha2UgZG94eWdlbiB0cmVhdCAuaW5jIGZpbGVzCisjIGFzIEZvcnRy
YW4gZmlsZXMgKGRlZmF1bHQgaXMgUEhQKSwgYW5kIC5mIGZpbGVzIGFzIEMgKGRlZmF1bHQgaXMg
Rm9ydHJhbiksCisjIHVzZTogaW5jPUZvcnRyYW4gZj1DLgogIwogIyBOb3RlOiBGb3IgZmlsZXMg
d2l0aG91dCBleHRlbnNpb24geW91IGNhbiB1c2Ugbm9fZXh0ZW5zaW9uIGFzIGEgcGxhY2Vob2xk
ZXIuCiAjCkBAIC0yOTYsNyArMzIyLDcgQEAKIAogIyBJZiB0aGUgTUFSS0RPV05fU1VQUE9SVCB0
YWcgaXMgZW5hYmxlZCB0aGVuIGRveHlnZW4gcHJlLXByb2Nlc3NlcyBhbGwgY29tbWVudHMKICMg
YWNjb3JkaW5nIHRvIHRoZSBNYXJrZG93biBmb3JtYXQsIHdoaWNoIGFsbG93cyBmb3IgbW9yZSBy
ZWFkYWJsZQotIyBkb2N1bWVudGF0aW9uLiBTZWUgaHR0cDovL2RhcmluZ2ZpcmViYWxsLm5ldC9w
cm9qZWN0cy9tYXJrZG93bi8gZm9yIGRldGFpbHMuCisjIGRvY3VtZW50YXRpb24uIFNlZSBodHRw
czovL2RhcmluZ2ZpcmViYWxsLm5ldC9wcm9qZWN0cy9tYXJrZG93bi8gZm9yIGRldGFpbHMuCiAj
IFRoZSBvdXRwdXQgb2YgbWFya2Rvd24gcHJvY2Vzc2luZyBpcyBmdXJ0aGVyIHByb2Nlc3NlZCBi
eSBkb3h5Z2VuLCBzbyB5b3UgY2FuCiAjIG1peCBkb3h5Z2VuLCBIVE1MLCBhbmQgWE1MIGNvbW1h
bmRzIHdpdGggTWFya2Rvd24gZm9ybWF0dGluZy4gRGlzYWJsZSBvbmx5IGluCiAjIGNhc2Ugb2Yg
YmFja3dhcmQgY29tcGF0aWJpbGl0aWVzIGlzc3Vlcy4KQEAgLTMwOCw3ICszMzQsNyBAQAogIyB0
byB0aGF0IGxldmVsIGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGluIHRoZSB0YWJsZSBvZiBj
b250ZW50cywgZXZlbiBpZgogIyB0aGV5IGRvIG5vdCBoYXZlIGFuIGlkIGF0dHJpYnV0ZS4KICMg
Tm90ZTogVGhpcyBmZWF0dXJlIGN1cnJlbnRseSBhcHBsaWVzIG9ubHkgdG8gTWFya2Rvd24gaGVh
ZGluZ3MuCi0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDk5LCBkZWZhdWx0IHZh
bHVlOiAwLgorIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiA5OSwgZGVmYXVsdCB2
YWx1ZTogNS4KICMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIE1BUktET1dOX1NVUFBP
UlQgaXMgc2V0IHRvIFlFUy4KIAogVE9DX0lOQ0xVREVfSEVBRElOR1MgICA9IDAKQEAgLTMzOCw3
ICszNjQsNyBAQAogQ1BQX0NMSV9TVVBQT1JUICAgICAgICA9IE5PCiAKICMgU2V0IHRoZSBTSVBf
U1VQUE9SVCB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBzaXAgKHNlZToK
LSMgaHR0cDovL3d3dy5yaXZlcmJhbmtjb21wdXRpbmcuY28udWsvc29mdHdhcmUvc2lwL2ludHJv
KSBzb3VyY2VzIG9ubHkuIERveHlnZW4KKyMgaHR0cHM6Ly93d3cucml2ZXJiYW5rY29tcHV0aW5n
LmNvbS9zb2Z0d2FyZS9zaXAvaW50cm8pIHNvdXJjZXMgb25seS4gRG94eWdlbgogIyB3aWxsIHBh
cnNlIHRoZW0gbGlrZSBub3JtYWwgQysrIGJ1dCB3aWxsIGFzc3VtZSBhbGwgY2xhc3NlcyB1c2Ug
cHVibGljIGluc3RlYWQKICMgb2YgcHJpdmF0ZSBpbmhlcml0YW5jZSB3aGVuIG5vIGV4cGxpY2l0
IHByb3RlY3Rpb24ga2V5d29yZCBpcyBwcmVzZW50LgogIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
Tk8uCkBAIC00NDQsNiArNDcwLDEyIEBACiAKIEVYVFJBQ1RfUFJJVkFURSAgICAgICAgPSBOTwog
CisjIElmIHRoZSBFWFRSQUNUX1BSSVZfVklSVFVBTCB0YWcgaXMgc2V0IHRvIFlFUywgZG9jdW1l
bnRlZCBwcml2YXRlIHZpcnR1YWwKKyMgbWV0aG9kcyBvZiBhIGNsYXNzIHdpbGwgYmUgaW5jbHVk
ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KKwor
RVhUUkFDVF9QUklWX1ZJUlRVQUwgICA9IE5PCisKICMgSWYgdGhlIEVYVFJBQ1RfUEFDS0FHRSB0
YWcgaXMgc2V0IHRvIFlFUywgYWxsIG1lbWJlcnMgd2l0aCBwYWNrYWdlIG9yIGludGVybmFsCiAj
IHNjb3BlIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCiAjIFRoZSBkZWZh
dWx0IHZhbHVlIGlzOiBOTy4KQEAgLTQ5OCw4ICs1MzAsOCBAQAogSElERV9VTkRPQ19DTEFTU0VT
ICAgICA9IE5PCiAKICMgSWYgdGhlIEhJREVfRlJJRU5EX0NPTVBPVU5EUyB0YWcgaXMgc2V0IHRv
IFlFUywgZG94eWdlbiB3aWxsIGhpZGUgYWxsIGZyaWVuZAotIyAoY2xhc3N8c3RydWN0fHVuaW9u
KSBkZWNsYXJhdGlvbnMuIElmIHNldCB0byBOTywgdGhlc2UgZGVjbGFyYXRpb25zIHdpbGwgYmUK
LSMgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCisjIGRlY2xhcmF0aW9ucy4gSWYgc2V0
IHRvIE5PLCB0aGVzZSBkZWNsYXJhdGlvbnMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKKyMgZG9j
dW1lbnRhdGlvbi4KICMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgogCiBISURFX0ZSSUVORF9D
T01QT1VORFMgID0gTk8KQEAgLTUyMiw3ICs1NTQsNyBAQAogIyBuYW1lcyBpbiBsb3dlci1jYXNl
IGxldHRlcnMuIElmIHNldCB0byBZRVMsIHVwcGVyLWNhc2UgbGV0dGVycyBhcmUgYWxzbwogIyBh
bGxvd2VkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBjbGFzc2VzIG9yIGZpbGVzIHdob3Nl
IG5hbWVzIG9ubHkgZGlmZmVyCiAjIGluIGNhc2UgYW5kIGlmIHlvdXIgZmlsZSBzeXN0ZW0gc3Vw
cG9ydHMgY2FzZSBzZW5zaXRpdmUgZmlsZSBuYW1lcy4gV2luZG93cwotIyBhbmQgTWFjIHVzZXJz
IGFyZSBhZHZpc2VkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBOTy4KKyMgKGluY2x1ZGluZyBDeWd3
aW4pIGFuZHMgTWFjIHVzZXJzIGFyZSBhZHZpc2VkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBOTy4K
ICMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IHN5c3RlbSBkZXBlbmRlbnQuCiAKIENBU0VfU0VOU0Vf
TkFNRVMgICAgICAgPSBZRVMKQEAgLTcwOSw3ICs3NDEsNyBAQAogIyBUaGUgQ0lURV9CSUJfRklM
RVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgYmliIGZpbGVzIGNvbnRh
aW5pbmcKICMgdGhlIHJlZmVyZW5jZSBkZWZpbml0aW9ucy4gVGhpcyBtdXN0IGJlIGEgbGlzdCBv
ZiAuYmliIGZpbGVzLiBUaGUgLmJpYgogIyBleHRlbnNpb24gaXMgYXV0b21hdGljYWxseSBhcHBl
bmRlZCBpZiBvbWl0dGVkLiBUaGlzIHJlcXVpcmVzIHRoZSBiaWJ0ZXggdG9vbAotIyB0byBiZSBp
bnN0YWxsZWQuIFNlZSBhbHNvIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmliVGVYIGZv
ciBtb3JlIGluZm8uCisjIHRvIGJlIGluc3RhbGxlZC4gU2VlIGFsc28gaHR0cHM6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvQmliVGVYIGZvciBtb3JlIGluZm8uCiAjIEZvciBMYVRlWCB0aGUgc3R5
bGUgb2YgdGhlIGJpYmxpb2dyYXBoeSBjYW4gYmUgY29udHJvbGxlZCB1c2luZwogIyBMQVRFWF9C
SUJfU1RZTEUuIFRvIHVzZSB0aGlzIGZlYXR1cmUgeW91IG5lZWQgYmlidGV4IGFuZCBwZXJsIGF2
YWlsYWJsZSBpbiB0aGUKICMgc2VhcmNoIHBhdGguIFNlZSBhbHNvIFxjaXRlIGZvciBpbmZvIGhv
dyB0byBjcmVhdGUgcmVmZXJlbmNlcy4KQEAgLTc1NCw3ICs3ODYsOCBAQAogIyBUaGlzIFdBUk5f
Tk9fUEFSQU1ET0Mgb3B0aW9uIGNhbiBiZSBlbmFibGVkIHRvIGdldCB3YXJuaW5ncyBmb3IgZnVu
Y3Rpb25zIHRoYXQKICMgYXJlIGRvY3VtZW50ZWQsIGJ1dCBoYXZlIG5vIGRvY3VtZW50YXRpb24g
Zm9yIHRoZWlyIHBhcmFtZXRlcnMgb3IgcmV0dXJuCiAjIHZhbHVlLiBJZiBzZXQgdG8gTk8sIGRv
eHlnZW4gd2lsbCBvbmx5IHdhcm4gYWJvdXQgd3Jvbmcgb3IgaW5jb21wbGV0ZQotIyBwYXJhbWV0
ZXIgZG9jdW1lbnRhdGlvbiwgYnV0IG5vdCBhYm91dCB0aGUgYWJzZW5jZSBvZiBkb2N1bWVudGF0
aW9uLgorIyBwYXJhbWV0ZXIgZG9jdW1lbnRhdGlvbiwgYnV0IG5vdCBhYm91dCB0aGUgYWJzZW5j
ZSBvZiBkb2N1bWVudGF0aW9uLiBJZgorIyBFWFRSQUNUX0FMTCBpcyBzZXQgdG8gWUVTIHRoZW4g
dGhpcyBmbGFnIHdpbGwgYXV0b21hdGljYWxseSBiZSBkaXNhYmxlZC4KICMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgogCiBXQVJOX05PX1BBUkFNRE9DICAgICAgID0gTk8KQEAgLTc5Niw3ICs4
MjksNyBAQAogIyBUaGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjaGFyYWN0ZXIg
ZW5jb2Rpbmcgb2YgdGhlIHNvdXJjZSBmaWxlcwogIyB0aGF0IGRveHlnZW4gcGFyc2VzLiBJbnRl
cm5hbGx5IGRveHlnZW4gdXNlcyB0aGUgVVRGLTggZW5jb2RpbmcuIERveHlnZW4gdXNlcwogIyBs
aWJpY29udiAob3IgdGhlIGljb252IGJ1aWx0IGludG8gbGliYykgZm9yIHRoZSB0cmFuc2NvZGlu
Zy4gU2VlIHRoZSBsaWJpY29udgotIyBkb2N1bWVudGF0aW9uIChzZWU6IGh0dHA6Ly93d3cuZ251
Lm9yZy9zb2Z0d2FyZS9saWJpY29udikgZm9yIHRoZSBsaXN0IG9mCisjIGRvY3VtZW50YXRpb24g
KHNlZTogaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpY29udi8pIGZvciB0aGUgbGlz
dCBvZgogIyBwb3NzaWJsZSBlbmNvZGluZ3MuCiAjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBVVEYt
OC4KIApAQCAtODEzLDggKzg0NiwxMCBAQAogIyBJZiBsZWZ0IGJsYW5rIHRoZSBmb2xsb3dpbmcg
cGF0dGVybnMgYXJlIHRlc3RlZDoqLmMsICouY2MsICouY3h4LCAqLmNwcCwKICMgKi5jKyssICou
amF2YSwgKi5paSwgKi5peHgsICouaXBwLCAqLmkrKywgKi5pbmwsICouaWRsLCAqLmRkbCwgKi5v
ZGwsICouaCwKICMgKi5oaCwgKi5oeHgsICouaHBwLCAqLmgrKywgKi5jcywgKi5kLCAqLnBocCwg
Ki5waHA0LCAqLnBocDUsICoucGh0bWwsICouaW5jLAotIyAqLm0sICoubWFya2Rvd24sICoubWQs
ICoubW0sICouZG94LCAqLnB5LCAqLnB5dywgKi5mOTAsICouZjk1LCAqLmYwMywgKi5mMDgsCi0j
ICouZiwgKi5mb3IsICoudGNsLCAqLnZoZCwgKi52aGRsLCAqLnVjZiBhbmQgKi5xc2YuCisjICou
bSwgKi5tYXJrZG93biwgKi5tZCwgKi5tbSwgKi5kb3ggKHRvIGJlIHByb3ZpZGVkIGFzIGRveHln
ZW4gQyBjb21tZW50KSwKKyMgKi5kb2MgKHRvIGJlIHByb3ZpZGVkIGFzIGRveHlnZW4gQyBjb21t
ZW50KSwgKi50eHQgKHRvIGJlIHByb3ZpZGVkIGFzIGRveHlnZW4KKyMgQyBjb21tZW50KSwgKi5w
eSwgKi5weXcsICouZjkwLCAqLmY5NSwgKi5mMDMsICouZjA4LCAqLmYxOCwgKi5mLCAqLmZvciwg
Ki52aGQsCisjICoudmhkbCwgKi51Y2YsICoucXNmIGFuZCAqLmljZS4KIAogRklMRV9QQVRURVJO
UyAgICAgICAgICA9ICouYyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgKi5jYyBcCkBAIC0x
MDEyLDcgKzEwNDcsNyBAQAogU1RSSVBfQ09ERV9DT01NRU5UUyAgICA9IFlFUwogCiAjIElmIHRo
ZSBSRUZFUkVOQ0VEX0JZX1JFTEFUSU9OIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZm9yIGVhY2gg
ZG9jdW1lbnRlZAotIyBmdW5jdGlvbiBhbGwgZG9jdW1lbnRlZCBmdW5jdGlvbnMgcmVmZXJlbmNp
bmcgaXQgd2lsbCBiZSBsaXN0ZWQuCisjIGVudGl0eSBhbGwgZG9jdW1lbnRlZCBmdW5jdGlvbnMg
cmVmZXJlbmNpbmcgaXQgd2lsbCBiZSBsaXN0ZWQuCiAjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBO
Ty4KIAogUkVGRVJFTkNFRF9CWV9SRUxBVElPTiA9IE5PCkBAIC0xMDQ0LDEyICsxMDc5LDEyIEBA
CiAjIElmIHRoZSBVU0VfSFRBR1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgcmVmZXJlbmNl
cyB0byBzb3VyY2UgY29kZSB3aWxsCiAjIHBvaW50IHRvIHRoZSBIVE1MIGdlbmVyYXRlZCBieSB0
aGUgaHRhZ3MoMSkgdG9vbCBpbnN0ZWFkIG9mIGRveHlnZW4gYnVpbHQtaW4KICMgc291cmNlIGJy
b3dzZXIuIFRoZSBodGFncyB0b29sIGlzIHBhcnQgb2YgR05VJ3MgZ2xvYmFsIHNvdXJjZSB0YWdn
aW5nIHN5c3RlbQotIyAoc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbG9iYWwvZ2xv
YmFsLmh0bWwpLiBZb3Ugd2lsbCBuZWVkIHZlcnNpb24KKyMgKHNlZSBodHRwczovL3d3dy5nbnUu
b3JnL3NvZnR3YXJlL2dsb2JhbC9nbG9iYWwuaHRtbCkuIFlvdSB3aWxsIG5lZWQgdmVyc2lvbgog
IyA0LjguNiBvciBoaWdoZXIuCiAjCiAjIFRvIHVzZSBpdCBkbyB0aGUgZm9sbG93aW5nOgogIyAt
IEluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGdsb2JhbAotIyAtIEVuYWJsZSBTT1VSQ0Vf
QlJPV1NFUiBhbmQgVVNFX0hUQUdTIGluIHRoZSBjb25maWcgZmlsZQorIyAtIEVuYWJsZSBTT1VS
Q0VfQlJPV1NFUiBhbmQgVVNFX0hUQUdTIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUKICMgLSBN
YWtlIHN1cmUgdGhlIElOUFVUIHBvaW50cyB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUK
ICMgLSBSdW4gZG94eWdlbiBhcyBub3JtYWwKICMKQEAgLTExODksNyArMTIyNCw3IEBACiAjIFRo
ZSBIVE1MX0NPTE9SU1RZTEVfSFVFIHRhZyBjb250cm9scyB0aGUgY29sb3Igb2YgdGhlIEhUTUwg
b3V0cHV0LiBEb3h5Z2VuCiAjIHdpbGwgYWRqdXN0IHRoZSBjb2xvcnMgaW4gdGhlIHN0eWxlIHNo
ZWV0IGFuZCBiYWNrZ3JvdW5kIGltYWdlcyBhY2NvcmRpbmcgdG8KICMgdGhpcyBjb2xvci4gSHVl
IGlzIHNwZWNpZmllZCBhcyBhbiBhbmdsZSBvbiBhIGNvbG9yd2hlZWwsIHNlZQotIyBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gRm9yIGluc3Rh
bmNlIHRoZSB2YWx1ZQorIyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdWUgZm9yIG1v
cmUgaW5mb3JtYXRpb24uIEZvciBpbnN0YW5jZSB0aGUgdmFsdWUKICMgMCByZXByZXNlbnRzIHJl
ZCwgNjAgaXMgeWVsbG93LCAxMjAgaXMgZ3JlZW4sIDE4MCBpcyBjeWFuLCAyNDAgaXMgYmx1ZSwg
MzAwCiAjIHB1cnBsZSwgYW5kIDM2MCBpcyByZWQgYWdhaW4uCiAjIE1pbmltdW0gdmFsdWU6IDAs
IG1heGltdW0gdmFsdWU6IDM1OSwgZGVmYXVsdCB2YWx1ZTogMjIwLgpAQCAtMTIyNSw2ICsxMjYw
LDE3IEBACiAKIEhUTUxfVElNRVNUQU1QICAgICAgICAgPSBOTwogCisjIElmIHRoZSBIVE1MX0RZ
TkFNSUNfTUVOVVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgZ2VuZXJhdGVkIEhUTUwKKyMg
ZG9jdW1lbnRhdGlvbiB3aWxsIGNvbnRhaW4gYSBtYWluIGluZGV4IHdpdGggdmVydGljYWwgbmF2
aWdhdGlvbiBtZW51cyB0aGF0CisjIGFyZSBkeW5hbWljYWxseSBjcmVhdGVkIHZpYSBKYXZhU2Ny
aXB0LiBJZiBkaXNhYmxlZCwgdGhlIG5hdmlnYXRpb24gaW5kZXggd2lsbAorIyBjb25zaXN0cyBv
ZiBtdWx0aXBsZSBsZXZlbHMgb2YgdGFicyB0aGF0IGFyZSBzdGF0aWNhbGx5IGVtYmVkZGVkIGlu
IGV2ZXJ5IEhUTUwKKyMgcGFnZS4gRGlzYWJsZSB0aGlzIG9wdGlvbiB0byBzdXBwb3J0IGJyb3dz
ZXJzIHRoYXQgZG8gbm90IGhhdmUgSmF2YVNjcmlwdCwKKyMgbGlrZSB0aGUgUXQgaGVscCBicm93
c2VyLgorIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgorCitIVE1MX0RZTkFNSUNf
TUVOVVMgICAgID0gWUVTCisKICMgSWYgdGhlIEhUTUxfRFlOQU1JQ19TRUNUSU9OUyB0YWcgaXMg
c2V0IHRvIFlFUyB0aGVuIHRoZSBnZW5lcmF0ZWQgSFRNTAogIyBkb2N1bWVudGF0aW9uIHdpbGwg
Y29udGFpbiBzZWN0aW9ucyB0aGF0IGNhbiBiZSBoaWRkZW4gYW5kIHNob3duIGFmdGVyIHRoZQog
IyBwYWdlIGhhcyBsb2FkZWQuCkBAIC0xMjQ4LDEzICsxMjk0LDEzIEBACiAKICMgSWYgdGhlIEdF
TkVSQVRFX0RPQ1NFVCB0YWcgaXMgc2V0IHRvIFlFUywgYWRkaXRpb25hbCBpbmRleCBmaWxlcyB3
aWxsIGJlCiAjIGdlbmVyYXRlZCB0aGF0IGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciBBcHBsZSdz
IFhjb2RlIDMgaW50ZWdyYXRlZCBkZXZlbG9wbWVudAotIyBlbnZpcm9ubWVudCAoc2VlOiBodHRw
Oi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS90b29scy94Y29kZS8pLCBpbnRyb2R1Y2VkIHdpdGgKLSMg
T1NYIDEwLjUgKExlb3BhcmQpLiBUbyBjcmVhdGUgYSBkb2N1bWVudGF0aW9uIHNldCwgZG94eWdl
biB3aWxsIGdlbmVyYXRlIGEKKyMgZW52aXJvbm1lbnQgKHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIu
YXBwbGUuY29tL3hjb2RlLyksIGludHJvZHVjZWQgd2l0aCBPU1gKKyMgMTAuNSAoTGVvcGFyZCku
IFRvIGNyZWF0ZSBhIGRvY3VtZW50YXRpb24gc2V0LCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYQog
IyBNYWtlZmlsZSBpbiB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LiBSdW5uaW5nIG1ha2Ugd2ls
bCBwcm9kdWNlIHRoZSBkb2NzZXQgaW4KICMgdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bm5pbmcgbWFr
ZSBpbnN0YWxsIHdpbGwgaW5zdGFsbCB0aGUgZG9jc2V0IGluCiAjIH4vTGlicmFyeS9EZXZlbG9w
ZXIvU2hhcmVkL0RvY3VtZW50YXRpb24vRG9jU2V0cyBzbyB0aGF0IFhjb2RlIHdpbGwgZmluZCBp
dCBhdAotIyBzdGFydHVwLiBTZWUgaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vdG9vbHMvY3Jl
YXRpbmdkb2NzZXRzd2l0aGRveHlnZW4uaHRtbAotIyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyMg
c3RhcnR1cC4gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2FyY2hpdmUv
ZmVhdHVyZWRhcnRpY2xlcy9Eb3h5CisjIGdlblhjb2RlL19pbmRleC5odG1sIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgogIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiAjIFRoaXMgdGFnIHJlcXVp
cmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCiAKQEAgLTEyOTMs
NyArMTMzOSw3IEBACiAjIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlF
UyB0aGVuIGRveHlnZW4gZ2VuZXJhdGVzIHRocmVlCiAjIGFkZGl0aW9uYWwgSFRNTCBpbmRleCBm
aWxlczogaW5kZXguaGhwLCBpbmRleC5oaGMsIGFuZCBpbmRleC5oaGsuIFRoZQogIyBpbmRleC5o
aHAgaXMgYSBwcm9qZWN0IGZpbGUgdGhhdCBjYW4gYmUgcmVhZCBieSBNaWNyb3NvZnQncyBIVE1M
IEhlbHAgV29ya3Nob3AKLSMgKHNlZTogaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rv
d25sb2FkL2RldGFpbHMuYXNweD9pZD0yMTEzOCkgb24KKyMgKHNlZTogaHR0cHM6Ly93d3cubWlj
cm9zb2Z0LmNvbS9lbi11cy9kb3dubG9hZC9kZXRhaWxzLmFzcHg/aWQ9MjExMzgpIG9uCiAjIFdp
bmRvd3MuCiAjCiAjIFRoZSBIVE1MIEhlbHAgV29ya3Nob3AgY29udGFpbnMgYSBjb21waWxlciB0
aGF0IGNhbiBjb252ZXJ0IGFsbCBIVE1MIG91dHB1dApAQCAtMTM2OSw3ICsxNDE1LDcgQEAKIAog
IyBUaGUgUUhQX05BTUVTUEFDRSB0YWcgc3BlY2lmaWVzIHRoZSBuYW1lc3BhY2UgdG8gdXNlIHdo
ZW4gZ2VuZXJhdGluZyBRdCBIZWxwCiAjIFByb2plY3Qgb3V0cHV0LiBGb3IgbW9yZSBpbmZvcm1h
dGlvbiBwbGVhc2Ugc2VlIFF0IEhlbHAgUHJvamVjdCAvIE5hbWVzcGFjZQotIyAoc2VlOiBodHRw
Oi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwjbmFtZXNwYWNl
KS4KKyMgKHNlZTogaHR0cHM6Ly9kb2MucXQuaW8vYXJjaGl2ZXMvcXQtNC44L3F0aGVscHByb2pl
Y3QuaHRtbCNuYW1lc3BhY2UpLgogIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogb3JnLmRveHlnZW4u
UHJvamVjdC4KICMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBp
cyBzZXQgdG8gWUVTLgogCkBAIC0xMzc3LDcgKzE0MjMsNyBAQAogCiAjIFRoZSBRSFBfVklSVFVB
TF9GT0xERVIgdGFnIHNwZWNpZmllcyB0aGUgbmFtZXNwYWNlIHRvIHVzZSB3aGVuIGdlbmVyYXRp
bmcgUXQKICMgSGVscCBQcm9qZWN0IG91dHB1dC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNl
IHNlZSBRdCBIZWxwIFByb2plY3QgLyBWaXJ0dWFsCi0jIEZvbGRlcnMgKHNlZTogaHR0cDovL3F0
LXByb2plY3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI3ZpcnR1YWwtCisjIEZv
bGRlcnMgKHNlZTogaHR0cHM6Ly9kb2MucXQuaW8vYXJjaGl2ZXMvcXQtNC44L3F0aGVscHByb2pl
Y3QuaHRtbCN2aXJ0dWFsLQogIyBmb2xkZXJzKS4KICMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IGRv
Yy4KICMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQg
dG8gWUVTLgpAQCAtMTM4Niw3ICsxNDMyLDcgQEAKIAogIyBJZiB0aGUgUUhQX0NVU1RfRklMVEVS
X05BTUUgdGFnIGlzIHNldCwgaXQgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIGEgY3VzdG9tCiAjIGZp
bHRlciB0byBhZGQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9q
ZWN0IC8gQ3VzdG9tCi0jIEZpbHRlcnMgKHNlZTogaHR0cDovL3F0LXByb2plY3Qub3JnL2RvYy9x
dC00LjgvcXRoZWxwcHJvamVjdC5odG1sI2N1c3RvbS0KKyMgRmlsdGVycyAoc2VlOiBodHRwczov
L2RvYy5xdC5pby9hcmNoaXZlcy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI2N1c3RvbS0KICMg
ZmlsdGVycykuCiAjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAg
aXMgc2V0IHRvIFlFUy4KIApAQCAtMTM5NCw3ICsxNDQwLDcgQEAKIAogIyBUaGUgUUhQX0NVU1Rf
RklMVEVSX0FUVFJTIHRhZyBzcGVjaWZpZXMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgb2Yg
dGhlCiAjIGN1c3RvbSBmaWx0ZXIgdG8gYWRkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ug
c2VlIFF0IEhlbHAgUHJvamVjdCAvIEN1c3RvbQotIyBGaWx0ZXJzIChzZWU6IGh0dHA6Ly9xdC1w
cm9qZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRtbCNjdXN0b20tCisjIEZpbHRl
cnMgKHNlZTogaHR0cHM6Ly9kb2MucXQuaW8vYXJjaGl2ZXMvcXQtNC44L3F0aGVscHByb2plY3Qu
aHRtbCNjdXN0b20tCiAjIGZpbHRlcnMpLgogIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCiAKQEAgLTE0MDIsNyArMTQ0OCw3IEBACiAK
ICMgVGhlIFFIUF9TRUNUX0ZJTFRFUl9BVFRSUyB0YWcgc3BlY2lmaWVzIHRoZSBsaXN0IG9mIHRo
ZSBhdHRyaWJ1dGVzIHRoaXMKICMgcHJvamVjdCdzIGZpbHRlciBzZWN0aW9uIG1hdGNoZXMuIFF0
IEhlbHAgUHJvamVjdCAvIEZpbHRlciBBdHRyaWJ1dGVzIChzZWU6Ci0jIGh0dHA6Ly9xdC1wcm9q
ZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRtbCNmaWx0ZXItYXR0cmlidXRlcyku
CisjIGh0dHBzOi8vZG9jLnF0LmlvL2FyY2hpdmVzL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwj
ZmlsdGVyLWF0dHJpYnV0ZXMpLgogIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VO
RVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCiAKIFFIUF9TRUNUX0ZJTFRFUl9BVFRSUyAgPQpAQCAt
MTQ4Niw2ICsxNTMyLDE3IEBACiAKIEVYVF9MSU5LU19JTl9XSU5ET1cgICAgPSBOTwogCisjIElm
IHRoZSBIVE1MX0ZPUk1VTEFfRk9STUFUIG9wdGlvbiBpcyBzZXQgdG8gc3ZnLCBkb3h5Z2VuIHdp
bGwgdXNlIHRoZSBwZGYyc3ZnCisjIHRvb2wgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGF3YmFy
dG9uL3BkZjJzdmcpIG9yIGlua3NjYXBlIChzZWUKKyMgaHR0cHM6Ly9pbmtzY2FwZS5vcmcpIHRv
IGdlbmVyYXRlIGZvcm11bGFzIGFzIFNWRyBpbWFnZXMgaW5zdGVhZCBvZiBQTkdzIGZvcgorIyB0
aGUgSFRNTCBvdXRwdXQuIFRoZXNlIGltYWdlcyB3aWxsIGdlbmVyYWxseSBsb29rIG5pY2VyIGF0
IHNjYWxlZCByZXNvbHV0aW9ucy4KKyMgUG9zc2libGUgdmFsdWVzIGFyZTogcG5nIFRoZSBkZWZh
dWx0IGFuZCBzdmcgTG9va3MgbmljZXIgYnV0IHJlcXVpcmVzIHRoZQorIyBwZGYyc3ZnIHRvb2wu
CisjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBwbmcuCisjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCisKK0hUTUxfRk9STVVMQV9GT1JN
QVQgICAgPSBwbmcKKwogIyBVc2UgdGhpcyB0YWcgdG8gY2hhbmdlIHRoZSBmb250IHNpemUgb2Yg
TGFUZVggZm9ybXVsYXMgaW5jbHVkZWQgYXMgaW1hZ2VzIGluCiAjIHRoZSBIVE1MIGRvY3VtZW50
YXRpb24uIFdoZW4geW91IGNoYW5nZSB0aGUgZm9udCBzaXplIGFmdGVyIGEgc3VjY2Vzc2Z1bAog
IyBkb3h5Z2VuIHJ1biB5b3UgbmVlZCB0byBtYW51YWxseSByZW1vdmUgYW55IGZvcm1fKi5wbmcg
aW1hZ2VzIGZyb20gdGhlIEhUTUwKQEAgLTE0OTUsNyArMTU1Miw3IEBACiAKIEZPUk1VTEFfRk9O
VFNJWkUgICAgICAgPSAxMAogCi0jIFVzZSB0aGUgRk9STVVMQV9UUkFOUEFSRU5UIHRhZyB0byBk
ZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIGltYWdlcworIyBVc2UgdGhlIEZPUk1VTEFfVFJB
TlNQQVJFTlQgdGFnIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgaW1hZ2VzCiAjIGdl
bmVyYXRlZCBmb3IgZm9ybXVsYXMgYXJlIHRyYW5zcGFyZW50IFBOR3MuIFRyYW5zcGFyZW50IFBO
R3MgYXJlIG5vdAogIyBzdXBwb3J0ZWQgcHJvcGVybHkgZm9yIElFIDYuMCwgYnV0IGFyZSBzdXBw
b3J0ZWQgb24gYWxsIG1vZGVybiBicm93c2Vycy4KICMKQEAgLTE1MDYsOCArMTU2MywxNCBAQAog
CiBGT1JNVUxBX1RSQU5TUEFSRU5UICAgID0gWUVTCiAKKyMgVGhlIEZPUk1VTEFfTUFDUk9GSUxF
IGNhbiBjb250YWluIExhVGVYIFxuZXdjb21tYW5kIGFuZCBccmVuZXdjb21tYW5kIGNvbW1hbmRz
CisjIHRvIGNyZWF0ZSBuZXcgTGFUZVggY29tbWFuZHMgdG8gYmUgdXNlZCBpbiBmb3JtdWxhcyBh
cyBidWlsZGluZyBibG9ja3MuIFNlZQorIyB0aGUgc2VjdGlvbiAiSW5jbHVkaW5nIGZvcm11bGFz
IiBmb3IgZGV0YWlscy4KKworRk9STVVMQV9NQUNST0ZJTEUgICAgICA9CisKICMgRW5hYmxlIHRo
ZSBVU0VfTUFUSEpBWCBvcHRpb24gdG8gcmVuZGVyIExhVGVYIGZvcm11bGFzIHVzaW5nIE1hdGhK
YXggKHNlZQotIyBodHRwOi8vd3d3Lm1hdGhqYXgub3JnKSB3aGljaCB1c2VzIGNsaWVudCBzaWRl
IEphdmFzY3JpcHQgZm9yIHRoZSByZW5kZXJpbmcKKyMgaHR0cHM6Ly93d3cubWF0aGpheC5vcmcp
IHdoaWNoIHVzZXMgY2xpZW50IHNpZGUgSmF2YVNjcmlwdCBmb3IgdGhlIHJlbmRlcmluZwogIyBp
bnN0ZWFkIG9mIHVzaW5nIHByZS1yZW5kZXJlZCBiaXRtYXBzLiBVc2UgdGhpcyBpZiB5b3UgZG8g
bm90IGhhdmUgTGFUZVgKICMgaW5zdGFsbGVkIG9yIGlmIHlvdSB3YW50IHRvIGZvcm11bGFzIGxv
b2sgcHJldHRpZXIgaW4gdGhlIEhUTUwgb3V0cHV0LiBXaGVuCiAjIGVuYWJsZWQgeW91IG1heSBh
bHNvIG5lZWQgdG8gaW5zdGFsbCBNYXRoSmF4IHNlcGFyYXRlbHkgYW5kIGNvbmZpZ3VyZSB0aGUg
cGF0aApAQCAtMTUzNCw4ICsxNTk3LDggQEAKICMgTUFUSEpBWF9SRUxQQVRIIHNob3VsZCBiZSAu
Li9tYXRoamF4LiBUaGUgZGVmYXVsdCB2YWx1ZSBwb2ludHMgdG8gdGhlIE1hdGhKYXgKICMgQ29u
dGVudCBEZWxpdmVyeSBOZXR3b3JrIHNvIHlvdSBjYW4gcXVpY2tseSBzZWUgdGhlIHJlc3VsdCB3
aXRob3V0IGluc3RhbGxpbmcKICMgTWF0aEpheC4gSG93ZXZlciwgaXQgaXMgc3Ryb25nbHkgcmVj
b21tZW5kZWQgdG8gaW5zdGFsbCBhIGxvY2FsIGNvcHkgb2YKLSMgTWF0aEpheCBmcm9tIGh0dHA6
Ly93d3cubWF0aGpheC5vcmcgYmVmb3JlIGRlcGxveW1lbnQuCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBodHRwOi8vY2RuLm1hdGhqYXgub3JnL21hdGhqYXgvbGF0ZXN0LgorIyBNYXRoSmF4IGZy
b20gaHR0cHM6Ly93d3cubWF0aGpheC5vcmcgYmVmb3JlIGRlcGxveW1lbnQuCisjIFRoZSBkZWZh
dWx0IHZhbHVlIGlzOiBodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21hdGhqYXhAMi4KICMg
VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMu
CiAKIE1BVEhKQVhfUkVMUEFUSCAgICAgICAgPSBodHRwOi8vY2RuLm1hdGhqYXgub3JnL21hdGhq
YXgvbGF0ZXN0CkBAIC0xNTc3LDcgKzE2NDAsNyBAQAogU0VBUkNIRU5HSU5FICAgICAgICAgICA9
IFlFUwogCiAjIFdoZW4gdGhlIFNFUlZFUl9CQVNFRF9TRUFSQ0ggdGFnIGlzIGVuYWJsZWQgdGhl
IHNlYXJjaCBlbmdpbmUgd2lsbCBiZQotIyBpbXBsZW1lbnRlZCB1c2luZyBhIHdlYiBzZXJ2ZXIg
aW5zdGVhZCBvZiBhIHdlYiBjbGllbnQgdXNpbmcgSmF2YXNjcmlwdC4gVGhlcmUKKyMgaW1wbGVt
ZW50ZWQgdXNpbmcgYSB3ZWIgc2VydmVyIGluc3RlYWQgb2YgYSB3ZWIgY2xpZW50IHVzaW5nIEph
dmFTY3JpcHQuIFRoZXJlCiAjIGFyZSB0d28gZmxhdm9ycyBvZiB3ZWIgc2VydmVyIGJhc2VkIHNl
YXJjaGluZyBkZXBlbmRpbmcgb24gdGhlIEVYVEVSTkFMX1NFQVJDSAogIyBzZXR0aW5nLiBXaGVu
IGRpc2FibGVkLCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBQSFAgc2NyaXB0IGZvciBzZWFyY2hp
bmcgYW5kCiAjIGFuIGluZGV4IGZpbGUgdXNlZCBieSB0aGUgc2NyaXB0LiBXaGVuIEVYVEVSTkFM
X1NFQVJDSCBpcyBlbmFibGVkIHRoZSBpbmRleGluZwpAQCAtMTU5Niw3ICsxNjU5LDcgQEAKICMK
ICMgRG94eWdlbiBzaGlwcyB3aXRoIGFuIGV4YW1wbGUgaW5kZXhlciAoZG94eWluZGV4ZXIpIGFu
ZCBzZWFyY2ggZW5naW5lCiAjIChkb3h5c2VhcmNoLmNnaSkgd2hpY2ggYXJlIGJhc2VkIG9uIHRo
ZSBvcGVuIHNvdXJjZSBzZWFyY2ggZW5naW5lIGxpYnJhcnkKLSMgWGFwaWFuIChzZWU6IGh0dHA6
Ly94YXBpYW4ub3JnLykuCisjIFhhcGlhbiAoc2VlOiBodHRwczovL3hhcGlhbi5vcmcvKS4KICMK
ICMgU2VlIHRoZSBzZWN0aW9uICJFeHRlcm5hbCBJbmRleGluZyBhbmQgU2VhcmNoaW5nIiBmb3Ig
ZGV0YWlscy4KICMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgpAQCAtMTYwOSw3ICsxNjcyLDcg
QEAKICMKICMgRG94eWdlbiBzaGlwcyB3aXRoIGFuIGV4YW1wbGUgaW5kZXhlciAoZG94eWluZGV4
ZXIpIGFuZCBzZWFyY2ggZW5naW5lCiAjIChkb3h5c2VhcmNoLmNnaSkgd2hpY2ggYXJlIGJhc2Vk
IG9uIHRoZSBvcGVuIHNvdXJjZSBzZWFyY2ggZW5naW5lIGxpYnJhcnkKLSMgWGFwaWFuIChzZWU6
IGh0dHA6Ly94YXBpYW4ub3JnLykuIFNlZSB0aGUgc2VjdGlvbiAiRXh0ZXJuYWwgSW5kZXhpbmcg
YW5kCisjIFhhcGlhbiAoc2VlOiBodHRwczovL3hhcGlhbi5vcmcvKS4gU2VlIHRoZSBzZWN0aW9u
ICJFeHRlcm5hbCBJbmRleGluZyBhbmQKICMgU2VhcmNoaW5nIiBmb3IgZGV0YWlscy4KICMgVGhp
cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgog
CkBAIC0xNjYxLDIxICsxNzI0LDM1IEBACiAjIFRoZSBMQVRFWF9DTURfTkFNRSB0YWcgY2FuIGJl
IHVzZWQgdG8gc3BlY2lmeSB0aGUgTGFUZVggY29tbWFuZCBuYW1lIHRvIGJlCiAjIGludm9rZWQu
CiAjCi0jIE5vdGUgdGhhdCB3aGVuIGVuYWJsaW5nIFVTRV9QREZMQVRFWCB0aGlzIG9wdGlvbiBp
cyBvbmx5IHVzZWQgZm9yIGdlbmVyYXRpbmcKLSMgYml0bWFwcyBmb3IgZm9ybXVsYXMgaW4gdGhl
IEhUTUwgb3V0cHV0LCBidXQgbm90IGluIHRoZSBNYWtlZmlsZSB0aGF0IGlzCi0jIHdyaXR0ZW4g
dG8gdGhlIG91dHB1dCBkaXJlY3RvcnkuCi0jIFRoZSBkZWZhdWx0IGZpbGUgaXM6IGxhdGV4Lgor
IyBOb3RlIHRoYXQgd2hlbiBub3QgZW5hYmxpbmcgVVNFX1BERkxBVEVYIHRoZSBkZWZhdWx0IGlz
IGxhdGV4IHdoZW4gZW5hYmxpbmcKKyMgVVNFX1BERkxBVEVYIHRoZSBkZWZhdWx0IGlzIHBkZmxh
dGV4IGFuZCB3aGVuIGluIHRoZSBsYXRlciBjYXNlIGxhdGV4IGlzCisjIGNob3NlbiB0aGlzIGlz
IG92ZXJ3cml0dGVuIGJ5IHBkZmxhdGV4LiBGb3Igc3BlY2lmaWMgb3V0cHV0IGxhbmd1YWdlcyB0
aGUKKyMgZGVmYXVsdCBjYW4gaGF2ZSBiZWVuIHNldCBkaWZmZXJlbnRseSwgdGhpcyBkZXBlbmRz
IG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorIyB0aGUgb3V0cHV0IGxhbmd1YWdlLgogIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4K
IAogTEFURVhfQ01EX05BTUUgICAgICAgICA9IGxhdGV4CiAKICMgVGhlIE1BS0VJTkRFWF9DTURf
TkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY29tbWFuZCBuYW1lIHRvIGdlbmVy
YXRlCiAjIGluZGV4IGZvciBMYVRlWC4KKyMgTm90ZTogVGhpcyB0YWcgaXMgdXNlZCBpbiB0aGUg
TWFrZWZpbGUgLyBtYWtlLmJhdC4KKyMgU2VlIGFsc286IExBVEVYX01BS0VJTkRFWF9DTUQgZm9y
IHRoZSBwYXJ0IGluIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IGZpbGUKKyMgKC50ZXgpLgogIyBUaGUg
ZGVmYXVsdCBmaWxlIGlzOiBtYWtlaW5kZXguCiAjIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgogCiBNQUtFSU5ERVhfQ01EX05BTUUg
ICAgID0gbWFrZWluZGV4CiAKKyMgVGhlIExBVEVYX01BS0VJTkRFWF9DTUQgdGFnIGNhbiBiZSB1
c2VkIHRvIHNwZWNpZnkgdGhlIGNvbW1hbmQgbmFtZSB0bworIyBnZW5lcmF0ZSBpbmRleCBmb3Ig
TGFUZVguIEluIGNhc2UgdGhlcmUgaXMgbm8gYmFja3NsYXNoIChcKSBhcyBmaXJzdCBjaGFyYWN0
ZXIKKyMgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIGluIHRoZSBMYVRlWCBjb2RlLgor
IyBOb3RlOiBUaGlzIHRhZyBpcyB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IGZpbGUgKC50
ZXgpLgorIyBTZWUgYWxzbzogTUFLRUlOREVYX0NNRF9OQU1FIGZvciB0aGUgcGFydCBpbiB0aGUg
TWFrZWZpbGUgLyBtYWtlLmJhdC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG1ha2VpbmRleC4K
KyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0
byBZRVMuCisKK0xBVEVYX01BS0VJTkRFWF9DTUQgICAgPSBtYWtlaW5kZXgKKwogIyBJZiB0aGUg
Q09NUEFDVF9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiBnZW5lcmF0ZXMgbW9yZSBj
b21wYWN0IExhVGVYCiAjIGRvY3VtZW50cy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBzbWFsbCBw
cm9qZWN0cyBhbmQgbWF5IGhlbHAgdG8gc2F2ZSBzb21lCiAjIHRyZWVzIGluIGdlbmVyYWwuCkBA
IC0xNzk2LDcgKzE4NzMsNyBAQAogCiAjIFRoZSBMQVRFWF9CSUJfU1RZTEUgdGFnIGNhbiBiZSB1
c2VkIHRvIHNwZWNpZnkgdGhlIHN0eWxlIHRvIHVzZSBmb3IgdGhlCiAjIGJpYmxpb2dyYXBoeSwg
ZS5nLiBwbGFpbm5hdCwgb3IgaWVlZXRyLiBTZWUKLSMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9CaWJUZVggYW5kIFxjaXRlIGZvciBtb3JlIGluZm8uCisjIGh0dHBzOi8vZW4ud2lraXBl
ZGlhLm9yZy93aWtpL0JpYlRlWCBhbmQgXGNpdGUgZm9yIG1vcmUgaW5mby4KICMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IHBsYWluLgogIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VO
RVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KIApAQCAtMTgxMCw2ICsxODg3LDE0IEBACiAKIExB
VEVYX1RJTUVTVEFNUCAgICAgICAgPSBOTwogCisjIFRoZSBMQVRFWF9FTU9KSV9ESVJFQ1RPUlkg
dGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgKHJlbGF0aXZlIG9yIGFic29sdXRlKQorIyBwYXRo
IGZyb20gd2hpY2ggdGhlIGVtb2ppIGltYWdlcyB3aWxsIGJlIHJlYWQuIElmIGEgcmVsYXRpdmUg
cGF0aCBpcyBlbnRlcmVkLAorIyBpdCB3aWxsIGJlIHJlbGF0aXZlIHRvIHRoZSBMQVRFWF9PVVRQ
VVQgZGlyZWN0b3J5LiBJZiBsZWZ0IGJsYW5rIHRoZQorIyBMQVRFWF9PVVRQVVQgZGlyZWN0b3J5
IHdpbGwgYmUgdXNlZC4KKyMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRF
X0xBVEVYIGlzIHNldCB0byBZRVMuCisKK0xBVEVYX0VNT0pJX0RJUkVDVE9SWSAgPQorCiAjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBS
VEYgb3V0cHV0CiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODQ5LDkgKzE5MzQsOSBAQAogCiBS
VEZfSFlQRVJMSU5LUyAgICAgICAgID0gTk8KIAotIyBMb2FkIHN0eWxlc2hlZXQgZGVmaW5pdGlv
bnMgZnJvbSBmaWxlLiBTeW50YXggaXMgc2ltaWxhciB0byBkb3h5Z2VuJ3MgY29uZmlnCi0jIGZp
bGUsIGkuZS4gYSBzZXJpZXMgb2YgYXNzaWdubWVudHMuIFlvdSBvbmx5IGhhdmUgdG8gcHJvdmlk
ZSByZXBsYWNlbWVudHMsCi0jIG1pc3NpbmcgZGVmaW5pdGlvbnMgYXJlIHNldCB0byB0aGVpciBk
ZWZhdWx0IHZhbHVlLgorIyBMb2FkIHN0eWxlc2hlZXQgZGVmaW5pdGlvbnMgZnJvbSBmaWxlLiBT
eW50YXggaXMgc2ltaWxhciB0byBkb3h5Z2VuJ3MKKyMgY29uZmlndXJhdGlvbiBmaWxlLCBpLmUu
IGEgc2VyaWVzIG9mIGFzc2lnbm1lbnRzLiBZb3Ugb25seSBoYXZlIHRvIHByb3ZpZGUKKyMgcmVw
bGFjZW1lbnRzLCBtaXNzaW5nIGRlZmluaXRpb25zIGFyZSBzZXQgdG8gdGhlaXIgZGVmYXVsdCB2
YWx1ZS4KICMKICMgU2VlIGFsc28gc2VjdGlvbiAiRG94eWdlbiB1c2FnZSIgZm9yIGluZm9ybWF0
aW9uIG9uIGhvdyB0byBnZW5lcmF0ZSB0aGUKICMgZGVmYXVsdCBzdHlsZSBzaGVldCB0aGF0IGRv
eHlnZW4gbm9ybWFsbHkgdXNlcy4KQEAgLTE4NjAsOCArMTk0NSw4IEBACiBSVEZfU1RZTEVTSEVF
VF9GSUxFICAgID0KIAogIyBTZXQgb3B0aW9uYWwgdmFyaWFibGVzIHVzZWQgaW4gdGhlIGdlbmVy
YXRpb24gb2YgYW4gUlRGIGRvY3VtZW50LiBTeW50YXggaXMKLSMgc2ltaWxhciB0byBkb3h5Z2Vu
J3MgY29uZmlnIGZpbGUuIEEgdGVtcGxhdGUgZXh0ZW5zaW9ucyBmaWxlIGNhbiBiZSBnZW5lcmF0
ZWQKLSMgdXNpbmcgZG94eWdlbiAtZSBydGYgZXh0ZW5zaW9uRmlsZS4KKyMgc2ltaWxhciB0byBk
b3h5Z2VuJ3MgY29uZmlndXJhdGlvbiBmaWxlLiBBIHRlbXBsYXRlIGV4dGVuc2lvbnMgZmlsZSBj
YW4gYmUKKyMgZ2VuZXJhdGVkIHVzaW5nIGRveHlnZW4gLWUgcnRmIGV4dGVuc2lvbkZpbGUuCiAj
IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9SVEYgaXMgc2V0IHRvIFlF
Uy4KIAogUlRGX0VYVEVOU0lPTlNfRklMRSAgICA9CkBAIC0xOTQ3LDYgKzIwMzIsMTMgQEAKIAog
WE1MX1BST0dSQU1MSVNUSU5HICAgICA9IFlFUwogCisjIElmIHRoZSBYTUxfTlNfTUVNQl9GSUxF
X1NDT1BFIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgaW5jbHVkZQorIyBuYW1lc3Bh
Y2UgbWVtYmVycyBpbiBmaWxlIHNjb3BlIGFzIHdlbGwsIG1hdGNoaW5nIHRoZSBIVE1MIG91dHB1
dC4KKyMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgorIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgR0VORVJBVEVfWE1MIGlzIHNldCB0byBZRVMuCisKK1hNTF9OU19NRU1CX0ZJTEVf
U0NPUEUgPSBOTworCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIENvbmZpZ3VyYXRpb24gb3B0aW9u
cyByZWxhdGVkIHRvIHRoZSBET0NCT09LIG91dHB1dAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
MTk3OSw5ICsyMDcxLDkgQEAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyBJZiB0aGUgR0VORVJB
VEVfQVVUT0dFTl9ERUYgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBh
bgotIyBBdXRvR2VuIERlZmluaXRpb25zIChzZWUgaHR0cDovL2F1dG9nZW4uc2YubmV0KSBmaWxl
IHRoYXQgY2FwdHVyZXMgdGhlCi0jIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRpbmcgYWxs
IGRvY3VtZW50YXRpb24uIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgaXMKLSMgc3RpbGwgZXhwZXJp
bWVudGFsIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSBtb21lbnQuCisjIEF1dG9HZW4gRGVmaW5pdGlv
bnMgKHNlZSBodHRwOi8vYXV0b2dlbi5zb3VyY2Vmb3JnZS5uZXQvKSBmaWxlIHRoYXQgY2FwdHVy
ZXMKKyMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRpbmcgYWxsIGRvY3VtZW50YXRp
b24uIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUKKyMgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBp
bmNvbXBsZXRlIGF0IHRoZSBtb21lbnQuCiAjIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIAog
R0VORVJBVEVfQVVUT0dFTl9ERUYgICA9IE5PCkBAIC0yMTQ4LDEyICsyMjQwLDYgQEAKIAogRVhU
RVJOQUxfUEFHRVMgICAgICAgICA9IFlFUwogCi0jIFRoZSBQRVJMX1BBVEggc2hvdWxkIGJlIHRo
ZSBhYnNvbHV0ZSBwYXRoIGFuZCBuYW1lIG9mIHRoZSBwZXJsIHNjcmlwdAotIyBpbnRlcnByZXRl
ciAoaS5lLiB0aGUgcmVzdWx0IG9mICd3aGljaCBwZXJsJykuCi0jIFRoZSBkZWZhdWx0IGZpbGUg
KHdpdGggYWJzb2x1dGUgcGF0aCkgaXM6IC91c3IvYmluL3BlcmwuCi0KLVBFUkxfUEFUSCAgICAg
ICAgICAgICAgPSAvdXNyL2Jpbi9wZXJsCi0KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ29uZmln
dXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGRvdCB0b29sCiAjLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC0yMTY2LDE1ICsyMjUyLDYgQEAKICMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4K
IAogQ0xBU1NfRElBR1JBTVMgICAgICAgICA9IFlFUwotCi0jIFlvdSBjYW4gZGVmaW5lIG1lc3Nh
Z2Ugc2VxdWVuY2UgY2hhcnRzIHdpdGhpbiBkb3h5Z2VuIGNvbW1lbnRzIHVzaW5nIHRoZSBcbXNj
Ci0jIGNvbW1hbmQuIERveHlnZW4gd2lsbCB0aGVuIHJ1biB0aGUgbXNjZ2VuIHRvb2wgKHNlZToK
LSMgaHR0cDovL3d3dy5tY3Rlcm5hbi5tZS51ay9tc2NnZW4vKSkgdG8gcHJvZHVjZSB0aGUgY2hh
cnQgYW5kIGluc2VydCBpdCBpbiB0aGUKLSMgZG9jdW1lbnRhdGlvbi4gVGhlIE1TQ0dFTl9QQVRI
IHRhZyBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIGRpcmVjdG9yeSB3aGVyZQotIyB0aGUgbXNj
Z2VuIHRvb2wgcmVzaWRlcy4gSWYgbGVmdCBlbXB0eSB0aGUgdG9vbCBpcyBhc3N1bWVkIHRvIGJl
IGZvdW5kIGluIHRoZQotIyBkZWZhdWx0IHNlYXJjaCBwYXRoLgotCi1NU0NHRU5fUEFUSCAgICAg
ICAgICAgID0KIAogIyBZb3UgY2FuIGluY2x1ZGUgZGlhZ3JhbXMgbWFkZSB3aXRoIGRpYSBpbiBk
b3h5Z2VuIGRvY3VtZW50YXRpb24uIERveHlnZW4gd2lsbAogIyB0aGVuIHJ1biBkaWEgdG8gcHJv
ZHVjZSB0aGUgZGlhZ3JhbSBhbmQgaW5zZXJ0IGl0IGluIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUK
ZGlmZiAtdXIgdmlzLTAuNi9kb2MvY29uZi5weSB2aXMtMC44L2RvYy9jb25mLnB5Ci0tLSB2aXMt
MC42L2RvYy9jb25mLnB5CTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvZG9jL2NvbmYu
cHkJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtNTksNyArNTksNyBAQAogCiAjIEdlbmVyYWwgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCiBwcm9qZWN0ID0gJ1ZpcyBFZGl0b3InCi1jb3B5
cmlnaHQgPSAnMjAxNywgTWFyYyBBbmRyw6kgVGFubmVyJworY29weXJpZ2h0ID0gJzIwMTQtMjAy
MCBNYXJjIEFuZHLDqSBUYW5uZXIsIGV0IGFsLicKIGF1dGhvciA9ICdNYXJjIEFuZHLDqSBUYW5u
ZXInCiAKICMgVGhlIHZlcnNpb24gaW5mbyBmb3IgdGhlIHByb2plY3QgeW91J3JlIGRvY3VtZW50
aW5nLCBhY3RzIGFzIHJlcGxhY2VtZW50IGZvcgpAQCAtNjcsOSArNjcsOSBAQAogIyBidWlsdCBk
b2N1bWVudHMuCiAjCiAjIFRoZSBzaG9ydCBYLlkgdmVyc2lvbi4KLXZlcnNpb24gPSAnMC42Jwor
dmVyc2lvbiA9ICcwLjgnCiAjIFRoZSBmdWxsIHZlcnNpb24sIGluY2x1ZGluZyBhbHBoYS9iZXRh
L3JjIHRhZ3MuCi1yZWxlYXNlID0gJzAuNicKK3JlbGVhc2UgPSAnMC44JwogCiAjIFRoZSBsYW5n
dWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1l
bnRhdGlvbgogIyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCkBAIC04NiwxMCAr
ODYsMTMgQEAKICMgVGhlIG5hbWUgb2YgdGhlIFB5Z21lbnRzIChzeW50YXggaGlnaGxpZ2h0aW5n
KSBzdHlsZSB0byB1c2UuCiBweWdtZW50c19zdHlsZSA9ICdzcGhpbngnCiAKK3ByaW1hcnlfZG9t
YWluID0gJ2MnCitoaWdobGlnaHRfbGFuZ3VhZ2UgPSAnYycKKwogIyBJZiB0cnVlLCBgdG9kb2Ag
YW5kIGB0b2RvTGlzdGAgcHJvZHVjZSBvdXRwdXQsIGVsc2UgdGhleSBwcm9kdWNlIG5vdGhpbmcu
CiB0b2RvX2luY2x1ZGVfdG9kb3MgPSBGYWxzZQogCi1kZWZhdWx0X3JvbGUgPSAiYW55IgorZGVm
YXVsdF9yb2xlID0gImMiCiAKICMgLS0gT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLXVyIHZpcy0wLjYv
ZG9jL3RleHQucnN0IHZpcy0wLjgvZG9jL3RleHQucnN0Ci0tLSB2aXMtMC42L2RvYy90ZXh0LnJz
dAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L2RvYy90ZXh0LnJzdAkyMDIyLTExLTAx
IDE2OjUwOjEwCkBAIC00LDcgKzQsNyBAQAogVGhlIGNvcmUgdGV4dCBtYW5hZ2VtZW50IGRhdGEg
c3RydWN0dXJlIHdoaWNoIHN1cHBvcnRzIGVmZmljaWVudAogbW9kaWZpY2F0aW9ucyBhbmQgcHJv
dmlkZXMgYSBieXRlIHN0cmluZyBpbnRlcmZhY2UuIFRleHQgcG9zaXRpb25zCiBhcmUgcmVwcmVz
ZW50ZWQgYXMgYGBzaXplX3RgYC4gIFZhbGlkIGFkZHJlc3NlcyBhcmUgaW4gcmFuZ2UgYGBbMCwK
LXRleHRfc2l6ZSh0eHQpXWBgLiBBbiBpbnZhbGlkIHBvc2l0aW9uIGlzIGRlbm90ZWQgYnkgYEVQ
T1NgLiBBY2Nlc3MgdG8KK3RleHRfc2l6ZSh0eHQpXWBgLiBBbiBpbnZhbGlkIHBvc2l0aW9uIGlz
IGRlbm90ZWQgYnkgYGBFUE9TYGAuIEFjY2VzcyB0bwogdGhlIG5vbi1jb250aWdpdW9zIHBpZWNl
cyBpcyBhdmFpbGFibGUgYnkgbWVhbnMgb2YgYW4gaXRlcmF0b3IgaW50ZXJmYWNlCiBvciBhIGNv
cHkgbWVjaGFuaXNtLiBUZXh0IHJldmlzaW9ucyBhcmUgdHJhY2tlZCBpbiBhbiBoaXN0b3J5IGdy
YXBoLgogCkBAIC03Nyw3ICs3Nyw3IEBACiAuLiBub3RlOjogVGhlIGdyYXBoZW1lIGNsdXN0ZXIg
Ym91bmRhcmllcyBhcmUgY3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZAogICAgICAgICAgIGFjY29y
ZGluZyB0byBgVUFYIzI5IHJ1bGVzIDxodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjI5PmBf
LgogICAgICAgICAgIEluc3RlYWQgYSBiYXNlIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhcmJpdHJh
cmlseSBtYW55IGNvbWJpbmluZwotICAgICAgICAgIGNoYXJhY3RlciBhcyByZXBvcnRlZCBieSBg
d2N3aWR0aCgzKWAgYXJlIHNraXBwZWQuCisgICAgICAgICAgY2hhcmFjdGVyIGFzIHJlcG9ydGVk
IGJ5IGBgd2N3aWR0aCgzKWBgIGFyZSBza2lwcGVkLgogCiAuLiBkb3h5Z2VuZ3JvdXA6OiBpdGVy
YXRvcl9jaGFyCiAgICA6Y29udGVudC1vbmx5OgpAQCAtMTA1LDcgKzEwNSw3IEBACiBhbGwgbWFy
a3MgcGxhY2VkIGFmdGVyIHRoZSBtb2RpZmljYXRpb24gcG9pbnQuIFJldmVydGluZyB0byBhbiBv
bGRlciB0ZXh0CiBzdGF0ZSB3aWxsIGhpZGUgYWxsIGFmZmVjdGVkIG1hcmtzLCByZWRvaW5nIHRo
ZSBjaGFuZ2VzIHdpbGwgcmVzdG9yZSB0aGVtLgogCi0uLiB3YXJuaW5nOjogRHVlIHRvIGFuIG9w
dGltaXphdGlvbiBjYWNoZWQgbW9kaWZpY2F0aW9ucyAoaS5lLiBubyBgdGV4dF9zbmFwaG90YAor
Li4gd2FybmluZzo6IER1ZSB0byBhbiBvcHRpbWl6YXRpb24gY2FjaGVkIG1vZGlmaWNhdGlvbnMg
KGkuZS4gbm8gYGB0ZXh0X3NuYXBob3RgYAogICAgICAgICAgICAgIHdhcyBwZXJmb3JtZWQgYmV0
d2VlbiBzZXR0aW5nIHRoZSBtYXJrIGFuZCBpc3N1aW5nIHRoZSBjaGFuZ2VzKSBtaWdodAogICAg
ICAgICAgICAgIG5vdCBhZGp1c3QgbWFyayBwb3NpdGlvbnMgYWNjdXJhdGVseS4KIApkaWZmIC11
ciB2aXMtMC42L2x1YS9sZXhlcnMvYmFzaC5sdWEgdmlzLTAuOC9sdWEvbGV4ZXJzL2Jhc2gubHVh
Ci0tLSB2aXMtMC42L2x1YS9sZXhlcnMvYmFzaC5sdWEJMjAyMC0wNi0wNyAxMzoyNToyMAorKysg
dmlzLTAuOC9sdWEvbGV4ZXJzL2Jhc2gubHVhCTIwMjItMTEtMDEgMTY6NTA6MTAKQEAgLTE4LDEw
ICsxOCwxOCBAQAogbG9jYWwgZHFfc3RyID0gbC5kZWxpbWl0ZWRfcmFuZ2UoJyInKQogbG9jYWwg
ZXhfc3RyID0gbC5kZWxpbWl0ZWRfcmFuZ2UoJ2AnKQogbG9jYWwgaGVyZWRvYyA9ICc8PCcgKiBQ
KGZ1bmN0aW9uKGlucHV0LCBpbmRleCkKLSAgbG9jYWwgcywgZSwgXywgZGVsaW1pdGVyID0KLSAg
ICBpbnB1dDpmaW5kKCclLT8oWyJcJ10/KShbJWFfXVsld19dKiklMVtcblxyXGY7XSsnLCBpbmRl
eCkKKyAgbG9jYWwgcywgZSwgbWludXMsIF8sIGRlbGltaXRlciA9CisgICAgaW5wdXQ6ZmluZCgn
KC0/KShbIlwnXT8pKFslYV9dWyV3X10qKSUyW1xuXHJcZjtdKycsIGluZGV4KQogICBpZiBzID09
IGluZGV4IGFuZCBkZWxpbWl0ZXIgdGhlbgotICAgIGxvY2FsIF8sIGUgPSBpbnB1dDpmaW5kKCdb
XG5cclxmXSsnLi5kZWxpbWl0ZXIuLidcbicsIGUpCisgICAgLS0gSWYgdGhlIHN0YXJ0aW5nIGRl
bGltaXRlciBvZiBhIGhlcmUtZG9jIGJlZ2lucyB3aXRoICItIiwgdGhlbgorICAgIC0tIHNwYWNl
cyBhcmUgYWxsb3dlZCB0byBjb21lIGJlZm9yZSB0aGUgY2xvc2luZyBkZWxpbWl0ZXIuCisgICAg
bG9jYWwgY2xvc2VfcGF0dGVybgorICAgIGlmIG1pbnVzID09ICctJyB0aGVuCisgICAgICBjbG9z
ZV9wYXR0ZXJuID0gJ1tcblxyXGYlc10rJy4uZGVsaW1pdGVyLi4nXG4nCisgICAgZWxzZQorICAg
ICAgY2xvc2VfcGF0dGVybiA9ICdbXG5cclxmXSsnLi5kZWxpbWl0ZXIuLidcbicKKyAgICBlbmQK
KyAgICBsb2NhbCBfLCBlID0gaW5wdXQ6ZmluZChjbG9zZV9wYXR0ZXJuLCBlKQogICAgIHJldHVy
biBlIGFuZCBlICsgMSBvciAjaW5wdXQgKyAxCiAgIGVuZAogZW5kKQpPbmx5IGluIHZpcy0wLjgv
bHVhL2xleGVyczogZ2VtaW5pLmx1YQpkaWZmIC11ciB2aXMtMC42L2x1YS9sZXhlcnMvZ2l0LXJl
YmFzZS5sdWEgdmlzLTAuOC9sdWEvbGV4ZXJzL2dpdC1yZWJhc2UubHVhCi0tLSB2aXMtMC42L2x1
YS9sZXhlcnMvZ2l0LXJlYmFzZS5sdWEJMjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC9s
dWEvbGV4ZXJzL2dpdC1yZWJhc2UubHVhCTIwMjItMTEtMDEgMTY6NTA6MTAKQEAgLTEsNCArMSw0
IEBACi0tLSBDb3B5cmlnaHQgMjAxNyBNYXJjIEFuZHLDqSBUYW5uZXIKKy0tIENvcHlyaWdodCAy
MDE3LTIwMjEgTWFyYyBBbmRyw6kgVGFubmVyCiAtLSBnaXQtcmViYXNlKDEpIExQZWcgbGV4ZXIu
CiAKIGxvY2FsIGwgPSByZXF1aXJlKCdsZXhlcicpCkBAIC0yMiw2ICsyMiw3IEBACiAgICdmJywg
J2ZpeHVwJywKICAgJ3gnLCAnZXhlYycsCiAgICdkJywgJ2Ryb3AnLAorICAnYicsICdicmVhaycs
CiAgICdsJywgJ2xhYmVsJywKICAgJ3QnLCAncmVzZXQnLAogICAnbScsICdtZXJnZScsCk9ubHkg
aW4gdmlzLTAuOC9sdWEvbGV4ZXJzOiBtZXNvbi5sdWEKT25seSBpbiB2aXMtMC44L2x1YS9sZXhl
cnM6IHJvdXRlcm9zLmx1YQpkaWZmIC11ciB2aXMtMC42L2x1YS9sZXhlcnMvc3RyYWNlLmx1YSB2
aXMtMC44L2x1YS9sZXhlcnMvc3RyYWNlLmx1YQotLS0gdmlzLTAuNi9sdWEvbGV4ZXJzL3N0cmFj
ZS5sdWEJMjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC9sdWEvbGV4ZXJzL3N0cmFjZS5s
dWEJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtMSw5ICsxLDkgQEAKLS0tIENvcHlyaWdodCAyMDE3
IE1hcmMgQW5kcsOpIFRhbm5lci4gU2VlIExJQ0VOU0UuCistLSBDb3B5cmlnaHQgMjAxNy0yMDIx
IE1hcmMgQW5kcsOpIFRhbm5lci4gU2VlIExJQ0VOU0UuCiAtLSBzdHJhY2UoMSkgb3V0cHV0IGxl
eGVyCiAKIGxvY2FsIGwgPSByZXF1aXJlKCdsZXhlcicpCiBsb2NhbCB0b2tlbiwgd29yZF9tYXRj
aCA9IGwudG9rZW4sIGwud29yZF9tYXRjaAotbG9jYWwgUyA9IGxwZWcuUworbG9jYWwgUywgQiA9
IGxwZWcuUywgbHBlZy5CCiAKIGxvY2FsIE0gPSB7X05BTUUgPSAnc3RyYWNlJ30KIApAQCAtMTMs
MTYgKzEzLDE4IEBACiBsb2NhbCBjb25zdGFudCA9IHRva2VuKGwuQ09OU1RBTlQsIChsLnVwcGVy
ICsgJ18nKSAqIChsLnVwcGVyICsgbC5kaWdpdCArICdfJyleMCkKIGxvY2FsIHN5c2NhbGwgPSB0
b2tlbihsLktFWVdPUkQsIGwuc3RhcnRzX2xpbmUobC53b3JkKSkKIGxvY2FsIG9wZXJhdG9yID0g
dG9rZW4obC5PUEVSQVRPUiwgUygnKy0vKiU8Pn4hPV4mfD9+OjssLigpW117fScpKQotbG9jYWwg
Y29tbWVudCA9IHRva2VuKGwuQ09NTUVOVCwgbC5uZXN0ZWRfcGFpcignLyonLCAnKi8nKSArICgn
KCcgKiAobC5hbHBoYSArICcgJyleMSAqICcpXG4nKSkKLWxvY2FsIHJlc3VsdCA9IHRva2VuKGwu
VFlQRSwgJz0gJyAqIGwuaW50ZWdlcikKK2xvY2FsIGNvbW1lbnQgPSB0b2tlbihsLkNPTU1FTlQs
IGwubmVzdGVkX3BhaXIoJy8qJywgJyovJykgKyAobC5kZWxpbWl0ZWRfcmFuZ2UoJygpJykgKiBs
Lm5ld2xpbmUpKQorbG9jYWwgcmVzdWx0ID0gdG9rZW4obC5UWVBFLCBCKCcgPSAnKSAqIGwuaW50
ZWdlcikKK2xvY2FsIGlkZW50aWZpZXIgPSB0b2tlbihsLklERU5USUZJRVIsIGwud29yZCkKIAog
TS5fcnVsZXMgPSB7CiAgIHsnd2hpdGVzcGFjZScsIHdzfSwKLSAgeydrZXl3b3JkJywgc3lzY2Fs
bH0sCisgIHsnc3lzY2FsbCcsIHN5c2NhbGx9LAogICB7J2NvbnN0YW50JywgY29uc3RhbnR9LAog
ICB7J3N0cmluZycsIHN0cmluZ30sCiAgIHsnY29tbWVudCcsIGNvbW1lbnR9LAotICB7J3R5cGUn
LCByZXN1bHR9LAorICB7J3Jlc3VsdCcsIHJlc3VsdH0sCisgIHsnaWRlbnRpZmllcicsIGlkZW50
aWZpZXJ9LAogICB7J251bWJlcicsIG51bWJlcn0sCiAgIHsnb3BlcmF0b3InLCBvcGVyYXRvcn0s
CiB9Ck9ubHkgaW4gdmlzLTAuOC9sdWEvbGV4ZXJzOiB6aWcubHVhCmRpZmYgLXVyIHZpcy0wLjYv
bHVhL3BsdWdpbnMvY29tcGxldGUtZmlsZW5hbWUubHVhIHZpcy0wLjgvbHVhL3BsdWdpbnMvY29t
cGxldGUtZmlsZW5hbWUubHVhCi0tLSB2aXMtMC42L2x1YS9wbHVnaW5zL2NvbXBsZXRlLWZpbGVu
YW1lLmx1YQkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L2x1YS9wbHVnaW5zL2NvbXBs
ZXRlLWZpbGVuYW1lLmx1YQkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC0xMyw3ICsxMyw3IEBACiAJ
bG9jYWwgcHJlZml4ID0gZmlsZTpjb250ZW50KHJhbmdlKQogCWlmIG5vdCBwcmVmaXggdGhlbiBy
ZXR1cm4gZW5kCiAJLS0gU3RyaXAgbGVhZGluZyBkZWxpbWl0ZXJzIGZvciBzb21lIGxhbmd1YWdl
cwotCWksIGogPSBzdHJpbmcuZmluZChwcmVmaXgsICJbWyg8J1wiXSsiKQorCWxvY2FsIF8sIGog
PSBzdHJpbmcuZmluZChwcmVmaXgsICJbWyg8J1wiXSsiKQogCWlmIGogdGhlbiBwcmVmaXggPSBw
cmVmaXg6c3ViKGogKyAxKSBlbmQKIAlsb2NhbCBjbWQgPSBzdHJpbmcuZm9ybWF0KCJ2aXMtY29t
cGxldGUgLS1maWxlICclcyciLCBwcmVmaXg6Z3N1YigiJyIsICInXFwnJyIpKQogCWxvY2FsIHN0
YXR1cywgb3V0LCBlcnIgPSB2aXM6cGlwZShmaWxlLCB7IHN0YXJ0ID0gMCwgZmluaXNoID0gMCB9
LCBjbWQpCmRpZmYgLXVyIHZpcy0wLjYvbHVhL3BsdWdpbnMvZmlsZXR5cGUubHVhIHZpcy0wLjgv
bHVhL3BsdWdpbnMvZmlsZXR5cGUubHVhCi0tLSB2aXMtMC42L2x1YS9wbHVnaW5zL2ZpbGV0eXBl
Lmx1YQkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L2x1YS9wbHVnaW5zL2ZpbGV0eXBl
Lmx1YQkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC00MCw3ICs0MCw3IEBACiAJCWV4dCA9IHsgIiUu
YXdrJCIgfSwKIAl9LAogCWJhc2ggPSB7Ci0JCWV4dCA9IHsgIiUuYmFzaCQiLCAiJS5jc2gkIiwg
IiUuc2gkIiwgIiUuenNoJCIgfSwKKwkJZXh0ID0geyAiJS5iYXNoJCIsICIlLmNzaCQiLCAiJS5z
aCQiLCAiJS56c2gkIiAsIl5BUEtCVUlMRCQiLCAiJS5lYnVpbGQkIn0sCiAJCW1pbWUgPSB7ICJ0
ZXh0L3gtc2hlbGxzY3JpcHQiLCAiYXBwbGljYXRpb24veC1zaGVsbHNjcmlwdCIgfSwKIAl9LAog
CWJhdGNoID0gewpAQCAtMTQ5LDYgKzE0OSwxMCBAQAogCWdhcCA9IHsKIAkJZXh0ID0geyAiJS5n
JCIsICIlLmdkJCIsICIlLmdpJCIsICIlLmdhcCQiIH0sCiAJfSwKKwlnZW1pbmkgPSB7CisJCWV4
dCA9IHsgIiUuZ21pIiB9LAorCQltaW1lID0geyAidGV4dC9nZW1pbmkiIH0sCisJfSwKIAlnZXR0
ZXh0ID0gewogCQlleHQgPSB7ICIlLnBvJCIsICIlLnBvdCQiIH0sCiAJfSwKQEAgLTE3Miw3ICsx
NzYsNyBAQAogCQlleHQgPSB7ICIlLmdvJCIgfSwKIAl9LAogCWdyb292eSA9IHsKLQkJZXh0ID0g
eyAiJS5ncm9vdnkkIiwgIiUuZ3Z5JCIgfSwKKwkJZXh0ID0geyAiJS5ncm9vdnkkIiwgIiUuZ3Z5
JCIsICJeSmVua2luc2ZpbGUkIiB9LAogCX0sCiAJZ3RrcmMgPSB7CiAJCWV4dCA9IHsgIiUuZ3Rr
cmMkIiB9LApAQCAtMjA0LDcgKzIwOCw3IEBACiAJCWV4dCA9IHsgIiUuYnNoJCIsICIlLmphdmEk
IiB9LAogCX0sCiAJamF2YXNjcmlwdCA9IHsKLQkJZXh0ID0geyAiJS5qcyQiLCAiJS5qc2ZsJCIg
fSwKKwkJZXh0ID0geyAiJS5janMkIiwgIiUuanMkIiwgIiUuanNmbCQiLCAiJS5tanMkIiwgIiUu
dHMkIiB9LAogCX0sCiAJanNvbiA9IHsKIAkJZXh0ID0geyAiJS5qc29uJCIgfSwKQEAgLTIyNyw3
ICsyMzEsNyBAQAogCQlleHQgPSB7ICIlLmxlc3MkIiB9LAogCX0sCiAJbGlseXBvbmQgPSB7Ci0J
CWV4dCA9IHsgIiUubGlseSQiLCAiJS5seSQiIH0sCisJCWV4dCA9IHsgIiUuaWx5JCIsICIlLmx5
JCIgfSwKIAl9LAogCWxpc3AgPSB7CiAJCWV4dCA9IHsgIiUuY2wkIiwgIiUuZWwkIiwgIiUubGlz
cCQiLCAiJS5sc3AkIiB9LApAQCAtMjQ2LDYgKzI1MCw5IEBACiAJbWFrZWZpbGUgPSB7CiAJCWV4
dCA9IHsgIiUuaWZhY2UkIiwgIiUubWFrJCIsICIlLm1rJCIsICJHTlVtYWtlZmlsZSIsICJtYWtl
ZmlsZSIsICJNYWtlZmlsZSIgfSwKIAkJbWltZSA9IHsgInRleHQveC1tYWtlZmlsZSIgfSwKKwkJ
ZGV0ZWN0ID0gZnVuY3Rpb24oXywgZGF0YSkKKwkJCXJldHVybiBkYXRhOm1hdGNoKCJeIyEvdXNy
L2Jpbi9tYWtlIikKKwkJZW5kCiAJfSwKIAltYW4gPSB7CiAJCWV4dCA9IHsKQEAgLTI1OCw2ICsy
NjUsOSBAQAogCQlleHQgPSB7ICIlLm1kJCIsICIlLm1hcmtkb3duJCIgfSwKIAkJbWltZSA9IHsg
InRleHQveC1tYXJrZG93biIgfSwKIAl9LAorCW1lc29uID0geworCQlleHQgPSB7ICJebWVzb24l
LmJ1aWxkJCIgfSwKKwl9LAogCW1vb25zY3JpcHQgPSB7CiAJCWV4dCA9IHsgIiUubW9vbiQiIH0s
CiAJCW1pbWUgPSB7ICJ0ZXh0L3gtbW9vbiIgfSwKQEAgLTM0Myw2ICszNTMsMTIgQEAKIAlyaHRt
bCA9IHsKIAkJZXh0ID0geyAiJS5lcmIkIiwgIiUucmh0bWwkIiB9LAogCX0sCisJcm91dGVyb3Mg
PSB7CisJCWV4dCA9IHsgIiUucnNjIiB9LAorCQlkZXRlY3QgPSBmdW5jdGlvbihfLCBkYXRhKQor
CQkJcmV0dXJuIGRhdGE6bWF0Y2goIl4jLiogYnkgUm91dGVyT1MiKQorCQllbmQKKwl9LAogCXJz
dGF0cyA9IHsKIAkJZXh0ID0geyAiJS5SJCIsICIlLlJvdXQkIiwgIiUuUmhpc3RvcnkkIiwgIiUu
UnQkIiwgIlJvdXQuc2F2ZSIsICJSb3V0LmZhaWwiIH0sCiAJfSwKQEAgLTM2Myw3ICszNzksNyBA
QAogCQltaW1lID0geyAidGV4dC94LXNjYWxhIiB9LAogCX0sCiAJc2NoZW1lID0gewotCQlleHQg
PSB7ICIlLnNjaCQiLCAiJS5zY20kIiwgIiUuc2xkJCIsICIlLnNscyQiLCAiJS5zcyQiIH0sCisJ
CWV4dCA9IHsgIiUucmt0JCIsICIlLnNjaCQiLCAiJS5zY20kIiwgIiUuc2xkJCIsICIlLnNscyQi
LCAiJS5zcyQiIH0sCiAJfSwKIAlzbWFsbHRhbGsgPSB7CiAJCWV4dCA9IHsgIiUuY2hhbmdlcyQi
LCAiJS5zdCQiLCAiJS5zb3VyY2VzJCIgfSwKQEAgLTM4MSw3ICszOTcsNyBAQAogCQlleHQgPSB7
ICIlLmRkbCQiLCAiJS5zcWwkIiB9LAogCX0sCiAJc3RyYWNlID0gewotCQlkZXRlY3QgPSBmdW5j
dGlvbihmaWxlLCBkYXRhKQorCQlkZXRlY3QgPSBmdW5jdGlvbihfLCBkYXRhKQogCQkJcmV0dXJu
IGRhdGE6bWF0Y2goIl5leGVjdmUlKCIpCiAJCWVuZAogCX0sCkBAIC00MDMsNyArNDE5LDggQEAK
IAl9LAogCXRleHQgPSB7CiAJCWV4dCA9IHsgIiUudHh0JCIgfSwKLQkJbWltZSA9IHsgInRleHQv
cGxhaW4iIH0sCisJCS0tIERvICpub3QqIGxpc3QgbWltZSAidGV4dC9wbGFpbiIgaGVyZSwgaXQg
aXMgY292ZXJlZCBiZWxvdywKKwkJLS0gc2VlICd0cnkgdGV4dCBsZXhlciBhcyBhIGxhc3QgcmVz
b3J0JwogCX0sCiAJdG9tbCA9IHsKIAkJZXh0ID0geyAiJS50b21sJCIgfSwKQEAgLTQyMiw3ICs0
MzksNyBAQAogCQlleHQgPSB7ICIlLnZjZiQiLCAiJS52Y2FyZCQiIH0sCiAJfSwKIAl2ZXJpbG9n
ID0gewotCQlleHQgPSB7ICIlLnYkIiwgIiUudmVyJCIgfSwKKwkJZXh0ID0geyAiJS52JCIsICIl
LnZlciQiLCAiJS5zdiQiIH0sCiAJfSwKIAl2aGRsID0gewogCQlleHQgPSB7ICIlLnZoJCIsICIl
LnZoZCQiLCAiJS52aGRsJCIgfSwKQEAgLTQ0Myw2ICs0NjAsOSBAQAogCQlleHQgPSB7ICIlLnlh
bWwkIiwgIiUueW1sJCIgfSwKIAkJbWltZSA9IHsgInRleHQveC15YW1sIiB9LAogCX0sCisJemln
ID0geworCQlleHQgPSB7ICIlLnppZyQiIH0sCisJfSwKIH0KIAogdmlzLmV2ZW50cy5zdWJzY3Jp
YmUodmlzLmV2ZW50cy5XSU5fT1BFTiwgZnVuY3Rpb24od2luKQpAQCAtNDg0LDEwICs1MDQsMTEg
QEAKIAllbmQKIAogCS0tIHJ1biBmaWxlKDEpIHRvIGRldGVybWluZSBtaW1lIHR5cGUKKwlsb2Nh
bCBtaW1lCiAJaWYgbmFtZSB+PSBuaWwgdGhlbgogCQlsb2NhbCBmaWxlID0gaW8ucG9wZW4oc3Ry
aW5nLmZvcm1hdCgiZmlsZSAtYkwgLS1taW1lLXR5cGUgLS0gJyVzJyIsIG5hbWU6Z3N1YigiJyIs
ICInXFwnJyIpKSkKIAkJaWYgZmlsZSB0aGVuCi0JCQlsb2NhbCBtaW1lID0gZmlsZTpyZWFkKCcq
YWxsJykKKwkJCW1pbWUgPSBmaWxlOnJlYWQoJyphbGwnKQogCQkJZmlsZTpjbG9zZSgpCiAJCQlp
ZiBtaW1lIHRoZW4KIAkJCQltaW1lID0gbWltZTpnc3ViKCclcyokJywgJycpCmRpZmYgLXVyIHZp
cy0wLjYvbHVhL3Zpcy5sdWEgdmlzLTAuOC9sdWEvdmlzLmx1YQotLS0gdmlzLTAuNi9sdWEvdmlz
Lmx1YQkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L2x1YS92aXMubHVhCTIwMjItMTEt
MDEgMTY6NTA6MTAKQEAgLTEwMyw3ICsxMDMsNyBAQAogLS0gQ2hlY2tzIHdoZXRoZXIgYSBzdWJz
ZXF1ZW50IEB7cmVxdWlyZX0gY2FsbCB3aWxsIHN1Y2NlZWQuCiAtLSBAdHBhcmFtIHN0cmluZyBu
YW1lIHRoZSBtb2R1bGUgbmFtZSB0byBjaGVjawogLS0gQHRyZXR1cm4gYm9vbCB3aGV0aGVyIHRo
ZSBtb2R1bGUgd2FzIGZvdW5kCi12aXMubW9kdWxlX2V4aXN0ID0gZnVuY3Rpb24odmlzLCBuYW1l
KQordmlzLm1vZHVsZV9leGlzdCA9IGZ1bmN0aW9uKF8sIG5hbWUpCiAJZm9yIF8sIHNlYXJjaGVy
IGluIGlwYWlycyhwYWNrYWdlLnNlYXJjaGVycyBvciBwYWNrYWdlLmxvYWRlcnMpIGRvCiAJCWxv
Y2FsIGxvYWRlciA9IHNlYXJjaGVyKG5hbWUpCiAJCWlmIHR5cGUobG9hZGVyKSA9PSAnZnVuY3Rp
b24nIHRoZW4KQEAgLTE1MSw2ICsxNTEsNyBAQAogCVdJTl9ISUdITElHSFQgPSAiRXZlbnQ6OldJ
Tl9ISUdITElHSFQiLCAtLSBzZWUgQHt3aW5faGlnaGxpZ2h0fQogCVdJTl9PUEVOID0gIkV2ZW50
OjpXSU5fT1BFTiIsIC0tIHNlZSBAe3dpbl9vcGVufQogCVdJTl9TVEFUVVMgPSAiRXZlbnQ6OldJ
Tl9TVEFUVVMiLCAtLSBzZWUgQHt3aW5fc3RhdHVzfQorCVRFUk1fQ1NJID0gIkV2ZW50OjpURVJN
X0NTSSIsIC0tIHNlZSBAe3Rlcm1fY3NpfQogfQogCiBldmVudHMuZmlsZV9jbG9zZSA9IGZ1bmN0
aW9uKC4uLikgZXZlbnRzLmVtaXQoZXZlbnRzLkZJTEVfQ0xPU0UsIC4uLikgZW5kCkBAIC0xNjUs
NiArMTY2LDcgQEAKIGV2ZW50cy53aW5faGlnaGxpZ2h0ID0gZnVuY3Rpb24oLi4uKSBldmVudHMu
ZW1pdChldmVudHMuV0lOX0hJR0hMSUdIVCwgLi4uKSBlbmQKIGV2ZW50cy53aW5fb3BlbiA9IGZ1
bmN0aW9uKC4uLikgZXZlbnRzLmVtaXQoZXZlbnRzLldJTl9PUEVOLCAuLi4pIGVuZAogZXZlbnRz
Lndpbl9zdGF0dXMgPSBmdW5jdGlvbiguLi4pIGV2ZW50cy5lbWl0KGV2ZW50cy5XSU5fU1RBVFVT
LCAuLi4pIGVuZAorZXZlbnRzLnRlcm1fY3NpID0gZnVuY3Rpb24oLi4uKSBldmVudHMuZW1pdChl
dmVudHMuVEVSTV9DU0ksIC4uLikgZW5kCiAKIGxvY2FsIGhhbmRsZXJzID0ge30KIApkaWZmIC11
ciB2aXMtMC42L21haW4uYyB2aXMtMC44L21haW4uYwotLS0gdmlzLTAuNi9tYWluLmMJMjAyMC0w
Ni0wNyAxMzoyNToyMAorKysgdmlzLTAuOC9tYWluLmMJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAt
NjYsOCArNjYsNiBAQAogc3RhdGljIGNvbnN0IGNoYXIgKnNlbGVjdGlvbnNfcmVtb3ZlX2NvbHVt
bl9leGNlcHQoVmlzKiwgY29uc3QgY2hhciAqa2V5cywgY29uc3QgQXJnICphcmcpOwogLyogbW92
ZSB0byB0aGUgcHJldmlvdXMgKGFyZy0+aSA8IDApIG9yIG5leHQgKGFyZy0+aSA+IDApIHNlbGVj
dGlvbiAqLwogc3RhdGljIGNvbnN0IGNoYXIgKnNlbGVjdGlvbnNfbmF2aWdhdGUoVmlzKiwgY29u
c3QgY2hhciAqa2V5cywgY29uc3QgQXJnICphcmcpOwotLyogc2VsZWN0IHRoZSB3b3JkIHRoZSBz
ZWxlY3Rpb24gaXMgY3VycmVudGx5IG92ZXIgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzZWxlY3Rp
b25zX21hdGNoX3dvcmQoVmlzKiwgY29uc3QgY2hhciAqa2V5cywgY29uc3QgQXJnICphcmcpOwog
Lyogc2VsZWN0IHRoZSBuZXh0IHJlZ2lvbiBtYXRjaGluZyB0aGUgY3VycmVudCBzZWxlY3Rpb24g
Ki8KIHN0YXRpYyBjb25zdCBjaGFyICpzZWxlY3Rpb25zX21hdGNoX25leHQoVmlzKiwgY29uc3Qg
Y2hhciAqa2V5cywgY29uc3QgQXJnICphcmcpOwogLyogY2xlYXIgY3VycmVudCBzZWxlY3Rpb24g
YnV0IHNlbGVjdCBuZXh0IG1hdGNoICovCkBAIC04OCwxNCArODYsNiBAQAogc3RhdGljIGNvbnN0
IGNoYXIgKnNlbGVjdGlvbnNfY29tcGxlbWVudChWaXMqLCBjb25zdCBjaGFyICprZXlzLCBjb25z
dCBBcmcgKmFyZyk7CiAvKiBzdWJ0cmFjdCBzZWxlY3Rpb25zIGZyb20gbWFyayAqLwogc3RhdGlj
IGNvbnN0IGNoYXIgKnNlbGVjdGlvbnNfbWludXMoVmlzKiwgY29uc3QgY2hhciAqa2V5cywgY29u
c3QgQXJnICphcmcpOwotLyogcGFpcndpc2UgY29tYmluZSBzZWxlY3Rpb25zIGZyb20gbWFyayAq
Lwotc3RhdGljIGNvbnN0IGNoYXIgKnNlbGVjdGlvbnNfY29tYmluZShWaXMqLCBjb25zdCBjaGFy
ICprZXlzLCBjb25zdCBBcmcgKmFyZyk7Ci1zdGF0aWMgRmlsZXJhbmdlIGNvbWJpbmVfdW5pb24o
Y29uc3QgRmlsZXJhbmdlKiwgY29uc3QgRmlsZXJhbmdlKik7Ci1zdGF0aWMgRmlsZXJhbmdlIGNv
bWJpbmVfaW50ZXJzZWN0KGNvbnN0IEZpbGVyYW5nZSosIGNvbnN0IEZpbGVyYW5nZSopOwotc3Rh
dGljIEZpbGVyYW5nZSBjb21iaW5lX2xvbmdlcihjb25zdCBGaWxlcmFuZ2UqLCBjb25zdCBGaWxl
cmFuZ2UqKTsKLXN0YXRpYyBGaWxlcmFuZ2UgY29tYmluZV9zaG9ydGVyKGNvbnN0IEZpbGVyYW5n
ZSosIGNvbnN0IEZpbGVyYW5nZSopOwotc3RhdGljIEZpbGVyYW5nZSBjb21iaW5lX2xlZnRtb3N0
KGNvbnN0IEZpbGVyYW5nZSosIGNvbnN0IEZpbGVyYW5nZSopOwotc3RhdGljIEZpbGVyYW5nZSBj
b21iaW5lX3JpZ2h0bW9zdChjb25zdCBGaWxlcmFuZ2UqLCBjb25zdCBGaWxlcmFuZ2UqKTsKIC8q
IGFkanVzdCBjdXJyZW50IHVzZWQgY291bnQgYWNjb3JkaW5nIHRvIGtleXMgKi8KIHN0YXRpYyBj
b25zdCBjaGFyICpjb3VudChWaXMqLCBjb25zdCBjaGFyICprZXlzLCBjb25zdCBBcmcgKmFyZyk7
CiAvKiBtb3ZlIHRvIHRoZSBjb3VudC10aCBsaW5lIG9yIGlmIG5vdCBnaXZlbiBlaXRoZXIgdG8g
dGhlIGZpcnN0IChhcmctPmkgPCAwKQpAQCAtMTA0LDcgKzk0LDcgQEAKIC8qIG1ha2UgdGhlIGN1
cnJlbnQgYWN0aW9uIHVzZSB0aGUgb3BlcmF0b3IgaW5kaWNhdGVkIGJ5IGFyZy0+aSAqLwogc3Rh
dGljIGNvbnN0IGNoYXIgKm9wZXJhdG9yKFZpcyosIGNvbnN0IGNoYXIgKmtleXMsIGNvbnN0IEFy
ZyAqYXJnKTsKIC8qIGJsb2NrcyB0byByZWFkIGEga2V5IGFuZCBwZXJmb3JtcyBtb3ZlbWVudCBp
bmRpY2F0ZWQgYnkgYXJnLT5pIHdoaWNoCi0gKiBzaG91bGQgYmUgb25lIG9mIFZJU19NT1ZFX3tS
SUdIVCxMRUZUfV97VE8sVElMTH0gKi8KKyAqIHNob3VsZCBiZSBvbmUgb2YgVklTX01PVkVfe1RP
LFRJTEx9X3ssTElORX1fe1JJR0hULExFRlR9Ki8KIHN0YXRpYyBjb25zdCBjaGFyICptb3ZlbWVu
dF9rZXkoVmlzKiwgY29uc3QgY2hhciAqa2V5cywgY29uc3QgQXJnICphcmcpOwogLyogcGVyZm9y
bSB0aGUgbW92ZW1lbnQgYXMgaW5kaWNhdGVkIGJ5IGFyZy0+aSAqLwogc3RhdGljIGNvbnN0IGNo
YXIgKm1vdmVtZW50KFZpcyosIGNvbnN0IGNoYXIgKmtleXMsIGNvbnN0IEFyZyAqYXJnKTsKQEAg
LTIzMiw4ICsyMjIsMTIgQEAKIAlWSVNfQUNUSU9OX1BST01QVF9TRUFSQ0hfQkFDS1dBUkQsCiAJ
VklTX0FDVElPTl9USUxMX0xFRlQsCiAJVklTX0FDVElPTl9USUxMX1JJR0hULAorCVZJU19BQ1RJ
T05fVElMTF9MSU5FX0xFRlQsCisJVklTX0FDVElPTl9USUxMX0xJTkVfUklHSFQsCiAJVklTX0FD
VElPTl9UT19MRUZULAogCVZJU19BQ1RJT05fVE9fUklHSFQsCisJVklTX0FDVElPTl9UT19MSU5F
X0xFRlQsCisJVklTX0FDVElPTl9UT19MSU5FX1JJR0hULAogCVZJU19BQ1RJT05fUkVHSVNURVIs
CiAJVklTX0FDVElPTl9PUEVSQVRPUl9DSEFOR0UsCiAJVklTX0FDVElPTl9PUEVSQVRPUl9ERUxF
VEUsCkBAIC0yNjQsMTMgKzI1OCwxMyBAQAogCVZJU19BQ1RJT05fV0lORE9XX1NMSURFX0RPV04s
CiAJVklTX0FDVElPTl9QVVRfQUZURVIsCiAJVklTX0FDVElPTl9QVVRfQkVGT1JFLAotCVZJU19B
Q1RJT05fU0VMRUNUSU9OU19NQVRDSF9XT1JELAogCVZJU19BQ1RJT05fU0VMRUNUSU9OU19ORVdf
TElORV9BQk9WRSwKIAlWSVNfQUNUSU9OX1NFTEVDVElPTlNfTkVXX0xJTkVfQUJPVkVfRklSU1Qs
CiAJVklTX0FDVElPTl9TRUxFQ1RJT05TX05FV19MSU5FX0JFTE9XLAogCVZJU19BQ1RJT05fU0VM
RUNUSU9OU19ORVdfTElORV9CRUxPV19MQVNULAogCVZJU19BQ1RJT05fU0VMRUNUSU9OU19ORVdf
TElORVNfQkVHSU4sCiAJVklTX0FDVElPTl9TRUxFQ1RJT05TX05FV19MSU5FU19FTkQsCisJVklT
X0FDVElPTl9TRUxFQ1RJT05TX05FV19NQVRDSF9BTEwsCiAJVklTX0FDVElPTl9TRUxFQ1RJT05T
X05FV19NQVRDSF9ORVhULAogCVZJU19BQ1RJT05fU0VMRUNUSU9OU19ORVdfTUFUQ0hfU0tJUCwK
IAlWSVNfQUNUSU9OX1NFTEVDVElPTlNfQUxJR04sCkBAIC0yOTEsMTIgKzI4NSw2IEBACiAJVklT
X0FDVElPTl9TRUxFQ1RJT05TX0lOVEVSU0VDVCwKIAlWSVNfQUNUSU9OX1NFTEVDVElPTlNfQ09N
UExFTUVOVCwKIAlWSVNfQUNUSU9OX1NFTEVDVElPTlNfTUlOVVMsCi0JVklTX0FDVElPTl9TRUxF
Q1RJT05TX0NPTUJJTkVfVU5JT04sCi0JVklTX0FDVElPTl9TRUxFQ1RJT05TX0NPTUJJTkVfSU5U
RVJTRUNULAotCVZJU19BQ1RJT05fU0VMRUNUSU9OU19DT01CSU5FX0xPTkdFUiwKLQlWSVNfQUNU
SU9OX1NFTEVDVElPTlNfQ09NQklORV9TSE9SVEVSLAotCVZJU19BQ1RJT05fU0VMRUNUSU9OU19D
T01CSU5FX0xFRlRNT1NULAotCVZJU19BQ1RJT05fU0VMRUNUSU9OU19DT01CSU5FX1JJR0hUTU9T
VCwKIAlWSVNfQUNUSU9OX1RFWFRfT0JKRUNUX1dPUkRfT1VURVIsCiAJVklTX0FDVElPTl9URVhU
X09CSkVDVF9XT1JEX0lOTkVSLAogCVZJU19BQ1RJT05fVEVYVF9PQkpFQ1RfTE9OR1dPUkRfT1VU
RVIsCkBAIC0zMTgsOCArMzA2LDYgQEAKIAlWSVNfQUNUSU9OX1RFWFRfT0JKRUNUX1NJTkdMRV9R
VU9URV9JTk5FUiwKIAlWSVNfQUNUSU9OX1RFWFRfT0JKRUNUX0JBQ0tUSUNLX09VVEVSLAogCVZJ
U19BQ1RJT05fVEVYVF9PQkpFQ1RfQkFDS1RJQ0tfSU5ORVIsCi0JVklTX0FDVElPTl9URVhUX09C
SkVDVF9FTlRJUkVfT1VURVIsCi0JVklTX0FDVElPTl9URVhUX09CSkVDVF9FTlRJUkVfSU5ORVIs
CiAJVklTX0FDVElPTl9URVhUX09CSkVDVF9MSU5FX09VVEVSLAogCVZJU19BQ1RJT05fVEVYVF9P
QkpFQ1RfTElORV9JTk5FUiwKIAlWSVNfQUNUSU9OX1RFWFRfT0JKRUNUX0lOREVOVEFUSU9OLApA
QCAtNzM5LDIzICs3MjUsNDMgQEAKIAlbVklTX0FDVElPTl9USUxMX0xFRlRdID0gewogCQkidmlz
LW1vdGlvbi10aWxsLWxlZnQiLAogCQlWSVNfSEVMUCgiVGlsbCBhZnRlciB0aGUgb2NjdXJyZW5j
ZSBvZiBjaGFyYWN0ZXIgdG8gdGhlIGxlZnQiKQotCQltb3ZlbWVudF9rZXksIHsgLmkgPSBWSVNf
TU9WRV9MRUZUX1RJTEwgfQorCQltb3ZlbWVudF9rZXksIHsgLmkgPSBWSVNfTU9WRV9USUxMX0xF
RlQgfQogCX0sCiAJW1ZJU19BQ1RJT05fVElMTF9SSUdIVF0gPSB7CiAJCSJ2aXMtbW90aW9uLXRp
bGwtcmlnaHQiLAogCQlWSVNfSEVMUCgiVGlsbCBiZWZvcmUgdGhlIG9jY3VycmVuY2Ugb2YgY2hh
cmFjdGVyIHRvIHRoZSByaWdodCIpCi0JCW1vdmVtZW50X2tleSwgeyAuaSA9IFZJU19NT1ZFX1JJ
R0hUX1RJTEwgfQorCQltb3ZlbWVudF9rZXksIHsgLmkgPSBWSVNfTU9WRV9USUxMX1JJR0hUIH0K
IAl9LAorCVtWSVNfQUNUSU9OX1RJTExfTElORV9MRUZUXSA9IHsKKwkJInZpcy1tb3Rpb24tdGls
bC1saW5lLWxlZnQiLAorCQlWSVNfSEVMUCgiVGlsbCBhZnRlciB0aGUgb2NjdXJyZW5jZSBvZiBj
aGFyYWN0ZXIgdG8gdGhlIGxlZnQgb24gdGhlIGN1cnJlbnQgbGluZSIpCisJCW1vdmVtZW50X2tl
eSwgeyAuaSA9IFZJU19NT1ZFX1RJTExfTElORV9MRUZUIH0KKwl9LAorCVtWSVNfQUNUSU9OX1RJ
TExfTElORV9SSUdIVF0gPSB7CisJCSJ2aXMtbW90aW9uLXRpbGwtbGluZS1yaWdodCIsCisJCVZJ
U19IRUxQKCJUaWxsIGJlZm9yZSB0aGUgb2NjdXJyZW5jZSBvZiBjaGFyYWN0ZXIgdG8gdGhlIHJp
Z2h0IG9uIHRoZSBjdXJyZW50IGxpbmUiKQorCQltb3ZlbWVudF9rZXksIHsgLmkgPSBWSVNfTU9W
RV9USUxMX0xJTkVfUklHSFQgfQorCX0sCiAJW1ZJU19BQ1RJT05fVE9fTEVGVF0gPSB7CiAJCSJ2
aXMtbW90aW9uLXRvLWxlZnQiLAogCQlWSVNfSEVMUCgiVG8gdGhlIGZpcnN0IG9jY3VycmVuY2Ug
b2YgY2hhcmFjdGVyIHRvIHRoZSBsZWZ0IikKLQkJbW92ZW1lbnRfa2V5LCB7IC5pID0gVklTX01P
VkVfTEVGVF9UTyB9CisJCW1vdmVtZW50X2tleSwgeyAuaSA9IFZJU19NT1ZFX1RPX0xFRlQgfQog
CX0sCiAJW1ZJU19BQ1RJT05fVE9fUklHSFRdID0gewogCQkidmlzLW1vdGlvbi10by1yaWdodCIs
CiAJCVZJU19IRUxQKCJUbyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBjaGFyYWN0ZXIgdG8gdGhl
IHJpZ2h0IikKLQkJbW92ZW1lbnRfa2V5LCB7IC5pID0gVklTX01PVkVfUklHSFRfVE8gfQorCQlt
b3ZlbWVudF9rZXksIHsgLmkgPSBWSVNfTU9WRV9UT19SSUdIVCB9CiAJfSwKKwlbVklTX0FDVElP
Tl9UT19MSU5FX0xFRlRdID0geworCQkidmlzLW1vdGlvbi10by1saW5lLWxlZnQiLAorCQlWSVNf
SEVMUCgiVG8gdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgY2hhcmFjdGVyIHRvIHRoZSBsZWZ0IG9u
IHRoZSBjdXJyZW50IGxpbmUiKQorCQltb3ZlbWVudF9rZXksIHsgLmkgPSBWSVNfTU9WRV9UT19M
SU5FX0xFRlQgfQorCX0sCisJW1ZJU19BQ1RJT05fVE9fTElORV9SSUdIVF0gPSB7CisJCSJ2aXMt
bW90aW9uLXRvLWxpbmUtcmlnaHQiLAorCQlWSVNfSEVMUCgiVG8gdGhlIGZpcnN0IG9jY3VycmVu
Y2Ugb2YgY2hhcmFjdGVyIHRvIHRoZSByaWdodCBvbiB0aGUgY3VycmVudCBsaW5lIikKKwkJbW92
ZW1lbnRfa2V5LCB7IC5pID0gVklTX01PVkVfVE9fTElORV9SSUdIVCB9CisJfSwKIAlbVklTX0FD
VElPTl9SRUdJU1RFUl0gPSB7CiAJCSJ2aXMtcmVnaXN0ZXIiLAogCQlWSVNfSEVMUCgiVXNlIGdp
dmVuIHJlZ2lzdGVyIGZvciBuZXh0IG9wZXJhdG9yIikKQEAgLTkwNiwxMSArOTEyLDYgQEAKIAkJ
VklTX0hFTFAoIlB1dCB0ZXh0IGJlZm9yZSB0aGUgY3Vyc29yIikKIAkJb3BlcmF0b3IsIHsgLmkg
PSBWSVNfT1BfUFVUX0JFRk9SRSB9CiAJfSwKLQlbVklTX0FDVElPTl9TRUxFQ1RJT05TX01BVENI
X1dPUkRdID0gewotCQkidmlzLXNlbGVjdGlvbnMtc2VsZWN0LXdvcmQiLAotCQlWSVNfSEVMUCgi
U2VsZWN0IHdvcmQgdW5kZXIgY3Vyc29yIikKLQkJc2VsZWN0aW9uc19tYXRjaF93b3JkLAotCX0s
CiAJW1ZJU19BQ1RJT05fU0VMRUNUSU9OU19ORVdfTElORV9BQk9WRV0gPSB7CiAJCSJ2aXMtc2Vs
ZWN0aW9uLW5ldy1saW5lcy1hYm92ZSIsCiAJCVZJU19IRUxQKCJDcmVhdGUgYSBuZXcgc2VsZWN0
aW9uIG9uIHRoZSBsaW5lIGFib3ZlIikKQEAgLTk0MSw2ICs5NDIsMTEgQEAKIAkJVklTX0hFTFAo
IkNyZWF0ZSBhIG5ldyBzZWxlY3Rpb24gYXQgdGhlIGVuZCBvZiBldmVyeSBsaW5lIGNvdmVyZWQg
Ynkgc2VsZWN0aW9uIikKIAkJb3BlcmF0b3IsIHsgLmkgPSBWSVNfT1BfQ1VSU09SX0VPTCB9CiAJ
fSwKKwlbVklTX0FDVElPTl9TRUxFQ1RJT05TX05FV19NQVRDSF9BTExdID0geworCQkidmlzLXNl
bGVjdGlvbi1uZXctbWF0Y2gtYWxsIiwKKwkJVklTX0hFTFAoIlNlbGVjdCBhbGwgcmVnaW9ucyBt
YXRjaGluZyB0aGUgY3VycmVudCBzZWxlY3Rpb24iKQorCQlzZWxlY3Rpb25zX21hdGNoX25leHQs
IHsgLmIgPSB0cnVlIH0KKwl9LAogCVtWSVNfQUNUSU9OX1NFTEVDVElPTlNfTkVXX01BVENIX05F
WFRdID0gewogCQkidmlzLXNlbGVjdGlvbi1uZXctbWF0Y2gtbmV4dCIsCiAJCVZJU19IRUxQKCJT
ZWxlY3QgdGhlIG5leHQgcmVnaW9uIG1hdGNoaW5nIHRoZSBjdXJyZW50IHNlbGVjdGlvbiIpCkBA
IC0xMDQxLDM2ICsxMDQ3LDYgQEAKIAkJVklTX0hFTFAoIlN1YnRyYWN0IHNlbGVjdGlvbnMgZnJv
bSBtYXJrIikKIAkJc2VsZWN0aW9uc19taW51cwogCX0sCi0JW1ZJU19BQ1RJT05fU0VMRUNUSU9O
U19DT01CSU5FX1VOSU9OXSA9IHsKLQkJInZpcy1zZWxlY3Rpb25zLWNvbWJpbmUtdW5pb24iLAot
CQlWSVNfSEVMUCgiUGFpcndpc2UgdW5pb24gd2l0aCBzZWxlY3Rpb25zIGZyb20gbWFyayIpCi0J
CXNlbGVjdGlvbnNfY29tYmluZSwgeyAuY29tYmluZSA9IGNvbWJpbmVfdW5pb24gfQotCX0sCi0J
W1ZJU19BQ1RJT05fU0VMRUNUSU9OU19DT01CSU5FX0lOVEVSU0VDVF0gPSB7Ci0JCSJ2aXMtc2Vs
ZWN0aW9ucy1jb21iaW5lLWludGVyc2VjdCIsCi0JCVZJU19IRUxQKCJQYWlyd2lzZSBpbnRlcnNl
Y3Qgd2l0aCBzZWxlY3Rpb25zIGZyb20gbWFyayIpCi0JCXNlbGVjdGlvbnNfY29tYmluZSwgeyAu
Y29tYmluZSA9IGNvbWJpbmVfaW50ZXJzZWN0IH0KLQl9LAotCVtWSVNfQUNUSU9OX1NFTEVDVElP
TlNfQ09NQklORV9MT05HRVJdID0gewotCQkidmlzLXNlbGVjdGlvbnMtY29tYmluZS1sb25nZXIi
LAotCQlWSVNfSEVMUCgiUGFpcndpc2UgY29tYmluZTogdGFrZSBsb25nZXIiKQotCQlzZWxlY3Rp
b25zX2NvbWJpbmUsIHsgLmNvbWJpbmUgPSBjb21iaW5lX2xvbmdlciB9Ci0JfSwKLQlbVklTX0FD
VElPTl9TRUxFQ1RJT05TX0NPTUJJTkVfU0hPUlRFUl0gPSB7Ci0JCSJ2aXMtc2VsZWN0aW9ucy1j
b21iaW5lLXNob3J0ZXIiLAotCQlWSVNfSEVMUCgiUGFpcndpc2UgY29tYmluZTogdGFrZSBzaG9y
dGVyIikKLQkJc2VsZWN0aW9uc19jb21iaW5lLCB7IC5jb21iaW5lID0gY29tYmluZV9zaG9ydGVy
IH0KLQl9LAotCVtWSVNfQUNUSU9OX1NFTEVDVElPTlNfQ09NQklORV9MRUZUTU9TVF0gPSB7Ci0J
CSJ2aXMtc2VsZWN0aW9ucy1jb21iaW5lLWxlZnRtb3N0IiwKLQkJVklTX0hFTFAoIlBhaXJ3aXNl
IGNvbWJpbmU6IGxlZnRtb3N0IikKLQkJc2VsZWN0aW9uc19jb21iaW5lLCB7IC5jb21iaW5lID0g
Y29tYmluZV9sZWZ0bW9zdCB9Ci0JfSwKLQlbVklTX0FDVElPTl9TRUxFQ1RJT05TX0NPTUJJTkVf
UklHSFRNT1NUXSA9IHsKLQkJInZpcy1zZWxlY3Rpb25zLWNvbWJpbmUtcmlnaHRtb3N0IiwKLQkJ
VklTX0hFTFAoIlBhaXJ3aXNlIGNvbWJpbmU6IHJpZ2h0bW9zdCIpCi0JCXNlbGVjdGlvbnNfY29t
YmluZSwgeyAuY29tYmluZSA9IGNvbWJpbmVfcmlnaHRtb3N0IH0KLQl9LAogCVtWSVNfQUNUSU9O
X1RFWFRfT0JKRUNUX1dPUkRfT1VURVJdID0gewogCQkidmlzLXRleHRvYmplY3Qtd29yZC1vdXRl
ciIsCiAJCVZJU19IRUxQKCJBIHdvcmQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBp
bmNsdWRlZCIpCkBAIC0xMTc2LDE2ICsxMTUyLDYgQEAKIAkJVklTX0hFTFAoIkEgYmFja3RpY2sg
ZGVsaW1pdGVkIHN0cmluZyAoaW5uZXIgdmFyaWFudCkiKQogCQl0ZXh0b2JqLCB7IC5pID0gVklT
X1RFWFRPQkpFQ1RfSU5ORVJfQkFDS1RJQ0sgfQogCX0sCi0JW1ZJU19BQ1RJT05fVEVYVF9PQkpF
Q1RfRU5USVJFX09VVEVSXSA9IHsKLQkJInZpcy10ZXh0b2JqZWN0LWVudGlyZS1vdXRlciIsCi0J
CVZJU19IRUxQKCJUaGUgd2hvbGUgdGV4dCBjb250ZW50IikKLQkJdGV4dG9iaiwgeyAuaSA9IFZJ
U19URVhUT0JKRUNUX09VVEVSX0VOVElSRSB9Ci0JfSwKLQlbVklTX0FDVElPTl9URVhUX09CSkVD
VF9FTlRJUkVfSU5ORVJdID0gewotCQkidmlzLXRleHRvYmplY3QtZW50aXJlLWlubmVyIiwKLQkJ
VklTX0hFTFAoIlRoZSB3aG9sZSB0ZXh0IGNvbnRlbnQsIGV4Y2VwdCBmb3IgbGVhZGluZyBhbmQg
dHJhaWxpbmcgZW1wdHkgbGluZXMiKQotCQl0ZXh0b2JqLCB7IC5pID0gVklTX1RFWFRPQkpFQ1Rf
SU5ORVJfRU5USVJFIH0KLQl9LAogCVtWSVNfQUNUSU9OX1RFWFRfT0JKRUNUX0xJTkVfT1VURVJd
ID0gewogCQkidmlzLXRleHRvYmplY3QtbGluZS1vdXRlciIsCiAJCVZJU19IRUxQKCJUaGUgd2hv
bGUgbGluZSIpCkBAIC0xMzg5LDE5ICsxMzU1LDcgQEAKIAlyZXR1cm4ga2V5czsKIH0KIAotc3Rh
dGljIGNvbnN0IGNoYXIgKnNlbGVjdGlvbnNfbWF0Y2hfd29yZChWaXMgKnZpcywgY29uc3QgY2hh
ciAqa2V5cywgY29uc3QgQXJnICphcmcpIHsKLQlUZXh0ICp0eHQgPSB2aXNfdGV4dCh2aXMpOwot
CVZpZXcgKnZpZXcgPSB2aXNfdmlldyh2aXMpOwotCWZvciAoU2VsZWN0aW9uICpzID0gdmlld19z
ZWxlY3Rpb25zKHZpZXcpOyBzOyBzID0gdmlld19zZWxlY3Rpb25zX25leHQocykpIHsKLQkJRmls
ZXJhbmdlIHdvcmQgPSB0ZXh0X29iamVjdF93b3JkKHR4dCwgdmlld19jdXJzb3JzX3BvcyhzKSk7
Ci0JCWlmICh0ZXh0X3JhbmdlX3ZhbGlkKCZ3b3JkKSkKLQkJCXZpZXdfc2VsZWN0aW9uc19zZXQo
cywgJndvcmQpOwotCX0KLQl2aXNfbW9kZV9zd2l0Y2godmlzLCBWSVNfTU9ERV9WSVNVQUwpOwot
CXJldHVybiBrZXlzOwotfQotCi1zdGF0aWMgY29uc3QgU2VsZWN0aW9uICpzZWxlY3Rpb25fbmV3
X3ByaW1hcnkoVmlldyAqdmlldywgRmlsZXJhbmdlICpyKSB7CitzdGF0aWMgU2VsZWN0aW9uICpz
ZWxlY3Rpb25fbmV3KFZpZXcgKnZpZXcsIEZpbGVyYW5nZSAqciwgYm9vbCBpc3ByaW1hcnkpIHsK
IAlUZXh0ICp0eHQgPSB2aWV3X3RleHQodmlldyk7CiAJc2l6ZV90IHBvcyA9IHRleHRfY2hhcl9w
cmV2KHR4dCwgci0+ZW5kKTsKIAlTZWxlY3Rpb24gKnMgPSB2aWV3X3NlbGVjdGlvbnNfbmV3KHZp
ZXcsIHBvcyk7CkBAIC0xNDA5LDQxICsxMzYzLDExIEBACiAJCXJldHVybiBOVUxMOwogCXZpZXdf
c2VsZWN0aW9uc19zZXQocywgcik7CiAJdmlld19zZWxlY3Rpb25zX2FuY2hvcihzLCB0cnVlKTsK
LQl2aWV3X3NlbGVjdGlvbnNfcHJpbWFyeV9zZXQocyk7CisJaWYgKGlzcHJpbWFyeSkKKwkJdmll
d19zZWxlY3Rpb25zX3ByaW1hcnlfc2V0KHMpOwogCXJldHVybiBzOwogfQogCi1zdGF0aWMgY29u
c3QgY2hhciAqc2VsZWN0aW9uc19tYXRjaF9uZXh0X2xpdGVyYWwoVmlzICp2aXMsIGNvbnN0IGNo
YXIgKmtleXMsIGNvbnN0IEFyZyAqYXJnKSB7Ci0JVGV4dCAqdHh0ID0gdmlzX3RleHQodmlzKTsK
LQlWaWV3ICp2aWV3ID0gdmlzX3ZpZXcodmlzKTsKLQlTZWxlY3Rpb24gKnMgPSB2aWV3X3NlbGVj
dGlvbnNfcHJpbWFyeV9nZXQodmlldyk7Ci0JRmlsZXJhbmdlIHNlbCA9IHZpZXdfc2VsZWN0aW9u
c19nZXQocyk7Ci0Jc2l6ZV90IGxlbiA9IHRleHRfcmFuZ2Vfc2l6ZSgmc2VsKTsKLQlpZiAoIWxl
bikKLQkJcmV0dXJuIGtleXM7Ci0KLQljaGFyICpidWYgPSB0ZXh0X2J5dGVzX2FsbG9jMCh0eHQs
IHNlbC5zdGFydCwgbGVuKTsKLQlpZiAoIWJ1ZikKLQkJcmV0dXJuIGtleXM7Ci0KLQlzaXplX3Qg
c3RhcnQgPSB0ZXh0X2ZpbmRfbmV4dCh0eHQsIHNlbC5lbmQsIGJ1Zik7Ci0JRmlsZXJhbmdlIG1h
dGNoID0gdGV4dF9yYW5nZV9uZXcoc3RhcnQsIHN0YXJ0K2xlbik7Ci0JaWYgKHN0YXJ0ICE9IHNl
bC5lbmQgJiYgc2VsZWN0aW9uX25ld19wcmltYXJ5KHZpZXcsICZtYXRjaCkpCi0JCWdvdG8gb3V0
OwotCi0Jc2VsID0gdmlld19zZWxlY3Rpb25zX2dldCh2aWV3X3NlbGVjdGlvbnModmlldykpOwot
CXN0YXJ0ID0gdGV4dF9maW5kX3ByZXYodHh0LCBzZWwuc3RhcnQsIGJ1Zik7Ci0JaWYgKHN0YXJ0
ID09IHNlbC5zdGFydCkKLQkJZ290byBvdXQ7Ci0KLQltYXRjaCA9IHRleHRfcmFuZ2VfbmV3KHN0
YXJ0LCBzdGFydCtsZW4pOwotCXNlbGVjdGlvbl9uZXdfcHJpbWFyeSh2aWV3LCAmbWF0Y2gpOwot
Ci1vdXQ6Ci0JZnJlZShidWYpOwotCXJldHVybiBrZXlzOwotfQotCiBzdGF0aWMgY29uc3QgY2hh
ciAqc2VsZWN0aW9uc19tYXRjaF9uZXh0KFZpcyAqdmlzLCBjb25zdCBjaGFyICprZXlzLCBjb25z
dCBBcmcgKmFyZykgewogCVRleHQgKnR4dCA9IHZpc190ZXh0KHZpcyk7CiAJVmlldyAqdmlldyA9
IHZpc192aWV3KHZpcyk7CkBAIC0xNDUyLDI0ICsxMzc2LDQ1IEBACiAJaWYgKCF0ZXh0X3Jhbmdl
X3ZhbGlkKCZzZWwpKQogCQlyZXR1cm4ga2V5czsKIAotCUZpbGVyYW5nZSB3b3JkID0gdGV4dF9v
YmplY3Rfd29yZCh0eHQsIHZpZXdfY3Vyc29yc19wb3MocykpOwotCWlmICghdGV4dF9yYW5nZV9l
cXVhbCgmc2VsLCAmd29yZCkpCi0JCXJldHVybiBzZWxlY3Rpb25zX21hdGNoX25leHRfbGl0ZXJh
bCh2aXMsIGtleXMsIGFyZyk7CisJc3RhdGljIGJvb2wgbWF0Y2hfd29yZDsKIAorCWlmICh2aWV3
X3NlbGVjdGlvbnNfY291bnQodmlldykgPT0gMSkgeworCQlGaWxlcmFuZ2Ugd29yZCA9IHRleHRf
b2JqZWN0X3dvcmQodHh0LCB2aWV3X2N1cnNvcnNfcG9zKHMpKTsKKwkJbWF0Y2hfd29yZCA9IHRl
eHRfcmFuZ2VfZXF1YWwoJnNlbCwgJndvcmQpOworCX0KKworCUZpbGVyYW5nZSAoKmZpbmRfbmV4
dCkoVGV4dCAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKikgPSB0ZXh0X29iamVjdF93b3JkX2ZpbmRf
bmV4dDsKKwlGaWxlcmFuZ2UgKCpmaW5kX3ByZXYpKFRleHQgKiwgc2l6ZV90LCBjb25zdCBjaGFy
ICopID0gdGV4dF9vYmplY3Rfd29yZF9maW5kX3ByZXY7CisJaWYgKCFtYXRjaF93b3JkKSB7CisJ
CWZpbmRfbmV4dCA9IHRleHRfb2JqZWN0X2ZpbmRfbmV4dDsKKwkJZmluZF9wcmV2ID0gdGV4dF9v
YmplY3RfZmluZF9wcmV2OworCX0KKwogCWNoYXIgKmJ1ZiA9IHRleHRfYnl0ZXNfYWxsb2MwKHR4
dCwgc2VsLnN0YXJ0LCB0ZXh0X3JhbmdlX3NpemUoJnNlbCkpOwogCWlmICghYnVmKQogCQlyZXR1
cm4ga2V5czsKIAotCXdvcmQgPSB0ZXh0X29iamVjdF93b3JkX2ZpbmRfbmV4dCh0eHQsIHNlbC5l
bmQsIGJ1Zik7Ci0JaWYgKHRleHRfcmFuZ2VfdmFsaWQoJndvcmQpICYmIHNlbGVjdGlvbl9uZXdf
cHJpbWFyeSh2aWV3LCAmd29yZCkpCi0JCWdvdG8gb3V0OworCWJvb2wgbWF0Y2hfYWxsID0gYXJn
LT5iOworCUZpbGVyYW5nZSBwcmltYXJ5ID0gc2VsOwogCi0Jc2VsID0gdmlld19zZWxlY3Rpb25z
X2dldCh2aWV3X3NlbGVjdGlvbnModmlldykpOwotCXdvcmQgPSB0ZXh0X29iamVjdF93b3JkX2Zp
bmRfcHJldih0eHQsIHNlbC5zdGFydCwgYnVmKTsKLQlpZiAoIXRleHRfcmFuZ2VfdmFsaWQoJndv
cmQpKQotCQlnb3RvIG91dDsKLQlzZWxlY3Rpb25fbmV3X3ByaW1hcnkodmlldywgJndvcmQpOwor
CWZvciAoOzspIHsKKwkJc2VsID0gZmluZF9uZXh0KHR4dCwgc2VsLmVuZCwgYnVmKTsKKwkJaWYg
KCF0ZXh0X3JhbmdlX3ZhbGlkKCZzZWwpKQorCQkJYnJlYWs7CisJCWlmIChzZWxlY3Rpb25fbmV3
KHZpZXcsICZzZWwsICFtYXRjaF9hbGwpICYmICFtYXRjaF9hbGwpCisJCQlnb3RvIG91dDsKKwl9
CiAKKwlzZWwgPSBwcmltYXJ5OworCisJZm9yICg7OykgeworCQlzZWwgPSBmaW5kX3ByZXYodHh0
LCBzZWwuc3RhcnQsIGJ1Zik7CisJCWlmICghdGV4dF9yYW5nZV92YWxpZCgmc2VsKSkKKwkJCWJy
ZWFrOworCQlpZiAoc2VsZWN0aW9uX25ldyh2aWV3LCAmc2VsLCAhbWF0Y2hfYWxsKSAmJiAhbWF0
Y2hfYWxsKQorCQkJYnJlYWs7CisJfQorCiBvdXQ6CiAJZnJlZShidWYpOwogCXJldHVybiBrZXlz
OwpAQCAtMTgyNSw4MyArMTc3MCw2IEBACiAJcmV0dXJuIGtleXM7CiB9CiAKLXN0YXRpYyBGaWxl
cmFuZ2UgY29tYmluZV91bmlvbihjb25zdCBGaWxlcmFuZ2UgKnIxLCBjb25zdCBGaWxlcmFuZ2Ug
KnIyKSB7Ci0JaWYgKCFyMSkKLQkJcmV0dXJuICpyMjsKLQlpZiAoIXIyKQotCQlyZXR1cm4gKnIx
OwotCXJldHVybiB0ZXh0X3JhbmdlX3VuaW9uKHIxLCByMik7Ci19Ci0KLXN0YXRpYyBGaWxlcmFu
Z2UgY29tYmluZV9pbnRlcnNlY3QoY29uc3QgRmlsZXJhbmdlICpyMSwgY29uc3QgRmlsZXJhbmdl
ICpyMikgewotCWlmICghcjEgfHwgIXIyKQotCQlyZXR1cm4gdGV4dF9yYW5nZV9lbXB0eSgpOwot
CXJldHVybiB0ZXh0X3JhbmdlX2ludGVyc2VjdChyMSwgcjIpOwotfQotCi1zdGF0aWMgRmlsZXJh
bmdlIGNvbWJpbmVfbG9uZ2VyKGNvbnN0IEZpbGVyYW5nZSAqcjEsIGNvbnN0IEZpbGVyYW5nZSAq
cjIpIHsKLQlpZiAoIXIxKQotCQlyZXR1cm4gKnIyOwotCWlmICghcjIpCi0JCXJldHVybiAqcjE7
Ci0Jc2l6ZV90IGwxID0gdGV4dF9yYW5nZV9zaXplKHIxKTsKLQlzaXplX3QgbDIgPSB0ZXh0X3Jh
bmdlX3NpemUocjIpOwotCXJldHVybiBsMSA8IGwyID8gKnIyIDogKnIxOwotfQotCi1zdGF0aWMg
RmlsZXJhbmdlIGNvbWJpbmVfc2hvcnRlcihjb25zdCBGaWxlcmFuZ2UgKnIxLCBjb25zdCBGaWxl
cmFuZ2UgKnIyKSB7Ci0JaWYgKCFyMSkKLQkJcmV0dXJuICpyMjsKLQlpZiAoIXIyKQotCQlyZXR1
cm4gKnIxOwotCXNpemVfdCBsMSA9IHRleHRfcmFuZ2Vfc2l6ZShyMSk7Ci0Jc2l6ZV90IGwyID0g
dGV4dF9yYW5nZV9zaXplKHIyKTsKLQlyZXR1cm4gbDEgPCBsMiA/ICpyMSA6ICpyMjsKLX0KLQot
c3RhdGljIEZpbGVyYW5nZSBjb21iaW5lX2xlZnRtb3N0KGNvbnN0IEZpbGVyYW5nZSAqcjEsIGNv
bnN0IEZpbGVyYW5nZSAqcjIpIHsKLQlpZiAoIXIxKQotCQlyZXR1cm4gKnIyOwotCWlmICghcjIp
Ci0JCXJldHVybiAqcjE7Ci0JcmV0dXJuIHIxLT5zdGFydCA8IHIyLT5zdGFydCB8fCAocjEtPnN0
YXJ0ID09IHIyLT5zdGFydCAmJiByMS0+ZW5kIDwgcjItPmVuZCkgPyAqcjEgOiAqcjI7Ci19Ci0K
LXN0YXRpYyBGaWxlcmFuZ2UgY29tYmluZV9yaWdodG1vc3QoY29uc3QgRmlsZXJhbmdlICpyMSwg
Y29uc3QgRmlsZXJhbmdlICpyMikgewotCWlmICghcjEpCi0JCXJldHVybiAqcjI7Ci0JaWYgKCFy
MikKLQkJcmV0dXJuICpyMTsKLQlyZXR1cm4gcjEtPnN0YXJ0IDwgcjItPnN0YXJ0IHx8IChyMS0+
c3RhcnQgPT0gcjItPnN0YXJ0ICYmIHIxLT5lbmQgPCByMi0+ZW5kKSA/ICpyMiA6ICpyMTsKLX0K
LQotc3RhdGljIGNvbnN0IGNoYXIgKnNlbGVjdGlvbnNfY29tYmluZShWaXMgKnZpcywgY29uc3Qg
Y2hhciAqa2V5cywgY29uc3QgQXJnICphcmcpIHsKLQlXaW4gKndpbiA9IHZpc193aW5kb3codmlz
KTsKLQlWaWV3ICp2aWV3ID0gdmlzX3ZpZXcodmlzKTsKLQllbnVtIFZpc01hcmsgbWFyayA9IHZp
c19tYXJrX3VzZWQodmlzKTsKLQlBcnJheSBhID0gdmlld19zZWxlY3Rpb25zX2dldF9hbGwodmll
dyk7Ci0JQXJyYXkgYiA9IHZpc19tYXJrX2dldCh3aW4sIG1hcmspOwotCUFycmF5IHNlbDsKLQlh
cnJheV9pbml0X2Zyb20oJnNlbCwgJmEpOwotCi0JRmlsZXJhbmdlICpyMSA9IGFycmF5X2dldCgm
YSwgMCksICpyMiA9IGFycmF5X2dldCgmYiwgMCk7Ci0JZm9yIChzaXplX3QgaSA9IDAsIGogPSAw
OyByMSB8fCByMjsgcjEgPSBhcnJheV9nZXQoJmEsICsraSksIHIyID0gYXJyYXlfZ2V0KCZiLCAr
K2opKSB7Ci0JCUZpbGVyYW5nZSBuZXcgPSBhcmctPmNvbWJpbmUocjEsIHIyKTsKLQkJaWYgKHRl
eHRfcmFuZ2VfdmFsaWQoJm5ldykpCi0JCQlhcnJheV9hZGQoJnNlbCwgJm5ldyk7Ci0JfQotCi0J
dmlzX21hcmtfbm9ybWFsaXplKCZzZWwpOwotCXNlbGVjdGlvbnNfc2V0KHZpcywgdmlldywgJnNl
bCk7Ci0JdmlzX2NhbmNlbCh2aXMpOwotCi0JYXJyYXlfcmVsZWFzZSgmYSk7Ci0JYXJyYXlfcmVs
ZWFzZSgmYik7Ci0JYXJyYXlfcmVsZWFzZSgmc2VsKTsKLQotCXJldHVybiBrZXlzOwotfQotCiBz
dGF0aWMgY29uc3QgY2hhciAqcmVwbGFjZShWaXMgKnZpcywgY29uc3QgY2hhciAqa2V5cywgY29u
c3QgQXJnICphcmcpIHsKIAlpZiAoIWtleXNbMF0pIHsKIAkJdmlzX2tleW1hcF9kaXNhYmxlKHZp
cyk7CkBAIC0yMjI3LDcgKzIwOTUsNyBAQAogCQkJdmlzX21vdGlvbih2aXMsIFZJU19NT1ZFX0xJ
TkVfQkVHSU4pOwogCQkJdmlzX2tleXNfZmVlZCh2aXMsICI8dmlzLW1vdGlvbi1saW5lLWJlZ2lu
PiIpOwogCQl9Ci0JCXZpc19rZXlzX2ZlZWQodmlzLCAiPEVudGVyPjxVcD4iKTsKKwkJdmlzX2tl
eXNfZmVlZCh2aXMsICI8RW50ZXI+PHZpcy1tb3Rpb24tbGluZS11cD4iKTsKIAl9CiAJcmV0dXJu
IGtleXM7CiB9CkBAIC0yMzYwLDYgKzIyMjgsNyBAQAogCQkud2luX2Nsb3NlID0gdmlzX2x1YV93
aW5fY2xvc2UsCiAJCS53aW5faGlnaGxpZ2h0ID0gdmlzX2x1YV93aW5faGlnaGxpZ2h0LAogCQku
d2luX3N0YXR1cyA9IHZpc19sdWFfd2luX3N0YXR1cywKKwkJLnRlcm1fY3NpID0gdmlzX2x1YV90
ZXJtX2NzaSwKIAl9OwogCiAJdmlzID0gdmlzX25ldyh1aV90ZXJtX25ldygpLCAmZXZlbnQpOwpk
aWZmIC11ciB2aXMtMC42L21hbi92aXMtY2xpcGJvYXJkLjEgdmlzLTAuOC9tYW4vdmlzLWNsaXBi
b2FyZC4xCi0tLSB2aXMtMC42L21hbi92aXMtY2xpcGJvYXJkLjEJMjAyMC0wNi0wNyAxMzoyNToy
MAorKysgdmlzLTAuOC9tYW4vdmlzLWNsaXBib2FyZC4xCTIwMjItMTEtMDEgMTY6NTA6MTAKQEAg
LTEyLDkgKzEyLDExIEBACiAuUHAKIC5ObSB2aXMtY2xpcGJvYXJkCiAuRmwgLWNvcHkKKy5PcCBG
bCAtc2VsZWN0aW9uIEFyIHNlbGVjdGlvbgogLlBwCiAuTm0gdmlzLWNsaXBib2FyZAogLkZsIC1w
YXN0ZQorLk9wIEZsIC1zZWxlY3Rpb24gQXIgc2VsZWN0aW9uCiAuCiAuU2ggREVTQ1JJUFRJT04K
IC5ObSB2aXMtY2xpcGJvYXJkCkBAIC01MCw2ICs1Miw4IEBACiAuTm0gdmlzLWNsaXBib2FyZAog
cmVhZHMgdGhlIGNvbnRlbnQgb2YgdGhlIHN5c3RlbSBjbGlwYm9hcmQsCiBhbmQgd3JpdGVzIGl0
IHRvIHN0YW5kYXJkIG91dHB1dC4KKy5JdCBGbCAtc2VsZWN0aW9uIEFyIHNlbGVjdGlvbgorc3Bl
Y2lmeSB3aGljaCBzZWxlY3Rpb24gdG8gdXNlLCBvcHRpb25zIGFyZSAicHJpbWFyeSIgb3IgImNs
aXBib2FyZCIKIC5FbAogLgogLlNoIEVOVklST05NRU5UCmRpZmYgLXVyIHZpcy0wLjYvbWFuL3Zp
cy4xIHZpcy0wLjgvbWFuL3Zpcy4xCi0tLSB2aXMtMC42L21hbi92aXMuMQkyMDIwLTA2LTA3IDEz
OjI1OjIwCisrKyB2aXMtMC44L21hbi92aXMuMQkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC0xMjMs
NyArMTIzLDcgQEAKIC5TcyBNYXJrcwogLgogQSBtYXJrIGFzc29jaWF0ZXMgYSBzeW1ib2xpYyBu
YW1lIHRvIGEgc2V0IG9mIHNlbGVjdGlvbnMuCi1BIHN0b3JlZCBzZWxlY3Rpb24gYmVjb21lcyBp
bnZhbGlkIHdoZW4gaXRzIGRlbGltaXRpbmcgYm91bmRhcmllcyBjaGFuZ2VzCitBIHN0b3JlZCBz
ZWxlY3Rpb24gYmVjb21lcyBpbnZhbGlkIHdoZW4gaXRzIGRlbGltaXRpbmcgYm91bmRhcmllcyBj
aGFuZ2UKIGluIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4KIElmIHNhaWQgY2hhbmdlcyBhcmUgbGF0
ZXIgdW5kb25lIHRoZSBtYXJrIGJlY29tZXMgdmFsaWQgYWdhaW4uCiAuSWMgbQpAQCAtNzY5LDE2
ICs3NjksMzAgQEAKIC4KIC5TcyBPcGVyYXRvcnMKIC4KLU9wZXJhdG9ycyBwZXJmb3JtIGEgY2Vy
dGFpbiBvcGVyYXRpb24gYW4gYSB0ZXh0IHJhbmdlIGluZGljYXRlZCBieSBlaXRoZXIgYQorT3Bl
cmF0b3JzIHBlcmZvcm0gYSBjZXJ0YWluIG9wZXJhdGlvbiBvbiBhIHRleHQgcmFuZ2UgaW5kaWNh
dGVkIGJ5IGVpdGhlciBhCiBtb3Rpb24sIGEgdGV4dCBvYmplY3Qgb3IgYW4gZXhpc3Rpbmcgc2Vs
ZWN0aW9uLgogLlBwCitXaGVuIHVzZWQgaW4gbm9ybWFsIG1vZGUsIHRoZSBmb2xsb3dpbmcgb3Bl
cmF0b3JzIHdhaXQgZm9yIGEgbW90aW9uLCBwdXR0aW5nCit2aXMgaW50byBvcGVyYXRvciBwZW5k
aW5nIG1vZGUuCiAuQmwgLXRhZyAtd2lkdGggWFhYWFhYWFhYWCAtY29tcGFjdAogLkl0IEljIGMK
IGNoYW5nZSwgZGVsZXRlIHJhbmdlIGFuZCBlbnRlciBpbnNlcnQgbW9kZQogLgogLkl0IEljIGQK
LWRlbGV0ZSByYW5nZQorZGVsZXRlLCBjdXQgcmFuZ2UgdG8gcmVnaXN0ZXIKIC4KKy5JdCBJYyA8
CitzaGlmdC1sZWZ0LCBkZWNyZWFzZSBpbmRlbnQKKy4KKy5JdCBJYyA+CitzaGlmdC1yaWdodCwg
aW5jcmVhc2UgaW5kZW50CisuCisuSXQgSWMgeQoreWFuaywgY29weSByYW5nZSB0byByZWdpc3Rl
cgorLkVsCisuUHAKK1doZW4gdXNlZCBpbiBub3JtYWwgbW9kZSwgdGhlIGZvbGxvd2luZyBhY3Rp
b25zIHRha2UgZWZmZWN0IGltbWVkaWF0ZWx5LgorLkJsIC10YWcgLXdpZHRoIFhYWFhYWFhYWFgg
LWNvbXBhY3QKIC5JdCBJYyA9CiBmb3JtYXQsIGZpbHRlciByYW5nZSB0aHJvdWdoCiAuWHIgZm10
IDEKQEAgLTc4OSw2ICs4MDMsOSBAQAogLkl0IEljIGdVCiBtYWtlIHVwcGVyY2FzZQogLgorLkl0
IEljIGd+Citzd2FwIGNhc2UKKy4KIC5JdCBJYyBKCiBqb2luIGxpbmVzLCBpbnNlcnQgc3BhY2Vz
IGluIGJldHdlZW4KIC4KQEAgLTc5NiwxOSArODEzLDExIEBACiBqb2luIGxpbmVzIHJlbW92ZSBh
bnkgZGVsaW1pdGluZyB3aGl0ZSBzcGFjZXMKIC4KIC5JdCBJYyBwCi1wdXQsIGluc2VydCByZWdp
c3RlciBjb250ZW50CitwdXQgcmVnaXN0ZXIgY29udGVudCBhZnRlciBjdXJzb3IKIC4KLS5JdCBJ
YyA8Ci1zaGlmdC1sZWZ0LCBkZWNyZWFzZSBpbmRlbnQKKy5JdCBJYyBQCitwdXQgcmVnaXN0ZXIg
Y29udGVudCBiZWZvcmUgY3Vyc29yCiAuCi0uSXQgSWMgPgotc2hpZnQtcmlnaHQsIGluY3JlYXNl
IGluZGVudAotLgotLkl0IEljIH4KLXN3YXAgY2FzZQotLgotLkl0IEljIHkKLXlhbmssIGNvcHkg
cmFuZ2UgdG8gcmVnaXN0ZXIKIC5FbAogLgogLlNzIE1vdGlvbnMKQEAgLTEwMjYsMTIgKzEwMzUs
NiBAQAogLkl0IEljIGdOCiBtYXRjaGVzIHRoZSBsYXN0IHVzZWQgc2VhcmNoIHRlcm0gaW4gYmFj
a3dhcmQgZGlyZWN0aW9uCiAuCi0uSXQgSWMgYWUKLWVudGlyZSBmaWxlIGNvbnRlbnQKLS4KLS5J
dCBJYyBpZQotZW50aXJlIGZpbGUgY29udGVudCBleGNlcHQgZm9yIGxlYWRpbmcgYW5kIHRyYWls
aW5nIGVtcHR5IGxpbmVzCi0uCiAuSXQgSWMgYWwKIGN1cnJlbnQgbGluZQogLgpAQCAtMTEwMyw2
ICsxMTA2LDkgQEAKIC5JdCBBcSBJYyBTLVRhYgogcmlnaHQgYWxpZ24gc2VsZWN0aW9ucyBieSBp
bnNlcnRpbmcgc3BhY2VzCiAuCisuSXQgQXEgSWMgQy1hCitjcmVhdGUgbmV3IHNlbGVjdGlvbnMg
ZXZlcnl3aGVyZSBtYXRjaGluZyBjdXJyZW50IHdvcmQgb3Igc2VsZWN0aW9uCisuCiAuSXQgQXEg
SWMgQy1uCiBjcmVhdGUgbmV3IHNlbGVjdGlvbiBhbmQgc2VsZWN0IG5leHQgd29yZCBtYXRjaGlu
ZyBjdXJyZW50IHNlbGVjdGlvbgogLgpAQCAtMTE2MCwyMCArMTE2Niw4IEBACiBzZXQgaW50ZXJz
ZWN0aW9uCiAuSXQgSWMgXGUKIHNldCBtaW51cwotLkl0IEljIFwmIQorLkl0IEljIH4KIHNldCBj
b21wbGVtZW50Ci0uSXQgSWMgelwmfAotcGFpcndpc2UgdW5pb24KLS5JdCBJYyB6JgotcGFpcndp
c2UgaW50ZXJzZWN0aW9uCi0uSXQgSWMgeisKLXBhaXJ3aXNlIGNvbWJpbmUsIGNob29zZSBsb25n
ZXIKLS5JdCBJYyB6LQotcGFpcndpc2UgY29tYmluZSwgY2hvb3NlIHNob3J0ZXIKLS5JdCBJYyB6
PAotcGFpcndpc2UgY29tYmluZSwgY2hvb3NlIGxlZnRtb3N0Ci0uSXQgSWMgej4KLXBhaXJ3aXNl
IGNvbWJpbmUsIGNob29zZSByaWdodG1vc3QKIC5FbAogLgogLlNoIFZJKE0pIENPTU1BTkRTCkBA
IC0xNDI3LDYgKzE0MjEsOCBAQAogV0FSTklORzogbW9kaWZ5aW5nIGEgbWVtb3J5IG1hcHBlZCBm
aWxlIGluLXBsYWNlIHdpbGwgY2F1c2UgZGF0YSBsb3NzLgogLkl0IEljIGxheW91dCBPcCBEbyB2
IERjIG9yIERvIGggRGMKIFdoZXRoZXIgdG8gdXNlIHZlcnRpY2FsIG9yIGhvcml6b250YWwgbGF5
b3V0LgorLkl0IENtIGlnbm9yZWNhc2UgLCBDbSBpYyBPcCBDbSBvZmYKK1doZXRoZXIgdG8gaWdu
b3JlIGNhc2Ugd2hlbiBzZWFyY2hpbmcuCiAuRWwKIC4KIC5TaCBDT01NQU5EIGFuZCBTRUFSQ0gg
UFJPTVBUCmRpZmYgLXVyIHZpcy0wLjYvbWFwLmMgdmlzLTAuOC9tYXAuYwotLS0gdmlzLTAuNi9t
YXAuYwkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L21hcC5jCTIwMjItMTEtMDEgMTY6
NTA6MTAKQEAgLTc4LDE5ICs3OCw2IEBACiAJcmV0dXJuICFtYXBfZW1wdHkobWFwX3ByZWZpeCht
YXAsIHByZWZpeCkpOwogfQogCi1zdGF0aWMgYm9vbCBsZWFmKGNvbnN0IGNoYXIgKmtleSwgdm9p
ZCAqdmFsdWUsIHZvaWQgKmRhdGEpCi17Ci0JaW50ICpub2RlcyA9IGRhdGE7Ci0JcmV0dXJuICgq
bm9kZXMpKysgPCAxOwotfQotCi1ib29sIG1hcF9sZWFmKGNvbnN0IE1hcCAqbWFwLCBjb25zdCBj
aGFyICpwcmVmaXgpCi17Ci0JaW50IG5vZGVzID0gMDsKLQltYXBfaXRlcmF0ZShtYXBfcHJlZml4
KG1hcCwgcHJlZml4KSwgbGVhZiwgJm5vZGVzKTsKLQlyZXR1cm4gbm9kZXMgPT0gMTsKLX0KLQog
Ym9vbCBtYXBfcHV0KE1hcCAqbWFwLCBjb25zdCBjaGFyICprLCBjb25zdCB2b2lkICp2YWx1ZSkK
IHsKIAlzaXplX3QgbGVuID0gc3RybGVuKGspOwpkaWZmIC11ciB2aXMtMC42L21hcC5oIHZpcy0w
LjgvbWFwLmgKLS0tIHZpcy0wLjYvbWFwLmgJMjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAu
OC9tYXAuaAkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC0zNSwxMSArMzUsNiBAQAogICovCiBib29s
IG1hcF9jb250YWlucyhjb25zdCBNYXAqLCBjb25zdCBjaGFyICpwcmVmaXgpOwogLyoqCi0gKiBD
aGVjayB3aGV0aGVyIHRoZSBnaXZlbiBwcmVmaXggY2FuIGJlIGV4dGVuZGVkIHRvIGV4YWN0bHkg
b25lIG1hcCBlbGVtZW50LgotICogVHJ1ZSBpZmYgdGhlIHByZWZpeCBtYXAgY29udGFpbnMgZXhh
Y3RseSBvbmUgZWxlbWVudC4KLSAqLwotYm9vbCBtYXBfbGVhZihjb25zdCBNYXAqLCBjb25zdCBj
aGFyICpwcmVmaXgpOwotLyoqCiAgKiBTdG9yZSBhIGtleSB2YWx1ZSBwYWlyIGluIHRoZSBtYXAu
CiAgKiBAcmV0dXJuIEZhbHNlIGlmIHdlIHJ1biBvdXQgb2YgbWVtb3J5IChgYGVycm5vID0gRU5P
TUVNYGApLCBvciBpZiB0aGUga2V5CiAgKiAgICAgICAgIGFscmVhZHkgYXBwZWFycyBpbiB0aGUg
bWFwIChgYGVycm5vID0gRUVYSVNUYGApLgpkaWZmIC11ciB2aXMtMC42L3NhbS5jIHZpcy0wLjgv
c2FtLmMKLS0tIHZpcy0wLjYvc2FtLmMJMjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC9z
YW0uYwkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC0yLDcgKzIsNyBAQAogICogSGVhdmlseSBpbnNw
aXJlZCAoYW5kIHBhcnRpYWxseSBiYXNlZCB1cG9uKSB0aGUgWDExIHZlcnNpb24gb2YKICAqIFJv
YiBQaWtlJ3Mgc2FtIHRleHQgZWRpdG9yIG9yaWdpbmFsbHkgd3JpdHRlbiBmb3IgUGxhbiA5Lgog
ICoKLSAqICBDb3B5cmlnaHQgwqkgMjAxNi0yMDE4IE1hcmMgQW5kcsOpIFRhbm5lciA8bWF0IGF0
IGJyYWluLWR1bXAub3JnPgorICogIENvcHlyaWdodCDCqSAyMDE2LTIwMjAgTWFyYyBBbmRyw6kg
VGFubmVyIDxtYXQgYXQgYnJhaW4tZHVtcC5vcmc+CiAgKiAgQ29weXJpZ2h0IMKpIDE5OTggYnkg
THVjZW50IFRlY2hub2xvZ2llcwogICoKICAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQpAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8bGlt
aXRzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlICJzYW0uaCIKICNpbmNsdWRlICJ2
aXMtY29yZS5oIgogI2luY2x1ZGUgImJ1ZmZlci5oIgpAQCAtMTQ0LDcgKzE0NSw3IEBACiAKIHN0
YXRpYyBjb25zdCBDb21tYW5kRGVmIGNtZHNbXSA9IHsKIAkvLyAgICAgIG5hbWUgICAgICAgICAg
ICBoZWxwCi0JLy8gICAgICBmbGFncywgZGVmYXVsdCBjb21tYW5kLCBpbXBsZW1lbmF0aW9uCisJ
Ly8gICAgICBmbGFncywgZGVmYXVsdCBjb21tYW5kLCBpbXBsZW1lbnRhdGlvbgogCXsKIAkJImEi
LCAgICAgICAgICAgIFZJU19IRUxQKCJBcHBlbmQgdGV4dCBhZnRlciByYW5nZSIpCiAJCUNNRF9U
RVhULCBOVUxMLCBjbWRfYXBwZW5kCkBAIC0yNzcsNyArMjc4LDcgQEAKIAljb25zdCBjaGFyICpu
YW1lc1szXTsgICAgICAgICAgICAvKiBuYW1lIGFuZCBvcHRpb25hbCBhbGlhcyAqLwogCWVudW0g
VmlzT3B0aW9uIGZsYWdzOyAgICAgICAgICAgIC8qIG9wdGlvbiB0eXBlLCBldGMuICovCiAJVklT
X0hFTFBfREVDTChjb25zdCBjaGFyICpoZWxwOykgLyogc2hvcnQsIG9uZSBsaW5lIGhlbHAgdGV4
dCAqLwotCVZpc09wdGlvbkZ1bmN0aW9uICpmdW5jOyAgICAgICAgIC8qIG9wdGlvbiBoYW5kbGVy
LCBOVUxMIGZvciBidWxpdGlucyAqLworCVZpc09wdGlvbkZ1bmN0aW9uICpmdW5jOyAgICAgICAg
IC8qIG9wdGlvbiBoYW5kbGVyLCBOVUxMIGZvciBidWlsdGlucyAqLwogCXZvaWQgKmNvbnRleHQ7
ICAgICAgICAgICAgICAgICAgIC8qIGNvbnRleHQgcGFzc2VkIHRvIG9wdGlvbiBoYW5kbGVyIGZ1
bmN0aW9uICovCiB9IE9wdGlvbkRlZjsKIApAQCAtMjk5LDYgKzMwMCw3IEBACiAJT1BUSU9OX0xP
QURfTUVUSE9ELAogCU9QVElPTl9DSEFOR0VfMjU2Q09MT1JTLAogCU9QVElPTl9MQVlPVVQsCisJ
T1BUSU9OX0lHTk9SRUNBU0UsCiB9OwogCiBzdGF0aWMgY29uc3QgT3B0aW9uRGVmIG9wdGlvbnNb
XSA9IHsKQEAgLTM4Nyw2ICszODksMTEgQEAKIAkJVklTX09QVElPTl9UWVBFX1NUUklORywKIAkJ
VklTX0hFTFAoIlZlcnRpY2FsIG9yIGhvcml6b250YWwgd2luZG93IGxheW91dCIpCiAJfSwKKwlb
T1BUSU9OX0lHTk9SRUNBU0VdID0geworCQl7ICJpZ25vcmVjYXNlIiwgImljIiB9LAorCQlWSVNf
T1BUSU9OX1RZUEVfQk9PTCwKKwkJVklTX0hFTFAoIklnbm9yZSBjYXNlIHdoZW4gc2VhcmNoaW5n
IikKKwl9LAogfTsKIAogYm9vbCBzYW1faW5pdChWaXMgKnZpcykgewpAQCAtMTAwNSw3ICsxMDEy
LDcgQEAKIAlzaXplX3Qgc3RhcnQgPSByYW5nZS0+c3RhcnQsIGVuZCA9IHJhbmdlLT5lbmQsIGxp
bmU7CiAJaWYgKHNpZ24gPiAwKSB7CiAJCWNoYXIgYzsKLQkJaWYgKHN0YXJ0IDwgZW5kICYmIGVu
ZCA+IDAgJiYgdGV4dF9ieXRlX2dldCh0eHQsIGVuZC0xLCAmYykgJiYgYyA9PSAnXG4nKQorCQlp
ZiAoc3RhcnQgPCBlbmQgJiYgdGV4dF9ieXRlX2dldCh0eHQsIGVuZC0xLCAmYykgJiYgYyA9PSAn
XG4nKQogCQkJZW5kLS07CiAJCWxpbmUgPSB0ZXh0X2xpbmVub19ieV9wb3ModHh0LCBlbmQpOwog
CQlsaW5lID0gdGV4dF9wb3NfYnlfbGluZW5vKHR4dCwgbGluZSArIG9mZnNldCk7CkBAIC0xMzg2
LDE0ICsxMzkzLDEzIEBACiAJVGV4dCAqdHh0ID0gd2luLT5maWxlLT50ZXh0OwogCiAJaWYgKGNt
ZC0+cmVnZXgpIHsKLQkJYm9vbCB0cmFpbGluZ19tYXRjaCA9IGZhbHNlOwotCQlzaXplX3Qgc3Rh
cnQgPSByYW5nZS0+c3RhcnQsIGVuZCA9IHJhbmdlLT5lbmQsIGxhc3Rfc3RhcnQgPSBFUE9TOwor
CQlzaXplX3Qgc3RhcnQgPSByYW5nZS0+c3RhcnQsIGVuZCA9IHJhbmdlLT5lbmQ7CisJCXNpemVf
dCBsYXN0X3N0YXJ0ID0gYXJndlswXVswXSA9PSAneCcgPyBFUE9TIDogc3RhcnQ7CiAJCXNpemVf
dCBuc3ViID0gMSArIHRleHRfcmVnZXhfbnN1YihjbWQtPnJlZ2V4KTsKIAkJaWYgKG5zdWIgPiBN
QVhfUkVHRVhfU1VCKQogCQkJbnN1YiA9IE1BWF9SRUdFWF9TVUI7CiAJCVJlZ2V4TWF0Y2ggbWF0
Y2hbTUFYX1JFR0VYX1NVQl07Ci0JCXdoaWxlIChzdGFydCA8IGVuZCB8fCB0cmFpbGluZ19tYXRj
aCkgewotCQkJdHJhaWxpbmdfbWF0Y2ggPSBmYWxzZTsKKwkJd2hpbGUgKHN0YXJ0IDw9IGVuZCkg
ewogCQkJY2hhciBjOwogCQkJaW50IGZsYWdzID0gc3RhcnQgPiByYW5nZS0+c3RhcnQgJiYKIAkJ
CSAgICAgICAgICAgIHRleHRfYnl0ZV9nZXQodHh0LCBzdGFydCAtIDEsICZjKSAmJiBjICE9ICdc
bicgPwpAQCAtMTQwNiw3ICsxNDEyLDcgQEAKIAkJCQlpZiAoYXJndlswXVswXSA9PSAneCcpCiAJ
CQkJCXIgPSB0ZXh0X3JhbmdlX25ldyhtYXRjaFswXS5zdGFydCwgbWF0Y2hbMF0uZW5kKTsKIAkJ
CQllbHNlCi0JCQkJCXIgPSB0ZXh0X3JhbmdlX25ldyhzdGFydCwgbWF0Y2hbMF0uc3RhcnQpOwor
CQkJCQlyID0gdGV4dF9yYW5nZV9uZXcobGFzdF9zdGFydCwgbWF0Y2hbMF0uc3RhcnQpOwogCQkJ
CWlmIChtYXRjaFswXS5zdGFydCA9PSBtYXRjaFswXS5lbmQpIHsKIAkJCQkJaWYgKGxhc3Rfc3Rh
cnQgPT0gbWF0Y2hbMF0uc3RhcnQpIHsKIAkJCQkJCXN0YXJ0Kys7CkBAIC0xNDE3LDE2ICsxNDIz
LDE3IEBACiAJCQkJCSAqIG1hdGNoZXMgdGhlIHplcm8tbGVuZ3RoIHN0cmluZyBpbW1lZGlhdGVs
eSBhZnRlciBhCiAJCQkJCSAqIG5ld2xpbmUuIFRyeSBmaWx0ZXJpbmcgb3V0IHRoZSBsYXN0IHN1
Y2ggbWF0Y2ggYXQgRU9GLgogCQkJCQkgKi8KLQkJCQkJaWYgKGVuZCA9PSBtYXRjaFswXS5zdGFy
dCAmJiBzdGFydCA+IHJhbmdlLT5zdGFydCkKKwkJCQkJaWYgKGVuZCA9PSBtYXRjaFswXS5zdGFy
dCAmJiBzdGFydCA+IHJhbmdlLT5zdGFydCAmJgorCQkJCQkgICAgdGV4dF9ieXRlX2dldCh0eHQs
IGVuZC0xLCAmYykgJiYgYyA9PSAnXG4nKQogCQkJCQkJYnJlYWs7CisJCQkJCXN0YXJ0ID0gbWF0
Y2hbMF0uZW5kICsgMTsKKwkJCQl9IGVsc2UgeworCQkJCQlzdGFydCA9IG1hdGNoWzBdLmVuZDsK
IAkJCQl9Ci0JCQkJc3RhcnQgPSBtYXRjaFswXS5lbmQ7Ci0JCQkJaWYgKHN0YXJ0ID09IGVuZCkK
LQkJCQkJdHJhaWxpbmdfbWF0Y2ggPSB0cnVlOwogCQkJfSBlbHNlIHsKIAkJCQlpZiAoYXJndlsw
XVswXSA9PSAneScpCiAJCQkJCXIgPSB0ZXh0X3JhbmdlX25ldyhzdGFydCwgZW5kKTsKLQkJCQlz
dGFydCA9IGVuZDsKKwkJCQlzdGFydCA9IGVuZCArIDE7CiAJCQl9CiAKIAkJCWlmICh0ZXh0X3Jh
bmdlX3ZhbGlkKCZyKSkgewpAQCAtMTQzNSwxMiArMTQ0MiwxNCBAQAogCQkJCQkJUmVnaXN0ZXIg
KnJlZyA9ICZ2aXMtPnJlZ2lzdGVyc1tWSVNfUkVHX0FNUEVSU0FORCtpXTsKIAkJCQkJCXJlZ2lz
dGVyX3B1dF9yYW5nZSh2aXMsIHJlZywgdHh0LCAmbWF0Y2hbaV0pOwogCQkJCQl9CisJCQkJCWxh
c3Rfc3RhcnQgPSBtYXRjaFswXS5lbmQ7CisJCQkJfSBlbHNlIHsKKwkJCQkJbGFzdF9zdGFydCA9
IHN0YXJ0OwogCQkJCX0KIAkJCQlpZiAoc2ltdWxhdGUpCiAJCQkJCWNvdW50Kys7CiAJCQkJZWxz
ZQogCQkJCQlyZXQgJj0gc2FtX2V4ZWN1dGUodmlzLCB3aW4sIGNtZC0+Y21kLCBOVUxMLCAmcik7
Ci0JCQkJbGFzdF9zdGFydCA9IHN0YXJ0OwogCQkJfQogCQl9CiAJfSBlbHNlIHsKQEAgLTE2NzAs
NyArMTY3OSw3IEBACiAJCWlmICh3cml0ZV9lbnRpcmVfZmlsZSkKIAkJCSpyID0gdGV4dF9yYW5n
ZV9uZXcoMCwgdGV4dF9zaXplKHRleHQpKTsKIAotCQlUZXh0U2F2ZSAqY3R4ID0gdGV4dF9zYXZl
X2JlZ2luKHRleHQsIHBhdGgsIGZpbGUtPnNhdmVfbWV0aG9kKTsKKwkJVGV4dFNhdmUgKmN0eCA9
IHRleHRfc2F2ZV9iZWdpbih0ZXh0LCBBVF9GRENXRCwgcGF0aCwgZmlsZS0+c2F2ZV9tZXRob2Qp
OwogCQlpZiAoIWN0eCkgewogCQkJY29uc3QgY2hhciAqbXNnID0gZXJybm8gPyBzdHJlcnJvcihl
cnJubykgOiAidHJ5IGNoYW5naW5nIGA6c2V0IHNhdmVtZXRob2RgIjsKIAkJCXZpc19pbmZvX3No
b3codmlzLCAiQ2FuJ3Qgd3JpdGUgYCVzJzogJXMiLCBwYXRoLCBtc2cpOwpPbmx5IGluIHZpcy0w
Ljg6IHRleHQtY29tbW9uLmMKT25seSBpbiB2aXMtMC44OiB0ZXh0LWludGVybmFsLmgKT25seSBp
biB2aXMtMC44OiB0ZXh0LWlvLmMKT25seSBpbiB2aXMtMC44OiB0ZXh0LWl0ZXJhdG9yLmMKZGlm
ZiAtdXIgdmlzLTAuNi90ZXh0LW1vdGlvbnMuYyB2aXMtMC44L3RleHQtbW90aW9ucy5jCi0tLSB2
aXMtMC42L3RleHQtbW90aW9ucy5jCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvdGV4
dC1tb3Rpb25zLmMJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtMjg3LDYgKzI4Nyw4IEBACiBzaXpl
X3QgdGV4dF9saW5lX2Rvd24oVGV4dCAqdHh0LCBzaXplX3QgcG9zKSB7CiAJaW50IHdpZHRoID0g
dGV4dF9saW5lX3dpZHRoX2dldCh0eHQsIHBvcyk7CiAJc2l6ZV90IG5leHQgPSB0ZXh0X2xpbmVf
bmV4dCh0eHQsIHBvcyk7CisJaWYgKG5leHQgPT0gdGV4dF9zaXplKHR4dCkpCisJCXJldHVybiBw
b3M7CiAJcmV0dXJuIHRleHRfbGluZV93aWR0aF9zZXQodHh0LCBuZXh0LCB3aWR0aCk7CiB9CiAK
ZGlmZiAtdXIgdmlzLTAuNi90ZXh0LW1vdGlvbnMuaCB2aXMtMC44L3RleHQtbW90aW9ucy5oCi0t
LSB2aXMtMC42L3RleHQtbW90aW9ucy5oCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgv
dGV4dC1tb3Rpb25zLmgJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtMSw4ICsxLDggQEAKICNpZm5k
ZWYgVEVYVF9NT1RJT05TX0gKICNkZWZpbmUgVEVYVF9NT1RJT05TX0gKIAotLyogdGhlc2UgZnVu
Y3Rpb24gYWxsIHRha2UgYSBwb3NpdGlvbiBpbiBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUg
ZmlsZSwKLSAqIHBlcmZvcm0gYSBjZXJ0YWluIG1vdmVtZW50IGFuZCByZXR1cm4gdGhlIG5ldyBw
b3N0aW9uLiBpZiB0aGUgbW92ZW1lbnQKKy8qIHRoZXNlIGZ1bmN0aW9ucyBhbGwgdGFrZSBhIHBv
c2l0aW9uIGluIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLAorICogcGVyZm9ybSBh
IGNlcnRhaW4gbW92ZW1lbnQgYW5kIHJldHVybiB0aGUgbmV3IHBvc3Rpb24uIElmIHRoZSBtb3Zl
bWVudAogICogaXMgbm90IHBvc3NpYmxlIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBpcyByZXR1cm5l
ZCB1bmNoYW5nZWQuICovCiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KQEAgLTIwLDcgKzIwLDcgQEAK
IHNpemVfdCB0ZXh0X2NvZGVwb2ludF9wcmV2KFRleHQqLCBzaXplX3QgcG9zKTsKIAogLyogZmlu
ZCB0aGUgZ2l2ZW4gc3Vic3RyaW5nIGVpdGhlciBpbiBmb3J3YXJkIG9yIGJhY2t3YXJkIGRpcmVj
dGlvbi4KLSAqIGRvZXMgbm90IHdyYXAgYXJvdW5kIGF0IGZpbGUgc3RhcnQgLyBlbmQuIGlmIG5v
IG1hdGNoIGlzIGZvdW5kIHJldHVybgorICogZG9lcyBub3Qgd3JhcCBhcm91bmQgYXQgZmlsZSBz
dGFydCAvIGVuZC4gSWYgbm8gbWF0Y2ggaXMgZm91bmQgcmV0dXJuCiAgKiBvcmlnaW5hbCBwb3Np
dGlvbiAqLwogc2l6ZV90IHRleHRfZmluZF9uZXh0KFRleHQqLCBzaXplX3QgcG9zLCBjb25zdCBj
aGFyICpzKTsKIHNpemVfdCB0ZXh0X2ZpbmRfcHJldihUZXh0Kiwgc2l6ZV90IHBvcywgY29uc3Qg
Y2hhciAqcyk7CkBAIC02OSw3ICs2OSw3IEBACiAvKgogICogQSBsb25nd29yZCBjb25zaXN0cyBv
ZiBhIHNlcXVlbmNlIG9mIG5vbi1ibGFuayBjaGFyYWN0ZXJzLCBzZXBhcmF0ZWQgd2l0aAogICog
d2hpdGUgc3BhY2UuIFRPRE8/OiBBbiBlbXB0eSBsaW5lIGlzIGFsc28gY29uc2lkZXJlZCB0byBi
ZSBhIHdvcmQuCi0gKiBUaGlzIGlzIGVxdWl2YWxhbnQgdG8gYSBXT1JEIGluIHZpbSB0ZXJtaW5v
bG9neS4KKyAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhIFdPUkQgaW4gdmltIHRlcm1pbm9sb2d5
LgogICovCiBzaXplX3QgdGV4dF9sb25nd29yZF9lbmRfbmV4dChUZXh0Kiwgc2l6ZV90IHBvcyk7
CiBzaXplX3QgdGV4dF9sb25nd29yZF9lbmRfcHJldihUZXh0Kiwgc2l6ZV90IHBvcyk7CkBAIC03
OSw3ICs3OSw3IEBACiAgKiBBIHdvcmQgY29uc2lzdHMgb2YgYSBzZXF1ZW5jZSBvZiBsZXR0ZXJz
LCBkaWdpdHMgYW5kIHVuZGVyc2NvcmVzLCBvciBhCiAgKiBzZXF1ZW5jZSBvZiBvdGhlciBub24t
YmxhbmsgY2hhcmFjdGVycywgc2VwYXJhdGVkIHdpdGggd2hpdGUgc3BhY2UuCiAgKiBUT0RPPzog
QW4gZW1wdHkgbGluZSBpcyBhbHNvIGNvbnNpZGVyZWQgdG8gYmUgYSB3b3JkLgotICogVGhpcyBp
cyBlcXVpdmFsYW50IHRvIGEgd29yZCAobG93ZXJjYXNlKSBpbiB2aW0gdGVybWlub2xvZ3kuCisg
KiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSB3b3JkIChsb3dlcmNhc2UpIGluIHZpbSB0ZXJtaW5v
bG9neS4KICAqLwogc2l6ZV90IHRleHRfd29yZF9lbmRfbmV4dChUZXh0Kiwgc2l6ZV90IHBvcyk7
CiBzaXplX3QgdGV4dF93b3JkX2VuZF9wcmV2KFRleHQqLCBzaXplX3QgcG9zKTsKQEAgLTExNiwx
MyArMTE2LDEzIEBACiBzaXplX3QgdGV4dF9ibG9ja19lbmQoVGV4dCosIHNpemVfdCBwb3MpOwog
c2l6ZV90IHRleHRfcGFyZW50aGVzaXNfc3RhcnQoVGV4dCosIHNpemVfdCBwb3MpOwogc2l6ZV90
IHRleHRfcGFyZW50aGVzaXNfZW5kKFRleHQqLCBzaXplX3QgcG9zKTsKLS8qIHNlYXJjaCBjb3Jl
c3BvbmRpbmcgJygnLCAnKScsICd7JywgJ30nLCAnWycsICddJywgJz4nLCAnPCcsICciJywgJycn
ICovCisvKiBzZWFyY2ggY29ycmVzcG9uZGluZyAnKCcsICcpJywgJ3snLCAnfScsICdbJywgJ10n
LCAnPicsICc8JywgJyInLCAnJycgKi8KIHNpemVfdCB0ZXh0X2JyYWNrZXRfbWF0Y2goVGV4dCos
IHNpemVfdCBwb3MsIGNvbnN0IEZpbGVyYW5nZSAqbGltaXRzKTsKIC8qIHNhbWUgYXMgYWJvdmUg
YnV0IGV4cGxpY2l0bHkgc3BlY2lmeSBzeW1ib2xzIHRvIG1hdGNoICovCiBzaXplX3QgdGV4dF9i
cmFja2V0X21hdGNoX3N5bWJvbChUZXh0Kiwgc2l6ZV90IHBvcywgY29uc3QgY2hhciAqc3ltYm9s
cywgY29uc3QgRmlsZXJhbmdlICpsaW1pdHMpOwogCiAvKiBzZWFyY2ggdGhlIGdpdmVuIHJlZ2V4
IHBhdHRlcm4gaW4gZWl0aGVyIGZvcndhcmQgb3IgYmFja3dhcmQgZGlyZWN0aW9uLAotICogc3Rh
cnRpbmcgZnJvbSBwb3MuIGRvZXMgd3JhcCBhcm91bmQgaWYgbm8gbWF0Y2ggd2FzIGZvdW5kLiAq
LworICogc3RhcnRpbmcgZnJvbSBwb3MuIERvZXMgd3JhcCBhcm91bmQgaWYgbm8gbWF0Y2ggd2Fz
IGZvdW5kLiAqLwogc2l6ZV90IHRleHRfc2VhcmNoX2ZvcndhcmQoVGV4dCAqdHh0LCBzaXplX3Qg
cG9zLCBSZWdleCAqcmVnZXgpOwogc2l6ZV90IHRleHRfc2VhcmNoX2JhY2t3YXJkKFRleHQgKnR4
dCwgc2l6ZV90IHBvcywgUmVnZXggKnJlZ2V4KTsKIApkaWZmIC11ciB2aXMtMC42L3RleHQtb2Jq
ZWN0cy5jIHZpcy0wLjgvdGV4dC1vYmplY3RzLmMKLS0tIHZpcy0wLjYvdGV4dC1vYmplY3RzLmMJ
MjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC90ZXh0LW9iamVjdHMuYwkyMDIyLTExLTAx
IDE2OjUwOjEwCkBAIC0xNSwxOSArMTUsNiBAQAogCXJldHVybiB0ZXh0X3JhbmdlX25ldygwLCB0
ZXh0X3NpemUodHh0KSk7CiB9CiAKLUZpbGVyYW5nZSB0ZXh0X29iamVjdF9lbnRpcmVfaW5uZXIo
VGV4dCAqdHh0LCBzaXplX3QgcG9zKSB7Ci0JY2hhciBjOwotCUZpbGVyYW5nZSByID0gdGV4dF9v
YmplY3RfZW50aXJlKHR4dCwgcG9zKTsKLQlJdGVyYXRvciBpdCA9IHRleHRfaXRlcmF0b3JfZ2V0
KHR4dCwgci5zdGFydCk7Ci0JaWYgKHRleHRfaXRlcmF0b3JfYnl0ZV9nZXQoJml0LCAmYykgJiYg
YyA9PSAnXG4nKQotCQl3aGlsZSAodGV4dF9pdGVyYXRvcl9ieXRlX25leHQoJml0LCAmYykgJiYg
YyA9PSAnXG4nKTsKLQlyLnN0YXJ0ID0gaXQucG9zOwotCWl0ID0gdGV4dF9pdGVyYXRvcl9nZXQo
dHh0LCByLmVuZCk7Ci0Jd2hpbGUgKHRleHRfaXRlcmF0b3JfY2hhcl9wcmV2KCZpdCwgJmMpICYm
IGMgPT0gJ1xuJyk7Ci0Jci5lbmQgPSBpdC5wb3M7Ci0JcmV0dXJuIHRleHRfcmFuZ2VfbGluZXdp
c2UodHh0LCAmcik7Ci19Ci0KIHN0YXRpYyBGaWxlcmFuZ2UgdGV4dF9vYmplY3RfY3VzdG9td29y
ZChUZXh0ICp0eHQsIHNpemVfdCBwb3MsIGludCAoKmlzYm91bmRhcnkpKGludCkpIHsKIAlGaWxl
cmFuZ2UgcjsKIAljaGFyIGMsIHByZXYgPSAnMCcsIG5leHQgPSAnMCc7CkBAIC00MCwyNyArMjcs
MjYgQEAKIAlpZiAoc3BhY2UoYykpIHsKIAkJci5zdGFydCA9IHRleHRfY2hhcl9uZXh0KHR4dCwg
dGV4dF9jdXN0b213b3JkX2VuZF9wcmV2KHR4dCwgcG9zLCBpc2JvdW5kYXJ5KSk7CiAJCXIuZW5k
ID0gdGV4dF9jdXN0b213b3JkX3N0YXJ0X25leHQodHh0LCBwb3MsIGlzYm91bmRhcnkpOwotCX0g
ZWxzZSBpZiAoYm91bmRhcnkocHJldikgJiYgYm91bmRhcnkobmV4dCkpIHsKLQkJaWYgKGJvdW5k
YXJ5KGMpKSB7Ci0JCQlyLnN0YXJ0ID0gdGV4dF9jaGFyX25leHQodHh0LCB0ZXh0X2N1c3RvbXdv
cmRfZW5kX3ByZXYodHh0LCBwb3MsIGlzYm91bmRhcnkpKTsKLQkJCXIuZW5kID0gdGV4dF9jaGFy
X25leHQodHh0LCB0ZXh0X2N1c3RvbXdvcmRfZW5kX25leHQodHh0LCBwb3MsIGlzYm91bmRhcnkp
KTsKLQkJfSBlbHNlIHsKLQkJCS8qIG9uIGEgc2luZ2xlIGNoYXJhY3RlciAqLworCX0gZWxzZSBp
ZiAoYm91bmRhcnkoYykpIHsKKwkJaWYgKGJvdW5kYXJ5KHByZXYpICYmICFzcGFjZShwcmV2KSkK
KwkJCXIuc3RhcnQgPSB0ZXh0X2N1c3RvbXdvcmRfc3RhcnRfcHJldih0eHQsIHBvcywgaXNib3Vu
ZGFyeSk7CisJCWVsc2UKIAkJCXIuc3RhcnQgPSBwb3M7CisKKwkJaWYgKGJvdW5kYXJ5KG5leHQp
ICYmICFzcGFjZShuZXh0KSkKKwkJCXIuZW5kID0gdGV4dF9jaGFyX25leHQodHh0LCB0ZXh0X2N1
c3RvbXdvcmRfZW5kX25leHQodHh0LCBwb3MsIGlzYm91bmRhcnkpKTsKKwkJZWxzZQogCQkJci5l
bmQgPSB0ZXh0X2NoYXJfbmV4dCh0eHQsIHBvcyk7Ci0JCX0KLQl9IGVsc2UgaWYgKGJvdW5kYXJ5
KHByZXYpKSB7Ci0JCS8qIGF0IHN0YXJ0IG9mIGEgd29yZCAqLwotCQlyLnN0YXJ0ID0gcG9zOwot
CQlyLmVuZCA9IHRleHRfY2hhcl9uZXh0KHR4dCwgdGV4dF9jdXN0b213b3JkX2VuZF9uZXh0KHR4
dCwgcG9zLCBpc2JvdW5kYXJ5KSk7Ci0JfSBlbHNlIGlmIChib3VuZGFyeShuZXh0KSkgewotCQkv
KiBhdCBlbmQgb2YgYSB3b3JkICovCi0JCXIuc3RhcnQgPSB0ZXh0X2N1c3RvbXdvcmRfc3RhcnRf
cHJldih0eHQsIHBvcywgaXNib3VuZGFyeSk7Ci0JCXIuZW5kID0gdGV4dF9jaGFyX25leHQodHh0
LCBwb3MpOwogCX0gZWxzZSB7Ci0JCS8qIGluIHRoZSBtaWRkbGUgb2YgYSB3b3JkICovCi0JCXIu
c3RhcnQgPSB0ZXh0X2N1c3RvbXdvcmRfc3RhcnRfcHJldih0eHQsIHBvcywgaXNib3VuZGFyeSk7
Ci0JCXIuZW5kID0gdGV4dF9jaGFyX25leHQodHh0LCB0ZXh0X2N1c3RvbXdvcmRfZW5kX25leHQo
dHh0LCBwb3MsIGlzYm91bmRhcnkpKTsKKwkJaWYgKGJvdW5kYXJ5KHByZXYpKQorCQkJci5zdGFy
dCA9IHBvczsKKwkJZWxzZQorCQkJci5zdGFydCA9IHRleHRfY3VzdG9td29yZF9zdGFydF9wcmV2
KHR4dCwgcG9zLCBpc2JvdW5kYXJ5KTsKKworCQlpZiAoYm91bmRhcnkobmV4dCkpCisJCQlyLmVu
ZCA9IHRleHRfY2hhcl9uZXh0KHR4dCwgcG9zKTsKKwkJZWxzZQorCQkJci5lbmQgPSB0ZXh0X2No
YXJfbmV4dCh0eHQsIHRleHRfY3VzdG9td29yZF9lbmRfbmV4dCh0eHQsIHBvcywgaXNib3VuZGFy
eSkpOwogCX0KIAogCXJldHVybiByOwpAQCAtMTQ5LDYgKzEzNSwyMCBAQAogCQkJcmV0dXJuIHRl
eHRfcmFuZ2VfZW1wdHkoKTsKIAkJfQogCX0KK30KKworRmlsZXJhbmdlIHRleHRfb2JqZWN0X2Zp
bmRfbmV4dChUZXh0ICp0eHQsIHNpemVfdCBwb3MsIGNvbnN0IGNoYXIgKnNlYXJjaCkgeworCXNp
emVfdCBzdGFydCA9IHRleHRfZmluZF9uZXh0KHR4dCwgcG9zLCBzZWFyY2gpOworCWlmIChzdGFy
dCA9PSBwb3MpCisJCXJldHVybiB0ZXh0X3JhbmdlX2VtcHR5KCk7CisJcmV0dXJuIHRleHRfcmFu
Z2VfbmV3KHN0YXJ0LCBzdGFydCtzdHJsZW4oc2VhcmNoKSk7Cit9CisKK0ZpbGVyYW5nZSB0ZXh0
X29iamVjdF9maW5kX3ByZXYoVGV4dCAqdHh0LCBzaXplX3QgcG9zLCBjb25zdCBjaGFyICpzZWFy
Y2gpIHsKKwlzaXplX3Qgc3RhcnQgPSB0ZXh0X2ZpbmRfcHJldih0eHQsIHBvcywgc2VhcmNoKTsK
KwlpZiAoc3RhcnQgPT0gcG9zKQorCQlyZXR1cm4gdGV4dF9yYW5nZV9lbXB0eSgpOworCXJldHVy
biB0ZXh0X3JhbmdlX25ldyhzdGFydCwgc3RhcnQrc3RybGVuKHNlYXJjaCkpOwogfQogCiBGaWxl
cmFuZ2UgdGV4dF9vYmplY3RfbGluZShUZXh0ICp0eHQsIHNpemVfdCBwb3MpIHsKZGlmZiAtdXIg
dmlzLTAuNi90ZXh0LW9iamVjdHMuaCB2aXMtMC44L3RleHQtb2JqZWN0cy5oCi0tLSB2aXMtMC42
L3RleHQtb2JqZWN0cy5oCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvdGV4dC1vYmpl
Y3RzLmgJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtMSw4ICsxLDggQEAKICNpZm5kZWYgVEVYVF9P
QkpFQ1RTX0gKICNkZWZpbmUgVEVYVF9PQkpFQ1RTX0gKIAotLyogdGhlc2UgZnVuY3Rpb25zIGFs
bCB0YWtlIGEgZmlsZSBwb3NpdGlvbi4gaWYgdGhpcyBwb3NpdGlvbiBpcyBwYXJ0IG9mIHRoZQot
ICogcmVzcGVjdGl2ZSB0ZXh0LW9iamVjdCwgYSBjb3JyZXNwb25kaW5nIHJhbmdlIGlzIHJldHVy
bmVkLiBpZiB0aGVyZSBpcyBubworLyogdGhlc2UgZnVuY3Rpb25zIGFsbCB0YWtlIGEgZmlsZSBw
b3NpdGlvbi4gSWYgdGhpcyBwb3NpdGlvbiBpcyBwYXJ0IG9mIHRoZQorICogcmVzcGVjdGl2ZSB0
ZXh0LW9iamVjdCwgYSBjb3JyZXNwb25kaW5nIHJhbmdlIGlzIHJldHVybmVkLiBJZiB0aGVyZSBp
cyBubwogICogc3VjaCB0ZXh0LW9iamVjdCBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24sIGFuIGVtcHR5
IHJhbmdlIGlzIHJldHVybmVkLgogICovCiAKQEAgLTExLDE2ICsxMSwxNyBAQAogCiAvKiByZXR1
cm4gcmFuZ2UgY292ZXJpbmcgdGhlIGVudGlyZSB0ZXh0ICovCiBGaWxlcmFuZ2UgdGV4dF9vYmpl
Y3RfZW50aXJlKFRleHQqLCBzaXplX3QgcG9zKTsKLS8qIGVudGlyZSBkb2N1bWVudCBleGNlcHQg
bGVhZGluZyBhbmQgdHJhaWxpbmcgZW1wdHkgbGluZXMgKi8KLUZpbGVyYW5nZSB0ZXh0X29iamVj
dF9lbnRpcmVfaW5uZXIoVGV4dCosIHNpemVfdCBwb3MpOwogLyogd29yZCB3aGljaCBoYXBwZW5z
IHRvIGJlIGF0IHBvcyB3aXRob3V0IGFueSBuZWlnaGJvdXJpbmcgd2hpdGUgc3BhY2VzICovCiBG
aWxlcmFuZ2UgdGV4dF9vYmplY3Rfd29yZChUZXh0Kiwgc2l6ZV90IHBvcyk7Ci0vKiBpbmNsdWRl
cyB0cmFpbGluZyB3aGl0ZSBzcGFjZXMuIGlmIGF0IHBvcyBoYXBwZW5zIHRvIGJlIGEgd2hpdGUg
c3BhY2UKKy8qIGluY2x1ZGVzIHRyYWlsaW5nIHdoaXRlIHNwYWNlcy4gSWYgYXQgcG9zIGhhcHBl
bnMgdG8gYmUgYSB3aGl0ZSBzcGFjZQogICogaW5jbHVkZSBhbGwgbmVpZ2hib3VyaW5nIGxlYWRp
bmcgd2hpdGUgc3BhY2VzIGFuZCB0aGUgZm9sbG93aW5nIHdvcmQuICovCiBGaWxlcmFuZ2UgdGV4
dF9vYmplY3Rfd29yZF9vdXRlcihUZXh0Kiwgc2l6ZV90IHBvcyk7Ci0vKiBmaW5kIG5leHQgb2Nj
dXJhbmNlIG9mIGB3b3JkJyAoYXMgd29yZCBub3Qgc3Vic3RyaW5nKSBpbiBmb3J3YXJkL2JhY2t3
YXJkIGRpcmVjdGlvbiAqLworLyogZmluZCBuZXh0IG9jY3VyZW5jZSBvZiBgd29yZCcgKGFzIHdv
cmQgbm90IHN1YnN0cmluZykgaW4gZm9yd2FyZC9iYWNrd2FyZCBkaXJlY3Rpb24gKi8KIEZpbGVy
YW5nZSB0ZXh0X29iamVjdF93b3JkX2ZpbmRfbmV4dChUZXh0Kiwgc2l6ZV90IHBvcywgY29uc3Qg
Y2hhciAqd29yZCk7CiBGaWxlcmFuZ2UgdGV4dF9vYmplY3Rfd29yZF9maW5kX3ByZXYoVGV4dCos
IHNpemVfdCBwb3MsIGNvbnN0IGNoYXIgKndvcmQpOworLyogZmluZCBuZXh0IG9jY3VyZW5jZSBv
ZiBhIGxpdGVyYWwgc3RyaW5nIChub3QgcmVnZXgpIGluIGZvcndhcmQvYmFja3dhcmQgZGlyZWN0
aW9uICovCitGaWxlcmFuZ2UgdGV4dF9vYmplY3RfZmluZF9uZXh0KFRleHQgKnR4dCwgc2l6ZV90
IHBvcywgY29uc3QgY2hhciAqc2VhcmNoKTsKK0ZpbGVyYW5nZSB0ZXh0X29iamVjdF9maW5kX3By
ZXYoVGV4dCAqdHh0LCBzaXplX3QgcG9zLCBjb25zdCBjaGFyICpzZWFyY2gpOwogLyogc2FtZSBz
ZW1hbnRpY3MgYXMgYWJvdmUgYnV0IGZvciBhIGxvbmd3b3JkIChpLmUuIGRlbGltaXRlZCBieSB3
aGl0ZSBzcGFjZXMpICovCiBGaWxlcmFuZ2UgdGV4dF9vYmplY3RfbG9uZ3dvcmQoVGV4dCosIHNp
emVfdCBwb3MpOwogRmlsZXJhbmdlIHRleHRfb2JqZWN0X2xvbmd3b3JkX291dGVyKFRleHQqLCBz
aXplX3QgcG9zKTsKQEAgLTQzLDcgKzQ0LDcgQEAKIC8qIG1hdGNoIGEgc2VhcmNoIHRlcm0gaW4g
ZWl0aGVyIGZvcndhcmQgb3IgYmFja3dhcmQgZGlyZWN0aW9uICovCiBGaWxlcmFuZ2UgdGV4dF9v
YmplY3Rfc2VhcmNoX2ZvcndhcmQoVGV4dCosIHNpemVfdCBwb3MsIFJlZ2V4Kik7CiBGaWxlcmFu
Z2UgdGV4dF9vYmplY3Rfc2VhcmNoX2JhY2t3YXJkKFRleHQqLCBzaXplX3QgcG9zLCBSZWdleCop
OwotLyogbWF0Y2ggYWxsIGxpbmVzIHdpdGggc2FtZSBpbmRlbmRhdGlvbiBsZXZlbCB0aGFuIHRo
ZSBjdXJyZW50IG9uZSAqLworLyogbWF0Y2ggYWxsIGxpbmVzIHdpdGggc2FtZSBpbmRlbnRhdGlv
biBsZXZlbCBhcyB0aGUgY3VycmVudCBvbmUgKi8KIEZpbGVyYW5nZSB0ZXh0X29iamVjdF9pbmRl
bnRhdGlvbihUZXh0Kiwgc2l6ZV90IHBvcyk7CiAKIC8qIGV4dGVuZCBhIHJhbmdlIHRvIGNvdmVy
IHdob2xlIGxpbmVzICovCmRpZmYgLXVyIHZpcy0wLjYvdGV4dC5jIHZpcy0wLjgvdGV4dC5jCi0t
LSB2aXMtMC42L3RleHQuYwkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L3RleHQuYwky
MDIyLTExLTAxIDE2OjUwOjEwCkBAIC0xLDYgKzEsMyBAQAotI2lmbmRlZiBfR05VX1NPVVJDRQot
I2RlZmluZSBfR05VX1NPVVJDRSAvKiBtZW1yY2hyKDMpIGlzIG5vbi1zdGFuZGFyZCAqLwotI2Vu
ZGlmCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxz
dGRsaWIuaD4KQEAgLTE1LDQ4ICsxMiwxOSBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpZiBDT05GSUdfQUNM
Ci0jaW5jbHVkZSA8c3lzL2FjbC5oPgotI2VuZGlmCi0jaWYgQ09ORklHX1NFTElOVVgKLSNpbmNs
dWRlIDxzZWxpbnV4L3NlbGludXguaD4KLSNlbmRpZgogCiAjaW5jbHVkZSAidGV4dC5oIgogI2lu
Y2x1ZGUgInRleHQtdXRpbC5oIgogI2luY2x1ZGUgInRleHQtbW90aW9ucy5oIgogI2luY2x1ZGUg
InV0aWwuaCIKKyNpbmNsdWRlICJhcnJheS5oIgorI2luY2x1ZGUgInRleHQtaW50ZXJuYWwuaCIK
IAotLyogQWxsb2NhdGUgYmxvY2tzIGhvbGRpbmcgdGhlIGFjdHVhbCBmaWxlIGNvbnRlbnQgaW4g
anVua3Mgb2Ygc2l6ZTogKi8KLSNpZm5kZWYgQkxPQ0tfU0laRQotI2RlZmluZSBCTE9DS19TSVpF
ICgxIDw8IDIwKQotI2VuZGlmCi0vKiBGaWxlcyBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZSBhcmUg
Y29waWVkIG9uIGxvYWQsIGxhcmdlciBvbmVzIGFyZSBtbWFwKDIpLWVkCi0gKiBkaXJlY3RlbHku
IEhlbmNlIHRoZSBmb3JtZXIgY2FuIGJlIHRydW5jYXRlZCwgd2hpbGUgZG9pbmcgc28gb24gdGhl
IGxhdHRlcgotICogcmVzdWx0cyBpbiBoYXZvYy4gKi8KLSNkZWZpbmUgQkxPQ0tfTU1BUF9TSVpF
ICgxIDw8IDI2KQotCi0vKiBCbG9jayBob2xkaW5nIHRoZSBmaWxlIGNvbnRlbnQsIGVpdGhlciBy
ZWFkb25seSBtbWFwKDIpLWVkIGZyb20gdGhlIG9yaWdpbmFsCi0gKiBmaWxlIG9yIGhlYXAgYWxs
b2NhdGVkIHRvIHN0b3JlIHRoZSBtb2RpZmljYXRpb25zLgotICovCi10eXBlZGVmIHN0cnVjdCBC
bG9jayBCbG9jazsKLXN0cnVjdCBCbG9jayB7Ci0Jc2l6ZV90IHNpemU7ICAgICAgICAgICAgICAg
LyogbWF4aW1hbCBjYXBhY2l0eSAqLwotCXNpemVfdCBsZW47ICAgICAgICAgICAgICAgIC8qIGN1
cnJlbnQgdXNlZCBsZW5ndGggLyBpbnNlcnRpb24gcG9zaXRpb24gKi8KLQljaGFyICpkYXRhOyAg
ICAgICAgICAgICAgICAvKiBhY3R1YWwgZGF0YSAqLwotCWVudW0geyAgICAgICAgICAgICAgICAg
ICAgIC8qIHR5cGUgb2YgYWxsb2NhdGlvbiAqLwotCQlNTUFQX09SSUcsICAgICAgICAgLyogbW1h
cCgyKS1lZCBmcm9tIGFuIGV4dGVybmFsIGZpbGUgKi8KLQkJTU1BUCwgICAgICAgICAgICAgIC8q
IG1tYXAoMiktZWQgZnJvbSBhIHRlbXBvcmFyeSBmaWxlIG9ubHkga25vd24gdG8gdGhpcyBwcm9j
ZXNzICovCi0JCU1BTExPQywgICAgICAgICAgICAvKiBoZWFwIGFsbG9jYXRlZCBibG9jayB1c2lu
ZyBtYWxsb2MoMykgKi8KLQl9IHR5cGU7Ci0JQmxvY2sgKm5leHQ7ICAgICAgICAgICAgICAgLyog
bmV4dCBqdW5rICovCi19OwotCiAvKiBBIHBpZWNlIGhvbGRzIGEgcmVmZXJlbmNlIChidXQgZG9l
c24ndCBpdHNlbGYgc3RvcmUpIGEgY2VydGFpbiBhbW91bnQgb2YgZGF0YS4KICAqIEFsbCBhY3Rp
dmUgcGllY2VzIGNoYWluZWQgdG9nZXRoZXIgZm9ybSB0aGUgd2hvbGUgY29udGVudCBvZiB0aGUg
ZG9jdW1lbnQuCiAgKiBBdCB0aGUgYmVnaW5uaW5nIHRoZXJlIGV4aXN0cyBvbmx5IG9uZSBwaWVj
ZSwgc3Bhbm5pbmcgdGhlIHdob2xlIGRvY3VtZW50LgogICogVXBvbiBpbnNlcnRpb24vZGVsZXRp
b24gbmV3IHBpZWNlcyB3aWxsIGJlIGNyZWF0ZWQgdG8gcmVwcmVzZW50IHRoZSBjaGFuZ2VzLgot
ICogR2VuZXJhbGx5IHBpZWNlcyBhcmUgbmV2ZXIgZGVzdHJveWVkLCBidXQga2VwdCBhcm91bmQg
dG8gcGVmb3JtIHVuZG8vcmVkbworICogR2VuZXJhbGx5IHBpZWNlcyBhcmUgbmV2ZXIgZGVzdHJv
eWVkLCBidXQga2VwdCBhcm91bmQgdG8gcGVyZm9ybSB1bmRvL3JlZG8KICAqIG9wZXJhdGlvbnMu
CiAgKi8KIHN0cnVjdCBQaWVjZSB7CkBAIC0xMTUsOCArODMsNyBAQAogCiAvKiBUaGUgbWFpbiBz
dHJ1Y3QgaG9sZGluZyBhbGwgaW5mb3JtYXRpb24gb2YgYSBnaXZlbiBmaWxlICovCiBzdHJ1Y3Qg
VGV4dCB7Ci0JQmxvY2sgKmJsb2NrOyAgICAgICAgICAgLyogb3JpZ2luYWwgZmlsZSBjb250ZW50
IGF0IHRoZSB0aW1lIG9mIGxvYWQgb3BlcmF0aW9uICovCi0JQmxvY2sgKmJsb2NrczsgICAgICAg
ICAgLyogYWxsIGJsb2NrcyB3aGljaCBoYXZlIGJlZW4gYWxsb2NhdGVkIHRvIGhvbGQgaW5zZXJ0
aW9uIGRhdGEgKi8KKwlBcnJheSBibG9ja3M7ICAgICAgICAgICAvKiBibG9ja3Mgd2hpY2ggaG9s
ZCB0ZXh0IGNvbnRlbnQgKi8KIAlQaWVjZSAqcGllY2VzOyAgICAgICAgICAvKiBhbGwgcGllY2Vz
IHdoaWNoIGhhdmUgYmVlbiBhbGxvY2F0ZWQsIHVzZWQgdG8gZnJlZSB0aGVtICovCiAJUGllY2Ug
KmNhY2hlOyAgICAgICAgICAgLyogbW9zdCByZWNlbnRseSBtb2RpZmllZCBwaWVjZSAqLwogCVBp
ZWNlIGJlZ2luLCBlbmQ7ICAgICAgIC8qIHNlbnRpbmVsIG5vZGVzIHdoaWNoIGFsd2F5cyBleGlz
dHMgYnV0IGRvbid0IGhvbGQgYW55IGRhdGEgKi8KQEAgLTEyOSwyMyArOTYsNyBAQAogCUxpbmVD
YWNoZSBsaW5lczsgICAgICAgIC8qIG1hcHBpbmcgYmV0d2VlbiBhYnNvbHV0ZSBwb3MgaW4gYnl0
ZXMgYW5kIGxvZ2ljYWwgbGluZSBicmVha3MgKi8KIH07CiAKLXN0cnVjdCBUZXh0U2F2ZSB7ICAg
ICAgICAgICAgICAgICAgLyogdXNlZCB0byBob2xkIGNvbnRleHQgYmV0d2VlbiB0ZXh0X3NhdmVf
e2JlZ2luLGNvbW1pdH0gY2FsbHMgKi8KLQlUZXh0ICp0eHQ7ICAgICAgICAgICAgICAgICAvKiB0
ZXh0IHRvIG9wZXJhdGUgb24gKi8KLQljaGFyICpmaWxlbmFtZTsgICAgICAgICAgICAvKiBmaWxl
bmFtZSB0byBzYXZlIHRvIGFzIGdpdmVuIHRvIHRleHRfc2F2ZV9iZWdpbiAqLwotCWNoYXIgKnRt
cG5hbWU7ICAgICAgICAgICAgIC8qIHRlbXBvcmFyeSBuYW1lIHVzZWQgZm9yIGF0b21pYyByZW5h
bWUoMikgKi8KLQlpbnQgZmQ7ICAgICAgICAgICAgICAgICAgICAvKiBmaWxlIGRlc2NyaXB0b3Ig
dG8gd3JpdGUgZGF0YSB0byB1c2luZyB0ZXh0X3NhdmVfd3JpdGUgKi8KLQllbnVtIFRleHRTYXZl
TWV0aG9kIHR5cGU7ICAvKiBtZXRob2QgdXNlZCB0byBzYXZlIGZpbGUgKi8KLX07Ci0KIC8qIGJs
b2NrIG1hbmFnZW1lbnQgKi8KLXN0YXRpYyBCbG9jayAqYmxvY2tfYWxsb2MoVGV4dCosIHNpemVf
dCBzaXplKTsKLXN0YXRpYyBCbG9jayAqYmxvY2tfcmVhZChUZXh0Kiwgc2l6ZV90IHNpemUsIGlu
dCBmZCk7Ci1zdGF0aWMgQmxvY2sgKmJsb2NrX21tYXAoVGV4dCosIHNpemVfdCBzaXplLCBpbnQg
ZmQsIG9mZl90IG9mZnNldCk7Ci1zdGF0aWMgdm9pZCBibG9ja19mcmVlKEJsb2NrKik7Ci1zdGF0
aWMgYm9vbCBibG9ja19jYXBhY2l0eShCbG9jayosIHNpemVfdCBsZW4pOwotc3RhdGljIGNvbnN0
IGNoYXIgKmJsb2NrX2FwcGVuZChCbG9jayosIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBsZW4p
Owotc3RhdGljIGJvb2wgYmxvY2tfaW5zZXJ0KEJsb2NrKiwgc2l6ZV90IHBvcywgY29uc3QgY2hh
ciAqZGF0YSwgc2l6ZV90IGxlbik7Ci1zdGF0aWMgYm9vbCBibG9ja19kZWxldGUoQmxvY2sqLCBz
aXplX3QgcG9zLCBzaXplX3QgbGVuKTsKIHN0YXRpYyBjb25zdCBjaGFyICpibG9ja19zdG9yZShU
ZXh0KiwgY29uc3QgY2hhciAqZGF0YSwgc2l6ZV90IGxlbik7CiAvKiBjYWNoZSBsYXllciAqLwog
c3RhdGljIHZvaWQgY2FjaGVfcGllY2UoVGV4dCAqdHh0LCBQaWVjZSAqcCk7CkBAIC0xNTcsNyAr
MTA4LDcgQEAKIHN0YXRpYyB2b2lkIHBpZWNlX2ZyZWUoUGllY2UgKnApOwogc3RhdGljIHZvaWQg
cGllY2VfaW5pdChQaWVjZSAqcCwgUGllY2UgKnByZXYsIFBpZWNlICpuZXh0LCBjb25zdCBjaGFy
ICpkYXRhLCBzaXplX3QgbGVuKTsKIHN0YXRpYyBMb2NhdGlvbiBwaWVjZV9nZXRfaW50ZXJuKFRl
eHQgKnR4dCwgc2l6ZV90IHBvcyk7Ci1zdGF0aWMgTG9jYXRpb24gcGllY2VfZ2V0X2V4dGVybihU
ZXh0ICp0eHQsIHNpemVfdCBwb3MpOworc3RhdGljIExvY2F0aW9uIHBpZWNlX2dldF9leHRlcm4o
Y29uc3QgVGV4dCAqdHh0LCBzaXplX3QgcG9zKTsKIC8qIHNwYW4gbWFuYWdlbWVudCAqLwogc3Rh
dGljIHZvaWQgc3Bhbl9pbml0KFNwYW4gKnNwYW4sIFBpZWNlICpzdGFydCwgUGllY2UgKmVuZCk7
CiBzdGF0aWMgdm9pZCBzcGFuX3N3YXAoVGV4dCAqdHh0LCBTcGFuICpvbGQsIFNwYW4gKm5ldyk7
CkBAIC0xNzIsMTQ1ICsxMjMsMjUgQEAKIHN0YXRpYyBzaXplX3QgbGluZXNfc2tpcF9mb3J3YXJk
KFRleHQgKnR4dCwgc2l6ZV90IHBvcywgc2l6ZV90IGxpbmVzLCBzaXplX3QgKmxpbmVzX3NraXBl
ZCk7CiBzdGF0aWMgc2l6ZV90IGxpbmVzX2NvdW50KFRleHQgKnR4dCwgc2l6ZV90IHBvcywgc2l6
ZV90IGxlbik7CiAKLXN0YXRpYyBzc2l6ZV90IHdyaXRlX2FsbChpbnQgZmQsIGNvbnN0IGNoYXIg
KmJ1Ziwgc2l6ZV90IGNvdW50KSB7Ci0Jc2l6ZV90IHJlbSA9IGNvdW50OwotCXdoaWxlIChyZW0g
PiAwKSB7Ci0JCXNzaXplX3Qgd3JpdHRlbiA9IHdyaXRlKGZkLCBidWYsIHJlbSA+IElOVF9NQVgg
PyBJTlRfTUFYIDogcmVtKTsKLQkJaWYgKHdyaXR0ZW4gPCAwKSB7Ci0JCQlpZiAoZXJybm8gPT0g
RUFHQUlOIHx8IGVycm5vID09IEVJTlRSKQotCQkJCWNvbnRpbnVlOwotCQkJcmV0dXJuIC0xOwot
CQl9IGVsc2UgaWYgKHdyaXR0ZW4gPT0gMCkgewotCQkJYnJlYWs7Ci0JCX0KLQkJcmVtIC09IHdy
aXR0ZW47Ci0JCWJ1ZiArPSB3cml0dGVuOwotCX0KLQlyZXR1cm4gY291bnQgLSByZW07Ci19Ci0K
LS8qIGFsbG9jYXRlIGEgbmV3IGJsb2NrIG9mIE1BWChzaXplLCBCTE9DS19TSVpFKSBieXRlcyAq
Lwotc3RhdGljIEJsb2NrICpibG9ja19hbGxvYyhUZXh0ICp0eHQsIHNpemVfdCBzaXplKSB7Ci0J
QmxvY2sgKmJsayA9IGNhbGxvYygxLCBzaXplb2YgKmJsayk7Ci0JaWYgKCFibGspCi0JCXJldHVy
biBOVUxMOwotCWlmIChCTE9DS19TSVpFID4gc2l6ZSkKLQkJc2l6ZSA9IEJMT0NLX1NJWkU7Ci0J
aWYgKCEoYmxrLT5kYXRhID0gbWFsbG9jKHNpemUpKSkgewotCQlmcmVlKGJsayk7Ci0JCXJldHVy
biBOVUxMOwotCX0KLQlibGstPnR5cGUgPSBNQUxMT0M7Ci0JYmxrLT5zaXplID0gc2l6ZTsKLQli
bGstPm5leHQgPSB0eHQtPmJsb2NrczsKLQl0eHQtPmJsb2NrcyA9IGJsazsKLQlyZXR1cm4gYmxr
OwotfQotCi1zdGF0aWMgQmxvY2sgKmJsb2NrX3JlYWQoVGV4dCAqdHh0LCBzaXplX3Qgc2l6ZSwg
aW50IGZkKSB7Ci0JQmxvY2sgKmJsayA9IGJsb2NrX2FsbG9jKHR4dCwgc2l6ZSk7Ci0JaWYgKCFi
bGspCi0JCXJldHVybiBOVUxMOwotCXdoaWxlIChzaXplID4gMCkgewotCQljaGFyIGRhdGFbNDA5
Nl07Ci0JCXNzaXplX3QgbGVuID0gcmVhZChmZCwgZGF0YSwgTUlOKHNpemVvZihkYXRhKSwgc2l6
ZSkpOwotCQlpZiAobGVuID09IC0xKSB7Ci0JCQl0eHQtPmJsb2NrcyA9IGJsay0+bmV4dDsKKy8q
IHN0b3JlcyB0aGUgZ2l2ZW4gZGF0YSBpbiBhIGJsb2NrLCBhbGxvY2F0ZXMgYSBuZXcgb25lIGlm
IG5lY2Vzc2FyeS4gUmV0dXJucworICogYSBwb2ludGVyIHRvIHRoZSBzdG9yYWdlIGxvY2F0aW9u
IG9yIE5VTEwgaWYgYWxsb2NhdGlvbiBmYWlsZWQuICovCitzdGF0aWMgY29uc3QgY2hhciAqYmxv
Y2tfc3RvcmUoVGV4dCAqdHh0LCBjb25zdCBjaGFyICpkYXRhLCBzaXplX3QgbGVuKSB7CisJQmxv
Y2sgKmJsayA9IGFycmF5X2dldF9wdHIoJnR4dC0+YmxvY2tzLCBhcnJheV9sZW5ndGgoJnR4dC0+
YmxvY2tzKS0xKTsKKwlpZiAoIWJsayB8fCAhYmxvY2tfY2FwYWNpdHkoYmxrLCBsZW4pKSB7CisJ
CWJsayA9IGJsb2NrX2FsbG9jKGxlbik7CisJCWlmICghYmxrKQorCQkJcmV0dXJuIE5VTEw7CisJ
CWlmICghYXJyYXlfYWRkX3B0cigmdHh0LT5ibG9ja3MsIGJsaykpIHsKIAkJCWJsb2NrX2ZyZWUo
YmxrKTsKIAkJCXJldHVybiBOVUxMOwotCQl9IGVsc2UgaWYgKGxlbiA9PSAwKSB7Ci0JCQlicmVh
azsKLQkJfSBlbHNlIHsKLQkJCWJsb2NrX2FwcGVuZChibGssIGRhdGEsIGxlbik7Ci0JCQlzaXpl
IC09IGxlbjsKIAkJfQogCX0KLQlyZXR1cm4gYmxrOwotfQotCi1zdGF0aWMgQmxvY2sgKmJsb2Nr
X21tYXAoVGV4dCAqdHh0LCBzaXplX3Qgc2l6ZSwgaW50IGZkLCBvZmZfdCBvZmZzZXQpIHsKLQlC
bG9jayAqYmxrID0gY2FsbG9jKDEsIHNpemVvZiAqYmxrKTsKLQlpZiAoIWJsaykKLQkJcmV0dXJu
IE5VTEw7Ci0JaWYgKHNpemUpIHsKLQkJYmxrLT5kYXRhID0gbW1hcChOVUxMLCBzaXplLCBQUk9U
X1JFQUQsIE1BUF9TSEFSRUQsIGZkLCBvZmZzZXQpOwotCQlpZiAoYmxrLT5kYXRhID09IE1BUF9G
QUlMRUQpIHsKLQkJCWZyZWUoYmxrKTsKLQkJCXJldHVybiBOVUxMOwotCQl9Ci0JfQotCWJsay0+
dHlwZSA9IE1NQVBfT1JJRzsKLQlibGstPnNpemUgPSBzaXplOwotCWJsay0+bGVuID0gc2l6ZTsK
LQlibGstPm5leHQgPSB0eHQtPmJsb2NrczsKLQl0eHQtPmJsb2NrcyA9IGJsazsKLQlyZXR1cm4g
YmxrOwotfQotCi1zdGF0aWMgdm9pZCBibG9ja19mcmVlKEJsb2NrICpibGspIHsKLQlpZiAoIWJs
aykKLQkJcmV0dXJuOwotCWlmIChibGstPnR5cGUgPT0gTUFMTE9DKQotCQlmcmVlKGJsay0+ZGF0
YSk7Ci0JZWxzZSBpZiAoKGJsay0+dHlwZSA9PSBNTUFQX09SSUcgfHwgYmxrLT50eXBlID09IE1N
QVApICYmIGJsay0+ZGF0YSkKLQkJbXVubWFwKGJsay0+ZGF0YSwgYmxrLT5zaXplKTsKLQlmcmVl
KGJsayk7Ci19Ci0KLS8qIGNoZWNrIHdoZXRoZXIgYmxvY2sgaGFzIGVub3VnaCBmcmVlIHNwYWNl
IHRvIHN0b3JlIGxlbiBieXRlcyAqLwotc3RhdGljIGJvb2wgYmxvY2tfY2FwYWNpdHkoQmxvY2sg
KmJsaywgc2l6ZV90IGxlbikgewotCXJldHVybiBibGstPnNpemUgLSBibGstPmxlbiA+PSBsZW47
Ci19Ci0KLS8qIGFwcGVuZCBkYXRhIHRvIGJsb2NrLCBhc3N1bWVzIHRoZXJlIGlzIGVub3VnaCBz
cGFjZSBhdmFpbGFibGUgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpibG9ja19hcHBlbmQoQmxvY2sg
KmJsaywgY29uc3QgY2hhciAqZGF0YSwgc2l6ZV90IGxlbikgewotCWNoYXIgKmRlc3QgPSBtZW1j
cHkoYmxrLT5kYXRhICsgYmxrLT5sZW4sIGRhdGEsIGxlbik7Ci0JYmxrLT5sZW4gKz0gbGVuOwot
CXJldHVybiBkZXN0OwotfQotCi0vKiBzdG9yZXMgdGhlIGdpdmVuIGRhdGEgaW4gYSBibG9jaywg
YWxsb2NhdGVzIGEgbmV3IG9uZSBpZiBuZWNlc3NhcnkuIHJldHVybnMKLSAqIGEgcG9pbnRlciB0
byB0aGUgc3RvcmFnZSBsb2NhdGlvbiBvciBOVUxMIGlmIGFsbG9jYXRpb24gZmFpbGVkLiAqLwot
c3RhdGljIGNvbnN0IGNoYXIgKmJsb2NrX3N0b3JlKFRleHQgKnR4dCwgY29uc3QgY2hhciAqZGF0
YSwgc2l6ZV90IGxlbikgewotCUJsb2NrICpibGsgPSB0eHQtPmJsb2NrczsKLQlpZiAoKCFibGsg
fHwgIWJsb2NrX2NhcGFjaXR5KGJsaywgbGVuKSkgJiYgIShibGsgPSBibG9ja19hbGxvYyh0eHQs
IGxlbikpKQotCQlyZXR1cm4gTlVMTDsKIAlyZXR1cm4gYmxvY2tfYXBwZW5kKGJsaywgZGF0YSwg
bGVuKTsKIH0KIAotLyogaW5zZXJ0IGRhdGEgaW50byBibG9jayBhdCBhbiBhcmJpdHJhcnkgcG9z
aXRpb24sIHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoCi0gKiBkYXRhIG9mIHRoZSBtb3N0
IHJlY2VudGx5IGNyZWF0ZWQgcGllY2UuICovCi1zdGF0aWMgYm9vbCBibG9ja19pbnNlcnQoQmxv
Y2sgKmJsaywgc2l6ZV90IHBvcywgY29uc3QgY2hhciAqZGF0YSwgc2l6ZV90IGxlbikgewotCWlm
IChwb3MgPiBibGstPmxlbiB8fCAhYmxvY2tfY2FwYWNpdHkoYmxrLCBsZW4pKQotCQlyZXR1cm4g
ZmFsc2U7Ci0JaWYgKGJsay0+bGVuID09IHBvcykKLQkJcmV0dXJuIGJsb2NrX2FwcGVuZChibGss
IGRhdGEsIGxlbik7Ci0JY2hhciAqaW5zZXJ0ID0gYmxrLT5kYXRhICsgcG9zOwotCW1lbW1vdmUo
aW5zZXJ0ICsgbGVuLCBpbnNlcnQsIGJsay0+bGVuIC0gcG9zKTsKLQltZW1jcHkoaW5zZXJ0LCBk
YXRhLCBsZW4pOwotCWJsay0+bGVuICs9IGxlbjsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQotLyogZGVs
ZXRlIGRhdGEgZnJvbSBhIGJsb2NrIGF0IGFuIGFyYml0cmFyeSBwb3NpdGlvbiwgdGhpcyBzaG91
bGQgb25seSBiZSB1c2VkIHdpdGgKLSAqIGRhdGEgb2YgdGhlIG1vc3QgcmVjZW50bHkgY3JlYXRl
ZCBwaWVjZS4gKi8KLXN0YXRpYyBib29sIGJsb2NrX2RlbGV0ZShCbG9jayAqYmxrLCBzaXplX3Qg
cG9zLCBzaXplX3QgbGVuKSB7Ci0Jc2l6ZV90IGVuZDsKLQlpZiAoIWFkZHUocG9zLCBsZW4sICZl
bmQpIHx8IGVuZCA+IGJsay0+bGVuKQotCQlyZXR1cm4gZmFsc2U7Ci0JaWYgKGJsay0+bGVuID09
IHBvcykgewotCQlibGstPmxlbiAtPSBsZW47Ci0JCXJldHVybiB0cnVlOwotCX0KLQljaGFyICpk
ZWxldGUgPSBibGstPmRhdGEgKyBwb3M7Ci0JbWVtbW92ZShkZWxldGUsIGRlbGV0ZSArIGxlbiwg
YmxrLT5sZW4gLSBwb3MgLSBsZW4pOwotCWJsay0+bGVuIC09IGxlbjsKLQlyZXR1cm4gdHJ1ZTsK
LX0KLQogLyogY2FjaGUgdGhlIGdpdmVuIHBpZWNlIGlmIGl0IGlzIHRoZSBtb3N0IHJlY2VudGx5
IGNoYW5nZWQgb25lICovCiBzdGF0aWMgdm9pZCBjYWNoZV9waWVjZShUZXh0ICp0eHQsIFBpZWNl
ICpwKSB7Ci0JQmxvY2sgKmJsayA9IHR4dC0+YmxvY2tzOworCUJsb2NrICpibGsgPSBhcnJheV9n
ZXRfcHRyKCZ0eHQtPmJsb2NrcywgYXJyYXlfbGVuZ3RoKCZ0eHQtPmJsb2NrcyktMSk7CiAJaWYg
KCFibGsgfHwgcC0+ZGF0YSA8IGJsay0+ZGF0YSB8fCBwLT5kYXRhICsgcC0+bGVuICE9IGJsay0+
ZGF0YSArIGJsay0+bGVuKQogCQlyZXR1cm47CiAJdHh0LT5jYWNoZSA9IHA7CkBAIC0zMTgsNyAr
MTQ5LDcgQEAKIAogLyogY2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gcGllY2Ugd2FzIHRoZSBtb3N0
IHJlY2VudGx5IG1vZGlmaWVkIG9uZSAqLwogc3RhdGljIGJvb2wgY2FjaGVfY29udGFpbnMoVGV4
dCAqdHh0LCBQaWVjZSAqcCkgewotCUJsb2NrICpibGsgPSB0eHQtPmJsb2NrczsKKwlCbG9jayAq
YmxrID0gYXJyYXlfZ2V0X3B0cigmdHh0LT5ibG9ja3MsIGFycmF5X2xlbmd0aCgmdHh0LT5ibG9j
a3MpLTEpOwogCVJldmlzaW9uICpyZXYgPSB0eHQtPmN1cnJlbnRfcmV2aXNpb247CiAJaWYgKCFi
bGsgfHwgIXR4dC0+Y2FjaGUgfHwgdHh0LT5jYWNoZSAhPSBwIHx8ICFyZXYgfHwgIXJldi0+Y2hh
bmdlKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0zMzYsMTMgKzE2NywxMyBAQAogCXJldHVybiBmb3Vu
ZCAmJiBwLT5kYXRhICsgcC0+bGVuID09IGJsay0+ZGF0YSArIGJsay0+bGVuOwogfQogCi0vKiB0
cnkgdG8gaW5zZXJ0IGEganVuayBvZiBkYXRhIGF0IGEgZ2l2ZW4gcGllY2Ugb2Zmc2V0LiB0aGUg
aW5zZXJ0aW9uIGlzIG9ubHkKLSAqIHBlcmZvcm1lZCBpZiB0aGUgcGllY2UgaXMgdGhlIG1vc3Qg
cmVjZW5ldGx5IGNoYW5nZWQgb25lLiB0aGUgbGVnbnRoIG9mIHRoZQorLyogdHJ5IHRvIGluc2Vy
dCBhIGNodW5rIG9mIGRhdGEgYXQgYSBnaXZlbiBwaWVjZSBvZmZzZXQuIFRoZSBpbnNlcnRpb24g
aXMgb25seQorICogcGVyZm9ybWVkIGlmIHRoZSBwaWVjZSBpcyB0aGUgbW9zdCByZWNlbnRseSBj
aGFuZ2VkIG9uZS4gVGhlIGxlbmd0aCBvZiB0aGUKICAqIHBpZWNlLCB0aGUgc3BhbiBjb250YWlu
aW5nIGl0IGFuZCB0aGUgd2hvbGUgdGV4dCBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseSAqLwogc3Rh
dGljIGJvb2wgY2FjaGVfaW5zZXJ0KFRleHQgKnR4dCwgUGllY2UgKnAsIHNpemVfdCBvZmYsIGNv
bnN0IGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pIHsKIAlpZiAoIWNhY2hlX2NvbnRhaW5zKHR4dCwg
cCkpCiAJCXJldHVybiBmYWxzZTsKLQlCbG9jayAqYmxrID0gdHh0LT5ibG9ja3M7CisJQmxvY2sg
KmJsayA9IGFycmF5X2dldF9wdHIoJnR4dC0+YmxvY2tzLCBhcnJheV9sZW5ndGgoJnR4dC0+Ymxv
Y2tzKS0xKTsKIAlzaXplX3QgYnVmcG9zID0gcC0+ZGF0YSArIG9mZiAtIGJsay0+ZGF0YTsKIAlp
ZiAoIWJsb2NrX2luc2VydChibGssIGJ1ZnBvcywgZGF0YSwgbGVuKSkKIAkJcmV0dXJuIGZhbHNl
OwpAQCAtMzUyLDE0ICsxODMsMTQgQEAKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotLyogdHJ5IHRvIGRl
bGV0ZSBhIGp1bmsgb2YgZGF0YSBhdCBhIGdpdmVuIHBpZWNlIG9mZnNldC4gdGhlIGRlbGV0aW9u
IGlzIG9ubHkKLSAqIHBlcmZvcm1lZCBpZiB0aGUgcGllY2UgaXMgdGhlIG1vc3QgcmVjZW5ldGx5
IGNoYW5nZWQgb25lIGFuZCB0aGUgd2hvbGUKLSAqIGFmZmVjdGVkIHJhbmdlIGxpZXMgd2l0aGlu
IGl0LiB0aGUgbGVnbnRoIG9mIHRoZSBwaWVjZSwgdGhlIHNwYW4gY29udGFpbmluZyBpdAorLyog
dHJ5IHRvIGRlbGV0ZSBhIGNodW5rIG9mIGRhdGEgYXQgYSBnaXZlbiBwaWVjZSBvZmZzZXQuIFRo
ZSBkZWxldGlvbiBpcyBvbmx5CisgKiBwZXJmb3JtZWQgaWYgdGhlIHBpZWNlIGlzIHRoZSBtb3N0
IHJlY2VudGx5IGNoYW5nZWQgb25lIGFuZCB0aGUgd2hvbGUKKyAqIGFmZmVjdGVkIHJhbmdlIGxp
ZXMgd2l0aGluIGl0LiBUaGUgbGVuZ3RoIG9mIHRoZSBwaWVjZSwgdGhlIHNwYW4gY29udGFpbmlu
ZyBpdAogICogYW5kIHRoZSB3aG9sZSB0ZXh0IGlzIGFkanVzdGVkIGFjY29yZGluZ2x5ICovCiBz
dGF0aWMgYm9vbCBjYWNoZV9kZWxldGUoVGV4dCAqdHh0LCBQaWVjZSAqcCwgc2l6ZV90IG9mZiwg
c2l6ZV90IGxlbikgewogCWlmICghY2FjaGVfY29udGFpbnModHh0LCBwKSkKIAkJcmV0dXJuIGZh
bHNlOwotCUJsb2NrICpibGsgPSB0eHQtPmJsb2NrczsKKwlCbG9jayAqYmxrID0gYXJyYXlfZ2V0
X3B0cigmdHh0LT5ibG9ja3MsIGFycmF5X2xlbmd0aCgmdHh0LT5ibG9ja3MpLTEpOwogCXNpemVf
dCBlbmQ7CiAJc2l6ZV90IGJ1ZnBvcyA9IHAtPmRhdGEgKyBvZmYgLSBibGstPmRhdGE7CiAJaWYg
KCFhZGR1KG9mZiwgbGVuLCAmZW5kKSB8fCBlbmQgPiBwLT5sZW4gfHwgIWJsb2NrX2RlbGV0ZShi
bGssIGJ1ZnBvcywgbGVuKSkKQEAgLTQ4NSw5ICszMTYsOSBAQAogCXAtPmxlbiA9IGxlbjsKIH0K
IAotLyogcmV0dXJucyB0aGUgcGllY2UgaG9sZGluZyB0aGUgdGV4dCBhdCBieXRlIG9mZnNldCBw
b3MuIGlmIHBvcyBoYXBwZW5zIHRvCi0gKiBiZSBhdCBhIHBpZWNlIGJvdW5kcnkgaS5lLiB0aGUg
Zmlyc3QgYnl0ZSBvZiBhIHBpZWNlIHRoZW4gdGhlIHByZXZpb3VzIHBpZWNlCi0gKiB0byB0aGUg
bGVmdCBpcyByZXR1cm5lZCB3aXRoIGFuIG9mZnNldCBvZiBwaWVjZS0+bGVuLiB0aGlzIGlzIGNv
bnZlbmllbnQgZm9yCisvKiByZXR1cm5zIHRoZSBwaWVjZSBob2xkaW5nIHRoZSB0ZXh0IGF0IGJ5
dGUgb2Zmc2V0IHBvcy4gSWYgcG9zIGhhcHBlbnMgdG8KKyAqIGJlIGF0IGEgcGllY2UgYm91bmRh
cnkgaS5lLiB0aGUgZmlyc3QgYnl0ZSBvZiBhIHBpZWNlIHRoZW4gdGhlIHByZXZpb3VzIHBpZWNl
CisgKiB0byB0aGUgbGVmdCBpcyByZXR1cm5lZCB3aXRoIGFuIG9mZnNldCBvZiBwaWVjZS0+bGVu
LiBUaGlzIGlzIGNvbnZlbmllbnQgZm9yCiAgKiBtb2RpZmljYXRpb25zIHRvIHRoZSBwaWVjZSBj
aGFpbiB3aGVyZSBib3RoIHBpZWNlcyAodGhlIHJldHVybmVkIG9uZSBhbmQgdGhlCiAgKiBvbmUg
Zm9sbG93aW5nIGl0KSBhcmUgbmVlZGVkLCBidXQgdW5zdWl0YWJsZSBhcyBhIHB1YmxpYyBpbnRl
cmZhY2UuCiAgKgpAQCAtNTA0LDEyICszMzUsMTIgQEAKIAlyZXR1cm4gKExvY2F0aW9uKXsgMCB9
OwogfQogCi0vKiBzaW1pbGlhciB0byBwaWVjZV9nZXRfaW50ZXJuIGJ1dCB1c2FibGUgYXMgYSBw
dWJsaWMgQVBJLiByZXR1cm5zIHRoZSBwaWVjZQotICogaG9sZGluZyB0aGUgdGV4dCBhdCBieXRl
IG9mZnNldCBwb3MuIG5ldmVyIHJldHVybnMgYSBzZW50aW5lbCBwaWVjZS4KKy8qIHNpbWlsaWFy
IHRvIHBpZWNlX2dldF9pbnRlcm4gYnV0IHVzYWJsZSBhcyBhIHB1YmxpYyBBUEkuIFJldHVybnMg
dGhlIHBpZWNlCisgKiBob2xkaW5nIHRoZSB0ZXh0IGF0IGJ5dGUgb2Zmc2V0IHBvcy4gTmV2ZXIg
cmV0dXJucyBhIHNlbnRpbmVsIHBpZWNlLgogICogaXQgcG9zIGlzIHRoZSBlbmQgb2YgZmlsZSAo
PT0gdGV4dF9zaXplKCkpIGFuZCB0aGUgZmlsZSBpcyBub3QgZW1wdHkgdGhlbgogICogdGhlIGxh
c3QgcGllY2UgaG9sZGluZyBkYXRhIGlzIHJldHVybmVkLgogICovCi1zdGF0aWMgTG9jYXRpb24g
cGllY2VfZ2V0X2V4dGVybihUZXh0ICp0eHQsIHNpemVfdCBwb3MpIHsKK3N0YXRpYyBMb2NhdGlv
biBwaWVjZV9nZXRfZXh0ZXJuKGNvbnN0IFRleHQgKnR4dCwgc2l6ZV90IHBvcykgewogCXNpemVf
dCBjdXIgPSAwOwogCVBpZWNlICpwOwogCkBAIC02MTYsOCArNDQ3LDggQEAKIAkJc3Bhbl9pbml0
KCZjLT5uZXcsIG5ldywgbmV3KTsKIAkJc3Bhbl9pbml0KCZjLT5vbGQsIE5VTEwsIE5VTEwpOwog
CX0gZWxzZSB7Ci0JCS8qIGluc2VydCBpbnRvIG1pZGRsZSBvZiBhbiBleGlzdGluZyBwaWVjZSwg
dGhlcmZvcmUgc3BsaXQgdGhlIG9sZAotCQkgKiBwaWVjZS4gdGhhdCBpcyB3ZSBoYXZlIDMgbmV3
IHBpZWNlcyBvbmUgY29udGFpbmluZyB0aGUgY29udGVudAorCQkvKiBpbnNlcnQgaW50byBtaWRk
bGUgb2YgYW4gZXhpc3RpbmcgcGllY2UsIHRoZXJlZm9yZSBzcGxpdCB0aGUgb2xkCisJCSAqIHBp
ZWNlLiBUaGF0IGlzIHdlIGhhdmUgMyBuZXcgcGllY2VzIG9uZSBjb250YWluaW5nIHRoZSBjb250
ZW50CiAJCSAqIGJlZm9yZSB0aGUgaW5zZXJ0aW9uIHBvaW50IHRoZW4gb25lIGhvbGRpbmcgdGhl
IG5ld2x5IGluc2VydGVkCiAJCSAqIHRleHQgYW5kIG9uZSBob2xkaW5nIHRoZSBjb250ZW50IGFm
dGVyIHRoZSBpbnNlcnRpb24gcG9pbnQuCiAJCSAqLwpAQCAtNjM5LDM3ICs0NzAsNiBAQAogCXJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCB0ZXh0X3ZwcmludGYoVGV4dCAqdHh0LCBzaXpl
X3QgcG9zLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXApIHsKLQl2YV9saXN0IGFwX3Nh
dmU7Ci0JdmFfY29weShhcF9zYXZlLCBhcCk7Ci0JaW50IGxlbiA9IHZzbnByaW50ZihOVUxMLCAw
LCBmb3JtYXQsIGFwKTsKLQlpZiAobGVuID09IC0xKSB7Ci0JCXZhX2VuZChhcF9zYXZlKTsKLQkJ
cmV0dXJuIGZhbHNlOwotCX0KLQljaGFyICpidWYgPSBtYWxsb2MobGVuKzEpOwotCWJvb2wgcmV0
ID0gYnVmICYmICh2c25wcmludGYoYnVmLCBsZW4rMSwgZm9ybWF0LCBhcF9zYXZlKSA9PSBsZW4p
ICYmIHRleHRfaW5zZXJ0KHR4dCwgcG9zLCBidWYsIGxlbik7Ci0JZnJlZShidWYpOwotCXZhX2Vu
ZChhcF9zYXZlKTsKLQlyZXR1cm4gcmV0OwotfQotCi1ib29sIHRleHRfYXBwZW5kZihUZXh0ICp0
eHQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSB7Ci0JdmFfbGlzdCBhcDsKLQl2YV9zdGFydChh
cCwgZm9ybWF0KTsKLQlib29sIHJldCA9IHRleHRfdnByaW50Zih0eHQsIHRleHRfc2l6ZSh0eHQp
LCBmb3JtYXQsIGFwKTsKLQl2YV9lbmQoYXApOwotCXJldHVybiByZXQ7Ci19Ci0KLWJvb2wgdGV4
dF9wcmludGYoVGV4dCAqdHh0LCBzaXplX3QgcG9zLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikg
ewotCXZhX2xpc3QgYXA7Ci0JdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0JYm9vbCByZXQgPSB0ZXh0
X3ZwcmludGYodHh0LCBwb3MsIGZvcm1hdCwgYXApOwotCXZhX2VuZChhcCk7Ci0JcmV0dXJuIHJl
dDsKLX0KLQogc3RhdGljIHNpemVfdCByZXZpc2lvbl91bmRvKFRleHQgKnR4dCwgUmV2aXNpb24g
KnJldikgewogCXNpemVfdCBwb3MgPSBFUE9TOwogCWZvciAoQ2hhbmdlICpjID0gcmV2LT5jaGFu
Z2U7IGM7IGMgPSBjLT5uZXh0KSB7CkBAIC03ODEsMzgzICs1ODEsMzUgQEAKIAlyZXR1cm4gaGlz
dG9yeV90cmF2ZXJzZV90byh0eHQsIHJldik7CiB9CiAKLXRpbWVfdCB0ZXh0X3N0YXRlKFRleHQg
KnR4dCkgewordGltZV90IHRleHRfc3RhdGUoY29uc3QgVGV4dCAqdHh0KSB7CiAJcmV0dXJuIHR4
dC0+aGlzdG9yeS0+dGltZTsKIH0KIAotc3RhdGljIGJvb2wgcHJlc2VydmVfYWNsKGludCBzcmMs
IGludCBkZXN0KSB7Ci0jaWYgQ09ORklHX0FDTAotCWFjbF90IGFjbCA9IGFjbF9nZXRfZmQoc3Jj
KTsKLQlpZiAoIWFjbCkKLQkJcmV0dXJuIGVycm5vID09IEVOT1RTVVAgPyB0cnVlIDogZmFsc2U7
Ci0JaWYgKGFjbF9zZXRfZmQoZGVzdCwgYWNsKSA9PSAtMSkgewotCQlhY2xfZnJlZShhY2wpOwot
CQlyZXR1cm4gZmFsc2U7Ci0JfQotCWFjbF9mcmVlKGFjbCk7Ci0jZW5kaWYgLyogQ09ORklHX0FD
TCAqLwotCXJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBwcmVzZXJ2ZV9zZWxpbnV4X2Nv
bnRleHQoaW50IHNyYywgaW50IGRlc3QpIHsKLSNpZiBDT05GSUdfU0VMSU5VWAotCWNoYXIgKmNv
bnRleHQgPSBOVUxMOwotCWlmICghaXNfc2VsaW51eF9lbmFibGVkKCkpCi0JCXJldHVybiB0cnVl
OwotCWlmIChmZ2V0ZmlsZWNvbihzcmMsICZjb250ZXh0KSA9PSAtMSkKLQkJcmV0dXJuIGVycm5v
ID09IEVOT1RTVVAgPyB0cnVlIDogZmFsc2U7Ci0JaWYgKGZzZXRmaWxlY29uKGRlc3QsIGNvbnRl
eHQpID09IC0xKSB7Ci0JCWZyZWVjb24oY29udGV4dCk7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0J
ZnJlZWNvbihjb250ZXh0KTsKLSNlbmRpZiAvKiBDT05GSUdfU0VMSU5VWCAqLwotCXJldHVybiB0
cnVlOwotfQotCi0vKiBDcmVhdGUgYSBuZXcgZmlsZSBuYW1lZCBgLmZpbGVuYW1lLnZpcy5YWFhY
WFhgICh3aGVyZSBgWFhYWFhYYCBpcyBhCi0gKiByYW5kb21seSBnZW5lcmF0ZWQsIHVuaXF1ZSBz
dWZmaXgpIGFuZCB0cnkgdG8gcHJlc2VydmUgYWxsIGltcG9ydGFudAotICogbWV0YSBkYXRhLiBB
ZnRlciB0aGUgZmlsZSBjb250ZW50IGhhcyBiZWVuIHdyaXR0ZW4gdG8gdGhpcyB0ZW1wb3JhcnkK
LSAqIGZpbGUsIHRleHRfc2F2ZV9jb21taXRfYXRvbWljIHdpbGwgYXRvbWljYWxseSBtb3ZlIGl0
IHRvICBpdHMgZmluYWwKLSAqIChwb3NzaWJseSBhbHJlYWR5IGV4aXN0aW5nKSBkZXN0aW5hdGlv
biB1c2luZyByZW5hbWUoMikuCi0gKgotICogVGhpcyBhcHByb2FjaCBkb2VzIG5vdCB3b3JrIGlm
OgotICoKLSAqICAgLSB0aGUgZmlsZSBpcyBhIHN5bWJvbGljIGxpbmsKLSAqICAgLSB0aGUgZmls
ZSBpcyBhIGhhcmQgbGluawotICogICAtIGZpbGUgb3duZXJzaGlwIGNhbiBub3QgYmUgcHJlc2Vy
dmVkCi0gKiAgIC0gZmlsZSBncm91cCBjYW4gbm90IGJlIHByZXNlcnZlZAotICogICAtIGRpcmVj
dG9yeSBwZXJtaXNzaW9ucyBkbyBub3QgYWxsb3cgY3JlYXRpb24gb2YgYSBuZXcgZmlsZQotICog
ICAtIFBPU1hJIEFDTCBjYW4gbm90IGJlIHByZXNlcnZlZCAoaWYgZW5hYmxlZCkKLSAqICAgLSBT
RUxpbnV4IHNlY3VyaXR5IGNvbnRleHQgY2FuIG5vdCBiZSBwcmVzZXJ2ZWQgKGlmIGVuYWJsZWQp
Ci0gKi8KLXN0YXRpYyBib29sIHRleHRfc2F2ZV9iZWdpbl9hdG9taWMoVGV4dFNhdmUgKmN0eCkg
ewotCWludCBvbGRmZCwgc2F2ZWRfZXJybm87Ci0JaWYgKChvbGRmZCA9IG9wZW4oY3R4LT5maWxl
bmFtZSwgT19SRE9OTFkpKSA9PSAtMSAmJiBlcnJubyAhPSBFTk9FTlQpCi0JCWdvdG8gZXJyOwot
CXN0cnVjdCBzdGF0IG9sZG1ldGEgPSB7IDAgfTsKLQlpZiAob2xkZmQgIT0gLTEgJiYgbHN0YXQo
Y3R4LT5maWxlbmFtZSwgJm9sZG1ldGEpID09IC0xKQotCQlnb3RvIGVycjsKLQlpZiAob2xkZmQg
IT0gLTEpIHsKLQkJaWYgKFNfSVNMTksob2xkbWV0YS5zdF9tb2RlKSkgLyogc3ltYm9saWMgbGlu
ayAqLwotCQkJZ290byBlcnI7Ci0JCWlmIChvbGRtZXRhLnN0X25saW5rID4gMSkgLyogaGFyZCBs
aW5rICovCi0JCQlnb3RvIGVycjsKLQl9Ci0KLQljaGFyIHN1ZmZpeFtdID0gIi52aXMuWFhYWFhY
IjsKLQlzaXplX3QgbGVuID0gc3RybGVuKGN0eC0+ZmlsZW5hbWUpICsgc2l6ZW9mKCIuLy4iKSAr
IHNpemVvZihzdWZmaXgpOwotCWNoYXIgKmRpciA9IHN0cmR1cChjdHgtPmZpbGVuYW1lKTsKLQlj
aGFyICpiYXNlID0gc3RyZHVwKGN0eC0+ZmlsZW5hbWUpOwotCi0JaWYgKCEoY3R4LT50bXBuYW1l
ID0gbWFsbG9jKGxlbikpIHx8ICFkaXIgfHwgIWJhc2UpIHsKLQkJZnJlZShkaXIpOwotCQlmcmVl
KGJhc2UpOwotCQlnb3RvIGVycjsKLQl9Ci0KLQlzbnByaW50ZihjdHgtPnRtcG5hbWUsIGxlbiwg
IiVzLy4lcyVzIiwgZGlybmFtZShkaXIpLCBiYXNlbmFtZShiYXNlKSwgc3VmZml4KTsKLQlmcmVl
KGRpcik7Ci0JZnJlZShiYXNlKTsKLQotCWlmICgoY3R4LT5mZCA9IG1rc3RlbXAoY3R4LT50bXBu
YW1lKSkgPT0gLTEpCi0JCWdvdG8gZXJyOwotCi0JaWYgKG9sZGZkID09IC0xKSB7Ci0JCW1vZGVf
dCBtYXNrID0gdW1hc2soMCk7Ci0JCXVtYXNrKG1hc2spOwotCQlpZiAoZmNobW9kKGN0eC0+ZmQs
IDA2NjYgJiB+bWFzaykgPT0gLTEpCi0JCQlnb3RvIGVycjsKLQl9IGVsc2UgewotCQlpZiAoZmNo
bW9kKGN0eC0+ZmQsIG9sZG1ldGEuc3RfbW9kZSkgPT0gLTEpCi0JCQlnb3RvIGVycjsKLQkJaWYg
KCFwcmVzZXJ2ZV9hY2wob2xkZmQsIGN0eC0+ZmQpIHx8ICFwcmVzZXJ2ZV9zZWxpbnV4X2NvbnRl
eHQob2xkZmQsIGN0eC0+ZmQpKQotCQkJZ290byBlcnI7Ci0JCS8qIGNoYW5nZSBvd25lciBpZiBu
ZWNlc3NhcnkgKi8KLQkJaWYgKG9sZG1ldGEuc3RfdWlkICE9IGdldHVpZCgpICYmIGZjaG93bihj
dHgtPmZkLCBvbGRtZXRhLnN0X3VpZCwgKHVpZF90KS0xKSA9PSAtMSkKLQkJCWdvdG8gZXJyOwot
CQkvKiBjaGFuZ2UgZ3JvdXAgaWYgbmVjZXNzYXJ5LCBpbiBjYXNlIG9mIGZhaWx1cmUgc29tZSBl
ZGl0b3JzIHJlc2V0Ci0JCSAqIHRoZSBncm91cCBwZXJtaXNzaW9ucyB0byB0aGUgc2FtZSBhcyBm
b3Igb3RoZXJzICovCi0JCWlmIChvbGRtZXRhLnN0X2dpZCAhPSBnZXRnaWQoKSAmJiBmY2hvd24o
Y3R4LT5mZCwgKHVpZF90KS0xLCBvbGRtZXRhLnN0X2dpZCkgPT0gLTEpCi0JCQlnb3RvIGVycjsK
LQkJY2xvc2Uob2xkZmQpOwotCX0KLQotCWN0eC0+dHlwZSA9IFRFWFRfU0FWRV9BVE9NSUM7Ci0J
cmV0dXJuIHRydWU7Ci1lcnI6Ci0Jc2F2ZWRfZXJybm8gPSBlcnJubzsKLQlpZiAob2xkZmQgIT0g
LTEpCi0JCWNsb3NlKG9sZGZkKTsKLQlpZiAoY3R4LT5mZCAhPSAtMSkKLQkJY2xvc2UoY3R4LT5m
ZCk7Ci0JY3R4LT5mZCA9IC0xOwotCWZyZWUoY3R4LT50bXBuYW1lKTsKLQljdHgtPnRtcG5hbWUg
PSBOVUxMOwotCWVycm5vID0gc2F2ZWRfZXJybm87Ci0JcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0
aWMgYm9vbCB0ZXh0X3NhdmVfY29tbWl0X2F0b21pYyhUZXh0U2F2ZSAqY3R4KSB7Ci0JaWYgKGZz
eW5jKGN0eC0+ZmQpID09IC0xKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlzdHJ1Y3Qgc3RhdCBtZXRh
ID0geyAwIH07Ci0JaWYgKGZzdGF0KGN0eC0+ZmQsICZtZXRhKSA9PSAtMSkKLQkJcmV0dXJuIGZh
bHNlOwotCi0JYm9vbCBjbG9zZV9mYWlsZWQgPSAoY2xvc2UoY3R4LT5mZCkgPT0gLTEpOwotCWN0
eC0+ZmQgPSAtMTsKLQlpZiAoY2xvc2VfZmFpbGVkKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlpZiAo
cmVuYW1lKGN0eC0+dG1wbmFtZSwgY3R4LT5maWxlbmFtZSkgPT0gLTEpCi0JCXJldHVybiBmYWxz
ZTsKLQotCWZyZWUoY3R4LT50bXBuYW1lKTsKLQljdHgtPnRtcG5hbWUgPSBOVUxMOwotCi0JaW50
IGRpciA9IG9wZW4oZGlybmFtZShjdHgtPmZpbGVuYW1lKSwgT19ESVJFQ1RPUll8T19SRE9OTFkp
OwotCWlmIChkaXIgPT0gLTEpCi0JCXJldHVybiBmYWxzZTsKLQotCWlmIChmc3luYyhkaXIpID09
IC0xICYmIGVycm5vICE9IEVJTlZBTCkgewotCQljbG9zZShkaXIpOwotCQlyZXR1cm4gZmFsc2U7
Ci0JfQotCi0JaWYgKGNsb3NlKGRpcikgPT0gLTEpCi0JCXJldHVybiBmYWxzZTsKLQotCWlmICht
ZXRhLnN0X210aW1lKQotCQljdHgtPnR4dC0+aW5mbyA9IG1ldGE7Ci0JcmV0dXJuIHRydWU7Ci19
Ci0KLXN0YXRpYyBib29sIHRleHRfc2F2ZV9iZWdpbl9pbnBsYWNlKFRleHRTYXZlICpjdHgpIHsK
LQlUZXh0ICp0eHQgPSBjdHgtPnR4dDsKLQlzdHJ1Y3Qgc3RhdCBtZXRhID0geyAwIH07Ci0JaW50
IG5ld2ZkID0gLTEsIHNhdmVkX2Vycm5vOwotCWlmICgoY3R4LT5mZCA9IG9wZW4oY3R4LT5maWxl
bmFtZSwgT19DUkVBVHxPX1dST05MWSwgMDY2NikpID09IC0xKQotCQlnb3RvIGVycjsKLQlpZiAo
ZnN0YXQoY3R4LT5mZCwgJm1ldGEpID09IC0xKQotCQlnb3RvIGVycjsKLQlpZiAobWV0YS5zdF9k
ZXYgPT0gdHh0LT5pbmZvLnN0X2RldiAmJiBtZXRhLnN0X2lubyA9PSB0eHQtPmluZm8uc3RfaW5v
ICYmCi0JICAgIHR4dC0+YmxvY2sgJiYgdHh0LT5ibG9jay0+dHlwZSA9PSBNTUFQX09SSUcgJiYg
dHh0LT5ibG9jay0+c2l6ZSkgewotCQkvKiBUaGUgZmlsZSB3ZSBhcmUgZ29pbmcgdG8gb3Zlcndy
aXRlIGlzIGN1cnJlbnRseSBtbWFwLWVkIGZyb20KLQkJICogdGV4dF9sb2FkLCB0aGVyZWZvcmUg
d2UgY29weSB0aGUgbW1hcC1lZCBibG9jayB0byBhIHRlbXBvcmFyeQotCQkgKiBmaWxlIGFuZCBy
ZW1hcCBpdCBhdCB0aGUgc2FtZSBwb3NpdGlvbiBzdWNoIHRoYXQgYWxsIHBvaW50ZXJzCi0JCSAq
IGZyb20gdGhlIHZhcmlvdXMgcGllY2VzIGFyZSBzdGlsbCB2YWxpZC4KLQkJICovCi0JCXNpemVf
dCBzaXplID0gdHh0LT5ibG9jay0+c2l6ZTsKLQkJY2hhciB0bXBuYW1lWzMyXSA9ICIvdG1wL3Zp
cy1YWFhYWFgiOwotCQluZXdmZCA9IG1rc3RlbXAodG1wbmFtZSk7Ci0JCWlmIChuZXdmZCA9PSAt
MSkKLQkJCWdvdG8gZXJyOwotCQlpZiAodW5saW5rKHRtcG5hbWUpID09IC0xKQotCQkJZ290byBl
cnI7Ci0JCXNzaXplX3Qgd3JpdHRlbiA9IHdyaXRlX2FsbChuZXdmZCwgdHh0LT5ibG9jay0+ZGF0
YSwgc2l6ZSk7Ci0JCWlmICh3cml0dGVuID09IC0xIHx8IChzaXplX3Qpd3JpdHRlbiAhPSBzaXpl
KQotCQkJZ290byBlcnI7Ci0JCWlmIChtdW5tYXAodHh0LT5ibG9jay0+ZGF0YSwgc2l6ZSkgPT0g
LTEpCi0JCQlnb3RvIGVycjsKLQotCQl2b2lkICpkYXRhID0gbW1hcCh0eHQtPmJsb2NrLT5kYXRh
LCBzaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIG5ld2ZkLCAwKTsKLQkJaWYgKGRhdGEgPT0g
TUFQX0ZBSUxFRCkKLQkJCWdvdG8gZXJyOwotCQlpZiAoZGF0YSAhPSB0eHQtPmJsb2NrLT5kYXRh
KSB7Ci0JCQltdW5tYXAoZGF0YSwgc2l6ZSk7Ci0JCQlnb3RvIGVycjsKLQkJfQotCQlib29sIGNs
b3NlX2ZhaWxlZCA9IChjbG9zZShuZXdmZCkgPT0gLTEpOwotCQluZXdmZCA9IC0xOwotCQlpZiAo
Y2xvc2VfZmFpbGVkKQotCQkJZ290byBlcnI7Ci0JCXR4dC0+YmxvY2stPmRhdGEgPSBkYXRhOwot
CQl0eHQtPmJsb2NrLT50eXBlID0gTU1BUDsKLQkJbmV3ZmQgPSAtMTsKLQl9Ci0JLyogb3Zlcndy
aXRlIHRoZSBleGlzdGluZyBmaWxlIGNvbnRlbnQsIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nCi0J
ICogaGVyZSB3ZSBhcmUgc2NyZXdlZCwgVE9ETzogbWFrZSBhIGJhY2t1cCBiZWZvcmU/ICovCi0J
aWYgKGZ0cnVuY2F0ZShjdHgtPmZkLCAwKSA9PSAtMSkKLQkJZ290byBlcnI7Ci0JY3R4LT50eXBl
ID0gVEVYVF9TQVZFX0lOUExBQ0U7Ci0JcmV0dXJuIHRydWU7Ci1lcnI6Ci0Jc2F2ZWRfZXJybm8g
PSBlcnJubzsKLQlpZiAobmV3ZmQgIT0gLTEpCi0JCWNsb3NlKG5ld2ZkKTsKLQlpZiAoY3R4LT5m
ZCAhPSAtMSkKLQkJY2xvc2UoY3R4LT5mZCk7Ci0JY3R4LT5mZCA9IC0xOwotCWVycm5vID0gc2F2
ZWRfZXJybm87Ci0JcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCB0ZXh0X3NhdmVfY29t
bWl0X2lucGxhY2UoVGV4dFNhdmUgKmN0eCkgewotCWlmIChmc3luYyhjdHgtPmZkKSA9PSAtMSkK
LQkJcmV0dXJuIGZhbHNlOwotCXN0cnVjdCBzdGF0IG1ldGEgPSB7IDAgfTsKLQlpZiAoZnN0YXQo
Y3R4LT5mZCwgJm1ldGEpID09IC0xKQotCQlyZXR1cm4gZmFsc2U7Ci0JaWYgKGNsb3NlKGN0eC0+
ZmQpID09IC0xKQotCQlyZXR1cm4gZmFsc2U7Ci0JY3R4LT50eHQtPmluZm8gPSBtZXRhOwotCXJl
dHVybiB0cnVlOwotfQotCi1UZXh0U2F2ZSAqdGV4dF9zYXZlX2JlZ2luKFRleHQgKnR4dCwgY29u
c3QgY2hhciAqZmlsZW5hbWUsIGVudW0gVGV4dFNhdmVNZXRob2QgdHlwZSkgewotCWlmICghZmls
ZW5hbWUpCi0JCXJldHVybiBOVUxMOwotCVRleHRTYXZlICpjdHggPSBjYWxsb2MoMSwgc2l6ZW9m
ICpjdHgpOwotCWlmICghY3R4KQotCQlyZXR1cm4gTlVMTDsKLQljdHgtPnR4dCA9IHR4dDsKLQlj
dHgtPmZkID0gLTE7Ci0JaWYgKCEoY3R4LT5maWxlbmFtZSA9IHN0cmR1cChmaWxlbmFtZSkpKQot
CQlnb3RvIGVycjsKLQllcnJubyA9IDA7Ci0JaWYgKCh0eXBlID09IFRFWFRfU0FWRV9BVVRPIHx8
IHR5cGUgPT0gVEVYVF9TQVZFX0FUT01JQykgJiYgdGV4dF9zYXZlX2JlZ2luX2F0b21pYyhjdHgp
KQotCQlyZXR1cm4gY3R4OwotCWlmIChlcnJubyA9PSBFTk9TUEMpCi0JCWdvdG8gZXJyOwotCWlm
ICgodHlwZSA9PSBURVhUX1NBVkVfQVVUTyB8fCB0eXBlID09IFRFWFRfU0FWRV9JTlBMQUNFKSAm
JiB0ZXh0X3NhdmVfYmVnaW5faW5wbGFjZShjdHgpKQotCQlyZXR1cm4gY3R4OwotZXJyOgotCXRl
eHRfc2F2ZV9jYW5jZWwoY3R4KTsKLQlyZXR1cm4gTlVMTDsKLX0KLQotYm9vbCB0ZXh0X3NhdmVf
Y29tbWl0KFRleHRTYXZlICpjdHgpIHsKLQlpZiAoIWN0eCkKLQkJcmV0dXJuIHRydWU7Ci0JYm9v
bCByZXQ7Ci0JVGV4dCAqdHh0ID0gY3R4LT50eHQ7Ci0Jc3dpdGNoIChjdHgtPnR5cGUpIHsKLQlj
YXNlIFRFWFRfU0FWRV9BVE9NSUM6Ci0JCXJldCA9IHRleHRfc2F2ZV9jb21taXRfYXRvbWljKGN0
eCk7Ci0JCWJyZWFrOwotCWNhc2UgVEVYVF9TQVZFX0lOUExBQ0U6Ci0JCXJldCA9IHRleHRfc2F2
ZV9jb21taXRfaW5wbGFjZShjdHgpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXQgPSBmYWxz
ZTsKLQkJYnJlYWs7Ci0JfQotCi0JaWYgKHJldCkgewotCQl0eHQtPnNhdmVkX3JldmlzaW9uID0g
dHh0LT5oaXN0b3J5OwotCQl0ZXh0X3NuYXBzaG90KHR4dCk7Ci0JfQotCXRleHRfc2F2ZV9jYW5j
ZWwoY3R4KTsKLQlyZXR1cm4gcmV0OwotfQotCi12b2lkIHRleHRfc2F2ZV9jYW5jZWwoVGV4dFNh
dmUgKmN0eCkgewotCWlmICghY3R4KQotCQlyZXR1cm47Ci0JaW50IHNhdmVkX2Vycm5vID0gZXJy
bm87Ci0JaWYgKGN0eC0+ZmQgIT0gLTEpCi0JCWNsb3NlKGN0eC0+ZmQpOwotCWlmIChjdHgtPnRt
cG5hbWUgJiYgY3R4LT50bXBuYW1lWzBdKQotCQl1bmxpbmsoY3R4LT50bXBuYW1lKTsKLQlmcmVl
KGN0eC0+dG1wbmFtZSk7Ci0JZnJlZShjdHgtPmZpbGVuYW1lKTsKLQlmcmVlKGN0eCk7Ci0JZXJy
bm8gPSBzYXZlZF9lcnJubzsKLX0KLQotLyogRmlyc3QgdHJ5IHRvIHNhdmUgdGhlIGZpbGUgYXRv
bWljYWxseSB1c2luZyByZW5hbWUoMikgaWYgdGhpcyBkb2VzIG5vdAotICogd29yayBvdmVyd3Jp
dGUgdGhlIGZpbGUgaW4gcGxhY2UuIEhvd2V2ZXIgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcgZHVy
aW5nCi0gKiB0aGlzIG92ZXJ3cml0ZSB0aGUgb3JpZ2luYWwgZmlsZSBpcyBwZXJtYW5lbnRseSBk
YW1hZ2VkLgotICovCi1ib29sIHRleHRfc2F2ZShUZXh0ICp0eHQsIGNvbnN0IGNoYXIgKmZpbGVu
YW1lKSB7Ci0JcmV0dXJuIHRleHRfc2F2ZV9tZXRob2QodHh0LCBmaWxlbmFtZSwgVEVYVF9TQVZF
X0FVVE8pOwotfQotCi1ib29sIHRleHRfc2F2ZV9tZXRob2QoVGV4dCAqdHh0LCBjb25zdCBjaGFy
ICpmaWxlbmFtZSwgZW51bSBUZXh0U2F2ZU1ldGhvZCBtZXRob2QpIHsKLQlpZiAoIWZpbGVuYW1l
KSB7Ci0JCXR4dC0+c2F2ZWRfcmV2aXNpb24gPSB0eHQtPmhpc3Rvcnk7Ci0JCXRleHRfc25hcHNo
b3QodHh0KTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCVRleHRTYXZlICpjdHggPSB0ZXh0X3NhdmVf
YmVnaW4odHh0LCBmaWxlbmFtZSwgbWV0aG9kKTsKLQlpZiAoIWN0eCkKLQkJcmV0dXJuIGZhbHNl
OwotCUZpbGVyYW5nZSByYW5nZSA9IChGaWxlcmFuZ2UpeyAuc3RhcnQgPSAwLCAuZW5kID0gdGV4
dF9zaXplKHR4dCkgfTsKLQlzc2l6ZV90IHdyaXR0ZW4gPSB0ZXh0X3NhdmVfd3JpdGVfcmFuZ2Uo
Y3R4LCAmcmFuZ2UpOwotCWlmICh3cml0dGVuID09IC0xIHx8IChzaXplX3Qpd3JpdHRlbiAhPSB0
ZXh0X3JhbmdlX3NpemUoJnJhbmdlKSkgewotCQl0ZXh0X3NhdmVfY2FuY2VsKGN0eCk7Ci0JCXJl
dHVybiBmYWxzZTsKLQl9Ci0JcmV0dXJuIHRleHRfc2F2ZV9jb21taXQoY3R4KTsKLX0KLQotc3Np
emVfdCB0ZXh0X3NhdmVfd3JpdGVfcmFuZ2UoVGV4dFNhdmUgKmN0eCwgRmlsZXJhbmdlICpyYW5n
ZSkgewotCXJldHVybiB0ZXh0X3dyaXRlX3JhbmdlKGN0eC0+dHh0LCByYW5nZSwgY3R4LT5mZCk7
Ci19Ci0KLXNzaXplX3QgdGV4dF93cml0ZShUZXh0ICp0eHQsIGludCBmZCkgewotCUZpbGVyYW5n
ZSByID0gKEZpbGVyYW5nZSl7IC5zdGFydCA9IDAsIC5lbmQgPSB0ZXh0X3NpemUodHh0KSB9Owot
CXJldHVybiB0ZXh0X3dyaXRlX3JhbmdlKHR4dCwgJnIsIGZkKTsKLX0KLQotc3NpemVfdCB0ZXh0
X3dyaXRlX3JhbmdlKFRleHQgKnR4dCwgRmlsZXJhbmdlICpyYW5nZSwgaW50IGZkKSB7Ci0Jc2l6
ZV90IHNpemUgPSB0ZXh0X3JhbmdlX3NpemUocmFuZ2UpLCByZW0gPSBzaXplOwotCWZvciAoSXRl
cmF0b3IgaXQgPSB0ZXh0X2l0ZXJhdG9yX2dldCh0eHQsIHJhbmdlLT5zdGFydCk7Ci0JICAgICBy
ZW0gPiAwICYmIHRleHRfaXRlcmF0b3JfdmFsaWQoJml0KTsKLQkgICAgIHRleHRfaXRlcmF0b3Jf
bmV4dCgmaXQpKSB7Ci0JCXNpemVfdCBwcmVtID0gaXQuZW5kIC0gaXQudGV4dDsKLQkJaWYgKHBy
ZW0gPiByZW0pCi0JCQlwcmVtID0gcmVtOwotCQlzc2l6ZV90IHdyaXR0ZW4gPSB3cml0ZV9hbGwo
ZmQsIGl0LnRleHQsIHByZW0pOwotCQlpZiAod3JpdHRlbiA9PSAtMSkKLQkJCXJldHVybiAtMTsK
LQkJcmVtIC09IHdyaXR0ZW47Ci0JCWlmICgoc2l6ZV90KXdyaXR0ZW4gIT0gcHJlbSkKLQkJCWJy
ZWFrOwotCX0KLQlyZXR1cm4gc2l6ZSAtIHJlbTsKLX0KLQotVGV4dCAqdGV4dF9sb2FkKGNvbnN0
IGNoYXIgKmZpbGVuYW1lKSB7Ci0JcmV0dXJuIHRleHRfbG9hZF9tZXRob2QoZmlsZW5hbWUsIFRF
WFRfTE9BRF9BVVRPKTsKLX0KLQotVGV4dCAqdGV4dF9sb2FkX21ldGhvZChjb25zdCBjaGFyICpm
aWxlbmFtZSwgZW51bSBUZXh0TG9hZE1ldGhvZCBtZXRob2QpIHsKLQlpbnQgZmQgPSAtMTsKLQlz
aXplX3Qgc2l6ZSA9IDA7CitUZXh0ICp0ZXh0X2xvYWRhdF9tZXRob2QoaW50IGRpcmZkLCBjb25z
dCBjaGFyICpmaWxlbmFtZSwgZW51bSBUZXh0TG9hZE1ldGhvZCBtZXRob2QpIHsKIAlUZXh0ICp0
eHQgPSBjYWxsb2MoMSwgc2l6ZW9mICp0eHQpOwogCWlmICghdHh0KQogCQlyZXR1cm4gTlVMTDsK
IAlQaWVjZSAqcCA9IHBpZWNlX2FsbG9jKHR4dCk7CiAJaWYgKCFwKQogCQlnb3RvIG91dDsKKwlC
bG9jayAqYmxvY2sgPSBOVUxMOworCWFycmF5X2luaXQoJnR4dC0+YmxvY2tzKTsKIAlsaW5lbm9f
Y2FjaGVfaW52YWxpZGF0ZSgmdHh0LT5saW5lcyk7CiAJaWYgKGZpbGVuYW1lKSB7Ci0JCWlmICgo
ZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSkpID09IC0xKQorCQllcnJubyA9IDA7CisJCWJs
b2NrID0gYmxvY2tfbG9hZChkaXJmZCwgZmlsZW5hbWUsIG1ldGhvZCwgJnR4dC0+aW5mbyk7CisJ
CWlmICghYmxvY2sgJiYgZXJybm8pCiAJCQlnb3RvIG91dDsKLQkJaWYgKGZzdGF0KGZkLCAmdHh0
LT5pbmZvKSA9PSAtMSkKKwkJaWYgKGJsb2NrICYmICFhcnJheV9hZGRfcHRyKCZ0eHQtPmJsb2Nr
cywgYmxvY2spKSB7CisJCQlibG9ja19mcmVlKGJsb2NrKTsKIAkJCWdvdG8gb3V0OwotCQlpZiAo
IVNfSVNSRUcodHh0LT5pbmZvLnN0X21vZGUpKSB7Ci0JCQllcnJubyA9IFNfSVNESVIodHh0LT5p
bmZvLnN0X21vZGUpID8gRUlTRElSIDogRU5PVFNVUDsKLQkJCWdvdG8gb3V0OwogCQl9Ci0JCS8v
IFhYWDogdXNlIGxzZWVrKGZkLCAwLCBTRUVLX0VORCk7IGluc3RlYWQ/Ci0JCXNpemUgPSB0eHQt
PmluZm8uc3Rfc2l6ZTsKLQkJaWYgKHNpemUgPiAwKSB7Ci0JCQlpZiAobWV0aG9kID09IFRFWFRf
TE9BRF9SRUFEIHx8IChtZXRob2QgPT0gVEVYVF9MT0FEX0FVVE8gJiYgc2l6ZSA8IEJMT0NLX01N
QVBfU0laRSkpCi0JCQkJdHh0LT5ibG9jayA9IGJsb2NrX3JlYWQodHh0LCBzaXplLCBmZCk7Ci0J
CQllbHNlCi0JCQkJdHh0LT5ibG9jayA9IGJsb2NrX21tYXAodHh0LCBzaXplLCBmZCwgMCk7Ci0J
CQlpZiAoIXR4dC0+YmxvY2spCi0JCQkJZ290byBvdXQ7Ci0JCQlwaWVjZV9pbml0KHAsICZ0eHQt
PmJlZ2luLCAmdHh0LT5lbmQsIHR4dC0+YmxvY2stPmRhdGEsIHR4dC0+YmxvY2stPmxlbik7Ci0J
CX0KIAl9CiAKLQlpZiAoc2l6ZSA9PSAwKQorCWlmICghYmxvY2spCiAJCXBpZWNlX2luaXQocCwg
JnR4dC0+YmVnaW4sICZ0eHQtPmVuZCwgIlwwIiwgMCk7CisJZWxzZQorCQlwaWVjZV9pbml0KHAs
ICZ0eHQtPmJlZ2luLCAmdHh0LT5lbmQsIGJsb2NrLT5kYXRhLCBibG9jay0+bGVuKTsKIAogCXBp
ZWNlX2luaXQoJnR4dC0+YmVnaW4sIE5VTEwsIHAsIE5VTEwsIDApOwogCXBpZWNlX2luaXQoJnR4
dC0+ZW5kLCBwLCBOVUxMLCBOVUxMLCAwKTsKQEAgLTExNjcsMjIgKzYxOSwzMiBAQAogCXRleHRf
c25hcHNob3QodHh0KTsKIAl0eHQtPnNhdmVkX3JldmlzaW9uID0gdHh0LT5oaXN0b3J5OwogCi0J
aWYgKGZkICE9IC0xKQotCQljbG9zZShmZCk7CiAJcmV0dXJuIHR4dDsKIG91dDoKLQlpZiAoZmQg
IT0gLTEpCi0JCWNsb3NlKGZkKTsKIAl0ZXh0X2ZyZWUodHh0KTsKIAlyZXR1cm4gTlVMTDsKIH0K
IAotc3RydWN0IHN0YXQgdGV4dF9zdGF0KFRleHQgKnR4dCkgeworc3RydWN0IHN0YXQgdGV4dF9z
dGF0KGNvbnN0IFRleHQgKnR4dCkgewogCXJldHVybiB0eHQtPmluZm87CiB9CiAKK3ZvaWQgdGV4
dF9zYXZlZChUZXh0ICp0eHQsIHN0cnVjdCBzdGF0ICptZXRhKSB7CisJaWYgKG1ldGEpCisJCXR4
dC0+aW5mbyA9ICptZXRhOworCXR4dC0+c2F2ZWRfcmV2aXNpb24gPSB0eHQtPmhpc3Rvcnk7CisJ
dGV4dF9zbmFwc2hvdCh0eHQpOworfQorCitCbG9jayAqdGV4dF9ibG9ja19tbWFwZWQoVGV4dCAq
dHh0KSB7CisJQmxvY2sgKmJsb2NrID0gYXJyYXlfZ2V0X3B0cigmdHh0LT5ibG9ja3MsIDApOwor
CWlmIChibG9jayAmJiBibG9jay0+dHlwZSA9PSBCTE9DS19UWVBFX01NQVBfT1JJRyAmJiBibG9j
ay0+c2l6ZSkKKwkJcmV0dXJuIGJsb2NrOworCXJldHVybiBOVUxMOworfQorCiAvKiBBIGRlbGV0
ZSBvcGVyYXRpb24gY2FuIGVpdGhlciBzdGFydC9zdG9wIG1pZHdheSB0aHJvdWdoIGEgcGllY2Ug
b3IgYXQKLSAqIGEgYm91bmRyeS4gSW4gdGhlIGZvcm1lciBjYXNlIGEgbmV3IHBpZWNlIGlzIGNy
ZWF0ZWQgdG8gcmVwcmVzZW50IHRoZQorICogYSBib3VuZGFyeS4gSW4gdGhlIGZvcm1lciBjYXNl
IGEgbmV3IHBpZWNlIGlzIGNyZWF0ZWQgdG8gcmVwcmVzZW50IHRoZQogICogcmVtYWluaW5nIHRl
eHQgYmVmb3JlL2FmdGVyIHRoZSBtb2RpZmljYXRpb24gcG9pbnQuCiAgKgogICogICAgICAvLSsg
LS0+ICstLS0tLS0tLS0rIC0tPiArLS0tLS0rIC0tPiArLS0tLS0rIC0tPiArLVwKQEAgLTEyMjEs
NyArNjgzLDcgQEAKIAlzaXplX3QgY3VyOyAgICAgICAgICAgIC8qIGhvdyBtdWNoIGhhcyBhbHJl
YWR5IGJlZW4gZGVsZXRlZCAqLwogCiAJaWYgKG9mZiA9PSBwLT5sZW4pIHsKLQkJLyogZGVsZXRp
b24gc3RhcnRzIGF0IGEgcGllY2UgYm91bmRyeSAqLworCQkvKiBkZWxldGlvbiBzdGFydHMgYXQg
YSBwaWVjZSBib3VuZGFyeSAqLwogCQljdXIgPSAwOwogCQliZWZvcmUgPSBwOwogCQlzdGFydCA9
IHAtPm5leHQ7CkBAIC0xMjQyLDcgKzcwNCw3IEBACiAJfQogCiAJaWYgKGN1ciA9PSBsZW4pIHsK
LQkJLyogZGVsZXRpb24gc3RvcHMgYXQgYSBwaWVjZSBib3VuZHJ5ICovCisJCS8qIGRlbGV0aW9u
IHN0b3BzIGF0IGEgcGllY2UgYm91bmRhcnkgKi8KIAkJZW5kID0gcDsKIAkJYWZ0ZXIgPSBwLT5u
ZXh0OwogCX0gZWxzZSB7CkBAIC0xMjc4LDcgKzc0MCw3IEBACiAJcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgdGV4dF9kZWxldGVfcmFuZ2UoVGV4dCAqdHh0LCBGaWxlcmFuZ2UgKnIpIHsKK2Jvb2wg
dGV4dF9kZWxldGVfcmFuZ2UoVGV4dCAqdHh0LCBjb25zdCBGaWxlcmFuZ2UgKnIpIHsKIAlpZiAo
IXRleHRfcmFuZ2VfdmFsaWQocikpCiAJCXJldHVybiBmYWxzZTsKIAlyZXR1cm4gdGV4dF9kZWxl
dGUodHh0LCByLT5zdGFydCwgdGV4dF9yYW5nZV9zaXplKHIpKTsKQEAgLTEyODYsMTEgKzc0OCwx
MiBAQAogCiAvKiBwcmVzZXJ2ZSB0aGUgY3VycmVudCB0ZXh0IGNvbnRlbnQgc3VjaCB0aGF0IGl0
IGNhbiBiZSByZXN0b3JlZCBieQogICogbWVhbnMgb2YgdW5kby9yZWRvIG9wZXJhdGlvbnMgKi8K
LXZvaWQgdGV4dF9zbmFwc2hvdChUZXh0ICp0eHQpIHsKK2Jvb2wgdGV4dF9zbmFwc2hvdChUZXh0
ICp0eHQpIHsKIAlpZiAodHh0LT5jdXJyZW50X3JldmlzaW9uKQogCQl0eHQtPmxhc3RfcmV2aXNp
b24gPSB0eHQtPmN1cnJlbnRfcmV2aXNpb247CiAJdHh0LT5jdXJyZW50X3JldmlzaW9uID0gTlVM
TDsKIAl0eHQtPmNhY2hlID0gTlVMTDsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogCkBAIC0xMzEzLDI2
NSArNzc2LDc5IEBACiAJCXBpZWNlX2ZyZWUocCk7CiAJfQogCi0JZm9yIChCbG9jayAqbmV4dCwg
KmJsayA9IHR4dC0+YmxvY2tzOyBibGs7IGJsayA9IG5leHQpIHsKLQkJbmV4dCA9IGJsay0+bmV4
dDsKLQkJYmxvY2tfZnJlZShibGspOwotCX0KKwlmb3IgKHNpemVfdCBpID0gMCwgbGVuID0gYXJy
YXlfbGVuZ3RoKCZ0eHQtPmJsb2Nrcyk7IGkgPCBsZW47IGkrKykKKwkJYmxvY2tfZnJlZShhcnJh
eV9nZXRfcHRyKCZ0eHQtPmJsb2NrcywgaSkpOworCWFycmF5X3JlbGVhc2UoJnR4dC0+YmxvY2tz
KTsKIAogCWZyZWUodHh0KTsKIH0KIAotYm9vbCB0ZXh0X21vZGlmaWVkKFRleHQgKnR4dCkgewor
Ym9vbCB0ZXh0X21vZGlmaWVkKGNvbnN0IFRleHQgKnR4dCkgewogCXJldHVybiB0eHQtPnNhdmVk
X3JldmlzaW9uICE9IHR4dC0+aGlzdG9yeTsKIH0KIAotYm9vbCB0ZXh0X21tYXBlZChUZXh0ICp0
eHQsIGNvbnN0IGNoYXIgKnB0cikgeworYm9vbCB0ZXh0X21tYXBlZChjb25zdCBUZXh0ICp0eHQs
IGNvbnN0IGNoYXIgKnB0cikgewogCXVpbnRwdHJfdCBhZGRyID0gKHVpbnRwdHJfdClwdHI7Ci0J
Zm9yIChCbG9jayAqYmxrID0gdHh0LT5ibG9ja3M7IGJsazsgYmxrID0gYmxrLT5uZXh0KSB7Ci0J
CWlmICgoYmxrLT50eXBlID09IE1NQVBfT1JJRyB8fCBibGstPnR5cGUgPT0gTU1BUCkgJiYKKwlm
b3IgKHNpemVfdCBpID0gMCwgbGVuID0gYXJyYXlfbGVuZ3RoKCZ0eHQtPmJsb2Nrcyk7IGkgPCBs
ZW47IGkrKykgeworCQlCbG9jayAqYmxrID0gYXJyYXlfZ2V0X3B0cigmdHh0LT5ibG9ja3MsIGkp
OworCQlpZiAoKGJsay0+dHlwZSA9PSBCTE9DS19UWVBFX01NQVBfT1JJRyB8fCBibGstPnR5cGUg
PT0gQkxPQ0tfVFlQRV9NTUFQKSAmJgogCQkgICAgKHVpbnRwdHJfdCkoYmxrLT5kYXRhKSA8PSBh
ZGRyICYmIGFkZHIgPCAodWludHB0cl90KShibGstPmRhdGEgKyBibGstPnNpemUpKQogCQkJcmV0
dXJuIHRydWU7CiAJfQogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgdGV4dF9pdGVy
YXRvcl9pbml0KEl0ZXJhdG9yICppdCwgc2l6ZV90IHBvcywgUGllY2UgKnAsIHNpemVfdCBvZmYp
IHsKLQlJdGVyYXRvciBpdGVyID0gKEl0ZXJhdG9yKXsKK3N0YXRpYyBib29sIGl0ZXJhdG9yX2lu
aXQoSXRlcmF0b3IgKml0LCBzaXplX3QgcG9zLCBQaWVjZSAqcCwgc2l6ZV90IG9mZikgeworCSpp
dCA9IChJdGVyYXRvcil7CiAJCS5wb3MgPSBwb3MsCiAJCS5waWVjZSA9IHAsCiAJCS5zdGFydCA9
IHAgPyBwLT5kYXRhIDogTlVMTCwKLQkJLmVuZCA9IHAgPyBwLT5kYXRhICsgcC0+bGVuIDogTlVM
TCwKLQkJLnRleHQgPSBwID8gcC0+ZGF0YSArIG9mZiA6IE5VTEwsCisJCS5lbmQgPSBwICYmIHAt
PmRhdGEgPyBwLT5kYXRhICsgcC0+bGVuIDogTlVMTCwKKwkJLnRleHQgPSBwICYmIHAtPmRhdGEg
PyBwLT5kYXRhICsgb2ZmIDogTlVMTCwKIAl9OwotCSppdCA9IGl0ZXI7CiAJcmV0dXJuIHRleHRf
aXRlcmF0b3JfdmFsaWQoaXQpOwogfQogCi1JdGVyYXRvciB0ZXh0X2l0ZXJhdG9yX2dldChUZXh0
ICp0eHQsIHNpemVfdCBwb3MpIHsKLQlJdGVyYXRvciBpdDsKK2Jvb2wgdGV4dF9pdGVyYXRvcl9p
bml0KGNvbnN0IFRleHQgKnR4dCwgSXRlcmF0b3IgKml0LCBzaXplX3QgcG9zKSB7CiAJTG9jYXRp
b24gbG9jID0gcGllY2VfZ2V0X2V4dGVybih0eHQsIHBvcyk7Ci0JdGV4dF9pdGVyYXRvcl9pbml0
KCZpdCwgcG9zLCBsb2MucGllY2UsIGxvYy5vZmYpOwotCXJldHVybiBpdDsKKwlyZXR1cm4gaXRl
cmF0b3JfaW5pdChpdCwgcG9zLCBsb2MucGllY2UsIGxvYy5vZmYpOwogfQogCi1ib29sIHRleHRf
aXRlcmF0b3JfYnl0ZV9nZXQoSXRlcmF0b3IgKml0LCBjaGFyICpiKSB7Ci0JaWYgKHRleHRfaXRl
cmF0b3JfdmFsaWQoaXQpKSB7Ci0JCWlmIChpdC0+c3RhcnQgPD0gaXQtPnRleHQgJiYgaXQtPnRl
eHQgPCBpdC0+ZW5kKSB7Ci0JCQkqYiA9ICppdC0+dGV4dDsKLQkJCXJldHVybiB0cnVlOwotCQl9
IGVsc2UgaWYgKGl0LT5wb3MgPT0gaXQtPnBpZWNlLT50ZXh0LT5zaXplKSB7IC8qIEVPRiAqLwot
CQkJKmIgPSAnXDAnOwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQl9Ci0JcmV0dXJuIGZhbHNlOwor
SXRlcmF0b3IgdGV4dF9pdGVyYXRvcl9nZXQoY29uc3QgVGV4dCAqdHh0LCBzaXplX3QgcG9zKSB7
CisJSXRlcmF0b3IgaXQ7CisJdGV4dF9pdGVyYXRvcl9pbml0KHR4dCwgJml0LCBwb3MpOworCXJl
dHVybiBpdDsKIH0KIAogYm9vbCB0ZXh0X2l0ZXJhdG9yX25leHQoSXRlcmF0b3IgKml0KSB7CiAJ
c2l6ZV90IHJlbSA9IGl0LT5lbmQgLSBpdC0+dGV4dDsKLQlyZXR1cm4gdGV4dF9pdGVyYXRvcl9p
bml0KGl0LCBpdC0+cG9zK3JlbSwgaXQtPnBpZWNlID8gaXQtPnBpZWNlLT5uZXh0IDogTlVMTCwg
MCk7CisJcmV0dXJuIGl0ZXJhdG9yX2luaXQoaXQsIGl0LT5wb3MrcmVtLCBpdC0+cGllY2UgPyBp
dC0+cGllY2UtPm5leHQgOiBOVUxMLCAwKTsKIH0KIAogYm9vbCB0ZXh0X2l0ZXJhdG9yX3ByZXYo
SXRlcmF0b3IgKml0KSB7CiAJc2l6ZV90IG9mZiA9IGl0LT50ZXh0IC0gaXQtPnN0YXJ0OwogCXNp
emVfdCBsZW4gPSBpdC0+cGllY2UgJiYgaXQtPnBpZWNlLT5wcmV2ID8gaXQtPnBpZWNlLT5wcmV2
LT5sZW4gOiAwOwotCXJldHVybiB0ZXh0X2l0ZXJhdG9yX2luaXQoaXQsIGl0LT5wb3Mtb2ZmLCBp
dC0+cGllY2UgPyBpdC0+cGllY2UtPnByZXYgOiBOVUxMLCBsZW4pOworCXJldHVybiBpdGVyYXRv
cl9pbml0KGl0LCBpdC0+cG9zLW9mZiwgaXQtPnBpZWNlID8gaXQtPnBpZWNlLT5wcmV2IDogTlVM
TCwgbGVuKTsKIH0KIAorY29uc3QgVGV4dCAqdGV4dF9pdGVyYXRvcl90ZXh0KGNvbnN0IEl0ZXJh
dG9yICppdCkgeworCXJldHVybiBpdC0+cGllY2UgPyBpdC0+cGllY2UtPnRleHQgOiBOVUxMOwor
fQorCiBib29sIHRleHRfaXRlcmF0b3JfdmFsaWQoY29uc3QgSXRlcmF0b3IgKml0KSB7CiAJLyog
ZmlsdGVyIG91dCBzZW50aW5lbCBub2RlcyAqLwogCXJldHVybiBpdC0+cGllY2UgJiYgaXQtPnBp
ZWNlLT50ZXh0OwogfQogCi1ib29sIHRleHRfaXRlcmF0b3JfYnl0ZV9uZXh0KEl0ZXJhdG9yICpp
dCwgY2hhciAqYikgewotCWlmICghaXQtPnBpZWNlIHx8ICFpdC0+cGllY2UtPm5leHQpCi0JCXJl
dHVybiBmYWxzZTsKLQlib29sIGVvZiA9IHRydWU7Ci0JaWYgKGl0LT50ZXh0IDwgaXQtPmVuZCkg
ewotCQlpdC0+dGV4dCsrOwotCQlpdC0+cG9zKys7Ci0JCWVvZiA9IGZhbHNlOwotCX0gZWxzZSBp
ZiAoIWl0LT5waWVjZS0+cHJldikgewotCQllb2YgPSBmYWxzZTsKLQl9Ci0KLQl3aGlsZSAoaXQt
PnRleHQgPT0gaXQtPmVuZCkgewotCQlpZiAoIXRleHRfaXRlcmF0b3JfbmV4dChpdCkpIHsKLQkJ
CWlmIChlb2YpCi0JCQkJcmV0dXJuIGZhbHNlOwotCQkJaWYgKGIpCi0JCQkJKmIgPSAnXDAnOwot
CQkJcmV0dXJuIHRleHRfaXRlcmF0b3JfcHJldihpdCk7Ci0JCX0KLQl9Ci0KLQlpZiAoYikKLQkJ
KmIgPSAqaXQtPnRleHQ7Ci0JcmV0dXJuIHRydWU7Citib29sIHRleHRfaXRlcmF0b3JfaGFzX25l
eHQoY29uc3QgSXRlcmF0b3IgKml0KSB7CisJcmV0dXJuIGl0LT5waWVjZSAmJiBpdC0+cGllY2Ut
Pm5leHQ7CiB9CiAKLWJvb2wgdGV4dF9pdGVyYXRvcl9ieXRlX3ByZXYoSXRlcmF0b3IgKml0LCBj
aGFyICpiKSB7Ci0JaWYgKCFpdC0+cGllY2UgfHwgIWl0LT5waWVjZS0+cHJldikKLQkJcmV0dXJu
IGZhbHNlOwotCWJvb2wgZW9mID0gIWl0LT5waWVjZS0+bmV4dDsKLQl3aGlsZSAoaXQtPnRleHQg
PT0gaXQtPnN0YXJ0KSB7Ci0JCWlmICghdGV4dF9pdGVyYXRvcl9wcmV2KGl0KSkgewotCQkJaWYg
KCFlb2YpCi0JCQkJcmV0dXJuIGZhbHNlOwotCQkJaWYgKGIpCi0JCQkJKmIgPSAnXDAnOwotCQkJ
cmV0dXJuIHRleHRfaXRlcmF0b3JfbmV4dChpdCk7Ci0JCX0KLQl9Ci0KLQktLWl0LT50ZXh0Owot
CS0taXQtPnBvczsKLQotCWlmIChiKQotCQkqYiA9ICppdC0+dGV4dDsKLQlyZXR1cm4gdHJ1ZTsK
K2Jvb2wgdGV4dF9pdGVyYXRvcl9oYXNfcHJldihjb25zdCBJdGVyYXRvciAqaXQpIHsKKwlyZXR1
cm4gaXQtPnBpZWNlICYmIGl0LT5waWVjZS0+cHJldjsKIH0KIAotYm9vbCB0ZXh0X2l0ZXJhdG9y
X2J5dGVfZmluZF9wcmV2KEl0ZXJhdG9yICppdCwgY2hhciBiKSB7Ci0Jd2hpbGUgKGl0LT50ZXh0
KSB7Ci0JCWNvbnN0IGNoYXIgKm1hdGNoID0gbWVtcmNocihpdC0+c3RhcnQsIGIsIGl0LT50ZXh0
IC0gaXQtPnN0YXJ0KTsKLQkJaWYgKG1hdGNoKSB7Ci0JCQlpdC0+cG9zIC09IGl0LT50ZXh0IC0g
bWF0Y2g7Ci0JCQlpdC0+dGV4dCA9IG1hdGNoOwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJdGV4
dF9pdGVyYXRvcl9wcmV2KGl0KTsKLQl9Ci0JdGV4dF9pdGVyYXRvcl9uZXh0KGl0KTsKLQlyZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgdGV4dF9pdGVyYXRvcl9ieXRlX2ZpbmRfbmV4dChJdGVyYXRv
ciAqaXQsIGNoYXIgYikgewotCXdoaWxlIChpdC0+dGV4dCkgewotCQljb25zdCBjaGFyICptYXRj
aCA9IG1lbWNocihpdC0+dGV4dCwgYiwgaXQtPmVuZCAtIGl0LT50ZXh0KTsKLQkJaWYgKG1hdGNo
KSB7Ci0JCQlpdC0+cG9zICs9IG1hdGNoIC0gaXQtPnRleHQ7Ci0JCQlpdC0+dGV4dCA9IG1hdGNo
OwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJdGV4dF9pdGVyYXRvcl9uZXh0KGl0KTsKLQl9Ci0J
dGV4dF9pdGVyYXRvcl9wcmV2KGl0KTsKLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgdGV4dF9p
dGVyYXRvcl9jb2RlcG9pbnRfbmV4dChJdGVyYXRvciAqaXQsIGNoYXIgKmMpIHsKLQl3aGlsZSAo
dGV4dF9pdGVyYXRvcl9ieXRlX25leHQoaXQsIE5VTEwpKSB7Ci0JCWlmIChJU1VURjgoKml0LT50
ZXh0KSkgewotCQkJaWYgKGMpCi0JCQkJKmMgPSAqaXQtPnRleHQ7Ci0JCQlyZXR1cm4gdHJ1ZTsK
LQkJfQotCX0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgdGV4dF9pdGVyYXRvcl9jb2RlcG9p
bnRfcHJldihJdGVyYXRvciAqaXQsIGNoYXIgKmMpIHsKLQl3aGlsZSAodGV4dF9pdGVyYXRvcl9i
eXRlX3ByZXYoaXQsIE5VTEwpKSB7Ci0JCWlmIChJU1VURjgoKml0LT50ZXh0KSkgewotCQkJaWYg
KGMpCi0JCQkJKmMgPSAqaXQtPnRleHQ7Ci0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQotCX0KLQlyZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgdGV4dF9pdGVyYXRvcl9jaGFyX25leHQoSXRlcmF0b3IgKml0
LCBjaGFyICpjKSB7Ci0JaWYgKCF0ZXh0X2l0ZXJhdG9yX2NvZGVwb2ludF9uZXh0KGl0LCBjKSkK
LQkJcmV0dXJuIGZhbHNlOwotCW1ic3RhdGVfdCBwcyA9IHsgMCB9OwotCWZvciAoOzspIHsKLQkJ
Y2hhciBidWZbTUJfTEVOX01BWF07Ci0JCXNpemVfdCBsZW4gPSB0ZXh0X2J5dGVzX2dldChpdC0+
cGllY2UtPnRleHQsIGl0LT5wb3MsIHNpemVvZiBidWYsIGJ1Zik7Ci0JCXdjaGFyX3Qgd2M7Ci0J
CXNpemVfdCB3Y2xlbiA9IG1icnRvd2MoJndjLCBidWYsIGxlbiwgJnBzKTsKLQkJaWYgKHdjbGVu
ID09IChzaXplX3QpLTEgJiYgZXJybm8gPT0gRUlMU0VRKSB7Ci0JCQlyZXR1cm4gdHJ1ZTsKLQkJ
fSBlbHNlIGlmICh3Y2xlbiA9PSAoc2l6ZV90KS0yKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0g
ZWxzZSBpZiAod2NsZW4gPT0gMCkgewotCQkJcmV0dXJuIHRydWU7Ci0JCX0gZWxzZSB7Ci0JCQlp
bnQgd2lkdGggPSB3Y3dpZHRoKHdjKTsKLQkJCWlmICh3aWR0aCAhPSAwKQotCQkJCXJldHVybiB0
cnVlOwotCQkJaWYgKCF0ZXh0X2l0ZXJhdG9yX2NvZGVwb2ludF9uZXh0KGl0LCBjKSkKLQkJCQly
ZXR1cm4gZmFsc2U7Ci0JCX0KLQl9Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgdGV4dF9pdGVy
YXRvcl9jaGFyX3ByZXYoSXRlcmF0b3IgKml0LCBjaGFyICpjKSB7Ci0JaWYgKCF0ZXh0X2l0ZXJh
dG9yX2NvZGVwb2ludF9wcmV2KGl0LCBjKSkKLQkJcmV0dXJuIGZhbHNlOwotCWZvciAoOzspIHsK
LQkJY2hhciBidWZbTUJfTEVOX01BWF07Ci0JCXNpemVfdCBsZW4gPSB0ZXh0X2J5dGVzX2dldChp
dC0+cGllY2UtPnRleHQsIGl0LT5wb3MsIHNpemVvZiBidWYsIGJ1Zik7Ci0JCXdjaGFyX3Qgd2M7
Ci0JCW1ic3RhdGVfdCBwcyA9IHsgMCB9OwotCQlzaXplX3Qgd2NsZW4gPSBtYnJ0b3djKCZ3Yywg
YnVmLCBsZW4sICZwcyk7Ci0JCWlmICh3Y2xlbiA9PSAoc2l6ZV90KS0xICYmIGVycm5vID09IEVJ
TFNFUSkgewotCQkJcmV0dXJuIHRydWU7Ci0JCX0gZWxzZSBpZiAod2NsZW4gPT0gKHNpemVfdCkt
MikgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9IGVsc2UgaWYgKHdjbGVuID09IDApIHsKLQkJCXJl
dHVybiB0cnVlOwotCQl9IGVsc2UgewotCQkJaW50IHdpZHRoID0gd2N3aWR0aCh3Yyk7Ci0JCQlp
ZiAod2lkdGggIT0gMCkKLQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCWlmICghdGV4dF9pdGVyYXRvcl9j
b2RlcG9pbnRfcHJldihpdCwgYykpCi0JCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JfQotCXJldHVy
biB0cnVlOwotfQotCi1ib29sIHRleHRfYnl0ZV9nZXQoVGV4dCAqdHh0LCBzaXplX3QgcG9zLCBj
aGFyICpieXRlKSB7Ci0JcmV0dXJuIHRleHRfYnl0ZXNfZ2V0KHR4dCwgcG9zLCAxLCBieXRlKTsK
LX0KLQotc2l6ZV90IHRleHRfYnl0ZXNfZ2V0KFRleHQgKnR4dCwgc2l6ZV90IHBvcywgc2l6ZV90
IGxlbiwgY2hhciAqYnVmKSB7Ci0JaWYgKCFidWYpCi0JCXJldHVybiAwOwotCWNoYXIgKmN1ciA9
IGJ1ZjsKLQlzaXplX3QgcmVtID0gbGVuOwotCWZvciAoSXRlcmF0b3IgaXQgPSB0ZXh0X2l0ZXJh
dG9yX2dldCh0eHQsIHBvcyk7Ci0JICAgICB0ZXh0X2l0ZXJhdG9yX3ZhbGlkKCZpdCk7Ci0JICAg
ICB0ZXh0X2l0ZXJhdG9yX25leHQoJml0KSkgewotCQlpZiAocmVtID09IDApCi0JCQlicmVhazsK
LQkJc2l6ZV90IHBpZWNlX2xlbiA9IGl0LmVuZCAtIGl0LnRleHQ7Ci0JCWlmIChwaWVjZV9sZW4g
PiByZW0pCi0JCQlwaWVjZV9sZW4gPSByZW07Ci0JCWlmIChwaWVjZV9sZW4pIHsKLQkJCW1lbWNw
eShjdXIsIGl0LnRleHQsIHBpZWNlX2xlbik7Ci0JCQljdXIgKz0gcGllY2VfbGVuOwotCQkJcmVt
IC09IHBpZWNlX2xlbjsKLQkJfQotCX0KLQlyZXR1cm4gbGVuIC0gcmVtOwotfQotCi1jaGFyICp0
ZXh0X2J5dGVzX2FsbG9jMChUZXh0ICp0eHQsIHNpemVfdCBwb3MsIHNpemVfdCBsZW4pIHsKLQlp
ZiAobGVuID09IFNJWkVfTUFYKQotCQlyZXR1cm4gTlVMTDsKLQljaGFyICpidWYgPSBtYWxsb2Mo
bGVuKzEpOwotCWlmICghYnVmKQotCQlyZXR1cm4gTlVMTDsKLQlsZW4gPSB0ZXh0X2J5dGVzX2dl
dCh0eHQsIHBvcywgbGVuLCBidWYpOwotCWJ1ZltsZW5dID0gJ1wwJzsKLQlyZXR1cm4gYnVmOwot
fQotCi1zaXplX3QgdGV4dF9zaXplKFRleHQgKnR4dCkgeworc2l6ZV90IHRleHRfc2l6ZShjb25z
dCBUZXh0ICp0eHQpIHsKIAlyZXR1cm4gdHh0LT5zaXplOwogfQogCkBAIC0xNjgwLDcgKzk1Nyw3
IEBACiAJcmV0dXJuIChNYXJrKShsb2MucGllY2UtPmRhdGEgKyBsb2Mub2ZmKTsKIH0KIAotc2l6
ZV90IHRleHRfbWFya19nZXQoVGV4dCAqdHh0LCBNYXJrIG1hcmspIHsKK3NpemVfdCB0ZXh0X21h
cmtfZ2V0KGNvbnN0IFRleHQgKnR4dCwgTWFyayBtYXJrKSB7CiAJc2l6ZV90IGN1ciA9IDA7CiAK
IAlpZiAobWFyayA9PSBFTUFSSykKZGlmZiAtdXIgdmlzLTAuNi90ZXh0LmggdmlzLTAuOC90ZXh0
LmgKLS0tIHZpcy0wLjYvdGV4dC5oCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvdGV4
dC5oCTIwMjItMTEtMDEgMTY6NTA6MTAKQEAgLTEyLDcgKzEyLDcgQEAKIC8qKiBBIG1hcmsuICov
CiB0eXBlZGVmIHVpbnRwdHJfdCBNYXJrOwogCi0vKiogQW4gaW52YWxpZCBtYXJrLCBsb29rdXAg
b2Ygd2hpY2ggd2lsbCB5aWVsZCBgRVBPU2AuICovCisvKiogQW4gaW52YWxpZCBtYXJrLCBsb29r
dXAgb2Ygd2hpY2ggd2lsbCB5aWVsZCBgYEVQT1NgYC4gKi8KICNkZWZpbmUgRU1BUksgKChNYXJr
KTApCiAvKiogQW4gaW52YWxpZCBwb3NpdGlvbi4gKi8KICNkZWZpbmUgRVBPUyAoKHNpemVfdCkt
MSkKQEAgLTc1LDEzICs3NSwxMyBAQAogCSAqLwogCVRFWFRfTE9BRF9SRUFELAogCS8qKgotCSAq
IE1lbW9yeSBtYXAgdGhlIHRoZSBmaWxlIGZyb20gZGlzay4gVXNlIGZpbGUgc3lzdGVtIC8gdmly
dHVhbCBtZW1vcnkKKwkgKiBNZW1vcnkgbWFwIHRoZSBmaWxlIGZyb20gZGlzay4gVXNlIGZpbGUg
c3lzdGVtIC8gdmlydHVhbCBtZW1vcnkKIAkgKiBzdWJzeXN0ZW0gYXMgYSBjYWNoaW5nIGxheWVy
LgogCSAqIEByc3QKIAkgKiAuLiBub3RlOjogTG9hZCB0aW1lIGlzIChhbG1vc3QpIGluZGVwZW5k
ZW50IG9mIHRoZSBmaWxlIHNpemUuCiAJICogLi4gd2FybmluZzo6IElucGxhY2UgbW9kaWZpY2F0
aW9ucyBvZiB0aGUgdW5kZXJseWluZyBmaWxlCiAJICogICAgICAgICAgICAgIHdpbGwgYmUgcmVm
bGVjdGVkIGluIHRoZSBjdXJyZW50IHRleHQgY29udGVudC4KLQkgKiAgICAgICAgICAgICAgSW4g
cGFydGljdWxhciwgdHJ1bmNhdGVuYXRpb24gd2lsbCByYWlzZSBgYFNJR0JVU2BgCisJICogICAg
ICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRydW5jYXRpb24gd2lsbCByYWlzZSBgYFNJR0JVU2Bg
CiAJICogICAgICAgICAgICAgIGFuZCByZXN1bHQgaW4gZGF0YSBsb3NzLgogCSAqIEBlbmRyc3QK
IAkgKi8KQEAgLTk1LDYgKzk1LDcgQEAKICAqIEBlbmRyc3QKICAqLwogVGV4dCAqdGV4dF9sb2Fk
KGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKK1RleHQgKnRleHRfbG9hZGF0KGludCBkaXJmZCwgY29u
c3QgY2hhciAqZmlsZW5hbWUpOwogLyoqCiAgKiBDcmVhdGUgYSB0ZXh0IGluc3RhbmNlIHBvcHVs
YXRlZCB3aXRoIHRoZSBnaXZlbiBmaWxlIGNvbnRlbnQuCiAgKgpAQCAtMTA5LDcgKzExMCw4IEBA
CiAgKiBAZW5kcnN0CiAgKi8KIFRleHQgKnRleHRfbG9hZF9tZXRob2QoY29uc3QgY2hhciAqZmls
ZW5hbWUsIGVudW0gVGV4dExvYWRNZXRob2QpOwotLyoqIFJlbGVhc2UgYWxsIHJlc3NvdXJjZXMg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgdGV4dCBpbnN0YW5jZS4gKi8KK1RleHQgKnRleHRfbG9hZGF0
X21ldGhvZChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBlbnVtIFRleHRMb2FkTWV0
aG9kKTsKKy8qKiBSZWxlYXNlIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGV4
dCBpbnN0YW5jZS4gKi8KIHZvaWQgdGV4dF9mcmVlKFRleHQqKTsKIC8qKgogICogQH0KQEAgLTEx
Nyw3ICsxMTksNyBAQAogICogQHsKICAqLwogLyoqIFJldHVybiB0aGUgc2l6ZSBpbiBieXRlcyBv
ZiB0aGUgd2hvbGUgdGV4dC4gKi8KLXNpemVfdCB0ZXh0X3NpemUoVGV4dCopOworc2l6ZV90IHRl
eHRfc2l6ZShjb25zdCBUZXh0Kik7CiAvKioKICAqIEdldCBmaWxlIGluZm9ybWF0aW9uIGF0IHRp
bWUgb2YgbG9hZCBvciBsYXN0IHNhdmUsIHdoaWNoZXZlciBoYXBwZW5lZCBtb3JlCiAgKiByZWNl
bnRseS4KQEAgLTEyOCw5ICsxMzAsOSBAQAogICogQGVuZHJzdAogICogQHJldHVybiBTZWUgYGBz
dGF0KDIpYGAgZm9yIGRldGFpbHMuCiAgKi8KLXN0cnVjdCBzdGF0IHRleHRfc3RhdChUZXh0Kik7
CitzdHJ1Y3Qgc3RhdCB0ZXh0X3N0YXQoY29uc3QgVGV4dCopOwogLyoqIFF1ZXJ5IHdoZXRoZXIg
dGhlIHRleHQgY29udGFpbnMgYW55IHVuc2F2ZWQgbW9kaWZpY2F0aW9ucy4gKi8KLWJvb2wgdGV4
dF9tb2RpZmllZChUZXh0Kik7Citib29sIHRleHRfbW9kaWZpZWQoY29uc3QgVGV4dCopOwogLyoq
CiAgKiBAfQogICogQGRlZmdyb3VwIG1vZGlmeQpAQCAtMTUzLDcgKzE1NSw3IEBACiAgKiBAcmV0
dXJuIFdoZXRoZXIgdGhlIGRlbGV0aW9uIHN1Y2NlZWRlZC4KICAqLwogYm9vbCB0ZXh0X2RlbGV0
ZShUZXh0Kiwgc2l6ZV90IHBvcywgc2l6ZV90IGxlbik7Ci1ib29sIHRleHRfZGVsZXRlX3Jhbmdl
KFRleHQqLCBGaWxlcmFuZ2UqKTsKK2Jvb2wgdGV4dF9kZWxldGVfcmFuZ2UoVGV4dCosIGNvbnN0
IEZpbGVyYW5nZSopOwogYm9vbCB0ZXh0X3ByaW50ZihUZXh0Kiwgc2l6ZV90IHBvcywgY29uc3Qg
Y2hhciAqZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsIDMsIDQpKSk7
CiBib29sIHRleHRfYXBwZW5kZihUZXh0KiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIF9fYXR0
cmlidXRlX18oKGZvcm1hdChwcmludGYsIDIsIDMpKSk7CiAvKioKQEAgLTE2Miw5ICsxNjQsOSBA
QAogICogQHsKICAqLwogLyoqCi0gKiBDcmVhdGUgYSB0ZXh0IHNuYXBzaG90LCB0aGF0IGlzIGEg
dmVydGljZSBpbiB0aGUgaGlzdG9yeSBncmFwaC4KKyAqIENyZWF0ZSBhIHRleHQgc25hcHNob3Qs
IHRoYXQgaXMgYSB2ZXJ0ZXggaW4gdGhlIGhpc3RvcnkgZ3JhcGguCiAgKi8KLXZvaWQgdGV4dF9z
bmFwc2hvdChUZXh0Kik7Citib29sIHRleHRfc25hcHNob3QoVGV4dCopOwogLyoqCiAgKiBSZXZl
cnQgdG8gcHJldmlvdXMgc25hcHNob3QgYWxvbmcgdGhlIG1haW4gYnJhbmNoLgogICogQHJzdApA
QCAtMTk1LDcgKzE5Nyw3IEBACiAgKiAuLiBub3RlOjogVE9ETzogVGhpcyBpcyBjdXJyZW50bHkg
bm90IHRoZSBzYW1lIGFzIHRoZSB0aW1lIG9mIHRoZSBsYXN0IHNuYXBzaG90LgogICogQGVuZHJz
dAogICovCi10aW1lX3QgdGV4dF9zdGF0ZShUZXh0Kik7Cit0aW1lX3QgdGV4dF9zdGF0ZShjb25z
dCBUZXh0Kik7CiAvKioKICAqIEB9CiAgKiBAZGVmZ3JvdXAgbGluZXMKQEAgLTIxOSw5ICsyMjEs
OSBAQAogICogICAgICAgICAgIHJldHVybiBhbiBhcnRpZmljaWFsIE5VTCBieXRlIGF0IEVPRi4K
ICAqIEBlbmRyc3QKICAqLwotYm9vbCB0ZXh0X2J5dGVfZ2V0KFRleHQqLCBzaXplX3QgcG9zLCBj
aGFyICpieXRlKTsKK2Jvb2wgdGV4dF9ieXRlX2dldChjb25zdCBUZXh0Kiwgc2l6ZV90IHBvcywg
Y2hhciAqYnl0ZSk7CiAvKioKLSAqIFN0b3JlIGF0IG1vc3QgYGxlbmAgYnl0ZXMgc3RhcnRpbmcg
ZnJvbSBgYHBvc2BgIGludG8gYGBidWZgYC4KKyAqIFN0b3JlIGF0IG1vc3QgYGBsZW5gYCBieXRl
cyBzdGFydGluZyBmcm9tIGBgcG9zYGAgaW50byBgYGJ1ZmBgLgogICogQHBhcmFtIHBvcyBUaGUg
YWJzb2x1dGUgc3RhcnRpbmcgcG9zaXRpb24uCiAgKiBAcGFyYW0gbGVuIFRoZSBsZW5ndGggaW4g
Ynl0ZXMuCiAgKiBAcGFyYW0gYnVmIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCkBAIC0yMzAsMjUg
KzIzMiwyOSBAQAogICogLi4gd2FybmluZzo6IGBgYnVmYGAgd2lsbCBub3QgYmUgTlVMIHRlcm1p
bmF0ZWQuCiAgKiBAZW5kcnN0CiAgKi8KLXNpemVfdCB0ZXh0X2J5dGVzX2dldChUZXh0Kiwgc2l6
ZV90IHBvcywgc2l6ZV90IGxlbiwgY2hhciAqYnVmKTsKK3NpemVfdCB0ZXh0X2J5dGVzX2dldChj
b25zdCBUZXh0Kiwgc2l6ZV90IHBvcywgc2l6ZV90IGxlbiwgY2hhciAqYnVmKTsKIC8qKgogICog
RmV0Y2ggdGV4dCByYW5nZSBpbnRvIG5ld2x5IGFsbG9jYXRlIG1lbW9yeSByZWdpb24uCiAgKiBA
cGFyYW0gcG9zIFRoZSBhYnNvbHV0ZSBzdGFydGluZyBwb3NpdGlvbi4KICAqIEBwYXJhbSBsZW4g
VGhlIGxlbmd0aCBpbiBieXRlcy4KLSAqIEByZXR1cm4gQSBjb250aWdpb3VzIE5VTCB0ZXJtaW5h
dGVkIGJ1ZmZlciBob2xkaW5nIHRoZSByZXF1ZXN0ZWQgcmFuZ2UsIG9yCisgKiBAcmV0dXJuIEEg
Y29udGlndW91cyBOVUwgdGVybWluYXRlZCBidWZmZXIgaG9sZGluZyB0aGUgcmVxdWVzdGVkIHJh
bmdlLCBvcgogICogICAgICAgICBgYE5VTExgYCBpbiBlcnJvciBjYXNlLgogICogQHJzdAotICog
Li4gd2FybmluZzo6IFRoZSByZXR1cm5lZCBwb2ludGVyIG11c3QgYmUgYGZyZWUoMylgLWVkIGJ5
IHRoZSBjYWxsZXIuCisgKiAuLiB3YXJuaW5nOjogVGhlIHJldHVybmVkIHBvaW50ZXIgbXVzdCBi
ZSBmcmVlZCBieSB0aGUgY2FsbGVyLgogICogQGVuZHJzdAogICovCi1jaGFyICp0ZXh0X2J5dGVz
X2FsbG9jMChUZXh0Kiwgc2l6ZV90IHBvcywgc2l6ZV90IGxlbik7CitjaGFyICp0ZXh0X2J5dGVz
X2FsbG9jMChjb25zdCBUZXh0Kiwgc2l6ZV90IHBvcywgc2l6ZV90IGxlbik7CiAvKioKICAqIEB9
CiAgKiBAZGVmZ3JvdXAgaXRlcmF0b3IKICAqIEB7CiAgKi8KLUl0ZXJhdG9yIHRleHRfaXRlcmF0
b3JfZ2V0KFRleHQqLCBzaXplX3QgcG9zKTsKK0l0ZXJhdG9yIHRleHRfaXRlcmF0b3JfZ2V0KGNv
bnN0IFRleHQqLCBzaXplX3QgcG9zKTsKK2Jvb2wgdGV4dF9pdGVyYXRvcl9pbml0KGNvbnN0IFRl
eHQqLCBJdGVyYXRvciosIHNpemVfdCBwb3MpOworY29uc3QgVGV4dCAqdGV4dF9pdGVyYXRvcl90
ZXh0KGNvbnN0IEl0ZXJhdG9yKik7CiBib29sIHRleHRfaXRlcmF0b3JfdmFsaWQoY29uc3QgSXRl
cmF0b3IqKTsKK2Jvb2wgdGV4dF9pdGVyYXRvcl9oYXNfbmV4dChjb25zdCBJdGVyYXRvciopOwor
Ym9vbCB0ZXh0X2l0ZXJhdG9yX2hhc19wcmV2KGNvbnN0IEl0ZXJhdG9yKik7CiBib29sIHRleHRf
aXRlcmF0b3JfbmV4dChJdGVyYXRvciopOwogYm9vbCB0ZXh0X2l0ZXJhdG9yX3ByZXYoSXRlcmF0
b3IqKTsKIC8qKgpAQCAtMjU2LDcgKzI2Miw3IEBACiAgKiBAZGVmZ3JvdXAgaXRlcmF0b3JfYnl0
ZQogICogQHsKICAqLwotYm9vbCB0ZXh0X2l0ZXJhdG9yX2J5dGVfZ2V0KEl0ZXJhdG9yKiwgY2hh
ciAqYik7Citib29sIHRleHRfaXRlcmF0b3JfYnl0ZV9nZXQoY29uc3QgSXRlcmF0b3IqLCBjaGFy
ICpiKTsKIGJvb2wgdGV4dF9pdGVyYXRvcl9ieXRlX3ByZXYoSXRlcmF0b3IqLCBjaGFyICpiKTsK
IGJvb2wgdGV4dF9pdGVyYXRvcl9ieXRlX25leHQoSXRlcmF0b3IqLCBjaGFyICpiKTsKIGJvb2wg
dGV4dF9pdGVyYXRvcl9ieXRlX2ZpbmRfcHJldihJdGVyYXRvciosIGNoYXIgYik7CkBAIC0yODMs
MTkgKzI4OSwxOSBAQAogLyoqCiAgKiBTZXQgYSBtYXJrLgogICogQHJzdAotICogLi4gbm90ZTo6
IFNldHRpbmcgYSBtYXJrIHRvIGB0ZXh0X3NpemVgIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgY3Vy
cmVudCB0ZXh0Ci0gKiAgICAgICAgICAgc2l6ZSB1cG9uIGxvb2t1cC4KKyAqIC4uIG5vdGU6OiBT
ZXR0aW5nIGEgbWFyayB0byBgYHRleHRfc2l6ZWBgIHdpbGwgYWx3YXlzIHJldHVybiB0aGUKKyAq
ICAgICAgICAgICBjdXJyZW50IHRleHQgc2l6ZSB1cG9uIGxvb2t1cC4KICAqIEBlbmRyc3QKICAq
IEBwYXJhbSBwb3MgVGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIHN0b3JlIHRoZSBtYXJrLgotICog
QHJldHVybiBUaGUgbWFyayBvciBgRU1BUktgIGlmIGFuIGludmFsaWQgcG9zaXRpb24gd2FzIGdp
dmVuLgorICogQHJldHVybiBUaGUgbWFyayBvciBgYEVNQVJLYGAgaWYgYW4gaW52YWxpZCBwb3Np
dGlvbiB3YXMgZ2l2ZW4uCiAgKi8KIE1hcmsgdGV4dF9tYXJrX3NldChUZXh0Kiwgc2l6ZV90IHBv
cyk7CiAvKioKICAqIExvb2t1cCBhIG1hcmsuCiAgKiBAcGFyYW0gbWFyayBUaGUgbWFyayB0byBs
b29rIHVwLgotICogQHJldHVybiBUaGUgYnl0ZSBwb3NpdGlvbiBvciBgRVBPU2AgZm9yIGFuIGlu
dmFsaWQgbWFyay4KKyAqIEByZXR1cm4gVGhlIGJ5dGUgcG9zaXRpb24gb3IgYGBFUE9TYGAgZm9y
IGFuIGludmFsaWQgbWFyay4KICAqLwotc2l6ZV90IHRleHRfbWFya19nZXQoVGV4dCosIE1hcmsp
Oworc2l6ZV90IHRleHRfbWFya19nZXQoY29uc3QgVGV4dCosIE1hcmspOwogLyoqCiAgKiBAfQog
ICogQGRlZmdyb3VwIHNhdmUKQEAgLTMwOCwxMiArMzE0LDEyIEBACiAJLyoqIEF1dG9tYXRpY2Fs
bHkgY2hvc2UgYmVzdCBvcHRpb24uICovCiAJVEVYVF9TQVZFX0FVVE8sCiAJLyoqCi0JICogU2F2
ZSBmaWxlIGF0b21pY2FsbHkgdXNpbmcgYHJlbmFtZSgyKWAuCisJICogU2F2ZSBmaWxlIGF0b21p
Y2FsbHkgdXNpbmcgYGByZW5hbWUoMilgYC4KIAkgKgogCSAqIENyZWF0ZXMgYSB0ZW1wb3Jhcnkg
ZmlsZSwgcmVzdG9yZXMgYWxsIGltcG9ydGFudCBtZXRhIGRhdGEsCiAJICogYmVmb3JlIG1vdmlu
ZyBpdCBhdG9taWNhbGx5IHRvIGl0cyBmaW5hbCAocG9zc2libHkgYWxyZWFkeQotCSAqIGV4aXN0
aW5nKSBkZXN0aW5hdGlvbiB1c2luZyBgcmVuYW1lKDIpYC4gRm9yIG5ldyBmaWxlcywKLQkgKiBw
ZXJtaXNzaW9ucyBhcmUgc2V0IHRvIGAwNjY2ICYgfnVtYXNrYC4KKwkgKiBleGlzdGluZykgZGVz
dGluYXRpb24gdXNpbmcgYGByZW5hbWUoMilgYC4gRm9yIG5ldyBmaWxlcywKKwkgKiBwZXJtaXNz
aW9ucyBhcmUgc2V0IHRvIGBgMDY2NiAmIH51bWFza2BgLgogCSAqCiAJICogQHJzdAogCSAqIC4u
IHdhcm5pbmc6OiBUaGlzIGFwcHJvYWNoIGRvZXMgbm90IHdvcmsgaWY6CkBAIC0zMjMsNyArMzI5
LDcgQEAKIAkgKiAgIC0gRmlsZSBvd25lcnNoaXAgY2FuIG5vdCBiZSBwcmVzZXJ2ZWQuCiAJICog
ICAtIEZpbGUgZ3JvdXAgY2FuIG5vdCBiZSBwcmVzZXJ2ZWQuCiAJICogICAtIERpcmVjdG9yeSBw
ZXJtaXNzaW9ucyBkbyBub3QgYWxsb3cgY3JlYXRpb24gb2YgYSBuZXcgZmlsZS4KLQkgKiAgIC0g
UE9TWEkgQUNMIGNhbiBub3QgYmUgcHJlc2VydmVkIChpZiBlbmFibGVkKS4KKwkgKiAgIC0gUE9T
SVggQUNMIGNhbiBub3QgYmUgcHJlc2VydmVkIChpZiBlbmFibGVkKS4KIAkgKiAgIC0gU0VMaW51
eCBzZWN1cml0eSBjb250ZXh0IGNhbiBub3QgYmUgcHJlc2VydmVkIChpZiBlbmFibGVkKS4KIAkg
KiBAZW5kcnN0CiAJICovCkBAIC0zMzksMzkgKzM0NSw0MSBAQAogCiAvKioKICAqIFNhdmUgdGhl
IHdob2xlIHRleHQgdG8gdGhlIGdpdmVuIGZpbGUgbmFtZS4KLSAqLwotYm9vbCB0ZXh0X3NhdmUo
VGV4dCosIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLS8qKgotICogU2F2ZSB0aGUgd2hvbGUgdGV4
dCB0byB0aGUgZ2l2ZW4gZmlsZSBuYW1lLCB1c2luZyB0aGUgc3BlY2lmaWVkIG1ldGhvZC4KICAq
CiAgKiBAcnN0CiAgKiAuLiBub3RlOjogRXF1aXZhbGVudCB0byBgYHRleHRfc2F2ZV9tZXRob2Qo
ZmlsZW5hbWUsIFRFWFRfU0FWRV9BVVRPKWBgLgogICogQGVuZHJzdAogICovCitib29sIHRleHRf
c2F2ZShUZXh0KiwgY29uc3QgY2hhciAqZmlsZW5hbWUpOworYm9vbCB0ZXh0X3NhdmVhdChUZXh0
KiwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisvKioKKyAqIFNhdmUgdGhlIHdo
b2xlIHRleHQgdG8gdGhlIGdpdmVuIGZpbGUgbmFtZSwgdXNpbmcgdGhlIHNwZWNpZmllZCBtZXRo
b2QuCisgKi8KIGJvb2wgdGV4dF9zYXZlX21ldGhvZChUZXh0KiwgY29uc3QgY2hhciAqZmlsZW5h
bWUsIGVudW0gVGV4dFNhdmVNZXRob2QpOworYm9vbCB0ZXh0X3NhdmVhdF9tZXRob2QoVGV4dCos
IGludCBkaXJmZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGVudW0gVGV4dFNhdmVNZXRob2QpOwog
CiAvKioKICAqIFNldHVwIGEgc2VxdWVuY2Ugb2Ygd3JpdGUgb3BlcmF0aW9ucy4KICAqCi0gKiBU
aGUgcmV0dXJuZWQgYFRleHRTYXZlYCBwb2ludGVyIGNhbiBiZSB1c2VkIHRvIHdyaXRlIG11bHRp
cGxlLCBwb3NzaWJseQotICogbm9uLWNvbnRpZ2lvdXMsIGZpbGUgcmFuZ2VzLgorICogVGhlIHJl
dHVybmVkIGBgVGV4dFNhdmVgYCBwb2ludGVyIGNhbiBiZSB1c2VkIHRvIHdyaXRlIG11bHRpcGxl
LCBwb3NzaWJseQorICogbm9uLWNvbnRpZ3VvdXMsIGZpbGUgcmFuZ2VzLgogICogQHJzdAotICog
Li4gd2FybmluZzo6IEZvciBldmVyeSBjYWxsIHRvIGB0ZXh0X3NhdmVfYmVnaW5gIHRoZXJlIG11
c3QgYmUgZXhhY3RseQotICogICAgICAgICAgICAgIG9uZSBtYXRjaGluZyBjYWxsIHRvIGVpdGhl
ciBgdGV4dF9zYXZlX2NvbW1pdGAgb3IKLSAqICAgICAgICAgICAgICBgdGV4dF9zYXZlX2NhbmNl
bGAgdG8gcmVsZWFzZSB0aGUgdW5kZXJseWluZyByZXNvdXJjZXMuCisgKiAuLiB3YXJuaW5nOjog
Rm9yIGV2ZXJ5IGNhbGwgdG8gYGB0ZXh0X3NhdmVfYmVnaW5gYCB0aGVyZSBtdXN0IGJlIGV4YWN0
bHkKKyAqICAgICAgICAgICAgICBvbmUgbWF0Y2hpbmcgY2FsbCB0byBlaXRoZXIgYGB0ZXh0X3Nh
dmVfY29tbWl0YGAgb3IKKyAqICAgICAgICAgICAgICBgYHRleHRfc2F2ZV9jYW5jZWxgYCB0byBy
ZWxlYXNlIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlcy4KICAqIEBlbmRyc3QKICAqLwotVGV4dFNh
dmUgKnRleHRfc2F2ZV9iZWdpbihUZXh0KiwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGVudW0gVGV4
dFNhdmVNZXRob2QpOworVGV4dFNhdmUgKnRleHRfc2F2ZV9iZWdpbihUZXh0KiwgaW50IGRpcmZk
LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgZW51bSBUZXh0U2F2ZU1ldGhvZCk7CiAvKioKICAqIFdy
aXRlIGZpbGUgcmFuZ2UuCiAgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBv
ciBgYC0xYGAgaW4gY2FzZSBvZiBhbiBlcnJvci4KICAqLwotc3NpemVfdCB0ZXh0X3NhdmVfd3Jp
dGVfcmFuZ2UoVGV4dFNhdmUqLCBGaWxlcmFuZ2UqKTsKK3NzaXplX3QgdGV4dF9zYXZlX3dyaXRl
X3JhbmdlKFRleHRTYXZlKiwgY29uc3QgRmlsZXJhbmdlKik7CiAvKioKICAqIENvbW1pdCBjaGFu
Z2VzIHRvIGRpc2suCiAgKiBAcmV0dXJuIFdoZXRoZXIgY2hhbmdlcyBoYXZlIGJlZW4gc2F2ZWQu
CiAgKiBAcnN0Ci0gKiAuLiBub3RlOjogUmVsZWFzZXMgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2Vz
IGFuZCBgZnJlZSgzKWAncyB0aGUgZ2l2ZW4gYFRleHRTYXZlYAorICogLi4gbm90ZTo6IFJlbGVh
c2VzIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlcyBhbmQgZnJlZXMgdGhlIGdpdmVuIGBgVGV4dFNh
dmVgYAogICogICAgICAgICAgIHBvaW50ZXIgd2hpY2ggbXVzdCBubyBsb25nZXIgYmUgdXNlZC4K
ICAqIEBlbmRyc3QKICAqLwpAQCAtMzgxLDcgKzM4OSw3IEBACiAgKiBAcnN0CiAgKiAuLiBub3Rl
OjogRG9lcyBub3QgZ3VhcmFudGVlIHRvIHVuZG8gdGhlIHByZXZpb3VzIHdyaXRlcyAodGhleSBt
aWdodCBoYXZlIGJlZW4KICAqICAgICAgICAgICBwZXJmb3JtZWQgaW4tcGxhY2UpLiBIb3dldmVy
LCBpdCByZWxlYXNlcyB0aGUgdW5kZXJseWluZyByZXNvdXJjZXMgYW5kCi0gKiAgICAgICAgICAg
YGZyZWUoMylgJ3MgdGhlIGdpdmVuIGBUZXh0U2F2ZWAgcG9pbnRlciB3aGljaCBtdXN0IG5vIGxv
bmdlciBiZSB1c2VkLgorICogICAgICAgICAgIGZyZWVzIHRoZSBnaXZlbiBgYFRleHRTYXZlYGAg
cG9pbnRlciB3aGljaCBtdXN0IG5vIGxvbmdlciBiZSB1c2VkLgogICogQGVuZHJzdAogICovCiB2
b2lkIHRleHRfc2F2ZV9jYW5jZWwoVGV4dFNhdmUqKTsKQEAgLTM4OSwxMiArMzk3LDEyIEBACiAg
KiBXcml0ZSB3aG9sZSB0ZXh0IGNvbnRlbnQgdG8gZmlsZSBkZXNjcmlwdG9yLgogICogQHJldHVy
biBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gb3IgYGAtMWBgIGluIGNhc2Ugb2YgYW4gZXJy
b3IuCiAgKi8KLXNzaXplX3QgdGV4dF93cml0ZShUZXh0KiwgaW50IGZkKTsKK3NzaXplX3QgdGV4
dF93cml0ZShjb25zdCBUZXh0KiwgaW50IGZkKTsKIC8qKgogICogV3JpdGUgZmlsZSByYW5nZSB0
byBmaWxlIGRlc2NyaXB0b3IuCiAgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRl
biBvciBgYC0xYGAgaW4gY2FzZSBvZiBhbiBlcnJvci4KICAqLwotc3NpemVfdCB0ZXh0X3dyaXRl
X3JhbmdlKFRleHQqLCBGaWxlcmFuZ2UqLCBpbnQgZmQpOworc3NpemVfdCB0ZXh0X3dyaXRlX3Jh
bmdlKGNvbnN0IFRleHQqLCBjb25zdCBGaWxlcmFuZ2UqLCBpbnQgZmQpOwogLyoqCiAgKiBAfQog
ICogQGRlZmdyb3VwIG1pc2MKQEAgLTQwNCw3ICs0MTIsNyBAQAogICogQ2hlY2sgd2hldGhlciBg
YHB0cmBgIGlzIHBhcnQgb2YgYSBtZW1vcnkgbWFwcGVkIHJlZ2lvbiBhc3NvY2lhdGVkIHdpdGgK
ICAqIHRoaXMgdGV4dCBpbnN0YW5jZS4KICAqLwotYm9vbCB0ZXh0X21tYXBlZChUZXh0KiwgY29u
c3QgY2hhciAqcHRyKTsKK2Jvb2wgdGV4dF9tbWFwZWQoY29uc3QgVGV4dCosIGNvbnN0IGNoYXIg
KnB0cik7CiAvKiogQH0gKi8KIAogI2VuZGlmCmRpZmYgLXVyIHZpcy0wLjYvdWkuaCB2aXMtMC44
L3VpLmgKLS0tIHZpcy0wLjYvdWkuaAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L3Vp
LmgJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtNyw3ICs3LDcgQEAKIAogLyogZW5hYmxlIGxhcmdl
IGZpbGUgb3B0aW1pemF0aW9uIGZvciBmaWxlcyBsYXJnZXIgdGhhbjogKi8KICNkZWZpbmUgVUlf
TEFSR0VfRklMRV9TSVpFICgxIDw8IDI1KQotLyogZW5hYmxlIGxhcmdlIGZpbGUgb3B0aW1pemF0
aW9uIGZvIGZpbGVzIGNvbnRhaW5pbmcgbGluZXMgbG9uZ2VyIHRoYW46ICovCisvKiBlbmFibGUg
bGFyZ2UgZmlsZSBvcHRpbWl6YXRpb24gZm9yIGZpbGVzIGNvbnRhaW5pbmcgbGluZXMgbG9uZ2Vy
IHRoYW46ICovCiAjZGVmaW5lIFVJX0xBUkdFX0ZJTEVfTElORV9TSVpFICgxIDw8IDE2KQogCiB0
eXBlZGVmIHN0cnVjdCBVaSBVaTsKZGlmZiAtdXIgdmlzLTAuNi92aWV3LmMgdmlzLTAuOC92aWV3
LmMKLS0tIHZpcy0wLjYvdmlldy5jCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvdmll
dy5jCTIwMjItMTEtMDEgMTY6NTA6MTAKQEAgLTM1OCw3ICszNTgsNyBAQAogCQkJY2VsbCA9IChD
ZWxsKXsgLmRhdGEgPSAiXHhFRlx4QkZceEJEIiwgLmxlbiA9IGxlbiwgLndpZHRoID0gMSB9Owog
CQl9IGVsc2UgaWYgKGxlbiA9PSAoc2l6ZV90KS0yKSB7CiAJCQkvKiBub3QgZW5vdWdoIGJ5dGVz
IGF2YWlsYWJsZSB0byBjb252ZXJ0IHRvIGEKLQkJCSAqIHdpZGUgY2hhcmFjdGVyLiBhZHZhbmNl
IGZpbGUgcG9zaXRpb24gYW5kIHJlYWQKKwkJCSAqIHdpZGUgY2hhcmFjdGVyLiBBZHZhbmNlIGZp
bGUgcG9zaXRpb24gYW5kIHJlYWQKIAkJCSAqIGFub3RoZXIganVuayBpbnRvIGJ1ZmZlci4KIAkJ
CSAqLwogCQkJcmVtID0gdGV4dF9ieXRlc19nZXQodmlldy0+dGV4dCwgcG9zK3ByZXZfY2VsbC5s
ZW4sIHNpemUsIHRleHQpOwpAQCAtMTE5Niw4ICsxMTk2LDExIEBACiB9CiAKIHZvaWQgdmlld19z
ZWxlY3Rpb25zX2Rpc3Bvc2VfYWxsKFZpZXcgKnZpZXcpIHsKLQlmb3IgKFNlbGVjdGlvbiAqcyA9
IHZpZXctPnNlbGVjdGlvbnMsICpuZXh0OyBzOyBzID0gbmV4dCkgewotCQluZXh0ID0gcy0+bmV4
dDsKKwlTZWxlY3Rpb24gKmxhc3QgPSB2aWV3LT5zZWxlY3Rpb25zOworCXdoaWxlIChsYXN0LT5u
ZXh0KQorCQlsYXN0ID0gbGFzdC0+bmV4dDsKKwlmb3IgKFNlbGVjdGlvbiAqcyA9IGxhc3QsICpw
cmV2OyBzOyBzID0gcHJldikgeworCQlwcmV2ID0gcy0+cHJldjsKIAkJaWYgKHMgIT0gdmlldy0+
c2VsZWN0aW9uKQogCQkJc2VsZWN0aW9uX2ZyZWUocyk7CiAJfQpkaWZmIC11ciB2aXMtMC42L3Zp
ZXcuaCB2aXMtMC44L3ZpZXcuaAotLS0gdmlzLTAuNi92aWV3LmgJMjAyMC0wNi0wNyAxMzoyNToy
MAorKysgdmlzLTAuOC92aWV3LmgJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtNTYsMTMgKzU2LDEz
IEBACiAvKioKICAqIEdldCB3aW5kb3cgY29vcmRpbmF0ZSBvZiB0ZXh0IHBvc2l0aW9uLgogICog
QHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gdG8gcXVlcnkuCi0gKiBAcGFyYW0gbGluZSBXaWxsIGJl
IHVwZGF0ZWQgd2l0aCBzY3JlZW4gbGluZSBvbiB3aGljaCBgcG9zYCByZXNpZGVzLgotICogQHBh
cmFtIHJvdyBXaWxsIGJlIHVwZGFkZWQgd2l0aCB6ZXJvIGJhc2VkIHdpbmRvdyByb3cgb24gd2hp
Y2ggYHBvc2AgcmVzaWRlcy4KLSAqIEBwYXJhbSBjb2wgV2lsbCBiZSB1cGRhdGVkIHdpdGggemVy
byBiYXNlZCB3aW5kb3cgY29sdW1uIHdoaWNoIGBwb3NgIHJlc2lkZXMuCi0gKiBAcmV0dXJuIFdo
ZXRoZXIgYHBvc2AgaXMgdmlzaWJsZS4gSWYgbm90LCB0aGUgcG9pbnRlciBhcmd1bWVudHMgYXJl
IGxlZnQgdW5tb2RpZmllZC4KKyAqIEBwYXJhbSBsaW5lIFdpbGwgYmUgdXBkYXRlZCB3aXRoIHNj
cmVlbiBsaW5lIG9uIHdoaWNoIGBgcG9zYGAgcmVzaWRlcy4KKyAqIEBwYXJhbSByb3cgV2lsbCBi
ZSB1cGRhZGVkIHdpdGggemVybyBiYXNlZCB3aW5kb3cgcm93IG9uIHdoaWNoIGBgcG9zYGAgcmVz
aWRlcy4KKyAqIEBwYXJhbSBjb2wgV2lsbCBiZSB1cGRhdGVkIHdpdGggemVybyBiYXNlZCB3aW5k
b3cgY29sdW1uIG9uIHdoaWNoIGBgcG9zYGAgcmVzaWRlcy4KKyAqIEByZXR1cm4gV2hldGhlciBg
YHBvc2BgIGlzIHZpc2libGUuIElmIG5vdCwgdGhlIHBvaW50ZXIgYXJndW1lbnRzIGFyZSBsZWZ0
IHVubW9kaWZpZWQuCiAgKi8KIGJvb2wgdmlld19jb29yZF9nZXQoVmlldyosIHNpemVfdCBwb3Ms
IExpbmUgKipsaW5lLCBpbnQgKnJvdywgaW50ICpjb2wpOwotLyoqIEdldCBwb3NpdGlvbiBhdCB0
aGUgc3RhcnQgb3QgdGhlIGBuYC10aCB3aW5kb3cgbGluZSwgY291bnRpbmcgZnJvbSAxLiAqLwor
LyoqIEdldCBwb3NpdGlvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGBgbmBgLXRoIHdpbmRvdyBsaW5l
LCBjb3VudGluZyBmcm9tIDEuICovCiBzaXplX3Qgdmlld19zY3JlZW5saW5lX2dvdG8oVmlldyos
IGludCBuKTsKIC8qKiBHZXQgZmlyc3Qgc2NyZWVuIGxpbmUuICovCiBMaW5lICp2aWV3X2xpbmVz
X2ZpcnN0KFZpZXcqKTsKQEAgLTEyMiw3ICsxMjIsNyBAQAogLyoqCiAgKiBEaXNwb3NlIGFuIGV4
aXN0aW5nIHNlbGVjdGlvbi4KICAqIEByc3QKLSAqIC4uIHdhcm5pbmc6OiBOb3QgYXBwbGljYXBs
ZSBmb3IgdGhlIGxhc3QgZXhpc3Rpbmcgc2VsZWN0aW9uLgorICogLi4gd2FybmluZzo6IE5vdCBh
cHBsaWNhYmxlIGZvciB0aGUgbGFzdCBleGlzdGluZyBzZWxlY3Rpb24uCiAgKiBAZW5kcnN0CiAg
Ki8KIGJvb2wgdmlld19zZWxlY3Rpb25zX2Rpc3Bvc2UoU2VsZWN0aW9uKik7CkBAIC0xMzgsNyAr
MTM4LDcgQEAKICAqIFF1ZXJ5IHN0YXRlIG9mIHByaW1hcnkgc2VsZWN0aW9uLgogICoKICAqIElm
IHRoZSBwcmltYXJ5IHNlbGVjdGlvbiB3YXMgbWFya2VkIGZvciBkZXN0cnVjdGlvbiwgcmV0dXJu
IGl0IGFuZAotICogY2xlYXIgZGVzY3J1Y3Rpb24gZmxhZy4KKyAqIGNsZWFyIGRlc3RydWN0aW9u
IGZsYWcuCiAgKi8KIFNlbGVjdGlvbiAqdmlld19zZWxlY3Rpb25fZGlzcG9zZWQoVmlldyopOwog
LyoqIERpc3Bvc2UgYWxsIGJ1dCB0aGUgcHJpbWFyeSBzZWxlY3Rpb24uICovCkBAIC0xNDcsNyAr
MTQ3LDcgQEAKIHZvaWQgdmlld19zZWxlY3Rpb25zX25vcm1hbGl6ZShWaWV3Kik7CiAvKioKICAq
IFJlcGxhY2UgY3VycmVudGx5IGFjdGl2ZSBzZWxlY3Rpb25zLgotICogQHBhcmFtIGFycmF5IFRo
ZSBBcnJheSBvZiBgYEZpbGVyYW5nZWBgcy4KKyAqIEBwYXJhbSBhcnJheSBUaGUgYXJyYXkgb2Yg
YGBGaWxlcmFuZ2VgYCBvYmplY3RzLgogICogQHBhcmFtIGFuY2hvcmVkIFdoZXRoZXIgKmFsbCog
c2VsZWN0aW9uIHNob3VsZCBiZSBhbmNob3JlZC4KICAqLwogdm9pZCB2aWV3X3NlbGVjdGlvbnNf
c2V0X2FsbChWaWV3KiwgQXJyYXkqLCBib29sIGFuY2hvcmVkKTsKQEAgLTE3Niw3ICsxNzYsNyBA
QAogLyoqCiAgKiBHZXQgc2VsZWN0aW9uIGluZGV4LgogICogQHJzdAotICogLi4gbm90ZTo6IElz
IGFsd2F5cyBpbiByYW5nZSBgWzAsIGNvdW50LTFdYC4KKyAqIC4uIG5vdGU6OiBJcyBhbHdheXMg
aW4gcmFuZ2UgYGBbMCwgY291bnQtMV1gYC4KICAqIC4uIHdhcm5pbmc6IFRoZSByZWxhdGl2ZSBv
cmRlciBpcyBkZXRlcm1pbmVkIGR1cmluZyBjcmVhdGlvbiBhbmQgYXNzdW1lZAogICogICAgICAg
ICAgICAgdG8gcmVtYWluIHRoZSBzYW1lLgogICogQGVuZHJzdApAQCAtMjU5LDcgKzI1OSw3IEBA
CiAvKioKICAqIEdldCB6ZXJvIGJhc2VkIGluZGV4IG9mIHNjcmVlbiBjZWxsIG9uIHdoaWNoIHNl
bGVjdGlvbiBjdXJzb3IgY3VycmVudGx5IHJlc2lkZXMuCiAgKiBAcnN0Ci0gKiAuLiB3YXJuaW5n
OjogUmV0dXJucyBgLTFgIGlmIHRoZSBzZWxlY3Rpb24gY3Vyc29yIGlzIGN1cnJlbnRseSBub3Qg
dmlzaWJsZS4KKyAqIC4uIHdhcm5pbmc6OiBSZXR1cm5zIGBgLTFgYCBpZiB0aGUgc2VsZWN0aW9u
IGN1cnNvciBpcyBjdXJyZW50bHkgbm90IHZpc2libGUuCiAgKiBAZW5kcnN0CiAgKi8KIGludCB2
aWV3X2N1cnNvcnNfY2VsbF9nZXQoU2VsZWN0aW9uKik7CkBAIC0zMjQsNyArMzI0LDcgQEAKICAq
LwogLyoqCiAgKiBNb3ZlIHByaW1hcnkgc2VsZWN0aW9uIGN1cnNvciB0byB0aGUgZ2l2ZW4gcG9z
aXRpb24uCi0gKiBNYWtlcyBzdXJlIHRoYXQgcG9zaXRpb24gaXMgdmlzaXNibGUuCisgKiBNYWtl
cyBzdXJlIHRoYXQgcG9zaXRpb24gaXMgdmlzaWJsZS4KICAqIEByc3QKICAqIC4uIG5vdGU6OiBJ
ZiBwb3NpdGlvbiB3YXMgbm90IHZpc2libGUgYmVmb3JlLCB3ZSBhdHRlbXB0IHRvIHNob3cKICAq
ICAgICAgICAgICBzdXJyb3VuZGluZyBjb250ZXh0LiBUaGUgdmlld3BvcnQgd2lsbCBiZSBhZGp1
c3RlZCBzdWNoCmRpZmYgLXVyIHZpcy0wLjYvdmlzLWNsaXBib2FyZCB2aXMtMC44L3Zpcy1jbGlw
Ym9hcmQKLS0tIHZpcy0wLjYvdmlzLWNsaXBib2FyZAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2
aXMtMC44L3Zpcy1jbGlwYm9hcmQJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtOCwxMCArOCwxOSBA
QAogfQogCiB2Y191c2FnZSgpIHsKLQl2Y19mYXRhbCAiYGJhc2VuYW1lICQwYCBbLS11c2FibGV8
LS1jb3B5fC0tcGFzdGVdIgorCXZjX2ZhdGFsICJgYmFzZW5hbWUgJDBgIFstLXNlbGVjdGlvbiBz
ZWxdIFstLXVzYWJsZXwtLWNvcHl8LS1wYXN0ZV0iCiB9CiAKIHZjX2RldGVybWluZV9jb21tYW5k
KCkgeworCWlmIFsgLW4gIiRXQVlMQU5EX0RJU1BMQVkiIF07IHRoZW4KKwkJZm9yIGMgaW4gd2wt
Y29weSB3bC1wYXN0ZTsgZG8KKwkJCWlmIHR5cGUgIiRjIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4K
KwkJCQllY2hvICJ3bGNsaXBib2FyZCIKKwkJCQlyZXR1cm4gMAorCQkJZmkKKwkJZG9uZQorCWZp
CisJCiAJaWYgWyAtbiAiJERJU1BMQVkiIF07IHRoZW4KIAkJZm9yIGMgaW4geGNsaXAgeHNlbDsg
ZG8KIAkJCWlmIHR5cGUgIiRjIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KQEAgLTIxLDYgKzMwLDEw
IEBACiAJCWRvbmUKIAlmaQogCisJaWYgWyAiJHNlbCIgPSAicHJpbWFyeSIgXTsgdGhlbgorCQl2
Y19mYXRhbCAiY2xpcGJvYXJkIHByaW1hcnkgc2VsZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24g
eW91ciBwbGF0Zm9ybSIKKwlmaQorCiAJaWYgdHlwZSBwYmNvcHkgPi9kZXYvbnVsbCAyPiYxOyB0
aGVuCiAJCWVjaG8gJ21hYycKIAkJcmV0dXJuIDAKQEAgLTY2LDIwICs3OSwzNiBAQAogCWV4aXQg
JD8KIH0KIAordmNfd2xjbGlwYm9hcmRfY29weSgpIHsKKwlpZiBbICIkc2VsIiA9ICJwcmltYXJ5
IiBdOyB0aGVuCisJCXdsLWNvcHkgLS1wcmltYXJ5IC10IFRFWFQKKwllbHNlCisJCXdsLWNvcHkg
LXQgVEVYVAorCWZpCit9CisKK3ZjX3dsY2xpcGJvYXJkX3Bhc3RlKCkgeworCWlmIFsgIiRzZWwi
ID0gInByaW1hcnkiIF07IHRoZW4KKwkJd2wtcGFzdGUgLS1wcmltYXJ5IC10IHRleHQKKwllbHNl
CisJCXdsLXBhc3RlIC10IHRleHQKKwlmaQorfQorCiB2Y194c2VsX2NvcHkoKSB7Ci0JeHNlbCAt
YmkKKwl4c2VsIC0tIiRzZWwiIC1iaQogfQogCiB2Y194c2VsX3Bhc3RlKCkgewotCXhzZWwgLWJv
CisJeHNlbCAtLSIkc2VsIiAtYm8KIH0KIAogdmNfeGNsaXBfY29weSgpIHsKLQl4Y2xpcCAtc2Vs
ZWN0aW9uIGNsaXBib2FyZCAtaSA+L2Rldi9udWxsIDI+JjEKKwl4Y2xpcCAtc2VsZWN0aW9uICIk
c2VsIiAtaSA+L2Rldi9udWxsIDI+JjEKIH0KIAogdmNfeGNsaXBfcGFzdGUoKSB7Ci0JeGNsaXAg
LXNlbGVjdGlvbiBjbGlwYm9hcmQgLW8KKwl4Y2xpcCAtc2VsZWN0aW9uICIkc2VsIiAtbwogfQog
CiB2Y19tYWNfY29weSgpIHsKQEAgLTk4LDExICsxMjcsMTcgQEAKIAljYXQgL2Rldi9jbGlwYm9h
cmQKIH0KIAotY2FzZSAiJDEiIGluCi0JLS11c2FibGUpIHZjX3VzYWJsZTs7Ci0JLS1jb3B5KSB2
Y19jb3B5OzsKLQktLXBhc3RlKSB2Y19wYXN0ZTs7Ci0JKikgOzsKLWVzYWMKK3doaWxlIFsgJCMg
LWd0IDAgXTsgZG8KKwljYXNlICIkMSIgaW4KKwkJLS11c2FibGUpIGZuPXZjX3VzYWJsZTs7CisJ
CS0tY29weSkgZm49dmNfY29weTs7CisJCS0tcGFzdGUpIGZuPXZjX3Bhc3RlOzsKKwkJLS1zZWxl
Y3Rpb24pIHNoaWZ0OyBzZWw9IiQxIjs7CisJCSopIDs7CisJZXNhYworCXNoaWZ0Citkb25lCisK
K3NlbD0ke3NlbDotImNsaXBib2FyZCJ9ICRmbgogCiB2Y191c2FnZQpkaWZmIC11ciB2aXMtMC42
L3Zpcy1jbWRzLmMgdmlzLTAuOC92aXMtY21kcy5jCi0tLSB2aXMtMC42L3Zpcy1jbWRzLmMJMjAy
MC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC92aXMtY21kcy5jCTIwMjItMTEtMDEgMTY6NTA6
MTAKQEAgLTM2MSw2ICszNjEsOSBAQAogCQl3aW5kb3dzX2FycmFuZ2UodmlzLCBsYXlvdXQpOwog
CQlicmVhazsKIAl9CisJY2FzZSBPUFRJT05fSUdOT1JFQ0FTRToKKwkJdmlzLT5pZ25vcmVjYXNl
ID0gdG9nZ2xlID8gIXZpcy0+aWdub3JlY2FzZSA6IGFyZy5iOworCQlicmVhazsKIAlkZWZhdWx0
OgogCQlpZiAoIW9wdC0+ZnVuYykKIAkJCXJldHVybiBmYWxzZTsKQEAgLTYxNiw5ICs2MTksMTAg
QEAKIAkJfQogCX0KIAorCXN0cnVjdCB0bSB0bTsKIAl0aW1lX3Qgc3RhdGUgPSB0ZXh0X3N0YXRl
KHR4dCk7CiAJY2hhciBidWZbMzJdOwotCXN0cmZ0aW1lKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIlN0YXRl
IGZyb20gJUg6JU0iLCBsb2NhbHRpbWUoJnN0YXRlKSk7CisJc3RyZnRpbWUoYnVmLCBzaXplb2Yg
YnVmLCAiU3RhdGUgZnJvbSAlSDolTSIsIGxvY2FsdGltZV9yKCZzdGF0ZSwgJnRtKSk7CiAJdmlz
X2luZm9fc2hvdyh2aXMsICIlcyIsIGJ1Zik7CiAKIAlyZXR1cm4gcG9zICE9IEVQT1M7CmRpZmYg
LXVyIHZpcy0wLjYvdmlzLWNvcmUuaCB2aXMtMC44L3Zpcy1jb3JlLmgKLS0tIHZpcy0wLjYvdmlz
LWNvcmUuaAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L3Zpcy1jb3JlLmgJMjAyMi0x
MS0wMSAxNjo1MDoxMApAQCAtMTQsNyArMTQsNyBAQAogCiAvKiBhIG1vZGUgY29udGFpbnMgYSBz
ZXQgb2Yga2V5IGJpbmRpbmdzIHdoaWNoIGFyZSBjdXJyZW50bHkgdmFsaWQuCiAgKgotICogZWFj
aCBtb2RlIGNhbiBzcGVjaWZ5IG9uZSBwYXJlbnQgbW9kZSB3aGljaCBpcyBjb25zdWx0YXRlZCBp
ZiBhIGdpdmVuIGtleQorICogZWFjaCBtb2RlIGNhbiBzcGVjaWZ5IG9uZSBwYXJlbnQgbW9kZSB3
aGljaCBpcyBjb25zdWx0ZWQgaWYgYSBnaXZlbiBrZXkKICAqIGlzIG5vdCBmb3VuZCBpbiB0aGUg
Y3VycmVudCBtb2RlLiBoZW5jZSB0aGUgbW9kZXMgZm9ybSBhIHRyZWUgd2hpY2ggaXMKICAqIHNl
YXJjaGVkIGZyb20gdGhlIGN1cnJlbnQgbW9kZSB1cCB0b3dhcmRzIHRoZSByb290IG1vZGUgdW50
aWwgYSB2YWxpZCBiaW5kaW5nCiAgKiBpcyBmb3VuZC4KQEAgLTYzLDEzICs2MywxMyBAQAogfTsK
IAogdHlwZWRlZiBzdHJ1Y3QgewotCS8qIG9wZXJhdG9yIGxvZ2ljLCByZXR1cm5zIG5ldyBjdXJz
b3IgcG9zaXRpb24sIGlmIEVQT1MgaXMKKwkvKiBvcGVyYXRvciBsb2dpYywgcmV0dXJucyBuZXcg
Y3Vyc29yIHBvc2l0aW9uLCBpZiBFUE9TCiAJICogdGhlIGN1cnNvciBpcyBkaXNwb3NlZCAoZXhj
ZXB0IGlmIGl0IGlzIHRoZSBwcmltYXJ5IG9uZSkgKi8KIAlWaXNPcGVyYXRvckZ1bmN0aW9uICpm
dW5jOwogCXZvaWQgKmNvbnRleHQ7CiB9IE9wZXJhdG9yOwogCi10eXBlZGVmIHN0cnVjdCB7IC8q
IE1vdGlvbiBpbXBsZW1lbnRhdGlvbiwgdGFrZXMgYSBjdXJzb3IgcG9zdGlvbiBhbmQgcmV0dXJu
cyBhIG5ldyBvbmUgKi8KK3R5cGVkZWYgc3RydWN0IHsgLyogTW90aW9uIGltcGxlbWVudGF0aW9u
LCB0YWtlcyBhIGN1cnNvciBwb3NpdGlvbiBhbmQgcmV0dXJucyBhIG5ldyBvbmUgKi8KIAkvKiBU
T0RPOiBtZXJnZSB0eXBlcyAvIHVzZSB1bmlvbiB0byBzYXZlIHNwYWNlICovCiAJc2l6ZV90ICgq
Y3VyKShTZWxlY3Rpb24qKTsKIAlzaXplX3QgKCp0eHQpKFRleHQqLCBzaXplX3QgcG9zKTsKQEAg
LTE1NCw3ICsxNTQsNyBAQAogfTsKIAogc3RydWN0IFdpbiB7Ci0JVmlzICp2aXM7ICAgICAgICAg
ICAgICAgLyogZWRpdG9yIGluc3RhbmNlIHRvIHdoaWNoIHRoaXMgd2luZG93IGJlbG9uZ3MgdG8g
Ki8KKwlWaXMgKnZpczsgICAgICAgICAgICAgICAvKiBlZGl0b3IgaW5zdGFuY2UgdG8gd2hpY2gg
dGhpcyB3aW5kb3cgYmVsb25ncyAqLwogCVVpV2luICp1aTsgICAgICAgICAgICAgIC8qIHVpIG9i
amVjdCBoYW5kbGluZyB2aXN1YWwgYXBwZWFyYW5jZSBvZiB0aGlzIHdpbmRvdyAqLwogCUZpbGUg
KmZpbGU7ICAgICAgICAgICAgIC8qIGZpbGUgYmVpbmcgZGlzcGxheWVkIGluIHRoaXMgd2luZG93
ICovCiAJVmlldyAqdmlldzsgICAgICAgICAgICAgLyogY3VycmVudGx5IGRpc3BsYXllZCBwYXJ0
IG9mIHVuZGVybHlpbmcgdGV4dCAqLwpAQCAtMTY3LDcgKzE2Nyw3IEBACiB9OwogCiBzdHJ1Y3Qg
VmlzIHsKLQlVaSAqdWk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdXNlciBpbnRl
cmZhY2UgcmVwc29uc2libGUgZm9yIHZpc3VhbCBhcHBlYXJhbmNlICovCisJVWkgKnVpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVzZXIgaW50ZXJmYWNlIHJlc3BvbnNpYmxlIGZv
ciB2aXN1YWwgYXBwZWFyYW5jZSAqLwogCUZpbGUgKmZpbGVzOyAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBhbGwgZmlsZXMgY3VycmVudGx5IG1hbmFnZWQgYnkgdGhpcyBlZGl0b3IgaW5zdGFu
Y2UgKi8KIAlGaWxlICpjb21tYW5kX2ZpbGU7ICAgICAgICAgICAgICAgICAgLyogc3BlY2lhbCBp
bnRlcm5hbCBmaWxlIHVzZWQgdG8gc3RvcmUgOi1jb21tYW5kIHByb21wdCAqLwogCUZpbGUgKnNl
YXJjaF9maWxlOyAgICAgICAgICAgICAgICAgICAvKiBzcGVjaWFsIGludGVybmFsIGZpbGUgdXNl
ZCB0byBzdG9yZSAvLD8gc2VhcmNoIHByb21wdCAqLwpAQCAtMjAxLDI2ICsyMDEsMjcgQEAKIAlB
Y3Rpb24gYWN0aW9uOyAgICAgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBhY3Rpb24gd2hp
Y2ggaXMgaW4gcHJvZ3Jlc3MgKi8KIAlBY3Rpb24gYWN0aW9uX3ByZXY7ICAgICAgICAgICAgICAg
ICAgLyogbGFzdCBvcGVyYXRvciBhY3Rpb24gdXNlZCBieSB0aGUgcmVwZWF0IChkb3QpIGNvbW1h
bmQgKi8KIAlNb2RlICptb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3VycmVudGx5
IGFjdGl2ZSBtb2RlLCB1c2VkIHRvIHNlYXJjaCBmb3Iga2V5YmluZGluZ3MgKi8KLQlNb2RlICpt
b2RlX3ByZXY7ICAgICAgICAgICAgICAgICAgICAgLyogcHJldmlzb3VseSBhY3RpdmUgdXNlciBt
b2RlICovCisJTW9kZSAqbW9kZV9wcmV2OyAgICAgICAgICAgICAgICAgICAgIC8qIHByZXZpb3Vz
bHkgYWN0aXZlIHVzZXIgbW9kZSAqLwogCWJvb2wgaW5pdGlhbGl6ZWQ7ICAgICAgICAgICAgICAg
ICAgICAvKiB3aGV0aGVyIFVJIGFuZCBMdWEgaW50ZWdyYXRpb24gaGFzIGJlZW4gaW5pdGlhbGl6
ZWQgKi8KIAlpbnQgbmVzdGluZ19sZXZlbDsgICAgICAgICAgICAgICAgICAgLyogcGFyc2luZyBz
dGF0ZSB0byBob2xkIGtlZXAgdHJhY2sgb2YgeyB9IG5lc3RpbmcgbGV2ZWwgKi8KIAl2b2xhdGls
ZSBib29sIHJ1bm5pbmc7ICAgICAgICAgICAgICAgLyogZXhpdCBtYWluIGxvb3Agb25jZSB0aGlz
IGJlY29tZXMgZmFsc2UgKi8KIAlpbnQgZXhpdF9zdGF0dXM7ICAgICAgICAgICAgICAgICAgICAg
LyogZXhpdCBzdGF0dXMgd2hlbiB0ZXJtaW5hdGluZyBtYWluIGxvb3AgKi8KIAl2b2xhdGlsZSBz
aWdfYXRvbWljX3QgaW50ZXJydXB0ZWQ7ICAgLyogYWJvcnQgY29tbWFuZCAoU0lHSU5UIG9jY3Vy
ZWQpICovCi0Jdm9sYXRpbGUgc2lnX2F0b21pY190IHNpZ2J1czsgICAgICAgIC8qIG9uZSBvZiB0
aGUgbWVtb3J5IG1hcHBlZCByZWdpb24gYmVjYW1lIHVuYXZhaWxhYmxlIChTSUdCVVMpICovCisJ
dm9sYXRpbGUgc2lnX2F0b21pY190IHNpZ2J1czsgICAgICAgIC8qIG9uZSBvZiB0aGUgbWVtb3J5
IG1hcHBlZCByZWdpb25zIGJlY2FtZSB1bmF2YWlsYWJsZSAoU0lHQlVTKSAqLwogCXZvbGF0aWxl
IHNpZ19hdG9taWNfdCBuZWVkX3Jlc2l6ZTsgICAvKiBuZWVkIHRvIHJlc2l6ZSBVSSAoU0lHV0lO
Q0ggb2NjdXJlZCkgKi8KIAl2b2xhdGlsZSBzaWdfYXRvbWljX3QgcmVzdW1lOyAgICAgICAgLyog
bmVlZCB0byByZXN1bWUgVUkgKFNJR0NPTlQgb2NjdXJlZCkgKi8KIAl2b2xhdGlsZSBzaWdfYXRv
bWljX3QgdGVybWluYXRlOyAgICAgLyogbmVlZCB0byB0ZXJtaW5hdGUgd2Ugd2VyZSBiZWluZyBr
aWxsZWQgYnkgU0lHVEVSTSAqLwogCXNpZ2ptcF9idWYgc2lnYnVzX2ptcGJ1ZjsgICAgICAgICAg
ICAvKiB1c2VkIHRvIGp1bXAgYmFjayB0byBhIGtub3duIGdvb2Qgc3RhdGUgaW4gdGhlIG1haW5s
b29wIGFmdGVyIChTSUdCVVMpICovCiAJTWFwICphY3Rpb25zOyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHJlZ2lzdGVyZWQgZWRpdG9yIGFjdGlvbnMgLyBzcGVjaWFsIGtleXMgY29tbWFuZHMg
Ki8KIAlBcnJheSBhY3Rpb25zX3VzZXI7ICAgICAgICAgICAgICAgICAgLyogZHluYW1pY2FsbHkg
YWxsb2NhdGVkIGVkaXRvciBhY3Rpb25zICovCi0JbHVhX1N0YXRlICpsdWE7ICAgICAgICAgICAg
ICAgICAgICAgIC8qIGx1YSBjb250ZXh0IHVzZWQgZm9yIHN5bnRheCBoaWdobGlndGhpbmcgKi8K
KwlsdWFfU3RhdGUgKmx1YTsgICAgICAgICAgICAgICAgICAgICAgLyogbHVhIGNvbnRleHQgdXNl
ZCBmb3Igc3ludGF4IGhpZ2hsaWdodGluZyAqLwogCWVudW0gVGV4dExvYWRNZXRob2QgbG9hZF9t
ZXRob2Q7ICAgICAvKiBob3cgZXhpc3RpbmcgZmlsZXMgc2hvdWxkIGJlIGxvYWRlZCAqLwogCVZp
c0V2ZW50ICpldmVudDsKIAlBcnJheSBvcGVyYXRvcnM7CiAJQXJyYXkgbW90aW9uczsKIAlBcnJh
eSB0ZXh0b2JqZWN0czsKIAlBcnJheSBiaW5kaW5nczsKKwlib29sIGlnbm9yZWNhc2U7ICAgICAg
ICAgICAgICAgICAgICAgLyogd2hldGhlciB0byBpZ25vcmUgY2FzZSB3aGVuIHNlYXJjaGluZyAq
LwogfTsKIAogZW51bSBWaXNFdmVudHMgewpAQCAtMjM1LDYgKzIzNiw3IEBACiAJVklTX0VWRU5U
X1dJTl9DTE9TRSwKIAlWSVNfRVZFTlRfV0lOX0hJR0hMSUdIVCwKIAlWSVNfRVZFTlRfV0lOX1NU
QVRVUywKKwlWSVNfRVZFTlRfVEVSTV9DU0ksCiB9OwogCiBib29sIHZpc19ldmVudF9lbWl0KFZp
cyosIGVudW0gVmlzRXZlbnRzLCAuLi4pOwpAQCAtMjQ2LDcgKzI0OCw3IEBACiAKIHR5cGVkZWYg
TWFya0RlZiBSZWdpc3RlckRlZjsKIAotLyoqIHN0dWZmIHVzZWQgYnkgbXVsdGlwbGUgb2YgdGhl
IHZpcy0qIGZpbGVzICovCisvKiogc3R1ZmYgdXNlZCBieSBzZXZlcmFsIG9mIHRoZSB2aXMtKiBm
aWxlcyAqLwogCiBleHRlcm4gTW9kZSB2aXNfbW9kZXNbVklTX01PREVfSU5WQUxJRF07CiBleHRl
cm4gY29uc3QgTW92ZW1lbnQgdmlzX21vdGlvbnNbVklTX01PVkVfSU5WQUxJRF07CmRpZmYgLXVy
IHZpcy0wLjYvdmlzLWx1YS5jIHZpcy0wLjgvdmlzLWx1YS5jCi0tLSB2aXMtMC42L3Zpcy1sdWEu
YwkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L3Zpcy1sdWEuYwkyMDIyLTExLTAxIDE2
OjUwOjEwCkBAIC0xNjEsNiArMTYxLDcgQEAKIHZvaWQgdmlzX2x1YV93aW5fY2xvc2UoVmlzICp2
aXMsIFdpbiAqd2luKSB7IH0KIHZvaWQgdmlzX2x1YV93aW5faGlnaGxpZ2h0KFZpcyAqdmlzLCBX
aW4gKndpbikgeyB9CiB2b2lkIHZpc19sdWFfd2luX3N0YXR1cyhWaXMgKnZpcywgV2luICp3aW4p
IHsgd2luZG93X3N0YXR1c191cGRhdGUodmlzLCB3aW4pOyB9Cit2b2lkIHZpc19sdWFfdGVybV9j
c2koVmlzICp2aXMsIGNvbnN0IGxvbmcgKmNzaSkgeyB9CiAKICNlbHNlCiAKQEAgLTMzMCw3ICsz
MzEsNyBAQAogCWx1YV9nZXRmaWVsZChMLCBMVUFfUkVHSVNUUllJTkRFWCwgInZpcy50eXBlcyIp
OwogCWx1YV9nZXRtZXRhdGFibGUoTCwgLTIpOwogCWx1YV9nZXR0YWJsZShMLCAtMik7Ci0JLy8g
WFhYOiBpbiB0aGVvcnkgc3RyaW5nIG1pZ2h0IGJlY29tZSBpbnZhbGlkIHdoZW4gcG9wZWQgZnJv
bSBzdGFjaworCS8vIFhYWDogaW4gdGhlb3J5IHN0cmluZyBtaWdodCBiZWNvbWUgaW52YWxpZCB3
aGVuIHBvcHBlZCBmcm9tIHN0YWNrCiAJY29uc3QgY2hhciAqdHlwZSA9IGx1YV90b3N0cmluZyhM
LCAtMSk7CiAJbHVhX3BvcChMLCAyKTsKIAlyZXR1cm4gdHlwZTsKQEAgLTY3NSwzMCArNjc2LDI4
IEBACiAgKiBAdXNhZ2UKICAqIGxvY2FsIG1hcmtzID0gdmlzLndpbi5tYXJrcwogICogZm9yIG5h
bWUgaW4gdmlzOm1hcmtfbmFtZXMoKSBkbwotICoJbG9jYWwgbWFyayA9IG1hcmtzW25hbWVdCi0g
Kglmb3IgaSA9IDEsICNtYXJrIGRvCisgKiAJbG9jYWwgbWFyayA9IG1hcmtzW25hbWVdCisgKiAJ
Zm9yIGkgPSAxLCAjbWFyayBkbwogICogCQktLSBkbyBzb210aGluZyB3aXRoOiBuYW1lLCBtYXJr
W2ldLnN0YXJ0LCBtYXJrW2ldLmZpbmlzaAotICoJZW5kCisgKiAJZW5kCiAgKiBlbmQKICAqLwog
c3RhdGljIGludCBtYXJrX25hbWVzX2l0ZXIobHVhX1N0YXRlICpMKTsKIHN0YXRpYyBpbnQgbWFy
a19uYW1lcyhsdWFfU3RhdGUgKkwpIHsKKwlWaXMgKnZpcyA9IG9ial9yZWZfY2hlY2soTCwgMSwg
InZpcyIpOworCWx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCB2aXMpOwogCWVudW0gVmlzTWFyayAq
aGFuZGxlID0gbHVhX25ld3VzZXJkYXRhKEwsIHNpemVvZiAqaGFuZGxlKTsKIAkqaGFuZGxlID0g
MDsKLQlsdWFfcHVzaGNjbG9zdXJlKEwsIG1hcmtfbmFtZXNfaXRlciwgMSk7CisJbHVhX3B1c2hj
Y2xvc3VyZShMLCBtYXJrX25hbWVzX2l0ZXIsIDIpOwogCXJldHVybiAxOwogfQogCiBzdGF0aWMg
aW50IG1hcmtfbmFtZXNfaXRlcihsdWFfU3RhdGUgKkwpIHsKLQljaGFyIG1hcmsgPSAnXDAnOwot
CWVudW0gVmlzTWFyayAqaGFuZGxlID0gbHVhX3RvdXNlcmRhdGEoTCwgbHVhX3VwdmFsdWVpbmRl
eCgxKSk7Ci0JaWYgKCpoYW5kbGUgPCBMRU5HVEgodmlzX21hcmtzKSkKLQkJbWFyayA9IHZpc19t
YXJrc1sqaGFuZGxlXS5uYW1lOwotCWVsc2UgaWYgKFZJU19NQVJLX2EgPD0gKmhhbmRsZSAmJiAq
aGFuZGxlIDw9IFZJU19NQVJLX3opCi0JCW1hcmsgPSAnYScgKyAqaGFuZGxlIC0gVklTX01BUktf
YTsKKwlWaXMgKnZpcyA9IGx1YV90b3VzZXJkYXRhKEwsIGx1YV91cHZhbHVlaW5kZXgoMSkpOwor
CWVudW0gVmlzTWFyayAqaGFuZGxlID0gbHVhX3RvdXNlcmRhdGEoTCwgbHVhX3VwdmFsdWVpbmRl
eCgyKSk7CisJY2hhciBtYXJrID0gdmlzX21hcmtfdG8odmlzLCAqaGFuZGxlKTsKIAlpZiAobWFy
aykgewotCQljaGFyIG5hbWVbMl0gPSB7IG1hcmssICdcMCcgfTsKLQkJbHVhX3B1c2hzdHJpbmco
TCwgbmFtZSk7CisJCWx1YV9wdXNobHN0cmluZyhMLCAmbWFyaywgMSk7CiAJCSgqaGFuZGxlKSsr
OwogCQlyZXR1cm4gMTsKIAl9CkBAIC03MTksMjIgKzcxOCwyMCBAQAogICovCiBzdGF0aWMgaW50
IHJlZ2lzdGVyX25hbWVzX2l0ZXIobHVhX1N0YXRlICpMKTsKIHN0YXRpYyBpbnQgcmVnaXN0ZXJf
bmFtZXMobHVhX1N0YXRlICpMKSB7CisJVmlzICp2aXMgPSBvYmpfcmVmX2NoZWNrKEwsIDEsICJ2
aXMiKTsKKwlsdWFfcHVzaGxpZ2h0dXNlcmRhdGEoTCwgdmlzKTsKIAllbnVtIFZpc1JlZ2lzdGVy
ICpoYW5kbGUgPSBsdWFfbmV3dXNlcmRhdGEoTCwgc2l6ZW9mICpoYW5kbGUpOwogCSpoYW5kbGUg
PSAwOwotCWx1YV9wdXNoY2Nsb3N1cmUoTCwgcmVnaXN0ZXJfbmFtZXNfaXRlciwgMSk7CisJbHVh
X3B1c2hjY2xvc3VyZShMLCByZWdpc3Rlcl9uYW1lc19pdGVyLCAyKTsKIAlyZXR1cm4gMTsKIH0K
IAogc3RhdGljIGludCByZWdpc3Rlcl9uYW1lc19pdGVyKGx1YV9TdGF0ZSAqTCkgewotCWNoYXIg
cmVnID0gJ1wwJzsKLQllbnVtIFZpc1JlZ2lzdGVyICpoYW5kbGUgPSBsdWFfdG91c2VyZGF0YShM
LCBsdWFfdXB2YWx1ZWluZGV4KDEpKTsKLQlpZiAoKmhhbmRsZSA8IExFTkdUSCh2aXNfcmVnaXN0
ZXJzKSkKLQkJcmVnID0gdmlzX3JlZ2lzdGVyc1sqaGFuZGxlXS5uYW1lOwotCWVsc2UgaWYgKFZJ
U19SRUdfYSA8PSAqaGFuZGxlICYmICpoYW5kbGUgPD0gVklTX1JFR196KQotCQlyZWcgPSAnYScg
KyAqaGFuZGxlIC0gVklTX1JFR19hOworCVZpcyAqdmlzID0gbHVhX3RvdXNlcmRhdGEoTCwgbHVh
X3VwdmFsdWVpbmRleCgxKSk7CisJZW51bSBWaXNSZWdpc3RlciAqaGFuZGxlID0gbHVhX3RvdXNl
cmRhdGEoTCwgbHVhX3VwdmFsdWVpbmRleCgyKSk7CisJY2hhciByZWcgPSB2aXNfcmVnaXN0ZXJf
dG8odmlzLCAqaGFuZGxlKTsKIAlpZiAocmVnKSB7Ci0JCWNoYXIgbmFtZVsyXSA9IHsgcmVnLCAn
XDAnIH07Ci0JCWx1YV9wdXNoc3RyaW5nKEwsIG5hbWUpOworCQlsdWFfcHVzaGxzdHJpbmcoTCwg
JnJlZywgMSk7CiAJCSgqaGFuZGxlKSsrOwogCQlyZXR1cm4gMTsKIAl9CkBAIC03NjEsNyArNzU4
LDcgQEAKICAqIERpc3BsYXkgYSBzaG9ydCBtZXNzYWdlLgogICoKICAqIFRoZSBzaW5nbGUgbGlu
ZSBtZXNzYWdlIHdpbGwgYmUgZGlzcGxheWVkIGF0IHRoZSBib3R0b20gb2YKLSAqIHRoZSBzY3Jl
biBhbmQgYXV0b21hdGljYWxseSBoaWRkZW4gb25jZSBhIGtleSBpcyBwcmVzc2VkLgorICogdGhl
IHNjcmVlbiBhbmQgYXV0b21hdGljYWxseSBoaWRkZW4gb25jZSBhIGtleSBpcyBwcmVzc2VkLgog
ICoKICAqIEBmdW5jdGlvbiBpbmZvCiAgKiBAdHBhcmFtIHN0cmluZyBtZXNzYWdlIHRoZSBtZXNz
YWdlIHRvIGRpc3BsYXkKQEAgLTEzMTIsNyArMTMwOSw3IEBACiAgKiBldmVudHVhbGx5IGhhbmRz
IG92ZXIgY29udHJvbCB0byB0aGUgZWRpdG9yIGNvcmUuIFRoZSBleGl0IHN0YXR1cwogICogb2Yg
dGhlIG1vc3QgcmVjZW50IGNhbGwgaXMgdXNlZC4KICAqCi0gKiBBbGwgdW5zYXZlZCBjaGFuZXMg
d2lsbCBiZSBsb3N0IQorICogQWxsIHVuc2F2ZWQgY2hhbmdlcyB3aWxsIGJlIGxvc3QhCiAgKgog
ICogQGZ1bmN0aW9uIGV4aXQKICAqIEB0cGFyYW0gaW50IGNvZGUgdGhlIGV4aXQgc3RhdHVzIHJl
dHVybmVkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtCkBAIC0xMzYzLDcgKzEzNjAsNyBAQAogICoK
ICAqIFdpbGwgdHJpZ2dlciByZWRyYXcgZXZlbnRzLCBtYWtlIHN1cmUgdG8gYXZvaWQgcmVjdXJz
aXZlIGV2ZW50cy4KICAqCi0gKiBAZnVuY3Rpb24gZHJhdworICogQGZ1bmN0aW9uIHJlZHJhdwog
ICovCiBzdGF0aWMgaW50IHJlZHJhdyhsdWFfU3RhdGUgKkwpIHsKIAlWaXMgKnZpcyA9IG9ial9y
ZWZfY2hlY2soTCwgMSwgInZpcyIpOwpAQCAtMTM4Nyw2ICsxMzg0LDE0IEBACiAgKiBDdXJyZW50
bHkgdW5jb25zdW1lZCBrZXlzIGluIHRoZSBpbnB1dCBxdWV1ZS4KICAqIEB0ZmllbGQgc3RyaW5n
IGlucHV0X3F1ZXVlCiAgKi8KKy8qKioKKyAqIFJlZ2lzdGVyIG5hbWUgaW4gdXNlLgorICogQHRm
aWVsZCBzdHJpbmcgcmVnaXN0ZXIKKyAqLworLyoqKgorICogTWFyayBuYW1lIGluIHVzZS4KKyAq
IEB0ZmllbGQgc3RyaW5nIG1hcmsKKyAqLwogc3RhdGljIGludCB2aXNfaW5kZXgobHVhX1N0YXRl
ICpMKSB7CiAJVmlzICp2aXMgPSBvYmpfcmVmX2NoZWNrKEwsIDEsICJ2aXMiKTsKIApAQCAtMTQy
NCwxMSArMTQyOSwyMyBAQAogCQkJcmV0dXJuIDE7CiAJCX0KIAorCQlpZiAoc3RyY21wKGtleSwg
InJlZ2lzdGVyIikgPT0gMCkgeworCQkJY2hhciBuYW1lID0gdmlzX3JlZ2lzdGVyX3RvKHZpcywg
dmlzX3JlZ2lzdGVyX3VzZWQodmlzKSk7CisJCQlsdWFfcHVzaGxzdHJpbmcoTCwgJm5hbWUsIDEp
OworCQkJcmV0dXJuIDE7CisJCX0KKwogCQlpZiAoc3RyY21wKGtleSwgInJlZ2lzdGVycyIpID09
IDApIHsKIAkJCW9ial9yZWZfbmV3KEwsIHZpcy0+dWksIFZJU19MVUFfVFlQRV9SRUdJU1RFUlMp
OwogCQkJcmV0dXJuIDE7CiAJCX0KIAorCQlpZiAoc3RyY21wKGtleSwgIm1hcmsiKSA9PSAwKSB7
CisJCQljaGFyIG5hbWUgPSB2aXNfbWFya190byh2aXMsIHZpc19tYXJrX3VzZWQodmlzKSk7CisJ
CQlsdWFfcHVzaGxzdHJpbmcoTCwgJm5hbWUsIDEpOworCQkJcmV0dXJuIDE7CisJCX0KKwogCQlp
ZiAoc3RyY21wKGtleSwgInVpIikgPT0gMCkgewogCQkJb2JqX3JlZl9uZXcoTCwgdmlzLT51aSwg
VklTX0xVQV9UWVBFX1VJKTsKIAkJCXJldHVybiAxOwpAQCAtMTQ2Miw2ICsxNDc5LDIwIEBACiAJ
CQl2aXNfd2luZG93X2ZvY3VzKG9ial9yZWZfY2hlY2soTCwgMywgVklTX0xVQV9UWVBFX1dJTkRP
VykpOwogCQkJcmV0dXJuIDA7CiAJCX0KKworCQlpZiAoc3RyY21wKGtleSwgInJlZ2lzdGVyIikg
PT0gMCkgeworCQkJY29uc3QgY2hhciAqbmFtZSA9IGx1YUxfY2hlY2tzdHJpbmcoTCwgMyk7CisJ
CQlpZiAoc3RybGVuKG5hbWUpID09IDEpCisJCQkJdmlzX3JlZ2lzdGVyKHZpcywgdmlzX3JlZ2lz
dGVyX2Zyb20odmlzLCBuYW1lWzBdKSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJCWlmIChzdHJj
bXAoa2V5LCAibWFyayIpID09IDApIHsKKwkJCWNvbnN0IGNoYXIgKm5hbWUgPSBsdWFMX2NoZWNr
c3RyaW5nKEwsIDMpOworCQkJaWYgKHN0cmxlbihuYW1lKSA9PSAxKQorCQkJCXZpc19tYXJrKHZp
cywgdmlzX21hcmtfZnJvbSh2aXMsIG5hbWVbMF0pKTsKKwkJCXJldHVybiAwOworCQl9CiAJfQog
CXJldHVybiBuZXdpbmRleF9jb21tb24oTCk7CiB9CkBAIC0yMDY2LDYgKzIwOTcsMTAgQEAKICAq
IEZpbGUgc3RhdGUuCiAgKiBAdGZpZWxkIGJvb2wgbW9kaWZpZWQgd2hldGhlciB0aGUgZmlsZSBj
b250YWlucyB1bnNhdmVkIGNoYW5nZXMKICAqLworLyoqKgorICogRmlsZSBwZXJtaXNzaW9uLgor
ICogQHRmaWVsZCBpbnQgcGVybWlzc2lvbiB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXMgb2Yg
dGhlIG1vc3QgcmVjZW50IGxvYWQvc2F2ZQorICovCiBzdGF0aWMgaW50IGZpbGVfaW5kZXgobHVh
X1N0YXRlICpMKSB7CiAJRmlsZSAqZmlsZSA9IG9ial9yZWZfY2hlY2soTCwgMSwgVklTX0xVQV9U
WVBFX0ZJTEUpOwogCkBAIC0yMDk1LDExICsyMTMwLDM4IEBACiAJCQlsdWFfcHVzaGJvb2xlYW4o
TCwgdGV4dF9tb2RpZmllZChmaWxlLT50ZXh0KSk7CiAJCQlyZXR1cm4gMTsKIAkJfQorCisJCWlm
IChzdHJjbXAoa2V5LCAicGVybWlzc2lvbiIpID09IDApIHsKKwkJCXN0cnVjdCBzdGF0IHN0YXQg
PSB0ZXh0X3N0YXQoZmlsZS0+dGV4dCk7CisJCQlsdWFfcHVzaHVuc2lnbmVkKEwsIHN0YXQuc3Rf
bW9kZSAmIDA3NzcpOworCQkJcmV0dXJuIDE7CisJCX0KIAl9CiAKIAlyZXR1cm4gaW5kZXhfY29t
bW9uKEwpOwogfQogCitzdGF0aWMgaW50IGZpbGVfbmV3aW5kZXgobHVhX1N0YXRlICpMKSB7CisJ
RmlsZSAqZmlsZSA9IG9ial9yZWZfY2hlY2soTCwgMSwgVklTX0xVQV9UWVBFX0ZJTEUpOworCisJ
aWYgKGx1YV9pc3N0cmluZyhMLCAyKSkgeworCQljb25zdCBjaGFyICprZXkgPSBsdWFfdG9zdHJp
bmcoTCwgMik7CisKKwkJaWYgKHN0cmNtcChrZXksICJtb2RpZmllZCIpID09IDApIHsKKwkJCWJv
b2wgbW9kaWZpZWQgPSBsdWFfaXNib29sZWFuKEwsIDMpICYmIGx1YV90b2Jvb2xlYW4oTCwgMyk7
CisJCQlpZiAobW9kaWZpZWQpIHsKKwkJCQl0ZXh0X2luc2VydChmaWxlLT50ZXh0LCAwLCAiICIs
IDEpOworCQkJCXRleHRfZGVsZXRlKGZpbGUtPnRleHQsIDAsIDEpOworCQkJfSBlbHNlIHsKKwkJ
CQl0ZXh0X3NhdmUoZmlsZS0+dGV4dCwgTlVMTCk7CisJCQl9CisJCQlyZXR1cm4gMDsKKwkJfQor
CX0KKworCXJldHVybiBuZXdpbmRleF9jb21tb24oTCk7Cit9CisKIC8qKioKICAqIEluc2VydCBk
YXRhIGF0IHBvc2l0aW9uLgogICogQGZ1bmN0aW9uIGluc2VydApAQCAtMjI4MSw3ICsyMzQzLDcg
QEAKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBsdWFMX1JlZyBmaWxlX2Z1bmNzW10gPSB7CiAJeyAi
X19pbmRleCIsIGZpbGVfaW5kZXggfSwKLQl7ICJfX25ld2luZGV4IiwgbmV3aW5kZXhfY29tbW9u
IH0sCisJeyAiX19uZXdpbmRleCIsIGZpbGVfbmV3aW5kZXggfSwKIAl7ICJpbnNlcnQiLCBmaWxl
X2luc2VydCB9LAogCXsgImRlbGV0ZSIsIGZpbGVfZGVsZXRlIH0sCiAJeyAibGluZXNfaXRlcmF0
b3IiLCBmaWxlX2xpbmVzX2l0ZXJhdG9yIH0sCkBAIC0yODYwLDcgKzI5MjIsNyBAQAogICogSW5w
dXQga2V5IGV2ZW50IGluIGVpdGhlciBpbnB1dCBvciByZXBsYWNlIG1vZGUuCiAgKiBAZnVuY3Rp
b24gaW5wdXQKICAqIEB0cGFyYW0gc3RyaW5nIGtleQotICogQHRyZXR1cm4gYm9vbCB3aGV0aGVy
IHRoZSBrZXkgd2FzIGNvc3VtZWQgb3Igbm90CisgKiBAdHJldHVybiBib29sIHdoZXRoZXIgdGhl
IGtleSB3YXMgY29uc3VtZWQgb3Igbm90CiAgKi8KIHN0YXRpYyBib29sIHZpc19sdWFfaW5wdXQo
VmlzICp2aXMsIGNvbnN0IGNoYXIgKmtleSwgc2l6ZV90IGxlbikgewogCWx1YV9TdGF0ZSAqTCA9
IHZpcy0+bHVhOwpAQCAtMzA1MCw2ICszMTEyLDI2IEBACiAJCXBjYWxsKHZpcywgTCwgMSwgMCk7
CiAJfSBlbHNlIHsKIAkJd2luZG93X3N0YXR1c191cGRhdGUodmlzLCB3aW4pOworCX0KKwlsdWFf
cG9wKEwsIDEpOworfQorCisvKioqCisgKiBDU0kgY29tbWFuZCByZWNlaXZlZCBmcm9tIHRlcm1p
bmFsLgorICogQGZ1bmN0aW9uIHRlcm1fY3NpCisgKiBAcGFyYW0gTGlzdCBvZiBDU0kgcGFyYW1l
dGVycworICovCit2b2lkIHZpc19sdWFfdGVybV9jc2koVmlzICp2aXMsIGNvbnN0IGxvbmcgKmNz
aSkgeworCWx1YV9TdGF0ZSAqTCA9IHZpcy0+bHVhOworCWlmICghTCkKKwkJcmV0dXJuOworCXZp
c19sdWFfZXZlbnRfZ2V0KEwsICJ0ZXJtX2NzaSIpOworCWlmIChsdWFfaXNmdW5jdGlvbihMLCAt
MSkpIHsKKwkJaW50IG5hcmdzID0gY3NpWzFdOworCQlsdWFfcHVzaGludGVnZXIoTCwgY3NpWzBd
KTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgaSsrKQorCQkJbHVhX3B1c2hpbnRlZ2Vy
KEwsIGNzaVsyICsgaV0pOworCQlwY2FsbCh2aXMsIEwsIDEgKyBuYXJncywgMCk7CiAJfQogCWx1
YV9wb3AoTCwgMSk7CiB9CmRpZmYgLXVyIHZpcy0wLjYvdmlzLWx1YS5oIHZpcy0wLjgvdmlzLWx1
YS5oCi0tLSB2aXMtMC42L3Zpcy1sdWEuaAkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44
L3Zpcy1sdWEuaAkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC0zNyw1ICszNyw2IEBACiB2b2lkIHZp
c19sdWFfd2luX2Nsb3NlKFZpcyosIFdpbiopOwogdm9pZCB2aXNfbHVhX3dpbl9oaWdobGlnaHQo
VmlzKiwgV2luKik7CiB2b2lkIHZpc19sdWFfd2luX3N0YXR1cyhWaXMqLCBXaW4qKTsKK3ZvaWQg
dmlzX2x1YV90ZXJtX2NzaShWaXMqLCBjb25zdCBsb25nICopOwogCiAjZW5kaWYKZGlmZiAtdXIg
dmlzLTAuNi92aXMtbWFya3MuYyB2aXMtMC44L3Zpcy1tYXJrcy5jCi0tLSB2aXMtMC42L3Zpcy1t
YXJrcy5jCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvdmlzLW1hcmtzLmMJMjAyMi0x
MS0wMSAxNjo1MDoxMApAQCAtMjI2LDYgKzIyNiwxNiBAQAogCXJldHVybiBWSVNfTUFSS19JTlZB
TElEOwogfQogCitjaGFyIHZpc19tYXJrX3RvKFZpcyAqdmlzLCBlbnVtIFZpc01hcmsgbWFyaykg
eworCWlmIChWSVNfTUFSS19hIDw9IG1hcmsgJiYgbWFyayA8PSBWSVNfTUFSS196KQorCQlyZXR1
cm4gJ2EnICsgbWFyayAtIFZJU19NQVJLX2E7CisKKwlpZiAobWFyayA8IExFTkdUSCh2aXNfbWFy
a3MpKQorCQlyZXR1cm4gdmlzX21hcmtzW21hcmtdLm5hbWU7CisKKwlyZXR1cm4gJ1wwJzsKK30K
KwogY29uc3QgTWFya0RlZiB2aXNfbWFya3NbXSA9IHsKIAlbVklTX01BUktfREVGQVVMVF0gICAg
ICAgID0geyAnXCcnLCBWSVNfSEVMUCgiRGVmYXVsdCBtYXJrIikgICAgfSwKIAlbVklTX01BUktf
U0VMRUNUSU9OXSAgICAgID0geyAnXicsICBWSVNfSEVMUCgiTGFzdCBzZWxlY3Rpb25zIikgfSwK
ZGlmZiAtdXIgdmlzLTAuNi92aXMtbW90aW9ucy5jIHZpcy0wLjgvdmlzLW1vdGlvbnMuYwotLS0g
dmlzLTAuNi92aXMtbW90aW9ucy5jCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0wLjgvdmlz
LW1vdGlvbnMuYwkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC0xMTIsOCArMTEyLDM0IEBACiAJICAg
ICAgICAgICAgICAgICAgICAgICAgVklTX01PVkVfTE9OR1dPUkRfRU5EX05FWFQsIGlzc3BhY2Up
OwogfQogCi1zdGF0aWMgc2l6ZV90IHRvKFZpcyAqdmlzLCBUZXh0ICp0eHQsIHNpemVfdCBwb3Mp
IHsKK3N0YXRpYyBzaXplX3QgdG9fcmlnaHQoVmlzICp2aXMsIFRleHQgKnR4dCwgc2l6ZV90IHBv
cykgewogCWNoYXIgYzsKKwlzaXplX3QgaGl0ID0gdGV4dF9maW5kX25leHQodHh0LCBwb3MrMSwg
dmlzLT5zZWFyY2hfY2hhcik7CisJaWYgKCF0ZXh0X2J5dGVfZ2V0KHR4dCwgaGl0LCAmYykgfHwg
YyAhPSB2aXMtPnNlYXJjaF9jaGFyWzBdKQorCQlyZXR1cm4gcG9zOworCXJldHVybiBoaXQ7Cit9
CisKK3N0YXRpYyBzaXplX3QgdGlsbF9yaWdodChWaXMgKnZpcywgVGV4dCAqdHh0LCBzaXplX3Qg
cG9zKSB7CisJc2l6ZV90IGhpdCA9IHRvX3JpZ2h0KHZpcywgdHh0LCBwb3MrMSk7CisJaWYgKGhp
dCAhPSBwb3MpCisJCXJldHVybiB0ZXh0X2NoYXJfcHJldih0eHQsIGhpdCk7CisJcmV0dXJuIHBv
czsKK30KKworc3RhdGljIHNpemVfdCB0b19sZWZ0KFZpcyAqdmlzLCBUZXh0ICp0eHQsIHNpemVf
dCBwb3MpIHsKKwlyZXR1cm4gdGV4dF9maW5kX3ByZXYodHh0LCBwb3MsIHZpcy0+c2VhcmNoX2No
YXIpOworfQorCitzdGF0aWMgc2l6ZV90IHRpbGxfbGVmdChWaXMgKnZpcywgVGV4dCAqdHh0LCBz
aXplX3QgcG9zKSB7CisJc2l6ZV90IGhpdCA9IHRvX2xlZnQodmlzLCB0eHQsIHBvcy0xKTsKKwlp
ZiAoaGl0ICE9IHBvcy0xKQorCQlyZXR1cm4gdGV4dF9jaGFyX25leHQodHh0LCBoaXQpOworCXJl
dHVybiBwb3M7Cit9CisKK3N0YXRpYyBzaXplX3QgdG9fbGluZV9yaWdodChWaXMgKnZpcywgVGV4
dCAqdHh0LCBzaXplX3QgcG9zKSB7CisJY2hhciBjOwogCWlmIChwb3MgPT0gdGV4dF9saW5lX2Vu
ZCh0eHQsIHBvcykpCiAJCXJldHVybiBwb3M7CiAJc2l6ZV90IGhpdCA9IHRleHRfbGluZV9maW5k
X25leHQodHh0LCBwb3MrMSwgdmlzLT5zZWFyY2hfY2hhcik7CkBAIC0xMjIsOCArMTQ4LDggQEAK
IAlyZXR1cm4gaGl0OwogfQogCi1zdGF0aWMgc2l6ZV90IHRpbGwoVmlzICp2aXMsIFRleHQgKnR4
dCwgc2l6ZV90IHBvcykgewotCXNpemVfdCBoaXQgPSB0byh2aXMsIHR4dCwgcG9zKzEpOworc3Rh
dGljIHNpemVfdCB0aWxsX2xpbmVfcmlnaHQoVmlzICp2aXMsIFRleHQgKnR4dCwgc2l6ZV90IHBv
cykgeworCXNpemVfdCBoaXQgPSB0b19saW5lX3JpZ2h0KHZpcywgdHh0LCBwb3MrMSk7CiAJaWYg
KHBvcyA9PSB0ZXh0X2xpbmVfZW5kKHR4dCwgcG9zKSkKIAkJcmV0dXJuIHBvczsKIAlpZiAoaGl0
ICE9IHBvcykKQEAgLTEzMSwxNCArMTU3LDE0IEBACiAJcmV0dXJuIHBvczsKIH0KIAotc3RhdGlj
IHNpemVfdCB0b19sZWZ0KFZpcyAqdmlzLCBUZXh0ICp0eHQsIHNpemVfdCBwb3MpIHsKK3N0YXRp
YyBzaXplX3QgdG9fbGluZV9sZWZ0KFZpcyAqdmlzLCBUZXh0ICp0eHQsIHNpemVfdCBwb3MpIHsK
IAlyZXR1cm4gdGV4dF9saW5lX2ZpbmRfcHJldih0eHQsIHBvcywgdmlzLT5zZWFyY2hfY2hhcik7
CiB9CiAKLXN0YXRpYyBzaXplX3QgdGlsbF9sZWZ0KFZpcyAqdmlzLCBUZXh0ICp0eHQsIHNpemVf
dCBwb3MpIHsKK3N0YXRpYyBzaXplX3QgdGlsbF9saW5lX2xlZnQoVmlzICp2aXMsIFRleHQgKnR4
dCwgc2l6ZV90IHBvcykgewogCWlmIChwb3MgPT0gdGV4dF9saW5lX2JlZ2luKHR4dCwgcG9zKSkK
IAkJcmV0dXJuIHBvczsKLQlzaXplX3QgaGl0ID0gdG9fbGVmdCh2aXMsIHR4dCwgcG9zLTEpOwor
CXNpemVfdCBoaXQgPSB0b19saW5lX2xlZnQodmlzLCB0eHQsIHBvcy0xKTsKIAlpZiAoaGl0ICE9
IHBvcy0xKQogCQlyZXR1cm4gdGV4dF9jaGFyX25leHQodHh0LCBoaXQpOwogCXJldHVybiBwb3M7
CkBAIC0yOTQsMTAgKzMyMCwxNCBAQAogCQl9CiAJCWJyZWFrOwogCX0KLQljYXNlIFZJU19NT1ZF
X1JJR0hUX1RPOgotCWNhc2UgVklTX01PVkVfTEVGVF9UTzoKLQljYXNlIFZJU19NT1ZFX1JJR0hU
X1RJTEw6Ci0JY2FzZSBWSVNfTU9WRV9MRUZUX1RJTEw6CisJY2FzZSBWSVNfTU9WRV9UT19SSUdI
VDoKKwljYXNlIFZJU19NT1ZFX1RPX0xFRlQ6CisJY2FzZSBWSVNfTU9WRV9UT19MSU5FX1JJR0hU
OgorCWNhc2UgVklTX01PVkVfVE9fTElORV9MRUZUOgorCWNhc2UgVklTX01PVkVfVElMTF9SSUdI
VDoKKwljYXNlIFZJU19NT1ZFX1RJTExfTEVGVDoKKwljYXNlIFZJU19NT1ZFX1RJTExfTElORV9S
SUdIVDoKKwljYXNlIFZJU19NT1ZFX1RJTExfTElORV9MRUZUOgogCXsKIAkJY29uc3QgY2hhciAq
a2V5ID0gdmFfYXJnKGFwLCBjaGFyKik7CiAJCWlmICgha2V5KQpAQCAtMzE0LDE4ICszNDQsMzAg
QEAKIAkJYnJlYWs7CiAJY2FzZSBWSVNfTU9WRV9UT1RJTExfUkVWRVJTRToKIAkJc3dpdGNoICh2
aXMtPmxhc3RfdG90aWxsKSB7Ci0JCWNhc2UgVklTX01PVkVfUklHSFRfVE86Ci0JCQltb3Rpb24g
PSBWSVNfTU9WRV9MRUZUX1RPOworCQljYXNlIFZJU19NT1ZFX1RPX1JJR0hUOgorCQkJbW90aW9u
ID0gVklTX01PVkVfVE9fTEVGVDsKIAkJCWJyZWFrOwotCQljYXNlIFZJU19NT1ZFX0xFRlRfVE86
Ci0JCQltb3Rpb24gPSBWSVNfTU9WRV9SSUdIVF9UTzsKKwkJY2FzZSBWSVNfTU9WRV9UT19MRUZU
OgorCQkJbW90aW9uID0gVklTX01PVkVfVE9fUklHSFQ7CiAJCQlicmVhazsKLQkJY2FzZSBWSVNf
TU9WRV9SSUdIVF9USUxMOgotCQkJbW90aW9uID0gVklTX01PVkVfTEVGVF9USUxMOworCQljYXNl
IFZJU19NT1ZFX1RPX0xJTkVfUklHSFQ6CisJCQltb3Rpb24gPSBWSVNfTU9WRV9UT19MSU5FX0xF
RlQ7CiAJCQlicmVhazsKLQkJY2FzZSBWSVNfTU9WRV9MRUZUX1RJTEw6Ci0JCQltb3Rpb24gPSBW
SVNfTU9WRV9SSUdIVF9USUxMOworCQljYXNlIFZJU19NT1ZFX1RPX0xJTkVfTEVGVDoKKwkJCW1v
dGlvbiA9IFZJU19NT1ZFX1RPX0xJTkVfUklHSFQ7CiAJCQlicmVhazsKKwkJY2FzZSBWSVNfTU9W
RV9USUxMX1JJR0hUOgorCQkJbW90aW9uID0gVklTX01PVkVfVElMTF9MRUZUOworCQkJYnJlYWs7
CisJCWNhc2UgVklTX01PVkVfVElMTF9MRUZUOgorCQkJbW90aW9uID0gVklTX01PVkVfVElMTF9S
SUdIVDsKKwkJCWJyZWFrOworCQljYXNlIFZJU19NT1ZFX1RJTExfTElORV9SSUdIVDoKKwkJCW1v
dGlvbiA9IFZJU19NT1ZFX1RJTExfTElORV9MRUZUOworCQkJYnJlYWs7CisJCWNhc2UgVklTX01P
VkVfVElMTF9MSU5FX0xFRlQ6CisJCQltb3Rpb24gPSBWSVNfTU9WRV9USUxMX0xJTkVfUklHSFQ7
CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWdvdG8gZXJyOwogCQl9CkBAIC01MTUsMjAgKzU1
NywzNiBAQAogCQkudHh0ID0gbGFzdGxpbmUsCiAJCS50eXBlID0gTElORVdJU0V8TElORVdJU0Vf
SU5DTFVTSVZFfEpVTVB8SURFTVBPVEVOVCwKIAl9LAotCVtWSVNfTU9WRV9MRUZUX1RPXSA9IHsK
KwlbVklTX01PVkVfVE9fTEVGVF0gPSB7CiAJCS52aXMgPSB0b19sZWZ0LAogCQkudHlwZSA9IENP
VU5UX0VYQUNULAogCX0sCi0JW1ZJU19NT1ZFX1JJR0hUX1RPXSA9IHsKLQkJLnZpcyA9IHRvLAor
CVtWSVNfTU9WRV9UT19SSUdIVF0gPSB7CisJCS52aXMgPSB0b19yaWdodCwKIAkJLnR5cGUgPSBJ
TkNMVVNJVkV8Q09VTlRfRVhBQ1QsCiAJfSwKLQlbVklTX01PVkVfTEVGVF9USUxMXSA9IHsKKwlb
VklTX01PVkVfVE9fTElORV9MRUZUXSA9IHsKKwkJLnZpcyA9IHRvX2xpbmVfbGVmdCwKKwkJLnR5
cGUgPSBDT1VOVF9FWEFDVCwKKwl9LAorCVtWSVNfTU9WRV9UT19MSU5FX1JJR0hUXSA9IHsKKwkJ
LnZpcyA9IHRvX2xpbmVfcmlnaHQsCisJCS50eXBlID0gSU5DTFVTSVZFfENPVU5UX0VYQUNULAor
CX0sCisJW1ZJU19NT1ZFX1RJTExfTEVGVF0gPSB7CiAJCS52aXMgPSB0aWxsX2xlZnQsCiAJCS50
eXBlID0gQ09VTlRfRVhBQ1QsCiAJfSwKLQlbVklTX01PVkVfUklHSFRfVElMTF0gPSB7Ci0JCS52
aXMgPSB0aWxsLAorCVtWSVNfTU9WRV9USUxMX1JJR0hUXSA9IHsKKwkJLnZpcyA9IHRpbGxfcmln
aHQsCisJCS50eXBlID0gSU5DTFVTSVZFfENPVU5UX0VYQUNULAorCX0sCisJW1ZJU19NT1ZFX1RJ
TExfTElORV9MRUZUXSA9IHsKKwkJLnZpcyA9IHRpbGxfbGluZV9sZWZ0LAorCQkudHlwZSA9IENP
VU5UX0VYQUNULAorCX0sCisJW1ZJU19NT1ZFX1RJTExfTElORV9SSUdIVF0gPSB7CisJCS52aXMg
PSB0aWxsX2xpbmVfcmlnaHQsCiAJCS50eXBlID0gSU5DTFVTSVZFfENPVU5UX0VYQUNULAogCX0s
CiAJW1ZJU19NT1ZFX1NFQVJDSF9XT1JEX0ZPUldBUkRdID0gewpkaWZmIC11ciB2aXMtMC42L3Zp
cy1vcGVuIHZpcy0wLjgvdmlzLW9wZW4KLS0tIHZpcy0wLjYvdmlzLW9wZW4JMjAyMC0wNi0wNyAx
MzoyNToyMAorKysgdmlzLTAuOC92aXMtb3BlbgkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC04LDYg
KzgsMTUgQEAKIFZJU19NRU5VX1BST01QVD0iIgogQUxMT1dfQVVUT19TRUxFQ1Q9MQogCit3cmFw
X2RpcnMoKSB7CisJbG9jYWwgbworCisJd2hpbGUgcmVhZCBvCisJZG8KKwkJWyAtZCAiJG8iIF0g
JiYgcHJpbnRmICIlcy9cbiIgIiRvIiB8fCBwcmludGYgIiVzXG4iICIkbyIKKwlkb25lCit9CisK
IHdoaWxlIFsgJCMgLWd0IDAgXTsgZG8KIAljYXNlICIkMSIgaW4KIAktaHwtLWhlbHApCkBAIC02
Myw3ICs3Miw3IEBACiAKICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIGJ1bmNoIG9mIG9wdGlv
bnMgd2UgbmVlZCB0byBwcmVzZW50IHRvIHRoZQogIyB1c2VyIHNvIHRoZXkgY2FuIHBpY2sgb25l
LgotQ0hPSUNFPSQocHJpbnRmICIlc1xuIiAiJEAiIHwgdmlzLW1lbnUgLWIgLXAgIiRWSVNfTUVO
VV9QUk9NUFQiKQorQ0hPSUNFPSQocHJpbnRmICIlc1xuIiAiJEAiIHwgd3JhcF9kaXJzIHwgdmlz
LW1lbnUgLWIgLXAgIiRWSVNfTUVOVV9QUk9NUFQiKQogCiAjIERpZCB0aGV5IHBpY2sgYSBmaWxl
IG9yIGRpcmVjdG9yeT8gV2hvIGtub3dzLCBsZXQncyBsZXQgdGhlIG5leHQgaXRlcmF0aW9uIGZp
Z3VyZSBpdCBvdXQuCiBleGVjICIkMCIgLXAgIiRWSVNfTUVOVV9QUk9NUFQiIC0tICIkQ0hPSUNF
IgpkaWZmIC11ciB2aXMtMC42L3Zpcy1wcm9tcHQuYyB2aXMtMC44L3Zpcy1wcm9tcHQuYwotLS0g
dmlzLTAuNi92aXMtcHJvbXB0LmMJMjAyMC0wNi0wNyAxMzoyNToyMAorKysgdmlzLTAuOC92aXMt
cHJvbXB0LmMJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtNjMsNyArNjMsOCBAQAogCQkJcGF0dGVy
biA9ICJeOiI7CiAJCWVsc2UgaWYgKHByb21wdC0+ZmlsZSA9PSB2aXMtPnNlYXJjaF9maWxlKQog
CQkJcGF0dGVybiA9ICJeKC98XFw/KSI7Ci0JCWlmIChwYXR0ZXJuICYmIHJlZ2V4ICYmIHRleHRf
cmVnZXhfY29tcGlsZShyZWdleCwgcGF0dGVybiwgUkVHX0VYVEVOREVEfFJFR19ORVdMSU5FKSA9
PSAwKSB7CisJCWludCBjZmxhZ3MgPSBSRUdfRVhURU5ERUR8UkVHX05FV0xJTkV8KFJFR19JQ0FT
RSp2aXMtPmlnbm9yZWNhc2UpOworCQlpZiAocGF0dGVybiAmJiByZWdleCAmJiB0ZXh0X3JlZ2V4
X2NvbXBpbGUocmVnZXgsIHBhdHRlcm4sIGNmbGFncykgPT0gMCkgewogCQkJc2l6ZV90IGVuZCA9
IHRleHRfbGluZV9lbmQodHh0LCBwb3MpOwogCQkJc2l6ZV90IHByZXYgPSB0ZXh0X3NlYXJjaF9i
YWNrd2FyZCh0eHQsIGVuZCwgcmVnZXgpOwogCQkJaWYgKHByZXYgPiBwb3MpCmRpZmYgLXVyIHZp
cy0wLjYvdmlzLXJlZ2lzdGVycy5jIHZpcy0wLjgvdmlzLXJlZ2lzdGVycy5jCi0tLSB2aXMtMC42
L3Zpcy1yZWdpc3RlcnMuYwkyMDIwLTA2LTA3IDEzOjI1OjIwCisrKyB2aXMtMC44L3Zpcy1yZWdp
c3RlcnMuYwkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC02OSwxNiArNjksMjEgQEAKIAljYXNlIFJF
R0lTVEVSX0NMSVBCT0FSRDoKIAl7CiAJCUJ1ZmZlciBidWZlcnI7CisJCWVudW0gVmlzUmVnaXN0
ZXIgaWQgPSByZWcgLSB2aXMtPnJlZ2lzdGVyczsKKwkJY29uc3QgY2hhciAqY21kW10gPSB7IFZJ
U19DTElQQk9BUkQsICItLXBhc3RlIiwgIi0tc2VsZWN0aW9uIiwgTlVMTCwgTlVMTCB9OwogCQli
dWZmZXJfaW5pdCgmYnVmZXJyKTsKIAkJQnVmZmVyICpidWYgPSBhcnJheV9nZXQoJnJlZy0+dmFs
dWVzLCBzbG90KTsKIAkJaWYgKCFidWYpCiAJCQlyZXR1cm4gTlVMTDsKIAkJYnVmZmVyX2NsZWFy
KGJ1Zik7CiAKKwkJaWYgKGlkID09IFZJU19SRUdfUFJJTUFSWSkKKwkJCWNtZFszXSA9ICJwcmlt
YXJ5IjsKKwkJZWxzZQorCQkJY21kWzNdID0gImNsaXBib2FyZCI7CiAJCWludCBzdGF0dXMgPSB2
aXNfcGlwZSh2aXMsIHZpcy0+d2luLT5maWxlLAogCQkJJihGaWxlcmFuZ2UpeyAuc3RhcnQgPSAw
LCAuZW5kID0gMCB9LAotCQkJKGNvbnN0IGNoYXIqW10peyBWSVNfQ0xJUEJPQVJELCAiLS1wYXN0
ZSIsIE5VTEwgfSwKLQkJCWJ1ZiwgcmVhZF9idWZmZXIsICZidWZlcnIsIHJlYWRfYnVmZmVyKTsK
KwkJCWNtZCwgYnVmLCByZWFkX2J1ZmZlciwgJmJ1ZmVyciwgcmVhZF9idWZmZXIpOwogCiAJCWlm
IChzdGF0dXMgIT0gMCkKIAkJCXZpc19pbmZvX3Nob3codmlzLCAiQ29tbWFuZCBmYWlsZWQgJXMi
LCBidWZmZXJfY29udGVudDAoJmJ1ZmVycikpOwpAQCAtMTUyLDExICsxNTcsMTcgQEAKIAljYXNl
IFJFR0lTVEVSX0NMSVBCT0FSRDoKIAl7CiAJCUJ1ZmZlciBidWZlcnI7CisJCWNvbnN0IGNoYXIg
KmNtZFtdID0geyBWSVNfQ0xJUEJPQVJELCAiLS1jb3B5IiwgIi0tc2VsZWN0aW9uIiwgTlVMTCwg
TlVMTCB9OworCQllbnVtIFZpc1JlZ2lzdGVyIGlkID0gcmVnIC0gdmlzLT5yZWdpc3RlcnM7CiAJ
CWJ1ZmZlcl9pbml0KCZidWZlcnIpOwogCisJCWlmIChpZCA9PSBWSVNfUkVHX1BSSU1BUlkpCisJ
CQljbWRbM10gPSAicHJpbWFyeSI7CisJCWVsc2UKKwkJCWNtZFszXSA9ICJjbGlwYm9hcmQiOwor
CiAJCWludCBzdGF0dXMgPSB2aXNfcGlwZSh2aXMsIHZpcy0+d2luLT5maWxlLCByYW5nZSwKLQkJ
CShjb25zdCBjaGFyKltdKXsgVklTX0NMSVBCT0FSRCwgIi0tY29weSIsIE5VTEwgfSwKLQkJCU5V
TEwsIE5VTEwsICZidWZlcnIsIHJlYWRfYnVmZmVyKTsKKwkJCWNtZCwgTlVMTCwgTlVMTCwgJmJ1
ZmVyciwgcmVhZF9idWZmZXIpOwogCiAJCWlmIChzdGF0dXMgIT0gMCkKIAkJCXZpc19pbmZvX3No
b3codmlzLCAiQ29tbWFuZCBmYWlsZWQgJXMiLCBidWZmZXJfY29udGVudDAoJmJ1ZmVycikpOwpA
QCAtMTg2LDE1ICsxOTcsMTUgQEAKIH0KIAogZW51bSBWaXNSZWdpc3RlciB2aXNfcmVnaXN0ZXJf
ZnJvbShWaXMgKnZpcywgY2hhciByZWcpIHsKLQlzd2l0Y2ggKHJlZykgewotCWNhc2UgJysnOiBy
ZXR1cm4gVklTX1JFR19DTElQQk9BUkQ7Ci0JY2FzZSAnQCc6IHJldHVybiBWSVNfTUFDUk9fTEFT
VF9SRUNPUkRFRDsKLQl9CiAKKwlpZiAocmVnID09ICdAJykKKwkJcmV0dXJuIFZJU19NQUNST19M
QVNUX1JFQ09SREVEOworCiAJaWYgKCdhJyA8PSByZWcgJiYgcmVnIDw9ICd6JykKIAkJcmV0dXJu
IFZJU19SRUdfYSArIHJlZyAtICdhJzsKIAlpZiAoJ0EnIDw9IHJlZyAmJiByZWcgPD0gJ1onKQog
CQlyZXR1cm4gVklTX1JFR19BICsgcmVnIC0gJ0EnOworCiAJZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBMRU5HVEgodmlzX3JlZ2lzdGVycyk7IGkrKykgewogCQlpZiAodmlzX3JlZ2lzdGVyc1tpXS5u
YW1lID09IHJlZykKIAkJCXJldHVybiBpOwpAQCAtMjAyLDYgKzIxMywyMiBAQAogCXJldHVybiBW
SVNfUkVHX0lOVkFMSUQ7CiB9CiAKK2NoYXIgdmlzX3JlZ2lzdGVyX3RvKFZpcyAqdmlzLCBlbnVt
IFZpc1JlZ2lzdGVyIHJlZykgeworCisJaWYgKHJlZyA9PSBWSVNfTUFDUk9fTEFTVF9SRUNPUkRF
RCkKKwkJcmV0dXJuICdAJzsKKworCWlmIChWSVNfUkVHX2EgPD0gcmVnICYmIHJlZyA8PSBWSVNf
UkVHX3opCisJCXJldHVybiAnYScgKyByZWcgLSBWSVNfUkVHX2E7CisJaWYgKFZJU19SRUdfQSA8
PSByZWcgJiYgcmVnIDw9IFZJU19SRUdfWikKKwkJcmV0dXJuICdBJyArIHJlZyAtIFZJU19SRUdf
QTsKKworCWlmIChyZWcgPCBMRU5HVEgodmlzX3JlZ2lzdGVycykpCisJCXJldHVybiB2aXNfcmVn
aXN0ZXJzW3JlZ10ubmFtZTsKKworCXJldHVybiAnXDAnOworfQorCiB2b2lkIHZpc19yZWdpc3Rl
cihWaXMgKnZpcywgZW51bSBWaXNSZWdpc3RlciByZWcpIHsKIAlpZiAoVklTX1JFR19BIDw9IHJl
ZyAmJiByZWcgPD0gVklTX1JFR19aKSB7CiAJCXZpcy0+YWN0aW9uLnJlZyA9ICZ2aXMtPnJlZ2lz
dGVyc1tWSVNfUkVHX2EgKyByZWcgLSBWSVNfUkVHX0FdOwpAQCAtMjc1LDcgKzMwMiw4IEBACiAJ
W1ZJU19SRUdfOV0gICAgICAgICAgPSB7ICc5JywgVklTX0hFTFAoIjl0aCBzdWItZXhwcmVzc2lv
biBtYXRjaCIpICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJW1ZJU19SRUdfQU1QRVJTQU5E
XSAgPSB7ICcmJywgVklTX0hFTFAoIkxhc3QgcmVnZXggbWF0Y2giKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCiAJW1ZJU19SRUdfQkxBQ0tIT0xFXSAgPSB7ICdfJywgVklTX0hF
TFAoIi9kZXYvbnVsbCByZWdpc3RlciIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
Ci0JW1ZJU19SRUdfQ0xJUEJPQVJEXSAgPSB7ICcqJywgVklTX0hFTFAoIlN5c3RlbSBjbGlwYm9h
cmQgcmVnaXN0ZXIsIHNlZSB2aXMtY2xpcGJvYXJkKDEpIikgIH0sCisJW1ZJU19SRUdfUFJJTUFS
WV0gICAgPSB7ICcqJywgVklTX0hFTFAoIlByaW1hcnkgY2xpcGJvYXJkIHJlZ2lzdGVyLCBzZWUg
dmlzLWNsaXBib2FyZCgxKSIpIH0sCisJW1ZJU19SRUdfQ0xJUEJPQVJEXSAgPSB7ICcrJywgVklT
X0hFTFAoIlN5c3RlbSBjbGlwYm9hcmQgcmVnaXN0ZXIsIHNlZSB2aXMtY2xpcGJvYXJkKDEpIikg
IH0sCiAJW1ZJU19SRUdfRE9UXSAgICAgICAgPSB7ICcuJywgVklTX0hFTFAoIkxhc3QgaW5zZXJ0
ZWQgdGV4dCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAJW1ZJU19SRUdfU0VB
UkNIXSAgICAgPSB7ICcvJywgVklTX0hFTFAoIkxhc3Qgc2VhcmNoIHBhdHRlcm4iKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCiAJW1ZJU19SRUdfQ09NTUFORF0gICAgPSB7ICc6Jywg
VklTX0hFTFAoIkxhc3QgOi1jb21tYW5kIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCmRpZmYgLXVyIHZpcy0wLjYvdmlzLXRleHQtb2JqZWN0cy5jIHZpcy0wLjgvdmlzLXRl
eHQtb2JqZWN0cy5jCi0tLSB2aXMtMC42L3Zpcy10ZXh0LW9iamVjdHMuYwkyMDIwLTA2LTA3IDEz
OjI1OjIwCisrKyB2aXMtMC44L3Zpcy10ZXh0LW9iamVjdHMuYwkyMDIyLTExLTAxIDE2OjUwOjEw
CkBAIC0xNzMsMTIgKzE3Myw2IEBACiAJCS50eHQgPSBvYmplY3RfYmFja3RpY2ssCiAJCS50eXBl
ID0gVEVYVE9CSkVDVF9ERUxJTUlURURfSU5ORVIsCiAJfSwKLQlbVklTX1RFWFRPQkpFQ1RfT1VU
RVJfRU5USVJFXSA9IHsKLQkJLnR4dCA9IHRleHRfb2JqZWN0X2VudGlyZSwKLQl9LAotCVtWSVNf
VEVYVE9CSkVDVF9JTk5FUl9FTlRJUkVdID0gewotCQkudHh0ID0gdGV4dF9vYmplY3RfZW50aXJl
X2lubmVyLAotICAgICAgICB9LAogCVtWSVNfVEVYVE9CSkVDVF9PVVRFUl9MSU5FXSA9IHsKIAkJ
LnR4dCA9IHRleHRfb2JqZWN0X2xpbmUsCiAJfSwKZGlmZiAtdXIgdmlzLTAuNi92aXMuYyB2aXMt
MC44L3Zpcy5jCi0tLSB2aXMtMC42L3Zpcy5jCTIwMjAtMDYtMDcgMTM6MjU6MjAKKysrIHZpcy0w
LjgvdmlzLmMJMjAyMi0xMS0wMSAxNjo1MDoxMApAQCAtMTAwLDYgKzEwMCwxMCBAQAogCQlpZiAo
dmlzLT5ldmVudC0+cXVpdCkKIAkJCXZpcy0+ZXZlbnQtPnF1aXQodmlzKTsKIAkJYnJlYWs7CisJ
Y2FzZSBWSVNfRVZFTlRfVEVSTV9DU0k6CisJCWlmICh2aXMtPmV2ZW50LT50ZXJtX2NzaSkKKwkJ
CXZpcy0+ZXZlbnQtPnRlcm1fY3NpKHZpcywgdmFfYXJnKGFwLCBjb25zdCBsb25nICopKTsKKwkJ
YnJlYWs7CiAJfQogCiAJdmFfZW5kKGFwKTsKQEAgLTY3NSw2ICs2NzksNyBAQAogCQlyZWdpc3Rl
cl9pbml0KCZ2aXMtPnJlZ2lzdGVyc1tpXSk7CiAJdmlzLT5yZWdpc3RlcnNbVklTX1JFR19CTEFD
S0hPTEVdLnR5cGUgPSBSRUdJU1RFUl9CTEFDS0hPTEU7CiAJdmlzLT5yZWdpc3RlcnNbVklTX1JF
R19DTElQQk9BUkRdLnR5cGUgPSBSRUdJU1RFUl9DTElQQk9BUkQ7CisJdmlzLT5yZWdpc3RlcnNb
VklTX1JFR19QUklNQVJZXS50eXBlID0gUkVHSVNURVJfQ0xJUEJPQVJEOwogCXZpcy0+cmVnaXN0
ZXJzW1ZJU19SRUdfTlVNQkVSXS50eXBlID0gUkVHSVNURVJfTlVNQkVSOwogCWFycmF5X2luaXQo
JnZpcy0+b3BlcmF0b3JzKTsKIAlhcnJheV9pbml0KCZ2aXMtPm1vdGlvbnMpOwpAQCAtMTAxMyw3
ICsxMDE4LDcgQEAKIAkJCXJlZ2lzdGVyX3Jlc2l6ZShyZWcsIGxhc3RfcmVnX3Nsb3QrMSk7CiAJ
CX0KIAotCQkvKiB3ZSBkbyBub3Qgc3VwcG9ydCB2aXN1YWwgcmVwZWF0LCBzdGlsbCBkbyBzb21l
dGhpbmcgcmVzb25hYmxlICovCisJCS8qIHdlIGRvIG5vdCBzdXBwb3J0IHZpc3VhbCByZXBlYXQs
IHN0aWxsIGRvIHNvbWV0aGluZyByZWFzb25hYmxlICovCiAJCWlmICh2aXMtPm1vZGUtPnZpc3Vh
bCAmJiAhYS0+bW92ZW1lbnQgJiYgIWEtPnRleHRvYmopCiAJCQlhLT5tb3ZlbWVudCA9ICZ2aXNf
bW90aW9uc1tWSVNfTU9WRV9OT1BdOwogCkBAIC0xMzAzLDYgKzEzMDgsMTcgQEAKIAl9CiAKIAlU
ZXJtS2V5ICp0ZXJta2V5ID0gdmlzLT51aS0+dGVybWtleV9nZXQodmlzLT51aSk7CisJaWYgKGtl
eS50eXBlID09IFRFUk1LRVlfVFlQRV9VTktOT1dOX0NTSSkgeworCQlsb25nIGFyZ3NbMThdOwor
CQlzaXplX3QgbmFyZ3M7CisJCXVuc2lnbmVkIGxvbmcgY21kOworCQlpZiAodGVybWtleV9pbnRl
cnByZXRfY3NpKHRlcm1rZXksICZrZXksICZhcmdzWzJdLCAmbmFyZ3MsICZjbWQpID09IFRFUk1L
RVlfUkVTX0tFWSkgeworCQkJYXJnc1swXSA9IChsb25nKWNtZDsKKwkJCWFyZ3NbMV0gPSBuYXJn
czsKKwkJCXZpc19ldmVudF9lbWl0KHZpcywgVklTX0VWRU5UX1RFUk1fQ1NJLCBhcmdzKTsKKwkJ
fQorCQlyZXR1cm4gZ2V0a2V5KHZpcyk7CisJfQogCXRlcm1rZXlfc3RyZmtleSh0ZXJta2V5LCB2
aXMtPmtleSwgc2l6ZW9mKHZpcy0+a2V5KSwgJmtleSwgVEVSTUtFWV9GT1JNQVRfVklNKTsKIAly
ZXR1cm4gdmlzLT5rZXk7CiB9CkBAIC0xMzgwLDcgKzEzOTYsOCBAQAogCQkJdmlzX2RpZSh2aXMs
ICJLaWxsZWQgYnkgU0lHVEVSTVxuIik7CiAJCWlmICh2aXMtPmludGVycnVwdGVkKSB7CiAJCQl2
aXMtPmludGVycnVwdGVkID0gZmFsc2U7Ci0JCQl2aXNfa2V5c19mZWVkKHZpcywgIjxDLWM+Iik7
CisJCQl2aXNfa2V5c19wdXNoKHZpcywgIjxDLWM+IiwgMCwgdHJ1ZSk7CisJCQljb250aW51ZTsK
IAkJfQogCiAJCWlmICh2aXMtPnJlc3VtZSkgewpAQCAtMTY2OSw3ICsxNjg2LDcgQEAKIAkJc2l6
ZV90IG5ld3BvcyA9IHZpc190ZXh0X2luc2VydF9ubCh2aXMsIHR4dCwgcG9zKTsKIAkJLyogVGhp
cyBpcyBhIGJpdCBvZiBhIGhhY2sgdG8gZml4IGN1cnNvciBwb3NpdGlvbmluZyB3aGVuCiAJCSAq
IGluc2VydGluZyBhIG5ldyBsaW5lIGF0IHRoZSBzdGFydCBvZiB0aGUgdmlldyBwb3J0LgotCQkg
KiBJdCBoYXMgdGhlIGVmZmVjdCBvZiByZXNldGluZyB0aGUgbWFyayB1c2VkIGJ5IHRoZSB2aWV3
CisJCSAqIEl0IGhhcyB0aGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgbWFyayB1c2VkIGJ5IHRo
ZSB2aWV3CiAJCSAqIGNvZGUgdG8ga2VlcCB0cmFjayBvZiB0aGUgc3RhcnQgb2YgdGhlIHZpc2li
bGUgcmVnaW9uLgogCQkgKi8KIAkJdmlld19jdXJzb3JzX3RvKHMsIHBvcyk7CkBAIC0xNjg0LDcg
KzE3MDEsOCBAQAogCVJlZ2V4ICpyZWdleCA9IHRleHRfcmVnZXhfbmV3KCk7CiAJaWYgKCFyZWdl
eCkKIAkJcmV0dXJuIE5VTEw7Ci0JaWYgKHRleHRfcmVnZXhfY29tcGlsZShyZWdleCwgcGF0dGVy
biwgUkVHX0VYVEVOREVEfFJFR19ORVdMSU5FKSAhPSAwKSB7CisJaW50IGNmbGFncyA9IFJFR19F
WFRFTkRFRHxSRUdfTkVXTElORXwoUkVHX0lDQVNFKnZpcy0+aWdub3JlY2FzZSk7CisJaWYgKHRl
eHRfcmVnZXhfY29tcGlsZShyZWdleCwgcGF0dGVybiwgY2ZsYWdzKSAhPSAwKSB7CiAJCXRleHRf
cmVnZXhfZnJlZShyZWdleCk7CiAJCXJldHVybiBOVUxMOwogCX0KQEAgLTE4NDIsOCArMTg2MCw4
IEBACiAJCQlpZiAobGVuID4gMCkgewogCQkJCXJvdXQuc3RhcnQgKz0gbGVuOwogCQkJCWlmICh0
ZXh0X3JhbmdlX3NpemUoJnJvdXQpID09IDApIHsKLQkJCQkJY2xvc2UocG91dFsxXSk7Ci0JCQkJ
CXBvdXRbMV0gPSAtMTsKKwkJCQkJY2xvc2UocGluWzFdKTsKKwkJCQkJcGluWzFdID0gLTE7CiAJ
CQkJfQogCQkJfSBlbHNlIHsKIAkJCQljbG9zZShwaW5bMV0pOwpkaWZmIC11ciB2aXMtMC42L3Zp
cy5oIHZpcy0wLjgvdmlzLmgKLS0tIHZpcy0wLjYvdmlzLmgJMjAyMC0wNi0wNyAxMzoyNToyMAor
KysgdmlzLTAuOC92aXMuaAkyMDIyLTExLTAxIDE2OjUwOjEwCkBAIC01Nyw2ICs1Nyw3IEBACiAJ
dm9pZCAoKndpbl9jbG9zZSkoVmlzKiwgV2luKik7CiAJdm9pZCAoKndpbl9oaWdobGlnaHQpKFZp
cyosIFdpbiopOwogCXZvaWQgKCp3aW5fc3RhdHVzKShWaXMqLCBXaW4qKTsKKwl2b2lkICgqdGVy
bV9jc2kpKFZpcyosIGNvbnN0IGxvbmcgKik7CiB9IFZpc0V2ZW50OwogCiAvKiogVW5pb24gdXNl
ZCB0byBwYXNzIGFyZ3VtZW50cyB0byBrZXkgYWN0aW9uIGZ1bmN0aW9ucy4gKi8KQEAgLTc2LDcg
Kzc3LDcgQEAKICAqIEByc3QKICAqIC4uIG5vdGU6OiBBbiBlbXB0eSBzdHJpbmcgYGAiImBgIGlu
ZGljYXRlcyB0aGF0IG5vIGZ1cnRoZXIgaW5wdXQgaXMgYXZhaWxhYmxlLgogICogQGVuZHJzdAot
ICogQHJldHVybiBQb2ludGVyIHRvIGZpcnN0IG5vbi1jb3N1bWVkIGtleS4KKyAqIEByZXR1cm4g
UG9pbnRlciB0byBmaXJzdCBub24tY29uc3VtZWQga2V5LgogICogQHJzdAogICogLi4gd2Fybmlu
Zzo6IE11c3QgYmUgaW4gcmFuZ2UgYGBba2V5cywga2V5cytzdHJsZW4oa2V5cyldYGAgb3IgYGBO
VUxMYGAgdG8KICAqICAgICAgICAgICAgICBpbmRpY2F0ZSB0aGF0IG5vdCBlbm91Z2ggaW5wdXQg
d2FzIGF2YWlsYWJsZS4gSW4gdGhlIGxhdHRlciBjYXNlCkBAIC0xMzAsNyArMTMxLDcgQEAKIHZv
aWQgdmlzX2RpZShWaXMqLCBjb25zdCBjaGFyICptc2csIC4uLikgX19hdHRyaWJ1dGVfXygobm9y
ZXR1cm4sZm9ybWF0KHByaW50ZiwgMiwgMykpKTsKIAogLyoqCi0gKiBUZW1wb3JhcmlseSBzdXBz
ZW5kIHRoZSBlZGl0b3IgcHJvY2Vzcy4KKyAqIFRlbXBvcmFyaWx5IHN1c3BlbmQgdGhlIGVkaXRv
ciBwcm9jZXNzLgogICogQHJzdAogICogLi4gbm90ZTo6IFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5l
cmF0ZSBhIGBgU0lHVFNUUGBgIHNpZ25hbC4KICAqIEBlbmRyc3QKQEAgLTIyMSw5ICsyMjIsOSBA
QAogdm9pZCB2aXNfd2luZG93X2ZvY3VzKFdpbiopOwogLyoqIFN3YXAgbG9jYXRpb24gb2YgdHdv
IHdpbmRvd3MuICovCiB2b2lkIHZpc193aW5kb3dfc3dhcChXaW4qLCBXaW4qKTsKLS8qKiBRdWVy
eSB3aW5kb3cgZGltZW5zaW9uLiAqLworLyoqIFF1ZXJ5IHdpbmRvdyB3aWR0aC4gKi8KIGludCB2
aXNfd2luZG93X3dpZHRoX2dldChjb25zdCBXaW4qKTsKLS8qKiBRdWVyeSB3aW5kb3cgZGltZW5z
aW9uLiAqLworLyoqIFF1ZXJ5IHdpbmRvdyBoZWlnaHQuICovCiBpbnQgdmlzX3dpbmRvd19oZWln
aHRfZ2V0KGNvbnN0IFdpbiopOwogLyoqCiAgKiBAfQpAQCAtMjYzLDcgKzI2NCw3IEBACiAvKiog
UGVyZm9ybSBpbnNlcnRpb24gYXQgYWxsIGN1cnNvciBwb3NpdGlvbnMuICovCiB2b2lkIHZpc19p
bnNlcnRfa2V5KFZpcyosIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pOwogLyoqCi0gKiBQ
ZXJmb3JtIGNoYXJhY3RlciBzdWJzaXR1dGlvbiBhdCBhbGwgY3Vyc29yIHBvc2l0aW9ucy4KKyAq
IFBlcmZvcm0gY2hhcmFjdGVyIHN1YnN0aXR1dGlvbiBhdCBhbGwgY3Vyc29yIHBvc2l0aW9ucy4K
ICAqIEByc3QKICAqIC4uIG5vdGU6OiBEb2VzIG5vdCByZXBsYWNlIG5ldyBsaW5lIGNoYXJhY3Rl
cnMuCiAgKiBAZW5kcnN0CkBAIC00MzIsNyArNDMzLDcgQEAKICAqCiAgKiAgLSBgVklTX09QX0pP
SU5gICAgICAgIGEgY2hhciBwb2ludGVyIHJlZmVycmluZyB0byB0aGUgdGV4dCB0byBpbnNlcnQg
YmV0d2VlbiBsaW5lcy4KICAqICAtIGBWSVNfT1BfTU9ERVNXSVRDSGAgYW4gYGBlbnVtIFZpc01v
ZGVgYCBpbmRpY2F0aW5nIHRoZSBtb2RlIHRvIHN3aXRjaCB0by4KLSAqICAtIGBWSVNfT1BfUkVQ
TEFDRWAgICAgYSBjaGFyIHBvaW50ZXIgcmVmZmVyaW5nIHRvIHRoZSByZXBsYWNlbWVudCBjaGFy
YWN0ZXIuCisgKiAgLSBgVklTX09QX1JFUExBQ0VgICAgIGEgY2hhciBwb2ludGVyIHJlZmVycmlu
ZyB0byB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyLgogICovCiBib29sIHZpc19vcGVyYXRvcihW
aXMqLCBlbnVtIFZpc09wZXJhdG9yLCAuLi4pOwogCkBAIC00OTAsMTAgKzQ5MSwxNCBAQAogCVZJ
U19NT1ZFX1BBUkVOVEhFU0lTX1NUQVJULAogCVZJU19NT1ZFX1BBUkVOVEhFU0lTX0VORCwKIAlW
SVNfTU9WRV9CUkFDS0VUX01BVENILAotCVZJU19NT1ZFX0xFRlRfVE8sCi0JVklTX01PVkVfUklH
SFRfVE8sCi0JVklTX01PVkVfTEVGVF9USUxMLAotCVZJU19NT1ZFX1JJR0hUX1RJTEwsCisJVklT
X01PVkVfVE9fTEVGVCwKKwlWSVNfTU9WRV9UT19SSUdIVCwKKwlWSVNfTU9WRV9UT19MSU5FX0xF
RlQsCisJVklTX01PVkVfVE9fTElORV9SSUdIVCwKKwlWSVNfTU9WRV9USUxMX0xFRlQsCisJVklT
X01PVkVfVElMTF9SSUdIVCwKKwlWSVNfTU9WRV9USUxMX0xJTkVfTEVGVCwKKwlWSVNfTU9WRV9U
SUxMX0xJTkVfUklHSFQsCiAJVklTX01PVkVfRklMRV9CRUdJTiwKIAlWSVNfTU9WRV9GSUxFX0VO
RCwKIAlWSVNfTU9WRV9TRUFSQ0hfV09SRF9GT1JXQVJELApAQCAtNjIyLDggKzYyNyw2IEBACiAJ
VklTX1RFWFRPQkpFQ1RfSU5ORVJfU0lOR0xFX1FVT1RFLAogCVZJU19URVhUT0JKRUNUX09VVEVS
X0JBQ0tUSUNLLAogCVZJU19URVhUT0JKRUNUX0lOTkVSX0JBQ0tUSUNLLAotCVZJU19URVhUT0JK
RUNUX09VVEVSX0VOVElSRSwKLQlWSVNfVEVYVE9CSkVDVF9JTk5FUl9FTlRJUkUsCiAJVklTX1RF
WFRPQkpFQ1RfT1VURVJfTElORSwKIAlWSVNfVEVYVE9CSkVDVF9JTk5FUl9MSU5FLAogCVZJU19U
RVhUT0JKRUNUX0lOREVOVEFUSU9OLApAQCAtNjc1LDggKzY3OCw5IEBACiAgKiBAZGVmZ3JvdXAg
dmlzX21hcmtzCiAgKiBAewogICovCi0vKiogVHJhbnNsYXRlIHNpbmdsZSBjaGFyYWN0ZXIgbWFy
ayBuYW1lIHRvIGNvcnJlc3BvbmRpbmcgY29uc3RhbnQuICovCisvKiogVHJhbnNsYXRlIGJldHdl
ZW4gc2luZ2xlIGNoYXJhY3RlciBtYXJrIG5hbWUgYW5kIGNvcnJlc3BvbmRpbmcgY29uc3RhbnQu
ICovCiBlbnVtIFZpc01hcmsgdmlzX21hcmtfZnJvbShWaXMqLCBjaGFyIG1hcmspOworY2hhciB2
aXNfbWFya190byhWaXMqLCBlbnVtIFZpc01hcmspOwogLyoqCiAgKiBTcGVjaWZ5IG1hcmsgdG8g
dXNlLgogICogQHJzdApAQCAtNzMxLDYgKzczNSw3IEBACiAJVklTX1JFR185LAogCVZJU19SRUdf
QkxBQ0tIT0xFLCAgLyogL2Rldi9udWxsIHJlZ2lzdGVyICovCiAJVklTX1JFR19DTElQQk9BUkQs
ICAvKiBzeXN0ZW0gY2xpcGJvYXJkIHJlZ2lzdGVyICovCisJVklTX1JFR19QUklNQVJZLCAgICAv
KiBzeXN0ZW0gcHJpbWFyeSBjbGlwYm9hcmQgcmVnaXN0ZXIgKi8KIAlWSVNfUkVHX0RPVCwgICAg
ICAgIC8qIGxhc3QgaW5zZXJ0ZWQgdGV4dCwgY29weSBvZiBWSVNfTUFDUk9fT1BFUkFUT1IgKi8K
IAlWSVNfUkVHX1NFQVJDSCwgICAgIC8qIGxhc3QgdXNlZCBzZWFyY2ggcGF0dGVybiAiLyAqLwog
CVZJU19SRUdfQ09NTUFORCwgICAgLyogbGFzdCB1c2VkIDotY29tbWFuZCAiOiAqLwpAQCAtNzU4
LDggKzc2Myw5IEBACiAgKiBAZGVmZ3JvdXAgdmlzX3JlZ2lzdGVycwogICogQHsKICAqLwotLyoq
IFRyYW5zbGF0ZSBzaW5nbGUgY2hhcmFjdGVyIHJlZ2lzdGVyIG5hbWUgdG8gY29ycmVzcG9uZGlu
ZyBjb25zdGFudC4gKi8KKy8qKiBUcmFuc2xhdGUgYmV0d2VlbiBzaW5nbGUgY2hhcmFjdGVyIHJl
Z2lzdGVyIG5hbWUgYW5kIGNvcnJlc3BvbmRpbmcgY29uc3RhbnQuICovCiBlbnVtIFZpc1JlZ2lz
dGVyIHZpc19yZWdpc3Rlcl9mcm9tKFZpcyosIGNoYXIgcmVnKTsKK2NoYXIgdmlzX3JlZ2lzdGVy
X3RvKFZpcyosIGVudW0gVmlzUmVnaXN0ZXIpOwogLyoqCiAgKiBTcGVjaWZ5IHJlZ2lzdGVyIHRv
IHVzZS4KICAqIEByc3QKQEAgLTc3Miw3ICs3NzgsNyBAQAogICogR2V0IHJlZ2lzdGVyIGNvbnRl
bnQuCiAgKiBAcmV0dXJuIEFuIGFycmF5IG9mIGBgVGV4dFN0cmluZ2BgIHN0cnVjdHMuCiAgKiBA
cnN0Ci0gKiAuLiB3YXJuaW5nOjogVGhlIGNhbGxlciBtdXN0IGV2ZW50dWFsbHkgZnJlZSB0aGUg
YXJyYXkgcmVzc291cmNlcyB1c2luZworICogLi4gd2FybmluZzo6IFRoZSBjYWxsZXIgbXVzdCBl
dmVudHVhbGx5IGZyZWUgdGhlIGFycmF5IHJlc291cmNlcyB1c2luZwogICogICAgICAgICAgICAg
IGBgYXJyYXlfcmVsZWFzZWBgLgogICogQGVuZHJzdAogICovCkBAIC04NTEsNyArODU3LDcgQEAK
ICAqIE9wdGlvbiBoYW5kbGVyIGZ1bmN0aW9uLgogICogQHBhcmFtIHdpbiBUaGUgd2luZG93IHRv
IHdoaWNoIG9wdGlvbiBzaG91bGQgYXBwbHksIG1pZ2h0IGJlIGBgTlVMTGBgLgogICogQHBhcmFt
IGNvbnRleHQgVXNlciBwcm92aWRlZCBjb250ZXh0IHBvaW50ZXIgYXMgZ2l2ZW4gdG8gYHZpc19v
cHRpb25fcmVnaXN0ZXJgLgotICogQHBhcmFtIGZvcmNlIFdoZXRoZXIgdGhlIG9wdGlvbiB3YXMg
c3BlY2ZpZWQgd2l0aCBhIGJhbmcgYGAhYGAuCisgKiBAcGFyYW0gZm9yY2UgV2hldGhlciB0aGUg
b3B0aW9uIHdhcyBzcGVjaWZpZWQgd2l0aCBhIGJhbmcgYGAhYGAuCiAgKiBAcGFyYW0gbmFtZSBO
YW1lIG9mIG9wdGlvbiB3aGljaCB3YXMgc2V0LgogICogQHBhcmFtIGFyZyBUaGUgbmV3IG9wdGlv
biB2YWx1ZS4KICAqLwpAQCAtOTYyLDcgKzk2OCw3IEBACiBSZWdleCAqdmlzX3JlZ2V4KFZpcyos
IGNvbnN0IGNoYXIgKnBhdHRlcm4pOwogCiAvKioKLSAqIFRha2UgYW4gdW5kbyBzbmFwaG9zdCB0
byB3aGljaCB3ZSBjYW4gbGF0ZXIgcmV2ZXJ0IHRvLgorICogVGFrZSBhbiB1bmRvIHNuYXBzaG90
IHRvIHdoaWNoIHdlIGNhbiBsYXRlciByZXZlcnQuCiAgKiBAcnN0CiAgKiAuLiBub3RlOjogRG9l
cyBub3RoaW5nIHdoZW4gaW52b2tlZCB3aGlsZSByZXBsYXlpbmcgYSBtYWNyby4KICAqIEBlbmRy
c3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13322</attachid>
            <date>2023-05-31 09:09:52 +0300</date>
            <delta_ts>2023-06-04 14:28:03 +0300</delta_ts>
            <desc>patch for spec</desc>
            <filename>vis-0.8-spec.patch</filename>
            <type>text/plain</type>
            <size>636</size>
            <attacher name="VikaB">vikabu2002</attacher>
            
              <data encoding="base64">QEAgLTEsNSArMSw1IEBACiBOYW1lOiB2aXMKLVZlcnNpb246IDAuNgorVmVyc2lvbjogMC44CiBS
ZWxlYXNlOiBhbHQxCiAKIFN1bW1hcnk6IHNpbXBsZSB5ZXQgZWZmaWNpZW50IGVkaXRvciwgY29t
YmluaW5nIHRoZSBzdHJlbmd0aHMgb2YgYm90aCB2aShtKSBhbmQgc2FtCkBAIC05LDEyICs5LDE0
IEBACiBVcmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ0YW5uZS92aXMKIAogVkNTOiBodHRwczov
L2dpdGh1Yi5jb20vbWFydGFubmUvdmlzCi1Tb3VyY2U6ICVuYW1lLSV2ZXJzaW9uLnRhcgorU291
cmNlOiAlbmFtZS0ldmVyc2lvbi50YXIuZ3oKIAogQnVpbGRSZXF1aXJlczogbGlidGVybWtleS1k
ZXZlbCBsaWJuY3Vyc2Vzdy1kZXZlbCBsaWJsdWE1LjMtZGV2ZWwKLVJlcXVpcmVzOiBsdWE1LjMt
bW9kdWxlLWxwZWcKLVJlcXVpcmVzOiB2aXMtZGF0YQorQnVpbGRSZXF1aXJlczogbHVhNS4zLW1v
ZHVsZS1scGVnCitCdWlsZFJlcXVpcmVzOiB2aXMtZGF0YQogCitQYXRjaDogdmlzLTAuOC5wYXRj
aAorCiAlcGFja2FnZSBkYXRhCiBCdWlsZEFyY2g6IG5vYXJjaAogR3JvdXA6IEVkaXRvcnMKQEAg
LTQzLDYgKzQ1LDcgQEAKIAogJXByZXAKICVzZXR1cAorJXBhdGNoIC1wMQogCiAlYnVpbGQKICVj
b25maWd1cmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13367</attachid>
            <date>2023-06-04 14:28:03 +0300</date>
            <delta_ts>2023-06-04 14:28:03 +0300</delta_ts>
            <desc>patch for spec</desc>
            <filename>vis-0.8-spec.patch</filename>
            <type>text/plain</type>
            <size>527</size>
            <attacher name="VikaB">vikabu2002</attacher>
            
              <data encoding="base64">QEAgLTEsNSArMSw1IEBACiBOYW1lOiB2aXMKLVZlcnNpb246IDAuNgorVmVyc2lvbjogMC44CiBS
ZWxlYXNlOiBhbHQxCiAKIFN1bW1hcnk6IHNpbXBsZSB5ZXQgZWZmaWNpZW50IGVkaXRvciwgY29t
YmluaW5nIHRoZSBzdHJlbmd0aHMgb2YgYm90aCB2aShtKSBhbmQgc2FtCkBAIC05LDExICs5LDEx
IEBACiBVcmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ0YW5uZS92aXMKIAogVkNTOiBodHRwczov
L2dpdGh1Yi5jb20vbWFydGFubmUvdmlzCi1Tb3VyY2U6ICVuYW1lLSV2ZXJzaW9uLnRhcgorU291
cmNlOiAlbmFtZS0ldmVyc2lvbi50YXIuZ3oKIAogQnVpbGRSZXF1aXJlczogbGlidGVybWtleS1k
ZXZlbCBsaWJuY3Vyc2Vzdy1kZXZlbCBsaWJsdWE1LjMtZGV2ZWwKLVJlcXVpcmVzOiBsdWE1LjMt
bW9kdWxlLWxwZWcKLVJlcXVpcmVzOiB2aXMtZGF0YQorQnVpbGRSZXF1aXJlczogbHVhNS4zLW1v
ZHVsZS1scGVnCitCdWlsZFJlcXVpcmVzOiB2aXMtZGF0YQogCiAlcGFja2FnZSBkYXRhCiBCdWls
ZEFyY2g6IG5vYXJjaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>