<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>237883</bug_id>
          
          <creation_ts>2022-03-15 04:20:08 -0700</creation_ts>
          <short_desc>[GTK][WPE] Use GBMBufferSwapchain in GraphicsContextGLTextureMapperANGLE</short_desc>
          <delta_ts>2022-03-29 01:01:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>238322</dependson>
          <blocked>237649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>alex</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851224</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-15 04:20:08 -0700</bug_when>
    <thetext>For each ANGLE-produced WebGL frame, we&apos;d want to retrieve a dmabuf buffer via GBMBufferSwapchain, impose it as the backing for the texture that&apos;s being used as the default framebuffer color attachment, and finally push it into the rendering pipeline once the frame is complete. Upon the next frame the swapchain would provide a different buffer, and the cycle repeats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851226</commentid>
    <comment_count>1</comment_count>
      <attachid>454692</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-15 04:21:38 -0700</bug_when>
    <thetext>Created attachment 454692
WIP patch

Early, but functions on the most basic WebGL content. It still needs cleanup, proper understanding of what&apos;s used in different configurations sharing this code, and how other things like preserved-drawing-buffer affect this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854083</commentid>
    <comment_count>2</comment_count>
      <attachid>455475</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-23 02:07:53 -0700</bug_when>
    <thetext>Created attachment 455475
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854650</commentid>
    <comment_count>3</comment_count>
      <attachid>455633</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-24 05:19:45 -0700</bug_when>
    <thetext>Created attachment 455633
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855538</commentid>
    <comment_count>4</comment_count>
      <attachid>455901</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-28 04:36:25 -0700</bug_when>
    <thetext>Created attachment 455901
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855590</commentid>
    <comment_count>5</comment_count>
      <attachid>455914</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-28 07:01:19 -0700</bug_when>
    <thetext>Created attachment 455914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855735</commentid>
    <comment_count>6</comment_count>
      <attachid>455914</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2022-03-28 12:55:08 -0700</bug_when>
    <thetext>Comment on attachment 455914
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=455914&amp;action=review

LGTM! Just check the unguarded line to make sure we do not break other compilations.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:476
&gt; +    m_swapchain.displayBO = WTFMove(m_swapchain.drawBO);

This needs to be guarded with the TEXTURE_MAPPER_DMABUF. It is causing the wincairo failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855913</commentid>
    <comment_count>7</comment_count>
      <attachid>455994</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-28 22:41:01 -0700</bug_when>
    <thetext>Created attachment 455994
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855937</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-29 01:00:44 -0700</bug_when>
    <thetext>Committed r292025 (248968@main): &lt;https://commits.webkit.org/248968@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455994.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855938</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-29 01:01:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90969336&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454692</attachid>
            <date>2022-03-15 04:21:38 -0700</date>
            <delta_ts>2022-03-23 02:07:45 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>18508</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggODk3YmVhNDU4NzBkLi4yNTg3
ZDY3NWNlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC01NjEsMTMg
KzU2MSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cHJlcGFyZVRleHR1cmVJbXBs
KCkKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSgpOwogCiAjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSKQorI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3Rk
Ojpzd2FwKG1fdGV4dHVyZSwgbV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQotICAgIHN0ZDo6c3dhcChtX3RleHR1cmUsIG1faW50ZXJtZWRpYXRlVGV4
dHVyZSk7Ci0gICAgc3RkOjpzd2FwKG1fdGV4dHVyZUJhY2tpbmcsIG1fY29tcG9zaXRvclRleHR1
cmVCYWNraW5nKTsKLSAgICBzdGQ6OnN3YXAobV90ZXh0dXJlQmFja2luZywgbV9pbnRlcm1lZGlh
dGVUZXh0dXJlQmFja2luZyk7CiAjZW5kaWYKLQogICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIEdMX0ZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KSwgbV90ZXh0dXJlLCAwKTsKICAgICBHTF9GbHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5oCmluZGV4IGZkNTRhMWJhNzViNC4uMWFiZmJmNmFiMDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5oCkBAIC0zOSw4ICszOSwxMyBAQAogI2luY2x1ZGUgIlByb2Nlc3NJZGVu
dGl0eS5oIgogI2VuZGlmCiAKKyNpZiBVU0UoTklDT1NJQSkKKyNpbmNsdWRlICJHQk1CdWZmZXJT
d2FwY2hhaW4uaCIKKyNlbmRpZgogCiAjaWYgVVNFKE5JQ09TSUEpCisjaW5jbHVkZSAiQU5HTEVI
ZWFkZXJzLmgiCisKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIGNsYXNzIEdDR0xBTkdMRUxheWVyOwog
Y2xhc3MgR0NHTExheWVyOwpAQCAtNDUxLDQzICs0NTYsMjMgQEAgcHJvdGVjdGVkOgogICAgIC8v
IFdoZW4gcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IHRydWUsIHRoaXMgaXMgYmxpdHRlZCB0byBk
dXJpbmcgZGlzcGxheSBwcmVwYXJlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1f
ZGlzcGxheUJ1ZmZlckJhY2tpbmc7CiAgICAgdm9pZCogbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciB7
IG51bGxwdHIgfTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUikgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBHQ0dMdWludCBtX2Nv
bXBvc2l0b3JUZXh0dXJlIHsgMCB9OwotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAg
ICBHQ0dMdWludCBtX2ludGVybWVkaWF0ZVRleHR1cmUgeyAwIH07Ci0jZW5kaWYKICNlbmRpZgog
I2lmIFVTRShOSUNPU0lBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpHQ0dMQU5HTEVM
YXllcj4gbV9uaWNvc2lhTGF5ZXI7CiAKLSAgICBjbGFzcyBFR0xJbWFnZUJhY2tpbmcgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgRUdMSW1hZ2VC
YWNraW5nKEdDR0xEaXNwbGF5KTsKLSAgICAgICAgfkVHTEltYWdlQmFja2luZygpOwotCi0gICAg
ICAgIGJvb2wgcmVzZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIGhhc0FscGhhKTsKKyAg
ICBzdHJ1Y3QgU3dhcGNoYWluIHsKKyAgICAgICAgU3dhcGNoYWluKCk7CisgICAgICAgIFN3YXBj
aGFpbihHQ0dMRGlzcGxheSk7CisgICAgICAgIH5Td2FwY2hhaW4oKTsKIAotICAgICAgICBFR0xJ
bWFnZSBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KLSAgICAgICAgaW50IGZkKCkg
Y29uc3QgeyByZXR1cm4gbV9GRDsgfQotCi0gICAgICAgIHVpbnQzMl90IGZvcm1hdCgpIGNvbnN0
OwotICAgICAgICB1aW50MzJfdCBzdHJpZGUoKSBjb25zdDsKLQotICAgICAgICBib29sIGlzUmVs
ZWFzZWQoKTsKLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsK
LQotICAgICAgICBHQ0dMRGlzcGxheSBtX2Rpc3BsYXk7Ci0KLSAgICAgICAgZ2JtX2JvKiBtX0JP
IHsgbnVsbHB0ciB9OwotICAgICAgICBpbnQgbV9GRCB7IC0xIH07Ci0gICAgICAgIEVHTEltYWdl
IG1faW1hZ2U7Ci0gICAgfTsKKyAgICAgICAgR0NHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5IHsg
RUdMX05PX0RJU1BMQVkgfTsKKyAgICAgICAgUmVmUHRyPEdCTUJ1ZmZlclN3YXBjaGFpbj4gc3dh
cGNoYWluOworICAgICAgICBSZWZQdHI8R0JNQnVmZmVyU3dhcGNoYWluOjpCdWZmZXI+IGN1cnJl
bnRCdWZmZXI7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdMSW1hZ2VCYWNraW5nPiBtX3RleHR1
cmVCYWNraW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFR0xJbWFnZUJhY2tpbmc+IG1fY29tcG9z
aXRvclRleHR1cmVCYWNraW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFR0xJbWFnZUJhY2tpbmc+
IG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmc7CisgICAgICAgIEhhc2hNYXA8dWludDMyX3Qs
IEVHTEltYWdlS0hSLCBXVEY6OkRlZmF1bHRIYXNoPHVpbnQzMl90PiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+IGltYWdlczsKKyAgICB9IG1fc3dhcGNoYWlu
OwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJl
TWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+IG1fdGV4bWFwTGF5ZXI7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFHQ0dMQU5HTEVMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCmluZGV4IDI0MjUxZmNhZWMw
Mi4uZGExZGIzMTc2YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5H
TEVMYXllci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJEbWFidWYuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
RE1BQnVmLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMLmgi
CiAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKQEAgLTUyLDI0ICs1MywzMyBAQCB2b2lkIEdDR0xBTkdM
RUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBhdXRvJiBwcm94eSA9IGRvd25jYXN0
PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjb250ZW50TGF5ZXIoKS5p
bXBsKCkpLnByb3h5KCk7CiAgICAgYXV0byBzaXplID0gbV9jb250ZXh0LmdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCk7CiAKLSAgICBpZiAobV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVC
YWNraW5nKSB7Ci0gICAgICAgIGlmIChtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tp
bmctPmlzUmVsZWFzZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIGZv
cm1hdCA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+Zm9ybWF0KCk7Ci0g
ICAgICAgIGF1dG8gc3RyaWRlID0gbV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNraW5n
LT5zdHJpZGUoKTsKLSAgICAgICAgYXV0byBmZCA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0
dXJlQmFja2luZy0+ZmQoKTsKLQorICAgIGlmIChtX2NvbnRleHQubV9zd2FwY2hhaW4uY3VycmVu
dEJ1ZmZlcikgewogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJveHku
bG9jaygpIH07Ci0gICAgICAgICAgICBBU1NFUlQoaXM8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eUdMPihwcm94eSkpOwotICAgICAgICAgICAgZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eUdMPihwcm94eSkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zj4oc2l6ZSwgZm9ybWF0LCBzdHJpZGUsIGZkKSk7
CisgICAgICAgICAgICBpZiAoIXByb3h5LmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5RE1BQnVmPihwcm94eSkpOworICAgICAgICAgICAgVGV4dHVyZU1hcHBlckdM
OjpGbGFncyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmU7CisgICAg
ICAgICAgICBpZiAobV9jb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEpCisgICAgICAg
ICAgICAgICAgZmxhZ3MgfD0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZDsKKyAgICAgICAg
ICAgIGRvd25jYXN0PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY+KHByb3h5
KS5wdXNoRE1BQnVmKAorICAgICAgICAgICAgICAgIERNQUJ1Zk9iamVjdChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obV9jb250ZXh0Lm1fc3dhcGNoYWluLnN3YXBjaGFpbi5nZXQoKSkgKyBt
X2NvbnRleHQubV9zd2FwY2hhaW4uY3VycmVudEJ1ZmZlci0+aGFuZGxlKCkpLAorICAgICAgICAg
ICAgICAgIFsmXShhdXRvJiYgb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
X2NvbnRleHQubV9zd2FwY2hhaW4uY3VycmVudEJ1ZmZlci0+Y3JlYXRlRE1BQnVmT2JqZWN0KG9i
amVjdC5oYW5kbGUpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZmxhZ3Mp
OwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiR0NHTEFOR0xFUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIC0tIGRpc3Bs
YXllZCBidWZmZXIgJXBcbiIsIG1fY29udGV4dC5tX3N3YXBjaGFpbi5jdXJyZW50QnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgfQorICAgICAgICBtX2NvbnRleHQubV9zd2FwY2hhaW4uY3VycmVudEJ1
ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiAwCiAgICAgLy8gRmFsbGJhY2sgcGF0aCwg
cmVhZCBiYWNrIHRleHR1cmUgdG8gbWFpbiBtZW1vcnkKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQpAQCAtOTAsMTEgKzEw
MCwxMiBAQCB2b2lkIEdDR0xBTkdMRUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICAg
ICAgZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMPihwcm94eSkucHVz
aE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAgIH0KICAgICBtX2NvbnRleHQu
bWFya0xheWVyQ29tcG9zaXRlZCgpOworI2VuZGlmCiB9CiAKIEdDR0xBTkdMRUxheWVyOjpHQ0dM
QU5HTEVMYXllcihHcmFwaGljc0NvbnRleHRHTEFOR0xFJiBjb250ZXh0KQogICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCi0gICAgLCBtX2NvbnRlbnRMYXllcihOaWNvc2lhOjpDb250ZW50TGF5ZXI6
OmNyZWF0ZShOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFj
dG9yeSgqdGhpcykpKQorICAgICwgbV9jb250ZW50TGF5ZXIoTmljb3NpYTo6Q29udGVudExheWVy
OjpjcmVhdGUoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZh
Y3RvcnkoKnRoaXMsIGFkb3B0UmVmKCpuZXcgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eURNQUJ1ZikpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggODU0ODEzNGQ0ODIwLi5iMWUwMTlkMWY0ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFLmNwcApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXJEaXNwbGF5
RGVsZWdhdGUuaCIKIAogI2lmIFVTRShOSUNPU0lBKQorI2luY2x1ZGUgIkRNQUJ1ZkZvcm1hdC5o
IgorI2luY2x1ZGUgIkdCTUJ1ZmZlclN3YXBjaGFpbi5oIgogI2luY2x1ZGUgIkdCTURldmljZS5o
IgogI2luY2x1ZGUgIk5pY29zaWFHQ0dMQU5HTEVMYXllci5oIgogCkBAIC0xNjMsMTIgKzE2NSw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUluaXRpYWxp
emUoKQogICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVM
YXllcj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRM
YXllcigpKTsKIAotICAgIGNvbnN0IGF1dG8mIGdibURldmljZSA9IEdCTURldmljZTo6Z2V0KCk7
Ci0gICAgaWYgKGdibURldmljZS5kZXZpY2UoKSkgewotICAgICAgICBtX3RleHR1cmVCYWNraW5n
ID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsKLSAgICAg
ICAgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5pcXVlPEVHTEltYWdlQmFja2lu
Zz4ocGxhdGZvcm1EaXNwbGF5KCkpOwotICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNr
aW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsKLSAg
ICB9CisgICAgbV9zd2FwY2hhaW4ucGxhdGZvcm1EaXNwbGF5ID0gbV9kaXNwbGF5T2JqOwogI2Vs
c2UKICAgICBtX3RleG1hcExheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0NHTFBsYXRm
b3JtTGF5ZXI+KCp0aGlzKTsKICAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBQ
bGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSk7
CkBAIC0xOTcsMjQgKzE5NCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIEdMX0dlbkZyYW1lYnVmZmVycygxLCAmbV9mYm8p
OwogICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogCi0gICAg
R0xfR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwotICAgIEdMX0JpbmRUZXh0
dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOwotICAgIEdMX1RleFBhcmFt
ZXRlcmYodGV4dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwot
ICAgIEdMX1RleFBhcmFtZXRlcmYodGV4dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9MSU5FQVIpOwotICAgIEdMX1RleFBhcmFtZXRlcmkodGV4dHVyZVRhcmdldCwgR0xfVEVY
VFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIEdMX1RleFBhcmFtZXRlcmkodGV4
dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotCi0jaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIEdMX0dlblRleHR1cmVzKDEsICZtX2ludGVy
bWVkaWF0ZVRleHR1cmUpOwotICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50
ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgR0xfVGV4UGFyYW1ldGVyZih0ZXh0dXJlVGFyZ2V0LCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgR0xfVGV4UGFyYW1ldGVyZih0
ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgR0xf
VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBf
VE9fRURHRSk7Ci0gICAgR0xfVGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJF
X1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0KLSAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJl
VGFyZ2V0LCAwKTsKLSNlbmRpZgotCiAgICAgLy8gQ3JlYXRlIGEgbXVsdGlzYW1wbGUgRkJPLgog
ICAgIEFTU0VSVChtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX3N0YXRlLmJvdW5kRHJhd0ZCTyk7
CiAgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSB7CkBAIC0yMzYsOTMgKzIxNSwxMiBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
ICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCk7
CiB9CiAKLSNpZiBVU0UoTklDT1NJQSkKLUdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdl
QmFja2luZzo6RUdMSW1hZ2VCYWNraW5nKEdDR0xEaXNwbGF5IGRpc3BsYXkpCi0gICAgOiBtX2Rp
c3BsYXkoZGlzcGxheSkKLSAgICAsIG1faW1hZ2UoRUdMX05PX0lNQUdFKQotewotfQotCi1HcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6On5FR0xJbWFnZUJhY2tpbmcoKQot
ewotICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKLX0KLQotdWludDMyX3QgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpmb3JtYXQoKSBjb25zdAotewotICAgIGlmIChtX0JP
KQotICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9mb3JtYXQobV9CTyk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLXVpbnQzMl90IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6
c3RyaWRlKCkgY29uc3QKLXsKLSAgICBpZiAobV9CTykKLSAgICAgICAgcmV0dXJuIGdibV9ib19n
ZXRfc3RyaWRlKG1fQk8pOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291cmNlcygpCi17Ci0gICAgaWYg
KG1fQk8pIHsKLSAgICAgICAgZ2JtX2JvX2Rlc3Ryb3kobV9CTyk7Ci0gICAgICAgIG1fQk8gPSBu
dWxscHRyOwotICAgIH0KLSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBFR0xfRGVzdHJveUlt
YWdlS0hSKG1fZGlzcGxheSwgbV9pbWFnZSk7Ci0gICAgICAgIG1faW1hZ2UgPSBFR0xfTk9fSU1B
R0U7Ci0gICAgfQotICAgIGlmIChtX0ZEID49IDApIHsKLSAgICAgICAgY2xvc2UobV9GRCk7Ci0g
ICAgICAgIG1fRkQgPSAtMTsKLSAgICB9Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6RUdMSW1hZ2VCYWNraW5nOjppc1JlbGVhc2VkKCkKLXsKLSAgICByZXR1cm4gIW1fQk87Ci19
Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpyZXNldChp
bnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wgaGFzQWxwaGEpCi17Ci0gICAgcmVsZWFzZVJlc291
cmNlcygpOwotCi0gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBjb25zdCBhdXRvJiBnYm1EZXZpY2UgPSBHQk1EZXZpY2U6OmdldCgpOwotICAg
IG1fQk8gPSBnYm1fYm9fY3JlYXRlKGdibURldmljZS5kZXZpY2UoKSwgd2lkdGgsIGhlaWdodCwg
aGFzQWxwaGEgPyBHQk1fQk9fRk9STUFUX0FSR0I4ODg4IDogR0JNX0JPX0ZPUk1BVF9YUkdCODg4
OCwgR0JNX0JPX1VTRV9SRU5ERVJJTkcpOwotICAgIGlmIChtX0JPKSB7Ci0gICAgICAgIG1fRkQg
PSBnYm1fYm9fZ2V0X2ZkKG1fQk8pOwotICAgICAgICBpZiAobV9GRCA+PSAwKSB7Ci0gICAgICAg
ICAgICBFR0xpbnQgaW1hZ2VBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgICAgICAgICAgRUdMX1dJ
RFRILCB3aWR0aCwKLSAgICAgICAgICAgICAgICBFR0xfSEVJR0hULCBoZWlnaHQsCi0gICAgICAg
ICAgICAgICAgRUdMX0xJTlVYX0RSTV9GT1VSQ0NfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGdi
bV9ib19nZXRfZm9ybWF0KG1fQk8pKSwKLSAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFO
RTBfRkRfRVhULCBtX0ZELAotICAgICAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRD
SF9FWFQsIHN0YXRpY19jYXN0PEVHTGludD4oZ2JtX2JvX2dldF9zdHJpZGUobV9CTykpLAotICAg
ICAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9PRkZTRVRfRVhULCAwLAotICAgICAgICAg
ICAgICAgIEVHTF9OT05FCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbV9pbWFnZSA9IEVH
TF9DcmVhdGVJbWFnZUtIUihtX2Rpc3BsYXksIEVHTF9OT19DT05URVhULCBFR0xfTElOVVhfRE1B
X0JVRl9FWFQsIChFR0xDbGllbnRCdWZmZXIpbnVsbHB0ciwgaW1hZ2VBdHRyaWJ1dGVzKTsKLSAg
ICAgICAgICAgIGlmIChtX2ltYWdlKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmVsZWFzZVJlc291cmNlcygpOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLSNlbmRpZgotCiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0
R0xBTkdMRSgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKICAgICBpZiAobV90ZXh0dXJlKQog
ICAgICAgICBHTF9EZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICBpZiAobV9jb21w
b3NpdG9yVGV4dHVyZSkKLSAgICAgICAgR0xfRGVsZXRlVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRv
clRleHR1cmUpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
IApAQCAtMzM2LDkgKzIzNCw2IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6On5HcmFwaGljc0Nv
bnRleHRHTEFOR0xFKCkKICAgICAgICAgICAgIEdMX0RlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1f
ZGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICB9CiAgICAgR0xfRGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZtX2Zibyk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIEdMX0RlbGV0ZVRl
eHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotI2VuZGlmCiB9CiAKIEdDR0xEaXNw
bGF5IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0CkBAIC0z
NTMsOSArMjQ4LDU2IEBAIEdDR0xDb25maWcgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZv
cm1Db25maWcoKSBjb25zdAogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250
ZXh0Q3VycmVudCgpCiB7Ci0gICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29u
dGV4dE9iaikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVu
dChtX2Rpc3BsYXlPYmosIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgbV9jb250ZXh0
T2JqKTsKKyAgICBib29sIHJlc3VsdCA9CisgICAgICAgIFsmXSB7CisgICAgICAgICAgICBpZiAo
RUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0T2JqKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuICEhRUdMX01ha2VDdXJyZW50KG1fZGlz
cGxheU9iaiwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBtX2NvbnRleHRPYmopOwor
ICAgICAgICB9KCk7CisgICAgaWYgKHJlc3VsdCAmJiBtX3N3YXBjaGFpbi5zd2FwY2hhaW4gJiYg
IW1fc3dhcGNoYWluLmN1cnJlbnRCdWZmZXIpIHsKKyAgICAgICAgYXV0byBzaXplID0gZ2V0SW50
ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAgICAgICAgaWYgKDApIHsKKyAgICAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50
KCk6IG1fc3dhcGNoYWluIHsgc3dhcGNoYWluICVwLCBjdXJyZW50QnVmZmVyICVwIH0gc2l6ZSAo
JWQsJWQpXG4iLAorICAgICAgICAgICAgICAgIG1fc3dhcGNoYWluLnN3YXBjaGFpbi5nZXQoKSwg
bV9zd2FwY2hhaW4uY3VycmVudEJ1ZmZlci5nZXQoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKKyAgICAgICAgfQorICAgICAgICBtX3N3YXBjaGFpbi5jdXJyZW50QnVmZmVyID0gbV9z
d2FwY2hhaW4uc3dhcGNoYWluLT5nZXRCdWZmZXIoCisgICAgICAgICAgICBHQk1CdWZmZXJTd2Fw
Y2hhaW46OkJ1ZmZlckRlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgICAgICAuZm9ybWF0ID0gRE1B
QnVmRm9ybWF0OjpjcmVhdGUodWludDMyX3QoY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IERN
QUJ1ZkZvcm1hdDo6Rm91ckNDOjpBUkdCODg4OCA6IERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpYUkdC
ODg4OCkpLAorICAgICAgICAgICAgICAgIC53aWR0aCA9IHN0ZDo6Y2xhbXA8dWludDMyX3Q+KHNp
emUud2lkdGgoKSwgMCwgVUlOVF9NQVgpLAorICAgICAgICAgICAgICAgIC5oZWlnaHQgPSBzdGQ6
OmNsYW1wPHVpbnQzMl90PihzaXplLmhlaWdodCgpLCAwLCBVSU5UX01BWCksCisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgaWYgKDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICBy
ZXRyaWV2ZWQgYnVmZmVyICVwLCBoYW5kbGUgJXVcbiIsIG1fc3dhcGNoYWluLmN1cnJlbnRCdWZm
ZXIuZ2V0KCksIG1fc3dhcGNoYWluLmN1cnJlbnRCdWZmZXItPmhhbmRsZSgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKKyAgICAgICAgICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJl
QmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9y
RHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdl
dCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG1fc3dhcGNoYWluLmltYWdlcy5lbnN1cmUobV9zd2FwY2hhaW4uY3VycmVudEJ1ZmZlci0+aGFu
ZGxlKCksCisgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBk
bWFidWZPYmplY3QgPSBtX3N3YXBjaGFpbi5jdXJyZW50QnVmZmVyLT5jcmVhdGVETUFCdWZPYmpl
Y3QoMCk7CisKKyAgICAgICAgICAgICAgICAgICAgRUdMaW50IGltYWdlQXR0cmlidXRlc1tdID0g
eworICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1dJRFRILCBFR0xpbnQoZG1hYnVmT2JqZWN0
LmZvcm1hdC5wbGFuZVdpZHRoKDAsIGRtYWJ1Zk9iamVjdC53aWR0aCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMX0hFSUdIVCwgRUdMaW50KGRtYWJ1Zk9iamVjdC5mb3JtYXQucGxhbmVI
ZWlnaHQoMCwgZG1hYnVmT2JqZWN0LmhlaWdodCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
RUdMX0xJTlVYX0RSTV9GT1VSQ0NfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGRtYWJ1Zk9iamVj
dC5mb3JtYXQucGxhbmVzWzBdLmZvdXJjYyksCisgICAgICAgICAgICAgICAgICAgICAgICBFR0xf
RE1BX0JVRl9QTEFORTBfRkRfRVhULCBkbWFidWZPYmplY3QuZmRbMF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBzdGF0aWNfY2FzdDxFR0xp
bnQ+KGRtYWJ1Zk9iamVjdC5zdHJpZGVbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgRUdM
X0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBF
R0xfTk9ORQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRUdMX0NyZWF0ZUltYWdlS0hSKG1fc3dhcGNoYWluLnBsYXRmb3JtRGlzcGxheSwgRUdMX05P
X0NPTlRFWFQsIEVHTF9MSU5VWF9ETUFfQlVGX0VYVCwgKEVHTENsaWVudEJ1ZmZlciludWxscHRy
LCBpbWFnZUF0dHJpYnV0ZXMpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYg
KDApIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgYXR0YWNoaW5nIHRvIEVH
TEltYWdlICVwXG4iLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyAg
ICAgICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQsIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y2hlY2tHUFVTdGF0dXMoKQpA
QCAtMzc4LDM3ICszMjAsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6
OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCiAgICAgY29uc3QgaW50IGhlaWdodCA9IHNp
emUuaGVpZ2h0KCk7CiAgICAgR0x1aW50IGNvbG9yRm9ybWF0ID0gYXR0cnMuYWxwaGEgPyBHTF9S
R0JBIDogR0xfUkdCOwogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQoKTsKLSAgICBHTHVpbnQgaW50ZXJuYWxDb2xvckZvcm1hdCA9IHRleHR1cmVU
YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCA/IGNvbG9yRm9ybWF0IDogbV9pbnRlcm5hbENvbG9yRm9y
bWF0OwotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX3RleHR1cmVC
YWNraW5nKQotICAgICAgICBtX3RleHR1cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBh
dHRycy5hbHBoYSk7Ci0gICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nKQotICAgICAg
ICBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+cmVzZXQod2lkdGgsIGhlaWdodCwgYXR0cnMu
YWxwaGEpOwotICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nKQotICAgICAgICBt
X2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5h
bHBoYSk7CisgICAgZnByaW50ZihzdGRlcnIsICJHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZXNo
YXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKSA9PiBzaXplICglZCwlZClcbiIsIHdpZHRoLCBoZWln
aHQpOworCisjaWYgVVNFKE5JQ09TSUEpCisgICAgbV9zd2FwY2hhaW4gPSBTd2FwY2hhaW4ocGxh
dGZvcm1EaXNwbGF5KCkpOwogI2VuZGlmCiAKICAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRp
bmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdp
bmdUYXJnZXQodGV4dHVyZVRhcmdldCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0g
VEVYVFVSRV9SRUNUQU5HTEVfQVJCKTsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0g
ICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmUpIHsKLSAgICAgICAgR0xfQmluZFRleHR1cmUodGV4
dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIGlmIChtX2NvbXBvc2l0
b3JUZXh0dXJlQmFja2luZyAmJiBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkK
LSAgICAgICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQs
IG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7
Ci0gICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50ZXJtZWRpYXRlVGV4
dHVyZSk7Ci0gICAgICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nICYmIG1faW50
ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCi0gICAgICAgICAgICBHTF9FR0xJbWFn
ZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0ZVRleHR1cmVC
YWNraW5nLT5pbWFnZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgR0xfVGV4SW1hZ2Uy
RCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAw
LCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgfQotICAgIEdMX0JpbmRU
ZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7Ci0gICAgaWYgKG1fdGV4dHVyZUJhY2tp
bmcgJiYgbV90ZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkKLSAgICAgICAgR0xfRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVModGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7
Ci0gICAgZWxzZQotICAgICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVy
bmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05F
RF9CWVRFLCAwKTsKLSNlbHNlCisjaWYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBH
TF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICBH
TF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICBHTF9C
aW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOwpAQCAtNDI4LDYgKzM0NywyMiBA
QCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFk
Q29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwog
fQogCitHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpTd2FwY2hhaW46OlN3YXBjaGFpbigpID0gZGVm
YXVsdDsKKworR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6U3dhcGNoYWluOjpTd2FwY2hhaW4oR0NH
TERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KQorICAgIDogcGxhdGZvcm1EaXNwbGF5KHBsYXRmb3Jt
RGlzcGxheSkKKyAgICAsIHN3YXBjaGFpbihhZG9wdFJlZihuZXcgR0JNQnVmZmVyU3dhcGNoYWlu
KEdCTUJ1ZmZlclN3YXBjaGFpbjo6QnVmZmVyU3dhcGNoYWluU2l6ZTo6Rm91cikpKQoreyB9CisK
K0dyYXBoaWNzQ29udGV4dEdMQU5HTEU6OlN3YXBjaGFpbjo6flN3YXBjaGFpbigpCit7CisgICAg
YXV0byBpbWFnZXNDb3B5ID0gV1RGTW92ZShpbWFnZXMpOworICAgIGZvciAoRUdMSW1hZ2VLSFIg
aW1hZ2UgOiBpbWFnZXNDb3B5LnZhbHVlcygpKSB7CisgICAgICAgIGlmIChpbWFnZSAhPSBFR0xf
Tk9fSU1BR0VfS0hSKQorICAgICAgICAgICAgRUdMX0Rlc3Ryb3lJbWFnZUtIUihwbGF0Zm9ybURp
c3BsYXksIGltYWdlKTsKKyAgICB9Cit9CisKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455475</attachid>
            <date>2022-03-23 02:07:53 -0700</date>
            <delta_ts>2022-03-24 05:19:40 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-237883-20220323100752.patch</filename>
            <type>text/plain</type>
            <size>21324</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhkNDQ5NDBiMWM0ZTk2
OTkxZmRjMDllYjk5OTczYjcwOGMxMDA4OS4uY2MxZjUxNmViMTRmMWY5NDFmNzUwMDM3OWFmYmZm
MTAzMzZmYWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAzLTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVz
ZSBHQk1CdWZmZXJTd2FwY2hhaW4gaW4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDR0xB
TkdMRUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKE5pY29zaWE6OkdDR0xB
TkdMRUxheWVyOjpHQ0dMQU5HTEVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0
Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUlu
aXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVUZXh0dXJlSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6
cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpTd2FwY2hhaW46OlN3YXBjaGFpbik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6U3dhcGNo
YWluOjp+U3dhcGNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OkVHTEltYWdlQmFja2luZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6RUdMSW1hZ2VCYWNraW5nOjp+RUdMSW1hZ2VCYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJh
Y2tpbmc6OmZvcm1hdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpzdHJpZGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291cmNlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6
RUdMSW1hZ2VCYWNraW5nOjppc1JlbGVhc2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuaDoKKwogMjAyMi0wMy0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBQ
Q00gdG8gU0tBZE5ldHdvcmsgYnJpZGdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdD
R0xBTkdMRUxheWVyLmNwcAppbmRleCA3OWNmNjI4MDI1MmY4ZmFmMGQ0ZDEwMTkzODg3NjBhMzQy
NGVhYjI5Li5jY2MzZTI5ZmExYjA3ZWRmZTk1NWZhMmY4Mzg2NTA4ZDFhMWZmMDQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0NHTEFOR0xFTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKQEAgLTM2LDcgKzM2
LDggQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckRtYWJ1Zi5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zi5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5oIgogCiBuYW1l
c3BhY2UgTmljb3NpYSB7CkBAIC01MywyMyArNTQsMzAgQEAgdm9pZCBHQ0dMQU5HTEVMYXllcjo6
c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY29udGVudExheWVyKCkuaW1wbCgpKS5w
cm94eSgpOwogICAgIGF1dG8gc2l6ZSA9IG1fY29udGV4dC5nZXRJbnRlcm5hbEZyYW1lYnVmZmVy
U2l6ZSgpOwogCi0gICAgaWYgKG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZykg
ewotICAgICAgICBpZiAobV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5pc1Jl
bGVhc2VkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBmb3JtYXQgPSBt
X2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmZvcm1hdCgpOwotICAgICAgICBh
dXRvIHN0cmlkZSA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+c3RyaWRl
KCk7Ci0gICAgICAgIGF1dG8gZmQgPSBtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tp
bmctPmZkKCk7Ci0KKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorICAgIGlmIChpczxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1BQnVmPihwcm94eSkgJiYgbV9jb250ZXh0
Lm1fc3dhcGNoYWluLmJvKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyBwcm94eS5sb2NrKCkgfTsKLSAgICAgICAgICAgIEFTU0VSVChpczxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5R0w+KHByb3h5KSk7Ci0gICAgICAgICAgICBkb3duY2FzdDxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w+KHByb3h5KS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmPihzaXplLCBmb3JtYXQsIHN0cmlk
ZSwgZmQpKTsKKyAgICAgICAgICAgIGlmICghcHJveHkuaXNBY3RpdmUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3Mg
PSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlOworICAgICAgICAgICAgaWYgKG1f
Y29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLmFscGhhKQorICAgICAgICAgICAgICAgIGZsYWdz
IHw9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQ7CisKKyAgICAgICAgICAgIGRvd25jYXN0
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY+KHByb3h5KS5wdXNoRE1BQnVm
KAorICAgICAgICAgICAgICAgIERNQUJ1Zk9iamVjdChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4obV9jb250ZXh0Lm1fc3dhcGNoYWluLnN3YXBjaGFpbi5nZXQoKSkgKyBtX2NvbnRleHQubV9z
d2FwY2hhaW4uYm8tPmhhbmRsZSgpKSwKKyAgICAgICAgICAgICAgICBbJl0oYXV0byYmIG9iamVj
dCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9jb250ZXh0Lm1fc3dhcGNoYWluLmJv
LT5jcmVhdGVETUFCdWZPYmplY3Qob2JqZWN0LmhhbmRsZSk7CisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBmbGFncyk7CiAgICAgICAgIH0KIAorICAgICAgICBtX2NvbnRleHQu
bV9zd2FwY2hhaW4uYm8gPSBudWxscHRyOwogICAgICAgICBtX2NvbnRleHQubWFya0xheWVyQ29t
cG9zaXRlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKICAgICAvLyBGYWxs
YmFjayBwYXRoLCByZWFkIGJhY2sgdGV4dHVyZSB0byBtYWluIG1lbW9yeQogICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpAQCAtOTMsOSArMTAxLDE2IEBAIHZvaWQg
R0NHTEFOR0xFTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgIG1fY29udGV4dC5tYXJr
TGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQor
dXNpbmcgUGxhdGZvcm1MYXllclByb3h5VHlwZSA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHlETUFCdWY7CisjZWxzZQordXNpbmcgUGxhdGZvcm1MYXllclByb3h5VHlwZSA9IFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDsKKyNlbmRpZgorCisKIEdDR0xBTkdMRUxheWVy
OjpHQ0dMQU5HTEVMYXllcihHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRSYgY29u
dGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9jb250ZW50TGF5ZXIoTmlj
b3NpYTo6Q29udGVudExheWVyOjpjcmVhdGUoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKnRoaXMpKSkKKyAgICAsIG1fY29udGVudExheWVyKE5p
Y29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRlKE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0aGlzLCBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5
ZXJQcm94eVR5cGUpKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xB
TkdMRUxheWVyLmgKaW5kZXggYTQ0MTE1ODNlNWNlYTU5OTA5NjI2ZmI3YWM0MDAwODQwMjYyZDZm
ZC4uNTM4ZTA1NjU4OGE0MGE4OTIxOTViYzFkZDk3YmU0ZGRiYWM3MTYwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdD
R0xBTkdMRUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNp
ZiBVU0UoTklDT1NJQSkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQogCiAjaW5jbHVkZSAiTmljb3Np
YUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgogCiB0
eXBlZGVmIHZvaWQgKkVHTENvbmZpZzsKIHR5cGVkZWYgdm9pZCAqRUdMQ29udGV4dDsKQEAgLTQw
LDcgKzM5LDYgQEAgdHlwZWRlZiB2b2lkICpFR0xTdXJmYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBJbnRTaXplOwotY2xhc3MgR0xDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU7CiBjbGFzcyBQbGF0Zm9ybURpc3BsYXk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApp
bmRleCBkZTRkOThjNTYxMDRjOGExMmQ1OGFiNDcxZjE3ZWFkY2ZmODMzNDVlLi4xMzEyNWMyNDI1
OTFlYTIzMWI2MTAwZTdmNzcwYWEyNzM4ZGU0Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTkxLDkgKzkxLDUwIEBA
IEdDR0xDb25maWcgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1Db25maWcoKSBjb25z
dAogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7
Ci0gICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dE9iaikKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXlPYmos
IEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgbV9jb250ZXh0T2JqKTsKKyAgICBhdXRv
IG1hZGVDdXJyZW50ID0KKyAgICAgICAgWyZdIHsKKyAgICAgICAgICAgIGlmIChFR0xfR2V0Q3Vy
cmVudENvbnRleHQoKSA9PSBtX2NvbnRleHRPYmopCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICByZXR1cm4gISFFR0xfTWFrZUN1cnJlbnQobV9kaXNwbGF5T2JqLCBF
R0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIG1fY29udGV4dE9iaik7CisgICAgICAgIH0o
KTsKKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9ETUFCVUYpCisgICAgYXV0byYgY29udGV4dCA9
IHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFJj4oKnRoaXMp
OworICAgIGlmIChtYWRlQ3VycmVudCAmJiBjb250ZXh0Lm1fc3dhcGNoYWluLnN3YXBjaGFpbiAm
JiAhY29udGV4dC5tX3N3YXBjaGFpbi5ibykgeworICAgICAgICBhdXRvIHNpemUgPSBnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpOworICAgICAgICBjb250ZXh0Lm1fc3dhcGNoYWluLmJvID0g
Y29udGV4dC5tX3N3YXBjaGFpbi5zd2FwY2hhaW4tPmdldEJ1ZmZlcigKKyAgICAgICAgICAgIEdC
TUJ1ZmZlclN3YXBjaGFpbjo6QnVmZmVyRGVzY3JpcHRpb24geworICAgICAgICAgICAgICAgIC5m
b3JtYXQgPSBETUFCdWZGb3JtYXQ6OmNyZWF0ZSh1aW50MzJfdChjb250ZXh0QXR0cmlidXRlcygp
LmFscGhhID8gRE1BQnVmRm9ybWF0OjpGb3VyQ0M6OkFSR0I4ODg4IDogRE1BQnVmRm9ybWF0OjpG
b3VyQ0M6OlhSR0I4ODg4KSksCisgICAgICAgICAgICAgICAgLndpZHRoID0gc3RkOjpjbGFtcDx1
aW50MzJfdD4oc2l6ZS53aWR0aCgpLCAwLCBVSU5UX01BWCksCisgICAgICAgICAgICAgICAgLmhl
aWdodCA9IHN0ZDo6Y2xhbXA8dWludDMyX3Q+KHNpemUuaGVpZ2h0KCksIDAsIFVJTlRfTUFYKSwK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKKyAgICAgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5k
aW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3
aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9
IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBjb250ZXh0
Lm1fc3dhcGNoYWluLmltYWdlcy5lbnN1cmUoY29udGV4dC5tX3N3YXBjaGFpbi5iby0+aGFuZGxl
KCksCisgICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgIGF1dG8gZG1hYnVmT2JqZWN0
ID0gY29udGV4dC5tX3N3YXBjaGFpbi5iby0+Y3JlYXRlRE1BQnVmT2JqZWN0KDApOworCisgICAg
ICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PEVHTGludD4gYXR0cmlidXRlcyB7Cisg
ICAgICAgICAgICAgICAgICAgIEVHTF9XSURUSCwgRUdMaW50KGRtYWJ1Zk9iamVjdC5mb3JtYXQu
cGxhbmVXaWR0aCgwLCBkbWFidWZPYmplY3Qud2lkdGgpKSwKKyAgICAgICAgICAgICAgICAgICAg
RUdMX0hFSUdIVCwgRUdMaW50KGRtYWJ1Zk9iamVjdC5mb3JtYXQucGxhbmVIZWlnaHQoMCwgZG1h
YnVmT2JqZWN0LmhlaWdodCkpLAorICAgICAgICAgICAgICAgICAgICBFR0xfTElOVVhfRFJNX0ZP
VVJDQ19FWFQsIHN0YXRpY19jYXN0PEVHTGludD4oZG1hYnVmT2JqZWN0LmZvcm1hdC5wbGFuZXNb
MF0uZm91cmNjKSwKKyAgICAgICAgICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VY
VCwgZG1hYnVmT2JqZWN0LmZkWzBdLAorICAgICAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9Q
TEFORTBfUElUQ0hfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGRtYWJ1Zk9iamVjdC5zdHJpZGVb
MF0pLAorICAgICAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgRUdMX05PTkUsCisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRUdMX0NyZWF0ZUltYWdlS0hSKGNvbnRleHQubV9zd2FwY2hh
aW4ucGxhdGZvcm1EaXNwbGF5LCBFR0xfTk9fQ09OVEVYVCwgRUdMX0xJTlVYX0RNQV9CVUZfRVhU
LCAoRUdMQ2xpZW50QnVmZmVyKW51bGxwdHIsIHN0ZDo6ZGF0YShhdHRyaWJ1dGVzKSk7CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3Rl
eHR1cmUpOworICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFy
Z2V0LCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgR0xfQmluZFRleHR1cmUodGV4
dHVyZVRhcmdldCwgMCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gbWFkZUN1cnJlbnQ7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y2hlY2tHUFVTdGF0dXMoKQpAQCAt
MTMyLDEyICsxNzMsMTQgQEAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6On5H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRSgpCiAgICAgYm9vbCBzdWNjZXNzID0g
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNz
KTsKIAorI2lmICFVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQogICAgIGlmIChtX2NvbXBvc2l0
b3JUZXh0dXJlKQogICAgICAgICBHTF9EZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4
dHVyZSk7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2ludGVybWVk
aWF0ZVRleHR1cmUpCiAgICAgICAgIEdMX0RlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0
ZVRleHR1cmUpOwogI2VuZGlmCisjZW5kaWYKIH0KIAogUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQpAQCAtMTY2LDkgKzIwOSw4IEBAIFJlZlB0
cjxWaWRlb0ZyYW1lPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQogewotICAgIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICNpZiBFTkFC
TEUoV0VCR0wyKQotICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9
PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIG1faXNGb3JXZWJH
TDIgPSBjb250ZXh0QXR0cmlidXRlcygpLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRH
TFdlYkdMVmVyc2lvbjo6V2ViR0wyOwogI2VuZGlmCiAKICAgICBWZWN0b3I8RUdMaW50PiBkaXNw
bGF5QXR0cmlidXRlcyB7CkBAIC0yNzIsMTcgKzMxNCwxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogI2lmIFVTRShOSUNP
U0lBKQogICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVM
YXllcj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRM
YXllcigpKTsKLQotICAgIGNvbnN0IGF1dG8mIGdibURldmljZSA9IEdCTURldmljZTo6c2luZ2xl
dG9uKCk7Ci0gICAgaWYgKGdibURldmljZS5kZXZpY2UoKSkgewotICAgICAgICBtX3RleHR1cmVC
YWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsK
LSAgICAgICAgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5pcXVlPEVHTEltYWdl
QmFja2luZz4ocGxhdGZvcm1EaXNwbGF5KCkpOwotICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1
cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgp
KTsKLSAgICB9CiAjZWxzZQogICAgIG1fdGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVN
YXBwZXJHQ0dMUGxhdGZvcm1MYXllcj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtX3RleG1h
cExheWVyLmdldCgpKTsKICNlbmRpZgorCiAgICAgYm9vbCBzdWNjZXNzID0gbWFrZUNvbnRleHRD
dXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIApAQCAtMzA3
LDYgKzM0Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBs
YXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgR0xfR2VuRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CiAg
ICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKKyNpZiAhVVNF
KFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKICAgICBHTF9HZW5UZXh0dXJlcygxLCAmbV9jb21wb3Np
dG9yVGV4dHVyZSk7CiAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3Np
dG9yVGV4dHVyZSk7CiAgICAgR0xfVGV4UGFyYW1ldGVyZih0ZXh0dXJlVGFyZ2V0LCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CkBAIC0zMjMsNiArMzYwLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAg
ICBHTF9UZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9D
TEFNUF9UT19FREdFKTsKIAogICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIDApOwor
I2VuZGlmCiAjZW5kaWYKIAogICAgIC8vIENyZWF0ZSBhIG11bHRpc2FtcGxlIEZCTy4KQEAgLTM1
MywxMSArMzkxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6
OnByZXBhcmVUZXh0dXJlSW1wbCgpCiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkuYW50aWFs
aWFzKQogICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7CiAKKyNpZiAh
VVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKICAgICBzdGQ6OnN3YXAobV90ZXh0dXJlLCBtX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3Rk
Ojpzd2FwKG1fdGV4dHVyZSwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKLSAgICBzdGQ6OnN3YXAo
bV90ZXh0dXJlQmFja2luZywgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcpOwotICAgIHN0ZDo6
c3dhcChtX3RleHR1cmVCYWNraW5nLCBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nKTsKKyNl
bmRpZgogI2VuZGlmCiAKICAgICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1f
ZmJvKTsKQEAgLTM3NCw0MyArNDEyLDI3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCiAKIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygp
CiB7CisgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dCgpOworICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3
aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0
KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIp
OworCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKKyAgICBtX3N3YXBjaGFpbiA9IFN3
YXBjaGFpbihwbGF0Zm9ybURpc3BsYXkoKSk7CisjZWxzZQogICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOwogICAgIGNvbnN0IGF1dG8gc2l6ZSA9IGdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCk7CiAgICAgY29uc3QgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOwogICAgIGNv
bnN0IGludCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOwogICAgIEdMdWludCBjb2xvckZvcm1hdCA9
IGF0dHJzLmFscGhhID8gR0xfUkdCQSA6IEdMX1JHQjsKLSAgICBHTGVudW0gdGV4dHVyZVRhcmdl
dCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAgICAgR0x1aW50IGludGVybmFsQ29s
b3JGb3JtYXQgPSB0ZXh0dXJlVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgPyBjb2xvckZvcm1hdCA6
IG1faW50ZXJuYWxDb2xvckZvcm1hdDsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
LSAgICBpZiAobV90ZXh0dXJlQmFja2luZykKLSAgICAgICAgbV90ZXh0dXJlQmFja2luZy0+cmVz
ZXQod2lkdGgsIGhlaWdodCwgYXR0cnMuYWxwaGEpOwotICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0
dXJlQmFja2luZykKLSAgICAgICAgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPnJlc2V0KHdp
ZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSAgICBpZiAobV9pbnRlcm1lZGlhdGVUZXh0dXJl
QmFja2luZykKLSAgICAgICAgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+cmVzZXQod2lk
dGgsIGhlaWdodCwgYXR0cnMuYWxwaGEpOwotI2VuZGlmCi0KLSAgICBTY29wZWRSZXN0b3JlVGV4
dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVy
eUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdldCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVU
YXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCKTsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCi0gICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmUpIHsKLSAgICAgICAgR0xfQmluZFRl
eHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIGlmICht
X2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyAmJiBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+
aW1hZ2UoKSkKLSAgICAgICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1
cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5h
bENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURf
QllURSwgMCk7Ci0gICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50ZXJt
ZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5n
ICYmIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCi0gICAgICAgICAgICBH
TF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0
ZVRleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgR0xf
VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgfQorICAg
IEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOworICAg
IEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgIEdM
X0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50ZXJtZWRpYXRlVGV4dHVyZSk7CisgICAg
R0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CiAgICAgR0xf
QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKLSAgICBpZiAobV90ZXh0dXJl
QmFja2luZyAmJiBtX3RleHR1cmVCYWNraW5nLT5pbWFnZSgpKQotICAgICAgICBHTF9FR0xJbWFn
ZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmVCYWNraW5nLT5pbWFn
ZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwg
aW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VO
U0lHTkVEX0JZVEUsIDApOwotI2Vsc2UKKyAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQs
IDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBH
TF9VTlNJR05FRF9CWVRFLCAwKTsKKyNlbmRpZgogICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRh
cmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwogICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJn
ZXQsIG1fdGV4dHVyZSk7CkBAIC00MjUsODMgKzQ0NywyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiB9CiAKLSNpZiBV
U0UoTklDT1NJQSkKLUdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFn
ZUJhY2tpbmc6OkVHTEltYWdlQmFja2luZyhHQ0dMRGlzcGxheSBkaXNwbGF5KQotICAgIDogbV9k
aXNwbGF5KGRpc3BsYXkpCi0gICAgLCBtX2ltYWdlKEVHTF9OT19JTUFHRSkKLXsKLX0KLQotR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6fkVHTElt
YWdlQmFja2luZygpCi17Ci0gICAgcmVsZWFzZVJlc291cmNlcygpOwotfQotCi11aW50MzJfdCBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpmb3Jt
YXQoKSBjb25zdAotewotICAgIGlmIChtX0JPKQotICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9m
b3JtYXQobV9CTyk7Ci0gICAgcmV0dXJuIDA7Ci19CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RN
QUJVRikKK0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpTd2FwY2hhaW46OlN3
YXBjaGFpbihHQ0dMRGlzcGxheSBwbGF0Zm9ybURpc3BsYXkpCisgICAgOiBwbGF0Zm9ybURpc3Bs
YXkocGxhdGZvcm1EaXNwbGF5KQorICAgICwgc3dhcGNoYWluKGFkb3B0UmVmKG5ldyBHQk1CdWZm
ZXJTd2FwY2hhaW4oR0JNQnVmZmVyU3dhcGNoYWluOjpCdWZmZXJTd2FwY2hhaW5TaXplOjpGb3Vy
KSkpCit7IH0KIAotdWludDMyX3QgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6
OkVHTEltYWdlQmFja2luZzo6c3RyaWRlKCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFOjpTd2FwY2hhaW46On5Td2FwY2hhaW4oKQogewotICAgIGlmIChtX0JPKQot
ICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9zdHJpZGUobV9CTyk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFj
a2luZzo6cmVsZWFzZVJlc291cmNlcygpCi17Ci0gICAgaWYgKG1fQk8pIHsKLSAgICAgICAgZ2Jt
X2JvX2Rlc3Ryb3kobV9CTyk7Ci0gICAgICAgIG1fQk8gPSBudWxscHRyOwotICAgIH0KLSAgICBp
ZiAobV9pbWFnZSkgewotICAgICAgICBFR0xfRGVzdHJveUltYWdlS0hSKG1fZGlzcGxheSwgbV9p
bWFnZSk7Ci0gICAgICAgIG1faW1hZ2UgPSBFR0xfTk9fSU1BR0U7Ci0gICAgfQotICAgIGlmICht
X0ZEID49IDApIHsKLSAgICAgICAgY2xvc2UobV9GRCk7Ci0gICAgICAgIG1fRkQgPSAtMTsKKyAg
ICBhdXRvIGltYWdlc0NvcHkgPSBXVEZNb3ZlKGltYWdlcyk7CisgICAgZm9yIChFR0xJbWFnZUtI
UiBpbWFnZSA6IGltYWdlc0NvcHkudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGltYWdlICE9IEVH
TF9OT19JTUFHRV9LSFIpCisgICAgICAgICAgICBFR0xfRGVzdHJveUltYWdlS0hSKHBsYXRmb3Jt
RGlzcGxheSwgaW1hZ2UpOwogICAgIH0KIH0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjppc1JlbGVhc2VkKCkKLXsKLSAgICByZXR1
cm4gIW1fQk87Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6
OkVHTEltYWdlQmFja2luZzo6cmVzZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIGhhc0Fs
cGhhKQotewotICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKLQotICAgIGlmICghd2lkdGggfHwgIWhl
aWdodCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgYXV0byYgZ2JtRGV2aWNl
ID0gR0JNRGV2aWNlOjpzaW5nbGV0b24oKTsKLSAgICBtX0JPID0gZ2JtX2JvX2NyZWF0ZShnYm1E
ZXZpY2UuZGV2aWNlKCksIHdpZHRoLCBoZWlnaHQsIGhhc0FscGhhID8gR0JNX0JPX0ZPUk1BVF9B
UkdCODg4OCA6IEdCTV9CT19GT1JNQVRfWFJHQjg4ODgsIEdCTV9CT19VU0VfUkVOREVSSU5HKTsK
LSAgICBpZiAobV9CTykgewotICAgICAgICBtX0ZEID0gZ2JtX2JvX2dldF9mZChtX0JPKTsKLSAg
ICAgICAgaWYgKG1fRkQgPj0gMCkgewotICAgICAgICAgICAgRUdMaW50IGltYWdlQXR0cmlidXRl
c1tdID0gewotICAgICAgICAgICAgICAgIEVHTF9XSURUSCwgd2lkdGgsCi0gICAgICAgICAgICAg
ICAgRUdMX0hFSUdIVCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgIEVHTF9MSU5VWF9EUk1fRk9V
UkNDX0VYVCwgc3RhdGljX2Nhc3Q8RUdMaW50PihnYm1fYm9fZ2V0X2Zvcm1hdChtX0JPKSksCi0g
ICAgICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgbV9GRCwKLSAgICAgICAg
ICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+
KGdibV9ib19nZXRfc3RyaWRlKG1fQk8pKSwKLSAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9Q
TEFORTBfT0ZGU0VUX0VYVCwgMCwKLSAgICAgICAgICAgICAgICBFR0xfTk9ORQotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIG1faW1hZ2UgPSBFR0xfQ3JlYXRlSW1hZ2VLSFIobV9kaXNwbGF5
LCBFR0xfTk9fQ09OVEVYVCwgRUdMX0xJTlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVmZmVy
KW51bGxwdHIsIGltYWdlQXR0cmlidXRlcyk7Ci0gICAgICAgICAgICBpZiAobV9pbWFnZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJlbGVh
c2VSZXNvdXJjZXMoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19CiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuaAppbmRleCAzMWZkZTNkZGNkNDNlMmYyOWQ2MDMzMjBhN2Q0ZTRkZDgzNTRl
MDhmLi5lYmExYjgzYjA2ZGZlNmYyZWQ0NjJjZmMwNzg2YjA1NjUwNzFkYWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuaApAQCAtMjks
NiArMjksMTIgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIKIAorI2lm
IFVTRShURVhUVVJFX01BUFBFUl9ETUFCVUYpCisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCisj
aW5jbHVkZSAiR0JNQnVmZmVyU3dhcGNoYWluLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNlbmRpZgorCiAjaWYgVVNFKE5JQ09TSUEpCiBuYW1lc3BhY2UgTmljb3NpYSB7CiBjbGFzcyBH
Q0dMQU5HTEVMYXllcjsKQEAgLTczLDQ2ICs3OSwzNSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlOwogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKKyAgICBzdHJ1
Y3QgU3dhcGNoYWluIHsKKyAgICAgICAgU3dhcGNoYWluKCkgPSBkZWZhdWx0OworICAgICAgICBT
d2FwY2hhaW4oR0NHTERpc3BsYXkpOworICAgICAgICB+U3dhcGNoYWluKCk7CisKKyAgICAgICAg
R0NHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5IHsgRUdMX05PX0RJU1BMQVkgfTsKKyAgICAgICAg
UmVmUHRyPEdCTUJ1ZmZlclN3YXBjaGFpbj4gc3dhcGNoYWluOworICAgICAgICBSZWZQdHI8R0JN
QnVmZmVyU3dhcGNoYWluOjpCdWZmZXI+IGJvOworCisgICAgICAgIEhhc2hNYXA8dWludDMyX3Qs
IEVHTEltYWdlS0hSLCBXVEY6OkRlZmF1bHRIYXNoPHVpbnQzMl90PiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+IGltYWdlczsKKyAgICB9IG1fc3dhcGNoYWlu
OworI2Vsc2UKICAgICBHQ0dMdWludCBtX2NvbXBvc2l0b3JUZXh0dXJlIHsgMCB9OwogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBHQ0dMdWludCBtX2ludGVybWVkaWF0ZVRleHR1
cmUgeyAwIH07CiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgVVNFKE5JQ09TSUEpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5pY29zaWE6OkdDR0xBTkdMRUxheWVyPiBtX25pY29zaWFMYXllcjsKLQotICAg
IGNsYXNzIEVHTEltYWdlQmFja2luZyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgcHVibGljOgotICAgICAgICBFR0xJbWFnZUJhY2tpbmcoR0NHTERpc3BsYXkpOwotICAgICAg
ICB+RUdMSW1hZ2VCYWNraW5nKCk7Ci0KLSAgICAgICAgYm9vbCByZXNldChpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGJvb2wgaGFzQWxwaGEpOwotCi0gICAgICAgIEVHTEltYWdlIGltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZTsgfQotICAgICAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBt
X0ZEOyB9Ci0KLSAgICAgICAgdWludDMyX3QgZm9ybWF0KCkgY29uc3Q7Ci0gICAgICAgIHVpbnQz
Ml90IHN0cmlkZSgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wgaXNSZWxlYXNlZCgpOwotICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwotCi0gICAgICAgIEdDR0xE
aXNwbGF5IG1fZGlzcGxheTsKLQotICAgICAgICBnYm1fYm8qIG1fQk8geyBudWxscHRyIH07Ci0g
ICAgICAgIGludCBtX0ZEIHsgLTEgfTsKLSAgICAgICAgRUdMSW1hZ2UgbV9pbWFnZTsKLSAgICB9
OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV90ZXh0dXJlQmFja2lu
ZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdMSW1hZ2VCYWNraW5nPiBtX2NvbXBvc2l0b3JUZXh0
dXJlQmFja2luZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdMSW1hZ2VCYWNraW5nPiBtX2ludGVy
bWVkaWF0ZVRleHR1cmVCYWNraW5nOwogI2Vsc2UKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyPiBtX3RleG1hcExheWVyOwogI2VuZGlmCiAKKyNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOworI2VuZGlmCisKICNpZiBVU0UoTklDT1NJQSkKICAgICBmcmllbmQgY2xhc3Mg
Tmljb3NpYTo6R0NHTEFOR0xFTGF5ZXI7CiAgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xM
YXllcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455633</attachid>
            <date>2022-03-24 05:19:45 -0700</date>
            <delta_ts>2022-03-28 04:36:21 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-237883-20220324131943.patch</filename>
            <type>text/plain</type>
            <size>23300</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhkNDQ5NDBiMWM0ZTk2
OTkxZmRjMDllYjk5OTczYjcwOGMxMDA4OS4uY2MxZjUxNmViMTRmMWY5NDFmNzUwMDM3OWFmYmZm
MTAzMzZmYWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAzLTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVz
ZSBHQk1CdWZmZXJTd2FwY2hhaW4gaW4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDR0xB
TkdMRUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKE5pY29zaWE6OkdDR0xB
TkdMRUxheWVyOjpHQ0dMQU5HTEVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0
Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUlu
aXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVUZXh0dXJlSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6
cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpTd2FwY2hhaW46OlN3YXBjaGFpbik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6U3dhcGNo
YWluOjp+U3dhcGNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OkVHTEltYWdlQmFja2luZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6RUdMSW1hZ2VCYWNraW5nOjp+RUdMSW1hZ2VCYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJh
Y2tpbmc6OmZvcm1hdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpzdHJpZGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291cmNlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6
RUdMSW1hZ2VCYWNraW5nOjppc1JlbGVhc2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuaDoKKwogMjAyMi0wMy0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBQ
Q00gdG8gU0tBZE5ldHdvcmsgYnJpZGdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdD
R0xBTkdMRUxheWVyLmNwcAppbmRleCA3OWNmNjI4MDI1MmY4ZmFmMGQ0ZDEwMTkzODg3NjBhMzQy
NGVhYjI5Li4zNjFjNTMzNDBmN2FiZTE1MzhhMWE4NjhkNGExMDMzMzZjMDUyNDIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0NHTEFOR0xFTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKQEAgLTM2LDcgKzM2
LDggQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckRtYWJ1Zi5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zi5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5oIgogCiBuYW1l
c3BhY2UgTmljb3NpYSB7CkBAIC00NSwzMSArNDYsMjkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIHZvaWQgR0NHTEFOR0xFTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogewotICAg
IGlmIChtX2NvbnRleHQubGF5ZXJDb21wb3NpdGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fY29udGV4dC5wcmVwYXJlVGV4dHVyZSgpOwotCiAgICAgYXV0byYgcHJveHkgPSBkb3duY2Fz
dDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY29udGVudExheWVyKCku
aW1wbCgpKS5wcm94eSgpOwogICAgIGF1dG8gc2l6ZSA9IG1fY29udGV4dC5nZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpOwogCi0gICAgaWYgKG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJl
QmFja2luZykgewotICAgICAgICBpZiAobV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNr
aW5nLT5pc1JlbGVhc2VkKCkpCi0gICAgICAgICAgICByZXR1cm47CisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0RNQUJVRikKKyAgICBpZiAoaXM8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eURNQUJ1Zj4ocHJveHkpKSB7CisgICAgICAgIGF1dG8gYm8gPSBXVEZNb3ZlKG1fY29udGV4dC5t
X3N3YXBjaGFpbi5kaXNwbGF5Qk8pOworICAgICAgICBpZiAoYm8pIHsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBwcm94eS5sb2NrKCkgfTsKIAotICAgICAgICBhdXRvIGZvcm1hdCA9IG1f
Y29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+Zm9ybWF0KCk7Ci0gICAgICAgIGF1
dG8gc3RyaWRlID0gbV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5zdHJpZGUo
KTsKLSAgICAgICAgYXV0byBmZCA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2lu
Zy0+ZmQoKTsKKyAgICAgICAgICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0
dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlOworICAgICAgICAgICAgaWYgKG1fY29udGV4
dC5jb250ZXh0QXR0cmlidXRlcygpLmFscGhhKQorICAgICAgICAgICAgICAgIGZsYWdzIHw9IFRl
eHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQ7CiAKLSAgICAgICAgewotICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IHByb3h5LmxvY2soKSB9OwotICAgICAgICAgICAgQVNTRVJUKGlzPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTD4ocHJveHkpKTsKLSAgICAgICAgICAgIGRvd25j
YXN0PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTD4ocHJveHkpLnB1c2hOZXh0QnVm
ZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY+KHNpemUsIGZv
cm1hdCwgc3RyaWRlLCBmZCkpOworICAgICAgICAgICAgZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eURNQUJ1Zj4ocHJveHkpLnB1c2hETUFCdWYoCisgICAgICAgICAgICAg
ICAgRE1BQnVmT2JqZWN0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbnRleHQubV9z
d2FwY2hhaW4uc3dhcGNoYWluLmdldCgpKSArIGJvLT5oYW5kbGUoKSksCisgICAgICAgICAgICAg
ICAgWyZdKGF1dG8mJiBvYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvLT5j
cmVhdGVETUFCdWZPYmplY3Qob2JqZWN0LmhhbmRsZSk7CisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBmbGFncyk7CiAgICAgICAgIH0KLQotICAgICAgICBtX2NvbnRleHQubWFy
a0xheWVyQ29tcG9zaXRlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKICAg
ICAvLyBGYWxsYmFjayBwYXRoLCByZWFkIGJhY2sgdGV4dHVyZSB0byBtYWluIG1lbW9yeQogICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpAQCAtOTMsOSArOTIsMTYg
QEAgdm9pZCBHQ0dMQU5HTEVMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgbV9jb250
ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9E
TUFCVUYpCit1c2luZyBQbGF0Zm9ybUxheWVyUHJveHlUeXBlID0gVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eURNQUJ1ZjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybUxheWVyUHJveHlUeXBl
ID0gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMOworI2VuZGlmCisKKwogR0NHTEFO
R0xFTGF5ZXI6OkdDR0xBTkdMRUxheWVyKEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFJiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2NvbnRlbnRM
YXllcihOaWNvc2lhOjpDb250ZW50TGF5ZXI6OmNyZWF0ZShOaWNvc2lhOjpDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgqdGhpcykpKQorICAgICwgbV9jb250ZW50
TGF5ZXIoTmljb3NpYTo6Q29udGVudExheWVyOjpjcmVhdGUoTmljb3NpYTo6Q29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKnRoaXMsIGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1MYXllclByb3h5VHlwZSkpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0NHTEFOR0xFTGF5ZXIuaAppbmRleCBhNDQxMTU4M2U1Y2VhNTk5MDk2MjZmYjdhYzQwMDA4
NDAyNjJkNmZkLi41MzhlMDU2NTg4YTQwYTg5MjE5NWJjMWRkOTdiZTRkZGJhYzcxNjAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaApAQCAtMzEsNyArMzEs
NiBAQAogI2lmIFVTRShOSUNPU0lBKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAKICNpbmNsdWRl
ICJOaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCIKLSNpbmNsdWRlIDxtZW1v
cnk+CiAKIHR5cGVkZWYgdm9pZCAqRUdMQ29uZmlnOwogdHlwZWRlZiB2b2lkICpFR0xDb250ZXh0
OwpAQCAtNDAsNyArMzksNiBAQCB0eXBlZGVmIHZvaWQgKkVHTFN1cmZhY2U7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBHTENvbnRleHQ7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTsKIGNsYXNzIFBsYXRmb3JtRGlzcGxheTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUuY3BwCmluZGV4IGRlNGQ5OGM1NjEwNGM4YTEyZDU4YWI0NzFmMTdlYWRjZmY4MzM0NWUuLmZk
OTQwN2ZmNTI0NzdkNTU5YzAwOWE4NjliNDk1NmE3ZjAzNDMyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtOTEsOSAr
OTEsNjkgQEAgR0NHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUNvbmZp
ZygpIGNvbnN0CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJy
ZW50KCkKIHsKLSAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0T2Jq
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gRUdMX01ha2VDdXJyZW50KG1fZGlz
cGxheU9iaiwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBtX2NvbnRleHRPYmopOwor
ICAgIGF1dG8gbWFkZUN1cnJlbnQgPQorICAgICAgICBbJl0geworICAgICAgICAgICAgaWYgKEVH
TF9HZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dE9iaikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAhIUVHTF9NYWtlQ3VycmVudChtX2Rpc3Bs
YXlPYmosIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgbV9jb250ZXh0T2JqKTsKKyAg
ICAgICAgfSgpOworCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKKyAgICBhdXRvJiBj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUm
PigqdGhpcyk7CisgICAgaWYgKG1hZGVDdXJyZW50ICYmIGNvbnRleHQubV9zd2FwY2hhaW4uc3dh
cGNoYWluICYmICFjb250ZXh0Lm1fc3dhcGNoYWluLmRyYXdCTykgeworICAgICAgICBhdXRvIHNp
emUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOworICAgICAgICBjb250ZXh0Lm1fc3dh
cGNoYWluLmRyYXdCTyA9IGNvbnRleHQubV9zd2FwY2hhaW4uc3dhcGNoYWluLT5nZXRCdWZmZXIo
CisgICAgICAgICAgICBHQk1CdWZmZXJTd2FwY2hhaW46OkJ1ZmZlckRlc2NyaXB0aW9uIHsKKyAg
ICAgICAgICAgICAgICAuZm9ybWF0ID0gRE1BQnVmRm9ybWF0OjpjcmVhdGUodWludDMyX3QoY29u
dGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpBUkdCODg4OCA6
IERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpYUkdCODg4OCkpLAorICAgICAgICAgICAgICAgIC53aWR0
aCA9IHN0ZDo6Y2xhbXA8dWludDMyX3Q+KHNpemUud2lkdGgoKSwgMCwgVUlOVF9NQVgpLAorICAg
ICAgICAgICAgICAgIC5oZWlnaHQgPSBzdGQ6OmNsYW1wPHVpbnQzMl90PihzaXplLmhlaWdodCgp
LCAwLCBVSU5UX01BWCksCisgICAgICAgICAgICB9KTsKKworICAgICAgICBHTGVudW0gdGV4dHVy
ZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CisgICAgICAgIFNjb3BlZFJl
c3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRh
cmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwg
dGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworCisgICAgICAgIGF1dG8g
cmVzdWx0ID0gY29udGV4dC5tX3N3YXBjaGFpbi5pbWFnZXMuZW5zdXJlKGNvbnRleHQubV9zd2Fw
Y2hhaW4uZHJhd0JPLT5oYW5kbGUoKSwKKyAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAg
ICAgYXV0byBkbWFidWZPYmplY3QgPSBjb250ZXh0Lm1fc3dhcGNoYWluLmRyYXdCTy0+Y3JlYXRl
RE1BQnVmT2JqZWN0KDApOworCisgICAgICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0
PEVHTGludD4gYXR0cmlidXRlcyB7CisgICAgICAgICAgICAgICAgICAgIEVHTF9XSURUSCwgRUdM
aW50KGRtYWJ1Zk9iamVjdC5mb3JtYXQucGxhbmVXaWR0aCgwLCBkbWFidWZPYmplY3Qud2lkdGgp
KSwKKyAgICAgICAgICAgICAgICAgICAgRUdMX0hFSUdIVCwgRUdMaW50KGRtYWJ1Zk9iamVjdC5m
b3JtYXQucGxhbmVIZWlnaHQoMCwgZG1hYnVmT2JqZWN0LmhlaWdodCkpLAorICAgICAgICAgICAg
ICAgICAgICBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRpY19jYXN0PEVHTGludD4oZG1h
YnVmT2JqZWN0LmZvcm1hdC5wbGFuZXNbMF0uZm91cmNjKSwKKyAgICAgICAgICAgICAgICAgICAg
RUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgZG1hYnVmT2JqZWN0LmZkWzBdLAorICAgICAgICAg
ICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBzdGF0aWNfY2FzdDxFR0xp
bnQ+KGRtYWJ1Zk9iamVjdC5zdHJpZGVbMF0pLAorICAgICAgICAgICAgICAgICAgICBFR0xfRE1B
X0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwgMCwKKyAgICAgICAgICAgICAgICAgICAgRUdMX05PTkUs
CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0NyZWF0ZUlt
YWdlS0hSKGNvbnRleHQubV9zd2FwY2hhaW4ucGxhdGZvcm1EaXNwbGF5LCBFR0xfTk9fQ09OVEVY
VCwgRUdMX0xJTlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVmZmVyKW51bGxwdHIsIHN0ZDo6
ZGF0YShhdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBHTF9CaW5kVGV4
dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOworICAgICAgICBHTF9FR0xJbWFnZVRhcmdl
dFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKwor
ICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIEdDR0x1aW50IGJv
dW5kRkJPIHsgMCB9OworICAgICAgICAgICAgR0xfR2V0SW50ZWdlcnYoR0xfRlJBTUVCVUZGRVJf
QklORElORywgcmVpbnRlcnByZXRfY2FzdDxHQ0dMaW50Kj4oJmJvdW5kRkJPKSk7CisKKyAgICAg
ICAgICAgIEdDR0x1aW50IHRhcmdldEZCTyA9IGNvbnRleHRBdHRyaWJ1dGVzKCkuYW50aWFsaWFz
ID8gbV9tdWx0aXNhbXBsZUZCTyA6IG1fZmJvOworICAgICAgICAgICAgaWYgKHRhcmdldEZCTyAh
PSBib3VuZEZCTykKKyAgICAgICAgICAgICAgICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIHRhcmdldEZCTyk7CisKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDQ+IGNs
ZWFyQ29sb3IgeyAwLCAwLCAwLCAwIH07CisgICAgICAgICAgICBHTF9HZXRGbG9hdHYoR0xfQ09M
T1JfQ0xFQVJfVkFMVUUsIGNsZWFyQ29sb3IuZGF0YSgpKTsKKworICAgICAgICAgICAgR0xfQ2xl
YXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIEdMX0NsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOworCisgICAgICAgICAgICBHTF9DbGVhckNvbG9yKGNsZWFyQ29sb3JbMF0sIGNsZWFy
Q29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0RkJPICE9IGJvdW5kRkJPKQorICAgICAgICAgICAgICAgIEdMX0JpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgYm91bmRGQk8pOworICAgICAgICB9CisgICAgfQorI2VuZGlm
CisKKyAgICByZXR1cm4gbWFkZUN1cnJlbnQ7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6Y2hlY2tHUFVTdGF0dXMoKQpAQCAtMTMyLDEyICsxOTIsMTQgQEAgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJB
TkdMRSgpCiAgICAgYm9vbCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNT
RVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAorI2lmICFVU0UoVEVYVFVSRV9NQVBQRVJf
RE1BQlVGKQogICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKQogICAgICAgICBHTF9EZWxldGVU
ZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmUpCiAgICAgICAgIEdMX0RlbGV0
ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOwogI2VuZGlmCisjZW5kaWYKIH0K
IAogUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KQpAQCAtMTY2LDkgKzIyOCw4IEBAIFJlZlB0cjxWaWRlb0ZyYW1lPiBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvCiAKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRl
eHQoKQogewotICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29u
dGV4dEF0dHJpYnV0ZXMoKTsKICNpZiBFTkFCTEUoV0VCR0wyKQotICAgIG1faXNGb3JXZWJHTDIg
PSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lv
bjo6V2ViR0wyOworICAgIG1faXNGb3JXZWJHTDIgPSBjb250ZXh0QXR0cmlidXRlcygpLndlYkdM
VmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwogI2VuZGlm
CiAKICAgICBWZWN0b3I8RUdMaW50PiBkaXNwbGF5QXR0cmlidXRlcyB7CkBAIC0yNzIsMTcgKzMz
MywxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9y
bUluaXRpYWxpemUoKQogI2lmIFVTRShOSUNPU0lBKQogICAgIG1fbmljb3NpYUxheWVyID0gbWFr
ZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0
ZSgmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRMYXllcigpKTsKLQotICAgIGNvbnN0IGF1dG8mIGdi
bURldmljZSA9IEdCTURldmljZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKGdibURldmljZS5kZXZp
Y2UoKSkgewotICAgICAgICBtX3RleHR1cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJh
Y2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsKLSAgICAgICAgbV9jb21wb3NpdG9yVGV4dHVyZUJh
Y2tpbmcgPSBtYWtlVW5pcXVlPEVHTEltYWdlQmFja2luZz4ocGxhdGZvcm1EaXNwbGF5KCkpOwot
ICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFn
ZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsKLSAgICB9CiAjZWxzZQogICAgIG1fdGV4bWFw
TGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcj4oKnRoaXMp
OwogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNw
bGF5RGVsZWdhdGU6OmNyZWF0ZShtX3RleG1hcExheWVyLmdldCgpKTsKICNlbmRpZgorCiAgICAg
Ym9vbCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChz
dWNjZXNzLCBzdWNjZXNzKTsKIApAQCAtMzA3LDYgKzM2Miw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgR0xfR2Vu
RnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CiAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtX2Zibyk7CiAKKyNpZiAhVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKICAgICBH
TF9HZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgR0xfQmluZFRleHR1
cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgR0xfVGV4UGFyYW1l
dGVyZih0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CkBA
IC0zMjMsNiArMzc5LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBHTF9UZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJn
ZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKIAogICAgIEdMX0JpbmRU
ZXh0dXJlKHRleHR1cmVUYXJnZXQsIDApOworI2VuZGlmCiAjZW5kaWYKIAogICAgIC8vIENyZWF0
ZSBhIG11bHRpc2FtcGxlIEZCTy4KQEAgLTM1MywxMSArNDEwLDExIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVUZXh0dXJlSW1wbCgpCiAgICAgaWYg
KGNvbnRleHRBdHRyaWJ1dGVzKCkuYW50aWFsaWFzKQogICAgICAgICByZXNvbHZlTXVsdGlzYW1w
bGluZ0lmTmVjZXNzYXJ5KCk7CiAKKyNpZiAhVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKICAg
ICBzdGQ6OnN3YXAobV90ZXh0dXJlLCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjpzd2FwKG1fdGV4dHVyZSwgbV9pbnRlcm1lZGlh
dGVUZXh0dXJlKTsKLSAgICBzdGQ6OnN3YXAobV90ZXh0dXJlQmFja2luZywgbV9jb21wb3NpdG9y
VGV4dHVyZUJhY2tpbmcpOwotICAgIHN0ZDo6c3dhcChtX3RleHR1cmVCYWNraW5nLCBtX2ludGVy
bWVkaWF0ZVRleHR1cmVCYWNraW5nKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBHTF9CaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKQEAgLTM4MSwzNiArNDM4LDIzIEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnJlc2hhcGVEaXNwbGF5QnVm
ZmVyQmFja2luZygpCiAgICAgR0x1aW50IGNvbG9yRm9ybWF0ID0gYXR0cnMuYWxwaGEgPyBHTF9S
R0JBIDogR0xfUkdCOwogICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQoKTsKICAgICBHTHVpbnQgaW50ZXJuYWxDb2xvckZvcm1hdCA9IHRleHR1cmVU
YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCA/IGNvbG9yRm9ybWF0IDogbV9pbnRlcm5hbENvbG9yRm9y
bWF0OworICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3
aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0
KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIp
OwogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX3RleHR1cmVCYWNr
aW5nKQotICAgICAgICBtX3RleHR1cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRy
cy5hbHBoYSk7Ci0gICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nKQotICAgICAgICBt
X2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+cmVzZXQod2lkdGgsIGhlaWdodCwgYXR0cnMuYWxw
aGEpOwotICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nKQotICAgICAgICBtX2lu
dGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBo
YSk7Ci0jZW5kaWYKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorICAgIG1fc3dhcGNo
YWluID0gU3dhcGNoYWluKHBsYXRmb3JtRGlzcGxheSgpKTsKIAotICAgIFNjb3BlZFJlc3RvcmVU
ZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1
ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVy
ZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOwotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKLSAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkgewotICAgICAgICBHTF9CaW5k
VGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICAgICAgaWYg
KG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nICYmIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5n
LT5pbWFnZSgpKQotICAgICAgICAgICAgR0xfRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4
dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVy
bmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05F
RF9CWVRFLCAwKTsKLSAgICAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9pbnRl
cm1lZGlhdGVUZXh0dXJlKTsKLSAgICAgICAgaWYgKG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tp
bmcgJiYgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkKLSAgICAgICAgICAg
IEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQsIG1faW50ZXJtZWRp
YXRlVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBH
TF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICB9CiAg
ICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKLSAgICBpZiAobV90
ZXh0dXJlQmFja2luZyAmJiBtX3RleHR1cmVCYWNraW5nLT5pbWFnZSgpKQotICAgICAgICBHTF9F
R0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmVCYWNraW5n
LT5pbWFnZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdl
dCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwg
MCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdM
X1VOU0lHTkVEX0JZVEUsIDApOwogI2Vsc2UKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKKyAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJl
KTsKKyAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsK
KyAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0ZVRleHR1cmUp
OworICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwor
ICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7CisgICAgR0xfVGV4
SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CisjZW5kaWYKICAgICBH
TF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICBH
TF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICBHTF9C
aW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOwpAQCAtNDIzLDg0ICs0NjcsMzEg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJB
TkdMRTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewotfQorICAgIGlmIChsYXllckNvbXBvc2l0ZWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAg
ICAgIHJldHVybjsKIAotI2lmIFVTRShOSUNPU0lBKQotR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6RUdMSW1hZ2VCYWNraW5nKEdDR0xEaXNwbGF5
IGRpc3BsYXkpCi0gICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKLSAgICAsIG1faW1hZ2UoRUdMX05P
X0lNQUdFKQotewotfQorICAgIHByZXBhcmVUZXh0dXJlSW1wbCgpOwogCi1HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjp+RUdMSW1hZ2VCYWNraW5n
KCkKLXsKLSAgICByZWxlYXNlUmVzb3VyY2VzKCk7Ci19Ci0KLXVpbnQzMl90IEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OmZvcm1hdCgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fQk8pCi0gICAgICAgIHJldHVybiBnYm1fYm9fZ2V0X2Zvcm1hdChtX0JP
KTsKLSAgICByZXR1cm4gMDsKLX0KLQotdWludDMyX3QgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6c3RyaWRlKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9CTykKLSAgICAgICAgcmV0dXJuIGdibV9ib19nZXRfc3RyaWRlKG1fQk8pOwotICAgIHJldHVy
biAwOwotfQorICAgIG1fc3dhcGNoYWluLmRpc3BsYXlCTyA9IFdURk1vdmUobV9zd2FwY2hhaW4u
ZHJhd0JPKTsKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdM
SW1hZ2VCYWNraW5nOjpyZWxlYXNlUmVzb3VyY2VzKCkKLXsKLSAgICBpZiAobV9CTykgewotICAg
ICAgICBnYm1fYm9fZGVzdHJveShtX0JPKTsKLSAgICAgICAgbV9CTyA9IG51bGxwdHI7Ci0gICAg
fQotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIEVHTF9EZXN0cm95SW1hZ2VLSFIobV9kaXNw
bGF5LCBtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IEVHTF9OT19JTUFHRTsKLSAgICB9Ci0g
ICAgaWYgKG1fRkQgPj0gMCkgewotICAgICAgICBjbG9zZShtX0ZEKTsKLSAgICAgICAgbV9GRCA9
IC0xOwotICAgIH0KKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAKLWJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6aXNSZWxlYXNl
ZCgpCi17Ci0gICAgcmV0dXJuICFtX0JPOwotfQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9ETUFC
VUYpCitHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6U3dhcGNoYWluOjpTd2Fw
Y2hhaW4oR0NHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KQorICAgIDogcGxhdGZvcm1EaXNwbGF5
KHBsYXRmb3JtRGlzcGxheSkKKyAgICAsIHN3YXBjaGFpbihhZG9wdFJlZihuZXcgR0JNQnVmZmVy
U3dhcGNoYWluKEdCTUJ1ZmZlclN3YXBjaGFpbjo6QnVmZmVyU3dhcGNoYWluU2l6ZTo6Rm91cikp
KQoreyB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTElt
YWdlQmFja2luZzo6cmVzZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIGhhc0FscGhhKQor
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OlN3YXBjaGFpbjo6flN3YXBjaGFp
bigpCiB7Ci0gICAgcmVsZWFzZVJlc291cmNlcygpOwotCi0gICAgaWYgKCF3aWR0aCB8fCAhaGVp
Z2h0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBhdXRvJiBnYm1EZXZpY2Ug
PSBHQk1EZXZpY2U6OnNpbmdsZXRvbigpOwotICAgIG1fQk8gPSBnYm1fYm9fY3JlYXRlKGdibURl
dmljZS5kZXZpY2UoKSwgd2lkdGgsIGhlaWdodCwgaGFzQWxwaGEgPyBHQk1fQk9fRk9STUFUX0FS
R0I4ODg4IDogR0JNX0JPX0ZPUk1BVF9YUkdCODg4OCwgR0JNX0JPX1VTRV9SRU5ERVJJTkcpOwot
ICAgIGlmIChtX0JPKSB7Ci0gICAgICAgIG1fRkQgPSBnYm1fYm9fZ2V0X2ZkKG1fQk8pOwotICAg
ICAgICBpZiAobV9GRCA+PSAwKSB7Ci0gICAgICAgICAgICBFR0xpbnQgaW1hZ2VBdHRyaWJ1dGVz
W10gPSB7Ci0gICAgICAgICAgICAgICAgRUdMX1dJRFRILCB3aWR0aCwKLSAgICAgICAgICAgICAg
ICBFR0xfSEVJR0hULCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgRUdMX0xJTlVYX0RSTV9GT1VS
Q0NfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGdibV9ib19nZXRfZm9ybWF0KG1fQk8pKSwKLSAg
ICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfRkRfRVhULCBtX0ZELAotICAgICAgICAg
ICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRDSF9FWFQsIHN0YXRpY19jYXN0PEVHTGludD4o
Z2JtX2JvX2dldF9zdHJpZGUobV9CTykpLAotICAgICAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BM
QU5FMF9PRkZTRVRfRVhULCAwLAotICAgICAgICAgICAgICAgIEVHTF9OT05FCi0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgbV9pbWFnZSA9IEVHTF9DcmVhdGVJbWFnZUtIUihtX2Rpc3BsYXks
IEVHTF9OT19DT05URVhULCBFR0xfTElOVVhfRE1BX0JVRl9FWFQsIChFR0xDbGllbnRCdWZmZXIp
bnVsbHB0ciwgaW1hZ2VBdHRyaWJ1dGVzKTsKLSAgICAgICAgICAgIGlmIChtX2ltYWdlKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgYXV0byBpbWFnZXNDb3B5
ID0gV1RGTW92ZShpbWFnZXMpOworICAgIGZvciAoRUdMSW1hZ2VLSFIgaW1hZ2UgOiBpbWFnZXND
b3B5LnZhbHVlcygpKSB7CisgICAgICAgIGlmIChpbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQor
ICAgICAgICAgICAgRUdMX0Rlc3Ryb3lJbWFnZUtIUihwbGF0Zm9ybURpc3BsYXksIGltYWdlKTsK
ICAgICB9Ci0KLSAgICByZWxlYXNlUmVzb3VyY2VzKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ckFOR0xFLmgKaW5kZXggMzFmZGUzZGRjZDQzZTJmMjlkNjAzMzIwYTdkNGU0ZGQ4MzU0ZTA4Zi4u
OWY2MjFhMTc0YjMyMWJlN2Y1M2I4NjEyMDM4YjM2MzA4ZjZkZmRkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmgKQEAgLTI5LDYgKzI5
LDEyIEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFLmgiCiAKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2luY2x1
ZGUgIkdCTUJ1ZmZlclN3YXBjaGFpbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjZW5k
aWYKKwogI2lmIFVTRShOSUNPU0lBKQogbmFtZXNwYWNlIE5pY29zaWEgewogY2xhc3MgR0NHTEFO
R0xFTGF5ZXI7CkBAIC03Myw0NiArNzksMzYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZTsKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9ETUFCVUYpCisgICAgc3RydWN0IFN3
YXBjaGFpbiB7CisgICAgICAgIFN3YXBjaGFpbigpID0gZGVmYXVsdDsKKyAgICAgICAgU3dhcGNo
YWluKEdDR0xEaXNwbGF5KTsKKyAgICAgICAgflN3YXBjaGFpbigpOworCisgICAgICAgIEdDR0xE
aXNwbGF5IHBsYXRmb3JtRGlzcGxheSB7IEVHTF9OT19ESVNQTEFZIH07CisgICAgICAgIFJlZlB0
cjxHQk1CdWZmZXJTd2FwY2hhaW4+IHN3YXBjaGFpbjsKKyAgICAgICAgUmVmUHRyPEdCTUJ1ZmZl
clN3YXBjaGFpbjo6QnVmZmVyPiBkcmF3Qk87CisgICAgICAgIFJlZlB0cjxHQk1CdWZmZXJTd2Fw
Y2hhaW46OkJ1ZmZlcj4gZGlzcGxheUJPOworCisgICAgICAgIEhhc2hNYXA8dWludDMyX3QsIEVH
TEltYWdlS0hSLCBXVEY6OkRlZmF1bHRIYXNoPHVpbnQzMl90PiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+IGltYWdlczsKKyAgICB9IG1fc3dhcGNoYWluOwor
I2Vsc2UKICAgICBHQ0dMdWludCBtX2NvbXBvc2l0b3JUZXh0dXJlIHsgMCB9OwogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKICAgICBHQ0dMdWludCBtX2ludGVybWVkaWF0ZVRleHR1cmUg
eyAwIH07CiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgVVNFKE5JQ09TSUEpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5pY29zaWE6OkdDR0xBTkdMRUxheWVyPiBtX25pY29zaWFMYXllcjsKLQotICAgIGNs
YXNzIEVHTEltYWdlQmFja2luZyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAg
cHVibGljOgotICAgICAgICBFR0xJbWFnZUJhY2tpbmcoR0NHTERpc3BsYXkpOwotICAgICAgICB+
RUdMSW1hZ2VCYWNraW5nKCk7Ci0KLSAgICAgICAgYm9vbCByZXNldChpbnQgd2lkdGgsIGludCBo
ZWlnaHQsIGJvb2wgaGFzQWxwaGEpOwotCi0gICAgICAgIEVHTEltYWdlIGltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZTsgfQotICAgICAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBtX0ZE
OyB9Ci0KLSAgICAgICAgdWludDMyX3QgZm9ybWF0KCkgY29uc3Q7Ci0gICAgICAgIHVpbnQzMl90
IHN0cmlkZSgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wgaXNSZWxlYXNlZCgpOwotICAgIHByaXZh
dGU6Ci0gICAgICAgIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwotCi0gICAgICAgIEdDR0xEaXNw
bGF5IG1fZGlzcGxheTsKLQotICAgICAgICBnYm1fYm8qIG1fQk8geyBudWxscHRyIH07Ci0gICAg
ICAgIGludCBtX0ZEIHsgLTEgfTsKLSAgICAgICAgRUdMSW1hZ2UgbV9pbWFnZTsKLSAgICB9Owot
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV90ZXh0dXJlQmFja2luZzsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdMSW1hZ2VCYWNraW5nPiBtX2NvbXBvc2l0b3JUZXh0dXJl
QmFja2luZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdMSW1hZ2VCYWNraW5nPiBtX2ludGVybWVk
aWF0ZVRleHR1cmVCYWNraW5nOwogI2Vsc2UKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1h
cHBlckdDR0xQbGF0Zm9ybUxheWVyPiBtX3RleG1hcExheWVyOwogI2VuZGlmCiAKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRH
TEFOR0xFOworI2VuZGlmCisKICNpZiBVU0UoTklDT1NJQSkKICAgICBmcmllbmQgY2xhc3MgTmlj
b3NpYTo6R0NHTEFOR0xFTGF5ZXI7CiAgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xMYXll
cjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93cGUucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5CmluZGV4IGM5NDM0ZjNkNTFkOTFiZmZhZGRi
ODkyYmJhNTkxY2Q0YTUzNzNmNDEuLjgwYmM4NGQ0NmU4OTU0YzRkYmYxNTAzNzI5YTkwMjRmMDZm
Mjk5ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93cGUucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weQpAQCAtODQsNiArODQsOSBAQCBj
bGFzcyBXUEVQb3J0KFBvcnQpOgogICAgICAgICBlbnZpcm9ubWVudFsnVEVTVF9SVU5ORVJfSU5K
RUNURURfQlVORExFX0ZJTEVOQU1FJ10gPSBzZWxmLl9idWlsZF9wYXRoKCdsaWInLCAnbGliVGVz
dFJ1bm5lckluamVjdGVkQnVuZGxlLnNvJykKICAgICAgICAgZW52aXJvbm1lbnRbJ1RFU1RfUlVO
TkVSX1RFU1RfUExVR0lOX1BBVEgnXSA9IHNlbGYuX2J1aWxkX3BhdGgoJ2xpYicsICdwbHVnaW5z
JykKICAgICAgICAgZW52aXJvbm1lbnRbJ1dFQktJVF9FWEVDX1BBVEgnXSA9IHNlbGYuX2J1aWxk
X3BhdGgoJ2JpbicpCisgICAgICAgIGVudmlyb25tZW50WydNRVNBX0RFQlVHJ10gPSAnMScKKyAg
ICAgICAgZW52aXJvbm1lbnRbJ0VHTF9MT0dfTEVWRUwnXSA9ICdkZWJ1ZycKKyAgICAgICAgZW52
aXJvbm1lbnRbJ0VHTF9QTEFURk9STSddID0gJ3dheWxhbmQnCiAgICAgICAgIHNlbGYuX2NvcHlf
dmFsdWVfZnJvbV9lbnZpcm9uX2lmX3NldChlbnZpcm9ubWVudCwgJ1dFQktJVF9PVVRQVVRESVIn
KQogICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoZW52aXJvbm1l
bnQsICdXRUJLSVRfSkhCVUlMRCcpCiAgICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZp
cm9uX2lmX3NldChlbnZpcm9ubWVudCwgJ1dFQktJVF9UT1BfTEVWRUwnKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455901</attachid>
            <date>2022-03-28 04:36:25 -0700</date>
            <delta_ts>2022-03-28 07:01:14 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-237883-20220328133623.patch</filename>
            <type>text/plain</type>
            <size>21644</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhiNWJhZjk1NjRjMTg2
MTA2YmY3YzEyMzBjNWVmYzEyZjNkZGRkYy4uZDc0YmEyM2VlNGM0MDNkYTlkNjcxOTQ3ZDdjMTVk
ODk1YjYyYWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAzLTI4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVz
ZSBHQk1CdWZmZXJTd2FwY2hhaW4gaW4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDR0xB
TkdMRUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKE5pY29zaWE6OkdDR0xB
TkdMRUxheWVyOjpHQ0dMQU5HTEVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0
Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUlu
aXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpyZXNo
YXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpTd2FwY2hhaW46OlN3
YXBjaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRTo6U3dhcGNoYWluOjp+U3dhcGNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OkVHTEltYWdl
QmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjp+RUdMSW1hZ2VCYWNraW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpFR0xJbWFnZUJhY2tpbmc6OmZvcm1hdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNr
aW5nOjpzdHJpZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291
cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjppc1JlbGVhc2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJ
bWFnZUJhY2tpbmc6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuaDoKKwogMjAyMi0w
My0yNyAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCBub24tdW5pZmllZCBidWlsZGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFH
Q0dMQU5HTEVMYXllci5jcHAKaW5kZXggZDc0N2I3NTAyZTAyZmNkYzNhMDA5NWQ4YjI2ZTczNDc0
ZWU0NzM3ZS4uZWJkOGJjNWY3YjY0MTZkNDJlMTE4MGUxZGQ5NDcwMTg3ZWQyNjZjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUdDR0xBTkdMRUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCkBAIC0zNiw3ICsz
Niw4IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJEbWFidWYuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWYu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0wuaCIKIAogbmFt
ZXNwYWNlIE5pY29zaWEgewpAQCAtNDgsMjEgKzQ5LDI1IEBAIHZvaWQgR0NHTEFOR0xFTGF5ZXI6
OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgIGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmljb3Np
YTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KGNvbnRlbnRMYXllcigpLmltcGwoKSku
cHJveHkoKTsKICAgICBhdXRvIHNpemUgPSBtX2NvbnRleHQuZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKTsKIAotICAgIGlmIChtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcp
IHsKLSAgICAgICAgaWYgKG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+aXNS
ZWxlYXNlZCgpKQotICAgICAgICAgICAgcmV0dXJuOworI2lmIFVTRShURVhUVVJFX01BUFBFUl9E
TUFCVUYpCisgICAgaWYgKGlzPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY+
KHByb3h5KSkgeworICAgICAgICBhdXRvIGJvID0gV1RGTW92ZShtX2NvbnRleHQubV9zd2FwY2hh
aW4uZGlzcGxheUJPKTsKKyAgICAgICAgaWYgKGJvKSB7CisgICAgICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgcHJveHkubG9jaygpIH07CiAKLSAgICAgICAgYXV0byBmb3JtYXQgPSBtX2NvbnRleHQu
bV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmZvcm1hdCgpOwotICAgICAgICBhdXRvIHN0cmlk
ZSA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+c3RyaWRlKCk7Ci0gICAg
ICAgIGF1dG8gZmQgPSBtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmZkKCk7
CisgICAgICAgICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBl
ckdMOjpTaG91bGRGbGlwVGV4dHVyZTsKKyAgICAgICAgICAgIGlmIChtX2NvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKS5hbHBoYSkKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBUZXh0dXJlTWFw
cGVyR0w6OlNob3VsZEJsZW5kOwogCi0gICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBwcm94eS5sb2NrKCkgfTsKLSAgICAgICAgICAgIEFTU0VSVChpczxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5R0w+KHByb3h5KSk7Ci0gICAgICAgICAgICBkb3duY2FzdDxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w+KHByb3h5KS5wdXNoTmV4dEJ1ZmZlcihtYWtl
VW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmPihzaXplLCBmb3JtYXQsIHN0
cmlkZSwgZmQpKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlETUFCdWY+KHByb3h5KS5wdXNoRE1BQnVmKAorICAgICAgICAgICAgICAgIERNQUJ1
Zk9iamVjdChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb250ZXh0Lm1fc3dhcGNoYWlu
LnN3YXBjaGFpbi5nZXQoKSkgKyBiby0+aGFuZGxlKCkpLAorICAgICAgICAgICAgICAgIFsmXShh
dXRvJiYgb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiby0+Y3JlYXRlRE1B
QnVmT2JqZWN0KG9iamVjdC5oYW5kbGUpOworICAgICAgICAgICAgICAgIH0sIGZsYWdzKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKICAgICAvLyBGYWxsYmFj
ayBwYXRoLCByZWFkIGJhY2sgdGV4dHVyZSB0byBtYWluIG1lbW9yeQogICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpAQCAtODUsOSArOTAsMTUgQEAgdm9pZCBHQ0dM
QU5HTEVMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgfQogfQogCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0RNQUJVRikKK3VzaW5nIFBsYXRmb3JtTGF5ZXJQcm94eVR5cGUgPSBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1BQnVmOworI2Vsc2UKK3VzaW5nIFBsYXRmb3Jt
TGF5ZXJQcm94eVR5cGUgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w7CisjZW5k
aWYKKwogR0NHTEFOR0xFTGF5ZXI6OkdDR0xBTkdMRUxheWVyKEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFJiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX2NvbnRlbnRMYXllcihOaWNvc2lhOjpDb250ZW50TGF5ZXI6OmNyZWF0ZShOaWNvc2lhOjpD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgqdGhpcykpKQorICAg
ICwgbV9jb250ZW50TGF5ZXIoTmljb3NpYTo6Q29udGVudExheWVyOjpjcmVhdGUoTmljb3NpYTo6
Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKnRoaXMsIGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1MYXllclByb3h5VHlwZSkpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdD
R0xBTkdMRUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAppbmRleCBhNDQxMTU4M2U1Y2VhNTk5MDk2
MjZmYjdhYzQwMDA4NDAyNjJkNmZkLi41MzhlMDU2NTg4YTQwYTg5MjE5NWJjMWRkOTdiZTRkZGJh
YzcxNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaApA
QCAtMzEsNyArMzEsNiBAQAogI2lmIFVTRShOSUNPU0lBKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIp
CiAKICNpbmNsdWRlICJOaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCIKLSNp
bmNsdWRlIDxtZW1vcnk+CiAKIHR5cGVkZWYgdm9pZCAqRUdMQ29uZmlnOwogdHlwZWRlZiB2b2lk
ICpFR0xDb250ZXh0OwpAQCAtNDAsNyArMzksNiBAQCB0eXBlZGVmIHZvaWQgKkVHTFN1cmZhY2U7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBHTENvbnRleHQ7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTsKIGNsYXNzIFBsYXRm
b3JtRGlzcGxheTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyQU5HTEUuY3BwCmluZGV4IGY0MDY4YzU2ZGVjNWRmODMzZDg5OTI4OTRjOTViYThm
N2M1ZGE3ODEuLmQxOTAxOTY4MTVkY2Q5ZTk0ZTljY2ExMzFhNGQwMzM0MDdjMmExNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNw
cApAQCAtOTEsOSArOTEsNjkgQEAgR0NHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpw
bGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKIHsKLSAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0g
bV9jb250ZXh0T2JqKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gRUdMX01ha2VD
dXJyZW50KG1fZGlzcGxheU9iaiwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBtX2Nv
bnRleHRPYmopOworICAgIGF1dG8gbWFkZUN1cnJlbnQgPQorICAgICAgICBbJl0geworICAgICAg
ICAgICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dE9iaikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAhIUVHTF9NYWtlQ3Vy
cmVudChtX2Rpc3BsYXlPYmosIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgbV9jb250
ZXh0T2JqKTsKKyAgICAgICAgfSgpOworCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikK
KyAgICBhdXRvJiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUmPigqdGhpcyk7CisgICAgaWYgKG1hZGVDdXJyZW50ICYmIGNvbnRleHQubV9z
d2FwY2hhaW4uc3dhcGNoYWluICYmICFjb250ZXh0Lm1fc3dhcGNoYWluLmRyYXdCTykgeworICAg
ICAgICBhdXRvIHNpemUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOworICAgICAgICBj
b250ZXh0Lm1fc3dhcGNoYWluLmRyYXdCTyA9IGNvbnRleHQubV9zd2FwY2hhaW4uc3dhcGNoYWlu
LT5nZXRCdWZmZXIoCisgICAgICAgICAgICBHQk1CdWZmZXJTd2FwY2hhaW46OkJ1ZmZlckRlc2Ny
aXB0aW9uIHsKKyAgICAgICAgICAgICAgICAuZm9ybWF0ID0gRE1BQnVmRm9ybWF0OjpjcmVhdGUo
dWludDMyX3QoY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IERNQUJ1ZkZvcm1hdDo6Rm91ckND
OjpBUkdCODg4OCA6IERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpYUkdCODg4OCkpLAorICAgICAgICAg
ICAgICAgIC53aWR0aCA9IHN0ZDo6Y2xhbXA8dWludDMyX3Q+KHNpemUud2lkdGgoKSwgMCwgVUlO
VF9NQVgpLAorICAgICAgICAgICAgICAgIC5oZWlnaHQgPSBzdGQ6OmNsYW1wPHVpbnQzMl90Pihz
aXplLmhlaWdodCgpLCAwLCBVSU5UX01BWCksCisgICAgICAgICAgICB9KTsKKworICAgICAgICBH
TGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CisgICAg
ICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVm
ZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4
dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworCisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gY29udGV4dC5tX3N3YXBjaGFpbi5pbWFnZXMuZW5zdXJlKGNv
bnRleHQubV9zd2FwY2hhaW4uZHJhd0JPLT5oYW5kbGUoKSwKKyAgICAgICAgICAgIFsmXSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBkbWFidWZPYmplY3QgPSBjb250ZXh0Lm1fc3dhcGNoYWluLmRy
YXdCTy0+Y3JlYXRlRE1BQnVmT2JqZWN0KDApOworCisgICAgICAgICAgICAgICAgc3RkOjppbml0
aWFsaXplcl9saXN0PEVHTGludD4gYXR0cmlidXRlcyB7CisgICAgICAgICAgICAgICAgICAgIEVH
TF9XSURUSCwgRUdMaW50KGRtYWJ1Zk9iamVjdC5mb3JtYXQucGxhbmVXaWR0aCgwLCBkbWFidWZP
YmplY3Qud2lkdGgpKSwKKyAgICAgICAgICAgICAgICAgICAgRUdMX0hFSUdIVCwgRUdMaW50KGRt
YWJ1Zk9iamVjdC5mb3JtYXQucGxhbmVIZWlnaHQoMCwgZG1hYnVmT2JqZWN0LmhlaWdodCkpLAor
ICAgICAgICAgICAgICAgICAgICBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRpY19jYXN0
PEVHTGludD4oZG1hYnVmT2JqZWN0LmZvcm1hdC5wbGFuZXNbMF0uZm91cmNjKSwKKyAgICAgICAg
ICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgZG1hYnVmT2JqZWN0LmZkWzBd
LAorICAgICAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBzdGF0
aWNfY2FzdDxFR0xpbnQ+KGRtYWJ1Zk9iamVjdC5zdHJpZGVbMF0pLAorICAgICAgICAgICAgICAg
ICAgICBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgRUdMX05PTkUsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
RUdMX0NyZWF0ZUltYWdlS0hSKGNvbnRleHQubV9zd2FwY2hhaW4ucGxhdGZvcm1EaXNwbGF5LCBF
R0xfTk9fQ09OVEVYVCwgRUdMX0xJTlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVmZmVyKW51
bGxwdHIsIHN0ZDo6ZGF0YShhdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOworICAgICAgICBHTF9F
R0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCByZXN1bHQuaXRlcmF0b3It
PnZhbHVlKTsKKworICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAg
IEdDR0x1aW50IGJvdW5kRkJPIHsgMCB9OworICAgICAgICAgICAgR0xfR2V0SW50ZWdlcnYoR0xf
RlJBTUVCVUZGRVJfQklORElORywgcmVpbnRlcnByZXRfY2FzdDxHQ0dMaW50Kj4oJmJvdW5kRkJP
KSk7CisKKyAgICAgICAgICAgIEdDR0x1aW50IHRhcmdldEZCTyA9IGNvbnRleHRBdHRyaWJ1dGVz
KCkuYW50aWFsaWFzID8gbV9tdWx0aXNhbXBsZUZCTyA6IG1fZmJvOworICAgICAgICAgICAgaWYg
KHRhcmdldEZCTyAhPSBib3VuZEZCTykKKyAgICAgICAgICAgICAgICBHTF9CaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIHRhcmdldEZCTyk7CisKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8
ZmxvYXQsIDQ+IGNsZWFyQ29sb3IgeyAwLCAwLCAwLCAwIH07CisgICAgICAgICAgICBHTF9HZXRG
bG9hdHYoR0xfQ09MT1JfQ0xFQVJfVkFMVUUsIGNsZWFyQ29sb3IuZGF0YSgpKTsKKworICAgICAg
ICAgICAgR0xfQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIEdMX0NsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgICAgICBHTF9DbGVhckNvbG9yKGNsZWFyQ29s
b3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0RkJPICE9IGJvdW5kRkJPKQorICAgICAgICAgICAgICAgIEdM
X0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgYm91bmRGQk8pOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gbWFkZUN1cnJlbnQ7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6Y2hlY2tHUFVTdGF0dXMoKQpAQCAtMTMyLDEyICsxOTIsMTQgQEAg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJBTkdMRSgpCiAgICAgYm9vbCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAorI2lmICFVU0UoVEVY
VFVSRV9NQVBQRVJfRE1BQlVGKQogICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKQogICAgICAg
ICBHTF9EZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmUpCiAgICAg
ICAgIEdMX0RlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOwogI2VuZGlm
CisjZW5kaWYKIH0KIAogUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQpAQCAtMTY2LDkgKzIyOCw4IEBAIFJlZlB0cjxWaWRlb0ZyYW1lPiBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5p
dGlhbGl6ZUNvbnRleHQoKQogewotICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRy
aWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICNpZiBFTkFCTEUoV0VCR0wyKQotICAgIG1f
aXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRH
TFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIG1faXNGb3JXZWJHTDIgPSBjb250ZXh0QXR0cmli
dXRlcygpLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2Vi
R0wyOwogI2VuZGlmCiAKICAgICBWZWN0b3I8RUdMaW50PiBkaXNwbGF5QXR0cmlidXRlcyB7CkBA
IC0yNzIsMTcgKzMzMywxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogI2lmIFVTRShOSUNPU0lBKQogICAgIG1fbmljb3Np
YUxheWVyID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcj4oKnRoaXMpOwogICAg
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVs
ZWdhdGU6OmNyZWF0ZSgmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRMYXllcigpKTsKLQotICAgIGNv
bnN0IGF1dG8mIGdibURldmljZSA9IEdCTURldmljZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKGdi
bURldmljZS5kZXZpY2UoKSkgewotICAgICAgICBtX3RleHR1cmVCYWNraW5nID0gbWFrZVVuaXF1
ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsKLSAgICAgICAgbV9jb21wb3Np
dG9yVGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5pcXVlPEVHTEltYWdlQmFja2luZz4ocGxhdGZvcm1E
aXNwbGF5KCkpOwotICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nID0gbWFrZVVu
aXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsKLSAgICB9CiAjZWxzZQog
ICAgIG1fdGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllcj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtX3RleG1hcExheWVyLmdldCgpKTsKICNl
bmRpZgorCiAgICAgYm9vbCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNT
RVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIApAQCAtMzA3LDYgKzM2Miw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgp
CiAgICAgR0xfR2VuRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CiAgICAgR0xfQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKKyNpZiAhVVNFKFRFWFRVUkVfTUFQUEVSX0RN
QUJVRikKICAgICBHTF9HZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAg
R0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAg
R0xfVGV4UGFyYW1ldGVyZih0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7CkBAIC0zMjMsNiArMzc5LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBHTF9UZXhQYXJhbWV0ZXJp
KHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKIAog
ICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIDApOworI2VuZGlmCiAjZW5kaWYKIAog
ICAgIC8vIENyZWF0ZSBhIG11bHRpc2FtcGxlIEZCTy4KQEAgLTM1MywxMSArNDEwLDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVUZXh0dXJlKCkK
ICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5hbnRpYWxpYXMpCiAgICAgICAgIHJlc29sdmVN
dWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKIAorI2lmICFVU0UoVEVYVFVSRV9NQVBQRVJfRE1B
QlVGKQogICAgIHN0ZDo6c3dhcChtX3RleHR1cmUsIG1fY29tcG9zaXRvclRleHR1cmUpOwogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnN3YXAobV90ZXh0dXJlLCBtX2lu
dGVybWVkaWF0ZVRleHR1cmUpOwotICAgIHN0ZDo6c3dhcChtX3RleHR1cmVCYWNraW5nLCBtX2Nv
bXBvc2l0b3JUZXh0dXJlQmFja2luZyk7Ci0gICAgc3RkOjpzd2FwKG1fdGV4dHVyZUJhY2tpbmcs
IG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIEdM
X0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwpAQCAtMzgxLDQxICs0Mzgs
MjAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cmVzaGFwZURp
c3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICBHTHVpbnQgY29sb3JGb3JtYXQgPSBhdHRycy5hbHBo
YSA/IEdMX1JHQkEgOiBHTF9SR0I7CiAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpOwogICAgIEdMdWludCBpbnRlcm5hbENvbG9yRm9ybWF0ID0g
dGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8gY29sb3JGb3JtYXQgOiBtX2ludGVybmFs
Q29sb3JGb3JtYXQ7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1f
dGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1fdGV4dHVyZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBo
ZWlnaHQsIGF0dHJzLmFscGhhKTsKLSAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcp
Ci0gICAgICAgIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0
LCBhdHRycy5hbHBoYSk7Ci0gICAgaWYgKG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpCi0g
ICAgICAgIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQs
IGF0dHJzLmFscGhhKTsKLSNlbmRpZgotCiAgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5n
IHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5n
VGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRF
WFRVUkVfUkVDVEFOR0xFX0FSQik7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAg
IGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7Ci0gICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1
cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOwotICAgICAgICBpZiAobV9jb21wb3NpdG9y
VGV4dHVyZUJhY2tpbmcgJiYgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCi0g
ICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBt
X2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwot
ICAgICAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0ZVRleHR1
cmUpOwotICAgICAgICBpZiAobV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZyAmJiBtX2ludGVy
bWVkaWF0ZVRleHR1cmVCYWNraW5nLT5pbWFnZSgpKQotICAgICAgICAgICAgR0xfRUdMSW1hZ2VU
YXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRhcmdldCwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFj
a2luZy0+aW1hZ2UoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdMX1RleEltYWdlMkQo
dGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwg
Y29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIH0KLSAgICBHTF9CaW5kVGV4
dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOwotICAgIGlmIChtX3RleHR1cmVCYWNraW5n
ICYmIG1fdGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCi0gICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZUJhY2tpbmctPmltYWdlKCkpOwot
ICAgIGVsc2UKLSAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5h
bENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURf
QllURSwgMCk7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorICAgIG1fc3dhcGNo
YWluID0gU3dhcGNoYWluKHBsYXRmb3JtRGlzcGxheSgpKTsKICNlbHNlCiAgICAgR0xfQmluZFRl
eHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgR0xfVGV4SW1h
Z2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgR0xfQmluZFRleHR1
cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCisgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9pbnRlcm1lZGlhdGVUZXh0
dXJlKTsKICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAw
KTsKICNlbmRpZgorI2VuZGlmCisgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90
ZXh0dXJlKTsKKyAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29s
b3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRF
LCAwKTsKICAgICBHTF9GcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSwgMCk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTQyOCw4NCArNDY0LDIyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVGb3JEaXNwbGF5KCkKIAogICAgIHByZXBhcmVUZXh0dXJl
KCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwotfQogCi0jaWYgVVNFKE5JQ09TSUEpCi1H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpFR0xJ
bWFnZUJhY2tpbmcoR0NHTERpc3BsYXkgZGlzcGxheSkKLSAgICA6IG1fZGlzcGxheShkaXNwbGF5
KQotICAgICwgbV9pbWFnZShFR0xfTk9fSU1BR0UpCi17Ci19Ci0KLUdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6On5FR0xJbWFnZUJhY2tpbmcoKQot
ewotICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKLX0KLQotdWludDMyX3QgR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6Zm9ybWF0KCkgY29uc3QKLXsK
LSAgICBpZiAobV9CTykKLSAgICAgICAgcmV0dXJuIGdibV9ib19nZXRfZm9ybWF0KG1fQk8pOwot
ICAgIHJldHVybiAwOwotfQotCi11aW50MzJfdCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpzdHJpZGUoKSBjb25zdAotewotICAgIGlmIChtX0JP
KQotICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9zdHJpZGUobV9CTyk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdl
QmFja2luZzo6cmVsZWFzZVJlc291cmNlcygpCi17Ci0gICAgaWYgKG1fQk8pIHsKLSAgICAgICAg
Z2JtX2JvX2Rlc3Ryb3kobV9CTyk7Ci0gICAgICAgIG1fQk8gPSBudWxscHRyOwotICAgIH0KLSAg
ICBpZiAobV9pbWFnZSkgewotICAgICAgICBFR0xfRGVzdHJveUltYWdlS0hSKG1fZGlzcGxheSwg
bV9pbWFnZSk7Ci0gICAgICAgIG1faW1hZ2UgPSBFR0xfTk9fSU1BR0U7Ci0gICAgfQotICAgIGlm
IChtX0ZEID49IDApIHsKLSAgICAgICAgY2xvc2UobV9GRCk7Ci0gICAgICAgIG1fRkQgPSAtMTsK
LSAgICB9CisgICAgbV9zd2FwY2hhaW4uZGlzcGxheUJPID0gV1RGTW92ZShtX3N3YXBjaGFpbi5k
cmF3Qk8pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpF
R0xJbWFnZUJhY2tpbmc6OmlzUmVsZWFzZWQoKQotewotICAgIHJldHVybiAhbV9CTzsKLX0KKyNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEU6OlN3YXBjaGFpbjo6U3dhcGNoYWluKEdDR0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxh
eSkKKyAgICA6IHBsYXRmb3JtRGlzcGxheShwbGF0Zm9ybURpc3BsYXkpCisgICAgLCBzd2FwY2hh
aW4oYWRvcHRSZWYobmV3IEdCTUJ1ZmZlclN3YXBjaGFpbihHQk1CdWZmZXJTd2FwY2hhaW46OkJ1
ZmZlclN3YXBjaGFpblNpemU6OkZvdXIpKSkKK3sgfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJlc2V0KGludCB3aWR0aCwgaW50
IGhlaWdodCwgYm9vbCBoYXNBbHBoYSkKK0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpTd2FwY2hhaW46On5Td2FwY2hhaW4oKQogewotICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsK
LQotICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgY29uc3QgYXV0byYgZ2JtRGV2aWNlID0gR0JNRGV2aWNlOjpzaW5nbGV0b24oKTsKLSAgICBt
X0JPID0gZ2JtX2JvX2NyZWF0ZShnYm1EZXZpY2UuZGV2aWNlKCksIHdpZHRoLCBoZWlnaHQsIGhh
c0FscGhhID8gR0JNX0JPX0ZPUk1BVF9BUkdCODg4OCA6IEdCTV9CT19GT1JNQVRfWFJHQjg4ODgs
IEdCTV9CT19VU0VfUkVOREVSSU5HKTsKLSAgICBpZiAobV9CTykgewotICAgICAgICBtX0ZEID0g
Z2JtX2JvX2dldF9mZChtX0JPKTsKLSAgICAgICAgaWYgKG1fRkQgPj0gMCkgewotICAgICAgICAg
ICAgRUdMaW50IGltYWdlQXR0cmlidXRlc1tdID0gewotICAgICAgICAgICAgICAgIEVHTF9XSURU
SCwgd2lkdGgsCi0gICAgICAgICAgICAgICAgRUdMX0hFSUdIVCwgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgIEVHTF9MSU5VWF9EUk1fRk9VUkNDX0VYVCwgc3RhdGljX2Nhc3Q8RUdMaW50PihnYm1f
Ym9fZ2V0X2Zvcm1hdChtX0JPKSksCi0gICAgICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUw
X0ZEX0VYVCwgbV9GRCwKLSAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hf
RVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGdibV9ib19nZXRfc3RyaWRlKG1fQk8pKSwKLSAgICAg
ICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwgMCwKLSAgICAgICAgICAg
ICAgICBFR0xfTk9ORQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIG1faW1hZ2UgPSBFR0xf
Q3JlYXRlSW1hZ2VLSFIobV9kaXNwbGF5LCBFR0xfTk9fQ09OVEVYVCwgRUdMX0xJTlVYX0RNQV9C
VUZfRVhULCAoRUdMQ2xpZW50QnVmZmVyKW51bGxwdHIsIGltYWdlQXR0cmlidXRlcyk7Ci0gICAg
ICAgICAgICBpZiAobV9pbWFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQorICAgIGZvciAoRUdMSW1hZ2VLSFIgaW1hZ2UgOiBpbWFnZXMudmFsdWVzKCkpIHsKKyAg
ICAgICAgaWYgKGltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpCisgICAgICAgICAgICBFR0xfRGVz
dHJveUltYWdlS0hSKHBsYXRmb3JtRGlzcGxheSwgaW1hZ2UpOwogICAgIH0KLQotICAgIHJlbGVh
c2VSZXNvdXJjZXMoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuaAppbmRleCAwMzk3
NzRlNTE3NWEyYzQ4YTVmMzZjOWRiMGQ3ZmMxMDY0YzAwMWJhLi4zMDk2NzJkNzJhMGQzNGRkMzc4
MTE1ZTk1YWI1OWFmNTIzZGZiYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuaApAQCAtMjksNiArMjksMTIgQEAKIAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9ETUFC
VUYpCisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCisjaW5jbHVkZSAiR0JNQnVmZmVyU3dhcGNo
YWluLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNlbmRpZgorCiAjaWYgVVNFKE5JQ09T
SUEpCiBuYW1lc3BhY2UgTmljb3NpYSB7CiBjbGFzcyBHQ0dMQU5HTEVMYXllcjsKQEAgLTczLDQ2
ICs3OSwzNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKKyAgICBzdHJ1Y3QgU3dhcGNoYWluIHsKKyAgICAgICAg
U3dhcGNoYWluKCkgPSBkZWZhdWx0OworICAgICAgICBTd2FwY2hhaW4oR0NHTERpc3BsYXkpOwor
ICAgICAgICB+U3dhcGNoYWluKCk7CisKKyAgICAgICAgR0NHTERpc3BsYXkgcGxhdGZvcm1EaXNw
bGF5IHsgRUdMX05PX0RJU1BMQVkgfTsKKyAgICAgICAgUmVmUHRyPEdCTUJ1ZmZlclN3YXBjaGFp
bj4gc3dhcGNoYWluOworICAgICAgICBSZWZQdHI8R0JNQnVmZmVyU3dhcGNoYWluOjpCdWZmZXI+
IGRyYXdCTzsKKyAgICAgICAgUmVmUHRyPEdCTUJ1ZmZlclN3YXBjaGFpbjo6QnVmZmVyPiBkaXNw
bGF5Qk87CisKKyAgICAgICAgSGFzaE1hcDx1aW50MzJfdCwgRUdMSW1hZ2VLSFIsIFdURjo6RGVm
YXVsdEhhc2g8dWludDMyX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQzMl90Pj4gaW1hZ2VzOworICAgIH0gbV9zd2FwY2hhaW47CisjZWxzZQogICAgIEdDR0x1aW50
IG1fY29tcG9zaXRvclRleHR1cmUgeyAwIH07CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogICAgIEdDR0x1aW50IG1faW50ZXJtZWRpYXRlVGV4dHVyZSB7IDAgfTsKICNlbmRpZgorI2Vu
ZGlmCiAKICNpZiBVU0UoTklDT1NJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6R0NH
TEFOR0xFTGF5ZXI+IG1fbmljb3NpYUxheWVyOwotCi0gICAgY2xhc3MgRUdMSW1hZ2VCYWNraW5n
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEVH
TEltYWdlQmFja2luZyhHQ0dMRGlzcGxheSk7Ci0gICAgICAgIH5FR0xJbWFnZUJhY2tpbmcoKTsK
LQotICAgICAgICBib29sIHJlc2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgYm9vbCBoYXNBbHBo
YSk7Ci0KLSAgICAgICAgRUdMSW1hZ2UgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9
Ci0gICAgICAgIGludCBmZCgpIGNvbnN0IHsgcmV0dXJuIG1fRkQ7IH0KLQotICAgICAgICB1aW50
MzJfdCBmb3JtYXQoKSBjb25zdDsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlKCkgY29uc3Q7Ci0K
LSAgICAgICAgYm9vbCBpc1JlbGVhc2VkKCk7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBy
ZWxlYXNlUmVzb3VyY2VzKCk7Ci0KLSAgICAgICAgR0NHTERpc3BsYXkgbV9kaXNwbGF5OwotCi0g
ICAgICAgIGdibV9ibyogbV9CTyB7IG51bGxwdHIgfTsKLSAgICAgICAgaW50IG1fRkQgeyAtMSB9
OwotICAgICAgICBFR0xJbWFnZSBtX2ltYWdlOwotICAgIH07Ci0KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RUdMSW1hZ2VCYWNraW5nPiBtX3RleHR1cmVCYWNraW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFR0xJbWFnZUJhY2tpbmc+IG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxFR0xJbWFnZUJhY2tpbmc+IG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmc7
CiAjZWxzZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5
ZXI+IG1fdGV4bWFwTGF5ZXI7CiAjZW5kaWYKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9ETUFC
VUYpCisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU7CisjZW5kaWYKKwog
I2lmIFVTRShOSUNPU0lBKQogICAgIGZyaWVuZCBjbGFzcyBOaWNvc2lhOjpHQ0dMQU5HTEVMYXll
cjsKICAgICBmcmllbmQgY2xhc3MgTmljb3NpYTo6R0NHTExheWVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455914</attachid>
            <date>2022-03-28 07:01:19 -0700</date>
            <delta_ts>2022-03-28 22:40:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237883-20220328160117.patch</filename>
            <type>text/plain</type>
            <size>24570</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhiNWJhZjk1NjRjMTg2
MTA2YmY3YzEyMzBjNWVmYzEyZjNkZGRkYy4uYjJmM2Q1OGNjZjA0NmFkMmRmNmYxODEyMWMzNzNk
N2ViZmU5YTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTAzLTI4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVz
ZSBHQk1CdWZmZXJTd2FwY2hhaW4gaW4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0
aGUgZ2VuZXJpYyBHQk1CdWZmZXJTd2FwY2hhaW4gZm9yIG1hbmFnaW5nIGRtYWJ1Zi1iYXNlZCBi
dWZmZXIKKyAgICAgICAgb2JqZWN0cyBpbiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJB
TkdMRS4gVGhpcyB1c2FnZSBpcyBndWFyZGVkCisgICAgICAgIGJlaGluZCB0aGUgVVNFKFRFWFRV
UkVfTUFQUEVSX0RNQUJVRikgYnVpbGQgZ3VhcmRzLgorCisgICAgICAgIFdoZW4gdGhhdCBidWls
ZCBndWFyZCBpcyBlbmFibGVkLCB3ZSBjYW4gYXZvaWQgdXNpbmcgYWRkaXRpb25hbCB0ZXh0dXJl
cworICAgICAgICBidXQgaW5zdGVhZCBoYXZlIHRvIG1hbmFnZSBhIEdCTUJ1ZmZlclN3YXBjaGFp
biBpbnN0YW5jZSBmcm9tIHdoaWNoIHdlCisgICAgICAgIGNhbiByZXRyaWV2ZSBidWZmZXJzIHRo
YXQgc2hvdWxkIGJlIGFjdGluZyBhcyBiYWNraW5nIGZvciB0aGUgZGlmZmVyZW50CisgICAgICAg
IGRyYXcgb3BlcmF0aW9ucy4KKworICAgICAgICBUaGlzIGJ1ZmZlciBzZXR1cCBpcyBoYW5kbGVk
IGluIHRoZQorICAgICAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6bWFr
ZUNvbnRleHRDdXJyZW50KCkgbWV0aG9kLiBPbmNlCisgICAgICAgIGNhbGxlZCwgaWYgdGhlcmUn
cyBhIHN3YXBjaGFpbiBhdmFpbGFibGUgKGFmdGVyIGluaXRpYWwgb3IgZWFjaAorICAgICAgICBz
dWJzZXF1ZW50IGJhY2tpbmcgcmVzaGFwaW5nKSBhIGJ1ZmZlciB3aWxsIGJlIHJldHJpZXZlZCBm
cm9tIHRoYXQKKyAgICAgICAgc3dhcGNoYWluLCBhIGNvcnJlc3BvbmRpbmcgRUdMSW1hZ2UgY3Jl
YXRlZCBhbmQgYXNzb2NpYXRlZCB0byB0aGUgR0wKKyAgICAgICAgdGV4dHVyZSB0aGF0IGFjdHMg
YXMgdGhlIGNvbG9yIGF0dGFjaG1lbnQgZm9yIHRoZSBkZWZhdWx0IGJ1ZmZlci4gQWxsCisgICAg
ICAgIHN1YnNlcXVlbnQgZHJhd2luZyB3aWxsIGJlIGRvbmUgb250byB0aGlzIGJ1ZmZlciBvYmpl
Y3QsIGFsbCB0aGUgd2F5CisgICAgICAgIHRvIHRoZSBwcmVwYXJlRm9yRGlzcGxheSgpIG1ldGhv
ZCB3aGVyZSB0aGF0IGJ1ZmZlciBpcyBtb3ZlZCBpbnRvIHRoZQorICAgICAgICBkaXNwbGF5LWJ1
ZmZlciBwb3NpdGlvbiwgd2FpdGluZyBmb3IgdGhlIGRpc3BsYXkgdG8gb2NjdXIuCisKKyAgICAg
ICAgVGhlIGRpc3BsYXkgb2YgdGhpcyBidWZmZXIgaXMgc3RpbGwgaGFuZGxlZCBpbiBOaWNvc2lh
OjpHQ0dMQU5HTEVMYXllci4KKyAgICAgICAgSW4gdGhlIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBt
ZXRob2QsIGlmIHRoZSBwZW5kaW5nIGJ1ZmZlciBpcyBkZXRlY3RlZCwKKyAgICAgICAgdGhlIGRt
YWJ1ZiBpbmZvcm1hdGlvbiBpcyBwdXNoZWQgaW50byB0aGUKKyAgICAgICAgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1ZiBpbnN0YW5jZSBhbmQgcHJlcGFyZWQgZm9yCisgICAg
ICAgIHByZXNlbnRhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cywgd2hlcmUgdGhlIEFOR0xFLWJhY2tlZAorICAgICAgICBHcmFwaGljc0Nv
bnRleHRHTCBjb250aW51ZXMgdG8gaW1wcm92ZSB0aGUgb3ZlcmFsbCBzdGF0ZSBvZiBXZWJHTCB0
ZXN0cy4KKyAgICAgICAgT25seSBwcm9ibGVtIGlzIHRoZSBzb2Z0d2FyZS1iYWNrZWQgcmFzdGVy
aXphdGlvbiBpbiB0aGUgV1BFL0dUSyB0ZXN0aW5nCisgICAgICAgIHRvb2xpbmcgd2hpY2ggZGlz
YWJsZXMgYSBmZXcgZmVhdHVyZXMgYW5kIHRvIGEgZGVncmVlIGJyZWFrcyBXZWJHTAorICAgICAg
ICBjb250ZW50IGRpc3BsYXksIGJ1dCB0aGlzIHNwZWNpZmljIGlzc3VlIHdpbGwgYmUgcmVzb2x2
ZWQgbGF0ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6R0NHTEFOR0xFTGF5
ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoTmljb3NpYTo6R0NHTEFOR0xFTGF5
ZXI6OkdDR0xBTkdMRUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xF
Ojp+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6
ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJBTkdMRTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OlN3YXBjaGFpbjo6U3dhcGNoYWlu
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xF
OjpTd2FwY2hhaW46On5Td2FwY2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6RUdMSW1hZ2VCYWNraW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6On5FR0xJbWFnZUJhY2tpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVH
TEltYWdlQmFja2luZzo6Zm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnN0
cmlkZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpyZWxlYXNlUmVzb3VyY2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OmlzUmVsZWFzZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFj
a2luZzo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5oOgorCiAyMDIyLTAzLTI3ICBM
YXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG5v
bi11bmlmaWVkIGJ1aWxkZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdM
RUxheWVyLmNwcAppbmRleCBkNzQ3Yjc1MDJlMDJmY2RjM2EwMDk1ZDhiMjZlNzM0NzRlZTQ3Mzdl
Li5lYmQ4YmM1ZjdiNjQxNmQ0MmUxMTgwZTFkZDk0NzAxODdlZDI2NmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NH
TEFOR0xFTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKQEAgLTM2LDcgKzM2LDggQEAK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyR0wuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckRtYWJ1Zi5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgi
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zi5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5oIgogCiBuYW1lc3BhY2Ug
Tmljb3NpYSB7CkBAIC00OCwyMSArNDksMjUgQEAgdm9pZCBHQ0dMQU5HTEVMYXllcjo6c3dhcEJ1
ZmZlcnNJZk5lZWRlZCgpCiAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY29udGVudExheWVyKCkuaW1wbCgpKS5wcm94eSgp
OwogICAgIGF1dG8gc2l6ZSA9IG1fY29udGV4dC5nZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
OwogCi0gICAgaWYgKG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZykgewotICAg
ICAgICBpZiAobV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5pc1JlbGVhc2Vk
KCkpCi0gICAgICAgICAgICByZXR1cm47CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikK
KyAgICBpZiAoaXM8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zj4ocHJveHkp
KSB7CisgICAgICAgIGF1dG8gYm8gPSBXVEZNb3ZlKG1fY29udGV4dC5tX3N3YXBjaGFpbi5kaXNw
bGF5Qk8pOworICAgICAgICBpZiAoYm8pIHsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBw
cm94eS5sb2NrKCkgfTsKIAotICAgICAgICBhdXRvIGZvcm1hdCA9IG1fY29udGV4dC5tX2NvbXBv
c2l0b3JUZXh0dXJlQmFja2luZy0+Zm9ybWF0KCk7Ci0gICAgICAgIGF1dG8gc3RyaWRlID0gbV9j
b250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5zdHJpZGUoKTsKLSAgICAgICAgYXV0
byBmZCA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+ZmQoKTsKKyAgICAg
ICAgICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNo
b3VsZEZsaXBUZXh0dXJlOworICAgICAgICAgICAgaWYgKG1fY29udGV4dC5jb250ZXh0QXR0cmli
dXRlcygpLmFscGhhKQorICAgICAgICAgICAgICAgIGZsYWdzIHw9IFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkQmxlbmQ7CiAKLSAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHBy
b3h5LmxvY2soKSB9OwotICAgICAgICAgICAgQVNTRVJUKGlzPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHlHTD4ocHJveHkpKTsKLSAgICAgICAgICAgIGRvd25jYXN0PFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHlHTD4ocHJveHkpLnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY+KHNpemUsIGZvcm1hdCwgc3RyaWRlLCBm
ZCkpOworICAgICAgICAgICAgZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eURNQUJ1Zj4ocHJveHkpLnB1c2hETUFCdWYoCisgICAgICAgICAgICAgICAgRE1BQnVmT2JqZWN0
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbnRleHQubV9zd2FwY2hhaW4uc3dhcGNo
YWluLmdldCgpKSArIGJvLT5oYW5kbGUoKSksCisgICAgICAgICAgICAgICAgWyZdKGF1dG8mJiBv
YmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvLT5jcmVhdGVETUFCdWZPYmpl
Y3Qob2JqZWN0LmhhbmRsZSk7CisgICAgICAgICAgICAgICAgfSwgZmxhZ3MpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKIAogICAgIC8vIEZhbGxiYWNrIHBhdGgs
IHJlYWQgYmFjayB0ZXh0dXJlIHRvIG1haW4gbWVtb3J5CiAgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CkBAIC04NSw5ICs5MCwxNSBAQCB2b2lkIEdDR0xBTkdMRUxh
eWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICB9CiB9CiAKKyNpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfRE1BQlVGKQordXNpbmcgUGxhdGZvcm1MYXllclByb3h5VHlwZSA9IFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY7CisjZWxzZQordXNpbmcgUGxhdGZvcm1MYXllclBy
b3h5VHlwZSA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDsKKyNlbmRpZgorCiBH
Q0dMQU5HTEVMYXllcjo6R0NHTEFOR0xFTGF5ZXIoR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEUmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fY29u
dGVudExheWVyKE5pY29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRlKE5pY29zaWE6OkNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0aGlzKSkpCisgICAgLCBtX2Nv
bnRlbnRMYXllcihOaWNvc2lhOjpDb250ZW50TGF5ZXI6OmNyZWF0ZShOaWNvc2lhOjpDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgqdGhpcywgYWRvcHRSZWYoKm5l
dyBQbGF0Zm9ybUxheWVyUHJveHlUeXBlKSkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xF
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFHQ0dMQU5HTEVMYXllci5oCmluZGV4IGE0NDExNTgzZTVjZWE1OTkwOTYyNmZiN2Fj
NDAwMDg0MDI2MmQ2ZmQuLjUzOGUwNTY1ODhhNDBhODkyMTk1YmMxZGQ5N2JlNGRkYmFjNzE2MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5oCkBAIC0zMSw3
ICszMSw2IEBACiAjaWYgVVNFKE5JQ09TSUEpICYmIFVTRShURVhUVVJFX01BUFBFUikKIAogI2lu
Y2x1ZGUgIk5pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgotI2luY2x1ZGUg
PG1lbW9yeT4KIAogdHlwZWRlZiB2b2lkICpFR0xDb25maWc7CiB0eXBlZGVmIHZvaWQgKkVHTENv
bnRleHQ7CkBAIC00MCw3ICszOSw2IEBAIHR5cGVkZWYgdm9pZCAqRUdMU3VyZmFjZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIEdMQ29udGV4dDsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOwogY2xhc3MgUGxhdGZvcm1EaXNw
bGF5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRS5jcHAKaW5kZXggZjQwNjhjNTZkZWM1ZGY4MzNkODk5Mjg5NGM5NWJhOGY3YzVkYTc4
MS4uZTA2NjVjNjcwMmE3MjY2MGYyMjc3YWJjNmJiNTNhOWZmNTAzN2Y3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCkBAIC05
MSw5ICs5MSw3NyBAQCBHQ0dMQ29uZmlnIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3Jt
Q29uZmlnKCkgY29uc3QKIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptYWtlQ29udGV4
dEN1cnJlbnQoKQogewotICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRl
eHRPYmopCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBFR0xfTWFrZUN1cnJlbnQo
bV9kaXNwbGF5T2JqLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIG1fY29udGV4dE9i
aik7CisgICAgYXV0byBtYWRlQ3VycmVudCA9CisgICAgICAgIFsmXSB7CisgICAgICAgICAgICBp
ZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0T2JqKQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuICEhRUdMX01ha2VDdXJyZW50KG1f
ZGlzcGxheU9iaiwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBtX2NvbnRleHRPYmop
OworICAgICAgICB9KCk7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorICAgIC8v
IE9uY2UgdGhlIGNvbnRleHQgaXMgbWFkZSBjdXJyZW50LCB3ZSBoYXZlIHRvIG1hbnVhbGx5IHBy
b3ZpZGUgdGhlIGJhY2svZHJhdyBidWZmZXIuCisgICAgLy8gSWYgbm90IHlldCBzZXQgKGR1ZSB0
byByZXBldGl0aXZlIG1ha2VDb250ZXh0Q3VycmVudCgpIGNhbGxzKSwgd2UgcmV0cmlldmUgaXQg
ZnJvbQorICAgIC8vIHRoZSBzd2FwY2hhaW4uIFdlIGFsc28gaGF2ZSB0byBwcm92aWRlIChpLmUu
IHJldHJpZXZlIGZyb20gdGhlIGNhY2hlIG9yIGNyZWF0ZSkKKyAgICAvLyB0aGUgQU5HTEUteSBF
R0xJbWFnZSBvYmplY3QgdGhhdCB3aWxsIGJlIGJhY2tlZCBieSB0aGlzIGRtYWJ1ZiBhbmQgd2ls
bCBiZSB0YXJnZXRlZAorICAgIC8vIGJ5IHRoZSB0ZXh0dXJlIHRoYXQncyBhY3RpbmcgYXMgdGhl
IGNvbG9yIGF0dGFjaG1lbnQgb2YgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIuCisKKyAgICBhdXRv
JiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUmPigqdGhpcyk7CisgICAgaWYgKG1hZGVDdXJyZW50ICYmIGNvbnRleHQubV9zd2FwY2hhaW4u
c3dhcGNoYWluICYmICFjb250ZXh0Lm1fc3dhcGNoYWluLmRyYXdCTykgeworICAgICAgICBhdXRv
IHNpemUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOworICAgICAgICBjb250ZXh0Lm1f
c3dhcGNoYWluLmRyYXdCTyA9IGNvbnRleHQubV9zd2FwY2hhaW4uc3dhcGNoYWluLT5nZXRCdWZm
ZXIoCisgICAgICAgICAgICBHQk1CdWZmZXJTd2FwY2hhaW46OkJ1ZmZlckRlc2NyaXB0aW9uIHsK
KyAgICAgICAgICAgICAgICAuZm9ybWF0ID0gRE1BQnVmRm9ybWF0OjpjcmVhdGUodWludDMyX3Qo
Y29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpBUkdCODg4
OCA6IERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpYUkdCODg4OCkpLAorICAgICAgICAgICAgICAgIC53
aWR0aCA9IHN0ZDo6Y2xhbXA8dWludDMyX3Q+KHNpemUud2lkdGgoKSwgMCwgVUlOVF9NQVgpLAor
ICAgICAgICAgICAgICAgIC5oZWlnaHQgPSBzdGQ6OmNsYW1wPHVpbnQzMl90PihzaXplLmhlaWdo
dCgpLCAwLCBVSU5UX01BWCksCisgICAgICAgICAgICB9KTsKKworICAgICAgICBHTGVudW0gdGV4
dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CisgICAgICAgIFNjb3Bl
ZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVy
ZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdl
dCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworCisgICAgICAgIGF1
dG8gcmVzdWx0ID0gY29udGV4dC5tX3N3YXBjaGFpbi5pbWFnZXMuZW5zdXJlKGNvbnRleHQubV9z
d2FwY2hhaW4uZHJhd0JPLT5oYW5kbGUoKSwKKyAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAg
ICAgICAgYXV0byBkbWFidWZPYmplY3QgPSBjb250ZXh0Lm1fc3dhcGNoYWluLmRyYXdCTy0+Y3Jl
YXRlRE1BQnVmT2JqZWN0KDApOworCisgICAgICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9s
aXN0PEVHTGludD4gYXR0cmlidXRlcyB7CisgICAgICAgICAgICAgICAgICAgIEVHTF9XSURUSCwg
RUdMaW50KGRtYWJ1Zk9iamVjdC5mb3JtYXQucGxhbmVXaWR0aCgwLCBkbWFidWZPYmplY3Qud2lk
dGgpKSwKKyAgICAgICAgICAgICAgICAgICAgRUdMX0hFSUdIVCwgRUdMaW50KGRtYWJ1Zk9iamVj
dC5mb3JtYXQucGxhbmVIZWlnaHQoMCwgZG1hYnVmT2JqZWN0LmhlaWdodCkpLAorICAgICAgICAg
ICAgICAgICAgICBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRpY19jYXN0PEVHTGludD4o
ZG1hYnVmT2JqZWN0LmZvcm1hdC5wbGFuZXNbMF0uZm91cmNjKSwKKyAgICAgICAgICAgICAgICAg
ICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgZG1hYnVmT2JqZWN0LmZkWzBdLAorICAgICAg
ICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBzdGF0aWNfY2FzdDxF
R0xpbnQ+KGRtYWJ1Zk9iamVjdC5zdHJpZGVbMF0pLAorICAgICAgICAgICAgICAgICAgICBFR0xf
RE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwgMCwKKyAgICAgICAgICAgICAgICAgICAgRUdMX05P
TkUsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0NyZWF0
ZUltYWdlS0hSKGNvbnRleHQubV9zd2FwY2hhaW4ucGxhdGZvcm1EaXNwbGF5LCBFR0xfTk9fQ09O
VEVYVCwgRUdMX0xJTlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVmZmVyKW51bGxwdHIsIHN0
ZDo6ZGF0YShhdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBHTF9CaW5k
VGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOworICAgICAgICBHTF9FR0xJbWFnZVRh
cmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
KworICAgICAgICAvLyBJZiBqdXN0IGNyZWF0ZWQsIHRoZSBkbWFidWYgaGFzIHRvIGJlIGNsZWFy
ZWQgdG8gcHJvdmlkZSBhIHplcm9lZC1vdXQgYnVmZmVyLgorICAgICAgICAvLyBDdXJyZW50IGNv
bG9yLWNsZWFyIGFuZCBmcmFtZWJ1ZmZlciBzdGF0ZSBoYXMgdG8gYmUgcHJlc2VydmVkIGFuZCBy
ZS1lc3RhYmxpc2hlZCBhZnRlciB0aGlzLgorICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
IHsKKyAgICAgICAgICAgIEdDR0x1aW50IGJvdW5kRkJPIHsgMCB9OworICAgICAgICAgICAgR0xf
R2V0SW50ZWdlcnYoR0xfRlJBTUVCVUZGRVJfQklORElORywgcmVpbnRlcnByZXRfY2FzdDxHQ0dM
aW50Kj4oJmJvdW5kRkJPKSk7CisKKyAgICAgICAgICAgIEdDR0x1aW50IHRhcmdldEZCTyA9IGNv
bnRleHRBdHRyaWJ1dGVzKCkuYW50aWFsaWFzID8gbV9tdWx0aXNhbXBsZUZCTyA6IG1fZmJvOwor
ICAgICAgICAgICAgaWYgKHRhcmdldEZCTyAhPSBib3VuZEZCTykKKyAgICAgICAgICAgICAgICBH
TF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHRhcmdldEZCTyk7CisKKyAgICAgICAg
ICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDQ+IGNsZWFyQ29sb3IgeyAwLCAwLCAwLCAwIH07CisgICAg
ICAgICAgICBHTF9HZXRGbG9hdHYoR0xfQ09MT1JfQ0xFQVJfVkFMVUUsIGNsZWFyQ29sb3IuZGF0
YSgpKTsKKworICAgICAgICAgICAgR0xfQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAg
ICAgIEdMX0NsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgICAgICBHTF9DbGVh
ckNvbG9yKGNsZWFyQ29sb3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFy
Q29sb3JbM10pOworCisgICAgICAgICAgICBpZiAodGFyZ2V0RkJPICE9IGJvdW5kRkJPKQorICAg
ICAgICAgICAgICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgYm91bmRGQk8p
OworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gbWFkZUN1cnJlbnQ7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y2hlY2tHUFVTdGF0dXMoKQpAQCAtMTMy
LDEyICsyMDAsMTQgQEAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6On5HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRSgpCiAgICAgYm9vbCBzdWNjZXNzID0gbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsK
IAorI2lmICFVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQogICAgIGlmIChtX2NvbXBvc2l0b3JU
ZXh0dXJlKQogICAgICAgICBHTF9EZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVy
ZSk7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2ludGVybWVkaWF0
ZVRleHR1cmUpCiAgICAgICAgIEdMX0RlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRl
eHR1cmUpOwogI2VuZGlmCisjZW5kaWYKIH0KIAogUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6Omxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQpAQCAtMTY2LDkgKzIzNiw4IEBAIFJlZlB0cjxW
aWRlb0ZyYW1lPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQogewotICAgIEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICNpZiBFTkFCTEUo
V0VCR0wyKQotICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBH
cmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIG1faXNGb3JXZWJHTDIg
PSBjb250ZXh0QXR0cmlidXRlcygpLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdl
YkdMVmVyc2lvbjo6V2ViR0wyOwogI2VuZGlmCiAKICAgICBWZWN0b3I8RUdMaW50PiBkaXNwbGF5
QXR0cmlidXRlcyB7CkBAIC0yNzIsMTcgKzM0MSwxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogI2lmIFVTRShOSUNPU0lB
KQogICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVMYXll
cj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRmb3Jt
TGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRMYXll
cigpKTsKLQotICAgIGNvbnN0IGF1dG8mIGdibURldmljZSA9IEdCTURldmljZTo6c2luZ2xldG9u
KCk7Ci0gICAgaWYgKGdibURldmljZS5kZXZpY2UoKSkgewotICAgICAgICBtX3RleHR1cmVCYWNr
aW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsKLSAg
ICAgICAgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5pcXVlPEVHTEltYWdlQmFj
a2luZz4ocGxhdGZvcm1EaXNwbGF5KCkpOwotICAgICAgICBtX2ludGVybWVkaWF0ZVRleHR1cmVC
YWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgpKTsK
LSAgICB9CiAjZWxzZQogICAgIG1fdGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJHQ0dMUGxhdGZvcm1MYXllcj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtX3RleG1hcExh
eWVyLmdldCgpKTsKICNlbmRpZgorCiAgICAgYm9vbCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIApAQCAtMzA3LDYg
KzM3MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRm
b3JtSW5pdGlhbGl6ZSgpCiAgICAgR0xfR2VuRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CiAgICAg
R0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKKyNpZiAhVVNFKFRF
WFRVUkVfTUFQUEVSX0RNQUJVRikKICAgICBHTF9HZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9y
VGV4dHVyZSk7CiAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9y
VGV4dHVyZSk7CiAgICAgR0xfVGV4UGFyYW1ldGVyZih0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX0xJTkVBUik7CkBAIC0zMjMsNiArMzg3LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBH
TF9UZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFN
UF9UT19FREdFKTsKIAogICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIDApOworI2Vu
ZGlmCiAjZW5kaWYKIAogICAgIC8vIENyZWF0ZSBhIG11bHRpc2FtcGxlIEZCTy4KQEAgLTM1Mywx
MSArNDE4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBy
ZXBhcmVUZXh0dXJlKCkKICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5hbnRpYWxpYXMpCiAg
ICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKIAorI2lmICFVU0UoVEVY
VFVSRV9NQVBQRVJfRE1BQlVGKQogICAgIHN0ZDo6c3dhcChtX3RleHR1cmUsIG1fY29tcG9zaXRv
clRleHR1cmUpOwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnN3YXAo
bV90ZXh0dXJlLCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAgIHN0ZDo6c3dhcChtX3RleHR1
cmVCYWNraW5nLCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyk7Ci0gICAgc3RkOjpzd2FwKG1f
dGV4dHVyZUJhY2tpbmcsIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpOworI2VuZGlmCiAj
ZW5kaWYKIAogICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwpA
QCAtMzgxLDQxICs0NDYsMjAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJB
TkdMRTo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICBHTHVpbnQgY29sb3JGb3Jt
YXQgPSBhdHRycy5hbHBoYSA/IEdMX1JHQkEgOiBHTF9SR0I7CiAgICAgR0xlbnVtIHRleHR1cmVU
YXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogICAgIEdMdWludCBpbnRlcm5h
bENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8gY29sb3JGb3Jt
YXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKG1fdGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1fdGV4dHVyZUJhY2tpbmct
PnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSAgICBpZiAobV9jb21wb3NpdG9y
VGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5yZXNl
dCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7Ci0gICAgaWYgKG1faW50ZXJtZWRpYXRlVGV4
dHVyZUJhY2tpbmcpCi0gICAgICAgIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPnJlc2V0
KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSNlbmRpZgotCiAgICAgU2NvcGVkUmVzdG9y
ZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0
UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0
dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7Ci0jaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7Ci0gICAgICAgIEdMX0Jp
bmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOwotICAgICAgICBp
ZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgJiYgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tp
bmctPmltYWdlKCkpCi0gICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0
ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50
ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lH
TkVEX0JZVEUsIDApOwotICAgICAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2lu
dGVybWVkaWF0ZVRleHR1cmUpOwotICAgICAgICBpZiAobV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFj
a2luZyAmJiBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5pbWFnZSgpKQotICAgICAgICAg
ICAgR0xfRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRhcmdldCwgbV9pbnRlcm1l
ZGlhdGVUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIH0K
LSAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOwotICAgIGlmICht
X3RleHR1cmVCYWNraW5nICYmIG1fdGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCi0gICAgICAgIEdM
X0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZUJhY2tp
bmctPmltYWdlKCkpOwotICAgIGVsc2UKLSAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFy
Z2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgMCk7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVG
KQorICAgIG1fc3dhcGNoYWluID0gU3dhcGNoYWluKHBsYXRmb3JtRGlzcGxheSgpKTsKICNlbHNl
CiAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7
CiAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0g
ICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCisgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9p
bnRlcm1lZGlhdGVUZXh0dXJlKTsKICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAs
IGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9V
TlNJR05FRF9CWVRFLCAwKTsKICNlbmRpZgorI2VuZGlmCisgICAgR0xfQmluZFRleHR1cmUodGV4
dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQs
IDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBH
TF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICBHTF9GcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFN
RUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSwg
MCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyOCw4NCArNDcyLDIyIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVGb3JEaXNwbGF5KCkKIAogICAg
IHByZXBhcmVUZXh0dXJlKCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwotfQogCi0jaWYg
VVNFKE5JQ09TSUEpCi1HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1h
Z2VCYWNraW5nOjpFR0xJbWFnZUJhY2tpbmcoR0NHTERpc3BsYXkgZGlzcGxheSkKLSAgICA6IG1f
ZGlzcGxheShkaXNwbGF5KQotICAgICwgbV9pbWFnZShFR0xfTk9fSU1BR0UpCi17Ci19Ci0KLUdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6On5FR0xJ
bWFnZUJhY2tpbmcoKQotewotICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKLX0KLQotdWludDMyX3Qg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6Zm9y
bWF0KCkgY29uc3QKLXsKLSAgICBpZiAobV9CTykKLSAgICAgICAgcmV0dXJuIGdibV9ib19nZXRf
Zm9ybWF0KG1fQk8pOwotICAgIHJldHVybiAwOwotfQotCi11aW50MzJfdCBHcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpzdHJpZGUoKSBjb25zdAot
ewotICAgIGlmIChtX0JPKQotICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9zdHJpZGUobV9CTyk7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291cmNlcygpCi17Ci0gICAgaWYgKG1f
Qk8pIHsKLSAgICAgICAgZ2JtX2JvX2Rlc3Ryb3kobV9CTyk7Ci0gICAgICAgIG1fQk8gPSBudWxs
cHRyOwotICAgIH0KLSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBFR0xfRGVzdHJveUltYWdl
S0hSKG1fZGlzcGxheSwgbV9pbWFnZSk7Ci0gICAgICAgIG1faW1hZ2UgPSBFR0xfTk9fSU1BR0U7
Ci0gICAgfQotICAgIGlmIChtX0ZEID49IDApIHsKLSAgICAgICAgY2xvc2UobV9GRCk7Ci0gICAg
ICAgIG1fRkQgPSAtMTsKLSAgICB9CisgICAgbV9zd2FwY2hhaW4uZGlzcGxheUJPID0gV1RGTW92
ZShtX3N3YXBjaGFpbi5kcmF3Qk8pOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OmlzUmVsZWFzZWQoKQotewotICAgIHJldHVy
biAhbV9CTzsKLX0KKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQorR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OlN3YXBjaGFpbjo6U3dhcGNoYWluKEdDR0xEaXNwbGF5
IHBsYXRmb3JtRGlzcGxheSkKKyAgICA6IHBsYXRmb3JtRGlzcGxheShwbGF0Zm9ybURpc3BsYXkp
CisgICAgLCBzd2FwY2hhaW4oYWRvcHRSZWYobmV3IEdCTUJ1ZmZlclN3YXBjaGFpbihHQk1CdWZm
ZXJTd2FwY2hhaW46OkJ1ZmZlclN3YXBjaGFpblNpemU6OkZvdXIpKSkKK3sgfQogCi1ib29sIEdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJlc2V0
KGludCB3aWR0aCwgaW50IGhlaWdodCwgYm9vbCBoYXNBbHBoYSkKK0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFOjpTd2FwY2hhaW46On5Td2FwY2hhaW4oKQogewotICAgIHJlbGVh
c2VSZXNvdXJjZXMoKTsKLQotICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgY29uc3QgYXV0byYgZ2JtRGV2aWNlID0gR0JNRGV2aWNlOjpzaW5n
bGV0b24oKTsKLSAgICBtX0JPID0gZ2JtX2JvX2NyZWF0ZShnYm1EZXZpY2UuZGV2aWNlKCksIHdp
ZHRoLCBoZWlnaHQsIGhhc0FscGhhID8gR0JNX0JPX0ZPUk1BVF9BUkdCODg4OCA6IEdCTV9CT19G
T1JNQVRfWFJHQjg4ODgsIEdCTV9CT19VU0VfUkVOREVSSU5HKTsKLSAgICBpZiAobV9CTykgewot
ICAgICAgICBtX0ZEID0gZ2JtX2JvX2dldF9mZChtX0JPKTsKLSAgICAgICAgaWYgKG1fRkQgPj0g
MCkgewotICAgICAgICAgICAgRUdMaW50IGltYWdlQXR0cmlidXRlc1tdID0gewotICAgICAgICAg
ICAgICAgIEVHTF9XSURUSCwgd2lkdGgsCi0gICAgICAgICAgICAgICAgRUdMX0hFSUdIVCwgaGVp
Z2h0LAotICAgICAgICAgICAgICAgIEVHTF9MSU5VWF9EUk1fRk9VUkNDX0VYVCwgc3RhdGljX2Nh
c3Q8RUdMaW50PihnYm1fYm9fZ2V0X2Zvcm1hdChtX0JPKSksCi0gICAgICAgICAgICAgICAgRUdM
X0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgbV9GRCwKLSAgICAgICAgICAgICAgICBFR0xfRE1BX0JV
Rl9QTEFORTBfUElUQ0hfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGdibV9ib19nZXRfc3RyaWRl
KG1fQk8pKSwKLSAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwg
MCwKLSAgICAgICAgICAgICAgICBFR0xfTk9ORQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IG1faW1hZ2UgPSBFR0xfQ3JlYXRlSW1hZ2VLSFIobV9kaXNwbGF5LCBFR0xfTk9fQ09OVEVYVCwg
RUdMX0xJTlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVmZmVyKW51bGxwdHIsIGltYWdlQXR0
cmlidXRlcyk7Ci0gICAgICAgICAgICBpZiAobV9pbWFnZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgIGZvciAoRUdMSW1hZ2VLSFIgaW1hZ2UgOiBpbWFnZXMu
dmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpCisgICAg
ICAgICAgICBFR0xfRGVzdHJveUltYWdlS0hSKHBsYXRmb3JtRGlzcGxheSwgaW1hZ2UpOwogICAg
IH0KLQotICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUuaAppbmRleCAwMzk3NzRlNTE3NWEyYzQ4YTVmMzZjOWRiMGQ3ZmMxMDY0YzAwMWJhLi5lNjk5
YzJmODI5MjkxMmVmNjc3ZDFlMzI2NGM3Mjc5YTAxMGRiM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuaApAQCAtMjksNiArMjksMTIg
QEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCIKIAorI2lmIFVTRShURVhU
VVJFX01BUFBFUl9ETUFCVUYpCisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCisjaW5jbHVkZSAi
R0JNQnVmZmVyU3dhcGNoYWluLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNlbmRpZgor
CiAjaWYgVVNFKE5JQ09TSUEpCiBuYW1lc3BhY2UgTmljb3NpYSB7CiBjbGFzcyBHQ0dMQU5HTEVM
YXllcjsKQEAgLTczLDQ2ICs3OSw0MSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOwogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKKyAgICBzdHJ1Y3QgU3dhcGNo
YWluIHsKKyAgICAgICAgU3dhcGNoYWluKCkgPSBkZWZhdWx0OworICAgICAgICBTd2FwY2hhaW4o
R0NHTERpc3BsYXkpOworICAgICAgICB+U3dhcGNoYWluKCk7CisKKyAgICAgICAgR0NHTERpc3Bs
YXkgcGxhdGZvcm1EaXNwbGF5IHsgRUdMX05PX0RJU1BMQVkgfTsKKyAgICAgICAgUmVmUHRyPEdC
TUJ1ZmZlclN3YXBjaGFpbj4gc3dhcGNoYWluOworICAgICAgICBSZWZQdHI8R0JNQnVmZmVyU3dh
cGNoYWluOjpCdWZmZXI+IGRyYXdCTzsKKyAgICAgICAgUmVmUHRyPEdCTUJ1ZmZlclN3YXBjaGFp
bjo6QnVmZmVyPiBkaXNwbGF5Qk87CisKKyAgICAgICAgLy8gQ2FjaGUgZm9yIEVHTEltYWdlIG9i
amVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgYnVmZmVycyBvcmlnaW5hdGluZyBmcm9tIHRoZSBz
d2FwY2hhaW4uCisgICAgICAgIC8vIFRoZSBzd2FwY2hhaW4gaXMgcmVnZW5lcmF0ZWQgKGFuZCB0
aGVzZSBFR0xJbWFnZSBvYmplY3RzIGRlc3Ryb3llZCkgdXBvbiBlYWNoIGJ1ZmZlciByZXNoYXBp
bmcsCisgICAgICAgIC8vIHNvIHdlIHNob3VsZCBiZSBmaW5lIHdpdGhvdXQgbWFuYWdpbmcgc3Rh
bGUgYnVmZmVycyBhbmQgY29ycmVzcG9uZGluZyBFR0xJbWFnZXMgKHdoaWNoIHNob3VsZG4ndCBv
Y2N1ciBhbnl3YXkpLgorICAgICAgICBIYXNoTWFwPHVpbnQzMl90LCBFR0xJbWFnZUtIUiwgV1RG
OjpEZWZhdWx0SGFzaDx1aW50MzJfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dWludDMyX3Q+PiBpbWFnZXM7CisgICAgfSBtX3N3YXBjaGFpbjsKKyNlbHNlCiAgICAgR0NH
THVpbnQgbV9jb21wb3NpdG9yVGV4dHVyZSB7IDAgfTsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAgICAgR0NHTHVpbnQgbV9pbnRlcm1lZGlhdGVUZXh0dXJlIHsgMCB9OwogI2VuZGlm
CisjZW5kaWYKIAogI2lmIFVTRShOSUNPU0lBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOaWNvc2lh
OjpHQ0dMQU5HTEVMYXllcj4gbV9uaWNvc2lhTGF5ZXI7Ci0KLSAgICBjbGFzcyBFR0xJbWFnZUJh
Y2tpbmcgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAg
ICAgRUdMSW1hZ2VCYWNraW5nKEdDR0xEaXNwbGF5KTsKLSAgICAgICAgfkVHTEltYWdlQmFja2lu
ZygpOwotCi0gICAgICAgIGJvb2wgcmVzZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIGhh
c0FscGhhKTsKLQotICAgICAgICBFR0xJbWFnZSBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2U7IH0KLSAgICAgICAgaW50IGZkKCkgY29uc3QgeyByZXR1cm4gbV9GRDsgfQotCi0gICAgICAg
IHVpbnQzMl90IGZvcm1hdCgpIGNvbnN0OwotICAgICAgICB1aW50MzJfdCBzdHJpZGUoKSBjb25z
dDsKLQotICAgICAgICBib29sIGlzUmVsZWFzZWQoKTsKLSAgICBwcml2YXRlOgotICAgICAgICB2
b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKLQotICAgICAgICBHQ0dMRGlzcGxheSBtX2Rpc3BsYXk7
Ci0KLSAgICAgICAgZ2JtX2JvKiBtX0JPIHsgbnVsbHB0ciB9OwotICAgICAgICBpbnQgbV9GRCB7
IC0xIH07Ci0gICAgICAgIEVHTEltYWdlIG1faW1hZ2U7Ci0gICAgfTsKLQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxFR0xJbWFnZUJhY2tpbmc+IG1fdGV4dHVyZUJhY2tpbmc7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmc7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEVHTEltYWdlQmFja2luZz4gbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFj
a2luZzsKICNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZv
cm1MYXllcj4gbV90ZXhtYXBMYXllcjsKICNlbmRpZgogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0RNQUJVRikKKyAgICAvLyBSZXF1aXJlZCAoZm9yIG5vdykgaW4gR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKKyAgICAvLyB0byBjb25zdHJ1Y3QgYW5kIHNldCB0
aGUgZHJhdyBidWZmZXItb2JqZWN0LgorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRH
TEFOR0xFOworI2VuZGlmCisKICNpZiBVU0UoTklDT1NJQSkKICAgICBmcmllbmQgY2xhc3MgTmlj
b3NpYTo6R0NHTEFOR0xFTGF5ZXI7CiAgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xMYXll
cjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455994</attachid>
            <date>2022-03-28 22:41:01 -0700</date>
            <delta_ts>2022-03-29 01:00:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237883-20220329074059.patch</filename>
            <type>text/plain</type>
            <size>24673</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA2YjVmYTczZjdmYjc2
NzhmODA2MDgwNTk5NjUyMDhiNjViNzRjYS4uY2Q1MmIxZDc1YTAwYjI4ZmQ4YWM4Y2E1OWY1MmQ4
NTQzOTM0MThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTAzLTI4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVz
ZSBHQk1CdWZmZXJTd2FwY2hhaW4gaW4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg4
MworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZWphbmRybyBHLiBDYXN0cm8uCisKKyAgICAgICAg
VXNlIHRoZSBnZW5lcmljIEdCTUJ1ZmZlclN3YXBjaGFpbiBmb3IgbWFuYWdpbmcgZG1hYnVmLWJh
c2VkIGJ1ZmZlcgorICAgICAgICBvYmplY3RzIGluIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckFOR0xFLiBUaGlzIHVzYWdlIGlzIGd1YXJkZWQKKyAgICAgICAgYmVoaW5kIHRoZSBVU0Uo
VEVYVFVSRV9NQVBQRVJfRE1BQlVGKSBidWlsZCBndWFyZHMuCisKKyAgICAgICAgV2hlbiB0aGF0
IGJ1aWxkIGd1YXJkIGlzIGVuYWJsZWQsIHdlIGNhbiBhdm9pZCB1c2luZyBhZGRpdGlvbmFsIHRl
eHR1cmVzCisgICAgICAgIGJ1dCBpbnN0ZWFkIGhhdmUgdG8gbWFuYWdlIGEgR0JNQnVmZmVyU3dh
cGNoYWluIGluc3RhbmNlIGZyb20gd2hpY2ggd2UKKyAgICAgICAgY2FuIHJldHJpZXZlIGJ1ZmZl
cnMgdGhhdCBzaG91bGQgYmUgYWN0aW5nIGFzIGJhY2tpbmcgZm9yIHRoZSBkaWZmZXJlbnQKKyAg
ICAgICAgZHJhdyBvcGVyYXRpb25zLgorCisgICAgICAgIFRoaXMgYnVmZmVyIHNldHVwIGlzIGhh
bmRsZWQgaW4gdGhlCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xF
OjptYWtlQ29udGV4dEN1cnJlbnQoKSBtZXRob2QuIE9uY2UKKyAgICAgICAgY2FsbGVkLCBpZiB0
aGVyZSdzIGEgc3dhcGNoYWluIGF2YWlsYWJsZSAoYWZ0ZXIgaW5pdGlhbCBvciBlYWNoCisgICAg
ICAgIHN1YnNlcXVlbnQgYmFja2luZyByZXNoYXBpbmcpIGEgYnVmZmVyIHdpbGwgYmUgcmV0cmll
dmVkIGZyb20gdGhhdAorICAgICAgICBzd2FwY2hhaW4sIGEgY29ycmVzcG9uZGluZyBFR0xJbWFn
ZSBjcmVhdGVkIGFuZCBhc3NvY2lhdGVkIHRvIHRoZSBHTAorICAgICAgICB0ZXh0dXJlIHRoYXQg
YWN0cyBhcyB0aGUgY29sb3IgYXR0YWNobWVudCBmb3IgdGhlIGRlZmF1bHQgYnVmZmVyLiBBbGwK
KyAgICAgICAgc3Vic2VxdWVudCBkcmF3aW5nIHdpbGwgYmUgZG9uZSBvbnRvIHRoaXMgYnVmZmVy
IG9iamVjdCwgYWxsIHRoZSB3YXkKKyAgICAgICAgdG8gdGhlIHByZXBhcmVGb3JEaXNwbGF5KCkg
bWV0aG9kIHdoZXJlIHRoYXQgYnVmZmVyIGlzIG1vdmVkIGludG8gdGhlCisgICAgICAgIGRpc3Bs
YXktYnVmZmVyIHBvc2l0aW9uLCB3YWl0aW5nIGZvciB0aGUgZGlzcGxheSB0byBvY2N1ci4KKwor
ICAgICAgICBUaGUgZGlzcGxheSBvZiB0aGlzIGJ1ZmZlciBpcyBzdGlsbCBoYW5kbGVkIGluIE5p
Y29zaWE6OkdDR0xBTkdMRUxheWVyLgorICAgICAgICBJbiB0aGUgc3dhcEJ1ZmZlcnNJZk5lZWRl
ZCgpIG1ldGhvZCwgaWYgdGhlIHBlbmRpbmcgYnVmZmVyIGlzIGRldGVjdGVkLAorICAgICAgICB0
aGUgZG1hYnVmIGluZm9ybWF0aW9uIGlzIHB1c2hlZCBpbnRvIHRoZQorICAgICAgICBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1BQnVmIGluc3RhbmNlIGFuZCBwcmVwYXJlZCBmb3IK
KyAgICAgICAgcHJlc2VudGF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtLSBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLCB3aGVyZSB0aGUgQU5HTEUtYmFja2VkCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dEdMIGNvbnRpbnVlcyB0byBpbXByb3ZlIHRoZSBvdmVyYWxsIHN0YXRlIG9mIFdl
YkdMIHRlc3RzLgorICAgICAgICBPbmx5IHByb2JsZW0gaXMgdGhlIHNvZnR3YXJlLWJhY2tlZCBy
YXN0ZXJpemF0aW9uIGluIHRoZSBXUEUvR1RLIHRlc3RpbmcKKyAgICAgICAgdG9vbGluZyB3aGlj
aCBkaXNhYmxlcyBhIGZldyBmZWF0dXJlcyBhbmQgdG8gYSBkZWdyZWUgYnJlYWtzIFdlYkdMCisg
ICAgICAgIGNvbnRlbnQgZGlzcGxheSwgYnV0IHRoaXMgc3BlY2lmaWMgaXNzdWUgd2lsbCBiZSBy
ZXNvbHZlZCBsYXRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpHQ0dMQU5H
TEVMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgIChOaWNvc2lhOjpHQ0dMQU5H
TEVMYXllcjo6R0NHTEFOR0xFTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptYWtlQ29udGV4dEN1
cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEU6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0
aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwcmVwYXJlVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cmVzaGFw
ZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6U3dhcGNoYWluOjpTd2Fw
Y2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEU6OlN3YXBjaGFpbjo6flN3YXBjaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpFR0xJbWFnZUJh
Y2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6fkVHTEltYWdlQmFja2luZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6RUdMSW1hZ2VCYWNraW5nOjpmb3JtYXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2lu
Zzo6c3RyaWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6OnJlbGVhc2VSZXNvdXJj
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6aXNSZWxlYXNlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1h
Z2VCYWNraW5nOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmg6CisKIDIwMjItMDMt
MjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgJiBX
aW4gXSBmYXN0L3JlcGFpbnQvbGlzdC1pdGVtLWVxdWFsLXN0eWxlLWNoYW5nZS1uby1yZXBhaW50
Lmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdD
R0xBTkdMRUxheWVyLmNwcAppbmRleCBkNzQ3Yjc1MDJlMDJmY2RjM2EwMDk1ZDhiMjZlNzM0NzRl
ZTQ3MzdlLi5lYmQ4YmM1ZjdiNjQxNmQ0MmUxMTgwZTFkZDk0NzAxODdlZDI2NmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0NHTEFOR0xFTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKQEAgLTM2LDcgKzM2
LDggQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckRtYWJ1Zi5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zi5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5oIgogCiBuYW1l
c3BhY2UgTmljb3NpYSB7CkBAIC00OCwyMSArNDksMjUgQEAgdm9pZCBHQ0dMQU5HTEVMYXllcjo6
c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY29udGVudExheWVyKCkuaW1wbCgpKS5w
cm94eSgpOwogICAgIGF1dG8gc2l6ZSA9IG1fY29udGV4dC5nZXRJbnRlcm5hbEZyYW1lYnVmZmVy
U2l6ZSgpOwogCi0gICAgaWYgKG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZykg
ewotICAgICAgICBpZiAobV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5pc1Jl
bGVhc2VkKCkpCi0gICAgICAgICAgICByZXR1cm47CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RN
QUJVRikKKyAgICBpZiAoaXM8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zj4o
cHJveHkpKSB7CisgICAgICAgIGF1dG8gYm8gPSBXVEZNb3ZlKG1fY29udGV4dC5tX3N3YXBjaGFp
bi5kaXNwbGF5Qk8pOworICAgICAgICBpZiAoYm8pIHsKKyAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBwcm94eS5sb2NrKCkgfTsKIAotICAgICAgICBhdXRvIGZvcm1hdCA9IG1fY29udGV4dC5t
X2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+Zm9ybWF0KCk7Ci0gICAgICAgIGF1dG8gc3RyaWRl
ID0gbV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5zdHJpZGUoKTsKLSAgICAg
ICAgYXV0byBmZCA9IG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+ZmQoKTsK
KyAgICAgICAgICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZEZsaXBUZXh0dXJlOworICAgICAgICAgICAgaWYgKG1fY29udGV4dC5jb250ZXh0
QXR0cmlidXRlcygpLmFscGhhKQorICAgICAgICAgICAgICAgIGZsYWdzIHw9IFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkQmxlbmQ7CiAKLSAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IHByb3h5LmxvY2soKSB9OwotICAgICAgICAgICAgQVNTRVJUKGlzPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHlHTD4ocHJveHkpKTsKLSAgICAgICAgICAgIGRvd25jYXN0PFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTD4ocHJveHkpLnB1c2hOZXh0QnVmZmVyKG1ha2VV
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJEbWFidWY+KHNpemUsIGZvcm1hdCwgc3Ry
aWRlLCBmZCkpOworICAgICAgICAgICAgZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eURNQUJ1Zj4ocHJveHkpLnB1c2hETUFCdWYoCisgICAgICAgICAgICAgICAgRE1BQnVm
T2JqZWN0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbnRleHQubV9zd2FwY2hhaW4u
c3dhcGNoYWluLmdldCgpKSArIGJvLT5oYW5kbGUoKSksCisgICAgICAgICAgICAgICAgWyZdKGF1
dG8mJiBvYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvLT5jcmVhdGVETUFC
dWZPYmplY3Qob2JqZWN0LmhhbmRsZSk7CisgICAgICAgICAgICAgICAgfSwgZmxhZ3MpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKIAogICAgIC8vIEZhbGxiYWNr
IHBhdGgsIHJlYWQgYmFjayB0ZXh0dXJlIHRvIG1haW4gbWVtb3J5CiAgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CkBAIC04NSw5ICs5MCwxNSBAQCB2b2lkIEdDR0xB
TkdMRUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICB9CiB9CiAKKyNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfRE1BQlVGKQordXNpbmcgUGxhdGZvcm1MYXllclByb3h5VHlwZSA9IFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY7CisjZWxzZQordXNpbmcgUGxhdGZvcm1M
YXllclByb3h5VHlwZSA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDsKKyNlbmRp
ZgorCiBHQ0dMQU5HTEVMYXllcjo6R0NHTEFOR0xFTGF5ZXIoR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyQU5HTEUmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAs
IG1fY29udGVudExheWVyKE5pY29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRlKE5pY29zaWE6OkNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0aGlzKSkpCisgICAg
LCBtX2NvbnRlbnRMYXllcihOaWNvc2lhOjpDb250ZW50TGF5ZXI6OmNyZWF0ZShOaWNvc2lhOjpD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgqdGhpcywgYWRvcHRS
ZWYoKm5ldyBQbGF0Zm9ybUxheWVyUHJveHlUeXBlKSkpKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NH
TEFOR0xFTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5oCmluZGV4IGE0NDExNTgzZTVjZWE1OTkwOTYy
NmZiN2FjNDAwMDg0MDI2MmQ2ZmQuLjUzOGUwNTY1ODhhNDBhODkyMTk1YmMxZGQ5N2JlNGRkYmFj
NzE2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5oCkBA
IC0zMSw3ICszMSw2IEBACiAjaWYgVVNFKE5JQ09TSUEpICYmIFVTRShURVhUVVJFX01BUFBFUikK
IAogI2luY2x1ZGUgIk5pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgotI2lu
Y2x1ZGUgPG1lbW9yeT4KIAogdHlwZWRlZiB2b2lkICpFR0xDb25maWc7CiB0eXBlZGVmIHZvaWQg
KkVHTENvbnRleHQ7CkBAIC00MCw3ICszOSw2IEBAIHR5cGVkZWYgdm9pZCAqRUdMU3VyZmFjZTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIEdMQ29udGV4dDsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOwogY2xhc3MgUGxhdGZv
cm1EaXNwbGF5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggZjQwNjhjNTZkZWM1ZGY4MzNkODk5Mjg5NGM5NWJhOGY3
YzVkYTc4MS4uMzMwMTA4YzY2ZGFhN2YyMGM2YzMyM2JkNTQwYzkzN2EwYzI4YjdmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3Bw
CkBAIC05MSw5ICs5MSw3NyBAQCBHQ0dMQ29uZmlnIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBs
YXRmb3JtQ29uZmlnKCkgY29uc3QKIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjptYWtl
Q29udGV4dEN1cnJlbnQoKQogewotICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSA9PSBt
X2NvbnRleHRPYmopCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBFR0xfTWFrZUN1
cnJlbnQobV9kaXNwbGF5T2JqLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIG1fY29u
dGV4dE9iaik7CisgICAgYXV0byBtYWRlQ3VycmVudCA9CisgICAgICAgIFsmXSB7CisgICAgICAg
ICAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0T2JqKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuICEhRUdMX01ha2VDdXJy
ZW50KG1fZGlzcGxheU9iaiwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBtX2NvbnRl
eHRPYmopOworICAgICAgICB9KCk7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQor
ICAgIC8vIE9uY2UgdGhlIGNvbnRleHQgaXMgbWFkZSBjdXJyZW50LCB3ZSBoYXZlIHRvIG1hbnVh
bGx5IHByb3ZpZGUgdGhlIGJhY2svZHJhdyBidWZmZXIuCisgICAgLy8gSWYgbm90IHlldCBzZXQg
KGR1ZSB0byByZXBldGl0aXZlIG1ha2VDb250ZXh0Q3VycmVudCgpIGNhbGxzKSwgd2UgcmV0cmll
dmUgaXQgZnJvbQorICAgIC8vIHRoZSBzd2FwY2hhaW4uIFdlIGFsc28gaGF2ZSB0byBwcm92aWRl
IChpLmUuIHJldHJpZXZlIGZyb20gdGhlIGNhY2hlIG9yIGNyZWF0ZSkKKyAgICAvLyB0aGUgQU5H
TEUteSBFR0xJbWFnZSBvYmplY3QgdGhhdCB3aWxsIGJlIGJhY2tlZCBieSB0aGlzIGRtYWJ1ZiBh
bmQgd2lsbCBiZSB0YXJnZXRlZAorICAgIC8vIGJ5IHRoZSB0ZXh0dXJlIHRoYXQncyBhY3Rpbmcg
YXMgdGhlIGNvbG9yIGF0dGFjaG1lbnQgb2YgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIuCisKKyAg
ICBhdXRvJiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEUmPigqdGhpcyk7CisgICAgaWYgKG1hZGVDdXJyZW50ICYmIGNvbnRleHQubV9zd2Fw
Y2hhaW4uc3dhcGNoYWluICYmICFjb250ZXh0Lm1fc3dhcGNoYWluLmRyYXdCTykgeworICAgICAg
ICBhdXRvIHNpemUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOworICAgICAgICBjb250
ZXh0Lm1fc3dhcGNoYWluLmRyYXdCTyA9IGNvbnRleHQubV9zd2FwY2hhaW4uc3dhcGNoYWluLT5n
ZXRCdWZmZXIoCisgICAgICAgICAgICBHQk1CdWZmZXJTd2FwY2hhaW46OkJ1ZmZlckRlc2NyaXB0
aW9uIHsKKyAgICAgICAgICAgICAgICAuZm9ybWF0ID0gRE1BQnVmRm9ybWF0OjpjcmVhdGUodWlu
dDMyX3QoY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpB
UkdCODg4OCA6IERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpYUkdCODg4OCkpLAorICAgICAgICAgICAg
ICAgIC53aWR0aCA9IHN0ZDo6Y2xhbXA8dWludDMyX3Q+KHNpemUud2lkdGgoKSwgMCwgVUlOVF9N
QVgpLAorICAgICAgICAgICAgICAgIC5oZWlnaHQgPSBzdGQ6OmNsYW1wPHVpbnQzMl90PihzaXpl
LmhlaWdodCgpLCAwLCBVSU5UX01BWCksCisgICAgICAgICAgICB9KTsKKworICAgICAgICBHTGVu
dW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CisgICAgICAg
IFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVy
VGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVy
ZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworCisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gY29udGV4dC5tX3N3YXBjaGFpbi5pbWFnZXMuZW5zdXJlKGNvbnRl
eHQubV9zd2FwY2hhaW4uZHJhd0JPLT5oYW5kbGUoKSwKKyAgICAgICAgICAgIFsmXSB7CisgICAg
ICAgICAgICAgICAgYXV0byBkbWFidWZPYmplY3QgPSBjb250ZXh0Lm1fc3dhcGNoYWluLmRyYXdC
Ty0+Y3JlYXRlRE1BQnVmT2JqZWN0KDApOworCisgICAgICAgICAgICAgICAgc3RkOjppbml0aWFs
aXplcl9saXN0PEVHTGludD4gYXR0cmlidXRlcyB7CisgICAgICAgICAgICAgICAgICAgIEVHTF9X
SURUSCwgRUdMaW50KGRtYWJ1Zk9iamVjdC5mb3JtYXQucGxhbmVXaWR0aCgwLCBkbWFidWZPYmpl
Y3Qud2lkdGgpKSwKKyAgICAgICAgICAgICAgICAgICAgRUdMX0hFSUdIVCwgRUdMaW50KGRtYWJ1
Zk9iamVjdC5mb3JtYXQucGxhbmVIZWlnaHQoMCwgZG1hYnVmT2JqZWN0LmhlaWdodCkpLAorICAg
ICAgICAgICAgICAgICAgICBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRpY19jYXN0PEVH
TGludD4oZG1hYnVmT2JqZWN0LmZvcm1hdC5wbGFuZXNbMF0uZm91cmNjKSwKKyAgICAgICAgICAg
ICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgZG1hYnVmT2JqZWN0LmZkWzBdLAor
ICAgICAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBzdGF0aWNf
Y2FzdDxFR0xpbnQ+KGRtYWJ1Zk9iamVjdC5zdHJpZGVbMF0pLAorICAgICAgICAgICAgICAgICAg
ICBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCwgMCwKKyAgICAgICAgICAgICAgICAgICAg
RUdMX05PTkUsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdM
X0NyZWF0ZUltYWdlS0hSKGNvbnRleHQubV9zd2FwY2hhaW4ucGxhdGZvcm1EaXNwbGF5LCBFR0xf
Tk9fQ09OVEVYVCwgRUdMX0xJTlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVmZmVyKW51bGxw
dHIsIHN0ZDo6ZGF0YShhdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBH
TF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOworICAgICAgICBHTF9FR0xJ
bWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlKTsKKworICAgICAgICAvLyBJZiBqdXN0IGNyZWF0ZWQsIHRoZSBkbWFidWYgaGFzIHRvIGJl
IGNsZWFyZWQgdG8gcHJvdmlkZSBhIHplcm9lZC1vdXQgYnVmZmVyLgorICAgICAgICAvLyBDdXJy
ZW50IGNvbG9yLWNsZWFyIGFuZCBmcmFtZWJ1ZmZlciBzdGF0ZSBoYXMgdG8gYmUgcHJlc2VydmVk
IGFuZCByZS1lc3RhYmxpc2hlZCBhZnRlciB0aGlzLgorICAgICAgICBpZiAocmVzdWx0LmlzTmV3
RW50cnkpIHsKKyAgICAgICAgICAgIEdDR0x1aW50IGJvdW5kRkJPIHsgMCB9OworICAgICAgICAg
ICAgR0xfR2V0SW50ZWdlcnYoR0xfRlJBTUVCVUZGRVJfQklORElORywgcmVpbnRlcnByZXRfY2Fz
dDxHQ0dMaW50Kj4oJmJvdW5kRkJPKSk7CisKKyAgICAgICAgICAgIEdDR0x1aW50IHRhcmdldEZC
TyA9IGNvbnRleHRBdHRyaWJ1dGVzKCkuYW50aWFsaWFzID8gbV9tdWx0aXNhbXBsZUZCTyA6IG1f
ZmJvOworICAgICAgICAgICAgaWYgKHRhcmdldEZCTyAhPSBib3VuZEZCTykKKyAgICAgICAgICAg
ICAgICBHTF9CaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHRhcmdldEZCTyk7CisKKyAg
ICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDQ+IGNsZWFyQ29sb3IgeyAwLCAwLCAwLCAwIH07
CisgICAgICAgICAgICBHTF9HZXRGbG9hdHYoR0xfQ09MT1JfQ0xFQVJfVkFMVUUsIGNsZWFyQ29s
b3IuZGF0YSgpKTsKKworICAgICAgICAgICAgR0xfQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAg
ICAgICAgICAgIEdMX0NsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgICAgICBH
TF9DbGVhckNvbG9yKGNsZWFyQ29sb3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0s
IGNsZWFyQ29sb3JbM10pOworCisgICAgICAgICAgICBpZiAodGFyZ2V0RkJPICE9IGJvdW5kRkJP
KQorICAgICAgICAgICAgICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgYm91
bmRGQk8pOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gbWFkZUN1cnJl
bnQ7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y2hlY2tHUFVTdGF0dXMoKQpA
QCAtMTMyLDEyICsyMDAsMTQgQEAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6
On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRSgpCiAgICAgYm9vbCBzdWNjZXNz
ID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNj
ZXNzKTsKIAorI2lmICFVU0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQogICAgIGlmIChtX2NvbXBv
c2l0b3JUZXh0dXJlKQogICAgICAgICBHTF9EZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9y
VGV4dHVyZSk7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2ludGVy
bWVkaWF0ZVRleHR1cmUpCiAgICAgICAgIEdMX0RlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVk
aWF0ZVRleHR1cmUpOwogI2VuZGlmCisjZW5kaWYKIH0KIAogUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQpAQCAtMTY2LDkgKzIzNiw4IEBAIFJl
ZlB0cjxWaWRlb0ZyYW1lPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQogewotICAgIEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICNpZiBF
TkFCTEUoV0VCR0wyKQotICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lv
biA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOworICAgIG1faXNGb3JX
ZWJHTDIgPSBjb250ZXh0QXR0cmlidXRlcygpLndlYkdMVmVyc2lvbiA9PSBHcmFwaGljc0NvbnRl
eHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwogI2VuZGlmCiAKICAgICBWZWN0b3I8RUdMaW50PiBk
aXNwbGF5QXR0cmlidXRlcyB7CkBAIC0yNzIsMTcgKzM0MSwxMSBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogI2lmIFVTRShO
SUNPU0lBKQogICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5H
TEVMYXllcj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBs
YXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgmbV9uaWNvc2lhTGF5ZXItPmNvbnRl
bnRMYXllcigpKTsKLQotICAgIGNvbnN0IGF1dG8mIGdibURldmljZSA9IEdCTURldmljZTo6c2lu
Z2xldG9uKCk7Ci0gICAgaWYgKGdibURldmljZS5kZXZpY2UoKSkgewotICAgICAgICBtX3RleHR1
cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxheSgp
KTsKLSAgICAgICAgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgPSBtYWtlVW5pcXVlPEVHTElt
YWdlQmFja2luZz4ocGxhdGZvcm1EaXNwbGF5KCkpOwotICAgICAgICBtX2ludGVybWVkaWF0ZVRl
eHR1cmVCYWNraW5nID0gbWFrZVVuaXF1ZTxFR0xJbWFnZUJhY2tpbmc+KHBsYXRmb3JtRGlzcGxh
eSgpKTsKLSAgICB9CiAjZWxzZQogICAgIG1fdGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1
cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcj4oKnRoaXMpOwogICAgIG1fbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtX3Rl
eG1hcExheWVyLmdldCgpKTsKICNlbmRpZgorCiAgICAgYm9vbCBzdWNjZXNzID0gbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIApAQCAt
MzA3LDYgKzM3MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgR0xfR2VuRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7
CiAgICAgR0xfQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKKyNpZiAh
VVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKICAgICBHTF9HZW5UZXh0dXJlcygxLCAmbV9jb21w
b3NpdG9yVGV4dHVyZSk7CiAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21w
b3NpdG9yVGV4dHVyZSk7CiAgICAgR0xfVGV4UGFyYW1ldGVyZih0ZXh0dXJlVGFyZ2V0LCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CkBAIC0zMjMsNiArMzg3LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
ICAgICBHTF9UZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBH
TF9DTEFNUF9UT19FREdFKTsKIAogICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIDAp
OworI2VuZGlmCiAjZW5kaWYKIAogICAgIC8vIENyZWF0ZSBhIG11bHRpc2FtcGxlIEZCTy4KQEAg
LTM1MywxMSArNDE4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEU6OnByZXBhcmVUZXh0dXJlKCkKICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5hbnRpYWxp
YXMpCiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKIAorI2lmICFV
U0UoVEVYVFVSRV9NQVBQRVJfRE1BQlVGKQogICAgIHN0ZDo6c3dhcChtX3RleHR1cmUsIG1fY29t
cG9zaXRvclRleHR1cmUpOwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6
OnN3YXAobV90ZXh0dXJlLCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAgIHN0ZDo6c3dhcCht
X3RleHR1cmVCYWNraW5nLCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyk7Ci0gICAgc3RkOjpz
d2FwKG1fdGV4dHVyZUJhY2tpbmcsIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpOworI2Vu
ZGlmCiAjZW5kaWYKIAogICAgIEdMX0JpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9m
Ym8pOwpAQCAtMzgxLDQxICs0NDYsMjAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXJBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKICAgICBHTHVpbnQgY29s
b3JGb3JtYXQgPSBhdHRycy5hbHBoYSA/IEdMX1JHQkEgOiBHTF9SR0I7CiAgICAgR0xlbnVtIHRl
eHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogICAgIEdMdWludCBp
bnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8gY29s
b3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCi0gICAgaWYgKG1fdGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1fdGV4dHVyZUJh
Y2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSAgICBpZiAobV9jb21w
b3NpdG9yVGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5n
LT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7Ci0gICAgaWYgKG1faW50ZXJtZWRp
YXRlVGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmct
PnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSNlbmRpZgotCiAgICAgU2NvcGVk
UmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJl
VGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0dXJlVGFyZ2V0
LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7Ci0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7Ci0gICAgICAg
IEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOwotICAg
ICAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgJiYgbV9jb21wb3NpdG9yVGV4dHVy
ZUJhY2tpbmctPmltYWdlKCkpCi0gICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdldFRleHR1cmUy
RE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwg
MCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdM
X1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0
LCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAgICAgICBpZiAobV9pbnRlcm1lZGlhdGVUZXh0
dXJlQmFja2luZyAmJiBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5pbWFnZSgpKQotICAg
ICAgICAgICAgR0xfRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRhcmdldCwgbV9p
bnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwot
ICAgIH0KLSAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOwotICAg
IGlmIChtX3RleHR1cmVCYWNraW5nICYmIG1fdGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCi0gICAg
ICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVy
ZUJhY2tpbmctPmltYWdlKCkpOwotICAgIGVsc2UKLSAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0
dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xv
ckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
RE1BQlVGKQorICAgIG1fc3dhcGNoYWluID0gU3dhcGNoYWluKHBsYXRmb3JtRGlzcGxheSgpKTsK
ICNlbHNlCiAgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4
dHVyZSk7CiAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9y
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwg
MCk7Ci0gICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdl
dCwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJn
ZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0
LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICNlbmRpZgorI2VuZGlmCisgICAgR0xfQmluZFRleHR1
cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVU
YXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9y
bWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICBHTF9GcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4
dHVyZSwgMCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyOCw4NCArNDcyLDI0IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnByZXBhcmVGb3JEaXNwbGF5KCkK
IAogICAgIHByZXBhcmVUZXh0dXJlKCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwotfQog
Ci0jaWYgVVNFKE5JQ09TSUEpCi1HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6
RUdMSW1hZ2VCYWNraW5nOjpFR0xJbWFnZUJhY2tpbmcoR0NHTERpc3BsYXkgZGlzcGxheSkKLSAg
ICA6IG1fZGlzcGxheShkaXNwbGF5KQotICAgICwgbV9pbWFnZShFR0xfTk9fSU1BR0UpCi17Ci19
Ci0KLUdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpFR0xJbWFnZUJhY2tpbmc6
On5FR0xJbWFnZUJhY2tpbmcoKQotewotICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKLX0KLQotdWlu
dDMyX3QgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2lu
Zzo6Zm9ybWF0KCkgY29uc3QKLXsKLSAgICBpZiAobV9CTykKLSAgICAgICAgcmV0dXJuIGdibV9i
b19nZXRfZm9ybWF0KG1fQk8pOwotICAgIHJldHVybiAwOwotfQotCi11aW50MzJfdCBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpzdHJpZGUoKSBj
b25zdAotewotICAgIGlmIChtX0JPKQotICAgICAgICByZXR1cm4gZ2JtX2JvX2dldF9zdHJpZGUo
bV9CTyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OkVHTEltYWdlQmFja2luZzo6cmVsZWFzZVJlc291cmNlcygpCi17Ci0gICAg
aWYgKG1fQk8pIHsKLSAgICAgICAgZ2JtX2JvX2Rlc3Ryb3kobV9CTyk7Ci0gICAgICAgIG1fQk8g
PSBudWxscHRyOwotICAgIH0KLSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBFR0xfRGVzdHJv
eUltYWdlS0hSKG1fZGlzcGxheSwgbV9pbWFnZSk7Ci0gICAgICAgIG1faW1hZ2UgPSBFR0xfTk9f
SU1BR0U7Ci0gICAgfQotICAgIGlmIChtX0ZEID49IDApIHsKLSAgICAgICAgY2xvc2UobV9GRCk7
Ci0gICAgICAgIG1fRkQgPSAtMTsKLSAgICB9CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJV
RikKKyAgICBtX3N3YXBjaGFpbi5kaXNwbGF5Qk8gPSBXVEZNb3ZlKG1fc3dhcGNoYWluLmRyYXdC
Tyk7CisjZW5kaWYKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6RUdMSW1hZ2VCYWNraW5nOjppc1JlbGVhc2VkKCkKLXsKLSAgICByZXR1cm4gIW1fQk87Ci19
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0RNQUJVRikKK0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFOjpTd2FwY2hhaW46OlN3YXBjaGFpbihHQ0dMRGlzcGxheSBwbGF0Zm9ybURp
c3BsYXkpCisgICAgOiBwbGF0Zm9ybURpc3BsYXkocGxhdGZvcm1EaXNwbGF5KQorICAgICwgc3dh
cGNoYWluKGFkb3B0UmVmKG5ldyBHQk1CdWZmZXJTd2FwY2hhaW4oR0JNQnVmZmVyU3dhcGNoYWlu
OjpCdWZmZXJTd2FwY2hhaW5TaXplOjpGb3VyKSkpCit7IH0KIAotYm9vbCBHcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6RUdMSW1hZ2VCYWNraW5nOjpyZXNldChpbnQgd2lkdGgs
IGludCBoZWlnaHQsIGJvb2wgaGFzQWxwaGEpCitHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRTo6U3dhcGNoYWluOjp+U3dhcGNoYWluKCkKIHsKLSAgICByZWxlYXNlUmVzb3VyY2Vz
KCk7Ci0KLSAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGNvbnN0IGF1dG8mIGdibURldmljZSA9IEdCTURldmljZTo6c2luZ2xldG9uKCk7Ci0g
ICAgbV9CTyA9IGdibV9ib19jcmVhdGUoZ2JtRGV2aWNlLmRldmljZSgpLCB3aWR0aCwgaGVpZ2h0
LCBoYXNBbHBoYSA/IEdCTV9CT19GT1JNQVRfQVJHQjg4ODggOiBHQk1fQk9fRk9STUFUX1hSR0I4
ODg4LCBHQk1fQk9fVVNFX1JFTkRFUklORyk7Ci0gICAgaWYgKG1fQk8pIHsKLSAgICAgICAgbV9G
RCA9IGdibV9ib19nZXRfZmQobV9CTyk7Ci0gICAgICAgIGlmIChtX0ZEID49IDApIHsKLSAgICAg
ICAgICAgIEVHTGludCBpbWFnZUF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgICAgICAgICBFR0xf
V0lEVEgsIHdpZHRoLAotICAgICAgICAgICAgICAgIEVHTF9IRUlHSFQsIGhlaWdodCwKLSAgICAg
ICAgICAgICAgICBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIHN0YXRpY19jYXN0PEVHTGludD4o
Z2JtX2JvX2dldF9mb3JtYXQobV9CTykpLAotICAgICAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BM
QU5FMF9GRF9FWFQsIG1fRkQsCi0gICAgICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX1BJ
VENIX0VYVCwgc3RhdGljX2Nhc3Q8RUdMaW50PihnYm1fYm9fZ2V0X3N0cmlkZShtX0JPKSksCi0g
ICAgICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQsIDAsCi0gICAgICAg
ICAgICAgICAgRUdMX05PTkUKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBtX2ltYWdlID0g
RUdMX0NyZWF0ZUltYWdlS0hSKG1fZGlzcGxheSwgRUdMX05PX0NPTlRFWFQsIEVHTF9MSU5VWF9E
TUFfQlVGX0VYVCwgKEVHTENsaWVudEJ1ZmZlciludWxscHRyLCBpbWFnZUF0dHJpYnV0ZXMpOwot
ICAgICAgICAgICAgaWYgKG1faW1hZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KKyAgICBmb3IgKEVHTEltYWdlS0hSIGltYWdlIDogaW1hZ2VzLnZhbHVlcygpKSB7
CisgICAgICAgIGlmIChpbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICAgICAgRUdM
X0Rlc3Ryb3lJbWFnZUtIUihwbGF0Zm9ybURpc3BsYXksIGltYWdlKTsKICAgICB9Ci0KLSAgICBy
ZWxlYXNlUmVzb3VyY2VzKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmgKaW5kZXgg
MDM5Nzc0ZTUxNzVhMmM0OGE1ZjM2YzlkYjBkN2ZjMTA2NGMwMDFiYS4uZTY5OWMyZjgyOTI5MTJl
ZjY3N2QxZTMyNjRjNzI3OWEwMTBkYjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xF
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmgKQEAgLTI5LDYgKzI5LDEyIEBACiAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFLmgiCiAKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
RE1BQlVGKQorI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2luY2x1ZGUgIkdCTUJ1ZmZlclN3
YXBjaGFpbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjZW5kaWYKKwogI2lmIFVTRShO
SUNPU0lBKQogbmFtZXNwYWNlIE5pY29zaWEgewogY2xhc3MgR0NHTEFOR0xFTGF5ZXI7CkBAIC03
Myw0NiArNzksNDEgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAorI2lm
IFVTRShURVhUVVJFX01BUFBFUl9ETUFCVUYpCisgICAgc3RydWN0IFN3YXBjaGFpbiB7CisgICAg
ICAgIFN3YXBjaGFpbigpID0gZGVmYXVsdDsKKyAgICAgICAgU3dhcGNoYWluKEdDR0xEaXNwbGF5
KTsKKyAgICAgICAgflN3YXBjaGFpbigpOworCisgICAgICAgIEdDR0xEaXNwbGF5IHBsYXRmb3Jt
RGlzcGxheSB7IEVHTF9OT19ESVNQTEFZIH07CisgICAgICAgIFJlZlB0cjxHQk1CdWZmZXJTd2Fw
Y2hhaW4+IHN3YXBjaGFpbjsKKyAgICAgICAgUmVmUHRyPEdCTUJ1ZmZlclN3YXBjaGFpbjo6QnVm
ZmVyPiBkcmF3Qk87CisgICAgICAgIFJlZlB0cjxHQk1CdWZmZXJTd2FwY2hhaW46OkJ1ZmZlcj4g
ZGlzcGxheUJPOworCisgICAgICAgIC8vIENhY2hlIGZvciBFR0xJbWFnZSBvYmplY3RzIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGJ1ZmZlcnMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgc3dhcGNoYWluLgor
ICAgICAgICAvLyBUaGUgc3dhcGNoYWluIGlzIHJlZ2VuZXJhdGVkIChhbmQgdGhlc2UgRUdMSW1h
Z2Ugb2JqZWN0cyBkZXN0cm95ZWQpIHVwb24gZWFjaCBidWZmZXIgcmVzaGFwaW5nLAorICAgICAg
ICAvLyBzbyB3ZSBzaG91bGQgYmUgZmluZSB3aXRob3V0IG1hbmFnaW5nIHN0YWxlIGJ1ZmZlcnMg
YW5kIGNvcnJlc3BvbmRpbmcgRUdMSW1hZ2VzICh3aGljaCBzaG91bGRuJ3Qgb2NjdXIgYW55d2F5
KS4KKyAgICAgICAgSGFzaE1hcDx1aW50MzJfdCwgRUdMSW1hZ2VLSFIsIFdURjo6RGVmYXVsdEhh
c2g8dWludDMyX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQzMl90
Pj4gaW1hZ2VzOworICAgIH0gbV9zd2FwY2hhaW47CisjZWxzZQogICAgIEdDR0x1aW50IG1fY29t
cG9zaXRvclRleHR1cmUgeyAwIH07CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
IEdDR0x1aW50IG1faW50ZXJtZWRpYXRlVGV4dHVyZSB7IDAgfTsKICNlbmRpZgorI2VuZGlmCiAK
ICNpZiBVU0UoTklDT1NJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6R0NHTEFOR0xF
TGF5ZXI+IG1fbmljb3NpYUxheWVyOwotCi0gICAgY2xhc3MgRUdMSW1hZ2VCYWNraW5nIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEVHTEltYWdl
QmFja2luZyhHQ0dMRGlzcGxheSk7Ci0gICAgICAgIH5FR0xJbWFnZUJhY2tpbmcoKTsKLQotICAg
ICAgICBib29sIHJlc2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgYm9vbCBoYXNBbHBoYSk7Ci0K
LSAgICAgICAgRUdMSW1hZ2UgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9Ci0gICAg
ICAgIGludCBmZCgpIGNvbnN0IHsgcmV0dXJuIG1fRkQ7IH0KLQotICAgICAgICB1aW50MzJfdCBm
b3JtYXQoKSBjb25zdDsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlKCkgY29uc3Q7Ci0KLSAgICAg
ICAgYm9vbCBpc1JlbGVhc2VkKCk7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCByZWxlYXNl
UmVzb3VyY2VzKCk7Ci0KLSAgICAgICAgR0NHTERpc3BsYXkgbV9kaXNwbGF5OwotCi0gICAgICAg
IGdibV9ibyogbV9CTyB7IG51bGxwdHIgfTsKLSAgICAgICAgaW50IG1fRkQgeyAtMSB9OwotICAg
ICAgICBFR0xJbWFnZSBtX2ltYWdlOwotICAgIH07Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RUdM
SW1hZ2VCYWNraW5nPiBtX3RleHR1cmVCYWNraW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFR0xJ
bWFnZUJhY2tpbmc+IG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFR0xJbWFnZUJhY2tpbmc+IG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmc7CiAjZWxz
ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+IG1f
dGV4bWFwTGF5ZXI7CiAjZW5kaWYKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9ETUFCVUYpCisg
ICAgLy8gUmVxdWlyZWQgKGZvciBub3cpIGluIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VD
b250ZXh0Q3VycmVudCgpCisgICAgLy8gdG8gY29uc3RydWN0IGFuZCBzZXQgdGhlIGRyYXcgYnVm
ZmVyLW9iamVjdC4KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTsKKyNl
bmRpZgorCiAjaWYgVVNFKE5JQ09TSUEpCiAgICAgZnJpZW5kIGNsYXNzIE5pY29zaWE6OkdDR0xB
TkdMRUxheWVyOwogICAgIGZyaWVuZCBjbGFzcyBOaWNvc2lhOjpHQ0dMTGF5ZXI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>